telepathy-qt-0.9.6.1/0000755000175100017520000000000012530426257015721 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/doc/0000755000175100017520000000000012530426257016466 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/doc/html/0000755000175100017520000000000012530426260017424 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/doc/html/a00377.html0000644000175100017520000002630512530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Contact::InfoFields Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::Contact::InfoFields Class Reference

The Contact::InfoFields class represents the information of a Telepathy contact. More...

#include <TelepathyQt/Contact>

Public Member Functions

 InfoFields ()
 
 InfoFields (const ContactInfoFieldList &fields)
 
 InfoFields (const InfoFields &other)
 
 ~InfoFields ()
 
bool isValid () const
 
InfoFieldsoperator= (const InfoFields &other)
 
ContactInfoFieldList fields (const QString &name) const
 
ContactInfoFieldList allFields () const
 

Detailed Description

The Contact::InfoFields class represents the information of a Telepathy contact.

Constructor & Destructor Documentation

Tp::Contact::InfoFields::InfoFields ( )

Constructs a new invalid InfoFields instance.

Tp::Contact::InfoFields::InfoFields ( const ContactInfoFieldList allFields)

Construct a info fields instance with the given fields. The instance will indicate that it is valid.

Tp::Contact::InfoFields::InfoFields ( const InfoFields other)

Copy constructor.

Tp::Contact::InfoFields::~InfoFields ( )

Class destructor.

Member Function Documentation

bool Tp::Contact::InfoFields::isValid ( ) const
inline
Contact::InfoFields & Tp::Contact::InfoFields::operator= ( const InfoFields other)

Assignment operator.

ContactInfoFieldList Tp::Contact::InfoFields::fields ( const QString &  name) const

Return a list containing all fields whose name are name.

Parameters
nameThe name used to match the fields.
Returns
A list of ContactInfoField objects.
ContactInfoFieldList Tp::Contact::InfoFields::allFields ( ) const

Return a list containing all fields describing the contact information.

Returns
The contact information as a list of ContactInfoField objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01338.html0000644000175100017520000000642212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceDestroyableAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceDestroyableAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Destroy(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceDestroyableAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00121.html0000644000175100017520000005602512530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionContactsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseConnectionContactsInterface Class Reference

Base class for implementations of Connection.Interface.Contacts. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback3
< ContactAttributesMap, const
Tp::UIntList &, const
QStringList &, DBusError * > 
GetContactAttributesCallback
 

Public Member Functions

virtual ~BaseConnectionContactsInterface ()
 
QVariantMap immutableProperties () const
 
void setGetContactAttributesCallback (const GetContactAttributesCallback &cb)
 
ContactAttributesMap getContactAttributes (const Tp::UIntList &handles, const QStringList &interfaces, DBusError *error)
 
void setContactAttributeInterfaces (const QStringList &contactAttributeInterfaces)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionContactsInterfacePtr 
create ()
 
template<typename BaseConnectionContactsInterfaceSubclass >
static SharedPtr
< BaseConnectionContactsInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionContactsInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.Contacts.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseConnectionContactsInterface::~BaseConnectionContactsInterface ( )
virtual

Class destructor.

Tp::BaseConnectionContactsInterface::BaseConnectionContactsInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionContactsInterfacePtr Tp::BaseConnectionContactsInterface::create ( )
inlinestatic
template<typename BaseConnectionContactsInterfaceSubclass >
static SharedPtr<BaseConnectionContactsInterfaceSubclass> Tp::BaseConnectionContactsInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionContactsInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseConnectionContactsInterface::setGetContactAttributesCallback ( const GetContactAttributesCallback cb)
ContactAttributesMap Tp::BaseConnectionContactsInterface::getContactAttributes ( const Tp::UIntList handles,
const QStringList &  interfaces,
DBusError error 
)
void Tp::BaseConnectionContactsInterface::setContactAttributeInterfaces ( const QStringList &  contactAttributeInterfaces)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01092.html0000644000175100017520000001623612530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReadinessHelper Member List

This is the complete list of members for Tp::ReadinessHelper, including all inherited members.

actualFeatures() const Tp::ReadinessHelper
addIntrospectables(const Introspectables &introspectables)Tp::ReadinessHelper
becomeReady(const Features &requestedFeatures)Tp::ReadinessHelper
currentStatus() const Tp::ReadinessHelper
forceCurrentStatus(uint currentStatus)Tp::ReadinessHelper
interfaces() const Tp::ReadinessHelper
Introspectables typedefTp::ReadinessHelper
IntrospectFunc typedefTp::ReadinessHelper
isReady(const Feature &feature, QString *errorName=0, QString *errorMessage=0) const Tp::ReadinessHelper
isReady(const Features &features, QString *errorName=0, QString *errorMessage=0) const Tp::ReadinessHelper
missingFeatures() const Tp::ReadinessHelper
ReadinessHelper(RefCounted *object, uint currentStatus=0, const Introspectables &introspectables=Introspectables(), QObject *parent=0)Tp::ReadinessHelper
ReadinessHelper(DBusProxy *proxy, uint currentStatus=0, const Introspectables &introspectables=Introspectables(), QObject *parent=0)Tp::ReadinessHelper
requestedFeatures() const Tp::ReadinessHelper
setCurrentStatus(uint currentStatus)Tp::ReadinessHelper
setInterfaces(const QStringList &interfaces)Tp::ReadinessHelper
setIntrospectCompleted(const Feature &feature, bool success, const QString &errorName=QString(), const QString &errorMessage=QString())Tp::ReadinessHelper
setIntrospectCompleted(const Feature &feature, bool success, const QDBusError &error)Tp::ReadinessHelper
statusReady(uint status)Tp::ReadinessHelpersignal
~ReadinessHelper()Tp::ReadinessHelper


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00937.html0000644000175100017520000002142712530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelGroupInterface Member List

This is the complete list of members for Tp::BaseChannelGroupInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
addMembers(const Tp::UIntList &handles, const QStringList &identifiers)Tp::BaseChannelGroupInterface
AddMembersCallback typedefTp::BaseChannelGroupInterface
create(ChannelGroupFlags initialFlags, uint selfHandle)Tp::BaseChannelGroupInterfaceinlinestatic
create(ChannelGroupFlags initialFlags, uint selfHandle)Tp::BaseChannelGroupInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseChannelGroupInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
removeMembers(const Tp::UIntList &handles)Tp::BaseChannelGroupInterface
RemoveMembersCallback typedefTp::BaseChannelGroupInterface
setAddMembersCallback(const AddMembersCallback &cb)Tp::BaseChannelGroupInterface
setRemoveMembersCallback(const RemoveMembersCallback &cb)Tp::BaseChannelGroupInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelGroupInterface()Tp::BaseChannelGroupInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00436.html0000644000175100017520000004764212530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::PendingContactAttributes Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingContactAttributes Class Reference

The PendingContactAttributes class represents the parameters of and the reply to an asynchronous request for raw contact attributes, as used in the ConnectionLowlevel::contactAttributes() low-level convenience method wrapping the Client::ConnectionInterfaceContactsInterface::GetContactAttributes() D-Bus method. More...

#include <TelepathyQt/PendingContactAttributes>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingContactAttributes ()
 
ConnectionPtr connection () const
 
const UIntListcontactsRequested () const
 
const QStringList & interfacesRequested () const
 
bool shouldReference () const
 
ReferencedHandles validHandles () const
 
UIntList invalidHandles () const
 
ContactAttributesMap attributes () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingContactAttributes class represents the parameters of and the reply to an asynchronous request for raw contact attributes, as used in the ConnectionLowlevel::contactAttributes() low-level convenience method wrapping the Client::ConnectionInterfaceContactsInterface::GetContactAttributes() D-Bus method.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingContactAttributes::~PendingContactAttributes ( )

Class destructor.

Member Function Documentation

ConnectionPtr Tp::PendingContactAttributes::connection ( ) const

Return the connection through which the request was made.

Returns
A pointer to the Connection object.
const UIntList & Tp::PendingContactAttributes::contactsRequested ( ) const

Return the contacts for which attributes were requested.

Returns
Reference to a list with the handles of the contacts.
const QStringList & Tp::PendingContactAttributes::interfacesRequested ( ) const

Return the interfaces the corresponding attributes of which were requested.

Returns
Reference to a list of D-Bus interface names.
bool Tp::PendingContactAttributes::shouldReference ( ) const

Return whether it was requested that the contact handles should be referenced in addition to fetching their attributes. This corresponds to the reference argument to Connection::contactAttributes().

Returns
Whether the handles should be referenced or not.
ReferencedHandles Tp::PendingContactAttributes::validHandles ( ) const

If referencing the handles was requested (as indicated by shouldReference()), returns the now-referenced handles resulting from the operation. If the operation has not (yet) finished successfully (isFinished() returns false), or referencing was not requested, the return value is undefined.

Even if referencing was requested, the list will not always contain all of the handles in contactsRequested(), only the ones which were valid. The valid handles will be in the same order as in contactsRequested(), though.

Returns
ReferencedHandles instance containing the handles.
UIntList Tp::PendingContactAttributes::invalidHandles ( ) const

Return the handles which were found to be invalid while processing the operation. If the operation has not (yet) finished successfully (isFinished() returns false), the return value is undefined.

Returns
A list with the invalid handles.
ContactAttributesMap Tp::PendingContactAttributes::attributes ( ) const

Return a dictionary mapping the valid contact handles in contactsRequested() (when also referencing, this means the contents of validHandles()) to contact attributes. If the operation has not (yet) finished successfully (isFinished() returns false), the return value is undefined.

Returns
Mapping from handles to variant maps containing the attributes.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00190.html0000644000175100017520000012772012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::CaptchaInfoList, uint,
QString > 
GetCaptchas (int timeout=-1)
 
QDBusPendingReply< QByteArray > GetCaptchaData (uint ID, const QString &mimeType, int timeout=-1)
 
QDBusPendingReply AnswerCaptchas (const Tp::CaptchaAnswers &answers, int timeout=-1)
 
QDBusPendingReply CancelCaptcha (uint reason, const QString &debugMessage, int timeout=-1)
 

Public Member Functions

 ChannelInterfaceCaptchaAuthenticationInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceCaptchaAuthenticationInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceCaptchaAuthenticationInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceCaptchaAuthenticationInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceCaptchaAuthenticationInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyCanRetryCaptcha () const
 
Tp::PendingVariantrequestPropertyCaptchaStatus () const
 
Tp::PendingVariantrequestPropertyCaptchaError () const
 
Tp::PendingVariantrequestPropertyCaptchaErrorDetails () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceCaptchaAuthenticationInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceCaptchaAuthenticationInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceCaptchaAuthenticationInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceCaptchaAuthenticationInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceCaptchaAuthenticationInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::requestPropertyCanRetryCaptcha ( ) const
inline

Asynchronous getter for the remote object property CanRetryCaptcha of type bool.

If true, GetCaptchas() can be expected to return new captcha information when in the Local_Pending state. If false, GetCaptchas() will return NotAvailable on subsequent calls.

Refreshing the captcha isn't required to work, although some protocols and implementations allow it. This is usually done in case a given captcha is unintelligible.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::requestPropertyCaptchaStatus ( ) const
inline

Asynchronous getter for the remote object property CaptchaStatus of type uint.

The current status of this channel.

Because only the Handler should call methods on this interface, the Handler MAY reduce round-trips by not fetching the initial value of this property, and instead assume that is initially Local_Pending.

This assumption normally avoids the need to call GetAll(), since the values of CaptchaError and CaptchaErrorDetails are also implied by this assumption, and the only other property is CanRetryCaptcha , which is immutable.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::requestPropertyCaptchaError ( ) const
inline

Asynchronous getter for the remote object property CaptchaError of type QString.

The reason for the CaptchaStatus , or an empty string if the state is neither Try_Again nor Failed.

Typical values: "", Cancelled, AuthenticationFailed, CaptchaNotSupported

In particular, an ordinary authentication failure (as would be produced for an incorrect answer) SHOULD be represented by AuthenticationFailed, cancellation by the user's request SHOULD be represented by Cancelled, cancellation due to the inability to display the captcha to the user or otherwise answer it SHOULD be represented by CaptchaNotSupported, and cancellation by a local process due to inconsistent or invalid challenges from the server SHOULD be represented by ServiceConfused.

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, this error code SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::requestPropertyCaptchaErrorDetails ( ) const
inline

Asynchronous getter for the remote object property CaptchaErrorDetails of type QVariantMap.

If CaptchaError is non-empty, any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of ConnectionInterface::ConnectionError() .

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, these details SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::CaptchaInfoList, uint, QString> Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::GetCaptchas ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetCaptchas on the remote object.

Gets information regarding each of the captcha methods available and which and how many need to be successfully answered

To call this method successfully, the state must be Local_Pending or Try_Again. If it is Local_Pending, it remains Local_Pending. If called more than once while in Local_Pending state, or if the state is Try_Again, this method fetches a new set of captcha challenges, if possible, and the state returns to Local_Pending.

For instance, you could call GetCaptchas again from Local_Pending state if the user indicates that they can't understand the initially-offered captcha.

This is a method, not a property, so that it can be used to fetch more than one set of captcha challenges, and so that change notification is not required. Only the Handler should call this method and calling GetAll would not reduce round-trips, so the usual reasons to prefer a property do not apply here.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
Information about each of the available captcha methods.
Returns
The number of captcha methods required to be answered in order to successfully complete this captcha challenge (most frequently 1, but XMPP allows servers to demand that more than one captcha is answered).
Returns
The language of each Label in Captcha_Info if available, for instance en_US, or "" if unknown.
QDBusPendingReply<QByteArray> Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::GetCaptchaData ( uint  ID,
const QString &  mimeType,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetCaptchaData on the remote object.

Fetch and return the captcha data. In protocols where captchas are downloaded out-of-band (for instance via HTTP), the connection manager is expected to do so.

Returns an empty array if the type was "qa"

If audio-based and image-based captchas are both available, we don't want to waste time downloading the audio until/unless the user asks to hear it. The extra D-Bus round-trips are not a problem, since they are expected to be quick compared with the time taken for the user to solve the captcha.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the captcha of which to retrieve data.
mimeType
MIME type picked by the Handler, chosen from the list of MIME types 
received in GetCaptchas. XEP-0158 allows the same captcha to be 
made available in multiple formats, for instance the same spoken 
question as audio/x-wav, application/ogg and audio/speex.
timeoutThe timeout in milliseconds.
Returns
Captcha data as requested.
QDBusPendingReply Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::AnswerCaptchas ( const Tp::CaptchaAnswers answers,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AnswerCaptchas on the remote object.

Answer as many captchas as desired and/or required.

Callable in state Local_Pending only. State changes to Remote_Pending.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
answers
The mapping of captcha IDs to answer strings.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::CancelCaptcha ( uint  reason,
const QString &  debugMessage,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CancelCaptcha on the remote object.

Cancel. State changes to Failed with error NotAvailable or Cancelled if it isn't already Failed. All you can do now is to close the channel.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
reason
Reason for cancelling. This MAY be used to choose an error response 
to the remote server, and SHOULD also be reflected in the 
CaptchaError.
debugMessage
A textual description of the reason for cancelling, supplied by the 
Handler. This message SHOULD NOT be sent to the remote server, but 
SHOULD be copied into the &apos;debug-message&apos; field of the 
CaptchaErrorDetails and ConnectionError.
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01151.html0000644000175100017520000000477612530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactInfoField Member List

This is the complete list of members for Tp::ContactInfoField, including all inherited members.

fieldNameTp::ContactInfoField
fieldValueTp::ContactInfoField
parametersTp::ContactInfoField


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00696_source.html0000644000175100017520000001527712530426257022541 0ustar00kaffeinekaffeine00000000000000 debug.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
debug.h
1 
23 #ifndef _TelepathyQt_debug_h_HEADER_GUARD_
24 #define _TelepathyQt_debug_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 namespace Tp
33 {
34 
35 TP_QT_EXPORT void enableDebug(bool enable);
36 TP_QT_EXPORT void enableWarnings(bool enable);
37 
38 typedef void (*DebugCallback)(const QString &libraryName,
39  const QString &libraryVersion,
40  QtMsgType type,
41  const QString &msg);
42 TP_QT_EXPORT void setDebugCallback(DebugCallback cb);
43 
44 } // Tp
45 
46 #endif
void enableWarnings(bool enable)
Definition: debug.cpp:163
void enableDebug(bool enable)
Definition: debug.cpp:159
void(* DebugCallback)(const QString &libraryName, const QString &libraryVersion, QtMsgType type, const QString &msg)
Definition: debug.h:38
void setDebugCallback(DebugCallback cb)
Definition: debug.cpp:167


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01210.html0000644000175100017520000000437712530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CandidatePair Member List

This is the complete list of members for Tp::CandidatePair, including all inherited members.

localTp::CandidatePair
remoteTp::CandidatePair


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00692_source.html0000644000175100017520000000621612530426257022526 0ustar00kaffeinekaffeine00000000000000 dbus.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus.h
1 
23 #ifndef _TelepathyQt_dbus_h_HEADER_GUARD_
24 #define _TelepathyQt_dbus_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
52 #include <TelepathyQt/_gen/cli-dbus.h>
53 
54 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00309.html0000644000175100017520000016616512530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::ConnectionManager Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Properties | List of all members
Tp::ConnectionManager Class Reference

The ConnectionManager class represents a Telepathy connection manager. More...

#include <TelepathyQt/ConnectionManager>

Inherits Tp::StatelessDBusProxy, and Tp::OptionalInterfaceFactory< ConnectionManager >.

Public Member Functions

virtual ~ConnectionManager ()
 
QString name () const
 
ConnectionFactoryConstPtr connectionFactory () const
 
ChannelFactoryConstPtr channelFactory () const
 
ContactFactoryConstPtr contactFactory () const
 
QStringList supportedProtocols () const
 
const ProtocolInfoListprotocols () const
 
bool hasProtocol (const QString &protocolName) const
 
ProtocolInfo protocol (const QString &protocolName) const
 
- Public Member Functions inherited from Tp::StatelessDBusProxy
 StatelessDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatelessDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< ConnectionManager >
 OptionalInterfaceFactory (ConnectionManager *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static ConnectionManagerPtr create (const QDBusConnection &bus, const QString &name)
 
static ConnectionManagerPtr create (const QString &name, const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static ConnectionManagerPtr create (const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static PendingStringListlistNames (const QDBusConnection &bus=QDBusConnection::sessionBus())
 

Static Public Attributes

static const Feature FeatureCore
 

Protected Member Functions

 ConnectionManager (const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
Client::ConnectionManagerInterfacebaseInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< ConnectionManager >
void setInterfaces (const QStringList &interfaces)
 

Properties

QString name
 
QStringList supportedProtocols
 
ProtocolInfoList protocols
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< ConnectionManager >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

The ConnectionManager class represents a Telepathy connection manager.

Connection managers allow connections to be made on one or more protocols.

Most client applications should use this functionality via the AccountManager, to allow connections to be shared between client applications.

Constructor & Destructor Documentation

Tp::ConnectionManager::~ConnectionManager ( )
virtual

Class destructor.

Tp::ConnectionManager::ConnectionManager ( const QDBusConnection &  bus,
const QString &  name,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
protected

Construct a new ConnectionManager object using the given bus.

Parameters
busQDBusConnection to use.
nameName of the connection manager.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.

Member Function Documentation

ConnectionManagerPtr Tp::ConnectionManager::create ( const QDBusConnection &  bus,
const QString &  name 
)
static

Create a new ConnectionManager object.

The instance will use a connection factory creating Tp::Connection objects with no features ready, and a channel factory creating stock Telepathy-Qt channel subclasses, as appropriate, with no features ready.

Parameters
busQDBusConnection to use.
nameName of the connection manager.
Returns
A ConnectionManagerPtr object pointing to the newly created ConnectionManager object.
ConnectionManagerPtr Tp::ConnectionManager::create ( const QString &  name,
const ConnectionFactoryConstPtr &  connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()),
const ChannelFactoryConstPtr &  channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()),
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new ConnectionManager using QDBusConnection::sessionBus() and the given factories.

The channel factory is passed to any Connection objects created by this manager object. In fact, they're not used directly by ConnectionManager at all.

A warning is printed if the factories are for a bus different from QDBusConnection::sessionBus().

Parameters
nameName of the connection manager.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ConnectionManagerPtr object pointing to the newly created ConnectionManager object.
ConnectionManagerPtr Tp::ConnectionManager::create ( const QDBusConnection &  bus,
const QString &  name,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new ConnectionManager using the given bus and the given factories.

The channel factory is passed to any Connection objects created by this manager object. In fact, they're not used directly by ConnectionManager at all.

A warning is printed if the factories are for a bus different from QDBusConnection::sessionBus().

Parameters
busQDBusConnection to use.
nameName of the connection manager.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ConnectionManagerPtr object pointing to the newly created ConnectionManager object.
QString Tp::ConnectionManager::name ( ) const
ConnectionFactoryConstPtr Tp::ConnectionManager::connectionFactory ( ) const

Return the connection factory used by this manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ConnectionFactory object.
ChannelFactoryConstPtr Tp::ConnectionManager::channelFactory ( ) const

Return the channel factory used by this manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ChannelFactory object.
ContactFactoryConstPtr Tp::ConnectionManager::contactFactory ( ) const

Return the contact factory used by this manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ContactFactory object.
QStringList Tp::ConnectionManager::supportedProtocols ( ) const
const ProtocolInfoList& Tp::ConnectionManager::protocols ( ) const
bool Tp::ConnectionManager::hasProtocol ( const QString &  protocolName) const

Return whether this connection manager implements the protocol specified by protocolName.

This method requires ConnectionManager::FeatureCore to be ready.

Returns
true if the protocol is supported, false otherwise.
See Also
protocol(), protocols()
ProtocolInfo Tp::ConnectionManager::protocol ( const QString &  protocolName) const

Return the ProtocolInfo object for the protocol specified by protocolName.

This method requires ConnectionManager::FeatureCore to be ready.

Parameters
protocolNameThe name of the protocol.
Returns
A ProtocolInfo object which will return for ProtocolInfo::isValid() if the protocol specified by protocolName is not supported.
See Also
hasProtocol()
PendingStringList * Tp::ConnectionManager::listNames ( const QDBusConnection &  bus = QDBusConnection::sessionBus())
static

Return a pending operation from which a list of all installed connection manager short names (such as "gabble" or "haze") can be retrieved if it succeeds.

Returns
A PendingStringList which will emit PendingStringList::finished when this object has finished or failed getting the connection manager names.
Client::ConnectionManagerInterface * Tp::ConnectionManager::baseInterface ( ) const
protected

Return the Client::ConnectionManagerInterface for this ConnectionManager. This method is protected since the convenience methods provided by this class should generally be used instead of calling D-Bus methods directly.

Returns
A pointer to the existing Client::ConnectionManagerInterface for this ConnectionManager object.

Member Data Documentation

const Feature Tp::ConnectionManager::FeatureCore
static

Feature representing the core that needs to become ready to make the ConnectionManager object usable.

Note that this feature must be enabled in order to use most ConnectionManager methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

Property Documentation

QString Tp::ConnectionManager::name
read

Return the short name of the connection manager (e.g. "gabble").

Returns
The name of the connection manager.
QStringList Tp::ConnectionManager::supportedProtocols
read

Return a list of strings identifying the protocols supported by this connection manager, as described in the Telepathy specification (e.g. "jabber").

These identifiers are not intended to be displayed to users directly; user interfaces are responsible for mapping them to localized strings.

This method requires ConnectionManager::FeatureCore to be ready.

Returns
A list of supported protocols.
const ProtocolInfoList & Tp::ConnectionManager::protocols
read

Return a list of protocols info for this connection manager.

Note that the returned ProtocolInfoList contents should not be freed.

This method requires ConnectionManager::FeatureCore to be ready.

Returns
A list of á¹”rotocolInfo.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00063.html0000644000175100017520000002333712530426257021141 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClient Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::AbstractClient Class Reference

The AbstractClient class represents a Telepathy client. More...

#include <TelepathyQt/AbstractClient>

Inherits Tp::RefCounted.

Inherited by Tp::AbstractClientApprover [virtual], Tp::AbstractClientHandler [virtual], and Tp::AbstractClientObserver [virtual].

Public Member Functions

 AbstractClient ()
 
virtual ~AbstractClient ()
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Detailed Description

The AbstractClient class represents a Telepathy client.

Clients are programs used to process channels, approving, handling or observing them. User interface processes are the obvious example of clients, but they can provide other functionality, such as address-book synchronization, message logging, etc.

Each client is either an observer, an approver, a handler, or some combination of these.

Clients can be activatable services (those with a D-Bus .service file) so that they can run in response to channel creation, or non-activatable services (those that do not register a D-Bus .service file for their well-known name, but do request it at runtime) so that they can process channels, but only if they are already running - for instance, a full-screen media center application might do this.

As an optimization, service-activatable clients should install a file $XDG_DATA_DIRS/telepathy/clients/clientname.client containing a cached version of their immutable properties. The syntax of these files is documented in the Telepathy specification.

Non-activatable clients may install a .client file, but there's not much point in them doing so.

This is a base class and should not be used directly, use the specialized classes AbstractClientObserver, AbstractClientApprover and AbstractClientHandler instead.

If the same process wants to be either a mix of observer, approver and handler, or a combination of those it can multiple inherit the specialized abstract classes.

See Also
AbstractClientObserver, AbstractClientApprover, AbstractClientHandler

Constructor & Destructor Documentation

Tp::AbstractClient::AbstractClient ( )

Construct a new AbstractClient object.

Note that this is a base class and should not be used directly, use the specialized classes AbstractClientObserver, AbstractClientApprover and AbstractClientHandler instead.

Tp::AbstractClient::~AbstractClient ( )
virtual

Class destructor.

Member Function Documentation

bool Tp::AbstractClient::isRegistered ( ) const

Return whether this client is registered.

Returns
true if registered, false otherwise.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01024.html0000644000175100017520000002073412530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FileTransferChannelCreationProperties Member List

This is the complete list of members for Tp::FileTransferChannelCreationProperties, including all inherited members.

contentHash() const Tp::FileTransferChannelCreationProperties
contentHashType() const Tp::FileTransferChannelCreationProperties
contentType() const Tp::FileTransferChannelCreationProperties
description() const Tp::FileTransferChannelCreationProperties
FileTransferChannelCreationProperties()Tp::FileTransferChannelCreationProperties
FileTransferChannelCreationProperties(const QString &suggestedFileName, const QString &contentType, qulonglong size)Tp::FileTransferChannelCreationProperties
FileTransferChannelCreationProperties(const QString &path, const QString &contentType)Tp::FileTransferChannelCreationProperties
FileTransferChannelCreationProperties(const FileTransferChannelCreationProperties &other)Tp::FileTransferChannelCreationProperties
hasContentHash() const Tp::FileTransferChannelCreationProperties
hasDescription() const Tp::FileTransferChannelCreationProperties
hasLastModificationTime() const Tp::FileTransferChannelCreationProperties
hasUri() const Tp::FileTransferChannelCreationProperties
isValid() const Tp::FileTransferChannelCreationPropertiesinline
lastModificationTime() const Tp::FileTransferChannelCreationProperties
operator=(const FileTransferChannelCreationProperties &other)Tp::FileTransferChannelCreationProperties
operator==(const FileTransferChannelCreationProperties &other) const Tp::FileTransferChannelCreationProperties
setContentHash(FileHashType contentHashType, const QString &contentHash)Tp::FileTransferChannelCreationProperties
setDescription(const QString &description)Tp::FileTransferChannelCreationProperties
setLastModificationTime(const QDateTime &lastModificationTime)Tp::FileTransferChannelCreationProperties
setUri(const QString &uri)Tp::FileTransferChannelCreationProperties
size() const Tp::FileTransferChannelCreationProperties
suggestedFileName() const Tp::FileTransferChannelCreationProperties
uri() const Tp::FileTransferChannelCreationProperties
~FileTransferChannelCreationProperties()Tp::FileTransferChannelCreationProperties


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00879.html0000644000175100017520000001040312530426257021146 0ustar00kaffeinekaffeine00000000000000 ChannelRequest proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
ChannelRequest proxies

Classes

class  Tp::ChannelRequest
 The ChannelRequest class represents a Telepathy channel request. More...
 
class  Tp::ChannelRequestHints
 The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester when requesting a channel. More...
 
class  Tp::PendingChannelRequest
 The PendingChannelRequest class represents the parameters of and the reply to an asynchronous ChannelRequest request. More...
 
class  Tp::Client::ChannelRequestInterface
 

Detailed Description

Proxy objects representing remote Telepathy ChannelRequest objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00378.html0000644000175100017520000002216112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::ReadinessHelper::Introspectable Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ReadinessHelper::Introspectable Class Reference

The ReadinessHelper::Introspectable class represents a introspectable used by ReadinessHelper. More...

#include <TelepathyQt/ReadinessHelper>

Public Member Functions

 Introspectable ()
 
 Introspectable (const QSet< uint > &makesSenseForStatuses, const Features &dependsOnFeatures, const QStringList &dependsOnInterfaces, IntrospectFunc introspectFunc, void *introspectFuncData, bool critical=false)
 
 Introspectable (const Introspectable &other)
 
 ~Introspectable ()
 
Introspectableoperator= (const Introspectable &other)
 

Detailed Description

The ReadinessHelper::Introspectable class represents a introspectable used by ReadinessHelper.

Constructor & Destructor Documentation

Tp::ReadinessHelper::Introspectable::Introspectable ( )
Tp::ReadinessHelper::Introspectable::Introspectable ( const QSet< uint > &  makesSenseForStatuses,
const Features dependsOnFeatures,
const QStringList &  dependsOnInterfaces,
IntrospectFunc  introspectFunc,
void *  introspectFuncData,
bool  critical = false 
)
Tp::ReadinessHelper::Introspectable::Introspectable ( const Introspectable other)
Tp::ReadinessHelper::Introspectable::~Introspectable ( )

Member Function Documentation

ReadinessHelper::Introspectable & Tp::ReadinessHelper::Introspectable::operator= ( const Introspectable other)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01339.html0000644000175100017520000001012312530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Metadata() const Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor
ServiceName() const Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor
SetMetadata(const Tp::Metadata &newValue)Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor
SetServiceName(const QString &newValue)Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00122.html0000644000175100017520000010456212530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionManager Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseConnectionManager Class Reference

Base class for connection manager implementations. More...

#include <TelepathyQt/BaseConnectionManager>

Inherits Tp::DBusService.

Signals

void newConnection (const BaseConnectionPtr &connection)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~BaseConnectionManager ()
 
QString name () const
 
QVariantMap immutableProperties () const
 
QList< BaseProtocolPtr > protocols () const
 
BaseProtocolPtr protocol (const QString &protocolName) const
 
bool hasProtocol (const QString &protocolName) const
 
bool addProtocol (const BaseProtocolPtr &protocol)
 
bool registerObject (DBusError *error=NULL)
 
QList< BaseConnectionPtr > connections () const
 
- Public Member Functions inherited from Tp::DBusService
 DBusService (const QDBusConnection &dbusConnection)
 
virtual ~DBusService ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseConnectionManagerPtr create (const QString &name)
 
template<typename BaseConnectionManagerSubclass >
static SharedPtr
< BaseConnectionManagerSubclass > 
create (const QString &name)
 
static BaseConnectionManagerPtr create (const QDBusConnection &dbusConnection, const QString &name)
 
template<typename BaseConnectionManagerSubclass >
static SharedPtr
< BaseConnectionManagerSubclass > 
create (const QDBusConnection &dbusConnection, const QString &name)
 

Protected Member Functions

 BaseConnectionManager (const QDBusConnection &dbusConnection, const QString &name)
 
virtual bool registerObject (const QString &busName, const QString &objectPath, DBusError *error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for connection manager implementations.

Constructor & Destructor Documentation

Tp::BaseConnectionManager::~BaseConnectionManager ( )
virtual

Class destructor.

Tp::BaseConnectionManager::BaseConnectionManager ( const QDBusConnection &  dbusConnection,
const QString &  name 
)
protected

Constructs a new BaseConnectionManager object that implements a connection manager on the given dbusConnection and has the given name.

Parameters
dbusConnectionThe QDBusConnection to use.
nameThe name of the connection manager.

Member Function Documentation

static BaseConnectionManagerPtr Tp::BaseConnectionManager::create ( const QString &  name)
inlinestatic
template<typename BaseConnectionManagerSubclass >
static SharedPtr<BaseConnectionManagerSubclass> Tp::BaseConnectionManager::create ( const QString &  name)
inlinestatic
static BaseConnectionManagerPtr Tp::BaseConnectionManager::create ( const QDBusConnection &  dbusConnection,
const QString &  name 
)
inlinestatic
template<typename BaseConnectionManagerSubclass >
static SharedPtr<BaseConnectionManagerSubclass> Tp::BaseConnectionManager::create ( const QDBusConnection &  dbusConnection,
const QString &  name 
)
inlinestatic
QString Tp::BaseConnectionManager::name ( ) const

Return the connection manager's name, as given on the constructor.

Returns
The connection manager's name.
QVariantMap Tp::BaseConnectionManager::immutableProperties ( ) const
virtual

Return the immutable properties of this connection manager object.

Immutable properties cannot change after the object has been registered on the bus with registerObject().

Returns
The immutable properties of this connection manager object.

Implements Tp::DBusService.

QList< BaseProtocolPtr > Tp::BaseConnectionManager::protocols ( ) const

Return a list of all protocols that this connection manager implements.

This property is immutable and cannot change after the connection manager has been registered on the bus with registerObject().

Returns
A list of all protocols that this connection manager implements.
See Also
addProtocol(), hasProtocol(), protocol()
BaseProtocolPtr Tp::BaseConnectionManager::protocol ( const QString &  protocolName) const

Return a pointer to the BaseProtocol instance that implements the protocol with the given protocolName, or a null BaseProtocolPtr if no such protocol has been added to the connection manager.

Parameters
protocolNameThe name of the protocol in interest.
Returns
The BaseProtocol instance that implements the protocol with the given protocolName.
See Also
hasProtocol(), protocols(), addProtocol()
bool Tp::BaseConnectionManager::hasProtocol ( const QString &  protocolName) const

Return whether a protocol with the given protocolName has been added to the connection manager.

Parameters
protocolNameThe name of the protocol in interest.
Returns
true if a protocol with the given protocolName has been added to the connection manager, or false otherwise.
See Also
addProtocol(), protocol(), protocols()
bool Tp::BaseConnectionManager::addProtocol ( const BaseProtocolPtr &  protocol)

Add a new protocol to the list of protocols that this connection manager implements.

Note that you cannot add new protocols after the connection manager has been registered on the bus with registerObject(). In addition, you cannot add two protocols with the same name. If any of these conditions is not met, this function will return false and print a suitable warning.

Parameters
protocolThe protocol to add.
Returns
true on success or false otherwise.
bool Tp::BaseConnectionManager::registerObject ( DBusError error = NULL)

Register this connection manager on the bus.

A connection manager can only be registered once, and it should be registered only after all the protocols it implements have been added with addProtocol().

If error is passed, any D-Bus error that may occur will be stored there.

Parameters
errorA pointer to an empty DBusError where any possible D-Bus error will be stored.
Returns
true on success and false if there was an error or this connection manager is already registered.
See Also
isRegistered()
QList< BaseConnectionPtr > Tp::BaseConnectionManager::connections ( ) const

Return a list of all connections that have currently been made.

Returns
A list of all connections that have currently been made.
void Tp::BaseConnectionManager::newConnection ( const BaseConnectionPtr &  connection)
signal
bool Tp::BaseConnectionManager::registerObject ( const QString &  busName,
const QString &  objectPath,
DBusError error 
)
protectedvirtual

Reimplemented from DBusService.

Reimplemented from Tp::DBusService.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01093.html0000644000175100017520000000664212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReadinessHelper::Introspectable Member List

This is the complete list of members for Tp::ReadinessHelper::Introspectable, including all inherited members.

Introspectable()Tp::ReadinessHelper::Introspectable
Introspectable(const QSet< uint > &makesSenseForStatuses, const Features &dependsOnFeatures, const QStringList &dependsOnInterfaces, IntrospectFunc introspectFunc, void *introspectFuncData, bool critical=false)Tp::ReadinessHelper::Introspectable
Introspectable(const Introspectable &other)Tp::ReadinessHelper::Introspectable
operator=(const Introspectable &other)Tp::ReadinessHelper::Introspectable
~Introspectable()Tp::ReadinessHelper::Introspectable


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00938.html0000644000175100017520000002171412530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelRoomInterface Member List

This is the complete list of members for Tp::BaseChannelRoomInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseChannelRoomInterface(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)Tp::BaseChannelRoomInterfaceprotected
create(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)Tp::BaseChannelRoomInterfaceinlinestatic
create(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)Tp::BaseChannelRoomInterfaceinlinestatic
creationTimestamp() const Tp::BaseChannelRoomInterface
creator() const Tp::BaseChannelRoomInterface
creatorHandle() const Tp::BaseChannelRoomInterface
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseChannelRoomInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
roomName() const Tp::BaseChannelRoomInterface
server() const Tp::BaseChannelRoomInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelRoomInterface()Tp::BaseChannelRoomInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00437.html0000644000175100017520000003154012530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::PendingContactInfo Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingContactInfo Class Reference

The PendingContactInfo class represents the parameters of and the reply to an asynchronous contact info request. More...

#include <TelepathyQt/PendingContactInfo>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingContactInfo ()
 
ContactPtr contact () const
 
Contact::InfoFields infoFields () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingContactInfo class represents the parameters of and the reply to an asynchronous contact info request.

Instances of this class cannot be constructed directly; the only way to get one is via Contact.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingContactInfo::~PendingContactInfo ( )

Class destructor.

Member Function Documentation

ContactPtr Tp::PendingContactInfo::contact ( ) const

Return the contact through which the request was made.

Returns
A pointer to the Contact object.
Contact::InfoFields Tp::PendingContactInfo::infoFields ( ) const

Return the information for contact().

Returns
The contact infor as a Contact::InfoFields object.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00191.html0000644000175100017520000002711112530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceChatStateAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | List of all members
Tp::Service::ChannelInterfaceChatStateAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void SetChatState (uint state, const QDBusMessage &dbusMessage)
 

Signals

void ChatStateChanged (uint contact, uint state)
 

Public Member Functions

Tp::ChatStateMap ChatStates () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ChatStateMap Tp::Service::ChannelInterfaceChatStateAdaptor::ChatStates ( ) const

Return the value of the exported D-Bus object property ChatStates of type Tp::ChatStateMap.

Adaptees should export this property as a Qt property named 'chatStates' with type Tp::ChatStateMap.

A map containing the chat states of all contacts in this channel whose chat state is not Inactive.

Contacts in this channel, but who are not listed in this map, may be assumed to be in the Inactive state.

In implementations that do not have this property, its value may be assumed to be empty until a ChatStateChanged() signal indicates otherwise.

This property was not present in older versions of telepathy-spec, because chat states in XMPP are not state-recoverable (if you miss the change notification signal, there's no way to know the state). However, this property still allows clients to recover state changes that were seen by the CM before the client started to deal with the channel.

In CMs that follow older spec versions, assuming Inactive will mean that initial chat states will always be assumed to be Inactive, which is the best we can do. XEP 0085 specifies Inactive as the "neutral" state to be assumed unless told otherwise.

Returns
The value of exported property ChatStates.
void Tp::Service::ChannelInterfaceChatStateAdaptor::SetChatState ( uint  state,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setChatState(uint state, const Tp::Service::ChannelInterfaceChatStateAdaptor::SetChatStateContextPtr &context);

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

Set the local state and notify other members of the channel that it has changed.

Parameters
state
The new state.
void Tp::Service::ChannelInterfaceChatStateAdaptor::ChatStateChanged ( uint  contact,
uint  state 
)
signal

Represents the exported D-Bus signal ChatStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void chatStateChanged(uint contact, uint state);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
An integer handle for the contact.
state
The new state of this contact.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01152.html0000644000175100017520000000531612530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactLocations Member List

This is the complete list of members for Tp::ContactLocations, including all inherited members.

ContactLocations()Tp::ContactLocationsinline
ContactLocations(const QMap< uint, QVariantMap > &a)Tp::ContactLocationsinline
operator=(const QMap< uint, QVariantMap > &a)Tp::ContactLocationsinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00250.html0000644000175100017520000012332612530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeStreamTubeInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelTypeStreamTubeInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Offer (uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, int timeout=-1)
 
QDBusPendingReply< QDBusVariant > Accept (uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, int timeout=-1)
 

Signals

void NewRemoteConnection (uint handle, const QDBusVariant &connectionParam, uint connectionID)
 
void NewLocalConnection (uint connectionID)
 
void ConnectionClosed (uint connectionID, const QString &error, const QString &message)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeStreamTubeInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeStreamTubeInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeStreamTubeInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeStreamTubeInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeStreamTubeInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyService () const
 
Tp::PendingVariantrequestPropertySupportedSocketTypes () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.StreamTube".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeStreamTubeInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeStreamTubeInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeStreamTubeInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeStreamTubeInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeStreamTubeInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeStreamTubeInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.StreamTube", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeStreamTubeInterface::requestPropertyService ( ) const
inline

Asynchronous getter for the remote object property Service of type QString.

A string representing the service name that will be used over the tube. It should be a well-known TCP service name as defined by http://www.iana.org/assignments/port-numbers or http://www.dns-sd.org/ServiceTypes.html, for instance "rsync" or "daap".

When the tube is offered, the service name is transmitted to the other end.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST be included in the request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeStreamTubeInterface::requestPropertySupportedSocketTypes ( ) const
inline

Asynchronous getter for the remote object property SupportedSocketTypes of type Tp::SupportedSocketMap.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for stream tubes with that address type. For simplicity, if a CM supports offering a particular type of tube, it is assumed to support accepting it.

A typical value for a host without IPv6 support:

  {
    Socket_Address_Type_IPv4:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
       Socket_Access_Control_Netmask],
    Socket_Address_Type_Unix:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
  }

Connection Managers MUST support at least IPv4 with the localhost access control.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST NOT be included in the request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeStreamTubeInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelTypeStreamTubeInterface::Offer ( uint  addresstype,
const QDBusVariant &  address,
uint  accesscontrol,
const QVariantMap &  parameters,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Offer on the remote object.

Offer a stream tube exporting the local socket specified.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
addresstype
The type of the listening address of the local service, as a member 
of Socket_Address_Type.
address
The listening address of the local service, as indicated by the 
address_type.
accesscontrol
The access control the local service applies to the local socket, 
specified so the connection manager can behave appropriately when 
it connects.
parameters
The dictionary of arbitrary Parameters to send with the tube offer.
timeoutThe timeout in milliseconds.
QDBusPendingReply<QDBusVariant> Tp::Client::ChannelTypeStreamTubeInterface::Accept ( uint  addresstype,
uint  accesscontrol,
const QDBusVariant &  accesscontrolparam,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Accept on the remote object.

Accept a stream tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeChannelStateChanged signal is emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
addresstype
The type of address the connection manager should listen on.
accesscontrol

The type of access control the connection manager should apply to the socket.

Note that if you plan to establish more than one connection through the tube, the Socket_Access_Control_Port access control can't be used as you can't connect more than once from the same port.

accesscontrolparam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
timeoutThe timeout in milliseconds.
Returns
The address on which the connection manager will listen for 
connections to this tube. The client should not attempt to connect 
to the address until the tube is open.
void Tp::Client::ChannelTypeStreamTubeInterface::NewRemoteConnection ( uint  handle,
const QDBusVariant &  connectionParam,
uint  connectionID 
)
signal

Represents the signal NewRemoteConnection on the remote object.

Emitted each time a participant opens a new connection to its socket.

This signal is only fired on the offering side.

Parameters
handle
The handle of the participant who opened the new connection
connectionParam

A parameter which can be used by the listening process to identify the connection. Note that this parameter has a meaningful value only in the Socket_Access_Control_Port and Socket_Access_Control_Credentials cases. If a different Socket_Access_Control has been chosen when offering the tube, this parameter should be ignored.

In the Socket_Access_Control_Port case, the variant contains a struct Socket_Address_IPv4 (or Socket_Address_IPv6) containing the address from which the CM is connected to the client application.

In the Socket_Access_Control_Credentials case, the variant contains the byte (D-Bus signature 'y') that has been sent with the credentials.

connectionID
The unique ID associated with this connection. This ID will be used 
to identifiy the connection when reporting errors with 
ConnectionClosed.
void Tp::Client::ChannelTypeStreamTubeInterface::NewLocalConnection ( uint  connectionID)
signal

Represents the signal NewLocalConnection on the remote object.

Emitted when the tube application connects to the CM's socket.

This signal is only fired on the accepting side.

Parameters
connectionID
The unique ID associated with this connection. This ID will be used 
to identifiy the connection when reporting errors with 
ConnectionClosed.
void Tp::Client::ChannelTypeStreamTubeInterface::ConnectionClosed ( uint  connectionID,
const QString &  error,
const QString &  message 
)
signal

Represents the signal ConnectionClosed on the remote object.

Emitted when a connection has been closed.

Parameters
connectionID
The ID of the connection.
error

The name of a D-Bus error describing the error that occurred.

The following errors can be used:

  • org.freedesktop.Telepathy.Error.Cancelled: user closed the socket or the tube.
  • org.freedesktop.Telepathy.Error.ConnectionLost: the bytestream relaying connection's data has been broken.
  • org.freedesktop.Telepathy.Error.ConnectionRefused: the tube offer refused the connection.
message
A debug message.
void Tp::Client::ChannelTypeStreamTubeInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00678_source.html0000644000175100017520000014121612530426257022532 0ustar00kaffeinekaffeine00000000000000 contact.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact.h
1 
23 #ifndef _TelepathyQt_contact_h_HEADER_GUARD_
24 #define _TelepathyQt_contact_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/Feature>
32 #include <TelepathyQt/Object>
33 #include <TelepathyQt/Types>
34 
35 #include <QSet>
36 #include <QVariantMap>
37 
38 namespace Tp
39 {
40 
41 struct AvatarData;
42 class ContactCapabilities;
43 class LocationInfo;
44 class ContactManager;
45 class PendingContactInfo;
46 class PendingOperation;
47 class PendingStringList;
48 class Presence;
49 class ReferencedHandles;
50 
51 class TP_QT_EXPORT Contact : public Object
52 {
53  Q_OBJECT
54  Q_DISABLE_COPY(Contact)
55 
56 public:
57  static const Feature FeatureAlias;
58  static const Feature FeatureAvatarData;
61  static const Feature FeatureInfo;
62  static const Feature FeatureLocation;
64  static const Feature FeatureAddresses;
66 
70  PresenceStateYes
71  };
72 
73  class InfoFields
74  {
75  public:
76  InfoFields();
77  InfoFields(const ContactInfoFieldList &fields);
78  InfoFields(const InfoFields &other);
79  ~InfoFields();
80 
81  bool isValid() const { return mPriv.constData() != 0; }
82 
83  InfoFields &operator=(const InfoFields &other);
84 
85  ContactInfoFieldList fields(const QString &name) const;
86 
87  ContactInfoFieldList allFields() const;
88 
89  private:
90  struct Private;
91  friend struct Private;
92  QSharedDataPointer<Private> mPriv;
93  };
94 
95  ~Contact();
96 
97  ContactManagerPtr manager() const;
98 
99  ReferencedHandles handle() const;
100 
101  // TODO filter: exact, prefix, substring match
102  QString id() const;
103 
104  Features requestedFeatures() const;
105  Features actualFeatures() const;
106 
107  // TODO filter: exact, prefix, substring match
108  QString alias() const;
109 
110  QMap<QString, QString> vcardAddresses() const;
111  QStringList uris() const;
112 
113  bool isAvatarTokenKnown() const;
114  QString avatarToken() const;
115  AvatarData avatarData() const;
116  void requestAvatarData();
117 
118  /*
119  * TODO filter:
120  * - exact match of presence().type(), presence().status()
121  * - ANY 1 of a number of presence types/statuses
122  * - presence().type() greater or less than a set value
123  * - have/don't have presence().message() AND exact/prefix/substring
124  */
125  Presence presence() const;
126 
127  // TODO filter: the same as Account filtering by caps
128  ContactCapabilities capabilities() const;
129 
130  // TODO filter: is it available, how accurate, are they near me
131  LocationInfo location() const;
132 
133  // TODO filter: having a specific field, having ANY field,
134  // (field: exact, contents: exact/prefix/substring)
135  bool isContactInfoKnown() const;
136  InfoFields infoFields() const;
137  PendingOperation *refreshInfo();
138  PendingContactInfo *requestInfo();
139 
140  /*
141  * Filters on exact values of these, but also the "in your contact list at all or not" usecase
142  */
143  bool isSubscriptionStateKnown() const;
144  bool isSubscriptionRejected() const;
145  PresenceState subscriptionState() const;
146  bool isPublishStateKnown() const;
147  bool isPublishCancelled() const;
148  PresenceState publishState() const;
149  QString publishStateMessage() const;
150 
151  PendingOperation *requestPresenceSubscription(const QString &message = QString());
152  PendingOperation *removePresenceSubscription(const QString &message = QString());
153  PendingOperation *authorizePresencePublication(const QString &message = QString());
154  PendingOperation *removePresencePublication(const QString &message = QString());
155 
156  /*
157  * Filter on being blocked or not
158  */
159  bool isBlocked() const;
160  PendingOperation *block();
161  PendingOperation *blockAndReportAbuse();
162  PendingOperation *unblock();
163 
164  /*
165  * Filter on the groups they're in - to show a specific group only
166  *
167  * Also prefix/substring match on ANY of the groups of the contact
168  */
169  QStringList groups() const;
170  PendingOperation *addToGroup(const QString &group);
171  PendingOperation *removeFromGroup(const QString &group);
172 
173  QStringList clientTypes() const;
174  PendingStringList *requestClientTypes();
175 
176 Q_SIGNALS:
177  void aliasChanged(const QString &alias);
178 
179  void avatarTokenChanged(const QString &avatarToken);
180  void avatarDataChanged(const Tp::AvatarData &avatarData);
181 
182  void presenceChanged(const Tp::Presence &presence);
183 
184  void capabilitiesChanged(const Tp::ContactCapabilities &caps);
185 
186  void locationUpdated(const Tp::LocationInfo &location);
187 
188  void infoFieldsChanged(const Tp::Contact::InfoFields &infoFields);
189 
190  void subscriptionStateChanged(Tp::Contact::PresenceState state);
191 
192  void publishStateChanged(Tp::Contact::PresenceState state, const QString &message);
193 
194  void blockStatusChanged(bool blocked);
195 
196  void addedToGroup(const QString &group);
197  void removedFromGroup(const QString &group);
198 
199  void clientTypesChanged(const QStringList &clientTypes);
200 
201  // TODO: consider how the Renaming interface should work and map to Contacts
202  // I guess it would be something like:
203  // void renamedTo(Tp::ContactPtr)
204  // with that contact getting the same features requested as the current one. Or would we rather
205  // want to signal that change right away with a handle?
206 
207 protected:
208  Contact(ContactManager *manager, const ReferencedHandles &handle,
209  const Features &requestedFeatures, const QVariantMap &attributes);
210 
211  virtual void augment(const Features &requestedFeatures, const QVariantMap &attributes);
212 
213 private:
214  static const Feature FeatureRosterGroups;
215 
216  TP_QT_NO_EXPORT void receiveAlias(const QString &alias);
217  TP_QT_NO_EXPORT void receiveAvatarToken(const QString &avatarToken);
218  TP_QT_NO_EXPORT void setAvatarToken(const QString &token);
219  TP_QT_NO_EXPORT void receiveAvatarData(const AvatarData &);
220  TP_QT_NO_EXPORT void receiveSimplePresence(const SimplePresence &presence);
221  TP_QT_NO_EXPORT void receiveCapabilities(const RequestableChannelClassList &caps);
222  TP_QT_NO_EXPORT void receiveLocation(const QVariantMap &location);
223  TP_QT_NO_EXPORT void receiveInfo(const ContactInfoFieldList &info);
224  TP_QT_NO_EXPORT void receiveAddresses(const QMap<QString, QString> &addresses,
225  const QStringList &uris);
226  TP_QT_NO_EXPORT void receiveClientTypes(const QStringList &clientTypes);
227 
228  TP_QT_NO_EXPORT static PresenceState subscriptionStateToPresenceState(uint subscriptionState);
229  TP_QT_NO_EXPORT void setSubscriptionState(SubscriptionState state);
230  TP_QT_NO_EXPORT void setPublishState(SubscriptionState state, const QString &message = QString());
231  TP_QT_NO_EXPORT void setBlocked(bool value);
232 
233  TP_QT_NO_EXPORT void setAddedToGroup(const QString &group);
234  TP_QT_NO_EXPORT void setRemovedFromGroup(const QString &group);
235 
236  struct Private;
237  friend class Connection;
238  friend class ContactFactory;
239  friend class ContactManager;
240  friend struct Private;
241  Private *mPriv;
242 };
243 
244 } // Tp
245 
246 Q_DECLARE_METATYPE(Tp::Contact::InfoFields);
247 
248 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
Definition: build/TelepathyQt/_gen/types.h:2733
static const Feature FeatureAlias
Definition: contact.h:57
The Object class provides an object with property notification.
Definition: object.h:39
The ContactCapabilities class represents the capabilities of a Contact.
Definition: contact-capabilities.h:38
static const Feature FeatureSimplePresence
Definition: contact.h:63
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
Definition: contact.h:68
static const Feature FeatureLocation
Definition: contact.h:62
The Presence class represents a Telepathy simple presence.
Definition: presence.h:36
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
bool isValid() const
Definition: contact.h:81
The Connection class represents a Telepathy connection.
Definition: connection.h:62
The AvatarData class represents a Telepathy avatar.
Definition: avatar.h:40
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
SubscriptionState
Definition: build/TelepathyQt/_gen/constants.h:1789
static const Feature FeatureInfo
Definition: contact.h:61
static const Feature FeatureAvatarToken
Definition: contact.h:59
The LocationInfo class represents the location of a Telepathy Contact.
Definition: location-info.h:40
Definition: contact.h:69
The ContactFactory class is responsible for constructing Contact objects according to application-def...
Definition: contact-factory.h:44
The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-string-list.h:37
PresenceState
Definition: contact.h:67
The PendingContactInfo class represents the parameters of and the reply to an asynchronous contact in...
Definition: pending-contact-info.h:39
static const Feature FeatureAvatarData
Definition: contact.h:58
The Contact class represents a Telepathy contact.
Definition: contact.h:51
The Contact::InfoFields class represents the information of a Telepathy contact.
Definition: contact.h:73
static const Feature FeatureClientTypes
Definition: contact.h:65
The Features class represents a list of Feature.
Definition: feature.h:61
static const Feature FeatureCapabilities
Definition: contact.h:60
static const Feature FeatureAddresses
Definition: contact.h:64


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01211.html0000644000175100017520000000605612530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Codec Member List

This is the complete list of members for Tp::Codec, including all inherited members.

channelsTp::Codec
clockrateTp::Codec
identifierTp::Codec
nameTp::Codec
parametersTp::Codec
updatedTp::Codec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/classes.html0000644000175100017520000023224112530426260021753 0ustar00kaffeinekaffeine00000000000000 Class Index
   Home · All Classes · All Namespaces · Modules · Functions · Files
Class Index
A | B | C | D | E | F | G | H | I | L | M | N | O | P | Q | R | S | T | U | V | W
  A  
Candidate (Tp)   ConnectionFactory (Tp)   GenericPropertyFilter (Tp)   PresenceSpecList (Tp)   
CandidateInfo (Tp)   ConnectionInterface (Tp::Client)   Channel::GroupMemberChangeDetails (Tp)   Profile (Tp)   
AbstractAdaptor (Tp)   CandidatePair (Tp)   ConnectionInterfaceAddressingAdaptor (Tp::Service)   
  H  
ProfileManager (Tp)   
AbstractCallContentInterface (Tp)   AbstractClientHandler::Capabilities (Tp)   ConnectionInterfaceAddressingInterface (Tp::Client)   PropertiesInterface (Tp::Client::DBus)   
AbstractChannelInterface (Tp)   CapabilitiesBase (Tp)   ConnectionInterfaceAliasingAdaptor (Tp::Service)   HandledChannelNotifier (Tp)   PropertiesInterfaceInterface (Tp::Client)   
AbstractClient (Tp)   CapabilityChange (Tp)   ConnectionInterfaceAliasingInterface (Tp::Client)   HandleIdentifierMap (Tp)   PropertyFlagsChange (Tp)   
AbstractClientApprover (Tp)   CapabilityPair (Tp)   ConnectionInterfaceAnonymityAdaptor (Tp::Service)   HandleOwnerMap (Tp)   PropertySpec (Tp)   
AbstractClientHandler (Tp)   Captcha (Tp)   ConnectionInterfaceAnonymityInterface (Tp::Client)   HandlerCapabilities (Tp)   PropertyValue (Tp)   
AbstractClientObserver (Tp)   CaptchaAnswers (Tp)   ConnectionInterfaceAvatarsAdaptor (Tp::Service)   AbstractClientHandler::HandlerInfo (Tp)   ProtocolAdaptor (Tp::Service)   
AbstractConnectionInterface (Tp)   CaptchaAuthentication (Tp)   ConnectionInterfaceAvatarsInterface (Tp::Client)   HTTPPostData (Tp)   ProtocolInfo (Tp)   
AbstractDBusServiceInterface (Tp)   CaptchaInfo (Tp)   ConnectionInterfaceBalanceAdaptor (Tp::Service)   
  I  
ProtocolInterface (Tp::Client)   
AbstractFunctorCaller (Tp)   Channel (Tp)   ConnectionInterfaceBalanceInterface (Tp::Client)   ProtocolInterfaceAddressingAdaptor (Tp::Service)   
AbstractInterface (Tp)   ChannelAdaptor (Tp::Service)   ConnectionInterfaceCapabilitiesInterface (Tp::Client)   IncomingDBusTubeChannel (Tp)   ProtocolInterfaceAddressingInterface (Tp::Client)   
AbstractProtocolInterface (Tp)   ChannelCallStateMap (Tp)   ConnectionInterfaceCellularAdaptor (Tp::Service)   IncomingFileTransferChannel (Tp)   ProtocolInterfaceAvatarsAdaptor (Tp::Service)   
AccessControl (Tp)   ChannelClass (Tp)   ConnectionInterfaceCellularInterface (Tp::Client)   IncomingStreamTubeChannel (Tp)   ProtocolInterfaceAvatarsInterface (Tp::Client)   
Account (Tp)   ChannelClassSpec (Tp)   ConnectionInterfaceClientTypesAdaptor (Tp::Service)   Contact::InfoFields (Tp)   ProtocolInterfacePresenceAdaptor (Tp::Service)   
AccountCapabilityFilter (Tp)   ChannelClassSpecList (Tp)   ConnectionInterfaceClientTypesInterface (Tp::Client)   ReadinessHelper::Introspectable (Tp)   ProtocolInterfacePresenceInterface (Tp::Client)   
AccountFactory (Tp)   ChannelDetails (Tp)   ConnectionInterfaceContactBlockingAdaptor (Tp::Service)   IntrospectableInterface (Tp::Client::DBus)   ProtocolParameter (Tp)   
AccountInterface (Tp::Client)   ChannelDispatcherInterface (Tp::Client)   ConnectionInterfaceContactBlockingInterface (Tp::Client)   
  L  
ProtocolPropertiesMap (Tp)   
AccountInterfaceAddressingInterface (Tp::Client)   ChannelDispatcherInterfaceMessages1Interface (Tp::Client)   ConnectionInterfaceContactCapabilitiesAdaptor (Tp::Service)   PtrFunctor0 (Tp)   
AccountInterfaceAvatarInterface (Tp::Client)   ChannelDispatchOperation (Tp)   ConnectionInterfaceContactCapabilitiesInterface (Tp::Client)   LastActivityAndStatuses (Tp)   PtrFunctor1 (Tp)   
AccountInterfaceStorageInterface (Tp::Client)   ChannelDispatchOperationInterface (Tp::Client)   ConnectionInterfaceContactGroupsAdaptor (Tp::Service)   LocalPendingInfo (Tp)   PtrFunctor2 (Tp)   
AccountManager (Tp)   ChannelFactory (Tp)   ConnectionInterfaceContactGroupsInterface (Tp::Client)   Location (Tp)   PtrFunctor3 (Tp)   
AccountManagerInterface (Tp::Client)   ChannelInfo (Tp)   ConnectionInterfaceContactInfoAdaptor (Tp::Service)   LocationInfo (Tp)   PtrFunctor4 (Tp)   
AccountPropertyFilter (Tp)   ChannelInterface (Tp::Client)   ConnectionInterfaceContactInfoInterface (Tp::Client)   
  M  
PtrFunctor5 (Tp)   
AccountSet (Tp)   ChannelInterfaceAnonymityAdaptor (Tp::Service)   ConnectionInterfaceContactListAdaptor (Tp::Service)   PtrFunctor6 (Tp)   
AddressingNormalizationMap (Tp)   ChannelInterfaceAnonymityInterface (Tp::Client)   ConnectionInterfaceContactListInterface (Tp::Client)   Mail (Tp)   PtrFunctor7 (Tp)   
AliasMap (Tp)   ChannelInterfaceCallStateAdaptor (Tp::Service)   ConnectionInterfaceContactsAdaptor (Tp::Service)   MailAddress (Tp)   
  Q  
AliasPair (Tp)   ChannelInterfaceCallStateInterface (Tp::Client)   ConnectionInterfaceContactsInterface (Tp::Client)   MailURL (Tp)   
AndFilter (Tp)   ChannelInterfaceCaptchaAuthenticationAdaptor (Tp::Service)   ConnectionInterfaceLocationAdaptor (Tp::Service)   MediaDescriptionOffer (Tp)   QualifiedPropertyValueMap (Tp)   
AuthenticationTLSCertificateInterface (Tp::Client)   ChannelInterfaceCaptchaAuthenticationInterface (Tp::Client)   ConnectionInterfaceLocationInterface (Tp::Client)   MediaDescriptionProperties (Tp)   
  R  
Avatar (Tp)   ChannelInterfaceChatStateAdaptor (Tp::Service)   ConnectionInterfaceMailNotificationAdaptor (Tp::Service)   MediaSessionHandlerInfo (Tp)   
AvatarData (Tp)   ChannelInterfaceChatStateInterface (Tp::Client)   ConnectionInterfaceMailNotificationInterface (Tp::Client)   MediaSessionHandlerInterface (Tp::Client)   ReadinessHelper (Tp)   
AvatarSpec (Tp)   ChannelInterfaceConferenceAdaptor (Tp::Service)   ConnectionInterfacePowerSavingAdaptor (Tp::Service)   MediaStreamHandlerCandidate (Tp)   ReadyObject (Tp)   
AvatarTokenMap (Tp)   ChannelInterfaceConferenceInterface (Tp::Client)   ConnectionInterfacePowerSavingInterface (Tp::Client)   MediaStreamHandlerCodec (Tp)   ReceivedMessage (Tp)   
  B  
ChannelInterfaceDestroyableAdaptor (Tp::Service)   ConnectionInterfacePresenceInterface (Tp::Client)   MediaStreamHandlerInterface (Tp::Client)   RefCounted (Tp)   
ChannelInterfaceDestroyableInterface (Tp::Client)   ConnectionInterfaceRequestsAdaptor (Tp::Service)   MediaStreamHandlerTransport (Tp)   ReferencedHandles (Tp)   
BaseCallback (Tp)   ChannelInterfaceDTMFAdaptor (Tp::Service)   ConnectionInterfaceRequestsInterface (Tp::Client)   MediaStreamInfo (Tp)   StreamTubeServer::RemoteContact (Tp)   
BaseCallContent (Tp)   ChannelInterfaceDTMFInterface (Tp::Client)   ConnectionInterfaceServicePointAdaptor (Tp::Service)   MemberFunctor0 (Tp)   RequestableChannelClass (Tp)   
BaseCallContentDTMFInterface (Tp)   ChannelInterfaceFileTransferMetadataAdaptor (Tp::Service)   ConnectionInterfaceServicePointInterface (Tp::Client)   MemberFunctor1 (Tp)   RequestableChannelClassSpec (Tp)   
BaseCallMuteInterface (Tp)   ChannelInterfaceFileTransferMetadataInterface (Tp::Client)   ConnectionInterfaceSimplePresenceAdaptor (Tp::Service)   MemberFunctor2 (Tp)   RequestableChannelClassSpecList (Tp)   
BaseChannel (Tp)   ChannelInterfaceGroupAdaptor (Tp::Service)   ConnectionInterfaceSimplePresenceInterface (Tp::Client)   MemberFunctor3 (Tp)   RichPresenceAccessControl (Tp)   
BaseChannelCallType (Tp)   ChannelInterfaceGroupInterface (Tp::Client)   ConnectionLowlevel (Tp)   MemberFunctor4 (Tp)   RoomInfo (Tp)   
BaseChannelCaptchaAuthenticationInterface (Tp)   ChannelInterfaceHoldAdaptor (Tp::Service)   ConnectionManager (Tp)   MemberFunctor5 (Tp)   RoomListChannel (Tp)   
BaseChannelChatStateInterface (Tp)   ChannelInterfaceHoldInterface (Tp::Client)   ConnectionManagerAdaptor (Tp::Service)   MemberFunctor6 (Tp)   RTCPFeedbackMessage (Tp)   
BaseChannelConferenceInterface (Tp)   ChannelInterfaceMediaSignallingAdaptor (Tp::Service)   ConnectionManagerInterface (Tp::Client)   MemberFunctor7 (Tp)   RTCPFeedbackMessageMap (Tp)   
BaseChannelGroupInterface (Tp)   ChannelInterfaceMediaSignallingInterface (Tp::Client)   ConnectionManagerLowlevel (Tp)   Message (Tp)   RTCPFeedbackMessageProperties (Tp)   
BaseChannelHoldInterface (Tp)   ChannelInterfaceMergeableConferenceAdaptor (Tp::Service)   Contact (Tp)   MessageContentPart (Tp)   RTPHeaderExtension (Tp)   
BaseChannelMergeableConferenceInterface (Tp)   ChannelInterfaceMessagesAdaptor (Tp::Service)   ContactAttributesMap (Tp)   MessageContentPartList (Tp)   
  S  
BaseChannelMessagesInterface (Tp)   ChannelInterfaceMessagesInterface (Tp::Client)   ContactCapabilities (Tp)   MessagePart (Tp)   
BaseChannelRoomConfigInterface (Tp)   ChannelInterfacePasswordAdaptor (Tp::Service)   ContactCapabilitiesMap (Tp)   MessagePartContentMap (Tp)   ContactSearchChannel::SearchStateChangeDetails (Tp)   
BaseChannelRoomInterface (Tp)   ChannelInterfacePasswordInterface (Tp::Client)   ContactCapability (Tp)   Metadata (Tp)   ServerAuthenticationChannel (Tp)   
BaseChannelRoomListType (Tp)   ChannelInterfaceRoomAdaptor (Tp::Service)   ContactClientTypes (Tp)   MethodInvocationContext (Tp)   ServicePoint (Tp)   
BaseChannelSASLAuthenticationInterface (Tp)   ChannelInterfaceRoomConfigAdaptor (Tp::Service)   ContactCodecMap (Tp)   MultipleStatusMap (Tp)   ServicePointInfo (Tp)   
BaseChannelSecurableInterface (Tp)   ChannelInterfaceRoomConfigInterface (Tp::Client)   ContactFactory (Tp)   
  N  
SharedPtr (Tp)   
BaseChannelServerAuthenticationType (Tp)   ChannelInterfaceRoomInterface (Tp::Client)   ContactInfoField (Tp)   SimpleCallObserver (Tp)   
BaseChannelSMSInterface (Tp)   ChannelInterfaceSASLAuthenticationAdaptor (Tp::Service)   ContactInfoMap (Tp)   NotDelegatedError (Tp)   SimpleContactPresences (Tp)   
BaseChannelSplittableInterface (Tp)   ChannelInterfaceSASLAuthenticationInterface (Tp::Client)   ContactLocations (Tp)   NotDelegatedMap (Tp)   SimpleObserver (Tp)   
BaseChannelTextType (Tp)   ChannelInterfaceSecurableAdaptor (Tp::Service)   ContactManager (Tp)   NotFilter (Tp)   SimplePresence (Tp)   
BaseConnection (Tp)   ChannelInterfaceSecurableInterface (Tp::Client)   ContactMediaDescriptionPropertiesMap (Tp)   
  O  
SimpleStatusSpec (Tp)   
BaseConnectionAddressingInterface (Tp)   ChannelInterfaceServicePointAdaptor (Tp::Service)   ContactMessenger (Tp)   SimpleStatusSpecMap (Tp)   
BaseConnectionAliasingInterface (Tp)   ChannelInterfaceServicePointInterface (Tp::Client)   ContactPresences (Tp)   Object (Tp)   SimpleStreamTubeHandler (Tp)   
BaseConnectionAvatarsInterface (Tp)   ChannelInterfaceSMSAdaptor (Tp::Service)   ContactSearchChannel (Tp)   ObjectImmutablePropertiesMap (Tp)   SimpleTextObserver (Tp)   
BaseConnectionContactInfoInterface (Tp)   ChannelInterfaceSMSInterface (Tp::Client)   ContactSearchMap (Tp)   ObjectPathList (Tp)   SingleContactAttributesMap (Tp)   
BaseConnectionContactListInterface (Tp)   ChannelInterfaceSplittableAdaptor (Tp::Service)   ContactSearchResultMap (Tp)   AbstractClientObserver::ObserverInfo (Tp)   SocketAddressIP (Tp)   
BaseConnectionContactsInterface (Tp)   ChannelInterfaceSubjectAdaptor (Tp::Service)   ContactSendingStateMap (Tp)   OptionalInterfaceFactory (Tp)   SocketAddressIPv4 (Tp)   
BaseConnectionManager (Tp)   ChannelInterfaceSubjectInterface (Tp::Client)   ContactSSRCsMap (Tp)   OrFilter (Tp)   SocketAddressIPv6 (Tp)   
BaseConnectionRequestsInterface (Tp)   ChannelInterfaceTubeInterface (Tp::Client)   ContactSubscriptionMap (Tp)   OutgoingDBusTubeChannel (Tp)   SocketNetmaskIPv4 (Tp)   
BaseConnectionSimplePresenceInterface (Tp)   ChannelOriginatorMap (Tp)   ContactSubscriptions (Tp)   OutgoingFileTransferChannel (Tp)   SocketNetmaskIPv6 (Tp)   
BaseFunctor (Tp)   ChannelRequest (Tp)   CurrencyAmount (Tp)   OutgoingStreamTubeChannel (Tp)   StatefulDBusProxy (Tp)   
BaseFunctorCaller (Tp)   ChannelRequestHints (Tp)   
  D  
  P  
StatelessDBusProxy (Tp)   
BaseProtocol (Tp)   ChannelRequestInterface (Tp::Client)   StatusSpec (Tp)   
BaseProtocolAddressingInterface (Tp)   ChannelTypeCallAdaptor (Tp::Service)   DBusDaemonInterface (Tp::Client::DBus)   Profile::Parameter (Tp)   StatusSpecMap (Tp)   
BaseProtocolAvatarsInterface (Tp)   ChannelTypeCallInterface (Tp::Client)   DBusError (Tp)   StreamTubeServer::ParametersGenerator (Tp)   StreamCredentials (Tp)   
BaseProtocolPresenceInterface (Tp)   ChannelTypeContactListInterface (Tp::Client)   DBusObject (Tp)   ParamSpec (Tp)   StreamedMediaChannel (Tp)   
ByteArrayList (Tp)   ChannelTypeContactSearchAdaptor (Tp::Service)   DBusProxy (Tp)   PeerInterface (Tp::Client::DBus)   StreamedMediaStream (Tp)   
  C  
ChannelTypeContactSearchInterface (Tp::Client)   DBusProxyFactory (Tp)   PendingAccount (Tp)   StreamTubeChannel (Tp)   
ChannelTypeDBusTubeAdaptor (Tp::Service)   DBusService (Tp)   PendingCallContent (Tp)   StreamTubeClient (Tp)   
Callback0 (Tp)   ChannelTypeDBusTubeInterface (Tp::Client)   DBusTubeChannel (Tp)   PendingCaptchas (Tp)   StreamTubeServer (Tp)   
Callback1 (Tp)   ChannelTypeFileTransferAdaptor (Tp::Service)   DBusTubeMember (Tp)   PendingChannel (Tp)   StringStringMap (Tp)   
Callback2 (Tp)   ChannelTypeFileTransferInterface (Tp::Client)   DBusTubeParticipants (Tp)   PendingChannel (Tp::Farstream)   StringVariantMap (Tp)   
Callback3 (Tp)   ChannelTypeRoomListAdaptor (Tp::Service)   DebugInterface (Tp::Client)   PendingChannelRequest (Tp)   SupportedSocketMap (Tp)   
Callback4 (Tp)   ChannelTypeRoomListInterface (Tp::Client)   DebugMessage (Tp)   PendingComposite (Tp)   
  T  
Callback5 (Tp)   ChannelTypeServerAuthenticationAdaptor (Tp::Service)   DebugReceiver (Tp)   PendingConnection (Tp)   
Callback6 (Tp)   ChannelTypeServerAuthenticationInterface (Tp::Client)   ReceivedMessage::DeliveryDetails (Tp)   PendingContactAttributes (Tp)   StreamTubeClient::TcpSourceAddressGenerator (Tp)   
Callback7 (Tp)   ChannelTypeServerTLSConnectionAdaptor (Tp::Service)   
  E  
PendingContactInfo (Tp)   TextChannel (Tp)   
CallChannel (Tp)   ChannelTypeServerTLSConnectionInterface (Tp::Client)   PendingContacts (Tp)   TLSCertificateRejection (Tp)   
CallContent (Tp)   ChannelTypeStreamedMediaAdaptor (Tp::Service)   Connection::ErrorDetails (Tp)   PendingDBusTubeConnection (Tp)   StreamTubeServer::Tube (Tp)   
CallContentAdaptor (Tp::Service)   ChannelTypeStreamedMediaInterface (Tp::Client)   
  F  
PendingDebugMessageList (Tp)   StreamTubeClient::Tube (Tp)   
CallContentInterface (Tp::Client)   ChannelTypeStreamTubeAdaptor (Tp::Service)   PendingFailure (Tp)   TubeChannel (Tp)   
CallContentInterfaceAudioControlInterface (Tp::Client)   ChannelTypeStreamTubeInterface (Tp::Client)   Feature (Tp)   PendingHandles (Tp)   TubeInfo (Tp)   
CallContentInterfaceDTMFAdaptor (Tp::Service)   ChannelTypeTextAdaptor (Tp::Service)   Features (Tp)   PendingOperation (Tp)   
  U  
CallContentInterfaceDTMFInterface (Tp::Client)   ChannelTypeTextInterface (Tp::Client)   FieldSpec (Tp)   PendingReady (Tp)   
CallContentInterfaceMediaInterface (Tp::Client)   ChannelTypeTubesInterface (Tp::Client)   FileTransferChannel (Tp)   PendingSendMessage (Tp)   UIntList (Tp)   
CallContentInterfaceVideoControlInterface (Tp::Client)   ChatStateMap (Tp)   FileTransferChannelCreationProperties (Tp)   PendingStreamedMediaStreams (Tp)   
  V  
CallContentMediaDescriptionInterface (Tp::Client)   ClientApproverInterface (Tp::Client)   Filter (Tp)   PendingStreamTubeConnection (Tp)   
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface (Tp::Client)   ClientHandlerInterface (Tp::Client)   FixedFeatureFactory (Tp)   PendingString (Tp)   VCardFieldAddressMap (Tp)   
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface (Tp::Client)   ClientInterface (Tp::Client)   FunctorCaller0 (Tp)   PendingStringList (Tp)   VideoResolution (Tp)   
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface (Tp::Client)   ClientInterfaceRequestsInterface (Tp::Client)   FunctorCaller1 (Tp)   PendingSuccess (Tp)   
  W  
CallInterfaceMuteAdaptor (Tp::Service)   ClientObserverInterface (Tp::Client)   FunctorCaller2 (Tp)   PendingTextMessage (Tp)   
CallMemberMap (Tp)   ClientRegistrar (Tp)   FunctorCaller3 (Tp)   PendingVariant (Tp)   WeakPtr (Tp)   
CallStateReason (Tp)   Codec (Tp)   FunctorCaller4 (Tp)   PendingVariantMap (Tp)   
CallStream (Tp)   ComponentStateMap (Tp)   FunctorCaller5 (Tp)   PendingVoid (Tp)   
CallStreamEndpointInterface (Tp::Client)   Connection (Tp)   FunctorCaller6 (Tp)   Profile::Presence (Tp)   
CallStreamInterface (Tp::Client)   ConnectionAdaptor (Tp::Service)   FunctorCaller7 (Tp)   Presence (Tp)   
CallStreamInterfaceMediaInterface (Tp::Client)   ConnectionCapabilities (Tp)   
  G  
PresenceSpec (Tp)   
GenericCapabilityFilter (Tp)   
A | B | C | D | E | F | G | H | I | L | M | N | O | P | Q | R | S | T | U | V | W


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00674_source.html0000644000175100017520000003165612530426257022534 0ustar00kaffeinekaffeine00000000000000 contact-messenger.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-messenger.h
1 
23 #ifndef _TelepathyQt_contact_messenger_h_HEADER_GUARD_
24 #define _TelepathyQt_contact_messenger_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Message>
32 #include <TelepathyQt/Types>
33 
34 namespace Tp
35 {
36 
37 class PendingSendMessage;
38 class MessageContentPartList;
39 
40 class TP_QT_EXPORT ContactMessenger : public QObject, public RefCounted
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(ContactMessenger)
44 
45 public:
46  static ContactMessengerPtr create(const AccountPtr &account, const ContactPtr &contact);
47  static ContactMessengerPtr create(const AccountPtr &account, const QString &contactIdentifier);
48 
49  virtual ~ContactMessenger();
50 
51  AccountPtr account() const;
52  QString contactIdentifier() const;
53 
54  QList<TextChannelPtr> textChats() const;
55 
56  PendingSendMessage *sendMessage(const QString &text,
58  MessageSendingFlags flags = 0);
59  PendingSendMessage *sendMessage(const MessageContentPartList &parts,
60  MessageSendingFlags flags = 0);
61 
62 Q_SIGNALS:
63  void messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags,
64  const QString &sentMessageToken, const Tp::TextChannelPtr &channel);
65  void messageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel);
66 
67 private:
68  TP_QT_NO_EXPORT ContactMessenger(const AccountPtr &account,
69  const QString &contactIdentifier);
70 
71  struct Private;
72  friend struct Private;
73  Private *mPriv;
74 };
75 
76 } // Tp
77 
78 #endif
The ReceivedMessage class is a subclass of Message, representing a received message only...
Definition: message.h:97
Definition: build/TelepathyQt/_gen/constants.h:2871
The MessageContentPartList class represents a list of MessageContentPart.
Definition: message-content-part.h:57
The ContactMessenger class provides an easy way to send text messages to a contact and also track sen...
Definition: contact-messenger.h:40
QFlags< MessageSendingFlag > MessageSendingFlags
Definition: build/TelepathyQt/_gen/constants.h:1166
ChannelTextMessageType
Definition: build/TelepathyQt/_gen/constants.h:2866
The PendingSendMessage class represents the parameters of and the reply to an asynchronous message se...
Definition: pending-send-message.h:41
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Message class represents a Telepathy message in a TextChannel.
Definition: message.h:44


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01280.html0000644000175100017520000002104312530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeServerAuthenticationInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeServerAuthenticationInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelTypeServerAuthenticationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeServerAuthenticationInterface
ChannelTypeServerAuthenticationInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeServerAuthenticationInterface
ChannelTypeServerAuthenticationInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeServerAuthenticationInterface
ChannelTypeServerAuthenticationInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeServerAuthenticationInterfaceexplicit
ChannelTypeServerAuthenticationInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeServerAuthenticationInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeServerAuthenticationInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeServerAuthenticationInterfaceinline
requestPropertyAuthenticationMethod() const Tp::Client::ChannelTypeServerAuthenticationInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeServerAuthenticationInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00064.html0000644000175100017520000004612612530426257021143 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClientApprover Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Protected Member Functions | List of all members
Tp::AbstractClientApprover Class Referenceabstract

The AbstractClientApprover class represents a Telepathy approver. More...

#include <TelepathyQt/AbstractClientApprover>

Inherits Tp::AbstractClient.

Public Member Functions

virtual ~AbstractClientApprover ()
 
ChannelClassSpecList approverFilter () const
 
virtual void addDispatchOperation (const MethodInvocationContextPtr<> &context, const ChannelDispatchOperationPtr &dispatchOperation)=0
 
- Public Member Functions inherited from Tp::AbstractClient
 AbstractClient ()
 
virtual ~AbstractClient ()
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 AbstractClientApprover (const ChannelClassSpecList &channelFilter)
 

Detailed Description

The AbstractClientApprover class represents a Telepathy approver.

Approvers are clients that notify the user that new channels have been created, and allow the user to accept or reject those channels.

Approvers can also select which channel handler will be used for the channel, for instance by offering the user a list of possible handlers rather than just an accept/reject choice. However, the channel dispatcher must be able to prioritize possible handlers on its own using some reasonable heuristic, probably based on user configuration.

It is possible (and useful) to have an approver and a channel handler in the same process; this is particularly useful if a channel handler wants to claim responsibility for particular channels itself.

All approvers are notified simultaneously. For instance, in a desktop system, there might be one approver that displays a notification-area icon, one that is part of a contact list window and highlights contacts there, and one that is part of a full-screen media player.

Any approver can approve the handling of a channel dispatch operation with a particular channel handler by calling the ChannelDispatchOperation::handleWith() method. Approvers can also attempt to claim channels by calling ChannelDispatchOperation::claim(). If this succeeds, the approver may handle the channels itself (if it is also a handler), or close the channels in order to reject them.

Approvers wishing to reject channels should call the ChannelDispatchOperation::claim() method, then (if it succeeds) close the channels in any way they see fit.

The first approver to reply gets its decision acted on; any other approvers that reply at approximately the same time will get an error, indicating that the channel has already been dealt with.

Approvers should usually prompt the user and ask for confirmation, rather than dispatching the channel to a handler straight away.

To become an approver one should inherit AbstractClientApprover and implement the pure virtual addDispatchOperation() method. After that the object representing the approver must be registered using ClientRegistrar::registerClient().

When new channels in which the approver has registered an interest are ready to be dispatched, the method addDispatchOperation() is invoked. The new channels are represented by a ChannelDispatchOperation object, which is passed to the addDispatchOperation() method. All approvers are notified simultaneously.

Usage

Implementing an approver

*
* class MyApprover : public AbstractClientApprover
* {
* public:
* MyApprover(const ChannelClassSpecSpecList &channelFilter);
* ~MyApprover() { }
*
* void addDispatchOperation(const MethodInvocationContextPtr<> &context,
* const ChannelDispatchOperationPtr &dispatchOperation);
* };
*
* MyApprover::MyApprover(const ChannelClassSpecList &channelFilter)
* : AbstractClientApprover(channelFilter)
* {
* }
*
* void MyApprover::addDispatchOperation(
* const MethodInvocationContextPtr<> &context,
* const ChannelDispatchOperationPtr &dispatchOperation)
* {
* // do something with dispatchOperation
*
* context->setFinished();
* }
*
*

Registering an approver

*
* AbstractClientPtr approver = AbstractClientPtr::dynamicCast(
* SharedPtr<MyApprover>(new MyApprover(
* ChannelClassSpecList() << ChannelClassSpec::textChat())));
* registrar->registerClient(approver, "myapprover");
*
*
See Also
AbstractClient

Constructor & Destructor Documentation

Tp::AbstractClientApprover::~AbstractClientApprover ( )
virtual

Class destructor.

Tp::AbstractClientApprover::AbstractClientApprover ( const ChannelClassSpecList channelFilter)
protected

Construct a new AbstractClientApprover object.

Parameters
channelFilterA specification of the channels in which this approver is interested.

Member Function Documentation

ChannelClassSpecList Tp::AbstractClientApprover::approverFilter ( ) const

Return the property containing a specification of the channels that this channel approver is interested. The addDispatchOperation() method should be called by the channel dispatcher whenever at least one of the channels in a channel dispatch operation matches this description.

This method works in exactly the same way as the AbstractClientObserver::observerChannelFilter() method. In particular, the returned value cannot change while the handler process continues to own the corresponding client bus name.

In the .client file, represented in the same way as observer channel filter, the group is TP_QT_IFACE_CLIENT_APPROVER followed by ApproverChannelFilter instead.

Returns
A specification of the channels that this channel approver is interested as a list of ChannelClassSpec objects.
See Also
addDispatchOperation()
void Tp::AbstractClientApprover::addDispatchOperation ( const MethodInvocationContextPtr<> &  context,
const ChannelDispatchOperationPtr &  dispatchOperation 
)
pure virtual

Called by the channel dispatcher when a dispatch operation in which the approver has registered an interest is created, or when the approver starts up while such channel dispatch operations already exist.

The received context object should be stored until this method is finished processing and then MethodInvocationContext::setFinished() or MethodInvocationContext::setFinishedWithError() should be called on the received context object.

Specialized approvers must reimplement this method.

Parameters
contextA MethodInvocationContextPtr object that must be used to indicate whether this method finished processing.
dispatchOperationThe dispatch operation to be processed.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_type.html0000644000175100017520000005134012530426260023366 0ustar00kaffeinekaffeine00000000000000 Class Members - Typedefs
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- a -

- c -

- d -

- e -

- f -

- g -

- h -

- i -

- l -

- m -

- n -

- p -

- r -

- s -

- u -

- v -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01025.html0000644000175100017520000010622112530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FileTransferChannel Member List

This is the complete list of members for Tp::FileTransferChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
availableSocketTypes() const Tp::FileTransferChannelprotected
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
cancel()Tp::FileTransferChannel
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
connectToHost()Tp::FileTransferChannelprotectedvirtual
contentHash() const Tp::FileTransferChannel
contentHashType() const Tp::FileTransferChannel
contentType() const Tp::FileTransferChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::FileTransferChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
description() const Tp::FileTransferChannel
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::FileTransferChannelstatic
fileName() const Tp::FileTransferChannel
FileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore)Tp::FileTransferChannelprotected
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initialOffset() const Tp::FileTransferChannel
initialOffsetDefined(qulonglong initialOffset)Tp::FileTransferChannelsignal
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isConnected() const Tp::FileTransferChannelprotected
isFinished() const Tp::FileTransferChannelprotected
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
lastModificationTime() const Tp::FileTransferChannel
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
onUriDefined(const QString &uri)Tp::FileTransferChannelprotectedslot
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
setBusName(const QString &busName)Tp::DBusProxyprotected
setConnected()Tp::FileTransferChannelprotected
setFinished()Tp::FileTransferChannelprotectedvirtual
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
size() const Tp::FileTransferChannel
state() const Tp::FileTransferChannel
stateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason)Tp::FileTransferChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
stateReason() const Tp::FileTransferChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
transferredBytes() const Tp::FileTransferChannel
transferredBytesChanged(qulonglong count)Tp::FileTransferChannelsignal
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
uri() const Tp::FileTransferChannel
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~FileTransferChannel()Tp::FileTransferChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00379.html0000644000175100017520000006127212530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Client::DBus::IntrospectableInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::DBus::IntrospectableInterface Class Reference

#include <TelepathyQt/DBus>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > Introspect (int timeout=-1)
 

Public Member Functions

 IntrospectableInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 IntrospectableInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 IntrospectableInterface (Tp::DBusProxy *proxy)
 
 IntrospectableInterface (const Tp::AbstractInterface &mainInterface)
 
 IntrospectableInterface (const Tp::AbstractInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.DBus.Introspectable".

Constructor & Destructor Documentation

Tp::Client::DBus::IntrospectableInterface::IntrospectableInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a IntrospectableInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::IntrospectableInterface::IntrospectableInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a IntrospectableInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::IntrospectableInterface::IntrospectableInterface ( Tp::DBusProxy proxy)

Creates a IntrospectableInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::DBus::IntrospectableInterface::IntrospectableInterface ( const Tp::AbstractInterface mainInterface)
explicit

Creates a IntrospectableInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::DBus::IntrospectableInterface::IntrospectableInterface ( const Tp::AbstractInterface mainInterface,
QObject *  parent 
)

Creates a IntrospectableInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::DBus::IntrospectableInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.DBus.Introspectable", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::DBus::IntrospectableInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::DBus::IntrospectableInterface::Introspect ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Introspect on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::DBus::IntrospectableInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00123.html0000644000175100017520000006271112530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionRequestsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | List of all members
Tp::BaseConnectionRequestsInterface Class Reference

Base class for implementations of Connection.Interface.Requests. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Slots

void newChannels (const Tp::ChannelDetailsList &channels)
 
void channelClosed (const QDBusObjectPath &removed)
 

Public Member Functions

virtual ~BaseConnectionRequestsInterface ()
 
QVariantMap immutableProperties () const
 
void ensureChannel (const QVariantMap &request, bool &yours, QDBusObjectPath &channel, QVariantMap &details, DBusError *error)
 
void createChannel (const QVariantMap &request, QDBusObjectPath &channel, QVariantMap &details, DBusError *error)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionRequestsInterfacePtr 
create (BaseConnection *connection)
 
template<typename BaseConnectionRequestsInterfaceSubclass >
static SharedPtr
< BaseConnectionRequestsInterfaceSubclass > 
create (BaseConnection *connection)
 

Public Attributes

Tp::RequestableChannelClassList requestableChannelClasses
 

Protected Member Functions

 BaseConnectionRequestsInterface (BaseConnection *connection)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.Requests.

Constructor & Destructor Documentation

Tp::BaseConnectionRequestsInterface::~BaseConnectionRequestsInterface ( )
virtual

Class destructor.

Tp::BaseConnectionRequestsInterface::BaseConnectionRequestsInterface ( BaseConnection connection)
protected

Class constructor.

Member Function Documentation

static BaseConnectionRequestsInterfacePtr Tp::BaseConnectionRequestsInterface::create ( BaseConnection connection)
inlinestatic
template<typename BaseConnectionRequestsInterfaceSubclass >
static SharedPtr<BaseConnectionRequestsInterfaceSubclass> Tp::BaseConnectionRequestsInterface::create ( BaseConnection connection)
inlinestatic
QVariantMap Tp::BaseConnectionRequestsInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseConnectionRequestsInterface::ensureChannel ( const QVariantMap &  request,
bool &  yours,
QDBusObjectPath &  channel,
QVariantMap &  details,
DBusError error 
)
void Tp::BaseConnectionRequestsInterface::createChannel ( const QVariantMap &  request,
QDBusObjectPath &  channel,
QVariantMap &  details,
DBusError error 
)
void Tp::BaseConnectionRequestsInterface::newChannels ( const Tp::ChannelDetailsList channels)
slot
void Tp::BaseConnectionRequestsInterface::channelClosed ( const QDBusObjectPath &  removed)
slot

Member Data Documentation

Tp::RequestableChannelClassList Tp::BaseConnectionRequestsInterface::requestableChannelClasses


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01094.html0000644000175100017520000001041012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReadyObject Member List

This is the complete list of members for Tp::ReadyObject, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
missingFeatures() const Tp::ReadyObjectvirtual
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
requestedFeatures() const Tp::ReadyObjectvirtual
~ReadyObject()Tp::ReadyObjectvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00939.html0000644000175100017520000003654412530426260021153 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelRoomConfigInterface Member List

This is the complete list of members for Tp::BaseChannelRoomConfigInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
anonymous() const Tp::BaseChannelRoomConfigInterface
BaseChannelRoomConfigInterface()Tp::BaseChannelRoomConfigInterfaceprotected
canUpdateConfiguration() const Tp::BaseChannelRoomConfigInterface
configurationRetrieved() const Tp::BaseChannelRoomConfigInterface
create()Tp::BaseChannelRoomConfigInterfaceinlinestatic
create()Tp::BaseChannelRoomConfigInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
description() const Tp::BaseChannelRoomConfigInterface
immutableProperties() const Tp::BaseChannelRoomConfigInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
inviteOnly() const Tp::BaseChannelRoomConfigInterface
isPrivate() const Tp::BaseChannelRoomConfigInterface
isRegistered() const Tp::AbstractDBusServiceInterface
limit() const Tp::BaseChannelRoomConfigInterface
moderated() const Tp::BaseChannelRoomConfigInterface
mutableProperties() const Tp::BaseChannelRoomConfigInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
password() const Tp::BaseChannelRoomConfigInterface
passwordHint() const Tp::BaseChannelRoomConfigInterface
passwordProtected() const Tp::BaseChannelRoomConfigInterface
persistent() const Tp::BaseChannelRoomConfigInterface
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setAnonymous(bool anonymous)Tp::BaseChannelRoomConfigInterface
setCanUpdateConfiguration(bool canUpdateConfiguration)Tp::BaseChannelRoomConfigInterface
setConfigurationRetrieved(bool configurationRetrieved)Tp::BaseChannelRoomConfigInterface
setDescription(const QString &description)Tp::BaseChannelRoomConfigInterface
setInviteOnly(bool inviteOnly)Tp::BaseChannelRoomConfigInterface
setLimit(uint limit)Tp::BaseChannelRoomConfigInterface
setModerated(bool moderated)Tp::BaseChannelRoomConfigInterface
setMutableProperties(const QStringList &mutableProperties)Tp::BaseChannelRoomConfigInterface
setPassword(const QString &password)Tp::BaseChannelRoomConfigInterface
setPasswordHint(const QString &passwordHint)Tp::BaseChannelRoomConfigInterface
setPasswordProtected(bool passwordProtected)Tp::BaseChannelRoomConfigInterface
setPersistent(bool persistent)Tp::BaseChannelRoomConfigInterface
setPrivate(bool newPrivate)Tp::BaseChannelRoomConfigInterface
setTitle(const QString &title)Tp::BaseChannelRoomConfigInterface
setUpdateConfigurationCallback(const UpdateConfigurationCallback &cb)Tp::BaseChannelRoomConfigInterface
title() const Tp::BaseChannelRoomConfigInterface
updateConfiguration(const QVariantMap &properties, DBusError *error)Tp::BaseChannelRoomConfigInterface
UpdateConfigurationCallback typedefTp::BaseChannelRoomConfigInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelRoomConfigInterface()Tp::BaseChannelRoomConfigInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00438.html0000644000175100017520000006613112530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::PendingContacts Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingContacts Class Reference

The PendingContacts class is used by ContactManager when creating/updating Contact objects. More...

#include <TelepathyQt/PendingContacts>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingContacts ()
 
ContactManagerPtr manager () const
 
Features features () const
 
bool isForHandles () const
 
UIntList handles () const
 
bool isForIdentifiers () const
 
QStringList identifiers () const
 
bool isForVCardAddresses () const
 
QString vcardField () const
 
QStringList vcardAddresses () const
 
bool isForUris () const
 
QStringList uris () const
 
bool isUpgrade () const
 
QList< ContactPtr > contactsToUpgrade () const
 
QList< ContactPtr > contacts () const
 
UIntList invalidHandles () const
 
QStringList validIdentifiers () const
 
QHash< QString, QPair< QString,
QString > > 
invalidIdentifiers () const
 
QStringList validVCardAddresses () const
 
QStringList invalidVCardAddresses () const
 
QStringList validUris () const
 
QStringList invalidUris () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingContacts class is used by ContactManager when creating/updating Contact objects.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingContacts::~PendingContacts ( )

Class destructor.

Member Function Documentation

ContactManagerPtr Tp::PendingContacts::manager ( ) const
Features Tp::PendingContacts::features ( ) const
bool Tp::PendingContacts::isForHandles ( ) const
UIntList Tp::PendingContacts::handles ( ) const
bool Tp::PendingContacts::isForIdentifiers ( ) const
QStringList Tp::PendingContacts::identifiers ( ) const
bool Tp::PendingContacts::isForVCardAddresses ( ) const
QString Tp::PendingContacts::vcardField ( ) const
QStringList Tp::PendingContacts::vcardAddresses ( ) const
bool Tp::PendingContacts::isForUris ( ) const
QStringList Tp::PendingContacts::uris ( ) const
bool Tp::PendingContacts::isUpgrade ( ) const
QList< ContactPtr > Tp::PendingContacts::contactsToUpgrade ( ) const
QList< ContactPtr > Tp::PendingContacts::contacts ( ) const
UIntList Tp::PendingContacts::invalidHandles ( ) const
QStringList Tp::PendingContacts::validIdentifiers ( ) const
QHash< QString, QPair< QString, QString > > Tp::PendingContacts::invalidIdentifiers ( ) const
QStringList Tp::PendingContacts::validVCardAddresses ( ) const
QStringList Tp::PendingContacts::invalidVCardAddresses ( ) const
QStringList Tp::PendingContacts::validUris ( ) const
QStringList Tp::PendingContacts::invalidUris ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00667_source.html0000644000175100017520000002413512530426257022530 0ustar00kaffeinekaffeine00000000000000 contact-capabilities.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-capabilities.h
1 
23 #ifndef _TelepathyQt_contact_capabilities_h_HEADER_GUARD_
24 #define _TelepathyQt_contact_capabilities_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/CapabilitiesBase>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class TestBackdoors;
37 
38 class TP_QT_EXPORT ContactCapabilities : public CapabilitiesBase
39 {
40 public:
42  virtual ~ContactCapabilities();
43 
44  bool dbusTubes(const QString &serviceName) const;
45  QStringList dbusTubeServices() const;
46 
47  bool streamTubes(const QString &service) const;
48  QStringList streamTubeServices() const;
49 
50  // later:
51  // bool dbusTubes(const QString &service) const;
52  // QStringList dbusTubeServices() const;
53 
54 protected:
55  friend class Contact;
56  friend class TestBackdoors;
57 
58  ContactCapabilities(bool specificToContact);
60  bool specificToContact);
62  bool specificToContact);
63 };
64 
65 } // Tp
66 
67 Q_DECLARE_METATYPE(Tp::ContactCapabilities);
68 
69 #endif
The ContactCapabilities class represents the capabilities of a Contact.
Definition: contact-capabilities.h:38
The CapabilitiesBase class represents the capabilities a Connection or a Contact supports.
Definition: capabilities-base.h:36
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
The Contact class represents a Telepathy contact.
Definition: contact.h:51
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00192.html0000644000175100017520000007343212530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceChatStateInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelInterfaceChatStateInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetChatState (uint state, int timeout=-1)
 

Signals

void ChatStateChanged (uint contact, uint state)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceChatStateInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceChatStateInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceChatStateInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceChatStateInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceChatStateInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyChatStates () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.ChatState".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceChatStateInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceChatStateInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceChatStateInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceChatStateInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceChatStateInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceChatStateInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.ChatState", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceChatStateInterface::requestPropertyChatStates ( ) const
inline

Asynchronous getter for the remote object property ChatStates of type Tp::ChatStateMap.

A map containing the chat states of all contacts in this channel whose chat state is not Inactive.

Contacts in this channel, but who are not listed in this map, may be assumed to be in the Inactive state.

In implementations that do not have this property, its value may be assumed to be empty until a ChatStateChanged() signal indicates otherwise.

This property was not present in older versions of telepathy-spec, because chat states in XMPP are not state-recoverable (if you miss the change notification signal, there's no way to know the state). However, this property still allows clients to recover state changes that were seen by the CM before the client started to deal with the channel.

In CMs that follow older spec versions, assuming Inactive will mean that initial chat states will always be assumed to be Inactive, which is the best we can do. XEP 0085 specifies Inactive as the "neutral" state to be assumed unless told otherwise.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceChatStateInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceChatStateInterface::SetChatState ( uint  state,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetChatState on the remote object.

Set the local state and notify other members of the channel that it has changed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
state
The new state.
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceChatStateInterface::ChatStateChanged ( uint  contact,
uint  state 
)
signal

Represents the signal ChatStateChanged on the remote object.

Emitted when the state of a member of the channel has changed. This includes local state.

Parameters
contact
An integer handle for the contact.
state
The new state of this contact.
void Tp::Client::ChannelInterfaceChatStateInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01153.html0000644000175100017520000000555612530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactMediaDescriptionPropertiesMap Member List

This is the complete list of members for Tp::ContactMediaDescriptionPropertiesMap, including all inherited members.

ContactMediaDescriptionPropertiesMap()Tp::ContactMediaDescriptionPropertiesMapinline
ContactMediaDescriptionPropertiesMap(const QMap< uint, QVariantMap > &a)Tp::ContactMediaDescriptionPropertiesMapinline
operator=(const QMap< uint, QVariantMap > &a)Tp::ContactMediaDescriptionPropertiesMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00663_source.html0000644000175100017520000014347612530426257022536 0ustar00kaffeinekaffeine00000000000000 connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
connection.h
1 
23 #ifndef _TelepathyQt_connection_h_HEADER_GUARD_
24 #define _TelepathyQt_connection_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-connection.h>
31 
32 #include <TelepathyQt/ConnectionCapabilities>
33 #include <TelepathyQt/Contact>
34 #include <TelepathyQt/DBus>
35 #include <TelepathyQt/DBusProxy>
36 #include <TelepathyQt/OptionalInterfaceFactory>
37 #include <TelepathyQt/ReadinessHelper>
38 #include <TelepathyQt/Types>
39 #include <TelepathyQt/SharedPtr>
40 
41 #include <TelepathyQt/Constants>
42 #include <TelepathyQt/Types>
43 
44 #include <QSet>
45 #include <QString>
46 #include <QStringList>
47 
48 namespace Tp
49 {
50 
51 class Channel;
52 class ConnectionCapabilities;
53 class ConnectionLowlevel;
54 class Contact;
55 class ContactManager;
56 class PendingChannel;
57 class PendingContactAttributes;
58 class PendingHandles;
59 class PendingOperation;
60 class PendingReady;
61 
62 class TP_QT_EXPORT Connection : public StatefulDBusProxy,
63  public OptionalInterfaceFactory<Connection>
64 {
65  Q_OBJECT
66  Q_DISABLE_COPY(Connection)
67 
68 public:
69  static const Feature FeatureCore;
72  static const Feature FeatureRoster;
74  static const Feature FeatureAccountBalance; // TODO unit tests for this
75  static const Feature FeatureConnected;
76 
77  static ConnectionPtr create(const QString &busName,
78  const QString &objectPath,
79  const ChannelFactoryConstPtr &channelFactory,
80  const ContactFactoryConstPtr &contactFactory);
81  static ConnectionPtr create(const QDBusConnection &bus,
82  const QString &busName, const QString &objectPath,
83  const ChannelFactoryConstPtr &channelFactory,
84  const ContactFactoryConstPtr &contactFactory);
85 
86  virtual ~Connection();
87 
88  ChannelFactoryConstPtr channelFactory() const;
89  ContactFactoryConstPtr contactFactory() const;
90 
91  QString cmName() const;
92  QString protocolName() const;
93 
94  ConnectionStatus status() const;
95  ConnectionStatusReason statusReason() const;
96 
98  {
99  public:
100  ErrorDetails();
101  ErrorDetails(const QVariantMap &details);
102  ErrorDetails(const ErrorDetails &other);
103  ~ErrorDetails();
104 
105  ErrorDetails &operator=(const ErrorDetails &other);
106 
107  bool isValid() const { return mPriv.constData() != 0; }
108 
109  bool hasDebugMessage() const
110  {
111  return allDetails().contains(QLatin1String("debug-message"));
112  }
113 
114  QString debugMessage() const
115  {
116  return qdbus_cast<QString>(allDetails().value(QLatin1String("debug-message")));
117  }
118 
119  bool hasServerMessage() const
120  {
121  return allDetails().contains(QLatin1String("server-message"));
122  }
123 
124  QString serverMessage() const
125  {
126  return qdbus_cast<QString>(allDetails().value(QLatin1String("server-message")));
127  }
128 
129  bool hasUserRequested() const
130  {
131  return allDetails().contains(QLatin1String("user-requested"));
132  }
133 
134  bool userRequested() const
135  {
136  return qdbus_cast<bool>(allDetails().value(QLatin1String("user-requested")));
137  }
138 
139  bool hasExpectedHostname() const
140  {
141  return allDetails().contains(QLatin1String("expected-hostname"));
142  }
143 
144  QString expectedHostname() const
145  {
146  return qdbus_cast<QString>(allDetails().value(QLatin1String("expected-hostname")));
147  }
148 
150  {
151  return allDetails().contains(QLatin1String("certificate-hostname"));
152  }
153 
154  QString certificateHostname() const
155  {
156  return qdbus_cast<QString>(allDetails().value(QLatin1String("certificate-hostname")));
157  }
158 
159  QVariantMap allDetails() const;
160 
161  private:
162  friend class Connection;
163 
164  struct Private;
165  friend struct Private;
166  QSharedDataPointer<Private> mPriv;
167  };
168 
169  const ErrorDetails &errorDetails() const;
170 
171  uint selfHandle() const;
172  ContactPtr selfContact() const;
173 
174  CurrencyAmount accountBalance() const;
175 
176  ConnectionCapabilities capabilities() const;
177 
178  ContactManagerPtr contactManager() const;
179 
180 #if defined(BUILDING_TP_QT) || defined(TP_QT_ENABLE_LOWLEVEL_API)
181  ConnectionLowlevelPtr lowlevel();
182  ConnectionLowlevelConstPtr lowlevel() const;
183 #endif
184 
185 Q_SIGNALS:
186  void statusChanged(Tp::ConnectionStatus newStatus);
187 
188  void selfHandleChanged(uint newHandle);
189  // FIXME: might not need this when Renaming is fixed and mapped to Contacts
190  void selfContactChanged();
191 
192  void accountBalanceChanged(const Tp::CurrencyAmount &accountBalance);
193 
194 protected:
195  Connection(const QDBusConnection &bus, const QString &busName,
196  const QString &objectPath,
197  const ChannelFactoryConstPtr &channelFactory,
198  const ContactFactoryConstPtr &contactFactory,
199  const Feature &coreFeature);
200 
201  Client::ConnectionInterface *baseInterface() const;
202 
203 private Q_SLOTS:
204  TP_QT_NO_EXPORT void onStatusReady(uint status);
205  TP_QT_NO_EXPORT void onStatusChanged(uint status, uint reason);
206  TP_QT_NO_EXPORT void onConnectionError(const QString &error, const QVariantMap &details);
207  TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher);
208  TP_QT_NO_EXPORT void gotStatus(QDBusPendingCallWatcher *watcher);
209  TP_QT_NO_EXPORT void gotInterfaces(QDBusPendingCallWatcher *watcher);
210  TP_QT_NO_EXPORT void gotSelfHandle(QDBusPendingCallWatcher *watcher);
211  TP_QT_NO_EXPORT void gotCapabilities(QDBusPendingCallWatcher *watcher);
212  TP_QT_NO_EXPORT void gotContactAttributeInterfaces(QDBusPendingCallWatcher *watcher);
213  TP_QT_NO_EXPORT void gotSimpleStatuses(QDBusPendingCallWatcher *watcher);
214  TP_QT_NO_EXPORT void gotSelfContact(Tp::PendingOperation *op);
215 
216  TP_QT_NO_EXPORT void onIntrospectRosterFinished(Tp::PendingOperation *op);
217  TP_QT_NO_EXPORT void onIntrospectRosterGroupsFinished(Tp::PendingOperation *op);
218 
219  TP_QT_NO_EXPORT void doReleaseSweep(uint handleType);
220 
221  TP_QT_NO_EXPORT void onSelfHandleChanged(uint);
222 
223  TP_QT_NO_EXPORT void gotBalance(QDBusPendingCallWatcher *watcher);
224  TP_QT_NO_EXPORT void onBalanceChanged(const Tp::CurrencyAmount &);
225 
226 private:
227  class PendingConnect;
228  friend class ConnectionLowlevel;
229  friend class PendingChannel;
230  friend class PendingConnect;
232  friend class PendingContacts;
233  friend class PendingHandles;
234  friend class ReferencedHandles;
235 
236  TP_QT_NO_EXPORT void refHandle(HandleType handleType, uint handle);
237  TP_QT_NO_EXPORT void unrefHandle(HandleType handleType, uint handle);
238  TP_QT_NO_EXPORT void handleRequestLanded(HandleType handleType);
239 
240  struct Private;
241  friend struct Private;
242  Private *mPriv;
243 };
244 
245 } // Tp
246 
247 Q_DECLARE_METATYPE(Tp::Connection::ErrorDetails);
248 
249 #endif
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
bool hasCertificateHostname() const
Definition: connection.h:149
static const Feature FeatureRoster
Definition: connection.h:72
The PendingHandles class represents the parameters of and the reply to an asynchronous handle request...
Definition: pending-handles.h:46
Definition: build/TelepathyQt/_gen/types.h:1352
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
bool hasServerMessage() const
Definition: connection.h:119
ConnectionStatusReason
Definition: build/TelepathyQt/_gen/constants.h:1465
Definition: cli-connection.h:44
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
bool hasDebugMessage() const
Definition: connection.h:109
static const Feature FeatureAccountBalance
Definition: connection.h:74
bool hasExpectedHostname() const
Definition: connection.h:139
QString certificateHostname() const
Definition: connection.h:154
bool isValid() const
Definition: connection.h:107
The PendingContacts class is used by ContactManager when creating/updating Contact objects...
Definition: pending-contacts.h:46
The Connection class represents a Telepathy connection.
Definition: connection.h:62
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
static const Feature FeatureSelfContact
Definition: connection.h:70
ConnectionStatus
Definition: build/TelepathyQt/_gen/constants.h:1420
bool hasUserRequested() const
Definition: connection.h:129
The PendingChannel class represents the parameters of and the reply to an asynchronous channel reques...
Definition: pending-channel.h:44
QString serverMessage() const
Definition: connection.h:124
The Connection::ErrorDetails class represents the details of a connection error.
Definition: connection.h:97
static const Feature FeatureRosterGroups
Definition: connection.h:73
static const Feature FeatureSimplePresence
Definition: connection.h:71
bool userRequested() const
Definition: connection.h:134
The ConnectionLowlevel class extends Connection with support to low-level features.
Definition: connection-lowlevel.h:43
QString expectedHostname() const
Definition: connection.h:144
The ConnectionCapabilities class represents the capabilities of a Connection.
Definition: connection-capabilities.h:38
static const Feature FeatureConnected
Definition: connection.h:75
QString debugMessage() const
Definition: connection.h:114
static const Feature FeatureCore
Definition: connection.h:69
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65
The PendingContactAttributes class represents the parameters of and the reply to an asynchronous requ...
Definition: pending-contact-attributes.h:40


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00251.html0000644000175100017520000006121612530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeTextAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | List of all members
Tp::Service::ChannelTypeTextAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void AcknowledgePendingMessages (const Tp::UIntList &IDs, const QDBusMessage &dbusMessage)
 
Tp::UIntList GetMessageTypes (const QDBusMessage &dbusMessage)
 
Tp::PendingTextMessageList ListPendingMessages (bool clear, const QDBusMessage &dbusMessage)
 
void Send (uint type, const QString &text, const QDBusMessage &dbusMessage)
 

Signals

void LostMessage ()
 
void Received (uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text)
 
void SendError (uint error, uint timestamp, uint type, const QString &text)
 
void Sent (uint timestamp, uint type, const QString &text)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

void Tp::Service::ChannelTypeTextAdaptor::AcknowledgePendingMessages ( const Tp::UIntList IDs,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void acknowledgePendingMessages(const Tp::UIntList& IDs, const Tp::Service::ChannelTypeTextAdaptor::AcknowledgePendingMessagesContextPtr &context);

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

Inform the channel that you have handled messages by displaying them to the user (or equivalent), so they can be removed from the pending queue.

Parameters
IDs
The IDs of the messages to acknowledge
Tp::UIntList Tp::Service::ChannelTypeTextAdaptor::GetMessageTypes ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getMessageTypes(const Tp::Service::ChannelTypeTextAdaptor::GetMessageTypesContextPtr &context);

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

Return an array indicating which types of message may be sent on this channel.

Returns
An array of integer message types (ChannelTextMessageType)
Tp::PendingTextMessageList Tp::Service::ChannelTypeTextAdaptor::ListPendingMessages ( bool  clear,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void listPendingMessages(bool clear, const Tp::Service::ChannelTypeTextAdaptor::ListPendingMessagesContextPtr &context);

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

List the messages currently in the pending queue, and optionally remove then all.

Parameters
clear
If true, behave as if AcknowledgePendingMessages had also been 
called.
Returns
An array of structs representing the pending queue. Each contains:
  • a numeric identifier
  • a Unix timestamp indicating when the message was received
  • the contact handle for the contact who sent the message
  • the message type, taken from ChannelTextMessageType
  • the bitwise-OR of the message flags from ChannelTextMessageFlags
  • the text of the message
void Tp::Service::ChannelTypeTextAdaptor::Send ( uint  type,
const QString &  text,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void send(uint type, const QString& text, const Tp::Service::ChannelTypeTextAdaptor::SendContextPtr &context);

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

Request that a message be sent on this channel. When the message has been submitted for delivery, this method will return and the Sent() signal will be emitted. If the message cannot be submitted for delivery, the method returns an error and no signal is emitted.

This method SHOULD return before the Sent signal is emitted.

When a Text channel implements the ChannelInterfaceMessagesInterface interface, that "SHOULD" becomes a "MUST".

Parameters
type
An integer indicating the type of the message
text
The message to send
void Tp::Service::ChannelTypeTextAdaptor::LostMessage ( )
signal

Represents the exported D-Bus signal LostMessage on this object.

Adaptees should export this signal as a Qt signal with the following signature: void lostMessage();

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

void Tp::Service::ChannelTypeTextAdaptor::Received ( uint  ID,
uint  timestamp,
uint  sender,
uint  type,
uint  flags,
const QString &  text 
)
signal

Represents the exported D-Bus signal Received on this object.

Adaptees should export this signal as a Qt signal with the following signature: void received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString& text);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
ID
A numeric identifier for acknowledging the message
timestamp
A Unix timestamp indicating when the message was received
sender
The handle of the contact who sent the message
type
The type of the message (normal, action, notice, etc.)
flags
A bitwise OR of the message flags
text
The text of the message
void Tp::Service::ChannelTypeTextAdaptor::SendError ( uint  error,
uint  timestamp,
uint  type,
const QString &  text 
)
signal

Represents the exported D-Bus signal SendError on this object.

Adaptees should export this signal as a Qt signal with the following signature: void sendError(uint error, uint timestamp, uint type, const QString& text);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
error
The error that occurred
timestamp
The Unix timestamp indicating when the message was sent
type
The message type
text
The text of the message
void Tp::Service::ChannelTypeTextAdaptor::Sent ( uint  timestamp,
uint  type,
const QString &  text 
)
signal

Represents the exported D-Bus signal Sent on this object.

Adaptees should export this signal as a Qt signal with the following signature: void sent(uint timestamp, uint type, const QString& text);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
timestamp
Unix timestamp indicating when the message was sent
type
The message type (normal, action, notice, etc) from 
ChannelTextMessageType
text
The text of the message. If the message was, or will be, altered 
during transmission, this argument SHOULD reflect what other 
contacts will receive rather than being a copy of the argument to 
Send.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01212.html0000644000175100017520000000543612530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactCapabilitiesMap Member List

This is the complete list of members for Tp::ContactCapabilitiesMap, including all inherited members.

ContactCapabilitiesMap()Tp::ContactCapabilitiesMapinline
ContactCapabilitiesMap(const QMap< uint, RequestableChannelClassList > &a)Tp::ContactCapabilitiesMapinline
operator=(const QMap< uint, RequestableChannelClassList > &a)Tp::ContactCapabilitiesMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00310.html0000644000175100017520000005261312530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionManagerAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | List of all members
Tp::Service::ConnectionManagerAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ParamSpecList GetParameters (const QString &protocol, const QDBusMessage &dbusMessage)
 
QStringList ListProtocols (const QDBusMessage &dbusMessage)
 
QString RequestConnection (const QString &protocol, const QVariantMap &parameters, const QDBusMessage &dbusMessage, QDBusObjectPath &objectPath)
 

Signals

void NewConnection (const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol)
 

Public Member Functions

Tp::ProtocolPropertiesMap Protocols () const
 
QStringList Interfaces () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ProtocolPropertiesMap Tp::Service::ConnectionManagerAdaptor::Protocols ( ) const

Return the value of the exported D-Bus object property Protocols of type Tp::ProtocolPropertiesMap.

Adaptees should export this property as a Qt property named 'protocols' with type Tp::ProtocolPropertiesMap.

A map from protocol identifiers supported by this connection manager to the immutable properties of the corresponding ProtocolInterface objects.

Providing the immutable properties here means that when the API of Protocol objects has been finalized, most clients will only need one D-Bus round trip to interrogate the ConnectionManager about all its protocols.

If this map is empty or missing, clients SHOULD fall back to calling ListProtocols() and GetParameters() .

Returns
The value of exported property Protocols.
QStringList Tp::Service::ConnectionManagerAdaptor::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 the extra interfaces provided by this connection manager (i.e. extra functionality that can be provided even before a connection has been created).

No interfaces suitable for listing in this property are currently defined; it's provided as a hook for possible future functionality.

To be compatible with older connection managers, if retrieving this property fails, clients SHOULD assume that its value is an empty list.

Connection managers with a non-empty list of Interfaces MUST represent them in the .manager file, if they have one, as an Interfaces key in the group headed [ConnectionManager], whose value is a list of strings each followed by a semicolon.

Returns
The value of exported property Interfaces.
Tp::ParamSpecList Tp::Service::ConnectionManagerAdaptor::GetParameters ( const QString &  protocol,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getParameters(const QString& protocol, const Tp::Service::ConnectionManagerAdaptor::GetParametersContextPtr &context);

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

Get a list of the parameters which may be specified in the Parameters of an Account (or, for specialised applications which do not use the account manager, passed to 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.

Parameters
protocol
The required protocol name
Returns
An array of structs representing possible parameters.
QStringList Tp::Service::ConnectionManagerAdaptor::ListProtocols ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void listProtocols(const Tp::Service::ConnectionManagerAdaptor::ListProtocolsContextPtr &context);

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

Get a list of protocol identifiers that are implemented by this connection manager.

Returns
The keys of the Protocols map.
QString Tp::Service::ConnectionManagerAdaptor::RequestConnection ( const QString &  protocol,
const QVariantMap &  parameters,
const QDBusMessage &  dbusMessage,
QDBusObjectPath &  objectPath 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestConnection(const QString& protocol, const QVariantMap& parameters, const Tp::Service::ConnectionManagerAdaptor::RequestConnectionContextPtr &context);

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

Request a ConnectionInterface object representing a given account on a given protocol with the given parameters. The method returns the bus name and the object path where the new Connection object can be found, which should have the status of Connection_Status_Disconnected, to allow signal handlers to be attached before connecting is started with the ConnectionInterface::Connect() method.

Most applications should not use this method: they should instead use the the AccountInterface::Connection property on an AccountInterface object obtained from the AccountManagerInterface . This method is used internally by the account manager to create connections when needed.

The parameters which must and may be provided in the parameters dictionary can be discovered with the GetParameters() method. These parameters, their types, and their default values may be cached in files so that all available connection managers do not need to be started to discover which protocols are available.

To request values for these parameters from the user, a client must have prior knowledge of the meaning of the parameter names, so the well-known names and types defined by the Connection_Parameter_Name type should be used where appropriate.

Connection manager authors SHOULD avoid introducing parameters whose default values would not be serializable in a .manager file.

The same serialization format is used in Mission Control to store accounts.

Every successful RequestConnection call will cause the emission of a NewConnection() signal for the same newly created connection. The requester can use the returned object path and service name independently of the emission of that signal. In that case this signal emission is most useful for, e.g. other processes that are monitoring the creation of new connections.

Parameters
protocol
The protocol identifier
parameters
A dictionary mapping parameter names to values of the appropriate 
type, as indicated by GetParameters and the well-known list of 
names and value types documented on the Connection_Parameter_Name 
type.
objectPathOutput parameter
The D-Bus object path to the Connection on this service
Returns
A D-Bus service name where the new Connection object can be found
void Tp::Service::ConnectionManagerAdaptor::NewConnection ( const QString &  busName,
const QDBusObjectPath &  objectPath,
const QString &  protocol 
)
signal

Represents the exported D-Bus signal NewConnection on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newConnection(const QString& busName, const QDBusObjectPath& objectPath, const QString& protocol);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
busName
The D-Bus service where the connection object can be found
objectPath
The object path of the Connection object on this service
protocol
The identifier for the protocol this connection uses


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01281.html0000644000175100017520000002221312530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeServerTLSConnectionInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeServerTLSConnectionInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelTypeServerTLSConnectionInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeServerTLSConnectionInterface
ChannelTypeServerTLSConnectionInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeServerTLSConnectionInterface
ChannelTypeServerTLSConnectionInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeServerTLSConnectionInterface
ChannelTypeServerTLSConnectionInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeServerTLSConnectionInterfaceexplicit
ChannelTypeServerTLSConnectionInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeServerTLSConnectionInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeServerTLSConnectionInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeServerTLSConnectionInterfaceinline
requestPropertyHostname() const Tp::Client::ChannelTypeServerTLSConnectionInterfaceinline
requestPropertyReferenceIdentities() const Tp::Client::ChannelTypeServerTLSConnectionInterfaceinline
requestPropertyServerCertificate() const Tp::Client::ChannelTypeServerTLSConnectionInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeServerTLSConnectionInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00065.html0000644000175100017520000010435012530426257021136 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClientHandler Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Public Member Functions | Protected Member Functions | List of all members
Tp::AbstractClientHandler Class Referenceabstract

The AbstractClientHandler class represents a Telepathy handler. More...

#include <TelepathyQt/AbstractClientHandler>

Inherits Tp::AbstractClient.

Inherited by Tp::SimpleStreamTubeHandler.

Classes

class  Capabilities
 The AbstractClientHandler::Capabilities class provides a wrapper around the capabilities of a handler. More...
 
class  HandlerInfo
 The AbstractClientHandler::HandlerInfo class provides a wrapper around the additional info about the channels passed to handleChannels(). More...
 

Public Member Functions

virtual ~AbstractClientHandler ()
 
ChannelClassSpecList handlerFilter () const
 
Capabilities handlerCapabilities () const
 
virtual bool bypassApproval () const =0
 
virtual void handleChannels (const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const QList< ChannelRequestPtr > &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo)=0
 
bool wantsRequestNotification () const
 
virtual void addRequest (const ChannelRequestPtr &request)
 
virtual void removeRequest (const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage)
 
- Public Member Functions inherited from Tp::AbstractClient
 AbstractClient ()
 
virtual ~AbstractClient ()
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 AbstractClientHandler (const ChannelClassSpecList &channelFilter, const Capabilities &capabilities=Capabilities(), bool wantsRequestNotification=false)
 

Detailed Description

The AbstractClientHandler class represents a Telepathy handler.

Handlers are the user interface for a channel. They turn an abstract channel into something the user wants to see, like a text message stream or an audio and/or video call.

For its entire lifetime, each channel on a connection known to the channel dispatcher is either being processed by the channel dispatcher, or being handled by precisely one handler.

Because each channel is only handled by one handler, handlers may perform actions that only make sense to do once, such as acknowledging text messages, transferring the file, etc.

When a new incoming channel is offered to approvers by the channel dispatcher, it also offers the approvers a list of all the running or activatable handlers whose filter indicates that they are able to handle the channel. The approvers can choose one of those channel handlers to handle the channel.

When a new outgoing channel appears, the channel dispatcher passes it to an appropriate channel handler automatically.

To become an handler one should inherit AbstractClientHandler and implement the pure virtual bypassApproval() and handleChannels() methods. After that the object representing the handler must be registered using ClientRegistrar::registerClient().

When new channels in which the approver has registered an interest are ready to be handled, the method handleChannels() is invoked.

Usage

Implementing a handler

*
* class MyHandler : public AbstractClientHandler
* {
* public:
* MyHandler(const ChannelClassSpecList &channelFilter);
* ~MyHandler() { }
*
* void bypassApproval() const;
*
* void handleChannels(const MethodInvocationContextPtr<> &context,
* const AccountPtr &account,
* const ConnectionPtr &connection,
* const QList<ChannelPtr> &channels,
* const QList<ChannelRequestPtr> &requestsSatisfied,
* const QDateTime &userActionTime,
* const AbstractClientHandler::HandlerInfo &handlerInfo);
* };
*
* MyHandler::MyHandler(const ChannelClassSpecList &channelFilter)
* : AbstractClientHandler(channelFilter)
* {
* }
*
* void MyHandler::bypassApproval() const
* {
* return false;
* }
*
* void MyHandler::handleChannels(const MethodInvocationContextPtr<> &context,
* const AccountPtr &account,
* const ConnectionPtr &connection,
* const QList<ChannelPtr> &channels,
* const QList<ChannelRequestPtr> &requestsSatisfied,
* const QDateTime &userActionTime,
* const AbstractClientHandler::HandlerInfo &handlerInfo)
* {
* // do something
*
* context->setFinished();
* }
*
*

Registering a handler

*
* AbstractClientPtr handler = AbstractClientPtr::dynamicCast(
* SharedPtr<MyHandler>(new MyHandler(
* ChannelClassSpecList() << ChannelClassSpec::textChat())));
* registrar->registerClient(handler, "myhandler");
*
*
See Also
AbstractClient

Constructor & Destructor Documentation

Tp::AbstractClientHandler::~AbstractClientHandler ( )
virtual

Class destructor.

Tp::AbstractClientHandler::AbstractClientHandler ( const ChannelClassSpecList channelFilter,
const Capabilities capabilities = Capabilities(),
bool  wantsRequestNotification = false 
)
protected

Construct a new AbstractClientHandler object.

Parameters
channelFilterA specification of the channels in which this observer is interested.
wantsRequestNotificationWhether this handler wants to receive channel requests notification via addRequest() and removeRequest().
capabilitiesThe set of additional capabilities supported by this handler.

Member Function Documentation

ChannelClassSpecList Tp::AbstractClientHandler::handlerFilter ( ) const

Return the property containing a specification of the channels that this channel handler can deal with. It will be offered to approvers as a potential channel handler for bundles that contain only suitable channels, or for suitable channels that must be handled separately.

This method works in exactly the same way as the AbstractClientObserver::observerChannelFilter() method. In particular, the returned value cannot change while the handler process continues to own the corresponding client bus name.

In the .client file, represented in the same way as observer channel filter, the group is TP_QT_IFACE_CLIENT_HANDLER suffixed by HandlerChannelFilter instead.

Returns
A specification of the channels that this channel handler can deal with as a list of ChannelClassSpec objects.
AbstractClientHandler::Capabilities Tp::AbstractClientHandler::handlerCapabilities ( ) const

Return the set of additional capabilities supported by this handler.

Returns
The capabilities as an AbstractClientHandler::Capabilities object.
bool Tp::AbstractClientHandler::bypassApproval ( ) const
pure virtual

Return whether channels destined for this handler are automatically handled, without invoking approvers.

Returns
true if automatically handled, false otherwise.

Implemented in Tp::SimpleStreamTubeHandler.

void Tp::AbstractClientHandler::handleChannels ( const MethodInvocationContextPtr<> &  context,
const AccountPtr &  account,
const ConnectionPtr &  connection,
const QList< ChannelPtr > &  channels,
const QList< ChannelRequestPtr > &  requestsSatisfied,
const QDateTime &  userActionTime,
const HandlerInfo handlerInfo 
)
pure virtual

Called by the channel dispatcher when this handler should handle these channels, or when this handler should present channels that it is already handling to the user (e.g. bring them into the foreground).

Clients are expected to know what channels they're already handling, and which channel object corresponds to which window or tab.

After handleChannels() replies successfully by calling MethodInvocationContext::setFinished(), the client process is considered to be responsible for the channel until it its unique name disappears from the bus.

If a process has multiple client bus names - some temporary and some long-lived - and drops one of the temporary bus names in order to reduce the set of channels that it will handle, any channels that it is already handling will remain unaffected.

The received context object should be stored until this method is finished processing and then MethodInvocationContext::setFinished() or MethodInvocationContext::setFinishedWithError() should be called on the received context object.

Specialized handlers must reimplement this method.

Parameters
contextA MethodInvocationContextPtr object that must be used to indicate whether this method finished processing.
accountThe account with which the channels are associated.
connectionThe connection with which the channels are associated.
channelsThe channels to be handled.
requestsSatisfiedThe requests satisfied by these channels.
userActionTimeThe time at which user action occurred, or 0 if this channel is to be handled for some reason not involving user action. Handlers should use this for focus-stealing prevention, if applicable.
handlerInfoAdditional information about these channels.

Implemented in Tp::SimpleStreamTubeHandler.

bool Tp::AbstractClientHandler::wantsRequestNotification ( ) const

Return whether this handler wants to receive notification of channel requests via addRequest() and removeRequest().

This property is set by the constructor and cannot be changed after that.

Returns
true if receiving channel requests notification is desired, false otherwise.
void Tp::AbstractClientHandler::addRequest ( const ChannelRequestPtr &  channelRequest)
virtual

Called by the channel dispatcher to indicate that channels have been requested, and that if the request is successful, they will probably be handled by this handler.

This allows the UI to start preparing to handle the channels in advance (e.g. render a window with an "in progress" message), improving perceived responsiveness.

If the request succeeds and is given to the expected handler, the requestsSatisfied parameter to handleChannels() can be used to match the channel to a previous addRequest() call.

This lets the UI direct the channels to the window that it already opened.

If the request fails, the expected handler is notified by the channel dispatcher calling its removeRequest() method.

This lets the UI close the window or display the error.

The channel dispatcher will attempt to ensure that handleChannels() is called on the same handler that received addRequest(). If that isn't possible, removeRequest() will be called on the handler that previously received addRequest(), with the special error TP_QT_ERROR_NOT_YOURS, which indicates that some other handler received the channel instead.

Expected handling is for the UI to close the window it previously opened.

Specialized handlers that want to be notified of newly requested channel should reimplement this method.

Parameters
channelRequestThe newly created channel request.
See Also
removeRequest()
void Tp::AbstractClientHandler::removeRequest ( const ChannelRequestPtr &  channelRequest,
const QString &  errorName,
const QString &  errorMessage 
)
virtual

Called by the ChannelDispatcher to indicate that a request previously passed to addRequest() has failed and should be disregarded.

Specialized handlers that want to be notified of removed channel requests should reimplement this method.

Parameters
channelRequestThe channel request that failed.
errorNameThe name of the D-Bus error with which the request failed. If this is TP_QT_ERROR_NOT_YOURS, this indicates that the request succeeded, but all the resulting channels were given to some other handler.
errorMessageAny message supplied with the D-Bus error.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01026.html0000644000175100017520000000707112530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Filter< T > Member List

This is the complete list of members for Tp::Filter< T >, including all inherited members.

Filter()Tp::Filter< T >inlineprotected
isValid() const Tp::Filter< T >inlinevirtual
matches(const SharedPtr< T > &t) const Tp::Filter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
~Filter()Tp::Filter< T >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00880.html0000644000175100017520000001757712530426257021161 0ustar00kaffeinekaffeine00000000000000 Client proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Client proxies

Classes

class  Tp::AbstractClient
 The AbstractClient class represents a Telepathy client. More...
 
class  Tp::AbstractClientObserver
 The AbstractClientObserver class represents a Telepathy observer. More...
 
class  Tp::AbstractClientObserver::ObserverInfo
 The AbstractClientObserver::ObserverInfo class provides a wrapper around the additional info about the channels passed to observeChannels(). More...
 
class  Tp::AbstractClientApprover
 The AbstractClientApprover class represents a Telepathy approver. More...
 
class  Tp::AbstractClientHandler
 The AbstractClientHandler class represents a Telepathy handler. More...
 
class  Tp::AbstractClientHandler::Capabilities
 The AbstractClientHandler::Capabilities class provides a wrapper around the capabilities of a handler. More...
 
class  Tp::AbstractClientHandler::HandlerInfo
 The AbstractClientHandler::HandlerInfo class provides a wrapper around the additional info about the channels passed to handleChannels(). More...
 
class  Tp::Client::ClientInterface
 
class  Tp::Client::ClientApproverInterface
 
class  Tp::Client::ClientHandlerInterface
 
class  Tp::Client::ClientInterfaceRequestsInterface
 
class  Tp::Client::ClientObserverInterface
 

Detailed Description

Proxy objects representing remote Telepathy Client objects (approvers, handlers and observers) and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01340.html0000644000175100017520000002610712530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceGroupAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceGroupAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AddMembers(const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
dbusConnection() const Tp::AbstractAdaptor
GetAllMembers(const QDBusMessage &dbusMessage, Tp::UIntList &localPending, Tp::UIntList &remotePending)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetGroupFlags(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetHandleOwners(const Tp::UIntList &handles, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetLocalPendingMembers(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetLocalPendingMembersWithInfo(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetMembers(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetRemotePendingMembers(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GetSelfHandle(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
GroupFlags() const Tp::Service::ChannelInterfaceGroupAdaptor
GroupFlagsChanged(uint added, uint removed)Tp::Service::ChannelInterfaceGroupAdaptorsignal
HandleOwners() const Tp::Service::ChannelInterfaceGroupAdaptor
HandleOwnersChanged(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed)Tp::Service::ChannelInterfaceGroupAdaptorsignal
HandleOwnersChangedDetailed(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers)Tp::Service::ChannelInterfaceGroupAdaptorsignal
LocalPendingMembers() const Tp::Service::ChannelInterfaceGroupAdaptor
MemberIdentifiers() const Tp::Service::ChannelInterfaceGroupAdaptor
Members() const Tp::Service::ChannelInterfaceGroupAdaptor
MembersChanged(const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason)Tp::Service::ChannelInterfaceGroupAdaptorsignal
MembersChangedDetailed(const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details)Tp::Service::ChannelInterfaceGroupAdaptorsignal
RemotePendingMembers() const Tp::Service::ChannelInterfaceGroupAdaptor
RemoveMembers(const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
RemoveMembersWithReason(const Tp::UIntList &contacts, const QString &message, uint reason, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceGroupAdaptorslot
SelfContactChanged(uint selfHandle, const QString &selfID)Tp::Service::ChannelInterfaceGroupAdaptorsignal
SelfHandle() const Tp::Service::ChannelInterfaceGroupAdaptor
SelfHandleChanged(uint selfHandle)Tp::Service::ChannelInterfaceGroupAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00124.html0000644000175100017520000006400512530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionSimplePresenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseConnectionSimplePresenceInterface Class Reference

Base class for implementations of Connection.Interface.SimplePresence. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback3< uint, const
QString &, const QString
&, DBusError * > 
SetPresenceCallback
 

Public Member Functions

virtual ~BaseConnectionSimplePresenceInterface ()
 
QVariantMap immutableProperties () const
 
Tp::SimpleStatusSpecMap statuses () const
 
void setStatuses (const Tp::SimpleStatusSpecMap &statuses)
 
uint maximumStatusMessageLength () const
 
void setMaximumStatusMessageLength (uint maximumStatusMessageLength)
 
void setSetPresenceCallback (const SetPresenceCallback &cb)
 
void setPresences (const Tp::SimpleContactPresences &presences)
 
Tp::SimpleContactPresences getPresences (const Tp::UIntList &contacts)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionSimplePresenceInterfacePtr 
create ()
 
template<typename BaseConnectionSimplePresenceInterfaceSubclass >
static SharedPtr
< BaseConnectionSimplePresenceInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionSimplePresenceInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.SimplePresence.

Member Typedef Documentation

typedef Callback3<uint, const QString &, const QString &, DBusError*> Tp::BaseConnectionSimplePresenceInterface::SetPresenceCallback

Constructor & Destructor Documentation

Tp::BaseConnectionSimplePresenceInterface::~BaseConnectionSimplePresenceInterface ( )
virtual

Class destructor.

Tp::BaseConnectionSimplePresenceInterface::BaseConnectionSimplePresenceInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionSimplePresenceInterfacePtr Tp::BaseConnectionSimplePresenceInterface::create ( )
inlinestatic
template<typename BaseConnectionSimplePresenceInterfaceSubclass >
static SharedPtr<BaseConnectionSimplePresenceInterfaceSubclass> Tp::BaseConnectionSimplePresenceInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionSimplePresenceInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::SimpleStatusSpecMap Tp::BaseConnectionSimplePresenceInterface::statuses ( ) const
void Tp::BaseConnectionSimplePresenceInterface::setStatuses ( const Tp::SimpleStatusSpecMap statuses)
uint Tp::BaseConnectionSimplePresenceInterface::maximumStatusMessageLength ( ) const
void Tp::BaseConnectionSimplePresenceInterface::setMaximumStatusMessageLength ( uint  maximumStatusMessageLength)
void Tp::BaseConnectionSimplePresenceInterface::setSetPresenceCallback ( const SetPresenceCallback cb)
void Tp::BaseConnectionSimplePresenceInterface::setPresences ( const Tp::SimpleContactPresences presences)
SimpleContactPresences Tp::BaseConnectionSimplePresenceInterface::getPresences ( const Tp::UIntList contacts)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01095.html0000644000175100017520000004276412530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReferencedHandles Member List

This is the complete list of members for Tp::ReferencedHandles, including all inherited members.

append(const ReferencedHandles &another)Tp::ReferencedHandlesinline
at(int i) const Tp::ReferencedHandles
back() const Tp::ReferencedHandlesinline
begin() const Tp::ReferencedHandles
clear()Tp::ReferencedHandles
connection() const Tp::ReferencedHandles
const_iterator typedefTp::ReferencedHandles
const_pointer typedefTp::ReferencedHandles
const_reference typedefTp::ReferencedHandles
constBegin() const Tp::ReferencedHandlesinline
constEnd() const Tp::ReferencedHandlesinline
ConstIterator typedefTp::ReferencedHandles
contains(uint handle) const Tp::ReferencedHandles
count(uint handle) const Tp::ReferencedHandles
count() const Tp::ReferencedHandlesinline
difference_type typedefTp::ReferencedHandles
empty() const Tp::ReferencedHandlesinline
end() const Tp::ReferencedHandles
endsWith(uint handle) const Tp::ReferencedHandlesinline
first() const Tp::ReferencedHandlesinline
front() const Tp::ReferencedHandlesinline
handleType() const Tp::ReferencedHandles
indexOf(uint handle, int from=0) const Tp::ReferencedHandles
isEmpty() const Tp::ReferencedHandles
last() const Tp::ReferencedHandlesinline
lastIndexOf(uint handle, int from=-1) const Tp::ReferencedHandles
length() const Tp::ReferencedHandlesinline
mid(int pos, int length=-1) const Tp::ReferencedHandles
move(int from, int to)Tp::ReferencedHandles
operator!=(const ReferencedHandles &another) const Tp::ReferencedHandlesinline
operator!=(const UIntList &another) const Tp::ReferencedHandlesinline
operator+(const ReferencedHandles &another) const Tp::ReferencedHandles
operator+=(const ReferencedHandles &another)Tp::ReferencedHandlesinline
operator<<(const ReferencedHandles &another)Tp::ReferencedHandlesinline
operator=(const ReferencedHandles &another)Tp::ReferencedHandles
operator==(const ReferencedHandles &another) const Tp::ReferencedHandles
operator==(const UIntList &list) const Tp::ReferencedHandles
operator[](int i) const Tp::ReferencedHandlesinline
pointer typedefTp::ReferencedHandles
pop_back()Tp::ReferencedHandlesinline
pop_front()Tp::ReferencedHandlesinline
reference typedefTp::ReferencedHandles
ReferencedHandles()Tp::ReferencedHandles
ReferencedHandles(const ReferencedHandles &other)Tp::ReferencedHandles
removeAll(uint handle)Tp::ReferencedHandles
removeAt(int i)Tp::ReferencedHandles
removeFirst()Tp::ReferencedHandlesinline
removeLast()Tp::ReferencedHandlesinline
removeOne(uint handle)Tp::ReferencedHandles
size() const Tp::ReferencedHandles
size_type typedefTp::ReferencedHandles
startsWith(uint handle) const Tp::ReferencedHandlesinline
swap(int i, int j)Tp::ReferencedHandles
takeAt(int i)Tp::ReferencedHandles
takeFirst()Tp::ReferencedHandlesinline
takeLast()Tp::ReferencedHandlesinline
toList() const Tp::ReferencedHandles
toSet() const Tp::ReferencedHandlesinline
toStdList() const Tp::ReferencedHandlesinline
toVector() const Tp::ReferencedHandlesinline
value(int i, uint defaultValue=0) const Tp::ReferencedHandles
value_type typedefTp::ReferencedHandles
~ReferencedHandles()Tp::ReferencedHandles


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00439.html0000644000175100017520000003312312530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::PendingDBusTubeConnection Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingDBusTubeConnection Class Reference

#include <TelepathyQt/PendingDBusTubeConnection>

Inherits Tp::PendingOperation.

Public Member Functions

virtual ~PendingDBusTubeConnection ()
 
QString address () const
 
bool allowsOtherUsers () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

A pending operation for accepting or offering a DBus tube

This class represents an asynchronous operation for accepting or offering a DBus tube. Upon completion, the address of the opened tube is returned as a QString.

Constructor & Destructor Documentation

Tp::PendingDBusTubeConnection::~PendingDBusTubeConnection ( )
virtual

Class destructor

Member Function Documentation

QString Tp::PendingDBusTubeConnection::address ( ) const

When the operation has been completed successfully, returns the address of the opened DBus connection.

Please note this function will return a meaningful value only if the operation has already been completed successfully: in case of failure or non-completion, an empty QString will be returned.

Note
If you plan to use QtDBus for the DBus connection, please note you should always use QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use of DBus Tubes through QtDBus.
Returns
The address of the opened DBus connection.
bool Tp::PendingDBusTubeConnection::allowsOtherUsers ( ) const

Return whether this tube allows other users more than the current one to connect to the private bus created by the tube.

Note that even if the tube was accepted or offered specifying not to allow other users, this method might still return true if one of the ends did not support such a restriction.

In fact, if one of the ends does not support current user restriction, the tube will be offered regardless, falling back to allowing any connection. If your application requires strictly this condition to be enforced, you should check DBusTubeChannel::supportsRestrictingToCurrentUser before offering the tube, and take action from there.

This function, however, is guaranteed to return the same value of the given allowOtherUsers parameter when accepting or offering a tube if supportsRestrictingToCurrentUser is true.

Returns
true if any user is allow to connect, false otherwise.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00193.html0000644000175100017520000006763112530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceConferenceAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | List of all members
Tp::Service::ChannelInterfaceConferenceAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Signals

void ChannelMerged (const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties)
 
void ChannelRemoved (const QDBusObjectPath &channel, const QVariantMap &details)
 

Public Member Functions

Tp::ObjectPathList Channels () const
 
Tp::ObjectPathList InitialChannels () const
 
Tp::UIntList InitialInviteeHandles () const
 
QStringList InitialInviteeIDs () const
 
QString InvitationMessage () const
 
Tp::ChannelOriginatorMap OriginalChannels () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ObjectPathList Tp::Service::ChannelInterfaceConferenceAdaptor::Channels ( ) const

Return the value of the exported D-Bus object property Channels of type Tp::ObjectPathList.

Adaptees should export this property as a Qt property named 'channels' with type Tp::ObjectPathList.

The individual ChannelInterface s that are continued by this conference, which have the same ChannelInterface::ChannelType as this one, but with ChannelInterface::TargetHandleType = CONTACT.

This property MUST NOT be requestable; instead, the InitialChannels property may be specified when requesting a channel.

This is consistent with requesting InitialInviteeHandles and InitialInviteeIDs , rather than requesting ChannelInterfaceGroupInterface::Members and some hypothetical ID version of that property.

Change notification is via the ChannelMerged() and ChannelRemoved() signals.

Returns
The value of exported property Channels.
Tp::ObjectPathList Tp::Service::ChannelInterfaceConferenceAdaptor::InitialChannels ( ) const

Return the value of the exported D-Bus object property InitialChannels of type Tp::ObjectPathList.

Adaptees should export this property as a Qt property named 'initialChannels' with type Tp::ObjectPathList.

The initial value of Channels .

This property SHOULD be requestable. Omitting it from a request is equivalent to providing it with an empty list as value. Requests where its value has at least two channel paths SHOULD be expected to succeed on any implementation of this interface. If InitialInviteeHandles and InitialInviteeIDs are Allowed_Properties in ConnectionInterfaceRequestsInterface::RequestableChannelClasses , then requests with zero or one channel paths SHOULD also succeed; otherwise, clients SHOULD NOT make requests with zero or one paths for this property.

In GSM, a pair of calls can be merged into a conference, but you can't start a conference call from zero or one existing calls. In XMPP and MSN, you can create a new chatroom, or upgrade one 1-1 channel into a chatroom; however, on these protocols, it is also possible to fake GSM-style merging by upgrading the first channel, then inviting the targets of all the other channels into it.

If possible, the Channels ' states SHOULD NOT be altered by merging them into a conference. However, depending on the protocol, the Channels MAY be placed in a "frozen" state by placing them in this property's value or by calling org.freedesktop.Telepathy.Channel.Interface.MergeableConference.DRAFT.Merge on them.

In Jingle, nothing special will happen to merged calls. UIs MAY automatically place calls on hold before merging them, if that is the desired behaviour; this SHOULD always work. Not doing an implicit hold/unhold seems to preserve least-astonishment.

In GSM, the calls that are merged go into a state similar to Hold, but they cannot be unheld, only split from the conference call using org.freedesktop.Telepathy.Channel.Interface.Splittable.DRAFT.Split .

Depending on the protocol, it might be signalled to remote users that this channel is a continuation of all the requested channels, or that it is only a continuation of the first channel in the list.

In MSN, the conference steals the underlying switchboard (protocol construct) from one of its component channels, so the conference appears to remote users to be a continuation of that channel and no other. The connection manager has to make some arbitrary choice, so we arbitrarily mandate that it SHOULD choose the first channel in the list as the one to continue.

Returns
The value of exported property InitialChannels.
Tp::UIntList Tp::Service::ChannelInterfaceConferenceAdaptor::InitialInviteeHandles ( ) const

Return the value of the exported D-Bus object property InitialInviteeHandles of type Tp::UIntList.

Adaptees should export this property as a Qt property named 'initialInviteeHandles' with type Tp::UIntList.

A list of additional contacts invited to this conference when it was created.

If it is possible to invite new contacts when creating a conference (as opposed to merging several channels into one new conference channel), this property SHOULD be requestable, and appear in the allowed properties in ConnectionInterfaceRequestsInterface::RequestableChannelClasses . Otherwise, this property SHOULD NOT be requestable, and its value SHOULD always be the empty list.

On GSM you have to place a 1-1 call before you can merge it into a conference; on the other hand, you can invite new contacts to XMPP Muji calls and XMPP/MSN/Skype ad-hoc chat rooms without starting a 1-1 channel with them first.

If included in a request, the given contacts are automatically invited into the new channel, as if they had been added with ChannelInterfaceGroupInterface::AddMembers() (InitialInviteeHandles, InvitationMessage ) immediately after the channel was created.

This is a simple convenience API for the common case that a UI upgrades a 1-1 chat to a multi-user chat solely in order to invite someone else to participate.

If the local user was not the initiator of this channel, the ChannelInterfaceGroupInterface::SelfHandle SHOULD appear in the value of this property, together with any other contacts invited at the same time (if that information is known).

InitialInviteeHandles, InitialInviteeIDs and InitialChannels MAY be combined in a single request.

For example, if you have a 1-1 channel C1 with Rob, and you want to invite Sjoerd to join the discussion, you can do so by requesting a channel with InitialChannels=[C1] and InitialInviteeHandles=[sjoerd], or InitialChannels=[C1] and InitialInviteeIDs=["sjoerd@example.com"].

If a request includes some combination of InitialInviteeHandles, InitialInviteeIDs and InitialChannels, then the value of InitialInviteeHandles on the resulting channel SHOULD be the union of the handles from InitialInviteeHandles, the handles corresponding to the InitialInviteeIDs, and the target handles of the InitialChannels, with any duplicate handles removed. Because this property is immutable, its value SHOULD be computed before the channel is announced via the NewChannels signal.

This simplifies identification of new channels in clients - they only have to look at one of the properties, not both. For example, after either of the requests mentioned above, the NewChannels signal would announce the channel with InitialChannels=[C1], InitialInviteeHandles=[rob, sjoerd], and InitialInviteeIDs=["rob@example.net", "sjoerd.example.com"].

Returns
The value of exported property InitialInviteeHandles.
QStringList Tp::Service::ChannelInterfaceConferenceAdaptor::InitialInviteeIDs ( ) const

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

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

A list of additional contacts invited to this conference when it was created.

This property SHOULD be requestable if and only if InitialInviteeHandles is requestable. Its semantics are the same, except that it takes a list of the string representations of contact handles; invitations are sent to any contact present in either or both of these properties.

When a channel is created, the values of InitialInviteeHandles and InitialInviteeIDs MUST correspond to each other. In particular, this means that the value of InitialInviteeIDs will include the TargetID of each channel in InitialChannels, and the ID corresponding to each handle in InitialInviteeHandles.

Returns
The value of exported property InitialInviteeIDs.
QString Tp::Service::ChannelInterfaceConferenceAdaptor::InvitationMessage ( ) const

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

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

The message that was sent to the InitialInviteeHandles when they were invited.

This property SHOULD be requestable, and appear in the allowed properties in ConnectionInterfaceRequestsInterface::RequestableChannelClasses , in protocols where invitations can have an accompanying text message.

This allows invitations with a message to be sent when using InitialInviteeHandles or InitialInviteeIDs .

If the local user was not the initiator of this channel, the message with which they were invited (if any) SHOULD appear in the value of this property.

Returns
The value of exported property InvitationMessage.
Tp::ChannelOriginatorMap Tp::Service::ChannelInterfaceConferenceAdaptor::OriginalChannels ( ) const

Return the value of the exported D-Bus object property OriginalChannels of type Tp::ChannelOriginatorMap.

Adaptees should export this property as a Qt property named 'originalChannels' with type Tp::ChannelOriginatorMap.

On GSM conference calls, it is possible to have the same phone number in a conference twice; for instance, it could be the number of a corporate switchboard. This is represented using channel-specific handles; whether or not a channel uses channel-specific handles is reported in ChannelInterfaceGroupInterface::GroupFlags . The ChannelInterfaceGroupInterface::HandleOwners property specifies the mapping from opaque channel-specific handles to actual numbers; this property specifies the original 1-1 channel corresponding to each channel-specific handle in the conference.

In protocols where this situation cannot arise, such as XMPP, this property MAY remain empty.

For example, consider this situation:

  1. Place a call (with path /call/to/simon) to the contact +441234567890 (which is assigned the handle h, say), and ask to be put through to Simon McVittie;
  2. Put that call on hold;
  3. Place another call (with path /call/to/jonny) to +441234567890, and ask to be put through to Jonny Lamb;
  4. Request a new channel with InitialChannels : ['/call/to/simon', '/call/to/jonny'].

The new channel will have the following properties, for some handles s and j:

{
... ChannelInterfaceGroupInterface::GroupFlags : Channel_Specific_Handles | (other flags),
... ChannelInterfaceGroupInterface::Members : [self_handle, s, j],
... ChannelInterfaceGroupInterface::HandleOwners : { s: h, j: h },
... InitialChannels : ['/call/to/simon', '/call/to/jonny'],
... Channels : ['/call/to/simon', '/call/to/jonny'],
... OriginalChannels : { s: '/call/to/simon', j: '/call/to/jonny' },
# ...standard properties like ChannelType: Group elided...
}

Change notification is via the ChannelMerged() and ChannelRemoved() signals: if Channel_Specific_Handle in the former is non-zero, this property SHOULD be updated to map that handle to the merged channel's path.

Returns
The value of exported property OriginalChannels.
void Tp::Service::ChannelInterfaceConferenceAdaptor::ChannelMerged ( const QDBusObjectPath &  channel,
uint  channelSpecificHandle,
const QVariantMap &  properties 
)
signal

Represents the exported D-Bus signal ChannelMerged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void channelMerged(const QDBusObjectPath& channel, uint channelSpecificHandle, const QVariantMap& properties);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
channel
The channel that was added to Channels.
channelSpecificHandle
A new channel-specific handle for the TargetHandle of Channel, as 
will appear in OriginalChannels, or 0 if a global handle is used 
for Channel&apos;s TargetHandle on the Group interface of this 
channel.
properties
Channel&apos;s immutable properties.
void Tp::Service::ChannelInterfaceConferenceAdaptor::ChannelRemoved ( const QDBusObjectPath &  channel,
const QVariantMap &  details 
)
signal

Represents the exported D-Bus signal ChannelRemoved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void channelRemoved(const QDBusObjectPath& channel, const QVariantMap& details);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
channel
The channel that was removed from Channels.
details Additional information about the removal, which may include the same well-known keys as the Details argument of \\\ ChannelInterfaceGroupInterface::MembersChangedDetailed() \\htmlonly , with the same semantics.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01154.html0000644000175100017520000000530012530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSSRCsMap Member List

This is the complete list of members for Tp::ContactSSRCsMap, including all inherited members.

ContactSSRCsMap()Tp::ContactSSRCsMapinline
ContactSSRCsMap(const QMap< uint, UIntList > &a)Tp::ContactSSRCsMapinline
operator=(const QMap< uint, UIntList > &a)Tp::ContactSSRCsMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00649_source.html0000644000175100017520000006335412530426257022536 0ustar00kaffeinekaffeine00000000000000 cli-tls-certificate.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-tls-certificate.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Authentication.TLSCertificate");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
103  explicit AuthenticationTLSCertificateInterface(const Tp::AbstractInterface& mainInterface);
104 
112  AuthenticationTLSCertificateInterface(const Tp::AbstractInterface& mainInterface, QObject* parent);
113 
125  {
126  return internalRequestProperty(QLatin1String("State"));
127  }
128 
150  {
151  return internalRequestProperty(QLatin1String("Rejections"));
152  }
153 
165  {
166  return internalRequestProperty(QLatin1String("CertificateType"));
167  }
168 
185  {
186  return internalRequestProperty(QLatin1String("CertificateChainData"));
187  }
188 
196  {
197  return internalRequestAllProperties();
198  }
199 
200 public Q_SLOTS:
211  inline QDBusPendingReply<> Accept(int timeout = -1)
212  {
213  if (!invalidationReason().isEmpty()) {
214  return QDBusPendingReply<>(QDBusMessage::createError(
215  invalidationReason(),
216  invalidationMessage()
217  ));
218  }
219 
220  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
221  this->staticInterfaceName(), QLatin1String("Accept"));
222  return this->connection().asyncCall(callMessage, timeout);
223  }
224 
242  inline QDBusPendingReply<> Reject(const Tp::TLSCertificateRejectionList& rejections, int timeout = -1)
243  {
244  if (!invalidationReason().isEmpty()) {
245  return QDBusPendingReply<>(QDBusMessage::createError(
246  invalidationReason(),
247  invalidationMessage()
248  ));
249  }
250 
251  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
252  this->staticInterfaceName(), QLatin1String("Reject"));
253  callMessage << QVariant::fromValue(rejections);
254  return this->connection().asyncCall(callMessage, timeout);
255  }
256 
257 Q_SIGNALS:
263  void Accepted();
264 
274  void Rejected(const Tp::TLSCertificateRejectionList& rejections);
275 
276 protected:
277  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
278 };
279 }
280 }
Tp::PendingVariant * requestPropertyCertificateType() const
Definition: cli-tls-certificate.h:164
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertyState() const
Definition: cli-tls-certificate.h:124
Definition: cli-tls-certificate.h:44
Tp::PendingVariant * requestPropertyCertificateChainData() const
Definition: cli-tls-certificate.h:184
static QLatin1String staticInterfaceName()
Definition: cli-tls-certificate.h:55
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-tls-certificate.h:195
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
QDBusPendingReply Reject(const Tp::TLSCertificateRejectionList &rejections, int timeout=-1)
Definition: cli-tls-certificate.h:242
QList< TLSCertificateRejection > TLSCertificateRejectionList
Definition: build/TelepathyQt/_gen/types.h:3203
Tp::PendingVariant * requestPropertyRejections() const
Definition: cli-tls-certificate.h:149
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
QDBusPendingReply Accept(int timeout=-1)
Definition: cli-tls-certificate.h:211


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00252.html0000644000175100017520000012456612530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeTextInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelTypeTextInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply AcknowledgePendingMessages (const Tp::UIntList &IDs, int timeout=-1)
 
QDBusPendingReply< Tp::UIntListGetMessageTypes (int timeout=-1)
 
QDBusPendingReply
< Tp::PendingTextMessageList
ListPendingMessages (bool clear, int timeout=-1)
 
QDBusPendingReply Send (uint type, const QString &text, int timeout=-1)
 

Signals

void LostMessage ()
 
void Received (uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text)
 
void SendError (uint error, uint timestamp, uint type, const QString &text)
 
void Sent (uint timestamp, uint type, const QString &text)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeTextInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeTextInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeTextInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeTextInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeTextInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.Text".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeTextInterface::ChannelTypeTextInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeTextInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeTextInterface::ChannelTypeTextInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeTextInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeTextInterface::ChannelTypeTextInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeTextInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeTextInterface::ChannelTypeTextInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeTextInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeTextInterface::ChannelTypeTextInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeTextInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeTextInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.Text", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelTypeTextInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelTypeTextInterface::AcknowledgePendingMessages ( const Tp::UIntList IDs,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AcknowledgePendingMessages on the remote object.

Inform the channel that you have handled messages by displaying them to the user (or equivalent), so they can be removed from the pending queue.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
IDs
The IDs of the messages to acknowledge
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::UIntList> Tp::Client::ChannelTypeTextInterface::GetMessageTypes ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetMessageTypes on the remote object.

Return an array indicating which types of message may be sent on this channel.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of integer message types (ChannelTextMessageType)
QDBusPendingReply<Tp::PendingTextMessageList> Tp::Client::ChannelTypeTextInterface::ListPendingMessages ( bool  clear,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ListPendingMessages on the remote object.

List the messages currently in the pending queue, and optionally remove then all.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
clear
If true, behave as if AcknowledgePendingMessages had also been 
called.
timeoutThe timeout in milliseconds.
Returns
An array of structs representing the pending queue. Each contains:
  • a numeric identifier
  • a Unix timestamp indicating when the message was received
  • the contact handle for the contact who sent the message
  • the message type, taken from ChannelTextMessageType
  • the bitwise-OR of the message flags from ChannelTextMessageFlags
  • the text of the message
QDBusPendingReply Tp::Client::ChannelTypeTextInterface::Send ( uint  type,
const QString &  text,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Send on the remote object.

Request that a message be sent on this channel. When the message has been submitted for delivery, this method will return and the Sent() signal will be emitted. If the message cannot be submitted for delivery, the method returns an error and no signal is emitted.

This method SHOULD return before the Sent signal is emitted.

When a Text channel implements the ChannelInterfaceMessagesInterface interface, that "SHOULD" becomes a "MUST".

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
type
An integer indicating the type of the message
text
The message to send
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelTypeTextInterface::LostMessage ( )
signal

Represents the signal LostMessage on the remote object.

This signal is emitted to indicate that an incoming message was not able to be stored and forwarded by the connection manager due to lack of memory.

void Tp::Client::ChannelTypeTextInterface::Received ( uint  ID,
uint  timestamp,
uint  sender,
uint  type,
uint  flags,
const QString &  text 
)
signal

Represents the signal Received on the remote object.

Signals that a message with the given id, timestamp, sender, type and text has been received on this channel. Applications that catch this signal and reliably inform the user of the message should acknowledge that they have dealt with the message with the AcknowledgePendingMessages method.

Parameters
ID
A numeric identifier for acknowledging the message
timestamp
A Unix timestamp indicating when the message was received
sender
The handle of the contact who sent the message
type
The type of the message (normal, action, notice, etc.)
flags
A bitwise OR of the message flags
text
The text of the message
void Tp::Client::ChannelTypeTextInterface::SendError ( uint  error,
uint  timestamp,
uint  type,
const QString &  text 
)
signal

Represents the signal SendError on the remote object.

Signals that an outgoing message has failed to send. The error will be one of the values from ChannelTextSendError.

This signal should only be emitted for messages for which Sent() has already been emitted and Send() has already returned success.

Parameters
error
The error that occurred
timestamp
The Unix timestamp indicating when the message was sent
type
The message type
text
The text of the message
void Tp::Client::ChannelTypeTextInterface::Sent ( uint  timestamp,
uint  type,
const QString &  text 
)
signal

Represents the signal Sent on the remote object.

Signals that a message has been submitted for sending.

Parameters
timestamp
Unix timestamp indicating when the message was sent
type
The message type (normal, action, notice, etc) from 
ChannelTextMessageType
text
The text of the message. If the message was, or will be, altered 
during transmission, this argument SHOULD reflect what other 
contacts will receive rather than being a copy of the argument to 
Send.
void Tp::Client::ChannelTypeTextInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01213.html0000644000175100017520000000532012530426260021121 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactInfoMap Member List

This is the complete list of members for Tp::ContactInfoMap, including all inherited members.

ContactInfoMap()Tp::ContactInfoMapinline
ContactInfoMap(const QMap< uint, ContactInfoFieldList > &a)Tp::ContactInfoMapinline
operator=(const QMap< uint, ContactInfoFieldList > &a)Tp::ContactInfoMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00645_source.html0000644000175100017520000020350712530426257022526 0ustar00kaffeinekaffeine00000000000000 cli-media-stream-handler.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-media-stream-handler.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Media.StreamHandler");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
112  {
113  return internalRequestProperty(QLatin1String("STUNServers"));
114  }
115 
128  {
129  return internalRequestProperty(QLatin1String("CreatedLocally"));
130  }
131 
174  {
175  return internalRequestProperty(QLatin1String("NATTraversal"));
176  }
177 
259  {
260  return internalRequestProperty(QLatin1String("RelayInfo"));
261  }
262 
270  {
271  return internalRequestAllProperties();
272  }
273 
274 public Q_SLOTS:
285  inline QDBusPendingReply<> CodecChoice(uint codecID, int timeout = -1)
286  {
287  if (!invalidationReason().isEmpty()) {
288  return QDBusPendingReply<>(QDBusMessage::createError(
289  invalidationReason(),
290  invalidationMessage()
291  ));
292  }
293 
294  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
295  this->staticInterfaceName(), QLatin1String("CodecChoice"));
296  callMessage << QVariant::fromValue(codecID);
297  return this->connection().asyncCall(callMessage, timeout);
298  }
299 
320  inline QDBusPendingReply<> Error(uint errorCode, const QString& message, int timeout = -1)
321  {
322  if (!invalidationReason().isEmpty()) {
323  return QDBusPendingReply<>(QDBusMessage::createError(
324  invalidationReason(),
325  invalidationMessage()
326  ));
327  }
328 
329  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
330  this->staticInterfaceName(), QLatin1String("Error"));
331  callMessage << QVariant::fromValue(errorCode) << QVariant::fromValue(message);
332  return this->connection().asyncCall(callMessage, timeout);
333  }
334 
346  inline QDBusPendingReply<> NativeCandidatesPrepared(int timeout = -1)
347  {
348  if (!invalidationReason().isEmpty()) {
349  return QDBusPendingReply<>(QDBusMessage::createError(
350  invalidationReason(),
351  invalidationMessage()
352  ));
353  }
354 
355  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
356  this->staticInterfaceName(), QLatin1String("NativeCandidatesPrepared"));
357  return this->connection().asyncCall(callMessage, timeout);
358  }
359 
371  inline QDBusPendingReply<> NewActiveCandidatePair(const QString& nativeCandidateID, const QString& remoteCandidateID, int timeout = -1)
372  {
373  if (!invalidationReason().isEmpty()) {
374  return QDBusPendingReply<>(QDBusMessage::createError(
375  invalidationReason(),
376  invalidationMessage()
377  ));
378  }
379 
380  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
381  this->staticInterfaceName(), QLatin1String("NewActiveCandidatePair"));
382  callMessage << QVariant::fromValue(nativeCandidateID) << QVariant::fromValue(remoteCandidateID);
383  return this->connection().asyncCall(callMessage, timeout);
384  }
385 
413  inline QDBusPendingReply<> NewActiveTransportPair(const QString& nativeCandidateID, const Tp::MediaStreamHandlerTransport& nativeTransport, const QString& remoteCandidateID, const Tp::MediaStreamHandlerTransport& remoteTransport, int timeout = -1)
414  {
415  if (!invalidationReason().isEmpty()) {
416  return QDBusPendingReply<>(QDBusMessage::createError(
417  invalidationReason(),
418  invalidationMessage()
419  ));
420  }
421 
422  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
423  this->staticInterfaceName(), QLatin1String("NewActiveTransportPair"));
424  callMessage << QVariant::fromValue(nativeCandidateID) << QVariant::fromValue(nativeTransport) << QVariant::fromValue(remoteCandidateID) << QVariant::fromValue(remoteTransport);
425  return this->connection().asyncCall(callMessage, timeout);
426  }
427 
462  inline QDBusPendingReply<> NewNativeCandidate(const QString& candidateID, const Tp::MediaStreamHandlerTransportList& transports, int timeout = -1)
463  {
464  if (!invalidationReason().isEmpty()) {
465  return QDBusPendingReply<>(QDBusMessage::createError(
466  invalidationReason(),
467  invalidationMessage()
468  ));
469  }
470 
471  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
472  this->staticInterfaceName(), QLatin1String("NewNativeCandidate"));
473  callMessage << QVariant::fromValue(candidateID) << QVariant::fromValue(transports);
474  return this->connection().asyncCall(callMessage, timeout);
475  }
476 
492  inline QDBusPendingReply<> Ready(const Tp::MediaStreamHandlerCodecList& codecs, int timeout = -1)
493  {
494  if (!invalidationReason().isEmpty()) {
495  return QDBusPendingReply<>(QDBusMessage::createError(
496  invalidationReason(),
497  invalidationMessage()
498  ));
499  }
500 
501  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
502  this->staticInterfaceName(), QLatin1String("Ready"));
503  callMessage << QVariant::fromValue(codecs);
504  return this->connection().asyncCall(callMessage, timeout);
505  }
506 
536  inline QDBusPendingReply<> SetLocalCodecs(const Tp::MediaStreamHandlerCodecList& codecs, int timeout = -1)
537  {
538  if (!invalidationReason().isEmpty()) {
539  return QDBusPendingReply<>(QDBusMessage::createError(
540  invalidationReason(),
541  invalidationMessage()
542  ));
543  }
544 
545  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
546  this->staticInterfaceName(), QLatin1String("SetLocalCodecs"));
547  callMessage << QVariant::fromValue(codecs);
548  return this->connection().asyncCall(callMessage, timeout);
549  }
550 
562  inline QDBusPendingReply<> StreamState(uint state, int timeout = -1)
563  {
564  if (!invalidationReason().isEmpty()) {
565  return QDBusPendingReply<>(QDBusMessage::createError(
566  invalidationReason(),
567  invalidationMessage()
568  ));
569  }
570 
571  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
572  this->staticInterfaceName(), QLatin1String("StreamState"));
573  callMessage << QVariant::fromValue(state);
574  return this->connection().asyncCall(callMessage, timeout);
575  }
576 
595  inline QDBusPendingReply<> SupportedCodecs(const Tp::MediaStreamHandlerCodecList& codecs, int timeout = -1)
596  {
597  if (!invalidationReason().isEmpty()) {
598  return QDBusPendingReply<>(QDBusMessage::createError(
599  invalidationReason(),
600  invalidationMessage()
601  ));
602  }
603 
604  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
605  this->staticInterfaceName(), QLatin1String("SupportedCodecs"));
606  callMessage << QVariant::fromValue(codecs);
607  return this->connection().asyncCall(callMessage, timeout);
608  }
609 
628  inline QDBusPendingReply<> CodecsUpdated(const Tp::MediaStreamHandlerCodecList& codecs, int timeout = -1)
629  {
630  if (!invalidationReason().isEmpty()) {
631  return QDBusPendingReply<>(QDBusMessage::createError(
632  invalidationReason(),
633  invalidationMessage()
634  ));
635  }
636 
637  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
638  this->staticInterfaceName(), QLatin1String("CodecsUpdated"));
639  callMessage << QVariant::fromValue(codecs);
640  return this->connection().asyncCall(callMessage, timeout);
641  }
642 
658  inline QDBusPendingReply<> HoldState(bool held, int timeout = -1)
659  {
660  if (!invalidationReason().isEmpty()) {
661  return QDBusPendingReply<>(QDBusMessage::createError(
662  invalidationReason(),
663  invalidationMessage()
664  ));
665  }
666 
667  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
668  this->staticInterfaceName(), QLatin1String("HoldState"));
669  callMessage << QVariant::fromValue(held);
670  return this->connection().asyncCall(callMessage, timeout);
671  }
672 
685  inline QDBusPendingReply<> UnholdFailure(int timeout = -1)
686  {
687  if (!invalidationReason().isEmpty()) {
688  return QDBusPendingReply<>(QDBusMessage::createError(
689  invalidationReason(),
690  invalidationMessage()
691  ));
692  }
693 
694  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
695  this->staticInterfaceName(), QLatin1String("UnholdFailure"));
696  return this->connection().asyncCall(callMessage, timeout);
697  }
698 
715  inline QDBusPendingReply<> SupportedFeedbackMessages(const Tp::RTCPFeedbackMessageMap& messages, int timeout = -1)
716  {
717  if (!invalidationReason().isEmpty()) {
718  return QDBusPendingReply<>(QDBusMessage::createError(
719  invalidationReason(),
720  invalidationMessage()
721  ));
722  }
723 
724  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
725  this->staticInterfaceName(), QLatin1String("SupportedFeedbackMessages"));
726  callMessage << QVariant::fromValue(messages);
727  return this->connection().asyncCall(callMessage, timeout);
728  }
729 
747  inline QDBusPendingReply<> SupportedHeaderExtensions(const Tp::RTPHeaderExtensionsList& headerExtensions, int timeout = -1)
748  {
749  if (!invalidationReason().isEmpty()) {
750  return QDBusPendingReply<>(QDBusMessage::createError(
751  invalidationReason(),
752  invalidationMessage()
753  ));
754  }
755 
756  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
757  this->staticInterfaceName(), QLatin1String("SupportedHeaderExtensions"));
758  callMessage << QVariant::fromValue(headerExtensions);
759  return this->connection().asyncCall(callMessage, timeout);
760  }
761 
762 Q_SIGNALS:
778  void AddRemoteCandidate(const QString& candidateID, const Tp::MediaStreamHandlerTransportList& transports);
779 
786  void Close();
787 
799  void RemoveRemoteCandidate(const QString& candidateID);
800 
808  void SetActiveCandidatePair(const QString& nativeCandidateID, const QString& remoteCandidateID);
809 
821  void SetRemoteCandidateList(const Tp::MediaStreamHandlerCandidateList& remoteCandidates);
822 
835  void SetRemoteCodecs(const Tp::MediaStreamHandlerCodecList& codecs);
836 
846  void SetStreamPlaying(bool playing);
847 
854  void SetStreamSending(bool sending);
855 
866  void StartTelephonyEvent(uchar event);
867 
887  void StartNamedTelephonyEvent(uchar event, uint codecID);
888 
901  void StartSoundTelephonyEvent(uchar event);
902 
909  void StopTelephonyEvent();
910 
944  void SetStreamHeld(bool held);
945 
959  void SetRemoteFeedbackMessages(const Tp::RTCPFeedbackMessageMap& messages);
960 
974  void SetRemoteHeaderExtensions(const Tp::RTPHeaderExtensionsList& headerExtensions);
975 
976 protected:
977  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
978 };
979 }
980 }
981 Q_DECLARE_METATYPE(Tp::Client::MediaStreamHandlerInterface*)
QList< RTPHeaderExtension > RTPHeaderExtensionsList
Definition: build/TelepathyQt/_gen/types.h:2506
QDBusPendingReply NewNativeCandidate(const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports, int timeout=-1)
Definition: cli-media-stream-handler.h:462
Definition: cli-media-stream-handler.h:44
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
static QLatin1String staticInterfaceName()
Definition: cli-media-stream-handler.h:55
QDBusPendingReply NativeCandidatesPrepared(int timeout=-1)
Definition: cli-media-stream-handler.h:346
QList< MediaStreamHandlerTransport > MediaStreamHandlerTransportList
Definition: build/TelepathyQt/_gen/types.h:1970
QDBusPendingReply StreamState(uint state, int timeout=-1)
Definition: cli-media-stream-handler.h:562
QDBusPendingReply NewActiveTransportPair(const QString &nativeCandidateID, const Tp::MediaStreamHandlerTransport &nativeTransport, const QString &remoteCandidateID, const Tp::MediaStreamHandlerTransport &remoteTransport, int timeout=-1)
Definition: cli-media-stream-handler.h:413
QDBusPendingReply SupportedCodecs(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
Definition: cli-media-stream-handler.h:595
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
QDBusPendingReply SupportedHeaderExtensions(const Tp::RTPHeaderExtensionsList &headerExtensions, int timeout=-1)
Definition: cli-media-stream-handler.h:747
Tp::PendingVariant * requestPropertyCreatedLocally() const
Definition: cli-media-stream-handler.h:127
Definition: build/TelepathyQt/_gen/types.h:3939
QDBusPendingReply SupportedFeedbackMessages(const Tp::RTCPFeedbackMessageMap &messages, int timeout=-1)
Definition: cli-media-stream-handler.h:715
QList< MediaStreamHandlerCandidate > MediaStreamHandlerCandidateList
Definition: build/TelepathyQt/_gen/types.h:3662
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-media-stream-handler.h:269
QDBusPendingReply CodecChoice(uint codecID, int timeout=-1)
Definition: cli-media-stream-handler.h:285
Tp::PendingVariant * requestPropertyNATTraversal() const
Definition: cli-media-stream-handler.h:173
QDBusPendingReply Ready(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
Definition: cli-media-stream-handler.h:492
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
QDBusPendingReply CodecsUpdated(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
Definition: cli-media-stream-handler.h:628
QDBusPendingReply SetLocalCodecs(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
Definition: cli-media-stream-handler.h:536
QDBusPendingReply UnholdFailure(int timeout=-1)
Definition: cli-media-stream-handler.h:685
QDBusPendingReply NewActiveCandidatePair(const QString &nativeCandidateID, const QString &remoteCandidateID, int timeout=-1)
Definition: cli-media-stream-handler.h:371
Tp::PendingVariant * requestPropertySTUNServers() const
Definition: cli-media-stream-handler.h:111
QDBusPendingReply HoldState(bool held, int timeout=-1)
Definition: cli-media-stream-handler.h:658
Definition: build/TelepathyQt/_gen/types.h:1942
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyRelayInfo() const
Definition: cli-media-stream-handler.h:258
QDBusPendingReply Error(uint errorCode, const QString &message, int timeout=-1)
Definition: cli-media-stream-handler.h:320
QList< MediaStreamHandlerCodec > MediaStreamHandlerCodecList
Definition: build/TelepathyQt/_gen/types.h:3715


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00311.html0000644000175100017520000011025312530426260021121 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionManagerInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ConnectionManagerInterface Class Reference

#include <TelepathyQt/ConnectionManager>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ParamSpecList
GetParameters (const QString &protocol, int timeout=-1)
 
QDBusPendingReply< QStringList > ListProtocols (int timeout=-1)
 
QDBusPendingReply< QString,
QDBusObjectPath > 
RequestConnection (const QString &protocol, const QVariantMap &parameters, int timeout=-1)
 

Signals

void NewConnection (const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionManagerInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionManagerInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionManagerInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyProtocols () const
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ConnectionManagerInterface::ConnectionManagerInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionManagerInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionManagerInterface::ConnectionManagerInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionManagerInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionManagerInterface::ConnectionManagerInterface ( Tp::DBusProxy proxy)

Creates a ConnectionManagerInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionManagerInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.ConnectionManager", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionManagerInterface::requestPropertyProtocols ( ) const
inline

Asynchronous getter for the remote object property Protocols of type Tp::ProtocolPropertiesMap.

A map from protocol identifiers supported by this connection manager to the immutable properties of the corresponding ProtocolInterface objects.

Providing the immutable properties here means that when the API of Protocol objects has been finalized, most clients will only need one D-Bus round trip to interrogate the ConnectionManager about all its protocols.

If this map is empty or missing, clients SHOULD fall back to calling ListProtocols() and GetParameters() .

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionManagerInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the extra interfaces provided by this connection manager (i.e. extra functionality that can be provided even before a connection has been created).

No interfaces suitable for listing in this property are currently defined; it's provided as a hook for possible future functionality.

To be compatible with older connection managers, if retrieving this property fails, clients SHOULD assume that its value is an empty list.

Connection managers with a non-empty list of Interfaces MUST represent them in the .manager file, if they have one, as an Interfaces key in the group headed [ConnectionManager], whose value is a list of strings each followed by a semicolon.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionManagerInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ParamSpecList> Tp::Client::ConnectionManagerInterface::GetParameters ( const QString &  protocol,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetParameters on the remote object.

Get a list of the parameters which may be specified in the Parameters of an Account (or, for specialised applications which do not use the account manager, passed to 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.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
protocol
The required protocol name
timeoutThe timeout in milliseconds.
Returns
An array of structs representing possible parameters.
QDBusPendingReply<QStringList> Tp::Client::ConnectionManagerInterface::ListProtocols ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListProtocols on the remote object.

Get a list of protocol identifiers that are implemented by this connection manager.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The keys of the Protocols map.
QDBusPendingReply<QString, QDBusObjectPath> Tp::Client::ConnectionManagerInterface::RequestConnection ( const QString &  protocol,
const QVariantMap &  parameters,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestConnection on the remote object.

Request a ConnectionInterface object representing a given account on a given protocol with the given parameters. The method returns the bus name and the object path where the new Connection object can be found, which should have the status of Connection_Status_Disconnected, to allow signal handlers to be attached before connecting is started with the ConnectionInterface::Connect() method.

Most applications should not use this method: they should instead use the the AccountInterface::Connection property on an AccountInterface object obtained from the AccountManagerInterface . This method is used internally by the account manager to create connections when needed.

The parameters which must and may be provided in the parameters dictionary can be discovered with the GetParameters() method. These parameters, their types, and their default values may be cached in files so that all available connection managers do not need to be started to discover which protocols are available.

To request values for these parameters from the user, a client must have prior knowledge of the meaning of the parameter names, so the well-known names and types defined by the Connection_Parameter_Name type should be used where appropriate.

Connection manager authors SHOULD avoid introducing parameters whose default values would not be serializable in a .manager file.

The same serialization format is used in Mission Control to store accounts.

Every successful RequestConnection call will cause the emission of a NewConnection() signal for the same newly created connection. The requester can use the returned object path and service name independently of the emission of that signal. In that case this signal emission is most useful for, e.g. other processes that are monitoring the creation of new connections.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
protocol
The protocol identifier
parameters
A dictionary mapping parameter names to values of the appropriate 
type, as indicated by GetParameters and the well-known list of 
names and value types documented on the Connection_Parameter_Name 
type.
timeoutThe timeout in milliseconds.
Returns
A D-Bus service name where the new Connection object can be found
The D-Bus object path to the Connection on this service
void Tp::Client::ConnectionManagerInterface::NewConnection ( const QString &  busName,
const QDBusObjectPath &  objectPath,
const QString &  protocol 
)
signal

Represents the signal NewConnection on the remote object.

Emitted when a new Connection object is created.

Parameters
busName
The D-Bus service where the connection object can be found
objectPath
The object path of the Connection object on this service
protocol
The identifier for the protocol this connection uses
void Tp::Client::ConnectionManagerInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x6b.html0000644000175100017520000000334112530426260024175 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- k -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01282.html0000644000175100017520000002476612530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeStreamTubeInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeStreamTubeInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Accept(uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, int timeout=-1)Tp::Client::ChannelTypeStreamTubeInterfaceinlineslot
ChannelTypeStreamTubeInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeStreamTubeInterface
ChannelTypeStreamTubeInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeStreamTubeInterface
ChannelTypeStreamTubeInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeStreamTubeInterface
ChannelTypeStreamTubeInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeStreamTubeInterfaceexplicit
ChannelTypeStreamTubeInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeStreamTubeInterface
ConnectionClosed(uint connectionID, const QString &error, const QString &message)Tp::Client::ChannelTypeStreamTubeInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeStreamTubeInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NewLocalConnection(uint connectionID)Tp::Client::ChannelTypeStreamTubeInterfacesignal
NewRemoteConnection(uint handle, const QDBusVariant &connectionParam, uint connectionID)Tp::Client::ChannelTypeStreamTubeInterfacesignal
Offer(uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, int timeout=-1)Tp::Client::ChannelTypeStreamTubeInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeStreamTubeInterfaceinline
requestPropertyService() const Tp::Client::ChannelTypeStreamTubeInterfaceinline
requestPropertySupportedSocketTypes() const Tp::Client::ChannelTypeStreamTubeInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeStreamTubeInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00066.html0000644000175100017520000006217012530426257021142 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClientObserver Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Public Member Functions | Protected Member Functions | List of all members
Tp::AbstractClientObserver Class Referenceabstract

The AbstractClientObserver class represents a Telepathy observer. More...

#include <TelepathyQt/AbstractClientObserver>

Inherits Tp::AbstractClient.

Classes

class  ObserverInfo
 The AbstractClientObserver::ObserverInfo class provides a wrapper around the additional info about the channels passed to observeChannels(). More...
 

Public Member Functions

virtual ~AbstractClientObserver ()
 
ChannelClassSpecList observerFilter () const
 
bool shouldRecover () const
 
virtual void observeChannels (const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList< ChannelRequestPtr > &requestsSatisfied, const ObserverInfo &observerInfo)=0
 
- Public Member Functions inherited from Tp::AbstractClient
 AbstractClient ()
 
virtual ~AbstractClient ()
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 AbstractClientObserver (const ChannelClassSpecList &channelFilter, bool shouldRecover=false)
 

Detailed Description

The AbstractClientObserver class represents a Telepathy observer.

Observers are clients that monitor the creation of new channels. This functionality can be used for things like message logging.

Observers should not modify the state of a channel except via user interaction.

Observers must not carry out actions that exactly one process must take responsibility for (e.g. acknowledging text messages, or carrying out the actual file transfer), since arbitrarily many observers can be activated for each channel. The handler is responsible for such tasks.

Handlers may, of course, delegate responsibility for these tasks to other clients (including those run as observers), but this must be done explicitly via a request from the handler to the observer.

Whenever a collection of new channels is signalled, the channel dispatcher will notify all running or activatable observers whose filter indicates that they are interested in some of the channels.

Observers are activated for all channels in which they have registered an interest - incoming, outgoing or automatically created - although of course the filter property can be set to filter specific channels.

To become an observer one should inherit AbstractClientObserver and implement the pure virtual observeChannels() method. After that the object representing the observer must be registered using ClientRegistrar::registerClient().

When new channels in which the observer has registered an interest are announced, the method observeChannels() is invoked. All observers are notified simultaneously.

Usage

Implementing an observer

*
* class MyObserver : public AbstractClientObserver
* {
* public:
* MyObserver(const ChannelClassSpecList &channelFilter);
* ~MyObserver() { }
*
* void observeChannels(const MethodInvocationContextPtr<> &context,
* const AccountPtr &account,
* const ConnectionPtr &connection,
* const QList<ChannelPtr> &channels,
* const ChannelDispatchOperationPtr &dispatchOperation,
* const QList<ChannelRequestPtr> &requestsSatisfied,
* const AbstractClientObserver::ObserverInfo &observerInfo);
* };
*
* MyObserver::MyObserver(const ChannelClassSpecList &channelFilter)
* : AbstractClientObserver(channelFilter)
* {
* }
*
* void MyObserver::observeChannels(const MethodInvocationContextPtr<> &context,
* const AccountPtr &account,
* const ConnectionPtr &connection,
* const QList<ChannelPtr> &channels,
* const ChannelDispatchOperationPtr &dispatchOperation,
* const QList<ChannelRequestPtr> &requestsSatisfied,
* const AbstractClientObserver::ObserverInfo &observerInfo)
* {
* // do something, log messages, ...
*
* context->setFinished();
* }
*
*

Registering an observer

*
* AbstractClientPtr observer = AbstractClientPtr::dynamicCast(
* SharedPtr<MyObserver>(new MyObserver(
* ChannelClassSpecList() << ChannelClassSpec::textChat())));
* registrar->registerClient(observer, "myobserver");
*
*
See Also
AbstractClient

Constructor & Destructor Documentation

Tp::AbstractClientObserver::~AbstractClientObserver ( )
virtual

Class destructor.

Tp::AbstractClientObserver::AbstractClientObserver ( const ChannelClassSpecList channelFilter,
bool  shouldRecover = false 
)
protected

Construct a new AbstractClientObserver object.

Parameters
channelFilterA specification of the channels in which this observer is interested.
shouldRecoverWhether upon the startup of this observer, observeChannels() will be called for every already existing channel matching its observerChannelFilter().

Member Function Documentation

ChannelClassSpecList Tp::AbstractClientObserver::observerFilter ( ) const

Return the property containing a specification of the channels that this channel observer is interested. The observeChannels() method should be called by the channel dispatcher whenever any of the newly created channels match this description.

See the Telepathy specification for documentation about the allowed types and how to define filters.

This property never changes while the observer process owns its client bus name. If an observer wants to add extra channels to its list of interests at runtime, it can register an additional client bus name using ClientRegistrar::registerClient(). To remove those filters, it can release the bus name using ClientRegistrar::unregisterClient().

The same principle is applied to approvers and handlers.

Returns
A specification of the channels that this channel observer is interested as a list of ChannelClassSpec objects.
See Also
observeChannels()
bool Tp::AbstractClientObserver::shouldRecover ( ) const

Return whether upon the startup of this observer, observeChannels() will be called for every already existing channel matching its observerChannelFilter().

Parameters
\ctrue if this observer observerChannels() will be called for every already existing channel matching its observerChannelFilter(), false otherwise.
void Tp::AbstractClientObserver::observeChannels ( const MethodInvocationContextPtr<> &  context,
const AccountPtr &  account,
const ConnectionPtr &  connection,
const QList< ChannelPtr > &  channels,
const ChannelDispatchOperationPtr &  dispatchOperation,
const QList< ChannelRequestPtr > &  requestsSatisfied,
const ObserverInfo observerInfo 
)
pure virtual

Called by the channel dispatcher when channels in which the observer has registered an interest are announced.

If the announced channels contains channels that match the observerChannelFilter(), and some that do not, then only a subset of the channels (those that do match the filter) are passed to this method.

If the channel dispatcher will split up the channels from a single announcement and dispatch them separately (for instance because no installed handler can handle all of them), it will call this method several times.

The observer must not call MethodInvocationContext::setFinished() until it is ready for a handler for the channel to run (which may change the channel's state). For instance the received context object should be stored until this method is finished processing and then MethodInvocationContext::setFinished() or MethodInvocationContext::setFinishedWithError() should be called on the received context object.

Specialized observers must reimplement this method.

Parameters
contextA MethodInvocationContextPtr object that must be used to indicate whether this method finished processing.
accountThe account with which the channels are associated.
connectionThe connection with which the channels are associated.
channelsThe channels to be observed.
dispatchOperationThe dispatch operation for these channels. The object will be invalid (DBusProxy::isValid() will be false) if there is no dispatch operation in place (because the channels were requested, not incoming). If the Observer calls ChannelDispatchOperation::claim() or ChannelDispatchOperation::handleWith() on this object, it must be careful to avoid deadlock, since these methods cannot return until the observer has returned from observeChannels().
requestsSatisfiedThe requests satisfied by these channels.
observerInfoAdditional information about these channels.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00641_source.html0000644000175100017520000004625712530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-debug-receiver.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-debug-receiver.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT DebugInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Debug");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
107  {
108  return internalRequestProperty(QLatin1String("Enabled"));
109  }
110 
122  {
123  return internalSetProperty(QLatin1String("Enabled"), QVariant::fromValue(newValue));
124  }
125 
133  {
134  return internalRequestAllProperties();
135  }
136 
137 public Q_SLOTS:
155  inline QDBusPendingReply<Tp::DebugMessageList> GetMessages(int timeout = -1)
156  {
157  if (!invalidationReason().isEmpty()) {
158  return QDBusPendingReply<Tp::DebugMessageList>(QDBusMessage::createError(
159  invalidationReason(),
160  invalidationMessage()
161  ));
162  }
163 
164  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
165  this->staticInterfaceName(), QLatin1String("GetMessages"));
166  return this->connection().asyncCall(callMessage, timeout);
167  }
168 
169 Q_SIGNALS:
193  void NewDebugMessage(double time, const QString& domain, uint level, const QString& message);
194 
195 protected:
196  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
197 };
198 }
199 }
200 Q_DECLARE_METATYPE(Tp::Client::DebugInterface*)
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-debug-receiver.h:132
Tp::PendingVariant * requestPropertyEnabled() const
Definition: cli-debug-receiver.h:106
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
static QLatin1String staticInterfaceName()
Definition: cli-debug-receiver.h:55
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Definition: cli-debug-receiver.h:44
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingOperation * setPropertyEnabled(bool newValue)
Definition: cli-debug-receiver.h:121
QDBusPendingReply< Tp::DebugMessageList > GetMessages(int timeout=-1)
Definition: cli-debug-receiver.h:155


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01027.html0000644000175100017520000001466212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FixedFeatureFactory Member List

This is the complete list of members for Tp::FixedFeatureFactory, including all inherited members.

addFeature(const Feature &feature)Tp::FixedFeatureFactory
addFeatures(const Features &features)Tp::FixedFeatureFactory
cachedProxy(const QString &busName, const QString &objectPath) const Tp::DBusProxyFactoryprotected
dbusConnection() const Tp::DBusProxyFactory
DBusProxyFactory(const QDBusConnection &bus)Tp::DBusProxyFactoryprotected
features() const Tp::FixedFeatureFactory
featuresFor(const DBusProxyPtr &proxy) const Tp::FixedFeatureFactoryprotectedvirtual
finalBusNameFrom(const QString &uniqueOrWellKnown) const =0Tp::DBusProxyFactoryprotectedpure virtual
FixedFeatureFactory(const QDBusConnection &bus)Tp::FixedFeatureFactoryprotected
initialPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
nowHaveProxy(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotected
readyPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
RefCounted()Tp::RefCountedinline
~DBusProxyFactory()Tp::DBusProxyFactoryvirtual
~FixedFeatureFactory()Tp::FixedFeatureFactoryvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/dir_d31e7bccdbb8c214182f9922ec6f9b9e.html0000644000175100017520000020725712530426260025776 0ustar00kaffeinekaffeine00000000000000 TelepathyQt Directory Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
TelepathyQt Directory Reference

Directories

directory  Farstream
 

Files

file  abstract-adaptor.cpp
 
file  abstract-adaptor.h [code]
 
file  abstract-client.cpp
 
file  abstract-client.h [code]
 
file  abstract-interface.cpp
 
file  abstract-interface.h [code]
 
file  account-capability-filter.h [code]
 
file  account-factory.cpp
 
file  account-factory.h [code]
 
file  account-filter.h [code]
 
file  account-manager.cpp
 
file  account-manager.h [code]
 
file  account-property-filter.cpp
 
file  account-property-filter.h [code]
 
file  account-set.cpp
 
file  account-set.h [code]
 
file  account.cpp
 
file  account.h [code]
 
file  and-filter.h [code]
 
file  avatar.cpp
 
file  avatar.h [code]
 
file  base-call.cpp
 
file  base-call.h [code]
 
file  base-channel.cpp
 
file  base-channel.h [code]
 
file  base-connection-manager.cpp
 
file  base-connection-manager.h [code]
 
file  base-connection.cpp
 
file  base-connection.h [code]
 
file  base-protocol.cpp
 
file  base-protocol.h [code]
 
file  call-channel.cpp
 
file  call-channel.h [code]
 
file  call-content-media-description.cpp
 
file  call-content-media-description.h [code]
 
file  call-content.cpp
 
file  call-content.h [code]
 
file  call-stream-endpoint.cpp
 
file  call-stream-endpoint.h [code]
 
file  call-stream.cpp
 
file  call-stream.h [code]
 
file  callbacks.h [code]
 
file  capabilities-base.cpp
 
file  capabilities-base.h [code]
 
file  captcha-authentication.cpp
 
file  captcha-authentication.h [code]
 
file  captcha.cpp
 
file  captcha.h [code]
 
file  channel-class-features.h [code]
 
file  channel-class-spec.cpp
 
file  channel-class-spec.h [code]
 
file  channel-dispatch-operation.cpp
 
file  channel-dispatch-operation.h [code]
 
file  channel-dispatcher.cpp
 
file  channel-dispatcher.h [code]
 
file  channel-factory.cpp
 
file  channel-factory.h [code]
 
file  channel-request.cpp
 
file  channel-request.h [code]
 
file  channel.cpp
 
file  channel.h [code]
 
file  client-registrar.cpp
 
file  client-registrar.h [code]
 
file  client.cpp
 
file  client.h [code]
 
file  connection-capabilities.cpp
 
file  connection-capabilities.h [code]
 
file  connection-factory.cpp
 
file  connection-factory.h [code]
 
file  connection-lowlevel.h [code]
 
file  connection-manager-lowlevel.h [code]
 
file  connection-manager.cpp
 
file  connection-manager.h [code]
 
file  connection.cpp
 
file  connection.h [code]
 
file  telepathy-qt/TelepathyQt/constants.h [code]
 
file  contact-capabilities.cpp
 
file  contact-capabilities.h [code]
 
file  contact-factory.cpp
 
file  contact-factory.h [code]
 
file  contact-manager-roster.cpp
 
file  contact-manager.cpp
 
file  contact-manager.h [code]
 
file  contact-messenger.cpp
 
file  contact-messenger.h [code]
 
file  contact-search-channel.cpp
 
file  contact-search-channel.h [code]
 
file  contact.cpp
 
file  contact.h [code]
 
file  dbus-error.cpp
 
file  dbus-error.h [code]
 
file  dbus-object.cpp
 
file  dbus-object.h [code]
 
file  dbus-proxy-factory.cpp
 
file  dbus-proxy-factory.h [code]
 
file  dbus-proxy.cpp
 
file  dbus-proxy.h [code]
 
file  dbus-service.cpp
 
file  dbus-service.h [code]
 
file  dbus-tube-channel.cpp
 
file  dbus-tube-channel.h [code]
 
file  dbus.cpp
 
file  dbus.h [code]
 
file  debug-receiver.cpp
 
file  debug-receiver.h [code]
 
file  debug.cpp
 
file  debug.h [code]
 
file  feature.cpp
 
file  feature.h [code]
 
file  file-transfer-channel-creation-properties.cpp
 
file  file-transfer-channel-creation-properties.h [code]
 
file  file-transfer-channel.cpp
 
file  file-transfer-channel.h [code]
 
file  filter.h [code]
 
file  fixed-feature-factory.cpp
 
file  fixed-feature-factory.h [code]
 
file  functors.h [code]
 
file  generic-capability-filter.h [code]
 
file  generic-property-filter.h [code]
 
file  handled-channel-notifier.cpp
 
file  handled-channel-notifier.h [code]
 
file  incoming-dbus-tube-channel.cpp
 
file  incoming-dbus-tube-channel.h [code]
 
file  incoming-file-transfer-channel.cpp
 
file  incoming-file-transfer-channel.h [code]
 
file  incoming-stream-tube-channel.cpp
 
file  incoming-stream-tube-channel.h [code]
 
file  key-file.cpp
 
file  key-file.h [code]
 
file  location-info.cpp
 
file  location-info.h [code]
 
file  manager-file.cpp
 
file  manager-file.h [code]
 
file  media-session-handler.cpp
 
file  media-session-handler.h [code]
 
file  media-stream-handler.cpp
 
file  media-stream-handler.h [code]
 
file  message-content-part.cpp
 
file  message-content-part.h [code]
 
file  message.cpp
 
file  message.h [code]
 
file  method-invocation-context.h [code]
 
file  not-filter.h [code]
 
file  object.cpp
 
file  object.h [code]
 
file  optional-interface-factory.cpp
 
file  optional-interface-factory.h [code]
 
file  or-filter.h [code]
 
file  outgoing-dbus-tube-channel.cpp
 
file  outgoing-dbus-tube-channel.h [code]
 
file  outgoing-file-transfer-channel.cpp
 
file  outgoing-file-transfer-channel.h [code]
 
file  outgoing-stream-tube-channel.cpp
 
file  outgoing-stream-tube-channel.h [code]
 
file  pending-account.cpp
 
file  pending-account.h [code]
 
file  pending-captchas.cpp
 
file  pending-captchas.h [code]
 
file  pending-channel-request.cpp
 
file  pending-channel-request.h [code]
 
file  pending-channel.cpp
 
file  pending-channel.h [code]
 
file  pending-connection.cpp
 
file  pending-connection.h [code]
 
file  pending-contact-attributes.cpp
 
file  pending-contact-attributes.h [code]
 
file  pending-contact-info.cpp
 
file  pending-contact-info.h [code]
 
file  pending-contacts.cpp
 
file  pending-contacts.h [code]
 
file  pending-dbus-tube-connection.cpp
 
file  pending-dbus-tube-connection.h [code]
 
file  pending-debug-message-list.cpp
 
file  pending-debug-message-list.h [code]
 
file  pending-handles.cpp
 
file  pending-handles.h [code]
 
file  pending-operation.cpp
 
file  pending-operation.h [code]
 
file  pending-ready.cpp
 
file  pending-ready.h [code]
 
file  pending-send-message.cpp
 
file  pending-send-message.h [code]
 
file  pending-stream-tube-connection.cpp
 
file  pending-stream-tube-connection.h [code]
 
file  pending-string-list.cpp
 
file  pending-string-list.h [code]
 
file  pending-string.cpp
 
file  pending-string.h [code]
 
file  pending-variant-map.cpp
 
file  pending-variant-map.h [code]
 
file  pending-variant.cpp
 
file  pending-variant.h [code]
 
file  presence.cpp
 
file  presence.h [code]
 
file  profile-manager.cpp
 
file  profile-manager.h [code]
 
file  profile.cpp
 
file  profile.h [code]
 
file  properties.cpp
 
file  properties.h [code]
 
file  protocol-info.cpp
 
file  protocol-info.h [code]
 
file  protocol-parameter.cpp
 
file  protocol-parameter.h [code]
 
file  readiness-helper.cpp
 
file  readiness-helper.h [code]
 
file  ready-object.cpp
 
file  ready-object.h [code]
 
file  referenced-handles.cpp
 
file  referenced-handles.h [code]
 
file  requestable-channel-class-spec.cpp
 
file  requestable-channel-class-spec.h [code]
 
file  room-list-channel.cpp
 
file  room-list-channel.h [code]
 
file  server-authentication-channel.cpp
 
file  server-authentication-channel.h [code]
 
file  service-types.h [code]
 
file  shared-ptr.h [code]
 
file  simple-call-observer.cpp
 
file  simple-call-observer.h [code]
 
file  simple-observer.cpp
 
file  simple-observer.h [code]
 
file  simple-pending-operations.h [code]
 
file  simple-stream-tube-handler.cpp
 
file  simple-stream-tube-handler.h [code]
 
file  simple-text-observer.cpp
 
file  simple-text-observer.h [code]
 
file  stream-tube-channel.cpp
 
file  stream-tube-channel.h [code]
 
file  stream-tube-client.cpp
 
file  stream-tube-client.h [code]
 
file  stream-tube-server.cpp
 
file  stream-tube-server.h [code]
 
file  streamed-media-channel.cpp
 
file  streamed-media-channel.h [code]
 
file  test-backdoors.cpp
 
file  test-backdoors.h [code]
 
file  text-channel.cpp
 
file  text-channel.h [code]
 
file  tls-certificate.cpp
 
file  tls-certificate.h [code]
 
file  tube-channel.cpp
 
file  tube-channel.h [code]
 
file  types.cpp
 
file  telepathy-qt/TelepathyQt/types.h [code]
 
file  utils.cpp
 
file  utils.h [code]
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00881.html0000644000175100017520000001372012530426257021144 0ustar00kaffeinekaffeine00000000000000 Connection manager proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Connection manager proxies

Classes

class  Tp::ConnectionManagerLowlevel
 The ConnectionManagerLowlevel class extends ConnectionManager with support to low-level features. More...
 
class  Tp::ConnectionManager
 The ConnectionManager class represents a Telepathy connection manager. More...
 
class  Tp::ProtocolInfo
 The ProtocolInfo class represents a Telepathy Protocol. More...
 
class  Tp::ProtocolParameter
 The ProtocolParameter class represents a Telepathy protocol parameter. More...
 
class  Tp::Client::ConnectionManagerInterface
 
class  Tp::Client::ProtocolInterface
 
class  Tp::Client::ProtocolInterfaceAddressingInterface
 
class  Tp::Client::ProtocolInterfaceAvatarsInterface
 
class  Tp::Client::ProtocolInterfacePresenceInterface
 

Detailed Description

Proxy objects representing remote Telepathy ConnectionManager objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00380.html0000644000175100017520000000763612530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::LastActivityAndStatuses Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::LastActivityAndStatuses Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint lastActivity
 
MultipleStatusMap statuses
 

Detailed Description

Structure type generated from the specification.

Structure representing a contact's presence, containing a last-activity time (deprecated) and a Multiple_Status_Map.

Member Data Documentation

uint Tp::LastActivityAndStatuses::lastActivity
MultipleStatusMap Tp::LastActivityAndStatuses::statuses


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01341.html0000644000175100017520000000761612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceHoldAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceHoldAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetHoldState(const QDBusMessage &dbusMessage, uint &reason)Tp::Service::ChannelInterfaceHoldAdaptorslot
HoldStateChanged(uint holdState, uint reason)Tp::Service::ChannelInterfaceHoldAdaptorsignal
RequestHold(bool hold, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceHoldAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00125.html0000644000175100017520000000636612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::BaseFunctor Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseFunctor Struct Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherited by Tp::MemberFunctor0< R, T >, Tp::MemberFunctor1< R, T, Arg1 >, Tp::MemberFunctor2< R, T, Arg1, Arg2 >, Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >, Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >, Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >, Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, Tp::PtrFunctor0< R >, Tp::PtrFunctor1< R, Arg1 >, Tp::PtrFunctor2< R, Arg1, Arg2 >, Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >, Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >, Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, and Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00638_source.html0000644000175100017520000007550112530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-dbus-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-dbus-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/dbus.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 namespace DBus
9 {
10 
11 DBusDaemonInterface::DBusDaemonInterface(const QString& busName, const QString& objectPath, QObject *parent)
12  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
13 {
14 }
15 
16 DBusDaemonInterface::DBusDaemonInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
17  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
18 {
19 }
20 
22  : Tp::AbstractInterface(proxy, staticInterfaceName())
23 {
24 }
25 
27  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
28 {
29 }
30 
32  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
33 {
34 }
35 
37  const QString &error, const QString &message)
38 {
39  disconnect(this, SIGNAL(NameOwnerChanged(const QString&, const QString&, const QString&)), NULL, NULL);
40  disconnect(this, SIGNAL(NameLost(const QString&)), NULL, NULL);
41  disconnect(this, SIGNAL(NameAcquired(const QString&)), NULL, NULL);
42 
43  Tp::AbstractInterface::invalidate(proxy, error, message);
44 }
45 
46 IntrospectableInterface::IntrospectableInterface(const QString& busName, const QString& objectPath, QObject *parent)
47  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
48 {
49 }
50 
51 IntrospectableInterface::IntrospectableInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
52  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
53 {
54 }
55 
57  : Tp::AbstractInterface(proxy, staticInterfaceName())
58 {
59 }
60 
62  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
63 {
64 }
65 
67  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
68 {
69 }
70 
72  const QString &error, const QString &message)
73 {
74 
75  Tp::AbstractInterface::invalidate(proxy, error, message);
76 }
77 
78 PeerInterface::PeerInterface(const QString& busName, const QString& objectPath, QObject *parent)
79  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
80 {
81 }
82 
83 PeerInterface::PeerInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
84  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
85 {
86 }
87 
89  : Tp::AbstractInterface(proxy, staticInterfaceName())
90 {
91 }
92 
94  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
95 {
96 }
97 
98 PeerInterface::PeerInterface(const Tp::AbstractInterface& mainInterface, QObject *parent)
99  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
100 {
101 }
102 
104  const QString &error, const QString &message)
105 {
106 
107  Tp::AbstractInterface::invalidate(proxy, error, message);
108 }
109 
110 PropertiesInterface::PropertiesInterface(const QString& busName, const QString& objectPath, QObject *parent)
111  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
112 {
113 }
114 
115 PropertiesInterface::PropertiesInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
116  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
117 {
118 }
119 
121  : Tp::AbstractInterface(proxy, staticInterfaceName())
122 {
123 }
124 
126  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
127 {
128 }
129 
131  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
132 {
133 }
134 
136  const QString &error, const QString &message)
137 {
138 
139  Tp::AbstractInterface::invalidate(proxy, error, message);
140 }
141 }
142 }
143 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
void NameAcquired(const QString &name)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-dbus-body.hpp:103
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-dbus-body.hpp:36
void NameLost(const QString &name)
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
PropertiesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-dbus-body.hpp:110
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-dbus-body.hpp:135
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-dbus-body.hpp:71
DBusDaemonInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-dbus-body.hpp:11
PeerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-dbus-body.hpp:78
void NameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner)
IntrospectableInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-dbus-body.hpp:46


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01096.html0000644000175100017520000003141112530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RequestableChannelClassSpec Member List

This is the complete list of members for Tp::RequestableChannelClassSpec, including all inherited members.

allowedProperties() const Tp::RequestableChannelClassSpec
allowsProperty(const QString &name) const Tp::RequestableChannelClassSpec
audioCall()Tp::RequestableChannelClassSpecstatic
audioCallWithVideoAllowed()Tp::RequestableChannelClassSpecstatic
bareClass() const Tp::RequestableChannelClassSpec
channelType() const Tp::RequestableChannelClassSpec
conferenceStreamedMediaCall()Tp::RequestableChannelClassSpecstatic
conferenceStreamedMediaCallWithInvitees()Tp::RequestableChannelClassSpecstatic
conferenceTextChat()Tp::RequestableChannelClassSpecstatic
conferenceTextChatroom()Tp::RequestableChannelClassSpecstatic
conferenceTextChatroomWithInvitees()Tp::RequestableChannelClassSpecstatic
conferenceTextChatWithInvitees()Tp::RequestableChannelClassSpecstatic
contactSearch()Tp::RequestableChannelClassSpecstatic
contactSearchWithLimit()Tp::RequestableChannelClassSpecstatic
contactSearchWithSpecificServer()Tp::RequestableChannelClassSpecstatic
contactSearchWithSpecificServerAndLimit()Tp::RequestableChannelClassSpecstatic
dbusTube(const QString &serviceName=QString())Tp::RequestableChannelClassSpecstatic
fileTransfer()Tp::RequestableChannelClassSpecstatic
fixedProperties() const Tp::RequestableChannelClassSpec
fixedProperty(const QString &name) const Tp::RequestableChannelClassSpec
hasFixedProperty(const QString &name) const Tp::RequestableChannelClassSpec
hasTargetHandleType() const Tp::RequestableChannelClassSpec
isValid() const Tp::RequestableChannelClassSpecinline
operator=(const RequestableChannelClassSpec &other)Tp::RequestableChannelClassSpec
operator==(const RequestableChannelClassSpec &other) const Tp::RequestableChannelClassSpec
RequestableChannelClassSpec()Tp::RequestableChannelClassSpec
RequestableChannelClassSpec(const RequestableChannelClass &rcc)Tp::RequestableChannelClassSpec
RequestableChannelClassSpec(const RequestableChannelClassSpec &other)Tp::RequestableChannelClassSpec
streamedMediaAudioCall()Tp::RequestableChannelClassSpecstatic
streamedMediaCall()Tp::RequestableChannelClassSpecstatic
streamedMediaVideoCall()Tp::RequestableChannelClassSpecstatic
streamedMediaVideoCallWithAudio()Tp::RequestableChannelClassSpecstatic
streamTube(const QString &service=QString())Tp::RequestableChannelClassSpecstatic
supports(const RequestableChannelClassSpec &spec) const Tp::RequestableChannelClassSpec
targetHandleType() const Tp::RequestableChannelClassSpec
textChat()Tp::RequestableChannelClassSpecstatic
textChatroom()Tp::RequestableChannelClassSpecstatic
videoCall()Tp::RequestableChannelClassSpecstatic
videoCallWithAudioAllowed()Tp::RequestableChannelClassSpecstatic
~RequestableChannelClassSpec()Tp::RequestableChannelClassSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00940.html0000644000175100017520000004004412530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelCallType Member List

This is the complete list of members for Tp::BaseChannelCallType, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
AcceptCallback typedefTp::BaseChannelCallType
addContent(const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)Tp::BaseChannelCallType
addContent(BaseCallContentPtr content)Tp::BaseChannelCallType
AddContentCallback typedefTp::BaseChannelCallType
BaseChannelCallType(BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)Tp::BaseChannelCallTypeprotected
callFlags()Tp::BaseChannelCallType
callMembers()Tp::BaseChannelCallType
callState()Tp::BaseChannelCallType
callStateDetails()Tp::BaseChannelCallType
callStateReason()Tp::BaseChannelCallType
contents()Tp::BaseChannelCallType
create(BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)Tp::BaseChannelCallTypeinlinestatic
create(BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)Tp::BaseChannelCallTypeinlinestatic
createChannelTp::BaseChannelCallType
CreateChannelCallback typedefTp::BaseChannelCallType
dbusObject() const Tp::AbstractDBusServiceInterface
ensureChannelTp::BaseChannelCallType
EnsureChannelCallback typedefTp::BaseChannelCallType
HangupCallback typedefTp::BaseChannelCallType
hardwareStreaming()Tp::BaseChannelCallType
immutableProperties() const Tp::BaseChannelCallTypevirtual
initialAudio()Tp::BaseChannelCallType
initialAudioName()Tp::BaseChannelCallType
initialTransport()Tp::BaseChannelCallType
initialVideo()Tp::BaseChannelCallType
initialVideoName()Tp::BaseChannelCallType
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
memberIdentifiers()Tp::BaseChannelCallType
mutableContents()Tp::BaseChannelCallType
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
requestableChannelClassesTp::BaseChannelCallType
setAcceptCallback(const AcceptCallback &cb)Tp::BaseChannelCallType
setAddContentCallback(const AddContentCallback &cb)Tp::BaseChannelCallType
setCallState(const Tp::CallState &state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails)Tp::BaseChannelCallType
setHangupCallback(const HangupCallback &cb)Tp::BaseChannelCallType
setMembersFlags(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)Tp::BaseChannelCallType
SetQueuedCallback typedefTp::BaseChannelCallType
SetRingingCallback typedefTp::BaseChannelCallType
setSetQueuedCallback(const SetQueuedCallback &cb)Tp::BaseChannelCallType
setSetRingingCallback(const SetRingingCallback &cb)Tp::BaseChannelCallType
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelCallType()Tp::BaseChannelCallTypevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00634_source.html0000644000175100017520000052357412530426257022535 0ustar00kaffeinekaffeine00000000000000 cli-connection-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-connection-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/connection.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ConnectionInterface::ConnectionInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ConnectionInterface::ConnectionInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(SelfHandleChanged(uint)), NULL, NULL);
28  disconnect(this, SIGNAL(SelfContactChanged(uint, const QString&)), NULL, NULL);
29  disconnect(this, SIGNAL(NewChannel(const QDBusObjectPath&, const QString&, uint, uint, bool)), NULL, NULL);
30  disconnect(this, SIGNAL(ConnectionError(const QString&, const QVariantMap&)), NULL, NULL);
31  disconnect(this, SIGNAL(StatusChanged(uint, uint)), NULL, NULL);
32 
33  Tp::AbstractInterface::invalidate(proxy, error, message);
34 }
35 
36 ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface(const QString& busName, const QString& objectPath, QObject *parent)
37  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
38 {
39 }
40 
41 ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
42  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
43 {
44 }
45 
47  : Tp::AbstractInterface(proxy, staticInterfaceName())
48 {
49 }
50 
52  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
53 {
54 }
55 
57  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
58 {
59 }
60 
62  const QString &error, const QString &message)
63 {
64 
65  Tp::AbstractInterface::invalidate(proxy, error, message);
66 }
67 
68 ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface(const QString& busName, const QString& objectPath, QObject *parent)
69  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
70 {
71 }
72 
73 ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
74  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
75 {
76 }
77 
79  : Tp::AbstractInterface(proxy, staticInterfaceName())
80 {
81 }
82 
84  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
85 {
86 }
87 
89  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
90 {
91 }
92 
94  const QString &error, const QString &message)
95 {
96  disconnect(this, SIGNAL(AliasesChanged(const Tp::AliasPairList&)), NULL, NULL);
97 
98  Tp::AbstractInterface::invalidate(proxy, error, message);
99 }
100 
101 ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface(const QString& busName, const QString& objectPath, QObject *parent)
102  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
103 {
104 }
105 
106 ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
107  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
108 {
109 }
110 
112  : Tp::AbstractInterface(proxy, staticInterfaceName())
113 {
114 }
115 
117  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
118 {
119 }
120 
122  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
123 {
124 }
125 
127  const QString &error, const QString &message)
128 {
129  disconnect(this, SIGNAL(AnonymityModesChanged(uint)), NULL, NULL);
130 
131  Tp::AbstractInterface::invalidate(proxy, error, message);
132 }
133 
134 ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface(const QString& busName, const QString& objectPath, QObject *parent)
135  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
136 {
137 }
138 
139 ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
140  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
141 {
142 }
143 
145  : Tp::AbstractInterface(proxy, staticInterfaceName())
146 {
147 }
148 
150  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
151 {
152 }
153 
155  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
156 {
157 }
158 
160  const QString &error, const QString &message)
161 {
162  disconnect(this, SIGNAL(AvatarUpdated(uint, const QString&)), NULL, NULL);
163  disconnect(this, SIGNAL(AvatarRetrieved(uint, const QString&, const QByteArray&, const QString&)), NULL, NULL);
164 
165  Tp::AbstractInterface::invalidate(proxy, error, message);
166 }
167 
168 ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface(const QString& busName, const QString& objectPath, QObject *parent)
169  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
170 {
171 }
172 
173 ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
174  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
175 {
176 }
177 
179  : Tp::AbstractInterface(proxy, staticInterfaceName())
180 {
181 }
182 
184  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
185 {
186 }
187 
189  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
190 {
191 }
192 
194  const QString &error, const QString &message)
195 {
196  disconnect(this, SIGNAL(BalanceChanged(const Tp::CurrencyAmount&)), NULL, NULL);
197 
198  Tp::AbstractInterface::invalidate(proxy, error, message);
199 }
200 
201 ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface(const QString& busName, const QString& objectPath, QObject *parent)
202  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
203 {
204 }
205 
206 ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
207  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
208 {
209 }
210 
212  : Tp::AbstractInterface(proxy, staticInterfaceName())
213 {
214 }
215 
217  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
218 {
219 }
220 
222  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
223 {
224 }
225 
227  const QString &error, const QString &message)
228 {
229  disconnect(this, SIGNAL(CapabilitiesChanged(const Tp::CapabilityChangeList&)), NULL, NULL);
230 
231  Tp::AbstractInterface::invalidate(proxy, error, message);
232 }
233 
234 ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface(const QString& busName, const QString& objectPath, QObject *parent)
235  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
236 {
237 }
238 
239 ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
240  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
241 {
242 }
243 
245  : Tp::AbstractInterface(proxy, staticInterfaceName())
246 {
247 }
248 
250  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
251 {
252 }
253 
255  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
256 {
257 }
258 
260  const QString &error, const QString &message)
261 {
262  disconnect(this, SIGNAL(IMSIChanged(const QString&)), NULL, NULL);
263 
264  Tp::AbstractInterface::invalidate(proxy, error, message);
265 }
266 
267 ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface(const QString& busName, const QString& objectPath, QObject *parent)
268  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
269 {
270 }
271 
272 ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
273  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
274 {
275 }
276 
278  : Tp::AbstractInterface(proxy, staticInterfaceName())
279 {
280 }
281 
283  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
284 {
285 }
286 
288  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
289 {
290 }
291 
293  const QString &error, const QString &message)
294 {
295  disconnect(this, SIGNAL(ClientTypesUpdated(uint, const QStringList&)), NULL, NULL);
296 
297  Tp::AbstractInterface::invalidate(proxy, error, message);
298 }
299 
300 ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface(const QString& busName, const QString& objectPath, QObject *parent)
301  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
302 {
303 }
304 
305 ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
306  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
307 {
308 }
309 
311  : Tp::AbstractInterface(proxy, staticInterfaceName())
312 {
313 }
314 
316  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
317 {
318 }
319 
321  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
322 {
323 }
324 
326  const QString &error, const QString &message)
327 {
328  disconnect(this, SIGNAL(BlockedContactsChanged(const Tp::HandleIdentifierMap&, const Tp::HandleIdentifierMap&)), NULL, NULL);
329 
330  Tp::AbstractInterface::invalidate(proxy, error, message);
331 }
332 
333 ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface(const QString& busName, const QString& objectPath, QObject *parent)
334  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
335 {
336 }
337 
338 ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
339  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
340 {
341 }
342 
344  : Tp::AbstractInterface(proxy, staticInterfaceName())
345 {
346 }
347 
349  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
350 {
351 }
352 
354  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
355 {
356 }
357 
359  const QString &error, const QString &message)
360 {
361  disconnect(this, SIGNAL(ContactCapabilitiesChanged(const Tp::ContactCapabilitiesMap&)), NULL, NULL);
362 
363  Tp::AbstractInterface::invalidate(proxy, error, message);
364 }
365 
366 ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface(const QString& busName, const QString& objectPath, QObject *parent)
367  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
368 {
369 }
370 
371 ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
372  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
373 {
374 }
375 
377  : Tp::AbstractInterface(proxy, staticInterfaceName())
378 {
379 }
380 
382  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
383 {
384 }
385 
387  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
388 {
389 }
390 
392  const QString &error, const QString &message)
393 {
394  disconnect(this, SIGNAL(GroupsChanged(const Tp::UIntList&, const QStringList&, const QStringList&)), NULL, NULL);
395  disconnect(this, SIGNAL(GroupsCreated(const QStringList&)), NULL, NULL);
396  disconnect(this, SIGNAL(GroupRenamed(const QString&, const QString&)), NULL, NULL);
397  disconnect(this, SIGNAL(GroupsRemoved(const QStringList&)), NULL, NULL);
398 
399  Tp::AbstractInterface::invalidate(proxy, error, message);
400 }
401 
402 ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface(const QString& busName, const QString& objectPath, QObject *parent)
403  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
404 {
405 }
406 
407 ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
408  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
409 {
410 }
411 
413  : Tp::AbstractInterface(proxy, staticInterfaceName())
414 {
415 }
416 
418  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
419 {
420 }
421 
423  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
424 {
425 }
426 
428  const QString &error, const QString &message)
429 {
430  disconnect(this, SIGNAL(ContactInfoChanged(uint, const Tp::ContactInfoFieldList&)), NULL, NULL);
431 
432  Tp::AbstractInterface::invalidate(proxy, error, message);
433 }
434 
435 ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface(const QString& busName, const QString& objectPath, QObject *parent)
436  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
437 {
438 }
439 
440 ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
441  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
442 {
443 }
444 
446  : Tp::AbstractInterface(proxy, staticInterfaceName())
447 {
448 }
449 
451  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
452 {
453 }
454 
456  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
457 {
458 }
459 
461  const QString &error, const QString &message)
462 {
463  disconnect(this, SIGNAL(ContactListStateChanged(uint)), NULL, NULL);
464  disconnect(this, SIGNAL(ContactsChangedWithID(const Tp::ContactSubscriptionMap&, const Tp::HandleIdentifierMap&, const Tp::HandleIdentifierMap&)), NULL, NULL);
465  disconnect(this, SIGNAL(ContactsChanged(const Tp::ContactSubscriptionMap&, const Tp::UIntList&)), NULL, NULL);
466 
467  Tp::AbstractInterface::invalidate(proxy, error, message);
468 }
469 
470 ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface(const QString& busName, const QString& objectPath, QObject *parent)
471  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
472 {
473 }
474 
475 ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
476  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
477 {
478 }
479 
481  : Tp::AbstractInterface(proxy, staticInterfaceName())
482 {
483 }
484 
486  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
487 {
488 }
489 
491  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
492 {
493 }
494 
496  const QString &error, const QString &message)
497 {
498 
499  Tp::AbstractInterface::invalidate(proxy, error, message);
500 }
501 
502 ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface(const QString& busName, const QString& objectPath, QObject *parent)
503  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
504 {
505 }
506 
507 ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
508  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
509 {
510 }
511 
513  : Tp::AbstractInterface(proxy, staticInterfaceName())
514 {
515 }
516 
518  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
519 {
520 }
521 
523  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
524 {
525 }
526 
528  const QString &error, const QString &message)
529 {
530  disconnect(this, SIGNAL(LocationUpdated(uint, const QVariantMap&)), NULL, NULL);
531 
532  Tp::AbstractInterface::invalidate(proxy, error, message);
533 }
534 
535 ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface(const QString& busName, const QString& objectPath, QObject *parent)
536  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
537 {
538 }
539 
540 ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
541  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
542 {
543 }
544 
546  : Tp::AbstractInterface(proxy, staticInterfaceName())
547 {
548 }
549 
551  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
552 {
553 }
554 
556  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
557 {
558 }
559 
561  const QString &error, const QString &message)
562 {
563  disconnect(this, SIGNAL(MailsReceived(const Tp::MailList&)), NULL, NULL);
564  disconnect(this, SIGNAL(UnreadMailsChanged(uint, const Tp::MailList&, const QStringList&)), NULL, NULL);
565 
566  Tp::AbstractInterface::invalidate(proxy, error, message);
567 }
568 
569 ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface(const QString& busName, const QString& objectPath, QObject *parent)
570  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
571 {
572 }
573 
574 ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
575  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
576 {
577 }
578 
580  : Tp::AbstractInterface(proxy, staticInterfaceName())
581 {
582 }
583 
585  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
586 {
587 }
588 
590  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
591 {
592 }
593 
595  const QString &error, const QString &message)
596 {
597  disconnect(this, SIGNAL(PowerSavingChanged(bool)), NULL, NULL);
598 
599  Tp::AbstractInterface::invalidate(proxy, error, message);
600 }
601 
602 ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface(const QString& busName, const QString& objectPath, QObject *parent)
603  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
604 {
605 }
606 
607 ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
608  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
609 {
610 }
611 
613  : Tp::AbstractInterface(proxy, staticInterfaceName())
614 {
615 }
616 
618  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
619 {
620 }
621 
623  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
624 {
625 }
626 
628  const QString &error, const QString &message)
629 {
630  disconnect(this, SIGNAL(PresenceUpdate(const Tp::ContactPresences&)), NULL, NULL);
631 
632  Tp::AbstractInterface::invalidate(proxy, error, message);
633 }
634 
635 ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface(const QString& busName, const QString& objectPath, QObject *parent)
636  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
637 {
638 }
639 
640 ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
641  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
642 {
643 }
644 
646  : Tp::AbstractInterface(proxy, staticInterfaceName())
647 {
648 }
649 
651  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
652 {
653 }
654 
656  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
657 {
658 }
659 
661  const QString &error, const QString &message)
662 {
663  disconnect(this, SIGNAL(NewChannels(const Tp::ChannelDetailsList&)), NULL, NULL);
664  disconnect(this, SIGNAL(ChannelClosed(const QDBusObjectPath&)), NULL, NULL);
665 
666  Tp::AbstractInterface::invalidate(proxy, error, message);
667 }
668 
669 ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface(const QString& busName, const QString& objectPath, QObject *parent)
670  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
671 {
672 }
673 
674 ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
675  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
676 {
677 }
678 
680  : Tp::AbstractInterface(proxy, staticInterfaceName())
681 {
682 }
683 
685  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
686 {
687 }
688 
690  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
691 {
692 }
693 
695  const QString &error, const QString &message)
696 {
697  disconnect(this, SIGNAL(ServicePointsChanged(const Tp::ServicePointInfoList&)), NULL, NULL);
698 
699  Tp::AbstractInterface::invalidate(proxy, error, message);
700 }
701 
702 ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface(const QString& busName, const QString& objectPath, QObject *parent)
703  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
704 {
705 }
706 
707 ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
708  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
709 {
710 }
711 
713  : Tp::AbstractInterface(proxy, staticInterfaceName())
714 {
715 }
716 
718  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
719 {
720 }
721 
723  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
724 {
725 }
726 
728  const QString &error, const QString &message)
729 {
730  disconnect(this, SIGNAL(PresencesChanged(const Tp::SimpleContactPresences&)), NULL, NULL);
731 
732  Tp::AbstractInterface::invalidate(proxy, error, message);
733 }
734 }
735 }
QList< ChannelDetails > ChannelDetailsList
Definition: build/TelepathyQt/_gen/types.h:820
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
void ContactCapabilitiesChanged(const Tp::ContactCapabilitiesMap &caps)
ConnectionInterfaceCapabilitiesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:201
void LocationUpdated(uint contact, const QVariantMap &location)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:93
void NewChannel(const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler)
QList< CapabilityChange > CapabilityChangeList
Definition: build/TelepathyQt/_gen/types.h:522
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
void ClientTypesUpdated(uint contact, const QStringList &clientTypes)
Definition: build/TelepathyQt/_gen/types.h:3917
ConnectionInterfaceBalanceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:168
ConnectionInterfaceContactsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:470
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:391
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:460
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:61
ConnectionInterfaceLocationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:502
QList< AliasPair > AliasPairList
Definition: build/TelepathyQt/_gen/types.h:224
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:226
void GroupsChanged(const Tp::UIntList &contact, const QStringList &added, const QStringList &removed)
void ContactsChanged(const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals)
ConnectionInterfaceAddressingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:36
Definition: build/TelepathyQt/_gen/types.h:1352
ConnectionInterfaceServicePointInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:669
ConnectionInterfaceClientTypesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:267
QList< Mail > MailList
Definition: build/TelepathyQt/_gen/types.h:1780
void BalanceChanged(const Tp::CurrencyAmount &balance)
void AvatarUpdated(uint contact, const QString &newAvatarToken)
ConnectionInterfaceAvatarsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:134
void ContactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)
Definition: cli-connection.h:44
ConnectionInterfaceCellularInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:234
void SelfHandleChanged(uint selfHandle)
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:660
ConnectionInterfaceContactCapabilitiesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:333
Definition: build/TelepathyQt/_gen/types.h:101
void StatusChanged(uint status, uint reason)
void PresencesChanged(const Tp::SimpleContactPresences &presence)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:126
ConnectionInterfaceAliasingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:68
void PresenceUpdate(const Tp::ContactPresences &presence)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:527
void ChannelClosed(const QDBusObjectPath &removed)
ConnectionInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:9
ConnectionInterfacePresenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:602
ConnectionInterfacePowerSavingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:569
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:560
void ConnectionError(const QString &error, const QVariantMap &details)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:159
QList< ServicePointInfo > ServicePointInfoList
Definition: build/TelepathyQt/_gen/types.h:3814
ConnectionInterfaceMailNotificationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:535
ConnectionInterfaceContactListInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:435
void NewChannels(const Tp::ChannelDetailsList &channels)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:259
ConnectionInterfaceAnonymityInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:101
void AvatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type)
void CapabilitiesChanged(const Tp::CapabilityChangeList &caps)
void AliasesChanged(const Tp::AliasPairList &aliases)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:193
void ContactListStateChanged(uint contactListState)
Definition: build/TelepathyQt/_gen/types.h:1646
ConnectionInterfaceContactBlockingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:300
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:495
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:427
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:358
Definition: build/TelepathyQt/_gen/types.h:3505
ConnectionInterfaceContactInfoInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:402
Definition: build/TelepathyQt/_gen/types.h:3827
void ServicePointsChanged(const Tp::ServicePointInfoList &servicePoints)
void GroupRenamed(const QString &oldName, const QString &newName)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:627
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:694
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:24
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:292
ConnectionInterfaceContactGroupsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:366
void BlockedContactsChanged(const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts)
Definition: build/TelepathyQt/_gen/types.h:3428
ConnectionInterfaceSimplePresenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:702
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:594
void ContactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo)
void UnreadMailsChanged(uint count, const Tp::MailList &mailsAdded, const QStringList &mailsRemoved)
ConnectionInterfaceRequestsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-body.hpp:635
void SelfContactChanged(uint selfHandle, const QString &selfID)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:727
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-body.hpp:325


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00194.html0000644000175100017520000014100112530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceConferenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelInterfaceConferenceInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Signals

void ChannelMerged (const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties)
 
void ChannelRemoved (const QDBusObjectPath &channel, const QVariantMap &details)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceConferenceInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceConferenceInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceConferenceInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceConferenceInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceConferenceInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyChannels () const
 
Tp::PendingVariantrequestPropertyInitialChannels () const
 
Tp::PendingVariantrequestPropertyInitialInviteeHandles () const
 
Tp::PendingVariantrequestPropertyInitialInviteeIDs () const
 
Tp::PendingVariantrequestPropertyInvitationMessage () const
 
Tp::PendingVariantrequestPropertyOriginalChannels () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Conference".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceConferenceInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceConferenceInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceConferenceInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceConferenceInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceConferenceInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceConferenceInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Conference", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceConferenceInterface::requestPropertyChannels ( ) const
inline

Asynchronous getter for the remote object property Channels of type Tp::ObjectPathList.

The individual ChannelInterface s that are continued by this conference, which have the same ChannelInterface::ChannelType as this one, but with ChannelInterface::TargetHandleType = CONTACT.

This property MUST NOT be requestable; instead, the InitialChannels property may be specified when requesting a channel.

This is consistent with requesting InitialInviteeHandles and InitialInviteeIDs , rather than requesting ChannelInterfaceGroupInterface::Members and some hypothetical ID version of that property.

Change notification is via the ChannelMerged() and ChannelRemoved() signals.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceConferenceInterface::requestPropertyInitialChannels ( ) const
inline

Asynchronous getter for the remote object property InitialChannels of type Tp::ObjectPathList.

The initial value of Channels .

This property SHOULD be requestable. Omitting it from a request is equivalent to providing it with an empty list as value. Requests where its value has at least two channel paths SHOULD be expected to succeed on any implementation of this interface. If InitialInviteeHandles and InitialInviteeIDs are Allowed_Properties in ConnectionInterfaceRequestsInterface::RequestableChannelClasses , then requests with zero or one channel paths SHOULD also succeed; otherwise, clients SHOULD NOT make requests with zero or one paths for this property.

In GSM, a pair of calls can be merged into a conference, but you can't start a conference call from zero or one existing calls. In XMPP and MSN, you can create a new chatroom, or upgrade one 1-1 channel into a chatroom; however, on these protocols, it is also possible to fake GSM-style merging by upgrading the first channel, then inviting the targets of all the other channels into it.

If possible, the Channels ' states SHOULD NOT be altered by merging them into a conference. However, depending on the protocol, the Channels MAY be placed in a "frozen" state by placing them in this property's value or by calling org.freedesktop.Telepathy.Channel.Interface.MergeableConference.DRAFT.Merge on them.

In Jingle, nothing special will happen to merged calls. UIs MAY automatically place calls on hold before merging them, if that is the desired behaviour; this SHOULD always work. Not doing an implicit hold/unhold seems to preserve least-astonishment.

In GSM, the calls that are merged go into a state similar to Hold, but they cannot be unheld, only split from the conference call using org.freedesktop.Telepathy.Channel.Interface.Splittable.DRAFT.Split .

Depending on the protocol, it might be signalled to remote users that this channel is a continuation of all the requested channels, or that it is only a continuation of the first channel in the list.

In MSN, the conference steals the underlying switchboard (protocol construct) from one of its component channels, so the conference appears to remote users to be a continuation of that channel and no other. The connection manager has to make some arbitrary choice, so we arbitrarily mandate that it SHOULD choose the first channel in the list as the one to continue.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceConferenceInterface::requestPropertyInitialInviteeHandles ( ) const
inline

Asynchronous getter for the remote object property InitialInviteeHandles of type Tp::UIntList.

A list of additional contacts invited to this conference when it was created.

If it is possible to invite new contacts when creating a conference (as opposed to merging several channels into one new conference channel), this property SHOULD be requestable, and appear in the allowed properties in ConnectionInterfaceRequestsInterface::RequestableChannelClasses . Otherwise, this property SHOULD NOT be requestable, and its value SHOULD always be the empty list.

On GSM you have to place a 1-1 call before you can merge it into a conference; on the other hand, you can invite new contacts to XMPP Muji calls and XMPP/MSN/Skype ad-hoc chat rooms without starting a 1-1 channel with them first.

If included in a request, the given contacts are automatically invited into the new channel, as if they had been added with ChannelInterfaceGroupInterface::AddMembers() (InitialInviteeHandles, InvitationMessage ) immediately after the channel was created.

This is a simple convenience API for the common case that a UI upgrades a 1-1 chat to a multi-user chat solely in order to invite someone else to participate.

If the local user was not the initiator of this channel, the ChannelInterfaceGroupInterface::SelfHandle SHOULD appear in the value of this property, together with any other contacts invited at the same time (if that information is known).

InitialInviteeHandles, InitialInviteeIDs and InitialChannels MAY be combined in a single request.

For example, if you have a 1-1 channel C1 with Rob, and you want to invite Sjoerd to join the discussion, you can do so by requesting a channel with InitialChannels=[C1] and InitialInviteeHandles=[sjoerd], or InitialChannels=[C1] and InitialInviteeIDs=["sjoerd@example.com"].

If a request includes some combination of InitialInviteeHandles, InitialInviteeIDs and InitialChannels, then the value of InitialInviteeHandles on the resulting channel SHOULD be the union of the handles from InitialInviteeHandles, the handles corresponding to the InitialInviteeIDs, and the target handles of the InitialChannels, with any duplicate handles removed. Because this property is immutable, its value SHOULD be computed before the channel is announced via the NewChannels signal.

This simplifies identification of new channels in clients - they only have to look at one of the properties, not both. For example, after either of the requests mentioned above, the NewChannels signal would announce the channel with InitialChannels=[C1], InitialInviteeHandles=[rob, sjoerd], and InitialInviteeIDs=["rob@example.net", "sjoerd.example.com"].

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceConferenceInterface::requestPropertyInitialInviteeIDs ( ) const
inline

Asynchronous getter for the remote object property InitialInviteeIDs of type QStringList.

A list of additional contacts invited to this conference when it was created.

This property SHOULD be requestable if and only if InitialInviteeHandles is requestable. Its semantics are the same, except that it takes a list of the string representations of contact handles; invitations are sent to any contact present in either or both of these properties.

When a channel is created, the values of InitialInviteeHandles and InitialInviteeIDs MUST correspond to each other. In particular, this means that the value of InitialInviteeIDs will include the TargetID of each channel in InitialChannels, and the ID corresponding to each handle in InitialInviteeHandles.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceConferenceInterface::requestPropertyInvitationMessage ( ) const
inline

Asynchronous getter for the remote object property InvitationMessage of type QString.

The message that was sent to the InitialInviteeHandles when they were invited.

This property SHOULD be requestable, and appear in the allowed properties in ConnectionInterfaceRequestsInterface::RequestableChannelClasses , in protocols where invitations can have an accompanying text message.

This allows invitations with a message to be sent when using InitialInviteeHandles or InitialInviteeIDs .

If the local user was not the initiator of this channel, the message with which they were invited (if any) SHOULD appear in the value of this property.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceConferenceInterface::requestPropertyOriginalChannels ( ) const
inline

Asynchronous getter for the remote object property OriginalChannels of type Tp::ChannelOriginatorMap.

On GSM conference calls, it is possible to have the same phone number in a conference twice; for instance, it could be the number of a corporate switchboard. This is represented using channel-specific handles; whether or not a channel uses channel-specific handles is reported in ChannelInterfaceGroupInterface::GroupFlags . The ChannelInterfaceGroupInterface::HandleOwners property specifies the mapping from opaque channel-specific handles to actual numbers; this property specifies the original 1-1 channel corresponding to each channel-specific handle in the conference.

In protocols where this situation cannot arise, such as XMPP, this property MAY remain empty.

For example, consider this situation:

  1. Place a call (with path /call/to/simon) to the contact +441234567890 (which is assigned the handle h, say), and ask to be put through to Simon McVittie;
  2. Put that call on hold;
  3. Place another call (with path /call/to/jonny) to +441234567890, and ask to be put through to Jonny Lamb;
  4. Request a new channel with InitialChannels : ['/call/to/simon', '/call/to/jonny'].

The new channel will have the following properties, for some handles s and j:

{
... ChannelInterfaceGroupInterface::GroupFlags : Channel_Specific_Handles | (other flags),
... ChannelInterfaceGroupInterface::Members : [self_handle, s, j],
... ChannelInterfaceGroupInterface::HandleOwners : { s: h, j: h },
... InitialChannels : ['/call/to/simon', '/call/to/jonny'],
... Channels : ['/call/to/simon', '/call/to/jonny'],
... OriginalChannels : { s: '/call/to/simon', j: '/call/to/jonny' },
# ...standard properties like ChannelType: Group elided...
}

Change notification is via the ChannelMerged() and ChannelRemoved() signals: if Channel_Specific_Handle in the former is non-zero, this property SHOULD be updated to map that handle to the merged channel's path.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceConferenceInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceConferenceInterface::ChannelMerged ( const QDBusObjectPath &  channel,
uint  channelSpecificHandle,
const QVariantMap &  properties 
)
signal

Represents the signal ChannelMerged on the remote object.

Emitted when a new channel is added to the value of Channels .

Parameters
channel
The channel that was added to Channels.
channelSpecificHandle
A new channel-specific handle for the TargetHandle of Channel, as 
will appear in OriginalChannels, or 0 if a global handle is used 
for Channel&apos;s TargetHandle on the Group interface of this 
channel.
properties
Channel&apos;s immutable properties.
void Tp::Client::ChannelInterfaceConferenceInterface::ChannelRemoved ( const QDBusObjectPath &  channel,
const QVariantMap &  details 
)
signal

Represents the signal ChannelRemoved on the remote object.

Emitted when a channel is removed from the value of Channels , either because it closed or because it was split using the org.freedesktop.Telepathy.Channel.Interface.Splittable.DRAFT.Split method.

If a channel is removed because it was closed, ChannelInterface::Closed() should be emitted before this signal.

Parameters
channel
The channel that was removed from Channels.
details Additional information about the removal, which may include the same well-known keys as the Details argument of ChannelInterfaceGroupInterface::MembersChangedDetailed() , with the same semantics.
void Tp::Client::ChannelInterfaceConferenceInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01155.html0000644000175100017520000000531412530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSearchMap Member List

This is the complete list of members for Tp::ContactSearchMap, including all inherited members.

ContactSearchMap()Tp::ContactSearchMapinline
ContactSearchMap(const QMap< QString, QString > &a)Tp::ContactSearchMapinline
operator=(const QMap< QString, QString > &a)Tp::ContactSearchMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00630_source.html0000644000175100017520000006576012530426257022527 0ustar00kaffeinekaffeine00000000000000 cli-channel-request.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-request.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.ChannelRequest");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
106  {
107  return internalRequestProperty(QLatin1String("Account"));
108  }
109 
126  {
127  return internalRequestProperty(QLatin1String("UserActionTime"));
128  }
129 
149  {
150  return internalRequestProperty(QLatin1String("PreferredHandler"));
151  }
152 
174  {
175  return internalRequestProperty(QLatin1String("Requests"));
176  }
177 
189  {
190  return internalRequestProperty(QLatin1String("Interfaces"));
191  }
192 
276  {
277  return internalRequestProperty(QLatin1String("Hints"));
278  }
279 
287  {
288  return internalRequestAllProperties();
289  }
290 
291 public Q_SLOTS:
324  inline QDBusPendingReply<> Proceed(int timeout = -1)
325  {
326  if (!invalidationReason().isEmpty()) {
327  return QDBusPendingReply<>(QDBusMessage::createError(
328  invalidationReason(),
329  invalidationMessage()
330  ));
331  }
332 
333  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
334  this->staticInterfaceName(), QLatin1String("Proceed"));
335  return this->connection().asyncCall(callMessage, timeout);
336  }
337 
380  inline QDBusPendingReply<> Cancel(int timeout = -1)
381  {
382  if (!invalidationReason().isEmpty()) {
383  return QDBusPendingReply<>(QDBusMessage::createError(
384  invalidationReason(),
385  invalidationMessage()
386  ));
387  }
388 
389  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
390  this->staticInterfaceName(), QLatin1String("Cancel"));
391  return this->connection().asyncCall(callMessage, timeout);
392  }
393 
394 Q_SIGNALS:
417  void Failed(const QString& error, const QString& message);
418 
427  void Succeeded();
428 
469  void SucceededWithChannel(const QDBusObjectPath& connection, const QVariantMap& connectionProperties, const QDBusObjectPath& channel, const QVariantMap& channelProperties);
470 
471 protected:
472  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
473 };
474 }
475 }
476 Q_DECLARE_METATYPE(Tp::Client::ChannelRequestInterface*)
QDBusPendingReply Cancel(int timeout=-1)
Definition: cli-channel-request.h:380
Tp::PendingVariant * requestPropertyUserActionTime() const
Definition: cli-channel-request.h:125
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertyRequests() const
Definition: cli-channel-request.h:173
QDBusPendingReply Proceed(int timeout=-1)
Definition: cli-channel-request.h:324
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariant * requestPropertyAccount() const
Definition: cli-channel-request.h:105
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel-request.h:286
Tp::PendingVariant * requestPropertyHints() const
Definition: cli-channel-request.h:275
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingVariant * requestPropertyPreferredHandler() const
Definition: cli-channel-request.h:148
static QLatin1String staticInterfaceName()
Definition: cli-channel-request.h:55
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-channel-request.h:188
Definition: cli-channel-request.h:44
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00253.html0000644000175100017520000017554412530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeTubesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelTypeTubesInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::SupportedSocketMap
GetAvailableStreamTubeTypes (int timeout=-1)
 
QDBusPendingReply< Tp::UIntListGetAvailableTubeTypes (int timeout=-1)
 
QDBusPendingReply
< Tp::TubeInfoList
ListTubes (int timeout=-1)
 
QDBusPendingReply< uint > OfferDBusTube (const QString &service, const QVariantMap &parameters, int timeout=-1)
 
QDBusPendingReply< uint > OfferStreamTube (const QString &service, const QVariantMap &parameters, uint addressType, const QDBusVariant &address, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)
 
QDBusPendingReply< QString > AcceptDBusTube (uint ID, int timeout=-1)
 
QDBusPendingReply< QDBusVariant > AcceptStreamTube (uint ID, uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)
 
QDBusPendingReply CloseTube (uint ID, int timeout=-1)
 
QDBusPendingReply< QString > GetDBusTubeAddress (uint ID, int timeout=-1)
 
QDBusPendingReply
< Tp::DBusTubeMemberList
GetDBusNames (uint ID, int timeout=-1)
 
QDBusPendingReply< uint,
QDBusVariant > 
GetStreamTubeSocketAddress (uint ID, int timeout=-1)
 

Signals

void NewTube (uint ID, uint initiator, uint type, const QString &service, const QVariantMap &parameters, uint state)
 
void TubeStateChanged (uint ID, uint state)
 
void TubeClosed (uint ID)
 
void DBusNamesChanged (uint ID, const Tp::DBusTubeMemberList &added, const Tp::UIntList &removed)
 
void StreamTubeNewConnection (uint ID, uint handle)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeTubesInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeTubesInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeTubesInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeTubesInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeTubesInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.Tubes".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeTubesInterface::ChannelTypeTubesInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeTubesInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeTubesInterface::ChannelTypeTubesInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeTubesInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeTubesInterface::ChannelTypeTubesInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeTubesInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeTubesInterface::ChannelTypeTubesInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeTubesInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeTubesInterface::ChannelTypeTubesInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeTubesInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeTubesInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.Tubes", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelTypeTubesInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::SupportedSocketMap> Tp::Client::ChannelTypeTubesInterface::GetAvailableStreamTubeTypes ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetAvailableStreamTubeTypes on the remote object.

List the available address types and access-control types for stream tubes.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for stream tubes with that address type. For simplicity, if a CM supports offering a particular type of tube, it is assumed to support accepting it.

A typical value for a host without IPv6 support:

      {
        Socket_Address_Type_IPv4:
          [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
           Socket_Access_Control_Netmask],
        Socket_Address_Type_Unix:
          [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
      }
    

If stream tubes are not supported, this will be an empty dictionary.

QDBusPendingReply<Tp::UIntList> Tp::Client::ChannelTypeTubesInterface::GetAvailableTubeTypes ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetAvailableTubeTypes on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of the available tube types, as defined by the Tube_Type 
enum.
QDBusPendingReply<Tp::TubeInfoList> Tp::Client::ChannelTypeTubesInterface::ListTubes ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListTubes on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
Return an array of tuples, each representing a tube, with the 
following members: the tube&apos;s ID the tube&apos;s initiator the 
tube&apos;s type the tube&apos;s service the tube&apos;s parameters 
the tube&apos;s state
QDBusPendingReply<uint> Tp::Client::ChannelTypeTubesInterface::OfferDBusTube ( const QString &  service,
const QVariantMap &  parameters,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method OfferDBusTube on the remote object.

Offers a D-Bus tube providing the service specified.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
service
A string representing the service name that will be used over the 
tube. It should be a well-known D-Bus service name, of the form 
com.example.ServiceName.
parameters
A dictionary of properties for the new tube; the allowable keys, 
types and values are defined by the service. Connection managers 
must support the value being any primitive (non-container) D-Bus 
type, or a byte array &apos;ay&apos;.
timeoutThe timeout in milliseconds.
Returns
The ID of the new tube.
QDBusPendingReply<uint> Tp::Client::ChannelTypeTubesInterface::OfferStreamTube ( const QString &  service,
const QVariantMap &  parameters,
uint  addressType,
const QDBusVariant &  address,
uint  accessControl,
const QDBusVariant &  accessControlParam,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method OfferStreamTube on the remote object.

Offer a stream tube exporting the local socket specified.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
service A string representing the service name that will be used over the tube. It should be a well-known TCP service name as defined by http://www.iana.org/assignments/port-numbers or http://www.dns-sd.org/ServiceTypes.html, for instance "rsync" or "daap".
parameters

A dictionary of properties for the new tube; the allowable keys, types and values are defined by the service. Connection managers must support the value being any primitive (non-container) D-Bus type, or a byte array 'ay'.

These should usually be the same key-value pairs specified for use in the DNS-SD TXT record for that service.

addressType
The type of the listening address of the local service, as a member 
of Socket_Address_Type.
address
The listening address of the local service, as indicated by the 
address_type.
accessControl
The access control the local service applies to the local socket, 
specified so the connection manager can behave appropriately when 
it connects.
accessControlParam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
timeoutThe timeout in milliseconds.
Returns
The ID of the new tube.
QDBusPendingReply<QString> Tp::Client::ChannelTypeTubesInterface::AcceptDBusTube ( uint  ID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AcceptDBusTube on the remote object.

Accept a D-Bus tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeStateChanged signal is emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the tube to accept.
timeoutThe timeout in milliseconds.
Returns
The string describing the address of the private bus. The client 
should not attempt to connect to the address until the tube is open.
QDBusPendingReply<QDBusVariant> Tp::Client::ChannelTypeTubesInterface::AcceptStreamTube ( uint  ID,
uint  addressType,
uint  accessControl,
const QDBusVariant &  accessControlParam,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AcceptStreamTube on the remote object.

Accept a stream tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeStateChanged signal is emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the tube to accept.
addressType
The type of address the connection manager should listen on.
accessControl
The type of access control the connection manager should apply to 
the socket.
accessControlParam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
timeoutThe timeout in milliseconds.
Returns
The address on which the connection manager will listen for 
connections to this tube. The client should not attempt to connect 
to the address until the tube is open.
QDBusPendingReply Tp::Client::ChannelTypeTubesInterface::CloseTube ( uint  ID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CloseTube on the remote object.

Close a tube.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the tube to close.
timeoutThe timeout in milliseconds.
QDBusPendingReply<QString> Tp::Client::ChannelTypeTubesInterface::GetDBusTubeAddress ( uint  ID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetDBusTubeAddress on the remote object.

For a D-Bus tube, return a string describing the address of the private bus.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the tube to get an address for.
timeoutThe timeout in milliseconds.
Returns
The bus address.
QDBusPendingReply<Tp::DBusTubeMemberList> Tp::Client::ChannelTypeTubesInterface::GetDBusNames ( uint  ID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetDBusNames on the remote object.

For a multi-user (i.e. Handle_Type_Room) D-Bus tube, obtain a mapping between contact handles and their unique bus names on this tube.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the tube to get names for.
timeoutThe timeout in milliseconds.
Returns
An array of structures, each containing a contact handle and a 
D-Bus bus name.
QDBusPendingReply<uint, QDBusVariant> Tp::Client::ChannelTypeTubesInterface::GetStreamTubeSocketAddress ( uint  ID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetStreamTubeSocketAddress on the remote object.

For a stream tube, obtain the address of the socket used to communicate over this tube.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The ID of the stream tube to get the socket for.
timeoutThe timeout in milliseconds.
Returns
The type of the listening address of the socket, as a member of 
Socket_Address_Type.
The listening address of the socket, as indicated by the 
address_type.
void Tp::Client::ChannelTypeTubesInterface::NewTube ( uint  ID,
uint  initiator,
uint  type,
const QString &  service,
const QVariantMap &  parameters,
uint  state 
)
signal

Represents the signal NewTube on the remote object.

Emitted when a tube is created.

Parameters
ID
The ID of the new tube.
initiator
The handle of the contact who initiated the tube.
type
The tube type, as defined by the Tube_Type enum.
service
A string representing the service that will be used over the tube.
parameters
The new tube&apos;s properties.
state
The new tube&apos;s state.
void Tp::Client::ChannelTypeTubesInterface::TubeStateChanged ( uint  ID,
uint  state 
)
signal

Represents the signal TubeStateChanged on the remote object.

Emitted when the state of a tube changes.

Parameters
ID
The ID of the tube that changed state.
state
The new state of the tube; see the Tube_State enumeration.
void Tp::Client::ChannelTypeTubesInterface::TubeClosed ( uint  ID)
signal

Represents the signal TubeClosed on the remote object.

Emitted when a tube has been closed. The ID of a closed tube is no longer valid. The ID may later be reused for a new tube.

Parameters
ID
The ID of the tube that was closed.
void Tp::Client::ChannelTypeTubesInterface::DBusNamesChanged ( uint  ID,
const Tp::DBusTubeMemberList added,
const Tp::UIntList removed 
)
signal

Represents the signal DBusNamesChanged on the remote object.

Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a participant opens or closes the tube.

Parameters
ID
The ID of the tube whose names have changed.
added
Array of handles and D-Bus names of new participants.
removed
Array of handles of former participants.
void Tp::Client::ChannelTypeTubesInterface::StreamTubeNewConnection ( uint  ID,
uint  handle 
)
signal

Represents the signal StreamTubeNewConnection on the remote object.

Emitted on a stream tube when a participant opens a new connection to its socket.

Parameters
ID
The ID of the tube
handle
The handle of the participant who opened the new connection
void Tp::Client::ChannelTypeTubesInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01214.html0000644000175100017520000000542612530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSearchResultMap Member List

This is the complete list of members for Tp::ContactSearchResultMap, including all inherited members.

ContactSearchResultMap()Tp::ContactSearchResultMapinline
ContactSearchResultMap(const QMap< QString, ContactInfoFieldList > &a)Tp::ContactSearchResultMapinline
operator=(const QMap< QString, ContactInfoFieldList > &a)Tp::ContactSearchResultMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00627_source.html0000644000175100017520000003633212530426257022526 0ustar00kaffeinekaffeine00000000000000 cli-channel-dispatcher-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-dispatcher-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/channel-dispatcher.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ChannelDispatcherInterface::ChannelDispatcherInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ChannelDispatcherInterface::ChannelDispatcherInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27 
28  Tp::AbstractInterface::invalidate(proxy, error, message);
29 }
30 
31 ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface(const QString& busName, const QString& objectPath, QObject *parent)
32  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
33 {
34 }
35 
36 ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
37  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
38 {
39 }
40 
42  : Tp::AbstractInterface(proxy, staticInterfaceName())
43 {
44 }
45 
47  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
48 {
49 }
50 
52  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
53 {
54 }
55 
57  const QString &error, const QString &message)
58 {
59 
60  Tp::AbstractInterface::invalidate(proxy, error, message);
61 }
62 }
63 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
ChannelDispatcherInterfaceMessages1Interface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-dispatcher-body.hpp:31
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
Definition: cli-channel-dispatcher.h:44
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-dispatcher-body.hpp:56
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-dispatcher-body.hpp:24
ChannelDispatcherInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-dispatcher-body.hpp:9


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00312.html0000644000175100017520000002223612530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::ConnectionManagerLowlevel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ConnectionManagerLowlevel Class Reference

The ConnectionManagerLowlevel class extends ConnectionManager with support to low-level features. More...

#include <TelepathyQt/ConnectionManagerLowlevel>

Inherits QObject, and Tp::RefCounted.

Public Member Functions

 ~ConnectionManagerLowlevel ()
 
bool isValid () const
 
ConnectionManagerPtr connectionManager () const
 
PendingConnectionrequestConnection (const QString &protocolName, const QVariantMap &parameters)
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Detailed Description

The ConnectionManagerLowlevel class extends ConnectionManager with support to low-level features.

Constructor & Destructor Documentation

Tp::ConnectionManagerLowlevel::~ConnectionManagerLowlevel ( )

Member Function Documentation

bool Tp::ConnectionManagerLowlevel::isValid ( ) const
ConnectionManagerPtr Tp::ConnectionManagerLowlevel::connectionManager ( ) const
PendingConnection * Tp::ConnectionManagerLowlevel::requestConnection ( const QString &  protocol,
const QVariantMap &  parameters 
)

Request a Connection object representing a given account on a given protocol with the given parameters.

Return a pending operation representing the Connection object which will succeed when the connection has been created or fail if an error occurred.

Parameters
protocolName of the protocol to create the account for.
parametersAccount parameters.
Returns
A PendingOperation which will emit PendingConnection::finished when the account has been created of failed its creation process.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x6c.html0000644000175100017520000002236412530426260024204 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- l -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01283.html0000644000175100017520000003011412530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeStreamedMediaInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeStreamedMediaInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelTypeStreamedMediaInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeStreamedMediaInterface
ChannelTypeStreamedMediaInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeStreamedMediaInterface
ChannelTypeStreamedMediaInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeStreamedMediaInterface
ChannelTypeStreamedMediaInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeStreamedMediaInterfaceexplicit
ChannelTypeStreamedMediaInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeStreamedMediaInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeStreamedMediaInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListStreams(int timeout=-1)Tp::Client::ChannelTypeStreamedMediaInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoveStreams(const Tp::UIntList &streams, int timeout=-1)Tp::Client::ChannelTypeStreamedMediaInterfaceinlineslot
requestAllProperties() const Tp::Client::ChannelTypeStreamedMediaInterfaceinline
requestPropertyImmutableStreams() const Tp::Client::ChannelTypeStreamedMediaInterfaceinline
requestPropertyInitialAudio() const Tp::Client::ChannelTypeStreamedMediaInterfaceinline
requestPropertyInitialVideo() const Tp::Client::ChannelTypeStreamedMediaInterfaceinline
RequestStreamDirection(uint streamID, uint streamDirection, int timeout=-1)Tp::Client::ChannelTypeStreamedMediaInterfaceinlineslot
RequestStreams(uint contactHandle, const Tp::UIntList &types, int timeout=-1)Tp::Client::ChannelTypeStreamedMediaInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeStreamedMediaInterfaceinlinestatic
StreamAdded(uint streamID, uint contactHandle, uint streamType)Tp::Client::ChannelTypeStreamedMediaInterfacesignal
StreamDirectionChanged(uint streamID, uint streamDirection, uint pendingFlags)Tp::Client::ChannelTypeStreamedMediaInterfacesignal
StreamError(uint streamID, uint errorCode, const QString &message)Tp::Client::ChannelTypeStreamedMediaInterfacesignal
StreamRemoved(uint streamID)Tp::Client::ChannelTypeStreamedMediaInterfacesignal
StreamStateChanged(uint streamID, uint streamState)Tp::Client::ChannelTypeStreamedMediaInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00067.html0000644000175100017520000003336612530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractConnectionInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::AbstractConnectionInterface Class Reference

Base class for all the Connection object interface implementations. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractDBusServiceInterface.

Inherited by Tp::BaseConnectionAddressingInterface, Tp::BaseConnectionAliasingInterface, Tp::BaseConnectionAvatarsInterface, Tp::BaseConnectionContactInfoInterface, Tp::BaseConnectionContactListInterface, Tp::BaseConnectionContactsInterface, Tp::BaseConnectionRequestsInterface, and Tp::BaseConnectionSimplePresenceInterface.

Public Member Functions

 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
virtual QVariantMap immutableProperties () const =0
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
virtual void createAdaptor ()=0
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for all the Connection object interface implementations.

Constructor & Destructor Documentation

Tp::AbstractConnectionInterface::AbstractConnectionInterface ( const QString &  interfaceName)
Tp::AbstractConnectionInterface::~AbstractConnectionInterface ( )
virtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01028.html0000644000175100017520000000612012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor0< R > Member List

This is the complete list of members for Tp::PtrFunctor0< R >, including all inherited members.

fnTp::PtrFunctor0< R >
FunctionType typedefTp::PtrFunctor0< R >
operator()() const Tp::PtrFunctor0< R >inline
PtrFunctor0(FunctionType fn)Tp::PtrFunctor0< R >inline
ResultType typedefTp::PtrFunctor0< R >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00882.html0000644000175100017520000004720212530426257021147 0ustar00kaffeinekaffeine00000000000000 Connection proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Connection proxies

Classes

class  Tp::CapabilitiesBase
 The CapabilitiesBase class represents the capabilities a Connection or a Contact supports. More...
 
class  Tp::ConnectionCapabilities
 The ConnectionCapabilities class represents the capabilities of a Connection. More...
 
class  Tp::ConnectionLowlevel
 The ConnectionLowlevel class extends Connection with support to low-level features. More...
 
class  Tp::Connection
 The Connection class represents a Telepathy connection. More...
 
class  Tp::Connection::ErrorDetails
 The Connection::ErrorDetails class represents the details of a connection error. More...
 
class  Tp::ContactCapabilities
 The ContactCapabilities class represents the capabilities of a Contact. More...
 
class  Tp::ContactManager
 The ContactManager class is responsible for managing contacts. More...
 
class  Tp::Contact::InfoFields
 The Contact::InfoFields class represents the information of a Telepathy contact. More...
 
class  Tp::Contact
 The Contact class represents a Telepathy contact. More...
 
class  Tp::LocationInfo
 The LocationInfo class represents the location of a Telepathy Contact. More...
 
class  Tp::PendingConnection
 The PendingConnection class represents the parameters of and the reply to an asynchronous connection request. More...
 
class  Tp::PendingContactAttributes
 The PendingContactAttributes class represents the parameters of and the reply to an asynchronous request for raw contact attributes, as used in the ConnectionLowlevel::contactAttributes() low-level convenience method wrapping the Client::ConnectionInterfaceContactsInterface::GetContactAttributes() D-Bus method. More...
 
class  Tp::PendingContactInfo
 The PendingContactInfo class represents the parameters of and the reply to an asynchronous contact info request. More...
 
class  Tp::PendingContacts
 The PendingContacts class is used by ContactManager when creating/updating Contact objects. More...
 
class  Tp::PendingHandles
 The PendingHandles class represents the parameters of and the reply to an asynchronous handle request/hold. More...
 
class  Tp::ReferencedHandles
 Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles container is guaranteed to be valid (and stay valid, as long it's in at least one ReferencedHandles container). More...
 
class  Tp::Client::ConnectionInterface
 
class  Tp::Client::ConnectionInterfaceAddressingInterface
 
class  Tp::Client::ConnectionInterfaceAliasingInterface
 
class  Tp::Client::ConnectionInterfaceAnonymityInterface
 
class  Tp::Client::ConnectionInterfaceAvatarsInterface
 
class  Tp::Client::ConnectionInterfaceBalanceInterface
 
class  Tp::Client::ConnectionInterfaceCapabilitiesInterface
 
class  Tp::Client::ConnectionInterfaceCellularInterface
 
class  Tp::Client::ConnectionInterfaceClientTypesInterface
 
class  Tp::Client::ConnectionInterfaceContactBlockingInterface
 
class  Tp::Client::ConnectionInterfaceContactCapabilitiesInterface
 
class  Tp::Client::ConnectionInterfaceContactGroupsInterface
 
class  Tp::Client::ConnectionInterfaceContactInfoInterface
 
class  Tp::Client::ConnectionInterfaceContactListInterface
 
class  Tp::Client::ConnectionInterfaceContactsInterface
 
class  Tp::Client::ConnectionInterfaceLocationInterface
 
class  Tp::Client::ConnectionInterfaceMailNotificationInterface
 
class  Tp::Client::ConnectionInterfacePowerSavingInterface
 
class  Tp::Client::ConnectionInterfacePresenceInterface
 
class  Tp::Client::ConnectionInterfaceRequestsInterface
 
class  Tp::Client::ConnectionInterfaceServicePointInterface
 
class  Tp::Client::ConnectionInterfaceSimplePresenceInterface
 

Detailed Description

Proxy objects representing remote Telepathy Connection objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00623_source.html0000644000175100017520000022001212530426257022510 0ustar00kaffeinekaffeine00000000000000 cli-call-stream.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-stream.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT CallStreamInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Call1.Stream");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
110  {
111  return internalRequestProperty(QLatin1String("Interfaces"));
112  }
113 
143  {
144  return internalRequestProperty(QLatin1String("RemoteMembers"));
145  }
146 
159  {
160  return internalRequestProperty(QLatin1String("RemoteMemberIdentifiers"));
161  }
162 
201  {
202  return internalRequestProperty(QLatin1String("LocalSendingState"));
203  }
204 
221  {
222  return internalRequestProperty(QLatin1String("CanRequestReceiving"));
223  }
224 
232  {
233  return internalRequestAllProperties();
234  }
235 
236 public Q_SLOTS:
262  inline QDBusPendingReply<> SetSending(bool send, int timeout = -1)
263  {
264  if (!invalidationReason().isEmpty()) {
265  return QDBusPendingReply<>(QDBusMessage::createError(
266  invalidationReason(),
267  invalidationMessage()
268  ));
269  }
270 
271  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
272  this->staticInterfaceName(), QLatin1String("SetSending"));
273  callMessage << QVariant::fromValue(send);
274  return this->connection().asyncCall(callMessage, timeout);
275  }
276 
302  inline QDBusPendingReply<> RequestReceiving(uint contact, bool receive, int timeout = -1)
303  {
304  if (!invalidationReason().isEmpty()) {
305  return QDBusPendingReply<>(QDBusMessage::createError(
306  invalidationReason(),
307  invalidationMessage()
308  ));
309  }
310 
311  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
312  this->staticInterfaceName(), QLatin1String("RequestReceiving"));
313  callMessage << QVariant::fromValue(contact) << QVariant::fromValue(receive);
314  return this->connection().asyncCall(callMessage, timeout);
315  }
316 
317 Q_SIGNALS:
347  void RemoteMembersChanged(const Tp::ContactSendingStateMap& updates, const Tp::HandleIdentifierMap& identifiers, const Tp::UIntList& removed, const Tp::CallStateReason& reason);
348 
364  void LocalSendingStateChanged(uint state, const Tp::CallStateReason& reason);
365 
366 protected:
367  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
368 };
369 
378 {
379  Q_OBJECT
380 
381 public:
388  static inline QLatin1String staticInterfaceName()
389  {
390  return QLatin1String("org.freedesktop.Telepathy.Call1.Stream.Interface.Media");
391  }
392 
401  const QString& busName,
402  const QString& objectPath,
403  QObject* parent = 0
404  );
405 
415  const QDBusConnection& connection,
416  const QString& busName,
417  const QString& objectPath,
418  QObject* parent = 0
419  );
420 
428 
437 
445  CallStreamInterfaceMediaInterface(const Tp::Client::CallStreamInterface& mainInterface, QObject* parent);
446 
463  {
464  return internalRequestProperty(QLatin1String("SendingState"));
465  }
466 
481  {
482  return internalRequestProperty(QLatin1String("ReceivingState"));
483  }
484 
495  {
496  return internalRequestProperty(QLatin1String("Transport"));
497  }
498 
509  {
510  return internalRequestProperty(QLatin1String("LocalCandidates"));
511  }
512 
527  {
528  return internalRequestProperty(QLatin1String("LocalCredentials"));
529  }
530 
553  {
554  return internalRequestProperty(QLatin1String("STUNServers"));
555  }
556 
655  {
656  return internalRequestProperty(QLatin1String("RelayInfo"));
657  }
658 
679  {
680  return internalRequestProperty(QLatin1String("HasServerInfo"));
681  }
682 
694  {
695  return internalRequestProperty(QLatin1String("Endpoints"));
696  }
697 
709  {
710  return internalRequestProperty(QLatin1String("ICERestartPending"));
711  }
712 
720  {
721  return internalRequestAllProperties();
722  }
723 
724 public Q_SLOTS:
745  inline QDBusPendingReply<> CompleteSendingStateChange(uint state, int timeout = -1)
746  {
747  if (!invalidationReason().isEmpty()) {
748  return QDBusPendingReply<>(QDBusMessage::createError(
749  invalidationReason(),
750  invalidationMessage()
751  ));
752  }
753 
754  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
755  this->staticInterfaceName(), QLatin1String("CompleteSendingStateChange"));
756  callMessage << QVariant::fromValue(state);
757  return this->connection().asyncCall(callMessage, timeout);
758  }
759 
773  inline QDBusPendingReply<> ReportSendingFailure(uint reason, const QString& error, const QString& message, int timeout = -1)
774  {
775  if (!invalidationReason().isEmpty()) {
776  return QDBusPendingReply<>(QDBusMessage::createError(
777  invalidationReason(),
778  invalidationMessage()
779  ));
780  }
781 
782  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
783  this->staticInterfaceName(), QLatin1String("ReportSendingFailure"));
784  callMessage << QVariant::fromValue(reason) << QVariant::fromValue(error) << QVariant::fromValue(message);
785  return this->connection().asyncCall(callMessage, timeout);
786  }
787 
808  inline QDBusPendingReply<> CompleteReceivingStateChange(uint state, int timeout = -1)
809  {
810  if (!invalidationReason().isEmpty()) {
811  return QDBusPendingReply<>(QDBusMessage::createError(
812  invalidationReason(),
813  invalidationMessage()
814  ));
815  }
816 
817  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
818  this->staticInterfaceName(), QLatin1String("CompleteReceivingStateChange"));
819  callMessage << QVariant::fromValue(state);
820  return this->connection().asyncCall(callMessage, timeout);
821  }
822 
836  inline QDBusPendingReply<> ReportReceivingFailure(uint reason, const QString& error, const QString& message, int timeout = -1)
837  {
838  if (!invalidationReason().isEmpty()) {
839  return QDBusPendingReply<>(QDBusMessage::createError(
840  invalidationReason(),
841  invalidationMessage()
842  ));
843  }
844 
845  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
846  this->staticInterfaceName(), QLatin1String("ReportReceivingFailure"));
847  callMessage << QVariant::fromValue(reason) << QVariant::fromValue(error) << QVariant::fromValue(message);
848  return this->connection().asyncCall(callMessage, timeout);
849  }
850 
872  inline QDBusPendingReply<> SetCredentials(const QString& username, const QString& password, int timeout = -1)
873  {
874  if (!invalidationReason().isEmpty()) {
875  return QDBusPendingReply<>(QDBusMessage::createError(
876  invalidationReason(),
877  invalidationMessage()
878  ));
879  }
880 
881  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
882  this->staticInterfaceName(), QLatin1String("SetCredentials"));
883  callMessage << QVariant::fromValue(username) << QVariant::fromValue(password);
884  return this->connection().asyncCall(callMessage, timeout);
885  }
886 
903  inline QDBusPendingReply<> AddCandidates(const Tp::CandidateList& candidates, int timeout = -1)
904  {
905  if (!invalidationReason().isEmpty()) {
906  return QDBusPendingReply<>(QDBusMessage::createError(
907  invalidationReason(),
908  invalidationMessage()
909  ));
910  }
911 
912  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
913  this->staticInterfaceName(), QLatin1String("AddCandidates"));
914  callMessage << QVariant::fromValue(candidates);
915  return this->connection().asyncCall(callMessage, timeout);
916  }
917 
931  inline QDBusPendingReply<> FinishInitialCandidates(int timeout = -1)
932  {
933  if (!invalidationReason().isEmpty()) {
934  return QDBusPendingReply<>(QDBusMessage::createError(
935  invalidationReason(),
936  invalidationMessage()
937  ));
938  }
939 
940  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
941  this->staticInterfaceName(), QLatin1String("FinishInitialCandidates"));
942  return this->connection().asyncCall(callMessage, timeout);
943  }
944 
960  inline QDBusPendingReply<> Fail(const Tp::CallStateReason& reason, int timeout = -1)
961  {
962  if (!invalidationReason().isEmpty()) {
963  return QDBusPendingReply<>(QDBusMessage::createError(
964  invalidationReason(),
965  invalidationMessage()
966  ));
967  }
968 
969  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
970  this->staticInterfaceName(), QLatin1String("Fail"));
971  callMessage << QVariant::fromValue(reason);
972  return this->connection().asyncCall(callMessage, timeout);
973  }
974 
975 Q_SIGNALS:
988  void SendingStateChanged(uint state);
989 
999  void ReceivingStateChanged(uint state);
1000 
1010  void LocalCandidatesAdded(const Tp::CandidateList& candidates);
1011 
1019  void LocalCredentialsChanged(const QString& username, const QString& password);
1020 
1026  void RelayInfoChanged(const Tp::StringVariantMapList& relayInfo);
1027 
1033  void STUNServersChanged(const Tp::SocketAddressIPList& servers);
1034 
1045  void ServerInfoRetrieved();
1046 
1060  void EndpointsChanged(const Tp::ObjectPathList& endpointsAdded, const Tp::ObjectPathList& endpointsRemoved);
1061 
1069  void ICERestartRequested();
1070 
1071 protected:
1072  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1073 };
1074 }
1075 }
1076 Q_DECLARE_METATYPE(Tp::Client::CallStreamInterface*)
1077 Q_DECLARE_METATYPE(Tp::Client::CallStreamInterfaceMediaInterface*)
QDBusPendingReply ReportReceivingFailure(uint reason, const QString &error, const QString &message, int timeout=-1)
Definition: cli-call-stream.h:836
QDBusPendingReply AddCandidates(const Tp::CandidateList &candidates, int timeout=-1)
Definition: cli-call-stream.h:903
Tp::PendingVariant * requestPropertyLocalCandidates() const
Definition: cli-call-stream.h:508
Tp::PendingVariant * requestPropertySTUNServers() const
Definition: cli-call-stream.h:552
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
QList< Candidate > CandidateList
Definition: build/TelepathyQt/_gen/types.h:413
Definition: cli-call-stream.h:377
QDBusPendingReply CompleteSendingStateChange(uint state, int timeout=-1)
Definition: cli-call-stream.h:745
Tp::PendingVariant * requestPropertyRemoteMembers() const
Definition: cli-call-stream.h:142
QDBusPendingReply FinishInitialCandidates(int timeout=-1)
Definition: cli-call-stream.h:931
QList< StringVariantMap > StringVariantMapList
Definition: build/TelepathyQt/_gen/types.h:3087
Tp::PendingVariant * requestPropertyEndpoints() const
Definition: cli-call-stream.h:693
QDBusPendingReply Fail(const Tp::CallStateReason &reason, int timeout=-1)
Definition: cli-call-stream.h:960
Tp::PendingVariant * requestPropertyTransport() const
Definition: cli-call-stream.h:494
Definition: build/TelepathyQt/_gen/types.h:320
static QLatin1String staticInterfaceName()
Definition: cli-call-stream.h:55
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariant * requestPropertyICERestartPending() const
Definition: cli-call-stream.h:708
Definition: build/TelepathyQt/_gen/types.h:101
QDBusPendingReply ReportSendingFailure(uint reason, const QString &error, const QString &message, int timeout=-1)
Definition: cli-call-stream.h:773
QDBusPendingReply RequestReceiving(uint contact, bool receive, int timeout=-1)
Definition: cli-call-stream.h:302
Tp::PendingVariant * requestPropertySendingState() const
Definition: cli-call-stream.h:462
Tp::PendingVariant * requestPropertyRelayInfo() const
Definition: cli-call-stream.h:654
QList< SocketAddressIP > SocketAddressIPList
Definition: build/TelepathyQt/_gen/types.h:2876
Definition: cli-call-stream.h:44
Definition: build/TelepathyQt/_gen/types.h:81
Tp::PendingVariant * requestPropertyLocalSendingState() const
Definition: cli-call-stream.h:200
QDBusPendingReply SetSending(bool send, int timeout=-1)
Definition: cli-call-stream.h:262
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-call-stream.h:109
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingVariant * requestPropertyReceivingState() const
Definition: cli-call-stream.h:480
Definition: build/TelepathyQt/_gen/types.h:1646
Tp::PendingVariant * requestPropertyRemoteMemberIdentifiers() const
Definition: cli-call-stream.h:158
Tp::PendingVariant * requestPropertyLocalCredentials() const
Definition: cli-call-stream.h:526
Definition: build/TelepathyQt/_gen/types.h:1284
Tp::PendingVariant * requestPropertyCanRequestReceiving() const
Definition: cli-call-stream.h:220
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-stream.h:719
QDBusPendingReply SetCredentials(const QString &username, const QString &password, int timeout=-1)
Definition: cli-call-stream.h:872
Tp::PendingVariant * requestPropertyHasServerInfo() const
Definition: cli-call-stream.h:678
static QLatin1String staticInterfaceName()
Definition: cli-call-stream.h:388
QDBusPendingReply CompleteReceivingStateChange(uint state, int timeout=-1)
Definition: cli-call-stream.h:808
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-stream.h:231


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00381.html0000644000175100017520000001240712530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::LocalPendingInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::LocalPendingInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint toBeAdded
 
uint actor
 
uint reason
 
QString message
 

Detailed Description

Structure type generated from the specification.

A structure representing a contact whose attempt to join a group is to be confirmed by the local user using AddMembers.

Member Data Documentation

uint Tp::LocalPendingInfo::toBeAdded

The contact to be added to the group

uint Tp::LocalPendingInfo::actor

The contact requesting or causing the change

uint Tp::LocalPendingInfo::reason

The reason for the change

QString Tp::LocalPendingInfo::message

A human-readable message from the Actor, or an empty string if there is no message


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01342.html0000644000175100017520000000723312530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceMediaSignallingAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceMediaSignallingAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetSessionHandlers(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceMediaSignallingAdaptorslot
NewSessionHandler(const QDBusObjectPath &sessionHandler, const QString &sessionType)Tp::Service::ChannelInterfaceMediaSignallingAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00126.html0000644000175100017520000002501112530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::BaseFunctorCaller< T, Functor > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Public Attributes | List of all members
Tp::BaseFunctorCaller< T, Functor > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::AbstractFunctorCaller.

Public Member Functions

 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Public Attributes

Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Additional Inherited Members

- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Constructor & Destructor Documentation

template<class T, class Functor>
Tp::BaseFunctorCaller< T, Functor >::BaseFunctorCaller ( const Functor &  functor,
AbstractFunctorCaller::HookType  invokeMethodHook 
)
inline
template<class T, class Functor>
virtual Tp::BaseFunctorCaller< T, Functor >::~BaseFunctorCaller ( )
inlinevirtual

Member Function Documentation

template<class T, class Functor>
virtual AbstractFunctorCaller* Tp::BaseFunctorCaller< T, Functor >::clone ( ) const
inlinevirtual

Member Data Documentation

template<class T, class Functor>
Functor Tp::BaseFunctorCaller< T, Functor >::functor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01097.html0000644000175100017520000000744712530426260021147 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RequestableChannelClassSpecList Member List

This is the complete list of members for Tp::RequestableChannelClassSpecList, including all inherited members.

bareClasses() const Tp::RequestableChannelClassSpecListinline
RequestableChannelClassSpecList()Tp::RequestableChannelClassSpecListinline
RequestableChannelClassSpecList(const RequestableChannelClass &rcc)Tp::RequestableChannelClassSpecListinline
RequestableChannelClassSpecList(const RequestableChannelClassList &rccs)Tp::RequestableChannelClassSpecListinline
RequestableChannelClassSpecList(const RequestableChannelClassSpec &rccSpec)Tp::RequestableChannelClassSpecListinline
RequestableChannelClassSpecList(const QList< RequestableChannelClassSpec > &other)Tp::RequestableChannelClassSpecListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00941.html0000644000175100017520000002134512530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelHoldInterface Member List

This is the complete list of members for Tp::BaseChannelHoldInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create()Tp::BaseChannelHoldInterfaceinlinestatic
create()Tp::BaseChannelHoldInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getHoldReason() const Tp::BaseChannelHoldInterface
getHoldState() const Tp::BaseChannelHoldInterface
holdStateChanged(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason)Tp::BaseChannelHoldInterfacesignal
immutableProperties() const Tp::BaseChannelHoldInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setHoldState(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason)Tp::BaseChannelHoldInterface
SetHoldStateCallback typedefTp::BaseChannelHoldInterface
setSetHoldStateCallback(const SetHoldStateCallback &cb)Tp::BaseChannelHoldInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelHoldInterface()Tp::BaseChannelHoldInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00440.html0000644000175100017520000002543412530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::PendingDebugMessageList Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingDebugMessageList Class Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/pending-debug-message-list.h>

Inherits Tp::PendingOperation.

Public Member Functions

virtual ~PendingDebugMessageList ()
 
DebugMessageList result () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Constructor & Destructor Documentation

Tp::PendingDebugMessageList::~PendingDebugMessageList ( )
virtual

Member Function Documentation

DebugMessageList Tp::PendingDebugMessageList::result ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00195.html0000644000175100017520000001760412530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceDestroyableAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | List of all members
Tp::Service::ChannelInterfaceDestroyableAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Destroy (const QDBusMessage &dbusMessage)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

void Tp::Service::ChannelInterfaceDestroyableAdaptor::Destroy ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void destroy(const Tp::Service::ChannelInterfaceDestroyableAdaptor::DestroyContextPtr &context);

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

Close the channel abruptly, possibly with loss of data. The connection manager MUST NOT re-create the channel unless/until more events occur.

The main motivating situation for this method is that when a Text channel with pending messages is closed with Close, it comes back as an incoming channel (to avoid a race between Close and an incoming message). If Destroy is called on a Text channel, the CM should delete all pending messages and close the channel, and the channel shouldn't be re-created until/unless another message arrives.

Most clients SHOULD call ChannelInterface::Close() instead. However, if a client explicitly intends to destroy the channel with possible loss of data, it SHOULD call this method if this interface is supported (according to the ChannelInterface::Interfaces property), falling back to Close if not.

In particular, channel dispatchers SHOULD use this method if available when terminating channels that cannot be handled correctly (for instance, if no handler has been installed for a channel type, or if the handler crashes repeatedly).

Connection managers do not need to implement this interface on channels where Close and Destroy would be equivalent.

Callers need to be able to fall back to Close in any case.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01156.html0000644000175100017520000000536012530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSendingStateMap Member List

This is the complete list of members for Tp::ContactSendingStateMap, including all inherited members.

ContactSendingStateMap()Tp::ContactSendingStateMapinline
ContactSendingStateMap(const QMap< uint, uint > &a)Tp::ContactSendingStateMapinline
operator=(const QMap< uint, uint > &a)Tp::ContactSendingStateMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00616_source.html0000644000175100017520000013217412530426257022525 0ustar00kaffeinekaffeine00000000000000 cli-call-content-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-content-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/call-content.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 CallContentInterface::CallContentInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 CallContentInterface::CallContentInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(StreamsAdded(const Tp::ObjectPathList&)), NULL, NULL);
28  disconnect(this, SIGNAL(StreamsRemoved(const Tp::ObjectPathList&, const Tp::CallStateReason&)), NULL, NULL);
29 
30  Tp::AbstractInterface::invalidate(proxy, error, message);
31 }
32 
33 CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface(const QString& busName, const QString& objectPath, QObject *parent)
34  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
35 {
36 }
37 
38 CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
39  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
40 {
41 }
42 
44  : Tp::AbstractInterface(proxy, staticInterfaceName())
45 {
46 }
47 
49  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
50 {
51 }
52 
54  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
55 {
56 }
57 
59  const QString &error, const QString &message)
60 {
61 
62  Tp::AbstractInterface::invalidate(proxy, error, message);
63 }
64 
65 CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface(const QString& busName, const QString& objectPath, QObject *parent)
66  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
67 {
68 }
69 
70 CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
71  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
72 {
73 }
74 
76  : Tp::AbstractInterface(proxy, staticInterfaceName())
77 {
78 }
79 
81  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
82 {
83 }
84 
86  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
87 {
88 }
89 
91  const QString &error, const QString &message)
92 {
93  disconnect(this, SIGNAL(TonesDeferred(const QString&)), NULL, NULL);
94  disconnect(this, SIGNAL(SendingTones(const QString&)), NULL, NULL);
95  disconnect(this, SIGNAL(StoppedTones(bool)), NULL, NULL);
96 
97  Tp::AbstractInterface::invalidate(proxy, error, message);
98 }
99 
100 CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface(const QString& busName, const QString& objectPath, QObject *parent)
101  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
102 {
103 }
104 
105 CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
106  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
107 {
108 }
109 
111  : Tp::AbstractInterface(proxy, staticInterfaceName())
112 {
113 }
114 
116  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
117 {
118 }
119 
121  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
122 {
123 }
124 
126  const QString &error, const QString &message)
127 {
128  disconnect(this, SIGNAL(NewMediaDescriptionOffer(const QDBusObjectPath&, const QVariantMap&)), NULL, NULL);
129  disconnect(this, SIGNAL(MediaDescriptionOfferDone()), NULL, NULL);
130  disconnect(this, SIGNAL(LocalMediaDescriptionChanged(const QVariantMap&)), NULL, NULL);
131  disconnect(this, SIGNAL(RemoteMediaDescriptionsChanged(const Tp::ContactMediaDescriptionPropertiesMap&)), NULL, NULL);
132  disconnect(this, SIGNAL(MediaDescriptionsRemoved(const Tp::UIntList&)), NULL, NULL);
133  disconnect(this, SIGNAL(DTMFChangeRequested(uchar, uint)), NULL, NULL);
134 
135  Tp::AbstractInterface::invalidate(proxy, error, message);
136 }
137 
138 CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface(const QString& busName, const QString& objectPath, QObject *parent)
139  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
140 {
141 }
142 
143 CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
144  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
145 {
146 }
147 
149  : Tp::AbstractInterface(proxy, staticInterfaceName())
150 {
151 }
152 
154  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
155 {
156 }
157 
159  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
160 {
161 }
162 
164  const QString &error, const QString &message)
165 {
166  disconnect(this, SIGNAL(KeyFrameRequested()), NULL, NULL);
167  disconnect(this, SIGNAL(VideoResolutionChanged(const Tp::VideoResolution&)), NULL, NULL);
168  disconnect(this, SIGNAL(BitrateChanged(uint)), NULL, NULL);
169  disconnect(this, SIGNAL(FramerateChanged(uint)), NULL, NULL);
170  disconnect(this, SIGNAL(MTUChanged(uint)), NULL, NULL);
171 
172  Tp::AbstractInterface::invalidate(proxy, error, message);
173 }
174 }
175 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-body.hpp:163
void VideoResolutionChanged(const Tp::VideoResolution &newResolution)
void RemoteMediaDescriptionsChanged(const Tp::ContactMediaDescriptionPropertiesMap &updatedMediaDescriptions)
void NewMediaDescriptionOffer(const QDBusObjectPath &mediaDescription, const QVariantMap &properties)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-body.hpp:90
Definition: build/TelepathyQt/_gen/types.h:320
Definition: cli-call-content.h:44
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Definition: build/TelepathyQt/_gen/types.h:3277
CallContentInterfaceDTMFInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-body.hpp:65
Definition: build/TelepathyQt/_gen/types.h:101
CallContentInterfaceVideoControlInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-body.hpp:138
CallContentInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-body.hpp:9
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-body.hpp:125
CallContentInterfaceMediaInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-body.hpp:100
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
Definition: build/TelepathyQt/_gen/types.h:81
void TonesDeferred(const QString &tones)
void StreamsRemoved(const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason)
void DTMFChangeRequested(uchar event, uint state)
Definition: build/TelepathyQt/_gen/types.h:1220
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-body.hpp:58
void StreamsAdded(const Tp::ObjectPathList &streams)
void MediaDescriptionsRemoved(const Tp::UIntList &removedMediaDescriptions)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-body.hpp:24
CallContentInterfaceAudioControlInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-body.hpp:33
void LocalMediaDescriptionChanged(const QVariantMap &updatedMediaDescription)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00254.html0000644000175100017520000001327512530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::ChatStateMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ChatStateMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, uint >.

Public Member Functions

 ChatStateMap ()
 
 ChatStateMap (const QMap< uint, uint > &a)
 
ChatStateMapoperator= (const QMap< uint, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, uint>, but needed to have a discrete type in the Qt type system.

A map from contacts to their chat states.

Constructor & Destructor Documentation

Tp::ChatStateMap::ChatStateMap ( )
inline
Tp::ChatStateMap::ChatStateMap ( const QMap< uint, uint > &  a)
inline

Member Function Documentation

ChatStateMap& Tp::ChatStateMap::operator= ( const QMap< uint, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01215.html0000644000175100017520000000542012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSubscriptionMap Member List

This is the complete list of members for Tp::ContactSubscriptionMap, including all inherited members.

ContactSubscriptionMap()Tp::ContactSubscriptionMapinline
ContactSubscriptionMap(const QMap< uint, ContactSubscriptions > &a)Tp::ContactSubscriptionMapinline
operator=(const QMap< uint, ContactSubscriptions > &a)Tp::ContactSubscriptionMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00612_source.html0000644000175100017520000007240712530426257022523 0ustar00kaffeinekaffeine00000000000000 cli-account-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-account-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/account.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 AccountInterface::AccountInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 AccountInterface::AccountInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(Removed()), NULL, NULL);
28  disconnect(this, SIGNAL(AccountPropertyChanged(const QVariantMap&)), NULL, NULL);
29 
30  Tp::AbstractInterface::invalidate(proxy, error, message);
31 }
32 
33 AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface(const QString& busName, const QString& objectPath, QObject *parent)
34  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
35 {
36 }
37 
38 AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
39  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
40 {
41 }
42 
44  : Tp::AbstractInterface(proxy, staticInterfaceName())
45 {
46 }
47 
49  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
50 {
51 }
52 
54  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
55 {
56 }
57 
59  const QString &error, const QString &message)
60 {
61 
62  Tp::AbstractInterface::invalidate(proxy, error, message);
63 }
64 
65 AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface(const QString& busName, const QString& objectPath, QObject *parent)
66  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
67 {
68 }
69 
70 AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
71  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
72 {
73 }
74 
76  : Tp::AbstractInterface(proxy, staticInterfaceName())
77 {
78 }
79 
81  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
82 {
83 }
84 
86  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
87 {
88 }
89 
91  const QString &error, const QString &message)
92 {
93  disconnect(this, SIGNAL(AvatarChanged()), NULL, NULL);
94 
95  Tp::AbstractInterface::invalidate(proxy, error, message);
96 }
97 
98 AccountInterfaceStorageInterface::AccountInterfaceStorageInterface(const QString& busName, const QString& objectPath, QObject *parent)
99  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
100 {
101 }
102 
103 AccountInterfaceStorageInterface::AccountInterfaceStorageInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
104  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
105 {
106 }
107 
109  : Tp::AbstractInterface(proxy, staticInterfaceName())
110 {
111 }
112 
114  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
115 {
116 }
117 
119  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
120 {
121 }
122 
124  const QString &error, const QString &message)
125 {
126 
127  Tp::AbstractInterface::invalidate(proxy, error, message);
128 }
129 }
130 }
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-account-body.hpp:123
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
AccountInterfaceAddressingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-account-body.hpp:33
AccountInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-account-body.hpp:9
Definition: cli-account.h:44
AccountInterfaceStorageInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-account-body.hpp:98
AccountInterfaceAvatarInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-account-body.hpp:65
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
void AccountPropertyChanged(const QVariantMap &properties)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-account-body.hpp:24
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-account-body.hpp:90
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-account-body.hpp:58


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00313.html0000644000175100017520000033047512530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Contact Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Public Types | Signals | Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Tp::Contact Class Reference

The Contact class represents a Telepathy contact. More...

#include <TelepathyQt/Contact>

Inherits Tp::Object.

Classes

class  InfoFields
 The Contact::InfoFields class represents the information of a Telepathy contact. More...
 

Public Types

enum  PresenceState { PresenceStateNo, PresenceStateAsk, PresenceStateYes }
 

Signals

void aliasChanged (const QString &alias)
 
void avatarTokenChanged (const QString &avatarToken)
 
void avatarDataChanged (const Tp::AvatarData &avatarData)
 
void presenceChanged (const Tp::Presence &presence)
 
void capabilitiesChanged (const Tp::ContactCapabilities &caps)
 
void locationUpdated (const Tp::LocationInfo &location)
 
void infoFieldsChanged (const Tp::Contact::InfoFields &infoFields)
 
void subscriptionStateChanged (Tp::Contact::PresenceState state)
 
void publishStateChanged (Tp::Contact::PresenceState state, const QString &message)
 
void blockStatusChanged (bool blocked)
 
void addedToGroup (const QString &group)
 
void removedFromGroup (const QString &group)
 
void clientTypesChanged (const QStringList &clientTypes)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

 ~Contact ()
 
ContactManagerPtr manager () const
 
ReferencedHandles handle () const
 
QString id () const
 
Features requestedFeatures () const
 
Features actualFeatures () const
 
QString alias () const
 
QMap< QString, QString > vcardAddresses () const
 
QStringList uris () const
 
bool isAvatarTokenKnown () const
 
QString avatarToken () const
 
AvatarData avatarData () const
 
void requestAvatarData ()
 
Presence presence () const
 
ContactCapabilities capabilities () const
 
LocationInfo location () const
 
bool isContactInfoKnown () const
 
InfoFields infoFields () const
 
PendingOperationrefreshInfo ()
 
PendingContactInforequestInfo ()
 
bool isSubscriptionStateKnown () const
 
bool isSubscriptionRejected () const
 
PresenceState subscriptionState () const
 
bool isPublishStateKnown () const
 
bool isPublishCancelled () const
 
PresenceState publishState () const
 
QString publishStateMessage () const
 
PendingOperationrequestPresenceSubscription (const QString &message=QString())
 
PendingOperationremovePresenceSubscription (const QString &message=QString())
 
PendingOperationauthorizePresencePublication (const QString &message=QString())
 
PendingOperationremovePresencePublication (const QString &message=QString())
 
bool isBlocked () const
 
PendingOperationblock ()
 
PendingOperationblockAndReportAbuse ()
 
PendingOperationunblock ()
 
QStringList groups () const
 
PendingOperationaddToGroup (const QString &group)
 
PendingOperationremoveFromGroup (const QString &group)
 
QStringList clientTypes () const
 
PendingStringListrequestClientTypes ()
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Attributes

static const Feature FeatureAlias
 
static const Feature FeatureAvatarData
 
static const Feature FeatureAvatarToken
 
static const Feature FeatureCapabilities
 
static const Feature FeatureInfo
 
static const Feature FeatureLocation
 
static const Feature FeatureSimplePresence
 
static const Feature FeatureAddresses
 
static const Feature FeatureClientTypes
 

Protected Member Functions

 Contact (ContactManager *manager, const ReferencedHandles &handle, const Features &requestedFeatures, const QVariantMap &attributes)
 
virtual void augment (const Features &requestedFeatures, const QVariantMap &attributes)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The Contact class represents a Telepathy contact.

The accessor functions on this object (id(), alias(), and so on) don't make any D-Bus calls; instead, they return/use values cached from a previous introspection run. The introspection process populates their values in the most efficient way possible based on what the service implements.

To avoid unnecessary D-Bus traffic, some accessors only return valid information after specific features have been enabled. For instance, to retrieve the contact avatar token, it is necessary to enable the feature Contact::FeatureAvatarToken. See the individual methods descriptions for more details.

Contact features can be enabled by constructing a ContactFactory and enabling the desired features, and passing it to AccountManager, Account or ClientRegistrar when creating them as appropriate. However, if a particular feature is only ever used in a specific circumstance, such as an user opening some settings dialog separate from the general view of the application, features can be later enabled as needed by calling ContactManager::upgradeContacts() with the additional features, and waiting for the resulting PendingOperation to finish.

As an addition to accessors, signals are emitted to indicate that properties have changed, for example aliasChanged(), avatarTokenChanged(), etc.

See Asynchronous Object Model, Shared Pointer Usage

Member Enumeration Documentation

Enumerator
PresenceStateNo 
PresenceStateAsk 
PresenceStateYes 

Constructor & Destructor Documentation

Tp::Contact::~Contact ( )

Class destructor.

Tp::Contact::Contact ( ContactManager manager,
const ReferencedHandles handle,
const Features requestedFeatures,
const QVariantMap &  attributes 
)
protected

Construct a new Contact object.

Parameters
managerContactManager owning this contact.
handleThe contact handle.
requestedFeaturesThe contact requested features.
attributesThe contact attributes.

Member Function Documentation

ContactManagerPtr Tp::Contact::manager ( ) const

Return the contact nanager owning this contact.

Returns
A pointer to the ContactManager object.
ReferencedHandles Tp::Contact::handle ( ) const

Return the handle of this contact.

Returns
The handle as a ReferencedHandles object.
QString Tp::Contact::id ( ) const

Return the identifier of this contact.

Returns
The identifier.
Features Tp::Contact::requestedFeatures ( ) const

Return the features requested on this contact.

Returns
The requested features as a set of Feature objects.
Features Tp::Contact::actualFeatures ( ) const

Return the features that are actually enabled on this contact.

Returns
The actual features as a set of Feature objects.
QString Tp::Contact::alias ( ) const

Return the alias of this contact.

Change notification is via the aliasChanged() signal.

This method requires Contact::FeatureAlias to be ready.

Returns
The alias.
QMap< QString, QString > Tp::Contact::vcardAddresses ( ) const

Return the various vcard addresses that identify this contact.

This method requires Contact::FeatureAddresses to be ready.

Returns
The vcard addresses identifying this contact.
See Also
ContactManager::contactsForVCardAddresses(), uris()
QStringList Tp::Contact::uris ( ) const

Return the various URI addresses that identify this contact.

This method requires Contact::FeatureAddresses to be ready.

Returns
The URI addresses identifying this contact.
See Also
ContactManager::contactsForUris(), vcardAddresses()
bool Tp::Contact::isAvatarTokenKnown ( ) const

Return whether the avatar token of this contact is known.

This method requires Contact::FeatureAvatarToken to be ready.

Returns
true if the avatar token is known, false otherwise.
See Also
avatarToken()
QString Tp::Contact::avatarToken ( ) const

Return the avatar token for this contact.

Change notification is via the avatarTokenChanged() signal.

This method requires Contact::FeatureAvatarToken to be ready.

Returns
The avatar token.
See Also
isAvatarTokenKnown(), avatarTokenChanged(), avatarData()
AvatarData Tp::Contact::avatarData ( ) const

Return the actual avatar for this contact.

Change notification is via the avatarDataChanged() signal.

This method requires Contact::FeatureAvatarData to be ready.

Returns
The avatar as an AvatarData object.
See Also
avatarDataChanged(), avatarToken()
void Tp::Contact::requestAvatarData ( )

Start a request to retrieve the avatar for this contact.

Force the request of the avatar data. This method returns directly, emitting avatarTokenChanged() and avatarDataChanged() signals once the token and data are fetched from the server.

This is only useful if the avatar token is unknown; see isAvatarTokenKnown(). It happens in the case of offline XMPP contacts, because the server does not send the token for them and an explicit request of the avatar data is needed.

This method requires Contact::FeatureAvatarData to be ready.

See Also
avatarData(), avatarDataChanged(), avatarToken(), avatarTokenChanged()
Presence Tp::Contact::presence ( ) const

Return the actual presence of this contact.

Change notification is via the presenceChanged() signal.

This method requires Contact::FeatureSimplePresence to be ready.

Returns
The presence as a Presence object.
ContactCapabilities Tp::Contact::capabilities ( ) const

Return the capabilities for this contact.

User interfaces can use this information to show or hide UI components.

If ContactManager::supportedFeatures() contains Contact::FeatureCapabilities, the returned object will be a ContactCapabilities object, where CapabilitiesBase::isSpecificToContact() will be true; if that feature isn't present, this returned object is the subset of Contact::manager()::connection()::capabilities() and CapabilitiesBase::isSpecificToContact() will be false.

Change notification is via the capabilitiesChanged() signal.

This method requires Contact::FeatureCapabilities to be ready.

Returns
An object representing the contact capabilities.
LocationInfo Tp::Contact::location ( ) const

Return the location for this contact.

Change notification is via the locationUpdated() signal.

This method requires Contact::FeatureLocation to be ready.

Returns
The contact location as a LocationInfo object.
bool Tp::Contact::isContactInfoKnown ( ) const

Return whether the info card for this contact has been received.

With some protocols (notably XMPP) information is not pushed from the server and must be requested explicitely using refreshInfo() or requestInfo(). This method can be used to know if the information is received from the server or if an explicit request is needed.

This method requires Contacat::FeatureInfo to be ready.

Returns
true if the information is known; false otherwise.
Contact::InfoFields Tp::Contact::infoFields ( ) const

Return the information for this contact.

Note that this method only return cached information. In order to refresh the information use refreshInfo().

Change notification is via the infoFieldsChanged() signal.

This method requires Contact::FeatureInfo to be ready.

Returns
The contact info as a Contact::InfoFields object.
PendingOperation * Tp::Contact::refreshInfo ( )

Refresh information for the given contact.

Once the information is retrieved infoFieldsChanged() will be emitted.

This method requires Contact::FeatureInfo to be ready.

Returns
A PendingOperation, which will emit PendingOperation::finished when the call has finished.
See Also
infoFieldsChanged()
PendingContactInfo * Tp::Contact::requestInfo ( )

Start a request to retrieve the information for this contact.

This method is useful for UIs that don't care about notification of changes in the contact information but want to show the contact information (e.g. right-click on a contact and show the contact info).

Returns
A PendingContactInfo, which will emit PendingContactInfo::finished when the information has been retrieved or an error occurred.
bool Tp::Contact::isSubscriptionStateKnown ( ) const

Return whether the presence subscription state of this contact is known.

Returns
true if the presence subscription state is known, false otherwise.
See Also
subscriptionState(), isSubscriptionRejected()
bool Tp::Contact::isSubscriptionRejected ( ) const

Return whether a request to see this contact's presence was denied.

Returns
if the a request to see the presence subscription was denied, false otherwise.
See Also
isSubscriptionStateKnown(), subscriptionState()
Contact::PresenceState Tp::Contact::subscriptionState ( ) const

Return the presence subscription state of this contact (i.e. whether the local user can retrieve information about this contact's presence).

Returns
The presence subscription state as Contact::PresenceState.
See Also
isSubscriptionStateKnown(), isSubscriptionRejected()
bool Tp::Contact::isPublishStateKnown ( ) const

Return whether the presence publish state of this contact is known.

Returns
true if the presence publish state is known, false otherwise.
See Also
publishState(), isPublishCancelled()
bool Tp::Contact::isPublishCancelled ( ) const

Return whether a request to publish presence information to this contact was cancelled.

Returns
true if a request to publish presence information was cancelled, false otherwise.
See Also
isPublishStateKnown(), publishState()
Contact::PresenceState Tp::Contact::publishState ( ) const

Return the presence publish state of this contact (i.e. whether this contact can retrieve information about the local user's presence).

Returns
The presence publish state as Contact::PresenceState.
See Also
isSubscriptionStateKnown(), isSubscriptionRejected()
QString Tp::Contact::publishStateMessage ( ) const

If the publishState() is Contact::PresenceStateAsk, return an optional message that was sent by the contact asking to receive the local user's presence; omitted if none was given.

Returns
The message that was sent by the contact asking to receive the local user's presence.
See Also
publishState()
PendingOperation * Tp::Contact::requestPresenceSubscription ( const QString &  message = QString())

Start a request that this contact allow the local user to subscribe to their presence (i.e. that this contact's subscribe attribute becomes Contact::PresenceStateYes)

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
subscriptionState(), removePresenceSubscription()
PendingOperation * Tp::Contact::removePresenceSubscription ( const QString &  message = QString())

Start a request for the local user to stop receiving presence from this contact.

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
subscriptionState(), requestPresenceSubscription()
PendingOperation * Tp::Contact::authorizePresencePublication ( const QString &  message = QString())

Start a request to authorize this contact's request to see the local user presence (i.e. that this contact publish attribute becomes Contact::PresenceStateYes).

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
publishState(), removePresencePublication()
PendingOperation * Tp::Contact::removePresencePublication ( const QString &  message = QString())

Start a request for the local user to stop sending presence to this contact.

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
publishState(), authorizePresencePublication()
bool Tp::Contact::isBlocked ( ) const

Return whether this contact is blocked.

Change notification is via the blockStatusChanged() signal.

Returns
true if blocked, false otherwise.
See Also
block()
PendingOperation * Tp::Contact::block ( )

Block this contact. Blocked contacts cannot send messages to the user; depending on the protocol, blocking a contact may have other effects.

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to take the requested action.
See Also
blockAndReportAbuse(), unblock()
PendingOperation * Tp::Contact::blockAndReportAbuse ( )

Block this contact and additionally report abusive behaviour to the server.

If reporting abusive behaviour is not supported by the protocol, this method has the same effect as block().

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to take the requested action.
See Also
ContactManager::canReportAbuse(), block(), unblock()
PendingOperation * Tp::Contact::unblock ( )

Unblock this contact.

This method requires Connection::FeatureRoster to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to take the requested action.
See Also
block(), blockAndReportAbuse()
QStringList Tp::Contact::groups ( ) const

Return the names of the user-defined roster groups to which the contact belongs.

Change notification is via the addedToGroup() and removedFromGroup() signals.

This method requires Connection::FeatureRosterGroups to be ready.

Returns
A list of user-defined contact list groups names.
See Also
addToGroup(), removedFromGroup()
PendingOperation * Tp::Contact::addToGroup ( const QString &  group)

Attempt to add the contact to the user-defined contact list group named group.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to to add the contact to the user-defined contact list group.
See Also
groups(), removeFromGroup()
PendingOperation * Tp::Contact::removeFromGroup ( const QString &  group)

Attempt to remove the contact from the user-defined contact list group named group.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to to remote the contact to the user-defined contact list group.
See Also
groups(), addToGroup()
QStringList Tp::Contact::clientTypes ( ) const

Return the client types of this contact, if known.

Client types are represented using the values documented by the XMPP registrar, with some additional types. A contact can set one or more client types, or can simply advertise itself as unknown - in this case, an empty list is returned.

This method returns cached information and is more appropriate for "lazy" client type finding, for instance displaying the client types (if available) of everyone in your contact list. For getting latest up-to-date information from the server you should use requestClientTypes() instead.

This method requires FeatureClientTypes to be ready.

Returns
A list of the client types advertised by this contact.
See Also
requestClientTypes(), clientTypesChanged()
PendingStringList * Tp::Contact::requestClientTypes ( )

Return the current client types of the given contact.

If necessary, this method will make a request to the server for up-to-date information and wait for a reply. Therefore, this method is more appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions.

This method requires FeatureClientTypes to be ready.

Returns
A list of the client types advertised by this contact.
See Also
clientTypes(), clientTypesChanged()
void Tp::Contact::aliasChanged ( const QString &  alias)
signal

Emitted when the value of alias() changes.

Parameters
aliasThe new alias of this contact.
See Also
alias()
void Tp::Contact::avatarTokenChanged ( const QString &  avatarToken)
signal

Emitted when the value of avatarToken() changes.

Parameters
avatarTokenThe new avatar token of this contact.
See Also
avatarToken()
void Tp::Contact::avatarDataChanged ( const Tp::AvatarData avatarData)
signal

Emitted when the value of avatarData() changes.

Parameters
avatarDataThe new avatar of this contact.
See Also
avatarData()
void Tp::Contact::presenceChanged ( const Tp::Presence presence)
signal

Emitted when the value of presence() changes.

Parameters
presenceThe new presence of this contact.
See Also
presence()
void Tp::Contact::capabilitiesChanged ( const Tp::ContactCapabilities caps)
signal

Emitted when the value of capabilities() changes.

Parameters
capsThe new capabilities of this contact.
See Also
capabilities()
void Tp::Contact::locationUpdated ( const Tp::LocationInfo location)
signal

Emitted when the value of location() changes.

Parameters
locationThe new location of this contact.
See Also
location()
void Tp::Contact::infoFieldsChanged ( const Tp::Contact::InfoFields infoFields)
signal

Emitted when the value of infoFields() changes.

Parameters
infoFieldsThe new info of this contact.
See Also
infoFields()
void Tp::Contact::subscriptionStateChanged ( Tp::Contact::PresenceState  state)
signal

Emitted when the value of subscriptionState() changes.

Parameters
stateThe new subscription state of this contact.
See Also
subscriptionState()
void Tp::Contact::publishStateChanged ( Tp::Contact::PresenceState  state,
const QString &  message 
)
signal

Emitted when the value of publishState() changes.

Parameters
stateThe new publish state of this contact.
messageThe new user-defined status message of this contact.
See Also
publishState()
void Tp::Contact::blockStatusChanged ( bool  blocked)
signal

Emitted when the value of isBlocked() changes.

Parameters
blockedThe new block status of this contact.
See Also
isBlocked()
void Tp::Contact::addedToGroup ( const QString &  group)
signal

Emitted when this contact is added to group of the contact list.

Parameters
groupThe group name.
See Also
groups(), removedFromGroup()
void Tp::Contact::removedFromGroup ( const QString &  group)
signal

Emitted when this contact is removed from group of the contact list.

Parameters
groupThe group name.
See Also
groups(), addedToGroup()
void Tp::Contact::clientTypesChanged ( const QStringList &  clientTypes)
signal

Emitted when the client types of this contact change or become known.

Parameters
clientTypesThe contact's client types
See Also
clientTypes(), requestClientTypes()
void Tp::Contact::augment ( const Features requestedFeatures,
const QVariantMap &  attributes 
)
protectedvirtual

Member Data Documentation

const Feature Tp::Contact::FeatureAlias
static

Feature used in order to access contact alias info.

See Also
alias(), aliasChanged()
const Feature Tp::Contact::FeatureAvatarData
static

Feature used in order to access contact avatar data info.

Enabling this feature will also enable FeatureAvatarToken.

See Also
avatarData(), avatarDataChanged()
const Feature Tp::Contact::FeatureAvatarToken
static

Feature used in order to access contact avatar token info.

See Also
isAvatarTokenKnown(), avatarToken(), avatarTokenChanged()
const Feature Tp::Contact::FeatureCapabilities
static

Feature used in order to access contact capabilities info.

See Also
capabilities(), capabilitiesChanged()
const Feature Tp::Contact::FeatureInfo
static

Feature used in order to access contact info fields.

See Also
infoFields(), infoFieldsChanged()
const Feature Tp::Contact::FeatureLocation
static

Feature used in order to access contact location info.

See Also
location(), locationUpdated()
const Feature Tp::Contact::FeatureSimplePresence
static

Feature used in order to access contact presence info.

See Also
presence(), presenceChanged()
const Feature Tp::Contact::FeatureAddresses
static

Feature used in order to access contact addressable addresses info.

See Also
vcardAddresses(), uris()
const Feature Tp::Contact::FeatureClientTypes
static

Feature used in order to access contact client types info.

See Also
clientTypes(), requestClientTypes(), clientTypesChanged()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x6d.html0000644000175100017520000004167112530426260024207 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- m -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01284.html0000644000175100017520000002513412530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeTextInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeTextInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AcknowledgePendingMessages(const Tp::UIntList &IDs, int timeout=-1)Tp::Client::ChannelTypeTextInterfaceinlineslot
ChannelTypeTextInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeTextInterface
ChannelTypeTextInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeTextInterface
ChannelTypeTextInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeTextInterface
ChannelTypeTextInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeTextInterfaceexplicit
ChannelTypeTextInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeTextInterface
GetMessageTypes(int timeout=-1)Tp::Client::ChannelTypeTextInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeTextInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListPendingMessages(bool clear, int timeout=-1)Tp::Client::ChannelTypeTextInterfaceinlineslot
LostMessage()Tp::Client::ChannelTypeTextInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text)Tp::Client::ChannelTypeTextInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeTextInterfaceinline
Send(uint type, const QString &text, int timeout=-1)Tp::Client::ChannelTypeTextInterfaceinlineslot
SendError(uint error, uint timestamp, uint type, const QString &text)Tp::Client::ChannelTypeTextInterfacesignal
Sent(uint timestamp, uint type, const QString &text)Tp::Client::ChannelTypeTextInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeTextInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00068.html0000644000175100017520000005421212530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractDBusServiceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Protected Member Functions | List of all members
Tp::AbstractDBusServiceInterface Class Referenceabstract

Base class for D-Bus service interfaces. More...

#include <TelepathyQt/AbstractDBusServiceInterface>

Inherits Tp::Object.

Inherited by Tp::AbstractCallContentInterface, Tp::AbstractChannelInterface, Tp::AbstractConnectionInterface, and Tp::AbstractProtocolInterface.

Public Member Functions

 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
virtual QVariantMap immutableProperties () const =0
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

virtual bool registerInterface (DBusObject *dbusObject)
 
virtual void createAdaptor ()=0
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for D-Bus service interfaces.

This class serves as a base for all the classes that are used to implement interfaces that sit on top of D-Bus services.

Constructor & Destructor Documentation

Tp::AbstractDBusServiceInterface::AbstractDBusServiceInterface ( const QString &  interfaceName)

Construct an AbstractDBusServiceInterface that implements the interface with the given interfaceName.

Parameters
interfaceNameThe name of the interface that this class implements.
Tp::AbstractDBusServiceInterface::~AbstractDBusServiceInterface ( )
virtual

Class destructor.

Member Function Documentation

QString Tp::AbstractDBusServiceInterface::interfaceName ( ) const

Return the name of the interface that this class implements, as given on the constructor.

Returns
The name of the interface that this class implements.
QVariantMap Tp::AbstractDBusServiceInterface::immutableProperties ( ) const
pure virtual
DBusObject * Tp::AbstractDBusServiceInterface::dbusObject ( ) const

Return the DBusObject on which the adaptor of this interface is plugged.

This is only accessible after the interface has been registered with registerInterface().

Returns
a pointer to the DBusObject on which the adaptor of this interface is plugged.
See Also
DBusService::dbusObject()
bool Tp::AbstractDBusServiceInterface::isRegistered ( ) const

Return whether this interface has been registered.

Returns
true if the service has been registered, or false otherwise.
See Also
registerInterface()
bool Tp::AbstractDBusServiceInterface::registerInterface ( DBusObject dbusObject)
protectedvirtual

Registers this interface by plugging its adaptor on the given dbusObject.

Parameters
dbusObjectThe object on which to plug the adaptor.
Returns
false if the interface has already been registered, or true otherwise.
See Also
isRegistered()
void Tp::AbstractDBusServiceInterface::createAdaptor ( )
protectedpure virtual

Create the adaptor for this interface.

Subclasses should reimplement this appropriately.

bool Tp::AbstractDBusServiceInterface::notifyPropertyChanged ( const QString &  propertyName,
const QVariant &  propertyValue 
)

Emit PropertiesChanged signal on object org.freedesktop.DBus.Properties interface with the property propertyName.

Parameters
propertyNameThe name of the changed property.
propertyValueThe actual value of the changed property.
Returns
false if the signal can not be emmited or true otherwise.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01029.html0000644000175100017520000000655612530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor0< R, T > Member List

This is the complete list of members for Tp::MemberFunctor0< R, T >, including all inherited members.

fnTp::MemberFunctor0< R, T >
FunctionType typedefTp::MemberFunctor0< R, T >
MemberFunctor0(T *object, FunctionType fn)Tp::MemberFunctor0< R, T >inline
objectTp::MemberFunctor0< R, T >
operator()() const Tp::MemberFunctor0< R, T >inline
ResultType typedefTp::MemberFunctor0< R, T >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00883.html0000644000175100017520000001214312530426257021144 0ustar00kaffeinekaffeine00000000000000 Service-side implementation
   Home · All Classes · All Namespaces · Modules · Functions · Files
Modules | Classes
Service-side implementation

Modules

 Channel service implementation
 
 Connection manager service implementation
 
 Connection service implementation
 

Classes

class  Tp::AbstractAdaptor
 Base class for all the low-level service-side adaptors. More...
 
class  Tp::DBusError
 Small container class, containing a D-Bus error. More...
 
class  Tp::DBusObject
 A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object. More...
 
class  Tp::DBusService
 Base class for D-Bus services. More...
 
class  Tp::AbstractDBusServiceInterface
 Base class for D-Bus service interfaces. More...
 

Detailed Description

Classes to implement service D-Bus objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00382.html0000644000175100017520000001333612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Location Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::Location Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 Location ()
 
 Location (const QMap< QString, QDBusVariant > &a)
 
Locationoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

A user's location, represented as an extensible mapping.

Constructor & Destructor Documentation

Tp::Location::Location ( )
inline
Tp::Location::Location ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

Location& Tp::Location::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01343.html0000644000175100017520000000652412530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceMergeableConferenceAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceMergeableConferenceAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Merge(const QDBusObjectPath &channel, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceMergeableConferenceAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00127.html0000644000175100017520000021012712530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::BaseProtocol Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseProtocol Class Reference

Base class for protocol implementations. More...

#include <TelepathyQt/BaseProtocol>

Inherits Tp::DBusService.

Public Types

typedef Callback2
< BaseConnectionPtr, const
QVariantMap &, DBusError * > 
CreateConnectionCallback
 
typedef Callback2< QString,
const QVariantMap &, DBusError * > 
IdentifyAccountCallback
 
typedef Callback2< QString,
const QString &, DBusError * > 
NormalizeContactCallback
 

Public Member Functions

virtual ~BaseProtocol ()
 
QString name () const
 
QVariantMap immutableProperties () const
 
QStringList connectionInterfaces () const
 
void setConnectionInterfaces (const QStringList &connInterfaces)
 
ProtocolParameterList parameters () const
 
void setParameters (const ProtocolParameterList &parameters)
 
RequestableChannelClassSpecList requestableChannelClasses () const
 
void setRequestableChannelClasses (const RequestableChannelClassSpecList &rccSpecs)
 
QString vcardField () const
 
void setVCardField (const QString &vcardField)
 
QString englishName () const
 
void setEnglishName (const QString &englishName)
 
QString iconName () const
 
void setIconName (const QString &iconName)
 
QStringList authenticationTypes () const
 
void setAuthenticationTypes (const QStringList &authenticationTypes)
 
void setCreateConnectionCallback (const CreateConnectionCallback &cb)
 
Tp::BaseConnectionPtr createConnection (const QVariantMap &parameters, DBusError *error)
 
void setIdentifyAccountCallback (const IdentifyAccountCallback &cb)
 
QString identifyAccount (const QVariantMap &parameters, DBusError *error)
 
void setNormalizeContactCallback (const NormalizeContactCallback &cb)
 
QString normalizeContact (const QString &contactId, DBusError *error)
 
QList
< AbstractProtocolInterfacePtr > 
interfaces () const
 
AbstractProtocolInterfacePtr interface (const QString &interfaceName) const
 
bool plugInterface (const AbstractProtocolInterfacePtr &interface)
 
- Public Member Functions inherited from Tp::DBusService
 DBusService (const QDBusConnection &dbusConnection)
 
virtual ~DBusService ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseProtocolPtr create (const QString &name)
 
template<typename BaseProtocolSubclass >
static SharedPtr
< BaseProtocolSubclass > 
create (const QString &name)
 
static BaseProtocolPtr create (const QDBusConnection &dbusConnection, const QString &name)
 
template<typename BaseProtocolSubclass >
static SharedPtr
< BaseProtocolSubclass > 
create (const QDBusConnection &dbusConnection, const QString &name)
 

Protected Member Functions

 BaseProtocol (const QDBusConnection &dbusConnection, const QString &name)
 
virtual bool registerObject (const QString &busName, const QString &objectPath, DBusError *error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for protocol implementations.

A Protocol is a D-Bus object that implements an IM protocol (for instance, jabber or msn). The BaseProtocol class provides an easy way to implement a Protocol D-Bus object, by providing the basic functionality itself and allowing you to extend it by setting the appropriate properties and callbacks.

A BaseProtocol instance cannot be registered by itself on the bus. You should add it to a BaseConnectionManager instance using BaseConnectionManager::addProtocol(). When the BaseConnectionManager is registered on the bus, all the BaseProtocol instances will also be registered.

Member Typedef Documentation

typedef Callback2<BaseConnectionPtr, const QVariantMap &, DBusError*> Tp::BaseProtocol::CreateConnectionCallback
typedef Callback2<QString, const QVariantMap &, DBusError*> Tp::BaseProtocol::IdentifyAccountCallback
typedef Callback2<QString, const QString &, DBusError*> Tp::BaseProtocol::NormalizeContactCallback

Constructor & Destructor Documentation

Tp::BaseProtocol::~BaseProtocol ( )
virtual

Class destructor.

Tp::BaseProtocol::BaseProtocol ( const QDBusConnection &  dbusConnection,
const QString &  name 
)
protected

Constructs a new BaseProtocol object.

Parameters
dbusConnectionThe D-Bus connection to use.
nameThe name of this protocol.

Member Function Documentation

static BaseProtocolPtr Tp::BaseProtocol::create ( const QString &  name)
inlinestatic
template<typename BaseProtocolSubclass >
static SharedPtr<BaseProtocolSubclass> Tp::BaseProtocol::create ( const QString &  name)
inlinestatic
static BaseProtocolPtr Tp::BaseProtocol::create ( const QDBusConnection &  dbusConnection,
const QString &  name 
)
inlinestatic
template<typename BaseProtocolSubclass >
static SharedPtr<BaseProtocolSubclass> Tp::BaseProtocol::create ( const QDBusConnection &  dbusConnection,
const QString &  name 
)
inlinestatic
QString Tp::BaseProtocol::name ( ) const

Return the protocol's name, as given on the constructor.

Returns
The protocol's name.
QVariantMap Tp::BaseProtocol::immutableProperties ( ) const
virtual

Return the immutable properties of this protocol object.

Immutable properties cannot change after the object has been registered on the bus with registerObject().

Returns
The immutable properties of this protocol object.

Implements Tp::DBusService.

QStringList Tp::BaseProtocol::connectionInterfaces ( ) const

Return the list of interface names that have been set with setConnectionInterfaces().

This list is exposed as the ConnectionInterfaces property of this Protocol object on the bus and represents interface names that might be in the Interfaces property of a Connection to this protocol.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The list of interface names that have been set with setConnectionInterfaces().
See Also
setConnectionInterfaces()
void Tp::BaseProtocol::setConnectionInterfaces ( const QStringList &  connInterfaces)

Set the interface names that may appear on Connection objects of this protocol.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
connInterfacesThe list of interface names to set.
See Also
connectionInterfaces()
ProtocolParameterList Tp::BaseProtocol::parameters ( ) const

Return the list of parameters that have been set with setParameters().

This list is exposed as the Parameters property of this Protocol object on the bus and represents the parameters which may be specified in the Parameters property of an Account for this protocol.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The list of parameters that have been set with setParameters().
See Also
setParameters()
void Tp::BaseProtocol::setParameters ( const ProtocolParameterList parameters)

Set the parameters that may be specified in the Parameters property of an Account for this protocol.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
parametersThe list of parameters to set.
See Also
parameters()
RequestableChannelClassSpecList Tp::BaseProtocol::requestableChannelClasses ( ) const

Return the list of requestable channel classes that have been set with setRequestableChannelClasses().

This list is exposed as the RequestableChannelClasses property of this Protocol object on the bus and represents the channel classes which might be requestable from a Connection to this protocol.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The list of requestable channel classes that have been set with setRequestableChannelClasses()
See Also
setRequestableChannelClasses()
void Tp::BaseProtocol::setRequestableChannelClasses ( const RequestableChannelClassSpecList rccSpecs)

Set the channel classes which might be requestable from a Connection to this protocol.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
rccSpecsThe list of requestable channel classes to set.
See Also
requestableChannelClasses()
QString Tp::BaseProtocol::vcardField ( ) const

Return the name of the vcard field that has been set with setVCardField().

This is exposed as the VCardField property of this Protocol object on the bus and represents the name of the most common vcard field used for this protocol's contact identifiers, normalized to lower case.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The name of the vcard field that has been set with setVCardField().
See Also
setVCardField()
void Tp::BaseProtocol::setVCardField ( const QString &  vcardField)

Set the name of the most common vcard field used for this protocol's contact identifiers, normalized to lower case.

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

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
vcardFieldThe name of the vcard field to set.
See Also
vcardField()
QString Tp::BaseProtocol::englishName ( ) const

Return the name that has been set with setEnglishName().

This is exposed as the EnglishName property of this Protocol object on the bus and represents the name of the protocol in a form suitable for display to users, such as "AIM" or "Yahoo!".

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The name that has been set with setEnglishName().
See Also
setEnglishName()
void Tp::BaseProtocol::setEnglishName ( const QString &  englishName)

Set the name of the protocol in a form suitable for display to users, such as "AIM" or "Yahoo!".

This string should be in the C (english) locale. Clients are expected to lookup a translation on their own translation catalogs and fall back to this name if they have no translation for it.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
englishNameThe name to set.
See Also
englishName()
QString Tp::BaseProtocol::iconName ( ) const

Return the icon name that has been set with setIconName().

This is exposed as the Icon property of this Protocol object on the bus and represents the name of an icon in the system's icon theme suitable for this protocol, such as "im-msn".

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The icon name set with setIconName().
See Also
setIconName()
void Tp::BaseProtocol::setIconName ( const QString &  iconName)

Set the name of an icon in the system's icon theme suitable for this protocol, such as "im-msn".

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
iconNameThe icon name to set.
See Also
iconName()
QStringList Tp::BaseProtocol::authenticationTypes ( ) const

Return the list of interfaces that have been set with setAuthenticationTypes().

This is exposed as the AuthenticationTypes property of this Protocol object on the bus and represents 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.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
The list of authentication types that have been set with setAuthenticationTypes().
See Also
setAuthenticationTypes()
void Tp::BaseProtocol::setAuthenticationTypes ( const QStringList &  authenticationTypes)

Set 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.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
authenticationTypesThe list of interfaces to set.
See Also
authenticationTypes()
void Tp::BaseProtocol::setCreateConnectionCallback ( const CreateConnectionCallback cb)

Set a callback that will be called to create a new connection, when this has been requested by a client.

Parameters
cbThe callback to set.
See Also
createConnection()
BaseConnectionPtr Tp::BaseProtocol::createConnection ( const QVariantMap &  parameters,
Tp::DBusError error 
)

Create a new connection object by calling the callback that has been set with setCreateConnectionCallback().

Parameters
parametersThe connection parameters.
errorA pointer to a DBusError instance where any possible error will be stored.
Returns
A pointer to the new connection, or a null BaseConnectionPtr if no connection could be created, in which case error will contain an appropriate error.
See Also
setCreateConnectionCallback()
void Tp::BaseProtocol::setIdentifyAccountCallback ( const IdentifyAccountCallback cb)

Set a callback that will be called from a client to identify an account.

This callback will be called when the IdentifyAccount method on the Protocol D-Bus object has been called.

Parameters
cbThe callback to set.
See Also
identifyAccount()
QString Tp::BaseProtocol::identifyAccount ( const QVariantMap &  parameters,
Tp::DBusError error 
)

Return a string which uniquely identifies the account to which the given parameters would connect, by calling the callback that has been set with setIdentifyAccountCallback().

Parameters
parametersThe connection parameters, as they would be provided to createConnection().
errorA pointer to a DBusError instance where any possible error will be stored.
Returns
A string which uniquely identifies the account to which the given parameters would connect, or an empty string if no callback to create this string has been set with setIdentifyAccountCallback().
See Also
setIdentifyAccountCallback()
void Tp::BaseProtocol::setNormalizeContactCallback ( const NormalizeContactCallback cb)

Set a callback that will be called from a client to normalize a contact id.

Parameters
cbThe callback to set.
See Also
normalizeContact()
QString Tp::BaseProtocol::normalizeContact ( const QString &  contactId,
Tp::DBusError error 
)

Return a normalized version of the given contactId, by calling the callback that has been set with setNormalizeContactCallback().

Parameters
contactIdThe contact ID to normalize.
errorA pointer to a DBusError instance where any possible error will be stored.
Returns
A normalized version of the given contactId, or an empty string if no callback to do the normalization has been set with setNormalizeContactCallback().
See Also
setNormalizeContactCallback()
QList< AbstractProtocolInterfacePtr > Tp::BaseProtocol::interfaces ( ) const

Return a list of interfaces that have been plugged into this Protocol D-Bus object with plugInterface().

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
A list containing all the Protocol interface implementation objects.
See Also
plugInterface(), interface()
AbstractProtocolInterfacePtr Tp::BaseProtocol::interface ( const QString &  interfaceName) const

Return a pointer to the interface with the given name.

Parameters
interfaceNameThe D-Bus name of the interface, ex. TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING.
Returns
A pointer to the AbstractProtocolInterface object that implements the D-Bus interface with the given name, or a null pointer if such an interface has not been plugged into this object.
See Also
plugInterface(), interfaces()
bool Tp::BaseProtocol::plugInterface ( const AbstractProtocolInterfacePtr &  interface)

Plug a new interface into this Protocol D-Bus object.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
interfaceAn AbstractProtocolInterface instance that implements the interface that is to be plugged.
Returns
true on success or false otherwise
See Also
interfaces(), interface()
bool Tp::BaseProtocol::registerObject ( const QString &  busName,
const QString &  objectPath,
DBusError error 
)
protectedvirtual

Reimplemented from DBusService.

Reimplemented from Tp::DBusService.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00605_source.html0000644000175100017520000022161712530426257022524 0ustar00kaffeinekaffeine00000000000000 channel-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel-factory.h
1 
23 #ifndef _TelepathyQt_channel_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/DBusProxyFactory>
31 #include <TelepathyQt/SharedPtr>
32 #include <TelepathyQt/Types>
33 
34 // For Q_DISABLE_COPY
35 #include <QtGlobal>
36 #include <QString>
37 #include <QVariantMap>
38 
39 class QDBusConnection;
40 
41 namespace Tp
42 {
43 
44 class ChannelClassSpec;
45 
46 class TP_QT_EXPORT ChannelFactory : public DBusProxyFactory
47 {
48  Q_OBJECT
49  Q_DISABLE_COPY(ChannelFactory)
50 
51 public:
52 #ifndef DOXYGEN_SHOULD_SKIP_THIS
53  struct TP_QT_EXPORT Constructor : public RefCounted
54  {
55  virtual ~Constructor() {}
56 
57  virtual ChannelPtr construct(const ConnectionPtr &conn, const QString &objectPath,
58  const QVariantMap &immutableProperties) const = 0;
59  };
60  typedef SharedPtr<Constructor> ConstructorPtr;
61  typedef SharedPtr<const Constructor> ConstructorConstPtr;
62 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
63 
64  static ChannelFactoryPtr create(const QDBusConnection &bus);
65 
66  virtual ~ChannelFactory();
67 
68  Features featuresForTextChats(const QVariantMap &additionalProps = QVariantMap()) const;
69  void addFeaturesForTextChats(const Features &features,
70  const QVariantMap &additionalProps = QVariantMap());
71 
72  ConstructorConstPtr constructorForTextChats(
73  const QVariantMap &additionalProps = QVariantMap()) const;
74 
75  template<typename Subclass>
76  void setSubclassForTextChats(const QVariantMap &additionalProps = QVariantMap())
77  {
78  setConstructorForTextChats(SubclassCtor<Subclass>::create(), additionalProps);
79  }
80 
81  void setConstructorForTextChats(const ConstructorConstPtr &ctor,
82  const QVariantMap &additionalProps = QVariantMap());
83 
84  Features featuresForTextChatrooms(const QVariantMap &additionalProps = QVariantMap()) const;
85  void addFeaturesForTextChatrooms(const Features &features,
86  const QVariantMap &additionalProps = QVariantMap());
87 
88  ConstructorConstPtr constructorForTextChatrooms(
89  const QVariantMap &additionalProps = QVariantMap()) const;
90 
91  template<typename Subclass>
92  void setSubclassForTextChatrooms(const QVariantMap &additionalProps = QVariantMap())
93  {
94  setConstructorForTextChatrooms(SubclassCtor<Subclass>::create(), additionalProps);
95  }
96 
97  void setConstructorForTextChatrooms(const ConstructorConstPtr &ctor,
98  const QVariantMap &additionalProps = QVariantMap());
99 
100  Features featuresForCalls(const QVariantMap &additionalProps = QVariantMap()) const;
101  void addFeaturesForCalls(const Features &features,
102  const QVariantMap &additionalProps = QVariantMap());
103 
104  template<typename Subclass>
105  void setSubclassForCalls(const QVariantMap &additionalProps = QVariantMap())
106  {
107  setConstructorForCalls(SubclassCtor<Subclass>::create(), additionalProps);
108  }
109 
110  void setConstructorForCalls(const ConstructorConstPtr &ctor,
111  const QVariantMap &additionalProps = QVariantMap());
112 
113  TP_QT_DEPRECATED Features featuresForStreamedMediaCalls(const QVariantMap &additionalProps = QVariantMap()) const;
114  TP_QT_DEPRECATED void addFeaturesForStreamedMediaCalls(const Features &features,
115  const QVariantMap &additionalProps = QVariantMap());
116 
117  TP_QT_DEPRECATED ConstructorConstPtr constructorForStreamedMediaCalls(
118  const QVariantMap &additionalProps = QVariantMap()) const;
119 
120  template<typename Subclass>
121  TP_QT_DEPRECATED void setSubclassForStreamedMediaCalls(const QVariantMap &additionalProps = QVariantMap())
122  {
123  setConstructorForStreamedMediaCalls(SubclassCtor<Subclass>::create(), additionalProps);
124  }
125 
126  TP_QT_DEPRECATED void setConstructorForStreamedMediaCalls(const ConstructorConstPtr &ctor,
127  const QVariantMap &additionalProps = QVariantMap());
128 
129  Features featuresForRoomLists(const QVariantMap &additionalProps = QVariantMap()) const;
130  void addFeaturesForRoomLists(const Features &features,
131  const QVariantMap &additionalProps = QVariantMap());
132 
133  ConstructorConstPtr constructorForRoomLists(
134  const QVariantMap &additionalProps = QVariantMap()) const;
135 
136  template<typename Subclass>
137  void setSubclassForRoomLists(const QVariantMap &additionalProps = QVariantMap())
138  {
139  setConstructorForRoomLists(SubclassCtor<Subclass>::create(), additionalProps);
140  }
141 
142  void setConstructorForRoomLists(const ConstructorConstPtr &ctor,
143  const QVariantMap &additionalProps = QVariantMap());
144 
145  Features featuresForOutgoingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) const;
146  void addFeaturesForOutgoingFileTransfers(const Features &features,
147  const QVariantMap &additionalProps = QVariantMap());
148 
149  ConstructorConstPtr constructorForOutgoingFileTransfers(
150  const QVariantMap &additionalProps = QVariantMap()) const;
151 
152  template<typename Subclass>
153  void setSubclassForOutgoingFileTransfers(const QVariantMap &additionalProps = QVariantMap())
154  {
155  setConstructorForOutgoingFileTransfers(SubclassCtor<Subclass>::create(), additionalProps);
156  }
157 
158  void setConstructorForOutgoingFileTransfers(const ConstructorConstPtr &ctor,
159  const QVariantMap &additionalProps = QVariantMap());
160 
161  Features featuresForIncomingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) const;
162  void addFeaturesForIncomingFileTransfers(const Features &features,
163  const QVariantMap &additionalProps = QVariantMap());
164 
165  ConstructorConstPtr constructorForIncomingFileTransfers(
166  const QVariantMap &additionalProps = QVariantMap()) const;
167 
168  template<typename Subclass>
169  void setSubclassForIncomingFileTransfers(const QVariantMap &additionalProps = QVariantMap())
170  {
171  setConstructorForIncomingFileTransfers(SubclassCtor<Subclass>::create(), additionalProps);
172  }
173 
174  void setConstructorForIncomingFileTransfers(const ConstructorConstPtr &ctor,
175  const QVariantMap &additionalProps = QVariantMap());
176 
177  Features featuresForOutgoingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const;
178  void addFeaturesForOutgoingStreamTubes(const Features &features,
179  const QVariantMap &additionalProps = QVariantMap());
180 
181  ConstructorConstPtr constructorForOutgoingStreamTubes(
182  const QVariantMap &additionalProps = QVariantMap()) const;
183 
184  template<typename Subclass>
185  void setSubclassForOutgoingStreamTubes(const QVariantMap &additionalProps = QVariantMap())
186  {
187  setConstructorForOutgoingStreamTubes(SubclassCtor<Subclass>::create(), additionalProps);
188  }
189 
190  void setConstructorForOutgoingStreamTubes(const ConstructorConstPtr &ctor,
191  const QVariantMap &additionalProps = QVariantMap());
192 
193  Features featuresForIncomingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const;
194  void addFeaturesForIncomingStreamTubes(const Features &features,
195  const QVariantMap &additionalProps = QVariantMap());
196 
197  ConstructorConstPtr constructorForIncomingStreamTubes(
198  const QVariantMap &additionalProps = QVariantMap()) const;
199 
200  template<typename Subclass>
201  void setSubclassForIncomingStreamTubes(const QVariantMap &additionalProps = QVariantMap())
202  {
203  setConstructorForIncomingStreamTubes(SubclassCtor<Subclass>::create(), additionalProps);
204  }
205 
206  void setConstructorForIncomingStreamTubes(const ConstructorConstPtr &ctor,
207  const QVariantMap &additionalProps = QVariantMap());
208 
209  Features featuresForOutgoingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const;
210  void addFeaturesForOutgoingRoomStreamTubes(const Features &features,
211  const QVariantMap &additionalProps = QVariantMap());
212 
213  ConstructorConstPtr constructorForOutgoingRoomStreamTubes(
214  const QVariantMap &additionalProps = QVariantMap()) const;
215 
216  template<typename Subclass>
217  void setSubclassForOutgoingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap())
218  {
219  setConstructorForOutgoingRoomStreamTubes(SubclassCtor<Subclass>::create(), additionalProps);
220  }
221 
222  void setConstructorForOutgoingRoomStreamTubes(const ConstructorConstPtr &ctor,
223  const QVariantMap &additionalProps = QVariantMap());
224 
225  Features featuresForIncomingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const;
226  void addFeaturesForIncomingRoomStreamTubes(const Features &features,
227  const QVariantMap &additionalProps = QVariantMap());
228 
229  ConstructorConstPtr constructorForIncomingRoomStreamTubes(
230  const QVariantMap &additionalProps = QVariantMap()) const;
231 
232  template<typename Subclass>
233  void setSubclassForIncomingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap())
234  {
235  setConstructorForIncomingRoomStreamTubes(SubclassCtor<Subclass>::create(), additionalProps);
236  }
237 
238  void setConstructorForIncomingRoomStreamTubes(const ConstructorConstPtr &ctor,
239  const QVariantMap &additionalProps = QVariantMap());
240 
241  Features featuresForOutgoingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
242  void addFeaturesForOutgoingDBusTubes(const Features &features,
243  const QVariantMap &additionalProps = QVariantMap());
244 
245  ConstructorConstPtr constructorForOutgoingDBusTubes(
246  const QVariantMap &additionalProps = QVariantMap()) const;
247 
248  template<typename Subclass>
249  void setSubclassForOutgoingDBusTubes(const QVariantMap &additionalProps = QVariantMap())
250  {
251  setConstructorForOutgoingDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
252  }
253 
254  void setConstructorForOutgoingDBusTubes(const ConstructorConstPtr &ctor,
255  const QVariantMap &additionalProps = QVariantMap());
256 
257  Features featuresForIncomingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
258  void addFeaturesForIncomingDBusTubes(const Features &features,
259  const QVariantMap &additionalProps = QVariantMap());
260 
261  ConstructorConstPtr constructorForIncomingDBusTubes(
262  const QVariantMap &additionalProps = QVariantMap()) const;
263 
264  template<typename Subclass>
265  void setSubclassForIncomingDBusTubes(const QVariantMap &additionalProps = QVariantMap())
266  {
267  setConstructorForIncomingDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
268  }
269 
270  void setConstructorForIncomingDBusTubes(const ConstructorConstPtr &ctor,
271  const QVariantMap &additionalProps = QVariantMap());
272 
273  Features featuresForOutgoingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
274  void addFeaturesForOutgoingRoomDBusTubes(const Features &features,
275  const QVariantMap &additionalProps = QVariantMap());
276 
277  ConstructorConstPtr constructorForOutgoingRoomDBusTubes(
278  const QVariantMap &additionalProps = QVariantMap()) const;
279 
280  template<typename Subclass>
281  void setSubclassForOutgoingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap())
282  {
283  setConstructorForOutgoingRoomDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
284  }
285 
286  void setConstructorForOutgoingRoomDBusTubes(const ConstructorConstPtr &ctor,
287  const QVariantMap &additionalProps = QVariantMap());
288 
289  Features featuresForIncomingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
290  void addFeaturesForIncomingRoomDBusTubes(const Features &features,
291  const QVariantMap &additionalProps = QVariantMap());
292 
293  ConstructorConstPtr constructorForIncomingRoomDBusTubes(
294  const QVariantMap &additionalProps = QVariantMap()) const;
295 
296  template<typename Subclass>
297  void setSubclassForIncomingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap())
298  {
299  setConstructorForIncomingRoomDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
300  }
301 
302  void setConstructorForIncomingRoomDBusTubes(const ConstructorConstPtr &ctor,
303  const QVariantMap &additionalProps = QVariantMap());
304 
305  Features featuresForContactSearches(const QVariantMap &additionalProps = QVariantMap()) const;
306  void addFeaturesForContactSearches(const Features &features,
307  const QVariantMap &additionalProps = QVariantMap());
308 
309  ConstructorConstPtr constructorForContactSearches(
310  const QVariantMap &additionalProps = QVariantMap()) const;
311 
312  template<typename Subclass>
313  void setSubclassForContactSearches(const QVariantMap &additionalProps = QVariantMap())
314  {
315  setConstructorForContactSearches(SubclassCtor<Subclass>::create(), additionalProps);
316  }
317 
318  void setConstructorForContactSearches(const ConstructorConstPtr &ctor,
319  const QVariantMap &additionalProps = QVariantMap());
320 
321  Features featuresForServerAuthentication(const QVariantMap &additionalProps = QVariantMap()) const;
322  void addFeaturesForServerAuthentication(const Features &features,
323  const QVariantMap &additionalProps = QVariantMap());
324 
325  ConstructorConstPtr constructorForServerAuthentication(
326  const QVariantMap &additionalProps = QVariantMap()) const;
327 
328  template<typename Subclass>
329  void setSubclassForServerAuthentication(const QVariantMap &additionalProps = QVariantMap())
330  {
331  setConstructorForServerAuthentication(SubclassCtor<Subclass>::create(), additionalProps);
332  }
333 
334  void setConstructorForServerAuthentication(const ConstructorConstPtr &ctor,
335  const QVariantMap &additionalProps = QVariantMap());
336 
337  Features commonFeatures() const;
338  void addCommonFeatures(const Features &features);
339 
340  ConstructorConstPtr fallbackConstructor() const;
341 
342  template <typename Subclass>
344  {
345  setFallbackConstructor(SubclassCtor<Subclass>::create());
346  }
347 
348  void setFallbackConstructor(const ConstructorConstPtr &ctor);
349 
350  Features featuresFor(const ChannelClassSpec &channelClass) const;
351  void addFeaturesFor(const ChannelClassSpec &channelClass, const Features &features);
352 
353  template <typename Subclass>
354  void setSubclassFor(const ChannelClassSpec &channelClass)
355  {
356  setConstructorFor(channelClass, SubclassCtor<Subclass>::create());
357  }
358 
359  ConstructorConstPtr constructorFor(const ChannelClassSpec &channelClass) const;
360  void setConstructorFor(const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor);
361 
362  PendingReady *proxy(const ConnectionPtr &connection, const QString &channelPath,
363  const QVariantMap &immutableProperties) const;
364 
365 protected:
366  ChannelFactory(const QDBusConnection &bus);
367 
368 #ifndef DOXYGEN_SHOULD_SKIP_THIS
369  template <typename Subclass>
370  struct SubclassCtor : public Constructor
371  {
372  static ConstructorPtr create()
373  {
374  return ConstructorPtr(new SubclassCtor<Subclass>());
375  }
376 
377  virtual ~SubclassCtor() {}
378 
379  ChannelPtr construct(const ConnectionPtr &conn, const QString &objectPath,
380  const QVariantMap &immutableProperties) const
381  {
382  return Subclass::create(conn, objectPath, immutableProperties);
383  }
384  };
385 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
386 
387  virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const;
388  // Nothing we'd like to prepare()
389  virtual Features featuresFor(const DBusProxyPtr &proxy) const;
390 
391 private:
392  struct Private;
393  Private *mPriv;
394 };
395 
396 } // Tp
397 
398 #endif
void setSubclassForOutgoingFileTransfers(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:153
void setSubclassForContactSearches(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:313
void setSubclassForIncomingStreamTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:201
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
void setSubclassForIncomingFileTransfers(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:169
The ChannelFactory class is responsible for constructing Channel objects according to application-def...
Definition: channel-factory.h:46
void setSubclassForRoomLists(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:137
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
void setSubclassForCalls(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:105
void setSubclassForServerAuthentication(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:329
The ChannelClassSpec class represents a Telepathy channel class.
Definition: channel-class-spec.h:42
void setSubclassForOutgoingDBusTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:249
void setSubclassForIncomingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:297
void setSubclassForTextChats(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:76
void setSubclassForOutgoingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:281
void setSubclassFor(const ChannelClassSpec &channelClass)
Definition: channel-factory.h:354
void setSubclassForOutgoingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:217
void setSubclassForIncomingDBusTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:265
void setFallbackSubclass()
Definition: channel-factory.h:343
The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching...
Definition: dbus-proxy-factory.h:48
void setSubclassForTextChatrooms(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:92
void setSubclassForIncomingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:233
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Features class represents a list of Feature.
Definition: feature.h:61
void setSubclassForOutgoingStreamTubes(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:185
void setSubclassForStreamedMediaCalls(const QVariantMap &additionalProps=QVariantMap())
Definition: channel-factory.h:121


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01098.html0000644000175100017520000007227712530426260021153 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RoomListChannel Member List

This is the complete list of members for Tp::RoomListChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::RoomListChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::Channelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
RoomListChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=Channel::FeatureCore)Tp::RoomListChannelprotected
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~RoomListChannel()Tp::RoomListChannelvirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00942.html0000644000175100017520000001775612530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelMergeableConferenceInterface Member List

This is the complete list of members for Tp::BaseChannelMergeableConferenceInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create()Tp::BaseChannelMergeableConferenceInterfaceinlinestatic
create()Tp::BaseChannelMergeableConferenceInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseChannelMergeableConferenceInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
merge(const QDBusObjectPath &channel)Tp::BaseChannelMergeableConferenceInterface
MergeCallback typedefTp::BaseChannelMergeableConferenceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setMergeCallback(const MergeCallback &cb)Tp::BaseChannelMergeableConferenceInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelMergeableConferenceInterface()Tp::BaseChannelMergeableConferenceInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00441.html0000644000175100017520000003222212530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::PendingFailure Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingFailure Class Reference

The PendingFailure class represents a PendingOperation that always fails with the error passed to the constructor. More...

#include <TelepathyQt/PendingFailure>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingFailure (const QString &name, const QString &message, const SharedPtr< RefCounted > &object)
 
 PendingFailure (const QDBusError &error, const SharedPtr< RefCounted > &object)
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingFailure class represents a PendingOperation that always fails with the error passed to the constructor.

Constructor & Destructor Documentation

Tp::PendingFailure::PendingFailure ( const QString &  name,
const QString &  message,
const SharedPtr< RefCounted > &  object 
)
inline
Tp::PendingFailure::PendingFailure ( const QDBusError &  error,
const SharedPtr< RefCounted > &  object 
)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00196.html0000644000175100017520000006470512530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceDestroyableInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelInterfaceDestroyableInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Destroy (int timeout=-1)
 

Public Member Functions

 ChannelInterfaceDestroyableInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceDestroyableInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceDestroyableInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceDestroyableInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceDestroyableInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Destroyable".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceDestroyableInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceDestroyableInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceDestroyableInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceDestroyableInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceDestroyableInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceDestroyableInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Destroyable", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceDestroyableInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceDestroyableInterface::Destroy ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Destroy on the remote object.

Close the channel abruptly, possibly with loss of data. The connection manager MUST NOT re-create the channel unless/until more events occur.

The main motivating situation for this method is that when a Text channel with pending messages is closed with Close, it comes back as an incoming channel (to avoid a race between Close and an incoming message). If Destroy is called on a Text channel, the CM should delete all pending messages and close the channel, and the channel shouldn't be re-created until/unless another message arrives.

Most clients SHOULD call ChannelInterface::Close() instead. However, if a client explicitly intends to destroy the channel with possible loss of data, it SHOULD call this method if this interface is supported (according to the ChannelInterface::Interfaces property), falling back to Close if not.

In particular, channel dispatchers SHOULD use this method if available when terminating channels that cannot be handled correctly (for instance, if no handler has been installed for a channel type, or if the handler crashes repeatedly).

Connection managers do not need to implement this interface on channels where Close and Destroy would be equivalent.

Callers need to be able to fall back to Close in any case.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceDestroyableInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00601_source.html0000644000175100017520000004253312530426257022516 0ustar00kaffeinekaffeine00000000000000 channel-dispatch-operation.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel-dispatch-operation.h
1 
23 #ifndef _TelepathyQt_channel_dispatch_operation_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_dispatch_operation_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-channel-dispatch-operation.h>
31 
32 #include <TelepathyQt/Constants>
33 #include <TelepathyQt/DBus>
34 #include <TelepathyQt/DBusProxy>
35 #include <TelepathyQt/Feature>
36 #include <TelepathyQt/OptionalInterfaceFactory>
37 #include <TelepathyQt/ReadinessHelper>
38 #include <TelepathyQt/Types>
39 #include <TelepathyQt/SharedPtr>
40 
41 #include <QString>
42 #include <QStringList>
43 #include <QVariantMap>
44 
45 namespace Tp
46 {
47 
48 class PendingOperation;
49 
50 class TP_QT_EXPORT ChannelDispatchOperation : public StatefulDBusProxy,
51  public OptionalInterfaceFactory<ChannelDispatchOperation>
52 {
53  Q_OBJECT
54  Q_DISABLE_COPY(ChannelDispatchOperation)
55 
56 public:
57  static const Feature FeatureCore;
58 
59  static ChannelDispatchOperationPtr create(const QDBusConnection &bus,
60  const QString &objectPath, const QVariantMap &immutableProperties,
61  const QList<ChannelPtr> &initialChannels,
62  const AccountFactoryConstPtr &accountFactory,
63  const ConnectionFactoryConstPtr &connectionFactory,
64  const ChannelFactoryConstPtr &channelFactory,
65  const ContactFactoryConstPtr &contactFactory);
66  virtual ~ChannelDispatchOperation();
67 
68  ConnectionPtr connection() const;
69 
70  AccountPtr account() const;
71 
72  QList<ChannelPtr> channels() const;
73 
74  QStringList possibleHandlers() const;
75 
76  PendingOperation *handleWith(const QString &handler);
77 
78  PendingOperation *claim();
79  PendingOperation *claim(const AbstractClientHandlerPtr &handler);
80 
81 Q_SIGNALS:
82  void channelLost(const Tp::ChannelPtr &channel, const QString &errorName,
83  const QString &errorMessage);
84 
85 protected:
86  ChannelDispatchOperation(const QDBusConnection &bus,
87  const QString &objectPath, const QVariantMap &immutableProperties,
88  const QList<ChannelPtr> &initialChannels,
89  const AccountFactoryConstPtr &accountFactory,
90  const ConnectionFactoryConstPtr &connectionFactory,
91  const ChannelFactoryConstPtr &channelFactory,
92  const ContactFactoryConstPtr &contactFactory);
93 
94  Client::ChannelDispatchOperationInterface *baseInterface() const;
95 
96 private Q_SLOTS:
97  TP_QT_NO_EXPORT void onFinished();
98  TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher);
99  TP_QT_NO_EXPORT void onChannelLost(const QDBusObjectPath &channelObjectPath,
100  const QString &errorName, const QString &errorMessage);
101  TP_QT_NO_EXPORT void onProxiesPrepared(Tp::PendingOperation *op);
102 
103 private:
104  class PendingClaim;
105  friend class PendingClaim;
106 
107  struct Private;
108  friend struct Private;
109  Private *mPriv;
110 };
111 
112 } // Tp
113 
114 #endif
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: cli-channel-dispatch-operation.h:44
static const Feature FeatureCore
Definition: channel-dispatch-operation.h:57
The ChannelDispatchOperation class represents a Telepathy channel dispatch operation.
Definition: channel-dispatch-operation.h:50
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01157.html0000644000175100017520000000502712530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSubscriptions Member List

This is the complete list of members for Tp::ContactSubscriptions, including all inherited members.

publishTp::ContactSubscriptions
publishRequestTp::ContactSubscriptions
subscribeTp::ContactSubscriptions


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00500.html0000644000175100017520000001053312530426260021121 0ustar00kaffeinekaffeine00000000000000 Tp::RTCPFeedbackMessageProperties Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::RTCPFeedbackMessageProperties Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint RTCPMinimumInterval
 
RTCPFeedbackMessageList messages
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

uint Tp::RTCPFeedbackMessageProperties::RTCPMinimumInterval

The minimum interval between two regular RTCP packets in milliseconds for this content. If no special value is desired, one should put MAXUINT (0xFFFFFFFF). Implementors and users of Call's RTCPFeedback should not use the MAXUINT default. Instead, in RTP/AVP, the default should be 5000 (5 seconds). If using the RTP/AVPF profile, it can be set to a lower value, the default being 0.

RTCPFeedbackMessageList Tp::RTCPFeedbackMessageProperties::messages

The RTCP feedback messages for this codec.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00255.html0000644000175100017520000007572712530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ClientApproverInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ClientApproverInterface Class Reference

#include <TelepathyQt/Client>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply AddDispatchOperation (const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const QVariantMap &properties, int timeout=-1)
 

Public Member Functions

 ClientApproverInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientApproverInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientApproverInterface (Tp::DBusProxy *proxy)
 
 ClientApproverInterface (const Tp::Client::ClientInterface &mainInterface)
 
 ClientApproverInterface (const Tp::Client::ClientInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyApproverChannelFilter () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Client.Approver".

Constructor & Destructor Documentation

Tp::Client::ClientApproverInterface::ClientApproverInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientApproverInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientApproverInterface::ClientApproverInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientApproverInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientApproverInterface::ClientApproverInterface ( Tp::DBusProxy proxy)

Creates a ClientApproverInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ClientApproverInterface::ClientApproverInterface ( const Tp::Client::ClientInterface mainInterface)
explicit

Creates a ClientApproverInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ClientApproverInterface::ClientApproverInterface ( const Tp::Client::ClientInterface mainInterface,
QObject *  parent 
)

Creates a ClientApproverInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ClientApproverInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Client.Approver", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ClientApproverInterface::requestPropertyApproverChannelFilter ( ) const
inline

Asynchronous getter for the remote object property ApproverChannelFilter of type Tp::ChannelClassList.

A specification of the channels in which this approver is interested. The AddDispatchOperation() method should be called by the channel dispatcher whenever at least one of the channels in a channel dispatch operation matches this description.

This property works in exactly the same way as the ClientObserverInterface::ObserverChannelFilter property. In particular, it cannot change while the approver process continues to own the corresponding Client bus name.

In the .client file, it is represented in the same way as ObserverChannelFilter, but the group has the same name as this interface and the keys start with ApproverChannelFilter instead of ObserverChannelFilter.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ClientApproverInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ClientApproverInterface::AddDispatchOperation ( const Tp::ChannelDetailsList channels,
const QDBusObjectPath &  dispatchOperation,
const QVariantMap &  properties,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddDispatchOperation on the remote object.

Called by the channel dispatcher when a ChannelDispatchOperation in which the approver has registered an interest is created, or when the approver starts up while such channel dispatch operations already exist.

The channel dispatcher SHOULD call this method on all approvers at the same time. If an approver returns an error from this method, the approver is assumed to be faulty.

If no approvers return from this method successfully (including situations where there are no matching approvers at all), the channel dispatcher SHOULD consider this to be an error, and recover by dispatching the channel to the most preferred handler.

Processes that aren't approvers (or don't at least ensure that there is some approver) probably shouldn't be making connections anyway, so there should always be at least one approver running.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
channels

The initial value of the ChannelDispatchOperationInterface::Channels property, containing the ChannelInterface s to be dispatched and their properties.

This can't be signalled to the approver through the Properties parameter of this method, because Channels is not an immutable property.

This argument always contains all of the channels in the channel dispatch operation, even if not all of them actually match the ApproverChannelFilter .

This seems the least bad way to handle such a situation; see the discussion on bug #21090.

The actual channels to be dispatched may reduce as channels are closed: this is signalled by ChannelDispatchOperationInterface::ChannelLost() .

Approvers SHOULD connect to ChannelLost and ChannelDispatchOperationInterface::Finished() . (if desired) before returning from AddDispatchOperation, since those signals are guaranteed not to be emitted until after all AddDispatchOperation calls have returned (with success or failure) or timed out.

dispatchOperation

The ChannelDispatchOperationInterface to be processed.

properties
Properties of the channel dispatch operation. The keys MUST be 
fully qualified D-Bus property names. This MUST NOT include 
properties that could change, SHOULD include as many properties as 
possible given that constraint, and MUST include at least the 
Account, Connection and PossibleHandlers properties.
timeoutThe timeout in milliseconds.
void Tp::Client::ClientApproverInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01216.html0000644000175100017520000000503212530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandlerCapabilities Member List

This is the complete list of members for Tp::HandlerCapabilities, including all inherited members.

capabilitiesTp::HandlerCapabilities
channelClassesTp::HandlerCapabilities
wellKnownNameTp::HandlerCapabilities


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00314.html0000644000175100017520000001361512530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::ContactAttributesMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactAttributesMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QVariantMap >.

Public Member Functions

 ContactAttributesMap ()
 
 ContactAttributesMap (const QMap< uint, QVariantMap > &a)
 
ContactAttributesMapoperator= (const QMap< uint, QVariantMap > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QVariantMap>, but needed to have a discrete type in the Qt type system.

Mapping returned by GetContactAttributes, representing a collection of Contacts and their requested attributes.

Constructor & Destructor Documentation

Tp::ContactAttributesMap::ContactAttributesMap ( )
inline
Tp::ContactAttributesMap::ContactAttributesMap ( const QMap< uint, QVariantMap > &  a)
inline

Member Function Documentation

ContactAttributesMap& Tp::ContactAttributesMap::operator= ( const QMap< uint, QVariantMap > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x6e.html0000644000175100017520000002324512530426260024205 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- n -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01285.html0000644000175100017520000003301212530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeTubesInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeTubesInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AcceptDBusTube(uint ID, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
AcceptStreamTube(uint ID, uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
ChannelTypeTubesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeTubesInterface
ChannelTypeTubesInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeTubesInterface
ChannelTypeTubesInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeTubesInterface
ChannelTypeTubesInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeTubesInterfaceexplicit
ChannelTypeTubesInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeTubesInterface
CloseTube(uint ID, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
DBusNamesChanged(uint ID, const Tp::DBusTubeMemberList &added, const Tp::UIntList &removed)Tp::Client::ChannelTypeTubesInterfacesignal
GetAvailableStreamTubeTypes(int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
GetAvailableTubeTypes(int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
GetDBusNames(uint ID, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
GetDBusTubeAddress(uint ID, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
GetStreamTubeSocketAddress(uint ID, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeTubesInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListTubes(int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
NewTube(uint ID, uint initiator, uint type, const QString &service, const QVariantMap &parameters, uint state)Tp::Client::ChannelTypeTubesInterfacesignal
OfferDBusTube(const QString &service, const QVariantMap &parameters, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
OfferStreamTube(const QString &service, const QVariantMap &parameters, uint addressType, const QDBusVariant &address, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)Tp::Client::ChannelTypeTubesInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeTubesInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeTubesInterfaceinlinestatic
StreamTubeNewConnection(uint ID, uint handle)Tp::Client::ChannelTypeTubesInterfacesignal
TubeClosed(uint ID)Tp::Client::ChannelTypeTubesInterfacesignal
TubeStateChanged(uint ID, uint state)Tp::Client::ChannelTypeTubesInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00069.html0000644000175100017520000002431412530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractFunctorCaller Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Public Attributes | List of all members
Tp::AbstractFunctorCaller Struct Referenceabstract

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherited by Tp::BaseFunctorCaller< FunctorCaller0< Functor, R >, Functor >, Tp::BaseFunctorCaller< FunctorCaller1< Functor, R, Arg1 >, Functor >, Tp::BaseFunctorCaller< FunctorCaller2< Functor, R, Arg1, Arg2 >, Functor >, Tp::BaseFunctorCaller< FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >, Functor >, Tp::BaseFunctorCaller< FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >, Functor >, Tp::BaseFunctorCaller< FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Functor >, Tp::BaseFunctorCaller< FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, Functor >, Tp::BaseFunctorCaller< FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, Functor >, and Tp::BaseFunctorCaller< T, Functor >.

Public Types

typedef void *(* HookType )(void *)
 

Public Member Functions

 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const =0
 

Public Attributes

HookType invokeMethodHook
 

Member Typedef Documentation

typedef void*(* Tp::AbstractFunctorCaller::HookType)(void *)

Constructor & Destructor Documentation

Tp::AbstractFunctorCaller::AbstractFunctorCaller ( HookType  invokeMethodHook)
inline
virtual Tp::AbstractFunctorCaller::~AbstractFunctorCaller ( )
inlinevirtual

Member Function Documentation

virtual AbstractFunctorCaller* Tp::AbstractFunctorCaller::clone ( ) const
pure virtual

Member Data Documentation

HookType Tp::AbstractFunctorCaller::invokeMethodHook


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00884.html0000644000175100017520000002715112530426257021152 0ustar00kaffeinekaffeine00000000000000 Channel service implementation
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Channel service implementation

Classes

class  Tp::Service::ChannelAdaptor
 
class  Tp::Service::ChannelInterfaceAnonymityAdaptor
 
class  Tp::Service::ChannelInterfaceCallStateAdaptor
 
class  Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor
 
class  Tp::Service::ChannelInterfaceChatStateAdaptor
 
class  Tp::Service::ChannelInterfaceConferenceAdaptor
 
class  Tp::Service::ChannelInterfaceDTMFAdaptor
 
class  Tp::Service::ChannelInterfaceDestroyableAdaptor
 
class  Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor
 
class  Tp::Service::ChannelInterfaceGroupAdaptor
 
class  Tp::Service::ChannelInterfaceHoldAdaptor
 
class  Tp::Service::ChannelInterfaceMediaSignallingAdaptor
 
class  Tp::Service::ChannelInterfaceMergeableConferenceAdaptor
 
class  Tp::Service::ChannelInterfaceMessagesAdaptor
 
class  Tp::Service::ChannelInterfacePasswordAdaptor
 
class  Tp::Service::ChannelInterfaceRoomAdaptor
 
class  Tp::Service::ChannelInterfaceRoomConfigAdaptor
 
class  Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
 
class  Tp::Service::ChannelInterfaceSMSAdaptor
 
class  Tp::Service::ChannelInterfaceSecurableAdaptor
 
class  Tp::Service::ChannelInterfaceServicePointAdaptor
 
class  Tp::Service::ChannelInterfaceSplittableAdaptor
 
class  Tp::Service::ChannelInterfaceSubjectAdaptor
 
class  Tp::Service::ChannelTypeCallAdaptor
 
class  Tp::Service::ChannelTypeContactSearchAdaptor
 
class  Tp::Service::ChannelTypeDBusTubeAdaptor
 
class  Tp::Service::ChannelTypeFileTransferAdaptor
 
class  Tp::Service::ChannelTypeRoomListAdaptor
 
class  Tp::Service::ChannelTypeServerAuthenticationAdaptor
 
class  Tp::Service::ChannelTypeServerTLSConnectionAdaptor
 
class  Tp::Service::ChannelTypeStreamTubeAdaptor
 
class  Tp::Service::ChannelTypeStreamedMediaAdaptor
 
class  Tp::Service::ChannelTypeTextAdaptor
 

Detailed Description

Classes to implement Telepathy Channel objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespacemembers_vars.html0000644000175100017520000001635712530426260024670 0ustar00kaffeinekaffeine00000000000000 Namespace Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- n -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00383.html0000644000175100017520000006147312530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::LocationInfo Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::LocationInfo Class Reference

The LocationInfo class represents the location of a Telepathy Contact. More...

#include <TelepathyQt/LocationInfo>

Public Member Functions

 LocationInfo ()
 
 LocationInfo (const QVariantMap &location)
 
 LocationInfo (const LocationInfo &other)
 
virtual ~LocationInfo ()
 
bool isValid () const
 
LocationInfooperator= (const LocationInfo &other)
 
QString countryCode () const
 
QString country () const
 
QString region () const
 
QString locality () const
 
QString area () const
 
QString postalCode () const
 
QString street () const
 
QString building () const
 
QString floor () const
 
QString room () const
 
QString text () const
 
QString description () const
 
QString uri () const
 
QString language () const
 
double latitude () const
 
double longitude () const
 
double altitude () const
 
double accuracy () const
 
double speed () const
 
double bearing () const
 
QDateTime timestamp () const
 
QVariantMap allDetails () const
 

Detailed Description

The LocationInfo class represents the location of a Telepathy Contact.

Constructor & Destructor Documentation

Tp::LocationInfo::LocationInfo ( )

Construct a new LocationInfo object.

Tp::LocationInfo::LocationInfo ( const QVariantMap &  location)
Tp::LocationInfo::LocationInfo ( const LocationInfo other)
Tp::LocationInfo::~LocationInfo ( )
virtual

Class destructor.

Member Function Documentation

bool Tp::LocationInfo::isValid ( ) const
inline
LocationInfo & Tp::LocationInfo::operator= ( const LocationInfo other)
QString Tp::LocationInfo::countryCode ( ) const
QString Tp::LocationInfo::country ( ) const
QString Tp::LocationInfo::region ( ) const
QString Tp::LocationInfo::locality ( ) const
QString Tp::LocationInfo::area ( ) const
QString Tp::LocationInfo::postalCode ( ) const
QString Tp::LocationInfo::street ( ) const
QString Tp::LocationInfo::building ( ) const
QString Tp::LocationInfo::floor ( ) const
QString Tp::LocationInfo::room ( ) const
QString Tp::LocationInfo::text ( ) const
QString Tp::LocationInfo::description ( ) const
QString Tp::LocationInfo::uri ( ) const
QString Tp::LocationInfo::language ( ) const
double Tp::LocationInfo::latitude ( ) const
double Tp::LocationInfo::longitude ( ) const
double Tp::LocationInfo::altitude ( ) const
double Tp::LocationInfo::accuracy ( ) const
double Tp::LocationInfo::speed ( ) const
double Tp::LocationInfo::bearing ( ) const
QDateTime Tp::LocationInfo::timestamp ( ) const
QVariantMap Tp::LocationInfo::allDetails ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01344.html0000644000175100017520000001376212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceMessagesAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceMessagesAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
DeliveryReportingSupport() const Tp::Service::ChannelInterfaceMessagesAdaptor
GetPendingMessageContent(uint messageID, const Tp::UIntList &parts, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceMessagesAdaptorslot
MessagePartSupportFlags() const Tp::Service::ChannelInterfaceMessagesAdaptor
MessageReceived(const Tp::MessagePartList &message)Tp::Service::ChannelInterfaceMessagesAdaptorsignal
MessageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken)Tp::Service::ChannelInterfaceMessagesAdaptorsignal
MessageTypes() const Tp::Service::ChannelInterfaceMessagesAdaptor
PendingMessages() const Tp::Service::ChannelInterfaceMessagesAdaptor
PendingMessagesRemoved(const Tp::UIntList &messageIDs)Tp::Service::ChannelInterfaceMessagesAdaptorsignal
SendMessage(const Tp::MessagePartList &message, uint flags, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceMessagesAdaptorslot
SupportedContentTypes() const Tp::Service::ChannelInterfaceMessagesAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00128.html0000644000175100017520000010420312530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::BaseProtocolAddressingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseProtocolAddressingInterface Class Reference

Base class for implementations of Protocol.Interface.Addressing. More...

#include <TelepathyQt/BaseProtocolAddressingInterface>

Inherits Tp::AbstractProtocolInterface.

Public Types

typedef Callback3< QString,
const QString &, const QString
&, DBusError * > 
NormalizeVCardAddressCallback
 
typedef Callback2< QString,
const QString &, DBusError * > 
NormalizeContactUriCallback
 

Public Member Functions

virtual ~BaseProtocolAddressingInterface ()
 
QVariantMap immutableProperties () const
 
QStringList addressableVCardFields () const
 
void setAddressableVCardFields (const QStringList &vcardFields)
 
QStringList addressableUriSchemes () const
 
void setAddressableUriSchemes (const QStringList &uriSchemes)
 
void setNormalizeVCardAddressCallback (const NormalizeVCardAddressCallback &cb)
 
QString normalizeVCardAddress (const QString &vcardField, const QString &vcardAddress, DBusError *error)
 
void setNormalizeContactUriCallback (const NormalizeContactUriCallback &cb)
 
QString normalizeContactUri (const QString &uri, DBusError *error)
 
- Public Member Functions inherited from Tp::AbstractProtocolInterface
 AbstractProtocolInterface (const QString &interfaceName)
 
virtual ~AbstractProtocolInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseProtocolAddressingInterfacePtr 
create ()
 
template<typename BaseProtocolAddressingInterfaceSubclass >
static SharedPtr
< BaseProtocolAddressingInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseProtocolAddressingInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Protocol.Interface.Addressing.

Member Typedef Documentation

typedef Callback3<QString, const QString &, const QString &, DBusError*> Tp::BaseProtocolAddressingInterface::NormalizeVCardAddressCallback

Constructor & Destructor Documentation

Tp::BaseProtocolAddressingInterface::~BaseProtocolAddressingInterface ( )
virtual

Class destructor.

Tp::BaseProtocolAddressingInterface::BaseProtocolAddressingInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseProtocolAddressingInterfacePtr Tp::BaseProtocolAddressingInterface::create ( )
inlinestatic
template<typename BaseProtocolAddressingInterfaceSubclass >
static SharedPtr<BaseProtocolAddressingInterfaceSubclass> Tp::BaseProtocolAddressingInterface::create ( )
inlinestatic
QVariantMap Tp::BaseProtocolAddressingInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

QStringList Tp::BaseProtocolAddressingInterface::addressableVCardFields ( ) const

Return the list of addressable vcard fields that have been set with setAddressableVCardFields().

This list is exposed as the AddressableVCardFields property of this interface on the bus and represents the vcard fields that can be used to request a contact for this protocol, normalized to lower case.

Returns
The list of addressable vcard fields that have been set with setAddressableVCardFields().
See Also
setAddressableVCardFields()
void Tp::BaseProtocolAddressingInterface::setAddressableVCardFields ( const QStringList &  vcardFields)

Set the list of vcard fields that can be used to request a contact for this protocol.

All the field names should be normalized to lower case.

Parameters
vcardFieldsThe list of vcard fields to set.
See Also
addressableVCardFields()
QStringList Tp::BaseProtocolAddressingInterface::addressableUriSchemes ( ) const

Return the list of URI schemes that have been set with setAddressableUriSchemes().

This list is exposed as the AddressableURISchemes property of this interface on the bus and represents the URI schemes that are supported by this protocol, like "tel" or "sip".

Returns
The list of addressable URI schemes that have been set with setAddressableUriSchemes().
See Also
setAddressableUriSchemes()
void Tp::BaseProtocolAddressingInterface::setAddressableUriSchemes ( const QStringList &  uriSchemes)

Set the list of URI schemes that are supported by this protocol.

Parameters
uriSchemesThe list of URI schemes to set.
See Also
addressableUriSchemes()
void Tp::BaseProtocolAddressingInterface::setNormalizeVCardAddressCallback ( const NormalizeVCardAddressCallback cb)

Set a callback that will be called from a client to normalize a given vcard address.

This callback will be called when the NormalizeVCardAddress method on the Protocol.Interface.Addressing D-Bus interface has been called.

Parameters
cbThe callback to set.
See Also
normalizeVCardAddress()
QString Tp::BaseProtocolAddressingInterface::normalizeVCardAddress ( const QString &  vcardField,
const QString &  vcardAddress,
DBusError error 
)

Return a normalized version of the given vcardAddress, which corresponds to the given vcardField, by calling the callback that has been set with setNormalizeVCardAddressCallback().

Parameters
vcardFieldThe vcard field of the address we are normalizing.
vcardAddressThe address to normalize, which is assumed to belong to a contact.
errorA pointer to a DBusError instance where any possible error will be stored.
Returns
A normalized version of the given vcardAddress, or an empty string if no callback to do the normalization has been set with setNormalizeVCardAddressCallback().
See Also
setNormalizeVCardAddressCallback()
void Tp::BaseProtocolAddressingInterface::setNormalizeContactUriCallback ( const NormalizeContactUriCallback cb)

Set a callback that will be called from a client to normalize a given contact URI.

This callback will be called when the NormalizeContactURI method on the Protocol.Interface.Addressing D-Bus interface has been called.

Parameters
cbThe callback to set.
See Also
normalizeContactUri()
QString Tp::BaseProtocolAddressingInterface::normalizeContactUri ( const QString &  uri,
DBusError error 
)

Return a normalized version of the given contact URI, uri, by calling the callback that has been set with setNormalizeContactUriCallback().

Parameters
uriThe contact URI to normalize.
errorA pointer to a DBusError instance where any possible error will be stored.
Returns
A normalized version of the given uri, or an empty string if no callback to do the normalization has been set with setNormalizeContactUriCallback().
See Also
setNormalizeContactUriCallback()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x7e.html0000644000175100017520000006042712530426260023176 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- ~ -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01099.html0000644000175100017520000007350612530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ServerAuthenticationChannel Member List

This is the complete list of members for Tp::ServerAuthenticationChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
captchaAuthentication() const Tp::ServerAuthenticationChannel
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::ServerAuthenticationChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::ServerAuthenticationChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasCaptchaInterface() const Tp::ServerAuthenticationChannel
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
ServerAuthenticationChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=ServerAuthenticationChannel::FeatureCore)Tp::ServerAuthenticationChannelprotected
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~ServerAuthenticationChannel()Tp::ServerAuthenticationChannelvirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00943.html0000644000175100017520000001755112530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelSplittableInterface Member List

This is the complete list of members for Tp::BaseChannelSplittableInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create()Tp::BaseChannelSplittableInterfaceinlinestatic
create()Tp::BaseChannelSplittableInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseChannelSplittableInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setSplitCallback(const SplitCallback &cb)Tp::BaseChannelSplittableInterface
split()Tp::BaseChannelSplittableInterface
SplitCallback typedefTp::BaseChannelSplittableInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelSplittableInterface()Tp::BaseChannelSplittableInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00597_source.html0000644000175100017520000001236312530426257022532 0ustar00kaffeinekaffeine00000000000000 channel-class-features.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel-class-features.h
1 
23 #ifndef _TelepathyQt_channel_class_features_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_class_features_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/ChannelClassSpec>
31 #include <TelepathyQt/Features>
32 
33 #include <QMetaType>
34 #include <QPair>
35 
36 namespace Tp
37 {
38 
39 typedef QPair<ChannelClassSpec, Features> ChannelClassFeatures;
40 
41 } // Tp
42 
43 Q_DECLARE_METATYPE(Tp::ChannelClassFeatures);
44 
45 #endif
QPair< ChannelClassSpec, Features > ChannelClassFeatures
Definition: channel-class-features.h:39


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00442.html0000644000175100017520000005315112530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::PendingHandles Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingHandles Class Reference

The PendingHandles class represents the parameters of and the reply to an asynchronous handle request/hold. More...

#include <TelepathyQt/PendingHandles>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingHandles ()
 
ConnectionPtr connection () const
 
HandleType handleType () const
 
bool isRequest () const
 
bool isReference () const
 
const QStringList & namesRequested () const
 
QStringList validNames () const
 
QHash< QString, QPair< QString,
QString > > 
invalidNames () const
 
const UIntListhandlesToReference () const
 
ReferencedHandles handles () const
 
UIntList invalidHandles () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingHandles class represents the parameters of and the reply to an asynchronous handle request/hold.

Instances of this class cannot be constructed directly; the only way to get one is to use Connection::requestHandles() or Connection::referenceHandles().

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingHandles::~PendingHandles ( )

Class destructor.

Member Function Documentation

ConnectionPtr Tp::PendingHandles::connection ( ) const

Return the connection through which the operation was made.

Returns
A pointer to the Connection object.
HandleType Tp::PendingHandles::handleType ( ) const

Return the handle type specified in the operation.

Returns
The target handle type as HandleType.
bool Tp::PendingHandles::isRequest ( ) const

Return whether the operation was a handle request (as opposed to a reference of existing handles).

Returns
true if the operation was a request (== !isReference()), false otherwise.
See Also
isReference()
bool Tp::PendingHandles::isReference ( ) const

Return whether the operation was a handle reference (as opposed to a request for new handles).

Returns
true if the operation was a reference (== !isRequest()), false otherwise.
See Also
isRequest()
const QStringList & Tp::PendingHandles::namesRequested ( ) const

If the operation was a request (as returned by isRequest()), returns the names of the entities for which handles were requested for. Otherwise, returns an empty list.

Returns
Reference to a list of the names of the entities.
QStringList Tp::PendingHandles::validNames ( ) const
QHash< QString, QPair< QString, QString > > Tp::PendingHandles::invalidNames ( ) const
const UIntList & Tp::PendingHandles::handlesToReference ( ) const

If the operation was a reference (as returned by isReference()), returns the handles which were to be referenced. Otherwise, returns an empty list.

Returns
Reference to a list of the handles specified to be referenced.
ReferencedHandles Tp::PendingHandles::handles ( ) const

Return the now-referenced handles resulting from the operation. If the operation has not (yet) finished successfully (isFinished() returns false), the return value is undefined.

For requests of new handles, handles()[i] will be the handle corresponding to the entity name namesToRequest()[i]. For references of existing handles, handles()[i] == handlesToReference()[i] will be true for any i.

Returns
ReferencedHandles object containing the handles.
UIntList Tp::PendingHandles::invalidHandles ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00197.html0000644000175100017520000005711612530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceDTMFAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | List of all members
Tp::Service::ChannelInterfaceDTMFAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void StartTone (uint streamID, uchar event, const QDBusMessage &dbusMessage)
 
void StopTone (uint streamID, const QDBusMessage &dbusMessage)
 
void MultipleTones (const QString &tones, const QDBusMessage &dbusMessage)
 

Signals

void TonesDeferred (const QString &tones)
 
void SendingTones (const QString &tones)
 
void StoppedTones (bool cancelled)
 

Public Member Functions

bool CurrentlySendingTones () const
 
QString InitialTones () const
 
QString DeferredTones () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ChannelInterfaceDTMFAdaptor::CurrentlySendingTones ( ) const

Return the value of the exported D-Bus object property CurrentlySendingTones of type bool.

Adaptees should export this property as a Qt property named 'currentlySendingTones' with type bool.

Indicates whether there are DTMF tones currently being sent in the channel. If so, the client should wait for StoppedTones signal before trying to send more tones.

Returns
The value of exported property CurrentlySendingTones.
QString Tp::Service::ChannelInterfaceDTMFAdaptor::InitialTones ( ) const

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

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

If non-empty in a channel request that will create a new channel, the connection manager should send the tones immediately after at least one eligible audio stream has been created in the channel. This should only be used with InitialAudio=true. This property is immutable (cannot change).

Returns
The value of exported property InitialTones.
QString Tp::Service::ChannelInterfaceDTMFAdaptor::DeferredTones ( ) const

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

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

The tones waiting for the user to continue, if any.

When this property is set to a non-empty value, TonesDeferred() is emitted. When any tones are played (i.e. whenever SendingTones() is emitted), this property is reset to the empty string.

Returns
The value of exported property DeferredTones.
void Tp::Service::ChannelInterfaceDTMFAdaptor::StartTone ( uint  streamID,
uchar  event,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void startTone(uint streamID, uchar event, const Tp::Service::ChannelInterfaceDTMFAdaptor::StartToneContextPtr &context);

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

Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until StopTone is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable. The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Parameters
streamID
A stream ID as defined in the StreamedMedia channel type. This 
argument is included for backwards compatibility and MUST be 
ignored by the implementations - the tone SHOULD be sent to all 
eligible streams in the channel.
event
A numeric event code from the DTMF_Event enum.
void Tp::Service::ChannelInterfaceDTMFAdaptor::StopTone ( uint  streamID,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void stopTone(uint streamID, const Tp::Service::ChannelInterfaceDTMFAdaptor::StopToneContextPtr &context);

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

Stop sending any DTMF tones which have been started using the StartTone or MultipleTones methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. On some protocols it might be impossible to cancel queued tones immediately.

Parameters
streamID
A stream ID as defined in the StreamedMedia channel type. This 
argument is included for backwards compatibility and MUST be 
ignored by the implementations - the sending SHOULD be stoped in 
all eligible streams in the channel.
void Tp::Service::ChannelInterfaceDTMFAdaptor::MultipleTones ( const QString &  tones,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void multipleTones(const QString& tones, const Tp::Service::ChannelInterfaceDTMFAdaptor::MultipleTonesContextPtr &context);

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

Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager. In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence. The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as audio/telephone-event. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Parameters
tones

A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:

  • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of DTMF_Event
  • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds
  • 'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the \\\ TonesDeferred() \\htmlonly signal with the rest of the string as its argument: see that signal for details
void Tp::Service::ChannelInterfaceDTMFAdaptor::TonesDeferred ( const QString &  tones)
signal

Represents the exported D-Bus signal TonesDeferred on this object.

Adaptees should export this signal as a Qt signal with the following signature: void tonesDeferred(const QString& tones);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
tones
The new non-empty value of DeferredTones.
void Tp::Service::ChannelInterfaceDTMFAdaptor::SendingTones ( const QString &  tones)
signal

Represents the exported D-Bus signal SendingTones on this object.

Adaptees should export this signal as a Qt signal with the following signature: void sendingTones(const QString& tones);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
tones
DTMF string (one or more events) that is to be played.
void Tp::Service::ChannelInterfaceDTMFAdaptor::StoppedTones ( bool  cancelled)
signal

Represents the exported D-Bus signal StoppedTones on this object.

Adaptees should export this signal as a Qt signal with the following signature: void stoppedTones(bool cancelled);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
cancelled
True if the DTMF tones were actively cancelled via StopTone.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01158.html0000644000175100017520000000475012530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CurrencyAmount Member List

This is the complete list of members for Tp::CurrencyAmount, including all inherited members.

amountTp::CurrencyAmount
currencyTp::CurrencyAmount
scaleTp::CurrencyAmount


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00501.html0000644000175100017520000001230012530426260021114 0ustar00kaffeinekaffeine00000000000000 Tp::RTPHeaderExtension Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::RTPHeaderExtension Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint ID
 
uint direction
 
QString URI
 
QString parameters
 

Detailed Description

Structure type generated from the specification.

A struct defining a RTP Header extension.

Member Data Documentation

uint Tp::RTPHeaderExtension::ID

Identifier to be negotiated.

uint Tp::RTPHeaderExtension::direction

Direction in which the Header Extension is negotiated.

QString Tp::RTPHeaderExtension::URI

URI defining the extension.

QString Tp::RTPHeaderExtension::parameters

Feedback parameters as a string. Format is defined in the relevant RFC.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00256.html0000644000175100017520000012150512530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ClientHandlerInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ClientHandlerInterface Class Reference

#include <TelepathyQt/Client>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply HandleChannels (const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const Tp::ObjectPathList &requestsSatisfied, qulonglong userActionTime, const QVariantMap &handlerInfo, int timeout=-1)
 

Public Member Functions

 ClientHandlerInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientHandlerInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientHandlerInterface (Tp::DBusProxy *proxy)
 
 ClientHandlerInterface (const Tp::Client::ClientInterface &mainInterface)
 
 ClientHandlerInterface (const Tp::Client::ClientInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyHandlerChannelFilter () const
 
Tp::PendingVariantrequestPropertyBypassApproval () const
 
Tp::PendingVariantrequestPropertyCapabilities () const
 
Tp::PendingVariantrequestPropertyHandledChannels () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Client.Handler".

Constructor & Destructor Documentation

Tp::Client::ClientHandlerInterface::ClientHandlerInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientHandlerInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientHandlerInterface::ClientHandlerInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientHandlerInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientHandlerInterface::ClientHandlerInterface ( Tp::DBusProxy proxy)

Creates a ClientHandlerInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ClientHandlerInterface::ClientHandlerInterface ( const Tp::Client::ClientInterface mainInterface)
explicit

Creates a ClientHandlerInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ClientHandlerInterface::ClientHandlerInterface ( const Tp::Client::ClientInterface mainInterface,
QObject *  parent 
)

Creates a ClientHandlerInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ClientHandlerInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Client.Handler", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ClientHandlerInterface::requestPropertyHandlerChannelFilter ( ) const
inline

Asynchronous getter for the remote object property HandlerChannelFilter of type Tp::ChannelClassList.

A specification of the channels that this channel handler can deal with. It will be offered to approvers as a potential channel handler for bundles that contain only suitable channels, or for suitable channels that must be handled separately.

This property works in exactly the same way as the ClientObserverInterface::ObserverChannelFilter property. In particular, it cannot change while the handler process continues to own the corresponding Client bus name.

In the .client file, it is represented in the same way as ObserverChannelFilter, but the group has the same name as this interface and the keys start with HandlerChannelFilter instead of ObserverChannelFilter.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ClientHandlerInterface::requestPropertyBypassApproval ( ) const
inline

Asynchronous getter for the remote object property BypassApproval of type bool.

If true, channels destined for this handler are automatically handled, without invoking approvers.

The intended usage is to allow a client handling one channel to pick up closely related channels. Suppose a client capable of handling both Text and StreamedMedia, org.freedesktop.Telepathy.Client.Empathy, is handling a StreamedMedia channel. That client can take a second well-known bus name, say org.freedesktop.Telepathy.Client.Empathy._1._42.Bundle1, and configure an object at /org/freedesktop/Telepathy/Client/Empathy/_1/_42/Bundle1 with BypassApproval = TRUE, whose HandlerChannelFilter matches closely related Text channels by their Bundle property.

For service-activatable handlers, this property should be specified in the handler's .client file as follows:

[org.freedesktop.Telepathy.Client.Handler]
BypassApproval=true
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ClientHandlerInterface::requestPropertyCapabilities ( ) const
inline

Asynchronous getter for the remote object property Capabilities of type QStringList.

The set of additional capabilities supported by this handler. This describes things like support for streamed media codecs and NAT traversal mechanisms: see the Contact Capabilities interface for more details.

For handlers that have a .client file, the channel dispatcher may discover this property from the org.freedesktop.Telepathy.Client.Handler.Capabilities group; for each capability, that group contains a key whose name is the capability, with value true. Keys with other values SHOULD NOT appear in this group.

For instance, the .client file for a streamed media handler that supports ICE-UDP NAT traversal, Speex audio, and Theora and H264 video might contain this group:

[org.freedesktop.Telepathy.Client.Handler.Capabilities]
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/ice-udp=true
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/audio/speex=true
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/theora=true
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/h264=true

Like the HandlerChannelFilter property, this property cannot change while the Handler owns its Client bus name. However, the .client file, if any, can change (due to upgrades or installation of pluggable codecs), and the capabilities really supported by the handler might not exactly match what is cached in the .client file.

The client file is installed statically and is intended to list codecs etc. that the handler guarantees it can support (e.g. by having a hard dependency on them), whereas the running handler process might be able to find additional codecs.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ClientHandlerInterface::requestPropertyHandledChannels ( ) const
inline

Asynchronous getter for the remote object property HandledChannels of type Tp::ObjectPathList.

A list of the channels that this process is currently handling.

There is no change notification.

This property exists for state recovery - it makes it possible for channel handling to survive a ChannelDispatcher crash.

If the channel dispatcher is automatically replaced, the replacement can discover all Handlers by looking for the Client well-known bus names, and discover which channels they are currently handling. Once this has been done, all unhandled channels can be re-dispatched, and the only issue visible to the user is that unhandled channels that they have already approved might be sent back to Approvers.

The value of this property SHOULD be the same for all Client instances that share a unique bus name, and SHOULD include all channels that are being handled, even if they were conceptually handled by a different Client instance.

Otherwise, when a process released a temporary Client name, channels that it handled because of that Client name would no longer be state-recoverable.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ClientHandlerInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ClientHandlerInterface::HandleChannels ( const QDBusObjectPath &  account,
const QDBusObjectPath &  connection,
const Tp::ChannelDetailsList channels,
const Tp::ObjectPathList requestsSatisfied,
qulonglong  userActionTime,
const QVariantMap &  handlerInfo,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method HandleChannels on the remote object.

Called by the channel dispatcher when this client should handle these channels, or when this client should present channels that it is already handling to the user (e.g. bring them into the foreground).

Clients are expected to know what channels they're already handling, and which channel object path corresponds to which window or tab. This can easily be done using a hash table keyed by channels' object paths.

This method can raise any D-Bus error. If it does, the handler is assumed to have failed or crashed, and the channel dispatcher MUST recover in an implementation-specific way; it MAY attempt to dispatch the channels to another handler, or close the channels.

If closing the channels, it is RECOMMENDED that the channel dispatcher attempts to close the channels using ChannelInterface::Close() , but resorts to calling ChannelInterfaceDestroyableInterface::Destroy() (if available) or ignoring the channel (if not) if the same handler repeatedly fails to handle channels.

After HandleChannels returns successfully, the client process is considered to be responsible for the channel until it its unique name disappears from the bus.

If a process has multiple Client bus names - some temporary and some long-lived - and drops one of the temporary bus names in order to reduce the set of channels that it will handle, any channels that it is already handling should remain unaffected.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account with which the channels are associated. The well-known 
bus name to use is that of the AccountManager.
connection
The Connection with which the channels are associated. The 
well-known bus name to use can be derived from this object path by 
removing the leading &apos;/&apos; and replacing all subsequent 
&apos;/&apos; by &apos;.&apos;.
channels
The channels and their immutable properties. Their well-known bus 
name is the same as that of the Connection.
requestsSatisfied

The requests satisfied by these channels.

If the handler implements Requests, this tells it that these channels match previous ClientInterfaceRequestsInterface::AddRequest() calls that it may have received.

There can be more than one, if they were EnsureChannel requests.

userActionTime
The time at which user action occurred, or 0 if this channel is to 
be handled for some reason not involving user action. Handlers 
SHOULD use this for focus-stealing prevention, if applicable. This 
property has the same semantic as User_Action_Timestamp but is 
unsigned for historical reasons.
handlerInfo

Additional information about these channels. Currently defined keys are:

request-properties - a{oa{sv}}
A map from ChannelRequestInterface paths listed in Requests_Satisfied to Qualified_Property_Value_Maps containing namespaced immutable properties of each request.

When more keys are defined for this dictionary, all will be optional; handlers MAY safely ignore any entry in this dictionary.

timeoutThe timeout in milliseconds.
void Tp::Client::ClientHandlerInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01217.html0000644000175100017520000000447212530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::LastActivityAndStatuses Member List

This is the complete list of members for Tp::LastActivityAndStatuses, including all inherited members.

lastActivityTp::LastActivityAndStatuses
statusesTp::LastActivityAndStatuses


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00315.html0000644000175100017520000006025312530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::ContactCapabilities Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Protected Member Functions | List of all members
Tp::ContactCapabilities Class Reference

The ContactCapabilities class represents the capabilities of a Contact. More...

#include <TelepathyQt/ContactCapabilities>

Inherits Tp::CapabilitiesBase.

Public Member Functions

 ContactCapabilities ()
 
virtual ~ContactCapabilities ()
 
bool dbusTubes (const QString &serviceName) const
 
QStringList dbusTubeServices () const
 
bool streamTubes (const QString &service) const
 
QStringList streamTubeServices () const
 
- Public Member Functions inherited from Tp::CapabilitiesBase
 CapabilitiesBase ()
 
 CapabilitiesBase (const CapabilitiesBase &other)
 
virtual ~CapabilitiesBase ()
 
CapabilitiesBaseoperator= (const CapabilitiesBase &other)
 
RequestableChannelClassSpecList allClassSpecs () const
 
bool isSpecificToContact () const
 
bool textChats () const
 
bool audioCalls () const
 
bool videoCalls () const
 
bool videoCallsWithAudio () const
 
bool upgradingCalls () const
 
bool streamedMediaCalls () const
 
bool streamedMediaAudioCalls () const
 
bool streamedMediaVideoCalls () const
 
bool streamedMediaVideoCallsWithAudio () const
 
bool upgradingStreamedMediaCalls () const
 
bool fileTransfers () const
 

Protected Member Functions

 ContactCapabilities (bool specificToContact)
 
 ContactCapabilities (const RequestableChannelClassList &rccs, bool specificToContact)
 
 ContactCapabilities (const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)
 
- Protected Member Functions inherited from Tp::CapabilitiesBase
 CapabilitiesBase (bool specificToContact)
 
 CapabilitiesBase (const RequestableChannelClassList &rccs, bool specificToContact)
 
 CapabilitiesBase (const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)
 
virtual void updateRequestableChannelClasses (const RequestableChannelClassList &rccs)
 

Detailed Description

The ContactCapabilities class represents the capabilities of a Contact.

Constructor & Destructor Documentation

Tp::ContactCapabilities::ContactCapabilities ( )

Construct a new ContactCapabilities object.

Tp::ContactCapabilities::~ContactCapabilities ( )
virtual

Class destructor.

Tp::ContactCapabilities::ContactCapabilities ( bool  specificToContact)
protected

Construct a new ContactCapabilities object.

Tp::ContactCapabilities::ContactCapabilities ( const RequestableChannelClassList rccs,
bool  specificToContact 
)
protected

Construct a new ContactCapabilities object using the give rccs.

Parameters
rccsRequestableChannelClassList representing the capabilities of a contact.
Tp::ContactCapabilities::ContactCapabilities ( const RequestableChannelClassSpecList rccSpecs,
bool  specificToContact 
)
protected

Construct a new ContactCapabilities object using the give rccSpecs.

Parameters
rccSpecsRequestableChannelClassList representing the capabilities of a contact.

Member Function Documentation

bool Tp::ContactCapabilities::dbusTubes ( const QString &  serviceName) const

Returns whether creating a DBusTube channel with the given service targeting this contact is expected to succeed.

Returns
true if supported, false otherwise.
QStringList Tp::ContactCapabilities::dbusTubeServices ( ) const

Return the supported DBusTube services.

Returns
A list of supported DBusTube services.
bool Tp::ContactCapabilities::streamTubes ( const QString &  service) const

Return whether creating a StreamTube channel, using the given service, by providing a contact identifier is supported.

Returns
true if supported, false otherwise.
QStringList Tp::ContactCapabilities::streamTubeServices ( ) const

Return the supported StreamTube services.

Returns
A list of supported StreamTube services.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x6f.html0000644000175100017520000005061512530426260024207 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- o -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01286.html0000644000175100017520000001676212530426260021147 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ClientInterface Member List

This is the complete list of members for Tp::Client::ClientInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ClientInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientInterface
ClientInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientInterface
ClientInterface(Tp::DBusProxy *proxy)Tp::Client::ClientInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ClientInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ClientInterfaceinline
requestPropertyInterfaces() const Tp::Client::ClientInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ClientInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01030.html0000644000175100017520000000620112530426260021115 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor1< R, Arg1 > Member List

This is the complete list of members for Tp::PtrFunctor1< R, Arg1 >, including all inherited members.

fnTp::PtrFunctor1< R, Arg1 >
FunctionType typedefTp::PtrFunctor1< R, Arg1 >
operator()(Arg1 a1) const Tp::PtrFunctor1< R, Arg1 >inline
PtrFunctor1(FunctionType fn)Tp::PtrFunctor1< R, Arg1 >inline
ResultType typedefTp::PtrFunctor1< R, Arg1 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00586_source.html0000644000175100017520000000633612530426257022533 0ustar00kaffeinekaffeine00000000000000 call-stream-endpoint.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
call-stream-endpoint.h
1 
23 #ifndef _TelepathyQt_call_stream_endpoint_h_HEADER_GUARD_
24 #define _TelepathyQt_call_stream_endpoint_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-call-stream-endpoint.h>
31 
32 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00885.html0000644000175100017520000005237112530426257021155 0ustar00kaffeinekaffeine00000000000000 Connection manager service implementation
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Connection manager service implementation

Classes

class  Tp::AbstractCallContentInterface
 Base class for all the CallContent object interface implementations. More...
 
class  Tp::BaseCallMuteInterface
 Base class for implementations of Call.Interface.Mute. More...
 
class  Tp::BaseCallContentDTMFInterface
 Base class for implementations of Call.Content.Interface.DTMF. More...
 
class  Tp::BaseChannel
 Base class for channel implementations. More...
 
class  Tp::AbstractChannelInterface
 Base class for all the Channel object interface implementations. More...
 
class  Tp::BaseChannelTextType
 Base class for implementations of Channel.Type.Text. More...
 
class  Tp::BaseChannelMessagesInterface
 Base class for implementations of Channel.Interface.Messages. More...
 
class  Tp::BaseChannelRoomListType
 Base class for implementations of Channel.Type.RoomList. More...
 
class  Tp::BaseChannelServerAuthenticationType
 Base class for implementations of Channel.Type.ServerAuthentifcation. More...
 
class  Tp::BaseChannelCaptchaAuthenticationInterface
 Base class for implementations of Channel.Interface.CaptchaAuthentication. More...
 
class  Tp::BaseChannelSASLAuthenticationInterface
 Base class for implementations of Channel.Interface.SASLAuthentication. More...
 
class  Tp::BaseChannelSecurableInterface
 Base class for implementations of Channel.Interface.Securable. More...
 
class  Tp::BaseChannelChatStateInterface
 Base class for implementations of Channel.Interface.Chat.State. More...
 
class  Tp::BaseChannelGroupInterface
 Base class for implementations of Channel.Interface.Group. More...
 
class  Tp::BaseChannelRoomInterface
 Base class for implementations of Channel.Interface.Room2. More...
 
class  Tp::BaseChannelRoomConfigInterface
 Base class for implementations of Channel.Interface.RoomConfig1. More...
 
class  Tp::BaseChannelCallType
 Base class for implementations of Channel.Type.Call. More...
 
class  Tp::BaseChannelHoldInterface
 Base class for implementations of Channel.Interface.Hold. More...
 
class  Tp::BaseChannelMergeableConferenceInterface
 Base class for implementations of Channel.Interface.MergeableConference. More...
 
class  Tp::BaseChannelSplittableInterface
 Base class for implementations of Channel.Interface.Splittable. More...
 
class  Tp::BaseChannelConferenceInterface
 Base class for implementations of Channel.Interface.Conference. More...
 
class  Tp::BaseChannelSMSInterface
 Base class for implementations of Channel.Interface.SMS. More...
 
class  Tp::BaseConnectionManager
 Base class for connection manager implementations. More...
 
class  Tp::AbstractConnectionInterface
 Base class for all the Connection object interface implementations. More...
 
class  Tp::BaseConnectionRequestsInterface
 Base class for implementations of Connection.Interface.Requests. More...
 
class  Tp::BaseConnectionContactsInterface
 Base class for implementations of Connection.Interface.Contacts. More...
 
class  Tp::BaseConnectionSimplePresenceInterface
 Base class for implementations of Connection.Interface.SimplePresence. More...
 
class  Tp::BaseConnectionContactListInterface
 Base class for implementations of Connection.Interface.ContactList. More...
 
class  Tp::BaseConnectionContactInfoInterface
 Base class for implementations of Connection.Interface.Contact.Info. More...
 
class  Tp::BaseConnectionAddressingInterface
 Base class for implementations of Connection.Interface.Addressing. More...
 
class  Tp::BaseConnectionAliasingInterface
 Base class for implementations of Connection.Interface.Aliasing. More...
 
class  Tp::BaseConnectionAvatarsInterface
 Base class for implementations of Connection.Interface.Avatars. More...
 
class  Tp::BaseProtocol
 Base class for protocol implementations. More...
 
class  Tp::AbstractProtocolInterface
 Base class for all the Protocol object interface implementations. More...
 
class  Tp::BaseProtocolAddressingInterface
 Base class for implementations of Protocol.Interface.Addressing. More...
 
class  Tp::BaseProtocolAvatarsInterface
 Base class for implementations of Protocol.Interface.Avatars. More...
 
class  Tp::BaseProtocolPresenceInterface
 Base class for implementations of Protocol.Interface.Presence. More...
 
class  Tp::Service::ConnectionManagerAdaptor
 
class  Tp::Service::ProtocolAdaptor
 
class  Tp::Service::ProtocolInterfaceAddressingAdaptor
 
class  Tp::Service::ProtocolInterfaceAvatarsAdaptor
 
class  Tp::Service::ProtocolInterfacePresenceAdaptor
 

Detailed Description

Classes to implement Telepathy ConnectionManager objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00384.html0000644000175100017520000001355212530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Mail Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::Mail Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 Mail ()
 
 Mail (const QMap< QString, QDBusVariant > &a)
 
Mailoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

An extensible map representing a mail, or (on protocols where Thread_Based appears in MailNotificationFlags) a thread of mails. All keys are optional where not otherwise stated; however, at least one of "senders" and "subject" must be included.

Constructor & Destructor Documentation

Tp::Mail::Mail ( )
inline
Tp::Mail::Mail ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

Mail& Tp::Mail::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01345.html0000644000175100017520000000765712530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfacePasswordAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfacePasswordAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetPasswordFlags(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfacePasswordAdaptorslot
PasswordFlagsChanged(uint added, uint removed)Tp::Service::ChannelInterfacePasswordAdaptorsignal
ProvidePassword(const QString &password, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfacePasswordAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00129.html0000644000175100017520000005267512530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::BaseProtocolAvatarsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseProtocolAvatarsInterface Class Reference

Base class for implementations of Protocol.Interface.Avatars. More...

#include <TelepathyQt/BaseProtocolAvatarsInterface>

Inherits Tp::AbstractProtocolInterface.

Public Member Functions

virtual ~BaseProtocolAvatarsInterface ()
 
QVariantMap immutableProperties () const
 
AvatarSpec avatarDetails () const
 
void setAvatarDetails (const AvatarSpec &spec)
 
- Public Member Functions inherited from Tp::AbstractProtocolInterface
 AbstractProtocolInterface (const QString &interfaceName)
 
virtual ~AbstractProtocolInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseProtocolAvatarsInterfacePtr 
create ()
 
template<typename BaseProtocolAvatarsInterfaceSubclass >
static SharedPtr
< BaseProtocolAvatarsInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseProtocolAvatarsInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Protocol.Interface.Avatars.

Constructor & Destructor Documentation

Tp::BaseProtocolAvatarsInterface::~BaseProtocolAvatarsInterface ( )
virtual

Class destructor.

Tp::BaseProtocolAvatarsInterface::BaseProtocolAvatarsInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseProtocolAvatarsInterfacePtr Tp::BaseProtocolAvatarsInterface::create ( )
inlinestatic
template<typename BaseProtocolAvatarsInterfaceSubclass >
static SharedPtr<BaseProtocolAvatarsInterfaceSubclass> Tp::BaseProtocolAvatarsInterface::create ( )
inlinestatic
QVariantMap Tp::BaseProtocolAvatarsInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

AvatarSpec Tp::BaseProtocolAvatarsInterface::avatarDetails ( ) const

Return the AvatarSpec that has been set with setAvatarDetails().

The contents of this AvatarSpec are exposed as the various properties of this interface on the bus and represent the expected values of the Connection.Interface.Avatars properties on connections of this protocol.

This property is immutable and cannot change after this interface has been registered on an object on the bus with registerInterface().

Returns
The AvatarSpec that has been set with setAvatarDetails().
See Also
setAvatarDetails()
void Tp::BaseProtocolAvatarsInterface::setAvatarDetails ( const AvatarSpec details)

Set the avatar details that will be exposed on the properties of this interface on the bus.

This property is immutable and cannot change after this interface has been registered on an object on the bus with registerInterface().

Parameters
detailsThe details to set.
See Also
avatarDetails()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00582_source.html0000644000175100017520000000642012530426257022521 0ustar00kaffeinekaffeine00000000000000 call-content-media-description.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
call-content-media-description.h
1 
23 #ifndef _TelepathyQt_call_content_media_description_h_HEADER_GUARD_
24 #define _TelepathyQt_call_content_media_description_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-call-content-media-description.h>
31 
32 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00944.html0000644000175100017520000002334212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelConferenceInterface Member List

This is the complete list of members for Tp::BaseChannelConferenceInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
channels() const Tp::BaseChannelConferenceInterface
create(Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap())Tp::BaseChannelConferenceInterfaceinlinestatic
create(Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap())Tp::BaseChannelConferenceInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseChannelConferenceInterfacevirtual
initialChannels() const Tp::BaseChannelConferenceInterface
initialInviteeHandles() const Tp::BaseChannelConferenceInterface
initialInviteeIDs() const Tp::BaseChannelConferenceInterface
interfaceName() const Tp::AbstractDBusServiceInterface
invitationMessage() const Tp::BaseChannelConferenceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
mergeChannel(const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties)Tp::BaseChannelConferenceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
originalChannels() const Tp::BaseChannelConferenceInterface
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
removeChannel(const QDBusObjectPath &channel, const QVariantMap &details)Tp::BaseChannelConferenceInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelConferenceInterface()Tp::BaseChannelConferenceInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00855_source.html0000644000175100017520000007141512530426257022532 0ustar00kaffeinekaffeine00000000000000 types.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
telepathy-qt/TelepathyQt/types.h
1 
23 #ifndef _TelepathyQt_types_h_HEADER_GUARD_
24 #define _TelepathyQt_types_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/types.h>
31 
32 #include <TelepathyQt/Global>
33 #include <TelepathyQt/SharedPtr>
34 #include <TelepathyQt/MethodInvocationContext>
35 
36 #include <QDBusVariant>
37 
38 namespace Tp
39 {
40 
41 TP_QT_EXPORT void registerTypes();
42 
43 template <typename T> class Filter;
44 template <typename T> class GenericCapabilityFilter;
45 template <typename T> class GenericPropertyFilter;
46 
47 class AbstractClient;
48 class AbstractClientApprover;
49 class AbstractClientHandler;
50 class AbstractClientObserver;
51 class Account;
52 typedef GenericCapabilityFilter<Account> AccountCapabilityFilter;
53 class AccountFactory;
54 typedef Filter<Account> AccountFilter;
55 class AccountManager;
56 class AccountPropertyFilter;
57 class AccountSet;
58 class CallChannel;
59 class CallContent;
60 class CallStream;
61 class CaptchaAuthentication;
62 class Channel;
63 class ChannelDispatchOperation;
64 class ChannelFactory;
65 class ChannelRequest;
66 class ClientObject;
67 class ClientRegistrar;
68 class Connection;
69 class ConnectionFactory;
70 class ConnectionLowlevel;
71 class ConnectionManager;
72 class ConnectionManagerLowlevel;
73 class Contact;
74 class ContactFactory;
75 class ContactManager;
76 class ContactMessenger;
77 class ContactSearchChannel;
78 class DBusProxy;
79 class DebugReceiver;
80 class DBusTubeChannel;
81 class FileTransferChannel;
82 class IncomingDBusTubeChannel;
83 class IncomingFileTransferChannel;
84 class IncomingStreamTubeChannel;
85 class OutgoingDBusTubeChannel;
86 class OutgoingFileTransferChannel;
87 class OutgoingStreamTubeChannel;
88 class Profile;
89 class ProfileManager;
90 class RoomListChannel;
91 class ServerAuthenticationChannel;
92 class SimpleObserver;
93 class SimpleCallObserver;
94 class SimpleTextObserver;
95 class StreamedMediaChannel;
96 class StreamedMediaStream;
97 class StreamTubeChannel;
98 class StreamTubeClient;
99 class StreamTubeServer;
100 class TextChannel;
101 class TubeChannel;
102 
103 #ifndef DOXYGEN_SHOULD_SKIP_THIS
104 
105 typedef SharedPtr<AbstractClient> AbstractClientPtr;
106 typedef SharedPtr<AbstractClientApprover> AbstractClientApproverPtr;
107 typedef SharedPtr<AbstractClientHandler> AbstractClientHandlerPtr;
108 typedef SharedPtr<AbstractClientObserver> AbstractClientObserverPtr;
109 typedef SharedPtr<Account> AccountPtr;
110 typedef SharedPtr<AccountCapabilityFilter> AccountCapabilityFilterPtr;
111 typedef SharedPtr<const AccountCapabilityFilter> AccountCapabilityFilterConstPtr;
112 typedef SharedPtr<AccountFactory> AccountFactoryPtr;
113 typedef SharedPtr<const AccountFactory> AccountFactoryConstPtr;
114 typedef SharedPtr<AccountFilter> AccountFilterPtr;
115 typedef SharedPtr<const AccountFilter> AccountFilterConstPtr;
116 typedef SharedPtr<AccountManager> AccountManagerPtr;
117 typedef SharedPtr<AccountPropertyFilter> AccountPropertyFilterPtr;
118 typedef SharedPtr<const AccountPropertyFilter> AccountPropertyFilterConstPtr;
119 typedef SharedPtr<AccountSet> AccountSetPtr;
120 typedef SharedPtr<CallChannel> CallChannelPtr;
121 typedef SharedPtr<CallContent> CallContentPtr;
122 typedef SharedPtr<CallStream> CallStreamPtr;
123 typedef SharedPtr<CaptchaAuthentication> CaptchaAuthenticationPtr;
124 typedef SharedPtr<Channel> ChannelPtr;
125 typedef SharedPtr<ChannelDispatchOperation> ChannelDispatchOperationPtr;
126 typedef SharedPtr<ChannelFactory> ChannelFactoryPtr;
127 typedef SharedPtr<const ChannelFactory> ChannelFactoryConstPtr;
128 typedef SharedPtr<ChannelRequest> ChannelRequestPtr;
129 typedef SharedPtr<ClientObject> ClientObjectPtr;
130 typedef SharedPtr<ClientRegistrar> ClientRegistrarPtr;
131 typedef SharedPtr<Connection> ConnectionPtr;
132 typedef SharedPtr<ConnectionFactory> ConnectionFactoryPtr;
133 typedef SharedPtr<const ConnectionFactory> ConnectionFactoryConstPtr;
134 typedef SharedPtr<ConnectionLowlevel> ConnectionLowlevelPtr;
135 typedef SharedPtr<const ConnectionLowlevel> ConnectionLowlevelConstPtr;
136 typedef SharedPtr<ConnectionManager> ConnectionManagerPtr;
137 typedef SharedPtr<ConnectionManagerLowlevel> ConnectionManagerLowlevelPtr;
138 typedef SharedPtr<const ConnectionManagerLowlevel> ConnectionManagerLowlevelConstPtr;
139 typedef SharedPtr<Contact> ContactPtr;
140 typedef QSet<ContactPtr> Contacts;
141 typedef SharedPtr<ContactFactory> ContactFactoryPtr;
142 typedef SharedPtr<const ContactFactory> ContactFactoryConstPtr;
143 typedef SharedPtr<ContactManager> ContactManagerPtr;
144 typedef SharedPtr<ContactMessenger> ContactMessengerPtr;
145 typedef SharedPtr<ContactSearchChannel> ContactSearchChannelPtr;
146 typedef SharedPtr<DBusProxy> DBusProxyPtr;
147 typedef SharedPtr<DBusTubeChannel> DBusTubeChannelPtr;
148 typedef SharedPtr<DebugReceiver> DebugReceiverPtr;
149 typedef SharedPtr<FileTransferChannel> FileTransferChannelPtr;
150 typedef SharedPtr<IncomingDBusTubeChannel> IncomingDBusTubeChannelPtr;
151 typedef SharedPtr<IncomingFileTransferChannel> IncomingFileTransferChannelPtr;
152 typedef SharedPtr<IncomingStreamTubeChannel> IncomingStreamTubeChannelPtr;
153 typedef SharedPtr<OutgoingDBusTubeChannel> OutgoingDBusTubeChannelPtr;
154 typedef SharedPtr<OutgoingFileTransferChannel> OutgoingFileTransferChannelPtr;
155 typedef SharedPtr<OutgoingStreamTubeChannel> OutgoingStreamTubeChannelPtr;
156 typedef SharedPtr<Profile> ProfilePtr;
157 typedef SharedPtr<ProfileManager> ProfileManagerPtr;
158 typedef SharedPtr<RoomListChannel> RoomListChannelPtr;
159 typedef SharedPtr<ServerAuthenticationChannel> ServerAuthenticationChannelPtr;
160 typedef SharedPtr<SimpleObserver> SimpleObserverPtr;
161 typedef SharedPtr<SimpleCallObserver> SimpleCallObserverPtr;
162 typedef SharedPtr<SimpleTextObserver> SimpleTextObserverPtr;
163 typedef TP_QT_DEPRECATED SharedPtr<StreamedMediaChannel> StreamedMediaChannelPtr;
164 typedef TP_QT_DEPRECATED SharedPtr<StreamedMediaStream> StreamedMediaStreamPtr;
165 typedef SharedPtr<StreamTubeChannel> StreamTubeChannelPtr;
166 typedef SharedPtr<StreamTubeClient> StreamTubeClientPtr;
167 typedef SharedPtr<StreamTubeServer> StreamTubeServerPtr;
168 typedef SharedPtr<TextChannel> TextChannelPtr;
169 typedef SharedPtr<TubeChannel> TubeChannelPtr;
170 
171 template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil,
172  typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil,
173  typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil,
174  typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
175 class MethodInvocationContextPtr : public SharedPtr<MethodInvocationContext<T1, T2, T3, T4, T5, T6, T7, T8> >
176 {
177 public:
178  inline MethodInvocationContextPtr() { }
179  explicit inline MethodInvocationContextPtr(MethodInvocationContext<T1, T2, T3, T4, T5, T6, T7, T8> *d)
180  : SharedPtr<MethodInvocationContext<T1, T2, T3, T4, T5, T6, T7, T8> >(d) { }
181  inline MethodInvocationContextPtr(const SharedPtr<MethodInvocationContext<T1, T2, T3, T4, T5, T6, T7, T8> > &o)
182  : SharedPtr<MethodInvocationContext<T1, T2, T3, T4, T5, T6, T7, T8> >(o) { }
183 };
184 
185 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
186 
187 } // Tp
188 
189 #endif
void registerTypes()
Definition: types.cpp:42
GenericCapabilityFilter< Account > AccountCapabilityFilter
Definition: account-capability-filter.h:35
Filter< Account > AccountFilter
Definition: account-filter.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00443.html0000644000175100017520000005544712530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::PendingOperation Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Protected Slots | Protected Member Functions | List of all members
Tp::PendingOperation Class Reference

The PendingOperation class is a base class for pending asynchronous operations. More...

#include <TelepathyQt/PendingOperation>

Inherits QObject.

Inherited by Tp::Farstream::PendingChannel, Tp::PendingAccount, Tp::PendingCallContent, Tp::PendingCaptchas, Tp::PendingChannel, Tp::PendingChannelRequest, Tp::PendingComposite, Tp::PendingConnection, Tp::PendingContactAttributes, Tp::PendingContactInfo, Tp::PendingContacts, Tp::PendingDBusTubeConnection, Tp::PendingDebugMessageList, Tp::PendingFailure, Tp::PendingHandles, Tp::PendingReady, Tp::PendingSendMessage, Tp::PendingStreamedMediaStreams, Tp::PendingStreamTubeConnection, Tp::PendingString, Tp::PendingStringList, Tp::PendingSuccess, Tp::PendingVariant, Tp::PendingVariantMap, and Tp::PendingVoid.

Signals

void finished (Tp::PendingOperation *operation)
 

Public Member Functions

virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Protected Slots

void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 

Protected Member Functions

 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingOperation class is a base class for pending asynchronous operations.

This class represents an incomplete asynchronous operation, such as a D-Bus method call. When the operation has finished, it emits finished(). The slot or slots connected to the finished() signal may obtain additional information from the pending operation.

In simple cases, like a D-Bus method with no 'out' arguments or for which all 'out' arguments are to be ignored (so the possible results are success with no extra information, or failure with an error code), the trivial subclass PendingVoid can be used.

For pending operations that produce a result, another subclass of PendingOperation can be used, with additional methods that provide that result to the library user.

After finished() is emitted, the PendingOperation is automatically deleted using deleteLater(), so library users must not explicitly delete this object.

The design is loosely based on KDE's KJob.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingOperation::~PendingOperation ( )
virtual

Class destructor.

Tp::PendingOperation::PendingOperation ( const SharedPtr< RefCounted > &  object)
protected

Construct a new PendingOperation object.

Parameters
objectThe object on which this pending operation takes place.

Member Function Documentation

bool Tp::PendingOperation::isFinished ( ) const

Return whether or not the request has finished processing.

The signal finished() is emitted when this changes from false to true.

Equivalent to (isValid() || isError()).

Returns
true if the request has finished, false otherwise.
See Also
finished()
bool Tp::PendingOperation::isValid ( ) const

Return whether or not the request completed successfully. If the request has not yet finished processing (isFinished() returns false), this cannot yet be known, and false will be returned.

Equivalent to (isFinished() && !isError()).

Returns
true if the request has finished processing and has completed successfully, false otherwise.
bool Tp::PendingOperation::isError ( ) const

Return whether or not the request resulted in an error.

If the request has not yet finished processing (isFinished() returns false), this cannot yet be known, and false will be returned.

Equivalent to (isFinished() && !isValid()).

Returns
true if the request has finished processing and has resulted in an error, false otherwise.
QString Tp::PendingOperation::errorName ( ) const

If isError() returns true, returns the D-Bus error with which the operation failed. If the operation succeeded or has not yet finished, returns an empty string.

Returns
A D-Bus error name, or an empty string.
QString Tp::PendingOperation::errorMessage ( ) const

If isError() would return true, returns a debugging message associated with the error, which may be an empty string. Otherwise, return an empty string.

Returns
A debugging message, or an empty string.
void Tp::PendingOperation::finished ( Tp::PendingOperation operation)
signal

Emitted when the pending operation finishes, i.e. when isFinished() changes from false to true.

Parameters
operationThis operation object, from which further information may be obtained.
SharedPtr< RefCounted > Tp::PendingOperation::object ( ) const
protected

Return the object on which this pending operation takes place.

Returns
A pointer to a RefCounted object.
void Tp::PendingOperation::setFinished ( )
protectedslot

Record that this pending operation has finished successfully, and emit the finished() signal next time the event loop runs.

void Tp::PendingOperation::setFinishedWithError ( const QString &  name,
const QString &  message 
)
protectedslot

Record that this pending operation has finished with an error, and emit the finished() signal next time the event loop runs.

Parameters
nameThe D-Bus error name, which must be non-empty.
messageThe debugging message.
void Tp::PendingOperation::setFinishedWithError ( const QDBusError &  error)
protectedslot

Record that this pending operation has finished with an error, and emit the finished() signal next time the event loop runs.

Parameters
errorThe error.
See Also
finished()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00198.html0000644000175100017520000012577012530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceDTMFInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ChannelInterfaceDTMFInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply StartTone (uint streamID, uchar event, int timeout=-1)
 
QDBusPendingReply StopTone (uint streamID, int timeout=-1)
 
QDBusPendingReply MultipleTones (const QString &tones, int timeout=-1)
 

Signals

void TonesDeferred (const QString &tones)
 
void SendingTones (const QString &tones)
 
void StoppedTones (bool cancelled)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceDTMFInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceDTMFInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceDTMFInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceDTMFInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceDTMFInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyCurrentlySendingTones () const
 
Tp::PendingVariantrequestPropertyInitialTones () const
 
Tp::PendingVariantrequestPropertyDeferredTones () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.DTMF".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceDTMFInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceDTMFInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceDTMFInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceDTMFInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceDTMFInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceDTMFInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.DTMF", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceDTMFInterface::requestPropertyCurrentlySendingTones ( ) const
inline

Asynchronous getter for the remote object property CurrentlySendingTones of type bool.

Indicates whether there are DTMF tones currently being sent in the channel. If so, the client should wait for StoppedTones signal before trying to send more tones.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceDTMFInterface::requestPropertyInitialTones ( ) const
inline

Asynchronous getter for the remote object property InitialTones of type QString.

If non-empty in a channel request that will create a new channel, the connection manager should send the tones immediately after at least one eligible audio stream has been created in the channel. This should only be used with InitialAudio=true. This property is immutable (cannot change).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceDTMFInterface::requestPropertyDeferredTones ( ) const
inline

Asynchronous getter for the remote object property DeferredTones of type QString.

The tones waiting for the user to continue, if any.

When this property is set to a non-empty value, TonesDeferred() is emitted. When any tones are played (i.e. whenever SendingTones() is emitted), this property is reset to the empty string.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceDTMFInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceDTMFInterface::StartTone ( uint  streamID,
uchar  event,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StartTone on the remote object.

Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until StopTone is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable. The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
streamID
A stream ID as defined in the StreamedMedia channel type. This 
argument is included for backwards compatibility and MUST be 
ignored by the implementations - the tone SHOULD be sent to all 
eligible streams in the channel.
event
A numeric event code from the DTMF_Event enum.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceDTMFInterface::StopTone ( uint  streamID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StopTone on the remote object.

Stop sending any DTMF tones which have been started using the StartTone or MultipleTones methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. On some protocols it might be impossible to cancel queued tones immediately.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
streamID
A stream ID as defined in the StreamedMedia channel type. This 
argument is included for backwards compatibility and MUST be 
ignored by the implementations - the sending SHOULD be stoped in 
all eligible streams in the channel.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceDTMFInterface::MultipleTones ( const QString &  tones,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method MultipleTones on the remote object.

Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager. In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence. The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as audio/telephone-event. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
tones

A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:

  • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of DTMF_Event
  • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds
  • 'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the TonesDeferred() signal with the rest of the string as its argument: see that signal for details
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceDTMFInterface::TonesDeferred ( const QString &  tones)
signal

Represents the signal TonesDeferred on the remote object.

Emitted when 'w' or 'W', indicating "wait for the user to continue", is encountered while playing a DTMF string queued by MultipleTones() or InitialTones . Any queued DTMF events after the 'w', which have not yet been played, are placed in the DeferredTones property and copied into this signal's argument.

When the channel handler is ready to continue, it MAY pass the value of DeferredTones to MultipleTones() , to resume sending. Alternatively, it MAY ignore the deferred tones, or even play different tones instead. Any deferred tones are discarded the next time a tone is played.

This signal SHOULD NOT be emitted if there is nothing left to play, i.e. if the 'w' was the last character in the DTMF string.

Parameters
tones
The new non-empty value of DeferredTones.
void Tp::Client::ChannelInterfaceDTMFInterface::SendingTones ( const QString &  tones)
signal

Represents the signal SendingTones on the remote object.

DTMF tone(s)are being sent to all eligible streams in the channel. The signal is provided to indicating the fact that the streams are currently being used to send one or more DTMF tones, so any other media input is not getting through to the audio stream. It also serves as a cue for the StopTone() method.

Parameters
tones
DTMF string (one or more events) that is to be played.
void Tp::Client::ChannelInterfaceDTMFInterface::StoppedTones ( bool  cancelled)
signal

Represents the signal StoppedTones on the remote object.

DTMF tones have finished playing on streams in this channel.

Parameters
cancelled
True if the DTMF tones were actively cancelled via StopTone.
void Tp::Client::ChannelInterfaceDTMFInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01159.html0000644000175100017520000000441112530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusTubeMember Member List

This is the complete list of members for Tp::DBusTubeMember, including all inherited members.

handleTp::DBusTubeMember
uniqueNameTp::DBusTubeMember


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00502.html0000644000175100017520000002525712530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSearchChannel::SearchStateChangeDetails Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactSearchChannel::SearchStateChangeDetails Class Reference

The ContactSearchChannel::SearchStateChangeDetails class provides a wrapper around the details for a search state change. More...

#include <TelepathyQt/ContactSearchChannel>

Public Member Functions

 SearchStateChangeDetails ()
 
 SearchStateChangeDetails (const SearchStateChangeDetails &other)
 
 ~SearchStateChangeDetails ()
 
bool isValid () const
 
SearchStateChangeDetailsoperator= (const SearchStateChangeDetails &other)
 
bool hasDebugMessage () const
 
QString debugMessage () const
 
QVariantMap allDetails () const
 

Detailed Description

The ContactSearchChannel::SearchStateChangeDetails class provides a wrapper around the details for a search state change.

See Also
ContactSearchChannel

Constructor & Destructor Documentation

Tp::ContactSearchChannel::SearchStateChangeDetails::SearchStateChangeDetails ( )
Tp::ContactSearchChannel::SearchStateChangeDetails::SearchStateChangeDetails ( const SearchStateChangeDetails other)
Tp::ContactSearchChannel::SearchStateChangeDetails::~SearchStateChangeDetails ( )

Member Function Documentation

bool Tp::ContactSearchChannel::SearchStateChangeDetails::isValid ( ) const
inline
ContactSearchChannel::SearchStateChangeDetails & Tp::ContactSearchChannel::SearchStateChangeDetails::operator= ( const SearchStateChangeDetails other)
bool Tp::ContactSearchChannel::SearchStateChangeDetails::hasDebugMessage ( ) const
inline
QString Tp::ContactSearchChannel::SearchStateChangeDetails::debugMessage ( ) const
inline
QVariantMap Tp::ContactSearchChannel::SearchStateChangeDetails::allDetails ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00257.html0000644000175100017520000005263312530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ClientInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ClientInterface Class Reference

#include <TelepathyQt/Client>

Inherits Tp::AbstractInterface.

Public Member Functions

 ClientInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ClientInterface::ClientInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientInterface::ClientInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientInterface::ClientInterface ( Tp::DBusProxy proxy)

Creates a ClientInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ClientInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Client", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ClientInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the extra interfaces provided by this client. This SHOULD include at least one of ClientObserverInterface , ClientApproverInterface or ClientHandlerInterface .

In the .client file, this is represented by key "Interfaces" in the group named after this interface. The value of the key is a list of interface names each followed by a semicolon (so it always ends with a semicolon unless it is empty), i.e. a key of type "strings" as described in the Desktop Entry specification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ClientInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ClientInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01218.html0000644000175100017520000000467412530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MailURL Member List

This is the complete list of members for Tp::MailURL, including all inherited members.

methodTp::MailURL
postDataTp::MailURL
URLTp::MailURL


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00848_source.html0000644000175100017520000006725112530426257022537 0ustar00kaffeinekaffeine00000000000000 text-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
text-channel.h
1 
23 #ifndef _TelepathyQt_text_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_text_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/PendingOperation>
32 #include <TelepathyQt/PendingSendMessage>
33 
34 namespace Tp
35 {
36 
37 class Message;
38 class ReceivedMessage;
39 
40 class TP_QT_EXPORT TextChannel : public Channel
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(TextChannel)
44 
45 public:
46  static const Feature FeatureCore;
50  static const Feature FeatureChatState;
51 
52  static TextChannelPtr create(const ConnectionPtr &connection,
53  const QString &objectPath, const QVariantMap &immutableProperties);
54 
55  virtual ~TextChannel();
56 
57  bool hasMessagesInterface() const;
58  bool hasChatStateInterface() const;
59  bool canInviteContacts() const;
60 
61  // requires FeatureMessageCapabilities
62  bool supportsMessageType(ChannelTextMessageType messageType) const;
63  QList<ChannelTextMessageType> supportedMessageTypes() const;
64  QStringList supportedContentTypes() const;
65  MessagePartSupportFlags messagePartSupport() const;
66  DeliveryReportingSupportFlags deliveryReportingSupport() const;
67 
68  // requires FeatureMessageQueue
69  QList<ReceivedMessage> messageQueue() const;
70 
71  // requires FeatureChatState
72  ChannelChatState chatState(const ContactPtr &contact) const;
73 
74 public Q_SLOTS:
75  void acknowledge(const QList<ReceivedMessage> &messages);
76 
77  void forget(const QList<ReceivedMessage> &messages);
78 
79  PendingSendMessage *send(const QString &text,
81  MessageSendingFlags flags = 0);
82 
83  PendingSendMessage *send(const MessagePartList &parts,
84  MessageSendingFlags flags = 0);
85 
87  const QList<ContactPtr> &contacts,
88  const QString &message = QString())
89  {
90  return groupAddContacts(contacts, message);
91  }
92 
93  PendingOperation *requestChatState(ChannelChatState state);
94 
95 Q_SIGNALS:
96  // FeatureMessageSentSignal
97  void messageSent(const Tp::Message &message,
99  const QString &sentMessageToken);
100 
101  // FeatureMessageQueue
102  void messageReceived(const Tp::ReceivedMessage &message);
103  void pendingMessageRemoved(
104  const Tp::ReceivedMessage &message);
105 
106  // FeatureChatState
107  void chatStateChanged(const Tp::ContactPtr &contact,
108  Tp::ChannelChatState state);
109 
110 protected:
111  TextChannel(const ConnectionPtr &connection, const QString &objectPath,
112  const QVariantMap &immutableProperties,
113  const Feature &coreFeature = TextChannel::FeatureCore);
114 
115 private Q_SLOTS:
116  TP_QT_NO_EXPORT void onContactsFinished(Tp::PendingOperation *);
117  TP_QT_NO_EXPORT void onAcknowledgePendingMessagesReply(QDBusPendingCallWatcher *);
118 
119  TP_QT_NO_EXPORT void onMessageSent(const Tp::MessagePartList &, uint,
120  const QString &);
121  TP_QT_NO_EXPORT void onMessageReceived(const Tp::MessagePartList &);
122  TP_QT_NO_EXPORT void onPendingMessagesRemoved(const Tp::UIntList &);
123 
124  TP_QT_NO_EXPORT void onTextSent(uint, uint, const QString &);
125  TP_QT_NO_EXPORT void onTextReceived(uint, uint, uint, uint, uint, const QString &);
126  TP_QT_NO_EXPORT void onTextSendError(uint, uint, uint, const QString &);
127 
128  TP_QT_NO_EXPORT void gotProperties(QDBusPendingCallWatcher *);
129  TP_QT_NO_EXPORT void gotPendingMessages(QDBusPendingCallWatcher *);
130 
131  TP_QT_NO_EXPORT void onChatStateChanged(uint, uint);
132 
133 private:
134  struct Private;
135  friend struct Private;
136  Private *mPriv;
137 };
138 
139 } // Tp
140 
141 #endif
The ReceivedMessage class is a subclass of Message, representing a received message only...
Definition: message.h:97
Definition: build/TelepathyQt/_gen/constants.h:2871
PendingOperation * inviteContacts(const QList< ContactPtr > &contacts, const QString &message=QString())
Definition: text-channel.h:86
The TextChannel class represents a Telepathy channel of type Text.
Definition: text-channel.h:40
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
static const Feature FeatureCore
Definition: text-channel.h:46
static const Feature FeatureMessageSentSignal
Definition: text-channel.h:49
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
static const Feature FeatureMessageCapabilities
Definition: text-channel.h:48
QFlags< MessageSendingFlag > MessageSendingFlags
Definition: build/TelepathyQt/_gen/constants.h:1166
static const Feature FeatureMessageQueue
Definition: text-channel.h:47
ChannelTextMessageType
Definition: build/TelepathyQt/_gen/constants.h:2866
ChannelChatState
Definition: build/TelepathyQt/_gen/constants.h:3078
QFlags< MessagePartSupportFlag > MessagePartSupportFlags
Definition: build/TelepathyQt/_gen/constants.h:1106
The PendingSendMessage class represents the parameters of and the reply to an asynchronous message se...
Definition: pending-send-message.h:41
QFlags< DeliveryReportingSupportFlag > DeliveryReportingSupportFlags
Definition: build/TelepathyQt/_gen/constants.h:1219
static const Feature FeatureChatState
Definition: text-channel.h:50
The Message class represents a Telepathy message in a TextChannel.
Definition: message.h:44
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00316.html0000644000175100017520000001435212530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::ContactCapabilitiesMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactCapabilitiesMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, RequestableChannelClassList >.

Public Member Functions

 ContactCapabilitiesMap ()
 
 ContactCapabilitiesMap (const QMap< uint, RequestableChannelClassList > &a)
 
ContactCapabilitiesMapoperator= (const QMap< uint, RequestableChannelClassList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, RequestableChannelClassList>, but needed to have a discrete type in the Qt type system.

A mapping from contact handle to their capabilities.

Constructor & Destructor Documentation

Tp::ContactCapabilitiesMap::ContactCapabilitiesMap ( )
inline
Tp::ContactCapabilitiesMap::ContactCapabilitiesMap ( const QMap< uint, RequestableChannelClassList > &  a)
inline

Member Function Documentation

ContactCapabilitiesMap& Tp::ContactCapabilitiesMap::operator= ( const QMap< uint, RequestableChannelClassList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01287.html0000644000175100017520000002130412530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ClientApproverInterface Member List

This is the complete list of members for Tp::Client::ClientApproverInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddDispatchOperation(const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const QVariantMap &properties, int timeout=-1)Tp::Client::ClientApproverInterfaceinlineslot
ClientApproverInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientApproverInterface
ClientApproverInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientApproverInterface
ClientApproverInterface(Tp::DBusProxy *proxy)Tp::Client::ClientApproverInterface
ClientApproverInterface(const Tp::Client::ClientInterface &mainInterface)Tp::Client::ClientApproverInterfaceexplicit
ClientApproverInterface(const Tp::Client::ClientInterface &mainInterface, QObject *parent)Tp::Client::ClientApproverInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ClientApproverInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ClientApproverInterfaceinline
requestPropertyApproverChannelFilter() const Tp::Client::ClientApproverInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ClientApproverInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00070.html0000644000175100017520000012015412530426257021132 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Protected Slots | Protected Member Functions | List of all members
Tp::AbstractInterface Class Reference

The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals. More...

#include <TelepathyQt/AbstractInterface>

Inherits QDBusAbstractInterface.

Inherited by Tp::Client::AccountInterface, Tp::Client::AccountInterfaceAddressingInterface, Tp::Client::AccountInterfaceAvatarInterface, Tp::Client::AccountInterfaceStorageInterface, Tp::Client::AccountManagerInterface, Tp::Client::AuthenticationTLSCertificateInterface, Tp::Client::CallContentInterface, Tp::Client::CallContentInterfaceAudioControlInterface, Tp::Client::CallContentInterfaceDTMFInterface, Tp::Client::CallContentInterfaceMediaInterface, Tp::Client::CallContentInterfaceVideoControlInterface, Tp::Client::CallContentMediaDescriptionInterface, Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface, Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface, Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface, Tp::Client::CallStreamEndpointInterface, Tp::Client::CallStreamInterface, Tp::Client::CallStreamInterfaceMediaInterface, Tp::Client::ChannelDispatcherInterface, Tp::Client::ChannelDispatcherInterfaceMessages1Interface, Tp::Client::ChannelDispatchOperationInterface, Tp::Client::ChannelInterface, Tp::Client::ChannelInterfaceAnonymityInterface, Tp::Client::ChannelInterfaceCallStateInterface, Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface, Tp::Client::ChannelInterfaceChatStateInterface, Tp::Client::ChannelInterfaceConferenceInterface, Tp::Client::ChannelInterfaceDestroyableInterface, Tp::Client::ChannelInterfaceDTMFInterface, Tp::Client::ChannelInterfaceFileTransferMetadataInterface, Tp::Client::ChannelInterfaceGroupInterface, Tp::Client::ChannelInterfaceHoldInterface, Tp::Client::ChannelInterfaceMediaSignallingInterface, Tp::Client::ChannelInterfaceMessagesInterface, Tp::Client::ChannelInterfacePasswordInterface, Tp::Client::ChannelInterfaceRoomConfigInterface, Tp::Client::ChannelInterfaceRoomInterface, Tp::Client::ChannelInterfaceSASLAuthenticationInterface, Tp::Client::ChannelInterfaceSecurableInterface, Tp::Client::ChannelInterfaceServicePointInterface, Tp::Client::ChannelInterfaceSMSInterface, Tp::Client::ChannelInterfaceSubjectInterface, Tp::Client::ChannelInterfaceTubeInterface, Tp::Client::ChannelRequestInterface, Tp::Client::ChannelTypeCallInterface, Tp::Client::ChannelTypeContactListInterface, Tp::Client::ChannelTypeContactSearchInterface, Tp::Client::ChannelTypeDBusTubeInterface, Tp::Client::ChannelTypeFileTransferInterface, Tp::Client::ChannelTypeRoomListInterface, Tp::Client::ChannelTypeServerAuthenticationInterface, Tp::Client::ChannelTypeServerTLSConnectionInterface, Tp::Client::ChannelTypeStreamedMediaInterface, Tp::Client::ChannelTypeStreamTubeInterface, Tp::Client::ChannelTypeTextInterface, Tp::Client::ChannelTypeTubesInterface, Tp::Client::ClientApproverInterface, Tp::Client::ClientHandlerInterface, Tp::Client::ClientInterface, Tp::Client::ClientInterfaceRequestsInterface, Tp::Client::ClientObserverInterface, Tp::Client::ConnectionInterface, Tp::Client::ConnectionInterfaceAddressingInterface, Tp::Client::ConnectionInterfaceAliasingInterface, Tp::Client::ConnectionInterfaceAnonymityInterface, Tp::Client::ConnectionInterfaceAvatarsInterface, Tp::Client::ConnectionInterfaceBalanceInterface, Tp::Client::ConnectionInterfaceCapabilitiesInterface, Tp::Client::ConnectionInterfaceCellularInterface, Tp::Client::ConnectionInterfaceClientTypesInterface, Tp::Client::ConnectionInterfaceContactBlockingInterface, Tp::Client::ConnectionInterfaceContactCapabilitiesInterface, Tp::Client::ConnectionInterfaceContactGroupsInterface, Tp::Client::ConnectionInterfaceContactInfoInterface, Tp::Client::ConnectionInterfaceContactListInterface, Tp::Client::ConnectionInterfaceContactsInterface, Tp::Client::ConnectionInterfaceLocationInterface, Tp::Client::ConnectionInterfaceMailNotificationInterface, Tp::Client::ConnectionInterfacePowerSavingInterface, Tp::Client::ConnectionInterfacePresenceInterface, Tp::Client::ConnectionInterfaceRequestsInterface, Tp::Client::ConnectionInterfaceServicePointInterface, Tp::Client::ConnectionInterfaceSimplePresenceInterface, Tp::Client::ConnectionManagerInterface, Tp::Client::DBus::DBusDaemonInterface, Tp::Client::DBus::IntrospectableInterface, Tp::Client::DBus::PeerInterface, Tp::Client::DBus::PropertiesInterface, Tp::Client::DebugInterface, Tp::Client::MediaSessionHandlerInterface, Tp::Client::MediaStreamHandlerInterface, Tp::Client::PropertiesInterfaceInterface, Tp::Client::ProtocolInterface, Tp::Client::ProtocolInterfaceAddressingInterface, Tp::Client::ProtocolInterfaceAvatarsInterface, and Tp::Client::ProtocolInterfacePresenceInterface.

Signals

void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Protected Slots

virtual void invalidate (Tp::DBusProxy *proxy, const QString &error, const QString &message)
 

Protected Member Functions

 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Detailed Description

The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.

Constructor & Destructor Documentation

Tp::AbstractInterface::~AbstractInterface ( )
virtual
Tp::AbstractInterface::AbstractInterface ( DBusProxy proxy,
const QLatin1String &  interface 
)
protected
Tp::AbstractInterface::AbstractInterface ( const QString &  busName,
const QString &  path,
const QLatin1String &  interface,
const QDBusConnection &  connection,
QObject *  parent 
)
protected

Member Function Documentation

bool Tp::AbstractInterface::isValid ( ) const
QString Tp::AbstractInterface::invalidationReason ( ) const
QString Tp::AbstractInterface::invalidationMessage ( ) const
void Tp::AbstractInterface::setMonitorProperties ( bool  monitorProperties)

Sets whether this abstract interface will be monitoring properties or not. If it's set to monitor, the signal propertiesChanged will be emitted whenever a property on this interface will change.

By default, AbstractInterface does not monitor properties: you need to call this method for this to happen.

Parameters
monitorPropertiesWhether this interface should monitor property changes or not.
See Also
isMonitoringProperties propertiesChanged()
bool Tp::AbstractInterface::isMonitoringProperties ( ) const

Return whether this abstract interface is monitoring properties or not. If it's monitoring, the signal propertiesChanged will be emitted whenever a property on this interface will change.

By default, AbstractInterface does not monitor properties: you need to call setMonitorProperties for this to happen.

Returns
true if the interface is monitoring for property changes, false otherwise.
See Also
setMonitorProperties propertiesChanged()
void Tp::AbstractInterface::propertiesChanged ( const QVariantMap &  changedProperties,
const QStringList &  invalidatedProperties 
)
signal

Emitted when one or more properties on this interface change or become invalidated. This signal will be emitted only if the interface is monitoring properties.

Parameters
changedPropertiesA map of the changed properties with their new value, if any.
invalidatedPropertiesA list of the invalidated properties, if any.
See Also
isMonitoringProperties()
void Tp::AbstractInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtualslot

Reimplemented in Tp::Client::ChannelTypeTubesInterface, Tp::Client::ChannelTypeTextInterface, Tp::Client::ChannelTypeStreamedMediaInterface, Tp::Client::ChannelTypeStreamTubeInterface, Tp::Client::ChannelTypeServerTLSConnectionInterface, Tp::Client::ChannelTypeServerAuthenticationInterface, Tp::Client::ChannelTypeRoomListInterface, Tp::Client::ChannelTypeFileTransferInterface, Tp::Client::ChannelTypeDBusTubeInterface, Tp::Client::ChannelTypeContactSearchInterface, Tp::Client::ConnectionInterfaceSimplePresenceInterface, Tp::Client::ChannelTypeContactListInterface, Tp::Client::ChannelTypeCallInterface, Tp::Client::ConnectionInterfaceServicePointInterface, Tp::Client::ConnectionInterfaceRequestsInterface, Tp::Client::ConnectionInterfacePresenceInterface, Tp::Client::ChannelInterfaceTubeInterface, Tp::Client::ChannelInterfaceSubjectInterface, Tp::Client::ConnectionInterfacePowerSavingInterface, Tp::Client::ConnectionInterfaceMailNotificationInterface, Tp::Client::ChannelInterfaceServicePointInterface, Tp::Client::ChannelInterfaceSecurableInterface, Tp::Client::ConnectionInterfaceLocationInterface, Tp::Client::ChannelInterfaceSMSInterface, Tp::Client::ConnectionInterfaceContactsInterface, Tp::Client::ChannelInterfaceSASLAuthenticationInterface, Tp::Client::ConnectionInterfaceContactListInterface, Tp::Client::ChannelInterfaceRoomInterface, Tp::Client::ChannelInterfaceRoomConfigInterface, Tp::Client::ConnectionInterfaceContactInfoInterface, Tp::Client::ChannelInterfacePasswordInterface, Tp::Client::ConnectionInterfaceContactGroupsInterface, Tp::Client::ChannelInterfaceMessagesInterface, Tp::Client::ChannelInterfaceMediaSignallingInterface, Tp::Client::ConnectionInterfaceContactCapabilitiesInterface, Tp::Client::ChannelInterfaceHoldInterface, Tp::Client::ConnectionInterfaceContactBlockingInterface, Tp::Client::ChannelInterfaceGroupInterface, Tp::Client::ConnectionInterfaceClientTypesInterface, Tp::Client::ConnectionInterfaceCellularInterface, Tp::Client::ConnectionInterfaceCapabilitiesInterface, Tp::Client::ChannelInterfaceFileTransferMetadataInterface, Tp::Client::ChannelInterfaceDestroyableInterface, Tp::Client::ConnectionInterfaceBalanceInterface, Tp::Client::ChannelInterfaceDTMFInterface, Tp::Client::ConnectionInterfaceAvatarsInterface, Tp::Client::ChannelInterfaceConferenceInterface, Tp::Client::ConnectionInterfaceAnonymityInterface, Tp::Client::AccountInterfaceStorageInterface, Tp::Client::ProtocolInterfacePresenceInterface, Tp::Client::ConnectionInterfaceAliasingInterface, Tp::Client::ChannelInterfaceChatStateInterface, Tp::Client::ProtocolInterfaceAvatarsInterface, Tp::Client::AccountInterfaceAvatarInterface, Tp::Client::CallContentInterfaceVideoControlInterface, Tp::Client::ClientObserverInterface, Tp::Client::AccountInterfaceAddressingInterface, Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface, Tp::Client::ConnectionInterfaceAddressingInterface, Tp::Client::ProtocolInterfaceAddressingInterface, Tp::Client::CallContentInterfaceMediaInterface, Tp::Client::AccountInterface, Tp::Client::CallStreamInterfaceMediaInterface, Tp::Client::ConnectionInterface, Tp::Client::MediaStreamHandlerInterface, Tp::Client::ClientInterfaceRequestsInterface, Tp::Client::DBus::PropertiesInterface, Tp::Client::ChannelInterfaceCallStateInterface, Tp::Client::ProtocolInterface, Tp::Client::ChannelDispatcherInterfaceMessages1Interface, Tp::Client::ChannelInterfaceAnonymityInterface, Tp::Client::CallContentInterfaceDTMFInterface, Tp::Client::DBus::PeerInterface, Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface, Tp::Client::ClientHandlerInterface, Tp::Client::ChannelDispatcherInterface, Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface, Tp::Client::ChannelInterface, Tp::Client::DBus::IntrospectableInterface, Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface, Tp::Client::DBus::DBusDaemonInterface, Tp::Client::CallStreamEndpointInterface, Tp::Client::ChannelRequestInterface, Tp::Client::CallContentInterfaceAudioControlInterface, Tp::Client::ChannelDispatchOperationInterface, Tp::Client::CallStreamInterface, Tp::Client::ClientApproverInterface, Tp::Client::ConnectionManagerInterface, Tp::Client::AccountManagerInterface, Tp::Client::CallContentMediaDescriptionInterface, Tp::Client::AuthenticationTLSCertificateInterface, Tp::Client::PropertiesInterfaceInterface, Tp::Client::CallContentInterface, Tp::Client::DebugInterface, Tp::Client::MediaSessionHandlerInterface, and Tp::Client::ClientInterface.

PendingVariant * Tp::AbstractInterface::internalRequestProperty ( const QString &  name) const
protected
PendingOperation * Tp::AbstractInterface::internalSetProperty ( const QString &  name,
const QVariant &  newValue 
)
protected
PendingVariantMap * Tp::AbstractInterface::internalRequestAllProperties ( ) const
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01031.html0000644000175100017520000000664512530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor1< R, T, Arg1 > Member List

This is the complete list of members for Tp::MemberFunctor1< R, T, Arg1 >, including all inherited members.

fnTp::MemberFunctor1< R, T, Arg1 >
FunctionType typedefTp::MemberFunctor1< R, T, Arg1 >
MemberFunctor1(T *object, FunctionType fn)Tp::MemberFunctor1< R, T, Arg1 >inline
objectTp::MemberFunctor1< R, T, Arg1 >
operator()(Arg1 a1) const Tp::MemberFunctor1< R, T, Arg1 >inline
ResultType typedefTp::MemberFunctor1< R, T, Arg1 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00844_source.html0000644000175100017520000072563712530426257022544 0ustar00kaffeinekaffeine00000000000000 svc-connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
svc-connection.h
1 /*
2  * This file contains D-Bus adaptor classes generated by qt-svc-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #include <TelepathyQt/AbstractAdaptor>
9 #include <TelepathyQt/Global>
10 #include <TelepathyQt/Types>
11 
12 #include <QObject>
13 #include <QtDBus>
14 
15 namespace Tp
16 {
17 namespace Service
18 {
19 
27 class TP_QT_EXPORT ConnectionAdaptor : public Tp::AbstractAdaptor
28 {
29  Q_OBJECT
30  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection")
31  Q_CLASSINFO("D-Bus Introspection", ""
32 " <interface name=\"org.freedesktop.Telepathy.Connection\">\n"
33 " <property access=\"read\" type=\"as\" name=\"Interfaces\"/>\n"
34 " <property access=\"read\" type=\"u\" name=\"SelfHandle\"/>\n"
35 " <property access=\"read\" type=\"s\" name=\"SelfID\"/>\n"
36 " <property access=\"read\" type=\"u\" name=\"Status\"/>\n"
37 " <property access=\"read\" type=\"b\" name=\"HasImmortalHandles\"/>\n"
38 " <method name=\"Connect\"/>\n"
39 " <method name=\"Disconnect\"/>\n"
40 " <method name=\"GetInterfaces\">\n"
41 " <arg direction=\"out\" type=\"as\" name=\"interfaces\"/>\n"
42 " </method>\n"
43 " <method name=\"GetProtocol\">\n"
44 " <arg direction=\"out\" type=\"s\" name=\"protocol\"/>\n"
45 " </method>\n"
46 " <method name=\"GetSelfHandle\">\n"
47 " <arg direction=\"out\" type=\"u\" name=\"selfHandle\"/>\n"
48 " </method>\n"
49 " <method name=\"GetStatus\">\n"
50 " <arg direction=\"out\" type=\"u\" name=\"status\"/>\n"
51 " </method>\n"
52 " <method name=\"HoldHandles\">\n"
53 " <arg direction=\"in\" type=\"u\" name=\"handleType\"/>\n"
54 " <arg direction=\"in\" type=\"au\" name=\"handles\"/>\n"
55 " </method>\n"
56 " <method name=\"InspectHandles\">\n"
57 " <arg direction=\"in\" type=\"u\" name=\"handleType\"/>\n"
58 " <arg direction=\"in\" type=\"au\" name=\"handles\"/>\n"
59 " <arg direction=\"out\" type=\"as\" name=\"identifiers\"/>\n"
60 " </method>\n"
61 " <method name=\"ListChannels\">\n"
62 " <arg direction=\"out\" type=\"a(osuu)\" name=\"channelInfo\">\n"
63 " <annotation value=\"Tp::ChannelInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
64 " </arg>\n"
65 " </method>\n"
66 " <method name=\"ReleaseHandles\">\n"
67 " <arg direction=\"in\" type=\"u\" name=\"handleType\"/>\n"
68 " <arg direction=\"in\" type=\"au\" name=\"handles\"/>\n"
69 " </method>\n"
70 " <method name=\"RequestChannel\">\n"
71 " <arg direction=\"in\" type=\"s\" name=\"type\"/>\n"
72 " <arg direction=\"in\" type=\"u\" name=\"handleType\"/>\n"
73 " <arg direction=\"in\" type=\"u\" name=\"handle\"/>\n"
74 " <arg direction=\"in\" type=\"b\" name=\"suppressHandler\"/>\n"
75 " <arg direction=\"out\" type=\"o\" name=\"objectPath\"/>\n"
76 " </method>\n"
77 " <method name=\"RequestHandles\">\n"
78 " <arg direction=\"in\" type=\"u\" name=\"handleType\"/>\n"
79 " <arg direction=\"in\" type=\"as\" name=\"identifiers\"/>\n"
80 " <arg direction=\"out\" type=\"au\" name=\"handles\"/>\n"
81 " </method>\n"
82 " <method name=\"AddClientInterest\">\n"
83 " <arg direction=\"in\" type=\"as\" name=\"tokens\"/>\n"
84 " </method>\n"
85 " <method name=\"RemoveClientInterest\">\n"
86 " <arg direction=\"in\" type=\"as\" name=\"tokens\"/>\n"
87 " </method>\n"
88 " <signal name=\"SelfHandleChanged\">\n"
89 " <arg type=\"u\" name=\"selfHandle\"/>\n"
90 " </signal>\n"
91 " <signal name=\"SelfContactChanged\">\n"
92 " <arg type=\"u\" name=\"selfHandle\"/>\n"
93 " <arg type=\"s\" name=\"selfID\"/>\n"
94 " </signal>\n"
95 " <signal name=\"NewChannel\">\n"
96 " <arg type=\"o\" name=\"objectPath\"/>\n"
97 " <arg type=\"s\" name=\"channelType\"/>\n"
98 " <arg type=\"u\" name=\"handleType\"/>\n"
99 " <arg type=\"u\" name=\"handle\"/>\n"
100 " <arg type=\"b\" name=\"suppressHandler\"/>\n"
101 " </signal>\n"
102 " <signal name=\"ConnectionError\">\n"
103 " <arg type=\"s\" name=\"error\"/>\n"
104 " <arg type=\"a{sv}\" name=\"details\"/>\n"
105 " </signal>\n"
106 " <signal name=\"StatusChanged\">\n"
107 " <arg type=\"u\" name=\"status\"/>\n"
108 " <arg type=\"u\" name=\"reason\"/>\n"
109 " </signal>\n"
110 " </interface>\n"
111 "")
112  Q_PROPERTY(QStringList Interfaces READ Interfaces )
113  Q_PROPERTY(uint SelfHandle READ SelfHandle )
114  Q_PROPERTY(QString SelfID READ SelfID )
115  Q_PROPERTY(uint Status READ Status )
116  Q_PROPERTY(bool HasImmortalHandles READ HasImmortalHandles )
117 
118 public:
119  ConnectionAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
120  virtual ~ConnectionAdaptor();
121 
122  typedef Tp::MethodInvocationContextPtr< > ConnectContextPtr;
123  typedef Tp::MethodInvocationContextPtr< > DisconnectContextPtr;
124  typedef Tp::MethodInvocationContextPtr< QStringList > GetInterfacesContextPtr;
125  typedef Tp::MethodInvocationContextPtr< QString > GetProtocolContextPtr;
126  typedef Tp::MethodInvocationContextPtr< uint > GetSelfHandleContextPtr;
127  typedef Tp::MethodInvocationContextPtr< uint > GetStatusContextPtr;
128  typedef Tp::MethodInvocationContextPtr< > HoldHandlesContextPtr;
129  typedef Tp::MethodInvocationContextPtr< QStringList > InspectHandlesContextPtr;
130  typedef Tp::MethodInvocationContextPtr< Tp::ChannelInfoList > ListChannelsContextPtr;
131  typedef Tp::MethodInvocationContextPtr< > ReleaseHandlesContextPtr;
132  typedef Tp::MethodInvocationContextPtr< QDBusObjectPath > RequestChannelContextPtr;
133  typedef Tp::MethodInvocationContextPtr< Tp::UIntList > RequestHandlesContextPtr;
134  typedef Tp::MethodInvocationContextPtr< > AddClientInterestContextPtr;
135  typedef Tp::MethodInvocationContextPtr< > RemoveClientInterestContextPtr;
136 
137 public: // PROPERTIES
171  QStringList Interfaces() const;
187  uint SelfHandle() const;
203  QString SelfID() const;
224  uint Status() const;
241  bool HasImmortalHandles() const;
242 
243 public Q_SLOTS: // METHODS
264  void Connect(const QDBusMessage& dbusMessage);
280  void Disconnect(const QDBusMessage& dbusMessage);
301  QStringList GetInterfaces(const QDBusMessage& dbusMessage);
318  QString GetProtocol(const QDBusMessage& dbusMessage);
336  uint GetSelfHandle(const QDBusMessage& dbusMessage);
353  uint GetStatus(const QDBusMessage& dbusMessage);
397  void HoldHandles(uint handleType, const Tp::UIntList& handles, const QDBusMessage& dbusMessage);
421  QStringList InspectHandles(uint handleType, const Tp::UIntList& handles, const QDBusMessage& dbusMessage);
438  Tp::ChannelInfoList ListChannels(const QDBusMessage& dbusMessage);
465  void ReleaseHandles(uint handleType, const Tp::UIntList& handles, const QDBusMessage& dbusMessage);
543  QDBusObjectPath RequestChannel(const QString& type, uint handleType, uint handle, bool suppressHandler, const QDBusMessage& dbusMessage);
584  Tp::UIntList RequestHandles(uint handleType, const QStringList& identifiers, const QDBusMessage& dbusMessage);
680  void AddClientInterest(const QStringList& tokens, const QDBusMessage& dbusMessage);
714  void RemoveClientInterest(const QStringList& tokens, const QDBusMessage& dbusMessage);
715 
716 Q_SIGNALS: // SIGNALS
729  void SelfHandleChanged(uint selfHandle);
745  void SelfContactChanged(uint selfHandle, const QString& selfID);
787  void NewChannel(const QDBusObjectPath& objectPath, const QString& channelType, uint handleType, uint handle, bool suppressHandler);
830  void ConnectionError(const QString& error, const QVariantMap& details);
847  void StatusChanged(uint status, uint reason);
848 };
849 
858 {
859  Q_OBJECT
860  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Addressing1")
861  Q_CLASSINFO("D-Bus Introspection", ""
862 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Addressing1\">\n"
863 " <method name=\"GetContactsByVCardField\">\n"
864 " <arg direction=\"in\" type=\"s\" name=\"field\"/>\n"
865 " <arg direction=\"in\" type=\"as\" name=\"addresses\"/>\n"
866 " <arg direction=\"in\" type=\"as\" name=\"interfaces\"/>\n"
867 " <arg direction=\"out\" type=\"a{su}\" name=\"requested\">\n"
868 " <annotation value=\"Tp::AddressingNormalizationMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
869 " </arg>\n"
870 " <arg direction=\"out\" type=\"a{ua{sv}}\" name=\"attributes\">\n"
871 " <annotation value=\"Tp::ContactAttributesMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out1\"/>\n"
872 " </arg>\n"
873 " </method>\n"
874 " <method name=\"GetContactsByURI\">\n"
875 " <arg direction=\"in\" type=\"as\" name=\"URIs\"/>\n"
876 " <arg direction=\"in\" type=\"as\" name=\"interfaces\"/>\n"
877 " <arg direction=\"out\" type=\"a{su}\" name=\"requested\">\n"
878 " <annotation value=\"Tp::AddressingNormalizationMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
879 " </arg>\n"
880 " <arg direction=\"out\" type=\"a{ua{sv}}\" name=\"attributes\">\n"
881 " <annotation value=\"Tp::ContactAttributesMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out1\"/>\n"
882 " </arg>\n"
883 " </method>\n"
884 " </interface>\n"
885 "")
886 
887 public:
888  ConnectionInterfaceAddressingAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
890 
891  typedef Tp::MethodInvocationContextPtr< Tp::AddressingNormalizationMap, Tp::ContactAttributesMap > GetContactsByVCardFieldContextPtr;
892  typedef Tp::MethodInvocationContextPtr< Tp::AddressingNormalizationMap, Tp::ContactAttributesMap > GetContactsByURIContextPtr;
893 
894 public Q_SLOTS: // METHODS
982  Tp::AddressingNormalizationMap GetContactsByVCardField(const QString& field, const QStringList& addresses, const QStringList& interfaces, const QDBusMessage& dbusMessage, Tp::ContactAttributesMap& attributes);
1052  Tp::AddressingNormalizationMap GetContactsByURI(const QStringList& URIs, const QStringList& interfaces, const QDBusMessage& dbusMessage, Tp::ContactAttributesMap& attributes);
1053 };
1054 
1063 {
1064  Q_OBJECT
1065  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Aliasing")
1066  Q_CLASSINFO("D-Bus Introspection", ""
1067 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Aliasing\">\n"
1068 " <method name=\"GetAliasFlags\">\n"
1069 " <arg direction=\"out\" type=\"u\" name=\"aliasFlags\"/>\n"
1070 " </method>\n"
1071 " <method name=\"RequestAliases\">\n"
1072 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1073 " <arg direction=\"out\" type=\"as\" name=\"aliases\"/>\n"
1074 " </method>\n"
1075 " <method name=\"GetAliases\">\n"
1076 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1077 " <arg direction=\"out\" type=\"a{us}\" name=\"aliases\">\n"
1078 " <annotation value=\"Tp::AliasMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
1079 " </arg>\n"
1080 " </method>\n"
1081 " <method name=\"SetAliases\">\n"
1082 " <arg direction=\"in\" type=\"a{us}\" name=\"aliases\">\n"
1083 " <annotation value=\"Tp::AliasMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
1084 " </arg>\n"
1085 " </method>\n"
1086 " <signal name=\"AliasesChanged\">\n"
1087 " <arg type=\"a(us)\" name=\"aliases\">\n"
1088 " <annotation value=\"Tp::AliasPairList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
1089 " </arg>\n"
1090 " </signal>\n"
1091 " </interface>\n"
1092 "")
1093 
1094 public:
1095  ConnectionInterfaceAliasingAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1097 
1098  typedef Tp::MethodInvocationContextPtr< uint > GetAliasFlagsContextPtr;
1099  typedef Tp::MethodInvocationContextPtr< QStringList > RequestAliasesContextPtr;
1100  typedef Tp::MethodInvocationContextPtr< Tp::AliasMap > GetAliasesContextPtr;
1101  typedef Tp::MethodInvocationContextPtr< > SetAliasesContextPtr;
1102 
1103 public Q_SLOTS: // METHODS
1121  uint GetAliasFlags(const QDBusMessage& dbusMessage);
1141  QStringList RequestAliases(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
1165  Tp::AliasMap GetAliases(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
1187  void SetAliases(const Tp::AliasMap& aliases, const QDBusMessage& dbusMessage);
1188 
1189 Q_SIGNALS: // SIGNALS
1208  void AliasesChanged(const Tp::AliasPairList& aliases);
1209 };
1210 
1219 {
1220  Q_OBJECT
1221  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Anonymity")
1222  Q_CLASSINFO("D-Bus Introspection", ""
1223 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Anonymity\">\n"
1224 " <property access=\"read\" type=\"u\" name=\"SupportedAnonymityModes\"/>\n"
1225 " <property access=\"readwrite\" type=\"b\" name=\"AnonymityMandatory\"/>\n"
1226 " <property access=\"readwrite\" type=\"u\" name=\"AnonymityModes\"/>\n"
1227 " <signal name=\"AnonymityModesChanged\">\n"
1228 " <arg type=\"u\" name=\"modes\"/>\n"
1229 " </signal>\n"
1230 " </interface>\n"
1231 "")
1232  Q_PROPERTY(uint SupportedAnonymityModes READ SupportedAnonymityModes )
1233  Q_PROPERTY(bool AnonymityMandatory READ AnonymityMandatory WRITE SetAnonymityMandatory)
1234  Q_PROPERTY(uint AnonymityModes READ AnonymityModes WRITE SetAnonymityModes)
1235 
1236 public:
1237  ConnectionInterfaceAnonymityAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1239 
1240 
1241 public: // PROPERTIES
1254  uint SupportedAnonymityModes() const;
1272  bool AnonymityMandatory() const;
1288  void SetAnonymityMandatory(const bool &newValue);
1303  uint AnonymityModes() const;
1316  void SetAnonymityModes(const uint &newValue);
1317 
1318 Q_SIGNALS: // SIGNALS
1331  void AnonymityModesChanged(uint modes);
1332 };
1333 
1342 {
1343  Q_OBJECT
1344  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Avatars")
1345  Q_CLASSINFO("D-Bus Introspection", ""
1346 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Avatars\">\n"
1347 " <property access=\"read\" type=\"as\" name=\"SupportedAvatarMIMETypes\"/>\n"
1348 " <property access=\"read\" type=\"u\" name=\"MinimumAvatarHeight\"/>\n"
1349 " <property access=\"read\" type=\"u\" name=\"MinimumAvatarWidth\"/>\n"
1350 " <property access=\"read\" type=\"u\" name=\"RecommendedAvatarHeight\"/>\n"
1351 " <property access=\"read\" type=\"u\" name=\"RecommendedAvatarWidth\"/>\n"
1352 " <property access=\"read\" type=\"u\" name=\"MaximumAvatarHeight\"/>\n"
1353 " <property access=\"read\" type=\"u\" name=\"MaximumAvatarWidth\"/>\n"
1354 " <property access=\"read\" type=\"u\" name=\"MaximumAvatarBytes\"/>\n"
1355 " <method name=\"GetAvatarRequirements\">\n"
1356 " <arg direction=\"out\" type=\"as\" name=\"MIMETypes\"/>\n"
1357 " <arg direction=\"out\" type=\"q\" name=\"minWidth\"/>\n"
1358 " <arg direction=\"out\" type=\"q\" name=\"minHeight\"/>\n"
1359 " <arg direction=\"out\" type=\"q\" name=\"maxWidth\"/>\n"
1360 " <arg direction=\"out\" type=\"q\" name=\"maxHeight\"/>\n"
1361 " <arg direction=\"out\" type=\"u\" name=\"maxBytes\"/>\n"
1362 " </method>\n"
1363 " <method name=\"GetAvatarTokens\">\n"
1364 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1365 " <arg direction=\"out\" type=\"as\" name=\"tokens\"/>\n"
1366 " </method>\n"
1367 " <method name=\"GetKnownAvatarTokens\">\n"
1368 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1369 " <arg direction=\"out\" type=\"a{us}\" name=\"tokens\">\n"
1370 " <annotation value=\"Tp::AvatarTokenMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
1371 " </arg>\n"
1372 " </method>\n"
1373 " <method name=\"RequestAvatar\">\n"
1374 " <arg direction=\"in\" type=\"u\" name=\"contact\"/>\n"
1375 " <arg direction=\"out\" type=\"ay\" name=\"data\"/>\n"
1376 " <arg direction=\"out\" type=\"s\" name=\"MIMEType\"/>\n"
1377 " </method>\n"
1378 " <method name=\"RequestAvatars\">\n"
1379 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1380 " </method>\n"
1381 " <method name=\"SetAvatar\">\n"
1382 " <arg direction=\"in\" type=\"ay\" name=\"avatar\"/>\n"
1383 " <arg direction=\"in\" type=\"s\" name=\"MIMEType\"/>\n"
1384 " <arg direction=\"out\" type=\"s\" name=\"token\"/>\n"
1385 " </method>\n"
1386 " <method name=\"ClearAvatar\"/>\n"
1387 " <signal name=\"AvatarUpdated\">\n"
1388 " <arg type=\"u\" name=\"contact\"/>\n"
1389 " <arg type=\"s\" name=\"newAvatarToken\"/>\n"
1390 " </signal>\n"
1391 " <signal name=\"AvatarRetrieved\">\n"
1392 " <arg type=\"u\" name=\"contact\"/>\n"
1393 " <arg type=\"s\" name=\"token\"/>\n"
1394 " <arg type=\"ay\" name=\"avatar\"/>\n"
1395 " <arg type=\"s\" name=\"type\"/>\n"
1396 " </signal>\n"
1397 " </interface>\n"
1398 "")
1399  Q_PROPERTY(QStringList SupportedAvatarMIMETypes READ SupportedAvatarMIMETypes )
1400  Q_PROPERTY(uint MinimumAvatarHeight READ MinimumAvatarHeight )
1401  Q_PROPERTY(uint MinimumAvatarWidth READ MinimumAvatarWidth )
1402  Q_PROPERTY(uint RecommendedAvatarHeight READ RecommendedAvatarHeight )
1403  Q_PROPERTY(uint RecommendedAvatarWidth READ RecommendedAvatarWidth )
1404  Q_PROPERTY(uint MaximumAvatarHeight READ MaximumAvatarHeight )
1405  Q_PROPERTY(uint MaximumAvatarWidth READ MaximumAvatarWidth )
1406  Q_PROPERTY(uint MaximumAvatarBytes READ MaximumAvatarBytes )
1407 
1408 public:
1409  ConnectionInterfaceAvatarsAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1411 
1412  typedef Tp::MethodInvocationContextPtr< QStringList, ushort, ushort, ushort, ushort, uint > GetAvatarRequirementsContextPtr;
1413  typedef Tp::MethodInvocationContextPtr< QStringList > GetAvatarTokensContextPtr;
1414  typedef Tp::MethodInvocationContextPtr< Tp::AvatarTokenMap > GetKnownAvatarTokensContextPtr;
1415  typedef Tp::MethodInvocationContextPtr< QByteArray, QString > RequestAvatarContextPtr;
1416  typedef Tp::MethodInvocationContextPtr< > RequestAvatarsContextPtr;
1417  typedef Tp::MethodInvocationContextPtr< QString > SetAvatarContextPtr;
1418  typedef Tp::MethodInvocationContextPtr< > ClearAvatarContextPtr;
1419 
1420 public: // PROPERTIES
1434  QStringList SupportedAvatarMIMETypes() const;
1448  uint MinimumAvatarHeight() const;
1462  uint MinimumAvatarWidth() const;
1479  uint RecommendedAvatarHeight() const;
1494  uint RecommendedAvatarWidth() const;
1508  uint MaximumAvatarHeight() const;
1522  uint MaximumAvatarWidth() const;
1536  uint MaximumAvatarBytes() const;
1537 
1538 public Q_SLOTS: // METHODS
1570  QStringList GetAvatarRequirements(const QDBusMessage& dbusMessage, ushort& minWidth, ushort& minHeight, ushort& maxWidth, ushort& maxHeight, uint& maxBytes);
1593  QStringList GetAvatarTokens(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
1622  Tp::AvatarTokenMap GetKnownAvatarTokens(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
1647  QByteArray RequestAvatar(uint contact, const QDBusMessage& dbusMessage, QString& MIMEType);
1668  void RequestAvatars(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
1692  QString SetAvatar(const QByteArray& avatar, const QString& MIMEType, const QDBusMessage& dbusMessage);
1706  void ClearAvatar(const QDBusMessage& dbusMessage);
1707 
1708 Q_SIGNALS: // SIGNALS
1724  void AvatarUpdated(uint contact, const QString& newAvatarToken);
1747  void AvatarRetrieved(uint contact, const QString& token, const QByteArray& avatar, const QString& type);
1748 };
1749 
1758 {
1759  Q_OBJECT
1760  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Balance")
1761  Q_CLASSINFO("D-Bus Introspection", ""
1762 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Balance\">\n"
1763 " <property access=\"read\" type=\"(ius)\" name=\"AccountBalance\">\n"
1764 " <annotation value=\"Tp::CurrencyAmount\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1765 " </property>\n"
1766 " <property access=\"read\" type=\"s\" name=\"ManageCreditURI\"/>\n"
1767 " <signal name=\"BalanceChanged\">\n"
1768 " <arg type=\"(ius)\" name=\"balance\">\n"
1769 " <annotation value=\"Tp::CurrencyAmount\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
1770 " </arg>\n"
1771 " </signal>\n"
1772 " </interface>\n"
1773 "")
1774  Q_PROPERTY(Tp::CurrencyAmount AccountBalance READ AccountBalance )
1775  Q_PROPERTY(QString ManageCreditURI READ ManageCreditURI )
1776 
1777 public:
1778  ConnectionInterfaceBalanceAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1780 
1781 
1782 public: // PROPERTIES
1803  Tp::CurrencyAmount AccountBalance() const;
1823  QString ManageCreditURI() const;
1824 
1825 Q_SIGNALS: // SIGNALS
1841  void BalanceChanged(const Tp::CurrencyAmount& balance);
1842 };
1843 
1852 {
1853  Q_OBJECT
1854  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Cellular")
1855  Q_CLASSINFO("D-Bus Introspection", ""
1856 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Cellular\">\n"
1857 " <property access=\"readwrite\" type=\"u\" name=\"MessageValidityPeriod\"/>\n"
1858 " <property access=\"readwrite\" type=\"b\" name=\"OverrideMessageServiceCentre\"/>\n"
1859 " <property access=\"readwrite\" type=\"s\" name=\"MessageServiceCentre\"/>\n"
1860 " <property access=\"read\" type=\"s\" name=\"IMSI\"/>\n"
1861 " <property access=\"readwrite\" type=\"b\" name=\"MessageReducedCharacterSet\"/>\n"
1862 " <property access=\"readwrite\" type=\"s\" name=\"MessageNationalCharacterSet\"/>\n"
1863 " <signal name=\"IMSIChanged\">\n"
1864 " <arg type=\"s\" name=\"IMSI\"/>\n"
1865 " </signal>\n"
1866 " </interface>\n"
1867 "")
1868  Q_PROPERTY(uint MessageValidityPeriod READ MessageValidityPeriod WRITE SetMessageValidityPeriod)
1869  Q_PROPERTY(bool OverrideMessageServiceCentre READ OverrideMessageServiceCentre WRITE SetOverrideMessageServiceCentre)
1870  Q_PROPERTY(QString MessageServiceCentre READ MessageServiceCentre WRITE SetMessageServiceCentre)
1871  Q_PROPERTY(QString IMSI READ IMSI )
1872  Q_PROPERTY(bool MessageReducedCharacterSet READ MessageReducedCharacterSet WRITE SetMessageReducedCharacterSet)
1873  Q_PROPERTY(QString MessageNationalCharacterSet READ MessageNationalCharacterSet WRITE SetMessageNationalCharacterSet)
1874 
1875 public:
1876  ConnectionInterfaceCellularAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1878 
1879 
1880 public: // PROPERTIES
1901  uint MessageValidityPeriod() const;
1920  void SetMessageValidityPeriod(const uint &newValue);
1945  bool OverrideMessageServiceCentre() const;
1968  void SetOverrideMessageServiceCentre(const bool &newValue);
1987  QString MessageServiceCentre() const;
2004  void SetMessageServiceCentre(const QString &newValue);
2020  QString IMSI() const;
2041  bool MessageReducedCharacterSet() const;
2060  void SetMessageReducedCharacterSet(const bool &newValue);
2088  QString MessageNationalCharacterSet() const;
2114  void SetMessageNationalCharacterSet(const QString &newValue);
2115 
2116 Q_SIGNALS: // SIGNALS
2130  void IMSIChanged(const QString& IMSI);
2131 };
2132 
2141 {
2142  Q_OBJECT
2143  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ClientTypes")
2144  Q_CLASSINFO("D-Bus Introspection", ""
2145 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ClientTypes\">\n"
2146 " <method name=\"GetClientTypes\">\n"
2147 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
2148 " <arg direction=\"out\" type=\"a{uas}\" name=\"clientTypes\">\n"
2149 " <annotation value=\"Tp::ContactClientTypes\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
2150 " </arg>\n"
2151 " </method>\n"
2152 " <method name=\"RequestClientTypes\">\n"
2153 " <arg direction=\"in\" type=\"u\" name=\"contact\"/>\n"
2154 " <arg direction=\"out\" type=\"as\" name=\"clientTypes\"/>\n"
2155 " </method>\n"
2156 " <signal name=\"ClientTypesUpdated\">\n"
2157 " <arg type=\"u\" name=\"contact\"/>\n"
2158 " <arg type=\"as\" name=\"clientTypes\"/>\n"
2159 " </signal>\n"
2160 " </interface>\n"
2161 "")
2162 
2163 public:
2164  ConnectionInterfaceClientTypesAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2166 
2167  typedef Tp::MethodInvocationContextPtr< Tp::ContactClientTypes > GetClientTypesContextPtr;
2168  typedef Tp::MethodInvocationContextPtr< QStringList > RequestClientTypesContextPtr;
2169 
2170 public Q_SLOTS: // METHODS
2200  Tp::ContactClientTypes GetClientTypes(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
2226  QStringList RequestClientTypes(uint contact, const QDBusMessage& dbusMessage);
2227 
2228 Q_SIGNALS: // SIGNALS
2245  void ClientTypesUpdated(uint contact, const QStringList& clientTypes);
2246 };
2247 
2256 {
2257  Q_OBJECT
2258  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ContactBlocking")
2259  Q_CLASSINFO("D-Bus Introspection", ""
2260 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ContactBlocking\">\n"
2261 " <property access=\"read\" type=\"u\" name=\"ContactBlockingCapabilities\"/>\n"
2262 " <method name=\"BlockContacts\">\n"
2263 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
2264 " <arg direction=\"in\" type=\"b\" name=\"reportAbusive\"/>\n"
2265 " </method>\n"
2266 " <method name=\"UnblockContacts\">\n"
2267 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
2268 " </method>\n"
2269 " <method name=\"RequestBlockedContacts\">\n"
2270 " <arg direction=\"out\" type=\"a{us}\" name=\"contacts\">\n"
2271 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
2272 " </arg>\n"
2273 " </method>\n"
2274 " <signal name=\"BlockedContactsChanged\">\n"
2275 " <arg type=\"a{us}\" name=\"blockedContacts\">\n"
2276 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2277 " </arg>\n"
2278 " <arg type=\"a{us}\" name=\"unblockedContacts\">\n"
2279 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
2280 " </arg>\n"
2281 " </signal>\n"
2282 " </interface>\n"
2283 "")
2285 
2286 public:
2287  ConnectionInterfaceContactBlockingAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2289 
2290  typedef Tp::MethodInvocationContextPtr< > BlockContactsContextPtr;
2291  typedef Tp::MethodInvocationContextPtr< > UnblockContactsContextPtr;
2292  typedef Tp::MethodInvocationContextPtr< Tp::HandleIdentifierMap > RequestBlockedContactsContextPtr;
2293 
2294 public: // PROPERTIES
2313  uint ContactBlockingCapabilities() const;
2314 
2315 public Q_SLOTS: // METHODS
2376  void BlockContacts(const Tp::UIntList& contacts, bool reportAbusive, const QDBusMessage& dbusMessage);
2397  void UnblockContacts(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
2420  Tp::HandleIdentifierMap RequestBlockedContacts(const QDBusMessage& dbusMessage);
2421 
2422 Q_SIGNALS: // SIGNALS
2438  void BlockedContactsChanged(const Tp::HandleIdentifierMap& blockedContacts, const Tp::HandleIdentifierMap& unblockedContacts);
2439 };
2440 
2449 {
2450  Q_OBJECT
2451  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities")
2452  Q_CLASSINFO("D-Bus Introspection", ""
2453 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities\">\n"
2454 " <method name=\"UpdateCapabilities\">\n"
2455 " <arg direction=\"in\" type=\"a(saa{sv}as)\" name=\"handlerCapabilities\">\n"
2456 " <annotation value=\"Tp::HandlerCapabilitiesList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2457 " </arg>\n"
2458 " </method>\n"
2459 " <method name=\"GetContactCapabilities\">\n"
2460 " <arg direction=\"in\" type=\"au\" name=\"handles\"/>\n"
2461 " <arg direction=\"out\" type=\"a{ua(a{sv}as)}\" name=\"contactCapabilities\">\n"
2462 " <annotation value=\"Tp::ContactCapabilitiesMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
2463 " </arg>\n"
2464 " </method>\n"
2465 " <signal name=\"ContactCapabilitiesChanged\">\n"
2466 " <arg type=\"a{ua(a{sv}as)}\" name=\"caps\">\n"
2467 " <annotation value=\"Tp::ContactCapabilitiesMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2468 " </arg>\n"
2469 " </signal>\n"
2470 " </interface>\n"
2471 "")
2472 
2473 public:
2474  ConnectionInterfaceContactCapabilitiesAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2476 
2477  typedef Tp::MethodInvocationContextPtr< > UpdateCapabilitiesContextPtr;
2478  typedef Tp::MethodInvocationContextPtr< Tp::ContactCapabilitiesMap > GetContactCapabilitiesContextPtr;
2479 
2480 public Q_SLOTS: // METHODS
2545  void UpdateCapabilities(const Tp::HandlerCapabilitiesList& handlerCapabilities, const QDBusMessage& dbusMessage);
2582  Tp::ContactCapabilitiesMap GetContactCapabilities(const Tp::UIntList& handles, const QDBusMessage& dbusMessage);
2583 
2584 Q_SIGNALS: // SIGNALS
2599  void ContactCapabilitiesChanged(const Tp::ContactCapabilitiesMap& caps);
2600 };
2601 
2610 {
2611  Q_OBJECT
2612  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ContactGroups")
2613  Q_CLASSINFO("D-Bus Introspection", ""
2614 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ContactGroups\">\n"
2615 " <property access=\"read\" type=\"b\" name=\"DisjointGroups\"/>\n"
2616 " <property access=\"read\" type=\"u\" name=\"GroupStorage\"/>\n"
2617 " <property access=\"read\" type=\"as\" name=\"Groups\"/>\n"
2618 " <method name=\"SetContactGroups\">\n"
2619 " <arg direction=\"in\" type=\"u\" name=\"contact\"/>\n"
2620 " <arg direction=\"in\" type=\"as\" name=\"groups\"/>\n"
2621 " </method>\n"
2622 " <method name=\"SetGroupMembers\">\n"
2623 " <arg direction=\"in\" type=\"s\" name=\"group\"/>\n"
2624 " <arg direction=\"in\" type=\"au\" name=\"members\"/>\n"
2625 " </method>\n"
2626 " <method name=\"AddToGroup\">\n"
2627 " <arg direction=\"in\" type=\"s\" name=\"group\"/>\n"
2628 " <arg direction=\"in\" type=\"au\" name=\"members\"/>\n"
2629 " </method>\n"
2630 " <method name=\"RemoveFromGroup\">\n"
2631 " <arg direction=\"in\" type=\"s\" name=\"group\"/>\n"
2632 " <arg direction=\"in\" type=\"au\" name=\"members\"/>\n"
2633 " </method>\n"
2634 " <method name=\"RemoveGroup\">\n"
2635 " <arg direction=\"in\" type=\"s\" name=\"group\"/>\n"
2636 " </method>\n"
2637 " <method name=\"RenameGroup\">\n"
2638 " <arg direction=\"in\" type=\"s\" name=\"oldName\"/>\n"
2639 " <arg direction=\"in\" type=\"s\" name=\"newName\"/>\n"
2640 " </method>\n"
2641 " <signal name=\"GroupsChanged\">\n"
2642 " <arg type=\"au\" name=\"contact\"/>\n"
2643 " <arg type=\"as\" name=\"added\"/>\n"
2644 " <arg type=\"as\" name=\"removed\"/>\n"
2645 " </signal>\n"
2646 " <signal name=\"GroupsCreated\">\n"
2647 " <arg type=\"as\" name=\"names\"/>\n"
2648 " </signal>\n"
2649 " <signal name=\"GroupRenamed\">\n"
2650 " <arg type=\"s\" name=\"oldName\"/>\n"
2651 " <arg type=\"s\" name=\"newName\"/>\n"
2652 " </signal>\n"
2653 " <signal name=\"GroupsRemoved\">\n"
2654 " <arg type=\"as\" name=\"names\"/>\n"
2655 " </signal>\n"
2656 " </interface>\n"
2657 "")
2658  Q_PROPERTY(bool DisjointGroups READ DisjointGroups )
2659  Q_PROPERTY(uint GroupStorage READ GroupStorage )
2660  Q_PROPERTY(QStringList Groups READ Groups )
2661 
2662 public:
2663  ConnectionInterfaceContactGroupsAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2665 
2666  typedef Tp::MethodInvocationContextPtr< > SetContactGroupsContextPtr;
2667  typedef Tp::MethodInvocationContextPtr< > SetGroupMembersContextPtr;
2668  typedef Tp::MethodInvocationContextPtr< > AddToGroupContextPtr;
2669  typedef Tp::MethodInvocationContextPtr< > RemoveFromGroupContextPtr;
2670  typedef Tp::MethodInvocationContextPtr< > RemoveGroupContextPtr;
2671  typedef Tp::MethodInvocationContextPtr< > RenameGroupContextPtr;
2672 
2673 public: // PROPERTIES
2692  bool DisjointGroups() const;
2707  uint GroupStorage() const;
2733  QStringList Groups() const;
2734 
2735 public Q_SLOTS: // METHODS
2785  void SetContactGroups(uint contact, const QStringList& groups, const QDBusMessage& dbusMessage);
2834  void SetGroupMembers(const QString& group, const Tp::UIntList& members, const QDBusMessage& dbusMessage);
2876  void AddToGroup(const QString& group, const Tp::UIntList& members, const QDBusMessage& dbusMessage);
2917  void RemoveFromGroup(const QString& group, const Tp::UIntList& members, const QDBusMessage& dbusMessage);
2948  void RemoveGroup(const QString& group, const QDBusMessage& dbusMessage);
2989  void RenameGroup(const QString& oldName, const QString& newName, const QDBusMessage& dbusMessage);
2990 
2991 Q_SIGNALS: // SIGNALS
3010  void GroupsChanged(const Tp::UIntList& contact, const QStringList& added, const QStringList& removed);
3023  void GroupsCreated(const QStringList& names);
3039  void GroupRenamed(const QString& oldName, const QString& newName);
3052  void GroupsRemoved(const QStringList& names);
3053 };
3054 
3063 {
3064  Q_OBJECT
3065  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ContactInfo")
3066  Q_CLASSINFO("D-Bus Introspection", ""
3067 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ContactInfo\">\n"
3068 " <property access=\"read\" type=\"u\" name=\"ContactInfoFlags\"/>\n"
3069 " <property access=\"read\" type=\"a(sasuu)\" name=\"SupportedFields\">\n"
3070 " <annotation value=\"Tp::FieldSpecs\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
3071 " </property>\n"
3072 " <method name=\"GetContactInfo\">\n"
3073 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3074 " <arg direction=\"out\" type=\"a{ua(sasas)}\" name=\"contactInfo\">\n"
3075 " <annotation value=\"Tp::ContactInfoMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
3076 " </arg>\n"
3077 " </method>\n"
3078 " <method name=\"RefreshContactInfo\">\n"
3079 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3080 " </method>\n"
3081 " <method name=\"RequestContactInfo\">\n"
3082 " <arg direction=\"in\" type=\"u\" name=\"contact\"/>\n"
3083 " <arg direction=\"out\" type=\"a(sasas)\" name=\"contactInfo\">\n"
3084 " <annotation value=\"Tp::ContactInfoFieldList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
3085 " </arg>\n"
3086 " </method>\n"
3087 " <method name=\"SetContactInfo\">\n"
3088 " <arg direction=\"in\" type=\"a(sasas)\" name=\"contactInfo\">\n"
3089 " <annotation value=\"Tp::ContactInfoFieldList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
3090 " </arg>\n"
3091 " </method>\n"
3092 " <signal name=\"ContactInfoChanged\">\n"
3093 " <arg type=\"u\" name=\"contact\"/>\n"
3094 " <arg type=\"a(sasas)\" name=\"contactInfo\">\n"
3095 " <annotation value=\"Tp::ContactInfoFieldList\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
3096 " </arg>\n"
3097 " </signal>\n"
3098 " </interface>\n"
3099 "")
3100  Q_PROPERTY(uint ContactInfoFlags READ ContactInfoFlags )
3101  Q_PROPERTY(Tp::FieldSpecs SupportedFields READ SupportedFields )
3102 
3103 public:
3104  ConnectionInterfaceContactInfoAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
3106 
3107  typedef Tp::MethodInvocationContextPtr< Tp::ContactInfoMap > GetContactInfoContextPtr;
3108  typedef Tp::MethodInvocationContextPtr< > RefreshContactInfoContextPtr;
3109  typedef Tp::MethodInvocationContextPtr< Tp::ContactInfoFieldList > RequestContactInfoContextPtr;
3110  typedef Tp::MethodInvocationContextPtr< > SetContactInfoContextPtr;
3111 
3112 public: // PROPERTIES
3138  uint ContactInfoFlags() const;
3198  Tp::FieldSpecs SupportedFields() const;
3199 
3200 public Q_SLOTS: // METHODS
3224  Tp::ContactInfoMap GetContactInfo(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
3246  void RefreshContactInfo(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
3269  Tp::ContactInfoFieldList RequestContactInfo(uint contact, const QDBusMessage& dbusMessage);
3289  void SetContactInfo(const Tp::ContactInfoFieldList& contactInfo, const QDBusMessage& dbusMessage);
3290 
3291 Q_SIGNALS: // SIGNALS
3309  void ContactInfoChanged(uint contact, const Tp::ContactInfoFieldList& contactInfo);
3310 };
3311 
3320 {
3321  Q_OBJECT
3322  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ContactList")
3323  Q_CLASSINFO("D-Bus Introspection", ""
3324 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ContactList\">\n"
3325 " <property access=\"read\" type=\"u\" name=\"ContactListState\"/>\n"
3326 " <property access=\"read\" type=\"b\" name=\"ContactListPersists\"/>\n"
3327 " <property access=\"read\" type=\"b\" name=\"CanChangeContactList\"/>\n"
3328 " <property access=\"read\" type=\"b\" name=\"RequestUsesMessage\"/>\n"
3329 " <property access=\"read\" type=\"b\" name=\"DownloadAtConnection\"/>\n"
3330 " <method name=\"GetContactListAttributes\">\n"
3331 " <arg direction=\"in\" type=\"as\" name=\"interfaces\"/>\n"
3332 " <arg direction=\"in\" type=\"b\" name=\"hold\"/>\n"
3333 " <arg direction=\"out\" type=\"a{ua{sv}}\" name=\"attributes\">\n"
3334 " <annotation value=\"Tp::ContactAttributesMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
3335 " </arg>\n"
3336 " </method>\n"
3337 " <method name=\"RequestSubscription\">\n"
3338 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3339 " <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
3340 " </method>\n"
3341 " <method name=\"AuthorizePublication\">\n"
3342 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3343 " </method>\n"
3344 " <method name=\"RemoveContacts\">\n"
3345 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3346 " </method>\n"
3347 " <method name=\"Unsubscribe\">\n"
3348 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3349 " </method>\n"
3350 " <method name=\"Unpublish\">\n"
3351 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
3352 " </method>\n"
3353 " <method name=\"Download\"/>\n"
3354 " <signal name=\"ContactListStateChanged\">\n"
3355 " <arg type=\"u\" name=\"contactListState\"/>\n"
3356 " </signal>\n"
3357 " <signal name=\"ContactsChangedWithID\">\n"
3358 " <arg type=\"a{u(uus)}\" name=\"changes\">\n"
3359 " <annotation value=\"Tp::ContactSubscriptionMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
3360 " </arg>\n"
3361 " <arg type=\"a{us}\" name=\"identifiers\">\n"
3362 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
3363 " </arg>\n"
3364 " <arg type=\"a{us}\" name=\"removals\">\n"
3365 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.In2\"/>\n"
3366 " </arg>\n"
3367 " </signal>\n"
3368 " <signal name=\"ContactsChanged\">\n"
3369 " <arg type=\"a{u(uus)}\" name=\"changes\">\n"
3370 " <annotation value=\"Tp::ContactSubscriptionMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
3371 " </arg>\n"
3372 " <arg type=\"au\" name=\"removals\"/>\n"
3373 " </signal>\n"
3374 " </interface>\n"
3375 "")
3376  Q_PROPERTY(uint ContactListState READ ContactListState )
3377  Q_PROPERTY(bool ContactListPersists READ ContactListPersists )
3378  Q_PROPERTY(bool CanChangeContactList READ CanChangeContactList )
3379  Q_PROPERTY(bool RequestUsesMessage READ RequestUsesMessage )
3380  Q_PROPERTY(bool DownloadAtConnection READ DownloadAtConnection )
3381 
3382 public:
3383  ConnectionInterfaceContactListAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
3385 
3386  typedef Tp::MethodInvocationContextPtr< Tp::ContactAttributesMap > GetContactListAttributesContextPtr;
3387  typedef Tp::MethodInvocationContextPtr< > RequestSubscriptionContextPtr;
3388  typedef Tp::MethodInvocationContextPtr< > AuthorizePublicationContextPtr;
3389  typedef Tp::MethodInvocationContextPtr< > RemoveContactsContextPtr;
3390  typedef Tp::MethodInvocationContextPtr< > UnsubscribeContextPtr;
3391  typedef Tp::MethodInvocationContextPtr< > UnpublishContextPtr;
3392  typedef Tp::MethodInvocationContextPtr< > DownloadContextPtr;
3393 
3394 public: // PROPERTIES
3407  uint ContactListState() const;
3469  bool ContactListPersists() const;
3500  bool CanChangeContactList() const;
3531  bool RequestUsesMessage() const;
3565  bool DownloadAtConnection() const;
3566 
3567 public Q_SLOTS: // METHODS
3639  Tp::ContactAttributesMap GetContactListAttributes(const QStringList& interfaces, bool hold, const QDBusMessage& dbusMessage);
3751  void RequestSubscription(const Tp::UIntList& contacts, const QString& message, const QDBusMessage& dbusMessage);
3825  void AuthorizePublication(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
3877  void RemoveContacts(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
3916  void Unsubscribe(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
3955  void Unpublish(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
3973  void Download(const QDBusMessage& dbusMessage);
3974 
3975 Q_SIGNALS: // SIGNALS
3988  void ContactListStateChanged(uint contactListState);
4017  void ContactsChangedWithID(const Tp::ContactSubscriptionMap& changes, const Tp::HandleIdentifierMap& identifiers, const Tp::HandleIdentifierMap& removals);
4034  void ContactsChanged(const Tp::ContactSubscriptionMap& changes, const Tp::UIntList& removals);
4035 };
4036 
4045 {
4046  Q_OBJECT
4047  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Contacts")
4048  Q_CLASSINFO("D-Bus Introspection", ""
4049 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Contacts\">\n"
4050 " <property access=\"read\" type=\"as\" name=\"ContactAttributeInterfaces\"/>\n"
4051 " <method name=\"GetContactAttributes\">\n"
4052 " <arg direction=\"in\" type=\"au\" name=\"handles\"/>\n"
4053 " <arg direction=\"in\" type=\"as\" name=\"interfaces\"/>\n"
4054 " <arg direction=\"in\" type=\"b\" name=\"hold\"/>\n"
4055 " <arg direction=\"out\" type=\"a{ua{sv}}\" name=\"attributes\">\n"
4056 " <annotation value=\"Tp::ContactAttributesMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
4057 " </arg>\n"
4058 " </method>\n"
4059 " <method name=\"GetContactByID\">\n"
4060 " <arg direction=\"in\" type=\"s\" name=\"identifier\"/>\n"
4061 " <arg direction=\"in\" type=\"as\" name=\"interfaces\"/>\n"
4062 " <arg direction=\"out\" type=\"u\" name=\"handle\"/>\n"
4063 " <arg direction=\"out\" type=\"a{sv}\" name=\"attributes\">\n"
4064 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out1\"/>\n"
4065 " </arg>\n"
4066 " </method>\n"
4067 " </interface>\n"
4068 "")
4069  Q_PROPERTY(QStringList ContactAttributeInterfaces READ ContactAttributeInterfaces )
4070 
4071 public:
4072  ConnectionInterfaceContactsAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4074 
4075  typedef Tp::MethodInvocationContextPtr< Tp::ContactAttributesMap > GetContactAttributesContextPtr;
4076  typedef Tp::MethodInvocationContextPtr< uint, QVariantMap > GetContactByIDContextPtr;
4077 
4078 public: // PROPERTIES
4091  QStringList ContactAttributeInterfaces() const;
4092 
4093 public Q_SLOTS: // METHODS
4175  Tp::ContactAttributesMap GetContactAttributes(const Tp::UIntList& handles, const QStringList& interfaces, bool hold, const QDBusMessage& dbusMessage);
4223  uint GetContactByID(const QString& identifier, const QStringList& interfaces, const QDBusMessage& dbusMessage, QVariantMap& attributes);
4224 };
4225 
4234 {
4235  Q_OBJECT
4236  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Location")
4237  Q_CLASSINFO("D-Bus Introspection", ""
4238 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Location\">\n"
4239 " <property access=\"read\" type=\"au\" name=\"LocationAccessControlTypes\"/>\n"
4240 " <property access=\"readwrite\" type=\"(uv)\" name=\"LocationAccessControl\">\n"
4241 " <annotation value=\"Tp::RichPresenceAccessControl\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
4242 " </property>\n"
4243 " <property access=\"read\" type=\"u\" name=\"SupportedLocationFeatures\"/>\n"
4244 " <method name=\"GetLocations\">\n"
4245 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
4246 " <arg direction=\"out\" type=\"a{ua{sv}}\" name=\"locations\">\n"
4247 " <annotation value=\"Tp::ContactLocations\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
4248 " </arg>\n"
4249 " </method>\n"
4250 " <method name=\"RequestLocation\">\n"
4251 " <arg direction=\"in\" type=\"u\" name=\"contact\"/>\n"
4252 " <arg direction=\"out\" type=\"a{sv}\" name=\"location\">\n"
4253 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
4254 " </arg>\n"
4255 " </method>\n"
4256 " <method name=\"SetLocation\">\n"
4257 " <arg direction=\"in\" type=\"a{sv}\" name=\"location\">\n"
4258 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4259 " </arg>\n"
4260 " </method>\n"
4261 " <signal name=\"LocationUpdated\">\n"
4262 " <arg type=\"u\" name=\"contact\"/>\n"
4263 " <arg type=\"a{sv}\" name=\"location\"/>\n"
4264 " </signal>\n"
4265 " </interface>\n"
4266 "")
4267  Q_PROPERTY(Tp::UIntList LocationAccessControlTypes READ LocationAccessControlTypes )
4268  Q_PROPERTY(Tp::RichPresenceAccessControl LocationAccessControl READ LocationAccessControl WRITE SetLocationAccessControl)
4269  Q_PROPERTY(uint SupportedLocationFeatures READ SupportedLocationFeatures )
4270 
4271 public:
4272  ConnectionInterfaceLocationAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4274 
4275  typedef Tp::MethodInvocationContextPtr< Tp::ContactLocations > GetLocationsContextPtr;
4276  typedef Tp::MethodInvocationContextPtr< QVariantMap > RequestLocationContextPtr;
4277  typedef Tp::MethodInvocationContextPtr< > SetLocationContextPtr;
4278 
4279 public: // PROPERTIES
4291  Tp::UIntList LocationAccessControlTypes() const;
4306  Tp::RichPresenceAccessControl LocationAccessControl() const;
4319  void SetLocationAccessControl(const Tp::RichPresenceAccessControl &newValue);
4335  uint SupportedLocationFeatures() const;
4336 
4337 public Q_SLOTS: // METHODS
4379  Tp::ContactLocations GetLocations(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
4405  QVariantMap RequestLocation(uint contact, const QDBusMessage& dbusMessage);
4429  void SetLocation(const QVariantMap& location, const QDBusMessage& dbusMessage);
4430 
4431 Q_SIGNALS: // SIGNALS
4448  void LocationUpdated(uint contact, const QVariantMap& location);
4449 };
4450 
4459 {
4460  Q_OBJECT
4461  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.MailNotification")
4462  Q_CLASSINFO("D-Bus Introspection", ""
4463 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.MailNotification\">\n"
4464 " <property access=\"read\" type=\"u\" name=\"MailNotificationFlags\"/>\n"
4465 " <property access=\"read\" type=\"u\" name=\"UnreadMailCount\"/>\n"
4466 " <property access=\"read\" type=\"aa{sv}\" name=\"UnreadMails\">\n"
4467 " <annotation value=\"Tp::MailList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
4468 " </property>\n"
4469 " <property access=\"read\" type=\"s\" name=\"MailAddress\"/>\n"
4470 " <method name=\"RequestInboxURL\">\n"
4471 " <arg direction=\"out\" type=\"(sua(ss))\" name=\"URL\">\n"
4472 " <annotation value=\"Tp::MailURL\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
4473 " </arg>\n"
4474 " </method>\n"
4475 " <method name=\"RequestMailURL\">\n"
4476 " <arg direction=\"in\" type=\"s\" name=\"ID\"/>\n"
4477 " <arg direction=\"in\" type=\"v\" name=\"URLData\"/>\n"
4478 " <arg direction=\"out\" type=\"(sua(ss))\" name=\"URL\">\n"
4479 " <annotation value=\"Tp::MailURL\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
4480 " </arg>\n"
4481 " </method>\n"
4482 " <signal name=\"MailsReceived\">\n"
4483 " <arg type=\"aa{sv}\" name=\"mails\">\n"
4484 " <annotation value=\"Tp::MailList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4485 " </arg>\n"
4486 " </signal>\n"
4487 " <signal name=\"UnreadMailsChanged\">\n"
4488 " <arg type=\"u\" name=\"count\"/>\n"
4489 " <arg type=\"aa{sv}\" name=\"mailsAdded\">\n"
4490 " <annotation value=\"Tp::MailList\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
4491 " </arg>\n"
4492 " <arg type=\"as\" name=\"mailsRemoved\"/>\n"
4493 " </signal>\n"
4494 " </interface>\n"
4495 "")
4496  Q_PROPERTY(uint MailNotificationFlags READ MailNotificationFlags )
4497  Q_PROPERTY(uint UnreadMailCount READ UnreadMailCount )
4498  Q_PROPERTY(Tp::MailList UnreadMails READ UnreadMails )
4499  Q_PROPERTY(QString MailAddress READ MailAddress )
4500 
4501 public:
4502  ConnectionInterfaceMailNotificationAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4504 
4505  typedef Tp::MethodInvocationContextPtr< Tp::MailURL > RequestInboxURLContextPtr;
4506  typedef Tp::MethodInvocationContextPtr< Tp::MailURL > RequestMailURLContextPtr;
4507 
4508 public: // PROPERTIES
4525  uint MailNotificationFlags() const;
4552  uint UnreadMailCount() const;
4571  Tp::MailList UnreadMails() const;
4588  QString MailAddress() const;
4589 
4590 public Q_SLOTS: // METHODS
4616  Tp::MailURL RequestInboxURL(const QDBusMessage& dbusMessage);
4646  Tp::MailURL RequestMailURL(const QString& ID, const QDBusVariant& URLData, const QDBusMessage& dbusMessage);
4647 
4648 Q_SIGNALS: // SIGNALS
4670  void MailsReceived(const Tp::MailList& mails);
4704  void UnreadMailsChanged(uint count, const Tp::MailList& mailsAdded, const QStringList& mailsRemoved);
4705 };
4706 
4715 {
4716  Q_OBJECT
4717  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.PowerSaving")
4718  Q_CLASSINFO("D-Bus Introspection", ""
4719 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.PowerSaving\">\n"
4720 " <property access=\"read\" type=\"b\" name=\"PowerSavingActive\"/>\n"
4721 " <method name=\"SetPowerSaving\">\n"
4722 " <arg direction=\"in\" type=\"b\" name=\"activate\"/>\n"
4723 " </method>\n"
4724 " <signal name=\"PowerSavingChanged\">\n"
4725 " <arg type=\"b\" name=\"active\"/>\n"
4726 " </signal>\n"
4727 " </interface>\n"
4728 "")
4729  Q_PROPERTY(bool PowerSavingActive READ PowerSavingActive )
4730 
4731 public:
4732  ConnectionInterfacePowerSavingAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4734 
4735  typedef Tp::MethodInvocationContextPtr< > SetPowerSavingContextPtr;
4736 
4737 public: // PROPERTIES
4755  bool PowerSavingActive() const;
4756 
4757 public Q_SLOTS: // METHODS
4793  void SetPowerSaving(bool activate, const QDBusMessage& dbusMessage);
4794 
4795 Q_SIGNALS: // SIGNALS
4808  void PowerSavingChanged(bool active);
4809 };
4810 
4819 {
4820  Q_OBJECT
4821  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.Requests")
4822  Q_CLASSINFO("D-Bus Introspection", ""
4823 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.Requests\">\n"
4824 " <property access=\"read\" type=\"a(oa{sv})\" name=\"Channels\">\n"
4825 " <annotation value=\"Tp::ChannelDetailsList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
4826 " </property>\n"
4827 " <property access=\"read\" type=\"a(a{sv}as)\" name=\"RequestableChannelClasses\">\n"
4828 " <annotation value=\"Tp::RequestableChannelClassList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
4829 " </property>\n"
4830 " <method name=\"CreateChannel\">\n"
4831 " <arg direction=\"in\" type=\"a{sv}\" name=\"request\">\n"
4832 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4833 " </arg>\n"
4834 " <arg direction=\"out\" type=\"o\" name=\"channel\"/>\n"
4835 " <arg direction=\"out\" type=\"a{sv}\" name=\"properties\">\n"
4836 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out1\"/>\n"
4837 " </arg>\n"
4838 " </method>\n"
4839 " <method name=\"EnsureChannel\">\n"
4840 " <arg direction=\"in\" type=\"a{sv}\" name=\"request\">\n"
4841 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4842 " </arg>\n"
4843 " <arg direction=\"out\" type=\"b\" name=\"yours\"/>\n"
4844 " <arg direction=\"out\" type=\"o\" name=\"channel\"/>\n"
4845 " <arg direction=\"out\" type=\"a{sv}\" name=\"properties\">\n"
4846 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out2\"/>\n"
4847 " </arg>\n"
4848 " </method>\n"
4849 " <signal name=\"NewChannels\">\n"
4850 " <arg type=\"a(oa{sv})\" name=\"channels\">\n"
4851 " <annotation value=\"Tp::ChannelDetailsList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4852 " </arg>\n"
4853 " </signal>\n"
4854 " <signal name=\"ChannelClosed\">\n"
4855 " <arg type=\"o\" name=\"removed\"/>\n"
4856 " </signal>\n"
4857 " </interface>\n"
4858 "")
4859  Q_PROPERTY(Tp::ChannelDetailsList Channels READ Channels )
4860  Q_PROPERTY(Tp::RequestableChannelClassList RequestableChannelClasses READ RequestableChannelClasses )
4861 
4862 public:
4863  ConnectionInterfaceRequestsAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4865 
4866  typedef Tp::MethodInvocationContextPtr< QDBusObjectPath, QVariantMap > CreateChannelContextPtr;
4867  typedef Tp::MethodInvocationContextPtr< bool, QDBusObjectPath, QVariantMap > EnsureChannelContextPtr;
4868 
4869 public: // PROPERTIES
4882  Tp::ChannelDetailsList Channels() const;
4914  Tp::RequestableChannelClassList RequestableChannelClasses() const;
4915 
4916 public Q_SLOTS: // METHODS
4998  QDBusObjectPath CreateChannel(const QVariantMap& request, const QDBusMessage& dbusMessage, QVariantMap& properties);
5062  bool EnsureChannel(const QVariantMap& request, const QDBusMessage& dbusMessage, QDBusObjectPath& channel, QVariantMap& properties);
5063 
5064 Q_SIGNALS: // SIGNALS
5079  void NewChannels(const Tp::ChannelDetailsList& channels);
5092  void ChannelClosed(const QDBusObjectPath& removed);
5093 };
5094 
5103 {
5104  Q_OBJECT
5105  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.ServicePoint")
5106  Q_CLASSINFO("D-Bus Introspection", ""
5107 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.ServicePoint\">\n"
5108 " <property access=\"read\" type=\"a((us)as)\" name=\"KnownServicePoints\">\n"
5109 " <annotation value=\"Tp::ServicePointInfoList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
5110 " </property>\n"
5111 " <signal name=\"ServicePointsChanged\">\n"
5112 " <arg type=\"a((us)as)\" name=\"servicePoints\">\n"
5113 " <annotation value=\"Tp::ServicePointInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
5114 " </arg>\n"
5115 " </signal>\n"
5116 " </interface>\n"
5117 "")
5118  Q_PROPERTY(Tp::ServicePointInfoList KnownServicePoints READ KnownServicePoints )
5119 
5120 public:
5121  ConnectionInterfaceServicePointAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
5123 
5124 
5125 public: // PROPERTIES
5139  Tp::ServicePointInfoList KnownServicePoints() const;
5140 
5141 Q_SIGNALS: // SIGNALS
5157  void ServicePointsChanged(const Tp::ServicePointInfoList& servicePoints);
5158 };
5159 
5168 {
5169  Q_OBJECT
5170  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Connection.Interface.SimplePresence")
5171  Q_CLASSINFO("D-Bus Introspection", ""
5172 " <interface name=\"org.freedesktop.Telepathy.Connection.Interface.SimplePresence\">\n"
5173 " <property access=\"read\" type=\"a{s(ubb)}\" name=\"Statuses\">\n"
5174 " <annotation value=\"Tp::SimpleStatusSpecMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
5175 " </property>\n"
5176 " <property access=\"read\" type=\"u\" name=\"MaximumStatusMessageLength\"/>\n"
5177 " <method name=\"SetPresence\">\n"
5178 " <arg direction=\"in\" type=\"s\" name=\"status\"/>\n"
5179 " <arg direction=\"in\" type=\"s\" name=\"statusMessage\"/>\n"
5180 " </method>\n"
5181 " <method name=\"GetPresences\">\n"
5182 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
5183 " <arg direction=\"out\" type=\"a{u(uss)}\" name=\"presence\">\n"
5184 " <annotation value=\"Tp::SimpleContactPresences\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
5185 " </arg>\n"
5186 " </method>\n"
5187 " <signal name=\"PresencesChanged\">\n"
5188 " <arg type=\"a{u(uss)}\" name=\"presence\">\n"
5189 " <annotation value=\"Tp::SimpleContactPresences\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
5190 " </arg>\n"
5191 " </signal>\n"
5192 " </interface>\n"
5193 "")
5194  Q_PROPERTY(Tp::SimpleStatusSpecMap Statuses READ Statuses )
5195  Q_PROPERTY(uint MaximumStatusMessageLength READ MaximumStatusMessageLength )
5196 
5197 public:
5198  ConnectionInterfaceSimplePresenceAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
5200 
5201  typedef Tp::MethodInvocationContextPtr< > SetPresenceContextPtr;
5202  typedef Tp::MethodInvocationContextPtr< Tp::SimpleContactPresences > GetPresencesContextPtr;
5203 
5204 public: // PROPERTIES
5248  Tp::SimpleStatusSpecMap Statuses() const;
5295  uint MaximumStatusMessageLength() const;
5296 
5297 public Q_SLOTS: // METHODS
5362  void SetPresence(const QString& status, const QString& statusMessage, const QDBusMessage& dbusMessage);
5395  Tp::SimpleContactPresences GetPresences(const Tp::UIntList& contacts, const QDBusMessage& dbusMessage);
5396 
5397 Q_SIGNALS: // SIGNALS
5411  void PresencesChanged(const Tp::SimpleContactPresences& presence);
5412 };
5413 
5414 }
5415 }
QList< ChannelDetails > ChannelDetailsList
Definition: build/TelepathyQt/_gen/types.h:820
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
Definition: build/TelepathyQt/_gen/types.h:3459
Definition: svc-connection.h:4044
QFlags< ContactBlockingCapability > ContactBlockingCapabilities
Definition: build/TelepathyQt/_gen/constants.h:288
QList< AliasPair > AliasPairList
Definition: build/TelepathyQt/_gen/types.h:224
Definition: svc-connection.h:1757
Definition: svc-connection.h:27
Definition: build/TelepathyQt/_gen/types.h:1352
QList< HandlerCapabilities > HandlerCapabilitiesList
Definition: build/TelepathyQt/_gen/types.h:3567
Definition: build/TelepathyQt/_gen/types.h:1200
QList< Mail > MailList
Definition: build/TelepathyQt/_gen/types.h:1780
ContactListState
Definition: build/TelepathyQt/_gen/constants.h:1732
Definition: svc-connection.h:1851
Definition: build/TelepathyQt/_gen/types.h:161
Definition: build/TelepathyQt/_gen/types.h:1007
Definition: svc-connection.h:1062
Definition: build/TelepathyQt/_gen/types.h:101
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
QList< FieldSpec > FieldSpecs
Definition: build/TelepathyQt/_gen/types.h:1562
QFlags< ContactInfoFlag > ContactInfoFlags
Definition: build/TelepathyQt/_gen/constants.h:324
Definition: build/TelepathyQt/_gen/types.h:950
Definition: build/TelepathyQt/_gen/types.h:2641
Definition: build/TelepathyQt/_gen/types.h:3849
Definition: svc-connection.h:4233
QList< ServicePointInfo > ServicePointInfoList
Definition: build/TelepathyQt/_gen/types.h:3814
QFlags< MailNotificationFlag > MailNotificationFlags
Definition: build/TelepathyQt/_gen/constants.h:505
QList< ChannelInfo > ChannelInfoList
Definition: build/TelepathyQt/_gen/types.h:869
Definition: build/TelepathyQt/_gen/types.h:1646
Definition: build/TelepathyQt/_gen/types.h:3610
Definition: svc-connection.h:1341
Definition: svc-connection.h:1218
Definition: build/TelepathyQt/_gen/types.h:3505
Base class for all the low-level service-side adaptors.
Definition: abstract-adaptor.h:40
Definition: build/TelepathyQt/_gen/types.h:3827
Definition: build/TelepathyQt/_gen/types.h:265
Definition: build/TelepathyQt/_gen/types.h:3428
Definition: svc-connection.h:4818
Definition: build/TelepathyQt/_gen/types.h:183
Definition: build/TelepathyQt/_gen/types.h:1802


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00886.html0000644000175100017520000002070012530426257021145 0ustar00kaffeinekaffeine00000000000000 Connection service implementation
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Connection service implementation

Classes

class  Tp::BaseConnection
 Base class for Connection implementations. More...
 
class  Tp::Service::ConnectionAdaptor
 
class  Tp::Service::ConnectionInterfaceAddressingAdaptor
 
class  Tp::Service::ConnectionInterfaceAliasingAdaptor
 
class  Tp::Service::ConnectionInterfaceAnonymityAdaptor
 
class  Tp::Service::ConnectionInterfaceAvatarsAdaptor
 
class  Tp::Service::ConnectionInterfaceBalanceAdaptor
 
class  Tp::Service::ConnectionInterfaceCellularAdaptor
 
class  Tp::Service::ConnectionInterfaceClientTypesAdaptor
 
class  Tp::Service::ConnectionInterfaceContactBlockingAdaptor
 
class  Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor
 
class  Tp::Service::ConnectionInterfaceContactGroupsAdaptor
 
class  Tp::Service::ConnectionInterfaceContactInfoAdaptor
 
class  Tp::Service::ConnectionInterfaceContactListAdaptor
 
class  Tp::Service::ConnectionInterfaceContactsAdaptor
 
class  Tp::Service::ConnectionInterfaceLocationAdaptor
 
class  Tp::Service::ConnectionInterfaceMailNotificationAdaptor
 
class  Tp::Service::ConnectionInterfacePowerSavingAdaptor
 
class  Tp::Service::ConnectionInterfaceRequestsAdaptor
 
class  Tp::Service::ConnectionInterfaceServicePointAdaptor
 
class  Tp::Service::ConnectionInterfaceSimplePresenceAdaptor
 

Detailed Description

Classes to implement Telepathy Connection objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00385.html0000644000175100017520000001052712530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::MailAddress Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MailAddress Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString name
 
QString address
 

Detailed Description

Structure type generated from the specification.

A pair (name, address) representing an e-mail address, such as ("Nicolas Dufresne", "nicolas.dufresne@collabora.co.uk"). At least one of name and address MUST be provided. A missing element will be represented by the empty string.

The CM should provide as much information as possible, but not all protocols provide both the displayed name and the address. (If a protocol doesn't provide either, it should omit the appropriate field from the Mail entirely.)

Member Data Documentation

QString Tp::MailAddress::name

The displayed name corresponding to the e-mail address

QString Tp::MailAddress::address

The actual e-mail address


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00568_source.html0000644000175100017520000003176612530426257022540 0ustar00kaffeinekaffeine00000000000000 avatar.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
avatar.h
1 
23 #ifndef _TelepathyQt_avatar_h_HEADER_GUARD_
24 #define _TelepathyQt_avatar_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QSharedDataPointer>
33 #include <QString>
34 #include <QStringList>
35 #include <QMetaType>
36 
37 namespace Tp
38 {
39 
40 struct TP_QT_EXPORT AvatarData
41 {
42 public:
43  inline AvatarData(const QString &fileName, const QString &mimeType)
44  : fileName(fileName), mimeType(mimeType) {}
45  inline AvatarData() {}
46 
47  QString fileName;
48  QString mimeType;
49 };
50 
51 class TP_QT_EXPORT AvatarSpec
52 {
53 public:
54  AvatarSpec();
55  AvatarSpec(const QStringList &supportedMimeTypes,
56  uint minHeight, uint maxHeight, uint recommendedHeight,
57  uint minWidth, uint maxWidth, uint recommendedWidth,
58  uint maxBytes);
59  AvatarSpec(const AvatarSpec &other);
60  ~AvatarSpec();
61 
62  bool isValid() const { return mPriv.constData() != 0; }
63 
64  AvatarSpec &operator=(const AvatarSpec &other);
65 
66  QStringList supportedMimeTypes() const;
67  uint minimumHeight() const;
68  uint maximumHeight() const;
69  uint recommendedHeight() const;
70  uint minimumWidth() const;
71  uint maximumWidth() const;
72  uint recommendedWidth() const;
73  uint maximumBytes() const;
74 
75 private:
76  struct Private;
77  friend struct Private;
78  QSharedDataPointer<Private> mPriv;
79 };
80 
81 } // Tp
82 
83 Q_DECLARE_METATYPE(Tp::AvatarData);
84 Q_DECLARE_METATYPE(Tp::AvatarSpec);
85 
86 #endif
The AvatarSpec class represents a Telepathy avatar information supported by a protocol.
Definition: avatar.h:51
QString fileName
Definition: avatar.h:47
The AvatarData class represents a Telepathy avatar.
Definition: avatar.h:40
AvatarData()
Definition: avatar.h:45
AvatarData(const QString &fileName, const QString &mimeType)
Definition: avatar.h:43
QString mimeType
Definition: avatar.h:48
bool isValid() const
Definition: avatar.h:62


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01346.html0000644000175100017520000001027012530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceRoomAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceRoomAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
CreationTimestamp() const Tp::Service::ChannelInterfaceRoomAdaptor
Creator() const Tp::Service::ChannelInterfaceRoomAdaptor
CreatorHandle() const Tp::Service::ChannelInterfaceRoomAdaptor
dbusConnection() const Tp::AbstractAdaptor
RoomName() const Tp::Service::ChannelInterfaceRoomAdaptor
Server() const Tp::Service::ChannelInterfaceRoomAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00840_source.html0000644000175100017520000121575612530426257022535 0ustar00kaffeinekaffeine00000000000000 svc-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
svc-channel.h
1 /*
2  * This file contains D-Bus adaptor classes generated by qt-svc-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #include <TelepathyQt/AbstractAdaptor>
9 #include <TelepathyQt/Global>
10 #include <TelepathyQt/Types>
11 
12 #include <QObject>
13 #include <QtDBus>
14 
15 namespace Tp
16 {
17 namespace Service
18 {
19 
27 class TP_QT_EXPORT ChannelAdaptor : public Tp::AbstractAdaptor
28 {
29  Q_OBJECT
30  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel")
31  Q_CLASSINFO("D-Bus Introspection", ""
32 " <interface name=\"org.freedesktop.Telepathy.Channel\">\n"
33 " <property access=\"read\" type=\"s\" name=\"ChannelType\"/>\n"
34 " <property access=\"read\" type=\"as\" name=\"Interfaces\"/>\n"
35 " <property access=\"read\" type=\"u\" name=\"TargetHandle\"/>\n"
36 " <property access=\"read\" type=\"s\" name=\"TargetID\"/>\n"
37 " <property access=\"read\" type=\"u\" name=\"TargetHandleType\"/>\n"
38 " <property access=\"read\" type=\"b\" name=\"Requested\"/>\n"
39 " <property access=\"read\" type=\"u\" name=\"InitiatorHandle\"/>\n"
40 " <property access=\"read\" type=\"s\" name=\"InitiatorID\"/>\n"
41 " <method name=\"Close\"/>\n"
42 " <method name=\"GetChannelType\">\n"
43 " <arg direction=\"out\" type=\"s\" name=\"channelType\"/>\n"
44 " </method>\n"
45 " <method name=\"GetHandle\">\n"
46 " <arg direction=\"out\" type=\"u\" name=\"targetHandleType\"/>\n"
47 " <arg direction=\"out\" type=\"u\" name=\"targetHandle\"/>\n"
48 " </method>\n"
49 " <method name=\"GetInterfaces\">\n"
50 " <arg direction=\"out\" type=\"as\" name=\"interfaces\"/>\n"
51 " </method>\n"
52 " <signal name=\"Closed\"/>\n"
53 " </interface>\n"
54 "")
55  Q_PROPERTY(QString ChannelType READ ChannelType )
56  Q_PROPERTY(QStringList Interfaces READ Interfaces )
57  Q_PROPERTY(uint TargetHandle READ TargetHandle )
58  Q_PROPERTY(QString TargetID READ TargetID )
59  Q_PROPERTY(uint TargetHandleType READ TargetHandleType )
60  Q_PROPERTY(bool Requested READ Requested )
61  Q_PROPERTY(uint InitiatorHandle READ InitiatorHandle )
62  Q_PROPERTY(QString InitiatorID READ InitiatorID )
63 
64 public:
65  ChannelAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
66  virtual ~ChannelAdaptor();
67 
68  typedef Tp::MethodInvocationContextPtr< > CloseContextPtr;
69  typedef Tp::MethodInvocationContextPtr< QString > GetChannelTypeContextPtr;
70  typedef Tp::MethodInvocationContextPtr< uint, uint > GetHandleContextPtr;
71  typedef Tp::MethodInvocationContextPtr< QStringList > GetInterfacesContextPtr;
72 
73 public: // PROPERTIES
106  QString ChannelType() const;
142  QStringList Interfaces() const;
189  uint TargetHandle() const;
245  QString TargetID() const;
267  uint TargetHandleType() const;
338  bool Requested() const;
402  uint InitiatorHandle() const;
439  QString InitiatorID() const;
440 
441 public Q_SLOTS: // METHODS
459  void Close(const QDBusMessage& dbusMessage);
479  QString GetChannelType(const QDBusMessage& dbusMessage);
504  uint GetHandle(const QDBusMessage& dbusMessage, uint& targetHandle);
524  QStringList GetInterfaces(const QDBusMessage& dbusMessage);
525 
526 Q_SIGNALS: // SIGNALS
536  void Closed();
537 };
538 
547 {
548  Q_OBJECT
549  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Anonymity")
550  Q_CLASSINFO("D-Bus Introspection", ""
551 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Anonymity\">\n"
552 " <property access=\"read\" type=\"u\" name=\"AnonymityModes\"/>\n"
553 " <property access=\"read\" type=\"b\" name=\"AnonymityMandatory\"/>\n"
554 " <property access=\"read\" type=\"s\" name=\"AnonymousID\"/>\n"
555 " </interface>\n"
556 "")
557  Q_PROPERTY(uint AnonymityModes READ AnonymityModes )
558  Q_PROPERTY(bool AnonymityMandatory READ AnonymityMandatory )
559  Q_PROPERTY(QString AnonymousID READ AnonymousID )
560 
561 public:
562  ChannelInterfaceAnonymityAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
564 
565 
566 public: // PROPERTIES
581  uint AnonymityModes() const;
594  bool AnonymityMandatory() const;
618  QString AnonymousID() const;
619 };
620 
629 {
630  Q_OBJECT
631  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.CallState")
632  Q_CLASSINFO("D-Bus Introspection", ""
633 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.CallState\">\n"
634 " <method name=\"GetCallStates\">\n"
635 " <arg direction=\"out\" type=\"a{uu}\" name=\"states\">\n"
636 " <annotation value=\"Tp::ChannelCallStateMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
637 " </arg>\n"
638 " </method>\n"
639 " <signal name=\"CallStateChanged\">\n"
640 " <arg type=\"u\" name=\"contact\"/>\n"
641 " <arg type=\"u\" name=\"state\"/>\n"
642 " </signal>\n"
643 " </interface>\n"
644 "")
645 
646 public:
647  ChannelInterfaceCallStateAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
649 
650  typedef Tp::MethodInvocationContextPtr< Tp::ChannelCallStateMap > GetCallStatesContextPtr;
651 
652 public Q_SLOTS: // METHODS
670  Tp::ChannelCallStateMap GetCallStates(const QDBusMessage& dbusMessage);
671 
672 Q_SIGNALS: // SIGNALS
688  void CallStateChanged(uint contact, uint state);
689 };
690 
699 {
700  Q_OBJECT
701  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1")
702  Q_CLASSINFO("D-Bus Introspection", ""
703 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1\">\n"
704 " <property access=\"read\" type=\"b\" name=\"CanRetryCaptcha\"/>\n"
705 " <property access=\"read\" type=\"u\" name=\"CaptchaStatus\"/>\n"
706 " <property access=\"read\" type=\"s\" name=\"CaptchaError\"/>\n"
707 " <property access=\"read\" type=\"a{sv}\" name=\"CaptchaErrorDetails\"/>\n"
708 " <method name=\"GetCaptchas\">\n"
709 " <arg direction=\"out\" type=\"a(ussuas)\" name=\"captchaInfo\">\n"
710 " <annotation value=\"Tp::CaptchaInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
711 " </arg>\n"
712 " <arg direction=\"out\" type=\"u\" name=\"numberRequired\"/>\n"
713 " <arg direction=\"out\" type=\"s\" name=\"language\"/>\n"
714 " </method>\n"
715 " <method name=\"GetCaptchaData\">\n"
716 " <arg direction=\"in\" type=\"u\" name=\"ID\"/>\n"
717 " <arg direction=\"in\" type=\"s\" name=\"mimeType\"/>\n"
718 " <arg direction=\"out\" type=\"ay\" name=\"captchaData\"/>\n"
719 " </method>\n"
720 " <method name=\"AnswerCaptchas\">\n"
721 " <arg direction=\"in\" type=\"a{us}\" name=\"answers\">\n"
722 " <annotation value=\"Tp::CaptchaAnswers\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
723 " </arg>\n"
724 " </method>\n"
725 " <method name=\"CancelCaptcha\">\n"
726 " <arg direction=\"in\" type=\"u\" name=\"reason\"/>\n"
727 " <arg direction=\"in\" type=\"s\" name=\"debugMessage\"/>\n"
728 " </method>\n"
729 " </interface>\n"
730 "")
731  Q_PROPERTY(bool CanRetryCaptcha READ CanRetryCaptcha )
732  Q_PROPERTY(uint CaptchaStatus READ CaptchaStatus )
733  Q_PROPERTY(QString CaptchaError READ CaptchaError )
734  Q_PROPERTY(QVariantMap CaptchaErrorDetails READ CaptchaErrorDetails )
735 
736 public:
737  ChannelInterfaceCaptchaAuthenticationAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
739 
740  typedef Tp::MethodInvocationContextPtr< Tp::CaptchaInfoList, uint, QString > GetCaptchasContextPtr;
741  typedef Tp::MethodInvocationContextPtr< QByteArray > GetCaptchaDataContextPtr;
742  typedef Tp::MethodInvocationContextPtr< > AnswerCaptchasContextPtr;
743  typedef Tp::MethodInvocationContextPtr< > CancelCaptchaContextPtr;
744 
745 public: // PROPERTIES
769  bool CanRetryCaptcha() const;
797  uint CaptchaStatus() const;
833  QString CaptchaError() const;
857  QVariantMap CaptchaErrorDetails() const;
858 
859 public Q_SLOTS: // METHODS
913  Tp::CaptchaInfoList GetCaptchas(const QDBusMessage& dbusMessage, uint& numberRequired, QString& language);
951  QByteArray GetCaptchaData(uint ID, const QString& mimeType, const QDBusMessage& dbusMessage);
972  void AnswerCaptchas(const Tp::CaptchaAnswers& answers, const QDBusMessage& dbusMessage);
1001  void CancelCaptcha(uint reason, const QString& debugMessage, const QDBusMessage& dbusMessage);
1002 };
1003 
1012 {
1013  Q_OBJECT
1014  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.ChatState")
1015  Q_CLASSINFO("D-Bus Introspection", ""
1016 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.ChatState\">\n"
1017 " <property access=\"read\" type=\"a{uu}\" name=\"ChatStates\">\n"
1018 " <annotation value=\"Tp::ChatStateMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1019 " </property>\n"
1020 " <method name=\"SetChatState\">\n"
1021 " <arg direction=\"in\" type=\"u\" name=\"state\"/>\n"
1022 " </method>\n"
1023 " <signal name=\"ChatStateChanged\">\n"
1024 " <arg type=\"u\" name=\"contact\"/>\n"
1025 " <arg type=\"u\" name=\"state\"/>\n"
1026 " </signal>\n"
1027 " </interface>\n"
1028 "")
1029  Q_PROPERTY(Tp::ChatStateMap ChatStates READ ChatStates )
1030 
1031 public:
1032  ChannelInterfaceChatStateAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1034 
1035  typedef Tp::MethodInvocationContextPtr< > SetChatStateContextPtr;
1036 
1037 public: // PROPERTIES
1075  Tp::ChatStateMap ChatStates() const;
1076 
1077 public Q_SLOTS: // METHODS
1095  void SetChatState(uint state, const QDBusMessage& dbusMessage);
1096 
1097 Q_SIGNALS: // SIGNALS
1113  void ChatStateChanged(uint contact, uint state);
1114 };
1115 
1124 {
1125  Q_OBJECT
1126  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Conference")
1127  Q_CLASSINFO("D-Bus Introspection", ""
1128 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Conference\">\n"
1129 " <property access=\"read\" type=\"ao\" name=\"Channels\"/>\n"
1130 " <property access=\"read\" type=\"ao\" name=\"InitialChannels\"/>\n"
1131 " <property access=\"read\" type=\"au\" name=\"InitialInviteeHandles\"/>\n"
1132 " <property access=\"read\" type=\"as\" name=\"InitialInviteeIDs\"/>\n"
1133 " <property access=\"read\" type=\"s\" name=\"InvitationMessage\"/>\n"
1134 " <property access=\"read\" type=\"a{uo}\" name=\"OriginalChannels\">\n"
1135 " <annotation value=\"Tp::ChannelOriginatorMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1136 " </property>\n"
1137 " <signal name=\"ChannelMerged\">\n"
1138 " <arg type=\"o\" name=\"channel\"/>\n"
1139 " <arg type=\"u\" name=\"channelSpecificHandle\"/>\n"
1140 " <arg type=\"a{sv}\" name=\"properties\"/>\n"
1141 " </signal>\n"
1142 " <signal name=\"ChannelRemoved\">\n"
1143 " <arg type=\"o\" name=\"channel\"/>\n"
1144 " <arg type=\"a{sv}\" name=\"details\"/>\n"
1145 " </signal>\n"
1146 " </interface>\n"
1147 "")
1148  Q_PROPERTY(Tp::ObjectPathList Channels READ Channels )
1149  Q_PROPERTY(Tp::ObjectPathList InitialChannels READ InitialChannels )
1150  Q_PROPERTY(Tp::UIntList InitialInviteeHandles READ InitialInviteeHandles )
1151  Q_PROPERTY(QStringList InitialInviteeIDs READ InitialInviteeIDs )
1152  Q_PROPERTY(QString InvitationMessage READ InvitationMessage )
1153  Q_PROPERTY(Tp::ChannelOriginatorMap OriginalChannels READ OriginalChannels )
1154 
1155 public:
1156  ChannelInterfaceConferenceAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1158 
1159 
1160 public: // PROPERTIES
1191  Tp::ObjectPathList Channels() const;
1255  Tp::ObjectPathList InitialChannels() const;
1331  Tp::UIntList InitialInviteeHandles() const;
1358  QStringList InitialInviteeIDs() const;
1388  QString InvitationMessage() const;
1456  Tp::ChannelOriginatorMap OriginalChannels() const;
1457 
1458 Q_SIGNALS: // SIGNALS
1480  void ChannelMerged(const QDBusObjectPath& channel, uint channelSpecificHandle, const QVariantMap& properties);
1500  void ChannelRemoved(const QDBusObjectPath& channel, const QVariantMap& details);
1501 };
1502 
1511 {
1512  Q_OBJECT
1513  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.DTMF")
1514  Q_CLASSINFO("D-Bus Introspection", ""
1515 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.DTMF\">\n"
1516 " <property access=\"read\" type=\"b\" name=\"CurrentlySendingTones\"/>\n"
1517 " <property access=\"read\" type=\"s\" name=\"InitialTones\"/>\n"
1518 " <property access=\"read\" type=\"s\" name=\"DeferredTones\"/>\n"
1519 " <method name=\"StartTone\">\n"
1520 " <arg direction=\"in\" type=\"u\" name=\"streamID\"/>\n"
1521 " <arg direction=\"in\" type=\"y\" name=\"event\"/>\n"
1522 " </method>\n"
1523 " <method name=\"StopTone\">\n"
1524 " <arg direction=\"in\" type=\"u\" name=\"streamID\"/>\n"
1525 " </method>\n"
1526 " <method name=\"MultipleTones\">\n"
1527 " <arg direction=\"in\" type=\"s\" name=\"tones\"/>\n"
1528 " </method>\n"
1529 " <signal name=\"TonesDeferred\">\n"
1530 " <arg type=\"s\" name=\"tones\"/>\n"
1531 " </signal>\n"
1532 " <signal name=\"SendingTones\">\n"
1533 " <arg type=\"s\" name=\"tones\"/>\n"
1534 " </signal>\n"
1535 " <signal name=\"StoppedTones\">\n"
1536 " <arg type=\"b\" name=\"cancelled\"/>\n"
1537 " </signal>\n"
1538 " </interface>\n"
1539 "")
1540  Q_PROPERTY(bool CurrentlySendingTones READ CurrentlySendingTones )
1541  Q_PROPERTY(QString InitialTones READ InitialTones )
1542  Q_PROPERTY(QString DeferredTones READ DeferredTones )
1543 
1544 public:
1545  ChannelInterfaceDTMFAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1546  virtual ~ChannelInterfaceDTMFAdaptor();
1547 
1548  typedef Tp::MethodInvocationContextPtr< > StartToneContextPtr;
1549  typedef Tp::MethodInvocationContextPtr< > StopToneContextPtr;
1550  typedef Tp::MethodInvocationContextPtr< > MultipleTonesContextPtr;
1551 
1552 public: // PROPERTIES
1566  bool CurrentlySendingTones() const;
1582  QString InitialTones() const;
1602  QString DeferredTones() const;
1603 
1604 public Q_SLOTS: // METHODS
1636  void StartTone(uint streamID, uchar event, const QDBusMessage& dbusMessage);
1661  void StopTone(uint streamID, const QDBusMessage& dbusMessage);
1709  void MultipleTones(const QString& tones, const QDBusMessage& dbusMessage);
1710 
1711 Q_SIGNALS: // SIGNALS
1724  void TonesDeferred(const QString& tones);
1737  void SendingTones(const QString& tones);
1750  void StoppedTones(bool cancelled);
1751 };
1752 
1761 {
1762  Q_OBJECT
1763  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Destroyable")
1764  Q_CLASSINFO("D-Bus Introspection", ""
1765 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Destroyable\">\n"
1766 " <method name=\"Destroy\"/>\n"
1767 " </interface>\n"
1768 "")
1769 
1770 public:
1771  ChannelInterfaceDestroyableAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1773 
1774  typedef Tp::MethodInvocationContextPtr< > DestroyContextPtr;
1775 
1776 public Q_SLOTS: // METHODS
1824  void Destroy(const QDBusMessage& dbusMessage);
1825 };
1826 
1835 {
1836  Q_OBJECT
1837  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata")
1838  Q_CLASSINFO("D-Bus Introspection", ""
1839 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata\">\n"
1840 " <property access=\"readwrite\" type=\"s\" name=\"ServiceName\"/>\n"
1841 " <property access=\"readwrite\" type=\"a{sas}\" name=\"Metadata\">\n"
1842 " <annotation value=\"Tp::Metadata\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1843 " </property>\n"
1844 " </interface>\n"
1845 "")
1846  Q_PROPERTY(QString ServiceName READ ServiceName WRITE SetServiceName)
1847  Q_PROPERTY(Tp::Metadata Metadata READ Metadata WRITE SetMetadata)
1848 
1849 public:
1850  ChannelInterfaceFileTransferMetadataAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1852 
1853 
1854 public: // PROPERTIES
1873  QString ServiceName() const;
1890  void SetServiceName(const QString &newValue);
1906  Tp::Metadata Metadata() const;
1920  void SetMetadata(const Tp::Metadata &newValue);
1921 };
1922 
1931 {
1932  Q_OBJECT
1933  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Group")
1934  Q_CLASSINFO("D-Bus Introspection", ""
1935 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Group\">\n"
1936 " <property access=\"read\" type=\"u\" name=\"GroupFlags\"/>\n"
1937 " <property access=\"read\" type=\"a{uu}\" name=\"HandleOwners\">\n"
1938 " <annotation value=\"Tp::HandleOwnerMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1939 " </property>\n"
1940 " <property access=\"read\" type=\"a(uuus)\" name=\"LocalPendingMembers\">\n"
1941 " <annotation value=\"Tp::LocalPendingInfoList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1942 " </property>\n"
1943 " <property access=\"read\" type=\"au\" name=\"Members\"/>\n"
1944 " <property access=\"read\" type=\"au\" name=\"RemotePendingMembers\"/>\n"
1945 " <property access=\"read\" type=\"u\" name=\"SelfHandle\"/>\n"
1946 " <property access=\"read\" type=\"a{us}\" name=\"MemberIdentifiers\">\n"
1947 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1948 " </property>\n"
1949 " <method name=\"AddMembers\">\n"
1950 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1951 " <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
1952 " </method>\n"
1953 " <method name=\"GetAllMembers\">\n"
1954 " <arg direction=\"out\" type=\"au\" name=\"members\"/>\n"
1955 " <arg direction=\"out\" type=\"au\" name=\"localPending\"/>\n"
1956 " <arg direction=\"out\" type=\"au\" name=\"remotePending\"/>\n"
1957 " </method>\n"
1958 " <method name=\"GetGroupFlags\">\n"
1959 " <arg direction=\"out\" type=\"u\" name=\"groupFlags\"/>\n"
1960 " </method>\n"
1961 " <method name=\"GetHandleOwners\">\n"
1962 " <arg direction=\"in\" type=\"au\" name=\"handles\"/>\n"
1963 " <arg direction=\"out\" type=\"au\" name=\"owners\"/>\n"
1964 " </method>\n"
1965 " <method name=\"GetLocalPendingMembers\">\n"
1966 " <arg direction=\"out\" type=\"au\" name=\"handles\"/>\n"
1967 " </method>\n"
1968 " <method name=\"GetLocalPendingMembersWithInfo\">\n"
1969 " <arg direction=\"out\" type=\"a(uuus)\" name=\"info\">\n"
1970 " <annotation value=\"Tp::LocalPendingInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
1971 " </arg>\n"
1972 " </method>\n"
1973 " <method name=\"GetMembers\">\n"
1974 " <arg direction=\"out\" type=\"au\" name=\"handles\"/>\n"
1975 " </method>\n"
1976 " <method name=\"GetRemotePendingMembers\">\n"
1977 " <arg direction=\"out\" type=\"au\" name=\"handles\"/>\n"
1978 " </method>\n"
1979 " <method name=\"GetSelfHandle\">\n"
1980 " <arg direction=\"out\" type=\"u\" name=\"selfHandle\"/>\n"
1981 " </method>\n"
1982 " <method name=\"RemoveMembers\">\n"
1983 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1984 " <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
1985 " </method>\n"
1986 " <method name=\"RemoveMembersWithReason\">\n"
1987 " <arg direction=\"in\" type=\"au\" name=\"contacts\"/>\n"
1988 " <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
1989 " <arg direction=\"in\" type=\"u\" name=\"reason\"/>\n"
1990 " </method>\n"
1991 " <signal name=\"HandleOwnersChanged\">\n"
1992 " <arg type=\"a{uu}\" name=\"added\">\n"
1993 " <annotation value=\"Tp::HandleOwnerMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
1994 " </arg>\n"
1995 " <arg type=\"au\" name=\"removed\"/>\n"
1996 " </signal>\n"
1997 " <signal name=\"HandleOwnersChangedDetailed\">\n"
1998 " <arg type=\"a{uu}\" name=\"added\">\n"
1999 " <annotation value=\"Tp::HandleOwnerMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2000 " </arg>\n"
2001 " <arg type=\"au\" name=\"removed\"/>\n"
2002 " <arg type=\"a{us}\" name=\"identifiers\">\n"
2003 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.In2\"/>\n"
2004 " </arg>\n"
2005 " </signal>\n"
2006 " <signal name=\"SelfHandleChanged\">\n"
2007 " <arg type=\"u\" name=\"selfHandle\"/>\n"
2008 " </signal>\n"
2009 " <signal name=\"SelfContactChanged\">\n"
2010 " <arg type=\"u\" name=\"selfHandle\"/>\n"
2011 " <arg type=\"s\" name=\"selfID\"/>\n"
2012 " </signal>\n"
2013 " <signal name=\"GroupFlagsChanged\">\n"
2014 " <arg type=\"u\" name=\"added\"/>\n"
2015 " <arg type=\"u\" name=\"removed\"/>\n"
2016 " </signal>\n"
2017 " <signal name=\"MembersChanged\">\n"
2018 " <arg type=\"s\" name=\"message\"/>\n"
2019 " <arg type=\"au\" name=\"added\"/>\n"
2020 " <arg type=\"au\" name=\"removed\"/>\n"
2021 " <arg type=\"au\" name=\"localPending\"/>\n"
2022 " <arg type=\"au\" name=\"remotePending\"/>\n"
2023 " <arg type=\"u\" name=\"actor\"/>\n"
2024 " <arg type=\"u\" name=\"reason\"/>\n"
2025 " </signal>\n"
2026 " <signal name=\"MembersChangedDetailed\">\n"
2027 " <arg type=\"au\" name=\"added\"/>\n"
2028 " <arg type=\"au\" name=\"removed\"/>\n"
2029 " <arg type=\"au\" name=\"localPending\"/>\n"
2030 " <arg type=\"au\" name=\"remotePending\"/>\n"
2031 " <arg type=\"a{sv}\" name=\"details\"/>\n"
2032 " </signal>\n"
2033 " </interface>\n"
2034 "")
2035  Q_PROPERTY(uint GroupFlags READ GroupFlags )
2036  Q_PROPERTY(Tp::HandleOwnerMap HandleOwners READ HandleOwners )
2037  Q_PROPERTY(Tp::LocalPendingInfoList LocalPendingMembers READ LocalPendingMembers )
2038  Q_PROPERTY(Tp::UIntList Members READ Members )
2039  Q_PROPERTY(Tp::UIntList RemotePendingMembers READ RemotePendingMembers )
2040  Q_PROPERTY(uint SelfHandle READ SelfHandle )
2041  Q_PROPERTY(Tp::HandleIdentifierMap MemberIdentifiers READ MemberIdentifiers )
2042 
2043 public:
2044  ChannelInterfaceGroupAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2045  virtual ~ChannelInterfaceGroupAdaptor();
2046 
2047  typedef Tp::MethodInvocationContextPtr< > AddMembersContextPtr;
2048  typedef Tp::MethodInvocationContextPtr< Tp::UIntList, Tp::UIntList, Tp::UIntList > GetAllMembersContextPtr;
2049  typedef Tp::MethodInvocationContextPtr< uint > GetGroupFlagsContextPtr;
2050  typedef Tp::MethodInvocationContextPtr< Tp::UIntList > GetHandleOwnersContextPtr;
2051  typedef Tp::MethodInvocationContextPtr< Tp::UIntList > GetLocalPendingMembersContextPtr;
2052  typedef Tp::MethodInvocationContextPtr< Tp::LocalPendingInfoList > GetLocalPendingMembersWithInfoContextPtr;
2053  typedef Tp::MethodInvocationContextPtr< Tp::UIntList > GetMembersContextPtr;
2054  typedef Tp::MethodInvocationContextPtr< Tp::UIntList > GetRemotePendingMembersContextPtr;
2055  typedef Tp::MethodInvocationContextPtr< uint > GetSelfHandleContextPtr;
2056  typedef Tp::MethodInvocationContextPtr< > RemoveMembersContextPtr;
2057  typedef Tp::MethodInvocationContextPtr< > RemoveMembersWithReasonContextPtr;
2058 
2059 public: // PROPERTIES
2074  uint GroupFlags() const;
2092  Tp::HandleOwnerMap HandleOwners() const;
2105  Tp::LocalPendingInfoList LocalPendingMembers() const;
2117  Tp::UIntList Members() const;
2130  Tp::UIntList RemotePendingMembers() const;
2147  uint SelfHandle() const;
2163  Tp::HandleIdentifierMap MemberIdentifiers() const;
2164 
2165 public Q_SLOTS: // METHODS
2197  void AddMembers(const Tp::UIntList& contacts, const QString& message, const QDBusMessage& dbusMessage);
2220  Tp::UIntList GetAllMembers(const QDBusMessage& dbusMessage, Tp::UIntList& localPending, Tp::UIntList& remotePending);
2237  uint GetGroupFlags(const QDBusMessage& dbusMessage);
2264  Tp::UIntList GetHandleOwners(const Tp::UIntList& handles, const QDBusMessage& dbusMessage);
2280  Tp::UIntList GetLocalPendingMembers(const QDBusMessage& dbusMessage);
2301  Tp::LocalPendingInfoList GetLocalPendingMembersWithInfo(const QDBusMessage& dbusMessage);
2316  Tp::UIntList GetMembers(const QDBusMessage& dbusMessage);
2332  Tp::UIntList GetRemotePendingMembers(const QDBusMessage& dbusMessage);
2347  uint GetSelfHandle(const QDBusMessage& dbusMessage);
2404  void RemoveMembers(const Tp::UIntList& contacts, const QString& message, const QDBusMessage& dbusMessage);
2429  void RemoveMembersWithReason(const Tp::UIntList& contacts, const QString& message, uint reason, const QDBusMessage& dbusMessage);
2430 
2431 Q_SIGNALS: // SIGNALS
2452  void HandleOwnersChanged(const Tp::HandleOwnerMap& added, const Tp::UIntList& removed);
2480  void HandleOwnersChangedDetailed(const Tp::HandleOwnerMap& added, const Tp::UIntList& removed, const Tp::HandleIdentifierMap& identifiers);
2493  void SelfHandleChanged(uint selfHandle);
2509  void SelfContactChanged(uint selfHandle, const QString& selfID);
2525  void GroupFlagsChanged(uint added, uint removed);
2557  void MembersChanged(const QString& message, const Tp::UIntList& added, const Tp::UIntList& removed, const Tp::UIntList& localPending, const Tp::UIntList& remotePending, uint actor, uint reason);
2643  void MembersChangedDetailed(const Tp::UIntList& added, const Tp::UIntList& removed, const Tp::UIntList& localPending, const Tp::UIntList& remotePending, const QVariantMap& details);
2644 };
2645 
2654 {
2655  Q_OBJECT
2656  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Hold")
2657  Q_CLASSINFO("D-Bus Introspection", ""
2658 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Hold\">\n"
2659 " <method name=\"GetHoldState\">\n"
2660 " <arg direction=\"out\" type=\"u\" name=\"holdState\"/>\n"
2661 " <arg direction=\"out\" type=\"u\" name=\"reason\"/>\n"
2662 " </method>\n"
2663 " <method name=\"RequestHold\">\n"
2664 " <arg direction=\"in\" type=\"b\" name=\"hold\"/>\n"
2665 " </method>\n"
2666 " <signal name=\"HoldStateChanged\">\n"
2667 " <arg type=\"u\" name=\"holdState\"/>\n"
2668 " <arg type=\"u\" name=\"reason\"/>\n"
2669 " </signal>\n"
2670 " </interface>\n"
2671 "")
2672 
2673 public:
2674  ChannelInterfaceHoldAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2675  virtual ~ChannelInterfaceHoldAdaptor();
2676 
2677  typedef Tp::MethodInvocationContextPtr< uint, uint > GetHoldStateContextPtr;
2678  typedef Tp::MethodInvocationContextPtr< > RequestHoldContextPtr;
2679 
2680 public Q_SLOTS: // METHODS
2700  uint GetHoldState(const QDBusMessage& dbusMessage, uint& reason);
2766  void RequestHold(bool hold, const QDBusMessage& dbusMessage);
2767 
2768 Q_SIGNALS: // SIGNALS
2784  void HoldStateChanged(uint holdState, uint reason);
2785 };
2786 
2795 {
2796  Q_OBJECT
2797  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling")
2798  Q_CLASSINFO("D-Bus Introspection", ""
2799 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.MediaSignalling\">\n"
2800 " <method name=\"GetSessionHandlers\">\n"
2801 " <arg direction=\"out\" type=\"a(os)\" name=\"sessionHandlers\">\n"
2802 " <annotation value=\"Tp::MediaSessionHandlerInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
2803 " </arg>\n"
2804 " </method>\n"
2805 " <signal name=\"NewSessionHandler\">\n"
2806 " <arg type=\"o\" name=\"sessionHandler\"/>\n"
2807 " <arg type=\"s\" name=\"sessionType\"/>\n"
2808 " </signal>\n"
2809 " </interface>\n"
2810 "")
2811 
2812 public:
2813  ChannelInterfaceMediaSignallingAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2815 
2816  typedef Tp::MethodInvocationContextPtr< Tp::MediaSessionHandlerInfoList > GetSessionHandlersContextPtr;
2817 
2818 public Q_SLOTS: // METHODS
2834  Tp::MediaSessionHandlerInfoList GetSessionHandlers(const QDBusMessage& dbusMessage);
2835 
2836 Q_SIGNALS: // SIGNALS
2852  void NewSessionHandler(const QDBusObjectPath& sessionHandler, const QString& sessionType);
2853 };
2854 
2863 {
2864  Q_OBJECT
2865  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.MergeableConference.DRAFT")
2866  Q_CLASSINFO("D-Bus Introspection", ""
2867 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.MergeableConference.DRAFT\">\n"
2868 " <method name=\"Merge\">\n"
2869 " <arg direction=\"in\" type=\"o\" name=\"channel\"/>\n"
2870 " </method>\n"
2871 " </interface>\n"
2872 "")
2873 
2874 public:
2875  ChannelInterfaceMergeableConferenceAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2877 
2878  typedef Tp::MethodInvocationContextPtr< > MergeContextPtr;
2879 
2880 public Q_SLOTS: // METHODS
2920  void Merge(const QDBusObjectPath& channel, const QDBusMessage& dbusMessage);
2921 };
2922 
2931 {
2932  Q_OBJECT
2933  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Messages")
2934  Q_CLASSINFO("D-Bus Introspection", ""
2935 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Messages\">\n"
2936 " <property access=\"read\" type=\"as\" name=\"SupportedContentTypes\"/>\n"
2937 " <property access=\"read\" type=\"au\" name=\"MessageTypes\"/>\n"
2938 " <property access=\"read\" type=\"u\" name=\"MessagePartSupportFlags\"/>\n"
2939 " <property access=\"read\" type=\"aaa{sv}\" name=\"PendingMessages\">\n"
2940 " <annotation value=\"Tp::MessagePartListList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
2941 " </property>\n"
2942 " <property access=\"read\" type=\"u\" name=\"DeliveryReportingSupport\"/>\n"
2943 " <method name=\"SendMessage\">\n"
2944 " <arg direction=\"in\" type=\"aa{sv}\" name=\"message\">\n"
2945 " <annotation value=\"Tp::MessagePartList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2946 " </arg>\n"
2947 " <arg direction=\"in\" type=\"u\" name=\"flags\"/>\n"
2948 " <arg direction=\"out\" type=\"s\" name=\"token\"/>\n"
2949 " </method>\n"
2950 " <method name=\"GetPendingMessageContent\">\n"
2951 " <arg direction=\"in\" type=\"u\" name=\"messageID\"/>\n"
2952 " <arg direction=\"in\" type=\"au\" name=\"parts\"/>\n"
2953 " <arg direction=\"out\" type=\"a{uv}\" name=\"content\">\n"
2954 " <annotation value=\"Tp::MessagePartContentMap\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
2955 " </arg>\n"
2956 " </method>\n"
2957 " <signal name=\"MessageSent\">\n"
2958 " <arg type=\"aa{sv}\" name=\"content\">\n"
2959 " <annotation value=\"Tp::MessagePartList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2960 " </arg>\n"
2961 " <arg type=\"u\" name=\"flags\"/>\n"
2962 " <arg type=\"s\" name=\"messageToken\"/>\n"
2963 " </signal>\n"
2964 " <signal name=\"PendingMessagesRemoved\">\n"
2965 " <arg type=\"au\" name=\"messageIDs\"/>\n"
2966 " </signal>\n"
2967 " <signal name=\"MessageReceived\">\n"
2968 " <arg type=\"aa{sv}\" name=\"message\">\n"
2969 " <annotation value=\"Tp::MessagePartList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
2970 " </arg>\n"
2971 " </signal>\n"
2972 " </interface>\n"
2973 "")
2974  Q_PROPERTY(QStringList SupportedContentTypes READ SupportedContentTypes )
2975  Q_PROPERTY(Tp::UIntList MessageTypes READ MessageTypes )
2976  Q_PROPERTY(uint MessagePartSupportFlags READ MessagePartSupportFlags )
2977  Q_PROPERTY(Tp::MessagePartListList PendingMessages READ PendingMessages )
2978  Q_PROPERTY(uint DeliveryReportingSupport READ DeliveryReportingSupport )
2979 
2980 public:
2981  ChannelInterfaceMessagesAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
2983 
2984  typedef Tp::MethodInvocationContextPtr< QString > SendMessageContextPtr;
2985  typedef Tp::MethodInvocationContextPtr< Tp::MessagePartContentMap > GetPendingMessageContentContextPtr;
2986 
2987 public: // PROPERTIES
3043  QStringList SupportedContentTypes() const;
3057  Tp::UIntList MessageTypes() const;
3069  uint MessagePartSupportFlags() const;
3092  Tp::MessagePartListList PendingMessages() const;
3104  uint DeliveryReportingSupport() const;
3105 
3106 public Q_SLOTS: // METHODS
3169  QString SendMessage(const Tp::MessagePartList& message, uint flags, const QDBusMessage& dbusMessage);
3210  Tp::MessagePartContentMap GetPendingMessageContent(uint messageID, const Tp::UIntList& parts, const QDBusMessage& dbusMessage);
3211 
3212 Q_SIGNALS: // SIGNALS
3258  void MessageSent(const Tp::MessagePartList& content, uint flags, const QString& messageToken);
3271  void PendingMessagesRemoved(const Tp::UIntList& messageIDs);
3291  void MessageReceived(const Tp::MessagePartList& message);
3292 };
3293 
3302 {
3303  Q_OBJECT
3304  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Password")
3305  Q_CLASSINFO("D-Bus Introspection", ""
3306 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Password\">\n"
3307 " <method name=\"GetPasswordFlags\">\n"
3308 " <arg direction=\"out\" type=\"u\" name=\"passwordFlags\"/>\n"
3309 " </method>\n"
3310 " <method name=\"ProvidePassword\">\n"
3311 " <arg direction=\"in\" type=\"s\" name=\"password\"/>\n"
3312 " <arg direction=\"out\" type=\"b\" name=\"correct\"/>\n"
3313 " </method>\n"
3314 " <signal name=\"PasswordFlagsChanged\">\n"
3315 " <arg type=\"u\" name=\"added\"/>\n"
3316 " <arg type=\"u\" name=\"removed\"/>\n"
3317 " </signal>\n"
3318 " </interface>\n"
3319 "")
3320 
3321 public:
3322  ChannelInterfacePasswordAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
3324 
3325  typedef Tp::MethodInvocationContextPtr< uint > GetPasswordFlagsContextPtr;
3326  typedef Tp::MethodInvocationContextPtr< bool > ProvidePasswordContextPtr;
3327 
3328 public Q_SLOTS: // METHODS
3348  uint GetPasswordFlags(const QDBusMessage& dbusMessage);
3370  bool ProvidePassword(const QString& password, const QDBusMessage& dbusMessage);
3371 
3372 Q_SIGNALS: // SIGNALS
3388  void PasswordFlagsChanged(uint added, uint removed);
3389 };
3390 
3399 {
3400  Q_OBJECT
3401  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Room2")
3402  Q_CLASSINFO("D-Bus Introspection", ""
3403 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Room2\">\n"
3404 " <property access=\"read\" type=\"s\" name=\"RoomName\"/>\n"
3405 " <property access=\"read\" type=\"s\" name=\"Server\"/>\n"
3406 " <property access=\"read\" type=\"s\" name=\"Creator\"/>\n"
3407 " <property access=\"read\" type=\"u\" name=\"CreatorHandle\"/>\n"
3408 " <property access=\"read\" type=\"x\" name=\"CreationTimestamp\"/>\n"
3409 " </interface>\n"
3410 "")
3411  Q_PROPERTY(QString RoomName READ RoomName )
3412  Q_PROPERTY(QString Server READ Server )
3413  Q_PROPERTY(QString Creator READ Creator )
3414  Q_PROPERTY(uint CreatorHandle READ CreatorHandle )
3415  Q_PROPERTY(qlonglong CreationTimestamp READ CreationTimestamp )
3416 
3417 public:
3418  ChannelInterfaceRoomAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
3419  virtual ~ChannelInterfaceRoomAdaptor();
3420 
3421 
3422 public: // PROPERTIES
3450  QString RoomName() const;
3473  QString Server() const;
3488  QString Creator() const;
3503  uint CreatorHandle() const;
3518  qlonglong CreationTimestamp() const;
3519 };
3520 
3529 {
3530  Q_OBJECT
3531  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.RoomConfig1")
3532  Q_CLASSINFO("D-Bus Introspection", ""
3533 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.RoomConfig1\">\n"
3534 " <property access=\"read\" type=\"b\" name=\"Anonymous\"/>\n"
3535 " <property access=\"read\" type=\"b\" name=\"InviteOnly\"/>\n"
3536 " <property access=\"read\" type=\"u\" name=\"Limit\"/>\n"
3537 " <property access=\"read\" type=\"b\" name=\"Moderated\"/>\n"
3538 " <property access=\"read\" type=\"s\" name=\"Title\"/>\n"
3539 " <property access=\"read\" type=\"s\" name=\"Description\"/>\n"
3540 " <property access=\"read\" type=\"b\" name=\"Persistent\"/>\n"
3541 " <property access=\"read\" type=\"b\" name=\"Private\"/>\n"
3542 " <property access=\"read\" type=\"b\" name=\"PasswordProtected\"/>\n"
3543 " <property access=\"read\" type=\"s\" name=\"Password\"/>\n"
3544 " <property access=\"read\" type=\"s\" name=\"PasswordHint\"/>\n"
3545 " <property access=\"read\" type=\"b\" name=\"CanUpdateConfiguration\"/>\n"
3546 " <property access=\"read\" type=\"as\" name=\"MutableProperties\"/>\n"
3547 " <property access=\"read\" type=\"b\" name=\"ConfigurationRetrieved\"/>\n"
3548 " <method name=\"UpdateConfiguration\">\n"
3549 " <arg direction=\"in\" type=\"a{sv}\" name=\"properties\">\n"
3550 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
3551 " </arg>\n"
3552 " </method>\n"
3553 " </interface>\n"
3554 "")
3555  Q_PROPERTY(bool Anonymous READ Anonymous )
3556  Q_PROPERTY(bool InviteOnly READ InviteOnly )
3557  Q_PROPERTY(uint Limit READ Limit )
3558  Q_PROPERTY(bool Moderated READ Moderated )
3559  Q_PROPERTY(QString Title READ Title )
3560  Q_PROPERTY(QString Description READ Description )
3561  Q_PROPERTY(bool Persistent READ Persistent )
3562  Q_PROPERTY(bool Private READ Private )
3563  Q_PROPERTY(bool PasswordProtected READ PasswordProtected )
3564  Q_PROPERTY(QString Password READ Password )
3565  Q_PROPERTY(QString PasswordHint READ PasswordHint )
3566  Q_PROPERTY(bool CanUpdateConfiguration READ CanUpdateConfiguration )
3567  Q_PROPERTY(QStringList MutableProperties READ MutableProperties )
3568  Q_PROPERTY(bool ConfigurationRetrieved READ ConfigurationRetrieved )
3569 
3570 public:
3571  ChannelInterfaceRoomConfigAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
3573 
3574  typedef Tp::MethodInvocationContextPtr< > UpdateConfigurationContextPtr;
3575 
3576 public: // PROPERTIES
3589  bool Anonymous() const;
3601  bool InviteOnly() const;
3613  uint Limit() const;
3625  bool Moderated() const;
3657  QString Title() const;
3670  QString Description() const;
3685  bool Persistent() const;
3699  bool Private() const;
3717  bool PasswordProtected() const;
3741  QString Password() const;
3766  QString PasswordHint() const;
3783  bool CanUpdateConfiguration() const;
3808  QStringList MutableProperties() const;
3835  bool ConfigurationRetrieved() const;
3836 
3837 public Q_SLOTS: // METHODS
3882  void UpdateConfiguration(const QVariantMap& properties, const QDBusMessage& dbusMessage);
3883 };
3884 
3893 {
3894  Q_OBJECT
3895  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication")
3896  Q_CLASSINFO("D-Bus Introspection", ""
3897 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication\">\n"
3898 " <property access=\"read\" type=\"as\" name=\"AvailableMechanisms\"/>\n"
3899 " <property access=\"read\" type=\"b\" name=\"HasInitialData\"/>\n"
3900 " <property access=\"read\" type=\"b\" name=\"CanTryAgain\"/>\n"
3901 " <property access=\"read\" type=\"u\" name=\"SASLStatus\"/>\n"
3902 " <property access=\"read\" type=\"s\" name=\"SASLError\"/>\n"
3903 " <property access=\"read\" type=\"a{sv}\" name=\"SASLErrorDetails\"/>\n"
3904 " <property access=\"read\" type=\"s\" name=\"AuthorizationIdentity\"/>\n"
3905 " <property access=\"read\" type=\"s\" name=\"DefaultUsername\"/>\n"
3906 " <property access=\"read\" type=\"s\" name=\"DefaultRealm\"/>\n"
3907 " <property access=\"read\" type=\"b\" name=\"MaySaveResponse\"/>\n"
3908 " <method name=\"StartMechanism\">\n"
3909 " <arg direction=\"in\" type=\"s\" name=\"mechanism\"/>\n"
3910 " </method>\n"
3911 " <method name=\"StartMechanismWithData\">\n"
3912 " <arg direction=\"in\" type=\"s\" name=\"mechanism\"/>\n"
3913 " <arg direction=\"in\" type=\"ay\" name=\"initialData\"/>\n"
3914 " </method>\n"
3915 " <method name=\"Respond\">\n"
3916 " <arg direction=\"in\" type=\"ay\" name=\"responseData\"/>\n"
3917 " </method>\n"
3918 " <method name=\"AcceptSASL\"/>\n"
3919 " <method name=\"AbortSASL\">\n"
3920 " <arg direction=\"in\" type=\"u\" name=\"reason\"/>\n"
3921 " <arg direction=\"in\" type=\"s\" name=\"debugMessage\"/>\n"
3922 " </method>\n"
3923 " <signal name=\"SASLStatusChanged\">\n"
3924 " <arg type=\"u\" name=\"status\"/>\n"
3925 " <arg type=\"s\" name=\"reason\"/>\n"
3926 " <arg type=\"a{sv}\" name=\"details\"/>\n"
3927 " </signal>\n"
3928 " <signal name=\"NewChallenge\">\n"
3929 " <arg type=\"ay\" name=\"challengeData\"/>\n"
3930 " </signal>\n"
3931 " </interface>\n"
3932 "")
3933  Q_PROPERTY(QStringList AvailableMechanisms READ AvailableMechanisms )
3934  Q_PROPERTY(bool HasInitialData READ HasInitialData )
3935  Q_PROPERTY(bool CanTryAgain READ CanTryAgain )
3936  Q_PROPERTY(uint SASLStatus READ SASLStatus )
3937  Q_PROPERTY(QString SASLError READ SASLError )
3938  Q_PROPERTY(QVariantMap SASLErrorDetails READ SASLErrorDetails )
3939  Q_PROPERTY(QString AuthorizationIdentity READ AuthorizationIdentity )
3940  Q_PROPERTY(QString DefaultUsername READ DefaultUsername )
3941  Q_PROPERTY(QString DefaultRealm READ DefaultRealm )
3942  Q_PROPERTY(bool MaySaveResponse READ MaySaveResponse )
3943 
3944 public:
3945  ChannelInterfaceSASLAuthenticationAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
3947 
3948  typedef Tp::MethodInvocationContextPtr< > StartMechanismContextPtr;
3949  typedef Tp::MethodInvocationContextPtr< > StartMechanismWithDataContextPtr;
3950  typedef Tp::MethodInvocationContextPtr< > RespondContextPtr;
3951  typedef Tp::MethodInvocationContextPtr< > AcceptSASLContextPtr;
3952  typedef Tp::MethodInvocationContextPtr< > AbortSASLContextPtr;
3953 
3954 public: // PROPERTIES
3979  QStringList AvailableMechanisms() const;
4003  bool HasInitialData() const;
4026  bool CanTryAgain() const;
4042  uint SASLStatus() const;
4073  QString SASLError() const;
4097  QVariantMap SASLErrorDetails() const;
4164  QString AuthorizationIdentity() const;
4228  QString DefaultUsername() const;
4258  QString DefaultRealm() const;
4282  bool MaySaveResponse() const;
4283 
4284 public Q_SLOTS: // METHODS
4313  void StartMechanism(const QString& mechanism, const QDBusMessage& dbusMessage);
4369  void StartMechanismWithData(const QString& mechanism, const QByteArray& initialData, const QDBusMessage& dbusMessage);
4389  void Respond(const QByteArray& responseData, const QDBusMessage& dbusMessage);
4421  void AcceptSASL(const QDBusMessage& dbusMessage);
4451  void AbortSASL(uint reason, const QString& debugMessage, const QDBusMessage& dbusMessage);
4452 
4453 Q_SIGNALS: // SIGNALS
4472  void SASLStatusChanged(uint status, const QString& reason, const QVariantMap& details);
4485  void NewChallenge(const QByteArray& challengeData);
4486 };
4487 
4496 {
4497  Q_OBJECT
4498  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.SMS")
4499  Q_CLASSINFO("D-Bus Introspection", ""
4500 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.SMS\">\n"
4501 " <property access=\"read\" type=\"b\" name=\"Flash\"/>\n"
4502 " <property access=\"read\" type=\"b\" name=\"SMSChannel\"/>\n"
4503 " <method name=\"GetSMSLength\">\n"
4504 " <arg direction=\"in\" type=\"aa{sv}\" name=\"message\">\n"
4505 " <annotation value=\"Tp::MessagePartList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4506 " </arg>\n"
4507 " <arg direction=\"out\" type=\"u\" name=\"chunksRequired\"/>\n"
4508 " <arg direction=\"out\" type=\"i\" name=\"remainingCharacters\"/>\n"
4509 " <arg direction=\"out\" type=\"i\" name=\"estimatedCost\"/>\n"
4510 " </method>\n"
4511 " <signal name=\"SMSChannelChanged\">\n"
4512 " <arg type=\"b\" name=\"SMSChannel\"/>\n"
4513 " </signal>\n"
4514 " </interface>\n"
4515 "")
4516  Q_PROPERTY(bool Flash READ Flash )
4517  Q_PROPERTY(bool SMSChannel READ SMSChannel )
4518 
4519 public:
4520  ChannelInterfaceSMSAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4521  virtual ~ChannelInterfaceSMSAdaptor();
4522 
4523  typedef Tp::MethodInvocationContextPtr< uint, int, int > GetSMSLengthContextPtr;
4524 
4525 public: // PROPERTIES
4567  bool Flash() const;
4632  bool SMSChannel() const;
4633 
4634 public Q_SLOTS: // METHODS
4698  uint GetSMSLength(const Tp::MessagePartList& message, const QDBusMessage& dbusMessage, int& remainingCharacters, int& estimatedCost);
4699 
4700 Q_SIGNALS: // SIGNALS
4713  void SMSChannelChanged(bool SMSChannel);
4714 };
4715 
4724 {
4725  Q_OBJECT
4726  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Securable")
4727  Q_CLASSINFO("D-Bus Introspection", ""
4728 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Securable\">\n"
4729 " <property access=\"read\" type=\"b\" name=\"Encrypted\"/>\n"
4730 " <property access=\"read\" type=\"b\" name=\"Verified\"/>\n"
4731 " </interface>\n"
4732 "")
4733  Q_PROPERTY(bool Encrypted READ Encrypted )
4734  Q_PROPERTY(bool Verified READ Verified )
4735 
4736 public:
4737  ChannelInterfaceSecurableAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4739 
4740 
4741 public: // PROPERTIES
4765  bool Encrypted() const;
4784  bool Verified() const;
4785 };
4786 
4795 {
4796  Q_OBJECT
4797  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.ServicePoint")
4798  Q_CLASSINFO("D-Bus Introspection", ""
4799 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.ServicePoint\">\n"
4800 " <property access=\"read\" type=\"(us)\" name=\"InitialServicePoint\">\n"
4801 " <annotation value=\"Tp::ServicePoint\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
4802 " </property>\n"
4803 " <property access=\"read\" type=\"(us)\" name=\"CurrentServicePoint\">\n"
4804 " <annotation value=\"Tp::ServicePoint\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
4805 " </property>\n"
4806 " <signal name=\"ServicePointChanged\">\n"
4807 " <arg type=\"(us)\" name=\"servicePoint\">\n"
4808 " <annotation value=\"Tp::ServicePoint\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
4809 " </arg>\n"
4810 " </signal>\n"
4811 " </interface>\n"
4812 "")
4813  Q_PROPERTY(Tp::ServicePoint InitialServicePoint READ InitialServicePoint )
4814  Q_PROPERTY(Tp::ServicePoint CurrentServicePoint READ CurrentServicePoint )
4815 
4816 public:
4817  ChannelInterfaceServicePointAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4819 
4820 
4821 public: // PROPERTIES
4843  Tp::ServicePoint InitialServicePoint() const;
4858  Tp::ServicePoint CurrentServicePoint() const;
4859 
4860 Q_SIGNALS: // SIGNALS
4873  void ServicePointChanged(const Tp::ServicePoint& servicePoint);
4874 };
4875 
4884 {
4885  Q_OBJECT
4886  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Splittable.DRAFT")
4887  Q_CLASSINFO("D-Bus Introspection", ""
4888 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Splittable.DRAFT\">\n"
4889 " <method name=\"Split\"/>\n"
4890 " </interface>\n"
4891 "")
4892 
4893 public:
4894  ChannelInterfaceSplittableAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4896 
4897  typedef Tp::MethodInvocationContextPtr< > SplitContextPtr;
4898 
4899 public Q_SLOTS: // METHODS
4920  void Split(const QDBusMessage& dbusMessage);
4921 };
4922 
4931 {
4932  Q_OBJECT
4933  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Subject2")
4934  Q_CLASSINFO("D-Bus Introspection", ""
4935 " <interface name=\"org.freedesktop.Telepathy.Channel.Interface.Subject2\">\n"
4936 " <property access=\"read\" type=\"s\" name=\"Subject\"/>\n"
4937 " <property access=\"read\" type=\"s\" name=\"Actor\"/>\n"
4938 " <property access=\"read\" type=\"u\" name=\"ActorHandle\"/>\n"
4939 " <property access=\"read\" type=\"x\" name=\"Timestamp\"/>\n"
4940 " <property access=\"read\" type=\"b\" name=\"CanSet\"/>\n"
4941 " <method name=\"SetSubject\">\n"
4942 " <arg direction=\"in\" type=\"s\" name=\"subject\"/>\n"
4943 " </method>\n"
4944 " </interface>\n"
4945 "")
4946  Q_PROPERTY(QString Subject READ Subject )
4947  Q_PROPERTY(QString Actor READ Actor )
4948  Q_PROPERTY(uint ActorHandle READ ActorHandle )
4949  Q_PROPERTY(qlonglong Timestamp READ Timestamp )
4950  Q_PROPERTY(bool CanSet READ CanSet )
4951 
4952 public:
4953  ChannelInterfaceSubjectAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
4954  virtual ~ChannelInterfaceSubjectAdaptor();
4955 
4956  typedef Tp::MethodInvocationContextPtr< > SetSubjectContextPtr;
4957 
4958 public: // PROPERTIES
4980  QString Subject() const;
4999  QString Actor() const;
5014  uint ActorHandle() const;
5033  qlonglong Timestamp() const;
5060  bool CanSet() const;
5061 
5062 public Q_SLOTS: // METHODS
5088  void SetSubject(const QString& subject, const QDBusMessage& dbusMessage);
5089 };
5090 
5098 class TP_QT_EXPORT ChannelTypeCallAdaptor : public Tp::AbstractAdaptor
5099 {
5100  Q_OBJECT
5101  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.Call1")
5102  Q_CLASSINFO("D-Bus Introspection", ""
5103 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.Call1\">\n"
5104 " <property access=\"read\" type=\"ao\" name=\"Contents\"/>\n"
5105 " <property access=\"read\" type=\"a{sv}\" name=\"CallStateDetails\"/>\n"
5106 " <property access=\"read\" type=\"u\" name=\"CallState\"/>\n"
5107 " <property access=\"read\" type=\"u\" name=\"CallFlags\"/>\n"
5108 " <property access=\"read\" type=\"(uuss)\" name=\"CallStateReason\">\n"
5109 " <annotation value=\"Tp::CallStateReason\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
5110 " </property>\n"
5111 " <property access=\"read\" type=\"b\" name=\"HardwareStreaming\"/>\n"
5112 " <property access=\"read\" type=\"a{uu}\" name=\"CallMembers\">\n"
5113 " <annotation value=\"Tp::CallMemberMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
5114 " </property>\n"
5115 " <property access=\"read\" type=\"a{us}\" name=\"MemberIdentifiers\">\n"
5116 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
5117 " </property>\n"
5118 " <property access=\"read\" type=\"u\" name=\"InitialTransport\"/>\n"
5119 " <property access=\"read\" type=\"b\" name=\"InitialAudio\"/>\n"
5120 " <property access=\"read\" type=\"b\" name=\"InitialVideo\"/>\n"
5121 " <property access=\"read\" type=\"s\" name=\"InitialAudioName\"/>\n"
5122 " <property access=\"read\" type=\"s\" name=\"InitialVideoName\"/>\n"
5123 " <property access=\"read\" type=\"b\" name=\"MutableContents\"/>\n"
5124 " <method name=\"SetRinging\"/>\n"
5125 " <method name=\"SetQueued\"/>\n"
5126 " <method name=\"Accept\"/>\n"
5127 " <method name=\"Hangup\">\n"
5128 " <arg direction=\"in\" type=\"u\" name=\"reason\"/>\n"
5129 " <arg direction=\"in\" type=\"s\" name=\"detailedHangupReason\"/>\n"
5130 " <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
5131 " </method>\n"
5132 " <method name=\"AddContent\">\n"
5133 " <arg direction=\"in\" type=\"s\" name=\"contentName\"/>\n"
5134 " <arg direction=\"in\" type=\"u\" name=\"contentType\"/>\n"
5135 " <arg direction=\"in\" type=\"u\" name=\"initialDirection\"/>\n"
5136 " <arg direction=\"out\" type=\"o\" name=\"content\"/>\n"
5137 " </method>\n"
5138 " <signal name=\"ContentAdded\">\n"
5139 " <arg type=\"o\" name=\"content\"/>\n"
5140 " </signal>\n"
5141 " <signal name=\"ContentRemoved\">\n"
5142 " <arg type=\"o\" name=\"content\"/>\n"
5143 " <arg type=\"(uuss)\" name=\"reason\">\n"
5144 " <annotation value=\"Tp::CallStateReason\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
5145 " </arg>\n"
5146 " </signal>\n"
5147 " <signal name=\"CallStateChanged\">\n"
5148 " <arg type=\"u\" name=\"callState\"/>\n"
5149 " <arg type=\"u\" name=\"callFlags\"/>\n"
5150 " <arg type=\"(uuss)\" name=\"callStateReason\">\n"
5151 " <annotation value=\"Tp::CallStateReason\" name=\"com.trolltech.QtDBus.QtTypeName.In2\"/>\n"
5152 " </arg>\n"
5153 " <arg type=\"a{sv}\" name=\"callStateDetails\"/>\n"
5154 " </signal>\n"
5155 " <signal name=\"CallMembersChanged\">\n"
5156 " <arg type=\"a{uu}\" name=\"flagsChanged\">\n"
5157 " <annotation value=\"Tp::CallMemberMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
5158 " </arg>\n"
5159 " <arg type=\"a{us}\" name=\"identifiers\">\n"
5160 " <annotation value=\"Tp::HandleIdentifierMap\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
5161 " </arg>\n"
5162 " <arg type=\"au\" name=\"removed\"/>\n"
5163 " <arg type=\"(uuss)\" name=\"reason\">\n"
5164 " <annotation value=\"Tp::CallStateReason\" name=\"com.trolltech.QtDBus.QtTypeName.In3\"/>\n"
5165 " </arg>\n"
5166 " </signal>\n"
5167 " </interface>\n"
5168 "")
5169  Q_PROPERTY(Tp::ObjectPathList Contents READ Contents )
5170  Q_PROPERTY(QVariantMap CallStateDetails READ CallStateDetails )
5171  Q_PROPERTY(uint CallState READ CallState )
5172  Q_PROPERTY(uint CallFlags READ CallFlags )
5174  Q_PROPERTY(bool HardwareStreaming READ HardwareStreaming )
5175  Q_PROPERTY(Tp::CallMemberMap CallMembers READ CallMembers )
5176  Q_PROPERTY(Tp::HandleIdentifierMap MemberIdentifiers READ MemberIdentifiers )
5177  Q_PROPERTY(uint InitialTransport READ InitialTransport )
5178  Q_PROPERTY(bool InitialAudio READ InitialAudio )
5179  Q_PROPERTY(bool InitialVideo READ InitialVideo )
5180  Q_PROPERTY(QString InitialAudioName READ InitialAudioName )
5181  Q_PROPERTY(QString InitialVideoName READ InitialVideoName )
5182  Q_PROPERTY(bool MutableContents READ MutableContents )
5183 
5184 public:
5185  ChannelTypeCallAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
5186  virtual ~ChannelTypeCallAdaptor();
5187 
5188  typedef Tp::MethodInvocationContextPtr< > SetRingingContextPtr;
5189  typedef Tp::MethodInvocationContextPtr< > SetQueuedContextPtr;
5190  typedef Tp::MethodInvocationContextPtr< > AcceptContextPtr;
5191  typedef Tp::MethodInvocationContextPtr< > HangupContextPtr;
5192  typedef Tp::MethodInvocationContextPtr< QDBusObjectPath > AddContentContextPtr;
5193 
5194 public: // PROPERTIES
5212  Tp::ObjectPathList Contents() const;
5278  QVariantMap CallStateDetails() const;
5305  uint CallState() const;
5327  uint CallFlags() const;
5345  Tp::CallStateReason CallStateReason() const;
5381  bool HardwareStreaming() const;
5409  Tp::CallMemberMap CallMembers() const;
5423  Tp::HandleIdentifierMap MemberIdentifiers() const;
5447  uint InitialTransport() const;
5519  bool InitialAudio() const;
5542  bool InitialVideo() const;
5572  QString InitialAudioName() const;
5590  QString InitialVideoName() const;
5624  bool MutableContents() const;
5625 
5626 public Q_SLOTS: // METHODS
5658  void SetRinging(const QDBusMessage& dbusMessage);
5692  void SetQueued(const QDBusMessage& dbusMessage);
5730  void Accept(const QDBusMessage& dbusMessage);
5756  void Hangup(uint reason, const QString& detailedHangupReason, const QString& message, const QDBusMessage& dbusMessage);
5794  QDBusObjectPath AddContent(const QString& contentName, uint contentType, uint initialDirection, const QDBusMessage& dbusMessage);
5795 
5796 Q_SIGNALS: // SIGNALS
5809  void ContentAdded(const QDBusObjectPath& content);
5825  void ContentRemoved(const QDBusObjectPath& content, const Tp::CallStateReason& reason);
5847  void CallStateChanged(uint callState, uint callFlags, const Tp::CallStateReason& callStateReason, const QVariantMap& callStateDetails);
5874  void CallMembersChanged(const Tp::CallMemberMap& flagsChanged, const Tp::HandleIdentifierMap& identifiers, const Tp::UIntList& removed, const Tp::CallStateReason& reason);
5875 };
5876 
5885 {
5886  Q_OBJECT
5887  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.ContactSearch")
5888  Q_CLASSINFO("D-Bus Introspection", ""
5889 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.ContactSearch\">\n"
5890 " <property access=\"read\" type=\"u\" name=\"SearchState\"/>\n"
5891 " <property access=\"read\" type=\"u\" name=\"Limit\"/>\n"
5892 " <property access=\"read\" type=\"as\" name=\"AvailableSearchKeys\"/>\n"
5893 " <property access=\"read\" type=\"s\" name=\"Server\"/>\n"
5894 " <method name=\"Search\">\n"
5895 " <arg direction=\"in\" type=\"a{ss}\" name=\"terms\">\n"
5896 " <annotation value=\"Tp::ContactSearchMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
5897 " </arg>\n"
5898 " </method>\n"
5899 " <method name=\"More\"/>\n"
5900 " <method name=\"Stop\"/>\n"
5901 " <signal name=\"SearchStateChanged\">\n"
5902 " <arg type=\"u\" name=\"state\"/>\n"
5903 " <arg type=\"s\" name=\"error\"/>\n"
5904 " <arg type=\"a{sv}\" name=\"details\"/>\n"
5905 " </signal>\n"
5906 " <signal name=\"SearchResultReceived\">\n"
5907 " <arg type=\"a{sa(sasas)}\" name=\"result\">\n"
5908 " <annotation value=\"Tp::ContactSearchResultMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
5909 " </arg>\n"
5910 " </signal>\n"
5911 " </interface>\n"
5912 "")
5913  Q_PROPERTY(uint SearchState READ SearchState )
5914  Q_PROPERTY(uint Limit READ Limit )
5915  Q_PROPERTY(QStringList AvailableSearchKeys READ AvailableSearchKeys )
5916  Q_PROPERTY(QString Server READ Server )
5917 
5918 public:
5919  ChannelTypeContactSearchAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
5921 
5922  typedef Tp::MethodInvocationContextPtr< > SearchContextPtr;
5923  typedef Tp::MethodInvocationContextPtr< > MoreContextPtr;
5924  typedef Tp::MethodInvocationContextPtr< > StopContextPtr;
5925 
5926 public: // PROPERTIES
5939  uint SearchState() const;
5967  uint Limit() const;
5984  QStringList AvailableSearchKeys() const;
6007  QString Server() const;
6008 
6009 public Q_SLOTS: // METHODS
6029  void Search(const Tp::ContactSearchMap& terms, const QDBusMessage& dbusMessage);
6047  void More(const QDBusMessage& dbusMessage);
6083  void Stop(const QDBusMessage& dbusMessage);
6084 
6085 Q_SIGNALS: // SIGNALS
6124  void SearchStateChanged(uint state, const QString& error, const QVariantMap& details);
6138  void SearchResultReceived(const Tp::ContactSearchResultMap& result);
6139 };
6140 
6149 {
6150  Q_OBJECT
6151  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.DBusTube")
6152  Q_CLASSINFO("D-Bus Introspection", ""
6153 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.DBusTube\">\n"
6154 " <property access=\"read\" type=\"s\" name=\"ServiceName\"/>\n"
6155 " <property access=\"read\" type=\"a{us}\" name=\"DBusNames\">\n"
6156 " <annotation value=\"Tp::DBusTubeParticipants\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
6157 " </property>\n"
6158 " <property access=\"read\" type=\"au\" name=\"SupportedAccessControls\"/>\n"
6159 " <method name=\"Offer\">\n"
6160 " <arg direction=\"in\" type=\"a{sv}\" name=\"parameters\">\n"
6161 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
6162 " </arg>\n"
6163 " <arg direction=\"in\" type=\"u\" name=\"accesscontrol\"/>\n"
6164 " <arg direction=\"out\" type=\"s\" name=\"address\"/>\n"
6165 " </method>\n"
6166 " <method name=\"Accept\">\n"
6167 " <arg direction=\"in\" type=\"u\" name=\"accesscontrol\"/>\n"
6168 " <arg direction=\"out\" type=\"s\" name=\"address\"/>\n"
6169 " </method>\n"
6170 " <signal name=\"DBusNamesChanged\">\n"
6171 " <arg type=\"a{us}\" name=\"added\">\n"
6172 " <annotation value=\"Tp::DBusTubeParticipants\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
6173 " </arg>\n"
6174 " <arg type=\"au\" name=\"removed\"/>\n"
6175 " </signal>\n"
6176 " </interface>\n"
6177 "")
6178  Q_PROPERTY(QString ServiceName READ ServiceName )
6179  Q_PROPERTY(Tp::DBusTubeParticipants DBusNames READ DBusNames )
6180  Q_PROPERTY(Tp::UIntList SupportedAccessControls READ SupportedAccessControls )
6181 
6182 public:
6183  ChannelTypeDBusTubeAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
6184  virtual ~ChannelTypeDBusTubeAdaptor();
6185 
6186  typedef Tp::MethodInvocationContextPtr< QString > OfferContextPtr;
6187  typedef Tp::MethodInvocationContextPtr< QString > AcceptContextPtr;
6188 
6189 public: // PROPERTIES
6210  QString ServiceName() const;
6225  Tp::DBusTubeParticipants DBusNames() const;
6255  Tp::UIntList SupportedAccessControls() const;
6256 
6257 public Q_SLOTS: // METHODS
6282  QString Offer(const QVariantMap& parameters, uint accesscontrol, const QDBusMessage& dbusMessage);
6307  QString Accept(uint accesscontrol, const QDBusMessage& dbusMessage);
6308 
6309 Q_SIGNALS: // SIGNALS
6325  void DBusNamesChanged(const Tp::DBusTubeParticipants& added, const Tp::UIntList& removed);
6326 };
6327 
6336 {
6337  Q_OBJECT
6338  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.FileTransfer")
6339  Q_CLASSINFO("D-Bus Introspection", ""
6340 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.FileTransfer\">\n"
6341 " <property access=\"read\" type=\"u\" name=\"State\"/>\n"
6342 " <property access=\"read\" type=\"s\" name=\"ContentType\"/>\n"
6343 " <property access=\"read\" type=\"s\" name=\"Filename\"/>\n"
6344 " <property access=\"read\" type=\"t\" name=\"Size\"/>\n"
6345 " <property access=\"read\" type=\"u\" name=\"ContentHashType\"/>\n"
6346 " <property access=\"read\" type=\"s\" name=\"ContentHash\"/>\n"
6347 " <property access=\"read\" type=\"s\" name=\"Description\"/>\n"
6348 " <property access=\"read\" type=\"x\" name=\"Date\"/>\n"
6349 " <property access=\"read\" type=\"a{uau}\" name=\"AvailableSocketTypes\">\n"
6350 " <annotation value=\"Tp::SupportedSocketMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
6351 " </property>\n"
6352 " <property access=\"read\" type=\"t\" name=\"TransferredBytes\"/>\n"
6353 " <property access=\"read\" type=\"t\" name=\"InitialOffset\"/>\n"
6354 " <property access=\"readwrite\" type=\"s\" name=\"URI\"/>\n"
6355 " <property access=\"read\" type=\"s\" name=\"FileCollection\"/>\n"
6356 " <method name=\"AcceptFile\">\n"
6357 " <arg direction=\"in\" type=\"u\" name=\"addressType\"/>\n"
6358 " <arg direction=\"in\" type=\"u\" name=\"accessControl\"/>\n"
6359 " <arg direction=\"in\" type=\"v\" name=\"accessControlParam\"/>\n"
6360 " <arg direction=\"in\" type=\"t\" name=\"offset\"/>\n"
6361 " <arg direction=\"out\" type=\"v\" name=\"address\"/>\n"
6362 " </method>\n"
6363 " <method name=\"ProvideFile\">\n"
6364 " <arg direction=\"in\" type=\"u\" name=\"addressType\"/>\n"
6365 " <arg direction=\"in\" type=\"u\" name=\"accessControl\"/>\n"
6366 " <arg direction=\"in\" type=\"v\" name=\"accessControlParam\"/>\n"
6367 " <arg direction=\"out\" type=\"v\" name=\"address\"/>\n"
6368 " </method>\n"
6369 " <signal name=\"FileTransferStateChanged\">\n"
6370 " <arg type=\"u\" name=\"state\"/>\n"
6371 " <arg type=\"u\" name=\"reason\"/>\n"
6372 " </signal>\n"
6373 " <signal name=\"TransferredBytesChanged\">\n"
6374 " <arg type=\"t\" name=\"count\"/>\n"
6375 " </signal>\n"
6376 " <signal name=\"InitialOffsetDefined\">\n"
6377 " <arg type=\"t\" name=\"initialOffset\"/>\n"
6378 " </signal>\n"
6379 " <signal name=\"URIDefined\">\n"
6380 " <arg type=\"s\" name=\"URI\"/>\n"
6381 " </signal>\n"
6382 " </interface>\n"
6383 "")
6384  Q_PROPERTY(uint State READ State )
6385  Q_PROPERTY(QString ContentType READ ContentType )
6386  Q_PROPERTY(QString Filename READ Filename )
6387  Q_PROPERTY(qulonglong Size READ Size )
6388  Q_PROPERTY(uint ContentHashType READ ContentHashType )
6389  Q_PROPERTY(QString ContentHash READ ContentHash )
6390  Q_PROPERTY(QString Description READ Description )
6391  Q_PROPERTY(qlonglong Date READ Date )
6392  Q_PROPERTY(Tp::SupportedSocketMap AvailableSocketTypes READ AvailableSocketTypes )
6393  Q_PROPERTY(qulonglong TransferredBytes READ TransferredBytes )
6394  Q_PROPERTY(qulonglong InitialOffset READ InitialOffset )
6395  Q_PROPERTY(QString URI READ URI WRITE SetURI)
6396  Q_PROPERTY(QString FileCollection READ FileCollection )
6397 
6398 public:
6399  ChannelTypeFileTransferAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
6400  virtual ~ChannelTypeFileTransferAdaptor();
6401 
6402  typedef Tp::MethodInvocationContextPtr< QDBusVariant > AcceptFileContextPtr;
6403  typedef Tp::MethodInvocationContextPtr< QDBusVariant > ProvideFileContextPtr;
6404 
6405 public: // PROPERTIES
6420  uint State() const;
6440  QString ContentType() const;
6464  QString Filename() const;
6490  qulonglong Size() const;
6519  uint ContentHashType() const;
6542  QString ContentHash() const;
6562  QString Description() const;
6581  qlonglong Date() const;
6612  Tp::SupportedSocketMap AvailableSocketTypes() const;
6628  qulonglong TransferredBytes() const;
6653  qulonglong InitialOffset() const;
6691  QString URI() const;
6727  void SetURI(const QString &newValue);
6762  QString FileCollection() const;
6763 
6764 public Q_SLOTS: // METHODS
6807  QDBusVariant AcceptFile(uint addressType, uint accessControl, const QDBusVariant& accessControlParam, qulonglong offset, const QDBusMessage& dbusMessage);
6840  QDBusVariant ProvideFile(uint addressType, uint accessControl, const QDBusVariant& accessControlParam, const QDBusMessage& dbusMessage);
6841 
6842 Q_SIGNALS: // SIGNALS
6862  void FileTransferStateChanged(uint state, uint reason);
6875  void TransferredBytesChanged(qulonglong count);
6888  void InitialOffsetDefined(qulonglong initialOffset);
6901  void URIDefined(const QString& URI);
6902 };
6903 
6912 {
6913  Q_OBJECT
6914  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.RoomList")
6915  Q_CLASSINFO("D-Bus Introspection", ""
6916 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.RoomList\">\n"
6917 " <property access=\"read\" type=\"s\" name=\"Server\"/>\n"
6918 " <method name=\"GetListingRooms\">\n"
6919 " <arg direction=\"out\" type=\"b\" name=\"inProgress\"/>\n"
6920 " </method>\n"
6921 " <method name=\"ListRooms\"/>\n"
6922 " <method name=\"StopListing\"/>\n"
6923 " <signal name=\"GotRooms\">\n"
6924 " <arg type=\"a(usa{sv})\" name=\"rooms\">\n"
6925 " <annotation value=\"Tp::RoomInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
6926 " </arg>\n"
6927 " </signal>\n"
6928 " <signal name=\"ListingRooms\">\n"
6929 " <arg type=\"b\" name=\"listing\"/>\n"
6930 " </signal>\n"
6931 " </interface>\n"
6932 "")
6933  Q_PROPERTY(QString Server READ Server )
6934 
6935 public:
6936  ChannelTypeRoomListAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
6937  virtual ~ChannelTypeRoomListAdaptor();
6938 
6939  typedef Tp::MethodInvocationContextPtr< bool > GetListingRoomsContextPtr;
6940  typedef Tp::MethodInvocationContextPtr< > ListRoomsContextPtr;
6941  typedef Tp::MethodInvocationContextPtr< > StopListingContextPtr;
6942 
6943 public: // PROPERTIES
6959  QString Server() const;
6960 
6961 public Q_SLOTS: // METHODS
6979  bool GetListingRooms(const QDBusMessage& dbusMessage);
6996  void ListRooms(const QDBusMessage& dbusMessage);
7012  void StopListing(const QDBusMessage& dbusMessage);
7013 
7014 Q_SIGNALS: // SIGNALS
7034  void GotRooms(const Tp::RoomInfoList& rooms);
7047  void ListingRooms(bool listing);
7048 };
7049 
7058 {
7059  Q_OBJECT
7060  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.ServerAuthentication")
7061  Q_CLASSINFO("D-Bus Introspection", ""
7062 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.ServerAuthentication\">\n"
7063 " <property access=\"read\" type=\"s\" name=\"AuthenticationMethod\"/>\n"
7064 " </interface>\n"
7065 "")
7066  Q_PROPERTY(QString AuthenticationMethod READ AuthenticationMethod )
7067 
7068 public:
7069  ChannelTypeServerAuthenticationAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
7071 
7072 
7073 public: // PROPERTIES
7092  QString AuthenticationMethod() const;
7093 };
7094 
7103 {
7104  Q_OBJECT
7105  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection")
7106  Q_CLASSINFO("D-Bus Introspection", ""
7107 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection\">\n"
7108 " <property access=\"read\" type=\"o\" name=\"ServerCertificate\"/>\n"
7109 " <property access=\"read\" type=\"s\" name=\"Hostname\"/>\n"
7110 " <property access=\"read\" type=\"as\" name=\"ReferenceIdentities\"/>\n"
7111 " </interface>\n"
7112 "")
7113  Q_PROPERTY(QDBusObjectPath ServerCertificate READ ServerCertificate )
7114  Q_PROPERTY(QString Hostname READ Hostname )
7115  Q_PROPERTY(QStringList ReferenceIdentities READ ReferenceIdentities )
7116 
7117 public:
7118  ChannelTypeServerTLSConnectionAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
7120 
7121 
7122 public: // PROPERTIES
7135  QDBusObjectPath ServerCertificate() const;
7151  QString Hostname() const;
7180  QStringList ReferenceIdentities() const;
7181 };
7182 
7191 {
7192  Q_OBJECT
7193  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.StreamTube")
7194  Q_CLASSINFO("D-Bus Introspection", ""
7195 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.StreamTube\">\n"
7196 " <property access=\"read\" type=\"s\" name=\"Service\"/>\n"
7197 " <property access=\"read\" type=\"a{uau}\" name=\"SupportedSocketTypes\">\n"
7198 " <annotation value=\"Tp::SupportedSocketMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
7199 " </property>\n"
7200 " <method name=\"Offer\">\n"
7201 " <arg direction=\"in\" type=\"u\" name=\"addresstype\"/>\n"
7202 " <arg direction=\"in\" type=\"v\" name=\"address\"/>\n"
7203 " <arg direction=\"in\" type=\"u\" name=\"accesscontrol\"/>\n"
7204 " <arg direction=\"in\" type=\"a{sv}\" name=\"parameters\">\n"
7205 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In3\"/>\n"
7206 " </arg>\n"
7207 " </method>\n"
7208 " <method name=\"Accept\">\n"
7209 " <arg direction=\"in\" type=\"u\" name=\"addresstype\"/>\n"
7210 " <arg direction=\"in\" type=\"u\" name=\"accesscontrol\"/>\n"
7211 " <arg direction=\"in\" type=\"v\" name=\"accesscontrolparam\"/>\n"
7212 " <arg direction=\"out\" type=\"v\" name=\"address\"/>\n"
7213 " </method>\n"
7214 " <signal name=\"NewRemoteConnection\">\n"
7215 " <arg type=\"u\" name=\"handle\"/>\n"
7216 " <arg type=\"v\" name=\"connectionParam\"/>\n"
7217 " <arg type=\"u\" name=\"connectionID\"/>\n"
7218 " </signal>\n"
7219 " <signal name=\"NewLocalConnection\">\n"
7220 " <arg type=\"u\" name=\"connectionID\"/>\n"
7221 " </signal>\n"
7222 " <signal name=\"ConnectionClosed\">\n"
7223 " <arg type=\"u\" name=\"connectionID\"/>\n"
7224 " <arg type=\"s\" name=\"error\"/>\n"
7225 " <arg type=\"s\" name=\"message\"/>\n"
7226 " </signal>\n"
7227 " </interface>\n"
7228 "")
7229  Q_PROPERTY(QString Service READ Service )
7230  Q_PROPERTY(Tp::SupportedSocketMap SupportedSocketTypes READ SupportedSocketTypes )
7231 
7232 public:
7233  ChannelTypeStreamTubeAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
7234  virtual ~ChannelTypeStreamTubeAdaptor();
7235 
7236  typedef Tp::MethodInvocationContextPtr< > OfferContextPtr;
7237  typedef Tp::MethodInvocationContextPtr< QDBusVariant > AcceptContextPtr;
7238 
7239 public: // PROPERTIES
7264  QString Service() const;
7301  Tp::SupportedSocketMap SupportedSocketTypes() const;
7302 
7303 public Q_SLOTS: // METHODS
7333  void Offer(uint addresstype, const QDBusVariant& address, uint accesscontrol, const QVariantMap& parameters, const QDBusMessage& dbusMessage);
7373  QDBusVariant Accept(uint addresstype, uint accesscontrol, const QDBusVariant& accesscontrolparam, const QDBusMessage& dbusMessage);
7374 
7375 Q_SIGNALS: // SIGNALS
7412  void NewRemoteConnection(uint handle, const QDBusVariant& connectionParam, uint connectionID);
7427  void NewLocalConnection(uint connectionID);
7458  void ConnectionClosed(uint connectionID, const QString& error, const QString& message);
7459 };
7460 
7469 {
7470  Q_OBJECT
7471  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.StreamedMedia")
7472  Q_CLASSINFO("D-Bus Introspection", ""
7473 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.StreamedMedia\">\n"
7474 " <property access=\"read\" type=\"b\" name=\"InitialAudio\"/>\n"
7475 " <property access=\"read\" type=\"b\" name=\"InitialVideo\"/>\n"
7476 " <property access=\"read\" type=\"b\" name=\"ImmutableStreams\"/>\n"
7477 " <method name=\"ListStreams\">\n"
7478 " <arg direction=\"out\" type=\"a(uuuuuu)\" name=\"streams\">\n"
7479 " <annotation value=\"Tp::MediaStreamInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
7480 " </arg>\n"
7481 " </method>\n"
7482 " <method name=\"RemoveStreams\">\n"
7483 " <arg direction=\"in\" type=\"au\" name=\"streams\"/>\n"
7484 " </method>\n"
7485 " <method name=\"RequestStreamDirection\">\n"
7486 " <arg direction=\"in\" type=\"u\" name=\"streamID\"/>\n"
7487 " <arg direction=\"in\" type=\"u\" name=\"streamDirection\"/>\n"
7488 " </method>\n"
7489 " <method name=\"RequestStreams\">\n"
7490 " <arg direction=\"in\" type=\"u\" name=\"contactHandle\"/>\n"
7491 " <arg direction=\"in\" type=\"au\" name=\"types\"/>\n"
7492 " <arg direction=\"out\" type=\"a(uuuuuu)\" name=\"streams\">\n"
7493 " <annotation value=\"Tp::MediaStreamInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
7494 " </arg>\n"
7495 " </method>\n"
7496 " <signal name=\"StreamAdded\">\n"
7497 " <arg type=\"u\" name=\"streamID\"/>\n"
7498 " <arg type=\"u\" name=\"contactHandle\"/>\n"
7499 " <arg type=\"u\" name=\"streamType\"/>\n"
7500 " </signal>\n"
7501 " <signal name=\"StreamDirectionChanged\">\n"
7502 " <arg type=\"u\" name=\"streamID\"/>\n"
7503 " <arg type=\"u\" name=\"streamDirection\"/>\n"
7504 " <arg type=\"u\" name=\"pendingFlags\"/>\n"
7505 " </signal>\n"
7506 " <signal name=\"StreamError\">\n"
7507 " <arg type=\"u\" name=\"streamID\"/>\n"
7508 " <arg type=\"u\" name=\"errorCode\"/>\n"
7509 " <arg type=\"s\" name=\"message\"/>\n"
7510 " </signal>\n"
7511 " <signal name=\"StreamRemoved\">\n"
7512 " <arg type=\"u\" name=\"streamID\"/>\n"
7513 " </signal>\n"
7514 " <signal name=\"StreamStateChanged\">\n"
7515 " <arg type=\"u\" name=\"streamID\"/>\n"
7516 " <arg type=\"u\" name=\"streamState\"/>\n"
7517 " </signal>\n"
7518 " </interface>\n"
7519 "")
7520  Q_PROPERTY(bool InitialAudio READ InitialAudio )
7521  Q_PROPERTY(bool InitialVideo READ InitialVideo )
7522  Q_PROPERTY(bool ImmutableStreams READ ImmutableStreams )
7523 
7524 public:
7525  ChannelTypeStreamedMediaAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
7527 
7528  typedef Tp::MethodInvocationContextPtr< Tp::MediaStreamInfoList > ListStreamsContextPtr;
7529  typedef Tp::MethodInvocationContextPtr< > RemoveStreamsContextPtr;
7530  typedef Tp::MethodInvocationContextPtr< > RequestStreamDirectionContextPtr;
7531  typedef Tp::MethodInvocationContextPtr< Tp::MediaStreamInfoList > RequestStreamsContextPtr;
7532 
7533 public: // PROPERTIES
7624  bool InitialAudio() const;
7647  bool InitialVideo() const;
7692  bool ImmutableStreams() const;
7693 
7694 public Q_SLOTS: // METHODS
7724  Tp::MediaStreamInfoList ListStreams(const QDBusMessage& dbusMessage);
7753  void RemoveStreams(const Tp::UIntList& streams, const QDBusMessage& dbusMessage);
7791  void RequestStreamDirection(uint streamID, uint streamDirection, const QDBusMessage& dbusMessage);
7844  Tp::MediaStreamInfoList RequestStreams(uint contactHandle, const Tp::UIntList& types, const QDBusMessage& dbusMessage);
7845 
7846 Q_SIGNALS: // SIGNALS
7866  void StreamAdded(uint streamID, uint contactHandle, uint streamType);
7885  void StreamDirectionChanged(uint streamID, uint streamDirection, uint pendingFlags);
7904  void StreamError(uint streamID, uint errorCode, const QString& message);
7917  void StreamRemoved(uint streamID);
7933  void StreamStateChanged(uint streamID, uint streamState);
7934 };
7935 
7943 class TP_QT_EXPORT ChannelTypeTextAdaptor : public Tp::AbstractAdaptor
7944 {
7945  Q_OBJECT
7946  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Type.Text")
7947  Q_CLASSINFO("D-Bus Introspection", ""
7948 " <interface name=\"org.freedesktop.Telepathy.Channel.Type.Text\">\n"
7949 " <method name=\"AcknowledgePendingMessages\">\n"
7950 " <arg direction=\"in\" type=\"au\" name=\"IDs\"/>\n"
7951 " </method>\n"
7952 " <method name=\"GetMessageTypes\">\n"
7953 " <arg direction=\"out\" type=\"au\" name=\"availableTypes\"/>\n"
7954 " </method>\n"
7955 " <method name=\"ListPendingMessages\">\n"
7956 " <arg direction=\"in\" type=\"b\" name=\"clear\"/>\n"
7957 " <arg direction=\"out\" type=\"a(uuuuus)\" name=\"pendingMessages\">\n"
7958 " <annotation value=\"Tp::PendingTextMessageList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
7959 " </arg>\n"
7960 " </method>\n"
7961 " <method name=\"Send\">\n"
7962 " <arg direction=\"in\" type=\"u\" name=\"type\"/>\n"
7963 " <arg direction=\"in\" type=\"s\" name=\"text\"/>\n"
7964 " </method>\n"
7965 " <signal name=\"LostMessage\"/>\n"
7966 " <signal name=\"Received\">\n"
7967 " <arg type=\"u\" name=\"ID\"/>\n"
7968 " <arg type=\"u\" name=\"timestamp\"/>\n"
7969 " <arg type=\"u\" name=\"sender\"/>\n"
7970 " <arg type=\"u\" name=\"type\"/>\n"
7971 " <arg type=\"u\" name=\"flags\"/>\n"
7972 " <arg type=\"s\" name=\"text\"/>\n"
7973 " </signal>\n"
7974 " <signal name=\"SendError\">\n"
7975 " <arg type=\"u\" name=\"error\"/>\n"
7976 " <arg type=\"u\" name=\"timestamp\"/>\n"
7977 " <arg type=\"u\" name=\"type\"/>\n"
7978 " <arg type=\"s\" name=\"text\"/>\n"
7979 " </signal>\n"
7980 " <signal name=\"Sent\">\n"
7981 " <arg type=\"u\" name=\"timestamp\"/>\n"
7982 " <arg type=\"u\" name=\"type\"/>\n"
7983 " <arg type=\"s\" name=\"text\"/>\n"
7984 " </signal>\n"
7985 " </interface>\n"
7986 "")
7987 
7988 public:
7989  ChannelTypeTextAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
7990  virtual ~ChannelTypeTextAdaptor();
7991 
7992  typedef Tp::MethodInvocationContextPtr< > AcknowledgePendingMessagesContextPtr;
7993  typedef Tp::MethodInvocationContextPtr< Tp::UIntList > GetMessageTypesContextPtr;
7994  typedef Tp::MethodInvocationContextPtr< Tp::PendingTextMessageList > ListPendingMessagesContextPtr;
7995  typedef Tp::MethodInvocationContextPtr< > SendContextPtr;
7996 
7997 public Q_SLOTS: // METHODS
8015  void AcknowledgePendingMessages(const Tp::UIntList& IDs, const QDBusMessage& dbusMessage);
8033  Tp::UIntList GetMessageTypes(const QDBusMessage& dbusMessage);
8065  Tp::PendingTextMessageList ListPendingMessages(bool clear, const QDBusMessage& dbusMessage);
8099  void Send(uint type, const QString& text, const QDBusMessage& dbusMessage);
8100 
8101 Q_SIGNALS: // SIGNALS
8111  void LostMessage();
8139  void Received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString& text);
8161  void SendError(uint error, uint timestamp, uint type, const QString& text);
8184  void Sent(uint timestamp, uint type, const QString& text);
8185 };
8186 
8187 }
8188 }
QList< PendingTextMessage > PendingTextMessageList
Definition: build/TelepathyQt/_gen/types.h:2260
Definition: svc-channel.h:4495
Definition: svc-channel.h:3301
Definition: build/TelepathyQt/_gen/types.h:568
Definition: svc-channel.h:6335
QList< MediaStreamInfo > MediaStreamInfoList
Definition: build/TelepathyQt/_gen/types.h:2003
Definition: svc-channel.h:1011
Definition: build/TelepathyQt/_gen/types.h:1443
Definition: svc-channel.h:2653
Definition: build/TelepathyQt/_gen/types.h:3482
Definition: svc-channel.h:1930
Definition: svc-channel.h:7468
QList< RoomInfo > RoomInfoList
Definition: build/TelepathyQt/_gen/types.h:2690
Definition: svc-channel.h:5884
Definition: build/TelepathyQt/_gen/types.h:320
Definition: svc-channel.h:4723
Definition: build/TelepathyQt/_gen/types.h:1668
Definition: svc-channel.h:6911
Definition: build/TelepathyQt/_gen/types.h:101
QList< MediaSessionHandlerInfo > MediaSessionHandlerInfoList
Definition: build/TelepathyQt/_gen/types.h:1933
Definition: build/TelepathyQt/_gen/types.h:2083
QList< MessagePartList > MessagePartListList
Definition: build/TelepathyQt/_gen/types.h:2039
Definition: svc-channel.h:3398
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
Definition: build/TelepathyQt/_gen/types.h:1262
Definition: build/TelepathyQt/_gen/types.h:81
QFlags< CallFlag > CallFlags
Definition: build/TelepathyQt/_gen/constants.h:574
Definition: svc-channel.h:5098
SASLStatus
Definition: build/TelepathyQt/_gen/constants.h:3660
Definition: svc-channel.h:7190
Definition: svc-channel.h:6148
Definition: build/TelepathyQt/_gen/types.h:907
Definition: build/TelepathyQt/_gen/types.h:287
Definition: svc-channel.h:4930
Definition: build/TelepathyQt/_gen/types.h:1646
QFlags< MessagePartSupportFlag > MessagePartSupportFlags
Definition: build/TelepathyQt/_gen/constants.h:1106
QList< CaptchaInfo > CaptchaInfoList
Definition: build/TelepathyQt/_gen/types.h:673
Definition: svc-channel.h:27
Definition: build/TelepathyQt/_gen/types.h:2052
Definition: svc-channel.h:2930
Base class for all the low-level service-side adaptors.
Definition: abstract-adaptor.h:40
Definition: build/TelepathyQt/_gen/types.h:3100
CaptchaStatus
Definition: build/TelepathyQt/_gen/constants.h:3025
CallState
Definition: build/TelepathyQt/_gen/constants.h:2286
Definition: build/TelepathyQt/_gen/types.h:885
Definition: svc-channel.h:7943
Definition: build/TelepathyQt/_gen/types.h:2701
Definition: svc-channel.h:1510
QList< LocalPendingInfo > LocalPendingInfoList
Definition: build/TelepathyQt/_gen/types.h:1725
Definition: build/TelepathyQt/_gen/types.h:685


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00945.html0000644000175100017520000002060212530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelSMSInterface Member List

This is the complete list of members for Tp::BaseChannelSMSInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create(bool flash, bool smsChannel)Tp::BaseChannelSMSInterfaceinlinestatic
create(bool flash, bool smsChannel)Tp::BaseChannelSMSInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
flash() const Tp::BaseChannelSMSInterface
GetSMSLengthCallback typedefTp::BaseChannelSMSInterface
immutableProperties() const Tp::BaseChannelSMSInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setGetSMSLengthCallback(const GetSMSLengthCallback &cb)Tp::BaseChannelSMSInterface
smsChannel() const Tp::BaseChannelSMSInterface
smsChannelChanged(bool smsChannel)Tp::BaseChannelSMSInterfacesignal
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelSMSInterface()Tp::BaseChannelSMSInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00444.html0000644000175100017520000003227012530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::PendingReady Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingReady Class Reference

The PendingReady class represents the features requested and the reply to a request for an object to become ready. More...

#include <TelepathyQt/PendingReady>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingReady ()
 
DBusProxyPtr proxy () const
 
Features requestedFeatures () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingReady class represents the features requested and the reply to a request for an object to become ready.

Instances of this class cannot be constructed directly; the only way to get one is via ReadyObject::becomeReady() or a DBusProxyFactory subclass.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingReady::~PendingReady ( )

Class destructor.

Member Function Documentation

DBusProxyPtr Tp::PendingReady::proxy ( ) const

Return the proxy that should become ready.

Returns
A pointer to the DBusProxy object if the operation was created by a proxy object or a DBusProxyFactory, otherwise a null DBusProxyPtr.
Features Tp::PendingReady::requestedFeatures ( ) const

Return the features that were requested to become ready on the object.

Returns
The requested features as a set of Feature objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00199.html0000644000175100017520000002526612530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Member Functions

QString ServiceName () const
 
void SetServiceName (const QString &newValue)
 
Tp::Metadata Metadata () const
 
void SetMetadata (const Tp::Metadata &newValue)
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

Adaptor class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata".

Member Function Documentation

QString Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor::ServiceName ( ) const

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

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

A string representing the service name that will be used over the file transfer channel. This property is equivalent to the ChannelTypeDBusTubeInterface::ServiceName and ChannelTypeStreamTubeInterface::Service properties. If no service name is given then this property will be the empty string.

Returns
The value of exported property ServiceName.
void Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor::SetServiceName ( const QString &  newValue)

Set the value of the exported D-Bus object property ServiceName of type QString.

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

A string representing the service name that will be used over the file transfer channel. This property is equivalent to the ChannelTypeDBusTubeInterface::ServiceName and ChannelTypeStreamTubeInterface::Service properties. If no service name is given then this property will be the empty string.

Tp::Metadata Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor::Metadata ( ) const

Return the value of the exported D-Bus object property Metadata of type Tp::Metadata.

Adaptees should export this property as a Qt property named 'metadata' with type Tp::Metadata.

Additional information about the file transfer set by the channel initiator. If no additional information is given then this property will be empty.

Returns
The value of exported property Metadata.
void Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor::SetMetadata ( const Tp::Metadata newValue)

Set the value of the exported D-Bus object property Metadata of type Tp::Metadata.

Adaptees should export this property as a writable Qt property named 'metadata' with type Tp::Metadata.

Additional information about the file transfer set by the channel initiator. If no additional information is given then this property will be empty.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00503.html0000644000175100017520000021270212530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::ServerAuthenticationChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Tp::ServerAuthenticationChannel Class Reference

The ServerAuthenticationChannel class is a base class for all ServerAuthentication types. More...

#include <TelepathyQt/ServerAuthenticationChannel>

Inherits Tp::Channel.

Public Member Functions

virtual ~ServerAuthenticationChannel ()
 
CaptchaAuthenticationPtr captchaAuthentication () const
 
bool hasCaptchaInterface () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static
ServerAuthenticationChannelPtr 
create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 ServerAuthenticationChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=ServerAuthenticationChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The ServerAuthenticationChannel class is a base class for all ServerAuthentication types.

A ServerAuthentication is a mechanism for a connection to perform an authentication operation. Such an authentication can happen in several ways (at the moment, only Captcha is supported) - this channel will expose a high-level object representing the requested method, allowing a handler to carry on the authentication procedure.

Note that when an authentication procedure succeeds, you can expect this channel to be closed automatically. Please refer to the methods' implementation docs for more details about this.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::ServerAuthenticationChannel::~ServerAuthenticationChannel ( )
virtual

Class destructor.

Tp::ServerAuthenticationChannel::ServerAuthenticationChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = ServerAuthenticationChannel::FeatureCore 
)
protected

Construct a new ServerAuthenticationChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on ServerAuthenticationChannel::FeatureCore.

Member Function Documentation

ServerAuthenticationChannelPtr Tp::ServerAuthenticationChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new ServerAuthenticationChannel channel.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A ServerAuthenticationChannelPtr object pointing to the newly created ServerAuthenticationChannel object.
CaptchaAuthenticationPtr Tp::ServerAuthenticationChannel::captchaAuthentication ( ) const

Return the CaptchaAuthentication object for this channel, if the channel implements the CaptchaAuthentication interface and is a ServerAuthentication Channel.

Note that this method will return a meaningful value only if hasCaptchaInterface() returns true.

This method requires ServerAuthenticationChannel::FeatureCore to be ready.

Returns
A shared pointer to the object representing the CaptchaAuthentication interface, or a null shared pointer if the feature is not ready yet or the channel does not implement Captcha interface.
See Also
hasCaptchaInterface
bool Tp::ServerAuthenticationChannel::hasCaptchaInterface ( ) const

Return whether this ServerAuthenticationChannel implements Captcha as its authentication mechanism. Should this be true, captchaAuthentication() can be safely accessed.

This method requires ServerAuthenticationChannel::FeatureCore to be ready.

Returns
true if this channel implements the Captcha interface, false otherwise.
See Also
captchaAuthentication

Member Data Documentation

const Feature Tp::ServerAuthenticationChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the ServerAuthenticationChannel object usable.

Note that this feature must be enabled in order to use most ServerAuthenticationChannel methods. See specific methods documentation for more details.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00258.html0000644000175100017520000007757712530426260021160 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ClientInterfaceRequestsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ClientInterfaceRequestsInterface Class Reference

#include <TelepathyQt/Client>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply AddRequest (const QDBusObjectPath &request, const QVariantMap &properties, int timeout=-1)
 
QDBusPendingReply RemoveRequest (const QDBusObjectPath &request, const QString &error, const QString &message, int timeout=-1)
 

Public Member Functions

 ClientInterfaceRequestsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientInterfaceRequestsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientInterfaceRequestsInterface (Tp::DBusProxy *proxy)
 
 ClientInterfaceRequestsInterface (const Tp::Client::ClientInterface &mainInterface)
 
 ClientInterfaceRequestsInterface (const Tp::Client::ClientInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Client.Interface.Requests".

Constructor & Destructor Documentation

Tp::Client::ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientInterfaceRequestsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientInterfaceRequestsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface ( Tp::DBusProxy proxy)

Creates a ClientInterfaceRequestsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface ( const Tp::Client::ClientInterface mainInterface)
explicit

Creates a ClientInterfaceRequestsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface ( const Tp::Client::ClientInterface mainInterface,
QObject *  parent 
)

Creates a ClientInterfaceRequestsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ClientInterfaceRequestsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Client.Interface.Requests", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ClientInterfaceRequestsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ClientInterfaceRequestsInterface::AddRequest ( const QDBusObjectPath &  request,
const QVariantMap &  properties,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddRequest on the remote object.

Called by the ChannelDispatcher to indicate that channels have been requested, and that if the request is successful, they will probably be handled by this Handler. The ChannelDispatcher SHOULD only call this method on one handler per request.

This allows the UI to start preparing to handle the channels in advance (e.g. render a window with an "in progress" message), improving perceived responsiveness.

The use of "probably" is because you can't necessarily tell from a channel request which handler will handle particular channels. A reasonable heuristic would be to match the request against the ClientHandlerInterface::HandlerChannelFilter , and respect the preferred handler (if any).

If the request succeeds and is given to the expected Handler, the Requests_Satisfied parameter to ClientHandlerInterface::HandleChannels() can be used to match the channel to a previous AddRequest call.

This lets the UI direct the channels to the window that it already opened.

If the request fails, the expected handler is notified by the channel dispatcher calling its RemoveRequest() method.

This lets the UI close the window or display the error.

The channel dispatcher SHOULD remember which handler was notified, and if the channel request succeeds, it SHOULD dispatch the channels to the expected handler, unless the channels do not match that handler's ClientHandlerInterface::HandlerChannelFilter . If the channels are not dispatched to the expected handler, the handler that was expected is notified by the channel dispatcher calling its RemoveRequest() method with the NotYours error.

Expected handling is for the UI to close the window it previously opened.

Handlers SHOULD NOT return an error from this method; errors returned from this method SHOULD NOT alter the channel dispatcher's behaviour.

Calls to this method are merely a notification.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
request
The ChannelRequest object, which MUST have been returned by 
CreateChannel or EnsureChannel before this method is called. See 
those methods for the rationale of this ordering.
properties
Some of the properties of the ChannelRequest. To avoid race 
conditions, this dictionary MUST NOT include properties whose 
values could subsequently change. It SHOULD include as many 
properties as possible, given that constraint. In particular, the 
properties Requests, UserActionTime and Account MUST be included, 
and Hints MUST be included if implemented.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ClientInterfaceRequestsInterface::RemoveRequest ( const QDBusObjectPath &  request,
const QString &  error,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveRequest on the remote object.

Called by the ChannelDispatcher to indicate that a request previously passed to AddRequest() has failed and should be disregarded.

Handlers SHOULD NOT return an error from this method; errors returned from this method SHOULD NOT alter the channel dispatcher's behaviour.

Calls to this method are merely a notification.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
request
The request that failed.
error

The name of the D-Bus error with which the request failed.

If this is org.freedesktop.Telepathy.Error.NotYours, this indicates that the request succeeded, but all the resulting channels were given to some other handler.

message
Any message supplied with the D-Bus error.
timeoutThe timeout in milliseconds.
void Tp::Client::ClientInterfaceRequestsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01219.html0000644000175100017520000000451012530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaStreamHandlerCandidate Member List

This is the complete list of members for Tp::MediaStreamHandlerCandidate, including all inherited members.

nameTp::MediaStreamHandlerCandidate
transportsTp::MediaStreamHandlerCandidate


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00002.html0000644000175100017520000000720712530426257021130 0ustar00kaffeinekaffeine00000000000000 Asynchronous Object Model
   Home · All Classes · All Namespaces · Modules · Functions · Files
Asynchronous Object Model

Overview

Telepathy-Qt uses D-Bus to communicate with applications implementing the Telepathy specification.

When dealing with D-Bus, method calls can take some time to return, and in this case is not desirable to make synchronous calls, which could turn into applications hanging waiting for method returns. In order to avoid this issue, all Telepathy-Qt high-level methods requiring D-Bus method calls will return a Tp::PendingOperation which will emit the signal Tp::PendingOperation::finished() when the operation has ended. See individual methods' documentation for more details.

Additionally Telepathy-Qt introduces a concept in which object features need to be enabled before usage. Information corresponding to enabled features can be inspected synchronously with no need for asynchronous D-Bus method calls and the associated programming complexity.

To avoid the complexity of doing asynchronous calls when making object features ready Telepathy-Qt also provides so called factories for the main objects. These object features can be enabled by constructing a corresponding factory and enabling the desired features, and passing these factories to the objects responsible for creating the objects whose features are required. Doing that, applications are guaranteed that the specified features are ready in objects signaled to them by the library.

However, if a particular feature is only ever used in a specific circumstance, such as an user opening some settings dialog separate from the general view of the application, features can be later enabled as needed by calling becomeReady(), or in the Tp::Contact case by calling Tp::ContactManager::upgradeContacts(), with the additional features on the object, and waiting for the resulting PendingOperation to finish.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00557_source.html0000644000175100017520000006437612530426257022541 0ustar00kaffeinekaffeine00000000000000 account-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account-manager.h
1 
23 #ifndef _TelepathyQt_account_manager_h_HEADER_GUARD_
24 #define _TelepathyQt_account_manager_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-account-manager.h>
31 
32 #include <TelepathyQt/Account>
33 #include <TelepathyQt/AccountFactory>
34 #include <TelepathyQt/ChannelFactory>
35 #include <TelepathyQt/ConnectionFactory>
36 #include <TelepathyQt/ContactFactory>
37 #include <TelepathyQt/StatelessDBusProxy>
38 #include <TelepathyQt/Filter>
39 #include <TelepathyQt/OptionalInterfaceFactory>
40 #include <TelepathyQt/SharedPtr>
41 #include <TelepathyQt/Types>
42 
43 #include <QDBusObjectPath>
44 #include <QSet>
45 #include <QString>
46 #include <QVariantMap>
47 
48 namespace Tp
49 {
50 
51 class PendingAccount;
52 
53 class TP_QT_EXPORT AccountManager : public StatelessDBusProxy,
54  public OptionalInterfaceFactory<AccountManager>
55 {
56  Q_OBJECT
57  Q_DISABLE_COPY(AccountManager)
58 
59 public:
60  static const Feature FeatureCore;
61 
62  static AccountManagerPtr create(const QDBusConnection &bus);
63  static AccountManagerPtr create(
64  const AccountFactoryConstPtr &accountFactory =
65  AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore),
66  const ConnectionFactoryConstPtr &connectionFactory =
67  ConnectionFactory::create(QDBusConnection::sessionBus()),
68  const ChannelFactoryConstPtr &channelFactory =
69  ChannelFactory::create(QDBusConnection::sessionBus()),
70  const ContactFactoryConstPtr &contactFactory =
72  static AccountManagerPtr create(const QDBusConnection &bus,
73  const AccountFactoryConstPtr &accountFactory,
74  const ConnectionFactoryConstPtr &connectionFactory,
75  const ChannelFactoryConstPtr &channelFactory,
76  const ContactFactoryConstPtr &contactFactory =
78 
79  virtual ~AccountManager();
80 
81  AccountFactoryConstPtr accountFactory() const;
82  ConnectionFactoryConstPtr connectionFactory() const;
83  ChannelFactoryConstPtr channelFactory() const;
84  ContactFactoryConstPtr contactFactory() const;
85 
86  QList<AccountPtr> allAccounts() const;
87 
88  AccountSetPtr validAccounts() const;
89  AccountSetPtr invalidAccounts() const;
90 
91  AccountSetPtr enabledAccounts() const;
92  AccountSetPtr disabledAccounts() const;
93 
94  AccountSetPtr onlineAccounts() const;
95  AccountSetPtr offlineAccounts() const;
96 
97  AccountSetPtr textChatAccounts() const;
98  AccountSetPtr textChatroomAccounts() const;
99 
100  AccountSetPtr audioCallAccounts() const;
101  AccountSetPtr videoCallAccounts() const;
102 
103  TP_QT_DEPRECATED AccountSetPtr streamedMediaCallAccounts() const;
104  TP_QT_DEPRECATED AccountSetPtr streamedMediaAudioCallAccounts() const;
105  TP_QT_DEPRECATED AccountSetPtr streamedMediaVideoCallAccounts() const;
106  TP_QT_DEPRECATED AccountSetPtr streamedMediaVideoCallWithAudioAccounts() const;
107 
108  AccountSetPtr fileTransferAccounts() const;
109 
110  AccountSetPtr accountsByProtocol(const QString &protocolName) const;
111 
112  AccountSetPtr filterAccounts(const AccountFilterConstPtr &filter) const;
113  AccountSetPtr filterAccounts(const QVariantMap &filter) const;
114 
115  AccountPtr accountForObjectPath(const QString &path) const;
116  TP_QT_DEPRECATED AccountPtr accountForPath(const QString &path) const;
117  QList<AccountPtr> accountsForObjectPaths(const QStringList &paths) const;
118  TP_QT_DEPRECATED QList<AccountPtr> accountsForPaths(const QStringList &paths) const;
119 
120  QStringList supportedAccountProperties() const;
121  PendingAccount *createAccount(const QString &connectionManager,
122  const QString &protocol, const QString &displayName,
123  const QVariantMap &parameters,
124  const QVariantMap &properties = QVariantMap());
125 
126 Q_SIGNALS:
127  void newAccount(const Tp::AccountPtr &account);
128 
129 protected:
130  AccountManager(const QDBusConnection &bus,
131  const AccountFactoryConstPtr &accountFactory,
132  const ConnectionFactoryConstPtr &connectionFactory,
133  const ChannelFactoryConstPtr &channelFactory,
134  const ContactFactoryConstPtr &contactFactory,
135  const Feature &coreFeature);
136 
137  Client::AccountManagerInterface *baseInterface() const;
138 
139 private Q_SLOTS:
140  TP_QT_NO_EXPORT void introspectMain();
141  TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher);
142  TP_QT_NO_EXPORT void onAccountReady(Tp::PendingOperation *op);
143  TP_QT_NO_EXPORT void onAccountValidityChanged(const QDBusObjectPath &objectPath,
144  bool valid);
145  TP_QT_NO_EXPORT void onAccountRemoved(const QDBusObjectPath &objectPath);
146 
147 private:
148  friend class PendingAccount;
149 
150  struct Private;
151  friend struct Private;
152  Private *mPriv;
153 };
154 
155 } // Tp
156 
157 #endif
static ConnectionFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: connection-factory.cpp:57
The StatelessDBusProxy class is a base class representing a remote object whose API is basically stat...
Definition: dbus-proxy.h:80
static ContactFactoryPtr create(const Features &features=Features())
Definition: contact-factory.cpp:48
static const Feature FeatureCore
Definition: account-manager.h:60
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
static AccountFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: account-factory.cpp:58
Definition: cli-account-manager.h:44
static ChannelFactoryPtr create(const QDBusConnection &bus)
Definition: channel-factory.cpp:86
static const Feature FeatureCore
Definition: account.h:103
The PendingAccount class represents the parameters of and the reply to an asynchronous account reques...
Definition: pending-account.h:43
The AccountManager class represents a Telepathy account manager.
Definition: account-manager.h:53
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00317.html0000644000175100017520000001223012530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::ContactCapability Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::ContactCapability Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint handle
 
QString channelType
 
uint genericFlags
 
uint typeSpecificFlags
 

Detailed Description

Structure type generated from the specification.

A struct (contact handle, channel type, generic flags, type-specific flags) representing a capability posessed by a contact, as returned by GetCapabilities on the Capabilities interface.

Member Data Documentation

uint Tp::ContactCapability::handle
QString Tp::ContactCapability::channelType
uint Tp::ContactCapability::genericFlags
uint Tp::ContactCapability::typeSpecificFlags


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2folderopen.png0000644000175100017520000000112512530426257023076 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆIDATxí]?oÓPÿ9iš4i°;ii“¶‰ZЉ‘‰ÀÀ7`bèÔÙ¬Øù,HìU'ô$*Tµ]‚T¡DPÚÄ6wÏ}‰;¡C; a¿ÓߟûÝïîž¼jAÀ­InSþ}€9H“ÓŽ|?íÁ÷ =_ÊÆŠ­†¥Àue*;¯YEäsYäæB¢Ÿ¿þÄ—£sÙ½½ÙŒ† É«›©ÀYÇq !GÇ¿v̇¹ÑØ®š °Œ‚ÔF¹}q¥b]÷7í·0)Úd›¾ÿð-èº}Pfä£ÖY{4™ÑÂ@}úæôñ2ÛüÔ—ñúåNŒI‚ÁǃcçÁº%£¬UаI³mc±ô˜å¼ÔÆüÈ>é¸xþt9Æ$µý OæVE*õU´Ì‚ç#ž×ˆ•ïûr@l$øPÿrHaaÇ¥ ²›dZ®rè‘ãqI„o¼øT\Ž,tªj2FAxv-LŸp׌p TÄI/ \¥sfí½; jViTƒèú¤o^cpÅü¼ûû»Ïb]”€¢¤<†aþÕœ²“ßÓ˜y“£§9:Œîù+À³€ñà,E žf³6éNˆÄE£KU}Ü^;¶ØnZ¢uß­US4— ѬëbížN¶.Úk¦ØjTÄöº%µªâ i¯VÄÊÝò§™ Èù¸)ùÿG€™òºJ@T x”IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01288.html0000644000175100017520000002324312530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ClientHandlerInterface Member List

This is the complete list of members for Tp::Client::ClientHandlerInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ClientHandlerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientHandlerInterface
ClientHandlerInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientHandlerInterface
ClientHandlerInterface(Tp::DBusProxy *proxy)Tp::Client::ClientHandlerInterface
ClientHandlerInterface(const Tp::Client::ClientInterface &mainInterface)Tp::Client::ClientHandlerInterfaceexplicit
ClientHandlerInterface(const Tp::Client::ClientInterface &mainInterface, QObject *parent)Tp::Client::ClientHandlerInterface
HandleChannels(const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const Tp::ObjectPathList &requestsSatisfied, qulonglong userActionTime, const QVariantMap &handlerInfo, int timeout=-1)Tp::Client::ClientHandlerInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ClientHandlerInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ClientHandlerInterfaceinline
requestPropertyBypassApproval() const Tp::Client::ClientHandlerInterfaceinline
requestPropertyCapabilities() const Tp::Client::ClientHandlerInterfaceinline
requestPropertyHandledChannels() const Tp::Client::ClientHandlerInterfaceinline
requestPropertyHandlerChannelFilter() const Tp::Client::ClientHandlerInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ClientHandlerInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00071.html0000644000175100017520000003223312530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractProtocolInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::AbstractProtocolInterface Class Reference

Base class for all the Protocol object interface implementations. More...

#include <TelepathyQt/AbstractProtocolInterface>

Inherits Tp::AbstractDBusServiceInterface.

Inherited by Tp::BaseProtocolAddressingInterface, Tp::BaseProtocolAvatarsInterface, and Tp::BaseProtocolPresenceInterface.

Public Member Functions

 AbstractProtocolInterface (const QString &interfaceName)
 
virtual ~AbstractProtocolInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
virtual QVariantMap immutableProperties () const =0
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
virtual void createAdaptor ()=0
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for all the Protocol object interface implementations.

Constructor & Destructor Documentation

Tp::AbstractProtocolInterface::AbstractProtocolInterface ( const QString &  interfaceName)
Tp::AbstractProtocolInterface::~AbstractProtocolInterface ( )
virtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01032.html0000644000175100017520000000626412530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor2< R, Arg1, Arg2 > Member List

This is the complete list of members for Tp::PtrFunctor2< R, Arg1, Arg2 >, including all inherited members.

fnTp::PtrFunctor2< R, Arg1, Arg2 >
FunctionType typedefTp::PtrFunctor2< R, Arg1, Arg2 >
operator()(Arg1 a1, Arg2 a2) const Tp::PtrFunctor2< R, Arg1, Arg2 >inline
PtrFunctor2(FunctionType fn)Tp::PtrFunctor2< R, Arg1, Arg2 >inline
ResultType typedefTp::PtrFunctor2< R, Arg1, Arg2 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00887.html0000644000175100017520000002274712530426257021163 0ustar00kaffeinekaffeine00000000000000 Wrapper classes
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Wrapper classes

Classes

class  Tp::AvatarData
 The AvatarData class represents a Telepathy avatar. More...
 
class  Tp::AvatarSpec
 The AvatarSpec class represents a Telepathy avatar information supported by a protocol. More...
 
class  Tp::ChannelClassSpec
 The ChannelClassSpec class represents a Telepathy channel class. More...
 
class  Tp::ChannelClassSpecList
 The ChannelClassSpecList class represents a list of ChannelClassSpec. More...
 
class  Tp::ContactSearchChannel::SearchStateChangeDetails
 The ContactSearchChannel::SearchStateChangeDetails class provides a wrapper around the details for a search state change. More...
 
class  Tp::MessageContentPart
 The MessageContentPart class represents a Telepathy message part. More...
 
class  Tp::MessageContentPartList
 The MessageContentPartList class represents a list of MessageContentPart. More...
 
class  Tp::Presence
 The Presence class represents a Telepathy simple presence. More...
 
class  Tp::PresenceSpec
 The PresenceSpec class represents a Telepathy presence information supported by a protocol. More...
 
class  Tp::PresenceSpecList
 The PresenceSpecList class represents a list of PresenceSpec. More...
 
class  Tp::RequestableChannelClassSpec
 The RequestableChannelClassSpec class represents a Telepathy requestable channel class. More...
 
class  Tp::RequestableChannelClassSpecList
 The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec. More...
 

Detailed Description

Wrapper classes representing a Telepathy type.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00386.html0000644000175100017520000001201412530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::MailURL Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MailURL Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString URL
 
uint method
 
HTTPPostDataList postData
 

Detailed Description

Structure type generated from the specification.

A structure containing the required information to open a web-based e-mail UI, without needing re-authentication (if possible).

Because the URL and POST data frequently contain short-lived credential tokens, a new URL should be requested (by calling one of the methods that returns a Mail_URL) for each visit to the web-based UI, and the URL should be visited soon after it is returned.

Member Data Documentation

QString Tp::MailURL::URL

The URL to which to send a request.

uint Tp::MailURL::method

The HTTP method of the request.

HTTPPostDataList Tp::MailURL::postData

An array of name-value pairs containing the POST data to use when opening the URL. This MUST be an empty array if the Method is not POST.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00826_source.html0000644000175100017520000004362312530426257022530 0ustar00kaffeinekaffeine00000000000000 simple-stream-tube-handler.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
simple-stream-tube-handler.h
1 
23 #ifndef _TelepathyQt_simple_stream_tube_handler_h_HEADER_GUARD_
24 #define _TelepathyQt_simple_stream_tube_handler_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/AbstractClientHandler>
27 #include <TelepathyQt/ChannelRequestHints>
28 #include <TelepathyQt/RefCounted>
29 #include <TelepathyQt/Types>
30 
31 #include <QDateTime>
32 #include <QLinkedList>
33 #include <QHash>
34 #include <QQueue>
35 #include <QSet>
36 
37 namespace Tp
38 {
39 
40 class PendingOperation;
41 
42 class TP_QT_NO_EXPORT SimpleStreamTubeHandler : public QObject,
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(SimpleStreamTubeHandler)
47 
48 public:
50  const QStringList &p2pServices,
51  const QStringList &roomServices,
52  bool requested,
53  bool monitorConnections,
54  bool bypassApproval = false);
56 
57  bool monitorsConnections() const
58  {
59  return mMonitorConnections;
60  }
61 
62  bool bypassApproval() const
63  {
64  return mBypassApproval;
65  }
66 
67  void handleChannels(const MethodInvocationContextPtr<> &context,
68  const AccountPtr &account,
69  const ConnectionPtr &connection,
70  const QList<ChannelPtr> &channels,
71  const QList<ChannelRequestPtr> &requestsSatisfied,
72  const QDateTime &userActionTime,
73  const HandlerInfo &handlerInfo);
74 
75 Q_SIGNALS:
76  void invokedForTube(
77  const Tp::AccountPtr &account,
78  const Tp::StreamTubeChannelPtr &tube,
79  const QDateTime &userActionTime,
80  const Tp::ChannelRequestHints &requestHints);
81  void tubeInvalidated(
82  const Tp::AccountPtr &account,
83  const Tp::StreamTubeChannelPtr &tube,
84  const QString &errorName,
85  const QString &errorMessage);
86 
87 private Q_SLOTS:
88  void onReadyOpFinished(Tp::PendingOperation *);
89  void onTubeInvalidated(Tp::DBusProxy *, const QString &, const QString &);
90 
91 private:
93  const QStringList &p2pServices,
94  const QStringList &roomServices,
95  bool requested,
96  bool monitorConnections,
97  bool bypassApproval);
98 
99  bool mMonitorConnections;
100 
101  struct InvocationData : RefCounted {
102  InvocationData() : readyOp(0) {}
103 
104  PendingOperation *readyOp;
105  QString error, message;
106 
107  MethodInvocationContextPtr<> ctx;
108  AccountPtr acc;
109  QList<StreamTubeChannelPtr> tubes;
110  QDateTime time;
111  ChannelRequestHints hints;
112  };
113  QLinkedList<SharedPtr<InvocationData> > mInvocations;
114  QHash<StreamTubeChannelPtr, AccountPtr> mTubes;
115  bool mBypassApproval;
116 };
117 
118 } // Tp
119 
120 #endif
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
bool bypassApproval() const
Definition: simple-stream-tube-handler.h:62
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
Definition: simple-stream-tube-handler.h:42
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The AbstractClientHandler class represents a Telepathy handler.
Definition: abstract-client.h:140
bool monitorsConnections() const
Definition: simple-stream-tube-handler.h:57


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01347.html0000644000175100017520000001562412530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceRoomConfigAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceRoomConfigAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
Anonymous() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
CanUpdateConfiguration() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
ConfigurationRetrieved() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
dbusConnection() const Tp::AbstractAdaptor
Description() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
InviteOnly() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
Limit() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
Moderated() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
MutableProperties() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
Password() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
PasswordHint() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
PasswordProtected() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
Persistent() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
Private() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
Title() const Tp::Service::ChannelInterfaceRoomConfigAdaptor
UpdateConfiguration(const QVariantMap &properties, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceRoomConfigAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00130.html0000644000175100017520000005253212530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::BaseProtocolPresenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::BaseProtocolPresenceInterface Class Reference

Base class for implementations of Protocol.Interface.Presence. More...

#include <TelepathyQt/BaseProtocolPresenceInterface>

Inherits Tp::AbstractProtocolInterface.

Public Member Functions

virtual ~BaseProtocolPresenceInterface ()
 
QVariantMap immutableProperties () const
 
PresenceSpecList statuses () const
 
void setStatuses (const PresenceSpecList &statuses)
 
- Public Member Functions inherited from Tp::AbstractProtocolInterface
 AbstractProtocolInterface (const QString &interfaceName)
 
virtual ~AbstractProtocolInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseProtocolPresenceInterfacePtr 
create ()
 
template<typename BaseProtocolPresenceInterfaceSubclass >
static SharedPtr
< BaseProtocolPresenceInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseProtocolPresenceInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Protocol.Interface.Presence.

Constructor & Destructor Documentation

Tp::BaseProtocolPresenceInterface::~BaseProtocolPresenceInterface ( )
virtual

Class destructor.

Tp::BaseProtocolPresenceInterface::BaseProtocolPresenceInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseProtocolPresenceInterfacePtr Tp::BaseProtocolPresenceInterface::create ( )
inlinestatic
template<typename BaseProtocolPresenceInterfaceSubclass >
static SharedPtr<BaseProtocolPresenceInterfaceSubclass> Tp::BaseProtocolPresenceInterface::create ( )
inlinestatic
QVariantMap Tp::BaseProtocolPresenceInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

PresenceSpecList Tp::BaseProtocolPresenceInterface::statuses ( ) const

Return the list of presence statuses that have been set with setStatuses().

This list is exposed as the Statuses property of this interface on the bus and represents the statuses that might appear in the Connection.Interface.SimplePresence.Statuses property on a connection to this protocol that supports SimplePresence.

This property is immutable and cannot change after this interface has been registered on an object on the bus with registerInterface().

Returns
The list of presence statuses that have been set with setStatuses().
See Also
setStatuses()
void Tp::BaseProtocolPresenceInterface::setStatuses ( const PresenceSpecList statuses)

Set the list of statuses that might appear in the Connection.Interface.SimplePresence.Statuses property on a connection to this protocol that supports SimplePresence.

This property is immutable and cannot change after this interface has been registered on an object on the bus with registerInterface().

Parameters
statusesThe statuses list to set.
See Also
statuses()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00946.html0000644000175100017520000002330512530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionManager Member List

This is the complete list of members for Tp::BaseConnectionManager, including all inherited members.

addProtocol(const BaseProtocolPtr &protocol)Tp::BaseConnectionManager
BaseConnectionManager(const QDBusConnection &dbusConnection, const QString &name)Tp::BaseConnectionManagerprotected
busName() const Tp::DBusService
connections() const Tp::BaseConnectionManager
create(const QString &name)Tp::BaseConnectionManagerinlinestatic
create(const QString &name)Tp::BaseConnectionManagerinlinestatic
create(const QDBusConnection &dbusConnection, const QString &name)Tp::BaseConnectionManagerinlinestatic
create(const QDBusConnection &dbusConnection, const QString &name)Tp::BaseConnectionManagerinlinestatic
dbusConnection() const Tp::DBusService
dbusObject() const Tp::DBusService
DBusService(const QDBusConnection &dbusConnection)Tp::DBusService
hasProtocol(const QString &protocolName) const Tp::BaseConnectionManager
immutableProperties() const Tp::BaseConnectionManagervirtual
isRegistered() const Tp::DBusService
name() const Tp::BaseConnectionManager
newConnection(const BaseConnectionPtr &connection)Tp::BaseConnectionManagersignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusService
propertyChanged(const QString &propertyName)Tp::Objectsignal
protocol(const QString &protocolName) const Tp::BaseConnectionManager
protocols() const Tp::BaseConnectionManager
RefCounted()Tp::RefCountedinline
registerObject(DBusError *error=NULL)Tp::BaseConnectionManager
registerObject(const QString &busName, const QString &objectPath, DBusError *error)Tp::BaseConnectionManagerprotectedvirtual
~BaseConnectionManager()Tp::BaseConnectionManagervirtual
~DBusService()Tp::DBusServicevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00445.html0000644000175100017520000003636112530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::PendingSendMessage Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingSendMessage Class Reference

The PendingSendMessage class represents the parameters of and the reply to an asynchronous message send request. More...

#include <TelepathyQt/PendingSendMessage>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingSendMessage ()
 
TextChannelPtr channel () const
 
ContactMessengerPtr messenger () const
 
QString sentMessageToken () const
 
Message message () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingSendMessage class represents the parameters of and the reply to an asynchronous message send request.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingSendMessage::~PendingSendMessage ( )

Member Function Documentation

TextChannelPtr Tp::PendingSendMessage::channel ( ) const

Return the channel used to send the message if this instance was created using TextChannel. If it was created using ContactMessenger, return a null TextChannelPtr.

Returns
A pointer to the TextChannel object, or a null TextChannelPtr if created using ContactMessenger.
ContactMessengerPtr Tp::PendingSendMessage::messenger ( ) const

Return the contact messenger used to send the message if this instance was created using ContactMessenger. If it was created using TextChannel, return a null ContactMessengerPtr.

Returns
A pointer to the ContactMessenger object, or a null ContactMessengerPtr if created using TextChannel.
QString Tp::PendingSendMessage::sentMessageToken ( ) const
Message Tp::PendingSendMessage::message ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01160.html0000644000175100017520000000534612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusTubeParticipants Member List

This is the complete list of members for Tp::DBusTubeParticipants, including all inherited members.

DBusTubeParticipants()Tp::DBusTubeParticipantsinline
DBusTubeParticipants(const QMap< uint, QString > &a)Tp::DBusTubeParticipantsinline
operator=(const QMap< uint, QString > &a)Tp::DBusTubeParticipantsinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00546_source.html0000644000175100017520000001550412530426257022524 0ustar00kaffeinekaffeine00000000000000 abstract-adaptor.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
abstract-adaptor.h
1 
23 #ifndef _TelepathyQt_abstract_adaptor_h_HEADER_GUARD_
24 #define _TelepathyQt_abstract_adaptor_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QObject>
33 #include <QDBusAbstractAdaptor>
34 
35 class QDBusConnection;
36 
37 namespace Tp
38 {
39 
40 class TP_QT_EXPORT AbstractAdaptor : public QDBusAbstractAdaptor
41 {
42  Q_OBJECT
43 
44 public:
45  AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent);
46  ~AbstractAdaptor();
47 
48  QDBusConnection dbusConnection() const;
49 
50  QObject *adaptee() const;
51 
52 private:
53  struct Private;
54  friend struct Private;
55  Private *mPriv;
56 };
57 
58 }
59 
60 #endif
Base class for all the low-level service-side adaptors.
Definition: abstract-adaptor.h:40


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00504.html0000644000175100017520000000767212530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::ServicePoint Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::ServicePoint Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint servicePointType
 
QString service
 

Detailed Description

Structure type generated from the specification.

A service point.

Member Data Documentation

uint Tp::ServicePoint::servicePointType

The service type.

QString Tp::ServicePoint::service

String representation of the service point. The representation is service specific; it may be a 'service' Uniform Resource Name as specified by RFC 5031, or may be in some other form. Empty, unused or unknown value is represented by "".


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00819_source.html0000644000175100017520000016605512530426257022537 0ustar00kaffeinekaffeine00000000000000 shared-ptr.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
shared-ptr.h
1 
23 #ifndef _TelepathyQt_shared_ptr_h_HEADER_GUARD_
24 #define _TelepathyQt_shared_ptr_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QHash>
33 #include <QObject>
34 
35 namespace Tp
36 {
37 
38 class RefCounted;
39 template <class T> class SharedPtr;
40 template <class T> class WeakPtr;
41 
42 class TP_QT_EXPORT RefCounted
43 {
44  Q_DISABLE_COPY(RefCounted)
45 
46  class SharedCount
47  {
48  Q_DISABLE_COPY(SharedCount)
49 
50  public:
51  SharedCount(RefCounted *d)
52  : d(d), strongref(0), weakref(0)
53  {
54  }
55 
56  private:
57  template <class T> friend class SharedPtr;
58  template <class T> friend class WeakPtr;
59  friend class RefCounted;
60 
61  RefCounted *d;
62  mutable QAtomicInt strongref;
63  mutable QAtomicInt weakref;
64  };
65 
66 public:
67  inline RefCounted() : sc(new SharedCount(this))
68  {
69  sc->weakref.ref();
70  }
71 
72  inline virtual ~RefCounted()
73  {
74  sc->d = 0;
75  if (!sc->weakref.deref()) {
76  delete sc;
77  }
78  }
79 
80 private:
81  template <class T> friend class SharedPtr;
82  template <class T> friend class WeakPtr;
83  // TODO: Remove when Conn.I.ContactList, etc becomes mandatory. This is required to circumvent
84  // a reference cycle when using contact list channels, due to the fact that Channels hold
85  // strong references to their parent Connection, but not needed when using
86  // Conn.I.ContactList and friends.
87  friend class ContactManager;
88 
89  inline void ref() const { sc->strongref.ref(); }
90  inline bool deref() const { return sc->strongref.deref(); }
91 
92  SharedCount *sc;
93 };
94 
95 template <class T>
96 class SharedPtr
97 {
98  typedef bool (SharedPtr<T>::*UnspecifiedBoolType)() const;
99 
100 public:
101  inline SharedPtr() : d(0) { }
102  explicit inline SharedPtr(T *d) : d(d) { if (d) { d->ref(); } }
103  template <typename Subclass>
104  inline SharedPtr(const SharedPtr<Subclass> &o) : d(o.data()) { if (d) { d->ref(); } }
105  inline SharedPtr(const SharedPtr<T> &o) : d(o.d) { if (d) { d->ref(); } }
106  explicit inline SharedPtr(const WeakPtr<T> &o)
107  {
108  RefCounted::SharedCount *sc = o.sc;
109  if (sc) {
110  // increase the strongref, but never up from zero
111  // or less (negative is used on untracked objects)
112  register int tmp = sc->strongref.fetchAndAddOrdered(0);
113  while (tmp > 0) {
114  // try to increment from "tmp" to "tmp + 1"
115  if (sc->strongref.testAndSetRelaxed(tmp, tmp + 1)) {
116  // succeeded
117  break;
118  }
119  // failed, try again
120  tmp = sc->strongref.fetchAndAddOrdered(0);
121  }
122 
123  if (tmp > 0) {
124  d = dynamic_cast<T*>(sc->d);
125  Q_ASSERT(d != NULL);
126  } else {
127  d = 0;
128  }
129  } else {
130  d = 0;
131  }
132  }
133 
134  inline ~SharedPtr()
135  {
136  if (d && !d->deref()) {
137  T *saved = d;
138  d = 0;
139  delete saved;
140  }
141  }
142 
143  inline void reset()
144  {
145  SharedPtr<T>().swap(*this);
146  }
147 
148  inline T *data() const { return d; }
149  inline const T *constData() const { return d; }
150  inline T *operator->() { return d; }
151  inline T *operator->() const { return d; }
152 
153  inline bool isNull() const { return !d; }
154  inline bool operator!() const { return isNull(); }
155  operator UnspecifiedBoolType() const { return !isNull() ? &SharedPtr<T>::operator! : 0; }
156 
157  inline bool operator==(const SharedPtr<T> &o) const { return d == o.d; }
158  inline bool operator!=(const SharedPtr<T> &o) const { return d != o.d; }
159  inline bool operator==(const T *ptr) const { return d == ptr; }
160  inline bool operator!=(const T *ptr) const { return d != ptr; }
161 
163  {
164  SharedPtr<T>(o).swap(*this);
165  return *this;
166  }
167 
168  inline void swap(SharedPtr<T> &o)
169  {
170  T *tmp = d;
171  d = o.d;
172  o.d = tmp;
173  }
174 
175  template <class X>
176  static inline SharedPtr<T> staticCast(const SharedPtr<X> &src)
177  {
178  return SharedPtr<T>(static_cast<T*>(src.data()));
179  }
180 
181  template <class X>
182  static inline SharedPtr<T> dynamicCast(const SharedPtr<X> &src)
183  {
184  return SharedPtr<T>(dynamic_cast<T*>(src.data()));
185  }
186 
187  template <class X>
188  static inline SharedPtr<T> constCast(const SharedPtr<X> &src)
189  {
190  return SharedPtr<T>(const_cast<T*>(src.data()));
191  }
192 
193  template <class X>
194  static inline SharedPtr<T> qObjectCast(const SharedPtr<X> &src)
195  {
196  return SharedPtr<T>(qobject_cast<T*>(src.data()));
197  }
198 
199 private:
200  friend class WeakPtr<T>;
201 
202  T *d;
203 };
204 
205 template<typename T>
206 inline uint qHash(const SharedPtr<T> &ptr)
207 {
208  return QT_PREPEND_NAMESPACE(qHash<T>(ptr.data()));
209 }
210 
211 template<typename T> inline uint qHash(const WeakPtr<T> &ptr);
212 
213 template <class T>
214 class WeakPtr
215 {
216  typedef bool (WeakPtr<T>::*UnspecifiedBoolType)() const;
217 
218 public:
219  inline WeakPtr() : sc(0) { }
220  explicit inline WeakPtr(T *d)
221  {
222  if (d) {
223  sc = d->sc;
224  sc->weakref.ref();
225  } else {
226  sc = 0;
227  }
228  }
229  inline WeakPtr(const WeakPtr<T> &o) : sc(o.sc) { if (sc) { sc->weakref.ref(); } }
230  inline WeakPtr(const SharedPtr<T> &o)
231  {
232  if (o.d) {
233  sc = o.d->sc;
234  sc->weakref.ref();
235  } else {
236  sc = 0;
237  }
238  }
239  inline ~WeakPtr()
240  {
241  if (sc && !sc->weakref.deref()) {
242  delete sc;
243  }
244  }
245 
246  inline bool isNull() const { return !sc || sc->strongref.fetchAndAddOrdered(0) <= 0; }
247  inline bool operator!() const { return isNull(); }
248  operator UnspecifiedBoolType() const { return !isNull() ? &WeakPtr<T>::operator! : 0; }
249 
250  inline WeakPtr<T> &operator=(const WeakPtr<T> &o)
251  {
252  WeakPtr<T>(o).swap(*this);
253  return *this;
254  }
255 
257  {
258  WeakPtr<T>(o).swap(*this);
259  return *this;
260  }
261 
262  inline void swap(WeakPtr<T> &o)
263  {
264  RefCounted::SharedCount *tmp = sc;
265  sc = o.sc;
266  o.sc = tmp;
267  }
268 
269  SharedPtr<T> toStrongRef() const { return SharedPtr<T>(*this); }
270 
271 private:
272  friend class SharedPtr<T>;
273  friend uint qHash<T>(const WeakPtr<T> &ptr);
274 
275  RefCounted::SharedCount *sc;
276 };
277 
278 template<typename T>
279 inline uint qHash(const WeakPtr<T> &ptr)
280 {
281  T *actualPtr = ptr.sc ? ptr.sc.d : 0;
282  return QT_PREPEND_NAMESPACE(qHash<T>(actualPtr));
283 }
284 
285 } // Tp
286 
287 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
WeakPtr< T > & operator=(const SharedPtr< T > &o)
Definition: shared-ptr.h:256
bool isNull() const
Definition: shared-ptr.h:153
WeakPtr(T *d)
Definition: shared-ptr.h:220
The WeakPtr class holds a weak reference to an object managed by SharedPtr.
Definition: shared-ptr.h:40
SharedPtr()
Definition: shared-ptr.h:101
T * operator->() const
Definition: shared-ptr.h:151
T * data() const
Definition: shared-ptr.h:148
WeakPtr(const SharedPtr< T > &o)
Definition: shared-ptr.h:230
bool operator!=(const T *ptr) const
Definition: shared-ptr.h:160
static SharedPtr< T > qObjectCast(const SharedPtr< X > &src)
Definition: shared-ptr.h:194
~SharedPtr()
Definition: shared-ptr.h:134
SharedPtr(const SharedPtr< T > &o)
Definition: shared-ptr.h:105
static SharedPtr< T > staticCast(const SharedPtr< X > &src)
Definition: shared-ptr.h:176
WeakPtr(const WeakPtr< T > &o)
Definition: shared-ptr.h:229
WeakPtr< T > & operator=(const WeakPtr< T > &o)
Definition: shared-ptr.h:250
bool isNull() const
Definition: shared-ptr.h:246
WeakPtr()
Definition: shared-ptr.h:219
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
RefCounted()
Definition: shared-ptr.h:67
virtual ~RefCounted()
Definition: shared-ptr.h:72
void reset()
Definition: shared-ptr.h:143
bool operator==(const SharedPtr< T > &o) const
Definition: shared-ptr.h:157
bool operator!() const
Definition: shared-ptr.h:247
~WeakPtr()
Definition: shared-ptr.h:239
bool operator!=(const SharedPtr< T > &o) const
Definition: shared-ptr.h:158
const T * constData() const
Definition: shared-ptr.h:149
SharedPtr< T > & operator=(const SharedPtr< T > &o)
Definition: shared-ptr.h:162
static SharedPtr< T > dynamicCast(const SharedPtr< X > &src)
Definition: shared-ptr.h:182
SharedPtr(const SharedPtr< Subclass > &o)
Definition: shared-ptr.h:104
void swap(WeakPtr< T > &o)
Definition: shared-ptr.h:262
void swap(SharedPtr< T > &o)
Definition: shared-ptr.h:168
uint qHash(const ChannelClassSpec &spec)
Definition: channel-class-spec.h:283
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
SharedPtr< T > toStrongRef() const
Definition: shared-ptr.h:269
static SharedPtr< T > constCast(const SharedPtr< X > &src)
Definition: shared-ptr.h:188
bool operator==(const T *ptr) const
Definition: shared-ptr.h:159
T * operator->()
Definition: shared-ptr.h:150
SharedPtr(T *d)
Definition: shared-ptr.h:102
SharedPtr(const WeakPtr< T > &o)
Definition: shared-ptr.h:106
bool operator!() const
Definition: shared-ptr.h:154


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00259.html0000644000175100017520000012636712530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ClientObserverInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ClientObserverInterface Class Reference

#include <TelepathyQt/Client>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply ObserveChannels (const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const Tp::ObjectPathList &requestsSatisfied, const QVariantMap &observerInfo, int timeout=-1)
 

Public Member Functions

 ClientObserverInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientObserverInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ClientObserverInterface (Tp::DBusProxy *proxy)
 
 ClientObserverInterface (const Tp::Client::ClientInterface &mainInterface)
 
 ClientObserverInterface (const Tp::Client::ClientInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyObserverChannelFilter () const
 
Tp::PendingVariantrequestPropertyRecover () const
 
Tp::PendingVariantrequestPropertyDelayApprovers () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Client.Observer".

Constructor & Destructor Documentation

Tp::Client::ClientObserverInterface::ClientObserverInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientObserverInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientObserverInterface::ClientObserverInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ClientObserverInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ClientObserverInterface::ClientObserverInterface ( Tp::DBusProxy proxy)

Creates a ClientObserverInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ClientObserverInterface::ClientObserverInterface ( const Tp::Client::ClientInterface mainInterface)
explicit

Creates a ClientObserverInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ClientObserverInterface::ClientObserverInterface ( const Tp::Client::ClientInterface mainInterface,
QObject *  parent 
)

Creates a ClientObserverInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ClientObserverInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Client.Observer", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ClientObserverInterface::requestPropertyObserverChannelFilter ( ) const
inline

Asynchronous getter for the remote object property ObserverChannelFilter of type Tp::ChannelClassList.

A specification of the channels in which this observer is interested. The ObserveChannels() method should be called by the channel dispatcher whenever any of the new channels in a ConnectionInterfaceRequestsInterface::NewChannels() signal match this description.

Only certain D-Bus types have useful semantics for matching like this, so only certain types are allowed:

Integers of all sizes, including byte (y, n, q, i, u, x, t)
Matched by numeric value, regardless of type (e.g. 42 as a 16-bit signed integer 'n' is considered equal to 42 as a 32-bit unsigned integer 'u')
Booleans (b)
Matched by equality in the obvious way; not considered equal to any other type
Strings (s)
Matched by equality in the obvious way; not considered equal to any other type
Object paths (o)
Matched by equality in the obvious way; not considered equal to any other type

This property never changes while the observer process owns its Client bus name. For activatable processes, the filter can change due to an upgrade - the channel dispatcher SHOULD observe changes to .client files using a mechanism like inotify.

Not allowing this property to change is a simplification, particularly for activatable processes (we reject the possibility that a process with a .client file, when activated, has a filter that differs from what its .client file said).

If an Observer wants to add extra channels to its list of interests at runtime, it can register an additional Client bus name (for instance, the org.freedesktop.Telepathy.Client.Empathy process with unique name :1.42 could additionally register org.freedesktop.Telepathy.Client.Empathy._1_42) with additional filters. To remove those filters, it can release the bus name; it could even re-claim the bus name immediately, with different filters.

The same principle is applied to Approvers and Handlers.

For observers that have a .client file, the channel dispatcher may discover this property from keys of the form "propertyname type", in groups in the .client file whose name is the name of this interface followed by .ObserverChannelFilter, a space and an ASCII decimal number starting from 0.

Values in the .client file are encoded in exactly the same way as the default-p keys in .manager files, as described in the ConnectionManagerInterface interface (but note that not all types supported in .manager files can appear in .client files).

For instance, a .client file for an observer that is only interested in Text channels, with CONTACT or ROOM handles, that were requested by a local client:

[org.freedesktop.Telepathy.Client]
Interfaces=org.freedesktop.Telepathy.Client.Observer;

[org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter 0]
org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.TargetHandleType u=1
org.freedesktop.Telepathy.Channel.Requested b=true

[org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter 1]
org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.TargetHandleType u=2
org.freedesktop.Telepathy.Channel.Requested b=true
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ClientObserverInterface::requestPropertyRecover ( ) const
inline

Asynchronous getter for the remote object property Recover of type bool.

If true, upon the startup of this observer, ClientObserverInterface::ObserveChannels() will be called for every already existing channel matching its ClientObserverInterface::ObserverChannelFilter

When an activatable client having this property disappears from the bus and there are channels matching its ObserverChannelFilter, ObserveChannels will be called immediately to reactivate it again. Such clients should specify this property in their .client file as follows:

[org.freedesktop.Telepathy.Client.Observer]
Recover=true

This means that if an activatable Observer crashes, it will be restarted as soon as possible; while there is an unavoidable possibility that it will miss some events during this process (particularly ChannelTypeTextInterface messages), this window of event loss is kept to a minimum.

Non-activatable observers can't take advantage of this mechanism, but setting this property on a non-activatable observer does allow it to "catch up" on channels that are currently active at the time that it starts up.

When the ObserveChannels method is called due to observer recovery, the Observer_Info dictionary will contain one extra item mapping the key "recovering" to True.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ClientObserverInterface::requestPropertyDelayApprovers ( ) const
inline

Asynchronous getter for the remote object property DelayApprovers of type bool.

If true, the channel dispatcher will wait for ObserveChannels() to return before calling ClientApproverInterface::AddDispatchOperation() on appropriate Approvers.

This property SHOULD be false unless there is a reason why a channel should not be given to approvers. An example of this is if an Observer is also a Handler and wants to ChannelDispatchOperationInterface::Claim() a channel so that it becomes its handler and doesn't want any approver to be called, this property should be true.

Observers and Approvers should be called at the same time in normal operation (with this property set to false) to improve responsiveness. For example, if an incoming call appears, the approver should get the channel as fast as possible to show a dialog, but if an approver has to make round-trips to set itself up, then the approval of the channel is delayed. As a result, it is recommended for this property to remain false unless absolutely necessary.

For service-activatable clients, this property should be specified in the observer's .client file as follows:

If this property is not implemented (telepathy-mission-control 5.7.5 and older), the channel dispatcher SHOULD consider it as being false.

[org.freedesktop.Telepathy.Client.Observer]
DelayApprovers=true
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ClientObserverInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ClientObserverInterface::ObserveChannels ( const QDBusObjectPath &  account,
const QDBusObjectPath &  connection,
const Tp::ChannelDetailsList channels,
const QDBusObjectPath &  dispatchOperation,
const Tp::ObjectPathList requestsSatisfied,
const QVariantMap &  observerInfo,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ObserveChannels on the remote object.

Called by the channel dispatcher when channels in which the observer has registered an interest are announced in a ConnectionInterfaceRequestsInterface::NewChannels() signal.

If the same NewChannels signal announces some channels that match the filter, and some that do not, then only a subset of the channels (those that do match the filter) are passed to this method.

If the channel dispatcher will split up the channels from a single NewChannels signal and dispatch them separately (for instance because no installed Handler can handle all of them), it will call ObserveChannels several times.

The observer MUST NOT return from this method call until it is ready for a handler for the channel to run (which may change the channel's state).

The channel dispatcher must wait for observers to start up, to avoid the following race: text channel logger (observer) gets ObserveChannels, text channel handler gets ClientHandlerInterface::HandleChannels() channel handler starts up faster and acknowledges messages, logger never sees those messages.

The channel dispatcher SHOULD NOT change its behaviour based on whether this method succeeds or fails: there are no defined D-Bus errors for this method, and if it fails, this only indicates that an Observer is somehow broken.

The expected error response in the channel dispatcher is to log a warning, and otherwise continue as though this method had succeeded.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account with which the channels are associated. The well-known 
bus name to use is that of the AccountManager.
connection
The Connection with which the channels are associated. The 
well-known bus name to use can be derived from this object path by 
removing the leading &apos;/&apos; and replacing all subsequent 
&apos;/&apos; by &apos;.&apos;.
channels
The Channels and their properties. Their well-known bus names are 
all the same as that of the Connection.
dispatchOperation

The path to the ChannelDispatchOperationInterface for these channels, or the special value '/' if there is no ChannelDispatchOperation (because the channels were requested, not incoming).

If the Observer calls ChannelDispatchOperationInterface::Claim() or ChannelDispatchOperationInterface::HandleWith() on the dispatch operation, it MUST be careful to avoid deadlock, since these methods cannot return until the Observer has returned from ObserveChannels() .

This allows an Observer to ChannelDispatchOperationInterface::Claim() a set of channels without having to match up calls to this method with calls to ClientApproverInterface::AddDispatchOperation() .

requestsSatisfied
The ChannelRequests satisfied by these channels. If the same 
process is an Observer and a Handler, it can be useful to be given 
this information as soon as possible (it will also be passed to 
Handler.HandleChannels).
observerInfo

Additional information about these channels. Currently defined keys are:

recovering - b
True if ObserveChannels was called for an existing channel (due to the Recover property being True); False or omitted otherwise.
This allows observers to distinguish between new channels (the normal case), and existing channels that were given to the observer in order to catch up on previous events (perhaps after a previous instance of the same observer crashed).
request-properties - a{oa{sv}}
A map from ChannelRequestInterface paths listed in Requests_Satisfied to Qualified_Property_Value_Maps containing namespaced immutable properties of each request.

All defined keys for this dictionary are optional; observers MAY safely ignore any entry in this dictionary.

timeoutThe timeout in milliseconds.
void Tp::Client::ClientObserverInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00318.html0000644000175100017520000001346412530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::ContactClientTypes Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactClientTypes Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QStringList >.

Public Member Functions

 ContactClientTypes ()
 
 ContactClientTypes (const QMap< uint, QStringList > &a)
 
ContactClientTypesoperator= (const QMap< uint, QStringList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QStringList>, but needed to have a discrete type in the Qt type system.

A mapping from contact handle to client types.

Constructor & Destructor Documentation

Tp::ContactClientTypes::ContactClientTypes ( )
inline
Tp::ContactClientTypes::ContactClientTypes ( const QMap< uint, QStringList > &  a)
inline

Member Function Documentation

ContactClientTypes& Tp::ContactClientTypes::operator= ( const QMap< uint, QStringList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01289.html0000644000175100017520000002162012530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ClientInterfaceRequestsInterface Member List

This is the complete list of members for Tp::Client::ClientInterfaceRequestsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddRequest(const QDBusObjectPath &request, const QVariantMap &properties, int timeout=-1)Tp::Client::ClientInterfaceRequestsInterfaceinlineslot
ClientInterfaceRequestsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientInterfaceRequestsInterface
ClientInterfaceRequestsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientInterfaceRequestsInterface
ClientInterfaceRequestsInterface(Tp::DBusProxy *proxy)Tp::Client::ClientInterfaceRequestsInterface
ClientInterfaceRequestsInterface(const Tp::Client::ClientInterface &mainInterface)Tp::Client::ClientInterfaceRequestsInterfaceexplicit
ClientInterfaceRequestsInterface(const Tp::Client::ClientInterface &mainInterface, QObject *parent)Tp::Client::ClientInterfaceRequestsInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ClientInterfaceRequestsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoveRequest(const QDBusObjectPath &request, const QString &error, const QString &message, int timeout=-1)Tp::Client::ClientInterfaceRequestsInterfaceinlineslot
requestAllProperties() const Tp::Client::ClientInterfaceRequestsInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ClientInterfaceRequestsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00072.html0000644000175100017520000001017712530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::AccessControl Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::AccessControl Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint type
 
QDBusVariant detail
 

Detailed Description

Structure type generated from the specification.

An access control mode for extended presence items like geolocation. This type isn't actually used by the SimplePresence interface, but it's included here so it can be referenced by rich presence interfaces.

New interfaces should use this type, and NOT Rich_Presence_Access_Control.

Member Data Documentation

uint Tp::AccessControl::type

The type of access control to apply.

QDBusVariant Tp::AccessControl::detail

Any additional information required by the Type. The required type and semantics are defined for each Access_Control_Type.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01033.html0000644000175100017520000000673612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor2< R, T, Arg1, Arg2 > Member List

This is the complete list of members for Tp::MemberFunctor2< R, T, Arg1, Arg2 >, including all inherited members.

fnTp::MemberFunctor2< R, T, Arg1, Arg2 >
FunctionType typedefTp::MemberFunctor2< R, T, Arg1, Arg2 >
MemberFunctor2(T *object, FunctionType fn)Tp::MemberFunctor2< R, T, Arg1, Arg2 >inline
objectTp::MemberFunctor2< R, T, Arg1, Arg2 >
operator()(Arg1 a1, Arg2 a2) const Tp::MemberFunctor2< R, T, Arg1, Arg2 >inline
ResultType typedefTp::MemberFunctor2< R, T, Arg1, Arg2 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00888.html0000644000175100017520000007776512530426257021176 0ustar00kaffeinekaffeine00000000000000 Utililty classes
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Utililty classes

Classes

class  Tp::AccountCapabilityFilter
 The AccountCapabilityFilter class provides a filter object to be used to filter accounts by capabilities. More...
 
class  Tp::AccountFactory
 The AccountFactory class is responsible for constructing Account objects according to application-defined settings. More...
 
class  Tp::AccountPropertyFilter
 The AccountPropertyFilter class provides a filter object to be used to filter accounts by properties. More...
 
class  Tp::AndFilter< T >
 The AndFilter class provides a generic filter object to be used in conjunction of other filters. More...
 
class  Tp::BaseCallback
 Base class for all the callback classes. More...
 
class  Tp::Callback0< R >
 Callback with 0 arguments. More...
 
class  Tp::Callback1< R, Arg1 >
 Callback with 1 argument. More...
 
class  Tp::Callback2< R, Arg1, Arg2 >
 Callback with 2 arguments. More...
 
class  Tp::Callback3< R, Arg1, Arg2, Arg3 >
 Callback with 3 arguments. More...
 
class  Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >
 Callback with 4 arguments. More...
 
class  Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >
 Callback with 5 arguments. More...
 
class  Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >
 Callback with 6 arguments. More...
 
class  Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >
 Callback with 7 arguments. More...
 
class  Tp::ChannelFactory
 The ChannelFactory class is responsible for constructing Channel objects according to application-defined settings. More...
 
class  Tp::ConnectionFactory
 The ConnectionFactory class is responsible for constructing Connection objects according to application-defined settings. More...
 
class  Tp::ContactFactory
 The ContactFactory class is responsible for constructing Contact objects according to application-defined settings. More...
 
class  Tp::DBusProxyFactory
 The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching and making them ready as appropriate. More...
 
class  Tp::Feature
 The Feature class represents a feature that can be enabled on demand. More...
 
class  Tp::Features
 The Features class represents a list of Feature. More...
 
class  Tp::Filter< T >
 The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFilter, GenericPropertyFilter, etc. More...
 
class  Tp::FixedFeatureFactory
 The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set of features for all constructed proxies. More...
 
class  Tp::GenericCapabilityFilter< T >
 The GenericCapabilityFilter class provides a generic filter object to be used to filter objects by capabilities. More...
 
class  Tp::GenericPropertyFilter< T >
 The GenericPropertyFilter class provides a generic filter object to be used to filter objects by properties. More...
 
class  Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >
 The MethodInvocationContext class provides a way for the service implementation to respond to method calls. More...
 
class  Tp::NotFilter< T >
 The NotFilter class provides a generic filter object to be used in conjunction of other filters. More...
 
class  Tp::OrFilter< T >
 The OrFilter class provides a generic filter object to be used in conjunction of other filters. More...
 
class  Tp::PendingSuccess
 The PendingSuccess class represents PendingOperation that is always successful. More...
 
class  Tp::PendingFailure
 The PendingFailure class represents a PendingOperation that always fails with the error passed to the constructor. More...
 
class  Tp::PendingVoid
 The PendingVoid class is a generic subclass of PendingOperation representing a pending D-Bus method call that does not return anything (or returns a result that is not interesting). More...
 
class  Tp::PendingComposite
 The PendingComposite class is a PendingOperation that can be used to track multiple pending operations at once. More...
 
class  Tp::PendingReady
 The PendingReady class represents the features requested and the reply to a request for an object to become ready. More...
 
class  Tp::PendingStringList
 The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string list. More...
 
class  Tp::PendingString
 The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string. More...
 
class  Tp::PendingVariantMap
 The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant map. More...
 
class  Tp::PendingVariant
 The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant. More...
 
class  Tp::Profile
 The Profile class provides an easy way to read Telepathy profile files according to http://telepathy.freedesktop.org/wiki/service-profile-v1. More...
 
class  Tp::Profile::Parameter
 The Profile::Parameter class represents a parameter defined in .profile files. More...
 
class  Tp::Profile::Presence
 The Profile::Presence class represents a presence defined in .profile files. More...
 
class  Tp::ReadinessHelper
 The ReadinessHelper class is a helper class used by the introspection process. More...
 
class  Tp::ReadinessHelper::Introspectable
 The ReadinessHelper::Introspectable class represents a introspectable used by ReadinessHelper. More...
 
class  Tp::RefCounted
 The RefCounted class is a base class for shared objects used by SharedPtr. More...
 
class  Tp::SharedPtr< T >
 The SharedPtr class is a pointer to an explicitly shared object. More...
 
class  Tp::WeakPtr< T >
 The WeakPtr class holds a weak reference to an object managed by SharedPtr. More...
 
class  Tp::SimpleCallObserver
 The SimpleCallObserver class provides an easy way to track calls in an account and can be optionally filtered by a contact and/or call direction. More...
 
class  Tp::SimpleObserver
 The SimpleObserver class provides an easy way to track channels in an account and can be optionally filtered by a contact. More...
 
class  Tp::SimpleTextObserver
 The SimpleTextObserver class provides an easy way to track sent/received text messages in an account and can be optionally filtered by a contact. More...
 

Detailed Description

Utility classes.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespacemembers_func.html0000644000175100017520000000302512530426260024634 0ustar00kaffeinekaffeine00000000000000 Namespace Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- v -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00387.html0000644000175100017520000001012612530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::MediaDescriptionOffer Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MediaDescriptionOffer Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QDBusObjectPath mediaDescription
 
QVariantMap properties
 

Detailed Description

Structure type generated from the specification.

The remote description offer and its information

Member Data Documentation

QDBusObjectPath Tp::MediaDescriptionOffer::mediaDescription
The object path to the CallContentMediaDescriptionInterface
QVariantMap Tp::MediaDescriptionOffer::properties

The immutable properties of all interfaces of the codec description. Having all the codec description properties here saves a D-Bus round-trip - it shouldn't be necessary to get the properties from the MediaDescription object, in practice.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01348.html0000644000175100017520000002017012530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor, including all inherited members.

AbortSASL(uint reason, const QString &debugMessage, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorslot
AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
AcceptSASL(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorslot
adaptee() const Tp::AbstractAdaptor
AuthorizationIdentity() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
AvailableMechanisms() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
CanTryAgain() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
dbusConnection() const Tp::AbstractAdaptor
DefaultRealm() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
DefaultUsername() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
HasInitialData() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
MaySaveResponse() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
NewChallenge(const QByteArray &challengeData)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorsignal
Respond(const QByteArray &responseData, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorslot
SASLError() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
SASLErrorDetails() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
SASLStatus() const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor
SASLStatusChanged(uint status, const QString &reason, const QVariantMap &details)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorsignal
StartMechanism(const QString &mechanism, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorslot
StartMechanismWithData(const QString &mechanism, const QByteArray &initialData, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSASLAuthenticationAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00131.html0000644000175100017520000001323012530426260021116 0ustar00kaffeinekaffeine00000000000000 Tp::ByteArrayList Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ByteArrayList Struct Reference

#include <TelepathyQt/Types>

Inherits QList< QByteArray >.

Public Member Functions

 ByteArrayList ()
 
 ByteArrayList (const QList< QByteArray > &a)
 
ByteArrayListoperator= (const QList< QByteArray > &a)
 

Detailed Description

Generic list type with QByteArray elements. Convertible with QList<QByteArray>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::ByteArrayList::ByteArrayList ( )
inline
Tp::ByteArrayList::ByteArrayList ( const QList< QByteArray > &  a)
inline

Member Function Documentation

ByteArrayList& Tp::ByteArrayList::operator= ( const QList< QByteArray > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00947.html0000644000175100017520000003657012530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnection Member List

This is the complete list of members for Tp::BaseConnection, including all inherited members.

addChannel(BaseChannelPtr channel, bool suppressHandler=false)Tp::BaseConnection
BaseConnection(const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap &parameters)Tp::BaseConnectionprotected
busName() const Tp::DBusService
channelsDetails()Tp::BaseConnection
channelsInfo()Tp::BaseConnection
cmName() const Tp::BaseConnection
ConnectCallback typedefTp::BaseConnection
create(const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus())Tp::BaseConnectioninlinestatic
create(const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus())Tp::BaseConnectioninlinestatic
createChannel(const QVariantMap &request, bool suppressHandler, DBusError *error)Tp::BaseConnection
CreateChannelCallback typedefTp::BaseConnection
dbusConnection() const Tp::DBusService
dbusObject() const Tp::DBusService
DBusService(const QDBusConnection &dbusConnection)Tp::DBusService
disconnected()Tp::BaseConnectionsignal
ensureChannel(const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error)Tp::BaseConnection
immutableProperties() const Tp::BaseConnectionvirtual
inspectHandles(uint handleType, const Tp::UIntList &handles, DBusError *error)Tp::BaseConnection
InspectHandlesCallback typedefTp::BaseConnection
interface(const QString &interfaceName) const Tp::BaseConnection
interfaces() const Tp::BaseConnection
isRegistered() const Tp::DBusService
matchChannel(const Tp::BaseChannelPtr &channel, const QVariantMap &request, Tp::DBusError *error)Tp::BaseConnectionprotectedvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusService
parameters() const Tp::BaseConnection
plugInterface(const AbstractConnectionInterfacePtr &interface)Tp::BaseConnection
propertyChanged(const QString &propertyName)Tp::Objectsignal
protocolName() const Tp::BaseConnection
RefCounted()Tp::RefCountedinline
registerObject(DBusError *error=NULL)Tp::BaseConnection
registerObject(const QString &busName, const QString &objectPath, DBusError *error)Tp::BaseConnectionprotectedvirtual
requestHandles(uint handleType, const QStringList &identifiers, DBusError *error)Tp::BaseConnection
RequestHandlesCallback typedefTp::BaseConnection
selfHandle() const Tp::BaseConnection
selfID() const Tp::BaseConnection
setConnectCallback(const ConnectCallback &cb)Tp::BaseConnection
setCreateChannelCallback(const CreateChannelCallback &cb)Tp::BaseConnection
setInspectHandlesCallback(const InspectHandlesCallback &cb)Tp::BaseConnection
setRequestHandlesCallback(const RequestHandlesCallback &cb)Tp::BaseConnection
setSelfContact(uint selfHandle, const QString &selfID)Tp::BaseConnection
setSelfHandle(uint selfHandle)Tp::BaseConnection
setSelfID(const QString &selfID)Tp::BaseConnection
setStatus(uint newStatus, uint reason)Tp::BaseConnection
status() const Tp::BaseConnection
uniqueName() const Tp::BaseConnectionvirtual
~BaseConnection()Tp::BaseConnectionvirtual
~DBusService()Tp::DBusServicevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00808_source.html0000644000175100017520000002465512530426257022534 0ustar00kaffeinekaffeine00000000000000 ready-object.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
ready-object.h
1 
23 #ifndef _TelepathyQt_ready_object_h_HEADER_GUARD_
24 #define _TelepathyQt_ready_object_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Feature>
31 
32 #include <QObject>
33 
34 namespace Tp
35 {
36 
37 class DBusProxy;
38 class PendingReady;
39 class ReadinessHelper;
40 class RefCounted;
41 
42 class TP_QT_EXPORT ReadyObject
43 {
44  Q_DISABLE_COPY(ReadyObject)
45 
46 public:
47  ReadyObject(RefCounted *object, const Feature &featureCore);
48  ReadyObject(DBusProxy *proxy, const Feature &featureCore);
49  virtual ~ReadyObject();
50 
51  virtual bool isReady(const Features &features = Features()) const;
52  virtual PendingReady *becomeReady(const Features &requestedFeatures = Features());
53 
54  virtual Features requestedFeatures() const;
55  virtual Features actualFeatures() const;
56  virtual Features missingFeatures() const;
57 
58 protected:
59  ReadinessHelper *readinessHelper() const;
60 
61 private:
62  struct Private;
63  friend struct Private;
64  Private *mPriv;
65 };
66 
67 } // Tp
68 
69 #endif
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
Definition: ready-object.h:42
The ReadinessHelper class is a helper class used by the introspection process.
Definition: readiness-helper.h:48
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00446.html0000644000175100017520000003140012530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::PendingStreamedMediaStreams Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingStreamedMediaStreams Class Reference

Class containing the result of an asynchronous streamed media stream creation request. More...

#include <TelepathyQt/PendingStreamedMediaStreams>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingStreamedMediaStreams ()
 
StreamedMediaChannelPtr channel () const
 
StreamedMediaStreams streams () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

Class containing the result of an asynchronous streamed media stream creation request.

Instances of this class cannot be constructed directly; the only way to get one is via StreamedMediaChannel.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingStreamedMediaStreams::~PendingStreamedMediaStreams ( )

Class destructor.

Member Function Documentation

StreamedMediaChannelPtr Tp::PendingStreamedMediaStreams::channel ( ) const

Return the channel through which the request was made.

Returns
A pointer to the StreamedMediaChannel object.
StreamedMediaStreams Tp::PendingStreamedMediaStreams::streams ( ) const

Return a list of the newly created StreamedMediaStreamPtr objects.

Returns
A list of pointers to StreamedMediaStream objects, or an empty list if an error occurred.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/closed.png0000644000175100017520000000020412530426257021405 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR à‘KIDATxíÝm @!†ÑGk™É7À-`&séts¦Àñþòð@åk}ª2€… P%Á_Ëþ¿N² .:0Dk¥‹Â›x" Ö›)¡xÒ5õIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01161.html0000644000175100017520000000526112530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DebugMessage Member List

This is the complete list of members for Tp::DebugMessage, including all inherited members.

domainTp::DebugMessage
levelTp::DebugMessage
messageTp::DebugMessage
timestampTp::DebugMessage


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00804_source.html0000644000175100017520000003735612530426257022532 0ustar00kaffeinekaffeine00000000000000 protocol-parameter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocol-parameter.h
1 
23 #ifndef _TelepathyQt_protocol_parameter_h_HEADER_GUARD_
24 #define _TelepathyQt_protocol_parameter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Global>
32 #include <TelepathyQt/Types>
33 
34 #include <QDBusSignature>
35 #include <QSharedDataPointer>
36 #include <QString>
37 #include <QVariant>
38 
39 namespace Tp
40 {
41 
42 class TP_QT_EXPORT ProtocolParameter
43 {
44 public:
46  ProtocolParameter(const ParamSpec &spec);
47  ProtocolParameter(const QString &name,
48  const QDBusSignature &dbusSignature,
49  ConnMgrParamFlags flags,
50  QVariant defaultValue = QVariant());
51  ProtocolParameter(const QString &name,
52  const QString &dbusSignature,
53  ConnMgrParamFlags flags,
54  QVariant defaultValue = QVariant());
57 
58  bool isValid() const { return mPriv.constData() != 0; }
59 
60  ProtocolParameter &operator=(const ProtocolParameter &other);
61  bool operator==(const ProtocolParameter &other) const;
62  bool operator==(const QString &name) const;
63  bool operator<(const ProtocolParameter &other) const;
64 
65  QString name() const;
66  QDBusSignature dbusSignature() const;
67  QVariant::Type type() const;
68  QVariant defaultValue() const;
69 
70  bool isRequired() const;
71  bool isSecret() const;
72  bool isRequiredForRegistration() const;
73 
74  ParamSpec bareParameter() const;
75 
76 private:
77  friend class ConnectionManager;
78  friend class ProtocolInfo;
79 
80  struct Private;
81  friend struct Private;
82  QSharedDataPointer<Private> mPriv;
83 };
84 
85 typedef QList<ProtocolParameter> ProtocolParameterList;
86 
87 uint qHash(const ProtocolParameter &parameter);
88 
89 } // Tp
90 
91 Q_DECLARE_METATYPE(Tp::ProtocolParameter);
92 Q_DECLARE_METATYPE(Tp::ProtocolParameterList);
93 
94 #endif
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
QList< ProtocolParameter > ProtocolParameterList
Definition: protocol-parameter.h:85
QFlags< ConnMgrParamFlag > ConnMgrParamFlags
Definition: build/TelepathyQt/_gen/constants.h:127
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
The ProtocolParameter class represents a Telepathy protocol parameter.
Definition: protocol-parameter.h:42
The ConnectionManager class represents a Telepathy connection manager.
Definition: connection-manager.h:52
Definition: build/TelepathyQt/_gen/types.h:2186
bool isValid() const
Definition: protocol-parameter.h:58
uint qHash(const ChannelClassSpec &spec)
Definition: channel-class-spec.h:283


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00505.html0000644000175100017520000001062112530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::ServicePointInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::ServicePointInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

ServicePoint servicePoint
 
QStringList serviceIDs
 

Detailed Description

Structure type generated from the specification.

Description of a service point and IDs which are mapped to it. An example Service Point info for GSM emergency calls (callable through "911" and "112") could look like: ServicePointInfo = ( Service_Point: ( Service_Point_Type: 1 (Emergency), Service_Point: "urn:service:sos" ), Service_IDs: [ "911", "112" ] )

Member Data Documentation

ServicePoint Tp::ServicePointInfo::servicePoint

The service point.

QStringList Tp::ServicePointInfo::serviceIDs

A list of IDs that are mapped to this service. This is provided as a convenience for the UIs, but the preferred method for requesting channel to a service is by setting the InitialServicePoint property in a channel request.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01220.html0000644000175100017520000000632712530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaStreamHandlerCodec Member List

This is the complete list of members for Tp::MediaStreamHandlerCodec, including all inherited members.

clockRateTp::MediaStreamHandlerCodec
codecIDTp::MediaStreamHandlerCodec
mediaTypeTp::MediaStreamHandlerCodec
nameTp::MediaStreamHandlerCodec
numberOfChannelsTp::MediaStreamHandlerCodec
parametersTp::MediaStreamHandlerCodec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00004.html0000644000175100017520000001024512530426257021126 0ustar00kaffeinekaffeine00000000000000 Callbacks Usage
   Home · All Classes · All Namespaces · Modules · Functions · Files
Callbacks Usage

Overview

Callbacks are used in Telepathy-Qt by the service side high-level APIs to expose methods that may/should be overriden in implementations.

Ideally we would use virtual methods for this, but as new methods can be added freely (when interfaces change), we would not be able to guarantee a stable API/ABI. Other options, such as virtual padding, virtual_hook and Qt slots also have their own drawbacks.

There are 8 Callback classes, Tp::Callback0 to Tp::Callback7, which define a callback with 0 to 7 arguments respectively. The first template argument is always the return value type and the rest template arguments are the types of the callback arguments in the order that they are passed to the callback.

Callback classes can be constructed from a functor. To make it easy to use function pointers as functors, Telepathy-Qt also provides two helper functions, Tp::memFun and Tp::ptrFun.

Here is an example of their usage:

* // assuming a member function QString MyImpl::myFunc(const QString & s, int i);
*
* // assuming a non-member or static member function QString myFunc(const QString & s, int i);
*
* // assuming Tp::BaseConnectionPtr MyProtocolImpl::createConnection(const QVariantMap &parameters, DBusError *error);
* myBaseProtocol->setCreateConnectionCallback(Tp::memFun(myProtocolImpl, &MyProtocolImpl::createConnection));
*

You are also free to use any other mechanism for constructing functors, such as boost::bind, C++11's <functional> module or even C++11 lambda functions.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00800_source.html0000644000175100017520000000625412530426257022517 0ustar00kaffeinekaffeine00000000000000 properties.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
properties.h
1 
23 #ifndef _TelepathyQt_properties_h_HEADER_GUARD_
24 #define _TelepathyQt_properties_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
49 #include <TelepathyQt/_gen/cli-properties.h>
50 
51 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00319.html0000644000175100017520000001406212530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::ContactCodecMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactCodecMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, CodecList >.

Public Member Functions

 ContactCodecMap ()
 
 ContactCodecMap (const QMap< uint, CodecList > &a)
 
ContactCodecMapoperator= (const QMap< uint, CodecList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, CodecList>, but needed to have a discrete type in the Qt type system.

A map from contact to the list of codecs he or she supports.

Constructor & Destructor Documentation

Tp::ContactCodecMap::ContactCodecMap ( )
inline
Tp::ContactCodecMap::ContactCodecMap ( const QMap< uint, CodecList > &  a)
inline

Member Function Documentation

ContactCodecMap& Tp::ContactCodecMap::operator= ( const QMap< uint, CodecList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00073.html0000644000175100017520000157017412530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::Account Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Properties | List of all members
Tp::Account Class Reference

The Account class represents a Telepathy account. More...

#include <TelepathyQt/Account>

Inherits Tp::StatelessDBusProxy, and Tp::OptionalInterfaceFactory< Account >.

Signals

void removed ()
 
void serviceNameChanged (const QString &serviceName)
 
void profileChanged (const Tp::ProfilePtr &profile)
 
void displayNameChanged (const QString &displayName)
 
void iconNameChanged (const QString &iconName)
 
void nicknameChanged (const QString &nickname)
 
void normalizedNameChanged (const QString &normalizedName)
 
void validityChanged (bool validity)
 
void stateChanged (bool state)
 
void capabilitiesChanged (const Tp::ConnectionCapabilities &capabilities)
 
void connectsAutomaticallyPropertyChanged (bool connectsAutomatically)
 
void firstOnline ()
 
void parametersChanged (const QVariantMap &parameters)
 
void changingPresence (bool value)
 
void automaticPresenceChanged (const Tp::Presence &automaticPresence)
 
void currentPresenceChanged (const Tp::Presence &currentPresence)
 
void requestedPresenceChanged (const Tp::Presence &requestedPresence)
 
void onlinenessChanged (bool online)
 
void avatarChanged (const Tp::Avatar &avatar)
 
void connectionStatusChanged (Tp::ConnectionStatus status)
 
void connectionChanged (const Tp::ConnectionPtr &connection)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~Account ()
 
ConnectionFactoryConstPtr connectionFactory () const
 
ChannelFactoryConstPtr channelFactory () const
 
ContactFactoryConstPtr contactFactory () const
 
bool isValidAccount () const
 
bool isEnabled () const
 
PendingOperationsetEnabled (bool value)
 
QString cmName () const
 
QString protocolName () const
 
QString serviceName () const
 
PendingOperationsetServiceName (const QString &value)
 
ProfilePtr profile () const
 
QString displayName () const
 
PendingOperationsetDisplayName (const QString &value)
 
QString iconName () const
 
PendingOperationsetIconName (const QString &value)
 
QString nickname () const
 
PendingOperationsetNickname (const QString &value)
 
AvatarSpec avatarRequirements () const
 
const Avataravatar () const
 
PendingOperationsetAvatar (const Avatar &avatar)
 
QVariantMap parameters () const
 
PendingStringListupdateParameters (const QVariantMap &set, const QStringList &unset)
 
ProtocolInfo protocolInfo () const
 
ConnectionCapabilities capabilities () const
 
bool connectsAutomatically () const
 
PendingOperationsetConnectsAutomatically (bool value)
 
bool hasBeenOnline () const
 
ConnectionStatus connectionStatus () const
 
ConnectionStatusReason connectionStatusReason () const
 
QString connectionError () const
 
Connection::ErrorDetails connectionErrorDetails () const
 
ConnectionPtr connection () const
 
bool isChangingPresence () const
 
PresenceSpecList allowedPresenceStatuses (bool includeAllStatuses=false) const
 
uint maxPresenceStatusMessageLength () const
 
Presence automaticPresence () const
 
PendingOperationsetAutomaticPresence (const Presence &presence)
 
Presence currentPresence () const
 
Presence requestedPresence () const
 
PendingOperationsetRequestedPresence (const Presence &presence)
 
bool isOnline () const
 
QString uniqueIdentifier () const
 
QString normalizedName () const
 
PendingOperationreconnect ()
 
PendingOperationremove ()
 
bool supportsRequestHints () const
 
bool requestsSucceedWithChannel () const
 
PendingChannelRequestensureTextChat (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureTextChat (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureTextChatroom (const QString &roomName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureAudioCall (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureAudioCall (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureVideoCall (const QString &contactIdentifier, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureVideoCall (const ContactPtr &contact, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureAudioVideoCall (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureAudioVideoCall (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureStreamedMediaCall (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureStreamedMediaCall (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureStreamedMediaAudioCall (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureStreamedMediaAudioCall (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureStreamedMediaVideoCall (const QString &contactIdentifier, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureStreamedMediaVideoCall (const ContactPtr &contact, bool withAudio=false, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateFileTransfer (const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateFileTransfer (const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateStreamTube (const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateStreamTube (const ContactPtr &contact, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateDBusTube (const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateDBusTube (const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateDBusTubeRoom (const QString &room, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceStreamedMediaCall (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceStreamedMediaCall (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceCall (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceCall (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceTextChat (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceTextChat (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceTextChatroom (const QString &roomName, const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestcreateConferenceTextChatroom (const QString &roomName, const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelcreateAndHandleConferenceCall (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceCall (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelRequestcreateContactSearch (const QString &server, uint limit=0, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelensureAndHandleTextChat (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleTextChat (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleTextChatroom (const QString &roomName, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleAudioCall (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleAudioCall (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleVideoCall (const QString &contactIdentifier, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleVideoCall (const ContactPtr &contact, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleAudioVideoCall (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleAudioVideoCall (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleStreamedMediaCall (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleStreamedMediaCall (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleStreamedMediaAudioCall (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleStreamedMediaAudioCall (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleStreamedMediaVideoCall (const QString &contactIdentifier, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelensureAndHandleStreamedMediaVideoCall (const ContactPtr &contact, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleFileTransfer (const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleFileTransfer (const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleStreamTube (const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleStreamTube (const ContactPtr &contact, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleDBusTube (const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleDBusTube (const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceTextChat (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceTextChat (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceTextChatroom (const QString &roomName, const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceTextChatroom (const QString &roomName, const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceStreamedMediaCall (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleConferenceStreamedMediaCall (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelcreateAndHandleContactSearch (const QString &server=QString(), uint limit=0, const QDateTime &userActionTime=QDateTime::currentDateTime())
 
PendingChannelRequestcreateChannel (const QVariantMap &requestedProperties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelRequestensureChannel (const QVariantMap &requestedProperties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())
 
PendingChannelcreateAndHandleChannel (const QVariantMap &requestedProperties, const QDateTime &userActionTime)
 
PendingChannelensureAndHandleChannel (const QVariantMap &requestedProperties, const QDateTime &userActionTime)
 
- Public Member Functions inherited from Tp::StatelessDBusProxy
 StatelessDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatelessDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Account >
 OptionalInterfaceFactory (Account *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static AccountPtr create (const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static AccountPtr create (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureAvatar
 
static const Feature FeatureProtocolInfo
 
static const Feature FeatureCapabilities
 
static const Feature FeatureProfile
 

Protected Member Functions

 Account (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature)
 
Client::AccountInterfacebaseInterface () const
 
Client::ChannelDispatcherInterfacedispatcherInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Account >
void setInterfaces (const QStringList &interfaces)
 

Properties

bool valid
 
bool enabled
 
QString cmName
 
QString protocolName
 
QString serviceName
 
ProfilePtr profile
 
QString displayName
 
QString iconName
 
QString nickname
 
AvatarSpec avatarRequirements
 
Avatar avatar
 
QVariantMap parameters
 
ProtocolInfo protocolInfo
 
ConnectionCapabilities capabilities
 
bool hasBeenOnline
 
bool connectsAutomatically
 
ConnectionStatus connectionStatus
 
ConnectionStatusReason connectionStatusReason
 
QString connectionError
 
Tp::Connection::ErrorDetails connectionErrorDetails
 
ConnectionPtr connection
 
bool changingPresence
 
Presence automaticPresence
 
Presence currentPresence
 
Presence requestedPresence
 
bool online
 
QString uniqueIdentifier
 
QString normalizedName
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Account >
enum  InterfaceSupportedChecking
 

Detailed Description

The Account class represents a Telepathy account.

The remote object accessor functions on this object (isValidAccount(), isEnabled(), and so on) don't make any D-Bus calls; instead, they return/use values cached from a previous introspection run. The introspection process populates their values in the most efficient way possible based on what the service implements.

To avoid unnecessary D-Bus traffic, some accessors only return valid information after specific features have been enabled. For instance, to retrieve the account protocol information, it is necessary to enable the feature Account::FeatureProtocolInfo. See the individual methods descriptions for more details.

Account features can be enabled by constructing an AccountFactory and enabling the desired features, and passing it to AccountManager or ClientRegistrar when creating them as appropriate. However, if a particular feature is only ever used in a specific circumstance, such as an user opening some settings dialog separate from the general view of the application, features can be later enabled as needed by calling becomeReady() with the additional features, and waiting for the resulting PendingOperation to finish.

As an addition to accessors, signals are emitted to indicate that properties have changed, for example displayNameChanged(), iconNameChanged(), etc.

Convenience methods to create channels using the channel dispatcher such as ensureTextChat(), createFileTransfer() are also provided.

If the account is deleted from the AccountManager, this object will not be deleted automatically; however, it will emit invalidated() with error code TP_QT_ERROR_OBJECT_REMOVED and will cease to be useful.

Usage

Creating an account object

The easiest way to create account objects is through AccountManager. One can just use the AccountManager convenience methods such as AccountManager::validAccounts() to get a list of account objects representing valid accounts.

If you already know the object path, you can just call create(). For example:

AccountPtr acc = Account::create(busName, objectPath);

An AccountPtr object is returned, which will automatically keep track of object lifetime.

You can also provide a D-Bus connection as a QDBusConnection:

*
* AccountPtr acc = Account::create(QDBusConnection::sessionBus(),
*
*

Making account ready to use

An Account object needs to become ready before usage, meaning that the introspection process finished and the object accessors can be used.

To make the object ready, use becomeReady() and wait for the PendingOperation::finished() signal to be emitted.

*
* class MyClass : public QObject
* {
* QOBJECT
*
* public:
* MyClass(QObject *parent = 0);
* ~MyClass() { }
*
* private Q_SLOTS:
* void onAccountReady(Tp::PendingOperation*);
*
* private:
* AccountPtr acc;
* };
*
* MyClass::MyClass(const QString &busName, const QString &objectPath,
* QObject *parent)
* : QObject(parent)
* {
* connect(acc->becomeReady(),
* SIGNAL(finished(Tp::PendingOperation*)),
* SLOT(onAccountReady(Tp::PendingOperation*)));
* }
*
* void MyClass::onAccountReady(Tp::PendingOperation *op)
* {
* if (op->isError()) {
* qWarning() << "Account cannot become ready:" <<
* op->errorName() << "-" << op->errorMessage();
* return;
* }
*
* // Account is now ready
* qDebug() << "Display name:" << acc->displayName();
* }
*
*

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::Account::~Account ( )
virtual

Class destructor.

Tp::Account::Account ( const QDBusConnection &  bus,
const QString &  busName,
const QString &  objectPath,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory,
const Feature coreFeature 
)
protected

Construct a new Account object using the given bus and the given factories.

A warning is printed if the factories are not for bus.

Parameters
busQDBusConnection to use.
busNameThe account well-known bus name (sometimes called a "service name"). This is usually the same as the account manager bus name TP_QT_ACCOUNT_MANAGER_BUS_NAME.
objectPathThe account object path.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
coreFeatureThe core feature of the Account subclass. The corresponding introspectable should depend on Account::FeatureCore.

Member Function Documentation

AccountPtr Tp::Account::create ( const QString &  busName,
const QString &  objectPath,
const ConnectionFactoryConstPtr &  connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()),
const ChannelFactoryConstPtr &  channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()),
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new Account object using QDBusConnection::sessionBus() and the given factories.

A warning is printed if the factories are not for QDBusConnection::sessionBus().

Parameters
busNameThe account well-known bus name (sometimes called a "service name"). This is usually the same as the account manager bus name TP_QT_ACCOUNT_MANAGER_BUS_NAME.
objectPathThe account object path.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
An AccountPtr object pointing to the newly created Account object.
AccountPtr Tp::Account::create ( const QDBusConnection &  bus,
const QString &  busName,
const QString &  objectPath,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new Account object using the given bus and the given factories.

A warning is printed if the factories are not for bus.

Parameters
busQDBusConnection to use.
busNameThe account well-known bus name (sometimes called a "service name"). This is usually the same as the account manager bus name TP_QT_ACCOUNT_MANAGER_BUS_NAME.
objectPathThe account object path.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
An AccountPtr object pointing to the newly created Account object.
ConnectionFactoryConstPtr Tp::Account::connectionFactory ( ) const

Return the connection factory used by this account.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the account would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ConnectionFactory object.
ChannelFactoryConstPtr Tp::Account::channelFactory ( ) const

Return the channel factory used by this account.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the account would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ChannelFactory object.
ContactFactoryConstPtr Tp::Account::contactFactory ( ) const

Return the contact factory used by this account.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the account would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ContactFactory object.
bool Tp::Account::isValidAccount ( ) const

Return whether this account is valid.

If true, this account is considered by the account manager to be complete and usable. If false, user action is required to make it usable, and it will never attempt to connect. For instance, this might be caused by the absence or misconfiguration of a required parameter, in which case updateParameters() may be used to properly set the parameters values.

Change notification is via the validityChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
true if valid, false otherwise.
See Also
validityChanged(), updateParameters()
bool Tp::Account::isEnabled ( ) const

Return whether this account is enabled.

Change notification is via the stateChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
true if enabled, false otherwise.
See Also
stateChanged(), setEnabled()
PendingOperation * Tp::Account::setEnabled ( bool  value)

Set whether this account should be enabled or disabled.

This gives users the possibility to prevent an account from being used.

Note that changing this property won't change the validity of the account.

Parameters
valueWhether this account should be enabled or disabled.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
stateChanged(), isEnabled()
QString Tp::Account::cmName ( ) const
QString Tp::Account::protocolName ( ) const
QString Tp::Account::serviceName ( ) const
PendingOperation * Tp::Account::setServiceName ( const QString &  value)

Set the service name of this account.

Some protocols, like XMPP and SIP, are used by various different user-recognised brands, such as Google Talk. On accounts for such services, this method can be used to set the name describing the service, which must consist only of ASCII letters, numbers and hyphen/minus signs, and start with a letter. For the jabber protocol, one of the following service names should be used if possible:

google-talk (for Google's IM service) facebook (for Facebook's IM service) lj-talk (for LiveJournal's IM service)

The service name may also be set, if appropriate, when creating the account. See AccountManager::createAccount() for more details.

Note that changing this property may also change the profile() used by this account, in which case profileChanged() will be emitted in addition to serviceNameChanged(), if Account::FeatureProfile is enabled.

Parameters
valueThe service name of this account.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
serviceNameChanged(), serviceName()
ProfilePtr Tp::Account::profile ( ) const
QString Tp::Account::displayName ( ) const
PendingOperation * Tp::Account::setDisplayName ( const QString &  value)

Set the display name of this account.

The display name is the user-visible name of this account. This is usually chosen by the user at account creation time. See AccountManager::createAccount() for more details.

Parameters
valueThe display name of this account.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
displayNameChanged(), displayName()
QString Tp::Account::iconName ( ) const
PendingOperation * Tp::Account::setIconName ( const QString &  value)

Set the icon name of this account.

Parameters
valueThe icon name of this account.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
iconNameChanged(), iconName()
QString Tp::Account::nickname ( ) const
PendingOperation * Tp::Account::setNickname ( const QString &  value)

Set the nickname of this account as seen to other contacts.

Parameters
valueThe nickname of this account.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
nicknameChanged(), nickname()
AvatarSpec Tp::Account::avatarRequirements ( ) const
const Avatar& Tp::Account::avatar ( ) const
PendingOperation * Tp::Account::setAvatar ( const Avatar avatar)

Set avatar of this account as seen to other contacts.

Note that avatar must match the requirements as returned by avatarRequirements().

Parameters
avatarThe avatar of this account.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
avatarChanged(), avatar(), avatarRequirements()
QVariantMap Tp::Account::parameters ( ) const
PendingStringList * Tp::Account::updateParameters ( const QVariantMap &  set,
const QStringList &  unset 
)

Update this account parameters.

On success, the PendingOperation returned by this method will produce a list of strings, which are the names of parameters whose changes will not take effect until the account is disconnected and reconnected (for instance by calling reconnect()).

Parameters
setParameters to set.
unsetParameters to unset.
Returns
A PendingStringList which will emit PendingStringList::finished when the request has been made
See Also
parametersChanged(), parameters(), reconnect()
ProtocolInfo Tp::Account::protocolInfo ( ) const
ConnectionCapabilities Tp::Account::capabilities ( ) const
bool Tp::Account::connectsAutomatically ( ) const
PendingOperation * Tp::Account::setConnectsAutomatically ( bool  value)

Set whether this account should be put online automatically whenever possible.

Parameters
valueValue indicating if this account should be put online whenever possible.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
connectsAutomaticallyPropertyChanged(), connectsAutomatically()
bool Tp::Account::hasBeenOnline ( ) const
ConnectionStatus Tp::Account::connectionStatus ( ) const
ConnectionStatusReason Tp::Account::connectionStatusReason ( ) const
QString Tp::Account::connectionError ( ) const
Connection::ErrorDetails Tp::Account::connectionErrorDetails ( ) const
ConnectionPtr Tp::Account::connection ( ) const
bool Tp::Account::isChangingPresence ( ) const

Return whether this account connection is changing presence.

Change notification is via the changingPresence() signal.

This method requires Account::FeatureCore to be ready.

Returns
true if changing presence, false otherwise.
See Also
changingPresence(), currentPresenceChanged(), setRequestedPresence()
PresenceSpecList Tp::Account::allowedPresenceStatuses ( bool  includeAllStatuses = false) const

Return a list of presences allowed by a connection to this account.

In particular, for the statuses reported here it can be assumed that setting them as the requested presence via setRequestedPresence() will eventually result in currentPresence() changing to exactly said presence. Other statuses are only guaranteed to be matched as closely as possible.

The statuses can be also used for the automatic presence, as set by setAutomaticPresence(), with the exception of any status specifications for which Presence::type() is Tp::ConnectionPresenceTypeOffline for the Presence returned by PresenceSpec::presence().

However, the optional parameter can be used to allow reporting also other possible presence statuses on this protocol besides the others that can be set on yourself. These are purely informatory, for e.g. adjusting an UI to allow all possible remote contact statuses to be displayed.

An offline presence status is always included, because it's always valid to make an account offline by setting the requested presence to an offline status.

Full functionality requires Account::FeatureProtocolInfo and Account::FeatureProfile to be ready as well as connection with Connection::FeatureSimplePresence enabled. If the connection is online and Connection::FeatureSimplePresence is enabled, it will return the connection allowed statuses, otherwise it will return a list os statuses based on profile() and protocolInfo() information if the corresponding features are enabled.

If there's a mismatch between the presence status info provided in the .profile file and/or the .manager file and what an online Connection actually reports (for example, the said data files are missing or too old to include presence information), the returned value can change, in particular when connectionChanged() is emitted with a connection for which Connection::status() is Tp::ConnectionStatusConnected.

This method requires Account::FeatureCore to be ready.

Parameters
includeAllStatusesWhether the returned list will include all statuses or just the ones that can be settable using setRequestedPresence().
Returns
The allowed statuses as a list of PresenceSpec objects.
uint Tp::Account::maxPresenceStatusMessageLength ( ) const

Return the maximum length for a presence status message.

If a status message set using setRequestedPresence() (or setAutomaticPresence()) is longer than the maximum length allowed, the message will be truncated and currentPresenceChanged() will be emitted (if setting the presence worked) with the truncated message.

Full functionality requires Connection with Connection::FeatureSimplePresence enabled. If the connection is online and Connection::FeatureSimplePresence is enabled, it will return the connection maximum status message length, otherwise it will return 0.

This method requires Account::FeatureCore to be ready.

Returns
The maximum length, or 0 if there is no limit.
Presence Tp::Account::automaticPresence ( ) const
PendingOperation * Tp::Account::setAutomaticPresence ( const Presence presence)

Set the presence status that this account should have if it is brought online automatically by the account manager.

Note that changing this property won't actually change the account's status until the next time it is (re)connected for some reason.

The value of this property must be one that would be acceptable for setRequestedPresence(), as returned by allowedPresenceStatuses(), with the additional restriction that the offline presence cannot be used.

Parameters
presenceThe presence to set when this account is brought online automatically by the account manager.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
automaticPresenceChanged(), automaticPresence(), setRequestedPresence()
Presence Tp::Account::currentPresence ( ) const
Presence Tp::Account::requestedPresence ( ) const
PendingOperation * Tp::Account::setRequestedPresence ( const Presence presence)

Set the requested presence of this account.

When the requested presence is changed, the account manager will attempt to manipulate the connection to make currentPresence() match requestedPresence() as closely as possible.

Parameters
presenceThe requested presence.
Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
requestedPresenceChanged(), currentPresence(), automaticPresence(), setAutomaticPresence()
bool Tp::Account::isOnline ( ) const

Return whether this account is online.

Change notification is via the onlinenessChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
true if online, otherwise false.
See Also
onlinenessChanged()
QString Tp::Account::uniqueIdentifier ( ) const
QString Tp::Account::normalizedName ( ) const
PendingOperation * Tp::Account::reconnect ( )

If this account is currently connected, disconnect and reconnect it. If it is currently trying to connect, cancel the attempt to connect and start another. If it is currently disconnected, do nothing.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
PendingOperation * Tp::Account::remove ( )

Delete this account.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
See Also
removed()
bool Tp::Account::supportsRequestHints ( ) const

Return whether passing hints on channel requests on this account is known to be supported.

This method requires Account::FeatureCore to be ready.

Returns
true if supported, false otherwise.
bool Tp::Account::requestsSucceedWithChannel ( ) const

Return whether the ChannelRequest::succeeded(const Tp::ChannelPtr &channel) signal is expected to be emitted with a non-NULL channel parameter for requests made using this account.

This can be used as a run-time check for the Channel Dispatcher implementation being new enough. In particular, similarly old Channel Dispatchers don't support request hints either, so the return value for this function and Account::supportsRequestHints() will bet he same.

This method requires Account::FeatureCore to be ready.

Returns
true if supported, false otherwise.
PendingChannelRequest * Tp::Account::ensureTextChat ( const QString &  contactIdentifier,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a text channel with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactIdentifierThe identifier of the contact to chat with.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureTextChat ( const ContactPtr &  contact,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a text channel with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactThe contact to chat with.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureTextChatroom ( const QString &  roomName,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a text chat room with the given room name roomName exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
roomNameThe name of the chat room.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureAudioCall ( const QString &  contactIdentifier,
const QString &  initialAudioContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that an audio call channel with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactIdentifierThe identifier of the contact to call.
initialAudioContentNameThe name of the initial CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureAudioCall ( const ContactPtr &  contact,
const QString &  initialAudioContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that an audio call channel with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactThe contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureVideoCall ( const QString &  contactIdentifier,
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a video call channel with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactIdentifierThe identifier of the contact to call.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureVideoCall ( const ContactPtr &  contact,
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a video call channel with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactThe contact to call.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureAudioVideoCall ( const QString &  contactIdentifier,
const QString &  initialAudioContentName = QString(),
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that an audio/video call channel with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactIdentifierThe identifier of the contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureAudioVideoCall ( const ContactPtr &  contact,
const QString &  initialAudioContentName = QString(),
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that an audio/video call channel with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactThe contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureStreamedMediaCall ( const QString &  contactIdentifier,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a media channel with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactIdentifierThe identifier of the contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureStreamedMediaCall ( const ContactPtr &  contact,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a media channel with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

Parameters
contactThe contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureStreamedMediaAudioCall ( const QString &  contactIdentifier,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that an audio call with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactIdentifierThe identifier of the contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureStreamedMediaAudioCall ( const ContactPtr &  contact,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that an audio call with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactThe contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureStreamedMediaVideoCall ( const QString &  contactIdentifier,
bool  withAudio = true,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a video call with the given contact contactIdentifier exists, creating it if necessary.

See ensureChannel() for more details.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactIdentifierThe identifier of the contact to call.
withAudiotrue if both audio and video are required, false for a video-only call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::ensureStreamedMediaVideoCall ( const ContactPtr &  contact,
bool  withAudio = false,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a video call with the given contact contact exists, creating it if necessary.

See ensureChannel() for more details.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactThe contact to call.
withAudiotrue if both audio and video are required, false for a video-only call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createFileTransfer ( const QString &  contactIdentifier,
const FileTransferChannelCreationProperties properties,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a file transfer channel with the given contact contact.

Parameters
contactIdentifierThe identifier of the contact to send a file.
propertiesThe desired properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createFileTransfer ( const ContactPtr &  contact,
const FileTransferChannelCreationProperties properties,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a file transfer channel with the given contact contact.

Parameters
contactThe contact to send a file.
propertiesThe desired properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createStreamTube ( const QString &  contactIdentifier,
const QString &  service,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a stream tube channel with the given contact identifier contactIdentifier.

Parameters
contactIdentifierThe identifier of the contact to open a stream tube with.
serviceThe stream tube service.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createStreamTube ( const ContactPtr &  contact,
const QString &  service,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a stream tube channel with the given contact contact.

Parameters
contactThe contact to open a stream tube with.
serviceThe stream tube service.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createDBusTube ( const QString &  contactIdentifier,
const QString &  serviceName,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a DBus tube channel with the given contact contactIdentifier.

Parameters
contactIdentifierThe contact identifier of the contact to open a DBus tube with.
serviceNamethe service name that will be used over the tube. It should be a well-known D-Bus service name, of the form com.example.ServiceName
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the call has finished.
See Also
ensureChannel(), createChannel()
PendingChannelRequest* Tp::Account::createDBusTube ( const ContactPtr &  contact,
const QString &  serviceName,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)
PendingChannelRequest * Tp::Account::createDBusTubeRoom ( const QString &  room,
const QString &  serviceName,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)
PendingChannelRequest * Tp::Account::createConferenceStreamedMediaCall ( const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference media call with the given channels channels.

Parameters
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceStreamedMediaCall ( const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference media call with the given channels channels.

Parameters
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceCall ( const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference call with the given channels channels.

Parameters
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceCall ( const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference call with the given channels channels.

Parameters
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceTextChat ( const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference text chat with the given channels channels.

Parameters
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceTextChat ( const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference text chat with the given channels channels.

Parameters
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceTextChatroom ( const QString &  roomName,
const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference text chat room with the given channels channels and room name roomName.

Parameters
roomNameThe room name.
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannelRequest * Tp::Account::createConferenceTextChatroom ( const QString &  roomName,
const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a conference text chat room with the given channels channels and room name roomName.

Parameters
roomNameThe room name.
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
ensureChannel(), createChannel()
PendingChannel * Tp::Account::createAndHandleConferenceCall ( const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference call with the given channels channels. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceCall ( const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference call with the given channels channels. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannelRequest * Tp::Account::createContactSearch ( const QString &  server,
uint  limit = 0,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a contact search channel with the given server server and limit limit.

Parameters
serverFor protocols which support searching for contacts on multiple servers with different DNS names (like XMPP), the DNS name of the server to be searched, e.g. "characters.shakespeare.lit". Otherwise, an empty string.
limitThe desired maximum number of results that should be returned by a doing a search. If the protocol does not support specifying a limit for the number of results returned at a time, this will be ignored.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
createChannel()
PendingChannel * Tp::Account::ensureAndHandleTextChat ( const QString &  contactIdentifier,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a text channel with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to chat with.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleTextChat ( const ContactPtr &  contact,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a text channel with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to chat with.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleTextChatroom ( const QString &  roomName,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a text chat room with the given room name roomName exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
roomNameThe name of the chat room.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleAudioCall ( const QString &  contactIdentifier,
const QString &  initialAudioContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that an audio call channel with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleAudioCall ( const ContactPtr &  contact,
const QString &  initialAudioContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that an audio call channel with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleVideoCall ( const QString &  contactIdentifier,
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a video call channel with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to call.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleVideoCall ( const ContactPtr &  contact,
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a video call channel with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to call.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleAudioVideoCall ( const QString &  contactIdentifier,
const QString &  initialAudioContentName = QString(),
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that an audio/video call channel with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleAudioVideoCall ( const ContactPtr &  contact,
const QString &  initialAudioContentName = QString(),
const QString &  initialVideoContentName = QString(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that an audio/video call channel with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to call.
initialAudioContentNameThe name of the initial audio CallContent that will be automatically added on the channel.
initialVideoContentNameThe name of the initial video CallContent that will be automatically added on the channel.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleStreamedMediaCall ( const QString &  contactIdentifier,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a media channel with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleStreamedMediaCall ( const ContactPtr &  contact,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a media channel with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleStreamedMediaAudioCall ( const QString &  contactIdentifier,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that an audio call with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactIdentifierThe identifier of the contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleStreamedMediaAudioCall ( const ContactPtr &  contact,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that an audio call with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactThe contact to call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleStreamedMediaVideoCall ( const QString &  contactIdentifier,
bool  withAudio = true,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a video call with the given contact contactIdentifier exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactIdentifierThe identifier of the contact to call.
withAudiotrue if both audio and video are required, false for a video-only call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleStreamedMediaVideoCall ( const ContactPtr &  contact,
bool  withAudio = true,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to ensure that a video call with the given contact contact exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

This will only work on relatively modern connection managers, like telepathy-gabble 0.9.0 or later.

Parameters
contactThe contact to call.
withAudiotrue if both audio and video are required, false for a video-only call.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleFileTransfer ( const QString &  contactIdentifier,
const FileTransferChannelCreationProperties properties,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a file transfer channel with the given contact contactIdentifier. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to send a file.
propertiesThe desired properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleFileTransfer ( const ContactPtr &  contact,
const FileTransferChannelCreationProperties properties,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a file transfer channel with the given contact contact. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to send a file.
propertiesThe desired properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleStreamTube ( const QString &  contactIdentifier,
const QString &  service,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a stream tube channel with the given contact identifier contactIdentifier. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to open a stream tube with.
serviceThe stream tube service.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleStreamTube ( const ContactPtr &  contact,
const QString &  service,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a stream tube channel with the given contact contact. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to open a stream tube with.
serviceThe stream tube service.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleDBusTube ( const QString &  contactIdentifier,
const QString &  serviceName,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a DBus tube channel with the given contact identifier contactIdentifier. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactIdentifierThe identifier of the contact to open a DBus tube with.
serviceNameThe DBus tube service name.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleDBusTube ( const ContactPtr &  contact,
const QString &  serviceName,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a DBus tube channel with the given contact contact. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
contactThe contact to open a DBus tube with.
serviceNameThe DBus tube service name.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceTextChat ( const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference text chat with the given channels channels. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceTextChat ( const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference text chat with the given channels channels. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceTextChatroom ( const QString &  roomName,
const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference text chat room with the given channels channels and room name roomName. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
roomNameThe room name.
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceTextChatroom ( const QString &  roomName,
const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference text chat room with the given channels channels and room name roomName. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
roomNameThe room name.
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceStreamedMediaCall ( const QList< ChannelPtr > &  channels,
const QStringList &  initialInviteeContactsIdentifiers = QStringList(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference media call with the given channels channels. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
channelsThe conference channels.
initialInviteeContactsIdentifiersA list of additional contacts identifiers to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleConferenceStreamedMediaCall ( const QList< ChannelPtr > &  channels,
const QList< ContactPtr > &  initialInviteeContacts = QList<ContactPtr>(),
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a conference media call with the given channels channels. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
channelsThe conference channels.
initialInviteeContactsA list of additional contacts to be invited to this conference when it is created.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannel * Tp::Account::createAndHandleContactSearch ( const QString &  server = QString(),
uint  limit = 0,
const QDateTime &  userActionTime = QDateTime::currentDateTime() 
)

Start a request to create a contact search channel with the given server server and limit limit. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Parameters
serverFor protocols which support searching for contacts on multiple servers with different DNS names (like XMPP), the DNS name of the server to be searched, e.g. "characters.shakespeare.lit". Otherwise, an empty string. If the protocol does not support specifying a search server, this will be ignored.
limitThe desired maximum number of results that should be returned by a doing a search. If the protocol does not support specifying a limit for the number of results returned at a time, this will be ignored.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel(), createAndHandleChannel()
PendingChannelRequest * Tp::Account::createChannel ( const QVariantMap &  request,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to create a channel. This initially just creates a PendingChannelRequest object, which can be used to track the success or failure of the request, or to cancel it.

Helper methods for text chat, text chat room, media call and conference are provided and should be used if appropriate.

Parameters
requestA dictionary containing desirable properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
createChannel()
PendingChannelRequest * Tp::Account::ensureChannel ( const QVariantMap &  request,
const QDateTime &  userActionTime = QDateTime::currentDateTime(),
const QString &  preferredHandler = QString(),
const ChannelRequestHints hints = ChannelRequestHints() 
)

Start a request to ensure that a channel exists, creating it if necessary. This initially just creates a PendingChannelRequest object, which can be used to track the success or failure of the request, or to cancel it.

Helper methods for text chat, text chat room, media call and conference are provided and should be used if appropriate.

Parameters
requestA dictionary containing desirable properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
preferredHandlerEither the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.
hintsArbitrary metadata which will be relayed to the handler if supported, as indicated by supportsRequestHints().
Returns
A PendingChannelRequest which will emit PendingChannelRequest::finished when the request has been made.
See Also
createChannel()
PendingChannel * Tp::Account::createAndHandleChannel ( const QVariantMap &  request,
const QDateTime &  userActionTime 
)

Start a request to create channel. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Helper methods for text chat, text chat room, media call and conference are provided and should be used if appropriate.

The caller is responsible for closing the channel with Channel::requestClose() or Channel::requestLeave() when it has finished handling it.

A possible error returned by this method is TP_QT_ERROR_NOT_AVAILABLE, in case a conflicting channel that matches request already exists.

Parameters
requestA dictionary containing desirable properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
ensureAndHandleChannel()
PendingChannel * Tp::Account::ensureAndHandleChannel ( const QVariantMap &  request,
const QDateTime &  userActionTime 
)

Start a request to ensure that a channel exists, creating it if necessary. This initially just creates a PendingChannel object, which can be used to track the success or failure of the request.

Helper methods for text chat, text chat room, media call and conference are provided and should be used if appropriate.

The caller is responsible for closing the channel with Channel::requestClose() or Channel::requestLeave() when it has finished handling it.

A possible error returned by this method is TP_QT_ERROR_NOT_YOURS, in case somebody else is already handling a channel that matches request.

Parameters
requestA dictionary containing desirable properties.
userActionTimeThe time at which user action occurred, or QDateTime() if this channel request is for some reason not involving user action.
Returns
A PendingChannel which will emit PendingChannel::finished successfully, when the Channel is available for handling using PendingChannel::channel(), or with an error if one has been encountered.
See Also
createAndHandleChannel()
void Tp::Account::removed ( )
signal

Emitted when this account is removed from the account manager it belonged.

See Also
remove().
void Tp::Account::serviceNameChanged ( const QString &  serviceName)
signal

Emitted when the value of serviceName() changes.

Parameters
serviceNameThe new service name of this account.
See Also
serviceName(), setServiceName()
void Tp::Account::profileChanged ( const Tp::ProfilePtr &  profile)
signal

Emitted when the value of profile() changes.

Parameters
profileThe new profile of this account.
See Also
profile()
void Tp::Account::displayNameChanged ( const QString &  displayName)
signal

Emitted when the value of displayName() changes.

Parameters
displayNameThe new display name of this account.
See Also
displayName(), setDisplayName()
void Tp::Account::iconNameChanged ( const QString &  iconName)
signal

Emitted when the value of iconName() changes.

Parameters
iconNameThe new icon name of this account.
See Also
iconName(), setIconName()
void Tp::Account::nicknameChanged ( const QString &  nickname)
signal

Emitted when the value of nickname() changes.

Parameters
nicknameThe new nickname of this account.
See Also
nickname(), setNickname()
void Tp::Account::normalizedNameChanged ( const QString &  normalizedName)
signal

Emitted when the value of normalizedName() changes.

Parameters
normalizedNameThe new normalized name of this account.
See Also
normalizedName()
void Tp::Account::validityChanged ( bool  validity)
signal

Emitted when the value of isValidAccount() changes.

Parameters
validityThe new validity of this account.
See Also
isValidAccount()
void Tp::Account::stateChanged ( bool  state)
signal

Emitted when the value of isEnabled() changes.

Parameters
stateThe new state of this account.
See Also
isEnabled()
void Tp::Account::capabilitiesChanged ( const Tp::ConnectionCapabilities capabilities)
signal

Emitted when the value of capabilities() changes.

Parameters
capabilitiesThe new capabilities of this account.
See Also
capabilities()
void Tp::Account::connectsAutomaticallyPropertyChanged ( bool  connectsAutomatically)
signal

Emitted when the value of connectsAutomatically() changes.

Parameters
connectsAutomaticallyThe new value of connects automatically property of this account.
See Also
isEnabled()
void Tp::Account::firstOnline ( )
signal

Emitted when this account is first put online.

See Also
hasBeenOnline()
void Tp::Account::parametersChanged ( const QVariantMap &  parameters)
signal

Emitted when the value of parameters() changes.

Parameters
parametersThe new parameters of this account.
See Also
parameters()
void Tp::Account::changingPresence ( bool  value)
signal

Emitted when the value of isChangingPresence() changes.

Parameters
valueWhether this account's connection is changing presence.
See Also
isChangingPresence()
void Tp::Account::automaticPresenceChanged ( const Tp::Presence automaticPresence)
signal

Emitted when the value of automaticPresence() changes.

Parameters
automaticPresenceThe new value of automatic presence property of this account.
See Also
automaticPresence(), currentPresenceChanged()
void Tp::Account::currentPresenceChanged ( const Tp::Presence currentPresence)
signal

Emitted when the value of currentPresence() changes.

Parameters
currentPresenceThe new value of the current presence property of this account.
See Also
currentPresence()
void Tp::Account::requestedPresenceChanged ( const Tp::Presence requestedPresence)
signal

Emitted when the value of requestedPresence() changes.

Parameters
requestedPresenceThe new value of the requested presence property of this account.
See Also
requestedPresence(), currentPresenceChanged()
void Tp::Account::onlinenessChanged ( bool  online)
signal

Emitted when the value of isOnline() changes.

Parameters
onlineWhether this account is online.
See Also
isOnline(), currentPresence()
void Tp::Account::avatarChanged ( const Tp::Avatar avatar)
signal

Emitted when the value of avatar() changes.

Parameters
avatarThe new avatar of this account.
See Also
avatar()
void Tp::Account::connectionStatusChanged ( Tp::ConnectionStatus  status)
signal

Emitted when the connection status changes.

Parameters
statusThe new status of this account connection.
See Also
connectionStatus(), connectionStatusReason(), connectionError(), connectionErrorDetails(), Connection::ErrorDetails
void Tp::Account::connectionChanged ( const Tp::ConnectionPtr &  connection)
signal

Emitted when the value of connection() changes.

The connection will have the features set in the ConnectionFactory used by this account ready and the same channel and contact factories used by this account.

Parameters
connectionA ConnectionPtr pointing to the new Connection object or a null ConnectionPtr if there is no connection.
See Also
connection()
Client::AccountInterface * Tp::Account::baseInterface ( ) const
protected

Return the Client::AccountInterface interface proxy object for this account. This method is protected since the convenience methods provided by this class should generally be used instead of calling D-Bus methods directly.

Returns
A pointer to the existing Client::AccountInterface object for this Account object.
Client::ChannelDispatcherInterface * Tp::Account::dispatcherInterface ( ) const
protected

Return the Client::ChannelDispatcherInterface interface proxy object to use for requesting channels on this account.

This method is protected since the convenience methods provided by this class should generally be used instead of calling D-Bus methods directly.

Returns
A pointer to the existing Client::ChannelDispatcherInterface object for this Account object.

Member Data Documentation

const Feature Tp::Account::FeatureCore
static

Feature representing the core that needs to become ready to make the Account object usable.

Note that this feature must be enabled in order to use most Account methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

const Feature Tp::Account::FeatureAvatar
static

Feature used in order to access account avatar info.

See avatar specific methods' documentation for more details.

See Also
avatar(), avatarChanged()
const Feature Tp::Account::FeatureProtocolInfo
static

Feature used in order to access account protocol info.

See protocol info specific methods' documentation for more details.

See Also
protocolInfo()
const Feature Tp::Account::FeatureCapabilities
static

Feature used in order to access account capabilities.

Enabling this feature will also enable FeatureProtocolInfo and FeatureProfile.

See capabilities specific methods' documentation for more details.

See Also
capabilities(), capabilitiesChanged()
const Feature Tp::Account::FeatureProfile
static

Feature used in order to access account profile info.

See profile specific methods' documentation for more details.

See Also
profile(), profileChanged()

Property Documentation

bool Tp::Account::valid
read
bool Tp::Account::enabled
read
QString Tp::Account::cmName
read

Return the connection manager name of this account.

Returns
The connection manager name.
QString Tp::Account::protocolName
read

Return the protocol name of this account.

Returns
The protocol name.
QString Tp::Account::serviceName
read

Return the service name of this account.

Note that this method will fallback to protocolName() if service name is not known.

Change notification is via the serviceNameChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The service name.
See Also
serviceNameChanged(), setServiceName(), protocolName()
ProfilePtr Tp::Account::profile
read

Return the profile used by this account.

Profiles are intended to describe variants of the basic protocols supported by Telepathy connection managers. An example of this would be Google Talk vs Facebook chat vs Jabber/XMPP. Google Talk is a specific case of XMPP with well-known capabilities, quirks and settings, and Facebook chat is a subset of the standard XMPP offering.

This method will return the profile for this account based on the service used by it.

Note that if a profile for serviceName() is not available, a fake profile (Profile::isFake() is true) will be returned in case protocolInfo() is valid.

The fake profile will contain the following info:

Change notification is via the profileChanged() signal.

This method requires Account::FeatureProfile to be ready.

Returns
A pointer to the Profile object.
See Also
profileChanged(), serviceName()
QString Tp::Account::displayName
read

Return the display name of this account.

Change notification is via the displayNameChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The display name.
See Also
displayNameChanged(), setDisplayName()
QString Tp::Account::iconName
read

Return the icon name of this account.

If the account has no icon, and Account::FeatureProfile is enabled, the icon from the result of profile() will be used.

If neither the account nor the profile has an icon, and Account::FeatureProtocolInfo is enabled, the icon from protocolInfo() will be used if set.

As a last resort, "im-" + protocolName() will be returned.

This matches the fallbacks recommended by the Telepathy specification.

Change notification is via the iconNameChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The icon name.
See Also
iconNameChanged(), setIconName()
QString Tp::Account::nickname
read

Return the nickname of this account.

Change notification is via the nicknameChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The nickname.
See Also
nicknameChanged(), setNickname()
AvatarSpec Tp::Account::avatarRequirements
read

Return the avatar requirements (size limits, supported MIME types, etc) for avatars passed to setAvatar() on this account.

For now this method will only return the avatar requirements found in protocolInfo() if Account::FeatureProtocolInfo is ready, otherwise an invalid AvatarSpec instance is returned.

Returns
The requirements as an AvatarSpec object.
See Also
avatar(), setAvatar()
const Avatar & Tp::Account::avatar
read

Return the avatar of this account.

Change notification is via the avatarChanged() signal.

This method requires Account::FeatureAvatar to be ready.

Returns
The avatar as an Avatar object.
See Also
avatarChanged(), setAvatar()
QVariantMap Tp::Account::parameters
read

Return the parameters of this account.

The account parameters are represented as a map from connection manager parameter names to their values.

Change notification is via the parametersChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The parameters as QVariantMap.
See Also
parametersChanged(), updateParameters()
ProtocolInfo Tp::Account::protocolInfo
read

Return the protocol info of this account protocol.

This method requires Account::FeatureProtocolInfo to be ready.

Returns
The protocol info as a ProtocolInfo object.
ConnectionCapabilities Tp::Account::capabilities
read

Return the capabilities for this account.

Note that this method will return the connection() capabilities if the account is online and ready. If the account is disconnected, it will fallback to return the subtraction of the protocolInfo() capabilities and the profile() unsupported capabilities.

Change notification is via the capabilitiesChanged() signal.

This method requires Account::FeatureCapabilities to be ready.

Returns
The capabilities as a ConnectionCapabilities object.
See Also
capabilitiesChanged(), protocolInfo(), profile()
bool Tp::Account::hasBeenOnline
read

Return whether this account has ever been put online successfully.

This property cannot change from true to false, only from false to true. When the account successfully goes online for the first time, or when it is detected that this has already happened, the firstOnline() signal is emitted.

This method requires Account::FeatureCore to be ready.

Returns
true if ever been online, false otherwise.
bool Tp::Account::connectsAutomatically
read

Return whether this account should be put online automatically whenever possible.

Change notification is via the connectsAutomaticallyPropertyChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
true if it should try to connect automatically, false otherwise.
See Also
connectsAutomaticallyPropertyChanged(), setConnectsAutomatically()
ConnectionStatus Tp::Account::connectionStatus
read

Return the status of this account connection.

Note that this method may return a different value from the one returned by Connection::status() on this account connection. This happens because this value will change whenever the connection status of this account connection changes and won't consider the Connection introspection process. The same rationale also applies to connectionStatusReason() and connectionErrorDetails().

A valid use case for this is for account creation UIs that wish to display the accounts connection status and nothing else on the connections (e.g. retrieve the contact list).

Change notification is via the connectionStatusChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The connection status as ConnectionStatus.
See Also
connectionStatusChanged(), connectionStatusReason(), connectionError(), connectionErrorDetails()
ConnectionStatusReason Tp::Account::connectionStatusReason
read

Return the reason for this account connection status.

This represents the reason for the last change to connectionStatus().

Note that this method may return a different value from the one returned by Connection::statusReason() on this account connection. See connectionStatus() for more details.

This method requires Account::FeatureCore to be ready.

Returns
The connection status reason as ConnectionStatusReason.
See Also
connectionStatusChanged(), connectionStatus(), connectionError(), connectionErrorDetails()
QString Tp::Account::connectionError
read

Return the D-Bus error name for the last disconnection or connection failure, (in particular, TP_QT_ERROR_CANCELLED if it was disconnected by user request), or an empty string if the account is connected.

This method requires Account::FeatureCore to be ready.

Returns
The D-Bus error name for the last disconnection or connection failure.
See Also
connectionErrorDetails(), connectionStatus(), connectionStatusReason(), connectionStatusChanged()
Connection::ErrorDetails Tp::Account::connectionErrorDetails
read

Return detailed information related to connectionError().

Note that this method may return a different value from the one returned by Connection::errorDetails() on this account connection. See connectionStatus() for more details.

This method requires Account::FeatureCore to be ready.

Returns
The connection error details as a Connection::ErrorDetails object.
See Also
connectionError(), connectionStatus(), connectionStatusReason(), connectionStatusChanged(), Connection::ErrorDetails.
ConnectionPtr Tp::Account::connection
read

Return the object representing the connection of this account.

Note that the Connection object returned by this method will have the features set in the connectionFactory() used by this account ready.

Change notification is via the connectionChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
A pointer to the Connection object, or a null ConnectionPtr if there is no connection currently or if an error occurred.
See Also
connectionChanged()
bool Tp::Account::changingPresence
read
Presence Tp::Account::automaticPresence
read

Return the presence status that this account will have set on it by the account manager if it brings it online automatically.

Change notification is via the automaticPresenceChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The automatic presence as a Presence object.
See Also
automaticPresenceChanged(), setAutomaticPresence()
Presence Tp::Account::currentPresence
read

Return the actual presence of this account.

Change notification is via the currentPresenceChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The current presence as a Presence object.
See Also
currentPresenceChanged(), setRequestedPresence(), requestedPresence(), automaticPresence()
Presence Tp::Account::requestedPresence
read

Return the requested presence of this account.

Change notification is via the requestedPresenceChanged() signal.

This method requires Account::FeatureCore to be ready.

Returns
The requested presence as a Presence object.
See Also
requestedPresenceChanged(), setRequestedPresence(), currentPresence(), automaticPresence()
bool Tp::Account::online
read
QString Tp::Account::uniqueIdentifier
read

Return the unique identifier of this account.

Returns
The unique identifier.
QString Tp::Account::normalizedName
read

Return the normalized user ID of the local user of this account.

It is unspecified whether this user ID is globally unique.

As currently implemented, IRC user IDs are only unique within the same IRCnet. On some saner protocols, the user ID includes a DNS name which provides global uniqueness.

If this value is not known yet (which will always be the case for accounts that have never been online), it will be an empty string.

It is possible that this value will change if the connection manager's normalization algorithm changes.

This method requires Account::FeatureCore to be ready.

Returns
The normalized user ID of the local user.
See Also
normalizedNameChanged()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01034.html0000644000175100017520000000634712530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 > Member List

This is the complete list of members for Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >, including all inherited members.

fnTp::PtrFunctor3< R, Arg1, Arg2, Arg3 >
FunctionType typedefTp::PtrFunctor3< R, Arg1, Arg2, Arg3 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3) const Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >inline
PtrFunctor3(FunctionType fn)Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >inline
ResultType typedefTp::PtrFunctor3< R, Arg1, Arg2, Arg3 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00889.html0000644000175100017520000000435112530426257021154 0ustar00kaffeinekaffeine00000000000000 Media session handler proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Media session handler proxies

Classes

class  Tp::Client::MediaSessionHandlerInterface
 

Detailed Description

Proxy objects representing remote Telepathy MediaSessionHandler objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00388.html0000644000175100017520000001437012530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::MediaDescriptionProperties Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::MediaDescriptionProperties Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 MediaDescriptionProperties ()
 
 MediaDescriptionProperties (const QMap< QString, QDBusVariant > &a)
 
MediaDescriptionPropertiesoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

A mapping containing all properties that define the information from a CallContentMediaDescriptionInterface and its interfaces.

If CallContentMediaDescriptionInterface::HasRemoteInformation is True, then this mapping will always contains at least CallContentMediaDescriptionInterface::Codecs

Constructor & Destructor Documentation

Tp::MediaDescriptionProperties::MediaDescriptionProperties ( )
inline
Tp::MediaDescriptionProperties::MediaDescriptionProperties ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

MediaDescriptionProperties& Tp::MediaDescriptionProperties::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01349.html0000644000175100017520000001016312530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSMSAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceSMSAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Flash() const Tp::Service::ChannelInterfaceSMSAdaptor
GetSMSLength(const Tp::MessagePartList &message, const QDBusMessage &dbusMessage, int &remainingCharacters, int &estimatedCost)Tp::Service::ChannelInterfaceSMSAdaptorslot
SMSChannel() const Tp::Service::ChannelInterfaceSMSAdaptor
SMSChannelChanged(bool SMSChannel)Tp::Service::ChannelInterfaceSMSAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00132.html0000644000175100017520000003000612530426260021117 0ustar00kaffeinekaffeine00000000000000 Tp::Callback0< R > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback0< R > Class Template Reference

Callback with 0 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )()
 
typedef R ResultType
 

Public Member Functions

 Callback0 ()
 
template<class Functor >
 Callback0 (const Functor &functor)
 
ResultType operator() () const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R>
class Tp::Callback0< R >

Callback with 0 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R >
typedef R(* Tp::Callback0< R >::FunctionType)()
template<class R >
typedef R Tp::Callback0< R >::ResultType

Constructor & Destructor Documentation

template<class R >
Tp::Callback0< R >::Callback0 ( )
inline
template<class R >
template<class Functor >
Tp::Callback0< R >::Callback0 ( const Functor &  functor)
inline

Member Function Documentation

template<class R >
ResultType Tp::Callback0< R >::operator() ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00948.html0000644000175100017520000001506312530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractConnectionInterface Member List

This is the complete list of members for Tp::AbstractConnectionInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
createAdaptor()=0Tp::AbstractDBusServiceInterfaceprotectedpure virtual
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const =0Tp::AbstractDBusServiceInterfacepure virtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00447.html0000644000175100017520000004267712530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::PendingStreamTubeConnection Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingStreamTubeConnection Class Reference

The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming stream tube. More...

#include <TelepathyQt/PendingStreamTubeConnection>

Inherits Tp::PendingOperation.

Public Member Functions

virtual ~PendingStreamTubeConnection ()
 
SocketAddressType addressType () const
 
QPair< QHostAddress, quint16 > ipAddress () const
 
QString localAddress () const
 
bool requiresCredentials () const
 
uchar credentialByte () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming stream tube.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingStreamTubeConnection::~PendingStreamTubeConnection ( )
virtual

Class destructor.

Member Function Documentation

SocketAddressType Tp::PendingStreamTubeConnection::addressType ( ) const

Return the type of the opened stream tube socket.

Returns
The socket type as SocketAddressType.
See Also
localAddress(), ipAddress()
QPair< QHostAddress, quint16 > Tp::PendingStreamTubeConnection::ipAddress ( ) const

Return the IP address/port combination of the opened stream tube socket.

This method will return a meaningful value only if the incoming stream tube was accepted as a TCP socket.

Returns
Pair of IP address as QHostAddress and port if using a TCP socket, or an undefined value otherwise.
See Also
addressType(), localAddress()
QString Tp::PendingStreamTubeConnection::localAddress ( ) const

Return the local address of the opened stream tube socket.

This method will return a meaningful value only if the incoming stream tube was accepted as an Unix socket.

Returns
Unix socket address if using an Unix socket, or an undefined value otherwise.
See Also
addressType(), ipAddress()
bool Tp::PendingStreamTubeConnection::requiresCredentials ( ) const

Return whether sending a credential byte once connecting to the socket is required.

Note that if this method returns true, one should send a SCM_CREDS or SCM_CREDENTIALS and the credentialByte() once connected. If SCM_CREDS or SCM_CREDENTIALS cannot be sent, the credentialByte() should still be sent.

Returns
true if sending credentials is required, false otherwise.
See Also
credentialByte()
uchar Tp::PendingStreamTubeConnection::credentialByte ( ) const

Return the credential byte to send once connecting to the socket if requiresCredentials() is true.

Returns
The credential byte.
See Also
requiresCredentials()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01162.html0000644000175100017520000000522712530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FieldSpec Member List

This is the complete list of members for Tp::FieldSpec, including all inherited members.

flagsTp::FieldSpec
maxTp::FieldSpec
nameTp::FieldSpec
parametersTp::FieldSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00506.html0000644000175100017520000010434412530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::SharedPtr< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | List of all members
Tp::SharedPtr< T > Class Template Reference

The SharedPtr class is a pointer to an explicitly shared object. More...

#include <TelepathyQt/SharedPtr>

Public Member Functions

 SharedPtr ()
 
 SharedPtr (T *d)
 
template<typename Subclass >
 SharedPtr (const SharedPtr< Subclass > &o)
 
 SharedPtr (const SharedPtr< T > &o)
 
 SharedPtr (const WeakPtr< T > &o)
 
 ~SharedPtr ()
 
void reset ()
 
T * data () const
 
const T * constData () const
 
T * operator-> ()
 
T * operator-> () const
 
bool isNull () const
 
bool operator! () const
 
 operator UnspecifiedBoolType () const
 
bool operator== (const SharedPtr< T > &o) const
 
bool operator!= (const SharedPtr< T > &o) const
 
bool operator== (const T *ptr) const
 
bool operator!= (const T *ptr) const
 
SharedPtr< T > & operator= (const SharedPtr< T > &o)
 
void swap (SharedPtr< T > &o)
 

Static Public Member Functions

template<class X >
static SharedPtr< T > staticCast (const SharedPtr< X > &src)
 
template<class X >
static SharedPtr< T > dynamicCast (const SharedPtr< X > &src)
 
template<class X >
static SharedPtr< T > constCast (const SharedPtr< X > &src)
 
template<class X >
static SharedPtr< T > qObjectCast (const SharedPtr< X > &src)
 

Detailed Description

template<class T>
class Tp::SharedPtr< T >

The SharedPtr class is a pointer to an explicitly shared object.

Note that from Telepathy-Qt >= 0.9.0, Tp::SharedPtr cannot be constructed from a QWeakPointer as the conversion from a QWeakPointer to a Tp::SharedPtr can't be made thread-safe. Tp::WeakPtr is reintroduced as a weak pointer class safely promoteable to a Tp::SharedPtr.

See Shared Pointer Usage

Constructor & Destructor Documentation

template<class T>
Tp::SharedPtr< T >::SharedPtr ( )
inline
template<class T>
Tp::SharedPtr< T >::SharedPtr ( T *  d)
inlineexplicit
template<class T>
template<typename Subclass >
Tp::SharedPtr< T >::SharedPtr ( const SharedPtr< Subclass > &  o)
inline
template<class T>
Tp::SharedPtr< T >::SharedPtr ( const SharedPtr< T > &  o)
inline
template<class T>
Tp::SharedPtr< T >::SharedPtr ( const WeakPtr< T > &  o)
inlineexplicit
template<class T>
Tp::SharedPtr< T >::~SharedPtr ( )
inline

Member Function Documentation

template<class T>
void Tp::SharedPtr< T >::reset ( )
inline
template<class T>
T* Tp::SharedPtr< T >::data ( ) const
inline
template<class T>
const T* Tp::SharedPtr< T >::constData ( ) const
inline
template<class T>
T* Tp::SharedPtr< T >::operator-> ( )
inline
template<class T>
T* Tp::SharedPtr< T >::operator-> ( ) const
inline
template<class T>
bool Tp::SharedPtr< T >::isNull ( ) const
inline
template<class T>
bool Tp::SharedPtr< T >::operator! ( ) const
inline
template<class T>
Tp::SharedPtr< T >::operator UnspecifiedBoolType ( ) const
inline
template<class T>
bool Tp::SharedPtr< T >::operator== ( const SharedPtr< T > &  o) const
inline
template<class T>
bool Tp::SharedPtr< T >::operator!= ( const SharedPtr< T > &  o) const
inline
template<class T>
bool Tp::SharedPtr< T >::operator== ( const T *  ptr) const
inline
template<class T>
bool Tp::SharedPtr< T >::operator!= ( const T *  ptr) const
inline
template<class T>
SharedPtr<T>& Tp::SharedPtr< T >::operator= ( const SharedPtr< T > &  o)
inline
template<class T>
void Tp::SharedPtr< T >::swap ( SharedPtr< T > &  o)
inline
template<class T>
template<class X >
static SharedPtr<T> Tp::SharedPtr< T >::staticCast ( const SharedPtr< X > &  src)
inlinestatic
template<class T>
template<class X >
static SharedPtr< T > Tp::SharedPtr< T >::dynamicCast ( const SharedPtr< X > &  src)
inlinestatic

Casts the pointer given by src to a pointer pointing to an object of type T. The cast will succeed if the C++ runtime type identification mechanism considers the type T to be the actual runtime type of the object pointed to by src or one of its (possibly indirect) parent classes. Otherwise, a null pointer is returned.

Note that this also allows down-casting a baseclass pointer to a subclass pointer.

This cast method should not be used for QObject-derived classes, as Qt provides a more portable and efficient type identification mechanism, which is used by qObjectCast().

This cast method requires the C++ dynamic runtime type identification facility to be enabled (which might be disabled by eg. the -fno-rtti flag of the GNU G++ compiler).

template<class T>
template<class X >
static SharedPtr<T> Tp::SharedPtr< T >::constCast ( const SharedPtr< X > &  src)
inlinestatic
template<class T>
template<class X >
static SharedPtr< T > Tp::SharedPtr< T >::qObjectCast ( const SharedPtr< X > &  src)
inlinestatic

Casts the pointer given by src to a pointer pointing to an object of type T. The cast will succeed if the Qt runtime type identification mechanism considers the type T to be the actual runtime type of the object pointed to by src or one of its (possibly indirect) parent classes. Otherwise, a null pointer is returned.

Note that this also allows down-casting a baseclass pointer to a subclass pointer.

This cast method MUST not be used for classes not derived from QObject. However, dynamicCast() provides the same semantics for all classes, provided the C++ runtime type identification facility is enabled. This method, on the other hand, doesn't require the standard C++ facility and is probably also faster for the types it can be used with.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00796_source.html0000644000175100017520000002660512530426257022537 0ustar00kaffeinekaffeine00000000000000 profile-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
profile-manager.h
1 
23 #ifndef _TelepathyQt_profile_manager_h_HEADER_GUARD_
24 #define _TelepathyQt_profile_manager_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Object>
31 #include <TelepathyQt/Profile>
32 #include <TelepathyQt/ReadyObject>
33 #include <TelepathyQt/Types>
34 
35 #include <QDBusConnection>
36 #include <QObject>
37 
38 namespace Tp
39 {
40 
41 class PendingOperation;
42 
43 class TP_QT_EXPORT ProfileManager : public Object, public ReadyObject
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(ProfileManager);
47 
48 public:
49  static const Feature FeatureCore;
51 
52  static ProfileManagerPtr create(const QDBusConnection &bus = QDBusConnection::sessionBus());
53 
54  ~ProfileManager();
55 
56  QList<ProfilePtr> profiles() const;
57  QList<ProfilePtr> profilesForCM(const QString &cmName) const;
58  QList<ProfilePtr> profilesForProtocol(const QString &protocolName) const;
59  ProfilePtr profileForService(const QString &serviceName) const;
60 
61 private Q_SLOTS:
62  TP_QT_NO_EXPORT void onCmNamesRetrieved(Tp::PendingOperation *op);
63  TP_QT_NO_EXPORT void onCMsReady(Tp::PendingOperation *op);
64 
65 private:
66  ProfileManager(const QDBusConnection &bus);
67 
68  struct Private;
69  friend struct Private;
70  Private *mPriv;
71 };
72 
73 } // Tp
74 
75 #endif
The Object class provides an object with property notification.
Definition: object.h:39
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: ready-object.h:42
static const Feature FeatureFakeProfiles
Definition: profile-manager.h:50
The ProfileManager class provides helper methods to retrieve Profile objects.
Definition: profile-manager.h:43
static const Feature FeatureCore
Definition: profile-manager.h:49


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00260.html0000644000175100017520000011023112530426260021120 0ustar00kaffeinekaffeine00000000000000 Tp::ClientRegistrar Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | List of all members
Tp::ClientRegistrar Class Reference

The ClientRegistrar class is responsible for registering Telepathy clients (Observer, Approver, Handler). More...

#include <TelepathyQt/ClientRegistrar>

Inherits Tp::Object.

Public Member Functions

 ~ClientRegistrar ()
 
QDBusConnection dbusConnection () const
 
AccountFactoryConstPtr accountFactory () const
 
ConnectionFactoryConstPtr connectionFactory () const
 
ChannelFactoryConstPtr channelFactory () const
 
ContactFactoryConstPtr contactFactory () const
 
QList< AbstractClientPtr > registeredClients () const
 
bool registerClient (const AbstractClientPtr &client, const QString &clientName, bool unique=false)
 
bool unregisterClient (const AbstractClientPtr &client)
 
void unregisterClients ()
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static ClientRegistrarPtr create (const QDBusConnection &bus)
 
static ClientRegistrarPtr create (const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static ClientRegistrarPtr create (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
static ClientRegistrarPtr create (const AccountManagerPtr &accountManager)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The ClientRegistrar class is responsible for registering Telepathy clients (Observer, Approver, Handler).

Clients should inherit AbstractClientObserver, AbstractClientApprover, AbstractClientHandler or some combination of these, by using multiple inheritance, and register themselves using registerClient().

See the individual classes descriptions for more details.

Usage

Creating a client registrar object

One way to create a ClientRegistrar object is to just call the create method. For example:

ClientRegistrarPtr cr = ClientRegistrar::create();

You can also provide a D-Bus connection as a QDBusConnection:

ClientRegistrarPtr cr = ClientRegistrar::create(QDBusConnection::systemBus());

Registering a client

To register a client, just call registerClient() with a given AbstractClientPtr pointing to a valid AbstractClient instance.

*
* class MyClient : public AbstractClientObserver, public AbstractClientHandler
* {
* ...
* };
*
* ...
*
* ClientRegistrarPtr cr = ClientRegistrar::create();
* SharedPtr<MyClient> client = SharedPtr<MyClient>(new MyClient(...));
* cr->registerClient(AbstractClientPtr::dynamicCast(client), "myclient");
*
*
See Also
AbstractClientObserver, AbstractClientApprover, AbstractClientHandler

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::ClientRegistrar::~ClientRegistrar ( )

Class destructor.

Member Function Documentation

ClientRegistrarPtr Tp::ClientRegistrar::create ( const QDBusConnection &  bus)
static

Create a new client registrar object using the given bus.

The instance will use an account factory creating Tp::Account objects with no features ready, a connection factory creating Tp::Connection objects with no features ready, and a channel factory creating stock Telepathy-Qt channel subclasses, as appropriate, with no features ready.

Parameters
busQDBusConnection to use.
Returns
A ClientRegistrarPtr object pointing to the newly created ClientRegistrar object.
ClientRegistrarPtr Tp::ClientRegistrar::create ( const AccountFactoryConstPtr &  accountFactory = AccountFactory::create(QDBusConnection::sessionBus()),
const ConnectionFactoryConstPtr &  connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()),
const ChannelFactoryConstPtr &  channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()),
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new client registrar object using QDBusConnection::sessionBus() and the given factories.

Parameters
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ClientRegistrarPtr object pointing to the newly created ClientRegistrar object.
ClientRegistrarPtr Tp::ClientRegistrar::create ( const QDBusConnection &  bus,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
static

Create a new client registrar object using the given bus and the given factories.

Parameters
busQDBusConnection to use.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ClientRegistrarPtr object pointing to the newly created ClientRegistrar object.
ClientRegistrarPtr Tp::ClientRegistrar::create ( const AccountManagerPtr &  manager)
static

Create a new client registrar object using the bus and factories of the given Account manager.

Using this create method will enable (like any other way of passing the same factories to an AM and a registrar) getting the same Account/Connection etc. proxy instances from both AccountManager and AbstractClient implementations.

Parameters
managerThe AccountManager the bus and factories of which should be used.
Returns
A ClientRegistrarPtr object pointing to the newly ClientRegistrar object.
QDBusConnection Tp::ClientRegistrar::dbusConnection ( ) const

Return the D-Bus connection being used by this client registrar.

Returns
A QDBusConnection object.
AccountFactoryConstPtr Tp::ClientRegistrar::accountFactory ( ) const

Get the account factory used by this client registrar.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the registrar would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the AccountFactory object.
ConnectionFactoryConstPtr Tp::ClientRegistrar::connectionFactory ( ) const

Get the connection factory used by this client registrar.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the registrar would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ConnectionFactory object.
ChannelFactoryConstPtr Tp::ClientRegistrar::channelFactory ( ) const

Get the channel factory used by this client registrar.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the registrar would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ChannelFactory object.
ContactFactoryConstPtr Tp::ClientRegistrar::contactFactory ( ) const

Get the contact factory used by this client registrar.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the registrar would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ContactFactory object.
QList< AbstractClientPtr > Tp::ClientRegistrar::registeredClients ( ) const

Return the list of clients registered using registerClient() on this client registrar.

Returns
A list of pointers to AbstractClient objects.
See Also
registerClient(), unregisterClient()
bool Tp::ClientRegistrar::registerClient ( const AbstractClientPtr &  client,
const QString &  clientName,
bool  unique = false 
)

Register a client on D-Bus.

The client registrar will export the appropriate D-Bus interfaces, based on the abstract classes subclassed by

Parameters
client.If each of a client instance should be able to manipulate channels separately, set unique to true.

The client name MUST be a non-empty string of ASCII digits, letters, dots and/or underscores, starting with a letter, and without sets of two consecutive dots or a dot followed by a digit.

This method will do nothing if the client is already registered, and true will be returned.

To unregister a client use unregisterClient().

Parameters
clientThe client to register.
clientNameThe client name used to register.
uniqueWhether each of a client instance is able to manipulate channels separately.
Returns
true if client was successfully registered, false otherwise.
See Also
registeredClients(), unregisterClient()
bool Tp::ClientRegistrar::unregisterClient ( const AbstractClientPtr &  client)

Unregister a client registered using registerClient() on this client registrar.

If client was not registered previously, false will be returned.

Parameters
clientThe client to unregister.
Returns
true if client was successfully unregistered, false otherwise.
See Also
registeredClients(), registerClient()
void Tp::ClientRegistrar::unregisterClients ( )

Unregister all clients registered using registerClient() on this client registrar.

See Also
registeredClients(), registerClient(), unregisterClient()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01221.html0000644000175100017520000000535012530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::NotDelegatedMap Member List

This is the complete list of members for Tp::NotDelegatedMap, including all inherited members.

NotDelegatedMap()Tp::NotDelegatedMapinline
NotDelegatedMap(const QMap< QDBusObjectPath, NotDelegatedError > &a)Tp::NotDelegatedMapinline
operator=(const QMap< QDBusObjectPath, NotDelegatedError > &a)Tp::NotDelegatedMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00792_source.html0000644000175100017520000001717012530426257022530 0ustar00kaffeinekaffeine00000000000000 pending-variant.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-variant.h
1 
23 #ifndef _TelepathyQt_pending_variant_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_variant_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/PendingOperation>
32 
33 #include <QVariant>
34 
35 namespace Tp
36 {
37 
38 class TP_QT_EXPORT PendingVariant : public PendingOperation
39 {
40  Q_OBJECT
41  Q_DISABLE_COPY(PendingVariant);
42 
43 public:
44  PendingVariant(QDBusPendingCall call, const SharedPtr<RefCounted> &object);
45  ~PendingVariant();
46 
47  QVariant result() const;
48 
49 private Q_SLOTS:
50  TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*);
51 
52 private:
53  struct Private;
54  friend struct Private;
55  Private *mPriv;
56 };
57 
58 } // Tp
59 
60 #endif
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01290.html0000644000175100017520000002262312530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ClientObserverInterface Member List

This is the complete list of members for Tp::Client::ClientObserverInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ClientObserverInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientObserverInterface
ClientObserverInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ClientObserverInterface
ClientObserverInterface(Tp::DBusProxy *proxy)Tp::Client::ClientObserverInterface
ClientObserverInterface(const Tp::Client::ClientInterface &mainInterface)Tp::Client::ClientObserverInterfaceexplicit
ClientObserverInterface(const Tp::Client::ClientInterface &mainInterface, QObject *parent)Tp::Client::ClientObserverInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ClientObserverInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ObserveChannels(const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const Tp::ObjectPathList &requestsSatisfied, const QVariantMap &observerInfo, int timeout=-1)Tp::Client::ClientObserverInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ClientObserverInterfaceinline
requestPropertyDelayApprovers() const Tp::Client::ClientObserverInterfaceinline
requestPropertyObserverChannelFilter() const Tp::Client::ClientObserverInterfaceinline
requestPropertyRecover() const Tp::Client::ClientObserverInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ClientObserverInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00074.html0000644000175100017520000000511512530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::AccountCapabilityFilter Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AccountCapabilityFilter Class Reference

The AccountCapabilityFilter class provides a filter object to be used to filter accounts by capabilities. More...

#include <TelepathyQt/AccountCapabilityFilter>

Detailed Description

The AccountCapabilityFilter class provides a filter object to be used to filter accounts by capabilities.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01035.html0000644000175100017520000000702712530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 > Member List

This is the complete list of members for Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >, including all inherited members.

fnTp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >
FunctionType typedefTp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >
MemberFunctor3(T *object, FunctionType fn)Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >inline
objectTp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3) const Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >inline
ResultType typedefTp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00389.html0000644000175100017520000000764412530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::MediaSessionHandlerInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MediaSessionHandlerInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QDBusObjectPath sessionHandler
 
QString mediaSessionType
 

Detailed Description

Structure type generated from the specification.

A struct representing a active session handler.

Member Data Documentation

QDBusObjectPath Tp::MediaSessionHandlerInfo::sessionHandler

The object path of the session handler, which is on the same bus name as the channel.

QString Tp::MediaSessionHandlerInfo::mediaSessionType

The media session's type


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00133.html0000644000175100017520000003030112530426260021116 0ustar00kaffeinekaffeine00000000000000 Tp::Callback1< R, Arg1 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback1< R, Arg1 > Class Template Reference

Callback with 1 argument. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1)
 
typedef R ResultType
 

Public Member Functions

 Callback1 ()
 
template<class Functor >
 Callback1 (const Functor &functor)
 
ResultType operator() (Arg1 a1) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1>
class Tp::Callback1< R, Arg1 >

Callback with 1 argument.

See Callbacks Usage

Member Typedef Documentation

template<class R, class Arg1>
typedef R(* Tp::Callback1< R, Arg1 >::FunctionType)(Arg1)
template<class R, class Arg1>
typedef R Tp::Callback1< R, Arg1 >::ResultType

Constructor & Destructor Documentation

template<class R, class Arg1>
Tp::Callback1< R, Arg1 >::Callback1 ( )
inline
template<class R, class Arg1>
template<class Functor >
Tp::Callback1< R, Arg1 >::Callback1 ( const Functor &  functor)
inline

Member Function Documentation

template<class R, class Arg1>
ResultType Tp::Callback1< R, Arg1 >::operator() ( Arg1  a1) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00949.html0000644000175100017520000002210512530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionRequestsInterface Member List

This is the complete list of members for Tp::BaseConnectionRequestsInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseConnectionRequestsInterface(BaseConnection *connection)Tp::BaseConnectionRequestsInterfaceprotected
channelClosed(const QDBusObjectPath &removed)Tp::BaseConnectionRequestsInterfaceslot
create(BaseConnection *connection)Tp::BaseConnectionRequestsInterfaceinlinestatic
create(BaseConnection *connection)Tp::BaseConnectionRequestsInterfaceinlinestatic
createChannel(const QVariantMap &request, QDBusObjectPath &channel, QVariantMap &details, DBusError *error)Tp::BaseConnectionRequestsInterface
dbusObject() const Tp::AbstractDBusServiceInterface
ensureChannel(const QVariantMap &request, bool &yours, QDBusObjectPath &channel, QVariantMap &details, DBusError *error)Tp::BaseConnectionRequestsInterface
immutableProperties() const Tp::BaseConnectionRequestsInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
newChannels(const Tp::ChannelDetailsList &channels)Tp::BaseConnectionRequestsInterfaceslot
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
requestableChannelClassesTp::BaseConnectionRequestsInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionRequestsInterface()Tp::BaseConnectionRequestsInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00448.html0000644000175100017520000003416612530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::PendingString Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Protected Member Functions | List of all members
Tp::PendingString Class Reference

The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string. More...

#include <TelepathyQt/PendingString>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingString (QDBusPendingCall call, const SharedPtr< RefCounted > &object)
 
 ~PendingString ()
 
QString result () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Protected Member Functions

void setResult (const QString &result)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 

Detailed Description

The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingString::PendingString ( QDBusPendingCall  call,
const SharedPtr< RefCounted > &  object 
)
Tp::PendingString::~PendingString ( )

Class destructor.

Member Function Documentation

QString Tp::PendingString::result ( ) const
void Tp::PendingString::setResult ( const QString &  result)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01163.html0000644000175100017520000000436712530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HTTPPostData Member List

This is the complete list of members for Tp::HTTPPostData, including all inherited members.

keyTp::HTTPPostData
valueTp::HTTPPostData


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/nav_f.png0000644000175100017520000000023112530426257021225 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR8³»`IDATxíÝK€ EÑ–·[†øBÑmkâÄÂH—prÓ¼.‚Žó‚ꎤR6Z VI±E‚5j³„lóš›iI˜¬ÞêçJ0ŒÑÑ/Žû›™uøñóÞ¿6sH ÝõyIEND®B`‚telepathy-qt-0.9.6.1/doc/html/nav_g.png0000644000175100017520000000013712530426257021233 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRô1&IDATxíÝ1 ÁOHf„á_ ->~¸åM iËMèÀƒS½ü‚<IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00507.html0000644000175100017520000007336712530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleCallObserver Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Signals | Public Member Functions | Static Public Member Functions | List of all members
Tp::SimpleCallObserver Class Reference

The SimpleCallObserver class provides an easy way to track calls in an account and can be optionally filtered by a contact and/or call direction. More...

#include <TelepathyQt/SimpleCallObserver>

Inherits QObject, and Tp::RefCounted.

Public Types

enum  CallDirection { CallDirectionIncoming, CallDirectionOutgoing, CallDirectionBoth }
 

Signals

void callStarted (const Tp::CallChannelPtr &channel)
 
void callEnded (const Tp::CallChannelPtr &channel, const QString &errorName, const QString &errorMessage)
 
void streamedMediaCallStarted (const Tp::StreamedMediaChannelPtr &channel)
 
void streamedMediaCallEnded (const Tp::StreamedMediaChannelPtr &channel, const QString &errorName, const QString &errorMessage)
 

Public Member Functions

virtual ~SimpleCallObserver ()
 
AccountPtr account () const
 
QString contactIdentifier () const
 
CallDirection direction () const
 
QList< CallChannelPtr > calls () const
 
QList< StreamedMediaChannelPtr > streamedMediaCalls () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SimpleCallObserverPtr create (const AccountPtr &account, CallDirection direction=CallDirectionBoth)
 
static SimpleCallObserverPtr create (const AccountPtr &account, const ContactPtr &contact, CallDirection direction=CallDirectionBoth)
 
static SimpleCallObserverPtr create (const AccountPtr &account, const QString &contactIdentifier, CallDirection direction=CallDirectionBoth)
 

Detailed Description

The SimpleCallObserver class provides an easy way to track calls in an account and can be optionally filtered by a contact and/or call direction.

Member Enumeration Documentation

Enumerator
CallDirectionIncoming 
CallDirectionOutgoing 
CallDirectionBoth 

Constructor & Destructor Documentation

Tp::SimpleCallObserver::~SimpleCallObserver ( )
virtual

Class destructor.

Member Function Documentation

SimpleCallObserverPtr Tp::SimpleCallObserver::create ( const AccountPtr &  account,
CallDirection  direction = CallDirectionBoth 
)
static

Create a new SimpleCallObserver object.

Events will be signalled for all calls in account that respect direction.

Parameters
accountThe account used to listen to events.
directionThe direction of the calls used to filter events.
Returns
An SimpleCallObserverPtr object pointing to the newly created SimpleCallObserver object.
SimpleCallObserverPtr Tp::SimpleCallObserver::create ( const AccountPtr &  account,
const ContactPtr &  contact,
CallDirection  direction = CallDirectionBoth 
)
static

Create a new SimpleCallObserver object.

Events will be signalled for all calls in account established with contact and that respect direction.

Parameters
accountThe account used to listen to events.
contactThe contact used to filter events.
directionThe direction of the calls used to filter events.
Returns
An SimpleCallObserverPtr object pointing to the newly created SimpleCallObserver object.
SimpleCallObserverPtr Tp::SimpleCallObserver::create ( const AccountPtr &  account,
const QString &  contactIdentifier,
CallDirection  direction = CallDirectionBoth 
)
static

Create a new SimpleCallObserver object.

Events will be signalled for all calls in account established with a contact identified by contactIdentifier and that respect direction.

Parameters
accountThe account used to listen to events.
contactIdentifierThe identifier of the contact used to filter events.
directionThe direction of the calls used to filter events.
Returns
An SimpleCallObserverPtr object pointing to the newly created SimpleCallObserver object.
AccountPtr Tp::SimpleCallObserver::account ( ) const

Return the account used to listen to events.

Returns
A pointer to the Account object.
QString Tp::SimpleCallObserver::contactIdentifier ( ) const

Return the identifier of the contact used to filter events, or an empty string if none was provided at construction.

Returns
The identifier of the contact.
SimpleCallObserver::CallDirection Tp::SimpleCallObserver::direction ( ) const

Return the direction of the calls used to filter events.

Returns
The direction of the calls as SimpleCallObserver::CallDirection.
QList< CallChannelPtr > Tp::SimpleCallObserver::calls ( ) const

Return the list of calls currently being observed.

Returns
A list of pointers to CallChannel objects.
QList< StreamedMediaChannelPtr > Tp::SimpleCallObserver::streamedMediaCalls ( ) const

Return the list of streamed media calls currently being observed.

Deprecated:
Use calls() instead. Modern clients shouldn't use StreamedMedia channels.
Returns
A list of pointers to StreamedMediaChannel objects.
void Tp::SimpleCallObserver::callStarted ( const Tp::CallChannelPtr &  channel)
signal

Emitted whenever a call that matches this observer's criteria is started.

Parameters
channelThe channel representing the call that started.
void Tp::SimpleCallObserver::callEnded ( const Tp::CallChannelPtr &  channel,
const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted whenever a call that matches this observer's criteria has ended.

Parameters
channelThe channel representing the call that ended.
errorNameA D-Bus error name (a string in a subset of ASCII, prefixed with a reversed domain name).
errorMessageA debugging message associated with the error.
void Tp::SimpleCallObserver::streamedMediaCallStarted ( const Tp::StreamedMediaChannelPtr &  channel)
signal

Emitted whenever a streamed media call that matches this observer's criteria is started.

Parameters
channelThe channel representing the streamed media call that started.
Deprecated:
Use callStarted() instead. Modern clients shouldn't use StreamedMedia channels.
void Tp::SimpleCallObserver::streamedMediaCallEnded ( const Tp::StreamedMediaChannelPtr &  channel,
const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted whenever a streamed media call that matches this observer's criteria has ended.

Parameters
channelThe channel representing the streamed media call that ended.
errorNameA D-Bus error name (a string in a subset of ASCII, prefixed with a reversed domain name).
errorMessageA debugging message associated with the error.
Deprecated:
Use callEnded() instead. Modern clients shouldn't use StreamedMedia channels.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00261.html0000644000175100017520000001603212530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Codec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::Codec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint identifier
 
QString name
 
uint clockrate
 
uint channels
 
bool updated
 
StringStringMap parameters
 

Detailed Description

Structure type generated from the specification.

A description of a codec.

Member Data Documentation

uint Tp::Codec::identifier
Numeric identifier for the codec. This will be used as the PT in the SDP or content description.
QString Tp::Codec::name
The name of the codec.
uint Tp::Codec::clockrate
The clockrate of the codec.
uint Tp::Codec::channels
Number of channels of the codec if applicable, otherwise 0.
bool Tp::Codec::updated
This should be set to true in calls to CallContentMediaDescriptionInterface::Accept() and UpdateLocalMediaDescription() if this codec has changed in a way that needs to be signalled over the network. If it is set to false, the CM is allowed ignore any differences between the current parameters and the previous ones
This mechanism may be used to save bandwidth and avoid the CM having to calculate diffs against previous versions of this struct, which can lead to false-positives (e.g. redundant ptime updates).
StringStringMap Tp::Codec::parameters
Extra parameters for this codec.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/nav_h.png0000644000175100017520000000014212530426257021230 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR ,é@)IDATxíÝA @BQ­³šÛ›Ð¢Žáà) )ëý éaÅèÜ¿Æo‡RlÐßIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01222.html0000644000175100017520000000453712530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RTCPFeedbackMessageProperties Member List

This is the complete list of members for Tp::RTCPFeedbackMessageProperties, including all inherited members.

messagesTp::RTCPFeedbackMessageProperties
RTCPMinimumIntervalTp::RTCPFeedbackMessageProperties


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00006.html0000644000175100017520000000354212530426257021132 0ustar00kaffeinekaffeine00000000000000 Accounts Example
   Home · All Classes · All Namespaces · Modules · Functions · Files
Accounts Example


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00778_source.html0000644000175100017520000002731412530426257022535 0ustar00kaffeinekaffeine00000000000000 pending-operation.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-operation.h
1 
23 #ifndef _TelepathyQt_pending_operation_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_operation_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/RefCounted>
32 #include <TelepathyQt/SharedPtr>
33 
34 #include <QObject>
35 
36 class QDBusError;
37 class QDBusPendingCall;
38 class QDBusPendingCallWatcher;
39 
40 namespace Tp
41 {
42 
43 class ReadinessHelper;
44 
45 class TP_QT_EXPORT PendingOperation : public QObject
46 {
47  Q_OBJECT
48  Q_DISABLE_COPY(PendingOperation)
49 
50 public:
51  virtual ~PendingOperation();
52 
53  bool isFinished() const;
54 
55  bool isValid() const;
56 
57  bool isError() const;
58  QString errorName() const;
59  QString errorMessage() const;
60 
61 Q_SIGNALS:
62  void finished(Tp::PendingOperation *operation);
63 
64 protected:
66  SharedPtr<RefCounted> object() const;
67 
68 protected Q_SLOTS:
69  void setFinished();
70  void setFinishedWithError(const QString &name, const QString &message);
71  void setFinishedWithError(const QDBusError &error);
72 
73 private Q_SLOTS:
74  TP_QT_NO_EXPORT void emitFinished();
75 
76 private:
77  friend class ContactManager;
78  friend class ReadinessHelper;
79 
80  struct Private;
81  friend struct Private;
82  Private *mPriv;
83 };
84 
85 } // Tp
86 
87 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The ReadinessHelper class is a helper class used by the introspection process.
Definition: readiness-helper.h:48


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00320.html0000644000175100017520000004255512530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::ContactFactory Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::ContactFactory Class Reference

The ContactFactory class is responsible for constructing Contact objects according to application-defined settings. More...

#include <TelepathyQt/ContactFactory>

Inherits Tp::RefCounted.

Public Member Functions

virtual ~ContactFactory ()
 
Features features () const
 
void addFeature (const Feature &feature)
 
void addFeatures (const Features &features)
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static ContactFactoryPtr create (const Features &features=Features())
 

Protected Member Functions

 ContactFactory (const Features &features)
 
virtual ContactPtr construct (ContactManager *manager, const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes) const
 
virtual PendingOperationprepare (const ContactPtr &contact) const
 

Detailed Description

The ContactFactory class is responsible for constructing Contact objects according to application-defined settings.

Constructor & Destructor Documentation

Tp::ContactFactory::~ContactFactory ( )
virtual

Class destructor.

Tp::ContactFactory::ContactFactory ( const Features features)
protected

Class constructor.

Parameters
featuresThe features to make ready on constructed contacts.

Member Function Documentation

ContactFactoryPtr Tp::ContactFactory::create ( const Features features = Features())
static

Creates a new ContactFactory.

Parameters
featuresThe features to make ready on constructed contacts.
Returns
A pointer to the created factory.
Features Tp::ContactFactory::features ( ) const

Gets the features this factory will make ready on constructed contacts.

Returns
The set of features.
void Tp::ContactFactory::addFeature ( const Feature feature)

Adds a single feature this factory will make ready on further constructed contacts.

No feature removal is provided, to guard against uncooperative modules removing features other modules have set and depend on.

Parameters
featureThe feature to add.
void Tp::ContactFactory::addFeatures ( const Features features)

Adds a set of features this factory will make ready on further constructed contacts.

No feature removal is provided, to guard against uncooperative modules removing features other modules have set and depend on.

Parameters
featuresThe features to add.
ContactPtr Tp::ContactFactory::construct ( Tp::ContactManager manager,
const ReferencedHandles handle,
const Features features,
const QVariantMap &  attributes 
) const
protectedvirtual

Can be used by subclasses to override the Contact subclass constructed by the factory.

The default implementation constructs Tp::Contact objects.

Parameters
managerThe contact manager this contact belongs.
handleThe contact handle.
featuresThe desired contact features.
attributesThe desired contact attributes.
Returns
A pointer to the constructed contact.
PendingOperation * Tp::ContactFactory::prepare ( const ContactPtr &  contact) const
protectedvirtual

Can be used by subclasses to do arbitrary manipulation on constructed Contact objects.

The default implementation does nothing.

Parameters
contactThe contact to be prepared.
Returns
A PendingOperation used to prepare the contact or NULL if there is nothing to prepare.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01291.html0000644000175100017520000002253212530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionManagerInterface Member List

This is the complete list of members for Tp::Client::ConnectionManagerInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionManagerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionManagerInterface
ConnectionManagerInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionManagerInterface
ConnectionManagerInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionManagerInterface
GetParameters(const QString &protocol, int timeout=-1)Tp::Client::ConnectionManagerInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionManagerInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListProtocols(int timeout=-1)Tp::Client::ConnectionManagerInterfaceinlineslot
NewConnection(const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol)Tp::Client::ConnectionManagerInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionManagerInterfaceinline
RequestConnection(const QString &protocol, const QVariantMap &parameters, int timeout=-1)Tp::Client::ConnectionManagerInterfaceinlineslot
requestPropertyInterfaces() const Tp::Client::ConnectionManagerInterfaceinline
requestPropertyProtocols() const Tp::Client::ConnectionManagerInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionManagerInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00075.html0000644000175100017520000007173712530426257021153 0ustar00kaffeinekaffeine00000000000000 Tp::AccountFactory Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::AccountFactory Class Reference

The AccountFactory class is responsible for constructing Account objects according to application-defined settings. More...

#include <TelepathyQt/AccountFactory>

Inherits Tp::FixedFeatureFactory.

Inherited by Tp::PendingChannel::Private::FakeAccountFactory.

Public Member Functions

virtual ~AccountFactory ()
 
PendingReadyproxy (const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const
 
- Public Member Functions inherited from Tp::FixedFeatureFactory
virtual ~FixedFeatureFactory ()
 
Features features () const
 
void addFeature (const Feature &feature)
 
void addFeatures (const Features &features)
 
- Public Member Functions inherited from Tp::DBusProxyFactory
virtual ~DBusProxyFactory ()
 
const QDBusConnection & dbusConnection () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static AccountFactoryPtr create (const QDBusConnection &bus, const Features &features=Features())
 

Protected Member Functions

 AccountFactory (const QDBusConnection &bus, const Features &features)
 
virtual AccountPtr construct (const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const
 
virtual QString finalBusNameFrom (const QString &uniqueOrWellKnown) const
 
- Protected Member Functions inherited from Tp::FixedFeatureFactory
 FixedFeatureFactory (const QDBusConnection &bus)
 
virtual Features featuresFor (const DBusProxyPtr &proxy) const
 
- Protected Member Functions inherited from Tp::DBusProxyFactory
 DBusProxyFactory (const QDBusConnection &bus)
 
DBusProxyPtr cachedProxy (const QString &busName, const QString &objectPath) const
 
PendingReadynowHaveProxy (const DBusProxyPtr &proxy) const
 
virtual PendingOperationinitialPrepare (const DBusProxyPtr &proxy) const
 
virtual PendingOperationreadyPrepare (const DBusProxyPtr &proxy) const
 

Detailed Description

The AccountFactory class is responsible for constructing Account objects according to application-defined settings.

The class is used by AccountManager and other classes which construct Account proxy instances to enable sharing instances of application-defined Account subclasses with certain features always ready.

Constructor & Destructor Documentation

Tp::AccountFactory::~AccountFactory ( )
virtual

Class destructor.

Tp::AccountFactory::AccountFactory ( const QDBusConnection &  bus,
const Features features 
)
protected

Construct a new AccountFactory object.

As in create(), it should be noted that unlike Account::becomeReady(), FeatureCore isn't assumed. If no features are specified, no Account::becomeReady() call is made at all and the proxy won't be Account::isReady().

Parameters
busThe QDBusConnection for proxies constructed using this factory to use.
featuresThe features to make ready on constructed Accounts.

Member Function Documentation

AccountFactoryPtr Tp::AccountFactory::create ( const QDBusConnection &  bus,
const Features features = Features() 
)
static

Create a new AccountFactory object.

Optionally, the features to make ready on all constructed proxies can be specified. The default is to make no features ready. It should be noted that unlike Account::becomeReady(), FeatureCore isn't assumed. If no features are specified, which is the default behavior, no Account::becomeReady() call is made at all and the proxy won't be Account::isReady().

Parameters
busThe QDBusConnection for proxies constructed using this factory to use.
featuresThe features to make ready on constructed Accounts.
Returns
An AccountFactoryPtr object pointing to the newly created AccountFactory object.
PendingReady * Tp::AccountFactory::proxy ( const QString &  busName,
const QString &  objectPath,
const ConnectionFactoryConstPtr &  connFactory,
const ChannelFactoryConstPtr &  chanFactory,
const ContactFactoryConstPtr &  contactFactory 
) const

Constructs an Account proxy and begins making it ready.

If a valid proxy already exists in the factory cache for the given combination of busName and objectPath, it is returned instead. All newly created proxies are automatically cached until they're either DBusProxy::invalidated() or the last reference to them outside the factory has been dropped.

The proxy can be accessed immediately after this function returns using PendingReady::proxy(). The ready operation only finishes, however, when the features specified by features(), if any, are made ready as much as possible. If the service doesn't support a given feature, they won't obviously be ready even if the operation finished successfully, as is the case for Account::becomeReady().

Parameters
busNameThe bus/service name of the D-Bus account object the proxy is constructed for. (Usually TP_QT_ACCOUNT_MANAGER_BUS_NAME).
objectPathThe object path of the account.
connFactoryThe connection factory to use for the Account.
chanFactoryThe channel factory to use for the Account.
contactFactoryThe channel factory to use for the Account.
Returns
A PendingReady operation with the proxy in PendingReady::proxy().
AccountPtr Tp::AccountFactory::construct ( const QString &  busName,
const QString &  objectPath,
const ConnectionFactoryConstPtr &  connFactory,
const ChannelFactoryConstPtr &  chanFactory,
const ContactFactoryConstPtr &  contactFactory 
) const
protectedvirtual

Can be used by subclasses to override the Account subclass constructed by the factory.

This is automatically called by proxy() to construct proxy instances if no valid cached proxy is found.

The default implementation constructs Tp::Account objects.

Parameters
busNameThe bus/service name of the D-Bus account object the proxy is constructed for. (Usually TP_QT_ACCOUNT_MANAGER_BUS_NAME).
objectPathThe object path of the account.
connFactoryThe connection factory to use for the Account.
chanFactoryThe channel factory to use for the Account.
contactFactoryThe channel factory to use for the Account.
Returns
A pointer to the constructed Account object.
QString Tp::AccountFactory::finalBusNameFrom ( const QString &  uniqueOrWellKnown) const
protectedvirtual

Identity transform, as is appropriate for Account objects.

Parameters
uniqueOrWellKnownThe name to transform.
Returns
uniqueOrWellKnown

Implements Tp::DBusProxyFactory.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01036.html0000644000175100017520000000643212530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 > Member List

This is the complete list of members for Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >, including all inherited members.

fnTp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >
FunctionType typedefTp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >inline
PtrFunctor4(FunctionType fn)Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >inline
ResultType typedefTp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00774_source.html0000644000175100017520000002113112530426257022520 0ustar00kaffeinekaffeine00000000000000 pending-debug-message-list.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-debug-message-list.h
1 
21 #ifndef _TelepathyQt_pending_debug_message_list_h_HEADER_GUARD_
22 #define _TelepathyQt_pending_debug_message_list_h_HEADER_GUARD_
23 
24 #ifndef IN_TP_QT_HEADER
25 #error IN_TP_QT_HEADER
26 #endif
27 
28 #include <TelepathyQt/Types>
29 #include <TelepathyQt/PendingOperation>
30 
31 namespace Tp
32 {
33 
34 class TP_QT_EXPORT PendingDebugMessageList : public Tp::PendingOperation
35 {
36  Q_OBJECT
37  Q_DISABLE_COPY(PendingDebugMessageList)
38 
39 public:
40  virtual ~PendingDebugMessageList();
41 
42  DebugMessageList result() const;
43 
44 private Q_SLOTS:
45  TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*);
46 
47 private:
48  friend class DebugReceiver;
49  TP_QT_NO_EXPORT PendingDebugMessageList(const QDBusPendingCall &call,
50  const SharedPtr<RefCounted> &object);
51 
52  struct Private;
53  friend struct Private;
54  Private *mPriv;
55 };
56 
57 } // Tp
58 
59 #endif
The DebugReceiver class provides a D-Bus proxy for a Telepathy Debug object.
Definition: debug-receiver.h:39
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
Definition: pending-debug-message-list.h:34
QList< DebugMessage > DebugMessageList
Definition: build/TelepathyQt/_gen/types.h:1513


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00890.html0000644000175100017520000000434512530426257021147 0ustar00kaffeinekaffeine00000000000000 Media stream handler proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Media stream handler proxies

Classes

class  Tp::Client::MediaStreamHandlerInterface
 

Detailed Description

Proxy objects representing remote Telepathy MediaStreamHandler objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01350.html0000644000175100017520000000671312530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSecurableAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceSecurableAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Encrypted() const Tp::Service::ChannelInterfaceSecurableAdaptor
Verified() const Tp::Service::ChannelInterfaceSecurableAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00134.html0000644000175100017520000003112012530426260021117 0ustar00kaffeinekaffeine00000000000000 Tp::Callback2< R, Arg1, Arg2 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback2< R, Arg1, Arg2 > Class Template Reference

Callback with 2 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1, Arg2)
 
typedef R ResultType
 

Public Member Functions

 Callback2 ()
 
template<class Functor >
 Callback2 (const Functor &functor)
 
ResultType operator() (Arg1 a1, Arg2 a2) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1, class Arg2>
class Tp::Callback2< R, Arg1, Arg2 >

Callback with 2 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R, class Arg1, class Arg2>
typedef R(* Tp::Callback2< R, Arg1, Arg2 >::FunctionType)(Arg1, Arg2)
template<class R, class Arg1, class Arg2>
typedef R Tp::Callback2< R, Arg1, Arg2 >::ResultType

Constructor & Destructor Documentation

template<class R, class Arg1, class Arg2>
Tp::Callback2< R, Arg1, Arg2 >::Callback2 ( )
inline
template<class R, class Arg1, class Arg2>
template<class Functor >
Tp::Callback2< R, Arg1, Arg2 >::Callback2 ( const Functor &  functor)
inline

Member Function Documentation

template<class R, class Arg1, class Arg2>
ResultType Tp::Callback2< R, Arg1, Arg2 >::operator() ( Arg1  a1,
Arg2  a2 
) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00770_source.html0000644000175100017520000004765012530426257022532 0ustar00kaffeinekaffeine00000000000000 pending-contacts.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-contacts.h
1 
23 #ifndef _TelepathyQt_pending_contacts_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_contacts_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/PendingOperation>
31 
32 #include <QHash>
33 #include <QList>
34 #include <QMap>
35 #include <QSet>
36 #include <QStringList>
37 
38 #include <TelepathyQt/Types>
39 #include <TelepathyQt/Contact>
40 
41 namespace Tp
42 {
43 
44 class ContactManager;
45 
46 class TP_QT_EXPORT PendingContacts : public PendingOperation
47 {
48  Q_OBJECT
49  Q_DISABLE_COPY(PendingContacts);
50 
51 public:
52  ~PendingContacts();
53 
54  ContactManagerPtr manager() const;
55  Features features() const;
56 
57  bool isForHandles() const;
58  UIntList handles() const;
59 
60  bool isForIdentifiers() const;
61  QStringList identifiers() const;
62 
63  bool isForVCardAddresses() const;
64  QString vcardField() const;
65  QStringList vcardAddresses() const;
66 
67  bool isForUris() const;
68  QStringList uris() const;
69 
70  bool isUpgrade() const;
71  QList<ContactPtr> contactsToUpgrade() const;
72 
73  QList<ContactPtr> contacts() const;
74  UIntList invalidHandles() const;
75  QStringList validIdentifiers() const;
76  QHash<QString, QPair<QString, QString> > invalidIdentifiers() const;
77  QStringList validVCardAddresses() const;
78  QStringList invalidVCardAddresses() const;
79  QStringList validUris() const;
80  QStringList invalidUris() const;
81 
82 private Q_SLOTS:
83  TP_QT_NO_EXPORT void onAttributesFinished(Tp::PendingOperation *);
84  TP_QT_NO_EXPORT void onRequestHandlesFinished(Tp::PendingOperation *);
85  TP_QT_NO_EXPORT void onAddressingGetContactsFinished(Tp::PendingOperation *);
86  TP_QT_NO_EXPORT void onReferenceHandlesFinished(Tp::PendingOperation *);
87  TP_QT_NO_EXPORT void onNestedFinished(Tp::PendingOperation *);
88  TP_QT_NO_EXPORT void onInspectHandlesFinished(QDBusPendingCallWatcher *);
89 
90 private:
91  friend class ContactManager;
92 
93  enum RequestType
94  {
95  ForHandles,
96  ForIdentifiers,
97  ForVCardAddresses,
98  ForUris,
99  Upgrade
100  };
101 
102  // If errorName is non-empty, these will fail instantly
103  TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const UIntList &handles,
104  const Features &features,
105  const Features &missingFeatures,
106  const QStringList &interfaces,
107  const QMap<uint, ContactPtr> &satisfyingContacts,
108  const QSet<uint> &otherContacts,
109  const QString &errorName = QString(),
110  const QString &errorMessage = QString());
111  TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const QStringList &list,
112  RequestType requestType,
113  const Features &features,
114  const QStringList &interfaces,
115  const QString &errorName = QString(),
116  const QString &errorMessage = QString());
117  TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const QString &vcardField,
118  const QStringList &vcardAddresses,
119  const Features &features,
120  const QStringList &interfaces,
121  const QString &errorName = QString(),
122  const QString &errorMessage = QString());
123  TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const QList<ContactPtr> &contacts,
124  const Features &features,
125  const QString &errorName = QString(),
126  const QString &errorMessage = QString());
127 
128  TP_QT_NO_EXPORT void allAttributesFetched();
129 
130  struct Private;
131  friend struct Private;
132  Private *mPriv;
133 };
134 
135 } // Tp
136 
137 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
The PendingContacts class is used by ContactManager when creating/updating Contact objects...
Definition: pending-contacts.h:46
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00449.html0000644000175100017520000003645212530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::PendingStringList Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Protected Member Functions | List of all members
Tp::PendingStringList Class Reference

The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string list. More...

#include <TelepathyQt/PendingStringList>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingStringList (const SharedPtr< RefCounted > &object)
 
 PendingStringList (QDBusPendingCall call, const SharedPtr< RefCounted > &object)
 
 ~PendingStringList ()
 
QStringList result () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Protected Member Functions

void setResult (const QStringList &result)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 

Detailed Description

The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string list.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingStringList::PendingStringList ( const SharedPtr< RefCounted > &  object)
Tp::PendingStringList::PendingStringList ( QDBusPendingCall  call,
const SharedPtr< RefCounted > &  object 
)
Tp::PendingStringList::~PendingStringList ( )

Class destructor.

Member Function Documentation

QStringList Tp::PendingStringList::result ( ) const
void Tp::PendingStringList::setResult ( const QStringList &  result)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2mnode.png0000644000175100017520000000036612530426257022051 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|½IDATxíÝ!NAÅñ¤‡à\ ÷à Um@`Ô5iÒ`ëh ‚ÅW7] b§ÝˆŠ&oföÍd¾YÔ4 üšcø ‡€´‹Åòù3v=¼]†§µ\B… I¿‹=B·™B¡®;¸k´µ W°ÍN@vyÍÑÖ4ãß÷]ÈâYìã§|M}]ÔÚx6a }ôdׇØYüú¨>¤||5?Ó>|žB"¡î'¡IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01164.html0000644000175100017520000000533612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandleIdentifierMap Member List

This is the complete list of members for Tp::HandleIdentifierMap, including all inherited members.

HandleIdentifierMap()Tp::HandleIdentifierMapinline
HandleIdentifierMap(const QMap< uint, QString > &a)Tp::HandleIdentifierMapinline
operator=(const QMap< uint, QString > &a)Tp::HandleIdentifierMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00508.html0000644000175100017520000001412012530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleContactPresences Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::SimpleContactPresences Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, SimplePresence >.

Public Member Functions

 SimpleContactPresences ()
 
 SimpleContactPresences (const QMap< uint, SimplePresence > &a)
 
SimpleContactPresencesoperator= (const QMap< uint, SimplePresence > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, SimplePresence>, but needed to have a discrete type in the Qt type system.

Mapping returned by GetPresences and signalled by PresencesChanged, indicating the presence of a number of contacts.

Constructor & Destructor Documentation

Tp::SimpleContactPresences::SimpleContactPresences ( )
inline
Tp::SimpleContactPresences::SimpleContactPresences ( const QMap< uint, SimplePresence > &  a)
inline

Member Function Documentation

SimpleContactPresences& Tp::SimpleContactPresences::operator= ( const QMap< uint, SimplePresence > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00262.html0000644000175100017520000001331012530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::ComponentStateMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ComponentStateMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, uint >.

Public Member Functions

 ComponentStateMap ()
 
 ComponentStateMap (const QMap< uint, uint > &a)
 
ComponentStateMapoperator= (const QMap< uint, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, uint>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::ComponentStateMap::ComponentStateMap ( )
inline
Tp::ComponentStateMap::ComponentStateMap ( const QMap< uint, uint > &  a)
inline

Member Function Documentation

ComponentStateMap& Tp::ComponentStateMap::operator= ( const QMap< uint, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01223.html0000644000175100017520000000443112530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ServicePointInfo Member List

This is the complete list of members for Tp::ServicePointInfo, including all inherited members.

serviceIDsTp::ServicePointInfo
servicePointTp::ServicePointInfo


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00321.html0000644000175100017520000002302212530426260021117 0ustar00kaffeinekaffeine00000000000000 Tp::ContactInfoField Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::ContactInfoField Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString fieldName
 
QStringList parameters
 
QStringList fieldValue
 

Detailed Description

Structure type generated from the specification.

Represents one piece of information about a contact, as modelled by a single vCard field. Of the fields defined in RFC 2426, common examples include:

fn
The contact's full name, formatted to their liking
n
The contact's full name, divided into five parts: family name, given name, additional names, honorific prefixes, and honorific suffixes
org
The contact's organisation, divided into the organization's name possibly followed by one or more organizational unit names.
adr
A street address for the contact, divided into seven components: post office box, extended address, street address, locality (e.g., city), region (e.g., state or province), the postal code, and the country name.
label
A free-form street address for the contact, formatted as a single value (with embedded newlines where necessary) suitable for printing on an address label
tel
A telephone number for the contact.
email
An email address for the contact.

For example, the following vCard:

   BEGIN:vCard
   VERSION:3.0
   FN:Wee Ninja
   N;LANGUAGE=ja:Ninja;Wee;;;-san
   ORG:Collabora, Ltd.;Management Division;Human Resources\\; Company Policy Enforcement
   ADR;TYPE=WORK,POSTAL,PARCEL:;;11 Kings Parade;Cambridge;Cambridgeshire
    ;CB2 1SJ;UK
   LABEL;TYPE=WORK,POSTAL,PARCEL:11 Kings Parade\\nCambridge\\nCambridgeshire\\nUK\\nCB2 1SJ
   TEL;TYPE=VOICE,WORK:+44 1223 362967, +44 7700 900753
   EMAIL;TYPE=INTERNET,PREF:wee.ninja@collabora.co.uk
   EMAIL;TYPE=INTERNET:wee.ninja@example.com
   URL:http://www.thinkgeek.com/geektoys/plush/8823/
   NICKNAME:HR Ninja,Enforcement Ninja
   END:vCard

would be represented by (in Python-like syntax):

[
  ('fn', [], ['Wee Ninja']),
  ('n', ['language=ja'], ['Ninja', 'Wee', '', '', '-san']),
  ('org', [], ['Collabora, Ltd.', 'Management Division',
    'Human Resources; Company Policy Enforcement']),
  ('adr', ['type=work','type=postal','type=parcel'],
   ['','','11 Kings Parade','Cambridge', 'Cambridgeshire','CB2 1SJ','UK']),
  ('label', ['type=work','type=postal','type=parcel'],
   ['''11 Kings Parade
  Cambridge
  Cambridgeshire
  UK
  CB2 1SJ''']),
  ('tel', ['type=voice','type=work'], ['+44 1223 362967']),
  ('tel', ['type=voice','type=work'], ['+44 7700 900753']),
  ('email', ['type=internet','type=pref'], ['wee.ninja@collabora.co.uk']),
  ('email', ['type=internet'], ['wee.ninja@example.com']),
  ('url', [], ['http://www.thinkgeek.com/geektoys/plush/8823/']),
  ('nickname', [], ['HR Ninja']),
  ('nickname', [], ['Enforcement Ninja'])
]

Member Data Documentation

QString Tp::ContactInfoField::fieldName

The name of the field; this is the lowercased name of a vCard field. For example, a field representing a contact's address would be named "adr".

QStringList Tp::ContactInfoField::parameters

A list of vCard type parameters applicable to this field, with their values. The type parameter names, and any values that are case-insensitive in vCard, MUST be in lower case. For example, a contact's preferred home address would have parameters 'type=home' and 'type=pref'.

The type parameter 'type' is likely to be the most common, but there can be others, such as 'language=en'.

Characters which are required to be escaped in vCard type parameters should not be escaped in this list. For instance, a field "X-FOO;SEMICOLON=\\;:bar" in a vCard would become ('x-foo', ['semicolon=;'], ['bar']) in this interface.

This avoids Telepathy UIs having to understand the escaping and unescaping rules for vCards. The type parameter name is not allowed (by RFC 2425) to contain an '=' character, so no ambiguity is introduced.
QStringList Tp::ContactInfoField::fieldValue

For unstructured vCard fields (such as 'fn', a formatted name field), a single-element array containing the field's value.

For structured fields (such as 'adr', an address field), an array corresponding to the semicolon-separated elements of the field (with empty strings for empty elements).

A vCard field with multiple comma-separated values, such as 'nickname', should be represented by several Contact_Info_Fields.

Characters which are required to be escaped in vCard values, such as semi-colons and newlines, should not be escaped in this list (e.g. if a value contains a newline, the data passed over D-Bus should contain a literal newline character).

An earlier draft of this interface split structured vCard fields into multiple Telepathy-level fields; for example, 'n' became 'family-name', 'given-name', etc. But under this representation, omitting empty components leads to difficulty identifying where one name ends and another begins. Consider the fields ['given-name', 'honorific-suffixes', 'family-name', 'honorific-prefixes']: does this represent two 'n' fields, or one with incorrect component ordering?


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01292.html0000644000175100017520000002560112530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ProtocolInterface Member List

This is the complete list of members for Tp::Client::ProtocolInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
IdentifyAccount(const QVariantMap &parameters, int timeout=-1)Tp::Client::ProtocolInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ProtocolInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NormalizeContact(const QString &contactID, int timeout=-1)Tp::Client::ProtocolInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ProtocolInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterface
ProtocolInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterface
ProtocolInterface(Tp::DBusProxy *proxy)Tp::Client::ProtocolInterface
ProtocolInterface(const Tp::Client::ConnectionManagerInterface &mainInterface)Tp::Client::ProtocolInterfaceexplicit
ProtocolInterface(const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)Tp::Client::ProtocolInterface
requestAllProperties() const Tp::Client::ProtocolInterfaceinline
requestPropertyAuthenticationTypes() const Tp::Client::ProtocolInterfaceinline
requestPropertyConnectionInterfaces() const Tp::Client::ProtocolInterfaceinline
requestPropertyEnglishName() const Tp::Client::ProtocolInterfaceinline
requestPropertyIcon() const Tp::Client::ProtocolInterfaceinline
requestPropertyInterfaces() const Tp::Client::ProtocolInterfaceinline
requestPropertyParameters() const Tp::Client::ProtocolInterfaceinline
requestPropertyRequestableChannelClasses() const Tp::Client::ProtocolInterfaceinline
requestPropertyVCardField() const Tp::Client::ProtocolInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ProtocolInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00076.html0000644000175100017520000030266012530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Client::AccountInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::AccountInterface Class Reference

#include <TelepathyQt/AccountManager>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Remove (int timeout=-1)
 
QDBusPendingReply< QStringList > UpdateParameters (const QVariantMap &set, const QStringList &unset, int timeout=-1)
 
QDBusPendingReply Reconnect (int timeout=-1)
 

Signals

void Removed ()
 
void AccountPropertyChanged (const QVariantMap &properties)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 AccountInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyDisplayName () const
 
Tp::PendingOperationsetPropertyDisplayName (QString newValue)
 
Tp::PendingVariantrequestPropertyIcon () const
 
Tp::PendingOperationsetPropertyIcon (QString newValue)
 
Tp::PendingVariantrequestPropertyValid () const
 
Tp::PendingVariantrequestPropertyEnabled () const
 
Tp::PendingOperationsetPropertyEnabled (bool newValue)
 
Tp::PendingVariantrequestPropertyNickname () const
 
Tp::PendingOperationsetPropertyNickname (QString newValue)
 
Tp::PendingVariantrequestPropertyService () const
 
Tp::PendingOperationsetPropertyService (QString newValue)
 
Tp::PendingVariantrequestPropertyParameters () const
 
Tp::PendingVariantrequestPropertyAutomaticPresence () const
 
Tp::PendingOperationsetPropertyAutomaticPresence (Tp::SimplePresence newValue)
 
Tp::PendingVariantrequestPropertyConnectAutomatically () const
 
Tp::PendingOperationsetPropertyConnectAutomatically (bool newValue)
 
Tp::PendingVariantrequestPropertyConnection () const
 
Tp::PendingVariantrequestPropertyConnectionStatus () const
 
Tp::PendingVariantrequestPropertyConnectionStatusReason () const
 
Tp::PendingVariantrequestPropertyConnectionError () const
 
Tp::PendingVariantrequestPropertyConnectionErrorDetails () const
 
Tp::PendingVariantrequestPropertyCurrentPresence () const
 
Tp::PendingVariantrequestPropertyRequestedPresence () const
 
Tp::PendingOperationsetPropertyRequestedPresence (Tp::SimplePresence newValue)
 
Tp::PendingVariantrequestPropertyChangingPresence () const
 
Tp::PendingVariantrequestPropertyNormalizedName () const
 
Tp::PendingVariantrequestPropertyHasBeenOnline () const
 
Tp::PendingVariantrequestPropertySupersedes () const
 
Tp::PendingOperationsetPropertySupersedes (Tp::ObjectPathList newValue)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::AccountInterface::AccountInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterface::AccountInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterface::AccountInterface ( Tp::DBusProxy proxy)

Creates a AccountInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::AccountInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Account", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the extra interfaces provided by this account.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyDisplayName ( ) const
inline

Asynchronous getter for the remote object property DisplayName of type QString.

The user-visible name of this account. This SHOULD be chosen by the user at account creation time. The account creation user interface is responsible for setting a reasonable default value in the user's locale; something like "Jabber (bob@e.nosp@m.xamp.nosp@m.le.co.nosp@m.m)" would be sensible.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyDisplayName ( QString  newValue)
inline

Asynchronous setter for the remote object property DisplayName of type QString.

The user-visible name of this account. This SHOULD be chosen by the user at account creation time. The account creation user interface is responsible for setting a reasonable default value in the user's locale; something like "Jabber (bob@e.nosp@m.xamp.nosp@m.le.co.nosp@m.m)" would be sensible.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyIcon ( ) const
inline

Asynchronous getter for the remote object property Icon of type QString.

The name of an icon in the system's icon theme, such as "im-msn", or the empty string to not specify an icon. If the icon is set to an empty string, the account manager or any client MAY derive a default icon, for instance from the protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyIcon ( QString  newValue)
inline

Asynchronous setter for the remote object property Icon of type QString.

The name of an icon in the system's icon theme, such as "im-msn", or the empty string to not specify an icon. If the icon is set to an empty string, the account manager or any client MAY derive a default icon, for instance from the protocol.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyValid ( ) const
inline

Asynchronous getter for the remote object property Valid of type bool.

If true, this account is considered by the account manager to be complete and usable. If false, user action is required to make it usable, and it will never attempt to connect (for instance, this might be caused by the absence of a required parameter). For connection managers with a plugin architecture, like telepathy-haze, we have little or no control over the parameters offered; for platforms with package management, we have little or no control over the CMs offered. NMC 4.x would just pretend the account didn't exist in these circumstances, but silent data loss is bad, and UIs with CM-specific knowledge (or a user filling in newly-required parameters) might be able to rescue a broken account.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyEnabled ( ) const
inline

Asynchronous getter for the remote object property Enabled of type bool.

This property gives the users the possibility to prevent an account from being used. This flag does not change the validity of the account.

A disabled account can never be put online.

Use cases:

  • user has two or more accounts capable of calling contact X, but he doesn't want the UI to prompt him everytime about which one he wants to use for the call. He can then disable all the equivalent accounts but one.
  • There is some temporary server error and the user doesn't want to be be bother by error messages, or change the account configuration: temporarily disabling the account is quicker.

The AccountManager SHOULD allow this property to be set on invalid accounts, but MUST NOT attempt to put invalid accounts online even if they become Enabled.

There doesn't seem to be any good reason not to allow this.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyEnabled ( bool  newValue)
inline

Asynchronous setter for the remote object property Enabled of type bool.

This property gives the users the possibility to prevent an account from being used. This flag does not change the validity of the account.

A disabled account can never be put online.

Use cases:

  • user has two or more accounts capable of calling contact X, but he doesn't want the UI to prompt him everytime about which one he wants to use for the call. He can then disable all the equivalent accounts but one.
  • There is some temporary server error and the user doesn't want to be be bother by error messages, or change the account configuration: temporarily disabling the account is quicker.

The AccountManager SHOULD allow this property to be set on invalid accounts, but MUST NOT attempt to put invalid accounts online even if they become Enabled.

There doesn't seem to be any good reason not to allow this.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyNickname ( ) const
inline

Asynchronous getter for the remote object property Nickname of type QString.

The nickname to set on this account for display to other contacts, as set by the user. When the account becomes connected, the account manager SHOULD set this as the user's alias using SetAliases if appropriate. In a later specification revision, we plan to separate the concepts of a contact's nickname as set by themselves, and the local name for them in our contact list (a "handle" or "pet name" as described in XEP-0165 and its references). The terminology change from alias to nickname here is a step in that direction.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyNickname ( QString  newValue)
inline

Asynchronous setter for the remote object property Nickname of type QString.

The nickname to set on this account for display to other contacts, as set by the user. When the account becomes connected, the account manager SHOULD set this as the user's alias using SetAliases if appropriate. In a later specification revision, we plan to separate the concepts of a contact's nickname as set by themselves, and the local name for them in our contact list (a "handle" or "pet name" as described in XEP-0165 and its references). The terminology change from alias to nickname here is a step in that direction.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyService ( ) const
inline

Asynchronous getter for the remote object property Service of type QString.

Some protocols, like XMPP and SIP, are used by various different user-recognised brands, such as Google Talk and Ovi by Nokia. On accounts for such services, this property SHOULD be set to a string describing the service, which MUST consist only of ASCII letters, numbers and hyphen/minus signs, and start with a letter (matching the requirements for Protocol). For the jabber protocol, one of the following service names should be used if possible:

For the IRC protocol, the network name (freenode, gimpnet, etc.) can be used if relevant.

The Icon property SHOULD be set to a corresponding brand-specific icon name, if possible. In the future, this property may be used as an index into additional service-specific customizations. If this property is the empty string (or missing), the service is determined by the protocol name (either because this is a single-service protocol like msn, or because this is just a generic jabber or sip account without specific branding).

This property MAY be set, if appropriate, when calling AccountManagerInterface::CreateAccount() . Updating this property will fail on externally-stored accounts whose AccountInterfaceStorageInterface::StorageRestrictions include Cannot_Set_Service.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyService ( QString  newValue)
inline

Asynchronous setter for the remote object property Service of type QString.

Some protocols, like XMPP and SIP, are used by various different user-recognised brands, such as Google Talk and Ovi by Nokia. On accounts for such services, this property SHOULD be set to a string describing the service, which MUST consist only of ASCII letters, numbers and hyphen/minus signs, and start with a letter (matching the requirements for Protocol). For the jabber protocol, one of the following service names should be used if possible:

For the IRC protocol, the network name (freenode, gimpnet, etc.) can be used if relevant.

The Icon property SHOULD be set to a corresponding brand-specific icon name, if possible. In the future, this property may be used as an index into additional service-specific customizations. If this property is the empty string (or missing), the service is determined by the protocol name (either because this is a single-service protocol like msn, or because this is just a generic jabber or sip account without specific branding).

This property MAY be set, if appropriate, when calling AccountManagerInterface::CreateAccount() . Updating this property will fail on externally-stored accounts whose AccountInterfaceStorageInterface::StorageRestrictions include Cannot_Set_Service.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyParameters ( ) const
inline

Asynchronous getter for the remote object property Parameters of type QVariantMap.

A map from connection manager parameter names (as in the ConnectionManagerInterface interface) to their values. This property includes only those parameters that are stored for this account, and SHOULD only include those parameters that the user has explicitly set.

This property cannot be altered using org.freedesktop.DBus.Properties.Set(); use UpdateParameters() instead.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyAutomaticPresence ( ) const
inline

Asynchronous getter for the remote object property AutomaticPresence of type Tp::SimplePresence.

The presence status that this account should have if it is brought online.

In ITOS2007 and ITOS2008 this is a global preference, not visible on D-Bus (the "default presence"). "Automatic presence" better describes when it is used.

Setting this property MUST NOT actually change the account's status until the next time it is (re)connected for some reason.

The value of this property MUST be one that would be acceptable for RequestedPresence , with the additional restriction that the Connection_Presence_Type MUST NOT be Offline.

Otherwise, it would not be possible to use this presence to bring the account online for a channel request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyAutomaticPresence ( Tp::SimplePresence  newValue)
inline

Asynchronous setter for the remote object property AutomaticPresence of type Tp::SimplePresence.

The presence status that this account should have if it is brought online.

In ITOS2007 and ITOS2008 this is a global preference, not visible on D-Bus (the "default presence"). "Automatic presence" better describes when it is used.

Setting this property MUST NOT actually change the account's status until the next time it is (re)connected for some reason.

The value of this property MUST be one that would be acceptable for RequestedPresence , with the additional restriction that the Connection_Presence_Type MUST NOT be Offline.

Otherwise, it would not be possible to use this presence to bring the account online for a channel request.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyConnectAutomatically ( ) const
inline

Asynchronous getter for the remote object property ConnectAutomatically of type bool.

If true, the account manager SHOULD attempt to put this account online with the AutomaticPresence whenever possible (in the base Account interface this is deliberately left vague). If false, it MUST NOT put the account online automatically in response to, for instance, connectivity changes, but SHOULD still put the account online with the AutomaticPresence if requested by the user (for instance, if the user tries to start a conversation using this account).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyConnectAutomatically ( bool  newValue)
inline

Asynchronous setter for the remote object property ConnectAutomatically of type bool.

If true, the account manager SHOULD attempt to put this account online with the AutomaticPresence whenever possible (in the base Account interface this is deliberately left vague). If false, it MUST NOT put the account online automatically in response to, for instance, connectivity changes, but SHOULD still put the account online with the AutomaticPresence if requested by the user (for instance, if the user tries to start a conversation using this account).

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyConnection ( ) const
inline

Asynchronous getter for the remote object property Connection of type QDBusObjectPath.

Either the object path of the ConnectionInterface to this account, or the special value '/' if there is no connection.

If this object path is not '/', the Connection's well-known bus name can be derived from this object path by removing the first '/' and replacing subsequent '/' characters with '.'.

Object paths aren't nullable, so we can't use an empty string.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyConnectionStatus ( ) const
inline

Asynchronous getter for the remote object property ConnectionStatus of type uint.

If the Connection property is non-empty, the status of that connection. If the Connection property is the empty string, this property may either be Disconnected (indicating that the account manager is not attempting to bring it online), or Connecting (indicating that the account manager is attempting to connect). The account manager is expected to set this by observing signals from the Connection. If the AM is doing some sort of backoff/delay on reconnection attempts, the account's status is conceptually "Connecting" even though there is no Connection.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyConnectionStatusReason ( ) const
inline

Asynchronous getter for the remote object property ConnectionStatusReason of type uint.

The reason for the last change to ConnectionStatus. The account manager is expected to set this by observing signals from the Connection. If you weren't watching the Connection at the time it failed, you can't tell why - unless the AM can tell you.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyConnectionError ( ) const
inline

Asynchronous getter for the remote object property ConnectionError of type QString.

If the last connection to this account failed with an error, the D-Bus error name of that error; otherwise, the empty string. The account manager is expected to set this by observing the ConnectionInterface::ConnectionError() and ConnectionInterface::StatusChanged() signals.

If ConnectionError is received before the connection disconnects, its first argument should be used to set this property; otherwise, the Reason argument of StatusChanged should be converted to a suitable D-Bus error name.

Whenever the Connection connects successfully, this property should be reset to the empty string.

This combines the state-recoverability of ConnectionStatusReason with the extensibility of Connection.ConnectionError.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyConnectionErrorDetails ( ) const
inline

Asynchronous getter for the remote object property ConnectionErrorDetails of type QVariantMap.

If the last connection to this account failed with an error, a mapping representing any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of ConnectionInterface::ConnectionError() .

Whenever the Connection connects successfully, this property should be reset to the empty map.

This combines the state-recoverability of ConnectionStatusReason with the extensibility of Connection.ConnectionError.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyCurrentPresence ( ) const
inline

Asynchronous getter for the remote object property CurrentPresence of type Tp::SimplePresence.

The actual presence. If the connection is not online, the Connection_Presence_Type SHOULD be Connection_Presence_Type_Offline. If the connection is online but does not support the SimplePresence interface, the type SHOULD be Connection_Presence_Type_Unset. The account manager is expected to set this by observing signals from the Connection.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyRequestedPresence ( ) const
inline

Asynchronous getter for the remote object property RequestedPresence of type Tp::SimplePresence.

The requested presence for this account. When this is changed, the account manager should attempt to manipulate the connection manager to make CurrentPresence match RequestedPresence as closely as possible. It should not be saved to any sort of persistent storage.

When the account manager automatically connects an account, it must signal this by setting the RequestedPresence to the same thing as the AutomaticPresence .

The Connection_Presence_Type in this property MUST NOT be Unset, Unknown or Error.

Requesting those presence types doesn't make sense.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertyRequestedPresence ( Tp::SimplePresence  newValue)
inline

Asynchronous setter for the remote object property RequestedPresence of type Tp::SimplePresence.

The requested presence for this account. When this is changed, the account manager should attempt to manipulate the connection manager to make CurrentPresence match RequestedPresence as closely as possible. It should not be saved to any sort of persistent storage.

When the account manager automatically connects an account, it must signal this by setting the RequestedPresence to the same thing as the AutomaticPresence .

The Connection_Presence_Type in this property MUST NOT be Unset, Unknown or Error.

Requesting those presence types doesn't make sense.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyChangingPresence ( ) const
inline

Asynchronous getter for the remote object property ChangingPresence of type bool.

If true, a change to the presence of this account is in progress.

Whenever RequestedPresence is set on an account that could go online, or whenever an account with a non-offline RequestedPresence becomes able to go online (for instance because Enabled or Valid changes to True), ChangingPresence MUST change to True, and the two property changes MUST be emitted in the same AccountPropertyChanged() signal, before the Set method returns.

When the account manager succeeds or fails in changing the presence, or the connection disconnects due to an error, ChangingPresence MUST change to False as part of the same AccountPropertyChanged() signal.

This allows UIs to indicate that a presence change is in progress or has finished, even if the change was initiated by a different UI.

For instance, Maemo 5 and Empathy indicate a presence change by having the presence indicator alternate between the RequestedPresence and the CurrentPresence ; they should start blinking when ChangingPresence becomes true, and stop when it becomes false.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyNormalizedName ( ) const
inline

Asynchronous getter for the remote object property NormalizedName of type QString.

The normalized user ID of the local user on this account (i.e. the string returned when the ConnectionInterface::InspectHandles() method is called on the result of ConnectionInterface::GetSelfHandle() for an active connection).

It is unspecified whether this user ID is globally unique.

As currently implemented, IRC user IDs are only unique within the same IRCnet. On some saner protocols, the user ID includes a DNS name which provides global uniqueness.

If this value is not known yet (which will always be the case for accounts that have never been online), it will be an empty string.

It is possible that this value will change if the connection manager's normalization algorithm changes, although this SHOULD be avoided.

It's not always completely clear what normalization algorithm should be used; for instance, in Gabble, we currently use JIDs, but it would also have been reasonable to use xmpp URIs.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertyHasBeenOnline ( ) const
inline

Asynchronous getter for the remote object property HasBeenOnline of type bool.

If true, this account has successfully been put online at some point in the past. UIs could apply a policy that the 'account' parameter can only be edited in accounts that have never been online, or that ConnectAutomatically cannot be set on such accounts. The account manager should not enforce such policies, but it can expose enough information to UIs that the UI can decide what to do.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterface::requestPropertySupersedes ( ) const
inline

Asynchronous getter for the remote object property Supersedes of type Tp::ObjectPathList.

A list of the object paths of formerly-used accounts which are superseded by this one.

For instance, if an account is migrated from one connection manager implementation to another, or even from one protocol to another (for instance formerly-proprietary services which can now be accessed via XMPP), log storage services could look for logs under all of the superseded object paths as well as the new object path.

This is a list because a single user-visible account could be migrated more than once.

If the Account Manager implementation performs an account migration automatically, it SHOULD set this property. If a client performs an account migration, it SHOULD set this property via via the Properties argument of AccountManagerInterface::CreateAccount() when creating the migrated account. In either case, the value SHOULD include the old account's path, and every path from the old account's Supersedes property.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterface::setPropertySupersedes ( Tp::ObjectPathList  newValue)
inline

Asynchronous setter for the remote object property Supersedes of type Tp::ObjectPathList.

A list of the object paths of formerly-used accounts which are superseded by this one.

For instance, if an account is migrated from one connection manager implementation to another, or even from one protocol to another (for instance formerly-proprietary services which can now be accessed via XMPP), log storage services could look for logs under all of the superseded object paths as well as the new object path.

This is a list because a single user-visible account could be migrated more than once.

If the Account Manager implementation performs an account migration automatically, it SHOULD set this property. If a client performs an account migration, it SHOULD set this property via via the Properties argument of AccountManagerInterface::CreateAccount() when creating the migrated account. In either case, the value SHOULD include the old account's path, and every path from the old account's Supersedes property.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariantMap* Tp::Client::AccountInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::AccountInterface::Remove ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Remove on the remote object.

Delete the account.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QStringList> Tp::Client::AccountInterface::UpdateParameters ( const QVariantMap &  set,
const QStringList &  unset,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method UpdateParameters on the remote object.

Change the value of the Parameters property.

If any of the Set parameters’ Conn_Mgr_Param_Flags include DBus_Property, the change will be applied immediately to the corresponding D-Bus Property on the active Connection , if there is one. If any of the Unset parameters’ Conn_Mgr_Param_Flags include both DBus_Property and Has_Default, the corresponding D-Bus Property on the connection will be set to the default value. Changes to other parameters will not take effect until the next time the account is disconnected and reconnected. (If parameters are explicitly set to their default value, or are unset when previously set to their default value, the account manager MAY decide that no reconnection is necessary to make the change take effect.)

In general, reconnecting is a destructive operation that shouldn't happen as a side-effect. In particular, migration tools that twiddle the settings of all accounts shouldn't cause an automatic disconnect and reconnect.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
set
A mapping from parameter names to their values. These parameters 
should be stored for future use.
unset
A list of the names of parameters to be removed from the set of 
stored values, allowing the default values to be used. If the given 
parameters were not, in fact, stored, or even if they do not exist 
at all, the account manager MUST accept this without error.
timeoutThe timeout in milliseconds.
Returns

If all of the updates could be applied to the active Connection (if any), the empty list, signifying that no reconnection is required for the new parameters to take effect. For example, if the only parameter updated is ...Cellular. ConnectionInterfaceCellularInterface::MessageValidityPeriod , the new value can be applied immediately to the connection.

Otherwise, a list of the names of parameters with changes that will not take effect until the account is reconnected. User interfaces that require "instant apply" semantics MAY call Reconnect() in response to receiving a non-empty list. For example, if the caller updates both ...Anonymity. ConnectionInterfaceAnonymityInterface::AnonymityMandatory and require-encryption, the former can be applied to the current connection, but the latter needs a reconnect to take effect, so this method should return ["require-encryption"].

QDBusPendingReply Tp::Client::AccountInterface::Reconnect ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Reconnect on the remote object.

Re-connect this account. If the account is currently disconnected and the requested presence is offline, or if the account is not Enabled or not Valid , this does nothing.

If the account is disconnected and the requested presence is not offline, this forces an attempt to connect with the requested presence immediately.

If the account is connecting or connected, this is equivalent to remembering the current value of RequestedPresence , setting its value to (OFFLINE, "offline", ""), waiting for the change to take effect, then setting its value to the value that was previously remembered.

Clients desiring "instant apply" semantics for CM parameters MAY call this method to achieve that.

In particular, if the account's Connection is in the Connecting state, calling this method causes the attempt to connect to be aborted and re-tried.

This is necessary to ensure that the new parameters are picked up.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::AccountInterface::Removed ( )
signal

Represents the signal Removed on the remote object.

This account has been removed. This is redundant with AccountRemoved, but it's still worth having, to avoid having to bind to AccountManager.AccountRemoved to tell you whether your Account is valid — ideally, an account-editing UI should only care about a single Account.

void Tp::Client::AccountInterface::AccountPropertyChanged ( const QVariantMap &  properties)
signal

Represents the signal AccountPropertyChanged on the remote object.

The values of one or more properties on this interface (that do not specify that this signal does not apply to them) may have changed. This does not cover properties of other interfaces, which must provide their own change notification if appropriate.

Parameters
properties
A map from property names in this namespace (e.g. Nickname) to 
values. Properties whose values have not changed SHOULD be omitted, 
but this need not be done.
void Tp::Client::AccountInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01037.html0000644000175100017520000000712012530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 > Member List

This is the complete list of members for Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >, including all inherited members.

fnTp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >
FunctionType typedefTp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >
MemberFunctor4(T *object, FunctionType fn)Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >inline
objectTp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >inline
ResultType typedefTp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00891.html0000644000175100017520000000435212530426257021146 0ustar00kaffeinekaffeine00000000000000 Telepathy Properties proxy
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Telepathy Properties proxy

Classes

class  Tp::Client::PropertiesInterfaceInterface
 

Detailed Description

Proxy object representing the Telepathy Properties interface on remote objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00390.html0000644000175100017520000006503612530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Client::MediaSessionHandlerInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::MediaSessionHandlerInterface Class Reference

#include <TelepathyQt/MediaSessionHandler>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Error (uint errorCode, const QString &message, int timeout=-1)
 
QDBusPendingReply Ready (int timeout=-1)
 

Signals

void NewStreamHandler (const QDBusObjectPath &streamHandler, uint ID, uint mediaType, uint direction)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 MediaSessionHandlerInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 MediaSessionHandlerInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 MediaSessionHandlerInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Media.SessionHandler".

Constructor & Destructor Documentation

Tp::Client::MediaSessionHandlerInterface::MediaSessionHandlerInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a MediaSessionHandlerInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::MediaSessionHandlerInterface::MediaSessionHandlerInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a MediaSessionHandlerInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::MediaSessionHandlerInterface::MediaSessionHandlerInterface ( Tp::DBusProxy proxy)

Creates a MediaSessionHandlerInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::MediaSessionHandlerInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Media.SessionHandler", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::MediaSessionHandlerInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::MediaSessionHandlerInterface::Error ( uint  errorCode,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Error on the remote object.

Informs the connection manager that an error occured in this session. If used, the connection manager must terminate the session and all of the streams within it, and may also emit a StreamError signal on the channel for each stream within the session.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaSessionHandlerInterface::Ready ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Ready on the remote object.

Inform the connection manager that a client is ready to handle this session handler (i.e. that it has connected to the NewStreamHandler signal and done any other necessary setup).

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::MediaSessionHandlerInterface::NewStreamHandler ( const QDBusObjectPath &  streamHandler,
uint  ID,
uint  mediaType,
uint  direction 
)
signal

Represents the signal NewStreamHandler on the remote object.

Emitted when a new stream handler has been created for this session.

Parameters
streamHandler
The path of a new object implementing the StreamHandler interface.
ID
The unique ID of the new stream
mediaType
Type of media that this stream should handle
direction
Direction of this stream
void Tp::Client::MediaSessionHandlerInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00756_source.html0000644000175100017520000002355012530426257022527 0ustar00kaffeinekaffeine00000000000000 pending-account.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-account.h
1 
23 #ifndef _TelepathyQt_pending_account_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_account_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Account>
31 #include <TelepathyQt/PendingOperation>
32 
33 #include <QString>
34 #include <QVariantMap>
35 
36 class QDBusPendingCallWatcher;
37 
38 namespace Tp
39 {
40 
41 class AccountManager;
42 
43 class TP_QT_EXPORT PendingAccount : public PendingOperation
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(PendingAccount);
47 
48 public:
49  ~PendingAccount();
50 
51  AccountManagerPtr manager() const;
52 
53  AccountPtr account() const;
54 
55 private Q_SLOTS:
56  TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher);
57  TP_QT_NO_EXPORT void onAccountBuilt(Tp::PendingOperation *readyOp);
58  TP_QT_NO_EXPORT void onNewAccount(const Tp::AccountPtr &account);
59 
60 private:
61  friend class AccountManager;
62 
63  TP_QT_NO_EXPORT PendingAccount(const AccountManagerPtr &manager,
64  const QString &connectionManager, const QString &protocol,
65  const QString &displayName, const QVariantMap &parameters,
66  const QVariantMap &properties = QVariantMap());
67 
68  struct Private;
69  friend struct Private;
70  Private *mPriv;
71 };
72 
73 } // Tp
74 
75 #endif
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingAccount class represents the parameters of and the reply to an asynchronous account reques...
Definition: pending-account.h:43
The AccountManager class represents a Telepathy account manager.
Definition: account-manager.h:53


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01351.html0000644000175100017520000000751012530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceServicePointAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceServicePointAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
CurrentServicePoint() const Tp::Service::ChannelInterfaceServicePointAdaptor
dbusConnection() const Tp::AbstractAdaptor
InitialServicePoint() const Tp::Service::ChannelInterfaceServicePointAdaptor
ServicePointChanged(const Tp::ServicePoint &servicePoint)Tp::Service::ChannelInterfaceServicePointAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00135.html0000644000175100017520000003162412530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Callback3< R, Arg1, Arg2, Arg3 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback3< R, Arg1, Arg2, Arg3 > Class Template Reference

Callback with 3 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3)
 
typedef R ResultType
 

Public Member Functions

 Callback3 ()
 
template<class Functor >
 Callback3 (const Functor &functor)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1, class Arg2, class Arg3>
class Tp::Callback3< R, Arg1, Arg2, Arg3 >

Callback with 3 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R, class Arg1, class Arg2, class Arg3>
typedef R(* Tp::Callback3< R, Arg1, Arg2, Arg3 >::FunctionType)(Arg1, Arg2, Arg3)
template<class R, class Arg1, class Arg2, class Arg3>
typedef R Tp::Callback3< R, Arg1, Arg2, Arg3 >::ResultType

Constructor & Destructor Documentation

template<class R, class Arg1, class Arg2, class Arg3>
Tp::Callback3< R, Arg1, Arg2, Arg3 >::Callback3 ( )
inline
template<class R, class Arg1, class Arg2, class Arg3>
template<class Functor >
Tp::Callback3< R, Arg1, Arg2, Arg3 >::Callback3 ( const Functor &  functor)
inline

Member Function Documentation

template<class R, class Arg1, class Arg2, class Arg3>
ResultType Tp::Callback3< R, Arg1, Arg2, Arg3 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3 
) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00950.html0000644000175100017520000002116312530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionContactsInterface Member List

This is the complete list of members for Tp::BaseConnectionContactsInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseConnectionContactsInterface()Tp::BaseConnectionContactsInterfaceprotected
create()Tp::BaseConnectionContactsInterfaceinlinestatic
create()Tp::BaseConnectionContactsInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, DBusError *error)Tp::BaseConnectionContactsInterface
GetContactAttributesCallback typedefTp::BaseConnectionContactsInterface
immutableProperties() const Tp::BaseConnectionContactsInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setContactAttributeInterfaces(const QStringList &contactAttributeInterfaces)Tp::BaseConnectionContactsInterface
setGetContactAttributesCallback(const GetContactAttributesCallback &cb)Tp::BaseConnectionContactsInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionContactsInterface()Tp::BaseConnectionContactsInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00752_source.html0000644000175100017520000002653512530426257022531 0ustar00kaffeinekaffeine00000000000000 outgoing-file-transfer-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
outgoing-file-transfer-channel.h
1 
23 #ifndef _TelepathyQt_outgoing_file_transfer_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_outgoing_file_transfer_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/FileTransferChannel>
31 
32 #include <QAbstractSocket>
33 
34 namespace Tp
35 {
36 
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(OutgoingFileTransferChannel)
41 
42 public:
43  static const Feature FeatureCore;
44 
45  static OutgoingFileTransferChannelPtr create(const ConnectionPtr &connection,
46  const QString &objectPath, const QVariantMap &immutableProperties);
47 
48  virtual ~OutgoingFileTransferChannel();
49 
50  PendingOperation *provideFile(QIODevice *input);
51 
52 protected:
53  OutgoingFileTransferChannel(const ConnectionPtr &connection,
54  const QString &objectPath,
55  const QVariantMap &immutableProperties,
57 
58 private Q_SLOTS:
59  TP_QT_NO_EXPORT void onProvideFileFinished(Tp::PendingOperation *op);
60 
61  TP_QT_NO_EXPORT void onSocketConnected();
62  TP_QT_NO_EXPORT void onSocketDisconnected();
63  TP_QT_NO_EXPORT void onSocketError(QAbstractSocket::SocketError error);
64  TP_QT_NO_EXPORT void onInputAboutToClose();
65  TP_QT_NO_EXPORT void doTransfer();
66 
67 private:
68  TP_QT_NO_EXPORT void connectToHost();
69  TP_QT_NO_EXPORT void setFinished();
70 
71  struct Private;
72  friend struct Private;
73  Private *mPriv;
74 };
75 
76 } // Tp
77 
78 #endif
The OutgoingFileTransferChannel class represents a Telepathy channel of type FileTransfer for outgoin...
Definition: outgoing-file-transfer-channel.h:37
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
static const Feature FeatureCore
Definition: outgoing-file-transfer-channel.h:43
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The FileTransferChannel class represents a Telepathy channel of type FileTransfer.
Definition: file-transfer-channel.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01165.html0000644000175100017520000000526012530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandleOwnerMap Member List

This is the complete list of members for Tp::HandleOwnerMap, including all inherited members.

HandleOwnerMap()Tp::HandleOwnerMapinline
HandleOwnerMap(const QMap< uint, uint > &a)Tp::HandleOwnerMapinline
operator=(const QMap< uint, uint > &a)Tp::HandleOwnerMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_rela.html0000644000175100017520000000315412530426260023330 0ustar00kaffeinekaffeine00000000000000 Class Members - Related Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00509.html0000644000175100017520000006325612530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleObserver Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | List of all members
Tp::SimpleObserver Class Reference

The SimpleObserver class provides an easy way to track channels in an account and can be optionally filtered by a contact. More...

#include <TelepathyQt/SimpleObserver>

Inherits QObject, and Tp::RefCounted.

Signals

void newChannels (const QList< Tp::ChannelPtr > &channels)
 
void channelInvalidated (const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage)
 

Public Member Functions

virtual ~SimpleObserver ()
 
AccountPtr account () const
 
ChannelClassSpecList channelFilter () const
 
QString contactIdentifier () const
 
QList< ChannelClassFeaturesextraChannelFeatures () const
 
QList< ChannelPtr > channels () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SimpleObserverPtr create (const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >())
 
static SimpleObserverPtr create (const AccountPtr &account, const ChannelClassSpecList &channelFilter, const ContactPtr &contact, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >())
 
static SimpleObserverPtr create (const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >())
 

Detailed Description

The SimpleObserver class provides an easy way to track channels in an account and can be optionally filtered by a contact.

Constructor & Destructor Documentation

Tp::SimpleObserver::~SimpleObserver ( )
virtual

Class destructor.

Member Function Documentation

SimpleObserverPtr Tp::SimpleObserver::create ( const AccountPtr &  account,
const ChannelClassSpecList channelFilter,
const QList< ChannelClassFeatures > &  extraChannelFeatures = QList<ChannelClassFeatures>() 
)
static

Create a new SimpleObserver object.

Events will be signalled for all channels in account that match channelFilter for all contacts.

Parameters
channelFilterA specification of the channels in which this observer is interested.
accountThe account used to listen to events.
extraChannelFeaturesExtra channel features to be enabled. All channels emitted in newChannels() will have the extra features that match their immutable properties enabled.
Returns
An SimpleObserverPtr object pointing to the newly created SimpleObserver object.
SimpleObserverPtr Tp::SimpleObserver::create ( const AccountPtr &  account,
const ChannelClassSpecList channelFilter,
const ContactPtr &  contact,
const QList< ChannelClassFeatures > &  extraChannelFeatures = QList<ChannelClassFeatures>() 
)
static

Create a new SimpleObserver object.

Events will be signalled for all channels in account established with contact, if not null, and that match channelFilter.

Parameters
channelFilterA specification of the channels in which this observer is interested.
accountThe account used to listen to events.
contactThe contact used to filter events.
extraChannelFeaturesExtra channel features to be enabled. All channels emitted in newChannels() will have the extra features that match their immutable properties enabled.
Returns
An SimpleObserverPtr object pointing to the newly created SimpleObserver object.
SimpleObserverPtr Tp::SimpleObserver::create ( const AccountPtr &  account,
const ChannelClassSpecList channelFilter,
const QString &  contactIdentifier,
const QList< ChannelClassFeatures > &  extraChannelFeatures = QList<ChannelClassFeatures>() 
)
static

Create a new SimpleObserver object.

Events will be signalled for all channels in account established with a contact identified by contactIdentifier, if non-empty, and that match channelFilter.

Parameters
channelFilterA specification of the channels in which this observer is interested.
accountThe account used to listen to events.
contactIdentifierThe identifier of the contact used to filter events.
extraChannelFeaturesExtra channel features to be enabled. All channels emitted in newChannels() will have the extra features that match their immutable properties enabled.
Returns
An SimpleObserverPtr object pointing to the newly created SimpleObserver object.
AccountPtr Tp::SimpleObserver::account ( ) const

Return the account used to listen to events.

Returns
A pointer to the Account object.
ChannelClassSpecList Tp::SimpleObserver::channelFilter ( ) const

Return a specification of the channels that this observer is interested.

Returns
The specification of the channels as a list of ChannelClassSpec objects.
QString Tp::SimpleObserver::contactIdentifier ( ) const

Return the identifier of the contact used to filter events, or an empty string if none was provided at construction.

Returns
The identifier of the contact.
QList< ChannelClassFeatures > Tp::SimpleObserver::extraChannelFeatures ( ) const

Return the extra channel features to be enabled based on the channels immutable properties.

Returns
The features as a list of ChannelClassFeatures objects.
QList< ChannelPtr > Tp::SimpleObserver::channels ( ) const

Return the channels being observed.

Returns
A list of pointers to Channel objects.
void Tp::SimpleObserver::newChannels ( const QList< Tp::ChannelPtr > &  channels)
signal

Emitted whenever new channels that match this observer's criteria are created.

Parameters
channelsThe new channels.
void Tp::SimpleObserver::channelInvalidated ( const Tp::ChannelPtr &  channel,
const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted whenever a channel that is being observed is invalidated.

Parameters
channelThe channel that was invalidated.
errorNameA D-Bus error name (a string in a subset of ASCII, prefixed with a reversed domain name).
errorMessageA debugging message associated with the error.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00263.html0000644000175100017520000024720012530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Connection Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Signals | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Tp::Connection Class Reference

The Connection class represents a Telepathy connection. More...

#include <TelepathyQt/Connection>

Inherits Tp::StatefulDBusProxy, and Tp::OptionalInterfaceFactory< Connection >.

Classes

class  ErrorDetails
 The Connection::ErrorDetails class represents the details of a connection error. More...
 

Signals

void statusChanged (Tp::ConnectionStatus newStatus)
 
void selfHandleChanged (uint newHandle)
 
void selfContactChanged ()
 
void accountBalanceChanged (const Tp::CurrencyAmount &accountBalance)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~Connection ()
 
ChannelFactoryConstPtr channelFactory () const
 
ContactFactoryConstPtr contactFactory () const
 
QString cmName () const
 
QString protocolName () const
 
ConnectionStatus status () const
 
ConnectionStatusReason statusReason () const
 
const ErrorDetailserrorDetails () const
 
uint selfHandle () const
 
ContactPtr selfContact () const
 
CurrencyAmount accountBalance () const
 
ConnectionCapabilities capabilities () const
 
ContactManagerPtr contactManager () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Connection >
 OptionalInterfaceFactory (Connection *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static ConnectionPtr create (const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
static ConnectionPtr create (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureSelfContact
 
static const Feature FeatureSimplePresence
 
static const Feature FeatureRoster
 
static const Feature FeatureRosterGroups
 
static const Feature FeatureAccountBalance
 
static const Feature FeatureConnected
 

Protected Member Functions

 Connection (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature)
 
Client::ConnectionInterfacebaseInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Connection >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Connection >
enum  InterfaceSupportedChecking
 

Detailed Description

The Connection class represents a Telepathy connection.

This models a connection to a single user account on a communication service.

Contacts, and server-stored lists (such as subscribed contacts, block lists, or allow lists) on a service are all represented using the ContactManager object on the connection, which is valid only for the lifetime of the connection object.

The remote object accessor functions on this object (status(), statusReason(), and so on) don't make any D-Bus calls; instead, they return/use values cached from a previous introspection run. The introspection process populates their values in the most efficient way possible based on what the service implements.

To avoid unnecessary D-Bus traffic, some accessors only return valid information after specific features have been enabled. For instance, to retrieve the connection self contact, it is necessary to enable the feature Connection::FeatureSelfContact. See the individual methods descriptions for more details.

Connection features can be enabled by constructing a ConnectionFactory and enabling the desired features, and passing it to AccountManager, Account or ClientRegistrar when creating them as appropriate. However, if a particular feature is only ever used in a specific circumstance, such as an user opening some settings dialog separate from the general view of the application, features can be later enabled as needed by calling becomeReady() with the additional features, and waiting for the resulting PendingOperation to finish.

As an addition to accessors, signals are emitted to indicate that properties have changed, for example statusChanged()(), selfContactChanged(), etc.

Usage

Creating a connection object

The easiest way to create connection objects is through Account. One can just use the Account::connection method to get an account active connection.

If you already know the object path, you can just call create(). For example:

ConnectionPtr conn = Connection::create(busName, objectPath);

A ConnectionPtr object is returned, which will automatically keep track of object lifetime.

You can also provide a D-Bus connection as a QDBusConnection:

*
* ConnectionPtr conn = Connection::create(QDBusConnection::sessionBus(),
*
*

Making connection ready to use

A Connection object needs to become ready before usage, meaning that the introspection process finished and the object accessors can be used.

To make the object ready, use becomeReady() and wait for the PendingOperation::finished() signal to be emitted.

*
* class MyClass : public QObject
* {
* QOBJECT
*
* public:
* MyClass(QObject *parent = 0);
* ~MyClass() { }
*
* private Q_SLOTS:
* void onConnectionReady(Tp::PendingOperation*);
*
* private:
* ConnectionPtr conn;
* };
*
* MyClass::MyClass(const QString &busName, const QString &objectPath,
* QObject *parent)
* : QObject(parent)
* {
* // connect and become ready
* connect(conn->requestConnect(),
* SIGNAL(finished(Tp::PendingOperation*)),
* SLOT(onConnectionReady(Tp::PendingOperation*)));
* }
*
* void MyClass::onConnectionReady(Tp::PendingOperation *op)
* {
* if (op->isError()) {
* qWarning() << "Account cannot become ready:" <<
* op->errorName() << "-" << op->errorMessage();
* return;
* }
*
* // Connection is now ready
* }
*
*

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::Connection::~Connection ( )
virtual

Class destructor.

Tp::Connection::Connection ( const QDBusConnection &  bus,
const QString &  busName,
const QString &  objectPath,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory,
const Feature coreFeature 
)
protected

Construct a new connection object using the given bus.

A warning is printed if the factories are not for bus.

Parameters
busQDBusConnection to use.
busNameThe connection's well-known bus name (sometimes called a "service name").
objectPathThe connection object path.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
coreFeatureThe core feature of the Connection subclass. The corresponding introspectable should depend on Connection::FeatureCore.

Member Function Documentation

ConnectionPtr Tp::Connection::create ( const QString &  busName,
const QString &  objectPath,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
static

Create a new connection object using QDBusConnection::sessionBus().

A warning is printed if the factories are not for QDBusConnection::sessionBus().

Parameters
busNameThe connection well-known bus name (sometimes called a "service name").
objectPathThe connection object path.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ConnectionPtr object pointing to the newly created Connection object.
ConnectionPtr Tp::Connection::create ( const QDBusConnection &  bus,
const QString &  busName,
const QString &  objectPath,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
static

Create a new connection object using the given bus.

A warning is printed if the factories are not for bus.

Parameters
busQDBusConnection to use.
busNameThe connection well-known bus name (sometimes called a "service name").
objectPathThe connection object path.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ConnectionPtr object pointing to the newly created Connection object.
ChannelFactoryConstPtr Tp::Connection::channelFactory ( ) const

Return the channel factory used by this connection.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the account would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ChannelFactory object.
ContactFactoryConstPtr Tp::Connection::contactFactory ( ) const

Return the contact factory used by this connection.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the account would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ContactFactory object.
QString Tp::Connection::cmName ( ) const

Return the connection manager name of this connection.

Returns
The connection manager name.
QString Tp::Connection::protocolName ( ) const

Return the protocol name of this connection.

Returns
The protocol name.
ConnectionStatus Tp::Connection::status ( ) const

Return the status of this connection.

Change notification is via the statusChanged() signal.

This method requires Connection::FeatureCore to be ready.

Returns
The status as ConnectionStatus.
See Also
statusChanged(), statusReason(), errorDetails()
ConnectionStatusReason Tp::Connection::statusReason ( ) const

Return the reason for this connection status.

The validity and change rules are the same as for status().

The status reason should be only used as a fallback in error handling when the application doesn't understand an error name given as the invalidation reason, which may in some cases be domain/UI-specific.

This method requires Connection::FeatureCore to be ready.

Returns
The status reason as ConnectionStatusReason.
See Also
invalidated(), invalidationReason()
const Connection::ErrorDetails & Tp::Connection::errorDetails ( ) const

Return detailed information about the reason for the connection going invalidated().

Some services may provide additional error information in the ConnectionError D-Bus signal, when a Connection is disconnected / has become unusable. If the service didn't provide any, or has not been invalidated yet, an invalid instance is returned.

The information provided by invalidationReason() and this method should always be used in error handling in preference to statusReason(). The status reason can be used as a fallback, however, if the client doesn't understand what a particular value returned by invalidationReason() means, as it may be domain-specific with some services.

Returns
The error details as a Connection::ErrorDetails object.
See Also
status(), statusReason(), invalidationReason()
uint Tp::Connection::selfHandle ( ) const

Return the handle representing the user on this connection.

Note that if the connection is not yet in the ConnectionStatusConnected state, the value of this property may be zero.

Change notification is via the selfHandleChanged() signal.

This method requires Connection::FeatureCore to be ready.

Returns
The user handle.
See Also
selfHandleChanged(), selfContact()
ContactPtr Tp::Connection::selfContact ( ) const

Return the object representing the user on this connection.

Note that if the connection is not yet in the ConnectionStatusConnected state, the value of this property may be null.

Change notification is via the selfContactChanged() signal.

This method requires Connection::FeatureSelfContact to be ready.

Returns
A pointer to the Contact object, or a null ContactPtr if unknown.
See Also
selfContactChanged(), selfHandle()
CurrencyAmount Tp::Connection::accountBalance ( ) const

Return the user's balance on the account corresponding to this connection.

A negative amount may be possible on some services, and indicates that the user owes money to the service provider.

Change notification is via the accountBalanceChanged() signal.

This method requires Connection::FeatureAccountBalance to be ready.

Returns
The account balance as #CurrencyAmount.
See Also
accountBalanceChanged()
ConnectionCapabilities Tp::Connection::capabilities ( ) const

Return the capabilities for this connection.

User interfaces can use this information to show or hide UI components.

This property cannot change after the connection has gone to state ConnectionStatusConnected, so there is no change notification.

This method requires Connection::FeatureCore to be ready.

Returns
The capabilities of this connection.
ContactManagerPtr Tp::Connection::contactManager ( ) const

Return the ContactManager object for this connection.

The contact manager is responsible for all contact handling in this connection, including adding, removing, authorizing, etc.

Returns
A pointer to the ContactManager object.
void Tp::Connection::statusChanged ( Tp::ConnectionStatus  newStatus)
signal

Indicates that the connection's status has changed and that all previously requested features are now ready to use for the new status.

Legitimate uses for this signal, apart from waiting for a given connection status to be ready, include updating an animation based on the connection being in ConnectionStatusConnecting, ConnectionStatusConnected and ConnectionStatusDisconnected, and otherwise showing progress indication to the user. It should, however, NEVER be used for error handling:

This signal doesn't contain the status reason as an argument, because statusChanged() shouldn't be used for error-handling. There are numerous cases in which a Connection may become unusable without there being a status change to ConnectionStatusDisconnected. All of these cases, and being disconnected itself, are signaled by invalidated() with appropriate error names. On the other hand, the reason for the status going to ConnectionStatusConnecting or ConnectionStatusConnected will always be ConnectionStatusReasonRequested, so signaling that would be useless.

The status reason, as returned by statusReason(), may however be used as a fallback for error handling in slots connected to the invalidated() signal, if the client doesn't understand a particular (likely domain-specific if so) error name given by invalidateReason().

Parameters
newStatusThe new status of the connection, as would be returned by status().
void Tp::Connection::selfHandleChanged ( uint  newHandle)
signal

Emitted when the value of selfHandle() changes.

Parameters
newHandleThe new connection self handle.
See Also
selfHandle()
void Tp::Connection::selfContactChanged ( )
signal

Emitted when the value of selfContact() changes.

See Also
selfContact()
void Tp::Connection::accountBalanceChanged ( const Tp::CurrencyAmount accountBalance)
signal

Emitted when the value of accountBalance() changes.

Parameters
accountBalanceThe new user's balance of this connection.
See Also
accountBalance()
Client::ConnectionInterface * Tp::Connection::baseInterface ( ) const
protected

Return the Client::ConnectionInterface interface proxy object for this connection. This method is protected since the convenience methods provided by this class should generally be used instead of calling D-Bus methods directly.

Returns
A pointer to the existing Client::ConnectionInterface object for this Connection object.

Member Data Documentation

const Feature Tp::Connection::FeatureCore
static

Feature representing the core that needs to become ready to make the Connection object usable.

Note that this feature must be enabled in order to use most Connection methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

const Feature Tp::Connection::FeatureSelfContact
static

Feature used to retrieve the connection self contact.

See self contact specific methods' documentation for more details.

See Also
selfContact(), selfContactChanged()
const Feature Tp::Connection::FeatureSimplePresence
static

Feature used to retrieve/keep track of the connection self presence.

See simple presence specific methods' documentation for more details.

const Feature Tp::Connection::FeatureRoster
static

Feature used to enable roster support on Connection::contactManager.

See ContactManager roster specific methods' documentation for more details.

See Also
ContactManager::allKnownContacts()
const Feature Tp::Connection::FeatureRosterGroups
static

Feature used to enable roster groups support on Connection::contactManager.

See ContactManager roster groups specific methods' documentation for more details.

See Also
ContactManager::allKnownGroups()
const Feature Tp::Connection::FeatureAccountBalance
static

Feature used to retrieve/keep track of the connection account balance.

See account balance specific methods' documentation for more details.

See Also
accountBalance(), accountBalanceChanged()
const Feature Tp::Connection::FeatureConnected
static

When this feature is prepared, it means that the connection status() is ConnectionStatusConnected.

Note that if ConnectionFactory is being used with FeatureConnected set, Connection objects will only be signalled by the library when the corresponding connection is in status() ConnectionStatusConnected.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01224.html0000644000175100017520000000540412530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleContactPresences Member List

This is the complete list of members for Tp::SimpleContactPresences, including all inherited members.

operator=(const QMap< uint, SimplePresence > &a)Tp::SimpleContactPresencesinline
SimpleContactPresences()Tp::SimpleContactPresencesinline
SimpleContactPresences(const QMap< uint, SimplePresence > &a)Tp::SimpleContactPresencesinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00008.html0000644000175100017520000003651212530426257021137 0ustar00kaffeinekaffeine00000000000000 accounts/account-item.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
accounts/account-item.cpp
#include "account-item.h"
#include "_gen/account-item.moc.hpp"
#include <TelepathyQt/AccountManager>
#include <TelepathyQt/PendingReady>
#include <QDebug>
#include <QComboBox>
#include <QTableWidget>
AccountItem::AccountItem(Tp::AccountPtr acc, QTableWidget *table, int row, QObject *parent)
: QObject(parent),
mAcc(acc),
mTable(table),
mRow(row)
{
init();
}
AccountItem::~AccountItem()
{
}
void AccountItem::setupGui()
{
mTable->setItem(mRow, ColumnValid, new QTableWidgetItem(mAcc->isValid() ?
QLatin1String("true") : QLatin1String("false")));
mTable->setItem(mRow, ColumnEnabled, new QTableWidgetItem(mAcc->isEnabled() ?
QLatin1String("true") : QLatin1String("false")));
mTable->setItem(mRow, ColumnConnectionManager, new QTableWidgetItem(mAcc->cmName()));
mTable->setItem(mRow, ColumnProtocol, new QTableWidgetItem(mAcc->protocolName()));
mTable->setItem(mRow, ColumnDisplayName, new QTableWidgetItem(mAcc->displayName()));
mTable->setItem(mRow, ColumnNickname, new QTableWidgetItem(mAcc->nickname()));
mTable->setItem(mRow, ColumnConnectsAutomatically, new QTableWidgetItem(mAcc->connectsAutomatically() ?
QLatin1String("true") : QLatin1String("false")));
mTable->setItem(mRow, ColumnAutomaticPresence, new QTableWidgetItem(mAcc->automaticPresence().status()));
mTable->setItem(mRow, ColumnCurrentPresence, new QTableWidgetItem(mAcc->currentPresence().status()));
mTable->setItem(mRow, ColumnRequestedPresence, new QTableWidgetItem(mAcc->requestedPresence().status()));
mTable->setItem(mRow, ColumnChangingPresence, new QTableWidgetItem(mAcc->isChangingPresence() ?
QLatin1String("true") : QLatin1String("false")));
mTable->setItem(mRow, ColumnConnectionStatus, new QTableWidgetItem(QString::number(mAcc->connectionStatus())));
mTable->setItem(mRow, ColumnConnection, new QTableWidgetItem(
mAcc->connection().isNull() ? QLatin1String("") : mAcc->connection()->objectPath()));
}
void AccountItem::init()
{
setupGui();
Tp::Account *acc = mAcc.data();
connect(acc,
SIGNAL(validityChanged(bool)),
SLOT(onValidityChanged(bool)));
connect(acc,
SIGNAL(stateChanged(bool)),
SLOT(onStateChanged(bool)));
connect(acc,
SIGNAL(displayNameChanged(const QString &)),
SLOT(onDisplayNameChanged(const QString &)));
connect(acc,
SIGNAL(nicknameChanged(const QString &)),
SLOT(onNicknameChanged(const QString &)));
connect(acc,
SIGNAL(connectsAutomaticallyPropertyChanged(bool)),
SLOT(onConnectsAutomaticallyPropertyChanged(bool)));
connect(acc,
SIGNAL(changingPresence(bool)),
SLOT(onChangingPresenceChanged(bool)));
connect(acc,
SIGNAL(automaticPresenceChanged(const Tp::SimplePresence &)),
SLOT(onAutomaticPresenceChanged(const Tp::SimplePresence &)));
connect(acc,
SIGNAL(currentPresenceChanged(const Tp::SimplePresence &)),
SLOT(onCurrentPresenceChanged(const Tp::SimplePresence &)));
connect(acc,
SIGNAL(requestedPresenceChanged(const Tp::SimplePresence &)),
SLOT(onRequestedPresenceChanged(const Tp::SimplePresence &)));
connect(acc,
const QString &, const QVariantMap &)),
const QString &, const QVariantMap &)));
connect(acc,
SIGNAL(haveConnectionChanged(bool)),
SLOT(onHaveConnectionChanged(bool)));
}
void AccountItem::onValidityChanged(bool valid)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnValid);
item->setText((valid ? QLatin1String("true") : QLatin1String("false")));
}
void AccountItem::onStateChanged(bool enabled)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnEnabled);
item->setText((enabled ? QLatin1String("true") : QLatin1String("false")));
}
void AccountItem::onDisplayNameChanged(const QString &name)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnDisplayName);
item->setText(name);
}
void AccountItem::onNicknameChanged(const QString &name)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnNickname);
item->setText(name);
}
void AccountItem::onConnectsAutomaticallyPropertyChanged(bool value)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnConnectsAutomatically);
item->setText((value ? QLatin1String("true") : QLatin1String("false")));
}
void AccountItem::onChangingPresenceChanged(bool value)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnChangingPresence);
item->setText((value ? QLatin1String("true") : QLatin1String("false")));
}
void AccountItem::onAutomaticPresenceChanged(const Tp::SimplePresence &presence)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnAutomaticPresence);
item->setText(presence.status);
}
void AccountItem::onCurrentPresenceChanged(const Tp::SimplePresence &presence)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnCurrentPresence);
item->setText(presence.status);
}
void AccountItem::onRequestedPresenceChanged(const Tp::SimplePresence &presence)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnRequestedPresence);
item->setText(presence.status);
}
void AccountItem::onStatusChanged(Tp::ConnectionStatus status,
Tp::ConnectionStatusReason reason, const QString &error,
const QVariantMap &errorDetails)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnConnectionStatus);
item->setText(QString::number(status));
}
void AccountItem::onHaveConnectionChanged(bool haveConnection)
{
QTableWidgetItem *item = mTable->item(mRow, ColumnConnection);
item->setText(mAcc->connection().isNull() ?
QLatin1String("") : mAcc->connection()->objectPath());
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars.html0000644000175100017520000000535312530426260023363 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- a -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00322.html0000644000175100017520000001420212530426260021120 0ustar00kaffeinekaffeine00000000000000 Tp::ContactInfoMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactInfoMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, ContactInfoFieldList >.

Public Member Functions

 ContactInfoMap ()
 
 ContactInfoMap (const QMap< uint, ContactInfoFieldList > &a)
 
ContactInfoMapoperator= (const QMap< uint, ContactInfoFieldList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, ContactInfoFieldList>, but needed to have a discrete type in the Qt type system.

A dictionary whose keys are contact handles and whose values are contact information..

Constructor & Destructor Documentation

Tp::ContactInfoMap::ContactInfoMap ( )
inline
Tp::ContactInfoMap::ContactInfoMap ( const QMap< uint, ContactInfoFieldList > &  a)
inline

Member Function Documentation

ContactInfoMap& Tp::ContactInfoMap::operator= ( const QMap< uint, ContactInfoFieldList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01293.html0000644000175100017520000002307412530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ProtocolInterfaceAddressingInterface Member List

This is the complete list of members for Tp::Client::ProtocolInterfaceAddressingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ProtocolInterfaceAddressingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NormalizeContactURI(const QString &URI, int timeout=-1)Tp::Client::ProtocolInterfaceAddressingInterfaceinlineslot
NormalizeVCardAddress(const QString &VCardField, const QString &VCardAddress, int timeout=-1)Tp::Client::ProtocolInterfaceAddressingInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ProtocolInterfaceAddressingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterfaceAddressingInterface
ProtocolInterfaceAddressingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterfaceAddressingInterface
ProtocolInterfaceAddressingInterface(Tp::DBusProxy *proxy)Tp::Client::ProtocolInterfaceAddressingInterface
ProtocolInterfaceAddressingInterface(const Tp::Client::ConnectionManagerInterface &mainInterface)Tp::Client::ProtocolInterfaceAddressingInterfaceexplicit
ProtocolInterfaceAddressingInterface(const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)Tp::Client::ProtocolInterfaceAddressingInterface
requestAllProperties() const Tp::Client::ProtocolInterfaceAddressingInterfaceinline
requestPropertyAddressableURISchemes() const Tp::Client::ProtocolInterfaceAddressingInterfaceinline
requestPropertyAddressableVCardFields() const Tp::Client::ProtocolInterfaceAddressingInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ProtocolInterfaceAddressingInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00077.html0000644000175100017520000006752312530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Client::AccountInterfaceAddressingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::AccountInterfaceAddressingInterface Class Reference

#include <TelepathyQt/AccountManager>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetURISchemeAssociation (const QString &URIScheme, bool association, int timeout=-1)
 

Public Member Functions

 AccountInterfaceAddressingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterfaceAddressingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterfaceAddressingInterface (Tp::DBusProxy *proxy)
 
 AccountInterfaceAddressingInterface (const Tp::Client::AccountInterface &mainInterface)
 
 AccountInterfaceAddressingInterface (const Tp::Client::AccountInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyURISchemes () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Account.Interface.Addressing".

Constructor & Destructor Documentation

Tp::Client::AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterfaceAddressingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterfaceAddressingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface ( Tp::DBusProxy proxy)

Creates a AccountInterfaceAddressingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface ( const Tp::Client::AccountInterface mainInterface)
explicit

Creates a AccountInterfaceAddressingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::AccountInterfaceAddressingInterface::AccountInterfaceAddressingInterface ( const Tp::Client::AccountInterface mainInterface,
QObject *  parent 
)

Creates a AccountInterfaceAddressingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::AccountInterfaceAddressingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Account.Interface.Addressing", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::AccountInterfaceAddressingInterface::requestPropertyURISchemes ( ) const
inline

Asynchronous getter for the remote object property URISchemes of type QStringList.

A list of fields indicating the type of URI addressing scheme the the account should be used for (eg 'tel') indicating the account is intended for use by applications offering a telephony UI, or 'sip' or 'xmpp' for those protocols

Note that these fields signify intent, not ability: It is entirely possible that an account which can be used for a given URI scheme is not wanted for it by the user, and therefore not flagged as such in this field.

Change notification for this property is provided by the standard D-Bus PropertiesChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::AccountInterfaceAddressingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::AccountInterfaceAddressingInterface::SetURISchemeAssociation ( const QString &  URIScheme,
bool  association,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetURISchemeAssociation on the remote object.

Associate (or disassociate) an account with a particular URI addressing scheme, (such as 'tel' for telephony)

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
URIScheme
URI scheme to associate/disassociate the account with/from
association
True to associate this account with a given addressing scheme False 
if the account should not be associated with said scheme
timeoutThe timeout in milliseconds.
void Tp::Client::AccountInterfaceAddressingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01038.html0000644000175100017520000000651512530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > Member List

This is the complete list of members for Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >, including all inherited members.

fnTp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >
FunctionType typedefTp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
PtrFunctor5(FunctionType fn)Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
ResultType typedefTp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00892.html0000644000175100017520000000463112530426257021147 0ustar00kaffeinekaffeine00000000000000 functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
functions

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00391.html0000644000175100017520000000762212530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::MediaStreamHandlerCandidate Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MediaStreamHandlerCandidate Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString name
 
MediaStreamHandlerTransportList transports
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

QString Tp::MediaStreamHandlerCandidate::name
MediaStreamHandlerTransportList Tp::MediaStreamHandlerCandidate::transports


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01352.html0000644000175100017520000000641412530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSplittableAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceSplittableAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Split(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSplittableAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00136.html0000644000175100017520000003233012530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 > Class Template Reference

Callback with 4 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4)
 
typedef R ResultType
 

Public Member Functions

 Callback4 ()
 
template<class Functor >
 Callback4 (const Functor &functor)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1, class Arg2, class Arg3, class Arg4>
class Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >

Callback with 4 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4>
typedef R(* Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >::FunctionType)(Arg1, Arg2, Arg3, Arg4)
template<class R, class Arg1, class Arg2, class Arg3, class Arg4>
typedef R Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >::ResultType

Constructor & Destructor Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4>
Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >::Callback4 ( )
inline
template<class R, class Arg1, class Arg2, class Arg3, class Arg4>
template<class Functor >
Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >::Callback4 ( const Functor &  functor)
inline

Member Function Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4>
ResultType Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4 
) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00951.html0000644000175100017520000002327112530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionSimplePresenceInterface Member List

This is the complete list of members for Tp::BaseConnectionSimplePresenceInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseConnectionSimplePresenceInterface()Tp::BaseConnectionSimplePresenceInterfaceprotected
create()Tp::BaseConnectionSimplePresenceInterfaceinlinestatic
create()Tp::BaseConnectionSimplePresenceInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getPresences(const Tp::UIntList &contacts)Tp::BaseConnectionSimplePresenceInterface
immutableProperties() const Tp::BaseConnectionSimplePresenceInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
maximumStatusMessageLength() const Tp::BaseConnectionSimplePresenceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setMaximumStatusMessageLength(uint maximumStatusMessageLength)Tp::BaseConnectionSimplePresenceInterface
SetPresenceCallback typedefTp::BaseConnectionSimplePresenceInterface
setPresences(const Tp::SimpleContactPresences &presences)Tp::BaseConnectionSimplePresenceInterface
setSetPresenceCallback(const SetPresenceCallback &cb)Tp::BaseConnectionSimplePresenceInterface
setStatuses(const Tp::SimpleStatusSpecMap &statuses)Tp::BaseConnectionSimplePresenceInterface
statuses() const Tp::BaseConnectionSimplePresenceInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionSimplePresenceInterface()Tp::BaseConnectionSimplePresenceInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00738_source.html0000644000175100017520000006763612530426257022544 0ustar00kaffeinekaffeine00000000000000 message.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
message.h
1 
23 #ifndef _TelepathyQt_message_h_HEADER_GUARD_
24 #define _TelepathyQt_message_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <QSharedDataPointer>
31 
32 #include <TelepathyQt/Constants>
33 #include <TelepathyQt/Contact>
34 #include <TelepathyQt/Types>
35 
36 class QDateTime;
37 
38 namespace Tp
39 {
40 
41 class Contact;
42 class TextChannel;
43 
44 class TP_QT_EXPORT Message
45 {
46 public:
47  Message(ChannelTextMessageType, const QString &);
48  Message(const Message &other);
49  ~Message();
50 
51  Message &operator=(const Message &other);
52  bool operator==(const Message &other) const;
53  inline bool operator!=(const Message &other) const
54  {
55  return !(*this == other);
56  }
57 
58  // Convenient access to headers
59 
60  QDateTime sent() const;
61 
62  ChannelTextMessageType messageType() const;
63 
64  bool isTruncated() const;
65 
66  bool hasNonTextContent() const;
67 
68  QString messageToken() const;
69 
70  bool isSpecificToDBusInterface() const;
71  QString dbusInterface() const;
72 
73  QString text() const;
74 
75  // Direct access to the whole message (header and body)
76 
77  MessagePart header() const;
78 
79  int size() const;
80  MessagePart part(uint index) const;
81  MessagePartList parts() const;
82 
83 private:
84  friend class ContactMessenger;
85  friend class ReceivedMessage;
86  friend class TextChannel;
87 
88  TP_QT_NO_EXPORT Message();
89  TP_QT_NO_EXPORT Message(const MessagePartList &parts);
90  TP_QT_NO_EXPORT Message(uint, uint, const QString &);
91 
92  struct Private;
93  friend struct Private;
94  QSharedDataPointer<Private> mPriv;
95 };
96 
97 class TP_QT_EXPORT ReceivedMessage : public Message
98 {
99 public:
101  {
102  public:
103  DeliveryDetails();
104  DeliveryDetails(const DeliveryDetails &other);
105  ~DeliveryDetails();
106 
107  DeliveryDetails &operator=(const DeliveryDetails &other);
108 
109  bool isValid() const { return mPriv.constData() != 0; }
110 
111  DeliveryStatus status() const;
112 
113  bool hasOriginalToken() const;
114  QString originalToken() const;
115 
116  bool isError() const;
117  ChannelTextSendError error() const;
118 
119  bool hasDebugMessage() const;
120  QString debugMessage() const;
121 
122  QString dbusError() const;
123 
124  bool hasEchoedMessage() const;
125  Message echoedMessage() const;
126 
127  private:
128  friend class ReceivedMessage;
129 
130  TP_QT_NO_EXPORT DeliveryDetails(const MessagePartList &parts);
131 
132  struct Private;
133  friend struct Private;
134  QSharedDataPointer<Private> mPriv;
135  };
136 
137  ReceivedMessage(const ReceivedMessage &other);
138  ReceivedMessage &operator=(const ReceivedMessage &other);
139  ~ReceivedMessage();
140 
141  QDateTime received() const;
142  ContactPtr sender() const;
143  QString senderNickname() const;
144 
145  QString supersededToken() const;
146 
147  bool isScrollback() const;
148  bool isRescued() const;
149 
150  bool isDeliveryReport() const;
151  DeliveryDetails deliveryDetails() const;
152 
153  bool isFromChannel(const TextChannelPtr &channel) const;
154 
155 protected:
156  friend class TextChannel;
157 
158  ReceivedMessage(const MessagePartList &parts,
159  const TextChannelPtr &channel);
160  ReceivedMessage();
161 
162  uint senderHandle() const;
163  QString senderId() const;
164  uint pendingId() const;
165 
166  void setForceNonText();
167  void clearSenderHandle();
168  void setSender(const ContactPtr &sender);
169 };
170 
171 } // Tp
172 
173 #endif
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
The ReceivedMessage class is a subclass of Message, representing a received message only...
Definition: message.h:97
The TextChannel class represents a Telepathy channel of type Text.
Definition: text-channel.h:40
ChannelTextSendError
Definition: build/TelepathyQt/_gen/constants.h:2815
bool operator!=(const Message &other) const
Definition: message.h:53
The ContactMessenger class provides an easy way to send text messages to a contact and also track sen...
Definition: contact-messenger.h:40
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
DeliveryStatus
Definition: build/TelepathyQt/_gen/constants.h:3558
ChannelTextMessageType
Definition: build/TelepathyQt/_gen/constants.h:2866
bool isValid() const
Definition: message.h:109
The Message class represents a Telepathy message in a TextChannel.
Definition: message.h:44
The ReceivedMessage::DeliveryDetails class represents the details of a delivery report.
Definition: message.h:100
Definition: build/TelepathyQt/_gen/types.h:2013


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00450.html0000644000175100017520000002571012530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::PendingSuccess Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingSuccess Class Reference

The PendingSuccess class represents PendingOperation that is always successful. More...

#include <TelepathyQt/PendingSuccess>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingSuccess (const SharedPtr< RefCounted > &object)
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingSuccess class represents PendingOperation that is always successful.

Constructor & Destructor Documentation

Tp::PendingSuccess::PendingSuccess ( const SharedPtr< RefCounted > &  object)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01166.html0000644000175100017520000000531512530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::LocalPendingInfo Member List

This is the complete list of members for Tp::LocalPendingInfo, including all inherited members.

actorTp::LocalPendingInfo
messageTp::LocalPendingInfo
reasonTp::LocalPendingInfo
toBeAddedTp::LocalPendingInfo


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00734_source.html0000644000175100017520000000633612530426257022526 0ustar00kaffeinekaffeine00000000000000 media-stream-handler.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
media-stream-handler.h
1 
23 #ifndef _TelepathyQt_media_stream_handler_h_HEADER_GUARD_
24 #define _TelepathyQt_media_stream_handler_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
48 #include <TelepathyQt/_gen/cli-media-stream-handler.h>
49 
50 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00264.html0000644000175100017520000020362612530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | List of all members
Tp::Service::ConnectionAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

void Connect (const QDBusMessage &dbusMessage)
 
void Disconnect (const QDBusMessage &dbusMessage)
 
QStringList GetInterfaces (const QDBusMessage &dbusMessage)
 
QString GetProtocol (const QDBusMessage &dbusMessage)
 
uint GetSelfHandle (const QDBusMessage &dbusMessage)
 
uint GetStatus (const QDBusMessage &dbusMessage)
 
void HoldHandles (uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage)
 
QStringList InspectHandles (uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage)
 
Tp::ChannelInfoList ListChannels (const QDBusMessage &dbusMessage)
 
void ReleaseHandles (uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage)
 
QDBusObjectPath RequestChannel (const QString &type, uint handleType, uint handle, bool suppressHandler, const QDBusMessage &dbusMessage)
 
Tp::UIntList RequestHandles (uint handleType, const QStringList &identifiers, const QDBusMessage &dbusMessage)
 
void AddClientInterest (const QStringList &tokens, const QDBusMessage &dbusMessage)
 
void RemoveClientInterest (const QStringList &tokens, const QDBusMessage &dbusMessage)
 

Signals

void SelfHandleChanged (uint selfHandle)
 
void SelfContactChanged (uint selfHandle, const QString &selfID)
 
void NewChannel (const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler)
 
void ConnectionError (const QString &error, const QVariantMap &details)
 
void StatusChanged (uint status, uint reason)
 

Public Member Functions

QStringList Interfaces () const
 
uint SelfHandle () const
 
QString SelfID () const
 
uint Status () const
 
bool HasImmortalHandles () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ConnectionAdaptor::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.

The set of optional interfaces supported by this connection. Before the connection status changes to CONNECTED, this property may change at any time, but it is guaranteed that interfaces will only be added, not removed. After the connection status changes to CONNECTED, this property cannot change further.

There is no explicit change notification; reasonable behaviour for a client would be to retrieve the interfaces list once initially, and once more when it becomes CONNECTED.

In some connection managers, certain capabilities of a connection are known to be implemented for all connections (e.g. support for SimplePresence), and some interfaces (like SimplePresence) can even be used before connecting. Other capabilities may or may not exist, depending on server functionality; by the time the connection goes CONNECTED, the connection manager is expected to have evaluated the server's functionality and enabled any extra interfaces for the remainder of the Connection's lifetime.

Returns
The value of exported property Interfaces.
uint Tp::Service::ConnectionAdaptor::SelfHandle ( ) const

Return the value of the exported D-Bus object property SelfHandle of type uint.

Adaptees should export this property as a Qt property named 'selfHandle' with type uint.

The handle which represents the user on this connection, which will remain valid for the lifetime of this connection, or until a change in the user's identifier is signalled by the SelfContactChanged signal. If the connection is not yet in the CONNECTED state, the value of this property MAY be zero.

Returns
The value of exported property SelfHandle.
QString Tp::Service::ConnectionAdaptor::SelfID ( ) const

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

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

The identifier which represents the user on this connection, which will remain valid for the lifetime of this connection, or until a change in the user's identifier is signalled by the SelfContactChanged signal. If the connection is not yet in the CONNECTED state, the value of this property MAY be empty string.

Returns
The value of exported property SelfID.
uint Tp::Service::ConnectionAdaptor::Status ( ) const

Return the value of the exported D-Bus object property Status of type uint.

Adaptees should export this property as a Qt property named 'status' with type uint.

The current status of the connection. Change notification is via the StatusChanged() signal.

If retrieval of property succeeds and yields the value Disconnected, this indicates that the connection has not yet been established. If connection has been attempted and failed, the Connection object SHOULD be removed from the bus entirely, meaning that retrieval of this property SHOULD fail.

Returns
The value of exported property Status.
bool Tp::Service::ConnectionAdaptor::HasImmortalHandles ( ) const

Return the value of the exported D-Bus object property HasImmortalHandles of type bool.

Adaptees should export this property as a Qt property named 'hasImmortalHandles' with type bool.

True if handles last for the whole lifetime of the Connection. This SHOULD be the case in all connection managers, but clients MUST interoperate with older connection managers (which reference-count handles).

Returns
The value of exported property HasImmortalHandles.
void Tp::Service::ConnectionAdaptor::Connect ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void connect(const Tp::Service::ConnectionAdaptor::ConnectContextPtr &context);

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

Request that the connection be established. This will be done asynchronously and errors will be returned by emitting StatusChanged() signals.

Calling this method on a Connection that is already connecting or connected is allowed, and has no effect.

void Tp::Service::ConnectionAdaptor::Disconnect ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void disconnect(const Tp::Service::ConnectionAdaptor::DisconnectContextPtr &context);

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

Request that the connection be closed. This closes the connection if it's not already in DISCONNECTED state, and destroys the connection object.

QStringList Tp::Service::ConnectionAdaptor::GetInterfaces ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getInterfaces(const Tp::Service::ConnectionAdaptor::GetInterfacesContextPtr &context);

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

Returns the set of optional interfaces supported by this connection. See Interfaces for more details.

Returns
The value of the Interfaces property
QString Tp::Service::ConnectionAdaptor::GetProtocol ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getProtocol(const Tp::Service::ConnectionAdaptor::GetProtocolContextPtr &context);

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

Get the protocol this connection is using.

Returns
A string identifier for the protocol
uint Tp::Service::ConnectionAdaptor::GetSelfHandle ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getSelfHandle(const Tp::Service::ConnectionAdaptor::GetSelfHandleContextPtr &context);

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

Returns the value of the SelfHandle property. Change notification is via the SelfHandleChanged signal.

Returns
The value of the SelfHandle property
uint Tp::Service::ConnectionAdaptor::GetStatus ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getStatus(const Tp::Service::ConnectionAdaptor::GetStatusContextPtr &context);

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

Get the current status as defined in the StatusChanged signal.

Returns
The value of the Status property
void Tp::Service::ConnectionAdaptor::HoldHandles ( uint  handleType,
const Tp::UIntList handles,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void holdHandles(uint handleType, const Tp::UIntList& handles, const Tp::Service::ConnectionAdaptor::HoldHandlesContextPtr &context);

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

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, this method does nothing and returns successfully, unless the given handle type or any of the given handles is invalid.

In older connection managers, this method notifies the connection manger that your client is holding a copy of handles which may not be in use in any existing channel or list, and were not obtained by using the RequestHandles() method. For example, a handle observed in an emitted signal, or displayed somewhere in the UI that is not associated with a channel. The connection manager must not deallocate a handle where any clients have used this method to indicate it is in use until the ReleaseHandles() method is called, or the clients disappear from the bus.

Note that HoldHandles is idempotent - calling it multiple times is equivalent to calling it once. If a handle is "referenced" by several components which share a D-Bus unique name, the client should perform reference counting internally, and only call ReleaseHandles when none of the cooperating components need the handle any longer.

Parameters
handleType
The type of handle to be held
handles
A array of integer handles to hold
QStringList Tp::Service::ConnectionAdaptor::InspectHandles ( uint  handleType,
const Tp::UIntList handles,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void inspectHandles(uint handleType, const Tp::UIntList& handles, const Tp::Service::ConnectionAdaptor::InspectHandlesContextPtr &context);

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

Return a string representation for a number of handles of a given type.

Parameters
handleType
The type of handle to be inspected
handles
An array of integer handles of this type
Returns
An array of identifiers corresponding to the given handles, in the 
same order.
Tp::ChannelInfoList Tp::Service::ConnectionAdaptor::ListChannels ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void listChannels(const Tp::Service::ConnectionAdaptor::ListChannelsContextPtr &context);

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

List all the channels which currently exist on this connection.

Returns
An array of structs representing channels.
void Tp::Service::ConnectionAdaptor::ReleaseHandles ( uint  handleType,
const Tp::UIntList handles,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void releaseHandles(uint handleType, const Tp::UIntList& handles, const Tp::Service::ConnectionAdaptor::ReleaseHandlesContextPtr &context);

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

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, this method does nothing and returns successfully, unless the given handle type or any of the given handles is invalid. In older connection managers, this method explicitly notifies the connection manager that your client is no longer holding any references to the given handles, and that they may be deallocated if they are not held by any other clients or referenced by any existing channels. See HoldHandles for notes.

Parameters
handleType
An integer handle type (as defined in RequestHandle)
handles
An array of integer handles being held by the client
QDBusObjectPath Tp::Service::ConnectionAdaptor::RequestChannel ( const QString &  type,
uint  handleType,
uint  handle,
bool  suppressHandler,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestChannel(const QString& type, uint handleType, uint handle, bool suppressHandler, const Tp::Service::ConnectionAdaptor::RequestChannelContextPtr &context);

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

Request a channel satisfying the specified type and communicating with the contact, room, list etc. indicated by the given handle_type and handle. The handle_type and handle may both be zero to request the creation of a new, empty channel, which may or may not be possible, depending on the protocol and channel type.

On success, the returned channel will always be of the requested type (i.e. implement the requested channel-type interface).

If a new, empty channel is requested, on success the returned channel will always be an "anonymous" channel for which the type and handle are both zero.

If a channel to a contact, room etc. is requested, on success, the returned channel may either be a new or existing channel to the requested entity (i.e. its ChannelInterface::TargetHandleType and ChannelInterface::TargetHandle properties are the requested handle type and handle), or a newly created "anonymous" channel associated with the requested handle in some implementation-specific way.

For example, for a contact handle, the returned channel might be "anonymous", but implement the groups interface and have the requested contact already present among the members.

If the request cannot be satisfied, an error is raised and no channel is created.

Parameters
type
A D-Bus interface name representing base channel type
handleType
An integer representing the handle type, or Handle_Type_None if no 
handle is specified
handle
A nonzero integer handle representing a contact, room, list etc. 
according to handle_type, or zero if the handle_type is 
Handle_Type_None
suppressHandler
Clients SHOULD always set this to true. The historical meaning was 
that clients that did not intend to take responsibility for 
displaying the channel to the user could set this to FALSE, in 
which case the channel dispatcher would launch an appropriate 
channel handler. However, clients whose functionality relies on 
having a working channel dispatcher should obtain that 
functionality by calling methods on the channel dispatcher, so that 
they will get an appropriate error if the channel dispatcher is 
missing or not working. The channel dispatcher itself should set 
this to true too, so that it will ignore the NewChannel signal that 
results from the creation of the channel. It can then dispatch the 
channel returned from this method to an appropriate handler. So, 
there is no sensible use-case for setting this to false, and 
setting it to false can result in unhandled channels (in the case 
where clients assume that a channel dispatcher is present, but it 
isn&apos;t).
Returns
The D-Bus object path for the channel created or retrieved
Tp::UIntList Tp::Service::ConnectionAdaptor::RequestHandles ( uint  handleType,
const QStringList &  identifiers,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestHandles(uint handleType, const QStringList& identifiers, const Tp::Service::ConnectionAdaptor::RequestHandlesContextPtr &context);

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

Request several handles from the connection manager which represent a number of contacts, rooms or server-stored lists on the service.

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, the handles remain valid until the connection disconnects.

The implementation of this method in older connection managers must record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ReleaseHandles() method. Where the identifier refers to an entity that already has a handle in this connection manager, this handle should be returned instead. The handle number 0 must not be returned by the connection manager.

Parameters
handleType
The type of handle required
identifiers
An array of identifiers of entities to request handles for
Returns
An array of integer handle numbers in the same order as the given 
identifiers.
void Tp::Service::ConnectionAdaptor::AddClientInterest ( const QStringList &  tokens,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void addClientInterest(const QStringList& tokens, const Tp::Service::ConnectionAdaptor::AddClientInterestContextPtr &context);

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

Register a client's interest in notifications related to one or more interfaces.

Groups of notifications are identified by a token which is either a D-Bus interface name, or a string that starts with a D-Bus interface name. The meaning of each token is given by that D-Bus interface, which MUST define it in its documentation.

Initially, all interests are in entire interface, but allowing other strings allows subscription to part of an interface; for instance, an interest in ...MailNotification/count could track the number of messages without caring about their detailed content.

For each token with which this method interacts, the Connection tracks an "interest count" (like a reference count) for each unique bus name that has called this method. When a client calls this method, for each token, the interest count for its unique bus name is incremented; when RemoveClientInterest() is called, all interest counts for that unique bus name are decremented. If the unique bus name leaves the bus (for instance, if the client crashes or exits), all interest counts for that unique bus name are set to zero.

The Connection can then use these reference counts to avoid subscribing to protocol-level notifications unless at least one client has a non-zero interest count for the relevant token.

This method exists to reduce memory and network overhead when there is no active subscription.

One situation where this is useful is ConnectionInterfaceLocationInterface : on XMPP, location updates are received over PEP. If the Connection advertises the geoloc+notify capability, it will be sent location updates for all contacts. To avoid consuming resources for this, the connection should avoid advertising that capability until a client has expressed an interest in contacts' locations.

Another example of a protocol that benefits from this method is the Google XMPP Mail Notification extension, which can be used to implement ConnectionInterfaceMailNotificationInterface . In this protocol, the CM receives a notification that something has changed, but to get more information, the CM must request this information. Knowing that nobody is currently interested in this information, the CM can avoid generating useless network traffic. Similarly, the CM may free the list of unread messages to reduce memory overhead.

If this method is called for an interface that might require protocol-level subscription, but the connection cannot set up that subscription yet (for instance because the Status is not Connected yet), the Connection MUST remember the client's interest, and attempt to subscribe to the appropriate protocol feature when this becomes possible.

Clients MAY ignore any errors raised by this method; it is intended to be called with the reply ignored.

The only reason it could fail is if it's unimplemented, in which case the only thing the client can usefully do is to proceed as if it had succeeded.

Parameters
tokens

Interfaces or parts of interfaces in which to register an interest, represented by either a DBus_Interface, or a string prefixed with a DBus_Interface.

If the Connection does not support one of these tokens, this is not considered to be an error; the unsupported token is simply ignored.

void Tp::Service::ConnectionAdaptor::RemoveClientInterest ( const QStringList &  tokens,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeClientInterest(const QStringList& tokens, const Tp::Service::ConnectionAdaptor::RemoveClientInterestContextPtr &context);

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

Release an interest registered using AddClientInterest() . See that method's documentation for details.

Clients MAY ignore any errors raised by this method; it is intended to be called with the reply ignored.

The only reasons it could fail are if it's unimplemented, or if the client's reference-counting is wrong and it has tried to remove a client interest that it did not add. In both cases, there's nothing the client could do about it.

Parameters
tokens

Interfaces or parts of interfaces that were previously passed to \\\ AddClientInterest() \\htmlonly .

void Tp::Service::ConnectionAdaptor::SelfHandleChanged ( uint  selfHandle)
signal

Represents the exported D-Bus signal SelfHandleChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void selfHandleChanged(uint selfHandle);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
selfHandle
The new value of the SelfHandle property.
void Tp::Service::ConnectionAdaptor::SelfContactChanged ( uint  selfHandle,
const QString &  selfID 
)
signal

Represents the exported D-Bus signal SelfContactChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void selfContactChanged(uint selfHandle, const QString& selfID);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
selfHandle
The new value of the SelfHandle property.
selfID
The new value of the SelfID property.
void Tp::Service::ConnectionAdaptor::NewChannel ( const QDBusObjectPath &  objectPath,
const QString &  channelType,
uint  handleType,
uint  handle,
bool  suppressHandler 
)
signal

Represents the exported D-Bus signal NewChannel on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newChannel(const QDBusObjectPath& objectPath, const QString& channelType, uint handleType, uint handle, bool suppressHandler);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
objectPath
A D-Bus object path for the channel object on this service
channelType
A D-Bus interface name representing the channel type
handleType
An integer representing the type of handle this channel 
communicates with, or Handle_Type_None if no handle is specified
handle
A handle indicating the specific contact, room or list this channel 
communicates with, or zero if no handle is specified
suppressHandler

If true, the channel was requested by a client that intends to present it to the user itself (i.e. it passed suppress_handler=TRUE to the \\\ RequestChannel() \\htmlonly method), so no other handler should be launched. Clients MAY assume that channels where this is true were created by a user request.

If false, either the channel was created due to incoming information from the service, or the channel was requested by a local client that does not intend to handle the channel itself (this usage is deprecated).

Clients MUST NOT assume that only incoming channels will have this flag set to false.

void Tp::Service::ConnectionAdaptor::ConnectionError ( const QString &  error,
const QVariantMap &  details 
)
signal

Represents the exported D-Bus signal ConnectionError on this object.

Adaptees should export this signal as a Qt signal with the following signature: void connectionError(const QString& error, const QVariantMap& details);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
error
The name of a D-Bus error describing the error that occurred, which 
may correspond to a Connection_Status_Reason, or may be a more 
specific Telepathy error (such as 
org.freedesktop.Telepathy.Error.ConnectionRefused for 
Connection_Status_Reason_Network_Error) or a protocol-specific or 
connection-manager-specific error in a suitable namespace. For 
instance, a SIP connection manager could signal &quot;402 Payment 
Required&quot; as an error in a connection-manager-specific 
namespace, or a link-local XMPP implementation that used Avahi 
could provide the error given to it by the avahi-daemon.
details

Additional information about the error, which may include the following well-known keys:

debug-message (s)
Debugging information on the change, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances
server-message (s)
A human-readable message from the server explaining what happened. This may be in the user's native language, or in the server operator's native language, or even in Lojban.
user-requested (b), expected-hostname (s), certificate-hostname (s)
The same details defined in TLS_Certificate_Rejection.
void Tp::Service::ConnectionAdaptor::StatusChanged ( uint  status,
uint  reason 
)
signal

Represents the exported D-Bus signal StatusChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void statusChanged(uint status, uint reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
status
An integer indicating the new status, as defined by ConnectionStatus
reason
An integer indicating the reason for the status change, as defined 
by ConnectionStatusReason


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01225.html0000644000175100017520000000536612530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleStatusSpecMap Member List

This is the complete list of members for Tp::SimpleStatusSpecMap, including all inherited members.

operator=(const QMap< QString, SimpleStatusSpec > &a)Tp::SimpleStatusSpecMapinline
SimpleStatusSpecMap()Tp::SimpleStatusSpecMapinline
SimpleStatusSpecMap(const QMap< QString, SimpleStatusSpec > &a)Tp::SimpleStatusSpecMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00730_source.html0000644000175100017520000002343712530426257022523 0ustar00kaffeinekaffeine00000000000000 manager-file.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
manager-file.h
1 
23 #ifndef _TelepathyQt_manager_file_h_HEADER_GUARD_
24 #define _TelepathyQt_manager_file_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/AvatarSpec>
27 #include <TelepathyQt/PresenceSpec>
28 #include <TelepathyQt/Types>
29 
30 #include <QMetaType>
31 #include <QVariant>
32 
33 #ifndef DOXYGEN_SHOULD_SKIP_THIS
34 
35 namespace Tp
36 {
37 
38 class TP_QT_NO_EXPORT ManagerFile
39 {
40 public:
41  ManagerFile();
42  ManagerFile(const ManagerFile &other);
43  ManagerFile(const QString &cmName);
44  ~ManagerFile();
45 
46  ManagerFile &operator=(const ManagerFile &other);
47 
48  QString cmName() const;
49 
50  bool isValid() const;
51  QStringList protocols() const;
52  ParamSpecList parameters(const QString &protocol) const;
53  QString vcardField(const QString &protocol) const;
54  QString englishName(const QString &protocol) const;
55  QString iconName(const QString &protocol) const;
56  RequestableChannelClassList requestableChannelClasses(
57  const QString &protocol) const;
58  PresenceSpecList allowedPresenceStatuses(const QString &protocol) const;
59  AvatarSpec avatarRequirements(const QString &protocol) const;
60  QStringList addressableVCardFields(const QString &protocol) const;
61  QStringList addressableUriSchemes(const QString &protocol) const;
62 
63 private:
64  struct Private;
65  friend struct Private;
66  Private *mPriv;
67 };
68 
69 }
70 
71 Q_DECLARE_METATYPE(Tp::ManagerFile);
72 
73 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
74 
75 #endif
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
QList< ParamSpec > ParamSpecList
Definition: build/TelepathyQt/_gen/types.h:2222


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00323.html0000644000175100017520000001342512530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::ContactLocations Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactLocations Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QVariantMap >.

Public Member Functions

 ContactLocations ()
 
 ContactLocations (const QMap< uint, QVariantMap > &a)
 
ContactLocationsoperator= (const QMap< uint, QVariantMap > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QVariantMap>, but needed to have a discrete type in the Qt type system.

A map from contacts to their locations.

Constructor & Destructor Documentation

Tp::ContactLocations::ContactLocations ( )
inline
Tp::ContactLocations::ContactLocations ( const QMap< uint, QVariantMap > &  a)
inline

Member Function Documentation

ContactLocations& Tp::ContactLocations::operator= ( const QMap< uint, QVariantMap > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01294.html0000644000175100017520000002516012530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ProtocolInterfaceAvatarsInterface Member List

This is the complete list of members for Tp::Client::ProtocolInterfaceAvatarsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ProtocolInterfaceAvatarsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ProtocolInterfaceAvatarsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterfaceAvatarsInterface
ProtocolInterfaceAvatarsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterfaceAvatarsInterface
ProtocolInterfaceAvatarsInterface(Tp::DBusProxy *proxy)Tp::Client::ProtocolInterfaceAvatarsInterface
ProtocolInterfaceAvatarsInterface(const Tp::Client::ConnectionManagerInterface &mainInterface)Tp::Client::ProtocolInterfaceAvatarsInterfaceexplicit
ProtocolInterfaceAvatarsInterface(const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)Tp::Client::ProtocolInterfaceAvatarsInterface
requestAllProperties() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyMaximumAvatarBytes() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyMaximumAvatarHeight() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyMaximumAvatarWidth() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyMinimumAvatarHeight() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyMinimumAvatarWidth() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyRecommendedAvatarHeight() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertyRecommendedAvatarWidth() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
requestPropertySupportedAvatarMIMETypes() const Tp::Client::ProtocolInterfaceAvatarsInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ProtocolInterfaceAvatarsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00078.html0000644000175100017520000007017312530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Client::AccountInterfaceAvatarInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::AccountInterfaceAvatarInterface Class Reference

#include <TelepathyQt/AccountManager>

Inherits Tp::AbstractInterface.

Signals

void AvatarChanged ()
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 AccountInterfaceAvatarInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterfaceAvatarInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterfaceAvatarInterface (Tp::DBusProxy *proxy)
 
 AccountInterfaceAvatarInterface (const Tp::Client::AccountInterface &mainInterface)
 
 AccountInterfaceAvatarInterface (const Tp::Client::AccountInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAvatar () const
 
Tp::PendingOperationsetPropertyAvatar (Tp::Avatar newValue)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Account.Interface.Avatar".

Constructor & Destructor Documentation

Tp::Client::AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterfaceAvatarInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterfaceAvatarInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface ( Tp::DBusProxy proxy)

Creates a AccountInterfaceAvatarInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface ( const Tp::Client::AccountInterface mainInterface)
explicit

Creates a AccountInterfaceAvatarInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::AccountInterfaceAvatarInterface::AccountInterfaceAvatarInterface ( const Tp::Client::AccountInterface mainInterface,
QObject *  parent 
)

Creates a AccountInterfaceAvatarInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::AccountInterfaceAvatarInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Account.Interface.Avatar", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::AccountInterfaceAvatarInterface::requestPropertyAvatar ( ) const
inline

Asynchronous getter for the remote object property Avatar of type Tp::Avatar.

The avatar to set on this account for display to other contacts, represented as a structure containing the bytes of the avatar, and the MIME type as a string; may be set to an empty byte-array and an empty string to indicate no avatar. When the account becomes connected, the account manager SHOULD set this avatar using SetAvatar if appropriate.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::AccountInterfaceAvatarInterface::setPropertyAvatar ( Tp::Avatar  newValue)
inline

Asynchronous setter for the remote object property Avatar of type Tp::Avatar.

The avatar to set on this account for display to other contacts, represented as a structure containing the bytes of the avatar, and the MIME type as a string; may be set to an empty byte-array and an empty string to indicate no avatar. When the account becomes connected, the account manager SHOULD set this avatar using SetAvatar if appropriate.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariantMap* Tp::Client::AccountInterfaceAvatarInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::AccountInterfaceAvatarInterface::AvatarChanged ( )
signal

Represents the signal AvatarChanged on the remote object.

Emitted when the Avatar property changes. The avatar itself is deliberately not included in this signal, to reduce bus traffic in the (likely common) case where no running application cares about the user's own avatar.

void Tp::Client::AccountInterfaceAvatarInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00727_source.html0000644000175100017520000003121312530426257022520 0ustar00kaffeinekaffeine00000000000000 location-info.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
location-info.h
1 
23 #ifndef _TelepathyQt_location_info_h_HEADER_GUARD_
24 #define _TelepathyQt_location_info_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QDateTime>
33 #include <QSharedDataPointer>
34 #include <QString>
35 #include <QVariantMap>
36 
37 namespace Tp
38 {
39 
40 class TP_QT_EXPORT LocationInfo
41 {
42 public:
43  LocationInfo();
44  LocationInfo(const QVariantMap &location);
45  LocationInfo(const LocationInfo &other);
46  virtual ~LocationInfo();
47 
48  bool isValid() const { return mPriv.constData() != 0; }
49 
50  LocationInfo &operator=(const LocationInfo &other);
51 
52  QString countryCode() const;
53  QString country() const;
54  QString region() const;
55  QString locality() const;
56  QString area() const;
57  QString postalCode() const;
58  QString street() const;
59 
60  QString building() const;
61  QString floor() const;
62  QString room() const;
63  QString text() const;
64  QString description() const;
65  QString uri() const;
66 
67  QString language() const;
68 
69  double latitude() const;
70  double longitude() const;
71  double altitude() const;
72  double accuracy() const;
73 
74  double speed() const;
75  double bearing() const;
76 
77  QDateTime timestamp() const;
78 
79  QVariantMap allDetails() const;
80 
81 private:
82  friend class Contact;
83 
84  TP_QT_NO_EXPORT void updateData(const QVariantMap &location);
85 
86  struct Private;
87  friend struct Private;
88  QSharedDataPointer<Private> mPriv;
89 };
90 
91 } // Tp
92 
93 Q_DECLARE_METATYPE(Tp::LocationInfo);
94 
95 #endif
bool isValid() const
Definition: location-info.h:48
The LocationInfo class represents the location of a Telepathy Contact.
Definition: location-info.h:40
The Contact class represents a Telepathy contact.
Definition: contact.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01039.html0000644000175100017520000000721112530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 > Member List

This is the complete list of members for Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >, including all inherited members.

fnTp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >
FunctionType typedefTp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >
MemberFunctor5(T *object, FunctionType fn)Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
objectTp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
ResultType typedefTp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00893.html0000644000175100017520000033012012530426257021143 0ustar00kaffeinekaffeine00000000000000 Flag type constants
   Home · All Classes · All Namespaces · Modules · Functions · Files
Typedefs | Enumerations
Flag type constants

Typedefs

typedef QFlags< ConnMgrParamFlag > Tp::ConnMgrParamFlags
 
typedef QFlags
< ConnectionAliasFlag > 
Tp::ConnectionAliasFlags
 
typedef QFlags< AnonymityMode > Tp::AnonymityModeFlags
 
typedef QFlags
< ConnectionCapabilityFlag > 
Tp::ConnectionCapabilityFlags
 
typedef QFlags
< ContactBlockingCapability > 
Tp::ContactBlockingCapabilities
 
typedef QFlags< ContactInfoFlag > Tp::ContactInfoFlags
 
typedef QFlags
< ContactInfoFieldFlag > 
Tp::ContactInfoFieldFlags
 
typedef QFlags< LocationFeature > Tp::LocationFeatures
 
typedef QFlags
< MailNotificationFlag > 
Tp::MailNotificationFlags
 
typedef QFlags< CallFlag > Tp::CallFlags
 
typedef QFlags< CallMemberFlag > Tp::CallMemberFlags
 
typedef QFlags
< MediaStreamPending > 
Tp::MediaStreamPendingSend
 
typedef QFlags
< ChannelMediaCapability > 
Tp::ChannelMediaCapabilities
 
typedef QFlags
< ChannelTextMessageFlag > 
Tp::ChannelTextMessageFlags
 
typedef QFlags< CaptchaFlag > Tp::CaptchaFlags
 
typedef QFlags< ChannelCallState > Tp::ChannelCallStateFlags
 
typedef QFlags< ChannelGroupFlag > Tp::ChannelGroupFlags
 
typedef QFlags
< MessagePartSupportFlag > 
Tp::MessagePartSupportFlags
 
typedef QFlags
< MessageSendingFlag > 
Tp::MessageSendingFlags
 
typedef QFlags
< DeliveryReportingSupportFlag > 
Tp::DeliveryReportingSupportFlags
 
typedef QFlags
< ChannelPasswordFlag > 
Tp::ChannelPasswordFlags
 
typedef QFlags< PropertyFlag > Tp::PropertyFlags
 
typedef QFlags
< StorageRestrictionFlag > 
Tp::StorageRestrictionFlags
 
typedef QFlags
< RTCPXRStatisticsFlag > 
Tp::RTCPXRStatisticsFlags
 

Enumerations

enum  Tp::ConnMgrParamFlag {
  Tp::ConnMgrParamFlagRequired, Tp::ConnMgrParamFlagRegister, Tp::ConnMgrParamFlagHasDefault, Tp::ConnMgrParamFlagSecret,
  Tp::ConnMgrParamFlagDBusProperty, Tp::_ConnMgrParamFlagPadding
}
 
enum  Tp::ConnectionAliasFlag { Tp::ConnectionAliasFlagUserSet, Tp::_ConnectionAliasFlagPadding }
 
enum  Tp::AnonymityMode { Tp::AnonymityModeClientInfo, Tp::AnonymityModeShowClientInfo, Tp::AnonymityModeNetworkInfo, Tp::_AnonymityModePadding }
 
enum  Tp::ConnectionCapabilityFlag { Tp::ConnectionCapabilityFlagCreate, Tp::ConnectionCapabilityFlagInvite, Tp::_ConnectionCapabilityFlagPadding }
 
enum  Tp::ContactBlockingCapability { Tp::ContactBlockingCapabilityCanReportAbusive, Tp::_ContactBlockingCapabilityPadding }
 
enum  Tp::ContactInfoFlag { Tp::ContactInfoFlagCanSet, Tp::ContactInfoFlagPush, Tp::_ContactInfoFlagPadding }
 
enum  Tp::ContactInfoFieldFlag { Tp::ContactInfoFieldFlagParametersExact, Tp::ContactInfoFieldFlagOverwrittenByNickname, Tp::_ContactInfoFieldFlagPadding }
 
enum  Tp::LocationFeature { Tp::LocationFeatureCanSet, Tp::_LocationFeaturePadding }
 
enum  Tp::MailNotificationFlag {
  Tp::MailNotificationFlagSupportsUnreadMailCount, Tp::MailNotificationFlagSupportsUnreadMails, Tp::MailNotificationFlagEmitsMailsReceived, Tp::MailNotificationFlagSupportsRequestInboxURL,
  Tp::MailNotificationFlagSupportsRequestMailURL, Tp::MailNotificationFlagThreadBased, Tp::_MailNotificationFlagPadding
}
 
enum  Tp::CallFlag {
  Tp::CallFlagLocallyHeld, Tp::CallFlagLocallyRinging, Tp::CallFlagLocallyQueued, Tp::CallFlagForwarded,
  Tp::CallFlagClearing, Tp::_CallFlagPadding
}
 
enum  Tp::CallMemberFlag { Tp::CallMemberFlagRinging, Tp::CallMemberFlagHeld, Tp::CallMemberFlagConferenceHost, Tp::_CallMemberFlagPadding }
 
enum  Tp::MediaStreamPending { Tp::MediaStreamPendingLocalSend, Tp::MediaStreamPendingRemoteSend, Tp::_MediaStreamPendingPadding }
 
enum  Tp::ChannelMediaCapability {
  Tp::ChannelMediaCapabilityAudio, Tp::ChannelMediaCapabilityVideo, Tp::ChannelMediaCapabilityNATTraversalSTUN, Tp::ChannelMediaCapabilityNATTraversalGTalkP2P,
  Tp::ChannelMediaCapabilityNATTraversalICEUDP, Tp::ChannelMediaCapabilityImmutableStreams, Tp::_ChannelMediaCapabilityPadding
}
 
enum  Tp::ChannelTextMessageFlag {
  Tp::ChannelTextMessageFlagTruncated, Tp::ChannelTextMessageFlagNonTextContent, Tp::ChannelTextMessageFlagScrollback, Tp::ChannelTextMessageFlagRescued,
  Tp::_ChannelTextMessageFlagPadding
}
 
enum  Tp::CaptchaFlag { Tp::CaptchaFlagRequired, Tp::_CaptchaFlagPadding }
 
enum  Tp::ChannelCallState {
  Tp::ChannelCallStateRinging, Tp::ChannelCallStateQueued, Tp::ChannelCallStateHeld, Tp::ChannelCallStateForwarded,
  Tp::ChannelCallStateInProgress, Tp::ChannelCallStateConferenceHost, Tp::_ChannelCallStatePadding
}
 
enum  Tp::ChannelGroupFlag {
  Tp::ChannelGroupFlagCanAdd, Tp::ChannelGroupFlagCanRemove, Tp::ChannelGroupFlagCanRescind, Tp::ChannelGroupFlagMessageAdd,
  Tp::ChannelGroupFlagMessageRemove, Tp::ChannelGroupFlagMessageAccept, Tp::ChannelGroupFlagMessageReject, Tp::ChannelGroupFlagMessageRescind,
  Tp::ChannelGroupFlagChannelSpecificHandles, Tp::ChannelGroupFlagOnlyOneGroup, Tp::ChannelGroupFlagHandleOwnersNotAvailable, Tp::ChannelGroupFlagProperties,
  Tp::ChannelGroupFlagMembersChangedDetailed, Tp::ChannelGroupFlagMessageDepart, Tp::_ChannelGroupFlagPadding
}
 
enum  Tp::MessagePartSupportFlag { Tp::MessagePartSupportFlagOneAttachment, Tp::MessagePartSupportFlagMultipleAttachments, Tp::_MessagePartSupportFlagPadding }
 
enum  Tp::MessageSendingFlag { Tp::MessageSendingFlagReportDelivery, Tp::MessageSendingFlagReportRead, Tp::MessageSendingFlagReportDeleted, Tp::_MessageSendingFlagPadding }
 
enum  Tp::DeliveryReportingSupportFlag {
  Tp::DeliveryReportingSupportFlagReceiveFailures, Tp::DeliveryReportingSupportFlagReceiveSuccesses, Tp::DeliveryReportingSupportFlagReceiveRead, Tp::DeliveryReportingSupportFlagReceiveDeleted,
  Tp::_DeliveryReportingSupportFlagPadding
}
 
enum  Tp::ChannelPasswordFlag { Tp::ChannelPasswordFlagProvide, Tp::ChannelPasswordFlagHint, Tp::_ChannelPasswordFlagPadding }
 
enum  Tp::PropertyFlag { Tp::PropertyFlagRead, Tp::PropertyFlagWrite, Tp::_PropertyFlagPadding }
 
enum  Tp::StorageRestrictionFlag {
  Tp::StorageRestrictionFlagCannotSetParameters, Tp::StorageRestrictionFlagCannotSetEnabled, Tp::StorageRestrictionFlagCannotSetPresence, Tp::StorageRestrictionFlagCannotSetService,
  Tp::_StorageRestrictionFlagPadding
}
 
enum  Tp::RTCPXRStatisticsFlag {
  Tp::RTCPXRStatisticsFlagLoss, Tp::RTCPXRStatisticsFlagDuplicate, Tp::RTCPXRStatisticsFlagJitter, Tp::RTCPXRStatisticsFlagTTL,
  Tp::RTCPXRStatisticsFlagHL, Tp::_RTCPXRStatisticsFlagPadding
}
 

Detailed Description

Types generated from the specification representing bit flag constants and combinations of them (bitfields).

Typedef Documentation

QFlags< ConnMgrParamFlag > Tp::ConnMgrParamFlags

Type representing combinations of ConnMgrParamFlag values.

QFlags< ConnectionAliasFlag > Tp::ConnectionAliasFlags

Type representing combinations of ConnectionAliasFlag values.

QFlags< AnonymityMode > Tp::AnonymityModeFlags

Type representing combinations of AnonymityMode values.

Flags for the various types of anonymity modes. These modes are solely to inform the CM of the desired anonymous settings. It is up to the CM to determine whether the anonymity modes should be handled within the CM itself, or whether the network that a CM might be talking to should be enforcing anonymity. CMs MAY support only a subset of these modes, and specific connections MAY support none at all.

QFlags< ConnectionCapabilityFlag > Tp::ConnectionCapabilityFlags

Type representing combinations of ConnectionCapabilityFlag values.

QFlags< ContactBlockingCapability > Tp::ContactBlockingCapabilities

Type representing combinations of ContactBlockingCapability values.

QFlags< ContactInfoFlag > Tp::ContactInfoFlags

Type representing combinations of ContactInfoFlag values.

Flags defining the behaviour of contact information on this protocol. Some protocols provide no information on contacts without an explicit request; others always push information to the connection manager as and when it changes.

QFlags< ContactInfoFieldFlag > Tp::ContactInfoFieldFlags

Type representing combinations of ContactInfoFieldFlag values.

Flags describing the behaviour of a vCard field.
QFlags< LocationFeature > Tp::LocationFeatures

Type representing combinations of LocationFeature values.

Flags describing the Location features which may be supported on any given connection.
QFlags< MailNotificationFlag > Tp::MailNotificationFlags

Type representing combinations of MailNotificationFlag values.

Flags representing capabilities provided by a connection manager. Those values can be used as bitfield. Some flags depend on, or conflict with, each other. Connections SHOULD implement as many of these features as the underlying protocol allows, preferring to implement Supports_Unread_Mails instead of Emits_Mails_Received if both are possible.

QFlags< CallFlag > Tp::CallFlags

Type representing combinations of CallFlag values.

A set of flags representing additional information than is available in CallState. Many of these flags only make sense in a particular (or may explain why a call is in a specific state).

QFlags< CallMemberFlag > Tp::CallMemberFlags

Type representing combinations of CallMemberFlag values.

A set of flags representing the status of a remote contact in a call.

It is protocol- and client-specific whether a particular contact will ever have a particular flag set on them, and Telepathy clients SHOULD NOT assume that a flag will ever be set.

180 Ringing in SIP, and its equivalent in XMPP, are optional informational messages, and implementations are not required to send them. The same applies to the messages used to indicate hold state.

QFlags< MediaStreamPending > Tp::MediaStreamPendingSend

Type representing combinations of MediaStreamPending values.

QFlags< ChannelMediaCapability > Tp::ChannelMediaCapabilities

Type representing combinations of ChannelMediaCapability values.

The channel-type-specific capability flags used for Channel.Type.StreamedMedia in the Connection.Interface.Capabilities interface. See the InitialAudio property for details of the mechanisms that will replace this.

QFlags< ChannelTextMessageFlag > Tp::ChannelTextMessageFlags

Type representing combinations of ChannelTextMessageFlag values.

QFlags< CaptchaFlag > Tp::CaptchaFlags

Type representing combinations of CaptchaFlag values.

Extra flags to include with Captcha information

QFlags< ChannelCallState > Tp::ChannelCallStateFlags

Type representing combinations of ChannelCallState values.

A set of flags representing call states.

QFlags< ChannelGroupFlag > Tp::ChannelGroupFlags

Type representing combinations of ChannelGroupFlag values.

QFlags< MessagePartSupportFlag > Tp::MessagePartSupportFlags

Type representing combinations of MessagePartSupportFlag values.

Flags indicating the level of support for message parts on this channel. They are designed such that setting more flags always implies that the channel has more capabilities.

If no flags are set, this indicates that messages may contain a single message part whose content-type is any of the types from SupportedContentTypes, possibly with some alternatives.

There is no flag indicating support for alternatives. This is because the SendMessage implementation can always accept messages containing alternatives, even if the underlying protocol does not, by deleting all alternatives except the first (most preferred) that is supported.

Each of the flags so far implies the previous flag, so we could have used a simple enumeration here; however, we've defined the message-part support indicator as a flag set for future expansion.

See SupportedContentTypes for some examples.

QFlags< MessageSendingFlag > Tp::MessageSendingFlags

Type representing combinations of MessageSendingFlag values.

Flags altering the way a message is sent. The "most usual" action should always be to have these flags unset. Some indication of which flags are supported is provided by the DeliveryReportingSupport property.

QFlags< DeliveryReportingSupportFlag > Tp::DeliveryReportingSupportFlags

Type representing combinations of DeliveryReportingSupportFlag values.

Flags indicating the level of support for delivery reporting on this channel, as found on the DeliveryReportingSupport property. Any future flags added to this set will conform to the convention that the presence of an extra flag implies that more operations will succeed. Note that CMs may always provide more reports than are requested in the Message_Sending_Flags passed to SendMessage. If senders want delivery reports, they should ask for them. If they don't want delivery reports, they can just ignore them, so there's no need to have capability discovery for what will happen if a delivery report isn't requested.

QFlags< ChannelPasswordFlag > Tp::ChannelPasswordFlags

Type representing combinations of ChannelPasswordFlag values.

QFlags< PropertyFlag > Tp::PropertyFlags

Type representing combinations of PropertyFlag values.

QFlags< StorageRestrictionFlag > Tp::StorageRestrictionFlags

Type representing combinations of StorageRestrictionFlag values.

Flags indicating restrictions imposed on an Account by its storage method.

QFlags< RTCPXRStatisticsFlag > Tp::RTCPXRStatisticsFlags

Type representing combinations of RTCPXRStatisticsFlag values.

Enumeration Type Documentation

Flag type generated from the specification.

Enumerator
ConnMgrParamFlagRequired 

This parameter is required for connecting to the server.

ConnMgrParamFlagRegister 

This parameter is required for registering an account on the server.

ConnMgrParamFlagHasDefault 

This parameter has a default value, which is returned in GetParameters; not providing this parameter is equivalent to providing the default.

ConnMgrParamFlagSecret 

This parameter should be considered private or secret; for instance, clients should store it in a "password safe" like gnome-keyring or kwallet, omit it from debug logs, and use a text input widget that hides the value of the parameter.

(Clients that support older connection managers may also treat any parameter whose name contains "password" as though it had this flag.)

ConnMgrParamFlagDBusProperty 

This parameter is also a D-Bus property on the resulting ConnectionInterface ; a parameter named com.example.Duck.Macaroni with this flag corresponds to the Macaroni property on the com.example.Duck interface. Its value can be queried and possibly changed on an existing Connection using methods on the org.freedesktop.DBus.Properties interface.

When a new value for a parameter with this flag is passed to AccountInterface::UpdateParameters() , the account manager will attempt to update its value on any running connections. Similarly, if the parameter also has the Has_Default flag, and is passed in the second argument to UpdateParameters, the default value will be applied to any running connections. Thus, clients generally do not need to directly access or update the connection property; instead, they SHOULD manipulate AccountInterface::Parameters .

This allows runtime-configurable options to be stored and maintained by the AccountManagerInterface , without needing to invent a separate account preference for “properties that should be set on the connection as soon as it is createdâ€. It was originally invented to manage ConnectionInterfaceCellularInterface preferences.

_ConnMgrParamFlagPadding 

Flag type generated from the specification.

Enumerator
ConnectionAliasFlagUserSet 

The aliases of contacts on this connection may be changed by the user of the service, not just by the contacts themselves. This is the case on Jabber, for instance.

It is possible that aliases can be changed by the contacts too - which alias takes precedence is not defined by this specification, and depends on the server and/or connection manager implementation.

This flag only applies to the aliases of "globally valid" contact handles. At this time, clients should not expect to be able to change the aliases corresponding to any channel-specific handles. If this becomes possible in future, a new flag will be defined.

_ConnectionAliasFlagPadding 

Flag type generated from the specification.

Enumerator
AnonymityModeClientInfo 

Obscure any information that provides user identification, user-agent identification or personal details. Examples of this information might be GSM CallerID, SIP from address, various informational email headers, etc. The CM should scrub/replace any of this information before passing messages or data onto the network. Note that a CM which has the option of obscuring the information at the CM or privacy service level would choose both (anonymity services are opaque to clients of this interface). Clients SHOULD NOT set both Client_Info and Show_Client_Info modes. If they are set, the CM MUST respect Client_Info and ignore Show_Client_Info.

AnonymityModeShowClientInfo 

Explicitly request showing of client information. In connection context, this can be used to override service default. In channel context, this overrides connection anonymity modes. In GSM, it's possible to have CLIR enabled by default, and explicitly suppress CLIR for a single phone call. Clients SHOULD NOT set both Client_Info and Show_Client_Info modes. If they are set, the CM MUST respect Client_Info and ignore Show_Client_Info. The CM MAY set both Client_Info and Show_Client_Info in SupportedAnonymityModes to indicate its support for explicitly hiding and publicising client information.

AnonymityModeNetworkInfo 

Obscure any originating IP address information, contact URIs, and anonymize all traffic involved with sending/receiving any media streams or call content. Examples of this include the "headers" portions of RFC 3323 as well as the History-Info (described in RFC 4244) for a SIP CM. This SHOULD have the effect of hiding address information from the remote contact (ie, the contact cannot know what IP address the session is originated from). Obviously the network still needs to be able to route information between contacts, so this provides no guarantees of what can be seen by intermediaries.

_AnonymityModePadding 

Flag type generated from the specification.

Enumerator
ConnectionCapabilityFlagCreate 

The given channel type and handle can be given to RequestChannel to create a new channel of this type.

ConnectionCapabilityFlagInvite 

The given contact can be invited to an existing channel of this type.

_ConnectionCapabilityFlagPadding 

Flag type generated from the specification.

Enumerator
ContactBlockingCapabilityCanReportAbusive  When calling BlockContacts() , the contacts may be reporting as abusive to the server administrators by setting Report_Abusive to True.
_ContactBlockingCapabilityPadding 

Flag type generated from the specification.

Enumerator
ContactInfoFlagCanSet 

Indicates that SetContactInfo is supported on this connection.

ContactInfoFlagPush 

Indicates that the protocol pushes all contacts' information to the connection manager without prompting. If set, ContactInfoChanged will be emitted whenever contacts' information changes.

_ContactInfoFlagPadding 

Flag type generated from the specification.

Enumerator
ContactInfoFieldFlagParametersExact 

If present, exactly the parameters indicated must be set on this field; in the case of an empty list of parameters, this implies that parameters may not be used.

If absent, and the list of allowed parameters is non-empty, any (possibly empty) subset of that list may be used.

If absent, and the list of allowed parameters is empty, any parameters may be used.

ContactInfoFieldFlagOverwrittenByNickname 

Indicates that this field will be overwritten when the user's alias is changed with ConnectionInterfaceAliasingInterface::SetAliases() or when the Account's AccountInterface::Nickname is updated. Clients that allow the editing of the Alias and the ContactInfo in the same location should hide fields with this flag.

If a client allowed the user to edit both the nickname and the ContactInfo field at the same time, the user could set them to two different values even though they map to the same property. This would result in surprising behavior where the second value would win over the first.

In addition to hiding this field when editing ContactInfo together with the user's nickname, it is recommended that clients call SetContactInfo() before setting the user's nickname.

This ensures that if the user changes the nickname, the correct value will get set even if the stale nickname is mistakenly sent along with SetContactInfo() .

If used, this flag typically appears on either the 'nickname' or 'fn' field.

_ContactInfoFieldFlagPadding 

Flag type generated from the specification.

Enumerator
LocationFeatureCanSet 

Indicates that setting your own location with SetLocation is supported on this connection.

_LocationFeaturePadding 

Flag type generated from the specification.

Enumerator
MailNotificationFlagSupportsUnreadMailCount 

This Connection provides the number of unread e-mails (or e-mail threads) in the main folder of your e-mail account, as the UnreadMailCount property. The connection manager will update this value by emitting the UnreadMailsChanged signal.

MailNotificationFlagSupportsUnreadMails 

This Connection provides a detailed list of unread e-mails, as the UnreadMails property. If this flag is set, Supports_Unread_Mail_Count MUST be set, and Emits_Mails_Received MUST NOT be set. The Connection will update the list by emitting the UnreadMailsChanged signals.

MailNotificationFlagEmitsMailsReceived 

This Connection emits the MailsReceived signal, which provides details about newly arrived e-mails but does not maintain their read/unread status afterwards. This flag MUST NOT be combined with Supports_Unread_Mails.

MailNotificationFlagSupportsRequestInboxURL 

This Connection can provide a URL (with optional POST data) to open the the inbox of the e-mail account in a web-based client, via the RequestInboxURL method.

MailNotificationFlagSupportsRequestMailURL 

This Connection can provide a URL (with optional POST data) to open a specific mail in a web-based client, via the RequestMailURL() method. This feature is not useful unless either Emits_Mails_Received or Supports_Unread_Mails is set.

If this flag is not set, clients SHOULD fall back to using RequestInboxURL() if available.

MailNotificationFlagThreadBased 

Each Mail represents a thread of e-mails, which MAY have more than one sender.

Google Talk notifies users about new mail in terms of unread threads, rather than unread e-mails.

_MailNotificationFlagPadding 

Flag type generated from the specification.

Enumerator
CallFlagLocallyHeld 

The call has been put on hold by the local user, e.g. using the Hold interface. This flag SHOULD only be set if there is at least one Content, and all Contents are locally held. Otherwise, in transient situations where some but not all contents are on hold, UIs would falsely indicate that the call as a whole is on hold, which could lead to the user saying something they'll regret, while under the impression that the other contacts can't hear them! This flag exists as a simplified proxy for HoldStateChanged, to reduce the number of signals that need to be listened to by a simple UI.

CallFlagLocallyRinging 

This flag exists for observability of the SetRinging method (e.g. so that loggers can tell whether the call got as far as alerting the user, or whether something went wrong before then). It should be set when the SetRinging is called, and unset when the call leaves Initialised.

CallFlagLocallyQueued 

This flag exists for observability of the SetQueued method. It should be set when the SetQueued is called, and unset when the call leaves Initialising or Initialised.

CallFlagForwarded 

The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted. This flag only makes sense on outgoing calls. It SHOULD be set or unset according to informational messages from other contacts.

CallFlagClearing 

This flag only occurs when the CallState is Ended. The call with this flag set has ended, but not all resources corresponding to the call have been freed yet. Depending on the protocol there might be some audible feedback while the clearing flag is set. In calls following the ITU-T Q.931 standard there is a period of time between the call ending and the underlying channel being completely free for re-use.

_CallFlagPadding 

Flag type generated from the specification.

Enumerator
CallMemberFlagRinging 

The remote contact's client has told us that the contact has been alerted about the call but has not responded.

This is a flag per member, not a flag for the call as a whole, because in Muji conference calls, you could invite someone and have their state be "ringing" for a while.

CallMemberFlagHeld 

The call member has put this call on hold.

This is a flag per member, not a flag for the call as a whole, because in conference calls, any member could put the conference on hold.

CallMemberFlagConferenceHost  This contact has merged this call into a conference. Note that GSM provides a notification when the remote party merges a call into a conference, but not when it is split out again; thus, this flag can only indicate that the call has been part of a conference at some point. If a GSM connection manager receives a notification that a call has been merged into a conference a second time, it SHOULD represent this by clearing and immediately re-setting this flag on the remote contact.
_CallMemberFlagPadding 

Flag type generated from the specification.

Enumerator
MediaStreamPendingLocalSend 

The local user has been asked to send media by the remote user. Call RequestStreamDirection to indicate whether or not this is acceptable.

MediaStreamPendingRemoteSend 

The remote user has been asked to send media by the local user. The StreamDirectionChanged signal will be emitted when the remote user accepts or rejects this change.

_MediaStreamPendingPadding 

Flag type generated from the specification.

Enumerator
ChannelMediaCapabilityAudio 

The handle is capable of using audio streams within a media channel.

ChannelMediaCapabilityVideo 

The handle is capable of using video streams within a media channel.

ChannelMediaCapabilityNATTraversalSTUN 

The handle is capable of performing STUN to traverse NATs.

ChannelMediaCapabilityNATTraversalGTalkP2P 

The handle is capable of establishing Google Talk peer-to-peer connections (as implemented in libjingle 0.3) to traverse NATs.

ChannelMediaCapabilityNATTraversalICEUDP 

The handle is capable of establishing ICE UDP peer-to-peer connections (as defined by the IETF MMUSIC working group) to traverse NATs.

ChannelMediaCapabilityImmutableStreams 

Channels whose target handle is this contact will have ImmutableStreams = True.

_ChannelMediaCapabilityPadding 

Flag type generated from the specification.

Enumerator
ChannelTextMessageFlagTruncated 

The incoming message was truncated to a shorter length by the server or the connection manager.

ChannelTextMessageFlagNonTextContent 

The incoming message contained non-text content which cannot be represented by this interface, but has been signalled in the ChannelInterfaceMessagesInterface interface.

Connection managers SHOULD only set this flag if the non-text content appears to be relatively significant (exactly how significant is up to the implementor). The intention is that if this flag is set, clients using this interface SHOULD inform the user that part of the message was not understood.

ChannelTextMessageFlagScrollback 

The incoming message was part of a replay of message history.

In XMPP multi-user chat, a few past messages are replayed when you join a chatroom. A sufficiently capable IRC connection manager could also set this flag on historical messages when connected to a proxy like bip or irssi-proxy. The existence of this flag allows loggers and UIs to use better heuristics when eliminating duplicates (a simple implementation made possible by this flag would be to avoid logging scrollback at all).

ChannelTextMessageFlagRescued 

The incoming message has been seen in a previous channel during the lifetime of the ConnectionInterface , but had not been acknowledged when that channel closed, causing an identical channel (the channel in which the message now appears) to open.

This means that a logger (which should already have seen the message in the previous channel) is able to recognise and ignore these replayed messages.

_ChannelTextMessageFlagPadding 

Flag type generated from the specification.

Enumerator
CaptchaFlagRequired 

This captcha mechanism is required to be successfully answered in order to pass this captcha challenge.

_CaptchaFlagPadding 

Flag type generated from the specification.

Enumerator
ChannelCallStateRinging 

The contact has been alerted about the call but has not responded (e.g. 180 Ringing in SIP).

ChannelCallStateQueued 

The contact is temporarily unavailable, and the call has been placed in a queue (e.g. 182 Queued in SIP, or call-waiting in telephony).

ChannelCallStateHeld 

The contact has placed the call on hold, and will not receive media from the local user or any other participants until they unhold the call again.

ChannelCallStateForwarded 

The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted.

ChannelCallStateInProgress 

Progress has been made in placing the outgoing call, but the destination contact may not have been made aware of the call yet (so the Ringing state is not appropriate). This corresponds to SIP's status code 183 Session Progress, and could be used when the outgoing call has reached a gateway, for instance.

ChannelCallStateConferenceHost  This contact has merged this call into a conference. Note that GSM provides a notification when the remote party merges a call into a conference, but not when it is split out again; thus, this flag can only indicate that the call has been part of a conference at some point. If a GSM connection manager receives a notification that a call has been merged into a conference a second time, it SHOULD represent this by clearing and immediately re-setting this flag on the remote contact.
_ChannelCallStatePadding 

Flag type generated from the specification.

Enumerator
ChannelGroupFlagCanAdd 

The AddMembers method can be used to add or invite members who are not already in the local pending list (which is always valid).

ChannelGroupFlagCanRemove 

The RemoveMembers method can be used to remove channel members (removing those on the pending local list is always valid).

ChannelGroupFlagCanRescind 

The RemoveMembers method can be used on people on the remote pending list.

ChannelGroupFlagMessageAdd 

A message may be sent to the server when calling AddMembers on contacts who are not currently pending members.

ChannelGroupFlagMessageRemove 

A message may be sent to the server when calling RemoveMembers on contacts who are currently channel members.

ChannelGroupFlagMessageAccept 

A message may be sent to the server when calling AddMembers on contacts who are locally pending.

ChannelGroupFlagMessageReject 

A message may be sent to the server when calling RemoveMembers on contacts who are locally pending.

ChannelGroupFlagMessageRescind 

A message may be sent to the server when calling RemoveMembers on contacts who are remote pending.

ChannelGroupFlagChannelSpecificHandles 

The members of this group have handles which are specific to this channel, and are not valid as general-purpose handles on the connection. Depending on the channel, it may be possible to check the HandleOwners property or call GetHandleOwners() to find the owners of these handles, which should be done if you wish to (e.g.) subscribe to the contact's presence.

Connection managers must ensure that any given handle is not simultaneously a general-purpose handle and a channel-specific handle.

ChannelGroupFlagOnlyOneGroup 

Placing a contact in multiple groups of this type is not allowed and will raise NotAvailable (on services where contacts may only be in one user-defined group, user-defined groups will have this flag).

ChannelGroupFlagHandleOwnersNotAvailable 

In rooms with channel specific handles (ie Channel_Specific_Handles flag is set), this flag indicates that no handle owners are available, apart from the owner of the SelfHandle. This used to be an important optimization to avoid repeated GetHandleOwners calls, before we introduced the HandleOwners property and HandleOwnersChanged signal.

ChannelGroupFlagProperties 

This flag indicates that all the properties introduced in specification 0.17.6 are fully supported.

ChannelGroupFlagMembersChangedDetailed 

Indicates that MembersChangedDetailed will be emitted for changes to this group's members in addition to MembersChanged. Clients can then connect to the former and ignore emission of the latter. This flag's state MUST NOT change over the lifetime of a channel. If it were allowed to change, client bindings would have to always connect to MembersChanged just in case the flag ever went away (and generally be unnecessarily complicated), which would mostly negate the point of having this flag in the first place.

ChannelGroupFlagMessageDepart 

A message may be sent to the server when calling RemoveMembers on the SelfHandle. This would be set for XMPP Multi-User Chat or IRC channels, but not for a typical implementation of streamed media calls.

_ChannelGroupFlagPadding 

Flag type generated from the specification.

Enumerator
MessagePartSupportFlagOneAttachment 

SendMessage will accept messages containing a textual message body, plus a single attachment of any type listed in the SupportedContentTypes property. It does not make sense for this flag to be set if Message_Part_Support_Flag_Data_Only is not also set (because the connection manager can trivially provide an empty text part if necessary).

MessagePartSupportFlagMultipleAttachments 

SendMessage will accept messages containing a textual message body, plus an arbitrary number of attachments of any type listed in the SupportedContentTypes property. It does not make sense for this flag to be set if Message_Part_Support_Flag_One_Attachment is not also set.

_MessagePartSupportFlagPadding 

Flag type generated from the specification.

Enumerator
MessageSendingFlagReportDelivery 

Provide a successful delivery report if possible, even if this is not the default for this protocol. Ignored if delivery reports are not possible on this protocol.

In some protocols, like XMPP, it is not conventional to request or send positive delivery notifications.

Delivery failure reports SHOULD always be sent, but if this flag is present, the connection manager MAY also try harder to obtain failed delivery reports or allow them to be matched to outgoing messages.

MessageSendingFlagReportRead 

Provide a delivery report when the message is read by the recipient, even if this is not the default for this protocol. Ignored if read reports are not possible on this protocol.

MessageSendingFlagReportDeleted 

Provide a delivery report when the message is deleted by the recipient, even if this is not the default for this protocol. Ignored if such reports are not possible on this protocol.

_MessageSendingFlagPadding 

Flag type generated from the specification.

Enumerator
DeliveryReportingSupportFlagReceiveFailures 

Clients MAY expect to receive negative delivery reports if Message_Sending_Flag_Report_Delivery is specified when sending.

DeliveryReportingSupportFlagReceiveSuccesses 

Clients MAY expect to receive positive delivery reports if Message_Sending_Flag_Report_Delivery is specified when sending.

DeliveryReportingSupportFlagReceiveRead 

Clients MAY expect to receive Delivery_Status Read reports if Message_Sending_Flag_Report_Read is specified when sending.

DeliveryReportingSupportFlagReceiveDeleted 

Clients MAY expect to receive Delivery_Status Deleted reports if Message_Sending_Flag_Report_Deleted is specified when sending.

_DeliveryReportingSupportFlagPadding 

Flag type generated from the specification.

Enumerator
ChannelPasswordFlagProvide 

The ProvidePassword method must be called now for the user to join the channel

ChannelPasswordFlagHint 

The RoomConfig1.PasswordHint contains a hint for the password.

_ChannelPasswordFlagPadding 

Flag type generated from the specification.

Enumerator
PropertyFlagRead 

The property can be read

PropertyFlagWrite 

The property can be written

_PropertyFlagPadding 

Flag type generated from the specification.

Enumerator
StorageRestrictionFlagCannotSetParameters 

The account's Parameters property can't be changed by calling UpdateParameters.

StorageRestrictionFlagCannotSetEnabled 

The account can't be enabled/disabled by setting the Enabled property.

StorageRestrictionFlagCannotSetPresence 

The account's presence can't be changed by setting the RequestedPresence and AutomaticPresence properties.

StorageRestrictionFlagCannotSetService 

The account's Service property cannot be changed.

_StorageRestrictionFlagPadding 

Flag type generated from the specification.

Enumerator
RTCPXRStatisticsFlagLoss 

Loss report flag, as defined in RFC3611 section 4.6.

RTCPXRStatisticsFlagDuplicate 

Duplicate report flag, as defined in RFC3611 section 4.6.

RTCPXRStatisticsFlagJitter 

Jitter flag, as defined in RFC3611 section 4.6.

RTCPXRStatisticsFlagTTL 

First bit of TTL or Hop Limit flag, as defined in RFC3611 section 4.6.

RTCPXRStatisticsFlagHL 

Second bit of TTL or Hop Limit flag, as defined in RFC3611 section 4.6.

_RTCPXRStatisticsFlagPadding 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00392.html0000644000175100017520000001531112530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::MediaStreamHandlerCodec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MediaStreamHandlerCodec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint codecID
 
QString name
 
uint mediaType
 
uint clockRate
 
uint numberOfChannels
 
StringStringMap parameters
 

Detailed Description

Structure type generated from the specification.

Information about a codec supported by a client or a peer's client.

Member Data Documentation

uint Tp::MediaStreamHandlerCodec::codecID

The codec's payload identifier, as per RFC 3551 (static or dynamic)

QString Tp::MediaStreamHandlerCodec::name

The codec's name

uint Tp::MediaStreamHandlerCodec::mediaType

Type of stream this codec supports

uint Tp::MediaStreamHandlerCodec::clockRate

Sampling frequency in Hertz

uint Tp::MediaStreamHandlerCodec::numberOfChannels

Number of supported channels

StringStringMap Tp::MediaStreamHandlerCodec::parameters

Codec-specific optional parameters


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01353.html0000644000175100017520000001102612530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSubjectAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceSubjectAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
Actor() const Tp::Service::ChannelInterfaceSubjectAdaptor
ActorHandle() const Tp::Service::ChannelInterfaceSubjectAdaptor
adaptee() const Tp::AbstractAdaptor
CanSet() const Tp::Service::ChannelInterfaceSubjectAdaptor
dbusConnection() const Tp::AbstractAdaptor
SetSubject(const QString &subject, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceSubjectAdaptorslot
Subject() const Tp::Service::ChannelInterfaceSubjectAdaptor
Timestamp() const Tp::Service::ChannelInterfaceSubjectAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00723_source.html0000644000175100017520000002652412530426257022525 0ustar00kaffeinekaffeine00000000000000 incoming-stream-tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
incoming-stream-tube-channel.h
1 
22 #ifndef _TelepathyQt_incoming_stream_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_incoming_stream_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/StreamTubeChannel>
30 
31 #include <QtNetwork/QHostAddress>
32 
33 class QIODevice;
34 
35 namespace Tp
36 {
37 
38 class PendingStreamTubeConnection;
39 
40 class TP_QT_EXPORT IncomingStreamTubeChannel : public StreamTubeChannel
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(IncomingStreamTubeChannel)
44 
45 public:
46  static const Feature FeatureCore;
47 
48  static IncomingStreamTubeChannelPtr create(const ConnectionPtr &connection,
49  const QString &objectPath, const QVariantMap &immutableProperties);
50 
51  virtual ~IncomingStreamTubeChannel();
52 
53  PendingStreamTubeConnection *acceptTubeAsTcpSocket();
54  PendingStreamTubeConnection *acceptTubeAsTcpSocket(const QHostAddress &allowedAddress,
55  quint16 allowedPort);
56  PendingStreamTubeConnection *acceptTubeAsUnixSocket(bool requireCredentials = false);
57 
58 protected:
59  IncomingStreamTubeChannel(const ConnectionPtr &connection,
60  const QString &objectPath,
61  const QVariantMap &immutableProperties,
62  const Feature &coreFeature = IncomingStreamTubeChannel::FeatureCore);
63 
64 private Q_SLOTS:
65  TP_QT_NO_EXPORT void onNewLocalConnection(uint connectionId);
66 
67 private:
68  struct Private;
69  friend class PendingStreamTubeConnection;
70  friend struct Private;
71  Private *mPriv;
72 };
73 
74 }
75 
76 #endif
The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube...
Definition: incoming-stream-tube-channel.h:40
The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming ...
Definition: pending-stream-tube-connection.h:43
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
static const Feature FeatureCore
Definition: incoming-stream-tube-channel.h:46
The StreamTubeChannel class represents a Telepathy channel of type StreamTube.
Definition: stream-tube-channel.h:36


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00137.html0000644000175100017520000003303412530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > Class Template Reference

Callback with 5 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5)
 
typedef R ResultType
 

Public Member Functions

 Callback5 ()
 
template<class Functor >
 Callback5 (const Functor &functor)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
class Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >

Callback with 5 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
typedef R(* Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5)
template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
typedef R Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::ResultType

Constructor & Destructor Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::Callback5 ( )
inline
template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
template<class Functor >
Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::Callback5 ( const Functor &  functor)
inline

Member Function Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
ResultType Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5 
) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00952.html0000644000175100017520000004062012530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionContactListInterface Member List

This is the complete list of members for Tp::BaseConnectionContactListInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
authorizePublication(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionContactListInterface
AuthorizePublicationCallback typedefTp::BaseConnectionContactListInterface
BaseConnectionContactListInterface()Tp::BaseConnectionContactListInterfaceprotected
canChangeContactList() const Tp::BaseConnectionContactListInterface
contactListPersists() const Tp::BaseConnectionContactListInterface
contactListState() const Tp::BaseConnectionContactListInterface
contactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)Tp::BaseConnectionContactListInterface
create()Tp::BaseConnectionContactListInterfaceinlinestatic
create()Tp::BaseConnectionContactListInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
download(DBusError *error)Tp::BaseConnectionContactListInterface
downloadAtConnection() const Tp::BaseConnectionContactListInterface
DownloadCallback typedefTp::BaseConnectionContactListInterface
getContactListAttributes(const QStringList &interfaces, bool hold, DBusError *error)Tp::BaseConnectionContactListInterface
GetContactListAttributesCallback typedefTp::BaseConnectionContactListInterface
immutableProperties() const Tp::BaseConnectionContactListInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
removeContacts(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionContactListInterface
RemoveContactsCallback typedefTp::BaseConnectionContactListInterface
requestSubscription(const Tp::UIntList &contacts, const QString &message, DBusError *error)Tp::BaseConnectionContactListInterface
RequestSubscriptionCallback typedefTp::BaseConnectionContactListInterface
requestUsesMessage() const Tp::BaseConnectionContactListInterface
setAuthorizePublicationCallback(const AuthorizePublicationCallback &cb)Tp::BaseConnectionContactListInterface
setCanChangeContactList(bool canChangeContactList)Tp::BaseConnectionContactListInterface
setContactListPersists(bool contactListPersists)Tp::BaseConnectionContactListInterface
setContactListState(uint contactListState)Tp::BaseConnectionContactListInterface
setDownloadAtConnection(bool downloadAtConnection)Tp::BaseConnectionContactListInterface
setDownloadCallback(const DownloadCallback &cb)Tp::BaseConnectionContactListInterface
setGetContactListAttributesCallback(const GetContactListAttributesCallback &cb)Tp::BaseConnectionContactListInterface
setRemoveContactsCallback(const RemoveContactsCallback &cb)Tp::BaseConnectionContactListInterface
setRequestSubscriptionCallback(const RequestSubscriptionCallback &cb)Tp::BaseConnectionContactListInterface
setRequestUsesMessage(bool requestUsesMessage)Tp::BaseConnectionContactListInterface
setUnpublishCallback(const UnpublishCallback &cb)Tp::BaseConnectionContactListInterface
setUnsubscribeCallback(const UnsubscribeCallback &cb)Tp::BaseConnectionContactListInterface
unpublish(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionContactListInterface
UnpublishCallback typedefTp::BaseConnectionContactListInterface
unsubscribe(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionContactListInterface
UnsubscribeCallback typedefTp::BaseConnectionContactListInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionContactListInterface()Tp::BaseConnectionContactListInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00451.html0000644000175100017520000001475512530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::PendingTextMessage Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::PendingTextMessage Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint identifier
 
uint unixTimestamp
 
uint sender
 
uint messageType
 
uint flags
 
QString text
 

Detailed Description

Structure type generated from the specification.

A struct (message ID, timestamp in seconds since 1970-01-01 00:00 UTC, sender's handle, message type, flags, text) representing a pending text message, as returned by ListPendingMessages. The arguments of the Received signal also match this struct's signature.

Member Data Documentation

uint Tp::PendingTextMessage::identifier
uint Tp::PendingTextMessage::unixTimestamp
uint Tp::PendingTextMessage::sender
uint Tp::PendingTextMessage::messageType
uint Tp::PendingTextMessage::flags
QString Tp::PendingTextMessage::text


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01167.html0000644000175100017520000000522612530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Location Member List

This is the complete list of members for Tp::Location, including all inherited members.

Location()Tp::Locationinline
Location(const QMap< QString, QDBusVariant > &a)Tp::Locationinline
operator=(const QMap< QString, QDBusVariant > &a)Tp::Locationinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00510.html0000644000175100017520000001244012530426260021121 0ustar00kaffeinekaffeine00000000000000 Tp::SimplePresence Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::SimplePresence Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint type
 
QString status
 
QString statusMessage
 

Detailed Description

Structure type generated from the specification.

A struct representing the presence of a contact.

Member Data Documentation

uint Tp::SimplePresence::type

The presence type, e.g. Connection_Presence_Type_Away.

QString Tp::SimplePresence::status

The string identifier of the status, e.g. "brb", as defined in the Statuses property.

QString Tp::SimplePresence::statusMessage

The user-defined status message, e.g. "Back soon!".

Clients SHOULD set the status message for the local user to the empty string, unless the user has actually provided a specific message (i.e. one that conveys more information than the Status).

User interfaces SHOULD regard an empty status message as unset, and MAY replace it with a localized string corresponding to the Status or Type.

Use case: Daf sets his status in Empathy by choosing the Welsh translation of "Available" from a menu. It is more informative for his English-speaking colleagues to see the English translation of "Available" (as localized by their own clients) than to see "Ar Gael" (which they don't understand anyway).


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00265.html0000644000175100017520000007777712530426260021160 0ustar00kaffeinekaffeine00000000000000 Tp::ConnectionCapabilities Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Protected Member Functions | List of all members
Tp::ConnectionCapabilities Class Reference

The ConnectionCapabilities class represents the capabilities of a Connection. More...

#include <TelepathyQt/ConnectionCapabilities>

Inherits Tp::CapabilitiesBase.

Public Member Functions

 ConnectionCapabilities ()
 
virtual ~ConnectionCapabilities ()
 
bool textChatrooms () const
 
bool conferenceStreamedMediaCalls () const
 
bool conferenceStreamedMediaCallsWithInvitees () const
 
bool conferenceTextChats () const
 
bool conferenceTextChatsWithInvitees () const
 
bool conferenceTextChatrooms () const
 
bool conferenceTextChatroomsWithInvitees () const
 
bool contactSearches () const
 
bool contactSearchesWithSpecificServer () const
 
bool contactSearchesWithLimit () const
 
bool dbusTubes () const
 
bool streamTubes () const
 
- Public Member Functions inherited from Tp::CapabilitiesBase
 CapabilitiesBase ()
 
 CapabilitiesBase (const CapabilitiesBase &other)
 
virtual ~CapabilitiesBase ()
 
CapabilitiesBaseoperator= (const CapabilitiesBase &other)
 
RequestableChannelClassSpecList allClassSpecs () const
 
bool isSpecificToContact () const
 
bool textChats () const
 
bool audioCalls () const
 
bool videoCalls () const
 
bool videoCallsWithAudio () const
 
bool upgradingCalls () const
 
bool streamedMediaCalls () const
 
bool streamedMediaAudioCalls () const
 
bool streamedMediaVideoCalls () const
 
bool streamedMediaVideoCallsWithAudio () const
 
bool upgradingStreamedMediaCalls () const
 
bool fileTransfers () const
 

Protected Member Functions

 ConnectionCapabilities (const RequestableChannelClassList &rccs)
 
 ConnectionCapabilities (const RequestableChannelClassSpecList &rccSpecs)
 
- Protected Member Functions inherited from Tp::CapabilitiesBase
 CapabilitiesBase (bool specificToContact)
 
 CapabilitiesBase (const RequestableChannelClassList &rccs, bool specificToContact)
 
 CapabilitiesBase (const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)
 
virtual void updateRequestableChannelClasses (const RequestableChannelClassList &rccs)
 

Detailed Description

The ConnectionCapabilities class represents the capabilities of a Connection.

Constructor & Destructor Documentation

Tp::ConnectionCapabilities::ConnectionCapabilities ( )

Construct a new ConnectionCapabilities object.

Tp::ConnectionCapabilities::~ConnectionCapabilities ( )
virtual

Class destructor.

Tp::ConnectionCapabilities::ConnectionCapabilities ( const RequestableChannelClassList rccs)
protected

Construct a new ConnectionCapabilities object using the give rccs.

Parameters
rccsRequestableChannelClassList representing the capabilities of a Connection.
Tp::ConnectionCapabilities::ConnectionCapabilities ( const RequestableChannelClassSpecList rccSpecs)
protected

Construct a new ConnectionCapabilities object using the give rccSpecs.

Parameters
rccSpecsRequestableChannelClassSpecList representing the capabilities of a Connection.

Member Function Documentation

bool Tp::ConnectionCapabilities::textChatrooms ( ) const

Return true if named text chatrooms can be joined by providing a chatroom identifier.

If the protocol is such that chatrooms can be joined, but only via a more elaborate D-Bus API than normal (because more information is needed), then this method will return false.

Returns
true if Account::ensureTextChatroom() can be expected to work.
bool Tp::ConnectionCapabilities::conferenceStreamedMediaCalls ( ) const

Return whether creating conference media calls is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::conferenceStreamedMediaCallsWithInvitees ( ) const

Return whether creating conference media calls is supported.

This method will also check whether inviting new contacts when creating a conference media call channel by providing additional members to initial invitees (as opposed to merging several channels into one new conference channel) is supported.

If providing additional members is supported, it is also possible to request conference media calls with fewer than two (even zero) already established media calls.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::conferenceTextChats ( ) const

Return whether creating conference text chats is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::conferenceTextChatsWithInvitees ( ) const

Return whether creating conference text chats is supported.

This method will also check whether inviting new contacts when creating a conference text chat channel by providing additional members to initial invitees (as opposed to merging several channels into one new conference channel) is supported.

If providing additional members is supported, it is also possible to request conference text chats with fewer than two (even zero) already established text chats.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::conferenceTextChatrooms ( ) const

Return whether creating conference text chat rooms is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::conferenceTextChatroomsWithInvitees ( ) const

Return whether creating conference text chat rooms is supported.

This method will also check whether inviting new contacts when creating a conference text chat room channel by providing additional members to initial invitees (as opposed to merging several channels into one new conference channel) is supported.

If providing additional members is supported, it is also possible to request conference text chat rooms with fewer than two (even zero) already established text chat rooms.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::contactSearches ( ) const

Return whether creating a ContactSearch channel is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::contactSearchesWithSpecificServer ( ) const

Return whether creating a ContactSearch channel specifying a server is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::contactSearchesWithLimit ( ) const

Return whether creating a ContactSearch channel specifying a limit is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::dbusTubes ( ) const

Return whether creating a DBusTube channel by providing a contact identifier is supported.

Returns
true if supported, false otherwise.
bool Tp::ConnectionCapabilities::streamTubes ( ) const

Return whether creating a StreamTube channel by providing a contact identifier is supported.

Returns
true if supported, false otherwise.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01226.html0000644000175100017520000000525712530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatusSpec Member List

This is the complete list of members for Tp::StatusSpec, including all inherited members.

exclusiveTp::StatusSpec
maySetOnSelfTp::StatusSpec
parameterTypesTp::StatusSpec
typeTp::StatusSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00712_source.html0000644000175100017520000003332712530426257022522 0ustar00kaffeinekaffeine00000000000000 generic-property-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
generic-property-filter.h
1 
23 #ifndef _TelepathyQt_generic_property_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_generic_property_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Filter>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 template <class T>
37 class GenericPropertyFilter : public Filter<T>
38 {
39 public:
40  inline virtual ~GenericPropertyFilter() { }
41 
42  inline virtual bool isValid() const { return true; }
43 
44  inline virtual bool matches(const SharedPtr<T> &t) const
45  {
46  for (QVariantMap::const_iterator i = mFilter.constBegin();
47  i != mFilter.constEnd(); ++i) {
48  QString propertyName = i.key();
49  QVariant propertyValue = i.value();
50 
51  if (t->property(propertyName.toLatin1().constData()) != propertyValue) {
52  return false;
53  }
54  }
55 
56  return true;
57  }
58 
59  inline QVariantMap filter() const { return mFilter; }
60 
61  inline void addProperty(const QString &propertyName, const QVariant &propertyValue)
62  {
63  mFilter.insert(propertyName, propertyValue);
64  }
65 
66  inline void setProperties(const QVariantMap &filter) { mFilter = filter; }
67 
68 protected:
69  inline GenericPropertyFilter() : Filter<T>() { }
70 
71 private:
72  QVariantMap mFilter;
73 };
74 
75 } // Tp
76 
77 #endif
GenericPropertyFilter()
Definition: generic-property-filter.h:69
virtual ~GenericPropertyFilter()
Definition: generic-property-filter.h:40
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
void addProperty(const QString &propertyName, const QVariant &propertyValue)
Definition: generic-property-filter.h:61
void setProperties(const QVariantMap &filter)
Definition: generic-property-filter.h:66
virtual bool matches(const SharedPtr< T > &t) const
Definition: generic-property-filter.h:44
The GenericPropertyFilter class provides a generic filter object to be used to filter objects by prop...
Definition: generic-property-filter.h:37
virtual bool isValid() const
Definition: generic-property-filter.h:42
QVariantMap filter() const
Definition: generic-property-filter.h:59


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00324.html0000644000175100017520000031202712530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::ContactManager Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | List of all members
Tp::ContactManager Class Reference

The ContactManager class is responsible for managing contacts. More...

#include <TelepathyQt/ContactManager>

Inherits Tp::Object.

Signals

void stateChanged (Tp::ContactListState state)
 
void presencePublicationRequested (const Tp::Contacts &contacts)
 
void groupAdded (const QString &group)
 
void groupRenamed (const QString &oldGroup, const QString &newGroup)
 
void groupRemoved (const QString &group)
 
void groupMembersChanged (const QString &group, const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void allKnownContactsChanged (const Tp::Contacts &contactsAdded, const Tp::Contacts &contactsRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~ContactManager ()
 
ConnectionPtr connection () const
 
Features supportedFeatures () const
 
ContactListState state () const
 
Contacts allKnownContacts () const
 
QStringList allKnownGroups () const
 
PendingOperationaddGroup (const QString &group)
 
PendingOperationremoveGroup (const QString &group)
 
Contacts groupContacts (const QString &group) const
 
PendingOperationaddContactsToGroup (const QString &group, const QList< ContactPtr > &contacts)
 
PendingOperationremoveContactsFromGroup (const QString &group, const QList< ContactPtr > &contacts)
 
bool canRequestPresenceSubscription () const
 
bool subscriptionRequestHasMessage () const
 
PendingOperationrequestPresenceSubscription (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool canRemovePresenceSubscription () const
 
bool subscriptionRemovalHasMessage () const
 
bool canRescindPresenceSubscriptionRequest () const
 
bool subscriptionRescindingHasMessage () const
 
PendingOperationremovePresenceSubscription (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool canAuthorizePresencePublication () const
 
bool publicationAuthorizationHasMessage () const
 
PendingOperationauthorizePresencePublication (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool publicationRejectionHasMessage () const
 
bool canRemovePresencePublication () const
 
bool publicationRemovalHasMessage () const
 
PendingOperationremovePresencePublication (const QList< ContactPtr > &contacts, const QString &message=QString())
 
PendingOperationremoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool canBlockContacts () const
 
bool canReportAbuse () const
 
PendingOperationblockContacts (const QList< ContactPtr > &contacts)
 
PendingOperationblockContactsAndReportAbuse (const QList< ContactPtr > &contacts)
 
PendingOperationunblockContacts (const QList< ContactPtr > &contacts)
 
PendingContactscontactsForHandles (const UIntList &handles, const Features &features=Features())
 
PendingContactscontactsForHandles (const ReferencedHandles &handles, const Features &features=Features())
 
PendingContactscontactsForHandles (const HandleIdentifierMap &handles, const Features &features=Features())
 
PendingContactscontactsForIdentifiers (const QStringList &identifiers, const Features &features=Features())
 
PendingContactscontactsForVCardAddresses (const QString &vcardField, const QStringList &vcardAddresses, const Features &features=Features())
 
PendingContactscontactsForUris (const QStringList &uris, const Features &features=Features())
 
PendingContactsupgradeContacts (const QList< ContactPtr > &contacts, const Features &features)
 
void requestContactAvatars (const QList< ContactPtr > &contacts)
 
PendingOperationrefreshContactInfo (const QList< ContactPtr > &contact)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The ContactManager class is responsible for managing contacts.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::ContactManager::~ContactManager ( )
virtual

Class destructor.

Member Function Documentation

ConnectionPtr Tp::ContactManager::connection ( ) const

Return the connection owning this ContactManager.

Returns
A pointer to the Connection object.
Features Tp::ContactManager::supportedFeatures ( ) const

Return the features that are expected to work on contacts on this ContactManager connection.

This method requires Connection::FeatureCore to be ready.

Returns
The supported features as a set of Feature objects.
ContactListState Tp::ContactManager::state ( ) const

Return the progress made in retrieving the contact list.

Change notification is via the stateChanged() signal.

This method requires Connection::FeatureRoster to be ready.

Returns
The contact list state as ContactListState.
See Also
stateChanged()
Contacts Tp::ContactManager::allKnownContacts ( ) const

Return a list of relevant contacts (a reasonable guess as to what should be displayed as "the contact list").

This may include any or all of: contacts whose presence the user receives, contacts who are allowed to see the user's presence, contacts stored in some persistent contact list on the server, contacts who the user has blocked from communicating with them, or contacts who are relevant in some other way.

User interfaces displaying a contact list will probably want to filter this list and display some suitable subset of it.

On protocols where there is no concept of presence or a centrally-stored contact list (like IRC), this method may return an empty list.

Change notification is via the allKnownContactsChanged() signal.

This method requires Connection::FeatureRoster to be ready.

Returns
A set of pointers to the Contact objects.
See Also
allKnownContactsChanged()
QStringList Tp::ContactManager::allKnownGroups ( ) const

Return a list of user-defined contact list groups' names.

Change notification is via the groupAdded(), groupRemoved() and groupRenamed() signals.

This method requires Connection::FeatureRosterGroups to be ready.

Returns
The list of user-defined contact list groups names.
See Also
groupMembersChanged(), groupAdded(), groupRemoved(), groupRenamed()
PendingOperation * Tp::ContactManager::addGroup ( const QString &  group)

Attempt to add an user-defined contact list group named group.

On some protocols (e.g. XMPP) empty groups are not represented on the server, so disconnecting from the server and reconnecting might cause empty groups to vanish.

The returned pending operation will finish successfully if the group already exists.

Change notification is via the groupAdded() signal.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to add an user-defined contact list group.
See Also
allKnownGroups(), groupAdded(), addContactsToGroup()
PendingOperation * Tp::ContactManager::removeGroup ( const QString &  group)

Attempt to remove an user-defined contact list group named group.

Change notification is via the groupRemoved() signal.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
Returns
A PendingOperation which will emit PendingOperation::finished() when an attempt has been made to remove an user-defined contact list group.
See Also
allKnownGroups(), groupRemoved(), removeContactsFromGroup()
Contacts Tp::ContactManager::groupContacts ( const QString &  group) const

Return the contacts in the given user-defined contact list group named group.

Change notification is via the groupMembersChanged() signal.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
Returns
A set of pointers to the Contact objects, or an empty set if the group does not exist.
See Also
allKnownGroups(), groupMembersChanged()
PendingOperation * Tp::ContactManager::addContactsToGroup ( const QString &  group,
const QList< ContactPtr > &  contacts 
)

Attempt to add the given contacts to the user-defined contact list group named group.

Change notification is via the groupMembersChanged() signal.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
contactsContacts to add.
Returns
A PendingOperation which will emit PendingOperation::finished() when an attempt has been made to add the contacts to the user-defined contact list group.
See Also
groupMembersChanged(), groupContacts()
PendingOperation * Tp::ContactManager::removeContactsFromGroup ( const QString &  group,
const QList< ContactPtr > &  contacts 
)

Attempt to remove the given contacts from the user-defined contact list group named group.

Change notification is via the groupMembersChanged() signal.

This method requires Connection::FeatureRosterGroups to be ready.

Parameters
groupThe group name.
contactsContacts to remove.
Returns
A PendingOperation which will PendingOperation::finished when an attempt has been made to remove the contacts from the user-defined contact list group.
See Also
groupMembersChanged(), groupContacts()
bool Tp::ContactManager::canRequestPresenceSubscription ( ) const

Return whether subscribing to additional contacts' presence is supported.

In some protocols, the list of contacts whose presence can be seen is fixed, so we can't subscribe to the presence of additional contacts.

Notably, in link-local XMPP, you can see the presence of everyone on the local network, and trying to add more subscriptions would be meaningless.

This method requires Connection::FeatureRoster to be ready.

Returns
true if Contact::requestPresenceSubscription() and requestPresenceSubscription() are likely to succeed, false otherwise.
See Also
requestPresenceSubscription(), subscriptionRequestHasMessage()
bool Tp::ContactManager::subscriptionRequestHasMessage ( ) const

Return whether a message can be sent when subscribing to contacts' presence.

If no message will actually be sent, user interfaces should avoid prompting the user for a message, and use an empty string for the message argument.

This method requires Connection::FeatureRoster to be ready.

Returns
true if the message argument to Contact::requestPresenceSubscription() and requestPresenceSubscription() is actually used, false otherwise.
See Also
canRemovePresenceSubscription(), requestPresenceSubscription()
PendingOperation * Tp::ContactManager::requestPresenceSubscription ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)

Attempt to subscribe to the presence of the given contacts.

This operation is sometimes called "adding contacts to the buddy list" or "requesting authorization".

On most protocols, the contacts will need to give permission before the user will be able to receive their presence: if so, they will be in presence state Contact::PresenceStateAsk until they authorize or deny the request.

The returned PendingOperation will return successfully when a request to subscribe to the contacts' presence has been submitted, or fail if this cannot happen. In particular, it does not wait for the contacts to give permission for the presence subscription.

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts whose presence is desired
messageA message from the user which is either transmitted to the contacts, or ignored, depending on the protocol
Returns
A PendingOperation which will PendingOperation::finished() when an attempt has been made to subscribe to the contacts' presence.
See Also
canRequestPresenceSubscription(), subscriptionRequestHasMessage()
bool Tp::ContactManager::canRemovePresenceSubscription ( ) const

Return whether the user can stop receiving the presence of a contact whose presence they have subscribed to.

This method requires Connection::FeatureRoster to be ready.

Returns
true if Contact::removePresenceSubscription() and removePresenceSubscription() are likely to succeed for contacts with subscription state Contact::PresenceStateYes, false otherwise.
See Also
removePresenceSubscription(), subscriptionRemovalHasMessage()
bool Tp::ContactManager::subscriptionRemovalHasMessage ( ) const

Return whether a message can be sent when removing an existing subscription to the presence of a contact.

If no message will actually be sent, user interfaces should avoid prompting the user for a message, and use an empty string for the message argument.

This method requires Connection::FeatureRoster to be ready.

Returns
true if the message argument to Contact::removePresenceSubscription() and removePresenceSubscription() is actually used, for contacts with subscription state Contact::PresenceStateYes, false otherwise.
See Also
canRemovePresencePublication(), removePresenceSubscription()
bool Tp::ContactManager::canRescindPresenceSubscriptionRequest ( ) const

Return whether the user can cancel a request to subscribe to a contact's presence before that contact has responded.

This method requires Connection::FeatureRoster to be ready.

Returns
true if Contact::removePresenceSubscription() and removePresenceSubscription() are likely to succeed for contacts with subscription state Contact::PresenceStateAsk, false otherwise.
See Also
removePresenceSubscription(), subscriptionRescindingHasMessage()
bool Tp::ContactManager::subscriptionRescindingHasMessage ( ) const

Return whether a message can be sent when cancelling a request to subscribe to the presence of a contact.

If no message will actually be sent, user interfaces should avoid prompting the user for a message, and use an empty string for the message argument.

This method requires Connection::FeatureRoster to be ready.

Returns
true if the message argument to Contact::removePresenceSubscription() and removePresenceSubscription() is actually used, for contacts with subscription state Contact::PresenceStateAsk, false otherwise.
See Also
canRescindPresenceSubscriptionRequest(), removePresenceSubscription()
PendingOperation * Tp::ContactManager::removePresenceSubscription ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)

Attempt to stop receiving the presence of the given contacts, or cancel a request to subscribe to their presence that was previously sent.

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts whose presence is no longer required A message from the user which is either transmitted to the contacts, or ignored, depending on the protocol
Returns
A PendingOperation which will PendingOperation::finished() when an attempt has been made to remove any subscription to the contacts' presence.
See Also
canRemovePresenceSubscription(), canRescindPresenceSubscriptionRequest(), subscriptionRemovalHasMessage(), subscriptionRescindingHasMessage()
bool Tp::ContactManager::canAuthorizePresencePublication ( ) const

Return true if the publication of the user's presence to contacts can be authorized.

This is always true, unless the protocol has no concept of authorizing publication (in which case contacts' publication status can never be Contact::PresenceStateAsk).

This method requires Connection::FeatureRoster to be ready.

Returns
true if Contact::authorizePresencePublication() and authorizePresencePublication() are likely to succeed for contacts with subscription state Contact::PresenceStateAsk, false otherwise.
See Also
publicationAuthorizationHasMessage(), authorizePresencePublication()
bool Tp::ContactManager::publicationAuthorizationHasMessage ( ) const

Return whether a message can be sent when authorizing a request from a contact that the user's presence is published to them.

If no message will actually be sent, user interfaces should avoid prompting the user for a message, and use an empty string for the message argument.

This method requires Connection::FeatureRoster to be ready.

Returns
true if the message argument to Contact::authorizePresencePublication() and authorizePresencePublication() is actually used, for contacts with subscription state Contact::PresenceStateAsk, false otherwise.
See Also
canAuthorizePresencePublication(), authorizePresencePublication()
PendingOperation * Tp::ContactManager::authorizePresencePublication ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)

If the given contacts have asked the user to publish presence to them, grant permission for this publication to take place.

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts who should be allowed to receive the user's presence A message from the user which is either transmitted to the contacts, or ignored, depending on the protocol
Returns
A PendingOperation which will emit PendingOperation::fininshed when an attempt has been made to authorize publication of the user's presence to the contacts.
See Also
canAuthorizePresencePublication(), publicationAuthorizationHasMessage()
bool Tp::ContactManager::publicationRejectionHasMessage ( ) const

Return whether a message can be sent when rejecting a request from a contact that the user's presence is published to them.

If no message will actually be sent, user interfaces should avoid prompting the user for a message, and use an empty string for the message argument.

This method requires Connection::FeatureRoster to be ready.

Returns
true if the message argument to Contact::removePresencePublication() and removePresencePublication() is actually used, for contacts with subscription state Contact::PresenceStateAsk, false otherwise.
See Also
canRemovePresencePublication(), removePresencePublication()
bool Tp::ContactManager::canRemovePresencePublication ( ) const

Return true if the publication of the user's presence to contacts can be removed, even after permission has been given.

(Rejecting requests for presence to be published is always allowed.)

This method requires Connection::FeatureRoster to be ready.

Returns
true if Contact::removePresencePublication() and removePresencePublication() are likely to succeed for contacts with subscription state Contact::PresenceStateYes, false otherwise.
See Also
publicationRemovalHasMessage(), removePresencePublication()
bool Tp::ContactManager::publicationRemovalHasMessage ( ) const

Return whether a message can be sent when revoking earlier permission that the user's presence is published to a contact.

If no message will actually be sent, user interfaces should avoid prompting the user for a message, and use an empty string for the message argument.

This method requires Connection::FeatureRoster to be ready.

Returns
true if the message argument to Contact::removePresencePublication and removePresencePublication() is actually used, for contacts with subscription state Contact::PresenceStateYes, false otherwise.
See Also
canRemovePresencePublication(), removePresencePublication()
PendingOperation * Tp::ContactManager::removePresencePublication ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)

If the given contacts have asked the user to publish presence to them, deny this request (this should always succeed, unless a network error occurs).

If the given contacts already have permission to receive the user's presence, attempt to revoke that permission (this might not be supported by the protocol - canRemovePresencePublication indicates whether it is likely to succeed).

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts who should no longer be allowed to receive the user's presence A message from the user which is either transmitted to the contacts, or ignored, depending on the protocol
Returns
A PendingOperation which will emit PendingOperation::finished() when an attempt has been made to remove any publication of the user's presence to the contacts.
See Also
canRemovePresencePublication(), publicationRejectionHasMessage(), publicationRemovalHasMessage()
PendingOperation * Tp::ContactManager::removeContacts ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)

Remove completely contacts from the server. It has the same effect than calling removePresencePublication() and removePresenceSubscription(), but also remove from 'stored' list if it exists.

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts who should be removed A message from the user which is either transmitted to the contacts, or ignored, depending on the protocol
Returns
A PendingOperation which will emit PendingOperation::finished when an attempt has been made to remove any publication of the user's presence to the contacts.
bool Tp::ContactManager::canBlockContacts ( ) const

Return whether this protocol has a list of blocked contacts.

This method requires Connection::FeatureRoster to be ready.

Returns
true if blockContacts() is likely to succeed, false otherwise.
bool Tp::ContactManager::canReportAbuse ( ) const

Return whether this protocol can report abusive contacts.

This method requires Connection::FeatureRoster to be ready.

Returns
true if reporting abuse when blocking contacts is supported, false otherwise.
PendingOperation * Tp::ContactManager::blockContacts ( const QList< ContactPtr > &  contacts)

Block the given contacts. Blocked contacts cannot send messages to the user; depending on the protocol, blocking a contact may have other effects.

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts that should be blocked.
Returns
A PendingOperation which will emit PendingOperation::finished() when an attempt has been made to take the requested action.
See Also
canBlockContacts(), unblockContacts(), blockContactsAndReportAbuse()
PendingOperation * Tp::ContactManager::blockContactsAndReportAbuse ( const QList< ContactPtr > &  contacts)

Block the given contacts and additionally report abusive behaviour to the server.

If reporting abusive behaviour is not supported by the protocol, this method has the same effect as blockContacts().

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts who should be added to the list of blocked contacts.
Returns
A PendingOperation which will emit PendingOperation::finished() when an attempt has been made to take the requested action.
See Also
canBlockContacts(), canReportAbuse(), blockContacts()
PendingOperation * Tp::ContactManager::unblockContacts ( const QList< ContactPtr > &  contacts)

Unblock the given contacts.

This method requires Connection::FeatureRoster to be ready.

Parameters
contactsContacts that should be unblocked.
Returns
A PendingOperation which will emit PendingOperation::finished() when an attempt has been made to take the requested action.
See Also
canBlockContacts(), blockContacts(), blockContactsAndReportAbuse()
PendingContacts * Tp::ContactManager::contactsForHandles ( const UIntList handles,
const Features features = Features() 
)
PendingContacts * Tp::ContactManager::contactsForHandles ( const ReferencedHandles handles,
const Features features = Features() 
)
PendingContacts * Tp::ContactManager::contactsForHandles ( const HandleIdentifierMap handles,
const Features features = Features() 
)
PendingContacts * Tp::ContactManager::contactsForIdentifiers ( const QStringList &  identifiers,
const Features features = Features() 
)
PendingContacts * Tp::ContactManager::contactsForVCardAddresses ( const QString &  vcardField,
const QStringList &  vcardAddresses,
const Features features = Features() 
)

Request contacts and enable their features using a given field in their vcards.

This method requires Connection::FeatureCore to be ready.

Parameters
vcardFieldThe vcard field of the addresses we are requesting. Supported fields can be found in ProtocolInfo::addressableVCardFields().
vcardAddressesThe addresses to get contacts for. The address types must match the given vcard field.
featuresThe Contact features to enable.
Returns
A PendingContacts, which will emit PendingContacts::finished when the contacts are retrieved or an error occurred.
See Also
contactsForHandles(), contactsForIdentifiers(), contactsForUris(), ProtocolInfo::normalizeVCardAddress()
PendingContacts * Tp::ContactManager::contactsForUris ( const QStringList &  uris,
const Features features = Features() 
)

Request contacts and enable their features using the given URI addresses.

This method requires Connection::FeatureCore to be ready.

Parameters
urisThe URI addresses to get contacts for. Supported schemes can be found in ProtocolInfo::addressableUriSchemes().
featuresThe Contact features to enable.
Returns
A PendingContacts, which will emit PendingContacts::finished when the contacts are retrieved or an error occurred.
See Also
contactsForHandles(), contactsForIdentifiers(), contactsForVCardAddresses(), ProtocolInfo::normalizeContactUri()
PendingContacts * Tp::ContactManager::upgradeContacts ( const QList< ContactPtr > &  contacts,
const Features features 
)
void Tp::ContactManager::requestContactAvatars ( const QList< ContactPtr > &  contacts)

Start a request to retrieve the avatar for the given contacts.

Force the request of the avatar data. This method returns directly, emitting Contact::avatarTokenChanged() and Contact::avatarDataChanged() signals once the token and data are fetched from the server.

This is only useful if the avatar token is unknown; see Contact::isAvatarTokenKnown(). It happens in the case of offline XMPP contacts, because the server does not send the token for them and an explicit request of the avatar data is needed.

This method requires Contact::FeatureAvatarData to be ready.

See Also
Contact::avatarData(), Contact::avatarDataChanged(), Contact::avatarToken(), Contact::avatarTokenChanged()
PendingOperation * Tp::ContactManager::refreshContactInfo ( const QList< ContactPtr > &  contacts)

Refresh information for the given contact.

Once the information is retrieved infoFieldsChanged() will be emitted.

This method requires Contact::FeatureInfo to be ready.

Returns
A PendingOperation, which will emit PendingOperation::finished when the call has finished.
See Also
infoFieldsChanged()
void Tp::ContactManager::stateChanged ( Tp::ContactListState  state)
signal
void Tp::ContactManager::presencePublicationRequested ( const Tp::Contacts &  contacts)
signal

Emitted whenever some contacts request for presence publication.

Parameters
contactsA set of contacts which requested presence publication.
void Tp::ContactManager::groupAdded ( const QString &  group)
signal

Emitted when a new contact list group is created.

Parameters
groupThe group name.
See Also
allKnownGroups()
void Tp::ContactManager::groupRenamed ( const QString &  oldGroup,
const QString &  newGroup 
)
signal

Emitted when a new contact list group is renamed.

Parameters
oldGroupThe old group name.
newGroupThe new group name.
See Also
allKnownGroups()
void Tp::ContactManager::groupRemoved ( const QString &  group)
signal

Emitted when a contact list group is removed.

Parameters
groupThe group name.
See Also
allKnownGroups()
void Tp::ContactManager::groupMembersChanged ( const QString &  group,
const Tp::Contacts &  groupMembersAdded,
const Tp::Contacts &  groupMembersRemoved,
const Tp::Channel::GroupMemberChangeDetails details 
)
signal

Emitted whenever some contacts got removed or added from a group.

Parameters
groupThe name of the group that changed.
groupMembersAddedA set of contacts which were added to the group group.
groupMembersRemovedA set of contacts which were removed from the group group.
detailsThe change details.
See Also
groupContacts()
void Tp::ContactManager::allKnownContactsChanged ( const Tp::Contacts &  contactsAdded,
const Tp::Contacts &  contactsRemoved,
const Tp::Channel::GroupMemberChangeDetails details 
)
signal

Emitted whenever some contacts got removed or added from ContactManager's known contact list. It is useful for monitoring which contacts are currently known by ContactManager.

Note that, in some protocols, this signal could stream newly added contacts with both presence subscription and publication state set to No. Be sure to watch over publication and/or subscription state changes if that is the case.

Parameters
contactsAddedA set of contacts which were added to the known contact list.
contactsRemovedA set of contacts which were removed from the known contact list.
detailsThe change details.
See Also
allKnownContacts()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x7e.html0000644000175100017520000006027712530426260024214 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- ~ -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01295.html0000644000175100017520000002070512530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ProtocolInterfacePresenceInterface Member List

This is the complete list of members for Tp::Client::ProtocolInterfacePresenceInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ProtocolInterfacePresenceInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ProtocolInterfacePresenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterfacePresenceInterface
ProtocolInterfacePresenceInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ProtocolInterfacePresenceInterface
ProtocolInterfacePresenceInterface(Tp::DBusProxy *proxy)Tp::Client::ProtocolInterfacePresenceInterface
ProtocolInterfacePresenceInterface(const Tp::Client::ConnectionManagerInterface &mainInterface)Tp::Client::ProtocolInterfacePresenceInterfaceexplicit
ProtocolInterfacePresenceInterface(const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)Tp::Client::ProtocolInterfacePresenceInterface
requestAllProperties() const Tp::Client::ProtocolInterfacePresenceInterfaceinline
requestPropertyStatuses() const Tp::Client::ProtocolInterfacePresenceInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ProtocolInterfacePresenceInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00079.html0000644000175100017520000007463312530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::Client::AccountInterfaceStorageInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::AccountInterfaceStorageInterface Class Reference

#include <TelepathyQt/AccountManager>

Inherits Tp::AbstractInterface.

Public Member Functions

 AccountInterfaceStorageInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterfaceStorageInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountInterfaceStorageInterface (Tp::DBusProxy *proxy)
 
 AccountInterfaceStorageInterface (const Tp::Client::AccountInterface &mainInterface)
 
 AccountInterfaceStorageInterface (const Tp::Client::AccountInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyStorageProvider () const
 
Tp::PendingVariantrequestPropertyStorageIdentifier () const
 
Tp::PendingVariantrequestPropertyStorageSpecificInformation () const
 
Tp::PendingVariantrequestPropertyStorageRestrictions () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Account.Interface.Storage".

Constructor & Destructor Documentation

Tp::Client::AccountInterfaceStorageInterface::AccountInterfaceStorageInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterfaceStorageInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterfaceStorageInterface::AccountInterfaceStorageInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountInterfaceStorageInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountInterfaceStorageInterface::AccountInterfaceStorageInterface ( Tp::DBusProxy proxy)

Creates a AccountInterfaceStorageInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::AccountInterfaceStorageInterface::AccountInterfaceStorageInterface ( const Tp::Client::AccountInterface mainInterface)
explicit

Creates a AccountInterfaceStorageInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::AccountInterfaceStorageInterface::AccountInterfaceStorageInterface ( const Tp::Client::AccountInterface mainInterface,
QObject *  parent 
)

Creates a AccountInterfaceStorageInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::AccountInterfaceStorageInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Account.Interface.Storage", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::AccountInterfaceStorageInterface::requestPropertyStorageProvider ( ) const
inline

Asynchronous getter for the remote object property StorageProvider of type QString.

The name of the account storage implementation, which SHOULD start with a reversed domain name in the same way as D-Bus interface names. When this is the empty string the account is internally stored.

This property cannot change once an Account has been created.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterfaceStorageInterface::requestPropertyStorageIdentifier ( ) const
inline

Asynchronous getter for the remote object property StorageIdentifier of type QDBusVariant.

Unique identification of the account within the storage backend. The contents of the variant are defined by the StorageProvider .

This property cannot change once an Account has been created.

Different storage systems will have their own way of uniquely identifying an account, typically an integer or a string. Given that all users of this property should have direct knowledge of the backend they should know what types to expect and how to handle it.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterfaceStorageInterface::requestPropertyStorageSpecificInformation ( ) const
inline

Asynchronous getter for the remote object property StorageSpecificInformation of type QVariantMap.

Map containing information specific to the storage backend. The keys and the types of their values are defined by the StorageProvider , and are not interpreted by the AccountManager implementation.

As the values in this map may change at any time (due to an external application manipulating the storage provider directly), this property should not be cached; it should instead be retrieved each time it is needed.

This can be used to provide additional hints to user interfaces aware of a specific storage provider, without requiring those user interfaces to use the StorageIdentifier to query the storage provider directly.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountInterfaceStorageInterface::requestPropertyStorageRestrictions ( ) const
inline

Asynchronous getter for the remote object property StorageRestrictions of type uint.

Bitfield which defines what restrictions this Storage method has.

This property cannot change once an Account has been created.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::AccountInterfaceStorageInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::AccountInterfaceStorageInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00894.html0000644000175100017520000076720012530426257021161 0ustar00kaffeinekaffeine00000000000000 Enumerated type constants
   Home · All Classes · All Namespaces · Modules · Functions · Files
Enumerations | Variables
Enumerated type constants

Enumerations

enum  Tp::HandleType {
  Tp::HandleTypeNone, Tp::HandleTypeContact, Tp::HandleTypeRoom, Tp::HandleTypeList,
  Tp::HandleTypeGroup, Tp::_HandleTypePadding
}
 
enum  Tp::ConnectionStatus { Tp::ConnectionStatusConnected, Tp::ConnectionStatusConnecting, Tp::ConnectionStatusDisconnected, Tp::_ConnectionStatusPadding }
 
enum  Tp::ConnectionStatusReason {
  Tp::ConnectionStatusReasonNoneSpecified, Tp::ConnectionStatusReasonRequested, Tp::ConnectionStatusReasonNetworkError, Tp::ConnectionStatusReasonAuthenticationFailed,
  Tp::ConnectionStatusReasonEncryptionError, Tp::ConnectionStatusReasonNameInUse, Tp::ConnectionStatusReasonCertNotProvided, Tp::ConnectionStatusReasonCertUntrusted,
  Tp::ConnectionStatusReasonCertExpired, Tp::ConnectionStatusReasonCertNotActivated, Tp::ConnectionStatusReasonCertHostnameMismatch, Tp::ConnectionStatusReasonCertFingerprintMismatch,
  Tp::ConnectionStatusReasonCertSelfSigned, Tp::ConnectionStatusReasonCertOtherError, Tp::ConnectionStatusReasonCertRevoked, Tp::ConnectionStatusReasonCertInsecure,
  Tp::ConnectionStatusReasonCertLimitExceeded, Tp::_ConnectionStatusReasonPadding
}
 
enum  Tp::ContactListState {
  Tp::ContactListStateNone, Tp::ContactListStateWaiting, Tp::ContactListStateFailure, Tp::ContactListStateSuccess,
  Tp::_ContactListStatePadding
}
 
enum  Tp::SubscriptionState {
  Tp::SubscriptionStateUnknown, Tp::SubscriptionStateNo, Tp::SubscriptionStateRemovedRemotely, Tp::SubscriptionStateAsk,
  Tp::SubscriptionStateYes, Tp::_SubscriptionStatePadding
}
 
enum  Tp::ContactMetadataStorageType {
  Tp::ContactMetadataStorageTypeNone, Tp::ContactMetadataStorageTypeSubscribedOrPending, Tp::ContactMetadataStorageTypeSubscribed, Tp::ContactMetadataStorageTypeAnyone,
  Tp::_ContactMetadataStorageTypePadding
}
 
enum  Tp::HTTPMethod { Tp::HTTPMethodGet, Tp::HTTPMethodPost, Tp::_HTTPMethodPadding }
 
enum  Tp::ServicePointType { Tp::ServicePointTypeNone, Tp::ServicePointTypeEmergency, Tp::ServicePointTypeCounseling, Tp::_ServicePointTypePadding }
 
enum  Tp::ConnectionPresenceType {
  Tp::ConnectionPresenceTypeUnset, Tp::ConnectionPresenceTypeOffline, Tp::ConnectionPresenceTypeAvailable, Tp::ConnectionPresenceTypeAway,
  Tp::ConnectionPresenceTypeExtendedAway, Tp::ConnectionPresenceTypeHidden, Tp::ConnectionPresenceTypeBusy, Tp::ConnectionPresenceTypeUnknown,
  Tp::ConnectionPresenceTypeError, Tp::_ConnectionPresenceTypePadding
}
 
enum  Tp::AccessControlType {
  Tp::AccessControlTypeWhitelist, Tp::AccessControlTypePublishList, Tp::AccessControlTypeGroup, Tp::AccessControlTypeOpen,
  Tp::AccessControlTypeSubscribeOrPublishList, Tp::AccessControlTypeClosed, Tp::AccessControlTypeNotUnderstood, Tp::_AccessControlTypePadding
}
 
enum  Tp::RichPresenceAccessControlType {
  Tp::RichPresenceAccessControlTypeWhitelist, Tp::RichPresenceAccessControlTypePublishList, Tp::RichPresenceAccessControlTypeGroup, Tp::RichPresenceAccessControlTypeOpen,
  Tp::_RichPresenceAccessControlTypePadding
}
 
enum  Tp::CallState {
  Tp::CallStateUnknown, Tp::CallStatePendingInitiator, Tp::CallStateInitialising, Tp::CallStateInitialised,
  Tp::CallStateAccepted, Tp::CallStateActive, Tp::CallStateEnded, Tp::_CallStatePadding
}
 
enum  Tp::CallStateChangeReason {
  Tp::CallStateChangeReasonUnknown, Tp::CallStateChangeReasonProgressMade, Tp::CallStateChangeReasonUserRequested, Tp::CallStateChangeReasonForwarded,
  Tp::CallStateChangeReasonRejected, Tp::CallStateChangeReasonNoAnswer, Tp::CallStateChangeReasonInvalidContact, Tp::CallStateChangeReasonPermissionDenied,
  Tp::CallStateChangeReasonBusy, Tp::CallStateChangeReasonInternalError, Tp::CallStateChangeReasonServiceError, Tp::CallStateChangeReasonNetworkError,
  Tp::CallStateChangeReasonMediaError, Tp::CallStateChangeReasonConnectivityError, Tp::_CallStateChangeReasonPadding
}
 
enum  Tp::ChannelContactSearchState {
  Tp::ChannelContactSearchStateNotStarted, Tp::ChannelContactSearchStateInProgress, Tp::ChannelContactSearchStateMoreAvailable, Tp::ChannelContactSearchStateCompleted,
  Tp::ChannelContactSearchStateFailed, Tp::_ChannelContactSearchStatePadding
}
 
enum  Tp::FileTransferState {
  Tp::FileTransferStateNone, Tp::FileTransferStatePending, Tp::FileTransferStateAccepted, Tp::FileTransferStateOpen,
  Tp::FileTransferStateCompleted, Tp::FileTransferStateCancelled, Tp::_FileTransferStatePadding
}
 
enum  Tp::FileTransferStateChangeReason {
  Tp::FileTransferStateChangeReasonNone, Tp::FileTransferStateChangeReasonRequested, Tp::FileTransferStateChangeReasonLocalStopped, Tp::FileTransferStateChangeReasonRemoteStopped,
  Tp::FileTransferStateChangeReasonLocalError, Tp::FileTransferStateChangeReasonRemoteError, Tp::_FileTransferStateChangeReasonPadding
}
 
enum  Tp::FileHashType {
  Tp::FileHashTypeNone, Tp::FileHashTypeMD5, Tp::FileHashTypeSHA1, Tp::FileHashTypeSHA256,
  Tp::_FileHashTypePadding
}
 
enum  Tp::MediaStreamType { Tp::MediaStreamTypeAudio, Tp::MediaStreamTypeVideo, Tp::_MediaStreamTypePadding }
 
enum  Tp::MediaStreamState { Tp::MediaStreamStateDisconnected, Tp::MediaStreamStateConnecting, Tp::MediaStreamStateConnected, Tp::_MediaStreamStatePadding }
 
enum  Tp::MediaStreamDirection {
  Tp::MediaStreamDirectionNone, Tp::MediaStreamDirectionSend, Tp::MediaStreamDirectionReceive, Tp::MediaStreamDirectionBidirectional,
  Tp::_MediaStreamDirectionPadding
}
 
enum  Tp::ChannelTextSendError {
  Tp::ChannelTextSendErrorUnknown, Tp::ChannelTextSendErrorOffline, Tp::ChannelTextSendErrorInvalidContact, Tp::ChannelTextSendErrorPermissionDenied,
  Tp::ChannelTextSendErrorTooLong, Tp::ChannelTextSendErrorNotImplemented, Tp::_ChannelTextSendErrorPadding
}
 
enum  Tp::ChannelTextMessageType {
  Tp::ChannelTextMessageTypeNormal, Tp::ChannelTextMessageTypeAction, Tp::ChannelTextMessageTypeNotice, Tp::ChannelTextMessageTypeAutoReply,
  Tp::ChannelTextMessageTypeDeliveryReport, Tp::_ChannelTextMessageTypePadding
}
 
enum  Tp::TubeType { Tp::TubeTypeDBus, Tp::TubeTypeStream, Tp::_TubeTypePadding }
 
enum  Tp::TubeState { Tp::TubeStateLocalPending, Tp::TubeStateRemotePending, Tp::TubeStateOpen, Tp::_TubeStatePadding }
 
enum  Tp::CaptchaCancelReason { Tp::CaptchaCancelReasonUserCancelled, Tp::CaptchaCancelReasonNotSupported, Tp::CaptchaCancelReasonServiceConfused, Tp::_CaptchaCancelReasonPadding }
 
enum  Tp::CaptchaStatus {
  Tp::CaptchaStatusLocalPending, Tp::CaptchaStatusRemotePending, Tp::CaptchaStatusSucceeded, Tp::CaptchaStatusTryAgain,
  Tp::CaptchaStatusFailed, Tp::_CaptchaStatusPadding
}
 
enum  Tp::ChannelChatState {
  Tp::ChannelChatStateGone, Tp::ChannelChatStateInactive, Tp::ChannelChatStateActive, Tp::ChannelChatStatePaused,
  Tp::ChannelChatStateComposing, Tp::_ChannelChatStatePadding
}
 
enum  Tp::DTMFEvent {
  Tp::DTMFEventDigit0, Tp::DTMFEventDigit1, Tp::DTMFEventDigit2, Tp::DTMFEventDigit3,
  Tp::DTMFEventDigit4, Tp::DTMFEventDigit5, Tp::DTMFEventDigit6, Tp::DTMFEventDigit7,
  Tp::DTMFEventDigit8, Tp::DTMFEventDigit9, Tp::DTMFEventAsterisk, Tp::DTMFEventHash,
  Tp::DTMFEventLetterA, Tp::DTMFEventLetterB, Tp::DTMFEventLetterC, Tp::DTMFEventLetterD,
  Tp::_DTMFEventPadding
}
 
enum  Tp::ChannelGroupChangeReason {
  Tp::ChannelGroupChangeReasonNone, Tp::ChannelGroupChangeReasonOffline, Tp::ChannelGroupChangeReasonKicked, Tp::ChannelGroupChangeReasonBusy,
  Tp::ChannelGroupChangeReasonInvited, Tp::ChannelGroupChangeReasonBanned, Tp::ChannelGroupChangeReasonError, Tp::ChannelGroupChangeReasonInvalidContact,
  Tp::ChannelGroupChangeReasonNoAnswer, Tp::ChannelGroupChangeReasonRenamed, Tp::ChannelGroupChangeReasonPermissionDenied, Tp::ChannelGroupChangeReasonSeparated,
  Tp::_ChannelGroupChangeReasonPadding
}
 
enum  Tp::LocalHoldState {
  Tp::LocalHoldStateUnheld, Tp::LocalHoldStateHeld, Tp::LocalHoldStatePendingHold, Tp::LocalHoldStatePendingUnhold,
  Tp::_LocalHoldStatePadding
}
 
enum  Tp::LocalHoldStateReason { Tp::LocalHoldStateReasonNone, Tp::LocalHoldStateReasonRequested, Tp::LocalHoldStateReasonResourceNotAvailable, Tp::_LocalHoldStateReasonPadding }
 
enum  Tp::DeliveryStatus {
  Tp::DeliveryStatusUnknown, Tp::DeliveryStatusDelivered, Tp::DeliveryStatusTemporarilyFailed, Tp::DeliveryStatusPermanentlyFailed,
  Tp::DeliveryStatusAccepted, Tp::DeliveryStatusRead, Tp::DeliveryStatusDeleted, Tp::_DeliveryStatusPadding
}
 
enum  Tp::SASLAbortReason { Tp::SASLAbortReasonInvalidChallenge, Tp::SASLAbortReasonUserAbort, Tp::_SASLAbortReasonPadding }
 
enum  Tp::SASLStatus {
  Tp::SASLStatusNotStarted, Tp::SASLStatusInProgress, Tp::SASLStatusServerSucceeded, Tp::SASLStatusClientAccepted,
  Tp::SASLStatusSucceeded, Tp::SASLStatusServerFailed, Tp::SASLStatusClientFailed, Tp::_SASLStatusPadding
}
 
enum  Tp::TubeChannelState {
  Tp::TubeChannelStateLocalPending, Tp::TubeChannelStateRemotePending, Tp::TubeChannelStateOpen, Tp::TubeChannelStateNotOffered,
  Tp::_TubeChannelStatePadding
}
 
enum  Tp::SocketAddressType {
  Tp::SocketAddressTypeUnix, Tp::SocketAddressTypeAbstractUnix, Tp::SocketAddressTypeIPv4, Tp::SocketAddressTypeIPv6,
  Tp::_SocketAddressTypePadding
}
 
enum  Tp::SocketAccessControl {
  Tp::SocketAccessControlLocalhost, Tp::SocketAccessControlPort, Tp::SocketAccessControlNetmask, Tp::SocketAccessControlCredentials,
  Tp::_SocketAccessControlPadding
}
 
enum  Tp::MediaStreamError {
  Tp::MediaStreamErrorUnknown, Tp::MediaStreamErrorEOS, Tp::MediaStreamErrorCodecNegotiationFailed, Tp::MediaStreamErrorConnectionFailed,
  Tp::MediaStreamErrorNetworkError, Tp::MediaStreamErrorNoCodecs, Tp::MediaStreamErrorInvalidCMBehavior, Tp::MediaStreamErrorMediaError,
  Tp::_MediaStreamErrorPadding
}
 
enum  Tp::MediaStreamBaseProto { Tp::MediaStreamBaseProtoUDP, Tp::MediaStreamBaseProtoTCP, Tp::_MediaStreamBaseProtoPadding }
 
enum  Tp::MediaStreamTransportType { Tp::MediaStreamTransportTypeLocal, Tp::MediaStreamTransportTypeDerived, Tp::MediaStreamTransportTypeRelay, Tp::_MediaStreamTransportTypePadding }
 
enum  Tp::DebugLevel {
  Tp::DebugLevelError, Tp::DebugLevelCritical, Tp::DebugLevelWarning, Tp::DebugLevelMessage,
  Tp::DebugLevelInfo, Tp::DebugLevelDebug, Tp::_DebugLevelPadding
}
 
enum  Tp::TLSCertificateState { Tp::TLSCertificateStatePending, Tp::TLSCertificateStateAccepted, Tp::TLSCertificateStateRejected, Tp::_TLSCertificateStatePadding }
 
enum  Tp::TLSCertificateRejectReason {
  Tp::TLSCertificateRejectReasonUnknown, Tp::TLSCertificateRejectReasonUntrusted, Tp::TLSCertificateRejectReasonExpired, Tp::TLSCertificateRejectReasonNotActivated,
  Tp::TLSCertificateRejectReasonFingerprintMismatch, Tp::TLSCertificateRejectReasonHostnameMismatch, Tp::TLSCertificateRejectReasonSelfSigned, Tp::TLSCertificateRejectReasonRevoked,
  Tp::TLSCertificateRejectReasonInsecure, Tp::TLSCertificateRejectReasonLimitExceeded, Tp::_TLSCertificateRejectReasonPadding
}
 
enum  Tp::CallContentPacketizationType { Tp::CallContentPacketizationTypeRTP, Tp::CallContentPacketizationTypeRaw, Tp::CallContentPacketizationTypeMSNWebcam, Tp::_CallContentPacketizationTypePadding }
 
enum  Tp::CallContentDisposition { Tp::CallContentDispositionNone, Tp::CallContentDispositionInitial, Tp::_CallContentDispositionPadding }
 
enum  Tp::RCPTXRRTTMode { Tp::RCPTXRRTTModeAll, Tp::RCPTXRRTTModeSender, Tp::_RCPTXRRTTModePadding }
 
enum  Tp::StreamFlowState {
  Tp::StreamFlowStateStopped, Tp::StreamFlowStatePendingStart, Tp::StreamFlowStatePendingStop, Tp::StreamFlowStateStarted,
  Tp::_StreamFlowStatePadding
}
 
enum  Tp::CallStreamCandidateType {
  Tp::CallStreamCandidateTypeNone, Tp::CallStreamCandidateTypeHost, Tp::CallStreamCandidateTypeServerReflexive, Tp::CallStreamCandidateTypePeerReflexive,
  Tp::CallStreamCandidateTypeRelay, Tp::CallStreamCandidateTypeMulticast, Tp::_CallStreamCandidateTypePadding
}
 
enum  Tp::StreamComponent { Tp::StreamComponentUnknown, Tp::StreamComponentData, Tp::StreamComponentControl, Tp::_StreamComponentPadding }
 
enum  Tp::StreamTransportType {
  Tp::StreamTransportTypeUnknown, Tp::StreamTransportTypeRawUDP, Tp::StreamTransportTypeICE, Tp::StreamTransportTypeGTalkP2P,
  Tp::StreamTransportTypeWLM2009, Tp::StreamTransportTypeSHM, Tp::StreamTransportTypeMulticast, Tp::_StreamTransportTypePadding
}
 
enum  Tp::SendingState {
  Tp::SendingStateNone, Tp::SendingStatePendingSend, Tp::SendingStateSending, Tp::SendingStatePendingStopSending,
  Tp::_SendingStatePadding
}
 
enum  Tp::StreamEndpointState {
  Tp::StreamEndpointStateConnecting, Tp::StreamEndpointStateProvisionallyConnected, Tp::StreamEndpointStateFullyConnected, Tp::StreamEndpointStateExhaustedCandidates,
  Tp::StreamEndpointStateFailed, Tp::_StreamEndpointStatePadding
}
 
enum  Tp::LocalMuteState {
  Tp::LocalMuteStateUnmuted, Tp::LocalMuteStateMuted, Tp::LocalMuteStatePendingMute, Tp::LocalMuteStatePendingUnmute,
  Tp::LocalMuteStatePartiallyMuted, Tp::_LocalMuteStatePadding
}
 

Variables

const int Tp::NUM_HANDLE_TYPES
 
const int Tp::NUM_CONNECTION_STATUSES
 
const int Tp::NUM_CONNECTION_STATUS_REASONS
 
const int Tp::NUM_CONTACT_LIST_STATES
 
const int Tp::NUM_SUBSCRIPTION_STATES
 
const int Tp::NUM_CONTACT_METADATA_STORAGE_TYPES
 
const int Tp::NUM_HTTP_METHODS
 
const int Tp::NUM_SERVICE_POINT_TYPES
 
const int Tp::NUM_CONNECTION_PRESENCE_TYPES
 
const int Tp::NUM_ACCESS_CONTROL_TYPES
 
const int Tp::NUM_RICH_PRESENCE_ACCESS_CONTROL_TYPES
 
const int Tp::NUM_CALL_STATES
 
const int Tp::NUM_CALL_STATE_CHANGE_REASONS
 
const int Tp::NUM_CHANNEL_CONTACT_SEARCH_STATES
 
const int Tp::NUM_FILE_TRANSFER_STATES
 
const int Tp::NUM_FILE_TRANSFER_STATE_CHANGE_REASONS
 
const int Tp::NUM_FILE_HASH_TYPES
 
const int Tp::NUM_MEDIA_STREAM_TYPES
 
const int Tp::NUM_MEDIA_STREAM_STATES
 
const int Tp::NUM_MEDIA_STREAM_DIRECTIONS
 
const int Tp::NUM_CHANNEL_TEXT_SEND_ERRORS
 
const int Tp::NUM_CHANNEL_TEXT_MESSAGE_TYPES
 
const int Tp::NUM_TUBE_TYPES
 
const int Tp::NUM_TUBE_STATES
 
const int Tp::NUM_CAPTCHA_CANCEL_REASONS
 
const int Tp::NUM_CAPTCHA_STATUSES
 
const int Tp::NUM_CHANNEL_CHAT_STATES
 
const int Tp::NUM_DTMF_EVENTS
 
const int Tp::NUM_CHANNEL_GROUP_CHANGE_REASONS
 
const int Tp::NUM_LOCAL_HOLD_STATES
 
const int Tp::NUM_LOCAL_HOLD_STATE_REASONS
 
const int Tp::NUM_DELIVERY_STATUSES
 
const int Tp::NUM_SASL_ABORT_REASONS
 
const int Tp::NUM_SASL_STATUSES
 
const int Tp::NUM_TUBE_CHANNEL_STATES
 
const int Tp::NUM_SOCKET_ADDRESS_TYPES
 
const int Tp::NUM_SOCKET_ACCESS_CONTROLS
 
const int Tp::NUM_MEDIA_STREAM_ERRORS
 
const int Tp::NUM_MEDIA_STREAM_BASE_PROTOS
 
const int Tp::NUM_MEDIA_STREAM_TRANSPORT_TYPES
 
const int Tp::NUM_DEBUG_LEVELS
 
const int Tp::NUM_TLS_CERTIFICATE_STATES
 
const int Tp::NUM_TLS_CERTIFICATE_REJECT_REASONS
 
const int Tp::NUM_CALL_CONTENT_PACKETIZATION_TYPES
 
const int Tp::NUM_CALL_CONTENT_DISPOSITIONS
 
const int Tp::NUM_RCPT_XR_RTT_MODES
 
const int Tp::NUM_STREAM_FLOW_STATES
 
const int Tp::NUM_CALL_STREAM_CANDIDATE_TYPES
 
const int Tp::NUM_STREAM_COMPONENTS
 
const int Tp::NUM_STREAM_TRANSPORT_TYPES
 
const int Tp::NUM_SENDING_STATES
 
const int Tp::NUM_STREAM_ENDPOINT_STATES
 
const int Tp::NUM_LOCAL_MUTE_STATES
 

Detailed Description

Types generated from the specification representing enumerated types ie. types the values of which are mutually exclusive integral constants.

Enumeration Type Documentation

Enumerated type generated from the specification.

Enumerator
HandleTypeNone 

A "null" handle type used to indicate the absence of a handle. When a handle type and a handle appear as a pair, if the handle type is zero, the handle must also be zero.

HandleTypeContact 

A contact

HandleTypeRoom 

A chat room

HandleTypeList 

A server-generated contact list (see Channel.Interface.Group)

HandleTypeGroup 

A user-defined contact list (see Channel.Interface.Group)

_HandleTypePadding 

Enumerated type generated from the specification.

Enumerator
ConnectionStatusConnected 

The connection is fully connected and all methods are available.

ConnectionStatusConnecting 

Connect has been called but the connection has not yet been established. Some methods may fail until the connection has been established.

ConnectionStatusDisconnected 

If this is retrieved from GetStatus or Status, it indicates that connection has not yet been attempted. If seen in a StatusChanged signal, it indicates that the connection has failed; the Connection object SHOULD be removed from D-Bus immediately, and all subsequent method calls SHOULD fail.

_ConnectionStatusPadding 

Enumerated type generated from the specification.

A reason why the status of the connection changed. Apart from Requested, the values of this enumeration only make sense as reasons why the status changed to Disconnected.

Enumerator
ConnectionStatusReasonNoneSpecified 

There is no reason set for this state change. Unknown status reasons SHOULD be treated like this reason.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Disconnected.

ConnectionStatusReasonRequested 

The change is in response to a user request. Changes to the Connecting or Connected status SHOULD always indicate this reason; changes to the Disconnected status SHOULD indicate this reason if and only if the disconnection was requested by the user.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cancelled.

ConnectionStatusReasonNetworkError 

There was an error sending or receiving on the network socket.

When the status changes from Connecting to Disconnected for this reason, the equivalent D-Bus error is either org.freedesktop.Telepathy.Error.NetworkError, org.freedesktop.Telepathy.Error.ConnectionRefused, org.freedesktop.Telepathy.Error.ConnectionFailed or some more specific error.

When the status changes from Connected to Disconnected for this reason, the equivalent D-Bus error is either org.freedesktop.Telepathy.Error.NetworkError, org.freedesktop.Telepathy.Error.ConnectionLost or some more specific error.

ConnectionStatusReasonAuthenticationFailed 

The username or password was invalid.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.AuthenticationFailed.

ConnectionStatusReasonEncryptionError 

There was an error negotiating SSL on this connection, or encryption was unavailable and require-encryption was set when the connection was created.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.EncryptionNotAvailable if encryption was not available at all, or org.freedesktop.Telepathy.Error.EncryptionError if encryption failed.

ConnectionStatusReasonNameInUse 

In general, this reason indicates that the requested account name or other identification could not be used due to conflict with another connection. It can be divided into three cases:

  • If the status change is from Connecting to Disconnected and the 'register' parameter to RequestConnection was present and true, the requested account could not be created on the server because it already exists. The equivalent D-Bus error is org.freedesktop.Telepathy.Error.RegistrationExists.
  • If the status change is from Connecting to Disconnected but the 'register' parameter is absent or false, the connection manager could not connect to the specified account because a connection to that account already exists. The equivalent D-Bus error is org.freedesktop.Telepathy.Error.AlreadyConnected.
    In some protocols, like XMPP (when connecting with the same JID and resource as an existing connection), the existing connection "wins" and the new one fails to connect.
  • If the status change is from Connected to Disconnected, the existing connection was automatically disconnected because a new connection to the same account (perhaps from a different client or location) was established. The equivalent D-Bus error is org.freedesktop.Telepathy.Error.ConnectionReplaced.
    In some protocols, like MSNP (when connecting twice with the same Passport), the new connection "wins" and the existing one is automatically disconnected.
ConnectionStatusReasonCertNotProvided 

The server did not provide a SSL certificate.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.NotProvided.

ConnectionStatusReasonCertUntrusted 

The server's SSL certificate is signed by an untrusted certifying authority. This error SHOULD NOT be used to represent a self-signed certificate: use the more specific Cert_Self_Signed reason for that.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Untrusted.

ConnectionStatusReasonCertExpired 

The server's SSL certificate has expired.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Expired.

ConnectionStatusReasonCertNotActivated 

The server's SSL certificate is not yet valid.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.NotActivated.

ConnectionStatusReasonCertHostnameMismatch 

The server's SSL certificate did not match its hostname.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.HostnameMismatch.

ConnectionStatusReasonCertFingerprintMismatch 

The server's SSL certificate does not have the expected fingerprint.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.FingerprintMismatch.

ConnectionStatusReasonCertSelfSigned 

The server's SSL certificate is self-signed.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.SelfSigned.

ConnectionStatusReasonCertOtherError 

There was some other error validating the server's SSL certificate.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Invalid.

ConnectionStatusReasonCertRevoked 

The server's SSL certificate has been revoked.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Revoked.

ConnectionStatusReasonCertInsecure 

The server's SSL certificate uses an insecure algorithm, or is cryptographically weak.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Insecure.

ConnectionStatusReasonCertLimitExceeded 

The length in bytes of the server certificate, or the depth of the sever certificate chain exceed the limits imposed by the crypto library.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.LimitExceeded

_ConnectionStatusReasonPadding 

Enumerated type generated from the specification.

The progress made in retrieving the contact list.

Enumerator
ContactListStateNone 

The connection has not started to retrieve the contact list. If GetContactListAttributes is called in this state, it will raise NotYet.

ContactListStateWaiting 

The connection has started to retrieve the contact list, but has not yet succeeded or failed. If GetContactListAttributes is called in this state, it will raise NotYet.

ContactListStateFailure 

The connection has tried and failed to retrieve the contact list. If GetContactListAttributes is called in this state, it will immediately raise an error indicating the reason for failure. The connection manager SHOULD try again to obtain the contact list, if appropriate for the protocol. If it succeeds later, the ContactListState MUST advance to Success.

ContactListStateSuccess 

The connection has successfully retrieved the contact list. If GetContactListAttributes is called in this state, it will return successfully.

_ContactListStatePadding 

Enumerated type generated from the specification.

An enumeration indicating whether presence subscription is denied, denied but pending permission, or allowed. The exact semantics vary according to where this type is used: see the subscribe and publish contact attributes for details.

Enumerator
SubscriptionStateUnknown 

The presence subscription state is unknown.

SubscriptionStateNo 

Presence information cannot be seen, and either the subscription state Removed_Remotely does not apply, or it is not known whether that state applies.

SubscriptionStateRemovedRemotely 

Presence information cannot be seen because the remote contact took action: either the local user's request to see the remote contact's presence was denied, or the remote contact requested to see the local user's presence but then cancelled their request.

SubscriptionStateAsk 

Presence information cannot be seen. Permission to see presence information has been requested, and the request has not yet been declined or accepted.

SubscriptionStateYes 

Presence information can be seen.

_SubscriptionStatePadding 

Enumerated type generated from the specification.

Values of this enumeration indicate the extent to which metadata such as aliases and group memberships can be stored for the contacts on a particular connection.

On some protocols, certain metadata (for instance, contact aliases) can only be stored for contacts on the contact list, or contacts with a particular contact list state.

To make it easier to deal with such protocols, if clients set metadata on a contact who is not in the required state, the Connection MUST cache the metadata for the duration of the session. If clients request the attributes of that contact after the appropriate "set" method has returned successfully, the Connection MUST return the new (cached) value.

If the contact is later placed in the required state to store metadata (for instance, if subscription to the contact's presence is requested, on a protocol like MSN where the alias has storage type Subscribed_Or_Pending), the connection MUST store the cached metadata at that time.

If the Connection didn't cache changes in this way, a client intending to change the alias on MSN would have to wait until the server acknowledged the subscription request; in the meantime, other clients would still display the old alias.

The only exception to that general rule is that if the Connection cannot store particular metadata at all (i.e. the storage type is None), it MUST reject attempts to set it.

If the implementation knows that metadata can't be stored at all, it's useful to report that, which can be done synchronously. In general, user interfaces should detect storage type None and not display editing controls at all.

Enumerator
ContactMetadataStorageTypeNone 

This connection cannot store this type of metadata at all, and attempting to do so will fail with NotImplemented.

Link-local XMPP can't store aliases or group memberships at all, and subscription and presence states are implicit (all contacts on the local network have subscribe = publish = Yes and no other contacts exist).

As of April 2010, the XMPP server for Facebook Chat provides a read-only view of the user's Facebook contacts, so it could also usefully have this storage type.

ContactMetadataStorageTypeSubscribedOrPending 

This type of metadata can only be stored permanently for contacts whose subscribe attribute is Ask or Yes.

Contact aliases and groups on MSN have this behaviour.

ContactMetadataStorageTypeSubscribed 

This type of metadata can only be stored permanently for contacts whose subscribe attribute is Yes.

No service with this behaviour is currently known, but it's a stricter form of Subscribed_Or_Pending.

ContactMetadataStorageTypeAnyone 

The user can set this metadata for any valid contact identifier, whether or not they have any presence subscription relationship to it, and it will be stored on their contact list.

Contact aliases and groups on XMPP have this behaviour; it is possible to put a contact in a group, or assign an alias to them, without requesting that presence be shared.

_ContactMetadataStorageTypePadding 

Enumerated type generated from the specification.

The HTTP Method with which to request a URL.

Enumerator
HTTPMethodGet 

Use the GET method when opening the URL.

HTTPMethodPost 

Use the POST method when opening the URL. Refer to HTTP_Post_Data for more details.

_HTTPMethodPadding 

Enumerated type generated from the specification.

The various types of service points a channel might connect to.

Enumerator
ServicePointTypeNone 

The channel is not communicating with a service point, or it is not known whether it is communicating with a service point (e.g. an ordinary call).

ServicePointTypeEmergency 

The service point is a generic emergency point.

ServicePointTypeCounseling 

The service point is some kind of counseling service (ie, mental health or child-services counseling).

_ServicePointTypePadding 

Enumerated type generated from the specification.

Enumerator
ConnectionPresenceTypeUnset 

An invalid presence type used as a null value. This value MUST NOT appear in the Statuses property, or in the result of GetStatuses on the deprecated Presence interface.

ConnectionPresenceTypeOffline 

Offline

ConnectionPresenceTypeAvailable 

Available

ConnectionPresenceTypeAway 

Away

ConnectionPresenceTypeExtendedAway 

Away for an extended time

ConnectionPresenceTypeHidden 

Hidden (invisible)

ConnectionPresenceTypeBusy 

Busy, Do Not Disturb.

ConnectionPresenceTypeUnknown 

Unknown, unable to determine presence for this contact, for example if the protocol only allows presence of subscribed contacts.

ConnectionPresenceTypeError 

Error, an error occurred while trying to determine presence. The message, if set, is an error from the server.

_ConnectionPresenceTypePadding 

Enumerated type generated from the specification.

A type for communication access control. These control policies are used in org.freedesktop.Telepathy.Connection.Interface.CommunicationPolicy.DRAFT as well as most rich presence interfaces.

New interfaces should use this type, and NOT Rich_Presence_Access_Control_Type.

Enumerator
AccessControlTypeWhitelist 

Only allow contacts that are in a certain whitelist.

The associated variant in Access_Control is a list of Contact_Handle representing the whitelist, with signature au.

AccessControlTypePublishList 

Allow contacts in the user's 'publish' list. The associated variant in Access_Control is ignored.

AccessControlTypeGroup 

Only allow contacts that are in a certain group.

The associated variant in Access_Control is a Group_Handle representing the permitted group.

AccessControlTypeOpen 

Allow all contacts. The associated variant in Access_Control is ignored.

AccessControlTypeSubscribeOrPublishList 

Allow all contacts in the user's 'subscribe' or 'publish' list. The associated variant in Access_Control is ignored.

AccessControlTypeClosed 

Forbid all contacts. The associated variant in Access_Control is ignored.

AccessControlTypeNotUnderstood 

The access control rule is too complex to be represented in the current Telepathy API. The associated variant is meaningless. Setting this mode is never valid; the connection manager MUST raise an error if this is attempted.

XEP-0016 Privacy Lists can easily produce access control mechanisms that can't be expressed in a simpler API. We need to be able to at least indicate that fact.

The associated variant in Access_Control is ignored.

_AccessControlTypePadding 

Enumerated type generated from the specification.

A type of access control for Rich_Presence_Access_Control. For most types, the exact access control is given by an associated variant.

These are the access control types from XMPP publish/subscribe (XEP-0060).

ConnectionInterfaceLocationInterface uses this for historical reasons, new interfaces will use Access_Control_Type.

Enumerator
RichPresenceAccessControlTypeWhitelist 

The associated variant is a list of contacts (signature 'au', Contact_Handle[]) who can see the extended presence information.

RichPresenceAccessControlTypePublishList 

All contacts in the user's 'publish' contact list can see the extended presence information. The associated variant is ignored.

RichPresenceAccessControlTypeGroup 

The associated variant is a handle of type Group (signature 'u', Group_Handle) representing a group of contacts who can see the extended presence information.

RichPresenceAccessControlTypeOpen 

Anyone with access to the service can see the extended presence information.

_RichPresenceAccessControlTypePadding 

Enumerated type generated from the specification.

The state of a call, as a whole.

The allowed transitions are:

  • Pending_Initiator → Initialising (for outgoing calls, when Accept() is called)
  • Initialising → Initialised (for outgoing calls, when the remote client indicates that the user has been notified about the call. If the network is known not to provide feedback about whether the remote side is ringing, then the call should immediately be set to Initialised.
  • Initialising → Initialised (for incoming calls, when e.g. the implementation has been initialised far enough that it is sensible to notify the user about the call (to reduce the probability that the user will pick up the call and have it immediately fail). The UI should then alert the user about the call, and call SetRinging() )
  • Initialised → Accepted (for outgoing calls to a contact, when the remote contact accepts the call; for incoming calls, when Accept() is called.)
  • Accepted → Active (when the local user successfully joins the call/conference, and media is known to be flowing successfully; also, when temporary connection problems are resolved (See below)). If the network is known not to provide feedback about when the call is properly connected, the call should immediately be set to Active.
  • Active → Accepted (when there are temporary connection problems that the CM is aware of and able to recover from)
  • any state → Ended (when the call is terminated normally, or when an error occurs that the CM is unable to recover from)

Clients MAY consider unknown values from this enum to be an error - additional values will not be defined after the Call specification is declared to be stable.

Enumerator
CallStateUnknown 

The call state is not known. This call state MUST NOT appear as a value of the CallState property, but MAY be used by client code to represent calls whose state is as yet unknown.

CallStatePendingInitiator 

The initiator of the call hasn't accepted the call yet. This state only makes sense for outgoing calls, where it means that the local user has not yet sent any signalling messages to the remote user(s), and will not do so until Accept is called.

CallStateInitialising 

Progress has been made in placing the call, but the contact has not been made aware of the call yet. This corresponds to SIP's status code 183 Session Progress, and should be used for the period where the CM is waiting for the streaming implementation to initialise (before sending the initial INVITE or equivalent) and when the outgoing call has reached a gateway or ICE negotiation is pending. UIs should not produce a dialtone or start ringing if the call is in this state.

CallStateInitialised 

In the outgoing case: at least one called user has been alerted about the call (a SIP 180 (Ringing) packet or equivalent has been received) but none have answered, so the call cannot go to Accepted (use Ringing to determine which members have been informed and which haven't, if you care). UIs SHOULD produce a dialtone for outgoing calls in this state. In the incoming case, the local user should be informed of the call as soon as the call reaches this state (and SetRinging should be called to inform the CM that this has happened, so that it can relay this fact to the caller using a SIP 180 (Ringing) packet or equivalent).

CallStateAccepted 

The contact being called has accepted the call, but the call is not in the Active state (The most common reason for this is that the streaming implementation hasn't connected yet).

CallStateActive 

The contact being called has accepted the call, and discourse between at least two parties should now be possible.

CallStateEnded 

The call has ended, either via normal termination or an error.

_CallStatePadding 

Enumerated type generated from the specification.

A simple representation of the reason for a change in the call's state, which may be used by simple clients, or used as a fallback when the DBus_Reason member of a Call_State_Reason struct is not understood.

Enumerator
CallStateChangeReasonUnknown  We just don't know. Unknown values of this enum SHOULD also be treated like this.
CallStateChangeReasonProgressMade  Situation normal. Progress has been made in the setup/teardown of the call (and it didn't require any user interaction).
CallStateChangeReasonUserRequested 

The change was requested by the contact indicated by the Actor member of a Call_State_Reason struct.

The DBus_Reason SHOULD be the empty string if the call was terminated normally, but MAY be a non-empty error name to indicate error-like call termination reasons (kicked from a conference by a moderator, etc.).

CallStateChangeReasonForwarded 

The call was forwarded. If known, the handle of the contact the call was forwarded to will be indicated by the "forwarded-to" member of a CallStateDetails dictionnary in the CallStateChanged() signal.

CallStateChangeReasonRejected 

The CallState changed from Initialised or Ended (or a content's direction changed) because it was rejected by the remote user.

Corresponds to Rejected

CallStateChangeReasonNoAnswer 

The CallState changed from Initialised or Ended because the initiator ended the call before the receiver accepted it. With an incoming call this state change reason signifies a missed call, or one that was picked up elsewhere before it was picked up here.

Corresponds to NoAnswer or PickedUpElsewhere

CallStateChangeReasonInvalidContact 

The CallState changed because one of the addresses does not exist on the network.

Corresponds to DoesNotExist

CallStateChangeReasonPermissionDenied 

The CallState changed because the local user is not authorised.

Corresponds to PermissionDenied or InsufficientBalance

CallStateChangeReasonBusy 

The CallState changed from Initialised Ended because the receiver is busy (e.g. is already engaged in another call, and has not placed the initiator in a call-waiting queue).

Corresponds to Busy

CallStateChangeReasonInternalError 

There has been an unexpected error in either the CM or some other local component.

Corresponds to Confused or Media.StreamingError

CallStateChangeReasonServiceError 

There has been an unexpected error in the server or some other remote component.

Corresponds to ServiceConfused

CallStateChangeReasonNetworkError 

There has been a network error related to the CM or the signalling part of the call (compare and contrast: Streaming_Error).

Corresponds to NetworkError

CallStateChangeReasonMediaError 

Some aspect of the content is unsupported so has to be removed from the call.

Corresponds to Media.UnsupportedType or Media.CodecsIncompatible

CallStateChangeReasonConnectivityError 

It was not possible for the streaming implementation to connect to any of the users participating in this call or content. Corresponds to ConnectionFailed or ConnectionLost

_CallStateChangeReasonPadding 

Enumerated type generated from the specification.

Enumerator
ChannelContactSearchStateNotStarted 

The search has not started

ChannelContactSearchStateInProgress 

The search is in progress

ChannelContactSearchStateMoreAvailable 

The search has paused, but more results can be retrieved by calling More.

ChannelContactSearchStateCompleted 

The search has been completed

ChannelContactSearchStateFailed 

The search has failed

_ChannelContactSearchStatePadding 

Enumerated type generated from the specification.

Enumerator
FileTransferStateNone 

An invalid state type used as a null value. This value MUST NOT appear in the State property.

FileTransferStatePending 

The file transfer is waiting to be accepted/closed by the receiver. The receiver has to call AcceptFile, then wait for the state to change to Open and check the offset value.

FileTransferStateAccepted 

The receiver has accepted the transfer. The sender now has to call ProvideFile to actually start the transfer. The receiver should now wait for the state to change to Open and check the offset value.

FileTransferStateOpen 

The file transfer is open for traffic.

FileTransferStateCompleted 

The file transfer has been completed successfully.

FileTransferStateCancelled 

The file transfer has been cancelled.

_FileTransferStatePadding 

Enumerated type generated from the specification.

Enumerator
FileTransferStateChangeReasonNone 

No reason was specified.

FileTransferStateChangeReasonRequested 

The change in state was requested.

FileTransferStateChangeReasonLocalStopped 

The file transfer was cancelled by the local user.

FileTransferStateChangeReasonRemoteStopped 

The file transfer was cancelled by the remote user.

FileTransferStateChangeReasonLocalError 

The file transfer was cancelled because of a local error.

FileTransferStateChangeReasonRemoteError 

The file transfer was cancelled because of a remote error.

_FileTransferStateChangeReasonPadding 

Enumerated type generated from the specification.

Enumerator
FileHashTypeNone 

No hash.

FileHashTypeMD5 

MD5 digest as a string of 32 ASCII hex digits.

FileHashTypeSHA1 

SHA1 digest as a string of ASCII hex digits.

FileHashTypeSHA256 

SHA256 digest as a string of ASCII hex digits.

_FileHashTypePadding 

Enumerated type generated from the specification.

Enumerator
MediaStreamTypeAudio 

An audio stream

MediaStreamTypeVideo 

A video stream

_MediaStreamTypePadding 

Enumerated type generated from the specification.

Enumerator
MediaStreamStateDisconnected 

The stream is disconnected.

MediaStreamStateConnecting 

The stream is trying to connect.

MediaStreamStateConnected 

The stream is connected.

_MediaStreamStatePadding 

Enumerated type generated from the specification.

Enumerator
MediaStreamDirectionNone 

Media are not being sent or received

MediaStreamDirectionSend 

Media are being sent, but not received

MediaStreamDirectionReceive 

Media are being received, but not sent

MediaStreamDirectionBidirectional 

Media are being sent and received

_MediaStreamDirectionPadding 

Enumerated type generated from the specification.

Enumerator
ChannelTextSendErrorUnknown 

An unknown error occurred

ChannelTextSendErrorOffline 

The requested contact was offline

ChannelTextSendErrorInvalidContact 

The requested contact is not valid

ChannelTextSendErrorPermissionDenied 

The user does not have permission to speak on this channel

ChannelTextSendErrorTooLong 

The outgoing message was too long and was rejected by the server

ChannelTextSendErrorNotImplemented 

The channel doesn't support sending text messages to the requested contact

_ChannelTextSendErrorPadding 

Enumerated type generated from the specification.

The type of message.

Enumerator
ChannelTextMessageTypeNormal 

An ordinary chat message. Unknown types SHOULD be treated like this.

ChannelTextMessageTypeAction 

An action which might be presented to the user as "* <sender> <action>", such as an IRC CTCP ACTION (typically selected by the "/me" command). For example, the text of the message might be "drinks more coffee".

ChannelTextMessageTypeNotice 

A one-off or automated message not necessarily expecting a reply

ChannelTextMessageTypeAutoReply 

An automatically-generated reply message.

ChannelTextMessageTypeDeliveryReport 

A delivery report. This message type MUST NOT appear unless the channel supports the Messages interface; see Message_Part for the format that delivery reports must take.

_ChannelTextMessageTypePadding 

Enumerated type generated from the specification.

Enumerator
TubeTypeDBus 

The tube is D-Bus tube as described by the org.freedesktop.Telepathy.Channel.Type.DBusTube interface.

TubeTypeStream 

The tube is stream tube as described by the org.freedesktop.Telepathy.Channel.Type.StreamTube interface.

_TubeTypePadding 

Enumerated type generated from the specification.

Enumerator
TubeStateLocalPending 

The tube is waiting to be accepted/closed locally.

TubeStateRemotePending 

The tube is waiting to be accepted/closed remotely.

TubeStateOpen 

The tube is open for traffic.

_TubeStatePadding 

Enumerated type generated from the specification.

A reason why captcha authentication was aborted by the client.

Enumerator
CaptchaCancelReasonUserCancelled 

The user aborted the authentication. If this is used, the CaptchaError SHOULD be set to Cancelled

CaptchaCancelReasonNotSupported 

The Handler doesn't support the given/required captcha types. If this is used, the CaptchaError SHOULD be set to CaptchaNotSupported. This SHOULD also be used if Close is called before CancelCaptcha. If no Handler supports captcha channels, the ChannelDispatcher will just call Close, because it has no knowledge of specific channel types.

CaptchaCancelReasonServiceConfused 

The Handler doesn't understand the captcha data received. The challenger may be sending gibberish. If this is used, the CaptchaError SHOULD be set to ServiceConfused.

_CaptchaCancelReasonPadding 

Enumerated type generated from the specification.

Enumerator
CaptchaStatusLocalPending 

The challenge/response exchange is in progress and waiting for a local action. Call AnswerCaptchas to go to the Remote_Pending state, or call CancelCaptcha followed by Close to give up.

CaptchaStatusRemotePending 

The challenge/response exchange is in progress and waiting for a response from the server. Wait for a reply from the server, which will result in the Succeeded, Try_Again, or Failed state, or call CancelCaptcha followed by Close to give up.

CaptchaStatusSucceeded 

Everyone is happy. Connection to the server will proceed as soon as this state is reached. There is nothing useful to do in this state except to call Close to close the channel.

CaptchaStatusTryAgain 

The server has indicated an authentication failure. Call GetCaptchas again to get a new captcha, or CancelCaptcha followed by Close to give up.

CaptchaStatusFailed 

Authentication has failed in some way. There is nothing useful to do in this state except to close the channel with Close.

_CaptchaStatusPadding 

Enumerated type generated from the specification.

Enumerator
ChannelChatStateGone 

The contact has effectively ceased participating in the chat.

ChannelChatStateInactive 

The contact has not been active for some time.

ChannelChatStateActive 

The contact is actively participating in the chat.

ChannelChatStatePaused 

The contact has paused composing a message.

ChannelChatStateComposing 

The contact is composing a message to be sent to the chat.

_ChannelChatStatePadding 

Enumerated type generated from the specification.

Enumerator
DTMFEventDigit0 

0

DTMFEventDigit1 

1

DTMFEventDigit2 

2

DTMFEventDigit3 

3

DTMFEventDigit4 

4

DTMFEventDigit5 

5

DTMFEventDigit6 

6

DTMFEventDigit7 

7

DTMFEventDigit8 

8

DTMFEventDigit9 

9

DTMFEventAsterisk 
DTMFEventHash 

#

DTMFEventLetterA 

A

DTMFEventLetterB 

B

DTMFEventLetterC 

C

DTMFEventLetterD 

D

_DTMFEventPadding 

Enumerated type generated from the specification.

The reason for a set of handles to move to one of Members , LocalPendingMembers or RemotePendingMembers , or to be removed from the group. A client may supply a reason when attempting to remove members from a group with RemoveMembersWithReason() , and reasons are supplied by the CM when emitting MembersChanged() and MembersChangedDetailed() . Some reason codes have different meanings depending on the Actor in a MembersChanged signal.

Enumerator
ChannelGroupChangeReasonNone 

No reason was provided for this change.

In particular, this reason SHOULD be used when representing users joining a named chatroom in the usual way, users leaving a chatroom by their own request, and normal termination of a StreamedMedia call by the remote user.

If the SelfHandle is removed from a group for this reason and the actor is not the SelfHandle, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Terminated.

If the SelfHandle is removed from a group for this reason and the actor is also the SelfHandle, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cancelled.

ChannelGroupChangeReasonOffline 

The change is due to a user going offline. Also used when user is already offline, but this wasn't known previously.

If a one-to-one ChannelTypeStreamedMediaInterface call fails because the contact being called is offline, the connection manager SHOULD indicate this by removing both the SelfHandle and the other contact's handle from the Group interface with reason Offline.

For 1-1 calls, the call terminates as a result of removing the remote contact, so the SelfHandle should be removed at the same time as the remote contact and for the same reason.

If a handle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Offline.

ChannelGroupChangeReasonKicked 

The change is due to a kick operation.

If the SelfHandle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Channel.Kicked.

ChannelGroupChangeReasonBusy 

The change is due to a busy indication.

If a one-to-one ChannelTypeStreamedMediaInterface call fails because the contact being called is busy, the connection manager SHOULD indicate this by removing both the SelfHandle and the other contact's handle from the Group interface with reason Busy.

For 1-1 calls, the call terminates as a result of removing the remote contact, so the SelfHandle should be removed at the same time as the remote contact and for the same reason.

If the SelfHandle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Busy.

ChannelGroupChangeReasonInvited 

The change is due to an invitation. This reason SHOULD only be used when contacts are added to the remote-pending set (to indicate that the contact has been invited) or to the members (to indicate that the contact has accepted the invitation). Otherwise, what would it mean?

ChannelGroupChangeReasonBanned 

The change is due to a kick+ban operation.

If the SelfHandle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Channel.Banned.

ChannelGroupChangeReasonError 

The change is due to an error occurring.

ChannelGroupChangeReasonInvalidContact 

The change is because the requested contact does not exist.

For instance, if the user invites a nonexistent contact to a chatroom or attempts to call a nonexistent contact, this could be indicated by the CM adding that contact's handle to remote-pending for reason None or Invited, then removing it for reason Invalid_Contact. In the case of a 1-1 StreamedMedia call, the CM SHOULD remove the self handle from the Group in the same signal.

For 1-1 calls, the call terminates as a result of removing the remote contact, so the SelfHandle should be removed at the same time as the remote contact and for the same reason.

If a contact is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.DoesNotExist.

ChannelGroupChangeReasonNoAnswer 

The change is because the requested contact did not respond.

If a one-to-one ChannelTypeStreamedMediaInterface call fails because the contact being called did not respond, or the local user did not respond to an incoming call, the connection manager SHOULD indicate this by removing both the SelfHandle and the other contact's handle from the Group interface with reason No_Answer.

Documenting existing practice.

If a contact is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.NoAnswer.

ChannelGroupChangeReasonRenamed 

The change is because a contact's unique identifier changed. There must be exactly one handle in the removed set and exactly one handle in one of the added sets. The org.freedesktop.Telepathy.Connection.Interface.Renaming.Renamed signal on the org.freedesktop.Telepathy.Connection.Interface.Renaming interface will have been emitted for the same handles, shortly before this MembersChanged() signal is emitted.

ChannelGroupChangeReasonPermissionDenied 

The change is because there was no permission to contact the requested handle.

If a contact is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.PermissionDenied.

ChannelGroupChangeReasonSeparated 

If members are removed with this reason code, the change is because the group has split into unconnected parts which can only communicate within themselves (e.g. netsplits on IRC use this reason code).

If members are added with this reason code, the change is because unconnected parts of the group have rejoined. If this channel carries messages (e.g. ChannelTypeTextInterface or ChannelTypeTubesInterface channels) applications must assume that the contacts being added are likely to have missed some messages as a result of the separation, and that the contacts in the group are likely to have missed some messages from the contacts being added.

Note that from the added contacts' perspective, they have been in the group all along, and the contacts we indicate to be in the group (including the local user) have just rejoined the group with reason Separated. Application protocols in Tubes should be prepared to cope with this situation.

The SelfHandle SHOULD NOT be removed from channels with this reason.

_ChannelGroupChangeReasonPadding 

Enumerated type generated from the specification.

The hold state of a channel.

Enumerator
LocalHoldStateUnheld 

All streams are unheld (the call is active). New channels SHOULD have this hold state.

LocalHoldStateHeld 

All streams are held (the call is on hold)

LocalHoldStatePendingHold 

The connection manager is attempting to move to state Held, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are on hold. Examining the Hold state of Call Contents (if applicable) may provide more useful information.

LocalHoldStatePendingUnhold 

The connection manager is attempting to move to state Unheld, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are on hold. Examining the Hold state of Call Contents (if applicable) may provide more useful information.

_LocalHoldStatePadding 

Enumerated type generated from the specification.

The reason for a change to the Local_Hold_State. Clients MUST treat unknown values as equivalent to Local_Hold_State_Reason_None.

Enumerator
LocalHoldStateReasonNone 

The reason cannot be described by any of the predefined values (connection managers SHOULD avoid this reason, but clients MUST handle it gracefully)

LocalHoldStateReasonRequested 

The change is in response to a user request

LocalHoldStateReasonResourceNotAvailable 

The change is because some resource was not available

_LocalHoldStateReasonPadding 

Enumerated type generated from the specification.

The status of a message as indicated by a delivery report. If this enum is extended in future specifications, this should only be to add new, non-overlapping conditions (i.e. all failures should still be signalled as either Temporarily_Failed or Permanently_Failed). If additional detail is required (e.g. distinguishing between the various types of permanent failure) this will be done using additional Delivery_Report_Header_Keys.

Enumerator
DeliveryStatusUnknown 

The message's disposition is unknown. Clients SHOULD consider all messages to have status Delivery_Status_Unknown unless otherwise specified; connection managers SHOULD NOT signal this delivery status explicitly.

DeliveryStatusDelivered 

The message has been delivered to the intended recipient.

DeliveryStatusTemporarilyFailed 

Delivery of the message has failed. Clients SHOULD notify the user, but MAY automatically try sending another copy of the message. Similar to errors with type="wait" in XMPP; analogous to 4xx errors in SMTP.

DeliveryStatusPermanentlyFailed 

Delivery of the message has failed. Clients SHOULD NOT try again unless by specific user action. If the user does not modify the message or alter configuration before re-sending, this error is likely to happen again. Similar to errors with type="cancel", type="modify" or type="auth" in XMPP; analogous to 5xx errors in SMTP.

DeliveryStatusAccepted 

An intermediate server has accepted the message but the message has not been yet delivered to the ultimate recipient. The connection manager might send a Failed report or Delivered report later. Similar to "202 Accepted" success code in SIP; analogous to 251 and 252 responses in SMTP.

DeliveryStatusRead 

The message has been read by the intended recipient.

DeliveryStatusDeleted 

The message has been deleted by the intended recipient. This MAY be signalled on its own if the message is deleted without being read, or after Read if the message was read before being deleted.

_DeliveryStatusPadding 

Enumerated type generated from the specification.

A reason why SASL authentication was aborted by the client.

Enumerator
SASLAbortReasonInvalidChallenge 

The server sent an invalid challenge or data.

SASLAbortReasonUserAbort 

The user aborted the authentication.

_SASLAbortReasonPadding 

Enumerated type generated from the specification.

Enumerator
SASLStatusNotStarted 

The initial state. The Handler SHOULD either call AbortSASL, or connect to the NewChallenge signal then call StartMechanism or StartMechanismWithData.

SASLStatusInProgress 

The challenge/response exchange is in progress. The Handler SHOULD call either Respond or AcceptSASL exactly once per emission of NewChallenge, or call AbortSASL at any time.

SASLStatusServerSucceeded 

The server has indicated successful authentication, and the connection manager is waiting for confirmation from the Handler. The Handler must call either AcceptSASL or AbortSASL to indicate whether it considers authentication to have been successful.

SASLStatusClientAccepted 

The Handler has indicated successful authentication, and the connection manager is waiting for confirmation from the server. The state will progress to either Succeeded or Server_Failed when confirmation is received.

SASLStatusSucceeded 

Everyone is happy (the server sent success, and the client has called AcceptSASL). Connection to the server will proceed as soon as this state is reached. The Handler SHOULD call Close to close the channel.

SASLStatusServerFailed 

The server has indicated an authentication failure. If CanTryAgain is true, the client may try to authenticate again, by calling StartMechanism or StartMechanismWithData again. Otherwise, it should give up completely, by calling Close on the channel.

SASLStatusClientFailed 

The client has indicated an authentication failure. The possible actions are the same as for Server_Failed.

_SASLStatusPadding 

Enumerated type generated from the specification.

Enumerator
TubeChannelStateLocalPending 

The initiator offered the tube. The tube is waiting to be accepted/closed locally. If the client accepts the tube, the tube's state will be Open.

TubeChannelStateRemotePending 

The tube is waiting to be accepted/closed remotely. If the recipient accepts the tube, the tube's state will be Open.

TubeChannelStateOpen 

The initiator offered the tube and the recipient accepted it. The tube is open for traffic. The tube's state stays in this state until it is closed.

TubeChannelStateNotOffered 

The tube channel has been requested but the tube is not yet offered. The client should offer the tube to the recipient and the tube's state will be Remote_Pending. The method used to offer the tube depends on the tube type.

_TubeChannelStatePadding 

Enumerated type generated from the specification.

Enumerator
SocketAddressTypeUnix 

A Unix socket. The address variant contains a byte-array, signature 'ay', containing the path of the socket.

SocketAddressTypeAbstractUnix 

An abstract Unix socket. The address variant contains a byte-array, signature 'ay', containing the path of the socket including the leading null byte.

SocketAddressTypeIPv4 

An IPv4 socket. The address variant contains a Socket_Address_IPv4, i.e. a structure with signature (sq) in which the string is an IPv4 dotted-quad address literal (and must not be a DNS name), while the 16-bit unsigned integer is the port number.

SocketAddressTypeIPv6 

An IPv6 socket. The address variant contains a Socket_Address_IPv6, i.e. a structure with signature (sq) in which the string is an IPv6 address literal as specified in RFC2373 (and must not be a DNS name), while the 16-bit unsigned integer is the port number.

_SocketAddressTypePadding 

Enumerated type generated from the specification.

Enumerator
SocketAccessControlLocalhost 

The IP or Unix socket can be accessed by any local user (e.g. a Unix socket that accepts all local connections, or an IP socket listening on 127.0.0.1 (or ::1) or rejecting connections not from that address). The associated variant must be ignored. For a D-Bus tube, this means that the "same user" access control typically provided by default in D-Bus implementations SHOULD be disabled. If the socket is only available to local users (e.g. a Unix socket, an IPv4 socket bound to 127.0.0.1, or an IPv6 socket bound to ::1), the ANONYMOUS authentication mechanism MAY be enabled.

SocketAccessControlPort 

May only be used on IP sockets, and only for Stream tubes. The associated variant must contain a struct Socket_Address_IPv4 (or Socket_Address_IPv6) containing the string form of an IP address of the appropriate version, and a port number. The socket can only be accessed if the connecting process has that address and port number; all other connections will be rejected.

SocketAccessControlNetmask 

May only be used on IP sockets. The associated variant must contain a struct Socket_Netmask_IPv4 (or Socket_Netmask_IPv6) with signature (sy), containing the string form of an IP address of the appropriate version, and a prefix length "n". The socket can only be accessed if the first n bits of the connecting address match the first n bits of the given address.

SocketAccessControlCredentials 

The high-level meaning of this access control type is that only the same user (e.g. same numeric Unix uid) is allowed to interact with the tube. Exactly how this is achieved varies by channel type.

For ChannelTypeStreamTubeInterface channels, this access control type may only be used on UNIX sockets. The connecting process must send a byte when it first connects, which is not considered to be part of the data stream. If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass credentials over sockets, the connecting process must do so if possible; if not, it must still send the byte, without any attached credentials. (This mechanism is very similar to the first byte of a D-Bus connection, except that in D-Bus the byte is always zero, whereas in Tubes it can be nonzero.)

For ChannelTypeDBusTubeInterface channels, this access control type may be used on any type of socket, and there is no extra byte added by Telepathy at the beginning of the stream: all bytes in the stream are part of the D-Bus tube connection. The connecting process should prove its identity via any of the SASL authentication mechanisms usually used for D-Bus (in typical D-Bus implementations this involves either sending and receiving credentials as above, or demonstrating the ability to write to a file in the user's home directory).

In either case, the listening process will disconnect the connection unless it can determine by OS-specific means that the connecting process has the same user ID as the listening process.

In either tube type, the associated variant must be ignored.

_SocketAccessControlPadding 

Enumerated type generated from the specification.

Enumerator
MediaStreamErrorUnknown 

An unknown error occured.

MediaStreamErrorEOS 

The end of the stream was reached.

MediaStreamErrorCodecNegotiationFailed 

There are no common codecs between the local side and the other particpants in the call. The possible codecs are not signalled here: the streaming implementation is assumed to report them in an implementation-dependent way, e.g. Farsight should use GstMissingElement.

MediaStreamErrorConnectionFailed 

A network connection for the Media could not be established or was lost.

MediaStreamErrorNetworkError 

There was an error in the networking stack (other than the connection failure).

MediaStreamErrorNoCodecs 

There are no installed codecs for this media type.

MediaStreamErrorInvalidCMBehavior 

The CM is doing something wrong.

MediaStreamErrorMediaError 

There was an error in the media processing stack.

_MediaStreamErrorPadding 

Enumerated type generated from the specification.

Enumerator
MediaStreamBaseProtoUDP 

UDP (User Datagram Protocol)

MediaStreamBaseProtoTCP 

TCP (Transmission Control Protocol)

_MediaStreamBaseProtoPadding 

Enumerated type generated from the specification.

Enumerator
MediaStreamTransportTypeLocal 

A local address

MediaStreamTransportTypeDerived 

An external address derived by a method such as STUN

MediaStreamTransportTypeRelay 

An external stream relay

_MediaStreamTransportTypePadding 

Enumerated type generated from the specification.

Enumerator
DebugLevelError 

Log level for errors. Error messages are always fatal, resulting in the service terminating after something completely unexpected occurred.

DebugLevelCritical 

Log level for critical messages. Critical messages are messages that the service might predict and it is up to the service itself to decide whether to terminate following a critical message.

DebugLevelWarning 

Log level for warnings.

DebugLevelMessage 

Log level for messages.

DebugLevelInfo 

Log level for information messages.

DebugLevelDebug 

Log level for debug messages.

_DebugLevelPadding 

Enumerated type generated from the specification.

The possible states for a TLSCertificate object.

Enumerator
TLSCertificateStatePending 

The certificate is currently waiting to be accepted or rejected.

TLSCertificateStateAccepted 

The certificate has been verified.

TLSCertificateStateRejected 

The certificate has been rejected.

_TLSCertificateStatePadding 

Enumerated type generated from the specification.

Possible reasons to reject a TLS certificate.

Enumerator
TLSCertificateRejectReasonUnknown 

The certificate has been rejected for another reason not listed in this enumeration.

TLSCertificateRejectReasonUntrusted 

The certificate is not trusted.

TLSCertificateRejectReasonExpired 

The certificate is expired.

TLSCertificateRejectReasonNotActivated 

The certificate is not active yet.

TLSCertificateRejectReasonFingerprintMismatch 

The certificate provided does not have the expected fingerprint.

TLSCertificateRejectReasonHostnameMismatch 

The hostname certified does not match the provided one.

TLSCertificateRejectReasonSelfSigned 

The certificate is self-signed.

TLSCertificateRejectReasonRevoked 

The certificate has been revoked.

TLSCertificateRejectReasonInsecure 

The certificate uses an insecure cipher algorithm, or is cryptographically weak.

TLSCertificateRejectReasonLimitExceeded 

The length in bytes of the certificate, or the depth of the certificate chain exceed the limits imposed by the crypto library.

_TLSCertificateRejectReasonPadding 

Enumerated type generated from the specification.

A packetization method that can be used for a content.

Enumerator
CallContentPacketizationTypeRTP  Real-time Transport Protocol, as documented by RFC 3550.
CallContentPacketizationTypeRaw  Raw media.
CallContentPacketizationTypeMSNWebcam  MSN webcam. This is the video-only one-way type which was used in earlier versions of WLM. Although no longer used, modern WLM clients still support the MSN webcam protocol.
_CallContentPacketizationTypePadding 

Enumerated type generated from the specification.

The disposition of this content, which defines whether to automatically start sending data on the streams when Accept is called on the channel.

Enumerator
CallContentDispositionNone  The content has no specific disposition.
CallContentDispositionInitial 

The content was initially part of the call. When ChannelTypeCallInterface::Accept() is called on the channel, all streams of this content with CallStreamInterface::LocalSendingState set to Pending_Send will be moved to Sending as if CallStreamInterface::SetSending() (True) had been called.

_CallContentDispositionPadding 

Enumerated type generated from the specification.

Enumerator
RCPTXRRTTModeAll 

Both RTP data senders and data receivers MAY send DLRR blocks.

RCPTXRRTTModeSender 

Only active RTP senders MAY send DLRR blocks, i.e., non RTP senders SHALL NOT send DLRR blocks.

_RCPTXRRTTModePadding 

Enumerated type generated from the specification.

The type of SendingState and ReceivingState .
Enumerator
StreamFlowStateStopped 

No data is flowing (or expected to be flowing) at this time.

StreamFlowStatePendingStart 

The streaming implementation has been told to start or receiving, but has not yet indicated that it is doing so.

StreamFlowStatePendingStop 

The streaming implementation has been told to stop sending or receiving data, but it has not yet indicated that it has done so.

StreamFlowStateStarted 

The streaming implementation is successfully sending or receiving data, and everything is going swimmingly.

_StreamFlowStatePadding 

Enumerated type generated from the specification.

The network topology that an IP candidate represents. This can sometimes be used to infer what kind of performance characteristics (latency, bandwith, etc) can be expected of connections made to this candidate.

Enumerator
CallStreamCandidateTypeNone 

This is not an IP candidate. This is a reserved value, and should not be seen on the bus.

CallStreamCandidateTypeHost 

This candidate represents a direct connection to the host, as its address is taken directly the host's IP stack.

CallStreamCandidateTypeServerReflexive 

This candidate probably represents a connection to the host through a NAT device, as its address was discovered by sending a binding request to a STUN server or similar.

CallStreamCandidateTypePeerReflexive 

This candidate probably represents a good route between the host and its peer, as its address was discovered by sending a STUN binding request to one of the candidates advertised by the peer.

CallStreamCandidateTypeRelay 

This candidate represents the address of a relay server (usually somewhere on the public internet). This candidate is the most likely to work, but all media will go via a relay server, so latency is likely to be higher than other types of candidate.

CallStreamCandidateTypeMulticast 

This candidate represents a Multicast group. This value should only appear if the Stream's Transport is set to Multicast.

_CallStreamCandidateTypePadding 

Enumerated type generated from the specification.

Media streams can use more than one UDP socket: one for RTP (data) and one for RTCP (control). Most of the time, they are adjacent to each other, but some protocols (xmpp) signal each port separately.
Enumerator
StreamComponentUnknown 

The stream transport type is unknown or not applicable (should not appear over dbus).

StreamComponentData 

This is the high-traffic data socket, containing the audio/video data for the stream.

StreamComponentControl 

This is the low-traffic control socket, usually containing feedback about packet loss etc.

_StreamComponentPadding 

Enumerated type generated from the specification.

A transport that can be used for streaming.
Enumerator
StreamTransportTypeUnknown 

The stream transport type is unknown or not applicable (for streams that do not have a configurable transport).

StreamTransportTypeRawUDP 

Raw UDP, with or without STUN. All streaming clients are assumed to support this transport, so there is no handler capability token for it in the Call1 interface. [This corresponds to "none" or "stun" in the old Media.StreamHandler interface.]

StreamTransportTypeICE 

Interactive Connectivity Establishment, as defined by RFC 5245. Note that this value covers ICE-UDP only. [This corresponds to "ice-udp" in the old Media.StreamHandler interface.]

StreamTransportTypeGTalkP2P 

Google Talk peer-to-peer connectivity establishment, as implemented by libjingle 0.3. [This corresponds to "gtalk-p2p" in the old Media.StreamHandler interface.]

StreamTransportTypeWLM2009 

The transport used by Windows Live Messenger 2009 or later, which resembles ICE draft 19. [This corresponds to "wlm-2009" in the old Media.StreamHandler interface.]

StreamTransportTypeSHM 

Shared memory transport, as implemented by the GStreamer shmsrc and shmsink plugins.

StreamTransportTypeMulticast 

Multicast transport.

_StreamTransportTypePadding 

Enumerated type generated from the specification.

Enum indicating whether a contact is sending media.

Enumerator
SendingStateNone 

The contact is not sending media and has not been asked to do so.

SendingStatePendingSend 

The contact has been asked to start sending media.

SendingStateSending 

The contact is sending media.

SendingStatePendingStopSending 

The contact has been asked to stop sending media.

_SendingStatePadding 

Enumerated type generated from the specification.

Represents the state of ICE negotiation for a single component of a stream to an endpoint.

Enumerator
StreamEndpointStateConnecting 

Candidate gathering and connectivity checks are in progress.

StreamEndpointStateProvisionallyConnected 

The streaming implementation has found at least one working candidate pair. It is possible to send media at this point, but the controlling side has yet to negotiate the final candidates for use in this call.

StreamEndpointStateFullyConnected 

This component of the stream is connected, and an updated offer has been sent and accepted (finalising the candidates to be used for the call). This should be set by the CM in response to AcceptSelectedCandidatePair.

StreamEndpointStateExhaustedCandidates 

The streaming implementation has tried connecting to all of the available candidates and none of them have connected. This is distinct from Failed, because the CM might be able to provide more candidates later (more likely in XMPP than SIP).

StreamEndpointStateFailed 

The CM and streaming implementation are in agreement that it is impossible to connect to this endpoint. This value should only be set by the CM.

_StreamEndpointStatePadding 

Enumerated type generated from the specification.

The mute state of (at least part of) the call. See LocalMuteState for more details.

Enumerator
LocalMuteStateUnmuted 

All streams are unmuted (the call is active). New channels SHOULD have this mute state.

LocalMuteStateMuted 

All streams are Muted.

LocalMuteStatePendingMute 

The connection manager is attempting to move to state Muted, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are muted. Examining the Mute state of Call Contents (if applicable) may provide more useful information.

LocalMuteStatePendingUnmute 

The connection manager is attempting to move to state Unmuted, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are muted. Examining the Mute state of Call Contents or Streams may provide more useful information.

LocalMuteStatePartiallyMuted 

Some of the constituent Streams are Muted. This state only makes sense on Call Channels or Contents. Examining the Mute state of Call Contents or Streams should provide more useful information.

_LocalMuteStatePadding 

Variable Documentation

const int Tp::NUM_HANDLE_TYPES

1 higher than the highest valid value of HandleType.

const int Tp::NUM_CONNECTION_STATUSES

1 higher than the highest valid value of ConnectionStatus.

const int Tp::NUM_CONNECTION_STATUS_REASONS

1 higher than the highest valid value of ConnectionStatusReason.

const int Tp::NUM_CONTACT_LIST_STATES

1 higher than the highest valid value of ContactListState.

const int Tp::NUM_SUBSCRIPTION_STATES

1 higher than the highest valid value of SubscriptionState.

const int Tp::NUM_CONTACT_METADATA_STORAGE_TYPES

1 higher than the highest valid value of ContactMetadataStorageType.

const int Tp::NUM_HTTP_METHODS

1 higher than the highest valid value of HTTPMethod.

const int Tp::NUM_SERVICE_POINT_TYPES

1 higher than the highest valid value of ServicePointType.

const int Tp::NUM_CONNECTION_PRESENCE_TYPES

1 higher than the highest valid value of ConnectionPresenceType.

const int Tp::NUM_ACCESS_CONTROL_TYPES

1 higher than the highest valid value of AccessControlType.

const int Tp::NUM_RICH_PRESENCE_ACCESS_CONTROL_TYPES

1 higher than the highest valid value of RichPresenceAccessControlType.

const int Tp::NUM_CALL_STATES

1 higher than the highest valid value of CallState.

const int Tp::NUM_CALL_STATE_CHANGE_REASONS

1 higher than the highest valid value of CallStateChangeReason.

const int Tp::NUM_CHANNEL_CONTACT_SEARCH_STATES

1 higher than the highest valid value of ChannelContactSearchState.

const int Tp::NUM_FILE_TRANSFER_STATES

1 higher than the highest valid value of FileTransferState.

const int Tp::NUM_FILE_TRANSFER_STATE_CHANGE_REASONS

1 higher than the highest valid value of FileTransferStateChangeReason.

const int Tp::NUM_FILE_HASH_TYPES

1 higher than the highest valid value of FileHashType.

const int Tp::NUM_MEDIA_STREAM_TYPES

1 higher than the highest valid value of MediaStreamType.

const int Tp::NUM_MEDIA_STREAM_STATES

1 higher than the highest valid value of MediaStreamState.

const int Tp::NUM_MEDIA_STREAM_DIRECTIONS

1 higher than the highest valid value of MediaStreamDirection.

const int Tp::NUM_CHANNEL_TEXT_SEND_ERRORS

1 higher than the highest valid value of ChannelTextSendError.

const int Tp::NUM_CHANNEL_TEXT_MESSAGE_TYPES

1 higher than the highest valid value of ChannelTextMessageType.

const int Tp::NUM_TUBE_TYPES

1 higher than the highest valid value of TubeType.

const int Tp::NUM_TUBE_STATES

1 higher than the highest valid value of TubeState.

const int Tp::NUM_CAPTCHA_CANCEL_REASONS

1 higher than the highest valid value of CaptchaCancelReason.

const int Tp::NUM_CAPTCHA_STATUSES

1 higher than the highest valid value of CaptchaStatus.

const int Tp::NUM_CHANNEL_CHAT_STATES

1 higher than the highest valid value of ChannelChatState.

const int Tp::NUM_DTMF_EVENTS

1 higher than the highest valid value of DTMFEvent.

const int Tp::NUM_CHANNEL_GROUP_CHANGE_REASONS

1 higher than the highest valid value of ChannelGroupChangeReason.

const int Tp::NUM_LOCAL_HOLD_STATES

1 higher than the highest valid value of LocalHoldState.

const int Tp::NUM_LOCAL_HOLD_STATE_REASONS

1 higher than the highest valid value of LocalHoldStateReason.

const int Tp::NUM_DELIVERY_STATUSES

1 higher than the highest valid value of DeliveryStatus.

const int Tp::NUM_SASL_ABORT_REASONS

1 higher than the highest valid value of SASLAbortReason.

const int Tp::NUM_SASL_STATUSES

1 higher than the highest valid value of SASLStatus.

const int Tp::NUM_TUBE_CHANNEL_STATES

1 higher than the highest valid value of TubeChannelState.

const int Tp::NUM_SOCKET_ADDRESS_TYPES

1 higher than the highest valid value of SocketAddressType.

const int Tp::NUM_SOCKET_ACCESS_CONTROLS

1 higher than the highest valid value of SocketAccessControl.

const int Tp::NUM_MEDIA_STREAM_ERRORS

1 higher than the highest valid value of MediaStreamError.

const int Tp::NUM_MEDIA_STREAM_BASE_PROTOS

1 higher than the highest valid value of MediaStreamBaseProto.

const int Tp::NUM_MEDIA_STREAM_TRANSPORT_TYPES

1 higher than the highest valid value of MediaStreamTransportType.

const int Tp::NUM_DEBUG_LEVELS

1 higher than the highest valid value of DebugLevel.

const int Tp::NUM_TLS_CERTIFICATE_STATES

1 higher than the highest valid value of TLSCertificateState.

const int Tp::NUM_TLS_CERTIFICATE_REJECT_REASONS

1 higher than the highest valid value of TLSCertificateRejectReason.

const int Tp::NUM_CALL_CONTENT_PACKETIZATION_TYPES

1 higher than the highest valid value of CallContentPacketizationType.

const int Tp::NUM_CALL_CONTENT_DISPOSITIONS

1 higher than the highest valid value of CallContentDisposition.

const int Tp::NUM_RCPT_XR_RTT_MODES

1 higher than the highest valid value of RCPTXRRTTMode.

const int Tp::NUM_STREAM_FLOW_STATES

1 higher than the highest valid value of StreamFlowState.

const int Tp::NUM_CALL_STREAM_CANDIDATE_TYPES

1 higher than the highest valid value of CallStreamCandidateType.

const int Tp::NUM_STREAM_COMPONENTS

1 higher than the highest valid value of StreamComponent.

const int Tp::NUM_STREAM_TRANSPORT_TYPES

1 higher than the highest valid value of StreamTransportType.

const int Tp::NUM_SENDING_STATES

1 higher than the highest valid value of SendingState.

const int Tp::NUM_STREAM_ENDPOINT_STATES

1 higher than the highest valid value of StreamEndpointState.

const int Tp::NUM_LOCAL_MUTE_STATES

1 higher than the highest valid value of LocalMuteState.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00393.html0000644000175100017520000026533712530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::Client::MediaStreamHandlerInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::MediaStreamHandlerInterface Class Reference

#include <TelepathyQt/MediaStreamHandler>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply CodecChoice (uint codecID, int timeout=-1)
 
QDBusPendingReply Error (uint errorCode, const QString &message, int timeout=-1)
 
QDBusPendingReply NativeCandidatesPrepared (int timeout=-1)
 
QDBusPendingReply NewActiveCandidatePair (const QString &nativeCandidateID, const QString &remoteCandidateID, int timeout=-1)
 
QDBusPendingReply NewActiveTransportPair (const QString &nativeCandidateID, const Tp::MediaStreamHandlerTransport &nativeTransport, const QString &remoteCandidateID, const Tp::MediaStreamHandlerTransport &remoteTransport, int timeout=-1)
 
QDBusPendingReply NewNativeCandidate (const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports, int timeout=-1)
 
QDBusPendingReply Ready (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
 
QDBusPendingReply SetLocalCodecs (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
 
QDBusPendingReply StreamState (uint state, int timeout=-1)
 
QDBusPendingReply SupportedCodecs (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
 
QDBusPendingReply CodecsUpdated (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)
 
QDBusPendingReply HoldState (bool held, int timeout=-1)
 
QDBusPendingReply UnholdFailure (int timeout=-1)
 
QDBusPendingReply SupportedFeedbackMessages (const Tp::RTCPFeedbackMessageMap &messages, int timeout=-1)
 
QDBusPendingReply SupportedHeaderExtensions (const Tp::RTPHeaderExtensionsList &headerExtensions, int timeout=-1)
 

Signals

void AddRemoteCandidate (const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports)
 
void Close ()
 
void RemoveRemoteCandidate (const QString &candidateID)
 
void SetActiveCandidatePair (const QString &nativeCandidateID, const QString &remoteCandidateID)
 
void SetRemoteCandidateList (const Tp::MediaStreamHandlerCandidateList &remoteCandidates)
 
void SetRemoteCodecs (const Tp::MediaStreamHandlerCodecList &codecs)
 
void SetStreamPlaying (bool playing)
 
void SetStreamSending (bool sending)
 
void StartTelephonyEvent (uchar event)
 
void StartNamedTelephonyEvent (uchar event, uint codecID)
 
void StartSoundTelephonyEvent (uchar event)
 
void StopTelephonyEvent ()
 
void SetStreamHeld (bool held)
 
void SetRemoteFeedbackMessages (const Tp::RTCPFeedbackMessageMap &messages)
 
void SetRemoteHeaderExtensions (const Tp::RTPHeaderExtensionsList &headerExtensions)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 MediaStreamHandlerInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 MediaStreamHandlerInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 MediaStreamHandlerInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertySTUNServers () const
 
Tp::PendingVariantrequestPropertyCreatedLocally () const
 
Tp::PendingVariantrequestPropertyNATTraversal () const
 
Tp::PendingVariantrequestPropertyRelayInfo () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Media.StreamHandler".

Constructor & Destructor Documentation

Tp::Client::MediaStreamHandlerInterface::MediaStreamHandlerInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a MediaStreamHandlerInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::MediaStreamHandlerInterface::MediaStreamHandlerInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a MediaStreamHandlerInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::MediaStreamHandlerInterface::MediaStreamHandlerInterface ( Tp::DBusProxy proxy)

Creates a MediaStreamHandlerInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::MediaStreamHandlerInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Media.StreamHandler", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::MediaStreamHandlerInterface::requestPropertySTUNServers ( ) const
inline

Asynchronous getter for the remote object property STUNServers of type Tp::SocketAddressIPList.

The IP addresses of possible STUN servers to use for NAT traversal, as dotted-quad IPv4 address literals or RFC2373 IPv6 address literals. This property cannot change once the stream has been created, so there is no change notification. The IP addresses MUST NOT be given as DNS hostnames. High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP to make life easier for streaming implementations.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::MediaStreamHandlerInterface::requestPropertyCreatedLocally ( ) const
inline

Asynchronous getter for the remote object property CreatedLocally of type bool.

True if we were the creator of this stream, false otherwise. This information is needed for some nat traversal mechanisms, such as ICE-UDP, where the creator gets the role of the controlling agent.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::MediaStreamHandlerInterface::requestPropertyNATTraversal ( ) const
inline

Asynchronous getter for the remote object property NATTraversal of type QString.

The transport (NAT traversal technique) to be used for this stream. Well-known values include:

none
Raw UDP, with or without STUN, should be used. If the STUNServers property is non-empty, STUN SHOULD be used.
stun
A deprecated synonym for 'none'.
gtalk-p2p
Google Talk peer-to-peer connectivity establishment should be used, as implemented in libjingle 0.3.
ice-udp
Interactive Connectivity Establishment should be used, as defined by the IETF MMUSIC working group.
wlm-8.5
The transport used by Windows Live Messenger 8.5 or later, which resembles ICE draft 6, should be used.
wlm-2009
The transport used by Windows Live Messenger 2009 or later, which resembles ICE draft 19, should be used.

This property cannot change once the stream has been created, so there is no change notification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::MediaStreamHandlerInterface::requestPropertyRelayInfo ( ) const
inline

Asynchronous getter for the remote object property RelayInfo of type Tp::StringVariantMapList.

A list of mappings describing TURN or Google relay servers available for the client to use in its candidate gathering, as determined from the protocol. Map keys are:

ip - s
The IP address of the relay server as a dotted-quad IPv4 address literal or an RFC2373 IPv6 address literal. This MUST NOT be a DNS hostname.
High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP and make life easier for streaming implementations.
type - s

Either udp for UDP (UDP MUST be assumed if this key is omitted), tcp for TCP, or tls.

The precise meaning of this key depends on the NATTraversal property: if NATTraversal is ice-udp, tls means TLS over TCP as referenced by ICE draft 19, and if NATTraversal is gtalk-p2p, tls means a fake SSL session over TCP as implemented by libjingle.

port - q
The UDP or TCP port of the relay server as an ASCII unsigned integer
username - s
The username to use
password - s
The password to use
component - u
The component number to use this relay server for, as an ASCII unsigned integer; if not included, this relay server may be used for any or all components.
In ICE draft 6, as used by Google Talk, credentials are only valid once, so each component needs relaying separately.

An equivalent of the gtalk-p2p-relay-token property on MediaSignalling channels is not included here. The connection manager should be responsible for making the necessary HTTP requests to turn the token into a username and password.

The type of relay server that this represents depends on the value of the NATTraversal property. If NATTraversal is ice-udp, this is a TURN server; if NATTraversal is gtalk-p2p, this is a Google relay server; otherwise, the meaning of RelayInfo is undefined.

If relaying is not possible for this stream, the list is empty.

This property cannot change once the stream has been created, so there is no change notification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::MediaStreamHandlerInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::CodecChoice ( uint  codecID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CodecChoice on the remote object.

Inform the connection manager of codec used to receive data.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::Error ( uint  errorCode,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Error on the remote object.

Inform the connection manager that an error occured in this stream. The connection manager should emit the StreamError signal for the stream on the relevant channel, and remove the stream from the session.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
errorCode
ID of error, from the MediaStreamError enumeration
message
String describing the error
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::NativeCandidatesPrepared ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method NativeCandidatesPrepared on the remote object.

Informs the connection manager that all possible native candisates have been discovered for the moment.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::NewActiveCandidatePair ( const QString &  nativeCandidateID,
const QString &  remoteCandidateID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NewActiveCandidatePair on the remote object.

Informs the connection manager that a valid candidate pair has been discovered and streaming is in progress.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::NewActiveTransportPair ( const QString &  nativeCandidateID,
const Tp::MediaStreamHandlerTransport nativeTransport,
const QString &  remoteCandidateID,
const Tp::MediaStreamHandlerTransport remoteTransport,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NewActiveTransportPair on the remote object.

Informs the connection manager that a valid transport pair has been discovered and streaming is in progress. Component id MUST be the same for both transports and the pair is only valid for that component. The connection manager might need to send the details of the active transport pair (e.g. c and o parameters of SDP body need to contain address of selected native RTP transport as stipulated by RFC 5245). However, the candidate ID might not be enough to determine these info if the transport was found after NativeCandidatesPrepared has been called (e.g. peer reflexive ICE candidate). This method must be called before NewActiveCandidatePair. This way, connection managers supporting this method can safely ignore subsequent NewActiveCandidatePair call. Connection managers SHOULD NOT implement this method unless they need to inform the peer about selected transports. As a result, streaming implementations MUST NOT treat errors raised by this method as fatal. Usually, connection managers only need to do one answer/offer round-trip. However, some protocols give the possibility to to send an updated offer (e.g. ICE defines such mechanism to avoid some race conditions and to properly set the state of gateway devices).

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::NewNativeCandidate ( const QString &  candidateID,
const Tp::MediaStreamHandlerTransportList transports,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NewNativeCandidate on the remote object.

Inform this MediaStreamHandler that a new native transport candidate has been ascertained.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
candidateID
String identifier for this candidate
transports Array of transports for this candidate, with fields:
  • component number
  • IP address (as a string)
  • port
  • base network protocol (one of the values of MediaStreamBaseProto)
  • proto subtype (e.g. RTP)
  • proto profile (e.g. AVP)
  • our preference value of this transport (double in range 0.0-1.0 inclusive); 1 signals the most preferred transport
  • transport type, one of the values of MediaStreamTransportType
  • username if authentication is required
  • password if authentication is required
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::Ready ( const Tp::MediaStreamHandlerCodecList codecs,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Ready on the remote object.

Inform the connection manager that a client is ready to handle this StreamHandler. Also provide it with info about all supported codecs.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
codecs
Locally-supported codecs.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::SetLocalCodecs ( const Tp::MediaStreamHandlerCodecList codecs,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetLocalCodecs on the remote object.

Used to provide codecs after Ready(), so the media client can go ready for an incoming call and exchange candidates/codecs before knowing what local codecs are available.

This is useful for gatewaying calls between two connection managers. Given an incoming call, you need to call Ready() to get the remote codecs before you can use them as the "local" codecs to place the outgoing call, and hence receive the outgoing call's remote codecs to use as the incoming call's "local" codecs.

In this situation, you would pass an empty list of codecs to the incoming call's Ready method, then later call SetLocalCodecs on the incoming call in order to respond to the offer.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
codecs
Locally-supported codecs
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::StreamState ( uint  state,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StreamState on the remote object.

Informs the connection manager of the stream's current state, as as specified in Channel.Type.StreamedMedia::ListStreams.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::SupportedCodecs ( const Tp::MediaStreamHandlerCodecList codecs,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SupportedCodecs on the remote object.

Inform the connection manager of the supported codecs for this session. This is called after the connection manager has emitted SetRemoteCodecs to notify what codecs are supported by the peer, and will thus be an intersection of all locally supported codecs (passed to Ready) and those supported by the peer.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
codecs
Locally supported codecs.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::CodecsUpdated ( const Tp::MediaStreamHandlerCodecList codecs,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CodecsUpdated on the remote object.

Inform the connection manager that the parameters of the supported codecs for this session have changed. The connection manager should send the new parameters to the remote contact. This is required for H.264 and Theora, for example.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
codecs
Locally supported codecs, which SHOULD be the same as were 
previously in effect, but possibly with different parameters.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::HoldState ( bool  held,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method HoldState on the remote object.

Notify the connection manager that the stream's hold state has been changed successfully in response to SetStreamHeld.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
held
If true, the stream is now on hold.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::UnholdFailure ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method UnholdFailure on the remote object.

Notify the connection manager that an attempt to reacquire the necessary hardware or software resources to unhold the stream, in response to SetStreamHeld, has failed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::SupportedFeedbackMessages ( const Tp::RTCPFeedbackMessageMap messages,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SupportedFeedbackMessages on the remote object.

Inform the connection manager of the supported feedback messages for this session. This is called a before calling SupportedCodecs, Ready or CodecsUpdated to indicate the local, or negotiated feedback messages.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
messages
Locally supported feedback messages.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::MediaStreamHandlerInterface::SupportedHeaderExtensions ( const Tp::RTPHeaderExtensionsList headerExtensions,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SupportedHeaderExtensions on the remote object.

Inform the connection manager of the supported RTP header extensions for this session. This is called before calling SupportedCodecs, Ready or CodecsUpdated to indicate the local or negotiated RTP header extensions.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
headerExtensions
Locally supported RTP header extensions.
timeoutThe timeout in milliseconds.
void Tp::Client::MediaStreamHandlerInterface::AddRemoteCandidate ( const QString &  candidateID,
const Tp::MediaStreamHandlerTransportList transports 
)
signal

Represents the signal AddRemoteCandidate on the remote object.

Signal emitted when the connection manager wishes to inform the client of a new remote candidate.

Parameters
candidateID
String identifier for this candidate
transports
Array of transports for this candidate with fields, as defined in 
NewNativeCandidate
void Tp::Client::MediaStreamHandlerInterface::Close ( )
signal

Represents the signal Close on the remote object.

Signal emitted when the connection manager wishes the stream to be closed.

void Tp::Client::MediaStreamHandlerInterface::RemoveRemoteCandidate ( const QString &  candidateID)
signal

Represents the signal RemoveRemoteCandidate on the remote object.

Signal emitted when the connection manager wishes to inform the client that the remote end has removed a previously usable candidate. It seemed like a good idea at the time, but wasn't.

Parameters
candidateID
String identifier for remote candidate to drop
void Tp::Client::MediaStreamHandlerInterface::SetActiveCandidatePair ( const QString &  nativeCandidateID,
const QString &  remoteCandidateID 
)
signal

Represents the signal SetActiveCandidatePair on the remote object.

Emitted by the connection manager to inform the client that a valid candidate pair has been discovered by the remote end and streaming is in progress.

void Tp::Client::MediaStreamHandlerInterface::SetRemoteCandidateList ( const Tp::MediaStreamHandlerCandidateList remoteCandidates)
signal

Represents the signal SetRemoteCandidateList on the remote object.

Signal emitted when the connection manager wishes to inform the client of all the available remote candidates at once.

Parameters
remoteCandidates
A list of candidate id and a list of transports as defined in 
NewNativeCandidate
void Tp::Client::MediaStreamHandlerInterface::SetRemoteCodecs ( const Tp::MediaStreamHandlerCodecList codecs)
signal

Represents the signal SetRemoteCodecs on the remote object.

Signal emitted when the connection manager wishes to inform the client of the codecs supported by the remote end. If these codecs are compatible with the remote codecs, then the client must call SupportedCodecs, otherwise call Error.

Parameters
codecs
Codecs supported by the remote peer.
void Tp::Client::MediaStreamHandlerInterface::SetStreamPlaying ( bool  playing)
signal

Represents the signal SetStreamPlaying on the remote object.

If emitted with argument TRUE, this means that the connection manager wishes to set the stream playing; this means that the streaming implementation should expect to receive data. If emitted with argument FALSE this signal is basically meaningless and should be ignored. We're very sorry.

void Tp::Client::MediaStreamHandlerInterface::SetStreamSending ( bool  sending)
signal

Represents the signal SetStreamSending on the remote object.

Signal emitted when the connection manager wishes to set whether or not the stream sends to the remote end.

void Tp::Client::MediaStreamHandlerInterface::StartTelephonyEvent ( uchar  event)
signal

Represents the signal StartTelephonyEvent on the remote object.

Request that a telephony event (as defined by RFC 4733) is transmitted over this stream until StopTelephonyEvent is called.

Parameters
event
A telephony event code.
void Tp::Client::MediaStreamHandlerInterface::StartNamedTelephonyEvent ( uchar  event,
uint  codecID 
)
signal

Represents the signal StartNamedTelephonyEvent on the remote object.

Request that a telephony event (as defined by RFC 4733) is transmitted over this stream until StopTelephonyEvent is called. This differs from StartTelephonyEvent in that you force the event to be transmitted as a RFC 4733 named event, not as sound. You can also force a specific Codec ID.

Parameters
event
A telephony event code as defined by RFC 4733.
codecID
The payload type to use when sending events. The value 0xFFFFFFFF 
means to send with the already configured event type instead of 
using the specified one.
void Tp::Client::MediaStreamHandlerInterface::StartSoundTelephonyEvent ( uchar  event)
signal

Represents the signal StartSoundTelephonyEvent on the remote object.

Request that a telephony event (as defined by RFC 4733) is transmitted over this stream until StopTelephonyEvent is called. This differs from StartTelephonyEvent in that you force the event to be transmitted as sound instead of as a named event.

Parameters
event
A telephony event code as defined by RFC 4733.
void Tp::Client::MediaStreamHandlerInterface::StopTelephonyEvent ( )
signal

Represents the signal StopTelephonyEvent on the remote object.

Request that any ongoing telephony events (as defined by RFC 4733) being transmitted over this stream are stopped.

void Tp::Client::MediaStreamHandlerInterface::SetStreamHeld ( bool  held)
signal

Represents the signal SetStreamHeld on the remote object.

Emitted when the connection manager wishes to place the stream on hold (so the streaming client should free hardware or software resources) or take the stream off hold (so the streaming client should reacquire the necessary resources).

When placing a channel's streams on hold, the connection manager SHOULD notify the remote contact that this will be done (if appropriate in the protocol) before it emits this signal.

It is assumed that relinquishing a resource will not fail. If it does, the call is probably doomed anyway.

When unholding a channel's streams, the connection manager SHOULD emit this signal and wait for success to be indicated via HoldState before it notifies the remote contact that the channel has been taken off hold.

This means that if a resource is unavailable, the remote contact will never even be told that we tried to acquire it.

Parameters
held
If true, the stream is to be placed on hold.
void Tp::Client::MediaStreamHandlerInterface::SetRemoteFeedbackMessages ( const Tp::RTCPFeedbackMessageMap messages)
signal

Represents the signal SetRemoteFeedbackMessages on the remote object.

Signal emitted when the connection manager wishes to inform the client of the feedback messages supported by the remote end. This signal is emitted before SetRemoteCodecs. If the client supports any of these messages, it must call SupportedFeedbackMessages before calling SupportedCodecs.

Parameters
messages
Remote Feedback messages desired by the remote side
void Tp::Client::MediaStreamHandlerInterface::SetRemoteHeaderExtensions ( const Tp::RTPHeaderExtensionsList headerExtensions)
signal

Represents the signal SetRemoteHeaderExtensions on the remote object.

Signal emitted when the connection manager wishes to inform the client of the RTP header extensions supported by the remote end. This signal is emitted before SetRemoteCodecs. If the client supports any of these messages, it must call SupportedHeaderExtensions before calling SupportedCodecs.

Parameters
headerExtensions
Header extensions desired by the remote side
void Tp::Client::MediaStreamHandlerInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01354.html0000644000175100017520000002301412530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeCallAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeCallAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
Accept(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeCallAdaptorslot
adaptee() const Tp::AbstractAdaptor
AddContent(const QString &contentName, uint contentType, uint initialDirection, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeCallAdaptorslot
CallFlags() const Tp::Service::ChannelTypeCallAdaptor
CallMembers() const Tp::Service::ChannelTypeCallAdaptor
CallMembersChanged(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)Tp::Service::ChannelTypeCallAdaptorsignal
CallState() const Tp::Service::ChannelTypeCallAdaptor
CallStateChanged(uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails)Tp::Service::ChannelTypeCallAdaptorsignal
CallStateDetails() const Tp::Service::ChannelTypeCallAdaptor
CallStateReason() const Tp::Service::ChannelTypeCallAdaptor
ContentAdded(const QDBusObjectPath &content)Tp::Service::ChannelTypeCallAdaptorsignal
ContentRemoved(const QDBusObjectPath &content, const Tp::CallStateReason &reason)Tp::Service::ChannelTypeCallAdaptorsignal
Contents() const Tp::Service::ChannelTypeCallAdaptor
dbusConnection() const Tp::AbstractAdaptor
Hangup(uint reason, const QString &detailedHangupReason, const QString &message, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeCallAdaptorslot
HardwareStreaming() const Tp::Service::ChannelTypeCallAdaptor
InitialAudio() const Tp::Service::ChannelTypeCallAdaptor
InitialAudioName() const Tp::Service::ChannelTypeCallAdaptor
InitialTransport() const Tp::Service::ChannelTypeCallAdaptor
InitialVideo() const Tp::Service::ChannelTypeCallAdaptor
InitialVideoName() const Tp::Service::ChannelTypeCallAdaptor
MemberIdentifiers() const Tp::Service::ChannelTypeCallAdaptor
MutableContents() const Tp::Service::ChannelTypeCallAdaptor
SetQueued(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeCallAdaptorslot
SetRinging(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeCallAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00138.html0000644000175100017520000003354012530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Class Template Reference

Callback with 6 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
 
typedef R ResultType
 

Public Member Functions

 Callback6 ()
 
template<class Functor >
 Callback6 (const Functor &functor)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
class Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >

Callback with 6 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
typedef R(* Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
typedef R Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::ResultType

Constructor & Destructor Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::Callback6 ( )
inline
template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
template<class Functor >
Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::Callback6 ( const Functor &  functor)
inline

Member Function Documentation

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
ResultType Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6 
) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00953.html0000644000175100017520000003036112530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionContactInfoInterface Member List

This is the complete list of members for Tp::BaseConnectionContactInfoInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseConnectionContactInfoInterface()Tp::BaseConnectionContactInfoInterfaceprotected
contactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo)Tp::BaseConnectionContactInfoInterface
contactInfoFlags() const Tp::BaseConnectionContactInfoInterface
create()Tp::BaseConnectionContactInfoInterfaceinlinestatic
create()Tp::BaseConnectionContactInfoInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getContactInfo(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionContactInfoInterface
GetContactInfoCallback typedefTp::BaseConnectionContactInfoInterface
immutableProperties() const Tp::BaseConnectionContactInfoInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
refreshContactInfo(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionContactInfoInterface
RefreshContactInfoCallback typedefTp::BaseConnectionContactInfoInterface
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
requestContactInfo(uint contact, DBusError *error)Tp::BaseConnectionContactInfoInterface
RequestContactInfoCallback typedefTp::BaseConnectionContactInfoInterface
setContactInfo(const Tp::ContactInfoFieldList &contactInfo, DBusError *error)Tp::BaseConnectionContactInfoInterface
SetContactInfoCallback typedefTp::BaseConnectionContactInfoInterface
setContactInfoFlags(const Tp::ContactInfoFlags &contactInfoFlags)Tp::BaseConnectionContactInfoInterface
setGetContactInfoCallback(const GetContactInfoCallback &cb)Tp::BaseConnectionContactInfoInterface
setRefreshContactInfoCallback(const RefreshContactInfoCallback &cb)Tp::BaseConnectionContactInfoInterface
setRequestContactInfoCallback(const RequestContactInfoCallback &cb)Tp::BaseConnectionContactInfoInterface
setSetContactInfoCallback(const SetContactInfoCallback &cb)Tp::BaseConnectionContactInfoInterface
setSupportedFields(const Tp::FieldSpecs &supportedFields)Tp::BaseConnectionContactInfoInterface
supportedFields() const Tp::BaseConnectionContactInfoInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionContactInfoInterface()Tp::BaseConnectionContactInfoInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00705_source.html0000644000175100017520000002306112530426257022516 0ustar00kaffeinekaffeine00000000000000 filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
filter.h
1 
23 #ifndef _TelepathyQt_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/SharedPtr>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 template <class T>
37 class Filter : public RefCounted
38 {
39  Q_DISABLE_COPY(Filter)
40 
41 public:
42  virtual ~Filter() {}
43 
44  virtual bool isValid() const { return false; }
45 
46  virtual bool matches(const SharedPtr<T> &t) const
47  {
48  Q_UNUSED(t);
49 
50  return false;
51  }
52 
53 protected:
54  Filter() {}
55 
56 private:
57  struct Private;
58  Private *mPriv; // Just a placeholder really
59 };
60 
61 } // Tp
62 
63 #endif
virtual ~Filter()
Definition: filter.h:42
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
virtual bool isValid() const
Definition: filter.h:44
virtual bool matches(const SharedPtr< T > &t) const
Definition: filter.h:46
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
Filter()
Definition: filter.h:54


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00452.html0000644000175100017520000003152312530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::PendingVariant Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingVariant Class Reference

The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant. More...

#include <TelepathyQt/PendingVariant>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingVariant (QDBusPendingCall call, const SharedPtr< RefCounted > &object)
 
 ~PendingVariant ()
 
QVariant result () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingVariant::PendingVariant ( QDBusPendingCall  call,
const SharedPtr< RefCounted > &  object 
)
Tp::PendingVariant::~PendingVariant ( )

Class destructor.

Member Function Documentation

QVariant Tp::PendingVariant::result ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01168.html0000644000175100017520000000516612530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Mail Member List

This is the complete list of members for Tp::Mail, including all inherited members.

Mail()Tp::Mailinline
Mail(const QMap< QString, QDBusVariant > &a)Tp::Mailinline
operator=(const QMap< QString, QDBusVariant > &a)Tp::Mailinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00701_source.html0000644000175100017520000003443512530426257022521 0ustar00kaffeinekaffeine00000000000000 file-transfer-channel-creation-properties.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
file-transfer-channel-creation-properties.h
1 
23 #ifndef _TelepathyQt_file_transfer_channel_creation_properties_h_HEADER_GUARD_
24 #define _TelepathyQt_file_transfer_channel_creation_properties_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Global>
32 
33 #include <QDateTime>
34 #include <QMetaType>
35 #include <QSharedDataPointer>
36 #include <QString>
37 
38 namespace Tp
39 {
40 
42 {
43 public:
45  FileTransferChannelCreationProperties(const QString &suggestedFileName,
46  const QString &contentType, qulonglong size);
47  FileTransferChannelCreationProperties(const QString &path,
48  const QString &contentType);
52 
53  bool isValid() const { return mPriv.constData() != 0; }
54 
57  bool operator==(const FileTransferChannelCreationProperties &other) const;
58 
60  FileHashType contentHashType, const QString &contentHash);
62  const QString &description);
63  FileTransferChannelCreationProperties &setLastModificationTime(
64  const QDateTime &lastModificationTime);
65  FileTransferChannelCreationProperties &setUri(const QString &uri);
66 
67  /* mandatory parameters */
68  QString suggestedFileName() const;
69  QString contentType() const;
70  qulonglong size() const;
71 
72  /* optional parameters */
73  bool hasContentHash() const;
74  FileHashType contentHashType() const;
75  QString contentHash() const;
76 
77  bool hasDescription() const;
78  QString description() const;
79 
80  bool hasLastModificationTime() const;
81  QDateTime lastModificationTime() const;
82 
83  bool hasUri() const;
84  QString uri() const;
85 
86 private:
87  struct Private;
88  friend struct Private;
89  QSharedDataPointer<Private> mPriv;
90 };
91 
92 } // Tp
93 
95 
96 #endif
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
FileHashType
Definition: build/TelepathyQt/_gen/constants.h:2678
bool isValid() const
Definition: file-transfer-channel-creation-properties.h:53
The FileTransferChannelCreationProperties class represents the properties of a file transfer channel ...
Definition: file-transfer-channel-creation-properties.h:41


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00511.html0000644000175100017520000001164012530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleStatusSpec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::SimpleStatusSpec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint type
 
bool maySetOnSelf
 
bool canHaveMessage
 

Detailed Description

Structure type generated from the specification.

A struct containing information about a status.

Member Data Documentation

uint Tp::SimpleStatusSpec::type

The type of a presence. This SHOULD NOT be used as a way to set statuses that the client does not recognise (as explained in SetPresence), but MAY be used to check that the client's assumptions about a particular status name match the connection manager's.

bool Tp::SimpleStatusSpec::maySetOnSelf

If true, the user can set this status on themselves using SetPresence.

bool Tp::SimpleStatusSpec::canHaveMessage

If true, a non-empty message can be set for this status. Otherwise, the empty string is the only acceptable message. On IRC you can be Away with a status message, but if you are available you cannot set a status message.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00266.html0000644000175100017520000007020612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::ConnectionFactory Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::ConnectionFactory Class Reference

The ConnectionFactory class is responsible for constructing Connection objects according to application-defined settings. More...

#include <TelepathyQt/ConnectionFactory>

Inherits Tp::FixedFeatureFactory.

Public Member Functions

virtual ~ConnectionFactory ()
 
PendingReadyproxy (const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const
 
- Public Member Functions inherited from Tp::FixedFeatureFactory
virtual ~FixedFeatureFactory ()
 
Features features () const
 
void addFeature (const Feature &feature)
 
void addFeatures (const Features &features)
 
- Public Member Functions inherited from Tp::DBusProxyFactory
virtual ~DBusProxyFactory ()
 
const QDBusConnection & dbusConnection () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static ConnectionFactoryPtr create (const QDBusConnection &bus, const Features &features=Features())
 

Protected Member Functions

 ConnectionFactory (const QDBusConnection &bus, const Features &features)
 
virtual ConnectionPtr construct (const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const
 
virtual QString finalBusNameFrom (const QString &uniqueOrWellKnown) const
 
- Protected Member Functions inherited from Tp::FixedFeatureFactory
 FixedFeatureFactory (const QDBusConnection &bus)
 
virtual Features featuresFor (const DBusProxyPtr &proxy) const
 
- Protected Member Functions inherited from Tp::DBusProxyFactory
 DBusProxyFactory (const QDBusConnection &bus)
 
DBusProxyPtr cachedProxy (const QString &busName, const QString &objectPath) const
 
PendingReadynowHaveProxy (const DBusProxyPtr &proxy) const
 
virtual PendingOperationinitialPrepare (const DBusProxyPtr &proxy) const
 
virtual PendingOperationreadyPrepare (const DBusProxyPtr &proxy) const
 

Detailed Description

The ConnectionFactory class is responsible for constructing Connection objects according to application-defined settings.

The class is used by Account and other classes which construct Connection proxy instances to enable sharing instances of application-defined Connection subclasses with certain features always ready.

Constructor & Destructor Documentation

Tp::ConnectionFactory::~ConnectionFactory ( )
virtual

Class destructor.

Tp::ConnectionFactory::ConnectionFactory ( const QDBusConnection &  bus,
const Features features 
)
protected

Construct a new ConnectionFactory object.

As in create(), it should be noted that unlike Connection::becomeReady(), FeatureCore isn't assumed. If no features are specified, no Connection::becomeReady() call is made at all and the proxy won't be Connection::isReady().

Parameters
busThe QDBusConnection for proxies constructed using this factory to use.
featuresThe features to make ready on constructed Connections.

Member Function Documentation

ConnectionFactoryPtr Tp::ConnectionFactory::create ( const QDBusConnection &  bus,
const Features features = Features() 
)
static

Create a new ConnectionFactory object.

Optionally, the features to make ready on all constructed proxies can be specified. The default is to make no features ready. It should be noted that unlike Connection::becomeReady(), FeatureCore isn't assumed. If no features are specified, which is the default behavior, no Connection::becomeReady() call is made at all and the proxy won't be Connection::isReady().

Parameters
busThe QDBusConnection for proxies constructed using this factory to use.
featuresThe features to make ready on constructed Connections.
Returns
A ConnectionFactoryPtr object pointing to the newly created ConnectionFactory object.
PendingReady * Tp::ConnectionFactory::proxy ( const QString &  busName,
const QString &  objectPath,
const ChannelFactoryConstPtr &  chanFactory,
const ContactFactoryConstPtr &  contactFactory 
) const

Constructs a Connection proxy and begins making it ready.

If a valid proxy already exists in the factory cache for the given combination of busName and objectPath, it is returned instead. All newly created proxies are automatically cached until they're either DBusProxy::invalidated() or the last reference to them outside the factory has been dropped.

The proxy can be accessed immediately after this function returns using PendingReady::proxy(). The ready operation only finishes, however, when the features specified by features(), if any, are made ready as much as possible. If the service doesn't support a given feature, they won't obviously be ready even if the operation finished successfully, as is the case for Connection::becomeReady().

Parameters
busNameThe bus/service name of the D-Bus connection object the proxy is constructed for.
objectPathThe object path of the connection.
chanFactoryThe channel factory to use for the Connection.
contactFactoryThe channel factory to use for the Connection.
Returns
A PendingReady operation with the proxy in PendingReady::proxy().
ConnectionPtr Tp::ConnectionFactory::construct ( const QString &  busName,
const QString &  objectPath,
const ChannelFactoryConstPtr &  chanFactory,
const ContactFactoryConstPtr &  contactFactory 
) const
protectedvirtual

Can be used by subclasses to override the Connection subclass constructed by the factory.

This is automatically called by proxy() to construct proxy instances if no valid cached proxy is found.

The default implementation constructs Tp::Connection objects.

Parameters
busNameThe bus/service name of the D-Bus Connection object the proxy is constructed for.
objectPathThe object path of the connection.
chanFactoryThe channel factory to use for the Connection.
contactFactoryThe channel factory to use for the Connection.
Returns
A pointer to the constructed Connection object.
QString Tp::ConnectionFactory::finalBusNameFrom ( const QString &  uniqueOrWellKnown) const
protectedvirtual

Transforms well-known names to the corresponding unique names, as is appropriate for Connection

Parameters
uniqueOrWellKnownThe name to transform.
Returns
The unique name corresponding to uniqueOrWellKnown (which may be it itself).

Implements Tp::DBusProxyFactory.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01227.html0000644000175100017520000000530212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactCodecMap Member List

This is the complete list of members for Tp::ContactCodecMap, including all inherited members.

ContactCodecMap()Tp::ContactCodecMapinline
ContactCodecMap(const QMap< uint, CodecList > &a)Tp::ContactCodecMapinline
operator=(const QMap< uint, CodecList > &a)Tp::ContactCodecMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00010.html0000644000175100017520000001533212530426257021125 0ustar00kaffeinekaffeine00000000000000 accounts/account-item.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
accounts/account-item.h
#ifndef _TelepathyQt_examples_accounts_account_item_h_HEADER_GUARD_
#define _TelepathyQt_examples_accounts_account_item_h_HEADER_GUARD_
#include <TelepathyQt/Types>
#include <TelepathyQt/Account>
#include <TelepathyQt/Types>
#include <QString>
namespace Tp {
class AccountManager;
class PendingOperation;
}
class QTableWidget;
class AccountItem : public QObject
{
Q_OBJECT
public:
enum Columns {
ColumnValid = 0,
ColumnEnabled,
ColumnConnectionManager,
ColumnProtocol,
ColumnDisplayName,
ColumnNickname,
ColumnConnectsAutomatically,
ColumnChangingPresence,
ColumnAutomaticPresence,
ColumnCurrentPresence,
ColumnRequestedPresence,
ColumnConnectionStatus,
ColumnConnection,
NumColumns
};
Q_ENUMS(Columns)
AccountItem(Tp::AccountPtr acc, QTableWidget *table, int row, QObject *parent = 0);
virtual ~AccountItem();
int row() const { return mRow; }
private Q_SLOTS:
void onValidityChanged(bool);
void onStateChanged(bool);
void onDisplayNameChanged(const QString &);
void onNicknameChanged(const QString &);
void onConnectsAutomaticallyPropertyChanged(bool);
void onChangingPresenceChanged(bool);
void onAutomaticPresenceChanged(const Tp::SimplePresence &);
void onCurrentPresenceChanged(const Tp::SimplePresence &);
void onRequestedPresenceChanged(const Tp::SimplePresence &);
const QString &error, const QVariantMap &errorDetails);
void onHaveConnectionChanged(bool);
private:
void init();
void setupGui();
Tp::AccountPtr mAcc;
QTableWidget *mTable;
int mRow;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00325.html0000644000175100017520000001372612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::ContactMediaDescriptionPropertiesMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactMediaDescriptionPropertiesMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QVariantMap >.

Public Member Functions

 ContactMediaDescriptionPropertiesMap ()
 
 ContactMediaDescriptionPropertiesMap (const QMap< uint, QVariantMap > &a)
 
ContactMediaDescriptionPropertiesMapoperator= (const QMap< uint, QVariantMap > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QVariantMap>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::ContactMediaDescriptionPropertiesMap::ContactMediaDescriptionPropertiesMap ( )
inline
Tp::ContactMediaDescriptionPropertiesMap::ContactMediaDescriptionPropertiesMap ( const QMap< uint, QVariantMap > &  a)
inline

Member Function Documentation

ContactMediaDescriptionPropertiesMap& Tp::ContactMediaDescriptionPropertiesMap::operator= ( const QMap< uint, QVariantMap > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01296.html0000644000175100017520000003601512530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddClientInterest(const QStringList &tokens, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
Connect(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
ConnectionError(const QString &error, const QVariantMap &details)Tp::Client::ConnectionInterfacesignal
ConnectionInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterface
ConnectionInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterface
ConnectionInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterface
Disconnect(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
GetInterfaces(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
GetProtocol(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
GetSelfHandle(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
GetStatus(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
HoldHandles(uint handleType, const Tp::UIntList &handles, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
InspectHandles(uint handleType, const Tp::UIntList &handles, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListChannels(int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
NewChannel(const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler)Tp::Client::ConnectionInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ReleaseHandles(uint handleType, const Tp::UIntList &handles, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
RemoveClientInterest(const QStringList &tokens, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
requestAllProperties() const Tp::Client::ConnectionInterfaceinline
RequestChannel(const QString &type, uint handleType, uint handle, bool suppressHandler, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
RequestHandles(uint handleType, const QStringList &identifiers, int timeout=-1)Tp::Client::ConnectionInterfaceinlineslot
requestPropertyHasImmortalHandles() const Tp::Client::ConnectionInterfaceinline
requestPropertyInterfaces() const Tp::Client::ConnectionInterfaceinline
requestPropertySelfHandle() const Tp::Client::ConnectionInterfaceinline
requestPropertySelfID() const Tp::Client::ConnectionInterfaceinline
requestPropertyStatus() const Tp::Client::ConnectionInterfaceinline
SelfContactChanged(uint selfHandle, const QString &selfID)Tp::Client::ConnectionInterfacesignal
SelfHandleChanged(uint selfHandle)Tp::Client::ConnectionInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceinlinestatic
StatusChanged(uint status, uint reason)Tp::Client::ConnectionInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01040.html0000644000175100017520000000660012530426260021121 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Member List

This is the complete list of members for Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, including all inherited members.

fnTp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >
FunctionType typedefTp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >inline
PtrFunctor6(FunctionType fn)Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >inline
ResultType typedefTp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00895.html0000644000175100017520000025510312530426257021154 0ustar00kaffeinekaffeine00000000000000 Interface string constants
   Home · All Classes · All Namespaces · Modules · Functions · Files
Macros
Interface string constants

Macros

#define TP_QT_IFACE_CONNECTION_MANAGER
 
#define TP_QT_IFACE_PROTOCOL
 
#define TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING
 
#define TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS
 
#define TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE
 
#define TP_QT_IFACE_CONNECTION
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_ANONYMITY
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_BALANCE
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CAPABILITIES
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CELLULAR
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_LOCATION
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_MAIL_NOTIFICATION
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_POWER_SAVING
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_PRESENCE
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_SERVICE_POINT
 
#define TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE
 
#define TP_QT_IFACE_CHANNEL
 
#define TP_QT_IFACE_CHANNEL_TYPE_CALL
 
#define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST
 
#define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH
 
#define TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE
 
#define TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER
 
#define TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST
 
#define TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION
 
#define TP_QT_IFACE_CHANNEL_TYPE_SERVER_TLS_CONNECTION
 
#define TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA
 
#define TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE
 
#define TP_QT_IFACE_CHANNEL_TYPE_TEXT
 
#define TP_QT_IFACE_CHANNEL_TYPE_TUBES
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_ANONYMITY
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_CALL_STATE
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_DESTROYABLE
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_DTMF
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_GROUP
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_HOLD
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_PASSWORD
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_SECURABLE
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_SERVICE_POINT
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_SMS
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_SUBJECT
 
#define TP_QT_IFACE_CHANNEL_INTERFACE_TUBE
 
#define TP_QT_IFACE_CHANNEL_DISPATCHER
 
#define TP_QT_IFACE_CHANNEL_DISPATCHER_INTERFACE_MESSAGES1
 
#define TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION
 
#define TP_QT_IFACE_CHANNEL_REQUEST
 
#define TP_QT_IFACE_MEDIA_SESSION_HANDLER
 
#define TP_QT_IFACE_MEDIA_STREAM_HANDLER
 
#define TP_QT_IFACE_DBUS_DAEMON
 
#define TP_QT_IFACE_INTROSPECTABLE
 
#define TP_QT_IFACE_PEER
 
#define TP_QT_IFACE_PROPERTIES
 
#define TP_QT_IFACE_DEBUG
 
#define TP_QT_IFACE_PROPERTIES_INTERFACE
 
#define TP_QT_IFACE_ACCOUNT_MANAGER
 
#define TP_QT_IFACE_ACCOUNT
 
#define TP_QT_IFACE_ACCOUNT_INTERFACE_ADDRESSING
 
#define TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR
 
#define TP_QT_IFACE_ACCOUNT_INTERFACE_STORAGE
 
#define TP_QT_IFACE_CLIENT
 
#define TP_QT_IFACE_CLIENT_OBSERVER
 
#define TP_QT_IFACE_CLIENT_APPROVER
 
#define TP_QT_IFACE_CLIENT_HANDLER
 
#define TP_QT_IFACE_CLIENT_INTERFACE_REQUESTS
 
#define TP_QT_IFACE_AUTHENTICATION_TLS_CERTIFICATE
 
#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_MEDIA
 
#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF
 
#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL
 
#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL
 
#define TP_QT_IFACE_CALL_CONTENT
 
#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS
 
#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK
 
#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS
 
#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION
 
#define TP_QT_IFACE_CALL_STREAM_INTERFACE_MEDIA
 
#define TP_QT_IFACE_CALL_STREAM
 
#define TP_QT_IFACE_CALL_STREAM_ENDPOINT
 
#define TP_QT_IFACE_CALL_INTERFACE_MUTE
 

Detailed Description

D-Bus interface names of the interfaces in the specification.

Macro Definition Documentation

#define TP_QT_IFACE_CONNECTION_MANAGER

The interface name "org.freedesktop.Telepathy.ConnectionManager" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PROTOCOL

The interface name "org.freedesktop.Telepathy.Protocol" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING

The interface name "org.freedesktop.Telepathy.Protocol.Interface.Addressing" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS

The interface name "org.freedesktop.Telepathy.Protocol.Interface.Avatars" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE

The interface name "org.freedesktop.Telepathy.Protocol.Interface.Presence" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION

The interface name "org.freedesktop.Telepathy.Connection" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING

The interface name "org.freedesktop.Telepathy.Connection.Interface.Addressing1" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING

The interface name "org.freedesktop.Telepathy.Connection.Interface.Aliasing" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_ANONYMITY

The interface name "org.freedesktop.Telepathy.Connection.Interface.Anonymity" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS

The interface name "org.freedesktop.Telepathy.Connection.Interface.Avatars" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_BALANCE

The interface name "org.freedesktop.Telepathy.Connection.Interface.Balance" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CAPABILITIES

The interface name "org.freedesktop.Telepathy.Connection.Interface.Capabilities" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CELLULAR

The interface name "org.freedesktop.Telepathy.Connection.Interface.Cellular" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES

The interface name "org.freedesktop.Telepathy.Connection.Interface.ClientTypes" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS

The interface name "org.freedesktop.Telepathy.Connection.Interface.Contacts" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING

The interface name "org.freedesktop.Telepathy.Connection.Interface.ContactBlocking" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES

The interface name "org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS

The interface name "org.freedesktop.Telepathy.Connection.Interface.ContactGroups" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO

The interface name "org.freedesktop.Telepathy.Connection.Interface.ContactInfo" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST

The interface name "org.freedesktop.Telepathy.Connection.Interface.ContactList" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_LOCATION

The interface name "org.freedesktop.Telepathy.Connection.Interface.Location" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_MAIL_NOTIFICATION

The interface name "org.freedesktop.Telepathy.Connection.Interface.MailNotification" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_POWER_SAVING

The interface name "org.freedesktop.Telepathy.Connection.Interface.PowerSaving" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_PRESENCE

The interface name "org.freedesktop.Telepathy.Connection.Interface.Presence" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS

The interface name "org.freedesktop.Telepathy.Connection.Interface.Requests" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_SERVICE_POINT

The interface name "org.freedesktop.Telepathy.Connection.Interface.ServicePoint" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE

The interface name "org.freedesktop.Telepathy.Connection.Interface.SimplePresence" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL

The interface name "org.freedesktop.Telepathy.Channel" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_CALL

The interface name "org.freedesktop.Telepathy.Channel.Type.Call1" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST

The interface name "org.freedesktop.Telepathy.Channel.Type.ContactList" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH

The interface name "org.freedesktop.Telepathy.Channel.Type.ContactSearch" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE

The interface name "org.freedesktop.Telepathy.Channel.Type.DBusTube" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER

The interface name "org.freedesktop.Telepathy.Channel.Type.FileTransfer" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST

The interface name "org.freedesktop.Telepathy.Channel.Type.RoomList" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION

The interface name "org.freedesktop.Telepathy.Channel.Type.ServerAuthentication" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_SERVER_TLS_CONNECTION

The interface name "org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA

The interface name "org.freedesktop.Telepathy.Channel.Type.StreamedMedia" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE

The interface name "org.freedesktop.Telepathy.Channel.Type.StreamTube" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_TEXT

The interface name "org.freedesktop.Telepathy.Channel.Type.Text" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_TYPE_TUBES

The interface name "org.freedesktop.Telepathy.Channel.Type.Tubes" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_ANONYMITY

The interface name "org.freedesktop.Telepathy.Channel.Interface.Anonymity" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION

The interface name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_CALL_STATE

The interface name "org.freedesktop.Telepathy.Channel.Interface.CallState" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE

The interface name "org.freedesktop.Telepathy.Channel.Interface.ChatState" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE

The interface name "org.freedesktop.Telepathy.Channel.Interface.Conference" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_DESTROYABLE

The interface name "org.freedesktop.Telepathy.Channel.Interface.Destroyable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_DTMF

The interface name "org.freedesktop.Telepathy.Channel.Interface.DTMF" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA

The interface name "org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_GROUP

The interface name "org.freedesktop.Telepathy.Channel.Interface.Group" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_HOLD

The interface name "org.freedesktop.Telepathy.Channel.Interface.Hold" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING

The interface name "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES

The interface name "org.freedesktop.Telepathy.Channel.Interface.Messages" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_PASSWORD

The interface name "org.freedesktop.Telepathy.Channel.Interface.Password" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM

The interface name "org.freedesktop.Telepathy.Channel.Interface.Room2" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG

The interface name "org.freedesktop.Telepathy.Channel.Interface.RoomConfig1" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION

The interface name "org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_SECURABLE

The interface name "org.freedesktop.Telepathy.Channel.Interface.Securable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_SERVICE_POINT

The interface name "org.freedesktop.Telepathy.Channel.Interface.ServicePoint" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_SMS

The interface name "org.freedesktop.Telepathy.Channel.Interface.SMS" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_SUBJECT

The interface name "org.freedesktop.Telepathy.Channel.Interface.Subject2" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_INTERFACE_TUBE

The interface name "org.freedesktop.Telepathy.Channel.Interface.Tube" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_DISPATCHER

The interface name "org.freedesktop.Telepathy.ChannelDispatcher" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_DISPATCHER_INTERFACE_MESSAGES1

The interface name "org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages1" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION

The interface name "org.freedesktop.Telepathy.ChannelDispatchOperation" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CHANNEL_REQUEST

The interface name "org.freedesktop.Telepathy.ChannelRequest" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_MEDIA_SESSION_HANDLER

The interface name "org.freedesktop.Telepathy.Media.SessionHandler" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_MEDIA_STREAM_HANDLER

The interface name "org.freedesktop.Telepathy.Media.StreamHandler" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_DBUS_DAEMON

The interface name "org.freedesktop.DBus" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_INTROSPECTABLE

The interface name "org.freedesktop.DBus.Introspectable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PEER

The interface name "org.freedesktop.DBus.Peer" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PROPERTIES

The interface name "org.freedesktop.DBus.Properties" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_DEBUG

The interface name "org.freedesktop.Telepathy.Debug" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_PROPERTIES_INTERFACE

The interface name "org.freedesktop.Telepathy.Properties" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_ACCOUNT_MANAGER

The interface name "org.freedesktop.Telepathy.AccountManager" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_ACCOUNT

The interface name "org.freedesktop.Telepathy.Account" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_ACCOUNT_INTERFACE_ADDRESSING

The interface name "org.freedesktop.Telepathy.Account.Interface.Addressing" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR

The interface name "org.freedesktop.Telepathy.Account.Interface.Avatar" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_ACCOUNT_INTERFACE_STORAGE

The interface name "org.freedesktop.Telepathy.Account.Interface.Storage" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CLIENT

The interface name "org.freedesktop.Telepathy.Client" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CLIENT_OBSERVER

The interface name "org.freedesktop.Telepathy.Client.Observer" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CLIENT_APPROVER

The interface name "org.freedesktop.Telepathy.Client.Approver" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CLIENT_HANDLER

The interface name "org.freedesktop.Telepathy.Client.Handler" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CLIENT_INTERFACE_REQUESTS

The interface name "org.freedesktop.Telepathy.Client.Interface.Requests" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_AUTHENTICATION_TLS_CERTIFICATE

The interface name "org.freedesktop.Telepathy.Authentication.TLSCertificate" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_MEDIA

The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.Media" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF

The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL

The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL

The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT

The interface name "org.freedesktop.Telepathy.Call1.Content" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS

The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK

The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS

The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION

The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_STREAM_INTERFACE_MEDIA

The interface name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_STREAM

The interface name "org.freedesktop.Telepathy.Call1.Stream" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_STREAM_ENDPOINT

The interface name "org.freedesktop.Telepathy.Call1.Stream.Endpoint" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

#define TP_QT_IFACE_CALL_INTERFACE_MUTE

The interface name "org.freedesktop.Telepathy.Call1.Interface.Mute" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00394.html0000644000175100017520000002171012530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::MediaStreamHandlerTransport Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MediaStreamHandlerTransport Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint componentNumber
 
QString IPAddress
 
uint port
 
uint protocol
 
QString subtype
 
QString profile
 
double preferenceValue
 
uint transportType
 
QString username
 
QString password
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

uint Tp::MediaStreamHandlerTransport::componentNumber
QString Tp::MediaStreamHandlerTransport::IPAddress
uint Tp::MediaStreamHandlerTransport::port
uint Tp::MediaStreamHandlerTransport::protocol
QString Tp::MediaStreamHandlerTransport::subtype
QString Tp::MediaStreamHandlerTransport::profile
double Tp::MediaStreamHandlerTransport::preferenceValue
uint Tp::MediaStreamHandlerTransport::transportType
QString Tp::MediaStreamHandlerTransport::username
QString Tp::MediaStreamHandlerTransport::password


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01355.html0000644000175100017520000001314512530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeContactSearchAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeContactSearchAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AvailableSearchKeys() const Tp::Service::ChannelTypeContactSearchAdaptor
dbusConnection() const Tp::AbstractAdaptor
Limit() const Tp::Service::ChannelTypeContactSearchAdaptor
More(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeContactSearchAdaptorslot
Search(const Tp::ContactSearchMap &terms, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeContactSearchAdaptorslot
SearchResultReceived(const Tp::ContactSearchResultMap &result)Tp::Service::ChannelTypeContactSearchAdaptorsignal
SearchState() const Tp::Service::ChannelTypeContactSearchAdaptor
SearchStateChanged(uint state, const QString &error, const QVariantMap &details)Tp::Service::ChannelTypeContactSearchAdaptorsignal
Server() const Tp::Service::ChannelTypeContactSearchAdaptor
Stop(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeContactSearchAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00139.html0000644000175100017520000003431412530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | List of all members
Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Class Template Reference

Callback with 7 arguments. More...

#include <TelepathyQt/Callbacks>

Inherits Tp::BaseCallback.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
 
typedef R ResultType
 

Public Member Functions

 Callback7 ()
 
template<class Functor >
 Callback7 (const Functor &functor)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
 
- Public Member Functions inherited from Tp::BaseCallback
 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Additional Inherited Members

- Protected Attributes inherited from Tp::BaseCallback
AbstractFunctorCallercaller
 

Detailed Description

template<class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
class Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >

Callback with 7 arguments.

See Callbacks Usage

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
typedef R(* Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
typedef R Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::Callback7 ( )
inline
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
template<class Functor >
Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::Callback7 ( const Functor &  functor)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
ResultType Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6,
Arg7  a7 
) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00954.html0000644000175100017520000002110112530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionAddressingInterface Member List

This is the complete list of members for Tp::BaseConnectionAddressingInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseConnectionAddressingInterface()Tp::BaseConnectionAddressingInterfaceprotected
create()Tp::BaseConnectionAddressingInterfaceinlinestatic
create()Tp::BaseConnectionAddressingInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
GetContactsByURICallback typedefTp::BaseConnectionAddressingInterface
GetContactsByVCardFieldCallback typedefTp::BaseConnectionAddressingInterface
immutableProperties() const Tp::BaseConnectionAddressingInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setGetContactsByURICallback(const GetContactsByURICallback &cb)Tp::BaseConnectionAddressingInterface
setGetContactsByVCardFieldCallback(const GetContactsByVCardFieldCallback &cb)Tp::BaseConnectionAddressingInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionAddressingInterface()Tp::BaseConnectionAddressingInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00453.html0000644000175100017520000003161012530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::PendingVariantMap Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingVariantMap Class Reference

The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant map. More...

#include <TelepathyQt/PendingVariantMap>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingVariantMap (QDBusPendingCall call, const SharedPtr< RefCounted > &object)
 
 ~PendingVariantMap ()
 
QVariantMap result () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant map.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingVariantMap::PendingVariantMap ( QDBusPendingCall  call,
const SharedPtr< RefCounted > &  object 
)
Tp::PendingVariantMap::~PendingVariantMap ( )

Class destructor.

Member Function Documentation

QVariantMap Tp::PendingVariantMap::result ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01169.html0000644000175100017520000000436512530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MailAddress Member List

This is the complete list of members for Tp::MailAddress, including all inherited members.

addressTp::MailAddress
nameTp::MailAddress


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00512.html0000644000175100017520000001377512530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleStatusSpecMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::SimpleStatusSpecMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, SimpleStatusSpec >.

Public Member Functions

 SimpleStatusSpecMap ()
 
 SimpleStatusSpecMap (const QMap< QString, SimpleStatusSpec > &a)
 
SimpleStatusSpecMapoperator= (const QMap< QString, SimpleStatusSpec > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, SimpleStatusSpec>, but needed to have a discrete type in the Qt type system.

A mapping describing possible statuses.

Constructor & Destructor Documentation

Tp::SimpleStatusSpecMap::SimpleStatusSpecMap ( )
inline
Tp::SimpleStatusSpecMap::SimpleStatusSpecMap ( const QMap< QString, SimpleStatusSpec > &  a)
inline

Member Function Documentation

SimpleStatusSpecMap& Tp::SimpleStatusSpecMap::operator= ( const QMap< QString, SimpleStatusSpec > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00267.html0000644000175100017520000024345512530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ConnectionInterface Class Reference

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Connect (int timeout=-1)
 
QDBusPendingReply Disconnect (int timeout=-1)
 
QDBusPendingReply< QStringList > GetInterfaces (int timeout=-1)
 
QDBusPendingReply< QString > GetProtocol (int timeout=-1)
 
QDBusPendingReply< uint > GetSelfHandle (int timeout=-1)
 
QDBusPendingReply< uint > GetStatus (int timeout=-1)
 
QDBusPendingReply HoldHandles (uint handleType, const Tp::UIntList &handles, int timeout=-1)
 
QDBusPendingReply< QStringList > InspectHandles (uint handleType, const Tp::UIntList &handles, int timeout=-1)
 
QDBusPendingReply
< Tp::ChannelInfoList
ListChannels (int timeout=-1)
 
QDBusPendingReply ReleaseHandles (uint handleType, const Tp::UIntList &handles, int timeout=-1)
 
QDBusPendingReply
< QDBusObjectPath > 
RequestChannel (const QString &type, uint handleType, uint handle, bool suppressHandler, int timeout=-1)
 
QDBusPendingReply< Tp::UIntListRequestHandles (uint handleType, const QStringList &identifiers, int timeout=-1)
 
QDBusPendingReply AddClientInterest (const QStringList &tokens, int timeout=-1)
 
QDBusPendingReply RemoveClientInterest (const QStringList &tokens, int timeout=-1)
 

Signals

void SelfHandleChanged (uint selfHandle)
 
void SelfContactChanged (uint selfHandle, const QString &selfID)
 
void NewChannel (const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler)
 
void ConnectionError (const QString &error, const QVariantMap &details)
 
void StatusChanged (uint status, uint reason)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertySelfHandle () const
 
Tp::PendingVariantrequestPropertySelfID () const
 
Tp::PendingVariantrequestPropertyStatus () const
 
Tp::PendingVariantrequestPropertyHasImmortalHandles () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ConnectionInterface::ConnectionInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterface::ConnectionInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterface::ConnectionInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

The set of optional interfaces supported by this connection. Before the connection status changes to CONNECTED, this property may change at any time, but it is guaranteed that interfaces will only be added, not removed. After the connection status changes to CONNECTED, this property cannot change further.

There is no explicit change notification; reasonable behaviour for a client would be to retrieve the interfaces list once initially, and once more when it becomes CONNECTED.

In some connection managers, certain capabilities of a connection are known to be implemented for all connections (e.g. support for SimplePresence), and some interfaces (like SimplePresence) can even be used before connecting. Other capabilities may or may not exist, depending on server functionality; by the time the connection goes CONNECTED, the connection manager is expected to have evaluated the server's functionality and enabled any extra interfaces for the remainder of the Connection's lifetime.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterface::requestPropertySelfHandle ( ) const
inline

Asynchronous getter for the remote object property SelfHandle of type uint.

The handle which represents the user on this connection, which will remain valid for the lifetime of this connection, or until a change in the user's identifier is signalled by the SelfContactChanged signal. If the connection is not yet in the CONNECTED state, the value of this property MAY be zero.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterface::requestPropertySelfID ( ) const
inline

Asynchronous getter for the remote object property SelfID of type QString.

The identifier which represents the user on this connection, which will remain valid for the lifetime of this connection, or until a change in the user's identifier is signalled by the SelfContactChanged signal. If the connection is not yet in the CONNECTED state, the value of this property MAY be empty string.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterface::requestPropertyStatus ( ) const
inline

Asynchronous getter for the remote object property Status of type uint.

The current status of the connection. Change notification is via the StatusChanged() signal.

If retrieval of property succeeds and yields the value Disconnected, this indicates that the connection has not yet been established. If connection has been attempted and failed, the Connection object SHOULD be removed from the bus entirely, meaning that retrieval of this property SHOULD fail.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterface::requestPropertyHasImmortalHandles ( ) const
inline

Asynchronous getter for the remote object property HasImmortalHandles of type bool.

True if handles last for the whole lifetime of the Connection. This SHOULD be the case in all connection managers, but clients MUST interoperate with older connection managers (which reference-count handles).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterface::Connect ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Connect on the remote object.

Request that the connection be established. This will be done asynchronously and errors will be returned by emitting StatusChanged() signals.

Calling this method on a Connection that is already connecting or connected is allowed, and has no effect.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterface::Disconnect ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Disconnect on the remote object.

Request that the connection be closed. This closes the connection if it's not already in DISCONNECTED state, and destroys the connection object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QStringList> Tp::Client::ConnectionInterface::GetInterfaces ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetInterfaces on the remote object.

Returns the set of optional interfaces supported by this connection. See Interfaces for more details.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The value of the Interfaces property
QDBusPendingReply<QString> Tp::Client::ConnectionInterface::GetProtocol ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetProtocol on the remote object.

Get the protocol this connection is using.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
A string identifier for the protocol
QDBusPendingReply<uint> Tp::Client::ConnectionInterface::GetSelfHandle ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetSelfHandle on the remote object.

Returns the value of the SelfHandle property. Change notification is via the SelfHandleChanged signal.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The value of the SelfHandle property
QDBusPendingReply<uint> Tp::Client::ConnectionInterface::GetStatus ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetStatus on the remote object.

Get the current status as defined in the StatusChanged signal.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The value of the Status property
QDBusPendingReply Tp::Client::ConnectionInterface::HoldHandles ( uint  handleType,
const Tp::UIntList handles,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method HoldHandles on the remote object.

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, this method does nothing and returns successfully, unless the given handle type or any of the given handles is invalid.

In older connection managers, this method notifies the connection manger that your client is holding a copy of handles which may not be in use in any existing channel or list, and were not obtained by using the RequestHandles() method. For example, a handle observed in an emitted signal, or displayed somewhere in the UI that is not associated with a channel. The connection manager must not deallocate a handle where any clients have used this method to indicate it is in use until the ReleaseHandles() method is called, or the clients disappear from the bus.

Note that HoldHandles is idempotent - calling it multiple times is equivalent to calling it once. If a handle is "referenced" by several components which share a D-Bus unique name, the client should perform reference counting internally, and only call ReleaseHandles when none of the cooperating components need the handle any longer.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handleType
The type of handle to be held
handles
A array of integer handles to hold
timeoutThe timeout in milliseconds.
QDBusPendingReply<QStringList> Tp::Client::ConnectionInterface::InspectHandles ( uint  handleType,
const Tp::UIntList handles,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method InspectHandles on the remote object.

Return a string representation for a number of handles of a given type.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handleType
The type of handle to be inspected
handles
An array of integer handles of this type
timeoutThe timeout in milliseconds.
Returns
An array of identifiers corresponding to the given handles, in the 
same order.
QDBusPendingReply<Tp::ChannelInfoList> Tp::Client::ConnectionInterface::ListChannels ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListChannels on the remote object.

List all the channels which currently exist on this connection.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of structs representing channels.
QDBusPendingReply Tp::Client::ConnectionInterface::ReleaseHandles ( uint  handleType,
const Tp::UIntList handles,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ReleaseHandles on the remote object.

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, this method does nothing and returns successfully, unless the given handle type or any of the given handles is invalid. In older connection managers, this method explicitly notifies the connection manager that your client is no longer holding any references to the given handles, and that they may be deallocated if they are not held by any other clients or referenced by any existing channels. See HoldHandles for notes.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handleType
An integer handle type (as defined in RequestHandle)
handles
An array of integer handles being held by the client
timeoutThe timeout in milliseconds.
QDBusPendingReply<QDBusObjectPath> Tp::Client::ConnectionInterface::RequestChannel ( const QString &  type,
uint  handleType,
uint  handle,
bool  suppressHandler,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestChannel on the remote object.

Request a channel satisfying the specified type and communicating with the contact, room, list etc. indicated by the given handle_type and handle. The handle_type and handle may both be zero to request the creation of a new, empty channel, which may or may not be possible, depending on the protocol and channel type.

On success, the returned channel will always be of the requested type (i.e. implement the requested channel-type interface).

If a new, empty channel is requested, on success the returned channel will always be an "anonymous" channel for which the type and handle are both zero.

If a channel to a contact, room etc. is requested, on success, the returned channel may either be a new or existing channel to the requested entity (i.e. its ChannelInterface::TargetHandleType and ChannelInterface::TargetHandle properties are the requested handle type and handle), or a newly created "anonymous" channel associated with the requested handle in some implementation-specific way.

For example, for a contact handle, the returned channel might be "anonymous", but implement the groups interface and have the requested contact already present among the members.

If the request cannot be satisfied, an error is raised and no channel is created.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
type
A D-Bus interface name representing base channel type
handleType
An integer representing the handle type, or Handle_Type_None if no 
handle is specified
handle
A nonzero integer handle representing a contact, room, list etc. 
according to handle_type, or zero if the handle_type is 
Handle_Type_None
suppressHandler
Clients SHOULD always set this to true. The historical meaning was 
that clients that did not intend to take responsibility for 
displaying the channel to the user could set this to FALSE, in 
which case the channel dispatcher would launch an appropriate 
channel handler. However, clients whose functionality relies on 
having a working channel dispatcher should obtain that 
functionality by calling methods on the channel dispatcher, so that 
they will get an appropriate error if the channel dispatcher is 
missing or not working. The channel dispatcher itself should set 
this to true too, so that it will ignore the NewChannel signal that 
results from the creation of the channel. It can then dispatch the 
channel returned from this method to an appropriate handler. So, 
there is no sensible use-case for setting this to false, and 
setting it to false can result in unhandled channels (in the case 
where clients assume that a channel dispatcher is present, but it 
isn&apos;t).
timeoutThe timeout in milliseconds.
Returns
The D-Bus object path for the channel created or retrieved
QDBusPendingReply<Tp::UIntList> Tp::Client::ConnectionInterface::RequestHandles ( uint  handleType,
const QStringList &  identifiers,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestHandles on the remote object.

Request several handles from the connection manager which represent a number of contacts, rooms or server-stored lists on the service.

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, the handles remain valid until the connection disconnects.

The implementation of this method in older connection managers must record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ReleaseHandles() method. Where the identifier refers to an entity that already has a handle in this connection manager, this handle should be returned instead. The handle number 0 must not be returned by the connection manager.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handleType
The type of handle required
identifiers
An array of identifiers of entities to request handles for
timeoutThe timeout in milliseconds.
Returns
An array of integer handle numbers in the same order as the given 
identifiers.
QDBusPendingReply Tp::Client::ConnectionInterface::AddClientInterest ( const QStringList &  tokens,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddClientInterest on the remote object.

Register a client's interest in notifications related to one or more interfaces.

Groups of notifications are identified by a token which is either a D-Bus interface name, or a string that starts with a D-Bus interface name. The meaning of each token is given by that D-Bus interface, which MUST define it in its documentation.

Initially, all interests are in entire interface, but allowing other strings allows subscription to part of an interface; for instance, an interest in ...MailNotification/count could track the number of messages without caring about their detailed content.

For each token with which this method interacts, the Connection tracks an "interest count" (like a reference count) for each unique bus name that has called this method. When a client calls this method, for each token, the interest count for its unique bus name is incremented; when RemoveClientInterest() is called, all interest counts for that unique bus name are decremented. If the unique bus name leaves the bus (for instance, if the client crashes or exits), all interest counts for that unique bus name are set to zero.

The Connection can then use these reference counts to avoid subscribing to protocol-level notifications unless at least one client has a non-zero interest count for the relevant token.

This method exists to reduce memory and network overhead when there is no active subscription.

One situation where this is useful is ConnectionInterfaceLocationInterface : on XMPP, location updates are received over PEP. If the Connection advertises the geoloc+notify capability, it will be sent location updates for all contacts. To avoid consuming resources for this, the connection should avoid advertising that capability until a client has expressed an interest in contacts' locations.

Another example of a protocol that benefits from this method is the Google XMPP Mail Notification extension, which can be used to implement ConnectionInterfaceMailNotificationInterface . In this protocol, the CM receives a notification that something has changed, but to get more information, the CM must request this information. Knowing that nobody is currently interested in this information, the CM can avoid generating useless network traffic. Similarly, the CM may free the list of unread messages to reduce memory overhead.

If this method is called for an interface that might require protocol-level subscription, but the connection cannot set up that subscription yet (for instance because the Status is not Connected yet), the Connection MUST remember the client's interest, and attempt to subscribe to the appropriate protocol feature when this becomes possible.

Clients MAY ignore any errors raised by this method; it is intended to be called with the reply ignored.

The only reason it could fail is if it's unimplemented, in which case the only thing the client can usefully do is to proceed as if it had succeeded.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
tokens

Interfaces or parts of interfaces in which to register an interest, represented by either a DBus_Interface, or a string prefixed with a DBus_Interface.

If the Connection does not support one of these tokens, this is not considered to be an error; the unsupported token is simply ignored.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterface::RemoveClientInterest ( const QStringList &  tokens,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveClientInterest on the remote object.

Release an interest registered using AddClientInterest() . See that method's documentation for details.

Clients MAY ignore any errors raised by this method; it is intended to be called with the reply ignored.

The only reasons it could fail are if it's unimplemented, or if the client's reference-counting is wrong and it has tried to remove a client interest that it did not add. In both cases, there's nothing the client could do about it.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
tokens

Interfaces or parts of interfaces that were previously passed to AddClientInterest() .

timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterface::SelfHandleChanged ( uint  selfHandle)
signal

Represents the signal SelfHandleChanged on the remote object.

Emitted whenever the SelfHandle property changes. If the connection is not yet in the CONNECTED state, this signal is not guaranteed to be emitted.

Parameters
selfHandle
The new value of the SelfHandle property.
void Tp::Client::ConnectionInterface::SelfContactChanged ( uint  selfHandle,
const QString &  selfID 
)
signal

Represents the signal SelfContactChanged on the remote object.

Emitted whenever the SelfHandle and SelfID property changes. If the connection is not yet in the CONNECTED state, this signal is not guaranteed to be emitted.

Parameters
selfHandle
The new value of the SelfHandle property.
selfID
The new value of the SelfID property.
void Tp::Client::ConnectionInterface::NewChannel ( const QDBusObjectPath &  objectPath,
const QString &  channelType,
uint  handleType,
uint  handle,
bool  suppressHandler 
)
signal

Represents the signal NewChannel on the remote object.

Emitted when a new Channel object is created, either through user request or incoming information from the service.

Parameters
objectPath
A D-Bus object path for the channel object on this service
channelType
A D-Bus interface name representing the channel type
handleType
An integer representing the type of handle this channel 
communicates with, or Handle_Type_None if no handle is specified
handle
A handle indicating the specific contact, room or list this channel 
communicates with, or zero if no handle is specified
suppressHandler

If true, the channel was requested by a client that intends to present it to the user itself (i.e. it passed suppress_handler=TRUE to the RequestChannel() method), so no other handler should be launched. Clients MAY assume that channels where this is true were created by a user request.

If false, either the channel was created due to incoming information from the service, or the channel was requested by a local client that does not intend to handle the channel itself (this usage is deprecated).

Clients MUST NOT assume that only incoming channels will have this flag set to false.

void Tp::Client::ConnectionInterface::ConnectionError ( const QString &  error,
const QVariantMap &  details 
)
signal

Represents the signal ConnectionError on the remote object.

Emitted when an error occurs that renders this connection unusable.

Whenever this signal is emitted, it MUST immediately be followed by a StatusChanged() signal with status Connection_Status_Disconnected and an appropriate reason code.

Connection managers SHOULD emit this signal on disconnection, but need not do so. Clients MUST support connection managers that emit StatusChanged(Disconnected, ...) without first emitting ConnectionError.

This signal provides additional information about the reason for disconnection. The reason for connection is always straightforward - it was requested - so it does not need further explanation. However, on errors, it can be useful to provide additional information.

The Connection_Status_Reason is not given here, since it will be signalled in StatusChanged() . A reasonable client implementation would be to store the information given by this signal until StatusChanged is received, at which point the information given by this signal can be used to supplement the StatusChanged signal.

Parameters
error
The name of a D-Bus error describing the error that occurred, which 
may correspond to a Connection_Status_Reason, or may be a more 
specific Telepathy error (such as 
org.freedesktop.Telepathy.Error.ConnectionRefused for 
Connection_Status_Reason_Network_Error) or a protocol-specific or 
connection-manager-specific error in a suitable namespace. For 
instance, a SIP connection manager could signal &quot;402 Payment 
Required&quot; as an error in a connection-manager-specific 
namespace, or a link-local XMPP implementation that used Avahi 
could provide the error given to it by the avahi-daemon.
details

Additional information about the error, which may include the following well-known keys:

debug-message (s)
Debugging information on the change, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances
server-message (s)
A human-readable message from the server explaining what happened. This may be in the user's native language, or in the server operator's native language, or even in Lojban.
user-requested (b), expected-hostname (s), certificate-hostname (s)
The same details defined in TLS_Certificate_Rejection.
void Tp::Client::ConnectionInterface::StatusChanged ( uint  status,
uint  reason 
)
signal

Represents the signal StatusChanged on the remote object.

Emitted when the status of the connection changes. All states and reasons have numerical values, as defined in ConnectionStatus and ConnectionStatusReason.

Parameters
status
An integer indicating the new status, as defined by ConnectionStatus
reason
An integer indicating the reason for the status change, as defined 
by ConnectionStatusReason
void Tp::Client::ConnectionInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01228.html0000644000175100017520000000534612530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactPresences Member List

This is the complete list of members for Tp::ContactPresences, including all inherited members.

ContactPresences()Tp::ContactPresencesinline
ContactPresences(const QMap< uint, LastActivityAndStatuses > &a)Tp::ContactPresencesinline
operator=(const QMap< uint, LastActivityAndStatuses > &a)Tp::ContactPresencesinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func.html0000644000175100017520000010101012530426260023326 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- a -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00326.html0000644000175100017520000006010712530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::ContactMessenger Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | List of all members
Tp::ContactMessenger Class Reference

The ContactMessenger class provides an easy way to send text messages to a contact and also track sent/receive text messages from the same contact. More...

#include <TelepathyQt/ContactMessenger>

Inherits QObject, and Tp::RefCounted.

Signals

void messageSent (const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel)
 
void messageReceived (const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel)
 

Public Member Functions

virtual ~ContactMessenger ()
 
AccountPtr account () const
 
QString contactIdentifier () const
 
QList< TextChannelPtr > textChats () const
 
PendingSendMessagesendMessage (const QString &text, ChannelTextMessageType type=ChannelTextMessageTypeNormal, MessageSendingFlags flags=0)
 
PendingSendMessagesendMessage (const MessageContentPartList &parts, MessageSendingFlags flags=0)
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static ContactMessengerPtr create (const AccountPtr &account, const ContactPtr &contact)
 
static ContactMessengerPtr create (const AccountPtr &account, const QString &contactIdentifier)
 

Detailed Description

The ContactMessenger class provides an easy way to send text messages to a contact and also track sent/receive text messages from the same contact.

Constructor & Destructor Documentation

Tp::ContactMessenger::~ContactMessenger ( )
virtual

Class destructor.

Member Function Documentation

ContactMessengerPtr Tp::ContactMessenger::create ( const AccountPtr &  account,
const ContactPtr &  contact 
)
static

Create a new ContactMessenger object.

Parameters
accountThe account this messenger is communicating with.
contactThe contact this messenger is communicating with.
Returns
An ContactMessengerPtr object pointing to the newly created ContactMessenger object, or a null ContactMessengerPtr if contact is null.
ContactMessengerPtr Tp::ContactMessenger::create ( const AccountPtr &  account,
const QString &  contactIdentifier 
)
static

Create a new ContactMessenger object.

Parameters
accountThe account this messenger is communicating with.
contactIdentifierThe identifier of the contact this messenger is communicating with.
Returns
An ContactMessengerPtr object pointing to the newly created ContactMessenger object, or a null ContactMessengerPtr if contact is null.
AccountPtr Tp::ContactMessenger::account ( ) const

Return the account this messenger is communicating with.

Returns
A pointer to the Account object.
QString Tp::ContactMessenger::contactIdentifier ( ) const

Return the identifier of the contact this messenger is communicating with.

Returns
The identifier of the contact.
QList< TextChannelPtr > Tp::ContactMessenger::textChats ( ) const

Return the list of text chats currently being observed.

Returns
A list of pointers to TextChannel objects.
PendingSendMessage * Tp::ContactMessenger::sendMessage ( const QString &  text,
ChannelTextMessageType  type = ChannelTextMessageTypeNormal,
MessageSendingFlags  flags = 0 
)

Send a message to the contact identified by contactIdentifier() using account().

Note that the return from this method isn't ordered in any sane way, meaning that messageSent() can be signalled either before or after the returned PendingSendMessage object finishes.

Parameters
textThe message text.
typeThe message type.
flagsThe message flags.
Returns
A PendingSendMessage which will emit PendingSendMessage::finished once the reply is received and that can be used to check whether sending the message succeeded or not.
PendingSendMessage * Tp::ContactMessenger::sendMessage ( const MessageContentPartList parts,
MessageSendingFlags  flags = 0 
)

Send a message to the contact identified by contactIdentifier() using account().

Note that the return from this method isn't ordered in any sane way, meaning that messageSent() can be signalled either before or after the returned PendingSendMessage object finishes.

Parameters
partsThe message parts.
flagsThe message flags.
Returns
A PendingSendMessage which will emit PendingSendMessage::finished once the reply is received and that can be used to check whether sending the message succeeded or not.
void Tp::ContactMessenger::messageSent ( const Tp::Message message,
Tp::MessageSendingFlags  flags,
const QString &  sentMessageToken,
const Tp::TextChannelPtr &  channel 
)
signal

Emitted whenever a text message on account() is sent to the contact identified by contactIdentifier().

Parameters
messageThe message sent.
flagsThe flags of the message that was sent.
sentMessageTokenThe token of the message that was sent.
channelThe channel from which the message was sent.
void Tp::ContactMessenger::messageReceived ( const Tp::ReceivedMessage message,
const Tp::TextChannelPtr &  channel 
)
signal

Emitted whenever a text message on account() is received from the contact identified by contactIdentifier().

Parameters
messageThe message received.
channelThe channel from which the message was received.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01297.html0000644000175100017520000002202212530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceAddressingInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceAddressingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceAddressingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAddressingInterface
ConnectionInterfaceAddressingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAddressingInterface
ConnectionInterfaceAddressingInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceAddressingInterface
ConnectionInterfaceAddressingInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceAddressingInterfaceexplicit
ConnectionInterfaceAddressingInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceAddressingInterface
GetContactsByURI(const QStringList &URIs, const QStringList &interfaces, int timeout=-1)Tp::Client::ConnectionInterfaceAddressingInterfaceinlineslot
GetContactsByVCardField(const QString &field, const QStringList &addresses, const QStringList &interfaces, int timeout=-1)Tp::Client::ConnectionInterfaceAddressingInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceAddressingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceAddressingInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceAddressingInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00080.html0000644000175100017520000031040612530426257021134 0ustar00kaffeinekaffeine00000000000000 Tp::AccountManager Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Tp::AccountManager Class Reference

The AccountManager class represents a Telepathy account manager. More...

#include <TelepathyQt/AccountManager>

Inherits Tp::StatelessDBusProxy, and Tp::OptionalInterfaceFactory< AccountManager >.

Signals

void newAccount (const Tp::AccountPtr &account)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~AccountManager ()
 
AccountFactoryConstPtr accountFactory () const
 
ConnectionFactoryConstPtr connectionFactory () const
 
ChannelFactoryConstPtr channelFactory () const
 
ContactFactoryConstPtr contactFactory () const
 
QList< AccountPtr > allAccounts () const
 
AccountSetPtr validAccounts () const
 
AccountSetPtr invalidAccounts () const
 
AccountSetPtr enabledAccounts () const
 
AccountSetPtr disabledAccounts () const
 
AccountSetPtr onlineAccounts () const
 
AccountSetPtr offlineAccounts () const
 
AccountSetPtr textChatAccounts () const
 
AccountSetPtr textChatroomAccounts () const
 
AccountSetPtr audioCallAccounts () const
 
AccountSetPtr videoCallAccounts () const
 
AccountSetPtr streamedMediaCallAccounts () const
 
AccountSetPtr streamedMediaAudioCallAccounts () const
 
AccountSetPtr streamedMediaVideoCallAccounts () const
 
AccountSetPtr streamedMediaVideoCallWithAudioAccounts () const
 
AccountSetPtr fileTransferAccounts () const
 
AccountSetPtr accountsByProtocol (const QString &protocolName) const
 
AccountSetPtr filterAccounts (const AccountFilterConstPtr &filter) const
 
AccountSetPtr filterAccounts (const QVariantMap &filter) const
 
AccountPtr accountForObjectPath (const QString &path) const
 
AccountPtr accountForPath (const QString &path) const
 
QList< AccountPtr > accountsForObjectPaths (const QStringList &paths) const
 
QList< AccountPtr > accountsForPaths (const QStringList &paths) const
 
QStringList supportedAccountProperties () const
 
PendingAccountcreateAccount (const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties=QVariantMap())
 
- Public Member Functions inherited from Tp::StatelessDBusProxy
 StatelessDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatelessDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< AccountManager >
 OptionalInterfaceFactory (AccountManager *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static AccountManagerPtr create (const QDBusConnection &bus)
 
static AccountManagerPtr create (const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static AccountManagerPtr create (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 

Static Public Attributes

static const Feature FeatureCore
 

Protected Member Functions

 AccountManager (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature)
 
Client::AccountManagerInterfacebaseInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< AccountManager >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< AccountManager >
enum  InterfaceSupportedChecking
 

Detailed Description

The AccountManager class represents a Telepathy account manager.

The remote object accessor functions on this object (allAccounts(), validAccounts(), and so on) don't make any D-Bus calls; instead, they return/use values cached from a previous introspection run. The introspection process populates their values in the most efficient way possible based on what the service implements.

To avoid unnecessary D-Bus traffic, some accessors only return valid information after AccountManager::FeatureCore has been enabled. See the individual methods descriptions for more details.

AccountManager features can be enabled by calling becomeReady() with the desired set of features as an argument (currently only AccountManager::FeatureCore is supported), and waiting for the resulting PendingOperation to finish.

All accounts returned by AccountManager are guaranteed to have the features set in the AccountFactory used by it ready.

A signal is emitted to indicate that accounts are added. See newCreated() for more details.

Usage

Creating an AccountManager object

One way to create an AccountManager object is to just call the create method. For example:

AccountManagerPtr am = AccountManager::create();

An AccountManagerPtr object is returned, which will automatically keep track of object lifetime.

You can also provide a D-Bus connection as a QDBusConnection:

AccountManagerPtr am = AccountManager::create(QDBusConnection::sessionBus());

Making AccountManager ready to use

An AccountManager object needs to become ready before usage, meaning that the introspection process finished and the object accessors can be used.

To make the object ready, use becomeReady() and wait for the PendingOperation::finished() signal to be emitted.

*
* class MyClass : public QObject
* {
* QOBJECT
*
* public:
* MyClass(QObject *parent = 0);
* ~MyClass() { }
*
* private Q_SLOTS:
* void onAccountManagerReady(Tp::PendingOperation*);
*
* private:
* AccountManagerPtr mAM;
* };
*
* MyClass::MyClass(QObject *parent)
* : QObject(parent)
* {
* connect(mAM->becomeReady(),
* SIGNAL(finished(Tp::PendingOperation*)),
* SLOT(onAccountManagerReady(Tp::PendingOperation*)));
* }
*
* void MyClass::onAccountManagerReady(Tp::PendingOperation *op)
* {
* if (op->isError()) {
* qWarning() << "Account manager cannot become ready:" <<
* op->errorName() << "-" << op->errorMessage();
* return;
* }
*
* // AccountManager is now ready
* qDebug() << "All accounts:";
* foreach (const Tp::AccountPtr &acc, mAM->allAccounts()) {
* qDebug() << " path:" << acc->objectPath();
* }
* }
*
*

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::AccountManager::~AccountManager ( )
virtual

Class destructor.

Tp::AccountManager::AccountManager ( const QDBusConnection &  bus,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory,
const Feature coreFeature 
)
protected

Construct a new AccountManager object using the given bus and the given factories.

The connection, channel and contact factories are passed to any Account objects created by this account manager object. In fact, they're not used directly by AccountManager at all.

A warning is printed if the factories are not for bus.

Parameters
busQDBusConnection to use.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
coreFeatureThe core feature of the Account subclass. The corresponding introspectable should depend on AccountManager::FeatureCore.

Member Function Documentation

AccountManagerPtr Tp::AccountManager::create ( const QDBusConnection &  bus)
static

Create a new AccountManager object using the given bus.

The instance will use an account factory creating Tp::Account objects with Account::FeatureCore ready, a connection factory creating Tp::Connection objects with no features ready, a channel factory creating stock Tp::Channel subclasses, as appropriate, with no features ready, and a contact factory creating Tp::Contact objects with no features ready.

Parameters
busQDBusConnection to use.
Returns
An AccountManagerPtr object pointing to the newly created AccountManager object.
AccountManagerPtr Tp::AccountManager::create ( const AccountFactoryConstPtr &  accountFactory = AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore),
const ConnectionFactoryConstPtr &  connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()),
const ChannelFactoryConstPtr &  channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()),
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new AccountManager using QDBusConnection::sessionBus() and the given factories.

The connection, channel and contact factories are passed to any Account objects created by this account manager object. In fact, they're not used directly by AccountManager at all.

A warning is printed if the factories are for a bus different from QDBusConnection::sessionBus().

Parameters
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
An AccountManagerPtr object pointing to the newly created AccountManager object.
AccountManagerPtr Tp::AccountManager::create ( const QDBusConnection &  bus,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new AccountManager using the given bus and the given factories.

The connection, channel and contact factories are passed to any Account objects created by this account manager object. In fact, they're not used directly by AccountManager at all.

A warning is printed if the factories are not for bus.

Parameters
busQDBusConnection to use.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
An AccountManagerPtr object pointing to the newly created AccountManager object.
AccountFactoryConstPtr Tp::AccountManager::accountFactory ( ) const

Return the account factory used by this account manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the AccountFactory object.
ConnectionFactoryConstPtr Tp::AccountManager::connectionFactory ( ) const

Return the connection factory used by this account manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ConnectionFactory object.
ChannelFactoryConstPtr Tp::AccountManager::channelFactory ( ) const

Return the channel factory used by this account manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ChannelFactory object.
ContactFactoryConstPtr Tp::AccountManager::contactFactory ( ) const

Return the contact factory used by this account manager.

Only read access is provided. This allows constructing object instances and examining the object construction settings, but not changing settings. Allowing changes would lead to tricky situations where objects constructed at different times by the manager would have unpredictably different construction settings (eg. subclass).

Returns
A read-only pointer to the ContactFactory object.
QList< AccountPtr > Tp::AccountManager::allAccounts ( ) const

Return a list containing all accounts.

Newly accounts added and/or discovered are signaled via newAccount().

This method requires AccountManager::FeatureCore to be ready.

Returns
A list of pointers to Account objects.
AccountSetPtr Tp::AccountManager::validAccounts ( ) const

Return a set of accounts containing all valid accounts.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::invalidAccounts ( ) const

Return a set of accounts containing all invalid accounts.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::enabledAccounts ( ) const

Return a set of accounts containing all enabled accounts.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::disabledAccounts ( ) const

Return a set of accounts containing all disabled accounts.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::onlineAccounts ( ) const

Return a set of accounts containing all online accounts.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::offlineAccounts ( ) const

Return a set of accounts containing all offline accounts.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::textChatAccounts ( ) const

Return a set of accounts containing all accounts that support text chats by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::textChatroomAccounts ( ) const

Return a set of accounts containing all accounts that support text chat rooms.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::audioCallAccounts ( ) const

Return a set of accounts containing all accounts that support audio calls (using the Call interface) by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::videoCallAccounts ( ) const

Return a set of accounts containing all accounts that support video calls (using the Call interface) by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::streamedMediaCallAccounts ( ) const

Return a set of accounts containing all accounts that support media calls (using the StreamedMedia interface) by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::streamedMediaAudioCallAccounts ( ) const

Return a set of accounts containing all accounts that support audio calls (using the StreamedMedia interface) by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::streamedMediaVideoCallAccounts ( ) const

Return a set of accounts containing all accounts that support video calls (using the StreamedMedia interface) by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::streamedMediaVideoCallWithAudioAccounts ( ) const

Return a set of accounts containing all accounts that support video calls with audio (using the StreamedMedia interface) by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::fileTransferAccounts ( ) const

Return a set of accounts containing all accounts that support file transfers by providing a contact identifier.

For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities ready.

This method requires AccountManager::FeatureCore to be ready.

Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::accountsByProtocol ( const QString &  protocolName) const

Return a set of accounts containing all accounts for the given protocolName.

This method requires AccountManager::FeatureCore to be ready.

Parameters
protocolNameThe name of the protocol used to filter accounts.
Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::filterAccounts ( const AccountFilterConstPtr &  filter) const

Return a set of accounts containing all accounts that match the given filter criteria.

For AccountCapabilityFilter filtering, an AccountFactory which makes Account::FeatureCapabilities ready must be used.

See AccountSet documentation for more details.

This method requires AccountManager::FeatureCore to be ready.

Parameters
filterThe desired filter.
Returns
A pointer to an AccountSet object containing the matching accounts.
AccountSetPtr Tp::AccountManager::filterAccounts ( const QVariantMap &  filter) const

Return a set of accounts containing all accounts that match the given filter criteria.

The filter is composed by Account property names and values as map items.

The following example will return all jabber accounts that are enabled:

*
* void MyClass::init()
* {
* connect(mAM->becomeReady(),
* SIGNAL(finished(Tp::PendingOperation*)),
* SLOT(onAccountManagerReady(Tp::PendingOperation*)));
* }
*
* void MyClass::onAccountManagerReady(Tp::PendingOperation *op)
* {
* if (op->isError()) {
* qWarning() << "Account manager cannot become ready:" <<
* op->errorName() << "-" << op->errorMessage();
* return;
* }
*
* QVariantMap filter;
* filter.insert(QLatin1String("protocolName"), QLatin1String("jabber"));
* filter.insert(QLatin1String("enabled"), true);
* filteredAccountSet = mAM->filterAccounts(filter);
* // connect to AccountSet::accountAdded/accountRemoved signals
* QList<AccountPtr> accounts = filteredAccountSet->accounts();
* // do something with accounts
* }
*
*

See AccountSet documentation for more details.

This method requires AccountManager::FeatureCore to be ready.

Parameters
filterThe desired filter.
Returns
A pointer to an AccountSet object containing the matching accounts.
AccountPtr Tp::AccountManager::accountForObjectPath ( const QString &  path) const

Return the account for the given path.

This method requires AccountManager::FeatureCore to be ready.

Parameters
pathThe account object path.
Returns
A pointer to an AccountSet object containing the matching accounts.
See Also
allAccounts(), accountsForObjectPaths()
AccountPtr Tp::AccountManager::accountForPath ( const QString &  path) const
QList< AccountPtr > Tp::AccountManager::accountsForObjectPaths ( const QStringList &  paths) const

Return a list of accounts for the given paths.

The returned list will have one AccountPtr object for each given path. If a given path is invalid the returned AccountPtr object will point to 0. AccountPtr::isNull() will return true.

This method requires AccountManager::FeatureCore to be ready.

Parameters
pathsList of accounts object paths.
Returns
A list of pointers to Account objects for the given paths. Null AccountPtr objects will be used as list elements for each invalid path.
See Also
allAccounts(), accountForObjectPath()
QList< AccountPtr > Tp::AccountManager::accountsForPaths ( const QStringList &  paths) const
QStringList Tp::AccountManager::supportedAccountProperties ( ) const

Return a list of the fully qualified names of properties that can be set when calling createAccount().

Returns
A list of fully qualified D-Bus property names, such as "org.freedesktop.Telepathy.Account.Enabled".
See Also
createAccount()
PendingAccount * Tp::AccountManager::createAccount ( const QString &  connectionManager,
const QString &  protocol,
const QString &  displayName,
const QVariantMap &  parameters,
const QVariantMap &  properties = QVariantMap() 
)

Create an account with the given parameters.

The optional properties argument can be used to set any property listed in supportedAccountProperties() at the time the account is created.

Parameters
connectionManagerThe name of the connection manager to create the account for.
protocolThe name of the protocol to create the account for.
displayNameThe account display name.
parametersThe account parameters.
propertiesAn optional map from fully qualified D-Bus property names such as "org.freedesktop.Telepathy.Account.Enabled" to their values.
Returns
A PendingAccount object which will emit PendingAccount::finished when the account has been created of failed its creation process.
See Also
supportedAccountProperties()
void Tp::AccountManager::newAccount ( const Tp::AccountPtr &  account)
signal

Emitted when a new account is created.

The new account will have the features set in the AccountFactory used by this account manager ready and the same connection, channel and contact factories as used by this account manager.

Parameters
accountThe newly created account.
Client::AccountManagerInterface * Tp::AccountManager::baseInterface ( ) const
protected

Return the Client::AccountManagerInterface interface proxy object for this account manager. This method is protected since the convenience methods provided by this class should generally be used instead of calling D-Bus methods directly.

Returns
A pointer to the existing Client::AccountManagerInterface object for this AccountManager object.

Member Data Documentation

const Feature Tp::AccountManager::FeatureCore
static

Feature representing the core that needs to become ready to make the AccountManager object usable.

Note that this feature must be enabled in order to use most AccountManager methods.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01041.html0000644000175100017520000000730212530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Member List

This is the complete list of members for Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, including all inherited members.

fnTp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >
FunctionType typedefTp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >
MemberFunctor6(T *object, FunctionType fn)Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >inline
objectTp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >inline
ResultType typedefTp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00896.html0000644000175100017520000020273512530426257021160 0ustar00kaffeinekaffeine00000000000000 Error string constants
   Home · All Classes · All Namespaces · Modules · Functions · Files
Macros
Error string constants

Macros

#define TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER
 
#define TP_QT_DBUS_ERROR_UNKNOWN_INTERFACE
 
#define TP_QT_DBUS_ERROR_UNKNOWN_METHOD
 
#define TP_QT_ERROR_OBJECT_REMOVED
 
#define TP_QT_ERROR_INCONSISTENT
 
#define TP_QT_ERROR_ORPHANED
 
#define TP_QT_ERROR_NETWORK_ERROR
 
#define TP_QT_ERROR_NOT_IMPLEMENTED
 
#define TP_QT_ERROR_INVALID_ARGUMENT
 
#define TP_QT_ERROR_NOT_AVAILABLE
 
#define TP_QT_ERROR_PERMISSION_DENIED
 
#define TP_QT_ERROR_DISCONNECTED
 
#define TP_QT_ERROR_INVALID_HANDLE
 
#define TP_QT_ERROR_CHANNEL_BANNED
 
#define TP_QT_ERROR_CHANNEL_FULL
 
#define TP_QT_ERROR_CHANNEL_INVITE_ONLY
 
#define TP_QT_ERROR_NOT_YOURS
 
#define TP_QT_ERROR_CANCELLED
 
#define TP_QT_ERROR_AUTHENTICATION_FAILED
 
#define TP_QT_ERROR_ENCRYPTION_NOT_AVAILABLE
 
#define TP_QT_ERROR_ENCRYPTION_ERROR
 
#define TP_QT_ERROR_CERT_NOT_PROVIDED
 
#define TP_QT_ERROR_CERT_UNTRUSTED
 
#define TP_QT_ERROR_CERT_EXPIRED
 
#define TP_QT_ERROR_CERT_NOT_ACTIVATED
 
#define TP_QT_ERROR_CERT_FINGERPRINT_MISMATCH
 
#define TP_QT_ERROR_CERT_HOSTNAME_MISMATCH
 
#define TP_QT_ERROR_CERT_SELF_SIGNED
 
#define TP_QT_ERROR_CERT_REVOKED
 
#define TP_QT_ERROR_CERT_INSECURE
 
#define TP_QT_ERROR_CERT_INVALID
 
#define TP_QT_ERROR_CERT_LIMIT_EXCEEDED
 
#define TP_QT_ERROR_NOT_CAPABLE
 
#define TP_QT_ERROR_OFFLINE
 
#define TP_QT_ERROR_CHANNEL_KICKED
 
#define TP_QT_ERROR_BUSY
 
#define TP_QT_ERROR_NO_ANSWER
 
#define TP_QT_ERROR_DOES_NOT_EXIST
 
#define TP_QT_ERROR_TERMINATED
 
#define TP_QT_ERROR_MEDIA_CODECS_INCOMPATIBLE
 
#define TP_QT_ERROR_MEDIA_UNSUPPORTED_TYPE
 
#define TP_QT_ERROR_MEDIA_STREAMING_ERROR
 
#define TP_QT_ERROR_CONNECTION_REFUSED
 
#define TP_QT_ERROR_CONNECTION_FAILED
 
#define TP_QT_ERROR_CONNECTION_LOST
 
#define TP_QT_ERROR_ALREADY_CONNECTED
 
#define TP_QT_ERROR_CONNECTION_REPLACED
 
#define TP_QT_ERROR_REGISTRATION_EXISTS
 
#define TP_QT_ERROR_SERVICE_BUSY
 
#define TP_QT_ERROR_RESOURCE_UNAVAILABLE
 
#define TP_QT_ERROR_WOULD_BREAK_ANONYMITY
 
#define TP_QT_ERROR_NOT_YET
 
#define TP_QT_ERROR_REJECTED
 
#define TP_QT_ERROR_PICKED_UP_ELSEWHERE
 
#define TP_QT_ERROR_SERVICE_CONFUSED
 
#define TP_QT_ERROR_CONFUSED
 
#define TP_QT_ERROR_SOFTWARE_UPGRADE_REQUIRED
 
#define TP_QT_ERROR_EMERGENCY_CALLS_NOT_SUPPORTED
 
#define TP_QT_ERROR_INSUFFICIENT_BALANCE
 
#define TP_QT_ERROR_CAPTCHA_NOT_SUPPORTED
 

Detailed Description

Names of the D-Bus errors in the specification.

Macro Definition Documentation

#define TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER

The error name "org.freedesktop.DBus.Error.NameHasNoOwner" as a QLatin1String.

Raised by the D-Bus daemon when looking up the owner of a well-known name, if no process owns that name.

Also used by DBusProxy to indicate that the owner of a well-known name has disappeared (usually indicating that the process owning that name exited or crashed).

#define TP_QT_DBUS_ERROR_UNKNOWN_INTERFACE

The error name "org.freedesktop.DBus.Error.UnknownInterface" as a QLatin1String.

#define TP_QT_DBUS_ERROR_UNKNOWN_METHOD

The error name "org.freedesktop.DBus.Error.UnknownMethod" as a QLatin1String.

Raised by the D-Bus daemon when the method name invoked isn't known by the object you invoked it on.

#define TP_QT_ERROR_OBJECT_REMOVED

The error name "org.freedesktop.Telepathy.Qt.Error.ObjectRemoved" as a QLatin1String.

#define TP_QT_ERROR_INCONSISTENT

The error name "org.freedesktop.Telepathy.Qt.Error.Inconsistent" as a QLatin1String.

#define TP_QT_ERROR_ORPHANED

The error name "org.freedesktop.Telepathy.Qt.Error.Orphaned" as a QLatin1String.

This error is used when the "parent" proxy of an object gets invalidated. For example, a Channel whose corresponding Connection is invalidated invalidates itself with this error, as do leftover StreamTube connections when their parent StreamTubeChannel is invalidated. The invalidation reason of the parent proxy might provide more information on the cause of the error.

#define TP_QT_ERROR_NETWORK_ERROR

The error name "org.freedesktop.Telepathy.Error.NetworkError" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when there is an error reading from or writing to the network.

#define TP_QT_ERROR_NOT_IMPLEMENTED

The error name "org.freedesktop.Telepathy.Error.NotImplemented" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the requested method, channel, etc is not available on this connection.

#define TP_QT_ERROR_INVALID_ARGUMENT

The error name "org.freedesktop.Telepathy.Error.InvalidArgument" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when one of the provided arguments is invalid.

#define TP_QT_ERROR_NOT_AVAILABLE

The error name "org.freedesktop.Telepathy.Error.NotAvailable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the requested functionality is temporarily unavailable.

#define TP_QT_ERROR_PERMISSION_DENIED

The error name "org.freedesktop.Telepathy.Error.PermissionDenied" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The user is not permitted to perform the requested operation.

#define TP_QT_ERROR_DISCONNECTED

The error name "org.freedesktop.Telepathy.Error.Disconnected" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The connection is not currently connected and cannot be used. This error may also be raised when operations are performed on a Connection for which StatusChanged has signalled status Disconnected for reason None. The second usage corresponds to None in the Connection_Status_Reason enum; if a better reason is available, the corresponding error should be used instead.

#define TP_QT_ERROR_INVALID_HANDLE

The error name "org.freedesktop.Telepathy.Error.InvalidHandle" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The handle specified is unknown on this channel or connection.

#define TP_QT_ERROR_CHANNEL_BANNED

The error name "org.freedesktop.Telepathy.Error.Channel.Banned" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

You are banned from the channel.

#define TP_QT_ERROR_CHANNEL_FULL

The error name "org.freedesktop.Telepathy.Error.Channel.Full" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The channel is full.

#define TP_QT_ERROR_CHANNEL_INVITE_ONLY

The error name "org.freedesktop.Telepathy.Error.Channel.InviteOnly" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The requested channel is invite-only.

#define TP_QT_ERROR_NOT_YOURS

The error name "org.freedesktop.Telepathy.Error.NotYours" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The requested channel or other resource already exists, and another user interface in this session is responsible for it.

User interfaces SHOULD handle this error unobtrusively, since it indicates that some other user interface is already processing the channel.

#define TP_QT_ERROR_CANCELLED

The error name "org.freedesktop.Telepathy.Error.Cancelled" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised by an ongoing request if it is cancelled by user request before it has completed, or when operations are performed on an object which the user has asked to close (for instance, a Connection where the user has called Disconnect, or a Channel where the user has called Close). The second form can be used to correspond to the Requested member in the Connection_Status_Reason enum, or to to represent the situation where disconnecting a Connection, closing a Channel, etc. has been requested by the user but this request has not yet been acted on, for instance because the service will only act on the request when it has finished processing an event queue.

#define TP_QT_ERROR_AUTHENTICATION_FAILED

The error name "org.freedesktop.Telepathy.Error.AuthenticationFailed" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when authentication with a service was unsuccessful. This corresponds to Authentication_Failed in the Connection_Status_Reason enum.

#define TP_QT_ERROR_ENCRYPTION_NOT_AVAILABLE

The error name "org.freedesktop.Telepathy.Error.EncryptionNotAvailable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if a user request insisted that encryption should be used, but encryption was not actually available. This corresponds to part of Encryption_Error in the Connection_Status_Reason enum. It's been separated into a distinct error here because the two concepts that were part of EncryptionError seem to be things that could reasonably appear differently in the UI.

#define TP_QT_ERROR_ENCRYPTION_ERROR

The error name "org.freedesktop.Telepathy.Error.EncryptionError" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if encryption appears to be available, but could not actually be used (for instance if SSL/TLS negotiation fails). This corresponds to part of Encryption_Error in the Connection_Status_Reason enum.

#define TP_QT_ERROR_CERT_NOT_PROVIDED

The error name "org.freedesktop.Telepathy.Error.Cert.NotProvided" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server did not provide a SSL/TLS certificate. This error MUST NOT be used to represent the absence of a client certificate provided by the Telepathy connection manager. This corresponds to Cert_Not_Provided in the Connection_Status_Reason enum. That error explicitly applied only to server SSL certificates, so this one is similarly limited; having the CM present a client certificate is a possible future feature, but it should have its own error handling.

#define TP_QT_ERROR_CERT_UNTRUSTED

The error name "org.freedesktop.Telepathy.Error.Cert.Untrusted" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided a SSL/TLS certificate signed by an untrusted certifying authority. This error SHOULD NOT be used to represent a self-signed certificate: see the Self Signed error for that. This corresponds to Cert_Untrusted in the Connection_Status_Reason enum and to Untrusted in the TLS_Certificate_Reject_Reason enum, with a clarification to avoid ambiguity.

#define TP_QT_ERROR_CERT_EXPIRED

The error name "org.freedesktop.Telepathy.Error.Cert.Expired" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an expired SSL/TLS certificate. This corresponds to Cert_Expired in the Connection_Status_Reason enum and to Expired in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_NOT_ACTIVATED

The error name "org.freedesktop.Telepathy.Error.Cert.NotActivated" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that will become valid at some point in the future. This corresponds to Cert_Not_Activated in the Connection_Status_Reason enum and to Not_Activated in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_FINGERPRINT_MISMATCH

The error name "org.freedesktop.Telepathy.Error.Cert.FingerprintMismatch" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that did not have the expected fingerprint. This corresponds to Cert_Fingerprint_Mismatch in the Connection_Status_Reason enum and to Fingerprint_Mismatch in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_HOSTNAME_MISMATCH

The error name "org.freedesktop.Telepathy.Error.Cert.HostnameMismatch" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that did not match its hostname.

You MAY be able to get more details about the expected and certified hostnames by looking up the 'expected-hostname' and 'certificate-hostname' keys in the details map that came together with this error.

This corresponds to Cert_Hostname_Mismatch in the Connection_Status_Reason enum and to Hostname_Mismatch in the TLS_Certificate_Reject_Reason enum.
#define TP_QT_ERROR_CERT_SELF_SIGNED

The error name "org.freedesktop.Telepathy.Error.Cert.SelfSigned" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that is self-signed and untrusted. This corresponds to Cert_Self_Signed in the Connection_Status_Reason enum and to Self_Signed in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_REVOKED

The error name "org.freedesktop.Telepathy.Error.Cert.Revoked" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that has been revoked. This corresponds to Cert_Revoked in the Connection_Status_Reason enum and to Revoked in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_INSECURE

The error name "org.freedesktop.Telepathy.Error.Cert.Insecure" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that uses an insecure cipher algorithm or is cryptographically weak. This corresponds to Cert_Insecure in the Connection_Status_Reason enum and to Insecure in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_INVALID

The error name "org.freedesktop.Telepathy.Error.Cert.Invalid" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the server provided an SSL/TLS certificate that is unacceptable in some way that does not have a more specific error. This corresponds to Cert_Other_Error in the Connection_Status_Reason enum and to Unknown in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_CERT_LIMIT_EXCEEDED

The error name "org.freedesktop.Telepathy.Error.Cert.LimitExceeded" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the length in bytes of the server certificate, or the depth of the server certificate chain exceeds the limits imposed by the crypto library. This corresponds to Cert_Limit_Exceeded in the Connection_Status_Reason enum and to Limit_Exceeded in the TLS_Certificate_Reject_Reason enum.

#define TP_QT_ERROR_NOT_CAPABLE

The error name "org.freedesktop.Telepathy.Error.NotCapable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when requested functionality is unavailable due to contact not having required capabilities.

#define TP_QT_ERROR_OFFLINE

The error name "org.freedesktop.Telepathy.Error.Offline" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when requested functionality is unavailable because a contact is offline. This corresponds to Offline in the Channel_Group_Change_Reason enum.

#define TP_QT_ERROR_CHANNEL_KICKED

The error name "org.freedesktop.Telepathy.Error.Channel.Kicked" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Used to represent a user being ejected from a channel by another user, for instance being kicked from a chatroom. This corresponds to Kicked in the Channel_Group_Change_Reason enum.

#define TP_QT_ERROR_BUSY

The error name "org.freedesktop.Telepathy.Error.Busy" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Used to represent a user being removed from a channel because of a "busy" indication. This error SHOULD NOT be used to represent a server or other infrastructure being too busy to process a request - for that, see ServerBusy. This corresponds to Busy in the Channel_Group_Change_Reason enum.

#define TP_QT_ERROR_NO_ANSWER

The error name "org.freedesktop.Telepathy.Error.NoAnswer" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Used to represent a user being removed from a channel because they did not respond, e.g. to a StreamedMedia call. This corresponds to No_Answer in the Channel_Group_Change_Reason enum.

#define TP_QT_ERROR_DOES_NOT_EXIST

The error name "org.freedesktop.Telepathy.Error.DoesNotExist" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the requested user does not, in fact, exist. This corresponds to Invalid_Contact in the Channel_Group_Change_Reason enum, but can also be used to represent other things not existing (like chatrooms, perhaps).

#define TP_QT_ERROR_TERMINATED

The error name "org.freedesktop.Telepathy.Error.Terminated" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when a channel is terminated for an unspecified reason. In particular, this error SHOULD be used whenever normal termination of a 1-1 StreamedMedia call by the remote user is represented as a D-Bus error name. This corresponds to None in the Channel_Group_Change_Reason enum.

#define TP_QT_ERROR_MEDIA_CODECS_INCOMPATIBLE

The error name "org.freedesktop.Telepathy.Error.Media.CodecsIncompatible" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the local streaming implementation has no codecs in common with the remote side. This corresponds to Media_Error.

#define TP_QT_ERROR_MEDIA_UNSUPPORTED_TYPE

The error name "org.freedesktop.Telepathy.Error.Media.UnsupportedType" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

The media stream type requested is not supported by either the local or remote side. This corresponds to Media_Error.

#define TP_QT_ERROR_MEDIA_STREAMING_ERROR

The error name "org.freedesktop.Telepathy.Error.Media.StreamingError" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the call's streaming implementation has some kind of internal error. This corresponds to Internal_Error.

#define TP_QT_ERROR_CONNECTION_REFUSED

The error name "org.freedesktop.Telepathy.Error.ConnectionRefused" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when a connection is refused.

#define TP_QT_ERROR_CONNECTION_FAILED

The error name "org.freedesktop.Telepathy.Error.ConnectionFailed" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when a connection can't be established.

#define TP_QT_ERROR_CONNECTION_LOST

The error name "org.freedesktop.Telepathy.Error.ConnectionLost" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when a connection is broken.

#define TP_QT_ERROR_ALREADY_CONNECTED

The error name "org.freedesktop.Telepathy.Error.AlreadyConnected" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the user attempts to connect to an account but they are already connected (perhaps from another client or computer), and the protocol or account settings do not allow this. XMPP can have this behaviour if the user chooses the same resource in both clients (it is server-dependent whether the result is AlreadyConnected on the new connection, ConnectionReplaced on the old connection, or two successful connections).

#define TP_QT_ERROR_CONNECTION_REPLACED

The error name "org.freedesktop.Telepathy.Error.ConnectionReplaced" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised by an existing connection to an account if it is replaced by a new connection (perhaps from another client or computer). In MSNP, when connecting twice with the same Passport, the new connection "wins" and the old one is automatically disconnected. XMPP can also have this behaviour if the user chooses the same resource in two clients (it is server-dependent whether the result is AlreadyConnected on the new connection, ConnectionReplaced on the old connection, or two successful connections).

#define TP_QT_ERROR_REGISTRATION_EXISTS

The error name "org.freedesktop.Telepathy.Error.RegistrationExists" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised during in-band registration if the server indicates that the requested account already exists.

#define TP_QT_ERROR_SERVICE_BUSY

The error name "org.freedesktop.Telepathy.Error.ServiceBusy" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if a server or some other piece of infrastructure cannot process the request, e.g. due to resource limitations. Clients MAY try again later.
This is not the same error as Busy, which indicates that a user is busy.
#define TP_QT_ERROR_RESOURCE_UNAVAILABLE

The error name "org.freedesktop.Telepathy.Error.ResourceUnavailable" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if a request cannot be satisfied because a process local to the user has insufficient resources. Clients MAY try again later. For instance, the ChannelDispatcher might raise this error for some or all channel requests if it has detected that there is not enough free memory.

#define TP_QT_ERROR_WOULD_BREAK_ANONYMITY

The error name "org.freedesktop.Telepathy.Error.WouldBreakAnonymity" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if a request cannot be satisfied without violating an earlier request for anonymity, and the earlier request specified that raising an error is preferable to disclosing the user's identity (for instance via Connection.Interface.Anonymity.AnonymityMandatory or Channel.Interface.Anonymity.AnonymityMandatory).

#define TP_QT_ERROR_NOT_YET

The error name "org.freedesktop.Telepathy.Error.NotYet" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when the requested functionality is not yet available, but is likely to become available after some time has passed.

#define TP_QT_ERROR_REJECTED

The error name "org.freedesktop.Telepathy.Error.Rejected" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when an incoming or outgoing Call1 is rejected by the the receiver.

#define TP_QT_ERROR_PICKED_UP_ELSEWHERE

The error name "org.freedesktop.Telepathy.Error.PickedUpElsewhere" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when a call was terminated as a result of the local user picking up the call on a different resource.

#define TP_QT_ERROR_SERVICE_CONFUSED

The error name "org.freedesktop.Telepathy.Error.ServiceConfused" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised when a server or other piece of infrastructure indicates an internal error, or when a message that makes no sense is received from a server or other piece of infrastructure. For instance, this is appropriate for XMPP's internal-server-error, and is also appropriate if you receive sufficiently inconsistent information from a server that you cannot continue.

#define TP_QT_ERROR_CONFUSED

The error name "org.freedesktop.Telepathy.Error.Confused" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if a server rejects protocol messages from a connection manager claiming that they do not make sense, two local processes fail to understand each other, or an apparently impossible situation is reached. For instance, this would be an appropriate mapping for XMPP's errors bad-format, invalid-xml, etc., which can't happen unless the local (or remote) XMPP implementation is faulty. This is also analogous to Invalid_CM_Behavior, TP_DBUS_ERROR_INCONSISTENT in telepathy-glib, and TELEPATHY_QT4_ERROR_INCONSISTENT in telepathy-qt4.

#define TP_QT_ERROR_SOFTWARE_UPGRADE_REQUIRED

The error name "org.freedesktop.Telepathy.Error.SoftwareUpgradeRequired" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised as a ConnectionInterface::ConnectionError() when a Connection cannot be established because either the Connection Manager or its support library (e.g. wocky, papyon, sofiasip) requires upgrading to support a newer protocol version.

This error corresponds to the Connection_Status_Reason of Network_Error.

Some protocols transmit a protocol or library version number to the server, which will disconnect them if the version isn't appropriate. This way we can report the error to the user, and if appropriate, the user's client can check for updates.
#define TP_QT_ERROR_EMERGENCY_CALLS_NOT_SUPPORTED

The error name "org.freedesktop.Telepathy.Error.EmergencyCallsNotSupported" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if a client attempts to dial a number that is recognized as an emergency number (e.g. '911' in the USA), but the Connection Manager or provider does not support dialling emergency numbers. Many VOIP providers have the ability to dial traditional (PSTN) telephone numbers, but do not provide the ability to dial emergency numbers (for instance, Google Voice). This error provides additional information about why such a call was unsuccessful.

#define TP_QT_ERROR_INSUFFICIENT_BALANCE

The error name "org.freedesktop.Telepathy.Error.InsufficientBalance" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the user has insufficient ConnectionInterfaceBalanceInterface to place a call or send a message.

The key 'balance-required' MAY be included in ChannelTypeCallInterface::CallStateDetails or a delivery report's Message_Part (with the same units and scale as ConnectionInterfaceBalanceInterface::AccountBalance ) to indicate how much credit is required to make this call or send this message.

#define TP_QT_ERROR_CAPTCHA_NOT_SUPPORTED

The error name "org.freedesktop.Telepathy.Error.CaptchaNotSupported" as a QLatin1String, usable in QString requiring contexts even when building with Q_NO_CAST_FROM_ASCII defined.

Raised if the ChannelInterfaceCaptchaAuthenticationInterface Handler either has no UI to present captchas, or it does, but wasn't able to answer any of the captchas given.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00686_source.html0000644000175100017520000004343112530426257022531 0ustar00kaffeinekaffeine00000000000000 dbus-proxy.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus-proxy.h
1 
23 #ifndef _TelepathyQt_dbus_proxy_h_HEADER_GUARD_
24 #define _TelepathyQt_dbus_proxy_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/Object>
32 #include <TelepathyQt/ReadyObject>
33 
34 class QDBusConnection;
35 class QDBusError;
36 
37 namespace Tp
38 {
39 
40 class TestBackdoors;
41 
42 class TP_QT_EXPORT DBusProxy : public Object, public ReadyObject
43 {
44  Q_OBJECT
45  Q_DISABLE_COPY(DBusProxy)
46 
47 public:
48  DBusProxy(const QDBusConnection &dbusConnection, const QString &busName,
49  const QString &objectPath, const Feature &featureCore);
50  virtual ~DBusProxy();
51 
52  QDBusConnection dbusConnection() const;
53  QString busName() const;
54  QString objectPath() const;
55 
56  bool isValid() const;
57  QString invalidationReason() const;
58  QString invalidationMessage() const;
59 
60 Q_SIGNALS:
61  void invalidated(Tp::DBusProxy *proxy,
62  const QString &errorName, const QString &errorMessage);
63 
64 protected:
65  void setBusName(const QString &busName);
66  void invalidate(const QString &reason, const QString &message);
67  void invalidate(const QDBusError &error);
68 
69 private Q_SLOTS:
70  TP_QT_NO_EXPORT void emitInvalidated();
71 
72 private:
73  friend class TestBackdoors;
74 
75  struct Private;
76  friend struct Private;
77  Private *mPriv;
78 };
79 
80 class TP_QT_EXPORT StatelessDBusProxy : public DBusProxy
81 {
82  Q_OBJECT
83  Q_DISABLE_COPY(StatelessDBusProxy)
84 
85 public:
86  StatelessDBusProxy(const QDBusConnection &dbusConnection,
87  const QString &busName, const QString &objectPath, const Feature &featureCore);
88  virtual ~StatelessDBusProxy();
89 
90 private:
91  struct Private;
92  friend struct Private;
93  Private *mPriv;
94 };
95 
96 class TP_QT_EXPORT StatefulDBusProxy : public DBusProxy
97 {
98  Q_OBJECT
99  Q_DISABLE_COPY(StatefulDBusProxy)
100 
101 public:
102  StatefulDBusProxy(const QDBusConnection &dbusConnection,
103  const QString &busName, const QString &objectPath, const Feature &featureCore);
104  virtual ~StatefulDBusProxy();
105 
106  static QString uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique);
107  static QString uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique,
108  QString &error, QString &message);
109 
110 private Q_SLOTS:
111  TP_QT_NO_EXPORT void onServiceOwnerChanged(const QString &name, const QString &oldOwner,
112  const QString &newOwner);
113 
114 private:
115  struct Private;
116  friend struct Private;
117  Private *mPriv;
118 };
119 
120 } // Tp
121 
122 #endif
The StatelessDBusProxy class is a base class representing a remote object whose API is basically stat...
Definition: dbus-proxy.h:80
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The Object class provides an object with property notification.
Definition: object.h:39
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
Definition: ready-object.h:42


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00395.html0000644000175100017520000001430412530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::MediaStreamInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Attributes | List of all members
Tp::MediaStreamInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint identifier
 
uint contact
 
uint type
 
uint state
 
uint direction
 
uint pendingSendFlags
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

uint Tp::MediaStreamInfo::identifier
uint Tp::MediaStreamInfo::contact
uint Tp::MediaStreamInfo::type
uint Tp::MediaStreamInfo::state
uint Tp::MediaStreamInfo::direction
uint Tp::MediaStreamInfo::pendingSendFlags


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/hierarchy.html0000644000175100017520000103427312530426260022302 0ustar00kaffeinekaffeine00000000000000 Class Hierarchy
   Home · All Classes · All Namespaces · Modules · Functions · Files
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12345]
oCTp::AbstractFunctorCaller
oCTp::AccessControl
oCTp::AccountCapabilityFilterThe AccountCapabilityFilter class provides a filter object to be used to filter accounts by capabilities
oCTp::AliasPair
oCTp::Avatar
oCTp::AvatarDataThe AvatarData class represents a Telepathy avatar
oCTp::AvatarSpecThe AvatarSpec class represents a Telepathy avatar information supported by a protocol
oCTp::BaseCallbackBase class for all the callback classes
oCTp::BaseFunctor
oCTp::CallStateReason
oCTp::Candidate
oCTp::CandidatePair
oCTp::AbstractClientHandler::CapabilitiesThe AbstractClientHandler::Capabilities class provides a wrapper around the capabilities of a handler
oCTp::CapabilitiesBaseThe CapabilitiesBase class represents the capabilities a Connection or a Contact supports
oCTp::CapabilityChange
oCTp::CapabilityPair
oCTp::CaptchaThe Captcha class represents a Captcha ready to be answered
oCTp::CaptchaInfo
oCTp::ChannelClassSpecThe ChannelClassSpec class represents a Telepathy channel class
oCTp::ChannelDetails
oCTp::ChannelInfo
oCTp::ChannelRequestHintsThe ChannelRequestHints class represents a dictionary of metadata provided by the channel requester when requesting a channel
oCTp::Codec
oCTp::ContactCapability
oCTp::ContactInfoField
oCTp::ContactSubscriptions
oCTp::CurrencyAmount
oCTp::DBusErrorSmall container class, containing a D-Bus error
oCTp::DBusTubeMember
oCTp::DebugMessage
oCTp::ReceivedMessage::DeliveryDetailsThe ReceivedMessage::DeliveryDetails class represents the details of a delivery report
oCTp::Connection::ErrorDetailsThe Connection::ErrorDetails class represents the details of a connection error
oCTp::FieldSpec
oCTp::FileTransferChannelCreationPropertiesThe FileTransferChannelCreationProperties class represents the properties of a file transfer channel request
oCTp::Channel::GroupMemberChangeDetailsThe Channel::GroupMemberChangeDetails class represents the details of a group membership change
oCTp::HandlerCapabilities
oCTp::AbstractClientHandler::HandlerInfoThe AbstractClientHandler::HandlerInfo class provides a wrapper around the additional info about the channels passed to handleChannels()
oCTp::HTTPPostData
oCTp::Contact::InfoFieldsThe Contact::InfoFields class represents the information of a Telepathy contact
oCTp::ReadinessHelper::IntrospectableThe ReadinessHelper::Introspectable class represents a introspectable used by ReadinessHelper
oCTp::LastActivityAndStatuses
oCTp::LocalPendingInfo
oCTp::LocationInfoThe LocationInfo class represents the location of a Telepathy Contact
oCTp::MailAddress
oCTp::MailURL
oCTp::MediaDescriptionOffer
oCTp::MediaSessionHandlerInfo
oCTp::MediaStreamHandlerCandidate
oCTp::MediaStreamHandlerCodec
oCTp::MediaStreamHandlerTransport
oCTp::MediaStreamInfo
oCTp::MessageThe Message class represents a Telepathy message in a TextChannel
oCTp::MessageContentPartThe MessageContentPart class represents a Telepathy message part
oCTp::NotDelegatedError
oCTp::AbstractClientObserver::ObserverInfoThe AbstractClientObserver::ObserverInfo class provides a wrapper around the additional info about the channels passed to observeChannels()
oCTp::OptionalInterfaceFactory< DBusProxySubclass >The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to offer access to shared instances of interface proxies for optional interfaces
oCTp::OptionalInterfaceFactory< Account >
oCTp::OptionalInterfaceFactory< AccountManager >
oCTp::OptionalInterfaceFactory< CallContent >
oCTp::OptionalInterfaceFactory< CallStream >
oCTp::OptionalInterfaceFactory< Channel >
oCTp::OptionalInterfaceFactory< ChannelDispatchOperation >
oCTp::OptionalInterfaceFactory< ChannelRequest >
oCTp::OptionalInterfaceFactory< Connection >
oCTp::OptionalInterfaceFactory< ConnectionManager >
oCTp::Profile::ParameterThe Profile::Parameter class represents a parameter defined in .profile files
oCTp::StreamTubeServer::ParametersGeneratorThe StreamTubeServer::ParametersGenerator abstract interface allows sending a different set of parameters with each tube offer
oCTp::ParamSpec
oCTp::PendingTextMessage
oCTp::PresenceThe Presence class represents a Telepathy simple presence
oCTp::Profile::PresenceThe Profile::Presence class represents a presence defined in .profile files
oCTp::PresenceSpecThe PresenceSpec class represents a Telepathy presence information supported by a protocol
oCTp::PropertyFlagsChange
oCTp::PropertySpec
oCTp::PropertyValue
oCTp::ProtocolInfoThe ProtocolInfo class represents a Telepathy Protocol
oCTp::ProtocolParameterThe ProtocolParameter class represents a Telepathy protocol parameter
oCQDBusAbstractAdaptor
oCQDBusAbstractInterface
oCQList
oCQMap
oCQObject
oCQPair
oCQSet
oCTp::ReadyObject
oCTp::RefCountedThe RefCounted class is a base class for shared objects used by SharedPtr
oCTp::ReferencedHandlesHelper container for safe management of handle lifetimes. Every handle in a ReferencedHandles container is guaranteed to be valid (and stay valid, as long it's in at least one ReferencedHandles container)
oCTp::RequestableChannelClass
oCTp::RequestableChannelClassSpecThe RequestableChannelClassSpec class represents a Telepathy requestable channel class
oCTp::RichPresenceAccessControl
oCTp::RoomInfo
oCTp::RTCPFeedbackMessage
oCTp::RTCPFeedbackMessageProperties
oCTp::RTPHeaderExtension
oCTp::ContactSearchChannel::SearchStateChangeDetailsThe ContactSearchChannel::SearchStateChangeDetails class provides a wrapper around the details for a search state change
oCTp::ServicePoint
oCTp::ServicePointInfo
oCTp::SharedPtr< T >The SharedPtr class is a pointer to an explicitly shared object
oCTp::SharedPtr< const Tp::Filter< T > >
oCTp::SharedPtr< RequestTemporaryHandler >
oCTp::SharedPtr< Tp::RefCounted >
oCTp::SharedPtr< Tp::SimpleStreamTubeHandler >
oCTp::SimplePresence
oCTp::SimpleStatusSpec
oCTp::SocketAddressIP
oCTp::SocketAddressIPv4
oCTp::SocketAddressIPv6
oCTp::SocketNetmaskIPv4
oCTp::SocketNetmaskIPv6
oCTp::StatusSpec
oCTp::StreamCredentials
oCTp::StreamTubeClient::TcpSourceAddressGeneratorThe StreamTubeClient::TcpSourceAddressGenerator abstract interface allows using socket source address/port based access control for connecting to tubes accepted as TCP sockets
oCTp::TLSCertificateRejection
oCTp::TubeInfo
oCTp::VideoResolution
oCTp::WeakPtr< T >The WeakPtr class holds a weak reference to an object managed by SharedPtr
oCTp::WeakPtr< Tp::CallChannel >
oCTp::WeakPtr< Tp::CallContent >
oCTp::WeakPtr< Tp::Connection >
oCTp::WeakPtr< Tp::ContactManager >
oCTp::WeakPtr< Tp::StreamedMediaChannel >
\CTp::WeakPtr< Tp::TextChannel >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01356.html0000644000175100017520000001133012530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeDBusTubeAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeDBusTubeAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
Accept(uint accesscontrol, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeDBusTubeAdaptorslot
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
DBusNames() const Tp::Service::ChannelTypeDBusTubeAdaptor
DBusNamesChanged(const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed)Tp::Service::ChannelTypeDBusTubeAdaptorsignal
Offer(const QVariantMap &parameters, uint accesscontrol, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeDBusTubeAdaptorslot
ServiceName() const Tp::Service::ChannelTypeDBusTubeAdaptor
SupportedAccessControls() const Tp::Service::ChannelTypeDBusTubeAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01100.html0000644000175100017520000002133112530426260021114 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SharedPtr< T > Member List

This is the complete list of members for Tp::SharedPtr< T >, including all inherited members.

constCast(const SharedPtr< X > &src)Tp::SharedPtr< T >inlinestatic
constData() const Tp::SharedPtr< T >inline
data() const Tp::SharedPtr< T >inline
dynamicCast(const SharedPtr< X > &src)Tp::SharedPtr< T >inlinestatic
isNull() const Tp::SharedPtr< T >inline
operator UnspecifiedBoolType() const Tp::SharedPtr< T >inline
operator!() const Tp::SharedPtr< T >inline
operator!=(const SharedPtr< T > &o) const Tp::SharedPtr< T >inline
operator!=(const T *ptr) const Tp::SharedPtr< T >inline
operator->()Tp::SharedPtr< T >inline
operator->() const Tp::SharedPtr< T >inline
operator=(const SharedPtr< T > &o)Tp::SharedPtr< T >inline
operator==(const SharedPtr< T > &o) const Tp::SharedPtr< T >inline
operator==(const T *ptr) const Tp::SharedPtr< T >inline
qObjectCast(const SharedPtr< X > &src)Tp::SharedPtr< T >inlinestatic
reset()Tp::SharedPtr< T >inline
SharedPtr()Tp::SharedPtr< T >inline
SharedPtr(T *d)Tp::SharedPtr< T >inlineexplicit
SharedPtr(const SharedPtr< Subclass > &o)Tp::SharedPtr< T >inline
SharedPtr(const SharedPtr< T > &o)Tp::SharedPtr< T >inline
SharedPtr(const WeakPtr< T > &o)Tp::SharedPtr< T >inlineexplicit
staticCast(const SharedPtr< X > &src)Tp::SharedPtr< T >inlinestatic
swap(SharedPtr< T > &o)Tp::SharedPtr< T >inline
~SharedPtr()Tp::SharedPtr< T >inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00955.html0000644000175100017520000002572412530426260021147 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionAliasingInterface Member List

This is the complete list of members for Tp::BaseConnectionAliasingInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
aliasesChanged(const Tp::AliasPairList &aliases)Tp::BaseConnectionAliasingInterface
BaseConnectionAliasingInterface()Tp::BaseConnectionAliasingInterfaceprotected
create()Tp::BaseConnectionAliasingInterfaceinlinestatic
create()Tp::BaseConnectionAliasingInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getAliases(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionAliasingInterface
GetAliasesCallback typedefTp::BaseConnectionAliasingInterface
getAliasFlags(DBusError *error)Tp::BaseConnectionAliasingInterface
GetAliasFlagsCallback typedefTp::BaseConnectionAliasingInterface
immutableProperties() const Tp::BaseConnectionAliasingInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
requestAliases(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionAliasingInterface
RequestAliasesCallback typedefTp::BaseConnectionAliasingInterface
setAliases(const Tp::AliasMap &aliases, DBusError *error)Tp::BaseConnectionAliasingInterface
SetAliasesCallback typedefTp::BaseConnectionAliasingInterface
setGetAliasesCallback(const GetAliasesCallback &cb)Tp::BaseConnectionAliasingInterface
setGetAliasFlagsCallback(const GetAliasFlagsCallback &cb)Tp::BaseConnectionAliasingInterface
setRequestAliasesCallback(const RequestAliasesCallback &cb)Tp::BaseConnectionAliasingInterface
setSetAliasesCallback(const SetAliasesCallback &cb)Tp::BaseConnectionAliasingInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionAliasingInterface()Tp::BaseConnectionAliasingInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00682_source.html0000644000175100017520000001731712530426257022531 0ustar00kaffeinekaffeine00000000000000 dbus-object.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus-object.h
1 
23 #ifndef _TelepathyQt_dbus_object_h_HEADER_GUARD_
24 #define _TelepathyQt_dbus_object_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QObject>
33 
34 class QDBusConnection;
35 
36 namespace Tp
37 {
38 
39 class TP_QT_EXPORT DBusObject : public QObject
40 {
41  Q_OBJECT
42  Q_DISABLE_COPY(DBusObject)
43 
44 public:
45  DBusObject(const QDBusConnection &dbusConnection, QObject *parent = 0);
46  virtual ~DBusObject();
47 
48  QString objectPath() const;
49  QDBusConnection dbusConnection() const;
50 
51 protected:
52  void setObjectPath(const QString &path);
53 
54 private:
55  class Private;
56  friend class Private;
57  Private *mPriv;
58 
59  friend class DBusService;
60 };
61 
62 }
63 
64 #endif
Base class for D-Bus services.
Definition: dbus-service.h:46
A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object.
Definition: dbus-object.h:39


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00454.html0000644000175100017520000002755712530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::PendingVoid Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::PendingVoid Class Reference

The PendingVoid class is a generic subclass of PendingOperation representing a pending D-Bus method call that does not return anything (or returns a result that is not interesting). More...

#include <TelepathyQt/PendingVoid>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingVoid (QDBusPendingCall call, const SharedPtr< RefCounted > &object)
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingVoid class is a generic subclass of PendingOperation representing a pending D-Bus method call that does not return anything (or returns a result that is not interesting).

Constructor & Destructor Documentation

Tp::PendingVoid::PendingVoid ( QDBusPendingCall  call,
const SharedPtr< RefCounted > &  object 
)

Construct a new PendingVoid object.

Parameters
objectThe object on which this pending operation takes place.
callA pending call as returned by the auto-generated low level Telepathy API; if the method returns anything, the return value(s) will be ignored.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00513.html0000644000175100017520000006000112530426260021120 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleStreamTubeHandler Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Signals | Public Member Functions | Static Public Member Functions | List of all members
Tp::SimpleStreamTubeHandler Class Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/simple-stream-tube-handler.h>

Inherits QObject, and Tp::AbstractClientHandler.

Signals

void invokedForTube (const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints)
 
void tubeInvalidated (const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QString &errorName, const QString &errorMessage)
 

Public Member Functions

 ~SimpleStreamTubeHandler ()
 
bool monitorsConnections () const
 
bool bypassApproval () const
 
void handleChannels (const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const QList< ChannelRequestPtr > &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo)
 
- Public Member Functions inherited from Tp::AbstractClientHandler
virtual ~AbstractClientHandler ()
 
ChannelClassSpecList handlerFilter () const
 
Capabilities handlerCapabilities () const
 
bool wantsRequestNotification () const
 
virtual void addRequest (const ChannelRequestPtr &request)
 
virtual void removeRequest (const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage)
 
- Public Member Functions inherited from Tp::AbstractClient
 AbstractClient ()
 
virtual ~AbstractClient ()
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SharedPtr
< SimpleStreamTubeHandler
create (const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval=false)
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::AbstractClientHandler
 AbstractClientHandler (const ChannelClassSpecList &channelFilter, const Capabilities &capabilities=Capabilities(), bool wantsRequestNotification=false)
 

Constructor & Destructor Documentation

Tp::SimpleStreamTubeHandler::~SimpleStreamTubeHandler ( )

Member Function Documentation

SharedPtr< SimpleStreamTubeHandler > Tp::SimpleStreamTubeHandler::create ( const QStringList &  p2pServices,
const QStringList &  roomServices,
bool  requested,
bool  monitorConnections,
bool  bypassApproval = false 
)
static
bool Tp::SimpleStreamTubeHandler::monitorsConnections ( ) const
inline
bool Tp::SimpleStreamTubeHandler::bypassApproval ( ) const
inlinevirtual

Return whether channels destined for this handler are automatically handled, without invoking approvers.

Returns
true if automatically handled, false otherwise.

Implements Tp::AbstractClientHandler.

void Tp::SimpleStreamTubeHandler::handleChannels ( const MethodInvocationContextPtr<> &  context,
const AccountPtr &  account,
const ConnectionPtr &  connection,
const QList< ChannelPtr > &  channels,
const QList< ChannelRequestPtr > &  requestsSatisfied,
const QDateTime &  userActionTime,
const HandlerInfo handlerInfo 
)
virtual

Called by the channel dispatcher when this handler should handle these channels, or when this handler should present channels that it is already handling to the user (e.g. bring them into the foreground).

Clients are expected to know what channels they're already handling, and which channel object corresponds to which window or tab.

After handleChannels() replies successfully by calling MethodInvocationContext::setFinished(), the client process is considered to be responsible for the channel until it its unique name disappears from the bus.

If a process has multiple client bus names - some temporary and some long-lived - and drops one of the temporary bus names in order to reduce the set of channels that it will handle, any channels that it is already handling will remain unaffected.

The received context object should be stored until this method is finished processing and then MethodInvocationContext::setFinished() or MethodInvocationContext::setFinishedWithError() should be called on the received context object.

Specialized handlers must reimplement this method.

Parameters
contextA MethodInvocationContextPtr object that must be used to indicate whether this method finished processing.
accountThe account with which the channels are associated.
connectionThe connection with which the channels are associated.
channelsThe channels to be handled.
requestsSatisfiedThe requests satisfied by these channels.
userActionTimeThe time at which user action occurred, or 0 if this channel is to be handled for some reason not involving user action. Handlers should use this for focus-stealing prevention, if applicable.
handlerInfoAdditional information about these channels.

Implements Tp::AbstractClientHandler.

void Tp::SimpleStreamTubeHandler::invokedForTube ( const Tp::AccountPtr &  account,
const Tp::StreamTubeChannelPtr &  tube,
const QDateTime &  userActionTime,
const Tp::ChannelRequestHints requestHints 
)
signal
void Tp::SimpleStreamTubeHandler::tubeInvalidated ( const Tp::AccountPtr &  account,
const Tp::StreamTubeChannelPtr &  tube,
const QString &  errorName,
const QString &  errorMessage 
)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00268.html0000644000175100017520000004021012530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceAddressingAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | List of all members
Tp::Service::ConnectionInterfaceAddressingAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::AddressingNormalizationMap GetContactsByVCardField (const QString &field, const QStringList &addresses, const QStringList &interfaces, const QDBusMessage &dbusMessage, Tp::ContactAttributesMap &attributes)
 
Tp::AddressingNormalizationMap GetContactsByURI (const QStringList &URIs, const QStringList &interfaces, const QDBusMessage &dbusMessage, Tp::ContactAttributesMap &attributes)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::AddressingNormalizationMap Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByVCardField ( const QString &  field,
const QStringList &  addresses,
const QStringList &  interfaces,
const QDBusMessage &  dbusMessage,
Tp::ContactAttributesMap attributes 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactsByVCardField(const QString& field, const QStringList& addresses, const QStringList& interfaces, const Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByVCardFieldContextPtr &context);

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

Request contacts and retrieve their attributes using a given field in their vCards.

The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ConnectionInterface::ReleaseHandles() method.

Parameters
field

The vCard field of the addresses we are requesting. The field name SHOULD be in lower case. Supported fields can be found in \\\ \\link ProtocolInterfaceAddressingInterface::requestPropertyAddressableVCardFields() ProtocolInterfaceAddressingInterface::AddressableVCardFields \\endlink \\htmlonly .

The url vCard field MUST NOT appear here; see \\endhtmlonly GetContactsByURI() \\htmlonly instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.
Parameters
addresses
The addresses to get contact handles for. The address types should 
match the given vCard field.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Attributes from this interface and from \\\ ConnectionInterface \\htmlonly are always returned, and need not be requested explicitly.

The behavior of this parameter is similar to the same parameter in \\endhtmlonly ConnectionInterfaceContactsInterface::GetContactAttributes() \\htmlonly .

Parameters
attributesOutput parameter

A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

Returns

A mapping from requested vCard addresses to the corresponding contact handles.

Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.

Tp::AddressingNormalizationMap Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByURI ( const QStringList &  URIs,
const QStringList &  interfaces,
const QDBusMessage &  dbusMessage,
Tp::ContactAttributesMap attributes 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactsByURI(const QStringList& URIs, const QStringList& interfaces, const Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByURIContextPtr &context);

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

Request contacts and retrieve their attributes using URI addresses.

The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ConnectionInterface::ReleaseHandles() method.

Parameters
URIs
The URI addresses to get contact handles for. Supported schemes can 
be found in AddressableURISchemes.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Attributes from this interface and from \\\ ConnectionInterface \\htmlonly are always returned, and need not be requested explicitly.

The behavior of this parameter is similar to the same parameter in \\endhtmlonly ConnectionInterfaceContactsInterface::GetContactAttributes() \\htmlonly .

Parameters
attributesOutput parameter

A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

Returns

A mapping of requested URIs to the corresponding contact handles.

Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01229.html0000644000175100017520000000544212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RTCPFeedbackMessageMap Member List

This is the complete list of members for Tp::RTCPFeedbackMessageMap, including all inherited members.

operator=(const QMap< uint, RTCPFeedbackMessageProperties > &a)Tp::RTCPFeedbackMessageMapinline
RTCPFeedbackMessageMap()Tp::RTCPFeedbackMessageMapinline
RTCPFeedbackMessageMap(const QMap< uint, RTCPFeedbackMessageProperties > &a)Tp::RTCPFeedbackMessageMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00012.html0000644000175100017520000001731312530426257021130 0ustar00kaffeinekaffeine00000000000000 accounts/accounts-window.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
accounts/accounts-window.cpp
#include "accounts-window.h"
#include "_gen/accounts-window.moc.hpp"
#include "account-item.h"
#include <TelepathyQt/Types>
#include <TelepathyQt/Account>
#include <TelepathyQt/AccountFactory>
#include <TelepathyQt/AccountManager>
#include <TelepathyQt/PendingOperation>
#include <TelepathyQt/PendingReady>
#include <QCheckBox>
#include <QDebug>
#include <QHBoxLayout>
#include <QItemEditorCreatorBase>
#include <QItemEditorFactory>
#include <QTableWidget>
AccountsWindow::AccountsWindow(QWidget *parent)
: QMainWindow(parent)
{
setupGui();
mAM = Tp::AccountManager::create(Tp::AccountFactory::create(QDBusConnection::sessionBus(),
connect(mAM->becomeReady(),
SIGNAL(finished(Tp::PendingOperation *)),
SLOT(onAMReady(Tp::PendingOperation *)));
connect(mAM.data(),
SIGNAL(newAccount(const Tp::AccountPtr &)),
SLOT(onNewAccount(const Tp::AccountPtr &)));
}
AccountsWindow::~AccountsWindow()
{
}
void AccountsWindow::setupGui()
{
mTable = new QTableWidget;
mTable->setColumnCount(AccountItem::NumColumns);
QStringList headerLabels;
headerLabels <<
QLatin1String("Valid") <<
QLatin1String("Enabled") <<
QLatin1String("Connection Manager") <<
QLatin1String("Protocol Name") <<
QLatin1String("Display Name") <<
QLatin1String("Nickname") <<
QLatin1String("Connects Automatically") <<
QLatin1String("Changing Presence") <<
QLatin1String("Automatic Presence") <<
QLatin1String("Current Presence") <<
QLatin1String("Requested Presence") <<
QLatin1String("Connection Status") <<
QLatin1String("Connection");
mTable->setHorizontalHeaderLabels(headerLabels);
setCentralWidget(mTable);
}
void AccountsWindow::onAMReady(Tp::PendingOperation *op)
{
mTable->setRowCount(mAM->allAccounts().count());
int row = 0;
foreach (const Tp::AccountPtr &acc, mAM->allAccounts()) {
(void) new AccountItem(acc, mTable, row++, this);
}
}
void AccountsWindow::onNewAccount(const Tp::AccountPtr &acc)
{
int row = mTable->rowCount();
mTable->insertRow(row);
(void) new AccountItem(acc, mTable, row, this);
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x62.html0000644000175100017520000002463412530426260023112 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- b -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00327.html0000644000175100017520000001412012530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::ContactPresences Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | List of all members
Tp::ContactPresences Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, LastActivityAndStatuses >.

Public Member Functions

 ContactPresences ()
 
 ContactPresences (const QMap< uint, LastActivityAndStatuses > &a)
 
ContactPresencesoperator= (const QMap< uint, LastActivityAndStatuses > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, LastActivityAndStatuses>, but needed to have a discrete type in the Qt type system.

Mapping returned by GetPresence and signalled by PresenceUpdate, where the keys are contacts and the values represent their presences.

Constructor & Destructor Documentation

Tp::ContactPresences::ContactPresences ( )
inline
Tp::ContactPresences::ContactPresences ( const QMap< uint, LastActivityAndStatuses > &  a)
inline

Member Function Documentation

ContactPresences& Tp::ContactPresences::operator= ( const QMap< uint, LastActivityAndStatuses > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01298.html0000644000175100017520000002362712530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceAliasingInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceAliasingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AliasesChanged(const Tp::AliasPairList &aliases)Tp::Client::ConnectionInterfaceAliasingInterfacesignal
ConnectionInterfaceAliasingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAliasingInterface
ConnectionInterfaceAliasingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAliasingInterface
ConnectionInterfaceAliasingInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceAliasingInterface
ConnectionInterfaceAliasingInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceAliasingInterfaceexplicit
ConnectionInterfaceAliasingInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceAliasingInterface
GetAliases(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceAliasingInterfaceinlineslot
GetAliasFlags(int timeout=-1)Tp::Client::ConnectionInterfaceAliasingInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceAliasingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RequestAliases(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceAliasingInterfaceinlineslot
requestAllProperties() const Tp::Client::ConnectionInterfaceAliasingInterfaceinline
SetAliases(const Tp::AliasMap &aliases, int timeout=-1)Tp::Client::ConnectionInterfaceAliasingInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceAliasingInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00081.html0000644000175100017520000011330212530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::Client::AccountManagerInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::AccountManagerInterface Class Reference

#include <TelepathyQt/AccountManager>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< QDBusObjectPath > 
CreateAccount (const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties, int timeout=-1)
 

Signals

void AccountRemoved (const QDBusObjectPath &account)
 
void AccountValidityChanged (const QDBusObjectPath &account, bool valid)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 AccountManagerInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountManagerInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AccountManagerInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyValidAccounts () const
 
Tp::PendingVariantrequestPropertyInvalidAccounts () const
 
Tp::PendingVariantrequestPropertySupportedAccountProperties () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::AccountManagerInterface::AccountManagerInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountManagerInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountManagerInterface::AccountManagerInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AccountManagerInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AccountManagerInterface::AccountManagerInterface ( Tp::DBusProxy proxy)

Creates a AccountManagerInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::AccountManagerInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.AccountManager", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::AccountManagerInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the interfaces provided by the account manager object.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountManagerInterface::requestPropertyValidAccounts ( ) const
inline

Asynchronous getter for the remote object property ValidAccounts of type Tp::ObjectPathList.

A list of the valid (complete, usable) Accounts. Change notification is via AccountValidityChanged. This split between valid and invalid accounts makes it easy to ignore the invalid ones. The only things that should be manipulating invalid accounts are account-editing UIs, which might be able to rescue them.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountManagerInterface::requestPropertyInvalidAccounts ( ) const
inline

Asynchronous getter for the remote object property InvalidAccounts of type Tp::ObjectPathList.

A list of incomplete or otherwise unusable Accounts. Change notification is via AccountValidityChanged.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AccountManagerInterface::requestPropertySupportedAccountProperties ( ) const
inline

Asynchronous getter for the remote object property SupportedAccountProperties of type QStringList.

A list of the fully qualified names of properties that can be set via the Properties argument to CreateAccount() when an account is created.

This property MUST NOT include include the AccountInterface::DisplayName and AccountInterface::Parameters properties, which are set using separate arguments.

This property MAY include the names of properties that, after account creation, will be read-only: this indicates that the property can be set at account creation but not changed later.

For example, an account manager might support migration tools that use this to preserve the AccountInterface::HasBeenOnline property, even though that property is usually read-only.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::AccountManagerInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QDBusObjectPath> Tp::Client::AccountManagerInterface::CreateAccount ( const QString &  connectionManager,
const QString &  protocol,
const QString &  displayName,
const QVariantMap &  parameters,
const QVariantMap &  properties,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CreateAccount on the remote object.

Request the creation of a new Account. The account manager SHOULD NOT allow invalid accounts to be created.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
connectionManager
The name of the connection manager, e.g. &quot;salut&quot;.
protocol
The protocol, e.g. &quot;local-xmpp&quot;.
displayName
The initial value of the new account&apos;s DisplayName property. 
The account manager SHOULD modify this to make it unique if an 
Account already exists with the same display name, for instance by 
appending a number or the &apos;account&apos; parameter. Account 
manager implementations SHOULD accept an empty string, but account 
editing user interfaces should avoid passing an empty string for 
this parameter. The account creation UI may ask the user for a name 
for the new account. If the author of the UI chooses not to do 
this, the account creation UI is better able to suggest a default 
display name because it has protocol-specific knowledge which the 
account manager does not. The account manager always knows the 
complete list of accounts so it can easily tell whether it should 
append something to the display name to avoid presenting two 
identically-named accounts to the user.
parameters
Initial parameter values, as would be passed to RequestConnection.
properties

The values of any other properties to be set immediately on the new Account.

Only the properties mentioned in SupportedAccountProperties are acceptable here. In particular, the AccountInterface::DisplayName and AccountInterface::Parameters properties are never allowed here, since they are set using the other arguments to this method.

Account manager implementations SHOULD support creating accounts with an empty value for this argument.

timeoutThe timeout in milliseconds.
Returns
The new Account.
void Tp::Client::AccountManagerInterface::AccountRemoved ( const QDBusObjectPath &  account)
signal

Represents the signal AccountRemoved on the remote object.

The given account has been removed. This is effectively change notification for the valid and invalid accounts lists. On emission of this signal, the Account indicated will no longer be present in either of the lists.

Parameters
account
An Account, which must not be used any more.
void Tp::Client::AccountManagerInterface::AccountValidityChanged ( const QDBusObjectPath &  account,
bool  valid 
)
signal

Represents the signal AccountValidityChanged on the remote object.

The validity of the given account has changed. New accounts are also indicated by this signal, as an account validity change (usually to True) on an account that did not previously exist. This is effectively change notification for the valid and invalid accounts lists.

Parameters
account
An Account.
valid
True if the account is now valid.
void Tp::Client::AccountManagerInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01042.html0000644000175100017520000000666312530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Member List

This is the complete list of members for Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, including all inherited members.

fnTp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >
FunctionType typedefTp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >inline
PtrFunctor7(FunctionType fn)Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >inline
ResultType typedefTp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00897.html0000644000175100017520000004235112530426257021155 0ustar00kaffeinekaffeine00000000000000 Structure types
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes
Structure types

Classes

struct  Tp::AccessControl
 
struct  Tp::AliasPair
 
struct  Tp::Avatar
 
struct  Tp::CallStateReason
 
struct  Tp::Candidate
 
struct  Tp::CapabilityChange
 
struct  Tp::CapabilityPair
 
struct  Tp::CaptchaInfo
 
struct  Tp::ChannelDetails
 
struct  Tp::ChannelInfo
 
struct  Tp::ContactCapability
 
struct  Tp::ContactInfoField
 
struct  Tp::ContactSubscriptions
 
struct  Tp::CurrencyAmount
 
struct  Tp::DBusTubeMember
 
struct  Tp::DebugMessage
 
struct  Tp::FieldSpec
 
struct  Tp::HTTPPostData
 
struct  Tp::LocalPendingInfo
 
struct  Tp::MailAddress
 
struct  Tp::MediaDescriptionOffer
 
struct  Tp::MediaSessionHandlerInfo
 
struct  Tp::MediaStreamHandlerTransport
 
struct  Tp::MediaStreamInfo
 
struct  Tp::NotDelegatedError
 
struct  Tp::ParamSpec
 
struct  Tp::PendingTextMessage
 
struct  Tp::PropertyFlagsChange
 
struct  Tp::PropertySpec
 
struct  Tp::PropertyValue
 
struct  Tp::RTCPFeedbackMessage
 
struct  Tp::RTPHeaderExtension
 
struct  Tp::RequestableChannelClass
 
struct  Tp::RichPresenceAccessControl
 
struct  Tp::RoomInfo
 
struct  Tp::ServicePoint
 
struct  Tp::SimplePresence
 
struct  Tp::SimpleStatusSpec
 
struct  Tp::SocketAddressIP
 
struct  Tp::SocketAddressIPv4
 
struct  Tp::SocketAddressIPv6
 
struct  Tp::SocketNetmaskIPv4
 
struct  Tp::SocketNetmaskIPv6
 
struct  Tp::StreamCredentials
 
struct  Tp::TLSCertificateRejection
 
struct  Tp::TubeInfo
 
struct  Tp::VideoResolution
 
struct  Tp::CandidatePair
 
struct  Tp::Codec
 
struct  Tp::HandlerCapabilities
 
struct  Tp::LastActivityAndStatuses
 
struct  Tp::MailURL
 
struct  Tp::MediaStreamHandlerCandidate
 
struct  Tp::MediaStreamHandlerCodec
 
struct  Tp::RTCPFeedbackMessageProperties
 
struct  Tp::ServicePointInfo
 
struct  Tp::StatusSpec
 

Detailed Description

Structure types generated from the specification.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00396.html0000644000175100017520000002177012530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor0< R, T > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Public Attributes | List of all members
Tp::MemberFunctor0< R, T > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )()
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor0 (T *object, FunctionType fn)
 
ResultType operator() () const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T>
typedef R(T::* Tp::MemberFunctor0< R, T >::FunctionType)()
template<class R, class T>
typedef R Tp::MemberFunctor0< R, T >::ResultType

Constructor & Destructor Documentation

template<class R, class T>
Tp::MemberFunctor0< R, T >::MemberFunctor0 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T>
ResultType Tp::MemberFunctor0< R, T >::operator() ( ) const
inline

Member Data Documentation

template<class R, class T>
T* Tp::MemberFunctor0< R, T >::object
template<class R, class T>
FunctionType Tp::MemberFunctor0< R, T >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01357.html0000644000175100017520000002101212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeFileTransferAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeFileTransferAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
AcceptFile(uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeFileTransferAdaptorslot
adaptee() const Tp::AbstractAdaptor
AvailableSocketTypes() const Tp::Service::ChannelTypeFileTransferAdaptor
ContentHash() const Tp::Service::ChannelTypeFileTransferAdaptor
ContentHashType() const Tp::Service::ChannelTypeFileTransferAdaptor
ContentType() const Tp::Service::ChannelTypeFileTransferAdaptor
Date() const Tp::Service::ChannelTypeFileTransferAdaptor
dbusConnection() const Tp::AbstractAdaptor
Description() const Tp::Service::ChannelTypeFileTransferAdaptor
FileCollection() const Tp::Service::ChannelTypeFileTransferAdaptor
Filename() const Tp::Service::ChannelTypeFileTransferAdaptor
FileTransferStateChanged(uint state, uint reason)Tp::Service::ChannelTypeFileTransferAdaptorsignal
InitialOffset() const Tp::Service::ChannelTypeFileTransferAdaptor
InitialOffsetDefined(qulonglong initialOffset)Tp::Service::ChannelTypeFileTransferAdaptorsignal
ProvideFile(uint addressType, uint accessControl, const QDBusVariant &accessControlParam, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeFileTransferAdaptorslot
SetURI(const QString &newValue)Tp::Service::ChannelTypeFileTransferAdaptor
Size() const Tp::Service::ChannelTypeFileTransferAdaptor
State() const Tp::Service::ChannelTypeFileTransferAdaptor
TransferredBytes() const Tp::Service::ChannelTypeFileTransferAdaptor
TransferredBytesChanged(qulonglong count)Tp::Service::ChannelTypeFileTransferAdaptorsignal
URI() const Tp::Service::ChannelTypeFileTransferAdaptor
URIDefined(const QString &URI)Tp::Service::ChannelTypeFileTransferAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00140.html0000644000175100017520000036204512530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::CallChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Tp::CallChannel Class Reference

The CallChannel class provides an object representing a Telepathy channel of type Call. More...

#include <TelepathyQt/CallChannel>

Inherits Tp::Channel.

Signals

void callStateChanged (Tp::CallState state)
 
void callFlagsChanged (Tp::CallFlags flags)
 
void remoteMemberFlagsChanged (const QHash< Tp::ContactPtr, Tp::CallMemberFlags > &remoteMemberFlags, const Tp::CallStateReason &reason)
 
void remoteMembersRemoved (const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason)
 
void contentAdded (const Tp::CallContentPtr &content)
 
void contentRemoved (const Tp::CallContentPtr &content, const Tp::CallStateReason &reason)
 
void localHoldStateChanged (Tp::LocalHoldState state, Tp::LocalHoldStateReason reason)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~CallChannel ()
 
bool handlerStreamingRequired () const
 
StreamTransportType initialTransportType () const
 
bool hasInitialAudio () const
 
bool hasInitialVideo () const
 
QString initialAudioName () const
 
QString initialVideoName () const
 
bool hasMutableContents () const
 
PendingOperationsetRinging ()
 
PendingOperationsetQueued ()
 
PendingOperationaccept ()
 
PendingOperationhangup (CallStateChangeReason reason=CallStateChangeReasonUserRequested, const QString &detailedReason=QString(), const QString &message=QString())
 
CallState callState () const
 
CallFlags callFlags () const
 
CallStateReason callStateReason () const
 
QVariantMap callStateDetails () const
 
Contacts remoteMembers () const
 
CallMemberFlags remoteMemberFlags (const ContactPtr &member) const
 
CallContents contents () const
 
CallContents contentsForType (MediaStreamType type) const
 
CallContentPtr contentByName (const QString &contentName) const
 
PendingCallContentrequestContent (const QString &name, MediaStreamType type, MediaStreamDirection direction)
 
LocalHoldState localHoldState () const
 
LocalHoldStateReason localHoldStateReason () const
 
PendingOperationrequestHold (bool hold)
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static CallChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureCallState
 
static const Feature FeatureCallMembers
 
static const Feature FeatureContents
 
static const Feature FeatureLocalHoldState
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 CallChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=CallChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The CallChannel class provides an object representing a Telepathy channel of type Call.

Constructor & Destructor Documentation

Tp::CallChannel::~CallChannel ( )
virtual

Class destructor.

Tp::CallChannel::CallChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = CallChannel::FeatureCore 
)
protected

Construct a new CallChannel associated with the given object on the same service as the given connection.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.
coreFeatureThe core feature of the channel type. The corresponding introspectable should depend on Channel::FeatureCore.

Member Function Documentation

CallChannelPtr Tp::CallChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new CallChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.
Returns
A CallChannelPtr object pointing to the newly created CallChannel object.
bool Tp::CallChannel::handlerStreamingRequired ( ) const

Check whether media streaming by the handler is required for this channel.

If false, all of the media streaming is done by some mechanism outside the scope of Telepathy, otherwise the handler is responsible for doing the actual media streaming.

Returns
true if required, false otherwise.
StreamTransportType Tp::CallChannel::initialTransportType ( ) const

Return the initial transport type used for this call if set on a requested channel.

Where not applicable, this property is defined to be StreamTransportTypeUnknown, in particular, on CMs with hardware streaming.

Returns
The initial transport type used for this call.
bool Tp::CallChannel::hasInitialAudio ( ) const

Return whether an audio content was requested at the channel's creation time.

Returns
true if an audio content was requested, false otherwise.
bool Tp::CallChannel::hasInitialVideo ( ) const

Return whether a video content was requested at the channel's creation time.

Returns
true if an video content was requested, false otherwise.
QString Tp::CallChannel::initialAudioName ( ) const

Return the name of the initial audio content if hasInitialAudio() returns true.

Returns
The name of the initial audio content.
QString Tp::CallChannel::initialVideoName ( ) const

Return the name of the initial video content if hasInitialVideo() returns true.

Returns
The name of the initial video content.
bool Tp::CallChannel::hasMutableContents ( ) const

Return whether new contents can be added on the call after the Channel has been requested.

Returns
true if a new content can be added after the Channel has been requested, false otherwise.
See Also
requestContent()
PendingOperation * Tp::CallChannel::setRinging ( )

Indicate that the local user has been alerted about the incoming call.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
PendingOperation * Tp::CallChannel::setQueued ( )

Notify the CM that the local user is already in a call, so this call has been put in a call-waiting style queue.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
PendingOperation * Tp::CallChannel::accept ( )

Accept an incoming call, or begin calling the remote contact on an outgoing call.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
PendingOperation * Tp::CallChannel::hangup ( CallStateChangeReason  reason = CallStateChangeReasonUserRequested,
const QString &  detailedReason = QString(),
const QString &  message = QString() 
)

Request that the call is ended.

Parameters
reasonA generic hangup reason.
detailedReasonA more specific reason for the call hangup, if one is available, or an empty string otherwise.
messageA human-readable message to be sent to the remote contact(s).
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
CallState Tp::CallChannel::callState ( ) const

Return the current high-level state of this call.

This function requires CallChannel::FeatureCallState to be enabled.

Returns
The current high-level state of this call.
See Also
callStateChanged()
CallFlags Tp::CallChannel::callFlags ( ) const

Return the flags representing the status of this call as a whole, providing more specific information than callState().

This function requires CallChannel::FeatureCallState to be enabled.

Returns
The flags representing the status of this call.
See Also
callFlagsChanged()
CallStateReason Tp::CallChannel::callStateReason ( ) const

Return the reason for the last change to the callState() and/or callFlags().

This function requires CallChannel::FeatureCallState to be enabled.

Returns
The reason for the last change to the callState() and/or callFlags().
See Also
callStateChanged(), callFlagsChanged()
QVariantMap Tp::CallChannel::callStateDetails ( ) const

Return optional extensible details for the callState(), callFlags() and/or callStateReason().

This function requires CallChannel::FeatureCallState to be enabled.

Returns
The optional extensible details for the callState(), callFlags() and/or callStateReason().
See Also
callStateChanged(), callFlagsChanged()
Contacts Tp::CallChannel::remoteMembers ( ) const

Return the remote members of this call.

This function requires CallChannel::FeatureCallMembers to be enabled.

Returns
The remote members of this call.
See Also
remoteMemberFlags(), remoteMemberFlagsChanged(), remoteMembersRemoved()
CallMemberFlags Tp::CallChannel::remoteMemberFlags ( const ContactPtr &  member) const

Return the flags that describe the status of a given member of this call.

This function requires CallChannel::FeatureCallMembers to be enabled.

Parameters
memberThe member of interest.
Returns
The flags that describe the status of the requested member.
See Also
remoteMemberFlagsChanged(), remoteMembers(), remoteMembersRemoved()
CallContents Tp::CallChannel::contents ( ) const

Return a list of media contents in this channel.

This methods requires CallChannel::FeatureContents to be enabled.

Returns
The contents in this channel.
See Also
contentAdded(), contentRemoved(), contentsForType(), contentByName(), requestContent()
CallContents Tp::CallChannel::contentsForType ( MediaStreamType  type) const

Return a list of media contents in this channel for the given type type.

This methods requires CallChannel::FeatureContents to be enabled.

Parameters
typeThe interested type.
Returns
A list of media contents in this channel for the given type type.
See Also
contentAdded(), contentRemoved(), contents(), contentByName(), requestContent()
CallContentPtr Tp::CallChannel::contentByName ( const QString &  contentName) const

Return the media content in this channel that has the specified name.

This methods requires CallChannel::FeatureContents to be enabled.

Parameters
nameThe interested name.
Returns
The media content in this channel that has the specified name.
See Also
contentAdded(), contentRemoved(), contents(), contentsForType(), requestContent()
PendingCallContent * Tp::CallChannel::requestContent ( const QString &  name,
MediaStreamType  type,
MediaStreamDirection  direction 
)

Request a new media content to be created to exchange the given type type of media.

This methods requires CallChannel::FeatureContents to be enabled.

Returns
A PendingCallContent which will emit PendingCallContent::finished when the call has finished.
See Also
contentAdded(), contents(), contentsForType(), contentByName()
LocalHoldState Tp::CallChannel::localHoldState ( ) const

Return whether the local user has placed this channel on hold.

This method requires CallChannel::FeatureHoldState to be enabled.

Returns
The channel's local hold state.
See Also
requestHold(), localHoldStateChanged()
LocalHoldStateReason Tp::CallChannel::localHoldStateReason ( ) const

Return the reason why localHoldState() changed to its current value.

This method requires CallChannel::FeatureLocalHoldState to be enabled.

Returns
The channel local hold state reason.
See Also
requestHold(), localHoldStateChanged()
PendingOperation * Tp::CallChannel::requestHold ( bool  hold)

Request that the channel be put on hold (be instructed not to send any media streams to you) or be taken off hold.

If the connection manager can immediately tell that the requested state change could not possibly succeed, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_AVAILABLE. If the requested state is the same as the current state, the resulting PendingOperation will finish successfully.

Otherwise, the channel's local hold state will change to Tp::LocalHoldStatePendingHold or Tp::LocalHoldStatePendingUnhold (as appropriate), then the resulting PendingOperation will finish successfully.

The eventual success or failure of the request is indicated by a subsequent localHoldStateChanged() signal, changing the local hold state to Tp::LocalHoldStateHeld or Tp::LocalHoldStateUnheld.

If the channel has multiple streams, and the connection manager succeeds in changing the hold state of one stream but fails to change the hold state of another, it will attempt to revert all streams to their previous hold states.

If the channel does not support the TP_QT_IFACE_CHANNEL_INTERFACE_HOLD interface, the PendingOperation will fail with error code TP_QT_ERROR_NOT_IMPLEMENTED.

Parameters
holdA boolean indicating whether or not the channel should be on hold
Returns
A PendingOperation, which will emit PendingOperation::finished when the request finishes.
See Also
localHoldState(), localHoldStateReason(), localHoldStateChanged()
void Tp::CallChannel::callStateChanged ( Tp::CallState  state)
signal

This signal is emitted when the value of callState() changes.

Parameters
stateThe new state.
void Tp::CallChannel::callFlagsChanged ( Tp::CallFlags  flags)
signal

This signal is emitted when the value of callFlags() changes.

Parameters
flagsThe new flags.
void Tp::CallChannel::remoteMemberFlagsChanged ( const QHash< Tp::ContactPtr, Tp::CallMemberFlags > &  remoteMemberFlags,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when the flags of members of the call change, or when new members are added in the call.

Parameters
remoteMemberFlagsA maping of all the call members whose flags were changed to their new flags, and of all the new members of the call to their initial flags.
reasonThe reason for this change.
void Tp::CallChannel::remoteMembersRemoved ( const Tp::Contacts &  remoteMembers,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when remote members are removed from the call.

Parameters
remoteMembersThe members that were removed.
reasonThe reason for this removal.
void Tp::CallChannel::contentAdded ( const Tp::CallContentPtr &  content)
signal

This signal is emitted when a media content is added to this channel.

Parameters
contentThe media content that was added.
See Also
contents(), contentsForType()
void Tp::CallChannel::contentRemoved ( const Tp::CallContentPtr &  content,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when a media content is removed from this channel.

Parameters
contentThe media content that was removed.
reasonThe reason for this removal.
See Also
contents(), contentsForType()
void Tp::CallChannel::localHoldStateChanged ( Tp::LocalHoldState  state,
Tp::LocalHoldStateReason  reason 
)
signal

This signal is emitted when the local hold state of this channel changes.

Parameters
stateThe new local hold state of this channel.
reasonThe reason why the change occurred.
See Also
localHoldState(), localHoldStateReason()

Member Data Documentation

const Feature Tp::CallChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the CallChannel object usable.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

const Feature Tp::CallChannel::FeatureCallState
static

Feature used in order to access call state specific methods.

See call state specific methods' documentation for more details.

const Feature Tp::CallChannel::FeatureCallMembers
static

Feature used in order to access members specific methods.

See local members specific methods' documentation for more details.

const Feature Tp::CallChannel::FeatureContents
static

Feature used in order to access content specific methods.

See media content specific methods' documentation for more details.

const Feature Tp::CallChannel::FeatureLocalHoldState
static

Feature used in order to access local hold state info.

See local hold state specific methods' documentation for more details.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01101.html0000644000175100017520000001265012530426260021121 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::WeakPtr< T > Member List

This is the complete list of members for Tp::WeakPtr< T >, including all inherited members.

isNull() const Tp::WeakPtr< T >inline
operator UnspecifiedBoolType() const Tp::WeakPtr< T >inline
operator!() const Tp::WeakPtr< T >inline
operator=(const WeakPtr< T > &o)Tp::WeakPtr< T >inline
operator=(const SharedPtr< T > &o)Tp::WeakPtr< T >inline
qHash(const WeakPtr< T > &ptr)Tp::WeakPtr< T >friend
swap(WeakPtr< T > &o)Tp::WeakPtr< T >inline
toStrongRef() const Tp::WeakPtr< T >inline
WeakPtr()Tp::WeakPtr< T >inline
WeakPtr(T *d)Tp::WeakPtr< T >inlineexplicit
WeakPtr(const WeakPtr< T > &o)Tp::WeakPtr< T >inline
WeakPtr(const SharedPtr< T > &o)Tp::WeakPtr< T >inline
~WeakPtr()Tp::WeakPtr< T >inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00956.html0000644000175100017520000002752712530426260021153 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseConnectionAvatarsInterface Member List

This is the complete list of members for Tp::BaseConnectionAvatarsInterface, including all inherited members.

AbstractConnectionInterface(const QString &interfaceName)Tp::AbstractConnectionInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
avatarDetails() const Tp::BaseConnectionAvatarsInterface
avatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type)Tp::BaseConnectionAvatarsInterface
avatarUpdated(uint contact, const QString &newAvatarToken)Tp::BaseConnectionAvatarsInterface
BaseConnectionAvatarsInterface()Tp::BaseConnectionAvatarsInterfaceprotected
clearAvatar(DBusError *error)Tp::BaseConnectionAvatarsInterface
ClearAvatarCallback typedefTp::BaseConnectionAvatarsInterface
create()Tp::BaseConnectionAvatarsInterfaceinlinestatic
create()Tp::BaseConnectionAvatarsInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getKnownAvatarTokens(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionAvatarsInterface
GetKnownAvatarTokensCallback typedefTp::BaseConnectionAvatarsInterface
immutableProperties() const Tp::BaseConnectionAvatarsInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
requestAvatars(const Tp::UIntList &contacts, DBusError *error)Tp::BaseConnectionAvatarsInterface
RequestAvatarsCallback typedefTp::BaseConnectionAvatarsInterface
setAvatar(const QByteArray &avatar, const QString &mimeType, DBusError *error)Tp::BaseConnectionAvatarsInterface
SetAvatarCallback typedefTp::BaseConnectionAvatarsInterface
setAvatarDetails(const AvatarSpec &spec)Tp::BaseConnectionAvatarsInterface
setClearAvatarCallback(const ClearAvatarCallback &cb)Tp::BaseConnectionAvatarsInterface
setGetKnownAvatarTokensCallback(const GetKnownAvatarTokensCallback &cb)Tp::BaseConnectionAvatarsInterface
setRequestAvatarsCallback(const RequestAvatarsCallback &cb)Tp::BaseConnectionAvatarsInterface
setSetAvatarCallback(const SetAvatarCallback &cb)Tp::BaseConnectionAvatarsInterface
~AbstractConnectionInterface()Tp::AbstractConnectionInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseConnectionAvatarsInterface()Tp::BaseConnectionAvatarsInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00455.html0000644000175100017520000007223612530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Presence Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | List of all members
Tp::Presence Class Reference

The Presence class represents a Telepathy simple presence. More...

#include <TelepathyQt/Presence>

Public Member Functions

 Presence ()
 
 Presence (const SimplePresence &sp)
 
 Presence (ConnectionPresenceType type, const QString &status, const QString &statusMessage)
 
 Presence (const Presence &other)
 
 ~Presence ()
 
bool isValid () const
 
Presenceoperator= (const Presence &other)
 
bool operator== (const Presence &other) const
 
bool operator!= (const Presence &other) const
 
ConnectionPresenceType type () const
 
QString status () const
 
QString statusMessage () const
 
void setStatus (const SimplePresence &value)
 
void setStatus (ConnectionPresenceType type, const QString &status, const QString &statusMessage)
 
void setStatusMessage (const QString &statusMessage)
 
SimplePresence barePresence () const
 

Static Public Member Functions

static Presence available (const QString &statusMessage=QString())
 
static Presence chat (const QString &statusMessage=QString())
 
static Presence away (const QString &statusMessage=QString())
 
static Presence brb (const QString &statusMessage=QString())
 
static Presence busy (const QString &statusMessage=QString())
 
static Presence dnd (const QString &statusMessage=QString())
 
static Presence xa (const QString &statusMessage=QString())
 
static Presence hidden (const QString &statusMessage=QString())
 
static Presence offline (const QString &statusMessage=QString())
 

Detailed Description

The Presence class represents a Telepathy simple presence.

Constructor & Destructor Documentation

Tp::Presence::Presence ( )
Tp::Presence::Presence ( const SimplePresence sp)
Tp::Presence::Presence ( ConnectionPresenceType  type,
const QString &  status,
const QString &  statusMessage 
)
Tp::Presence::Presence ( const Presence other)
Tp::Presence::~Presence ( )

Member Function Documentation

Presence Tp::Presence::available ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::chat ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::away ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::brb ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::busy ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::dnd ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::xa ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::hidden ( const QString &  statusMessage = QString())
static
Presence Tp::Presence::offline ( const QString &  statusMessage = QString())
static
bool Tp::Presence::isValid ( ) const
inline
Presence & Tp::Presence::operator= ( const Presence other)
bool Tp::Presence::operator== ( const Presence other) const
bool Tp::Presence::operator!= ( const Presence other) const
ConnectionPresenceType Tp::Presence::type ( ) const
QString Tp::Presence::status ( ) const
QString Tp::Presence::statusMessage ( ) const
void Tp::Presence::setStatus ( const SimplePresence value)
void Tp::Presence::setStatus ( ConnectionPresenceType  type,
const QString &  status,
const QString &  statusMessage 
)
void Tp::Presence::setStatusMessage ( const QString &  statusMessage)
SimplePresence Tp::Presence::barePresence ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01170.html0000644000175100017520000000446612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaDescriptionOffer Member List

This is the complete list of members for Tp::MediaDescriptionOffer, including all inherited members.

mediaDescriptionTp::MediaDescriptionOffer
propertiesTp::MediaDescriptionOffer


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00664_source.html0000644000175100017520000002635012530426257022526 0ustar00kaffeinekaffeine00000000000000 constants.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
telepathy-qt/TelepathyQt/constants.h
1 
23 #ifndef _TelepathyQt_constants_h_HEADER_GUARD_
24 #define _TelepathyQt_constants_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
49 #define TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE QLatin1String("org.freedesktop.Telepathy.ConnectionManager.")
50 
55 #define TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE QLatin1String("/org/freedesktop/Telepathy/ConnectionManager/")
56 
62 #define TP_QT_CONNECTION_BUS_NAME_BASE QLatin1String("org.freedesktop.Telepathy.Connection.")
63 
69 #define TP_QT_CONNECTION_OBJECT_PATH_BASE QLatin1String("/org/freedesktop/Telepathy/Connection/")
70 
76 #define TP_QT_ACCOUNT_MANAGER_BUS_NAME \
77  (QLatin1String("org.freedesktop.Telepathy.AccountManager"))
78 
84 #define TP_QT_ACCOUNT_MANAGER_OBJECT_PATH \
85  (QLatin1String("/org/freedesktop/Telepathy/AccountManager"))
86 
90 #define TP_QT_CHANNEL_DISPATCHER_BUS_NAME \
91  (QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher"))
92 
96 #define TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH \
97  (QLatin1String("/org/freedesktop/Telepathy/ChannelDispatcher"))
98 
106 #define TP_QT_ACCOUNT_OBJECT_PATH_BASE \
107  (QLatin1String("/org/freedesktop/Telepathy/Account"))
108 
112 #define TP_QT_DEBUG_OBJECT_PATH \
113  (QLatin1String("/org/freedesktop/Telepathy/debug"))
114 
119 #include <TelepathyQt/_gen/constants.h>
120 
133 #define TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER \
134  (QLatin1String("org.freedesktop.DBus.Error.NameHasNoOwner"))
135 
141 #define TP_QT_DBUS_ERROR_UNKNOWN_INTERFACE \
142  (QLatin1String("org.freedesktop.DBus.Error.UnknownInterface"))
143 
152 #define TP_QT_DBUS_ERROR_UNKNOWN_METHOD \
153  (QLatin1String("org.freedesktop.DBus.Error.UnknownMethod"))
154 
160 #define TP_QT_ERROR_OBJECT_REMOVED \
161  (QLatin1String("org.freedesktop.Telepathy.Qt.Error.ObjectRemoved"))
162 
168 #define TP_QT_ERROR_INCONSISTENT \
169  (QLatin1String("org.freedesktop.Telepathy.Qt.Error.Inconsistent"))
170 
181 #define TP_QT_ERROR_ORPHANED \
182  (QLatin1String("org.freedesktop.Telepathy.Qt.Error.Orphaned"))
183 
184 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00514.html0000644000175100017520000005023312530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::SimpleTextObserver Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | Static Public Member Functions | List of all members
Tp::SimpleTextObserver Class Reference

The SimpleTextObserver class provides an easy way to track sent/received text messages in an account and can be optionally filtered by a contact. More...

#include <TelepathyQt/SimpleTextObserver>

Inherits QObject, and Tp::RefCounted.

Signals

void messageSent (const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel)
 
void messageReceived (const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel)
 

Public Member Functions

virtual ~SimpleTextObserver ()
 
AccountPtr account () const
 
QString contactIdentifier () const
 
QList< TextChannelPtr > textChats () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SimpleTextObserverPtr create (const AccountPtr &account)
 
static SimpleTextObserverPtr create (const AccountPtr &account, const ContactPtr &contact)
 
static SimpleTextObserverPtr create (const AccountPtr &account, const QString &contactIdentifier)
 

Detailed Description

The SimpleTextObserver class provides an easy way to track sent/received text messages in an account and can be optionally filtered by a contact.

Constructor & Destructor Documentation

Tp::SimpleTextObserver::~SimpleTextObserver ( )
virtual

Class destructor.

Member Function Documentation

SimpleTextObserverPtr Tp::SimpleTextObserver::create ( const AccountPtr &  account)
static

Create a new SimpleTextObserver object.

Events will be signalled for all messages sent/received by all contacts in account.

Parameters
accountThe account used to listen to events.
Returns
An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object.
SimpleTextObserverPtr Tp::SimpleTextObserver::create ( const AccountPtr &  account,
const ContactPtr &  contact 
)
static

Create a new SimpleTextObserver object.

If contact is not null, events will be signalled for all messages sent/received by contact, otherwise this method works the same as create(const Tp::AccountPtr &).

Parameters
accountThe account used to listen to events.
contactThe contact used to filter events.
Returns
An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object.
SimpleTextObserverPtr Tp::SimpleTextObserver::create ( const AccountPtr &  account,
const QString &  contactIdentifier 
)
static

Create a new SimpleTextObserver object.

If contactIdentifier is non-empty, events will be signalled for all messages sent/received by a contact identified by contactIdentifier, otherwise this method works the same as create(const Tp::AccountPtr &).

Parameters
accountThe account used to listen to events.
contactIdentifierThe identifier of the contact used to filter events.
Returns
An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object.
AccountPtr Tp::SimpleTextObserver::account ( ) const

Return the account used to listen to events.

Returns
A pointer to the Account object.
QString Tp::SimpleTextObserver::contactIdentifier ( ) const

Return the identifier of the contact used to filter events, or an empty string if none was provided at construction.

Returns
The identifier of the contact.
QList< TextChannelPtr > Tp::SimpleTextObserver::textChats ( ) const

Return the list of text chats currently being observed.

Returns
A list of pointers to TextChannel objects.
void Tp::SimpleTextObserver::messageSent ( const Tp::Message message,
Tp::MessageSendingFlags  flags,
const QString &  sentMessageToken,
const Tp::TextChannelPtr &  channel 
)
signal

Emitted whenever a text message on account() is sent. If contactIdentifier() is non-empty, only messages sent to the contact identified by it will be signalled.

Parameters
messageThe message sent.
flagsThe message flags,
sentMessageTokenThe message token.
channelThe channel which received the message.
void Tp::SimpleTextObserver::messageReceived ( const Tp::ReceivedMessage message,
const Tp::TextChannelPtr &  channel 
)
signal

Emitted whenever a text message on account() is received. If contactIdentifier() is non-empty, only messages received by the contact identified by it will be signalled.

Parameters
messageThe message received.
channelThe channel which received the message.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00269.html0000644000175100017520000010371312530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceAddressingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Tp::Client::ConnectionInterfaceAddressingInterface Class Reference

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::AddressingNormalizationMap,
Tp::ContactAttributesMap
GetContactsByVCardField (const QString &field, const QStringList &addresses, const QStringList &interfaces, int timeout=-1)
 
QDBusPendingReply
< Tp::AddressingNormalizationMap,
Tp::ContactAttributesMap
GetContactsByURI (const QStringList &URIs, const QStringList &interfaces, int timeout=-1)
 

Public Member Functions

 ConnectionInterfaceAddressingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAddressingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAddressingInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceAddressingInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceAddressingInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Addressing1".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAddressingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAddressingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceAddressingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceAddressingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceAddressingInterface::ConnectionInterfaceAddressingInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceAddressingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceAddressingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Addressing1", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceAddressingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::AddressingNormalizationMap, Tp::ContactAttributesMap> Tp::Client::ConnectionInterfaceAddressingInterface::GetContactsByVCardField ( const QString &  field,
const QStringList &  addresses,
const QStringList &  interfaces,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactsByVCardField on the remote object.

Request contacts and retrieve their attributes using a given field in their vCards.

The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ConnectionInterface::ReleaseHandles() method.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
field

The vCard field of the addresses we are requesting. The field name SHOULD be in lower case. Supported fields can be found in ProtocolInterfaceAddressingInterface::AddressableVCardFields .

The url vCard field MUST NOT appear here; see GetContactsByURI() instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.

addresses
The addresses to get contact handles for. The address types should 
match the given vCard field.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Attributes from this interface and from ConnectionInterface are always returned, and need not be requested explicitly.

The behavior of this parameter is similar to the same parameter in ConnectionInterfaceContactsInterface::GetContactAttributes() .

timeoutThe timeout in milliseconds.
Returns

A mapping from requested vCard addresses to the corresponding contact handles.

Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.

Returns

A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

QDBusPendingReply<Tp::AddressingNormalizationMap, Tp::ContactAttributesMap> Tp::Client::ConnectionInterfaceAddressingInterface::GetContactsByURI ( const QStringList &  URIs,
const QStringList &  interfaces,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactsByURI on the remote object.

Request contacts and retrieve their attributes using URI addresses.

The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ConnectionInterface::ReleaseHandles() method.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
URIs
The URI addresses to get contact handles for. Supported schemes can 
be found in AddressableURISchemes.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Attributes from this interface and from ConnectionInterface are always returned, and need not be requested explicitly.

The behavior of this parameter is similar to the same parameter in ConnectionInterfaceContactsInterface::GetContactAttributes() .

timeoutThe timeout in milliseconds.
Returns

A mapping of requested URIs to the corresponding contact handles.

Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.

Returns

A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

void Tp::Client::ConnectionInterfaceAddressingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x63.html0000644000175100017520000024465512530426260023122 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- c -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00328.html0000644000175100017520000025250312530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSearchChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Public Types | Signals | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Tp::ContactSearchChannel Class Reference

The ContactSearchChannel class represents a Telepathy channel of type ContactSearch. More...

#include <TelepathyQt/ContactSearchChannel>

Inherits Tp::Channel.

Classes

class  SearchStateChangeDetails
 The ContactSearchChannel::SearchStateChangeDetails class provides a wrapper around the details for a search state change. More...
 

Public Types

typedef QHash< ContactPtr,
Contact::InfoFields
SearchResult
 
- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 

Signals

void searchStateChanged (Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details)
 
void searchResultReceived (const Tp::ContactSearchChannel::SearchResult &result)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~ContactSearchChannel ()
 
ChannelContactSearchState searchState () const
 
uint limit () const
 
QStringList availableSearchKeys () const
 
QString server () const
 
PendingOperationsearch (const QString &searchKey, const QString &searchTerm)
 
PendingOperationsearch (const ContactSearchMap &searchTerms)
 
void continueSearch ()
 
void stopSearch ()
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static ContactSearchChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 ContactSearchChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Detailed Description

The ContactSearchChannel class represents a Telepathy channel of type ContactSearch.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::ContactSearchChannel::~ContactSearchChannel ( )
virtual

Class destructor.

Tp::ContactSearchChannel::ContactSearchChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature 
)
protected

Construct a new ContactSearchChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on ContactSearchChannel::FeatureCore.

Member Function Documentation

ContactSearchChannelPtr Tp::ContactSearchChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new ContactSearchChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A ContactSearchChannelPtr object pointing to the newly created ContactSearchChannel object.
ChannelContactSearchState Tp::ContactSearchChannel::searchState ( ) const

Return the current search state of this channel.

Change notification is via the searchStateChanged() signal.

This method requires ContactSearchChannel::FeatureCore to be ready.

Returns
The current search state as ChannelContactSearchState.
See Also
searchStateChanged()
uint Tp::ContactSearchChannel::limit ( ) const

Return the maximum number of results that should be returned by calling search(), where 0 represents no limit.

For example, if the terms passed to search() match Antonius, Bridget and Charles and this property is 2, the search service will only return Antonius and Bridget.

This method requires ContactSearchChannel::FeatureCore to be ready.

Returns
The maximum number of results, or 0 if there is no limit.
See Also
availableSearchKeys(), search()
QStringList Tp::ContactSearchChannel::availableSearchKeys ( ) const

Return the set of search keys supported by this channel.

Example values include [""] (for protocols where several address fields are implicitly searched) or ["x-n-given", "x-n-family", "nickname", "email"] (for XMPP XEP-0055, without extensibility via Data Forms).

This method requires ContactSearchChannel::FeatureCore to be ready.

Returns
The supported search keys.
See Also
limit(), search()
QString Tp::ContactSearchChannel::server ( ) const

Return the DNS name of the server being searched by this channel.

This method requires ContactSearchChannel::FeatureCore to be ready.

Returns
For protocols which support searching for contacts on multiple servers with different DNS names (like XMPP), the DNS name of the server being searched by this channel, e.g. "characters.shakespeare.lit". Otherwise, an empty string.
PendingOperation * Tp::ContactSearchChannel::search ( const QString &  searchKey,
const QString &  searchTerm 
)

Send a request to start a search for contacts on this connection.

This may only be called while the searchState() is ChannelContactSearchStateNotStarted; a valid search request will cause the searchStateChanged() signal to be emitted with the state ChannelContactSearchStateInProgress.

Search results are signalled by searchResultReceived().

This method requires ContactSearchChannel::FeatureCore to be ready.

This is an overloaded method for search(const ContactSearchMap &searchTerms).

Parameters
searchKeyThe search key.
searchTermThe search term.
Returns
A PendingOperation which will emit PendingOperation::finished when the search has started.
See Also
searchState(), searchStateChanged(), searchResultReceived()
PendingOperation * Tp::ContactSearchChannel::search ( const ContactSearchMap terms)

Send a request to start a search for contacts on this connection.

This may only be called while the searchState() is ChannelContactSearchStateNotStarted; a valid search request will cause the searchStateChanged() signal to be emitted with the state ChannelContactSearchStateInProgress.

Search results are signalled by searchResultReceived().

This method requires ContactSearchChannel::FeatureCore to be ready.

Parameters
termsThe search terms.
Returns
A PendingOperation which will emit PendingOperation::finished when the search has started.
See Also
searchState(), searchStateChanged(), searchResultReceived()
void Tp::ContactSearchChannel::continueSearch ( )

Request that a search which searchState() is ChannelContactSearchStateMoreAvailable move back to state ChannelContactSearchStateInProgress and continue listing up to limit() more results.

void Tp::ContactSearchChannel::stopSearch ( )

Stop the current search.

This may not be called while the searchState() is ChannelContactSearchStateNotStarted. If called while the searchState() is ChannelContactSearchStateInProgress, searchStateChanged() will be emitted, with the state ChannelContactSearchStateFailed and the error TP_QT_ERROR_CANCELLED.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
searchState(), searchStateChanged()
void Tp::ContactSearchChannel::searchStateChanged ( Tp::ChannelContactSearchState  state,
const QString &  errorName,
const Tp::ContactSearchChannel::SearchStateChangeDetails details 
)
signal

Emitted when the value of searchState() changes.

Parameters
stateThe new state.
errorNameThe name of the error if any.
detailsThe details for the state change.
See Also
searchState()
void Tp::ContactSearchChannel::searchResultReceived ( const Tp::ContactSearchChannel::SearchResult result)
signal

Emitted when a result for a search is received. It can be emitted multiple times until the searchState() goes to ChannelContactSearchStateCompleted or ChannelContactSearchStateFailed.

Parameters
resultThe search result.
See Also
searchState()

Member Data Documentation

const Feature Tp::ContactSearchChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the ContactSearchChannel object usable.

Note that this feature must be enabled in order to use most ContactSearchChannel methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01299.html0000644000175100017520000002405012530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceAnonymityInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceAnonymityInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AnonymityModesChanged(uint modes)Tp::Client::ConnectionInterfaceAnonymityInterfacesignal
ConnectionInterfaceAnonymityInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAnonymityInterface
ConnectionInterfaceAnonymityInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAnonymityInterface
ConnectionInterfaceAnonymityInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceAnonymityInterface
ConnectionInterfaceAnonymityInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceAnonymityInterfaceexplicit
ConnectionInterfaceAnonymityInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceAnonymityInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceAnonymityInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceAnonymityInterfaceinline
requestPropertyAnonymityMandatory() const Tp::Client::ConnectionInterfaceAnonymityInterfaceinline
requestPropertyAnonymityModes() const Tp::Client::ConnectionInterfaceAnonymityInterfaceinline
requestPropertySupportedAnonymityModes() const Tp::Client::ConnectionInterfaceAnonymityInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyAnonymityMandatory(bool newValue)Tp::Client::ConnectionInterfaceAnonymityInterfaceinline
setPropertyAnonymityModes(uint newValue)Tp::Client::ConnectionInterfaceAnonymityInterfaceinline
staticInterfaceName()Tp::Client::ConnectionInterfaceAnonymityInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00657_source.html0000644000175100017520000002561512530426257022533 0ustar00kaffeinekaffeine00000000000000 connection-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
connection-factory.h
1 
23 #ifndef _TelepathyQt_connection_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_connection_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/SharedPtr>
32 #include <TelepathyQt/Types>
33 
34 #include <TelepathyQt/Feature>
35 #include <TelepathyQt/FixedFeatureFactory>
36 
37 // For Q_DISABLE_COPY
38 #include <QtGlobal>
39 
40 #include <QString>
41 
42 class QDBusConnection;
43 
44 namespace Tp
45 {
46 
47 class PendingReady;
48 
49 class TP_QT_EXPORT ConnectionFactory : public FixedFeatureFactory
50 {
51 public:
52  static ConnectionFactoryPtr create(const QDBusConnection &bus,
53  const Features &features = Features());
54 
55  virtual ~ConnectionFactory();
56 
57  PendingReady *proxy(const QString &busName, const QString &objectPath,
58  const ChannelFactoryConstPtr &chanFactory,
59  const ContactFactoryConstPtr &contactFactory) const;
60 
61 protected:
62  ConnectionFactory(const QDBusConnection &bus, const Features &features);
63 
64  virtual ConnectionPtr construct(const QString &busName, const QString &objectPath,
65  const ChannelFactoryConstPtr &chanFactory,
66  const ContactFactoryConstPtr &contactFactory) const;
67  virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const;
68  // Nothing we'd like to prepare()
69  // Fixed features
70 
71 private:
72  struct Private;
73  Private *mPriv; // Currently unused, just for future-proofing
74 };
75 
76 } // Tp
77 
78 #endif
The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set o...
Definition: fixed-feature-factory.h:43
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
The ConnectionFactory class is responsible for constructing Connection objects according to applicati...
Definition: connection-factory.h:49
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00082.html0000644000175100017520000003102212530426257021130 0ustar00kaffeinekaffeine00000000000000 Tp::AccountPropertyFilter Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Member Functions | Static Public Member Functions | List of all members
Tp::AccountPropertyFilter Class Reference

The AccountPropertyFilter class provides a filter object to be used to filter accounts by properties. More...

#include <TelepathyQt/AccountPropertyFilter>

Inherits Tp::GenericPropertyFilter< Account >.

Public Member Functions

 ~AccountPropertyFilter ()
 
bool isValid () const
 
- Public Member Functions inherited from Tp::GenericPropertyFilter< Account >
virtual ~GenericPropertyFilter ()
 
virtual bool matches (const SharedPtr< Account > &t) const
 
QVariantMap filter () const
 
void addProperty (const QString &propertyName, const QVariant &propertyValue)
 
void setProperties (const QVariantMap &filter)
 
- Public Member Functions inherited from Tp::Filter< T >
virtual ~Filter ()
 
virtual bool matches (const SharedPtr< T > &t) const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static AccountPropertyFilterPtr create ()
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::GenericPropertyFilter< Account >
 GenericPropertyFilter ()
 
- Protected Member Functions inherited from Tp::Filter< T >
 Filter ()
 

Detailed Description

The AccountPropertyFilter class provides a filter object to be used to filter accounts by properties.

Constructor & Destructor Documentation

Tp::AccountPropertyFilter::~AccountPropertyFilter ( )

Member Function Documentation

static AccountPropertyFilterPtr Tp::AccountPropertyFilter::create ( )
inlinestatic
bool Tp::AccountPropertyFilter::isValid ( ) const
virtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01043.html0000644000175100017520000000737312530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Member List

This is the complete list of members for Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, including all inherited members.

fnTp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >
FunctionType typedefTp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >
MemberFunctor7(T *object, FunctionType fn)Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >inline
objectTp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >inline
ResultType typedefTp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00898.html0000644000175100017520000012725512530426257021165 0ustar00kaffeinekaffeine00000000000000 List types
   Home · All Classes · All Namespaces · Modules · Functions · Files
Classes | Typedefs

Classes

struct  Tp::ByteArrayList
 
struct  Tp::ObjectPathList
 
struct  Tp::UIntList
 

Typedefs

typedef QList< AliasPair > Tp::AliasPairList
 
typedef QList< CallMemberMap > Tp::CallMemberMapList
 
typedef QList< Candidate > Tp::CandidateList
 
typedef QList< CapabilityChange > Tp::CapabilityChangeList
 
typedef QList< CapabilityPair > Tp::CapabilityPairList
 
typedef QList< CaptchaInfo > Tp::CaptchaInfoList
 
typedef QList< ChannelClass > Tp::ChannelClassList
 
typedef QList< ChannelDetails > Tp::ChannelDetailsList
 
typedef QList< ChannelInfo > Tp::ChannelInfoList
 
typedef QList< ContactCapability > Tp::ContactCapabilityList
 
typedef QList< ContactInfoField > Tp::ContactInfoFieldList
 
typedef QList< DBusTubeMember > Tp::DBusTubeMemberList
 
typedef QList< DebugMessage > Tp::DebugMessageList
 
typedef QList< FieldSpec > Tp::FieldSpecs
 
typedef QList< HTTPPostData > Tp::HTTPPostDataList
 
typedef QList< LocalPendingInfo > Tp::LocalPendingInfoList
 
typedef QList< Mail > Tp::MailList
 
typedef QList< MailAddress > Tp::MailAddressList
 
typedef QList
< MediaSessionHandlerInfo > 
Tp::MediaSessionHandlerInfoList
 
typedef QList
< MediaStreamHandlerTransport > 
Tp::MediaStreamHandlerTransportList
 
typedef QList< MediaStreamInfo > Tp::MediaStreamInfoList
 
typedef QList< MessagePart > Tp::MessagePartList
 
typedef QList< MessagePartList > Tp::MessagePartListList
 
typedef QList
< ObjectImmutablePropertiesMap > 
Tp::ObjectImmutablePropertiesMapList
 
typedef QList< ParamSpec > Tp::ParamSpecList
 
typedef QList< PendingTextMessage > Tp::PendingTextMessageList
 
typedef QList
< PropertyFlagsChange > 
Tp::PropertyFlagsChangeList
 
typedef QList< PropertySpec > Tp::PropertySpecList
 
typedef QList< PropertyValue > Tp::PropertyValueList
 
typedef QList
< QualifiedPropertyValueMap > 
Tp::QualifiedPropertyValueMapList
 
typedef QList
< RTCPFeedbackMessage > 
Tp::RTCPFeedbackMessageList
 
typedef QList< RTPHeaderExtension > Tp::RTPHeaderExtensionsList
 
typedef QList
< RequestableChannelClass > 
Tp::RequestableChannelClassList
 
typedef QList< RoomInfo > Tp::RoomInfoList
 
typedef QList< SocketAddressIP > Tp::SocketAddressIPList
 
typedef QList< StringStringMap > Tp::StringStringMapList
 
typedef QList< StringVariantMap > Tp::StringVariantMapList
 
typedef QList
< TLSCertificateRejection > 
Tp::TLSCertificateRejectionList
 
typedef QList< TubeInfo > Tp::TubeInfoList
 
typedef QList< VideoResolution > Tp::VideoResolutionStruct
 
typedef QList< CandidatePair > Tp::CandidatePairList
 
typedef QList< Codec > Tp::CodecList
 
typedef QList
< ContactCapabilitiesMap > 
Tp::ContactCapabilitiesMapList
 
typedef QList
< HandlerCapabilities > 
Tp::HandlerCapabilitiesList
 
typedef QList
< MediaStreamHandlerCandidate > 
Tp::MediaStreamHandlerCandidateList
 
typedef QList
< MediaStreamHandlerCodec > 
Tp::MediaStreamHandlerCodecList
 
typedef QList< ServicePointInfo > Tp::ServicePointInfoList
 

Detailed Description

List types generated from the specification.

Typedef Documentation

typedef QList<AliasPair> Tp::AliasPairList

Array of AliasPair values.

typedef QList<CallMemberMap> Tp::CallMemberMapList

Array of CallMemberMap values.

typedef QList<Candidate> Tp::CandidateList

Array of Candidate values.

typedef QList<CapabilityChange> Tp::CapabilityChangeList

Array of CapabilityChange values.

typedef QList<CapabilityPair> Tp::CapabilityPairList

Array of CapabilityPair values.

typedef QList<CaptchaInfo> Tp::CaptchaInfoList

Array of CaptchaInfo values.

typedef QList<ChannelClass> Tp::ChannelClassList

Array of ChannelClass values.

typedef QList<ChannelDetails> Tp::ChannelDetailsList

Array of ChannelDetails values.

typedef QList<ChannelInfo> Tp::ChannelInfoList

Array of ChannelInfo values.

typedef QList<ContactCapability> Tp::ContactCapabilityList

Array of ContactCapability values.

typedef QList<ContactInfoField> Tp::ContactInfoFieldList

Array of ContactInfoField values.

typedef QList<DBusTubeMember> Tp::DBusTubeMemberList

Array of DBusTubeMember values.

typedef QList<DebugMessage> Tp::DebugMessageList

Array of DebugMessage values.

typedef QList<FieldSpec> Tp::FieldSpecs

Array of FieldSpec values.

typedef QList<HTTPPostData> Tp::HTTPPostDataList

Array of HTTPPostData values.

typedef QList<LocalPendingInfo> Tp::LocalPendingInfoList

Array of LocalPendingInfo values.

typedef QList<Mail> Tp::MailList

Array of Mail values.

typedef QList<MailAddress> Tp::MailAddressList

Array of MailAddress values.

typedef QList<MediaSessionHandlerInfo> Tp::MediaSessionHandlerInfoList

Array of MediaSessionHandlerInfo values.

typedef QList<MediaStreamHandlerTransport> Tp::MediaStreamHandlerTransportList

Array of MediaStreamHandlerTransport values.

typedef QList<MediaStreamInfo> Tp::MediaStreamInfoList

Array of MediaStreamInfo values.

typedef QList<MessagePart> Tp::MessagePartList

Array of MessagePart values.

typedef QList<MessagePartList> Tp::MessagePartListList

Array of MessagePartList values.

typedef QList<ObjectImmutablePropertiesMap> Tp::ObjectImmutablePropertiesMapList

Array of ObjectImmutablePropertiesMap values.

typedef QList<ParamSpec> Tp::ParamSpecList

Array of ParamSpec values.

typedef QList<PendingTextMessage> Tp::PendingTextMessageList

Array of PendingTextMessage values.

typedef QList<PropertyFlagsChange> Tp::PropertyFlagsChangeList

Array of PropertyFlagsChange values.

typedef QList<PropertySpec> Tp::PropertySpecList

Array of PropertySpec values.

typedef QList<PropertyValue> Tp::PropertyValueList

Array of PropertyValue values.

typedef QList<QualifiedPropertyValueMap> Tp::QualifiedPropertyValueMapList

Array of QualifiedPropertyValueMap values.

typedef QList<RTCPFeedbackMessage> Tp::RTCPFeedbackMessageList

Array of RTCPFeedbackMessage values.

typedef QList<RTPHeaderExtension> Tp::RTPHeaderExtensionsList

Array of RTPHeaderExtension values.

typedef QList<RequestableChannelClass> Tp::RequestableChannelClassList

Array of RequestableChannelClass values.

typedef QList<RoomInfo> Tp::RoomInfoList

Array of RoomInfo values.

typedef QList<SocketAddressIP> Tp::SocketAddressIPList

Array of SocketAddressIP values.

typedef QList<StringStringMap> Tp::StringStringMapList

Array of StringStringMap values.

typedef QList<StringVariantMap> Tp::StringVariantMapList

Array of StringVariantMap values.

typedef QList<TLSCertificateRejection> Tp::TLSCertificateRejectionList

Array of TLSCertificateRejection values.

typedef QList<TubeInfo> Tp::TubeInfoList

Array of TubeInfo values.

typedef QList<VideoResolution> Tp::VideoResolutionStruct

Array of VideoResolution values.

typedef QList<CandidatePair> Tp::CandidatePairList

Array of CandidatePair values.

typedef QList<Codec> Tp::CodecList

Array of Codec values.

typedef QList<ContactCapabilitiesMap> Tp::ContactCapabilitiesMapList

Array of ContactCapabilitiesMap values.

typedef QList<HandlerCapabilities> Tp::HandlerCapabilitiesList

Array of HandlerCapabilities values.

typedef QList<MediaStreamHandlerCandidate> Tp::MediaStreamHandlerCandidateList

Array of MediaStreamHandlerCandidate values.

typedef QList<MediaStreamHandlerCodec> Tp::MediaStreamHandlerCodecList

Array of MediaStreamHandlerCodec values.

typedef QList<ServicePointInfo> Tp::ServicePointInfoList

Array of ServicePointInfo values.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00397.html0000644000175100017520000002227212530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor1< R, T, Arg1 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Public Types | Public Member Functions | Public Attributes | List of all members
Tp::MemberFunctor1< R, T, Arg1 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor1 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1>
typedef R(T::* Tp::MemberFunctor1< R, T, Arg1 >::FunctionType)(Arg1)
template<class R, class T, class Arg1>
typedef R Tp::MemberFunctor1< R, T, Arg1 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1>
Tp::MemberFunctor1< R, T, Arg1 >::MemberFunctor1 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1>
ResultType Tp::MemberFunctor1< R, T, Arg1 >::operator() ( Arg1  a1) const
inline

Member Data Documentation

template<class R, class T, class Arg1>
T* Tp::MemberFunctor1< R, T, Arg1 >::object
template<class R, class T, class Arg1>
FunctionType Tp::MemberFunctor1< R, T, Arg1 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00653_source.html0000644000175100017520000000623012530426257022517 0ustar00kaffeinekaffeine00000000000000 client.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
client.h
1 
23 #ifndef _TelepathyQt_client_h_HEADER_GUARD_
24 #define _TelepathyQt_client_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-client.h>
31 
32 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01358.html0000644000175100017520000001127612530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeRoomListAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeRoomListAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetListingRooms(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeRoomListAdaptorslot
GotRooms(const Tp::RoomInfoList &rooms)Tp::Service::ChannelTypeRoomListAdaptorsignal
ListingRooms(bool listing)Tp::Service::ChannelTypeRoomListAdaptorsignal
ListRooms(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeRoomListAdaptorslot
Server() const Tp::Service::ChannelTypeRoomListAdaptor
StopListing(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeRoomListAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00141.html0000644000175100017520000012511412530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::CallContent Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Signals | Public Member Functions | List of all members
Tp::CallContent Class Reference

The CallContent class provides an object representing a Telepathy Call.Content. More...

#include <TelepathyQt/CallContent>

Inherits Tp::StatefulDBusProxy, and Tp::OptionalInterfaceFactory< CallContent >.

Signals

void streamAdded (const Tp::CallStreamPtr &stream)
 
void streamRemoved (const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

 ~CallContent ()
 
CallChannelPtr channel () const
 
QString name () const
 
MediaStreamType type () const
 
CallContentDisposition disposition () const
 
CallStreams streams () const
 
PendingOperationremove ()
 
bool supportsDTMF () const
 
PendingOperationstartDTMFTone (DTMFEvent event)
 
PendingOperationstopDTMFTone ()
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< CallContent >
 OptionalInterfaceFactory (CallContent *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< CallContent >
enum  InterfaceSupportedChecking
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< CallContent >
void setInterfaces (const QStringList &interfaces)
 

Detailed Description

The CallContent class provides an object representing a Telepathy Call.Content.

Instances of this class cannot be constructed directly; the only way to get one is via CallChannel.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::CallContent::~CallContent ( )

Class destructor.

Member Function Documentation

CallChannelPtr Tp::CallContent::channel ( ) const

Return the channel owning this media content.

Returns
The channel owning this media content.
QString Tp::CallContent::name ( ) const

Return the name of this media content.

Returns
The name of this media content.
MediaStreamType Tp::CallContent::type ( ) const

Return the type of this media content.

Returns
The type of this media content.
CallContentDisposition Tp::CallContent::disposition ( ) const

Return the disposition of this media content.

Returns
The disposition of this media content.
CallStreams Tp::CallContent::streams ( ) const

Return the media streams of this media content.

Returns
A list of media streams of this media content.
See Also
streamAdded(), streamRemoved()
PendingOperation * Tp::CallContent::remove ( )

Removes this media content from the call.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
bool Tp::CallContent::supportsDTMF ( ) const

Return whether sending DTMF events is supported on this content. DTMF is only supported on audio contents that implement the TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF interface.

Returns
true if DTMF is supported, or false otherwise.
PendingOperation * Tp::CallContent::startDTMFTone ( DTMFEvent  event)

Start sending a DTMF tone on this media stream.

Where possible, the tone will continue until stopDTMFTone() is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation may emit a fixed-length tone, and the stopDTMFTone() method call should return TP_QT_ERROR_NOT_AVAILABLE.

If this content does not support the TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF interface, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_IMPLEMENTED.

Parameters
eventA numeric event code from the DTMFEvent enum.
Returns
A PendingOperation which will emit PendingOperation::finished when the request finishes.
See Also
stopDTMFTone(), supportsDTMF()
PendingOperation * Tp::CallContent::stopDTMFTone ( )

Stop sending any DTMF tone which has been started using the startDTMFTone() method.

If there is no current tone, the resulting PendingOperation will finish successfully.

If this content does not support the TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF interface, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_IMPLEMENTED.

Returns
A PendingOperation which will emit PendingOperation::finished when the request finishes.
See Also
startDTMFTone(), supportsDTMF()
void Tp::CallContent::streamAdded ( const Tp::CallStreamPtr &  stream)
signal

This signal is emitted when a new media stream is added to this media content.

Parameters
streamThe media stream that was added.
See Also
streams()
void Tp::CallContent::streamRemoved ( const Tp::CallStreamPtr &  stream,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when a new media stream is removed from this media content.

Parameters
streamThe media stream that was removed.
reasonThe reason for this removal.
See Also
streams()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01102.html0000644000175100017520000000454512530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RefCounted Member List

This is the complete list of members for Tp::RefCounted, including all inherited members.

RefCounted()Tp::RefCountedinline
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00957.html0000644000175100017520000003444512530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseProtocol Member List

This is the complete list of members for Tp::BaseProtocol, including all inherited members.

authenticationTypes() const Tp::BaseProtocol
BaseProtocol(const QDBusConnection &dbusConnection, const QString &name)Tp::BaseProtocolprotected
busName() const Tp::DBusService
connectionInterfaces() const Tp::BaseProtocol
create(const QString &name)Tp::BaseProtocolinlinestatic
create(const QString &name)Tp::BaseProtocolinlinestatic
create(const QDBusConnection &dbusConnection, const QString &name)Tp::BaseProtocolinlinestatic
create(const QDBusConnection &dbusConnection, const QString &name)Tp::BaseProtocolinlinestatic
createConnection(const QVariantMap &parameters, DBusError *error)Tp::BaseProtocol
CreateConnectionCallback typedefTp::BaseProtocol
dbusConnection() const Tp::DBusService
dbusObject() const Tp::DBusService
DBusService(const QDBusConnection &dbusConnection)Tp::DBusService
englishName() const Tp::BaseProtocol
iconName() const Tp::BaseProtocol
identifyAccount(const QVariantMap &parameters, DBusError *error)Tp::BaseProtocol
IdentifyAccountCallback typedefTp::BaseProtocol
immutableProperties() const Tp::BaseProtocolvirtual
interface(const QString &interfaceName) const Tp::BaseProtocol
interfaces() const Tp::BaseProtocol
isRegistered() const Tp::DBusService
name() const Tp::BaseProtocol
normalizeContact(const QString &contactId, DBusError *error)Tp::BaseProtocol
NormalizeContactCallback typedefTp::BaseProtocol
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusService
parameters() const Tp::BaseProtocol
plugInterface(const AbstractProtocolInterfacePtr &interface)Tp::BaseProtocol
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerObject(const QString &busName, const QString &objectPath, DBusError *error)Tp::BaseProtocolprotectedvirtual
requestableChannelClasses() const Tp::BaseProtocol
setAuthenticationTypes(const QStringList &authenticationTypes)Tp::BaseProtocol
setConnectionInterfaces(const QStringList &connInterfaces)Tp::BaseProtocol
setCreateConnectionCallback(const CreateConnectionCallback &cb)Tp::BaseProtocol
setEnglishName(const QString &englishName)Tp::BaseProtocol
setIconName(const QString &iconName)Tp::BaseProtocol
setIdentifyAccountCallback(const IdentifyAccountCallback &cb)Tp::BaseProtocol
setNormalizeContactCallback(const NormalizeContactCallback &cb)Tp::BaseProtocol
setParameters(const ProtocolParameterList &parameters)Tp::BaseProtocol
setRequestableChannelClasses(const RequestableChannelClassSpecList &rccSpecs)Tp::BaseProtocol
setVCardField(const QString &vcardField)Tp::BaseProtocol
vcardField() const Tp::BaseProtocol
~BaseProtocol()Tp::BaseProtocolvirtual
~DBusService()Tp::DBusServicevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/doxygen.css0000644000175100017520000001317012530426257021623 0ustar00kaffeinekaffeine00000000000000body, table, div, p, dl { font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; font-size: 12px; } /* @group Heading Levels */ h1 { text-align: center; font-size: 150%; } h2 { font-size: 110%; font-weight: bold; } h3 { font-size: 100%; } h3.version { font-size: 100%; text-align: center; } /* @end */ caption { font-weight: bold; } div.title{ font-size: 150%; text-align: center; margin: 2px; padding: 2px; } div.qindex, div.navtab{ background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; } div.qindex, div.navpath { width: 100%; line-height: 140%; } div.navtab { margin-right: 15px; } /* @group Link Styling */ a { color: #153788; font-weight: normal; text-decoration: none; } .contents a:visited { color: #1b77c5; } a:hover { text-decoration: underline; } a.qindex { font-weight: bold; } a.qindexHL { font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } .contents a.qindexHL:visited { color: #ffffff; } a.el { } a.elRef { } a.code { } a.codeRef { } /* @end */ dl.el { margin-left: -1cm; } .fragment { font-family: monospace, fixed; font-size: 100%; } pre.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; padding: 4px 6px; margin: 4px 8px 4px 2px; } div.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } div.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } div.groupText { margin-left: 16px; font-style: italic; } body { background: white; color: black; margin-right: 20px; margin-left: 20px; } td.indexkey { background-color: #e8eef2; font-weight: bold; border: 1px solid #CCCCCC; margin: 2px 0px 2px 0; padding: 2px 10px; } td.indexvalue { background-color: #e8eef2; border: 1px solid #CCCCCC; padding: 2px 10px; margin: 2px 0px; } tr.memlist { background-color: #f0f0f0; } p.formulaDsp { text-align: center; } img.formulaDsp { } img.formulaInl { vertical-align: middle; } /* @group Code Colorization */ span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } span.vhdldigit { color: #ff00ff } span.vhdlchar { color: #000000 } span.vhdlkeyword { color: #700070 } span.vhdllogic { color: #ff0000 } /* @end */ .search { color: #003399; font-weight: bold; } form.search { margin-bottom: 0px; margin-top: 0px; } input.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } td.tiny { font-size: 75%; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #84b0c7; } th.dirtab { background: #e8eef2; font-weight: bold; } hr { height: 0; border: none; border-top: 1px solid #666; } /* @group Member Descriptions */ .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: #FAFAFA; border: none; margin: 4px; padding: 1px 0 0 8px; } .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; color: #555; } .memItemLeft, .memItemRight, .memTemplParams { border-top: 1px solid #ccc; } .memTemplParams { color: #606060; } /* @end */ /* @group Member Details */ /* Styles for detailed member documentation */ .memtemplate { font-size: 80%; color: #606060; font-weight: normal; margin-left: 3px; } .memnav { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .memitem { padding: 0; } .memname { white-space: nowrap; font-weight: bold; } .memproto { padding: 0; background-color: #d5e1e8; font-weight: bold; border: 1px solid #84b0c7; } .memdoc { padding: 2px 5px; border-top-width: 0; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; white-space: nowrap; } .paramname em { font-style: normal; } /* @end */ /* @group Directory (tree) */ /* for the tree view */ .ftvtree { font-family: sans-serif; margin: 0.5em; } /* these are for tree view when used as main index */ .directory { font-size: 9pt; font-weight: bold; } .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } /* The following two styles can be used to replace the root node title with an image of your choice. Simply uncomment the next two styles, specify the name of your image and be sure to set 'height' to the proper pixel height of your image. */ /* .directory h3.swap { height: 61px; background-repeat: no-repeat; background-image: url("yourimage.gif"); } .directory h3.swap span { display: none; } */ .directory > h3 { margin-top: 0; } .directory p { margin: 0px; white-space: nowrap; } .directory div { display: none; margin: 0px; } .directory img { vertical-align: -30%; } /* these are for tree view when not used as main index */ .directory-alt { font-size: 100%; font-weight: bold; } .directory-alt h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } .directory-alt > h3 { margin-top: 0; } .directory-alt p { margin: 0px; white-space: nowrap; } .directory-alt div { display: none; margin: 0px; } .directory-alt img { vertical-align: -30%; } /* @end */ address { font-style: normal; color: #333; } div.rationale:before { content: "Rationale:"; display: block; font-weight: bold; font-size: 0.85em; } div.rationale { font-style: italic; border-left: 0.25em solid #808080; padding-left: 0.5em; } div.rationale p { font-size: 0.85em; } telepathy-qt-0.9.6.1/doc/html/doxygen.png0000644000175100017520000000730312530426257021620 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRh ;ˆØŠIDATxí]y\•Õº~45%TL Q”PE"q–Û11±]8a„w*©¨(*â" ˆzÀè`8 ¨‰¢mÅ,’òà„p$%”œBó(8k†Ü÷ýÜû6lòö»§k÷Ç÷[ÏÞß·Ö;?k½ëßÕÕÕPxÑêÏ't´ÏùÈ€zÀÇÅ3_€Q4€g@œmÿ ¾ò‰âci‰ôçÿ{ ðÇð¬ù~½Á€4:õHcÂü ðŸÁ³„ª'ÕPÆæ P7^h،♠zb„cóP¨„ 3‚† Ò}çÿO²qÁºNkÝTÛ(É?d Ç~z<’«4Óǡ؞Þv­zµÙ¦õ¬ZâdÛ,Ë6Ók±]Fz< ¾ZçƒsÕ?ìƒsUø2SÉåwê1”c`[ì—}%ѽ.Ô¼6‚BLZ˜û!F8[ ¹…×TéÛ— »Þ#gó]å:vžu?‡vèbÙR˜?wùŽŸ¾ÊÐgbÑÉÌÕ$kF~Ê;عÆ•¢ïX®?ÉèlÆÙôõà»Nʪ¼­,ìHC§gAz•ÆlÓº­gÑú ]œjÎñåM…3ÓÚæoÒ³'=‘$Ò÷f}G•ŸS_‡öèco.Êȹ :ó£ Ãds®Ù:1=¼{ƒå9?÷ý…zqÛvîÓi‰D’p¿Ë šmÙíoÛâýaÖüEqÒµwÌ}¿~{òj€ç{ôºŸFNëí[ëOq·ÇOSúXO]°>‚‚muæÄ¾e¤“5Ë{¨JÕ¯£(›´«bÂçû’ÍlÓÅ}žïú`éUÞy„ac§Á†ÔCºŠóAkl‘±y¥†ô¢ùôs÷Aø¬7ÄõôoJ±äÄ ù.¥Be. Z¬Ð×ÇÈöå¹­ù'Ù-PëìŠyF.ž‚žÝÚ€lp&.êˆð•jò7’re’z19»ã§HGíø%œüq°ïüz׈c¬_k_")ŸHJnÐÑ~ˆÐÖ˜á´äÕ5 µÁq€ÿ5#¸·îà¶+9T‘‚ ðŽ÷Rܸrz“Ï´Ì =Ï…{ðáO£Èf ¡Íwg|Ž’Ü/¢Þ$÷¯¢ëðúÀ;¿à¨Ö™âÒÆ­]¯ÜW"Þ/< ‡÷DÏà°½üB}çyIEc^—ƒ=[V“Ýh²ëMä$l];Kû®¸ýr¦È*Åò ÿtÒõ$]•MŸ÷´;×I€1èó!‚œõ¸M õ¨(fÌæ<ÁÎÎò5~z¿ù¶ž mÌêÕ >–âÚ©âëˆIÎÞçz;ãu[i·eç^ÆÜÙÓ³NÞëF6B\}7†»+üŽÓ,Ã'a ½˜-yHY¿,‘^—ñfú~ß?Hcø¸…¸ñó{Z+4\såƒû·¯Ù·nߣð«íFÆ¡sغëû§D¾?ò<–Ævkx0ÅM±ælذÁIÓxÿd”žÜÉ÷EE»AªM«g*È£YEí7Û™^[uíý®v[wGå†=Ed¼n×¶ÆæÖÅl¡'¨pGÚk+‹æ¢À¬¨C8ªâš2 dz3H£ß ¡¨BÒûSÃÅù[wŘ ~xpçútÁæmö¤Å£¥iQæ­‰AB1ÉfÙ‰›4u¹ïìIÒ]Ë6äò%ÿ†† 1t.’NJph¬zÌ ÎR1Ž"3-"¸‡‹&ìó°1âüžìó[:‡ï„¼‘……N m–“W0®_èÜœ ×õ6ùò&»)Æìꦬýæ}¬ñ~»{múù]z½£M•ºP~^Îá:eQTÙ_*7ÕÄ9É8—·Ëï 3°¶47E•î¿u÷“SÉ»U¯ _ NíºôW¬e¸ÄNÓ|»;™¿;ŒæÅd"ȉôøòÞµõï¾®½"èÄ´ÖMM+bYµ‘_ÉæEÝüÎ]P»¹XKÐI½Þ¥oE<_¹(„EP±Œ|mÇÁ¡‘Ý,ŠÓ©ººZ±Îߺ§×kÝ,kÍMš`Äø…jzeU»æ ™Át3ÓÀ½˜6—ÒöùË·r¨¹Ñ}““wö:Χùë¼ ¿|‚TܵÉQˆKßç_ÁâÀ™œ”pÑÐóໃ¼Ydâ0!®àa –øöçW$ÃÁ‘Á$/\¬$ð 2ÞímÞLH‹Ÿ èd£HVÜ,:ò½»RÍZšJ­a„z*>‹_…NT(ù‚^SVF­U¹8ñEþôñ܈óùnd;«®8™\C]ø=Èêm¬Æ:‚´ÆbãDd=Áãßžˆ‹UU5O‹|]þð®Pèêv‰á\]2ßìÿ"yÈ[ïyʧz£g{Y«{„Ùø5©ÿ;w{N3é­nâĨw§Á¢ÍK¢Ý­ûÏ29Id¿’ì y)ìPÞò8ŒÅ©¯‰±@mPÔñwjl,6 áhWÕ˜d öà uõmÁp®.™á£Ç…twöR x­BδYcŒxg*vo  yò‘•“[¬?ÜVœ˜0ÒN¡O난~Žó’¯·h#´Hkýœ±8kÓß^Àq@]àÓ“ø,56´¯÷Í-κU»n…[>]@nîøÏœp›[œ6# €4tën¯:ŽÒþ}…—8äT9_žY$/´G’K™©ù†•(óÑ’Mø©`ŸÉdѺ;ùO‹B Ó&P{qöhJÉ+Úé–§¦l2«MïöÝ_1ÑÓ«’t¸½±l€ëØya ¦ô©«®½ÆL^¬žêñš¸ùy.¾Û½Š[ u/]½‹iS}øN>²e1™q‡jfÚ&¢©iT\=kÏ›ÀXô-.84V5ðu!TE˜ þ.ŒOH´¶4—zwTr.ï‰¦Ë xõµ·œÖ„HÆù£žÈHùg Ñhñ’T$ßyq¸zþ¨p¿´ë< q•ró÷š‰wÿÍÑð–I]´–æI²é²˜sÂ"×:Õ–bÕ¦“ÈÙL6¢9VÊÓWž§<æ;”3?ý©Mê3AV#µ±ËÞ¯‘ž K£UrÝ9!›qát¦H£Ù+6ÇV…/TS^pÃùqgLP'Ú5E ‚–ÀÞºîÄ Ën"2|Ÿ;®W»Îý"Ö¬TwÖâµtúŽO'› á+W Ã+¦âZÌ–<ÕÆ&nOÝ,IŠ£06.ÁZ.Çñúøh*INÚ’Oe½ÉgBXÐÔZóäøä9èü“hÒíDSš¥¡Ê µA¯/Ôc¸ö“`A§¯"zå|‘ €ÅŸ¨ú;HÍ#‚Î|%ÄOˆƒ«OàÌÉÐÜD ž mÜðâc–ƤÉÂqm¶uË&~÷núÒË £ÇÏ€ZÕj =«_n[‡‡÷nN§ÏÝ$_¾bE˜‚€Õ)ù8¾?6‘lú“ÍÙæÖ}#bW( œ³d-®•p&¡ý’œÖa”"9öõņÐ$’Ú›AÜ!ä;ÐÑõè{~á¹8‘ÛÞ£1ÛÓÉ0ž`²#´kÒuäNÅÖ Q¹bhæ ”8ûÓMáŽa›•¿”w±h²¢®qŠæ°(bK ‚’Z¾Ò%ÐÆémáãÖË(Éý‚ÛJ)@> þ›7% ï{y Á“¾ÆÒîohfòô>{pÿ.­_Î%±ÉèägëlZØ\B2B #™¸ÚüÒºp‚hÝšü®[¥Ü<‹#SpñÌA7’ãØHƒt4:Ÿ|g¨tÓL¶*($Æ©»ì…®ù’ó÷$;b›ÔÙ`=¶£¦M„MÌÄ5ò«·Ç¾“H·ÌH.¼žHeAîº5}r­dõ¨±)ÀT};€Q5iÖ2…O0ü…0óñÃ;óæ,Š´²µ냔}g‘£]‹7å9ˆà©_{üèîêžC>úhê{Ž .ÈìðIIð€?[Kswz6Òuíý¬;µ€ç§OåâJÉa˶zv°éd† ¤µâ‚l´é舊«Åüy¾c÷ÁèÖÍ'ràúÅ™TWÕôÓ°¡L €|ʽŒ¼ì­høBã ÝTëî'ò]Kø£ìâÏ(=¹Kx €¿ LÌ,Pý¤Êµu‡¹…׈ §Å¾÷à1Ý«Äý;¿pGDäxZYÛ kfæ6¸ùóæ7®œ®þ6·ÕoÚ¾ÔH~ò®Þ¸â 8Uø“p<ºw3¡a£ÏÑ’‘3èÏ"€bˆ-ÎܺÏ_ªÅ]+ËM©zü°s“f-êçhÇãÑýÊãôÿ5}ZQNb{Ó?å%ÿ\SUõعIÓæ}~}p[œoÔÄ„êÐMMZáNÅå@>Œ„²á6(?¡Åé âK½+ü?À%ÝÝ·/Ç1‚9áUø?B)”ÕèâÞlÈÒêÏ @=àùÄÞžk­®ÅIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00456.html0000644000175100017520000003362512530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Profile::Presence Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Profile::Presence Class Reference

The Profile::Presence class represents a presence defined in .profile files. More...

#include <TelepathyQt/Profile>

Public Member Functions

 Presence ()
 
 Presence (const Presence &other)
 
 Presence (const QString &id, const QString &label, const QString &iconName, const QString &message, bool disabled)
 
 ~Presence ()
 
QString id () const
 
QString label () const
 
QString iconName () const
 
bool canHaveStatusMessage () const
 
bool isDisabled () const
 
Presenceoperator= (const Presence &other)
 

Detailed Description

The Profile::Presence class represents a presence defined in .profile files.

Constructor & Destructor Documentation

Tp::Profile::Presence::Presence ( )

Construct a new Profile::Presence object.

Tp::Profile::Presence::Presence ( const Presence other)

Construct a new Profile::Presence object that is a copy of other.

Tp::Profile::Presence::Presence ( const QString &  id,
const QString &  label,
const QString &  iconName,
const QString &  message,
bool  disabled 
)

Construct a new Profile::Presence object.

Parameters
idThe presence id.
labelThe presence label.
iconNameThe presence icon name.
messageThe presence message.
disabledWhether this presence is supported.
Tp::Profile::Presence::~Presence ( )

Class destructor.

Member Function Documentation

QString Tp::Profile::Presence::id ( ) const

Return the Telepathy presence id for this presence.

Returns
The Telepathy presence id for this presence.
QString Tp::Profile::Presence::label ( ) const

Return the label that should be used for this presence.

Returns
The label for this presence.
QString Tp::Profile::Presence::iconName ( ) const

Return the icon name of this presence.

Returns
The icon name of this presence.
bool Tp::Profile::Presence::canHaveStatusMessage ( ) const

Return whether user-defined text-message can be attached to this presence.

Returns
true if user-defined text-message can be attached to this presence, false otherwise.
bool Tp::Profile::Presence::isDisabled ( ) const

Return whether this presence is supported for the service to which this profile applies.

Returns
true if supported, otherwise false.
Profile::Presence & Tp::Profile::Presence::operator= ( const Presence other)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00200.html0000644000175100017520000007457612530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceFileTransferMetadataInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceFileTransferMetadataInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelInterfaceFileTransferMetadataInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceFileTransferMetadataInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceFileTransferMetadataInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceFileTransferMetadataInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceFileTransferMetadataInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyServiceName () const
 
Tp::PendingOperationsetPropertyServiceName (QString newValue)
 
Tp::PendingVariantrequestPropertyMetadata () const
 
Tp::PendingOperationsetPropertyMetadata (Tp::Metadata newValue)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceFileTransferMetadataInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceFileTransferMetadataInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceFileTransferMetadataInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceFileTransferMetadataInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceFileTransferMetadataInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceFileTransferMetadataInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceFileTransferMetadataInterface::requestPropertyServiceName ( ) const
inline

Asynchronous getter for the remote object property ServiceName of type QString.

A string representing the service name that will be used over the file transfer channel. This property is equivalent to the ChannelTypeDBusTubeInterface::ServiceName and ChannelTypeStreamTubeInterface::Service properties. If no service name is given then this property will be the empty string.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ChannelInterfaceFileTransferMetadataInterface::setPropertyServiceName ( QString  newValue)
inline

Asynchronous setter for the remote object property ServiceName of type QString.

A string representing the service name that will be used over the file transfer channel. This property is equivalent to the ChannelTypeDBusTubeInterface::ServiceName and ChannelTypeStreamTubeInterface::Service properties. If no service name is given then this property will be the empty string.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ChannelInterfaceFileTransferMetadataInterface::requestPropertyMetadata ( ) const
inline

Asynchronous getter for the remote object property Metadata of type Tp::Metadata.

Additional information about the file transfer set by the channel initiator. If no additional information is given then this property will be empty.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ChannelInterfaceFileTransferMetadataInterface::setPropertyMetadata ( Tp::Metadata  newValue)
inline

Asynchronous setter for the remote object property Metadata of type Tp::Metadata.

Additional information about the file transfer set by the channel initiator. If no additional information is given then this property will be empty.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceFileTransferMetadataInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceFileTransferMetadataInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01171.html0000644000175100017520000000544612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaDescriptionProperties Member List

This is the complete list of members for Tp::MediaDescriptionProperties, including all inherited members.

MediaDescriptionProperties()Tp::MediaDescriptionPropertiesinline
MediaDescriptionProperties(const QMap< QString, QDBusVariant > &a)Tp::MediaDescriptionPropertiesinline
operator=(const QMap< QString, QDBusVariant > &a)Tp::MediaDescriptionPropertiesinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/dir_da638a168252e2c60116c394abd6721a.html0000644000175100017520000003751012530426260025357 0ustar00kaffeinekaffeine00000000000000 _gen Directory Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
_gen Directory Reference

Files

file  cli-account-body.hpp [code]
 
file  cli-account-manager-body.hpp [code]
 
file  cli-account-manager.h [code]
 
file  cli-account.h [code]
 
file  cli-call-content-body.hpp [code]
 
file  cli-call-content-media-description-body.hpp [code]
 
file  cli-call-content-media-description.h [code]
 
file  cli-call-content.h [code]
 
file  cli-call-stream-body.hpp [code]
 
file  cli-call-stream-endpoint-body.hpp [code]
 
file  cli-call-stream-endpoint.h [code]
 
file  cli-call-stream.h [code]
 
file  cli-channel-body.hpp [code]
 
file  cli-channel-dispatch-operation-body.hpp [code]
 
file  cli-channel-dispatch-operation.h [code]
 
file  cli-channel-dispatcher-body.hpp [code]
 
file  cli-channel-dispatcher.h [code]
 
file  cli-channel-request-body.hpp [code]
 
file  cli-channel-request.h [code]
 
file  cli-channel.h [code]
 
file  cli-client-body.hpp [code]
 
file  cli-client.h [code]
 
file  cli-connection-body.hpp [code]
 
file  cli-connection-manager-body.hpp [code]
 
file  cli-connection-manager.h [code]
 
file  cli-connection.h [code]
 
file  cli-dbus-body.hpp [code]
 
file  cli-dbus.h [code]
 
file  cli-debug-receiver-body.hpp [code]
 
file  cli-debug-receiver.h [code]
 
file  cli-media-session-handler-body.hpp [code]
 
file  cli-media-session-handler.h [code]
 
file  cli-media-stream-handler-body.hpp [code]
 
file  cli-media-stream-handler.h [code]
 
file  cli-properties-body.hpp [code]
 
file  cli-properties.h [code]
 
file  cli-tls-certificate-body.hpp [code]
 
file  cli-tls-certificate.h [code]
 
file  build/TelepathyQt/_gen/constants.h [code]
 
file  svc-call.cpp
 
file  svc-call.h [code]
 
file  svc-channel.cpp
 
file  svc-channel.h [code]
 
file  svc-connection-manager.cpp
 
file  svc-connection-manager.h [code]
 
file  svc-connection.cpp
 
file  svc-connection.h [code]
 
file  types-body.hpp [code]
 
file  build/TelepathyQt/_gen/types.h [code]
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00515.html0000644000175100017520000001365112530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::SingleContactAttributesMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SingleContactAttributesMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 SingleContactAttributesMap ()
 
 SingleContactAttributesMap (const QMap< QString, QDBusVariant > &a)
 
SingleContactAttributesMapoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

Some of the attributes of a single contact.

Constructor & Destructor Documentation

Tp::SingleContactAttributesMap::SingleContactAttributesMap ( )
inline
Tp::SingleContactAttributesMap::SingleContactAttributesMap ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

SingleContactAttributesMap& Tp::SingleContactAttributesMap::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00646_source.html0000644000175100017520000003040312530426257022520 0ustar00kaffeinekaffeine00000000000000 cli-properties-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-properties-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/properties.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 PropertiesInterfaceInterface::PropertiesInterfaceInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 PropertiesInterfaceInterface::PropertiesInterfaceInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
26 {
27 }
28 
30  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
31 {
32 }
33 
35  const QString &error, const QString &message)
36 {
37  disconnect(this, SIGNAL(PropertiesChanged(const Tp::PropertyValueList&)), NULL, NULL);
38  disconnect(this, SIGNAL(PropertyFlagsChanged(const Tp::PropertyFlagsChangeList&)), NULL, NULL);
39 
40  Tp::AbstractInterface::invalidate(proxy, error, message);
41 }
42 }
43 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
void PropertyFlagsChanged(const Tp::PropertyFlagsChangeList &properties)
QList< PropertyValue > PropertyValueList
Definition: build/TelepathyQt/_gen/types.h:2360
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
void PropertiesChanged(const Tp::PropertyValueList &properties)
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-properties-body.hpp:34
QList< PropertyFlagsChange > PropertyFlagsChangeList
Definition: build/TelepathyQt/_gen/types.h:2293
PropertiesInterfaceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-properties-body.hpp:9


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01230.html0000644000175100017520000000527212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatusSpecMap Member List

This is the complete list of members for Tp::StatusSpecMap, including all inherited members.

operator=(const QMap< QString, StatusSpec > &a)Tp::StatusSpecMapinline
StatusSpecMap()Tp::StatusSpecMapinline
StatusSpecMap(const QMap< QString, StatusSpec > &a)Tp::StatusSpecMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00014.html0000644000175100017520000000727112530426257021134 0ustar00kaffeinekaffeine00000000000000 accounts/accounts-window.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
accounts/accounts-window.h
#ifndef _TelepathyQt_examples_accounts_accounts_window_h_HEADER_GUARD_
#define _TelepathyQt_examples_accounts_accounts_window_h_HEADER_GUARD_
#include <QMainWindow>
#include <TelepathyQt/Types>
namespace Tp {
class PendingOperation;
}
class QTableWidget;
class QTableWidgetItem;
class AccountsWindow : public QMainWindow
{
Q_OBJECT
public:
AccountsWindow(QWidget *parent = 0);
virtual ~AccountsWindow();
private Q_SLOTS:
void onAMReady(Tp::PendingOperation *);
void onNewAccount(const Tp::AccountPtr &);
private:
void setupGui();
Tp::AccountManagerPtr mAM;
QTableWidget *mTable;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x64.html0000644000175100017520000003053412530426260023110 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- d -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00642_source.html0000644000175100017520000002212212530426257022513 0ustar00kaffeinekaffeine00000000000000 cli-media-session-handler-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-media-session-handler-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/media-session-handler.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 MediaSessionHandlerInterface::MediaSessionHandlerInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 MediaSessionHandlerInterface::MediaSessionHandlerInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(NewStreamHandler(const QDBusObjectPath&, uint, uint, uint)), NULL, NULL);
28 
29  Tp::AbstractInterface::invalidate(proxy, error, message);
30 }
31 }
32 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-media-session-handler-body.hpp:24
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
void NewStreamHandler(const QDBusObjectPath &streamHandler, uint ID, uint mediaType, uint direction)
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
MediaSessionHandlerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-media-session-handler-body.hpp:9


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00329.html0000644000175100017520000001341712530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSearchMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSearchMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QString >.

Public Member Functions

 ContactSearchMap ()
 
 ContactSearchMap (const QMap< QString, QString > &a)
 
ContactSearchMapoperator= (const QMap< QString, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QString>, but needed to have a discrete type in the Qt type system.

A map from search keys to search terms.

Constructor & Destructor Documentation

Tp::ContactSearchMap::ContactSearchMap ( )
inline
Tp::ContactSearchMap::ContactSearchMap ( const QMap< QString, QString > &  a)
inline

Member Function Documentation

ContactSearchMap& Tp::ContactSearchMap::operator= ( const QMap< QString, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00083.html0000644000175100017520000007205412530426257021143 0ustar00kaffeinekaffeine00000000000000 Tp::AccountSet Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The AccountSet class represents a set of Telepathy accounts filtered by a given criteria. More...

#include <TelepathyQt/AccountSet>

Inherits Tp::Object.

Signals

void accountAdded (const Tp::AccountPtr &account)
 
void accountRemoved (const Tp::AccountPtr &account)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

 AccountSet (const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter)
 
 AccountSet (const AccountManagerPtr &accountManager, const QVariantMap &filter)
 
virtual ~AccountSet ()
 
AccountManagerPtr accountManager () const
 
AccountFilterConstPtr filter () const
 
QList< AccountPtr > accounts () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Properties

AccountManagerPtr accountManager
 
AccountFilterConstPtr filter
 
QList< AccountPtr > accounts
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The AccountSet class represents a set of Telepathy accounts filtered by a given criteria.

AccountSet is automatically updated whenever accounts that match the given criteria are added, removed or updated.

Usage

Creating an AccountSet object

The easiest way to create AccountSet objects is through AccountManager. One can just use the AccountManager convenience methods such as AccountManager::validAccounts() to get a set of account objects representing valid accounts.

For example:

*
* class MyClass : public QObject
* {
* QOBJECT
*
* public:
* MyClass(QObject *parent = 0);
* ~MyClass() { }
*
* private Q_SLOTS:
* void onAccountManagerReady(Tp::PendingOperation *);
* void onValidAccountAdded(const Tp::AccountPtr &);
* void onValidAccountRemoved(const Tp::AccountPtr &);
*
* private:
* AccountManagerPtr am;
* AccountSetPtr validAccountsSet;
* };
*
* MyClass::MyClass(QObject *parent)
* : QObject(parent)
* {
* connect(am->becomeReady(),
* SIGNAL(finished(Tp::PendingOperation*)),
* SLOT(onAccountManagerReady(Tp::PendingOperation*)));
* }
*
* void MyClass::onAccountManagerReady(Tp::PendingOperation *op)
* {
* if (op->isError()) {
* qWarning() << "Account manager cannot become ready:" <<
* op->errorName() << "-" << op->errorMessage();
* return;
* }
*
* validAccountsSet = am->validAccounts();
* connect(validAccountsSet.data(),
* SIGNAL(accountAdded(const Tp::AccountPtr &)),
* SLOT(onValidAccountAdded(const Tp::AccountPtr &)));
* connect(validAccountsSet.data(),
* SIGNAL(accountRemoved(const Tp::AccountPtr &)),
* SLOT(onValidAccountRemoved(const Tp::AccountPtr &)));
*
* QList<AccountPtr> accounts = validAccountsSet->accounts();
* // do something with accounts
* }
*
* void MyClass::onValidAccountAdded(const Tp::AccountPtr &account)
* {
* // do something with account
* }
*
* void MyClass::onValidAccountRemoved(const Tp::AccountPtr &account)
* {
* // do something with account
* }
*
*

You can also define your own filter using AccountManager::filterAccounts:

*
* void MyClass::onAccountManagerReady(Tp::PendingOperation *op)
* {
* ...
*
* AccountPropertyFilterPtr filter = AccountPropertyFilter::create();
* filter->addProperty(QLatin1String("protocolName"), QLatin1String("jabber"));
* filter->addProperty(QLatin1String("enabled"), true);
*
* AccountSetPtr filteredAccountSet = am->filterAccounts(filter);
* // connect to AccountSet::accountAdded/accountRemoved signals
* QList<AccountPtr> accounts = filteredAccountSet->accounts();
* // do something with accounts
*
* ....
* }
*
*

Note that for AccountSet to property work with AccountCapabilityFilter objects, the feature Account::FeatureCapabilities need to be enabled in all accounts return by the AccountManager passed as param in the constructor. The easiest way to do this is to enable AccountManager feature AccountManager::FeatureFilterByCapabilities.

AccountSet can also be instantiated directly, but when doing it, the AccountManager object passed as param in the constructor must be ready for AccountSet properly work.

Constructor & Destructor Documentation

Tp::AccountSet::AccountSet ( const AccountManagerPtr &  accountManager,
const AccountFilterConstPtr &  filter 
)

Construct a new AccountSet object.

Parameters
accountManagerAn account manager object used to filter accounts. The account manager object must be ready.
filterThe desired filter.
Tp::AccountSet::AccountSet ( const AccountManagerPtr &  accountManager,
const QVariantMap &  filter 
)

Construct a new AccountSet object.

The filter must contain Account property names and values as map items.

Parameters
accountManagerAn account manager object used to filter accounts. The account manager object must be ready.
filterThe desired filter.
Tp::AccountSet::~AccountSet ( )
virtual

Class destructor.

Member Function Documentation

AccountManagerPtr Tp::AccountSet::accountManager ( ) const
AccountFilterConstPtr Tp::AccountSet::filter ( ) const
QList<AccountPtr> Tp::AccountSet::accounts ( ) const
void Tp::AccountSet::accountAdded ( const Tp::AccountPtr &  account)
signal

Emitted whenever an account that matches filter is added to this set.

Parameters
accountThe account that was added to this set.
See Also
accounts()
void Tp::AccountSet::accountRemoved ( const Tp::AccountPtr &  account)
signal

Emitted whenever an account that matches filter is removed from this set.

Parameters
accountThe account that was removed from this set.
See Also
accounts()

Property Documentation

AccountManagerPtr Tp::AccountSet::accountManager
read

Return the account manager object used to filter accounts.

Returns
A pointer to the AccountManager object.
AccountFilterConstPtr Tp::AccountSet::filter
read

Return the filter used to filter accounts.

Returns
A read-only pointer the AccountFilter object.
QList< AccountPtr > Tp::AccountSet::accounts
read

Return a list of account objects that match filter.

Change notification is via the accountAdded() and accountRemoved() signals.

Returns
A list of pointers to Account objects.
See Also
accountAdded(), accountRemoved()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01044.html0000644000175100017520000001250012530426260021121 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::GenericCapabilityFilter< T > Member List

This is the complete list of members for Tp::GenericCapabilityFilter< T >, including all inherited members.

addRequestableChannelClassSubset(const RequestableChannelClassSpec &rccSpec)Tp::GenericCapabilityFilter< T >inline
create(const RequestableChannelClassSpecList &rccSpecs=RequestableChannelClassSpecList())Tp::GenericCapabilityFilter< T >inlinestatic
Filter()Tp::Filter< T >inlineprotected
filter() const Tp::GenericCapabilityFilter< T >inline
isValid() const Tp::GenericCapabilityFilter< T >inlinevirtual
matches(const SharedPtr< T > &t) const Tp::GenericCapabilityFilter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
setRequestableChannelClassesSubset(const RequestableChannelClassSpecList &rccSpecs)Tp::GenericCapabilityFilter< T >inline
~Filter()Tp::Filter< T >inlinevirtual
~GenericCapabilityFilter()Tp::GenericCapabilityFilter< T >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00899.html0000644000175100017520000003520312530426257021155 0ustar00kaffeinekaffeine00000000000000 Mapping types
   Home · All Classes · All Namespaces · Modules · Functions · Files

Classes

struct  Tp::AddressingNormalizationMap
 
struct  Tp::AliasMap
 
struct  Tp::AvatarTokenMap
 
struct  Tp::CallMemberMap
 
struct  Tp::CandidateInfo
 
struct  Tp::CaptchaAnswers
 
struct  Tp::ChannelCallStateMap
 
struct  Tp::ChannelClass
 
struct  Tp::ChannelOriginatorMap
 
struct  Tp::ChatStateMap
 
struct  Tp::ComponentStateMap
 
struct  Tp::ContactAttributesMap
 
struct  Tp::ContactClientTypes
 
struct  Tp::ContactLocations
 
struct  Tp::ContactMediaDescriptionPropertiesMap
 
struct  Tp::ContactSSRCsMap
 
struct  Tp::ContactSearchMap
 
struct  Tp::ContactSendingStateMap
 
struct  Tp::DBusTubeParticipants
 
struct  Tp::HandleIdentifierMap
 
struct  Tp::HandleOwnerMap
 
struct  Tp::Location
 
struct  Tp::Mail
 
struct  Tp::MediaDescriptionProperties
 
struct  Tp::MessagePart
 
struct  Tp::MessagePartContentMap
 
struct  Tp::Metadata
 
struct  Tp::MultipleStatusMap
 
struct  Tp::ObjectImmutablePropertiesMap
 
struct  Tp::ProtocolPropertiesMap
 
struct  Tp::QualifiedPropertyValueMap
 
struct  Tp::SingleContactAttributesMap
 
struct  Tp::StringStringMap
 
struct  Tp::StringVariantMap
 
struct  Tp::SupportedSocketMap
 
struct  Tp::VCardFieldAddressMap
 
struct  Tp::ContactCapabilitiesMap
 
struct  Tp::ContactInfoMap
 
struct  Tp::ContactSearchResultMap
 
struct  Tp::ContactSubscriptionMap
 
struct  Tp::NotDelegatedMap
 
struct  Tp::SimpleContactPresences
 
struct  Tp::SimpleStatusSpecMap
 
struct  Tp::ContactCodecMap
 
struct  Tp::ContactPresences
 
struct  Tp::RTCPFeedbackMessageMap
 
struct  Tp::StatusSpecMap
 

Detailed Description

Mapping types generated from the specification.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00639_source.html0000644000175100017520000026717612530426257022545 0ustar00kaffeinekaffeine00000000000000 cli-dbus.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-dbus.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 namespace DBus
37 {
38 
46 class TP_QT_EXPORT DBusDaemonInterface : public Tp::AbstractInterface
47 {
48  Q_OBJECT
49 
50 public:
57  static inline QLatin1String staticInterfaceName()
58  {
59  return QLatin1String("org.freedesktop.DBus");
60  }
61 
70  const QString& busName,
71  const QString& objectPath,
72  QObject* parent = 0
73  );
74 
84  const QDBusConnection& connection,
85  const QString& busName,
86  const QString& objectPath,
87  QObject* parent = 0
88  );
89 
97 
105  explicit DBusDaemonInterface(const Tp::AbstractInterface& mainInterface);
106 
114  DBusDaemonInterface(const Tp::AbstractInterface& mainInterface, QObject* parent);
115 
123  {
124  return internalRequestAllProperties();
125  }
126 
127 public Q_SLOTS:
136  inline QDBusPendingReply<QString> Hello(int timeout = -1)
137  {
138  if (!invalidationReason().isEmpty()) {
139  return QDBusPendingReply<QString>(QDBusMessage::createError(
140  invalidationReason(),
141  invalidationMessage()
142  ));
143  }
144 
145  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
146  this->staticInterfaceName(), QLatin1String("Hello"));
147  return this->connection().asyncCall(callMessage, timeout);
148  }
149 
158  inline QDBusPendingReply<uint> RequestName(const QString& name, uint flags, int timeout = -1)
159  {
160  if (!invalidationReason().isEmpty()) {
161  return QDBusPendingReply<uint>(QDBusMessage::createError(
162  invalidationReason(),
163  invalidationMessage()
164  ));
165  }
166 
167  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
168  this->staticInterfaceName(), QLatin1String("RequestName"));
169  callMessage << QVariant::fromValue(name) << QVariant::fromValue(flags);
170  return this->connection().asyncCall(callMessage, timeout);
171  }
172 
181  inline QDBusPendingReply<uint> ReleaseName(const QString& name, int timeout = -1)
182  {
183  if (!invalidationReason().isEmpty()) {
184  return QDBusPendingReply<uint>(QDBusMessage::createError(
185  invalidationReason(),
186  invalidationMessage()
187  ));
188  }
189 
190  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
191  this->staticInterfaceName(), QLatin1String("ReleaseName"));
192  callMessage << QVariant::fromValue(name);
193  return this->connection().asyncCall(callMessage, timeout);
194  }
195 
204  inline QDBusPendingReply<uint> StartServiceByName(const QString& service, uint flags, int timeout = -1)
205  {
206  if (!invalidationReason().isEmpty()) {
207  return QDBusPendingReply<uint>(QDBusMessage::createError(
208  invalidationReason(),
209  invalidationMessage()
210  ));
211  }
212 
213  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
214  this->staticInterfaceName(), QLatin1String("StartServiceByName"));
215  callMessage << QVariant::fromValue(service) << QVariant::fromValue(flags);
216  return this->connection().asyncCall(callMessage, timeout);
217  }
218 
227  inline QDBusPendingReply<bool> NameHasOwner(const QString& nameToCheck, int timeout = -1)
228  {
229  if (!invalidationReason().isEmpty()) {
230  return QDBusPendingReply<bool>(QDBusMessage::createError(
231  invalidationReason(),
232  invalidationMessage()
233  ));
234  }
235 
236  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
237  this->staticInterfaceName(), QLatin1String("NameHasOwner"));
238  callMessage << QVariant::fromValue(nameToCheck);
239  return this->connection().asyncCall(callMessage, timeout);
240  }
241 
250  inline QDBusPendingReply<QStringList> ListNames(int timeout = -1)
251  {
252  if (!invalidationReason().isEmpty()) {
253  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
254  invalidationReason(),
255  invalidationMessage()
256  ));
257  }
258 
259  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
260  this->staticInterfaceName(), QLatin1String("ListNames"));
261  return this->connection().asyncCall(callMessage, timeout);
262  }
263 
272  inline QDBusPendingReply<QStringList> ListActivatableNames(int timeout = -1)
273  {
274  if (!invalidationReason().isEmpty()) {
275  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
276  invalidationReason(),
277  invalidationMessage()
278  ));
279  }
280 
281  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
282  this->staticInterfaceName(), QLatin1String("ListActivatableNames"));
283  return this->connection().asyncCall(callMessage, timeout);
284  }
285 
294  inline QDBusPendingReply<> AddMatch(const QString& rule, int timeout = -1)
295  {
296  if (!invalidationReason().isEmpty()) {
297  return QDBusPendingReply<>(QDBusMessage::createError(
298  invalidationReason(),
299  invalidationMessage()
300  ));
301  }
302 
303  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
304  this->staticInterfaceName(), QLatin1String("AddMatch"));
305  callMessage << QVariant::fromValue(rule);
306  return this->connection().asyncCall(callMessage, timeout);
307  }
308 
317  inline QDBusPendingReply<> RemoveMatch(const QString& rule, int timeout = -1)
318  {
319  if (!invalidationReason().isEmpty()) {
320  return QDBusPendingReply<>(QDBusMessage::createError(
321  invalidationReason(),
322  invalidationMessage()
323  ));
324  }
325 
326  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
327  this->staticInterfaceName(), QLatin1String("RemoveMatch"));
328  callMessage << QVariant::fromValue(rule);
329  return this->connection().asyncCall(callMessage, timeout);
330  }
331 
340  inline QDBusPendingReply<QString> GetNameOwner(const QString& name, int timeout = -1)
341  {
342  if (!invalidationReason().isEmpty()) {
343  return QDBusPendingReply<QString>(QDBusMessage::createError(
344  invalidationReason(),
345  invalidationMessage()
346  ));
347  }
348 
349  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
350  this->staticInterfaceName(), QLatin1String("GetNameOwner"));
351  callMessage << QVariant::fromValue(name);
352  return this->connection().asyncCall(callMessage, timeout);
353  }
354 
363  inline QDBusPendingReply<QStringList> ListQueuedOwners(const QString& name, int timeout = -1)
364  {
365  if (!invalidationReason().isEmpty()) {
366  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
367  invalidationReason(),
368  invalidationMessage()
369  ));
370  }
371 
372  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
373  this->staticInterfaceName(), QLatin1String("ListQueuedOwners"));
374  callMessage << QVariant::fromValue(name);
375  return this->connection().asyncCall(callMessage, timeout);
376  }
377 
386  inline QDBusPendingReply<uint> GetConnectionUnixUser(const QString& connectionName, int timeout = -1)
387  {
388  if (!invalidationReason().isEmpty()) {
389  return QDBusPendingReply<uint>(QDBusMessage::createError(
390  invalidationReason(),
391  invalidationMessage()
392  ));
393  }
394 
395  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
396  this->staticInterfaceName(), QLatin1String("GetConnectionUnixUser"));
397  callMessage << QVariant::fromValue(connectionName);
398  return this->connection().asyncCall(callMessage, timeout);
399  }
400 
409  inline QDBusPendingReply<uint> GetConnectionUnixProcessID(const QString& connectionName, int timeout = -1)
410  {
411  if (!invalidationReason().isEmpty()) {
412  return QDBusPendingReply<uint>(QDBusMessage::createError(
413  invalidationReason(),
414  invalidationMessage()
415  ));
416  }
417 
418  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
419  this->staticInterfaceName(), QLatin1String("GetConnectionUnixProcessID"));
420  callMessage << QVariant::fromValue(connectionName);
421  return this->connection().asyncCall(callMessage, timeout);
422  }
423 
432  inline QDBusPendingReply<QByteArray> GetConnectionSELinuxSecurityContext(const QString& connectionName, int timeout = -1)
433  {
434  if (!invalidationReason().isEmpty()) {
435  return QDBusPendingReply<QByteArray>(QDBusMessage::createError(
436  invalidationReason(),
437  invalidationMessage()
438  ));
439  }
440 
441  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
442  this->staticInterfaceName(), QLatin1String("GetConnectionSELinuxSecurityContext"));
443  callMessage << QVariant::fromValue(connectionName);
444  return this->connection().asyncCall(callMessage, timeout);
445  }
446 
455  inline QDBusPendingReply<> ReloadConfig(int timeout = -1)
456  {
457  if (!invalidationReason().isEmpty()) {
458  return QDBusPendingReply<>(QDBusMessage::createError(
459  invalidationReason(),
460  invalidationMessage()
461  ));
462  }
463 
464  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
465  this->staticInterfaceName(), QLatin1String("ReloadConfig"));
466  return this->connection().asyncCall(callMessage, timeout);
467  }
468 
477  inline QDBusPendingReply<QString> GetId(int timeout = -1)
478  {
479  if (!invalidationReason().isEmpty()) {
480  return QDBusPendingReply<QString>(QDBusMessage::createError(
481  invalidationReason(),
482  invalidationMessage()
483  ));
484  }
485 
486  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
487  this->staticInterfaceName(), QLatin1String("GetId"));
488  return this->connection().asyncCall(callMessage, timeout);
489  }
490 
491 Q_SIGNALS:
495  void NameOwnerChanged(const QString& name, const QString& oldOwner, const QString& newOwner);
496 
500  void NameLost(const QString& name);
501 
505  void NameAcquired(const QString& name);
506 
507 protected:
508  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
509 };
510 
519 {
520  Q_OBJECT
521 
522 public:
529  static inline QLatin1String staticInterfaceName()
530  {
531  return QLatin1String("org.freedesktop.DBus.Introspectable");
532  }
533 
542  const QString& busName,
543  const QString& objectPath,
544  QObject* parent = 0
545  );
546 
556  const QDBusConnection& connection,
557  const QString& busName,
558  const QString& objectPath,
559  QObject* parent = 0
560  );
561 
569 
577  explicit IntrospectableInterface(const Tp::AbstractInterface& mainInterface);
578 
586  IntrospectableInterface(const Tp::AbstractInterface& mainInterface, QObject* parent);
587 
595  {
596  return internalRequestAllProperties();
597  }
598 
599 public Q_SLOTS:
608  inline QDBusPendingReply<QString> Introspect(int timeout = -1)
609  {
610  if (!invalidationReason().isEmpty()) {
611  return QDBusPendingReply<QString>(QDBusMessage::createError(
612  invalidationReason(),
613  invalidationMessage()
614  ));
615  }
616 
617  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
618  this->staticInterfaceName(), QLatin1String("Introspect"));
619  return this->connection().asyncCall(callMessage, timeout);
620  }
621 
622 protected:
623  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
624 };
625 
633 class TP_QT_EXPORT PeerInterface : public Tp::AbstractInterface
634 {
635  Q_OBJECT
636 
637 public:
644  static inline QLatin1String staticInterfaceName()
645  {
646  return QLatin1String("org.freedesktop.DBus.Peer");
647  }
648 
657  const QString& busName,
658  const QString& objectPath,
659  QObject* parent = 0
660  );
661 
671  const QDBusConnection& connection,
672  const QString& busName,
673  const QString& objectPath,
674  QObject* parent = 0
675  );
676 
684 
692  explicit PeerInterface(const Tp::AbstractInterface& mainInterface);
693 
701  PeerInterface(const Tp::AbstractInterface& mainInterface, QObject* parent);
702 
710  {
711  return internalRequestAllProperties();
712  }
713 
714 public Q_SLOTS:
723  inline QDBusPendingReply<> Ping(int timeout = -1)
724  {
725  if (!invalidationReason().isEmpty()) {
726  return QDBusPendingReply<>(QDBusMessage::createError(
727  invalidationReason(),
728  invalidationMessage()
729  ));
730  }
731 
732  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
733  this->staticInterfaceName(), QLatin1String("Ping"));
734  return this->connection().asyncCall(callMessage, timeout);
735  }
736 
745  inline QDBusPendingReply<QString> GetMachineId(int timeout = -1)
746  {
747  if (!invalidationReason().isEmpty()) {
748  return QDBusPendingReply<QString>(QDBusMessage::createError(
749  invalidationReason(),
750  invalidationMessage()
751  ));
752  }
753 
754  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
755  this->staticInterfaceName(), QLatin1String("GetMachineId"));
756  return this->connection().asyncCall(callMessage, timeout);
757  }
758 
759 protected:
760  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
761 };
762 
770 class TP_QT_EXPORT PropertiesInterface : public Tp::AbstractInterface
771 {
772  Q_OBJECT
773 
774 public:
781  static inline QLatin1String staticInterfaceName()
782  {
783  return QLatin1String("org.freedesktop.DBus.Properties");
784  }
785 
794  const QString& busName,
795  const QString& objectPath,
796  QObject* parent = 0
797  );
798 
808  const QDBusConnection& connection,
809  const QString& busName,
810  const QString& objectPath,
811  QObject* parent = 0
812  );
813 
821 
829  explicit PropertiesInterface(const Tp::AbstractInterface& mainInterface);
830 
838  PropertiesInterface(const Tp::AbstractInterface& mainInterface, QObject* parent);
839 
847  {
848  return internalRequestAllProperties();
849  }
850 
851 public Q_SLOTS:
860  inline QDBusPendingReply<QDBusVariant> Get(const QString& interfaceName, const QString& propertyName, int timeout = -1)
861  {
862  if (!invalidationReason().isEmpty()) {
863  return QDBusPendingReply<QDBusVariant>(QDBusMessage::createError(
864  invalidationReason(),
865  invalidationMessage()
866  ));
867  }
868 
869  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
870  this->staticInterfaceName(), QLatin1String("Get"));
871  callMessage << QVariant::fromValue(interfaceName) << QVariant::fromValue(propertyName);
872  return this->connection().asyncCall(callMessage, timeout);
873  }
874 
883  inline QDBusPendingReply<> Set(const QString& interfaceName, const QString& propertyName, const QDBusVariant& value, int timeout = -1)
884  {
885  if (!invalidationReason().isEmpty()) {
886  return QDBusPendingReply<>(QDBusMessage::createError(
887  invalidationReason(),
888  invalidationMessage()
889  ));
890  }
891 
892  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
893  this->staticInterfaceName(), QLatin1String("Set"));
894  callMessage << QVariant::fromValue(interfaceName) << QVariant::fromValue(propertyName) << QVariant::fromValue(value);
895  return this->connection().asyncCall(callMessage, timeout);
896  }
897 
906  inline QDBusPendingReply<QVariantMap> GetAll(const QString& interfaceName, int timeout = -1)
907  {
908  if (!invalidationReason().isEmpty()) {
909  return QDBusPendingReply<QVariantMap>(QDBusMessage::createError(
910  invalidationReason(),
911  invalidationMessage()
912  ));
913  }
914 
915  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
916  this->staticInterfaceName(), QLatin1String("GetAll"));
917  callMessage << QVariant::fromValue(interfaceName);
918  return this->connection().asyncCall(callMessage, timeout);
919  }
920 
921 protected:
922  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
923 };
924 }
925 }
926 }
927 Q_DECLARE_METATYPE(Tp::Client::DBus::DBusDaemonInterface*)
928 Q_DECLARE_METATYPE(Tp::Client::DBus::IntrospectableInterface*)
929 Q_DECLARE_METATYPE(Tp::Client::DBus::PeerInterface*)
930 Q_DECLARE_METATYPE(Tp::Client::DBus::PropertiesInterface*)
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-dbus.h:846
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Definition: cli-dbus.h:633
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-dbus.h:122
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-dbus.h:709
QDBusPendingReply< QVariantMap > GetAll(const QString &interfaceName, int timeout=-1)
Definition: cli-dbus.h:906
QDBusPendingReply< uint > RequestName(const QString &name, uint flags, int timeout=-1)
Definition: cli-dbus.h:158
QDBusPendingReply< uint > ReleaseName(const QString &name, int timeout=-1)
Definition: cli-dbus.h:181
static QLatin1String staticInterfaceName()
Definition: cli-dbus.h:644
QDBusPendingReply ReloadConfig(int timeout=-1)
Definition: cli-dbus.h:455
static QLatin1String staticInterfaceName()
Definition: cli-dbus.h:781
QDBusPendingReply< QStringList > ListActivatableNames(int timeout=-1)
Definition: cli-dbus.h:272
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-dbus.h:594
QDBusPendingReply< QString > Hello(int timeout=-1)
Definition: cli-dbus.h:136
Definition: cli-dbus.h:770
QDBusPendingReply< uint > GetConnectionUnixProcessID(const QString &connectionName, int timeout=-1)
Definition: cli-dbus.h:409
QDBusPendingReply< uint > GetConnectionUnixUser(const QString &connectionName, int timeout=-1)
Definition: cli-dbus.h:386
static QLatin1String staticInterfaceName()
Definition: cli-dbus.h:57
QDBusPendingReply< QStringList > ListQueuedOwners(const QString &name, int timeout=-1)
Definition: cli-dbus.h:363
QDBusPendingReply< QString > GetNameOwner(const QString &name, int timeout=-1)
Definition: cli-dbus.h:340
QDBusPendingReply< QDBusVariant > Get(const QString &interfaceName, const QString &propertyName, int timeout=-1)
Definition: cli-dbus.h:860
QDBusPendingReply< QStringList > ListNames(int timeout=-1)
Definition: cli-dbus.h:250
static QLatin1String staticInterfaceName()
Definition: cli-dbus.h:529
QDBusPendingReply< QString > GetMachineId(int timeout=-1)
Definition: cli-dbus.h:745
QDBusPendingReply RemoveMatch(const QString &rule, int timeout=-1)
Definition: cli-dbus.h:317
QDBusPendingReply Set(const QString &interfaceName, const QString &propertyName, const QDBusVariant &value, int timeout=-1)
Definition: cli-dbus.h:883
QDBusPendingReply< bool > NameHasOwner(const QString &nameToCheck, int timeout=-1)
Definition: cli-dbus.h:227
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
QDBusPendingReply< QByteArray > GetConnectionSELinuxSecurityContext(const QString &connectionName, int timeout=-1)
Definition: cli-dbus.h:432
QDBusPendingReply AddMatch(const QString &rule, int timeout=-1)
Definition: cli-dbus.h:294
QDBusPendingReply< uint > StartServiceByName(const QString &service, uint flags, int timeout=-1)
Definition: cli-dbus.h:204
QDBusPendingReply< QString > Introspect(int timeout=-1)
Definition: cli-dbus.h:608
QDBusPendingReply Ping(int timeout=-1)
Definition: cli-dbus.h:723
QDBusPendingReply< QString > GetId(int timeout=-1)
Definition: cli-dbus.h:477
Definition: cli-dbus.h:46


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00398.html0000644000175100017520000002310712530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor2< R, T, Arg1, Arg2 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor2< R, T, Arg1, Arg2 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1, Arg2)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor2 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1, class Arg2>
typedef R(T::* Tp::MemberFunctor2< R, T, Arg1, Arg2 >::FunctionType)(Arg1, Arg2)
template<class R, class T, class Arg1, class Arg2>
typedef R Tp::MemberFunctor2< R, T, Arg1, Arg2 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1, class Arg2>
Tp::MemberFunctor2< R, T, Arg1, Arg2 >::MemberFunctor2 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1, class Arg2>
ResultType Tp::MemberFunctor2< R, T, Arg1, Arg2 >::operator() ( Arg1  a1,
Arg2  a2 
) const
inline

Member Data Documentation

template<class R, class T, class Arg1, class Arg2>
T* Tp::MemberFunctor2< R, T, Arg1, Arg2 >::object
template<class R, class T, class Arg1, class Arg2>
FunctionType Tp::MemberFunctor2< R, T, Arg1, Arg2 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01359.html0000644000175100017520000000636312530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeServerAuthenticationAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeServerAuthenticationAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AuthenticationMethod() const Tp::Service::ChannelTypeServerAuthenticationAdaptor
dbusConnection() const Tp::AbstractAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00142.html0000644000175100017520000004250612530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::CallContentAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::CallContentAdaptor Class Reference

#include <TelepathyQt/_gen/svc-call.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Remove (const QDBusMessage &dbusMessage)
 

Signals

void StreamsAdded (const Tp::ObjectPathList &streams)
 
void StreamsRemoved (const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason)
 

Public Member Functions

QStringList Interfaces () const
 
QString Name () const
 
uint Type () const
 
uint Disposition () const
 
Tp::ObjectPathList Streams () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::CallContentAdaptor::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.

Extra interfaces provided by this content, such as CallContentInterfaceMediaInterface , ChannelInterfaceHoldInterface or CallInterfaceMuteInterface . This SHOULD NOT include the Content interface itself, and cannot change once the content has been created.

Returns
The value of exported property Interfaces.
QString Tp::Service::CallContentAdaptor::Name ( ) const

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

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

The name of the content.

The content name property should be meaningful, so should be given a name which is significant to the user. The name could be the "audio" or "video" string localized, or perhaps include some string identifying the source, such as a webcam identifier.
Returns
The value of exported property Name.
uint Tp::Service::CallContentAdaptor::Type ( ) const

Return the value of the exported D-Bus object property Type of type uint.

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

The media type of this content.

Returns
The value of exported property Type.
uint Tp::Service::CallContentAdaptor::Disposition ( ) const

Return the value of the exported D-Bus object property Disposition of type uint.

Adaptees should export this property as a Qt property named 'disposition' with type uint.

The disposition of this content.

Returns
The value of exported property Disposition.
Tp::ObjectPathList Tp::Service::CallContentAdaptor::Streams ( ) const

Return the value of the exported D-Bus object property Streams of type Tp::ObjectPathList.

Adaptees should export this property as a Qt property named 'streams' with type Tp::ObjectPathList.

The list of CallStreamInterface objects that exist in this content.

In a conference call multiple parties can share one media content (say, audio), but the streaming of that media can either be shared or separate. For example, in a multicast conference all contacts would share one stream, while in a Muji conference there would be a stream for each participant.

Change notification is through the StreamsAdded() and StreamsRemoved() signals.

Returns
The value of exported property Streams.
void Tp::Service::CallContentAdaptor::Remove ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void remove(const Tp::Service::CallContentAdaptor::RemoveContextPtr &context);

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

Remove the content from the call. This will cause Call1.ContentRemoved((self_handle, User_Requested, "", "")) to be emitted.

void Tp::Service::CallContentAdaptor::StreamsAdded ( const Tp::ObjectPathList streams)
signal

Represents the exported D-Bus signal StreamsAdded on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamsAdded(const Tp::ObjectPathList& streams);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streams
The Streams which were added.
void Tp::Service::CallContentAdaptor::StreamsRemoved ( const Tp::ObjectPathList streams,
const Tp::CallStateReason reason 
)
signal

Represents the exported D-Bus signal StreamsRemoved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamsRemoved(const Tp::ObjectPathList& streams, const Tp::CallStateReason& reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streams
The Streams which were removed.
reason
Why the content was removed.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01103.html0000644000175100017520000001637112530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleCallObserver Member List

This is the complete list of members for Tp::SimpleCallObserver, including all inherited members.

account() const Tp::SimpleCallObserver
CallDirection enum nameTp::SimpleCallObserver
CallDirectionBoth enum valueTp::SimpleCallObserver
CallDirectionIncoming enum valueTp::SimpleCallObserver
CallDirectionOutgoing enum valueTp::SimpleCallObserver
callEnded(const Tp::CallChannelPtr &channel, const QString &errorName, const QString &errorMessage)Tp::SimpleCallObserversignal
calls() const Tp::SimpleCallObserver
callStarted(const Tp::CallChannelPtr &channel)Tp::SimpleCallObserversignal
contactIdentifier() const Tp::SimpleCallObserver
create(const AccountPtr &account, CallDirection direction=CallDirectionBoth)Tp::SimpleCallObserverstatic
create(const AccountPtr &account, const ContactPtr &contact, CallDirection direction=CallDirectionBoth)Tp::SimpleCallObserverstatic
create(const AccountPtr &account, const QString &contactIdentifier, CallDirection direction=CallDirectionBoth)Tp::SimpleCallObserverstatic
direction() const Tp::SimpleCallObserver
RefCounted()Tp::RefCountedinline
streamedMediaCallEnded(const Tp::StreamedMediaChannelPtr &channel, const QString &errorName, const QString &errorMessage)Tp::SimpleCallObserversignal
streamedMediaCalls() const Tp::SimpleCallObserver
streamedMediaCallStarted(const Tp::StreamedMediaChannelPtr &channel)Tp::SimpleCallObserversignal
~RefCounted()Tp::RefCountedinlinevirtual
~SimpleCallObserver()Tp::SimpleCallObservervirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00958.html0000644000175100017520000001504512530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractProtocolInterface Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00635_source.html0000644000175100017520000010601012530426257022514 0ustar00kaffeinekaffeine00000000000000 cli-connection-manager-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-connection-manager-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/connection-manager.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ConnectionManagerInterface::ConnectionManagerInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ConnectionManagerInterface::ConnectionManagerInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(NewConnection(const QString&, const QDBusObjectPath&, const QString&)), NULL, NULL);
28 
29  Tp::AbstractInterface::invalidate(proxy, error, message);
30 }
31 
32 ProtocolInterface::ProtocolInterface(const QString& busName, const QString& objectPath, QObject *parent)
33  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
34 {
35 }
36 
37 ProtocolInterface::ProtocolInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
38  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
39 {
40 }
41 
43  : Tp::AbstractInterface(proxy, staticInterfaceName())
44 {
45 }
46 
48  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
49 {
50 }
51 
53  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
54 {
55 }
56 
58  const QString &error, const QString &message)
59 {
60 
61  Tp::AbstractInterface::invalidate(proxy, error, message);
62 }
63 
64 ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface(const QString& busName, const QString& objectPath, QObject *parent)
65  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
66 {
67 }
68 
69 ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
70  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
71 {
72 }
73 
75  : Tp::AbstractInterface(proxy, staticInterfaceName())
76 {
77 }
78 
80  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
81 {
82 }
83 
85  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
86 {
87 }
88 
90  const QString &error, const QString &message)
91 {
92 
93  Tp::AbstractInterface::invalidate(proxy, error, message);
94 }
95 
96 ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface(const QString& busName, const QString& objectPath, QObject *parent)
97  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
98 {
99 }
100 
101 ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
102  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
103 {
104 }
105 
107  : Tp::AbstractInterface(proxy, staticInterfaceName())
108 {
109 }
110 
112  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
113 {
114 }
115 
117  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
118 {
119 }
120 
122  const QString &error, const QString &message)
123 {
124 
125  Tp::AbstractInterface::invalidate(proxy, error, message);
126 }
127 
128 ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface(const QString& busName, const QString& objectPath, QObject *parent)
129  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
130 {
131 }
132 
133 ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
134  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
135 {
136 }
137 
139  : Tp::AbstractInterface(proxy, staticInterfaceName())
140 {
141 }
142 
144  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
145 {
146 }
147 
149  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
150 {
151 }
152 
154  const QString &error, const QString &message)
155 {
156 
157  Tp::AbstractInterface::invalidate(proxy, error, message);
158 }
159 }
160 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-manager-body.hpp:153
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-manager-body.hpp:24
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
ProtocolInterfaceAddressingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-manager-body.hpp:64
ProtocolInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-manager-body.hpp:32
ProtocolInterfaceAvatarsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-manager-body.hpp:96
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-manager-body.hpp:89
Definition: cli-connection-manager.h:44
ConnectionManagerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-manager-body.hpp:9
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-manager-body.hpp:121
void NewConnection(const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol)
ProtocolInterfacePresenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-connection-manager-body.hpp:128
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-connection-manager-body.hpp:57


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00457.html0000644000175100017520000010420012530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::PresenceSpec Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The PresenceSpec class represents a Telepathy presence information supported by a protocol. More...

#include <TelepathyQt/PresenceSpec>

Public Types

enum  SimpleStatusFlag { NoFlags, MaySetOnSelf, CanHaveStatusMessage, AllFlags }
 

Public Member Functions

 Q_DECLARE_FLAGS (SimpleStatusFlags, SimpleStatusFlag)
 
 PresenceSpec ()
 
 PresenceSpec (const QString &status, const SimpleStatusSpec &spec)
 
 PresenceSpec (const PresenceSpec &other)
 
 ~PresenceSpec ()
 
bool isValid () const
 
PresenceSpecoperator= (const PresenceSpec &other)
 
bool operator== (const PresenceSpec &other) const
 
bool operator!= (const PresenceSpec &other) const
 
bool operator< (const PresenceSpec &other) const
 
Presence presence (const QString &statusMessage=QString()) const
 
bool maySetOnSelf () const
 
bool canHaveStatusMessage () const
 
SimpleStatusSpec bareSpec () const
 

Static Public Member Functions

static PresenceSpec available (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec chat (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec pstn (SimpleStatusFlags flags=CanHaveStatusMessage)
 
static PresenceSpec away (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec brb (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec dnd (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec busy (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec xa (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec hidden (SimpleStatusFlags flags=AllFlags)
 
static PresenceSpec offline (SimpleStatusFlags flags=CanHaveStatusMessage)
 
static PresenceSpec unknown (SimpleStatusFlags flags=CanHaveStatusMessage)
 
static PresenceSpec error (SimpleStatusFlags flags=CanHaveStatusMessage)
 

Detailed Description

The PresenceSpec class represents a Telepathy presence information supported by a protocol.

Member Enumeration Documentation

Enumerator
NoFlags 
MaySetOnSelf 
CanHaveStatusMessage 
AllFlags 

Constructor & Destructor Documentation

Tp::PresenceSpec::PresenceSpec ( )
Tp::PresenceSpec::PresenceSpec ( const QString &  status,
const SimpleStatusSpec spec 
)
Tp::PresenceSpec::PresenceSpec ( const PresenceSpec other)
Tp::PresenceSpec::~PresenceSpec ( )

Member Function Documentation

Tp::PresenceSpec::Q_DECLARE_FLAGS ( SimpleStatusFlags  ,
SimpleStatusFlag   
)
PresenceSpec Tp::PresenceSpec::available ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::chat ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::pstn ( SimpleStatusFlags  flags = CanHaveStatusMessage)
static
PresenceSpec Tp::PresenceSpec::away ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::brb ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::dnd ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::busy ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::xa ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::hidden ( SimpleStatusFlags  flags = AllFlags)
static
PresenceSpec Tp::PresenceSpec::offline ( SimpleStatusFlags  flags = CanHaveStatusMessage)
static
PresenceSpec Tp::PresenceSpec::unknown ( SimpleStatusFlags  flags = CanHaveStatusMessage)
static
PresenceSpec Tp::PresenceSpec::error ( SimpleStatusFlags  flags = CanHaveStatusMessage)
static
bool Tp::PresenceSpec::isValid ( ) const
inline
PresenceSpec & Tp::PresenceSpec::operator= ( const PresenceSpec other)
bool Tp::PresenceSpec::operator== ( const PresenceSpec other) const
bool Tp::PresenceSpec::operator!= ( const PresenceSpec other) const
bool Tp::PresenceSpec::operator< ( const PresenceSpec other) const
Presence Tp::PresenceSpec::presence ( const QString &  statusMessage = QString()) const
bool Tp::PresenceSpec::maySetOnSelf ( ) const
bool Tp::PresenceSpec::canHaveStatusMessage ( ) const
SimpleStatusSpec Tp::PresenceSpec::bareSpec ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00201.html0000644000175100017520000020242412530426260021121 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceGroupAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceGroupAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void AddMembers (const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage)
 
Tp::UIntList GetAllMembers (const QDBusMessage &dbusMessage, Tp::UIntList &localPending, Tp::UIntList &remotePending)
 
uint GetGroupFlags (const QDBusMessage &dbusMessage)
 
Tp::UIntList GetHandleOwners (const Tp::UIntList &handles, const QDBusMessage &dbusMessage)
 
Tp::UIntList GetLocalPendingMembers (const QDBusMessage &dbusMessage)
 
Tp::LocalPendingInfoList GetLocalPendingMembersWithInfo (const QDBusMessage &dbusMessage)
 
Tp::UIntList GetMembers (const QDBusMessage &dbusMessage)
 
Tp::UIntList GetRemotePendingMembers (const QDBusMessage &dbusMessage)
 
uint GetSelfHandle (const QDBusMessage &dbusMessage)
 
void RemoveMembers (const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage)
 
void RemoveMembersWithReason (const Tp::UIntList &contacts, const QString &message, uint reason, const QDBusMessage &dbusMessage)
 

Signals

void HandleOwnersChanged (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed)
 
void HandleOwnersChangedDetailed (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers)
 
void SelfHandleChanged (uint selfHandle)
 
void SelfContactChanged (uint selfHandle, const QString &selfID)
 
void GroupFlagsChanged (uint added, uint removed)
 
void MembersChanged (const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason)
 
void MembersChangedDetailed (const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details)
 

Public Member Functions

uint GroupFlags () const
 
Tp::HandleOwnerMap HandleOwners () const
 
Tp::LocalPendingInfoList LocalPendingMembers () const
 
Tp::UIntList Members () const
 
Tp::UIntList RemotePendingMembers () const
 
uint SelfHandle () const
 
Tp::HandleIdentifierMap MemberIdentifiers () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ChannelInterfaceGroupAdaptor::GroupFlags ( ) const

Return the value of the exported D-Bus object property GroupFlags of type uint.

Adaptees should export this property as a Qt property named 'groupFlags' with type uint.

An integer representing the bitwise-OR of flags on this channel. The user interface can use this to present information about which operations are currently valid. Change notification is via the GroupFlagsChanged signal.

Returns
The value of exported property GroupFlags.
Tp::HandleOwnerMap Tp::Service::ChannelInterfaceGroupAdaptor::HandleOwners ( ) const

Return the value of the exported D-Bus object property HandleOwners of type Tp::HandleOwnerMap.

Adaptees should export this property as a Qt property named 'handleOwners' with type Tp::HandleOwnerMap.

A map from channel-specific handles to their owners, including at least all of the channel-specific handles in this channel's members, local-pending or remote-pending sets as keys. Any handle not in the keys of this mapping is not channel-specific in this channel. Handles which are channel-specific, but for which the owner is unknown, MUST appear in this mapping with 0 as owner. Change notification is via the HandleOwnersChanged signal.

Returns
The value of exported property HandleOwners.
Tp::LocalPendingInfoList Tp::Service::ChannelInterfaceGroupAdaptor::LocalPendingMembers ( ) const

Return the value of the exported D-Bus object property LocalPendingMembers of type Tp::LocalPendingInfoList.

Adaptees should export this property as a Qt property named 'localPendingMembers' with type Tp::LocalPendingInfoList.

An array of structs containing handles representing contacts requesting channel membership and awaiting local approval with AddMembers.

Returns
The value of exported property LocalPendingMembers.
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::Members ( ) const

Return the value of the exported D-Bus object property Members of type Tp::UIntList.

Adaptees should export this property as a Qt property named 'members' with type Tp::UIntList.

The members of this channel.

Returns
The value of exported property Members.
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::RemotePendingMembers ( ) const

Return the value of the exported D-Bus object property RemotePendingMembers of type Tp::UIntList.

Adaptees should export this property as a Qt property named 'remotePendingMembers' with type Tp::UIntList.

An array of handles representing contacts who have been invited to the channel and are awaiting remote approval.

Returns
The value of exported property RemotePendingMembers.
uint Tp::Service::ChannelInterfaceGroupAdaptor::SelfHandle ( ) const

Return the value of the exported D-Bus object property SelfHandle of type uint.

Adaptees should export this property as a Qt property named 'selfHandle' with type uint.

The handle for the user on this channel (which can also be a local or remote pending member), or 0 if the user is not a member at all (which is likely to be the case, for instance, on ContactList channels). Note that this is different from the result of Connection.GetSelfHandle on some protocols, so the value of this handle should always be used with the methods of this interface.

Returns
The value of exported property SelfHandle.
Tp::HandleIdentifierMap Tp::Service::ChannelInterfaceGroupAdaptor::MemberIdentifiers ( ) const

Return the value of the exported D-Bus object property MemberIdentifiers of type Tp::HandleIdentifierMap.

Adaptees should export this property as a Qt property named 'memberIdentifiers' with type Tp::HandleIdentifierMap.

The string identifiers for handles mentioned in this channel, to give clients the minimal information necessary to create contacts without waiting for round-trips. Connection managers MUST include at least the identifiers for SelfHandle, Members, LocalPendingMembers (and their actors if any), RemotePendingMembers and HandleOwners.

Returns
The value of exported property MemberIdentifiers.
void Tp::Service::ChannelInterfaceGroupAdaptor::AddMembers ( const Tp::UIntList contacts,
const QString &  message,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void addMembers(const Tp::UIntList& contacts, const QString& message, const Tp::Service::ChannelInterfaceGroupAdaptor::AddMembersContextPtr &context);

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

Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.

A message may be provided along with the request, which will be sent to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT GroupFlags to see in which cases this message should be provided.

Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.

Parameters
contacts
An array of contact handles to invite to the channel
message
A string message, which can be blank if desired
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::GetAllMembers ( const QDBusMessage &  dbusMessage,
Tp::UIntList localPending,
Tp::UIntList remotePending 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getAllMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetAllMembersContextPtr &context);

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

Returns arrays of all current, local and remote pending channel members.

Parameters
localPendingOutput parameter
array of handles of local pending members
remotePendingOutput parameter
array of handles of remote pending members
Returns
array of handles of current members
uint Tp::Service::ChannelInterfaceGroupAdaptor::GetGroupFlags ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getGroupFlags(const Tp::Service::ChannelInterfaceGroupAdaptor::GetGroupFlagsContextPtr &context);

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

Returns the value of the GroupFlags property.

Returns
The value of the GroupFlags property
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::GetHandleOwners ( const Tp::UIntList handles,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getHandleOwners(const Tp::UIntList& handles, const Tp::Service::ChannelInterfaceGroupAdaptor::GetHandleOwnersContextPtr &context);

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

If the CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES flag is set on the channel, then the handles of the group members are specific to this channel, and are not meaningful in a connection-wide context such as contact lists. This method allows you to find the owner of the handle if it can be discovered in this channel, or 0 if the owner is not available.

Parameters
handles
A list of integer handles representing members of the channel
Returns
An array of integer handles representing the owner handles of the 
given room members, in the same order, or 0 if the owner is not 
available
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembers ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getLocalPendingMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersContextPtr &context);

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

Returns the To_Be_Added handle (only) for each structure in the LocalPendingMembers property.

Returns
Tp::LocalPendingInfoList Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersWithInfo ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getLocalPendingMembersWithInfo(const Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersWithInfoContextPtr &context);

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

Returns the LocalPendingMembers property.

Returns
An array of structs containing: A handle representing the contact 
requesting channel membership A handle representing the contact 
making the request, or 0 if unknown The reason for the request: one 
of the values of Channel_Group_Change_Reason A string message 
containing the reason for the request if any (or blank if none)
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::GetMembers ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetMembersContextPtr &context);

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

Returns the Members property.

Returns
Tp::UIntList Tp::Service::ChannelInterfaceGroupAdaptor::GetRemotePendingMembers ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getRemotePendingMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetRemotePendingMembersContextPtr &context);

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

Returns an array of handles representing contacts who have been invited to the channel and are awaiting remote approval.

Returns
uint Tp::Service::ChannelInterfaceGroupAdaptor::GetSelfHandle ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getSelfHandle(const Tp::Service::ChannelInterfaceGroupAdaptor::GetSelfHandleContextPtr &context);

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

Returns the value of the SelfHandle property.

Returns
void Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembers ( const Tp::UIntList contacts,
const QString &  message,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeMembers(const Tp::UIntList& contacts, const QString& message, const Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersContextPtr &context);

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

Requests the removal of contacts from a channel, reject their request for channel membership on the pending local list, or rescind their invitation on the pending remote list.

If the SelfHandle is in a Group, it can be removed via this method, in order to leave the group gracefully. This is the recommended way to leave a chatroom, close or reject a ChannelTypeStreamedMediaInterface call, and so on.

Accordingly, connection managers SHOULD support doing this, regardless of the value of GroupFlags . If doing so fails with PermissionDenied, this is considered to a bug in the connection manager, but clients MUST recover by falling back to closing the channel with the ChannelInterface::Close() method.

Removing any contact from the local pending list is always allowed. Removing contacts other than the SelfHandle from the channel's members is allowed if and only if Channel_Group_Flag_Can_Remove is in the GroupFlags , while removing contacts other than the SelfHandle from the remote pending list is allowed if and only if Channel_Group_Flag_Can_Rescind is in the GroupFlags .

A message may be provided along with the request, which will be sent to the server if supported. See the Channel_Group_Flag_Message_Remove, Channel_Group_Flag_Message_Depart, Channel_Group_Flag_Message_Reject and Channel_Group_Flag_Message_Rescind GroupFlags to see in which cases this message should be provided.

Parameters
contacts
An array of contact handles to remove from the channel
message
A string message, which can be blank if desired
void Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersWithReason ( const Tp::UIntList contacts,
const QString &  message,
uint  reason,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeMembersWithReason(const Tp::UIntList& contacts, const QString& message, uint reason, const Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersWithReasonContextPtr &context);

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

As RemoveMembers, but a reason code may be provided where appropriate. The reason code may be ignored if the underlying protocol is unable to represent the given reason.

Parameters
contacts
An array of contact handles to remove from the channel
message
A string message, which can be blank if desired
reason
A reason for the change
void Tp::Service::ChannelInterfaceGroupAdaptor::HandleOwnersChanged ( const Tp::HandleOwnerMap added,
const Tp::UIntList removed 
)
signal

Represents the exported D-Bus signal HandleOwnersChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void handleOwnersChanged(const Tp::HandleOwnerMap& added, const Tp::UIntList& removed);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
added
A map from channel-specific handles to their owners, in which the 
keys include all the handles that were added to the keys of the 
HandleOwners property, and all the handles in that property whose 
owner has changed
removed
The channel-specific handles that were removed from the keys of the 
HandleOwners property, as a result of the contact leaving this 
group in a previous MembersChanged signal
void Tp::Service::ChannelInterfaceGroupAdaptor::HandleOwnersChangedDetailed ( const Tp::HandleOwnerMap added,
const Tp::UIntList removed,
const Tp::HandleIdentifierMap identifiers 
)
signal

Represents the exported D-Bus signal HandleOwnersChangedDetailed on this object.

Adaptees should export this signal as a Qt signal with the following signature: void handleOwnersChangedDetailed(const Tp::HandleOwnerMap& added, const Tp::UIntList& removed, const Tp::HandleIdentifierMap& identifiers);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
added
A map from channel-specific handles to their owners, in which the 
keys include all the handles that were added to the keys of the 
HandleOwners property, and all the handles in that property whose 
owner has changed
removed
The channel-specific handles that were removed from the keys of the 
HandleOwners property, as a result of the contact leaving this 
group in a previous MembersChanged signal
identifiers
The string identifiers for handles mentioned in this signal, to 
give clients the minimal information necessary to create contacts 
without waiting for round-trips. Connection managers MUST include 
at least the identifiers for all handles in the Added map, and MAY 
include those from Removed array.
void Tp::Service::ChannelInterfaceGroupAdaptor::SelfHandleChanged ( uint  selfHandle)
signal

Represents the exported D-Bus signal SelfHandleChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void selfHandleChanged(uint selfHandle);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
selfHandle
The new value of the SelfHandle property.
void Tp::Service::ChannelInterfaceGroupAdaptor::SelfContactChanged ( uint  selfHandle,
const QString &  selfID 
)
signal

Represents the exported D-Bus signal SelfContactChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void selfContactChanged(uint selfHandle, const QString& selfID);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
selfHandle
The new value of the SelfHandle property.
selfID
The new value of the SelfHandle property&apos;s identifier.
void Tp::Service::ChannelInterfaceGroupAdaptor::GroupFlagsChanged ( uint  added,
uint  removed 
)
signal

Represents the exported D-Bus signal GroupFlagsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void groupFlagsChanged(uint added, uint removed);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
added
A bitwise OR of the flags which have been set
removed
A bitwise OR of the flags which have been cleared
void Tp::Service::ChannelInterfaceGroupAdaptor::MembersChanged ( const QString &  message,
const Tp::UIntList added,
const Tp::UIntList removed,
const Tp::UIntList localPending,
const Tp::UIntList remotePending,
uint  actor,
uint  reason 
)
signal

Represents the exported D-Bus signal MembersChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void membersChanged(const QString& message, const Tp::UIntList& added, const Tp::UIntList& removed, const Tp::UIntList& localPending, const Tp::UIntList& remotePending, uint actor, uint reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
message
A string message from the server, or blank if not
added
A list of members added to the channel
removed
A list of members removed from the channel
localPending
A list of members who are pending local approval
remotePending
A list of members who are pending remote approval
actor
The contact handle of the person who made the change, or 0 if not 
known
reason
A reason for the change
void Tp::Service::ChannelInterfaceGroupAdaptor::MembersChangedDetailed ( const Tp::UIntList added,
const Tp::UIntList removed,
const Tp::UIntList localPending,
const Tp::UIntList remotePending,
const QVariantMap &  details 
)
signal

Represents the exported D-Bus signal MembersChangedDetailed on this object.

Adaptees should export this signal as a Qt signal with the following signature: void membersChangedDetailed(const Tp::UIntList& added, const Tp::UIntList& removed, const Tp::UIntList& localPending, const Tp::UIntList& remotePending, const QVariantMap& details);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
added
A list of members added to the channel
removed
A list of members removed from the channel
localPending
A list of members who are pending local approval
remotePending
A list of members who are pending remote approval
details

Information about the change, which may include the following well-known keys:

actor (u — Contact_Handle)
The contact handle of the person who made the change; 0 or omitted if unknown or not applicable.
change-reason (u — Channel_Group_Change_Reason)
A reason for the change.
contact-ids (a{us} — Handle_Identifier_Map)

The string identifiers for handles mentioned in this signal, to give clients the minimal information necessary to react to the event without waiting for round-trips. Connection managers SHOULD include the identifiers for members added to the group and for the actor (if any); they MAY omit the identifiers for handles which have been removed from the group.

On IRC, an event such as a netsplit could cause the vast majority of a channel to leave. Given that clients should already know the identifiers of a channel's members, including potentially hundreds of strings in the netsplit signal is unnecessary.

Clients MUST NOT assume that the presence or absence of a handle in this mapping is meaningful. This mapping is merely an optimization for round-trip reduction, and connection managers MAY add additional handles, omit some handles, or omit the mapping completely.

message (s)
A string message from the server regarding the change
error (s — DBus_Error_Name)
A (possibly implementation-specific) DBus error describing the change, providing more specific information than the Channel_Group_Change_Reason enum allows. This MUST only be present if it is strictly more informative than 'change-reason'; if present, 'change-reason' MUST be set to the closest available reason.
A SIP connection manager might want to signal "402 Payment required" as something more specific than Error or Permission_Denied so that a SIP-aware UI could handle it specially; including a namespaced error permits this to be done without Channel_Group_Change_Reason being extended to encompass every error any CM ever wants to report.
debug-message (s)
Debugging information on the change. SHOULD NOT be shown to users in normal circumstances.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01172.html0000644000175100017520000000450412530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaSessionHandlerInfo Member List

This is the complete list of members for Tp::MediaSessionHandlerInfo, including all inherited members.

mediaSessionTypeTp::MediaSessionHandlerInfo
sessionHandlerTp::MediaSessionHandlerInfo


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00631_source.html0000644000175100017520000233227612530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT ChannelInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Channel");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
127  {
128  return internalRequestProperty(QLatin1String("ChannelType"));
129  }
130 
165  {
166  return internalRequestProperty(QLatin1String("Interfaces"));
167  }
168 
214  {
215  return internalRequestProperty(QLatin1String("TargetHandle"));
216  }
217 
272  {
273  return internalRequestProperty(QLatin1String("TargetID"));
274  }
275 
296  {
297  return internalRequestProperty(QLatin1String("TargetHandleType"));
298  }
299 
369  {
370  return internalRequestProperty(QLatin1String("Requested"));
371  }
372 
435  {
436  return internalRequestProperty(QLatin1String("InitiatorHandle"));
437  }
438 
474  {
475  return internalRequestProperty(QLatin1String("InitiatorID"));
476  }
477 
485  {
486  return internalRequestAllProperties();
487  }
488 
489 public Q_SLOTS:
504  inline QDBusPendingReply<> Close(int timeout = -1)
505  {
506  if (!invalidationReason().isEmpty()) {
507  return QDBusPendingReply<>(QDBusMessage::createError(
508  invalidationReason(),
509  invalidationMessage()
510  ));
511  }
512 
513  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
514  this->staticInterfaceName(), QLatin1String("Close"));
515  return this->connection().asyncCall(callMessage, timeout);
516  }
517 
535  inline QDBusPendingReply<QString> GetChannelType(int timeout = -1)
536  {
537  if (!invalidationReason().isEmpty()) {
538  return QDBusPendingReply<QString>(QDBusMessage::createError(
539  invalidationReason(),
540  invalidationMessage()
541  ));
542  }
543 
544  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
545  this->staticInterfaceName(), QLatin1String("GetChannelType"));
546  return this->connection().asyncCall(callMessage, timeout);
547  }
548 
572  inline QDBusPendingReply<uint, uint> GetHandle(int timeout = -1)
573  {
574  if (!invalidationReason().isEmpty()) {
575  return QDBusPendingReply<uint, uint>(QDBusMessage::createError(
576  invalidationReason(),
577  invalidationMessage()
578  ));
579  }
580 
581  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
582  this->staticInterfaceName(), QLatin1String("GetHandle"));
583  return this->connection().asyncCall(callMessage, timeout);
584  }
585 
603  inline QDBusPendingReply<QStringList> GetInterfaces(int timeout = -1)
604  {
605  if (!invalidationReason().isEmpty()) {
606  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
607  invalidationReason(),
608  invalidationMessage()
609  ));
610  }
611 
612  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
613  this->staticInterfaceName(), QLatin1String("GetInterfaces"));
614  return this->connection().asyncCall(callMessage, timeout);
615  }
616 
617 Q_SIGNALS:
625  void Closed();
626 
627 protected:
628  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
629 };
630 
639 {
640  Q_OBJECT
641 
642 public:
649  static inline QLatin1String staticInterfaceName()
650  {
651  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Anonymity");
652  }
653 
662  const QString& busName,
663  const QString& objectPath,
664  QObject* parent = 0
665  );
666 
676  const QDBusConnection& connection,
677  const QString& busName,
678  const QString& objectPath,
679  QObject* parent = 0
680  );
681 
689 
698 
706  ChannelInterfaceAnonymityInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
707 
721  {
722  return internalRequestProperty(QLatin1String("AnonymityModes"));
723  }
724 
736  {
737  return internalRequestProperty(QLatin1String("AnonymityMandatory"));
738  }
739 
762  {
763  return internalRequestProperty(QLatin1String("AnonymousID"));
764  }
765 
773  {
774  return internalRequestAllProperties();
775  }
776 
777 protected:
778  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
779 };
780 
789 {
790  Q_OBJECT
791 
792 public:
799  static inline QLatin1String staticInterfaceName()
800  {
801  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.CallState");
802  }
803 
812  const QString& busName,
813  const QString& objectPath,
814  QObject* parent = 0
815  );
816 
826  const QDBusConnection& connection,
827  const QString& busName,
828  const QString& objectPath,
829  QObject* parent = 0
830  );
831 
839 
848 
856  ChannelInterfaceCallStateInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
857 
865  {
866  return internalRequestAllProperties();
867  }
868 
869 public Q_SLOTS:
885  inline QDBusPendingReply<Tp::ChannelCallStateMap> GetCallStates(int timeout = -1)
886  {
887  if (!invalidationReason().isEmpty()) {
888  return QDBusPendingReply<Tp::ChannelCallStateMap>(QDBusMessage::createError(
889  invalidationReason(),
890  invalidationMessage()
891  ));
892  }
893 
894  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
895  this->staticInterfaceName(), QLatin1String("GetCallStates"));
896  return this->connection().asyncCall(callMessage, timeout);
897  }
898 
899 Q_SIGNALS:
913  void CallStateChanged(uint contact, uint state);
914 
915 protected:
916  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
917 };
918 
927 {
928  Q_OBJECT
929 
930 public:
937  static inline QLatin1String staticInterfaceName()
938  {
939  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1");
940  }
941 
950  const QString& busName,
951  const QString& objectPath,
952  QObject* parent = 0
953  );
954 
964  const QDBusConnection& connection,
965  const QString& busName,
966  const QString& objectPath,
967  QObject* parent = 0
968  );
969 
977 
986 
995 
1018  {
1019  return internalRequestProperty(QLatin1String("CanRetryCaptcha"));
1020  }
1021 
1048  {
1049  return internalRequestProperty(QLatin1String("CaptchaStatus"));
1050  }
1051 
1086  {
1087  return internalRequestProperty(QLatin1String("CaptchaError"));
1088  }
1089 
1112  {
1113  return internalRequestProperty(QLatin1String("CaptchaErrorDetails"));
1114  }
1115 
1123  {
1124  return internalRequestAllProperties();
1125  }
1126 
1127 public Q_SLOTS:
1181  inline QDBusPendingReply<Tp::CaptchaInfoList, uint, QString> GetCaptchas(int timeout = -1)
1182  {
1183  if (!invalidationReason().isEmpty()) {
1184  return QDBusPendingReply<Tp::CaptchaInfoList, uint, QString>(QDBusMessage::createError(
1185  invalidationReason(),
1186  invalidationMessage()
1187  ));
1188  }
1189 
1190  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1191  this->staticInterfaceName(), QLatin1String("GetCaptchas"));
1192  return this->connection().asyncCall(callMessage, timeout);
1193  }
1194 
1232  inline QDBusPendingReply<QByteArray> GetCaptchaData(uint ID, const QString& mimeType, int timeout = -1)
1233  {
1234  if (!invalidationReason().isEmpty()) {
1235  return QDBusPendingReply<QByteArray>(QDBusMessage::createError(
1236  invalidationReason(),
1237  invalidationMessage()
1238  ));
1239  }
1240 
1241  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1242  this->staticInterfaceName(), QLatin1String("GetCaptchaData"));
1243  callMessage << QVariant::fromValue(ID) << QVariant::fromValue(mimeType);
1244  return this->connection().asyncCall(callMessage, timeout);
1245  }
1246 
1265  inline QDBusPendingReply<> AnswerCaptchas(const Tp::CaptchaAnswers& answers, int timeout = -1)
1266  {
1267  if (!invalidationReason().isEmpty()) {
1268  return QDBusPendingReply<>(QDBusMessage::createError(
1269  invalidationReason(),
1270  invalidationMessage()
1271  ));
1272  }
1273 
1274  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1275  this->staticInterfaceName(), QLatin1String("AnswerCaptchas"));
1276  callMessage << QVariant::fromValue(answers);
1277  return this->connection().asyncCall(callMessage, timeout);
1278  }
1279 
1307  inline QDBusPendingReply<> CancelCaptcha(uint reason, const QString& debugMessage, int timeout = -1)
1308  {
1309  if (!invalidationReason().isEmpty()) {
1310  return QDBusPendingReply<>(QDBusMessage::createError(
1311  invalidationReason(),
1312  invalidationMessage()
1313  ));
1314  }
1315 
1316  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1317  this->staticInterfaceName(), QLatin1String("CancelCaptcha"));
1318  callMessage << QVariant::fromValue(reason) << QVariant::fromValue(debugMessage);
1319  return this->connection().asyncCall(callMessage, timeout);
1320  }
1321 
1322 protected:
1323  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1324 };
1325 
1334 {
1335  Q_OBJECT
1336 
1337 public:
1344  static inline QLatin1String staticInterfaceName()
1345  {
1346  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.ChatState");
1347  }
1348 
1357  const QString& busName,
1358  const QString& objectPath,
1359  QObject* parent = 0
1360  );
1361 
1371  const QDBusConnection& connection,
1372  const QString& busName,
1373  const QString& objectPath,
1374  QObject* parent = 0
1375  );
1376 
1384 
1393 
1401  ChannelInterfaceChatStateInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
1402 
1439  {
1440  return internalRequestProperty(QLatin1String("ChatStates"));
1441  }
1442 
1450  {
1451  return internalRequestAllProperties();
1452  }
1453 
1454 public Q_SLOTS:
1470  inline QDBusPendingReply<> SetChatState(uint state, int timeout = -1)
1471  {
1472  if (!invalidationReason().isEmpty()) {
1473  return QDBusPendingReply<>(QDBusMessage::createError(
1474  invalidationReason(),
1475  invalidationMessage()
1476  ));
1477  }
1478 
1479  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1480  this->staticInterfaceName(), QLatin1String("SetChatState"));
1481  callMessage << QVariant::fromValue(state);
1482  return this->connection().asyncCall(callMessage, timeout);
1483  }
1484 
1485 Q_SIGNALS:
1500  void ChatStateChanged(uint contact, uint state);
1501 
1502 protected:
1503  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1504 };
1505 
1514 {
1515  Q_OBJECT
1516 
1517 public:
1524  static inline QLatin1String staticInterfaceName()
1525  {
1526  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Conference");
1527  }
1528 
1537  const QString& busName,
1538  const QString& objectPath,
1539  QObject* parent = 0
1540  );
1541 
1551  const QDBusConnection& connection,
1552  const QString& busName,
1553  const QString& objectPath,
1554  QObject* parent = 0
1555  );
1556 
1564 
1573 
1581  ChannelInterfaceConferenceInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
1582 
1612  {
1613  return internalRequestProperty(QLatin1String("Channels"));
1614  }
1615 
1678  {
1679  return internalRequestProperty(QLatin1String("InitialChannels"));
1680  }
1681 
1756  {
1757  return internalRequestProperty(QLatin1String("InitialInviteeHandles"));
1758  }
1759 
1785  {
1786  return internalRequestProperty(QLatin1String("InitialInviteeIDs"));
1787  }
1788 
1817  {
1818  return internalRequestProperty(QLatin1String("InvitationMessage"));
1819  }
1820 
1887  {
1888  return internalRequestProperty(QLatin1String("OriginalChannels"));
1889  }
1890 
1898  {
1899  return internalRequestAllProperties();
1900  }
1901 
1902 Q_SIGNALS:
1926  void ChannelMerged(const QDBusObjectPath& channel, uint channelSpecificHandle, const QVariantMap& properties);
1927 
1952  void ChannelRemoved(const QDBusObjectPath& channel, const QVariantMap& details);
1953 
1954 protected:
1955  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1956 };
1957 
1966 {
1967  Q_OBJECT
1968 
1969 public:
1976  static inline QLatin1String staticInterfaceName()
1977  {
1978  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.DTMF");
1979  }
1980 
1989  const QString& busName,
1990  const QString& objectPath,
1991  QObject* parent = 0
1992  );
1993 
2003  const QDBusConnection& connection,
2004  const QString& busName,
2005  const QString& objectPath,
2006  QObject* parent = 0
2007  );
2008 
2016 
2024  explicit ChannelInterfaceDTMFInterface(const Tp::Client::ChannelInterface& mainInterface);
2025 
2033  ChannelInterfaceDTMFInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
2034 
2047  {
2048  return internalRequestProperty(QLatin1String("CurrentlySendingTones"));
2049  }
2050 
2065  {
2066  return internalRequestProperty(QLatin1String("InitialTones"));
2067  }
2068 
2087  {
2088  return internalRequestProperty(QLatin1String("DeferredTones"));
2089  }
2090 
2098  {
2099  return internalRequestAllProperties();
2100  }
2101 
2102 public Q_SLOTS:
2133  inline QDBusPendingReply<> StartTone(uint streamID, uchar event, int timeout = -1)
2134  {
2135  if (!invalidationReason().isEmpty()) {
2136  return QDBusPendingReply<>(QDBusMessage::createError(
2137  invalidationReason(),
2138  invalidationMessage()
2139  ));
2140  }
2141 
2142  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2143  this->staticInterfaceName(), QLatin1String("StartTone"));
2144  callMessage << QVariant::fromValue(streamID) << QVariant::fromValue(event);
2145  return this->connection().asyncCall(callMessage, timeout);
2146  }
2147 
2170  inline QDBusPendingReply<> StopTone(uint streamID, int timeout = -1)
2171  {
2172  if (!invalidationReason().isEmpty()) {
2173  return QDBusPendingReply<>(QDBusMessage::createError(
2174  invalidationReason(),
2175  invalidationMessage()
2176  ));
2177  }
2178 
2179  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2180  this->staticInterfaceName(), QLatin1String("StopTone"));
2181  callMessage << QVariant::fromValue(streamID);
2182  return this->connection().asyncCall(callMessage, timeout);
2183  }
2184 
2230  inline QDBusPendingReply<> MultipleTones(const QString& tones, int timeout = -1)
2231  {
2232  if (!invalidationReason().isEmpty()) {
2233  return QDBusPendingReply<>(QDBusMessage::createError(
2234  invalidationReason(),
2235  invalidationMessage()
2236  ));
2237  }
2238 
2239  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2240  this->staticInterfaceName(), QLatin1String("MultipleTones"));
2241  callMessage << QVariant::fromValue(tones);
2242  return this->connection().asyncCall(callMessage, timeout);
2243  }
2244 
2245 Q_SIGNALS:
2273  void TonesDeferred(const QString& tones);
2274 
2291  void SendingTones(const QString& tones);
2292 
2304  void StoppedTones(bool cancelled);
2305 
2306 protected:
2307  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
2308 };
2309 
2318 {
2319  Q_OBJECT
2320 
2321 public:
2328  static inline QLatin1String staticInterfaceName()
2329  {
2330  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Destroyable");
2331  }
2332 
2341  const QString& busName,
2342  const QString& objectPath,
2343  QObject* parent = 0
2344  );
2345 
2355  const QDBusConnection& connection,
2356  const QString& busName,
2357  const QString& objectPath,
2358  QObject* parent = 0
2359  );
2360 
2368 
2377 
2385  ChannelInterfaceDestroyableInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
2386 
2394  {
2395  return internalRequestAllProperties();
2396  }
2397 
2398 public Q_SLOTS:
2443  inline QDBusPendingReply<> Destroy(int timeout = -1)
2444  {
2445  if (!invalidationReason().isEmpty()) {
2446  return QDBusPendingReply<>(QDBusMessage::createError(
2447  invalidationReason(),
2448  invalidationMessage()
2449  ));
2450  }
2451 
2452  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2453  this->staticInterfaceName(), QLatin1String("Destroy"));
2454  return this->connection().asyncCall(callMessage, timeout);
2455  }
2456 
2457 protected:
2458  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
2459 };
2460 
2469 {
2470  Q_OBJECT
2471 
2472 public:
2479  static inline QLatin1String staticInterfaceName()
2480  {
2481  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata");
2482  }
2483 
2492  const QString& busName,
2493  const QString& objectPath,
2494  QObject* parent = 0
2495  );
2496 
2506  const QDBusConnection& connection,
2507  const QString& busName,
2508  const QString& objectPath,
2509  QObject* parent = 0
2510  );
2511 
2519 
2528 
2536  ChannelInterfaceFileTransferMetadataInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
2537 
2555  {
2556  return internalRequestProperty(QLatin1String("ServiceName"));
2557  }
2558 
2576  {
2577  return internalSetProperty(QLatin1String("ServiceName"), QVariant::fromValue(newValue));
2578  }
2579 
2594  {
2595  return internalRequestProperty(QLatin1String("Metadata"));
2596  }
2597 
2612  {
2613  return internalSetProperty(QLatin1String("Metadata"), QVariant::fromValue(newValue));
2614  }
2615 
2623  {
2624  return internalRequestAllProperties();
2625  }
2626 
2627 protected:
2628  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
2629 };
2630 
2639 {
2640  Q_OBJECT
2641 
2642 public:
2649  static inline QLatin1String staticInterfaceName()
2650  {
2651  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Group");
2652  }
2653 
2662  const QString& busName,
2663  const QString& objectPath,
2664  QObject* parent = 0
2665  );
2666 
2676  const QDBusConnection& connection,
2677  const QString& busName,
2678  const QString& objectPath,
2679  QObject* parent = 0
2680  );
2681 
2689 
2697  explicit ChannelInterfaceGroupInterface(const Tp::Client::ChannelInterface& mainInterface);
2698 
2706  ChannelInterfaceGroupInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
2707 
2721  {
2722  return internalRequestProperty(QLatin1String("GroupFlags"));
2723  }
2724 
2741  {
2742  return internalRequestProperty(QLatin1String("HandleOwners"));
2743  }
2744 
2756  {
2757  return internalRequestProperty(QLatin1String("LocalPendingMembers"));
2758  }
2759 
2770  {
2771  return internalRequestProperty(QLatin1String("Members"));
2772  }
2773 
2785  {
2786  return internalRequestProperty(QLatin1String("RemotePendingMembers"));
2787  }
2788 
2804  {
2805  return internalRequestProperty(QLatin1String("SelfHandle"));
2806  }
2807 
2822  {
2823  return internalRequestProperty(QLatin1String("MemberIdentifiers"));
2824  }
2825 
2833  {
2834  return internalRequestAllProperties();
2835  }
2836 
2837 public Q_SLOTS:
2868  inline QDBusPendingReply<> AddMembers(const Tp::UIntList& contacts, const QString& message, int timeout = -1)
2869  {
2870  if (!invalidationReason().isEmpty()) {
2871  return QDBusPendingReply<>(QDBusMessage::createError(
2872  invalidationReason(),
2873  invalidationMessage()
2874  ));
2875  }
2876 
2877  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2878  this->staticInterfaceName(), QLatin1String("AddMembers"));
2879  callMessage << QVariant::fromValue(contacts) << QVariant::fromValue(message);
2880  return this->connection().asyncCall(callMessage, timeout);
2881  }
2882 
2905  inline QDBusPendingReply<Tp::UIntList, Tp::UIntList, Tp::UIntList> GetAllMembers(int timeout = -1)
2906  {
2907  if (!invalidationReason().isEmpty()) {
2908  return QDBusPendingReply<Tp::UIntList, Tp::UIntList, Tp::UIntList>(QDBusMessage::createError(
2909  invalidationReason(),
2910  invalidationMessage()
2911  ));
2912  }
2913 
2914  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2915  this->staticInterfaceName(), QLatin1String("GetAllMembers"));
2916  return this->connection().asyncCall(callMessage, timeout);
2917  }
2918 
2933  inline QDBusPendingReply<uint> GetGroupFlags(int timeout = -1)
2934  {
2935  if (!invalidationReason().isEmpty()) {
2936  return QDBusPendingReply<uint>(QDBusMessage::createError(
2937  invalidationReason(),
2938  invalidationMessage()
2939  ));
2940  }
2941 
2942  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2943  this->staticInterfaceName(), QLatin1String("GetGroupFlags"));
2944  return this->connection().asyncCall(callMessage, timeout);
2945  }
2946 
2972  inline QDBusPendingReply<Tp::UIntList> GetHandleOwners(const Tp::UIntList& handles, int timeout = -1)
2973  {
2974  if (!invalidationReason().isEmpty()) {
2975  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
2976  invalidationReason(),
2977  invalidationMessage()
2978  ));
2979  }
2980 
2981  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2982  this->staticInterfaceName(), QLatin1String("GetHandleOwners"));
2983  callMessage << QVariant::fromValue(handles);
2984  return this->connection().asyncCall(callMessage, timeout);
2985  }
2986 
2998  inline QDBusPendingReply<Tp::UIntList> GetLocalPendingMembers(int timeout = -1)
2999  {
3000  if (!invalidationReason().isEmpty()) {
3001  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
3002  invalidationReason(),
3003  invalidationMessage()
3004  ));
3005  }
3006 
3007  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3008  this->staticInterfaceName(), QLatin1String("GetLocalPendingMembers"));
3009  return this->connection().asyncCall(callMessage, timeout);
3010  }
3011 
3030  inline QDBusPendingReply<Tp::LocalPendingInfoList> GetLocalPendingMembersWithInfo(int timeout = -1)
3031  {
3032  if (!invalidationReason().isEmpty()) {
3033  return QDBusPendingReply<Tp::LocalPendingInfoList>(QDBusMessage::createError(
3034  invalidationReason(),
3035  invalidationMessage()
3036  ));
3037  }
3038 
3039  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3040  this->staticInterfaceName(), QLatin1String("GetLocalPendingMembersWithInfo"));
3041  return this->connection().asyncCall(callMessage, timeout);
3042  }
3043 
3054  inline QDBusPendingReply<Tp::UIntList> GetMembers(int timeout = -1)
3055  {
3056  if (!invalidationReason().isEmpty()) {
3057  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
3058  invalidationReason(),
3059  invalidationMessage()
3060  ));
3061  }
3062 
3063  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3064  this->staticInterfaceName(), QLatin1String("GetMembers"));
3065  return this->connection().asyncCall(callMessage, timeout);
3066  }
3067 
3079  inline QDBusPendingReply<Tp::UIntList> GetRemotePendingMembers(int timeout = -1)
3080  {
3081  if (!invalidationReason().isEmpty()) {
3082  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
3083  invalidationReason(),
3084  invalidationMessage()
3085  ));
3086  }
3087 
3088  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3089  this->staticInterfaceName(), QLatin1String("GetRemotePendingMembers"));
3090  return this->connection().asyncCall(callMessage, timeout);
3091  }
3092 
3103  inline QDBusPendingReply<uint> GetSelfHandle(int timeout = -1)
3104  {
3105  if (!invalidationReason().isEmpty()) {
3106  return QDBusPendingReply<uint>(QDBusMessage::createError(
3107  invalidationReason(),
3108  invalidationMessage()
3109  ));
3110  }
3111 
3112  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3113  this->staticInterfaceName(), QLatin1String("GetSelfHandle"));
3114  return this->connection().asyncCall(callMessage, timeout);
3115  }
3116 
3172  inline QDBusPendingReply<> RemoveMembers(const Tp::UIntList& contacts, const QString& message, int timeout = -1)
3173  {
3174  if (!invalidationReason().isEmpty()) {
3175  return QDBusPendingReply<>(QDBusMessage::createError(
3176  invalidationReason(),
3177  invalidationMessage()
3178  ));
3179  }
3180 
3181  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3182  this->staticInterfaceName(), QLatin1String("RemoveMembers"));
3183  callMessage << QVariant::fromValue(contacts) << QVariant::fromValue(message);
3184  return this->connection().asyncCall(callMessage, timeout);
3185  }
3186 
3211  inline QDBusPendingReply<> RemoveMembersWithReason(const Tp::UIntList& contacts, const QString& message, uint reason, int timeout = -1)
3212  {
3213  if (!invalidationReason().isEmpty()) {
3214  return QDBusPendingReply<>(QDBusMessage::createError(
3215  invalidationReason(),
3216  invalidationMessage()
3217  ));
3218  }
3219 
3220  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3221  this->staticInterfaceName(), QLatin1String("RemoveMembersWithReason"));
3222  callMessage << QVariant::fromValue(contacts) << QVariant::fromValue(message) << QVariant::fromValue(reason);
3223  return this->connection().asyncCall(callMessage, timeout);
3224  }
3225 
3226 Q_SIGNALS:
3245  void HandleOwnersChanged(const Tp::HandleOwnerMap& added, const Tp::UIntList& removed);
3246 
3275  void HandleOwnersChangedDetailed(const Tp::HandleOwnerMap& added, const Tp::UIntList& removed, const Tp::HandleIdentifierMap& identifiers);
3276 
3286  void SelfHandleChanged(uint selfHandle);
3287 
3303  void SelfContactChanged(uint selfHandle, const QString& selfID);
3304 
3319  void GroupFlagsChanged(uint added, uint removed);
3320 
3374  void MembersChanged(const QString& message, const Tp::UIntList& added, const Tp::UIntList& removed, const Tp::UIntList& localPending, const Tp::UIntList& remotePending, uint actor, uint reason);
3375 
3484  void MembersChangedDetailed(const Tp::UIntList& added, const Tp::UIntList& removed, const Tp::UIntList& localPending, const Tp::UIntList& remotePending, const QVariantMap& details);
3485 
3486 protected:
3487  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3488 };
3489 
3498 {
3499  Q_OBJECT
3500 
3501 public:
3508  static inline QLatin1String staticInterfaceName()
3509  {
3510  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Hold");
3511  }
3512 
3521  const QString& busName,
3522  const QString& objectPath,
3523  QObject* parent = 0
3524  );
3525 
3535  const QDBusConnection& connection,
3536  const QString& busName,
3537  const QString& objectPath,
3538  QObject* parent = 0
3539  );
3540 
3548 
3556  explicit ChannelInterfaceHoldInterface(const Tp::Client::ChannelInterface& mainInterface);
3557 
3565  ChannelInterfaceHoldInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
3566 
3574  {
3575  return internalRequestAllProperties();
3576  }
3577 
3578 public Q_SLOTS:
3597  inline QDBusPendingReply<uint, uint> GetHoldState(int timeout = -1)
3598  {
3599  if (!invalidationReason().isEmpty()) {
3600  return QDBusPendingReply<uint, uint>(QDBusMessage::createError(
3601  invalidationReason(),
3602  invalidationMessage()
3603  ));
3604  }
3605 
3606  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3607  this->staticInterfaceName(), QLatin1String("GetHoldState"));
3608  return this->connection().asyncCall(callMessage, timeout);
3609  }
3610 
3674  inline QDBusPendingReply<> RequestHold(bool hold, int timeout = -1)
3675  {
3676  if (!invalidationReason().isEmpty()) {
3677  return QDBusPendingReply<>(QDBusMessage::createError(
3678  invalidationReason(),
3679  invalidationMessage()
3680  ));
3681  }
3682 
3683  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3684  this->staticInterfaceName(), QLatin1String("RequestHold"));
3685  callMessage << QVariant::fromValue(hold);
3686  return this->connection().asyncCall(callMessage, timeout);
3687  }
3688 
3689 Q_SIGNALS:
3706  void HoldStateChanged(uint holdState, uint reason);
3707 
3708 protected:
3709  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3710 };
3711 
3720 {
3721  Q_OBJECT
3722 
3723 public:
3730  static inline QLatin1String staticInterfaceName()
3731  {
3732  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.MediaSignalling");
3733  }
3734 
3743  const QString& busName,
3744  const QString& objectPath,
3745  QObject* parent = 0
3746  );
3747 
3757  const QDBusConnection& connection,
3758  const QString& busName,
3759  const QString& objectPath,
3760  QObject* parent = 0
3761  );
3762 
3770 
3779 
3787  ChannelInterfaceMediaSignallingInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
3788 
3796  {
3797  return internalRequestAllProperties();
3798  }
3799 
3800 public Q_SLOTS:
3812  inline QDBusPendingReply<Tp::MediaSessionHandlerInfoList> GetSessionHandlers(int timeout = -1)
3813  {
3814  if (!invalidationReason().isEmpty()) {
3815  return QDBusPendingReply<Tp::MediaSessionHandlerInfoList>(QDBusMessage::createError(
3816  invalidationReason(),
3817  invalidationMessage()
3818  ));
3819  }
3820 
3821  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3822  this->staticInterfaceName(), QLatin1String("GetSessionHandlers"));
3823  return this->connection().asyncCall(callMessage, timeout);
3824  }
3825 
3826 Q_SIGNALS:
3842  void NewSessionHandler(const QDBusObjectPath& sessionHandler, const QString& sessionType);
3843 
3844 protected:
3845  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3846 };
3847 
3856 {
3857  Q_OBJECT
3858 
3859 public:
3866  static inline QLatin1String staticInterfaceName()
3867  {
3868  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Messages");
3869  }
3870 
3879  const QString& busName,
3880  const QString& objectPath,
3881  QObject* parent = 0
3882  );
3883 
3893  const QDBusConnection& connection,
3894  const QString& busName,
3895  const QString& objectPath,
3896  QObject* parent = 0
3897  );
3898 
3906 
3914  explicit ChannelInterfaceMessagesInterface(const Tp::Client::ChannelInterface& mainInterface);
3915 
3923  ChannelInterfaceMessagesInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
3924 
3979  {
3980  return internalRequestProperty(QLatin1String("SupportedContentTypes"));
3981  }
3982 
3995  {
3996  return internalRequestProperty(QLatin1String("MessageTypes"));
3997  }
3998 
4009  {
4010  return internalRequestProperty(QLatin1String("MessagePartSupportFlags"));
4011  }
4012 
4034  {
4035  return internalRequestProperty(QLatin1String("PendingMessages"));
4036  }
4037 
4048  {
4049  return internalRequestProperty(QLatin1String("DeliveryReportingSupport"));
4050  }
4051 
4059  {
4060  return internalRequestAllProperties();
4061  }
4062 
4063 public Q_SLOTS:
4126  inline QDBusPendingReply<QString> SendMessage(const Tp::MessagePartList& message, uint flags, int timeout = -1)
4127  {
4128  if (!invalidationReason().isEmpty()) {
4129  return QDBusPendingReply<QString>(QDBusMessage::createError(
4130  invalidationReason(),
4131  invalidationMessage()
4132  ));
4133  }
4134 
4135  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4136  this->staticInterfaceName(), QLatin1String("SendMessage"));
4137  callMessage << QVariant::fromValue(message) << QVariant::fromValue(flags);
4138  return this->connection().asyncCall(callMessage, timeout);
4139  }
4140 
4181  inline QDBusPendingReply<Tp::MessagePartContentMap> GetPendingMessageContent(uint messageID, const Tp::UIntList& parts, int timeout = -1)
4182  {
4183  if (!invalidationReason().isEmpty()) {
4184  return QDBusPendingReply<Tp::MessagePartContentMap>(QDBusMessage::createError(
4185  invalidationReason(),
4186  invalidationMessage()
4187  ));
4188  }
4189 
4190  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4191  this->staticInterfaceName(), QLatin1String("GetPendingMessageContent"));
4192  callMessage << QVariant::fromValue(messageID) << QVariant::fromValue(parts);
4193  return this->connection().asyncCall(callMessage, timeout);
4194  }
4195 
4196 Q_SIGNALS:
4256  void MessageSent(const Tp::MessagePartList& content, uint flags, const QString& messageToken);
4257 
4271  void PendingMessagesRemoved(const Tp::UIntList& messageIDs);
4272 
4293  void MessageReceived(const Tp::MessagePartList& message);
4294 
4295 protected:
4296  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
4297 };
4298 
4307 {
4308  Q_OBJECT
4309 
4310 public:
4317  static inline QLatin1String staticInterfaceName()
4318  {
4319  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Password");
4320  }
4321 
4330  const QString& busName,
4331  const QString& objectPath,
4332  QObject* parent = 0
4333  );
4334 
4344  const QDBusConnection& connection,
4345  const QString& busName,
4346  const QString& objectPath,
4347  QObject* parent = 0
4348  );
4349 
4357 
4365  explicit ChannelInterfacePasswordInterface(const Tp::Client::ChannelInterface& mainInterface);
4366 
4374  ChannelInterfacePasswordInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
4375 
4383  {
4384  return internalRequestAllProperties();
4385  }
4386 
4387 public Q_SLOTS:
4405  inline QDBusPendingReply<uint> GetPasswordFlags(int timeout = -1)
4406  {
4407  if (!invalidationReason().isEmpty()) {
4408  return QDBusPendingReply<uint>(QDBusMessage::createError(
4409  invalidationReason(),
4410  invalidationMessage()
4411  ));
4412  }
4413 
4414  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4415  this->staticInterfaceName(), QLatin1String("GetPasswordFlags"));
4416  return this->connection().asyncCall(callMessage, timeout);
4417  }
4418 
4439  inline QDBusPendingReply<bool> ProvidePassword(const QString& password, int timeout = -1)
4440  {
4441  if (!invalidationReason().isEmpty()) {
4442  return QDBusPendingReply<bool>(QDBusMessage::createError(
4443  invalidationReason(),
4444  invalidationMessage()
4445  ));
4446  }
4447 
4448  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4449  this->staticInterfaceName(), QLatin1String("ProvidePassword"));
4450  callMessage << QVariant::fromValue(password);
4451  return this->connection().asyncCall(callMessage, timeout);
4452  }
4453 
4454 Q_SIGNALS:
4469  void PasswordFlagsChanged(uint added, uint removed);
4470 
4471 protected:
4472  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
4473 };
4474 
4483 {
4484  Q_OBJECT
4485 
4486 public:
4493  static inline QLatin1String staticInterfaceName()
4494  {
4495  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.RoomConfig1");
4496  }
4497 
4506  const QString& busName,
4507  const QString& objectPath,
4508  QObject* parent = 0
4509  );
4510 
4520  const QDBusConnection& connection,
4521  const QString& busName,
4522  const QString& objectPath,
4523  QObject* parent = 0
4524  );
4525 
4533 
4542 
4550  ChannelInterfaceRoomConfigInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
4551 
4563  {
4564  return internalRequestProperty(QLatin1String("Anonymous"));
4565  }
4566 
4577  {
4578  return internalRequestProperty(QLatin1String("InviteOnly"));
4579  }
4580 
4591  {
4592  return internalRequestProperty(QLatin1String("Limit"));
4593  }
4594 
4605  {
4606  return internalRequestProperty(QLatin1String("Moderated"));
4607  }
4608 
4639  {
4640  return internalRequestProperty(QLatin1String("Title"));
4641  }
4642 
4654  {
4655  return internalRequestProperty(QLatin1String("Description"));
4656  }
4657 
4671  {
4672  return internalRequestProperty(QLatin1String("Persistent"));
4673  }
4674 
4687  {
4688  return internalRequestProperty(QLatin1String("Private"));
4689  }
4690 
4707  {
4708  return internalRequestProperty(QLatin1String("PasswordProtected"));
4709  }
4710 
4733  {
4734  return internalRequestProperty(QLatin1String("Password"));
4735  }
4736 
4760  {
4761  return internalRequestProperty(QLatin1String("PasswordHint"));
4762  }
4763 
4779  {
4780  return internalRequestProperty(QLatin1String("CanUpdateConfiguration"));
4781  }
4782 
4806  {
4807  return internalRequestProperty(QLatin1String("MutableProperties"));
4808  }
4809 
4835  {
4836  return internalRequestProperty(QLatin1String("ConfigurationRetrieved"));
4837  }
4838 
4846  {
4847  return internalRequestAllProperties();
4848  }
4849 
4850 public Q_SLOTS:
4893  inline QDBusPendingReply<> UpdateConfiguration(const QVariantMap& properties, int timeout = -1)
4894  {
4895  if (!invalidationReason().isEmpty()) {
4896  return QDBusPendingReply<>(QDBusMessage::createError(
4897  invalidationReason(),
4898  invalidationMessage()
4899  ));
4900  }
4901 
4902  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4903  this->staticInterfaceName(), QLatin1String("UpdateConfiguration"));
4904  callMessage << QVariant::fromValue(properties);
4905  return this->connection().asyncCall(callMessage, timeout);
4906  }
4907 
4908 protected:
4909  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
4910 };
4911 
4920 {
4921  Q_OBJECT
4922 
4923 public:
4930  static inline QLatin1String staticInterfaceName()
4931  {
4932  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Room2");
4933  }
4934 
4943  const QString& busName,
4944  const QString& objectPath,
4945  QObject* parent = 0
4946  );
4947 
4957  const QDBusConnection& connection,
4958  const QString& busName,
4959  const QString& objectPath,
4960  QObject* parent = 0
4961  );
4962 
4970 
4978  explicit ChannelInterfaceRoomInterface(const Tp::Client::ChannelInterface& mainInterface);
4979 
4987  ChannelInterfaceRoomInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
4988 
5015  {
5016  return internalRequestProperty(QLatin1String("RoomName"));
5017  }
5018 
5040  {
5041  return internalRequestProperty(QLatin1String("Server"));
5042  }
5043 
5057  {
5058  return internalRequestProperty(QLatin1String("Creator"));
5059  }
5060 
5074  {
5075  return internalRequestProperty(QLatin1String("CreatorHandle"));
5076  }
5077 
5091  {
5092  return internalRequestProperty(QLatin1String("CreationTimestamp"));
5093  }
5094 
5102  {
5103  return internalRequestAllProperties();
5104  }
5105 
5106 protected:
5107  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
5108 };
5109 
5118 {
5119  Q_OBJECT
5120 
5121 public:
5128  static inline QLatin1String staticInterfaceName()
5129  {
5130  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication");
5131  }
5132 
5141  const QString& busName,
5142  const QString& objectPath,
5143  QObject* parent = 0
5144  );
5145 
5155  const QDBusConnection& connection,
5156  const QString& busName,
5157  const QString& objectPath,
5158  QObject* parent = 0
5159  );
5160 
5168 
5177 
5185  ChannelInterfaceSASLAuthenticationInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
5186 
5210  {
5211  return internalRequestProperty(QLatin1String("AvailableMechanisms"));
5212  }
5213 
5236  {
5237  return internalRequestProperty(QLatin1String("HasInitialData"));
5238  }
5239 
5261  {
5262  return internalRequestProperty(QLatin1String("CanTryAgain"));
5263  }
5264 
5279  {
5280  return internalRequestProperty(QLatin1String("SASLStatus"));
5281  }
5282 
5312  {
5313  return internalRequestProperty(QLatin1String("SASLError"));
5314  }
5315 
5338  {
5339  return internalRequestProperty(QLatin1String("SASLErrorDetails"));
5340  }
5341 
5407  {
5408  return internalRequestProperty(QLatin1String("AuthorizationIdentity"));
5409  }
5410 
5473  {
5474  return internalRequestProperty(QLatin1String("DefaultUsername"));
5475  }
5476 
5505  {
5506  return internalRequestProperty(QLatin1String("DefaultRealm"));
5507  }
5508 
5531  {
5532  return internalRequestProperty(QLatin1String("MaySaveResponse"));
5533  }
5534 
5542  {
5543  return internalRequestAllProperties();
5544  }
5545 
5546 public Q_SLOTS:
5573  inline QDBusPendingReply<> StartMechanism(const QString& mechanism, int timeout = -1)
5574  {
5575  if (!invalidationReason().isEmpty()) {
5576  return QDBusPendingReply<>(QDBusMessage::createError(
5577  invalidationReason(),
5578  invalidationMessage()
5579  ));
5580  }
5581 
5582  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5583  this->staticInterfaceName(), QLatin1String("StartMechanism"));
5584  callMessage << QVariant::fromValue(mechanism);
5585  return this->connection().asyncCall(callMessage, timeout);
5586  }
5587 
5642  inline QDBusPendingReply<> StartMechanismWithData(const QString& mechanism, const QByteArray& initialData, int timeout = -1)
5643  {
5644  if (!invalidationReason().isEmpty()) {
5645  return QDBusPendingReply<>(QDBusMessage::createError(
5646  invalidationReason(),
5647  invalidationMessage()
5648  ));
5649  }
5650 
5651  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5652  this->staticInterfaceName(), QLatin1String("StartMechanismWithData"));
5653  callMessage << QVariant::fromValue(mechanism) << QVariant::fromValue(initialData);
5654  return this->connection().asyncCall(callMessage, timeout);
5655  }
5656 
5674  inline QDBusPendingReply<> Respond(const QByteArray& responseData, int timeout = -1)
5675  {
5676  if (!invalidationReason().isEmpty()) {
5677  return QDBusPendingReply<>(QDBusMessage::createError(
5678  invalidationReason(),
5679  invalidationMessage()
5680  ));
5681  }
5682 
5683  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5684  this->staticInterfaceName(), QLatin1String("Respond"));
5685  callMessage << QVariant::fromValue(responseData);
5686  return this->connection().asyncCall(callMessage, timeout);
5687  }
5688 
5717  inline QDBusPendingReply<> AcceptSASL(int timeout = -1)
5718  {
5719  if (!invalidationReason().isEmpty()) {
5720  return QDBusPendingReply<>(QDBusMessage::createError(
5721  invalidationReason(),
5722  invalidationMessage()
5723  ));
5724  }
5725 
5726  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5727  this->staticInterfaceName(), QLatin1String("AcceptSASL"));
5728  return this->connection().asyncCall(callMessage, timeout);
5729  }
5730 
5759  inline QDBusPendingReply<> AbortSASL(uint reason, const QString& debugMessage, int timeout = -1)
5760  {
5761  if (!invalidationReason().isEmpty()) {
5762  return QDBusPendingReply<>(QDBusMessage::createError(
5763  invalidationReason(),
5764  invalidationMessage()
5765  ));
5766  }
5767 
5768  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5769  this->staticInterfaceName(), QLatin1String("AbortSASL"));
5770  callMessage << QVariant::fromValue(reason) << QVariant::fromValue(debugMessage);
5771  return this->connection().asyncCall(callMessage, timeout);
5772  }
5773 
5774 Q_SIGNALS:
5792  void SASLStatusChanged(uint status, const QString& reason, const QVariantMap& details);
5793 
5813  void NewChallenge(const QByteArray& challengeData);
5814 
5815 protected:
5816  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
5817 };
5818 
5827 {
5828  Q_OBJECT
5829 
5830 public:
5837  static inline QLatin1String staticInterfaceName()
5838  {
5839  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.SMS");
5840  }
5841 
5850  const QString& busName,
5851  const QString& objectPath,
5852  QObject* parent = 0
5853  );
5854 
5864  const QDBusConnection& connection,
5865  const QString& busName,
5866  const QString& objectPath,
5867  QObject* parent = 0
5868  );
5869 
5877 
5885  explicit ChannelInterfaceSMSInterface(const Tp::Client::ChannelInterface& mainInterface);
5886 
5894  ChannelInterfaceSMSInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
5895 
5936  {
5937  return internalRequestProperty(QLatin1String("Flash"));
5938  }
5939 
6003  {
6004  return internalRequestProperty(QLatin1String("SMSChannel"));
6005  }
6006 
6014  {
6015  return internalRequestAllProperties();
6016  }
6017 
6018 public Q_SLOTS:
6083  inline QDBusPendingReply<uint, int, int> GetSMSLength(const Tp::MessagePartList& message, int timeout = -1)
6084  {
6085  if (!invalidationReason().isEmpty()) {
6086  return QDBusPendingReply<uint, int, int>(QDBusMessage::createError(
6087  invalidationReason(),
6088  invalidationMessage()
6089  ));
6090  }
6091 
6092  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6093  this->staticInterfaceName(), QLatin1String("GetSMSLength"));
6094  callMessage << QVariant::fromValue(message);
6095  return this->connection().asyncCall(callMessage, timeout);
6096  }
6097 
6098 Q_SIGNALS:
6108  void SMSChannelChanged(bool SMSChannel);
6109 
6110 protected:
6111  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6112 };
6113 
6122 {
6123  Q_OBJECT
6124 
6125 public:
6132  static inline QLatin1String staticInterfaceName()
6133  {
6134  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Securable");
6135  }
6136 
6145  const QString& busName,
6146  const QString& objectPath,
6147  QObject* parent = 0
6148  );
6149 
6159  const QDBusConnection& connection,
6160  const QString& busName,
6161  const QString& objectPath,
6162  QObject* parent = 0
6163  );
6164 
6172 
6181 
6189  ChannelInterfaceSecurableInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
6190 
6213  {
6214  return internalRequestProperty(QLatin1String("Encrypted"));
6215  }
6216 
6234  {
6235  return internalRequestProperty(QLatin1String("Verified"));
6236  }
6237 
6245  {
6246  return internalRequestAllProperties();
6247  }
6248 
6249 protected:
6250  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6251 };
6252 
6261 {
6262  Q_OBJECT
6263 
6264 public:
6271  static inline QLatin1String staticInterfaceName()
6272  {
6273  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.ServicePoint");
6274  }
6275 
6284  const QString& busName,
6285  const QString& objectPath,
6286  QObject* parent = 0
6287  );
6288 
6298  const QDBusConnection& connection,
6299  const QString& busName,
6300  const QString& objectPath,
6301  QObject* parent = 0
6302  );
6303 
6311 
6320 
6328  ChannelInterfaceServicePointInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
6329 
6350  {
6351  return internalRequestProperty(QLatin1String("InitialServicePoint"));
6352  }
6353 
6367  {
6368  return internalRequestProperty(QLatin1String("CurrentServicePoint"));
6369  }
6370 
6378  {
6379  return internalRequestAllProperties();
6380  }
6381 
6382 Q_SIGNALS:
6399  void ServicePointChanged(const Tp::ServicePoint& servicePoint);
6400 
6401 protected:
6402  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6403 };
6404 
6413 {
6414  Q_OBJECT
6415 
6416 public:
6423  static inline QLatin1String staticInterfaceName()
6424  {
6425  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Subject2");
6426  }
6427 
6436  const QString& busName,
6437  const QString& objectPath,
6438  QObject* parent = 0
6439  );
6440 
6450  const QDBusConnection& connection,
6451  const QString& busName,
6452  const QString& objectPath,
6453  QObject* parent = 0
6454  );
6455 
6463 
6471  explicit ChannelInterfaceSubjectInterface(const Tp::Client::ChannelInterface& mainInterface);
6472 
6480  ChannelInterfaceSubjectInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
6481 
6502  {
6503  return internalRequestProperty(QLatin1String("Subject"));
6504  }
6505 
6523  {
6524  return internalRequestProperty(QLatin1String("Actor"));
6525  }
6526 
6540  {
6541  return internalRequestProperty(QLatin1String("ActorHandle"));
6542  }
6543 
6561  {
6562  return internalRequestProperty(QLatin1String("Timestamp"));
6563  }
6564 
6590  {
6591  return internalRequestProperty(QLatin1String("CanSet"));
6592  }
6593 
6601  {
6602  return internalRequestAllProperties();
6603  }
6604 
6605 public Q_SLOTS:
6629  inline QDBusPendingReply<> SetSubject(const QString& subject, int timeout = -1)
6630  {
6631  if (!invalidationReason().isEmpty()) {
6632  return QDBusPendingReply<>(QDBusMessage::createError(
6633  invalidationReason(),
6634  invalidationMessage()
6635  ));
6636  }
6637 
6638  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6639  this->staticInterfaceName(), QLatin1String("SetSubject"));
6640  callMessage << QVariant::fromValue(subject);
6641  return this->connection().asyncCall(callMessage, timeout);
6642  }
6643 
6644 protected:
6645  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6646 };
6647 
6656 {
6657  Q_OBJECT
6658 
6659 public:
6666  static inline QLatin1String staticInterfaceName()
6667  {
6668  return QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Tube");
6669  }
6670 
6679  const QString& busName,
6680  const QString& objectPath,
6681  QObject* parent = 0
6682  );
6683 
6693  const QDBusConnection& connection,
6694  const QString& busName,
6695  const QString& objectPath,
6696  QObject* parent = 0
6697  );
6698 
6706 
6714  explicit ChannelInterfaceTubeInterface(const Tp::Client::ChannelInterface& mainInterface);
6715 
6723  ChannelInterfaceTubeInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
6724 
6771  {
6772  return internalRequestProperty(QLatin1String("Parameters"));
6773  }
6774 
6791  {
6792  return internalRequestProperty(QLatin1String("State"));
6793  }
6794 
6802  {
6803  return internalRequestAllProperties();
6804  }
6805 
6806 Q_SIGNALS:
6817  void TubeChannelStateChanged(uint state);
6818 
6819 protected:
6820  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6821 };
6822 
6831 {
6832  Q_OBJECT
6833 
6834 public:
6841  static inline QLatin1String staticInterfaceName()
6842  {
6843  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.Call1");
6844  }
6845 
6854  const QString& busName,
6855  const QString& objectPath,
6856  QObject* parent = 0
6857  );
6858 
6868  const QDBusConnection& connection,
6869  const QString& busName,
6870  const QString& objectPath,
6871  QObject* parent = 0
6872  );
6873 
6881 
6889  explicit ChannelTypeCallInterface(const Tp::Client::ChannelInterface& mainInterface);
6890 
6898  ChannelTypeCallInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
6899 
6916  {
6917  return internalRequestProperty(QLatin1String("Contents"));
6918  }
6919 
6984  {
6985  return internalRequestProperty(QLatin1String("CallStateDetails"));
6986  }
6987 
7013  {
7014  return internalRequestProperty(QLatin1String("CallState"));
7015  }
7016 
7037  {
7038  return internalRequestProperty(QLatin1String("CallFlags"));
7039  }
7040 
7057  {
7058  return internalRequestProperty(QLatin1String("CallStateReason"));
7059  }
7060 
7095  {
7096  return internalRequestProperty(QLatin1String("HardwareStreaming"));
7097  }
7098 
7125  {
7126  return internalRequestProperty(QLatin1String("CallMembers"));
7127  }
7128 
7141  {
7142  return internalRequestProperty(QLatin1String("MemberIdentifiers"));
7143  }
7144 
7167  {
7168  return internalRequestProperty(QLatin1String("InitialTransport"));
7169  }
7170 
7241  {
7242  return internalRequestProperty(QLatin1String("InitialAudio"));
7243  }
7244 
7266  {
7267  return internalRequestProperty(QLatin1String("InitialVideo"));
7268  }
7269 
7298  {
7299  return internalRequestProperty(QLatin1String("InitialAudioName"));
7300  }
7301 
7318  {
7319  return internalRequestProperty(QLatin1String("InitialVideoName"));
7320  }
7321 
7354  {
7355  return internalRequestProperty(QLatin1String("MutableContents"));
7356  }
7357 
7365  {
7366  return internalRequestAllProperties();
7367  }
7368 
7369 public Q_SLOTS:
7398  inline QDBusPendingReply<> SetRinging(int timeout = -1)
7399  {
7400  if (!invalidationReason().isEmpty()) {
7401  return QDBusPendingReply<>(QDBusMessage::createError(
7402  invalidationReason(),
7403  invalidationMessage()
7404  ));
7405  }
7406 
7407  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7408  this->staticInterfaceName(), QLatin1String("SetRinging"));
7409  return this->connection().asyncCall(callMessage, timeout);
7410  }
7411 
7442  inline QDBusPendingReply<> SetQueued(int timeout = -1)
7443  {
7444  if (!invalidationReason().isEmpty()) {
7445  return QDBusPendingReply<>(QDBusMessage::createError(
7446  invalidationReason(),
7447  invalidationMessage()
7448  ));
7449  }
7450 
7451  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7452  this->staticInterfaceName(), QLatin1String("SetQueued"));
7453  return this->connection().asyncCall(callMessage, timeout);
7454  }
7455 
7490  inline QDBusPendingReply<> Accept(int timeout = -1)
7491  {
7492  if (!invalidationReason().isEmpty()) {
7493  return QDBusPendingReply<>(QDBusMessage::createError(
7494  invalidationReason(),
7495  invalidationMessage()
7496  ));
7497  }
7498 
7499  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7500  this->staticInterfaceName(), QLatin1String("Accept"));
7501  return this->connection().asyncCall(callMessage, timeout);
7502  }
7503 
7529  inline QDBusPendingReply<> Hangup(uint reason, const QString& detailedHangupReason, const QString& message, int timeout = -1)
7530  {
7531  if (!invalidationReason().isEmpty()) {
7532  return QDBusPendingReply<>(QDBusMessage::createError(
7533  invalidationReason(),
7534  invalidationMessage()
7535  ));
7536  }
7537 
7538  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7539  this->staticInterfaceName(), QLatin1String("Hangup"));
7540  callMessage << QVariant::fromValue(reason) << QVariant::fromValue(detailedHangupReason) << QVariant::fromValue(message);
7541  return this->connection().asyncCall(callMessage, timeout);
7542  }
7543 
7582  inline QDBusPendingReply<QDBusObjectPath> AddContent(const QString& contentName, uint contentType, uint initialDirection, int timeout = -1)
7583  {
7584  if (!invalidationReason().isEmpty()) {
7585  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
7586  invalidationReason(),
7587  invalidationMessage()
7588  ));
7589  }
7590 
7591  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7592  this->staticInterfaceName(), QLatin1String("AddContent"));
7593  callMessage << QVariant::fromValue(contentName) << QVariant::fromValue(contentType) << QVariant::fromValue(initialDirection);
7594  return this->connection().asyncCall(callMessage, timeout);
7595  }
7596 
7597 Q_SIGNALS:
7609  void ContentAdded(const QDBusObjectPath& content);
7610 
7626  void ContentRemoved(const QDBusObjectPath& content, const Tp::CallStateReason& reason);
7627 
7655  void CallStateChanged(uint callState, uint callFlags, const Tp::CallStateReason& callStateReason, const QVariantMap& callStateDetails);
7656 
7685  void CallMembersChanged(const Tp::CallMemberMap& flagsChanged, const Tp::HandleIdentifierMap& identifiers, const Tp::UIntList& removed, const Tp::CallStateReason& reason);
7686 
7687 protected:
7688  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
7689 };
7690 
7699 {
7700  Q_OBJECT
7701 
7702 public:
7709  static inline QLatin1String staticInterfaceName()
7710  {
7711  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.ContactList");
7712  }
7713 
7722  const QString& busName,
7723  const QString& objectPath,
7724  QObject* parent = 0
7725  );
7726 
7736  const QDBusConnection& connection,
7737  const QString& busName,
7738  const QString& objectPath,
7739  QObject* parent = 0
7740  );
7741 
7749 
7757  explicit ChannelTypeContactListInterface(const Tp::Client::ChannelInterface& mainInterface);
7758 
7766  ChannelTypeContactListInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
7767 
7775  {
7776  return internalRequestAllProperties();
7777  }
7778 
7779 protected:
7780  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
7781 };
7782 
7791 {
7792  Q_OBJECT
7793 
7794 public:
7801  static inline QLatin1String staticInterfaceName()
7802  {
7803  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.ContactSearch");
7804  }
7805 
7814  const QString& busName,
7815  const QString& objectPath,
7816  QObject* parent = 0
7817  );
7818 
7828  const QDBusConnection& connection,
7829  const QString& busName,
7830  const QString& objectPath,
7831  QObject* parent = 0
7832  );
7833 
7841 
7849  explicit ChannelTypeContactSearchInterface(const Tp::Client::ChannelInterface& mainInterface);
7850 
7858  ChannelTypeContactSearchInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
7859 
7871  {
7872  return internalRequestProperty(QLatin1String("SearchState"));
7873  }
7874 
7901  {
7902  return internalRequestProperty(QLatin1String("Limit"));
7903  }
7904 
7920  {
7921  return internalRequestProperty(QLatin1String("AvailableSearchKeys"));
7922  }
7923 
7945  {
7946  return internalRequestProperty(QLatin1String("Server"));
7947  }
7948 
7956  {
7957  return internalRequestAllProperties();
7958  }
7959 
7960 public Q_SLOTS:
7978  inline QDBusPendingReply<> Search(const Tp::ContactSearchMap& terms, int timeout = -1)
7979  {
7980  if (!invalidationReason().isEmpty()) {
7981  return QDBusPendingReply<>(QDBusMessage::createError(
7982  invalidationReason(),
7983  invalidationMessage()
7984  ));
7985  }
7986 
7987  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7988  this->staticInterfaceName(), QLatin1String("Search"));
7989  callMessage << QVariant::fromValue(terms);
7990  return this->connection().asyncCall(callMessage, timeout);
7991  }
7992 
8007  inline QDBusPendingReply<> More(int timeout = -1)
8008  {
8009  if (!invalidationReason().isEmpty()) {
8010  return QDBusPendingReply<>(QDBusMessage::createError(
8011  invalidationReason(),
8012  invalidationMessage()
8013  ));
8014  }
8015 
8016  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
8017  this->staticInterfaceName(), QLatin1String("More"));
8018  return this->connection().asyncCall(callMessage, timeout);
8019  }
8020 
8053  inline QDBusPendingReply<> Stop(int timeout = -1)
8054  {
8055  if (!invalidationReason().isEmpty()) {
8056  return QDBusPendingReply<>(QDBusMessage::createError(
8057  invalidationReason(),
8058  invalidationMessage()
8059  ));
8060  }
8061 
8062  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
8063  this->staticInterfaceName(), QLatin1String("Stop"));
8064  return this->connection().asyncCall(callMessage, timeout);
8065  }
8066 
8067 Q_SIGNALS:
8117  void SearchStateChanged(uint state, const QString& error, const QVariantMap& details);
8118 
8131  void SearchResultReceived(const Tp::ContactSearchResultMap& result);
8132 
8133 protected:
8134  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
8135 };
8136 
8145 {
8146  Q_OBJECT
8147 
8148 public:
8155  static inline QLatin1String staticInterfaceName()
8156  {
8157  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.DBusTube");
8158  }
8159 
8168  const QString& busName,
8169  const QString& objectPath,
8170  QObject* parent = 0
8171  );
8172 
8182  const QDBusConnection& connection,
8183  const QString& busName,
8184  const QString& objectPath,
8185  QObject* parent = 0
8186  );
8187 
8195 
8203  explicit ChannelTypeDBusTubeInterface(const Tp::Client::ChannelInterface& mainInterface);
8204 
8212  ChannelTypeDBusTubeInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
8213 
8233  {
8234  return internalRequestProperty(QLatin1String("ServiceName"));
8235  }
8236 
8250  {
8251  return internalRequestProperty(QLatin1String("DBusNames"));
8252  }
8253 
8282  {
8283  return internalRequestProperty(QLatin1String("SupportedAccessControls"));
8284  }
8285 
8293  {
8294  return internalRequestAllProperties();
8295  }
8296 
8297 public Q_SLOTS:
8322  inline QDBusPendingReply<QString> Offer(const QVariantMap& parameters, uint accesscontrol, int timeout = -1)
8323  {
8324  if (!invalidationReason().isEmpty()) {
8325  return QDBusPendingReply<QString>(QDBusMessage::createError(
8326  invalidationReason(),
8327  invalidationMessage()
8328  ));
8329  }
8330 
8331  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
8332  this->staticInterfaceName(), QLatin1String("Offer"));
8333  callMessage << QVariant::fromValue(parameters) << QVariant::fromValue(accesscontrol);
8334  return this->connection().asyncCall(callMessage, timeout);
8335  }
8336 
8360  inline QDBusPendingReply<QString> Accept(uint accesscontrol, int timeout = -1)
8361  {
8362  if (!invalidationReason().isEmpty()) {
8363  return QDBusPendingReply<QString>(QDBusMessage::createError(
8364  invalidationReason(),
8365  invalidationMessage()
8366  ));
8367  }
8368 
8369  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
8370  this->staticInterfaceName(), QLatin1String("Accept"));
8371  callMessage << QVariant::fromValue(accesscontrol);
8372  return this->connection().asyncCall(callMessage, timeout);
8373  }
8374 
8375 Q_SIGNALS:
8391  void DBusNamesChanged(const Tp::DBusTubeParticipants& added, const Tp::UIntList& removed);
8392 
8393 protected:
8394  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
8395 };
8396 
8405 {
8406  Q_OBJECT
8407 
8408 public:
8415  static inline QLatin1String staticInterfaceName()
8416  {
8417  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.FileTransfer");
8418  }
8419 
8428  const QString& busName,
8429  const QString& objectPath,
8430  QObject* parent = 0
8431  );
8432 
8442  const QDBusConnection& connection,
8443  const QString& busName,
8444  const QString& objectPath,
8445  QObject* parent = 0
8446  );
8447 
8455 
8463  explicit ChannelTypeFileTransferInterface(const Tp::Client::ChannelInterface& mainInterface);
8464 
8472  ChannelTypeFileTransferInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
8473 
8487  {
8488  return internalRequestProperty(QLatin1String("State"));
8489  }
8490 
8509  {
8510  return internalRequestProperty(QLatin1String("ContentType"));
8511  }
8512 
8535  {
8536  return internalRequestProperty(QLatin1String("Filename"));
8537  }
8538 
8563  {
8564  return internalRequestProperty(QLatin1String("Size"));
8565  }
8566 
8594  {
8595  return internalRequestProperty(QLatin1String("ContentHashType"));
8596  }
8597 
8619  {
8620  return internalRequestProperty(QLatin1String("ContentHash"));
8621  }
8622 
8641  {
8642  return internalRequestProperty(QLatin1String("Description"));
8643  }
8644 
8662  {
8663  return internalRequestProperty(QLatin1String("Date"));
8664  }
8665 
8695  {
8696  return internalRequestProperty(QLatin1String("AvailableSocketTypes"));
8697  }
8698 
8713  {
8714  return internalRequestProperty(QLatin1String("TransferredBytes"));
8715  }
8716 
8740  {
8741  return internalRequestProperty(QLatin1String("InitialOffset"));
8742  }
8743 
8780  {
8781  return internalRequestProperty(QLatin1String("URI"));
8782  }
8783 
8819  inline Tp::PendingOperation *setPropertyURI(QString newValue)
8820  {
8821  return internalSetProperty(QLatin1String("URI"), QVariant::fromValue(newValue));
8822  }
8823 
8857  {
8858  return internalRequestProperty(QLatin1String("FileCollection"));
8859  }
8860 
8868  {
8869  return internalRequestAllProperties();
8870  }
8871 
8872 public Q_SLOTS:
8917  inline QDBusPendingReply<QDBusVariant> AcceptFile(uint addressType, uint accessControl, const QDBusVariant& accessControlParam, qulonglong offset, int timeout = -1)
8918  {
8919  if (!invalidationReason().isEmpty()) {
8920  return QDBusPendingReply<QDBusVariant>(QDBusMessage::createError(
8921  invalidationReason(),
8922  invalidationMessage()
8923  ));
8924  }
8925 
8926  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
8927  this->staticInterfaceName(), QLatin1String("AcceptFile"));
8928  callMessage << QVariant::fromValue(addressType) << QVariant::fromValue(accessControl) << QVariant::fromValue(accessControlParam) << QVariant::fromValue(offset);
8929  return this->connection().asyncCall(callMessage, timeout);
8930  }
8931 
8965  inline QDBusPendingReply<QDBusVariant> ProvideFile(uint addressType, uint accessControl, const QDBusVariant& accessControlParam, int timeout = -1)
8966  {
8967  if (!invalidationReason().isEmpty()) {
8968  return QDBusPendingReply<QDBusVariant>(QDBusMessage::createError(
8969  invalidationReason(),
8970  invalidationMessage()
8971  ));
8972  }
8973 
8974  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
8975  this->staticInterfaceName(), QLatin1String("ProvideFile"));
8976  callMessage << QVariant::fromValue(addressType) << QVariant::fromValue(accessControl) << QVariant::fromValue(accessControlParam);
8977  return this->connection().asyncCall(callMessage, timeout);
8978  }
8979 
8980 Q_SIGNALS:
8998  void FileTransferStateChanged(uint state, uint reason);
8999 
9012  void TransferredBytesChanged(qulonglong count);
9013 
9025  void InitialOffsetDefined(qulonglong initialOffset);
9026 
9038  void URIDefined(const QString& URI);
9039 
9040 protected:
9041  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
9042 };
9043 
9052 {
9053  Q_OBJECT
9054 
9055 public:
9062  static inline QLatin1String staticInterfaceName()
9063  {
9064  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.RoomList");
9065  }
9066 
9075  const QString& busName,
9076  const QString& objectPath,
9077  QObject* parent = 0
9078  );
9079 
9089  const QDBusConnection& connection,
9090  const QString& busName,
9091  const QString& objectPath,
9092  QObject* parent = 0
9093  );
9094 
9102 
9110  explicit ChannelTypeRoomListInterface(const Tp::Client::ChannelInterface& mainInterface);
9111 
9119  ChannelTypeRoomListInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
9120 
9135  {
9136  return internalRequestProperty(QLatin1String("Server"));
9137  }
9138 
9146  {
9147  return internalRequestAllProperties();
9148  }
9149 
9150 public Q_SLOTS:
9166  inline QDBusPendingReply<bool> GetListingRooms(int timeout = -1)
9167  {
9168  if (!invalidationReason().isEmpty()) {
9169  return QDBusPendingReply<bool>(QDBusMessage::createError(
9170  invalidationReason(),
9171  invalidationMessage()
9172  ));
9173  }
9174 
9175  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
9176  this->staticInterfaceName(), QLatin1String("GetListingRooms"));
9177  return this->connection().asyncCall(callMessage, timeout);
9178  }
9179 
9193  inline QDBusPendingReply<> ListRooms(int timeout = -1)
9194  {
9195  if (!invalidationReason().isEmpty()) {
9196  return QDBusPendingReply<>(QDBusMessage::createError(
9197  invalidationReason(),
9198  invalidationMessage()
9199  ));
9200  }
9201 
9202  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
9203  this->staticInterfaceName(), QLatin1String("ListRooms"));
9204  return this->connection().asyncCall(callMessage, timeout);
9205  }
9206 
9219  inline QDBusPendingReply<> StopListing(int timeout = -1)
9220  {
9221  if (!invalidationReason().isEmpty()) {
9222  return QDBusPendingReply<>(QDBusMessage::createError(
9223  invalidationReason(),
9224  invalidationMessage()
9225  ));
9226  }
9227 
9228  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
9229  this->staticInterfaceName(), QLatin1String("StopListing"));
9230  return this->connection().asyncCall(callMessage, timeout);
9231  }
9232 
9233 Q_SIGNALS:
9292  void GotRooms(const Tp::RoomInfoList& rooms);
9293 
9304  void ListingRooms(bool listing);
9305 
9306 protected:
9307  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
9308 };
9309 
9318 {
9319  Q_OBJECT
9320 
9321 public:
9328  static inline QLatin1String staticInterfaceName()
9329  {
9330  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.ServerAuthentication");
9331  }
9332 
9341  const QString& busName,
9342  const QString& objectPath,
9343  QObject* parent = 0
9344  );
9345 
9355  const QDBusConnection& connection,
9356  const QString& busName,
9357  const QString& objectPath,
9358  QObject* parent = 0
9359  );
9360 
9368 
9377 
9385  ChannelTypeServerAuthenticationInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
9386 
9404  {
9405  return internalRequestProperty(QLatin1String("AuthenticationMethod"));
9406  }
9407 
9415  {
9416  return internalRequestAllProperties();
9417  }
9418 
9419 protected:
9420  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
9421 };
9422 
9431 {
9432  Q_OBJECT
9433 
9434 public:
9441  static inline QLatin1String staticInterfaceName()
9442  {
9443  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection");
9444  }
9445 
9454  const QString& busName,
9455  const QString& objectPath,
9456  QObject* parent = 0
9457  );
9458 
9468  const QDBusConnection& connection,
9469  const QString& busName,
9470  const QString& objectPath,
9471  QObject* parent = 0
9472  );
9473 
9481 
9490 
9498  ChannelTypeServerTLSConnectionInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
9499 
9511  {
9512  return internalRequestProperty(QLatin1String("ServerCertificate"));
9513  }
9514 
9529  {
9530  return internalRequestProperty(QLatin1String("Hostname"));
9531  }
9532 
9560  {
9561  return internalRequestProperty(QLatin1String("ReferenceIdentities"));
9562  }
9563 
9571  {
9572  return internalRequestAllProperties();
9573  }
9574 
9575 protected:
9576  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
9577 };
9578 
9587 {
9588  Q_OBJECT
9589 
9590 public:
9597  static inline QLatin1String staticInterfaceName()
9598  {
9599  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.StreamTube");
9600  }
9601 
9610  const QString& busName,
9611  const QString& objectPath,
9612  QObject* parent = 0
9613  );
9614 
9624  const QDBusConnection& connection,
9625  const QString& busName,
9626  const QString& objectPath,
9627  QObject* parent = 0
9628  );
9629 
9637 
9645  explicit ChannelTypeStreamTubeInterface(const Tp::Client::ChannelInterface& mainInterface);
9646 
9654  ChannelTypeStreamTubeInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
9655 
9679  {
9680  return internalRequestProperty(QLatin1String("Service"));
9681  }
9682 
9718  {
9719  return internalRequestProperty(QLatin1String("SupportedSocketTypes"));
9720  }
9721 
9729  {
9730  return internalRequestAllProperties();
9731  }
9732 
9733 public Q_SLOTS:
9764  inline QDBusPendingReply<> Offer(uint addresstype, const QDBusVariant& address, uint accesscontrol, const QVariantMap& parameters, int timeout = -1)
9765  {
9766  if (!invalidationReason().isEmpty()) {
9767  return QDBusPendingReply<>(QDBusMessage::createError(
9768  invalidationReason(),
9769  invalidationMessage()
9770  ));
9771  }
9772 
9773  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
9774  this->staticInterfaceName(), QLatin1String("Offer"));
9775  callMessage << QVariant::fromValue(addresstype) << QVariant::fromValue(address) << QVariant::fromValue(accesscontrol) << QVariant::fromValue(parameters);
9776  return this->connection().asyncCall(callMessage, timeout);
9777  }
9778 
9819  inline QDBusPendingReply<QDBusVariant> Accept(uint addresstype, uint accesscontrol, const QDBusVariant& accesscontrolparam, int timeout = -1)
9820  {
9821  if (!invalidationReason().isEmpty()) {
9822  return QDBusPendingReply<QDBusVariant>(QDBusMessage::createError(
9823  invalidationReason(),
9824  invalidationMessage()
9825  ));
9826  }
9827 
9828  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
9829  this->staticInterfaceName(), QLatin1String("Accept"));
9830  callMessage << QVariant::fromValue(addresstype) << QVariant::fromValue(accesscontrol) << QVariant::fromValue(accesscontrolparam);
9831  return this->connection().asyncCall(callMessage, timeout);
9832  }
9833 
9834 Q_SIGNALS:
9875  void NewRemoteConnection(uint handle, const QDBusVariant& connectionParam, uint connectionID);
9876 
9892  void NewLocalConnection(uint connectionID);
9893 
9925  void ConnectionClosed(uint connectionID, const QString& error, const QString& message);
9926 
9927 protected:
9928  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
9929 };
9930 
9939 {
9940  Q_OBJECT
9941 
9942 public:
9949  static inline QLatin1String staticInterfaceName()
9950  {
9951  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.StreamedMedia");
9952  }
9953 
9962  const QString& busName,
9963  const QString& objectPath,
9964  QObject* parent = 0
9965  );
9966 
9976  const QDBusConnection& connection,
9977  const QString& busName,
9978  const QString& objectPath,
9979  QObject* parent = 0
9980  );
9981 
9989 
9997  explicit ChannelTypeStreamedMediaInterface(const Tp::Client::ChannelInterface& mainInterface);
9998 
10006  ChannelTypeStreamedMediaInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
10007 
10097  {
10098  return internalRequestProperty(QLatin1String("InitialAudio"));
10099  }
10100 
10122  {
10123  return internalRequestProperty(QLatin1String("InitialVideo"));
10124  }
10125 
10169  {
10170  return internalRequestProperty(QLatin1String("ImmutableStreams"));
10171  }
10172 
10180  {
10181  return internalRequestAllProperties();
10182  }
10183 
10184 public Q_SLOTS:
10212  inline QDBusPendingReply<Tp::MediaStreamInfoList> ListStreams(int timeout = -1)
10213  {
10214  if (!invalidationReason().isEmpty()) {
10215  return QDBusPendingReply<Tp::MediaStreamInfoList>(QDBusMessage::createError(
10216  invalidationReason(),
10217  invalidationMessage()
10218  ));
10219  }
10220 
10221  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10222  this->staticInterfaceName(), QLatin1String("ListStreams"));
10223  return this->connection().asyncCall(callMessage, timeout);
10224  }
10225 
10252  inline QDBusPendingReply<> RemoveStreams(const Tp::UIntList& streams, int timeout = -1)
10253  {
10254  if (!invalidationReason().isEmpty()) {
10255  return QDBusPendingReply<>(QDBusMessage::createError(
10256  invalidationReason(),
10257  invalidationMessage()
10258  ));
10259  }
10260 
10261  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10262  this->staticInterfaceName(), QLatin1String("RemoveStreams"));
10263  callMessage << QVariant::fromValue(streams);
10264  return this->connection().asyncCall(callMessage, timeout);
10265  }
10266 
10303  inline QDBusPendingReply<> RequestStreamDirection(uint streamID, uint streamDirection, int timeout = -1)
10304  {
10305  if (!invalidationReason().isEmpty()) {
10306  return QDBusPendingReply<>(QDBusMessage::createError(
10307  invalidationReason(),
10308  invalidationMessage()
10309  ));
10310  }
10311 
10312  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10313  this->staticInterfaceName(), QLatin1String("RequestStreamDirection"));
10314  callMessage << QVariant::fromValue(streamID) << QVariant::fromValue(streamDirection);
10315  return this->connection().asyncCall(callMessage, timeout);
10316  }
10317 
10370  inline QDBusPendingReply<Tp::MediaStreamInfoList> RequestStreams(uint contactHandle, const Tp::UIntList& types, int timeout = -1)
10371  {
10372  if (!invalidationReason().isEmpty()) {
10373  return QDBusPendingReply<Tp::MediaStreamInfoList>(QDBusMessage::createError(
10374  invalidationReason(),
10375  invalidationMessage()
10376  ));
10377  }
10378 
10379  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10380  this->staticInterfaceName(), QLatin1String("RequestStreams"));
10381  callMessage << QVariant::fromValue(contactHandle) << QVariant::fromValue(types);
10382  return this->connection().asyncCall(callMessage, timeout);
10383  }
10384 
10385 Q_SIGNALS:
10452  void StreamAdded(uint streamID, uint contactHandle, uint streamType);
10453 
10485  void StreamDirectionChanged(uint streamID, uint streamDirection, uint pendingFlags);
10486 
10504  void StreamError(uint streamID, uint errorCode, const QString& message);
10505 
10515  void StreamRemoved(uint streamID);
10516 
10530  void StreamStateChanged(uint streamID, uint streamState);
10531 
10532 protected:
10533  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
10534 };
10535 
10544 {
10545  Q_OBJECT
10546 
10547 public:
10554  static inline QLatin1String staticInterfaceName()
10555  {
10556  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.Text");
10557  }
10558 
10567  const QString& busName,
10568  const QString& objectPath,
10569  QObject* parent = 0
10570  );
10571 
10581  const QDBusConnection& connection,
10582  const QString& busName,
10583  const QString& objectPath,
10584  QObject* parent = 0
10585  );
10586 
10594 
10602  explicit ChannelTypeTextInterface(const Tp::Client::ChannelInterface& mainInterface);
10603 
10611  ChannelTypeTextInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
10612 
10620  {
10621  return internalRequestAllProperties();
10622  }
10623 
10624 public Q_SLOTS:
10640  inline QDBusPendingReply<> AcknowledgePendingMessages(const Tp::UIntList& IDs, int timeout = -1)
10641  {
10642  if (!invalidationReason().isEmpty()) {
10643  return QDBusPendingReply<>(QDBusMessage::createError(
10644  invalidationReason(),
10645  invalidationMessage()
10646  ));
10647  }
10648 
10649  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10650  this->staticInterfaceName(), QLatin1String("AcknowledgePendingMessages"));
10651  callMessage << QVariant::fromValue(IDs);
10652  return this->connection().asyncCall(callMessage, timeout);
10653  }
10654 
10670  inline QDBusPendingReply<Tp::UIntList> GetMessageTypes(int timeout = -1)
10671  {
10672  if (!invalidationReason().isEmpty()) {
10673  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
10674  invalidationReason(),
10675  invalidationMessage()
10676  ));
10677  }
10678 
10679  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10680  this->staticInterfaceName(), QLatin1String("GetMessageTypes"));
10681  return this->connection().asyncCall(callMessage, timeout);
10682  }
10683 
10714  inline QDBusPendingReply<Tp::PendingTextMessageList> ListPendingMessages(bool clear, int timeout = -1)
10715  {
10716  if (!invalidationReason().isEmpty()) {
10717  return QDBusPendingReply<Tp::PendingTextMessageList>(QDBusMessage::createError(
10718  invalidationReason(),
10719  invalidationMessage()
10720  ));
10721  }
10722 
10723  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10724  this->staticInterfaceName(), QLatin1String("ListPendingMessages"));
10725  callMessage << QVariant::fromValue(clear);
10726  return this->connection().asyncCall(callMessage, timeout);
10727  }
10728 
10761  inline QDBusPendingReply<> Send(uint type, const QString& text, int timeout = -1)
10762  {
10763  if (!invalidationReason().isEmpty()) {
10764  return QDBusPendingReply<>(QDBusMessage::createError(
10765  invalidationReason(),
10766  invalidationMessage()
10767  ));
10768  }
10769 
10770  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
10771  this->staticInterfaceName(), QLatin1String("Send"));
10772  callMessage << QVariant::fromValue(type) << QVariant::fromValue(text);
10773  return this->connection().asyncCall(callMessage, timeout);
10774  }
10775 
10776 Q_SIGNALS:
10784  void LostMessage();
10785 
10819  void Received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString& text);
10820 
10849  void SendError(uint error, uint timestamp, uint type, const QString& text);
10850 
10874  void Sent(uint timestamp, uint type, const QString& text);
10875 
10876 protected:
10877  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
10878 };
10879 
10888 {
10889  Q_OBJECT
10890 
10891 public:
10898  static inline QLatin1String staticInterfaceName()
10899  {
10900  return QLatin1String("org.freedesktop.Telepathy.Channel.Type.Tubes");
10901  }
10902 
10911  const QString& busName,
10912  const QString& objectPath,
10913  QObject* parent = 0
10914  );
10915 
10925  const QDBusConnection& connection,
10926  const QString& busName,
10927  const QString& objectPath,
10928  QObject* parent = 0
10929  );
10930 
10938 
10946  explicit ChannelTypeTubesInterface(const Tp::Client::ChannelInterface& mainInterface);
10947 
10955  ChannelTypeTubesInterface(const Tp::Client::ChannelInterface& mainInterface, QObject* parent);
10956 
10964  {
10965  return internalRequestAllProperties();
10966  }
10967 
10968 public Q_SLOTS:
11005  inline QDBusPendingReply<Tp::SupportedSocketMap> GetAvailableStreamTubeTypes(int timeout = -1)
11006  {
11007  if (!invalidationReason().isEmpty()) {
11008  return QDBusPendingReply<Tp::SupportedSocketMap>(QDBusMessage::createError(
11009  invalidationReason(),
11010  invalidationMessage()
11011  ));
11012  }
11013 
11014  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11015  this->staticInterfaceName(), QLatin1String("GetAvailableStreamTubeTypes"));
11016  return this->connection().asyncCall(callMessage, timeout);
11017  }
11018 
11032  inline QDBusPendingReply<Tp::UIntList> GetAvailableTubeTypes(int timeout = -1)
11033  {
11034  if (!invalidationReason().isEmpty()) {
11035  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
11036  invalidationReason(),
11037  invalidationMessage()
11038  ));
11039  }
11040 
11041  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11042  this->staticInterfaceName(), QLatin1String("GetAvailableTubeTypes"));
11043  return this->connection().asyncCall(callMessage, timeout);
11044  }
11045 
11061  inline QDBusPendingReply<Tp::TubeInfoList> ListTubes(int timeout = -1)
11062  {
11063  if (!invalidationReason().isEmpty()) {
11064  return QDBusPendingReply<Tp::TubeInfoList>(QDBusMessage::createError(
11065  invalidationReason(),
11066  invalidationMessage()
11067  ));
11068  }
11069 
11070  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11071  this->staticInterfaceName(), QLatin1String("ListTubes"));
11072  return this->connection().asyncCall(callMessage, timeout);
11073  }
11074 
11102  inline QDBusPendingReply<uint> OfferDBusTube(const QString& service, const QVariantMap& parameters, int timeout = -1)
11103  {
11104  if (!invalidationReason().isEmpty()) {
11105  return QDBusPendingReply<uint>(QDBusMessage::createError(
11106  invalidationReason(),
11107  invalidationMessage()
11108  ));
11109  }
11110 
11111  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11112  this->staticInterfaceName(), QLatin1String("OfferDBusTube"));
11113  callMessage << QVariant::fromValue(service) << QVariant::fromValue(parameters);
11114  return this->connection().asyncCall(callMessage, timeout);
11115  }
11116 
11176  inline QDBusPendingReply<uint> OfferStreamTube(const QString& service, const QVariantMap& parameters, uint addressType, const QDBusVariant& address, uint accessControl, const QDBusVariant& accessControlParam, int timeout = -1)
11177  {
11178  if (!invalidationReason().isEmpty()) {
11179  return QDBusPendingReply<uint>(QDBusMessage::createError(
11180  invalidationReason(),
11181  invalidationMessage()
11182  ));
11183  }
11184 
11185  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11186  this->staticInterfaceName(), QLatin1String("OfferStreamTube"));
11187  callMessage << QVariant::fromValue(service) << QVariant::fromValue(parameters) << QVariant::fromValue(addressType) << QVariant::fromValue(address) << QVariant::fromValue(accessControl) << QVariant::fromValue(accessControlParam);
11188  return this->connection().asyncCall(callMessage, timeout);
11189  }
11190 
11213  inline QDBusPendingReply<QString> AcceptDBusTube(uint ID, int timeout = -1)
11214  {
11215  if (!invalidationReason().isEmpty()) {
11216  return QDBusPendingReply<QString>(QDBusMessage::createError(
11217  invalidationReason(),
11218  invalidationMessage()
11219  ));
11220  }
11221 
11222  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11223  this->staticInterfaceName(), QLatin1String("AcceptDBusTube"));
11224  callMessage << QVariant::fromValue(ID);
11225  return this->connection().asyncCall(callMessage, timeout);
11226  }
11227 
11265  inline QDBusPendingReply<QDBusVariant> AcceptStreamTube(uint ID, uint addressType, uint accessControl, const QDBusVariant& accessControlParam, int timeout = -1)
11266  {
11267  if (!invalidationReason().isEmpty()) {
11268  return QDBusPendingReply<QDBusVariant>(QDBusMessage::createError(
11269  invalidationReason(),
11270  invalidationMessage()
11271  ));
11272  }
11273 
11274  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11275  this->staticInterfaceName(), QLatin1String("AcceptStreamTube"));
11276  callMessage << QVariant::fromValue(ID) << QVariant::fromValue(addressType) << QVariant::fromValue(accessControl) << QVariant::fromValue(accessControlParam);
11277  return this->connection().asyncCall(callMessage, timeout);
11278  }
11279 
11294  inline QDBusPendingReply<> CloseTube(uint ID, int timeout = -1)
11295  {
11296  if (!invalidationReason().isEmpty()) {
11297  return QDBusPendingReply<>(QDBusMessage::createError(
11298  invalidationReason(),
11299  invalidationMessage()
11300  ));
11301  }
11302 
11303  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11304  this->staticInterfaceName(), QLatin1String("CloseTube"));
11305  callMessage << QVariant::fromValue(ID);
11306  return this->connection().asyncCall(callMessage, timeout);
11307  }
11308 
11328  inline QDBusPendingReply<QString> GetDBusTubeAddress(uint ID, int timeout = -1)
11329  {
11330  if (!invalidationReason().isEmpty()) {
11331  return QDBusPendingReply<QString>(QDBusMessage::createError(
11332  invalidationReason(),
11333  invalidationMessage()
11334  ));
11335  }
11336 
11337  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11338  this->staticInterfaceName(), QLatin1String("GetDBusTubeAddress"));
11339  callMessage << QVariant::fromValue(ID);
11340  return this->connection().asyncCall(callMessage, timeout);
11341  }
11342 
11363  inline QDBusPendingReply<Tp::DBusTubeMemberList> GetDBusNames(uint ID, int timeout = -1)
11364  {
11365  if (!invalidationReason().isEmpty()) {
11366  return QDBusPendingReply<Tp::DBusTubeMemberList>(QDBusMessage::createError(
11367  invalidationReason(),
11368  invalidationMessage()
11369  ));
11370  }
11371 
11372  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11373  this->staticInterfaceName(), QLatin1String("GetDBusNames"));
11374  callMessage << QVariant::fromValue(ID);
11375  return this->connection().asyncCall(callMessage, timeout);
11376  }
11377 
11403  inline QDBusPendingReply<uint, QDBusVariant> GetStreamTubeSocketAddress(uint ID, int timeout = -1)
11404  {
11405  if (!invalidationReason().isEmpty()) {
11406  return QDBusPendingReply<uint, QDBusVariant>(QDBusMessage::createError(
11407  invalidationReason(),
11408  invalidationMessage()
11409  ));
11410  }
11411 
11412  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
11413  this->staticInterfaceName(), QLatin1String("GetStreamTubeSocketAddress"));
11414  callMessage << QVariant::fromValue(ID);
11415  return this->connection().asyncCall(callMessage, timeout);
11416  }
11417 
11418 Q_SIGNALS:
11448  void NewTube(uint ID, uint initiator, uint type, const QString& service, const QVariantMap& parameters, uint state);
11449 
11463  void TubeStateChanged(uint ID, uint state);
11464 
11475  void TubeClosed(uint ID);
11476 
11495  void DBusNamesChanged(uint ID, const Tp::DBusTubeMemberList& added, const Tp::UIntList& removed);
11496 
11511  void StreamTubeNewConnection(uint ID, uint handle);
11512 
11513 protected:
11514  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
11515 };
11516 }
11517 }
11518 Q_DECLARE_METATYPE(Tp::Client::ChannelInterface*)
11519 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceAnonymityInterface*)
11520 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceCallStateInterface*)
11521 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface*)
11522 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceChatStateInterface*)
11523 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceConferenceInterface*)
11524 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceDTMFInterface*)
11525 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceDestroyableInterface*)
11526 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceFileTransferMetadataInterface*)
11527 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceGroupInterface*)
11528 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceHoldInterface*)
11529 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceMediaSignallingInterface*)
11530 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceMessagesInterface*)
11531 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfacePasswordInterface*)
11532 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceRoomConfigInterface*)
11533 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceRoomInterface*)
11534 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceSASLAuthenticationInterface*)
11535 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceSMSInterface*)
11536 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceSecurableInterface*)
11537 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceServicePointInterface*)
11538 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceSubjectInterface*)
11539 Q_DECLARE_METATYPE(Tp::Client::ChannelInterfaceTubeInterface*)
11540 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeCallInterface*)
11541 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeContactListInterface*)
11542 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeContactSearchInterface*)
11543 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeDBusTubeInterface*)
11544 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeFileTransferInterface*)
11545 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeRoomListInterface*)
11546 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeServerAuthenticationInterface*)
11547 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeServerTLSConnectionInterface*)
11548 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeStreamTubeInterface*)
11549 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeStreamedMediaInterface*)
11550 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeTextInterface*)
11551 Q_DECLARE_METATYPE(Tp::Client::ChannelTypeTubesInterface*)
Tp::PendingVariant * requestPropertyContentHashType() const
Definition: cli-channel.h:8593
Tp::PendingVariant * requestPropertyInitialVideo() const
Definition: cli-channel.h:7265
Tp::PendingVariant * requestPropertyCallStateReason() const
Definition: cli-channel.h:7056
Tp::PendingVariant * requestPropertyActorHandle() const
Definition: cli-channel.h:6539
QDBusPendingReply CancelCaptcha(uint reason, const QString &debugMessage, int timeout=-1)
Definition: cli-channel.h:1307
Tp::PendingVariant * requestPropertyReferenceIdentities() const
Definition: cli-channel.h:9559
QDBusPendingReply< Tp::UIntList > GetHandleOwners(const Tp::UIntList &handles, int timeout=-1)
Definition: cli-channel.h:2972
QDBusPendingReply StartMechanismWithData(const QString &mechanism, const QByteArray &initialData, int timeout=-1)
Definition: cli-channel.h:5642
Tp::PendingVariant * requestPropertyMemberIdentifiers() const
Definition: cli-channel.h:7140
Tp::PendingVariant * requestPropertyMembers() const
Definition: cli-channel.h:2769
QList< DBusTubeMember > DBusTubeMemberList
Definition: build/TelepathyQt/_gen/types.h:1430
Tp::PendingVariant * requestPropertyDescription() const
Definition: cli-channel.h:8640
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:1449
Tp::PendingVariant * requestPropertyCreatorHandle() const
Definition: cli-channel.h:5073
QDBusPendingReply< QString > SendMessage(const Tp::MessagePartList &message, uint flags, int timeout=-1)
Definition: cli-channel.h:4126
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:9570
QDBusPendingReply Respond(const QByteArray &responseData, int timeout=-1)
Definition: cli-channel.h:5674
Tp::PendingVariant * requestPropertyTitle() const
Definition: cli-channel.h:4638
Tp::PendingVariant * requestPropertyAvailableSocketTypes() const
Definition: cli-channel.h:8694
QDBusPendingReply RemoveMembersWithReason(const Tp::UIntList &contacts, const QString &message, uint reason, int timeout=-1)
Definition: cli-channel.h:3211
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:9145
Tp::PendingVariant * requestPropertyDate() const
Definition: cli-channel.h:8661
Tp::PendingVariant * requestPropertyLocalPendingMembers() const
Definition: cli-channel.h:2755
Tp::PendingOperation * setPropertyMetadata(Tp::Metadata newValue)
Definition: cli-channel.h:2611
Definition: build/TelepathyQt/_gen/types.h:568
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
QDBusPendingReply< Tp::UIntList, Tp::UIntList, Tp::UIntList > GetAllMembers(int timeout=-1)
Definition: cli-channel.h:2905
QDBusPendingReply UpdateConfiguration(const QVariantMap &properties, int timeout=-1)
Definition: cli-channel.h:4893
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:8292
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:6841
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:864
Definition: cli-channel.h:6655
Tp::PendingVariant * requestPropertyPassword() const
Definition: cli-channel.h:4732
Tp::PendingVariant * requestPropertyInitialChannels() const
Definition: cli-channel.h:1677
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:8867
Definition: build/TelepathyQt/_gen/types.h:1443
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:9328
QDBusPendingReply Accept(int timeout=-1)
Definition: cli-channel.h:7490
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:2622
Definition: cli-channel.h:4919
Tp::PendingVariant * requestPropertyConfigurationRetrieved() const
Definition: cli-channel.h:4834
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:4382
QDBusPendingReply AbortSASL(uint reason, const QString &debugMessage, int timeout=-1)
Definition: cli-channel.h:5759
Tp::PendingVariant * requestPropertyEncrypted() const
Definition: cli-channel.h:6212
Definition: cli-channel.h:9051
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:10619
QDBusPendingReply< QDBusVariant > Accept(uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, int timeout=-1)
Definition: cli-channel.h:9819
Tp::PendingVariant * requestPropertyChannels() const
Definition: cli-channel.h:1611
Tp::PendingVariant * requestPropertyState() const
Definition: cli-channel.h:6790
Tp::PendingVariant * requestPropertyFileCollection() const
Definition: cli-channel.h:8856
Tp::PendingVariant * requestPropertyDBusNames() const
Definition: cli-channel.h:8249
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:772
Definition: build/TelepathyQt/_gen/types.h:3482
Tp::PendingVariant * requestPropertyContents() const
Definition: cli-channel.h:6915
QDBusPendingReply< Tp::SupportedSocketMap > GetAvailableStreamTubeTypes(int timeout=-1)
Definition: cli-channel.h:11005
QDBusPendingReply SetChatState(uint state, int timeout=-1)
Definition: cli-channel.h:1470
QDBusPendingReply< bool > GetListingRooms(int timeout=-1)
Definition: cli-channel.h:9166
Tp::PendingVariant * requestPropertyCallState() const
Definition: cli-channel.h:7012
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:9441
QList< RoomInfo > RoomInfoList
Definition: build/TelepathyQt/_gen/types.h:2690
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:2097
Tp::PendingVariant * requestPropertyMessageTypes() const
Definition: cli-channel.h:3994
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:4493
Tp::PendingVariant * requestPropertyInitialTransport() const
Definition: cli-channel.h:7166
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:9062
Tp::PendingVariant * requestPropertyFlash() const
Definition: cli-channel.h:5935
QDBusPendingReply< QDBusObjectPath > AddContent(const QString &contentName, uint contentType, uint initialDirection, int timeout=-1)
Definition: cli-channel.h:7582
Tp::PendingVariant * requestPropertyServiceName() const
Definition: cli-channel.h:8232
Tp::PendingVariant * requestPropertyInitiatorID() const
Definition: cli-channel.h:473
Tp::PendingVariant * requestPropertyAnonymityModes() const
Definition: cli-channel.h:720
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:6244
Tp::PendingVariant * requestPropertyImmutableStreams() const
Definition: cli-channel.h:10168
QDBusPendingReply< Tp::TubeInfoList > ListTubes(int timeout=-1)
Definition: cli-channel.h:11061
Tp::PendingVariant * requestPropertyInitialAudio() const
Definition: cli-channel.h:10096
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:10898
Tp::PendingVariant * requestPropertyCaptchaError() const
Definition: cli-channel.h:1085
Tp::PendingVariant * requestPropertyInitialAudioName() const
Definition: cli-channel.h:7297
Definition: cli-channel.h:5826
Tp::PendingVariant * requestPropertyHasInitialData() const
Definition: cli-channel.h:5235
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:4317
QDBusPendingReply RemoveMembers(const Tp::UIntList &contacts, const QString &message, int timeout=-1)
Definition: cli-channel.h:3172
QDBusPendingReply< uint > GetPasswordFlags(int timeout=-1)
Definition: cli-channel.h:4405
Tp::PendingVariant * requestPropertyInitialInviteeHandles() const
Definition: cli-channel.h:1755
Definition: cli-channel.h:9586
QDBusPendingReply< uint, uint > GetHoldState(int timeout=-1)
Definition: cli-channel.h:3597
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:7955
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:649
QDBusPendingReply StartTone(uint streamID, uchar event, int timeout=-1)
Definition: cli-channel.h:2133
Definition: cli-channel.h:44
QDBusPendingReply Destroy(int timeout=-1)
Definition: cli-channel.h:2443
Definition: build/TelepathyQt/_gen/types.h:320
QDBusPendingReply StartMechanism(const QString &mechanism, int timeout=-1)
Definition: cli-channel.h:5573
Tp::PendingVariant * requestPropertyDefaultRealm() const
Definition: cli-channel.h:5504
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:3730
Tp::PendingVariant * requestPropertyRemotePendingMembers() const
Definition: cli-channel.h:2784
QDBusPendingReply< Tp::UIntList > GetMessageTypes(int timeout=-1)
Definition: cli-channel.h:10670
Tp::PendingOperation * setPropertyServiceName(QString newValue)
Definition: cli-channel.h:2575
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Tp::PendingVariant * requestPropertySMSChannel() const
Definition: cli-channel.h:6002
Tp::PendingVariant * requestPropertyChatStates() const
Definition: cli-channel.h:1438
Tp::PendingVariant * requestPropertyContentHash() const
Definition: cli-channel.h:8618
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:2328
Tp::PendingVariant * requestPropertyInvitationMessage() const
Definition: cli-channel.h:1816
QDBusPendingReply< Tp::UIntList > GetMembers(int timeout=-1)
Definition: cli-channel.h:3054
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:8415
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:6423
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:799
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:6666
Tp::PendingVariant * requestPropertyMetadata() const
Definition: cli-channel.h:2593
Tp::PendingVariant * requestPropertyLimit() const
Definition: cli-channel.h:7900
Definition: build/TelepathyQt/_gen/types.h:1668
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:6271
Tp::PendingVariant * requestPropertyInviteOnly() const
Definition: cli-channel.h:4576
QDBusPendingReply AnswerCaptchas(const Tp::CaptchaAnswers &answers, int timeout=-1)
Definition: cli-channel.h:1265
Definition: build/TelepathyQt/_gen/types.h:101
QDBusPendingReply MultipleTones(const QString &tones, int timeout=-1)
Definition: cli-channel.h:2230
QDBusPendingReply Stop(int timeout=-1)
Definition: cli-channel.h:8053
Tp::PendingVariant * requestPropertyCallStateDetails() const
Definition: cli-channel.h:6983
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:5128
QDBusPendingReply StopListing(int timeout=-1)
Definition: cli-channel.h:9219
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-channel.h:164
QDBusPendingReply< Tp::CaptchaInfoList, uint, QString > GetCaptchas(int timeout=-1)
Definition: cli-channel.h:1181
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:2393
Tp::PendingVariant * requestPropertyAuthorizationIdentity() const
Definition: cli-channel.h:5406
QDBusPendingReply ListRooms(int timeout=-1)
Definition: cli-channel.h:9193
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:2479
Tp::PendingVariant * requestPropertyHardwareStreaming() const
Definition: cli-channel.h:7094
QDBusPendingReply RequestHold(bool hold, int timeout=-1)
Definition: cli-channel.h:3674
QDBusPendingReply< uint > GetSelfHandle(int timeout=-1)
Definition: cli-channel.h:3103
Tp::PendingVariant * requestPropertyPasswordProtected() const
Definition: cli-channel.h:4706
Tp::PendingVariant * requestPropertySubject() const
Definition: cli-channel.h:6501
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:10554
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:4058
QDBusPendingReply CloseTube(uint ID, int timeout=-1)
Definition: cli-channel.h:11294
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:10179
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:10963
Tp::PendingVariant * requestPropertyParameters() const
Definition: cli-channel.h:6770
Tp::PendingVariant * requestPropertyInitialServicePoint() const
Definition: cli-channel.h:6349
Definition: cli-channel.h:8144
Definition: build/TelepathyQt/_gen/types.h:2083
QDBusPendingReply Search(const Tp::ContactSearchMap &terms, int timeout=-1)
Definition: cli-channel.h:7978
Definition: cli-channel.h:3855
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:937
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:6801
QDBusPendingReply< QString > AcceptDBusTube(uint ID, int timeout=-1)
Definition: cli-channel.h:11213
Tp::PendingVariant * requestPropertyServiceName() const
Definition: cli-channel.h:2554
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:5101
QDBusPendingReply RequestStreamDirection(uint streamID, uint streamDirection, int timeout=-1)
Definition: cli-channel.h:10303
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:3866
Tp::PendingVariant * requestPropertyMemberIdentifiers() const
Definition: cli-channel.h:2821
Definition: cli-channel.h:6412
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:484
Tp::PendingVariant * requestPropertyAuthenticationMethod() const
Definition: cli-channel.h:9403
Tp::PendingVariant * requestPropertyContentType() const
Definition: cli-channel.h:8508
Tp::PendingVariant * requestPropertyTargetHandleType() const
Definition: cli-channel.h:295
Tp::PendingVariant * requestPropertyState() const
Definition: cli-channel.h:8486
QDBusPendingReply< QDBusVariant > ProvideFile(uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)
Definition: cli-channel.h:8965
QDBusPendingReply< QString > Offer(const QVariantMap &parameters, uint accesscontrol, int timeout=-1)
Definition: cli-channel.h:8322
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:1344
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:3508
Tp::PendingVariant * requestPropertyInitialOffset() const
Definition: cli-channel.h:8739
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:6132
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:5837
Tp::PendingVariant * requestPropertyOriginalChannels() const
Definition: cli-channel.h:1886
QDBusPendingReply< Tp::LocalPendingInfoList > GetLocalPendingMembersWithInfo(int timeout=-1)
Definition: cli-channel.h:3030
QDBusPendingReply< Tp::MessagePartContentMap > GetPendingMessageContent(uint messageID, const Tp::UIntList &parts, int timeout=-1)
Definition: cli-channel.h:4181
QDBusPendingReply< Tp::DBusTubeMemberList > GetDBusNames(uint ID, int timeout=-1)
Definition: cli-channel.h:11363
Tp::PendingVariant * requestPropertyCanRetryCaptcha() const
Definition: cli-channel.h:1017
Definition: build/TelepathyQt/_gen/types.h:1262
Tp::PendingVariant * requestPropertyPrivate() const
Definition: cli-channel.h:4686
Tp::PendingVariant * requestPropertyCreationTimestamp() const
Definition: cli-channel.h:5090
Tp::PendingVariant * requestPropertyCanUpdateConfiguration() const
Definition: cli-channel.h:4778
QDBusPendingReply< uint > OfferStreamTube(const QString &service, const QVariantMap &parameters, uint addressType, const QDBusVariant &address, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)
Definition: cli-channel.h:11176
QDBusPendingReply< Tp::MediaStreamInfoList > RequestStreams(uint contactHandle, const Tp::UIntList &types, int timeout=-1)
Definition: cli-channel.h:10370
Tp::PendingVariant * requestPropertyTransferredBytes() const
Definition: cli-channel.h:8712
Tp::PendingVariant * requestPropertyRequested() const
Definition: cli-channel.h:368
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:1122
QDBusPendingReply< QByteArray > GetCaptchaData(uint ID, const QString &mimeType, int timeout=-1)
Definition: cli-channel.h:1232
Tp::PendingVariant * requestPropertyCallFlags() const
Definition: cli-channel.h:7036
Tp::PendingVariant * requestPropertyHostname() const
Definition: cli-channel.h:9528
Tp::PendingVariant * requestPropertyInitialAudio() const
Definition: cli-channel.h:7240
Tp::PendingVariant * requestPropertyPasswordHint() const
Definition: cli-channel.h:4759
Definition: cli-channel.h:7698
Tp::PendingVariant * requestPropertyCaptchaErrorDetails() const
Definition: cli-channel.h:1111
Tp::PendingVariant * requestPropertySearchState() const
Definition: cli-channel.h:7870
Tp::PendingVariant * requestPropertyChannelType() const
Definition: cli-channel.h:126
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:6377
Tp::PendingVariant * requestPropertySize() const
Definition: cli-channel.h:8562
Tp::PendingVariant * requestPropertyPersistent() const
Definition: cli-channel.h:4670
QDBusPendingReply< QString > GetDBusTubeAddress(uint ID, int timeout=-1)
Definition: cli-channel.h:11328
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:6600
QDBusPendingReply< Tp::UIntList > GetRemotePendingMembers(int timeout=-1)
Definition: cli-channel.h:3079
Tp::PendingVariant * requestPropertyCurrentServicePoint() const
Definition: cli-channel.h:6366
Tp::PendingVariant * requestPropertyMaySaveResponse() const
Definition: cli-channel.h:5530
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:9949
Tp::PendingVariant * requestPropertyInitialVideo() const
Definition: cli-channel.h:10121
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:55
Tp::PendingVariant * requestPropertySASLStatus() const
Definition: cli-channel.h:5278
QDBusPendingReply Offer(uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, int timeout=-1)
Definition: cli-channel.h:9764
QDBusPendingReply< bool > ProvidePassword(const QString &password, int timeout=-1)
Definition: cli-channel.h:4439
QDBusPendingReply< Tp::MediaSessionHandlerInfoList > GetSessionHandlers(int timeout=-1)
Definition: cli-channel.h:3812
Tp::PendingVariant * requestPropertyInitiatorHandle() const
Definition: cli-channel.h:434
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:1897
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:7709
Tp::PendingVariant * requestPropertySASLErrorDetails() const
Definition: cli-channel.h:5337
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:5541
Tp::PendingVariant * requestPropertyDeferredTones() const
Definition: cli-channel.h:2086
Definition: build/TelepathyQt/_gen/types.h:287
Tp::PendingVariant * requestPropertyDefaultUsername() const
Definition: cli-channel.h:5472
QDBusPendingReply AcknowledgePendingMessages(const Tp::UIntList &IDs, int timeout=-1)
Definition: cli-channel.h:10640
Tp::PendingVariant * requestPropertySupportedContentTypes() const
Definition: cli-channel.h:3978
QDBusPendingReply Hangup(uint reason, const QString &detailedHangupReason, const QString &message, int timeout=-1)
Definition: cli-channel.h:7529
Tp::PendingVariant * requestPropertyLimit() const
Definition: cli-channel.h:4590
QDBusPendingReply< Tp::ChannelCallStateMap > GetCallStates(int timeout=-1)
Definition: cli-channel.h:885
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Definition: cli-channel.h:10543
Tp::PendingVariant * requestPropertyCanTryAgain() const
Definition: cli-channel.h:5260
QDBusPendingReply< uint, int, int > GetSMSLength(const Tp::MessagePartList &message, int timeout=-1)
Definition: cli-channel.h:6083
QDBusPendingReply SetQueued(int timeout=-1)
Definition: cli-channel.h:7442
Tp::PendingVariant * requestPropertyInitialVideoName() const
Definition: cli-channel.h:7317
QDBusPendingReply< QString > GetChannelType(int timeout=-1)
Definition: cli-channel.h:535
Tp::PendingVariant * requestPropertyInitialTones() const
Definition: cli-channel.h:2064
Definition: cli-channel.h:8404
Definition: cli-channel.h:4306
QDBusPendingReply SetRinging(int timeout=-1)
Definition: cli-channel.h:7398
Tp::PendingVariant * requestPropertyFilename() const
Definition: cli-channel.h:8534
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:1976
Tp::PendingVariant * requestPropertyCanSet() const
Definition: cli-channel.h:6589
Definition: build/TelepathyQt/_gen/types.h:1646
Definition: cli-channel.h:1965
QDBusPendingReply< Tp::UIntList > GetAvailableTubeTypes(int timeout=-1)
Definition: cli-channel.h:11032
Tp::PendingVariant * requestPropertyAnonymousID() const
Definition: cli-channel.h:761
QDBusPendingReply< Tp::MediaStreamInfoList > ListStreams(int timeout=-1)
Definition: cli-channel.h:10212
Tp::PendingVariant * requestPropertyCreator() const
Definition: cli-channel.h:5056
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:2649
Tp::PendingVariant * requestPropertyCallMembers() const
Definition: cli-channel.h:7124
Tp::PendingOperation * setPropertyURI(QString newValue)
Definition: cli-channel.h:8819
Tp::PendingVariant * requestPropertyCaptchaStatus() const
Definition: cli-channel.h:1047
Tp::PendingVariant * requestPropertyTimestamp() const
Definition: cli-channel.h:6560
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:7364
QDBusPendingReply< uint > GetGroupFlags(int timeout=-1)
Definition: cli-channel.h:2933
Tp::PendingVariant * requestPropertyModerated() const
Definition: cli-channel.h:4604
QDBusPendingReply< uint > OfferDBusTube(const QString &service, const QVariantMap &parameters, int timeout=-1)
Definition: cli-channel.h:11102
QDBusPendingReply< uint, uint > GetHandle(int timeout=-1)
Definition: cli-channel.h:572
Tp::PendingVariant * requestPropertyDescription() const
Definition: cli-channel.h:4653
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:6013
Tp::PendingVariant * requestPropertyPendingMessages() const
Definition: cli-channel.h:4033
QDBusPendingReply SetSubject(const QString &subject, int timeout=-1)
Definition: cli-channel.h:6629
QDBusPendingReply< Tp::PendingTextMessageList > ListPendingMessages(bool clear, int timeout=-1)
Definition: cli-channel.h:10714
Definition: cli-channel.h:6830
QDBusPendingReply< Tp::UIntList > GetLocalPendingMembers(int timeout=-1)
Definition: cli-channel.h:2998
QDBusPendingReply< uint, QDBusVariant > GetStreamTubeSocketAddress(uint ID, int timeout=-1)
Definition: cli-channel.h:11403
QDBusPendingReply Send(uint type, const QString &text, int timeout=-1)
Definition: cli-channel.h:10761
QDBusPendingReply More(int timeout=-1)
Definition: cli-channel.h:8007
Tp::PendingVariant * requestPropertyServer() const
Definition: cli-channel.h:9134
Tp::PendingVariant * requestPropertyVerified() const
Definition: cli-channel.h:6233
Tp::PendingVariant * requestPropertyHandleOwners() const
Definition: cli-channel.h:2740
Tp::PendingVariant * requestPropertyMutableProperties() const
Definition: cli-channel.h:4805
Tp::PendingVariant * requestPropertyService() const
Definition: cli-channel.h:9678
QDBusPendingReply< QDBusVariant > AcceptStreamTube(uint ID, uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)
Definition: cli-channel.h:11265
Tp::PendingVariant * requestPropertyInitialInviteeIDs() const
Definition: cli-channel.h:1784
Tp::PendingVariant * requestPropertyCurrentlySendingTones() const
Definition: cli-channel.h:2046
Tp::PendingVariant * requestPropertySelfHandle() const
Definition: cli-channel.h:2803
QDBusPendingReply< QDBusVariant > AcceptFile(uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, int timeout=-1)
Definition: cli-channel.h:8917
QDBusPendingReply StopTone(uint streamID, int timeout=-1)
Definition: cli-channel.h:2170
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:3795
Tp::PendingVariant * requestPropertyServer() const
Definition: cli-channel.h:5039
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:3573
Tp::PendingVariant * requestPropertyAvailableSearchKeys() const
Definition: cli-channel.h:7919
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:7774
Tp::PendingVariant * requestPropertyAnonymityMandatory() const
Definition: cli-channel.h:735
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:2832
Tp::PendingVariant * requestPropertyGroupFlags() const
Definition: cli-channel.h:2720
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyMessagePartSupportFlags() const
Definition: cli-channel.h:4008
Tp::PendingVariant * requestPropertyServerCertificate() const
Definition: cli-channel.h:9510
Definition: cli-channel.h:10887
Tp::PendingVariant * requestPropertySASLError() const
Definition: cli-channel.h:5311
Tp::PendingVariant * requestPropertyTargetHandle() const
Definition: cli-channel.h:213
QDBusPendingReply< QString > Accept(uint accesscontrol, int timeout=-1)
Definition: cli-channel.h:8360
Tp::PendingVariant * requestPropertyDeliveryReportingSupport() const
Definition: cli-channel.h:4047
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:9414
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:4845
Tp::PendingVariant * requestPropertyAvailableMechanisms() const
Definition: cli-channel.h:5209
QDBusPendingReply< QStringList > GetInterfaces(int timeout=-1)
Definition: cli-channel.h:603
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel.h:9728
QDBusPendingReply AcceptSASL(int timeout=-1)
Definition: cli-channel.h:5717
Tp::PendingVariant * requestPropertySupportedSocketTypes() const
Definition: cli-channel.h:9717
Definition: cli-channel.h:3497
Definition: build/TelepathyQt/_gen/types.h:2701
Tp::PendingVariant * requestPropertyAnonymous() const
Definition: cli-channel.h:4562
QDBusPendingReply AddMembers(const Tp::UIntList &contacts, const QString &message, int timeout=-1)
Definition: cli-channel.h:2868
Tp::PendingVariant * requestPropertyActor() const
Definition: cli-channel.h:6522
Definition: cli-channel.h:2638
Tp::PendingVariant * requestPropertySupportedAccessControls() const
Definition: cli-channel.h:8281
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:8155
Tp::PendingVariant * requestPropertyRoomName() const
Definition: cli-channel.h:5014
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:1524
Tp::PendingVariant * requestPropertyURI() const
Definition: cli-channel.h:8779
Tp::PendingVariant * requestPropertyMutableContents() const
Definition: cli-channel.h:7353
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:9597
Tp::PendingVariant * requestPropertyServer() const
Definition: cli-channel.h:7944
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:4930
QDBusPendingReply RemoveStreams(const Tp::UIntList &streams, int timeout=-1)
Definition: cli-channel.h:10252
static QLatin1String staticInterfaceName()
Definition: cli-channel.h:7801
Definition: cli-channel.h:9938
Tp::PendingVariant * requestPropertyTargetID() const
Definition: cli-channel.h:271
QDBusPendingReply Close(int timeout=-1)
Definition: cli-channel.h:504
Definition: cli-channel.h:7790


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00516.html0000644000175100017520000000752612530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::SocketAddressIP Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketAddressIP Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString address
 
ushort port
 

Detailed Description

Structure type generated from the specification.

An IP address and port.

Member Data Documentation

QString Tp::SocketAddressIP::address

Either a dotted-quad IPv4 address literal as for Socket_Address_IPv4, or an RFC2373 IPv6 address as for Socket_Address_IPv6.

ushort Tp::SocketAddressIP::port

The TCP or UDP port number.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00270.html0000644000175100017520000004100412530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceAliasingAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAliasingAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

uint GetAliasFlags (const QDBusMessage &dbusMessage)
 
QStringList RequestAliases (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
Tp::AliasMap GetAliases (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
void SetAliases (const Tp::AliasMap &aliases, const QDBusMessage &dbusMessage)
 

Signals

void AliasesChanged (const Tp::AliasPairList &aliases)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasFlags ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getAliasFlags(const Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasFlagsContextPtr &context);

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

Return a bitwise OR of flags detailing the behaviour of aliases on this connection.

Returns
An integer with a bitwise OR of flags from ConnectionAliasFlags
QStringList Tp::Service::ConnectionInterfaceAliasingAdaptor::RequestAliases ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestAliases(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceAliasingAdaptor::RequestAliasesContextPtr &context);

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

Request the value of several contacts' aliases at once.

Parameters
contacts
An array of handles representing contacts
Returns
A list of aliases in the same order as the contact handles
Tp::AliasMap Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliases ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getAliases(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasesContextPtr &context);

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

Request the value of several contacts' aliases at once. This SHOULD only return cached aliases, falling back on the contact identifier (i.e. the string corresponding to the handle) if none is present. Also if there was no cached alias, a request SHOULD be started of which the result is later signalled by AliasesChanged.

Parameters
contacts
An array of handles representing contacts
Returns
A dictionary mapping contact handles to aliases
void Tp::Service::ConnectionInterfaceAliasingAdaptor::SetAliases ( const Tp::AliasMap aliases,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setAliases(const Tp::AliasMap& aliases, const Tp::Service::ConnectionInterfaceAliasingAdaptor::SetAliasesContextPtr &context);

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

Request that the alias of the given contact be changed. Success will be indicated by emitting an AliasesChanged signal. On connections where the CONNECTION_ALIAS_FLAG_USER_SET flag is not set, this method will only ever succeed if the contact is the user's own handle (as returned by Connection.GetSelfHandle).

Parameters
aliases
A dictionary mapping integer handles of contacts to strings of the 
new alias to set.
void Tp::Service::ConnectionInterfaceAliasingAdaptor::AliasesChanged ( const Tp::AliasPairList aliases)
signal

Represents the exported D-Bus signal AliasesChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void aliasesChanged(const Tp::AliasPairList& aliases);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
aliases An array containing structs of:
  • the handle representing the contact
  • the new alias


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01231.html0000644000175100017520000002315112530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AccountManagerInterface Member List

This is the complete list of members for Tp::Client::AccountManagerInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AccountManagerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountManagerInterface
AccountManagerInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountManagerInterface
AccountManagerInterface(Tp::DBusProxy *proxy)Tp::Client::AccountManagerInterface
AccountRemoved(const QDBusObjectPath &account)Tp::Client::AccountManagerInterfacesignal
AccountValidityChanged(const QDBusObjectPath &account, bool valid)Tp::Client::AccountManagerInterfacesignal
CreateAccount(const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties, int timeout=-1)Tp::Client::AccountManagerInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::AccountManagerInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::AccountManagerInterfaceinline
requestPropertyInterfaces() const Tp::Client::AccountManagerInterfaceinline
requestPropertyInvalidAccounts() const Tp::Client::AccountManagerInterfaceinline
requestPropertySupportedAccountProperties() const Tp::Client::AccountManagerInterfaceinline
requestPropertyValidAccounts() const Tp::Client::AccountManagerInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::AccountManagerInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00628_source.html0000644000175100017520000013227412530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-channel-dispatcher.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-dispatcher.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
106  {
107  return internalRequestProperty(QLatin1String("Interfaces"));
108  }
109 
124  {
125  return internalRequestProperty(QLatin1String("SupportsRequestHints"));
126  }
127 
135  {
136  return internalRequestAllProperties();
137  }
138 
139 public Q_SLOTS:
197  inline QDBusPendingReply<QDBusObjectPath> CreateChannel(const QDBusObjectPath& account, const QVariantMap& requestedProperties, qlonglong userActionTime, const QString& preferredHandler, int timeout = -1)
198  {
199  if (!invalidationReason().isEmpty()) {
200  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
201  invalidationReason(),
202  invalidationMessage()
203  ));
204  }
205 
206  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
207  this->staticInterfaceName(), QLatin1String("CreateChannel"));
208  callMessage << QVariant::fromValue(account) << QVariant::fromValue(requestedProperties) << QVariant::fromValue(userActionTime) << QVariant::fromValue(preferredHandler);
209  return this->connection().asyncCall(callMessage, timeout);
210  }
211 
267  inline QDBusPendingReply<QDBusObjectPath> EnsureChannel(const QDBusObjectPath& account, const QVariantMap& requestedProperties, qlonglong userActionTime, const QString& preferredHandler, int timeout = -1)
268  {
269  if (!invalidationReason().isEmpty()) {
270  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
271  invalidationReason(),
272  invalidationMessage()
273  ));
274  }
275 
276  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
277  this->staticInterfaceName(), QLatin1String("EnsureChannel"));
278  callMessage << QVariant::fromValue(account) << QVariant::fromValue(requestedProperties) << QVariant::fromValue(userActionTime) << QVariant::fromValue(preferredHandler);
279  return this->connection().asyncCall(callMessage, timeout);
280  }
281 
414  inline QDBusPendingReply<QDBusObjectPath> CreateChannelWithHints(const QDBusObjectPath& account, const QVariantMap& requestedProperties, qlonglong userActionTime, const QString& preferredHandler, const QVariantMap& hints, int timeout = -1)
415  {
416  if (!invalidationReason().isEmpty()) {
417  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
418  invalidationReason(),
419  invalidationMessage()
420  ));
421  }
422 
423  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
424  this->staticInterfaceName(), QLatin1String("CreateChannelWithHints"));
425  callMessage << QVariant::fromValue(account) << QVariant::fromValue(requestedProperties) << QVariant::fromValue(userActionTime) << QVariant::fromValue(preferredHandler) << QVariant::fromValue(hints);
426  return this->connection().asyncCall(callMessage, timeout);
427  }
428 
534  inline QDBusPendingReply<QDBusObjectPath> EnsureChannelWithHints(const QDBusObjectPath& account, const QVariantMap& requestedProperties, qlonglong userActionTime, const QString& preferredHandler, const QVariantMap& hints, int timeout = -1)
535  {
536  if (!invalidationReason().isEmpty()) {
537  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
538  invalidationReason(),
539  invalidationMessage()
540  ));
541  }
542 
543  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
544  this->staticInterfaceName(), QLatin1String("EnsureChannelWithHints"));
545  callMessage << QVariant::fromValue(account) << QVariant::fromValue(requestedProperties) << QVariant::fromValue(userActionTime) << QVariant::fromValue(preferredHandler) << QVariant::fromValue(hints);
546  return this->connection().asyncCall(callMessage, timeout);
547  }
548 
628  inline QDBusPendingReply<Tp::ObjectPathList, Tp::NotDelegatedMap> DelegateChannels(const Tp::ObjectPathList& channels, qlonglong userActionTime, const QString& preferredHandler, int timeout = -1)
629  {
630  if (!invalidationReason().isEmpty()) {
631  return QDBusPendingReply<Tp::ObjectPathList, Tp::NotDelegatedMap>(QDBusMessage::createError(
632  invalidationReason(),
633  invalidationMessage()
634  ));
635  }
636 
637  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
638  this->staticInterfaceName(), QLatin1String("DelegateChannels"));
639  callMessage << QVariant::fromValue(channels) << QVariant::fromValue(userActionTime) << QVariant::fromValue(preferredHandler);
640  return this->connection().asyncCall(callMessage, timeout);
641  }
642 
678  inline QDBusPendingReply<> PresentChannel(const QDBusObjectPath& channel, qlonglong userActionTime, int timeout = -1)
679  {
680  if (!invalidationReason().isEmpty()) {
681  return QDBusPendingReply<>(QDBusMessage::createError(
682  invalidationReason(),
683  invalidationMessage()
684  ));
685  }
686 
687  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
688  this->staticInterfaceName(), QLatin1String("PresentChannel"));
689  callMessage << QVariant::fromValue(channel) << QVariant::fromValue(userActionTime);
690  return this->connection().asyncCall(callMessage, timeout);
691  }
692 
693 protected:
694  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
695 };
696 
705 {
706  Q_OBJECT
707 
708 public:
715  static inline QLatin1String staticInterfaceName()
716  {
717  return QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages1");
718  }
719 
728  const QString& busName,
729  const QString& objectPath,
730  QObject* parent = 0
731  );
732 
742  const QDBusConnection& connection,
743  const QString& busName,
744  const QString& objectPath,
745  QObject* parent = 0
746  );
747 
755 
764 
773 
781  {
782  return internalRequestAllProperties();
783  }
784 
785 public Q_SLOTS:
873  inline QDBusPendingReply<QString> SendMessage(const QDBusObjectPath& account, const QString& targetID, const Tp::MessagePartList& message, uint flags, int timeout = -1)
874  {
875  if (!invalidationReason().isEmpty()) {
876  return QDBusPendingReply<QString>(QDBusMessage::createError(
877  invalidationReason(),
878  invalidationMessage()
879  ));
880  }
881 
882  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
883  this->staticInterfaceName(), QLatin1String("SendMessage"));
884  callMessage << QVariant::fromValue(account) << QVariant::fromValue(targetID) << QVariant::fromValue(message) << QVariant::fromValue(flags);
885  return this->connection().asyncCall(callMessage, timeout);
886  }
887 
888 protected:
889  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
890 };
891 }
892 }
893 Q_DECLARE_METATYPE(Tp::Client::ChannelDispatcherInterface*)
894 Q_DECLARE_METATYPE(Tp::Client::ChannelDispatcherInterfaceMessages1Interface*)
QDBusPendingReply< QString > SendMessage(const QDBusObjectPath &account, const QString &targetID, const Tp::MessagePartList &message, uint flags, int timeout=-1)
Definition: cli-channel-dispatcher.h:873
QDBusPendingReply< QDBusObjectPath > CreateChannelWithHints(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1)
Definition: cli-channel-dispatcher.h:414
QDBusPendingReply< QDBusObjectPath > EnsureChannel(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)
Definition: cli-channel-dispatcher.h:267
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertySupportsRequestHints() const
Definition: cli-channel-dispatcher.h:123
QDBusPendingReply< QDBusObjectPath > CreateChannel(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)
Definition: cli-channel-dispatcher.h:197
Definition: cli-channel-dispatcher.h:704
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
QDBusPendingReply< Tp::ObjectPathList, Tp::NotDelegatedMap > DelegateChannels(const Tp::ObjectPathList &channels, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)
Definition: cli-channel-dispatcher.h:628
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel-dispatcher.h:134
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
static QLatin1String staticInterfaceName()
Definition: cli-channel-dispatcher.h:55
Definition: build/TelepathyQt/_gen/types.h:81
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel-dispatcher.h:780
Definition: cli-channel-dispatcher.h:44
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
QDBusPendingReply< QDBusObjectPath > EnsureChannelWithHints(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1)
Definition: cli-channel-dispatcher.h:534
QDBusPendingReply PresentChannel(const QDBusObjectPath &channel, qlonglong userActionTime, int timeout=-1)
Definition: cli-channel-dispatcher.h:678
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
static QLatin1String staticInterfaceName()
Definition: cli-channel-dispatcher.h:715
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-channel-dispatcher.h:105


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x65.html0000644000175100017520000002216512530426260023112 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- e -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00084.html0000644000175100017520000001361212530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::AddressingNormalizationMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AddressingNormalizationMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, uint >.

Public Member Functions

 AddressingNormalizationMap ()
 
 AddressingNormalizationMap (const QMap< QString, uint > &a)
 
AddressingNormalizationMapoperator= (const QMap< QString, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, uint>, but needed to have a discrete type in the Qt type system.

A map from URIs/vCard addresses to the corresponding handle.

Constructor & Destructor Documentation

Tp::AddressingNormalizationMap::AddressingNormalizationMap ( )
inline
Tp::AddressingNormalizationMap::AddressingNormalizationMap ( const QMap< QString, uint > &  a)
inline

Member Function Documentation

AddressingNormalizationMap& Tp::AddressingNormalizationMap::operator= ( const QMap< QString, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00624_source.html0000644000175100017520000100540612530426257022522 0ustar00kaffeinekaffeine00000000000000 cli-channel-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/channel.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ChannelInterface::ChannelInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ChannelInterface::ChannelInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(Closed()), NULL, NULL);
28 
29  Tp::AbstractInterface::invalidate(proxy, error, message);
30 }
31 
32 ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface(const QString& busName, const QString& objectPath, QObject *parent)
33  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
34 {
35 }
36 
37 ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
38  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
39 {
40 }
41 
43  : Tp::AbstractInterface(proxy, staticInterfaceName())
44 {
45 }
46 
48  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
49 {
50 }
51 
53  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
54 {
55 }
56 
58  const QString &error, const QString &message)
59 {
60 
61  Tp::AbstractInterface::invalidate(proxy, error, message);
62 }
63 
64 ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface(const QString& busName, const QString& objectPath, QObject *parent)
65  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
66 {
67 }
68 
69 ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
70  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
71 {
72 }
73 
75  : Tp::AbstractInterface(proxy, staticInterfaceName())
76 {
77 }
78 
80  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
81 {
82 }
83 
85  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
86 {
87 }
88 
90  const QString &error, const QString &message)
91 {
92  disconnect(this, SIGNAL(CallStateChanged(uint, uint)), NULL, NULL);
93 
94  Tp::AbstractInterface::invalidate(proxy, error, message);
95 }
96 
97 ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface(const QString& busName, const QString& objectPath, QObject *parent)
98  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
99 {
100 }
101 
102 ChannelInterfaceCaptchaAuthenticationInterface::ChannelInterfaceCaptchaAuthenticationInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
103  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
104 {
105 }
106 
108  : Tp::AbstractInterface(proxy, staticInterfaceName())
109 {
110 }
111 
113  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
114 {
115 }
116 
118  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
119 {
120 }
121 
123  const QString &error, const QString &message)
124 {
125 
126  Tp::AbstractInterface::invalidate(proxy, error, message);
127 }
128 
129 ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface(const QString& busName, const QString& objectPath, QObject *parent)
130  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
131 {
132 }
133 
134 ChannelInterfaceChatStateInterface::ChannelInterfaceChatStateInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
135  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
136 {
137 }
138 
140  : Tp::AbstractInterface(proxy, staticInterfaceName())
141 {
142 }
143 
145  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
146 {
147 }
148 
150  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
151 {
152 }
153 
155  const QString &error, const QString &message)
156 {
157  disconnect(this, SIGNAL(ChatStateChanged(uint, uint)), NULL, NULL);
158 
159  Tp::AbstractInterface::invalidate(proxy, error, message);
160 }
161 
162 ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface(const QString& busName, const QString& objectPath, QObject *parent)
163  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
164 {
165 }
166 
167 ChannelInterfaceConferenceInterface::ChannelInterfaceConferenceInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
168  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
169 {
170 }
171 
173  : Tp::AbstractInterface(proxy, staticInterfaceName())
174 {
175 }
176 
178  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
179 {
180 }
181 
183  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
184 {
185 }
186 
188  const QString &error, const QString &message)
189 {
190  disconnect(this, SIGNAL(ChannelMerged(const QDBusObjectPath&, uint, const QVariantMap&)), NULL, NULL);
191  disconnect(this, SIGNAL(ChannelRemoved(const QDBusObjectPath&, const QVariantMap&)), NULL, NULL);
192 
193  Tp::AbstractInterface::invalidate(proxy, error, message);
194 }
195 
196 ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface(const QString& busName, const QString& objectPath, QObject *parent)
197  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
198 {
199 }
200 
201 ChannelInterfaceDTMFInterface::ChannelInterfaceDTMFInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
202  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
203 {
204 }
205 
207  : Tp::AbstractInterface(proxy, staticInterfaceName())
208 {
209 }
210 
212  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
213 {
214 }
215 
217  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
218 {
219 }
220 
222  const QString &error, const QString &message)
223 {
224  disconnect(this, SIGNAL(TonesDeferred(const QString&)), NULL, NULL);
225  disconnect(this, SIGNAL(SendingTones(const QString&)), NULL, NULL);
226  disconnect(this, SIGNAL(StoppedTones(bool)), NULL, NULL);
227 
228  Tp::AbstractInterface::invalidate(proxy, error, message);
229 }
230 
231 ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface(const QString& busName, const QString& objectPath, QObject *parent)
232  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
233 {
234 }
235 
236 ChannelInterfaceDestroyableInterface::ChannelInterfaceDestroyableInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
237  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
238 {
239 }
240 
242  : Tp::AbstractInterface(proxy, staticInterfaceName())
243 {
244 }
245 
247  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
248 {
249 }
250 
252  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
253 {
254 }
255 
257  const QString &error, const QString &message)
258 {
259 
260  Tp::AbstractInterface::invalidate(proxy, error, message);
261 }
262 
263 ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface(const QString& busName, const QString& objectPath, QObject *parent)
264  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
265 {
266 }
267 
268 ChannelInterfaceFileTransferMetadataInterface::ChannelInterfaceFileTransferMetadataInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
269  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
270 {
271 }
272 
274  : Tp::AbstractInterface(proxy, staticInterfaceName())
275 {
276 }
277 
279  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
280 {
281 }
282 
284  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
285 {
286 }
287 
289  const QString &error, const QString &message)
290 {
291 
292  Tp::AbstractInterface::invalidate(proxy, error, message);
293 }
294 
295 ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface(const QString& busName, const QString& objectPath, QObject *parent)
296  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
297 {
298 }
299 
300 ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
301  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
302 {
303 }
304 
306  : Tp::AbstractInterface(proxy, staticInterfaceName())
307 {
308 }
309 
311  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
312 {
313 }
314 
316  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
317 {
318 }
319 
321  const QString &error, const QString &message)
322 {
323  disconnect(this, SIGNAL(HandleOwnersChanged(const Tp::HandleOwnerMap&, const Tp::UIntList&)), NULL, NULL);
324  disconnect(this, SIGNAL(HandleOwnersChangedDetailed(const Tp::HandleOwnerMap&, const Tp::UIntList&, const Tp::HandleIdentifierMap&)), NULL, NULL);
325  disconnect(this, SIGNAL(SelfHandleChanged(uint)), NULL, NULL);
326  disconnect(this, SIGNAL(SelfContactChanged(uint, const QString&)), NULL, NULL);
327  disconnect(this, SIGNAL(GroupFlagsChanged(uint, uint)), NULL, NULL);
328  disconnect(this, SIGNAL(MembersChanged(const QString&, const Tp::UIntList&, const Tp::UIntList&, const Tp::UIntList&, const Tp::UIntList&, uint, uint)), NULL, NULL);
329  disconnect(this, SIGNAL(MembersChangedDetailed(const Tp::UIntList&, const Tp::UIntList&, const Tp::UIntList&, const Tp::UIntList&, const QVariantMap&)), NULL, NULL);
330 
331  Tp::AbstractInterface::invalidate(proxy, error, message);
332 }
333 
334 ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface(const QString& busName, const QString& objectPath, QObject *parent)
335  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
336 {
337 }
338 
339 ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
340  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
341 {
342 }
343 
345  : Tp::AbstractInterface(proxy, staticInterfaceName())
346 {
347 }
348 
350  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
351 {
352 }
353 
355  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
356 {
357 }
358 
360  const QString &error, const QString &message)
361 {
362  disconnect(this, SIGNAL(HoldStateChanged(uint, uint)), NULL, NULL);
363 
364  Tp::AbstractInterface::invalidate(proxy, error, message);
365 }
366 
367 ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface(const QString& busName, const QString& objectPath, QObject *parent)
368  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
369 {
370 }
371 
372 ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
373  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
374 {
375 }
376 
378  : Tp::AbstractInterface(proxy, staticInterfaceName())
379 {
380 }
381 
383  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
384 {
385 }
386 
388  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
389 {
390 }
391 
393  const QString &error, const QString &message)
394 {
395  disconnect(this, SIGNAL(NewSessionHandler(const QDBusObjectPath&, const QString&)), NULL, NULL);
396 
397  Tp::AbstractInterface::invalidate(proxy, error, message);
398 }
399 
400 ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface(const QString& busName, const QString& objectPath, QObject *parent)
401  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
402 {
403 }
404 
405 ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
406  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
407 {
408 }
409 
411  : Tp::AbstractInterface(proxy, staticInterfaceName())
412 {
413 }
414 
416  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
417 {
418 }
419 
421  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
422 {
423 }
424 
426  const QString &error, const QString &message)
427 {
428  disconnect(this, SIGNAL(MessageSent(const Tp::MessagePartList&, uint, const QString&)), NULL, NULL);
429  disconnect(this, SIGNAL(PendingMessagesRemoved(const Tp::UIntList&)), NULL, NULL);
430  disconnect(this, SIGNAL(MessageReceived(const Tp::MessagePartList&)), NULL, NULL);
431 
432  Tp::AbstractInterface::invalidate(proxy, error, message);
433 }
434 
435 ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface(const QString& busName, const QString& objectPath, QObject *parent)
436  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
437 {
438 }
439 
440 ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
441  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
442 {
443 }
444 
446  : Tp::AbstractInterface(proxy, staticInterfaceName())
447 {
448 }
449 
451  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
452 {
453 }
454 
456  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
457 {
458 }
459 
461  const QString &error, const QString &message)
462 {
463  disconnect(this, SIGNAL(PasswordFlagsChanged(uint, uint)), NULL, NULL);
464 
465  Tp::AbstractInterface::invalidate(proxy, error, message);
466 }
467 
468 ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface(const QString& busName, const QString& objectPath, QObject *parent)
469  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
470 {
471 }
472 
473 ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
474  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
475 {
476 }
477 
479  : Tp::AbstractInterface(proxy, staticInterfaceName())
480 {
481 }
482 
484  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
485 {
486 }
487 
489  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
490 {
491 }
492 
494  const QString &error, const QString &message)
495 {
496 
497  Tp::AbstractInterface::invalidate(proxy, error, message);
498 }
499 
500 ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface(const QString& busName, const QString& objectPath, QObject *parent)
501  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
502 {
503 }
504 
505 ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
506  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
507 {
508 }
509 
511  : Tp::AbstractInterface(proxy, staticInterfaceName())
512 {
513 }
514 
516  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
517 {
518 }
519 
521  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
522 {
523 }
524 
526  const QString &error, const QString &message)
527 {
528 
529  Tp::AbstractInterface::invalidate(proxy, error, message);
530 }
531 
532 ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface(const QString& busName, const QString& objectPath, QObject *parent)
533  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
534 {
535 }
536 
537 ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
538  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
539 {
540 }
541 
543  : Tp::AbstractInterface(proxy, staticInterfaceName())
544 {
545 }
546 
548  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
549 {
550 }
551 
553  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
554 {
555 }
556 
558  const QString &error, const QString &message)
559 {
560  disconnect(this, SIGNAL(SASLStatusChanged(uint, const QString&, const QVariantMap&)), NULL, NULL);
561  disconnect(this, SIGNAL(NewChallenge(const QByteArray&)), NULL, NULL);
562 
563  Tp::AbstractInterface::invalidate(proxy, error, message);
564 }
565 
566 ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface(const QString& busName, const QString& objectPath, QObject *parent)
567  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
568 {
569 }
570 
571 ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
572  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
573 {
574 }
575 
577  : Tp::AbstractInterface(proxy, staticInterfaceName())
578 {
579 }
580 
582  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
583 {
584 }
585 
587  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
588 {
589 }
590 
592  const QString &error, const QString &message)
593 {
594  disconnect(this, SIGNAL(SMSChannelChanged(bool)), NULL, NULL);
595 
596  Tp::AbstractInterface::invalidate(proxy, error, message);
597 }
598 
599 ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface(const QString& busName, const QString& objectPath, QObject *parent)
600  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
601 {
602 }
603 
604 ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
605  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
606 {
607 }
608 
610  : Tp::AbstractInterface(proxy, staticInterfaceName())
611 {
612 }
613 
615  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
616 {
617 }
618 
620  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
621 {
622 }
623 
625  const QString &error, const QString &message)
626 {
627 
628  Tp::AbstractInterface::invalidate(proxy, error, message);
629 }
630 
631 ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface(const QString& busName, const QString& objectPath, QObject *parent)
632  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
633 {
634 }
635 
636 ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
637  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
638 {
639 }
640 
642  : Tp::AbstractInterface(proxy, staticInterfaceName())
643 {
644 }
645 
647  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
648 {
649 }
650 
652  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
653 {
654 }
655 
657  const QString &error, const QString &message)
658 {
659  disconnect(this, SIGNAL(ServicePointChanged(const Tp::ServicePoint&)), NULL, NULL);
660 
661  Tp::AbstractInterface::invalidate(proxy, error, message);
662 }
663 
664 ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface(const QString& busName, const QString& objectPath, QObject *parent)
665  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
666 {
667 }
668 
669 ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
670  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
671 {
672 }
673 
675  : Tp::AbstractInterface(proxy, staticInterfaceName())
676 {
677 }
678 
680  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
681 {
682 }
683 
685  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
686 {
687 }
688 
690  const QString &error, const QString &message)
691 {
692 
693  Tp::AbstractInterface::invalidate(proxy, error, message);
694 }
695 
696 ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface(const QString& busName, const QString& objectPath, QObject *parent)
697  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
698 {
699 }
700 
701 ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
702  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
703 {
704 }
705 
707  : Tp::AbstractInterface(proxy, staticInterfaceName())
708 {
709 }
710 
712  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
713 {
714 }
715 
717  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
718 {
719 }
720 
722  const QString &error, const QString &message)
723 {
724  disconnect(this, SIGNAL(TubeChannelStateChanged(uint)), NULL, NULL);
725 
726  Tp::AbstractInterface::invalidate(proxy, error, message);
727 }
728 
729 ChannelTypeCallInterface::ChannelTypeCallInterface(const QString& busName, const QString& objectPath, QObject *parent)
730  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
731 {
732 }
733 
734 ChannelTypeCallInterface::ChannelTypeCallInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
735  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
736 {
737 }
738 
740  : Tp::AbstractInterface(proxy, staticInterfaceName())
741 {
742 }
743 
745  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
746 {
747 }
748 
750  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
751 {
752 }
753 
755  const QString &error, const QString &message)
756 {
757  disconnect(this, SIGNAL(ContentAdded(const QDBusObjectPath&)), NULL, NULL);
758  disconnect(this, SIGNAL(ContentRemoved(const QDBusObjectPath&, const Tp::CallStateReason&)), NULL, NULL);
759  disconnect(this, SIGNAL(CallStateChanged(uint, uint, const Tp::CallStateReason&, const QVariantMap&)), NULL, NULL);
760  disconnect(this, SIGNAL(CallMembersChanged(const Tp::CallMemberMap&, const Tp::HandleIdentifierMap&, const Tp::UIntList&, const Tp::CallStateReason&)), NULL, NULL);
761 
762  Tp::AbstractInterface::invalidate(proxy, error, message);
763 }
764 
765 ChannelTypeContactListInterface::ChannelTypeContactListInterface(const QString& busName, const QString& objectPath, QObject *parent)
766  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
767 {
768 }
769 
770 ChannelTypeContactListInterface::ChannelTypeContactListInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
771  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
772 {
773 }
774 
776  : Tp::AbstractInterface(proxy, staticInterfaceName())
777 {
778 }
779 
781  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
782 {
783 }
784 
786  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
787 {
788 }
789 
791  const QString &error, const QString &message)
792 {
793 
794  Tp::AbstractInterface::invalidate(proxy, error, message);
795 }
796 
797 ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface(const QString& busName, const QString& objectPath, QObject *parent)
798  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
799 {
800 }
801 
802 ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
803  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
804 {
805 }
806 
808  : Tp::AbstractInterface(proxy, staticInterfaceName())
809 {
810 }
811 
813  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
814 {
815 }
816 
818  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
819 {
820 }
821 
823  const QString &error, const QString &message)
824 {
825  disconnect(this, SIGNAL(SearchStateChanged(uint, const QString&, const QVariantMap&)), NULL, NULL);
826  disconnect(this, SIGNAL(SearchResultReceived(const Tp::ContactSearchResultMap&)), NULL, NULL);
827 
828  Tp::AbstractInterface::invalidate(proxy, error, message);
829 }
830 
831 ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface(const QString& busName, const QString& objectPath, QObject *parent)
832  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
833 {
834 }
835 
836 ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
837  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
838 {
839 }
840 
842  : Tp::AbstractInterface(proxy, staticInterfaceName())
843 {
844 }
845 
847  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
848 {
849 }
850 
852  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
853 {
854 }
855 
857  const QString &error, const QString &message)
858 {
859  disconnect(this, SIGNAL(DBusNamesChanged(const Tp::DBusTubeParticipants&, const Tp::UIntList&)), NULL, NULL);
860 
861  Tp::AbstractInterface::invalidate(proxy, error, message);
862 }
863 
864 ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface(const QString& busName, const QString& objectPath, QObject *parent)
865  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
866 {
867 }
868 
869 ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
870  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
871 {
872 }
873 
875  : Tp::AbstractInterface(proxy, staticInterfaceName())
876 {
877 }
878 
880  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
881 {
882 }
883 
885  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
886 {
887 }
888 
890  const QString &error, const QString &message)
891 {
892  disconnect(this, SIGNAL(FileTransferStateChanged(uint, uint)), NULL, NULL);
893  disconnect(this, SIGNAL(TransferredBytesChanged(qulonglong)), NULL, NULL);
894  disconnect(this, SIGNAL(InitialOffsetDefined(qulonglong)), NULL, NULL);
895  disconnect(this, SIGNAL(URIDefined(const QString&)), NULL, NULL);
896 
897  Tp::AbstractInterface::invalidate(proxy, error, message);
898 }
899 
900 ChannelTypeRoomListInterface::ChannelTypeRoomListInterface(const QString& busName, const QString& objectPath, QObject *parent)
901  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
902 {
903 }
904 
905 ChannelTypeRoomListInterface::ChannelTypeRoomListInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
906  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
907 {
908 }
909 
911  : Tp::AbstractInterface(proxy, staticInterfaceName())
912 {
913 }
914 
916  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
917 {
918 }
919 
921  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
922 {
923 }
924 
926  const QString &error, const QString &message)
927 {
928  disconnect(this, SIGNAL(GotRooms(const Tp::RoomInfoList&)), NULL, NULL);
929  disconnect(this, SIGNAL(ListingRooms(bool)), NULL, NULL);
930 
931  Tp::AbstractInterface::invalidate(proxy, error, message);
932 }
933 
934 ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface(const QString& busName, const QString& objectPath, QObject *parent)
935  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
936 {
937 }
938 
939 ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
940  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
941 {
942 }
943 
945  : Tp::AbstractInterface(proxy, staticInterfaceName())
946 {
947 }
948 
950  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
951 {
952 }
953 
955  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
956 {
957 }
958 
960  const QString &error, const QString &message)
961 {
962 
963  Tp::AbstractInterface::invalidate(proxy, error, message);
964 }
965 
966 ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface(const QString& busName, const QString& objectPath, QObject *parent)
967  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
968 {
969 }
970 
971 ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
972  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
973 {
974 }
975 
977  : Tp::AbstractInterface(proxy, staticInterfaceName())
978 {
979 }
980 
982  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
983 {
984 }
985 
987  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
988 {
989 }
990 
992  const QString &error, const QString &message)
993 {
994 
995  Tp::AbstractInterface::invalidate(proxy, error, message);
996 }
997 
998 ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface(const QString& busName, const QString& objectPath, QObject *parent)
999  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
1000 {
1001 }
1002 
1003 ChannelTypeStreamTubeInterface::ChannelTypeStreamTubeInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
1004  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
1005 {
1006 }
1007 
1009  : Tp::AbstractInterface(proxy, staticInterfaceName())
1010 {
1011 }
1012 
1014  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
1015 {
1016 }
1017 
1019  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
1020 {
1021 }
1022 
1024  const QString &error, const QString &message)
1025 {
1026  disconnect(this, SIGNAL(NewRemoteConnection(uint, const QDBusVariant&, uint)), NULL, NULL);
1027  disconnect(this, SIGNAL(NewLocalConnection(uint)), NULL, NULL);
1028  disconnect(this, SIGNAL(ConnectionClosed(uint, const QString&, const QString&)), NULL, NULL);
1029 
1030  Tp::AbstractInterface::invalidate(proxy, error, message);
1031 }
1032 
1033 ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface(const QString& busName, const QString& objectPath, QObject *parent)
1034  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
1035 {
1036 }
1037 
1038 ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
1039  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
1040 {
1041 }
1042 
1044  : Tp::AbstractInterface(proxy, staticInterfaceName())
1045 {
1046 }
1047 
1049  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
1050 {
1051 }
1052 
1054  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
1055 {
1056 }
1057 
1059  const QString &error, const QString &message)
1060 {
1061  disconnect(this, SIGNAL(StreamAdded(uint, uint, uint)), NULL, NULL);
1062  disconnect(this, SIGNAL(StreamDirectionChanged(uint, uint, uint)), NULL, NULL);
1063  disconnect(this, SIGNAL(StreamError(uint, uint, const QString&)), NULL, NULL);
1064  disconnect(this, SIGNAL(StreamRemoved(uint)), NULL, NULL);
1065  disconnect(this, SIGNAL(StreamStateChanged(uint, uint)), NULL, NULL);
1066 
1067  Tp::AbstractInterface::invalidate(proxy, error, message);
1068 }
1069 
1070 ChannelTypeTextInterface::ChannelTypeTextInterface(const QString& busName, const QString& objectPath, QObject *parent)
1071  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
1072 {
1073 }
1074 
1075 ChannelTypeTextInterface::ChannelTypeTextInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
1076  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
1077 {
1078 }
1079 
1081  : Tp::AbstractInterface(proxy, staticInterfaceName())
1082 {
1083 }
1084 
1086  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
1087 {
1088 }
1089 
1091  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
1092 {
1093 }
1094 
1096  const QString &error, const QString &message)
1097 {
1098  disconnect(this, SIGNAL(LostMessage()), NULL, NULL);
1099  disconnect(this, SIGNAL(Received(uint, uint, uint, uint, uint, const QString&)), NULL, NULL);
1100  disconnect(this, SIGNAL(SendError(uint, uint, uint, const QString&)), NULL, NULL);
1101  disconnect(this, SIGNAL(Sent(uint, uint, const QString&)), NULL, NULL);
1102 
1103  Tp::AbstractInterface::invalidate(proxy, error, message);
1104 }
1105 
1106 ChannelTypeTubesInterface::ChannelTypeTubesInterface(const QString& busName, const QString& objectPath, QObject *parent)
1107  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
1108 {
1109 }
1110 
1111 ChannelTypeTubesInterface::ChannelTypeTubesInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
1112  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
1113 {
1114 }
1115 
1117  : Tp::AbstractInterface(proxy, staticInterfaceName())
1118 {
1119 }
1120 
1122  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
1123 {
1124 }
1125 
1127  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
1128 {
1129 }
1130 
1132  const QString &error, const QString &message)
1133 {
1134  disconnect(this, SIGNAL(NewTube(uint, uint, uint, const QString&, const QVariantMap&, uint)), NULL, NULL);
1135  disconnect(this, SIGNAL(TubeStateChanged(uint, uint)), NULL, NULL);
1136  disconnect(this, SIGNAL(TubeClosed(uint)), NULL, NULL);
1137  disconnect(this, SIGNAL(DBusNamesChanged(uint, const Tp::DBusTubeMemberList&, const Tp::UIntList&)), NULL, NULL);
1138  disconnect(this, SIGNAL(StreamTubeNewConnection(uint, uint)), NULL, NULL);
1139 
1140  Tp::AbstractInterface::invalidate(proxy, error, message);
1141 }
1142 }
1143 }
ChannelInterfaceFileTransferMetadataInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:263
void Received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text)
QList< DBusTubeMember > DBusTubeMemberList
Definition: build/TelepathyQt/_gen/types.h:1430
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:822
ChannelInterfaceSecurableInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:599
void ConnectionClosed(uint connectionID, const QString &error, const QString &message)
ChannelInterfaceDestroyableInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:231
ChannelInterfaceSASLAuthenticationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:532
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
ChannelInterfaceMessagesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:400
void ServicePointChanged(const Tp::ServicePoint &servicePoint)
ChannelInterfaceMediaSignallingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:367
Definition: build/TelepathyQt/_gen/types.h:1443
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:187
ChannelInterfaceSMSInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:566
void PendingMessagesRemoved(const Tp::UIntList &messageIDs)
void ChannelRemoved(const QDBusObjectPath &channel, const QVariantMap &details)
Definition: build/TelepathyQt/_gen/types.h:3482
ChannelInterfaceTubeInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:696
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:320
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:525
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:392
void SearchStateChanged(uint state, const QString &error, const QVariantMap &details)
void TonesDeferred(const QString &tones)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:557
QList< RoomInfo > RoomInfoList
Definition: build/TelepathyQt/_gen/types.h:2690
ChannelInterfaceCaptchaAuthenticationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:97
void NewTube(uint ID, uint initiator, uint type, const QString &service, const QVariantMap &parameters, uint state)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:721
void MessageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken)
ChannelTypeCallInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:729
void ChannelMerged(const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:656
Definition: cli-channel.h:44
void HoldStateChanged(uint holdState, uint reason)
Definition: build/TelepathyQt/_gen/types.h:320
void CallStateChanged(uint contact, uint state)
ChannelInterfaceServicePointInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:631
void SASLStatusChanged(uint status, const QString &reason, const QVariantMap &details)
ChannelTypeFileTransferInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:864
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Definition: build/TelepathyQt/_gen/types.h:1668
void SendError(uint error, uint timestamp, uint type, const QString &text)
void Sent(uint timestamp, uint type, const QString &text)
Definition: build/TelepathyQt/_gen/types.h:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:624
void SendingTones(const QString &tones)
void MembersChanged(const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason)
void StreamDirectionChanged(uint streamID, uint streamDirection, uint pendingFlags)
ChannelInterfaceHoldInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:334
void DBusNamesChanged(const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed)
ChannelInterfaceRoomInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:500
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:256
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:1131
void MessageReceived(const Tp::MessagePartList &message)
ChannelTypeServerTLSConnectionInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:966
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:925
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:460
ChannelTypeTextInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:1070
ChannelTypeDBusTubeInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:831
void StreamError(uint streamID, uint errorCode, const QString &message)
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:790
void NewLocalConnection(uint connectionID)
void GroupFlagsChanged(uint added, uint removed)
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
void ChatStateChanged(uint contact, uint state)
ChannelInterfaceChatStateInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:129
ChannelInterfacePasswordInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:435
void SearchResultReceived(const Tp::ContactSearchResultMap &result)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:493
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:122
void StreamTubeNewConnection(uint ID, uint handle)
void MembersChangedDetailed(const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details)
void TubeStateChanged(uint ID, uint state)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:288
void HandleOwnersChangedDetailed(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers)
void PasswordFlagsChanged(uint added, uint removed)
ChannelInterfaceSubjectInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:664
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:89
ChannelInterfaceGroupInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:295
void CallStateChanged(uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails)
Definition: build/TelepathyQt/_gen/types.h:287
void SelfContactChanged(uint selfHandle, const QString &selfID)
void NewSessionHandler(const QDBusObjectPath &sessionHandler, const QString &sessionType)
void DBusNamesChanged(uint ID, const Tp::DBusTubeMemberList &added, const Tp::UIntList &removed)
ChannelTypeStreamTubeInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:998
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:1058
ChannelInterfaceCallStateInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:64
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:689
Definition: build/TelepathyQt/_gen/types.h:1646
ChannelTypeStreamedMediaInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:1033
void ContentAdded(const QDBusObjectPath &content)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:591
ChannelInterfaceRoomConfigInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:468
void StreamStateChanged(uint streamID, uint streamState)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:991
ChannelInterfaceConferenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:162
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:959
ChannelTypeRoomListInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:900
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:1095
ChannelTypeTubesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:1106
void StreamAdded(uint streamID, uint contactHandle, uint streamType)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:221
void ContentRemoved(const QDBusObjectPath &content, const Tp::CallStateReason &reason)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:425
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:856
void GotRooms(const Tp::RoomInfoList &rooms)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:154
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:359
void FileTransferStateChanged(uint state, uint reason)
ChannelInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:9
ChannelInterfaceAnonymityInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:32
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:1023
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:57
Definition: build/TelepathyQt/_gen/types.h:2701
void TransferredBytesChanged(qulonglong count)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:24
void NewRemoteConnection(uint handle, const QDBusVariant &connectionParam, uint connectionID)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:889
ChannelTypeServerAuthenticationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:934
ChannelTypeContactListInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:765
void NewChallenge(const QByteArray &challengeData)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-body.hpp:754
void InitialOffsetDefined(qulonglong initialOffset)
ChannelTypeContactSearchInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:797
ChannelInterfaceDTMFInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-body.hpp:196
void HandleOwnersChanged(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed)
void CallMembersChanged(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01045.html0000644000175100017520000001227312530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::GenericPropertyFilter< T > Member List

This is the complete list of members for Tp::GenericPropertyFilter< T >, including all inherited members.

addProperty(const QString &propertyName, const QVariant &propertyValue)Tp::GenericPropertyFilter< T >inline
Filter()Tp::Filter< T >inlineprotected
filter() const Tp::GenericPropertyFilter< T >inline
GenericPropertyFilter()Tp::GenericPropertyFilter< T >inlineprotected
isValid() const Tp::GenericPropertyFilter< T >inlinevirtual
matches(const SharedPtr< T > &t) const Tp::GenericPropertyFilter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
setProperties(const QVariantMap &filter)Tp::GenericPropertyFilter< T >inline
~Filter()Tp::Filter< T >inlinevirtual
~GenericPropertyFilter()Tp::GenericPropertyFilter< T >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions.html0000644000175100017520000010603412530426260022326 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- a -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00399.html0000644000175100017520000002361312530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1, Arg2, Arg3)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor3 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3>
typedef R(T::* Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >::FunctionType)(Arg1, Arg2, Arg3)
template<class R, class T, class Arg1, class Arg2, class Arg3>
typedef R Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3>
Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >::MemberFunctor3 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3>
ResultType Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3 
) const
inline

Member Data Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3>
T* Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >::object
template<class R, class T, class Arg1, class Arg2, class Arg3>
FunctionType Tp::MemberFunctor3< R, T, Arg1, Arg2, Arg3 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00143.html0000644000175100017520000010162112530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/CallContent>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Remove (int timeout=-1)
 

Signals

void StreamsAdded (const Tp::ObjectPathList &streams)
 
void StreamsRemoved (const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallContentInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyName () const
 
Tp::PendingVariantrequestPropertyType () const
 
Tp::PendingVariantrequestPropertyDisposition () const
 
Tp::PendingVariantrequestPropertyStreams () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content".

Constructor & Destructor Documentation

Tp::Client::CallContentInterface::CallContentInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterface::CallContentInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterface::CallContentInterface ( Tp::DBusProxy proxy)

Creates a CallContentInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::CallContentInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

Extra interfaces provided by this content, such as CallContentInterfaceMediaInterface , ChannelInterfaceHoldInterface or CallInterfaceMuteInterface . This SHOULD NOT include the Content interface itself, and cannot change once the content has been created.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterface::requestPropertyName ( ) const
inline

Asynchronous getter for the remote object property Name of type QString.

The name of the content.

The content name property should be meaningful, so should be given a name which is significant to the user. The name could be the "audio" or "video" string localized, or perhaps include some string identifying the source, such as a webcam identifier.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterface::requestPropertyType ( ) const
inline

Asynchronous getter for the remote object property Type of type uint.

The media type of this content.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterface::requestPropertyDisposition ( ) const
inline

Asynchronous getter for the remote object property Disposition of type uint.

The disposition of this content.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterface::requestPropertyStreams ( ) const
inline

Asynchronous getter for the remote object property Streams of type Tp::ObjectPathList.

The list of CallStreamInterface objects that exist in this content.

In a conference call multiple parties can share one media content (say, audio), but the streaming of that media can either be shared or separate. For example, in a multicast conference all contacts would share one stream, while in a Muji conference there would be a stream for each participant.

Change notification is through the StreamsAdded() and StreamsRemoved() signals.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallContentInterface::Remove ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Remove on the remote object.

Remove the content from the call. This will cause Call1.ContentRemoved((self_handle, User_Requested, "", "")) to be emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::CallContentInterface::StreamsAdded ( const Tp::ObjectPathList streams)
signal

Represents the signal StreamsAdded on the remote object.

Emitted when streams are added to a call.

Parameters
streams
The Streams which were added.
void Tp::Client::CallContentInterface::StreamsRemoved ( const Tp::ObjectPathList streams,
const Tp::CallStateReason reason 
)
signal

Represents the signal StreamsRemoved on the remote object.

Emitted when streams are removed from a call

Parameters
streams
The Streams which were removed.
reason
Why the content was removed.
void Tp::Client::CallContentInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00620_source.html0000644000175100017520000006027012530426257022515 0ustar00kaffeinekaffeine00000000000000 cli-call-stream-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-stream-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/call-stream.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 CallStreamInterface::CallStreamInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 CallStreamInterface::CallStreamInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(RemoteMembersChanged(const Tp::ContactSendingStateMap&, const Tp::HandleIdentifierMap&, const Tp::UIntList&, const Tp::CallStateReason&)), NULL, NULL);
28  disconnect(this, SIGNAL(LocalSendingStateChanged(uint, const Tp::CallStateReason&)), NULL, NULL);
29 
30  Tp::AbstractInterface::invalidate(proxy, error, message);
31 }
32 
33 CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface(const QString& busName, const QString& objectPath, QObject *parent)
34  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
35 {
36 }
37 
38 CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
39  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
40 {
41 }
42 
44  : Tp::AbstractInterface(proxy, staticInterfaceName())
45 {
46 }
47 
49  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
50 {
51 }
52 
54  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
55 {
56 }
57 
59  const QString &error, const QString &message)
60 {
61  disconnect(this, SIGNAL(SendingStateChanged(uint)), NULL, NULL);
62  disconnect(this, SIGNAL(ReceivingStateChanged(uint)), NULL, NULL);
63  disconnect(this, SIGNAL(LocalCandidatesAdded(const Tp::CandidateList&)), NULL, NULL);
64  disconnect(this, SIGNAL(LocalCredentialsChanged(const QString&, const QString&)), NULL, NULL);
65  disconnect(this, SIGNAL(RelayInfoChanged(const Tp::StringVariantMapList&)), NULL, NULL);
66  disconnect(this, SIGNAL(STUNServersChanged(const Tp::SocketAddressIPList&)), NULL, NULL);
67  disconnect(this, SIGNAL(ServerInfoRetrieved()), NULL, NULL);
68  disconnect(this, SIGNAL(EndpointsChanged(const Tp::ObjectPathList&, const Tp::ObjectPathList&)), NULL, NULL);
69  disconnect(this, SIGNAL(ICERestartRequested()), NULL, NULL);
70 
71  Tp::AbstractInterface::invalidate(proxy, error, message);
72 }
73 }
74 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
QList< Candidate > CandidateList
Definition: build/TelepathyQt/_gen/types.h:413
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-stream-body.hpp:58
void LocalCredentialsChanged(const QString &username, const QString &password)
QList< StringVariantMap > StringVariantMapList
Definition: build/TelepathyQt/_gen/types.h:3087
Definition: build/TelepathyQt/_gen/types.h:320
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Definition: build/TelepathyQt/_gen/types.h:101
void EndpointsChanged(const Tp::ObjectPathList &endpointsAdded, const Tp::ObjectPathList &endpointsRemoved)
void LocalSendingStateChanged(uint state, const Tp::CallStateReason &reason)
QList< SocketAddressIP > SocketAddressIPList
Definition: build/TelepathyQt/_gen/types.h:2876
Definition: cli-call-stream.h:44
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
Definition: build/TelepathyQt/_gen/types.h:81
CallStreamInterfaceMediaInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-stream-body.hpp:33
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-stream-body.hpp:24
void STUNServersChanged(const Tp::SocketAddressIPList &servers)
Definition: build/TelepathyQt/_gen/types.h:1646
void RelayInfoChanged(const Tp::StringVariantMapList &relayInfo)
void RemoteMembersChanged(const Tp::ContactSendingStateMap &updates, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)
CallStreamInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-stream-body.hpp:9
Definition: build/TelepathyQt/_gen/types.h:1284
void LocalCandidatesAdded(const Tp::CandidateList &candidates)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01104.html0000644000175100017520000001344412530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleObserver Member List

This is the complete list of members for Tp::SimpleObserver, including all inherited members.

account() const Tp::SimpleObserver
channelFilter() const Tp::SimpleObserver
channelInvalidated(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage)Tp::SimpleObserversignal
channels() const Tp::SimpleObserver
contactIdentifier() const Tp::SimpleObserver
create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >())Tp::SimpleObserverstatic
create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const ContactPtr &contact, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >())Tp::SimpleObserverstatic
create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >())Tp::SimpleObserverstatic
extraChannelFeatures() const Tp::SimpleObserver
newChannels(const QList< Tp::ChannelPtr > &channels)Tp::SimpleObserversignal
RefCounted()Tp::RefCountedinline
~RefCounted()Tp::RefCountedinlinevirtual
~SimpleObserver()Tp::SimpleObservervirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00959.html0000644000175100017520000002434012530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseProtocolAddressingInterface Member List

This is the complete list of members for Tp::BaseProtocolAddressingInterface, including all inherited members.

AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
AbstractProtocolInterface(const QString &interfaceName)Tp::AbstractProtocolInterface
addressableUriSchemes() const Tp::BaseProtocolAddressingInterface
addressableVCardFields() const Tp::BaseProtocolAddressingInterface
BaseProtocolAddressingInterface()Tp::BaseProtocolAddressingInterfaceprotected
create()Tp::BaseProtocolAddressingInterfaceinlinestatic
create()Tp::BaseProtocolAddressingInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseProtocolAddressingInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
normalizeContactUri(const QString &uri, DBusError *error)Tp::BaseProtocolAddressingInterface
NormalizeContactUriCallback typedefTp::BaseProtocolAddressingInterface
normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress, DBusError *error)Tp::BaseProtocolAddressingInterface
NormalizeVCardAddressCallback typedefTp::BaseProtocolAddressingInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setAddressableUriSchemes(const QStringList &uriSchemes)Tp::BaseProtocolAddressingInterface
setAddressableVCardFields(const QStringList &vcardFields)Tp::BaseProtocolAddressingInterface
setNormalizeContactUriCallback(const NormalizeContactUriCallback &cb)Tp::BaseProtocolAddressingInterface
setNormalizeVCardAddressCallback(const NormalizeVCardAddressCallback &cb)Tp::BaseProtocolAddressingInterface
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~AbstractProtocolInterface()Tp::AbstractProtocolInterfacevirtual
~BaseProtocolAddressingInterface()Tp::BaseProtocolAddressingInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00458.html0000644000175100017520000002053312530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::PresenceSpecList Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PresenceSpecList Class Reference

The PresenceSpecList class represents a list of PresenceSpec. More...

#include <TelepathyQt/PresenceSpecList>

Inherits QList< PresenceSpec >.

Public Member Functions

 PresenceSpecList ()
 
 PresenceSpecList (const SimpleStatusSpecMap &specMap)
 
 PresenceSpecList (const QList< PresenceSpec > &other)
 
QMap< QString, PresenceSpectoMap () const
 
SimpleStatusSpecMap bareSpecs () const
 

Detailed Description

The PresenceSpecList class represents a list of PresenceSpec.

Constructor & Destructor Documentation

Tp::PresenceSpecList::PresenceSpecList ( )
inline
Tp::PresenceSpecList::PresenceSpecList ( const SimpleStatusSpecMap specMap)
inline
Tp::PresenceSpecList::PresenceSpecList ( const QList< PresenceSpec > &  other)
inline

Member Function Documentation

QMap<QString, PresenceSpec> Tp::PresenceSpecList::toMap ( ) const
inline
SimpleStatusSpecMap Tp::PresenceSpecList::bareSpecs ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00202.html0000644000175100017520000024770612530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceGroupInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply AddMembers (const Tp::UIntList &contacts, const QString &message, int timeout=-1)
 
QDBusPendingReply
< Tp::UIntList, Tp::UIntList,
Tp::UIntList
GetAllMembers (int timeout=-1)
 
QDBusPendingReply< uint > GetGroupFlags (int timeout=-1)
 
QDBusPendingReply< Tp::UIntListGetHandleOwners (const Tp::UIntList &handles, int timeout=-1)
 
QDBusPendingReply< Tp::UIntListGetLocalPendingMembers (int timeout=-1)
 
QDBusPendingReply
< Tp::LocalPendingInfoList
GetLocalPendingMembersWithInfo (int timeout=-1)
 
QDBusPendingReply< Tp::UIntListGetMembers (int timeout=-1)
 
QDBusPendingReply< Tp::UIntListGetRemotePendingMembers (int timeout=-1)
 
QDBusPendingReply< uint > GetSelfHandle (int timeout=-1)
 
QDBusPendingReply RemoveMembers (const Tp::UIntList &contacts, const QString &message, int timeout=-1)
 
QDBusPendingReply RemoveMembersWithReason (const Tp::UIntList &contacts, const QString &message, uint reason, int timeout=-1)
 

Signals

void HandleOwnersChanged (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed)
 
void HandleOwnersChangedDetailed (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers)
 
void SelfHandleChanged (uint selfHandle)
 
void SelfContactChanged (uint selfHandle, const QString &selfID)
 
void GroupFlagsChanged (uint added, uint removed)
 
void MembersChanged (const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason)
 
void MembersChangedDetailed (const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceGroupInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceGroupInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceGroupInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceGroupInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceGroupInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyGroupFlags () const
 
Tp::PendingVariantrequestPropertyHandleOwners () const
 
Tp::PendingVariantrequestPropertyLocalPendingMembers () const
 
Tp::PendingVariantrequestPropertyMembers () const
 
Tp::PendingVariantrequestPropertyRemotePendingMembers () const
 
Tp::PendingVariantrequestPropertySelfHandle () const
 
Tp::PendingVariantrequestPropertyMemberIdentifiers () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Group".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceGroupInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceGroupInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceGroupInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceGroupInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceGroupInterface::ChannelInterfaceGroupInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceGroupInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceGroupInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Group", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertyGroupFlags ( ) const
inline

Asynchronous getter for the remote object property GroupFlags of type uint.

An integer representing the bitwise-OR of flags on this channel. The user interface can use this to present information about which operations are currently valid. Change notification is via the GroupFlagsChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertyHandleOwners ( ) const
inline

Asynchronous getter for the remote object property HandleOwners of type Tp::HandleOwnerMap.

A map from channel-specific handles to their owners, including at least all of the channel-specific handles in this channel's members, local-pending or remote-pending sets as keys. Any handle not in the keys of this mapping is not channel-specific in this channel. Handles which are channel-specific, but for which the owner is unknown, MUST appear in this mapping with 0 as owner. Change notification is via the HandleOwnersChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertyLocalPendingMembers ( ) const
inline

Asynchronous getter for the remote object property LocalPendingMembers of type Tp::LocalPendingInfoList.

An array of structs containing handles representing contacts requesting channel membership and awaiting local approval with AddMembers.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertyMembers ( ) const
inline

Asynchronous getter for the remote object property Members of type Tp::UIntList.

The members of this channel.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertyRemotePendingMembers ( ) const
inline

Asynchronous getter for the remote object property RemotePendingMembers of type Tp::UIntList.

An array of handles representing contacts who have been invited to the channel and are awaiting remote approval.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertySelfHandle ( ) const
inline

Asynchronous getter for the remote object property SelfHandle of type uint.

The handle for the user on this channel (which can also be a local or remote pending member), or 0 if the user is not a member at all (which is likely to be the case, for instance, on ContactList channels). Note that this is different from the result of Connection.GetSelfHandle on some protocols, so the value of this handle should always be used with the methods of this interface.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceGroupInterface::requestPropertyMemberIdentifiers ( ) const
inline

Asynchronous getter for the remote object property MemberIdentifiers of type Tp::HandleIdentifierMap.

The string identifiers for handles mentioned in this channel, to give clients the minimal information necessary to create contacts without waiting for round-trips. Connection managers MUST include at least the identifiers for SelfHandle, Members, LocalPendingMembers (and their actors if any), RemotePendingMembers and HandleOwners.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceGroupInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceGroupInterface::AddMembers ( const Tp::UIntList contacts,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddMembers on the remote object.

Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.

A message may be provided along with the request, which will be sent to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT GroupFlags to see in which cases this message should be provided.

Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of contact handles to invite to the channel
message
A string message, which can be blank if desired
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::UIntList, Tp::UIntList, Tp::UIntList> Tp::Client::ChannelInterfaceGroupInterface::GetAllMembers ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetAllMembers on the remote object.

Returns arrays of all current, local and remote pending channel members.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
array of handles of current members
array of handles of local pending members
array of handles of remote pending members
QDBusPendingReply<uint> Tp::Client::ChannelInterfaceGroupInterface::GetGroupFlags ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetGroupFlags on the remote object.

Returns the value of the GroupFlags property.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The value of the GroupFlags property
QDBusPendingReply<Tp::UIntList> Tp::Client::ChannelInterfaceGroupInterface::GetHandleOwners ( const Tp::UIntList handles,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetHandleOwners on the remote object.

If the CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES flag is set on the channel, then the handles of the group members are specific to this channel, and are not meaningful in a connection-wide context such as contact lists. This method allows you to find the owner of the handle if it can be discovered in this channel, or 0 if the owner is not available.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handles
A list of integer handles representing members of the channel
timeoutThe timeout in milliseconds.
Returns
An array of integer handles representing the owner handles of the 
given room members, in the same order, or 0 if the owner is not 
available
QDBusPendingReply<Tp::UIntList> Tp::Client::ChannelInterfaceGroupInterface::GetLocalPendingMembers ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetLocalPendingMembers on the remote object.

Returns the To_Be_Added handle (only) for each structure in the LocalPendingMembers property.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::LocalPendingInfoList> Tp::Client::ChannelInterfaceGroupInterface::GetLocalPendingMembersWithInfo ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetLocalPendingMembersWithInfo on the remote object.

Returns the LocalPendingMembers property.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of structs containing: A handle representing the contact 
requesting channel membership A handle representing the contact 
making the request, or 0 if unknown The reason for the request: one 
of the values of Channel_Group_Change_Reason A string message 
containing the reason for the request if any (or blank if none)
QDBusPendingReply<Tp::UIntList> Tp::Client::ChannelInterfaceGroupInterface::GetMembers ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetMembers on the remote object.

Returns the Members property.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::UIntList> Tp::Client::ChannelInterfaceGroupInterface::GetRemotePendingMembers ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetRemotePendingMembers on the remote object.

Returns an array of handles representing contacts who have been invited to the channel and are awaiting remote approval.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<uint> Tp::Client::ChannelInterfaceGroupInterface::GetSelfHandle ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetSelfHandle on the remote object.

Returns the value of the SelfHandle property.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceGroupInterface::RemoveMembers ( const Tp::UIntList contacts,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveMembers on the remote object.

Requests the removal of contacts from a channel, reject their request for channel membership on the pending local list, or rescind their invitation on the pending remote list.

If the SelfHandle is in a Group, it can be removed via this method, in order to leave the group gracefully. This is the recommended way to leave a chatroom, close or reject a ChannelTypeStreamedMediaInterface call, and so on.

Accordingly, connection managers SHOULD support doing this, regardless of the value of GroupFlags . If doing so fails with PermissionDenied, this is considered to a bug in the connection manager, but clients MUST recover by falling back to closing the channel with the ChannelInterface::Close() method.

Removing any contact from the local pending list is always allowed. Removing contacts other than the SelfHandle from the channel's members is allowed if and only if Channel_Group_Flag_Can_Remove is in the GroupFlags , while removing contacts other than the SelfHandle from the remote pending list is allowed if and only if Channel_Group_Flag_Can_Rescind is in the GroupFlags .

A message may be provided along with the request, which will be sent to the server if supported. See the Channel_Group_Flag_Message_Remove, Channel_Group_Flag_Message_Depart, Channel_Group_Flag_Message_Reject and Channel_Group_Flag_Message_Rescind GroupFlags to see in which cases this message should be provided.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of contact handles to remove from the channel
message
A string message, which can be blank if desired
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceGroupInterface::RemoveMembersWithReason ( const Tp::UIntList contacts,
const QString &  message,
uint  reason,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveMembersWithReason on the remote object.

As RemoveMembers, but a reason code may be provided where appropriate. The reason code may be ignored if the underlying protocol is unable to represent the given reason.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of contact handles to remove from the channel
message
A string message, which can be blank if desired
reason
A reason for the change
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceGroupInterface::HandleOwnersChanged ( const Tp::HandleOwnerMap added,
const Tp::UIntList removed 
)
signal

Represents the signal HandleOwnersChanged on the remote object.

Emitted whenever the HandleOwners property changes.

Parameters
added
A map from channel-specific handles to their owners, in which the 
keys include all the handles that were added to the keys of the 
HandleOwners property, and all the handles in that property whose 
owner has changed
removed
The channel-specific handles that were removed from the keys of the 
HandleOwners property, as a result of the contact leaving this 
group in a previous MembersChanged signal
void Tp::Client::ChannelInterfaceGroupInterface::HandleOwnersChangedDetailed ( const Tp::HandleOwnerMap added,
const Tp::UIntList removed,
const Tp::HandleIdentifierMap identifiers 
)
signal

Represents the signal HandleOwnersChangedDetailed on the remote object.

Emitted whenever the HandleOwners property changes. Clients can assume this signal is emitted by the Connection Manager if the MemberIdentifiers property exists

Parameters
added
A map from channel-specific handles to their owners, in which the 
keys include all the handles that were added to the keys of the 
HandleOwners property, and all the handles in that property whose 
owner has changed
removed
The channel-specific handles that were removed from the keys of the 
HandleOwners property, as a result of the contact leaving this 
group in a previous MembersChanged signal
identifiers
The string identifiers for handles mentioned in this signal, to 
give clients the minimal information necessary to create contacts 
without waiting for round-trips. Connection managers MUST include 
at least the identifiers for all handles in the Added map, and MAY 
include those from Removed array.
void Tp::Client::ChannelInterfaceGroupInterface::SelfHandleChanged ( uint  selfHandle)
signal

Represents the signal SelfHandleChanged on the remote object.

Emitted whenever the SelfHandle property changes.

Parameters
selfHandle
The new value of the SelfHandle property.
void Tp::Client::ChannelInterfaceGroupInterface::SelfContactChanged ( uint  selfHandle,
const QString &  selfID 
)
signal

Represents the signal SelfContactChanged on the remote object.

Emitted whenever the SelfHandle property changes. Clients can assume this signal is emitted by the Connection Manager if the MemberIdentifiers property exists.

Parameters
selfHandle
The new value of the SelfHandle property.
selfID
The new value of the SelfHandle property&apos;s identifier.
void Tp::Client::ChannelInterfaceGroupInterface::GroupFlagsChanged ( uint  added,
uint  removed 
)
signal

Represents the signal GroupFlagsChanged on the remote object.

Emitted when the flags as returned by GetGroupFlags are changed. The user interface should be updated as appropriate.

Parameters
added
A bitwise OR of the flags which have been set
removed
A bitwise OR of the flags which have been cleared
void Tp::Client::ChannelInterfaceGroupInterface::MembersChanged ( const QString &  message,
const Tp::UIntList added,
const Tp::UIntList removed,
const Tp::UIntList localPending,
const Tp::UIntList remotePending,
uint  actor,
uint  reason 
)
signal

Represents the signal MembersChanged on the remote object.

Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. There may also be a message from the server regarding this change, which may be displayed to the user if desired.

All channel-specific handles that are mentioned in this signal MUST be represented in the value of the HandleOwners property. In practice, this will mean that HandleOwnersChanged() is emitted before emitting a MembersChanged signal in which channel-specific handles are added, but that it is emitted after emitting a MembersChanged signal in which channel-specific handles are removed.

See ChannelTypeStreamedMediaInterface for an overview of how group state changes are used to indicate the progress of a call.

Parameters
message
A string message from the server, or blank if not
added
A list of members added to the channel
removed
A list of members removed from the channel
localPending
A list of members who are pending local approval
remotePending
A list of members who are pending remote approval
actor
The contact handle of the person who made the change, or 0 if not 
known
reason
A reason for the change
void Tp::Client::ChannelInterfaceGroupInterface::MembersChangedDetailed ( const Tp::UIntList added,
const Tp::UIntList removed,
const Tp::UIntList localPending,
const Tp::UIntList remotePending,
const QVariantMap &  details 
)
signal

Represents the signal MembersChangedDetailed on the remote object.

Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. This signal provides a superset of the information provided by MembersChanged() ; if the channel's GroupFlags contains Members_Changed_Detailed, then clients may listen exclusively to this signal in preference to that signal.

All channel-specific handles that are mentioned in this signal MUST be represented in the value of the HandleOwners property. In practice, this will mean that HandleOwnersChanged() is emitted before emitting a MembersChangedDetailed signal in which channel-specific handles are added, but that it is emitted after emitting a MembersChangedDetailed signal in which channel-specific handles are removed.

See ChannelTypeStreamedMediaInterface for an overview of how group state changes are used to indicate the progress of a call.

Parameters
added
A list of members added to the channel
removed
A list of members removed from the channel
localPending
A list of members who are pending local approval
remotePending
A list of members who are pending remote approval
details

Information about the change, which may include the following well-known keys:

actor (u — Contact_Handle)
The contact handle of the person who made the change; 0 or omitted if unknown or not applicable.
change-reason (u — Channel_Group_Change_Reason)
A reason for the change.
contact-ids (a{us} — Handle_Identifier_Map)

The string identifiers for handles mentioned in this signal, to give clients the minimal information necessary to react to the event without waiting for round-trips. Connection managers SHOULD include the identifiers for members added to the group and for the actor (if any); they MAY omit the identifiers for handles which have been removed from the group.

On IRC, an event such as a netsplit could cause the vast majority of a channel to leave. Given that clients should already know the identifiers of a channel's members, including potentially hundreds of strings in the netsplit signal is unnecessary.

Clients MUST NOT assume that the presence or absence of a handle in this mapping is meaningful. This mapping is merely an optimization for round-trip reduction, and connection managers MAY add additional handles, omit some handles, or omit the mapping completely.

message (s)
A string message from the server regarding the change
error (s — DBus_Error_Name)
A (possibly implementation-specific) DBus error describing the change, providing more specific information than the Channel_Group_Change_Reason enum allows. This MUST only be present if it is strictly more informative than 'change-reason'; if present, 'change-reason' MUST be set to the closest available reason.
A SIP connection manager might want to signal "402 Payment required" as something more specific than Error or Permission_Denied so that a SIP-aware UI could handle it specially; including a namespaced error permits this to be done without Channel_Group_Change_Reason being extended to encompass every error any CM ever wants to report.
debug-message (s)
Debugging information on the change. SHOULD NOT be shown to users in normal circumstances.
void Tp::Client::ChannelInterfaceGroupInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00617_source.html0000644000175100017520000007307412530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-call-content-media-description-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-content-media-description-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/call-content-media-description.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 CallContentMediaDescriptionInterface::CallContentMediaDescriptionInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 CallContentMediaDescriptionInterface::CallContentMediaDescriptionInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27 
28  Tp::AbstractInterface::invalidate(proxy, error, message);
29 }
30 
32  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
33 {
34 }
35 
36 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
37  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
38 {
39 }
40 
42  : Tp::AbstractInterface(proxy, staticInterfaceName())
43 {
44 }
45 
47  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
48 {
49 }
50 
52  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
53 {
54 }
55 
57  const QString &error, const QString &message)
58 {
59 
60  Tp::AbstractInterface::invalidate(proxy, error, message);
61 }
62 
64  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
65 {
66 }
67 
68 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
69  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
70 {
71 }
72 
74  : Tp::AbstractInterface(proxy, staticInterfaceName())
75 {
76 }
77 
79  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
80 {
81 }
82 
84  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
85 {
86 }
87 
89  const QString &error, const QString &message)
90 {
91 
92  Tp::AbstractInterface::invalidate(proxy, error, message);
93 }
94 
96  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
97 {
98 }
99 
100 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
101  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
102 {
103 }
104 
106  : Tp::AbstractInterface(proxy, staticInterfaceName())
107 {
108 }
109 
111  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
112 {
113 }
114 
116  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
117 {
118 }
119 
121  const QString &error, const QString &message)
122 {
123 
124  Tp::AbstractInterface::invalidate(proxy, error, message);
125 }
126 }
127 }
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-media-description-body.hpp:88
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-media-description-body.hpp:31
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-media-description-body.hpp:24
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
CallContentMediaDescriptionInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-media-description-body.hpp:9
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
Definition: cli-call-content-media-description.h:44
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-media-description-body.hpp:95
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-media-description-body.hpp:120
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-content-media-description-body.hpp:63
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-content-media-description-body.hpp:56


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01173.html0000644000175100017520000001025412530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaStreamHandlerTransport Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00517.html0000644000175100017520000000753312530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::SocketAddressIPv4 Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketAddressIPv4 Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString address
 
ushort port
 

Detailed Description

Structure type generated from the specification.

An IPv4 address and port.

Member Data Documentation

QString Tp::SocketAddressIPv4::address

A dotted-quad IPv4 address literal: four ASCII decimal numbers, each between 0 and 255 inclusive, e.g. "192.168.0.1".

ushort Tp::SocketAddressIPv4::port

The TCP or UDP port number.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00613_source.html0000644000175100017520000002311612530426257022515 0ustar00kaffeinekaffeine00000000000000 cli-account-manager-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-account-manager-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/account-manager.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 AccountManagerInterface::AccountManagerInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 AccountManagerInterface::AccountManagerInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(AccountRemoved(const QDBusObjectPath&)), NULL, NULL);
28  disconnect(this, SIGNAL(AccountValidityChanged(const QDBusObjectPath&, bool)), NULL, NULL);
29 
30  Tp::AbstractInterface::invalidate(proxy, error, message);
31 }
32 }
33 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-account-manager-body.hpp:24
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
void AccountRemoved(const QDBusObjectPath &account)
void AccountValidityChanged(const QDBusObjectPath &account, bool valid)
AccountManagerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-account-manager-body.hpp:9


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00271.html0000644000175100017520000010456312530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceAliasingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< uint > GetAliasFlags (int timeout=-1)
 
QDBusPendingReply< QStringList > RequestAliases (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply< Tp::AliasMapGetAliases (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply SetAliases (const Tp::AliasMap &aliases, int timeout=-1)
 

Signals

void AliasesChanged (const Tp::AliasPairList &aliases)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceAliasingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAliasingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAliasingInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceAliasingInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceAliasingInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Aliasing".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAliasingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAliasingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceAliasingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceAliasingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceAliasingInterface::ConnectionInterfaceAliasingInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceAliasingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceAliasingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Aliasing", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceAliasingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<uint> Tp::Client::ConnectionInterfaceAliasingInterface::GetAliasFlags ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetAliasFlags on the remote object.

Return a bitwise OR of flags detailing the behaviour of aliases on this connection.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An integer with a bitwise OR of flags from ConnectionAliasFlags
QDBusPendingReply<QStringList> Tp::Client::ConnectionInterfaceAliasingInterface::RequestAliases ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestAliases on the remote object.

Request the value of several contacts' aliases at once.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of handles representing contacts
timeoutThe timeout in milliseconds.
Returns
A list of aliases in the same order as the contact handles
QDBusPendingReply<Tp::AliasMap> Tp::Client::ConnectionInterfaceAliasingInterface::GetAliases ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetAliases on the remote object.

Request the value of several contacts' aliases at once. This SHOULD only return cached aliases, falling back on the contact identifier (i.e. the string corresponding to the handle) if none is present. Also if there was no cached alias, a request SHOULD be started of which the result is later signalled by AliasesChanged.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of handles representing contacts
timeoutThe timeout in milliseconds.
Returns
A dictionary mapping contact handles to aliases
QDBusPendingReply Tp::Client::ConnectionInterfaceAliasingInterface::SetAliases ( const Tp::AliasMap aliases,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetAliases on the remote object.

Request that the alias of the given contact be changed. Success will be indicated by emitting an AliasesChanged signal. On connections where the CONNECTION_ALIAS_FLAG_USER_SET flag is not set, this method will only ever succeed if the contact is the user's own handle (as returned by Connection.GetSelfHandle).

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
aliases
A dictionary mapping integer handles of contacts to strings of the 
new alias to set.
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfaceAliasingInterface::AliasesChanged ( const Tp::AliasPairList aliases)
signal

Represents the signal AliasesChanged on the remote object.

Signal emitted when a contact's alias (or that of the user) is changed.

Parameters
aliases An array containing structs of:
  • the handle representing the contact
  • the new alias
void Tp::Client::ConnectionInterfaceAliasingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01232.html0000644000175100017520000004270512530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AccountInterface Member List

This is the complete list of members for Tp::Client::AccountInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AccountInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterface
AccountInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterface
AccountInterface(Tp::DBusProxy *proxy)Tp::Client::AccountInterface
AccountPropertyChanged(const QVariantMap &properties)Tp::Client::AccountInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::AccountInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Reconnect(int timeout=-1)Tp::Client::AccountInterfaceinlineslot
Remove(int timeout=-1)Tp::Client::AccountInterfaceinlineslot
Removed()Tp::Client::AccountInterfacesignal
requestAllProperties() const Tp::Client::AccountInterfaceinline
requestPropertyAutomaticPresence() const Tp::Client::AccountInterfaceinline
requestPropertyChangingPresence() const Tp::Client::AccountInterfaceinline
requestPropertyConnectAutomatically() const Tp::Client::AccountInterfaceinline
requestPropertyConnection() const Tp::Client::AccountInterfaceinline
requestPropertyConnectionError() const Tp::Client::AccountInterfaceinline
requestPropertyConnectionErrorDetails() const Tp::Client::AccountInterfaceinline
requestPropertyConnectionStatus() const Tp::Client::AccountInterfaceinline
requestPropertyConnectionStatusReason() const Tp::Client::AccountInterfaceinline
requestPropertyCurrentPresence() const Tp::Client::AccountInterfaceinline
requestPropertyDisplayName() const Tp::Client::AccountInterfaceinline
requestPropertyEnabled() const Tp::Client::AccountInterfaceinline
requestPropertyHasBeenOnline() const Tp::Client::AccountInterfaceinline
requestPropertyIcon() const Tp::Client::AccountInterfaceinline
requestPropertyInterfaces() const Tp::Client::AccountInterfaceinline
requestPropertyNickname() const Tp::Client::AccountInterfaceinline
requestPropertyNormalizedName() const Tp::Client::AccountInterfaceinline
requestPropertyParameters() const Tp::Client::AccountInterfaceinline
requestPropertyRequestedPresence() const Tp::Client::AccountInterfaceinline
requestPropertyService() const Tp::Client::AccountInterfaceinline
requestPropertySupersedes() const Tp::Client::AccountInterfaceinline
requestPropertyValid() const Tp::Client::AccountInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyAutomaticPresence(Tp::SimplePresence newValue)Tp::Client::AccountInterfaceinline
setPropertyConnectAutomatically(bool newValue)Tp::Client::AccountInterfaceinline
setPropertyDisplayName(QString newValue)Tp::Client::AccountInterfaceinline
setPropertyEnabled(bool newValue)Tp::Client::AccountInterfaceinline
setPropertyIcon(QString newValue)Tp::Client::AccountInterfaceinline
setPropertyNickname(QString newValue)Tp::Client::AccountInterfaceinline
setPropertyRequestedPresence(Tp::SimplePresence newValue)Tp::Client::AccountInterfaceinline
setPropertyService(QString newValue)Tp::Client::AccountInterfaceinline
setPropertySupersedes(Tp::ObjectPathList newValue)Tp::Client::AccountInterfaceinline
staticInterfaceName()Tp::Client::AccountInterfaceinlinestatic
UpdateParameters(const QVariantMap &set, const QStringList &unset, int timeout=-1)Tp::Client::AccountInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00016.html0000644000175100017520000000607112530426257021133 0ustar00kaffeinekaffeine00000000000000 accounts/main.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
accounts/main.cpp
#include <TelepathyQt/Debug>
#include <TelepathyQt/Constants>
#include <TelepathyQt/Types>
#include <QApplication>
#include <QtGui>
#include "accounts-window.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
AccountsWindow w;
w.show();
return app.exec();
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x66.html0000644000175100017520000005515712530426260023122 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- f -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2cl.png0000644000175100017520000000070512530426257021342 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆŒIDATxíÝ;H#AÇño4Љႇ œ„K‰‡‚á ’ê,m„ØØ vÚžJ°²¹ÚÎþî‚§ XY ÅB|dr³cvo—˜Ä°Ý ù0Ã’™3ÿͤõ”Ëe×´¸Éõ¯1XÞ8Œ‰nQˆ88ööÖ§3*rbñ¯¢û-$¨‚þ´˜“P1Žè@Z…-# Ïú01ÑÏÎêÄ1HkKŸ w¶O@¥ªÈóñ!f§ñu˜åác÷;’sá×Bý[E´Añ±—Í\ß>°ùý¿ÏËÊÂ]–P€zØf| Íñ¯“+Ù´gð5…b  i5ümM³œ_æÍq,ÒcŽõèoÓd´ !¶äò©ô•,ôðÀ{¹¨µYß,€zTÍ8H]𤕘ï7¼»/òó8ËQæ !F€~6ãá?Y ÀA@ŨÁ.@ƒ¶TäÄYïŠËë±r‘µ8Ð*·é>€Šçÿ?€×þŸe[6«xÂIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00330.html0000644000175100017520000001437112530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSearchResultMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSearchResultMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, ContactInfoFieldList >.

Public Member Functions

 ContactSearchResultMap ()
 
 ContactSearchResultMap (const QMap< QString, ContactInfoFieldList > &a)
 
ContactSearchResultMapoperator= (const QMap< QString, ContactInfoFieldList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, ContactInfoFieldList>, but needed to have a discrete type in the Qt type system.

A map from contact identifier to search result, emitted in the SearchResultReceived signal.

Constructor & Destructor Documentation

Tp::ContactSearchResultMap::ContactSearchResultMap ( )
inline
Tp::ContactSearchResultMap::ContactSearchResultMap ( const QMap< QString, ContactInfoFieldList > &  a)
inline

Member Function Documentation

ContactSearchResultMap& Tp::ContactSearchResultMap::operator= ( const QMap< QString, ContactInfoFieldList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00085.html0000644000175100017520000001327712530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::AliasMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Types>

Inherits QMap< uint, QString >.

Public Member Functions

 AliasMap ()
 
 AliasMap (const QMap< uint, QString > &a)
 
AliasMapoperator= (const QMap< uint, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QString>, but needed to have a discrete type in the Qt type system.

A dictionary whose keys are contact handles and whose values are aliases.

Constructor & Destructor Documentation

Tp::AliasMap::AliasMap ( )
inline
Tp::AliasMap::AliasMap ( const QMap< uint, QString > &  a)
inline

Member Function Documentation

AliasMap& Tp::AliasMap::operator= ( const QMap< uint, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01046.html0000644000175100017520000000573212530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandledChannelNotifier Member List

This is the complete list of members for Tp::HandledChannelNotifier, including all inherited members.

channel() const Tp::HandledChannelNotifier
connectNotify(const QMetaMethod &signal)Tp::HandledChannelNotifierprotected
handledAgain(const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints)Tp::HandledChannelNotifiersignal
~HandledChannelNotifier()Tp::HandledChannelNotifier


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01360.html0000644000175100017520000000740412530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeServerTLSConnectionAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00144.html0000644000175100017520000007623212530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentInterfaceAudioControlInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceAudioControlInterface Class Reference

#include <TelepathyQt/CallContent>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply ReportInputVolume (int volume, int timeout=-1)
 
QDBusPendingReply ReportOutputVolume (int volume, int timeout=-1)
 

Public Member Functions

 CallContentInterfaceAudioControlInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceAudioControlInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceAudioControlInterface (Tp::DBusProxy *proxy)
 
 CallContentInterfaceAudioControlInterface (const Tp::Client::CallContentInterface &mainInterface)
 
 CallContentInterfaceAudioControlInterface (const Tp::Client::CallContentInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyRequestedInputVolume () const
 
Tp::PendingVariantrequestPropertyRequestedOutputVolume () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl".

Constructor & Destructor Documentation

Tp::Client::CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceAudioControlInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceAudioControlInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface ( Tp::DBusProxy proxy)

Creates a CallContentInterfaceAudioControlInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface ( const Tp::Client::CallContentInterface mainInterface)
explicit

Creates a CallContentInterfaceAudioControlInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentInterfaceAudioControlInterface::CallContentInterfaceAudioControlInterface ( const Tp::Client::CallContentInterface mainInterface,
QObject *  parent 
)

Creates a CallContentInterfaceAudioControlInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentInterfaceAudioControlInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentInterfaceAudioControlInterface::requestPropertyRequestedInputVolume ( ) const
inline

Asynchronous getter for the remote object property RequestedInputVolume of type int.

The input volume as requested by the Connection Manager. Initially and on any changes the client should change its input volume to match the requested volume.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceAudioControlInterface::requestPropertyRequestedOutputVolume ( ) const
inline

Asynchronous getter for the remote object property RequestedOutputVolume of type int.

The input volume as requested by the Connection Manager. Initially and on any changes the client should change its input volume to match the requested volume.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentInterfaceAudioControlInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallContentInterfaceAudioControlInterface::ReportInputVolume ( int  volume,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ReportInputVolume on the remote object.

Report to the CM that the Content input volume has been changed by the client. It is the client's responsibility to change the input volume used for the content. However, the client MUST call this whenever it changes input volume for the content.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
volume
Report the input volume level as set by the client.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallContentInterfaceAudioControlInterface::ReportOutputVolume ( int  volume,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ReportOutputVolume on the remote object.

Report to the CM that the content output volume has been changed by the client. It is the client's responsibility to change the output volume used for the content. However, the client MUST call this whenever it changes output volume for the content.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
volume
Report the output volume level as set by the client.
timeoutThe timeout in milliseconds.
void Tp::Client::CallContentInterfaceAudioControlInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01105.html0000644000175100017520000001256012530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingSuccess Member List

This is the complete list of members for Tp::PendingSuccess, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
PendingSuccess(const SharedPtr< RefCounted > &object)Tp::PendingSuccessinline
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2splitbar.png0000644000175100017520000000047212530426257022565 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRM¸¿IDATxíÝ¡JCa‡ñç(˜ ëƒ%±Ø4 b±È˜Í¶3˜v^Á±˜…ãó–ŽELƒõ…¥•³ ,ÿb;íç{Ã/¼ðÞÀaYÕ¯åóøq:¼º¹›\òIIIIIIIIIIIIIIIIII-Òçl¹›«õ抢è_t/Ï»ã£ÑíYQVõðêäíã÷´×ùY¬Úÿµ§¦ivók¾_íåýÛ£I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$ýC[Vì=ü[„fÆIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00459.html0000644000175100017520000007332212530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::Profile Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Profile class provides an easy way to read Telepathy profile files according to http://telepathy.freedesktop.org/wiki/service-profile-v1. More...

#include <TelepathyQt/Profile>

Inherits Tp::RefCounted.

Classes

class  Parameter
 The Profile::Parameter class represents a parameter defined in .profile files. More...
 
class  Presence
 The Profile::Presence class represents a presence defined in .profile files. More...
 

Public Types

typedef QList< ParameterParameterList
 
typedef QList< PresencePresenceList
 

Public Member Functions

 ~Profile ()
 
QString serviceName () const
 
bool isValid () const
 
bool isFake () const
 
QString type () const
 
QString provider () const
 
QString name () const
 
QString iconName () const
 
QString cmName () const
 
QString protocolName () const
 
ParameterList parameters () const
 
bool hasParameter (const QString &name) const
 
Parameter parameter (const QString &name) const
 
bool allowOtherPresences () const
 
PresenceList presences () const
 
bool hasPresence (const QString &id) const
 
Presence presence (const QString &id) const
 
RequestableChannelClassSpecList unsupportedChannelClassSpecs () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static ProfilePtr createForServiceName (const QString &serviceName)
 
static ProfilePtr createForFileName (const QString &fileName)
 

Detailed Description

The Profile class provides an easy way to read Telepathy profile files according to http://telepathy.freedesktop.org/wiki/service-profile-v1.

Note that profiles with xml element <type> different than "IM" are considered invalid.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::Profile::~Profile ( )

Class destructor.

Member Function Documentation

ProfilePtr Tp::Profile::createForServiceName ( const QString &  serviceName)
static

Create a new Profile object used to read .profiles compliant files.

Parameters
serviceNameThe profile service name.
Returns
A ProfilePtr object pointing to the newly created Profile object.
ProfilePtr Tp::Profile::createForFileName ( const QString &  fileName)
static

Create a new Profile object used to read .profiles compliant files.

Parameters
fileNameThe profile file name.
Returns
A ProfilePtr object pointing to the newly created Profile object.
QString Tp::Profile::serviceName ( ) const

Return the unique name of the service to which this profile applies.

Returns
The unique name of the service.
bool Tp::Profile::isValid ( ) const

Return whether this profile is valid.

Returns
true if valid, otherwise false.
bool Tp::Profile::isFake ( ) const

Return whether this profile is fake.

Fake profiles are profiles created for services not providing a .profile file.

Returns
true if fake, otherwise false.
QString Tp::Profile::type ( ) const

Return the type of the service to which this profile applies.

In general, services of interest of Telepathy should be of type 'IM'. Other service types exist but are unlikely to affect Telepathy in any way.

Returns
The type of the service.
QString Tp::Profile::provider ( ) const

Return the name of the vendor/organisation/provider who actually runs the service to which this profile applies.

Returns
The provider of the service.
QString Tp::Profile::name ( ) const

Return the human-readable name for the service to which this profile applies.

Returns
The Human-readable name of the service.
QString Tp::Profile::iconName ( ) const

Return the base name of the icon for the service to which this profile applies.

Returns
The base name of the icon for the service.
QString Tp::Profile::cmName ( ) const

Return the connection manager name for the service to which this profile applies.

Returns
The connection manager name for the service.
QString Tp::Profile::protocolName ( ) const

Return the protocol name for the service to which this profile applies.

Returns
The protocol name for the service.
Profile::ParameterList Tp::Profile::parameters ( ) const

Return a list of parameters defined for the service to which this profile applies.

Returns
A list of Profile::Parameter.
bool Tp::Profile::hasParameter ( const QString &  name) const

Return whether this profile defines the parameter named name.

Returns
true if parameter is defined, otherwise false.
Profile::Parameter Tp::Profile::parameter ( const QString &  name) const

Return the parameter for a given name.

Returns
A Profile::Parameter.
bool Tp::Profile::allowOtherPresences ( ) const

Return whether the standard CM presences not defined in presences() are supported.

Returns
true if standard CM presences are supported, otherwise false.
Profile::PresenceList Tp::Profile::presences ( ) const

Return a list of presences defined for the service to which this profile applies.

Returns
A list of Profile::Presence.
bool Tp::Profile::hasPresence ( const QString &  id) const

Return whether this profile defines the presence with id id.

Returns
true if presence is defined, otherwise false.
Profile::Presence Tp::Profile::presence ( const QString &  id) const

Return the presence for a given id.

Returns
A Profile::Presence.
RequestableChannelClassSpecList Tp::Profile::unsupportedChannelClassSpecs ( ) const

A list of channel classes not supported by the service to which this profile applies.

Returns
A list of RequestableChannelClassSpec.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00203.html0000644000175100017520000003232112530426260021120 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceHoldAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceHoldAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

uint GetHoldState (const QDBusMessage &dbusMessage, uint &reason)
 
void RequestHold (bool hold, const QDBusMessage &dbusMessage)
 

Signals

void HoldStateChanged (uint holdState, uint reason)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ChannelInterfaceHoldAdaptor::GetHoldState ( const QDBusMessage &  dbusMessage,
uint &  reason 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getHoldState(const Tp::Service::ChannelInterfaceHoldAdaptor::GetHoldStateContextPtr &context);

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

Return whether the local user has placed the channel on hold.

Parameters
reasonOutput parameter
The reason why the channel is in that state
Returns
The state of the channel
void Tp::Service::ChannelInterfaceHoldAdaptor::RequestHold ( bool  hold,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestHold(bool hold, const Tp::Service::ChannelInterfaceHoldAdaptor::RequestHoldContextPtr &context);

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

Request that the channel be put on hold (be instructed not to send any media streams to you) or be taken off hold.

If the connection manager can immediately tell that the requested state change could not possibly succeed, this method SHOULD return the NotAvailable error. If the requested state is the same as the current state, this method SHOULD return successfully without doing anything.

Otherwise, this method SHOULD immediately set the hold state to Local_Hold_State_Pending_Hold or Local_Hold_State_Pending_Unhold (as appropriate), emitting HoldStateChanged() if this is a change, and return successfully.

The eventual success or failure of the request is indicated by a subsequent HoldStateChanged signal, changing the hold state to Local_Hold_State_Held or Local_Hold_State_Unheld.

If the channel has multiple streams, and the connection manager succeeds in changing the hold state of one stream but fails to change the hold state of another, it SHOULD attempt to revert all streams to their previous hold states.

The following state transitions SHOULD be used, where appropriate:

  • Successful hold: (Unheld, any reason) → (Pending_Hold, Requested) → (Held, Requested)
  • Successful unhold: (Held, any reason) → (Pending_Unhold, Requested) → (Unheld, Requested)
  • Attempting to unhold fails at the first attempt to acquire a resource: (Held, any reason) → (Pending_Unhold, Requested) → (Held, Resource_Not_Available)
  • Attempting to unhold acquires one resource, but fails to acquire a second, and takes time to release the first: (Held, any reason) → (Pending_Unhold, Requested) → (Pending_Hold, Resource_Not_Available) → (Held, Resource_Not_Available)
Parameters
hold
A boolean indicating whether or not the channel should be on hold
void Tp::Service::ChannelInterfaceHoldAdaptor::HoldStateChanged ( uint  holdState,
uint  reason 
)
signal

Represents the exported D-Bus signal HoldStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void holdStateChanged(uint holdState, uint reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
holdState
The state of the channel
reason
The reason for the state change


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01174.html0000644000175100017520000000621312530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MediaStreamInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00518.html0000644000175100017520000000750412530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::SocketAddressIPv6 Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketAddressIPv6 Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString address
 
ushort port
 

Detailed Description

Structure type generated from the specification.

An IPv6 address and port.

Member Data Documentation

QString Tp::SocketAddressIPv6::address

An IPv6 address literal as specified by RFC2373 section 2.2, e.g. "2001:DB8::8:800:200C:4171".

ushort Tp::SocketAddressIPv6::port

The TCP or UDP port number.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2node.png0000644000175100017520000000012612530426257021666 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00272.html0000644000175100017520000003316112530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceAnonymityAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAnonymityAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Signals

void AnonymityModesChanged (uint modes)
 

Public Member Functions

uint SupportedAnonymityModes () const
 
bool AnonymityMandatory () const
 
void SetAnonymityMandatory (const bool &newValue)
 
uint AnonymityModes () const
 
void SetAnonymityModes (const uint &newValue)
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceAnonymityAdaptor::SupportedAnonymityModes ( ) const

Return the value of the exported D-Bus object property SupportedAnonymityModes of type uint.

Adaptees should export this property as a Qt property named 'supportedAnonymityModes' with type uint.

The anonymity modes supported by the CM for this connection. Once Connection.Status has moved to Connected, this property MUST NOT change.

Returns
The value of exported property SupportedAnonymityModes.
bool Tp::Service::ConnectionInterfaceAnonymityAdaptor::AnonymityMandatory ( ) const

Return the value of the exported D-Bus object property AnonymityMandatory of type bool.

Adaptees should export this property as a Qt property named 'anonymityMandatory' with type bool.

This specifies whether or not the anonymity settings MUST be respected by the CM and any intermediaries between the local and remote contacts. If this is set to true but anonymity settings cannot be followed, then the session MUST be denied with a org.freedesktop.Telepathy.Error.WouldBreakAnonymity error. Any client that sets AnonymityModes SHOULD also set this property first (rather than accepting the CM's default value).

Returns
The value of exported property AnonymityMandatory.
void Tp::Service::ConnectionInterfaceAnonymityAdaptor::SetAnonymityMandatory ( const bool &  newValue)

Set the value of the exported D-Bus object property AnonymityMandatory of type bool.

Adaptees should export this property as a writable Qt property named 'anonymityMandatory' with type bool.

This specifies whether or not the anonymity settings MUST be respected by the CM and any intermediaries between the local and remote contacts. If this is set to true but anonymity settings cannot be followed, then the session MUST be denied with a org.freedesktop.Telepathy.Error.WouldBreakAnonymity error. Any client that sets AnonymityModes SHOULD also set this property first (rather than accepting the CM's default value).

uint Tp::Service::ConnectionInterfaceAnonymityAdaptor::AnonymityModes ( ) const

Return the value of the exported D-Bus object property AnonymityModes of type uint.

Adaptees should export this property as a Qt property named 'anonymityModes' with type uint.

The currently enabled anonymity modes for the connection. Setting has the effect of requesting new modes for the connection, and may raise an error if the unsupported modes are set. Successfully changing the modes will result in emission of AnonymityModesChanged signal.

Returns
The value of exported property AnonymityModes.
void Tp::Service::ConnectionInterfaceAnonymityAdaptor::SetAnonymityModes ( const uint &  newValue)

Set the value of the exported D-Bus object property AnonymityModes of type uint.

Adaptees should export this property as a writable Qt property named 'anonymityModes' with type uint.

The currently enabled anonymity modes for the connection. Setting has the effect of requesting new modes for the connection, and may raise an error if the unsupported modes are set. Successfully changing the modes will result in emission of AnonymityModesChanged signal.

void Tp::Service::ConnectionInterfaceAnonymityAdaptor::AnonymityModesChanged ( uint  modes)
signal

Represents the exported D-Bus signal AnonymityModesChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void anonymityModesChanged(uint modes);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
modes
The new anonymity modes for this connection.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01233.html0000644000175100017520000002151112530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AccountInterfaceAddressingInterface Member List

This is the complete list of members for Tp::Client::AccountInterfaceAddressingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AccountInterfaceAddressingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterfaceAddressingInterface
AccountInterfaceAddressingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterfaceAddressingInterface
AccountInterfaceAddressingInterface(Tp::DBusProxy *proxy)Tp::Client::AccountInterfaceAddressingInterface
AccountInterfaceAddressingInterface(const Tp::Client::AccountInterface &mainInterface)Tp::Client::AccountInterfaceAddressingInterfaceexplicit
AccountInterfaceAddressingInterface(const Tp::Client::AccountInterface &mainInterface, QObject *parent)Tp::Client::AccountInterfaceAddressingInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::AccountInterfaceAddressingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::AccountInterfaceAddressingInterfaceinline
requestPropertyURISchemes() const Tp::Client::AccountInterfaceAddressingInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetURISchemeAssociation(const QString &URIScheme, bool association, int timeout=-1)Tp::Client::AccountInterfaceAddressingInterfaceinlineslot
staticInterfaceName()Tp::Client::AccountInterfaceAddressingInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x67.html0000644000175100017520000006012012530426260023105 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- g -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00331.html0000644000175100017520000001347512530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSendingStateMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSendingStateMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, uint >.

Public Member Functions

 ContactSendingStateMap ()
 
 ContactSendingStateMap (const QMap< uint, uint > &a)
 
ContactSendingStateMapoperator= (const QMap< uint, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, uint>, but needed to have a discrete type in the Qt type system.

A map from a contact to his or her sending state.

Constructor & Destructor Documentation

Tp::ContactSendingStateMap::ContactSendingStateMap ( )
inline
Tp::ContactSendingStateMap::ContactSendingStateMap ( const QMap< uint, uint > &  a)
inline

Member Function Documentation

ContactSendingStateMap& Tp::ContactSendingStateMap::operator= ( const QMap< uint, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00086.html0000644000175100017520000000727012530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::AliasPair Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AliasPair Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint handle
 
QString alias
 

Detailed Description

Structure type generated from the specification.

A pair (contact handle, alias) as seen in the AliasesChanged signal.

Member Data Documentation

uint Tp::AliasPair::handle
QString Tp::AliasPair::alias


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01047.html0000644000175100017520000010316212530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::IncomingDBusTubeChannel Member List

This is the complete list of members for Tp::IncomingDBusTubeChannel, including all inherited members.

acceptTube(bool allowOtherUsers=false)Tp::IncomingDBusTubeChannel
actualFeatures() const Tp::ReadyObjectvirtual
address() const Tp::DBusTubeChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
busNameAdded(const QString &busName, const Tp::ContactPtr &contact)Tp::DBusTubeChannelsignal
busNameRemoved(const QString &busName, const Tp::ContactPtr &contact)Tp::DBusTubeChannelsignal
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
contactsForBusNames() const Tp::DBusTubeChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::IncomingDBusTubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
DBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::DBusTubeChannelprotected
FeatureBusNameMonitoringTp::DBusTubeChannelstatic
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::DBusTubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
IncomingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::IncomingDBusTubeChannelprotected
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
serviceName() const Tp::DBusTubeChannel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsRestrictingToCurrentUser() const Tp::DBusTubeChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~DBusTubeChannel()Tp::DBusTubeChannelvirtual
~IncomingDBusTubeChannel()Tp::IncomingDBusTubeChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01361.html0000644000175100017520000001236712530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeStreamTubeAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeStreamTubeAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
Accept(uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeStreamTubeAdaptorslot
adaptee() const Tp::AbstractAdaptor
ConnectionClosed(uint connectionID, const QString &error, const QString &message)Tp::Service::ChannelTypeStreamTubeAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
NewLocalConnection(uint connectionID)Tp::Service::ChannelTypeStreamTubeAdaptorsignal
NewRemoteConnection(uint handle, const QDBusVariant &connectionParam, uint connectionID)Tp::Service::ChannelTypeStreamTubeAdaptorsignal
Offer(uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeStreamTubeAdaptorslot
Service() const Tp::Service::ChannelTypeStreamTubeAdaptor
SupportedSocketTypes() const Tp::Service::ChannelTypeStreamTubeAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00145.html0000644000175100017520000005171412530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Service::CallContentInterfaceDTMFAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::CallContentInterfaceDTMFAdaptor Class Reference

#include <TelepathyQt/_gen/svc-call.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void StartTone (uchar event, const QDBusMessage &dbusMessage)
 
void StopTone (const QDBusMessage &dbusMessage)
 
void MultipleTones (const QString &tones, const QDBusMessage &dbusMessage)
 

Signals

void TonesDeferred (const QString &tones)
 
void SendingTones (const QString &tones)
 
void StoppedTones (bool cancelled)
 

Public Member Functions

bool CurrentlySendingTones () const
 
QString DeferredTones () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

Adaptor class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF".

Member Function Documentation

bool Tp::Service::CallContentInterfaceDTMFAdaptor::CurrentlySendingTones ( ) const

Return the value of the exported D-Bus object property CurrentlySendingTones of type bool.

Adaptees should export this property as a Qt property named 'currentlySendingTones' with type bool.

Indicates whether there are DTMF tones currently being sent in the channel. If so, the client should wait for StoppedTones signal before trying to send more tones.

Returns
The value of exported property CurrentlySendingTones.
QString Tp::Service::CallContentInterfaceDTMFAdaptor::DeferredTones ( ) const

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

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

The tones waiting for the user to continue, if any.

When this property is set to a non-empty value, TonesDeferred() is emitted. When any tones are played (i.e. whenever SendingTones() is emitted), this property is reset to the empty string.

Returns
The value of exported property DeferredTones.
void Tp::Service::CallContentInterfaceDTMFAdaptor::StartTone ( uchar  event,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void startTone(uchar event, const Tp::Service::CallContentInterfaceDTMFAdaptor::StartToneContextPtr &context);

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

Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until StopTone is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable. The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Parameters
event
A numeric event code from the DTMF_Event enum.
void Tp::Service::CallContentInterfaceDTMFAdaptor::StopTone ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void stopTone(const Tp::Service::CallContentInterfaceDTMFAdaptor::StopToneContextPtr &context);

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

Stop sending any DTMF tones which have been started using the StartTone or MultipleTones methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. On some protocols it might be impossible to cancel queued tones immediately.

void Tp::Service::CallContentInterfaceDTMFAdaptor::MultipleTones ( const QString &  tones,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void multipleTones(const QString& tones, const Tp::Service::CallContentInterfaceDTMFAdaptor::MultipleTonesContextPtr &context);

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

Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager. In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence. The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as audio/telephone-event. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Parameters
tones

A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:

  • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of DTMF_Event
  • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds
  • 'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the \\\ TonesDeferred() \\htmlonly signal with the rest of the string as its argument: see that signal for details
void Tp::Service::CallContentInterfaceDTMFAdaptor::TonesDeferred ( const QString &  tones)
signal

Represents the exported D-Bus signal TonesDeferred on this object.

Adaptees should export this signal as a Qt signal with the following signature: void tonesDeferred(const QString& tones);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
tones
The new non-empty value of DeferredTones.
void Tp::Service::CallContentInterfaceDTMFAdaptor::SendingTones ( const QString &  tones)
signal

Represents the exported D-Bus signal SendingTones on this object.

Adaptees should export this signal as a Qt signal with the following signature: void sendingTones(const QString& tones);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
tones
DTMF string (one or more events) that is to be played.
void Tp::Service::CallContentInterfaceDTMFAdaptor::StoppedTones ( bool  cancelled)
signal

Represents the exported D-Bus signal StoppedTones on this object.

Adaptees should export this signal as a Qt signal with the following signature: void stoppedTones(bool cancelled);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
cancelled
True if the DTMF tones were actively cancelled via StopTone.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01106.html0000644000175100017520000001336212530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingFailure Member List

This is the complete list of members for Tp::PendingFailure, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingFailure(const QString &name, const QString &message, const SharedPtr< RefCounted > &object)Tp::PendingFailureinline
PendingFailure(const QDBusError &error, const SharedPtr< RefCounted > &object)Tp::PendingFailureinline
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00960.html0000644000175100017520000001762312530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseProtocolAvatarsInterface Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00204.html0000644000175100017520000007570612530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceHoldInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< uint, uint > GetHoldState (int timeout=-1)
 
QDBusPendingReply RequestHold (bool hold, int timeout=-1)
 

Signals

void HoldStateChanged (uint holdState, uint reason)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceHoldInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceHoldInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceHoldInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceHoldInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceHoldInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Hold".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceHoldInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceHoldInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceHoldInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceHoldInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceHoldInterface::ChannelInterfaceHoldInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceHoldInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceHoldInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Hold", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceHoldInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<uint, uint> Tp::Client::ChannelInterfaceHoldInterface::GetHoldState ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetHoldState on the remote object.

Return whether the local user has placed the channel on hold.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The state of the channel
The reason why the channel is in that state
QDBusPendingReply Tp::Client::ChannelInterfaceHoldInterface::RequestHold ( bool  hold,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestHold on the remote object.

Request that the channel be put on hold (be instructed not to send any media streams to you) or be taken off hold.

If the connection manager can immediately tell that the requested state change could not possibly succeed, this method SHOULD return the NotAvailable error. If the requested state is the same as the current state, this method SHOULD return successfully without doing anything.

Otherwise, this method SHOULD immediately set the hold state to Local_Hold_State_Pending_Hold or Local_Hold_State_Pending_Unhold (as appropriate), emitting HoldStateChanged() if this is a change, and return successfully.

The eventual success or failure of the request is indicated by a subsequent HoldStateChanged signal, changing the hold state to Local_Hold_State_Held or Local_Hold_State_Unheld.

If the channel has multiple streams, and the connection manager succeeds in changing the hold state of one stream but fails to change the hold state of another, it SHOULD attempt to revert all streams to their previous hold states.

The following state transitions SHOULD be used, where appropriate:

  • Successful hold: (Unheld, any reason) → (Pending_Hold, Requested) → (Held, Requested)
  • Successful unhold: (Held, any reason) → (Pending_Unhold, Requested) → (Unheld, Requested)
  • Attempting to unhold fails at the first attempt to acquire a resource: (Held, any reason) → (Pending_Unhold, Requested) → (Held, Resource_Not_Available)
  • Attempting to unhold acquires one resource, but fails to acquire a second, and takes time to release the first: (Held, any reason) → (Pending_Unhold, Requested) → (Pending_Hold, Resource_Not_Available) → (Held, Resource_Not_Available)

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
hold
A boolean indicating whether or not the channel should be on hold
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceHoldInterface::HoldStateChanged ( uint  holdState,
uint  reason 
)
signal

Represents the signal HoldStateChanged on the remote object.

Emitted to indicate that the hold state has changed for this channel. This may occur as a consequence of you requesting a change with RequestHold, or the state changing as a result of a request from another process.

Parameters
holdState
The state of the channel
reason
The reason for the state change
void Tp::Client::ChannelInterfaceHoldInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/dir_a7efd3693e0e01cb2055bca70ce6963d.html0000644000175100017520000000532212530426260025662 0ustar00kaffeinekaffeine00000000000000 Farstream Directory Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Farstream Directory Reference

Files

file  Farstream/channel.cpp
 
file  Farstream/channel.h [code]
 
file  telepathy-qt/TelepathyQt/Farstream/global.h [code]
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01175.html0000644000175100017520000000525612530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessagePart Member List

This is the complete list of members for Tp::MessagePart, including all inherited members.

MessagePart()Tp::MessagePartinline
MessagePart(const QMap< QString, QDBusVariant > &a)Tp::MessagePartinline
operator=(const QMap< QString, QDBusVariant > &a)Tp::MessagePartinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00594_source.html0000644000175100017520000004067012530426257022531 0ustar00kaffeinekaffeine00000000000000 captcha-authentication.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
captcha-authentication.h
1 
23 #ifndef _TelepathyQt_captcha_authentication_h_HEADER_GUARD_
24 #define _TelepathyQt_captcha_authentication_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/Connection>
32 
33 #include <TelepathyQt/Global>
34 #include <TelepathyQt/SharedPtr>
35 
36 namespace Tp
37 {
38 
39 class PendingCaptchaAnswer;
40 class PendingCaptchaCancel;
41 class PendingCaptchas;
42 
43 class TP_QT_EXPORT CaptchaAuthentication : public Tp::Object
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(CaptchaAuthentication)
47 
48 public:
50  NoChallenge = 0,
51  OCRChallenge = 1,
52  AudioRecognitionChallenge = 2,
53  PictureQuestionChallenge = 4,
54  PictureRecognitionChallenge = 8,
55  TextQuestionChallenge = 16,
56  SpeechQuestionChallenge = 32,
57  SpeechRecognitionChallenge = 64,
58  VideoQuestionChallenge = 128,
59  VideoRecognitionChallenge = 256,
60  UnknownChallenge = 32768
61  };
62  Q_DECLARE_FLAGS(ChallengeTypes, ChallengeType)
63 
64  virtual ~CaptchaAuthentication();
65 
66  ChannelPtr channel() const;
67 
68  bool canRetry() const;
69  Tp::CaptchaStatus status() const;
70 
71  QString error() const;
72  Connection::ErrorDetails errorDetails() const;
73 
74  Tp::PendingCaptchas *requestCaptchas(const QStringList &preferredMimeTypes = QStringList(),
75  ChallengeTypes preferredTypes = ~ChallengeTypes(NoChallenge));
76  Tp::PendingOperation *answer(uint id, const QString &answer);
77  Tp::PendingOperation *answer(const Tp::CaptchaAnswers &response);
78 
79 Q_SIGNALS:
80  void statusChanged(Tp::CaptchaStatus status);
81 
82 public Q_SLOTS:
83  Tp::PendingOperation *cancel(Tp::CaptchaCancelReason reason,
84  const QString &message = QString());
85 
86 private Q_SLOTS:
87  TP_QT_NO_EXPORT void onPropertiesChanged(const QVariantMap &changedProperties,
88  const QStringList &invalidatedProperties);
89 
90 private:
91  TP_QT_NO_EXPORT CaptchaAuthentication(const ChannelPtr &parent);
92 
94 
95  struct Private;
96  friend struct Private;
97  Private *mPriv;
98 };
99 
100 } // namespace Tp
101 
102 Q_DECLARE_OPERATORS_FOR_FLAGS(Tp::CaptchaAuthentication::ChallengeTypes)
103 
104 #endif
Definition: build/TelepathyQt/_gen/types.h:568
ChallengeType
Definition: captcha-authentication.h:49
The Object class provides an object with property notification.
Definition: object.h:39
The ServerAuthenticationChannel class is a base class for all ServerAuthentication types...
Definition: server-authentication-channel.h:35
The PendingCaptchas class represents an asynchronous operation for retrieving a captcha challenge fro...
Definition: pending-captchas.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The Connection class represents a Telepathy connection.
Definition: connection.h:62
The CaptchaAuthentication class exposes CaptchaAuthentication&#39;s features for channels implementing it...
Definition: captcha-authentication.h:43
CaptchaStatus
Definition: build/TelepathyQt/_gen/constants.h:3025
CaptchaCancelReason
Definition: build/TelepathyQt/_gen/constants.h:2985


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00519.html0000644000175100017520000000770012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::SocketNetmaskIPv4 Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketNetmaskIPv4 Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString address
 
uchar prefixLength
 

Detailed Description

Structure type generated from the specification.

An IPv4 network or subnet.

Member Data Documentation

QString Tp::SocketNetmaskIPv4::address

A dotted-quad IPv4 address literal: four ASCII decimal numbers, each between 0 and 255 inclusive, e.g. "192.168.0.1".

uchar Tp::SocketNetmaskIPv4::prefixLength

The number of leading bits of the address that must match, for this netmask to be considered to match an address.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00273.html0000644000175100017520000010227612530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceAnonymityInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Signals

void AnonymityModesChanged (uint modes)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceAnonymityInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAnonymityInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAnonymityInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceAnonymityInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceAnonymityInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySupportedAnonymityModes () const
 
Tp::PendingVariantrequestPropertyAnonymityMandatory () const
 
Tp::PendingOperationsetPropertyAnonymityMandatory (bool newValue)
 
Tp::PendingVariantrequestPropertyAnonymityModes () const
 
Tp::PendingOperationsetPropertyAnonymityModes (uint newValue)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Anonymity".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAnonymityInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAnonymityInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceAnonymityInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceAnonymityInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceAnonymityInterface::ConnectionInterfaceAnonymityInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceAnonymityInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceAnonymityInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Anonymity", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAnonymityInterface::requestPropertySupportedAnonymityModes ( ) const
inline

Asynchronous getter for the remote object property SupportedAnonymityModes of type uint.

The anonymity modes supported by the CM for this connection. Once Connection.Status has moved to Connected, this property MUST NOT change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAnonymityInterface::requestPropertyAnonymityMandatory ( ) const
inline

Asynchronous getter for the remote object property AnonymityMandatory of type bool.

This specifies whether or not the anonymity settings MUST be respected by the CM and any intermediaries between the local and remote contacts. If this is set to true but anonymity settings cannot be followed, then the session MUST be denied with a org.freedesktop.Telepathy.Error.WouldBreakAnonymity error. Any client that sets AnonymityModes SHOULD also set this property first (rather than accepting the CM's default value).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceAnonymityInterface::setPropertyAnonymityMandatory ( bool  newValue)
inline

Asynchronous setter for the remote object property AnonymityMandatory of type bool.

This specifies whether or not the anonymity settings MUST be respected by the CM and any intermediaries between the local and remote contacts. If this is set to true but anonymity settings cannot be followed, then the session MUST be denied with a org.freedesktop.Telepathy.Error.WouldBreakAnonymity error. Any client that sets AnonymityModes SHOULD also set this property first (rather than accepting the CM's default value).

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAnonymityInterface::requestPropertyAnonymityModes ( ) const
inline

Asynchronous getter for the remote object property AnonymityModes of type uint.

The currently enabled anonymity modes for the connection. Setting has the effect of requesting new modes for the connection, and may raise an error if the unsupported modes are set. Successfully changing the modes will result in emission of AnonymityModesChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceAnonymityInterface::setPropertyAnonymityModes ( uint  newValue)
inline

Asynchronous setter for the remote object property AnonymityModes of type uint.

The currently enabled anonymity modes for the connection. Setting has the effect of requesting new modes for the connection, and may raise an error if the unsupported modes are set. Successfully changing the modes will result in emission of AnonymityModesChanged signal.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceAnonymityInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ConnectionInterfaceAnonymityInterface::AnonymityModesChanged ( uint  modes)
signal

Represents the signal AnonymityModesChanged on the remote object.

Emitted when the anonymity mode has changed.

Parameters
modes
The new anonymity modes for this connection.
void Tp::Client::ConnectionInterfaceAnonymityInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00590_source.html0000644000175100017520000033533112530426257022526 0ustar00kaffeinekaffeine00000000000000 callbacks.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
callbacks.h
1 
23 #ifndef _TelepathyQt_callbacks_h_HEADER_GUARD_
24 #define _TelepathyQt_callbacks_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Functors>
31 #include <TelepathyQt/Global>
32 
33 namespace Tp
34 {
35 
36 struct TP_QT_EXPORT AbstractFunctorCaller
37 {
38  typedef void *(*HookType)(void*);
39 
40  AbstractFunctorCaller(HookType invokeMethodHook) : invokeMethodHook(invokeMethodHook) {}
42 
43  virtual AbstractFunctorCaller *clone() const = 0;
44 
45  HookType invokeMethodHook;
46 
47 private:
49  AbstractFunctorCaller &operator=(const AbstractFunctorCaller &other);
50 };
51 
52 template <class T, class Functor>
54 {
56  : AbstractFunctorCaller(invokeMethodHook),
57  functor(functor) {}
58  virtual ~BaseFunctorCaller() {}
59 
60  virtual AbstractFunctorCaller *clone() const { return new T(functor); }
61 
62  Functor functor;
63 };
64 
65 struct TP_QT_EXPORT BaseCallback
66 {
67  BaseCallback() : caller(0) {}
68  /* takes ownership of caller */
69  BaseCallback(AbstractFunctorCaller *caller) : caller(caller) {}
70  BaseCallback(const BaseCallback &other) : caller(other.caller->clone()) {}
71  virtual ~BaseCallback() { delete caller; }
72 
73  bool isValid() const { return caller != 0; }
74 
76  {
77  if (caller == other.caller) return *this;
78  delete caller;
79  caller = other.caller->clone();
80  return *this;
81  }
82 
83 protected:
84  /* may be null */
86 };
87 
88 template <class Functor, class R >
89 struct FunctorCaller0 : public BaseFunctorCaller<FunctorCaller0<Functor, R >, Functor>
90 {
91  typedef R ResultType;
93 
94  explicit FunctorCaller0(const Functor &functor) : BaseFunctorCaller<FunctorCaller0, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller0<Functor, R >::invoke)) {}
95 
97  {
98  typedef FunctorCaller0<Functor, R > Type;
99  Type *typed = static_cast<Type*>(call);
100  return (typed->functor)();
101  }
102 };
103 
104 template <class R >
105 struct Callback0 : public BaseCallback
106 {
107  typedef R (*FunctionType)();
108  typedef R ResultType;
109 
111  template <class Functor>
112  Callback0(const Functor &functor) : BaseCallback(new FunctorCaller0<Functor, R >(functor)) {}
113 
115  {
116  if (caller) {
117  typedef R (*InvokeType)(AbstractFunctorCaller* );
118  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
119  return invokeMethod(caller );
120  }
121  return ResultType();
122  }
123 };
124 
125 template <class Functor, class R , class Arg1>
126 struct FunctorCaller1 : public BaseFunctorCaller<FunctorCaller1<Functor, R , Arg1>, Functor>
127 {
128  typedef R ResultType;
129  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1);
130 
131  explicit FunctorCaller1(const Functor &functor) : BaseFunctorCaller<FunctorCaller1, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller1<Functor, R , Arg1>::invoke)) {}
132 
133  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1)
134  {
136  Type *typed = static_cast<Type*>(call);
137  return (typed->functor)(a1);
138  }
139 };
140 
141 template <class R , class Arg1>
142 struct Callback1 : public BaseCallback
143 {
144  typedef R (*FunctionType)(Arg1);
145  typedef R ResultType;
146 
148  template <class Functor>
149  Callback1(const Functor &functor) : BaseCallback(new FunctorCaller1<Functor, R , Arg1>(functor)) {}
150 
151  ResultType operator()(Arg1 a1) const
152  {
153  if (caller) {
154  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1);
155  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
156  return invokeMethod(caller , a1);
157  }
158  return ResultType();
159  }
160 };
161 
162 template <class Functor, class R , class Arg1, class Arg2>
163 struct FunctorCaller2 : public BaseFunctorCaller<FunctorCaller2<Functor, R , Arg1, Arg2>, Functor>
164 {
165  typedef R ResultType;
166  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2);
167 
168  explicit FunctorCaller2(const Functor &functor) : BaseFunctorCaller<FunctorCaller2, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller2<Functor, R , Arg1, Arg2>::invoke)) {}
169 
170  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2)
171  {
173  Type *typed = static_cast<Type*>(call);
174  return (typed->functor)(a1, a2);
175  }
176 };
177 
178 template <class R , class Arg1, class Arg2>
179 struct Callback2 : public BaseCallback
180 {
181  typedef R (*FunctionType)(Arg1, Arg2);
182  typedef R ResultType;
183 
185  template <class Functor>
186  Callback2(const Functor &functor) : BaseCallback(new FunctorCaller2<Functor, R , Arg1, Arg2>(functor)) {}
187 
188  ResultType operator()(Arg1 a1, Arg2 a2) const
189  {
190  if (caller) {
191  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2);
192  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
193  return invokeMethod(caller , a1, a2);
194  }
195  return ResultType();
196  }
197 };
198 
199 template <class Functor, class R , class Arg1, class Arg2, class Arg3>
200 struct FunctorCaller3 : public BaseFunctorCaller<FunctorCaller3<Functor, R , Arg1, Arg2, Arg3>, Functor>
201 {
202  typedef R ResultType;
203  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3);
204 
205  explicit FunctorCaller3(const Functor &functor) : BaseFunctorCaller<FunctorCaller3, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller3<Functor, R , Arg1, Arg2, Arg3>::invoke)) {}
206 
207  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3)
208  {
210  Type *typed = static_cast<Type*>(call);
211  return (typed->functor)(a1, a2, a3);
212  }
213 };
214 
215 template <class R , class Arg1, class Arg2, class Arg3>
216 struct Callback3 : public BaseCallback
217 {
218  typedef R (*FunctionType)(Arg1, Arg2, Arg3);
219  typedef R ResultType;
220 
222  template <class Functor>
223  Callback3(const Functor &functor) : BaseCallback(new FunctorCaller3<Functor, R , Arg1, Arg2, Arg3>(functor)) {}
224 
225  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const
226  {
227  if (caller) {
228  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3);
229  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
230  return invokeMethod(caller , a1, a2, a3);
231  }
232  return ResultType();
233  }
234 };
235 
236 template <class Functor, class R , class Arg1, class Arg2, class Arg3, class Arg4>
237 struct FunctorCaller4 : public BaseFunctorCaller<FunctorCaller4<Functor, R , Arg1, Arg2, Arg3, Arg4>, Functor>
238 {
239  typedef R ResultType;
240  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4);
241 
242  explicit FunctorCaller4(const Functor &functor) : BaseFunctorCaller<FunctorCaller4, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller4<Functor, R , Arg1, Arg2, Arg3, Arg4>::invoke)) {}
243 
244  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4)
245  {
247  Type *typed = static_cast<Type*>(call);
248  return (typed->functor)(a1, a2, a3, a4);
249  }
250 };
251 
252 template <class R , class Arg1, class Arg2, class Arg3, class Arg4>
253 struct Callback4 : public BaseCallback
254 {
255  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4);
256  typedef R ResultType;
257 
259  template <class Functor>
260  Callback4(const Functor &functor) : BaseCallback(new FunctorCaller4<Functor, R , Arg1, Arg2, Arg3, Arg4>(functor)) {}
261 
262  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
263  {
264  if (caller) {
265  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4);
266  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
267  return invokeMethod(caller , a1, a2, a3, a4);
268  }
269  return ResultType();
270  }
271 };
272 
273 template <class Functor, class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
274 struct FunctorCaller5 : public BaseFunctorCaller<FunctorCaller5<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5>, Functor>
275 {
276  typedef R ResultType;
277  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5);
278 
279  explicit FunctorCaller5(const Functor &functor) : BaseFunctorCaller<FunctorCaller5, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller5<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5>::invoke)) {}
280 
281  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5)
282  {
284  Type *typed = static_cast<Type*>(call);
285  return (typed->functor)(a1, a2, a3, a4, a5);
286  }
287 };
288 
289 template <class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
290 struct Callback5 : public BaseCallback
291 {
292  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5);
293  typedef R ResultType;
294 
296  template <class Functor>
297  Callback5(const Functor &functor) : BaseCallback(new FunctorCaller5<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5>(functor)) {}
298 
299  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
300  {
301  if (caller) {
302  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5);
303  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
304  return invokeMethod(caller , a1, a2, a3, a4, a5);
305  }
306  return ResultType();
307  }
308 };
309 
310 template <class Functor, class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
311 struct FunctorCaller6 : public BaseFunctorCaller<FunctorCaller6<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6>, Functor>
312 {
313  typedef R ResultType;
314  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
315 
316  explicit FunctorCaller6(const Functor &functor) : BaseFunctorCaller<FunctorCaller6, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller6<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6>::invoke)) {}
317 
318  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6)
319  {
321  Type *typed = static_cast<Type*>(call);
322  return (typed->functor)(a1, a2, a3, a4, a5, a6);
323  }
324 };
325 
326 template <class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
327 struct Callback6 : public BaseCallback
328 {
329  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
330  typedef R ResultType;
331 
333  template <class Functor>
334  Callback6(const Functor &functor) : BaseCallback(new FunctorCaller6<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6>(functor)) {}
335 
336  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
337  {
338  if (caller) {
339  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
340  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
341  return invokeMethod(caller , a1, a2, a3, a4, a5, a6);
342  }
343  return ResultType();
344  }
345 };
346 
347 template <class Functor, class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
348 struct FunctorCaller7 : public BaseFunctorCaller<FunctorCaller7<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7>, Functor>
349 {
350  typedef R ResultType;
351  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
352 
353  explicit FunctorCaller7(const Functor &functor) : BaseFunctorCaller<FunctorCaller7, Functor>(functor, reinterpret_cast<AbstractFunctorCaller::HookType>(&FunctorCaller7<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7>::invoke)) {}
354 
355  static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7)
356  {
358  Type *typed = static_cast<Type*>(call);
359  return (typed->functor)(a1, a2, a3, a4, a5, a6, a7);
360  }
361 };
362 
363 template <class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
364 struct Callback7 : public BaseCallback
365 {
366  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
367  typedef R ResultType;
368 
370  template <class Functor>
371  Callback7(const Functor &functor) : BaseCallback(new FunctorCaller7<Functor, R , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7>(functor)) {}
372 
373  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
374  {
375  if (caller) {
376  typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
377  InvokeType invokeMethod = reinterpret_cast<InvokeType>(caller->invokeMethodHook);
378  return invokeMethod(caller , a1, a2, a3, a4, a5, a6, a7);
379  }
380  return ResultType();
381  }
382 };
383 
384 }
385 
386 #endif
R ResultType
Definition: callbacks.h:108
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Definition: callbacks.h:329
R(* FunctionType)(Arg1, Arg2)
Definition: callbacks.h:181
Callback1()
Definition: callbacks.h:147
Callback4()
Definition: callbacks.h:258
Base class for all the callback classes.
Definition: callbacks.h:65
Callback1(const Functor &functor)
Definition: callbacks.h:149
Callback5()
Definition: callbacks.h:295
Callback with 7 arguments.
Definition: callbacks.h:364
R ResultType
Definition: callbacks.h:256
Functor functor
Definition: callbacks.h:62
FunctorCaller1(const Functor &functor)
Definition: callbacks.h:131
R ResultType
Definition: callbacks.h:202
FunctorCaller5(const Functor &functor)
Definition: callbacks.h:279
R ResultType
Definition: callbacks.h:128
R(* InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5)
Definition: callbacks.h:277
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1)
Definition: callbacks.h:133
R(* FunctionType)(Arg1, Arg2, Arg3)
Definition: callbacks.h:218
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const
Definition: callbacks.h:225
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6)
Definition: callbacks.h:318
Definition: callbacks.h:163
Callback6()
Definition: callbacks.h:332
Definition: callbacks.h:348
AbstractFunctorCaller(HookType invokeMethodHook)
Definition: callbacks.h:40
Callback with 3 arguments.
Definition: callbacks.h:216
Definition: callbacks.h:274
virtual AbstractFunctorCaller * clone() const
Definition: callbacks.h:60
R ResultType
Definition: callbacks.h:276
FunctorCaller2(const Functor &functor)
Definition: callbacks.h:168
FunctorCaller6(const Functor &functor)
Definition: callbacks.h:316
Callback6(const Functor &functor)
Definition: callbacks.h:334
FunctorCaller4(const Functor &functor)
Definition: callbacks.h:242
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
Definition: callbacks.h:373
FunctorCaller0(const Functor &functor)
Definition: callbacks.h:94
R(* FunctionType)(Arg1)
Definition: callbacks.h:144
Callback3()
Definition: callbacks.h:221
R ResultType
Definition: callbacks.h:165
Callback7()
Definition: callbacks.h:369
BaseCallback(const BaseCallback &other)
Definition: callbacks.h:70
R ResultType
Definition: callbacks.h:145
virtual ~AbstractFunctorCaller()
Definition: callbacks.h:41
BaseFunctorCaller(const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
Definition: callbacks.h:55
Callback5(const Functor &functor)
Definition: callbacks.h:297
R(* InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
Definition: callbacks.h:351
R(* InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3)
Definition: callbacks.h:203
BaseCallback & operator=(const BaseCallback &other)
Definition: callbacks.h:75
virtual ~BaseCallback()
Definition: callbacks.h:71
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5)
Definition: callbacks.h:281
Definition: callbacks.h:311
Callback with 6 arguments.
Definition: callbacks.h:327
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
Definition: callbacks.h:262
Definition: callbacks.h:237
R ResultType
Definition: callbacks.h:219
Definition: callbacks.h:53
Callback4(const Functor &functor)
Definition: callbacks.h:260
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7)
Definition: callbacks.h:355
R(* FunctionType)()
Definition: callbacks.h:107
ResultType operator()(Arg1 a1) const
Definition: callbacks.h:151
Definition: callbacks.h:126
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4)
Definition: callbacks.h:255
virtual ~BaseFunctorCaller()
Definition: callbacks.h:58
FunctorCaller7(const Functor &functor)
Definition: callbacks.h:353
R ResultType
Definition: callbacks.h:239
Callback with 2 arguments.
Definition: callbacks.h:179
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
Definition: callbacks.h:336
Callback with 0 arguments.
Definition: callbacks.h:105
AbstractFunctorCaller * caller
Definition: callbacks.h:85
R ResultType
Definition: callbacks.h:91
Callback2(const Functor &functor)
Definition: callbacks.h:186
R ResultType
Definition: callbacks.h:330
Callback0(const Functor &functor)
Definition: callbacks.h:112
Callback with 5 arguments.
Definition: callbacks.h:290
virtual AbstractFunctorCaller * clone() const =0
HookType invokeMethodHook
Definition: callbacks.h:45
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3)
Definition: callbacks.h:207
Callback3(const Functor &functor)
Definition: callbacks.h:223
R ResultType
Definition: callbacks.h:293
Definition: callbacks.h:36
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1, Arg2 a2)
Definition: callbacks.h:170
R(* InvokeType)(AbstractFunctorCaller *, Arg1)
Definition: callbacks.h:129
Definition: callbacks.h:89
Callback0()
Definition: callbacks.h:110
void *(* HookType)(void *)
Definition: callbacks.h:38
ResultType operator()() const
Definition: callbacks.h:114
Callback with 1 argument.
Definition: callbacks.h:142
FunctorCaller3(const Functor &functor)
Definition: callbacks.h:205
Definition: callbacks.h:200
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5)
Definition: callbacks.h:292
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
Definition: callbacks.h:366
R(* InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4)
Definition: callbacks.h:240
ResultType operator()(Arg1 a1, Arg2 a2) const
Definition: callbacks.h:188
R ResultType
Definition: callbacks.h:350
static ResultType invoke(AbstractFunctorCaller *call)
Definition: callbacks.h:96
R ResultType
Definition: callbacks.h:182
BaseCallback(AbstractFunctorCaller *caller)
Definition: callbacks.h:69
BaseCallback()
Definition: callbacks.h:67
R ResultType
Definition: callbacks.h:313
R(* InvokeType)(AbstractFunctorCaller *, Arg1, Arg2)
Definition: callbacks.h:166
Callback2()
Definition: callbacks.h:184
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
Definition: callbacks.h:299
bool isValid() const
Definition: callbacks.h:73
Callback7(const Functor &functor)
Definition: callbacks.h:371
static ResultType invoke(AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4)
Definition: callbacks.h:244
R ResultType
Definition: callbacks.h:367
R(* InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Definition: callbacks.h:314
R(* InvokeType)(AbstractFunctorCaller *)
Definition: callbacks.h:92
Callback with 4 arguments.
Definition: callbacks.h:253


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01234.html0000644000175100017520000002172212530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AccountInterfaceAvatarInterface Member List

This is the complete list of members for Tp::Client::AccountInterfaceAvatarInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AccountInterfaceAvatarInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterfaceAvatarInterface
AccountInterfaceAvatarInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterfaceAvatarInterface
AccountInterfaceAvatarInterface(Tp::DBusProxy *proxy)Tp::Client::AccountInterfaceAvatarInterface
AccountInterfaceAvatarInterface(const Tp::Client::AccountInterface &mainInterface)Tp::Client::AccountInterfaceAvatarInterfaceexplicit
AccountInterfaceAvatarInterface(const Tp::Client::AccountInterface &mainInterface, QObject *parent)Tp::Client::AccountInterfaceAvatarInterface
AvatarChanged()Tp::Client::AccountInterfaceAvatarInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::AccountInterfaceAvatarInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::AccountInterfaceAvatarInterfaceinline
requestPropertyAvatar() const Tp::Client::AccountInterfaceAvatarInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyAvatar(Tp::Avatar newValue)Tp::Client::AccountInterfaceAvatarInterfaceinline
staticInterfaceName()Tp::Client::AccountInterfaceAvatarInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00018.html0000644000175100017520000000324312530426257021133 0ustar00kaffeinekaffeine00000000000000 Contact Messenger Example
   Home · All Classes · All Namespaces · Modules · Functions · Files
Contact Messenger Example


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x68.html0000644000175100017520000003451112530426260023113 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- h -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00332.html0000644000175100017520000001353412530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSSRCsMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSSRCsMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, UIntList >.

Public Member Functions

 ContactSSRCsMap ()
 
 ContactSSRCsMap (const QMap< uint, UIntList > &a)
 
ContactSSRCsMapoperator= (const QMap< uint, UIntList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, UIntList>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::ContactSSRCsMap::ContactSSRCsMap ( )
inline
Tp::ContactSSRCsMap::ContactSSRCsMap ( const QMap< uint, UIntList > &  a)
inline

Member Function Documentation

ContactSSRCsMap& Tp::ContactSSRCsMap::operator= ( const QMap< uint, UIntList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00087.html0000644000175100017520000003201612530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::AndFilter< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The AndFilter class provides a generic filter object to be used in conjunction of other filters. More...

#include <TelepathyQt/AndFilter>

Inherits Tp::Filter< T >.

Public Member Functions

virtual ~AndFilter ()
 
virtual bool isValid () const
 
virtual bool matches (const SharedPtr< T > &t) const
 
QList< SharedPtr< const Filter
< T > > > 
filters () const
 
- Public Member Functions inherited from Tp::Filter< T >
virtual ~Filter ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SharedPtr< AndFilter< T > > create (const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >())
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Filter< T >
 Filter ()
 

Detailed Description

template<class T>
class Tp::AndFilter< T >

The AndFilter class provides a generic filter object to be used in conjunction of other filters.

The AndFilter will match if all of its given list of filters matches their criteria.

Constructor & Destructor Documentation

template<class T >
virtual Tp::AndFilter< T >::~AndFilter ( )
inlinevirtual

Member Function Documentation

template<class T >
static SharedPtr<AndFilter<T> > Tp::AndFilter< T >::create ( const QList< SharedPtr< const Filter< T > > > &  filters = QList<SharedPtr<const Filter<T> > >())
inlinestatic
template<class T >
virtual bool Tp::AndFilter< T >::isValid ( ) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
virtual bool Tp::AndFilter< T >::matches ( const SharedPtr< T > &  t) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
QList<SharedPtr<const Filter<T> > > Tp::AndFilter< T >::filters ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01048.html0000644000175100017520000011022712530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::IncomingFileTransferChannel Member List

This is the complete list of members for Tp::IncomingFileTransferChannel, including all inherited members.

acceptFile(qulonglong offset, QIODevice *output)Tp::IncomingFileTransferChannel
actualFeatures() const Tp::ReadyObjectvirtual
availableSocketTypes() const Tp::FileTransferChannelprotected
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
cancel()Tp::FileTransferChannel
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
contentHash() const Tp::FileTransferChannel
contentHashType() const Tp::FileTransferChannel
contentType() const Tp::FileTransferChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::IncomingFileTransferChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
description() const Tp::FileTransferChannel
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::IncomingFileTransferChannelstatic
fileName() const Tp::FileTransferChannel
FileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore)Tp::FileTransferChannelprotected
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
IncomingFileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=IncomingFileTransferChannel::FeatureCore)Tp::IncomingFileTransferChannelprotected
initialOffset() const Tp::FileTransferChannel
initialOffsetDefined(qulonglong initialOffset)Tp::FileTransferChannelsignal
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isConnected() const Tp::FileTransferChannelprotected
isFinished() const Tp::FileTransferChannelprotected
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
lastModificationTime() const Tp::FileTransferChannel
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
onUriDefined(const QString &uri)Tp::FileTransferChannelprotectedslot
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
setBusName(const QString &busName)Tp::DBusProxyprotected
setConnected()Tp::FileTransferChannelprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setUri(const QString &uri)Tp::IncomingFileTransferChannel
size() const Tp::FileTransferChannel
state() const Tp::FileTransferChannel
stateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason)Tp::FileTransferChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
stateReason() const Tp::FileTransferChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
transferredBytes() const Tp::FileTransferChannel
transferredBytesChanged(qulonglong count)Tp::FileTransferChannelsignal
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
uri() const Tp::FileTransferChannel
uriDefined(const QString &uri)Tp::IncomingFileTransferChannelsignal
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~FileTransferChannel()Tp::FileTransferChannelvirtual
~IncomingFileTransferChannel()Tp::IncomingFileTransferChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01362.html0000644000175100017520000001532612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeStreamedMediaAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeStreamedMediaAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
ImmutableStreams() const Tp::Service::ChannelTypeStreamedMediaAdaptor
InitialAudio() const Tp::Service::ChannelTypeStreamedMediaAdaptor
InitialVideo() const Tp::Service::ChannelTypeStreamedMediaAdaptor
ListStreams(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeStreamedMediaAdaptorslot
RemoveStreams(const Tp::UIntList &streams, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeStreamedMediaAdaptorslot
RequestStreamDirection(uint streamID, uint streamDirection, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeStreamedMediaAdaptorslot
RequestStreams(uint contactHandle, const Tp::UIntList &types, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeStreamedMediaAdaptorslot
StreamAdded(uint streamID, uint contactHandle, uint streamType)Tp::Service::ChannelTypeStreamedMediaAdaptorsignal
StreamDirectionChanged(uint streamID, uint streamDirection, uint pendingFlags)Tp::Service::ChannelTypeStreamedMediaAdaptorsignal
StreamError(uint streamID, uint errorCode, const QString &message)Tp::Service::ChannelTypeStreamedMediaAdaptorsignal
StreamRemoved(uint streamID)Tp::Service::ChannelTypeStreamedMediaAdaptorsignal
StreamStateChanged(uint streamID, uint streamState)Tp::Service::ChannelTypeStreamedMediaAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00146.html0000644000175100017520000012044712530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentInterfaceDTMFInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceDTMFInterface Class Reference

#include <TelepathyQt/CallContent>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply StartTone (uchar event, int timeout=-1)
 
QDBusPendingReply StopTone (int timeout=-1)
 
QDBusPendingReply MultipleTones (const QString &tones, int timeout=-1)
 

Signals

void TonesDeferred (const QString &tones)
 
void SendingTones (const QString &tones)
 
void StoppedTones (bool cancelled)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallContentInterfaceDTMFInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceDTMFInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceDTMFInterface (Tp::DBusProxy *proxy)
 
 CallContentInterfaceDTMFInterface (const Tp::Client::CallContentInterface &mainInterface)
 
 CallContentInterfaceDTMFInterface (const Tp::Client::CallContentInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyCurrentlySendingTones () const
 
Tp::PendingVariantrequestPropertyDeferredTones () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF".

Constructor & Destructor Documentation

Tp::Client::CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceDTMFInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceDTMFInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface ( Tp::DBusProxy proxy)

Creates a CallContentInterfaceDTMFInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface ( const Tp::Client::CallContentInterface mainInterface)
explicit

Creates a CallContentInterfaceDTMFInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentInterfaceDTMFInterface::CallContentInterfaceDTMFInterface ( const Tp::Client::CallContentInterface mainInterface,
QObject *  parent 
)

Creates a CallContentInterfaceDTMFInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentInterfaceDTMFInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentInterfaceDTMFInterface::requestPropertyCurrentlySendingTones ( ) const
inline

Asynchronous getter for the remote object property CurrentlySendingTones of type bool.

Indicates whether there are DTMF tones currently being sent in the channel. If so, the client should wait for StoppedTones signal before trying to send more tones.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceDTMFInterface::requestPropertyDeferredTones ( ) const
inline

Asynchronous getter for the remote object property DeferredTones of type QString.

The tones waiting for the user to continue, if any.

When this property is set to a non-empty value, TonesDeferred() is emitted. When any tones are played (i.e. whenever SendingTones() is emitted), this property is reset to the empty string.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentInterfaceDTMFInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallContentInterfaceDTMFInterface::StartTone ( uchar  event,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StartTone on the remote object.

Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until StopTone is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable. The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
event
A numeric event code from the DTMF_Event enum.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallContentInterfaceDTMFInterface::StopTone ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method StopTone on the remote object.

Stop sending any DTMF tones which have been started using the StartTone or MultipleTones methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. On some protocols it might be impossible to cancel queued tones immediately.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallContentInterfaceDTMFInterface::MultipleTones ( const QString &  tones,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method MultipleTones on the remote object.

Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager. In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence. The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as audio/telephone-event. Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
tones

A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:

  • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of DTMF_Event
  • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds
  • 'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the TonesDeferred() signal with the rest of the string as its argument: see that signal for details
timeoutThe timeout in milliseconds.
void Tp::Client::CallContentInterfaceDTMFInterface::TonesDeferred ( const QString &  tones)
signal

Represents the signal TonesDeferred on the remote object.

Emitted when 'w' or 'W', indicating "wait for the user to continue", is encountered while playing a DTMF string queued by MultipleTones() . Any queued DTMF events after the 'w', which have not yet been played, are placed in the DeferredTones property and copied into this signal's argument.

When the channel handler is ready to continue, it MAY pass the value of DeferredTones to MultipleTones() , to resume sending. Alternatively, it MAY ignore the deferred tones, or even play different tones instead. Any deferred tones are discarded the next time a tone is played.

This signal SHOULD NOT be emitted if there is nothing left to play, i.e. if the 'w' was the last character in the DTMF string.

Parameters
tones
The new non-empty value of DeferredTones.
void Tp::Client::CallContentInterfaceDTMFInterface::SendingTones ( const QString &  tones)
signal

Represents the signal SendingTones on the remote object.

DTMF tone(s)are being sent to all eligible streams in the channel. The signal is provided to indicating the fact that the streams are currently being used to send one or more DTMF tones, so any other media input is not getting through to the audio stream. It also serves as a cue for the StopTone() method.

Parameters
tones
DTMF string (one or more events) that is to be played.
void Tp::Client::CallContentInterfaceDTMFInterface::StoppedTones ( bool  cancelled)
signal

Represents the signal StoppedTones on the remote object.

DTMF tones have finished playing on streams in this channel.

Parameters
cancelled
True if the DTMF tones were actively cancelled via StopTone.
void Tp::Client::CallContentInterfaceDTMFInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01107.html0000644000175100017520000001252612530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingVoid Member List

This is the complete list of members for Tp::PendingVoid, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
PendingVoid(QDBusPendingCall call, const SharedPtr< RefCounted > &object)Tp::PendingVoid
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00856_source.html0000644000175100017520000173421512530426257022540 0ustar00kaffeinekaffeine00000000000000 types.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
build/TelepathyQt/_gen/types.h
1 /* Generated from Telepathy D-Bus Interface Specification, TelepathyQt copy, version 0.17.7 */
2 
3 #ifndef IN_TP_QT_HEADER
4 #error IN_TP_QT_HEADER
5 #endif
6 
7 #include <QtGlobal>
8 
9 #include <QByteArray>
10 #include <QString>
11 #include <QStringList>
12 #include <QVariantList>
13 #include <QVariantMap>
14 
15 #include <QDBusArgument>
16 #include <QDBusMetaType>
17 #include <QDBusObjectPath>
18 #include <QDBusSignature>
19 #include <QDBusVariant>
20 
21 #include <TelepathyQt/Global>
22 
51 namespace Tp
52 {
61 struct TP_QT_EXPORT ByteArrayList : public QList<QByteArray>
62 {
63  inline ByteArrayList() : QList<QByteArray>() {}
64  inline ByteArrayList(const QList<QByteArray>& a) : QList<QByteArray>(a) {}
65 
66  inline ByteArrayList& operator=(const QList<QByteArray>& a)
67  {
68  *(static_cast<QList<QByteArray>*>(this)) = a;
69  return *this;
70  }
71 };
72 
81 struct TP_QT_EXPORT ObjectPathList : public QList<QDBusObjectPath>
82 {
83  inline ObjectPathList() : QList<QDBusObjectPath>() {}
84  inline ObjectPathList(const QList<QDBusObjectPath>& a) : QList<QDBusObjectPath>(a) {}
85 
86  inline ObjectPathList& operator=(const QList<QDBusObjectPath>& a)
87  {
88  *(static_cast<QList<QDBusObjectPath>*>(this)) = a;
89  return *this;
90  }
91 };
92 
101 struct TP_QT_EXPORT UIntList : public QList<uint>
102 {
103  inline UIntList() : QList<uint>() {}
104  inline UIntList(const QList<uint>& a) : QList<uint>(a) {}
105 
106  inline UIntList& operator=(const QList<uint>& a)
107  {
108  *(static_cast<QList<uint>*>(this)) = a;
109  return *this;
110  }
111 };
112 
130 struct TP_QT_EXPORT AccessControl
131 {
135  uint type;
140  QDBusVariant detail;
141 };
142 
143 TP_QT_EXPORT bool operator==(const AccessControl& v1, const AccessControl& v2);
144 inline bool operator!=(const AccessControl& v1, const AccessControl& v2)
145 {
146  return !operator==(v1, v2);
147 }
148 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const AccessControl& val);
149 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, AccessControl& val);
150 
161 struct TP_QT_EXPORT AddressingNormalizationMap : public QMap<QString, uint>
162 {
163  inline AddressingNormalizationMap() : QMap<QString, uint>() {}
164  inline AddressingNormalizationMap(const QMap<QString, uint>& a) : QMap<QString, uint>(a) {}
165 
166  inline AddressingNormalizationMap& operator=(const QMap<QString, uint>& a)
167  {
168  *(static_cast<QMap<QString, uint>*>(this)) = a;
169  return *this;
170  }
171 };
172 
183 struct TP_QT_EXPORT AliasMap : public QMap<uint, QString>
184 {
185  inline AliasMap() : QMap<uint, QString>() {}
186  inline AliasMap(const QMap<uint, QString>& a) : QMap<uint, QString>(a) {}
187 
188  inline AliasMap& operator=(const QMap<uint, QString>& a)
189  {
190  *(static_cast<QMap<uint, QString>*>(this)) = a;
191  return *this;
192  }
193 };
194 
204 struct TP_QT_EXPORT AliasPair
205 {
206  uint handle;
207  QString alias;
208 };
209 
210 TP_QT_EXPORT bool operator==(const AliasPair& v1, const AliasPair& v2);
211 inline bool operator!=(const AliasPair& v1, const AliasPair& v2)
212 {
213  return !operator==(v1, v2);
214 }
215 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const AliasPair& val);
216 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, AliasPair& val);
217 
224 typedef QList<AliasPair> AliasPairList;
225 
240 struct TP_QT_EXPORT Avatar
241 {
242  QByteArray avatarData;
243  QString MIMEType;
244 };
245 
246 TP_QT_EXPORT bool operator==(const Avatar& v1, const Avatar& v2);
247 inline bool operator!=(const Avatar& v1, const Avatar& v2)
248 {
249  return !operator==(v1, v2);
250 }
251 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const Avatar& val);
252 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, Avatar& val);
253 
265 struct TP_QT_EXPORT AvatarTokenMap : public QMap<uint, QString>
266 {
267  inline AvatarTokenMap() : QMap<uint, QString>() {}
268  inline AvatarTokenMap(const QMap<uint, QString>& a) : QMap<uint, QString>(a) {}
269 
270  inline AvatarTokenMap& operator=(const QMap<uint, QString>& a)
271  {
272  *(static_cast<QMap<uint, QString>*>(this)) = a;
273  return *this;
274  }
275 };
276 
287 struct TP_QT_EXPORT CallMemberMap : public QMap<uint, uint>
288 {
289  inline CallMemberMap() : QMap<uint, uint>() {}
290  inline CallMemberMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}
291 
292  inline CallMemberMap& operator=(const QMap<uint, uint>& a)
293  {
294  *(static_cast<QMap<uint, uint>*>(this)) = a;
295  return *this;
296  }
297 };
298 
305 typedef QList<CallMemberMap> CallMemberMapList;
306 
320 struct TP_QT_EXPORT CallStateReason
321 {
326  uint actor;
332  uint reason;
353  QString DBusReason;
359  QString message;
360 };
361 
362 TP_QT_EXPORT bool operator==(const CallStateReason& v1, const CallStateReason& v2);
363 inline bool operator!=(const CallStateReason& v1, const CallStateReason& v2)
364 {
365  return !operator==(v1, v2);
366 }
367 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CallStateReason& val);
368 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CallStateReason& val);
369 
379 struct TP_QT_EXPORT Candidate
380 {
384  uint component;
388  QString IP;
392  uint port;
396  QVariantMap info;
397 };
398 
399 TP_QT_EXPORT bool operator==(const Candidate& v1, const Candidate& v2);
400 inline bool operator!=(const Candidate& v1, const Candidate& v2)
401 {
402  return !operator==(v1, v2);
403 }
404 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const Candidate& val);
405 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, Candidate& val);
406 
413 typedef QList<Candidate> CandidateList;
414 
474 struct TP_QT_EXPORT CandidateInfo : public QMap<QString, QDBusVariant>
475 {
476  inline CandidateInfo() : QMap<QString, QDBusVariant>() {}
477  inline CandidateInfo(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
478 
479  inline CandidateInfo& operator=(const QMap<QString, QDBusVariant>& a)
480  {
481  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
482  return *this;
483  }
484 };
485 
498 struct TP_QT_EXPORT CapabilityChange
499 {
500  uint handle;
501  QString channelType;
506 };
507 
508 TP_QT_EXPORT bool operator==(const CapabilityChange& v1, const CapabilityChange& v2);
509 inline bool operator!=(const CapabilityChange& v1, const CapabilityChange& v2)
510 {
511  return !operator==(v1, v2);
512 }
513 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CapabilityChange& val);
514 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CapabilityChange& val);
515 
522 typedef QList<CapabilityChange> CapabilityChangeList;
523 
534 struct TP_QT_EXPORT CapabilityPair
535 {
536  QString channelType;
538 };
539 
540 TP_QT_EXPORT bool operator==(const CapabilityPair& v1, const CapabilityPair& v2);
541 inline bool operator!=(const CapabilityPair& v1, const CapabilityPair& v2)
542 {
543  return !operator==(v1, v2);
544 }
545 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CapabilityPair& val);
546 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CapabilityPair& val);
547 
554 typedef QList<CapabilityPair> CapabilityPairList;
555 
568 struct TP_QT_EXPORT CaptchaAnswers : public QMap<uint, QString>
569 {
570  inline CaptchaAnswers() : QMap<uint, QString>() {}
571  inline CaptchaAnswers(const QMap<uint, QString>& a) : QMap<uint, QString>(a) {}
572 
573  inline CaptchaAnswers& operator=(const QMap<uint, QString>& a)
574  {
575  *(static_cast<QMap<uint, QString>*>(this)) = a;
576  return *this;
577  }
578 };
579 
592 struct TP_QT_EXPORT CaptchaInfo
593 {
601  uint ID;
611  QString type;
643  QString label;
649  uint flags;
656  QStringList availableMIMETypes;
657 };
658 
659 TP_QT_EXPORT bool operator==(const CaptchaInfo& v1, const CaptchaInfo& v2);
660 inline bool operator!=(const CaptchaInfo& v1, const CaptchaInfo& v2)
661 {
662  return !operator==(v1, v2);
663 }
664 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CaptchaInfo& val);
665 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CaptchaInfo& val);
666 
673 typedef QList<CaptchaInfo> CaptchaInfoList;
674 
685 struct TP_QT_EXPORT ChannelCallStateMap : public QMap<uint, uint>
686 {
687  inline ChannelCallStateMap() : QMap<uint, uint>() {}
688  inline ChannelCallStateMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}
689 
690  inline ChannelCallStateMap& operator=(const QMap<uint, uint>& a)
691  {
692  *(static_cast<QMap<uint, uint>*>(this)) = a;
693  return *this;
694  }
695 };
696 
722 struct TP_QT_EXPORT ChannelClass : public QMap<QString, QDBusVariant>
723 {
724  inline ChannelClass() : QMap<QString, QDBusVariant>() {}
725  inline ChannelClass(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
726 
727  inline ChannelClass& operator=(const QMap<QString, QDBusVariant>& a)
728  {
729  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
730  return *this;
731  }
732 };
733 
740 typedef QList<ChannelClass> ChannelClassList;
741 
752 struct TP_QT_EXPORT ChannelDetails
753 {
757  QDBusObjectPath channel;
803  QVariantMap properties;
804 };
805 
806 TP_QT_EXPORT bool operator==(const ChannelDetails& v1, const ChannelDetails& v2);
807 inline bool operator!=(const ChannelDetails& v1, const ChannelDetails& v2)
808 {
809  return !operator==(v1, v2);
810 }
811 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ChannelDetails& val);
812 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ChannelDetails& val);
813 
820 typedef QList<ChannelDetails> ChannelDetailsList;
821 
832 struct TP_QT_EXPORT ChannelInfo
833 {
838  QDBusObjectPath channel;
842  QString channelType;
852  uint handle;
853 };
854 
855 TP_QT_EXPORT bool operator==(const ChannelInfo& v1, const ChannelInfo& v2);
856 inline bool operator!=(const ChannelInfo& v1, const ChannelInfo& v2)
857 {
858  return !operator==(v1, v2);
859 }
860 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ChannelInfo& val);
861 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ChannelInfo& val);
862 
869 typedef QList<ChannelInfo> ChannelInfoList;
870 
885 struct TP_QT_EXPORT ChannelOriginatorMap : public QMap<uint, QDBusObjectPath>
886 {
887  inline ChannelOriginatorMap() : QMap<uint, QDBusObjectPath>() {}
888  inline ChannelOriginatorMap(const QMap<uint, QDBusObjectPath>& a) : QMap<uint, QDBusObjectPath>(a) {}
889 
890  inline ChannelOriginatorMap& operator=(const QMap<uint, QDBusObjectPath>& a)
891  {
892  *(static_cast<QMap<uint, QDBusObjectPath>*>(this)) = a;
893  return *this;
894  }
895 };
896 
907 struct TP_QT_EXPORT ChatStateMap : public QMap<uint, uint>
908 {
909  inline ChatStateMap() : QMap<uint, uint>() {}
910  inline ChatStateMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}
911 
912  inline ChatStateMap& operator=(const QMap<uint, uint>& a)
913  {
914  *(static_cast<QMap<uint, uint>*>(this)) = a;
915  return *this;
916  }
917 };
918 
927 struct TP_QT_EXPORT ComponentStateMap : public QMap<uint, uint>
928 {
929  inline ComponentStateMap() : QMap<uint, uint>() {}
930  inline ComponentStateMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}
931 
932  inline ComponentStateMap& operator=(const QMap<uint, uint>& a)
933  {
934  *(static_cast<QMap<uint, uint>*>(this)) = a;
935  return *this;
936  }
937 };
938 
950 struct TP_QT_EXPORT ContactAttributesMap : public QMap<uint, QVariantMap>
951 {
952  inline ContactAttributesMap() : QMap<uint, QVariantMap>() {}
953  inline ContactAttributesMap(const QMap<uint, QVariantMap>& a) : QMap<uint, QVariantMap>(a) {}
954 
955  inline ContactAttributesMap& operator=(const QMap<uint, QVariantMap>& a)
956  {
957  *(static_cast<QMap<uint, QVariantMap>*>(this)) = a;
958  return *this;
959  }
960 };
961 
973 struct TP_QT_EXPORT ContactCapability
974 {
975  uint handle;
976  QString channelType;
979 };
980 
981 TP_QT_EXPORT bool operator==(const ContactCapability& v1, const ContactCapability& v2);
982 inline bool operator!=(const ContactCapability& v1, const ContactCapability& v2)
983 {
984  return !operator==(v1, v2);
985 }
986 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ContactCapability& val);
987 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ContactCapability& val);
988 
995 typedef QList<ContactCapability> ContactCapabilityList;
996 
1007 struct TP_QT_EXPORT ContactClientTypes : public QMap<uint, QStringList>
1008 {
1009  inline ContactClientTypes() : QMap<uint, QStringList>() {}
1010  inline ContactClientTypes(const QMap<uint, QStringList>& a) : QMap<uint, QStringList>(a) {}
1011 
1012  inline ContactClientTypes& operator=(const QMap<uint, QStringList>& a)
1013  {
1014  *(static_cast<QMap<uint, QStringList>*>(this)) = a;
1015  return *this;
1016  }
1017 };
1018 
1106 struct TP_QT_EXPORT ContactInfoField
1107 {
1113  QString fieldName;
1140  QStringList parameters;
1171  QStringList fieldValue;
1172 };
1173 
1174 TP_QT_EXPORT bool operator==(const ContactInfoField& v1, const ContactInfoField& v2);
1175 inline bool operator!=(const ContactInfoField& v1, const ContactInfoField& v2)
1176 {
1177  return !operator==(v1, v2);
1178 }
1179 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ContactInfoField& val);
1180 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ContactInfoField& val);
1181 
1188 typedef QList<ContactInfoField> ContactInfoFieldList;
1189 
1200 struct TP_QT_EXPORT ContactLocations : public QMap<uint, QVariantMap>
1201 {
1202  inline ContactLocations() : QMap<uint, QVariantMap>() {}
1203  inline ContactLocations(const QMap<uint, QVariantMap>& a) : QMap<uint, QVariantMap>(a) {}
1204 
1205  inline ContactLocations& operator=(const QMap<uint, QVariantMap>& a)
1206  {
1207  *(static_cast<QMap<uint, QVariantMap>*>(this)) = a;
1208  return *this;
1209  }
1210 };
1211 
1220 struct TP_QT_EXPORT ContactMediaDescriptionPropertiesMap : public QMap<uint, QVariantMap>
1221 {
1222  inline ContactMediaDescriptionPropertiesMap() : QMap<uint, QVariantMap>() {}
1223  inline ContactMediaDescriptionPropertiesMap(const QMap<uint, QVariantMap>& a) : QMap<uint, QVariantMap>(a) {}
1224 
1225  inline ContactMediaDescriptionPropertiesMap& operator=(const QMap<uint, QVariantMap>& a)
1226  {
1227  *(static_cast<QMap<uint, QVariantMap>*>(this)) = a;
1228  return *this;
1229  }
1230 };
1231 
1240 struct TP_QT_EXPORT ContactSSRCsMap : public QMap<uint, UIntList>
1241 {
1242  inline ContactSSRCsMap() : QMap<uint, UIntList>() {}
1243  inline ContactSSRCsMap(const QMap<uint, UIntList>& a) : QMap<uint, UIntList>(a) {}
1244 
1245  inline ContactSSRCsMap& operator=(const QMap<uint, UIntList>& a)
1246  {
1247  *(static_cast<QMap<uint, UIntList>*>(this)) = a;
1248  return *this;
1249  }
1250 };
1251 
1262 struct TP_QT_EXPORT ContactSearchMap : public QMap<QString, QString>
1263 {
1264  inline ContactSearchMap() : QMap<QString, QString>() {}
1265  inline ContactSearchMap(const QMap<QString, QString>& a) : QMap<QString, QString>(a) {}
1266 
1267  inline ContactSearchMap& operator=(const QMap<QString, QString>& a)
1268  {
1269  *(static_cast<QMap<QString, QString>*>(this)) = a;
1270  return *this;
1271  }
1272 };
1273 
1284 struct TP_QT_EXPORT ContactSendingStateMap : public QMap<uint, uint>
1285 {
1286  inline ContactSendingStateMap() : QMap<uint, uint>() {}
1287  inline ContactSendingStateMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}
1288 
1289  inline ContactSendingStateMap& operator=(const QMap<uint, uint>& a)
1290  {
1291  *(static_cast<QMap<uint, uint>*>(this)) = a;
1292  return *this;
1293  }
1294 };
1295 
1305 struct TP_QT_EXPORT ContactSubscriptions
1306 {
1314  uint publish;
1320 };
1321 
1322 TP_QT_EXPORT bool operator==(const ContactSubscriptions& v1, const ContactSubscriptions& v2);
1323 inline bool operator!=(const ContactSubscriptions& v1, const ContactSubscriptions& v2)
1324 {
1325  return !operator==(v1, v2);
1326 }
1327 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ContactSubscriptions& val);
1328 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ContactSubscriptions& val);
1329 
1352 struct TP_QT_EXPORT CurrencyAmount
1353 {
1363  int amount;
1376  uint scale;
1383  QString currency;
1384 };
1385 
1386 TP_QT_EXPORT bool operator==(const CurrencyAmount& v1, const CurrencyAmount& v2);
1387 inline bool operator!=(const CurrencyAmount& v1, const CurrencyAmount& v2)
1388 {
1389  return !operator==(v1, v2);
1390 }
1391 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CurrencyAmount& val);
1392 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CurrencyAmount& val);
1393 
1404 struct TP_QT_EXPORT DBusTubeMember
1405 {
1409  uint handle;
1413  QString uniqueName;
1414 };
1415 
1416 TP_QT_EXPORT bool operator==(const DBusTubeMember& v1, const DBusTubeMember& v2);
1417 inline bool operator!=(const DBusTubeMember& v1, const DBusTubeMember& v2)
1418 {
1419  return !operator==(v1, v2);
1420 }
1421 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const DBusTubeMember& val);
1422 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, DBusTubeMember& val);
1423 
1430 typedef QList<DBusTubeMember> DBusTubeMemberList;
1431 
1443 struct TP_QT_EXPORT DBusTubeParticipants : public QMap<uint, QString>
1444 {
1445  inline DBusTubeParticipants() : QMap<uint, QString>() {}
1446  inline DBusTubeParticipants(const QMap<uint, QString>& a) : QMap<uint, QString>(a) {}
1447 
1448  inline DBusTubeParticipants& operator=(const QMap<uint, QString>& a)
1449  {
1450  *(static_cast<QMap<uint, QString>*>(this)) = a;
1451  return *this;
1452  }
1453 };
1454 
1464 struct TP_QT_EXPORT DebugMessage
1465 {
1470  double timestamp;
1487  QString domain;
1492  uint level;
1496  QString message;
1497 };
1498 
1499 TP_QT_EXPORT bool operator==(const DebugMessage& v1, const DebugMessage& v2);
1500 inline bool operator!=(const DebugMessage& v1, const DebugMessage& v2)
1501 {
1502  return !operator==(v1, v2);
1503 }
1504 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const DebugMessage& val);
1505 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, DebugMessage& val);
1506 
1513 typedef QList<DebugMessage> DebugMessageList;
1514 
1525 struct TP_QT_EXPORT FieldSpec
1526 {
1530  QString name;
1536  QStringList parameters;
1540  uint flags;
1545  uint max;
1546 };
1547 
1548 TP_QT_EXPORT bool operator==(const FieldSpec& v1, const FieldSpec& v2);
1549 inline bool operator!=(const FieldSpec& v1, const FieldSpec& v2)
1550 {
1551  return !operator==(v1, v2);
1552 }
1553 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const FieldSpec& val);
1554 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, FieldSpec& val);
1555 
1562 typedef QList<FieldSpec> FieldSpecs;
1563 
1608 struct TP_QT_EXPORT HTTPPostData
1609 {
1613  QString key;
1617  QString value;
1618 };
1619 
1620 TP_QT_EXPORT bool operator==(const HTTPPostData& v1, const HTTPPostData& v2);
1621 inline bool operator!=(const HTTPPostData& v1, const HTTPPostData& v2)
1622 {
1623  return !operator==(v1, v2);
1624 }
1625 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const HTTPPostData& val);
1626 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, HTTPPostData& val);
1627 
1634 typedef QList<HTTPPostData> HTTPPostDataList;
1635 
1646 struct TP_QT_EXPORT HandleIdentifierMap : public QMap<uint, QString>
1647 {
1648  inline HandleIdentifierMap() : QMap<uint, QString>() {}
1649  inline HandleIdentifierMap(const QMap<uint, QString>& a) : QMap<uint, QString>(a) {}
1650 
1651  inline HandleIdentifierMap& operator=(const QMap<uint, QString>& a)
1652  {
1653  *(static_cast<QMap<uint, QString>*>(this)) = a;
1654  return *this;
1655  }
1656 };
1657 
1668 struct TP_QT_EXPORT HandleOwnerMap : public QMap<uint, uint>
1669 {
1670  inline HandleOwnerMap() : QMap<uint, uint>() {}
1671  inline HandleOwnerMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}
1672 
1673  inline HandleOwnerMap& operator=(const QMap<uint, uint>& a)
1674  {
1675  *(static_cast<QMap<uint, uint>*>(this)) = a;
1676  return *this;
1677  }
1678 };
1679 
1690 struct TP_QT_EXPORT LocalPendingInfo
1691 {
1699  uint actor;
1703  uint reason;
1708  QString message;
1709 };
1710 
1711 TP_QT_EXPORT bool operator==(const LocalPendingInfo& v1, const LocalPendingInfo& v2);
1712 inline bool operator!=(const LocalPendingInfo& v1, const LocalPendingInfo& v2)
1713 {
1714  return !operator==(v1, v2);
1715 }
1716 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const LocalPendingInfo& val);
1717 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, LocalPendingInfo& val);
1718 
1725 typedef QList<LocalPendingInfo> LocalPendingInfoList;
1726 
1737 struct TP_QT_EXPORT Location : public QMap<QString, QDBusVariant>
1738 {
1739  inline Location() : QMap<QString, QDBusVariant>() {}
1740  inline Location(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
1741 
1742  inline Location& operator=(const QMap<QString, QDBusVariant>& a)
1743  {
1744  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
1745  return *this;
1746  }
1747 };
1748 
1762 struct TP_QT_EXPORT Mail : public QMap<QString, QDBusVariant>
1763 {
1764  inline Mail() : QMap<QString, QDBusVariant>() {}
1765  inline Mail(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
1766 
1767  inline Mail& operator=(const QMap<QString, QDBusVariant>& a)
1768  {
1769  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
1770  return *this;
1771  }
1772 };
1773 
1780 typedef QList<Mail> MailList;
1781 
1802 struct TP_QT_EXPORT MailAddress
1803 {
1807  QString name;
1811  QString address;
1812 };
1813 
1814 TP_QT_EXPORT bool operator==(const MailAddress& v1, const MailAddress& v2);
1815 inline bool operator!=(const MailAddress& v1, const MailAddress& v2)
1816 {
1817  return !operator==(v1, v2);
1818 }
1819 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MailAddress& val);
1820 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MailAddress& val);
1821 
1828 typedef QList<MailAddress> MailAddressList;
1829 
1839 struct TP_QT_EXPORT MediaDescriptionOffer
1840 {
1846  QDBusObjectPath mediaDescription;
1853  QVariantMap properties;
1854 };
1855 
1856 TP_QT_EXPORT bool operator==(const MediaDescriptionOffer& v1, const MediaDescriptionOffer& v2);
1857 inline bool operator!=(const MediaDescriptionOffer& v1, const MediaDescriptionOffer& v2)
1858 {
1859  return !operator==(v1, v2);
1860 }
1861 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaDescriptionOffer& val);
1862 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaDescriptionOffer& val);
1863 
1885 struct TP_QT_EXPORT MediaDescriptionProperties : public QMap<QString, QDBusVariant>
1886 {
1887  inline MediaDescriptionProperties() : QMap<QString, QDBusVariant>() {}
1888  inline MediaDescriptionProperties(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
1889 
1890  inline MediaDescriptionProperties& operator=(const QMap<QString, QDBusVariant>& a)
1891  {
1892  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
1893  return *this;
1894  }
1895 };
1896 
1906 struct TP_QT_EXPORT MediaSessionHandlerInfo
1907 {
1912  QDBusObjectPath sessionHandler;
1917 };
1918 
1919 TP_QT_EXPORT bool operator==(const MediaSessionHandlerInfo& v1, const MediaSessionHandlerInfo& v2);
1921 {
1922  return !operator==(v1, v2);
1923 }
1924 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaSessionHandlerInfo& val);
1925 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaSessionHandlerInfo& val);
1926 
1933 typedef QList<MediaSessionHandlerInfo> MediaSessionHandlerInfoList;
1934 
1942 struct TP_QT_EXPORT MediaStreamHandlerTransport
1943 {
1945  QString IPAddress;
1946  uint port;
1947  uint protocol;
1948  QString subtype;
1949  QString profile;
1952  QString username;
1953  QString password;
1954 };
1955 
1956 TP_QT_EXPORT bool operator==(const MediaStreamHandlerTransport& v1, const MediaStreamHandlerTransport& v2);
1958 {
1959  return !operator==(v1, v2);
1960 }
1961 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamHandlerTransport& val);
1962 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamHandlerTransport& val);
1963 
1970 typedef QList<MediaStreamHandlerTransport> MediaStreamHandlerTransportList;
1971 
1979 struct TP_QT_EXPORT MediaStreamInfo
1980 {
1982  uint contact;
1983  uint type;
1984  uint state;
1987 };
1988 
1989 TP_QT_EXPORT bool operator==(const MediaStreamInfo& v1, const MediaStreamInfo& v2);
1990 inline bool operator!=(const MediaStreamInfo& v1, const MediaStreamInfo& v2)
1991 {
1992  return !operator==(v1, v2);
1993 }
1994 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamInfo& val);
1995 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamInfo& val);
1996 
2003 typedef QList<MediaStreamInfo> MediaStreamInfoList;
2004 
2013 struct TP_QT_EXPORT MessagePart : public QMap<QString, QDBusVariant>
2014 {
2015  inline MessagePart() : QMap<QString, QDBusVariant>() {}
2016  inline MessagePart(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
2017 
2018  inline MessagePart& operator=(const QMap<QString, QDBusVariant>& a)
2019  {
2020  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
2021  return *this;
2022  }
2023 };
2024 
2031 typedef QList<MessagePart> MessagePartList;
2032 
2039 typedef QList<MessagePartList> MessagePartListList;
2040 
2052 struct TP_QT_EXPORT MessagePartContentMap : public QMap<uint, QDBusVariant>
2053 {
2054  inline MessagePartContentMap() : QMap<uint, QDBusVariant>() {}
2055  inline MessagePartContentMap(const QMap<uint, QDBusVariant>& a) : QMap<uint, QDBusVariant>(a) {}
2056 
2057  inline MessagePartContentMap& operator=(const QMap<uint, QDBusVariant>& a)
2058  {
2059  *(static_cast<QMap<uint, QDBusVariant>*>(this)) = a;
2060  return *this;
2061  }
2062 };
2063 
2083 struct TP_QT_EXPORT Metadata : public QMap<QString, QStringList>
2084 {
2085  inline Metadata() : QMap<QString, QStringList>() {}
2086  inline Metadata(const QMap<QString, QStringList>& a) : QMap<QString, QStringList>(a) {}
2087 
2088  inline Metadata& operator=(const QMap<QString, QStringList>& a)
2089  {
2090  *(static_cast<QMap<QString, QStringList>*>(this)) = a;
2091  return *this;
2092  }
2093 };
2094 
2107 struct TP_QT_EXPORT MultipleStatusMap : public QMap<QString, QVariantMap>
2108 {
2109  inline MultipleStatusMap() : QMap<QString, QVariantMap>() {}
2110  inline MultipleStatusMap(const QMap<QString, QVariantMap>& a) : QMap<QString, QVariantMap>(a) {}
2111 
2112  inline MultipleStatusMap& operator=(const QMap<QString, QVariantMap>& a)
2113  {
2114  *(static_cast<QMap<QString, QVariantMap>*>(this)) = a;
2115  return *this;
2116  }
2117 };
2118 
2126 struct TP_QT_EXPORT NotDelegatedError
2127 {
2131  QString errorName;
2135  QString errorMessage;
2136 };
2137 
2138 TP_QT_EXPORT bool operator==(const NotDelegatedError& v1, const NotDelegatedError& v2);
2139 inline bool operator!=(const NotDelegatedError& v1, const NotDelegatedError& v2)
2140 {
2141  return !operator==(v1, v2);
2142 }
2143 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const NotDelegatedError& val);
2144 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, NotDelegatedError& val);
2145 
2156 struct TP_QT_EXPORT ObjectImmutablePropertiesMap : public QMap<QDBusObjectPath, QVariantMap>
2157 {
2158  inline ObjectImmutablePropertiesMap() : QMap<QDBusObjectPath, QVariantMap>() {}
2159  inline ObjectImmutablePropertiesMap(const QMap<QDBusObjectPath, QVariantMap>& a) : QMap<QDBusObjectPath, QVariantMap>(a) {}
2160 
2161  inline ObjectImmutablePropertiesMap& operator=(const QMap<QDBusObjectPath, QVariantMap>& a)
2162  {
2163  *(static_cast<QMap<QDBusObjectPath, QVariantMap>*>(this)) = a;
2164  return *this;
2165  }
2166 };
2167 
2174 typedef QList<ObjectImmutablePropertiesMap> ObjectImmutablePropertiesMapList;
2175 
2186 struct TP_QT_EXPORT ParamSpec
2187 {
2191  QString name;
2195  uint flags;
2199  QString signature;
2205  QDBusVariant defaultValue;
2206 };
2207 
2208 TP_QT_EXPORT bool operator==(const ParamSpec& v1, const ParamSpec& v2);
2209 inline bool operator!=(const ParamSpec& v1, const ParamSpec& v2)
2210 {
2211  return !operator==(v1, v2);
2212 }
2213 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ParamSpec& val);
2214 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ParamSpec& val);
2215 
2222 typedef QList<ParamSpec> ParamSpecList;
2223 
2236 struct TP_QT_EXPORT PendingTextMessage
2237 {
2240  uint sender;
2242  uint flags;
2243  QString text;
2244 };
2245 
2246 TP_QT_EXPORT bool operator==(const PendingTextMessage& v1, const PendingTextMessage& v2);
2247 inline bool operator!=(const PendingTextMessage& v1, const PendingTextMessage& v2)
2248 {
2249  return !operator==(v1, v2);
2250 }
2251 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PendingTextMessage& val);
2252 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PendingTextMessage& val);
2253 
2260 typedef QList<PendingTextMessage> PendingTextMessageList;
2261 
2273 struct TP_QT_EXPORT PropertyFlagsChange
2274 {
2276  uint newFlags;
2277 };
2278 
2279 TP_QT_EXPORT bool operator==(const PropertyFlagsChange& v1, const PropertyFlagsChange& v2);
2280 inline bool operator!=(const PropertyFlagsChange& v1, const PropertyFlagsChange& v2)
2281 {
2282  return !operator==(v1, v2);
2283 }
2284 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PropertyFlagsChange& val);
2285 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PropertyFlagsChange& val);
2286 
2293 typedef QList<PropertyFlagsChange> PropertyFlagsChangeList;
2294 
2305 struct TP_QT_EXPORT PropertySpec
2306 {
2308  QString name;
2309  QString signature;
2310  uint flags;
2311 };
2312 
2313 TP_QT_EXPORT bool operator==(const PropertySpec& v1, const PropertySpec& v2);
2314 inline bool operator!=(const PropertySpec& v1, const PropertySpec& v2)
2315 {
2316  return !operator==(v1, v2);
2317 }
2318 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PropertySpec& val);
2319 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PropertySpec& val);
2320 
2327 typedef QList<PropertySpec> PropertySpecList;
2328 
2340 struct TP_QT_EXPORT PropertyValue
2341 {
2343  QDBusVariant value;
2344 };
2345 
2346 TP_QT_EXPORT bool operator==(const PropertyValue& v1, const PropertyValue& v2);
2347 inline bool operator!=(const PropertyValue& v1, const PropertyValue& v2)
2348 {
2349  return !operator==(v1, v2);
2350 }
2351 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PropertyValue& val);
2352 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PropertyValue& val);
2353 
2360 typedef QList<PropertyValue> PropertyValueList;
2361 
2376 struct TP_QT_EXPORT ProtocolPropertiesMap : public QMap<QString, QVariantMap>
2377 {
2378  inline ProtocolPropertiesMap() : QMap<QString, QVariantMap>() {}
2379  inline ProtocolPropertiesMap(const QMap<QString, QVariantMap>& a) : QMap<QString, QVariantMap>(a) {}
2380 
2381  inline ProtocolPropertiesMap& operator=(const QMap<QString, QVariantMap>& a)
2382  {
2383  *(static_cast<QMap<QString, QVariantMap>*>(this)) = a;
2384  return *this;
2385  }
2386 };
2387 
2399 struct TP_QT_EXPORT QualifiedPropertyValueMap : public QMap<QString, QDBusVariant>
2400 {
2401  inline QualifiedPropertyValueMap() : QMap<QString, QDBusVariant>() {}
2402  inline QualifiedPropertyValueMap(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
2403 
2404  inline QualifiedPropertyValueMap& operator=(const QMap<QString, QDBusVariant>& a)
2405  {
2406  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
2407  return *this;
2408  }
2409 };
2410 
2417 typedef QList<QualifiedPropertyValueMap> QualifiedPropertyValueMapList;
2418 
2428 struct TP_QT_EXPORT RTCPFeedbackMessage
2429 {
2434  QString type;
2440  QString subtype;
2444  QString parameters;
2445 };
2446 
2447 TP_QT_EXPORT bool operator==(const RTCPFeedbackMessage& v1, const RTCPFeedbackMessage& v2);
2448 inline bool operator!=(const RTCPFeedbackMessage& v1, const RTCPFeedbackMessage& v2)
2449 {
2450  return !operator==(v1, v2);
2451 }
2452 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RTCPFeedbackMessage& val);
2453 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RTCPFeedbackMessage& val);
2454 
2461 typedef QList<RTCPFeedbackMessage> RTCPFeedbackMessageList;
2462 
2472 struct TP_QT_EXPORT RTPHeaderExtension
2473 {
2477  uint ID;
2485  QString URI;
2489  QString parameters;
2490 };
2491 
2492 TP_QT_EXPORT bool operator==(const RTPHeaderExtension& v1, const RTPHeaderExtension& v2);
2493 inline bool operator!=(const RTPHeaderExtension& v1, const RTPHeaderExtension& v2)
2494 {
2495  return !operator==(v1, v2);
2496 }
2497 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RTPHeaderExtension& val);
2498 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RTPHeaderExtension& val);
2499 
2506 typedef QList<RTPHeaderExtension> RTPHeaderExtensionsList;
2507 
2545 struct TP_QT_EXPORT RequestableChannelClass
2546 {
2573  QVariantMap fixedProperties;
2604  QStringList allowedProperties;
2605 };
2606 
2607 TP_QT_EXPORT bool operator==(const RequestableChannelClass& v1, const RequestableChannelClass& v2);
2609 {
2610  return !operator==(v1, v2);
2611 }
2612 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RequestableChannelClass& val);
2613 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RequestableChannelClass& val);
2614 
2621 typedef QList<RequestableChannelClass> RequestableChannelClassList;
2622 
2641 struct TP_QT_EXPORT RichPresenceAccessControl
2642 {
2646  uint type;
2651  QDBusVariant detail;
2652 };
2653 
2654 TP_QT_EXPORT bool operator==(const RichPresenceAccessControl& v1, const RichPresenceAccessControl& v2);
2656 {
2657  return !operator==(v1, v2);
2658 }
2659 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RichPresenceAccessControl& val);
2660 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RichPresenceAccessControl& val);
2661 
2669 struct TP_QT_EXPORT RoomInfo
2670 {
2671  uint handle;
2672  QString channelType;
2673  QVariantMap info;
2674 };
2675 
2676 TP_QT_EXPORT bool operator==(const RoomInfo& v1, const RoomInfo& v2);
2677 inline bool operator!=(const RoomInfo& v1, const RoomInfo& v2)
2678 {
2679  return !operator==(v1, v2);
2680 }
2681 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RoomInfo& val);
2682 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RoomInfo& val);
2683 
2690 typedef QList<RoomInfo> RoomInfoList;
2691 
2701 struct TP_QT_EXPORT ServicePoint
2702 {
2713  QString service;
2714 };
2715 
2716 TP_QT_EXPORT bool operator==(const ServicePoint& v1, const ServicePoint& v2);
2717 inline bool operator!=(const ServicePoint& v1, const ServicePoint& v2)
2718 {
2719  return !operator==(v1, v2);
2720 }
2721 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ServicePoint& val);
2722 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ServicePoint& val);
2723 
2733 struct TP_QT_EXPORT SimplePresence
2734 {
2738  uint type;
2743  QString status;
2767  QString statusMessage;
2768 };
2769 
2770 TP_QT_EXPORT bool operator==(const SimplePresence& v1, const SimplePresence& v2);
2771 inline bool operator!=(const SimplePresence& v1, const SimplePresence& v2)
2772 {
2773  return !operator==(v1, v2);
2774 }
2775 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SimplePresence& val);
2776 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SimplePresence& val);
2777 
2787 struct TP_QT_EXPORT SimpleStatusSpec
2788 {
2796  uint type;
2808 };
2809 
2810 TP_QT_EXPORT bool operator==(const SimpleStatusSpec& v1, const SimpleStatusSpec& v2);
2811 inline bool operator!=(const SimpleStatusSpec& v1, const SimpleStatusSpec& v2)
2812 {
2813  return !operator==(v1, v2);
2814 }
2815 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SimpleStatusSpec& val);
2816 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SimpleStatusSpec& val);
2817 
2828 struct TP_QT_EXPORT SingleContactAttributesMap : public QMap<QString, QDBusVariant>
2829 {
2830  inline SingleContactAttributesMap() : QMap<QString, QDBusVariant>() {}
2831  inline SingleContactAttributesMap(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
2832 
2833  inline SingleContactAttributesMap& operator=(const QMap<QString, QDBusVariant>& a)
2834  {
2835  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
2836  return *this;
2837  }
2838 };
2839 
2849 struct TP_QT_EXPORT SocketAddressIP
2850 {
2855  QString address;
2859  ushort port;
2860 };
2861 
2862 TP_QT_EXPORT bool operator==(const SocketAddressIP& v1, const SocketAddressIP& v2);
2863 inline bool operator!=(const SocketAddressIP& v1, const SocketAddressIP& v2)
2864 {
2865  return !operator==(v1, v2);
2866 }
2867 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIP& val);
2868 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIP& val);
2869 
2876 typedef QList<SocketAddressIP> SocketAddressIPList;
2877 
2887 struct TP_QT_EXPORT SocketAddressIPv4
2888 {
2893  QString address;
2897  ushort port;
2898 };
2899 
2900 TP_QT_EXPORT bool operator==(const SocketAddressIPv4& v1, const SocketAddressIPv4& v2);
2901 inline bool operator!=(const SocketAddressIPv4& v1, const SocketAddressIPv4& v2)
2902 {
2903  return !operator==(v1, v2);
2904 }
2905 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIPv4& val);
2906 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIPv4& val);
2907 
2917 struct TP_QT_EXPORT SocketAddressIPv6
2918 {
2923  QString address;
2927  ushort port;
2928 };
2929 
2930 TP_QT_EXPORT bool operator==(const SocketAddressIPv6& v1, const SocketAddressIPv6& v2);
2931 inline bool operator!=(const SocketAddressIPv6& v1, const SocketAddressIPv6& v2)
2932 {
2933  return !operator==(v1, v2);
2934 }
2935 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIPv6& val);
2936 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIPv6& val);
2937 
2947 struct TP_QT_EXPORT SocketNetmaskIPv4
2948 {
2953  QString address;
2959 };
2960 
2961 TP_QT_EXPORT bool operator==(const SocketNetmaskIPv4& v1, const SocketNetmaskIPv4& v2);
2962 inline bool operator!=(const SocketNetmaskIPv4& v1, const SocketNetmaskIPv4& v2)
2963 {
2964  return !operator==(v1, v2);
2965 }
2966 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketNetmaskIPv4& val);
2967 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketNetmaskIPv4& val);
2968 
2978 struct TP_QT_EXPORT SocketNetmaskIPv6
2979 {
2984  QString address;
2990 };
2991 
2992 TP_QT_EXPORT bool operator==(const SocketNetmaskIPv6& v1, const SocketNetmaskIPv6& v2);
2993 inline bool operator!=(const SocketNetmaskIPv6& v1, const SocketNetmaskIPv6& v2)
2994 {
2995  return !operator==(v1, v2);
2996 }
2997 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketNetmaskIPv6& val);
2998 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketNetmaskIPv6& val);
2999 
3009 struct TP_QT_EXPORT StreamCredentials
3010 {
3014  QString username;
3018  QString password;
3019 };
3020 
3021 TP_QT_EXPORT bool operator==(const StreamCredentials& v1, const StreamCredentials& v2);
3022 inline bool operator!=(const StreamCredentials& v1, const StreamCredentials& v2)
3023 {
3024  return !operator==(v1, v2);
3025 }
3026 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const StreamCredentials& val);
3027 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, StreamCredentials& val);
3028 
3039 struct TP_QT_EXPORT StringStringMap : public QMap<QString, QString>
3040 {
3041  inline StringStringMap() : QMap<QString, QString>() {}
3042  inline StringStringMap(const QMap<QString, QString>& a) : QMap<QString, QString>(a) {}
3043 
3044  inline StringStringMap& operator=(const QMap<QString, QString>& a)
3045  {
3046  *(static_cast<QMap<QString, QString>*>(this)) = a;
3047  return *this;
3048  }
3049 };
3050 
3057 typedef QList<StringStringMap> StringStringMapList;
3058 
3069 struct TP_QT_EXPORT StringVariantMap : public QMap<QString, QDBusVariant>
3070 {
3071  inline StringVariantMap() : QMap<QString, QDBusVariant>() {}
3072  inline StringVariantMap(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}
3073 
3074  inline StringVariantMap& operator=(const QMap<QString, QDBusVariant>& a)
3075  {
3076  *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
3077  return *this;
3078  }
3079 };
3080 
3087 typedef QList<StringVariantMap> StringVariantMapList;
3088 
3100 struct TP_QT_EXPORT SupportedSocketMap : public QMap<uint, UIntList>
3101 {
3102  inline SupportedSocketMap() : QMap<uint, UIntList>() {}
3103  inline SupportedSocketMap(const QMap<uint, UIntList>& a) : QMap<uint, UIntList>(a) {}
3104 
3105  inline SupportedSocketMap& operator=(const QMap<uint, UIntList>& a)
3106  {
3107  *(static_cast<QMap<uint, UIntList>*>(this)) = a;
3108  return *this;
3109  }
3110 };
3111 
3127 struct TP_QT_EXPORT TLSCertificateRejection
3128 {
3141  uint reason;
3149  QString error;
3186  QVariantMap details;
3187 };
3188 
3189 TP_QT_EXPORT bool operator==(const TLSCertificateRejection& v1, const TLSCertificateRejection& v2);
3191 {
3192  return !operator==(v1, v2);
3193 }
3194 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const TLSCertificateRejection& val);
3195 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, TLSCertificateRejection& val);
3196 
3203 typedef QList<TLSCertificateRejection> TLSCertificateRejectionList;
3204 
3216 struct TP_QT_EXPORT TubeInfo
3217 {
3220  uint type;
3221  QString service;
3222  QVariantMap parameters;
3223  uint state;
3224 };
3225 
3226 TP_QT_EXPORT bool operator==(const TubeInfo& v1, const TubeInfo& v2);
3227 inline bool operator!=(const TubeInfo& v1, const TubeInfo& v2)
3228 {
3229  return !operator==(v1, v2);
3230 }
3231 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const TubeInfo& val);
3232 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, TubeInfo& val);
3233 
3240 typedef QList<TubeInfo> TubeInfoList;
3241 
3258 struct TP_QT_EXPORT VCardFieldAddressMap : public QMap<QString, QString>
3259 {
3260  inline VCardFieldAddressMap() : QMap<QString, QString>() {}
3261  inline VCardFieldAddressMap(const QMap<QString, QString>& a) : QMap<QString, QString>(a) {}
3262 
3263  inline VCardFieldAddressMap& operator=(const QMap<QString, QString>& a)
3264  {
3265  *(static_cast<QMap<QString, QString>*>(this)) = a;
3266  return *this;
3267  }
3268 };
3269 
3277 struct TP_QT_EXPORT VideoResolution
3278 {
3282  uint width;
3286  uint height;
3287 };
3288 
3289 TP_QT_EXPORT bool operator==(const VideoResolution& v1, const VideoResolution& v2);
3290 inline bool operator!=(const VideoResolution& v1, const VideoResolution& v2)
3291 {
3292  return !operator==(v1, v2);
3293 }
3294 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const VideoResolution& val);
3295 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, VideoResolution& val);
3296 
3303 typedef QList<VideoResolution> VideoResolutionStruct;
3304 
3314 struct TP_QT_EXPORT CandidatePair
3315 {
3324 };
3325 
3326 TP_QT_EXPORT bool operator==(const CandidatePair& v1, const CandidatePair& v2);
3327 inline bool operator!=(const CandidatePair& v1, const CandidatePair& v2)
3328 {
3329  return !operator==(v1, v2);
3330 }
3331 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CandidatePair& val);
3332 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CandidatePair& val);
3333 
3340 typedef QList<CandidatePair> CandidatePairList;
3341 
3351 struct TP_QT_EXPORT Codec
3352 {
3365  QString name;
3377  uint channels;
3393  bool updated;
3400 };
3401 
3402 TP_QT_EXPORT bool operator==(const Codec& v1, const Codec& v2);
3403 inline bool operator!=(const Codec& v1, const Codec& v2)
3404 {
3405  return !operator==(v1, v2);
3406 }
3407 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const Codec& val);
3408 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, Codec& val);
3409 
3416 typedef QList<Codec> CodecList;
3417 
3428 struct TP_QT_EXPORT ContactCapabilitiesMap : public QMap<uint, RequestableChannelClassList>
3429 {
3431  inline ContactCapabilitiesMap(const QMap<uint, RequestableChannelClassList>& a) : QMap<uint, RequestableChannelClassList>(a) {}
3432 
3433  inline ContactCapabilitiesMap& operator=(const QMap<uint, RequestableChannelClassList>& a)
3434  {
3435  *(static_cast<QMap<uint, RequestableChannelClassList>*>(this)) = a;
3436  return *this;
3437  }
3438 };
3439 
3446 typedef QList<ContactCapabilitiesMap> ContactCapabilitiesMapList;
3447 
3459 struct TP_QT_EXPORT ContactInfoMap : public QMap<uint, ContactInfoFieldList>
3460 {
3461  inline ContactInfoMap() : QMap<uint, ContactInfoFieldList>() {}
3462  inline ContactInfoMap(const QMap<uint, ContactInfoFieldList>& a) : QMap<uint, ContactInfoFieldList>(a) {}
3463 
3464  inline ContactInfoMap& operator=(const QMap<uint, ContactInfoFieldList>& a)
3465  {
3466  *(static_cast<QMap<uint, ContactInfoFieldList>*>(this)) = a;
3467  return *this;
3468  }
3469 };
3470 
3482 struct TP_QT_EXPORT ContactSearchResultMap : public QMap<QString, ContactInfoFieldList>
3483 {
3484  inline ContactSearchResultMap() : QMap<QString, ContactInfoFieldList>() {}
3485  inline ContactSearchResultMap(const QMap<QString, ContactInfoFieldList>& a) : QMap<QString, ContactInfoFieldList>(a) {}
3486 
3487  inline ContactSearchResultMap& operator=(const QMap<QString, ContactInfoFieldList>& a)
3488  {
3489  *(static_cast<QMap<QString, ContactInfoFieldList>*>(this)) = a;
3490  return *this;
3491  }
3492 };
3493 
3505 struct TP_QT_EXPORT ContactSubscriptionMap : public QMap<uint, ContactSubscriptions>
3506 {
3507  inline ContactSubscriptionMap() : QMap<uint, ContactSubscriptions>() {}
3508  inline ContactSubscriptionMap(const QMap<uint, ContactSubscriptions>& a) : QMap<uint, ContactSubscriptions>(a) {}
3509 
3510  inline ContactSubscriptionMap& operator=(const QMap<uint, ContactSubscriptions>& a)
3511  {
3512  *(static_cast<QMap<uint, ContactSubscriptions>*>(this)) = a;
3513  return *this;
3514  }
3515 };
3516 
3526 struct TP_QT_EXPORT HandlerCapabilities
3527 {
3533  QString wellKnownName;
3550  QStringList capabilities;
3551 };
3552 
3553 TP_QT_EXPORT bool operator==(const HandlerCapabilities& v1, const HandlerCapabilities& v2);
3554 inline bool operator!=(const HandlerCapabilities& v1, const HandlerCapabilities& v2)
3555 {
3556  return !operator==(v1, v2);
3557 }
3558 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const HandlerCapabilities& val);
3559 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, HandlerCapabilities& val);
3560 
3567 typedef QList<HandlerCapabilities> HandlerCapabilitiesList;
3568 
3579 struct TP_QT_EXPORT LastActivityAndStatuses
3580 {
3583 };
3584 
3585 TP_QT_EXPORT bool operator==(const LastActivityAndStatuses& v1, const LastActivityAndStatuses& v2);
3587 {
3588  return !operator==(v1, v2);
3589 }
3590 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const LastActivityAndStatuses& val);
3591 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, LastActivityAndStatuses& val);
3592 
3610 struct TP_QT_EXPORT MailURL
3611 {
3615  QString URL;
3619  uint method;
3625 };
3626 
3627 TP_QT_EXPORT bool operator==(const MailURL& v1, const MailURL& v2);
3628 inline bool operator!=(const MailURL& v1, const MailURL& v2)
3629 {
3630  return !operator==(v1, v2);
3631 }
3632 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MailURL& val);
3633 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MailURL& val);
3634 
3642 struct TP_QT_EXPORT MediaStreamHandlerCandidate
3643 {
3644  QString name;
3646 };
3647 
3648 TP_QT_EXPORT bool operator==(const MediaStreamHandlerCandidate& v1, const MediaStreamHandlerCandidate& v2);
3650 {
3651  return !operator==(v1, v2);
3652 }
3653 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamHandlerCandidate& val);
3654 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamHandlerCandidate& val);
3655 
3662 typedef QList<MediaStreamHandlerCandidate> MediaStreamHandlerCandidateList;
3663 
3673 struct TP_QT_EXPORT MediaStreamHandlerCodec
3674 {
3678  uint codecID;
3682  QString name;
3699 };
3700 
3701 TP_QT_EXPORT bool operator==(const MediaStreamHandlerCodec& v1, const MediaStreamHandlerCodec& v2);
3703 {
3704  return !operator==(v1, v2);
3705 }
3706 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamHandlerCodec& val);
3707 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamHandlerCodec& val);
3708 
3715 typedef QList<MediaStreamHandlerCodec> MediaStreamHandlerCodecList;
3716 
3727 struct TP_QT_EXPORT NotDelegatedMap : public QMap<QDBusObjectPath, NotDelegatedError>
3728 {
3729  inline NotDelegatedMap() : QMap<QDBusObjectPath, NotDelegatedError>() {}
3730  inline NotDelegatedMap(const QMap<QDBusObjectPath, NotDelegatedError>& a) : QMap<QDBusObjectPath, NotDelegatedError>(a) {}
3731 
3732  inline NotDelegatedMap& operator=(const QMap<QDBusObjectPath, NotDelegatedError>& a)
3733  {
3734  *(static_cast<QMap<QDBusObjectPath, NotDelegatedError>*>(this)) = a;
3735  return *this;
3736  }
3737 };
3738 
3747 {
3761 };
3762 
3763 TP_QT_EXPORT bool operator==(const RTCPFeedbackMessageProperties& v1, const RTCPFeedbackMessageProperties& v2);
3765 {
3766  return !operator==(v1, v2);
3767 }
3768 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RTCPFeedbackMessageProperties& val);
3769 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RTCPFeedbackMessageProperties& val);
3770 
3785 struct TP_QT_EXPORT ServicePointInfo
3786 {
3797  QStringList serviceIDs;
3798 };
3799 
3800 TP_QT_EXPORT bool operator==(const ServicePointInfo& v1, const ServicePointInfo& v2);
3801 inline bool operator!=(const ServicePointInfo& v1, const ServicePointInfo& v2)
3802 {
3803  return !operator==(v1, v2);
3804 }
3805 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ServicePointInfo& val);
3806 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ServicePointInfo& val);
3807 
3814 typedef QList<ServicePointInfo> ServicePointInfoList;
3815 
3827 struct TP_QT_EXPORT SimpleContactPresences : public QMap<uint, SimplePresence>
3828 {
3829  inline SimpleContactPresences() : QMap<uint, SimplePresence>() {}
3830  inline SimpleContactPresences(const QMap<uint, SimplePresence>& a) : QMap<uint, SimplePresence>(a) {}
3831 
3832  inline SimpleContactPresences& operator=(const QMap<uint, SimplePresence>& a)
3833  {
3834  *(static_cast<QMap<uint, SimplePresence>*>(this)) = a;
3835  return *this;
3836  }
3837 };
3838 
3849 struct TP_QT_EXPORT SimpleStatusSpecMap : public QMap<QString, SimpleStatusSpec>
3850 {
3851  inline SimpleStatusSpecMap() : QMap<QString, SimpleStatusSpec>() {}
3852  inline SimpleStatusSpecMap(const QMap<QString, SimpleStatusSpec>& a) : QMap<QString, SimpleStatusSpec>(a) {}
3853 
3854  inline SimpleStatusSpecMap& operator=(const QMap<QString, SimpleStatusSpec>& a)
3855  {
3856  *(static_cast<QMap<QString, SimpleStatusSpec>*>(this)) = a;
3857  return *this;
3858  }
3859 };
3860 
3868 struct TP_QT_EXPORT StatusSpec
3869 {
3870  uint type;
3874 };
3875 
3876 TP_QT_EXPORT bool operator==(const StatusSpec& v1, const StatusSpec& v2);
3877 inline bool operator!=(const StatusSpec& v1, const StatusSpec& v2)
3878 {
3879  return !operator==(v1, v2);
3880 }
3881 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const StatusSpec& val);
3882 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, StatusSpec& val);
3883 
3894 struct TP_QT_EXPORT ContactCodecMap : public QMap<uint, CodecList>
3895 {
3896  inline ContactCodecMap() : QMap<uint, CodecList>() {}
3897  inline ContactCodecMap(const QMap<uint, CodecList>& a) : QMap<uint, CodecList>(a) {}
3898 
3899  inline ContactCodecMap& operator=(const QMap<uint, CodecList>& a)
3900  {
3901  *(static_cast<QMap<uint, CodecList>*>(this)) = a;
3902  return *this;
3903  }
3904 };
3905 
3917 struct TP_QT_EXPORT ContactPresences : public QMap<uint, LastActivityAndStatuses>
3918 {
3919  inline ContactPresences() : QMap<uint, LastActivityAndStatuses>() {}
3920  inline ContactPresences(const QMap<uint, LastActivityAndStatuses>& a) : QMap<uint, LastActivityAndStatuses>(a) {}
3921 
3922  inline ContactPresences& operator=(const QMap<uint, LastActivityAndStatuses>& a)
3923  {
3924  *(static_cast<QMap<uint, LastActivityAndStatuses>*>(this)) = a;
3925  return *this;
3926  }
3927 };
3928 
3939 struct TP_QT_EXPORT RTCPFeedbackMessageMap : public QMap<uint, RTCPFeedbackMessageProperties>
3940 {
3942  inline RTCPFeedbackMessageMap(const QMap<uint, RTCPFeedbackMessageProperties>& a) : QMap<uint, RTCPFeedbackMessageProperties>(a) {}
3943 
3944  inline RTCPFeedbackMessageMap& operator=(const QMap<uint, RTCPFeedbackMessageProperties>& a)
3945  {
3946  *(static_cast<QMap<uint, RTCPFeedbackMessageProperties>*>(this)) = a;
3947  return *this;
3948  }
3949 };
3950 
3959 struct TP_QT_EXPORT StatusSpecMap : public QMap<QString, StatusSpec>
3960 {
3961  inline StatusSpecMap() : QMap<QString, StatusSpec>() {}
3962  inline StatusSpecMap(const QMap<QString, StatusSpec>& a) : QMap<QString, StatusSpec>(a) {}
3963 
3964  inline StatusSpecMap& operator=(const QMap<QString, StatusSpec>& a)
3965  {
3966  *(static_cast<QMap<QString, StatusSpec>*>(this)) = a;
3967  return *this;
3968  }
3969 };
3970 
3971 
3972 } // namespace Tp
3973 
3974 Q_DECLARE_METATYPE(Tp::AccessControl)
3975 Q_DECLARE_METATYPE(Tp::AddressingNormalizationMap)
3976 Q_DECLARE_METATYPE(Tp::AliasMap)
3977 Q_DECLARE_METATYPE(Tp::AliasPair)
3978 Q_DECLARE_METATYPE(Tp::AliasPairList)
3979 Q_DECLARE_METATYPE(Tp::Avatar)
3980 Q_DECLARE_METATYPE(Tp::AvatarTokenMap)
3981 Q_DECLARE_METATYPE(Tp::ByteArrayList)
3982 Q_DECLARE_METATYPE(Tp::CallMemberMap)
3983 Q_DECLARE_METATYPE(Tp::CallMemberMapList)
3984 Q_DECLARE_METATYPE(Tp::CallStateReason)
3985 Q_DECLARE_METATYPE(Tp::Candidate)
3986 Q_DECLARE_METATYPE(Tp::CandidateInfo)
3987 Q_DECLARE_METATYPE(Tp::CandidateList)
3988 Q_DECLARE_METATYPE(Tp::CandidatePair)
3989 Q_DECLARE_METATYPE(Tp::CandidatePairList)
3990 Q_DECLARE_METATYPE(Tp::CapabilityChange)
3991 Q_DECLARE_METATYPE(Tp::CapabilityChangeList)
3992 Q_DECLARE_METATYPE(Tp::CapabilityPair)
3993 Q_DECLARE_METATYPE(Tp::CapabilityPairList)
3994 Q_DECLARE_METATYPE(Tp::CaptchaAnswers)
3995 Q_DECLARE_METATYPE(Tp::CaptchaInfo)
3996 Q_DECLARE_METATYPE(Tp::CaptchaInfoList)
3997 Q_DECLARE_METATYPE(Tp::ChannelCallStateMap)
3998 Q_DECLARE_METATYPE(Tp::ChannelClass)
3999 Q_DECLARE_METATYPE(Tp::ChannelClassList)
4000 Q_DECLARE_METATYPE(Tp::ChannelDetails)
4001 Q_DECLARE_METATYPE(Tp::ChannelDetailsList)
4002 Q_DECLARE_METATYPE(Tp::ChannelInfo)
4003 Q_DECLARE_METATYPE(Tp::ChannelInfoList)
4004 Q_DECLARE_METATYPE(Tp::ChannelOriginatorMap)
4005 Q_DECLARE_METATYPE(Tp::ChatStateMap)
4006 Q_DECLARE_METATYPE(Tp::Codec)
4007 Q_DECLARE_METATYPE(Tp::CodecList)
4008 Q_DECLARE_METATYPE(Tp::ComponentStateMap)
4009 Q_DECLARE_METATYPE(Tp::ContactAttributesMap)
4010 Q_DECLARE_METATYPE(Tp::ContactCapabilitiesMap)
4011 Q_DECLARE_METATYPE(Tp::ContactCapabilitiesMapList)
4012 Q_DECLARE_METATYPE(Tp::ContactCapability)
4013 Q_DECLARE_METATYPE(Tp::ContactCapabilityList)
4014 Q_DECLARE_METATYPE(Tp::ContactClientTypes)
4015 Q_DECLARE_METATYPE(Tp::ContactCodecMap)
4016 Q_DECLARE_METATYPE(Tp::ContactInfoField)
4017 Q_DECLARE_METATYPE(Tp::ContactInfoFieldList)
4018 Q_DECLARE_METATYPE(Tp::ContactInfoMap)
4019 Q_DECLARE_METATYPE(Tp::ContactLocations)
4020 Q_DECLARE_METATYPE(Tp::ContactMediaDescriptionPropertiesMap)
4021 Q_DECLARE_METATYPE(Tp::ContactPresences)
4022 Q_DECLARE_METATYPE(Tp::ContactSSRCsMap)
4023 Q_DECLARE_METATYPE(Tp::ContactSearchMap)
4024 Q_DECLARE_METATYPE(Tp::ContactSearchResultMap)
4025 Q_DECLARE_METATYPE(Tp::ContactSendingStateMap)
4026 Q_DECLARE_METATYPE(Tp::ContactSubscriptionMap)
4027 Q_DECLARE_METATYPE(Tp::ContactSubscriptions)
4028 Q_DECLARE_METATYPE(Tp::CurrencyAmount)
4029 Q_DECLARE_METATYPE(Tp::DBusTubeMember)
4030 Q_DECLARE_METATYPE(Tp::DBusTubeMemberList)
4031 Q_DECLARE_METATYPE(Tp::DBusTubeParticipants)
4032 Q_DECLARE_METATYPE(Tp::DebugMessage)
4033 Q_DECLARE_METATYPE(Tp::DebugMessageList)
4034 Q_DECLARE_METATYPE(Tp::FieldSpec)
4035 Q_DECLARE_METATYPE(Tp::FieldSpecs)
4036 Q_DECLARE_METATYPE(Tp::HTTPPostData)
4037 Q_DECLARE_METATYPE(Tp::HTTPPostDataList)
4038 Q_DECLARE_METATYPE(Tp::HandleIdentifierMap)
4039 Q_DECLARE_METATYPE(Tp::HandleOwnerMap)
4040 Q_DECLARE_METATYPE(Tp::HandlerCapabilities)
4041 Q_DECLARE_METATYPE(Tp::HandlerCapabilitiesList)
4042 Q_DECLARE_METATYPE(Tp::LastActivityAndStatuses)
4043 Q_DECLARE_METATYPE(Tp::LocalPendingInfo)
4044 Q_DECLARE_METATYPE(Tp::LocalPendingInfoList)
4045 Q_DECLARE_METATYPE(Tp::Location)
4046 Q_DECLARE_METATYPE(Tp::Mail)
4047 Q_DECLARE_METATYPE(Tp::MailAddress)
4048 Q_DECLARE_METATYPE(Tp::MailAddressList)
4049 Q_DECLARE_METATYPE(Tp::MailList)
4050 Q_DECLARE_METATYPE(Tp::MailURL)
4051 Q_DECLARE_METATYPE(Tp::MediaDescriptionOffer)
4052 Q_DECLARE_METATYPE(Tp::MediaDescriptionProperties)
4053 Q_DECLARE_METATYPE(Tp::MediaSessionHandlerInfo)
4054 Q_DECLARE_METATYPE(Tp::MediaSessionHandlerInfoList)
4055 Q_DECLARE_METATYPE(Tp::MediaStreamHandlerCandidate)
4056 Q_DECLARE_METATYPE(Tp::MediaStreamHandlerCandidateList)
4057 Q_DECLARE_METATYPE(Tp::MediaStreamHandlerCodec)
4058 Q_DECLARE_METATYPE(Tp::MediaStreamHandlerCodecList)
4059 Q_DECLARE_METATYPE(Tp::MediaStreamHandlerTransport)
4060 Q_DECLARE_METATYPE(Tp::MediaStreamHandlerTransportList)
4061 Q_DECLARE_METATYPE(Tp::MediaStreamInfo)
4062 Q_DECLARE_METATYPE(Tp::MediaStreamInfoList)
4063 Q_DECLARE_METATYPE(Tp::MessagePart)
4064 Q_DECLARE_METATYPE(Tp::MessagePartContentMap)
4065 Q_DECLARE_METATYPE(Tp::MessagePartList)
4066 Q_DECLARE_METATYPE(Tp::MessagePartListList)
4067 Q_DECLARE_METATYPE(Tp::Metadata)
4068 Q_DECLARE_METATYPE(Tp::MultipleStatusMap)
4069 Q_DECLARE_METATYPE(Tp::NotDelegatedError)
4070 Q_DECLARE_METATYPE(Tp::NotDelegatedMap)
4071 Q_DECLARE_METATYPE(Tp::ObjectImmutablePropertiesMap)
4072 Q_DECLARE_METATYPE(Tp::ObjectImmutablePropertiesMapList)
4073 Q_DECLARE_METATYPE(Tp::ObjectPathList)
4074 Q_DECLARE_METATYPE(Tp::ParamSpec)
4075 Q_DECLARE_METATYPE(Tp::ParamSpecList)
4076 Q_DECLARE_METATYPE(Tp::PendingTextMessage)
4077 Q_DECLARE_METATYPE(Tp::PendingTextMessageList)
4078 Q_DECLARE_METATYPE(Tp::PropertyFlagsChange)
4079 Q_DECLARE_METATYPE(Tp::PropertyFlagsChangeList)
4080 Q_DECLARE_METATYPE(Tp::PropertySpec)
4081 Q_DECLARE_METATYPE(Tp::PropertySpecList)
4082 Q_DECLARE_METATYPE(Tp::PropertyValue)
4083 Q_DECLARE_METATYPE(Tp::PropertyValueList)
4084 Q_DECLARE_METATYPE(Tp::ProtocolPropertiesMap)
4085 Q_DECLARE_METATYPE(Tp::QualifiedPropertyValueMap)
4086 Q_DECLARE_METATYPE(Tp::QualifiedPropertyValueMapList)
4087 Q_DECLARE_METATYPE(Tp::RTCPFeedbackMessage)
4088 Q_DECLARE_METATYPE(Tp::RTCPFeedbackMessageList)
4089 Q_DECLARE_METATYPE(Tp::RTCPFeedbackMessageMap)
4090 Q_DECLARE_METATYPE(Tp::RTCPFeedbackMessageProperties)
4091 Q_DECLARE_METATYPE(Tp::RTPHeaderExtension)
4092 Q_DECLARE_METATYPE(Tp::RTPHeaderExtensionsList)
4093 Q_DECLARE_METATYPE(Tp::RequestableChannelClass)
4094 Q_DECLARE_METATYPE(Tp::RequestableChannelClassList)
4095 Q_DECLARE_METATYPE(Tp::RichPresenceAccessControl)
4096 Q_DECLARE_METATYPE(Tp::RoomInfo)
4097 Q_DECLARE_METATYPE(Tp::RoomInfoList)
4098 Q_DECLARE_METATYPE(Tp::ServicePoint)
4099 Q_DECLARE_METATYPE(Tp::ServicePointInfo)
4100 Q_DECLARE_METATYPE(Tp::ServicePointInfoList)
4101 Q_DECLARE_METATYPE(Tp::SimpleContactPresences)
4102 Q_DECLARE_METATYPE(Tp::SimplePresence)
4103 Q_DECLARE_METATYPE(Tp::SimpleStatusSpec)
4104 Q_DECLARE_METATYPE(Tp::SimpleStatusSpecMap)
4105 Q_DECLARE_METATYPE(Tp::SingleContactAttributesMap)
4106 Q_DECLARE_METATYPE(Tp::SocketAddressIP)
4107 Q_DECLARE_METATYPE(Tp::SocketAddressIPList)
4108 Q_DECLARE_METATYPE(Tp::SocketAddressIPv4)
4109 Q_DECLARE_METATYPE(Tp::SocketAddressIPv6)
4110 Q_DECLARE_METATYPE(Tp::SocketNetmaskIPv4)
4111 Q_DECLARE_METATYPE(Tp::SocketNetmaskIPv6)
4112 Q_DECLARE_METATYPE(Tp::StatusSpec)
4113 Q_DECLARE_METATYPE(Tp::StatusSpecMap)
4114 Q_DECLARE_METATYPE(Tp::StreamCredentials)
4115 Q_DECLARE_METATYPE(Tp::StringStringMap)
4116 Q_DECLARE_METATYPE(Tp::StringStringMapList)
4117 Q_DECLARE_METATYPE(Tp::StringVariantMap)
4118 Q_DECLARE_METATYPE(Tp::StringVariantMapList)
4119 Q_DECLARE_METATYPE(Tp::SupportedSocketMap)
4120 Q_DECLARE_METATYPE(Tp::TLSCertificateRejection)
4121 Q_DECLARE_METATYPE(Tp::TLSCertificateRejectionList)
4122 Q_DECLARE_METATYPE(Tp::TubeInfo)
4123 Q_DECLARE_METATYPE(Tp::TubeInfoList)
4124 Q_DECLARE_METATYPE(Tp::UIntList)
4125 Q_DECLARE_METATYPE(Tp::VCardFieldAddressMap)
4126 Q_DECLARE_METATYPE(Tp::VideoResolution)
4127 Q_DECLARE_METATYPE(Tp::VideoResolutionStruct)
QString IPAddress
Definition: build/TelepathyQt/_gen/types.h:1945
QList< ChannelDetails > ChannelDetailsList
Definition: build/TelepathyQt/_gen/types.h:820
Definition: build/TelepathyQt/_gen/types.h:3127
uint typeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:978
QList< PendingTextMessage > PendingTextMessageList
Definition: build/TelepathyQt/_gen/types.h:2260
AvatarTokenMap(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:268
QString IP
Definition: build/TelepathyQt/_gen/types.h:388
uint flags
Definition: build/TelepathyQt/_gen/types.h:1540
bool canHaveMessage
Definition: build/TelepathyQt/_gen/types.h:2807
ushort port
Definition: build/TelepathyQt/_gen/types.h:2897
bool operator!=(const AccessControl &v1, const AccessControl &v2)
Definition: build/TelepathyQt/_gen/types.h:144
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
Definition: build/TelepathyQt/_gen/types.h:3959
QList< RTPHeaderExtension > RTPHeaderExtensionsList
Definition: build/TelepathyQt/_gen/types.h:2506
ChannelCallStateMap()
Definition: build/TelepathyQt/_gen/types.h:687
uint ID
Definition: build/TelepathyQt/_gen/types.h:601
QList< DBusTubeMember > DBusTubeMemberList
Definition: build/TelepathyQt/_gen/types.h:1430
uint type
Definition: build/TelepathyQt/_gen/types.h:2646
ContactPresences()
Definition: build/TelepathyQt/_gen/types.h:3919
Definition: build/TelepathyQt/_gen/types.h:3459
QString errorMessage
Definition: build/TelepathyQt/_gen/types.h:2135
QDBusObjectPath mediaDescription
Definition: build/TelepathyQt/_gen/types.h:1846
QList< HTTPPostData > HTTPPostDataList
Definition: build/TelepathyQt/_gen/types.h:1634
uint ID
Definition: build/TelepathyQt/_gen/types.h:2477
uint state
Definition: build/TelepathyQt/_gen/types.h:3223
QString name
Definition: build/TelepathyQt/_gen/types.h:3365
SingleContactAttributesMap & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2833
VCardFieldAddressMap & operator=(const QMap< QString, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:3263
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
uint type
Definition: build/TelepathyQt/_gen/types.h:1983
SupportedSocketMap & operator=(const QMap< uint, UIntList > &a)
Definition: build/TelepathyQt/_gen/types.h:3105
StringStringMap parameters
Definition: build/TelepathyQt/_gen/types.h:3698
QString signature
Definition: build/TelepathyQt/_gen/types.h:2309
QStringList parameters
Definition: build/TelepathyQt/_gen/types.h:1536
QString signature
Definition: build/TelepathyQt/_gen/types.h:2199
Definition: build/TelepathyQt/_gen/types.h:2733
ContactSSRCsMap(const QMap< uint, UIntList > &a)
Definition: build/TelepathyQt/_gen/types.h:1243
uint identifier
Definition: build/TelepathyQt/_gen/types.h:1981
QList< CapabilityChange > CapabilityChangeList
Definition: build/TelepathyQt/_gen/types.h:522
Definition: build/TelepathyQt/_gen/types.h:568
QList< PropertySpec > PropertySpecList
Definition: build/TelepathyQt/_gen/types.h:2327
HTTPPostDataList postData
Definition: build/TelepathyQt/_gen/types.h:3624
QString service
Definition: build/TelepathyQt/_gen/types.h:2713
QList< MediaStreamInfo > MediaStreamInfoList
Definition: build/TelepathyQt/_gen/types.h:2003
ContactLocations(const QMap< uint, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:1203
uint subscribe
Definition: build/TelepathyQt/_gen/types.h:1310
int amount
Definition: build/TelepathyQt/_gen/types.h:1363
DBusTubeParticipants()
Definition: build/TelepathyQt/_gen/types.h:1445
Definition: build/TelepathyQt/_gen/types.h:3642
uint type
Definition: build/TelepathyQt/_gen/types.h:3220
Definition: build/TelepathyQt/_gen/types.h:3917
ChannelClass(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:725
QVariantMap info
Definition: build/TelepathyQt/_gen/types.h:396
VCardFieldAddressMap()
Definition: build/TelepathyQt/_gen/types.h:3260
AliasMap()
Definition: build/TelepathyQt/_gen/types.h:185
QList< MailAddress > MailAddressList
Definition: build/TelepathyQt/_gen/types.h:1828
QList< Candidate > CandidateList
Definition: build/TelepathyQt/_gen/types.h:413
QString name
Definition: build/TelepathyQt/_gen/types.h:2308
QString mediaSessionType
Definition: build/TelepathyQt/_gen/types.h:1916
Definition: build/TelepathyQt/_gen/types.h:1443
uint identifier
Definition: build/TelepathyQt/_gen/types.h:3359
ObjectImmutablePropertiesMap(const QMap< QDBusObjectPath, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:2159
uint reason
Definition: build/TelepathyQt/_gen/types.h:1703
QStringList capabilities
Definition: build/TelepathyQt/_gen/types.h:3550
uint propertyID
Definition: build/TelepathyQt/_gen/types.h:2307
Definition: build/TelepathyQt/_gen/types.h:2828
uint max
Definition: build/TelepathyQt/_gen/types.h:1545
QString message
Definition: build/TelepathyQt/_gen/types.h:1496
uint identifier
Definition: build/TelepathyQt/_gen/types.h:2238
QString error
Definition: build/TelepathyQt/_gen/types.h:3149
QList< ContactCapabilitiesMap > ContactCapabilitiesMapList
Definition: build/TelepathyQt/_gen/types.h:3446
NotDelegatedMap()
Definition: build/TelepathyQt/_gen/types.h:3729
uint state
Definition: build/TelepathyQt/_gen/types.h:1984
AvatarTokenMap & operator=(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:270
uint handleType
Definition: build/TelepathyQt/_gen/types.h:847
uint component
Definition: build/TelepathyQt/_gen/types.h:384
Definition: build/TelepathyQt/_gen/types.h:3258
CaptchaAnswers & operator=(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:573
QString channelType
Definition: build/TelepathyQt/_gen/types.h:501
uint level
Definition: build/TelepathyQt/_gen/types.h:1492
StatusSpecMap(const QMap< QString, StatusSpec > &a)
Definition: build/TelepathyQt/_gen/types.h:3962
Definition: build/TelepathyQt/_gen/types.h:3482
QString type
Definition: build/TelepathyQt/_gen/types.h:611
uint newGenericFlags
Definition: build/TelepathyQt/_gen/types.h:503
QList< TubeInfo > TubeInfoList
Definition: build/TelepathyQt/_gen/types.h:3240
Location & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:1742
QString errorName
Definition: build/TelepathyQt/_gen/types.h:2131
ChannelCallStateMap & operator=(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:690
QString channelType
Definition: build/TelepathyQt/_gen/types.h:2672
uchar prefixLength
Definition: build/TelepathyQt/_gen/types.h:2958
QList< ObjectImmutablePropertiesMap > ObjectImmutablePropertiesMapList
Definition: build/TelepathyQt/_gen/types.h:2174
QualifiedPropertyValueMap & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2404
QString label
Definition: build/TelepathyQt/_gen/types.h:643
ContactPresences & operator=(const QMap< uint, LastActivityAndStatuses > &a)
Definition: build/TelepathyQt/_gen/types.h:3922
QList< AliasPair > AliasPairList
Definition: build/TelepathyQt/_gen/types.h:224
Definition: build/TelepathyQt/_gen/types.h:2472
Definition: build/TelepathyQt/_gen/types.h:1885
SupportedSocketMap(const QMap< uint, UIntList > &a)
Definition: build/TelepathyQt/_gen/types.h:3103
uint actor
Definition: build/TelepathyQt/_gen/types.h:1699
Definition: build/TelepathyQt/_gen/types.h:2376
StringStringMap parameterTypes
Definition: build/TelepathyQt/_gen/types.h:3873
uint scale
Definition: build/TelepathyQt/_gen/types.h:1376
uint contact
Definition: build/TelepathyQt/_gen/types.h:1982
uint reason
Definition: build/TelepathyQt/_gen/types.h:332
QString wellKnownName
Definition: build/TelepathyQt/_gen/types.h:3533
HandleOwnerMap()
Definition: build/TelepathyQt/_gen/types.h:1670
ObjectPathList()
Definition: build/TelepathyQt/_gen/types.h:83
QList< RoomInfo > RoomInfoList
Definition: build/TelepathyQt/_gen/types.h:2690
MessagePartContentMap()
Definition: build/TelepathyQt/_gen/types.h:2054
Definition: build/TelepathyQt/_gen/types.h:2305
QVariantMap info
Definition: build/TelepathyQt/_gen/types.h:2673
Definition: build/TelepathyQt/_gen/types.h:1352
QList< Codec > CodecList
Definition: build/TelepathyQt/_gen/types.h:3416
SimpleStatusSpecMap(const QMap< QString, SimpleStatusSpec > &a)
Definition: build/TelepathyQt/_gen/types.h:3852
ContactSearchResultMap & operator=(const QMap< QString, ContactInfoFieldList > &a)
Definition: build/TelepathyQt/_gen/types.h:3487
ContactInfoMap & operator=(const QMap< uint, ContactInfoFieldList > &a)
Definition: build/TelepathyQt/_gen/types.h:3464
Mail(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:1765
Definition: build/TelepathyQt/_gen/types.h:927
QList< ContactCapability > ContactCapabilityList
Definition: build/TelepathyQt/_gen/types.h:995
QList< HandlerCapabilities > HandlerCapabilitiesList
Definition: build/TelepathyQt/_gen/types.h:3567
StringVariantMapList channelClasses
Definition: build/TelepathyQt/_gen/types.h:3541
Definition: build/TelepathyQt/_gen/types.h:3314
Definition: build/TelepathyQt/_gen/types.h:1200
ByteArrayList()
Definition: build/TelepathyQt/_gen/types.h:63
uint typeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:537
QList< MediaStreamHandlerTransport > MediaStreamHandlerTransportList
Definition: build/TelepathyQt/_gen/types.h:1970
Definition: build/TelepathyQt/_gen/types.h:3868
uint protocol
Definition: build/TelepathyQt/_gen/types.h:1947
QList< Mail > MailList
Definition: build/TelepathyQt/_gen/types.h:1780
SimpleContactPresences(const QMap< uint, SimplePresence > &a)
Definition: build/TelepathyQt/_gen/types.h:3830
Definition: build/TelepathyQt/_gen/types.h:1106
AddressingNormalizationMap & operator=(const QMap< QString, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:166
double preferenceValue
Definition: build/TelepathyQt/_gen/types.h:1950
HandleIdentifierMap()
Definition: build/TelepathyQt/_gen/types.h:1648
AvatarTokenMap()
Definition: build/TelepathyQt/_gen/types.h:267
uint flags
Definition: build/TelepathyQt/_gen/types.h:649
ContactClientTypes & operator=(const QMap< uint, QStringList > &a)
Definition: build/TelepathyQt/_gen/types.h:1012
CallMemberMap(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:290
UIntList()
Definition: build/TelepathyQt/_gen/types.h:103
QList< StringVariantMap > StringVariantMapList
Definition: build/TelepathyQt/_gen/types.h:3087
ServicePoint servicePoint
Definition: build/TelepathyQt/_gen/types.h:3790
HandleOwnerMap & operator=(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:1673
ProtocolPropertiesMap(const QMap< QString, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:2379
ContactSubscriptionMap & operator=(const QMap< uint, ContactSubscriptions > &a)
Definition: build/TelepathyQt/_gen/types.h:3510
Definition: build/TelepathyQt/_gen/types.h:2669
QString address
Definition: build/TelepathyQt/_gen/types.h:1811
ChannelOriginatorMap()
Definition: build/TelepathyQt/_gen/types.h:887
QList< PropertyValue > PropertyValueList
Definition: build/TelepathyQt/_gen/types.h:2360
ContactAttributesMap()
Definition: build/TelepathyQt/_gen/types.h:952
ContactClientTypes()
Definition: build/TelepathyQt/_gen/types.h:1009
QDBusVariant detail
Definition: build/TelepathyQt/_gen/types.h:2651
Definition: build/TelepathyQt/_gen/types.h:161
ChatStateMap(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:910
uint newFlags
Definition: build/TelepathyQt/_gen/types.h:2276
bool maySetOnSelf
Definition: build/TelepathyQt/_gen/types.h:3871
Definition: build/TelepathyQt/_gen/types.h:1762
uint handle
Definition: build/TelepathyQt/_gen/types.h:852
ContactSSRCsMap()
Definition: build/TelepathyQt/_gen/types.h:1242
Definition: build/TelepathyQt/_gen/types.h:320
CandidateInfo(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:477
QString password
Definition: build/TelepathyQt/_gen/types.h:3018
SimpleStatusSpecMap()
Definition: build/TelepathyQt/_gen/types.h:3851
ContactMediaDescriptionPropertiesMap & operator=(const QMap< uint, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:1225
QString password
Definition: build/TelepathyQt/_gen/types.h:1953
Mail & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:1767
Definition: build/TelepathyQt/_gen/types.h:1737
Definition: build/TelepathyQt/_gen/types.h:1404
Definition: build/TelepathyQt/_gen/types.h:1007
SimpleStatusSpecMap & operator=(const QMap< QString, SimpleStatusSpec > &a)
Definition: build/TelepathyQt/_gen/types.h:3854
QStringList allowedProperties
Definition: build/TelepathyQt/_gen/types.h:2604
StatusSpecMap & operator=(const QMap< QString, StatusSpec > &a)
Definition: build/TelepathyQt/_gen/types.h:3964
Definition: build/TelepathyQt/_gen/types.h:3277
Definition: build/TelepathyQt/_gen/types.h:2917
uint codecID
Definition: build/TelepathyQt/_gen/types.h:3678
Definition: build/TelepathyQt/_gen/types.h:1668
AliasMap(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:186
QList< VideoResolution > VideoResolutionStruct
Definition: build/TelepathyQt/_gen/types.h:3303
uint lastActivity
Definition: build/TelepathyQt/_gen/types.h:3581
Definition: build/TelepathyQt/_gen/types.h:592
MediaStreamHandlerTransportList transports
Definition: build/TelepathyQt/_gen/types.h:3645
ByteArrayList(const QList< QByteArray > &a)
Definition: build/TelepathyQt/_gen/types.h:64
ProtocolPropertiesMap & operator=(const QMap< QString, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:2381
Definition: build/TelepathyQt/_gen/types.h:101
Definition: build/TelepathyQt/_gen/types.h:3939
uchar prefixLength
Definition: build/TelepathyQt/_gen/types.h:2989
double timestamp
Definition: build/TelepathyQt/_gen/types.h:1470
QList< MediaStreamHandlerCandidate > MediaStreamHandlerCandidateList
Definition: build/TelepathyQt/_gen/types.h:3662
Definition: build/TelepathyQt/_gen/types.h:1839
uint propertyID
Definition: build/TelepathyQt/_gen/types.h:2275
ContactSSRCsMap & operator=(const QMap< uint, UIntList > &a)
Definition: build/TelepathyQt/_gen/types.h:1245
QList< CapabilityPair > CapabilityPairList
Definition: build/TelepathyQt/_gen/types.h:554
QString subtype
Definition: build/TelepathyQt/_gen/types.h:1948
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
uint toBeAdded
Definition: build/TelepathyQt/_gen/types.h:1695
QVariantMap fixedProperties
Definition: build/TelepathyQt/_gen/types.h:2573
uint oldGenericFlags
Definition: build/TelepathyQt/_gen/types.h:502
QVariantMap details
Definition: build/TelepathyQt/_gen/types.h:3186
QString channelType
Definition: build/TelepathyQt/_gen/types.h:842
AliasMap & operator=(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:188
uint port
Definition: build/TelepathyQt/_gen/types.h:392
uint flags
Definition: build/TelepathyQt/_gen/types.h:2195
QString message
Definition: build/TelepathyQt/_gen/types.h:359
Metadata & operator=(const QMap< QString, QStringList > &a)
Definition: build/TelepathyQt/_gen/types.h:2088
uint numberOfChannels
Definition: build/TelepathyQt/_gen/types.h:3694
QString URL
Definition: build/TelepathyQt/_gen/types.h:3615
QList< MediaSessionHandlerInfo > MediaSessionHandlerInfoList
Definition: build/TelepathyQt/_gen/types.h:1933
ContactSendingStateMap()
Definition: build/TelepathyQt/_gen/types.h:1286
Definition: build/TelepathyQt/_gen/types.h:2273
ContactAttributesMap(const QMap< uint, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:953
QList< FieldSpec > FieldSpecs
Definition: build/TelepathyQt/_gen/types.h:1562
QString subtype
Definition: build/TelepathyQt/_gen/types.h:2440
Definition: build/TelepathyQt/_gen/types.h:2083
ChannelOriginatorMap & operator=(const QMap< uint, QDBusObjectPath > &a)
Definition: build/TelepathyQt/_gen/types.h:890
QList< MessagePartList > MessagePartListList
Definition: build/TelepathyQt/_gen/types.h:2039
StringVariantMap(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:3072
StringStringMap & operator=(const QMap< QString, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:3044
MediaDescriptionProperties(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:1888
QString value
Definition: build/TelepathyQt/_gen/types.h:1617
Definition: build/TelepathyQt/_gen/types.h:3351
Definition: build/TelepathyQt/_gen/types.h:2186
Definition: build/TelepathyQt/_gen/types.h:474
QString currency
Definition: build/TelepathyQt/_gen/types.h:1383
ChatStateMap()
Definition: build/TelepathyQt/_gen/types.h:909
QString type
Definition: build/TelepathyQt/_gen/types.h:2434
QString profile
Definition: build/TelepathyQt/_gen/types.h:1949
ContactCodecMap()
Definition: build/TelepathyQt/_gen/types.h:3896
AddressingNormalizationMap()
Definition: build/TelepathyQt/_gen/types.h:163
StringVariantMap & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:3074
QString parameters
Definition: build/TelepathyQt/_gen/types.h:2489
Definition: build/TelepathyQt/_gen/types.h:950
uint componentNumber
Definition: build/TelepathyQt/_gen/types.h:1944
QString username
Definition: build/TelepathyQt/_gen/types.h:3014
ContactAttributesMap & operator=(const QMap< uint, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:955
SingleContactAttributesMap(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2831
ContactSearchMap(const QMap< QString, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:1265
MultipleStatusMap statuses
Definition: build/TelepathyQt/_gen/types.h:3582
uint messageType
Definition: build/TelepathyQt/_gen/types.h:2241
Definition: build/TelepathyQt/_gen/types.h:2126
QVariantMap properties
Definition: build/TelepathyQt/_gen/types.h:1853
ContactSubscriptionMap()
Definition: build/TelepathyQt/_gen/types.h:3507
uint RTCPMinimumInterval
Definition: build/TelepathyQt/_gen/types.h:3756
uint type
Definition: build/TelepathyQt/_gen/types.h:2738
QString publishRequest
Definition: build/TelepathyQt/_gen/types.h:1319
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
ushort port
Definition: build/TelepathyQt/_gen/types.h:2927
QString key
Definition: build/TelepathyQt/_gen/types.h:1613
ObjectPathList & operator=(const QList< QDBusObjectPath > &a)
Definition: build/TelepathyQt/_gen/types.h:86
MessagePartContentMap & operator=(const QMap< uint, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2057
Definition: build/TelepathyQt/_gen/types.h:2641
Definition: build/TelepathyQt/_gen/types.h:3849
CaptchaAnswers(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:571
Definition: build/TelepathyQt/_gen/types.h:1979
uint method
Definition: build/TelepathyQt/_gen/types.h:3619
QStringList fieldValue
Definition: build/TelepathyQt/_gen/types.h:1171
QString text
Definition: build/TelepathyQt/_gen/types.h:2243
uint initiator
Definition: build/TelepathyQt/_gen/types.h:3219
ObjectImmutablePropertiesMap & operator=(const QMap< QDBusObjectPath, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:2161
QVariantMap parameters
Definition: build/TelepathyQt/_gen/types.h:3222
QString MIMEType
Definition: build/TelepathyQt/_gen/types.h:243
ChannelCallStateMap(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:688
Definition: build/TelepathyQt/_gen/types.h:3746
MessagePart & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2018
QList< SocketAddressIP > SocketAddressIPList
Definition: build/TelepathyQt/_gen/types.h:2876
Definition: build/TelepathyQt/_gen/types.h:832
DBusTubeParticipants & operator=(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:1448
uint handle
Definition: build/TelepathyQt/_gen/types.h:975
Definition: build/TelepathyQt/_gen/types.h:1262
ComponentStateMap(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:930
CandidateInfo()
Definition: build/TelepathyQt/_gen/types.h:476
uint handle
Definition: build/TelepathyQt/_gen/types.h:2671
ContactSearchMap & operator=(const QMap< QString, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:1267
QStringList parameters
Definition: build/TelepathyQt/_gen/types.h:1140
uint sender
Definition: build/TelepathyQt/_gen/types.h:2240
QList< StringStringMap > StringStringMapList
Definition: build/TelepathyQt/_gen/types.h:3057
QList< ParamSpec > ParamSpecList
Definition: build/TelepathyQt/_gen/types.h:2222
Definition: build/TelepathyQt/_gen/types.h:1690
Location()
Definition: build/TelepathyQt/_gen/types.h:1739
Definition: build/TelepathyQt/_gen/types.h:1464
Definition: build/TelepathyQt/_gen/types.h:81
Definition: build/TelepathyQt/_gen/types.h:973
StringVariantMap()
Definition: build/TelepathyQt/_gen/types.h:3071
StringStringMap(const QMap< QString, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:3042
QString alias
Definition: build/TelepathyQt/_gen/types.h:207
QVariantMap properties
Definition: build/TelepathyQt/_gen/types.h:803
UIntList & operator=(const QList< uint > &a)
Definition: build/TelepathyQt/_gen/types.h:106
Definition: build/TelepathyQt/_gen/types.h:2887
uint direction
Definition: build/TelepathyQt/_gen/types.h:1985
QStringList availableMIMETypes
Definition: build/TelepathyQt/_gen/types.h:656
ContactCodecMap & operator=(const QMap< uint, CodecList > &a)
Definition: build/TelepathyQt/_gen/types.h:3899
Definition: build/TelepathyQt/_gen/types.h:1305
QDBusVariant detail
Definition: build/TelepathyQt/_gen/types.h:140
uint channels
Definition: build/TelepathyQt/_gen/types.h:3377
bool maySetOnSelf
Definition: build/TelepathyQt/_gen/types.h:2800
ContactCapabilitiesMap(const QMap< uint, RequestableChannelClassList > &a)
Definition: build/TelepathyQt/_gen/types.h:3431
uint newTypeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:505
QList< ServicePointInfo > ServicePointInfoList
Definition: build/TelepathyQt/_gen/types.h:3814
uint handle
Definition: build/TelepathyQt/_gen/types.h:1409
Definition: build/TelepathyQt/_gen/types.h:3785
QStringList serviceIDs
Definition: build/TelepathyQt/_gen/types.h:3797
uint identifier
Definition: build/TelepathyQt/_gen/types.h:2342
ContactMediaDescriptionPropertiesMap()
Definition: build/TelepathyQt/_gen/types.h:1222
Definition: build/TelepathyQt/_gen/types.h:1240
HandleIdentifierMap(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:1649
ChannelClass & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:727
Definition: build/TelepathyQt/_gen/types.h:3069
QList< RTCPFeedbackMessage > RTCPFeedbackMessageList
Definition: build/TelepathyQt/_gen/types.h:2461
QList< ChannelInfo > ChannelInfoList
Definition: build/TelepathyQt/_gen/types.h:869
bool updated
Definition: build/TelepathyQt/_gen/types.h:3393
bool exclusive
Definition: build/TelepathyQt/_gen/types.h:3872
ContactSendingStateMap & operator=(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:1289
Definition: build/TelepathyQt/_gen/types.h:2978
AddressingNormalizationMap(const QMap< QString, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:164
ChannelOriginatorMap(const QMap< uint, QDBusObjectPath > &a)
Definition: build/TelepathyQt/_gen/types.h:888
QList< TLSCertificateRejection > TLSCertificateRejectionList
Definition: build/TelepathyQt/_gen/types.h:3203
ObjectImmutablePropertiesMap()
Definition: build/TelepathyQt/_gen/types.h:2158
uint clockRate
Definition: build/TelepathyQt/_gen/types.h:3690
QList< ChannelClass > ChannelClassList
Definition: build/TelepathyQt/_gen/types.h:740
MessagePartContentMap(const QMap< uint, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2055
Definition: build/TelepathyQt/_gen/types.h:534
uint handle
Definition: build/TelepathyQt/_gen/types.h:500
SimpleContactPresences()
Definition: build/TelepathyQt/_gen/types.h:3829
Location(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:1740
ComponentStateMap & operator=(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:932
QDBusObjectPath channel
Definition: build/TelepathyQt/_gen/types.h:838
SupportedSocketMap()
Definition: build/TelepathyQt/_gen/types.h:3102
uint handle
Definition: build/TelepathyQt/_gen/types.h:206
ContactSearchMap()
Definition: build/TelepathyQt/_gen/types.h:1264
CaptchaAnswers()
Definition: build/TelepathyQt/_gen/types.h:570
QList< PropertyFlagsChange > PropertyFlagsChangeList
Definition: build/TelepathyQt/_gen/types.h:2293
Definition: build/TelepathyQt/_gen/types.h:907
QualifiedPropertyValueMap(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2402
QString fieldName
Definition: build/TelepathyQt/_gen/types.h:1113
Definition: build/TelepathyQt/_gen/types.h:1220
Definition: build/TelepathyQt/_gen/types.h:287
Candidate remote
Definition: build/TelepathyQt/_gen/types.h:3323
ChannelClass()
Definition: build/TelepathyQt/_gen/types.h:724
Definition: build/TelepathyQt/_gen/types.h:3009
QString domain
Definition: build/TelepathyQt/_gen/types.h:1487
QString channelType
Definition: build/TelepathyQt/_gen/types.h:536
MultipleStatusMap(const QMap< QString, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:2110
StatusSpecMap()
Definition: build/TelepathyQt/_gen/types.h:3961
Definition: build/TelepathyQt/_gen/types.h:1525
uint height
Definition: build/TelepathyQt/_gen/types.h:3286
Definition: build/TelepathyQt/_gen/types.h:3727
QList< QualifiedPropertyValueMap > QualifiedPropertyValueMapList
Definition: build/TelepathyQt/_gen/types.h:2417
CallMemberMap()
Definition: build/TelepathyQt/_gen/types.h:289
ContactSendingStateMap(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:1287
UIntList(const QList< uint > &a)
Definition: build/TelepathyQt/_gen/types.h:104
QString statusMessage
Definition: build/TelepathyQt/_gen/types.h:2767
ContactInfoMap(const QMap< uint, ContactInfoFieldList > &a)
Definition: build/TelepathyQt/_gen/types.h:3462
uint oldTypeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:504
ContactPresences(const QMap< uint, LastActivityAndStatuses > &a)
Definition: build/TelepathyQt/_gen/types.h:3920
Definition: build/TelepathyQt/_gen/types.h:2107
ContactCodecMap(const QMap< uint, CodecList > &a)
Definition: build/TelepathyQt/_gen/types.h:3897
Definition: build/TelepathyQt/_gen/types.h:3216
ContactSearchResultMap(const QMap< QString, ContactInfoFieldList > &a)
Definition: build/TelepathyQt/_gen/types.h:3485
Definition: build/TelepathyQt/_gen/types.h:2428
Definition: build/TelepathyQt/_gen/types.h:2787
Mail()
Definition: build/TelepathyQt/_gen/types.h:1764
ChatStateMap & operator=(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:912
RTCPFeedbackMessageMap & operator=(const QMap< uint, RTCPFeedbackMessageProperties > &a)
Definition: build/TelepathyQt/_gen/types.h:3944
RTCPFeedbackMessageMap()
Definition: build/TelepathyQt/_gen/types.h:3941
CallMemberMap & operator=(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:292
Definition: build/TelepathyQt/_gen/types.h:1646
HandleOwnerMap(const QMap< uint, uint > &a)
Definition: build/TelepathyQt/_gen/types.h:1671
ContactLocations & operator=(const QMap< uint, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:1205
Candidate local
Definition: build/TelepathyQt/_gen/types.h:3319
QString address
Definition: build/TelepathyQt/_gen/types.h:2923
QByteArray avatarData
Definition: build/TelepathyQt/_gen/types.h:242
Definition: build/TelepathyQt/_gen/types.h:204
QString uniqueName
Definition: build/TelepathyQt/_gen/types.h:1413
QString channelType
Definition: build/TelepathyQt/_gen/types.h:976
ObjectPathList(const QList< QDBusObjectPath > &a)
Definition: build/TelepathyQt/_gen/types.h:84
uint port
Definition: build/TelepathyQt/_gen/types.h:1946
HandleIdentifierMap & operator=(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:1651
Definition: build/TelepathyQt/_gen/types.h:3610
QString address
Definition: build/TelepathyQt/_gen/types.h:2855
QList< CaptchaInfo > CaptchaInfoList
Definition: build/TelepathyQt/_gen/types.h:673
uint flags
Definition: build/TelepathyQt/_gen/types.h:2310
uint servicePointType
Definition: build/TelepathyQt/_gen/types.h:2706
uint reason
Definition: build/TelepathyQt/_gen/types.h:3141
QDBusVariant defaultValue
Definition: build/TelepathyQt/_gen/types.h:2205
SingleContactAttributesMap()
Definition: build/TelepathyQt/_gen/types.h:2830
QString name
Definition: build/TelepathyQt/_gen/types.h:2191
ContactCapabilitiesMap & operator=(const QMap< uint, RequestableChannelClassList > &a)
Definition: build/TelepathyQt/_gen/types.h:3433
uint type
Definition: build/TelepathyQt/_gen/types.h:3870
Definition: build/TelepathyQt/_gen/types.h:722
ContactSearchResultMap()
Definition: build/TelepathyQt/_gen/types.h:3484
uint clockrate
Definition: build/TelepathyQt/_gen/types.h:3371
Definition: build/TelepathyQt/_gen/types.h:130
Definition: build/TelepathyQt/_gen/types.h:3505
QDBusObjectPath sessionHandler
Definition: build/TelepathyQt/_gen/types.h:1912
Definition: build/TelepathyQt/_gen/types.h:2052
QString message
Definition: build/TelepathyQt/_gen/types.h:1708
RTCPFeedbackMessageList messages
Definition: build/TelepathyQt/_gen/types.h:3760
uint genericFlags
Definition: build/TelepathyQt/_gen/types.h:977
Definition: build/TelepathyQt/_gen/types.h:3100
SimpleContactPresences & operator=(const QMap< uint, SimplePresence > &a)
Definition: build/TelepathyQt/_gen/types.h:3832
Definition: build/TelepathyQt/_gen/types.h:3827
NotDelegatedMap(const QMap< QDBusObjectPath, NotDelegatedError > &a)
Definition: build/TelepathyQt/_gen/types.h:3730
QString name
Definition: build/TelepathyQt/_gen/types.h:1530
QList< CandidatePair > CandidatePairList
Definition: build/TelepathyQt/_gen/types.h:3340
Definition: build/TelepathyQt/_gen/types.h:1284
Definition: build/TelepathyQt/_gen/types.h:379
Definition: build/TelepathyQt/_gen/types.h:61
QString address
Definition: build/TelepathyQt/_gen/types.h:2984
ByteArrayList & operator=(const QList< QByteArray > &a)
Definition: build/TelepathyQt/_gen/types.h:66
Definition: build/TelepathyQt/_gen/types.h:240
QString address
Definition: build/TelepathyQt/_gen/types.h:2953
Definition: build/TelepathyQt/_gen/types.h:3039
QString name
Definition: build/TelepathyQt/_gen/types.h:3644
uint flags
Definition: build/TelepathyQt/_gen/types.h:2242
Definition: build/TelepathyQt/_gen/types.h:1906
uint identifier
Definition: build/TelepathyQt/_gen/types.h:3218
Metadata()
Definition: build/TelepathyQt/_gen/types.h:2085
ushort port
Definition: build/TelepathyQt/_gen/types.h:2859
QList< DebugMessage > DebugMessageList
Definition: build/TelepathyQt/_gen/types.h:1513
MediaDescriptionProperties & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:1890
uint actor
Definition: build/TelepathyQt/_gen/types.h:326
ContactLocations()
Definition: build/TelepathyQt/_gen/types.h:1202
uint type
Definition: build/TelepathyQt/_gen/types.h:135
uint unixTimestamp
Definition: build/TelepathyQt/_gen/types.h:2239
Definition: build/TelepathyQt/_gen/types.h:752
uint mediaType
Definition: build/TelepathyQt/_gen/types.h:3686
MediaDescriptionProperties()
Definition: build/TelepathyQt/_gen/types.h:1887
ComponentStateMap()
Definition: build/TelepathyQt/_gen/types.h:929
ContactSubscriptionMap(const QMap< uint, ContactSubscriptions > &a)
Definition: build/TelepathyQt/_gen/types.h:3508
CandidateInfo & operator=(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:479
Definition: build/TelepathyQt/_gen/types.h:1942
Definition: build/TelepathyQt/_gen/types.h:2340
Definition: build/TelepathyQt/_gen/types.h:498
ContactClientTypes(const QMap< uint, QStringList > &a)
Definition: build/TelepathyQt/_gen/types.h:1010
uint transportType
Definition: build/TelepathyQt/_gen/types.h:1951
Definition: build/TelepathyQt/_gen/types.h:265
Definition: build/TelepathyQt/_gen/types.h:2545
Definition: build/TelepathyQt/_gen/types.h:3673
QString address
Definition: build/TelepathyQt/_gen/types.h:2893
Definition: build/TelepathyQt/_gen/types.h:885
ContactCapabilitiesMap()
Definition: build/TelepathyQt/_gen/types.h:3430
ContactInfoMap()
Definition: build/TelepathyQt/_gen/types.h:3461
QString status
Definition: build/TelepathyQt/_gen/types.h:2743
Definition: build/TelepathyQt/_gen/types.h:3579
QDBusVariant value
Definition: build/TelepathyQt/_gen/types.h:2343
Definition: build/TelepathyQt/_gen/types.h:2236
StringStringMap()
Definition: build/TelepathyQt/_gen/types.h:3041
Definition: build/TelepathyQt/_gen/types.h:2156
Definition: build/TelepathyQt/_gen/types.h:3428
QList< CallMemberMap > CallMemberMapList
Definition: build/TelepathyQt/_gen/types.h:305
ContactMediaDescriptionPropertiesMap(const QMap< uint, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:1223
const QDBusArgument & operator>>(const QDBusArgument &arg, SUSocketAddress &val)
Definition: types.cpp:65
DBusTubeParticipants(const QMap< uint, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:1446
Definition: build/TelepathyQt/_gen/types.h:2849
MessagePart(const QMap< QString, QDBusVariant > &a)
Definition: build/TelepathyQt/_gen/types.h:2016
uint width
Definition: build/TelepathyQt/_gen/types.h:3282
QString name
Definition: build/TelepathyQt/_gen/types.h:3682
QString service
Definition: build/TelepathyQt/_gen/types.h:3221
QString name
Definition: build/TelepathyQt/_gen/types.h:1807
QString URI
Definition: build/TelepathyQt/_gen/types.h:2485
QString DBusReason
Definition: build/TelepathyQt/_gen/types.h:353
RTCPFeedbackMessageMap(const QMap< uint, RTCPFeedbackMessageProperties > &a)
Definition: build/TelepathyQt/_gen/types.h:3942
StringStringMap parameters
Definition: build/TelepathyQt/_gen/types.h:3399
QDBusObjectPath channel
Definition: build/TelepathyQt/_gen/types.h:757
Definition: build/TelepathyQt/_gen/types.h:2701
uint type
Definition: build/TelepathyQt/_gen/types.h:2796
QualifiedPropertyValueMap()
Definition: build/TelepathyQt/_gen/types.h:2401
QDBusArgument & operator<<(QDBusArgument &arg, const SUSocketAddress &val)
Definition: types.cpp:57
Definition: build/TelepathyQt/_gen/types.h:183
uint publish
Definition: build/TelepathyQt/_gen/types.h:1314
QList< LocalPendingInfo > LocalPendingInfoList
Definition: build/TelepathyQt/_gen/types.h:1725
Metadata(const QMap< QString, QStringList > &a)
Definition: build/TelepathyQt/_gen/types.h:2086
QString parameters
Definition: build/TelepathyQt/_gen/types.h:2444
Definition: build/TelepathyQt/_gen/types.h:2399
Definition: build/TelepathyQt/_gen/types.h:1802
VCardFieldAddressMap(const QMap< QString, QString > &a)
Definition: build/TelepathyQt/_gen/types.h:3261
NotDelegatedMap & operator=(const QMap< QDBusObjectPath, NotDelegatedError > &a)
Definition: build/TelepathyQt/_gen/types.h:3732
MultipleStatusMap & operator=(const QMap< QString, QVariantMap > &a)
Definition: build/TelepathyQt/_gen/types.h:2112
uint pendingSendFlags
Definition: build/TelepathyQt/_gen/types.h:1986
Definition: build/TelepathyQt/_gen/types.h:1608
QList< MediaStreamHandlerCodec > MediaStreamHandlerCodecList
Definition: build/TelepathyQt/_gen/types.h:3715
MultipleStatusMap()
Definition: build/TelepathyQt/_gen/types.h:2109
Definition: build/TelepathyQt/_gen/types.h:685
QString username
Definition: build/TelepathyQt/_gen/types.h:1952
Definition: build/TelepathyQt/_gen/types.h:3894
uint direction
Definition: build/TelepathyQt/_gen/types.h:2481
ProtocolPropertiesMap()
Definition: build/TelepathyQt/_gen/types.h:2378
Definition: build/TelepathyQt/_gen/types.h:2947
MessagePart()
Definition: build/TelepathyQt/_gen/types.h:2015
Definition: build/TelepathyQt/_gen/types.h:3526
Definition: build/TelepathyQt/_gen/types.h:2013


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00961.html0000644000175100017520000001763712530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseProtocolPresenceInterface Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00460.html0000644000175100017520000006045212530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::ProfileManager Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ProfileManager class provides helper methods to retrieve Profile objects. More...

#include <TelepathyQt/ProfileManager>

Inherits Tp::Object, and Tp::ReadyObject.

Public Member Functions

 ~ProfileManager ()
 
QList< ProfilePtr > profiles () const
 
QList< ProfilePtr > profilesForCM (const QString &cmName) const
 
QList< ProfilePtr > profilesForProtocol (const QString &protocolName) const
 
ProfilePtr profileForService (const QString &serviceName) const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 

Static Public Member Functions

static ProfileManagerPtr create (const QDBusConnection &bus=QDBusConnection::sessionBus())
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureFakeProfiles
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 

Detailed Description

The ProfileManager class provides helper methods to retrieve Profile objects.

Constructor & Destructor Documentation

Tp::ProfileManager::~ProfileManager ( )

Class destructor.

Member Function Documentation

ProfileManagerPtr Tp::ProfileManager::create ( const QDBusConnection &  bus = QDBusConnection::sessionBus())
static

Create a new ProfileManager object.

QList< ProfilePtr > Tp::ProfileManager::profiles ( ) const

Return a list of all available profiles.

Returns
A list of all available profiles.
QList< ProfilePtr > Tp::ProfileManager::profilesForCM ( const QString &  cmName) const

Return a list of all available profiles for a given connection manager.

Parameters
cmNameConnection manager name.
Returns
A list of all available profiles for a given connection manager.
QList< ProfilePtr > Tp::ProfileManager::profilesForProtocol ( const QString &  protocolName) const

Return a list of all available profiles for a given protocol.

Parameters
protocolNameProtocol name.
Returns
A list of all available profiles for a given protocol.
ProfilePtr Tp::ProfileManager::profileForService ( const QString &  serviceName) const

Return the profile for a given service.

Parameters
serviceNameService name.
Returns
The profile for service.

Member Data Documentation

const Feature Tp::ProfileManager::FeatureCore
static

Feature representing the core that needs to become ready to make the ProfileManager object usable.

Note that this feature must be enabled in order to use all ProfileManager methods.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

const Feature Tp::ProfileManager::FeatureFakeProfiles
static

Enabling this feature will make ProfileManager create fake Profile objects to all protocols supported on the installed connection managers, even if they don't have .profile files installed making use of them.

Fake profiles are identified by Profile::isFake() returning true.

The fake profile will contain the following info:

Where cmName and protocolName are the name of the connection manager and the name of the protocol for which this fake Profile is created, respectively.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00205.html0000644000175100017520000002232512530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceMediaSignallingAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceMediaSignallingAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::MediaSessionHandlerInfoList GetSessionHandlers (const QDBusMessage &dbusMessage)
 

Signals

void NewSessionHandler (const QDBusObjectPath &sessionHandler, const QString &sessionType)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::MediaSessionHandlerInfoList Tp::Service::ChannelInterfaceMediaSignallingAdaptor::GetSessionHandlers ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getSessionHandlers(const Tp::Service::ChannelInterfaceMediaSignallingAdaptor::GetSessionHandlersContextPtr &context);

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

Returns all currently active session handlers on this channel as a list of (session_handler_path, type).

Returns
void Tp::Service::ChannelInterfaceMediaSignallingAdaptor::NewSessionHandler ( const QDBusObjectPath &  sessionHandler,
const QString &  sessionType 
)
signal

Represents the exported D-Bus signal NewSessionHandler on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newSessionHandler(const QDBusObjectPath& sessionHandler, const QString& sessionType);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
sessionHandler
Object path of the new Media.SessionHandler object
sessionType
String indicating type of session, eg &quot;rtp&quot;


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00852_source.html0000644000175100017520000002543112530426257022524 0ustar00kaffeinekaffeine00000000000000 tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
tube-channel.h
1 
22 #ifndef _TelepathyQt_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/Channel>
30 
31 namespace Tp
32 {
33 
34 class TP_QT_EXPORT TubeChannel : public Channel
35 {
36  Q_OBJECT
37  Q_DISABLE_COPY(TubeChannel)
38 
39 public:
40  static const Feature FeatureCore;
41 
42  static TubeChannelPtr create(const ConnectionPtr &connection,
43  const QString &objectPath, const QVariantMap &immutableProperties);
44 
45  virtual ~TubeChannel();
46 
47  TubeChannelState state() const;
48 
49  QVariantMap parameters() const;
50 
51 Q_SIGNALS:
52  void stateChanged(Tp::TubeChannelState state);
53 
54 protected:
55  TubeChannel(const ConnectionPtr &connection, const QString &objectPath,
56  const QVariantMap &immutableProperties,
57  const Feature &coreFeature = TubeChannel::FeatureCore);
58 
59  void setParameters(const QVariantMap &parameters);
60 
61 private Q_SLOTS:
62  TP_QT_NO_EXPORT void onTubeChannelStateChanged(uint newstate);
63  TP_QT_NO_EXPORT void gotTubeProperties(Tp::PendingOperation *op);
64 
65 private:
66  struct Private;
67  friend struct Private;
68  Private *mPriv;
69 };
70 
71 }
72 
73 #endif
The TubeChannel class is a base class for all tube types.
Definition: tube-channel.h:34
static const Feature FeatureCore
Definition: tube-channel.h:40
TubeChannelState
Definition: build/TelepathyQt/_gen/constants.h:3729
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01176.html0000644000175100017520000000537012530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessagePartContentMap Member List

This is the complete list of members for Tp::MessagePartContentMap, including all inherited members.

MessagePartContentMap()Tp::MessagePartContentMapinline
MessagePartContentMap(const QMap< uint, QDBusVariant > &a)Tp::MessagePartContentMapinline
operator=(const QMap< uint, QDBusVariant > &a)Tp::MessagePartContentMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/index.html0000644000175100017520000000654012530426260021426 0ustar00kaffeinekaffeine00000000000000 Telepathy-Qt
   Home · All Classes · All Namespaces · Modules · Functions · Files
Telepathy-Qt

Introduction

Telepathy-Qt is a Qt high-level binding for Telepathy.

Telepathy is a D-Bus framework for unifying real time communication, including instant messaging, voice calls and video calls. It abstracts differences between protocols to provide a unified interface for applications.

Releases can be found here.

Development is done in the git repository found here.

Getting Started

Examples

This is the list of examples in Telepathy-Qt's examples directory. The examples demonstrate Telepathy-Qt features in small, self-contained programs. They are not all designed to be impressive when you run them, but their source code is carefully written to show good Telepathy-Qt programming practices.

Further Information


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00576_source.html0000644000175100017520000037142412530426257022535 0ustar00kaffeinekaffeine00000000000000 base-connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
base-connection.h
1 
23 #ifndef _TelepathyQt_base_connection_h_HEADER_GUARD_
24 #define _TelepathyQt_base_connection_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/AvatarSpec>
31 #include <TelepathyQt/DBusService>
32 #include <TelepathyQt/Global>
33 #include <TelepathyQt/Types>
34 #include <TelepathyQt/Callbacks>
35 #include <TelepathyQt/Constants>
36 
37 #include <QDBusConnection>
38 
39 class QString;
40 
41 namespace Tp
42 {
43 
44 class TP_QT_EXPORT BaseConnection : public DBusService
45 {
46  Q_OBJECT
47  Q_DISABLE_COPY(BaseConnection)
48 
49 public:
50  static BaseConnectionPtr create(const QString &cmName, const QString &protocolName,
51  const QVariantMap &parameters,
52  const QDBusConnection &dbusConnection = QDBusConnection::sessionBus())
53  {
54  return BaseConnectionPtr(new BaseConnection(
55  dbusConnection, cmName, protocolName, parameters));
56  }
57  template<typename BaseConnectionSubclass>
58  static SharedPtr<BaseConnectionSubclass> create(const QString &cmName,
59  const QString &protocolName, const QVariantMap &parameters,
60  const QDBusConnection &dbusConnection = QDBusConnection::sessionBus())
61  {
62  return SharedPtr<BaseConnectionSubclass>(new BaseConnectionSubclass(
63  dbusConnection, cmName, protocolName, parameters));
64  }
65 
66  virtual ~BaseConnection();
67 
68  QString cmName() const;
69  QString protocolName() const;
70  QVariantMap parameters() const;
71  QVariantMap immutableProperties() const;
72 
73  uint selfHandle() const;
74  void setSelfHandle(uint selfHandle);
75 
76  QString selfID() const;
77  void setSelfID(const QString &selfID);
78 
79  void setSelfContact(uint selfHandle, const QString &selfID);
80 
81  uint status() const;
82  void setStatus(uint newStatus, uint reason);
83 
85  void setCreateChannelCallback(const CreateChannelCallback &cb);
86  BaseChannelPtr createChannel(const QVariantMap &request, bool suppressHandler, DBusError *error);
87 
89  void setConnectCallback(const ConnectCallback &cb);
90 
92  void setInspectHandlesCallback(const InspectHandlesCallback &cb);
93  QStringList inspectHandles(uint handleType, const Tp::UIntList &handles, DBusError *error);
94 
96  void setRequestHandlesCallback(const RequestHandlesCallback &cb);
97  Tp::UIntList requestHandles(uint handleType, const QStringList &identifiers, DBusError *error);
98 
99  Tp::ChannelInfoList channelsInfo();
100  Tp::ChannelDetailsList channelsDetails();
101 
102  BaseChannelPtr ensureChannel(const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error);
103 
104  void addChannel(BaseChannelPtr channel, bool suppressHandler = false);
105 
106  QList<AbstractConnectionInterfacePtr> interfaces() const;
107  AbstractConnectionInterfacePtr interface(const QString &interfaceName) const;
108  bool plugInterface(const AbstractConnectionInterfacePtr &interface);
109  bool registerObject(DBusError *error = NULL);
110 
111  virtual QString uniqueName() const;
112 
113 Q_SIGNALS:
114  void disconnected();
115 
116 private Q_SLOTS:
117  TP_QT_NO_EXPORT void removeChannel();
118 
119 protected:
120  BaseConnection(const QDBusConnection &dbusConnection,
121  const QString &cmName, const QString &protocolName,
122  const QVariantMap &parameters);
123 
124  virtual bool registerObject(const QString &busName, const QString &objectPath,
125  DBusError *error);
126 
127  virtual bool matchChannel(const Tp::BaseChannelPtr &channel, const QVariantMap &request, Tp::DBusError *error);
128 
129 private:
130  class Adaptee;
131  friend class Adaptee;
132  struct Private;
133  friend struct Private;
134  Private *mPriv;
135 };
136 
138 {
139  Q_OBJECT
140  Q_DISABLE_COPY(AbstractConnectionInterface)
141 
142 public:
143  AbstractConnectionInterface(const QString &interfaceName);
144  virtual ~AbstractConnectionInterface();
145 
146 private:
147  friend class BaseConnection;
148 
149  struct Private;
150  friend struct Private;
151  Private *mPriv;
152 };
153 
155 {
156  Q_OBJECT
157  Q_DISABLE_COPY(BaseConnectionRequestsInterface)
158 
159 public:
160  static BaseConnectionRequestsInterfacePtr create(BaseConnection* connection) {
161  return BaseConnectionRequestsInterfacePtr(new BaseConnectionRequestsInterface(connection));
162  }
163  template<typename BaseConnectionRequestsInterfaceSubclass>
166  new BaseConnectionRequestsInterfaceSubclass(connection));
167  }
168 
170 
171  QVariantMap immutableProperties() const;
172 
174  void ensureChannel(const QVariantMap &request, bool &yours,
175  QDBusObjectPath &channel, QVariantMap &details, DBusError* error);
176  void createChannel(const QVariantMap &request, QDBusObjectPath &channel,
177  QVariantMap &details, DBusError* error);
178 
179 public Q_SLOTS:
180  void newChannels(const Tp::ChannelDetailsList &channels);
181  void channelClosed(const QDBusObjectPath &removed);
182 
183 protected:
185 
186 private:
187  void createAdaptor();
188 
189  class Adaptee;
190  friend class Adaptee;
191  struct Private;
192  friend struct Private;
193  Private *mPriv;
194 };
195 
196 
198 {
199  Q_OBJECT
200  Q_DISABLE_COPY(BaseConnectionContactsInterface)
201 
202 
203 public:
204  static BaseConnectionContactsInterfacePtr create() {
205  return BaseConnectionContactsInterfacePtr(new BaseConnectionContactsInterface());
206  }
207  template<typename BaseConnectionContactsInterfaceSubclass>
210  new BaseConnectionContactsInterfaceSubclass());
211  }
212 
214 
215  QVariantMap immutableProperties() const;
216 
218  void setGetContactAttributesCallback(const GetContactAttributesCallback &cb);
219  ContactAttributesMap getContactAttributes(const Tp::UIntList &handles,
220  const QStringList &interfaces,
221  DBusError *error);
222  void setContactAttributeInterfaces(const QStringList &contactAttributeInterfaces);
223 protected:
225 
226 private:
227  void createAdaptor();
228 
229  class Adaptee;
230  friend class Adaptee;
231  struct Private;
232  friend struct Private;
233  Private *mPriv;
234 };
235 
237 {
238  Q_OBJECT
240 
241 public:
242  static BaseConnectionSimplePresenceInterfacePtr create()
243  {
244  return BaseConnectionSimplePresenceInterfacePtr(new BaseConnectionSimplePresenceInterface());
245  }
246  template<typename BaseConnectionSimplePresenceInterfaceSubclass>
248  {
250  new BaseConnectionSimplePresenceInterfaceSubclass());
251  }
252 
254 
255  QVariantMap immutableProperties() const;
256 
257  Tp::SimpleStatusSpecMap statuses() const;
258  void setStatuses(const Tp::SimpleStatusSpecMap &statuses);
259 
260  uint maximumStatusMessageLength() const;
261  void setMaximumStatusMessageLength(uint maximumStatusMessageLength);
262 
264  void setSetPresenceCallback(const SetPresenceCallback &cb);
265 
266  void setPresences(const Tp::SimpleContactPresences &presences);
267 
268  Tp::SimpleContactPresences getPresences(const Tp::UIntList &contacts);
269 
270 protected:
272 
273 private:
274  void createAdaptor();
275 
276  class Adaptee;
277  friend class Adaptee;
278  struct Private;
279  friend struct Private;
280  Private *mPriv;
281 };
282 
284 {
285  Q_OBJECT
286  Q_DISABLE_COPY(BaseConnectionContactListInterface)
287 
288 public:
289  static BaseConnectionContactListInterfacePtr create()
290  {
291  return BaseConnectionContactListInterfacePtr(new BaseConnectionContactListInterface());
292  }
293  template<typename BaseConnectionContactListInterfaceSubclass>
295  {
297  new BaseConnectionContactListInterfaceSubclass());
298  }
299 
301 
302  QVariantMap immutableProperties() const;
303 
304  uint contactListState() const;
305  void setContactListState(uint contactListState);
306 
307  bool contactListPersists() const;
308  void setContactListPersists(bool contactListPersists);
309 
310  bool canChangeContactList() const;
311  void setCanChangeContactList(bool canChangeContactList);
312 
313  bool requestUsesMessage() const;
314  void setRequestUsesMessage(bool requestUsesMessage);
315 
316  bool downloadAtConnection() const;
317  void setDownloadAtConnection(bool downloadAtConnection);
318 
320  void setGetContactListAttributesCallback(const GetContactListAttributesCallback &cb);
321  Tp::ContactAttributesMap getContactListAttributes(const QStringList &interfaces, bool hold, DBusError *error);
322 
324  void setRequestSubscriptionCallback(const RequestSubscriptionCallback &cb);
325  void requestSubscription(const Tp::UIntList &contacts, const QString &message, DBusError *error);
326 
328  void setAuthorizePublicationCallback(const AuthorizePublicationCallback &cb);
329  void authorizePublication(const Tp::UIntList &contacts, DBusError *error);
330 
332  void setRemoveContactsCallback(const RemoveContactsCallback &cb);
333  void removeContacts(const Tp::UIntList &contacts, DBusError *error);
334 
336  void setUnsubscribeCallback(const UnsubscribeCallback &cb);
337  void unsubscribe(const Tp::UIntList &contacts, DBusError *error);
338 
340  void setUnpublishCallback(const UnpublishCallback &cb);
341  void unpublish(const Tp::UIntList &contacts, DBusError *error);
342 
344  void setDownloadCallback(const DownloadCallback &cb);
345  void download(DBusError *error);
346 
347  void contactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals);
348 
349 protected:
351 
352 private:
353  void createAdaptor();
354 
355  class Adaptee;
356  friend class Adaptee;
357  struct Private;
358  friend struct Private;
359  Private *mPriv;
360 };
361 
363 {
364  Q_OBJECT
365  Q_DISABLE_COPY(BaseConnectionContactInfoInterface)
366 
367 public:
368  static BaseConnectionContactInfoInterfacePtr create()
369  {
370  return BaseConnectionContactInfoInterfacePtr(new BaseConnectionContactInfoInterface());
371  }
372  template<typename BaseConnectionContactInfoInterfaceSubclass>
374  {
376  new BaseConnectionContactInfoInterfaceSubclass());
377  }
378 
380 
381  QVariantMap immutableProperties() const;
382 
383  Tp::ContactInfoFlags contactInfoFlags() const;
384  void setContactInfoFlags(const Tp::ContactInfoFlags &contactInfoFlags);
385 
386  Tp::FieldSpecs supportedFields() const;
387  void setSupportedFields(const Tp::FieldSpecs &supportedFields);
388 
390  void setGetContactInfoCallback(const GetContactInfoCallback &cb);
391  Tp::ContactInfoMap getContactInfo(const Tp::UIntList &contacts, DBusError *error);
392 
394  void setRefreshContactInfoCallback(const RefreshContactInfoCallback &cb);
395  void refreshContactInfo(const Tp::UIntList &contacts, DBusError *error);
396 
398  void setRequestContactInfoCallback(const RequestContactInfoCallback &cb);
399  Tp::ContactInfoFieldList requestContactInfo(uint contact, DBusError *error);
400 
402  void setSetContactInfoCallback(const SetContactInfoCallback &cb);
403  void setContactInfo(const Tp::ContactInfoFieldList &contactInfo, DBusError *error);
404 
405  void contactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo);
406 
407 protected:
409 
410 private:
411  void createAdaptor();
412 
413  class Adaptee;
414  friend class Adaptee;
415  struct Private;
416  friend struct Private;
417  Private *mPriv;
418 };
419 
421 {
422  Q_OBJECT
423  Q_DISABLE_COPY(BaseConnectionAddressingInterface)
424 
425 public:
426  static BaseConnectionAddressingInterfacePtr create() {
427  return BaseConnectionAddressingInterfacePtr(new BaseConnectionAddressingInterface());
428  }
429  template<typename BaseConnectionAddressingInterfaceSubclass>
432  new BaseConnectionAddressingInterfaceSubclass());
433  }
434 
436 
437  QVariantMap immutableProperties() const;
438 
439 
440 
441  typedef Callback6 < void, const QString&, const QStringList&, const QStringList&,
443  void setGetContactsByVCardFieldCallback(const GetContactsByVCardFieldCallback &cb);
444 
445  typedef Callback5 < void, const QStringList&, const QStringList&,
447  void setGetContactsByURICallback(const GetContactsByURICallback &cb);
448 
449 protected:
451 
452 private:
453  void createAdaptor();
454 
455  class Adaptee;
456  friend class Adaptee;
457  struct Private;
458  friend struct Private;
459  Private *mPriv;
460 };
461 
463 {
464  Q_OBJECT
465  Q_DISABLE_COPY(BaseConnectionAliasingInterface)
466 
467 public:
468  static BaseConnectionAliasingInterfacePtr create()
469  {
470  return BaseConnectionAliasingInterfacePtr(new BaseConnectionAliasingInterface());
471  }
472  template<typename BaseConnectionAliasingInterfaceSubclass>
474  {
476  new BaseConnectionAliasingInterfaceSubclass());
477  }
478 
480 
481  QVariantMap immutableProperties() const;
482 
484  void setGetAliasFlagsCallback(const GetAliasFlagsCallback &cb);
485  Tp::ConnectionAliasFlags getAliasFlags(DBusError *error);
486 
488  void setRequestAliasesCallback(const RequestAliasesCallback &cb);
489  QStringList requestAliases(const Tp::UIntList &contacts, DBusError *error);
490 
492  void setGetAliasesCallback(const GetAliasesCallback &cb);
493  Tp::AliasMap getAliases(const Tp::UIntList &contacts, DBusError *error);
494 
496  void setSetAliasesCallback(const SetAliasesCallback &cb);
497  void setAliases(const Tp::AliasMap &aliases, DBusError *error);
498 
499  void aliasesChanged(const Tp::AliasPairList &aliases);
500 
501 protected:
503 
504 private:
505  void createAdaptor();
506 
507  class Adaptee;
508  friend class Adaptee;
509  struct Private;
510  friend struct Private;
511  Private *mPriv;
512 };
513 
515 {
516  Q_OBJECT
517  Q_DISABLE_COPY(BaseConnectionAvatarsInterface)
518 
519 public:
520  static BaseConnectionAvatarsInterfacePtr create()
521  {
522  return BaseConnectionAvatarsInterfacePtr(new BaseConnectionAvatarsInterface());
523  }
524  template<typename BaseConnectionAvatarsInterfaceSubclass>
526  {
528  new BaseConnectionAvatarsInterfaceSubclass());
529  }
530 
532 
533  QVariantMap immutableProperties() const;
534 
535  AvatarSpec avatarDetails() const;
536  void setAvatarDetails(const AvatarSpec &spec);
537 
539  void setGetKnownAvatarTokensCallback(const GetKnownAvatarTokensCallback &cb);
540  Tp::AvatarTokenMap getKnownAvatarTokens(const Tp::UIntList &contacts, DBusError *error);
541 
543  void setRequestAvatarsCallback(const RequestAvatarsCallback &cb);
544  void requestAvatars(const Tp::UIntList &contacts, DBusError *error);
545 
547  void setSetAvatarCallback(const SetAvatarCallback &cb);
548  QString setAvatar(const QByteArray &avatar, const QString &mimeType, DBusError *error);
549 
551  void setClearAvatarCallback(const ClearAvatarCallback &cb);
552  void clearAvatar(DBusError *error);
553 
554  void avatarUpdated(uint contact, const QString &newAvatarToken);
555  void avatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type);
556 
557 protected:
559 
560 private:
561  void createAdaptor();
562 
563  class Adaptee;
564  friend class Adaptee;
565  struct Private;
566  friend struct Private;
567  Private *mPriv;
568 };
569 
570 }
571 
572 #endif
QList< ChannelDetails > ChannelDetailsList
Definition: build/TelepathyQt/_gen/types.h:820
Callback3< ContactAttributesMap, const Tp::UIntList &, const QStringList &, DBusError * > GetContactAttributesCallback
Definition: base-connection.h:217
Base class for implementations of Connection.Interface.SimplePresence.
Definition: base-connection.h:236
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
Definition: build/TelepathyQt/_gen/types.h:3459
Callback3< QStringList, uint, const Tp::UIntList &, DBusError * > InspectHandlesCallback
Definition: base-connection.h:91
Base class for D-Bus service interfaces.
Definition: dbus-service.h:73
Callback2< QStringList, const Tp::UIntList &, DBusError * > RequestAliasesCallback
Definition: base-connection.h:487
The AvatarSpec class represents a Telepathy avatar information supported by a protocol.
Definition: avatar.h:51
Base class for Connection implementations.
Definition: base-connection.h:44
static BaseConnectionContactInfoInterfacePtr create()
Definition: base-connection.h:368
Callback2< Tp::ContactInfoFieldList, uint, DBusError * > RequestContactInfoCallback
Definition: base-connection.h:397
static BaseConnectionAddressingInterfacePtr create()
Definition: base-connection.h:426
Callback1< Tp::ConnectionAliasFlags, DBusError * > GetAliasFlagsCallback
Definition: base-connection.h:483
static SharedPtr< BaseConnectionAvatarsInterfaceSubclass > create()
Definition: base-connection.h:525
Callback2< void, const Tp::AliasMap &, DBusError * > SetAliasesCallback
Definition: base-connection.h:495
QList< AliasPair > AliasPairList
Definition: build/TelepathyQt/_gen/types.h:224
Callback5< void, const QStringList &, const QStringList &, Tp::AddressingNormalizationMap &, Tp::ContactAttributesMap &, DBusError * > GetContactsByURICallback
Definition: base-connection.h:446
static BaseConnectionAvatarsInterfacePtr create()
Definition: base-connection.h:520
Callback2< void, const Tp::UIntList &, DBusError * > RemoveContactsCallback
Definition: base-connection.h:331
Callback2< void, const Tp::UIntList &, DBusError * > RefreshContactInfoCallback
Definition: base-connection.h:393
Callback1< void, DBusError * > ConnectCallback
Definition: base-connection.h:88
Base class for implementations of Connection.Interface.Requests.
Definition: base-connection.h:154
Callback3< void, const Tp::UIntList &, const QString &, DBusError * > RequestSubscriptionCallback
Definition: base-connection.h:323
Base class for implementations of Connection.Interface.Contacts.
Definition: base-connection.h:197
Callback3< Tp::ContactAttributesMap, const QStringList &, bool, DBusError * > GetContactListAttributesCallback
Definition: base-connection.h:319
Base class for all the Connection object interface implementations.
Definition: base-connection.h:137
static SharedPtr< BaseConnectionContactsInterfaceSubclass > create()
Definition: base-connection.h:208
Definition: build/TelepathyQt/_gen/types.h:161
static SharedPtr< BaseConnectionSimplePresenceInterfaceSubclass > create()
Definition: base-connection.h:247
Callback1< void, DBusError * > DownloadCallback
Definition: base-connection.h:343
Base class for implementations of Connection.Interface.Avatars.
Definition: base-connection.h:514
Base class for D-Bus services.
Definition: dbus-service.h:46
Definition: build/TelepathyQt/_gen/types.h:101
QFlags< ConnectionAliasFlag > ConnectionAliasFlags
Definition: build/TelepathyQt/_gen/constants.h:164
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
static SharedPtr< BaseConnectionContactListInterfaceSubclass > create()
Definition: base-connection.h:294
Callback2< BaseChannelPtr, const QVariantMap &, DBusError * > CreateChannelCallback
Definition: base-connection.h:84
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
Callback3< Tp::UIntList, uint, const QStringList &, DBusError * > RequestHandlesCallback
Definition: base-connection.h:95
QList< FieldSpec > FieldSpecs
Definition: build/TelepathyQt/_gen/types.h:1562
QFlags< ContactInfoFlag > ContactInfoFlags
Definition: build/TelepathyQt/_gen/constants.h:324
Callback with 6 arguments.
Definition: callbacks.h:327
Tp::RequestableChannelClassList requestableChannelClasses
Definition: base-connection.h:173
Definition: build/TelepathyQt/_gen/types.h:950
static SharedPtr< BaseConnectionContactInfoInterfaceSubclass > create()
Definition: base-connection.h:373
Definition: build/TelepathyQt/_gen/types.h:3849
static BaseConnectionSimplePresenceInterfacePtr create()
Definition: base-connection.h:242
Callback2< void, const Tp::UIntList &, DBusError * > UnsubscribeCallback
Definition: base-connection.h:335
Base class for implementations of Connection.Interface.Aliasing.
Definition: base-connection.h:462
static BaseConnectionAliasingInterfacePtr create()
Definition: base-connection.h:468
static BaseConnectionContactsInterfacePtr create()
Definition: base-connection.h:204
Callback1< void, DBusError * > ClearAvatarCallback
Definition: base-connection.h:550
static SharedPtr< BaseConnectionAliasingInterfaceSubclass > create()
Definition: base-connection.h:473
static SharedPtr< BaseConnectionRequestsInterfaceSubclass > create(BaseConnection *connection)
Definition: base-connection.h:164
QList< ChannelInfo > ChannelInfoList
Definition: build/TelepathyQt/_gen/types.h:869
Base class for implementations of Connection.Interface.ContactList.
Definition: base-connection.h:283
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35
Callback with 5 arguments.
Definition: callbacks.h:290
Callback2< void, const Tp::UIntList &, DBusError * > UnpublishCallback
Definition: base-connection.h:339
static BaseConnectionRequestsInterfacePtr create(BaseConnection *connection)
Definition: base-connection.h:160
static BaseConnectionContactListInterfacePtr create()
Definition: base-connection.h:289
static SharedPtr< BaseConnectionAddressingInterfaceSubclass > create()
Definition: base-connection.h:430
Callback3< QString, const QByteArray &, const QString &, DBusError * > SetAvatarCallback
Definition: base-connection.h:546
Definition: build/TelepathyQt/_gen/types.h:1646
Callback2< void, const Tp::ContactInfoFieldList &, DBusError * > SetContactInfoCallback
Definition: base-connection.h:401
Definition: build/TelepathyQt/_gen/types.h:3505
Callback2< void, const Tp::UIntList &, DBusError * > AuthorizePublicationCallback
Definition: base-connection.h:327
Definition: build/TelepathyQt/_gen/types.h:3827
Callback6< void, const QString &, const QStringList &, const QStringList &, Tp::AddressingNormalizationMap &, Tp::ContactAttributesMap &, DBusError * > GetContactsByVCardFieldCallback
Definition: base-connection.h:442
Callback2< Tp::AvatarTokenMap, const Tp::UIntList &, DBusError * > GetKnownAvatarTokensCallback
Definition: base-connection.h:538
Callback2< Tp::ContactInfoMap, const Tp::UIntList &, DBusError * > GetContactInfoCallback
Definition: base-connection.h:389
Callback2< void, const Tp::UIntList &, DBusError * > RequestAvatarsCallback
Definition: base-connection.h:542
Callback3< uint, const QString &, const QString &, DBusError * > SetPresenceCallback
Definition: base-connection.h:263
Definition: build/TelepathyQt/_gen/types.h:265
Base class for implementations of Connection.Interface.Addressing.
Definition: base-connection.h:420
Callback2< Tp::AliasMap, const Tp::UIntList &, DBusError * > GetAliasesCallback
Definition: base-connection.h:491
static BaseConnectionPtr create(const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus())
Definition: base-connection.h:50
Definition: build/TelepathyQt/_gen/types.h:183
static SharedPtr< BaseConnectionSubclass > create(const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus())
Definition: base-connection.h:58
Base class for implementations of Connection.Interface.Contact.Info.
Definition: base-connection.h:362


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00274.html0000644000175100017520000012134112530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceAvatarsAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAvatarsAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

QStringList GetAvatarRequirements (const QDBusMessage &dbusMessage, ushort &minWidth, ushort &minHeight, ushort &maxWidth, ushort &maxHeight, uint &maxBytes)
 
QStringList GetAvatarTokens (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
Tp::AvatarTokenMap GetKnownAvatarTokens (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
QByteArray RequestAvatar (uint contact, const QDBusMessage &dbusMessage, QString &MIMEType)
 
void RequestAvatars (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
QString SetAvatar (const QByteArray &avatar, const QString &MIMEType, const QDBusMessage &dbusMessage)
 
void ClearAvatar (const QDBusMessage &dbusMessage)
 

Signals

void AvatarUpdated (uint contact, const QString &newAvatarToken)
 
void AvatarRetrieved (uint contact, const QString &token, const QByteArray &avatar, const QString &type)
 

Public Member Functions

QStringList SupportedAvatarMIMETypes () const
 
uint MinimumAvatarHeight () const
 
uint MinimumAvatarWidth () const
 
uint RecommendedAvatarHeight () const
 
uint RecommendedAvatarWidth () const
 
uint MaximumAvatarHeight () const
 
uint MaximumAvatarWidth () const
 
uint MaximumAvatarBytes () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ConnectionInterfaceAvatarsAdaptor::SupportedAvatarMIMETypes ( ) const

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

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

An array of supported MIME types (e.g. "image/jpeg"). Clients MAY assume that the first type in this array is preferred. This property cannot change after the Connection goes to the Connected state.

Returns
The value of exported property SupportedAvatarMIMETypes.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::MinimumAvatarHeight ( ) const

Return the value of the exported D-Bus object property MinimumAvatarHeight of type uint.

Adaptees should export this property as a Qt property named 'minimumAvatarHeight' with type uint.

The minimum height in pixels of an avatar on this protocol, which MAY be 0. This property cannot change after the Connection goes to the Connected state.

Returns
The value of exported property MinimumAvatarHeight.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::MinimumAvatarWidth ( ) const

Return the value of the exported D-Bus object property MinimumAvatarWidth of type uint.

Adaptees should export this property as a Qt property named 'minimumAvatarWidth' with type uint.

The minimum width in pixels of an avatar on this protocol, which MAY be 0. This property cannot change after the Connection goes to the Connected state.

Returns
The value of exported property MinimumAvatarWidth.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::RecommendedAvatarHeight ( ) const

Return the value of the exported D-Bus object property RecommendedAvatarHeight of type uint.

Adaptees should export this property as a Qt property named 'recommendedAvatarHeight' with type uint.

The recommended height in pixels of an avatar on this protocol, or 0 if there is no preferred height. This property cannot change after the Connection goes to the Connected state. In XMPP a recommended width is given by the protocol specification; in proprietary protocols, using the same avatar size as the proprietary client is likely to lead to the best display to other users.

Returns
The value of exported property RecommendedAvatarHeight.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::RecommendedAvatarWidth ( ) const

Return the value of the exported D-Bus object property RecommendedAvatarWidth of type uint.

Adaptees should export this property as a Qt property named 'recommendedAvatarWidth' with type uint.

The recommended width in pixels of an avatar on this protocol, or 0 if there is no preferred width. This property cannot change after the Connection goes to the Connected state. The rationale is the same as for RecommendedAvatarHeight.

Returns
The value of exported property RecommendedAvatarWidth.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::MaximumAvatarHeight ( ) const

Return the value of the exported D-Bus object property MaximumAvatarHeight of type uint.

Adaptees should export this property as a Qt property named 'maximumAvatarHeight' with type uint.

The maximum height in pixels of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state.

Returns
The value of exported property MaximumAvatarHeight.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::MaximumAvatarWidth ( ) const

Return the value of the exported D-Bus object property MaximumAvatarWidth of type uint.

Adaptees should export this property as a Qt property named 'maximumAvatarWidth' with type uint.

The maximum width in pixels of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state.

Returns
The value of exported property MaximumAvatarWidth.
uint Tp::Service::ConnectionInterfaceAvatarsAdaptor::MaximumAvatarBytes ( ) const

Return the value of the exported D-Bus object property MaximumAvatarBytes of type uint.

Adaptees should export this property as a Qt property named 'maximumAvatarBytes' with type uint.

The maximum size in bytes of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state.

Returns
The value of exported property MaximumAvatarBytes.
QStringList Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetAvatarRequirements ( const QDBusMessage &  dbusMessage,
ushort &  minWidth,
ushort &  minHeight,
ushort &  maxWidth,
ushort &  maxHeight,
uint &  maxBytes 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getAvatarRequirements(const Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetAvatarRequirementsContextPtr &context);

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

Get the required format of avatars on this connection.

Parameters
minWidthOutput parameter
The minimum image width in pixels
minHeightOutput parameter
The minimum image height in pixels
maxWidthOutput parameter
The maximum image width in pixels, or 0 if there is no limit
maxHeightOutput parameter
The maximum image height in pixels, or 0 if there is no limit
maxBytesOutput parameter
The maximum image size in bytes, or 0 if there is no limit
Returns
An array of supported MIME types (eg image/jpeg)
QStringList Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetAvatarTokens ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getAvatarTokens(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetAvatarTokensContextPtr &context);

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

Get the unique tokens for all of the given contacts' avatars. Using this method in new Telepathy clients is deprecated; use GetKnownAvatarTokens instead.

Parameters
contacts
An array of handles representing contacts
Returns
An array of avatar tokens or empty strings (if no avatar is set) in 
the same order as the given array of contact handles
Tp::AvatarTokenMap Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetKnownAvatarTokens ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getKnownAvatarTokens(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetKnownAvatarTokensContextPtr &context);

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

Get the unique tokens for the given contacts' avatars. These tokens can be persisted across connections, and should be used by the client to check whether the avatars have been updated. For handles other than the self handle, only tokens that are already known are returned; an empty token means the given contact has no avatar. However, a CM must always have the tokens for the self handle if one is set (even if it is set to no avatar). On protocols where the avatar does not persist between connections, a CM should omit the self handle from the returned map until an avatar is explicitly set or cleared.

Parameters
contacts
An array of handles representing contacts
Returns
A dictionary of handles mapped to avatar tokens, containing only 
the known avatar tokens.
QByteArray Tp::Service::ConnectionInterfaceAvatarsAdaptor::RequestAvatar ( uint  contact,
const QDBusMessage &  dbusMessage,
QString &  MIMEType 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestAvatar(uint contact, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::RequestAvatarContextPtr &context);

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

Request the avatar for a given contact. Using this method in new Telepathy clients is deprecated; use RequestAvatars instead.

Parameters
contact
An integer handle for the contact to request the avatar for
MIMETypeOutput parameter
A string containing the image MIME type (eg image/jpeg), or empty 
if unknown
Returns
An array of bytes containing the image data
void Tp::Service::ConnectionInterfaceAvatarsAdaptor::RequestAvatars ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestAvatars(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::RequestAvatarsContextPtr &context);

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

Request avatars for a number of contacts. The AvatarRetrieved signal is emitted for each avatar retrieved. If the handles are valid but retrieving an avatar fails (for any reason, including the contact not having an avatar) the AvatarRetrieved signal is not emitted for that contact.

Parameters
contacts
The contacts to retrieve avatars for
QString Tp::Service::ConnectionInterfaceAvatarsAdaptor::SetAvatar ( const QByteArray &  avatar,
const QString &  MIMEType,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setAvatar(const QByteArray& avatar, const QString& MIMEType, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::SetAvatarContextPtr &context);

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

Set a new avatar image for this connection. The avatar image must respect the requirements obtained by GetAvatarRequirements.

Parameters
avatar
An array of bytes representing the avatar image data
MIMEType
A string representing the image MIME type
Returns
The string token of the new avatar
void Tp::Service::ConnectionInterfaceAvatarsAdaptor::ClearAvatar ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void clearAvatar(const Tp::Service::ConnectionInterfaceAvatarsAdaptor::ClearAvatarContextPtr &context);

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

Remove the avatar image for this connection.

void Tp::Service::ConnectionInterfaceAvatarsAdaptor::AvatarUpdated ( uint  contact,
const QString &  newAvatarToken 
)
signal

Represents the exported D-Bus signal AvatarUpdated on this object.

Adaptees should export this signal as a Qt signal with the following signature: void avatarUpdated(uint contact, const QString& newAvatarToken);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
An integer handle for the contact whose avatar has changed
newAvatarToken
Unique token for their new avatar
void Tp::Service::ConnectionInterfaceAvatarsAdaptor::AvatarRetrieved ( uint  contact,
const QString &  token,
const QByteArray &  avatar,
const QString &  type 
)
signal

Represents the exported D-Bus signal AvatarRetrieved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void avatarRetrieved(uint contact, const QString& token, const QByteArray& avatar, const QString& type);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
The contact whose avatar has been retrieved
token
The token corresponding to the avatar
avatar
An array of bytes containing the image data
type
A string containing the image MIME type (eg image/jpeg), or empty 
if unknown


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01235.html0000644000175100017520000002251212530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AccountInterfaceStorageInterface Member List

This is the complete list of members for Tp::Client::AccountInterfaceStorageInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AccountInterfaceStorageInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterfaceStorageInterface
AccountInterfaceStorageInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AccountInterfaceStorageInterface
AccountInterfaceStorageInterface(Tp::DBusProxy *proxy)Tp::Client::AccountInterfaceStorageInterface
AccountInterfaceStorageInterface(const Tp::Client::AccountInterface &mainInterface)Tp::Client::AccountInterfaceStorageInterfaceexplicit
AccountInterfaceStorageInterface(const Tp::Client::AccountInterface &mainInterface, QObject *parent)Tp::Client::AccountInterfaceStorageInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::AccountInterfaceStorageInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::AccountInterfaceStorageInterfaceinline
requestPropertyStorageIdentifier() const Tp::Client::AccountInterfaceStorageInterfaceinline
requestPropertyStorageProvider() const Tp::Client::AccountInterfaceStorageInterfaceinline
requestPropertyStorageRestrictions() const Tp::Client::AccountInterfaceStorageInterfaceinline
requestPropertyStorageSpecificInformation() const Tp::Client::AccountInterfaceStorageInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::AccountInterfaceStorageInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x69.html0000644000175100017520000013143012530426260023112 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- i -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00572_source.html0000644000175100017520000063770212530426257022535 0ustar00kaffeinekaffeine00000000000000 base-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
base-channel.h
1 
22 #ifndef _TelepathyQt_base_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_base_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/DBusService>
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/Types>
32 #include <TelepathyQt/Callbacks>
33 #include <TelepathyQt/Constants>
34 
35 #include <QDBusConnection>
36 
37 class QString;
38 
39 namespace Tp
40 {
41 
42 class TP_QT_EXPORT BaseChannel : public DBusService
43 {
44  Q_OBJECT
45  Q_DISABLE_COPY(BaseChannel)
46 
47 public:
48  static BaseChannelPtr create(BaseConnection *connection, const QString &channelType,
49  Tp::HandleType targetHandleType = Tp::HandleTypeNone, uint targetHandle = 0) {
50  return BaseChannelPtr(new BaseChannel(QDBusConnection::sessionBus(), connection,
51  channelType, targetHandleType, targetHandle));
52  }
53 
54  virtual ~BaseChannel();
55 
56  QVariantMap immutableProperties() const;
57  bool registerObject(DBusError *error = NULL);
58  virtual QString uniqueName() const;
59 
60  QString channelType() const;
61  QList<AbstractChannelInterfacePtr> interfaces() const;
62  AbstractChannelInterfacePtr interface(const QString &interfaceName) const;
63  uint targetHandle() const;
64  QString targetID() const;
65  uint targetHandleType() const;
66  bool requested() const;
67  uint initiatorHandle() const;
68  QString initiatorID() const;
69  Tp::ChannelDetails details() const;
70 
71  void setInitiatorHandle(uint initiatorHandle);
72  void setInitiatorID(const QString &initiatorID);
73  void setTargetID(const QString &targetID);
74  void setRequested(bool requested);
75 
76  void close();
77 
78  bool plugInterface(const AbstractChannelInterfacePtr &interface);
79 
80 Q_SIGNALS:
81  void closed();
82 protected:
83  BaseChannel(const QDBusConnection &dbusConnection, BaseConnection *connection,
84  const QString &channelType, uint targetHandleType, uint targetHandle);
85  virtual bool registerObject(const QString &busName, const QString &objectPath,
86  DBusError *error);
87 private:
88  class Adaptee;
89  friend class Adaptee;
90  struct Private;
91  friend struct Private;
92  Private *mPriv;
93 };
94 
96 {
97  Q_OBJECT
98  Q_DISABLE_COPY(AbstractChannelInterface)
99 
100 public:
101  AbstractChannelInterface(const QString &interfaceName);
102  virtual ~AbstractChannelInterface();
103 
104 private:
105  friend class BaseChannel;
106 
107  struct Private;
108  friend struct Private;
109  Private *mPriv;
110 
111 };
112 
114 {
115  Q_OBJECT
116  Q_DISABLE_COPY(BaseChannelTextType)
117 
118 public:
119  static BaseChannelTextTypePtr create(BaseChannel* channel) {
120  return BaseChannelTextTypePtr(new BaseChannelTextType(channel));
121  }
122  template<typename BaseChannelTextTypeSubclass>
125  new BaseChannelTextTypeSubclass(channel));
126  }
127 
130 
133 
134  virtual ~BaseChannelTextType();
135 
136  QVariantMap immutableProperties() const;
137 
139 
141  void setMessageAcknowledgedCallback(const MessageAcknowledgedCallback &cb);
142 
143  Tp::MessagePartListList pendingMessages();
144 
145  /* Convenience function */
146  void addReceivedMessage(const Tp::MessagePartList &message);
147 private Q_SLOTS:
148  void sent(uint timestamp, uint type, QString text);
149 protected:
151  void acknowledgePendingMessages(const Tp::UIntList &IDs, DBusError* error);
152 
153 private:
154  void createAdaptor();
155 
156  class Adaptee;
157  friend class Adaptee;
158  struct Private;
159  friend struct Private;
160  Private *mPriv;
161 };
162 
164 {
165  Q_OBJECT
166  Q_DISABLE_COPY(BaseChannelMessagesInterface)
167 
168 public:
169  static BaseChannelMessagesInterfacePtr create(BaseChannelTextType* textTypeInterface,
170  QStringList supportedContentTypes,
171  UIntList messageTypes,
172  uint messagePartSupportFlags,
173  uint deliveryReportingSupport) {
174  return BaseChannelMessagesInterfacePtr(new BaseChannelMessagesInterface(textTypeInterface,
175  supportedContentTypes,
176  messageTypes,
177  messagePartSupportFlags,
178  deliveryReportingSupport));
179  }
180  template<typename BaseChannelMessagesInterfaceSubclass>
183  new BaseChannelMessagesInterfaceSubclass());
184  }
185  virtual ~BaseChannelMessagesInterface();
186 
187  QVariantMap immutableProperties() const;
188 
189  QStringList supportedContentTypes();
190  Tp::UIntList messageTypes();
191  uint messagePartSupportFlags();
192  uint deliveryReportingSupport();
193  Tp::MessagePartListList pendingMessages();
194 
195  void messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken);
196 
198  void setSendMessageCallback(const SendMessageCallback &cb);
199 protected:
200  QString sendMessage(const Tp::MessagePartList &message, uint flags, DBusError* error);
201 private Q_SLOTS:
202  void pendingMessagesRemoved(const Tp::UIntList &messageIDs);
203  void messageReceived(const Tp::MessagePartList &message);
204 private:
206  QStringList supportedContentTypes,
207  Tp::UIntList messageTypes,
208  uint messagePartSupportFlags,
209  uint deliveryReportingSupport);
210  void createAdaptor();
211 
212  class Adaptee;
213  friend class Adaptee;
214  struct Private;
215  friend struct Private;
216  Private *mPriv;
217 };
218 
220 {
221  Q_OBJECT
222  Q_DISABLE_COPY(BaseChannelRoomListType)
223 
224 public:
225  static BaseChannelRoomListTypePtr create(const QString &server = QString())
226  {
227  return BaseChannelRoomListTypePtr(new BaseChannelRoomListType(server));
228  }
229  template<typename BaseChannelRoomListTypeSubclass>
230  static SharedPtr<BaseChannelRoomListTypeSubclass> create(const QString &server = QString())
231  {
233  new BaseChannelRoomListTypeSubclass(server));
234  }
235 
236  virtual ~BaseChannelRoomListType();
237 
238  QVariantMap immutableProperties() const;
239 
240  QString server() const;
241 
242  bool getListingRooms();
243  void setListingRooms(bool listing);
244 
246  void setListRoomsCallback(const ListRoomsCallback &cb);
247  void listRooms(DBusError *error);
248 
250  void setStopListingCallback(const StopListingCallback &cb);
251  void stopListing(DBusError *error);
252 
253  void gotRooms(const Tp::RoomInfoList &rooms);
254 
255 protected:
256  BaseChannelRoomListType(const QString &server);
257 
258 private:
259  void createAdaptor();
260 
261  class Adaptee;
262  friend class Adaptee;
263  struct Private;
264  friend struct Private;
265  Private *mPriv;
266 };
267 
269 {
270  Q_OBJECT
272 
273 public:
274  static BaseChannelServerAuthenticationTypePtr create(const QString &authenticationMethod) {
275  return BaseChannelServerAuthenticationTypePtr(new BaseChannelServerAuthenticationType(authenticationMethod));
276  }
277  template<typename BaseChannelServerAuthenticationTypeSubclass>
278  static SharedPtr<BaseChannelServerAuthenticationTypeSubclass> create(const QString &authenticationMethod) {
280  new BaseChannelServerAuthenticationTypeSubclass(authenticationMethod));
281  }
283 
284  QVariantMap immutableProperties() const;
285 private Q_SLOTS:
286 private:
287  BaseChannelServerAuthenticationType(const QString &authenticationMethod);
288  void createAdaptor();
289 
290  class Adaptee;
291  friend class Adaptee;
292  struct Private;
293  friend struct Private;
294  Private *mPriv;
295 };
296 
298 {
299  Q_OBJECT
301 
302 public:
303  static BaseChannelCaptchaAuthenticationInterfacePtr create(bool canRetryCaptcha) {
304  return BaseChannelCaptchaAuthenticationInterfacePtr(new BaseChannelCaptchaAuthenticationInterface(canRetryCaptcha));
305  }
306  template<typename BaseChannelCaptchaAuthenticationInterfaceSubclass>
309  new BaseChannelCaptchaAuthenticationInterfaceSubclass(canRetryCaptcha));
310  }
312 
313  QVariantMap immutableProperties() const;
314 
316  void setGetCaptchasCallback(const GetCaptchasCallback &cb);
317 
319  void setGetCaptchaDataCallback(const GetCaptchaDataCallback &cb);
320 
322  void setAnswerCaptchasCallback(const AnswerCaptchasCallback &cb);
323 
325  void setCancelCaptchaCallback(const CancelCaptchaCallback &cb);
326 
327  void setCaptchaStatus(uint status);
328  void setCaptchaError(const QString &busName);
329  void setCaptchaErrorDetails(const QVariantMap &error);
330 private Q_SLOTS:
331 private:
332  BaseChannelCaptchaAuthenticationInterface(bool canRetryCaptcha);
333  void createAdaptor();
334 
335  class Adaptee;
336  friend class Adaptee;
337  struct Private;
338  friend struct Private;
339  Private *mPriv;
340 };
341 
343 {
344  Q_OBJECT
346 
347 public:
348  static BaseChannelSASLAuthenticationInterfacePtr create(const QStringList &availableMechanisms,
349  bool hasInitialData,
350  bool canTryAgain,
351  const QString &authorizationIdentity,
352  const QString &defaultUsername,
353  const QString &defaultRealm,
354  bool maySaveResponse)
355  {
356  return BaseChannelSASLAuthenticationInterfacePtr(new BaseChannelSASLAuthenticationInterface(availableMechanisms,
357  hasInitialData,
358  canTryAgain,
359  authorizationIdentity,
360  defaultUsername,
361  defaultRealm,
362  maySaveResponse));
363  }
364  template<typename BaseChannelSASLAuthenticationInterfaceSubclass>
365  static SharedPtr<BaseChannelSASLAuthenticationInterfaceSubclass> create(const QStringList &availableMechanisms,
366  bool hasInitialData,
367  bool canTryAgain,
368  const QString &authorizationIdentity,
369  const QString &defaultUsername,
370  const QString &defaultRealm,
371  bool maySaveResponse)
372  {
374  new BaseChannelSASLAuthenticationInterfaceSubclass(availableMechanisms,
375  hasInitialData,
376  canTryAgain,
377  authorizationIdentity,
378  defaultUsername,
379  defaultRealm,
380  maySaveResponse));
381  }
382 
384 
385  QVariantMap immutableProperties() const;
386 
387  QStringList availableMechanisms() const;
388  bool hasInitialData() const;
389  bool canTryAgain() const;
390  QString authorizationIdentity() const;
391  QString defaultUsername() const;
392  QString defaultRealm() const;
393  bool maySaveResponse() const;
394 
395  uint saslStatus() const;
396  void setSaslStatus(uint status, const QString &reason, const QVariantMap &details);
397 
398  QString saslError() const;
399  void setSaslError(const QString &saslError);
400 
401  QVariantMap saslErrorDetails() const;
402  void setSaslErrorDetails(const QVariantMap &saslErrorDetails);
403 
405  void setStartMechanismCallback(const StartMechanismCallback &cb);
406  void startMechanism(const QString &mechanism, DBusError *error);
407 
409  void setStartMechanismWithDataCallback(const StartMechanismWithDataCallback &cb);
410  void startMechanismWithData(const QString &mechanism, const QByteArray &initialData, DBusError *error);
411 
413  void setRespondCallback(const RespondCallback &cb);
414  void respond(const QByteArray &responseData, DBusError *error);
415 
417  void setAcceptSaslCallback(const AcceptSASLCallback &cb);
418  void acceptSasl(DBusError *error);
419 
421  void setAbortSaslCallback(const AbortSASLCallback &cb);
422  void abortSasl(uint reason, const QString &debugMessage, DBusError *error);
423 
424  void newChallenge(const QByteArray &challengeData);
425 
426 protected:
427  BaseChannelSASLAuthenticationInterface(const QStringList &availableMechanisms,
428  bool hasInitialData,
429  bool canTryAgain,
430  const QString &authorizationIdentity,
431  const QString &defaultUsername,
432  const QString &defaultRealm,
433  bool maySaveResponse);
434 
435 private:
436  void createAdaptor();
437 
438  class Adaptee;
439  friend class Adaptee;
440  struct Private;
441  friend struct Private;
442  Private *mPriv;
443 };
444 
446 {
447  Q_OBJECT
448  Q_DISABLE_COPY(BaseChannelSecurableInterface)
449 
450 public:
451  static BaseChannelSecurableInterfacePtr create()
452  {
453  return BaseChannelSecurableInterfacePtr(new BaseChannelSecurableInterface());
454  }
455  template<typename BaseChannelSecurableInterfaceSubclass>
457  {
459  new BaseChannelSecurableInterfaceSubclass());
460  }
461 
463 
464  QVariantMap immutableProperties() const;
465 
466  bool encrypted() const;
467  void setEncrypted(bool encrypted);
468 
469  bool verified() const;
470  void setVerified(bool verified);
471 
472 protected:
474 
475 private:
476  void createAdaptor();
477 
478  class Adaptee;
479  friend class Adaptee;
480  struct Private;
481  friend struct Private;
482  Private *mPriv;
483 };
484 
486 {
487  Q_OBJECT
488  Q_DISABLE_COPY(BaseChannelChatStateInterface)
489 
490 public:
491  static BaseChannelChatStateInterfacePtr create()
492  {
493  return BaseChannelChatStateInterfacePtr(new BaseChannelChatStateInterface());
494  }
495  template<typename BaseChannelChatStateInterfaceSubclass>
497  {
499  new BaseChannelChatStateInterfaceSubclass());
500  }
501 
503 
504  QVariantMap immutableProperties() const;
505 
506  Tp::ChatStateMap chatStates() const;
507  void setChatStates(const Tp::ChatStateMap &chatStates);
508 
510  void setSetChatStateCallback(const SetChatStateCallback &cb);
511  void setChatState(uint state, DBusError *error);
512 
513  void chatStateChanged(uint contact, uint state);
514 
515 protected:
517 
518 private:
519  void createAdaptor();
520 
521  class Adaptee;
522  friend class Adaptee;
523  struct Private;
524  friend struct Private;
525  Private *mPriv;
526 };
527 
529 {
530  Q_OBJECT
531  Q_DISABLE_COPY(BaseChannelGroupInterface)
532 
533 public:
534  static BaseChannelGroupInterfacePtr create(ChannelGroupFlags initialFlags, uint selfHandle) {
535  return BaseChannelGroupInterfacePtr(new BaseChannelGroupInterface(initialFlags, selfHandle));
536  }
537  template<typename BaseChannelGroupInterfaceSubclass>
540  new BaseChannelGroupInterfaceSubclass(initialFlags, selfHandle));
541  }
542  virtual ~BaseChannelGroupInterface();
543 
544  QVariantMap immutableProperties() const;
545 
547  void setRemoveMembersCallback(const RemoveMembersCallback &cb);
548 
550  void setAddMembersCallback(const AddMembersCallback &cb);
551 
552  /* Adds a contact to this group. No-op if already in this group */
553  void addMembers(const Tp::UIntList &handles, const QStringList &identifiers);
554  void removeMembers(const Tp::UIntList &handles);
555 
556 private Q_SLOTS:
557 private:
558  BaseChannelGroupInterface(ChannelGroupFlags initialFlags, uint selfHandle);
559  void createAdaptor();
560 
561  class Adaptee;
562  friend class Adaptee;
563  struct Private;
564  friend struct Private;
565  Private *mPriv;
566 };
567 
569 {
570  Q_OBJECT
571  Q_DISABLE_COPY(BaseChannelRoomInterface)
572 
573 public:
574  static BaseChannelRoomInterfacePtr create(const QString &roomName,
575  const QString &server,
576  const QString &creator,
577  uint creatorHandle,
578  const QDateTime &creationTimestamp)
579  {
580  return BaseChannelRoomInterfacePtr(new BaseChannelRoomInterface(roomName,
581  server,
582  creator,
583  creatorHandle,
584  creationTimestamp));
585  }
586  template<typename BaseChannelRoomInterfaceSubclass>
587  static SharedPtr<BaseChannelRoomInterfaceSubclass> create(const QString &roomName,
588  const QString &server,
589  const QString &creator,
590  uint creatorHandle,
591  const QDateTime &creationTimestamp)
592  {
594  new BaseChannelRoomInterfaceSubclass(roomName,
595  server,
596  creator,
597  creatorHandle,
598  creationTimestamp));
599  }
600 
601  virtual ~BaseChannelRoomInterface();
602 
603  QVariantMap immutableProperties() const;
604 
605  QString roomName() const;
606  QString server() const;
607  QString creator() const;
608  uint creatorHandle() const;
609  QDateTime creationTimestamp() const;
610 
611 protected:
612  BaseChannelRoomInterface(const QString &roomName,
613  const QString &server,
614  const QString &creator,
615  uint creatorHandle,
616  const QDateTime &creationTimestamp);
617 
618 private:
619  void createAdaptor();
620 
621  class Adaptee;
622  friend class Adaptee;
623  struct Private;
624  friend struct Private;
625  Private *mPriv;
626 };
627 
629 {
630  Q_OBJECT
631  Q_DISABLE_COPY(BaseChannelRoomConfigInterface)
632 
633 public:
634  static BaseChannelRoomConfigInterfacePtr create()
635  {
636  return BaseChannelRoomConfigInterfacePtr(new BaseChannelRoomConfigInterface());
637  }
638  template<typename BaseChannelRoomConfigInterfaceSubclass>
640  {
642  new BaseChannelRoomConfigInterfaceSubclass());
643  }
644 
646 
647  QVariantMap immutableProperties() const;
648 
649  bool anonymous() const;
650  void setAnonymous(bool anonymous);
651 
652  bool inviteOnly() const;
653  void setInviteOnly(bool inviteOnly);
654 
655  uint limit() const;
656  void setLimit(uint limit);
657 
658  bool moderated() const;
659  void setModerated(bool moderated);
660 
661  QString title() const;
662  void setTitle(const QString &title);
663 
664  QString description() const;
665  void setDescription(const QString &description);
666 
667  bool persistent() const;
668  void setPersistent(bool persistent);
669 
670  bool isPrivate() const;
671  void setPrivate(bool newPrivate);
672 
673  bool passwordProtected() const;
674  void setPasswordProtected(bool passwordProtected);
675 
676  QString password() const;
677  void setPassword(const QString &password);
678 
679  QString passwordHint() const;
680  void setPasswordHint(const QString &passwordHint);
681 
682  bool canUpdateConfiguration() const;
683  void setCanUpdateConfiguration(bool canUpdateConfiguration);
684 
685  QStringList mutableProperties() const;
686  void setMutableProperties(const QStringList &mutableProperties);
687 
688  bool configurationRetrieved() const;
689  void setConfigurationRetrieved(bool configurationRetrieved);
690 
692  void setUpdateConfigurationCallback(const UpdateConfigurationCallback &cb);
693  void updateConfiguration(const QVariantMap &properties, DBusError *error);
694 
695 protected:
697 
698 private:
699  void createAdaptor();
700 
701  class Adaptee;
702  friend class Adaptee;
703  struct Private;
704  friend struct Private;
705  Private *mPriv;
706 };
707 
709 {
710  Q_OBJECT
711  Q_DISABLE_COPY(BaseChannelCallType)
712 
713 public:
714  static BaseChannelCallTypePtr create(BaseChannel* channel, bool hardwareStreaming,
715  uint initialTransport,
716  bool initialAudio,
717  bool initialVideo,
718  QString initialAudioName,
719  QString initialVideoName,
720  bool mutableContents = false) {
721  return BaseChannelCallTypePtr(new BaseChannelCallType(channel,
722  hardwareStreaming,
723  initialTransport,
724  initialAudio,
725  initialVideo,
726  initialAudioName,
727  initialVideoName,
728  mutableContents));
729  }
730  template<typename BaseChannelCallTypeSubclass>
731  static SharedPtr<BaseChannelCallTypeSubclass> create(BaseChannel* channel, bool hardwareStreaming,
732  uint initialTransport,
733  bool initialAudio,
734  bool initialVideo,
735  QString initialAudioName,
736  QString initialVideoName,
737  bool mutableContents = false) {
739  new BaseChannelCallTypeSubclass(channel,
740  hardwareStreaming,
741  initialTransport,
742  initialAudio,
743  initialVideo,
744  initialAudioName,
745  initialVideoName,
746  mutableContents));
747  }
748 
751 
754 
755  virtual ~BaseChannelCallType();
756 
757  QVariantMap immutableProperties() const;
758 
759  Tp::ObjectPathList contents();
760  QVariantMap callStateDetails();
761  uint callState();
762  uint callFlags();
763  Tp::CallStateReason callStateReason();
764  bool hardwareStreaming();
765  Tp::CallMemberMap callMembers();
766  Tp::HandleIdentifierMap memberIdentifiers();
767  uint initialTransport();
768  bool initialAudio();
769  bool initialVideo();
770  QString initialAudioName();
771  QString initialVideoName();
772  bool mutableContents();
773 
775  void setAcceptCallback(const AcceptCallback &cb);
776 
778  void setHangupCallback(const HangupCallback &cb);
779 
781  void setSetRingingCallback(const SetRingingCallback &cb);
782 
784  void setSetQueuedCallback(const SetQueuedCallback &cb);
785 
787  void setAddContentCallback(const AddContentCallback &cb);
788 
789  void setCallState(const Tp::CallState &state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails);
790  void setMembersFlags(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason);
791  BaseCallContentPtr addContent(const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction);
792  void addContent(BaseCallContentPtr content);
793 
795 
796 protected:
798  bool hardwareStreaming,
799  uint initialTransport,
800  bool initialAudio,
801  bool initialVideo,
802  QString initialAudioName,
803  QString initialVideoName,
804  bool mutableContents = false);
805 
806 private:
807  void createAdaptor();
808 
809  class Adaptee;
810  friend class Adaptee;
811  struct Private;
812  friend struct Private;
813  Private *mPriv;
814 };
815 
817 {
818  Q_OBJECT
819  Q_DISABLE_COPY(BaseChannelHoldInterface)
820 
821 public:
822  static BaseChannelHoldInterfacePtr create() {
823  return BaseChannelHoldInterfacePtr(new BaseChannelHoldInterface());
824  }
825  template<typename BaseChannelHoldInterfaceSubclass>
828  new BaseChannelHoldInterfaceSubclass());
829  }
830  virtual ~BaseChannelHoldInterface();
831 
832  QVariantMap immutableProperties() const;
833 
834  Tp::LocalHoldState getHoldState() const;
835  Tp::LocalHoldStateReason getHoldReason() const;
836  void setHoldState(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason);
837 
839  void setSetHoldStateCallback(const SetHoldStateCallback &cb);
840 Q_SIGNALS:
841  void holdStateChanged(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason);
842 private:
844  void createAdaptor();
845 
846  class Adaptee;
847  friend class Adaptee;
848  struct Private;
849  friend struct Private;
850  Private *mPriv;
851 };
852 
854 {
855  Q_OBJECT
857 
858 public:
859  static BaseChannelMergeableConferenceInterfacePtr create() {
860  return BaseChannelMergeableConferenceInterfacePtr(new BaseChannelMergeableConferenceInterface());
861  }
862  template<typename BaseChannelMergeableConferenceInterfaceSubclass>
865  new BaseChannelMergeableConferenceInterfaceSubclass());
866  }
868 
869  QVariantMap immutableProperties() const;
870 
871  void merge(const QDBusObjectPath &channel);
872 
874  void setMergeCallback(const MergeCallback &cb);
875 private:
877  void createAdaptor();
878 
879  class Adaptee;
880  friend class Adaptee;
881  struct Private;
882  friend struct Private;
883  Private *mPriv;
884 };
885 
887 {
888  Q_OBJECT
889  Q_DISABLE_COPY(BaseChannelSplittableInterface)
890 
891 public:
892  static BaseChannelSplittableInterfacePtr create() {
893  return BaseChannelSplittableInterfacePtr(new BaseChannelSplittableInterface());
894  }
895  template<typename BaseChannelSplittableInterfaceSubclass>
898  new BaseChannelSplittableInterfaceSubclass());
899  }
901 
902  QVariantMap immutableProperties() const;
903 
904  void split();
905 
907  void setSplitCallback(const SplitCallback &cb);
908 private:
910  void createAdaptor();
911 
912  class Adaptee;
913  friend class Adaptee;
914  struct Private;
915  friend struct Private;
916  Private *mPriv;
917 };
918 
920 {
921  Q_OBJECT
922  Q_DISABLE_COPY(BaseChannelConferenceInterface)
923 
924 public:
925  static BaseChannelConferenceInterfacePtr create(Tp::ObjectPathList initialChannels = Tp::ObjectPathList(),
926  Tp::UIntList initialInviteeHandles = Tp::UIntList(),
927  QStringList initialInviteeIDs = QStringList(),
928  QString invitationMessage = QString(),
929  ChannelOriginatorMap originalChannels = ChannelOriginatorMap()) {
930  return BaseChannelConferenceInterfacePtr(new BaseChannelConferenceInterface(initialChannels, initialInviteeHandles, initialInviteeIDs, invitationMessage, originalChannels));
931  }
932  template<typename BaseChannelConferenceInterfaceSubclass>
934  Tp::UIntList initialInviteeHandles = Tp::UIntList(),
935  QStringList initialInviteeIDs = QStringList(),
936  QString invitationMessage = QString(),
937  ChannelOriginatorMap originalChannels = ChannelOriginatorMap()) {
939  new BaseChannelConferenceInterfaceSubclass(initialChannels, initialInviteeHandles, initialInviteeIDs, invitationMessage, originalChannels));
940  }
942 
943  QVariantMap immutableProperties() const;
944  Tp::ObjectPathList channels() const;
945  Tp::ObjectPathList initialChannels() const;
946  Tp::UIntList initialInviteeHandles() const;
947  QStringList initialInviteeIDs() const;
948  QString invitationMessage() const;
949  ChannelOriginatorMap originalChannels() const;
950 
951  void mergeChannel(const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties);
952  void removeChannel(const QDBusObjectPath &channel, const QVariantMap &details);
953 
954 private:
955  BaseChannelConferenceInterface(Tp::ObjectPathList initialChannels, Tp::UIntList initialInviteeHandles, QStringList initialInviteeIDs, QString invitationMessage, ChannelOriginatorMap originalChannels);
956  void createAdaptor();
957 
958  class Adaptee;
959  friend class Adaptee;
960  struct Private;
961  friend struct Private;
962  Private *mPriv;
963 };
964 
966 {
967  Q_OBJECT
968  Q_DISABLE_COPY(BaseChannelSMSInterface)
969 
970 public:
971  static BaseChannelSMSInterfacePtr create(bool flash, bool smsChannel) {
972  return BaseChannelSMSInterfacePtr(new BaseChannelSMSInterface(flash, smsChannel));
973  }
974  template<typename BaseChannelSMSInterfaceSubclass>
975  static SharedPtr<BaseChannelSMSInterfaceSubclass> create(bool flash, bool smsChannel) {
977  new BaseChannelSMSInterfaceSubclass(flash, smsChannel));
978  }
979  virtual ~BaseChannelSMSInterface();
980 
981  QVariantMap immutableProperties() const;
982 
984  void setGetSMSLengthCallback(const GetSMSLengthCallback &cb);
985 
986  bool flash() const;
987  bool smsChannel() const;
988 
989 Q_SIGNALS:
990  void smsChannelChanged(bool smsChannel);
991 
992 private:
993  BaseChannelSMSInterface(bool flash, bool smsChannel);
994  void createAdaptor();
995 
996  class Adaptee;
997  friend class Adaptee;
998  struct Private;
999  friend struct Private;
1000  Private *mPriv;
1001 };
1002 
1003 }
1004 #endif
Tp::RequestableChannelClassList requestableChannelClasses
Definition: base-channel.h:138
Callback2< void, const QByteArray &, DBusError * > RespondCallback
Definition: base-channel.h:412
Callback3< void, uint, const QString &, DBusError * > CancelCaptchaCallback
Definition: base-channel.h:324
MediaStreamType
Definition: build/TelepathyQt/_gen/constants.h:2716
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
CreateChannelCallback createChannel
Definition: base-channel.h:750
Base class for implementations of Channel.Interface.Securable.
Definition: base-channel.h:445
Callback3< void, const Tp::LocalHoldState &, const Tp::LocalHoldStateReason &, DBusError * > SetHoldStateCallback
Definition: base-channel.h:838
Base class for D-Bus service interfaces.
Definition: dbus-service.h:73
static BaseChannelGroupInterfacePtr create(ChannelGroupFlags initialFlags, uint selfHandle)
Definition: base-channel.h:534
static BaseChannelPtr create(BaseConnection *connection, const QString &channelType, Tp::HandleType targetHandleType=Tp::HandleTypeNone, uint targetHandle=0)
Definition: base-channel.h:48
Base class for Connection implementations.
Definition: base-connection.h:44
Callback3< QByteArray, uint, const QString &, DBusError * > GetCaptchaDataCallback
Definition: base-channel.h:318
Callback3< QString, const Tp::MessagePartList &, uint, DBusError * > SendMessageCallback
Definition: base-channel.h:197
Callback2< void, const QString &, DBusError * > StartMechanismCallback
Definition: base-channel.h:404
Base class for implementations of Channel.Interface.Hold.
Definition: base-channel.h:816
static SharedPtr< BaseChannelMergeableConferenceInterfaceSubclass > create()
Definition: base-channel.h:863
Callback1< void, DBusError * > SetQueuedCallback
Definition: base-channel.h:783
static BaseChannelRoomListTypePtr create(const QString &server=QString())
Definition: base-channel.h:225
Base class for implementations of Channel.Interface.Conference.
Definition: base-channel.h:919
static SharedPtr< BaseChannelSplittableInterfaceSubclass > create()
Definition: base-channel.h:896
static SharedPtr< BaseChannelConferenceInterfaceSubclass > create(Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap())
Definition: base-channel.h:933
QList< RoomInfo > RoomInfoList
Definition: build/TelepathyQt/_gen/types.h:2690
Base class for all the Channel object interface implementations.
Definition: base-channel.h:95
static BaseChannelTextTypePtr create(BaseChannel *channel)
Definition: base-channel.h:119
static SharedPtr< BaseChannelChatStateInterfaceSubclass > create()
Definition: base-channel.h:496
Callback2< bool, const QVariantMap &, DBusError * > EnsureChannelCallback
Definition: base-channel.h:752
static SharedPtr< BaseChannelSASLAuthenticationInterfaceSubclass > create(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)
Definition: base-channel.h:365
Callback3< void, const Tp::UIntList &, const QString &, DBusError * > RemoveMembersCallback
Definition: base-channel.h:546
static BaseChannelRoomConfigInterfacePtr create()
Definition: base-channel.h:634
static BaseChannelRoomInterfacePtr create(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)
Definition: base-channel.h:574
Callback1< void, DBusError * > AcceptSASLCallback
Definition: base-channel.h:416
Definition: build/TelepathyQt/_gen/types.h:320
static BaseChannelSplittableInterfacePtr create()
Definition: base-channel.h:892
Callback4< QDBusObjectPath, const QString &, const Tp::MediaStreamType &, const Tp::MediaStreamDirection &, DBusError * > AddContentCallback
Definition: base-channel.h:786
Callback2< void, const Tp::CaptchaAnswers &, DBusError * > AnswerCaptchasCallback
Definition: base-channel.h:321
Base class for D-Bus services.
Definition: dbus-service.h:46
Base class for implementations of Channel.Interface.CaptchaAuthentication.
Definition: base-channel.h:297
Base class for implementations of Channel.Interface.RoomConfig1.
Definition: base-channel.h:628
Definition: build/TelepathyQt/_gen/types.h:101
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
static BaseChannelConferenceInterfacePtr create(Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap())
Definition: base-channel.h:925
Callback1< void, DBusError * > SetRingingCallback
Definition: base-channel.h:780
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
QList< MessagePartList > MessagePartListList
Definition: build/TelepathyQt/_gen/types.h:2039
Base class for implementations of Channel.Interface.SASLAuthentication.
Definition: base-channel.h:342
static SharedPtr< BaseChannelSMSInterfaceSubclass > create(bool flash, bool smsChannel)
Definition: base-channel.h:975
static BaseChannelMessagesInterfacePtr create(BaseChannelTextType *textTypeInterface, QStringList supportedContentTypes, UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport)
Definition: base-channel.h:169
static SharedPtr< BaseChannelSecurableInterfaceSubclass > create()
Definition: base-channel.h:456
Base class for implementations of Channel.Type.Text.
Definition: base-channel.h:113
Callback2< QDBusObjectPath, const QVariantMap &, DBusError * > CreateChannelCallback
Definition: base-channel.h:128
EnsureChannelCallback ensureChannel
Definition: base-channel.h:753
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
Base class for implementations of Channel.Interface.SMS.
Definition: base-channel.h:965
static BaseChannelSASLAuthenticationInterfacePtr create(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)
Definition: base-channel.h:348
Base class for implementations of Channel.Interface.Chat.State.
Definition: base-channel.h:485
EnsureChannelCallback ensureChannel
Definition: base-channel.h:132
Callback2< void, const Tp::MessagePartList &, DBusError * > GetSMSLengthCallback
Definition: base-channel.h:983
Definition: build/TelepathyQt/_gen/types.h:81
static BaseChannelChatStateInterfacePtr create()
Definition: base-channel.h:491
static SharedPtr< BaseChannelHoldInterfaceSubclass > create()
Definition: base-channel.h:826
CreateChannelCallback createChannel
Definition: base-channel.h:129
Base class for implementations of Channel.Interface.Messages.
Definition: base-channel.h:163
Callback2< void, uint, DBusError * > SetChatStateCallback
Definition: base-channel.h:509
Tp::RequestableChannelClassList requestableChannelClasses
Definition: base-channel.h:794
Callback3< void, uint, const QString &, DBusError * > AbortSASLCallback
Definition: base-channel.h:420
static SharedPtr< BaseChannelServerAuthenticationTypeSubclass > create(const QString &authenticationMethod)
Definition: base-channel.h:278
static BaseChannelMergeableConferenceInterfacePtr create()
Definition: base-channel.h:859
static BaseChannelSecurableInterfacePtr create()
Definition: base-channel.h:451
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35
Callback1< void, QString > MessageAcknowledgedCallback
Definition: base-channel.h:140
Callback1< void, DBusError * > ListRoomsCallback
Definition: base-channel.h:245
Definition: build/TelepathyQt/_gen/types.h:907
MediaStreamDirection
Definition: build/TelepathyQt/_gen/constants.h:2777
Definition: build/TelepathyQt/_gen/types.h:287
static SharedPtr< BaseChannelRoomInterfaceSubclass > create(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)
Definition: base-channel.h:587
static SharedPtr< BaseChannelRoomConfigInterfaceSubclass > create()
Definition: base-channel.h:639
Base class for implementations of Channel.Interface.Splittable.
Definition: base-channel.h:886
Definition: build/TelepathyQt/_gen/constants.h:1382
static BaseChannelCaptchaAuthenticationInterfacePtr create(bool canRetryCaptcha)
Definition: base-channel.h:303
Base class for implementations of Channel.Type.Call.
Definition: base-channel.h:708
Base class for implementations of Channel.Type.ServerAuthentifcation.
Definition: base-channel.h:268
Callback3< void, const QString &, const QByteArray &, DBusError * > StartMechanismWithDataCallback
Definition: base-channel.h:408
Definition: build/TelepathyQt/_gen/types.h:1646
Callback1< void, DBusError * > SplitCallback
Definition: base-channel.h:906
Callback1< void, DBusError * > StopListingCallback
Definition: base-channel.h:249
static SharedPtr< BaseChannelCallTypeSubclass > create(BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)
Definition: base-channel.h:731
Callback4< void, Tp::CaptchaInfoList &, uint &, QString &, DBusError * > GetCaptchasCallback
Definition: base-channel.h:315
QFlags< ChannelGroupFlag > ChannelGroupFlags
Definition: build/TelepathyQt/_gen/constants.h:1043
static SharedPtr< BaseChannelRoomListTypeSubclass > create(const QString &server=QString())
Definition: base-channel.h:230
Base class for implementations of Channel.Type.RoomList.
Definition: base-channel.h:219
static SharedPtr< BaseChannelCaptchaAuthenticationInterfaceSubclass > create(bool canRetryCaptcha)
Definition: base-channel.h:307
static SharedPtr< BaseChannelTextTypeSubclass > create(BaseChannel *channel)
Definition: base-channel.h:123
static BaseChannelCallTypePtr create(BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)
Definition: base-channel.h:714
LocalHoldState
Definition: build/TelepathyQt/_gen/constants.h:3466
Definition: build/TelepathyQt/_gen/types.h:752
Callback1< void, DBusError * > AcceptCallback
Definition: base-channel.h:774
static BaseChannelSMSInterfacePtr create(bool flash, bool smsChannel)
Definition: base-channel.h:971
static SharedPtr< BaseChannelMessagesInterfaceSubclass > create()
Definition: base-channel.h:181
static BaseChannelHoldInterfacePtr create()
Definition: base-channel.h:822
CallState
Definition: build/TelepathyQt/_gen/constants.h:2286
Definition: build/TelepathyQt/_gen/types.h:885
static SharedPtr< BaseChannelGroupInterfaceSubclass > create(ChannelGroupFlags initialFlags, uint selfHandle)
Definition: base-channel.h:538
Base class for channel implementations.
Definition: base-channel.h:42
Base class for implementations of Channel.Interface.MergeableConference.
Definition: base-channel.h:853
Base class for implementations of Channel.Interface.Group.
Definition: base-channel.h:528
Callback2< bool, const QVariantMap &, DBusError * > EnsureChannelCallback
Definition: base-channel.h:131
Callback3< void, const Tp::UIntList &, const QString &, DBusError * > AddMembersCallback
Definition: base-channel.h:549
LocalHoldStateReason
Definition: build/TelepathyQt/_gen/constants.h:3516
Callback4< void, uint, const QString &, const QString &, DBusError * > HangupCallback
Definition: base-channel.h:777
Callback2< void, const QVariantMap &, DBusError * > UpdateConfigurationCallback
Definition: base-channel.h:691
Callback2< QDBusObjectPath, const QVariantMap &, DBusError * > CreateChannelCallback
Definition: base-channel.h:749
static BaseChannelServerAuthenticationTypePtr create(const QString &authenticationMethod)
Definition: base-channel.h:274
Callback2< void, const QDBusObjectPath &, DBusError * > MergeCallback
Definition: base-channel.h:873
Base class for implementations of Channel.Interface.Room2.
Definition: base-channel.h:568


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00333.html0000644000175100017520000001411712530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSubscriptionMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSubscriptionMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, ContactSubscriptions >.

Public Member Functions

 ContactSubscriptionMap ()
 
 ContactSubscriptionMap (const QMap< uint, ContactSubscriptions > &a)
 
ContactSubscriptionMapoperator= (const QMap< uint, ContactSubscriptions > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, ContactSubscriptions>, but needed to have a discrete type in the Qt type system.

A map from contacts to their subscribe, publish and publish-request attributes.

Constructor & Destructor Documentation

Tp::ContactSubscriptionMap::ContactSubscriptionMap ( )
inline
Tp::ContactSubscriptionMap::ContactSubscriptionMap ( const QMap< uint, ContactSubscriptions > &  a)
inline

Member Function Documentation

ContactSubscriptionMap& Tp::ContactSubscriptionMap::operator= ( const QMap< uint, ContactSubscriptions > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00088.html0000644000175100017520000011113012530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::Client::AuthenticationTLSCertificateInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AuthenticationTLSCertificateInterface Class Reference

#include <TelepathyQt/TLSCertificate>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Accept (int timeout=-1)
 
QDBusPendingReply Reject (const Tp::TLSCertificateRejectionList &rejections, int timeout=-1)
 

Signals

void Accepted ()
 
void Rejected (const Tp::TLSCertificateRejectionList &rejections)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 AuthenticationTLSCertificateInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AuthenticationTLSCertificateInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 AuthenticationTLSCertificateInterface (Tp::DBusProxy *proxy)
 
 AuthenticationTLSCertificateInterface (const Tp::AbstractInterface &mainInterface)
 
 AuthenticationTLSCertificateInterface (const Tp::AbstractInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyState () const
 
Tp::PendingVariantrequestPropertyRejections () const
 
Tp::PendingVariantrequestPropertyCertificateType () const
 
Tp::PendingVariantrequestPropertyCertificateChainData () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Authentication.TLSCertificate".

Constructor & Destructor Documentation

Tp::Client::AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AuthenticationTLSCertificateInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a AuthenticationTLSCertificateInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface ( Tp::DBusProxy proxy)

Creates a AuthenticationTLSCertificateInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface ( const Tp::AbstractInterface mainInterface)
explicit

Creates a AuthenticationTLSCertificateInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface ( const Tp::AbstractInterface mainInterface,
QObject *  parent 
)

Creates a AuthenticationTLSCertificateInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::AuthenticationTLSCertificateInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Authentication.TLSCertificate", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::AuthenticationTLSCertificateInterface::requestPropertyState ( ) const
inline

Asynchronous getter for the remote object property State of type uint.

The current state of this certificate. State change notifications happen by means of the Accepted and Rejected signals.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AuthenticationTLSCertificateInterface::requestPropertyRejections ( ) const
inline

Asynchronous getter for the remote object property Rejections of type Tp::TLSCertificateRejectionList.

If the State is Rejected, an array of TLS_Certificate_Rejection structures containing the reason why the certificate is rejected.

If the State is not Rejected, this property is not meaningful, and SHOULD be set to an empty array.

The first rejection in the list MAY be assumed to be the most important; if the array contains more than one element, the CM MAY either use the values after the first, or ignore them.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AuthenticationTLSCertificateInterface::requestPropertyCertificateType ( ) const
inline

Asynchronous getter for the remote object property CertificateType of type QString.

The type of this TLS certificate (e.g. 'x509' or 'pgp'). This property is immutable

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::AuthenticationTLSCertificateInterface::requestPropertyCertificateChainData ( ) const
inline

Asynchronous getter for the remote object property CertificateChainData of type Tp::ByteArrayList.

One or more TLS certificates forming a trust chain, each encoded as specified by Certificate_Data.

The first certificate in the chain MUST be the server certificate, followed by the issuer's certificate, followed by the issuer's issuer and so on.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::AuthenticationTLSCertificateInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::AuthenticationTLSCertificateInterface::Accept ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Accept on the remote object.

Accepts this certificate, i.e. marks it as verified.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::AuthenticationTLSCertificateInterface::Reject ( const Tp::TLSCertificateRejectionList rejections,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Reject on the remote object.

Rejects this certificate.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
rejections

The new value of the Rejections property.

This MUST NOT be an empty array.

timeoutThe timeout in milliseconds.
void Tp::Client::AuthenticationTLSCertificateInterface::Accepted ( )
signal

Represents the signal Accepted on the remote object.

The State of this certificate has changed to Accepted.

void Tp::Client::AuthenticationTLSCertificateInterface::Rejected ( const Tp::TLSCertificateRejectionList rejections)
signal

Represents the signal Rejected on the remote object.

The State of this certificate has changed to Rejected.

Parameters
rejections
The new value of the Rejections property.
void Tp::Client::AuthenticationTLSCertificateInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01049.html0000644000175100017520000011563412530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::IncomingStreamTubeChannel Member List

This is the complete list of members for Tp::IncomingStreamTubeChannel, including all inherited members.

acceptTubeAsTcpSocket()Tp::IncomingStreamTubeChannel
acceptTubeAsTcpSocket(const QHostAddress &allowedAddress, quint16 allowedPort)Tp::IncomingStreamTubeChannel
acceptTubeAsUnixSocket(bool requireCredentials=false)Tp::IncomingStreamTubeChannel
accessControl() const Tp::StreamTubeChannelprotected
actualFeatures() const Tp::ReadyObjectvirtual
addConnection(uint connection)Tp::StreamTubeChannelprotected
addressType() const Tp::StreamTubeChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
connectionClosed(uint connectionId, const QString &errorName, const QString &errorMessage)Tp::StreamTubeChannelsignal
connections() const Tp::StreamTubeChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::IncomingStreamTubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureConnectionMonitoringTp::StreamTubeChannelstatic
FeatureCoreTp::IncomingStreamTubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
IncomingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=IncomingStreamTubeChannel::FeatureCore)Tp::IncomingStreamTubeChannelprotected
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
ipAddress() const Tp::StreamTubeChannel
isConference() const Tp::Channel
isDroppingConnections() const Tp::StreamTubeChannelprotected
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
localAddress() const Tp::StreamTubeChannel
missingFeatures() const Tp::ReadyObjectvirtual
newConnection(uint connectionId)Tp::StreamTubeChannelsignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
removeConnection(uint connection, const QString &error, const QString &message)Tp::StreamTubeChannelprotected
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
service() const Tp::StreamTubeChannel
setAccessControl(SocketAccessControl accessControl)Tp::StreamTubeChannelprotected
setAddressType(SocketAddressType type)Tp::StreamTubeChannelprotected
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setIpAddress(const QPair< QHostAddress, quint16 > &address)Tp::StreamTubeChannelprotected
setLocalAddress(const QString &address)Tp::StreamTubeChannelprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
StreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore)Tp::StreamTubeChannelprotected
supportsAbstractUnixSocketsOnLocalhost() const Tp::StreamTubeChannel
supportsAbstractUnixSocketsWithCredentials() const Tp::StreamTubeChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsIPv4SocketsOnLocalhost() const Tp::StreamTubeChannel
supportsIPv4SocketsWithSpecifiedAddress() const Tp::StreamTubeChannel
supportsIPv6SocketsOnLocalhost() const Tp::StreamTubeChannel
supportsIPv6SocketsWithSpecifiedAddress() const Tp::StreamTubeChannel
supportsUnixSocketsOnLocalhost() const Tp::StreamTubeChannel
supportsUnixSocketsWithCredentials() const Tp::StreamTubeChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~IncomingStreamTubeChannel()Tp::IncomingStreamTubeChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~StreamTubeChannel()Tp::StreamTubeChannelvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01363.html0000644000175100017520000001276212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeTextAdaptor Member List

This is the complete list of members for Tp::Service::ChannelTypeTextAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
AcknowledgePendingMessages(const Tp::UIntList &IDs, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeTextAdaptorslot
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetMessageTypes(const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeTextAdaptorslot
ListPendingMessages(bool clear, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeTextAdaptorslot
LostMessage()Tp::Service::ChannelTypeTextAdaptorsignal
Received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text)Tp::Service::ChannelTypeTextAdaptorsignal
Send(uint type, const QString &text, const QDBusMessage &dbusMessage)Tp::Service::ChannelTypeTextAdaptorslot
SendError(uint error, uint timestamp, uint type, const QString &text)Tp::Service::ChannelTypeTextAdaptorsignal
Sent(uint timestamp, uint type, const QString &text)Tp::Service::ChannelTypeTextAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00147.html0000644000175100017520000015006712530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentInterfaceMediaInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceMediaInterface Class Reference

#include <TelepathyQt/CallContent>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply UpdateLocalMediaDescription (const QVariantMap &mediaDescription, int timeout=-1)
 
QDBusPendingReply AcknowledgeDTMFChange (uchar event, uint state, int timeout=-1)
 
QDBusPendingReply Fail (const Tp::CallStateReason &reason, int timeout=-1)
 

Signals

void NewMediaDescriptionOffer (const QDBusObjectPath &mediaDescription, const QVariantMap &properties)
 
void MediaDescriptionOfferDone ()
 
void LocalMediaDescriptionChanged (const QVariantMap &updatedMediaDescription)
 
void RemoteMediaDescriptionsChanged (const Tp::ContactMediaDescriptionPropertiesMap &updatedMediaDescriptions)
 
void MediaDescriptionsRemoved (const Tp::UIntList &removedMediaDescriptions)
 
void DTMFChangeRequested (uchar event, uint state)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallContentInterfaceMediaInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceMediaInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceMediaInterface (Tp::DBusProxy *proxy)
 
 CallContentInterfaceMediaInterface (const Tp::Client::CallContentInterface &mainInterface)
 
 CallContentInterfaceMediaInterface (const Tp::Client::CallContentInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyRemoteMediaDescriptions () const
 
Tp::PendingVariantrequestPropertyLocalMediaDescriptions () const
 
Tp::PendingVariantrequestPropertyMediaDescriptionOffer () const
 
Tp::PendingVariantrequestPropertyPacketization () const
 
Tp::PendingVariantrequestPropertyCurrentDTMFEvent () const
 
Tp::PendingVariantrequestPropertyCurrentDTMFState () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.Interface.Media".

Constructor & Destructor Documentation

Tp::Client::CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceMediaInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceMediaInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface ( Tp::DBusProxy proxy)

Creates a CallContentInterfaceMediaInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface ( const Tp::Client::CallContentInterface mainInterface)
explicit

Creates a CallContentInterfaceMediaInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentInterfaceMediaInterface::CallContentInterfaceMediaInterface ( const Tp::Client::CallContentInterface mainInterface,
QObject *  parent 
)

Creates a CallContentInterfaceMediaInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentInterfaceMediaInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.Interface.Media", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentInterfaceMediaInterface::requestPropertyRemoteMediaDescriptions ( ) const
inline

Asynchronous getter for the remote object property RemoteMediaDescriptions of type Tp::ContactMediaDescriptionPropertiesMap.

A map from contact handles to descriptions supported by that contact. Keys of this map will appear in at most one RemoteMembers. See RemoteContact for more details on how to map between MediaDescriptions and Streams.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceMediaInterface::requestPropertyLocalMediaDescriptions ( ) const
inline

Asynchronous getter for the remote object property LocalMediaDescriptions of type Tp::ContactMediaDescriptionPropertiesMap.

A map from contact handles to the descriptions the local side responsed with.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceMediaInterface::requestPropertyMediaDescriptionOffer ( ) const
inline

Asynchronous getter for the remote object property MediaDescriptionOffer of type Tp::MediaDescriptionOffer.

The object path to the current CallContentMediaDescriptionInterface object, its CallContentMediaDescriptionInterface::RemoteContact and a mapping of the MediaDescriptions properties. If the object path is "/" then there isn't an outstanding content description, and the mapping MUST be empty.

Having all CallContentMediaDescriptionInterface properties here saves a D-Bus round-trip - it shouldn't be necessary to get these properties from the Content MediaDescription object, in practice.

Change notification is via the NewMediaDescriptionOffer() and MediaDescriptionOfferDone() signals.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceMediaInterface::requestPropertyPacketization ( ) const
inline

Asynchronous getter for the remote object property Packetization of type uint.

The packetization method in use for this content.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceMediaInterface::requestPropertyCurrentDTMFEvent ( ) const
inline

Asynchronous getter for the remote object property CurrentDTMFEvent of type uchar.

The currently requested DTMF event (for state-recoverability of DTMFChangeRequested). Should be ignored if CurrentDTMFState is None.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceMediaInterface::requestPropertyCurrentDTMFState ( ) const
inline

Asynchronous getter for the remote object property CurrentDTMFState of type uint.

The current DTMF state (for state-recoverability of DTMFChangeRequested).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentInterfaceMediaInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallContentInterfaceMediaInterface::UpdateLocalMediaDescription ( const QVariantMap &  mediaDescription,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method UpdateLocalMediaDescription on the remote object.

Update the local codec mapping and other interfaces of the MediaDescription. This method should only be used during an existing call to update the local media description. This may trigger a re-negotiation which may result in new new MediaDescriptionOffers if the "FurtherNegotiationRequired" property is TRUE. Otherwise, only parameters which strictly describe the media being sent can be changed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
mediaDescription
The updated media description that the local side wants to use.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallContentInterfaceMediaInterface::AcknowledgeDTMFChange ( uchar  event,
uint  state,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AcknowledgeDTMFChange on the remote object.

Called by the streaming implementation in response to DTMFChangeRequested to confirm that it has started or stopped sending the event in question.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
event
The event referred to in the corresponding DTMFChangeRequested 
signal.
state
Either Sending or None.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallContentInterfaceMediaInterface::Fail ( const Tp::CallStateReason reason,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Fail on the remote object.

Signal an unrecoverable error for this content, and remove it.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
reason
A reason struct describing the error.
timeoutThe timeout in milliseconds.
void Tp::Client::CallContentInterfaceMediaInterface::NewMediaDescriptionOffer ( const QDBusObjectPath &  mediaDescription,
const QVariantMap &  properties 
)
signal

Represents the signal NewMediaDescriptionOffer on the remote object.

Emitted when a new CallContentMediaDescriptionInterface appears. The streaming >implementation MUST respond by calling the CallContentMediaDescriptionInterface::Accept() or CallContentMediaDescriptionInterface::Reject() method on the description object appeared.

Emission of this signal indicates that the MediaDescriptionOffer property has changed to (Description, Contact, MediaDescriptionProperties).

When the MediaDescriptionOffer has been dealt with then CallContentInterfaceMediaInterface::MediaDescriptionOfferDone() must be emitted before CallContentInterfaceMediaInterface::NewMediaDescriptionOffer() is emitted again.

Parameters
mediaDescription
The object path of the new media description. This replaces any 
previous media description.
properties
The immutable properties of the remote media description. Having 
all the MediaDescription properties here saves a D-Bus round-trip - 
it shouldn&apos;t be necessary to get the properties from the 
MediaDescription object, in practice.
void Tp::Client::CallContentInterfaceMediaInterface::MediaDescriptionOfferDone ( )
signal

Represents the signal MediaDescriptionOfferDone on the remote object.

Emitted when a CallContentMediaDescriptionInterface has been handled.

Emission of this signal indicates that the MediaDescriptionOffer property has changed to ("/", 0, {}).

void Tp::Client::CallContentInterfaceMediaInterface::LocalMediaDescriptionChanged ( const QVariantMap &  updatedMediaDescription)
signal

Represents the signal LocalMediaDescriptionChanged on the remote object.

Change notification for CallContentInterfaceMediaInterface::LocalMediaDescriptions

Parameters
updatedMediaDescription

The local content description that was updated

void Tp::Client::CallContentInterfaceMediaInterface::RemoteMediaDescriptionsChanged ( const Tp::ContactMediaDescriptionPropertiesMap updatedMediaDescriptions)
signal

Represents the signal RemoteMediaDescriptionsChanged on the remote object.

Change notification for CallContentInterfaceMediaInterface::RemoteMediaDescriptions

Parameters
updatedMediaDescriptions

The remote content descriptions that were updated

void Tp::Client::CallContentInterfaceMediaInterface::MediaDescriptionsRemoved ( const Tp::UIntList removedMediaDescriptions)
signal

Represents the signal MediaDescriptionsRemoved on the remote object.

Removal notification for CallContentInterfaceMediaInterface::RemoteMediaDescriptions and CallContentInterfaceMediaInterface::LocalMediaDescriptions

Parameters
removedMediaDescriptions

The local and remote content descriptions that are no longer part of this content

void Tp::Client::CallContentInterfaceMediaInterface::DTMFChangeRequested ( uchar  event,
uint  state 
)
signal

Represents the signal DTMFChangeRequested on the remote object.

Used by the CM to relay instructions from Channel.Interface.DTMF to the streaming implementation. If any contact in this call supports the telephone-event codec in their MediaDescription, this event should be sent as outlined in RFC 4733. Otherwise, it should be sent as an audible tone.

Parameters
event
The event to send (or stop sending).
state
Either Pending_Send or Pending_Stop_Sending.
void Tp::Client::CallContentInterfaceMediaInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01108.html0000644000175100017520000001374412530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingComposite Member List

This is the complete list of members for Tp::PendingComposite, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingComposite(const QList< PendingOperation * > &operations, const SharedPtr< RefCounted > &object)Tp::PendingComposite
PendingComposite(const QList< PendingOperation * > &operations, bool failOnFirstError, const SharedPtr< RefCounted > &object)Tp::PendingComposite
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingComposite()Tp::PendingComposite
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00962.html0000644000175100017520000011415412530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallChannel Member List

This is the complete list of members for Tp::CallChannel, including all inherited members.

accept()Tp::CallChannel
actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
CallChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=CallChannel::FeatureCore)Tp::CallChannelprotected
callFlags() const Tp::CallChannel
callFlagsChanged(Tp::CallFlags flags)Tp::CallChannelsignal
callState() const Tp::CallChannel
callStateChanged(Tp::CallState state)Tp::CallChannelsignal
callStateDetails() const Tp::CallChannel
callStateReason() const Tp::CallChannel
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
contentAdded(const Tp::CallContentPtr &content)Tp::CallChannelsignal
contentByName(const QString &contentName) const Tp::CallChannel
contentRemoved(const Tp::CallContentPtr &content, const Tp::CallStateReason &reason)Tp::CallChannelsignal
contents() const Tp::CallChannel
contentsForType(MediaStreamType type) const Tp::CallChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::CallChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureCallMembersTp::CallChannelstatic
FeatureCallStateTp::CallChannelstatic
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureContentsTp::CallChannelstatic
FeatureCoreTp::CallChannelstatic
FeatureLocalHoldStateTp::CallChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
handlerStreamingRequired() const Tp::CallChannel
hangup(CallStateChangeReason reason=CallStateChangeReasonUserRequested, const QString &detailedReason=QString(), const QString &message=QString())Tp::CallChannel
hasInitialAudio() const Tp::CallChannel
hasInitialVideo() const Tp::CallChannel
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
hasMutableContents() const Tp::CallChannel
immutableProperties() const Tp::Channel
initialAudioName() const Tp::CallChannel
initialTransportType() const Tp::CallChannel
initialVideoName() const Tp::CallChannel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
localHoldState() const Tp::CallChannel
localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason)Tp::CallChannelsignal
localHoldStateReason() const Tp::CallChannel
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
remoteMemberFlags(const ContactPtr &member) const Tp::CallChannel
remoteMemberFlagsChanged(const QHash< Tp::ContactPtr, Tp::CallMemberFlags > &remoteMemberFlags, const Tp::CallStateReason &reason)Tp::CallChannelsignal
remoteMembers() const Tp::CallChannel
remoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason)Tp::CallChannelsignal
requestClose()Tp::Channel
requestContent(const QString &name, MediaStreamType type, MediaStreamDirection direction)Tp::CallChannel
requestedFeatures() const Tp::ReadyObjectvirtual
requestHold(bool hold)Tp::CallChannel
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setQueued()Tp::CallChannel
setRinging()Tp::CallChannel
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~CallChannel()Tp::CallChannelvirtual
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00565_source.html0000644000175100017520000003474412530426257022534 0ustar00kaffeinekaffeine00000000000000 and-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
and-filter.h
1 
23 #ifndef _TelepathyQt_and_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_and_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Filter>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 template <class T>
37 class AndFilter : public Filter<T>
38 {
39 public:
41  const QList<SharedPtr<const Filter<T> > > &filters = QList<SharedPtr<const Filter<T> > >())
42  {
44  }
45 
46  inline virtual ~AndFilter() { }
47 
48  inline virtual bool isValid() const
49  {
50  Q_FOREACH (const SharedPtr<const Filter<T> > &filter, mFilters) {
51  if (!filter || !filter->isValid()) {
52  return false;
53  }
54  }
55  return true;
56  }
57 
58  inline virtual bool matches(const SharedPtr<T> &t) const
59  {
60  if (!isValid()) {
61  return false;
62  }
63 
64  Q_FOREACH (const SharedPtr<const Filter<T> > &filter, mFilters) {
65  if (!filter->matches(t)) {
66  return false;
67  }
68  }
69  return true;
70  }
71 
72  inline QList<SharedPtr<const Filter<T> > > filters() const { return mFilters; }
73 
74 private:
75  AndFilter(const QList<SharedPtr<const Filter<T> > > &filters)
76  : Filter<T>(), mFilters(filters) { }
77 
78  QList<SharedPtr<const Filter<T> > > mFilters;
79 };
80 
81 } // Tp
82 
83 #endif
virtual bool matches(const SharedPtr< T > &t) const
Definition: and-filter.h:58
QList< SharedPtr< const Filter< T > > > filters() const
Definition: and-filter.h:72
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The AndFilter class provides a generic filter object to be used in conjunction of other filters...
Definition: and-filter.h:37
virtual bool isValid() const
Definition: and-filter.h:48
virtual ~AndFilter()
Definition: and-filter.h:46
static SharedPtr< AndFilter< T > > create(const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >())
Definition: and-filter.h:40


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/dir_873b20b8174f0d08bad0230936669cc5.html0000644000175100017520000000414212530426260025304 0ustar00kaffeinekaffeine00000000000000 build Directory Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
build Directory Reference

Directories

directory  TelepathyQt
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00838_source.html0000644000175100017520000007135212530426257022533 0ustar00kaffeinekaffeine00000000000000 svc-call.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
svc-call.h
1 /*
2  * This file contains D-Bus adaptor classes generated by qt-svc-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #include <TelepathyQt/AbstractAdaptor>
9 #include <TelepathyQt/Global>
10 #include <TelepathyQt/Types>
11 
12 #include <QObject>
13 #include <QtDBus>
14 
15 namespace Tp
16 {
17 namespace Service
18 {
19 
27 class TP_QT_EXPORT CallContentAdaptor : public Tp::AbstractAdaptor
28 {
29  Q_OBJECT
30  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Call1.Content")
31  Q_CLASSINFO("D-Bus Introspection", ""
32 " <interface name=\"org.freedesktop.Telepathy.Call1.Content\">\n"
33 " <property access=\"read\" type=\"as\" name=\"Interfaces\"/>\n"
34 " <property access=\"read\" type=\"s\" name=\"Name\"/>\n"
35 " <property access=\"read\" type=\"u\" name=\"Type\"/>\n"
36 " <property access=\"read\" type=\"u\" name=\"Disposition\"/>\n"
37 " <property access=\"read\" type=\"ao\" name=\"Streams\"/>\n"
38 " <method name=\"Remove\"/>\n"
39 " <signal name=\"StreamsAdded\">\n"
40 " <arg type=\"ao\" name=\"streams\"/>\n"
41 " </signal>\n"
42 " <signal name=\"StreamsRemoved\">\n"
43 " <arg type=\"ao\" name=\"streams\"/>\n"
44 " <arg type=\"(uuss)\" name=\"reason\">\n"
45 " <annotation value=\"Tp::CallStateReason\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
46 " </arg>\n"
47 " </signal>\n"
48 " </interface>\n"
49 "")
50  Q_PROPERTY(QStringList Interfaces READ Interfaces )
51  Q_PROPERTY(QString Name READ Name )
52  Q_PROPERTY(uint Type READ Type )
53  Q_PROPERTY(uint Disposition READ Disposition )
54  Q_PROPERTY(Tp::ObjectPathList Streams READ Streams )
55 
56 public:
57  CallContentAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
58  virtual ~CallContentAdaptor();
59 
60  typedef Tp::MethodInvocationContextPtr< > RemoveContextPtr;
61 
62 public: // PROPERTIES
80  QStringList Interfaces() const;
102  QString Name() const;
116  uint Type() const;
128  uint Disposition() const;
156  Tp::ObjectPathList Streams() const;
157 
158 public Q_SLOTS: // METHODS
174  void Remove(const QDBusMessage& dbusMessage);
175 
176 Q_SIGNALS: // SIGNALS
189  void StreamsAdded(const Tp::ObjectPathList& streams);
205  void StreamsRemoved(const Tp::ObjectPathList& streams, const Tp::CallStateReason& reason);
206 };
207 
216 {
217  Q_OBJECT
218  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF")
219  Q_CLASSINFO("D-Bus Introspection", ""
220 " <interface name=\"org.freedesktop.Telepathy.Call1.Content.Interface.DTMF\">\n"
221 " <property access=\"read\" type=\"b\" name=\"CurrentlySendingTones\"/>\n"
222 " <property access=\"read\" type=\"s\" name=\"DeferredTones\"/>\n"
223 " <method name=\"StartTone\">\n"
224 " <arg direction=\"in\" type=\"y\" name=\"event\"/>\n"
225 " </method>\n"
226 " <method name=\"StopTone\"/>\n"
227 " <method name=\"MultipleTones\">\n"
228 " <arg direction=\"in\" type=\"s\" name=\"tones\"/>\n"
229 " </method>\n"
230 " <signal name=\"TonesDeferred\">\n"
231 " <arg type=\"s\" name=\"tones\"/>\n"
232 " </signal>\n"
233 " <signal name=\"SendingTones\">\n"
234 " <arg type=\"s\" name=\"tones\"/>\n"
235 " </signal>\n"
236 " <signal name=\"StoppedTones\">\n"
237 " <arg type=\"b\" name=\"cancelled\"/>\n"
238 " </signal>\n"
239 " </interface>\n"
240 "")
241  Q_PROPERTY(bool CurrentlySendingTones READ CurrentlySendingTones )
242  Q_PROPERTY(QString DeferredTones READ DeferredTones )
243 
244 public:
245  CallContentInterfaceDTMFAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
247 
248  typedef Tp::MethodInvocationContextPtr< > StartToneContextPtr;
249  typedef Tp::MethodInvocationContextPtr< > StopToneContextPtr;
250  typedef Tp::MethodInvocationContextPtr< > MultipleTonesContextPtr;
251 
252 public: // PROPERTIES
266  bool CurrentlySendingTones() const;
286  QString DeferredTones() const;
287 
288 public Q_SLOTS: // METHODS
314  void StartTone(uchar event, const QDBusMessage& dbusMessage);
333  void StopTone(const QDBusMessage& dbusMessage);
381  void MultipleTones(const QString& tones, const QDBusMessage& dbusMessage);
382 
383 Q_SIGNALS: // SIGNALS
396  void TonesDeferred(const QString& tones);
409  void SendingTones(const QString& tones);
422  void StoppedTones(bool cancelled);
423 };
424 
433 {
434  Q_OBJECT
435  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Call1.Interface.Mute")
436  Q_CLASSINFO("D-Bus Introspection", ""
437 " <interface name=\"org.freedesktop.Telepathy.Call1.Interface.Mute\">\n"
438 " <property access=\"read\" type=\"u\" name=\"LocalMuteState\"/>\n"
439 " <method name=\"RequestMuted\">\n"
440 " <arg direction=\"in\" type=\"b\" name=\"muted\"/>\n"
441 " </method>\n"
442 " <signal name=\"MuteStateChanged\">\n"
443 " <arg type=\"u\" name=\"muteState\"/>\n"
444 " </signal>\n"
445 " </interface>\n"
446 "")
447  Q_PROPERTY(uint LocalMuteState READ LocalMuteState )
448 
449 public:
450  CallInterfaceMuteAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
451  virtual ~CallInterfaceMuteAdaptor();
452 
453  typedef Tp::MethodInvocationContextPtr< > RequestMutedContextPtr;
454 
455 public: // PROPERTIES
469  uint LocalMuteState() const;
470 
471 public Q_SLOTS: // METHODS
490  void RequestMuted(bool muted, const QDBusMessage& dbusMessage);
491 
492 Q_SIGNALS: // SIGNALS
505  void MuteStateChanged(uint muteState);
506 };
507 
508 }
509 }
Definition: svc-call.h:27
Definition: build/TelepathyQt/_gen/types.h:320
LocalMuteState
Definition: build/TelepathyQt/_gen/constants.h:4626
Definition: build/TelepathyQt/_gen/types.h:81
Base class for all the low-level service-side adaptors.
Definition: abstract-adaptor.h:40
Definition: svc-call.h:432


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00461.html0000644000175100017520000007241312530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Client::DBus::PropertiesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/DBus>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QDBusVariant > Get (const QString &interfaceName, const QString &propertyName, int timeout=-1)
 
QDBusPendingReply Set (const QString &interfaceName, const QString &propertyName, const QDBusVariant &value, int timeout=-1)
 
QDBusPendingReply< QVariantMap > GetAll (const QString &interfaceName, int timeout=-1)
 

Public Member Functions

 PropertiesInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 PropertiesInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 PropertiesInterface (Tp::DBusProxy *proxy)
 
 PropertiesInterface (const Tp::AbstractInterface &mainInterface)
 
 PropertiesInterface (const Tp::AbstractInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.DBus.Properties".

Constructor & Destructor Documentation

Tp::Client::DBus::PropertiesInterface::PropertiesInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a PropertiesInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::PropertiesInterface::PropertiesInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a PropertiesInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::PropertiesInterface::PropertiesInterface ( Tp::DBusProxy proxy)

Creates a PropertiesInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::DBus::PropertiesInterface::PropertiesInterface ( const Tp::AbstractInterface mainInterface)
explicit

Creates a PropertiesInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::DBus::PropertiesInterface::PropertiesInterface ( const Tp::AbstractInterface mainInterface,
QObject *  parent 
)

Creates a PropertiesInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::DBus::PropertiesInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.DBus.Properties", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::DBus::PropertiesInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QDBusVariant> Tp::Client::DBus::PropertiesInterface::Get ( const QString &  interfaceName,
const QString &  propertyName,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Get on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::DBus::PropertiesInterface::Set ( const QString &  interfaceName,
const QString &  propertyName,
const QDBusVariant &  value,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Set on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QVariantMap> Tp::Client::DBus::PropertiesInterface::GetAll ( const QString &  interfaceName,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetAll on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::DBus::PropertiesInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00206.html0000644000175100017520000006713112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceMediaSignallingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::MediaSessionHandlerInfoList
GetSessionHandlers (int timeout=-1)
 

Signals

void NewSessionHandler (const QDBusObjectPath &sessionHandler, const QString &sessionType)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceMediaSignallingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceMediaSignallingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceMediaSignallingInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceMediaSignallingInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceMediaSignallingInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceMediaSignallingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceMediaSignallingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceMediaSignallingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceMediaSignallingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceMediaSignallingInterface::ChannelInterfaceMediaSignallingInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceMediaSignallingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceMediaSignallingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceMediaSignallingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::MediaSessionHandlerInfoList> Tp::Client::ChannelInterfaceMediaSignallingInterface::GetSessionHandlers ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetSessionHandlers on the remote object.

Returns all currently active session handlers on this channel as a list of (session_handler_path, type).

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceMediaSignallingInterface::NewSessionHandler ( const QDBusObjectPath &  sessionHandler,
const QString &  sessionType 
)
signal

Represents the signal NewSessionHandler on the remote object.

Signal that a session handler object has been created. The client should create a session object and create streams for the streams within.

Parameters
sessionHandler
Object path of the new Media.SessionHandler object
sessionType
String indicating type of session, eg &quot;rtp&quot;
void Tp::Client::ChannelInterfaceMediaSignallingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01177.html0000644000175100017520000000522412530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Metadata Member List

This is the complete list of members for Tp::Metadata, including all inherited members.

Metadata()Tp::Metadatainline
Metadata(const QMap< QString, QStringList > &a)Tp::Metadatainline
operator=(const QMap< QString, QStringList > &a)Tp::Metadatainline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00561_source.html0000644000175100017520000002345712530426257022527 0ustar00kaffeinekaffeine00000000000000 account-set.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account-set.h
1 
23 #ifndef _TelepathyQt_account_set_h_HEADER_GUARD_
24 #define _TelepathyQt_account_set_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Filter>
31 #include <TelepathyQt/Object>
32 #include <TelepathyQt/Types>
33 
34 #include <QList>
35 #include <QString>
36 #include <QVariantMap>
37 
38 namespace Tp
39 {
40 
41 class TP_QT_EXPORT AccountSet : public Object
42 {
43  Q_OBJECT
44  Q_DISABLE_COPY(AccountSet)
45  Q_PROPERTY(AccountManagerPtr accountManager READ accountManager)
46  Q_PROPERTY(AccountFilterConstPtr filter READ filter)
47  Q_PROPERTY(QList<AccountPtr> accounts READ accounts)
48 
49 public:
50  AccountSet(const AccountManagerPtr &accountManager,
51  const AccountFilterConstPtr &filter);
52  AccountSet(const AccountManagerPtr &accountManager,
53  const QVariantMap &filter);
54  virtual ~AccountSet();
55 
56  AccountManagerPtr accountManager() const;
57 
58  AccountFilterConstPtr filter() const;
59 
60  QList<AccountPtr> accounts() const;
61 
62 Q_SIGNALS:
63  void accountAdded(const Tp::AccountPtr &account);
64  void accountRemoved(const Tp::AccountPtr &account);
65 
66 private Q_SLOTS:
67  TP_QT_NO_EXPORT void onNewAccount(const Tp::AccountPtr &account);
68  TP_QT_NO_EXPORT void onAccountRemoved(const Tp::AccountPtr &account);
69  TP_QT_NO_EXPORT void onAccountChanged(const Tp::AccountPtr &account);
70 
71 private:
72  struct Private;
73  friend struct Private;
74  Private *mPriv;
75 };
76 
77 } // Tp
78 
79 #endif
The Object class provides an object with property notification.
Definition: object.h:39
The AccountSet class represents a set of Telepathy accounts filtered by a given criteria.
Definition: account-set.h:41


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00834_source.html0000644000175100017520000012402712530426257022525 0ustar00kaffeinekaffeine00000000000000 stream-tube-server.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
stream-tube-server.h
1 
23 #ifndef _TelepathyQt_stream_tube_server_h_HEADER_GUARD_
24 #define _TelepathyQt_stream_tube_server_h_HEADER_GUARD_
25 
26 #include <QPair>
27 #include <QSharedDataPointer>
28 
29 #include <TelepathyQt/AccountFactory>
30 #include <TelepathyQt/ChannelFactory>
31 #include <TelepathyQt/ConnectionFactory>
32 #include <TelepathyQt/ContactFactory>
33 #include <TelepathyQt/RefCounted>
34 #include <TelepathyQt/Types>
35 
36 class QHostAddress;
37 class QTcpServer;
38 
39 namespace Tp
40 {
41 
42 class TP_QT_EXPORT StreamTubeServer : public QObject, public RefCounted
43 {
44  Q_OBJECT
45  Q_DISABLE_COPY(StreamTubeServer)
46 
47  class TubeWrapper;
48 
49 public:
50 
52  {
53  public:
54  virtual QVariantMap
55  nextParameters(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &tube,
56  const ChannelRequestHints &hints) = 0;
57 
58  protected:
59  virtual ~ParametersGenerator() {}
60  };
61 
62  class RemoteContact : public QPair<AccountPtr, ContactPtr>
63  {
64  public:
65  RemoteContact();
66  RemoteContact(const AccountPtr &account, const ContactPtr &contact);
67  RemoteContact(const RemoteContact &other);
68  ~RemoteContact();
69 
70  bool isValid() const { return mPriv.constData() != 0; }
71 
72  RemoteContact &operator=(const RemoteContact &other);
73 
74  const AccountPtr &account() const
75  {
76  return first;
77  }
78 
79  const ContactPtr &contact() const
80  {
81  return second;
82  }
83 
84  private:
85  struct Private;
86  friend struct Private;
87  QSharedDataPointer<Private> mPriv;
88  };
89 
90  class Tube : public QPair<AccountPtr, OutgoingStreamTubeChannelPtr>
91  {
92  public:
93  Tube();
94  Tube(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &channel);
95  Tube(const Tube &other);
96  ~Tube();
97 
98  bool isValid() const { return mPriv.constData() != 0; }
99 
100  Tube &operator=(const Tube &other);
101 
102  const AccountPtr &account() const
103  {
104  return first;
105  }
106 
107  const OutgoingStreamTubeChannelPtr &channel() const
108  {
109  return second;
110  }
111 
112  private:
113  struct Private;
114  friend struct Private;
115  QSharedDataPointer<Private> mPriv;
116  };
117 
118  static StreamTubeServerPtr create(
119  const QStringList &p2pServices,
120  const QStringList &roomServices = QStringList(),
121  const QString &clientName = QString(),
122  bool monitorConnections = false,
123  const AccountFactoryConstPtr &accountFactory =
124  AccountFactory::create(QDBusConnection::sessionBus()),
125  const ConnectionFactoryConstPtr &connectionFactory =
126  ConnectionFactory::create(QDBusConnection::sessionBus()),
127  const ChannelFactoryConstPtr &channelFactory =
128  ChannelFactory::create(QDBusConnection::sessionBus()),
129  const ContactFactoryConstPtr &contactFactory =
131 
132  static StreamTubeServerPtr create(
133  const QDBusConnection &bus,
134  const AccountFactoryConstPtr &accountFactory,
135  const ConnectionFactoryConstPtr &connectionFactory,
136  const ChannelFactoryConstPtr &channelFactory,
137  const ContactFactoryConstPtr &contactFactory,
138  const QStringList &p2pServices,
139  const QStringList &roomServices = QStringList(),
140  const QString &clientName = QString(),
141  bool monitorConnections = false);
142 
143  static StreamTubeServerPtr create(
144  const AccountManagerPtr &accountManager,
145  const QStringList &p2pServices,
146  const QStringList &roomServices = QStringList(),
147  const QString &clientName = QString(),
148  bool monitorConnections = false);
149 
150  static StreamTubeServerPtr create(
151  const ClientRegistrarPtr &registrar,
152  const QStringList &p2pServices,
153  const QStringList &roomServices = QStringList(),
154  const QString &clientName = QString(),
155  bool monitorConnections = false);
156 
157  virtual ~StreamTubeServer();
158 
159  ClientRegistrarPtr registrar() const;
160  QString clientName() const;
161  bool isRegistered() const;
162  bool monitorsConnections() const;
163 
164  QPair<QHostAddress, quint16> exportedTcpSocketAddress() const;
165  QVariantMap exportedParameters() const;
166 
167  void exportTcpSocket(
168  const QHostAddress &address,
169  quint16 port,
170  const QVariantMap &parameters = QVariantMap());
171  void exportTcpSocket(
172  const QTcpServer *server,
173  const QVariantMap &parameters = QVariantMap());
174 
175  void exportTcpSocket(
176  const QHostAddress &address,
177  quint16 port,
178  ParametersGenerator *generator);
179  void exportTcpSocket(
180  const QTcpServer *server,
181  ParametersGenerator *generator);
182 
183  QList<Tube> tubes() const;
184 
185  QHash<QPair<QHostAddress, quint16>, RemoteContact> tcpConnections() const;
186 
187 Q_SIGNALS:
188 
189  void tubeRequested(
190  const Tp::AccountPtr &account,
191  const Tp::OutgoingStreamTubeChannelPtr &tube,
192  const QDateTime &userActionTime,
193  const Tp::ChannelRequestHints &hints);
194  void tubeClosed(
195  const Tp::AccountPtr &account,
196  const Tp::OutgoingStreamTubeChannelPtr &tube,
197  const QString &error,
198  const QString &message);
199 
200  void newTcpConnection(
201  const QHostAddress &sourceAddress,
202  quint16 sourcePort,
203  const Tp::AccountPtr &account,
204  const Tp::ContactPtr &contact,
205  const Tp::OutgoingStreamTubeChannelPtr &tube);
206  void tcpConnectionClosed(
207  const QHostAddress &sourceAddress,
208  quint16 sourcePort,
209  const Tp::AccountPtr &account,
210  const Tp::ContactPtr &contact,
211  const QString &error,
212  const QString &message,
213  const Tp::OutgoingStreamTubeChannelPtr &tube);
214 
215 private Q_SLOTS:
216  TP_QT_NO_EXPORT void onInvokedForTube(
217  const Tp::AccountPtr &account,
218  const Tp::StreamTubeChannelPtr &tube,
219  const QDateTime &userActionTime,
220  const Tp::ChannelRequestHints &requestHints);
221 
222  TP_QT_NO_EXPORT void onOfferFinished(
223  TubeWrapper *wrapper,
225  TP_QT_NO_EXPORT void onTubeInvalidated(
226  Tp::DBusProxy *proxy,
227  const QString &error,
228  const QString &message);
229 
230  TP_QT_NO_EXPORT void onNewConnection(
231  TubeWrapper *wrapper,
232  uint conn);
233  TP_QT_NO_EXPORT void onConnectionClosed(
234  TubeWrapper *wrapper,
235  uint conn,
236  const QString &error,
237  const QString &message);
238 
239 private:
240  TP_QT_NO_EXPORT StreamTubeServer(
241  const ClientRegistrarPtr &registrar,
242  const QStringList &p2pServices,
243  const QStringList &roomServices,
244  const QString &clientName,
245  bool monitorConnections);
246 
247  struct Private;
248  Private *mPriv;
249 };
250 
251 } // Tp
252 
253 #endif
static ConnectionFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: connection-factory.cpp:57
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The StreamTubeServer::RemoteContact class represents a contact from which a socket connection to our ...
Definition: stream-tube-server.h:62
static ContactFactoryPtr create(const Features &features=Features())
Definition: contact-factory.cpp:48
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
The StreamTubeServer class is a Handler implementation for outgoing Stream Tube channels, allowing an application to easily export a TCP network server over Telepathy Tubes without worrying about the channel dispatching details.
Definition: stream-tube-server.h:42
const OutgoingStreamTubeChannelPtr & channel() const
Definition: stream-tube-server.h:107
const AccountPtr & account() const
Definition: stream-tube-server.h:74
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
bool isValid() const
Definition: stream-tube-server.h:98
bool isValid() const
Definition: stream-tube-server.h:70
const AccountPtr & account() const
Definition: stream-tube-server.h:102
The StreamTubeServer::Tube class represents a tube being handled by the server.
Definition: stream-tube-server.h:90
static AccountFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: account-factory.cpp:58
static ChannelFactoryPtr create(const QDBusConnection &bus)
Definition: channel-factory.cpp:86
The StreamTubeServer::ParametersGenerator abstract interface allows sending a different set of parame...
Definition: stream-tube-server.h:51
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
const ContactPtr & contact() const
Definition: stream-tube-server.h:79
virtual ~ParametersGenerator()
Definition: stream-tube-server.h:59


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00520.html0000644000175100017520000000765112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::SocketNetmaskIPv6 Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketNetmaskIPv6 Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString address
 
uchar prefixLength
 

Detailed Description

Structure type generated from the specification.

An IPv6 network or subnet.

Member Data Documentation

QString Tp::SocketNetmaskIPv6::address

An IPv6 address literal as specified by RFC2373 section 2.2, e.g. "2001:DB8::8:800:200C:4171".

uchar Tp::SocketNetmaskIPv6::prefixLength

The number of leading bits of the address that must match, for this netmask to be considered to match an address.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00275.html0000644000175100017520000016422112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceAvatarsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QStringList,
ushort, ushort, ushort, ushort,
uint > 
GetAvatarRequirements (int timeout=-1)
 
QDBusPendingReply< QStringList > GetAvatarTokens (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply
< Tp::AvatarTokenMap
GetKnownAvatarTokens (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply< QByteArray,
QString > 
RequestAvatar (uint contact, int timeout=-1)
 
QDBusPendingReply RequestAvatars (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply< QString > SetAvatar (const QByteArray &avatar, const QString &MIMEType, int timeout=-1)
 
QDBusPendingReply ClearAvatar (int timeout=-1)
 

Signals

void AvatarUpdated (uint contact, const QString &newAvatarToken)
 
void AvatarRetrieved (uint contact, const QString &token, const QByteArray &avatar, const QString &type)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceAvatarsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAvatarsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceAvatarsInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceAvatarsInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceAvatarsInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySupportedAvatarMIMETypes () const
 
Tp::PendingVariantrequestPropertyMinimumAvatarHeight () const
 
Tp::PendingVariantrequestPropertyMinimumAvatarWidth () const
 
Tp::PendingVariantrequestPropertyRecommendedAvatarHeight () const
 
Tp::PendingVariantrequestPropertyRecommendedAvatarWidth () const
 
Tp::PendingVariantrequestPropertyMaximumAvatarHeight () const
 
Tp::PendingVariantrequestPropertyMaximumAvatarWidth () const
 
Tp::PendingVariantrequestPropertyMaximumAvatarBytes () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Avatars".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAvatarsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceAvatarsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceAvatarsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceAvatarsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceAvatarsInterface::ConnectionInterfaceAvatarsInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceAvatarsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceAvatarsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Avatars", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertySupportedAvatarMIMETypes ( ) const
inline

Asynchronous getter for the remote object property SupportedAvatarMIMETypes of type QStringList.

An array of supported MIME types (e.g. "image/jpeg"). Clients MAY assume that the first type in this array is preferred. This property cannot change after the Connection goes to the Connected state.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyMinimumAvatarHeight ( ) const
inline

Asynchronous getter for the remote object property MinimumAvatarHeight of type uint.

The minimum height in pixels of an avatar on this protocol, which MAY be 0. This property cannot change after the Connection goes to the Connected state.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyMinimumAvatarWidth ( ) const
inline

Asynchronous getter for the remote object property MinimumAvatarWidth of type uint.

The minimum width in pixels of an avatar on this protocol, which MAY be 0. This property cannot change after the Connection goes to the Connected state.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyRecommendedAvatarHeight ( ) const
inline

Asynchronous getter for the remote object property RecommendedAvatarHeight of type uint.

The recommended height in pixels of an avatar on this protocol, or 0 if there is no preferred height. This property cannot change after the Connection goes to the Connected state. In XMPP a recommended width is given by the protocol specification; in proprietary protocols, using the same avatar size as the proprietary client is likely to lead to the best display to other users.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyRecommendedAvatarWidth ( ) const
inline

Asynchronous getter for the remote object property RecommendedAvatarWidth of type uint.

The recommended width in pixels of an avatar on this protocol, or 0 if there is no preferred width. This property cannot change after the Connection goes to the Connected state. The rationale is the same as for RecommendedAvatarHeight.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyMaximumAvatarHeight ( ) const
inline

Asynchronous getter for the remote object property MaximumAvatarHeight of type uint.

The maximum height in pixels of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyMaximumAvatarWidth ( ) const
inline

Asynchronous getter for the remote object property MaximumAvatarWidth of type uint.

The maximum width in pixels of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceAvatarsInterface::requestPropertyMaximumAvatarBytes ( ) const
inline

Asynchronous getter for the remote object property MaximumAvatarBytes of type uint.

The maximum size in bytes of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceAvatarsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QStringList, ushort, ushort, ushort, ushort, uint> Tp::Client::ConnectionInterfaceAvatarsInterface::GetAvatarRequirements ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetAvatarRequirements on the remote object.

Get the required format of avatars on this connection.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of supported MIME types (eg image/jpeg)
The minimum image width in pixels
The minimum image height in pixels
The maximum image width in pixels, or 0 if there is no limit
The maximum image height in pixels, or 0 if there is no limit
The maximum image size in bytes, or 0 if there is no limit
QDBusPendingReply<QStringList> Tp::Client::ConnectionInterfaceAvatarsInterface::GetAvatarTokens ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetAvatarTokens on the remote object.

Get the unique tokens for all of the given contacts' avatars. Using this method in new Telepathy clients is deprecated; use GetKnownAvatarTokens instead.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of handles representing contacts
timeoutThe timeout in milliseconds.
Returns
An array of avatar tokens or empty strings (if no avatar is set) in 
the same order as the given array of contact handles
QDBusPendingReply<Tp::AvatarTokenMap> Tp::Client::ConnectionInterfaceAvatarsInterface::GetKnownAvatarTokens ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetKnownAvatarTokens on the remote object.

Get the unique tokens for the given contacts' avatars. These tokens can be persisted across connections, and should be used by the client to check whether the avatars have been updated. For handles other than the self handle, only tokens that are already known are returned; an empty token means the given contact has no avatar. However, a CM must always have the tokens for the self handle if one is set (even if it is set to no avatar). On protocols where the avatar does not persist between connections, a CM should omit the self handle from the returned map until an avatar is explicitly set or cleared.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of handles representing contacts
timeoutThe timeout in milliseconds.
Returns
A dictionary of handles mapped to avatar tokens, containing only 
the known avatar tokens.
QDBusPendingReply<QByteArray, QString> Tp::Client::ConnectionInterfaceAvatarsInterface::RequestAvatar ( uint  contact,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestAvatar on the remote object.

Request the avatar for a given contact. Using this method in new Telepathy clients is deprecated; use RequestAvatars instead.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contact
An integer handle for the contact to request the avatar for
timeoutThe timeout in milliseconds.
Returns
An array of bytes containing the image data
A string containing the image MIME type (eg image/jpeg), or empty 
if unknown
QDBusPendingReply Tp::Client::ConnectionInterfaceAvatarsInterface::RequestAvatars ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestAvatars on the remote object.

Request avatars for a number of contacts. The AvatarRetrieved signal is emitted for each avatar retrieved. If the handles are valid but retrieving an avatar fails (for any reason, including the contact not having an avatar) the AvatarRetrieved signal is not emitted for that contact.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
The contacts to retrieve avatars for
timeoutThe timeout in milliseconds.
QDBusPendingReply<QString> Tp::Client::ConnectionInterfaceAvatarsInterface::SetAvatar ( const QByteArray &  avatar,
const QString &  MIMEType,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetAvatar on the remote object.

Set a new avatar image for this connection. The avatar image must respect the requirements obtained by GetAvatarRequirements.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
avatar
An array of bytes representing the avatar image data
MIMEType
A string representing the image MIME type
timeoutThe timeout in milliseconds.
Returns
The string token of the new avatar
QDBusPendingReply Tp::Client::ConnectionInterfaceAvatarsInterface::ClearAvatar ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ClearAvatar on the remote object.

Remove the avatar image for this connection.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfaceAvatarsInterface::AvatarUpdated ( uint  contact,
const QString &  newAvatarToken 
)
signal

Represents the signal AvatarUpdated on the remote object.

Emitted when the avatar for a contact has been updated, or first discovered on this connection. If the token differs from the token associated with the client's cached avatar for this contact, the new avatar should be requested with RequestAvatars.

Parameters
contact
An integer handle for the contact whose avatar has changed
newAvatarToken
Unique token for their new avatar
void Tp::Client::ConnectionInterfaceAvatarsInterface::AvatarRetrieved ( uint  contact,
const QString &  token,
const QByteArray &  avatar,
const QString &  type 
)
signal

Represents the signal AvatarRetrieved on the remote object.

Emitted when the avatar for a contact has been retrieved.

Parameters
contact
The contact whose avatar has been retrieved
token
The token corresponding to the avatar
avatar
An array of bytes containing the image data
type
A string containing the image MIME type (eg image/jpeg), or empty 
if unknown
void Tp::Client::ConnectionInterfaceAvatarsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01236.html0000644000175100017520000002402212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterface Member List

This is the complete list of members for Tp::Client::CallContentMediaDescriptionInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Accept(const QVariantMap &localMediaDescription, int timeout=-1)Tp::Client::CallContentMediaDescriptionInterfaceinlineslot
CallContentMediaDescriptionInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterface
CallContentMediaDescriptionInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterface
CallContentMediaDescriptionInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentMediaDescriptionInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentMediaDescriptionInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Reject(const Tp::CallStateReason &reason, int timeout=-1)Tp::Client::CallContentMediaDescriptionInterfaceinlineslot
requestAllProperties() const Tp::Client::CallContentMediaDescriptionInterfaceinline
requestPropertyCodecs() const Tp::Client::CallContentMediaDescriptionInterfaceinline
requestPropertyFurtherNegotiationRequired() const Tp::Client::CallContentMediaDescriptionInterfaceinline
requestPropertyHasRemoteInformation() const Tp::Client::CallContentMediaDescriptionInterfaceinline
requestPropertyInterfaces() const Tp::Client::CallContentMediaDescriptionInterfaceinline
requestPropertyRemoteContact() const Tp::Client::CallContentMediaDescriptionInterfaceinline
requestPropertySSRCs() const Tp::Client::CallContentMediaDescriptionInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentMediaDescriptionInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00830_source.html0000644000175100017520000004136012530426257022517 0ustar00kaffeinekaffeine00000000000000 stream-tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
stream-tube-channel.h
1 
22 #ifndef _TelepathyQt_stream_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_stream_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/TubeChannel>
30 
31 class QHostAddress;
32 
33 namespace Tp
34 {
35 
36 class TP_QT_EXPORT StreamTubeChannel : public TubeChannel
37 {
38  Q_OBJECT
39  Q_DISABLE_COPY(StreamTubeChannel)
40 
41 public:
42  static const Feature FeatureCore;
44 
45  static StreamTubeChannelPtr create(const ConnectionPtr &connection,
46  const QString &objectPath, const QVariantMap &immutableProperties);
47 
48  virtual ~StreamTubeChannel();
49 
50  QString service() const;
51 
52  bool supportsIPv4SocketsOnLocalhost() const;
53  bool supportsIPv4SocketsWithSpecifiedAddress() const;
54 
55  bool supportsIPv6SocketsOnLocalhost() const;
56  bool supportsIPv6SocketsWithSpecifiedAddress() const;
57 
58  bool supportsUnixSocketsOnLocalhost() const;
59  bool supportsUnixSocketsWithCredentials() const;
60 
61  bool supportsAbstractUnixSocketsOnLocalhost() const;
62  bool supportsAbstractUnixSocketsWithCredentials() const;
63 
64  QSet<uint> connections() const;
65 
66  SocketAddressType addressType() const;
67 
68  QPair< QHostAddress, quint16 > ipAddress() const;
69  QString localAddress() const;
70 
71 Q_SIGNALS:
72  void newConnection(uint connectionId);
73  void connectionClosed(uint connectionId, const QString &errorName,
74  const QString &errorMessage);
75 
76 protected:
77  StreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath,
78  const QVariantMap &immutableProperties,
79  const Feature &coreFeature = StreamTubeChannel::FeatureCore);
80 
81  void addConnection(uint connection);
82  void removeConnection(uint connection, const QString &error, const QString &message);
83  void setAddressType(SocketAddressType type);
84  SocketAccessControl accessControl() const;
85  void setAccessControl(SocketAccessControl accessControl);
86  void setIpAddress(const QPair<QHostAddress, quint16> &address);
87  void setLocalAddress(const QString &address);
88  bool isDroppingConnections() const;
89 
90 private Q_SLOTS:
91  TP_QT_NO_EXPORT void gotStreamTubeProperties(Tp::PendingOperation *op);
92  TP_QT_NO_EXPORT void onConnectionClosed(uint, const QString &, const QString &);
93  TP_QT_NO_EXPORT void dropConnections();
94 
95 private:
96  struct Private;
97  friend struct Private;
98  Private *mPriv;
99 };
100 
101 }
102 
103 #endif
The TubeChannel class is a base class for all tube types.
Definition: tube-channel.h:34
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
static const Feature FeatureCore
Definition: stream-tube-channel.h:42
static const Feature FeatureConnectionMonitoring
Definition: stream-tube-channel.h:43
SocketAddressType
Definition: build/TelepathyQt/_gen/constants.h:3775
The StreamTubeChannel class represents a Telepathy channel of type StreamTube.
Definition: stream-tube-channel.h:36
SocketAccessControl
Definition: build/TelepathyQt/_gen/constants.h:3822


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00334.html0000644000175100017520000001121512530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::ContactSubscriptions Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSubscriptions Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint subscribe
 
uint publish
 
QString publishRequest
 

Detailed Description

Structure type generated from the specification.

A single contact's subscribe, publish and publish-request attributes.

Member Data Documentation

uint Tp::ContactSubscriptions::subscribe

The new value of the contact's "subscribe" attribute.

uint Tp::ContactSubscriptions::publish

The new value of the contact's "publish" attribute.

QString Tp::ContactSubscriptions::publishRequest

The new value of the contact's "publish-request" attribute, or the empty string if that attribute would be omitted.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00089.html0000644000175100017520000000742212530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Avatar Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Types>

Public Attributes

QByteArray avatarData
 
QString MIMEType
 

Detailed Description

Structure type generated from the specification.

A struct containing avatar data marked with its MIME type.

May be set to an empty byte-array and an empty string, indicating no avatar.

Member Data Documentation

QByteArray Tp::Avatar::avatarData
QString Tp::Avatar::MIMEType


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00554_source.html0000644000175100017520000002615112530426257022523 0ustar00kaffeinekaffeine00000000000000 account-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account-factory.h
1 
23 #ifndef _TelepathyQt_account_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_account_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/SharedPtr>
32 #include <TelepathyQt/Types>
33 
34 #include <TelepathyQt/Account>
35 #include <TelepathyQt/Feature>
36 #include <TelepathyQt/FixedFeatureFactory>
37 
38 class QDBusConnection;
39 
40 namespace Tp
41 {
42 
43 class PendingReady;
44 
45 class TP_QT_EXPORT AccountFactory : public FixedFeatureFactory
46 {
47  Q_OBJECT
48  Q_DISABLE_COPY(AccountFactory)
49 
50 public:
51  static AccountFactoryPtr create(const QDBusConnection &bus,
52  const Features &features = Features());
53 
54  virtual ~AccountFactory();
55 
56  PendingReady *proxy(const QString &busName, const QString &objectPath,
57  const ConnectionFactoryConstPtr &connFactory,
58  const ChannelFactoryConstPtr &chanFactory,
59  const ContactFactoryConstPtr &contactFactory) const;
60 
61 protected:
62  AccountFactory(const QDBusConnection &bus, const Features &features);
63 
64  virtual AccountPtr construct(const QString &busName, const QString &objectPath,
65  const ConnectionFactoryConstPtr &connFactory,
66  const ChannelFactoryConstPtr &chanFactory,
67  const ContactFactoryConstPtr &contactFactory) const;
68  virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const;
69  // Nothing we'd like to prepare()
70  // Fixed features
71 
72 private:
73  struct Private;
74  Private *mPriv; // Currently unused, just for future-proofing
75 };
76 
77 } // Tp
78 
79 #endif
The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set o...
Definition: fixed-feature-factory.h:43
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
The AccountFactory class is responsible for constructing Account objects according to application-def...
Definition: account-factory.h:45
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01364.html0000644000175100017520000001151612530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionManagerAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionManagerAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetParameters(const QString &protocol, const QDBusMessage &dbusMessage)Tp::Service::ConnectionManagerAdaptorslot
Interfaces() const Tp::Service::ConnectionManagerAdaptor
ListProtocols(const QDBusMessage &dbusMessage)Tp::Service::ConnectionManagerAdaptorslot
NewConnection(const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol)Tp::Service::ConnectionManagerAdaptorsignal
Protocols() const Tp::Service::ConnectionManagerAdaptor
RequestConnection(const QString &protocol, const QVariantMap &parameters, const QDBusMessage &dbusMessage, QDBusObjectPath &objectPath)Tp::Service::ConnectionManagerAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00550_source.html0000644000175100017520000003127512530426257022522 0ustar00kaffeinekaffeine00000000000000 abstract-interface.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
abstract-interface.h
1 
23 #ifndef _TelepathyQt_abstract_interface_h_HEADER_GUARD_
24 #define _TelepathyQt_abstract_interface_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QDBusAbstractInterface>
33 
34 namespace Tp
35 {
36 
37 class DBusProxy;
38 class PendingVariant;
39 class PendingOperation;
40 class PendingVariantMap;
41 
42 class TP_QT_EXPORT AbstractInterface : public QDBusAbstractInterface
43 {
44  Q_OBJECT
45  Q_DISABLE_COPY(AbstractInterface)
46 
47 public:
48  virtual ~AbstractInterface();
49 
50  bool isValid() const;
51  QString invalidationReason() const;
52  QString invalidationMessage() const;
53 
54  void setMonitorProperties(bool monitorProperties);
55  bool isMonitoringProperties() const;
56 
57 Q_SIGNALS:
58  void propertiesChanged(const QVariantMap &changedProperties,
59  const QStringList &invalidatedProperties);
60 
61 protected Q_SLOTS:
62  virtual void invalidate(Tp::DBusProxy *proxy,
63  const QString &error, const QString &message);
64 
65 protected:
66  AbstractInterface(DBusProxy *proxy, const QLatin1String &interface);
67  AbstractInterface(const QString &busName, const QString &path,
68  const QLatin1String &interface, const QDBusConnection &connection,
69  QObject *parent);
70 
71  PendingVariant *internalRequestProperty(const QString &name) const;
72  PendingOperation *internalSetProperty(const QString &name, const QVariant &newValue);
73  PendingVariantMap *internalRequestAllProperties() const;
74 
75 private Q_SLOTS:
76  TP_QT_NO_EXPORT void onPropertiesChanged(const QString &interface,
77  const QVariantMap &changedProperties,
78  const QStringList &invalidatedProperties);
79 
80 private:
81  struct Private;
82  friend struct Private;
83  Private *mPriv;
84 };
85 
86 } // Tp
87 
88 #endif
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00148.html0000644000175100017520000011110312530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentInterfaceVideoControlInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceVideoControlInterface Class Reference

#include <TelepathyQt/CallContent>

Inherits Tp::AbstractInterface.

Signals

void KeyFrameRequested ()
 
void VideoResolutionChanged (const Tp::VideoResolution &newResolution)
 
void BitrateChanged (uint newBitrate)
 
void FramerateChanged (uint newFramerate)
 
void MTUChanged (uint newMTU)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallContentInterfaceVideoControlInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceVideoControlInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentInterfaceVideoControlInterface (Tp::DBusProxy *proxy)
 
 CallContentInterfaceVideoControlInterface (const Tp::Client::CallContentInterface &mainInterface)
 
 CallContentInterfaceVideoControlInterface (const Tp::Client::CallContentInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyVideoResolution () const
 
Tp::PendingVariantrequestPropertyBitrate () const
 
Tp::PendingVariantrequestPropertyFramerate () const
 
Tp::PendingVariantrequestPropertyMTU () const
 
Tp::PendingVariantrequestPropertyManualKeyFrames () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl".

Constructor & Destructor Documentation

Tp::Client::CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceVideoControlInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentInterfaceVideoControlInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface ( Tp::DBusProxy proxy)

Creates a CallContentInterfaceVideoControlInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface ( const Tp::Client::CallContentInterface mainInterface)
explicit

Creates a CallContentInterfaceVideoControlInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentInterfaceVideoControlInterface::CallContentInterfaceVideoControlInterface ( const Tp::Client::CallContentInterface mainInterface,
QObject *  parent 
)

Creates a CallContentInterfaceVideoControlInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentInterfaceVideoControlInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentInterfaceVideoControlInterface::requestPropertyVideoResolution ( ) const
inline

Asynchronous getter for the remote object property VideoResolution of type Tp::VideoResolution.

The resolution at which the streaming engine should be sending. Change notification is via the VideoResolutionChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceVideoControlInterface::requestPropertyBitrate ( ) const
inline

Asynchronous getter for the remote object property Bitrate of type uint.

The bitrate the streaming engine should be sending at. Change notification is via the BitrateChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceVideoControlInterface::requestPropertyFramerate ( ) const
inline

Asynchronous getter for the remote object property Framerate of type uint.

The framerate the streaming engine should be sending at. Change notification is via the FramerateChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceVideoControlInterface::requestPropertyMTU ( ) const
inline

Asynchronous getter for the remote object property MTU of type uint.

The Maximum Transmission Unit Change notification is via the MTUChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentInterfaceVideoControlInterface::requestPropertyManualKeyFrames ( ) const
inline

Asynchronous getter for the remote object property ManualKeyFrames of type bool.

Only send key frames when manually requested

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentInterfaceVideoControlInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::CallContentInterfaceVideoControlInterface::KeyFrameRequested ( )
signal

Represents the signal KeyFrameRequested on the remote object.

Request that the video encoder produce a new key frame as soon as possible.

void Tp::Client::CallContentInterfaceVideoControlInterface::VideoResolutionChanged ( const Tp::VideoResolution newResolution)
signal

Represents the signal VideoResolutionChanged on the remote object.

The desired video resolution has changed.

void Tp::Client::CallContentInterfaceVideoControlInterface::BitrateChanged ( uint  newBitrate)
signal

Represents the signal BitrateChanged on the remote object.

The desired bitrate has changed

void Tp::Client::CallContentInterfaceVideoControlInterface::FramerateChanged ( uint  newFramerate)
signal

Represents the signal FramerateChanged on the remote object.

The desired framerate has changed

void Tp::Client::CallContentInterfaceVideoControlInterface::MTUChanged ( uint  newMTU)
signal

Represents the signal MTUChanged on the remote object.

The Maximum Transmission Unit has changed

void Tp::Client::CallContentInterfaceVideoControlInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01109.html0000644000175100017520000001743612530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleStreamTubeHandler Member List

This is the complete list of members for Tp::SimpleStreamTubeHandler, including all inherited members.

AbstractClient()Tp::AbstractClient
AbstractClientHandler(const ChannelClassSpecList &channelFilter, const Capabilities &capabilities=Capabilities(), bool wantsRequestNotification=false)Tp::AbstractClientHandlerprotected
addRequest(const ChannelRequestPtr &request)Tp::AbstractClientHandlervirtual
bypassApproval() const Tp::SimpleStreamTubeHandlerinlinevirtual
create(const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval=false)Tp::SimpleStreamTubeHandlerstatic
handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const QList< ChannelRequestPtr > &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo)Tp::SimpleStreamTubeHandlervirtual
handlerCapabilities() const Tp::AbstractClientHandler
handlerFilter() const Tp::AbstractClientHandler
invokedForTube(const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints)Tp::SimpleStreamTubeHandlersignal
isRegistered() const Tp::AbstractClient
monitorsConnections() const Tp::SimpleStreamTubeHandlerinline
RefCounted()Tp::RefCountedinline
removeRequest(const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage)Tp::AbstractClientHandlervirtual
tubeInvalidated(const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QString &errorName, const QString &errorMessage)Tp::SimpleStreamTubeHandlersignal
wantsRequestNotification() const Tp::AbstractClientHandler
~AbstractClient()Tp::AbstractClientvirtual
~AbstractClientHandler()Tp::AbstractClientHandlervirtual
~RefCounted()Tp::RefCountedinlinevirtual
~SimpleStreamTubeHandler()Tp::SimpleStreamTubeHandler


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00823_source.html0000644000175100017520000004053012530426257022517 0ustar00kaffeinekaffeine00000000000000 simple-observer.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
simple-observer.h
1 
23 #ifndef _TelepathyQt_simple_observer_h_HEADER_GUARD_
24 #define _TelepathyQt_simple_observer_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/AbstractClientObserver>
27 #include <TelepathyQt/ChannelClassFeatures>
28 #include <TelepathyQt/Types>
29 
30 #include <QObject>
31 
32 namespace Tp
33 {
34 
35 class PendingOperation;
36 
37 class TP_QT_EXPORT SimpleObserver : public QObject, public RefCounted
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(SimpleObserver)
41 
42 public:
43  static SimpleObserverPtr create(const AccountPtr &account,
44  const ChannelClassSpecList &channelFilter,
45  const QList<ChannelClassFeatures> &extraChannelFeatures =
46  QList<ChannelClassFeatures>());
47  static SimpleObserverPtr create(const AccountPtr &account,
48  const ChannelClassSpecList &channelFilter,
49  const ContactPtr &contact,
50  const QList<ChannelClassFeatures> &extraChannelFeatures =
51  QList<ChannelClassFeatures>());
52  static SimpleObserverPtr create(const AccountPtr &account,
53  const ChannelClassSpecList &channelFilter,
54  const QString &contactIdentifier,
55  const QList<ChannelClassFeatures> &extraChannelFeatures =
56  QList<ChannelClassFeatures>());
57 
58  virtual ~SimpleObserver();
59 
60  AccountPtr account() const;
61  ChannelClassSpecList channelFilter() const;
62  QString contactIdentifier() const;
63  QList<ChannelClassFeatures> extraChannelFeatures() const;
64 
65  QList<ChannelPtr> channels() const;
66 
67 Q_SIGNALS:
68  void newChannels(const QList<Tp::ChannelPtr> &channels);
69  void channelInvalidated(const Tp::ChannelPtr &channel, const QString &errorName,
70  const QString &errorMessage);
71 
72 private Q_SLOTS:
73  TP_QT_NO_EXPORT void onAccountConnectionChanged(const Tp::ConnectionPtr &connection);
74  TP_QT_NO_EXPORT void onAccountConnectionConnected();
75  TP_QT_NO_EXPORT void onContactConstructed(Tp::PendingOperation *op);
76 
77  TP_QT_NO_EXPORT void onNewChannels(const Tp::AccountPtr &channelsAccount,
78  const QList<Tp::ChannelPtr> &channels);
79  TP_QT_NO_EXPORT void onChannelInvalidated(const Tp::AccountPtr &channelAccount,
80  const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage);
81 
82 private:
83  friend class SimpleCallObserver;
84  friend class SimpleTextObserver;
85 
86  TP_QT_NO_EXPORT static SimpleObserverPtr create(const AccountPtr &account,
87  const ChannelClassSpecList &channelFilter,
88  const QString &contactIdentifier,
89  bool requiresNormalization,
90  const QList<ChannelClassFeatures> &extraChannelFeatures);
91 
92  TP_QT_NO_EXPORT SimpleObserver(const AccountPtr &account,
93  const ChannelClassSpecList &channelFilter,
94  const QString &contactIdentifier,
95  bool requiresNormalization,
96  const QList<ChannelClassFeatures> &extraChannelFeatures);
97 
98  struct Private;
99  friend struct Private;
100  Private *mPriv;
101 };
102 
103 } // Tp
104 
105 #endif
The SimpleCallObserver class provides an easy way to track calls in an account and can be optionally ...
Definition: simple-call-observer.h:36
The ChannelClassSpecList class represents a list of ChannelClassSpec.
Definition: channel-class-spec.h:249
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SimpleObserver class provides an easy way to track channels in an account and can be optionally f...
Definition: simple-observer.h:37
The SimpleTextObserver class provides an easy way to track sent/received text messages in an account ...
Definition: simple-text-observer.h:38
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00963.html0000644000175100017520000004031012530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallContent Member List

This is the complete list of members for Tp::CallContent, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< CallContent >
channel() const Tp::CallContent
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< CallContent >
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
disposition() const Tp::CallContent
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< CallContent >inline
interface() constTp::OptionalInterfaceFactory< CallContent >inline
interfaces() constTp::OptionalInterfaceFactory< CallContent >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< CallContent >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
name() const Tp::CallContent
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< CallContent >inline
OptionalInterfaceFactory(CallContent *this_)Tp::OptionalInterfaceFactory< CallContent >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
remove()Tp::CallContent
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< CallContent >inlineprotected
startDTMFTone(DTMFEvent event)Tp::CallContent
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
stopDTMFTone()Tp::CallContent
streamAdded(const Tp::CallStreamPtr &stream)Tp::CallContentsignal
streamRemoved(const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason)Tp::CallContentsignal
streams() const Tp::CallContent
supportsDTMF() const Tp::CallContent
type() const Tp::CallContent
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~CallContent()Tp::CallContent
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< CallContent >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00462.html0000644000175100017520000010430512530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Client::PropertiesInterfaceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Properties>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::PropertyValueList
GetProperties (const Tp::UIntList &properties, int timeout=-1)
 
QDBusPendingReply
< Tp::PropertySpecList
ListProperties (int timeout=-1)
 
QDBusPendingReply SetProperties (const Tp::PropertyValueList &properties, int timeout=-1)
 

Signals

void PropertiesChanged (const Tp::PropertyValueList &properties)
 
void PropertyFlagsChanged (const Tp::PropertyFlagsChangeList &properties)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 PropertiesInterfaceInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 PropertiesInterfaceInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 PropertiesInterfaceInterface (Tp::DBusProxy *proxy)
 
 PropertiesInterfaceInterface (const Tp::AbstractInterface &mainInterface)
 
 PropertiesInterfaceInterface (const Tp::AbstractInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::PropertiesInterfaceInterface::PropertiesInterfaceInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a PropertiesInterfaceInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::PropertiesInterfaceInterface::PropertiesInterfaceInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a PropertiesInterfaceInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::PropertiesInterfaceInterface::PropertiesInterfaceInterface ( Tp::DBusProxy proxy)

Creates a PropertiesInterfaceInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::PropertiesInterfaceInterface::PropertiesInterfaceInterface ( const Tp::AbstractInterface mainInterface)
explicit

Creates a PropertiesInterfaceInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::PropertiesInterfaceInterface::PropertiesInterfaceInterface ( const Tp::AbstractInterface mainInterface,
QObject *  parent 
)

Creates a PropertiesInterfaceInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::PropertiesInterfaceInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Properties", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::PropertiesInterfaceInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::PropertyValueList> Tp::Client::PropertiesInterfaceInterface::GetProperties ( const Tp::UIntList properties,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetProperties on the remote object.

Returns an array of (identifier, value) pairs containing the current values of the given properties.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
properties
An array of property identifiers
timeoutThe timeout in milliseconds.
Returns

An array of structs containing:

  • integer identifiers
  • variant boxed values
QDBusPendingReply<Tp::PropertySpecList> Tp::Client::PropertiesInterfaceInterface::ListProperties ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListProperties on the remote object.

Returns a dictionary of the properties available on this channel.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of structs containing: an integer identifier a string 
property name a string representing the D-Bus signature of this 
property a bitwise OR of the flags applicable to this property
QDBusPendingReply Tp::Client::PropertiesInterfaceInterface::SetProperties ( const Tp::PropertyValueList properties,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetProperties on the remote object.

Takes an array of (identifier, value) pairs containing desired values to set the given properties. In the case of any errors, no properties will be changed. When the changes have been acknowledged by the server, the PropertiesChanged signal will be emitted.

All properties given must have the PROPERTY_FLAG_WRITE flag, or PermissionDenied will be returned. If any variants are of the wrong type, NotAvailable will be returned. If any given property identifiers are invalid, InvalidArgument will be returned.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
properties
An array mapping integer property identifiers to boxed values
timeoutThe timeout in milliseconds.
void Tp::Client::PropertiesInterfaceInterface::PropertiesChanged ( const Tp::PropertyValueList properties)
signal

Represents the signal PropertiesChanged on the remote object.

Emitted when the value of readable properties has changed.

Parameters
properties

An array of structs containing:

  • integer identifiers
  • variant boxed values

The array should contain only properties whose values have actually changed.

void Tp::Client::PropertiesInterfaceInterface::PropertyFlagsChanged ( const Tp::PropertyFlagsChangeList properties)
signal

Represents the signal PropertyFlagsChanged on the remote object.

Emitted when the flags of some room properties have changed.

Parameters
properties

An array of structs containing:

  • integer identifiers
  • a bitwise OR of the current flags

The array should contain only properties whose flags have actually changed.

void Tp::Client::PropertiesInterfaceInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00207.html0000644000175100017520000002027212530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceMergeableConferenceAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceMergeableConferenceAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Merge (const QDBusObjectPath &channel, const QDBusMessage &dbusMessage)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

Adaptor class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.MergeableConference.DRAFT".

Member Function Documentation

void Tp::Service::ChannelInterfaceMergeableConferenceAdaptor::Merge ( const QDBusObjectPath &  channel,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void merge(const QDBusObjectPath& channel, const Tp::Service::ChannelInterfaceMergeableConferenceAdaptor::MergeContextPtr &context);

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

Request that the given channel be incorporated into this channel.

The given channel SHOULD be added to ChannelInterfaceConferenceInterface::Channels if and only if the underlying protocol signals the merge in some way. It MUST NOT be added to ChannelInterfaceConferenceInterface::InitialChannels (to preserve immutability).

In GSM it is possible to merge additional calls into an ongoing conference.

In XMPP this method could be implemented to merge a 1-1 Text channel into a MUC Text channel by inviting the peer from the Text channel into the MUC, or to merge a 1-1 Jingle call into a Muji call by inviting the peer from the Jingle call into the Muji call. (MUC and Muji channels are both implemented by XMPP MUCs, with Handle_Type_Room.)

Parameters
channel

A channel with the same \\\ \\link ChannelInterface::requestPropertyChannelType() ChannelInterface::ChannelType \\endlink \\htmlonly as this one, but with \\endhtmlonly \\link ChannelInterface::requestPropertyTargetHandleType() ChannelInterface::TargetHandleType \\endlink \\htmlonly = CONTACT.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01178.html0000644000175100017520000000533412530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MultipleStatusMap Member List

This is the complete list of members for Tp::MultipleStatusMap, including all inherited members.

MultipleStatusMap()Tp::MultipleStatusMapinline
MultipleStatusMap(const QMap< QString, QVariantMap > &a)Tp::MultipleStatusMapinline
operator=(const QMap< QString, QVariantMap > &a)Tp::MultipleStatusMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00521.html0000644000175100017520000006336312530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::StatefulDBusProxy Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The StatefulDBusProxy class is a base class representing a remote object whose API is stateful. More...

#include <TelepathyQt/StatefulDBusProxy>

Inherits Tp::DBusProxy.

Inherited by Tp::CallContent, Tp::CallStream, Tp::Channel, Tp::ChannelDispatchOperation, Tp::ChannelRequest, Tp::Connection, and Tp::DebugReceiver.

Public Member Functions

 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 

Static Public Member Functions

static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Additional Inherited Members

- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 

Detailed Description

The StatefulDBusProxy class is a base class representing a remote object whose API is stateful.

These objects do not remain useful if the service providing them exits or crashes, so they emit invalidated() if this happens.

Examples include the Connection and Channel classes.

Constructor & Destructor Documentation

Tp::StatefulDBusProxy::StatefulDBusProxy ( const QDBusConnection &  dbusConnection,
const QString &  busName,
const QString &  objectPath,
const Feature featureCore 
)

Construct a new StatefulDBusProxy object.

Parameters
dbusConnectionQDBusConnection to use.
busNameD-Bus bus name of the service that provides the remote object.
objectPathThe object path.
featureCoreThe object core feature.
Tp::StatefulDBusProxy::~StatefulDBusProxy ( )
virtual

Class destructor.

Member Function Documentation

QString Tp::StatefulDBusProxy::uniqueNameFrom ( const QDBusConnection &  bus,
const QString &  wellKnownOrUnique 
)
static
QString Tp::StatefulDBusProxy::uniqueNameFrom ( const QDBusConnection &  bus,
const QString &  wellKnownOrUnique,
QString &  error,
QString &  message 
)
static


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00276.html0000644000175100017520000002427412530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceBalanceAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceBalanceAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Signals

void BalanceChanged (const Tp::CurrencyAmount &balance)
 

Public Member Functions

Tp::CurrencyAmount AccountBalance () const
 
QString ManageCreditURI () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::CurrencyAmount Tp::Service::ConnectionInterfaceBalanceAdaptor::AccountBalance ( ) const

Return the value of the exported D-Bus object property AccountBalance of type Tp::CurrencyAmount.

Adaptees should export this property as a Qt property named 'accountBalance' with type Tp::CurrencyAmount.

The user's balance on the account corresponding to this ConnectionInterface . A negative amount may be possible on some services, and indicates that the user owes money to the service provider.

On initial connection, this property may have an unknown value, represented by Amount = 0, Scale = 2**32 - 1 (the largest possible 32-bit unsigned integer) and Currency = "".

Returns
The value of exported property AccountBalance.
QString Tp::Service::ConnectionInterfaceBalanceAdaptor::ManageCreditURI ( ) const

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

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

A URI the user may visit via the web browser to manage and top-up their account balance. This property is not guaranteed to be well-defined until the connection becomes Connected; there is no change notification. Different protocols and even servers or gateways (e.g. SIP and XMPP PSTN gateways) will have a different website used to manage a user's account balance. This property enables the client to provide that to the user. A Connection Manager MAY set this itself (because it is static or discoverable), or expose it as a connection parameter.

Returns
The value of exported property ManageCreditURI.
void Tp::Service::ConnectionInterfaceBalanceAdaptor::BalanceChanged ( const Tp::CurrencyAmount balance)
signal

Represents the exported D-Bus signal BalanceChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void balanceChanged(const Tp::CurrencyAmount& balance);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
balance

The new value of the \\\ \\link requestPropertyAccountBalance() AccountBalance \\endlink \\htmlonly property.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01237.html0000644000175100017520000002576012530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface Member List

This is the complete list of members for Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(const Tp::Client::CallContentMediaDescriptionInterface &mainInterface)Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceexplicit
CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface(const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent)Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyDLRRMaxSize() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyDuplicateRLEMaxSize() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyEnableMetrics() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyLossRLEMaxSize() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyPacketReceiptTimesMaxSize() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyRTTMode() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
requestPropertyStatisticsFlags() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00020.html0000644000175100017520000001520112530426257021121 0ustar00kaffeinekaffeine00000000000000 contact-messenger/sender.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-messenger/sender.cpp
#include "sender.h"
#include "_gen/sender.moc.hpp"
#include <TelepathyQt/Account>
#include <TelepathyQt/Debug>
#include <TelepathyQt/Constants>
#include <TelepathyQt/ContactMessenger>
#include <TelepathyQt/PendingSendMessage>
#include <TelepathyQt/Types>
#include <QCoreApplication>
Sender::Sender(const QString &accountPath,
const QString &contactIdentifier, const QString &message)
{
accountPath);
messenger = Tp::ContactMessenger::create(acc, contactIdentifier);
connect(messenger->sendMessage(message),
SIGNAL(finished(Tp::PendingOperation*)),
SLOT(onSendMessageFinished(Tp::PendingOperation*)));
}
Sender::~Sender()
{
}
void Sender::onSendMessageFinished(Tp::PendingOperation *op)
{
if (op->isError()) {
qDebug() << "Error sending message:" << op->errorName() << "-" << op->errorMessage();
QCoreApplication::exit(1);
return;
}
Tp::PendingSendMessage *psm = qobject_cast<Tp::PendingSendMessage *>(op);
qDebug() << "Message sent, token is" << psm->sentMessageToken();
QCoreApplication::exit(0);
}
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
if (argc < 4) {
qDebug() << "Usage: contact-messenger account_path contact_id message";
return -1;
}
Sender *sender = new Sender(QLatin1String(argv[1]), QLatin1String(argv[2]),
QLatin1String(argv[3]));
int ret = app.exec();
delete sender;
return ret;
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00816_source.html0000644000175100017520000002522612530426257022526 0ustar00kaffeinekaffeine00000000000000 server-authentication-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
server-authentication-channel.h
1 
23 #ifndef _TelepathyQt_server_authentication_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_server_authentication_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 
32 namespace Tp
33 {
34 
35 class TP_QT_EXPORT ServerAuthenticationChannel : public Channel
36 {
37  Q_OBJECT
38  Q_DISABLE_COPY(ServerAuthenticationChannel)
39 
40 public:
41  static const Feature FeatureCore;
42 
43  static ServerAuthenticationChannelPtr create(const ConnectionPtr &connection,
44  const QString &objectPath, const QVariantMap &immutableProperties);
45 
46  virtual ~ServerAuthenticationChannel();
47 
48  CaptchaAuthenticationPtr captchaAuthentication() const;
49 
50  // TODO: Add something for SASL here as well
51 
52  bool hasCaptchaInterface() const;
53  // TODO: Enable when SASL high-level support is in
54  // bool hasSaslInterface() const;
55 
56 protected:
57  ServerAuthenticationChannel(const ConnectionPtr &connection, const QString &objectPath,
58  const QVariantMap &immutableProperties,
60 
61 private Q_SLOTS:
62  TP_QT_NO_EXPORT void gotCaptchaAuthenticationProperties(Tp::PendingOperation *op);
63  TP_QT_NO_EXPORT void gotServerAuthenticationProperties(Tp::PendingOperation *op);
64 
65 private:
66  struct Private;
67  friend struct Private;
68  Private *mPriv;
69 };
70 
71 }
72 
73 #endif
The ServerAuthenticationChannel class is a base class for all ServerAuthentication types...
Definition: server-authentication-channel.h:35
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
static const Feature FeatureCore
Definition: server-authentication-channel.h:41
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x70.html0000644000175100017520000005161112530426260023104 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- p -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00335.html0000644000175100017520000001352212530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::CurrencyAmount Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CurrencyAmount Struct Reference

#include <TelepathyQt/Types>

Public Attributes

int amount
 
uint scale
 
QString currency
 

Detailed Description

Structure type generated from the specification.

An amount of money in a specified currency. For example, 3.21 British pounds would conventionally be represented by (Amount = 321, Scale = 2, Currency = "GBP"), but could be represented by (Amount = 3210, Scale = 3, Currency = "GBP") in a service that records balance in units of 0.001 pounds.

As a special case, if Amount = 0, Scale = 2**32 - 1 (i.e. the largest possible 32-bit unsigned integer) and Currency = "", this indicates an unknown amount.

Member Data Documentation

int Tp::CurrencyAmount::amount

The amount, expressed as a fixed-point number with decimal scale defined by the Scale field; for instance, an Amount value of 1234 with Scale of 2 represents 12.34 in the currency unit given by the Currency field.

uint Tp::CurrencyAmount::scale

The decimal scale for the fixed point value of the Amount field, defining the number of rightmost decimal digits from the integer value which form the fractional part of the resulting currency value.

As well as defining the interpretation of Amount, user interfaces may use this value to determine the precision with which to display the amount.

QString Tp::CurrencyAmount::currency

The currency code represented by this amount, which SHOULD be an international currency code such as "EUR", "USD", or "JPY" if possible. An empty string can be used to indicate that the currency is not known.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00812_source.html0000644000175100017520000006435712530426257022532 0ustar00kaffeinekaffeine00000000000000 requestable-channel-class-spec.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
requestable-channel-class-spec.h
1 
23 #ifndef _TelepathyQt_requestable_channel_class_spec_h_HEADER_GUARD_
24 #define _TelepathyQt_requestable_channel_class_spec_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class TP_QT_EXPORT RequestableChannelClassSpec
37 {
38 public:
43 
44  static RequestableChannelClassSpec textChat();
45  static RequestableChannelClassSpec textChatroom();
46 
47  static RequestableChannelClassSpec audioCall();
48  static RequestableChannelClassSpec audioCallWithVideoAllowed();
49  static RequestableChannelClassSpec videoCall();
50  static RequestableChannelClassSpec videoCallWithAudioAllowed();
51 
52  TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaCall();
53  TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaAudioCall();
54  TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaVideoCall();
55  TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaVideoCallWithAudio();
56 
57  static RequestableChannelClassSpec fileTransfer();
58 
59  static RequestableChannelClassSpec conferenceTextChat();
60  static RequestableChannelClassSpec conferenceTextChatWithInvitees();
61  static RequestableChannelClassSpec conferenceTextChatroom();
62  static RequestableChannelClassSpec conferenceTextChatroomWithInvitees();
63  TP_QT_DEPRECATED static RequestableChannelClassSpec conferenceStreamedMediaCall();
64  TP_QT_DEPRECATED static RequestableChannelClassSpec conferenceStreamedMediaCallWithInvitees();
65 
66  static RequestableChannelClassSpec contactSearch();
67  static RequestableChannelClassSpec contactSearchWithSpecificServer();
68  static RequestableChannelClassSpec contactSearchWithLimit();
69  static RequestableChannelClassSpec contactSearchWithSpecificServerAndLimit();
70 
71  static RequestableChannelClassSpec dbusTube(const QString &serviceName = QString());
72  static RequestableChannelClassSpec streamTube(const QString &service = QString());
73 
74  bool isValid() const { return mPriv.constData() != 0; }
75 
77  bool operator==(const RequestableChannelClassSpec &other) const;
78 
79  bool supports(const RequestableChannelClassSpec &spec) const;
80 
81  QString channelType() const;
82 
83  bool hasTargetHandleType() const;
84  HandleType targetHandleType() const;
85 
86  bool hasFixedProperty(const QString &name) const;
87  QVariant fixedProperty(const QString &name) const;
88  QVariantMap fixedProperties() const;
89 
90  bool allowsProperty(const QString &name) const;
91  QStringList allowedProperties() const;
92 
93  RequestableChannelClass bareClass() const;
94 
95 private:
96  struct Private;
97  friend struct Private;
98  QSharedDataPointer<Private> mPriv;
99 };
100 
102  public QList<RequestableChannelClassSpec>
103 {
104 public:
107  {
108  append(RequestableChannelClassSpec(rcc));
109  }
111  {
112  Q_FOREACH (const RequestableChannelClass &rcc, rccs) {
113  append(RequestableChannelClassSpec(rcc));
114  }
115  }
117  {
118  append(rccSpec);
119  }
120  RequestableChannelClassSpecList(const QList<RequestableChannelClassSpec> &other)
121  : QList<RequestableChannelClassSpec>(other)
122  {
123  }
124 
126  {
128  Q_FOREACH (const RequestableChannelClassSpec &rccSpec, *this) {
129  list.append(rccSpec.bareClass());
130  }
131  return list;
132  }
133 };
134 
135 } // Tp
136 
137 Q_DECLARE_METATYPE(Tp::RequestableChannelClassSpec);
138 Q_DECLARE_METATYPE(Tp::RequestableChannelClassSpecList);
139 
140 #endif
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
The RequestableChannelClassSpec class represents a Telepathy requestable channel class.
Definition: requestable-channel-class-spec.h:36
RequestableChannelClass bareClass() const
Definition: requestable-channel-class-spec.cpp:583
RequestableChannelClassSpecList(const RequestableChannelClassList &rccs)
Definition: requestable-channel-class-spec.h:110
RequestableChannelClassSpecList(const RequestableChannelClassSpec &rccSpec)
Definition: requestable-channel-class-spec.h:116
bool isValid() const
Definition: requestable-channel-class-spec.h:74
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
RequestableChannelClassSpecList()
Definition: requestable-channel-class-spec.h:105
RequestableChannelClassList bareClasses() const
Definition: requestable-channel-class-spec.h:125
RequestableChannelClassSpecList(const QList< RequestableChannelClassSpec > &other)
Definition: requestable-channel-class-spec.h:120
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101
Definition: build/TelepathyQt/_gen/types.h:2545
RequestableChannelClassSpecList(const RequestableChannelClass &rcc)
Definition: requestable-channel-class-spec.h:106


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01050.html0000644000175100017520000002030112530426260021114 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::LocationInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01365.html0000644000175100017520000001275612530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolAdaptor Member List

This is the complete list of members for Tp::Service::ProtocolAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AuthenticationTypes() const Tp::Service::ProtocolAdaptor
ConnectionInterfaces() const Tp::Service::ProtocolAdaptor
dbusConnection() const Tp::AbstractAdaptor
EnglishName() const Tp::Service::ProtocolAdaptor
Icon() const Tp::Service::ProtocolAdaptor
IdentifyAccount(const QVariantMap &parameters, const QDBusMessage &dbusMessage)Tp::Service::ProtocolAdaptorslot
Interfaces() const Tp::Service::ProtocolAdaptor
NormalizeContact(const QString &contactID, const QDBusMessage &dbusMessage)Tp::Service::ProtocolAdaptorslot
Parameters() const Tp::Service::ProtocolAdaptor
RequestableChannelClasses() const Tp::Service::ProtocolAdaptor
VCardField() const Tp::Service::ProtocolAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00149.html0000644000175100017520000011006212530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentMediaDescriptionInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterface Class Reference

#include <TelepathyQt/CallContentMediaDescriptionInterface>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Accept (const QVariantMap &localMediaDescription, int timeout=-1)
 
QDBusPendingReply Reject (const Tp::CallStateReason &reason, int timeout=-1)
 

Public Member Functions

 CallContentMediaDescriptionInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyFurtherNegotiationRequired () const
 
Tp::PendingVariantrequestPropertyHasRemoteInformation () const
 
Tp::PendingVariantrequestPropertyCodecs () const
 
Tp::PendingVariantrequestPropertyRemoteContact () const
 
Tp::PendingVariantrequestPropertySSRCs () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription".

Constructor & Destructor Documentation

Tp::Client::CallContentMediaDescriptionInterface::CallContentMediaDescriptionInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterface::CallContentMediaDescriptionInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterface::CallContentMediaDescriptionInterface ( Tp::DBusProxy proxy)

Creates a CallContentMediaDescriptionInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::CallContentMediaDescriptionInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

Extra interfaces provided by this media description. This SHOULD NOT include the Description interface itself.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterface::requestPropertyFurtherNegotiationRequired ( ) const
inline

Asynchronous getter for the remote object property FurtherNegotiationRequired of type bool.

If this is set to True by the CM in a MediaDescriptionOffer, it means "This is an offer under the SDP Offer/Answer model. Whatever you accept this offer with is what I will send to the other side in my answer." If this is set to False by the CM then it means "This is an Answer under the SDP Offer/Answer model, and if it remains False in the Accept(), no further codec negotiation needs to happen." If this is set to True by the streaming implementation (e.g. in an Accept or UpdateLocalMediaDescription call) then a new SDP Offer/Answer round-trip will be initiated.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterface::requestPropertyHasRemoteInformation ( ) const
inline

Asynchronous getter for the remote object property HasRemoteInformation of type bool.

True if this offer contains information from the remote side: If False then the Accept response solely depends on the capabilities and preferences of the local side. In most protocols this property will be False for the initial DescriptionOffer on an outgoing call.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterface::requestPropertyCodecs ( ) const
inline

Asynchronous getter for the remote object property Codecs of type Tp::CodecList.

A list of codecs the remote contact supports. When used with Accept, it means the locally supported codecs.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterface::requestPropertyRemoteContact ( ) const
inline

Asynchronous getter for the remote object property RemoteContact of type uint.

The contact handle that this description applies to. This property can be used as an opaque identifier, and searched for in RemoteMembers for each Stream in this Content, to determine which Stream this MediaDescription applies to. If multiple MediaDescriptions apply to the same Stream, the SSRCs property should be used to separate media before decoding. If this property is 0, this MediaDescription applies to all streams, so the above matching method is unneccesary (e.g. in conference calls with a mixer, media from all participants is mixed into one stream). When calling Accept or UpdateLocalMediaDescription, this should always be set to 0, or omitted, because it is assumed that you send the same MediaDescription to everyone (Encoding a stream separately for each contact in a call is inefficient, and should be avoided).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterface::requestPropertySSRCs ( ) const
inline

Asynchronous getter for the remote object property SSRCs of type Tp::ContactSSRCsMap.

A map from Handle to list of Synchronisation Sources, as defined by RFC 3550.

Some protocols require the negotiation of SSRC identifiers for RTP streams. If this is the case, then MediaDescription offers will appear with this property set. The streaming implementation should then call Accept() with a map from 0 to a list containing a single SSRC (which does not collide with these, or any previously seen SSRCs). If a new MediaDescription offer appears with an SSRC the same as one in CallContentInterfaceMediaInterface::LocalMediaDescriptions , then the streaming implementation should pick a new SSRC to resolve the collision.

It is expected that this list will normally be at most one element long, but it is kept as a list for extensibility. The concatenation of all SSRCs associated with a Stream should contain no duplicate entries. If there are collisions, then it is the responsibility of the protocol implementation to resolve them and generate new offers.

If this property is omitted, then the streaming implementation can assume that there is only one MediaDescription per Stream.

If there is a single multicast Call Stream with multiple Remote Members, and all members are forced to use the same MediaDescription, this map can be used by the streaming implementation to determine which video sources belong to which contacts (e.g. in order to put a name under each face in the call)

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentMediaDescriptionInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallContentMediaDescriptionInterface::Accept ( const QVariantMap &  localMediaDescription,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Accept on the remote object.

Accepts the updated Description and update the corresponding local description. If FurtherNegotiationRequired is True, calling this method will generally cause a network round-trip and a new MediaDescription to be offered (hopefully with FurtherNegotiationRequired set to False).

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
localMediaDescription
The local description to send to the remote contacts and to use in 
the Content.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallContentMediaDescriptionInterface::Reject ( const Tp::CallStateReason reason,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Reject on the remote object.

Reject the proposed update to the remote description.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
reason
A structured reason for the rejection.
timeoutThe timeout in milliseconds.
void Tp::Client::CallContentMediaDescriptionInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00964.html0000644000175100017520000001302712530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingCallContent Member List

This is the complete list of members for Tp::PendingCallContent, including all inherited members.

content() const Tp::PendingCallContent
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingCallContent()Tp::PendingCallContent
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x6b.html0000644000175100017520000000302012530426260024207 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- k -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00463.html0000644000175100017520000000750012530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::PropertyFlagsChange Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PropertyFlagsChange Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint propertyID
 
uint newFlags
 

Detailed Description

Structure type generated from the specification.

A struct (property ID, flags) representing a change to a property's flags, as seen in the PropertyFlagsChanged signal on the Properties interface.

Member Data Documentation

uint Tp::PropertyFlagsChange::propertyID
uint Tp::PropertyFlagsChange::newFlags


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00208.html0000644000175100017520000007433612530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceMessagesAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceMessagesAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

QString SendMessage (const Tp::MessagePartList &message, uint flags, const QDBusMessage &dbusMessage)
 
Tp::MessagePartContentMap GetPendingMessageContent (uint messageID, const Tp::UIntList &parts, const QDBusMessage &dbusMessage)
 

Signals

void MessageSent (const Tp::MessagePartList &content, uint flags, const QString &messageToken)
 
void PendingMessagesRemoved (const Tp::UIntList &messageIDs)
 
void MessageReceived (const Tp::MessagePartList &message)
 

Public Member Functions

QStringList SupportedContentTypes () const
 
Tp::UIntList MessageTypes () const
 
uint MessagePartSupportFlags () const
 
Tp::MessagePartListList PendingMessages () const
 
uint DeliveryReportingSupport () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ChannelInterfaceMessagesAdaptor::SupportedContentTypes ( ) const

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

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

A list of MIME types supported by this channel, with more preferred MIME types appearing earlier in the list. The list MAY include "*/*" to indicate that attachments with arbitrary MIME types can be sent. This list MUST NOT be empty, since all Messages implementations MUST accept messages containing a single "text/plain" part.

Items in this list MUST be normalized to lower-case.

Some examples of how this property interacts with the MessagePartSupportFlags :

A simple IM implementation: only plain text messages are allowed
SupportedContentTypes = ['text/plain'], MessagePartSupportFlags = 0
Formatted text with a plain text alternative is allowed (see the HTML interface draft)
SupportedContentTypes = ['text/html', 'text/plain'], MessagePartSupportFlags = 0
JPEG or PNG images may be sent, but without any attached text
SupportedContentTypes = ['text/plain', 'image/jpeg', 'image/png'], MessagePartSupportFlags = 0
Unformatted text to which an optional JPEG or PNG image may be attached
SupportedContentTypes = ['text/plain', 'image/jpeg', 'image/png'], MessagePartSupportFlags = One_Attachment
Formatted text to which arbitrarily many images may be attached
SupportedContentTypes = ['text/html', 'text/plain', 'image/jpeg', 'image/png', 'image/x-ms-bmp'], MessagePartSupportFlags = One_Attachment | Multiple_Attachments
A full SIP implementation: arbitrary MIME messages are allowed
SupportedContentTypes = ['*/*'], MessagePartSupportFlags = One_Attachment | Multiple_Attachments
Returns
The value of exported property SupportedContentTypes.
Tp::UIntList Tp::Service::ChannelInterfaceMessagesAdaptor::MessageTypes ( ) const

Return the value of the exported D-Bus object property MessageTypes of type Tp::UIntList.

Adaptees should export this property as a Qt property named 'messageTypes' with type Tp::UIntList.

A list of message types which may be sent on this channel.

Returns
The value of exported property MessageTypes.
uint Tp::Service::ChannelInterfaceMessagesAdaptor::MessagePartSupportFlags ( ) const

Return the value of the exported D-Bus object property MessagePartSupportFlags of type uint.

Adaptees should export this property as a Qt property named 'messagePartSupportFlags' with type uint.

Flags indicating the level of support for message parts on this channel.

Returns
The value of exported property MessagePartSupportFlags.
Tp::MessagePartListList Tp::Service::ChannelInterfaceMessagesAdaptor::PendingMessages ( ) const

Return the value of the exported D-Bus object property PendingMessages of type Tp::MessagePartListList.

Adaptees should export this property as a Qt property named 'pendingMessages' with type Tp::MessagePartListList.

A list of incoming messages that have neither been acknowledged nor rejected. This list is a more detailed version of the one returned by ChannelTypeTextInterface::ListPendingMessages() , and contains the same messages, uniquely identified by the same pending message IDs. Its items can be removed using ChannelTypeTextInterface::AcknowledgePendingMessages() .

Change notification is via MessageReceived() and PendingMessagesRemoved() .

Returns
The value of exported property PendingMessages.
uint Tp::Service::ChannelInterfaceMessagesAdaptor::DeliveryReportingSupport ( ) const

Return the value of the exported D-Bus object property DeliveryReportingSupport of type uint.

Adaptees should export this property as a Qt property named 'deliveryReportingSupport' with type uint.

A bitfield indicating features supported by this channel.

Returns
The value of exported property DeliveryReportingSupport.
QString Tp::Service::ChannelInterfaceMessagesAdaptor::SendMessage ( const Tp::MessagePartList message,
uint  flags,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void sendMessage(const Tp::MessagePartList& message, uint flags, const Tp::Service::ChannelInterfaceMessagesAdaptor::SendMessageContextPtr &context);

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

Submit a message to the server for sending. If this method returns successfully, the message has been submitted to the server and the MessageSent() signal is emitted. A corresponding ChannelTypeTextInterface::Sent() signal on the Text interface MUST also be emitted.

This method MUST return before the MessageSent signal is emitted.

This means that the process sending the message is the first to see the Protocol_Message_Token, and can relate the message to the corresponding MessageSent() signal by comparing message tokens (if supported by the protocol).

If this method fails, message submission to the server has failed and no signal on this interface (or the Text interface) is emitted.

If this method succeeds, message submission to the server has succeeded, but the message has not necessarily reached its intended recipient. If a delivery failure is detected later, this is signalled by receiving a message whose message-type header maps to Delivery_Report. Similarly, if delivery is detected to have been successful (which is not possible in all protocols), a successful delivery report will be signalled.

Parameters
message
The message content, including any attachments or alternatives. 
This MUST NOT include the following headers, or any others that do 
not make sense for a client to specify: message-sender, 
message-sender-id, message-sent, message-received, 
pending-message-id.
flags
Flags affecting how the message is sent. The channel MAY ignore 
some or all flags, depending on DeliveryReportingSupport; the flags 
that were handled by the CM are provided in MessageSent.
Returns
An opaque token used to match any incoming delivery or failure 
reports against this message, or an empty string if the message is 
not readily identifiable.
Tp::MessagePartContentMap Tp::Service::ChannelInterfaceMessagesAdaptor::GetPendingMessageContent ( uint  messageID,
const Tp::UIntList parts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getPendingMessageContent(uint messageID, const Tp::UIntList& parts, const Tp::Service::ChannelInterfaceMessagesAdaptor::GetPendingMessageContentContextPtr &context);

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

Retrieve the content of one or more parts of a pending message. Note that this function may take a considerable amount of time to return if the part's 'needs-retrieval' flag is true; consider extending the default D-Bus method call timeout. Additional API is likely to be added in future, to stream large message parts.

Parameters
messageID
The ID of a pending message
parts
The desired entries in the array of message parts, identified by 
their position. The &quot;headers&quot; part (which is not a valid 
argument to this method) is considered to be part 0, so the valid 
part numbers start at 1 (for the second Message_Part).
Returns

The content of the requested parts. The keys in this mapping are positions in the array of message parts; the values are either of type 's' or 'ay' (UTF-8 text string, or byte array), following the same rules as for the value of the 'content' key in the Message_Part mappings.

If the one of the requested part numbers was greater than zero but referred to a part that had no content (i.e. it had no 'content-type' key or no 'content' key), it is simply omitted from this mapping; this is not considered to be an error condition.

void Tp::Service::ChannelInterfaceMessagesAdaptor::MessageSent ( const Tp::MessagePartList content,
uint  flags,
const QString &  messageToken 
)
signal

Represents the exported D-Bus signal MessageSent on this object.

Adaptees should export this signal as a Qt signal with the following signature: void messageSent(const Tp::MessagePartList& content, uint flags, const QString& messageToken);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
content

The message content (see Message_Part for full details). If the message that was passed to \\\ SendMessage() \\htmlonly has a formatted text part that the connection manager recognises, but no text/plain alternative, the CM MUST use the formatted text part to generate a text/plain alternative which is also included in this signal argument.

The connection manager SHOULD include the message-sender, message-sender-id and message-sent headers in the representation of the message that is signalled here. If the channel has channel-specific handles, the message-sender and message-sender-id SHOULD reflect the sender that other contacts will see.

If the connection manager can predict that the message will be altered during transmission, this argument SHOULD reflect what other contacts will receive, rather than being a copy of the argument to SendMessage (if the message is truncated, formatting or alternatives are dropped, etc., then the edited version SHOULD appear in this signal).

Parameters
flags
Flags affecting how the message was sent. The flags might be a 
subset of those passed to SendMessage if the caller requested 
unsupported flags.
messageToken
An opaque token used to match any incoming delivery or failure 
reports against this message, or an empty string if the message is 
not readily identifiable.
void Tp::Service::ChannelInterfaceMessagesAdaptor::PendingMessagesRemoved ( const Tp::UIntList messageIDs)
signal

Represents the exported D-Bus signal PendingMessagesRemoved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void pendingMessagesRemoved(const Tp::UIntList& messageIDs);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
messageIDs
The messages that have been removed from the pending message list.
void Tp::Service::ChannelInterfaceMessagesAdaptor::MessageReceived ( const Tp::MessagePartList message)
signal

Represents the exported D-Bus signal MessageReceived on this object.

Adaptees should export this signal as a Qt signal with the following signature: void messageReceived(const Tp::MessagePartList& message);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
message

The message content, including any attachments or alternatives. If the incoming message contains formatted text without a plain text alternative, the connection manager MUST generate a text/plain alternative from the formatted text, and include it in this message (both here, and in the \\\ \\link requestPropertyPendingMessages() PendingMessages \\endlink \\htmlonly property).


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01179.html0000644000175100017520000000443512530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::NotDelegatedError Member List

This is the complete list of members for Tp::NotDelegatedError, including all inherited members.

errorMessageTp::NotDelegatedError
errorNameTp::NotDelegatedError


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/bdwn.png0000644000175100017520000000022312530426257021067 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR5åZIDATxíË € DŸP–1ñlžmÀ r±j².e è†D[ØÉ¾ÙÏÔ¼µ¦ã´Þ|陣6€Všë3´Å?Ls'(}¬>+ žKó÷¥¿ch`‚ ^׃ÞnIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00522.html0000644000175100017520000005423512530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::StatelessDBusProxy Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatelessDBusProxy Class Reference

The StatelessDBusProxy class is a base class representing a remote object whose API is basically stateless. More...

#include <TelepathyQt/DBusProxy>

Inherits Tp::DBusProxy.

Inherited by Tp::Account, Tp::AccountManager, and Tp::ConnectionManager.

Public Member Functions

 StatelessDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatelessDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 

Additional Inherited Members

- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 

Detailed Description

The StatelessDBusProxy class is a base class representing a remote object whose API is basically stateless.

These objects can remain valid even if the service providing them exits and is restarted.

Examples include the AccountManager, Account and ConnectionManager.

Constructor & Destructor Documentation

Tp::StatelessDBusProxy::StatelessDBusProxy ( const QDBusConnection &  dbusConnection,
const QString &  busName,
const QString &  objectPath,
const Feature featureCore 
)

Construct a new StatelessDBusProxy object.

Parameters
dbusConnectionQDBusConnection to use.
busNameD-Bus bus name of the service that provides the remote object.
objectPathThe object path.
featureCoreThe object core feature.
Tp::StatelessDBusProxy::~StatelessDBusProxy ( )
virtual

Class destructor.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00277.html0000644000175100017520000007144612530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceBalanceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Signals

void BalanceChanged (const Tp::CurrencyAmount &balance)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceBalanceInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceBalanceInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceBalanceInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceBalanceInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceBalanceInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAccountBalance () const
 
Tp::PendingVariantrequestPropertyManageCreditURI () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Balance".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceBalanceInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceBalanceInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceBalanceInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceBalanceInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceBalanceInterface::ConnectionInterfaceBalanceInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceBalanceInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceBalanceInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Balance", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceBalanceInterface::requestPropertyAccountBalance ( ) const
inline

Asynchronous getter for the remote object property AccountBalance of type Tp::CurrencyAmount.

The user's balance on the account corresponding to this ConnectionInterface . A negative amount may be possible on some services, and indicates that the user owes money to the service provider.

On initial connection, this property may have an unknown value, represented by Amount = 0, Scale = 2**32 - 1 (the largest possible 32-bit unsigned integer) and Currency = "".

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceBalanceInterface::requestPropertyManageCreditURI ( ) const
inline

Asynchronous getter for the remote object property ManageCreditURI of type QString.

A URI the user may visit via the web browser to manage and top-up their account balance. This property is not guaranteed to be well-defined until the connection becomes Connected; there is no change notification. Different protocols and even servers or gateways (e.g. SIP and XMPP PSTN gateways) will have a different website used to manage a user's account balance. This property enables the client to provide that to the user. A Connection Manager MAY set this itself (because it is static or discoverable), or expose it as a connection parameter.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceBalanceInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ConnectionInterfaceBalanceInterface::BalanceChanged ( const Tp::CurrencyAmount balance)
signal

Represents the signal BalanceChanged on the remote object.

Emitted when the user's balance has changed.

Parameters
balance

The new value of the AccountBalance property.

void Tp::Client::ConnectionInterfaceBalanceInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01238.html0000644000175100017520000002225412530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface Member List

This is the complete list of members for Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(const Tp::Client::CallContentMediaDescriptionInterface &mainInterface)Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterfaceexplicit
CallContentMediaDescriptionInterfaceRTCPFeedbackInterface(const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent)Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterfaceinline
requestPropertyDoesAVPF() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterfaceinline
requestPropertyFeedbackMessages() const Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x71.html0000644000175100017520000000375512530426260023113 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- q -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespacemembers_eval.html0000644000175100017520000001117712530426260024637 0ustar00kaffeinekaffeine00000000000000 Namespace Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- t -

  • TLSCertificateRejectReasonExpired : Tp
  • TLSCertificateRejectReasonFingerprintMismatch : Tp
  • TLSCertificateRejectReasonHostnameMismatch : Tp
  • TLSCertificateRejectReasonInsecure : Tp
  • TLSCertificateRejectReasonLimitExceeded : Tp
  • TLSCertificateRejectReasonNotActivated : Tp
  • TLSCertificateRejectReasonRevoked : Tp
  • TLSCertificateRejectReasonSelfSigned : Tp
  • TLSCertificateRejectReasonUnknown : Tp
  • TLSCertificateRejectReasonUntrusted : Tp
  • TLSCertificateStateAccepted : Tp
  • TLSCertificateStatePending : Tp
  • TLSCertificateStateRejected : Tp
  • TubeChannelStateLocalPending : Tp
  • TubeChannelStateNotOffered : Tp
  • TubeChannelStateOpen : Tp
  • TubeChannelStateRemotePending : Tp
  • TubeStateLocalPending : Tp
  • TubeStateOpen : Tp
  • TubeStateRemotePending : Tp
  • TubeTypeDBus : Tp
  • TubeTypeStream : Tp


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00336.html0000644000175100017520000015751412530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::Client::DBus::DBusDaemonInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/DBus>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > Hello (int timeout=-1)
 
QDBusPendingReply< uint > RequestName (const QString &name, uint flags, int timeout=-1)
 
QDBusPendingReply< uint > ReleaseName (const QString &name, int timeout=-1)
 
QDBusPendingReply< uint > StartServiceByName (const QString &service, uint flags, int timeout=-1)
 
QDBusPendingReply< bool > NameHasOwner (const QString &nameToCheck, int timeout=-1)
 
QDBusPendingReply< QStringList > ListNames (int timeout=-1)
 
QDBusPendingReply< QStringList > ListActivatableNames (int timeout=-1)
 
QDBusPendingReply AddMatch (const QString &rule, int timeout=-1)
 
QDBusPendingReply RemoveMatch (const QString &rule, int timeout=-1)
 
QDBusPendingReply< QString > GetNameOwner (const QString &name, int timeout=-1)
 
QDBusPendingReply< QStringList > ListQueuedOwners (const QString &name, int timeout=-1)
 
QDBusPendingReply< uint > GetConnectionUnixUser (const QString &connectionName, int timeout=-1)
 
QDBusPendingReply< uint > GetConnectionUnixProcessID (const QString &connectionName, int timeout=-1)
 
QDBusPendingReply< QByteArray > GetConnectionSELinuxSecurityContext (const QString &connectionName, int timeout=-1)
 
QDBusPendingReply ReloadConfig (int timeout=-1)
 
QDBusPendingReply< QString > GetId (int timeout=-1)
 

Signals

void NameOwnerChanged (const QString &name, const QString &oldOwner, const QString &newOwner)
 
void NameLost (const QString &name)
 
void NameAcquired (const QString &name)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 DBusDaemonInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 DBusDaemonInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 DBusDaemonInterface (Tp::DBusProxy *proxy)
 
 DBusDaemonInterface (const Tp::AbstractInterface &mainInterface)
 
 DBusDaemonInterface (const Tp::AbstractInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.DBus".

Constructor & Destructor Documentation

Tp::Client::DBus::DBusDaemonInterface::DBusDaemonInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a DBusDaemonInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::DBusDaemonInterface::DBusDaemonInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a DBusDaemonInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::DBusDaemonInterface::DBusDaemonInterface ( Tp::DBusProxy proxy)

Creates a DBusDaemonInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::DBus::DBusDaemonInterface::DBusDaemonInterface ( const Tp::AbstractInterface mainInterface)
explicit

Creates a DBusDaemonInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::DBus::DBusDaemonInterface::DBusDaemonInterface ( const Tp::AbstractInterface mainInterface,
QObject *  parent 
)

Creates a DBusDaemonInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::DBus::DBusDaemonInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.DBus", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::DBus::DBusDaemonInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::DBus::DBusDaemonInterface::Hello ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Hello on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<uint> Tp::Client::DBus::DBusDaemonInterface::RequestName ( const QString &  name,
uint  flags,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestName on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<uint> Tp::Client::DBus::DBusDaemonInterface::ReleaseName ( const QString &  name,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ReleaseName on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<uint> Tp::Client::DBus::DBusDaemonInterface::StartServiceByName ( const QString &  service,
uint  flags,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StartServiceByName on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<bool> Tp::Client::DBus::DBusDaemonInterface::NameHasOwner ( const QString &  nameToCheck,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NameHasOwner on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QStringList> Tp::Client::DBus::DBusDaemonInterface::ListNames ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListNames on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QStringList> Tp::Client::DBus::DBusDaemonInterface::ListActivatableNames ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListActivatableNames on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::DBus::DBusDaemonInterface::AddMatch ( const QString &  rule,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddMatch on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::DBus::DBusDaemonInterface::RemoveMatch ( const QString &  rule,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveMatch on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QString> Tp::Client::DBus::DBusDaemonInterface::GetNameOwner ( const QString &  name,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetNameOwner on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QStringList> Tp::Client::DBus::DBusDaemonInterface::ListQueuedOwners ( const QString &  name,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ListQueuedOwners on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<uint> Tp::Client::DBus::DBusDaemonInterface::GetConnectionUnixUser ( const QString &  connectionName,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetConnectionUnixUser on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<uint> Tp::Client::DBus::DBusDaemonInterface::GetConnectionUnixProcessID ( const QString &  connectionName,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetConnectionUnixProcessID on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QByteArray> Tp::Client::DBus::DBusDaemonInterface::GetConnectionSELinuxSecurityContext ( const QString &  connectionName,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetConnectionSELinuxSecurityContext on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::DBus::DBusDaemonInterface::ReloadConfig ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ReloadConfig on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QString> Tp::Client::DBus::DBusDaemonInterface::GetId ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetId on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::DBus::DBusDaemonInterface::NameOwnerChanged ( const QString &  name,
const QString &  oldOwner,
const QString &  newOwner 
)
signal

Represents the signal NameOwnerChanged on the remote object.

void Tp::Client::DBus::DBusDaemonInterface::NameLost ( const QString &  name)
signal

Represents the signal NameLost on the remote object.

void Tp::Client::DBus::DBusDaemonInterface::NameAcquired ( const QString &  name)
signal

Represents the signal NameAcquired on the remote object.

void Tp::Client::DBus::DBusDaemonInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00090.html0000644000175100017520000001506112530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::AvatarData Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The AvatarData class represents a Telepathy avatar. More...

#include <TelepathyQt/AvatarData>

Public Member Functions

 AvatarData (const QString &fileName, const QString &mimeType)
 
 AvatarData ()
 

Public Attributes

QString fileName
 
QString mimeType
 

Detailed Description

The AvatarData class represents a Telepathy avatar.

Constructor & Destructor Documentation

Tp::AvatarData::AvatarData ( const QString &  fileName,
const QString &  mimeType 
)
inline
Tp::AvatarData::AvatarData ( )
inline

Member Data Documentation

QString Tp::AvatarData::fileName
QString Tp::AvatarData::mimeType


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01051.html0000644000175100017520000000753212530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessageContentPart Member List

This is the complete list of members for Tp::MessageContentPart, including all inherited members.

barePart() const Tp::MessageContentPart
isValid() const Tp::MessageContentPartinline
MessageContentPart()Tp::MessageContentPart
MessageContentPart(const MessagePart &mp)Tp::MessageContentPart
MessageContentPart(const MessageContentPart &other)Tp::MessageContentPart
operator=(const MessageContentPart &other)Tp::MessageContentPart
operator==(const MessageContentPart &other) const Tp::MessageContentPart
~MessageContentPart()Tp::MessageContentPart


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01366.html0000644000175100017520000001033612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolInterfaceAddressingAdaptor Member List

This is the complete list of members for Tp::Service::ProtocolInterfaceAddressingAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AddressableURISchemes() const Tp::Service::ProtocolInterfaceAddressingAdaptor
AddressableVCardFields() const Tp::Service::ProtocolInterfaceAddressingAdaptor
dbusConnection() const Tp::AbstractAdaptor
NormalizeContactURI(const QString &URI, const QDBusMessage &dbusMessage)Tp::Service::ProtocolInterfaceAddressingAdaptorslot
NormalizeVCardAddress(const QString &VCardField, const QString &VCardAddress, const QDBusMessage &dbusMessage)Tp::Service::ProtocolInterfaceAddressingAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2link.png0000644000175100017520000000135212530426257021700 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆ±IDATxíMOS[…Ÿžsúa?-XZ(PD4‚ AWbu`b 77wäHFÆCËÔÂÿà/`vo„ˆAPòq‹P @ ­ûÝè980 îà¤+»§Ýy×^ïZï9SW¹\83g‰3'°Nâçl¹¸_b¯p ïåûÆVÜÖ¡€Ÿ×"¬Ö†X€d]Ðà3“ÉÃÄÌ™xŸ ßMàœ[<çSPkvc—hÈ'…™˜^Åm™hØ7 `Û™¦ èÀåráq›‘œ¾!daeKŸþÆÕ˜:Ì*³_דâèi?I–eP*B7Ÿ¿åô!¹Ýgr6Ër6oKbëþãðôrI”ËTˆüªŒ¨xóö=›ù¢&‰(e+ßóÄkýÇ`ëÁÜb.“¸ÐW×w0¥°jÑzN™¬|©WEãµ¢a¯6[öX†AkÓù*/œ¨‰€ÉY­ ÿV’§–u²jÂ>1W *½·°PGŽzÿ¨/Eg{ ŸÇâaoŠÁVú:è¿™¤1$ôR§W,–ªà¨@ŠË56¾ÀÔÜ-¾,mê¸Î/æè¹– òr5¥T*S(Vf8ö9u’ Õ£w›ùóa=Í<{Ò¡UŒ÷r¯+ÉådDÏF$è°…£é¿`zþ»ÎúöN‘µÜ®0Q3£~_^Ëóâ¯N=ˆvpTà±LžT}ˆîkq†Òm<¼ÎÓ?Zh¿X£ï_þÝ¥[)ƒ `gêÃa_Ô*äÔ2`'=õ´Fÿ2EâÁPú ÷»›l=8‹Wv°%THqÉ¿<"¤ïG¾ÆxH{#ÆÖ«aÔJÕÞ‡—m‹„ çñKsÿàñVŠØ¡°·MâÒ^ TÁ– Ý›r¥ß½ømüÿ_™?ªWİ÷#uIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01110.html0000644000175100017520000001175712530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleTextObserver Member List

This is the complete list of members for Tp::SimpleTextObserver, including all inherited members.

account() const Tp::SimpleTextObserver
contactIdentifier() const Tp::SimpleTextObserver
create(const AccountPtr &account)Tp::SimpleTextObserverstatic
create(const AccountPtr &account, const ContactPtr &contact)Tp::SimpleTextObserverstatic
create(const AccountPtr &account, const QString &contactIdentifier)Tp::SimpleTextObserverstatic
messageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel)Tp::SimpleTextObserversignal
messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel)Tp::SimpleTextObserversignal
RefCounted()Tp::RefCountedinline
textChats() const Tp::SimpleTextObserver
~RefCounted()Tp::RefCountedinlinevirtual
~SimpleTextObserver()Tp::SimpleTextObservervirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00965.html0000644000175100017520000004042612530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallStream Member List

This is the complete list of members for Tp::CallStream, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< CallStream >
canRequestReceiving() const Tp::CallStream
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< CallStream >
content() const Tp::CallStream
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< CallStream >inline
interface() constTp::OptionalInterfaceFactory< CallStream >inline
interfaces() constTp::OptionalInterfaceFactory< CallStream >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< CallStream >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
localSendingState() const Tp::CallStream
localSendingStateChanged(Tp::SendingState localSendingState, const Tp::CallStateReason &reason)Tp::CallStreamsignal
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< CallStream >inline
OptionalInterfaceFactory(CallStream *this_)Tp::OptionalInterfaceFactory< CallStream >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
remoteMembers() const Tp::CallStream
remoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason)Tp::CallStreamsignal
remoteSendingState(const ContactPtr &contact) const Tp::CallStream
remoteSendingStateChanged(const QHash< Tp::ContactPtr, Tp::SendingState > &remoteSendingStates, const Tp::CallStateReason &reason)Tp::CallStreamsignal
requestedFeatures() const Tp::ReadyObjectvirtual
requestReceiving(const ContactPtr &contact, bool receive)Tp::CallStream
requestSending(bool send)Tp::CallStream
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< CallStream >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~CallStream()Tp::CallStream
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< CallStream >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x6c.html0000644000175100017520000000354212530426260024221 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- l -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00464.html0000644000175100017520000001205612530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::PropertySpec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PropertySpec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint propertyID
 
QString name
 
QString signature
 
uint flags
 

Detailed Description

Structure type generated from the specification.

A struct (property ID, property name, D-Bus signature, flags) representing a property, as returned by ListProperties on the Properties interface.

Member Data Documentation

uint Tp::PropertySpec::propertyID
QString Tp::PropertySpec::name
QString Tp::PropertySpec::signature
uint Tp::PropertySpec::flags


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00209.html0000644000175100017520000014343012530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceMessagesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > SendMessage (const Tp::MessagePartList &message, uint flags, int timeout=-1)
 
QDBusPendingReply
< Tp::MessagePartContentMap
GetPendingMessageContent (uint messageID, const Tp::UIntList &parts, int timeout=-1)
 

Signals

void MessageSent (const Tp::MessagePartList &content, uint flags, const QString &messageToken)
 
void PendingMessagesRemoved (const Tp::UIntList &messageIDs)
 
void MessageReceived (const Tp::MessagePartList &message)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceMessagesInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceMessagesInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceMessagesInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceMessagesInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceMessagesInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySupportedContentTypes () const
 
Tp::PendingVariantrequestPropertyMessageTypes () const
 
Tp::PendingVariantrequestPropertyMessagePartSupportFlags () const
 
Tp::PendingVariantrequestPropertyPendingMessages () const
 
Tp::PendingVariantrequestPropertyDeliveryReportingSupport () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Messages".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceMessagesInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceMessagesInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceMessagesInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceMessagesInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceMessagesInterface::ChannelInterfaceMessagesInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceMessagesInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceMessagesInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Messages", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceMessagesInterface::requestPropertySupportedContentTypes ( ) const
inline

Asynchronous getter for the remote object property SupportedContentTypes of type QStringList.

A list of MIME types supported by this channel, with more preferred MIME types appearing earlier in the list. The list MAY include "*/*" to indicate that attachments with arbitrary MIME types can be sent. This list MUST NOT be empty, since all Messages implementations MUST accept messages containing a single "text/plain" part.

Items in this list MUST be normalized to lower-case.

Some examples of how this property interacts with the MessagePartSupportFlags :

A simple IM implementation: only plain text messages are allowed
SupportedContentTypes = ['text/plain'], MessagePartSupportFlags = 0
Formatted text with a plain text alternative is allowed (see the HTML interface draft)
SupportedContentTypes = ['text/html', 'text/plain'], MessagePartSupportFlags = 0
JPEG or PNG images may be sent, but without any attached text
SupportedContentTypes = ['text/plain', 'image/jpeg', 'image/png'], MessagePartSupportFlags = 0
Unformatted text to which an optional JPEG or PNG image may be attached
SupportedContentTypes = ['text/plain', 'image/jpeg', 'image/png'], MessagePartSupportFlags = One_Attachment
Formatted text to which arbitrarily many images may be attached
SupportedContentTypes = ['text/html', 'text/plain', 'image/jpeg', 'image/png', 'image/x-ms-bmp'], MessagePartSupportFlags = One_Attachment | Multiple_Attachments
A full SIP implementation: arbitrary MIME messages are allowed
SupportedContentTypes = ['*/*'], MessagePartSupportFlags = One_Attachment | Multiple_Attachments
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceMessagesInterface::requestPropertyMessageTypes ( ) const
inline

Asynchronous getter for the remote object property MessageTypes of type Tp::UIntList.

A list of message types which may be sent on this channel.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceMessagesInterface::requestPropertyMessagePartSupportFlags ( ) const
inline

Asynchronous getter for the remote object property MessagePartSupportFlags of type uint.

Flags indicating the level of support for message parts on this channel.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceMessagesInterface::requestPropertyPendingMessages ( ) const
inline

Asynchronous getter for the remote object property PendingMessages of type Tp::MessagePartListList.

A list of incoming messages that have neither been acknowledged nor rejected. This list is a more detailed version of the one returned by ChannelTypeTextInterface::ListPendingMessages() , and contains the same messages, uniquely identified by the same pending message IDs. Its items can be removed using ChannelTypeTextInterface::AcknowledgePendingMessages() .

Change notification is via MessageReceived() and PendingMessagesRemoved() .

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceMessagesInterface::requestPropertyDeliveryReportingSupport ( ) const
inline

Asynchronous getter for the remote object property DeliveryReportingSupport of type uint.

A bitfield indicating features supported by this channel.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceMessagesInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::ChannelInterfaceMessagesInterface::SendMessage ( const Tp::MessagePartList message,
uint  flags,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SendMessage on the remote object.

Submit a message to the server for sending. If this method returns successfully, the message has been submitted to the server and the MessageSent() signal is emitted. A corresponding ChannelTypeTextInterface::Sent() signal on the Text interface MUST also be emitted.

This method MUST return before the MessageSent signal is emitted.

This means that the process sending the message is the first to see the Protocol_Message_Token, and can relate the message to the corresponding MessageSent() signal by comparing message tokens (if supported by the protocol).

If this method fails, message submission to the server has failed and no signal on this interface (or the Text interface) is emitted.

If this method succeeds, message submission to the server has succeeded, but the message has not necessarily reached its intended recipient. If a delivery failure is detected later, this is signalled by receiving a message whose message-type header maps to Delivery_Report. Similarly, if delivery is detected to have been successful (which is not possible in all protocols), a successful delivery report will be signalled.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
message
The message content, including any attachments or alternatives. 
This MUST NOT include the following headers, or any others that do 
not make sense for a client to specify: message-sender, 
message-sender-id, message-sent, message-received, 
pending-message-id.
flags
Flags affecting how the message is sent. The channel MAY ignore 
some or all flags, depending on DeliveryReportingSupport; the flags 
that were handled by the CM are provided in MessageSent.
timeoutThe timeout in milliseconds.
Returns
An opaque token used to match any incoming delivery or failure 
reports against this message, or an empty string if the message is 
not readily identifiable.
QDBusPendingReply<Tp::MessagePartContentMap> Tp::Client::ChannelInterfaceMessagesInterface::GetPendingMessageContent ( uint  messageID,
const Tp::UIntList parts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetPendingMessageContent on the remote object.

Retrieve the content of one or more parts of a pending message. Note that this function may take a considerable amount of time to return if the part's 'needs-retrieval' flag is true; consider extending the default D-Bus method call timeout. Additional API is likely to be added in future, to stream large message parts.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
messageID
The ID of a pending message
parts
The desired entries in the array of message parts, identified by 
their position. The &quot;headers&quot; part (which is not a valid 
argument to this method) is considered to be part 0, so the valid 
part numbers start at 1 (for the second Message_Part).
timeoutThe timeout in milliseconds.
Returns

The content of the requested parts. The keys in this mapping are positions in the array of message parts; the values are either of type 's' or 'ay' (UTF-8 text string, or byte array), following the same rules as for the value of the 'content' key in the Message_Part mappings.

If the one of the requested part numbers was greater than zero but referred to a part that had no content (i.e. it had no 'content-type' key or no 'content' key), it is simply omitted from this mapping; this is not considered to be an error condition.

void Tp::Client::ChannelInterfaceMessagesInterface::MessageSent ( const Tp::MessagePartList content,
uint  flags,
const QString &  messageToken 
)
signal

Represents the signal MessageSent on the remote object.

Signals that a message has been submitted for sending. This MUST be emitted exactly once per emission of the ChannelTypeTextInterface::Sent() signal on the Text interface, for backwards-compatibility; clients SHOULD ignore the latter if this interface is present, as mentioned in the introduction.

This SHOULD be emitted as soon as the CM determines it's theoretically possible to send the message (e.g. the parameters are supported and correct).

This signal allows a process that is not the caller of SendMessage to log sent messages.

Parameters
content

The message content (see Message_Part for full details). If the message that was passed to SendMessage() has a formatted text part that the connection manager recognises, but no text/plain alternative, the CM MUST use the formatted text part to generate a text/plain alternative which is also included in this signal argument.

The connection manager SHOULD include the message-sender, message-sender-id and message-sent headers in the representation of the message that is signalled here. If the channel has channel-specific handles, the message-sender and message-sender-id SHOULD reflect the sender that other contacts will see.

If the connection manager can predict that the message will be altered during transmission, this argument SHOULD reflect what other contacts will receive, rather than being a copy of the argument to SendMessage (if the message is truncated, formatting or alternatives are dropped, etc., then the edited version SHOULD appear in this signal).

flags
Flags affecting how the message was sent. The flags might be a 
subset of those passed to SendMessage if the caller requested 
unsupported flags.
messageToken
An opaque token used to match any incoming delivery or failure 
reports against this message, or an empty string if the message is 
not readily identifiable.
void Tp::Client::ChannelInterfaceMessagesInterface::PendingMessagesRemoved ( const Tp::UIntList messageIDs)
signal

Represents the signal PendingMessagesRemoved on the remote object.

The messages with the given IDs have been removed from the PendingMessages list. Clients SHOULD NOT attempt to acknowledge those messages. This completes change notification for the PendingMessages property (previously, there was change notification when pending messages were added, but not when they were removed).

Parameters
messageIDs
The messages that have been removed from the pending message list.
void Tp::Client::ChannelInterfaceMessagesInterface::MessageReceived ( const Tp::MessagePartList message)
signal

Represents the signal MessageReceived on the remote object.

Signals that a message has been received and added to the pending messages queue. This MUST be emitted exactly once per emission of the Received signal on the Text interface, for backwards-compatibility; clients SHOULD ignore the latter in favour of this signal if this interface is present, as mentioned in the introduction.

Parameters
message

The message content, including any attachments or alternatives. If the incoming message contains formatted text without a plain text alternative, the connection manager MUST generate a text/plain alternative from the formatted text, and include it in this message (both here, and in the PendingMessages property).

void Tp::Client::ChannelInterfaceMessagesInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x62.html0000644000175100017520000002420312530426260024115 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- b -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00523.html0000644000175100017520000001176112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::StatusSpec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatusSpec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint type
 
bool maySetOnSelf
 
bool exclusive
 
StringStringMap parameterTypes
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

uint Tp::StatusSpec::type
bool Tp::StatusSpec::maySetOnSelf
bool Tp::StatusSpec::exclusive
StringStringMap Tp::StatusSpec::parameterTypes


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00278.html0000644000175100017520000010244212530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceCapabilitiesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::CapabilityPairList
AdvertiseCapabilities (const Tp::CapabilityPairList &add, const QStringList &remove, int timeout=-1)
 
QDBusPendingReply
< Tp::ContactCapabilityList
GetCapabilities (const Tp::UIntList &handles, int timeout=-1)
 

Signals

void CapabilitiesChanged (const Tp::CapabilityChangeList &caps)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceCapabilitiesInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceCapabilitiesInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceCapabilitiesInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceCapabilitiesInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceCapabilitiesInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Capabilities".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceCapabilitiesInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceCapabilitiesInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceCapabilitiesInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceCapabilitiesInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceCapabilitiesInterface::ConnectionInterfaceCapabilitiesInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceCapabilitiesInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceCapabilitiesInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Capabilities", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceCapabilitiesInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::CapabilityPairList> Tp::Client::ConnectionInterfaceCapabilitiesInterface::AdvertiseCapabilities ( const Tp::CapabilityPairList add,
const QStringList &  remove,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AdvertiseCapabilities on the remote object.

Used by user interfaces to indicate which channel types they are able to handle on this connection. Because these may be provided by different client processes, this method accepts channel types to add and remove from the set already advertised on this connection. The type of advertised capabilities (create versus invite) is protocol-dependent and hence cannot be set by the this method. In the case of a client adding an already advertised channel type but with new channel type specific flags, the connection manager should simply add the new flags to the set of advertised capabilities.

Upon a successful invocation of this method, the CapabilitiesChanged() signal will be emitted for the user's own handle ( ConnectionInterface::GetSelfHandle() ) by the connection manager to indicate the changes that have been made. This signal should also be monitored to ensure that the set is kept accurate - for example, a client may remove capabilities or type specific capability flags when it exits which are still provided by another client.

On connections managed by the ChannelDispatcherInterface , this method SHOULD NOT be used by clients other than the ChannelDispatcher itself.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
add An array of structures containing:
  • a string channel type
  • a bitwise OR of type specific capability flags
remove
An array of D-Bus interface names of channel types to remove
timeoutThe timeout in milliseconds.
Returns
An array of structures describing the current capabilities 
containing: a string channel type a bitwise OR of type specific 
capability flags
QDBusPendingReply<Tp::ContactCapabilityList> Tp::Client::ConnectionInterfaceCapabilitiesInterface::GetCapabilities ( const Tp::UIntList handles,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetCapabilities on the remote object.

Returns an array of capabilities for the given contact handles.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handles

An array of contact handles for this connection.

This may include zero, which originally meant a query for capabilities available on the connection itself. This usage is deprecated; clients SHOULD NOT do this, and connection managers SHOULD proceed as though zero had not been present in this list.

timeoutThe timeout in milliseconds.
Returns
An array of structures containing:
  • an integer handle representing the contact
  • a string channel type
  • a bitwise OR of generic capability flags for the type
  • a bitwise OR of type specific capability flags for the type
void Tp::Client::ConnectionInterfaceCapabilitiesInterface::CapabilitiesChanged ( const Tp::CapabilityChangeList caps)
signal

Represents the signal CapabilitiesChanged on the remote object.

Announce that there has been a change of capabilities on the given handle.

If the handle is zero, the capabilities refer to the connection itself, in some poorly defined way. This usage is deprecated and clients should ignore it.

Parameters
caps An array of structures containing:
  • an integer handle representing the contact
  • a string channel type
  • a bitwise OR of the contact's old generic capability flags
  • a bitwise OR of the contact's new generic capability flags
  • a bitwise OR of the contact's old type specific capability flags
  • a bitwise OR of the contact's new type specific capability flags
void Tp::Client::ConnectionInterfaceCapabilitiesInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01239.html0000644000175100017520000002173712530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface Member List

This is the complete list of members for Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(const Tp::Client::CallContentMediaDescriptionInterface &mainInterface)Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterfaceexplicit
CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface(const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent)Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterfaceinline
requestPropertyHeaderExtensions() const Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00022.html0000644000175100017520000000671012530426257021130 0ustar00kaffeinekaffeine00000000000000 contact-messenger/sender.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-messenger/sender.h
#ifndef _TelepathyQt_examples_contact_messenger_sender_h_HEADER_GUARD_
#define _TelepathyQt_examples_contact_messenger_sender_h_HEADER_GUARD_
#include <TelepathyQt/Types>
#include <QObject>
#include <QString>
namespace Tp
{
class PendingOperation;
}
class Sender : public QObject
{
Q_OBJECT
public:
Sender(const QString &accountPath, const QString &contactIdentifier, const QString &message);
~Sender();
private Q_SLOTS:
void onSendMessageFinished(Tp::PendingOperation *op);
private:
Tp::ContactMessengerPtr messenger;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x72.html0000644000175100017520000027127312530426260023116 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- r -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00337.html0000644000175100017520000003207612530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::DBusError Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Small container class, containing a D-Bus error. More...

#include <TelepathyQt/DBusError>

Public Member Functions

 DBusError ()
 
 DBusError (const QString &name, const QString &message)
 
 ~DBusError ()
 
bool isValid () const
 
bool operator== (const DBusError &other) const
 
bool operator!= (const DBusError &other) const
 
QString name () const
 
QString message () const
 
void set (const QString &name, const QString &message)
 

Detailed Description

Small container class, containing a D-Bus error.

Constructor & Destructor Documentation

Tp::DBusError::DBusError ( )

Construct an empty DBusError

Tp::DBusError::DBusError ( const QString &  name,
const QString &  message 
)

Construct a DBusError with the given error name and message.

Parameters
nameThe D-Bus error name.
messageA human-readable description of the error.
Tp::DBusError::~DBusError ( )

Class destructor.

Member Function Documentation

bool Tp::DBusError::isValid ( ) const
inline

Return whether this DBusError is set to contain an error or not.

Returns
true if the error name and message have been set, or false otherwise.
bool Tp::DBusError::operator== ( const DBusError other) const

Compare this error with another one.

Parameters
otherThe other error to compare to.
Returns
true if the two errors have the same name and message or false otherwise.
bool Tp::DBusError::operator!= ( const DBusError other) const

Compare this error with another one.

Parameters
otherThe other error to compare to.
Returns
false if the two errors have the same name and message or true otherwise.
QString Tp::DBusError::name ( ) const

Return the D-Bus name of this error.

Returns
The D-Bus name of this error.
QString Tp::DBusError::message ( ) const

Return the human-readable description of the error.

Returns
The human-readable description of the error.
void Tp::DBusError::set ( const QString &  name,
const QString &  message 
)

Set this DBusError to contain the given error name and message.

Parameters
nameThe D-Bus error name to set.
messageThe description of the error to set.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00091.html0000644000175100017520000003726012530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::AvatarSpec Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The AvatarSpec class represents a Telepathy avatar information supported by a protocol. More...

#include <TelepathyQt/AvatarSpec>

Public Member Functions

 AvatarSpec ()
 
 AvatarSpec (const QStringList &supportedMimeTypes, uint minHeight, uint maxHeight, uint recommendedHeight, uint minWidth, uint maxWidth, uint recommendedWidth, uint maxBytes)
 
 AvatarSpec (const AvatarSpec &other)
 
 ~AvatarSpec ()
 
bool isValid () const
 
AvatarSpecoperator= (const AvatarSpec &other)
 
QStringList supportedMimeTypes () const
 
uint minimumHeight () const
 
uint maximumHeight () const
 
uint recommendedHeight () const
 
uint minimumWidth () const
 
uint maximumWidth () const
 
uint recommendedWidth () const
 
uint maximumBytes () const
 

Detailed Description

The AvatarSpec class represents a Telepathy avatar information supported by a protocol.

Constructor & Destructor Documentation

Tp::AvatarSpec::AvatarSpec ( )
Tp::AvatarSpec::AvatarSpec ( const QStringList &  supportedMimeTypes,
uint  minHeight,
uint  maxHeight,
uint  recommendedHeight,
uint  minWidth,
uint  maxWidth,
uint  recommendedWidth,
uint  maxBytes 
)
Tp::AvatarSpec::AvatarSpec ( const AvatarSpec other)
Tp::AvatarSpec::~AvatarSpec ( )

Member Function Documentation

bool Tp::AvatarSpec::isValid ( ) const
inline
AvatarSpec & Tp::AvatarSpec::operator= ( const AvatarSpec other)
QStringList Tp::AvatarSpec::supportedMimeTypes ( ) const
uint Tp::AvatarSpec::minimumHeight ( ) const
uint Tp::AvatarSpec::maximumHeight ( ) const
uint Tp::AvatarSpec::recommendedHeight ( ) const
uint Tp::AvatarSpec::minimumWidth ( ) const
uint Tp::AvatarSpec::maximumWidth ( ) const
uint Tp::AvatarSpec::recommendedWidth ( ) const
uint Tp::AvatarSpec::maximumBytes ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01052.html0000644000175100017520000000716712530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessageContentPartList Member List

This is the complete list of members for Tp::MessageContentPartList, including all inherited members.

bareParts() const Tp::MessageContentPartListinline
MessageContentPartList()Tp::MessageContentPartListinline
MessageContentPartList(const MessagePart &mp)Tp::MessageContentPartListinline
MessageContentPartList(const MessagePartList &mps)Tp::MessageContentPartListinline
MessageContentPartList(const MessageContentPart &mcp)Tp::MessageContentPartListinline
MessageContentPartList(const QList< MessageContentPart > &other)Tp::MessageContentPartListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01367.html0000644000175100017520000001205112530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolInterfaceAvatarsAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00150.html0000644000175100017520000010561312530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface Class Reference

#include <TelepathyQt/CallContentMediaDescriptionInterface>

Inherits Tp::AbstractInterface.

Public Member Functions

 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface (Tp::DBusProxy *proxy)
 
 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface)
 
 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyLossRLEMaxSize () const
 
Tp::PendingVariantrequestPropertyDuplicateRLEMaxSize () const
 
Tp::PendingVariantrequestPropertyPacketReceiptTimesMaxSize () const
 
Tp::PendingVariantrequestPropertyDLRRMaxSize () const
 
Tp::PendingVariantrequestPropertyRTTMode () const
 
Tp::PendingVariantrequestPropertyStatisticsFlags () const
 
Tp::PendingVariantrequestPropertyEnableMetrics () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports".

Constructor & Destructor Documentation

Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface ( Tp::DBusProxy proxy)

Creates a CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface ( const Tp::Client::CallContentMediaDescriptionInterface mainInterface)
explicit

Creates a CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface ( const Tp::Client::CallContentMediaDescriptionInterface mainInterface,
QObject *  parent 
)

Creates a CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyLossRLEMaxSize ( ) const
inline

Asynchronous getter for the remote object property LossRLEMaxSize of type uint.

If non-zero, enable Loss Run Length Encoded Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyDuplicateRLEMaxSize ( ) const
inline

Asynchronous getter for the remote object property DuplicateRLEMaxSize of type uint.

If non-zero, enable Duplicate Run-Length-Encoded Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyPacketReceiptTimesMaxSize ( ) const
inline

Asynchronous getter for the remote object property PacketReceiptTimesMaxSize of type uint.

If non-zero, enable Packet Receipt Times Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyDLRRMaxSize ( ) const
inline

Asynchronous getter for the remote object property DLRRMaxSize of type uint.

If non-zero, enable Receiver Reference Time and Delay since Last Receiver Report Blocks (for estimating Round Trip Times between non-senders and other parties in the call. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyRTTMode ( ) const
inline

Asynchronous getter for the remote object property RTTMode of type uint.

Who is allowed to send Delay since Last Receiver Reports.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyStatisticsFlags ( ) const
inline

Asynchronous getter for the remote object property StatisticsFlags of type uint.

Which fields SHOULD be included in the statistics summary report blocks that are sent, and whether to send VoIP Metrics Report Blocks. There can be zero or more flags set.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestPropertyEnableMetrics ( ) const
inline

Asynchronous getter for the remote object property EnableMetrics of type bool.

Whether to enable VoIP Metrics Report Blocks. These blocks are of a fixed size.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00786_source.html0000644000175100017520000002031312530426257022524 0ustar00kaffeinekaffeine00000000000000 pending-string-list.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-string-list.h
1 
23 #ifndef _TelepathyQt_pending_string_list_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_string_list_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/PendingOperation>
31 
32 #include <QStringList>
33 
34 namespace Tp
35 {
36 
37 class TP_QT_EXPORT PendingStringList : public PendingOperation
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(PendingStringList);
41 
42 public:
44  PendingStringList(QDBusPendingCall call, const SharedPtr<RefCounted> &object);
46 
47  QStringList result() const;
48 
49 protected:
50  void setResult(const QStringList &result);
51 
52 private Q_SLOTS:
53  TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher *watcher);
54 
55 private:
56  struct Private;
57  friend struct Private;
58  Private *mPriv;
59 };
60 
61 } // Tp
62 
63 #endif
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-string-list.h:37


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01111.html0000644000175100017520000011250612530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeChannel Member List

This is the complete list of members for Tp::StreamTubeChannel, including all inherited members.

accessControl() const Tp::StreamTubeChannelprotected
actualFeatures() const Tp::ReadyObjectvirtual
addConnection(uint connection)Tp::StreamTubeChannelprotected
addressType() const Tp::StreamTubeChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
connectionClosed(uint connectionId, const QString &errorName, const QString &errorMessage)Tp::StreamTubeChannelsignal
connections() const Tp::StreamTubeChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::StreamTubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureConnectionMonitoringTp::StreamTubeChannelstatic
FeatureCoreTp::StreamTubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
ipAddress() const Tp::StreamTubeChannel
isConference() const Tp::Channel
isDroppingConnections() const Tp::StreamTubeChannelprotected
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
localAddress() const Tp::StreamTubeChannel
missingFeatures() const Tp::ReadyObjectvirtual
newConnection(uint connectionId)Tp::StreamTubeChannelsignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
removeConnection(uint connection, const QString &error, const QString &message)Tp::StreamTubeChannelprotected
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
service() const Tp::StreamTubeChannel
setAccessControl(SocketAccessControl accessControl)Tp::StreamTubeChannelprotected
setAddressType(SocketAddressType type)Tp::StreamTubeChannelprotected
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setIpAddress(const QPair< QHostAddress, quint16 > &address)Tp::StreamTubeChannelprotected
setLocalAddress(const QString &address)Tp::StreamTubeChannelprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
StreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore)Tp::StreamTubeChannelprotected
supportsAbstractUnixSocketsOnLocalhost() const Tp::StreamTubeChannel
supportsAbstractUnixSocketsWithCredentials() const Tp::StreamTubeChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsIPv4SocketsOnLocalhost() const Tp::StreamTubeChannel
supportsIPv4SocketsWithSpecifiedAddress() const Tp::StreamTubeChannel
supportsIPv6SocketsOnLocalhost() const Tp::StreamTubeChannel
supportsIPv6SocketsWithSpecifiedAddress() const Tp::StreamTubeChannel
supportsUnixSocketsOnLocalhost() const Tp::StreamTubeChannel
supportsUnixSocketsWithCredentials() const Tp::StreamTubeChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~StreamTubeChannel()Tp::StreamTubeChannelvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00966.html0000644000175100017520000000627712530426260021153 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractFunctorCaller Member List

This is the complete list of members for Tp::AbstractFunctorCaller, including all inherited members.

AbstractFunctorCaller(HookType invokeMethodHook)Tp::AbstractFunctorCallerinline
clone() const =0Tp::AbstractFunctorCallerpure virtual
HookType typedefTp::AbstractFunctorCaller
invokeMethodHookTp::AbstractFunctorCaller
~AbstractFunctorCaller()Tp::AbstractFunctorCallerinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x6d.html0000644000175100017520000000564412530426260024227 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00465.html0000644000175100017520000000755212530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::PropertyValue Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PropertyValue Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint identifier
 
QDBusVariant value
 

Detailed Description

Structure type generated from the specification.

A struct (property ID, value) representing a property's value, as seen in the PropertiesChanged signal on the Properties interface, returned by the GetProperties method and passed to the SetProperties method.

Member Data Documentation

uint Tp::PropertyValue::identifier
QDBusVariant Tp::PropertyValue::value


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00782_source.html0000644000175100017520000002550012530426257022523 0ustar00kaffeinekaffeine00000000000000 pending-send-message.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-send-message.h
1 
23 #ifndef _TelepathyQt_pending_send_message_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_send_message_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/PendingOperation>
31 #include <TelepathyQt/Types>
32 
33 class QDBusPendingCallWatcher;
34 class QString;
35 
36 namespace Tp
37 {
38 
39 class Message;
40 
41 class TP_QT_EXPORT PendingSendMessage : public PendingOperation
42 {
43  Q_OBJECT
44  Q_DISABLE_COPY(PendingSendMessage)
45 
46 public:
48 
49  TextChannelPtr channel() const;
50 
51  ContactMessengerPtr messenger() const;
52 
53  QString sentMessageToken() const;
54  Message message() const;
55 
56 private Q_SLOTS:
57  TP_QT_NO_EXPORT void onTextSent(QDBusPendingCallWatcher *watcher);
58  TP_QT_NO_EXPORT void onMessageSent(QDBusPendingCallWatcher *watcher);
59  TP_QT_NO_EXPORT void onCDMessageSent(QDBusPendingCallWatcher *watcher);
60 
61 private:
62  friend class TextChannel;
63  friend class ContactMessenger;
64 
65  TP_QT_NO_EXPORT PendingSendMessage(const TextChannelPtr &channel,
66  const Message &message);
67  TP_QT_NO_EXPORT PendingSendMessage(const ContactMessengerPtr &messenger,
68  const Message &message);
69 
70  struct Private;
71  friend struct Private;
72  Private *mPriv;
73 };
74 
75 } // Tp
76 
77 #endif
The TextChannel class represents a Telepathy channel of type Text.
Definition: text-channel.h:40
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The ContactMessenger class provides an easy way to send text messages to a contact and also track sen...
Definition: contact-messenger.h:40
The PendingSendMessage class represents the parameters of and the reply to an asynchronous message se...
Definition: pending-send-message.h:41
The Message class represents a Telepathy message in a TextChannel.
Definition: message.h:44


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01180.html0000644000175100017520000000550412530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ObjectImmutablePropertiesMap Member List

This is the complete list of members for Tp::ObjectImmutablePropertiesMap, including all inherited members.

ObjectImmutablePropertiesMap()Tp::ObjectImmutablePropertiesMapinline
ObjectImmutablePropertiesMap(const QMap< QDBusObjectPath, QVariantMap > &a)Tp::ObjectImmutablePropertiesMapinline
operator=(const QMap< QDBusObjectPath, QVariantMap > &a)Tp::ObjectImmutablePropertiesMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x63.html0000644000175100017520000023262212530426260024124 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- c -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00524.html0000644000175100017520000001354212530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::StatusSpecMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatusSpecMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, StatusSpec >.

Public Member Functions

 StatusSpecMap ()
 
 StatusSpecMap (const QMap< QString, StatusSpec > &a)
 
StatusSpecMapoperator= (const QMap< QString, StatusSpec > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, StatusSpec>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::StatusSpecMap::StatusSpecMap ( )
inline
Tp::StatusSpecMap::StatusSpecMap ( const QMap< QString, StatusSpec > &  a)
inline

Member Function Documentation

StatusSpecMap& Tp::StatusSpecMap::operator= ( const QMap< QString, StatusSpec > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00279.html0000644000175100017520000006151312530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceCellularAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceCellularAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Signals

void IMSIChanged (const QString &IMSI)
 

Public Member Functions

uint MessageValidityPeriod () const
 
void SetMessageValidityPeriod (const uint &newValue)
 
bool OverrideMessageServiceCentre () const
 
void SetOverrideMessageServiceCentre (const bool &newValue)
 
QString MessageServiceCentre () const
 
void SetMessageServiceCentre (const QString &newValue)
 
QString IMSI () const
 
bool MessageReducedCharacterSet () const
 
void SetMessageReducedCharacterSet (const bool &newValue)
 
QString MessageNationalCharacterSet () const
 
void SetMessageNationalCharacterSet (const QString &newValue)
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceCellularAdaptor::MessageValidityPeriod ( ) const

Return the value of the exported D-Bus object property MessageValidityPeriod of type uint.

Adaptees should export this property as a Qt property named 'messageValidityPeriod' with type uint.

Define how long should the service centre try message delivery before giving up, failing delivery and deleting the message. A value of 0 means to use the service centre's default period.

The value specified is in seconds. Note that various protocols or implementations may round the value up (eg. to a minute or hour precision). The maximum validity period may vary depending on protocol or provider.

Returns
The value of exported property MessageValidityPeriod.
void Tp::Service::ConnectionInterfaceCellularAdaptor::SetMessageValidityPeriod ( const uint &  newValue)

Set the value of the exported D-Bus object property MessageValidityPeriod of type uint.

Adaptees should export this property as a writable Qt property named 'messageValidityPeriod' with type uint.

Define how long should the service centre try message delivery before giving up, failing delivery and deleting the message. A value of 0 means to use the service centre's default period.

The value specified is in seconds. Note that various protocols or implementations may round the value up (eg. to a minute or hour precision). The maximum validity period may vary depending on protocol or provider.

bool Tp::Service::ConnectionInterfaceCellularAdaptor::OverrideMessageServiceCentre ( ) const

Return the value of the exported D-Bus object property OverrideMessageServiceCentre of type bool.

Adaptees should export this property as a Qt property named 'overrideMessageServiceCentre' with type bool.

If True, SMSes will be sent via the service centre specified by MessageServiceCentre . If False, the SIM's default SMSC will be used, ignoring the value of MessageServiceCentre.

It could be desirable for a configuration interface to remember the user's previous choice of custom SMSC, even if it's not in use. This boolean allows that choice to be saved as an account parameter by Mission Control, rather than the UI needing to save it elsewhere to be restored if the user wants to reactivate it.

Returns
The value of exported property OverrideMessageServiceCentre.
void Tp::Service::ConnectionInterfaceCellularAdaptor::SetOverrideMessageServiceCentre ( const bool &  newValue)

Set the value of the exported D-Bus object property OverrideMessageServiceCentre of type bool.

Adaptees should export this property as a writable Qt property named 'overrideMessageServiceCentre' with type bool.

If True, SMSes will be sent via the service centre specified by MessageServiceCentre . If False, the SIM's default SMSC will be used, ignoring the value of MessageServiceCentre.

It could be desirable for a configuration interface to remember the user's previous choice of custom SMSC, even if it's not in use. This boolean allows that choice to be saved as an account parameter by Mission Control, rather than the UI needing to save it elsewhere to be restored if the user wants to reactivate it.

QString Tp::Service::ConnectionInterfaceCellularAdaptor::MessageServiceCentre ( ) const

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

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

Address for the messaging service centre. Typically (as is the case for GSM's SMSC), it's the ISDN / telephony address (ie. a phone number). If OverrideMessageServiceCentre is False, this property's value should be ignored by the CM in favour of the SIM's default SMSC.

Returns
The value of exported property MessageServiceCentre.
void Tp::Service::ConnectionInterfaceCellularAdaptor::SetMessageServiceCentre ( const QString &  newValue)

Set the value of the exported D-Bus object property MessageServiceCentre of type QString.

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

Address for the messaging service centre. Typically (as is the case for GSM's SMSC), it's the ISDN / telephony address (ie. a phone number). If OverrideMessageServiceCentre is False, this property's value should be ignored by the CM in favour of the SIM's default SMSC.

QString Tp::Service::ConnectionInterfaceCellularAdaptor::IMSI ( ) const

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

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

The International Mobile Subscriber Identifier, if it exists. This would originate from a SIM card. If the IMSI is unknown, this will contain an empty string ("").

Returns
The value of exported property IMSI.
bool Tp::Service::ConnectionInterfaceCellularAdaptor::MessageReducedCharacterSet ( ) const

Return the value of the exported D-Bus object property MessageReducedCharacterSet of type bool.

Adaptees should export this property as a Qt property named 'messageReducedCharacterSet' with type bool.

Determines how to encode SMSes containing characters that do not fit into a non-Unicode character set. If False (which SHOULD be the default), messages will be encoded as UCS-2 and sent with no loss of fidelity (at the potential financial cost of using twice as many SMSes); if True, the message will be recoded in an implementationâ€specific way to fit into a GSM reduced character set.

Returns
The value of exported property MessageReducedCharacterSet.
void Tp::Service::ConnectionInterfaceCellularAdaptor::SetMessageReducedCharacterSet ( const bool &  newValue)

Set the value of the exported D-Bus object property MessageReducedCharacterSet of type bool.

Adaptees should export this property as a writable Qt property named 'messageReducedCharacterSet' with type bool.

Determines how to encode SMSes containing characters that do not fit into a non-Unicode character set. If False (which SHOULD be the default), messages will be encoded as UCS-2 and sent with no loss of fidelity (at the potential financial cost of using twice as many SMSes); if True, the message will be recoded in an implementationâ€specific way to fit into a GSM reduced character set.

QString Tp::Service::ConnectionInterfaceCellularAdaptor::MessageNationalCharacterSet ( ) const

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

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

Hint for the connection manager for the GSM character set that should be used to send SMSes. The connection manager SHOULD follow this hint unless it has other ways to determine a better encoding. If the value is "gsm" (which SHOULD be the default), SMSes will be encoded in the normal 7-bit GSM character set, eventually falling back to UCS-2; see the MessageReducedCharacterSet property for details. Other valid character sets are specified in the GSM standard and are, for instance, "turkey", "spain" or "portugal". If the SMS cannot be encoded using the requested character set the behaviour is implementation-specific, but it is RECOMMENDED that the connection manager should behave as if this property was set to "gsm".

Returns
The value of exported property MessageNationalCharacterSet.
void Tp::Service::ConnectionInterfaceCellularAdaptor::SetMessageNationalCharacterSet ( const QString &  newValue)

Set the value of the exported D-Bus object property MessageNationalCharacterSet of type QString.

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

Hint for the connection manager for the GSM character set that should be used to send SMSes. The connection manager SHOULD follow this hint unless it has other ways to determine a better encoding. If the value is "gsm" (which SHOULD be the default), SMSes will be encoded in the normal 7-bit GSM character set, eventually falling back to UCS-2; see the MessageReducedCharacterSet property for details. Other valid character sets are specified in the GSM standard and are, for instance, "turkey", "spain" or "portugal". If the SMS cannot be encoded using the requested character set the behaviour is implementation-specific, but it is RECOMMENDED that the connection manager should behave as if this property was set to "gsm".

void Tp::Service::ConnectionInterfaceCellularAdaptor::IMSIChanged ( const QString &  IMSI)
signal

Represents the exported D-Bus signal IMSIChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void imsiChanged(const QString& IMSI);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
IMSI
The new IMSI value. This may be an empty string in the case where 
the IMSI is being reset or removed.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x73.html0000644000175100017520000027075612530426260023124 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- s -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00338.html0000644000175100017520000002027112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::DBusObject Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object. More...

#include <TelepathyQt/DBusObject>

Inherits QObject.

Public Member Functions

 DBusObject (const QDBusConnection &dbusConnection, QObject *parent=0)
 
virtual ~DBusObject ()
 
QString objectPath () const
 
QDBusConnection dbusConnection () const
 

Protected Member Functions

void setObjectPath (const QString &path)
 

Detailed Description

A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object.

Constructor & Destructor Documentation

Tp::DBusObject::DBusObject ( const QDBusConnection &  dbusConnection,
QObject *  parent = 0 
)

Construct a DBusObject that operates on the given dbusConnection.

Parameters
dbusConnectionThe D-Bus connection to use.
parentThe QObject parent of this instance.
Tp::DBusObject::~DBusObject ( )
virtual

Class destructor.

Member Function Documentation

QString Tp::DBusObject::objectPath ( ) const
QDBusConnection Tp::DBusObject::dbusConnection ( ) const

Return the D-Bus connection associated with this object.

Returns
The D-Bus connection associated with this object.
void Tp::DBusObject::setObjectPath ( const QString &  path)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00092.html0000644000175100017520000001341512530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::AvatarTokenMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AvatarTokenMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QString >.

Public Member Functions

 AvatarTokenMap ()
 
 AvatarTokenMap (const QMap< uint, QString > &a)
 
AvatarTokenMapoperator= (const QMap< uint, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QString>, but needed to have a discrete type in the Qt type system.

A dictionary whose keys are contact handles and whose values are avatar tokens.

Constructor & Destructor Documentation

Tp::AvatarTokenMap::AvatarTokenMap ( )
inline
Tp::AvatarTokenMap::AvatarTokenMap ( const QMap< uint, QString > &  a)
inline

Member Function Documentation

AvatarTokenMap& Tp::AvatarTokenMap::operator= ( const QMap< uint, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01053.html0000644000175100017520000001364212530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Message Member List

This is the complete list of members for Tp::Message, including all inherited members.

dbusInterface() const Tp::Message
hasNonTextContent() const Tp::Message
header() const Tp::Message
isSpecificToDBusInterface() const Tp::Message
isTruncated() const Tp::Message
Message(ChannelTextMessageType, const QString &)Tp::Message
Message(const Message &other)Tp::Message
messageToken() const Tp::Message
messageType() const Tp::Message
operator!=(const Message &other) const Tp::Messageinline
operator=(const Message &other)Tp::Message
operator==(const Message &other) const Tp::Message
part(uint index) const Tp::Message
parts() const Tp::Message
sent() const Tp::Message
size() const Tp::Message
text() const Tp::Message
~Message()Tp::Message


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01368.html0000644000175100017520000000631712530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolInterfacePresenceAdaptor Member List

This is the complete list of members for Tp::Service::ProtocolInterfacePresenceAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Statuses() const Tp::Service::ProtocolInterfacePresenceAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00151.html0000644000175100017520000006557612530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface Class Reference

#include <TelepathyQt/CallContentMediaDescriptionInterface>

Inherits Tp::AbstractInterface.

Public Member Functions

 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface (Tp::DBusProxy *proxy)
 
 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface)
 
 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyFeedbackMessages () const
 
Tp::PendingVariantrequestPropertyDoesAVPF () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback".

Constructor & Destructor Documentation

Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterfaceRTCPFeedbackInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterfaceRTCPFeedbackInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface ( Tp::DBusProxy proxy)

Creates a CallContentMediaDescriptionInterfaceRTCPFeedbackInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface ( const Tp::Client::CallContentMediaDescriptionInterface mainInterface)
explicit

Creates a CallContentMediaDescriptionInterfaceRTCPFeedbackInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface ( const Tp::Client::CallContentMediaDescriptionInterface mainInterface,
QObject *  parent 
)

Creates a CallContentMediaDescriptionInterfaceRTCPFeedbackInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::requestPropertyFeedbackMessages ( ) const
inline

Asynchronous getter for the remote object property FeedbackMessages of type Tp::RTCPFeedbackMessageMap.

A map of remote feedback codec properties that are supported.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::requestPropertyDoesAVPF ( ) const
inline

Asynchronous getter for the remote object property DoesAVPF of type bool.

True if the remote contact supports Audio-Visual Profile Feedback (AVPF), otherwise False.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01112.html0000644000175100017520000002404312530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeClient Member List

This is the complete list of members for Tp::StreamTubeClient, including all inherited members.

acceptsAsTcp() const Tp::StreamTubeClient
acceptsAsUnix() const Tp::StreamTubeClient
clientName() const Tp::StreamTubeClient
connectionClosed(const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId, const QString &error, const QString &message)Tp::StreamTubeClientsignal
connections() const Tp::StreamTubeClient
create(const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false, const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::StreamTubeClientstatic
create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false)Tp::StreamTubeClientstatic
create(const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false)Tp::StreamTubeClientstatic
create(const ClientRegistrarPtr &registrar, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false)Tp::StreamTubeClientstatic
isRegistered() const Tp::StreamTubeClient
monitorsConnections() const Tp::StreamTubeClient
newConnection(const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId)Tp::StreamTubeClientsignal
RefCounted()Tp::RefCountedinline
registrar() const Tp::StreamTubeClient
setToAcceptAsTcp(TcpSourceAddressGenerator *generator=0)Tp::StreamTubeClient
setToAcceptAsUnix(bool requireCredentials=false)Tp::StreamTubeClient
tcpGenerator() const Tp::StreamTubeClient
tubeAcceptedAsTcp(const QHostAddress &listenAddress, quint16 listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube)Tp::StreamTubeClientsignal
tubeAcceptedAsUnix(const QString &listenAddress, bool requiresCredentials, uchar credentialByte, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube)Tp::StreamTubeClientsignal
tubeClosed(const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, const QString &error, const QString &message)Tp::StreamTubeClientsignal
tubeOffered(const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube)Tp::StreamTubeClientsignal
tubes() const Tp::StreamTubeClient
~RefCounted()Tp::RefCountedinlinevirtual
~StreamTubeClient()Tp::StreamTubeClientvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00967.html0000644000175100017520000001024612530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseFunctorCaller< T, Functor > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x6e.html0000644000175100017520000000504212530426260024220 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00768_source.html0000644000175100017520000002130712530426257022530 0ustar00kaffeinekaffeine00000000000000 pending-contact-info.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-contact-info.h
1 
23 #ifndef _TelepathyQt_pending_contact_info_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_contact_info_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Contact>
31 #include <TelepathyQt/PendingOperation>
32 #include <TelepathyQt/Types>
33 
34 class QDBusPendingCallWatcher;
35 
36 namespace Tp
37 {
38 
39 class TP_QT_EXPORT PendingContactInfo : public PendingOperation
40 {
41  Q_OBJECT
42  Q_DISABLE_COPY(PendingContactInfo);
43 
44 public:
46 
47  ContactPtr contact() const;
48 
49  Contact::InfoFields infoFields() const;
50 
51 private Q_SLOTS:
52  TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher);
53 
54 private:
55  friend class Contact;
56 
57  TP_QT_NO_EXPORT PendingContactInfo(const ContactPtr &contact);
58 
59  struct Private;
60  friend struct Private;
61  Private *mPriv;
62 };
63 
64 } // Tp
65 
66 #endif
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingContactInfo class represents the parameters of and the reply to an asynchronous contact in...
Definition: pending-contact-info.h:39
The Contact class represents a Telepathy contact.
Definition: contact.h:51
The Contact::InfoFields class represents the information of a Telepathy contact.
Definition: contact.h:73


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00466.html0000644000175100017520000010070012530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ProtocolAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

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

Inherits Tp::AbstractAdaptor.

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
 

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


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00210.html0000644000175100017520000002665612530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfacePasswordAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfacePasswordAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

uint GetPasswordFlags (const QDBusMessage &dbusMessage)
 
bool ProvidePassword (const QString &password, const QDBusMessage &dbusMessage)
 

Signals

void PasswordFlagsChanged (uint added, uint removed)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ChannelInterfacePasswordAdaptor::GetPasswordFlags ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getPasswordFlags(const Tp::Service::ChannelInterfacePasswordAdaptor::GetPasswordFlagsContextPtr &context);

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

Returns the bitwise-OR of the flags relevant to the password on this channel. The user interface can use this to present information about which operations are currently valid.

Returns
An integer with the logical OR of all the flags set (values of 
ChannelPasswordFlags)
bool Tp::Service::ChannelInterfacePasswordAdaptor::ProvidePassword ( const QString &  password,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void providePassword(const QString& password, const Tp::Service::ChannelInterfacePasswordAdaptor::ProvidePasswordContextPtr &context);

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

Provide the password so that the channel can be joined. Must be called with the correct password in order for channel joining to proceed if the 'provide' password flag is set.

Parameters
password
The password
Returns
A boolean indicating whether or not the password was correct
void Tp::Service::ChannelInterfacePasswordAdaptor::PasswordFlagsChanged ( uint  added,
uint  removed 
)
signal

Represents the exported D-Bus signal PasswordFlagsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void passwordFlagsChanged(uint added, uint removed);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
added
A bitwise OR of the flags which have been set
removed
A bitwise OR of the flags which have been cleared


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01181.html0000644000175100017520000000523712530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ParamSpec Member List

This is the complete list of members for Tp::ParamSpec, including all inherited members.

defaultValueTp::ParamSpec
flagsTp::ParamSpec
nameTp::ParamSpec
signatureTp::ParamSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x64.html0000644000175100017520000002630112530426260024120 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- d -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00764_source.html0000644000175100017520000002320512530426257022523 0ustar00kaffeinekaffeine00000000000000 pending-connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-connection.h
1 
23 #ifndef _TelepathyQt_pending_connection_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_connection_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Connection>
31 #include <TelepathyQt/PendingOperation>
32 
33 #include <QString>
34 #include <QVariantMap>
35 
36 class QDBusPendingCallWatcher;
37 
38 namespace Tp
39 {
40 
41 class ConnectionManager;
42 
43 class TP_QT_EXPORT PendingConnection : public PendingOperation
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(PendingConnection);
47 
48 public:
50 
51  ConnectionManagerPtr manager() const;
52 
53  ConnectionPtr connection() const;
54 
55 private Q_SLOTS:
56  TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher);
57  TP_QT_NO_EXPORT void onConnectionBuilt(Tp::PendingOperation *op);
58 
59 private:
61 
62  TP_QT_NO_EXPORT PendingConnection(const ConnectionManagerPtr &manager,
63  const QString &protocol, const QVariantMap &parameters);
64  TP_QT_NO_EXPORT PendingConnection(const QString &error, const QString &errorMessage);
65 
66  struct Private;
67  friend struct Private;
68  Private *mPriv;
69 };
70 
71 } // Tp
72 
73 #endif
The PendingConnection class represents the parameters of and the reply to an asynchronous connection ...
Definition: pending-connection.h:43
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The ConnectionManagerLowlevel class extends ConnectionManager with support to low-level features...
Definition: connection-manager-lowlevel.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00525.html0000644000175100017520000000736512530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::StreamCredentials Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamCredentials Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString username
 
QString password
 

Detailed Description

Structure type generated from the specification.

A username and password pair.

Member Data Documentation

QString Tp::StreamCredentials::username

The username.

QString Tp::StreamCredentials::password

The password.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01240.html0000644000175100017520000002322212530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterface Member List

This is the complete list of members for Tp::Client::CallContentInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallContentInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterface
CallContentInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterface
CallContentInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Remove(int timeout=-1)Tp::Client::CallContentInterfaceinlineslot
requestAllProperties() const Tp::Client::CallContentInterfaceinline
requestPropertyDisposition() const Tp::Client::CallContentInterfaceinline
requestPropertyInterfaces() const Tp::Client::CallContentInterfaceinline
requestPropertyName() const Tp::Client::CallContentInterfaceinline
requestPropertyStreams() const Tp::Client::CallContentInterfaceinline
requestPropertyType() const Tp::Client::CallContentInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentInterfaceinlinestatic
StreamsAdded(const Tp::ObjectPathList &streams)Tp::Client::CallContentInterfacesignal
StreamsRemoved(const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason)Tp::Client::CallContentInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00024.html0000644000175100017520000000353112530426257021130 0ustar00kaffeinekaffeine00000000000000 Protocols Example
   Home · All Classes · All Namespaces · Modules · Functions · Files
Protocols Example


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x74.html0000644000175100017520000002752612530426260023120 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- t -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00760_source.html0000644000175100017520000002720612530426257022524 0ustar00kaffeinekaffeine00000000000000 pending-channel-request.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-channel-request.h
1 
23 #ifndef _TelepathyQt_pending_channel_request_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_channel_request_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/PendingOperation>
32 #include <TelepathyQt/Types>
33 
34 #include <QDateTime>
35 #include <QString>
36 #include <QVariantMap>
37 
38 class QDBusPendingCallWatcher;
39 
40 namespace Tp
41 {
42 
43 class Account;
44 class ChannelRequestHints;
45 
46 class TP_QT_EXPORT PendingChannelRequest : public PendingOperation
47 {
48  Q_OBJECT
49  Q_DISABLE_COPY(PendingChannelRequest)
50 
51 public:
53 
54  AccountPtr account() const;
55 
56  ChannelRequestPtr channelRequest() const;
57 
58  PendingOperation *cancel();
59 
60 Q_SIGNALS:
61  void channelRequestCreated(const Tp::ChannelRequestPtr &channelRequest);
62 
63 private Q_SLOTS:
64  TP_QT_NO_EXPORT void onWatcherFinished(QDBusPendingCallWatcher *watcher);
65  TP_QT_NO_EXPORT void onProceedOperationFinished(Tp::PendingOperation *op);
66  TP_QT_NO_EXPORT void onCancelOperationFinished(Tp::PendingOperation *op);
67 
68 private:
69  friend class Account;
70 
71  TP_QT_NO_EXPORT PendingChannelRequest(const AccountPtr &account,
72  const QVariantMap &requestedProperties, const QDateTime &userActionTime,
73  const QString &preferredHandler, bool create, const ChannelRequestHints &hints);
74  TP_QT_NO_EXPORT PendingChannelRequest(const AccountPtr &account,
75  const QString &errorName, const QString &errorMessage);
76 
77  struct Private;
78  friend struct Private;
79  Private *mPriv;
80 };
81 
82 } // Tp
83 
84 #endif
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingChannelRequest class represents the parameters of and the reply to an asynchronous Channel...
Definition: pending-channel-request.h:46
The Account class represents a Telepathy account.
Definition: account.h:68


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00339.html0000644000175100017520000006745612530426260021153 0ustar00kaffeinekaffeine00000000000000 Tp::DBusProxy Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The DBusProxy class is a base class representing a remote object available over D-Bus. More...

#include <TelepathyQt/DBusProxy>

Inherits Tp::Object, and Tp::ReadyObject.

Inherited by Tp::StatefulDBusProxy, and Tp::StatelessDBusProxy.

Signals

void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 

Protected Member Functions

void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 

Detailed Description

The DBusProxy class is a base class representing a remote object available over D-Bus.

All Telepathy-Qt client convenience classes that wrap Telepathy interfaces inherit from this class in order to provide basic D-Bus interface information.

Constructor & Destructor Documentation

Tp::DBusProxy::DBusProxy ( const QDBusConnection &  dbusConnection,
const QString &  busName,
const QString &  objectPath,
const Feature featureCore 
)

Construct a new DBusProxy object.

Parameters
dbusConnectionQDBusConnection to use.
busNameD-Bus bus name of the service that provides the remote object.
objectPathThe object path.
featureCoreThe object core feature.
Tp::DBusProxy::~DBusProxy ( )
virtual

Class destructor.

Member Function Documentation

QDBusConnection Tp::DBusProxy::dbusConnection ( ) const

Return the D-Bus connection through which the remote object is accessed.

Returns
A QDBusConnection object.
QString Tp::DBusProxy::busName ( ) const

Return the D-Bus bus name (either a unique name or a well-known name) of the service that provides the remote object.

Returns
The D-Bus bus name.
QString Tp::DBusProxy::objectPath ( ) const

Return the D-Bus object path of the remote object within the service.

Returns
The D-Bus object path.
bool Tp::DBusProxy::isValid ( ) const

Return whether this proxy is still valid (has not emitted invalidated()).

Returns
true if still valid, false otherwise.
QString Tp::DBusProxy::invalidationReason ( ) const

Return the error name indicating the reason this proxy became invalid.

Returns
A D-Bus error name, or QString() if this object is still valid.
QString Tp::DBusProxy::invalidationMessage ( ) const

Return a debugging message indicating the reason this proxy became invalid.

Returns
A debugging message, or QString() if this object is still valid.
void Tp::DBusProxy::invalidated ( Tp::DBusProxy proxy,
const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted when this object is no longer usable.

After this signal is emitted, any D-Bus method calls on the object will fail, but it may be possible to retrieve information that has already been retrieved and cached.

Parameters
proxyThis proxy.
errorNameThe name of a D-Bus error describing the reason for the invalidation.
errorMessageA debugging message associated with the error.
void Tp::DBusProxy::setBusName ( const QString &  busName)
protected

Sets the D-Bus bus name. This is used by subclasses after converting well-known names to unique names.

Parameters
busNameThe D-Bus bus name to set.
void Tp::DBusProxy::invalidate ( const QString &  reason,
const QString &  message 
)
protected

Called by subclasses when the DBusProxy should become invalid.

This method takes care of setting the invalidationReason, invalidationMessage, and emitting the invalidated signal.

Parameters
reasonA D-Bus error name (a string in a subset of ASCII, prefixed with a reversed domain name)
messageA debugging message associated with the error
void Tp::DBusProxy::invalidate ( const QDBusError &  error)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00093.html0000644000175100017520000004007212530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::BaseCallback Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for all the callback classes. More...

#include <TelepathyQt/Callbacks>

Inherited by Tp::Callback1< Tp::ConnectionAliasFlags, DBusError * >, Tp::Callback1< void, DBusError * >, Tp::Callback1< void, QString >, Tp::Callback2< BaseChannelPtr, const QVariantMap &, DBusError * >, Tp::Callback2< BaseConnectionPtr, const QVariantMap &, DBusError * >, Tp::Callback2< bool, const QVariantMap &, DBusError * >, Tp::Callback2< QDBusObjectPath, const QVariantMap &, DBusError * >, Tp::Callback2< QString, const QString &, DBusError * >, Tp::Callback2< QString, const QVariantMap &, DBusError * >, Tp::Callback2< QStringList, const Tp::UIntList &, DBusError * >, Tp::Callback2< Tp::AliasMap, const Tp::UIntList &, DBusError * >, Tp::Callback2< Tp::AvatarTokenMap, const Tp::UIntList &, DBusError * >, Tp::Callback2< Tp::ContactInfoFieldList, uint, DBusError * >, Tp::Callback2< Tp::ContactInfoMap, const Tp::UIntList &, DBusError * >, Tp::Callback2< void, const QByteArray &, DBusError * >, Tp::Callback2< void, const QDBusObjectPath &, DBusError * >, Tp::Callback2< void, const QString &, DBusError * >, Tp::Callback2< void, const QVariantMap &, DBusError * >, Tp::Callback2< void, const Tp::AliasMap &, DBusError * >, Tp::Callback2< void, const Tp::CaptchaAnswers &, DBusError * >, Tp::Callback2< void, const Tp::ContactInfoFieldList &, DBusError * >, Tp::Callback2< void, const Tp::LocalMuteState &, DBusError * >, Tp::Callback2< void, const Tp::MessagePartList &, DBusError * >, Tp::Callback2< void, const Tp::UIntList &, DBusError * >, Tp::Callback2< void, uchar, DBusError * >, Tp::Callback2< void, uint, DBusError * >, Tp::Callback3< ContactAttributesMap, const Tp::UIntList &, const QStringList &, DBusError * >, Tp::Callback3< QByteArray, uint, const QString &, DBusError * >, Tp::Callback3< QString, const QByteArray &, const QString &, DBusError * >, Tp::Callback3< QString, const QString &, const QString &, DBusError * >, Tp::Callback3< QString, const Tp::MessagePartList &, uint, DBusError * >, Tp::Callback3< QStringList, uint, const Tp::UIntList &, DBusError * >, Tp::Callback3< Tp::ContactAttributesMap, const QStringList &, bool, DBusError * >, Tp::Callback3< Tp::UIntList, uint, const QStringList &, DBusError * >, Tp::Callback3< uint, const QString &, const QString &, DBusError * >, Tp::Callback3< void, const QString &, const QByteArray &, DBusError * >, Tp::Callback3< void, const Tp::LocalHoldState &, const Tp::LocalHoldStateReason &, DBusError * >, Tp::Callback3< void, const Tp::UIntList &, const QString &, DBusError * >, Tp::Callback3< void, uint, const QString &, DBusError * >, Tp::Callback4< QDBusObjectPath, const QString &, const Tp::MediaStreamType &, const Tp::MediaStreamDirection &, DBusError * >, Tp::Callback4< void, Tp::CaptchaInfoList &, uint &, QString &, DBusError * >, Tp::Callback4< void, uint, const QString &, const QString &, DBusError * >, Tp::Callback5< void, const QStringList &, const QStringList &, Tp::AddressingNormalizationMap &, Tp::ContactAttributesMap &, DBusError * >, Tp::Callback6< void, const QString &, const QStringList &, const QStringList &, Tp::AddressingNormalizationMap &, Tp::ContactAttributesMap &, DBusError * >, Tp::Callback0< R >, Tp::Callback1< R, Arg1 >, Tp::Callback2< R, Arg1, Arg2 >, Tp::Callback3< R, Arg1, Arg2, Arg3 >, Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >, Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, and Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >.

Public Member Functions

 BaseCallback ()
 
 BaseCallback (AbstractFunctorCaller *caller)
 
 BaseCallback (const BaseCallback &other)
 
virtual ~BaseCallback ()
 
bool isValid () const
 
BaseCallbackoperator= (const BaseCallback &other)
 

Protected Attributes

AbstractFunctorCallercaller
 

Detailed Description

Base class for all the callback classes.

See Callbacks Usage

Constructor & Destructor Documentation

Tp::BaseCallback::BaseCallback ( )
inline
Tp::BaseCallback::BaseCallback ( AbstractFunctorCaller caller)
inline
Tp::BaseCallback::BaseCallback ( const BaseCallback other)
inline
virtual Tp::BaseCallback::~BaseCallback ( )
inlinevirtual

Member Function Documentation

bool Tp::BaseCallback::isValid ( ) const
inline

Return whether this callback object has a valid functor assigned to it or if it's a default-constructed dummy callback object.

Returns
false if this is a default-constructed callback or true if this callback was constructed from a functor.
BaseCallback& Tp::BaseCallback::operator= ( const BaseCallback other)
inline

Member Data Documentation

AbstractFunctorCaller* Tp::BaseCallback::caller
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01054.html0000644000175100017520000002574512530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReceivedMessage Member List

This is the complete list of members for Tp::ReceivedMessage, including all inherited members.

clearSenderHandle()Tp::ReceivedMessageprotected
dbusInterface() const Tp::Message
deliveryDetails() const Tp::ReceivedMessage
hasNonTextContent() const Tp::Message
header() const Tp::Message
isDeliveryReport() const Tp::ReceivedMessage
isFromChannel(const TextChannelPtr &channel) const Tp::ReceivedMessage
isRescued() const Tp::ReceivedMessage
isScrollback() const Tp::ReceivedMessage
isSpecificToDBusInterface() const Tp::Message
isTruncated() const Tp::Message
Message(ChannelTextMessageType, const QString &)Tp::Message
Message(const Message &other)Tp::Message
messageToken() const Tp::Message
messageType() const Tp::Message
operator!=(const Message &other) const Tp::Messageinline
operator=(const ReceivedMessage &other)Tp::ReceivedMessage
Tp::Message::operator=(const Message &other)Tp::Message
operator==(const Message &other) const Tp::Message
part(uint index) const Tp::Message
parts() const Tp::Message
pendingId() const Tp::ReceivedMessageprotected
received() const Tp::ReceivedMessage
ReceivedMessage(const ReceivedMessage &other)Tp::ReceivedMessage
ReceivedMessage(const MessagePartList &parts, const TextChannelPtr &channel)Tp::ReceivedMessageprotected
ReceivedMessage()Tp::ReceivedMessageprotected
sender() const Tp::ReceivedMessage
senderHandle() const Tp::ReceivedMessageprotected
senderId() const Tp::ReceivedMessageprotected
senderNickname() const Tp::ReceivedMessage
sent() const Tp::Message
setForceNonText()Tp::ReceivedMessageprotected
setSender(const ContactPtr &sender)Tp::ReceivedMessageprotected
size() const Tp::Message
supersededToken() const Tp::ReceivedMessage
text() const Tp::Message
~Message()Tp::Message
~ReceivedMessage()Tp::ReceivedMessage


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01369.html0000644000175100017520000002435312530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AddClientInterest(const QStringList &tokens, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
Connect(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
ConnectionError(const QString &error, const QVariantMap &details)Tp::Service::ConnectionAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
Disconnect(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
GetInterfaces(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
GetProtocol(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
GetSelfHandle(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
GetStatus(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
HasImmortalHandles() const Tp::Service::ConnectionAdaptor
HoldHandles(uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
InspectHandles(uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
Interfaces() const Tp::Service::ConnectionAdaptor
ListChannels(const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
NewChannel(const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler)Tp::Service::ConnectionAdaptorsignal
ReleaseHandles(uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
RemoveClientInterest(const QStringList &tokens, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
RequestChannel(const QString &type, uint handleType, uint handle, bool suppressHandler, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
RequestHandles(uint handleType, const QStringList &identifiers, const QDBusMessage &dbusMessage)Tp::Service::ConnectionAdaptorslot
SelfContactChanged(uint selfHandle, const QString &selfID)Tp::Service::ConnectionAdaptorsignal
SelfHandle() const Tp::Service::ConnectionAdaptor
SelfHandleChanged(uint selfHandle)Tp::Service::ConnectionAdaptorsignal
SelfID() const Tp::Service::ConnectionAdaptor
Status() const Tp::Service::ConnectionAdaptor
StatusChanged(uint status, uint reason)Tp::Service::ConnectionAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00152.html0000644000175100017520000006302312530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface Class Reference

#include <TelepathyQt/CallContentMediaDescriptionInterface>

Inherits Tp::AbstractInterface.

Public Member Functions

 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface (Tp::DBusProxy *proxy)
 
 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface)
 
 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyHeaderExtensions () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions".

Constructor & Destructor Documentation

Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface ( Tp::DBusProxy proxy)

Creates a CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface ( const Tp::Client::CallContentMediaDescriptionInterface mainInterface)
explicit

Creates a CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface ( const Tp::Client::CallContentMediaDescriptionInterface mainInterface,
QObject *  parent 
)

Creates a CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::requestPropertyHeaderExtensions ( ) const
inline

Asynchronous getter for the remote object property HeaderExtensions of type Tp::RTPHeaderExtensionsList.

A list of remote header extensions which are supported.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01113.html0000644000175100017520000000532412530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeClient::TcpSourceAddressGenerator Member List

This is the complete list of members for Tp::StreamTubeClient::TcpSourceAddressGenerator, including all inherited members.

nextSourceAddress(const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube)=0Tp::StreamTubeClient::TcpSourceAddressGeneratorpure virtual
~TcpSourceAddressGenerator()Tp::StreamTubeClient::TcpSourceAddressGeneratorinlineprotectedvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00968.html0000644000175100017520000000733412530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseCallback Member List

This is the complete list of members for Tp::BaseCallback, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
callerTp::BaseCallbackprotected
isValid() const Tp::BaseCallbackinline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x6f.html0000644000175100017520000000524612530426260024227 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00467.html0000644000175100017520000007173412530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::ProtocolInfo Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ProtocolInfo class represents a Telepathy Protocol. More...

#include <TelepathyQt/ProtocolInfo>

Public Member Functions

 ProtocolInfo ()
 
 ProtocolInfo (const ProtocolInfo &other)
 
 ~ProtocolInfo ()
 
bool isValid () const
 
ProtocolInfooperator= (const ProtocolInfo &other)
 
QString cmName () const
 
QString name () const
 
ProtocolParameterList parameters () const
 
bool hasParameter (const QString &name) const
 
bool canRegister () const
 
ConnectionCapabilities capabilities () const
 
QString vcardField () const
 
QString englishName () const
 
QString iconName () const
 
PresenceSpecList allowedPresenceStatuses () const
 
AvatarSpec avatarRequirements () const
 
QStringList addressableVCardFields () const
 
QStringList addressableUriSchemes () const
 
PendingStringnormalizeVCardAddress (const QString &vcardField, const QString &vcardAddress)
 
PendingStringnormalizeContactUri (const QString &uri)
 

Detailed Description

The ProtocolInfo class represents a Telepathy Protocol.

Constructor & Destructor Documentation

Tp::ProtocolInfo::ProtocolInfo ( )
Tp::ProtocolInfo::ProtocolInfo ( const ProtocolInfo other)
Tp::ProtocolInfo::~ProtocolInfo ( )

Class destructor.

Member Function Documentation

bool Tp::ProtocolInfo::isValid ( ) const
inline
ProtocolInfo & Tp::ProtocolInfo::operator= ( const ProtocolInfo other)
QString Tp::ProtocolInfo::cmName ( ) const

Return the short name of the connection manager (e.g. "gabble") for this protocol.

Returns
The name of the connection manager for this protocol.
QString Tp::ProtocolInfo::name ( ) const

Return the string identifying this protocol as described in the Telepathy specification (e.g. "jabber").

This identifier is not intended to be displayed to users directly; user interfaces are responsible for mapping them to localized strings.

Returns
A string identifying this protocol.
ProtocolParameterList Tp::ProtocolInfo::parameters ( ) const

Return all supported parameters for this protocol. The parameters' names may either be the well-known strings specified by the Telepathy specification (e.g. "account" and "password"), or implementation-specific strings.

Returns
A list of parameters for this protocol.
bool Tp::ProtocolInfo::hasParameter ( const QString &  name) const

Return whether a given parameter can be passed to the connection manager when creating a connection to this protocol.

Parameters
nameThe name of a parameter.
Returns
true if the given parameter exists.
bool Tp::ProtocolInfo::canRegister ( ) const

Return whether it might be possible to register new accounts on this protocol, by setting the special parameter named register to true.

Returns
The same thing as hasParameter("register").
See Also
hasParameter()
ConnectionCapabilities Tp::ProtocolInfo::capabilities ( ) const

Return the capabilities that are expected to be available from a connection to this protocol, i.e. those for which Connection::createChannel() can reasonably be expected to succeed. User interfaces can use this information to show or hide UI components.

Returns
An object representing the capabilities expected to be available from a connection to this protocol.
QString Tp::ProtocolInfo::vcardField ( ) const

Return the name of the most common vcard field used for this protocol's contact identifiers, normalized to lower case.

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. 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.nosp@m.@exa.nosp@m.mple..nosp@m.com or tel:8675309, which would not normally both be represented by any single vcard field.

Returns
The most common vcard field used for this protocol's contact identifiers, or an empty string if there is no such field.
QString Tp::ProtocolInfo::englishName ( ) const

Return the English-language name of this protocol, such as "AIM" or "Yahoo!".

The name can be used as a fallback if an application doesn't have a localized name for this protocol.

If the manager file or the CM service doesn't specify the english name, it is inferred from this protocol name, such that for example "google-talk" becomes "Google Talk", but "local-xmpp" becomes "Local Xmpp".

Returns
An English-language name for this protocol.
QString Tp::ProtocolInfo::iconName ( ) const

Return the name of an icon for this protocol in the system's icon theme, such as "im-msn".

If the manager file or the CM service doesn't specify the icon name, "im-<protocolname>" is assumed.

Returns
The likely name of an icon for this protocol.
PresenceSpecList Tp::ProtocolInfo::allowedPresenceStatuses ( ) const

Return a list of PresenceSpec representing the possible presence statuses from a connection to this protocol.

Returns
A list of PresenceSpec representing the possible presence statuses from a connection to this protocol.
AvatarSpec Tp::ProtocolInfo::avatarRequirements ( ) const

Return the requirements (size limits, supported MIME types, etc) for avatars used on to this protocol.

Returns
The requirements for avatars used on this protocol.
QStringList Tp::ProtocolInfo::addressableVCardFields ( ) const

Return the vcard fields that can be used to request a contact with on this protocol, normalized to lower case.

Returns
The vcard fields normalized to lower case.
See Also
addressableUriSchemes()
QStringList Tp::ProtocolInfo::addressableUriSchemes ( ) const

Return the URI schemes that are supported by this protocol.

Returns
The URI schemes.
See Also
addressableVCardFields()
PendingString * Tp::ProtocolInfo::normalizeVCardAddress ( const QString &  vcardField,
const QString &  vcardAddress 
)

Attempt to normalize the given vcardAddress.

For example, a vcard TEL field formatted as +1 (206) 555 1234, could be normalized to +12065551234.

If a vcard address X would be normalized to Y, a successful ContactManager contact request using ContactManager::contactsForVCardAddresses() for vcard address X would result in a contact with Y reported as an address that can identify it in Contact::vcardAddresses().

Parameters
vcardFieldThe vcard field the vcardAddress belongs to.
vcardAddressThe address to normalize.
Returns
A PendingString which will emit PendingString::finished when the address has been normalized or an error occurred.
See Also
normalizeContactUri()
PendingString * Tp::ProtocolInfo::normalizeContactUri ( const QString &  uri)

Attempt to normalize the given contact uri.

If the URI has extra information beyond what's necessary to identify a particular contact, such as an XMPP resource or an action to carry out, this extra information wil be removed.

An example would be xmpp:romeo.nosp@m.@Exa.nosp@m.mple..nosp@m.Com/Empathy?message;body=Hello, which would be normalized to xmpp:romeo.nosp@m.@exa.nosp@m.mple..nosp@m.com.

If a URI address X would be normalized to Y, a successful ContactManager contact request using ContactManager::contactsForUris() for URI address X would result in a contact with Y reported as an address that can identify it in Contact::uris().

Parameters
uriThe URI to normalize.
Returns
A PendingString which will emit PendingString::finished when the uri has been normalized or an error occurred.
See Also
normalizeVCardAddress()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00211.html0000644000175100017520000007307512530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfacePasswordInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< uint > GetPasswordFlags (int timeout=-1)
 
QDBusPendingReply< bool > ProvidePassword (const QString &password, int timeout=-1)
 

Signals

void PasswordFlagsChanged (uint added, uint removed)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfacePasswordInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfacePasswordInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfacePasswordInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfacePasswordInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfacePasswordInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Password".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfacePasswordInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfacePasswordInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfacePasswordInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfacePasswordInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfacePasswordInterface::ChannelInterfacePasswordInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfacePasswordInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfacePasswordInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Password", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelInterfacePasswordInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<uint> Tp::Client::ChannelInterfacePasswordInterface::GetPasswordFlags ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetPasswordFlags on the remote object.

Returns the bitwise-OR of the flags relevant to the password on this channel. The user interface can use this to present information about which operations are currently valid.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An integer with the logical OR of all the flags set (values of 
ChannelPasswordFlags)
QDBusPendingReply<bool> Tp::Client::ChannelInterfacePasswordInterface::ProvidePassword ( const QString &  password,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ProvidePassword on the remote object.

Provide the password so that the channel can be joined. Must be called with the correct password in order for channel joining to proceed if the 'provide' password flag is set.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
password
The password
timeoutThe timeout in milliseconds.
Returns
A boolean indicating whether or not the password was correct
void Tp::Client::ChannelInterfacePasswordInterface::PasswordFlagsChanged ( uint  added,
uint  removed 
)
signal

Represents the signal PasswordFlagsChanged on the remote object.

Emitted when the flags as returned by GetPasswordFlags are changed. The user interface should be updated as appropriate.

Parameters
added
A bitwise OR of the flags which have been set
removed
A bitwise OR of the flags which have been cleared
void Tp::Client::ChannelInterfacePasswordInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01182.html0000644000175100017520000000624412530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingTextMessage Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x65.html0000644000175100017520000002014112530426260024115 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- e -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespacemembers_enum.html0000644000175100017520000002372412530426260024655 0ustar00kaffeinekaffeine00000000000000 Namespace Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- a -

  • AccessControlType : Tp
  • AnonymityMode : Tp

- c -

  • CallContentDisposition : Tp
  • CallContentPacketizationType : Tp
  • CallFlag : Tp
  • CallMemberFlag : Tp
  • CallState : Tp
  • CallStateChangeReason : Tp
  • CallStreamCandidateType : Tp
  • CaptchaCancelReason : Tp
  • CaptchaFlag : Tp
  • CaptchaStatus : Tp
  • ChannelCallState : Tp
  • ChannelChatState : Tp
  • ChannelContactSearchState : Tp
  • ChannelGroupChangeReason : Tp
  • ChannelGroupFlag : Tp
  • ChannelMediaCapability : Tp
  • ChannelPasswordFlag : Tp
  • ChannelTextMessageFlag : Tp
  • ChannelTextMessageType : Tp
  • ChannelTextSendError : Tp
  • ConnectionAliasFlag : Tp
  • ConnectionCapabilityFlag : Tp
  • ConnectionPresenceType : Tp
  • ConnectionStatus : Tp
  • ConnectionStatusReason : Tp
  • ConnMgrParamFlag : Tp
  • ContactBlockingCapability : Tp
  • ContactInfoFieldFlag : Tp
  • ContactInfoFlag : Tp
  • ContactListState : Tp
  • ContactMetadataStorageType : Tp

- d -

  • DebugLevel : Tp
  • DeliveryReportingSupportFlag : Tp
  • DeliveryStatus : Tp
  • DTMFEvent : Tp

- f -

  • FileHashType : Tp
  • FileTransferState : Tp
  • FileTransferStateChangeReason : Tp

- h -

  • HandleType : Tp
  • HTTPMethod : Tp

- l -

  • LocalHoldState : Tp
  • LocalHoldStateReason : Tp
  • LocalMuteState : Tp
  • LocationFeature : Tp

- m -

  • MailNotificationFlag : Tp
  • MediaStreamBaseProto : Tp
  • MediaStreamDirection : Tp
  • MediaStreamError : Tp
  • MediaStreamPending : Tp
  • MediaStreamState : Tp
  • MediaStreamTransportType : Tp
  • MediaStreamType : Tp
  • MessagePartSupportFlag : Tp
  • MessageSendingFlag : Tp

- p -

  • PropertyFlag : Tp

- r -

  • RCPTXRRTTMode : Tp
  • RichPresenceAccessControlType : Tp
  • RTCPXRStatisticsFlag : Tp

- s -

  • SASLAbortReason : Tp
  • SASLStatus : Tp
  • SendingState : Tp
  • ServicePointType : Tp
  • SocketAccessControl : Tp
  • SocketAddressType : Tp
  • StorageRestrictionFlag : Tp
  • StreamComponent : Tp
  • StreamEndpointState : Tp
  • StreamFlowState : Tp
  • StreamTransportType : Tp
  • SubscriptionState : Tp

- t -

  • TLSCertificateRejectReason : Tp
  • TLSCertificateState : Tp
  • TubeChannelState : Tp
  • TubeState : Tp
  • TubeType : Tp


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00526.html0000644000175100017520000033226312530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::StreamedMediaChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The StreamedMediaChannel class represents a Telepathy channel of type StreamedMedia. More...

#include <TelepathyQt/StreamedMediaChannel>

Inherits Tp::Channel.

Public Types

enum  StateChangeReason { StateChangeReasonUnknown, StateChangeReasonUserRequested }
 
- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 

Signals

void streamAdded (const Tp::StreamedMediaStreamPtr &stream)
 
void streamRemoved (const Tp::StreamedMediaStreamPtr &stream)
 
void streamDirectionChanged (const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamDirection direction, Tp::MediaStreamPendingSend pendingSend)
 
void streamStateChanged (const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamState state)
 
void streamError (const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamError errorCode, const QString &errorMessage)
 
void localHoldStateChanged (Tp::LocalHoldState state, Tp::LocalHoldStateReason reason)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~StreamedMediaChannel ()
 
bool awaitingLocalAnswer () const
 
bool awaitingRemoteAnswer () const
 
PendingOperationacceptCall ()
 
PendingOperationhangupCall ()
 
StreamedMediaStreams streams () const
 
StreamedMediaStreams streamsForType (MediaStreamType type) const
 
PendingStreamedMediaStreamsrequestStream (const ContactPtr &contact, MediaStreamType type)
 
PendingStreamedMediaStreamsrequestStreams (const ContactPtr &contact, QList< MediaStreamType > types)
 
PendingOperationremoveStream (const StreamedMediaStreamPtr &stream)
 
PendingOperationremoveStreams (const StreamedMediaStreams &streams)
 
bool handlerStreamingRequired () const
 
LocalHoldState localHoldState () const
 
LocalHoldStateReason localHoldStateReason () const
 
PendingOperationrequestHold (bool hold)
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static StreamedMediaChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureStreams
 
static const Feature FeatureLocalHoldState
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 StreamedMediaChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamedMediaChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Detailed Description

The StreamedMediaChannel class represents a Telepathy channel of type StreamedMedia.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Member Enumeration Documentation

Enumerator
StateChangeReasonUnknown 
StateChangeReasonUserRequested 

Constructor & Destructor Documentation

Tp::StreamedMediaChannel::~StreamedMediaChannel ( )
virtual

Class destructor.

Tp::StreamedMediaChannel::StreamedMediaChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = StreamedMediaChannel::FeatureCore 
)
protected

Construct a new StreamedMediaChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on StreamedMediaChannel::FeatureCore.

Member Function Documentation

StreamedMediaChannelPtr Tp::StreamedMediaChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new StreamedMediaChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A StreamedMediaChannelPtr object pointing to the newly created StreamedMediaChannel object.
bool Tp::StreamedMediaChannel::awaitingLocalAnswer ( ) const

Return whether this channel is awaiting local answer.

This method requires StreamedMediaChannel::FeatureCore to be ready.

Returns
true if awaiting local answer, false otherwise.
See Also
awaitingRemoteAnswer(), acceptCall()
bool Tp::StreamedMediaChannel::awaitingRemoteAnswer ( ) const

Return whether this channel is awaiting remote answer.

This method requires StreamedMediaChannel::FeatureCore to be ready.

Returns
true if awaiting remote answer, false otherwise.
See Also
awaitingLocalAnswer()
PendingOperation * Tp::StreamedMediaChannel::acceptCall ( )

Accept an incoming call.

This method requires StreamedMediaChannel::FeatureCore to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
awaitingLocalAnswer(), hangupCall()
PendingOperation * Tp::StreamedMediaChannel::hangupCall ( )

Request that the call is ended.

This method requires StreamedMediaChannel::FeatureCore to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
StreamedMediaStreams Tp::StreamedMediaChannel::streams ( ) const

Return a list of media streams in this channel.

This methods requires StreamedMediaChannel::FeatureStreams to be ready.

Returns
A list of pointers to StreamedMediaStream objects.
See Also
streamAdded(), streamRemoved(), streamsForType(), requestStreams()
StreamedMediaStreams Tp::StreamedMediaChannel::streamsForType ( MediaStreamType  type) const

Return a list of media streams in this channel for the given type type.

This methods requires StreamedMediaChannel::FeatureStreams to be ready.

Parameters
typeThe interested type.
Returns
A list of pointers to StreamedMediaStream objects.
See Also
streamAdded(), streamRemoved(), streams(), requestStreams()
PendingStreamedMediaStreams * Tp::StreamedMediaChannel::requestStream ( const ContactPtr &  contact,
MediaStreamType  type 
)

Request that media streams be established to exchange the given type type of media with the given contact contact.

This methods requires StreamedMediaChannel::FeatureStreams to be ready.

Returns
A PendingStreamedMediaStreams which will emit PendingStreamedMediaStreams::finished when the call has finished.
See Also
streamAdded(), streams(), streamsForType()
PendingStreamedMediaStreams * Tp::StreamedMediaChannel::requestStreams ( const ContactPtr &  contact,
QList< MediaStreamType types 
)

Request that media streams be established to exchange the given types types of media with the given contact contact.

This methods requires StreamedMediaChannel::FeatureStreams to be ready.

Returns
A PendingStreamedMediaStreams which will emit PendingStreamedMediaStreams::finished when the call has finished.
See Also
streamAdded(), streams(), streamsForType()
PendingOperation * Tp::StreamedMediaChannel::removeStream ( const StreamedMediaStreamPtr &  stream)

Remove the specified media stream from this channel.

This methods requires StreamedMediaChannel::FeatureStreams to be ready.

Parameters
streamMedia stream to remove.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
streamRemoved(), streams(), streamsForType()
PendingOperation * Tp::StreamedMediaChannel::removeStreams ( const StreamedMediaStreams streams)

Remove the specified media streams from this channel.

This methods requires StreamedMediaChannel::FeatureStreams to be ready.

Parameters
streamsList of media streams to remove.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
streamRemoved(), streams(), streamsForType()
bool Tp::StreamedMediaChannel::handlerStreamingRequired ( ) const

Check whether media streaming by the handler is required for this channel.

For channels with the TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING interface, the main handler of the channel is responsible for doing the actual streaming, for instance by calling createFarsightChannel(channel) from TelepathyQt-Farsight library and using the telepathy-farsight API on the resulting TfChannel.

This method requires StreamedMediaChannel::FeatureCore to be ready.

Returns
true if required, false otherwise.
LocalHoldState Tp::StreamedMediaChannel::localHoldState ( ) const

Return the local hold state for this channel.

Whether the local user has placed this channel on hold.

This method requires StreamedMediaChannel::FeatureHoldState to be ready.

Returns
The local hold state as LocalHoldState.
See Also
requestHold(), localHoldStateChanged()
LocalHoldStateReason Tp::StreamedMediaChannel::localHoldStateReason ( ) const

Return the reason why localHoldState() changed to its current value.

This method requires StreamedMediaChannel::FeatureLocalHoldState to be ready.

Returns
The local hold state reason as LocalHoldStateReason.
See Also
requestHold(), localHoldStateChanged()
PendingOperation * Tp::StreamedMediaChannel::requestHold ( bool  hold)

Request that the channel be put on hold (be instructed not to send any media streams to you) or be taken off hold.

If the CM can immediately tell that the requested state change could not possibly succeed, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_AVAILABLE. If the requested state is the same as the current state, the resulting PendingOperation will finish successfully.

Otherwise, the channel's local hold state will change to LocalHoldStatePendingHold or LocalHoldStatePendingUnhold (as appropriate), then the resulting PendingOperation will finish successfully.

The eventual success or failure of the request is indicated by a subsequent localHoldStateChanged() signal, changing the local hold state to LocalHoldStateHeld or LocalHoldStateUnheld.

If the channel has multiple streams, and the connection manager succeeds in changing the hold state of one stream but fails to change the hold state of another, it will attempt to revert all streams to their previous hold states.

If the channel does not support the TP_QT_IFACE_CHANNEL_INTERFACE_HOLD interface, the PendingOperation will fail with error code TP_QT_ERROR_NOT_IMPLEMENTED.

Parameters
holdA boolean indicating whether or not the channel should be on hold
Returns
A PendingOperation which will emit PendingOperation::finished when the request finishes.
See Also
localHoldState(), localHoldStateReason(), localHoldStateChanged()
void Tp::StreamedMediaChannel::streamAdded ( const Tp::StreamedMediaStreamPtr &  stream)
signal

Emitted when a media stream is added to this channel.

Parameters
streamThe media stream that was added.
See Also
streams(), streamsForType(), streamRemoved()
void Tp::StreamedMediaChannel::streamRemoved ( const Tp::StreamedMediaStreamPtr &  stream)
signal

Emitted when a media stream is removed from this channel.

Parameters
streamThe media stream that was removed.
See Also
streams(), streamsForType(), streamAdded()
void Tp::StreamedMediaChannel::streamDirectionChanged ( const Tp::StreamedMediaStreamPtr &  stream,
Tp::MediaStreamDirection  direction,
Tp::MediaStreamPendingSend  pendingSend 
)
signal

Emitted when a media stream direction changes.

Parameters
streamThe media stream which the direction changed.
directionThe new direction of the stream that changed.
pendingSendThe new pending send flags of the stream that changed.
See Also
StreamedMediaStream::direction()
void Tp::StreamedMediaChannel::streamStateChanged ( const Tp::StreamedMediaStreamPtr &  stream,
Tp::MediaStreamState  state 
)
signal

Emitted when a media stream state changes.

Parameters
streamThe media stream which the state changed.
stateThe new state of the stream that changed.
See Also
StreamedMediaStream::state()
void Tp::StreamedMediaChannel::streamError ( const Tp::StreamedMediaStreamPtr &  stream,
Tp::MediaStreamError  errorCode,
const QString &  errorMessage 
)
signal

Emitted when an error occurs on a media stream.

Parameters
streamThe media stream which the error occurred.
errorCodeThe error code.
errorMessageThe error message.
void Tp::StreamedMediaChannel::localHoldStateChanged ( Tp::LocalHoldState  state,
Tp::LocalHoldStateReason  reason 
)
signal

Emitted when the local hold state of this channel changes.

Parameters
stateThe new local hold state of this channel.
reasonThe reason why the change occurred.
See Also
localHoldState(), localHoldStateReason()

Member Data Documentation

const Feature Tp::StreamedMediaChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the StreamedMediaChannel object usable.

This is currently the same as Channel::FeatureCore, but may change to include more.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

See Also
awaitingLocalAnswer(), awaitingRemoteAnswer(), acceptCall(), hangupCall(), handlerStreamingRequired()
const Feature Tp::StreamedMediaChannel::FeatureStreams
static

Feature used in order to access media stream specific methods.

See media stream specific methods' documentation for more details.

See Also
streams(), streamsForType(), requestStream(), requestStreams(), streamAdded() removeStream(), removeStreams(), streamRemoved(), streamDirectionChanged(), streamStateChanged(), streamError()
const Feature Tp::StreamedMediaChannel::FeatureLocalHoldState
static

Feature used in order to access local hold state info.

See local hold state specific methods' documentation for more details.

See Also
localHoldState(), localHoldStateReason(), requestHold(), localHoldStateChanged()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00280.html0000644000175100017520000013461212530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceCellularInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Signals

void IMSIChanged (const QString &IMSI)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceCellularInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceCellularInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceCellularInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceCellularInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceCellularInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyMessageValidityPeriod () const
 
Tp::PendingOperationsetPropertyMessageValidityPeriod (uint newValue)
 
Tp::PendingVariantrequestPropertyOverrideMessageServiceCentre () const
 
Tp::PendingOperationsetPropertyOverrideMessageServiceCentre (bool newValue)
 
Tp::PendingVariantrequestPropertyMessageServiceCentre () const
 
Tp::PendingOperationsetPropertyMessageServiceCentre (QString newValue)
 
Tp::PendingVariantrequestPropertyIMSI () const
 
Tp::PendingVariantrequestPropertyMessageReducedCharacterSet () const
 
Tp::PendingOperationsetPropertyMessageReducedCharacterSet (bool newValue)
 
Tp::PendingVariantrequestPropertyMessageNationalCharacterSet () const
 
Tp::PendingOperationsetPropertyMessageNationalCharacterSet (QString newValue)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Cellular".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceCellularInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceCellularInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceCellularInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceCellularInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceCellularInterface::ConnectionInterfaceCellularInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceCellularInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceCellularInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Cellular", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceCellularInterface::requestPropertyMessageValidityPeriod ( ) const
inline

Asynchronous getter for the remote object property MessageValidityPeriod of type uint.

Define how long should the service centre try message delivery before giving up, failing delivery and deleting the message. A value of 0 means to use the service centre's default period.

The value specified is in seconds. Note that various protocols or implementations may round the value up (eg. to a minute or hour precision). The maximum validity period may vary depending on protocol or provider.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceCellularInterface::setPropertyMessageValidityPeriod ( uint  newValue)
inline

Asynchronous setter for the remote object property MessageValidityPeriod of type uint.

Define how long should the service centre try message delivery before giving up, failing delivery and deleting the message. A value of 0 means to use the service centre's default period.

The value specified is in seconds. Note that various protocols or implementations may round the value up (eg. to a minute or hour precision). The maximum validity period may vary depending on protocol or provider.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceCellularInterface::requestPropertyOverrideMessageServiceCentre ( ) const
inline

Asynchronous getter for the remote object property OverrideMessageServiceCentre of type bool.

If True, SMSes will be sent via the service centre specified by MessageServiceCentre . If False, the SIM's default SMSC will be used, ignoring the value of MessageServiceCentre.

It could be desirable for a configuration interface to remember the user's previous choice of custom SMSC, even if it's not in use. This boolean allows that choice to be saved as an account parameter by Mission Control, rather than the UI needing to save it elsewhere to be restored if the user wants to reactivate it.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceCellularInterface::setPropertyOverrideMessageServiceCentre ( bool  newValue)
inline

Asynchronous setter for the remote object property OverrideMessageServiceCentre of type bool.

If True, SMSes will be sent via the service centre specified by MessageServiceCentre . If False, the SIM's default SMSC will be used, ignoring the value of MessageServiceCentre.

It could be desirable for a configuration interface to remember the user's previous choice of custom SMSC, even if it's not in use. This boolean allows that choice to be saved as an account parameter by Mission Control, rather than the UI needing to save it elsewhere to be restored if the user wants to reactivate it.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceCellularInterface::requestPropertyMessageServiceCentre ( ) const
inline

Asynchronous getter for the remote object property MessageServiceCentre of type QString.

Address for the messaging service centre. Typically (as is the case for GSM's SMSC), it's the ISDN / telephony address (ie. a phone number). If OverrideMessageServiceCentre is False, this property's value should be ignored by the CM in favour of the SIM's default SMSC.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceCellularInterface::setPropertyMessageServiceCentre ( QString  newValue)
inline

Asynchronous setter for the remote object property MessageServiceCentre of type QString.

Address for the messaging service centre. Typically (as is the case for GSM's SMSC), it's the ISDN / telephony address (ie. a phone number). If OverrideMessageServiceCentre is False, this property's value should be ignored by the CM in favour of the SIM's default SMSC.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceCellularInterface::requestPropertyIMSI ( ) const
inline

Asynchronous getter for the remote object property IMSI of type QString.

The International Mobile Subscriber Identifier, if it exists. This would originate from a SIM card. If the IMSI is unknown, this will contain an empty string ("").

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceCellularInterface::requestPropertyMessageReducedCharacterSet ( ) const
inline

Asynchronous getter for the remote object property MessageReducedCharacterSet of type bool.

Determines how to encode SMSes containing characters that do not fit into a non-Unicode character set. If False (which SHOULD be the default), messages will be encoded as UCS-2 and sent with no loss of fidelity (at the potential financial cost of using twice as many SMSes); if True, the message will be recoded in an implementationâ€specific way to fit into a GSM reduced character set.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceCellularInterface::setPropertyMessageReducedCharacterSet ( bool  newValue)
inline

Asynchronous setter for the remote object property MessageReducedCharacterSet of type bool.

Determines how to encode SMSes containing characters that do not fit into a non-Unicode character set. If False (which SHOULD be the default), messages will be encoded as UCS-2 and sent with no loss of fidelity (at the potential financial cost of using twice as many SMSes); if True, the message will be recoded in an implementationâ€specific way to fit into a GSM reduced character set.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceCellularInterface::requestPropertyMessageNationalCharacterSet ( ) const
inline

Asynchronous getter for the remote object property MessageNationalCharacterSet of type QString.

Hint for the connection manager for the GSM character set that should be used to send SMSes. The connection manager SHOULD follow this hint unless it has other ways to determine a better encoding. If the value is "gsm" (which SHOULD be the default), SMSes will be encoded in the normal 7-bit GSM character set, eventually falling back to UCS-2; see the MessageReducedCharacterSet property for details. Other valid character sets are specified in the GSM standard and are, for instance, "turkey", "spain" or "portugal". If the SMS cannot be encoded using the requested character set the behaviour is implementation-specific, but it is RECOMMENDED that the connection manager should behave as if this property was set to "gsm".

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceCellularInterface::setPropertyMessageNationalCharacterSet ( QString  newValue)
inline

Asynchronous setter for the remote object property MessageNationalCharacterSet of type QString.

Hint for the connection manager for the GSM character set that should be used to send SMSes. The connection manager SHOULD follow this hint unless it has other ways to determine a better encoding. If the value is "gsm" (which SHOULD be the default), SMSes will be encoded in the normal 7-bit GSM character set, eventually falling back to UCS-2; see the MessageReducedCharacterSet property for details. Other valid character sets are specified in the GSM standard and are, for instance, "turkey", "spain" or "portugal". If the SMS cannot be encoded using the requested character set the behaviour is implementation-specific, but it is RECOMMENDED that the connection manager should behave as if this property was set to "gsm".

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceCellularInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ConnectionInterfaceCellularInterface::IMSIChanged ( const QString &  IMSI)
signal

Represents the signal IMSIChanged on the remote object.

Emitted when the IMSI for the connection changes. This sort of thing is rare, but could happen on cellular phones that allow hot-swapping of SIM cards. In the case of SIM swapping, this signal would be emitted twice; the first time while the SIM is being ejected (with an empty string), and the second time after a new SIM has been inserted (assuming that the IMSI can be determined from the new SIM).

Parameters
IMSI
The new IMSI value. This may be an empty string in the case where 
the IMSI is being reset or removed.
void Tp::Client::ConnectionInterfaceCellularInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01241.html0000644000175100017520000002311512530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceAudioControlInterface Member List

This is the complete list of members for Tp::Client::CallContentInterfaceAudioControlInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallContentInterfaceAudioControlInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceAudioControlInterface
CallContentInterfaceAudioControlInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceAudioControlInterface
CallContentInterfaceAudioControlInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentInterfaceAudioControlInterface
CallContentInterfaceAudioControlInterface(const Tp::Client::CallContentInterface &mainInterface)Tp::Client::CallContentInterfaceAudioControlInterfaceexplicit
CallContentInterfaceAudioControlInterface(const Tp::Client::CallContentInterface &mainInterface, QObject *parent)Tp::Client::CallContentInterfaceAudioControlInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentInterfaceAudioControlInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ReportInputVolume(int volume, int timeout=-1)Tp::Client::CallContentInterfaceAudioControlInterfaceinlineslot
ReportOutputVolume(int volume, int timeout=-1)Tp::Client::CallContentInterfaceAudioControlInterfaceinlineslot
requestAllProperties() const Tp::Client::CallContentInterfaceAudioControlInterfaceinline
requestPropertyRequestedInputVolume() const Tp::Client::CallContentInterfaceAudioControlInterfaceinline
requestPropertyRequestedOutputVolume() const Tp::Client::CallContentInterfaceAudioControlInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentInterfaceAudioControlInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00746_source.html0000644000175100017520000005555312530426257022536 0ustar00kaffeinekaffeine00000000000000 optional-interface-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
optional-interface-factory.h
1 
23 #ifndef _TelepathyQt_optional_interface_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_optional_interface_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QObject>
33 #include <QStringList>
34 #include <QtGlobal>
35 
36 namespace Tp
37 {
38 
39 class AbstractInterface;
40 
41 #ifndef DOXYGEN_SHOULD_SKIP_THIS
42 
43 class TP_QT_EXPORT OptionalInterfaceCache
44 {
45  Q_DISABLE_COPY(OptionalInterfaceCache)
46 
47 public:
48  explicit OptionalInterfaceCache(QObject *proxy);
49 
50  ~OptionalInterfaceCache();
51 
52 protected:
53  AbstractInterface *getCached(const QString &name) const;
54  void cache(AbstractInterface *interface) const;
55  QObject *proxy() const;
56 
57 private:
58  struct Private;
59  friend struct Private;
60  Private *mPriv;
61 };
62 
63 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
64 
65 template <typename DBusProxySubclass> class OptionalInterfaceFactory
66 #ifndef DOXYGEN_SHOULD_SKIP_THIS
67  : private OptionalInterfaceCache
68 #endif
69 {
70  Q_DISABLE_COPY(OptionalInterfaceFactory)
71 
72 public:
74  {
76  BypassInterfaceCheck
77  };
78 
79  inline OptionalInterfaceFactory(DBusProxySubclass *this_)
80  : OptionalInterfaceCache(this_)
81  {
82  }
83 
85  {
86  }
87 
88  inline QStringList interfaces() const { return mInterfaces; }
89 
90  inline bool hasInterface(const QString &name) const
91  {
92  return mInterfaces.contains(name);
93  }
94 
95  template <class Interface>
96  inline Interface *optionalInterface(
97  InterfaceSupportedChecking check = CheckInterfaceSupported) const
98  {
99  // Check for the remote object supporting the interface
100  // Note that extra whitespace on "name" declaration is significant to avoid
101  // vexing-parse
102  QString name( (QLatin1String(Interface::staticInterfaceName())) );
103  if (check == CheckInterfaceSupported && !mInterfaces.contains(name)) {
104  return 0;
105  }
106 
107  // If present or forced, delegate to OptionalInterfaceFactory
108  return interface<Interface>();
109  }
110 
111  template <typename Interface>
112  inline Interface *interface() const
113  {
114  AbstractInterface* interfaceMustBeASubclassOfAbstractInterface = static_cast<Interface *>(NULL);
115  Q_UNUSED(interfaceMustBeASubclassOfAbstractInterface);
116 
117  // If there is a interface cached already, return it
118  // Note that extra whitespace on "name" declaration is significant to avoid
119  // vexing-parse
120  QString name( (QLatin1String(Interface::staticInterfaceName())) );
121  AbstractInterface *cached = getCached(name);
122  if (cached)
123  return static_cast<Interface *>(cached);
124 
125  // Otherwise, cache and return a newly constructed proxy
126  Interface *interface = new Interface(
127  static_cast<DBusProxySubclass *>(proxy()));
128  cache(interface);
129  return interface;
130  }
131 
132 protected:
133  inline void setInterfaces(const QStringList &interfaces)
134  {
135  mInterfaces = interfaces;
136  }
137 
138 private:
139  QStringList mInterfaces;
140 };
141 
142 } // Tp
143 
144 #endif
Interface * optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) const
Definition: optional-interface-factory.h:96
bool hasInterface(const QString &name) const
Definition: optional-interface-factory.h:90
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
OptionalInterfaceFactory(DBusProxySubclass *this_)
Definition: optional-interface-factory.h:79
Interface * interface() const
Definition: optional-interface-factory.h:112
InterfaceSupportedChecking
Definition: optional-interface-factory.h:73
Definition: optional-interface-factory.h:75
~OptionalInterfaceFactory()
Definition: optional-interface-factory.h:84
QStringList interfaces() const
Definition: optional-interface-factory.h:88
void setInterfaces(const QStringList &interfaces)
Definition: optional-interface-factory.h:133
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x75.html0000644000175100017520000002632612530426260023116 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- u -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00742_source.html0000644000175100017520000003136612530426257022526 0ustar00kaffeinekaffeine00000000000000 not-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
not-filter.h
1 
23 #ifndef _TelepathyQt_not_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_not_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Filter>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 template <class T>
37 class NotFilter : public Filter<T>
38 {
39 public:
41  const SharedPtr<const Filter<T> > &filter = SharedPtr<const Filter<T> >())
42  {
44  }
45 
46  inline virtual ~NotFilter() { }
47 
48  inline virtual bool isValid() const
49  {
50  return mFilter && mFilter->isValid();
51  }
52 
53  inline virtual bool matches(const SharedPtr<T> &t) const
54  {
55  if (!isValid()) {
56  return false;
57  }
58 
59  return !mFilter->matches(t);
60  }
61 
62  inline SharedPtr<const Filter<T> > filter() const { return mFilter; }
63 
64 private:
65  NotFilter(const SharedPtr<const Filter<T> > &filter)
66  : Filter<T>(), mFilter(filter) { }
67 
68  SharedPtr<const Filter<T> > mFilter;
69 };
70 
71 } // Tp
72 
73 #endif
virtual ~NotFilter()
Definition: not-filter.h:46
virtual bool isValid() const
Definition: not-filter.h:48
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The NotFilter class provides a generic filter object to be used in conjunction of other filters...
Definition: not-filter.h:37
SharedPtr< const Filter< T > > filter() const
Definition: not-filter.h:62
static SharedPtr< NotFilter< T > > create(const SharedPtr< const Filter< T > > &filter=SharedPtr< const Filter< T > >())
Definition: not-filter.h:40
virtual bool matches(const SharedPtr< T > &t) const
Definition: not-filter.h:53


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01300.html0000644000175100017520000003354312530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceAvatarsInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceAvatarsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AvatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type)Tp::Client::ConnectionInterfaceAvatarsInterfacesignal
AvatarUpdated(uint contact, const QString &newAvatarToken)Tp::Client::ConnectionInterfaceAvatarsInterfacesignal
ClearAvatar(int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
ConnectionInterfaceAvatarsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAvatarsInterface
ConnectionInterfaceAvatarsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceAvatarsInterface
ConnectionInterfaceAvatarsInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceAvatarsInterface
ConnectionInterfaceAvatarsInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceAvatarsInterfaceexplicit
ConnectionInterfaceAvatarsInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceAvatarsInterface
GetAvatarRequirements(int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
GetAvatarTokens(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
GetKnownAvatarTokens(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceAvatarsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
RequestAvatar(uint contact, int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
RequestAvatars(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
requestPropertyMaximumAvatarBytes() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertyMaximumAvatarHeight() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertyMaximumAvatarWidth() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertyMinimumAvatarHeight() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertyMinimumAvatarWidth() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertyRecommendedAvatarHeight() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertyRecommendedAvatarWidth() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
requestPropertySupportedAvatarMIMETypes() const Tp::Client::ConnectionInterfaceAvatarsInterfaceinline
SetAvatar(const QByteArray &avatar, const QString &MIMEType, int timeout=-1)Tp::Client::ConnectionInterfaceAvatarsInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceAvatarsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00094.html0000644000175100017520000007046012530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::BaseCallContent Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/base-call.h>

Inherits Tp::DBusService.

Public Member Functions

virtual ~BaseCallContent ()
 
QVariantMap immutableProperties () const
 
bool registerObject (DBusError *error=NULL)
 
virtual QString uniqueName () const
 
QList
< AbstractCallContentInterfacePtr > 
interfaces () const
 
AbstractCallContentInterfacePtr interface (const QString &interfaceName) const
 
bool plugInterface (const AbstractCallContentInterfacePtr &interface)
 
QString name () const
 
Tp::MediaStreamType type () const
 
Tp::CallContentDisposition disposition () const
 
Tp::ObjectPathList streams () const
 
- Public Member Functions inherited from Tp::DBusService
 DBusService (const QDBusConnection &dbusConnection)
 
virtual ~DBusService ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseCallContentPtr create (const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)
 

Protected Member Functions

 BaseCallContent (const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)
 
virtual bool registerObject (const QString &busName, const QString &objectPath, DBusError *error)
 
void remove ()
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Constructor & Destructor Documentation

Tp::BaseCallContent::~BaseCallContent ( )
virtual
Tp::BaseCallContent::BaseCallContent ( const QDBusConnection &  dbusConnection,
BaseChannel channel,
const QString &  name,
const Tp::MediaStreamType type,
const Tp::MediaStreamDirection direction 
)
protected

Member Function Documentation

static BaseCallContentPtr Tp::BaseCallContent::create ( const QDBusConnection &  dbusConnection,
BaseChannel channel,
const QString &  name,
const Tp::MediaStreamType type,
const Tp::MediaStreamDirection direction 
)
inlinestatic
QVariantMap Tp::BaseCallContent::immutableProperties ( ) const
virtual

Return the immutable properties of this D-Bus service object.

Immutable properties cannot change after the object has been registered on the bus with registerObject().

Returns
The immutable properties of this D-Bus service object.

Implements Tp::DBusService.

bool Tp::BaseCallContent::registerObject ( DBusError error = NULL)
QString Tp::BaseCallContent::uniqueName ( ) const
virtual
QList< AbstractCallContentInterfacePtr > Tp::BaseCallContent::interfaces ( ) const
AbstractCallContentInterfacePtr Tp::BaseCallContent::interface ( const QString &  interfaceName) const
bool Tp::BaseCallContent::plugInterface ( const AbstractCallContentInterfacePtr &  interface)
QString Tp::BaseCallContent::name ( ) const
Tp::MediaStreamType Tp::BaseCallContent::type ( ) const
Tp::CallContentDisposition Tp::BaseCallContent::disposition ( ) const
Tp::ObjectPathList Tp::BaseCallContent::streams ( ) const
bool Tp::BaseCallContent::registerObject ( const QString &  busName,
const QString &  objectPath,
DBusError error 
)
protectedvirtual

Reimplemented from DBusService.

Reimplemented from Tp::DBusService.

void Tp::BaseCallContent::remove ( )
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01055.html0000644000175100017520000001332212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReceivedMessage::DeliveryDetails Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespaces.html0000644000175100017520000001002412530426260022426 0ustar00kaffeinekaffeine00000000000000 Namespace List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Namespace List
Here is a list of all namespaces with brief descriptions:


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2mo.png0000644000175100017520000000062312530426257021356 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆZIDATxí1Kû@ÆiƒØB…Ò¡(h¬"EÄI'ÁoàªèÚ©ßÀáâä 8ùçR-‚â B«TPˆï]z¥B’3 _Þã’»ç}ŸË]VÇ÷}€ÌÈdIæ®i쟯JØ–b¸šÍÃõ+º™|KÂ…°,[Pï\ʘMÆ¢#€ä…F`JݤìÛk³úA±àþè?ØY4ck6"¹Z)ê¸0SHM¨@ï㋺WÖmo¼4èHJ¨Àÿö+…QobŒút ¤ú’*Ð~êè8_+3Y-ñðÜå½÷ ˜PwA¶+^ý}ºì£+xìhÏ•MAE]€TD~EÞߴ^R)`ÖAùŸÏ9©pÔq-Û¾õÛ3tÝÊÆ›ˆÃTÐHÈ)€ ½Š’ICªxëd#1ôú§é€ m@Vüý?Zæßgo_½3-³\IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00153.html0000644000175100017520000002407412530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Service::CallInterfaceMuteAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::CallInterfaceMuteAdaptor Class Reference

#include <TelepathyQt/_gen/svc-call.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void RequestMuted (bool muted, const QDBusMessage &dbusMessage)
 

Signals

void MuteStateChanged (uint muteState)
 

Public Member Functions

uint LocalMuteState () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::CallInterfaceMuteAdaptor::LocalMuteState ( ) const

Return the value of the exported D-Bus object property LocalMuteState of type uint.

Adaptees should export this property as a Qt property named 'localMuteState' with type uint.

The current mute state of this part of the call. New Contents should inherit the value of this property from the parent Call1. Similarly, Streams should inherit it from the parent Content.

Returns
The value of exported property LocalMuteState.
void Tp::Service::CallInterfaceMuteAdaptor::RequestMuted ( bool  muted,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestMuted(bool muted, const Tp::Service::CallInterfaceMuteAdaptor::RequestMutedContextPtr &context);

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

Inform the CM that the Call, Content or Stream should be muted or unmuted. The CM will tell the streaming implementation to Mute Streams as required, and emit MuteStateChanged when done.

Parameters
muted
True if the client wishes to mute the Content or Call.
void Tp::Service::CallInterfaceMuteAdaptor::MuteStateChanged ( uint  muteState)
signal

Represents the exported D-Bus signal MuteStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void muteStateChanged(uint muteState);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
muteState
The new mute state.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01114.html0000644000175100017520000000770012530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeClient::Tube Member List

This is the complete list of members for Tp::StreamTubeClient::Tube, including all inherited members.

account() const Tp::StreamTubeClient::Tubeinline
channel() const Tp::StreamTubeClient::Tubeinline
isValid() const Tp::StreamTubeClient::Tubeinline
operator=(const Tube &other)Tp::StreamTubeClient::Tube
Tube()Tp::StreamTubeClient::Tube
Tube(const AccountPtr &account, const IncomingStreamTubeChannelPtr &channel)Tp::StreamTubeClient::Tube
Tube(const Tube &other)Tp::StreamTubeClient::Tube
~Tube()Tp::StreamTubeClient::Tube


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00969.html0000644000175100017520000001270112530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller0< Functor, R > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00468.html0000644000175100017520000015113012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ProtocolInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ConnectionManager>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > IdentifyAccount (const QVariantMap &parameters, int timeout=-1)
 
QDBusPendingReply< QString > NormalizeContact (const QString &contactID, int timeout=-1)
 

Public Member Functions

 ProtocolInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterface (Tp::DBusProxy *proxy)
 
 ProtocolInterface (const Tp::Client::ConnectionManagerInterface &mainInterface)
 
 ProtocolInterface (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyParameters () const
 
Tp::PendingVariantrequestPropertyConnectionInterfaces () const
 
Tp::PendingVariantrequestPropertyRequestableChannelClasses () const
 
Tp::PendingVariantrequestPropertyVCardField () const
 
Tp::PendingVariantrequestPropertyEnglishName () const
 
Tp::PendingVariantrequestPropertyIcon () const
 
Tp::PendingVariantrequestPropertyAuthenticationTypes () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ProtocolInterface::ProtocolInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterface::ProtocolInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterface::ProtocolInterface ( Tp::DBusProxy proxy)

Creates a ProtocolInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ProtocolInterface::ProtocolInterface ( const Tp::Client::ConnectionManagerInterface mainInterface)
explicit

Creates a ProtocolInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ProtocolInterface::ProtocolInterface ( const Tp::Client::ConnectionManagerInterface mainInterface,
QObject *  parent 
)

Creates a ProtocolInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ProtocolInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Protocol", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyParameters ( ) const
inline

Asynchronous getter for the remote object property Parameters of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyConnectionInterfaces ( ) const
inline

Asynchronous getter for the remote object property ConnectionInterfaces of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyRequestableChannelClasses ( ) const
inline

Asynchronous getter for the remote object property RequestableChannelClasses of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyVCardField ( ) const
inline

Asynchronous getter for the remote object property VCardField of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyEnglishName ( ) const
inline

Asynchronous getter for the remote object property EnglishName of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyIcon ( ) const
inline

Asynchronous getter for the remote object property Icon of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterface::requestPropertyAuthenticationTypes ( ) const
inline

Asynchronous getter for the remote object property AuthenticationTypes of 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
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ProtocolInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::ProtocolInterface::IdentifyAccount ( const QVariantMap &  parameters,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method IdentifyAccount on the remote object.

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.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
parameters
A set of parameters as would be provided to RequestConnection
timeoutThe timeout in milliseconds.
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.
QDBusPendingReply<QString> Tp::Client::ProtocolInterface::NormalizeContact ( const QString &  contactID,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NormalizeContact on the remote object.

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.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contactID
The identifier of a contact in this protocol
timeoutThe timeout in milliseconds.
Returns
The identifier of a contact in this protocol, normalized as much as 
possible
void Tp::Client::ProtocolInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00212.html0000644000175100017520000002752012530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceRoomAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceRoomAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Member Functions

QString RoomName () const
 
QString Server () const
 
QString Creator () const
 
uint CreatorHandle () const
 
qlonglong CreationTimestamp () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelInterfaceRoomAdaptor::RoomName ( ) const

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

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

The human-readable identifier of a chat room. Note that if non-empty, this property (and perhaps also Server ) should be sufficient in a channel request to join the room. XMPP MUCs have a room name concept which is more like a topic, except more persistent. This D-Bus property is not this XMPP room name, but the bit before the @ in the room jid; see ChannelInterfaceRoomConfigInterface::Title for that concept.

This property cannot change during the lifetime of the channel. It should appear in the Allowed_Properties of a Requestable_Channel_Class for the connection if rooms on this connection have human-readable names, and can be joined by name.

Returns
The value of exported property RoomName.
QString Tp::Service::ChannelInterfaceRoomAdaptor::Server ( ) const

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

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

For protocols with a concept of chatrooms on multiple servers with different DNS names (like XMPP), the DNS name of the server hosting this channel (for example, "conference.jabber.org" or "groupchat.google.com"). For other protocols, the empty string.

This property cannot change during the lifetime of the channel. It should appear in the Allowed_Properties of a Requestable_Channel_Class for the connection if and only if non-empty values are supported.

Returns
The value of exported property Server.
QString Tp::Service::ChannelInterfaceRoomAdaptor::Creator ( ) const

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

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

The normalized contact ID representing who created the room; or the empty string if unknown.
Returns
The value of exported property Creator.
uint Tp::Service::ChannelInterfaceRoomAdaptor::CreatorHandle ( ) const

Return the value of the exported D-Bus object property CreatorHandle of type uint.

Adaptees should export this property as a Qt property named 'creatorHandle' with type uint.

The handle corresponding to Creator ; or 0 if Creator is unknown.
Returns
The value of exported property CreatorHandle.
qlonglong Tp::Service::ChannelInterfaceRoomAdaptor::CreationTimestamp ( ) const

Return the value of the exported D-Bus object property CreationTimestamp of type qlonglong.

Adaptees should export this property as a Qt property named 'creationTimestamp' with type qlonglong.

A unix timestamp indicating when the room was created; or INT_MAX64 if unknown.
Returns
The value of exported property CreationTimestamp.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01183.html0000644000175100017520000000444412530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PropertyFlagsChange Member List

This is the complete list of members for Tp::PropertyFlagsChange, including all inherited members.

newFlagsTp::PropertyFlagsChange
propertyIDTp::PropertyFlagsChange


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x66.html0000644000175100017520000002577312530426260024136 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- f -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00527.html0000644000175100017520000012200312530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::StreamedMediaStream Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamedMediaStream Class Reference

The StreamedMediaStream class represents a Telepathy streamed media stream. More...

#include <TelepathyQt/StreamedMediaStream>

Inherits Tp::Object, and Tp::ReadyObject.

Public Types

enum  SendingState { SendingStateNone, SendingStatePendingSend, SendingStateSending }
 

Signals

void localSendingStateChanged (Tp::StreamedMediaStream::SendingState localSendingState)
 
void remoteSendingStateChanged (Tp::StreamedMediaStream::SendingState remoteSendingState)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

 ~StreamedMediaStream ()
 
StreamedMediaChannelPtr channel () const
 
uint id () const
 
ContactPtr contact () const
 
MediaStreamState state () const
 
MediaStreamType type () const
 
SendingState localSendingState () const
 
SendingState remoteSendingState () const
 
bool sending () const
 
bool receiving () const
 
bool localSendingRequested () const
 
bool remoteSendingRequested () const
 
MediaStreamDirection direction () const
 
MediaStreamPendingSend pendingSend () const
 
PendingOperationrequestSending (bool send)
 
PendingOperationrequestReceiving (bool receive)
 
PendingOperationrequestDirection (MediaStreamDirection direction)
 
PendingOperationrequestDirection (bool send, bool receive)
 
PendingOperationstartDTMFTone (DTMFEvent event)
 
PendingOperationstopDTMFTone ()
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The StreamedMediaStream class represents a Telepathy streamed media stream.

Instances of this class cannot be constructed directly; the only way to get one is via StreamedMediaChannel.

Member Enumeration Documentation

Enumerator
SendingStateNone 
SendingStatePendingSend 
SendingStateSending 

Constructor & Destructor Documentation

Tp::StreamedMediaStream::~StreamedMediaStream ( )

Class destructor.

Member Function Documentation

StreamedMediaChannelPtr Tp::StreamedMediaStream::channel ( ) const

Return the channel owning this media stream.

Returns
A pointer to the StreamedMediaChannel object.
uint Tp::StreamedMediaStream::id ( ) const

Return the id of this media stream.

Returns
An integer representing the media stream id.
ContactPtr Tp::StreamedMediaStream::contact ( ) const

Return the contact who this media stream is with.

Returns
A pointer to the Contact object.
MediaStreamState Tp::StreamedMediaStream::state ( ) const

Return the state of this media stream.

Returns
The state as MediaStreamState.
MediaStreamType Tp::StreamedMediaStream::type ( ) const

Return the type of this media stream.

Returns
The type as MediaStreamType.
StreamedMediaStream::SendingState Tp::StreamedMediaStream::localSendingState ( ) const

Return the media stream local sending state.

Returns
The local sending state as StreamedMediaStream::SendingState.
See Also
localSendingStateChanged()
StreamedMediaStream::SendingState Tp::StreamedMediaStream::remoteSendingState ( ) const

Return the media stream remote sending state.

Returns
The remote sending state as StreamedMediaStream::SendingState.
See Also
remoteSendingStateChanged()
bool Tp::StreamedMediaStream::sending ( ) const

Return whether media is being sent on this media stream.

Returns
true if media is being sent, false otherwise.
See Also
localSendingStateChanged()
bool Tp::StreamedMediaStream::receiving ( ) const

Return whether media is being received on this media stream.

Returns
true if media is being received, false otherwise.
See Also
remoteSendingStateChanged()
bool Tp::StreamedMediaStream::localSendingRequested ( ) const

Return whether the local user has been asked to send media by the remote user on this media stream.

Returns
true if the local user has been asked to send media by the remote user, false otherwise.
See Also
localSendingStateChanged()
bool Tp::StreamedMediaStream::remoteSendingRequested ( ) const

Return whether the remote user has been asked to send media by the local user on this media stream.

Returns
true if the remote user has been asked to send media by the local user, false otherwise.
See Also
remoteSendingStateChanged()
MediaStreamDirection Tp::StreamedMediaStream::direction ( ) const

Return the direction of this media stream.

Returns
The direction as MediaStreamDirection.
See Also
localSendingState(), remoteSendingState(), localSendingStateChanged(), remoteSendingStateChanged(), sending(), receiving()
MediaStreamPendingSend Tp::StreamedMediaStream::pendingSend ( ) const

Return the pending send flags of this media stream.

Returns
The pending send flags as MediaStreamPendingSend.
See Also
localSendingStateChanged()
PendingOperation * Tp::StreamedMediaStream::requestSending ( bool  send)

Request that media starts or stops being sent on this media stream.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
localSendingStateChanged(), requestDirection()
PendingOperation * Tp::StreamedMediaStream::requestReceiving ( bool  receive)

Request that the remote contact stops or starts sending on this media stream.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
remoteSendingStateChanged(), requestDirection()
PendingOperation * Tp::StreamedMediaStream::requestDirection ( MediaStreamDirection  direction)

Request a change in the direction of this media stream. In particular, this might be useful to stop sending media of a particular type, or inform the peer that you are no longer using media that is being sent to you.

Parameters
directionThe new direction.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
localSendingStateChanged(), remoteSendingStateChanged()
PendingOperation * Tp::StreamedMediaStream::requestDirection ( bool  send,
bool  receive 
)

Request a change in the direction of this media stream.

In particular, this might be useful to stop sending media of a particular type, or inform the peer that you are no longer using media that is being sent to you.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
requestDirection(Tp::MediaStreamDirection direction), localSendingStateChanged(), remoteSendingStateChanged()
PendingOperation * Tp::StreamedMediaStream::startDTMFTone ( DTMFEvent  event)

Start sending a DTMF tone on this media stream.

Where possible, the tone will continue until stopDTMFTone() is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation may emit a fixed-length tone, and the stopDTMFTone() method call should return TP_QT_ERROR_NOT_AVAILABLE.

If the channel() does not support the TP_QT_IFACE_CHANNEL_INTERFACE_DTMF interface, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_IMPLEMENTED.

Parameters
eventA numeric event code from the DTMFEvent enum.
Returns
A PendingOperation which will emit PendingOperation::finished when the request finishes.
See Also
stopDTMFTone()
PendingOperation * Tp::StreamedMediaStream::stopDTMFTone ( )

Stop sending any DTMF tone which has been started using the startDTMFTone() method.

If there is no current tone, the resulting PendingOperation will finish successfully.

If continuous tones are not supported by this media stream, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_AVAILABLE.

If the channel() does not support the TP_QT_IFACE_CHANNEL_INTERFACE_DTMF interface, the resulting PendingOperation will fail with error code TP_QT_ERROR_NOT_IMPLEMENTED.

Returns
A PendingOperation which will emit PendingOperation::finished when the request finishes.
See Also
startDTMFTone()
void Tp::StreamedMediaStream::localSendingStateChanged ( Tp::StreamedMediaStream::SendingState  localSendingState)
signal

Emitted when the local sending state of this media stream changes.

Parameters
localSendingStateThe new local sending state of this media stream.
See Also
localSendingState()
void Tp::StreamedMediaStream::remoteSendingStateChanged ( Tp::StreamedMediaStream::SendingState  remoteSendingState)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00281.html0000644000175100017520000003223312530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceClientTypesAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceClientTypesAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ContactClientTypes GetClientTypes (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
QStringList RequestClientTypes (uint contact, const QDBusMessage &dbusMessage)
 

Signals

void ClientTypesUpdated (uint contact, const QStringList &clientTypes)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ContactClientTypes Tp::Service::ConnectionInterfaceClientTypesAdaptor::GetClientTypes ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getClientTypes(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceClientTypesAdaptor::GetClientTypesContextPtr &context);

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

Return the client types of the given contacts, if they are already known. If any of the given contacts' client types are not known, request their current client types, but return immediately without waiting for a reply; if a reply with a non-empty client type array is later received for those contacts, the ClientTypesUpdated signal will be emitted for them. This method is appropriate for "lazy" client type finding, for instance displaying the client types (if available) of everyone in your contact list.

Parameters
contacts
The contacts whose client types should be returned or signalled.
Returns
The contacts&apos; client types, if already known. Contacts whose 
client types are not already known are omitted from the mapping; 
contacts known to have no client type information appear in the 
mapping with an empty list.
QStringList Tp::Service::ConnectionInterfaceClientTypesAdaptor::RequestClientTypes ( uint  contact,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestClientTypes(uint contact, const Tp::Service::ConnectionInterfaceClientTypesAdaptor::RequestClientTypesContextPtr &context);

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

Return the current client types of the given contact. If necessary, make a request to the server for up-to-date information, and wait for a reply. This method is appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions.

Parameters
contact
The contact whose client types should be returned.
Returns
The contact&apos;s client types. It MAY be empty, indicating that 
no client type information was found.
void Tp::Service::ConnectionInterfaceClientTypesAdaptor::ClientTypesUpdated ( uint  contact,
const QStringList &  clientTypes 
)
signal

Represents the exported D-Bus signal ClientTypesUpdated on this object.

Adaptees should export this signal as a Qt signal with the following signature: void clientTypesUpdated(uint contact, const QStringList& clientTypes);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
The contact.
clientTypes
The contact&apos;s client types, or an empty list to indicate that 
nothing is known about the contact&apos;s client types.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01242.html0000644000175100017520000002522312530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceDTMFInterface Member List

This is the complete list of members for Tp::Client::CallContentInterfaceDTMFInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallContentInterfaceDTMFInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceDTMFInterface
CallContentInterfaceDTMFInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceDTMFInterface
CallContentInterfaceDTMFInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentInterfaceDTMFInterface
CallContentInterfaceDTMFInterface(const Tp::Client::CallContentInterface &mainInterface)Tp::Client::CallContentInterfaceDTMFInterfaceexplicit
CallContentInterfaceDTMFInterface(const Tp::Client::CallContentInterface &mainInterface, QObject *parent)Tp::Client::CallContentInterfaceDTMFInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentInterfaceDTMFInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MultipleTones(const QString &tones, int timeout=-1)Tp::Client::CallContentInterfaceDTMFInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::CallContentInterfaceDTMFInterfaceinline
requestPropertyCurrentlySendingTones() const Tp::Client::CallContentInterfaceDTMFInterfaceinline
requestPropertyDeferredTones() const Tp::Client::CallContentInterfaceDTMFInterfaceinline
SendingTones(const QString &tones)Tp::Client::CallContentInterfaceDTMFInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
StartTone(uchar event, int timeout=-1)Tp::Client::CallContentInterfaceDTMFInterfaceinlineslot
staticInterfaceName()Tp::Client::CallContentInterfaceDTMFInterfaceinlinestatic
StoppedTones(bool cancelled)Tp::Client::CallContentInterfaceDTMFInterfacesignal
StopTone(int timeout=-1)Tp::Client::CallContentInterfaceDTMFInterfaceinlineslot
TonesDeferred(const QString &tones)Tp::Client::CallContentInterfaceDTMFInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00026.html0000644000175100017520000000602312530426257021131 0ustar00kaffeinekaffeine00000000000000 protocols/main.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocols/main.cpp
#include <TelepathyQt/Debug>
#include <TelepathyQt/Constants>
#include <TelepathyQt/Types>
#include <QDebug>
#include <QtCore>
#include "protocols.h"
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
Protocols protocols;
return app.exec();
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x76.html0000644000175100017520000001237512530426260023116 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- v -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00340.html0000644000175100017520000005710512530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::DBusProxyFactory Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching and making them ready as appropriate. More...

#include <TelepathyQt/DBusProxyFactory>

Inherits QObject, and Tp::RefCounted.

Inherited by Tp::ChannelFactory, and Tp::FixedFeatureFactory.

Public Member Functions

virtual ~DBusProxyFactory ()
 
const QDBusConnection & dbusConnection () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 DBusProxyFactory (const QDBusConnection &bus)
 
DBusProxyPtr cachedProxy (const QString &busName, const QString &objectPath) const
 
PendingReadynowHaveProxy (const DBusProxyPtr &proxy) const
 
virtual QString finalBusNameFrom (const QString &uniqueOrWellKnown) const =0
 
virtual PendingOperationinitialPrepare (const DBusProxyPtr &proxy) const
 
virtual PendingOperationreadyPrepare (const DBusProxyPtr &proxy) const
 
virtual Features featuresFor (const DBusProxyPtr &proxy) const =0
 

Detailed Description

The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching and making them ready as appropriate.

Constructor & Destructor Documentation

Tp::DBusProxyFactory::~DBusProxyFactory ( )
virtual

Class destructor.

Tp::DBusProxyFactory::DBusProxyFactory ( const QDBusConnection &  bus)
protected

Construct a new DBusProxyFactory object.

The intention for storing the bus here is that it generally doesn't make sense to construct proxies for multiple buses in the same context. Allowing that would lead to more complex keying needs in the cache, as well.

Parameters
busThe D-Bus bus connection for the objects constructed using this factory.

Member Function Documentation

const QDBusConnection & Tp::DBusProxyFactory::dbusConnection ( ) const

Return the D-Bus connection all of the proxies from this factory communicate with.

Returns
A QDBusConnection object.
DBusProxyPtr Tp::DBusProxyFactory::cachedProxy ( const QString &  busName,
const QString &  objectPath 
) const
protected

Return a cached proxy with the given busName and objectPath.

If a proxy has not been previously put into the cache by nowHaveProxy for those identifying attributes, or a previously cached proxy has since been invalidated and/or destroyed, a Null shared pointer is returned instead.

Parameters
busNameBus name of the proxy to return.
objectPathObject path of the proxy to return.
Returns
A pointer to the DBusProxy object, if any.
PendingReady * Tp::DBusProxyFactory::nowHaveProxy ( const DBusProxyPtr &  proxy) const
protected

Should be called by subclasses when they have a proxy, be it a newly-constructed one or one from the cache.

This function will then do the rest of the factory work, including caching the proxy if it's not cached already, doing any initialPrepare()/readyPrepare() work if appropriate, and making the features from featuresFor() ready if they aren't already.

The returned PendingReady only finishes when the initialPrepare() and readyPrepare() operations for the proxy has completed, and the requested features have all been made ready (or found unable to be made ready). Note that this might have happened already before calling this function, if the proxy was not a newly created one, but was looked up from the cache. DBusProxyFactory handles the necessary subleties for this to work.

Access to the proxy instance is allowed as soon as this method returns through PendingReady::proxy(), if the proxy is needed in a context where it's not required to be ready.

Parameters
proxyThe proxy which the factory should now make sure is prepared and made ready.
Returns
A PendingReady operation which will emit PendingReady::finished when the proxy is usable.
QString Tp::DBusProxyFactory::finalBusNameFrom ( const QString &  uniqueOrWellKnown) const
protectedpure virtual

"Normalize" a bus name according to the rules for the proxy class to construct.

Should be implemented by subclasses to transform the application-specified name uniqueOrWellKnown to whatever the proxy constructed for that name would have in its DBusProxy::busName() in the end.

For StatelessDBusProxy sub-classes this should mostly be an identity transform, while for StatefulDBusProxy sub-classes StatefulDBusProxy::uniqueNameFrom() or an equivalent thereof should be used in most cases.

If this is not implemented correctly, caching won't work properly.

Parameters
uniqueOrWellKnownAny valid D-Bus service name, either unique or well-known.
Returns
Whatever that name would turn to, when a proxy is constructed for it.

Implemented in Tp::ChannelFactory, Tp::AccountFactory, and Tp::ConnectionFactory.

PendingOperation * Tp::DBusProxyFactory::initialPrepare ( const DBusProxyPtr &  proxy) const
protectedvirtual

Allows subclasses to do arbitrary manipulation on the proxy before it is attempted to be made ready.

If a non-NULL operation is returned, the completion of that operation is waited for before starting to make the object ready whenever nowHaveProxy() is called the first time around for a given proxy.

Todo:
FIXME actually implement this... :) Currently just a vtable placeholder.
Parameters
proxyThe just-constructed proxy to be prepared.
Returns
NULL ie. nothing to do.
PendingOperation * Tp::DBusProxyFactory::readyPrepare ( const DBusProxyPtr &  proxy) const
protectedvirtual

Allows subclasses to do arbitrary manipulation on the proxy after it has been made ready.

If a non-NULL operation is returned, the completion of that operation is waited for before signaling that the object is ready for use after ReadyObject::becomeReady() for it has finished whenever nowHaveProxy() is called the first time around for a given proxy.

Todo:
FIXME actually implement this... :) Currently just a vtable placeholder.
Parameters
proxyThe just-readified proxy to be prepared.
Returns
NULL ie. nothing to do.
Features Tp::DBusProxyFactory::featuresFor ( const DBusProxyPtr &  proxy) const
protectedpure virtual

Return the features which should be made ready on a given proxy.

This can be used to implement instance-specific features based on arbitrary criteria. FixedFeatureFactory implements this as a fixed set of features independent of the instance, however.

It should be noted that if an empty set of features is returned, ReadyObject::becomeReady() is not called at all. In other words, any "core feature" is not automatically added to the requested features. This is to enable setting a factory to not make proxies ready at all, which is useful eg. in the case of account editing UIs which aren't interested in the state of Connection objects for the Account objects they're editing.

Parameters
proxyThe proxy on which the returned features will be made ready.
Returns
A list of Feature objects.

Implemented in Tp::ChannelFactory, and Tp::FixedFeatureFactory.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01301.html0000644000175100017520000002212312530426260021117 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceBalanceInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceBalanceInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
BalanceChanged(const Tp::CurrencyAmount &balance)Tp::Client::ConnectionInterfaceBalanceInterfacesignal
ConnectionInterfaceBalanceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceBalanceInterface
ConnectionInterfaceBalanceInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceBalanceInterface
ConnectionInterfaceBalanceInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceBalanceInterface
ConnectionInterfaceBalanceInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceBalanceInterfaceexplicit
ConnectionInterfaceBalanceInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceBalanceInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceBalanceInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceBalanceInterfaceinline
requestPropertyAccountBalance() const Tp::Client::ConnectionInterfaceBalanceInterfaceinline
requestPropertyManageCreditURI() const Tp::Client::ConnectionInterfaceBalanceInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceBalanceInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00095.html0000644000175100017520000006431212530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::BaseCallContentDTMFInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Call.Content.Interface.DTMF. More...

#include <TelepathyQt/BaseCall>

Inherits Tp::AbstractCallContentInterface.

Public Types

typedef Callback2< void, uchar,
DBusError * > 
StartToneCallback
 
typedef Callback1< void,
DBusError * > 
StopToneCallback
 
typedef Callback2< void, const
QString &, DBusError * > 
MultipleTonesCallback
 

Public Member Functions

virtual ~BaseCallContentDTMFInterface ()
 
QVariantMap immutableProperties () const
 
bool currentlySendingTones () const
 
void setCurrentlySendingTones (bool sendingTones)
 
QString deferredTones () const
 
void setDeferredTones (const QString &deferredTones)
 
void setStartToneCallback (const StartToneCallback &cb)
 
void setStopToneCallback (const StopToneCallback &cb)
 
void setMultipleTonesCallback (const MultipleTonesCallback &cb)
 
- Public Member Functions inherited from Tp::AbstractCallContentInterface
 AbstractCallContentInterface (const QString &interfaceName)
 
virtual ~AbstractCallContentInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseCallContentDTMFInterfacePtr 
create ()
 
template<typename BaseCallContentDTMFInterfaceSubclass >
static SharedPtr
< BaseCallContentDTMFInterfaceSubclass > 
create ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Call.Content.Interface.DTMF.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseCallContentDTMFInterface::~BaseCallContentDTMFInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseCallContentDTMFInterfacePtr Tp::BaseCallContentDTMFInterface::create ( )
inlinestatic
template<typename BaseCallContentDTMFInterfaceSubclass >
static SharedPtr<BaseCallContentDTMFInterfaceSubclass> Tp::BaseCallContentDTMFInterface::create ( )
inlinestatic
QVariantMap Tp::BaseCallContentDTMFInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

bool Tp::BaseCallContentDTMFInterface::currentlySendingTones ( ) const
void Tp::BaseCallContentDTMFInterface::setCurrentlySendingTones ( bool  sendingTones)
QString Tp::BaseCallContentDTMFInterface::deferredTones ( ) const
void Tp::BaseCallContentDTMFInterface::setDeferredTones ( const QString &  deferredTones)
void Tp::BaseCallContentDTMFInterface::setStartToneCallback ( const StartToneCallback cb)
void Tp::BaseCallContentDTMFInterface::setStopToneCallback ( const StopToneCallback cb)
void Tp::BaseCallContentDTMFInterface::setMultipleTonesCallback ( const MultipleTonesCallback cb)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01056.html0000644000175100017520000001371512530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00900.html0000644000175100017520000001200412530426257021126 0ustar00kaffeinekaffeine00000000000000 Types and constants
   Home · All Classes · All Namespaces · Modules · Functions · Files
Types and constants

Modules

 Utility string constants
 
 Flag type constants
 
 Enumerated type constants
 
 Interface string constants
 
 Error string constants
 
 Structure types
 
 List types
 
 Mapping types
 

Detailed Description

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Enumerated, flag, structure, list and mapping types and utility constants.

Enumerated, flag, structure, list and mapping types and utility constants.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01370.html0000644000175100017520000000754012530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAddressingAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceAddressingAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetContactsByURI(const QStringList &URIs, const QStringList &interfaces, const QDBusMessage &dbusMessage, Tp::ContactAttributesMap &attributes)Tp::Service::ConnectionInterfaceAddressingAdaptorslot
GetContactsByVCardField(const QString &field, const QStringList &addresses, const QStringList &interfaces, const QDBusMessage &dbusMessage, Tp::ContactAttributesMap &attributes)Tp::Service::ConnectionInterfaceAddressingAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00154.html0000644000175100017520000001333212530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::CallMemberMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallMemberMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, uint >.

Public Member Functions

 CallMemberMap ()
 
 CallMemberMap (const QMap< uint, uint > &a)
 
CallMemberMapoperator= (const QMap< uint, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, uint>, but needed to have a discrete type in the Qt type system.

A mapping from handles to their current state in the call.

Constructor & Destructor Documentation

Tp::CallMemberMap::CallMemberMap ( )
inline
Tp::CallMemberMap::CallMemberMap ( const QMap< uint, uint > &  a)
inline

Member Function Documentation

CallMemberMap& Tp::CallMemberMap::operator= ( const QMap< uint, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01115.html0000644000175100017520000002340112530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer Member List

This is the complete list of members for Tp::StreamTubeServer, including all inherited members.

clientName() const Tp::StreamTubeServer
create(const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::StreamTubeServerstatic
create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false)Tp::StreamTubeServerstatic
create(const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false)Tp::StreamTubeServerstatic
create(const ClientRegistrarPtr &registrar, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false)Tp::StreamTubeServerstatic
exportedParameters() const Tp::StreamTubeServer
exportedTcpSocketAddress() const Tp::StreamTubeServer
exportTcpSocket(const QHostAddress &address, quint16 port, const QVariantMap &parameters=QVariantMap())Tp::StreamTubeServer
exportTcpSocket(const QTcpServer *server, const QVariantMap &parameters=QVariantMap())Tp::StreamTubeServer
exportTcpSocket(const QHostAddress &address, quint16 port, ParametersGenerator *generator)Tp::StreamTubeServer
exportTcpSocket(const QTcpServer *server, ParametersGenerator *generator)Tp::StreamTubeServer
isRegistered() const Tp::StreamTubeServer
monitorsConnections() const Tp::StreamTubeServer
newTcpConnection(const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const Tp::OutgoingStreamTubeChannelPtr &tube)Tp::StreamTubeServersignal
RefCounted()Tp::RefCountedinline
registrar() const Tp::StreamTubeServer
tcpConnectionClosed(const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const QString &error, const QString &message, const Tp::OutgoingStreamTubeChannelPtr &tube)Tp::StreamTubeServersignal
tcpConnections() const Tp::StreamTubeServer
tubeClosed(const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QString &error, const QString &message)Tp::StreamTubeServersignal
tubeRequested(const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints)Tp::StreamTubeServersignal
tubes() const Tp::StreamTubeServer
~RefCounted()Tp::RefCountedinlinevirtual
~StreamTubeServer()Tp::StreamTubeServervirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00469.html0000644000175100017520000004771712530426260021155 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ProtocolInterfaceAddressingAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolInterfaceAddressingAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

QString NormalizeVCardAddress (const QString &VCardField, const QString &VCardAddress, const QDBusMessage &dbusMessage)
 
QString NormalizeContactURI (const QString &URI, const QDBusMessage &dbusMessage)
 

Public Member Functions

QStringList AddressableVCardFields () const
 
QStringList AddressableURISchemes () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ProtocolInterfaceAddressingAdaptor::AddressableVCardFields ( ) const

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

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

The vCard fields that can be used to request a contact with normalized to lower case. If the URL vCard field is addressable, a colon, followed by the supported URI schemes will be concatenated.

For example: ["tel", "x-sip"].

The url vCard field MUST NOT appear here; see AddressableURISchemes instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.

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 AddressableVCardFields. The corresponding value is a list of strings, each followed with a semicolon and in the syntax of the "localestring" type from the Desktop Entry Specification.

Well-known vCard fields:

tel
The TEL vCard field. Used for phone numbers.
x-sip
The X-SIP vCard field. Used for SIP addresses.
x-aim
The X-AIM vCard field. Used for AIM user IDs.
x-icq
The X-ICQ vCard field. Used for ICQ UINs.
x-skype
The X-SKYPE vCard field. Used for Skype user names or telephone numbers. There is also a X-SKYPE-USERNAME field, but for Telepathy purposes, x-skype is preferred
x-groupwise
The X-GROUPWISE vCard field. Used for Groupwise contacts.
x-gadugadu
The X-GADUGADU vCard field. Used for Gadu-Gadu contacts.
x-jabber
The X-JABBER vCard field. Used for XMPP JIDs.
x-msn
The X-MSN vCard field. Used for MSN contacts.
x-yahoo
The X-YAHOO vCard field. Used for Yahoo! IDs.
x-facebook-id
Used for Facebook IDs in XMPP. If the user JID is "-12345@chat.facebook.com" then the x-facebook-id is "12345"
Returns
The value of exported property AddressableVCardFields.
QStringList Tp::Service::ProtocolInterfaceAddressingAdaptor::AddressableURISchemes ( ) const

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

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

The URI schemes that are supported by this protocol.

For example: ["tel", "sip"].

This property should only be used when the connection is offline. When it is connected the addressable URI schemes should be retrieved from the ConnectionInterfaceRequestsInterface::RequestableChannelClasses 's TargetURIScheme fixed-property instead.

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 AddressableURISchemes. The corresponding value is a list of strings, each followed with a semicolon and in the syntax of the "localestring" type from the Desktop Entry Specification.

Well-known URI schemes:

sip
SIP protocol. For example: sip:julien@example.com.
sips
Secure (encrypted) SIP protocol. For example: sips:julien@example.com.
tel
Used for telephone numbers. For example: tel:+12065551234.
xmpp
XMPP protocol. For example: xmpp:julien@example.com.
msnim
For the purposes of ProtocolInterfaceAddressingInterface , ConnectionInterfaceAddressingInterface , and org.freedesktop.Telepathy.Channel.Interface.Addressing1 , the verb part is ignored, and SHOULD be add; the contact field in the query string is used to identify the contact. For example: msnim:add?contact=julien.
aim
For the purposes of ProtocolInterfaceAddressingInterface , ConnectionInterfaceAddressingInterface , and org.freedesktop.Telepathy.Channel.Interface.Addressing1 , the verb part is ignored, and SHOULD be addbuddy; the screenname field in the query string is used to identify the contact. For example: aim:addbuddy?screenname=julien.
skype
Skype protocol. For example: skype:julien.
ymsgr
For the purposes of ProtocolInterfaceAddressingInterface , ConnectionInterfaceAddressingInterface , and org.freedesktop.Telepathy.Channel.Interface.Addressing1 , the verb part is ignored, and SHOULD be addfriend; the query string is used to identify the contact. For example: ymsgr:addfriend?julien.
gg
Gadu-Gadu protocol. For example: gg:julien.
Returns
The value of exported property AddressableURISchemes.
QString Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeVCardAddress ( const QString &  VCardField,
const QString &  VCardAddress,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void normalizeVCardAddress(const QString& VCardField, const QString& VCardAddress, const Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeVCardAddressContextPtr &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 vCard address. Where possible, this SHOULD return an address that would appear in the org.freedesktop.Telepathy.Connection.Interface.Addressing1/addresses attribute for a contact 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.

An example would be a vCard TEL field with a formatted number in the form of +1 (206) 555 1234, this would be normalized to +12065551234.

This method MAY simply raise NotImplemented on some protocols, if it has no use.

Parameters
VCardField
The vCard field of the address we are normalizing. The field name 
SHOULD be in lower case, and MUST appear in AddressableVCardFields.
VCardAddress
The address to normalize, which is assumed to belong to a contact 
(and not, for instance, a chatroom or server).
Returns
The vCard address, normalized as much as possible.
QString Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeContactURI ( const QString &  URI,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void normalizeContactURI(const QString& URI, const Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeContactURIContextPtr &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 URI. Where possible, this SHOULD return an address that would appear in the org.freedesktop.Telepathy.Connection.Interface.Addressing1/uris attribute for a contact 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.

If the URI has extra information beyond what's necessary to identify a particular contact, such as an XMPP resource or an action to carry out, this extra information SHOULD be removed. If all URIs in a scheme contain a verb or action (like aim, ymsgr and msnim URIs), then the verb SHOULD be replaced with the one specified in AddressableURISchemes .

This method is intended to normalize URIs stored in address books, for instance. In protocols like XMPP, if you vary the resource or action (query string), the URI still refers to the same high-level contact.

For instance, xmpp:romeo@Example.Com/Empathy?message;body=Hello would be normalized to xmpp:romeo@example.com, and aim:goim?screenname=Romeo%20M&message=Hello would be normalized to aim:addbuddy?screenname=romeom.

This method MAY simply raise NotImplemented on some protocols, if it has no use.

Parameters
URI
The URI to normalize, which is assumed to refer to a contact (as 
opposed to, for instance, a chatroom or a server). In some 
protocols, like XMPP, there is no way to tell whether a given URI 
refers to a contact or a chatroom by looking at its syntax. The 
URI&apos;s scheme (i.e. the part before the first colon) MUST 
appear in AddressableURISchemes.
Returns
A URI, normalized as much as possible.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00213.html0000644000175100017520000006756412530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceRoomConfigAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceRoomConfigAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void UpdateConfiguration (const QVariantMap &properties, const QDBusMessage &dbusMessage)
 

Public Member Functions

bool Anonymous () const
 
bool InviteOnly () const
 
uint Limit () const
 
bool Moderated () const
 
QString Title () const
 
QString Description () const
 
bool Persistent () const
 
bool Private () const
 
bool PasswordProtected () const
 
QString Password () const
 
QString PasswordHint () const
 
bool CanUpdateConfiguration () const
 
QStringList MutableProperties () const
 
bool ConfigurationRetrieved () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::Anonymous ( ) const

Return the value of the exported D-Bus object property Anonymous of type bool.

Adaptees should export this property as a Qt property named 'anonymous' with type bool.

True if people may join the channel without other members being made aware of their identity.

Returns
The value of exported property Anonymous.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::InviteOnly ( ) const

Return the value of the exported D-Bus object property InviteOnly of type bool.

Adaptees should export this property as a Qt property named 'inviteonly' with type bool.

True if people may not join the channel until they have been invited.

Returns
The value of exported property InviteOnly.
uint Tp::Service::ChannelInterfaceRoomConfigAdaptor::Limit ( ) const

Return the value of the exported D-Bus object property Limit of type uint.

Adaptees should export this property as a Qt property named 'limit' with type uint.

The limit to the number of members; or 0 if there is no limit.

Returns
The value of exported property Limit.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::Moderated ( ) const

Return the value of the exported D-Bus object property Moderated of type bool.

Adaptees should export this property as a Qt property named 'moderated' with type bool.

True if channel membership is not sufficient to allow participation.

Returns
The value of exported property Moderated.
QString Tp::Service::ChannelInterfaceRoomConfigAdaptor::Title ( ) const

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

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

A human-visible name for the channel, if it differs from ChannelInterfaceRoomInterface::RoomName ; the empty string, otherwise.

On XMPP, this represents the muc#roomconfig_roomname field of the muc#roomconfig form. So for jdev@conference.jabber.org, for example:

XEP-0045 is awful.

Returns
The value of exported property Title.
QString Tp::Service::ChannelInterfaceRoomConfigAdaptor::Description ( ) const

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

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

A human-readable description of the channel's overall purpose; if any.

Returns
The value of exported property Description.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::Persistent ( ) const

Return the value of the exported D-Bus object property Persistent of type bool.

Adaptees should export this property as a Qt property named 'persistent' with type bool.

True if the channel will remain in existence on the server after all members have left it.
Returns
The value of exported property Persistent.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::Private ( ) const

Return the value of the exported D-Bus object property Private of type bool.

Adaptees should export this property as a Qt property named 'private' with type bool.

True if the channel is not visible to non-members.
Returns
The value of exported property Private.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::PasswordProtected ( ) const

Return the value of the exported D-Bus object property PasswordProtected of type bool.

Adaptees should export this property as a Qt property named 'passwordProtected' with type bool.

True if contacts joining this channel must provide a password to be granted entry. Note that this property does not indicate that a password is required right now; see the ChannelInterfacePasswordInterface interface for the API used to provide a password while joining a room.
Returns
The value of exported property PasswordProtected.
QString Tp::Service::ChannelInterfaceRoomConfigAdaptor::Password ( ) const

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

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

If PasswordProtected is True, the password required to enter the channel, if known. If the password is unknown, or PasswordProtected is False, the empty string.
On XMPP—bless its cotton socks!—non-owners of a MUC cannot see its current password, even if they just provided the password in order to join the room…
Returns
The value of exported property Password.
QString Tp::Service::ChannelInterfaceRoomConfigAdaptor::PasswordHint ( ) const

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

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

If PasswordProtected is True, an optional hint for the password.

On protocols supporting PasswordHint (indicated by its presence in MutableProperties ), Password and PasswordHint MUST be set in a single call to UpdateConfiguration() .

Skype requires that the password and its hint be supplied together.
Returns
The value of exported property PasswordHint.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::CanUpdateConfiguration ( ) const

Return the value of the exported D-Bus object property CanUpdateConfiguration of type bool.

Adaptees should export this property as a Qt property named 'canUpdateConfiguration' with type bool.

If True, the user may call UpdateConfiguration() to change the values of the properties listed in MutableProperties .
Returns
The value of exported property CanUpdateConfiguration.
QStringList Tp::Service::ChannelInterfaceRoomConfigAdaptor::MutableProperties ( ) const

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

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

A list of (unqualified) property names on this interface which may be modified using UpdateConfiguration() (if CanUpdateConfiguration is True). Properties not listed here cannot be modified.

For example, IRC does not have the concept of joining a room without other participants knowing your true identity; so on IRC the Anonymous property will always be False, and MutableProperties will not include "Anonymous".

Returns
The value of exported property MutableProperties.
bool Tp::Service::ChannelInterfaceRoomConfigAdaptor::ConfigurationRetrieved ( ) const

Return the value of the exported D-Bus object property ConfigurationRetrieved of type bool.

Adaptees should export this property as a Qt property named 'configurationRetrieved' with type bool.

True once the initial room configuration has been retrieved, or False otherwise. On some services, this may take some time after you've joined a room to fetch the configuration. Once this property changes to True, the other properties on this interface can be assumed to be accurate; this property MUST not change to False after it becomes True.

An application's “configure this room†dialog might choose to display a spinner while this property is False, rather than allowing the user to edit probably-inaccurate configuration.

Returns
The value of exported property ConfigurationRetrieved.
void Tp::Service::ChannelInterfaceRoomConfigAdaptor::UpdateConfiguration ( const QVariantMap &  properties,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void updateConfiguration(const QVariantMap& properties, const Tp::Service::ChannelInterfaceRoomConfigAdaptor::UpdateConfigurationContextPtr &context);

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

If CanUpdateConfiguration is True, modifies the current values of one or more room properties. This method SHOULD NOT return until the change has been accepted or declined by the server.

Note that the server may ostensibly accept the changes (thus allowing this method to return success) but signal different values; for example, the server might truncate Title to some maximum length. Callers SHOULD continue to listen for the PropertiesChanged signal, and trust the values it signals over those provided to this method.

Parameters
properties

The new values of one or more properties on this interface, which must be listed in \\\ \\link requestPropertyMutableProperties() MutableProperties \\endlink \\htmlonly . For instance, to set up a channel for discussing top-secret corporate merge plans, this parameter might be:

{
      'Private': True,
      'InviteOnly': True,
      'Description': "The first rule of #inteltakeover is: do not talk about #inteltakeover",
    }


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01184.html0000644000175100017520000000526212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PropertySpec Member List

This is the complete list of members for Tp::PropertySpec, including all inherited members.

flagsTp::PropertySpec
nameTp::PropertySpec
propertyIDTp::PropertySpec
signatureTp::PropertySpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x67.html0000644000175100017520000005455312530426260024135 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- g -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00717_source.html0000644000175100017520000002554612530426257022533 0ustar00kaffeinekaffeine00000000000000 handled-channel-notifier.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
handled-channel-notifier.h
1 
23 #ifndef _TelepathyQt_handled_channel_notifier_h_HEADER_GUARD_
24 #define _TelepathyQt_handled_channel_notifier_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/Types>
32 
33 #include <QObject>
34 
35 namespace Tp
36 {
37 
38 class ChannelRequestHints;
39 class RequestTemporaryHandler;
40 
41 class TP_QT_EXPORT HandledChannelNotifier : public QObject
42 {
43  Q_OBJECT
44  Q_DISABLE_COPY(HandledChannelNotifier)
45 
46 public:
48 
49  ChannelPtr channel() const;
50 
51 Q_SIGNALS:
52  void handledAgain(const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints);
53 
54 protected:
55 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
56  void connectNotify(const QMetaMethod &signal);
57 #else
58  void connectNotify(const char *signal);
59 #endif
60 
61 private Q_SLOTS:
62  TP_QT_NO_EXPORT void onChannelReceived(const Tp::ChannelPtr &channel,
63  const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints);
64  TP_QT_NO_EXPORT void onChannelInvalidated();
65 
66 private:
67  friend class PendingChannel;
68 
69  HandledChannelNotifier(const ClientRegistrarPtr &cr,
70  const SharedPtr<RequestTemporaryHandler> &handler);
71 
72  struct Private;
73  friend struct Private;
74  Private *mPriv;
75 };
76 
77 } // Tp
78 
79 #endif
The HandledChannelNotifier class can be used to keep track of channel() being re-requested.
Definition: handled-channel-notifier.h:41
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
The PendingChannel class represents the parameters of and the reply to an asynchronous channel reques...
Definition: pending-channel.h:44


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2ns.png0000644000175100017520000000060412530426257021362 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆKIDATxíÝ1K1Àñ­ž ØG•â‚n‚Šà ‚âælÁE¿€‹“ (nºêââêäࢋƒÐMAá@°‹ µât¾ÄK¡à%Ü•Û ý]BIïå%áuÍ…a™€,e × v¯ç¥«ˆi‹º¨Õö–î\tòòuénÄ0ã æÜÉoV\Ì$G.&@Y=ÆË%$um·¢ûÛ6–'Úß«9Qó\bÙ)²º0Ðë-Zœ¥TèHÍ`pÀcsm µö5:>Áë‡Þ¦I µØ ‚F‹Çà]» ›jg—ìoÏáõ©[ œõ š­onë €Ô¬¨vqõ„?\Ðç”  6»øüÒTe ÃÉéŸeç ÀÅlQ ¡c”€ª¬ü3*d€ÅWTMÏ\rÿÿh6™ø1±F ‹°fžIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00528.html0000644000175100017520000034634612530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The StreamTubeChannel class represents a Telepathy channel of type StreamTube. More...

#include <TelepathyQt/StreamTubeChannel>

Inherits Tp::TubeChannel.

Inherited by Tp::IncomingStreamTubeChannel, and Tp::OutgoingStreamTubeChannel.

Signals

void newConnection (uint connectionId)
 
void connectionClosed (uint connectionId, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::TubeChannel
void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~StreamTubeChannel ()
 
QString service () const
 
bool supportsIPv4SocketsOnLocalhost () const
 
bool supportsIPv4SocketsWithSpecifiedAddress () const
 
bool supportsIPv6SocketsOnLocalhost () const
 
bool supportsIPv6SocketsWithSpecifiedAddress () const
 
bool supportsUnixSocketsOnLocalhost () const
 
bool supportsUnixSocketsWithCredentials () const
 
bool supportsAbstractUnixSocketsOnLocalhost () const
 
bool supportsAbstractUnixSocketsWithCredentials () const
 
QSet< uint > connections () const
 
SocketAddressType addressType () const
 
QPair< QHostAddress, quint16 > ipAddress () const
 
QString localAddress () const
 
- Public Member Functions inherited from Tp::TubeChannel
virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static StreamTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::TubeChannel
static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureConnectionMonitoring
 
- Static Public Attributes inherited from Tp::TubeChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 StreamTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore)
 
void addConnection (uint connection)
 
void removeConnection (uint connection, const QString &error, const QString &message)
 
void setAddressType (SocketAddressType type)
 
SocketAccessControl accessControl () const
 
void setAccessControl (SocketAccessControl accessControl)
 
void setIpAddress (const QPair< QHostAddress, quint16 > &address)
 
void setLocalAddress (const QString &address)
 
bool isDroppingConnections () const
 
- Protected Member Functions inherited from Tp::TubeChannel
 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The StreamTubeChannel class represents a Telepathy channel of type StreamTube.

It provides a transport for reliable and ordered data transfer, similar to SOCK_STREAM sockets.

StreamTubeChannel is an intermediate base class; OutgoingStreamTubeChannel and IncomingStreamTubeChannel are the specialized classes used for locally and remotely initiated tubes respectively.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::StreamTubeChannel::~StreamTubeChannel ( )
virtual

Class destructor.

Tp::StreamTubeChannel::StreamTubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = StreamTubeChannel::FeatureCore 
)
protected

Construct a new StreamTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on StreamTubeChannel::FeatureCore.

Member Function Documentation

StreamTubeChannelPtr Tp::StreamTubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new StreamTubeChannel channel.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A StreamTubeChannelPtr object pointing to the newly created StreamTubeChannel object.
QString Tp::StreamTubeChannel::service ( ) const

Return the service name which will be used over this stream tube. This should be a well-known TCP service name, for instance "rsync" or "daap".

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
The service name.
bool Tp::StreamTubeChannel::supportsIPv4SocketsOnLocalhost ( ) const

Return whether this stream tube is capable to accept or offer an IPv4 socket accepting all incoming connections coming from localhost.

Note that the Telepathy specification implies that any connection manager, if capable of providing stream tubes, must at least support IPv4 sockets with localhost access control. For this reason, this method should always return true.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept or offer an IPv4 socket accepting all incoming connections coming from localhost, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), OutgoingStreamTubeChannel::offerTcpSocket(), supportsIPv4SocketsWithSpecifiedAddress()
bool Tp::StreamTubeChannel::supportsIPv4SocketsWithSpecifiedAddress ( ) const

Return whether this stream tube is capable to accept an IPv4 socket accepting all incoming connections coming from a specific address for incoming tubes or whether this stream tube is capable of mapping connections to the socket's source address for outgoing tubes.

For incoming tubes, when this capability is available, the stream tube can be accepted specifying an IPv4 address. Every connection coming from any other address than the specified one will be rejected.

For outgoing tubes, when this capability is available, one can keep track of incoming connections by enabling StreamTubeChannel::FeatureConnectionMonitoring (possibly before opening the stream tube itself), and checking OutgoingStreamTubeChannel::contactsForConnections() or OutgoingStreamTubeChannel::connectionsForSourceAddresses().

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsTcpSocket() or OutgoingStreamTubeChannel::offerTcpSocket() with a specified address to prevent failures, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept an IPv4 socket accepting all incoming connections coming from a specific address for incoming tubes or the stream tube is capable of mapping connections to the socket's source address for outgoing tubes, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), OutgoingStreamTubeChannel::offerTcpSocket(), OutgoingStreamTubeChannel::connectionsForSourceAddresses(), OutgoingStreamTubeChannel::contactsForConnections(), supportsIPv4SocketsOnLocalhost()
bool Tp::StreamTubeChannel::supportsIPv6SocketsOnLocalhost ( ) const

Return whether this stream tube is capable to accept or offer an IPv6 socket accepting all incoming connections coming from localhost.

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsTcpSocket() or OutgoingStreamTubeChannel::offerTcpSocket() with a specified address to prevent failures, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept or offer an IPv6 socket accepting all incoming connections coming from localhost, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), OutgoingStreamTubeChannel::offerTcpSocket(), supportsIPv6SocketsWithSpecifiedAddress()
bool Tp::StreamTubeChannel::supportsIPv6SocketsWithSpecifiedAddress ( ) const

Return whether this stream tube is capable to accept an IPv6 socket accepting all incoming connections coming from a specific address for incoming tubes or whether this stream tube is capable of mapping connections to the socket's source address for outgoing tubes.

For incoming tubes, when this capability is available, the stream tube can be accepted specifying an IPv6 address. Every connection coming from any other address than the specified one will be rejected.

For outgoing tubes, when this capability is available, one can keep track of incoming connections by enabling StreamTubeChannel::FeatureConnectionMonitoring (possibly before opening the stream tube itself), and checking OutgoingStreamTubeChannel::contactsForConnections() or OutgoingStreamTubeChannel::connectionsForSourceAddresses().

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsTcpSocket() or OutgoingStreamTubeChannel::offerTcpSocket() with a specified address to prevent failures, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept an IPv6 socket accepting all incoming connections coming from a specific address for incoming tubes or the stream tube is capable of mapping connections to the socket's source address for outgoing tubes, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), OutgoingStreamTubeChannel::offerTcpSocket(), OutgoingStreamTubeChannel::connectionsForSourceAddresses(), OutgoingStreamTubeChannel::contactsForConnections(), supportsIPv6SocketsOnLocalhost()
bool Tp::StreamTubeChannel::supportsUnixSocketsOnLocalhost ( ) const

Return whether this stream tube is capable to accept or offer an Unix socket accepting all incoming connections coming from localhost.

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or OutgoingStreamTubeChannel::offerUnixSocket() without credentials enabled, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept or offer an Unix socket accepting all incoming connections coming from localhost, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), OutgoingStreamTubeChannel::offerUnixSocket(), supportsUnixSocketsWithCredentials() supportsAbstractUnixSocketsOnLocalhost(), supportsAbstractUnixSocketsWithCredentials(),
bool Tp::StreamTubeChannel::supportsUnixSocketsWithCredentials ( ) const

Return whether this stream tube is capable to accept or offer an Unix socket which will require credentials upon connection.

When this capability is available and enabled, the connecting process must send a byte when it first connects, which is not considered to be part of the data stream. If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass credentials over sockets, the connecting process must do so if possible; if not, it must still send the byte.

The listening process will disconnect the connection unless it can determine by OS-specific means that the connecting process has the same user ID as the listening process.

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or OutgoingStreamTubeChannel::offerUnixSocket() with credentials enabled, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept or offer an Unix socket which will require credentials upon connection, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), OutgoingStreamTubeChannel::offerUnixSocket(), supportsUnixSocketsOnLocalhost(), supportsAbstractUnixSocketsOnLocalhost(), supportsAbstractUnixSocketsWithCredentials(),
bool Tp::StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost ( ) const

Return whether this stream tube is capable to accept or offer an abstract Unix socket accepting all incoming connections coming from localhost.

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or OutgoingStreamTubeChannel::offerUnixSocket() without credentials enabled, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept or offer an abstract Unix socket accepting all incoming connections coming from localhost, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), OutgoingStreamTubeChannel::offerUnixSocket(), supportsUnixSocketsOnLocalhost(), supportsUnixSocketsWithCredentials(), supportsAbstractUnixSocketsWithCredentials()
bool Tp::StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials ( ) const

Return whether this stream tube is capable to accept or offer an abstract Unix socket which will require credentials upon connection.

When this capability is available and enabled, the connecting process must send a byte when it first connects, which is not considered to be part of the data stream. If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass credentials over sockets, the connecting process must do so if possible; if not, it must still send the byte.

The listening process will disconnect the connection unless it can determine by OS-specific means that the connecting process has the same user ID as the listening process.

Note that it is strongly advised to call this method before attempting to call IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or OutgoingStreamTubeChannel::offerUnixSocket() with credentials enabled, as the spec implies this feature is not compulsory for connection managers.

This method requires StreamTubeChannel::FeatureCore to be ready.

Returns
true if the stream tube is capable to accept or offer an abstract Unix socket which will require credentials upon connection, false otherwise.
See Also
IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), OutgoingStreamTubeChannel::offerUnixSocket(), supportsUnixSocketsOnLocalhost(), supportsUnixSocketsWithCredentials(), supportsAbstractUnixSocketsOnLocalhost()
QSet< uint > Tp::StreamTubeChannel::connections ( ) const

Return all the known active connections since StreamTubeChannel::FeatureConnectionMonitoring has been enabled.

For this method to return all known connections, you need to make StreamTubeChannel::FeatureConnectionMonitoring ready before accepting or offering the stream tube.

This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready.

Returns
The list of active connection ids.
See Also
newConnection(), connectionClosed()
SocketAddressType Tp::StreamTubeChannel::addressType ( ) const

Return the type of the tube's local endpoint socket.

Note that this function will return a valid value only after state() has gone TubeStateOpen.

Returns
The socket type as SocketAddressType.
See Also
localAddress(), ipAddress()
QPair< QHostAddress, quint16 > Tp::StreamTubeChannel::ipAddress ( ) const

Return the IP address/port combination used by this stream tube.

This method will return a meaningful value only if the local endpoint socket for the tube is a TCP socket, i.e. addressType() is SocketAddressTypeIPv4 or SocketAddressTypeIPv6.

Note that this function will return a valid value only after state() has gone TubeStateOpen.

Returns
Pair of IP address as QHostAddress and port if using a TCP socket, or an undefined value otherwise.
See Also
localAddress()
QString Tp::StreamTubeChannel::localAddress ( ) const

Return the local address used by this stream tube.

This method will return a meaningful value only if the local endpoint socket for the tube is an UNIX socket, i.e. addressType() is SocketAddressTypeUnix or SocketAddressTypeAbstractUnix.

Note that this function will return a valid value only after state() has gone TubeStateOpen.

Returns
Unix socket address if using an Unix socket, or an undefined value otherwise.
See Also
ipAddress()
void Tp::StreamTubeChannel::newConnection ( uint  connectionId)
signal
void Tp::StreamTubeChannel::connectionClosed ( uint  connectionId,
const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted when a connection on this stream tube has been closed.

Parameters
connectionIdThe unique ID associated with the connection that was closed.
errorNameThe name of a D-Bus error describing the error that occurred.
errorMessageA debugging message associated with the error.
See Also
newConnection(), connections()
void Tp::StreamTubeChannel::addConnection ( uint  connection)
protected
void Tp::StreamTubeChannel::removeConnection ( uint  connection,
const QString &  error,
const QString &  message 
)
protected
void Tp::StreamTubeChannel::setAddressType ( SocketAddressType  type)
protected
SocketAccessControl Tp::StreamTubeChannel::accessControl ( ) const
protected

Return the access control used by this stream tube.

Note that this function will only return a valid value after state() has gone TubeStateOpen.

Returns
The access control as SocketAccessControl.
See Also
addressType()
void Tp::StreamTubeChannel::setAccessControl ( SocketAccessControl  accessControl)
protected
void Tp::StreamTubeChannel::setIpAddress ( const QPair< QHostAddress, quint16 > &  address)
protected
void Tp::StreamTubeChannel::setLocalAddress ( const QString &  address)
protected
bool Tp::StreamTubeChannel::isDroppingConnections ( ) const
protected

Member Data Documentation

const Feature Tp::StreamTubeChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the StreamTubeChannel object usable.

Note that this feature must be enabled in order to use most StreamTubeChannel methods. See specific methods documentation for more details.

const Feature Tp::StreamTubeChannel::FeatureConnectionMonitoring
static

Feature used in order to monitor connections to this stream tube.

See connection monitoring specific methods' documentation for more details.

See Also
newConnection(), connectionClosed()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00282.html0000644000175100017520000007641712530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceClientTypesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ContactClientTypes
GetClientTypes (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply< QStringList > RequestClientTypes (uint contact, int timeout=-1)
 

Signals

void ClientTypesUpdated (uint contact, const QStringList &clientTypes)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceClientTypesInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceClientTypesInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceClientTypesInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceClientTypesInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceClientTypesInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ClientTypes".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceClientTypesInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceClientTypesInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceClientTypesInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceClientTypesInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceClientTypesInterface::ConnectionInterfaceClientTypesInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceClientTypesInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceClientTypesInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ClientTypes", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceClientTypesInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ContactClientTypes> Tp::Client::ConnectionInterfaceClientTypesInterface::GetClientTypes ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetClientTypes on the remote object.

Return the client types of the given contacts, if they are already known. If any of the given contacts' client types are not known, request their current client types, but return immediately without waiting for a reply; if a reply with a non-empty client type array is later received for those contacts, the ClientTypesUpdated signal will be emitted for them. This method is appropriate for "lazy" client type finding, for instance displaying the client types (if available) of everyone in your contact list.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
The contacts whose client types should be returned or signalled.
timeoutThe timeout in milliseconds.
Returns
The contacts&apos; client types, if already known. Contacts whose 
client types are not already known are omitted from the mapping; 
contacts known to have no client type information appear in the 
mapping with an empty list.
QDBusPendingReply<QStringList> Tp::Client::ConnectionInterfaceClientTypesInterface::RequestClientTypes ( uint  contact,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestClientTypes on the remote object.

Return the current client types of the given contact. If necessary, make a request to the server for up-to-date information, and wait for a reply. This method is appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contact
The contact whose client types should be returned.
timeoutThe timeout in milliseconds.
Returns
The contact&apos;s client types. It MAY be empty, indicating that 
no client type information was found.
void Tp::Client::ConnectionInterfaceClientTypesInterface::ClientTypesUpdated ( uint  contact,
const QStringList &  clientTypes 
)
signal

Represents the signal ClientTypesUpdated on the remote object.

Emitted when a contact's client types change or become known.

Parameters
contact
The contact.
clientTypes
The contact&apos;s client types, or an empty list to indicate that 
nothing is known about the contact&apos;s client types.
void Tp::Client::ConnectionInterfaceClientTypesInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01243.html0000644000175100017520000003220712530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceMediaInterface Member List

This is the complete list of members for Tp::Client::CallContentInterfaceMediaInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AcknowledgeDTMFChange(uchar event, uint state, int timeout=-1)Tp::Client::CallContentInterfaceMediaInterfaceinlineslot
CallContentInterfaceMediaInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceMediaInterface
CallContentInterfaceMediaInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceMediaInterface
CallContentInterfaceMediaInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentInterfaceMediaInterface
CallContentInterfaceMediaInterface(const Tp::Client::CallContentInterface &mainInterface)Tp::Client::CallContentInterfaceMediaInterfaceexplicit
CallContentInterfaceMediaInterface(const Tp::Client::CallContentInterface &mainInterface, QObject *parent)Tp::Client::CallContentInterfaceMediaInterface
DTMFChangeRequested(uchar event, uint state)Tp::Client::CallContentInterfaceMediaInterfacesignal
Fail(const Tp::CallStateReason &reason, int timeout=-1)Tp::Client::CallContentInterfaceMediaInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentInterfaceMediaInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
LocalMediaDescriptionChanged(const QVariantMap &updatedMediaDescription)Tp::Client::CallContentInterfaceMediaInterfacesignal
MediaDescriptionOfferDone()Tp::Client::CallContentInterfaceMediaInterfacesignal
MediaDescriptionsRemoved(const Tp::UIntList &removedMediaDescriptions)Tp::Client::CallContentInterfaceMediaInterfacesignal
NewMediaDescriptionOffer(const QDBusObjectPath &mediaDescription, const QVariantMap &properties)Tp::Client::CallContentInterfaceMediaInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoteMediaDescriptionsChanged(const Tp::ContactMediaDescriptionPropertiesMap &updatedMediaDescriptions)Tp::Client::CallContentInterfaceMediaInterfacesignal
requestAllProperties() const Tp::Client::CallContentInterfaceMediaInterfaceinline
requestPropertyCurrentDTMFEvent() const Tp::Client::CallContentInterfaceMediaInterfaceinline
requestPropertyCurrentDTMFState() const Tp::Client::CallContentInterfaceMediaInterfaceinline
requestPropertyLocalMediaDescriptions() const Tp::Client::CallContentInterfaceMediaInterfaceinline
requestPropertyMediaDescriptionOffer() const Tp::Client::CallContentInterfaceMediaInterfaceinline
requestPropertyPacketization() const Tp::Client::CallContentInterfaceMediaInterfaceinline
requestPropertyRemoteMediaDescriptions() const Tp::Client::CallContentInterfaceMediaInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentInterfaceMediaInterfaceinlinestatic
UpdateLocalMediaDescription(const QVariantMap &mediaDescription, int timeout=-1)Tp::Client::CallContentInterfaceMediaInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00713_source.html0000644000175100017520000001301512530426257022513 0ustar00kaffeinekaffeine00000000000000 global.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
telepathy-qt/TelepathyQt/Farstream/global.h
1 
22 #ifndef _TelepathyQt_Farstream_global_h_HEADER_GUARD_
23 #define _TelepathyQt_Farstream_global_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_FARSTREAM_HEADER
26 #error IN_TP_QT_FARSTREAM_HEADER
27 #endif
28 
29 #include <QtGlobal>
30 
31 #ifdef BUILDING_TP_QT_FARSTREAM
32 # define TP_QT_FS_EXPORT Q_DECL_EXPORT
33 #else
34 # define TP_QT_FS_EXPORT Q_DECL_IMPORT
35 #endif
36 
37 #if !defined(Q_OS_WIN) && defined(QT_VISIBILITY_AVAILABLE)
38 # define TP_QT_FS_NO_EXPORT __attribute__((visibility("hidden")))
39 #endif
40 
41 #ifndef TP_QT_FS_NO_EXPORT
42 # define TP_QT_FS_NO_EXPORT
43 #endif
44 
45 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x77.html0000644000175100017520000000374212530426260023115 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- w -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00341.html0000644000175100017520000004774312530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::DBusService Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for D-Bus services. More...

#include <TelepathyQt/DBusService>

Inherits Tp::Object.

Inherited by Tp::BaseCallContent, Tp::BaseChannel, Tp::BaseConnection, Tp::BaseConnectionManager, and Tp::BaseProtocol.

Public Member Functions

 DBusService (const QDBusConnection &dbusConnection)
 
virtual ~DBusService ()
 
virtual QVariantMap immutableProperties () const =0
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

virtual bool registerObject (const QString &busName, const QString &objectPath, DBusError *error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for D-Bus services.

This class serves as a base for all the classes that are used to implement D-Bus services.

Constructor & Destructor Documentation

Tp::DBusService::DBusService ( const QDBusConnection &  dbusConnection)

Construct a DBusService that uses the given dbusConnection.

Parameters
dbusConnectionThe D-Bus connection that will be used by this service.
Tp::DBusService::~DBusService ( )
virtual

Class destructor.

Member Function Documentation

QVariantMap Tp::DBusService::immutableProperties ( ) const
pure virtual

Return the immutable properties of this D-Bus service object.

Immutable properties cannot change after the object has been registered on the bus with registerObject().

Returns
The immutable properties of this D-Bus service object.

Implemented in Tp::BaseProtocol, Tp::BaseCallContent, Tp::BaseConnectionManager, Tp::BaseConnection, and Tp::BaseChannel.

QDBusConnection Tp::DBusService::dbusConnection ( ) const

Return the D-Bus connection associated with this service.

Returns
the D-Bus connection associated with this service.
QString Tp::DBusService::busName ( ) const

Return the D-Bus service name of this service.

This is only valid after this service has been registered on the bus using registerObject().

Returns
the D-Bus service name of this service.
QString Tp::DBusService::objectPath ( ) const

Return the D-Bus object path of this service.

This is only valid after this service has been registered on the bus using registerObject().

Returns
the D-Bus object path of this service.
DBusObject * Tp::DBusService::dbusObject ( ) const

Return the DBusObject that is used for registering this service on the bus.

The DBusObject is the object on which all the interface adaptors for this service are plugged.

Returns
a pointer to the DBusObject that is used for registering this service on the bus.
bool Tp::DBusService::isRegistered ( ) const

Return whether this D-Bus service has been registered on the bus or not.

Returns
true if the service has been registered, or false otherwise.
bool Tp::DBusService::registerObject ( const QString &  busName,
const QString &  objectPath,
DBusError error 
)
protectedvirtual

Register this service object on the bus with the given busName and objectPath.

error needs to be a valid pointer to a DBusError instance, where any possible D-Bus error will be stored.

A service may only be registered once in its lifetime. Use isRegistered() to find out if it has already been registered or not.

You normally don't need to use this method directly. Subclasses should provide a simplified version of it.

Parameters
busNameThe D-Bus service name of this object.
objectPathThe D-Bus object path of this object.
errorA pointer to a valid DBusError instance, where any possible D-Bus error will be stored.
Returns
true on success or false otherwise.

Reimplemented in Tp::BaseConnection, Tp::BaseProtocol, Tp::BaseCallContent, Tp::BaseConnectionManager, and Tp::BaseChannel.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01302.html0000644000175100017520000002253012530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceCapabilitiesInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceCapabilitiesInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AdvertiseCapabilities(const Tp::CapabilityPairList &add, const QStringList &remove, int timeout=-1)Tp::Client::ConnectionInterfaceCapabilitiesInterfaceinlineslot
CapabilitiesChanged(const Tp::CapabilityChangeList &caps)Tp::Client::ConnectionInterfaceCapabilitiesInterfacesignal
ConnectionInterfaceCapabilitiesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceCapabilitiesInterface
ConnectionInterfaceCapabilitiesInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceCapabilitiesInterface
ConnectionInterfaceCapabilitiesInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceCapabilitiesInterface
ConnectionInterfaceCapabilitiesInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceCapabilitiesInterfaceexplicit
ConnectionInterfaceCapabilitiesInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceCapabilitiesInterface
GetCapabilities(const Tp::UIntList &handles, int timeout=-1)Tp::Client::ConnectionInterfaceCapabilitiesInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceCapabilitiesInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceCapabilitiesInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceCapabilitiesInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00096.html0000644000175100017520000005424512530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::BaseCallMuteInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Call.Interface.Mute. More...

#include <TelepathyQt/BaseCall>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2< void, const
Tp::LocalMuteState
&, DBusError * > 
SetMuteStateCallback
 

Signals

void muteStateChanged (const Tp::LocalMuteState &state)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~BaseCallMuteInterface ()
 
QVariantMap immutableProperties () const
 
Tp::LocalMuteState localMuteState () const
 
void setMuteState (const Tp::LocalMuteState &state)
 
void setSetMuteStateCallback (const SetMuteStateCallback &cb)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseCallMuteInterfacePtr create ()
 
template<typename BaseCallMuteInterfaceSubclass >
static SharedPtr
< BaseCallMuteInterfaceSubclass > 
create ()
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Call.Interface.Mute.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseCallMuteInterface::~BaseCallMuteInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseCallMuteInterfacePtr Tp::BaseCallMuteInterface::create ( )
inlinestatic
template<typename BaseCallMuteInterfaceSubclass >
static SharedPtr<BaseCallMuteInterfaceSubclass> Tp::BaseCallMuteInterface::create ( )
inlinestatic
QVariantMap Tp::BaseCallMuteInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::LocalMuteState Tp::BaseCallMuteInterface::localMuteState ( ) const
void Tp::BaseCallMuteInterface::setMuteState ( const Tp::LocalMuteState state)
void Tp::BaseCallMuteInterface::setSetMuteStateCallback ( const SetMuteStateCallback cb)
void Tp::BaseCallMuteInterface::muteStateChanged ( const Tp::LocalMuteState state)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01057.html0000644000175100017520000001103012530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::NotFilter< T > Member List

This is the complete list of members for Tp::NotFilter< T >, including all inherited members.

create(const SharedPtr< const Filter< T > > &filter=SharedPtr< const Filter< T > >())Tp::NotFilter< T >inlinestatic
Filter()Tp::Filter< T >inlineprotected
filter() const Tp::NotFilter< T >inline
isValid() const Tp::NotFilter< T >inlinevirtual
matches(const SharedPtr< T > &t) const Tp::NotFilter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
~Filter()Tp::Filter< T >inlinevirtual
~NotFilter()Tp::NotFilter< T >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00400.html0000644000175100017520000002431712530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1, Arg2, Arg3, Arg4)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor4 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
typedef R(T::* Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >::FunctionType)(Arg1, Arg2, Arg3, Arg4)
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
typedef R Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >::MemberFunctor4 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
ResultType Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4 
) const
inline

Member Data Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
T* Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >::object
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
FunctionType Tp::MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01371.html0000644000175100017520000001121612530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAliasingAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceAliasingAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AliasesChanged(const Tp::AliasPairList &aliases)Tp::Service::ConnectionInterfaceAliasingAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
GetAliases(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAliasingAdaptorslot
GetAliasFlags(const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAliasingAdaptorslot
RequestAliases(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAliasingAdaptorslot
SetAliases(const Tp::AliasMap &aliases, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAliasingAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00155.html0000644000175100017520000001432712530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::CallStateReason Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallStateReason Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint actor
 
uint reason
 
QString DBusReason
 
QString message
 

Detailed Description

Structure type generated from the specification.

A description of the reason for a change to the CallState and/or CallFlags .

Member Data Documentation

uint Tp::CallStateReason::actor

The contact responsible for the change, or 0 if no contact was responsible.

uint Tp::CallStateReason::reason

The reason, chosen from a limited set of possibilities defined by the Telepathy specification. If User_Requested then the Actor member will dictate whether it was the local user or a remote contact responsible.

QString Tp::CallStateReason::DBusReason

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.

This SHOULD be an empty string for changes to any state other than Ended.

The errors Cancelled and Terminated SHOULD NOT be used here; an empty string SHOULD be used instead.

Those error names are used to indicate normal call termination by the local user or another user, respectively, in contexts where a D-Bus error name must appear.

QString Tp::CallStateReason::message

An optional debug message, to expediate debugging the potentially many processes involved in a call. This may be communicated across the network in protocols that support doing so, but it is not essential.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01116.html0000644000175100017520000000532312530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer::ParametersGenerator Member List

This is the complete list of members for Tp::StreamTubeServer::ParametersGenerator, including all inherited members.

nextParameters(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &tube, const ChannelRequestHints &hints)=0Tp::StreamTubeServer::ParametersGeneratorpure virtual
~ParametersGenerator()Tp::StreamTubeServer::ParametersGeneratorinlineprotectedvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00970.html0000644000175100017520000001177312530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback0< R > Member List

This is the complete list of members for Tp::Callback0< R >, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
Callback0()Tp::Callback0< R >inline
Callback0(const Functor &functor)Tp::Callback0< R >inline
callerTp::BaseCallbackprotected
FunctionType typedefTp::Callback0< R >
isValid() const Tp::BaseCallbackinline
operator()() const Tp::Callback0< R >inline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
ResultType typedefTp::Callback0< R >
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00214.html0000644000175100017520000014417512530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceRoomConfigInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply UpdateConfiguration (const QVariantMap &properties, int timeout=-1)
 

Public Member Functions

 ChannelInterfaceRoomConfigInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceRoomConfigInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceRoomConfigInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceRoomConfigInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceRoomConfigInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAnonymous () const
 
Tp::PendingVariantrequestPropertyInviteOnly () const
 
Tp::PendingVariantrequestPropertyLimit () const
 
Tp::PendingVariantrequestPropertyModerated () const
 
Tp::PendingVariantrequestPropertyTitle () const
 
Tp::PendingVariantrequestPropertyDescription () const
 
Tp::PendingVariantrequestPropertyPersistent () const
 
Tp::PendingVariantrequestPropertyPrivate () const
 
Tp::PendingVariantrequestPropertyPasswordProtected () const
 
Tp::PendingVariantrequestPropertyPassword () const
 
Tp::PendingVariantrequestPropertyPasswordHint () const
 
Tp::PendingVariantrequestPropertyCanUpdateConfiguration () const
 
Tp::PendingVariantrequestPropertyMutableProperties () const
 
Tp::PendingVariantrequestPropertyConfigurationRetrieved () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.RoomConfig1".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceRoomConfigInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceRoomConfigInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceRoomConfigInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceRoomConfigInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceRoomConfigInterface::ChannelInterfaceRoomConfigInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceRoomConfigInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceRoomConfigInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.RoomConfig1", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyAnonymous ( ) const
inline

Asynchronous getter for the remote object property Anonymous of type bool.

True if people may join the channel without other members being made aware of their identity.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyInviteOnly ( ) const
inline

Asynchronous getter for the remote object property InviteOnly of type bool.

True if people may not join the channel until they have been invited.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyLimit ( ) const
inline

Asynchronous getter for the remote object property Limit of type uint.

The limit to the number of members; or 0 if there is no limit.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyModerated ( ) const
inline

Asynchronous getter for the remote object property Moderated of type bool.

True if channel membership is not sufficient to allow participation.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyTitle ( ) const
inline

Asynchronous getter for the remote object property Title of type QString.

A human-visible name for the channel, if it differs from ChannelInterfaceRoomInterface::RoomName ; the empty string, otherwise.

On XMPP, this represents the muc#roomconfig_roomname field of the muc#roomconfig form. So for jdev@conference.jabber.org, for example:

XEP-0045 is awful.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyDescription ( ) const
inline

Asynchronous getter for the remote object property Description of type QString.

A human-readable description of the channel's overall purpose; if any.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyPersistent ( ) const
inline

Asynchronous getter for the remote object property Persistent of type bool.

True if the channel will remain in existence on the server after all members have left it.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyPrivate ( ) const
inline

Asynchronous getter for the remote object property Private of type bool.

True if the channel is not visible to non-members.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyPasswordProtected ( ) const
inline

Asynchronous getter for the remote object property PasswordProtected of type bool.

True if contacts joining this channel must provide a password to be granted entry. Note that this property does not indicate that a password is required right now; see the ChannelInterfacePasswordInterface interface for the API used to provide a password while joining a room.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyPassword ( ) const
inline

Asynchronous getter for the remote object property Password of type QString.

If PasswordProtected is True, the password required to enter the channel, if known. If the password is unknown, or PasswordProtected is False, the empty string.
On XMPP—bless its cotton socks!—non-owners of a MUC cannot see its current password, even if they just provided the password in order to join the room…
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyPasswordHint ( ) const
inline

Asynchronous getter for the remote object property PasswordHint of type QString.

If PasswordProtected is True, an optional hint for the password.

On protocols supporting PasswordHint (indicated by its presence in MutableProperties ), Password and PasswordHint MUST be set in a single call to UpdateConfiguration() .

Skype requires that the password and its hint be supplied together.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyCanUpdateConfiguration ( ) const
inline

Asynchronous getter for the remote object property CanUpdateConfiguration of type bool.

If True, the user may call UpdateConfiguration() to change the values of the properties listed in MutableProperties .
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyMutableProperties ( ) const
inline

Asynchronous getter for the remote object property MutableProperties of type QStringList.

A list of (unqualified) property names on this interface which may be modified using UpdateConfiguration() (if CanUpdateConfiguration is True). Properties not listed here cannot be modified.

For example, IRC does not have the concept of joining a room without other participants knowing your true identity; so on IRC the Anonymous property will always be False, and MutableProperties will not include "Anonymous".

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomConfigInterface::requestPropertyConfigurationRetrieved ( ) const
inline

Asynchronous getter for the remote object property ConfigurationRetrieved of type bool.

True once the initial room configuration has been retrieved, or False otherwise. On some services, this may take some time after you've joined a room to fetch the configuration. Once this property changes to True, the other properties on this interface can be assumed to be accurate; this property MUST not change to False after it becomes True.

An application's “configure this room†dialog might choose to display a spinner while this property is False, rather than allowing the user to edit probably-inaccurate configuration.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceRoomConfigInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceRoomConfigInterface::UpdateConfiguration ( const QVariantMap &  properties,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method UpdateConfiguration on the remote object.

If CanUpdateConfiguration is True, modifies the current values of one or more room properties. This method SHOULD NOT return until the change has been accepted or declined by the server.

Note that the server may ostensibly accept the changes (thus allowing this method to return success) but signal different values; for example, the server might truncate Title to some maximum length. Callers SHOULD continue to listen for the PropertiesChanged signal, and trust the values it signals over those provided to this method.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
properties

The new values of one or more properties on this interface, which must be listed in MutableProperties . For instance, to set up a channel for discussing top-secret corporate merge plans, this parameter might be:

{
      'Private': True,
      'InviteOnly': True,
      'Description': "The first rule of #inteltakeover is: do not talk about #inteltakeover",
    }
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceRoomConfigInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01185.html0000644000175100017520000000440312530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PropertyValue Member List

This is the complete list of members for Tp::PropertyValue, including all inherited members.

identifierTp::PropertyValue
valueTp::PropertyValue


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x68.html0000644000175100017520000003247212530426260024132 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- h -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00529.html0000644000175100017520000022047412530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeClient Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The StreamTubeClient class is a Handler implementation for incoming Stream Tube channels, allowing an application to easily get notified about services they can connect to offered to them over Telepathy Tubes without worrying about the channel dispatching details. More...

#include <TelepathyQt/StreamTubeClient>

Inherits QObject, and Tp::RefCounted.

Classes

class  TcpSourceAddressGenerator
 The StreamTubeClient::TcpSourceAddressGenerator abstract interface allows using socket source address/port based access control for connecting to tubes accepted as TCP sockets. More...
 
class  Tube
 The StreamTubeClient::Tube class represents a tube being handled by the client. More...
 

Signals

void tubeOffered (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube)
 
void tubeClosed (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, const QString &error, const QString &message)
 
void tubeAcceptedAsTcp (const QHostAddress &listenAddress, quint16 listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube)
 
void tubeAcceptedAsUnix (const QString &listenAddress, bool requiresCredentials, uchar credentialByte, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube)
 
void newConnection (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId)
 
void connectionClosed (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId, const QString &error, const QString &message)
 

Public Member Functions

virtual ~StreamTubeClient ()
 
ClientRegistrarPtr registrar () const
 
QString clientName () const
 
bool isRegistered () const
 
bool monitorsConnections () const
 
bool acceptsAsTcp () const
 
TcpSourceAddressGeneratortcpGenerator () const
 
bool acceptsAsUnix () const
 
void setToAcceptAsTcp (TcpSourceAddressGenerator *generator=0)
 
void setToAcceptAsUnix (bool requireCredentials=false)
 
QList< Tubetubes () const
 
QHash< Tube, QSet< uint > > connections () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static StreamTubeClientPtr create (const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false, const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static StreamTubeClientPtr create (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false)
 
static StreamTubeClientPtr create (const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false)
 
static StreamTubeClientPtr create (const ClientRegistrarPtr &registrar, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false)
 

Detailed Description

The StreamTubeClient class is a Handler implementation for incoming Stream Tube channels, allowing an application to easily get notified about services they can connect to offered to them over Telepathy Tubes without worrying about the channel dispatching details.

Telepathy Tubes is a technology for connecting arbitrary applications together through the IM network (and sometimes with direct peer-to-peer connections), such that issues like firewall/NAT traversal are automatically handled. Stream Tubes in particular offer properties similar to SOCK_STREAM sockets. The StreamTubeClient class negotiates tubes offered to us so that an application can connect such bytestream sockets of theirs to them. The StreamTubeServer class is the counterpart, offering services from a bytestream socket server to tubes requested to be initiated.

Both peer-to-peer (TargetHandleType == HandleTypeContact) and group (TargetHandleType == HandleTypeRoom) channels are supported, and it's possible to specify the tube services to handle for each separately. There must be at least one service in total declared, as it never makes sense to handle stream tubes without considering the protocol of the service offered through them.

Connection monitoring allows fine-grained error reporting for connections made through tubes, and observing connections being made and broken even if the application code running StreamTubeClient can't easily get this information from the code actually connecting through it. Such a setting might occur e.g. when a wrapper application is developed to connect some existing "black box" networked application through TCP tubes by launching it with the appropriate command line arguments or alike for accepted tubes.

Enabling connection monitoring adds a small overhead and latency to handling each incoming tube and signaling each new incoming connection over them, though, so use it only when needed.

A service activated Handler can be implemented using StreamTubeClient by passing a predefined clientName manually to the chosen create() method, and installing Telepathy .client and D-Bus .service files declaring the implemented tube services as channel classes and a path to the executable. If this is not needed, the clientName can be omitted, in which case a random unique client name is generated and used instead. However, then the tube client application must already be running for remote contacts to be able to offer services to us over tubes.

Whether the Handler application implemented using StreamTubeClient is service activatable or not, incoming channels will typically first be given to an Approver, if there is one for tube services corresponding to the tube in question. Only if the Approver decides that the tube communication should be allowed (usually by asking the user), or if there is no matching Approver at all, is the channel given to the actual Handler tube client. This can be overridden by setting bypassApproval to true, which skips approval for the given services completely and directs them straight to the Handler.

StreamTubeClient shares Account, Connection and Channel proxies and Contact objects with the rest of the application as long as a reference to the AccountManager, ClientRegistrar, or the factories used elsewhere is passed to the create() method. A stand-alone tube client Handler can get away without passing these however, or just passing select factories to make the desired features prepared and subclasses employed for these objects for their own convenience.

Whichever method is used, the ChannelFactory (perhaps indirectly) given must construct IncomingStreamTubeChannel instances or subclasses thereof for all channel classes corresponding to the tube services the client should be able to connect to. This is the default; overriding it without obeying these constraints using ChannelFactory::setSubclassForIncomingStreamTubes() or the related methods for room tubes prevents StreamTubeClient from operating correctly.

Todo:
Coin up a small Python script or alike to easily generate the .client and .service files. (fd.o #41614)

Constructor & Destructor Documentation

Tp::StreamTubeClient::~StreamTubeClient ( )
virtual

Class destructor.

Member Function Documentation

StreamTubeClientPtr Tp::StreamTubeClient::create ( const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false,
bool  bypassApproval = false,
const AccountFactoryConstPtr &  accountFactory = AccountFactory::create(QDBusConnection::sessionBus()),
const ConnectionFactoryConstPtr &  connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()),
const ChannelFactoryConstPtr &  channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()),
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new StreamTubeClient, which will register itself on the session bus using an internal ClientRegistrar and use the given factories.

Parameters
p2pServicesNames of the tube services to accept on peer-to-peer tube channels.
roomServicesNames of the tube services to accept on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
bypassApprovaltrue to skip approval, false to invoke an Approver for incoming channels if there is one.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
StreamTubeClientPtr Tp::StreamTubeClient::create ( const QDBusConnection &  bus,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory,
const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false,
bool  bypassApproval = false 
)
static

Create a new StreamTubeClient, which will register itself on the given bus using an internal ClientRegistrar and use the given factories.

The factories must all be created for the given bus.

Parameters
busConnection to the bus to register on.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
bypassApprovaltrue to skip approval, false to invoke an Approver for incoming channels if there is one.
StreamTubeClientPtr Tp::StreamTubeClient::create ( const AccountManagerPtr &  accountManager,
const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false,
bool  bypassApproval = false 
)
static

Create a new StreamTubeClient, which will register itself on the bus of and share objects with the given accountManager, creating an internal ClientRegistrar.

Parameters
accountManagerA pointer to the account manager to link up with.
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
bypassApprovaltrue to skip approval, false to invoke an Approver for incoming channels if there is one.
StreamTubeClientPtr Tp::StreamTubeClient::create ( const ClientRegistrarPtr &  registrar,
const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false,
bool  bypassApproval = false 
)
static

Create a new StreamTubeClient, which will register itself on the bus of and using the given client registrar, and share objects with it.

Parameters
registrarThe client registrar to use.
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
bypassApprovaltrue to skip approval, false to invoke an Approver for incoming channels if there is one.
ClientRegistrarPtr Tp::StreamTubeClient::registrar ( ) const

Return the client registrar used by the client to register itself as a Telepathy channel Handler Client.

This is the registrar originally passed to create(const ClientRegistrarPtr &, const QStringList &, const QStringList &, const QString &, bool, bool) if that was used, and an internally constructed one otherwise. In any case, it can be used to e.g. register further clients, just like any other ClientRegistrar.

Returns
A pointer to the registrar.
QString Tp::StreamTubeClient::clientName ( ) const

Return the Telepathy Client name of the client.

Returns
The name, without the org.freedesktop.Telepathy.Client. prefix of the full D-Bus service name.
bool Tp::StreamTubeClient::isRegistered ( ) const

Return whether the client has been successfully registered or not.

Registration is attempted, at the latest, when the client is first set to accept incoming tubes, either as TCP sockets (setToAcceptAsTcp()) or Unix ones (setToAcceptAsUnix()). It can fail e.g. because the connection to the bus has failed, or a predefined clientName has been passed to create(), and a Client with the same name is already registered. Typically, failure registering would be a fatal error for a stand-alone tube handler, but only a warning event for an application serving other purposes. In any case, a high-quality user of the API will check the return value of this accessor after choosing the desired address family.

Returns
true if the client has been successfully registered, false if not.
bool Tp::StreamTubeClient::monitorsConnections ( ) const

Return whether connection monitoring is enabled on this client.

For technical reasons, connection monitoring can't be enabled when the client is already running, so there is no corresponding setter method. It has to be enabled by passing true as the monitorConnections parameter to the create() method.

If connection monitoring isn't enabled, newConnection() and connectionClosed() won't be emitted and connections() won't be populated.

Returns
true if monitoring is enabled, false if not.
bool Tp::StreamTubeClient::acceptsAsTcp ( ) const

Return whether the client is currently set to accept incoming tubes as TCP sockets.

Returns
true if the client will accept tubes as TCP sockets, false if it will accept them as Unix ones or hasn't been set to accept at all yet.
StreamTubeClient::TcpSourceAddressGenerator * Tp::StreamTubeClient::tcpGenerator ( ) const

Return the TCP source address generator, if any, set by setToAcceptAsTcp() previously.

Returns
A pointer to the generator instance.
bool Tp::StreamTubeClient::acceptsAsUnix ( ) const

Return whether the client is currently set to accept incoming tubes as Unix sockets.

Returns
true if the client will accept tubes as Unix sockets, false if it will accept them as TCP ones or hasn't been set to accept at all yet.
void Tp::StreamTubeClient::setToAcceptAsTcp ( TcpSourceAddressGenerator generator = 0)

Set the client to accept tubes received to handle in the future in a fashion which will yield a TCP socket as the local endpoint to connect to.

A source address generator can optionally be set. If non-null, it will be invoked for each new tube received to handle and an attempt is made to restrict connections to the tube's local socket endpoint to those from that source address.

However, if the protocol backend doesn't actually support source address based access control, tubeAcceptedAsTcp() will be emitted with QHostAddress::Any as the allowed source address to signal that it doesn't matter where we connect from, but more importantly, that anybody else on the same host could have, and can, connect to the tube. The tube can be closed at this point if this would be unacceptable security-wise. To totally prevent the tube from being accepted in the first place, one can close it already when tubeOffered() is emitted for it - support for the needed security mechanism can be queried using its supportsIPv4SocketsWithSpecifiedAddress() accessor.

The handler is registered on the bus at the latest when this method or setToAcceptAsUnix() is called for the first time, so one should check the return value of isRegistered() at that point to verify that was successful.

Parameters
generatorA pointer to the source address generator to use, or 0 to allow all connections from the local host.
Todo:
Make it possible to set the tube client to auto-close tubes if the desired access control level is not achieved, as an alternative to the current best-effort behavior.
void Tp::StreamTubeClient::setToAcceptAsUnix ( bool  requireCredentials = false)

Set the client to accept tubes received to handle in the future in a fashion which will yield a Unix socket as the local endpoint to connect to.

If that doesn't cause problems for the payload protocol, it's possible to increase security by restricting the processes allowed to connect to the local endpoint socket to those from the same user ID as the protocol backend is running as by setting requireCredentials to true. This requires transmitting a single byte, signaled as the credentialByte parameter to the tubeAcceptedAsUnix() signal, in a SCM_CREDS or SCM_CREDENTIALS message, whichever is supported by the platform, as the first thing after having connected to the socket. Even if the platform doesn't implement either concept, the byte must still be sent.

However, not all protocol backends support the credential passing based access control on all the platforms they can run on. If a tube is offered through such a backend, tubeAcceptedAsUnix() will be emitted with requiresCredentials set to false, to signal that a credential byte should NOT be sent for that tube, and that any local process can or could have connected to the tube already. The tube can be closed at this point if this would be unacceptable security-wise. To totally prevent the tube from being accepted in the first place, one can close it already when tubeOffered() is emitted for it - support for the needed security mechanism can be queried using its supportsIPv4SocketsWithSpecifiedAddress() accessor.

The handler is registered on the bus at the latest when this method or setToAcceptAsTcp() is called for the first time, so one should check the return value of isRegistered() at that point to verify that was successful.

Parameters
requireCredentialstrue to try and restrict connecting by UID, false to allow all connections.
Todo:
Make it possible to set the tube client to auto-close tubes if the desired access control level is not achieved, as an alternative to the current best-effort behavior.
QList< StreamTubeClient::Tube > Tp::StreamTubeClient::tubes ( ) const

Return the tubes currently handled by the client.

Returns
A list of Tube structures containing pointers to the account and tube channel for each tube.
QHash< StreamTubeClient::Tube, QSet< uint > > Tp::StreamTubeClient::connections ( ) const

Return the ongoing connections established through tubes signaled by this client.

The returned mapping has for each Tube a structure containing pointers to the account and tube channel objects as keys, with the integer identifiers for the current connections on them as the values. The IDs are unique amongst the connections active on a single tube at any given time, but not globally.

This is effectively a state recovery accessor corresponding to the change notification signals newConnection() and connectionClosed().

The mapping is only populated if connection monitoring was requested when creating the client (so monitorsConnections() returns true).

Returns
The connections in a mapping with Tube structures containing pointers to the account and channel objects for each tube as keys, and the sets of numerical IDs as values.
void Tp::StreamTubeClient::tubeOffered ( const Tp::AccountPtr &  account,
const Tp::IncomingStreamTubeChannelPtr &  tube 
)
signal

Emitted when one of the services we're interested in connecting to has been offered by us as a tube, which we've began handling.

This is emitted before invoking the TcpSourceAddressGenerator, if any, for the tube.

Parameters
accountA pointer to the account through which the tube was offered.
tubeA pointer to the actual tube channel.
void Tp::StreamTubeClient::tubeClosed ( const Tp::AccountPtr &  account,
const Tp::IncomingStreamTubeChannelPtr &  tube,
const QString &  error,
const QString &  message 
)
signal

Emitted when a tube we've been handling (previously announced with tubeOffered()) has encountered an error or has otherwise been closed from further communication.

Parameters
accountA pointer to the account through which the tube was offered.
tubeA pointer to the actual tube channel.
errorThe D-Bus error name corresponding to the reason for the closure.
messageA freeform debug message associated with the error.
void Tp::StreamTubeClient::tubeAcceptedAsTcp ( const QHostAddress &  listenAddress,
quint16  listenPort,
const QHostAddress &  sourceAddress,
quint16  sourcePort,
const Tp::AccountPtr &  account,
const Tp::IncomingStreamTubeChannelPtr &  tube 
)
signal

Emitted when a tube offered to us (previously announced with tubeOffered()) has been successfully accepted and a TCP socket established as the local endpoint, as specified by setToAcceptAsTcp().

The allowed source address and port are signaled here if there was a TcpSourceAddressGenerator set at the time of accepting this tube, it yielded a non-zero address, and the protocol backend supports source address based access control. This enables the application to use the correct one of the sockets it currently has bound to the generated addresses.

Parameters
listenAddressThe listen address of the local endpoint socket.
listenPortThe listen port of the local endpoint socket.
sourceAddressThe host address allowed to connect to the tube, or QHostAddress::Any if source address based access control is not in use.
sourcePortThe port from which connections are allowed to the tube, or 0 if source address based access control is not in use.
accountA pointer to the account object through which the tube was offered.
tubeA pointer to the actual tube channel object.
void Tp::StreamTubeClient::tubeAcceptedAsUnix ( const QString &  listenAddress,
bool  requiresCredentials,
uchar  credentialByte,
const Tp::AccountPtr &  account,
const Tp::IncomingStreamTubeChannelPtr &  tube 
)
signal

Emitted when a tube offered to us (previously announced with tubeOffered()) has been successfully accepted and a Unix socket established as the local endpoint, as specified by setToAcceptAsUnix().

The credential byte which should be sent after connecting to the tube (in a SCM_CREDENTIALS or SCM_CREDS message if supported by the platform) will be signaled here if the client was set to attempt requiring credentials at the time of accepting this tube, and the protocol backend supports credential passing based access control. Otherwise, requiresCredentials will be false and no byte or associated out-of-band credentials metadata should be sent.

Parameters
listenAddressThe listen address of the local endpoint socket.
requiresCredentialstrue if credentialByte should be sent after connecting to the socket, false if not.
credentialByteThe byte to send if requiresCredentials is true.
accountA pointer to the account object through which the tube was offered.
tubeA pointer to the actual tube channel object.
void Tp::StreamTubeClient::newConnection ( const Tp::AccountPtr &  account,
const Tp::IncomingStreamTubeChannelPtr &  tube,
uint  connectionId 
)
signal

Emitted when a new connection has been made to the local endpoint socket for tube.

This can be used to later associate connection errors reported by connectionClosed() with the corresponding application sockets. However, establishing the association generally requires connecting only one socket at a time, waiting for newConnection() to be emitted, and only then proceeding, as there is no identification for the connections unlike the incoming connections in StreamTubeServer.

Note that the connection IDs are only unique within a given tube, so identification of the tube channel must also be recorded together with the ID to establish global uniqueness. Even then, the a connection ID can be reused after the previous connection identified by it having been signaled as closed with connectionClosed().

This is only emitted if connection monitoring was enabled when creating the StreamTubeClient.

Parameters
accountA pointer to the account through which the tube was offered.
tubeA pointer to the tube channel through which the connection has been made.
connectionIdThe integer ID of the new connection.
void Tp::StreamTubeClient::connectionClosed ( const Tp::AccountPtr &  account,
const Tp::IncomingStreamTubeChannelPtr &  tube,
uint  connectionId,
const QString &  error,
const QString &  message 
)
signal

Emitted when a connection (previously announced with newConnection()) through one of our handled tubes has been closed due to an error or by a graceful disconnect (in which case the error is TP_QT_ERROR_CANCELLED).

This is only emitted if connection monitoring was enabled when creating the StreamTubeClient.

Parameters
accountA pointer to the account through which the tube was offered.
tubeA pointer to the tube channel through which the connection had been made.
connectionIdThe integer ID of the connection closed.
errorThe D-Bus error name corresponding to the reason for the closure.
messageA freeform debug message associated with the error.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00283.html0000644000175100017520000004416212530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceContactBlockingAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactBlockingAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

void BlockContacts (const Tp::UIntList &contacts, bool reportAbusive, const QDBusMessage &dbusMessage)
 
void UnblockContacts (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
Tp::HandleIdentifierMap RequestBlockedContacts (const QDBusMessage &dbusMessage)
 

Signals

void BlockedContactsChanged (const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts)
 

Public Member Functions

uint ContactBlockingCapabilities () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceContactBlockingAdaptor::ContactBlockingCapabilities ( ) const

Return the value of the exported D-Bus object property ContactBlockingCapabilities of type uint.

Adaptees should export this property as a Qt property named 'contactBlockingCapabilities' with type uint.

Additional capabilities for contact blocking; currently, this is limited to whether contacts may be reported as abusive.

Note that there is no capability for supporting blocking itself: the presence of this interface on a ConnectionInterface indicates that blocking contacts is supported.

Returns
The value of exported property ContactBlockingCapabilities.
void Tp::Service::ConnectionInterfaceContactBlockingAdaptor::BlockContacts ( const Tp::UIntList contacts,
bool  reportAbusive,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void blockContacts(const Tp::UIntList& contacts, bool reportAbusive, const Tp::Service::ConnectionInterfaceContactBlockingAdaptor::BlockContactsContextPtr &context);

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

Direct the server to block some contacts. The precise effect is protocol-dependent, but SHOULD include ignoring all current and subsequent communications from the given contacts, avoiding sending presence to them in future, and if they were already receiving the local user's presence, behaving as if the local user went offline.

Parameters
contacts
Some contacts to block. If some of the contacts in this list are 
already blocked, the connection manager MUST act as if they were 
not specified in this list.
reportAbusive

In addition to blocking, report these contacts as abusive to the server administrators.

Clients can determine whether this capability is available by checking the \\\ \\link requestPropertyContactBlockingCapabilities() ContactBlockingCapabilities \\endlink \\htmlonly property. If this argument is set to True by a client despite \\endhtmlonly \\link requestPropertyContactBlockingCapabilities() ContactBlockingCapabilities \\endlink \\htmlonly not containing the Can_Report_Abusive flag, the connection manager SHOULD act as if it were False and simply block the supplied contacts.

A correct user interface shouldn't get this far without knowing that reporting abusive contacts is not supported. If it does, then the user has expressed their intention to block these contacts. Returning an error would leave the UI with three options:
  • Ignore the error, leaving the contacts not actually blocked;
  • Display an error to the user;
  • Call this method again, passing False for this argument.
None of these seem preferable to the CM just ignoring this flag if it doesn't support it: that way, the contacts will be blocked, as the user requested, and UIs have fewer ways to mess up entirely.
void Tp::Service::ConnectionInterfaceContactBlockingAdaptor::UnblockContacts ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void unblockContacts(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactBlockingAdaptor::UnblockContactsContextPtr &context);

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

Direct the server to unblock some contacts.

Parameters
contacts
Some contacts to unblock. If some of the contacts in this list are 
not currently blocked, the connection manager MUST act as if they 
were not specified in this list.
Tp::HandleIdentifierMap Tp::Service::ConnectionInterfaceContactBlockingAdaptor::RequestBlockedContacts ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestBlockedContacts(const Tp::Service::ConnectionInterfaceContactBlockingAdaptor::RequestBlockedContactsContextPtr &context);

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

List the contacts that are blocked.

Clients SHOULD allow a relatively long timeout for calls to this method, since on some protocols contact blocking is part of the contact list, which can take a significant time to retrieve.

Returns
The blocked contacts’ handles, together with their identifiers.
void Tp::Service::ConnectionInterfaceContactBlockingAdaptor::BlockedContactsChanged ( const Tp::HandleIdentifierMap blockedContacts,
const Tp::HandleIdentifierMap unblockedContacts 
)
signal

Represents the exported D-Bus signal BlockedContactsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void blockedContactsChanged(const Tp::HandleIdentifierMap& blockedContacts, const Tp::HandleIdentifierMap& unblockedContacts);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
blockedContacts
Contacts added to the result of RequestBlockedContacts.
unblockedContacts
Contacts removed from the result of RequestBlockedContacts.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01244.html0000644000175100017520000002652112530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallContentInterfaceVideoControlInterface Member List

This is the complete list of members for Tp::Client::CallContentInterfaceVideoControlInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
BitrateChanged(uint newBitrate)Tp::Client::CallContentInterfaceVideoControlInterfacesignal
CallContentInterfaceVideoControlInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceVideoControlInterface
CallContentInterfaceVideoControlInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallContentInterfaceVideoControlInterface
CallContentInterfaceVideoControlInterface(Tp::DBusProxy *proxy)Tp::Client::CallContentInterfaceVideoControlInterface
CallContentInterfaceVideoControlInterface(const Tp::Client::CallContentInterface &mainInterface)Tp::Client::CallContentInterfaceVideoControlInterfaceexplicit
CallContentInterfaceVideoControlInterface(const Tp::Client::CallContentInterface &mainInterface, QObject *parent)Tp::Client::CallContentInterfaceVideoControlInterface
FramerateChanged(uint newFramerate)Tp::Client::CallContentInterfaceVideoControlInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallContentInterfaceVideoControlInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
KeyFrameRequested()Tp::Client::CallContentInterfaceVideoControlInterfacesignal
MTUChanged(uint newMTU)Tp::Client::CallContentInterfaceVideoControlInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::CallContentInterfaceVideoControlInterfaceinline
requestPropertyBitrate() const Tp::Client::CallContentInterfaceVideoControlInterfaceinline
requestPropertyFramerate() const Tp::Client::CallContentInterfaceVideoControlInterfaceinline
requestPropertyManualKeyFrames() const Tp::Client::CallContentInterfaceVideoControlInterfaceinline
requestPropertyMTU() const Tp::Client::CallContentInterfaceVideoControlInterfaceinline
requestPropertyVideoResolution() const Tp::Client::CallContentInterfaceVideoControlInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallContentInterfaceVideoControlInterfaceinlinestatic
VideoResolutionChanged(const Tp::VideoResolution &newResolution)Tp::Client::CallContentInterfaceVideoControlInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00028.html0000644000175100017520000001107412530426257021135 0ustar00kaffeinekaffeine00000000000000 protocols/cm-wrapper.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocols/cm-wrapper.cpp
#include "cm-wrapper.h"
#include "_gen/cm-wrapper.moc.hpp"
#include <TelepathyQt/Debug>
#include <TelepathyQt/ConnectionManager>
#include <TelepathyQt/PendingReady>
#include <QDebug>
CMWrapper::CMWrapper(const QString &cmName, QObject *parent)
: QObject(parent),
mCM(ConnectionManager::create(cmName))
{
connect(mCM->becomeReady(),
SIGNAL(finished(Tp::PendingOperation *)),
SLOT(onCMReady(Tp::PendingOperation *)));
}
CMWrapper::~CMWrapper()
{
}
ConnectionManagerPtr CMWrapper::cm() const
{
return mCM;
}
void CMWrapper::onCMReady(PendingOperation *op)
{
if (op->isError()) {
qWarning() << "CM" << mCM->name() << "cannot become ready -" <<
op->errorName() << ": " << op->errorMessage();
return;
}
qDebug() << "CM" << mCM->name() << "ready!";
qDebug() << "Supported protocols:";
foreach (const QString &protocol, mCM->supportedProtocols()) {
qDebug() << "\t" << protocol;
}
emit finished();
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x78.html0000644000175100017520000000327712530426260023121 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- x -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00342.html0000644000175100017520000024403212530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::DBusTubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The DBusTubeChannel class represents a Telepathy channel of type DBusTube. More...

#include <TelepathyQt/DBusTubeChannel>

Inherits Tp::TubeChannel.

Inherited by Tp::IncomingDBusTubeChannel, and Tp::OutgoingDBusTubeChannel.

Signals

void busNameAdded (const QString &busName, const Tp::ContactPtr &contact)
 
void busNameRemoved (const QString &busName, const Tp::ContactPtr &contact)
 
- Signals inherited from Tp::TubeChannel
void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~DBusTubeChannel ()
 
QString serviceName () const
 
bool supportsRestrictingToCurrentUser () const
 
QHash< QString, Tp::ContactPtr > contactsForBusNames () const
 
QString address () const
 
- Public Member Functions inherited from Tp::TubeChannel
virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static DBusTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::TubeChannel
static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureBusNameMonitoring
 
- Static Public Attributes inherited from Tp::TubeChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 DBusTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Protected Member Functions inherited from Tp::TubeChannel
 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The DBusTubeChannel class represents a Telepathy channel of type DBusTube.

It provides a private bus which can be used as a peer-to-peer connection in case of a Contact Channel, or as a full-fledged bus in case of a Room Channel.

DBusTubeChannel is an intermediate base class; OutgoingDBusTubeChannel and IncomingDBusTubeChannel are the specialized classes used for locally and remotely initiated tubes respectively.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::DBusTubeChannel::~DBusTubeChannel ( )
virtual

Class destructor.

Tp::DBusTubeChannel::DBusTubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
protected

Construct a new DBusTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.

Member Function Documentation

DBusTubeChannelPtr Tp::DBusTubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new DBusTubeChannel channel.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.
Returns
A DBusTubeChannelPtr object pointing to the newly created DBusTubeChannel object.
QString Tp::DBusTubeChannel::serviceName ( ) const

Returns the service name which will be used over the tube. This should be a well-known and valid DBus service name, in the form "org.my.service".

This method requires DBusTubeChannel::FeatureCore to be enabled.

Returns
the service name that will be used over the tube
bool Tp::DBusTubeChannel::supportsRestrictingToCurrentUser ( ) const

Checks if this tube is capable to accept or offer a private bus which will allow connections only from the current user

This method is useful only if your appliance is really security-sensitive: in general, this restriction is always enabled by default on all tubes offered or accepted from Telepathy-Qt, falling back to a general connection allowance if this feature is not available.

If your application does not have specific needs regarding DBus credentials, you can trust Telepathy-Qt to do the right thing - in any case, the most secure method available will be used by default.

This method requires DBusTubeChannel::FeatureCore to be enabled.

Returns
Whether this DBus tube is capable to accept or offer a private bus restricting access to it to the current user only.
See Also
IncomingDBusTubeChannel::acceptTube
OutgoingDBusTubeChannel::offerTube
QHash< QString, Tp::ContactPtr > Tp::DBusTubeChannel::contactsForBusNames ( ) const

This function returns all the known active bus names in this tube. It requires FeatureBusNameMonitoring to be activated; however, even a late activation of the feature will make this function return a full list of all the connected bus names, including the ones which appeared before the activation of the feature itself.

This function will always return an empty hash in case the tube is p2p, even if FeatureBusNameMonitoring has been activated.

This method requires FeatureBusNameMonitoring to be enabled.

Returns
A list of active connection ids known to this tube
QString Tp::DBusTubeChannel::address ( ) const

If the tube has been opened, this function returns the private bus address you should be connecting to for using this tube.

Please note this function will return a meaningful value only if the tube has already been opened successfully: in case of failure or the tube being still pending, an empty QString will be returned.

Note
If you plan to use QtDBus for the DBus connection, please note you should always use QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use of DBus Tubes through QtDBus.
Returns
The address of the private bus opened by this tube
void Tp::DBusTubeChannel::busNameAdded ( const QString &  busName,
const Tp::ContactPtr &  contact 
)
signal

Emitted when a new participant joins this tube.

This signal will be emitted only if the tube is a group tube (not p2p), and if the FeatureBusNameMonitoring feature has been enabled.

Parameters
busNameThe bus name of the new participant
contactThe ContactPtr identifying the participant
void Tp::DBusTubeChannel::busNameRemoved ( const QString &  busName,
const Tp::ContactPtr &  contact 
)
signal

Emitted when a participant leaves this tube.

This signal will be emitted only if the tube is a group tube (not p2p), and if the FeatureBusNameMonitoring feature has been enabled.

Parameters
busNameThe bus name of the participant leaving
contactThe ContactPtr identifying the participant

Member Data Documentation

const Feature Tp::DBusTubeChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the DBusTubeChannel object usable.

Note that this feature must be enabled in order to use most DBusTubeChannel methods. See specific methods documentation for more details.

const Feature Tp::DBusTubeChannel::FeatureBusNameMonitoring
static

Feature used in order to monitor bus names in this DBus tube.

See bus name monitoring specific methods' documentation for more details.

See Also
busNameAdded(), busNameRemoved()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01303.html0000644000175100017520000002772312530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceCellularInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceCellularInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceCellularInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceCellularInterface
ConnectionInterfaceCellularInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceCellularInterface
ConnectionInterfaceCellularInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceCellularInterface
ConnectionInterfaceCellularInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceCellularInterfaceexplicit
ConnectionInterfaceCellularInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceCellularInterface
IMSIChanged(const QString &IMSI)Tp::Client::ConnectionInterfaceCellularInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceCellularInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
requestPropertyIMSI() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
requestPropertyMessageNationalCharacterSet() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
requestPropertyMessageReducedCharacterSet() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
requestPropertyMessageServiceCentre() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
requestPropertyMessageValidityPeriod() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
requestPropertyOverrideMessageServiceCentre() const Tp::Client::ConnectionInterfaceCellularInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyMessageNationalCharacterSet(QString newValue)Tp::Client::ConnectionInterfaceCellularInterfaceinline
setPropertyMessageReducedCharacterSet(bool newValue)Tp::Client::ConnectionInterfaceCellularInterfaceinline
setPropertyMessageServiceCentre(QString newValue)Tp::Client::ConnectionInterfaceCellularInterfaceinline
setPropertyMessageValidityPeriod(uint newValue)Tp::Client::ConnectionInterfaceCellularInterfaceinline
setPropertyOverrideMessageServiceCentre(bool newValue)Tp::Client::ConnectionInterfaceCellularInterfaceinline
staticInterfaceName()Tp::Client::ConnectionInterfaceCellularInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00097.html0000644000175100017520000011177512530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for channel implementations. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::DBusService.

Signals

void closed ()
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~BaseChannel ()
 
QVariantMap immutableProperties () const
 
bool registerObject (DBusError *error=NULL)
 
virtual QString uniqueName () const
 
QString channelType () const
 
QList
< AbstractChannelInterfacePtr > 
interfaces () const
 
AbstractChannelInterfacePtr interface (const QString &interfaceName) const
 
uint targetHandle () const
 
QString targetID () const
 
uint targetHandleType () const
 
bool requested () const
 
uint initiatorHandle () const
 
QString initiatorID () const
 
Tp::ChannelDetails details () const
 
void setInitiatorHandle (uint initiatorHandle)
 
void setInitiatorID (const QString &initiatorID)
 
void setTargetID (const QString &targetID)
 
void setRequested (bool requested)
 
void close ()
 
bool plugInterface (const AbstractChannelInterfacePtr &interface)
 
- Public Member Functions inherited from Tp::DBusService
 DBusService (const QDBusConnection &dbusConnection)
 
virtual ~DBusService ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelPtr create (BaseConnection *connection, const QString &channelType, Tp::HandleType targetHandleType=Tp::HandleTypeNone, uint targetHandle=0)
 

Protected Member Functions

 BaseChannel (const QDBusConnection &dbusConnection, BaseConnection *connection, const QString &channelType, uint targetHandleType, uint targetHandle)
 
virtual bool registerObject (const QString &busName, const QString &objectPath, DBusError *error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for channel implementations.

Constructor & Destructor Documentation

Tp::BaseChannel::~BaseChannel ( )
virtual

Class destructor.

Tp::BaseChannel::BaseChannel ( const QDBusConnection &  dbusConnection,
BaseConnection connection,
const QString &  channelType,
uint  targetHandleType,
uint  targetHandle 
)
protected

Member Function Documentation

static BaseChannelPtr Tp::BaseChannel::create ( BaseConnection connection,
const QString &  channelType,
Tp::HandleType  targetHandleType = Tp::HandleTypeNone,
uint  targetHandle = 0 
)
inlinestatic
QVariantMap Tp::BaseChannel::immutableProperties ( ) const
virtual

Return the immutable properties of this channel object.

Immutable properties cannot change after the object has been registered on the bus with registerObject().

Returns
The immutable properties of this channel object.

Implements Tp::DBusService.

bool Tp::BaseChannel::registerObject ( DBusError error = NULL)
QString Tp::BaseChannel::uniqueName ( ) const
virtual

Return a unique name for this channel.

Returns
A unique name for this channel.
QString Tp::BaseChannel::channelType ( ) const
QList< AbstractChannelInterfacePtr > Tp::BaseChannel::interfaces ( ) const
AbstractChannelInterfacePtr Tp::BaseChannel::interface ( const QString &  interfaceName) const

Return a pointer to the interface with the given name.

Parameters
interfaceNameThe D-Bus name of the interface, ex. TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING.
Returns
A pointer to the AbstractProtocolInterface object that implements the D-Bus interface with the given name, or a null pointer if such an interface has not been plugged into this object.
See Also
plugInterface(), interfaces()
uint Tp::BaseChannel::targetHandle ( ) const
QString Tp::BaseChannel::targetID ( ) const
uint Tp::BaseChannel::targetHandleType ( ) const
bool Tp::BaseChannel::requested ( ) const
uint Tp::BaseChannel::initiatorHandle ( ) const
QString Tp::BaseChannel::initiatorID ( ) const
Tp::ChannelDetails Tp::BaseChannel::details ( ) const
void Tp::BaseChannel::setInitiatorHandle ( uint  initiatorHandle)
void Tp::BaseChannel::setInitiatorID ( const QString &  initiatorID)
void Tp::BaseChannel::setTargetID ( const QString &  targetID)
void Tp::BaseChannel::setRequested ( bool  requested)
void Tp::BaseChannel::close ( )
bool Tp::BaseChannel::plugInterface ( const AbstractChannelInterfacePtr &  interface)

Plug a new interface into this Protocol D-Bus object.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
interfaceAn AbstractProtocolInterface instance that implements the interface that is to be plugged.
Returns
true on success or false otherwise
See Also
interfaces(), interface()
void Tp::BaseChannel::closed ( )
signal
bool Tp::BaseChannel::registerObject ( const QString &  busName,
const QString &  objectPath,
DBusError error 
)
protectedvirtual

Reimplemented from DBusService.

Reimplemented from Tp::DBusService.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01058.html0000644000175100017520000000657712530426260021147 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Object Member List

This is the complete list of members for Tp::Object, including all inherited members.

notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00902.html0000644000175100017520000001004212530426257021130 0ustar00kaffeinekaffeine00000000000000 Todo List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Todo List
Member Tp::Channel::create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
immutableProperties should be used to populate the corresponding accessors (such as channelType()) already on construction, not only when making FeatureCore ready (fd.o #41654)
Member Tp::DBusProxyFactory::initialPrepare (const DBusProxyPtr &proxy) const
FIXME actually implement this... :) Currently just a vtable placeholder.
Member Tp::DBusProxyFactory::readyPrepare (const DBusProxyPtr &proxy) const
FIXME actually implement this... :) Currently just a vtable placeholder.
Member Tp::Object::notify (const char *propertyName)
Use for more classes beyond Account. Most importantly Contact.
Class Tp::StreamTubeClient
Coin up a small Python script or alike to easily generate the .client and .service files. (fd.o #41614)
Member Tp::StreamTubeClient::setToAcceptAsTcp (TcpSourceAddressGenerator *generator=0)
Make it possible to set the tube client to auto-close tubes if the desired access control level is not achieved, as an alternative to the current best-effort behavior.
Member Tp::StreamTubeClient::setToAcceptAsUnix (bool requireCredentials=false)
Make it possible to set the tube client to auto-close tubes if the desired access control level is not achieved, as an alternative to the current best-effort behavior.
Class Tp::StreamTubeServer

Coin up a small Python script or alike to easily generate the .client and .service files. (fd.o #41614)

Support exporting Unix sockets as well. (fd.o #41615)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00401.html0000644000175100017520000002502312530426260021121 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor5 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
typedef R(T::* Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5)
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
typedef R Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >::MemberFunctor5 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
ResultType Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5 
) const
inline

Member Data Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
T* Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >::object
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
FunctionType Tp::MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01372.html0000644000175100017520000001116412530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAnonymityAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00156.html0000644000175100017520000012411112530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::CallStream Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The CallStream class provides an object representing a Telepathy Call.Stream. More...

#include <TelepathyQt/CallStream>

Inherits Tp::StatefulDBusProxy, and Tp::OptionalInterfaceFactory< CallStream >.

Signals

void localSendingStateChanged (Tp::SendingState localSendingState, const Tp::CallStateReason &reason)
 
void remoteSendingStateChanged (const QHash< Tp::ContactPtr, Tp::SendingState > &remoteSendingStates, const Tp::CallStateReason &reason)
 
void remoteMembersRemoved (const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

 ~CallStream ()
 
CallContentPtr content () const
 
Contacts remoteMembers () const
 
bool canRequestReceiving () const
 
SendingState localSendingState () const
 
SendingState remoteSendingState (const ContactPtr &contact) const
 
PendingOperationrequestSending (bool send)
 
PendingOperationrequestReceiving (const ContactPtr &contact, bool receive)
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< CallStream >
 OptionalInterfaceFactory (CallStream *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< CallStream >
enum  InterfaceSupportedChecking
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< CallStream >
void setInterfaces (const QStringList &interfaces)
 

Detailed Description

The CallStream class provides an object representing a Telepathy Call.Stream.

Instances of this class cannot be constructed directly; the only way to get one is via CallContent.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::CallStream::~CallStream ( )

Class destructor.

Member Function Documentation

CallContentPtr Tp::CallStream::content ( ) const

Return the content owning this call stream.

Returns
The content owning this call stream.
Contacts Tp::CallStream::remoteMembers ( ) const

Return the contacts whose the call stream is with.

Returns
The contacts whose the call stream is with.
See Also
remoteMembersRemoved()
bool Tp::CallStream::canRequestReceiving ( ) const

Returns whether the user can request that a remote contact starts sending on this stream. Not all protocols allow the user to ask the other side to start sending media.

Returns
true if the user can request that a remote contact starts sending on this stream, or false otherwise.
See Also
requestReceiving()
SendingState Tp::CallStream::localSendingState ( ) const

Return the call stream local sending state.

Returns
The call stream local sending state.
See Also
localSendingStateChanged()
SendingState Tp::CallStream::remoteSendingState ( const ContactPtr &  contact) const

Return the call stream remote sending state for a given contact.

Returns
The call stream remote sending state for a contact.
See Also
remoteSendingStateChanged()
PendingOperation * Tp::CallStream::requestSending ( bool  send)

Request that media starts or stops being sent on this call stream.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
localSendingStateChanged()
PendingOperation * Tp::CallStream::requestReceiving ( const ContactPtr &  contact,
bool  receive 
)

Request that a remote contact stops or starts sending on this call stream.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
remoteSendingStateChanged()
void Tp::CallStream::localSendingStateChanged ( Tp::SendingState  localSendingState,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when the local sending state of this call stream changes.

Parameters
localSendingStateThe new local sending state of this call stream.
reasonThe reason that caused this change
See Also
localSendingState()
void Tp::CallStream::remoteSendingStateChanged ( const QHash< Tp::ContactPtr, Tp::SendingState > &  remoteSendingStates,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when any remote sending state of this call stream changes.

Parameters
remoteSendingStatesThe new remote sending states of this call stream.
reasonThe reason that caused these changes
See Also
remoteSendingState()
void Tp::CallStream::remoteMembersRemoved ( const Tp::Contacts &  members,
const Tp::CallStateReason reason 
)
signal

This signal is emitted when one or more members of this stream are removed.

Parameters
membersThe members that were removed from this call stream.
reasonThe reason for that caused these removals
See Also
remoteMembers()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01117.html0000644000175100017520000001010712530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer::RemoteContact Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00971.html0000644000175100017520000001300612530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller1< Functor, R, Arg1 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00470.html0000644000175100017520000011573512530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ProtocolInterfaceAddressingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ConnectionManager>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > NormalizeVCardAddress (const QString &VCardField, const QString &VCardAddress, int timeout=-1)
 
QDBusPendingReply< QString > NormalizeContactURI (const QString &URI, int timeout=-1)
 

Public Member Functions

 ProtocolInterfaceAddressingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterfaceAddressingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterfaceAddressingInterface (Tp::DBusProxy *proxy)
 
 ProtocolInterfaceAddressingInterface (const Tp::Client::ConnectionManagerInterface &mainInterface)
 
 ProtocolInterfaceAddressingInterface (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAddressableVCardFields () const
 
Tp::PendingVariantrequestPropertyAddressableURISchemes () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterfaceAddressingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterfaceAddressingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface ( Tp::DBusProxy proxy)

Creates a ProtocolInterfaceAddressingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface ( const Tp::Client::ConnectionManagerInterface mainInterface)
explicit

Creates a ProtocolInterfaceAddressingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ProtocolInterfaceAddressingInterface::ProtocolInterfaceAddressingInterface ( const Tp::Client::ConnectionManagerInterface mainInterface,
QObject *  parent 
)

Creates a ProtocolInterfaceAddressingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ProtocolInterfaceAddressingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Protocol.Interface.Addressing", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAddressingInterface::requestPropertyAddressableVCardFields ( ) const
inline

Asynchronous getter for the remote object property AddressableVCardFields of type QStringList.

The vCard fields that can be used to request a contact with normalized to lower case. If the URL vCard field is addressable, a colon, followed by the supported URI schemes will be concatenated.

For example: ["tel", "x-sip"].

The url vCard field MUST NOT appear here; see AddressableURISchemes instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.

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 AddressableVCardFields. The corresponding value is a list of strings, each followed with a semicolon and in the syntax of the "localestring" type from the Desktop Entry Specification.

Well-known vCard fields:

tel
The TEL vCard field. Used for phone numbers.
x-sip
The X-SIP vCard field. Used for SIP addresses.
x-aim
The X-AIM vCard field. Used for AIM user IDs.
x-icq
The X-ICQ vCard field. Used for ICQ UINs.
x-skype
The X-SKYPE vCard field. Used for Skype user names or telephone numbers. There is also a X-SKYPE-USERNAME field, but for Telepathy purposes, x-skype is preferred
x-groupwise
The X-GROUPWISE vCard field. Used for Groupwise contacts.
x-gadugadu
The X-GADUGADU vCard field. Used for Gadu-Gadu contacts.
x-jabber
The X-JABBER vCard field. Used for XMPP JIDs.
x-msn
The X-MSN vCard field. Used for MSN contacts.
x-yahoo
The X-YAHOO vCard field. Used for Yahoo! IDs.
x-facebook-id
Used for Facebook IDs in XMPP. If the user JID is "-12345@chat.facebook.com" then the x-facebook-id is "12345"
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAddressingInterface::requestPropertyAddressableURISchemes ( ) const
inline

Asynchronous getter for the remote object property AddressableURISchemes of type QStringList.

The URI schemes that are supported by this protocol.

For example: ["tel", "sip"].

This property should only be used when the connection is offline. When it is connected the addressable URI schemes should be retrieved from the ConnectionInterfaceRequestsInterface::RequestableChannelClasses 's TargetURIScheme fixed-property instead.

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 AddressableURISchemes. The corresponding value is a list of strings, each followed with a semicolon and in the syntax of the "localestring" type from the Desktop Entry Specification.

Well-known URI schemes:

sip
SIP protocol. For example: sip:julien@example.com.
sips
Secure (encrypted) SIP protocol. For example: sips:julien@example.com.
tel
Used for telephone numbers. For example: tel:+12065551234.
xmpp
XMPP protocol. For example: xmpp:julien@example.com.
msnim
For the purposes of ProtocolInterfaceAddressingInterface , ConnectionInterfaceAddressingInterface , and org.freedesktop.Telepathy.Channel.Interface.Addressing1 , the verb part is ignored, and SHOULD be add; the contact field in the query string is used to identify the contact. For example: msnim:add?contact=julien.
aim
For the purposes of ProtocolInterfaceAddressingInterface , ConnectionInterfaceAddressingInterface , and org.freedesktop.Telepathy.Channel.Interface.Addressing1 , the verb part is ignored, and SHOULD be addbuddy; the screenname field in the query string is used to identify the contact. For example: aim:addbuddy?screenname=julien.
skype
Skype protocol. For example: skype:julien.
ymsgr
For the purposes of ProtocolInterfaceAddressingInterface , ConnectionInterfaceAddressingInterface , and org.freedesktop.Telepathy.Channel.Interface.Addressing1 , the verb part is ignored, and SHOULD be addfriend; the query string is used to identify the contact. For example: ymsgr:addfriend?julien.
gg
Gadu-Gadu protocol. For example: gg:julien.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ProtocolInterfaceAddressingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::ProtocolInterfaceAddressingInterface::NormalizeVCardAddress ( const QString &  VCardField,
const QString &  VCardAddress,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NormalizeVCardAddress on the remote object.

Attempt to normalize the given vCard address. Where possible, this SHOULD return an address that would appear in the org.freedesktop.Telepathy.Connection.Interface.Addressing1/addresses attribute for a contact 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.

An example would be a vCard TEL field with a formatted number in the form of +1 (206) 555 1234, this would be normalized to +12065551234.

This method MAY simply raise NotImplemented on some protocols, if it has no use.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
VCardField
The vCard field of the address we are normalizing. The field name 
SHOULD be in lower case, and MUST appear in AddressableVCardFields.
VCardAddress
The address to normalize, which is assumed to belong to a contact 
(and not, for instance, a chatroom or server).
timeoutThe timeout in milliseconds.
Returns
The vCard address, normalized as much as possible.
QDBusPendingReply<QString> Tp::Client::ProtocolInterfaceAddressingInterface::NormalizeContactURI ( const QString &  URI,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method NormalizeContactURI on the remote object.

Attempt to normalize the given contact URI. Where possible, this SHOULD return an address that would appear in the org.freedesktop.Telepathy.Connection.Interface.Addressing1/uris attribute for a contact 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.

If the URI has extra information beyond what's necessary to identify a particular contact, such as an XMPP resource or an action to carry out, this extra information SHOULD be removed. If all URIs in a scheme contain a verb or action (like aim, ymsgr and msnim URIs), then the verb SHOULD be replaced with the one specified in AddressableURISchemes .

This method is intended to normalize URIs stored in address books, for instance. In protocols like XMPP, if you vary the resource or action (query string), the URI still refers to the same high-level contact.

For instance, xmpp:romeo@Example.Com/Empathy?message;body=Hello would be normalized to xmpp:romeo@example.com, and aim:goim?screenname=Romeo%20M&message=Hello would be normalized to aim:addbuddy?screenname=romeom.

This method MAY simply raise NotImplemented on some protocols, if it has no use.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
URI
The URI to normalize, which is assumed to refer to a contact (as 
opposed to, for instance, a chatroom or a server). In some 
protocols, like XMPP, there is no way to tell whether a given URI 
refers to a contact or a chatroom by looking at its syntax. The 
URI&apos;s scheme (i.e. the part before the first colon) MUST 
appear in AddressableURISchemes.
timeoutThe timeout in milliseconds.
Returns
A URI, normalized as much as possible.
void Tp::Client::ProtocolInterfaceAddressingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00215.html0000644000175100017520000007666712530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceRoomInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelInterfaceRoomInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceRoomInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceRoomInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceRoomInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceRoomInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyRoomName () const
 
Tp::PendingVariantrequestPropertyServer () const
 
Tp::PendingVariantrequestPropertyCreator () const
 
Tp::PendingVariantrequestPropertyCreatorHandle () const
 
Tp::PendingVariantrequestPropertyCreationTimestamp () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Room2".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceRoomInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceRoomInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceRoomInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceRoomInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceRoomInterface::ChannelInterfaceRoomInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceRoomInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceRoomInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Room2", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomInterface::requestPropertyRoomName ( ) const
inline

Asynchronous getter for the remote object property RoomName of type QString.

The human-readable identifier of a chat room. Note that if non-empty, this property (and perhaps also Server ) should be sufficient in a channel request to join the room. XMPP MUCs have a room name concept which is more like a topic, except more persistent. This D-Bus property is not this XMPP room name, but the bit before the @ in the room jid; see ChannelInterfaceRoomConfigInterface::Title for that concept.

This property cannot change during the lifetime of the channel. It should appear in the Allowed_Properties of a Requestable_Channel_Class for the connection if rooms on this connection have human-readable names, and can be joined by name.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomInterface::requestPropertyServer ( ) const
inline

Asynchronous getter for the remote object property Server of type QString.

For protocols with a concept of chatrooms on multiple servers with different DNS names (like XMPP), the DNS name of the server hosting this channel (for example, "conference.jabber.org" or "groupchat.google.com"). For other protocols, the empty string.

This property cannot change during the lifetime of the channel. It should appear in the Allowed_Properties of a Requestable_Channel_Class for the connection if and only if non-empty values are supported.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomInterface::requestPropertyCreator ( ) const
inline

Asynchronous getter for the remote object property Creator of type QString.

The normalized contact ID representing who created the room; or the empty string if unknown.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomInterface::requestPropertyCreatorHandle ( ) const
inline

Asynchronous getter for the remote object property CreatorHandle of type uint.

The handle corresponding to Creator ; or 0 if Creator is unknown.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceRoomInterface::requestPropertyCreationTimestamp ( ) const
inline

Asynchronous getter for the remote object property CreationTimestamp of type qlonglong.

A unix timestamp indicating when the room was created; or INT_MAX64 if unknown.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceRoomInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceRoomInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01186.html0000644000175100017520000000537412530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ProtocolPropertiesMap Member List

This is the complete list of members for Tp::ProtocolPropertiesMap, including all inherited members.

operator=(const QMap< QString, QVariantMap > &a)Tp::ProtocolPropertiesMapinline
ProtocolPropertiesMap()Tp::ProtocolPropertiesMapinline
ProtocolPropertiesMap(const QMap< QString, QVariantMap > &a)Tp::ProtocolPropertiesMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x69.html0000644000175100017520000012310712530426260024127 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- i -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00694_source.html0000644000175100017520000002616212530426257022532 0ustar00kaffeinekaffeine00000000000000 debug-receiver.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
debug-receiver.h
1 
21 #ifndef _TelepathyQt_debug_receiver_h_HEADER_GUARD_
22 #define _TelepathyQt_debug_receiver_h_HEADER_GUARD_
23 
24 #ifndef IN_TP_QT_HEADER
25 #error IN_TP_QT_HEADER
26 #endif
27 
28 #include <TelepathyQt/_gen/cli-debug-receiver.h>
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/Types>
32 #include <TelepathyQt/DBusProxy>
33 
34 namespace Tp
35 {
36 
37 class PendingDebugMessageList;
38 
39 class TP_QT_EXPORT DebugReceiver : public StatefulDBusProxy
40 {
41  Q_OBJECT
42  Q_DISABLE_COPY(DebugReceiver)
43 
44 public:
45  static const Feature FeatureCore;
46 
47  static DebugReceiverPtr create(const QString &busName,
48  const QDBusConnection &bus = QDBusConnection::sessionBus());
49  virtual ~DebugReceiver();
50 
51  PendingDebugMessageList *fetchMessages();
52  PendingOperation *setMonitoringEnabled(bool enabled);
53 
54 Q_SIGNALS:
55  void newDebugMessage(const Tp::DebugMessage & message);
56 
57 protected:
58  DebugReceiver(const QDBusConnection &bus, const QString &busName);
59 
60 private Q_SLOTS:
61  TP_QT_NO_EXPORT void onRequestAllPropertiesFinished(Tp::PendingOperation *op);
62  TP_QT_NO_EXPORT void onNewDebugMessage(double time, const QString &domain,
63  uint level, const QString &message);
64 
65 private:
66  struct Private;
67  friend struct Private;
68  Private *mPriv;
69 };
70 
71 } // Tp
72 
73 #endif
static const Feature FeatureCore
Definition: debug-receiver.h:45
The DebugReceiver class provides a D-Bus proxy for a Telepathy Debug object.
Definition: debug-receiver.h:39
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:1464
Definition: pending-debug-message-list.h:34


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00284.html0000644000175100017520000011102112530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceContactBlockingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply BlockContacts (const Tp::UIntList &contacts, bool reportAbusive, int timeout=-1)
 
QDBusPendingReply UnblockContacts (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply
< Tp::HandleIdentifierMap
RequestBlockedContacts (int timeout=-1)
 

Signals

void BlockedContactsChanged (const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceContactBlockingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactBlockingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactBlockingInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceContactBlockingInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceContactBlockingInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyContactBlockingCapabilities () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ContactBlocking".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactBlockingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactBlockingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceContactBlockingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceContactBlockingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceContactBlockingInterface::ConnectionInterfaceContactBlockingInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceContactBlockingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceContactBlockingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ContactBlocking", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactBlockingInterface::requestPropertyContactBlockingCapabilities ( ) const
inline

Asynchronous getter for the remote object property ContactBlockingCapabilities of type uint.

Additional capabilities for contact blocking; currently, this is limited to whether contacts may be reported as abusive.

Note that there is no capability for supporting blocking itself: the presence of this interface on a ConnectionInterface indicates that blocking contacts is supported.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceContactBlockingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactBlockingInterface::BlockContacts ( const Tp::UIntList contacts,
bool  reportAbusive,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method BlockContacts on the remote object.

Direct the server to block some contacts. The precise effect is protocol-dependent, but SHOULD include ignoring all current and subsequent communications from the given contacts, avoiding sending presence to them in future, and if they were already receiving the local user's presence, behaving as if the local user went offline.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
Some contacts to block. If some of the contacts in this list are 
already blocked, the connection manager MUST act as if they were 
not specified in this list.
reportAbusive

In addition to blocking, report these contacts as abusive to the server administrators.

Clients can determine whether this capability is available by checking the ContactBlockingCapabilities property. If this argument is set to True by a client despite ContactBlockingCapabilities not containing the Can_Report_Abusive flag, the connection manager SHOULD act as if it were False and simply block the supplied contacts.

A correct user interface shouldn't get this far without knowing that reporting abusive contacts is not supported. If it does, then the user has expressed their intention to block these contacts. Returning an error would leave the UI with three options:

  • Ignore the error, leaving the contacts not actually blocked;
  • Display an error to the user;
  • Call this method again, passing False for this argument.

None of these seem preferable to the CM just ignoring this flag if it doesn't support it: that way, the contacts will be blocked, as the user requested, and UIs have fewer ways to mess up entirely.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactBlockingInterface::UnblockContacts ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method UnblockContacts on the remote object.

Direct the server to unblock some contacts.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
Some contacts to unblock. If some of the contacts in this list are 
not currently blocked, the connection manager MUST act as if they 
were not specified in this list.
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::HandleIdentifierMap> Tp::Client::ConnectionInterfaceContactBlockingInterface::RequestBlockedContacts ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method RequestBlockedContacts on the remote object.

List the contacts that are blocked.

Clients SHOULD allow a relatively long timeout for calls to this method, since on some protocols contact blocking is part of the contact list, which can take a significant time to retrieve.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The blocked contacts’ handles, together with their identifiers.
void Tp::Client::ConnectionInterfaceContactBlockingInterface::BlockedContactsChanged ( const Tp::HandleIdentifierMap blockedContacts,
const Tp::HandleIdentifierMap unblockedContacts 
)
signal

Represents the signal BlockedContactsChanged on the remote object.

Emitted when the list of blocked contacts is first retrieved (before returning from any pending calls to RequestBlockedContacts() ), and whenever the list of blocked contacts subsequently changes.

Parameters
blockedContacts
Contacts added to the result of RequestBlockedContacts.
unblockedContacts
Contacts removed from the result of RequestBlockedContacts.
void Tp::Client::ConnectionInterfaceContactBlockingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01245.html0000644000175100017520000003201012530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallStreamEndpointInterface Member List

This is the complete list of members for Tp::Client::CallStreamEndpointInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AcceptSelectedCandidatePair(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)Tp::Client::CallStreamEndpointInterfaceinlineslot
CallStreamEndpointInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallStreamEndpointInterface
CallStreamEndpointInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallStreamEndpointInterface
CallStreamEndpointInterface(Tp::DBusProxy *proxy)Tp::Client::CallStreamEndpointInterface
CandidatePairSelected(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate)Tp::Client::CallStreamEndpointInterfacesignal
ControllingChanged(bool controlling)Tp::Client::CallStreamEndpointInterfacesignal
EndpointStateChanged(uint component, uint state)Tp::Client::CallStreamEndpointInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallStreamEndpointInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RejectSelectedCandidatePair(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)Tp::Client::CallStreamEndpointInterfaceinlineslot
RemoteCandidatesAdded(const Tp::CandidateList &candidates)Tp::Client::CallStreamEndpointInterfacesignal
RemoteCredentialsSet(const QString &username, const QString &password)Tp::Client::CallStreamEndpointInterfacesignal
requestAllProperties() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertyControlling() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertyEndpointState() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertyIsICELite() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertyRemoteCandidates() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertyRemoteCredentials() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertySelectedCandidatePairs() const Tp::Client::CallStreamEndpointInterfaceinline
requestPropertyTransport() const Tp::Client::CallStreamEndpointInterfaceinline
SetControlling(bool controlling, int timeout=-1)Tp::Client::CallStreamEndpointInterfaceinlineslot
SetEndpointState(uint component, uint state, int timeout=-1)Tp::Client::CallStreamEndpointInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetSelectedCandidatePair(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)Tp::Client::CallStreamEndpointInterfaceinlineslot
staticInterfaceName()Tp::Client::CallStreamEndpointInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x79.html0000644000175100017520000000315612530426260023116 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- y -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00690_source.html0000644000175100017520000003311312530426257022520 0ustar00kaffeinekaffeine00000000000000 dbus-tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus-tube-channel.h
1 
22 #ifndef _TelepathyQt_dbus_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_dbus_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/TubeChannel>
30 
31 namespace Tp
32 {
33 
34 class TP_QT_EXPORT DBusTubeChannel : public TubeChannel
35 {
36  Q_OBJECT
37  Q_DISABLE_COPY(DBusTubeChannel)
38 
39 public:
40  static const Feature FeatureCore;
42 
43  static DBusTubeChannelPtr create(const ConnectionPtr &connection,
44  const QString &objectPath, const QVariantMap &immutableProperties);
45 
46  virtual ~DBusTubeChannel();
47 
48  QString serviceName() const;
49 
50  bool supportsRestrictingToCurrentUser() const;
51 
52  QHash<QString, Tp::ContactPtr> contactsForBusNames() const;
53 
54  QString address() const;
55 
56 protected:
57  DBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath,
58  const QVariantMap &immutableProperties);
59 
60 Q_SIGNALS:
61  void busNameAdded(const QString &busName, const Tp::ContactPtr &contact);
62  void busNameRemoved(const QString &busName, const Tp::ContactPtr &contact);
63 
64 private Q_SLOTS:
65  TP_QT_NO_EXPORT void onRequestAllPropertiesFinished(Tp::PendingOperation*);
66  TP_QT_NO_EXPORT void onRequestPropertyDBusNamesFinished(Tp::PendingOperation *op);
67  TP_QT_NO_EXPORT void onDBusNamesChanged(const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed);
68  TP_QT_NO_EXPORT void onContactsRetrieved(const QUuid &uuid, const QList<Tp::ContactPtr> &contacts);
69  TP_QT_NO_EXPORT void onQueueCompleted();
70 
71 private:
72  TP_QT_NO_EXPORT void setAddress(const QString &address);
73 
74  struct Private;
75  friend struct PendingDBusTubeConnection;
76  friend struct Private;
77  Private *mPriv;
78 
79 };
80 
81 } // Tp
82 
83 #endif
Definition: pending-dbus-tube-connection.h:36
The TubeChannel class is a base class for all tube types.
Definition: tube-channel.h:34
Definition: build/TelepathyQt/_gen/types.h:1443
The DBusTubeChannel class represents a Telepathy channel of type DBusTube.
Definition: dbus-tube-channel.h:34
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
static const Feature FeatureCore
Definition: dbus-tube-channel.h:40
static const Feature FeatureBusNameMonitoring
Definition: dbus-tube-channel.h:41


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00343.html0000644000175100017520000000756012530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::DBusTubeMember Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusTubeMember Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint handle
 
QString uniqueName
 

Detailed Description

Structure type generated from the specification.

Represents a participant in a multi-user D-Bus tube, as returned by GetDBusNames and seen in the DBusNamesChanged signal.

Member Data Documentation

uint Tp::DBusTubeMember::handle

The handle of a participant in this D-Bus tube.

QString Tp::DBusTubeMember::uniqueName

That participant's unique name.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01304.html0000644000175100017520000002242112530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceClientTypesInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceClientTypesInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ClientTypesUpdated(uint contact, const QStringList &clientTypes)Tp::Client::ConnectionInterfaceClientTypesInterfacesignal
ConnectionInterfaceClientTypesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceClientTypesInterface
ConnectionInterfaceClientTypesInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceClientTypesInterface
ConnectionInterfaceClientTypesInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceClientTypesInterface
ConnectionInterfaceClientTypesInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceClientTypesInterfaceexplicit
ConnectionInterfaceClientTypesInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceClientTypesInterface
GetClientTypes(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceClientTypesInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceClientTypesInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceClientTypesInterfaceinline
RequestClientTypes(uint contact, int timeout=-1)Tp::Client::ConnectionInterfaceClientTypesInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceClientTypesInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00098.html0000644000175100017520000016232712530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelCallType Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Type.Call. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2
< QDBusObjectPath, const
QVariantMap &, DBusError * > 
CreateChannelCallback
 
typedef Callback2< bool, const
QVariantMap &, DBusError * > 
EnsureChannelCallback
 
typedef Callback1< void,
DBusError * > 
AcceptCallback
 
typedef Callback4< void, uint,
const QString &, const QString
&, DBusError * > 
HangupCallback
 
typedef Callback1< void,
DBusError * > 
SetRingingCallback
 
typedef Callback1< void,
DBusError * > 
SetQueuedCallback
 
typedef Callback4
< QDBusObjectPath, const
QString &, const
Tp::MediaStreamType &, const
Tp::MediaStreamDirection
&, DBusError * > 
AddContentCallback
 

Public Member Functions

virtual ~BaseChannelCallType ()
 
QVariantMap immutableProperties () const
 
Tp::ObjectPathList contents ()
 
QVariantMap callStateDetails ()
 
uint callState ()
 
uint callFlags ()
 
Tp::CallStateReason callStateReason ()
 
bool hardwareStreaming ()
 
Tp::CallMemberMap callMembers ()
 
Tp::HandleIdentifierMap memberIdentifiers ()
 
uint initialTransport ()
 
bool initialAudio ()
 
bool initialVideo ()
 
QString initialAudioName ()
 
QString initialVideoName ()
 
bool mutableContents ()
 
void setAcceptCallback (const AcceptCallback &cb)
 
void setHangupCallback (const HangupCallback &cb)
 
void setSetRingingCallback (const SetRingingCallback &cb)
 
void setSetQueuedCallback (const SetQueuedCallback &cb)
 
void setAddContentCallback (const AddContentCallback &cb)
 
void setCallState (const Tp::CallState &state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails)
 
void setMembersFlags (const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)
 
BaseCallContentPtr addContent (const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)
 
void addContent (BaseCallContentPtr content)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelCallTypePtr create (BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)
 
template<typename BaseChannelCallTypeSubclass >
static SharedPtr
< BaseChannelCallTypeSubclass > 
create (BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)
 

Public Attributes

CreateChannelCallback createChannel
 
EnsureChannelCallback ensureChannel
 
Tp::RequestableChannelClassList requestableChannelClasses
 

Protected Member Functions

 BaseChannelCallType (BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Type.Call.

Member Typedef Documentation

typedef Callback2<QDBusObjectPath, const QVariantMap&, DBusError*> Tp::BaseChannelCallType::CreateChannelCallback
typedef Callback4<void, uint, const QString &, const QString &, DBusError*> Tp::BaseChannelCallType::HangupCallback

Constructor & Destructor Documentation

Tp::BaseChannelCallType::~BaseChannelCallType ( )
virtual

Class destructor.

Tp::BaseChannelCallType::BaseChannelCallType ( BaseChannel channel,
bool  hardwareStreaming,
uint  initialTransport,
bool  initialAudio,
bool  initialVideo,
QString  initialAudioName,
QString  initialVideoName,
bool  mutableContents = false 
)
protected

Class constructor.

Member Function Documentation

static BaseChannelCallTypePtr Tp::BaseChannelCallType::create ( BaseChannel channel,
bool  hardwareStreaming,
uint  initialTransport,
bool  initialAudio,
bool  initialVideo,
QString  initialAudioName,
QString  initialVideoName,
bool  mutableContents = false 
)
inlinestatic
template<typename BaseChannelCallTypeSubclass >
static SharedPtr<BaseChannelCallTypeSubclass> Tp::BaseChannelCallType::create ( BaseChannel channel,
bool  hardwareStreaming,
uint  initialTransport,
bool  initialAudio,
bool  initialVideo,
QString  initialAudioName,
QString  initialVideoName,
bool  mutableContents = false 
)
inlinestatic
QVariantMap Tp::BaseChannelCallType::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::ObjectPathList Tp::BaseChannelCallType::contents ( )
QVariantMap Tp::BaseChannelCallType::callStateDetails ( )
uint Tp::BaseChannelCallType::callState ( )
uint Tp::BaseChannelCallType::callFlags ( )
Tp::CallStateReason Tp::BaseChannelCallType::callStateReason ( )
bool Tp::BaseChannelCallType::hardwareStreaming ( )
Tp::CallMemberMap Tp::BaseChannelCallType::callMembers ( )
Tp::HandleIdentifierMap Tp::BaseChannelCallType::memberIdentifiers ( )
uint Tp::BaseChannelCallType::initialTransport ( )
bool Tp::BaseChannelCallType::initialAudio ( )
bool Tp::BaseChannelCallType::initialVideo ( )
QString Tp::BaseChannelCallType::initialAudioName ( )
QString Tp::BaseChannelCallType::initialVideoName ( )
bool Tp::BaseChannelCallType::mutableContents ( )
void Tp::BaseChannelCallType::setAcceptCallback ( const AcceptCallback cb)
void Tp::BaseChannelCallType::setHangupCallback ( const HangupCallback cb)
void Tp::BaseChannelCallType::setSetRingingCallback ( const SetRingingCallback cb)
void Tp::BaseChannelCallType::setSetQueuedCallback ( const SetQueuedCallback cb)
void Tp::BaseChannelCallType::setAddContentCallback ( const AddContentCallback cb)
void Tp::BaseChannelCallType::setCallState ( const Tp::CallState state,
uint  flags,
const Tp::CallStateReason stateReason,
const QVariantMap &  callStateDetails 
)
void Tp::BaseChannelCallType::setMembersFlags ( const Tp::CallMemberMap flagsChanged,
const Tp::HandleIdentifierMap identifiers,
const Tp::UIntList removed,
const Tp::CallStateReason reason 
)
BaseCallContentPtr Tp::BaseChannelCallType::addContent ( const QString &  name,
const Tp::MediaStreamType type,
const Tp::MediaStreamDirection direction 
)
void Tp::BaseChannelCallType::addContent ( BaseCallContentPtr  content)

Member Data Documentation

CreateChannelCallback Tp::BaseChannelCallType::createChannel
EnsureChannelCallback Tp::BaseChannelCallType::ensureChannel
Tp::RequestableChannelClassList Tp::BaseChannelCallType::requestableChannelClasses


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01059.html0000644000175100017520000001210512530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::OptionalInterfaceFactory< DBusProxySubclass > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/jquery.js0000644000175100017520000031436512530426257021323 0ustar00kaffeinekaffeine00000000000000/*! * jQuery JavaScript Library v1.7.1 * http://jquery.com/ * * Copyright 2011, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Mon Nov 21 21:11:03 2011 -0500 */ (function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); /*! * Sizzle CSS Selector Engine * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 },lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b })}})(window); telepathy-qt-0.9.6.1/doc/html/a00402.html0000644000175100017520000002552712530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor6 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
typedef R(T::* Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
typedef R Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::MemberFunctor6 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
ResultType Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6 
) const
inline

Member Data Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
T* Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::object
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
FunctionType Tp::MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01373.html0000644000175100017520000002046112530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceAvatarsAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceAvatarsAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AvatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type)Tp::Service::ConnectionInterfaceAvatarsAdaptorsignal
AvatarUpdated(uint contact, const QString &newAvatarToken)Tp::Service::ConnectionInterfaceAvatarsAdaptorsignal
ClearAvatar(const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
dbusConnection() const Tp::AbstractAdaptor
GetAvatarRequirements(const QDBusMessage &dbusMessage, ushort &minWidth, ushort &minHeight, ushort &maxWidth, ushort &maxHeight, uint &maxBytes)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
GetAvatarTokens(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
GetKnownAvatarTokens(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
MaximumAvatarBytes() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
MaximumAvatarHeight() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
MaximumAvatarWidth() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
MinimumAvatarHeight() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
MinimumAvatarWidth() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
RecommendedAvatarHeight() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
RecommendedAvatarWidth() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
RequestAvatar(uint contact, const QDBusMessage &dbusMessage, QString &MIMEType)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
RequestAvatars(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
SetAvatar(const QByteArray &avatar, const QString &MIMEType, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceAvatarsAdaptorslot
SupportedAvatarMIMETypes() const Tp::Service::ConnectionInterfaceAvatarsAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00157.html0000644000175100017520000015325012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallStreamEndpointInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/CallStreamEndpoint>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetSelectedCandidatePair (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)
 
QDBusPendingReply SetEndpointState (uint component, uint state, int timeout=-1)
 
QDBusPendingReply AcceptSelectedCandidatePair (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)
 
QDBusPendingReply RejectSelectedCandidatePair (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)
 
QDBusPendingReply SetControlling (bool controlling, int timeout=-1)
 

Signals

void RemoteCredentialsSet (const QString &username, const QString &password)
 
void RemoteCandidatesAdded (const Tp::CandidateList &candidates)
 
void CandidatePairSelected (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate)
 
void EndpointStateChanged (uint component, uint state)
 
void ControllingChanged (bool controlling)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallStreamEndpointInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallStreamEndpointInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallStreamEndpointInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyRemoteCredentials () const
 
Tp::PendingVariantrequestPropertyRemoteCandidates () const
 
Tp::PendingVariantrequestPropertySelectedCandidatePairs () const
 
Tp::PendingVariantrequestPropertyEndpointState () const
 
Tp::PendingVariantrequestPropertyTransport () const
 
Tp::PendingVariantrequestPropertyControlling () const
 
Tp::PendingVariantrequestPropertyIsICELite () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Stream.Endpoint".

Constructor & Destructor Documentation

Tp::Client::CallStreamEndpointInterface::CallStreamEndpointInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallStreamEndpointInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallStreamEndpointInterface::CallStreamEndpointInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallStreamEndpointInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallStreamEndpointInterface::CallStreamEndpointInterface ( Tp::DBusProxy proxy)

Creates a CallStreamEndpointInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::CallStreamEndpointInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Stream.Endpoint", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertyRemoteCredentials ( ) const
inline

Asynchronous getter for the remote object property RemoteCredentials of type Tp::StreamCredentials.

The ICE credentials used for all candidates. If each candidate has different credentials, then this property SHOULD be ("", ""). Per-candidate credentials are set in the Candidate's Candidate_Info a{sv}.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertyRemoteCandidates ( ) const
inline

Asynchronous getter for the remote object property RemoteCandidates of type Tp::CandidateList.

A list of candidates for this endpoint.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertySelectedCandidatePairs ( ) const
inline

Asynchronous getter for the remote object property SelectedCandidatePairs of type Tp::CandidatePairList.

The candidates that have been selected for use to stream packets to the remote contact for each component of the stream. Change notification is given via the the CandidatePairSelected() signal.

Note to client implementors (from RFC 5245 section 9.2.2.3):

If at least one of the pairs is In-Progress, the agent SHOULD wait for those checks to complete, and as each completes, redo the processing in this section until there are no losing pairs.

Also note that some or all of the local candidates in this list may represent a peer-reflexive candidate that do not appear in CallStreamInterfaceMediaInterface::LocalCandidates .

See RFC 5245 Appendix B.6. for more details about why this is.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertyEndpointState ( ) const
inline

Asynchronous getter for the remote object property EndpointState of type Tp::ComponentStateMap.

The state of ICE negotiation with this Endpoint for each component of the stream.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertyTransport ( ) const
inline

Asynchronous getter for the remote object property Transport of type uint.

The transport type for the stream endpoint. This can be different from the transport of the Stream in the case where of falling back from ICE to Raw_UDP.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertyControlling ( ) const
inline

Asynchronous getter for the remote object property Controlling of type bool.

The local side is taking the controlling role (as defined by ICE RFC 5245). Change notification is given via the ControllingChanged() signal.

In ICE, the Caller is normally in controlling mode (and the Callee in controlled-mode), except if the Caller is doing ICE-Lite, in which case it's reversed. The Controlling side is responsible for selecting nominated pairs, and generating updated offers upon conclusion of ICE.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamEndpointInterface::requestPropertyIsICELite ( ) const
inline

Asynchronous getter for the remote object property IsICELite of type bool.

The Remote side is an ICE Lite endpoint. (The local side is assumed to always be an ICE Full implementation.)

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallStreamEndpointInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallStreamEndpointInterface::SetSelectedCandidatePair ( const Tp::Candidate localCandidate,
const Tp::Candidate remoteCandidate,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetSelectedCandidatePair on the remote object.

Update the entry in SelectedCandidatePairs for a particular component, and signal it to the remote side.

This method should only be called by the controlling side of an ICE session. See CandidatePairSelected() for details.

In the SDP offer/answer model, this signalling will take place as generating an updated offer. Note that updates may be queued up until information about all components of all streams is gathered.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
localCandidate
The local candidate that has been selected.
remoteCandidate
The remote candidate that has been selected.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamEndpointInterface::SetEndpointState ( uint  component,
uint  state,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetEndpointState on the remote object.

Change the EndpointState of the endpoint.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
component
The component whose state needs updating.
state
The new state of this component.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamEndpointInterface::AcceptSelectedCandidatePair ( const Tp::Candidate localCandidate,
const Tp::Candidate remoteCandidate,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AcceptSelectedCandidatePair on the remote object.

Called in response to CandidatePairSelected if/when this candidate pair is known to have passed its connectivity checks.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
localCandidate
The local candidate that has been selected.
remoteCandidate
The remote candidate that has been selected.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamEndpointInterface::RejectSelectedCandidatePair ( const Tp::Candidate localCandidate,
const Tp::Candidate remoteCandidate,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RejectSelectedCandidatePair on the remote object.

Called in response to CandidatePairSelected if/when this candidate pair is known to have failed its connectivity checks.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
localCandidate
The local candidate that has been selected.
remoteCandidate
The remote candidate that has been selected.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamEndpointInterface::SetControlling ( bool  controlling,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetControlling on the remote object.

Set whether the local side is taking the Controlling role. Note that if there are multiple endpoints (e.g. SIP call forking) it may be the case that all endpoints need to have the same controlling/controlled orientation.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
controlling
The new value of Controlling.
timeoutThe timeout in milliseconds.
void Tp::Client::CallStreamEndpointInterface::RemoteCredentialsSet ( const QString &  username,
const QString &  password 
)
signal

Represents the signal RemoteCredentialsSet on the remote object.

Emitted when the remote ICE credentials for the endpoint are set. If each candidate has different credentials, then this signal will never be fired.

Parameters
username
The username set.
password
The password set.
void Tp::Client::CallStreamEndpointInterface::RemoteCandidatesAdded ( const Tp::CandidateList candidates)
signal

Represents the signal RemoteCandidatesAdded on the remote object.

Emitted when remote candidates are added to the RemoteCandidates property.

Parameters
candidates
The candidates that were added.
void Tp::Client::CallStreamEndpointInterface::CandidatePairSelected ( const Tp::Candidate localCandidate,
const Tp::Candidate remoteCandidate 
)
signal

Represents the signal CandidatePairSelected on the remote object.

Emitted when a candidate is selected for use in the stream by the controlling side of an ICE session. The controlled side should call AcceptSelectedCandidatePair or RejectSelectedCandidatePair when connectivity checks have either succeeded or failed for this candidate pair. See also: SelectedCandidatePairs.

Parameters
localCandidate
The local candidate that has been selected.
remoteCandidate
The remote candidate that has been selected.
void Tp::Client::CallStreamEndpointInterface::EndpointStateChanged ( uint  component,
uint  state 
)
signal

Represents the signal EndpointStateChanged on the remote object.

Emitted when the EndpointState property changes.

Parameters
component
The component whose state has changed.
state
The new state of this component.
void Tp::Client::CallStreamEndpointInterface::ControllingChanged ( bool  controlling)
signal

Represents the signal ControllingChanged on the remote object.

The value of Controlling has changed.

Parameters
controlling
The new value of Controlling.
void Tp::Client::CallStreamEndpointInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01118.html0000644000175100017520000000770012530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer::Tube Member List

This is the complete list of members for Tp::StreamTubeServer::Tube, including all inherited members.

account() const Tp::StreamTubeServer::Tubeinline
channel() const Tp::StreamTubeServer::Tubeinline
isValid() const Tp::StreamTubeServer::Tubeinline
operator=(const Tube &other)Tp::StreamTubeServer::Tube
Tube()Tp::StreamTubeServer::Tube
Tube(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &channel)Tp::StreamTubeServer::Tube
Tube(const Tube &other)Tp::StreamTubeServer::Tube
~Tube()Tp::StreamTubeServer::Tube


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00972.html0000644000175100017520000001205412530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback1< R, Arg1 > Member List

This is the complete list of members for Tp::Callback1< R, Arg1 >, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
Callback1()Tp::Callback1< R, Arg1 >inline
Callback1(const Functor &functor)Tp::Callback1< R, Arg1 >inline
callerTp::BaseCallbackprotected
FunctionType typedefTp::Callback1< R, Arg1 >
isValid() const Tp::BaseCallbackinline
operator()(Arg1 a1) const Tp::Callback1< R, Arg1 >inline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
ResultType typedefTp::Callback1< R, Arg1 >
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00471.html0000644000175100017520000003553512530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ProtocolInterfaceAvatarsAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolInterfaceAvatarsAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Member Functions

QStringList SupportedAvatarMIMETypes () const
 
uint MinimumAvatarHeight () const
 
uint MinimumAvatarWidth () const
 
uint RecommendedAvatarHeight () const
 
uint RecommendedAvatarWidth () const
 
uint MaximumAvatarHeight () const
 
uint MaximumAvatarWidth () const
 
uint MaximumAvatarBytes () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ProtocolInterfaceAvatarsAdaptor::SupportedAvatarMIMETypes ( ) const

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

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

The expected value of the Connection.Interface.Avatars.SupportedAvatarMIMETypes property on connections to this protocol.

Returns
The value of exported property SupportedAvatarMIMETypes.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::MinimumAvatarHeight ( ) const

Return the value of the exported D-Bus object property MinimumAvatarHeight of type uint.

Adaptees should export this property as a Qt property named 'minimumAvatarHeight' with type uint.

The expected value of the Connection.Interface.Avatars.MinimumAvatarHeight property on connections to this protocol.

Returns
The value of exported property MinimumAvatarHeight.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::MinimumAvatarWidth ( ) const

Return the value of the exported D-Bus object property MinimumAvatarWidth of type uint.

Adaptees should export this property as a Qt property named 'minimumAvatarWidth' with type uint.

The expected value of the Connection.Interface.Avatars.MinimumAvatarWidth property on connections to this protocol.

Returns
The value of exported property MinimumAvatarWidth.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::RecommendedAvatarHeight ( ) const

Return the value of the exported D-Bus object property RecommendedAvatarHeight of type uint.

Adaptees should export this property as a Qt property named 'recommendedAvatarHeight' with type uint.

The expected value of the Connection.Interface.Avatars.RecommendedAvatarHeight property on connections to this protocol.

Returns
The value of exported property RecommendedAvatarHeight.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::RecommendedAvatarWidth ( ) const

Return the value of the exported D-Bus object property RecommendedAvatarWidth of type uint.

Adaptees should export this property as a Qt property named 'recommendedAvatarWidth' with type uint.

The expected value of the Connection.Interface.Avatars.RecommendedAvatarWidth property on connections to this protocol.

Returns
The value of exported property RecommendedAvatarWidth.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::MaximumAvatarHeight ( ) const

Return the value of the exported D-Bus object property MaximumAvatarHeight of type uint.

Adaptees should export this property as a Qt property named 'maximumAvatarHeight' with type uint.

The expected value of the Connection.Interface.Avatars.MaximumAvatarHeight property on connections to this protocol.

Returns
The value of exported property MaximumAvatarHeight.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::MaximumAvatarWidth ( ) const

Return the value of the exported D-Bus object property MaximumAvatarWidth of type uint.

Adaptees should export this property as a Qt property named 'maximumAvatarWidth' with type uint.

The expected value of the Connection.Interface.Avatars.MaximumAvatarWidth property on connections to this protocol.

Returns
The value of exported property MaximumAvatarWidth.
uint Tp::Service::ProtocolInterfaceAvatarsAdaptor::MaximumAvatarBytes ( ) const

Return the value of the exported D-Bus object property MaximumAvatarBytes of type uint.

Adaptees should export this property as a Qt property named 'maximumAvatarBytes' with type uint.

The expected value of the Connection.Interface.Avatars.MaximumAvatarBytes property on connections to this protocol.

Returns
The value of exported property MaximumAvatarBytes.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00216.html0000644000175100017520000013260212530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void StartMechanism (const QString &mechanism, const QDBusMessage &dbusMessage)
 
void StartMechanismWithData (const QString &mechanism, const QByteArray &initialData, const QDBusMessage &dbusMessage)
 
void Respond (const QByteArray &responseData, const QDBusMessage &dbusMessage)
 
void AcceptSASL (const QDBusMessage &dbusMessage)
 
void AbortSASL (uint reason, const QString &debugMessage, const QDBusMessage &dbusMessage)
 

Signals

void SASLStatusChanged (uint status, const QString &reason, const QVariantMap &details)
 
void NewChallenge (const QByteArray &challengeData)
 

Public Member Functions

QStringList AvailableMechanisms () const
 
bool HasInitialData () const
 
bool CanTryAgain () const
 
uint SASLStatus () const
 
QString SASLError () const
 
QVariantMap SASLErrorDetails () const
 
QString AuthorizationIdentity () const
 
QString DefaultUsername () const
 
QString DefaultRealm () const
 
bool MaySaveResponse () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AvailableMechanisms ( ) const

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

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

The SASL mechanisms as offered by the server, plus any pseudo-SASL mechanisms supported by the connection manager for credentials transfer. For instance, in a protocol that natively uses SASL (like XMPP), this might be [ "X-TELEPATHY-PASSWORD", "PLAIN", "DIGEST-MD5", "SCRAM-SHA-1" ].

To make it possible to implement a very simple password-querying user interface without knowledge of any particular SASL mechanism, implementations of this interface MUST implement the pseudo-mechanism X-TELEPATHY-PASSWORD, unless none of the available mechanisms use a password at all.

Returns
The value of exported property AvailableMechanisms.
bool Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::HasInitialData ( ) const

Return the value of the exported D-Bus object property HasInitialData of type bool.

Adaptees should export this property as a Qt property named 'hasInitialData' with type bool.

If true, StartMechanismWithData() can be expected to work for SASL mechanisms not starting with X-TELEPATHY- (this is the case in most, but not all, protocols). If false, StartMechanism() must be used instead.

This property does not affect the X-TELEPATHY- pseudo-mechanisms such as X-TELEPATHY-PASSWORD, which can use StartMechanismWithData() regardless of the value of this property.

Returns
The value of exported property HasInitialData.
bool Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::CanTryAgain ( ) const

Return the value of the exported D-Bus object property CanTryAgain of type bool.

Adaptees should export this property as a Qt property named 'canTryAgain' with type bool.

If true, StartMechanism() and (if supported) StartMechanismWithData() can be expected to work when in one of the Failed states. If false, the only thing you can do after failure is to close the channel.

Retrying isn't required to work, although some protocols and implementations allow it.

Returns
The value of exported property CanTryAgain.
uint Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::SASLStatus ( ) const

Return the value of the exported D-Bus object property SASLStatus of type uint.

Adaptees should export this property as a Qt property named 'saslStatus' with type uint.

The current status of this channel. Change notification is via the SASLStatusChanged() signal.
Returns
The value of exported property SASLStatus.
QString Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::SASLError ( ) const

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

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

The reason for the SASLStatus , or an empty string if the state is neither Server_Failed nor Client_Failed.

In particular, an ordinary authentication failure (as would be produced for an incorrect password) SHOULD be represented by AuthenticationFailed, cancellation by the user's request SHOULD be represented by Cancelled, and cancellation by a local process due to inconsistent or invalid challenges from the server SHOULD be represented by ServiceConfused.

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, this error code SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
The value of exported property SASLError.
QVariantMap Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::SASLErrorDetails ( ) const

Return the value of the exported D-Bus object property SASLErrorDetails of type QVariantMap.

Adaptees should export this property as a Qt property named 'saslErrorDetails' with type QVariantMap.

If SASLError is non-empty, any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of ConnectionInterface::ConnectionError() .

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, these details SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
The value of exported property SASLErrorDetails.
QString Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AuthorizationIdentity ( ) const

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

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

The identity for which authorization is being attempted, typically the 'account' from the ConnectionManagerInterface::RequestConnection() parameters, normalized and formatted according to the conventions used for SASL in this protocol.

The normalization used for SASL might not be the same normalization used elsewhere: for instance, in a protocol with email-like identifiers such as XMPP or SIP, the user "juliet@example.com" might have to authenticate to the example.com server via SASL PLAIN as "juliet".

This is usually achieved by using the authorization identity for authentication, but an advanced Handler could offer the option to authenticate under a different identity.

The terminology used here is that the authorization identity is who you want to act as, and the authentication identity is used to prove that you may do so. For instance, if Juliet is authorized to access a role account, "sysadmin@example.com", and act on its behalf, it might be possible to authenticate as "juliet@example.com" with her own password, but request to be authorized as "sysadmin@example.com" instead of her own account. See RFC 4422 §3.4.1 for more details.

In SASL the authorization identity is normally guessed from the authentication identity, but the information available to the connection manager is the identity for which authorization is required, such as the desired JID in XMPP, so that's what we signal to UIs; it's up to the UI to choose whether to authenticate as the authorization identity or some other identity.

As a concrete example, the "sysadmin" XMPP account mentioned above would have { 'account': 'sysadmin@example.com' } in its Parameters, and this property would also be 'sysadmin@example.com'. A simple Handler would merely prompt for sysadmin@example.com's password, and use that JID as both the authorization and authentication identity, which might result in SASL PLAIN authentication with the initial response '\\000sysadmin@example.com\\000root'.

A more advanced Handler might also ask for an authentication identity, defaulting to 'sysadmin@example.com'; if Juliet provided authentication identity 'juliet@example.com' and password 'romeo', the Handler might perform SASL PLAIN authentication using the initial response 'sysadmin@example.com\\000juliet@example.com\\000romeo'.

Returns
The value of exported property AuthorizationIdentity.
QString Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::DefaultUsername ( ) const

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

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

The default username for use with SASL mechanisms that deal with a "simple username" (as defined in RFC 4422). If such a SASL mechanism is in use, clients SHOULD default to using the DefaultUsername; also, if the client uses the DefaultUsername, it SHOULD assume that the authorization identity AuthorizationIdentity will be derived from it by the server.

In XMPP, servers typically expect "user@example.com" to authenticate with username "user"; this was a SHOULD in RFC 3920.

3920bis weakens that SHOULD to "in the absence of local information provided by the server, an XMPP client SHOULD assume that the authentication identity for such a SASL mechanism is the combination of a user name and password, where the simple user name is the localpart of the user's JID".

For example, in the simple case, if the user connects with ConnectionManagerInterface::RequestConnection() ({ account: "user@example.com" }) and use PLAIN with password "password", he or she should authenticate like so: "\\0user\\0password" and the channel will look like this:

{ "...  DefaultUsername   ": "user",
  "...  AuthorizationIdentity   ": "user@example.com }

In the complex case, if the same user is using his or her sysadmin powers to log in as the "announcements" role address, he or she would connect with ConnectionManagerInterface::RequestConnection() ({ account: "announcements@example.com" }) and the SASL channel would look like this:

{ "...  DefaultUsername   ": "announcements",
  "...  AuthorizationIdentity   ": "announcements@example.com }

A sufficiently elaborate UI could give the opportunity to override the username from "announcements" to "user". The user's simple username is still "user", and the password is still "password", but this time he or she is trying to authorize to act as announcements@example.com, so the UI would have to perform SASL PLAIN with this string: "announcements@example.com\\0user\\0password", where "announcements@example.com" is the AuthorizationIdentity .

Returns
The value of exported property DefaultUsername.
QString Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::DefaultRealm ( ) const

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

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

The default realm (as defined in RFC 2831) to use for authentication, if the server does not supply one.

The server is not required to provide a realm; if it doesn't, the client is expected to ask the user or provide a sensible default, typically the requested DNS name of the server. In some implementations of DIGEST-MD5, the server does not specify a realm, but expects that the client will choose a particular default, and authentication will fail if the client's default is different. Connection managers for protocols where this occurs are more easily able to work around these implementations than a generic client would be.

Returns
The value of exported property DefaultRealm.
bool Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::MaySaveResponse ( ) const

Return the value of the exported D-Bus object property MaySaveResponse of type bool.

Adaptees should export this property as a Qt property named 'maySaveResponse' with type bool.

Whether or not the client can save the authentication response and re-use it to automate future authentication challenges.

If this property is False, the client SHOULD NOT attempt to cache the authentication response in its own keyring.

If this property is not specified, it should be treated as if it were True.

Some protocols or services may have terms and conditions that prohibit caching a user's credentials.
Returns
The value of exported property MaySaveResponse.
void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanism ( const QString &  mechanism,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void startMechanism(const QString& mechanism, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismContextPtr &context);

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

Start an authentication try using Mechanism, without sending initial data (an "initial response" as defined in RFC 4422).

This method is appropriate for mechanisms where the client cannot send anything until it receives a challenge from the server, such as DIGEST-MD5 in "initial authentication" mode.

Parameters
mechanism
The chosen mechanism.
void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismWithData ( const QString &  mechanism,
const QByteArray &  initialData,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void startMechanismWithData(const QString& mechanism, const QByteArray& initialData, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismWithDataContextPtr &context);

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

Start an authentication try using Mechanism, and send Initial_Data as the "initial response" defined in RFC 4422 §3.3.

This method is appropriate for mechanisms where the client may send data first, such as PLAIN, or must send data first, such as DIGEST-MD5 in "subsequent authentication" mode.

Having two methods allows any mechanism where it makes a difference to distinguish between the absence of an initial response ( StartMechanism() ) and a zero-byte initial response (StartMechanismWithData, with Initial_Data empty).

If the HasInitialData property is false, this indicates that the underlying protocol does not make it possible to send initial data. In such protocols, this method may only be used for the X-TELEPATHY- pseudo-mechanisms (such as X-TELEPATHY-PASSWORD), and will fail if used with an ordinary SASL mechanism.

For instance, the IRC SASL extension implemented in Charybdis and Atheme does not support initial data - the first message in the exchange only carries the mechanism. This is significant if using DIGEST-MD5, which cannot be used in the faster "subsequent authentication" mode on a protocol not supporting initial data.

Parameters
mechanism
The chosen mechanism.
initialData
Initial data (an &quot;initial response&quot; in RFC 4422&apos;s 
terminology) to send with the mechanism.
void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::Respond ( const QByteArray &  responseData,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void respond(const QByteArray& responseData, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::RespondContextPtr &context);

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

Send a response to the the last challenge received via NewChallenge() .

Parameters
responseData
The response data.
void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AcceptSASL ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void acceptSASL(const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AcceptSASLContextPtr &context);

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

If the channel's status is SASL_Status_Server_Succeeded, this method confirms successful authentication and advances the status of the channel to SASL_Status_Succeeded.

If the channel's status is SASL_Status_In_Progress, calling this method indicates that the last NewChallenge() signal was in fact additional data sent after a successful SASL negotiation, and declares that from the client's point of view, authentication was successful. This advances the state of the channel to SASL_Status_Client_Accepted.

In mechanisms where the server authenticates itself to the client, calling this method indicates that the client considers this to have been successful. In the case of ChannelTypeServerAuthenticationInterface channels, this means that the connection manager MAY continue to connect, and MAY advance the ConnectionInterface::Status to Connected.

void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AbortSASL ( uint  reason,
const QString &  debugMessage,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void abortSASL(uint reason, const QString& debugMessage, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AbortSASLContextPtr &context);

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

Abort the current authentication try.

If the current status is SASL_Status_Server_Failed or SASL_Status_Client_Failed, this method returns successfully, but has no further effect. If the current status is SASL_Status_Succeeded or SASL_Status_Client_Accepted then NotAvailable is raised. Otherwise, it changes the channel's state to SASL_Status_Client_Failed, with an appropriate error name and reason code.

Parameters
reason
Reason for abort.
debugMessage
Debug message for abort.
void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::SASLStatusChanged ( uint  status,
const QString &  reason,
const QVariantMap &  details 
)
signal

Represents the exported D-Bus signal SASLStatusChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void saslStatusChanged(uint status, const QString& reason, const QVariantMap& details);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
status
The new value of SASLStatus.
reason
The new value of SASLError.
details
The new value of SASLErrorDetails.
void Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::NewChallenge ( const QByteArray &  challengeData)
signal

Represents the exported D-Bus signal NewChallenge on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newChallenge(const QByteArray& challengeData);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
challengeData
The challenge data or additional data from the server.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_eval.html0000644000175100017520000001342312530426260023334 0ustar00kaffeinekaffeine00000000000000 Class Members - Enumerator
   Home · All Classes · All Namespaces · Modules · Functions · Files
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01187.html0000644000175100017520000000543612530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::QualifiedPropertyValueMap Member List

This is the complete list of members for Tp::QualifiedPropertyValueMap, including all inherited members.

operator=(const QMap< QString, QDBusVariant > &a)Tp::QualifiedPropertyValueMapinline
QualifiedPropertyValueMap()Tp::QualifiedPropertyValueMapinline
QualifiedPropertyValueMap(const QMap< QString, QDBusVariant > &a)Tp::QualifiedPropertyValueMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00530.html0000644000175100017520000021006012530426260021121 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeServer Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The StreamTubeServer class is a Handler implementation for outgoing Stream Tube channels, allowing an application to easily export a TCP network server over Telepathy Tubes without worrying about the channel dispatching details. More...

#include <TelepathyQt/StreamTubeServer>

Inherits QObject, and Tp::RefCounted.

Classes

class  ParametersGenerator
 The StreamTubeServer::ParametersGenerator abstract interface allows sending a different set of parameters with each tube offer. More...
 
class  RemoteContact
 The StreamTubeServer::RemoteContact class represents a contact from which a socket connection to our exported socket originates. More...
 
class  Tube
 The StreamTubeServer::Tube class represents a tube being handled by the server. More...
 

Signals

void tubeRequested (const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints)
 
void tubeClosed (const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QString &error, const QString &message)
 
void newTcpConnection (const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const Tp::OutgoingStreamTubeChannelPtr &tube)
 
void tcpConnectionClosed (const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const QString &error, const QString &message, const Tp::OutgoingStreamTubeChannelPtr &tube)
 

Public Member Functions

virtual ~StreamTubeServer ()
 
ClientRegistrarPtr registrar () const
 
QString clientName () const
 
bool isRegistered () const
 
bool monitorsConnections () const
 
QPair< QHostAddress, quint16 > exportedTcpSocketAddress () const
 
QVariantMap exportedParameters () const
 
void exportTcpSocket (const QHostAddress &address, quint16 port, const QVariantMap &parameters=QVariantMap())
 
void exportTcpSocket (const QTcpServer *server, const QVariantMap &parameters=QVariantMap())
 
void exportTcpSocket (const QHostAddress &address, quint16 port, ParametersGenerator *generator)
 
void exportTcpSocket (const QTcpServer *server, ParametersGenerator *generator)
 
QList< Tubetubes () const
 
QHash< QPair< QHostAddress,
quint16 >, RemoteContact
tcpConnections () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static StreamTubeServerPtr create (const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())
 
static StreamTubeServerPtr create (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false)
 
static StreamTubeServerPtr create (const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false)
 
static StreamTubeServerPtr create (const ClientRegistrarPtr &registrar, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false)
 

Detailed Description

The StreamTubeServer class is a Handler implementation for outgoing Stream Tube channels, allowing an application to easily export a TCP network server over Telepathy Tubes without worrying about the channel dispatching details.

Telepathy Tubes is a technology for connecting arbitrary applications together through the IM network (and sometimes with direct peer-to-peer connections), such that issues like firewall/NAT traversal are automatically handled. Stream Tubes in particular offer properties similar to SOCK_STREAM sockets. The StreamTubeServer class exports such a bytestream socket server over the tubes it handles as a Telepathy Handler Client; the StreamTubeClient class is the counterpart, enabling TCP/UNIX socket clients to connect to services from such exported servers offered to them via tubes.

Both peer-to-peer (TargetHandleType == HandleTypeContact) and group (TargetHandleType == HandleTypeRoom) channels are supported, and it's possible to specify the tube services to handle for each separately. It is also possible to not advertise handling capability for ANY tube service; instead just using the StreamTubeServer to handle tubes on an one-off basis by passing its corresponding Client service name as the preferredHandler when requesting tubes via the Account::createStreamTube() methods (or equivalent).

Connection monitoring allows associating incoming connections on the exported server socket with the corresponding remote contacts. This allows an application to show the details of and/or initiate further communication with the remote contacts, without considering the actual tube channels the connections are being made through at all (in particular, their Channel::targetContact() accessor for peer-to-peer and the OutgoingStreamTubeChannel::connectionsForSourceAddresses() accessor for group tubes).

Enabling connection monitoring adds a small overhead and latency to handling each incoming tube and signaling each new incoming connection over them, though, so use it only when needed. Additionally, some protocol backends or environments they're running in might not support the SocketAccessControlPort mechanism, in which case the source address won't be reported for connections through them. Even in this case, the remote contacts can be associated by accepting one incoming socket connection at a time, and waiting for the corresponding contact to be signaled (although its source address will be invalid, it's the only possibility given its the only accepted connection). However, it's not necessary to do this e.g. with the Gabble XMPP backend, because it fully supports the required mechanism.

A service activated Handler can be implemented using StreamTubeServer by passing a predefined clientName manually to the chosen create() method, and installing Telepathy .client and D-Bus .service files declaring the implemented tube services as channel classes and a path to the executable. If this is not needed, the clientName can be omitted, in which case a random unique client name is generated and used instead.

StreamTubeServer shares Account, Connection and Channel proxies and Contact objects with the rest of the application as long as a reference to the AccountManager, ClientRegistrar, or the factories used elsewhere is passed to the create() method. A stand-alone tube service Handler can get away without passing these however, or just passing select factories to make the desired features prepared and subclasses employed for these objects for their own convenience.

Whichever method is used, the ChannelFactory (perhaps indirectly) given must construct OutgoingStreamTubeChannel instances or subclasses thereof for all channel classes corresponding to the tube services to handle. This is the default; overriding it without obeying these constraints using ChannelFactory::setSubclassForOutgoingStreamTubes() or the related methods for room tubes prevents StreamTubeServer from operating correctly.

Todo:

Coin up a small Python script or alike to easily generate the .client and .service files. (fd.o #41614)

Support exporting Unix sockets as well. (fd.o #41615)

Constructor & Destructor Documentation

Tp::StreamTubeServer::~StreamTubeServer ( )
virtual

Class destructor.

Member Function Documentation

StreamTubeServerPtr Tp::StreamTubeServer::create ( const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false,
const AccountFactoryConstPtr &  accountFactory = AccountFactory::create(QDBusConnection::sessionBus()),
const ConnectionFactoryConstPtr &  connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()),
const ChannelFactoryConstPtr &  channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()),
const ContactFactoryConstPtr &  contactFactory = ContactFactory::create() 
)
static

Create a new StreamTubeServer, which will register itself on the session bus using an internal ClientRegistrar and use the given factories.

Parameters
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
StreamTubeServerPtr Tp::StreamTubeServer::create ( const QDBusConnection &  bus,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory,
const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false 
)
static

Create a new StreamTubeServer, which will register itself on the given bus using an internal ClientRegistrar and use the given factories.

The factories must all be created for the given bus.

Parameters
busConnection to the bus to register on.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
StreamTubeServerPtr Tp::StreamTubeServer::create ( const AccountManagerPtr &  accountManager,
const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false 
)
static

Create a new StreamTubeServer, which will register itself on the bus of and share objects with the given accountManager, creating an internal ClientRegistrar.

Parameters
accountManagerA pointer to the account manager to link up with.
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
StreamTubeServerPtr Tp::StreamTubeServer::create ( const ClientRegistrarPtr &  registrar,
const QStringList &  p2pServices,
const QStringList &  roomServices = QStringList(),
const QString &  clientName = QString(),
bool  monitorConnections = false 
)
static

Create a new StreamTubeServer, which will register itself on the bus of and using the given client registrar, and share objects with it.

Parameters
registrarThe client registrar to use.
p2pServicesNames of the tube services to handle on peer-to-peer tube channels.
roomServicesNames of the tube services to handle on room/group tube channels.
clientNameThe client name (without the org.freedesktop.Telepathy.Client. prefix).
monitorConnectionsWhether to enable connection monitoring or not.
ClientRegistrarPtr Tp::StreamTubeServer::registrar ( ) const

Return the client registrar used by the server to register itself as a Handler client.

This is the registrar originally passed to create(const ClientRegistrarPtr &, const QStringList &, const QStringList &, const QString &, bool) if that was used, and an internally constructed one otherwise. In any case, it can be used to e.g. register further clients like any other ClientRegistrar.

Returns
A pointer to the registrar.
QString Tp::StreamTubeServer::clientName ( ) const

Return the Telepathy Client name of the server.

Returns
The name, without the org.freedesktop.Telepathy.Client. prefix of the full D-Bus service name.
bool Tp::StreamTubeServer::isRegistered ( ) const

Return whether the server has been successfully registered or not.

Registration is attempted, at the latest, when a socket is first exported using exportTcpSocket(). It can fail e.g. because the connection to the bus has failed, or a predefined clientName has been passed to create(), and a Client with the same name is already registered. Typically, failure registering would be a fatal error for a stand-alone tube handler, but only a warning event for an application serving other purposes. In any case, a high-quality user of the API will check the return value of this accessor after exporting their socket.

Returns
true if the server has been successfully registered, false if not.
bool Tp::StreamTubeServer::monitorsConnections ( ) const

Return whether connection monitoring is enabled on this server.

For technical reasons, connection monitoring can't be enabled when the server is already running, so there is no corresponding setter method. It has to be enabled by passing true as the monitorConnections parameter to the create() method.

If connection monitoring isn't enabled, newTcpConnection() and tcpConnectionClosed() won't be emitted and tcpConnections() won't be populated.

Returns
true if monitoring is enabled, false if not.
QPair< QHostAddress, quint16 > Tp::StreamTubeServer::exportedTcpSocketAddress ( ) const

Return the host address and port of the currently exported TCP socket, if any.

QHostAddress::Null is reported as the address and 0 as the port if no TCP socket has yet been successfully exported.

Returns
The host address and port values in a pair structure.
QVariantMap Tp::StreamTubeServer::exportedParameters ( ) const

Return the fixed parameters, if any, which are sent along when offering the exported socket on all handled tubes.

To prevent accidentally leaving the current parameters to be sent when offering a different socket, or vice versa, the parameters can only be set together with the socket using exportTcpSocket(). Parameters often contain sensitive information such as session identifiers or authentication credentials, which could then be used to maliciously access the service listening on the other socket.

If a custom dynamic ParametersGenerator was passed to exportTcpSocket() instead of a set of fixed parameters, an empty set of parameters is returned.

Returns
The parameters in a string-variant map.
void Tp::StreamTubeServer::exportTcpSocket ( const QHostAddress &  address,
quint16  port,
const QVariantMap &  parameters = QVariantMap() 
)

Set the server to offer the socket listening at the given (address, port) combination as the local endpoint of tubes handled in the future.

A fixed set of protocol bootstrapping parameters can optionally be set to be sent along with all tube offers until the next call to exportTcpSocket(). See the ParametersGenerator documentation for an in-depth description of the parameter transfer mechanism, and a more flexible way to vary the parameters between each handled tube.

The handler is registered on the bus at the latest when this method or another exportTcpSocket() overload is called for the first time, so one should check the return value of isRegistered() at that point to verify that was successful.

Parameters
addressThe listen address of the socket.
portThe port of the socket.
parametersThe bootstrapping parameters in a string-value map.
void Tp::StreamTubeServer::exportTcpSocket ( const QTcpServer *  server,
const QVariantMap &  parameters = QVariantMap() 
)

Set the StreamTubeServer to offer the already listening TCP server as the local endpoint of tubes handled in the future.

This is just a convenience wrapper around exportTcpSocket(const QHostAddress &, quint16, const QVariantMap &) to be used when the TCP server code is implemented using the QtNetwork facilities.

A fixed set of protocol bootstrapping parameters can optionally be set to be sent along with all tube offers until the next call to exportTcpSocket(). See the ParametersGenerator documentation for an in-depth description of the parameter transfer mechanism, and a more flexible way to vary the parameters between each handled tube.

Parameters
serverA pointer to the TCP server.
parametersThe bootstrapping parameters in a string-value map.
void Tp::StreamTubeServer::exportTcpSocket ( const QHostAddress &  address,
quint16  port,
ParametersGenerator generator 
)

Set the server to offer the socket listening at the given address - port combination as the local endpoint of tubes handled in the future, sending the parameters from the given generator along with the offers.

The handler is registered on the bus at the latest when this method or another exportTcpSocket() overload is called for the first time, so one should check the return value of isRegistered() at that point to verify that was successful.

Parameters
addressThe listen address of the socket.
portThe port of the socket.
generatorA pointer to the bootstrapping parameters generator.
void Tp::StreamTubeServer::exportTcpSocket ( const QTcpServer *  server,
ParametersGenerator generator 
)

Set the server to offer the already listening TCP server as the local endpoint of tubes handled in the future, sending the parameters from the given generator along with the offers.

This is just a convenience wrapper around exportTcpSocket(const QHostAddress &, quint16, ParametersGenerator *) to be used when the TCP server code is implemented using the QtNetwork facilities.

Parameters
serverA pointer to the TCP server.
generatorA pointer to the bootstrapping parameters generator.
QList< StreamTubeServer::Tube > Tp::StreamTubeServer::tubes ( ) const

Return the tubes currently handled by the server.

Returns
A list of Tube structures containing pointers to the account and tube channel for each tube.
QHash< QPair< QHostAddress, quint16 >, StreamTubeServer::RemoteContact > Tp::StreamTubeServer::tcpConnections ( ) const

Return the ongoing TCP connections over tubes handled by this server.

The returned mapping has the connection source addresses as keys and the contacts along with the accounts which can be used to reach them as values. Connections through protocol backends which don't support SocketAccessControlPort will be included as the potentially many values for the null source address key, the pair (QHostAddress::Null, 0).

This is effectively a state recovery accessor corresponding to the change notification signals newTcpConnection() and tcpConnectionClosed().

The mapping is only populated if connection monitoring was requested when creating the server (so monitorsConnections() returns true).

Returns
The connections in a mapping with pairs of their source host addresses and ports as keys and structures containing pointers to the account and remote contacts they're from as values.
void Tp::StreamTubeServer::tubeRequested ( const Tp::AccountPtr &  account,
const Tp::OutgoingStreamTubeChannelPtr &  tube,
const QDateTime &  userActionTime,
const Tp::ChannelRequestHints hints 
)
signal

Emitted when a tube has been requested for one of our services, and we've began handling it.

This is emitted before invoking the ParametersGenerator, if any, for the tube.

Parameters
accountA pointer to the account from which the tube was requested from.
tubeA pointer to the actual tube channel.
userActionTimeThe time the request occurred at, if it was an user action. Should be used for focus stealing prevention.
hintsThe hints passed to the request, if any.
void Tp::StreamTubeServer::tubeClosed ( const Tp::AccountPtr &  account,
const Tp::OutgoingStreamTubeChannelPtr &  tube,
const QString &  error,
const QString &  message 
)
signal

Emitted when a tube we've been handling (previously announced with tubeRequested()) has encountered an error or has otherwise been closed from further communication.

Parameters
accountA pointer to the account from which the tube was requested from.
tubeA pointer to the actual tube channel.
errorThe D-Bus error name corresponding to the reason for the closure.
messageA freeform debug message associated with the error.
void Tp::StreamTubeServer::newTcpConnection ( const QHostAddress &  sourceAddress,
quint16  sourcePort,
const Tp::AccountPtr &  account,
const Tp::ContactPtr &  contact,
const Tp::OutgoingStreamTubeChannelPtr &  tube 
)
signal

Emitted when we have picked up a new TCP connection to the (current or previous) exported server socket. This can be used to associate connections the protocol backend relays to the exported socket with the remote contact who originally initiated them in the other end of the tube.

This is only emitted if connection monitoring was enabled when creating the StreamTubeServer. Additionally, if the protocol backend the connection is from doesn't support the SocketAccessControlPort mechanism, the source address and port will always be invalid.

Parameters
sourceAddressThe source address of the connection, or QHostAddress::Null if it can't be resolved.
sourcePortThe source port of the connection, or 0 if it can't be resolved.
accountA pointer to the account through which the remote contact can be reached.
contactA pointer to the remote contact object.
tubeA pointer to the tube channel through which the connection has been made.
void Tp::StreamTubeServer::tcpConnectionClosed ( const QHostAddress &  sourceAddress,
quint16  sourcePort,
const Tp::AccountPtr &  account,
const Tp::ContactPtr &  contact,
const QString &  error,
const QString &  message,
const Tp::OutgoingStreamTubeChannelPtr &  tube 
)
signal

Emitted when a TCP connection (previously announced with newTcpConnection()) through one of our handled tubes has been closed due to an error or by a graceful disconnect (in which case the error is TP_QT_ERROR_DISCONNECTED).

This is only emitted if connection monitoring was enabled when creating the StreamTubeServer. Additionally, if the protocol backend the connection is from doesn't support the SocketAccessControlPort mechanism, the source address and port will always be invalid.

Parameters
sourceAddressThe source address of the connection, or QHostAddress::Null if it couldn't be resolved.
sourcePortThe source port of the connection, or 0 if it couldn't be resolved.
accountA pointer to the account through which the remote contact can be reached.
contactA pointer to the remote contact object.
errorThe D-Bus error name corresponding to the reason for the closure.
messageA freeform debug message associated with the error.
tubeA pointer to the tube channel through which the connection has been made.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/pages.html0000644000175100017520000000430412530426260021412 0ustar00kaffeinekaffeine00000000000000 Related Pages
   Home · All Classes · All Namespaces · Modules · Functions · Files
Related Pages
Here is a list of all related documentation pages:


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00285.html0000644000175100017520000003576112530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

void UpdateCapabilities (const Tp::HandlerCapabilitiesList &handlerCapabilities, const QDBusMessage &dbusMessage)
 
Tp::ContactCapabilitiesMap GetContactCapabilities (const Tp::UIntList &handles, const QDBusMessage &dbusMessage)
 

Signals

void ContactCapabilitiesChanged (const Tp::ContactCapabilitiesMap &caps)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

void Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor::UpdateCapabilities ( const Tp::HandlerCapabilitiesList handlerCapabilities,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void updateCapabilities(const Tp::HandlerCapabilitiesList& handlerCapabilities, const Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor::UpdateCapabilitiesContextPtr &context);

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

Alter the connection's advertised capabilities to include the intersection of the given clients' capabilities with what the connection manager is able to implement.

On connections managed by the ChannelDispatcher, processes other than the ChannelDispatcher SHOULD NOT call this method, and the ChannelDispatcher SHOULD use this method to advertise the capabilities of all the registered ClientHandlerInterface implementations.On connections not managed by the ChannelDispatcher, clients MAY use this method directly, to indicate the channels they will handle and the extra capabilities they have.

Upon a successful invocation of this method, the connection manager will only emit the ContactCapabilitiesChanged() signal for the user's ConnectionInterface::SelfHandle if, in the underlying protocol, the new capabilities are distinct from the previous state.

The connection manager will essentially intersect the provided capabilities and the channel classes it implements. Therefore, certain properties which are never fixed for a channel class (such as the target handle, or the Parameters property of a tube channel) will almost certainly not be advertised.

This method MAY be called on a newly-created connection while it is still in the DISCONNECTED state, to request that when the connection connects, it will do so with the appropriate capabilities. Doing so MUST NOT fail.

Parameters
handlerCapabilities
The capabilities of one or more clients. For each client in the 
given list, any capabilities previously advertised for the same 
client name are discarded, then replaced by the capabilities 
indicated. As a result, if a client becomes unavailable, this 
method SHOULD be called with a Handler_Capabilities structure 
containing its name, an empty list of channel classes, and an empty 
list of capabilities. When this is done, the connection manager 
SHOULD free all memory associated with that client name. This 
method takes a list of clients so that when the channel dispatcher 
first calls it (with a list of all the Handlers that are initially 
available), the changes can be made atomically, with only one 
transmission of updated capabilities to the network. Afterwards, 
the channel dispatcher will call this method with a single-element 
list every time a Handler becomes available or unavailable. The 
connection manager MUST ignore any channel classes and client 
capabilities for which there is no representation in the protocol 
or no support in the connection manager.
Tp::ContactCapabilitiesMap Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor::GetContactCapabilities ( const Tp::UIntList handles,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactCapabilities(const Tp::UIntList& handles, const Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor::GetContactCapabilitiesContextPtr &context);

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

Returns an array of requestable channel classes for the given contact handles, representing the channel requests that are expected to succeed.

Parameters
handles

An array of contact handles for this connection.

The handle zero MUST NOT be included in the request.

Returns

A map from contact handles to lists of requestable channel classes, representing the channel requests that are expected to succeed for that contact.

Contacts listed among Handles whose capabilities are unknown SHOULD be omitted from this map; contacts known to have an empty set of capabilities SHOULD be included in the keys of this map, with an empty array as the corresponding value.

void Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor::ContactCapabilitiesChanged ( const Tp::ContactCapabilitiesMap caps)
signal

Represents the exported D-Bus signal ContactCapabilitiesChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contactCapabilitiesChanged(const Tp::ContactCapabilitiesMap& caps);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
caps All the capabilities of the contacts


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00676_source.html0000644000175100017520000005112312530426257022525 0ustar00kaffeinekaffeine00000000000000 contact-search-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-search-channel.h
1 
23 #ifndef _TelepathyQt_contact_search_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_contact_search_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/Contact>
32 #include <TelepathyQt/Types>
33 
34 namespace Tp
35 {
36 
37 class TP_QT_EXPORT ContactSearchChannel : public Channel
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(ContactSearchChannel)
41 
42 public:
43  static const Feature FeatureCore;
44 
46  {
47  public:
51 
52  bool isValid() const { return mPriv.constData() != 0; }
53 
54  SearchStateChangeDetails &operator=(const SearchStateChangeDetails &other);
55 
56  bool hasDebugMessage() const { return allDetails().contains(QLatin1String("debug-message")); }
57  QString debugMessage() const { return qdbus_cast<QString>(allDetails().value(QLatin1String("debug-message"))); }
58 
59  QVariantMap allDetails() const;
60 
61  private:
62  friend class ContactSearchChannel;
63 
64  TP_QT_NO_EXPORT SearchStateChangeDetails(const QVariantMap &details);
65 
66  struct Private;
67  friend struct Private;
68  QSharedDataPointer<Private> mPriv;
69  };
70 
71  typedef QHash<ContactPtr, Contact::InfoFields> SearchResult;
72 
73  static ContactSearchChannelPtr create(const ConnectionPtr &connection,
74  const QString &objectPath, const QVariantMap &immutableProperties);
75 
76  virtual ~ContactSearchChannel();
77 
78  ChannelContactSearchState searchState() const;
79  uint limit() const;
80  QStringList availableSearchKeys() const;
81  QString server() const;
82 
83  PendingOperation *search(const QString &searchKey, const QString &searchTerm);
84  PendingOperation *search(const ContactSearchMap &searchTerms);
85  void continueSearch();
86  void stopSearch();
87 
88 Q_SIGNALS:
89  void searchStateChanged(Tp::ChannelContactSearchState state, const QString &errorName,
91  void searchResultReceived(const Tp::ContactSearchChannel::SearchResult &result);
92 
93 protected:
94  ContactSearchChannel(const ConnectionPtr &connection, const QString &objectPath,
95  const QVariantMap &immutableProperties, const Feature &coreFeature);
96 
97 private Q_SLOTS:
98  TP_QT_NO_EXPORT void gotProperties(QDBusPendingCallWatcher *watcher);
99  TP_QT_NO_EXPORT void gotSearchState(QDBusPendingCallWatcher *watcher);
100  TP_QT_NO_EXPORT void onSearchStateChanged(uint state, const QString &error, const QVariantMap &details);
101  TP_QT_NO_EXPORT void onSearchResultReceived(const Tp::ContactSearchResultMap &result);
102  TP_QT_NO_EXPORT void gotSearchResultContacts(Tp::PendingOperation *op);
103 
104 private:
105  class PendingSearch;
106 
107  struct Private;
108  friend struct Private;
109  Private *mPriv;
110 };
111 
112 } // Tp
113 
114 #endif
bool isValid() const
Definition: contact-search-channel.h:52
ChannelContactSearchState
Definition: build/TelepathyQt/_gen/constants.h:2533
Definition: build/TelepathyQt/_gen/types.h:3482
bool hasDebugMessage() const
Definition: contact-search-channel.h:56
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
static const Feature FeatureCore
Definition: contact-search-channel.h:43
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:1262
QHash< ContactPtr, Contact::InfoFields > SearchResult
Definition: contact-search-channel.h:71
The ContactSearchChannel class represents a Telepathy channel of type ContactSearch.
Definition: contact-search-channel.h:37
The ContactSearchChannel::SearchStateChangeDetails class provides a wrapper around the details for a ...
Definition: contact-search-channel.h:45
QString debugMessage() const
Definition: contact-search-channel.h:57
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01246.html0000644000175100017520000002423112530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallStreamInterface Member List

This is the complete list of members for Tp::Client::CallStreamInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallStreamInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallStreamInterface
CallStreamInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallStreamInterface
CallStreamInterface(Tp::DBusProxy *proxy)Tp::Client::CallStreamInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallStreamInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
LocalSendingStateChanged(uint state, const Tp::CallStateReason &reason)Tp::Client::CallStreamInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoteMembersChanged(const Tp::ContactSendingStateMap &updates, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)Tp::Client::CallStreamInterfacesignal
requestAllProperties() const Tp::Client::CallStreamInterfaceinline
requestPropertyCanRequestReceiving() const Tp::Client::CallStreamInterfaceinline
requestPropertyInterfaces() const Tp::Client::CallStreamInterfaceinline
requestPropertyLocalSendingState() const Tp::Client::CallStreamInterfaceinline
requestPropertyRemoteMemberIdentifiers() const Tp::Client::CallStreamInterfaceinline
requestPropertyRemoteMembers() const Tp::Client::CallStreamInterfaceinline
RequestReceiving(uint contact, bool receive, int timeout=-1)Tp::Client::CallStreamInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetSending(bool send, int timeout=-1)Tp::Client::CallStreamInterfaceinlineslot
staticInterfaceName()Tp::Client::CallStreamInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00344.html0000644000175100017520000001360012530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::DBusTubeParticipants Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusTubeParticipants Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QString >.

Public Member Functions

 DBusTubeParticipants ()
 
 DBusTubeParticipants (const QMap< uint, QString > &a)
 
DBusTubeParticipantsoperator= (const QMap< uint, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QString>, but needed to have a discrete type in the Qt type system.

Represents the participants in a multi-user D-Bus tube, as used by the DBusNames property and the DBusNamesChanged signal.

Constructor & Destructor Documentation

Tp::DBusTubeParticipants::DBusTubeParticipants ( )
inline
Tp::DBusTubeParticipants::DBusTubeParticipants ( const QMap< uint, QString > &  a)
inline

Member Function Documentation

DBusTubeParticipants& Tp::DBusTubeParticipants::operator= ( const QMap< uint, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00672_source.html0000644000175100017520000010653512530426257022531 0ustar00kaffeinekaffeine00000000000000 contact-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-manager.h
1 
23 #ifndef _TelepathyQt_contact_manager_h_HEADER_GUARD_
24 #define _TelepathyQt_contact_manager_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/Contact>
32 #include <TelepathyQt/Feature>
33 #include <TelepathyQt/Object>
34 #include <TelepathyQt/ReferencedHandles>
35 #include <TelepathyQt/Types>
36 
37 #include <QList>
38 #include <QSet>
39 #include <QString>
40 #include <QStringList>
41 #include <QVariantMap>
42 
43 namespace Tp
44 {
45 
46 class Connection;
47 class PendingContacts;
48 class PendingOperation;
49 
50 class TP_QT_EXPORT ContactManager : public Object
51 {
52  Q_OBJECT
53  Q_DISABLE_COPY(ContactManager)
54 
55 public:
56  virtual ~ContactManager();
57 
58  ConnectionPtr connection() const;
59 
60  Features supportedFeatures() const;
61 
62  ContactListState state() const;
63 
64  Contacts allKnownContacts() const;
65  QStringList allKnownGroups() const;
66 
67  PendingOperation *addGroup(const QString &group);
68  PendingOperation *removeGroup(const QString &group);
69 
70  Contacts groupContacts(const QString &group) const;
71  PendingOperation *addContactsToGroup(const QString &group,
72  const QList<ContactPtr> &contacts);
73  PendingOperation *removeContactsFromGroup(const QString &group,
74  const QList<ContactPtr> &contacts);
75 
76  bool canRequestPresenceSubscription() const;
77  bool subscriptionRequestHasMessage() const;
78  PendingOperation *requestPresenceSubscription(
79  const QList<ContactPtr> &contacts,
80  const QString &message = QString());
81  bool canRemovePresenceSubscription() const;
82  bool subscriptionRemovalHasMessage() const;
83  bool canRescindPresenceSubscriptionRequest() const;
84  bool subscriptionRescindingHasMessage() const;
85  PendingOperation *removePresenceSubscription(
86  const QList<ContactPtr> &contacts,
87  const QString &message = QString());
88  bool canAuthorizePresencePublication() const;
89  bool publicationAuthorizationHasMessage() const;
90  PendingOperation *authorizePresencePublication(
91  const QList<ContactPtr> &contacts,
92  const QString &message = QString());
93  bool publicationRejectionHasMessage() const;
94  bool canRemovePresencePublication() const;
95  bool publicationRemovalHasMessage() const;
96  PendingOperation *removePresencePublication(
97  const QList<ContactPtr> &contacts,
98  const QString &message = QString());
99  PendingOperation *removeContacts(
100  const QList<ContactPtr> &contacts,
101  const QString &message = QString());
102 
103  bool canBlockContacts() const;
104  bool canReportAbuse() const;
105  PendingOperation *blockContacts(const QList<ContactPtr> &contacts);
106  PendingOperation *blockContactsAndReportAbuse(const QList<ContactPtr> &contacts);
107  PendingOperation *unblockContacts(const QList<ContactPtr> &contacts);
108 
109  PendingContacts *contactsForHandles(const UIntList &handles,
110  const Features &features = Features());
111  PendingContacts *contactsForHandles(const ReferencedHandles &handles,
112  const Features &features = Features());
113  PendingContacts *contactsForHandles(const HandleIdentifierMap &handles,
114  const Features &features = Features());
115 
116  PendingContacts *contactsForIdentifiers(const QStringList &identifiers,
117  const Features &features = Features());
118 
119  PendingContacts *contactsForVCardAddresses(const QString &vcardField,
120  const QStringList &vcardAddresses,
121  const Features &features = Features());
122  PendingContacts *contactsForUris(const QStringList &uris,
123  const Features &features = Features());
124 
125  PendingContacts *upgradeContacts(const QList<ContactPtr> &contacts,
126  const Features &features);
127 
128  void requestContactAvatars(const QList<ContactPtr> &contacts);
129 
130  PendingOperation *refreshContactInfo(const QList<ContactPtr> &contact);
131 
132 Q_SIGNALS:
133  void stateChanged(Tp::ContactListState state);
134 
135  void presencePublicationRequested(const Tp::Contacts &contacts);
136 
137  void groupAdded(const QString &group);
138  void groupRenamed(const QString &oldGroup, const QString &newGroup);
139  void groupRemoved(const QString &group);
140 
141  void groupMembersChanged(const QString &group,
142  const Tp::Contacts &groupMembersAdded,
143  const Tp::Contacts &groupMembersRemoved,
145 
146  void allKnownContactsChanged(const Tp::Contacts &contactsAdded,
147  const Tp::Contacts &contactsRemoved,
149 
150 private Q_SLOTS:
151  TP_QT_NO_EXPORT void onAliasesChanged(const Tp::AliasPairList &);
152  TP_QT_NO_EXPORT void doRequestAvatars();
153  TP_QT_NO_EXPORT void onAvatarUpdated(uint, const QString &);
154  TP_QT_NO_EXPORT void onAvatarRetrieved(uint, const QString &, const QByteArray &, const QString &);
155  TP_QT_NO_EXPORT void onPresencesChanged(const Tp::SimpleContactPresences &);
156  TP_QT_NO_EXPORT void onCapabilitiesChanged(const Tp::ContactCapabilitiesMap &);
157  TP_QT_NO_EXPORT void onLocationUpdated(uint, const QVariantMap &);
158  TP_QT_NO_EXPORT void onContactInfoChanged(uint, const Tp::ContactInfoFieldList &);
159  TP_QT_NO_EXPORT void onClientTypesUpdated(uint, const QStringList &);
160  TP_QT_NO_EXPORT void doRefreshInfo();
161 
162 private:
163  class PendingRefreshContactInfo;
164  class Roster;
165  friend class Channel;
166  friend class Connection;
167  friend class PendingContacts;
168  friend class PendingRefreshContactInfo;
169  friend class Roster;
170 
171  TP_QT_NO_EXPORT ContactManager(Connection *parent);
172 
173  TP_QT_NO_EXPORT ContactPtr lookupContactByHandle(uint handle);
174 
175  TP_QT_NO_EXPORT ContactPtr ensureContact(const ReferencedHandles &handle,
176  const Features &features,
177  const QVariantMap &attributes);
178  TP_QT_NO_EXPORT ContactPtr ensureContact(uint bareHandle,
179  const QString &id, const Features &features);
180 
181  TP_QT_NO_EXPORT static QString featureToInterface(const Feature &feature);
182  TP_QT_NO_EXPORT void ensureTracking(const Feature &feature);
183 
184  TP_QT_NO_EXPORT PendingOperation *introspectRoster();
185  TP_QT_NO_EXPORT PendingOperation *introspectRosterGroups();
186  TP_QT_NO_EXPORT void resetRoster();
187 
188  TP_QT_NO_EXPORT PendingOperation *refreshContactInfo(Contact *contact);
189 
190  struct Private;
191  friend struct Private;
192  Private *mPriv;
193 };
194 
195 } // Tp
196 
197 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
The Object class provides an object with property notification.
Definition: object.h:39
QList< AliasPair > AliasPairList
Definition: build/TelepathyQt/_gen/types.h:224
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
ContactListState
Definition: build/TelepathyQt/_gen/constants.h:1732
The Channel::GroupMemberChangeDetails class represents the details of a group membership change...
Definition: channel.h:105
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
The Connection class represents a Telepathy connection.
Definition: connection.h:62
The PendingContacts class is used by ContactManager when creating/updating Contact objects...
Definition: pending-contacts.h:46
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
The Contact class represents a Telepathy contact.
Definition: contact.h:51
Definition: build/TelepathyQt/_gen/types.h:1646
Definition: build/TelepathyQt/_gen/types.h:3827
The Features class represents a list of Feature.
Definition: feature.h:61
Definition: build/TelepathyQt/_gen/types.h:3428
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01305.html0000644000175100017520000002415712530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactBlockingInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceContactBlockingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
BlockContacts(const Tp::UIntList &contacts, bool reportAbusive, int timeout=-1)Tp::Client::ConnectionInterfaceContactBlockingInterfaceinlineslot
BlockedContactsChanged(const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts)Tp::Client::ConnectionInterfaceContactBlockingInterfacesignal
ConnectionInterfaceContactBlockingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactBlockingInterface
ConnectionInterfaceContactBlockingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactBlockingInterface
ConnectionInterfaceContactBlockingInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceContactBlockingInterface
ConnectionInterfaceContactBlockingInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceContactBlockingInterfaceexplicit
ConnectionInterfaceContactBlockingInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceContactBlockingInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceContactBlockingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceContactBlockingInterfaceinline
RequestBlockedContacts(int timeout=-1)Tp::Client::ConnectionInterfaceContactBlockingInterfaceinlineslot
requestPropertyContactBlockingCapabilities() const Tp::Client::ConnectionInterfaceContactBlockingInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceContactBlockingInterfaceinlinestatic
UnblockContacts(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactBlockingInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00099.html0000644000175100017520000007101612530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelCaptchaAuthenticationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.CaptchaAuthentication. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback4< void,
Tp::CaptchaInfoList &, uint
&, QString &, DBusError * > 
GetCaptchasCallback
 
typedef Callback3< QByteArray,
uint, const QString
&, DBusError * > 
GetCaptchaDataCallback
 
typedef Callback2< void, const
Tp::CaptchaAnswers
&, DBusError * > 
AnswerCaptchasCallback
 
typedef Callback3< void, uint,
const QString &, DBusError * > 
CancelCaptchaCallback
 

Public Member Functions

virtual ~BaseChannelCaptchaAuthenticationInterface ()
 
QVariantMap immutableProperties () const
 
void setGetCaptchasCallback (const GetCaptchasCallback &cb)
 
void setGetCaptchaDataCallback (const GetCaptchaDataCallback &cb)
 
void setAnswerCaptchasCallback (const AnswerCaptchasCallback &cb)
 
void setCancelCaptchaCallback (const CancelCaptchaCallback &cb)
 
void setCaptchaStatus (uint status)
 
void setCaptchaError (const QString &busName)
 
void setCaptchaErrorDetails (const QVariantMap &error)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelCaptchaAuthenticationInterfacePtr 
create (bool canRetryCaptcha)
 
template<typename BaseChannelCaptchaAuthenticationInterfaceSubclass >
static SharedPtr
< BaseChannelCaptchaAuthenticationInterfaceSubclass > 
create (bool canRetryCaptcha)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.CaptchaAuthentication.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelCaptchaAuthenticationInterface::~BaseChannelCaptchaAuthenticationInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelCaptchaAuthenticationInterfacePtr Tp::BaseChannelCaptchaAuthenticationInterface::create ( bool  canRetryCaptcha)
inlinestatic
template<typename BaseChannelCaptchaAuthenticationInterfaceSubclass >
static SharedPtr<BaseChannelCaptchaAuthenticationInterfaceSubclass> Tp::BaseChannelCaptchaAuthenticationInterface::create ( bool  canRetryCaptcha)
inlinestatic
QVariantMap Tp::BaseChannelCaptchaAuthenticationInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseChannelCaptchaAuthenticationInterface::setGetCaptchasCallback ( const GetCaptchasCallback cb)
void Tp::BaseChannelCaptchaAuthenticationInterface::setGetCaptchaDataCallback ( const GetCaptchaDataCallback cb)
void Tp::BaseChannelCaptchaAuthenticationInterface::setAnswerCaptchasCallback ( const AnswerCaptchasCallback cb)
void Tp::BaseChannelCaptchaAuthenticationInterface::setCancelCaptchaCallback ( const CancelCaptchaCallback cb)
void Tp::BaseChannelCaptchaAuthenticationInterface::setCaptchaStatus ( uint  status)
void Tp::BaseChannelCaptchaAuthenticationInterface::setCaptchaError ( const QString &  busName)
void Tp::BaseChannelCaptchaAuthenticationInterface::setCaptchaErrorDetails ( const QVariantMap &  error)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00904.html0000644000175100017520000000567512530426257021152 0ustar00kaffeinekaffeine00000000000000 Deprecated List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Deprecated List
Member Tp::AccountManager::accountForPath (const QString &path) const
See accountForObjectPath()
Member Tp::AccountManager::accountsForPaths (const QStringList &paths) const
See accountsForObjectPaths()
Member Tp::SimpleCallObserver::streamedMediaCallEnded (const Tp::StreamedMediaChannelPtr &channel, const QString &errorName, const QString &errorMessage)
Use callEnded() instead. Modern clients shouldn't use StreamedMedia channels.
Member Tp::SimpleCallObserver::streamedMediaCalls () const
Use calls() instead. Modern clients shouldn't use StreamedMedia channels.
Member Tp::SimpleCallObserver::streamedMediaCallStarted (const Tp::StreamedMediaChannelPtr &channel)
Use callStarted() instead. Modern clients shouldn't use StreamedMedia channels.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00403.html0000644000175100017520000002623312530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(T::* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
 
typedef R ResultType
 

Public Member Functions

 MemberFunctor7 (T *object, FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
 

Public Attributes

T * object
 
FunctionType fn
 

Member Typedef Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
typedef R(T::* Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
typedef R Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::ResultType

Constructor & Destructor Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::MemberFunctor7 ( T *  object,
FunctionType  fn 
)
inline

Member Function Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
ResultType Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6,
Arg7  a7 
) const
inline

Member Data Documentation

template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
T* Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::object
template<class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
FunctionType Tp::MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00669_source.html0000644000175100017520000002774112530426257022540 0ustar00kaffeinekaffeine00000000000000 contact-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
contact-factory.h
1 
23 #ifndef _TelepathyQt_contact_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_contact_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Contact>
31 #include <TelepathyQt/Feature>
32 #include <TelepathyQt/Global>
33 #include <TelepathyQt/Types>
34 
35 #include <QSet>
36 #include <QtGlobal>
37 
38 namespace Tp
39 {
40 
41 class ContactManager;
42 class ReferencedHandles;
43 
44 class TP_QT_EXPORT ContactFactory : public RefCounted
45 {
46  Q_DISABLE_COPY(ContactFactory)
47 
48 public:
49  static ContactFactoryPtr create(const Features &features = Features());
50 
51  virtual ~ContactFactory();
52 
53  Features features() const;
54 
55  void addFeature(const Feature &feature);
56  void addFeatures(const Features &features);
57 
58 protected:
59  ContactFactory(const Features &features);
60 
61  virtual ContactPtr construct(ContactManager *manager, const ReferencedHandles &handle,
62  const Features &features, const QVariantMap &attributes) const;
63  virtual PendingOperation *prepare(const ContactPtr &contact) const;
64 
65 private:
66  friend class ContactManager;
67  friend class PendingContacts;
68 
69  struct Private;
70  friend struct Private;
71  Private *mPriv;
72 };
73 
74 } // Tp
75 
76 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingContacts class is used by ContactManager when creating/updating Contact objects...
Definition: pending-contacts.h:46
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
The ContactFactory class is responsible for constructing Contact objects according to application-def...
Definition: contact-factory.h:44
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01374.html0000644000175100017520000000745312530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceBalanceAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00158.html0000644000175100017520000012011612530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallStreamInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/CallStream>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetSending (bool send, int timeout=-1)
 
QDBusPendingReply RequestReceiving (uint contact, bool receive, int timeout=-1)
 

Signals

void RemoteMembersChanged (const Tp::ContactSendingStateMap &updates, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)
 
void LocalSendingStateChanged (uint state, const Tp::CallStateReason &reason)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallStreamInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallStreamInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallStreamInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyRemoteMembers () const
 
Tp::PendingVariantrequestPropertyRemoteMemberIdentifiers () const
 
Tp::PendingVariantrequestPropertyLocalSendingState () const
 
Tp::PendingVariantrequestPropertyCanRequestReceiving () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Stream".

Constructor & Destructor Documentation

Tp::Client::CallStreamInterface::CallStreamInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallStreamInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallStreamInterface::CallStreamInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallStreamInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallStreamInterface::CallStreamInterface ( Tp::DBusProxy proxy)

Creates a CallStreamInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::CallStreamInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Stream", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallStreamInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

Extra interfaces provided by this stream, such as CallStreamInterfaceMediaInterface . This SHOULD NOT include the Stream interface itself, and cannot change once the stream has been created.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterface::requestPropertyRemoteMembers ( ) const
inline

Asynchronous getter for the remote object property RemoteMembers of type Tp::ContactSendingStateMap.

A map from remote contacts to their sending state.

Media sent to this stream will be sent to all members listed here. All members listed here will also appear in ChannelTypeCallInterface::CallMembers , and each CallMembers member will be listed in at most one Stream per Content. Therefore, to hide things from a member of the call, UIs only need to mute one Stream per Content.

Contacts' handles in this map indicate whether they are sending media to this stream. Sending_State_Pending_Send indicates contacts who are not sending but have been asked to do so. The local user's sending state is shown in LocalSendingState .

This mapping is also used by the streaming implementation to map from CallContentMediaDescriptionInterface s to Streams. In this use-case, all of the senders in this stream will be represented in CallContentInterfaceMediaInterface::RemoteMediaDescriptions . This use-case should not affect anything that does not handle media streaming.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterface::requestPropertyRemoteMemberIdentifiers ( ) const
inline

Asynchronous getter for the remote object property RemoteMemberIdentifiers of type Tp::HandleIdentifierMap.

The string identifiers for handles mentioned in RemoteMembers, to give clients the minimal information necessary to create contacts without waiting for round-trips.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterface::requestPropertyLocalSendingState ( ) const
inline

Asynchronous getter for the remote object property LocalSendingState of type uint.

The local user's sending state. Media sent on this stream should be assumed to be received, directly or indirectly, by every other contact in the RemoteMembers mapping. Change notification is given via the LocalSendingStateChanged() signal.

Implementations of the first Call draft had the self handle in the RemoteMembers (then called Members) map and this showed that it's annoying having to keep track of the self handle so that it can be special-cased.

A value of Pending_Send for this property indicates that the other side requested the local user start sending media (which can be done by calling either SetSending() or ChannelTypeCallInterface::Accept() ).

When ChannelTypeCallInterface::Accept() is called, all streams with a local sending state of Pending_Send and the associated CallContentInterface::Disposition set to Initial are automatically set to sending.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterface::requestPropertyCanRequestReceiving ( ) const
inline

Asynchronous getter for the remote object property CanRequestReceiving of type bool.

If true, the user can request that a remote contact starts sending on this stream.

Not all protocols allow the user to ask the other side to start sending media.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallStreamInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallStreamInterface::SetSending ( bool  send,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetSending on the remote object.

Set the stream to start or stop sending media from the local user to other contacts.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
send

If True, the LocalSendingState should change to Sending, if it isn't already.

If False, the LocalSendingState should change to None, if it isn't already.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterface::RequestReceiving ( uint  contact,
bool  receive,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestReceiving on the remote object.

Request that a remote contact stops or starts sending on this stream. The CanRequestReceiving property defines whether the protocol allows the local user to request the other side start sending on this stream.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contact

Contact from which sending is requested

receive

If true, request that the given contact starts to send media. If false, request that the given contact stops sending media.

timeoutThe timeout in milliseconds.
void Tp::Client::CallStreamInterface::RemoteMembersChanged ( const Tp::ContactSendingStateMap updates,
const Tp::HandleIdentifierMap identifiers,
const Tp::UIntList removed,
const Tp::CallStateReason reason 
)
signal

Represents the signal RemoteMembersChanged on the remote object.

Emitted when RemoteMembers changes.
Parameters
updates
A mapping from channel-specific handles to their updated sending 
state, whose keys include at least the members who were added, and 
the members whose states changed.
identifiers The identifiers of the contacts in the Updates map.
removed
The channel-specific handles that were removed from the keys of the 
RemoteMembers property, as a result of the contact leaving this 
stream
reason
A structured reason for the change.
void Tp::Client::CallStreamInterface::LocalSendingStateChanged ( uint  state,
const Tp::CallStateReason reason 
)
signal

Represents the signal LocalSendingStateChanged on the remote object.

Emitted when LocalSendingState changes.
Parameters
state
The new value of LocalSendingState.
reason
A structured reason for the change.
void Tp::Client::CallStreamInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01119.html0000644000175100017520000001350612530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingStreamedMediaStreams Member List

This is the complete list of members for Tp::PendingStreamedMediaStreams, including all inherited members.

channel() const Tp::PendingStreamedMediaStreams
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
streams() const Tp::PendingStreamedMediaStreams
~PendingOperation()Tp::PendingOperationvirtual
~PendingStreamedMediaStreams()Tp::PendingStreamedMediaStreams


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00973.html0000644000175100017520000001311312530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller2< Functor, R, Arg1, Arg2 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00665_source.html0000644000175100017520000201555412530426257022535 0ustar00kaffeinekaffeine00000000000000 constants.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
build/TelepathyQt/_gen/constants.h
1 /* Generated from Telepathy D-Bus Interface Specification, TelepathyQt copy, version 0.17.7
2  */
3 
4 #ifndef IN_TP_QT_HEADER
5 #error IN_TP_QT_HEADER
6 #endif
7 
8 #include <QFlags>
9 
46 namespace Tp
47 {
54 {
59 
64 
70 
84 
117 
119 };
120 
127 typedef QFlags<ConnMgrParamFlag> ConnMgrParamFlags;
128 Q_DECLARE_OPERATORS_FOR_FLAGS(ConnMgrParamFlags)
129 
130 
136 {
154 
156 };
157 
164 typedef QFlags<ConnectionAliasFlag> ConnectionAliasFlags;
165 Q_DECLARE_OPERATORS_FOR_FLAGS(ConnectionAliasFlags)
166 
167 
173 {
187 
200 
213 
214  _AnonymityModePadding = 0xffffffffU
215 };
216 
230 typedef QFlags<AnonymityMode> AnonymityModeFlags;
231 Q_DECLARE_OPERATORS_FOR_FLAGS(AnonymityModeFlags)
232 
233 
239 {
245 
250 
252 };
253 
260 typedef QFlags<ConnectionCapabilityFlag> ConnectionCapabilityFlags;
261 Q_DECLARE_OPERATORS_FOR_FLAGS(ConnectionCapabilityFlags)
262 
263 
269 {
278 
280 };
281 
288 typedef QFlags<ContactBlockingCapability> ContactBlockingCapabilities;
289 Q_DECLARE_OPERATORS_FOR_FLAGS(ContactBlockingCapabilities)
290 
291 
297 {
302 
309 
311 };
312 
324 typedef QFlags<ContactInfoFlag> ContactInfoFlags;
325 Q_DECLARE_OPERATORS_FOR_FLAGS(ContactInfoFlags)
326 
327 
333 {
349 
378 
380 };
381 
392 typedef QFlags<ContactInfoFieldFlag> ContactInfoFieldFlags;
393 Q_DECLARE_OPERATORS_FOR_FLAGS(ContactInfoFieldFlags)
394 
395 
401 {
407 
409 };
410 
422 typedef QFlags<LocationFeature> LocationFeatures;
423 Q_DECLARE_OPERATORS_FOR_FLAGS(LocationFeatures)
424 
425 
431 {
439 
447 
455 
462 
476 
489 
491 };
492 
505 typedef QFlags<MailNotificationFlag> MailNotificationFlags;
506 Q_DECLARE_OPERATORS_FOR_FLAGS(MailNotificationFlags)
507 
508 
514 {
527 
535 
542 
550 
560 
561  _CallFlagPadding = 0xffffffffU
562 };
563 
574 typedef QFlags<CallFlag> CallFlags;
575 Q_DECLARE_OPERATORS_FOR_FLAGS(CallFlags)
576 
577 
583 {
597 
610 
624 
626 };
627 
650 typedef QFlags<CallMemberFlag> CallMemberFlags;
651 Q_DECLARE_OPERATORS_FOR_FLAGS(CallMemberFlags)
652 
653 
659 {
665 
672 
674 };
675 
682 typedef QFlags<MediaStreamPending> MediaStreamPendingSend;
683 Q_DECLARE_OPERATORS_FOR_FLAGS(MediaStreamPendingSend)
684 
685 
691 {
696 
701 
706 
712 
718 
724 
726 };
727 
739 typedef QFlags<ChannelMediaCapability> ChannelMediaCapabilities;
740 Q_DECLARE_OPERATORS_FOR_FLAGS(ChannelMediaCapabilities)
741 
742 
748 {
754 
770 
788 
805 
807 };
808 
815 typedef QFlags<ChannelTextMessageFlag> ChannelTextMessageFlags;
816 Q_DECLARE_OPERATORS_FOR_FLAGS(ChannelTextMessageFlags)
817 
818 
824 {
830 
831  _CaptchaFlagPadding = 0xffffffffU
832 };
833 
844 typedef QFlags<CaptchaFlag> CaptchaFlags;
845 Q_DECLARE_OPERATORS_FOR_FLAGS(CaptchaFlags)
846 
847 
853 {
859 
865 
872 
879 
888 
902 
904 };
905 
914 typedef QFlags<ChannelCallState> ChannelCallStateFlags;
915 Q_DECLARE_OPERATORS_FOR_FLAGS(ChannelCallStateFlags)
916 
917 
923 {
929 
935 
941 
947 
953 
959 
965 
971 
992 
999 
1008 
1014 
1026 
1033 
1035 };
1036 
1043 typedef QFlags<ChannelGroupFlag> ChannelGroupFlags;
1044 Q_DECLARE_OPERATORS_FOR_FLAGS(ChannelGroupFlags)
1045 
1046 
1052 {
1062 
1070 
1072 };
1073 
1106 typedef QFlags<MessagePartSupportFlag> MessagePartSupportFlags;
1107 Q_DECLARE_OPERATORS_FOR_FLAGS(MessagePartSupportFlags)
1108 
1109 
1115 {
1134 
1143 
1152 
1154 };
1155 
1166 typedef QFlags<MessageSendingFlag> MessageSendingFlags;
1167 Q_DECLARE_OPERATORS_FOR_FLAGS(MessageSendingFlags)
1168 
1169 
1175 {
1181 
1187 
1193 
1199 
1201 };
1202 
1219 typedef QFlags<DeliveryReportingSupportFlag> DeliveryReportingSupportFlags;
1220 Q_DECLARE_OPERATORS_FOR_FLAGS(DeliveryReportingSupportFlags)
1221 
1222 
1228 {
1234 
1239 
1241 };
1242 
1249 typedef QFlags<ChannelPasswordFlag> ChannelPasswordFlags;
1250 Q_DECLARE_OPERATORS_FOR_FLAGS(ChannelPasswordFlags)
1251 
1252 
1258 {
1263 
1268 
1269  _PropertyFlagPadding = 0xffffffffU
1270 };
1271 
1278 typedef QFlags<PropertyFlag> PropertyFlags;
1279 Q_DECLARE_OPERATORS_FOR_FLAGS(PropertyFlags)
1280 
1281 
1287 {
1293 
1299 
1305 
1310 
1312 };
1313 
1322 typedef QFlags<StorageRestrictionFlag> StorageRestrictionFlags;
1323 Q_DECLARE_OPERATORS_FOR_FLAGS(StorageRestrictionFlags)
1324 
1325 
1331 {
1336 
1341 
1346 
1351 
1356 
1358 };
1359 
1366 typedef QFlags<RTCPXRStatisticsFlag> RTCPXRStatisticsFlags;
1367 Q_DECLARE_OPERATORS_FOR_FLAGS(RTCPXRStatisticsFlags)
1368 
1369 
1376 {
1383 
1388 
1393 
1398 
1403 
1404  _HandleTypePadding = 0xffffffffU
1405 };
1406 
1412 const int NUM_HANDLE_TYPES = (4+1);
1413 
1421 {
1426 
1433 
1442 
1444 };
1445 
1451 const int NUM_CONNECTION_STATUSES = (2+1);
1452 
1466 {
1477 
1490 
1510 
1521 
1536 
1583 
1594 
1608 
1619 
1630 
1641 
1653 
1664 
1676 
1687 
1699 
1713 
1715 };
1716 
1723 
1733 {
1739 
1746 
1756 
1763 
1765 };
1766 
1772 const int NUM_CONTACT_LIST_STATES = (3+1);
1773 
1790 {
1795 
1802 
1810 
1817 
1822 
1824 };
1825 
1831 const int NUM_SUBSCRIPTION_STATES = (4+1);
1832 
1881 {
1900 
1912 
1925 
1940 
1942 };
1943 
1950 
1960 {
1965 
1971 
1972  _HTTPMethodPadding = 0xffffffffU
1973 };
1974 
1980 const int NUM_HTTP_METHODS = (1+1);
1981 
1991 {
1998 
2003 
2009 
2011 };
2012 
2018 const int NUM_SERVICE_POINT_TYPES = (2+1);
2019 
2027 {
2034 
2039 
2044 
2049 
2054 
2059 
2064 
2070 
2076 
2078 };
2079 
2086 
2104 {
2116 
2122 
2133 
2138 
2145 
2151 
2170 
2172 };
2173 
2179 const int NUM_ACCESS_CONTROL_TYPES = (6+1);
2180 
2203 {
2209 
2216 
2223 
2229 
2231 };
2232 
2239 
2287 {
2294 
2302 
2313 
2326 
2333 
2339 
2344 
2345  _CallStatePadding = 0xffffffffU
2346 };
2347 
2353 const int NUM_CALL_STATES = (6+1);
2354 
2366 {
2374 
2382 
2395 
2407 
2418 
2433 
2442 
2453 
2465 
2476 
2487 
2498 
2509 
2516 
2518 };
2519 
2526 
2534 {
2539 
2544 
2550 
2555 
2560 
2562 };
2563 
2570 
2578 {
2584 
2591 
2598 
2603 
2608 
2613 
2615 };
2616 
2622 const int NUM_FILE_TRANSFER_STATES = (5+1);
2623 
2631 {
2636 
2641 
2646 
2651 
2656 
2661 
2663 };
2664 
2671 
2679 {
2684 
2689 
2694 
2699 
2700  _FileHashTypePadding = 0xffffffffU
2701 };
2702 
2708 const int NUM_FILE_HASH_TYPES = (3+1);
2709 
2717 {
2722 
2727 
2729 };
2730 
2736 const int NUM_MEDIA_STREAM_TYPES = (1+1);
2737 
2745 {
2750 
2755 
2760 
2762 };
2763 
2769 const int NUM_MEDIA_STREAM_STATES = (2+1);
2770 
2778 {
2783 
2788 
2793 
2798 
2800 };
2801 
2808 
2816 {
2821 
2826 
2831 
2836 
2841 
2847 
2849 };
2850 
2857 
2867 {
2872 
2880 
2885 
2890 
2897 
2899 };
2900 
2907 
2915 {
2923 
2931 
2932  _TubeTypePadding = 0xffffffffU
2933 };
2934 
2940 const int NUM_TUBE_TYPES = (1+1);
2941 
2949 {
2954 
2959 
2964 
2965  _TubeStatePadding = 0xffffffffU
2966 };
2967 
2973 const int NUM_TUBE_STATES = (2+1);
2974 
2986 {
2992 
3001 
3008 
3010 };
3011 
3017 const int NUM_CAPTCHA_CANCEL_REASONS = (2+1);
3018 
3026 {
3033 
3041 
3048 
3055 
3061 
3063 };
3064 
3070 const int NUM_CAPTCHA_STATUSES = (4+1);
3071 
3079 {
3084 
3089 
3094 
3099 
3104 
3106 };
3107 
3113 const int NUM_CHANNEL_CHAT_STATES = (4+1);
3114 
3122 {
3127 
3132 
3137 
3142 
3147 
3152 
3157 
3162 
3167 
3172 
3177 
3182 
3187 
3192 
3197 
3202 
3203  _DTMFEventPadding = 0xffffffffU
3204 };
3205 
3211 const int NUM_DTMF_EVENTS = (15+1);
3212 
3235 {
3256 
3280 
3292 
3316 
3324 
3336 
3341 
3367 
3390 
3403 
3416 
3447 
3449 };
3450 
3457 
3467 {
3473 
3478 
3487 
3496 
3498 };
3499 
3505 const int NUM_LOCAL_HOLD_STATES = (3+1);
3506 
3517 {
3524 
3529 
3534 
3536 };
3537 
3544 
3559 {
3567 
3572 
3580 
3590 
3599 
3604 
3611 
3613 };
3614 
3620 const int NUM_DELIVERY_STATUSES = (6+1);
3621 
3633 {
3638 
3643 
3645 };
3646 
3652 const int NUM_SASL_ABORT_REASONS = (1+1);
3653 
3661 {
3668 
3675 
3683 
3691 
3698 
3706 
3712 
3713  _SASLStatusPadding = 0xffffffffU
3714 };
3715 
3721 const int NUM_SASL_STATUSES = (6+1);
3722 
3730 {
3737 
3743 
3750 
3758 
3760 };
3761 
3767 const int NUM_TUBE_CHANNEL_STATES = (3+1);
3768 
3776 {
3782 
3789 
3797 
3805 
3807 };
3808 
3814 const int NUM_SOCKET_ADDRESS_TYPES = (3+1);
3815 
3823 {
3836 
3846 
3856 
3895 
3897 };
3898 
3904 const int NUM_SOCKET_ACCESS_CONTROLS = (3+1);
3905 
3913 {
3918 
3923 
3932 
3937 
3943 
3948 
3953 
3958 
3960 };
3961 
3967 const int NUM_MEDIA_STREAM_ERRORS = (7+1);
3968 
3976 {
3981 
3986 
3988 };
3989 
3996 
4004 {
4009 
4014 
4019 
4021 };
4022 
4029 
4037 {
4043 
4050 
4055 
4060 
4065 
4070 
4071  _DebugLevelPadding = 0xffffffffU
4072 };
4073 
4079 const int NUM_DEBUG_LEVELS = (5+1);
4080 
4090 {
4095 
4100 
4105 
4107 };
4108 
4114 const int NUM_TLS_CERTIFICATE_STATES = (2+1);
4115 
4125 {
4131 
4136 
4141 
4146 
4151 
4156 
4161 
4166 
4172 
4178 
4180 };
4181 
4188 
4198 {
4205 
4212 
4221 
4223 };
4224 
4231 
4242 {
4249 
4263 
4265 };
4266 
4273 
4281 {
4286 
4292 
4294 };
4295 
4301 const int NUM_RCPT_XR_RTT_MODES = (1+1);
4302 
4315 {
4320 
4326 
4332 
4338 
4340 };
4341 
4347 const int NUM_STREAM_FLOW_STATES = (3+1);
4348 
4360 {
4366 
4372 
4379 
4386 
4394 
4400 
4402 };
4403 
4410 
4424 {
4430 
4436 
4442 
4444 };
4445 
4451 const int NUM_STREAM_COMPONENTS = (2+1);
4452 
4464 {
4470 
4478 
4485 
4492 
4499 
4505 
4510 
4512 };
4513 
4519 const int NUM_STREAM_TRANSPORT_TYPES = (6+1);
4520 
4530 {
4535 
4540 
4545 
4550 
4551  _SendingStatePadding = 0xffffffffU
4552 };
4553 
4559 const int NUM_SENDING_STATES = (3+1);
4560 
4571 {
4576 
4583 
4591 
4599 
4606 
4608 };
4609 
4615 const int NUM_STREAM_ENDPOINT_STATES = (4+1);
4616 
4627 {
4633 
4638 
4647 
4655 
4662 
4664 };
4665 
4671 const int NUM_LOCAL_MUTE_STATES = (4+1);
4672 
4673 }
4674 
4681 #define TP_QT_IFACE_CONNECTION_MANAGER (QLatin1String("org.freedesktop.Telepathy.ConnectionManager"))
4682 
4689 #define TP_QT_IFACE_PROTOCOL (QLatin1String("org.freedesktop.Telepathy.Protocol"))
4690 
4697 #define TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING (QLatin1String("org.freedesktop.Telepathy.Protocol.Interface.Addressing"))
4698 
4705 #define TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS (QLatin1String("org.freedesktop.Telepathy.Protocol.Interface.Avatars"))
4706 
4713 #define TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE (QLatin1String("org.freedesktop.Telepathy.Protocol.Interface.Presence"))
4714 
4721 #define TP_QT_IFACE_CONNECTION (QLatin1String("org.freedesktop.Telepathy.Connection"))
4722 
4729 #define TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Addressing1"))
4730 
4737 #define TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Aliasing"))
4738 
4745 #define TP_QT_IFACE_CONNECTION_INTERFACE_ANONYMITY (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Anonymity"))
4746 
4753 #define TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Avatars"))
4754 
4761 #define TP_QT_IFACE_CONNECTION_INTERFACE_BALANCE (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Balance"))
4762 
4769 #define TP_QT_IFACE_CONNECTION_INTERFACE_CAPABILITIES (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Capabilities"))
4770 
4777 #define TP_QT_IFACE_CONNECTION_INTERFACE_CELLULAR (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Cellular"))
4778 
4785 #define TP_QT_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ClientTypes"))
4786 
4793 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Contacts"))
4794 
4801 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactBlocking"))
4802 
4809 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities"))
4810 
4817 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactGroups"))
4818 
4825 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactInfo"))
4826 
4833 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactList"))
4834 
4841 #define TP_QT_IFACE_CONNECTION_INTERFACE_LOCATION (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Location"))
4842 
4849 #define TP_QT_IFACE_CONNECTION_INTERFACE_MAIL_NOTIFICATION (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.MailNotification"))
4850 
4857 #define TP_QT_IFACE_CONNECTION_INTERFACE_POWER_SAVING (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.PowerSaving"))
4858 
4865 #define TP_QT_IFACE_CONNECTION_INTERFACE_PRESENCE (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Presence"))
4866 
4873 #define TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Requests"))
4874 
4881 #define TP_QT_IFACE_CONNECTION_INTERFACE_SERVICE_POINT (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ServicePoint"))
4882 
4889 #define TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE (QLatin1String("org.freedesktop.Telepathy.Connection.Interface.SimplePresence"))
4890 
4897 #define TP_QT_IFACE_CHANNEL (QLatin1String("org.freedesktop.Telepathy.Channel"))
4898 
4905 #define TP_QT_IFACE_CHANNEL_TYPE_CALL (QLatin1String("org.freedesktop.Telepathy.Channel.Type.Call1"))
4906 
4913 #define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST (QLatin1String("org.freedesktop.Telepathy.Channel.Type.ContactList"))
4914 
4921 #define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH (QLatin1String("org.freedesktop.Telepathy.Channel.Type.ContactSearch"))
4922 
4929 #define TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE (QLatin1String("org.freedesktop.Telepathy.Channel.Type.DBusTube"))
4930 
4937 #define TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER (QLatin1String("org.freedesktop.Telepathy.Channel.Type.FileTransfer"))
4938 
4945 #define TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST (QLatin1String("org.freedesktop.Telepathy.Channel.Type.RoomList"))
4946 
4953 #define TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION (QLatin1String("org.freedesktop.Telepathy.Channel.Type.ServerAuthentication"))
4954 
4961 #define TP_QT_IFACE_CHANNEL_TYPE_SERVER_TLS_CONNECTION (QLatin1String("org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection"))
4962 
4969 #define TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA (QLatin1String("org.freedesktop.Telepathy.Channel.Type.StreamedMedia"))
4970 
4977 #define TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE (QLatin1String("org.freedesktop.Telepathy.Channel.Type.StreamTube"))
4978 
4985 #define TP_QT_IFACE_CHANNEL_TYPE_TEXT (QLatin1String("org.freedesktop.Telepathy.Channel.Type.Text"))
4986 
4993 #define TP_QT_IFACE_CHANNEL_TYPE_TUBES (QLatin1String("org.freedesktop.Telepathy.Channel.Type.Tubes"))
4994 
5001 #define TP_QT_IFACE_CHANNEL_INTERFACE_ANONYMITY (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Anonymity"))
5002 
5009 #define TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1"))
5010 
5017 #define TP_QT_IFACE_CHANNEL_INTERFACE_CALL_STATE (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.CallState"))
5018 
5025 #define TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.ChatState"))
5026 
5033 #define TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Conference"))
5034 
5041 #define TP_QT_IFACE_CHANNEL_INTERFACE_DESTROYABLE (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Destroyable"))
5042 
5049 #define TP_QT_IFACE_CHANNEL_INTERFACE_DTMF (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.DTMF"))
5050 
5057 #define TP_QT_IFACE_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.FileTransfer.Metadata"))
5058 
5065 #define TP_QT_IFACE_CHANNEL_INTERFACE_GROUP (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Group"))
5066 
5073 #define TP_QT_IFACE_CHANNEL_INTERFACE_HOLD (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Hold"))
5074 
5081 #define TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.MediaSignalling"))
5082 
5089 #define TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Messages"))
5090 
5097 #define TP_QT_IFACE_CHANNEL_INTERFACE_PASSWORD (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Password"))
5098 
5105 #define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Room2"))
5106 
5113 #define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.RoomConfig1"))
5114 
5121 #define TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication"))
5122 
5129 #define TP_QT_IFACE_CHANNEL_INTERFACE_SECURABLE (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Securable"))
5130 
5137 #define TP_QT_IFACE_CHANNEL_INTERFACE_SERVICE_POINT (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.ServicePoint"))
5138 
5145 #define TP_QT_IFACE_CHANNEL_INTERFACE_SMS (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.SMS"))
5146 
5153 #define TP_QT_IFACE_CHANNEL_INTERFACE_SUBJECT (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Subject2"))
5154 
5161 #define TP_QT_IFACE_CHANNEL_INTERFACE_TUBE (QLatin1String("org.freedesktop.Telepathy.Channel.Interface.Tube"))
5162 
5169 #define TP_QT_IFACE_CHANNEL_DISPATCHER (QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher"))
5170 
5177 #define TP_QT_IFACE_CHANNEL_DISPATCHER_INTERFACE_MESSAGES1 (QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages1"))
5178 
5185 #define TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION (QLatin1String("org.freedesktop.Telepathy.ChannelDispatchOperation"))
5186 
5193 #define TP_QT_IFACE_CHANNEL_REQUEST (QLatin1String("org.freedesktop.Telepathy.ChannelRequest"))
5194 
5201 #define TP_QT_IFACE_MEDIA_SESSION_HANDLER (QLatin1String("org.freedesktop.Telepathy.Media.SessionHandler"))
5202 
5209 #define TP_QT_IFACE_MEDIA_STREAM_HANDLER (QLatin1String("org.freedesktop.Telepathy.Media.StreamHandler"))
5210 
5217 #define TP_QT_IFACE_DBUS_DAEMON (QLatin1String("org.freedesktop.DBus"))
5218 
5225 #define TP_QT_IFACE_INTROSPECTABLE (QLatin1String("org.freedesktop.DBus.Introspectable"))
5226 
5233 #define TP_QT_IFACE_PEER (QLatin1String("org.freedesktop.DBus.Peer"))
5234 
5241 #define TP_QT_IFACE_PROPERTIES (QLatin1String("org.freedesktop.DBus.Properties"))
5242 
5249 #define TP_QT_IFACE_DEBUG (QLatin1String("org.freedesktop.Telepathy.Debug"))
5250 
5257 #define TP_QT_IFACE_PROPERTIES_INTERFACE (QLatin1String("org.freedesktop.Telepathy.Properties"))
5258 
5265 #define TP_QT_IFACE_ACCOUNT_MANAGER (QLatin1String("org.freedesktop.Telepathy.AccountManager"))
5266 
5273 #define TP_QT_IFACE_ACCOUNT (QLatin1String("org.freedesktop.Telepathy.Account"))
5274 
5281 #define TP_QT_IFACE_ACCOUNT_INTERFACE_ADDRESSING (QLatin1String("org.freedesktop.Telepathy.Account.Interface.Addressing"))
5282 
5289 #define TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR (QLatin1String("org.freedesktop.Telepathy.Account.Interface.Avatar"))
5290 
5297 #define TP_QT_IFACE_ACCOUNT_INTERFACE_STORAGE (QLatin1String("org.freedesktop.Telepathy.Account.Interface.Storage"))
5298 
5305 #define TP_QT_IFACE_CLIENT (QLatin1String("org.freedesktop.Telepathy.Client"))
5306 
5313 #define TP_QT_IFACE_CLIENT_OBSERVER (QLatin1String("org.freedesktop.Telepathy.Client.Observer"))
5314 
5321 #define TP_QT_IFACE_CLIENT_APPROVER (QLatin1String("org.freedesktop.Telepathy.Client.Approver"))
5322 
5329 #define TP_QT_IFACE_CLIENT_HANDLER (QLatin1String("org.freedesktop.Telepathy.Client.Handler"))
5330 
5337 #define TP_QT_IFACE_CLIENT_INTERFACE_REQUESTS (QLatin1String("org.freedesktop.Telepathy.Client.Interface.Requests"))
5338 
5345 #define TP_QT_IFACE_AUTHENTICATION_TLS_CERTIFICATE (QLatin1String("org.freedesktop.Telepathy.Authentication.TLSCertificate"))
5346 
5353 #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_MEDIA (QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.Media"))
5354 
5361 #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF (QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.DTMF"))
5362 
5369 #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL (QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl"))
5370 
5377 #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL (QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl"))
5378 
5385 #define TP_QT_IFACE_CALL_CONTENT (QLatin1String("org.freedesktop.Telepathy.Call1.Content"))
5386 
5393 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS (QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports"))
5394 
5401 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK (QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback"))
5402 
5409 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS (QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions"))
5410 
5417 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION (QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription"))
5418 
5425 #define TP_QT_IFACE_CALL_STREAM_INTERFACE_MEDIA (QLatin1String("org.freedesktop.Telepathy.Call1.Stream.Interface.Media"))
5426 
5433 #define TP_QT_IFACE_CALL_STREAM (QLatin1String("org.freedesktop.Telepathy.Call1.Stream"))
5434 
5441 #define TP_QT_IFACE_CALL_STREAM_ENDPOINT (QLatin1String("org.freedesktop.Telepathy.Call1.Stream.Endpoint"))
5442 
5449 #define TP_QT_IFACE_CALL_INTERFACE_MUTE (QLatin1String("org.freedesktop.Telepathy.Call1.Interface.Mute"))
5450 
5459 #define TP_QT_ERROR_NETWORK_ERROR QLatin1String("org.freedesktop.Telepathy.Error.NetworkError")
5460 
5470 #define TP_QT_ERROR_NOT_IMPLEMENTED QLatin1String("org.freedesktop.Telepathy.Error.NotImplemented")
5471 
5480 #define TP_QT_ERROR_INVALID_ARGUMENT QLatin1String("org.freedesktop.Telepathy.Error.InvalidArgument")
5481 
5490 #define TP_QT_ERROR_NOT_AVAILABLE QLatin1String("org.freedesktop.Telepathy.Error.NotAvailable")
5491 
5500 #define TP_QT_ERROR_PERMISSION_DENIED QLatin1String("org.freedesktop.Telepathy.Error.PermissionDenied")
5501 
5514 #define TP_QT_ERROR_DISCONNECTED QLatin1String("org.freedesktop.Telepathy.Error.Disconnected")
5515 
5524 #define TP_QT_ERROR_INVALID_HANDLE QLatin1String("org.freedesktop.Telepathy.Error.InvalidHandle")
5525 
5534 #define TP_QT_ERROR_CHANNEL_BANNED QLatin1String("org.freedesktop.Telepathy.Error.Channel.Banned")
5535 
5544 #define TP_QT_ERROR_CHANNEL_FULL QLatin1String("org.freedesktop.Telepathy.Error.Channel.Full")
5545 
5554 #define TP_QT_ERROR_CHANNEL_INVITE_ONLY QLatin1String("org.freedesktop.Telepathy.Error.Channel.InviteOnly")
5555 
5571 #define TP_QT_ERROR_NOT_YOURS QLatin1String("org.freedesktop.Telepathy.Error.NotYours")
5572 
5590 #define TP_QT_ERROR_CANCELLED QLatin1String("org.freedesktop.Telepathy.Error.Cancelled")
5591 
5601 #define TP_QT_ERROR_AUTHENTICATION_FAILED QLatin1String("org.freedesktop.Telepathy.Error.AuthenticationFailed")
5602 
5616 #define TP_QT_ERROR_ENCRYPTION_NOT_AVAILABLE QLatin1String("org.freedesktop.Telepathy.Error.EncryptionNotAvailable")
5617 
5628 #define TP_QT_ERROR_ENCRYPTION_ERROR QLatin1String("org.freedesktop.Telepathy.Error.EncryptionError")
5629 
5644 #define TP_QT_ERROR_CERT_NOT_PROVIDED QLatin1String("org.freedesktop.Telepathy.Error.Cert.NotProvided")
5645 
5659 #define TP_QT_ERROR_CERT_UNTRUSTED QLatin1String("org.freedesktop.Telepathy.Error.Cert.Untrusted")
5660 
5671 #define TP_QT_ERROR_CERT_EXPIRED QLatin1String("org.freedesktop.Telepathy.Error.Cert.Expired")
5672 
5684 #define TP_QT_ERROR_CERT_NOT_ACTIVATED QLatin1String("org.freedesktop.Telepathy.Error.Cert.NotActivated")
5685 
5697 #define TP_QT_ERROR_CERT_FINGERPRINT_MISMATCH QLatin1String("org.freedesktop.Telepathy.Error.Cert.FingerprintMismatch")
5698 
5718 #define TP_QT_ERROR_CERT_HOSTNAME_MISMATCH QLatin1String("org.freedesktop.Telepathy.Error.Cert.HostnameMismatch")
5719 
5731 #define TP_QT_ERROR_CERT_SELF_SIGNED QLatin1String("org.freedesktop.Telepathy.Error.Cert.SelfSigned")
5732 
5743 #define TP_QT_ERROR_CERT_REVOKED QLatin1String("org.freedesktop.Telepathy.Error.Cert.Revoked")
5744 
5756 #define TP_QT_ERROR_CERT_INSECURE QLatin1String("org.freedesktop.Telepathy.Error.Cert.Insecure")
5757 
5769 #define TP_QT_ERROR_CERT_INVALID QLatin1String("org.freedesktop.Telepathy.Error.Cert.Invalid")
5770 
5783 #define TP_QT_ERROR_CERT_LIMIT_EXCEEDED QLatin1String("org.freedesktop.Telepathy.Error.Cert.LimitExceeded")
5784 
5794 #define TP_QT_ERROR_NOT_CAPABLE QLatin1String("org.freedesktop.Telepathy.Error.NotCapable")
5795 
5806 #define TP_QT_ERROR_OFFLINE QLatin1String("org.freedesktop.Telepathy.Error.Offline")
5807 
5818 #define TP_QT_ERROR_CHANNEL_KICKED QLatin1String("org.freedesktop.Telepathy.Error.Channel.Kicked")
5819 
5832 #define TP_QT_ERROR_BUSY QLatin1String("org.freedesktop.Telepathy.Error.Busy")
5833 
5844 #define TP_QT_ERROR_NO_ANSWER QLatin1String("org.freedesktop.Telepathy.Error.NoAnswer")
5845 
5856 #define TP_QT_ERROR_DOES_NOT_EXIST QLatin1String("org.freedesktop.Telepathy.Error.DoesNotExist")
5857 
5869 #define TP_QT_ERROR_TERMINATED QLatin1String("org.freedesktop.Telepathy.Error.Terminated")
5870 
5880 #define TP_QT_ERROR_MEDIA_CODECS_INCOMPATIBLE QLatin1String("org.freedesktop.Telepathy.Error.Media.CodecsIncompatible")
5881 
5891 #define TP_QT_ERROR_MEDIA_UNSUPPORTED_TYPE QLatin1String("org.freedesktop.Telepathy.Error.Media.UnsupportedType")
5892 
5902 #define TP_QT_ERROR_MEDIA_STREAMING_ERROR QLatin1String("org.freedesktop.Telepathy.Error.Media.StreamingError")
5903 
5912 #define TP_QT_ERROR_CONNECTION_REFUSED QLatin1String("org.freedesktop.Telepathy.Error.ConnectionRefused")
5913 
5922 #define TP_QT_ERROR_CONNECTION_FAILED QLatin1String("org.freedesktop.Telepathy.Error.ConnectionFailed")
5923 
5932 #define TP_QT_ERROR_CONNECTION_LOST QLatin1String("org.freedesktop.Telepathy.Error.ConnectionLost")
5933 
5947 #define TP_QT_ERROR_ALREADY_CONNECTED QLatin1String("org.freedesktop.Telepathy.Error.AlreadyConnected")
5948 
5964 #define TP_QT_ERROR_CONNECTION_REPLACED QLatin1String("org.freedesktop.Telepathy.Error.ConnectionReplaced")
5965 
5975 #define TP_QT_ERROR_REGISTRATION_EXISTS QLatin1String("org.freedesktop.Telepathy.Error.RegistrationExists")
5976 
5994 #define TP_QT_ERROR_SERVICE_BUSY QLatin1String("org.freedesktop.Telepathy.Error.ServiceBusy")
5995 
6007 #define TP_QT_ERROR_RESOURCE_UNAVAILABLE QLatin1String("org.freedesktop.Telepathy.Error.ResourceUnavailable")
6008 
6021 #define TP_QT_ERROR_WOULD_BREAK_ANONYMITY QLatin1String("org.freedesktop.Telepathy.Error.WouldBreakAnonymity")
6022 
6032 #define TP_QT_ERROR_NOT_YET QLatin1String("org.freedesktop.Telepathy.Error.NotYet")
6033 
6042 #define TP_QT_ERROR_REJECTED QLatin1String("org.freedesktop.Telepathy.Error.Rejected")
6043 
6053 #define TP_QT_ERROR_PICKED_UP_ELSEWHERE QLatin1String("org.freedesktop.Telepathy.Error.PickedUpElsewhere")
6054 
6068 #define TP_QT_ERROR_SERVICE_CONFUSED QLatin1String("org.freedesktop.Telepathy.Error.ServiceConfused")
6069 
6085 #define TP_QT_ERROR_CONFUSED QLatin1String("org.freedesktop.Telepathy.Error.Confused")
6086 
6111 #define TP_QT_ERROR_SOFTWARE_UPGRADE_REQUIRED QLatin1String("org.freedesktop.Telepathy.Error.SoftwareUpgradeRequired")
6112 
6127 #define TP_QT_ERROR_EMERGENCY_CALLS_NOT_SUPPORTED QLatin1String("org.freedesktop.Telepathy.Error.EmergencyCallsNotSupported")
6128 
6149 #define TP_QT_ERROR_INSUFFICIENT_BALANCE QLatin1String("org.freedesktop.Telepathy.Error.InsufficientBalance")
6150 
6163 #define TP_QT_ERROR_CAPTCHA_NOT_SUPPORTED QLatin1String("org.freedesktop.Telepathy.Error.CaptchaNotSupported")
6164 
Definition: build/TelepathyQt/_gen/constants.h:118
Definition: build/TelepathyQt/_gen/constants.h:4204
TubeType
Definition: build/TelepathyQt/_gen/constants.h:2914
const int NUM_SOCKET_ADDRESS_TYPES
Definition: build/TelepathyQt/_gen/constants.h:3814
Definition: build/TelepathyQt/_gen/constants.h:3637
Definition: build/TelepathyQt/_gen/constants.h:3007
Definition: build/TelepathyQt/_gen/constants.h:753
Definition: build/TelepathyQt/_gen/constants.h:2991
Definition: build/TelepathyQt/_gen/constants.h:4429
Definition: build/TelepathyQt/_gen/constants.h:2115
Definition: build/TelepathyQt/_gen/constants.h:3047
ContactBlockingCapability
Definition: build/TelepathyQt/_gen/constants.h:268
Definition: build/TelepathyQt/_gen/constants.h:3682
Definition: build/TelepathyQt/_gen/constants.h:4661
MediaStreamType
Definition: build/TelepathyQt/_gen/constants.h:2716
Definition: build/TelepathyQt/_gen/constants.h:623
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
RCPTXRRTTMode
Definition: build/TelepathyQt/_gen/constants.h:4280
Definition: build/TelepathyQt/_gen/constants.h:4549
const int NUM_MEDIA_STREAM_BASE_PROTOS
Definition: build/TelepathyQt/_gen/constants.h:3995
Definition: build/TelepathyQt/_gen/constants.h:1186
const int NUM_MEDIA_STREAM_DIRECTIONS
Definition: build/TelepathyQt/_gen/constants.h:2807
Definition: build/TelepathyQt/_gen/constants.h:2953
Definition: build/TelepathyQt/_gen/constants.h:2612
Definition: build/TelepathyQt/_gen/constants.h:2597
Definition: build/TelepathyQt/_gen/constants.h:3612
Definition: build/TelepathyQt/_gen/constants.h:3598
ChannelGroupChangeReason
Definition: build/TelepathyQt/_gen/constants.h:3234
Definition: build/TelepathyQt/_gen/constants.h:3759
Definition: build/TelepathyQt/_gen/constants.h:2660
QFlags< StorageRestrictionFlag > StorageRestrictionFlags
Definition: build/TelepathyQt/_gen/constants.h:1322
Definition: build/TelepathyQt/_gen/constants.h:1823
Definition: build/TelepathyQt/_gen/constants.h:58
Definition: build/TelepathyQt/_gen/constants.h:2792
Definition: build/TelepathyQt/_gen/constants.h:1745
Definition: build/TelepathyQt/_gen/constants.h:3952
Definition: build/TelepathyQt/_gen/constants.h:3054
Definition: build/TelepathyQt/_gen/constants.h:4337
Definition: build/TelepathyQt/_gen/constants.h:348
Definition: build/TelepathyQt/_gen/constants.h:2635
const int NUM_SASL_STATUSES
Definition: build/TelepathyQt/_gen/constants.h:3721
Definition: build/TelepathyQt/_gen/constants.h:2121
PropertyFlag
Definition: build/TelepathyQt/_gen/constants.h:1257
ChannelContactSearchState
Definition: build/TelepathyQt/_gen/constants.h:2533
Definition: build/TelepathyQt/_gen/constants.h:1298
Definition: build/TelepathyQt/_gen/constants.h:1432
Definition: build/TelepathyQt/_gen/constants.h:2228
Definition: build/TelepathyQt/_gen/constants.h:806
Definition: build/TelepathyQt/_gen/constants.h:3947
DTMFEvent
Definition: build/TelepathyQt/_gen/constants.h:3121
Definition: build/TelepathyQt/_gen/constants.h:3181
const int NUM_SOCKET_ACCESS_CONTROLS
Definition: build/TelepathyQt/_gen/constants.h:3904
Definition: build/TelepathyQt/_gen/constants.h:829
Definition: build/TelepathyQt/_gen/constants.h:4171
Definition: build/TelepathyQt/_gen/constants.h:2543
Definition: build/TelepathyQt/_gen/constants.h:2889
Definition: build/TelepathyQt/_gen/constants.h:2069
Definition: build/TelepathyQt/_gen/constants.h:1593
const int NUM_CHANNEL_CHAT_STATES
Definition: build/TelepathyQt/_gen/constants.h:3113
QFlags< ConnMgrParamFlag > ConnMgrParamFlags
Definition: build/TelepathyQt/_gen/constants.h:127
Definition: build/TelepathyQt/_gen/constants.h:4378
Definition: build/TelepathyQt/_gen/constants.h:1970
Definition: build/TelepathyQt/_gen/constants.h:4291
Definition: build/TelepathyQt/_gen/constants.h:4598
Definition: build/TelepathyQt/_gen/constants.h:964
QFlags< RTCPXRStatisticsFlag > RTCPXRStatisticsFlags
Definition: build/TelepathyQt/_gen/constants.h:1366
Definition: build/TelepathyQt/_gen/constants.h:2137
DeliveryReportingSupportFlag
Definition: build/TelepathyQt/_gen/constants.h:1174
QFlags< ContactBlockingCapability > ContactBlockingCapabilities
Definition: build/TelepathyQt/_gen/constants.h:288
Definition: build/TelepathyQt/_gen/constants.h:705
Definition: build/TelepathyQt/_gen/constants.h:2058
Definition: build/TelepathyQt/_gen/constants.h:3279
Definition: build/TelepathyQt/_gen/constants.h:671
Definition: build/TelepathyQt/_gen/constants.h:1200
Definition: build/TelepathyQt/_gen/constants.h:3610
Definition: build/TelepathyQt/_gen/constants.h:1032
Definition: build/TelepathyQt/_gen/constants.h:3040
TubeChannelState
Definition: build/TelepathyQt/_gen/constants.h:3729
StreamFlowState
Definition: build/TelepathyQt/_gen/constants.h:4314
MediaStreamBaseProto
Definition: build/TelepathyQt/_gen/constants.h:3975
MessageSendingFlag
Definition: build/TelepathyQt/_gen/constants.h:1114
Definition: build/TelepathyQt/_gen/constants.h:1640
Definition: build/TelepathyQt/_gen/constants.h:475
Definition: build/TelepathyQt/_gen/constants.h:83
StreamEndpointState
Definition: build/TelepathyQt/_gen/constants.h:4570
Definition: build/TelepathyQt/_gen/constants.h:903
Definition: build/TelepathyQt/_gen/constants.h:3203
Definition: build/TelepathyQt/_gen/constants.h:3497
Definition: build/TelepathyQt/_gen/constants.h:3674
Definition: build/TelepathyQt/_gen/constants.h:2132
Definition: build/TelepathyQt/_gen/constants.h:4130
ConnectionCapabilityFlag
Definition: build/TelepathyQt/_gen/constants.h:238
Definition: build/TelepathyQt/_gen/constants.h:3191
Definition: build/TelepathyQt/_gen/constants.h:695
Definition: build/TelepathyQt/_gen/constants.h:461
Definition: build/TelepathyQt/_gen/constants.h:186
Definition: build/TelepathyQt/_gen/constants.h:4071
const int NUM_TLS_CERTIFICATE_REJECT_REASONS
Definition: build/TelepathyQt/_gen/constants.h:4187
Definition: build/TelepathyQt/_gen/constants.h:3291
Definition: build/TelepathyQt/_gen/constants.h:408
ChannelGroupFlag
Definition: build/TelepathyQt/_gen/constants.h:922
Definition: build/TelepathyQt/_gen/constants.h:4222
Definition: build/TelepathyQt/_gen/constants.h:1133
Definition: build/TelepathyQt/_gen/constants.h:4637
Definition: build/TelepathyQt/_gen/constants.h:308
TubeState
Definition: build/TelepathyQt/_gen/constants.h:2948
Definition: build/TelepathyQt/_gen/constants.h:1402
Definition: build/TelepathyQt/_gen/constants.h:3105
Definition: build/TelepathyQt/_gen/constants.h:4646
Definition: build/TelepathyQt/_gen/constants.h:1340
Definition: build/TelepathyQt/_gen/constants.h:3415
Definition: build/TelepathyQt/_gen/constants.h:2208
Definition: build/TelepathyQt/_gen/constants.h:2345
StreamTransportType
Definition: build/TelepathyQt/_gen/constants.h:4463
Definition: build/TelepathyQt/_gen/constants.h:4145
const int NUM_CONNECTION_STATUS_REASONS
Definition: build/TelepathyQt/_gen/constants.h:1722
Definition: build/TelepathyQt/_gen/constants.h:3667
Definition: build/TelepathyQt/_gen/constants.h:1997
Definition: build/TelepathyQt/_gen/constants.h:1698
Definition: build/TelepathyQt/_gen/constants.h:2033
Definition: build/TelepathyQt/_gen/constants.h:2343
Definition: build/TelepathyQt/_gen/constants.h:2871
Definition: build/TelepathyQt/_gen/constants.h:3477
Definition: build/TelepathyQt/_gen/constants.h:625
Definition: build/TelepathyQt/_gen/constants.h:1151
Definition: build/TelepathyQt/_gen/constants.h:2655
QFlags< ChannelCallState > ChannelCallStateFlags
Definition: build/TelepathyQt/_gen/constants.h:914
Definition: build/TelepathyQt/_gen/constants.h:3566
Definition: build/TelepathyQt/_gen/constants.h:4285
ConnectionAliasFlag
Definition: build/TelepathyQt/_gen/constants.h:135
Definition: build/TelepathyQt/_gen/constants.h:4155
Definition: build/TelepathyQt/_gen/constants.h:2700
Definition: build/TelepathyQt/_gen/constants.h:3957
const int NUM_MEDIA_STREAM_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2736
Definition: build/TelepathyQt/_gen/constants.h:711
Definition: build/TelepathyQt/_gen/constants.h:991
Definition: build/TelepathyQt/_gen/constants.h:831
Definition: build/TelepathyQt/_gen/constants.h:3448
Definition: build/TelepathyQt/_gen/constants.h:379
Definition: build/TelepathyQt/_gen/constants.h:940
Definition: build/TelepathyQt/_gen/constants.h:2830
Definition: build/TelepathyQt/_gen/constants.h:2332
FileHashType
Definition: build/TelepathyQt/_gen/constants.h:2678
Definition: build/TelepathyQt/_gen/constants.h:2554
Definition: build/TelepathyQt/_gen/constants.h:3922
Definition: build/TelepathyQt/_gen/constants.h:1964
Definition: build/TelepathyQt/_gen/constants.h:2559
Definition: build/TelepathyQt/_gen/constants.h:3705
Definition: build/TelepathyQt/_gen/constants.h:4150
Definition: build/TelepathyQt/_gen/constants.h:2038
Definition: build/TelepathyQt/_gen/constants.h:3603
QFlags< ChannelPasswordFlag > ChannelPasswordFlags
Definition: build/TelepathyQt/_gen/constants.h:1249
Definition: build/TelepathyQt/_gen/constants.h:3146
Definition: build/TelepathyQt/_gen/constants.h:4069
QFlags< ConnectionCapabilityFlag > ConnectionCapabilityFlags
Definition: build/TelepathyQt/_gen/constants.h:260
QFlags< AnonymityMode > AnonymityModeFlags
Definition: build/TelepathyQt/_gen/constants.h:230
const int NUM_MEDIA_STREAM_ERRORS
Definition: build/TelepathyQt/_gen/constants.h:3967
Definition: build/TelepathyQt/_gen/constants.h:1441
Definition: build/TelepathyQt/_gen/constants.h:2683
Definition: build/TelepathyQt/_gen/constants.h:3196
ContactListState
Definition: build/TelepathyQt/_gen/constants.h:1732
Definition: build/TelepathyQt/_gen/constants.h:4248
Definition: build/TelepathyQt/_gen/constants.h:3201
Definition: build/TelepathyQt/_gen/constants.h:723
Definition: build/TelepathyQt/_gen/constants.h:3495
Definition: build/TelepathyQt/_gen/constants.h:2688
Definition: build/TelepathyQt/_gen/constants.h:2325
Definition: build/TelepathyQt/_gen/constants.h:1238
Definition: build/TelepathyQt/_gen/constants.h:4042
ConnectionStatusReason
Definition: build/TelepathyQt/_gen/constants.h:1465
Definition: build/TelepathyQt/_gen/constants.h:279
ChannelMediaCapability
Definition: build/TelepathyQt/_gen/constants.h:690
Definition: build/TelepathyQt/_gen/constants.h:1941
Definition: build/TelepathyQt/_gen/constants.h:4632
Definition: build/TelepathyQt/_gen/constants.h:446
Definition: build/TelepathyQt/_gen/constants.h:3315
Definition: build/TelepathyQt/_gen/constants.h:541
Definition: build/TelepathyQt/_gen/constants.h:4008
Definition: build/TelepathyQt/_gen/constants.h:2726
Definition: build/TelepathyQt/_gen/constants.h:1911
Definition: build/TelepathyQt/_gen/constants.h:878
Definition: build/TelepathyQt/_gen/constants.h:2846
ChannelTextSendError
Definition: build/TelepathyQt/_gen/constants.h:2815
Definition: build/TelepathyQt/_gen/constants.h:4477
const int NUM_TUBE_STATES
Definition: build/TelepathyQt/_gen/constants.h:2973
Definition: build/TelepathyQt/_gen/constants.h:4605
Definition: build/TelepathyQt/_gen/constants.h:1153
Definition: build/TelepathyQt/_gen/constants.h:3959
Definition: build/TelepathyQt/_gen/constants.h:2561
Definition: build/TelepathyQt/_gen/constants.h:277
ChannelTextMessageFlag
Definition: build/TelepathyQt/_gen/constants.h:747
Definition: build/TelepathyQt/_gen/constants.h:2965
Definition: build/TelepathyQt/_gen/constants.h:609
Definition: build/TelepathyQt/_gen/constants.h:4443
MediaStreamTransportType
Definition: build/TelepathyQt/_gen/constants.h:4003
Definition: build/TelepathyQt/_gen/constants.h:4020
Definition: build/TelepathyQt/_gen/constants.h:3161
DebugLevel
Definition: build/TelepathyQt/_gen/constants.h:4036
Definition: build/TelepathyQt/_gen/constants.h:3571
ConnectionPresenceType
Definition: build/TelepathyQt/_gen/constants.h:2026
Definition: build/TelepathyQt/_gen/constants.h:1425
Definition: build/TelepathyQt/_gen/constants.h:4654
Definition: build/TelepathyQt/_gen/constants.h:3032
Definition: build/TelepathyQt/_gen/constants.h:2640
LocalMuteState
Definition: build/TelepathyQt/_gen/constants.h:4626
Definition: build/TelepathyQt/_gen/constants.h:310
Definition: build/TelepathyQt/_gen/constants.h:1309
Definition: build/TelepathyQt/_gen/constants.h:1809
const int NUM_LOCAL_MUTE_STATES
Definition: build/TelepathyQt/_gen/constants.h:4671
Definition: build/TelepathyQt/_gen/constants.h:4509
const int NUM_CALL_STREAM_CANDIDATE_TYPES
Definition: build/TelepathyQt/_gen/constants.h:4409
QFlags< MediaStreamPending > MediaStreamPendingSend
Definition: build/TelepathyQt/_gen/constants.h:682
Definition: build/TelepathyQt/_gen/constants.h:2884
Definition: build/TelepathyQt/_gen/constants.h:3366
Definition: build/TelepathyQt/_gen/constants.h:3009
Definition: build/TelepathyQt/_gen/constants.h:2754
ChannelCallState
Definition: build/TelepathyQt/_gen/constants.h:852
QFlags< ConnectionAliasFlag > ConnectionAliasFlags
Definition: build/TelepathyQt/_gen/constants.h:164
Definition: build/TelepathyQt/_gen/constants.h:3535
Definition: build/TelepathyQt/_gen/constants.h:946
Definition: build/TelepathyQt/_gen/constants.h:2144
Definition: build/TelepathyQt/_gen/constants.h:1262
Definition: build/TelepathyQt/_gen/constants.h:1629
Definition: build/TelepathyQt/_gen/constants.h:1939
Definition: build/TelepathyQt/_gen/constants.h:406
Definition: build/TelepathyQt/_gen/constants.h:4590
Definition: build/TelepathyQt/_gen/constants.h:549
Definition: build/TelepathyQt/_gen/constants.h:998
Definition: build/TelepathyQt/_gen/constants.h:717
Definition: build/TelepathyQt/_gen/constants.h:2549
Definition: build/TelepathyQt/_gen/constants.h:3742
Definition: build/TelepathyQt/_gen/constants.h:153
Definition: build/TelepathyQt/_gen/constants.h:4504
MessagePartSupportFlag
Definition: build/TelepathyQt/_gen/constants.h:1051
const int NUM_CAPTCHA_STATUSES
Definition: build/TelepathyQt/_gen/constants.h:3070
Definition: build/TelepathyQt/_gen/constants.h:4106
Definition: build/TelepathyQt/_gen/constants.h:2538
Definition: build/TelepathyQt/_gen/constants.h:2879
Definition: build/TelepathyQt/_gen/constants.h:1025
const int NUM_CALL_CONTENT_PACKETIZATION_TYPES
Definition: build/TelepathyQt/_gen/constants.h:4230
Definition: build/TelepathyQt/_gen/constants.h:4393
Definition: build/TelepathyQt/_gen/constants.h:1686
Definition: build/TelepathyQt/_gen/constants.h:2063
Definition: build/TelepathyQt/_gen/constants.h:871
Definition: build/TelepathyQt/_gen/constants.h:155
Definition: build/TelepathyQt/_gen/constants.h:804
Definition: build/TelepathyQt/_gen/constants.h:4365
Definition: build/TelepathyQt/_gen/constants.h:1972
QFlags< ChannelTextMessageFlag > ChannelTextMessageFlags
Definition: build/TelepathyQt/_gen/constants.h:815
Definition: build/TelepathyQt/_gen/constants.h:3131
MediaStreamState
Definition: build/TelepathyQt/_gen/constants.h:2744
Definition: build/TelepathyQt/_gen/constants.h:4054
Definition: build/TelepathyQt/_gen/constants.h:4099
Definition: build/TelepathyQt/_gen/constants.h:2932
Definition: build/TelepathyQt/_gen/constants.h:3980
Definition: build/TelepathyQt/_gen/constants.h:4331
Definition: build/TelepathyQt/_gen/constants.h:1663
Definition: build/TelepathyQt/_gen/constants.h:2797
QFlags< ContactInfoFlag > ContactInfoFlags
Definition: build/TelepathyQt/_gen/constants.h:324
Definition: build/TelepathyQt/_gen/constants.h:2820
Definition: build/TelepathyQt/_gen/constants.h:63
Definition: build/TelepathyQt/_gen/constants.h:4094
const int NUM_ACCESS_CONTROL_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2179
Definition: build/TelepathyQt/_gen/constants.h:1509
Definition: build/TelepathyQt/_gen/constants.h:2169
Definition: build/TelepathyQt/_gen/constants.h:4401
Definition: build/TelepathyQt/_gen/constants.h:3389
Definition: build/TelepathyQt/_gen/constants.h:1387
FileTransferState
Definition: build/TelepathyQt/_gen/constants.h:2577
Definition: build/TelepathyQt/_gen/constants.h:4059
TLSCertificateState
Definition: build/TelepathyQt/_gen/constants.h:4089
Definition: build/TelepathyQt/_gen/constants.h:4399
Definition: build/TelepathyQt/_gen/constants.h:2373
const int NUM_TLS_CERTIFICATE_STATES
Definition: build/TelepathyQt/_gen/constants.h:4114
FileTransferStateChangeReason
Definition: build/TelepathyQt/_gen/constants.h:2630
SubscriptionState
Definition: build/TelepathyQt/_gen/constants.h:1789
Definition: build/TelepathyQt/_gen/constants.h:2053
const int NUM_CONTACT_LIST_STATES
Definition: build/TelepathyQt/_gen/constants.h:1772
Definition: build/TelepathyQt/_gen/constants.h:1233
Definition: build/TelepathyQt/_gen/constants.h:864
MediaStreamPending
Definition: build/TelepathyQt/_gen/constants.h:658
Definition: build/TelepathyQt/_gen/constants.h:3987
Definition: build/TelepathyQt/_gen/constants.h:1397
Definition: build/TelepathyQt/_gen/constants.h:1061
Definition: build/TelepathyQt/_gen/constants.h:3472
Definition: build/TelepathyQt/_gen/constants.h:3335
Definition: build/TelepathyQt/_gen/constants.h:2825
Definition: build/TelepathyQt/_gen/constants.h:2508
Definition: build/TelepathyQt/_gen/constants.h:1240
Definition: build/TelepathyQt/_gen/constants.h:2406
Definition: build/TelepathyQt/_gen/constants.h:2338
Definition: build/TelepathyQt/_gen/constants.h:2002
const int NUM_MEDIA_STREAM_STATES
Definition: build/TelepathyQt/_gen/constants.h:2769
ConnectionStatus
Definition: build/TelepathyQt/_gen/constants.h:1420
Definition: build/TelepathyQt/_gen/constants.h:2922
Definition: build/TelepathyQt/_gen/constants.h:4140
Definition: build/TelepathyQt/_gen/constants.h:2963
Definition: build/TelepathyQt/_gen/constants.h:1443
Definition: build/TelepathyQt/_gen/constants.h:1007
const int NUM_RCPT_XR_RTT_MODES
Definition: build/TelepathyQt/_gen/constants.h:4301
Definition: build/TelepathyQt/_gen/constants.h:4160
Definition: build/TelepathyQt/_gen/constants.h:2441
Definition: build/TelepathyQt/_gen/constants.h:534
CallMemberFlag
Definition: build/TelepathyQt/_gen/constants.h:582
Definition: build/TelepathyQt/_gen/constants.h:454
Definition: build/TelepathyQt/_gen/constants.h:2787
Definition: build/TelepathyQt/_gen/constants.h:3796
Definition: build/TelepathyQt/_gen/constants.h:3103
Definition: build/TelepathyQt/_gen/constants.h:3126
Definition: build/TelepathyQt/_gen/constants.h:2010
Definition: build/TelepathyQt/_gen/constants.h:3896
QFlags< CaptchaFlag > CaptchaFlags
Definition: build/TelepathyQt/_gen/constants.h:844
Definition: build/TelepathyQt/_gen/constants.h:1013
Definition: build/TelepathyQt/_gen/constants.h:4663
CaptchaFlag
Definition: build/TelepathyQt/_gen/constants.h:823
Definition: build/TelepathyQt/_gen/constants.h:1357
const int NUM_STREAM_FLOW_STATES
Definition: build/TelepathyQt/_gen/constants.h:4347
Definition: build/TelepathyQt/_gen/constants.h:2293
Definition: build/TelepathyQt/_gen/constants.h:526
Definition: build/TelepathyQt/_gen/constants.h:2693
Definition: build/TelepathyQt/_gen/constants.h:3579
ContactInfoFlag
Definition: build/TelepathyQt/_gen/constants.h:296
const int NUM_HANDLE_TYPES
Definition: build/TelepathyQt/_gen/constants.h:1412
Definition: build/TelepathyQt/_gen/constants.h:3936
Definition: build/TelepathyQt/_gen/constants.h:3697
const int NUM_CONNECTION_STATUSES
Definition: build/TelepathyQt/_gen/constants.h:1451
Definition: build/TelepathyQt/_gen/constants.h:1899
Definition: build/TelepathyQt/_gen/constants.h:2662
Definition: build/TelepathyQt/_gen/constants.h:3166
Definition: build/TelepathyQt/_gen/constants.h:673
Definition: build/TelepathyQt/_gen/constants.h:3845
const int NUM_CALL_STATES
Definition: build/TelepathyQt/_gen/constants.h:2353
Definition: build/TelepathyQt/_gen/constants.h:1816
Definition: build/TelepathyQt/_gen/constants.h:1071
Definition: build/TelepathyQt/_gen/constants.h:1304
Definition: build/TelepathyQt/_gen/constants.h:1924
const int NUM_CHANNEL_TEXT_SEND_ERRORS
Definition: build/TelepathyQt/_gen/constants.h:2856
StreamComponent
Definition: build/TelepathyQt/_gen/constants.h:4423
Definition: build/TelepathyQt/_gen/constants.h:559
Definition: build/TelepathyQt/_gen/constants.h:2721
Definition: build/TelepathyQt/_gen/constants.h:4575
SASLAbortReason
Definition: build/TelepathyQt/_gen/constants.h:3632
const int NUM_CAPTCHA_CANCEL_REASONS
Definition: build/TelepathyQt/_gen/constants.h:3017
Definition: build/TelepathyQt/_gen/constants.h:2650
TLSCertificateRejectReason
Definition: build/TelepathyQt/_gen/constants.h:4124
QFlags< CallFlag > CallFlags
Definition: build/TelepathyQt/_gen/constants.h:574
Definition: build/TelepathyQt/_gen/constants.h:3835
QFlags< MessageSendingFlag > MessageSendingFlags
Definition: build/TelepathyQt/_gen/constants.h:1166
Definition: build/TelepathyQt/_gen/constants.h:1618
const int NUM_STREAM_ENDPOINT_STATES
Definition: build/TelepathyQt/_gen/constants.h:4615
const int NUM_SERVICE_POINT_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2018
Definition: build/TelepathyQt/_gen/constants.h:1350
Definition: build/TelepathyQt/_gen/constants.h:3533
Definition: build/TelepathyQt/_gen/constants.h:2698
Definition: build/TelepathyQt/_gen/constants.h:1762
Definition: build/TelepathyQt/_gen/constants.h:3806
Definition: build/TelepathyQt/_gen/constants.h:858
Definition: build/TelepathyQt/_gen/constants.h:4220
AnonymityMode
Definition: build/TelepathyQt/_gen/constants.h:172
Definition: build/TelepathyQt/_gen/constants.h:214
Definition: build/TelepathyQt/_gen/constants.h:4104
Definition: build/TelepathyQt/_gen/constants.h:3713
Definition: build/TelepathyQt/_gen/constants.h:4018
Definition: build/TelepathyQt/_gen/constants.h:2835
Definition: build/TelepathyQt/_gen/constants.h:2898
QFlags< PropertyFlag > PropertyFlags
Definition: build/TelepathyQt/_gen/constants.h:1278
Definition: build/TelepathyQt/_gen/constants.h:2799
ConnMgrParamFlag
Definition: build/TelepathyQt/_gen/constants.h:53
const int NUM_HTTP_METHODS
Definition: build/TelepathyQt/_gen/constants.h:1980
Definition: build/TelepathyQt/_gen/constants.h:3690
ContactInfoFieldFlag
Definition: build/TelepathyQt/_gen/constants.h:332
Definition: build/TelepathyQt/_gen/constants.h:3644
Definition: build/TelepathyQt/_gen/constants.h:2171
QFlags< MailNotificationFlag > MailNotificationFlags
Definition: build/TelepathyQt/_gen/constants.h:505
Definition: build/TelepathyQt/_gen/constants.h:3141
Definition: build/TelepathyQt/_gen/constants.h:1764
Definition: build/TelepathyQt/_gen/constants.h:1345
Definition: build/TelepathyQt/_gen/constants.h:1476
SASLStatus
Definition: build/TelepathyQt/_gen/constants.h:3660
Definition: build/TelepathyQt/_gen/constants.h:3062
Definition: build/TelepathyQt/_gen/constants.h:1535
Definition: build/TelepathyQt/_gen/constants.h:1269
Definition: build/TelepathyQt/_gen/constants.h:952
Definition: build/TelepathyQt/_gen/constants.h:3083
Definition: build/TelepathyQt/_gen/constants.h:3528
Definition: build/TelepathyQt/_gen/constants.h:3323
Definition: build/TelepathyQt/_gen/constants.h:928
CallStreamCandidateType
Definition: build/TelepathyQt/_gen/constants.h:4359
Definition: build/TelepathyQt/_gen/constants.h:561
Definition: build/TelepathyQt/_gen/constants.h:2215
Definition: build/TelepathyQt/_gen/constants.h:1675
const int NUM_FILE_TRANSFER_STATES
Definition: build/TelepathyQt/_gen/constants.h:2622
Definition: build/TelepathyQt/_gen/constants.h:3176
Definition: build/TelepathyQt/_gen/constants.h:2840
Definition: build/TelepathyQt/_gen/constants.h:1821
Definition: build/TelepathyQt/_gen/constants.h:1489
Definition: build/TelepathyQt/_gen/constants.h:700
Definition: build/TelepathyQt/_gen/constants.h:3186
DeliveryStatus
Definition: build/TelepathyQt/_gen/constants.h:3558
Definition: build/TelepathyQt/_gen/constants.h:2958
const int NUM_LOCAL_HOLD_STATES
Definition: build/TelepathyQt/_gen/constants.h:3505
Definition: build/TelepathyQt/_gen/constants.h:2848
StorageRestrictionFlag
Definition: build/TelepathyQt/_gen/constants.h:1286
const int NUM_FILE_TRANSFER_STATE_CHANGE_REASONS
Definition: build/TelepathyQt/_gen/constants.h:2670
Definition: build/TelepathyQt/_gen/constants.h:438
Definition: build/TelepathyQt/_gen/constants.h:4293
MediaStreamDirection
Definition: build/TelepathyQt/_gen/constants.h:2777
Definition: build/TelepathyQt/_gen/constants.h:4339
CallStateChangeReason
Definition: build/TelepathyQt/_gen/constants.h:2365
ChannelTextMessageType
Definition: build/TelepathyQt/_gen/constants.h:2866
Definition: build/TelepathyQt/_gen/constants.h:4165
Definition: build/TelepathyQt/_gen/constants.h:3757
Definition: build/TelepathyQt/_gen/constants.h:1142
Definition: build/TelepathyQt/_gen/constants.h:2515
Definition: build/TelepathyQt/_gen/constants.h:377
Definition: build/TelepathyQt/_gen/constants.h:2452
Definition: build/TelepathyQt/_gen/constants.h:2301
ChannelChatState
Definition: build/TelepathyQt/_gen/constants.h:3078
Definition: build/TelepathyQt/_gen/constants.h:1607
Definition: build/TelepathyQt/_gen/constants.h:1382
Definition: build/TelepathyQt/_gen/constants.h:3171
Definition: build/TelepathyQt/_gen/constants.h:199
Definition: build/TelepathyQt/_gen/constants.h:1198
SocketAddressType
Definition: build/TelepathyQt/_gen/constants.h:3775
Definition: build/TelepathyQt/_gen/constants.h:4484
Definition: build/TelepathyQt/_gen/constants.h:3589
Definition: build/TelepathyQt/_gen/constants.h:4013
const int NUM_DEBUG_LEVELS
Definition: build/TelepathyQt/_gen/constants.h:4079
const int NUM_MEDIA_STREAM_TRANSPORT_TYPES
Definition: build/TelepathyQt/_gen/constants.h:4028
Definition: build/TelepathyQt/_gen/constants.h:2607
const int NUM_FILE_HASH_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2708
Definition: build/TelepathyQt/_gen/constants.h:4325
Definition: build/TelepathyQt/_gen/constants.h:4551
Definition: build/TelepathyQt/_gen/constants.h:4435
Definition: build/TelepathyQt/_gen/constants.h:3931
const int NUM_STREAM_TRANSPORT_TYPES
Definition: build/TelepathyQt/_gen/constants.h:4519
Definition: build/TelepathyQt/_gen/constants.h:4534
Definition: build/TelepathyQt/_gen/constants.h:1714
QFlags< MessagePartSupportFlag > MessagePartSupportFlags
Definition: build/TelepathyQt/_gen/constants.h:1106
Definition: build/TelepathyQt/_gen/constants.h:2075
Definition: build/TelepathyQt/_gen/constants.h:2222
const int NUM_SASL_ABORT_REASONS
Definition: build/TelepathyQt/_gen/constants.h:3652
Definition: build/TelepathyQt/_gen/constants.h:2761
Definition: build/TelepathyQt/_gen/constants.h:4582
const int NUM_DELIVERY_STATUSES
Definition: build/TelepathyQt/_gen/constants.h:3620
Definition: build/TelepathyQt/_gen/constants.h:3151
const int NUM_CONTACT_METADATA_STORAGE_TYPES
Definition: build/TelepathyQt/_gen/constants.h:1949
RTCPXRStatisticsFlag
Definition: build/TelepathyQt/_gen/constants.h:1330
QFlags< ChannelGroupFlag > ChannelGroupFlags
Definition: build/TelepathyQt/_gen/constants.h:1043
Definition: build/TelepathyQt/_gen/constants.h:1311
AccessControlType
Definition: build/TelepathyQt/_gen/constants.h:2103
Definition: build/TelepathyQt/_gen/constants.h:3855
Definition: build/TelepathyQt/_gen/constants.h:2417
Definition: build/TelepathyQt/_gen/constants.h:2749
QFlags< DeliveryReportingSupportFlag > DeliveryReportingSupportFlags
Definition: build/TelepathyQt/_gen/constants.h:1219
Definition: build/TelepathyQt/_gen/constants.h:970
Definition: build/TelepathyQt/_gen/constants.h:2930
Definition: build/TelepathyQt/_gen/constants.h:3000
Definition: build/TelepathyQt/_gen/constants.h:1180
Definition: build/TelepathyQt/_gen/constants.h:769
Definition: build/TelepathyQt/_gen/constants.h:1404
const int NUM_CALL_CONTENT_DISPOSITIONS
Definition: build/TelepathyQt/_gen/constants.h:4272
Definition: build/TelepathyQt/_gen/constants.h:69
Definition: build/TelepathyQt/_gen/constants.h:244
Definition: build/TelepathyQt/_gen/constants.h:4211
Definition: build/TelepathyQt/_gen/constants.h:4544
Definition: build/TelepathyQt/_gen/constants.h:1755
Definition: build/TelepathyQt/_gen/constants.h:2312
Definition: build/TelepathyQt/_gen/constants.h:2230
Definition: build/TelepathyQt/_gen/constants.h:3136
Definition: build/TelepathyQt/_gen/constants.h:1292
Definition: build/TelepathyQt/_gen/constants.h:488
Definition: build/TelepathyQt/_gen/constants.h:1520
Definition: build/TelepathyQt/_gen/constants.h:2782
Definition: build/TelepathyQt/_gen/constants.h:490
Definition: build/TelepathyQt/_gen/constants.h:4319
CallFlag
Definition: build/TelepathyQt/_gen/constants.h:513
Definition: build/TelepathyQt/_gen/constants.h:2077
Definition: build/TelepathyQt/_gen/constants.h:3642
RichPresenceAccessControlType
Definition: build/TelepathyQt/_gen/constants.h:2202
Definition: build/TelepathyQt/_gen/constants.h:3804
Definition: build/TelepathyQt/_gen/constants.h:4371
const int NUM_CALL_STATE_CHANGE_REASONS
Definition: build/TelepathyQt/_gen/constants.h:2525
Definition: build/TelepathyQt/_gen/constants.h:4441
Definition: build/TelepathyQt/_gen/constants.h:212
LocalHoldState
Definition: build/TelepathyQt/_gen/constants.h:3466
Definition: build/TelepathyQt/_gen/constants.h:251
Definition: build/TelepathyQt/_gen/constants.h:2896
Definition: build/TelepathyQt/_gen/constants.h:1192
QFlags< LocationFeature > LocationFeatures
Definition: build/TelepathyQt/_gen/constants.h:422
Definition: build/TelepathyQt/_gen/constants.h:2432
const int NUM_RICH_PRESENCE_ACCESS_CONTROL_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2238
Definition: build/TelepathyQt/_gen/constants.h:3736
Definition: build/TelepathyQt/_gen/constants.h:3088
CaptchaStatus
Definition: build/TelepathyQt/_gen/constants.h:3025
Definition: build/TelepathyQt/_gen/constants.h:3340
Definition: build/TelepathyQt/_gen/constants.h:4491
Definition: build/TelepathyQt/_gen/constants.h:1712
const int NUM_SUBSCRIPTION_STATES
Definition: build/TelepathyQt/_gen/constants.h:1831
Definition: build/TelepathyQt/_gen/constants.h:725
QFlags< CallMemberFlag > CallMemberFlags
Definition: build/TelepathyQt/_gen/constants.h:650
Definition: build/TelepathyQt/_gen/constants.h:4385
Definition: build/TelepathyQt/_gen/constants.h:3749
Definition: build/TelepathyQt/_gen/constants.h:3060
Definition: build/TelepathyQt/_gen/constants.h:4469
Definition: build/TelepathyQt/_gen/constants.h:3894
Definition: build/TelepathyQt/_gen/constants.h:2043
const int NUM_TUBE_CHANNEL_STATES
Definition: build/TelepathyQt/_gen/constants.h:3767
Definition: build/TelepathyQt/_gen/constants.h:4607
Definition: build/TelepathyQt/_gen/constants.h:4264
Definition: build/TelepathyQt/_gen/constants.h:4177
const int NUM_CONNECTION_PRESENCE_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2085
Definition: build/TelepathyQt/_gen/constants.h:4135
Definition: build/TelepathyQt/_gen/constants.h:3156
Definition: build/TelepathyQt/_gen/constants.h:249
Definition: build/TelepathyQt/_gen/constants.h:116
HTTPMethod
Definition: build/TelepathyQt/_gen/constants.h:1959
Definition: build/TelepathyQt/_gen/constants.h:301
Definition: build/TelepathyQt/_gen/constants.h:2614
Definition: build/TelepathyQt/_gen/constants.h:4498
CallState
Definition: build/TelepathyQt/_gen/constants.h:2286
Definition: build/TelepathyQt/_gen/constants.h:2486
CaptchaCancelReason
Definition: build/TelepathyQt/_gen/constants.h:2985
CallContentDisposition
Definition: build/TelepathyQt/_gen/constants.h:4241
Definition: build/TelepathyQt/_gen/constants.h:2008
Definition: build/TelepathyQt/_gen/constants.h:1392
Definition: build/TelepathyQt/_gen/constants.h:4064
Definition: build/TelepathyQt/_gen/constants.h:4539
Definition: build/TelepathyQt/_gen/constants.h:4262
Definition: build/TelepathyQt/_gen/constants.h:787
LocationFeature
Definition: build/TelepathyQt/_gen/constants.h:400
Definition: build/TelepathyQt/_gen/constants.h:2590
const int NUM_CHANNEL_TEXT_MESSAGE_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2906
Definition: build/TelepathyQt/_gen/constants.h:1267
Definition: build/TelepathyQt/_gen/constants.h:3788
Definition: build/TelepathyQt/_gen/constants.h:664
ChannelPasswordFlag
Definition: build/TelepathyQt/_gen/constants.h:1227
MediaStreamError
Definition: build/TelepathyQt/_gen/constants.h:3912
Definition: build/TelepathyQt/_gen/constants.h:1335
const int NUM_TUBE_TYPES
Definition: build/TelepathyQt/_gen/constants.h:2940
Definition: build/TelepathyQt/_gen/constants.h:1069
const int NUM_CHANNEL_GROUP_CHANGE_REASONS
Definition: build/TelepathyQt/_gen/constants.h:3456
Definition: build/TelepathyQt/_gen/constants.h:2759
Definition: build/TelepathyQt/_gen/constants.h:2602
Definition: build/TelepathyQt/_gen/constants.h:596
QFlags< ChannelMediaCapability > ChannelMediaCapabilities
Definition: build/TelepathyQt/_gen/constants.h:739
Definition: build/TelepathyQt/_gen/constants.h:3942
Definition: build/TelepathyQt/_gen/constants.h:887
QFlags< ContactInfoFieldFlag > ContactInfoFieldFlags
Definition: build/TelepathyQt/_gen/constants.h:392
Definition: build/TelepathyQt/_gen/constants.h:3402
ServicePointType
Definition: build/TelepathyQt/_gen/constants.h:1990
Definition: build/TelepathyQt/_gen/constants.h:2394
Definition: build/TelepathyQt/_gen/constants.h:3523
Definition: build/TelepathyQt/_gen/constants.h:2517
Definition: build/TelepathyQt/_gen/constants.h:1582
Definition: build/TelepathyQt/_gen/constants.h:3255
const int NUM_DTMF_EVENTS
Definition: build/TelepathyQt/_gen/constants.h:3211
const int NUM_CHANNEL_CONTACT_SEARCH_STATES
Definition: build/TelepathyQt/_gen/constants.h:2569
Definition: build/TelepathyQt/_gen/constants.h:1738
Definition: build/TelepathyQt/_gen/constants.h:2645
Definition: build/TelepathyQt/_gen/constants.h:3711
const int NUM_LOCAL_HOLD_STATE_REASONS
Definition: build/TelepathyQt/_gen/constants.h:3543
const int NUM_SENDING_STATES
Definition: build/TelepathyQt/_gen/constants.h:4559
Definition: build/TelepathyQt/_gen/constants.h:901
SocketAccessControl
Definition: build/TelepathyQt/_gen/constants.h:3822
Definition: build/TelepathyQt/_gen/constants.h:2464
SendingState
Definition: build/TelepathyQt/_gen/constants.h:4529
Definition: build/TelepathyQt/_gen/constants.h:4511
Definition: build/TelepathyQt/_gen/constants.h:2497
Definition: build/TelepathyQt/_gen/constants.h:1801
Definition: build/TelepathyQt/_gen/constants.h:1652
Definition: build/TelepathyQt/_gen/constants.h:3446
Definition: build/TelepathyQt/_gen/constants.h:2583
Definition: build/TelepathyQt/_gen/constants.h:3917
Definition: build/TelepathyQt/_gen/constants.h:2728
LocalHoldStateReason
Definition: build/TelepathyQt/_gen/constants.h:3516
Definition: build/TelepathyQt/_gen/constants.h:2048
Definition: build/TelepathyQt/_gen/constants.h:2381
Definition: build/TelepathyQt/_gen/constants.h:3093
ContactMetadataStorageType
Definition: build/TelepathyQt/_gen/constants.h:1880
Definition: build/TelepathyQt/_gen/constants.h:3781
Definition: build/TelepathyQt/_gen/constants.h:3985
Definition: build/TelepathyQt/_gen/constants.h:2150
Definition: build/TelepathyQt/_gen/constants.h:1794
Definition: build/TelepathyQt/_gen/constants.h:3098
Definition: build/TelepathyQt/_gen/constants.h:1034
MailNotificationFlag
Definition: build/TelepathyQt/_gen/constants.h:430
Definition: build/TelepathyQt/_gen/constants.h:1355
Definition: build/TelepathyQt/_gen/constants.h:2475
const int NUM_STREAM_COMPONENTS
Definition: build/TelepathyQt/_gen/constants.h:4451
CallContentPacketizationType
Definition: build/TelepathyQt/_gen/constants.h:4197
Definition: build/TelepathyQt/_gen/constants.h:934
Definition: build/TelepathyQt/_gen/constants.h:4179
Definition: build/TelepathyQt/_gen/constants.h:958
Definition: build/TelepathyQt/_gen/constants.h:4049
Definition: build/TelepathyQt/_gen/constants.h:3486


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00472.html0000644000175100017520000010575212530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ProtocolInterfaceAvatarsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ConnectionManager>

Inherits Tp::AbstractInterface.

Public Member Functions

 ProtocolInterfaceAvatarsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterfaceAvatarsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterfaceAvatarsInterface (Tp::DBusProxy *proxy)
 
 ProtocolInterfaceAvatarsInterface (const Tp::Client::ConnectionManagerInterface &mainInterface)
 
 ProtocolInterfaceAvatarsInterface (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySupportedAvatarMIMETypes () const
 
Tp::PendingVariantrequestPropertyMinimumAvatarHeight () const
 
Tp::PendingVariantrequestPropertyMinimumAvatarWidth () const
 
Tp::PendingVariantrequestPropertyRecommendedAvatarHeight () const
 
Tp::PendingVariantrequestPropertyRecommendedAvatarWidth () const
 
Tp::PendingVariantrequestPropertyMaximumAvatarHeight () const
 
Tp::PendingVariantrequestPropertyMaximumAvatarWidth () const
 
Tp::PendingVariantrequestPropertyMaximumAvatarBytes () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterfaceAvatarsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterfaceAvatarsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface ( Tp::DBusProxy proxy)

Creates a ProtocolInterfaceAvatarsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface ( const Tp::Client::ConnectionManagerInterface mainInterface)
explicit

Creates a ProtocolInterfaceAvatarsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ProtocolInterfaceAvatarsInterface::ProtocolInterfaceAvatarsInterface ( const Tp::Client::ConnectionManagerInterface mainInterface,
QObject *  parent 
)

Creates a ProtocolInterfaceAvatarsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ProtocolInterfaceAvatarsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Protocol.Interface.Avatars", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertySupportedAvatarMIMETypes ( ) const
inline

Asynchronous getter for the remote object property SupportedAvatarMIMETypes of type QStringList.

The expected value of the Connection.Interface.Avatars.SupportedAvatarMIMETypes property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyMinimumAvatarHeight ( ) const
inline

Asynchronous getter for the remote object property MinimumAvatarHeight of type uint.

The expected value of the Connection.Interface.Avatars.MinimumAvatarHeight property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyMinimumAvatarWidth ( ) const
inline

Asynchronous getter for the remote object property MinimumAvatarWidth of type uint.

The expected value of the Connection.Interface.Avatars.MinimumAvatarWidth property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyRecommendedAvatarHeight ( ) const
inline

Asynchronous getter for the remote object property RecommendedAvatarHeight of type uint.

The expected value of the Connection.Interface.Avatars.RecommendedAvatarHeight property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyRecommendedAvatarWidth ( ) const
inline

Asynchronous getter for the remote object property RecommendedAvatarWidth of type uint.

The expected value of the Connection.Interface.Avatars.RecommendedAvatarWidth property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyMaximumAvatarHeight ( ) const
inline

Asynchronous getter for the remote object property MaximumAvatarHeight of type uint.

The expected value of the Connection.Interface.Avatars.MaximumAvatarHeight property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyMaximumAvatarWidth ( ) const
inline

Asynchronous getter for the remote object property MaximumAvatarWidth of type uint.

The expected value of the Connection.Interface.Avatars.MaximumAvatarWidth property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ProtocolInterfaceAvatarsInterface::requestPropertyMaximumAvatarBytes ( ) const
inline

Asynchronous getter for the remote object property MaximumAvatarBytes of type uint.

The expected value of the Connection.Interface.Avatars.MaximumAvatarBytes property on connections to this protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ProtocolInterfaceAvatarsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ProtocolInterfaceAvatarsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00217.html0000644000175100017520000020506112530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceSASLAuthenticationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceSASLAuthenticationInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply StartMechanism (const QString &mechanism, int timeout=-1)
 
QDBusPendingReply StartMechanismWithData (const QString &mechanism, const QByteArray &initialData, int timeout=-1)
 
QDBusPendingReply Respond (const QByteArray &responseData, int timeout=-1)
 
QDBusPendingReply AcceptSASL (int timeout=-1)
 
QDBusPendingReply AbortSASL (uint reason, const QString &debugMessage, int timeout=-1)
 

Signals

void SASLStatusChanged (uint status, const QString &reason, const QVariantMap &details)
 
void NewChallenge (const QByteArray &challengeData)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceSASLAuthenticationInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSASLAuthenticationInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSASLAuthenticationInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceSASLAuthenticationInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceSASLAuthenticationInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAvailableMechanisms () const
 
Tp::PendingVariantrequestPropertyHasInitialData () const
 
Tp::PendingVariantrequestPropertyCanTryAgain () const
 
Tp::PendingVariantrequestPropertySASLStatus () const
 
Tp::PendingVariantrequestPropertySASLError () const
 
Tp::PendingVariantrequestPropertySASLErrorDetails () const
 
Tp::PendingVariantrequestPropertyAuthorizationIdentity () const
 
Tp::PendingVariantrequestPropertyDefaultUsername () const
 
Tp::PendingVariantrequestPropertyDefaultRealm () const
 
Tp::PendingVariantrequestPropertyMaySaveResponse () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSASLAuthenticationInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSASLAuthenticationInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceSASLAuthenticationInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceSASLAuthenticationInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceSASLAuthenticationInterface::ChannelInterfaceSASLAuthenticationInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceSASLAuthenticationInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceSASLAuthenticationInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyAvailableMechanisms ( ) const
inline

Asynchronous getter for the remote object property AvailableMechanisms of type QStringList.

The SASL mechanisms as offered by the server, plus any pseudo-SASL mechanisms supported by the connection manager for credentials transfer. For instance, in a protocol that natively uses SASL (like XMPP), this might be [ "X-TELEPATHY-PASSWORD", "PLAIN", "DIGEST-MD5", "SCRAM-SHA-1" ].

To make it possible to implement a very simple password-querying user interface without knowledge of any particular SASL mechanism, implementations of this interface MUST implement the pseudo-mechanism X-TELEPATHY-PASSWORD, unless none of the available mechanisms use a password at all.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyHasInitialData ( ) const
inline

Asynchronous getter for the remote object property HasInitialData of type bool.

If true, StartMechanismWithData() can be expected to work for SASL mechanisms not starting with X-TELEPATHY- (this is the case in most, but not all, protocols). If false, StartMechanism() must be used instead.

This property does not affect the X-TELEPATHY- pseudo-mechanisms such as X-TELEPATHY-PASSWORD, which can use StartMechanismWithData() regardless of the value of this property.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyCanTryAgain ( ) const
inline

Asynchronous getter for the remote object property CanTryAgain of type bool.

If true, StartMechanism() and (if supported) StartMechanismWithData() can be expected to work when in one of the Failed states. If false, the only thing you can do after failure is to close the channel.

Retrying isn't required to work, although some protocols and implementations allow it.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertySASLStatus ( ) const
inline

Asynchronous getter for the remote object property SASLStatus of type uint.

The current status of this channel. Change notification is via the SASLStatusChanged() signal.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertySASLError ( ) const
inline

Asynchronous getter for the remote object property SASLError of type QString.

The reason for the SASLStatus , or an empty string if the state is neither Server_Failed nor Client_Failed.

In particular, an ordinary authentication failure (as would be produced for an incorrect password) SHOULD be represented by AuthenticationFailed, cancellation by the user's request SHOULD be represented by Cancelled, and cancellation by a local process due to inconsistent or invalid challenges from the server SHOULD be represented by ServiceConfused.

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, this error code SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertySASLErrorDetails ( ) const
inline

Asynchronous getter for the remote object property SASLErrorDetails of type QVariantMap.

If SASLError is non-empty, any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of ConnectionInterface::ConnectionError() .

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, these details SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyAuthorizationIdentity ( ) const
inline

Asynchronous getter for the remote object property AuthorizationIdentity of type QString.

The identity for which authorization is being attempted, typically the 'account' from the ConnectionManagerInterface::RequestConnection() parameters, normalized and formatted according to the conventions used for SASL in this protocol.

The normalization used for SASL might not be the same normalization used elsewhere: for instance, in a protocol with email-like identifiers such as XMPP or SIP, the user "juliet@example.com" might have to authenticate to the example.com server via SASL PLAIN as "juliet".

This is usually achieved by using the authorization identity for authentication, but an advanced Handler could offer the option to authenticate under a different identity.

The terminology used here is that the authorization identity is who you want to act as, and the authentication identity is used to prove that you may do so. For instance, if Juliet is authorized to access a role account, "sysadmin@example.com", and act on its behalf, it might be possible to authenticate as "juliet@example.com" with her own password, but request to be authorized as "sysadmin@example.com" instead of her own account. See RFC 4422 §3.4.1 for more details.

In SASL the authorization identity is normally guessed from the authentication identity, but the information available to the connection manager is the identity for which authorization is required, such as the desired JID in XMPP, so that's what we signal to UIs; it's up to the UI to choose whether to authenticate as the authorization identity or some other identity.

As a concrete example, the "sysadmin" XMPP account mentioned above would have { 'account': 'sysadmin@example.com' } in its Parameters, and this property would also be 'sysadmin@example.com'. A simple Handler would merely prompt for sysadmin@example.com's password, and use that JID as both the authorization and authentication identity, which might result in SASL PLAIN authentication with the initial response '\\000sysadmin@example.com\\000root'.

A more advanced Handler might also ask for an authentication identity, defaulting to 'sysadmin@example.com'; if Juliet provided authentication identity 'juliet@example.com' and password 'romeo', the Handler might perform SASL PLAIN authentication using the initial response 'sysadmin@example.com\\000juliet@example.com\\000romeo'.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyDefaultUsername ( ) const
inline

Asynchronous getter for the remote object property DefaultUsername of type QString.

The default username for use with SASL mechanisms that deal with a "simple username" (as defined in RFC 4422). If such a SASL mechanism is in use, clients SHOULD default to using the DefaultUsername; also, if the client uses the DefaultUsername, it SHOULD assume that the authorization identity AuthorizationIdentity will be derived from it by the server.

In XMPP, servers typically expect "user@example.com" to authenticate with username "user"; this was a SHOULD in RFC 3920.

3920bis weakens that SHOULD to "in the absence of local information provided by the server, an XMPP client SHOULD assume that the authentication identity for such a SASL mechanism is the combination of a user name and password, where the simple user name is the localpart of the user's JID".

For example, in the simple case, if the user connects with ConnectionManagerInterface::RequestConnection() ({ account: "user@example.com" }) and use PLAIN with password "password", he or she should authenticate like so: "\\0user\\0password" and the channel will look like this:

{ "...  DefaultUsername   ": "user",
  "...  AuthorizationIdentity   ": "user@example.com }

In the complex case, if the same user is using his or her sysadmin powers to log in as the "announcements" role address, he or she would connect with ConnectionManagerInterface::RequestConnection() ({ account: "announcements@example.com" }) and the SASL channel would look like this:

{ "...  DefaultUsername   ": "announcements",
  "...  AuthorizationIdentity   ": "announcements@example.com }

A sufficiently elaborate UI could give the opportunity to override the username from "announcements" to "user". The user's simple username is still "user", and the password is still "password", but this time he or she is trying to authorize to act as announcements@example.com, so the UI would have to perform SASL PLAIN with this string: "announcements@example.com\\0user\\0password", where "announcements@example.com" is the AuthorizationIdentity .

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyDefaultRealm ( ) const
inline

Asynchronous getter for the remote object property DefaultRealm of type QString.

The default realm (as defined in RFC 2831) to use for authentication, if the server does not supply one.

The server is not required to provide a realm; if it doesn't, the client is expected to ask the user or provide a sensible default, typically the requested DNS name of the server. In some implementations of DIGEST-MD5, the server does not specify a realm, but expects that the client will choose a particular default, and authentication will fail if the client's default is different. Connection managers for protocols where this occurs are more easily able to work around these implementations than a generic client would be.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestPropertyMaySaveResponse ( ) const
inline

Asynchronous getter for the remote object property MaySaveResponse of type bool.

Whether or not the client can save the authentication response and re-use it to automate future authentication challenges.

If this property is False, the client SHOULD NOT attempt to cache the authentication response in its own keyring.

If this property is not specified, it should be treated as if it were True.

Some protocols or services may have terms and conditions that prohibit caching a user's credentials.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceSASLAuthenticationInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceSASLAuthenticationInterface::StartMechanism ( const QString &  mechanism,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StartMechanism on the remote object.

Start an authentication try using Mechanism, without sending initial data (an "initial response" as defined in RFC 4422).

This method is appropriate for mechanisms where the client cannot send anything until it receives a challenge from the server, such as DIGEST-MD5 in "initial authentication" mode.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
mechanism
The chosen mechanism.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceSASLAuthenticationInterface::StartMechanismWithData ( const QString &  mechanism,
const QByteArray &  initialData,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method StartMechanismWithData on the remote object.

Start an authentication try using Mechanism, and send Initial_Data as the "initial response" defined in RFC 4422 §3.3.

This method is appropriate for mechanisms where the client may send data first, such as PLAIN, or must send data first, such as DIGEST-MD5 in "subsequent authentication" mode.

Having two methods allows any mechanism where it makes a difference to distinguish between the absence of an initial response ( StartMechanism() ) and a zero-byte initial response (StartMechanismWithData, with Initial_Data empty).

If the HasInitialData property is false, this indicates that the underlying protocol does not make it possible to send initial data. In such protocols, this method may only be used for the X-TELEPATHY- pseudo-mechanisms (such as X-TELEPATHY-PASSWORD), and will fail if used with an ordinary SASL mechanism.

For instance, the IRC SASL extension implemented in Charybdis and Atheme does not support initial data - the first message in the exchange only carries the mechanism. This is significant if using DIGEST-MD5, which cannot be used in the faster "subsequent authentication" mode on a protocol not supporting initial data.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
mechanism
The chosen mechanism.
initialData
Initial data (an &quot;initial response&quot; in RFC 4422&apos;s 
terminology) to send with the mechanism.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceSASLAuthenticationInterface::Respond ( const QByteArray &  responseData,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Respond on the remote object.

Send a response to the the last challenge received via NewChallenge() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
responseData
The response data.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceSASLAuthenticationInterface::AcceptSASL ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method AcceptSASL on the remote object.

If the channel's status is SASL_Status_Server_Succeeded, this method confirms successful authentication and advances the status of the channel to SASL_Status_Succeeded.

If the channel's status is SASL_Status_In_Progress, calling this method indicates that the last NewChallenge() signal was in fact additional data sent after a successful SASL negotiation, and declares that from the client's point of view, authentication was successful. This advances the state of the channel to SASL_Status_Client_Accepted.

In mechanisms where the server authenticates itself to the client, calling this method indicates that the client considers this to have been successful. In the case of ChannelTypeServerAuthenticationInterface channels, this means that the connection manager MAY continue to connect, and MAY advance the ConnectionInterface::Status to Connected.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelInterfaceSASLAuthenticationInterface::AbortSASL ( uint  reason,
const QString &  debugMessage,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AbortSASL on the remote object.

Abort the current authentication try.

If the current status is SASL_Status_Server_Failed or SASL_Status_Client_Failed, this method returns successfully, but has no further effect. If the current status is SASL_Status_Succeeded or SASL_Status_Client_Accepted then NotAvailable is raised. Otherwise, it changes the channel's state to SASL_Status_Client_Failed, with an appropriate error name and reason code.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
reason
Reason for abort.
debugMessage
Debug message for abort.
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceSASLAuthenticationInterface::SASLStatusChanged ( uint  status,
const QString &  reason,
const QVariantMap &  details 
)
signal

Represents the signal SASLStatusChanged on the remote object.

Emitted when the status of the channel changes.

Parameters
status
The new value of SASLStatus.
reason
The new value of SASLError.
details
The new value of SASLErrorDetails.
void Tp::Client::ChannelInterfaceSASLAuthenticationInterface::NewChallenge ( const QByteArray &  challengeData)
signal

Represents the signal NewChallenge on the remote object.

Emitted when a new challenge is received from the server, or when a message indicating successful authentication and containing additional data is received from the server.

When the channel's handler is ready to proceed, it should respond to the challenge by calling Respond() , or respond to the additional data by calling AcceptSASL() . Alternatively, it may call AbortSASL() to abort authentication.

Parameters
challengeData
The challenge data or additional data from the server.
void Tp::Client::ChannelInterfaceSASLAuthenticationInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01188.html0000644000175100017520000000501012530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RTCPFeedbackMessage Member List

This is the complete list of members for Tp::RTCPFeedbackMessage, including all inherited members.

parametersTp::RTCPFeedbackMessage
subtypeTp::RTCPFeedbackMessage
typeTp::RTCPFeedbackMessage


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x70.html0000644000175100017520000004077112530426260024124 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- p -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00661_source.html0000644000175100017520000005067212530426257022527 0ustar00kaffeinekaffeine00000000000000 connection-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
connection-manager.h
1 
23 #ifndef _TelepathyQt_connection_manager_h_HEADER_GUARD_
24 #define _TelepathyQt_connection_manager_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-connection-manager.h>
31 
32 #include <TelepathyQt/ChannelFactory>
33 #include <TelepathyQt/ConnectionFactory>
34 #include <TelepathyQt/Constants>
35 #include <TelepathyQt/ContactFactory>
36 #include <TelepathyQt/DBus>
37 #include <TelepathyQt/DBusProxy>
38 #include <TelepathyQt/OptionalInterfaceFactory>
39 #include <TelepathyQt/ProtocolInfo>
40 #include <TelepathyQt/ProtocolParameter>
41 #include <TelepathyQt/ReadinessHelper>
42 #include <TelepathyQt/SharedPtr>
43 #include <TelepathyQt/Types>
44 
45 namespace Tp
46 {
47 
48 class ConnectionManagerLowlevel;
49 class PendingConnection;
50 class PendingStringList;
51 
52 class TP_QT_EXPORT ConnectionManager : public StatelessDBusProxy,
53  public OptionalInterfaceFactory<ConnectionManager>
54 {
55  Q_OBJECT
56  Q_DISABLE_COPY(ConnectionManager)
57  Q_PROPERTY(QString name READ name)
58  Q_PROPERTY(QStringList supportedProtocols READ supportedProtocols)
59  Q_PROPERTY(ProtocolInfoList protocols READ protocols)
60 
61 public:
62  static const Feature FeatureCore;
63 
64  static ConnectionManagerPtr create(const QDBusConnection &bus,
65  const QString &name);
66  static ConnectionManagerPtr create(const QString &name,
67  const ConnectionFactoryConstPtr &connectionFactory =
68  ConnectionFactory::create(QDBusConnection::sessionBus()),
69  const ChannelFactoryConstPtr &channelFactory =
70  ChannelFactory::create(QDBusConnection::sessionBus()),
71  const ContactFactoryConstPtr &contactFactory =
72  ContactFactory::create());
73  static ConnectionManagerPtr create(const QDBusConnection &bus,
74  const QString &name,
75  const ConnectionFactoryConstPtr &connectionFactory,
76  const ChannelFactoryConstPtr &channelFactory,
77  const ContactFactoryConstPtr &contactFactory =
78  ContactFactory::create());
79 
80  virtual ~ConnectionManager();
81 
82  QString name() const;
83 
84  ConnectionFactoryConstPtr connectionFactory() const;
85  ChannelFactoryConstPtr channelFactory() const;
86  ContactFactoryConstPtr contactFactory() const;
87 
88  QStringList supportedProtocols() const;
89  const ProtocolInfoList &protocols() const;
90  bool hasProtocol(const QString &protocolName) const;
91  ProtocolInfo protocol(const QString &protocolName) const;
92 
93  static PendingStringList *listNames(
94  const QDBusConnection &bus = QDBusConnection::sessionBus());
95 
96 #if defined(BUILDING_TP_QT) || defined(TP_QT_ENABLE_LOWLEVEL_API)
97  ConnectionManagerLowlevelPtr lowlevel();
98  ConnectionManagerLowlevelConstPtr lowlevel() const;
99 #endif
100 
101 protected:
102  ConnectionManager(const QDBusConnection &bus, const QString &name,
103  const ConnectionFactoryConstPtr &connectionFactory,
104  const ChannelFactoryConstPtr &channelFactory,
105  const ContactFactoryConstPtr &contactFactory);
106 
107  Client::ConnectionManagerInterface *baseInterface() const;
108 
109 private Q_SLOTS:
110  TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op);
111  TP_QT_NO_EXPORT void gotProtocolsLegacy(QDBusPendingCallWatcher *watcher);
112  TP_QT_NO_EXPORT void gotParametersLegacy(QDBusPendingCallWatcher *watcher);
113  TP_QT_NO_EXPORT void onProtocolReady(Tp::PendingOperation *watcher);
114 
115 private:
116  friend class PendingConnection;
117 
118  struct Private;
119  friend struct Private;
120  Private *mPriv;
121 };
122 
123 } // Tp
124 
125 #endif
The StatelessDBusProxy class is a base class representing a remote object whose API is basically stat...
Definition: dbus-proxy.h:80
The PendingConnection class represents the parameters of and the reply to an asynchronous connection ...
Definition: pending-connection.h:43
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The ChannelFactory class is responsible for constructing Channel objects according to application-def...
Definition: channel-factory.h:46
The ConnectionManager class represents a Telepathy connection manager.
Definition: connection-manager.h:52
QList< ProtocolInfo > ProtocolInfoList
Definition: protocol-info.h:104
The ContactFactory class is responsible for constructing Contact objects according to application-def...
Definition: contact-factory.h:44
The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-string-list.h:37
The ConnectionFactory class is responsible for constructing Connection objects according to applicati...
Definition: connection-factory.h:49
Definition: cli-connection-manager.h:44
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00531.html0000644000175100017520000001344112530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::StringStringMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StringStringMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QString >.

Public Member Functions

 StringStringMap ()
 
 StringStringMap (const QMap< QString, QString > &a)
 
StringStringMapoperator= (const QMap< QString, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QString>, but needed to have a discrete type in the Qt type system.

A mapping from strings to strings representing extra key-value pairs.

Constructor & Destructor Documentation

Tp::StringStringMap::StringStringMap ( )
inline
Tp::StringStringMap::StringStringMap ( const QMap< QString, QString > &  a)
inline

Member Function Documentation

StringStringMap& Tp::StringStringMap::operator= ( const QMap< QString, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2plastnode.png0000644000175100017520000000034512530426257022735 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|¬IDATxí=QF‘Ø¥D«ÔkÄ:‰F©PK؃=V@§Õ³ Õ8SHxñÌ0bnrróŠ{ò½¿¾’$ ÀÏTŠP  ö¼X¬OÛd6êìòð"°²S´±O¥B€(¡àQé)š+YĈ ÒªËRÉÐ>VtÉsˆm9(ê„䜥k‚-@ȧ-Ü$ó b Ò[he ¿Kp-ôl|CùÿApRG'rÍ­aIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00286.html0000644000175100017520000010272612530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceContactCapabilitiesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactCapabilitiesInterface Class Reference

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply UpdateCapabilities (const Tp::HandlerCapabilitiesList &handlerCapabilities, int timeout=-1)
 
QDBusPendingReply
< Tp::ContactCapabilitiesMap
GetContactCapabilities (const Tp::UIntList &handles, int timeout=-1)
 

Signals

void ContactCapabilitiesChanged (const Tp::ContactCapabilitiesMap &caps)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceContactCapabilitiesInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactCapabilitiesInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactCapabilitiesInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceContactCapabilitiesInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceContactCapabilitiesInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactCapabilitiesInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactCapabilitiesInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceContactCapabilitiesInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceContactCapabilitiesInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::ConnectionInterfaceContactCapabilitiesInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceContactCapabilitiesInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::UpdateCapabilities ( const Tp::HandlerCapabilitiesList handlerCapabilities,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method UpdateCapabilities on the remote object.

Alter the connection's advertised capabilities to include the intersection of the given clients' capabilities with what the connection manager is able to implement.

On connections managed by the ChannelDispatcher, processes other than the ChannelDispatcher SHOULD NOT call this method, and the ChannelDispatcher SHOULD use this method to advertise the capabilities of all the registered ClientHandlerInterface implementations.On connections not managed by the ChannelDispatcher, clients MAY use this method directly, to indicate the channels they will handle and the extra capabilities they have.

Upon a successful invocation of this method, the connection manager will only emit the ContactCapabilitiesChanged() signal for the user's ConnectionInterface::SelfHandle if, in the underlying protocol, the new capabilities are distinct from the previous state.

The connection manager will essentially intersect the provided capabilities and the channel classes it implements. Therefore, certain properties which are never fixed for a channel class (such as the target handle, or the Parameters property of a tube channel) will almost certainly not be advertised.

This method MAY be called on a newly-created connection while it is still in the DISCONNECTED state, to request that when the connection connects, it will do so with the appropriate capabilities. Doing so MUST NOT fail.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handlerCapabilities
The capabilities of one or more clients. For each client in the 
given list, any capabilities previously advertised for the same 
client name are discarded, then replaced by the capabilities 
indicated. As a result, if a client becomes unavailable, this 
method SHOULD be called with a Handler_Capabilities structure 
containing its name, an empty list of channel classes, and an empty 
list of capabilities. When this is done, the connection manager 
SHOULD free all memory associated with that client name. This 
method takes a list of clients so that when the channel dispatcher 
first calls it (with a list of all the Handlers that are initially 
available), the changes can be made atomically, with only one 
transmission of updated capabilities to the network. Afterwards, 
the channel dispatcher will call this method with a single-element 
list every time a Handler becomes available or unavailable. The 
connection manager MUST ignore any channel classes and client 
capabilities for which there is no representation in the protocol 
or no support in the connection manager.
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::ContactCapabilitiesMap> Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::GetContactCapabilities ( const Tp::UIntList handles,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactCapabilities on the remote object.

Returns an array of requestable channel classes for the given contact handles, representing the channel requests that are expected to succeed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handles

An array of contact handles for this connection.

The handle zero MUST NOT be included in the request.

timeoutThe timeout in milliseconds.
Returns

A map from contact handles to lists of requestable channel classes, representing the channel requests that are expected to succeed for that contact.

Contacts listed among Handles whose capabilities are unknown SHOULD be omitted from this map; contacts known to have an empty set of capabilities SHOULD be included in the keys of this map, with an empty array as the corresponding value.

void Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::ContactCapabilitiesChanged ( const Tp::ContactCapabilitiesMap caps)
signal

Represents the signal ContactCapabilitiesChanged on the remote object.

Announce that there has been a change of capabilities on the given handles. A single signal can be emitted for several contacts.

The underlying protocol can get several contacts' capabilities at the same time.

Parameters
caps All the capabilities of the contacts
void Tp::Client::ConnectionInterfaceContactCapabilitiesInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01247.html0000644000175100017520000004176512530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallStreamInterfaceMediaInterface Member List

This is the complete list of members for Tp::Client::CallStreamInterfaceMediaInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddCandidates(const Tp::CandidateList &candidates, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
CallStreamInterfaceMediaInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallStreamInterfaceMediaInterface
CallStreamInterfaceMediaInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::CallStreamInterfaceMediaInterface
CallStreamInterfaceMediaInterface(Tp::DBusProxy *proxy)Tp::Client::CallStreamInterfaceMediaInterface
CallStreamInterfaceMediaInterface(const Tp::Client::CallStreamInterface &mainInterface)Tp::Client::CallStreamInterfaceMediaInterfaceexplicit
CallStreamInterfaceMediaInterface(const Tp::Client::CallStreamInterface &mainInterface, QObject *parent)Tp::Client::CallStreamInterfaceMediaInterface
CompleteReceivingStateChange(uint state, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
CompleteSendingStateChange(uint state, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
EndpointsChanged(const Tp::ObjectPathList &endpointsAdded, const Tp::ObjectPathList &endpointsRemoved)Tp::Client::CallStreamInterfaceMediaInterfacesignal
Fail(const Tp::CallStateReason &reason, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
FinishInitialCandidates(int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
ICERestartRequested()Tp::Client::CallStreamInterfaceMediaInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::CallStreamInterfaceMediaInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
LocalCandidatesAdded(const Tp::CandidateList &candidates)Tp::Client::CallStreamInterfaceMediaInterfacesignal
LocalCredentialsChanged(const QString &username, const QString &password)Tp::Client::CallStreamInterfaceMediaInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ReceivingStateChanged(uint state)Tp::Client::CallStreamInterfaceMediaInterfacesignal
RelayInfoChanged(const Tp::StringVariantMapList &relayInfo)Tp::Client::CallStreamInterfaceMediaInterfacesignal
ReportReceivingFailure(uint reason, const QString &error, const QString &message, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
ReportSendingFailure(uint reason, const QString &error, const QString &message, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
requestAllProperties() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyEndpoints() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyHasServerInfo() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyICERestartPending() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyLocalCandidates() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyLocalCredentials() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyReceivingState() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyRelayInfo() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertySendingState() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertySTUNServers() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
requestPropertyTransport() const Tp::Client::CallStreamInterfaceMediaInterfaceinline
SendingStateChanged(uint state)Tp::Client::CallStreamInterfaceMediaInterfacesignal
ServerInfoRetrieved()Tp::Client::CallStreamInterfaceMediaInterfacesignal
SetCredentials(const QString &username, const QString &password, int timeout=-1)Tp::Client::CallStreamInterfaceMediaInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::CallStreamInterfaceMediaInterfaceinlinestatic
STUNServersChanged(const Tp::SocketAddressIPList &servers)Tp::Client::CallStreamInterfaceMediaInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00030.html0000644000175100017520000000746712530426257021141 0ustar00kaffeinekaffeine00000000000000 protocols/cm-wrapper.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocols/cm-wrapper.h
#ifndef _TelepathyQt_examples_protocols_cm_wrapper_h_HEADER_GUARD_
#define _TelepathyQt_examples_protocols_cm_wrapper_h_HEADER_GUARD_
#include <TelepathyQt/Types>
#include <QObject>
#include <QString>
using namespace Tp;
namespace Tp
{
}
class CMWrapper : public QObject
{
Q_OBJECT
public:
CMWrapper(const QString &cmName, QObject *parent = 0);
~CMWrapper();
ConnectionManagerPtr cm() const;
Q_SIGNALS:
void finished();
private Q_SLOTS:
void onCMReady(Tp::PendingOperation *op);
private:
ConnectionManagerPtr mCM;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00658_source.html0000644000175100017520000004236012530426257022530 0ustar00kaffeinekaffeine00000000000000 connection-lowlevel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
connection-lowlevel.h
1 
23 #ifndef _TelepathyQt_connection_lowlevel_h_HEADER_GUARD_
24 #define _TelepathyQt_connection_lowlevel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class Connection;
37 class PendingChannel;
38 class PendingContactAttributes;
39 class PendingHandles;
40 class PendingOperation;
41 class PendingReady;
42 
43 class TP_QT_EXPORT ConnectionLowlevel : public QObject, public RefCounted
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(ConnectionLowlevel)
47 
48 public:
50 
51  bool isValid() const;
52  ConnectionPtr connection() const;
53 
54  PendingReady *requestConnect(const Features &requestedFeatures = Features());
55  PendingOperation *requestDisconnect();
56 
57  SimpleStatusSpecMap allowedPresenceStatuses() const;
58  uint maxPresenceStatusMessageLength() const;
59 
60  PendingOperation *setSelfPresence(const QString &status, const QString &statusMessage);
61 
62  PendingChannel *createChannel(const QVariantMap &request);
63  PendingChannel *createChannel(const QVariantMap &request, int timeout);
64  PendingChannel *ensureChannel(const QVariantMap &request);
65  PendingChannel *ensureChannel(const QVariantMap &request, int timeout);
66 
67  PendingHandles *requestHandles(HandleType handleType, const QStringList &names);
68  PendingHandles *referenceHandles(HandleType handleType, const UIntList &handles);
69 
70  PendingContactAttributes *contactAttributes(const UIntList &handles,
71  const QStringList &interfaces, bool reference = true);
72  QStringList contactAttributeInterfaces() const;
73 
74  void injectContactIds(const HandleIdentifierMap &contactIds);
75  void injectContactId(uint handle, const QString &contactId);
76 
77 private:
78  friend class Connection;
79  friend class ContactManager;
80  friend class PendingContacts;
81 
82  TP_QT_NO_EXPORT ConnectionLowlevel(Connection *parent);
83 
84  TP_QT_NO_EXPORT bool hasImmortalHandles() const;
85 
86  TP_QT_NO_EXPORT bool hasContactId(uint handle) const;
87  TP_QT_NO_EXPORT QString contactId(uint handle) const;
88 
89  struct Private;
90  friend struct Private;
91  Private *mPriv;
92 };
93 
94 } // Tp
95 
96 #endif
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
The PendingHandles class represents the parameters of and the reply to an asynchronous handle request...
Definition: pending-handles.h:46
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
The PendingContacts class is used by ContactManager when creating/updating Contact objects...
Definition: pending-contacts.h:46
The Connection class represents a Telepathy connection.
Definition: connection.h:62
Definition: build/TelepathyQt/_gen/types.h:3849
The PendingChannel class represents the parameters of and the reply to an asynchronous channel reques...
Definition: pending-channel.h:44
Definition: build/TelepathyQt/_gen/types.h:1646
The ConnectionLowlevel class extends Connection with support to low-level features.
Definition: connection-lowlevel.h:43
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Features class represents a list of Feature.
Definition: feature.h:61
The PendingContactAttributes class represents the parameters of and the reply to an asynchronous requ...
Definition: pending-contact-attributes.h:40


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00345.html0000644000175100017520000006611312530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::DebugInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/DebugReceiver>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::DebugMessageList
GetMessages (int timeout=-1)
 

Signals

void NewDebugMessage (double time, const QString &domain, uint level, const QString &message)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 DebugInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 DebugInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 DebugInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyEnabled () const
 
Tp::PendingOperationsetPropertyEnabled (bool newValue)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::DebugInterface::DebugInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a DebugInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DebugInterface::DebugInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a DebugInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DebugInterface::DebugInterface ( Tp::DBusProxy proxy)

Creates a DebugInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::DebugInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Debug", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::DebugInterface::requestPropertyEnabled ( ) const
inline

Asynchronous getter for the remote object property Enabled of type bool.

TRUE if the NewDebugMessage signal should be emitted when a new debug message is generated.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::DebugInterface::setPropertyEnabled ( bool  newValue)
inline

Asynchronous setter for the remote object property Enabled of type bool.

TRUE if the NewDebugMessage signal should be emitted when a new debug message is generated.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariantMap* Tp::Client::DebugInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::DebugMessageList> Tp::Client::DebugInterface::GetMessages ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetMessages on the remote object.

Retrieve buffered debug messages. An implementation could have a limit on how many message it keeps and so the array returned from this method should not be assumed to be all of the messages in the lifetime of the service.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
A list of debug messages.
void Tp::Client::DebugInterface::NewDebugMessage ( double  time,
const QString &  domain,
uint  level,
const QString &  message 
)
signal

Represents the signal NewDebugMessage on the remote object.

Emitted when a debug messages is generated if the Enabled property is set to TRUE.

Parameters
time
Timestamp of the debug message.
domain
Domain of the debug message, as described in the Debug_Message 
struct.
level
Level of the debug message.
message
The text of the debug message.
void Tp::Client::DebugInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01306.html0000644000175100017520000002274012530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactCapabilitiesInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceContactCapabilitiesInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceContactCapabilitiesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactCapabilitiesInterface
ConnectionInterfaceContactCapabilitiesInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactCapabilitiesInterface
ConnectionInterfaceContactCapabilitiesInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceContactCapabilitiesInterface
ConnectionInterfaceContactCapabilitiesInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceContactCapabilitiesInterfaceexplicit
ConnectionInterfaceContactCapabilitiesInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceContactCapabilitiesInterface
ContactCapabilitiesChanged(const Tp::ContactCapabilitiesMap &caps)Tp::Client::ConnectionInterfaceContactCapabilitiesInterfacesignal
GetContactCapabilities(const Tp::UIntList &handles, int timeout=-1)Tp::Client::ConnectionInterfaceContactCapabilitiesInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceContactCapabilitiesInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceContactCapabilitiesInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceContactCapabilitiesInterfaceinlinestatic
UpdateCapabilities(const Tp::HandlerCapabilitiesList &handlerCapabilities, int timeout=-1)Tp::Client::ConnectionInterfaceContactCapabilitiesInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01060.html0000644000175100017520000001105712530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::OrFilter< T > Member List

This is the complete list of members for Tp::OrFilter< T >, including all inherited members.

create(const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >())Tp::OrFilter< T >inlinestatic
Filter()Tp::Filter< T >inlineprotected
filters() const Tp::OrFilter< T >inline
isValid() const Tp::OrFilter< T >inlinevirtual
matches(const SharedPtr< T > &t) const Tp::OrFilter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
~Filter()Tp::Filter< T >inlinevirtual
~OrFilter()Tp::OrFilter< T >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespacemembers.html0000644000175100017520000000337312530426260023627 0ustar00kaffeinekaffeine00000000000000 Namespace Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all namespace members with links to the namespace documentation for each member:

- v -

  • variantTypeFromDBusSignature() : Tp
  • VideoResolutionStruct : Tp


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00404.html0000644000175100017520000005667412530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Message Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Message class represents a Telepathy message in a TextChannel. More...

#include <TelepathyQt/Message>

Inherited by Tp::ReceivedMessage.

Public Member Functions

 Message (ChannelTextMessageType, const QString &)
 
 Message (const Message &other)
 
 ~Message ()
 
Messageoperator= (const Message &other)
 
bool operator== (const Message &other) const
 
bool operator!= (const Message &other) const
 
QDateTime sent () const
 
ChannelTextMessageType messageType () const
 
bool isTruncated () const
 
bool hasNonTextContent () const
 
QString messageToken () const
 
bool isSpecificToDBusInterface () const
 
QString dbusInterface () const
 
QString text () const
 
MessagePart header () const
 
int size () const
 
MessagePart part (uint index) const
 
MessagePartList parts () const
 

Detailed Description

The Message class represents a Telepathy message in a TextChannel.

This class is implicitly shared, like QString.

Constructor & Destructor Documentation

Tp::Message::Message ( ChannelTextMessageType  type,
const QString &  text 
)

Construct a new Message object.

Parameters
typeThe message type.
textThe message body.
Tp::Message::Message ( const Message other)

Copy constructor.

Tp::Message::~Message ( )

Class destructor.

Member Function Documentation

Message & Tp::Message::operator= ( const Message other)

Assignment operator.

bool Tp::Message::operator== ( const Message other) const

Equality operator.

bool Tp::Message::operator!= ( const Message other) const
inline
QDateTime Tp::Message::sent ( ) const

Return the time the message was sent, or QDateTime() if that time is unknown.

Returns
The timestamp as QDateTime.
ChannelTextMessageType Tp::Message::messageType ( ) const

Return the type of this message, or ChannelTextMessageTypeNormal if the type is not recognised.

Returns
The type as ChannelTextMessageType.
bool Tp::Message::isTruncated ( ) const

Return whether this message was truncated during delivery.

Returns
true if truncated, false otherwise.
bool Tp::Message::hasNonTextContent ( ) const

Return whether this message contains parts not representable as plain text.

Returns
true if it cannot completely be represented as plain text, false otherwise.
QString Tp::Message::messageToken ( ) const

Return the unique token identifying this message (e.g. the id attribute for XMPP messages), or an empty string if there is no suitable token.

Returns
The non-empty message identifier, or an empty string if none.
bool Tp::Message::isSpecificToDBusInterface ( ) const

Return whether this message is specific to a D-Bus interface. This is false in almost all cases.

If this function returns true, the message is specific to the interface indicated by dbusInterface(). Clients that don't understand that interface should not display the message. However, if the client would acknowledge an ordinary message, it must also acknowledge this interface-specific message.

Returns
true if dbusInterface() would return a non-empty string, false otherwise.
See Also
dbusInterface()
QString Tp::Message::dbusInterface ( ) const

Return the D-Bus interface to which this message is specific, or an empty string for normal messages.

Returns
The D-Bus interface name, or an empty string.
See Also
isSpecificToDBusInterface()
QString Tp::Message::text ( ) const

Return the message body containing all "text/plain" parts.

Returns
The body text.
MessagePart Tp::Message::header ( ) const

Return the message's header part, as defined by the Telepathy specification.

This is provided for advanced clients that need to access additional information not available through the normal Message API.

Returns
The header as a MessagePart object. The same thing as part(0).
int Tp::Message::size ( ) const

Return the number of parts in this message.

Returns
1 greater than the largest valid argument to part().
See Also
part(), parts()
MessagePart Tp::Message::part ( uint  index) const

Return the message's part for index, as defined by the Telepathy specification.

This is provided for advanced clients that need to access additional information not available through the normal Message API.

Parameters
indexThe part to access, which must be strictly less than size(); part number 0 is the header, parts numbered 1 or greater are the body of the message.
Returns
A MessagePart object.
MessagePartList Tp::Message::parts ( ) const

Return the list of message parts forming this message.

Returns
The list of MessagePart objects.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01375.html0000644000175100017520000001446612530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceCellularAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00159.html0000644000175100017520000022457712530426260021152 0ustar00kaffeinekaffeine00000000000000 Tp::Client::CallStreamInterfaceMediaInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::CallStreamInterfaceMediaInterface Class Reference

#include <TelepathyQt/CallStream>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply CompleteSendingStateChange (uint state, int timeout=-1)
 
QDBusPendingReply ReportSendingFailure (uint reason, const QString &error, const QString &message, int timeout=-1)
 
QDBusPendingReply CompleteReceivingStateChange (uint state, int timeout=-1)
 
QDBusPendingReply ReportReceivingFailure (uint reason, const QString &error, const QString &message, int timeout=-1)
 
QDBusPendingReply SetCredentials (const QString &username, const QString &password, int timeout=-1)
 
QDBusPendingReply AddCandidates (const Tp::CandidateList &candidates, int timeout=-1)
 
QDBusPendingReply FinishInitialCandidates (int timeout=-1)
 
QDBusPendingReply Fail (const Tp::CallStateReason &reason, int timeout=-1)
 

Signals

void SendingStateChanged (uint state)
 
void ReceivingStateChanged (uint state)
 
void LocalCandidatesAdded (const Tp::CandidateList &candidates)
 
void LocalCredentialsChanged (const QString &username, const QString &password)
 
void RelayInfoChanged (const Tp::StringVariantMapList &relayInfo)
 
void STUNServersChanged (const Tp::SocketAddressIPList &servers)
 
void ServerInfoRetrieved ()
 
void EndpointsChanged (const Tp::ObjectPathList &endpointsAdded, const Tp::ObjectPathList &endpointsRemoved)
 
void ICERestartRequested ()
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 CallStreamInterfaceMediaInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallStreamInterfaceMediaInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 CallStreamInterfaceMediaInterface (Tp::DBusProxy *proxy)
 
 CallStreamInterfaceMediaInterface (const Tp::Client::CallStreamInterface &mainInterface)
 
 CallStreamInterfaceMediaInterface (const Tp::Client::CallStreamInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySendingState () const
 
Tp::PendingVariantrequestPropertyReceivingState () const
 
Tp::PendingVariantrequestPropertyTransport () const
 
Tp::PendingVariantrequestPropertyLocalCandidates () const
 
Tp::PendingVariantrequestPropertyLocalCredentials () const
 
Tp::PendingVariantrequestPropertySTUNServers () const
 
Tp::PendingVariantrequestPropertyRelayInfo () const
 
Tp::PendingVariantrequestPropertyHasServerInfo () const
 
Tp::PendingVariantrequestPropertyEndpoints () const
 
Tp::PendingVariantrequestPropertyICERestartPending () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Call1.Stream.Interface.Media".

Constructor & Destructor Documentation

Tp::Client::CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallStreamInterfaceMediaInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a CallStreamInterfaceMediaInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface ( Tp::DBusProxy proxy)

Creates a CallStreamInterfaceMediaInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface ( const Tp::Client::CallStreamInterface mainInterface)
explicit

Creates a CallStreamInterfaceMediaInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::CallStreamInterfaceMediaInterface::CallStreamInterfaceMediaInterface ( const Tp::Client::CallStreamInterface mainInterface,
QObject *  parent 
)

Creates a CallStreamInterfaceMediaInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::CallStreamInterfaceMediaInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Call1.Stream.Interface.Media", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertySendingState ( ) const
inline

Asynchronous getter for the remote object property SendingState of type uint.

Indicates whether the streaming implementation is/should be sending media for this stream. The streaming implementation should be able to rely on reading this value and listening to SendingStateChanged to determine whether it should be sending media or not. It should not need to listen to the Hold interfaces on the Call/Content. Feedback on success should be given via CompleteSendingStateChange. Failures should be reported via ReportSendingFailure.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyReceivingState ( ) const
inline

Asynchronous getter for the remote object property ReceivingState of type uint.

The counterpart of SendingState. Indicates whether the streaming implementation is/should be expecting to receive media for this stream. The CM should only tell the streaming implementation to stop receiving if it has been told to put the stream on hold, or the stream has been removed from the call.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyTransport ( ) const
inline

Asynchronous getter for the remote object property Transport of type uint.

The transport for this stream.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyLocalCandidates ( ) const
inline

Asynchronous getter for the remote object property LocalCandidates of type Tp::CandidateList.

[FIXME]. Change notification is via the LocalCandidatesAdded signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyLocalCredentials ( ) const
inline

Asynchronous getter for the remote object property LocalCredentials of type Tp::StreamCredentials.

The local credentials are sent to the remote site over the signalling protocol. They are used in ICE to make sure that the connectivity checks come from the right peer. Change notification is via the LocalCredentialsChanged signal. This property will be a pair of empty strings if ICE has not yet been started.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertySTUNServers ( ) const
inline

Asynchronous getter for the remote object property STUNServers of type Tp::SocketAddressIPList.

The IP addresses of possible STUN servers to use for NAT traversal, as dotted-quad IPv4 address literals or RFC2373 IPv6 address literals. Change notification is via the STUNServersChanged() signal. The IP addresses MUST NOT be given as DNS hostnames.

High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP to make life easier for streaming implementations.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyRelayInfo ( ) const
inline

Asynchronous getter for the remote object property RelayInfo of type Tp::StringVariantMapList.

A list of mappings describing TURN or Google relay servers available for the client to use in its candidate gathering, as determined from the protocol. Well-known map keys are:

ip - s
The IP address of the relay server as a dotted-quad IPv4 address literal or an RFC2373 IPv6 address literal. This MUST NOT be a DNS hostname.
High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP and make life easier for streaming implementations.
type - s

Either udp for UDP (UDP MUST be assumed if this key is omitted), tcp for TCP, or tls.

The precise meaning of this key depends on the Transport property: if Transport is ICE, tls means TLS over TCP as referenced by ICE draft 19, and if Transport is GTalk_P2P, tls means a fake SSL session over TCP as implemented by libjingle.

port - q
The UDP or TCP port of the relay server as an ASCII unsigned integer
unique-id - s
A string identifying the relay server. If two RelayInfo entries have the same unique-id, but different types, there is usually little point in connecting to both. Use priority to determine which version to prefer in this case. Can also be used by the streaming implementation to avoid connecting to the same relay multiple times if relaying is required for both audio and video.
priority - u
A number determining which version of a server to prefer (if multiple are present with the same unique-id, the one with the highest priority should be used, or the streaming implementation should use the one whose type has the most desirable properties)
username - s
The username to use
password - s
The password to use
component - u
The component number to use this relay server for, as an ASCII unsigned integer; if not included, this relay server may be used for any or all components.
In ICE draft 6, as used by Google Talk, credentials are only valid once, so each component needs relaying separately.

An equivalent of the gtalk-p2p-relay-token property on MediaSignalling channels is not included here. The connection manager should be responsible for making the necessary HTTP requests to turn the token into a username and password.

The type of relay server that this represents depends on the value of the Transport property. If Transport is ICE, this is a TURN server; if Transport is GTalk_P2P, this is a Google relay server; otherwise, the meaning of RelayInfo is undefined.

If relaying is not possible for this stream, the list is empty.

Change notification is given via the RelayInfoChanged() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyHasServerInfo ( ) const
inline

Asynchronous getter for the remote object property HasServerInfo of type bool.

True if all the initial information about STUN servers and Relay servers has been retrieved. Change notification is via the ServerInfoRetrieved() signal.

Streaming implementations that can't cope with STUN and relay servers being added later SHOULD wait for this property to become true before proceeding.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyEndpoints ( ) const
inline

Asynchronous getter for the remote object property Endpoints of type Tp::ObjectPathList.

The list of Endpoint objects that exist for this stream. Change notification is via the EndpointsChanged signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::CallStreamInterfaceMediaInterface::requestPropertyICERestartPending ( ) const
inline

Asynchronous getter for the remote object property ICERestartPending of type bool.

State recovery for ICERestartRequested. Set when the signal is emitted, and unset when SetCredentials is called. Useful for debugging.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::CallStreamInterfaceMediaInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::CompleteSendingStateChange ( uint  state,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CompleteSendingStateChange on the remote object.

Called in response to SendingStateChanged() (Pending_*, *) to indicate that the media state has successfully progressed from Pending_{Start, Stop, Pause} to the corresponding non-pending state.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
state
The new (non-pending) value of SendingState.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::ReportSendingFailure ( uint  reason,
const QString &  error,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ReportSendingFailure on the remote object.

Can be called at any point to indicate a failure in the outgoing portion of the stream.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::CompleteReceivingStateChange ( uint  state,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CompleteReceivingStateChange on the remote object.

Called in response to ReceivingStateChanged() (Pending_*, *) to indicate that the media state has successfully progressed from Pending_{Start, Stop, Pause} to the corresponding non-pending state.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
state
The new (non-pending) value of ReceivingState.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::ReportReceivingFailure ( uint  reason,
const QString &  error,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ReportReceivingFailure on the remote object.

Can be called at any point to indicate a failure in the incoming portion of the stream.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::SetCredentials ( const QString &  username,
const QString &  password,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetCredentials on the remote object.

Used to set the username fragment and password for streams that have global credentials.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
username
The username to use when authenticating on the stream.
password
The password to use when authenticating on the stream.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::AddCandidates ( const Tp::CandidateList candidates,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddCandidates on the remote object.

Add candidates to the LocalCandidates property and signal them to the remote contact(s). Note that connection managers MAY delay the sending of candidates until FinishInitialCandidates is called.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
candidates
The candidates to be added.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::FinishInitialCandidates ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method FinishInitialCandidates on the remote object.

This indicates to the CM that the initial batch of candidates has been added, and should now be processed/sent to the remote side. Protocols supporting Raw UDP SHOULD wait for FinishInitialCandidates, and then set the lowest priority candidate as the Raw UDP candidate.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::CallStreamInterfaceMediaInterface::Fail ( const Tp::CallStateReason reason,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Fail on the remote object.

Signal an unrecoverable error for this stream, and remove it. If all streams are removed from a content, then it will also be removed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
reason
A structured reason for stream removal.
timeoutThe timeout in milliseconds.
void Tp::Client::CallStreamInterfaceMediaInterface::SendingStateChanged ( uint  state)
signal

Represents the signal SendingStateChanged on the remote object.

Change notification for SendingState. Note that this information is duplicated onto the Stream interface, so that UIs can ignore the Media interface, and streaming implementations can ignore everything but the media interface.

Parameters
state
The new value of SendingState.
void Tp::Client::CallStreamInterfaceMediaInterface::ReceivingStateChanged ( uint  state)
signal

Represents the signal ReceivingStateChanged on the remote object.

Change notification for ReceivingState.

Parameters
state
The new value of ReceivingState.
void Tp::Client::CallStreamInterfaceMediaInterface::LocalCandidatesAdded ( const Tp::CandidateList candidates)
signal

Represents the signal LocalCandidatesAdded on the remote object.

Emitted when local candidates are added to the LocalCandidates property.

Parameters
candidates
Candidates that have been added.
void Tp::Client::CallStreamInterfaceMediaInterface::LocalCredentialsChanged ( const QString &  username,
const QString &  password 
)
signal

Represents the signal LocalCredentialsChanged on the remote object.

Emitted when the value of LocalCredentials changes to a non-empty value. This should only happen when the streaming implementation calls SetCredentials, so this signal is mostly useful for debugging.

void Tp::Client::CallStreamInterfaceMediaInterface::RelayInfoChanged ( const Tp::StringVariantMapList relayInfo)
signal

Represents the signal RelayInfoChanged on the remote object.

Emitted when the value of RelayInfo changes.

void Tp::Client::CallStreamInterfaceMediaInterface::STUNServersChanged ( const Tp::SocketAddressIPList servers)
signal

Represents the signal STUNServersChanged on the remote object.

Emitted when the value of STUNServers changes.

void Tp::Client::CallStreamInterfaceMediaInterface::ServerInfoRetrieved ( )
signal

Represents the signal ServerInfoRetrieved on the remote object.

Signals that the initial information about STUN and Relay servers has been retrieved, i.e. the HasServerInfo property is now true.

void Tp::Client::CallStreamInterfaceMediaInterface::EndpointsChanged ( const Tp::ObjectPathList endpointsAdded,
const Tp::ObjectPathList endpointsRemoved 
)
signal

Represents the signal EndpointsChanged on the remote object.

Emitted when the Endpoints property changes.

Parameters
endpointsAdded
Endpoints that were added.
endpointsRemoved
Endpoints that no longer exist.
void Tp::Client::CallStreamInterfaceMediaInterface::ICERestartRequested ( )
signal

Represents the signal ICERestartRequested on the remote object.

Emitted when the remote side requests an ICE restart (e.g. third party call control, when the remote endpoint changes). The streaming implementation should call SetCredentials again.

void Tp::Client::CallStreamInterfaceMediaInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/tabs.css0000644000175100017520000000221312530426257021073 0ustar00kaffeinekaffeine00000000000000.tabs, .tabs2, .tabs3 { background-image: url('tab_b.png'); width: 100%; z-index: 101; font-size: 13px; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; } .tabs2 { font-size: 10px; } .tabs3 { font-size: 9px; } .tablist { margin: 0; padding: 0; display: table; } .tablist li { float: left; display: table-cell; background-image: url('tab_b.png'); line-height: 36px; list-style: none; } .tablist a { display: block; padding: 0 20px; font-weight: bold; background-image:url('tab_s.png'); background-repeat:no-repeat; background-position:right; color: #283A5D; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; outline: none; } .tabs3 .tablist a { padding: 0 10px; } .tablist a:hover { background-image: url('tab_h.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); text-decoration: none; } .tablist li.current a { background-image: url('tab_a.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } telepathy-qt-0.9.6.1/doc/html/a00974.html0000644000175100017520000001213712530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback2< R, Arg1, Arg2 > Member List

This is the complete list of members for Tp::Callback2< R, Arg1, Arg2 >, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
Callback2()Tp::Callback2< R, Arg1, Arg2 >inline
Callback2(const Functor &functor)Tp::Callback2< R, Arg1, Arg2 >inline
callerTp::BaseCallbackprotected
FunctionType typedefTp::Callback2< R, Arg1, Arg2 >
isValid() const Tp::BaseCallbackinline
operator()(Arg1 a1, Arg2 a2) const Tp::Callback2< R, Arg1, Arg2 >inline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
ResultType typedefTp::Callback2< R, Arg1, Arg2 >
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00473.html0000644000175100017520000001477412530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ProtocolInterfacePresenceAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ProtocolInterfacePresenceAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Member Functions

Tp::SimpleStatusSpecMap Statuses () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::SimpleStatusSpecMap Tp::Service::ProtocolInterfacePresenceAdaptor::Statuses ( ) const

Return the value of the exported D-Bus object property Statuses of type Tp::SimpleStatusSpecMap.

Adaptees should export this property as a Qt property named 'statuses' with type Tp::SimpleStatusSpecMap.

The statuses that might appear in the Connection.Interface.SimplePresence.Statuses property on a connection to this protocol that supports SimplePresence. This property is immutable. Depending on server capabilities, it is possible that not all of these will actually appear on the Connection.

Returns
The value of exported property Statuses.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00218.html0000644000175100017520000001734712530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceSecurableAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSecurableAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Member Functions

bool Encrypted () const
 
bool Verified () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ChannelInterfaceSecurableAdaptor::Encrypted ( ) const

Return the value of the exported D-Bus object property Encrypted of type bool.

Adaptees should export this property as a Qt property named 'encrypted' with type bool.

True if this channel occurs over an encrypted connection. This does not imply that steps have been taken to avoid man-in-the-middle attacks.

For future support for RFC 5056 Channel Binding it is desirable to be able to use some SASL mechanisms over an encrypted connection to an unverified peer, which can prove that it is the desired destination during the SASL negotiation.

Returns
The value of exported property Encrypted.
bool Tp::Service::ChannelInterfaceSecurableAdaptor::Verified ( ) const

Return the value of the exported D-Bus object property Verified of type bool.

Adaptees should export this property as a Qt property named 'verified' with type bool.

True if this channel occurs over a connection that is protected against tampering, and has been verified to be with the desired destination: for instance, one where TLS was previously negotiated, and the TLS certificate has been verified against a configured certificate authority or accepted by the user.

Returns
The value of exported property Verified.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01189.html0000644000175100017520000000533012530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RTPHeaderExtension Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x71.html0000644000175100017520000000344512530426260024122 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- q -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00647_source.html0000644000175100017520000005721312530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-properties.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-properties.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Properties");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
103  explicit PropertiesInterfaceInterface(const Tp::AbstractInterface& mainInterface);
104 
112  PropertiesInterfaceInterface(const Tp::AbstractInterface& mainInterface, QObject* parent);
113 
121  {
122  return internalRequestAllProperties();
123  }
124 
125 public Q_SLOTS:
151  inline QDBusPendingReply<Tp::PropertyValueList> GetProperties(const Tp::UIntList& properties, int timeout = -1)
152  {
153  if (!invalidationReason().isEmpty()) {
154  return QDBusPendingReply<Tp::PropertyValueList>(QDBusMessage::createError(
155  invalidationReason(),
156  invalidationMessage()
157  ));
158  }
159 
160  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
161  this->staticInterfaceName(), QLatin1String("GetProperties"));
162  callMessage << QVariant::fromValue(properties);
163  return this->connection().asyncCall(callMessage, timeout);
164  }
165 
182  inline QDBusPendingReply<Tp::PropertySpecList> ListProperties(int timeout = -1)
183  {
184  if (!invalidationReason().isEmpty()) {
185  return QDBusPendingReply<Tp::PropertySpecList>(QDBusMessage::createError(
186  invalidationReason(),
187  invalidationMessage()
188  ));
189  }
190 
191  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
192  this->staticInterfaceName(), QLatin1String("ListProperties"));
193  return this->connection().asyncCall(callMessage, timeout);
194  }
195 
220  inline QDBusPendingReply<> SetProperties(const Tp::PropertyValueList& properties, int timeout = -1)
221  {
222  if (!invalidationReason().isEmpty()) {
223  return QDBusPendingReply<>(QDBusMessage::createError(
224  invalidationReason(),
225  invalidationMessage()
226  ));
227  }
228 
229  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
230  this->staticInterfaceName(), QLatin1String("SetProperties"));
231  callMessage << QVariant::fromValue(properties);
232  return this->connection().asyncCall(callMessage, timeout);
233  }
234 
235 Q_SIGNALS:
253  void PropertiesChanged(const Tp::PropertyValueList& properties);
254 
272  void PropertyFlagsChanged(const Tp::PropertyFlagsChangeList& properties);
273 
274 protected:
275  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
276 };
277 }
278 }
279 Q_DECLARE_METATYPE(Tp::Client::PropertiesInterfaceInterface*)
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-properties.h:120
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Definition: cli-properties.h:44
QList< PropertyValue > PropertyValueList
Definition: build/TelepathyQt/_gen/types.h:2360
QDBusPendingReply SetProperties(const Tp::PropertyValueList &properties, int timeout=-1)
Definition: cli-properties.h:220
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Definition: build/TelepathyQt/_gen/types.h:101
QDBusPendingReply< Tp::PropertyValueList > GetProperties(const Tp::UIntList &properties, int timeout=-1)
Definition: cli-properties.h:151
static QLatin1String staticInterfaceName()
Definition: cli-properties.h:55
QDBusPendingReply< Tp::PropertySpecList > ListProperties(int timeout=-1)
Definition: cli-properties.h:182
QList< PropertyFlagsChange > PropertyFlagsChangeList
Definition: build/TelepathyQt/_gen/types.h:2293
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00532.html0000644000175100017520000001351412530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::StringVariantMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StringVariantMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 StringVariantMap ()
 
 StringVariantMap (const QMap< QString, QDBusVariant > &a)
 
StringVariantMapoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

A mapping from strings to variants representing extra key-value pairs.

Constructor & Destructor Documentation

Tp::StringVariantMap::StringVariantMap ( )
inline
Tp::StringVariantMap::StringVariantMap ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

StringVariantMap& Tp::StringVariantMap::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00287.html0000644000175100017520000011527212530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceContactGroupsAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactGroupsAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

void SetContactGroups (uint contact, const QStringList &groups, const QDBusMessage &dbusMessage)
 
void SetGroupMembers (const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage)
 
void AddToGroup (const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage)
 
void RemoveFromGroup (const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage)
 
void RemoveGroup (const QString &group, const QDBusMessage &dbusMessage)
 
void RenameGroup (const QString &oldName, const QString &newName, const QDBusMessage &dbusMessage)
 

Signals

void GroupsChanged (const Tp::UIntList &contact, const QStringList &added, const QStringList &removed)
 
void GroupsCreated (const QStringList &names)
 
void GroupRenamed (const QString &oldName, const QString &newName)
 
void GroupsRemoved (const QStringList &names)
 

Public Member Functions

bool DisjointGroups () const
 
uint GroupStorage () const
 
QStringList Groups () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ConnectionInterfaceContactGroupsAdaptor::DisjointGroups ( ) const

Return the value of the exported D-Bus object property DisjointGroups of type bool.

Adaptees should export this property as a Qt property named 'disjointGroups' with type bool.

True if each contact can be in at most one group; false if each contact can be in many groups.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
The value of exported property DisjointGroups.
uint Tp::Service::ConnectionInterfaceContactGroupsAdaptor::GroupStorage ( ) const

Return the value of the exported D-Bus object property GroupStorage of type uint.

Adaptees should export this property as a Qt property named 'groupStorage' with type uint.

Indicates the extent to which contacts' groups can be set and stored. This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
The value of exported property GroupStorage.
QStringList Tp::Service::ConnectionInterfaceContactGroupsAdaptor::Groups ( ) const

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

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

The names of all groups that currently exist. This may be a larger set than the union of all contacts' groups contact attributes, if the connection allows groups to be empty.

Change notification is via GroupsCreated() and GroupsRemoved() ; clients can also distinguish between a create/remove pair and a renamed group by receiving GroupRenamed() .

This property's value is not meaningful until the ConnectionInterfaceContactListInterface::ContactListState has become Success.

Returns
The value of exported property Groups.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::SetContactGroups ( uint  contact,
const QStringList &  groups,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setContactGroups(uint contact, const QStringList& groups, const Tp::Service::ConnectionInterfaceContactGroupsAdaptor::SetContactGroupsContextPtr &context);

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

Add the given contact to the given groups (creating new groups if necessary), and remove them from all other groups.

This is the easiest and most correct way to implement user interfaces that display a single contact with a list of groups, resulting in a user expectation that when they apply the changes, the contact's set of groups will become exactly what was displayed.

If the user is removed from a group of which they were the only member, the group MAY be removed automatically.

In protocols like XMPP where groups behave like tags, a group with no members has no protocol representation.

Any GroupsCreated() , GroupsChanged() and GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Parameters
contact
The contact to alter.
groups
The set of groups which the contact should be in.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::SetGroupMembers ( const QString &  group,
const Tp::UIntList members,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setGroupMembers(const QString& group, const Tp::UIntList& members, const Tp::Service::ConnectionInterfaceContactGroupsAdaptor::SetGroupMembersContextPtr &context);

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

Add the given members to the given group (creating it if necessary), and remove all other members.

This is the easiest and most correct way to implement user interfaces that display a single group with a list of contacts, resulting in a user expectation that when they apply the changes, the groups's set of members will become exactly what was displayed.

If DisjointGroups is true, this will also remove each member from their previous group.

If the user is removed from a group of which they were the only member, the group MAY be removed automatically.

Any GroupsCreated() , GroupsChanged() and GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Parameters
group
The group to alter.
members
The set of members for the group. If this set is empty, this method 
MAY remove the group.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::AddToGroup ( const QString &  group,
const Tp::UIntList members,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void addToGroup(const QString& group, const Tp::UIntList& members, const Tp::Service::ConnectionInterfaceContactGroupsAdaptor::AddToGroupContextPtr &context);

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

Add the given members to the given group, creating it if necessary.

If DisjointGroups is true, this will also remove each member from their previous group.

This is good for user interfaces in which you can edit groups via drag-and-drop.

Any GroupsCreated() , GroupsChanged() and GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Parameters
group
The group to alter.
members
The set of members to include in the group.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::RemoveFromGroup ( const QString &  group,
const Tp::UIntList members,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeFromGroup(const QString& group, const Tp::UIntList& members, const Tp::Service::ConnectionInterfaceContactGroupsAdaptor::RemoveFromGroupContextPtr &context);

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

Remove the given members from the given group.

This is good for user interfaces in which you can edit groups via drag-and-drop.

Any GroupsChanged() or GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Parameters
group
The group to alter. If it does not exist, then it has no members by 
definition, so this method SHOULD return successfully.
members
The set of members to remove from the group. It is not an error to 
remove members who are already not in the group. If there are no 
members left in the group afterwards, the group MAY itself be 
removed.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::RemoveGroup ( const QString &  group,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeGroup(const QString& group, const Tp::Service::ConnectionInterfaceContactGroupsAdaptor::RemoveGroupContextPtr &context);

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

Remove all members from the given group, then remove the group itself. If the group already does not exist, this method SHOULD return successfully.

Any GroupsChanged() or GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Parameters
group
The group to remove.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::RenameGroup ( const QString &  oldName,
const QString &  newName,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void renameGroup(const QString& oldName, const QString& newName, const Tp::Service::ConnectionInterfaceContactGroupsAdaptor::RenameGroupContextPtr &context);

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

Rename the given group.

On protocols where groups behave like tags, this is an API short-cut for adding all of the group's members to a group with the new name, then removing the old group.

Otherwise, clients can't perform this operation atomically, even if the connection could.

Any GroupRenamed() or GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Parameters
oldName
The group to rename.
newName
The new name for the group.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::GroupsChanged ( const Tp::UIntList contact,
const QStringList &  added,
const QStringList &  removed 
)
signal

Represents the exported D-Bus signal GroupsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void groupsChanged(const Tp::UIntList& contact, const QStringList& added, const QStringList& removed);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
The relevant contacts.
added
The names of groups to which the contacts were added.
removed
The names of groups from which the contacts were removed.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::GroupsCreated ( const QStringList &  names)
signal

Represents the exported D-Bus signal GroupsCreated on this object.

Adaptees should export this signal as a Qt signal with the following signature: void groupsCreated(const QStringList& names);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
names
The names of the new groups.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::GroupRenamed ( const QString &  oldName,
const QString &  newName 
)
signal

Represents the exported D-Bus signal GroupRenamed on this object.

Adaptees should export this signal as a Qt signal with the following signature: void groupRenamed(const QString& oldName, const QString& newName);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
oldName
The old name of the group.
newName
The new name of the group.
void Tp::Service::ConnectionInterfaceContactGroupsAdaptor::GroupsRemoved ( const QStringList &  names)
signal

Represents the exported D-Bus signal GroupsRemoved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void groupsRemoved(const QStringList& names);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
names
The names of the groups.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01248.html0000644000175100017520000002516312530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelDispatchOperationInterface Member List

This is the complete list of members for Tp::Client::ChannelDispatchOperationInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelDispatchOperationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelDispatchOperationInterface
ChannelDispatchOperationInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelDispatchOperationInterface
ChannelDispatchOperationInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelDispatchOperationInterface
ChannelLost(const QDBusObjectPath &channel, const QString &error, const QString &message)Tp::Client::ChannelDispatchOperationInterfacesignal
Claim(int timeout=-1)Tp::Client::ChannelDispatchOperationInterfaceinlineslot
Finished()Tp::Client::ChannelDispatchOperationInterfacesignal
HandleWith(const QString &handler, int timeout=-1)Tp::Client::ChannelDispatchOperationInterfaceinlineslot
HandleWithTime(const QString &handler, qlonglong userActionTime, int timeout=-1)Tp::Client::ChannelDispatchOperationInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelDispatchOperationInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelDispatchOperationInterfaceinline
requestPropertyAccount() const Tp::Client::ChannelDispatchOperationInterfaceinline
requestPropertyChannels() const Tp::Client::ChannelDispatchOperationInterfaceinline
requestPropertyConnection() const Tp::Client::ChannelDispatchOperationInterfaceinline
requestPropertyInterfaces() const Tp::Client::ChannelDispatchOperationInterfaceinline
requestPropertyPossibleHandlers() const Tp::Client::ChannelDispatchOperationInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelDispatchOperationInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00643_source.html0000644000175100017520000004546112530426257022527 0ustar00kaffeinekaffeine00000000000000 cli-media-session-handler.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-media-session-handler.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Media.SessionHandler");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
103  {
104  return internalRequestAllProperties();
105  }
106 
107 public Q_SLOTS:
121  inline QDBusPendingReply<> Error(uint errorCode, const QString& message, int timeout = -1)
122  {
123  if (!invalidationReason().isEmpty()) {
124  return QDBusPendingReply<>(QDBusMessage::createError(
125  invalidationReason(),
126  invalidationMessage()
127  ));
128  }
129 
130  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
131  this->staticInterfaceName(), QLatin1String("Error"));
132  callMessage << QVariant::fromValue(errorCode) << QVariant::fromValue(message);
133  return this->connection().asyncCall(callMessage, timeout);
134  }
135 
148  inline QDBusPendingReply<> Ready(int timeout = -1)
149  {
150  if (!invalidationReason().isEmpty()) {
151  return QDBusPendingReply<>(QDBusMessage::createError(
152  invalidationReason(),
153  invalidationMessage()
154  ));
155  }
156 
157  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
158  this->staticInterfaceName(), QLatin1String("Ready"));
159  return this->connection().asyncCall(callMessage, timeout);
160  }
161 
162 Q_SIGNALS:
184  void NewStreamHandler(const QDBusObjectPath& streamHandler, uint ID, uint mediaType, uint direction);
185 
186 protected:
187  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
188 };
189 }
190 }
191 Q_DECLARE_METATYPE(Tp::Client::MediaSessionHandlerInterface*)
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
QDBusPendingReply Ready(int timeout=-1)
Definition: cli-media-session-handler.h:148
static QLatin1String staticInterfaceName()
Definition: cli-media-session-handler.h:55
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
QDBusPendingReply Error(uint errorCode, const QString &message, int timeout=-1)
Definition: cli-media-session-handler.h:121
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-media-session-handler.h:102
Definition: cli-media-session-handler.h:44
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00346.html0000644000175100017520000001345212530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::DebugMessage Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DebugMessage Struct Reference

#include <TelepathyQt/Types>

Public Attributes

double timestamp
 
QString domain
 
uint level
 
QString message
 

Detailed Description

Structure type generated from the specification.

A struct representing a debug message, as returned by GetMessages.

Member Data Documentation

double Tp::DebugMessage::timestamp

Timestamp of the debug message. This is a double to allow more accuracy in the time the message was logged.

QString Tp::DebugMessage::domain

Domain of the debug message. This is used to identify the source of debug messages. For example, debug messages from a connection manager could have this Domain struct member be the name of the connection manager, and logs from any helper library could have the name of the helper library.

The domain could also contain a category as to where the log message originated separated by a forward-slash. For example, if a debug message was output in a connection manager called "dummy", in the file-transfer code, this Domain struct member might be dummy/file-transfer.

uint Tp::DebugMessage::level

Level of the debug message. This states the severity of the debug message.

QString Tp::DebugMessage::message

The text of the debug message.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01307.html0000644000175100017520000003153012530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactGroupsInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceContactGroupsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddToGroup(const QString &group, const Tp::UIntList &members, int timeout=-1)Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlineslot
ConnectionInterfaceContactGroupsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactGroupsInterface
ConnectionInterfaceContactGroupsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactGroupsInterface
ConnectionInterfaceContactGroupsInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceContactGroupsInterface
ConnectionInterfaceContactGroupsInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceContactGroupsInterfaceexplicit
ConnectionInterfaceContactGroupsInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceContactGroupsInterface
GroupRenamed(const QString &oldName, const QString &newName)Tp::Client::ConnectionInterfaceContactGroupsInterfacesignal
GroupsChanged(const Tp::UIntList &contact, const QStringList &added, const QStringList &removed)Tp::Client::ConnectionInterfaceContactGroupsInterfacesignal
GroupsCreated(const QStringList &names)Tp::Client::ConnectionInterfaceContactGroupsInterfacesignal
GroupsRemoved(const QStringList &names)Tp::Client::ConnectionInterfaceContactGroupsInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceContactGroupsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoveFromGroup(const QString &group, const Tp::UIntList &members, int timeout=-1)Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlineslot
RemoveGroup(const QString &group, int timeout=-1)Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlineslot
RenameGroup(const QString &oldName, const QString &newName, int timeout=-1)Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlineslot
requestAllProperties() const Tp::Client::ConnectionInterfaceContactGroupsInterfaceinline
requestPropertyDisjointGroups() const Tp::Client::ConnectionInterfaceContactGroupsInterfaceinline
requestPropertyGroups() const Tp::Client::ConnectionInterfaceContactGroupsInterfaceinline
requestPropertyGroupStorage() const Tp::Client::ConnectionInterfaceContactGroupsInterfaceinline
SetContactGroups(uint contact, const QStringList &groups, int timeout=-1)Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlineslot
SetGroupMembers(const QString &group, const Tp::UIntList &members, int timeout=-1)Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceContactGroupsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01061.html0000644000175100017520000010322412530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::OutgoingDBusTubeChannel Member List

This is the complete list of members for Tp::OutgoingDBusTubeChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
address() const Tp::DBusTubeChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
busNameAdded(const QString &busName, const Tp::ContactPtr &contact)Tp::DBusTubeChannelsignal
busNameRemoved(const QString &busName, const Tp::ContactPtr &contact)Tp::DBusTubeChannelsignal
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
contactsForBusNames() const Tp::DBusTubeChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::OutgoingDBusTubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
DBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::DBusTubeChannelprotected
FeatureBusNameMonitoringTp::DBusTubeChannelstatic
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::DBusTubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
offerTube(const QVariantMap &parameters, bool allowOtherUsers=false)Tp::OutgoingDBusTubeChannel
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
OutgoingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::OutgoingDBusTubeChannelprotected
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
serviceName() const Tp::DBusTubeChannel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsRestrictingToCurrentUser() const Tp::DBusTubeChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~DBusTubeChannel()Tp::DBusTubeChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~OutgoingDBusTubeChannel()Tp::OutgoingDBusTubeChannelvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00906.html0000644000175100017520000000547512530426257021152 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractAdaptor Member List

This is the complete list of members for Tp::AbstractAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00405.html0000644000175100017520000002360512530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::MessageContentPart Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessageContentPart Class Reference

The MessageContentPart class represents a Telepathy message part. More...

#include <TelepathyQt/MessageContentPart>

Public Member Functions

 MessageContentPart ()
 
 MessageContentPart (const MessagePart &mp)
 
 MessageContentPart (const MessageContentPart &other)
 
 ~MessageContentPart ()
 
bool isValid () const
 
MessageContentPartoperator= (const MessageContentPart &other)
 
bool operator== (const MessageContentPart &other) const
 
MessagePart barePart () const
 

Detailed Description

The MessageContentPart class represents a Telepathy message part.

Constructor & Destructor Documentation

Tp::MessageContentPart::MessageContentPart ( )
Tp::MessageContentPart::MessageContentPart ( const MessagePart mp)
Tp::MessageContentPart::MessageContentPart ( const MessageContentPart other)
Tp::MessageContentPart::~MessageContentPart ( )

Member Function Documentation

bool Tp::MessageContentPart::isValid ( ) const
inline
MessageContentPart & Tp::MessageContentPart::operator= ( const MessageContentPart other)
bool Tp::MessageContentPart::operator== ( const MessageContentPart other) const
MessagePart Tp::MessageContentPart::barePart ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01376.html0000644000175100017520000000777512530426260021153 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceClientTypesAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceClientTypesAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ClientTypesUpdated(uint contact, const QStringList &clientTypes)Tp::Service::ConnectionInterfaceClientTypesAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
GetClientTypes(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceClientTypesAdaptorslot
RequestClientTypes(uint contact, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceClientTypesAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00636_source.html0000644000175100017520000025616612530426257022537 0ustar00kaffeinekaffeine00000000000000 cli-connection-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-connection-manager.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.ConnectionManager");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
121  {
122  return internalRequestProperty(QLatin1String("Protocols"));
123  }
124 
153  {
154  return internalRequestProperty(QLatin1String("Interfaces"));
155  }
156 
164  {
165  return internalRequestAllProperties();
166  }
167 
168 public Q_SLOTS:
194  inline QDBusPendingReply<Tp::ParamSpecList> GetParameters(const QString& protocol, int timeout = -1)
195  {
196  if (!invalidationReason().isEmpty()) {
197  return QDBusPendingReply<Tp::ParamSpecList>(QDBusMessage::createError(
198  invalidationReason(),
199  invalidationMessage()
200  ));
201  }
202 
203  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
204  this->staticInterfaceName(), QLatin1String("GetParameters"));
205  callMessage << QVariant::fromValue(protocol);
206  return this->connection().asyncCall(callMessage, timeout);
207  }
208 
224  inline QDBusPendingReply<QStringList> ListProtocols(int timeout = -1)
225  {
226  if (!invalidationReason().isEmpty()) {
227  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
228  invalidationReason(),
229  invalidationMessage()
230  ));
231  }
232 
233  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
234  this->staticInterfaceName(), QLatin1String("ListProtocols"));
235  return this->connection().asyncCall(callMessage, timeout);
236  }
237 
315  inline QDBusPendingReply<QString, QDBusObjectPath> RequestConnection(const QString& protocol, const QVariantMap& parameters, int timeout = -1)
316  {
317  if (!invalidationReason().isEmpty()) {
318  return QDBusPendingReply<QString, QDBusObjectPath>(QDBusMessage::createError(
319  invalidationReason(),
320  invalidationMessage()
321  ));
322  }
323 
324  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
325  this->staticInterfaceName(), QLatin1String("RequestConnection"));
326  callMessage << QVariant::fromValue(protocol) << QVariant::fromValue(parameters);
327  return this->connection().asyncCall(callMessage, timeout);
328  }
329 
330 Q_SIGNALS:
348  void NewConnection(const QString& busName, const QDBusObjectPath& objectPath, const QString& protocol);
349 
350 protected:
351  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
352 };
353 
361 class TP_QT_EXPORT ProtocolInterface : public Tp::AbstractInterface
362 {
363  Q_OBJECT
364 
365 public:
372  static inline QLatin1String staticInterfaceName()
373  {
374  return QLatin1String("org.freedesktop.Telepathy.Protocol");
375  }
376 
385  const QString& busName,
386  const QString& objectPath,
387  QObject* parent = 0
388  );
389 
399  const QDBusConnection& connection,
400  const QString& busName,
401  const QString& objectPath,
402  QObject* parent = 0
403  );
404 
412 
420  explicit ProtocolInterface(const Tp::Client::ConnectionManagerInterface& mainInterface);
421 
429  ProtocolInterface(const Tp::Client::ConnectionManagerInterface& mainInterface, QObject* parent);
430 
455  {
456  return internalRequestProperty(QLatin1String("Interfaces"));
457  }
458 
486  {
487  return internalRequestProperty(QLatin1String("Parameters"));
488  }
489 
515  {
516  return internalRequestProperty(QLatin1String("ConnectionInterfaces"));
517  }
518 
585  {
586  return internalRequestProperty(QLatin1String("RequestableChannelClasses"));
587  }
588 
639  {
640  return internalRequestProperty(QLatin1String("VCardField"));
641  }
642 
682  {
683  return internalRequestProperty(QLatin1String("EnglishName"));
684  }
685 
716  {
717  return internalRequestProperty(QLatin1String("Icon"));
718  }
719 
766  {
767  return internalRequestProperty(QLatin1String("AuthenticationTypes"));
768  }
769 
777  {
778  return internalRequestAllProperties();
779  }
780 
781 public Q_SLOTS:
819  inline QDBusPendingReply<QString> IdentifyAccount(const QVariantMap& parameters, int timeout = -1)
820  {
821  if (!invalidationReason().isEmpty()) {
822  return QDBusPendingReply<QString>(QDBusMessage::createError(
823  invalidationReason(),
824  invalidationMessage()
825  ));
826  }
827 
828  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
829  this->staticInterfaceName(), QLatin1String("IdentifyAccount"));
830  callMessage << QVariant::fromValue(parameters);
831  return this->connection().asyncCall(callMessage, timeout);
832  }
833 
888  inline QDBusPendingReply<QString> NormalizeContact(const QString& contactID, int timeout = -1)
889  {
890  if (!invalidationReason().isEmpty()) {
891  return QDBusPendingReply<QString>(QDBusMessage::createError(
892  invalidationReason(),
893  invalidationMessage()
894  ));
895  }
896 
897  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
898  this->staticInterfaceName(), QLatin1String("NormalizeContact"));
899  callMessage << QVariant::fromValue(contactID);
900  return this->connection().asyncCall(callMessage, timeout);
901  }
902 
903 protected:
904  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
905 };
906 
915 {
916  Q_OBJECT
917 
918 public:
925  static inline QLatin1String staticInterfaceName()
926  {
927  return QLatin1String("org.freedesktop.Telepathy.Protocol.Interface.Addressing");
928  }
929 
938  const QString& busName,
939  const QString& objectPath,
940  QObject* parent = 0
941  );
942 
952  const QDBusConnection& connection,
953  const QString& busName,
954  const QString& objectPath,
955  QObject* parent = 0
956  );
957 
965 
974 
983 
1047  {
1048  return internalRequestProperty(QLatin1String("AddressableVCardFields"));
1049  }
1050 
1131  {
1132  return internalRequestProperty(QLatin1String("AddressableURISchemes"));
1133  }
1134 
1142  {
1143  return internalRequestAllProperties();
1144  }
1145 
1146 public Q_SLOTS:
1189  inline QDBusPendingReply<QString> NormalizeVCardAddress(const QString& VCardField, const QString& VCardAddress, int timeout = -1)
1190  {
1191  if (!invalidationReason().isEmpty()) {
1192  return QDBusPendingReply<QString>(QDBusMessage::createError(
1193  invalidationReason(),
1194  invalidationMessage()
1195  ));
1196  }
1197 
1198  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1199  this->staticInterfaceName(), QLatin1String("NormalizeVCardAddress"));
1200  callMessage << QVariant::fromValue(VCardField) << QVariant::fromValue(VCardAddress);
1201  return this->connection().asyncCall(callMessage, timeout);
1202  }
1203 
1264  inline QDBusPendingReply<QString> NormalizeContactURI(const QString& URI, int timeout = -1)
1265  {
1266  if (!invalidationReason().isEmpty()) {
1267  return QDBusPendingReply<QString>(QDBusMessage::createError(
1268  invalidationReason(),
1269  invalidationMessage()
1270  ));
1271  }
1272 
1273  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1274  this->staticInterfaceName(), QLatin1String("NormalizeContactURI"));
1275  callMessage << QVariant::fromValue(URI);
1276  return this->connection().asyncCall(callMessage, timeout);
1277  }
1278 
1279 protected:
1280  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1281 };
1282 
1291 {
1292  Q_OBJECT
1293 
1294 public:
1301  static inline QLatin1String staticInterfaceName()
1302  {
1303  return QLatin1String("org.freedesktop.Telepathy.Protocol.Interface.Avatars");
1304  }
1305 
1314  const QString& busName,
1315  const QString& objectPath,
1316  QObject* parent = 0
1317  );
1318 
1328  const QDBusConnection& connection,
1329  const QString& busName,
1330  const QString& objectPath,
1331  QObject* parent = 0
1332  );
1333 
1341 
1350 
1358  ProtocolInterfaceAvatarsInterface(const Tp::Client::ConnectionManagerInterface& mainInterface, QObject* parent);
1359 
1372  {
1373  return internalRequestProperty(QLatin1String("SupportedAvatarMIMETypes"));
1374  }
1375 
1388  {
1389  return internalRequestProperty(QLatin1String("MinimumAvatarHeight"));
1390  }
1391 
1404  {
1405  return internalRequestProperty(QLatin1String("MinimumAvatarWidth"));
1406  }
1407 
1420  {
1421  return internalRequestProperty(QLatin1String("RecommendedAvatarHeight"));
1422  }
1423 
1436  {
1437  return internalRequestProperty(QLatin1String("RecommendedAvatarWidth"));
1438  }
1439 
1452  {
1453  return internalRequestProperty(QLatin1String("MaximumAvatarHeight"));
1454  }
1455 
1468  {
1469  return internalRequestProperty(QLatin1String("MaximumAvatarWidth"));
1470  }
1471 
1484  {
1485  return internalRequestProperty(QLatin1String("MaximumAvatarBytes"));
1486  }
1487 
1495  {
1496  return internalRequestAllProperties();
1497  }
1498 
1499 protected:
1500  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1501 };
1502 
1511 {
1512  Q_OBJECT
1513 
1514 public:
1521  static inline QLatin1String staticInterfaceName()
1522  {
1523  return QLatin1String("org.freedesktop.Telepathy.Protocol.Interface.Presence");
1524  }
1525 
1534  const QString& busName,
1535  const QString& objectPath,
1536  QObject* parent = 0
1537  );
1538 
1548  const QDBusConnection& connection,
1549  const QString& busName,
1550  const QString& objectPath,
1551  QObject* parent = 0
1552  );
1553 
1561 
1570 
1578  ProtocolInterfacePresenceInterface(const Tp::Client::ConnectionManagerInterface& mainInterface, QObject* parent);
1579 
1594  {
1595  return internalRequestProperty(QLatin1String("Statuses"));
1596  }
1597 
1605  {
1606  return internalRequestAllProperties();
1607  }
1608 
1609 protected:
1610  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1611 };
1612 }
1613 }
1614 Q_DECLARE_METATYPE(Tp::Client::ConnectionManagerInterface*)
1615 Q_DECLARE_METATYPE(Tp::Client::ProtocolInterface*)
1616 Q_DECLARE_METATYPE(Tp::Client::ProtocolInterfaceAddressingInterface*)
1617 Q_DECLARE_METATYPE(Tp::Client::ProtocolInterfaceAvatarsInterface*)
1618 Q_DECLARE_METATYPE(Tp::Client::ProtocolInterfacePresenceInterface*)
Tp::PendingVariant * requestPropertySupportedAvatarMIMETypes() const
Definition: cli-connection-manager.h:1371
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-connection-manager.h:454
Tp::PendingVariant * requestPropertyAuthenticationTypes() const
Definition: cli-connection-manager.h:765
Definition: cli-connection-manager.h:361
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertyRequestableChannelClasses() const
Definition: cli-connection-manager.h:584
static QLatin1String staticInterfaceName()
Definition: cli-connection-manager.h:925
QDBusPendingReply< QString > IdentifyAccount(const QVariantMap &parameters, int timeout=-1)
Definition: cli-connection-manager.h:819
Tp::PendingVariant * requestPropertyMaximumAvatarBytes() const
Definition: cli-connection-manager.h:1483
QDBusPendingReply< Tp::ParamSpecList > GetParameters(const QString &protocol, int timeout=-1)
Definition: cli-connection-manager.h:194
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection-manager.h:1604
static QLatin1String staticInterfaceName()
Definition: cli-connection-manager.h:55
static QLatin1String staticInterfaceName()
Definition: cli-connection-manager.h:1301
Tp::PendingVariant * requestPropertyMinimumAvatarWidth() const
Definition: cli-connection-manager.h:1403
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection-manager.h:163
Definition: cli-connection-manager.h:914
Tp::PendingVariant * requestPropertyMaximumAvatarHeight() const
Definition: cli-connection-manager.h:1451
Tp::PendingVariant * requestPropertyMaximumAvatarWidth() const
Definition: cli-connection-manager.h:1467
QDBusPendingReply< QString > NormalizeContact(const QString &contactID, int timeout=-1)
Definition: cli-connection-manager.h:888
QDBusPendingReply< QString, QDBusObjectPath > RequestConnection(const QString &protocol, const QVariantMap &parameters, int timeout=-1)
Definition: cli-connection-manager.h:315
static QLatin1String staticInterfaceName()
Definition: cli-connection-manager.h:372
Tp::PendingVariant * requestPropertyMinimumAvatarHeight() const
Definition: cli-connection-manager.h:1387
Tp::PendingVariant * requestPropertyProtocols() const
Definition: cli-connection-manager.h:120
QDBusPendingReply< QStringList > ListProtocols(int timeout=-1)
Definition: cli-connection-manager.h:224
Tp::PendingVariant * requestPropertyAddressableVCardFields() const
Definition: cli-connection-manager.h:1046
static QLatin1String staticInterfaceName()
Definition: cli-connection-manager.h:1521
Tp::PendingVariant * requestPropertyAddressableURISchemes() const
Definition: cli-connection-manager.h:1130
QDBusPendingReply< QString > NormalizeVCardAddress(const QString &VCardField, const QString &VCardAddress, int timeout=-1)
Definition: cli-connection-manager.h:1189
Tp::PendingVariant * requestPropertyRecommendedAvatarWidth() const
Definition: cli-connection-manager.h:1435
Tp::PendingVariant * requestPropertyEnglishName() const
Definition: cli-connection-manager.h:681
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection-manager.h:1141
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingVariant * requestPropertyIcon() const
Definition: cli-connection-manager.h:715
Tp::PendingVariant * requestPropertyStatuses() const
Definition: cli-connection-manager.h:1593
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-connection-manager.h:152
Definition: cli-connection-manager.h:44
Tp::PendingVariant * requestPropertyParameters() const
Definition: cli-connection-manager.h:485
Definition: cli-connection-manager.h:1510
Definition: cli-connection-manager.h:1290
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyVCardField() const
Definition: cli-connection-manager.h:638
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection-manager.h:776
QDBusPendingReply< QString > NormalizeContactURI(const QString &URI, int timeout=-1)
Definition: cli-connection-manager.h:1264
Tp::PendingVariant * requestPropertyConnectionInterfaces() const
Definition: cli-connection-manager.h:514
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection-manager.h:1494
Tp::PendingVariant * requestPropertyRecommendedAvatarHeight() const
Definition: cli-connection-manager.h:1419


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01120.html0000644000175100017520000003107612530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamedMediaStream Member List

This is the complete list of members for Tp::StreamedMediaStream, including all inherited members.

actualFeatures() const Tp::ReadyObjectprivatevirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectprivatevirtual
channel() const Tp::StreamedMediaStream
contact() const Tp::StreamedMediaStream
direction() const Tp::StreamedMediaStream
id() const Tp::StreamedMediaStream
isReady(const Features &features=Features()) const Tp::ReadyObjectprivatevirtual
localSendingRequested() const Tp::StreamedMediaStream
localSendingState() const Tp::StreamedMediaStream
localSendingStateChanged(Tp::StreamedMediaStream::SendingState localSendingState)Tp::StreamedMediaStreamsignal
missingFeatures() const Tp::ReadyObjectprivatevirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
pendingSend() const Tp::StreamedMediaStream
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprivate
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObjectprivate
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObjectprivate
receiving() const Tp::StreamedMediaStream
RefCounted()Tp::RefCountedinline
remoteSendingRequested() const Tp::StreamedMediaStream
remoteSendingState() const Tp::StreamedMediaStream
remoteSendingStateChanged(Tp::StreamedMediaStream::SendingState remoteSendingState)Tp::StreamedMediaStreamsignal
requestDirection(MediaStreamDirection direction)Tp::StreamedMediaStream
requestDirection(bool send, bool receive)Tp::StreamedMediaStream
requestedFeatures() const Tp::ReadyObjectprivatevirtual
requestReceiving(bool receive)Tp::StreamedMediaStream
requestSending(bool send)Tp::StreamedMediaStream
sending() const Tp::StreamedMediaStream
SendingState enum nameTp::StreamedMediaStream
SendingStateNone enum valueTp::StreamedMediaStream
SendingStatePendingSend enum valueTp::StreamedMediaStream
SendingStateSending enum valueTp::StreamedMediaStream
startDTMFTone(DTMFEvent event)Tp::StreamedMediaStream
state() const Tp::StreamedMediaStream
stopDTMFTone()Tp::StreamedMediaStream
type() const Tp::StreamedMediaStream
~Object()Tp::Objectvirtual
~ReadyObject()Tp::ReadyObjectprivatevirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StreamedMediaStream()Tp::StreamedMediaStream


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00975.html0000644000175100017520000001322012530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00474.html0000644000175100017520000006200112530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ProtocolInterfacePresenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ConnectionManager>

Inherits Tp::AbstractInterface.

Public Member Functions

 ProtocolInterfacePresenceInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterfacePresenceInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ProtocolInterfacePresenceInterface (Tp::DBusProxy *proxy)
 
 ProtocolInterfacePresenceInterface (const Tp::Client::ConnectionManagerInterface &mainInterface)
 
 ProtocolInterfacePresenceInterface (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyStatuses () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterfacePresenceInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ProtocolInterfacePresenceInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface ( Tp::DBusProxy proxy)

Creates a ProtocolInterfacePresenceInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface ( const Tp::Client::ConnectionManagerInterface mainInterface)
explicit

Creates a ProtocolInterfacePresenceInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ProtocolInterfacePresenceInterface::ProtocolInterfacePresenceInterface ( const Tp::Client::ConnectionManagerInterface mainInterface,
QObject *  parent 
)

Creates a ProtocolInterfacePresenceInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ProtocolInterfacePresenceInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Protocol.Interface.Presence", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ProtocolInterfacePresenceInterface::requestPropertyStatuses ( ) const
inline

Asynchronous getter for the remote object property Statuses of type Tp::SimpleStatusSpecMap.

The statuses that might appear in the Connection.Interface.SimplePresence.Statuses property on a connection to this protocol that supports SimplePresence. This property is immutable. Depending on server capabilities, it is possible that not all of these will actually appear on the Connection.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ProtocolInterfacePresenceInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ProtocolInterfacePresenceInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00632_source.html0000644000175100017520000010315012530426257022513 0ustar00kaffeinekaffeine00000000000000 cli-client-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-client-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/client.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ClientInterface::ClientInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ClientInterface::ClientInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27 
28  Tp::AbstractInterface::invalidate(proxy, error, message);
29 }
30 
31 ClientApproverInterface::ClientApproverInterface(const QString& busName, const QString& objectPath, QObject *parent)
32  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
33 {
34 }
35 
36 ClientApproverInterface::ClientApproverInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
37  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
38 {
39 }
40 
42  : Tp::AbstractInterface(proxy, staticInterfaceName())
43 {
44 }
45 
47  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
48 {
49 }
50 
52  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
53 {
54 }
55 
57  const QString &error, const QString &message)
58 {
59 
60  Tp::AbstractInterface::invalidate(proxy, error, message);
61 }
62 
63 ClientHandlerInterface::ClientHandlerInterface(const QString& busName, const QString& objectPath, QObject *parent)
64  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
65 {
66 }
67 
68 ClientHandlerInterface::ClientHandlerInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
69  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
70 {
71 }
72 
74  : Tp::AbstractInterface(proxy, staticInterfaceName())
75 {
76 }
77 
79  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
80 {
81 }
82 
84  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
85 {
86 }
87 
89  const QString &error, const QString &message)
90 {
91 
92  Tp::AbstractInterface::invalidate(proxy, error, message);
93 }
94 
95 ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface(const QString& busName, const QString& objectPath, QObject *parent)
96  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
97 {
98 }
99 
100 ClientInterfaceRequestsInterface::ClientInterfaceRequestsInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
101  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
102 {
103 }
104 
106  : Tp::AbstractInterface(proxy, staticInterfaceName())
107 {
108 }
109 
111  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
112 {
113 }
114 
116  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
117 {
118 }
119 
121  const QString &error, const QString &message)
122 {
123 
124  Tp::AbstractInterface::invalidate(proxy, error, message);
125 }
126 
127 ClientObserverInterface::ClientObserverInterface(const QString& busName, const QString& objectPath, QObject *parent)
128  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
129 {
130 }
131 
132 ClientObserverInterface::ClientObserverInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
133  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
134 {
135 }
136 
138  : Tp::AbstractInterface(proxy, staticInterfaceName())
139 {
140 }
141 
143  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
144 {
145 }
146 
148  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
149 {
150 }
151 
153  const QString &error, const QString &message)
154 {
155 
156  Tp::AbstractInterface::invalidate(proxy, error, message);
157 }
158 }
159 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-client-body.hpp:88
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
ClientApproverInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-client-body.hpp:31
ClientHandlerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-client-body.hpp:63
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-client-body.hpp:120
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-client-body.hpp:24
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-client-body.hpp:56
ClientInterfaceRequestsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-client-body.hpp:95
Definition: cli-client.h:44
ClientObserverInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-client-body.hpp:127
ClientInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-client-body.hpp:9
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-client-body.hpp:152


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00219.html0000644000175100017520000006514412530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceSecurableInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelInterfaceSecurableInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSecurableInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSecurableInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceSecurableInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceSecurableInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyEncrypted () const
 
Tp::PendingVariantrequestPropertyVerified () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Securable".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSecurableInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSecurableInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceSecurableInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceSecurableInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceSecurableInterface::ChannelInterfaceSecurableInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceSecurableInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceSecurableInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Securable", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSecurableInterface::requestPropertyEncrypted ( ) const
inline

Asynchronous getter for the remote object property Encrypted of type bool.

True if this channel occurs over an encrypted connection. This does not imply that steps have been taken to avoid man-in-the-middle attacks.

For future support for RFC 5056 Channel Binding it is desirable to be able to use some SASL mechanisms over an encrypted connection to an unverified peer, which can prove that it is the desired destination during the SASL negotiation.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSecurableInterface::requestPropertyVerified ( ) const
inline

Asynchronous getter for the remote object property Verified of type bool.

True if this channel occurs over a connection that is protected against tampering, and has been verified to be with the desired destination: for instance, one where TLS was previously negotiated, and the TLS certificate has been verified against a configured certificate authority or accepted by the user.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceSecurableInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceSecurableInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x72.html0000644000175100017520000025503312530426260024125 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- r -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00533.html0000644000175100017520000001375112530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::SupportedSocketMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SupportedSocketMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, UIntList >.

Public Member Functions

 SupportedSocketMap ()
 
 SupportedSocketMap (const QMap< uint, UIntList > &a)
 
SupportedSocketMapoperator= (const QMap< uint, UIntList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, UIntList>, but needed to have a discrete type in the Qt type system.

The supported socket address and access-control types for tubes. See GetAvailableStreamTubeTypes.

Constructor & Destructor Documentation

Tp::SupportedSocketMap::SupportedSocketMap ( )
inline
Tp::SupportedSocketMap::SupportedSocketMap ( const QMap< uint, UIntList > &  a)
inline

Member Function Documentation

SupportedSocketMap& Tp::SupportedSocketMap::operator= ( const QMap< uint, UIntList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00629_source.html0000644000175100017520000002450312530426257022525 0ustar00kaffeinekaffeine00000000000000 cli-channel-request-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-request-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/channel-request.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ChannelRequestInterface::ChannelRequestInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ChannelRequestInterface::ChannelRequestInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(Failed(const QString&, const QString&)), NULL, NULL);
28  disconnect(this, SIGNAL(Succeeded()), NULL, NULL);
29  disconnect(this, SIGNAL(SucceededWithChannel(const QDBusObjectPath&, const QVariantMap&, const QDBusObjectPath&, const QVariantMap&)), NULL, NULL);
30 
31  Tp::AbstractInterface::invalidate(proxy, error, message);
32 }
33 }
34 }
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-request-body.hpp:24
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
void SucceededWithChannel(const QDBusObjectPath &connection, const QVariantMap &connectionProperties, const QDBusObjectPath &channel, const QVariantMap &channelProperties)
ChannelRequestInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-request-body.hpp:9
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
void Failed(const QString &error, const QString &message)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00288.html0000644000175100017520000016654312530426260021153 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceContactGroupsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetContactGroups (uint contact, const QStringList &groups, int timeout=-1)
 
QDBusPendingReply SetGroupMembers (const QString &group, const Tp::UIntList &members, int timeout=-1)
 
QDBusPendingReply AddToGroup (const QString &group, const Tp::UIntList &members, int timeout=-1)
 
QDBusPendingReply RemoveFromGroup (const QString &group, const Tp::UIntList &members, int timeout=-1)
 
QDBusPendingReply RemoveGroup (const QString &group, int timeout=-1)
 
QDBusPendingReply RenameGroup (const QString &oldName, const QString &newName, int timeout=-1)
 

Signals

void GroupsChanged (const Tp::UIntList &contact, const QStringList &added, const QStringList &removed)
 
void GroupsCreated (const QStringList &names)
 
void GroupRenamed (const QString &oldName, const QString &newName)
 
void GroupsRemoved (const QStringList &names)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceContactGroupsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactGroupsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactGroupsInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceContactGroupsInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceContactGroupsInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyDisjointGroups () const
 
Tp::PendingVariantrequestPropertyGroupStorage () const
 
Tp::PendingVariantrequestPropertyGroups () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ContactGroups".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactGroupsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactGroupsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceContactGroupsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceContactGroupsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceContactGroupsInterface::ConnectionInterfaceContactGroupsInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceContactGroupsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceContactGroupsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ContactGroups", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactGroupsInterface::requestPropertyDisjointGroups ( ) const
inline

Asynchronous getter for the remote object property DisjointGroups of type bool.

True if each contact can be in at most one group; false if each contact can be in many groups.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactGroupsInterface::requestPropertyGroupStorage ( ) const
inline

Asynchronous getter for the remote object property GroupStorage of type uint.

Indicates the extent to which contacts' groups can be set and stored. This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactGroupsInterface::requestPropertyGroups ( ) const
inline

Asynchronous getter for the remote object property Groups of type QStringList.

The names of all groups that currently exist. This may be a larger set than the union of all contacts' groups contact attributes, if the connection allows groups to be empty.

Change notification is via GroupsCreated() and GroupsRemoved() ; clients can also distinguish between a create/remove pair and a renamed group by receiving GroupRenamed() .

This property's value is not meaningful until the ConnectionInterfaceContactListInterface::ContactListState has become Success.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceContactGroupsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactGroupsInterface::SetContactGroups ( uint  contact,
const QStringList &  groups,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetContactGroups on the remote object.

Add the given contact to the given groups (creating new groups if necessary), and remove them from all other groups.

This is the easiest and most correct way to implement user interfaces that display a single contact with a list of groups, resulting in a user expectation that when they apply the changes, the contact's set of groups will become exactly what was displayed.

If the user is removed from a group of which they were the only member, the group MAY be removed automatically.

In protocols like XMPP where groups behave like tags, a group with no members has no protocol representation.

Any GroupsCreated() , GroupsChanged() and GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contact
The contact to alter.
groups
The set of groups which the contact should be in.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactGroupsInterface::SetGroupMembers ( const QString &  group,
const Tp::UIntList members,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetGroupMembers on the remote object.

Add the given members to the given group (creating it if necessary), and remove all other members.

This is the easiest and most correct way to implement user interfaces that display a single group with a list of contacts, resulting in a user expectation that when they apply the changes, the groups's set of members will become exactly what was displayed.

If DisjointGroups is true, this will also remove each member from their previous group.

If the user is removed from a group of which they were the only member, the group MAY be removed automatically.

Any GroupsCreated() , GroupsChanged() and GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
group
The group to alter.
members
The set of members for the group. If this set is empty, this method 
MAY remove the group.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactGroupsInterface::AddToGroup ( const QString &  group,
const Tp::UIntList members,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddToGroup on the remote object.

Add the given members to the given group, creating it if necessary.

If DisjointGroups is true, this will also remove each member from their previous group.

This is good for user interfaces in which you can edit groups via drag-and-drop.

Any GroupsCreated() , GroupsChanged() and GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
group
The group to alter.
members
The set of members to include in the group.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactGroupsInterface::RemoveFromGroup ( const QString &  group,
const Tp::UIntList members,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveFromGroup on the remote object.

Remove the given members from the given group.

This is good for user interfaces in which you can edit groups via drag-and-drop.

Any GroupsChanged() or GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
group
The group to alter. If it does not exist, then it has no members by 
definition, so this method SHOULD return successfully.
members
The set of members to remove from the group. It is not an error to 
remove members who are already not in the group. If there are no 
members left in the group afterwards, the group MAY itself be 
removed.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactGroupsInterface::RemoveGroup ( const QString &  group,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveGroup on the remote object.

Remove all members from the given group, then remove the group itself. If the group already does not exist, this method SHOULD return successfully.

Any GroupsChanged() or GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
group
The group to remove.
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactGroupsInterface::RenameGroup ( const QString &  oldName,
const QString &  newName,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RenameGroup on the remote object.

Rename the given group.

On protocols where groups behave like tags, this is an API short-cut for adding all of the group's members to a group with the new name, then removing the old group.

Otherwise, clients can't perform this operation atomically, even if the connection could.

Any GroupRenamed() or GroupsRemoved() signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ConnectionInterfaceContactListInterface::ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as ConnectionInterfaceContactListInterface::GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
oldName
The group to rename.
newName
The new name for the group.
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfaceContactGroupsInterface::GroupsChanged ( const Tp::UIntList contact,
const QStringList &  added,
const QStringList &  removed 
)
signal

Represents the signal GroupsChanged on the remote object.

Emitted when contacts' groups change.

Parameters
contact
The relevant contacts.
added
The names of groups to which the contacts were added.
removed
The names of groups from which the contacts were removed.
void Tp::Client::ConnectionInterfaceContactGroupsInterface::GroupsCreated ( const QStringList &  names)
signal

Represents the signal GroupsCreated on the remote object.

Emitted when new, empty groups are created. This will often be followed by GroupsChanged signals that add some members.

Parameters
names
The names of the new groups.
void Tp::Client::ConnectionInterfaceContactGroupsInterface::GroupRenamed ( const QString &  oldName,
const QString &  newName 
)
signal

Represents the signal GroupRenamed on the remote object.

Emitted when a group is renamed, in protocols where this can be distinguished from group creation, removal and membership changes.

Immediately after this signal is emitted, GroupsCreated() MUST signal the creation of a group with the new name, and GroupsRemoved() MUST signal the removal of a group with the old name.

Emitting these extra signals, in this order, means that clients that are interested in the set of groups that exist (but treat a rename and a create/remove pair identically) can ignore the GroupRenamed signal entirely.

If the group was not empty, immediately after those signals are emitted, GroupsChanged() MUST signal that the members of that group were removed from the old name and added to the new name.

On connection managers where groups behave like tags, renaming a group MAY be signalled as a set of GroupsCreated() , GroupsRemoved() and GroupsChanged() signals, instead of emitting this signal.

On protocols like XMPP, another resource "renaming a group" is indistinguishable from changing contacts' groups individually.

Parameters
oldName
The old name of the group.
newName
The new name of the group.
void Tp::Client::ConnectionInterfaceContactGroupsInterface::GroupsRemoved ( const QStringList &  names)
signal

Represents the signal GroupsRemoved on the remote object.

Emitted when one or more groups are removed. If they had members at the time that they were removed, then immediately after this signal is emitted, GroupsChanged() MUST signal that their members were removed.

Emitting the signals in this order allows for two modes of operation. A client interested only in a contact's set of groups can ignore GroupsRemoved() and rely on the GroupsChanged() signal that will follow; a more elaborate client wishing to distinguish between all of a group's members being removed, and the group itself being removed, can additionally watch for GroupsRemoved() and use it to disambiguate.

Parameters
names
The names of the groups.
void Tp::Client::ConnectionInterfaceContactGroupsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01249.html0000644000175100017520000002523012530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelDispatcherInterface Member List

This is the complete list of members for Tp::Client::ChannelDispatcherInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelDispatcherInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelDispatcherInterface
ChannelDispatcherInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelDispatcherInterface
ChannelDispatcherInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelDispatcherInterface
CreateChannel(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceinlineslot
CreateChannelWithHints(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceinlineslot
DelegateChannels(const Tp::ObjectPathList &channels, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceinlineslot
EnsureChannel(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceinlineslot
EnsureChannelWithHints(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelDispatcherInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
PresentChannel(const QDBusObjectPath &channel, qlonglong userActionTime, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelDispatcherInterfaceinline
requestPropertyInterfaces() const Tp::Client::ChannelDispatcherInterfaceinline
requestPropertySupportsRequestHints() const Tp::Client::ChannelDispatcherInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelDispatcherInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00032.html0000644000175100017520000001170112530426257021125 0ustar00kaffeinekaffeine00000000000000 protocols/protocols.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocols/protocols.cpp
#include "protocols.h"
#include "_gen/protocols.moc.hpp"
#include <TelepathyQt/Debug>
#include <TelepathyQt/ConnectionManager>
#include <TelepathyQt/PendingStringList>
#include <QCoreApplication>
#include <QDebug>
Protocols::Protocols()
: cmWrappersFinished(0)
{
qDebug() << "Listing names";
SIGNAL(finished(Tp::PendingOperation *)),
SLOT(onListNamesFinished(Tp::PendingOperation *)));
}
Protocols::~Protocols()
{
}
void Protocols::onListNamesFinished(PendingOperation *op)
{
if (op->isError()) {
qWarning() << "Error listing connection manager names -" <<
op->errorName() << ": " << op->errorMessage();
return;
}
PendingStringList *ps = qobject_cast<PendingStringList *>(op);
qDebug() << "Supported CMs:" << ps->result();
foreach (const QString &cmName, ps->result()) {
CMWrapper *cmWrapper = new CMWrapper(cmName, this);
mCMWrappers.append(cmWrapper);
connect(cmWrapper,
SIGNAL(finished()),
SLOT(onCMWrapperFinished()));
}
}
void Protocols::onCMWrapperFinished()
{
if (++cmWrappersFinished == mCMWrappers.size()) {
QCoreApplication::quit();
}
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_prop.html0000644000175100017520000001352212530426260023365 0ustar00kaffeinekaffeine00000000000000 Class Members - Properties
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- a -

- c -

- d -

- e -

- f -

- h -

- i -

- n -

- o -

- p -

- r -

- s -

- u -

- v -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00625_source.html0000644000175100017520000002334012530426257022517 0ustar00kaffeinekaffeine00000000000000 cli-channel-dispatch-operation-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-dispatch-operation-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/channel-dispatch-operation.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 ChannelDispatchOperationInterface::ChannelDispatchOperationInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 ChannelDispatchOperationInterface::ChannelDispatchOperationInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(ChannelLost(const QDBusObjectPath&, const QString&, const QString&)), NULL, NULL);
28  disconnect(this, SIGNAL(Finished()), NULL, NULL);
29 
30  Tp::AbstractInterface::invalidate(proxy, error, message);
31 }
32 }
33 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
void ChannelLost(const QDBusObjectPath &channel, const QString &error, const QString &message)
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
ChannelDispatchOperationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-channel-dispatch-operation-body.hpp:9
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-channel-dispatch-operation-body.hpp:24


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00347.html0000644000175100017520000007770112530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::DebugReceiver Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The DebugReceiver class provides a D-Bus proxy for a Telepathy Debug object. More...

#include <TelepathyQt/DebugReceiver>

Inherits Tp::StatefulDBusProxy.

Signals

void newDebugMessage (const Tp::DebugMessage &message)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~DebugReceiver ()
 
PendingDebugMessageListfetchMessages ()
 
PendingOperationsetMonitoringEnabled (bool enabled)
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 

Static Public Member Functions

static DebugReceiverPtr create (const QString &busName, const QDBusConnection &bus=QDBusConnection::sessionBus())
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 

Protected Member Functions

 DebugReceiver (const QDBusConnection &bus, const QString &busName)
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 

Detailed Description

The DebugReceiver class provides a D-Bus proxy for a Telepathy Debug object.

A Debug object provides debugging messages from services.

Constructor & Destructor Documentation

Tp::DebugReceiver::~DebugReceiver ( )
virtual
Tp::DebugReceiver::DebugReceiver ( const QDBusConnection &  bus,
const QString &  busName 
)
protected

Member Function Documentation

DebugReceiverPtr Tp::DebugReceiver::create ( const QString &  busName,
const QDBusConnection &  bus = QDBusConnection::sessionBus() 
)
static
PendingDebugMessageList * Tp::DebugReceiver::fetchMessages ( )

Retrieves buffered debug messages.

This method returns a list of buffered debug messages. Depending on the service side implementation, this may not be the entire list of all messages received during the service's lifetime. Use monitoring instead for getting all the messages being streamed in realtime.

Returns
A pending operation returning a list of buffered debug messages when finished.
See Also
setMonitoringEnabled
PendingOperation * Tp::DebugReceiver::setMonitoringEnabled ( bool  enabled)

Enables or disables the emission of newDebugMessage.

This function either enables or disables the emission of newDebugMessage. If monitoring is enabled, everytime a message will be received, newDebugMessage will be emitted carrying the new message.

Monitoring should be disabled when not needed, as it generates a high amount of traffic on the bus. It is always disabled by default.

This method requires FeatureCore to be enabled.

Parameters
enabledWhether to enable or disable monitoring.
Returns
A pending operation returning whether the operation succeeded or not.
See Also
newDebugMessage
void Tp::DebugReceiver::newDebugMessage ( const Tp::DebugMessage msg)
signal

Emitted whenever a new debug message is available. This will be emitted only if monitoring has been previously enabled.

Parameters
msgThe new debug message.
See Also
setMonitoringEnabled

Member Data Documentation

const Feature Tp::DebugReceiver::FeatureCore
static

Feature representing the core that needs to become ready to make the DebugReceiver object usable.

Note that this feature must be enabled in order to use most DebugReceiver methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01308.html0000644000175100017520000002524212530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactInfoInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceContactInfoInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceContactInfoInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactInfoInterface
ConnectionInterfaceContactInfoInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactInfoInterface
ConnectionInterfaceContactInfoInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceContactInfoInterface
ConnectionInterfaceContactInfoInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceContactInfoInterfaceexplicit
ConnectionInterfaceContactInfoInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceContactInfoInterface
ContactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo)Tp::Client::ConnectionInterfaceContactInfoInterfacesignal
GetContactInfo(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactInfoInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceContactInfoInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RefreshContactInfo(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactInfoInterfaceinlineslot
requestAllProperties() const Tp::Client::ConnectionInterfaceContactInfoInterfaceinline
RequestContactInfo(uint contact, int timeout=-1)Tp::Client::ConnectionInterfaceContactInfoInterfaceinlineslot
requestPropertyContactInfoFlags() const Tp::Client::ConnectionInterfaceContactInfoInterfaceinline
requestPropertySupportedFields() const Tp::Client::ConnectionInterfaceContactInfoInterfaceinline
SetContactInfo(const Tp::ContactInfoFieldList &contactInfo, int timeout=-1)Tp::Client::ConnectionInterfaceContactInfoInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceContactInfoInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2lastnode.png0000644000175100017520000000012612530426257022552 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01062.html0000644000175100017520000010713512530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::OutgoingFileTransferChannel Member List

This is the complete list of members for Tp::OutgoingFileTransferChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
availableSocketTypes() const Tp::FileTransferChannelprotected
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
cancel()Tp::FileTransferChannel
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
contentHash() const Tp::FileTransferChannel
contentHashType() const Tp::FileTransferChannel
contentType() const Tp::FileTransferChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::OutgoingFileTransferChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
description() const Tp::FileTransferChannel
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::OutgoingFileTransferChannelstatic
fileName() const Tp::FileTransferChannel
FileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore)Tp::FileTransferChannelprotected
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initialOffset() const Tp::FileTransferChannel
initialOffsetDefined(qulonglong initialOffset)Tp::FileTransferChannelsignal
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isConnected() const Tp::FileTransferChannelprotected
isFinished() const Tp::FileTransferChannelprotected
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
lastModificationTime() const Tp::FileTransferChannel
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
onUriDefined(const QString &uri)Tp::FileTransferChannelprotectedslot
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
OutgoingFileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=OutgoingFileTransferChannel::FeatureCore)Tp::OutgoingFileTransferChannelprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
provideFile(QIODevice *input)Tp::OutgoingFileTransferChannel
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
setBusName(const QString &busName)Tp::DBusProxyprotected
setConnected()Tp::FileTransferChannelprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
size() const Tp::FileTransferChannel
state() const Tp::FileTransferChannel
stateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason)Tp::FileTransferChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
stateReason() const Tp::FileTransferChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
transferredBytes() const Tp::FileTransferChannel
transferredBytesChanged(qulonglong count)Tp::FileTransferChannelsignal
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
uri() const Tp::FileTransferChannel
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~FileTransferChannel()Tp::FileTransferChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~OutgoingFileTransferChannel()Tp::OutgoingFileTransferChannelvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00907.html0000644000175100017520000000612112530426257021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClient Member List

This is the complete list of members for Tp::AbstractClient, including all inherited members.

AbstractClient()Tp::AbstractClient
isRegistered() const Tp::AbstractClient
RefCounted()Tp::RefCountedinline
~AbstractClient()Tp::AbstractClientvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00621_source.html0000644000175100017520000003021712530426257022514 0ustar00kaffeinekaffeine00000000000000 cli-call-stream-endpoint-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-stream-endpoint-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/call-stream-endpoint.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 CallStreamEndpointInterface::CallStreamEndpointInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 CallStreamEndpointInterface::CallStreamEndpointInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(RemoteCredentialsSet(const QString&, const QString&)), NULL, NULL);
28  disconnect(this, SIGNAL(RemoteCandidatesAdded(const Tp::CandidateList&)), NULL, NULL);
29  disconnect(this, SIGNAL(CandidatePairSelected(const Tp::Candidate&, const Tp::Candidate&)), NULL, NULL);
30  disconnect(this, SIGNAL(EndpointStateChanged(uint, uint)), NULL, NULL);
31  disconnect(this, SIGNAL(ControllingChanged(bool)), NULL, NULL);
32 
33  Tp::AbstractInterface::invalidate(proxy, error, message);
34 }
35 }
36 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
QList< Candidate > CandidateList
Definition: build/TelepathyQt/_gen/types.h:413
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-call-stream-endpoint-body.hpp:24
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
void ControllingChanged(bool controlling)
void CandidatePairSelected(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate)
CallStreamEndpointInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-call-stream-endpoint-body.hpp:9
void RemoteCredentialsSet(const QString &username, const QString &password)
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
void RemoteCandidatesAdded(const Tp::CandidateList &candidates)
Definition: build/TelepathyQt/_gen/types.h:379
void EndpointStateChanged(uint component, uint state)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00406.html0000644000175100017520000002335012530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::MessageContentPartList Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessageContentPartList Class Reference

The MessageContentPartList class represents a list of MessageContentPart. More...

#include <TelepathyQt/MessageContentPartList>

Inherits QList< MessageContentPart >.

Public Member Functions

 MessageContentPartList ()
 
 MessageContentPartList (const MessagePart &mp)
 
 MessageContentPartList (const MessagePartList &mps)
 
 MessageContentPartList (const MessageContentPart &mcp)
 
 MessageContentPartList (const QList< MessageContentPart > &other)
 
MessagePartList bareParts () const
 

Detailed Description

The MessageContentPartList class represents a list of MessageContentPart.

Constructor & Destructor Documentation

Tp::MessageContentPartList::MessageContentPartList ( )
inline
Tp::MessageContentPartList::MessageContentPartList ( const MessagePart mp)
inline
Tp::MessageContentPartList::MessageContentPartList ( const MessagePartList mps)
inline
Tp::MessageContentPartList::MessageContentPartList ( const MessageContentPart mcp)
inline
Tp::MessageContentPartList::MessageContentPartList ( const QList< MessageContentPart > &  other)
inline

Member Function Documentation

MessagePartList Tp::MessageContentPartList::bareParts ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01377.html0000644000175100017520000001134712530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactBlockingAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceContactBlockingAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
BlockContacts(const Tp::UIntList &contacts, bool reportAbusive, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactBlockingAdaptorslot
BlockedContactsChanged(const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts)Tp::Service::ConnectionInterfaceContactBlockingAdaptorsignal
ContactBlockingCapabilities() const Tp::Service::ConnectionInterfaceContactBlockingAdaptor
dbusConnection() const Tp::AbstractAdaptor
RequestBlockedContacts(const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactBlockingAdaptorslot
UnblockContacts(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactBlockingAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00160.html0000644000175100017520000001210712530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::Candidate Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Candidate Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint component
 
QString IP
 
uint port
 
QVariantMap info
 

Detailed Description

Structure type generated from the specification.

A Stream Candidate.

Member Data Documentation

uint Tp::Candidate::component

The component number.

QString Tp::Candidate::IP

The IP address to use.

uint Tp::Candidate::port

The port number to use.

QVariantMap Tp::Candidate::info

Additional information about the candidate.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_enum.html0000644000175100017520000000435112530426260023351 0ustar00kaffeinekaffeine00000000000000 Class Members - Enumerations
   Home · All Classes · All Namespaces · Modules · Functions · Files
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01121.html0000644000175100017520000011015012530426260021115 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamedMediaChannel Member List

This is the complete list of members for Tp::StreamedMediaChannel, including all inherited members.

acceptCall()Tp::StreamedMediaChannel
actualFeatures() const Tp::ReadyObjectvirtual
awaitingLocalAnswer() const Tp::StreamedMediaChannel
awaitingRemoteAnswer() const Tp::StreamedMediaChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::StreamedMediaChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::StreamedMediaChannelstatic
FeatureLocalHoldStateTp::StreamedMediaChannelstatic
FeatureStreamsTp::StreamedMediaChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
handlerStreamingRequired() const Tp::StreamedMediaChannel
hangupCall()Tp::StreamedMediaChannel
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
localHoldState() const Tp::StreamedMediaChannel
localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason)Tp::StreamedMediaChannelsignal
localHoldStateReason() const Tp::StreamedMediaChannel
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
removeStream(const StreamedMediaStreamPtr &stream)Tp::StreamedMediaChannel
removeStreams(const StreamedMediaStreams &streams)Tp::StreamedMediaChannel
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestHold(bool hold)Tp::StreamedMediaChannel
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
requestStream(const ContactPtr &contact, MediaStreamType type)Tp::StreamedMediaChannel
requestStreams(const ContactPtr &contact, QList< MediaStreamType > types)Tp::StreamedMediaChannel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
StateChangeReason enum nameTp::StreamedMediaChannel
StateChangeReasonUnknown enum valueTp::StreamedMediaChannel
StateChangeReasonUserRequested enum valueTp::StreamedMediaChannel
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
streamAdded(const Tp::StreamedMediaStreamPtr &stream)Tp::StreamedMediaChannelsignal
streamDirectionChanged(const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamDirection direction, Tp::MediaStreamPendingSend pendingSend)Tp::StreamedMediaChannelsignal
StreamedMediaChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamedMediaChannel::FeatureCore)Tp::StreamedMediaChannelprotected
streamError(const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamError errorCode, const QString &errorMessage)Tp::StreamedMediaChannelsignal
streamRemoved(const Tp::StreamedMediaStreamPtr &stream)Tp::StreamedMediaChannelsignal
streams() const Tp::StreamedMediaChannel
streamsForType(MediaStreamType type) const Tp::StreamedMediaChannel
streamStateChanged(const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamState state)Tp::StreamedMediaChannelsignal
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~StreamedMediaChannel()Tp::StreamedMediaChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00976.html0000644000175100017520000001222212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback3< R, Arg1, Arg2, Arg3 > Member List

This is the complete list of members for Tp::Callback3< R, Arg1, Arg2, Arg3 >, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
Callback3()Tp::Callback3< R, Arg1, Arg2, Arg3 >inline
Callback3(const Functor &functor)Tp::Callback3< R, Arg1, Arg2, Arg3 >inline
callerTp::BaseCallbackprotected
FunctionType typedefTp::Callback3< R, Arg1, Arg2, Arg3 >
isValid() const Tp::BaseCallbackinline
operator()(Arg1 a1, Arg2 a2, Arg3 a3) const Tp::Callback3< R, Arg1, Arg2, Arg3 >inline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
ResultType typedefTp::Callback3< R, Arg1, Arg2, Arg3 >
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00618_source.html0000644000175100017520000017336512530426257022536 0ustar00kaffeinekaffeine00000000000000 cli-call-content-media-description.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-content-media-description.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
109  {
110  return internalRequestProperty(QLatin1String("Interfaces"));
111  }
112 
137  {
138  return internalRequestProperty(QLatin1String("FurtherNegotiationRequired"));
139  }
140 
159  {
160  return internalRequestProperty(QLatin1String("HasRemoteInformation"));
161  }
162 
174  {
175  return internalRequestProperty(QLatin1String("Codecs"));
176  }
177 
200  {
201  return internalRequestProperty(QLatin1String("RemoteContact"));
202  }
203 
241  {
242  return internalRequestProperty(QLatin1String("SSRCs"));
243  }
244 
252  {
253  return internalRequestAllProperties();
254  }
255 
256 public Q_SLOTS:
275  inline QDBusPendingReply<> Accept(const QVariantMap& localMediaDescription, int timeout = -1)
276  {
277  if (!invalidationReason().isEmpty()) {
278  return QDBusPendingReply<>(QDBusMessage::createError(
279  invalidationReason(),
280  invalidationMessage()
281  ));
282  }
283 
284  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
285  this->staticInterfaceName(), QLatin1String("Accept"));
286  callMessage << QVariant::fromValue(localMediaDescription);
287  return this->connection().asyncCall(callMessage, timeout);
288  }
289 
304  inline QDBusPendingReply<> Reject(const Tp::CallStateReason& reason, int timeout = -1)
305  {
306  if (!invalidationReason().isEmpty()) {
307  return QDBusPendingReply<>(QDBusMessage::createError(
308  invalidationReason(),
309  invalidationMessage()
310  ));
311  }
312 
313  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
314  this->staticInterfaceName(), QLatin1String("Reject"));
315  callMessage << QVariant::fromValue(reason);
316  return this->connection().asyncCall(callMessage, timeout);
317  }
318 
319 protected:
320  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
321 };
322 
331 {
332  Q_OBJECT
333 
334 public:
341  static inline QLatin1String staticInterfaceName()
342  {
343  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports");
344  }
345 
354  const QString& busName,
355  const QString& objectPath,
356  QObject* parent = 0
357  );
358 
368  const QDBusConnection& connection,
369  const QString& busName,
370  const QString& objectPath,
371  QObject* parent = 0
372  );
373 
381 
390 
399 
413  {
414  return internalRequestProperty(QLatin1String("LossRLEMaxSize"));
415  }
416 
430  {
431  return internalRequestProperty(QLatin1String("DuplicateRLEMaxSize"));
432  }
433 
447  {
448  return internalRequestProperty(QLatin1String("PacketReceiptTimesMaxSize"));
449  }
450 
465  {
466  return internalRequestProperty(QLatin1String("DLRRMaxSize"));
467  }
468 
479  {
480  return internalRequestProperty(QLatin1String("RTTMode"));
481  }
482 
495  {
496  return internalRequestProperty(QLatin1String("StatisticsFlags"));
497  }
498 
510  {
511  return internalRequestProperty(QLatin1String("EnableMetrics"));
512  }
513 
521  {
522  return internalRequestAllProperties();
523  }
524 
525 protected:
526  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
527 };
528 
537 {
538  Q_OBJECT
539 
540 public:
547  static inline QLatin1String staticInterfaceName()
548  {
549  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback");
550  }
551 
560  const QString& busName,
561  const QString& objectPath,
562  QObject* parent = 0
563  );
564 
574  const QDBusConnection& connection,
575  const QString& busName,
576  const QString& objectPath,
577  QObject* parent = 0
578  );
579 
587 
596 
605 
616  {
617  return internalRequestProperty(QLatin1String("FeedbackMessages"));
618  }
619 
631  {
632  return internalRequestProperty(QLatin1String("DoesAVPF"));
633  }
634 
642  {
643  return internalRequestAllProperties();
644  }
645 
646 protected:
647  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
648 };
649 
658 {
659  Q_OBJECT
660 
661 public:
668  static inline QLatin1String staticInterfaceName()
669  {
670  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions");
671  }
672 
681  const QString& busName,
682  const QString& objectPath,
683  QObject* parent = 0
684  );
685 
695  const QDBusConnection& connection,
696  const QString& busName,
697  const QString& objectPath,
698  QObject* parent = 0
699  );
700 
708 
717 
726 
737  {
738  return internalRequestProperty(QLatin1String("HeaderExtensions"));
739  }
740 
748  {
749  return internalRequestAllProperties();
750  }
751 
752 protected:
753  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
754 };
755 }
756 }
758 Q_DECLARE_METATYPE(Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface*)
759 Q_DECLARE_METATYPE(Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface*)
760 Q_DECLARE_METATYPE(Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface*)
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertyLossRLEMaxSize() const
Definition: cli-call-content-media-description.h:412
Tp::PendingVariant * requestPropertyHeaderExtensions() const
Definition: cli-call-content-media-description.h:736
Tp::PendingVariant * requestPropertyHasRemoteInformation() const
Definition: cli-call-content-media-description.h:158
static QLatin1String staticInterfaceName()
Definition: cli-call-content-media-description.h:668
Definition: cli-call-content-media-description.h:330
Tp::PendingVariant * requestPropertyDoesAVPF() const
Definition: cli-call-content-media-description.h:630
Definition: build/TelepathyQt/_gen/types.h:320
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariant * requestPropertyStatisticsFlags() const
Definition: cli-call-content-media-description.h:494
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content-media-description.h:520
QDBusPendingReply Accept(const QVariantMap &localMediaDescription, int timeout=-1)
Definition: cli-call-content-media-description.h:275
Tp::PendingVariant * requestPropertyCodecs() const
Definition: cli-call-content-media-description.h:173
Tp::PendingVariant * requestPropertyDLRRMaxSize() const
Definition: cli-call-content-media-description.h:464
Tp::PendingVariant * requestPropertyRemoteContact() const
Definition: cli-call-content-media-description.h:199
Tp::PendingVariant * requestPropertyEnableMetrics() const
Definition: cli-call-content-media-description.h:509
Definition: cli-call-content-media-description.h:44
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content-media-description.h:747
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Definition: cli-call-content-media-description.h:657
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content-media-description.h:641
Tp::PendingVariant * requestPropertyFurtherNegotiationRequired() const
Definition: cli-call-content-media-description.h:136
Tp::PendingVariant * requestPropertyDuplicateRLEMaxSize() const
Definition: cli-call-content-media-description.h:429
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content-media-description.h:251
Tp::PendingVariant * requestPropertySSRCs() const
Definition: cli-call-content-media-description.h:240
QDBusPendingReply Reject(const Tp::CallStateReason &reason, int timeout=-1)
Definition: cli-call-content-media-description.h:304
Tp::PendingVariant * requestPropertyRTTMode() const
Definition: cli-call-content-media-description.h:478
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyPacketReceiptTimesMaxSize() const
Definition: cli-call-content-media-description.h:446
static QLatin1String staticInterfaceName()
Definition: cli-call-content-media-description.h:341
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-call-content-media-description.h:108
Definition: cli-call-content-media-description.h:536
Tp::PendingVariant * requestPropertyFeedbackMessages() const
Definition: cli-call-content-media-description.h:615
static QLatin1String staticInterfaceName()
Definition: cli-call-content-media-description.h:55
static QLatin1String staticInterfaceName()
Definition: cli-call-content-media-description.h:547


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00475.html0000644000175100017520000005173512530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::ProtocolParameter Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ProtocolParameter class represents a Telepathy protocol parameter. More...

#include <TelepathyQt/ProtocolParameter>

Public Member Functions

 ProtocolParameter ()
 
 ProtocolParameter (const ParamSpec &spec)
 
 ProtocolParameter (const QString &name, const QDBusSignature &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue=QVariant())
 
 ProtocolParameter (const QString &name, const QString &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue=QVariant())
 
 ProtocolParameter (const ProtocolParameter &other)
 
 ~ProtocolParameter ()
 
bool isValid () const
 
ProtocolParameteroperator= (const ProtocolParameter &other)
 
bool operator== (const ProtocolParameter &other) const
 
bool operator== (const QString &name) const
 
bool operator< (const ProtocolParameter &other) const
 
QString name () const
 
QDBusSignature dbusSignature () const
 
QVariant::Type type () const
 
QVariant defaultValue () const
 
bool isRequired () const
 
bool isSecret () const
 
bool isRequiredForRegistration () const
 
ParamSpec bareParameter () const
 

Detailed Description

The ProtocolParameter class represents a Telepathy protocol parameter.

Constructor & Destructor Documentation

Tp::ProtocolParameter::ProtocolParameter ( )
Tp::ProtocolParameter::ProtocolParameter ( const ParamSpec spec)
Tp::ProtocolParameter::ProtocolParameter ( const QString &  name,
const QDBusSignature &  dbusSignature,
ConnMgrParamFlags  flags,
QVariant  defaultValue = QVariant() 
)
Tp::ProtocolParameter::ProtocolParameter ( const QString &  name,
const QString &  dbusSignature,
ConnMgrParamFlags  flags,
QVariant  defaultValue = QVariant() 
)
Tp::ProtocolParameter::ProtocolParameter ( const ProtocolParameter other)
Tp::ProtocolParameter::~ProtocolParameter ( )

Member Function Documentation

bool Tp::ProtocolParameter::isValid ( ) const
inline
ProtocolParameter & Tp::ProtocolParameter::operator= ( const ProtocolParameter other)
bool Tp::ProtocolParameter::operator== ( const ProtocolParameter other) const
bool Tp::ProtocolParameter::operator== ( const QString &  name) const
bool Tp::ProtocolParameter::operator< ( const ProtocolParameter other) const
QString Tp::ProtocolParameter::name ( ) const
QDBusSignature Tp::ProtocolParameter::dbusSignature ( ) const
QVariant::Type Tp::ProtocolParameter::type ( ) const
QVariant Tp::ProtocolParameter::defaultValue ( ) const
bool Tp::ProtocolParameter::isRequired ( ) const
bool Tp::ProtocolParameter::isSecret ( ) const
bool Tp::ProtocolParameter::isRequiredForRegistration ( ) const
ParamSpec Tp::ProtocolParameter::bareParameter ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01190.html0000644000175100017520000000450612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RequestableChannelClass Member List

This is the complete list of members for Tp::RequestableChannelClass, including all inherited members.

allowedPropertiesTp::RequestableChannelClass
fixedPropertiesTp::RequestableChannelClass


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x73.html0000644000175100017520000025525112530426260024130 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- s -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00614_source.html0000644000175100017520000005522212530426257022521 0ustar00kaffeinekaffeine00000000000000 cli-account-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-account-manager.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.AccountManager");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
106  {
107  return internalRequestProperty(QLatin1String("Interfaces"));
108  }
109 
124  {
125  return internalRequestProperty(QLatin1String("ValidAccounts"));
126  }
127 
139  {
140  return internalRequestProperty(QLatin1String("InvalidAccounts"));
141  }
142 
196  {
197  return internalRequestProperty(QLatin1String("SupportedAccountProperties"));
198  }
199 
207  {
208  return internalRequestAllProperties();
209  }
210 
211 public Q_SLOTS:
273  inline QDBusPendingReply<QDBusObjectPath> CreateAccount(const QString& connectionManager, const QString& protocol, const QString& displayName, const QVariantMap& parameters, const QVariantMap& properties, int timeout = -1)
274  {
275  if (!invalidationReason().isEmpty()) {
276  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
277  invalidationReason(),
278  invalidationMessage()
279  ));
280  }
281 
282  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
283  this->staticInterfaceName(), QLatin1String("CreateAccount"));
284  callMessage << QVariant::fromValue(connectionManager) << QVariant::fromValue(protocol) << QVariant::fromValue(displayName) << QVariant::fromValue(parameters) << QVariant::fromValue(properties);
285  return this->connection().asyncCall(callMessage, timeout);
286  }
287 
288 Q_SIGNALS:
301  void AccountRemoved(const QDBusObjectPath& account);
302 
319  void AccountValidityChanged(const QDBusObjectPath& account, bool valid);
320 
321 protected:
322  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
323 };
324 }
325 }
326 Q_DECLARE_METATYPE(Tp::Client::AccountManagerInterface*)
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-account-manager.h:206
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
static QLatin1String staticInterfaceName()
Definition: cli-account-manager.h:55
QDBusPendingReply< QDBusObjectPath > CreateAccount(const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties, int timeout=-1)
Definition: cli-account-manager.h:273
Definition: cli-account-manager.h:44
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-account-manager.h:105
Tp::PendingVariant * requestPropertyInvalidAccounts() const
Definition: cli-account-manager.h:138
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyValidAccounts() const
Definition: cli-account-manager.h:123
Tp::PendingVariant * requestPropertySupportedAccountProperties() const
Definition: cli-account-manager.h:195


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00534.html0000644000175100017520000002165612530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeClient::TcpSourceAddressGenerator Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeClient::TcpSourceAddressGenerator Class Referenceabstract

The StreamTubeClient::TcpSourceAddressGenerator abstract interface allows using socket source address/port based access control for connecting to tubes accepted as TCP sockets. More...

#include <TelepathyQt/StreamTubeClient>

Public Member Functions

virtual QPair< QHostAddress,
quint16 > 
nextSourceAddress (const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube)=0
 

Protected Member Functions

virtual ~TcpSourceAddressGenerator ()
 

Detailed Description

The StreamTubeClient::TcpSourceAddressGenerator abstract interface allows using socket source address/port based access control for connecting to tubes accepted as TCP sockets.

By default, every application on the local computer is allowed to connect to the socket created by the protocol backend as the local endpoint of the tube. This is not always desirable, as that includes even other users.

Note that since every TCP connection must have an unique source address, only one simultaneous connection can be made through each tube for which this type of access control has been used.

Constructor & Destructor Documentation

Tp::StreamTubeClient::TcpSourceAddressGenerator::~TcpSourceAddressGenerator ( )
inlineprotectedvirtual

Class destructor. Protected, because StreamTubeClient never deletes a TcpSourceAddressGenerator passed to it.

Member Function Documentation

QPair< QHostAddress, quint16 > Tp::StreamTubeClient::TcpSourceAddressGenerator::nextSourceAddress ( const AccountPtr &  account,
const IncomingStreamTubeChannelPtr &  tube 
)
pure virtual

Return the source address from which connections will be allowed to the given tube once it has been accepted.

Returning the pair (QHostAddress::Any, 0) (or alternatively (QHostAddress::AnyIPv4, 0) in Qt5) makes the protocol backend allow connections from any address on the local computer. This can be used on a tube-by-tube basis if for some tubes its known that multiple connections need to be made, so a single source address doesn't suffice.

The account and tube parameters can be inspected to make the decision; typically by looking at the tube's service type, parameters and/or initiator contact.

The general pattern for implementing this method is:

  1. Determine whether tube needs to allow multiple connections, and if so, skip source address access control completely
  2. Otherwise, create a socket and bind it to a free address
  3. Return this socket's address
  4. Keep the socket bound so that no other process can (accidentally or maliciously) take the address until it's used to connect to the tube when StreamTubeClient::tubeAcceptedAsTcp() is emitted for the tube
Parameters
accountThe account from which the tube originates.
tubeThe tube channel which is going to be accepted by the StreamTubeClient.
Returns
A pair containing the host address and port allowed to connect.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00289.html0000644000175100017520000005642712530426260021153 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceContactInfoAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactInfoAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ContactInfoMap GetContactInfo (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
void RefreshContactInfo (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
Tp::ContactInfoFieldList RequestContactInfo (uint contact, const QDBusMessage &dbusMessage)
 
void SetContactInfo (const Tp::ContactInfoFieldList &contactInfo, const QDBusMessage &dbusMessage)
 

Signals

void ContactInfoChanged (uint contact, const Tp::ContactInfoFieldList &contactInfo)
 

Public Member Functions

uint ContactInfoFlags () const
 
Tp::FieldSpecs SupportedFields () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceContactInfoAdaptor::ContactInfoFlags ( ) const

Return the value of the exported D-Bus object property ContactInfoFlags of type uint.

Adaptees should export this property as a Qt property named 'contactInfoFlags' with type uint.

An integer representing the bitwise-OR of flags on this connection.

This property MAY change, without change notification, at any time before the connection moves to status Connection_Status_Connected. It MUST NOT change after that point.

Some XMPP servers, like Facebook Chat, do not allow the vCard to be changed (and so would not have the Can_Set flag). Whether the user's server is one of these cannot necessarily be detected until quite late in the connection process.

Returns
The value of exported property ContactInfoFlags.
Tp::FieldSpecs Tp::Service::ConnectionInterfaceContactInfoAdaptor::SupportedFields ( ) const

Return the value of the exported D-Bus object property SupportedFields of type Tp::FieldSpecs.

Adaptees should export this property as a Qt property named 'supportedFields' with type Tp::FieldSpecs.

A list of field specifications describing the kinds of fields which may be passed to SetContactInfo() . The empty list indicates that arbitrary vCard fields are permitted. This property SHOULD be the empty list, and be ignored by clients, if ContactInfoFlags does not contain the Can_Set flag.

For example, a protocol in which arbitrary vCards were stored as-is would set this property to the empty list. A protocol whose notion of contact information is one each of personal phone number, mobile phone number, location, email address and date of birth, with no attributes allowed on each piece of information, would set this property to (in Python-like syntax):

[
  ('tel', ['type=home'], Parameters_Exact, 1),
  ('tel', ['type=cell'], Parameters_Exact, 1),
  ('adr', [], Parameters_Exact, 1),
  ('bday', [], Parameters_Exact, 1),
  ('email', ['type=internet'], Parameters_Exact, 1),
]

A protocol which allows users to specify up to four phone numbers, which may be labelled as personal and/or mobile, would set this property to [ ('tel', ['type=home', 'type=cell'], 0, 4), ].

Studying existing IM protocols shows that in practice protocols allow either a very restricted set of fields (such as MSN, which seems to correspond roughly to the largest example above), or something mapping 1:1 to a large subset of vCard (such as XMPP's XEP-0054).

This property MAY change, without change notification, at any time before the connection moves to status Connection_Status_Connected. It MUST NOT change after that point.

Some XMPP servers, like Google Talk, only allow a small subset of the "vcard-temp" protocol. Whether the user's server is one of these cannot be detected until quite late in the connection process.

Returns
The value of exported property SupportedFields.
Tp::ContactInfoMap Tp::Service::ConnectionInterfaceContactInfoAdaptor::GetContactInfo ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactInfo(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::GetContactInfoContextPtr &context);

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

Request information on several contacts at once. This SHOULD only return cached information, omitting handles for which no information is cached from the returned map.

Parameters
contacts
An array of handles representing contacts.
Returns
A dictionary mapping contact handles to information, whose keys are 
the subset of the requested list of handles for which information 
was cached.
void Tp::Service::ConnectionInterfaceContactInfoAdaptor::RefreshContactInfo ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void refreshContactInfo(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::RefreshContactInfoContextPtr &context);

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

Retrieve information for the given contact, requesting it from the network if an up-to-date version is not cached locally. This method SHOULD return immediately, emitting ContactInfoChanged when the contacts' updated contact information is returned. This method allows a client with cached contact information to update its cache after a number of days.

Parameters
contacts
Integer handles for contacts.
Tp::ContactInfoFieldList Tp::Service::ConnectionInterfaceContactInfoAdaptor::RequestContactInfo ( uint  contact,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestContactInfo(uint contact, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::RequestContactInfoContextPtr &context);

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

Retrieve information for a contact, requesting it from the network if it is not cached locally. This method is appropriate for an explicit user request to show a contact's information; it allows a UI to wait for the contact info to be returned.

Parameters
contact
An integer handle for a contact.
Returns
Information about that contact.
void Tp::Service::ConnectionInterfaceContactInfoAdaptor::SetContactInfo ( const Tp::ContactInfoFieldList contactInfo,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setContactInfo(const Tp::ContactInfoFieldList& contactInfo, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::SetContactInfoContextPtr &context);

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

Set new contact information for this connection, replacing existing information. This method is only suppported if ContactInfoFlags contains Can_Set, and may only be passed fields conforming to SupportedFields.

Parameters
contactInfo
The new information to be set.
void Tp::Service::ConnectionInterfaceContactInfoAdaptor::ContactInfoChanged ( uint  contact,
const Tp::ContactInfoFieldList contactInfo 
)
signal

Represents the exported D-Bus signal ContactInfoChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contactInfoChanged(uint contact, const Tp::ContactInfoFieldList& contactInfo);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
An integer handle for the contact whose info has changed.
contactInfo An array of fields representing information about this contact.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00610_source.html0000644000175100017520000014227112530426257022516 0ustar00kaffeinekaffeine00000000000000 channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel.h
1 
23 #ifndef _TelepathyQt_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-channel.h>
31 
32 #include <TelepathyQt/Constants>
33 #include <TelepathyQt/DBus>
34 #include <TelepathyQt/DBusProxy>
35 #include <TelepathyQt/OptionalInterfaceFactory>
36 #include <TelepathyQt/ReadinessHelper>
37 #include <TelepathyQt/SharedPtr>
38 #include <TelepathyQt/Types>
39 
40 #include <QSet>
41 #include <QSharedDataPointer>
42 #include <QVariantMap>
43 
44 namespace Tp
45 {
46 
47 class Connection;
48 class PendingOperation;
49 class PendingReady;
50 
51 class TP_QT_EXPORT Channel : public StatefulDBusProxy,
52  public OptionalInterfaceFactory<Channel>
53 {
54  Q_OBJECT
55  Q_DISABLE_COPY(Channel)
56 
57 public:
58  static const Feature FeatureCore;
60 
61  static ChannelPtr create(const ConnectionPtr &connection,
62  const QString &objectPath, const QVariantMap &immutableProperties);
63 
64  virtual ~Channel();
65 
66  ConnectionPtr connection() const;
67 
68  QVariantMap immutableProperties() const;
69 
70  QString channelType() const;
71 
72  HandleType targetHandleType() const;
73  uint targetHandle() const;
74  QString targetId() const;
75  ContactPtr targetContact() const;
76 
77  bool isRequested() const;
78  ContactPtr initiatorContact() const;
79 
80  PendingOperation *requestClose();
81  PendingOperation *requestLeave(const QString &message = QString(),
83 
84  ChannelGroupFlags groupFlags() const;
85 
86  bool groupCanAddContacts() const;
87  bool groupCanAddContactsWithMessage() const;
88  bool groupCanAcceptContactsWithMessage() const;
89  PendingOperation *groupAddContacts(const QList<ContactPtr> &contacts,
90  const QString &message = QString());
91  bool groupCanRescindContacts() const;
92  bool groupCanRescindContactsWithMessage() const;
93  bool groupCanRemoveContacts() const;
94  bool groupCanRemoveContactsWithMessage() const;
95  bool groupCanRejectContactsWithMessage() const;
96  bool groupCanDepartWithMessage() const;
97  PendingOperation *groupRemoveContacts(const QList<ContactPtr> &contacts,
98  const QString &message = QString(),
100 
101  Contacts groupContacts(bool includeSelfContact = true) const;
102  Contacts groupLocalPendingContacts(bool includeSelfContact = true) const;
103  Contacts groupRemotePendingContacts(bool includeSelfContact = true) const;
104 
106  {
107  public:
111 
112  GroupMemberChangeDetails &operator=(const GroupMemberChangeDetails &other);
113 
114  bool isValid() const { return mPriv.constData() != 0; }
115 
116  bool hasActor() const;
117  ContactPtr actor() const;
118 
119  bool hasReason() const { return allDetails().contains(QLatin1String("change-reason")); }
120  ChannelGroupChangeReason reason() const { return (ChannelGroupChangeReason) qdbus_cast<uint>(allDetails().value(QLatin1String("change-reason"))); }
121 
122  bool hasMessage() const { return allDetails().contains(QLatin1String("message")); }
123  QString message () const { return qdbus_cast<QString>(allDetails().value(QLatin1String("message"))); }
124 
125  bool hasError() const { return allDetails().contains(QLatin1String("error")); }
126  QString error() const { return qdbus_cast<QString>(allDetails().value(QLatin1String("error"))); }
127 
128  bool hasDebugMessage() const { return allDetails().contains(QLatin1String("debug-message")); }
129  QString debugMessage() const { return qdbus_cast<QString>(allDetails().value(QLatin1String("debug-message"))); }
130 
131  QVariantMap allDetails() const;
132 
133  private:
134  friend class Channel;
135  friend class Contact;
136  friend class ContactManager;
137 
138  TP_QT_NO_EXPORT GroupMemberChangeDetails(const ContactPtr &actor, const QVariantMap &details);
139 
140  struct Private;
141  friend struct Private;
142  QSharedDataPointer<Private> mPriv;
143  };
144 
145  GroupMemberChangeDetails groupLocalPendingContactChangeInfo(const ContactPtr &contact) const;
146  GroupMemberChangeDetails groupSelfContactRemoveInfo() const;
147 
148  bool groupAreHandleOwnersAvailable() const;
149  HandleOwnerMap groupHandleOwners() const;
150 
151  bool groupIsSelfContactTracked() const;
152  ContactPtr groupSelfContact() const;
153 
154  bool isConference() const;
155  Contacts conferenceInitialInviteeContacts() const;
156  QList<ChannelPtr> conferenceChannels() const;
157  QList<ChannelPtr> conferenceInitialChannels() const;
158  QHash<uint, ChannelPtr> conferenceOriginalChannels() const;
159 
160  bool supportsConferenceMerging() const;
161  PendingOperation *conferenceMergeChannel(const ChannelPtr &channel);
162 
163  bool supportsConferenceSplitting() const;
164  PendingOperation *conferenceSplitChannel();
165 
166 Q_SIGNALS:
167  void groupFlagsChanged(Tp::ChannelGroupFlags flags,
169 
170  void groupCanAddContactsChanged(bool canAddContacts);
171  void groupCanRemoveContactsChanged(bool canRemoveContacts);
172  void groupCanRescindContactsChanged(bool canRescindContacts);
173 
174  void groupMembersChanged(
175  const Tp::Contacts &groupMembersAdded,
176  const Tp::Contacts &groupLocalPendingMembersAdded,
177  const Tp::Contacts &groupRemotePendingMembersAdded,
178  const Tp::Contacts &groupMembersRemoved,
180 
181  void groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners,
182  const Tp::UIntList &added, const Tp::UIntList &removed);
183 
184  void groupSelfContactChanged();
185 
186  void conferenceChannelMerged(const Tp::ChannelPtr &channel);
187  void conferenceChannelRemoved(const Tp::ChannelPtr &channel,
189 
190 protected:
191  Channel(const ConnectionPtr &connection,const QString &objectPath,
192  const QVariantMap &immutableProperties, const Feature &coreFeature);
193 
194  Client::ChannelInterface *baseInterface() const;
195 
196  bool groupSelfHandleIsLocalPending() const;
197 
198 protected Q_SLOTS:
199  PendingOperation *groupAddSelfHandle();
200 
201 private Q_SLOTS:
202  TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher);
203  TP_QT_NO_EXPORT void gotChannelType(QDBusPendingCallWatcher *watcher);
204  TP_QT_NO_EXPORT void gotHandle(QDBusPendingCallWatcher *watcher);
205  TP_QT_NO_EXPORT void gotInterfaces(QDBusPendingCallWatcher *watcher);
206  TP_QT_NO_EXPORT void onClosed();
207 
208  TP_QT_NO_EXPORT void onConnectionReady(Tp::PendingOperation *op);
209  TP_QT_NO_EXPORT void onConnectionInvalidated();
210 
211  TP_QT_NO_EXPORT void gotGroupProperties(QDBusPendingCallWatcher *watcher);
212  TP_QT_NO_EXPORT void gotGroupFlags(QDBusPendingCallWatcher *watcher);
213  TP_QT_NO_EXPORT void gotAllMembers(QDBusPendingCallWatcher *watcher);
214  TP_QT_NO_EXPORT void gotLocalPendingMembersWithInfo(QDBusPendingCallWatcher *watcher);
215  TP_QT_NO_EXPORT void gotSelfHandle(QDBusPendingCallWatcher *watcher);
216  TP_QT_NO_EXPORT void gotContacts(Tp::PendingOperation *op);
217 
218  TP_QT_NO_EXPORT void onGroupFlagsChanged(uint added, uint removed);
219  TP_QT_NO_EXPORT void onMembersChanged(const QString &message,
220  const Tp::UIntList &added, const Tp::UIntList &removed,
221  const Tp::UIntList &localPending, const Tp::UIntList &remotePending,
222  uint actor, uint reason);
223  TP_QT_NO_EXPORT void onMembersChangedDetailed(
224  const Tp::UIntList &added, const Tp::UIntList &removed,
225  const Tp::UIntList &localPending, const Tp::UIntList &remotePending,
226  const QVariantMap &details);
227  TP_QT_NO_EXPORT void onHandleOwnersChanged(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed);
228  TP_QT_NO_EXPORT void onSelfHandleChanged(uint selfHandle);
229 
230  TP_QT_NO_EXPORT void gotConferenceProperties(QDBusPendingCallWatcher *watcher);
231  TP_QT_NO_EXPORT void gotConferenceInitialInviteeContacts(Tp::PendingOperation *op);
232  TP_QT_NO_EXPORT void onConferenceChannelMerged(const QDBusObjectPath &channel, uint channelSpecificHandle,
233  const QVariantMap &properties);
234  TP_QT_NO_EXPORT void onConferenceChannelMerged(const QDBusObjectPath &channel);
235  TP_QT_NO_EXPORT void onConferenceChannelRemoved(const QDBusObjectPath &channel, const QVariantMap &details);
236  TP_QT_NO_EXPORT void onConferenceChannelRemoved(const QDBusObjectPath &channel);
237  TP_QT_NO_EXPORT void gotConferenceChannelRemovedActorContact(Tp::PendingOperation *op);
238 
239 private:
240  class PendingLeave;
241  friend class PendingLeave;
242 
243  struct Private;
244  friend struct Private;
245  Private *mPriv;
246 };
247 
248 } // Tp
249 
250 Q_DECLARE_METATYPE(Tp::Channel::GroupMemberChangeDetails);
251 
252 #endif
bool hasDebugMessage() const
Definition: channel.h:128
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
bool isValid() const
Definition: channel.h:114
ChannelGroupChangeReason
Definition: build/TelepathyQt/_gen/constants.h:3234
ChannelGroupChangeReason reason() const
Definition: channel.h:120
QString debugMessage() const
Definition: channel.h:129
static const Feature FeatureCore
Definition: channel.h:58
QString error() const
Definition: channel.h:126
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
The Channel::GroupMemberChangeDetails class represents the details of a group membership change...
Definition: channel.h:105
bool hasMessage() const
Definition: channel.h:122
Definition: cli-channel.h:44
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:1668
Definition: build/TelepathyQt/_gen/types.h:101
bool hasReason() const
Definition: channel.h:119
QString message() const
Definition: channel.h:123
The Contact class represents a Telepathy contact.
Definition: contact.h:51
bool hasError() const
Definition: channel.h:125
QFlags< ChannelGroupFlag > ChannelGroupFlags
Definition: build/TelepathyQt/_gen/constants.h:1043
static const Feature FeatureConferenceInitialInviteeContacts
Definition: channel.h:59
Definition: build/TelepathyQt/_gen/constants.h:3255
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/index.qhp0000644000175100017520001324037312530426260021262 0ustar00kaffeinekaffeine00000000000000 org.freedesktop.Telepathy.Qt TelepathyQt-0.9.6.1 doxygen
tabs.css tab_a.png tab_b.png tab_h.png tab_s.png nav_h.png nav_f.png bc_s.png doxygen.png closed.png open.png bdwn.png sync_on.png sync_off.png ftv2blank.png ftv2doc.png ftv2folderclosed.png ftv2folderopen.png ftv2ns.png ftv2mo.png ftv2cl.png ftv2lastnode.png ftv2link.png ftv2mlastnode.png ftv2mnode.png ftv2node.png ftv2plastnode.png ftv2pnode.png ftv2vertline.png ftv2splitbar.png doxygen.css a00546_source.html a00548_source.html a00550_source.html a00552_source.html a00554_source.html a00555_source.html a00557_source.html a00559_source.html a00561_source.html a00563_source.html a00565_source.html a00568_source.html a00570_source.html a00572_source.html a00574_source.html a00576_source.html a00578_source.html a00580_source.html a00582_source.html a00584_source.html a00586_source.html a00588_source.html a00590_source.html a00592_source.html a00594_source.html a00596_source.html a00597_source.html a00599_source.html a00601_source.html a00603_source.html a00605_source.html a00607_source.html a00610_source.html a00611_source.html a00612_source.html a00613_source.html a00614_source.html a00615_source.html a00616_source.html a00617_source.html a00618_source.html a00619_source.html a00620_source.html a00621_source.html a00622_source.html a00623_source.html a00624_source.html a00625_source.html a00626_source.html a00627_source.html a00628_source.html a00629_source.html a00630_source.html a00631_source.html a00632_source.html a00633_source.html a00634_source.html a00635_source.html a00636_source.html a00637_source.html a00638_source.html a00639_source.html a00640_source.html a00641_source.html a00642_source.html a00643_source.html a00644_source.html a00645_source.html a00646_source.html a00647_source.html a00648_source.html a00649_source.html a00651_source.html a00653_source.html a00655_source.html a00657_source.html a00658_source.html a00659_source.html a00661_source.html a00663_source.html a00664_source.html a00665_source.html a00667_source.html a00669_source.html a00672_source.html a00674_source.html a00676_source.html a00678_source.html a00680_source.html a00682_source.html a00684_source.html a00686_source.html a00688_source.html a00690_source.html a00692_source.html a00694_source.html a00696_source.html a00699_source.html a00701_source.html a00703_source.html a00705_source.html a00707_source.html a00708_source.html a00710_source.html a00712_source.html a00713_source.html a00714_source.html a00717_source.html a00719_source.html a00721_source.html a00723_source.html a00725_source.html a00727_source.html a00730_source.html a00732_source.html a00734_source.html a00736_source.html a00738_source.html a00740_source.html a00742_source.html a00744_source.html a00746_source.html a00748_source.html a00750_source.html a00752_source.html a00754_source.html a00756_source.html a00758_source.html a00760_source.html a00762_source.html a00764_source.html a00766_source.html a00768_source.html a00770_source.html a00772_source.html a00774_source.html a00776_source.html a00778_source.html a00780_source.html a00782_source.html a00784_source.html a00786_source.html a00788_source.html a00790_source.html a00792_source.html a00794_source.html a00796_source.html a00798_source.html a00800_source.html a00802_source.html a00804_source.html a00806_source.html a00808_source.html a00810_source.html a00812_source.html a00814_source.html a00816_source.html a00817_source.html a00819_source.html a00821_source.html a00823_source.html a00824_source.html a00826_source.html a00828_source.html a00830_source.html a00832_source.html a00834_source.html a00836_source.html a00838_source.html a00840_source.html a00842_source.html a00844_source.html a00846_source.html a00848_source.html a00850_source.html a00852_source.html a00853_source.html a00855_source.html a00856_source.html a00858_source.html a00002.html a00004.html a00006.html a00008.html a00010.html a00012.html a00014.html a00016.html a00018.html a00020.html a00022.html a00024.html a00026.html a00028.html a00030.html a00032.html a00034.html a00036.html a00038.html a00040.html a00042.html a00044.html a00046.html a00048.html a00050.html a00052.html a00054.html a00056.html a00058.html a00902.html a00904.html a00870.html a00871.html a00872.html a00873.html a00874.html a00875.html a00876.html a00877.html a00878.html a00879.html a00880.html a00881.html a00882.html a00883.html a00884.html a00885.html a00886.html a00887.html a00888.html a00889.html a00890.html a00891.html a00892.html a00893.html a00894.html a00895.html a00896.html a00897.html a00898.html a00899.html a00900.html a00860.html a00060.html a00906.html a00063.html a00907.html a00066.html a00908.html a00418.html a00909.html a00064.html a00910.html a00065.html a00911.html a00163.html a00912.html a00372.html a00913.html a00070.html a00914.html a00075.html a00915.html a00080.html a00916.html a00082.html a00917.html a00083.html a00918.html a00073.html a00919.html a00087.html a00920.html a00090.html a00921.html a00091.html a00922.html a00061.html a00923.html a00094.html a00924.html a00096.html a00925.html a00095.html a00926.html a00097.html a00927.html a00062.html a00928.html a00114.html a00929.html a00105.html a00930.html a00108.html a00931.html a00111.html a00932.html a00099.html a00933.html a00109.html a00934.html a00110.html a00935.html a00100.html a00936.html a00102.html a00937.html a00107.html a00938.html a00106.html a00939.html a00098.html a00940.html a00103.html a00941.html a00104.html a00942.html a00113.html a00943.html a00101.html a00944.html a00112.html a00945.html a00122.html a00946.html a00115.html a00947.html a00067.html a00948.html a00123.html a00949.html a00121.html a00950.html a00124.html a00951.html a00120.html a00952.html a00119.html a00953.html a00116.html a00954.html a00117.html a00955.html a00118.html a00956.html a00127.html a00957.html a00071.html a00958.html a00128.html a00959.html a00129.html a00960.html a00130.html a00961.html a00140.html a00962.html a00141.html a00963.html a00429.html a00964.html a00156.html a00965.html a00069.html a00966.html a00126.html a00967.html a00093.html a00968.html a00357.html a00969.html a00132.html a00970.html a00358.html a00971.html a00133.html a00972.html a00359.html a00973.html a00134.html a00974.html a00360.html a00975.html a00135.html a00976.html a00361.html a00977.html a00136.html a00978.html a00362.html a00979.html a00137.html a00980.html a00363.html a00981.html a00138.html a00982.html a00364.html a00983.html a00139.html a00984.html a00164.html a00985.html a00169.html a00986.html a00167.html a00987.html a00175.html a00988.html a00176.html a00989.html a00180.html a00990.html a00182.html a00991.html a00229.html a00992.html a00230.html a00993.html a00171.html a00994.html a00367.html a00995.html a00260.html a00996.html a00265.html a00997.html a00266.html a00998.html a00308.html a00999.html a00312.html a01000.html a00309.html a01001.html a00263.html a01002.html a00349.html a01003.html a00315.html a01004.html a00320.html a01005.html a00324.html a01006.html a00326.html a01007.html a00328.html a01008.html a00502.html a01009.html a00313.html a01010.html a00377.html a01011.html a00337.html a01012.html a00338.html a01013.html a00340.html a01014.html a00339.html a01015.html a00522.html a01016.html a00521.html a01017.html a00341.html a01018.html a00068.html a01019.html a00342.html a01020.html a00347.html a01021.html a00350.html a01022.html a00351.html a01023.html a00354.html a01024.html a00353.html a01025.html a00355.html a01026.html a00356.html a01027.html a00125.html a00477.html a01028.html a00396.html a01029.html a00478.html a01030.html a00397.html a01031.html a00479.html a01032.html a00398.html a01033.html a00480.html a01034.html a00399.html a01035.html a00481.html a01036.html a00400.html a01037.html a00482.html a01038.html a00401.html a01039.html a00483.html a01040.html a00402.html a01041.html a00484.html a01042.html a00403.html a01043.html a00365.html a01044.html a00366.html a01045.html a00368.html a01046.html a00374.html a01047.html a00375.html a01048.html a00376.html a01049.html a00383.html a01050.html a00405.html a01051.html a00406.html a01052.html a00404.html a01053.html a00488.html a01054.html a00348.html a01055.html a00410.html a01056.html a00414.html a01057.html a00415.html a01058.html a00419.html a01059.html a00420.html a01060.html a00421.html a01061.html a00422.html a01062.html a00423.html a01063.html a00428.html a01064.html a00430.html a01065.html a00433.html a01066.html a00432.html a01067.html a00435.html a01068.html a00436.html a01069.html a00437.html a01070.html a00438.html a01071.html a00439.html a01072.html a00440.html a01073.html a00442.html a01074.html a00443.html a01075.html a00444.html a01076.html a00445.html a01077.html a00447.html a01078.html a00449.html a01079.html a00448.html a01080.html a00453.html a01081.html a00452.html a01082.html a00455.html a01083.html a00457.html a01084.html a00458.html a01085.html a00460.html a01086.html a00459.html a01087.html a00424.html a01088.html a00456.html a01089.html a00467.html a01090.html a00475.html a01091.html a00486.html a01092.html a00378.html a01093.html a00487.html a01094.html a00490.html a01095.html a00493.html a01096.html a00494.html a01097.html a00497.html a01098.html a00503.html a01099.html a00506.html a01100.html a00544.html a01101.html a00489.html a01102.html a00507.html a01103.html a00509.html a01104.html a00450.html a01105.html a00441.html a01106.html a00454.html a01107.html a00434.html a01108.html a00513.html a01109.html a00514.html a01110.html a00528.html a01111.html a00529.html a01112.html a00534.html a01113.html a00537.html a01114.html a00530.html a01115.html a00425.html a01116.html a00491.html a01117.html a00538.html a01118.html a00446.html a01119.html a00527.html a01120.html a00526.html a01121.html a00535.html a01122.html a00539.html a01123.html a00131.html a01124.html a00417.html a01125.html a00541.html a01126.html a00072.html a01127.html a00084.html a01128.html a00085.html a01129.html a00086.html a01130.html a00089.html a01131.html a00092.html a01132.html a00154.html a01133.html a00155.html a01134.html a00160.html a01135.html a00161.html a01136.html a00165.html a01137.html a00166.html a01138.html a00168.html a01139.html a00170.html a01140.html a00173.html a01141.html a00174.html a01142.html a00177.html a01143.html a00183.html a01144.html a00228.html a01145.html a00254.html a01146.html a00262.html a01147.html a00314.html a01148.html a00317.html a01149.html a00318.html a01150.html a00321.html a01151.html a00323.html a01152.html a00325.html a01153.html a00332.html a01154.html a00329.html a01155.html a00331.html a01156.html a00334.html a01157.html a00335.html a01158.html a00343.html a01159.html a00344.html a01160.html a00346.html a01161.html a00352.html a01162.html a00373.html a01163.html a00369.html a01164.html a00370.html a01165.html a00381.html a01166.html a00382.html a01167.html a00384.html a01168.html a00385.html a01169.html a00387.html a01170.html a00388.html a01171.html a00389.html a01172.html a00394.html a01173.html a00395.html a01174.html a00407.html a01175.html a00408.html a01176.html a00409.html a01177.html a00411.html a01178.html a00412.html a01179.html a00416.html a01180.html a00426.html a01181.html a00451.html a01182.html a00463.html a01183.html a00464.html a01184.html a00465.html a01185.html a00476.html a01186.html a00485.html a01187.html a00498.html a01188.html a00501.html a01189.html a00492.html a01190.html a00495.html a01191.html a00496.html a01192.html a00504.html a01193.html a00510.html a01194.html a00511.html a01195.html a00515.html a01196.html a00516.html a01197.html a00517.html a01198.html a00518.html a01199.html a00519.html a01200.html a00520.html a01201.html a00525.html a01202.html a00531.html a01203.html a00532.html a01204.html a00533.html a01205.html a00536.html a01206.html a00540.html a01207.html a00542.html a01208.html a00543.html a01209.html a00162.html a01210.html a00261.html a01211.html a00316.html a01212.html a00322.html a01213.html a00330.html a01214.html a00333.html a01215.html a00371.html a01216.html a00380.html a01217.html a00386.html a01218.html a00391.html a01219.html a00392.html a01220.html a00413.html a01221.html a00500.html a01222.html a00505.html a01223.html a00508.html a01224.html a00512.html a01225.html a00523.html a01226.html a00319.html a01227.html a00327.html a01228.html a00499.html a01229.html a00524.html a01230.html a00074.html a00864.html a00081.html a01231.html a00076.html a01232.html a00077.html a01233.html a00078.html a01234.html a00079.html a01235.html a00149.html a01236.html a00150.html a01237.html a00151.html a01238.html a00152.html a01239.html a00143.html a01240.html a00144.html a01241.html a00146.html a01242.html a00147.html a01243.html a00148.html a01244.html a00157.html a01245.html a00158.html a01246.html a00159.html a01247.html a00181.html a01248.html a00178.html a01249.html a00179.html a01250.html a00231.html a01251.html a00184.html a01252.html a00186.html a01253.html a00188.html a01254.html a00190.html a01255.html a00192.html a01256.html a00194.html a01257.html a00198.html a01258.html a00196.html a01259.html a00200.html a01260.html a00202.html a01261.html a00204.html a01262.html a00206.html a01263.html a00209.html a01264.html a00211.html a01265.html a00214.html a01266.html a00215.html a01267.html a00217.html a01268.html a00223.html a01269.html a00219.html a01270.html a00221.html a01271.html a00226.html a01272.html a00227.html a01273.html a00233.html a01274.html a00234.html a01275.html a00236.html a01276.html a00238.html a01277.html a00240.html a01278.html a00242.html a01279.html a00244.html a01280.html a00246.html a01281.html a00250.html a01282.html a00248.html a01283.html a00252.html a01284.html a00253.html a01285.html a00257.html a01286.html a00255.html a01287.html a00256.html a01288.html a00258.html a01289.html a00259.html a01290.html a00311.html a01291.html a00468.html a01292.html a00470.html a01293.html a00472.html a01294.html a00474.html a01295.html a00267.html a01296.html a00269.html a01297.html a00271.html a01298.html a00273.html a01299.html a00275.html a01300.html a00277.html a01301.html a00278.html a01302.html a00280.html a01303.html a00282.html a01304.html a00284.html a01305.html a00286.html a01306.html a00288.html a01307.html a00290.html a01308.html a00292.html a01309.html a00294.html a01310.html a00296.html a01311.html a00298.html a01312.html a00300.html a01313.html a00301.html a01314.html a00303.html a01315.html a00305.html a01316.html a00307.html a01317.html a00345.html a01318.html a00390.html a01319.html a00393.html a01320.html a00462.html a01321.html a00088.html a01322.html a00865.html a00336.html a01323.html a00379.html a01324.html a00427.html a01325.html a00461.html a01326.html a00866.html a00431.html a01327.html a00867.html a00868.html a00869.html a00142.html a01328.html a00145.html a01329.html a00153.html a01330.html a00172.html a01331.html a00185.html a01332.html a00187.html a01333.html a00189.html a01334.html a00191.html a01335.html a00193.html a01336.html a00197.html a01337.html a00195.html a01338.html a00199.html a01339.html a00201.html a01340.html a00203.html a01341.html a00205.html a01342.html a00207.html a01343.html a00208.html a01344.html a00210.html a01345.html a00212.html a01346.html a00213.html a01347.html a00216.html a01348.html a00222.html a01349.html a00218.html a01350.html a00220.html a01351.html a00224.html a01352.html a00225.html a01353.html a00232.html a01354.html a00235.html a01355.html a00237.html a01356.html a00239.html a01357.html a00241.html a01358.html a00243.html a01359.html a00245.html a01360.html a00249.html a01361.html a00247.html a01362.html a00251.html a01363.html a00310.html a01364.html a00466.html a01365.html a00469.html a01366.html a00471.html a01367.html a00473.html a01368.html a00264.html a01369.html a00268.html a01370.html a00270.html a01371.html a00272.html a01372.html a00274.html a01373.html a00276.html a01374.html a00279.html a01375.html a00281.html a01376.html a00283.html a01377.html a00285.html a01378.html a00287.html a01379.html a00289.html a01380.html a00291.html a01381.html a00293.html a01382.html a00295.html a01383.html a00297.html a01384.html a00299.html a01385.html a00302.html a01386.html a00304.html a01387.html a00306.html a01388.html dir_da638a168252e2c60116c394abd6721a.html dir_873b20b8174f0d08bad0230936669cc5.html dir_a7efd3693e0e01cb2055bca70ce6963d.html dir_6a0ad83b73160d92798e0df0d91b99f2.html dir_d31e7bccdbb8c214182f9922ec6f9b9e.html index.html pages.html modules.html namespaces.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_func.html namespacemembers_vars.html namespacemembers_type.html namespacemembers_enum.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html namespacemembers_eval.html annotated.html classes.html hierarchy.html functions.html functions_0x62.html functions_0x63.html functions_0x64.html functions_0x65.html functions_0x66.html functions_0x67.html functions_0x68.html functions_0x69.html functions_0x6b.html functions_0x6c.html functions_0x6d.html functions_0x6e.html functions_0x6f.html functions_0x70.html functions_0x71.html functions_0x72.html functions_0x73.html functions_0x74.html functions_0x75.html functions_0x76.html functions_0x77.html functions_0x78.html functions_0x79.html functions_0x7e.html functions_func.html functions_func_0x62.html functions_func_0x63.html functions_func_0x64.html functions_func_0x65.html functions_func_0x66.html functions_func_0x67.html functions_func_0x68.html functions_func_0x69.html functions_func_0x6b.html functions_func_0x6c.html functions_func_0x6d.html functions_func_0x6e.html functions_func_0x6f.html functions_func_0x70.html functions_func_0x71.html functions_func_0x72.html functions_func_0x73.html functions_func_0x74.html functions_func_0x75.html functions_func_0x76.html functions_func_0x77.html functions_func_0x78.html functions_func_0x79.html functions_func_0x7e.html functions_vars.html functions_vars_0x63.html functions_vars_0x64.html functions_vars_0x65.html functions_vars_0x66.html functions_vars_0x67.html functions_vars_0x68.html functions_vars_0x69.html functions_vars_0x6b.html functions_vars_0x6c.html functions_vars_0x6d.html functions_vars_0x6e.html functions_vars_0x6f.html functions_vars_0x70.html functions_vars_0x72.html functions_vars_0x73.html functions_vars_0x74.html functions_vars_0x75.html functions_vars_0x76.html functions_vars_0x77.html functions_type.html functions_enum.html functions_eval.html functions_prop.html functions_rela.html telepathy-qt-0.9.6.1/doc/html/a00348.html0000644000175100017520000005054112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::ReceivedMessage::DeliveryDetails Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ReceivedMessage::DeliveryDetails Class Reference

The ReceivedMessage::DeliveryDetails class represents the details of a delivery report. More...

#include <TelepathyQt/ReceivedMessage>

Public Member Functions

 DeliveryDetails ()
 
 DeliveryDetails (const DeliveryDetails &other)
 
 ~DeliveryDetails ()
 
DeliveryDetailsoperator= (const DeliveryDetails &other)
 
bool isValid () const
 
DeliveryStatus status () const
 
bool hasOriginalToken () const
 
QString originalToken () const
 
bool isError () const
 
ChannelTextSendError error () const
 
bool hasDebugMessage () const
 
QString debugMessage () const
 
QString dbusError () const
 
bool hasEchoedMessage () const
 
Message echoedMessage () const
 

Detailed Description

The ReceivedMessage::DeliveryDetails class represents the details of a delivery report.

Constructor & Destructor Documentation

Tp::ReceivedMessage::DeliveryDetails::DeliveryDetails ( )

Default constructor.

Tp::ReceivedMessage::DeliveryDetails::DeliveryDetails ( const DeliveryDetails other)

Copy constructor.

Tp::ReceivedMessage::DeliveryDetails::~DeliveryDetails ( )

Class destructor.

Member Function Documentation

ReceivedMessage::DeliveryDetails & Tp::ReceivedMessage::DeliveryDetails::operator= ( const DeliveryDetails other)

Assignment operator.

bool Tp::ReceivedMessage::DeliveryDetails::isValid ( ) const
inline
DeliveryStatus Tp::ReceivedMessage::DeliveryDetails::status ( ) const

Return the delivery status of a message.

Returns
The delivery status as DeliveryStatus.
bool Tp::ReceivedMessage::DeliveryDetails::hasOriginalToken ( ) const

Return whether this delivery report contains an identifier for the message to which it refers.

Returns
true if an original message token is known, false otherwise.
See Also
originalToken()
QString Tp::ReceivedMessage::DeliveryDetails::originalToken ( ) const

Return an identifier for the message to which this delivery report refers, or an empty string if hasOriginalToken() returns false.

Clients may match this against the token produced by the TextChannel::send() method and TextChannel::messageSent() signal. A status report with no token could match any sent message, and a sent message with an empty token could match any status report. If multiple sent messages match, clients should use some reasonable heuristic.

Returns
The message token if hasOriginalToken() returns true, an empty string otherwise.
See Also
hasOriginalToken().
bool Tp::ReceivedMessage::DeliveryDetails::isError ( ) const

Return whether the delivery of the message this delivery report refers to, failed.

Returns
true if the message delivery failed, false otherwise.
See Also
error()
ChannelTextSendError Tp::ReceivedMessage::DeliveryDetails::error ( ) const

Return the reason for the delivery failure if known.

Returns
The reason as ChannelTextSendError.
See Also
isError()
bool Tp::ReceivedMessage::DeliveryDetails::hasDebugMessage ( ) const

Return whether this delivery report contains a debugging information on why the message it refers to could not be delivered.

Returns
true if a debugging information is provided, false otherwise.
See Also
debugMessage()
QString Tp::ReceivedMessage::DeliveryDetails::debugMessage ( ) const

Return the debugging information on why the message this delivery report refers to could not be delivered.

Returns
The debug string.
See Also
hasDebugMessage()
QString Tp::ReceivedMessage::DeliveryDetails::dbusError ( ) const

Return the reason for the delivery failure if known, specified as a (possibly implementation-specific) D-Bus error.

Returns
The D-Bus error string representing the error.
bool Tp::ReceivedMessage::DeliveryDetails::hasEchoedMessage ( ) const

Return whether the message content for the message this delivery report refers to is known.

Returns
true if the original message content is known, false otherwise.
See Also
echoedMessage()
Message Tp::ReceivedMessage::DeliveryDetails::echoedMessage ( ) const

Return the Message object for the message this delivery report refers to, omitted if the message is unknown.

Rationale:
Some protocols, like XMPP, echo the failing message back to the sender. This is sometimes the only way to match it against the sent message, so we include it here.
Returns
The Message object, or an empty Message object if hasEchoedMessage() returns false.
See Also
hasEchoedMessage()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01309.html0000644000175100017520000003276412530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactListInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceContactListInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AuthorizePublication(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
ConnectionInterfaceContactListInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactListInterface
ConnectionInterfaceContactListInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactListInterface
ConnectionInterfaceContactListInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceContactListInterface
ConnectionInterfaceContactListInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceContactListInterfaceexplicit
ConnectionInterfaceContactListInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceContactListInterface
ContactListStateChanged(uint contactListState)Tp::Client::ConnectionInterfaceContactListInterfacesignal
ContactsChanged(const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals)Tp::Client::ConnectionInterfaceContactListInterfacesignal
ContactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)Tp::Client::ConnectionInterfaceContactListInterfacesignal
Download(int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
GetContactListAttributes(const QStringList &interfaces, bool hold, int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceContactListInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoveContacts(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
requestAllProperties() const Tp::Client::ConnectionInterfaceContactListInterfaceinline
requestPropertyCanChangeContactList() const Tp::Client::ConnectionInterfaceContactListInterfaceinline
requestPropertyContactListPersists() const Tp::Client::ConnectionInterfaceContactListInterfaceinline
requestPropertyContactListState() const Tp::Client::ConnectionInterfaceContactListInterfaceinline
requestPropertyDownloadAtConnection() const Tp::Client::ConnectionInterfaceContactListInterfaceinline
requestPropertyRequestUsesMessage() const Tp::Client::ConnectionInterfaceContactListInterfaceinline
RequestSubscription(const Tp::UIntList &contacts, const QString &message, int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceContactListInterfaceinlinestatic
Unpublish(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
Unsubscribe(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceContactListInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01063.html0000644000175100017520000012025212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::OutgoingStreamTubeChannel Member List

This is the complete list of members for Tp::OutgoingStreamTubeChannel, including all inherited members.

accessControl() const Tp::StreamTubeChannelprotected
actualFeatures() const Tp::ReadyObjectvirtual
addConnection(uint connection)Tp::StreamTubeChannelprotected
addressType() const Tp::StreamTubeChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
connectionClosed(uint connectionId, const QString &errorName, const QString &errorMessage)Tp::StreamTubeChannelsignal
connections() const Tp::StreamTubeChannel
connectionsForCredentials() const Tp::OutgoingStreamTubeChannel
connectionsForSourceAddresses() const Tp::OutgoingStreamTubeChannel
contactsForConnections() const Tp::OutgoingStreamTubeChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::OutgoingStreamTubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureConnectionMonitoringTp::StreamTubeChannelstatic
FeatureCoreTp::OutgoingStreamTubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
ipAddress() const Tp::StreamTubeChannel
isConference() const Tp::Channel
isDroppingConnections() const Tp::StreamTubeChannelprotected
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
localAddress() const Tp::StreamTubeChannel
missingFeatures() const Tp::ReadyObjectvirtual
newConnection(uint connectionId)Tp::StreamTubeChannelsignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
offerTcpSocket(const QHostAddress &address, quint16 port, const QVariantMap &parameters=QVariantMap())Tp::OutgoingStreamTubeChannel
offerTcpSocket(const QTcpServer *server, const QVariantMap &parameters=QVariantMap())Tp::OutgoingStreamTubeChannel
offerUnixSocket(const QString &socketAddress, const QVariantMap &parameters=QVariantMap(), bool requireCredentials=false)Tp::OutgoingStreamTubeChannel
offerUnixSocket(const QLocalServer *server, const QVariantMap &parameters=QVariantMap(), bool requireCredentials=false)Tp::OutgoingStreamTubeChannel
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
OutgoingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=OutgoingStreamTubeChannel::FeatureCore)Tp::OutgoingStreamTubeChannelprotected
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
removeConnection(uint connection, const QString &error, const QString &message)Tp::StreamTubeChannelprotected
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
service() const Tp::StreamTubeChannel
setAccessControl(SocketAccessControl accessControl)Tp::StreamTubeChannelprotected
setAddressType(SocketAddressType type)Tp::StreamTubeChannelprotected
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setIpAddress(const QPair< QHostAddress, quint16 > &address)Tp::StreamTubeChannelprotected
setLocalAddress(const QString &address)Tp::StreamTubeChannelprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
StreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore)Tp::StreamTubeChannelprotected
supportsAbstractUnixSocketsOnLocalhost() const Tp::StreamTubeChannel
supportsAbstractUnixSocketsWithCredentials() const Tp::StreamTubeChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsIPv4SocketsOnLocalhost() const Tp::StreamTubeChannel
supportsIPv4SocketsWithSpecifiedAddress() const Tp::StreamTubeChannel
supportsIPv6SocketsOnLocalhost() const Tp::StreamTubeChannel
supportsIPv6SocketsWithSpecifiedAddress() const Tp::StreamTubeChannel
supportsUnixSocketsOnLocalhost() const Tp::StreamTubeChannel
supportsUnixSocketsWithCredentials() const Tp::StreamTubeChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~OutgoingStreamTubeChannel()Tp::OutgoingStreamTubeChannelvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~StreamTubeChannel()Tp::StreamTubeChannelvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00607_source.html0000644000175100017520000005732412530426257022530 0ustar00kaffeinekaffeine00000000000000 channel-request.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel-request.h
1 
23 #ifndef _TelepathyQt_channel_request_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_request_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-channel-request.h>
31 
32 #include <TelepathyQt/Constants>
33 #include <TelepathyQt/DBus>
34 #include <TelepathyQt/DBusProxy>
35 #include <TelepathyQt/Feature>
36 #include <TelepathyQt/OptionalInterfaceFactory>
37 #include <TelepathyQt/ReadinessHelper>
38 #include <TelepathyQt/Types>
39 #include <TelepathyQt/SharedPtr>
40 
41 #include <QSharedDataPointer>
42 #include <QString>
43 #include <QStringList>
44 #include <QVariantMap>
45 
46 namespace Tp
47 {
48 
49 class ChannelRequestHints;
50 class PendingOperation;
51 
52 class TP_QT_EXPORT ChannelRequest : public StatefulDBusProxy,
53  public OptionalInterfaceFactory<ChannelRequest>
54 {
55  Q_OBJECT
56  Q_DISABLE_COPY(ChannelRequest)
57 
58 public:
59  static const Feature FeatureCore;
60 
61  static ChannelRequestPtr create(const QDBusConnection &bus,
62  const QString &objectPath, const QVariantMap &immutableProperties,
63  const AccountFactoryConstPtr &accountFactory,
64  const ConnectionFactoryConstPtr &connectionFactory,
65  const ChannelFactoryConstPtr &channelFactory,
66  const ContactFactoryConstPtr &contactFactory);
67 
68  static ChannelRequestPtr create(const AccountPtr &account,
69  const QString &objectPath, const QVariantMap &immutableProperties);
70 
71  virtual ~ChannelRequest();
72 
73  AccountPtr account() const;
74  QDateTime userActionTime() const;
75  QString preferredHandler() const;
76  QualifiedPropertyValueMapList requests() const;
77  ChannelRequestHints hints() const;
78 
79  QVariantMap immutableProperties() const;
80 
81  PendingOperation *cancel();
82 
83  ChannelPtr channel() const;
84 
85 Q_SIGNALS:
86  void failed(const QString &errorName, const QString &errorMessage);
87  void succeeded(const Tp::ChannelPtr &channel);
88 
89 protected:
90  ChannelRequest(const QDBusConnection &bus,
91  const QString &objectPath, const QVariantMap &immutableProperties,
92  const AccountFactoryConstPtr &accountFactory,
93  const ConnectionFactoryConstPtr &connectionFactory,
94  const ChannelFactoryConstPtr &channelFactory,
95  const ContactFactoryConstPtr &contactFactory);
96 
97  ChannelRequest(const AccountPtr &account,
98  const QString &objectPath, const QVariantMap &immutableProperties);
99 
100  Client::ChannelRequestInterface *baseInterface() const;
101 
102 private Q_SLOTS:
103  TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher);
104  TP_QT_NO_EXPORT void onAccountReady(Tp::PendingOperation *op);
105 
106  TP_QT_NO_EXPORT void onLegacySucceeded();
107  TP_QT_NO_EXPORT void onSucceededWithChannel(const QDBusObjectPath &connPath, const QVariantMap &connProps,
108  const QDBusObjectPath &chanPath, const QVariantMap &chanProps);
109  TP_QT_NO_EXPORT void onChanBuilt(Tp::PendingOperation *op);
110 
111 private:
112  friend class PendingChannelRequest;
113 
114  PendingOperation *proceed();
115 
116  struct Private;
117  friend struct Private;
118  Private *mPriv;
119 };
120 
121 class TP_QT_EXPORT ChannelRequestHints
122 {
123 public:
125  ChannelRequestHints(const QVariantMap &hints);
128 
129  ChannelRequestHints &operator=(const ChannelRequestHints &other);
130 
131  bool isValid() const;
132 
133  bool hasHint(const QString &reversedDomain, const QString &localName) const;
134  QVariant hint(const QString &reversedDomain, const QString &localName) const;
135  void setHint(const QString &reversedDomain, const QString &localName, const QVariant &value);
136 
137  QVariantMap allHints() const;
138 
139 private:
140  struct Private;
141  friend struct Private;
142  QSharedDataPointer<Private> mPriv;
143 };
144 
145 } // Tp
146 
147 Q_DECLARE_METATYPE(Tp::ChannelRequestHints);
148 
149 #endif
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
static const Feature FeatureCore
Definition: channel-request.h:59
The ChannelRequest class represents a Telepathy channel request.
Definition: channel-request.h:52
QList< QualifiedPropertyValueMap > QualifiedPropertyValueMapList
Definition: build/TelepathyQt/_gen/types.h:2417
The PendingChannelRequest class represents the parameters of and the reply to an asynchronous Channel...
Definition: pending-channel-request.h:46
Definition: cli-channel-request.h:44
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00908.html0000644000175100017520000001144512530426257021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientObserver Member List

This is the complete list of members for Tp::AbstractClientObserver, including all inherited members.

AbstractClient()Tp::AbstractClient
AbstractClientObserver(const ChannelClassSpecList &channelFilter, bool shouldRecover=false)Tp::AbstractClientObserverprotected
isRegistered() const Tp::AbstractClient
observeChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList< ChannelRequestPtr > &requestsSatisfied, const ObserverInfo &observerInfo)=0Tp::AbstractClientObserverpure virtual
observerFilter() const Tp::AbstractClientObserver
RefCounted()Tp::RefCountedinline
shouldRecover() const Tp::AbstractClientObserver
~AbstractClient()Tp::AbstractClientvirtual
~AbstractClientObserver()Tp::AbstractClientObservervirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00407.html0000644000175100017520000001330212530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::MessagePart Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessagePart Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 MessagePart ()
 
 MessagePart (const QMap< QString, QDBusVariant > &a)
 
MessagePartoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::MessagePart::MessagePart ( )
inline
Tp::MessagePart::MessagePart ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

MessagePart& Tp::MessagePart::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01378.html0000644000175100017520000001014412530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ContactCapabilitiesChanged(const Tp::ContactCapabilitiesMap &caps)Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
GetContactCapabilities(const Tp::UIntList &handles, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptorslot
UpdateCapabilities(const Tp::HandlerCapabilitiesList &handlerCapabilities, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00161.html0000644000175100017520000001706412530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::CandidateInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CandidateInfo Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 CandidateInfo ()
 
 CandidateInfo (const QMap< QString, QDBusVariant > &a)
 
CandidateInfooperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

Extra information about the candidate. Allowed and mandatory keys depend on the transport protocol used. The following keys are commenly used:

type - u
The type of candidate (Call_Stream_Candidate_Type)
foundation - s
The foundation of this candidate
protocol - u
Underlying protocol of the candidate (Media_Stream_Base_Proto)
priority - u
Priority of the candidate (should be a number between 0 and 65535). Most ICE implementations will prefer the highest priority candidate pair that manages to connect. For backwards compatibility with non-ICE SIP clients, the lowest priority candidate may be sent as a raw UDP fallback candidate. It is recommended that a relay candidate is used as the lowest priority candidate if possible. If both IPv4 and IPv6 raw udp fallback candidates are available, they should be set to the same priority and advertised to the CM at the same time. The CM will decide which to advertise to the remote end.
base-ip - s
The underlying Host address where media sent to this (non-host-type) candidate will eventually arrive.
base-port - u
The underlying Host port where media sent to this (non-host-type) candidate will eventually arrive.
username - s
Username of this candidate (only if credentials are per candidate)
password - s
Password of this candidate (only if credentials are per candidate)
ttl - u
The TTL mandated for RTP/RTCP packets sent to a multicast group (only valid for Multicast Streams)

Constructor & Destructor Documentation

Tp::CandidateInfo::CandidateInfo ( )
inline
Tp::CandidateInfo::CandidateInfo ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

CandidateInfo& Tp::CandidateInfo::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00603_source.html0000644000175100017520000000632412530426257022516 0ustar00kaffeinekaffeine00000000000000 channel-dispatcher.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel-dispatcher.h
1 
23 #ifndef _TelepathyQt_channel_dispatcher_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_dispatcher_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-channel-dispatcher.h>
31 
32 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01122.html0000644000175100017520000010734612530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::TextChannel Member List

This is the complete list of members for Tp::TextChannel, including all inherited members.

acknowledge(const QList< ReceivedMessage > &messages)Tp::TextChannelslot
actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
canInviteContacts() const Tp::TextChannel
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
chatState(const ContactPtr &contact) const Tp::TextChannel
chatStateChanged(const Tp::ContactPtr &contact, Tp::ChannelChatState state)Tp::TextChannelsignal
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::TextChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
deliveryReportingSupport() const Tp::TextChannel
FeatureChatStateTp::TextChannelstatic
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::TextChannelstatic
FeatureMessageCapabilitiesTp::TextChannelstatic
FeatureMessageQueueTp::TextChannelstatic
FeatureMessageSentSignalTp::TextChannelstatic
forget(const QList< ReceivedMessage > &messages)Tp::TextChannelslot
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasChatStateInterface() const Tp::TextChannel
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
hasMessagesInterface() const Tp::TextChannel
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
inviteContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::TextChannelinlineslot
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
messagePartSupport() const Tp::TextChannel
messageQueue() const Tp::TextChannel
messageReceived(const Tp::ReceivedMessage &message)Tp::TextChannelsignal
messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken)Tp::TextChannelsignal
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
pendingMessageRemoved(const Tp::ReceivedMessage &message)Tp::TextChannelsignal
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestChatState(ChannelChatState state)Tp::TextChannelslot
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
send(const QString &text, ChannelTextMessageType type=ChannelTextMessageTypeNormal, MessageSendingFlags flags=0)Tp::TextChannelslot
send(const MessagePartList &parts, MessageSendingFlags flags=0)Tp::TextChannelslot
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportedContentTypes() const Tp::TextChannel
supportedMessageTypes() const Tp::TextChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsMessageType(ChannelTextMessageType messageType) const Tp::TextChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TextChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TextChannel::FeatureCore)Tp::TextChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~TextChannel()Tp::TextChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00977.html0000644000175100017520000001332512530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00476.html0000644000175100017520000001372112530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::ProtocolPropertiesMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ProtocolPropertiesMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QVariantMap >.

Public Member Functions

 ProtocolPropertiesMap ()
 
 ProtocolPropertiesMap (const QMap< QString, QVariantMap > &a)
 
ProtocolPropertiesMapoperator= (const QMap< QString, QVariantMap > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QVariantMap>, but needed to have a discrete type in the Qt type system.

A map from protocol identifiers supported by a connection manager to the immutable properties of the corresponding ProtocolInterface objects.

Constructor & Destructor Documentation

Tp::ProtocolPropertiesMap::ProtocolPropertiesMap ( )
inline
Tp::ProtocolPropertiesMap::ProtocolPropertiesMap ( const QMap< QString, QVariantMap > &  a)
inline

Member Function Documentation

ProtocolPropertiesMap& Tp::ProtocolPropertiesMap::operator= ( const QMap< QString, QVariantMap > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00220.html0000644000175100017520000002373112530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceServicePointAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceServicePointAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Signals

void ServicePointChanged (const Tp::ServicePoint &servicePoint)
 

Public Member Functions

Tp::ServicePoint InitialServicePoint () const
 
Tp::ServicePoint CurrentServicePoint () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ServicePoint Tp::Service::ChannelInterfaceServicePointAdaptor::InitialServicePoint ( ) const

Return the value of the exported D-Bus object property InitialServicePoint of type Tp::ServicePoint.

Adaptees should export this property as a Qt property named 'initialServicePoint' with type Tp::ServicePoint.

This property is used to indicate that the channel target is a well-known service point. Please note that the CM (or lower layers of the stack or network) may forward the connection to other other service points, which the CM SHOULD indicate via ServicePointChanged() signal.

This property SHOULD be set for channel requests that are specifically targeting service points.

Returns
The value of exported property InitialServicePoint.
Tp::ServicePoint Tp::Service::ChannelInterfaceServicePointAdaptor::CurrentServicePoint ( ) const

Return the value of the exported D-Bus object property CurrentServicePoint of type Tp::ServicePoint.

Adaptees should export this property as a Qt property named 'currentServicePoint' with type Tp::ServicePoint.

The service point that the channel is connected to. If the channel is not connected to a service point, the CM MUST set the Service_Point_Type field to None; for instance, this will be the case for ordinary calls.

Returns
The value of exported property CurrentServicePoint.
void Tp::Service::ChannelInterfaceServicePointAdaptor::ServicePointChanged ( const Tp::ServicePoint servicePoint)
signal

Represents the exported D-Bus signal ServicePointChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void servicePointChanged(const Tp::ServicePoint& servicePoint);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
servicePoint
The new service point that is being used.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01191.html0000644000175100017520000000447212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RichPresenceAccessControl Member List

This is the complete list of members for Tp::RichPresenceAccessControl, including all inherited members.

detailTp::RichPresenceAccessControl
typeTp::RichPresenceAccessControl


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x74.html0000644000175100017520000002446412530426260024131 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- t -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00535.html0000644000175100017520000033604012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::TextChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The TextChannel class represents a Telepathy channel of type Text. More...

#include <TelepathyQt/TextChannel>

Inherits Tp::Channel.

Public Slots

void acknowledge (const QList< ReceivedMessage > &messages)
 
void forget (const QList< ReceivedMessage > &messages)
 
PendingSendMessagesend (const QString &text, ChannelTextMessageType type=ChannelTextMessageTypeNormal, MessageSendingFlags flags=0)
 
PendingSendMessagesend (const MessagePartList &parts, MessageSendingFlags flags=0)
 
PendingOperationinviteContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
PendingOperationrequestChatState (ChannelChatState state)
 

Signals

void messageSent (const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken)
 
void messageReceived (const Tp::ReceivedMessage &message)
 
void pendingMessageRemoved (const Tp::ReceivedMessage &message)
 
void chatStateChanged (const Tp::ContactPtr &contact, Tp::ChannelChatState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~TextChannel ()
 
bool hasMessagesInterface () const
 
bool hasChatStateInterface () const
 
bool canInviteContacts () const
 
bool supportsMessageType (ChannelTextMessageType messageType) const
 
QList< ChannelTextMessageTypesupportedMessageTypes () const
 
QStringList supportedContentTypes () const
 
MessagePartSupportFlags messagePartSupport () const
 
DeliveryReportingSupportFlags deliveryReportingSupport () const
 
QList< ReceivedMessagemessageQueue () const
 
ChannelChatState chatState (const ContactPtr &contact) const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static TextChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureMessageQueue
 
static const Feature FeatureMessageCapabilities
 
static const Feature FeatureMessageSentSignal
 
static const Feature FeatureChatState
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 TextChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TextChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The TextChannel class represents a Telepathy channel of type Text.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::TextChannel::~TextChannel ( )
virtual

Class destructor.

Tp::TextChannel::TextChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = TextChannel::FeatureCore 
)
protected

Construct a new TextChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on TextChannel::FeatureCore.

Member Function Documentation

TextChannelPtr Tp::TextChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new TextChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A TextChannelPtr object pointing to the newly created TextChannel object.
bool Tp::TextChannel::hasMessagesInterface ( ) const

Return whether this channel supports the Messages interface.

If the interface is not supported, some advanced functionality will be unavailable.

This method requires TextChannel::FeatureCore to be ready.

Returns
true if the Messages interface is supported, false otherwise.
bool Tp::TextChannel::hasChatStateInterface ( ) const

Return whether this channel supports the ChatState interface.

If the interface is not supported, requestChatState() will fail and all contacts' chat states will appear to be ChannelChatStateInactive.

This method requires TextChannel::FeatureCore to be ready.

Returns
true if the ChatState interface is supported, false otherwise.
See Also
requestChatState(), chatStateChanged()
bool Tp::TextChannel::canInviteContacts ( ) const

Return whether contacts can be invited into this channel using inviteContacts() (which is equivalent to Channel::groupAddContacts()).

Whether this is the case depends on the underlying protocol, the type of channel, and the user's privileges (in some chatrooms, only a privileged user can invite other contacts).

This is an alias for Channel::groupCanAddContacts(), to indicate its meaning more clearly for Text channels.

This method requires Channel::FeatureCore to be ready.

Returns
true if contacts can be invited, false otherwise.
See Also
inviteContacts(), Channel::groupCanAddContacts(), Channel::groupAddContacts()
bool Tp::TextChannel::supportsMessageType ( ChannelTextMessageType  messageType) const

Return whether the provided message type is supported.

This method requires TextChannel::FeatureMessageCapabilities to be ready.

Parameters
messageTypeThe message type to check.
Returns
true if supported, false otherwise
QList< ChannelTextMessageType > Tp::TextChannel::supportedMessageTypes ( ) const

Return the message types supported by this channel.

This method requires TextChannel::FeatureMessageCapabilities to be ready.

Returns
The list of supported message types
QStringList Tp::TextChannel::supportedContentTypes ( ) const

Return a list of supported MIME content types for messages on this channel.

For a simple text channel this will be a list containing one item, "text/plain".

This list may contain the special value "*<!--x-->/<!--x-->*", which indicates that any content type is supported.

This method requires TextChannel::FeatureMessageCapabilities to be ready.

Returns
The list of MIME content types.
MessagePartSupportFlags Tp::TextChannel::messagePartSupport ( ) const

Return a set of flags indicating support for multi-part messages on this channel.

This is zero on simple text channels, or greater than zero if there is partial or full support for multi-part messages.

This method requires TextChannel::FeatureMessageCapabilities to be ready.

Returns
The flags as MessagePartSupportFlags.
DeliveryReportingSupportFlags Tp::TextChannel::deliveryReportingSupport ( ) const

Return a set of flags indicating support for delivery reporting on this channel.

This is zero if there are no particular guarantees, or greater than zero if delivery reports can be expected under certain circumstances.

This method requires TextChannel::FeatureMessageCapabilities to be ready.

Returns
The flags as DeliveryReportingSupportFlags.
QList< ReceivedMessage > Tp::TextChannel::messageQueue ( ) const

Return a list of messages received in this channel.

Messages are added to this list when they are received from the instant messaging service; the messageReceived() signal is emitted.

There is a small delay between the message being received over D-Bus and becoming available to users of this C++ API, since a small amount of additional information needs to be fetched. However, the relative ordering of all the messages in a channel is preserved.

Messages are removed from this list when they are acknowledged with the acknowledge() or forget() methods. On channels where hasMessagesInterface() returns true, they will also be removed when acknowledged by a different client. In either case, the pendingMessageRemoved() signal is emitted.

This method requires TextChannel::FeatureMessageQueue to be ready.

Returns
A list of ReceivedMessage objects.
See Also
messageReceived()
ChannelChatState Tp::TextChannel::chatState ( const ContactPtr &  contact) const

Return the current chat state for contact.

If hasChatStateInterface() returns false, this method will always return ChannelChatStateInactive.

This method requires TextChannel::FeatureChatState to be ready.

Returns
The contact chat state as ChannelChatState.
void Tp::TextChannel::acknowledge ( const QList< ReceivedMessage > &  messages)
slot

Acknowledge that received messages have been displayed to the user.

Note that this method should only be called by the main handler of a channel, usually meaning the user interface process that displays the channel to the user (when a channel dispatcher is used, the handler must acknowledge messages, and other approvers or observers must not acknowledge messages).

Processes other than the main handler of a channel can free memory used by the library by calling forget() instead.

This method requires TextChannel::FeatureMessageQueue to be ready.

Parameters
messagesA list of received messages that have now been displayed.
See Also
forget(), messageQueue(), messageReceived(), pendingMessageRemoved()
void Tp::TextChannel::forget ( const QList< ReceivedMessage > &  messages)
slot

Remove messages from the message queue without acknowledging them.

Note that this method frees memory used by the library, but does not free the corresponding memory in the CM process. It should be used by clients that are not the main handler for a channel; the main handler for a channel should use acknowledge() instead.

This method requires TextChannel::FeatureMessageQueue to be ready.

Parameters
messagesA list of received messages that have now been processed.
See Also
acknowledge(), messageQueue(), messageReceived(), pendingMessageRemoved()
PendingSendMessage * Tp::TextChannel::send ( const QString &  text,
ChannelTextMessageType  type = ChannelTextMessageTypeNormal,
MessageSendingFlags  flags = 0 
)
slot

Request that a message be sent on this channel.

When the message has been submitted for delivery, this method will return and the messageSent() signal will be emitted.

If the message cannot be submitted for delivery, the returned pending operation will fail and no signal is emitted.

This method requires TextChannel::FeatureCore to be ready.

Parameters
textThe message body.
typeThe message type.
flagsFlags affecting how the message is sent. Note that the channel may ignore some or all flags, depending on deliveryReportingSupport(); the flags that were handled by the CM are provided in messageSent().
Returns
A PendingOperation which will emit PendingOperation::finished when the message has been submitted for delivery.
See Also
messageSent()
PendingSendMessage * Tp::TextChannel::send ( const MessagePartList parts,
MessageSendingFlags  flags = 0 
)
slot

Request that a message be sent on this channel.

When the message has been submitted for delivery, this method will return and the messageSent() signal will be emitted.

If the message cannot be submitted for delivery, the returned pending operation will fail and no signal is emitted.

This method requires TextChannel::FeatureCore to be ready.

Parameters
partsThe message parts.
flagsFlags affecting how the message is sent. Note that the channel may ignore some or all flags, depending on deliveryReportingSupport(); the flags that were handled by the CM are provided in messageSent().
Returns
A PendingOperation which will emit PendingOperation::finished when the message has been submitted for delivery.
See Also
messageSent()
PendingOperation* Tp::TextChannel::inviteContacts ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)
inlineslot
PendingOperation * Tp::TextChannel::requestChatState ( ChannelChatState  state)
slot

Set the local chat state and notify other members of the channel that it has changed.

Note that only the primary handler of the channel should set its chat state.

This method requires TextChannel::FeatureCore to be ready.

Parameters
stateThe new state.
See Also
chatStateChanged()
void Tp::TextChannel::messageSent ( const Tp::Message message,
Tp::MessageSendingFlags  flags,
const QString &  sentMessageToken 
)
signal

Emitted when a message is sent, if the TextChannel::FeatureMessageSentSignal has been enabled.

This signal is emitted regardless of whether the message is sent by this client, or another client using the same channel via D-Bus.

Parameters
messageA message. This may differ slightly from what the client requested to send, for instance if it has been altered due to limitations of the instant messaging protocol used.
flagsMessageSendingFlags that were in effect when the message was sent. Clients can use these in conjunction with deliveryReportingSupport() to determine whether delivery reporting can be expected.
sentMessageTokenEither an empty QString, or an opaque token used to match the message to any delivery reports.
void Tp::TextChannel::messageReceived ( const Tp::ReceivedMessage message)
signal

Emitted when a message is added to messageQueue(), if the TextChannel::FeatureMessageQueue Feature has been enabled.

This occurs slightly later than the message being received over D-Bus; see messageQueue() for details.

Parameters
messageThe message received.
See Also
messageQueue(), acknowledge(), forget()
void Tp::TextChannel::pendingMessageRemoved ( const Tp::ReceivedMessage message)
signal

Emitted when a message is removed from messageQueue(), if the TextChannel::FeatureMessageQueue Feature has been enabled. See messageQueue() for the circumstances in which this happens.

Parameters
messageThe message removed.
See Also
messageQueue(), acknowledge(), forget()
void Tp::TextChannel::chatStateChanged ( const Tp::ContactPtr &  contact,
Tp::ChannelChatState  state 
)
signal

Emitted when the state of a member of the channel has changed, if the TextChannel::FeatureChatState feature has been enabled.

Local state changes are also emitted here.

Parameters
contactThe contact whose chat state changed.
stateThe new chat state for contact.
See Also
chatState()

Member Data Documentation

const Feature Tp::TextChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the TextChannel object usable.

This is currently the same as Channel::FeatureCore, but may change to include more.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

const Feature Tp::TextChannel::FeatureMessageQueue
static

Feature used in order to access the message queue info.

See message queue methods' documentation for more details.

See Also
messageQueue(), messageReceived(), pendingMessageRemoved(), forget(), acknowledge()
const Feature Tp::TextChannel::FeatureMessageCapabilities
static

Feature used in order to access message capabilities info.

See message capabilities methods' documentation for more details.

See Also
supportedContentTypes(), messagePartSupport(), deliveryReportingSupport()
const Feature Tp::TextChannel::FeatureMessageSentSignal
static

Feature used in order to receive notification when a message is sent.

See Also
messageSent()
const Feature Tp::TextChannel::FeatureChatState
static

Feature used in order to keep track of chat state changes.

See chat state methods' documentation for more details.

See Also
chatState(), chatStateChanged()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01250.html0000644000175100017520000002137712530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelDispatcherInterfaceMessages1Interface Member List

This is the complete list of members for Tp::Client::ChannelDispatcherInterfaceMessages1Interface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelDispatcherInterfaceMessages1Interface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelDispatcherInterfaceMessages1Interface
ChannelDispatcherInterfaceMessages1Interface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelDispatcherInterfaceMessages1Interface
ChannelDispatcherInterfaceMessages1Interface(Tp::DBusProxy *proxy)Tp::Client::ChannelDispatcherInterfaceMessages1Interface
ChannelDispatcherInterfaceMessages1Interface(const Tp::Client::ChannelDispatcherInterface &mainInterface)Tp::Client::ChannelDispatcherInterfaceMessages1Interfaceexplicit
ChannelDispatcherInterfaceMessages1Interface(const Tp::Client::ChannelDispatcherInterface &mainInterface, QObject *parent)Tp::Client::ChannelDispatcherInterfaceMessages1Interface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelDispatcherInterfaceMessages1Interfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelDispatcherInterfaceMessages1Interfaceinline
SendMessage(const QDBusObjectPath &account, const QString &targetID, const Tp::MessagePartList &message, uint flags, int timeout=-1)Tp::Client::ChannelDispatcherInterfaceMessages1Interfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelDispatcherInterfaceMessages1Interfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00034.html0000644000175100017520000000725712530426257021142 0ustar00kaffeinekaffeine00000000000000 protocols/protocols.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocols/protocols.h
#ifndef _TelepathyQt_examples_protocols_protocols_h_HEADER_GUARD_
#define _TelepathyQt_examples_protocols_protocols_h_HEADER_GUARD_
#include <TelepathyQt/Types>
#include "cm-wrapper.h"
#include <QList>
#include <QObject>
using namespace Tp;
namespace Tp
{
}
class Protocols : public QObject
{
Q_OBJECT
public:
Protocols();
~Protocols();
private Q_SLOTS:
void onListNamesFinished(Tp::PendingOperation *op);
void onCMWrapperFinished();
private:
QList<CMWrapper *> mCMWrappers;
int cmWrappersFinished;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00349.html0000644000175100017520000005400012530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Connection::ErrorDetails Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Connection::ErrorDetails Class Reference

The Connection::ErrorDetails class represents the details of a connection error. More...

#include <TelepathyQt/Connection>

Public Member Functions

 ErrorDetails ()
 
 ErrorDetails (const QVariantMap &details)
 
 ErrorDetails (const ErrorDetails &other)
 
 ~ErrorDetails ()
 
ErrorDetailsoperator= (const ErrorDetails &other)
 
bool isValid () const
 
bool hasDebugMessage () const
 
QString debugMessage () const
 
bool hasServerMessage () const
 
QString serverMessage () const
 
bool hasUserRequested () const
 
bool userRequested () const
 
bool hasExpectedHostname () const
 
QString expectedHostname () const
 
bool hasCertificateHostname () const
 
QString certificateHostname () const
 
QVariantMap allDetails () const
 

Detailed Description

The Connection::ErrorDetails class represents the details of a connection error.

It contains detailed information about the reason for the connection going invalidated().

Some services may provide additional error information in the ConnectionError D-Bus signal, when a Connection is disconnected / has become unusable. If the service didn't provide any, or has not been invalidated yet, the instance will be invalid, as returned by isValid().

The information provided by invalidationReason() and this class should always be used in error handling in preference to statusReason(). The status reason can be used as a fallback, however, if the client doesn't understand what a particular value returned by invalidationReason() means, as it may be domain-specific with some services.

Connection::errorDetails() can be used to return the instance containing the details for invalidating that connection after invalidated() has been emitted.

Constructor & Destructor Documentation

Tp::Connection::ErrorDetails::ErrorDetails ( )

Constructs a new invalid ErrorDetails instance.

Tp::Connection::ErrorDetails::ErrorDetails ( const QVariantMap &  details)

Construct a error details instance with the given details. The instance will indicate that it is valid.

Tp::Connection::ErrorDetails::ErrorDetails ( const ErrorDetails other)

Copy constructor.

Tp::Connection::ErrorDetails::~ErrorDetails ( )

Class destructor.

Member Function Documentation

Connection::ErrorDetails & Tp::Connection::ErrorDetails::operator= ( const ErrorDetails other)

Assigns all information (validity, details) from other to this.

bool Tp::Connection::ErrorDetails::isValid ( ) const
inline

Return whether or not the details are valid (have actually been received from the service).

Returns
true if valid, false otherwise.
bool Tp::Connection::ErrorDetails::hasDebugMessage ( ) const
inline

Return whether or not the details specify a debug message.

If present, the debug message will likely be the same string as the one returned by invalidationMessage().

The debug message is purely informational, offered for display for bug reporting purposes, and should not be attempted to be parsed.

Returns
true if debug message is present, false otherwise.
See Also
debugMessage()
QString Tp::Connection::ErrorDetails::debugMessage ( ) const
inline

Return the debug message specified by the details, if any.

If present, the debug message will likely be the same string as the one returned by invalidationMessage().

The debug message is purely informational, offered for display for bug reporting purposes, and should not be attempted to be parsed.

Returns
The debug message, or an empty string if there is none.
See Also
hasDebugMessage()
bool Tp::Connection::ErrorDetails::hasServerMessage ( ) const
inline
QString Tp::Connection::ErrorDetails::serverMessage ( ) const
inline
bool Tp::Connection::ErrorDetails::hasUserRequested ( ) const
inline
bool Tp::Connection::ErrorDetails::userRequested ( ) const
inline
bool Tp::Connection::ErrorDetails::hasExpectedHostname ( ) const
inline
QString Tp::Connection::ErrorDetails::expectedHostname ( ) const
inline
bool Tp::Connection::ErrorDetails::hasCertificateHostname ( ) const
inline
QString Tp::Connection::ErrorDetails::certificateHostname ( ) const
inline
QVariantMap Tp::Connection::ErrorDetails::allDetails ( ) const

Return a map containing all details given in the low-level ConnectionError signal.

This is useful for accessing domain-specific additional details.

Returns
The details of the connection error as QVariantMap.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01064.html0000644000175100017520000001335312530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingAccount Member List

This is the complete list of members for Tp::PendingAccount, including all inherited members.

account() const Tp::PendingAccount
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
manager() const Tp::PendingAccount
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingAccount()Tp::PendingAccount
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00909.html0000644000175100017520000000706112530426257021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientObserver::ObserverInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00599_source.html0000644000175100017520000020155712530426257022541 0ustar00kaffeinekaffeine00000000000000 channel-class-spec.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
channel-class-spec.h
1 
23 #ifndef _TelepathyQt_channel_class_spec_h_HEADER_GUARD_
24 #define _TelepathyQt_channel_class_spec_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Global>
32 #include <TelepathyQt/Types>
33 
34 #include <QSharedDataPointer>
35 #include <QVariant>
36 #include <QVariantMap>
37 #include <QPair>
38 
39 namespace Tp
40 {
41 
42 class TP_QT_EXPORT ChannelClassSpec
43 {
44 public:
46  ChannelClassSpec(const ChannelClass &cc);
47  ChannelClassSpec(const QVariantMap &props);
48  ChannelClassSpec(const QString &channelType, HandleType targetHandleType,
49  const QVariantMap &otherProperties = QVariantMap());
50  ChannelClassSpec(const QString &channelType, HandleType targetHandleType, bool requested,
51  const QVariantMap &otherProperties = QVariantMap());
53  const QVariantMap &additionalProperties = QVariantMap());
55 
56  bool isValid() const;
57 
58  ChannelClassSpec &operator=(const ChannelClassSpec &other);
59 
60  bool operator==(const ChannelClassSpec &other) const
61  {
62  return this->allProperties() == other.allProperties();
63  }
64 
65  bool isSubsetOf(const ChannelClassSpec &other) const;
66  bool matches(const QVariantMap &immutableProperties) const;
67 
68  QString channelType() const
69  {
70  return qdbus_cast<QString>(
71  property(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")));
72  }
73 
74  void setChannelType(const QString &type)
75  {
76  setProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
77  QVariant::fromValue(type));
78  }
79 
81  {
82  return (HandleType) qdbus_cast<uint>(
83  property(
84  TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")));
85  }
86 
88  {
89  setProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
90  QVariant::fromValue((uint) type));
91  }
92 
93  bool hasRequested() const
94  {
95  return hasProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"));
96  }
97 
98  bool isRequested() const
99  {
100  return qdbus_cast<bool>(
101  property(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")));
102  }
103 
104  void setRequested(bool requested)
105  {
106  setProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"),
107  QVariant::fromValue(requested));
108  }
109 
111  {
112  unsetProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"));
113  }
114 
116  {
117  return qdbus_cast<bool>(
118  property(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio")));
119  }
120 
122  {
123  setProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"),
124  QVariant::fromValue(true));
125  }
126 
128  {
129  unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"));
130  }
131 
133  {
134  return qdbus_cast<bool>(
135  property(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo")));
136  }
137 
139  {
140  setProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"),
141  QVariant::fromValue(true));
142  }
143 
145  {
146  unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"));
147  }
148 
149  TP_QT_DEPRECATED bool hasStreamedMediaInitialAudioFlag() const
150  {
151  return qdbus_cast<bool>(
152  property(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")));
153  }
154 
155  TP_QT_DEPRECATED void setStreamedMediaInitialAudioFlag()
156  {
157  setProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"),
158  QVariant::fromValue(true));
159  }
160 
161  TP_QT_DEPRECATED void unsetStreamedMediaInitialAudioFlag()
162  {
163  unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"));
164  }
165 
166  TP_QT_DEPRECATED bool hasStreamedMediaInitialVideoFlag() const
167  {
168  return qdbus_cast<bool>(
169  property(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")));
170  }
171 
172  TP_QT_DEPRECATED void setStreamedMediaInitialVideoFlag()
173  {
174  setProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"),
175  QVariant::fromValue(true));
176  }
177 
178  TP_QT_DEPRECATED void unsetStreamedMediaInitialVideoFlag()
179  {
180  unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"));
181  }
182 
183  bool hasProperty(const QString &qualifiedName) const;
184  QVariant property(const QString &qualifiedName) const;
185 
186  void setProperty(const QString &qualifiedName, const QVariant &value);
187  void unsetProperty(const QString &qualifiedName);
188 
189  QVariantMap allProperties() const;
190  ChannelClass bareClass() const;
191 
192  static ChannelClassSpec textChat(const QVariantMap &additionalProperties = QVariantMap());
193  static ChannelClassSpec textChatroom(const QVariantMap &additionalProperties = QVariantMap());
194  static ChannelClassSpec unnamedTextChat(const QVariantMap &additionalProperties = QVariantMap());
195 
196  static ChannelClassSpec mediaCall(const QVariantMap &additionalProperties = QVariantMap());
197  static ChannelClassSpec audioCall(const QVariantMap &additionalProperties = QVariantMap());
198  static ChannelClassSpec videoCall(const QVariantMap &additionalProperties = QVariantMap());
199  static ChannelClassSpec videoCallWithAudio(const QVariantMap &additionalProperties =
200  QVariantMap());
201 
202  TP_QT_DEPRECATED static ChannelClassSpec streamedMediaCall(const QVariantMap &additionalProperties = QVariantMap());
203  TP_QT_DEPRECATED static ChannelClassSpec streamedMediaAudioCall(const QVariantMap &additionalProperties =
204  QVariantMap());
205  TP_QT_DEPRECATED static ChannelClassSpec streamedMediaVideoCall(const QVariantMap &additionalProperties =
206  QVariantMap());
207  TP_QT_DEPRECATED static ChannelClassSpec streamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties =
208  QVariantMap());
209 
210  TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaCall(const QVariantMap &additionalProperties =
211  QVariantMap());
212  TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaAudioCall(const QVariantMap &additionalProperties =
213  QVariantMap());
214  TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaVideoCall(const QVariantMap &additionalProperties =
215  QVariantMap());
216  TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties =
217  QVariantMap());
218 
219  static ChannelClassSpec serverAuthentication(const QVariantMap &additionalProperties =
220  QVariantMap());
221 
222  static ChannelClassSpec roomList(const QVariantMap &additionalProperties = QVariantMap());
223  static ChannelClassSpec outgoingFileTransfer(const QVariantMap &additionalProperties = QVariantMap());
224  static ChannelClassSpec incomingFileTransfer(const QVariantMap &additionalProperties = QVariantMap());
225  static ChannelClassSpec outgoingStreamTube(const QString &service = QString(),
226  const QVariantMap &additionalProperties = QVariantMap());
227  static ChannelClassSpec incomingStreamTube(const QString &service = QString(),
228  const QVariantMap &additionalProperties = QVariantMap());
229  static ChannelClassSpec outgoingRoomStreamTube(const QString &service = QString(),
230  const QVariantMap &additionalProperties = QVariantMap());
231  static ChannelClassSpec incomingRoomStreamTube(const QString &service = QString(),
232  const QVariantMap &additionalProperties = QVariantMap());
233  static ChannelClassSpec outgoingDBusTube(const QString &serviceName = QString(),
234  const QVariantMap &additionalProperties = QVariantMap());
235  static ChannelClassSpec incomingDBusTube(const QString &serviceName = QString(),
236  const QVariantMap &additionalProperties = QVariantMap());
237  static ChannelClassSpec outgoingRoomDBusTube(const QString &serviceName = QString(),
238  const QVariantMap &additionalProperties = QVariantMap());
239  static ChannelClassSpec incomingRoomDBusTube(const QString &serviceName = QString(),
240  const QVariantMap &additionalProperties = QVariantMap());
241  static ChannelClassSpec contactSearch(const QVariantMap &additionalProperties = QVariantMap());
242 
243 private:
244  struct Private;
245  friend struct Private;
246  QSharedDataPointer<Private> mPriv;
247 };
248 
249 class TP_QT_EXPORT ChannelClassSpecList :
250  public QList<ChannelClassSpec>
251 {
252 public:
254 
256  {
257  append(spec);
258  }
259 
260  ChannelClassSpecList(const QList<ChannelClassSpec> &other)
261  : QList<ChannelClassSpec>(other)
262  {
263  }
264 
266  {
267  // Why doesn't Qt have range constructors like STL... stupid, so stupid.
268  Q_FOREACH (const ChannelClass &cc, classes) {
269  append(cc);
270  }
271  }
272 
274  {
275  ChannelClassList list;
276  Q_FOREACH (const ChannelClassSpec &spec, *this) {
277  list.append(spec.bareClass());
278  }
279  return list;
280  }
281 };
282 
283 inline uint qHash(const ChannelClassSpec &spec)
284 {
285  uint ret = 0;
286  QVariantMap::const_iterator it = spec.allProperties().constBegin();
287  QVariantMap::const_iterator end = spec.allProperties().constEnd();
288  int i = spec.allProperties().size() + 1;
289  for (; it != end; ++it) {
290  // all D-Bus types should be convertible to QString
291  QPair<QString, QString> p(it.key(), it.value().toString());
292  int h = qHash(p);
293  ret ^= ((h << (2 << i)) | (h >> (2 >> i)));
294  i--;
295  }
296  return ret;
297 }
298 
299 inline uint qHash(const QSet<ChannelClassSpec> &specSet)
300 {
301  int ret = 0;
302  Q_FOREACH (const ChannelClassSpec &spec, specSet) {
303  int h = qHash(spec);
304  ret ^= h;
305  }
306  return ret;
307 }
308 
309 inline uint qHash(const ChannelClassSpecList &specList)
310 {
311  // Make it unique by converting to QSet
312  QSet<ChannelClassSpec> uniqueSet = specList.toSet();
313  return qHash(uniqueSet);
314 }
315 
316 } // Tp
317 
318 Q_DECLARE_METATYPE(Tp::ChannelClassSpec);
319 Q_DECLARE_METATYPE(Tp::ChannelClassSpecList);
320 
321 #endif
void unsetCallInitialVideoFlag()
Definition: channel-class-spec.h:144
void unsetStreamedMediaInitialVideoFlag()
Definition: channel-class-spec.h:178
bool hasRequested() const
Definition: channel-class-spec.h:93
bool hasCallInitialAudioFlag() const
Definition: channel-class-spec.h:115
QString channelType() const
Definition: channel-class-spec.h:68
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
ChannelClassList bareClasses() const
Definition: channel-class-spec.h:273
The ChannelClassSpecList class represents a list of ChannelClassSpec.
Definition: channel-class-spec.h:249
void setRequested(bool requested)
Definition: channel-class-spec.h:104
HandleType targetHandleType() const
Definition: channel-class-spec.h:80
ChannelClass bareClass() const
Definition: channel-class-spec.cpp:188
void unsetCallInitialAudioFlag()
Definition: channel-class-spec.h:127
QVariantMap allProperties() const
Definition: channel-class-spec.cpp:183
The ChannelClassSpec class represents a Telepathy channel class.
Definition: channel-class-spec.h:42
void setCallInitialVideoFlag()
Definition: channel-class-spec.h:138
void setStreamedMediaInitialVideoFlag()
Definition: channel-class-spec.h:172
ChannelClassSpecList(const ChannelClassList &classes)
Definition: channel-class-spec.h:265
#define TP_QT_IFACE_CHANNEL
Definition: build/TelepathyQt/_gen/constants.h:4897
QList< ChannelClass > ChannelClassList
Definition: build/TelepathyQt/_gen/types.h:740
#define TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA
Definition: build/TelepathyQt/_gen/constants.h:4969
bool operator==(const ChannelClassSpec &other) const
Definition: channel-class-spec.h:60
ChannelClassSpecList()
Definition: channel-class-spec.h:253
Definition: build/TelepathyQt/_gen/types.h:722
void unsetStreamedMediaInitialAudioFlag()
Definition: channel-class-spec.h:161
uint qHash(const ChannelClassSpec &spec)
Definition: channel-class-spec.h:283
bool isRequested() const
Definition: channel-class-spec.h:98
bool hasCallInitialVideoFlag() const
Definition: channel-class-spec.h:132
ChannelClassSpecList(const ChannelClassSpec &spec)
Definition: channel-class-spec.h:255
bool hasStreamedMediaInitialAudioFlag() const
Definition: channel-class-spec.h:149
void setChannelType(const QString &type)
Definition: channel-class-spec.h:74
void setTargetHandleType(HandleType type)
Definition: channel-class-spec.h:87
void setCallInitialAudioFlag()
Definition: channel-class-spec.h:121
#define TP_QT_IFACE_CHANNEL_TYPE_CALL
Definition: build/TelepathyQt/_gen/constants.h:4905
ChannelClassSpecList(const QList< ChannelClassSpec > &other)
Definition: channel-class-spec.h:260
void unsetRequested()
Definition: channel-class-spec.h:110
void setStreamedMediaInitialAudioFlag()
Definition: channel-class-spec.h:155
bool hasStreamedMediaInitialVideoFlag() const
Definition: channel-class-spec.h:166


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00408.html0000644000175100017520000001361612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::MessagePartContentMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MessagePartContentMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QDBusVariant >.

Public Member Functions

 MessagePartContentMap ()
 
 MessagePartContentMap (const QMap< uint, QDBusVariant > &a)
 
MessagePartContentMapoperator= (const QMap< uint, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QDBusVariant>, but needed to have a discrete type in the Qt type system.

A mapping from message part indexes to their content, as returned by GetPendingMessageContent.

Constructor & Destructor Documentation

Tp::MessagePartContentMap::MessagePartContentMap ( )
inline
Tp::MessagePartContentMap::MessagePartContentMap ( const QMap< uint, QDBusVariant > &  a)
inline

Member Function Documentation

MessagePartContentMap& Tp::MessagePartContentMap::operator= ( const QMap< uint, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01379.html0000644000175100017520000001653112530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactGroupsAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceContactGroupsAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AddToGroup(const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactGroupsAdaptorslot
dbusConnection() const Tp::AbstractAdaptor
DisjointGroups() const Tp::Service::ConnectionInterfaceContactGroupsAdaptor
GroupRenamed(const QString &oldName, const QString &newName)Tp::Service::ConnectionInterfaceContactGroupsAdaptorsignal
Groups() const Tp::Service::ConnectionInterfaceContactGroupsAdaptor
GroupsChanged(const Tp::UIntList &contact, const QStringList &added, const QStringList &removed)Tp::Service::ConnectionInterfaceContactGroupsAdaptorsignal
GroupsCreated(const QStringList &names)Tp::Service::ConnectionInterfaceContactGroupsAdaptorsignal
GroupsRemoved(const QStringList &names)Tp::Service::ConnectionInterfaceContactGroupsAdaptorsignal
GroupStorage() const Tp::Service::ConnectionInterfaceContactGroupsAdaptor
RemoveFromGroup(const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactGroupsAdaptorslot
RemoveGroup(const QString &group, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactGroupsAdaptorslot
RenameGroup(const QString &oldName, const QString &newName, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactGroupsAdaptorslot
SetContactGroups(uint contact, const QStringList &groups, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactGroupsAdaptorslot
SetGroupMembers(const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactGroupsAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00162.html0000644000175100017520000000757212530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::CandidatePair Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CandidatePair Struct Reference

#include <TelepathyQt/Types>

Public Attributes

Candidate local
 
Candidate remote
 

Detailed Description

Structure type generated from the specification.

A Pair of candidates.

Member Data Documentation

Candidate Tp::CandidatePair::local

The local candidate.

Candidate Tp::CandidatePair::remote

The remote candidate.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01123.html0000644000175100017520000007426112530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::TubeChannel Member List

This is the complete list of members for Tp::TubeChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::TubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::TubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00978.html0000644000175100017520000001230512530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 > Member List

This is the complete list of members for Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
Callback4()Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >inline
Callback4(const Functor &functor)Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >inline
callerTp::BaseCallbackprotected
FunctionType typedefTp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >
isValid() const Tp::BaseCallbackinline
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const Tp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >inline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
ResultType typedefTp::Callback4< R, Arg1, Arg2, Arg3, Arg4 >
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00477.html0000644000175100017520000001751112530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor0< R > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor0< R > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )()
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor0 (FunctionType fn)
 
ResultType operator() () const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R >
typedef R(* Tp::PtrFunctor0< R >::FunctionType)()
template<class R >
typedef R Tp::PtrFunctor0< R >::ResultType

Constructor & Destructor Documentation

template<class R >
Tp::PtrFunctor0< R >::PtrFunctor0 ( FunctionType  fn)
inline

Member Function Documentation

template<class R >
ResultType Tp::PtrFunctor0< R >::operator() ( ) const
inline

Member Data Documentation

template<class R >
FunctionType Tp::PtrFunctor0< R >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00221.html0000644000175100017520000007153312530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceServicePointInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceServicePointInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Signals

void ServicePointChanged (const Tp::ServicePoint &servicePoint)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceServicePointInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceServicePointInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceServicePointInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceServicePointInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceServicePointInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyInitialServicePoint () const
 
Tp::PendingVariantrequestPropertyCurrentServicePoint () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.ServicePoint".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceServicePointInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceServicePointInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceServicePointInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceServicePointInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceServicePointInterface::ChannelInterfaceServicePointInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceServicePointInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceServicePointInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.ServicePoint", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceServicePointInterface::requestPropertyInitialServicePoint ( ) const
inline

Asynchronous getter for the remote object property InitialServicePoint of type Tp::ServicePoint.

This property is used to indicate that the channel target is a well-known service point. Please note that the CM (or lower layers of the stack or network) may forward the connection to other other service points, which the CM SHOULD indicate via ServicePointChanged() signal.

This property SHOULD be set for channel requests that are specifically targeting service points.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceServicePointInterface::requestPropertyCurrentServicePoint ( ) const
inline

Asynchronous getter for the remote object property CurrentServicePoint of type Tp::ServicePoint.

The service point that the channel is connected to. If the channel is not connected to a service point, the CM MUST set the Service_Point_Type field to None; for instance, this will be the case for ordinary calls.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceServicePointInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceServicePointInterface::ServicePointChanged ( const Tp::ServicePoint servicePoint)
signal

Represents the signal ServicePointChanged on the remote object.

Emitted when a channel changes the service point that it's connected to. This might be a new call being connected to a service, a call connected to a service being routed to a different service (ie, an emergency call being routed from a generic emergency PSAP to a poison control PSAP), or any number of other things. Note that this should be emitted as soon as the CM has been notified of the switch, and has updated its internal state. The CM MAY still be in the process of connecting to the new service point.

Parameters
servicePoint
The new service point that is being used.
void Tp::Client::ChannelInterfaceServicePointInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01192.html0000644000175100017520000000470612530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RoomInfo Member List

This is the complete list of members for Tp::RoomInfo, including all inherited members.

channelTypeTp::RoomInfo
handleTp::RoomInfo
infoTp::RoomInfo


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x75.html0000644000175100017520000002354012530426260024124 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- u -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00536.html0000644000175100017520000001463612530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::TLSCertificateRejection Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::TLSCertificateRejection Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint reason
 
QString error
 
QVariantMap details
 

Detailed Description

Structure type generated from the specification.

Struct representing one reason why a TLS certificate was rejected.

Since there can be multiple things wrong with a TLS certificate, arrays of this type are used to represent lists of reasons for rejection. In that case, the most important reason SHOULD be placed first in the list.

Member Data Documentation

uint Tp::TLSCertificateRejection::reason

The value of the TLS_Certificate_Reject_Reason enumeration for this certificate rejection.

Clients that do not understand the Error member, which may be implementation-specific, can use this property to classify rejection reasons into common categories.

QString Tp::TLSCertificateRejection::error

The DBus error name for this certificate rejection.

This MAY correspond to the value of the Reason member, or MAY be a more specific D-Bus error name, perhaps implementation-specific.

QVariantMap Tp::TLSCertificateRejection::details

Additional information about why the certificate was rejected. This MAY also include one or more of the following well-known keys:

user-requested (b)
True if the error was due to an user-requested rejection of the certificate; False if there was an unrecoverable error in the verification process.
expected-hostname (s)
If the rejection reason is Hostname_Mismatch, the hostname that the server certificate was expected to have.
certificate-hostname (s)
If the rejection reason is Hostname_Mismatch, the hostname of the certificate that was presented.

For instance, if you try to connect to gmail.com but are presented with a TLS certificate issued to evil.example.org, the error details for Hostname_Mismatch MAY include:

      {
        'expected-hostname': 'gmail.com',
        'certificate-hostname': 'evil.example.org',
      }
    
debug-message (s)
Debugging information on the error, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00290.html0000644000175100017520000012242412530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceContactInfoInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ContactInfoMap
GetContactInfo (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply RefreshContactInfo (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply
< Tp::ContactInfoFieldList
RequestContactInfo (uint contact, int timeout=-1)
 
QDBusPendingReply SetContactInfo (const Tp::ContactInfoFieldList &contactInfo, int timeout=-1)
 

Signals

void ContactInfoChanged (uint contact, const Tp::ContactInfoFieldList &contactInfo)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceContactInfoInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactInfoInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactInfoInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceContactInfoInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceContactInfoInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyContactInfoFlags () const
 
Tp::PendingVariantrequestPropertySupportedFields () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ContactInfo".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactInfoInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactInfoInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceContactInfoInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceContactInfoInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceContactInfoInterface::ConnectionInterfaceContactInfoInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceContactInfoInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceContactInfoInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ContactInfo", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactInfoInterface::requestPropertyContactInfoFlags ( ) const
inline

Asynchronous getter for the remote object property ContactInfoFlags of type uint.

An integer representing the bitwise-OR of flags on this connection.

This property MAY change, without change notification, at any time before the connection moves to status Connection_Status_Connected. It MUST NOT change after that point.

Some XMPP servers, like Facebook Chat, do not allow the vCard to be changed (and so would not have the Can_Set flag). Whether the user's server is one of these cannot necessarily be detected until quite late in the connection process.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactInfoInterface::requestPropertySupportedFields ( ) const
inline

Asynchronous getter for the remote object property SupportedFields of type Tp::FieldSpecs.

A list of field specifications describing the kinds of fields which may be passed to SetContactInfo() . The empty list indicates that arbitrary vCard fields are permitted. This property SHOULD be the empty list, and be ignored by clients, if ContactInfoFlags does not contain the Can_Set flag.

For example, a protocol in which arbitrary vCards were stored as-is would set this property to the empty list. A protocol whose notion of contact information is one each of personal phone number, mobile phone number, location, email address and date of birth, with no attributes allowed on each piece of information, would set this property to (in Python-like syntax):

[
  ('tel', ['type=home'], Parameters_Exact, 1),
  ('tel', ['type=cell'], Parameters_Exact, 1),
  ('adr', [], Parameters_Exact, 1),
  ('bday', [], Parameters_Exact, 1),
  ('email', ['type=internet'], Parameters_Exact, 1),
]

A protocol which allows users to specify up to four phone numbers, which may be labelled as personal and/or mobile, would set this property to [ ('tel', ['type=home', 'type=cell'], 0, 4), ].

Studying existing IM protocols shows that in practice protocols allow either a very restricted set of fields (such as MSN, which seems to correspond roughly to the largest example above), or something mapping 1:1 to a large subset of vCard (such as XMPP's XEP-0054).

This property MAY change, without change notification, at any time before the connection moves to status Connection_Status_Connected. It MUST NOT change after that point.

Some XMPP servers, like Google Talk, only allow a small subset of the "vcard-temp" protocol. Whether the user's server is one of these cannot be detected until quite late in the connection process.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceContactInfoInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ContactInfoMap> Tp::Client::ConnectionInterfaceContactInfoInterface::GetContactInfo ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactInfo on the remote object.

Request information on several contacts at once. This SHOULD only return cached information, omitting handles for which no information is cached from the returned map.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of handles representing contacts.
timeoutThe timeout in milliseconds.
Returns
A dictionary mapping contact handles to information, whose keys are 
the subset of the requested list of handles for which information 
was cached.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactInfoInterface::RefreshContactInfo ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RefreshContactInfo on the remote object.

Retrieve information for the given contact, requesting it from the network if an up-to-date version is not cached locally. This method SHOULD return immediately, emitting ContactInfoChanged when the contacts' updated contact information is returned. This method allows a client with cached contact information to update its cache after a number of days.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
Integer handles for contacts.
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::ContactInfoFieldList> Tp::Client::ConnectionInterfaceContactInfoInterface::RequestContactInfo ( uint  contact,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestContactInfo on the remote object.

Retrieve information for a contact, requesting it from the network if it is not cached locally. This method is appropriate for an explicit user request to show a contact's information; it allows a UI to wait for the contact info to be returned.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contact
An integer handle for a contact.
timeoutThe timeout in milliseconds.
Returns
Information about that contact.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactInfoInterface::SetContactInfo ( const Tp::ContactInfoFieldList contactInfo,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetContactInfo on the remote object.

Set new contact information for this connection, replacing existing information. This method is only suppported if ContactInfoFlags contains Can_Set, and may only be passed fields conforming to SupportedFields.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contactInfo
The new information to be set.
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfaceContactInfoInterface::ContactInfoChanged ( uint  contact,
const Tp::ContactInfoFieldList contactInfo 
)
signal

Represents the signal ContactInfoChanged on the remote object.

Emitted when a contact's information has changed or been received for the first time on this connection.

Parameters
contact
An integer handle for the contact whose info has changed.
contactInfo An array of fields representing information about this contact.
void Tp::Client::ConnectionInterfaceContactInfoInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01251.html0000644000175100017520000002530312530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelRequestInterface Member List

This is the complete list of members for Tp::Client::ChannelRequestInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Cancel(int timeout=-1)Tp::Client::ChannelRequestInterfaceinlineslot
ChannelRequestInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelRequestInterface
ChannelRequestInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelRequestInterface
ChannelRequestInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelRequestInterface
Failed(const QString &error, const QString &message)Tp::Client::ChannelRequestInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelRequestInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
Proceed(int timeout=-1)Tp::Client::ChannelRequestInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelRequestInterfaceinline
requestPropertyAccount() const Tp::Client::ChannelRequestInterfaceinline
requestPropertyHints() const Tp::Client::ChannelRequestInterfaceinline
requestPropertyInterfaces() const Tp::Client::ChannelRequestInterfaceinline
requestPropertyPreferredHandler() const Tp::Client::ChannelRequestInterfaceinline
requestPropertyRequests() const Tp::Client::ChannelRequestInterfaceinline
requestPropertyUserActionTime() const Tp::Client::ChannelRequestInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelRequestInterfaceinlinestatic
Succeeded()Tp::Client::ChannelRequestInterfacesignal
SucceededWithChannel(const QDBusObjectPath &connection, const QVariantMap &connectionProperties, const QDBusObjectPath &channel, const QVariantMap &channelProperties)Tp::Client::ChannelRequestInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00588_source.html0000644000175100017520000004170312530426257022532 0ustar00kaffeinekaffeine00000000000000 call-stream.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
call-stream.h
1 
23 #ifndef _TelepathyQt_call_stream_h_HEADER_GUARD_
24 #define _TelepathyQt_call_stream_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-call-stream.h>
31 
32 #include <TelepathyQt/Constants>
33 #include <TelepathyQt/DBusProxy>
34 #include <TelepathyQt/OptionalInterfaceFactory>
35 #include <TelepathyQt/PendingOperation>
36 #include <TelepathyQt/Types>
37 #include <TelepathyQt/SharedPtr>
38 
39 namespace Tp
40 {
41 
42 typedef QList<CallStreamPtr> CallStreams;
43 
44 class TP_QT_EXPORT CallStream : public StatefulDBusProxy,
45  public OptionalInterfaceFactory<CallStream>
46 {
47  Q_OBJECT
48  Q_DISABLE_COPY(CallStream)
49 
50 public:
51  ~CallStream();
52 
53  CallContentPtr content() const;
54 
55  Contacts remoteMembers() const;
56  bool canRequestReceiving() const;
57 
58  SendingState localSendingState() const;
59  SendingState remoteSendingState(const ContactPtr &contact) const;
60 
61  PendingOperation *requestSending(bool send);
62  PendingOperation *requestReceiving(const ContactPtr &contact, bool receive);
63 
64 Q_SIGNALS:
65  void localSendingStateChanged(Tp::SendingState localSendingState,
66  const Tp::CallStateReason &reason);
67  void remoteSendingStateChanged(
68  const QHash<Tp::ContactPtr, Tp::SendingState> &remoteSendingStates,
69  const Tp::CallStateReason &reason);
70  void remoteMembersRemoved(const Tp::Contacts &remoteMembers,
71  const Tp::CallStateReason &reason);
72 
73 private Q_SLOTS:
74  TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op);
75  TP_QT_NO_EXPORT void gotRemoteMembersContacts(Tp::PendingOperation *op);
76 
77  TP_QT_NO_EXPORT void onRemoteMembersChanged(const Tp::ContactSendingStateMap &updates,
78  const Tp::HandleIdentifierMap &identifiers,
79  const Tp::UIntList &removed,
80  const Tp::CallStateReason &reason);
81  TP_QT_NO_EXPORT void onLocalSendingStateChanged(uint, const Tp::CallStateReason &reason);
82 
83 private:
84  friend class CallChannel;
85  friend class CallContent;
86 
87  TP_QT_NO_EXPORT static const Feature FeatureCore;
88 
89  TP_QT_NO_EXPORT CallStream(const CallContentPtr &content, const QDBusObjectPath &streamPath);
90 
91  struct Private;
92  friend struct Private;
93  Private *mPriv;
94 };
95 
96 } // Tp
97 
98 #endif
The CallStream class provides an object representing a Telepathy Call.Stream.
Definition: call-stream.h:44
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
Definition: build/TelepathyQt/_gen/types.h:320
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The CallContent class provides an object representing a Telepathy Call.Content.
Definition: call-content.h:39
Definition: build/TelepathyQt/_gen/types.h:101
QList< CallStreamPtr > CallStreams
Definition: call-stream.h:42
The CallChannel class provides an object representing a Telepathy channel of type Call...
Definition: call-channel.h:35
Definition: build/TelepathyQt/_gen/types.h:1646
Definition: build/TelepathyQt/_gen/types.h:1284
SendingState
Definition: build/TelepathyQt/_gen/constants.h:4529
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01310.html0000644000175100017520000002245112530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceContactsInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceContactsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceContactsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactsInterface
ConnectionInterfaceContactsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceContactsInterface
ConnectionInterfaceContactsInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceContactsInterface
ConnectionInterfaceContactsInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceContactsInterfaceexplicit
ConnectionInterfaceContactsInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceContactsInterface
GetContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, bool hold, int timeout=-1)Tp::Client::ConnectionInterfaceContactsInterfaceinlineslot
GetContactByID(const QString &identifier, const QStringList &interfaces, int timeout=-1)Tp::Client::ConnectionInterfaceContactsInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceContactsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceContactsInterfaceinline
requestPropertyContactAttributeInterfaces() const Tp::Client::ConnectionInterfaceContactsInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceContactsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01065.html0000644000175100017520000001401212530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingCaptchas Member List

This is the complete list of members for Tp::PendingCaptchas, including all inherited members.

captcha() const Tp::PendingCaptchas
captchaList() const Tp::PendingCaptchas
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
requiresMultipleCaptchas() const Tp::PendingCaptchas
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingCaptchas()Tp::PendingCaptchasvirtual
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00584_source.html0000644000175100017520000004753612530426257022540 0ustar00kaffeinekaffeine00000000000000 call-content.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
call-content.h
1 
23 #ifndef _TelepathyQt_call_content_h_HEADER_GUARD_
24 #define _TelepathyQt_call_content_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-call-content.h>
31 
32 #include <TelepathyQt/CallStream>
33 
34 namespace Tp
35 {
36 
37 typedef QList<CallContentPtr> CallContents;
38 
39 class TP_QT_EXPORT CallContent : public StatefulDBusProxy,
40  public OptionalInterfaceFactory<CallContent>
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(CallContent)
44 
45 public:
46  ~CallContent();
47 
48  CallChannelPtr channel() const;
49 
50  QString name() const;
51  MediaStreamType type() const;
52  CallContentDisposition disposition() const;
53  CallStreams streams() const;
54 
55  PendingOperation *remove();
56 
57  bool supportsDTMF() const;
58  PendingOperation *startDTMFTone(DTMFEvent event);
59  PendingOperation *stopDTMFTone();
60 
61 Q_SIGNALS:
62  void streamAdded(const Tp::CallStreamPtr &stream);
63  void streamRemoved(const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason);
64 
65 private Q_SLOTS:
66  TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op);
67  TP_QT_NO_EXPORT void onStreamsAdded(const Tp::ObjectPathList &streamPath);
68  TP_QT_NO_EXPORT void onStreamsRemoved(const Tp::ObjectPathList &streamPath,
69  const Tp::CallStateReason &reason);
70  TP_QT_NO_EXPORT void onStreamReady(Tp::PendingOperation *op);
71 
72 private:
73  friend class CallChannel;
74  friend class PendingCallContent;
75 
76  TP_QT_NO_EXPORT static const Feature FeatureCore;
77 
78  TP_QT_NO_EXPORT CallContent(const CallChannelPtr &channel,
79  const QDBusObjectPath &contentPath);
80 
81  struct Private;
82  friend struct Private;
83  Private *mPriv;
84 };
85 
86 class TP_QT_EXPORT PendingCallContent : public PendingOperation
87 {
88  Q_OBJECT
89  Q_DISABLE_COPY(PendingCallContent)
90 
91 public:
93 
94  CallContentPtr content() const;
95 
96 private Q_SLOTS:
97  TP_QT_NO_EXPORT void gotContent(QDBusPendingCallWatcher *watcher);
98 
99  TP_QT_NO_EXPORT void onContentReady(Tp::PendingOperation *op);
100  TP_QT_NO_EXPORT void onContentRemoved(const Tp::CallContentPtr &content);
101 
102 private:
103  friend class CallChannel;
104 
105  TP_QT_NO_EXPORT PendingCallContent(const CallChannelPtr &channel,
106  const QString &contentName, MediaStreamType type, MediaStreamDirection direction);
107 
108  struct Private;
109  friend struct Private;
110  Private *mPriv;
111 };
112 
113 } // Tp
114 
115 #endif
MediaStreamType
Definition: build/TelepathyQt/_gen/constants.h:2716
DTMFEvent
Definition: build/TelepathyQt/_gen/constants.h:3121
QList< CallContentPtr > CallContents
Definition: call-content.h:37
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The StatefulDBusProxy class is a base class representing a remote object whose API is stateful...
Definition: dbus-proxy.h:96
Definition: build/TelepathyQt/_gen/types.h:320
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The CallContent class provides an object representing a Telepathy Call.Content.
Definition: call-content.h:39
QList< CallStreamPtr > CallStreams
Definition: call-stream.h:42
Definition: call-content.h:86
Definition: build/TelepathyQt/_gen/types.h:81
MediaStreamDirection
Definition: build/TelepathyQt/_gen/constants.h:2777
The CallChannel class provides an object representing a Telepathy channel of type Call...
Definition: call-channel.h:35
CallContentDisposition
Definition: build/TelepathyQt/_gen/constants.h:4241
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00409.html0000644000175100017520000001455212530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Metadata Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Types>

Inherits QMap< QString, QStringList >.

Public Member Functions

 Metadata ()
 
 Metadata (const QMap< QString, QStringList > &a)
 
Metadataoperator= (const QMap< QString, QStringList > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QStringList>, but needed to have a discrete type in the Qt type system.

A mapping from string key to a list of strings, used in the Metadata property. To emulate a simple string → string hash table one should have exactly one member in the value string list. This property is an a{sas} primarily because this maps easily to XEP-0004 Data Forms, and allows more structured metadata than a{ss} would. (For instance, a list of RDF triples could be expressed as one long array of strings, or as three-element values for a series of dummy key names, rather than as one big string blob.) While it might be convenient for applications to allow keys of arbitrary types, the added convenience would be outweighed by having to define the XMPP representation

Constructor & Destructor Documentation

Tp::Metadata::Metadata ( )
inline
Tp::Metadata::Metadata ( const QMap< QString, QStringList > &  a)
inline

Member Function Documentation

Metadata& Tp::Metadata::operator= ( const QMap< QString, QStringList > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00163.html0000644000175100017520000007032612530426257021142 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClientHandler::Capabilities Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientHandler::Capabilities Class Reference

The AbstractClientHandler::Capabilities class provides a wrapper around the capabilities of a handler. More...

#include <TelepathyQt/AbstractClientHandler>

Public Member Functions

 Capabilities (const QStringList &tokens=QStringList())
 
 Capabilities (const Capabilities &other)
 
 ~Capabilities ()
 
Capabilitiesoperator= (const Capabilities &other)
 
bool hasGTalkP2PNATTraversalToken () const
 
void setGTalkP2PNATTraversalToken ()
 
void unsetGTalkP2PNATTraversalToken ()
 
bool hasICEUDPNATTraversalToken () const
 
void setICEUDPNATTraversalToken ()
 
void unsetICEUDPNATTraversalToken ()
 
bool hasWLM85NATTraversalToken () const
 
void setWLM85NATTraversalToken ()
 
void unsetWLM85NATTraversalToken ()
 
bool hasWLM2009NATTraversalToken () const
 
void setWLM2009NATTraversalToken ()
 
void unsetWLM2009NATTraversalToken ()
 
bool hasAudioCodecToken (const QString &mimeSubType) const
 
void setAudioCodecToken (const QString &mimeSubType)
 
void unsetAudioCodecToken (const QString &mimeSubType)
 
bool hasVideoCodecToken (const QString &mimeSubType) const
 
void setVideoCodecToken (const QString &mimeSubType)
 
void unsetVideoCodecToken (const QString &mimeSubType)
 
bool hasToken (const QString &token) const
 
void setToken (const QString &token)
 
void unsetToken (const QString &token)
 
QStringList allTokens () const
 

Detailed Description

The AbstractClientHandler::Capabilities class provides a wrapper around the capabilities of a handler.

See Also
AbstractClientHandler

Constructor & Destructor Documentation

Tp::AbstractClientHandler::Capabilities::Capabilities ( const QStringList &  tokens = QStringList())
Tp::AbstractClientHandler::Capabilities::Capabilities ( const Capabilities other)
Tp::AbstractClientHandler::Capabilities::~Capabilities ( )

Member Function Documentation

AbstractClientHandler::Capabilities & Tp::AbstractClientHandler::Capabilities::operator= ( const Capabilities other)
bool Tp::AbstractClientHandler::Capabilities::hasGTalkP2PNATTraversalToken ( ) const
inline
void Tp::AbstractClientHandler::Capabilities::setGTalkP2PNATTraversalToken ( )
inline
void Tp::AbstractClientHandler::Capabilities::unsetGTalkP2PNATTraversalToken ( )
inline
bool Tp::AbstractClientHandler::Capabilities::hasICEUDPNATTraversalToken ( ) const
inline
void Tp::AbstractClientHandler::Capabilities::setICEUDPNATTraversalToken ( )
inline
void Tp::AbstractClientHandler::Capabilities::unsetICEUDPNATTraversalToken ( )
inline
bool Tp::AbstractClientHandler::Capabilities::hasWLM85NATTraversalToken ( ) const
inline
void Tp::AbstractClientHandler::Capabilities::setWLM85NATTraversalToken ( )
inline
void Tp::AbstractClientHandler::Capabilities::unsetWLM85NATTraversalToken ( )
inline
bool Tp::AbstractClientHandler::Capabilities::hasWLM2009NATTraversalToken ( ) const
inline
void Tp::AbstractClientHandler::Capabilities::setWLM2009NATTraversalToken ( )
inline
void Tp::AbstractClientHandler::Capabilities::unsetWLM2009NATTraversalToken ( )
inline
bool Tp::AbstractClientHandler::Capabilities::hasAudioCodecToken ( const QString &  mimeSubType) const
inline
void Tp::AbstractClientHandler::Capabilities::setAudioCodecToken ( const QString &  mimeSubType)
inline
void Tp::AbstractClientHandler::Capabilities::unsetAudioCodecToken ( const QString &  mimeSubType)
inline
bool Tp::AbstractClientHandler::Capabilities::hasVideoCodecToken ( const QString &  mimeSubType) const
inline
void Tp::AbstractClientHandler::Capabilities::setVideoCodecToken ( const QString &  mimeSubType)
inline
void Tp::AbstractClientHandler::Capabilities::unsetVideoCodecToken ( const QString &  mimeSubType)
inline
bool Tp::AbstractClientHandler::Capabilities::hasToken ( const QString &  token) const
void Tp::AbstractClientHandler::Capabilities::setToken ( const QString &  token)
void Tp::AbstractClientHandler::Capabilities::unsetToken ( const QString &  token)
QStringList Tp::AbstractClientHandler::Capabilities::allTokens ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01124.html0000644000175100017520000000525212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ByteArrayList Member List

This is the complete list of members for Tp::ByteArrayList, including all inherited members.

ByteArrayList()Tp::ByteArrayListinline
ByteArrayList(const QList< QByteArray > &a)Tp::ByteArrayListinline
operator=(const QList< QByteArray > &a)Tp::ByteArrayListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00580_source.html0000644000175100017520000007521712530426257022531 0ustar00kaffeinekaffeine00000000000000 call-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
call-channel.h
1 
22 #ifndef _TelepathyQt_call_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_call_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/Channel>
30 #include <TelepathyQt/CallContent>
31 
32 namespace Tp
33 {
34 
35 class TP_QT_EXPORT CallChannel : public Channel
36 {
37  Q_OBJECT
38  Q_DISABLE_COPY(CallChannel)
39 
40 public:
41  static const Feature FeatureCore;
42  static const Feature FeatureCallState;
44  static const Feature FeatureContents;
46 
47  static CallChannelPtr create(const ConnectionPtr &connection,
48  const QString &objectPath, const QVariantMap &immutableProperties);
49 
50  virtual ~CallChannel();
51 
52  bool handlerStreamingRequired() const;
53  StreamTransportType initialTransportType() const;
54  bool hasInitialAudio() const;
55  bool hasInitialVideo() const;
56  QString initialAudioName() const;
57  QString initialVideoName() const;
58  bool hasMutableContents() const;
59 
60  PendingOperation *setRinging();
61  PendingOperation *setQueued();
62  PendingOperation *accept();
64  const QString &detailedReason = QString(), const QString &message = QString());
65 
66  // FeatureCallState
67  CallState callState() const;
68  CallFlags callFlags() const;
69  CallStateReason callStateReason() const;
70  QVariantMap callStateDetails() const;
71 
72  // FeatureCallMembers
73  Contacts remoteMembers() const;
74  CallMemberFlags remoteMemberFlags(const ContactPtr &member) const;
75 
76  // FeatureContents
77  CallContents contents() const;
78  CallContents contentsForType(MediaStreamType type) const;
79  CallContentPtr contentByName(const QString &contentName) const;
80  PendingCallContent *requestContent(const QString &name,
81  MediaStreamType type, MediaStreamDirection direction);
82 
83  // FeatureLocalHoldState
84  LocalHoldState localHoldState() const;
85  LocalHoldStateReason localHoldStateReason() const;
86  PendingOperation *requestHold(bool hold);
87 
88 Q_SIGNALS:
89  // FeatureCallState
90  void callStateChanged(Tp::CallState state);
91  void callFlagsChanged(Tp::CallFlags flags);
92 
93  // FeatureCallMembers
94  void remoteMemberFlagsChanged(
95  const QHash<Tp::ContactPtr, Tp::CallMemberFlags> &remoteMemberFlags,
96  const Tp::CallStateReason &reason);
97  void remoteMembersRemoved(const Tp::Contacts &remoteMembers,
98  const Tp::CallStateReason &reason);
99 
100  // FeatureContents
101  void contentAdded(const Tp::CallContentPtr &content);
102  void contentRemoved(const Tp::CallContentPtr &content, const Tp::CallStateReason &reason);
103 
104  // FeatureLocalHoldState
105  void localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason);
106 
107 protected:
108  CallChannel(const ConnectionPtr &connection,
109  const QString &objectPath, const QVariantMap &immutableProperties,
110  const Feature &coreFeature = CallChannel::FeatureCore);
111 
112 private Q_SLOTS:
113  TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op);
114 
115  TP_QT_NO_EXPORT void gotCallState(Tp::PendingOperation *op);
116  TP_QT_NO_EXPORT void onCallStateChanged(uint state, uint flags,
117  const Tp::CallStateReason &stateReason, const QVariantMap &stateDetails);
118 
119  TP_QT_NO_EXPORT void gotCallMembers(Tp::PendingOperation *op);
120  TP_QT_NO_EXPORT void gotCallMembersContacts(Tp::PendingOperation *op);
121  TP_QT_NO_EXPORT void onCallMembersChanged(const Tp::CallMemberMap &updates,
122  const Tp::HandleIdentifierMap &identifiers,
123  const Tp::UIntList &removed,
124  const Tp::CallStateReason &reason);
125 
126  TP_QT_NO_EXPORT void gotContents(Tp::PendingOperation *op);
127  TP_QT_NO_EXPORT void onContentAdded(const QDBusObjectPath &contentPath);
128  TP_QT_NO_EXPORT void onContentRemoved(const QDBusObjectPath &contentPath,
129  const Tp::CallStateReason &reason);
130  TP_QT_NO_EXPORT void onContentReady(Tp::PendingOperation *op);
131 
132  TP_QT_NO_EXPORT void gotLocalHoldState(QDBusPendingCallWatcher *);
133  TP_QT_NO_EXPORT void onLocalHoldStateChanged(uint, uint);
134 
135 private:
136  friend class PendingCallContent;
137 
138  TP_QT_NO_EXPORT CallContentPtr addContent(const QDBusObjectPath &contentPath);
139  TP_QT_NO_EXPORT CallContentPtr lookupContent(const QDBusObjectPath &contentPath) const;
140 
141  struct Private;
142  friend struct Private;
143  Private *mPriv;
144 };
145 
146 } // Tp
147 
148 #endif
static const Feature FeatureCallMembers
Definition: call-channel.h:43
MediaStreamType
Definition: build/TelepathyQt/_gen/constants.h:2716
QList< CallContentPtr > CallContents
Definition: call-content.h:37
static const Feature FeatureLocalHoldState
Definition: call-channel.h:45
StreamTransportType
Definition: build/TelepathyQt/_gen/constants.h:4463
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
Definition: build/TelepathyQt/_gen/types.h:320
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
static const Feature FeatureCallState
Definition: call-channel.h:42
Definition: call-content.h:86
static const Feature FeatureCore
Definition: call-channel.h:41
QFlags< CallFlag > CallFlags
Definition: build/TelepathyQt/_gen/constants.h:574
MediaStreamDirection
Definition: build/TelepathyQt/_gen/constants.h:2777
Definition: build/TelepathyQt/_gen/types.h:287
CallStateChangeReason
Definition: build/TelepathyQt/_gen/constants.h:2365
The CallChannel class provides an object representing a Telepathy channel of type Call...
Definition: call-channel.h:35
Definition: build/TelepathyQt/_gen/types.h:1646
LocalHoldState
Definition: build/TelepathyQt/_gen/constants.h:3466
QFlags< CallMemberFlag > CallMemberFlags
Definition: build/TelepathyQt/_gen/constants.h:650
CallState
Definition: build/TelepathyQt/_gen/constants.h:2286
Definition: build/TelepathyQt/_gen/constants.h:2394
static const Feature FeatureContents
Definition: call-channel.h:44
LocalHoldStateReason
Definition: build/TelepathyQt/_gen/constants.h:3516
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00979.html0000644000175100017520000001343212530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00853_source.html0000644000175100017520000127325212530426257022534 0ustar00kaffeinekaffeine00000000000000 types-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
types-body.hpp
1 /* Generated from Telepathy D-Bus Interface Specification, TelepathyQt copy, version 0.17.7 */
2 
3 #define IN_TP_QT_HEADER
4 #include "TelepathyQt/types.h"
5 
6 namespace Tp
7 {
8 TP_QT_EXPORT bool operator==(const AccessControl& v1, const AccessControl& v2)
9 {
10  return ((v1.type == v2.type)
11  && (v1.detail.variant() == v2.detail.variant())
12  );
13 }
14 
15 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const AccessControl& val)
16 {
17  arg.beginStructure();
18  arg << val.type << val.detail;
19  arg.endStructure();
20  return arg;
21 }
22 
23 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, AccessControl& val)
24 {
25  arg.beginStructure();
26  arg >> val.type >> val.detail;
27  arg.endStructure();
28  return arg;
29 }
30 
31 TP_QT_EXPORT bool operator==(const AliasPair& v1, const AliasPair& v2)
32 {
33  return ((v1.handle == v2.handle)
34  && (v1.alias == v2.alias)
35  );
36 }
37 
38 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const AliasPair& val)
39 {
40  arg.beginStructure();
41  arg << val.handle << val.alias;
42  arg.endStructure();
43  return arg;
44 }
45 
46 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, AliasPair& val)
47 {
48  arg.beginStructure();
49  arg >> val.handle >> val.alias;
50  arg.endStructure();
51  return arg;
52 }
53 
54 TP_QT_EXPORT bool operator==(const Avatar& v1, const Avatar& v2)
55 {
56  return ((v1.avatarData == v2.avatarData)
57  && (v1.MIMEType == v2.MIMEType)
58  );
59 }
60 
61 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const Avatar& val)
62 {
63  arg.beginStructure();
64  arg << val.avatarData << val.MIMEType;
65  arg.endStructure();
66  return arg;
67 }
68 
69 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, Avatar& val)
70 {
71  arg.beginStructure();
72  arg >> val.avatarData >> val.MIMEType;
73  arg.endStructure();
74  return arg;
75 }
76 
77 TP_QT_EXPORT bool operator==(const CallStateReason& v1, const CallStateReason& v2)
78 {
79  return ((v1.actor == v2.actor)
80  && (v1.reason == v2.reason)
81  && (v1.DBusReason == v2.DBusReason)
82  && (v1.message == v2.message)
83  );
84 }
85 
86 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CallStateReason& val)
87 {
88  arg.beginStructure();
89  arg << val.actor << val.reason << val.DBusReason << val.message;
90  arg.endStructure();
91  return arg;
92 }
93 
94 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CallStateReason& val)
95 {
96  arg.beginStructure();
97  arg >> val.actor >> val.reason >> val.DBusReason >> val.message;
98  arg.endStructure();
99  return arg;
100 }
101 
102 TP_QT_EXPORT bool operator==(const Candidate& v1, const Candidate& v2)
103 {
104  return ((v1.component == v2.component)
105  && (v1.IP == v2.IP)
106  && (v1.port == v2.port)
107  && (v1.info == v2.info)
108  );
109 }
110 
111 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const Candidate& val)
112 {
113  arg.beginStructure();
114  arg << val.component << val.IP << val.port << val.info;
115  arg.endStructure();
116  return arg;
117 }
118 
119 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, Candidate& val)
120 {
121  arg.beginStructure();
122  arg >> val.component >> val.IP >> val.port >> val.info;
123  arg.endStructure();
124  return arg;
125 }
126 
127 TP_QT_EXPORT bool operator==(const CapabilityChange& v1, const CapabilityChange& v2)
128 {
129  return ((v1.handle == v2.handle)
130  && (v1.channelType == v2.channelType)
131  && (v1.oldGenericFlags == v2.oldGenericFlags)
132  && (v1.newGenericFlags == v2.newGenericFlags)
135  );
136 }
137 
138 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CapabilityChange& val)
139 {
140  arg.beginStructure();
141  arg << val.handle << val.channelType << val.oldGenericFlags << val.newGenericFlags << val.oldTypeSpecificFlags << val.newTypeSpecificFlags;
142  arg.endStructure();
143  return arg;
144 }
145 
146 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CapabilityChange& val)
147 {
148  arg.beginStructure();
149  arg >> val.handle >> val.channelType >> val.oldGenericFlags >> val.newGenericFlags >> val.oldTypeSpecificFlags >> val.newTypeSpecificFlags;
150  arg.endStructure();
151  return arg;
152 }
153 
154 TP_QT_EXPORT bool operator==(const CapabilityPair& v1, const CapabilityPair& v2)
155 {
156  return ((v1.channelType == v2.channelType)
158  );
159 }
160 
161 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CapabilityPair& val)
162 {
163  arg.beginStructure();
164  arg << val.channelType << val.typeSpecificFlags;
165  arg.endStructure();
166  return arg;
167 }
168 
169 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CapabilityPair& val)
170 {
171  arg.beginStructure();
172  arg >> val.channelType >> val.typeSpecificFlags;
173  arg.endStructure();
174  return arg;
175 }
176 
177 TP_QT_EXPORT bool operator==(const CaptchaInfo& v1, const CaptchaInfo& v2)
178 {
179  return ((v1.ID == v2.ID)
180  && (v1.type == v2.type)
181  && (v1.label == v2.label)
182  && (v1.flags == v2.flags)
184  );
185 }
186 
187 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CaptchaInfo& val)
188 {
189  arg.beginStructure();
190  arg << val.ID << val.type << val.label << val.flags << val.availableMIMETypes;
191  arg.endStructure();
192  return arg;
193 }
194 
195 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CaptchaInfo& val)
196 {
197  arg.beginStructure();
198  arg >> val.ID >> val.type >> val.label >> val.flags >> val.availableMIMETypes;
199  arg.endStructure();
200  return arg;
201 }
202 
203 TP_QT_EXPORT bool operator==(const ChannelDetails& v1, const ChannelDetails& v2)
204 {
205  return ((v1.channel == v2.channel)
206  && (v1.properties == v2.properties)
207  );
208 }
209 
210 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ChannelDetails& val)
211 {
212  arg.beginStructure();
213  arg << val.channel << val.properties;
214  arg.endStructure();
215  return arg;
216 }
217 
218 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ChannelDetails& val)
219 {
220  arg.beginStructure();
221  arg >> val.channel >> val.properties;
222  arg.endStructure();
223  return arg;
224 }
225 
226 TP_QT_EXPORT bool operator==(const ChannelInfo& v1, const ChannelInfo& v2)
227 {
228  return ((v1.channel == v2.channel)
229  && (v1.channelType == v2.channelType)
230  && (v1.handleType == v2.handleType)
231  && (v1.handle == v2.handle)
232  );
233 }
234 
235 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ChannelInfo& val)
236 {
237  arg.beginStructure();
238  arg << val.channel << val.channelType << val.handleType << val.handle;
239  arg.endStructure();
240  return arg;
241 }
242 
243 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ChannelInfo& val)
244 {
245  arg.beginStructure();
246  arg >> val.channel >> val.channelType >> val.handleType >> val.handle;
247  arg.endStructure();
248  return arg;
249 }
250 
251 TP_QT_EXPORT bool operator==(const ContactCapability& v1, const ContactCapability& v2)
252 {
253  return ((v1.handle == v2.handle)
254  && (v1.channelType == v2.channelType)
255  && (v1.genericFlags == v2.genericFlags)
257  );
258 }
259 
260 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ContactCapability& val)
261 {
262  arg.beginStructure();
263  arg << val.handle << val.channelType << val.genericFlags << val.typeSpecificFlags;
264  arg.endStructure();
265  return arg;
266 }
267 
268 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ContactCapability& val)
269 {
270  arg.beginStructure();
271  arg >> val.handle >> val.channelType >> val.genericFlags >> val.typeSpecificFlags;
272  arg.endStructure();
273  return arg;
274 }
275 
276 TP_QT_EXPORT bool operator==(const ContactInfoField& v1, const ContactInfoField& v2)
277 {
278  return ((v1.fieldName == v2.fieldName)
279  && (v1.parameters == v2.parameters)
280  && (v1.fieldValue == v2.fieldValue)
281  );
282 }
283 
284 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ContactInfoField& val)
285 {
286  arg.beginStructure();
287  arg << val.fieldName << val.parameters << val.fieldValue;
288  arg.endStructure();
289  return arg;
290 }
291 
292 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ContactInfoField& val)
293 {
294  arg.beginStructure();
295  arg >> val.fieldName >> val.parameters >> val.fieldValue;
296  arg.endStructure();
297  return arg;
298 }
299 
300 TP_QT_EXPORT bool operator==(const ContactSubscriptions& v1, const ContactSubscriptions& v2)
301 {
302  return ((v1.subscribe == v2.subscribe)
303  && (v1.publish == v2.publish)
304  && (v1.publishRequest == v2.publishRequest)
305  );
306 }
307 
308 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ContactSubscriptions& val)
309 {
310  arg.beginStructure();
311  arg << val.subscribe << val.publish << val.publishRequest;
312  arg.endStructure();
313  return arg;
314 }
315 
316 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ContactSubscriptions& val)
317 {
318  arg.beginStructure();
319  arg >> val.subscribe >> val.publish >> val.publishRequest;
320  arg.endStructure();
321  return arg;
322 }
323 
324 TP_QT_EXPORT bool operator==(const CurrencyAmount& v1, const CurrencyAmount& v2)
325 {
326  return ((v1.amount == v2.amount)
327  && (v1.scale == v2.scale)
328  && (v1.currency == v2.currency)
329  );
330 }
331 
332 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CurrencyAmount& val)
333 {
334  arg.beginStructure();
335  arg << val.amount << val.scale << val.currency;
336  arg.endStructure();
337  return arg;
338 }
339 
340 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CurrencyAmount& val)
341 {
342  arg.beginStructure();
343  arg >> val.amount >> val.scale >> val.currency;
344  arg.endStructure();
345  return arg;
346 }
347 
348 TP_QT_EXPORT bool operator==(const DBusTubeMember& v1, const DBusTubeMember& v2)
349 {
350  return ((v1.handle == v2.handle)
351  && (v1.uniqueName == v2.uniqueName)
352  );
353 }
354 
355 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const DBusTubeMember& val)
356 {
357  arg.beginStructure();
358  arg << val.handle << val.uniqueName;
359  arg.endStructure();
360  return arg;
361 }
362 
363 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, DBusTubeMember& val)
364 {
365  arg.beginStructure();
366  arg >> val.handle >> val.uniqueName;
367  arg.endStructure();
368  return arg;
369 }
370 
371 TP_QT_EXPORT bool operator==(const DebugMessage& v1, const DebugMessage& v2)
372 {
373  return ((v1.timestamp == v2.timestamp)
374  && (v1.domain == v2.domain)
375  && (v1.level == v2.level)
376  && (v1.message == v2.message)
377  );
378 }
379 
380 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const DebugMessage& val)
381 {
382  arg.beginStructure();
383  arg << val.timestamp << val.domain << val.level << val.message;
384  arg.endStructure();
385  return arg;
386 }
387 
388 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, DebugMessage& val)
389 {
390  arg.beginStructure();
391  arg >> val.timestamp >> val.domain >> val.level >> val.message;
392  arg.endStructure();
393  return arg;
394 }
395 
396 TP_QT_EXPORT bool operator==(const FieldSpec& v1, const FieldSpec& v2)
397 {
398  return ((v1.name == v2.name)
399  && (v1.parameters == v2.parameters)
400  && (v1.flags == v2.flags)
401  && (v1.max == v2.max)
402  );
403 }
404 
405 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const FieldSpec& val)
406 {
407  arg.beginStructure();
408  arg << val.name << val.parameters << val.flags << val.max;
409  arg.endStructure();
410  return arg;
411 }
412 
413 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, FieldSpec& val)
414 {
415  arg.beginStructure();
416  arg >> val.name >> val.parameters >> val.flags >> val.max;
417  arg.endStructure();
418  return arg;
419 }
420 
421 TP_QT_EXPORT bool operator==(const HTTPPostData& v1, const HTTPPostData& v2)
422 {
423  return ((v1.key == v2.key)
424  && (v1.value == v2.value)
425  );
426 }
427 
428 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const HTTPPostData& val)
429 {
430  arg.beginStructure();
431  arg << val.key << val.value;
432  arg.endStructure();
433  return arg;
434 }
435 
436 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, HTTPPostData& val)
437 {
438  arg.beginStructure();
439  arg >> val.key >> val.value;
440  arg.endStructure();
441  return arg;
442 }
443 
444 TP_QT_EXPORT bool operator==(const LocalPendingInfo& v1, const LocalPendingInfo& v2)
445 {
446  return ((v1.toBeAdded == v2.toBeAdded)
447  && (v1.actor == v2.actor)
448  && (v1.reason == v2.reason)
449  && (v1.message == v2.message)
450  );
451 }
452 
453 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const LocalPendingInfo& val)
454 {
455  arg.beginStructure();
456  arg << val.toBeAdded << val.actor << val.reason << val.message;
457  arg.endStructure();
458  return arg;
459 }
460 
461 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, LocalPendingInfo& val)
462 {
463  arg.beginStructure();
464  arg >> val.toBeAdded >> val.actor >> val.reason >> val.message;
465  arg.endStructure();
466  return arg;
467 }
468 
469 TP_QT_EXPORT bool operator==(const MailAddress& v1, const MailAddress& v2)
470 {
471  return ((v1.name == v2.name)
472  && (v1.address == v2.address)
473  );
474 }
475 
476 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MailAddress& val)
477 {
478  arg.beginStructure();
479  arg << val.name << val.address;
480  arg.endStructure();
481  return arg;
482 }
483 
484 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MailAddress& val)
485 {
486  arg.beginStructure();
487  arg >> val.name >> val.address;
488  arg.endStructure();
489  return arg;
490 }
491 
492 TP_QT_EXPORT bool operator==(const MediaDescriptionOffer& v1, const MediaDescriptionOffer& v2)
493 {
494  return ((v1.mediaDescription == v2.mediaDescription)
495  && (v1.properties == v2.properties)
496  );
497 }
498 
499 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaDescriptionOffer& val)
500 {
501  arg.beginStructure();
502  arg << val.mediaDescription << val.properties;
503  arg.endStructure();
504  return arg;
505 }
506 
507 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaDescriptionOffer& val)
508 {
509  arg.beginStructure();
510  arg >> val.mediaDescription >> val.properties;
511  arg.endStructure();
512  return arg;
513 }
514 
515 TP_QT_EXPORT bool operator==(const MediaSessionHandlerInfo& v1, const MediaSessionHandlerInfo& v2)
516 {
517  return ((v1.sessionHandler == v2.sessionHandler)
518  && (v1.mediaSessionType == v2.mediaSessionType)
519  );
520 }
521 
522 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaSessionHandlerInfo& val)
523 {
524  arg.beginStructure();
525  arg << val.sessionHandler << val.mediaSessionType;
526  arg.endStructure();
527  return arg;
528 }
529 
530 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaSessionHandlerInfo& val)
531 {
532  arg.beginStructure();
533  arg >> val.sessionHandler >> val.mediaSessionType;
534  arg.endStructure();
535  return arg;
536 }
537 
539 {
540  return ((v1.componentNumber == v2.componentNumber)
541  && (v1.IPAddress == v2.IPAddress)
542  && (v1.port == v2.port)
543  && (v1.protocol == v2.protocol)
544  && (v1.subtype == v2.subtype)
545  && (v1.profile == v2.profile)
546  && (v1.preferenceValue == v2.preferenceValue)
547  && (v1.transportType == v2.transportType)
548  && (v1.username == v2.username)
549  && (v1.password == v2.password)
550  );
551 }
552 
553 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamHandlerTransport& val)
554 {
555  arg.beginStructure();
556  arg << val.componentNumber << val.IPAddress << val.port << val.protocol << val.subtype << val.profile << val.preferenceValue << val.transportType << val.username << val.password;
557  arg.endStructure();
558  return arg;
559 }
560 
561 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamHandlerTransport& val)
562 {
563  arg.beginStructure();
564  arg >> val.componentNumber >> val.IPAddress >> val.port >> val.protocol >> val.subtype >> val.profile >> val.preferenceValue >> val.transportType >> val.username >> val.password;
565  arg.endStructure();
566  return arg;
567 }
568 
569 TP_QT_EXPORT bool operator==(const MediaStreamInfo& v1, const MediaStreamInfo& v2)
570 {
571  return ((v1.identifier == v2.identifier)
572  && (v1.contact == v2.contact)
573  && (v1.type == v2.type)
574  && (v1.state == v2.state)
575  && (v1.direction == v2.direction)
576  && (v1.pendingSendFlags == v2.pendingSendFlags)
577  );
578 }
579 
580 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamInfo& val)
581 {
582  arg.beginStructure();
583  arg << val.identifier << val.contact << val.type << val.state << val.direction << val.pendingSendFlags;
584  arg.endStructure();
585  return arg;
586 }
587 
588 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamInfo& val)
589 {
590  arg.beginStructure();
591  arg >> val.identifier >> val.contact >> val.type >> val.state >> val.direction >> val.pendingSendFlags;
592  arg.endStructure();
593  return arg;
594 }
595 
596 TP_QT_EXPORT bool operator==(const NotDelegatedError& v1, const NotDelegatedError& v2)
597 {
598  return ((v1.errorName == v2.errorName)
599  && (v1.errorMessage == v2.errorMessage)
600  );
601 }
602 
603 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const NotDelegatedError& val)
604 {
605  arg.beginStructure();
606  arg << val.errorName << val.errorMessage;
607  arg.endStructure();
608  return arg;
609 }
610 
611 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, NotDelegatedError& val)
612 {
613  arg.beginStructure();
614  arg >> val.errorName >> val.errorMessage;
615  arg.endStructure();
616  return arg;
617 }
618 
619 TP_QT_EXPORT bool operator==(const ParamSpec& v1, const ParamSpec& v2)
620 {
621  return ((v1.name == v2.name)
622  && (v1.flags == v2.flags)
623  && (v1.signature == v2.signature)
624  && (v1.defaultValue.variant() == v2.defaultValue.variant())
625  );
626 }
627 
628 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ParamSpec& val)
629 {
630  arg.beginStructure();
631  arg << val.name << val.flags << val.signature << val.defaultValue;
632  arg.endStructure();
633  return arg;
634 }
635 
636 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ParamSpec& val)
637 {
638  arg.beginStructure();
639  arg >> val.name >> val.flags >> val.signature >> val.defaultValue;
640  arg.endStructure();
641  return arg;
642 }
643 
644 TP_QT_EXPORT bool operator==(const PendingTextMessage& v1, const PendingTextMessage& v2)
645 {
646  return ((v1.identifier == v2.identifier)
647  && (v1.unixTimestamp == v2.unixTimestamp)
648  && (v1.sender == v2.sender)
649  && (v1.messageType == v2.messageType)
650  && (v1.flags == v2.flags)
651  && (v1.text == v2.text)
652  );
653 }
654 
655 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PendingTextMessage& val)
656 {
657  arg.beginStructure();
658  arg << val.identifier << val.unixTimestamp << val.sender << val.messageType << val.flags << val.text;
659  arg.endStructure();
660  return arg;
661 }
662 
663 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PendingTextMessage& val)
664 {
665  arg.beginStructure();
666  arg >> val.identifier >> val.unixTimestamp >> val.sender >> val.messageType >> val.flags >> val.text;
667  arg.endStructure();
668  return arg;
669 }
670 
671 TP_QT_EXPORT bool operator==(const PropertyFlagsChange& v1, const PropertyFlagsChange& v2)
672 {
673  return ((v1.propertyID == v2.propertyID)
674  && (v1.newFlags == v2.newFlags)
675  );
676 }
677 
678 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PropertyFlagsChange& val)
679 {
680  arg.beginStructure();
681  arg << val.propertyID << val.newFlags;
682  arg.endStructure();
683  return arg;
684 }
685 
686 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PropertyFlagsChange& val)
687 {
688  arg.beginStructure();
689  arg >> val.propertyID >> val.newFlags;
690  arg.endStructure();
691  return arg;
692 }
693 
694 TP_QT_EXPORT bool operator==(const PropertySpec& v1, const PropertySpec& v2)
695 {
696  return ((v1.propertyID == v2.propertyID)
697  && (v1.name == v2.name)
698  && (v1.signature == v2.signature)
699  && (v1.flags == v2.flags)
700  );
701 }
702 
703 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PropertySpec& val)
704 {
705  arg.beginStructure();
706  arg << val.propertyID << val.name << val.signature << val.flags;
707  arg.endStructure();
708  return arg;
709 }
710 
711 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PropertySpec& val)
712 {
713  arg.beginStructure();
714  arg >> val.propertyID >> val.name >> val.signature >> val.flags;
715  arg.endStructure();
716  return arg;
717 }
718 
719 TP_QT_EXPORT bool operator==(const PropertyValue& v1, const PropertyValue& v2)
720 {
721  return ((v1.identifier == v2.identifier)
722  && (v1.value.variant() == v2.value.variant())
723  );
724 }
725 
726 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const PropertyValue& val)
727 {
728  arg.beginStructure();
729  arg << val.identifier << val.value;
730  arg.endStructure();
731  return arg;
732 }
733 
734 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, PropertyValue& val)
735 {
736  arg.beginStructure();
737  arg >> val.identifier >> val.value;
738  arg.endStructure();
739  return arg;
740 }
741 
742 TP_QT_EXPORT bool operator==(const RTCPFeedbackMessage& v1, const RTCPFeedbackMessage& v2)
743 {
744  return ((v1.type == v2.type)
745  && (v1.subtype == v2.subtype)
746  && (v1.parameters == v2.parameters)
747  );
748 }
749 
750 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RTCPFeedbackMessage& val)
751 {
752  arg.beginStructure();
753  arg << val.type << val.subtype << val.parameters;
754  arg.endStructure();
755  return arg;
756 }
757 
758 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RTCPFeedbackMessage& val)
759 {
760  arg.beginStructure();
761  arg >> val.type >> val.subtype >> val.parameters;
762  arg.endStructure();
763  return arg;
764 }
765 
766 TP_QT_EXPORT bool operator==(const RTPHeaderExtension& v1, const RTPHeaderExtension& v2)
767 {
768  return ((v1.ID == v2.ID)
769  && (v1.direction == v2.direction)
770  && (v1.URI == v2.URI)
771  && (v1.parameters == v2.parameters)
772  );
773 }
774 
775 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RTPHeaderExtension& val)
776 {
777  arg.beginStructure();
778  arg << val.ID << val.direction << val.URI << val.parameters;
779  arg.endStructure();
780  return arg;
781 }
782 
783 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RTPHeaderExtension& val)
784 {
785  arg.beginStructure();
786  arg >> val.ID >> val.direction >> val.URI >> val.parameters;
787  arg.endStructure();
788  return arg;
789 }
790 
791 TP_QT_EXPORT bool operator==(const RequestableChannelClass& v1, const RequestableChannelClass& v2)
792 {
793  return ((v1.fixedProperties == v2.fixedProperties)
795  );
796 }
797 
798 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RequestableChannelClass& val)
799 {
800  arg.beginStructure();
801  arg << val.fixedProperties << val.allowedProperties;
802  arg.endStructure();
803  return arg;
804 }
805 
806 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RequestableChannelClass& val)
807 {
808  arg.beginStructure();
809  arg >> val.fixedProperties >> val.allowedProperties;
810  arg.endStructure();
811  return arg;
812 }
813 
814 TP_QT_EXPORT bool operator==(const RichPresenceAccessControl& v1, const RichPresenceAccessControl& v2)
815 {
816  return ((v1.type == v2.type)
817  && (v1.detail.variant() == v2.detail.variant())
818  );
819 }
820 
821 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RichPresenceAccessControl& val)
822 {
823  arg.beginStructure();
824  arg << val.type << val.detail;
825  arg.endStructure();
826  return arg;
827 }
828 
829 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RichPresenceAccessControl& val)
830 {
831  arg.beginStructure();
832  arg >> val.type >> val.detail;
833  arg.endStructure();
834  return arg;
835 }
836 
837 TP_QT_EXPORT bool operator==(const RoomInfo& v1, const RoomInfo& v2)
838 {
839  return ((v1.handle == v2.handle)
840  && (v1.channelType == v2.channelType)
841  && (v1.info == v2.info)
842  );
843 }
844 
845 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RoomInfo& val)
846 {
847  arg.beginStructure();
848  arg << val.handle << val.channelType << val.info;
849  arg.endStructure();
850  return arg;
851 }
852 
853 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RoomInfo& val)
854 {
855  arg.beginStructure();
856  arg >> val.handle >> val.channelType >> val.info;
857  arg.endStructure();
858  return arg;
859 }
860 
861 TP_QT_EXPORT bool operator==(const ServicePoint& v1, const ServicePoint& v2)
862 {
863  return ((v1.servicePointType == v2.servicePointType)
864  && (v1.service == v2.service)
865  );
866 }
867 
868 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ServicePoint& val)
869 {
870  arg.beginStructure();
871  arg << val.servicePointType << val.service;
872  arg.endStructure();
873  return arg;
874 }
875 
876 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ServicePoint& val)
877 {
878  arg.beginStructure();
879  arg >> val.servicePointType >> val.service;
880  arg.endStructure();
881  return arg;
882 }
883 
884 TP_QT_EXPORT bool operator==(const SimplePresence& v1, const SimplePresence& v2)
885 {
886  return ((v1.type == v2.type)
887  && (v1.status == v2.status)
888  && (v1.statusMessage == v2.statusMessage)
889  );
890 }
891 
892 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SimplePresence& val)
893 {
894  arg.beginStructure();
895  arg << val.type << val.status << val.statusMessage;
896  arg.endStructure();
897  return arg;
898 }
899 
900 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SimplePresence& val)
901 {
902  arg.beginStructure();
903  arg >> val.type >> val.status >> val.statusMessage;
904  arg.endStructure();
905  return arg;
906 }
907 
908 TP_QT_EXPORT bool operator==(const SimpleStatusSpec& v1, const SimpleStatusSpec& v2)
909 {
910  return ((v1.type == v2.type)
911  && (v1.maySetOnSelf == v2.maySetOnSelf)
912  && (v1.canHaveMessage == v2.canHaveMessage)
913  );
914 }
915 
916 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SimpleStatusSpec& val)
917 {
918  arg.beginStructure();
919  arg << val.type << val.maySetOnSelf << val.canHaveMessage;
920  arg.endStructure();
921  return arg;
922 }
923 
924 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SimpleStatusSpec& val)
925 {
926  arg.beginStructure();
927  arg >> val.type >> val.maySetOnSelf >> val.canHaveMessage;
928  arg.endStructure();
929  return arg;
930 }
931 
932 TP_QT_EXPORT bool operator==(const SocketAddressIP& v1, const SocketAddressIP& v2)
933 {
934  return ((v1.address == v2.address)
935  && (v1.port == v2.port)
936  );
937 }
938 
939 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIP& val)
940 {
941  arg.beginStructure();
942  arg << val.address << val.port;
943  arg.endStructure();
944  return arg;
945 }
946 
947 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIP& val)
948 {
949  arg.beginStructure();
950  arg >> val.address >> val.port;
951  arg.endStructure();
952  return arg;
953 }
954 
955 TP_QT_EXPORT bool operator==(const SocketAddressIPv4& v1, const SocketAddressIPv4& v2)
956 {
957  return ((v1.address == v2.address)
958  && (v1.port == v2.port)
959  );
960 }
961 
962 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIPv4& val)
963 {
964  arg.beginStructure();
965  arg << val.address << val.port;
966  arg.endStructure();
967  return arg;
968 }
969 
970 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIPv4& val)
971 {
972  arg.beginStructure();
973  arg >> val.address >> val.port;
974  arg.endStructure();
975  return arg;
976 }
977 
978 TP_QT_EXPORT bool operator==(const SocketAddressIPv6& v1, const SocketAddressIPv6& v2)
979 {
980  return ((v1.address == v2.address)
981  && (v1.port == v2.port)
982  );
983 }
984 
985 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIPv6& val)
986 {
987  arg.beginStructure();
988  arg << val.address << val.port;
989  arg.endStructure();
990  return arg;
991 }
992 
993 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIPv6& val)
994 {
995  arg.beginStructure();
996  arg >> val.address >> val.port;
997  arg.endStructure();
998  return arg;
999 }
1000 
1001 TP_QT_EXPORT bool operator==(const SocketNetmaskIPv4& v1, const SocketNetmaskIPv4& v2)
1002 {
1003  return ((v1.address == v2.address)
1004  && (v1.prefixLength == v2.prefixLength)
1005  );
1006 }
1007 
1008 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketNetmaskIPv4& val)
1009 {
1010  arg.beginStructure();
1011  arg << val.address << val.prefixLength;
1012  arg.endStructure();
1013  return arg;
1014 }
1015 
1016 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketNetmaskIPv4& val)
1017 {
1018  arg.beginStructure();
1019  arg >> val.address >> val.prefixLength;
1020  arg.endStructure();
1021  return arg;
1022 }
1023 
1024 TP_QT_EXPORT bool operator==(const SocketNetmaskIPv6& v1, const SocketNetmaskIPv6& v2)
1025 {
1026  return ((v1.address == v2.address)
1027  && (v1.prefixLength == v2.prefixLength)
1028  );
1029 }
1030 
1031 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketNetmaskIPv6& val)
1032 {
1033  arg.beginStructure();
1034  arg << val.address << val.prefixLength;
1035  arg.endStructure();
1036  return arg;
1037 }
1038 
1039 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketNetmaskIPv6& val)
1040 {
1041  arg.beginStructure();
1042  arg >> val.address >> val.prefixLength;
1043  arg.endStructure();
1044  return arg;
1045 }
1046 
1047 TP_QT_EXPORT bool operator==(const StreamCredentials& v1, const StreamCredentials& v2)
1048 {
1049  return ((v1.username == v2.username)
1050  && (v1.password == v2.password)
1051  );
1052 }
1053 
1054 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const StreamCredentials& val)
1055 {
1056  arg.beginStructure();
1057  arg << val.username << val.password;
1058  arg.endStructure();
1059  return arg;
1060 }
1061 
1062 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, StreamCredentials& val)
1063 {
1064  arg.beginStructure();
1065  arg >> val.username >> val.password;
1066  arg.endStructure();
1067  return arg;
1068 }
1069 
1070 TP_QT_EXPORT bool operator==(const TLSCertificateRejection& v1, const TLSCertificateRejection& v2)
1071 {
1072  return ((v1.reason == v2.reason)
1073  && (v1.error == v2.error)
1074  && (v1.details == v2.details)
1075  );
1076 }
1077 
1078 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const TLSCertificateRejection& val)
1079 {
1080  arg.beginStructure();
1081  arg << val.reason << val.error << val.details;
1082  arg.endStructure();
1083  return arg;
1084 }
1085 
1086 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, TLSCertificateRejection& val)
1087 {
1088  arg.beginStructure();
1089  arg >> val.reason >> val.error >> val.details;
1090  arg.endStructure();
1091  return arg;
1092 }
1093 
1094 TP_QT_EXPORT bool operator==(const TubeInfo& v1, const TubeInfo& v2)
1095 {
1096  return ((v1.identifier == v2.identifier)
1097  && (v1.initiator == v2.initiator)
1098  && (v1.type == v2.type)
1099  && (v1.service == v2.service)
1100  && (v1.parameters == v2.parameters)
1101  && (v1.state == v2.state)
1102  );
1103 }
1104 
1105 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const TubeInfo& val)
1106 {
1107  arg.beginStructure();
1108  arg << val.identifier << val.initiator << val.type << val.service << val.parameters << val.state;
1109  arg.endStructure();
1110  return arg;
1111 }
1112 
1113 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, TubeInfo& val)
1114 {
1115  arg.beginStructure();
1116  arg >> val.identifier >> val.initiator >> val.type >> val.service >> val.parameters >> val.state;
1117  arg.endStructure();
1118  return arg;
1119 }
1120 
1121 TP_QT_EXPORT bool operator==(const VideoResolution& v1, const VideoResolution& v2)
1122 {
1123  return ((v1.width == v2.width)
1124  && (v1.height == v2.height)
1125  );
1126 }
1127 
1128 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const VideoResolution& val)
1129 {
1130  arg.beginStructure();
1131  arg << val.width << val.height;
1132  arg.endStructure();
1133  return arg;
1134 }
1135 
1136 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, VideoResolution& val)
1137 {
1138  arg.beginStructure();
1139  arg >> val.width >> val.height;
1140  arg.endStructure();
1141  return arg;
1142 }
1143 
1144 TP_QT_EXPORT bool operator==(const CandidatePair& v1, const CandidatePair& v2)
1145 {
1146  return ((v1.local == v2.local)
1147  && (v1.remote == v2.remote)
1148  );
1149 }
1150 
1151 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const CandidatePair& val)
1152 {
1153  arg.beginStructure();
1154  arg << val.local << val.remote;
1155  arg.endStructure();
1156  return arg;
1157 }
1158 
1159 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, CandidatePair& val)
1160 {
1161  arg.beginStructure();
1162  arg >> val.local >> val.remote;
1163  arg.endStructure();
1164  return arg;
1165 }
1166 
1167 TP_QT_EXPORT bool operator==(const Codec& v1, const Codec& v2)
1168 {
1169  return ((v1.identifier == v2.identifier)
1170  && (v1.name == v2.name)
1171  && (v1.clockrate == v2.clockrate)
1172  && (v1.channels == v2.channels)
1173  && (v1.updated == v2.updated)
1174  && (v1.parameters == v2.parameters)
1175  );
1176 }
1177 
1178 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const Codec& val)
1179 {
1180  arg.beginStructure();
1181  arg << val.identifier << val.name << val.clockrate << val.channels << val.updated << val.parameters;
1182  arg.endStructure();
1183  return arg;
1184 }
1185 
1186 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, Codec& val)
1187 {
1188  arg.beginStructure();
1189  arg >> val.identifier >> val.name >> val.clockrate >> val.channels >> val.updated >> val.parameters;
1190  arg.endStructure();
1191  return arg;
1192 }
1193 
1194 TP_QT_EXPORT bool operator==(const HandlerCapabilities& v1, const HandlerCapabilities& v2)
1195 {
1196  return ((v1.wellKnownName == v2.wellKnownName)
1197  && (v1.channelClasses == v2.channelClasses)
1198  && (v1.capabilities == v2.capabilities)
1199  );
1200 }
1201 
1202 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const HandlerCapabilities& val)
1203 {
1204  arg.beginStructure();
1205  arg << val.wellKnownName << val.channelClasses << val.capabilities;
1206  arg.endStructure();
1207  return arg;
1208 }
1209 
1210 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, HandlerCapabilities& val)
1211 {
1212  arg.beginStructure();
1213  arg >> val.wellKnownName >> val.channelClasses >> val.capabilities;
1214  arg.endStructure();
1215  return arg;
1216 }
1217 
1218 TP_QT_EXPORT bool operator==(const LastActivityAndStatuses& v1, const LastActivityAndStatuses& v2)
1219 {
1220  return ((v1.lastActivity == v2.lastActivity)
1221  && (v1.statuses == v2.statuses)
1222  );
1223 }
1224 
1225 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const LastActivityAndStatuses& val)
1226 {
1227  arg.beginStructure();
1228  arg << val.lastActivity << val.statuses;
1229  arg.endStructure();
1230  return arg;
1231 }
1232 
1233 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, LastActivityAndStatuses& val)
1234 {
1235  arg.beginStructure();
1236  arg >> val.lastActivity >> val.statuses;
1237  arg.endStructure();
1238  return arg;
1239 }
1240 
1241 TP_QT_EXPORT bool operator==(const MailURL& v1, const MailURL& v2)
1242 {
1243  return ((v1.URL == v2.URL)
1244  && (v1.method == v2.method)
1245  && (v1.postData == v2.postData)
1246  );
1247 }
1248 
1249 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MailURL& val)
1250 {
1251  arg.beginStructure();
1252  arg << val.URL << val.method << val.postData;
1253  arg.endStructure();
1254  return arg;
1255 }
1256 
1257 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MailURL& val)
1258 {
1259  arg.beginStructure();
1260  arg >> val.URL >> val.method >> val.postData;
1261  arg.endStructure();
1262  return arg;
1263 }
1264 
1266 {
1267  return ((v1.name == v2.name)
1268  && (v1.transports == v2.transports)
1269  );
1270 }
1271 
1272 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamHandlerCandidate& val)
1273 {
1274  arg.beginStructure();
1275  arg << val.name << val.transports;
1276  arg.endStructure();
1277  return arg;
1278 }
1279 
1280 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamHandlerCandidate& val)
1281 {
1282  arg.beginStructure();
1283  arg >> val.name >> val.transports;
1284  arg.endStructure();
1285  return arg;
1286 }
1287 
1288 TP_QT_EXPORT bool operator==(const MediaStreamHandlerCodec& v1, const MediaStreamHandlerCodec& v2)
1289 {
1290  return ((v1.codecID == v2.codecID)
1291  && (v1.name == v2.name)
1292  && (v1.mediaType == v2.mediaType)
1293  && (v1.clockRate == v2.clockRate)
1294  && (v1.numberOfChannels == v2.numberOfChannels)
1295  && (v1.parameters == v2.parameters)
1296  );
1297 }
1298 
1299 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const MediaStreamHandlerCodec& val)
1300 {
1301  arg.beginStructure();
1302  arg << val.codecID << val.name << val.mediaType << val.clockRate << val.numberOfChannels << val.parameters;
1303  arg.endStructure();
1304  return arg;
1305 }
1306 
1307 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, MediaStreamHandlerCodec& val)
1308 {
1309  arg.beginStructure();
1310  arg >> val.codecID >> val.name >> val.mediaType >> val.clockRate >> val.numberOfChannels >> val.parameters;
1311  arg.endStructure();
1312  return arg;
1313 }
1314 
1316 {
1317  return ((v1.RTCPMinimumInterval == v2.RTCPMinimumInterval)
1318  && (v1.messages == v2.messages)
1319  );
1320 }
1321 
1322 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const RTCPFeedbackMessageProperties& val)
1323 {
1324  arg.beginStructure();
1325  arg << val.RTCPMinimumInterval << val.messages;
1326  arg.endStructure();
1327  return arg;
1328 }
1329 
1330 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, RTCPFeedbackMessageProperties& val)
1331 {
1332  arg.beginStructure();
1333  arg >> val.RTCPMinimumInterval >> val.messages;
1334  arg.endStructure();
1335  return arg;
1336 }
1337 
1338 TP_QT_EXPORT bool operator==(const ServicePointInfo& v1, const ServicePointInfo& v2)
1339 {
1340  return ((v1.servicePoint == v2.servicePoint)
1341  && (v1.serviceIDs == v2.serviceIDs)
1342  );
1343 }
1344 
1345 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const ServicePointInfo& val)
1346 {
1347  arg.beginStructure();
1348  arg << val.servicePoint << val.serviceIDs;
1349  arg.endStructure();
1350  return arg;
1351 }
1352 
1353 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, ServicePointInfo& val)
1354 {
1355  arg.beginStructure();
1356  arg >> val.servicePoint >> val.serviceIDs;
1357  arg.endStructure();
1358  return arg;
1359 }
1360 
1361 TP_QT_EXPORT bool operator==(const StatusSpec& v1, const StatusSpec& v2)
1362 {
1363  return ((v1.type == v2.type)
1364  && (v1.maySetOnSelf == v2.maySetOnSelf)
1365  && (v1.exclusive == v2.exclusive)
1366  && (v1.parameterTypes == v2.parameterTypes)
1367  );
1368 }
1369 
1370 TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const StatusSpec& val)
1371 {
1372  arg.beginStructure();
1373  arg << val.type << val.maySetOnSelf << val.exclusive << val.parameterTypes;
1374  arg.endStructure();
1375  return arg;
1376 }
1377 
1378 TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, StatusSpec& val)
1379 {
1380  arg.beginStructure();
1381  arg >> val.type >> val.maySetOnSelf >> val.exclusive >> val.parameterTypes;
1382  arg.endStructure();
1383  return arg;
1384 }
1385 
1386 TP_QT_NO_EXPORT void _registerTypes()
1387 {
1388  static bool registered = false;
1389  if (registered)
1390  return;
1391  registered = true;
1392 
1393  qDBusRegisterMetaType<Tp::AccessControl>();
1394  qDBusRegisterMetaType<Tp::AddressingNormalizationMap>();
1395  qDBusRegisterMetaType<Tp::AliasMap>();
1396  qDBusRegisterMetaType<Tp::AliasPair>();
1397  qDBusRegisterMetaType<Tp::AliasPairList>();
1398  qDBusRegisterMetaType<Tp::Avatar>();
1399  qDBusRegisterMetaType<Tp::AvatarTokenMap>();
1400  qDBusRegisterMetaType<Tp::ByteArrayList>();
1401  qDBusRegisterMetaType<Tp::CallMemberMap>();
1402  qDBusRegisterMetaType<Tp::CallMemberMapList>();
1403  qDBusRegisterMetaType<Tp::CallStateReason>();
1404  qDBusRegisterMetaType<Tp::Candidate>();
1405  qDBusRegisterMetaType<Tp::CandidateInfo>();
1406  qDBusRegisterMetaType<Tp::CandidateList>();
1407  qDBusRegisterMetaType<Tp::CandidatePair>();
1408  qDBusRegisterMetaType<Tp::CandidatePairList>();
1409  qDBusRegisterMetaType<Tp::CapabilityChange>();
1410  qDBusRegisterMetaType<Tp::CapabilityChangeList>();
1411  qDBusRegisterMetaType<Tp::CapabilityPair>();
1412  qDBusRegisterMetaType<Tp::CapabilityPairList>();
1413  qDBusRegisterMetaType<Tp::CaptchaAnswers>();
1414  qDBusRegisterMetaType<Tp::CaptchaInfo>();
1415  qDBusRegisterMetaType<Tp::CaptchaInfoList>();
1416  qDBusRegisterMetaType<Tp::ChannelCallStateMap>();
1417  qDBusRegisterMetaType<Tp::ChannelClass>();
1418  qDBusRegisterMetaType<Tp::ChannelClassList>();
1419  qDBusRegisterMetaType<Tp::ChannelDetails>();
1420  qDBusRegisterMetaType<Tp::ChannelDetailsList>();
1421  qDBusRegisterMetaType<Tp::ChannelInfo>();
1422  qDBusRegisterMetaType<Tp::ChannelInfoList>();
1423  qDBusRegisterMetaType<Tp::ChannelOriginatorMap>();
1424  qDBusRegisterMetaType<Tp::ChatStateMap>();
1425  qDBusRegisterMetaType<Tp::Codec>();
1426  qDBusRegisterMetaType<Tp::CodecList>();
1427  qDBusRegisterMetaType<Tp::ComponentStateMap>();
1428  qDBusRegisterMetaType<Tp::ContactAttributesMap>();
1429  qDBusRegisterMetaType<Tp::ContactCapabilitiesMap>();
1430  qDBusRegisterMetaType<Tp::ContactCapabilitiesMapList>();
1431  qDBusRegisterMetaType<Tp::ContactCapability>();
1432  qDBusRegisterMetaType<Tp::ContactCapabilityList>();
1433  qDBusRegisterMetaType<Tp::ContactClientTypes>();
1434  qDBusRegisterMetaType<Tp::ContactCodecMap>();
1435  qDBusRegisterMetaType<Tp::ContactInfoField>();
1436  qDBusRegisterMetaType<Tp::ContactInfoFieldList>();
1437  qDBusRegisterMetaType<Tp::ContactInfoMap>();
1438  qDBusRegisterMetaType<Tp::ContactLocations>();
1439  qDBusRegisterMetaType<Tp::ContactMediaDescriptionPropertiesMap>();
1440  qDBusRegisterMetaType<Tp::ContactPresences>();
1441  qDBusRegisterMetaType<Tp::ContactSSRCsMap>();
1442  qDBusRegisterMetaType<Tp::ContactSearchMap>();
1443  qDBusRegisterMetaType<Tp::ContactSearchResultMap>();
1444  qDBusRegisterMetaType<Tp::ContactSendingStateMap>();
1445  qDBusRegisterMetaType<Tp::ContactSubscriptionMap>();
1446  qDBusRegisterMetaType<Tp::ContactSubscriptions>();
1447  qDBusRegisterMetaType<Tp::CurrencyAmount>();
1448  qDBusRegisterMetaType<Tp::DBusTubeMember>();
1449  qDBusRegisterMetaType<Tp::DBusTubeMemberList>();
1450  qDBusRegisterMetaType<Tp::DBusTubeParticipants>();
1451  qDBusRegisterMetaType<Tp::DebugMessage>();
1452  qDBusRegisterMetaType<Tp::DebugMessageList>();
1453  qDBusRegisterMetaType<Tp::FieldSpec>();
1454  qDBusRegisterMetaType<Tp::FieldSpecs>();
1455  qDBusRegisterMetaType<Tp::HTTPPostData>();
1456  qDBusRegisterMetaType<Tp::HTTPPostDataList>();
1457  qDBusRegisterMetaType<Tp::HandleIdentifierMap>();
1458  qDBusRegisterMetaType<Tp::HandleOwnerMap>();
1459  qDBusRegisterMetaType<Tp::HandlerCapabilities>();
1460  qDBusRegisterMetaType<Tp::HandlerCapabilitiesList>();
1461  qDBusRegisterMetaType<Tp::LastActivityAndStatuses>();
1462  qDBusRegisterMetaType<Tp::LocalPendingInfo>();
1463  qDBusRegisterMetaType<Tp::LocalPendingInfoList>();
1464  qDBusRegisterMetaType<Tp::Location>();
1465  qDBusRegisterMetaType<Tp::Mail>();
1466  qDBusRegisterMetaType<Tp::MailAddress>();
1467  qDBusRegisterMetaType<Tp::MailAddressList>();
1468  qDBusRegisterMetaType<Tp::MailList>();
1469  qDBusRegisterMetaType<Tp::MailURL>();
1470  qDBusRegisterMetaType<Tp::MediaDescriptionOffer>();
1471  qDBusRegisterMetaType<Tp::MediaDescriptionProperties>();
1472  qDBusRegisterMetaType<Tp::MediaSessionHandlerInfo>();
1473  qDBusRegisterMetaType<Tp::MediaSessionHandlerInfoList>();
1474  qDBusRegisterMetaType<Tp::MediaStreamHandlerCandidate>();
1475  qDBusRegisterMetaType<Tp::MediaStreamHandlerCandidateList>();
1476  qDBusRegisterMetaType<Tp::MediaStreamHandlerCodec>();
1477  qDBusRegisterMetaType<Tp::MediaStreamHandlerCodecList>();
1478  qDBusRegisterMetaType<Tp::MediaStreamHandlerTransport>();
1479  qDBusRegisterMetaType<Tp::MediaStreamHandlerTransportList>();
1480  qDBusRegisterMetaType<Tp::MediaStreamInfo>();
1481  qDBusRegisterMetaType<Tp::MediaStreamInfoList>();
1482  qDBusRegisterMetaType<Tp::MessagePart>();
1483  qDBusRegisterMetaType<Tp::MessagePartContentMap>();
1484  qDBusRegisterMetaType<Tp::MessagePartList>();
1485  qDBusRegisterMetaType<Tp::MessagePartListList>();
1486  qDBusRegisterMetaType<Tp::Metadata>();
1487  qDBusRegisterMetaType<Tp::MultipleStatusMap>();
1488  qDBusRegisterMetaType<Tp::NotDelegatedError>();
1489  qDBusRegisterMetaType<Tp::NotDelegatedMap>();
1490  qDBusRegisterMetaType<Tp::ObjectImmutablePropertiesMap>();
1491  qDBusRegisterMetaType<Tp::ObjectImmutablePropertiesMapList>();
1492  qDBusRegisterMetaType<Tp::ObjectPathList>();
1493  qDBusRegisterMetaType<Tp::ParamSpec>();
1494  qDBusRegisterMetaType<Tp::ParamSpecList>();
1495  qDBusRegisterMetaType<Tp::PendingTextMessage>();
1496  qDBusRegisterMetaType<Tp::PendingTextMessageList>();
1497  qDBusRegisterMetaType<Tp::PropertyFlagsChange>();
1498  qDBusRegisterMetaType<Tp::PropertyFlagsChangeList>();
1499  qDBusRegisterMetaType<Tp::PropertySpec>();
1500  qDBusRegisterMetaType<Tp::PropertySpecList>();
1501  qDBusRegisterMetaType<Tp::PropertyValue>();
1502  qDBusRegisterMetaType<Tp::PropertyValueList>();
1503  qDBusRegisterMetaType<Tp::ProtocolPropertiesMap>();
1504  qDBusRegisterMetaType<Tp::QualifiedPropertyValueMap>();
1505  qDBusRegisterMetaType<Tp::QualifiedPropertyValueMapList>();
1506  qDBusRegisterMetaType<Tp::RTCPFeedbackMessage>();
1507  qDBusRegisterMetaType<Tp::RTCPFeedbackMessageList>();
1508  qDBusRegisterMetaType<Tp::RTCPFeedbackMessageMap>();
1509  qDBusRegisterMetaType<Tp::RTCPFeedbackMessageProperties>();
1510  qDBusRegisterMetaType<Tp::RTPHeaderExtension>();
1511  qDBusRegisterMetaType<Tp::RTPHeaderExtensionsList>();
1512  qDBusRegisterMetaType<Tp::RequestableChannelClass>();
1513  qDBusRegisterMetaType<Tp::RequestableChannelClassList>();
1514  qDBusRegisterMetaType<Tp::RichPresenceAccessControl>();
1515  qDBusRegisterMetaType<Tp::RoomInfo>();
1516  qDBusRegisterMetaType<Tp::RoomInfoList>();
1517  qDBusRegisterMetaType<Tp::ServicePoint>();
1518  qDBusRegisterMetaType<Tp::ServicePointInfo>();
1519  qDBusRegisterMetaType<Tp::ServicePointInfoList>();
1520  qDBusRegisterMetaType<Tp::SimpleContactPresences>();
1521  qDBusRegisterMetaType<Tp::SimplePresence>();
1522  qDBusRegisterMetaType<Tp::SimpleStatusSpec>();
1523  qDBusRegisterMetaType<Tp::SimpleStatusSpecMap>();
1524  qDBusRegisterMetaType<Tp::SingleContactAttributesMap>();
1525  qDBusRegisterMetaType<Tp::SocketAddressIP>();
1526  qDBusRegisterMetaType<Tp::SocketAddressIPList>();
1527  qDBusRegisterMetaType<Tp::SocketAddressIPv4>();
1528  qDBusRegisterMetaType<Tp::SocketAddressIPv6>();
1529  qDBusRegisterMetaType<Tp::SocketNetmaskIPv4>();
1530  qDBusRegisterMetaType<Tp::SocketNetmaskIPv6>();
1531  qDBusRegisterMetaType<Tp::StatusSpec>();
1532  qDBusRegisterMetaType<Tp::StatusSpecMap>();
1533  qDBusRegisterMetaType<Tp::StreamCredentials>();
1534  qDBusRegisterMetaType<Tp::StringStringMap>();
1535  qDBusRegisterMetaType<Tp::StringStringMapList>();
1536  qDBusRegisterMetaType<Tp::StringVariantMap>();
1537  qDBusRegisterMetaType<Tp::StringVariantMapList>();
1538  qDBusRegisterMetaType<Tp::SupportedSocketMap>();
1539  qDBusRegisterMetaType<Tp::TLSCertificateRejection>();
1540  qDBusRegisterMetaType<Tp::TLSCertificateRejectionList>();
1541  qDBusRegisterMetaType<Tp::TubeInfo>();
1542  qDBusRegisterMetaType<Tp::TubeInfoList>();
1543  qDBusRegisterMetaType<Tp::UIntList>();
1544  qDBusRegisterMetaType<Tp::VCardFieldAddressMap>();
1545  qDBusRegisterMetaType<Tp::VideoResolution>();
1546  qDBusRegisterMetaType<Tp::VideoResolutionStruct>();
1547 }
1548 
1549 } // namespace Tp
QString IPAddress
Definition: build/TelepathyQt/_gen/types.h:1945
Definition: build/TelepathyQt/_gen/types.h:3127
uint typeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:978
QString IP
Definition: build/TelepathyQt/_gen/types.h:388
uint flags
Definition: build/TelepathyQt/_gen/types.h:1540
bool canHaveMessage
Definition: build/TelepathyQt/_gen/types.h:2807
ushort port
Definition: build/TelepathyQt/_gen/types.h:2897
uint ID
Definition: build/TelepathyQt/_gen/types.h:601
uint type
Definition: build/TelepathyQt/_gen/types.h:2646
QString errorMessage
Definition: build/TelepathyQt/_gen/types.h:2135
QDBusObjectPath mediaDescription
Definition: build/TelepathyQt/_gen/types.h:1846
uint ID
Definition: build/TelepathyQt/_gen/types.h:2477
uint state
Definition: build/TelepathyQt/_gen/types.h:3223
QString name
Definition: build/TelepathyQt/_gen/types.h:3365
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
uint type
Definition: build/TelepathyQt/_gen/types.h:1983
StringStringMap parameters
Definition: build/TelepathyQt/_gen/types.h:3698
QString signature
Definition: build/TelepathyQt/_gen/types.h:2309
QStringList parameters
Definition: build/TelepathyQt/_gen/types.h:1536
QString signature
Definition: build/TelepathyQt/_gen/types.h:2199
Definition: build/TelepathyQt/_gen/types.h:2733
uint identifier
Definition: build/TelepathyQt/_gen/types.h:1981
HTTPPostDataList postData
Definition: build/TelepathyQt/_gen/types.h:3624
QString service
Definition: build/TelepathyQt/_gen/types.h:2713
uint subscribe
Definition: build/TelepathyQt/_gen/types.h:1310
int amount
Definition: build/TelepathyQt/_gen/types.h:1363
Definition: build/TelepathyQt/_gen/types.h:3642
uint type
Definition: build/TelepathyQt/_gen/types.h:3220
QVariantMap info
Definition: build/TelepathyQt/_gen/types.h:396
QString name
Definition: build/TelepathyQt/_gen/types.h:2308
QString mediaSessionType
Definition: build/TelepathyQt/_gen/types.h:1916
uint identifier
Definition: build/TelepathyQt/_gen/types.h:3359
uint reason
Definition: build/TelepathyQt/_gen/types.h:1703
QStringList capabilities
Definition: build/TelepathyQt/_gen/types.h:3550
uint propertyID
Definition: build/TelepathyQt/_gen/types.h:2307
uint max
Definition: build/TelepathyQt/_gen/types.h:1545
QString message
Definition: build/TelepathyQt/_gen/types.h:1496
uint identifier
Definition: build/TelepathyQt/_gen/types.h:2238
QString error
Definition: build/TelepathyQt/_gen/types.h:3149
uint state
Definition: build/TelepathyQt/_gen/types.h:1984
uint handleType
Definition: build/TelepathyQt/_gen/types.h:847
uint component
Definition: build/TelepathyQt/_gen/types.h:384
QString channelType
Definition: build/TelepathyQt/_gen/types.h:501
uint level
Definition: build/TelepathyQt/_gen/types.h:1492
QString type
Definition: build/TelepathyQt/_gen/types.h:611
uint newGenericFlags
Definition: build/TelepathyQt/_gen/types.h:503
QString errorName
Definition: build/TelepathyQt/_gen/types.h:2131
QString channelType
Definition: build/TelepathyQt/_gen/types.h:2672
uchar prefixLength
Definition: build/TelepathyQt/_gen/types.h:2958
QString label
Definition: build/TelepathyQt/_gen/types.h:643
Definition: build/TelepathyQt/_gen/types.h:2472
uint actor
Definition: build/TelepathyQt/_gen/types.h:1699
StringStringMap parameterTypes
Definition: build/TelepathyQt/_gen/types.h:3873
uint scale
Definition: build/TelepathyQt/_gen/types.h:1376
uint contact
Definition: build/TelepathyQt/_gen/types.h:1982
uint reason
Definition: build/TelepathyQt/_gen/types.h:332
QString wellKnownName
Definition: build/TelepathyQt/_gen/types.h:3533
Definition: build/TelepathyQt/_gen/types.h:2305
QVariantMap info
Definition: build/TelepathyQt/_gen/types.h:2673
Definition: build/TelepathyQt/_gen/types.h:1352
StringVariantMapList channelClasses
Definition: build/TelepathyQt/_gen/types.h:3541
Definition: build/TelepathyQt/_gen/types.h:3314
uint typeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:537
Definition: build/TelepathyQt/_gen/types.h:3868
uint protocol
Definition: build/TelepathyQt/_gen/types.h:1947
Definition: build/TelepathyQt/_gen/types.h:1106
double preferenceValue
Definition: build/TelepathyQt/_gen/types.h:1950
uint flags
Definition: build/TelepathyQt/_gen/types.h:649
ServicePoint servicePoint
Definition: build/TelepathyQt/_gen/types.h:3790
Definition: build/TelepathyQt/_gen/types.h:2669
QString address
Definition: build/TelepathyQt/_gen/types.h:1811
QDBusVariant detail
Definition: build/TelepathyQt/_gen/types.h:2651
uint newFlags
Definition: build/TelepathyQt/_gen/types.h:2276
bool maySetOnSelf
Definition: build/TelepathyQt/_gen/types.h:3871
uint handle
Definition: build/TelepathyQt/_gen/types.h:852
Definition: build/TelepathyQt/_gen/types.h:320
QString password
Definition: build/TelepathyQt/_gen/types.h:3018
QString password
Definition: build/TelepathyQt/_gen/types.h:1953
Definition: build/TelepathyQt/_gen/types.h:1404
QStringList allowedProperties
Definition: build/TelepathyQt/_gen/types.h:2604
Definition: build/TelepathyQt/_gen/types.h:3277
Definition: build/TelepathyQt/_gen/types.h:2917
uint codecID
Definition: build/TelepathyQt/_gen/types.h:3678
uint lastActivity
Definition: build/TelepathyQt/_gen/types.h:3581
Definition: build/TelepathyQt/_gen/types.h:592
MediaStreamHandlerTransportList transports
Definition: build/TelepathyQt/_gen/types.h:3645
uchar prefixLength
Definition: build/TelepathyQt/_gen/types.h:2989
double timestamp
Definition: build/TelepathyQt/_gen/types.h:1470
Definition: build/TelepathyQt/_gen/types.h:1839
uint propertyID
Definition: build/TelepathyQt/_gen/types.h:2275
QString subtype
Definition: build/TelepathyQt/_gen/types.h:1948
uint toBeAdded
Definition: build/TelepathyQt/_gen/types.h:1695
QVariantMap fixedProperties
Definition: build/TelepathyQt/_gen/types.h:2573
uint oldGenericFlags
Definition: build/TelepathyQt/_gen/types.h:502
QVariantMap details
Definition: build/TelepathyQt/_gen/types.h:3186
QString channelType
Definition: build/TelepathyQt/_gen/types.h:842
uint port
Definition: build/TelepathyQt/_gen/types.h:392
uint flags
Definition: build/TelepathyQt/_gen/types.h:2195
QString message
Definition: build/TelepathyQt/_gen/types.h:359
uint numberOfChannels
Definition: build/TelepathyQt/_gen/types.h:3694
QString URL
Definition: build/TelepathyQt/_gen/types.h:3615
Definition: build/TelepathyQt/_gen/types.h:2273
QString subtype
Definition: build/TelepathyQt/_gen/types.h:2440
QString value
Definition: build/TelepathyQt/_gen/types.h:1617
Definition: build/TelepathyQt/_gen/types.h:3351
Definition: build/TelepathyQt/_gen/types.h:2186
QString currency
Definition: build/TelepathyQt/_gen/types.h:1383
QString type
Definition: build/TelepathyQt/_gen/types.h:2434
QString profile
Definition: build/TelepathyQt/_gen/types.h:1949
QString parameters
Definition: build/TelepathyQt/_gen/types.h:2489
uint componentNumber
Definition: build/TelepathyQt/_gen/types.h:1944
QString username
Definition: build/TelepathyQt/_gen/types.h:3014
MultipleStatusMap statuses
Definition: build/TelepathyQt/_gen/types.h:3582
uint messageType
Definition: build/TelepathyQt/_gen/types.h:2241
Definition: build/TelepathyQt/_gen/types.h:2126
QVariantMap properties
Definition: build/TelepathyQt/_gen/types.h:1853
uint RTCPMinimumInterval
Definition: build/TelepathyQt/_gen/types.h:3756
uint type
Definition: build/TelepathyQt/_gen/types.h:2738
QString publishRequest
Definition: build/TelepathyQt/_gen/types.h:1319
ushort port
Definition: build/TelepathyQt/_gen/types.h:2927
QString key
Definition: build/TelepathyQt/_gen/types.h:1613
Definition: build/TelepathyQt/_gen/types.h:2641
Definition: build/TelepathyQt/_gen/types.h:1979
uint method
Definition: build/TelepathyQt/_gen/types.h:3619
QStringList fieldValue
Definition: build/TelepathyQt/_gen/types.h:1171
QString text
Definition: build/TelepathyQt/_gen/types.h:2243
uint initiator
Definition: build/TelepathyQt/_gen/types.h:3219
QVariantMap parameters
Definition: build/TelepathyQt/_gen/types.h:3222
QString MIMEType
Definition: build/TelepathyQt/_gen/types.h:243
Definition: build/TelepathyQt/_gen/types.h:3746
Definition: build/TelepathyQt/_gen/types.h:832
uint handle
Definition: build/TelepathyQt/_gen/types.h:975
uint handle
Definition: build/TelepathyQt/_gen/types.h:2671
QStringList parameters
Definition: build/TelepathyQt/_gen/types.h:1140
uint sender
Definition: build/TelepathyQt/_gen/types.h:2240
Definition: build/TelepathyQt/_gen/types.h:1690
Definition: build/TelepathyQt/_gen/types.h:1464
Definition: build/TelepathyQt/_gen/types.h:973
QString alias
Definition: build/TelepathyQt/_gen/types.h:207
QVariantMap properties
Definition: build/TelepathyQt/_gen/types.h:803
Definition: build/TelepathyQt/_gen/types.h:2887
uint direction
Definition: build/TelepathyQt/_gen/types.h:1985
QStringList availableMIMETypes
Definition: build/TelepathyQt/_gen/types.h:656
Definition: build/TelepathyQt/_gen/types.h:1305
QDBusVariant detail
Definition: build/TelepathyQt/_gen/types.h:140
uint channels
Definition: build/TelepathyQt/_gen/types.h:3377
bool maySetOnSelf
Definition: build/TelepathyQt/_gen/types.h:2800
uint newTypeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:505
uint handle
Definition: build/TelepathyQt/_gen/types.h:1409
Definition: build/TelepathyQt/_gen/types.h:3785
QStringList serviceIDs
Definition: build/TelepathyQt/_gen/types.h:3797
uint identifier
Definition: build/TelepathyQt/_gen/types.h:2342
bool updated
Definition: build/TelepathyQt/_gen/types.h:3393
bool exclusive
Definition: build/TelepathyQt/_gen/types.h:3872
Definition: build/TelepathyQt/_gen/types.h:2978
uint clockRate
Definition: build/TelepathyQt/_gen/types.h:3690
Definition: build/TelepathyQt/_gen/types.h:534
uint handle
Definition: build/TelepathyQt/_gen/types.h:500
QDBusObjectPath channel
Definition: build/TelepathyQt/_gen/types.h:838
uint handle
Definition: build/TelepathyQt/_gen/types.h:206
QString fieldName
Definition: build/TelepathyQt/_gen/types.h:1113
Candidate remote
Definition: build/TelepathyQt/_gen/types.h:3323
Definition: build/TelepathyQt/_gen/types.h:3009
QString domain
Definition: build/TelepathyQt/_gen/types.h:1487
QString channelType
Definition: build/TelepathyQt/_gen/types.h:536
Definition: build/TelepathyQt/_gen/types.h:1525
uint height
Definition: build/TelepathyQt/_gen/types.h:3286
QString statusMessage
Definition: build/TelepathyQt/_gen/types.h:2767
uint oldTypeSpecificFlags
Definition: build/TelepathyQt/_gen/types.h:504
Definition: build/TelepathyQt/_gen/types.h:3216
Definition: build/TelepathyQt/_gen/types.h:2428
Definition: build/TelepathyQt/_gen/types.h:2787
Candidate local
Definition: build/TelepathyQt/_gen/types.h:3319
QString address
Definition: build/TelepathyQt/_gen/types.h:2923
QByteArray avatarData
Definition: build/TelepathyQt/_gen/types.h:242
Definition: build/TelepathyQt/_gen/types.h:204
QString uniqueName
Definition: build/TelepathyQt/_gen/types.h:1413
QString channelType
Definition: build/TelepathyQt/_gen/types.h:976
uint port
Definition: build/TelepathyQt/_gen/types.h:1946
Definition: build/TelepathyQt/_gen/types.h:3610
QString address
Definition: build/TelepathyQt/_gen/types.h:2855
uint flags
Definition: build/TelepathyQt/_gen/types.h:2310
uint servicePointType
Definition: build/TelepathyQt/_gen/types.h:2706
uint reason
Definition: build/TelepathyQt/_gen/types.h:3141
QDBusVariant defaultValue
Definition: build/TelepathyQt/_gen/types.h:2205
QString name
Definition: build/TelepathyQt/_gen/types.h:2191
uint type
Definition: build/TelepathyQt/_gen/types.h:3870
uint clockrate
Definition: build/TelepathyQt/_gen/types.h:3371
Definition: build/TelepathyQt/_gen/types.h:130
QDBusObjectPath sessionHandler
Definition: build/TelepathyQt/_gen/types.h:1912
QString message
Definition: build/TelepathyQt/_gen/types.h:1708
RTCPFeedbackMessageList messages
Definition: build/TelepathyQt/_gen/types.h:3760
uint genericFlags
Definition: build/TelepathyQt/_gen/types.h:977
QString name
Definition: build/TelepathyQt/_gen/types.h:1530
Definition: build/TelepathyQt/_gen/types.h:379
QString address
Definition: build/TelepathyQt/_gen/types.h:2984
Definition: build/TelepathyQt/_gen/types.h:240
QString address
Definition: build/TelepathyQt/_gen/types.h:2953
QString name
Definition: build/TelepathyQt/_gen/types.h:3644
uint flags
Definition: build/TelepathyQt/_gen/types.h:2242
Definition: build/TelepathyQt/_gen/types.h:1906
uint identifier
Definition: build/TelepathyQt/_gen/types.h:3218
ushort port
Definition: build/TelepathyQt/_gen/types.h:2859
uint actor
Definition: build/TelepathyQt/_gen/types.h:326
uint type
Definition: build/TelepathyQt/_gen/types.h:135
uint unixTimestamp
Definition: build/TelepathyQt/_gen/types.h:2239
Definition: build/TelepathyQt/_gen/types.h:752
uint mediaType
Definition: build/TelepathyQt/_gen/types.h:3686
Definition: build/TelepathyQt/_gen/types.h:1942
Definition: build/TelepathyQt/_gen/types.h:2340
Definition: build/TelepathyQt/_gen/types.h:498
uint transportType
Definition: build/TelepathyQt/_gen/types.h:1951
Definition: build/TelepathyQt/_gen/types.h:2545
Definition: build/TelepathyQt/_gen/types.h:3673
QString address
Definition: build/TelepathyQt/_gen/types.h:2893
QString status
Definition: build/TelepathyQt/_gen/types.h:2743
Definition: build/TelepathyQt/_gen/types.h:3579
QDBusVariant value
Definition: build/TelepathyQt/_gen/types.h:2343
Definition: build/TelepathyQt/_gen/types.h:2236
void _registerTypes()
Definition: types-body.hpp:1386
const QDBusArgument & operator>>(const QDBusArgument &arg, SUSocketAddress &val)
Definition: types.cpp:65
Definition: build/TelepathyQt/_gen/types.h:2849
uint width
Definition: build/TelepathyQt/_gen/types.h:3282
QString name
Definition: build/TelepathyQt/_gen/types.h:3682
QString service
Definition: build/TelepathyQt/_gen/types.h:3221
QString name
Definition: build/TelepathyQt/_gen/types.h:1807
QString URI
Definition: build/TelepathyQt/_gen/types.h:2485
QString DBusReason
Definition: build/TelepathyQt/_gen/types.h:353
StringStringMap parameters
Definition: build/TelepathyQt/_gen/types.h:3399
QDBusObjectPath channel
Definition: build/TelepathyQt/_gen/types.h:757
Definition: build/TelepathyQt/_gen/types.h:2701
uint type
Definition: build/TelepathyQt/_gen/types.h:2796
QDBusArgument & operator<<(QDBusArgument &arg, const SUSocketAddress &val)
Definition: types.cpp:57
uint publish
Definition: build/TelepathyQt/_gen/types.h:1314
QString parameters
Definition: build/TelepathyQt/_gen/types.h:2444
Definition: build/TelepathyQt/_gen/types.h:1802
uint pendingSendFlags
Definition: build/TelepathyQt/_gen/types.h:1986
Definition: build/TelepathyQt/_gen/types.h:1608
QString username
Definition: build/TelepathyQt/_gen/types.h:1952
uint direction
Definition: build/TelepathyQt/_gen/types.h:2481
Definition: build/TelepathyQt/_gen/types.h:2947
Definition: build/TelepathyQt/_gen/types.h:3526


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00478.html0000644000175100017520000001777612530426260021157 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor1< R, Arg1 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor1< R, Arg1 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor1 (FunctionType fn)
 
ResultType operator() (Arg1 a1) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 >
typedef R(* Tp::PtrFunctor1< R, Arg1 >::FunctionType)(Arg1)
template<class R , class Arg1 >
typedef R Tp::PtrFunctor1< R, Arg1 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 >
Tp::PtrFunctor1< R, Arg1 >::PtrFunctor1 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 >
ResultType Tp::PtrFunctor1< R, Arg1 >::operator() ( Arg1  a1) const
inline

Member Data Documentation

template<class R , class Arg1 >
FunctionType Tp::PtrFunctor1< R, Arg1 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00222.html0000644000175100017520000004321312530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceSMSAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSMSAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

uint GetSMSLength (const Tp::MessagePartList &message, const QDBusMessage &dbusMessage, int &remainingCharacters, int &estimatedCost)
 

Signals

void SMSChannelChanged (bool SMSChannel)
 

Public Member Functions

bool Flash () const
 
bool SMSChannel () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ChannelInterfaceSMSAdaptor::Flash ( ) const

Return the value of the exported D-Bus object property Flash of type bool.

Adaptees should export this property as a Qt property named 'flash' with type bool.

If True, then this channel is exclusively for receiving class 0 SMSes (and no SMSes can be sent using ChannelInterfaceMessagesInterface::SendMessage() on this channel). If False, no incoming class 0 SMSes will appear on this channel.

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. ConnectionInterfaceRequestsInterface::NewChannels() signals.

Class 0 SMSes should be displayed immediately to the user, and need not be saved to the device memory unless the user explicitly chooses to do so. This is unlike “normalâ€, class 1 SMSes, which must be stored, but need not be shown immediately in their entirity to the user.

Separating class 0 SMSes into their own channel with this immutable property allows them to be dispatched to a different ClientHandlerInterface —which would include this property in its ClientHandlerInterface::HandlerChannelFilter —avoiding the normal Text channel handler having to decide for each message whether it should be displayed to the user immediately or handled normally.

Currently, no mechanism is defined for sending class 0 SMSes. It seems reasonable to support specifying the class of an outgoing SMS in its header Message_Part, rather than requiring the UI to request a special channel for such SMSes; hence, we define here that channels with Flash set to True are read-only.

Returns
The value of exported property Flash.
bool Tp::Service::ChannelInterfaceSMSAdaptor::SMSChannel ( ) const

Return the value of the exported D-Bus object property SMSChannel of type bool.

Adaptees should export this property as a Qt property named 'smsChannel' with type bool.

If TRUE, messages sent and received on this channel are transmitted via SMS.

If this property is included in the channel request, the Connection Manager MUST return an appropriate channel (i.e. if TRUE the channel must be for SMSes, if FALSE it must not), or else fail to provide the requested channel with the NotCapable error.

For example, to explicitly request an SMS channel to a contact. You might construct a channel request like:

{
  Channel.Type: Channel.Type.Text,
  Channel.TargetHandleType: Handle_Type_Contact,
  Channel.TargetID: escher.cat,
  Channel.Interface.SMS.SMSChannel: True,
}
Some protocols allow us to send SMSes to a remote contact, without knowing the phone number to which those SMSes will be sent. This provides a mechanism to request such channels.

If this property is not included in the channel request, the Connection Manager MAY return an SMS channel if that is the most appropriate medium (i.e. if the channel target is a phone number).

To some types of identifiers (i.e. phone numbers) it only makes sense to return an SMS channel, this is what happens currently with telepathy-ring. We don't want to break this behaviour when we are not explicit about the type of channel we want. Alternatively, for protocols where there is an SMS fallback for IM messages, it's possible that we don't care what sort of channel we get, and simply want notification of the transport.

Some protocols have a fallback to deliver IM messages via SMS. On these protocols, the Connection Manager SHOULD set the property value as appropriate, and notify its change with SMSChannelChanged() .

Protocols such as MSN can fall back to delivering IM messages via SMS. Where possible we want clients to be able to inform the user that their messages are going to be redirected to the remote contact's phone.
Returns
The value of exported property SMSChannel.
uint Tp::Service::ChannelInterfaceSMSAdaptor::GetSMSLength ( const Tp::MessagePartList message,
const QDBusMessage &  dbusMessage,
int &  remainingCharacters,
int &  estimatedCost 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getSMSLength(const Tp::MessagePartList& message, const Tp::Service::ChannelInterfaceSMSAdaptor::GetSMSLengthContextPtr &context);

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

Returns the number of 140 octet chunks required to send a message via SMS, as well as the number of remaining characters available in the final chunk and, if possible, an estimate of the cost.

There are a number of different SMS encoding mechanisms, and the client doesn't know which mechanisms an individual CM might support. This method allows the client, without any knowledge of the encoding mechanism, to provide length details to the user.

Clients SHOULD limit the frequency with which this method is called and SHOULD NOT call it for every keystroke. Clients MAY estimate the remaining size between single keystrokes.

Parameters
message
The message the user wishes to send.
remainingCharactersOutput parameter

The number of further characters that can be fit in the final chunk. A negative value indicates that the message will be truncated by abs(Remaining_Characters). The value MIN_INT32 (-231) indicates the message will be truncated by an unknown amount.

For example, in the GSM standard 7-bit encoding, a 162 character message would return 144 remaining characters (because of the space required for the multipart SMS header).

Parameters
estimatedCostOutput parameter

The estimated cost of sending this message. The currency and scale of this value are the same as the \\\ \\link ConnectionInterfaceBalanceInterface::requestPropertyAccountBalance() ConnectionInterfaceBalanceInterface::AccountBalance \\endlink \\htmlonly property.

A value of -1 indicates the cost could not be estimated.

Returns

The number of 140 octet chunks required to send this message.

For example, in the GSM standard 7-bit encoding, a 162 character message would require 2 chunks.

void Tp::Service::ChannelInterfaceSMSAdaptor::SMSChannelChanged ( bool  SMSChannel)
signal

Represents the exported D-Bus signal SMSChannelChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void smsChannelChanged(bool SMSChannel);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
SMSChannel
The new value for SMSChannel.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01193.html0000644000175100017520000000440612530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ServicePoint Member List

This is the complete list of members for Tp::ServicePoint, including all inherited members.

serviceTp::ServicePoint
servicePointTypeTp::ServicePoint


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x76.html0000644000175100017520000001066512530426260024131 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- v -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00537.html0000644000175100017520000002735012530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeClient::Tube Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeClient::Tube Class Reference

The StreamTubeClient::Tube class represents a tube being handled by the client. More...

#include <TelepathyQt/StreamTubeClient>

Inherits QPair< AccountPtr, IncomingStreamTubeChannelPtr >.

Public Member Functions

 Tube ()
 
 Tube (const AccountPtr &account, const IncomingStreamTubeChannelPtr &channel)
 
 Tube (const Tube &other)
 
 ~Tube ()
 
bool isValid () const
 
Tubeoperator= (const Tube &other)
 
const AccountPtr & account () const
 
const
IncomingStreamTubeChannelPtr & 
channel () const
 

Detailed Description

The StreamTubeClient::Tube class represents a tube being handled by the client.

Constructor & Destructor Documentation

Tp::StreamTubeClient::Tube::Tube ( )

Constructs a new invalid Tube instance.

Tp::StreamTubeClient::Tube::Tube ( const AccountPtr &  account,
const IncomingStreamTubeChannelPtr &  channel 
)

Constructs a Tube instance for the given tube channel from the given account.

Parameters
accountA pointer to the account the online connection of which the tube originates from.
channelA pointer to the tube channel object.
Tp::StreamTubeClient::Tube::Tube ( const Tube other)

Copy constructor.

Tp::StreamTubeClient::Tube::~Tube ( )

Class destructor.

Member Function Documentation

bool Tp::StreamTubeClient::Tube::isValid ( ) const
inline

Return whether or not the tube is valid or is just the null object created using the default constructor.

Returns
true if valid, false otherwise.
StreamTubeClient::Tube & Tp::StreamTubeClient::Tube::operator= ( const Tube other)

Assignment operator.

AccountPtr Tp::StreamTubeClient::Tube::account ( ) const
inline

Return the account from which the tube originates.

Returns
A pointer to the account object.
IncomingStreamTubeChannelPtr Tp::StreamTubeClient::Tube::channel ( ) const
inline

Return the actual tube channel.

Returns
A pointer to the channel.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00291.html0000644000175100017520000014561412530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceContactListAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactListAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ContactAttributesMap GetContactListAttributes (const QStringList &interfaces, bool hold, const QDBusMessage &dbusMessage)
 
void RequestSubscription (const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage)
 
void AuthorizePublication (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
void RemoveContacts (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
void Unsubscribe (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
void Unpublish (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
void Download (const QDBusMessage &dbusMessage)
 

Signals

void ContactListStateChanged (uint contactListState)
 
void ContactsChangedWithID (const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)
 
void ContactsChanged (const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals)
 

Public Member Functions

uint ContactListState () const
 
bool ContactListPersists () const
 
bool CanChangeContactList () const
 
bool RequestUsesMessage () const
 
bool DownloadAtConnection () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceContactListAdaptor::ContactListState ( ) const

Return the value of the exported D-Bus object property ContactListState of type uint.

Adaptees should export this property as a Qt property named 'contactListState' with type uint.

The progress made in retrieving the contact list. Change notification is via ContactListStateChanged.

Returns
The value of exported property ContactListState.
bool Tp::Service::ConnectionInterfaceContactListAdaptor::ContactListPersists ( ) const

Return the value of the exported D-Bus object property ContactListPersists of type bool.

Adaptees should export this property as a Qt property named 'contactListPersists' with type bool.

If true, presence subscriptions (in both directions) on this connection are stored by the server or other infrastructure.

XMPP, MSN, ICQ, etc. all behave like this.

If false, presence subscriptions on this connection are not stored.

In SIMPLE (SIP), clients are expected to keep a record of subscriptions, as described below. In link-local XMPP, subscriptions are implicit (everyone on the local network receives presence from everyone else) so nothing is ever stored.

If CanChangeContactList is true, Telepathy clients (e.g. user interfaces or address books) MAY keep a record of permission to publish and requests to subscribe locally, and attempt to restore it for each Connection. If ContactListPersists is false, clients MAY do this for all contacts; if ContactListPersists is true, clients SHOULD NOT change the state of contacts that were not changed locally.

In SIMPLE (SIP), ContactListPersists is false, but CanChangeContactList is true. Presence will not be received unless clients renew any subscriptions they have for each connection, in the way described. There is no server-side storage, so clients have no alternative but to maintain independent contact lists.

In protocols like XMPP and MSN, it may be useful for clients to queue up subscription requests or removals made while offline and process them next time the connection is online. However, clients should only replay the changes, rather than resetting the contact list to match a stored copy, to avoid overwriting changes that were made on the server.

Clients that replay requests like this SHOULD do so by calling AuthorizePublication to pre-approve publication of presence to the appropriate contacts, followed by RequestSubscription to request the appropriate contacts' presences.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
The value of exported property ContactListPersists.
bool Tp::Service::ConnectionInterfaceContactListAdaptor::CanChangeContactList ( ) const

Return the value of the exported D-Bus object property CanChangeContactList of type bool.

Adaptees should export this property as a Qt property named 'canChangeContactList' with type bool.

If true, presence subscription and publication can be changed using the RequestSubscription() , AuthorizePublication() and RemoveContacts() methods.

If false, all of those methods will always fail; they SHOULD raise the error org.freedesktop.Telepathy.Error.NotImplemented.

In XEP-0174 "Serverless Messaging" (link-local XMPP), presence is implicitly published to everyone in the local subnet, so the user cannot control their presence publication.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
The value of exported property CanChangeContactList.
bool Tp::Service::ConnectionInterfaceContactListAdaptor::RequestUsesMessage ( ) const

Return the value of the exported D-Bus object property RequestUsesMessage of type bool.

Adaptees should export this property as a Qt property named 'requestUsesMessage' with type bool.

If true, the Message parameter to RequestSubscription() is likely to be significant, and user interfaces SHOULD prompt the user for a message to send with the request; a message such as "I would like to add you to my contact list", translated into the local user's language, might make a suitable default.

This matches user expectations in XMPP and ICQ, for instance.

If false, the parameter is ignored; user interfaces SHOULD avoid prompting the user, and SHOULD pass an empty string to RequestSubscription.

FIXME: is there any such protocol?

Returns
The value of exported property RequestUsesMessage.
bool Tp::Service::ConnectionInterfaceContactListAdaptor::DownloadAtConnection ( ) const

Return the value of the exported D-Bus object property DownloadAtConnection of type bool.

Adaptees should export this property as a Qt property named 'downloadAtConnection' with type bool.

If true, the contact list is automatically downloaded at connection. If false, the contact list is only downloaded when requested explicitely with Download() .

Downloading the contact list uses bandwidth and is not always necessary or desired. For example, a client could cache the contact list from previous connections and accept less regular updates, it could get the contact list from an out-of-band protocol-specific way, or it could not need the contact list at all.

Connection managers MUST default to true.

If a connection manager starts supporting this property but defaults to false, it would break all existing clients that don't call Download() .

Returns
The value of exported property DownloadAtConnection.
Tp::ContactAttributesMap Tp::Service::ConnectionInterfaceContactListAdaptor::GetContactListAttributes ( const QStringList &  interfaces,
bool  hold,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactListAttributes(const QStringList& interfaces, bool hold, const Tp::Service::ConnectionInterfaceContactListAdaptor::GetContactListAttributesContextPtr &context);

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

Return some contact attributes for a list of contacts associated with the user. This list MUST include at least:

  • all contacts whose subscribe attribute is not No
  • all contacts whose publish attribute is not No

but MAY contain other contacts.

For instance, on XMPP, all contacts on the roster would appear here even if they have subscription="none", unless there's reason to believe the user does not want to see them (such as having been blocked).

This list does not need to contain every visible contact: for instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear here. Blocked contacts SHOULD NOT appear here, unless they still have a non-No subscribe or publish attribute for some reason.

It's reasonable to assume that blocked contacts should not be visible to the user unless they specifically go looking for them, at least in protocols like XMPP where blocking a contact suppresses presence.

Parameters
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. Equivalent to the corresponding argument to \\\ ConnectionInterfaceContactsInterface::GetContactAttributes() \\htmlonly , except that if this list does not contain the ContactList interface itself, it is treated as though that interface was also requested.

hold

If true, all handles that appear as keys in the result have been held on behalf of the calling process, as if by a call to \\\ ConnectionInterface::HoldHandles() \\htmlonly . (If \\endhtmlonly \\link ConnectionInterface::requestPropertyHasImmortalHandles() ConnectionInterface::HasImmortalHandles \\endlink \\htmlonly is true, which SHOULD be the case in all new connection managers, this has no effect.)

Returns

A dictionary mapping the contact handles to contact attributes, equivalent to the result of \\\ ConnectionInterfaceContactsInterface::GetContactAttributes() \\htmlonly .

void Tp::Service::ConnectionInterfaceContactListAdaptor::RequestSubscription ( const Tp::UIntList contacts,
const QString &  message,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestSubscription(const Tp::UIntList& contacts, const QString& message, const Tp::Service::ConnectionInterfaceContactListAdaptor::RequestSubscriptionContextPtr &context);

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

Request that the given contacts allow the local user to subscribe to their presence, i.e. that their subscribe attribute becomes Yes.

Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically allow the contacts to see the local user's presence). User interfaces that require mutual subscription MAY call AuthorizePublication() at the same time as this method.

Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.

Before calling this method on a connection where ConnectionInterfaceAliasingInterface::GetAliasFlags() returns the User_Set flag, user interfaces SHOULD obtain, from the user, an alias to identify the contact in future, and store it using ConnectionInterfaceAliasingInterface::SetAliases() .

The user MAY be prompted using the contact's current self-assigned nickname, or something derived from the contact's (presumably self-assigned) identifier, as a default, but these names chosen by the contact SHOULD NOT be used without user approval.

This is a generalization of XEP-0165 "Best Practices to Discourage JID Mimicking") to protocols other than XMPP. A reasonable user interface for this, as used in many XMPP clients, is to have a text entry for the alias adjacent to the text entry for the identifier to add.

For contacts with subscribe=Yes, this method has no effect. It MUST return successfully if all contacts are in this state.

For contacts with subscribe=Ask, this method SHOULD send a new request, with the given message, if allowed by the underlying protocol.

For contacts with subscribe=No or subscribe=Rejected, this method SHOULD request that the contact allows the local user to subscribe to their presence; in general, this will change their publish attribute to Ask (although it could change directly to Yes in some situations).

Any state changes that immediately result from this request MUST be signalled via ContactsChanged() before this method returns.

This makes it easy for user interfaces to see what practical effect this method had.

If the remote contact accepts the request, their subscribe attribute will later change from Ask to Yes.

If the remote contact explicitly rejects the request (in protocols that allow this), their subscribe attribute will later change from Ask to Rejected.

If the subscription request is cancelled by the local user, the contact's subscribe attribute will change from Ask to No.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Parameters
contacts

One or more contacts to whom requests are to be sent.

message

An optional plain-text message from the user, to send to those contacts with the subscription request. The \\\ \\link requestPropertyRequestUsesMessage() RequestUsesMessage \\endlink \\htmlonly property indicates whether this message will be used or ignored.

Clients SHOULD NOT send a non-empty message without first giving the user an opportunity to edit it.

These messages are typically presented to the remote contact as if the user had typed them, so as a minimum, the user should be allowed to see what the UI will be saying on their behalf.

Connections where this message is not useful MUST still allow it to be non-empty.

void Tp::Service::ConnectionInterfaceContactListAdaptor::AuthorizePublication ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void authorizePublication(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::AuthorizePublicationContextPtr &context);

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

For each of the given contacts, request that the local user's presence is sent to that contact, i.e. that their publish attribute becomes Yes.

Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically request that the contacts allow the user to subscribe to their presence). User interfaces that require mutual subscription MAY call RequestSubscription() at the same time as this method.

Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.

For contacts with publish=Yes, this method has no effect; it MUST return successfully if all contacts given have this state.

For contacts with publish=Ask, this method accepts the contact's request to see the local user's presence, changing their publish attribute from Ask to Yes.

For contacts with publish=No, if the protocol allows it, this method allows the contacts to see the local user's presence even though they have not requested it, changing their publish attribute from No to Yes. Otherwise, it merely records the fact that presence publication to those contacts is allowed; if any of those contacts ask to receive the local user's presence later in the lifetime of the connection, the connection SHOULD immediately allow them to do so, changing their publish attribute directly from No to Yes.

This makes it easy to implement the common UI policy that if the user attempts to subscribe to a contact's presence, requests for reciprocal subscription are automatically approved.

Any state changes that immediately result from this request MUST be signalled via ContactsChanged() before this method returns.

This makes it easy for user interfaces to see what practical effect this method had.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Parameters
contacts

One or more contacts to authorize.

void Tp::Service::ConnectionInterfaceContactListAdaptor::RemoveContacts ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeContacts(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::RemoveContactsContextPtr &context);

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

Remove the given contacts from the contact list entirely. It is protocol-dependent whether this works, and under which circumstances.

If possible, this method SHOULD set the contacts' subscribe and publish attributes to No, remove any stored aliases for those contacts, and remove the contacts from the result of GetContactListAttributes() .

This method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts (for instance, if there is an outstanding request to subscribe to the contact's presence, and it's not possible to cancel such requests). However, all signals that immediately result from this method call MUST be emitted before it returns, so that clients can interpret the result.

User interfaces removing a contact from the contact list are unlikely to want spurious failure notifications resulting from limitations of a particular protocol. However, emitting the signals first means that if a client does want to check exactly what happened, it can wait for the method to return (while applying change-notification signals to its local cache of the contact list's state), then consult its local cache of the contact list's state to see whether the contact is still there.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Parameters
contacts

One or more contacts to remove.

void Tp::Service::ConnectionInterfaceContactListAdaptor::Unsubscribe ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void unsubscribe(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::UnsubscribeContextPtr &context);

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

Attempt to set the given contacts' subscribe attribute to No, i.e. stop receiving their presence.

For contacts with subscribe=Ask, this attempts to cancel an earlier request to subscribe to the contact's presence; for contacts with subscribe=Yes, this attempts to unsubscribe from the contact's presence.

As with RemoveContacts() , this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Parameters
contacts

One or more contacts to remove.

void Tp::Service::ConnectionInterfaceContactListAdaptor::Unpublish ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void unpublish(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::UnpublishContextPtr &context);

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

Attempt to set the given contacts' publish attribute to No, i.e. stop sending presence to them.

For contacts with publish=Ask, this method explicitly rejects the contact's request to subscribe to the user's presence; for contacts with publish=Yes, this method attempts to prevent the user's presence from being received by the contact.

As with RemoveContacts() , this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Parameters
contacts

One or more contacts to remove.

void Tp::Service::ConnectionInterfaceContactListAdaptor::Download ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void download(const Tp::Service::ConnectionInterfaceContactListAdaptor::DownloadContextPtr &context);

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

Download the contact list from the server. If DownloadAtConnection is true, Download does nothing.

void Tp::Service::ConnectionInterfaceContactListAdaptor::ContactListStateChanged ( uint  contactListState)
signal

Represents the exported D-Bus signal ContactListStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contactListStateChanged(uint contactListState);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contactListState
The new value of ContactListState.
void Tp::Service::ConnectionInterfaceContactListAdaptor::ContactsChangedWithID ( const Tp::ContactSubscriptionMap changes,
const Tp::HandleIdentifierMap identifiers,
const Tp::HandleIdentifierMap removals 
)
signal

Represents the exported D-Bus signal ContactsChangedWithID on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contactsChangedWithID(const Tp::ContactSubscriptionMap& changes, const Tp::HandleIdentifierMap& identifiers, const Tp::HandleIdentifierMap& removals);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
changes
The new subscribe, publish and publish-request attributes of all 
the contacts that have been added, and all the contacts for which 
those attributes have changed.
identifiers The identifiers of the contacts in the Changes map.
removals The contacts that have been removed from the list that would be returned by \\\ GetContactListAttributes() \\htmlonly . This also implies that they have subscribe = No and publish = No; contacts MUST NOT be listed both here and in Changes.
void Tp::Service::ConnectionInterfaceContactListAdaptor::ContactsChanged ( const Tp::ContactSubscriptionMap changes,
const Tp::UIntList removals 
)
signal

Represents the exported D-Bus signal ContactsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contactsChanged(const Tp::ContactSubscriptionMap& changes, const Tp::UIntList& removals);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
changes
The same as the corresponding argument to ContactsChangedWithID.
removals
The same as the corresponding argument to ContactsChangedWithID, 
except that it only includes handles and not identifiers.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01252.html0000644000175100017520000002577412530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterface Member List

This is the complete list of members for Tp::Client::ChannelInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterface
ChannelInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterface
ChannelInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterface
Close(int timeout=-1)Tp::Client::ChannelInterfaceinlineslot
Closed()Tp::Client::ChannelInterfacesignal
GetChannelType(int timeout=-1)Tp::Client::ChannelInterfaceinlineslot
GetHandle(int timeout=-1)Tp::Client::ChannelInterfaceinlineslot
GetInterfaces(int timeout=-1)Tp::Client::ChannelInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceinline
requestPropertyChannelType() const Tp::Client::ChannelInterfaceinline
requestPropertyInitiatorHandle() const Tp::Client::ChannelInterfaceinline
requestPropertyInitiatorID() const Tp::Client::ChannelInterfaceinline
requestPropertyInterfaces() const Tp::Client::ChannelInterfaceinline
requestPropertyRequested() const Tp::Client::ChannelInterfaceinline
requestPropertyTargetHandle() const Tp::Client::ChannelInterfaceinline
requestPropertyTargetHandleType() const Tp::Client::ChannelInterfaceinline
requestPropertyTargetID() const Tp::Client::ChannelInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00036.html0000644000175100017520000000373412530426257021140 0ustar00kaffeinekaffeine00000000000000 Roster Example
   Home · All Classes · All Namespaces · Modules · Functions · Files
Roster Example


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00846_source.html0000644000175100017520000001574712530426257022540 0ustar00kaffeinekaffeine00000000000000 test-backdoors.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
test-backdoors.h
1 
23 #ifndef _TelepathyQt_test_backdoors_h_HEADER_GUARD_
24 #define _TelepathyQt_test_backdoors_h_HEADER_GUARD_
25 
26 #ifdef IN_TP_QT_HEADER
27 #error "This file is an internal header and should never be included by a public one"
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/ConnectionCapabilities>
32 #include <TelepathyQt/ContactCapabilities>
33 
34 #include <QString>
35 
36 #ifndef DOXYGEN_SHOULD_SKIP_THIS
37 
38 namespace Tp
39 {
40 
41 class DBusProxy;
42 
43 // Exported so the tests can use it even if they link dynamically
44 // The header is not installed though, so this should be considered private API
45 struct TP_QT_EXPORT TestBackdoors
46 {
47  static void invalidateProxy(DBusProxy *proxy, const QString &reason, const QString &message);
48 
49  static ConnectionCapabilities createConnectionCapabilities(
50  const RequestableChannelClassSpecList &rccSpecs);
51  static ContactCapabilities createContactCapabilities(
52  const RequestableChannelClassSpecList &rccSpecs, bool specificToContact);
53 };
54 
55 } // Tp
56 
57 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
58 
59 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00350.html0000644000175100017520000002211012530426260021116 0ustar00kaffeinekaffeine00000000000000 Tp::Feature Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Feature class represents a feature that can be enabled on demand. More...

#include <TelepathyQt/Feature>

Inherits QPair< QString, uint >.

Public Member Functions

 Feature ()
 
 Feature (const QString &className, uint id, bool critical=false)
 
 Feature (const Feature &other)
 
 ~Feature ()
 
bool isValid () const
 
Featureoperator= (const Feature &other)
 
bool isCritical () const
 

Detailed Description

The Feature class represents a feature that can be enabled on demand.

Constructor & Destructor Documentation

Tp::Feature::Feature ( )
Tp::Feature::Feature ( const QString &  className,
uint  id,
bool  critical = false 
)
Tp::Feature::Feature ( const Feature other)
Tp::Feature::~Feature ( )

Member Function Documentation

bool Tp::Feature::isValid ( ) const
inline
Feature & Tp::Feature::operator= ( const Feature other)
bool Tp::Feature::isCritical ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01311.html0000644000175100017520000002554612530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceLocationInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceLocationInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceLocationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceLocationInterface
ConnectionInterfaceLocationInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceLocationInterface
ConnectionInterfaceLocationInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceLocationInterface
ConnectionInterfaceLocationInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceLocationInterfaceexplicit
ConnectionInterfaceLocationInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceLocationInterface
GetLocations(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceLocationInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceLocationInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
LocationUpdated(uint contact, const QVariantMap &location)Tp::Client::ConnectionInterfaceLocationInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceLocationInterfaceinline
RequestLocation(uint contact, int timeout=-1)Tp::Client::ConnectionInterfaceLocationInterfaceinlineslot
requestPropertyLocationAccessControl() const Tp::Client::ConnectionInterfaceLocationInterfaceinline
requestPropertyLocationAccessControlTypes() const Tp::Client::ConnectionInterfaceLocationInterfaceinline
requestPropertySupportedLocationFeatures() const Tp::Client::ConnectionInterfaceLocationInterfaceinline
SetLocation(const QVariantMap &location, int timeout=-1)Tp::Client::ConnectionInterfaceLocationInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyLocationAccessControl(Tp::RichPresenceAccessControl newValue)Tp::Client::ConnectionInterfaceLocationInterfaceinline
staticInterfaceName()Tp::Client::ConnectionInterfaceLocationInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01066.html0000644000175100017520000001451412530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingChannelRequest Member List

This is the complete list of members for Tp::PendingChannelRequest, including all inherited members.

account() const Tp::PendingChannelRequest
cancel()Tp::PendingChannelRequest
channelRequest() const Tp::PendingChannelRequest
channelRequestCreated(const Tp::ChannelRequestPtr &channelRequest)Tp::PendingChannelRequestsignal
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingChannelRequest()Tp::PendingChannelRequest
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00842_source.html0000644000175100017520000013345712530426257022533 0ustar00kaffeinekaffeine00000000000000 svc-connection-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
svc-connection-manager.h
1 /*
2  * This file contains D-Bus adaptor classes generated by qt-svc-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #include <TelepathyQt/AbstractAdaptor>
9 #include <TelepathyQt/Global>
10 #include <TelepathyQt/Types>
11 
12 #include <QObject>
13 #include <QtDBus>
14 
15 namespace Tp
16 {
17 namespace Service
18 {
19 
27 class TP_QT_EXPORT ConnectionManagerAdaptor : public Tp::AbstractAdaptor
28 {
29  Q_OBJECT
30  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ConnectionManager")
31  Q_CLASSINFO("D-Bus Introspection", ""
32 " <interface name=\"org.freedesktop.Telepathy.ConnectionManager\">\n"
33 " <property access=\"read\" type=\"a{sa{sv}}\" name=\"Protocols\">\n"
34 " <annotation value=\"Tp::ProtocolPropertiesMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
35 " </property>\n"
36 " <property access=\"read\" type=\"as\" name=\"Interfaces\"/>\n"
37 " <method name=\"GetParameters\">\n"
38 " <arg direction=\"in\" type=\"s\" name=\"protocol\"/>\n"
39 " <arg direction=\"out\" type=\"a(susv)\" name=\"parameters\">\n"
40 " <annotation value=\"Tp::ParamSpecList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
41 " </arg>\n"
42 " </method>\n"
43 " <method name=\"ListProtocols\">\n"
44 " <arg direction=\"out\" type=\"as\" name=\"protocols\"/>\n"
45 " </method>\n"
46 " <method name=\"RequestConnection\">\n"
47 " <arg direction=\"in\" type=\"s\" name=\"protocol\"/>\n"
48 " <arg direction=\"in\" type=\"a{sv}\" name=\"parameters\">\n"
49 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
50 " </arg>\n"
51 " <arg direction=\"out\" type=\"s\" name=\"busName\"/>\n"
52 " <arg direction=\"out\" type=\"o\" name=\"objectPath\"/>\n"
53 " </method>\n"
54 " <signal name=\"NewConnection\">\n"
55 " <arg type=\"s\" name=\"busName\"/>\n"
56 " <arg type=\"o\" name=\"objectPath\"/>\n"
57 " <arg type=\"s\" name=\"protocol\"/>\n"
58 " </signal>\n"
59 " </interface>\n"
60 "")
61  Q_PROPERTY(Tp::ProtocolPropertiesMap Protocols READ Protocols )
62  Q_PROPERTY(QStringList Interfaces READ Interfaces )
63 
64 public:
65  ConnectionManagerAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
66  virtual ~ConnectionManagerAdaptor();
67 
68  typedef Tp::MethodInvocationContextPtr< Tp::ParamSpecList > GetParametersContextPtr;
69  typedef Tp::MethodInvocationContextPtr< QStringList > ListProtocolsContextPtr;
70  typedef Tp::MethodInvocationContextPtr< QString, QDBusObjectPath > RequestConnectionContextPtr;
71 
72 public: // PROPERTIES
99  Tp::ProtocolPropertiesMap Protocols() const;
129  QStringList Interfaces() const;
130 
131 public Q_SLOTS: // METHODS
158  Tp::ParamSpecList GetParameters(const QString& protocol, const QDBusMessage& dbusMessage);
176  QStringList ListProtocols(const QDBusMessage& dbusMessage);
253  QString RequestConnection(const QString& protocol, const QVariantMap& parameters, const QDBusMessage& dbusMessage, QDBusObjectPath& objectPath);
254 
255 Q_SIGNALS: // SIGNALS
274  void NewConnection(const QString& busName, const QDBusObjectPath& objectPath, const QString& protocol);
275 };
276 
284 class TP_QT_EXPORT ProtocolAdaptor : public Tp::AbstractAdaptor
285 {
286  Q_OBJECT
287  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol")
288  Q_CLASSINFO("D-Bus Introspection", ""
289 " <interface name=\"org.freedesktop.Telepathy.Protocol\">\n"
290 " <property access=\"read\" type=\"as\" name=\"Interfaces\"/>\n"
291 " <property access=\"read\" type=\"a(susv)\" name=\"Parameters\">\n"
292 " <annotation value=\"Tp::ParamSpecList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
293 " </property>\n"
294 " <property access=\"read\" type=\"as\" name=\"ConnectionInterfaces\"/>\n"
295 " <property access=\"read\" type=\"a(a{sv}as)\" name=\"RequestableChannelClasses\">\n"
296 " <annotation value=\"Tp::RequestableChannelClassList\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
297 " </property>\n"
298 " <property access=\"read\" type=\"s\" name=\"VCardField\"/>\n"
299 " <property access=\"read\" type=\"s\" name=\"EnglishName\"/>\n"
300 " <property access=\"read\" type=\"s\" name=\"Icon\"/>\n"
301 " <property access=\"read\" type=\"as\" name=\"AuthenticationTypes\"/>\n"
302 " <method name=\"IdentifyAccount\">\n"
303 " <arg direction=\"in\" type=\"a{sv}\" name=\"parameters\">\n"
304 " <annotation value=\"QVariantMap\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
305 " </arg>\n"
306 " <arg direction=\"out\" type=\"s\" name=\"accountID\"/>\n"
307 " </method>\n"
308 " <method name=\"NormalizeContact\">\n"
309 " <arg direction=\"in\" type=\"s\" name=\"contactID\"/>\n"
310 " <arg direction=\"out\" type=\"s\" name=\"normalizedContactID\"/>\n"
311 " </method>\n"
312 " </interface>\n"
313 "")
314  Q_PROPERTY(QStringList Interfaces READ Interfaces )
315  Q_PROPERTY(Tp::ParamSpecList Parameters READ Parameters )
316  Q_PROPERTY(QStringList ConnectionInterfaces READ ConnectionInterfaces )
317  Q_PROPERTY(Tp::RequestableChannelClassList RequestableChannelClasses READ RequestableChannelClasses )
318  Q_PROPERTY(QString VCardField READ VCardField )
319  Q_PROPERTY(QString EnglishName READ EnglishName )
320  Q_PROPERTY(QString Icon READ Icon )
321  Q_PROPERTY(QStringList AuthenticationTypes READ AuthenticationTypes )
322 
323 public:
324  ProtocolAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
325  virtual ~ProtocolAdaptor();
326 
327  typedef Tp::MethodInvocationContextPtr< QString > IdentifyAccountContextPtr;
328  typedef Tp::MethodInvocationContextPtr< QString > NormalizeContactContextPtr;
329 
330 public: // PROPERTIES
356  QStringList Interfaces() const;
385  Tp::ParamSpecList Parameters() const;
412  QStringList ConnectionInterfaces() const;
480  Tp::RequestableChannelClassList RequestableChannelClasses() const;
532  QString VCardField() const;
573  QString EnglishName() const;
605  QString Icon() const;
653  QStringList AuthenticationTypes() const;
654 
655 public Q_SLOTS: // METHODS
694  QString IdentifyAccount(const QVariantMap& parameters, const QDBusMessage& dbusMessage);
750  QString NormalizeContact(const QString& contactID, const QDBusMessage& dbusMessage);
751 };
752 
761 {
762  Q_OBJECT
763  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol.Interface.Addressing")
764  Q_CLASSINFO("D-Bus Introspection", ""
765 " <interface name=\"org.freedesktop.Telepathy.Protocol.Interface.Addressing\">\n"
766 " <property access=\"read\" type=\"as\" name=\"AddressableVCardFields\"/>\n"
767 " <property access=\"read\" type=\"as\" name=\"AddressableURISchemes\"/>\n"
768 " <method name=\"NormalizeVCardAddress\">\n"
769 " <arg direction=\"in\" type=\"s\" name=\"VCardField\"/>\n"
770 " <arg direction=\"in\" type=\"s\" name=\"VCardAddress\"/>\n"
771 " <arg direction=\"out\" type=\"s\" name=\"normalizedVCardAddress\"/>\n"
772 " </method>\n"
773 " <method name=\"NormalizeContactURI\">\n"
774 " <arg direction=\"in\" type=\"s\" name=\"URI\"/>\n"
775 " <arg direction=\"out\" type=\"s\" name=\"normalizedURI\"/>\n"
776 " </method>\n"
777 " </interface>\n"
778 "")
779  Q_PROPERTY(QStringList AddressableVCardFields READ AddressableVCardFields )
780  Q_PROPERTY(QStringList AddressableURISchemes READ AddressableURISchemes )
781 
782 public:
783  ProtocolInterfaceAddressingAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
785 
786  typedef Tp::MethodInvocationContextPtr< QString > NormalizeVCardAddressContextPtr;
787  typedef Tp::MethodInvocationContextPtr< QString > NormalizeContactURIContextPtr;
788 
789 public: // PROPERTIES
854  QStringList AddressableVCardFields() const;
936  QStringList AddressableURISchemes() const;
937 
938 public Q_SLOTS: // METHODS
981  QString NormalizeVCardAddress(const QString& VCardField, const QString& VCardAddress, const QDBusMessage& dbusMessage);
1043  QString NormalizeContactURI(const QString& URI, const QDBusMessage& dbusMessage);
1044 };
1045 
1054 {
1055  Q_OBJECT
1056  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol.Interface.Avatars")
1057  Q_CLASSINFO("D-Bus Introspection", ""
1058 " <interface name=\"org.freedesktop.Telepathy.Protocol.Interface.Avatars\">\n"
1059 " <property access=\"read\" type=\"as\" name=\"SupportedAvatarMIMETypes\"/>\n"
1060 " <property access=\"read\" type=\"u\" name=\"MinimumAvatarHeight\"/>\n"
1061 " <property access=\"read\" type=\"u\" name=\"MinimumAvatarWidth\"/>\n"
1062 " <property access=\"read\" type=\"u\" name=\"RecommendedAvatarHeight\"/>\n"
1063 " <property access=\"read\" type=\"u\" name=\"RecommendedAvatarWidth\"/>\n"
1064 " <property access=\"read\" type=\"u\" name=\"MaximumAvatarHeight\"/>\n"
1065 " <property access=\"read\" type=\"u\" name=\"MaximumAvatarWidth\"/>\n"
1066 " <property access=\"read\" type=\"u\" name=\"MaximumAvatarBytes\"/>\n"
1067 " </interface>\n"
1068 "")
1069  Q_PROPERTY(QStringList SupportedAvatarMIMETypes READ SupportedAvatarMIMETypes )
1070  Q_PROPERTY(uint MinimumAvatarHeight READ MinimumAvatarHeight )
1071  Q_PROPERTY(uint MinimumAvatarWidth READ MinimumAvatarWidth )
1072  Q_PROPERTY(uint RecommendedAvatarHeight READ RecommendedAvatarHeight )
1073  Q_PROPERTY(uint RecommendedAvatarWidth READ RecommendedAvatarWidth )
1074  Q_PROPERTY(uint MaximumAvatarHeight READ MaximumAvatarHeight )
1075  Q_PROPERTY(uint MaximumAvatarWidth READ MaximumAvatarWidth )
1076  Q_PROPERTY(uint MaximumAvatarBytes READ MaximumAvatarBytes )
1077 
1078 public:
1079  ProtocolInterfaceAvatarsAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1081 
1082 
1083 public: // PROPERTIES
1097  QStringList SupportedAvatarMIMETypes() const;
1111  uint MinimumAvatarHeight() const;
1125  uint MinimumAvatarWidth() const;
1139  uint RecommendedAvatarHeight() const;
1153  uint RecommendedAvatarWidth() const;
1167  uint MaximumAvatarHeight() const;
1181  uint MaximumAvatarWidth() const;
1195  uint MaximumAvatarBytes() const;
1196 };
1197 
1206 {
1207  Q_OBJECT
1208  Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol.Interface.Presence")
1209  Q_CLASSINFO("D-Bus Introspection", ""
1210 " <interface name=\"org.freedesktop.Telepathy.Protocol.Interface.Presence\">\n"
1211 " <property access=\"read\" type=\"a{s(ubb)}\" name=\"Statuses\">\n"
1212 " <annotation value=\"Tp::SimpleStatusSpecMap\" name=\"com.trolltech.QtDBus.QtTypeName\"/>\n"
1213 " </property>\n"
1214 " </interface>\n"
1215 "")
1216  Q_PROPERTY(Tp::SimpleStatusSpecMap Statuses READ Statuses )
1217 
1218 public:
1219  ProtocolInterfacePresenceAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
1221 
1222 
1223 public: // PROPERTIES
1239  Tp::SimpleStatusSpecMap Statuses() const;
1240 };
1241 
1242 }
1243 }
Definition: svc-connection-manager.h:27
Definition: build/TelepathyQt/_gen/types.h:2376
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
Definition: build/TelepathyQt/_gen/types.h:3849
QList< ParamSpec > ParamSpecList
Definition: build/TelepathyQt/_gen/types.h:2222
Definition: svc-connection-manager.h:284
Definition: svc-connection-manager.h:760
Base class for all the low-level service-side adaptors.
Definition: abstract-adaptor.h:40
Definition: svc-connection-manager.h:1205
Definition: svc-connection-manager.h:1053


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00910.html0000644000175100017520000001051312530426257021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientApprover Member List

This is the complete list of members for Tp::AbstractClientApprover, including all inherited members.

AbstractClient()Tp::AbstractClient
AbstractClientApprover(const ChannelClassSpecList &channelFilter)Tp::AbstractClientApproverprotected
addDispatchOperation(const MethodInvocationContextPtr<> &context, const ChannelDispatchOperationPtr &dispatchOperation)=0Tp::AbstractClientApproverpure virtual
approverFilter() const Tp::AbstractClientApprover
isRegistered() const Tp::AbstractClient
RefCounted()Tp::RefCountedinline
~AbstractClient()Tp::AbstractClientvirtual
~AbstractClientApprover()Tp::AbstractClientApprovervirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01380.html0000644000175100017520000001241612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactInfoAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceContactInfoAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ContactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo)Tp::Service::ConnectionInterfaceContactInfoAdaptorsignal
ContactInfoFlags() const Tp::Service::ConnectionInterfaceContactInfoAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetContactInfo(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactInfoAdaptorslot
RefreshContactInfo(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactInfoAdaptorslot
RequestContactInfo(uint contact, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactInfoAdaptorslot
SetContactInfo(const Tp::ContactInfoFieldList &contactInfo, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactInfoAdaptorslot
SupportedFields() const Tp::Service::ConnectionInterfaceContactInfoAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00164.html0000644000175100017520000010166212530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::CapabilitiesBase Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The CapabilitiesBase class represents the capabilities a Connection or a Contact supports. More...

#include <TelepathyQt/CapabilitiesBase>

Inherited by Tp::ConnectionCapabilities, and Tp::ContactCapabilities.

Public Member Functions

 CapabilitiesBase ()
 
 CapabilitiesBase (const CapabilitiesBase &other)
 
virtual ~CapabilitiesBase ()
 
CapabilitiesBaseoperator= (const CapabilitiesBase &other)
 
RequestableChannelClassSpecList allClassSpecs () const
 
bool isSpecificToContact () const
 
bool textChats () const
 
bool audioCalls () const
 
bool videoCalls () const
 
bool videoCallsWithAudio () const
 
bool upgradingCalls () const
 
bool streamedMediaCalls () const
 
bool streamedMediaAudioCalls () const
 
bool streamedMediaVideoCalls () const
 
bool streamedMediaVideoCallsWithAudio () const
 
bool upgradingStreamedMediaCalls () const
 
bool fileTransfers () const
 

Protected Member Functions

 CapabilitiesBase (bool specificToContact)
 
 CapabilitiesBase (const RequestableChannelClassList &rccs, bool specificToContact)
 
 CapabilitiesBase (const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)
 
virtual void updateRequestableChannelClasses (const RequestableChannelClassList &rccs)
 

Detailed Description

The CapabilitiesBase class represents the capabilities a Connection or a Contact supports.

Constructor & Destructor Documentation

Tp::CapabilitiesBase::CapabilitiesBase ( )

Construct a new CapabilitiesBase object.

Tp::CapabilitiesBase::CapabilitiesBase ( const CapabilitiesBase other)
Tp::CapabilitiesBase::~CapabilitiesBase ( )
virtual

Class destructor.

Tp::CapabilitiesBase::CapabilitiesBase ( bool  specificToContact)
protected

Construct a new CapabilitiesBase object.

Parameters
specificToContactWhether this object describes the capabilities of a particular contact.
Tp::CapabilitiesBase::CapabilitiesBase ( const RequestableChannelClassList rccs,
bool  specificToContact 
)
protected

Construct a new CapabilitiesBase object using the given rccs.

Parameters
rccsRequestableChannelClassList representing the capabilities of a connection or contact.
specificToContactWhether this object describes the capabilities of a particular contact.
Tp::CapabilitiesBase::CapabilitiesBase ( const RequestableChannelClassSpecList rccSpecs,
bool  specificToContact 
)
protected

Construct a new CapabilitiesBase object using the given rccSpecs.

Parameters
rccSpecsRequestableChannelClassSpecList representing the capabilities of a connection or contact.
specificToContactWhether this object describes the capabilities of a particular contact.

Member Function Documentation

CapabilitiesBase & Tp::CapabilitiesBase::operator= ( const CapabilitiesBase other)
RequestableChannelClassSpecList Tp::CapabilitiesBase::allClassSpecs ( ) const

Return the list of requestable channel class spec representing the requests that can succeed.

This can be used by advanced clients to determine whether an unusually complex request would succeed. See the Telepathy specification for details of how to interpret the returned list.

The higher-level methods like textChats() are likely to be more useful to the majority of clients.

Returns
A RequestableChannelClassSpecList indicating the parameters to Account::createChannel, Account::ensureChannel, Connection::createChannel and Connection::ensureChannel that can be expected to work.
bool Tp::CapabilitiesBase::isSpecificToContact ( ) const

Return whether this object accurately describes the capabilities of a particular contact, or if it's only a guess based on the capabilities of the underlying connection.

In protocols like XMPP where each contact advertises their capabilities to others, Contact::capabilities() will generally return an object where this method returns true.

In protocols like SIP where contacts' capabilities are not known, Contact::capabilities() will return an object where this method returns false, whose methods textChats() etc. are based on what the underlying connection supports.

This reflects the fact that the best assumption an application can make is that every contact supports every channel type supported by the connection, while indicating that requests to communicate might fail if the contact does not actually have the necessary functionality.

Returns
true if this object describes the capabilities of a particular contact, false otherwise.
bool Tp::CapabilitiesBase::textChats ( ) const

Return whether private text channels can be established by providing a contact identifier.

If the protocol is such that text chats can be established, but only via a more elaborate D-Bus API than normal (because more information is needed), then this method will return false.

Returns
true if Account::ensureTextChat() can be expected to work, false otherwise.
bool Tp::CapabilitiesBase::audioCalls ( ) const
bool Tp::CapabilitiesBase::videoCalls ( ) const
bool Tp::CapabilitiesBase::videoCallsWithAudio ( ) const
bool Tp::CapabilitiesBase::upgradingCalls ( ) const
bool Tp::CapabilitiesBase::streamedMediaCalls ( ) const

Return whether private audio and/or video calls can be established by providing a contact identifier.

If the protocol is such that these calls can be established, but only via a more elaborate D-Bus API than normal (because more information is needed), then this method will return false.

Returns
true if Account::ensureStreamedMediaCall() can be expected to work, false otherwise.
See Also
streamedMediaAudioCalls(), streamedMediaVideoCalls(), streamedMediaVideoCallsWithAudio()
bool Tp::CapabilitiesBase::streamedMediaAudioCalls ( ) const

Return whether private audio calls can be established by providing a contact identifier.

Call upgradingCalls() to determine whether such calls are likely to be upgradable to have a video stream later.

If the protocol is such that these calls can be established, but only via a more elaborate D-Bus API than normal (because more information is needed), then this method will return false.

In some older connection managers, streamedMediaAudioCalls() and streamedMediaVideoCalls() might both return false, even though streamedMediaCalls() returns true. This indicates that only an older API is supported - clients of these connection managers must call Account::ensureStreamedMediaCall() to get an empty call, then add audio and/or video streams to it.

Returns
true if Account::ensureStreamedMediaAudioCall() can be expected to work, false otherwise.
See Also
streamedMediaCalls(), streamedMediaVideoCalls(), streamedMediaVideoCallsWithAudio()
bool Tp::CapabilitiesBase::streamedMediaVideoCalls ( ) const

Return whether private video calls can be established by providing a contact identifier.

The same comments as for streamedMediaAudioCalls() apply to this method.

Returns
true if Account::ensureStreamedMediaVideoCall() can be expected to work, if given false as withAudio parameter, false otherwise.
See Also
streamedMediaCalls(), streamedMediaAudioCalls(), streamedMediaVideoCallsWithAudio()
bool Tp::CapabilitiesBase::streamedMediaVideoCallsWithAudio ( ) const

Return whether private video calls with audio can be established by providing a contact identifier.

The same comments as for streamedMediaAudioCalls() apply to this method.

Returns
true if Account::ensureStreamedMediaVideoCall() can be expected to work, if given true as withAudio parameter, false otherwise.
See Also
streamedMediaCalls(), streamedMediaAudioCalls(), streamedMediaVideoCalls()
bool Tp::CapabilitiesBase::upgradingStreamedMediaCalls ( ) const

Return whether the protocol supports adding streams of a different type to ongoing media calls.

In some protocols and clients (such as XMPP Jingle), all calls potentially support both audio and video. This is indicated by returning true.

In other protocols and clients (such as MSN, and the variant of XMPP Jingle used by Google clients), the streams are fixed at the time the call is started, so if you will ever want video, you have to ask for it at the beginning, for instance with ensureStreamedMediaVideoCall(). This is indicated by returning false.

User interfaces can use this method as a UI hint. If it returns false, then a UI wishing to support both audio and video calls will have to provide separate "audio call" and "video call" buttons or menu items; if it returns true, a single button that makes an audio call is sufficient, because video can be added later.

(The underlying Telepathy feature is the ImmutableStreams property; if this method returns true, then ImmutableStreams is false, and vice versa).

Returns
true if audio calls can be upgraded to audio + video, false otherwise.
bool Tp::CapabilitiesBase::fileTransfers ( ) const

Return whether file transfer can be established by providing a contact identifier

Returns
true if file transfers can be expected to work, false otherwise.
void Tp::CapabilitiesBase::updateRequestableChannelClasses ( const RequestableChannelClassList rccs)
protectedvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01125.html0000644000175100017520000000527412530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ObjectPathList Member List

This is the complete list of members for Tp::ObjectPathList, including all inherited members.

ObjectPathList()Tp::ObjectPathListinline
ObjectPathList(const QList< QDBusObjectPath > &a)Tp::ObjectPathListinline
operator=(const QList< QDBusObjectPath > &a)Tp::ObjectPathListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00479.html0000644000175100017520000002057612530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor2< R, Arg1, Arg2 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor2< R, Arg1, Arg2 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1, Arg2)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor2 (FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 >
typedef R(* Tp::PtrFunctor2< R, Arg1, Arg2 >::FunctionType)(Arg1, Arg2)
template<class R , class Arg1 , class Arg2 >
typedef R Tp::PtrFunctor2< R, Arg1, Arg2 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 >
Tp::PtrFunctor2< R, Arg1, Arg2 >::PtrFunctor2 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 >
ResultType Tp::PtrFunctor2< R, Arg1, Arg2 >::operator() ( Arg1  a1,
Arg2  a2 
) const
inline

Member Data Documentation

template<class R , class Arg1 , class Arg2 >
FunctionType Tp::PtrFunctor2< R, Arg1, Arg2 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00223.html0000644000175100017520000010723612530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceSMSInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< uint, int, int > GetSMSLength (const Tp::MessagePartList &message, int timeout=-1)
 

Signals

void SMSChannelChanged (bool SMSChannel)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceSMSInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSMSInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSMSInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceSMSInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceSMSInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyFlash () const
 
Tp::PendingVariantrequestPropertySMSChannel () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.SMS".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSMSInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSMSInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceSMSInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceSMSInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceSMSInterface::ChannelInterfaceSMSInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceSMSInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceSMSInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.SMS", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSMSInterface::requestPropertyFlash ( ) const
inline

Asynchronous getter for the remote object property Flash of type bool.

If True, then this channel is exclusively for receiving class 0 SMSes (and no SMSes can be sent using ChannelInterfaceMessagesInterface::SendMessage() on this channel). If False, no incoming class 0 SMSes will appear on this channel.

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. ConnectionInterfaceRequestsInterface::NewChannels() signals.

Class 0 SMSes should be displayed immediately to the user, and need not be saved to the device memory unless the user explicitly chooses to do so. This is unlike “normalâ€, class 1 SMSes, which must be stored, but need not be shown immediately in their entirity to the user.

Separating class 0 SMSes into their own channel with this immutable property allows them to be dispatched to a different ClientHandlerInterface —which would include this property in its ClientHandlerInterface::HandlerChannelFilter —avoiding the normal Text channel handler having to decide for each message whether it should be displayed to the user immediately or handled normally.

Currently, no mechanism is defined for sending class 0 SMSes. It seems reasonable to support specifying the class of an outgoing SMS in its header Message_Part, rather than requiring the UI to request a special channel for such SMSes; hence, we define here that channels with Flash set to True are read-only.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSMSInterface::requestPropertySMSChannel ( ) const
inline

Asynchronous getter for the remote object property SMSChannel of type bool.

If TRUE, messages sent and received on this channel are transmitted via SMS.

If this property is included in the channel request, the Connection Manager MUST return an appropriate channel (i.e. if TRUE the channel must be for SMSes, if FALSE it must not), or else fail to provide the requested channel with the NotCapable error.

For example, to explicitly request an SMS channel to a contact. You might construct a channel request like:

{
  Channel.Type: Channel.Type.Text,
  Channel.TargetHandleType: Handle_Type_Contact,
  Channel.TargetID: escher.cat,
  Channel.Interface.SMS.SMSChannel: True,
}
Some protocols allow us to send SMSes to a remote contact, without knowing the phone number to which those SMSes will be sent. This provides a mechanism to request such channels.

If this property is not included in the channel request, the Connection Manager MAY return an SMS channel if that is the most appropriate medium (i.e. if the channel target is a phone number).

To some types of identifiers (i.e. phone numbers) it only makes sense to return an SMS channel, this is what happens currently with telepathy-ring. We don't want to break this behaviour when we are not explicit about the type of channel we want. Alternatively, for protocols where there is an SMS fallback for IM messages, it's possible that we don't care what sort of channel we get, and simply want notification of the transport.

Some protocols have a fallback to deliver IM messages via SMS. On these protocols, the Connection Manager SHOULD set the property value as appropriate, and notify its change with SMSChannelChanged() .

Protocols such as MSN can fall back to delivering IM messages via SMS. Where possible we want clients to be able to inform the user that their messages are going to be redirected to the remote contact's phone.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceSMSInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<uint, int, int> Tp::Client::ChannelInterfaceSMSInterface::GetSMSLength ( const Tp::MessagePartList message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetSMSLength on the remote object.

Returns the number of 140 octet chunks required to send a message via SMS, as well as the number of remaining characters available in the final chunk and, if possible, an estimate of the cost.

There are a number of different SMS encoding mechanisms, and the client doesn't know which mechanisms an individual CM might support. This method allows the client, without any knowledge of the encoding mechanism, to provide length details to the user.

Clients SHOULD limit the frequency with which this method is called and SHOULD NOT call it for every keystroke. Clients MAY estimate the remaining size between single keystrokes.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
message
The message the user wishes to send.
timeoutThe timeout in milliseconds.
Returns

The number of 140 octet chunks required to send this message.

For example, in the GSM standard 7-bit encoding, a 162 character message would require 2 chunks.

Returns

The number of further characters that can be fit in the final chunk. A negative value indicates that the message will be truncated by abs(Remaining_Characters). The value MIN_INT32 (-231) indicates the message will be truncated by an unknown amount.

For example, in the GSM standard 7-bit encoding, a 162 character message would return 144 remaining characters (because of the space required for the multipart SMS header).

Returns

The estimated cost of sending this message. The currency and scale of this value are the same as the ConnectionInterfaceBalanceInterface::AccountBalance property.

A value of -1 indicates the cost could not be estimated.

void Tp::Client::ChannelInterfaceSMSInterface::SMSChannelChanged ( bool  SMSChannel)
signal

Represents the signal SMSChannelChanged on the remote object.

This signal indicates a change in the SMSChannel property.

Parameters
SMSChannel
The new value for SMSChannel.
void Tp::Client::ChannelInterfaceSMSInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01194.html0000644000175100017520000000475412530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimplePresence Member List

This is the complete list of members for Tp::SimplePresence, including all inherited members.

statusTp::SimplePresence
statusMessageTp::SimplePresence
typeTp::SimplePresence


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x77.html0000644000175100017520000000324412530426260024125 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- w -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00538.html0000644000175100017520000002730312530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeServer::Tube Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer::Tube Class Reference

The StreamTubeServer::Tube class represents a tube being handled by the server. More...

#include <TelepathyQt/StreamTubeServer>

Inherits QPair< AccountPtr, OutgoingStreamTubeChannelPtr >.

Public Member Functions

 Tube ()
 
 Tube (const AccountPtr &account, const OutgoingStreamTubeChannelPtr &channel)
 
 Tube (const Tube &other)
 
 ~Tube ()
 
bool isValid () const
 
Tubeoperator= (const Tube &other)
 
const AccountPtr & account () const
 
const
OutgoingStreamTubeChannelPtr & 
channel () const
 

Detailed Description

The StreamTubeServer::Tube class represents a tube being handled by the server.

Constructor & Destructor Documentation

Tp::StreamTubeServer::Tube::Tube ( )

Constructs a new invalid Tube instance.

Tp::StreamTubeServer::Tube::Tube ( const AccountPtr &  account,
const OutgoingStreamTubeChannelPtr &  channel 
)

Constructs a Tube instance for the given tube channel originating from the given account.

Parameters
accountA pointer to the account object.
channelA pointer to the tube channel object.
Tp::StreamTubeServer::Tube::Tube ( const Tube other)

Copy constructor.

Tp::StreamTubeServer::Tube::~Tube ( )

Class destructor.

Member Function Documentation

bool Tp::StreamTubeServer::Tube::isValid ( ) const
inline

Return whether or not the tube is valid or is just the null object created using the default constructor.

Returns
true if valid, false otherwise.
StreamTubeServer::Tube & Tp::StreamTubeServer::Tube::operator= ( const Tube other)

Assignment operator.

AccountPtr Tp::StreamTubeServer::Tube::account ( ) const
inline

Return the account from which the tube originates.

Returns
A pointer to the account object.
OutgoingStreamTubeChannelPtr Tp::StreamTubeServer::Tube::channel ( ) const
inline

Return the actual tube channel.

Returns
A pointer to the channel.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00559_source.html0000644000175100017520000001742412530426257022533 0ustar00kaffeinekaffeine00000000000000 account-property-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account-property-filter.h
1 
23 #ifndef _TelepathyQt_account_property_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_account_property_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Account>
31 #include <TelepathyQt/GenericPropertyFilter>
32 #include <TelepathyQt/Types>
33 
34 namespace Tp
35 {
36 
37 class TP_QT_EXPORT AccountPropertyFilter : public GenericPropertyFilter<Account>
38 {
39 public:
40  static AccountPropertyFilterPtr create()
41  {
42  return AccountPropertyFilterPtr(new AccountPropertyFilter);
43  }
44 
46 
47  bool isValid() const;
48 
49 private:
51 
52  struct Private;
53  friend struct Private;
54  Private *mPriv;
55 };
56 
57 } // Tp
58 
59 #endif
static AccountPropertyFilterPtr create()
Definition: account-property-filter.h:40
The AccountPropertyFilter class provides a filter object to be used to filter accounts by properties...
Definition: account-property-filter.h:37
The GenericPropertyFilter class provides a generic filter object to be used to filter objects by prop...
Definition: generic-property-filter.h:37


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00292.html0000644000175100017520000021553512530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceContactListInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ContactAttributesMap
GetContactListAttributes (const QStringList &interfaces, bool hold, int timeout=-1)
 
QDBusPendingReply RequestSubscription (const Tp::UIntList &contacts, const QString &message, int timeout=-1)
 
QDBusPendingReply AuthorizePublication (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply RemoveContacts (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply Unsubscribe (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply Unpublish (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply Download (int timeout=-1)
 

Signals

void ContactListStateChanged (uint contactListState)
 
void ContactsChangedWithID (const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)
 
void ContactsChanged (const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceContactListInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactListInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactListInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceContactListInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceContactListInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyContactListState () const
 
Tp::PendingVariantrequestPropertyContactListPersists () const
 
Tp::PendingVariantrequestPropertyCanChangeContactList () const
 
Tp::PendingVariantrequestPropertyRequestUsesMessage () const
 
Tp::PendingVariantrequestPropertyDownloadAtConnection () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ContactList".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactListInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactListInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceContactListInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceContactListInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceContactListInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceContactListInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ContactList", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyContactListState ( ) const
inline

Asynchronous getter for the remote object property ContactListState of type uint.

The progress made in retrieving the contact list. Change notification is via ContactListStateChanged.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyContactListPersists ( ) const
inline

Asynchronous getter for the remote object property ContactListPersists of type bool.

If true, presence subscriptions (in both directions) on this connection are stored by the server or other infrastructure.

XMPP, MSN, ICQ, etc. all behave like this.

If false, presence subscriptions on this connection are not stored.

In SIMPLE (SIP), clients are expected to keep a record of subscriptions, as described below. In link-local XMPP, subscriptions are implicit (everyone on the local network receives presence from everyone else) so nothing is ever stored.

If CanChangeContactList is true, Telepathy clients (e.g. user interfaces or address books) MAY keep a record of permission to publish and requests to subscribe locally, and attempt to restore it for each Connection. If ContactListPersists is false, clients MAY do this for all contacts; if ContactListPersists is true, clients SHOULD NOT change the state of contacts that were not changed locally.

In SIMPLE (SIP), ContactListPersists is false, but CanChangeContactList is true. Presence will not be received unless clients renew any subscriptions they have for each connection, in the way described. There is no server-side storage, so clients have no alternative but to maintain independent contact lists.

In protocols like XMPP and MSN, it may be useful for clients to queue up subscription requests or removals made while offline and process them next time the connection is online. However, clients should only replay the changes, rather than resetting the contact list to match a stored copy, to avoid overwriting changes that were made on the server.

Clients that replay requests like this SHOULD do so by calling AuthorizePublication to pre-approve publication of presence to the appropriate contacts, followed by RequestSubscription to request the appropriate contacts' presences.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyCanChangeContactList ( ) const
inline

Asynchronous getter for the remote object property CanChangeContactList of type bool.

If true, presence subscription and publication can be changed using the RequestSubscription() , AuthorizePublication() and RemoveContacts() methods.

If false, all of those methods will always fail; they SHOULD raise the error org.freedesktop.Telepathy.Error.NotImplemented.

In XEP-0174 "Serverless Messaging" (link-local XMPP), presence is implicitly published to everyone in the local subnet, so the user cannot control their presence publication.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyRequestUsesMessage ( ) const
inline

Asynchronous getter for the remote object property RequestUsesMessage of type bool.

If true, the Message parameter to RequestSubscription() is likely to be significant, and user interfaces SHOULD prompt the user for a message to send with the request; a message such as "I would like to add you to my contact list", translated into the local user's language, might make a suitable default.

This matches user expectations in XMPP and ICQ, for instance.

If false, the parameter is ignored; user interfaces SHOULD avoid prompting the user, and SHOULD pass an empty string to RequestSubscription.

FIXME: is there any such protocol?

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyDownloadAtConnection ( ) const
inline

Asynchronous getter for the remote object property DownloadAtConnection of type bool.

If true, the contact list is automatically downloaded at connection. If false, the contact list is only downloaded when requested explicitely with Download() .

Downloading the contact list uses bandwidth and is not always necessary or desired. For example, a client could cache the contact list from previous connections and accept less regular updates, it could get the contact list from an out-of-band protocol-specific way, or it could not need the contact list at all.

Connection managers MUST default to true.

If a connection manager starts supporting this property but defaults to false, it would break all existing clients that don't call Download() .

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceContactListInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ContactAttributesMap> Tp::Client::ConnectionInterfaceContactListInterface::GetContactListAttributes ( const QStringList &  interfaces,
bool  hold,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactListAttributes on the remote object.

Return some contact attributes for a list of contacts associated with the user. This list MUST include at least:

  • all contacts whose subscribe attribute is not No
  • all contacts whose publish attribute is not No

but MAY contain other contacts.

For instance, on XMPP, all contacts on the roster would appear here even if they have subscription="none", unless there's reason to believe the user does not want to see them (such as having been blocked).

This list does not need to contain every visible contact: for instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear here. Blocked contacts SHOULD NOT appear here, unless they still have a non-No subscribe or publish attribute for some reason.

It's reasonable to assume that blocked contacts should not be visible to the user unless they specifically go looking for them, at least in protocols like XMPP where blocking a contact suppresses presence.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. Equivalent to the corresponding argument to ConnectionInterfaceContactsInterface::GetContactAttributes() , except that if this list does not contain the ContactList interface itself, it is treated as though that interface was also requested.

hold

If true, all handles that appear as keys in the result have been held on behalf of the calling process, as if by a call to ConnectionInterface::HoldHandles() . (If ConnectionInterface::HasImmortalHandles is true, which SHOULD be the case in all new connection managers, this has no effect.)

timeoutThe timeout in milliseconds.
Returns

A dictionary mapping the contact handles to contact attributes, equivalent to the result of ConnectionInterfaceContactsInterface::GetContactAttributes() .

QDBusPendingReply Tp::Client::ConnectionInterfaceContactListInterface::RequestSubscription ( const Tp::UIntList contacts,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestSubscription on the remote object.

Request that the given contacts allow the local user to subscribe to their presence, i.e. that their subscribe attribute becomes Yes.

Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically allow the contacts to see the local user's presence). User interfaces that require mutual subscription MAY call AuthorizePublication() at the same time as this method.

Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.

Before calling this method on a connection where ConnectionInterfaceAliasingInterface::GetAliasFlags() returns the User_Set flag, user interfaces SHOULD obtain, from the user, an alias to identify the contact in future, and store it using ConnectionInterfaceAliasingInterface::SetAliases() .

The user MAY be prompted using the contact's current self-assigned nickname, or something derived from the contact's (presumably self-assigned) identifier, as a default, but these names chosen by the contact SHOULD NOT be used without user approval.

This is a generalization of XEP-0165 "Best Practices to Discourage JID Mimicking") to protocols other than XMPP. A reasonable user interface for this, as used in many XMPP clients, is to have a text entry for the alias adjacent to the text entry for the identifier to add.

For contacts with subscribe=Yes, this method has no effect. It MUST return successfully if all contacts are in this state.

For contacts with subscribe=Ask, this method SHOULD send a new request, with the given message, if allowed by the underlying protocol.

For contacts with subscribe=No or subscribe=Rejected, this method SHOULD request that the contact allows the local user to subscribe to their presence; in general, this will change their publish attribute to Ask (although it could change directly to Yes in some situations).

Any state changes that immediately result from this request MUST be signalled via ContactsChanged() before this method returns.

This makes it easy for user interfaces to see what practical effect this method had.

If the remote contact accepts the request, their subscribe attribute will later change from Ask to Yes.

If the remote contact explicitly rejects the request (in protocols that allow this), their subscribe attribute will later change from Ask to Rejected.

If the subscription request is cancelled by the local user, the contact's subscribe attribute will change from Ask to No.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts

One or more contacts to whom requests are to be sent.

message

An optional plain-text message from the user, to send to those contacts with the subscription request. The RequestUsesMessage property indicates whether this message will be used or ignored.

Clients SHOULD NOT send a non-empty message without first giving the user an opportunity to edit it.

These messages are typically presented to the remote contact as if the user had typed them, so as a minimum, the user should be allowed to see what the UI will be saying on their behalf.

Connections where this message is not useful MUST still allow it to be non-empty.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactListInterface::AuthorizePublication ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AuthorizePublication on the remote object.

For each of the given contacts, request that the local user's presence is sent to that contact, i.e. that their publish attribute becomes Yes.

Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically request that the contacts allow the user to subscribe to their presence). User interfaces that require mutual subscription MAY call RequestSubscription() at the same time as this method.

Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.

For contacts with publish=Yes, this method has no effect; it MUST return successfully if all contacts given have this state.

For contacts with publish=Ask, this method accepts the contact's request to see the local user's presence, changing their publish attribute from Ask to Yes.

For contacts with publish=No, if the protocol allows it, this method allows the contacts to see the local user's presence even though they have not requested it, changing their publish attribute from No to Yes. Otherwise, it merely records the fact that presence publication to those contacts is allowed; if any of those contacts ask to receive the local user's presence later in the lifetime of the connection, the connection SHOULD immediately allow them to do so, changing their publish attribute directly from No to Yes.

This makes it easy to implement the common UI policy that if the user attempts to subscribe to a contact's presence, requests for reciprocal subscription are automatically approved.

Any state changes that immediately result from this request MUST be signalled via ContactsChanged() before this method returns.

This makes it easy for user interfaces to see what practical effect this method had.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts

One or more contacts to authorize.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactListInterface::RemoveContacts ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveContacts on the remote object.

Remove the given contacts from the contact list entirely. It is protocol-dependent whether this works, and under which circumstances.

If possible, this method SHOULD set the contacts' subscribe and publish attributes to No, remove any stored aliases for those contacts, and remove the contacts from the result of GetContactListAttributes() .

This method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts (for instance, if there is an outstanding request to subscribe to the contact's presence, and it's not possible to cancel such requests). However, all signals that immediately result from this method call MUST be emitted before it returns, so that clients can interpret the result.

User interfaces removing a contact from the contact list are unlikely to want spurious failure notifications resulting from limitations of a particular protocol. However, emitting the signals first means that if a client does want to check exactly what happened, it can wait for the method to return (while applying change-notification signals to its local cache of the contact list's state), then consult its local cache of the contact list's state to see whether the contact is still there.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts

One or more contacts to remove.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactListInterface::Unsubscribe ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Unsubscribe on the remote object.

Attempt to set the given contacts' subscribe attribute to No, i.e. stop receiving their presence.

For contacts with subscribe=Ask, this attempts to cancel an earlier request to subscribe to the contact's presence; for contacts with subscribe=Yes, this attempts to unsubscribe from the contact's presence.

As with RemoveContacts() , this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts

One or more contacts to remove.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactListInterface::Unpublish ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Unpublish on the remote object.

Attempt to set the given contacts' publish attribute to No, i.e. stop sending presence to them.

For contacts with publish=Ask, this method explicitly rejects the contact's request to subscribe to the user's presence; for contacts with publish=Yes, this method attempts to prevent the user's presence from being received by the contact.

As with RemoveContacts() , this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts

One or more contacts to remove.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfaceContactListInterface::Download ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Download on the remote object.

Download the contact list from the server. If DownloadAtConnection is true, Download does nothing.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfaceContactListInterface::ContactListStateChanged ( uint  contactListState)
signal

Represents the signal ContactListStateChanged on the remote object.

Emitted when ContactListState changes.

Parameters
contactListState
The new value of ContactListState.
void Tp::Client::ConnectionInterfaceContactListInterface::ContactsChangedWithID ( const Tp::ContactSubscriptionMap changes,
const Tp::HandleIdentifierMap identifiers,
const Tp::HandleIdentifierMap removals 
)
signal

Represents the signal ContactsChangedWithID on the remote object.

Emitted when the contact list becomes available, when contacts' basic stored properties change, when new contacts are added to the list that would be returned by GetContactListAttributes() , or when contacts are removed from that list.

This provides change notification for that list, and for contacts' subscribe, publish and publish-request attributes.

Connection managers SHOULD also emit this signal when a contact requests that the user's presence is published to them, even if that contact's publish attribute is already Ask and the publish-request has not changed.

If the same contact sends 10 identical requests, 10 identical signals should be emitted.

Parameters
changes
The new subscribe, publish and publish-request attributes of all 
the contacts that have been added, and all the contacts for which 
those attributes have changed.
identifiers The identifiers of the contacts in the Changes map.
removals The contacts that have been removed from the list that would be returned by GetContactListAttributes() . This also implies that they have subscribe = No and publish = No; contacts MUST NOT be listed both here and in Changes.
void Tp::Client::ConnectionInterfaceContactListInterface::ContactsChanged ( const Tp::ContactSubscriptionMap changes,
const Tp::UIntList removals 
)
signal

Represents the signal ContactsChanged on the remote object.

Emitted immediately after ContactsChangedWithID() , under the same circumstances.

If clients receive this signal without first receiving a corresponding ContactsChangedWithID() , they MUST assume that only this signal will be emitted.

Parameters
changes
The same as the corresponding argument to ContactsChangedWithID.
removals
The same as the corresponding argument to ContactsChangedWithID, 
except that it only includes handles and not identifiers.
void Tp::Client::ConnectionInterfaceContactListInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01253.html0000644000175100017520000002205312530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceAnonymityInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceAnonymityInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceAnonymityInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceAnonymityInterface
ChannelInterfaceAnonymityInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceAnonymityInterface
ChannelInterfaceAnonymityInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceAnonymityInterface
ChannelInterfaceAnonymityInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceAnonymityInterfaceexplicit
ChannelInterfaceAnonymityInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceAnonymityInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceAnonymityInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceAnonymityInterfaceinline
requestPropertyAnonymityMandatory() const Tp::Client::ChannelInterfaceAnonymityInterfaceinline
requestPropertyAnonymityModes() const Tp::Client::ChannelInterfaceAnonymityInterfaceinline
requestPropertyAnonymousID() const Tp::Client::ChannelInterfaceAnonymityInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceAnonymityInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00555_source.html0000644000175100017520000001123712530426257022523 0ustar00kaffeinekaffeine00000000000000 account-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account-filter.h
1 
23 #ifndef _TelepathyQt_account_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_account_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Filter>
31 
32 namespace Tp
33 {
34 
36 
37 } // Tp
38 
39 #endif
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
Filter< Account > AccountFilter
Definition: account-filter.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00351.html0000644000175100017520000001373512530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Features Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Features class represents a list of Feature. More...

#include <TelepathyQt/Features>

Inherits QSet< Feature >.

Public Member Functions

 Features ()
 
 Features (const Feature &feature)
 
 Features (const QSet< Feature > &s)
 

Detailed Description

The Features class represents a list of Feature.

Constructor & Destructor Documentation

Tp::Features::Features ( )
inline
Tp::Features::Features ( const Feature feature)
inline
Tp::Features::Features ( const QSet< Feature > &  s)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00828_source.html0000644000175100017520000002730012530426257022524 0ustar00kaffeinekaffeine00000000000000 simple-text-observer.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
simple-text-observer.h
1 
23 #ifndef _TelepathyQt_simple_text_observer_h_HEADER_GUARD_
24 #define _TelepathyQt_simple_text_observer_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/Constants>
27 #include <TelepathyQt/Types>
28 
29 #include <QObject>
30 
31 namespace Tp
32 {
33 
34 class Message;
35 class PendingOperation;
36 class ReceivedMessage;
37 
38 class TP_QT_EXPORT SimpleTextObserver : public QObject, public RefCounted
39 {
40  Q_OBJECT
41  Q_DISABLE_COPY(SimpleTextObserver)
42 
43 public:
44  static SimpleTextObserverPtr create(const AccountPtr &account);
45  static SimpleTextObserverPtr create(const AccountPtr &account,
46  const ContactPtr &contact);
47  static SimpleTextObserverPtr create(const AccountPtr &account,
48  const QString &contactIdentifier);
49 
50  virtual ~SimpleTextObserver();
51 
52  AccountPtr account() const;
53  QString contactIdentifier() const;
54 
55  QList<TextChannelPtr> textChats() const;
56 
57 Q_SIGNALS:
58  void messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags,
59  const QString &sentMessageToken, const Tp::TextChannelPtr &channel);
60  void messageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel);
61 
62 private Q_SLOTS:
63  TP_QT_NO_EXPORT void onNewChannels(const QList<Tp::ChannelPtr> &channels);
64  TP_QT_NO_EXPORT void onChannelInvalidated(const Tp::ChannelPtr &channel);
65 
66 private:
67  TP_QT_NO_EXPORT static SimpleTextObserverPtr create(const AccountPtr &account,
68  const QString &contactIdentifier, bool requiresNormalization);
69 
70  TP_QT_NO_EXPORT SimpleTextObserver(const AccountPtr &account,
71  const QString &contactIdentifier, bool requiresNormalization);
72 
73  struct Private;
74  friend struct Private;
75  Private *mPriv;
76 };
77 
78 } // Tp
79 
80 #endif
The ReceivedMessage class is a subclass of Message, representing a received message only...
Definition: message.h:97
The SimpleTextObserver class provides an easy way to track sent/received text messages in an account ...
Definition: simple-text-observer.h:38
QFlags< MessageSendingFlag > MessageSendingFlags
Definition: build/TelepathyQt/_gen/constants.h:1166
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Message class represents a Telepathy message in a TextChannel.
Definition: message.h:44


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01312.html0000644000175100017520000002575312530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceMailNotificationInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceMailNotificationInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceMailNotificationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceMailNotificationInterface
ConnectionInterfaceMailNotificationInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceMailNotificationInterface
ConnectionInterfaceMailNotificationInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceMailNotificationInterface
ConnectionInterfaceMailNotificationInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceMailNotificationInterfaceexplicit
ConnectionInterfaceMailNotificationInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceMailNotificationInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceMailNotificationInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MailsReceived(const Tp::MailList &mails)Tp::Client::ConnectionInterfaceMailNotificationInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceMailNotificationInterfaceinline
RequestInboxURL(int timeout=-1)Tp::Client::ConnectionInterfaceMailNotificationInterfaceinlineslot
RequestMailURL(const QString &ID, const QDBusVariant &URLData, int timeout=-1)Tp::Client::ConnectionInterfaceMailNotificationInterfaceinlineslot
requestPropertyMailAddress() const Tp::Client::ConnectionInterfaceMailNotificationInterfaceinline
requestPropertyMailNotificationFlags() const Tp::Client::ConnectionInterfaceMailNotificationInterfaceinline
requestPropertyUnreadMailCount() const Tp::Client::ConnectionInterfaceMailNotificationInterfaceinline
requestPropertyUnreadMails() const Tp::Client::ConnectionInterfaceMailNotificationInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceMailNotificationInterfaceinlinestatic
UnreadMailsChanged(uint count, const Tp::MailList &mailsAdded, const QStringList &mailsRemoved)Tp::Client::ConnectionInterfaceMailNotificationInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01067.html0000644000175100017520000001617212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingChannel Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00911.html0000644000175100017520000001400412530426257021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientHandler Member List

This is the complete list of members for Tp::AbstractClientHandler, including all inherited members.

AbstractClient()Tp::AbstractClient
AbstractClientHandler(const ChannelClassSpecList &channelFilter, const Capabilities &capabilities=Capabilities(), bool wantsRequestNotification=false)Tp::AbstractClientHandlerprotected
addRequest(const ChannelRequestPtr &request)Tp::AbstractClientHandlervirtual
bypassApproval() const =0Tp::AbstractClientHandlerpure virtual
handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const QList< ChannelRequestPtr > &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo)=0Tp::AbstractClientHandlerpure virtual
handlerCapabilities() const Tp::AbstractClientHandler
handlerFilter() const Tp::AbstractClientHandler
isRegistered() const Tp::AbstractClient
RefCounted()Tp::RefCountedinline
removeRequest(const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage)Tp::AbstractClientHandlervirtual
wantsRequestNotification() const Tp::AbstractClientHandler
~AbstractClient()Tp::AbstractClientvirtual
~AbstractClientHandler()Tp::AbstractClientHandlervirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00410.html0000644000175100017520000005660712530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference

The MethodInvocationContext class provides a way for the service implementation to respond to method calls. More...

#include <TelepathyQt/MethodInvocationContext>

Inherits Tp::RefCounted.

Public Member Functions

 MethodInvocationContext (const QDBusConnection &bus, const QDBusMessage &message)
 
virtual ~MethodInvocationContext ()
 
bool isFinished () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 
void setFinished (const T1 &t1=T1(), const T2 &t2=T2(), const T3 &t3=T3(), const T4 &t4=T4(), const T5 &t5=T5(), const T6 &t6=T6(), const T7 &t7=T7(), const T8 &t8=T8())
 
void setFinishedWithError (const QString &errorName, const QString &errorMessage)
 
template<int Index>
Select< Index >::Type argumentAt () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

virtual void onFinished ()
 

Detailed Description

template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
class Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >

The MethodInvocationContext class provides a way for the service implementation to respond to method calls.

The methods setFinished() and setFinishedWithError() can be used to indicate whether the method call succeeded or failed.

If neither setFinished() nor setFinishedWithError() is called explicitly, the method call will be considered to have failed.

" In case an asynchronous operation needs to be performed when implementing a method call receiving a MethodInvocationContextPtr object, a reference to this object may be kept around until all asynchronous operations finish, and the appropriate finish method should be called to indicate whether the method call succeeded or failed later.

Constructor & Destructor Documentation

template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::MethodInvocationContext ( const QDBusConnection &  bus,
const QDBusMessage &  message 
)
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
virtual Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::~MethodInvocationContext ( )
inlinevirtual

Member Function Documentation

template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
bool Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::isFinished ( ) const
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
bool Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::isError ( ) const
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
QString Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::errorName ( ) const
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
QString Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::errorMessage ( ) const
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
void Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::setFinished ( const T1 &  t1 = T1(),
const T2 &  t2 = T2(),
const T3 &  t3 = T3(),
const T4 &  t4 = T4(),
const T5 &  t5 = T5(),
const T6 &  t6 = T6(),
const T7 &  t7 = T7(),
const T8 &  t8 = T8() 
)
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
void Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::setFinishedWithError ( const QString &  errorName,
const QString &  errorMessage 
)
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
template<int Index>
Select<Index>::Type Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::argumentAt ( ) const
inline
template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil, typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil, typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil, typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
virtual void Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >::onFinished ( )
inlineprotectedvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00824_source.html0000644000175100017520000004241412530426257022523 0ustar00kaffeinekaffeine00000000000000 simple-pending-operations.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
simple-pending-operations.h
1 
23 #ifndef _TelepathyQt_pending_operations_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_operations_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <QObject>
31 
32 #include <TelepathyQt/PendingOperation>
33 
34 namespace Tp
35 {
36 
37 class TP_QT_EXPORT PendingSuccess : public PendingOperation
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(PendingSuccess)
41 
42 public:
44  : PendingOperation(object)
45  {
46  setFinished();
47  }
48 };
49 
50 class TP_QT_EXPORT PendingFailure : public PendingOperation
51 {
52  Q_OBJECT
53  Q_DISABLE_COPY(PendingFailure)
54 
55 public:
56  PendingFailure(const QString &name, const QString &message,
57  const SharedPtr<RefCounted> &object)
58  : PendingOperation(object)
59  {
60  setFinishedWithError(name, message);
61  }
62 
63  PendingFailure(const QDBusError &error,
64  const SharedPtr<RefCounted> &object)
65  : PendingOperation(object)
66  {
67  setFinishedWithError(error);
68  }
69 };
70 
71 class TP_QT_EXPORT PendingVoid : public PendingOperation
72 {
73  Q_OBJECT
74  Q_DISABLE_COPY(PendingVoid)
75 
76 public:
77  PendingVoid(QDBusPendingCall call, const SharedPtr<RefCounted> &object);
78 
79 private Q_SLOTS:
80  TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*);
81 
82 private:
83  struct Private;
84  friend struct Private;
85  Private *mPriv;
86 };
87 
88 class TP_QT_EXPORT PendingComposite : public PendingOperation
89 {
90  Q_OBJECT
91  Q_DISABLE_COPY(PendingComposite)
92 
93 public:
94  PendingComposite(const QList<PendingOperation*> &operations, const SharedPtr<RefCounted> &object);
95  PendingComposite(const QList<PendingOperation*> &operations, bool failOnFirstError,
96  const SharedPtr<RefCounted> &object);
98 
99 private Q_SLOTS:
100  TP_QT_NO_EXPORT void onOperationFinished(Tp::PendingOperation *);
101 
102 private:
103  struct Private;
104  friend struct Private;
105  Private *mPriv;
106 };
107 
108 } // Tp
109 
110 #endif
The PendingSuccess class represents PendingOperation that is always successful.
Definition: simple-pending-operations.h:37
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingFailure class represents a PendingOperation that always fails with the error passed to the...
Definition: simple-pending-operations.h:50
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The PendingComposite class is a PendingOperation that can be used to track multiple pending operation...
Definition: simple-pending-operations.h:88
PendingSuccess(const SharedPtr< RefCounted > &object)
Definition: simple-pending-operations.h:43
The PendingVoid class is a generic subclass of PendingOperation representing a pending D-Bus method c...
Definition: simple-pending-operations.h:71
PendingFailure(const QDBusError &error, const SharedPtr< RefCounted > &object)
Definition: simple-pending-operations.h:63
PendingFailure(const QString &name, const QString &message, const SharedPtr< RefCounted > &object)
Definition: simple-pending-operations.h:56


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01381.html0000644000175100017520000001763612530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactListAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceContactListAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AuthorizePublication(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
CanChangeContactList() const Tp::Service::ConnectionInterfaceContactListAdaptor
ContactListPersists() const Tp::Service::ConnectionInterfaceContactListAdaptor
ContactListState() const Tp::Service::ConnectionInterfaceContactListAdaptor
ContactListStateChanged(uint contactListState)Tp::Service::ConnectionInterfaceContactListAdaptorsignal
ContactsChanged(const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals)Tp::Service::ConnectionInterfaceContactListAdaptorsignal
ContactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)Tp::Service::ConnectionInterfaceContactListAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
Download(const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
DownloadAtConnection() const Tp::Service::ConnectionInterfaceContactListAdaptor
GetContactListAttributes(const QStringList &interfaces, bool hold, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
RemoveContacts(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
RequestSubscription(const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
RequestUsesMessage() const Tp::Service::ConnectionInterfaceContactListAdaptor
Unpublish(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
Unsubscribe(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactListAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00165.html0000644000175100017520000001504512530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::CapabilityChange Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CapabilityChange Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint handle
 
QString channelType
 
uint oldGenericFlags
 
uint newGenericFlags
 
uint oldTypeSpecificFlags
 
uint newTypeSpecificFlags
 

Detailed Description

Structure type generated from the specification.

A struct (contact handle, channel type, old generic flags, new generic flags, old type-specific flags, new type-specific flags) representing a change to one of a contact's capabilities, as seen in the CapabilitiesChanged signal on the Capabilities interface.

Member Data Documentation

uint Tp::CapabilityChange::handle
QString Tp::CapabilityChange::channelType
uint Tp::CapabilityChange::oldGenericFlags
uint Tp::CapabilityChange::newGenericFlags
uint Tp::CapabilityChange::oldTypeSpecificFlags
uint Tp::CapabilityChange::newTypeSpecificFlags


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01126.html0000644000175100017520000000516612530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::UIntList Member List

This is the complete list of members for Tp::UIntList, including all inherited members.

operator=(const QList< uint > &a)Tp::UIntListinline
UIntList()Tp::UIntListinline
UIntList(const QList< uint > &a)Tp::UIntListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00980.html0000644000175100017520000001237012530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > Member List

This is the complete list of members for Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >, including all inherited members.

BaseCallback()Tp::BaseCallbackinline
BaseCallback(AbstractFunctorCaller *caller)Tp::BaseCallbackinline
BaseCallback(const BaseCallback &other)Tp::BaseCallbackinline
Callback5()Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
Callback5(const Functor &functor)Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
callerTp::BaseCallbackprotected
FunctionType typedefTp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >
isValid() const Tp::BaseCallbackinline
operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const Tp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >inline
operator=(const BaseCallback &other)Tp::BaseCallbackinline
ResultType typedefTp::Callback5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >
~BaseCallback()Tp::BaseCallbackinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00548_source.html0000644000175100017520000016564112530426257022536 0ustar00kaffeinekaffeine00000000000000 abstract-client.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
abstract-client.h
1 
23 #ifndef _TelepathyQt_abstract_client_h_HEADER_GUARD_
24 #define _TelepathyQt_abstract_client_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/SharedPtr>
32 #include <TelepathyQt/Types>
33 
34 #include <QList>
35 #include <QObject>
36 #include <QSharedDataPointer>
37 #include <QString>
38 #include <QVariantMap>
39 
40 namespace Tp
41 {
42 
43 class ClientRegistrar;
44 class ChannelClassSpecList;
45 
46 class TP_QT_EXPORT AbstractClient : public RefCounted
47 {
48  Q_DISABLE_COPY(AbstractClient)
49 
50 public:
52  virtual ~AbstractClient();
53 
54  bool isRegistered() const;
55 
56 private:
57  friend class ClientRegistrar;
58 
59  void setRegistered(bool registered);
60 
61  struct Private;
62  friend struct Private;
63  Private *mPriv;
64 };
65 
66 class TP_QT_EXPORT AbstractClientObserver : public virtual AbstractClient
67 {
68  Q_DISABLE_COPY(AbstractClientObserver)
69 
70 public:
72  {
73  public:
74  ObserverInfo(const QVariantMap &info = QVariantMap());
75  ObserverInfo(const ObserverInfo &other);
76  ~ObserverInfo();
77 
78  ObserverInfo &operator=(const ObserverInfo &other);
79 
80  bool isRecovering() const { return qdbus_cast<bool>(allInfo().value(QLatin1String("recovering"))); }
81 
82  QVariantMap allInfo() const;
83 
84  private:
85  struct Private;
86  QSharedDataPointer<Private> mPriv;
87  };
88 
89  virtual ~AbstractClientObserver();
90 
91  ChannelClassSpecList observerFilter() const;
92 
93  bool shouldRecover() const;
94 
95  virtual void observeChannels(const MethodInvocationContextPtr<> &context,
96  const AccountPtr &account,
97  const ConnectionPtr &connection,
98  const QList<ChannelPtr> &channels,
99  const ChannelDispatchOperationPtr &dispatchOperation,
100  const QList<ChannelRequestPtr> &requestsSatisfied,
101  const ObserverInfo &observerInfo) = 0;
102 
103 protected:
104  AbstractClientObserver(const ChannelClassSpecList &channelFilter, bool shouldRecover = false);
105 
106 private:
107  struct Private;
108  friend struct Private;
109  Private *mPriv;
110 };
111 
112 class TP_QT_EXPORT AbstractClientApprover : public virtual AbstractClient
113 {
114  Q_DISABLE_COPY(AbstractClientApprover)
115 
116 public:
117  virtual ~AbstractClientApprover();
118 
119  ChannelClassSpecList approverFilter() const;
120 
121  virtual void addDispatchOperation(const MethodInvocationContextPtr<> &context,
122  const ChannelDispatchOperationPtr &dispatchOperation) = 0;
123 
124 protected:
125  AbstractClientApprover(const ChannelClassSpecList &channelFilter);
126 
127 private:
128  struct Private;
129  friend struct Private;
130  Private *mPriv;
131 };
132 
133 /*
134  * TODO: use case specific subclasses:
135  * - StreamTubeHandler(QString(List) protocol(s))
136  * - handleTube(DBusTubeChannelPtr, userActionTime)
137  * - DBusTubeHandler(QString(List) serviceName(s))
138  * - handleTube(DBusTubeChannelPtr, userActionTime)
139  */
140 class TP_QT_EXPORT AbstractClientHandler : public virtual AbstractClient
141 {
142  Q_DISABLE_COPY(AbstractClientHandler)
143 
144 public:
146  {
147  public:
148  Capabilities(const QStringList &tokens = QStringList());
149  Capabilities(const Capabilities &other);
150  ~Capabilities();
151 
152  Capabilities &operator=(const Capabilities &other);
153 
155  {
157  QLatin1String("/gtalk-p2p"));
158  }
159 
161  {
163  QLatin1String("/gtalk-p2p"));
164  }
165 
167  {
169  QLatin1String("/gtalk-p2p"));
170  }
171 
173  {
175  QLatin1String("/ice-udp"));
176  }
177 
179  {
181  QLatin1String("/ice-udp"));
182  }
183 
185  {
187  QLatin1String("/ice-udp"));
188  }
189 
191  {
193  QLatin1String("/wlm-8.5"));
194  }
195 
197  {
199  QLatin1String("/wlm-8.5"));
200  }
201 
203  {
205  QLatin1String("/wlm-8.5"));
206  }
207 
209  {
211  QLatin1String("/wlm-2009"));
212  }
213 
215  {
217  QLatin1String("/wlm-2009"));
218  }
219 
221  {
223  QLatin1String("/wlm-2009"));
224  }
225 
226  bool hasAudioCodecToken(const QString &mimeSubType) const
227  {
229  QLatin1String("/audio/") + mimeSubType.toLower());
230  }
231 
232  void setAudioCodecToken(const QString &mimeSubType)
233  {
235  QLatin1String("/audio/") + mimeSubType.toLower());
236  }
237 
238  void unsetAudioCodecToken(const QString &mimeSubType)
239  {
241  QLatin1String("/audio/") + mimeSubType.toLower());
242  }
243 
244  bool hasVideoCodecToken(const QString &mimeSubType) const
245  {
247  QLatin1String("/video/") + mimeSubType.toLower());
248  }
249 
250  void setVideoCodecToken(const QString &mimeSubType)
251  {
253  QLatin1String("/video/") + mimeSubType.toLower());
254  }
255 
256  void unsetVideoCodecToken(const QString &mimeSubType)
257  {
259  QLatin1String("/video/") + mimeSubType.toLower());
260  }
261 
262  bool hasToken(const QString &token) const;
263  void setToken(const QString &token);
264  void unsetToken(const QString &token);
265 
266  QStringList allTokens() const;
267 
268  private:
269  struct Private;
270  QSharedDataPointer<Private> mPriv;
271  };
272 
274  {
275  public:
276  HandlerInfo(const QVariantMap &info = QVariantMap());
277  HandlerInfo(const HandlerInfo &other);
278  ~HandlerInfo();
279 
280  HandlerInfo &operator=(const HandlerInfo &other);
281 
282  QVariantMap allInfo() const;
283 
284  private:
285  struct Private;
286  QSharedDataPointer<Private> mPriv;
287  };
288 
289  virtual ~AbstractClientHandler();
290 
291  ChannelClassSpecList handlerFilter() const;
292 
293  Capabilities handlerCapabilities() const;
294 
295  virtual bool bypassApproval() const = 0;
296 
297  virtual void handleChannels(const MethodInvocationContextPtr<> &context,
298  const AccountPtr &account,
299  const ConnectionPtr &connection,
300  const QList<ChannelPtr> &channels,
301  const QList<ChannelRequestPtr> &requestsSatisfied,
302  const QDateTime &userActionTime,
303  const HandlerInfo &handlerInfo) = 0;
304 
305  bool wantsRequestNotification() const;
306  virtual void addRequest(const ChannelRequestPtr &request);
307  virtual void removeRequest(const ChannelRequestPtr &request,
308  const QString &errorName, const QString &errorMessage);
309 
310 protected:
311  AbstractClientHandler(const ChannelClassSpecList &channelFilter,
312  const Capabilities &capabilities = Capabilities(),
313  bool wantsRequestNotification = false);
314 
315 private:
316  struct Private;
317  friend struct Private;
318  Private *mPriv;
319 };
320 
321 } // Tp
322 
323 Q_DECLARE_METATYPE(Tp::AbstractClientObserver::ObserverInfo);
324 Q_DECLARE_METATYPE(Tp::AbstractClientHandler::Capabilities);
325 Q_DECLARE_METATYPE(Tp::AbstractClientHandler::HandlerInfo);
326 
327 #endif
void unsetICEUDPNATTraversalToken()
Definition: abstract-client.h:184
#define TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING
Definition: build/TelepathyQt/_gen/constants.h:5081
void unsetAudioCodecToken(const QString &mimeSubType)
Definition: abstract-client.h:238
bool hasGTalkP2PNATTraversalToken() const
Definition: abstract-client.h:154
void setGTalkP2PNATTraversalToken()
Definition: abstract-client.h:160
void unsetWLM2009NATTraversalToken()
Definition: abstract-client.h:220
The ChannelClassSpecList class represents a list of ChannelClassSpec.
Definition: channel-class-spec.h:249
void setVideoCodecToken(const QString &mimeSubType)
Definition: abstract-client.h:250
The AbstractClientApprover class represents a Telepathy approver.
Definition: abstract-client.h:112
bool isRecovering() const
Definition: abstract-client.h:80
void setAudioCodecToken(const QString &mimeSubType)
Definition: abstract-client.h:232
void setICEUDPNATTraversalToken()
Definition: abstract-client.h:178
void setWLM2009NATTraversalToken()
Definition: abstract-client.h:214
The AbstractClientObserver::ObserverInfo class provides a wrapper around the additional info about th...
Definition: abstract-client.h:71
void setWLM85NATTraversalToken()
Definition: abstract-client.h:196
The AbstractClient class represents a Telepathy client.
Definition: abstract-client.h:46
The AbstractClientHandler::Capabilities class provides a wrapper around the capabilities of a handler...
Definition: abstract-client.h:145
void unsetGTalkP2PNATTraversalToken()
Definition: abstract-client.h:166
bool hasWLM85NATTraversalToken() const
Definition: abstract-client.h:190
void unsetVideoCodecToken(const QString &mimeSubType)
Definition: abstract-client.h:256
The AbstractClientObserver class represents a Telepathy observer.
Definition: abstract-client.h:66
bool hasWLM2009NATTraversalToken() const
Definition: abstract-client.h:208
bool hasICEUDPNATTraversalToken() const
Definition: abstract-client.h:172
bool hasAudioCodecToken(const QString &mimeSubType) const
Definition: abstract-client.h:226
The AbstractClientHandler::HandlerInfo class provides a wrapper around the additional info about the ...
Definition: abstract-client.h:273
bool hasVideoCodecToken(const QString &mimeSubType) const
Definition: abstract-client.h:244
The ClientRegistrar class is responsible for registering Telepathy clients (Observer, Approver, Handler).
Definition: client-registrar.h:43
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
void unsetWLM85NATTraversalToken()
Definition: abstract-client.h:202
The AbstractClientHandler class represents a Telepathy handler.
Definition: abstract-client.h:140


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00224.html0000644000175100017520000001536312530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceSplittableAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSplittableAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Split (const QDBusMessage &dbusMessage)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

Adaptor class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Splittable.DRAFT".

Member Function Documentation

void Tp::Service::ChannelInterfaceSplittableAdaptor::Split ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void split(const Tp::Service::ChannelInterfaceSplittableAdaptor::SplitContextPtr &context);

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

Request that this channel is removed from any ChannelInterfaceConferenceInterface of which it is a part.

This implies that the media streams within the conference are put on hold and the media streams within the member channel leaving the conference are unheld.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01195.html0000644000175100017520000000477712530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SimpleStatusSpec Member List

This is the complete list of members for Tp::SimpleStatusSpec, including all inherited members.

canHaveMessageTp::SimpleStatusSpec
maySetOnSelfTp::SimpleStatusSpec
typeTp::SimpleStatusSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x78.html0000644000175100017520000000314712530426260024130 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- x -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00817_source.html0000644000175100017520000004364112530426257022530 0ustar00kaffeinekaffeine00000000000000 service-types.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
service-types.h
1 
23 #ifndef _TelepathyQt_service_types_h_HEADER_GUARD_
24 #define _TelepathyQt_service_types_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Types>
31 
32 namespace Tp
33 {
34 
35 class AbstractProtocolInterface;
36 class AbstractCallContentInterface;
37 class AbstractConnectionInterface;
38 class AbstractChannelInterface;
39 class BaseCallContent;
40 class BaseCallMuteInterface;
41 class BaseCallContentDTMFInterface;
42 class BaseConnection;
43 class BaseConnectionRequestsInterface;
44 class BaseConnectionContactsInterface;
45 class BaseConnectionSimplePresenceInterface;
46 class BaseConnectionContactListInterface;
47 class BaseConnectionContactInfoInterface;
48 class BaseConnectionAddressingInterface;
49 class BaseConnectionAliasingInterface;
50 class BaseConnectionAvatarsInterface;
51 class BaseConnectionManager;
52 class BaseProtocol;
53 class BaseProtocolAddressingInterface;
54 class BaseProtocolAvatarsInterface;
55 class BaseProtocolPresenceInterface;
56 class BaseChannel;
57 class BaseChannelTextType;
58 class BaseChannelCallType;
59 class BaseChannelMessagesInterface;
60 class BaseChannelRoomListType;
61 class BaseChannelServerAuthenticationType;
62 class BaseChannelSASLAuthenticationInterface;
63 class BaseChannelCaptchaAuthenticationInterface;
64 class BaseChannelSecurableInterface;
65 class BaseChannelChatStateInterface;
66 class BaseChannelGroupInterface;
67 class BaseChannelRoomInterface;
68 class BaseChannelRoomConfigInterface;
69 class BaseChannelHoldInterface;
70 class BaseChannelMergeableConferenceInterface;
71 class BaseChannelSplittableInterface;
72 class BaseChannelSMSInterface;
73 class BaseChannelConferenceInterface;
74 class DBusService;
75 
76 #ifndef DOXYGEN_SHOULD_SKIP_THIS
77 
78 typedef SharedPtr<AbstractProtocolInterface> AbstractProtocolInterfacePtr;
79 typedef SharedPtr<AbstractCallContentInterface> AbstractCallContentInterfacePtr;
80 typedef SharedPtr<AbstractConnectionInterface> AbstractConnectionInterfacePtr;
81 typedef SharedPtr<AbstractChannelInterface> AbstractChannelInterfacePtr;
82 typedef SharedPtr<BaseCallContent> BaseCallContentPtr;
83 typedef SharedPtr<BaseCallContentDTMFInterface> BaseCallContentDTMFInterfacePtr;
84 typedef SharedPtr<BaseCallMuteInterface> BaseCallMuteInterfacePtr;
85 typedef SharedPtr<BaseConnection> BaseConnectionPtr;
86 typedef SharedPtr<BaseConnectionRequestsInterface> BaseConnectionRequestsInterfacePtr;
87 typedef SharedPtr<BaseConnectionContactsInterface> BaseConnectionContactsInterfacePtr;
88 typedef SharedPtr<BaseConnectionSimplePresenceInterface> BaseConnectionSimplePresenceInterfacePtr;
89 typedef SharedPtr<BaseConnectionContactListInterface> BaseConnectionContactListInterfacePtr;
90 typedef SharedPtr<BaseConnectionContactInfoInterface> BaseConnectionContactInfoInterfacePtr;
91 typedef SharedPtr<BaseConnectionAddressingInterface> BaseConnectionAddressingInterfacePtr;
92 typedef SharedPtr<BaseConnectionAliasingInterface> BaseConnectionAliasingInterfacePtr;
93 typedef SharedPtr<BaseConnectionAvatarsInterface> BaseConnectionAvatarsInterfacePtr;
94 typedef SharedPtr<BaseConnectionManager> BaseConnectionManagerPtr;
95 typedef SharedPtr<BaseProtocol> BaseProtocolPtr;
96 typedef SharedPtr<BaseProtocolAddressingInterface> BaseProtocolAddressingInterfacePtr;
97 typedef SharedPtr<BaseProtocolAvatarsInterface> BaseProtocolAvatarsInterfacePtr;
98 typedef SharedPtr<BaseProtocolPresenceInterface> BaseProtocolPresenceInterfacePtr;
99 typedef SharedPtr<BaseChannel> BaseChannelPtr;
100 typedef SharedPtr<BaseChannelCallType> BaseChannelCallTypePtr;
101 typedef SharedPtr<BaseChannelTextType> BaseChannelTextTypePtr;
102 typedef SharedPtr<BaseChannelMessagesInterface> BaseChannelMessagesInterfacePtr;
103 typedef SharedPtr<BaseChannelRoomListType> BaseChannelRoomListTypePtr;
104 typedef SharedPtr<BaseChannelServerAuthenticationType> BaseChannelServerAuthenticationTypePtr;
105 typedef SharedPtr<BaseChannelSASLAuthenticationInterface> BaseChannelSASLAuthenticationInterfacePtr;
106 typedef SharedPtr<BaseChannelCaptchaAuthenticationInterface> BaseChannelCaptchaAuthenticationInterfacePtr;
107 typedef SharedPtr<BaseChannelSecurableInterface> BaseChannelSecurableInterfacePtr;
108 typedef SharedPtr<BaseChannelChatStateInterface> BaseChannelChatStateInterfacePtr;
109 typedef SharedPtr<BaseChannelGroupInterface> BaseChannelGroupInterfacePtr;
110 typedef SharedPtr<BaseChannelRoomInterface> BaseChannelRoomInterfacePtr;
111 typedef SharedPtr<BaseChannelRoomConfigInterface> BaseChannelRoomConfigInterfacePtr;
112 typedef SharedPtr<BaseChannelHoldInterface> BaseChannelHoldInterfacePtr;
113 typedef SharedPtr<BaseChannelMergeableConferenceInterface> BaseChannelMergeableConferenceInterfacePtr;
114 typedef SharedPtr<BaseChannelSplittableInterface> BaseChannelSplittableInterfacePtr;
115 typedef SharedPtr<BaseChannelSMSInterface> BaseChannelSMSInterfacePtr;
116 typedef SharedPtr<BaseChannelConferenceInterface> BaseChannelConferenceInterfacePtr;
117 typedef SharedPtr<DBusService> DBusServicePtr;
118 
119 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
120 
121 } // Tp
122 
123 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00539.html0000644000175100017520000021504112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::TubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The TubeChannel class is a base class for all tube types. More...

#include <TelepathyQt/TubeChannel>

Inherits Tp::Channel.

Inherited by Tp::DBusTubeChannel, and Tp::StreamTubeChannel.

Signals

void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The TubeChannel class is a base class for all tube types.

A tube is a mechanism for arbitrary data transfer between two or more IM users, used to allow applications on the users' systems to communicate without having to establish network connections themselves.

Note that TubeChannel should never be instantiated directly, instead one of its subclasses (e.g. IncomingStreamTubeChannel or OutgoingStreamTubeChannel) should be used.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::TubeChannel::~TubeChannel ( )
virtual

Class destructor.

Tp::TubeChannel::TubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = TubeChannel::FeatureCore 
)
protected

Construct a new TubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on TubeChannel::FeatureCore.

Member Function Documentation

TubeChannelPtr Tp::TubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new TubeChannel channel.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A TubeChannelPtr object pointing to the newly created TubeChannel object.
TubeChannelState Tp::TubeChannel::state ( ) const

Return the state of this tube.

Change notification is via the stateChanged() signal.

This method requires TubeChannel::FeatureCore to be ready.

Returns
The state as TubeChannelState.
See Also
stateChanged()
QVariantMap Tp::TubeChannel::parameters ( ) const

Return the parameters associated with this tube, if any.

The parameters are populated when an outgoing tube is offered, but they are most useful in the receiving end, where the parameters passed to the offer can be extracted for the tube's entire lifetime to bootstrap legacy protocols. All parameters are passed unchanged.

This method requires TubeChannel::FeatureCore to be ready.

Returns
The parameters as QVariantMap.
void Tp::TubeChannel::stateChanged ( Tp::TubeChannelState  state)
signal

Emitted when the value of state() changes.

See Also
state The new state of this tube.
void Tp::TubeChannel::setParameters ( const QVariantMap &  parameters)
protected

Member Data Documentation

const Feature Tp::TubeChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the TubeChannel object usable.

Note that this feature must be enabled in order to use most TubeChannel methods. See specific methods documentation for more details.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00293.html0000644000175100017520000004106012530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceContactsAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactsAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ContactAttributesMap GetContactAttributes (const Tp::UIntList &handles, const QStringList &interfaces, bool hold, const QDBusMessage &dbusMessage)
 
uint GetContactByID (const QString &identifier, const QStringList &interfaces, const QDBusMessage &dbusMessage, QVariantMap &attributes)
 

Public Member Functions

QStringList ContactAttributeInterfaces () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QStringList Tp::Service::ConnectionInterfaceContactsAdaptor::ContactAttributeInterfaces ( ) const

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

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

A list of D-Bus interfaces for which GetContactAttributes is expected to work. This cannot change during the lifetime of the Connection.

Returns
The value of exported property ContactAttributeInterfaces.
Tp::ContactAttributesMap Tp::Service::ConnectionInterfaceContactsAdaptor::GetContactAttributes ( const Tp::UIntList handles,
const QStringList &  interfaces,
bool  hold,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactAttributes(const Tp::UIntList& handles, const QStringList& interfaces, bool hold, const Tp::Service::ConnectionInterfaceContactsAdaptor::GetContactAttributesContextPtr &context);

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

Return any number of contact attributes for the given handles.

Parameters
handles
An array of handles representing contacts.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Connection managers SHOULD ignore interfaces requested which they do not support (i.e. those not mentioned in the \\\ \\link requestPropertyContactAttributeInterfaces() ContactAttributeInterfaces \\endlink \\htmlonly property.)

This simplifies client-side code. Clients which care may distinguish between unsupported interfaces (e.g. this Connection does not support Avatars), and interfaces on which no information is known for these contacts (e.g. we don't know the avatar tokens of any of the contacts, so we omitted them all) by inspecting \\endhtmlonly \\link requestPropertyContactAttributeInterfaces() ContactAttributeInterfaces \\endlink \\htmlonly .

Attributes from the interface \\endhtmlonly ConnectionInterface \\htmlonly are always returned, and need not be requested explicitly.

As well as returning cached information immediately, the connection MAY start asynchronous requests to obtain better values for the contact attributes. If better values are later obtained by this process, they will be indicated with the usual signals (such as \\endhtmlonly ConnectionInterfaceAliasingInterface::AliasesChanged() \\htmlonly ).

For instance, an XMPP connection manager could download vCards in response to a request for \\endhtmlonly ConnectionInterfaceAliasingInterface \\htmlonly attributes.
Parameters
hold

If true, all handles that appear as keys in the result have been held on behalf of the calling process, as if by a call to \\\ ConnectionInterface::HoldHandles() \\htmlonly . (If \\endhtmlonly \\link ConnectionInterface::requestPropertyHasImmortalHandles() ConnectionInterface::HasImmortalHandles \\endlink \\htmlonly is true, which SHOULD be the case in all new connection managers, this has no effect.)

For further round-trip avoidance.
Returns

A dictionary mapping the contact handles to contact attributes. If any of the requested handles are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

uint Tp::Service::ConnectionInterfaceContactsAdaptor::GetContactByID ( const QString &  identifier,
const QStringList &  interfaces,
const QDBusMessage &  dbusMessage,
QVariantMap &  attributes 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getContactByID(const QString& identifier, const QStringList& interfaces, const Tp::Service::ConnectionInterfaceContactsAdaptor::GetContactByIDContextPtr &context);

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

Return any number of contact attributes for the given identifier. This is for a single identifier to make it simpler to use for the most common use case. For multiple contacts case, GetContactAttributes should be used.

Parameters
identifier
An identifier representing a contact.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

See \\\ GetContactAttributes() \\htmlonly for details.

attributesOutput parameter

All supported attributes of the contact on the given interfaces that can be returned without network round-trips. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

The contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

Returns

The contact's handle, as returned by \\\ ConnectionInterface::RequestHandles() \\htmlonly


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01254.html0000644000175100017520000002140512530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceCallStateInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceCallStateInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
CallStateChanged(uint contact, uint state)Tp::Client::ChannelInterfaceCallStateInterfacesignal
ChannelInterfaceCallStateInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceCallStateInterface
ChannelInterfaceCallStateInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceCallStateInterface
ChannelInterfaceCallStateInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceCallStateInterface
ChannelInterfaceCallStateInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceCallStateInterfaceexplicit
ChannelInterfaceCallStateInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceCallStateInterface
GetCallStates(int timeout=-1)Tp::Client::ChannelInterfaceCallStateInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceCallStateInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceCallStateInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceCallStateInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00038.html0000644000175100017520000000707712530426257021146 0ustar00kaffeinekaffeine00000000000000 roster/main.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/main.cpp
#include <TelepathyQt/Debug>
#include <TelepathyQt/Types>
#include <QApplication>
#include <QDebug>
#include <QtGui>
#include "roster-window.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
if (argc < 2) {
qDebug() << "usage:" << argv[0] << "<account name, as in mc-tool list>";
return 1;
}
QString accountPath = QLatin1String(argv[1]);
RosterWindow w(accountPath);
w.show();
return app.exec();
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00352.html0000644000175100017520000001277112530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::FieldSpec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FieldSpec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString name
 
QStringList parameters
 
uint flags
 
uint max
 

Detailed Description

Structure type generated from the specification.

A struct describing a vCard field, with parameters, that may be passed to SetContactInfo on this Connection.

Member Data Documentation

QString Tp::FieldSpec::name

A vCard field name, such as 'tel'.

QStringList Tp::FieldSpec::parameters

The set of vCard type parameters which may be set on this field. If this list is empty and the Contact_Info_Field_Flag_Parameters_Exact flag is not set, any vCard type parameters may be used.

uint Tp::FieldSpec::flags

Flags describing the behaviour of this field.

uint Tp::FieldSpec::max

Maximum number of instances of this field which may be set. MAXUINT32 is used to indicate that there is no limit.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01313.html0000644000175100017520000002226212530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfacePowerSavingInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfacePowerSavingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfacePowerSavingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfacePowerSavingInterface
ConnectionInterfacePowerSavingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfacePowerSavingInterface
ConnectionInterfacePowerSavingInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfacePowerSavingInterface
ConnectionInterfacePowerSavingInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfacePowerSavingInterfaceexplicit
ConnectionInterfacePowerSavingInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfacePowerSavingInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfacePowerSavingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
PowerSavingChanged(bool active)Tp::Client::ConnectionInterfacePowerSavingInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfacePowerSavingInterfaceinline
requestPropertyPowerSavingActive() const Tp::Client::ConnectionInterfacePowerSavingInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetPowerSaving(bool activate, int timeout=-1)Tp::Client::ConnectionInterfacePowerSavingInterfaceinlineslot
staticInterfaceName()Tp::Client::ConnectionInterfacePowerSavingInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01068.html0000644000175100017520000001340312530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingConnection Member List

This is the complete list of members for Tp::PendingConnection, including all inherited members.

connection() const Tp::PendingConnection
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
manager() const Tp::PendingConnection
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingConnection()Tp::PendingConnection
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00912.html0000644000175100017520000002272212530426257021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientHandler::Capabilities Member List

This is the complete list of members for Tp::AbstractClientHandler::Capabilities, including all inherited members.

allTokens() const Tp::AbstractClientHandler::Capabilities
Capabilities(const QStringList &tokens=QStringList())Tp::AbstractClientHandler::Capabilities
Capabilities(const Capabilities &other)Tp::AbstractClientHandler::Capabilities
hasAudioCodecToken(const QString &mimeSubType) const Tp::AbstractClientHandler::Capabilitiesinline
hasGTalkP2PNATTraversalToken() const Tp::AbstractClientHandler::Capabilitiesinline
hasICEUDPNATTraversalToken() const Tp::AbstractClientHandler::Capabilitiesinline
hasToken(const QString &token) const Tp::AbstractClientHandler::Capabilities
hasVideoCodecToken(const QString &mimeSubType) const Tp::AbstractClientHandler::Capabilitiesinline
hasWLM2009NATTraversalToken() const Tp::AbstractClientHandler::Capabilitiesinline
hasWLM85NATTraversalToken() const Tp::AbstractClientHandler::Capabilitiesinline
operator=(const Capabilities &other)Tp::AbstractClientHandler::Capabilities
setAudioCodecToken(const QString &mimeSubType)Tp::AbstractClientHandler::Capabilitiesinline
setGTalkP2PNATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
setICEUDPNATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
setToken(const QString &token)Tp::AbstractClientHandler::Capabilities
setVideoCodecToken(const QString &mimeSubType)Tp::AbstractClientHandler::Capabilitiesinline
setWLM2009NATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
setWLM85NATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
unsetAudioCodecToken(const QString &mimeSubType)Tp::AbstractClientHandler::Capabilitiesinline
unsetGTalkP2PNATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
unsetICEUDPNATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
unsetToken(const QString &token)Tp::AbstractClientHandler::Capabilities
unsetVideoCodecToken(const QString &mimeSubType)Tp::AbstractClientHandler::Capabilitiesinline
unsetWLM2009NATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
unsetWLM85NATTraversalToken()Tp::AbstractClientHandler::Capabilitiesinline
~Capabilities()Tp::AbstractClientHandler::Capabilities


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00411.html0000644000175100017520000001366312530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::MultipleStatusMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::MultipleStatusMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QVariantMap >.

Public Member Functions

 MultipleStatusMap ()
 
 MultipleStatusMap (const QMap< QString, QVariantMap > &a)
 
MultipleStatusMapoperator= (const QMap< QString, QVariantMap > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QVariantMap>, but needed to have a discrete type in the Qt type system.

Mapping used in Last_Activity_And_Statuses and passed to SetStatus, representing a collection of statuses. Use of this mapping with more than one member is deprecated.

Constructor & Destructor Documentation

Tp::MultipleStatusMap::MultipleStatusMap ( )
inline
Tp::MultipleStatusMap::MultipleStatusMap ( const QMap< QString, QVariantMap > &  a)
inline

Member Function Documentation

MultipleStatusMap& Tp::MultipleStatusMap::operator= ( const QMap< QString, QVariantMap > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01382.html0000644000175100017520000001005012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceContactsAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceContactsAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ContactAttributeInterfaces() const Tp::Service::ConnectionInterfaceContactsAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, bool hold, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceContactsAdaptorslot
GetContactByID(const QString &identifier, const QStringList &interfaces, const QDBusMessage &dbusMessage, QVariantMap &attributes)Tp::Service::ConnectionInterfaceContactsAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00166.html0000644000175100017520000000743312530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::CapabilityPair Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CapabilityPair Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString channelType
 
uint typeSpecificFlags
 

Detailed Description

Structure type generated from the specification.

A pair (channel type, type-specific flags) as passed to AdvertiseCapabilities on the Capabilities interface.

Member Data Documentation

QString Tp::CapabilityPair::channelType
uint Tp::CapabilityPair::typeSpecificFlags


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01127.html0000644000175100017520000000437612530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AccessControl Member List

This is the complete list of members for Tp::AccessControl, including all inherited members.

detailTp::AccessControl
typeTp::AccessControl


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00981.html0000644000175100017520000001353712530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00806_source.html0000644000175100017520000005072712530426257022531 0ustar00kaffeinekaffeine00000000000000 readiness-helper.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
readiness-helper.h
1 
23 #ifndef _TelepathyQt_readiness_helper_h_HEADER_GUARD_
24 #define _TelepathyQt_readiness_helper_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Feature>
31 
32 #include <QMap>
33 #include <QSet>
34 #include <QSharedDataPointer>
35 #include <QStringList>
36 #include <QObject>
37 
38 class QDBusError;
39 
40 namespace Tp
41 {
42 
43 class DBusProxy;
44 class PendingOperation;
45 class PendingReady;
46 class RefCounted;
47 
48 class TP_QT_EXPORT ReadinessHelper : public QObject
49 {
50  Q_OBJECT
51  Q_DISABLE_COPY(ReadinessHelper)
52 
53 public:
54  typedef void (*IntrospectFunc)(void *data);
55 
56  struct Introspectable {
57  public:
59  Introspectable(const QSet<uint> &makesSenseForStatuses,
60  const Features &dependsOnFeatures,
61  const QStringList &dependsOnInterfaces,
62  IntrospectFunc introspectFunc,
63  void *introspectFuncData,
64  bool critical = false);
65  Introspectable(const Introspectable &other);
66  ~Introspectable();
67 
68  Introspectable &operator=(const Introspectable &other);
69 
70  private:
71  friend class ReadinessHelper;
72 
73  struct Private;
74  friend struct Private;
75  QSharedDataPointer<Private> mPriv;
76  };
77  typedef QMap<Feature, Introspectable> Introspectables;
78 
80  uint currentStatus = 0,
81  const Introspectables &introspectables = Introspectables(),
82  QObject *parent = 0);
84  uint currentStatus = 0,
85  const Introspectables &introspectables = Introspectables(),
86  QObject *parent = 0);
87  ~ReadinessHelper();
88 
89  void addIntrospectables(const Introspectables &introspectables);
90 
91  uint currentStatus() const;
92  void setCurrentStatus(uint currentStatus);
93  void forceCurrentStatus(uint currentStatus);
94 
95  QStringList interfaces() const;
96  void setInterfaces(const QStringList &interfaces);
97 
98  Features requestedFeatures() const;
99  Features actualFeatures() const;
100  Features missingFeatures() const;
101 
102  bool isReady(const Feature &feature,
103  QString *errorName = 0, QString *errorMessage = 0) const;
104  bool isReady(const Features &features,
105  QString *errorName = 0, QString *errorMessage = 0) const;
106  PendingReady *becomeReady(const Features &requestedFeatures);
107 
108  void setIntrospectCompleted(const Feature &feature, bool success,
109  const QString &errorName = QString(),
110  const QString &errorMessage = QString());
111  void setIntrospectCompleted(const Feature &feature, bool success,
112  const QDBusError &error);
113 
114 Q_SIGNALS:
115  void statusReady(uint status);
116 
117 private Q_SLOTS:
118  TP_QT_NO_EXPORT void iterateIntrospection();
119 
120  TP_QT_NO_EXPORT void onProxyInvalidated(Tp::DBusProxy *proxy,
121  const QString &errorName, const QString &errorMessage);
122 
123 private:
124  struct Private;
125  friend struct Private;
126  Private *mPriv;
127 };
128 
129 } // Tp
130 
131 #endif
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
QMap< Feature, Introspectable > Introspectables
Definition: readiness-helper.h:77
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The ReadinessHelper::Introspectable class represents a introspectable used by ReadinessHelper.
Definition: readiness-helper.h:56
The ReadinessHelper class is a helper class used by the introspection process.
Definition: readiness-helper.h:48
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00480.html0000644000175100017520000002126512530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor3 (FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 >
typedef R(* Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >::FunctionType)(Arg1, Arg2, Arg3)
template<class R , class Arg1 , class Arg2 , class Arg3 >
typedef R Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 >
Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >::PtrFunctor3 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 >
ResultType Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3 
) const
inline

Member Data Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 >
FunctionType Tp::PtrFunctor3< R, Arg1, Arg2, Arg3 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00225.html0000644000175100017520000003514012530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceSubjectAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceSubjectAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void SetSubject (const QString &subject, const QDBusMessage &dbusMessage)
 

Public Member Functions

QString Subject () const
 
QString Actor () const
 
uint ActorHandle () const
 
qlonglong Timestamp () const
 
bool CanSet () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelInterfaceSubjectAdaptor::Subject ( ) const

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

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

The human-readable subject on the channel such as the topic in an IRC channel, or the room name in XMPP MUCs.

This property replaces the subject Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.

This property may change during the lifetime of the channel and MUST not be included in a channel request.

Returns
The value of exported property Subject.
QString Tp::Service::ChannelInterfaceSubjectAdaptor::Actor ( ) const

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

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

The normalized contact ID representing who last modified the subject, or the empty string if it is not known.

This property replaces the subject-contact Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.
Returns
The value of exported property Actor.
uint Tp::Service::ChannelInterfaceSubjectAdaptor::ActorHandle ( ) const

Return the value of the exported D-Bus object property ActorHandle of type uint.

Adaptees should export this property as a Qt property named 'actorHandle' with type uint.

The handle corresponding to Actor , or 0 if the Actor is unknown.

Returns
The value of exported property ActorHandle.
qlonglong Tp::Service::ChannelInterfaceSubjectAdaptor::Timestamp ( ) const

Return the value of the exported D-Bus object property Timestamp of type qlonglong.

Adaptees should export this property as a Qt property named 'timestamp' with type qlonglong.

A unix timestamp indicating when the subject was last modified, or INT_MAX64 if unknown.

This property replaces the subject-timestamp Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.
Returns
The value of exported property Timestamp.
bool Tp::Service::ChannelInterfaceSubjectAdaptor::CanSet ( ) const

Return the value of the exported D-Bus object property CanSet of type bool.

Adaptees should export this property as a Qt property named 'canSet' with type bool.

TRUE if the Subject property can be set by the user by calling SetSubject() , otherwise FALSE.

If implementations are unsure of what this value should be it SHOULD still be set to what it believes the value is. As a result, clients should be aware that SetSubject() can still fail even with this property set to TRUE.

In XMPP it is impossible to know whether an occupant can set the subject as XMPP server implementations are wildly inconsistent.
Returns
The value of exported property CanSet.
void Tp::Service::ChannelInterfaceSubjectAdaptor::SetSubject ( const QString &  subject,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setSubject(const QString& subject, const Tp::Service::ChannelInterfaceSubjectAdaptor::SetSubjectContextPtr &context);

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

Set the room's subject. Clients SHOULD look at the subject flags before calling this method as the user might not have permission to set the subject.

A successful return of this method indicates a successful change in subject, but clients should still listen for changes to the Subject property for further changes by other users or the server.

Parameters
subject
The new subject.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01196.html0000644000175100017520000000544612530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SingleContactAttributesMap Member List

This is the complete list of members for Tp::SingleContactAttributesMap, including all inherited members.

operator=(const QMap< QString, QDBusVariant > &a)Tp::SingleContactAttributesMapinline
SingleContactAttributesMap()Tp::SingleContactAttributesMapinline
SingleContactAttributesMap(const QMap< QString, QDBusVariant > &a)Tp::SingleContactAttributesMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_func_0x79.html0000644000175100017520000000302612530426260024125 0ustar00kaffeinekaffeine00000000000000 Class Members - Functions
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- y -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00802_source.html0000644000175100017520000004451112530426257022517 0ustar00kaffeinekaffeine00000000000000 protocol-info.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
protocol-info.h
1 
23 #ifndef _TelepathyQt_protocol_info_h_HEADER_GUARD_
24 #define _TelepathyQt_protocol_info_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/AvatarSpec>
31 #include <TelepathyQt/Global>
32 #include <TelepathyQt/PresenceSpec>
33 #include <TelepathyQt/ProtocolParameter>
34 #include <TelepathyQt/Types>
35 
36 #include <QSharedDataPointer>
37 #include <QString>
38 #include <QList>
39 
40 namespace Tp
41 {
42 
43 class ConnectionCapabilities;
44 class PendingString;
45 
46 class TP_QT_EXPORT ProtocolInfo
47 {
48 public:
49  ProtocolInfo();
50  ProtocolInfo(const ProtocolInfo &other);
51  ~ProtocolInfo();
52 
53  bool isValid() const { return mPriv.constData() != 0; }
54 
55  ProtocolInfo &operator=(const ProtocolInfo &other);
56 
57  QString cmName() const;
58 
59  QString name() const;
60 
61  ProtocolParameterList parameters() const;
62  bool hasParameter(const QString &name) const;
63 
64  bool canRegister() const;
65 
66  ConnectionCapabilities capabilities() const;
67 
68  QString vcardField() const;
69 
70  QString englishName() const;
71 
72  QString iconName() const;
73 
74  PresenceSpecList allowedPresenceStatuses() const;
75 
76  AvatarSpec avatarRequirements() const;
77 
78  QStringList addressableVCardFields() const;
79  QStringList addressableUriSchemes() const;
80 
81  PendingString *normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress);
82  PendingString *normalizeContactUri(const QString &uri);
83 
84 private:
85  friend class ConnectionManager;
86 
87  TP_QT_NO_EXPORT ProtocolInfo(const ConnectionManagerPtr &cm, const QString &name);
88 
89  TP_QT_NO_EXPORT void addParameter(const ParamSpec &spec);
90  TP_QT_NO_EXPORT void setVCardField(const QString &vcardField);
91  TP_QT_NO_EXPORT void setEnglishName(const QString &englishName);
92  TP_QT_NO_EXPORT void setIconName(const QString &iconName);
93  TP_QT_NO_EXPORT void setRequestableChannelClasses(const RequestableChannelClassList &caps);
94  TP_QT_NO_EXPORT void setAllowedPresenceStatuses(const PresenceSpecList &statuses);
95  TP_QT_NO_EXPORT void setAvatarRequirements(const AvatarSpec &avatarRequirements);
96  TP_QT_NO_EXPORT void setAddressableVCardFields(const QStringList &vcardFields);
97  TP_QT_NO_EXPORT void setAddressableUriSchemes(const QStringList &uriSchemes);
98 
99  struct Private;
100  friend struct Private;
101  QSharedDataPointer<Private> mPriv;
102 };
103 
104 typedef QList<ProtocolInfo> ProtocolInfoList;
105 
106 } // Tp
107 
108 Q_DECLARE_METATYPE(Tp::ProtocolInfo);
109 Q_DECLARE_METATYPE(Tp::ProtocolInfoList);
110 
111 #endif
The AvatarSpec class represents a Telepathy avatar information supported by a protocol.
Definition: avatar.h:51
QList< ProtocolParameter > ProtocolParameterList
Definition: protocol-parameter.h:85
bool isValid() const
Definition: protocol-info.h:53
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
The ConnectionManager class represents a Telepathy connection manager.
Definition: connection-manager.h:52
QList< ProtocolInfo > ProtocolInfoList
Definition: protocol-info.h:104
Definition: build/TelepathyQt/_gen/types.h:2186
The PresenceSpecList class represents a list of PresenceSpec.
Definition: presence.h:125
The ConnectionCapabilities class represents the capabilities of a Connection.
Definition: connection-capabilities.h:38
The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method...
Definition: pending-string.h:37


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/dynsections.js0000644000175100017520000000564712530426257022346 0ustar00kaffeinekaffeine00000000000000function toggleVisibility(linkObj) { var base = $(linkObj).attr('id'); var summary = $('#'+base+'-summary'); var content = $('#'+base+'-content'); var trigger = $('#'+base+'-trigger'); var src=$(trigger).attr('src'); if (content.is(':visible')===true) { content.hide(); summary.show(); $(linkObj).addClass('closed').removeClass('opened'); $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); } else { content.show(); summary.hide(); $(linkObj).removeClass('closed').addClass('opened'); $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); } return false; } function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); } function toggleLevel(level) { $('table.directory tr').each(function(){ var l = this.id.split('_').length-1; var i = $('#img'+this.id.substring(3)); var a = $('#arr'+this.id.substring(3)); if (l Tp::Client::ConnectionInterfaceContactsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ContactAttributesMap
GetContactAttributes (const Tp::UIntList &handles, const QStringList &interfaces, bool hold, int timeout=-1)
 
QDBusPendingReply< uint,
QVariantMap > 
GetContactByID (const QString &identifier, const QStringList &interfaces, int timeout=-1)
 

Public Member Functions

 ConnectionInterfaceContactsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceContactsInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceContactsInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceContactsInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyContactAttributeInterfaces () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Contacts".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceContactsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceContactsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceContactsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceContactsInterface::ConnectionInterfaceContactsInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceContactsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceContactsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Contacts", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceContactsInterface::requestPropertyContactAttributeInterfaces ( ) const
inline

Asynchronous getter for the remote object property ContactAttributeInterfaces of type QStringList.

A list of D-Bus interfaces for which GetContactAttributes is expected to work. This cannot change during the lifetime of the Connection.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceContactsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ContactAttributesMap> Tp::Client::ConnectionInterfaceContactsInterface::GetContactAttributes ( const Tp::UIntList handles,
const QStringList &  interfaces,
bool  hold,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactAttributes on the remote object.

Return any number of contact attributes for the given handles.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handles
An array of handles representing contacts.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Connection managers SHOULD ignore interfaces requested which they do not support (i.e. those not mentioned in the ContactAttributeInterfaces property.)

This simplifies client-side code. Clients which care may distinguish between unsupported interfaces (e.g. this Connection does not support Avatars), and interfaces on which no information is known for these contacts (e.g. we don't know the avatar tokens of any of the contacts, so we omitted them all) by inspecting ContactAttributeInterfaces .

Attributes from the interface ConnectionInterface are always returned, and need not be requested explicitly.

As well as returning cached information immediately, the connection MAY start asynchronous requests to obtain better values for the contact attributes. If better values are later obtained by this process, they will be indicated with the usual signals (such as ConnectionInterfaceAliasingInterface::AliasesChanged() ).

For instance, an XMPP connection manager could download vCards in response to a request for ConnectionInterfaceAliasingInterface attributes.
hold

If true, all handles that appear as keys in the result have been held on behalf of the calling process, as if by a call to ConnectionInterface::HoldHandles() . (If ConnectionInterface::HasImmortalHandles is true, which SHOULD be the case in all new connection managers, this has no effect.)

For further round-trip avoidance.

timeoutThe timeout in milliseconds.
Returns

A dictionary mapping the contact handles to contact attributes. If any of the requested handles are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

QDBusPendingReply<uint, QVariantMap> Tp::Client::ConnectionInterfaceContactsInterface::GetContactByID ( const QString &  identifier,
const QStringList &  interfaces,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetContactByID on the remote object.

Return any number of contact attributes for the given identifier. This is for a single identifier to make it simpler to use for the most common use case. For multiple contacts case, GetContactAttributes should be used.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
identifier
An identifier representing a contact.
interfaces

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

See GetContactAttributes() for details.

timeoutThe timeout in milliseconds.
Returns

The contact's handle, as returned by ConnectionInterface::RequestHandles()

Returns

All supported attributes of the contact on the given interfaces that can be returned without network round-trips. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

The contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

void Tp::Client::ConnectionInterfaceContactsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01255.html0000644000175100017520000002607512530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AnswerCaptchas(const Tp::CaptchaAnswers &answers, int timeout=-1)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinlineslot
CancelCaptcha(uint reason, const QString &debugMessage, int timeout=-1)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinlineslot
ChannelInterfaceCaptchaAuthenticationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface
ChannelInterfaceCaptchaAuthenticationInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface
ChannelInterfaceCaptchaAuthenticationInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface
ChannelInterfaceCaptchaAuthenticationInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceexplicit
ChannelInterfaceCaptchaAuthenticationInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface
GetCaptchaData(uint ID, const QString &mimeType, int timeout=-1)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinlineslot
GetCaptchas(int timeout=-1)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinline
requestPropertyCanRetryCaptcha() const Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinline
requestPropertyCaptchaError() const Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinline
requestPropertyCaptchaErrorDetails() const Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinline
requestPropertyCaptchaStatus() const Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceCaptchaAuthenticationInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00353.html0000644000175100017520000030544412530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::FileTransferChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The FileTransferChannel class represents a Telepathy channel of type FileTransfer. More...

#include <TelepathyQt/FileTransferChannel>

Inherits Tp::Channel.

Inherited by Tp::IncomingFileTransferChannel, and Tp::OutgoingFileTransferChannel.

Signals

void stateChanged (Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason)
 
void initialOffsetDefined (qulonglong initialOffset)
 
void transferredBytesChanged (qulonglong count)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~FileTransferChannel ()
 
FileTransferState state () const
 
FileTransferStateChangeReason stateReason () const
 
QString fileName () const
 
QString contentType () const
 
qulonglong size () const
 
QString uri () const
 
FileHashType contentHashType () const
 
QString contentHash () const
 
QString description () const
 
QDateTime lastModificationTime () const
 
qulonglong initialOffset () const
 
qulonglong transferredBytes () const
 
PendingOperationcancel ()
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static FileTransferChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Slots

void onUriDefined (const QString &uri)
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Protected Member Functions

 FileTransferChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore)
 
SupportedSocketMap availableSocketTypes () const
 
virtual void connectToHost ()
 
bool isConnected () const
 
void setConnected ()
 
bool isFinished () const
 
virtual void setFinished ()
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 

Detailed Description

The FileTransferChannel class represents a Telepathy channel of type FileTransfer.

For more specialized file transfer classes, please refer to OutgoingFileTransferChannel and IncomingFileTransferChannel.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::FileTransferChannel::~FileTransferChannel ( )
virtual

Class destructor.

Tp::FileTransferChannel::FileTransferChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = FileTransferChannel::FeatureCore 
)
protected

Construct a new FileTransferChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on FileTransferChannel::FeatureCore.

Member Function Documentation

FileTransferChannelPtr Tp::FileTransferChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new FileTransferChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A FileTransferChannelPtr object pointing to the newly created FileTransferChannel object.
FileTransferState Tp::FileTransferChannel::state ( ) const

Return the state of the file transfer as described by FileTransferState.

Change notification is via the stateChanged() signal.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The state as FileTransferState.
See Also
stateReason()
FileTransferStateChangeReason Tp::FileTransferChannel::stateReason ( ) const

Return the reason for the state change as described by the FileTransferStateChangeReason.

Change notification is via the stateChanged() signal.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The state reason as FileTransferStateChangeReason.
See Also
state()
QString Tp::FileTransferChannel::fileName ( ) const

Return the name of the file on the sender's side. This is given as a suggested filename for the receiver.

This property should be the basename of the file being sent. For example, if the sender sends the file /home/user/monkey.pdf then this property should be set to monkey.pdf.

This property cannot change once the channel has been created.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The suggested filename for the receiver.
QString Tp::FileTransferChannel::contentType ( ) const

Return the file's MIME type.

This property cannot change once the channel has been created.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The file's MIME type.
qulonglong Tp::FileTransferChannel::size ( ) const

Return the size of the file.

Note that the size is not guaranteed to be exactly right for incoming files. This is merely a hint and should not be used to know when the transfer finished.

For unknown sizes the return value can be UINT64_MAX.

This property cannot change once the channel has been created.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The file size.
QString Tp::FileTransferChannel::uri ( ) const

Return the URI of the file.

On outgoing file transfers, this property cannot change after the channel is requested. For incoming file transfers, this property may be set by the channel handler before calling AcceptFile to inform observers where the incoming file will be saved. When the URI property is set, the signal IncomingFileTransferChannel::uriDefined() is emitted.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The file uri.
See Also
IncomingFileTransferChannel::uriDefined()
FileHashType Tp::FileTransferChannel::contentHashType ( ) const

Return the type of the contentHash().

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The content hash type as FileHashType.
See Also
contentHash()
QString Tp::FileTransferChannel::contentHash ( ) const

Return the hash of the contents of the file transfer, of type described in the value of the contentHashType().

Its value MUST correspond to the appropriate type of the contentHashType(). If the contentHashType() is set to FileHashTypeNone, then the returned value is an empty string.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The hash of the contents.
See Also
contentHashType()
QString Tp::FileTransferChannel::description ( ) const

Return the description of the file transfer.

This property cannot change once the channel has been created.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The description.
QDateTime Tp::FileTransferChannel::lastModificationTime ( ) const

Return the last modification time of the file being transferred. This cannot change once the channel has been created.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The file modification time as QDateTime.
qulonglong Tp::FileTransferChannel::initialOffset ( ) const

Return the offset in bytes from which the file will be sent.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The offset in bytes.
See Also
initialOffsetDefined()
qulonglong Tp::FileTransferChannel::transferredBytes ( ) const

Return the number of bytes that have been transferred.

Change notification is via the transferredBytesChanged() signal.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The number of bytes.
See Also
transferredBytesChanged()
PendingOperation * Tp::FileTransferChannel::cancel ( )

Cancel a file transfer.

Returns
A PendingOperation object which will emit PendingOperation::finished when the call has finished.
void Tp::FileTransferChannel::stateChanged ( Tp::FileTransferState  state,
Tp::FileTransferStateChangeReason  reason 
)
signal

Emitted when the value of state() changes.

Parameters
stateThe new state of this file transfer channel.
reasonThe reason for the change of state.
See Also
state()
void Tp::FileTransferChannel::initialOffsetDefined ( qulonglong  initialOffset)
signal

Emitted when the initial offset for the file transfer is defined.

Parameters
initialOffsetThe new initial offset for the file transfer.
See Also
initialOffset()
void Tp::FileTransferChannel::transferredBytesChanged ( qulonglong  count)
signal

Emitted when the value of transferredBytes() changes.

Parameters
countThe new number of bytes transferred.
See Also
transferredBytes()
SupportedSocketMap Tp::FileTransferChannel::availableSocketTypes ( ) const
protected

Return a mapping from address types (members of SocketAddressType) to arrays of access-control type (members of SocketAccessControl) that the CM supports for sockets with that address type.

For simplicity, if a CM supports offering a particular type of file transfer, it is assumed to support accepting it. All CMs support at least SocketAddressTypeIPv4.

This method requires FileTransferChannel::FeatureCore to be ready.

Returns
The available socket types as a map from address types to arrays of access-control type.
void Tp::FileTransferChannel::connectToHost ( )
protectedvirtual

Protected virtual method called when the state becomes FileTransferStateOpen.

Specialized classes should reimplement this method and call setConnected() when the connection is established.

See Also
setConnected()
bool Tp::FileTransferChannel::isConnected ( ) const
protected

Return whether a connection has been established.

Returns
true if the connections has been established, false otherwise.
See Also
setConnected()
void Tp::FileTransferChannel::setConnected ( )
protected

Indicate whether a connection has been established.

Specialized classes that reimplement connectToHost() must call this method once the connection has been established or setFinished() if an error occurred.

See Also
isConnected(), connectToHost(), setFinished()
bool Tp::FileTransferChannel::isFinished ( ) const
protected

Return whether sending/receiving has finished.

Returns
true if sending/receiving has finished, false otherwise.
void Tp::FileTransferChannel::setFinished ( )
protectedvirtual

Protected virtual method called when an error occurred and the transfer should finish.

Specialized classes should reimplement this method and close the IO devices and do all the needed cleanup.

Note that for specialized classes that reimplement connectToHost() and set isConnected() to true, the state will not change to FileTransferStateCompleted once the state change is received.

When finished sending/receiving the specialized class MUST call this method and then the state will change to the latest pending state.

void Tp::FileTransferChannel::onUriDefined ( const QString &  uri)
protectedslot

Member Data Documentation

const Feature Tp::FileTransferChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the FileTransferChannel object usable.

Note that this feature must be enabled in order to use most FileTransferChannel methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01314.html0000644000175100017520000002652112530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfacePresenceInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfacePresenceInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddStatus(const QString &status, const QVariantMap &parameters, int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
ClearStatus(int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
ConnectionInterfacePresenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfacePresenceInterface
ConnectionInterfacePresenceInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfacePresenceInterface
ConnectionInterfacePresenceInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfacePresenceInterface
ConnectionInterfacePresenceInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfacePresenceInterfaceexplicit
ConnectionInterfacePresenceInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfacePresenceInterface
GetPresence(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
GetStatuses(int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfacePresenceInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
PresenceUpdate(const Tp::ContactPresences &presence)Tp::Client::ConnectionInterfacePresenceInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoveStatus(const QString &status, int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
requestAllProperties() const Tp::Client::ConnectionInterfacePresenceInterfaceinline
RequestPresence(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
SetLastActivityTime(uint time, int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetStatus(const Tp::MultipleStatusMap &statuses, int timeout=-1)Tp::Client::ConnectionInterfacePresenceInterfaceinlineslot
staticInterfaceName()Tp::Client::ConnectionInterfacePresenceInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01069.html0000644000175100017520000001601012530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingContactAttributes Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00913.html0000644000175100017520000000640012530426257021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientHandler::HandlerInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00412.html0000644000175100017520000000744012530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::NotDelegatedError Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::NotDelegatedError Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString errorName
 
QString errorMessage
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

QString Tp::NotDelegatedError::errorName

the name of a D-Bus error describing what went wrong.

QString Tp::NotDelegatedError::errorMessage

a human-readable informative error message.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01383.html0000644000175100017520000001266512530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceLocationAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceLocationAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetLocations(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceLocationAdaptorslot
LocationAccessControl() const Tp::Service::ConnectionInterfaceLocationAdaptor
LocationAccessControlTypes() const Tp::Service::ConnectionInterfaceLocationAdaptor
LocationUpdated(uint contact, const QVariantMap &location)Tp::Service::ConnectionInterfaceLocationAdaptorsignal
RequestLocation(uint contact, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceLocationAdaptorslot
SetLocation(const QVariantMap &location, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceLocationAdaptorslot
SetLocationAccessControl(const Tp::RichPresenceAccessControl &newValue)Tp::Service::ConnectionInterfaceLocationAdaptor
SupportedLocationFeatures() const Tp::Service::ConnectionInterfaceLocationAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00167.html0000644000175100017520000003255012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Captcha Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Captcha Class Reference

The Captcha class represents a Captcha ready to be answered. More...

#include <TelepathyQt/Captcha>

Public Member Functions

 Captcha ()
 
 Captcha (const Captcha &other)
 
 ~Captcha ()
 
bool isValid () const
 
Captchaoperator= (const Captcha &rhs)
 
QString mimeType () const
 
QString label () const
 
QByteArray data () const
 
CaptchaAuthentication::ChallengeType type () const
 
uint id () const
 

Detailed Description

The Captcha class represents a Captcha ready to be answered.

It exposes all the parameters needed for a handler to present the user with a captcha.

Please note this class is meant to be read-only. It is usually created by PendingCaptchas once a Captcha request operation succeeds.

Please note that this class is implicitly shared.

Constructor & Destructor Documentation

Tp::Captcha::Captcha ( )

Default constructor.

Tp::Captcha::Captcha ( const Captcha other)

Copy constructor.

Tp::Captcha::~Captcha ( )

Class destructor.

Member Function Documentation

bool Tp::Captcha::isValid ( ) const
inline
Captcha & Tp::Captcha::operator= ( const Captcha rhs)
QString Tp::Captcha::mimeType ( ) const

Return the mimetype of the captcha.

Returns
The captcha's mimetype.
See Also
data()
QString Tp::Captcha::label ( ) const

Return the label of the captcha. For some captcha types, such as CaptchaAuthentication::TextQuestionChallenge, the label is also the challenge the user has to answer

Returns
The captcha's label.
See Also
data() type()
QByteArray Tp::Captcha::data ( ) const

Return the raw data of the captcha. The handler can check its type and metatype to know how to parse the blob.

Returns
The captcha's data.
See Also
mimeType(), type()
CaptchaAuthentication::ChallengeType Tp::Captcha::type ( ) const

Return the type of the captcha.

Returns
The captcha's type.
See Also
data()
uint Tp::Captcha::id ( ) const

Return the id of the captcha. This parameter should be used to identify the captcha when answering its challenge.

Returns
The captcha's id.
See Also
CaptchaAuthentication::answer()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01128.html0000644000175100017520000000542612530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AddressingNormalizationMap Member List

This is the complete list of members for Tp::AddressingNormalizationMap, including all inherited members.

AddressingNormalizationMap()Tp::AddressingNormalizationMapinline
AddressingNormalizationMap(const QMap< QString, uint > &a)Tp::AddressingNormalizationMapinline
operator=(const QMap< QString, uint > &a)Tp::AddressingNormalizationMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00982.html0000644000175100017520000001245312530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00481.html0000644000175100017520000002175412530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor4 (FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
typedef R(* Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >::FunctionType)(Arg1, Arg2, Arg3, Arg4)
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
typedef R Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >::PtrFunctor4 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
ResultType Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4 
) const
inline

Member Data Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
FunctionType Tp::PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00798_source.html0000644000175100017520000006712512530426257022543 0ustar00kaffeinekaffeine00000000000000 profile.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
profile.h
1 
23 #ifndef _TelepathyQt_profile_h_HEADER_GUARD_
24 #define _TelepathyQt_profile_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/RequestableChannelClassSpec>
31 #include <TelepathyQt/Types>
32 
33 #include <QDBusSignature>
34 #include <QObject>
35 #include <QString>
36 #include <QVariant>
37 
38 namespace Tp
39 {
40 
41 class ProtocolInfo;
42 
43 class TP_QT_EXPORT Profile : public RefCounted
44 {
45  Q_DISABLE_COPY(Profile);
46 
47 public:
48  static ProfilePtr createForServiceName(const QString &serviceName);
49  static ProfilePtr createForFileName(const QString &fileName);
50 
51  ~Profile();
52 
53  QString serviceName() const;
54 
55  bool isValid() const;
56 
57  bool isFake() const;
58 
59  QString type() const;
60  QString provider() const;
61  QString name() const;
62  QString iconName() const;
63  QString cmName() const;
64  QString protocolName() const;
65 
66  class Parameter
67  {
68  public:
69  Parameter();
70  Parameter(const Parameter &other);
71  Parameter(const QString &name,
72  const QDBusSignature &dbusSignature,
73  const QVariant &value,
74  const QString &label,
75  bool mandatory);
76  ~Parameter();
77 
78  QString name() const;
79  QDBusSignature dbusSignature() const;
80  QVariant::Type type() const;
81  QVariant value() const;
82  QString label() const;
83 
84  bool isMandatory() const;
85 
86  // TODO Add matches(Tp::Presence) method
87 
88  Parameter &operator=(const Parameter &other);
89 
90  private:
91  friend class Profile;
92 
93  TP_QT_NO_EXPORT void setName(const QString &name);
94  TP_QT_NO_EXPORT void setDBusSignature(const QDBusSignature &dbusSignature);
95  TP_QT_NO_EXPORT void setValue(const QVariant &value);
96  TP_QT_NO_EXPORT void setLabel(const QString &label);
97  TP_QT_NO_EXPORT void setMandatory(bool mandatory);
98 
99  struct Private;
100  friend struct Private;
101  Private *mPriv;
102  };
103  typedef QList<Parameter> ParameterList;
104 
105  ParameterList parameters() const;
106  bool hasParameter(const QString &name) const;
107  Parameter parameter(const QString &name) const;
108 
109  class Presence
110  {
111  public:
112  Presence();
113  Presence(const Presence &other);
114  Presence(const QString &id,
115  const QString &label,
116  const QString &iconName,
117  const QString &message,
118  bool disabled);
119  ~Presence();
120 
121  QString id() const;
122  QString label() const;
123  QString iconName() const;
124  bool canHaveStatusMessage() const;
125 
126  bool isDisabled() const;
127 
128  Presence &operator=(const Presence &other);
129 
130  private:
131  friend class Profile;
132 
133  TP_QT_NO_EXPORT void setId(const QString &id);
134  TP_QT_NO_EXPORT void setLabel(const QString &label);
135  TP_QT_NO_EXPORT void setIconName(const QString &iconName);
136  TP_QT_NO_EXPORT void setMessage(const QString &message);
137  TP_QT_NO_EXPORT void setDisabled(bool disabled);
138 
139  struct Private;
140  friend struct Private;
141  Private *mPriv;
142  };
143  typedef QList<Presence> PresenceList;
144 
145  bool allowOtherPresences() const;
146  PresenceList presences() const;
147  bool hasPresence(const QString &id) const;
148  Presence presence(const QString &id) const;
149 
150  RequestableChannelClassSpecList unsupportedChannelClassSpecs() const;
151 
152 private:
153  friend class Account;
154  friend class ProfileManager;
155 
156  TP_QT_NO_EXPORT Profile();
157  TP_QT_NO_EXPORT Profile(const QString &serviceName, const QString &cmName,
158  const QString &protocolName, const ProtocolInfo &protocolInfo);
159 
160  TP_QT_NO_EXPORT void setServiceName(const QString &serviceName);
161  TP_QT_NO_EXPORT void setFileName(const QString &fileName);
162 
163  TP_QT_NO_EXPORT static QStringList searchDirs();
164 
165  struct Private;
166  friend struct Private;
167  Private *mPriv;
168 };
169 
170 } // Tp
171 
172 Q_DECLARE_METATYPE(Tp::Profile::Parameter);
173 Q_DECLARE_METATYPE(Tp::Profile::Presence);
174 
175 #endif
The Profile::Parameter class represents a parameter defined in .profile files.
Definition: profile.h:66
The Profile::Presence class represents a presence defined in .profile files.
Definition: profile.h:109
The Profile class provides an easy way to read Telepathy profile files according to http://telepathy...
Definition: profile.h:43
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
QList< Parameter > ParameterList
Definition: profile.h:103
QList< Presence > PresenceList
Definition: profile.h:143
The ProfileManager class provides helper methods to retrieve Profile objects.
Definition: profile-manager.h:43
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101
The Account class represents a Telepathy account.
Definition: account.h:68


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00226.html0000644000175100017520000010422212530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceSubjectInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetSubject (const QString &subject, int timeout=-1)
 

Public Member Functions

 ChannelInterfaceSubjectInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSubjectInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceSubjectInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceSubjectInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceSubjectInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySubject () const
 
Tp::PendingVariantrequestPropertyActor () const
 
Tp::PendingVariantrequestPropertyActorHandle () const
 
Tp::PendingVariantrequestPropertyTimestamp () const
 
Tp::PendingVariantrequestPropertyCanSet () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Subject2".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSubjectInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceSubjectInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceSubjectInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceSubjectInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceSubjectInterface::ChannelInterfaceSubjectInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceSubjectInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceSubjectInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Subject2", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSubjectInterface::requestPropertySubject ( ) const
inline

Asynchronous getter for the remote object property Subject of type QString.

The human-readable subject on the channel such as the topic in an IRC channel, or the room name in XMPP MUCs.

This property replaces the subject Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.

This property may change during the lifetime of the channel and MUST not be included in a channel request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSubjectInterface::requestPropertyActor ( ) const
inline

Asynchronous getter for the remote object property Actor of type QString.

The normalized contact ID representing who last modified the subject, or the empty string if it is not known.

This property replaces the subject-contact Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSubjectInterface::requestPropertyActorHandle ( ) const
inline

Asynchronous getter for the remote object property ActorHandle of type uint.

The handle corresponding to Actor , or 0 if the Actor is unknown.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSubjectInterface::requestPropertyTimestamp ( ) const
inline

Asynchronous getter for the remote object property Timestamp of type qlonglong.

A unix timestamp indicating when the subject was last modified, or INT_MAX64 if unknown.

This property replaces the subject-timestamp Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceSubjectInterface::requestPropertyCanSet ( ) const
inline

Asynchronous getter for the remote object property CanSet of type bool.

TRUE if the Subject property can be set by the user by calling SetSubject() , otherwise FALSE.

If implementations are unsure of what this value should be it SHOULD still be set to what it believes the value is. As a result, clients should be aware that SetSubject() can still fail even with this property set to TRUE.

In XMPP it is impossible to know whether an occupant can set the subject as XMPP server implementations are wildly inconsistent.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceSubjectInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterfaceSubjectInterface::SetSubject ( const QString &  subject,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetSubject on the remote object.

Set the room's subject. Clients SHOULD look at the subject flags before calling this method as the user might not have permission to set the subject.

A successful return of this method indicates a successful change in subject, but clients should still listen for changes to the Subject property for further changes by other users or the server.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
subject
The new subject.
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelInterfaceSubjectInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01197.html0000644000175100017520000000441112530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketAddressIP Member List

This is the complete list of members for Tp::SocketAddressIP, including all inherited members.

addressTp::SocketAddressIP
portTp::SocketAddressIP


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00540.html0000644000175100017520000001445612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::TubeInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::TubeInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint identifier
 
uint initiator
 
uint type
 
QString service
 
QVariantMap parameters
 
uint state
 

Detailed Description

Structure type generated from the specification.

A struct (tube ID, initiator handle, tube type, service name, parameters, state) representing a tube, as returned by ListTubes on the Tubes channel type.

Member Data Documentation

uint Tp::TubeInfo::identifier
uint Tp::TubeInfo::initiator
uint Tp::TubeInfo::type
QString Tp::TubeInfo::service
QVariantMap Tp::TubeInfo::parameters
uint Tp::TubeInfo::state


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00794_source.html0000644000175100017520000010223612530426257022530 0ustar00kaffeinekaffeine00000000000000 presence.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
presence.h
1 
23 #ifndef _TelepathyQt_presence_h_HEADER_GUARD_
24 #define _TelepathyQt_presence_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class TP_QT_EXPORT Presence
37 {
38 public:
39  Presence();
40  Presence(const SimplePresence &sp);
41  Presence(ConnectionPresenceType type, const QString &status, const QString &statusMessage);
42  Presence(const Presence &other);
43  ~Presence();
44 
45  static Presence available(const QString &statusMessage = QString());
46  static Presence chat(const QString &statusMessage = QString());
47  static Presence away(const QString &statusMessage = QString());
48  static Presence brb(const QString &statusMessage = QString());
49  static Presence busy(const QString &statusMessage = QString());
50  static Presence dnd(const QString &statusMessage = QString());
51  static Presence xa(const QString &statusMessage = QString());
52  static Presence hidden(const QString &statusMessage = QString());
53  static Presence offline(const QString &statusMessage = QString());
54 
55  bool isValid() const { return mPriv.constData() != 0; }
56 
57  Presence &operator=(const Presence &other);
58  bool operator==(const Presence &other) const;
59  bool operator!=(const Presence &other) const;
60 
61  ConnectionPresenceType type() const;
62  QString status() const;
63  QString statusMessage() const;
64  void setStatus(const SimplePresence &value);
65  void setStatus(ConnectionPresenceType type, const QString &status,
66  const QString &statusMessage);
67  void setStatusMessage(const QString &statusMessage);
68 
69  SimplePresence barePresence() const;
70 
71 private:
72  struct Private;
73  friend struct Private;
74  QSharedDataPointer<Private> mPriv;
75 };
76 
77 class TP_QT_EXPORT PresenceSpec
78 {
79 public:
81  NoFlags = 0,
82  MaySetOnSelf = 0x1,
83  CanHaveStatusMessage = 0x2,
84  AllFlags = MaySetOnSelf | CanHaveStatusMessage
85  };
86  Q_DECLARE_FLAGS(SimpleStatusFlags, SimpleStatusFlag);
87 
88  PresenceSpec();
89  PresenceSpec(const QString &status, const SimpleStatusSpec &spec);
90  PresenceSpec(const PresenceSpec &other);
91  ~PresenceSpec();
92 
93  static PresenceSpec available(SimpleStatusFlags flags = AllFlags);
94  static PresenceSpec chat(SimpleStatusFlags flags = AllFlags);
95  static PresenceSpec pstn(SimpleStatusFlags flags = CanHaveStatusMessage);
96  static PresenceSpec away(SimpleStatusFlags flags = AllFlags);
97  static PresenceSpec brb(SimpleStatusFlags flags = AllFlags);
98  static PresenceSpec dnd(SimpleStatusFlags flags = AllFlags);
99  static PresenceSpec busy(SimpleStatusFlags flags = AllFlags);
100  static PresenceSpec xa(SimpleStatusFlags flags = AllFlags);
101  static PresenceSpec hidden(SimpleStatusFlags flags = AllFlags);
102  static PresenceSpec offline(SimpleStatusFlags flags = CanHaveStatusMessage);
103  static PresenceSpec unknown(SimpleStatusFlags flags = CanHaveStatusMessage);
104  static PresenceSpec error(SimpleStatusFlags flags = CanHaveStatusMessage);
105 
106  bool isValid() const { return mPriv.constData() != 0; }
107 
108  PresenceSpec &operator=(const PresenceSpec &other);
109  bool operator==(const PresenceSpec &other) const;
110  bool operator!=(const PresenceSpec &other) const;
111  bool operator<(const PresenceSpec &other) const;
112 
113  Presence presence(const QString &statusMessage = QString()) const;
114  bool maySetOnSelf() const;
115  bool canHaveStatusMessage() const;
116 
117  SimpleStatusSpec bareSpec() const;
118 
119 private:
120  struct Private;
121  friend struct Private;
122  QSharedDataPointer<Private> mPriv;
123 };
124 
125 class TP_QT_EXPORT PresenceSpecList : public QList<PresenceSpec>
126 {
127 public:
130  {
131  SimpleStatusSpecMap::const_iterator i = specMap.constBegin();
132  SimpleStatusSpecMap::const_iterator end = specMap.end();
133  for (; i != end; ++i) {
134  QString status = i.key();
135  SimpleStatusSpec spec = i.value();
136  append(PresenceSpec(status, spec));
137  }
138  }
139  PresenceSpecList(const QList<PresenceSpec> &other)
140  : QList<PresenceSpec>(other)
141  {
142  }
143 
144  QMap<QString, PresenceSpec> toMap() const
145  {
146  QMap<QString, PresenceSpec> ret;
147  Q_FOREACH (const PresenceSpec &spec, *this) {
148  ret.insert(spec.presence().status(), spec);
149  }
150  return ret;
151  }
152 
154  {
156  Q_FOREACH (const PresenceSpec &spec, *this) {
157  ret.insert(spec.presence().status(), spec.bareSpec());
158  }
159  return ret;
160  }
161 };
162 
163 Q_DECLARE_OPERATORS_FOR_FLAGS(PresenceSpec::SimpleStatusFlags)
164 
165 } // Tp
166 
167 Q_DECLARE_METATYPE(Tp::Presence);
168 Q_DECLARE_METATYPE(Tp::PresenceSpec);
169 Q_DECLARE_METATYPE(Tp::PresenceSpecList);
170 
171 #endif
bool operator!=(const AccessControl &v1, const AccessControl &v2)
Definition: build/TelepathyQt/_gen/types.h:144
PresenceSpecList(const QList< PresenceSpec > &other)
Definition: presence.h:139
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
bool isValid() const
Definition: presence.h:106
Definition: build/TelepathyQt/_gen/types.h:2733
QMap< QString, PresenceSpec > toMap() const
Definition: presence.h:144
Presence presence(const QString &statusMessage=QString()) const
Definition: presence.cpp:419
QString status() const
Definition: presence.cpp:162
PresenceSpecList()
Definition: presence.h:128
The Presence class represents a Telepathy simple presence.
Definition: presence.h:36
ConnectionPresenceType
Definition: build/TelepathyQt/_gen/constants.h:2026
SimpleStatusSpec bareSpec() const
Definition: presence.cpp:451
SimpleStatusFlag
Definition: presence.h:80
Definition: build/TelepathyQt/_gen/types.h:3849
SimpleStatusSpecMap bareSpecs() const
Definition: presence.h:153
bool isValid() const
Definition: presence.h:55
The PresenceSpecList class represents a list of PresenceSpec.
Definition: presence.h:125
PresenceSpecList(const SimpleStatusSpecMap &specMap)
Definition: presence.h:129
Definition: build/TelepathyQt/_gen/types.h:2787
The PresenceSpec class represents a Telepathy presence information supported by a protocol...
Definition: presence.h:77


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00295.html0000644000175100017520000005455012530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceLocationAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceLocationAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ContactLocations GetLocations (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 
QVariantMap RequestLocation (uint contact, const QDBusMessage &dbusMessage)
 
void SetLocation (const QVariantMap &location, const QDBusMessage &dbusMessage)
 

Signals

void LocationUpdated (uint contact, const QVariantMap &location)
 

Public Member Functions

Tp::UIntList LocationAccessControlTypes () const
 
Tp::RichPresenceAccessControl LocationAccessControl () const
 
void SetLocationAccessControl (const Tp::RichPresenceAccessControl &newValue)
 
uint SupportedLocationFeatures () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::UIntList Tp::Service::ConnectionInterfaceLocationAdaptor::LocationAccessControlTypes ( ) const

Return the value of the exported D-Bus object property LocationAccessControlTypes of type Tp::UIntList.

Adaptees should export this property as a Qt property named 'locationAccessControlTypes' with type Tp::UIntList.

The types of access control that are supported by this connection.

Returns
The value of exported property LocationAccessControlTypes.
Tp::RichPresenceAccessControl Tp::Service::ConnectionInterfaceLocationAdaptor::LocationAccessControl ( ) const

Return the value of the exported D-Bus object property LocationAccessControl of type Tp::RichPresenceAccessControl.

Adaptees should export this property as a Qt property named 'locationAccessControl' with type Tp::RichPresenceAccessControl.

The current access control mechanism and settings for this connection. Before publishing location for the first time, if this has not been set by a client, implementations SHOULD set it to be as restrictive as possible (an empty whitelist, if supported).

Returns
The value of exported property LocationAccessControl.
void Tp::Service::ConnectionInterfaceLocationAdaptor::SetLocationAccessControl ( const Tp::RichPresenceAccessControl newValue)

Set the value of the exported D-Bus object property LocationAccessControl of type Tp::RichPresenceAccessControl.

Adaptees should export this property as a writable Qt property named 'locationAccessControl' with type Tp::RichPresenceAccessControl.

The current access control mechanism and settings for this connection. Before publishing location for the first time, if this has not been set by a client, implementations SHOULD set it to be as restrictive as possible (an empty whitelist, if supported).

uint Tp::Service::ConnectionInterfaceLocationAdaptor::SupportedLocationFeatures ( ) const

Return the value of the exported D-Bus object property SupportedLocationFeatures of type uint.

Adaptees should export this property as a Qt property named 'supportedLocationFeatures' with type uint.

Indicates the Location features supported by this connection. This property MAY be undefined before ConnectionInterface::Status becomes Connected, but MUST remain constant thereafter.
Returns
The value of exported property SupportedLocationFeatures.
Tp::ContactLocations Tp::Service::ConnectionInterfaceLocationAdaptor::GetLocations ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getLocations(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceLocationAdaptor::GetLocationsContextPtr &context);

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

Return the current locations of the given contacts, if they are already known. If any of the given contacts' locations are not known, request their current locations, but return immediately without waiting for a reply; if a reply with a non-empty location is later received for those contacts, the LocationUpdated() signal will be emitted for them.

This method is appropriate for "lazy" location finding, for instance displaying the location (if available) of everyone in your contact list.

For backwards compatibility, if this method is called by a client whose "interest count" for this interface, as defined by ConnectionInterface::AddClientInterest() , is zero, the Connection SHOULD behave as if AddClientInterest had been called for this interface just before that method call. Clients that do not explicitly call AddClientInterest SHOULD NOT call ConnectionInterface::RemoveClientInterest() either.

Parameters
contacts
The contacts whose locations should be returned or signalled.
Returns
The contacts&apos; locations, if already known. Contacts whose 
locations are not already known are omitted from the mapping; 
contacts known to have no location information appear in the 
mapping with an empty Location dictionary.
QVariantMap Tp::Service::ConnectionInterfaceLocationAdaptor::RequestLocation ( uint  contact,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestLocation(uint contact, const Tp::Service::ConnectionInterfaceLocationAdaptor::RequestLocationContextPtr &context);

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

Return the current location of the given contact. If necessary, make a request to the server for up-to-date information, and wait for a reply. This method is appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions.

Parameters
contact
The contact whose location should be returned.
Returns
The contact&apos;s location. It MAY be empty, indicating that no 
location information was found.
void Tp::Service::ConnectionInterfaceLocationAdaptor::SetLocation ( const QVariantMap &  location,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setLocation(const QVariantMap& location, const Tp::Service::ConnectionInterfaceLocationAdaptor::SetLocationContextPtr &context);

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

Set the local user's own location.

Parameters
location
The location to advertise. If the user wants to obscure their exact 
location by reducing the precision or accuracy, clients MUST do 
this themselves, rather than relying on the connection manager to 
do so. Clients that interact with more than one connection SHOULD 
advertise the same reduced-accuracy location to all of them, so 
that contacts cannot obtain an undesirably accurate location by 
assuming that random errors have been added and averaging the 
locations advertised on multiple connections.
void Tp::Service::ConnectionInterfaceLocationAdaptor::LocationUpdated ( uint  contact,
const QVariantMap &  location 
)
signal

Represents the exported D-Bus signal LocationUpdated on this object.

Adaptees should export this signal as a Qt signal with the following signature: void locationUpdated(uint contact, const QVariantMap& location);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
The contact
location
The contact&apos;s location, or empty to indicate that nothing is 
known about the contact&apos;s location.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01256.html0000644000175100017520000002211412530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceChatStateInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceChatStateInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceChatStateInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceChatStateInterface
ChannelInterfaceChatStateInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceChatStateInterface
ChannelInterfaceChatStateInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceChatStateInterface
ChannelInterfaceChatStateInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceChatStateInterfaceexplicit
ChannelInterfaceChatStateInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceChatStateInterface
ChatStateChanged(uint contact, uint state)Tp::Client::ChannelInterfaceChatStateInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceChatStateInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceChatStateInterfaceinline
requestPropertyChatStates() const Tp::Client::ChannelInterfaceChatStateInterfaceinline
SetChatState(uint state, int timeout=-1)Tp::Client::ChannelInterfaceChatStateInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceChatStateInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01000.html0000644000175100017520000000665712530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ConnectionManagerLowlevel Member List

This is the complete list of members for Tp::ConnectionManagerLowlevel, including all inherited members.

connectionManager() const Tp::ConnectionManagerLowlevel
isValid() const Tp::ConnectionManagerLowlevel
RefCounted()Tp::RefCountedinline
requestConnection(const QString &protocolName, const QVariantMap &parameters)Tp::ConnectionManagerLowlevel
~ConnectionManagerLowlevel()Tp::ConnectionManagerLowlevel
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00790_source.html0000644000175100017520000001723612530426257022531 0ustar00kaffeinekaffeine00000000000000 pending-variant-map.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-variant-map.h
1 
23 #ifndef _TelepathyQt_pending_variant_map_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_variant_map_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/PendingOperation>
32 
33 #include <QVariant>
34 
35 namespace Tp
36 {
37 
38 class TP_QT_EXPORT PendingVariantMap : public PendingOperation
39 {
40  Q_OBJECT
41  Q_DISABLE_COPY(PendingVariantMap);
42 
43 public:
44  PendingVariantMap(QDBusPendingCall call, const SharedPtr<RefCounted> &object);
46 
47  QVariantMap result() const;
48 
49 private Q_SLOTS:
50  TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*);
51 
52 private:
53  struct Private;
54  friend struct Private;
55  Private *mPriv;
56 };
57 
58 } // Tp
59 
60 #endif
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00354.html0000644000175100017520000010704712530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::FileTransferChannelCreationProperties Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FileTransferChannelCreationProperties Class Reference

The FileTransferChannelCreationProperties class represents the properties of a file transfer channel request. More...

#include <TelepathyQt/FileTransferChannelCreationProperties>

Public Member Functions

 FileTransferChannelCreationProperties ()
 
 FileTransferChannelCreationProperties (const QString &suggestedFileName, const QString &contentType, qulonglong size)
 
 FileTransferChannelCreationProperties (const QString &path, const QString &contentType)
 
 FileTransferChannelCreationProperties (const FileTransferChannelCreationProperties &other)
 
 ~FileTransferChannelCreationProperties ()
 
bool isValid () const
 
FileTransferChannelCreationPropertiesoperator= (const FileTransferChannelCreationProperties &other)
 
bool operator== (const FileTransferChannelCreationProperties &other) const
 
FileTransferChannelCreationPropertiessetContentHash (FileHashType contentHashType, const QString &contentHash)
 
FileTransferChannelCreationPropertiessetDescription (const QString &description)
 
FileTransferChannelCreationPropertiessetLastModificationTime (const QDateTime &lastModificationTime)
 
FileTransferChannelCreationPropertiessetUri (const QString &uri)
 
QString suggestedFileName () const
 
QString contentType () const
 
qulonglong size () const
 
bool hasContentHash () const
 
FileHashType contentHashType () const
 
QString contentHash () const
 
bool hasDescription () const
 
QString description () const
 
bool hasLastModificationTime () const
 
QDateTime lastModificationTime () const
 
bool hasUri () const
 
QString uri () const
 

Detailed Description

The FileTransferChannelCreationProperties class represents the properties of a file transfer channel request.

Constructor & Destructor Documentation

Tp::FileTransferChannelCreationProperties::FileTransferChannelCreationProperties ( )
Tp::FileTransferChannelCreationProperties::FileTransferChannelCreationProperties ( const QString &  suggestedFileName,
const QString &  contentType,
qulonglong  size 
)

Create a FileTransferChannelCreationProperties.

If suggestedFileName or contentType are empty or if size is equal to zero, the channel request will fail. suggestedFileName will be cleaned of any path.

Parameters
suggestedFileNameThe name of the file on the sender's side. This is therefore given as a suggested filename for the receiver.
contentTypeThe content type (MIME) of the file.
sizeThe size of the content of the file.
See Also
setUri()
Tp::FileTransferChannelCreationProperties::FileTransferChannelCreationProperties ( const QString &  path,
const QString &  contentType 
)

Create a FileTransferChannelCreationProperties.

This constructor accepts the path to a local file and sets the properties that can be deducted from the file. If path is not a local file the FileTransferChannelCreationProperties will be invalid.

Parameters
pathThe path to the local file to be sent.
Tp::FileTransferChannelCreationProperties::FileTransferChannelCreationProperties ( const FileTransferChannelCreationProperties other)

Copy constructor.

Tp::FileTransferChannelCreationProperties::~FileTransferChannelCreationProperties ( )

Class destructor.

Member Function Documentation

bool Tp::FileTransferChannelCreationProperties::isValid ( ) const
inline
FileTransferChannelCreationProperties & Tp::FileTransferChannelCreationProperties::operator= ( const FileTransferChannelCreationProperties other)
bool Tp::FileTransferChannelCreationProperties::operator== ( const FileTransferChannelCreationProperties other) const
FileTransferChannelCreationProperties & Tp::FileTransferChannelCreationProperties::setContentHash ( FileHashType  contentHashType,
const QString &  contentHash 
)

Set the content hash of the file and its type for the request.

Parameters
contentHashTypeThe type of content hash.
contentHashThe hash of the file, of type contentHashType.
Returns
This FileTransferChannelCreationProperties.
See Also
hasContentHash(), contentHash(), contentHashType()
FileTransferChannelCreationProperties & Tp::FileTransferChannelCreationProperties::setDescription ( const QString &  description)

Set a description of the file for the request.

Parameters
descriptionThe description of the file.
Returns
This FileTransferChannelCreationProperties.
See Also
hasDescription(), description()
FileTransferChannelCreationProperties & Tp::FileTransferChannelCreationProperties::setLastModificationTime ( const QDateTime &  lastModificationTime)

Set the last modification time of the file for the request.

Parameters
lastModificationTimeThe last modification time of the file.
Returns
This FileTransferChannelCreationProperties.
See Also
hasLastModificationTime(), lastModificationTime()
FileTransferChannelCreationProperties & Tp::FileTransferChannelCreationProperties::setUri ( const QString &  uri)

Set the URI of the file for the request.

Parameters
uriThe URI of the file.
Returns
This FileTransferChannelCreationProperties.
See Also
uri()
QString Tp::FileTransferChannelCreationProperties::suggestedFileName ( ) const

Return the suggested file name for the request. If the suggested file name is empty, the channel request will fail.

Returns
The suggested file name for the request.
QString Tp::FileTransferChannelCreationProperties::contentType ( ) const

Return the content type (MIME) of the file for the request. If the content type is empty, the channel request will fail.

Returns
The content type of the file.
qulonglong Tp::FileTransferChannelCreationProperties::size ( ) const

Return the size of the contents of the file for the request. If size is zero, the channel request will fail.

Returns
The size of the contents of file.
bool Tp::FileTransferChannelCreationProperties::hasContentHash ( ) const

Return whether the request will have a content hash.

Returns
true whether it will have a content hash, false otherwise.
See Also
contentHash(), contentHashType(), setContentHash()
FileHashType Tp::FileTransferChannelCreationProperties::contentHashType ( ) const

Return the type of the content hash for the request.

Returns
The type of the content hash.
See Also
hasContentHash(), contentHash(), setContentHash()
QString Tp::FileTransferChannelCreationProperties::contentHash ( ) const

Return the content hash of the file for the request.

Returns
The hash of the contents of the file transfer, of type returned by contentHashType().
See Also
hasContentHash(), contentHashType(), setContentHash()
bool Tp::FileTransferChannelCreationProperties::hasDescription ( ) const

Return whether the request will have a descriprion.

Returns
true whether it will have description, false otherwise.
See Also
description(), setDescription()
QString Tp::FileTransferChannelCreationProperties::description ( ) const

Return the description of the file for the request.

Returns
The description of the file.
See Also
hasDescription(), setDescription()
bool Tp::FileTransferChannelCreationProperties::hasLastModificationTime ( ) const

Return whether the request will have a last modification time.

Returns
true whether it will have a last modification time, false otherwise.
See Also
lastModificationTime(), setLastModificationTime()
QDateTime Tp::FileTransferChannelCreationProperties::lastModificationTime ( ) const

Return the last modification time of the file for the request.

Returns
The last modification time of the file.
See Also
hasLastModificationTime(), setLastModificationTime()
bool Tp::FileTransferChannelCreationProperties::hasUri ( ) const

Return whether the request will have an URI.

Returns
true whether it will have URI, false otherwise.
See Also
uri(), setUri()
QString Tp::FileTransferChannelCreationProperties::uri ( ) const

Return the URI of the file for the request. If the URI property is empty and the file transfer is handled by an handler that is not this process, then it won't be able to initiate the file transfer.

Returns
The URI of the file.
See Also
setUri()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01315.html0000644000175100017520000002422112530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceRequestsInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceRequestsInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelClosed(const QDBusObjectPath &removed)Tp::Client::ConnectionInterfaceRequestsInterfacesignal
ConnectionInterfaceRequestsInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceRequestsInterface
ConnectionInterfaceRequestsInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceRequestsInterface
ConnectionInterfaceRequestsInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceRequestsInterface
ConnectionInterfaceRequestsInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceRequestsInterfaceexplicit
ConnectionInterfaceRequestsInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceRequestsInterface
CreateChannel(const QVariantMap &request, int timeout=-1)Tp::Client::ConnectionInterfaceRequestsInterfaceinlineslot
EnsureChannel(const QVariantMap &request, int timeout=-1)Tp::Client::ConnectionInterfaceRequestsInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceRequestsInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NewChannels(const Tp::ChannelDetailsList &channels)Tp::Client::ConnectionInterfaceRequestsInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceRequestsInterfaceinline
requestPropertyChannels() const Tp::Client::ConnectionInterfaceRequestsInterfaceinline
requestPropertyRequestableChannelClasses() const Tp::Client::ConnectionInterfaceRequestsInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceRequestsInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00914.html0000644000175100017520000001326612530426257021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractInterface Member List

This is the complete list of members for Tp::AbstractInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)Tp::AbstractInterfaceprotectedvirtualslot
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00413.html0000644000175100017520000001402612530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::NotDelegatedMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::NotDelegatedMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QDBusObjectPath, NotDelegatedError >.

Public Member Functions

 NotDelegatedMap ()
 
 NotDelegatedMap (const QMap< QDBusObjectPath, NotDelegatedError > &a)
 
NotDelegatedMapoperator= (const QMap< QDBusObjectPath, NotDelegatedError > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QDBusObjectPath, NotDelegatedError>, but needed to have a discrete type in the Qt type system.

A mapping associating not delegated channel with an error.

Constructor & Destructor Documentation

Tp::NotDelegatedMap::NotDelegatedMap ( )
inline
Tp::NotDelegatedMap::NotDelegatedMap ( const QMap< QDBusObjectPath, NotDelegatedError > &  a)
inline

Member Function Documentation

NotDelegatedMap& Tp::NotDelegatedMap::operator= ( const QMap< QDBusObjectPath, NotDelegatedError > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01384.html0000644000175100017520000001271512530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceMailNotificationAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00168.html0000644000175100017520000001334412530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::CaptchaAnswers Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CaptchaAnswers Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QString >.

Public Member Functions

 CaptchaAnswers ()
 
 CaptchaAnswers (const QMap< uint, QString > &a)
 
CaptchaAnswersoperator= (const QMap< uint, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QString>, but needed to have a discrete type in the Qt type system.

A mapping of captcha IDs to answer strings.

Constructor & Destructor Documentation

Tp::CaptchaAnswers::CaptchaAnswers ( )
inline
Tp::CaptchaAnswers::CaptchaAnswers ( const QMap< uint, QString > &  a)
inline

Member Function Documentation

CaptchaAnswers& Tp::CaptchaAnswers::operator= ( const QMap< uint, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01129.html0000644000175100017520000000520612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AliasMap Member List

This is the complete list of members for Tp::AliasMap, including all inherited members.

AliasMap()Tp::AliasMapinline
AliasMap(const QMap< uint, QString > &a)Tp::AliasMapinline
operator=(const QMap< uint, QString > &a)Tp::AliasMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00983.html0000644000175100017520000001364412530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00482.html0000644000175100017520000002244312530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor5 (FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
typedef R(* Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5)
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
typedef R Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::PtrFunctor5 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
ResultType Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5 
) const
inline

Member Data Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
FunctionType Tp::PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00227.html0000644000175100017520000007314412530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceTubeInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Signals

void TubeChannelStateChanged (uint state)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceTubeInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceTubeInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceTubeInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceTubeInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceTubeInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyParameters () const
 
Tp::PendingVariantrequestPropertyState () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Tube".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceTubeInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceTubeInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceTubeInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceTubeInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceTubeInterface::ChannelInterfaceTubeInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceTubeInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceTubeInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Tube", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceTubeInterface::requestPropertyParameters ( ) const
inline

Asynchronous getter for the remote object property Parameters of type QVariantMap.

Each tube has a dictionary of arbitrary parameters. Parameters are commonly used to bootstrap legacy protocols where you can't negotiate parameters in-band. The allowable keys, types and values are defined by the service, but connection managers must support the value being a string (D-Bus type 's'), array of bytes (D-Bus type 'ay'), unsigned integer (D-Bus type 'u'), integer (D-Bus type 'i') and boolean (D-Bus type 'b').

When the tube is offered, the parameters are transmitted with the offer and appear as a property of the incoming tube for other participants.

For example, a stream tube for ChannelTypeStreamTubeInterface::Service "smb" (Server Message Block over TCP/IP) might use the following properties, as defined in DNS SRV (RFC 2782) Service Types:

{ 'u': 'some-username',
  'p': 'top-secret-password',
  'path': '/etc/passwd',
}

When requesting a tube with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST NOT be included in the request; instead, it is set when ChannelTypeStreamTubeInterface::Offer() or ChannelTypeDBusTubeInterface::Offer() (as appropriate) is called. Its value is undefined until the tube is offered; once set, its value MUST NOT change.

When receiving an incoming tube, this property is immutable and so advertised in the ConnectionInterfaceRequestsInterface::NewChannels() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceTubeInterface::requestPropertyState ( ) const
inline

Asynchronous getter for the remote object property State of type uint.

State of the tube in this channel.

When requesting a tube with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST NOT be included in the request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceTubeInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceTubeInterface::TubeChannelStateChanged ( uint  state)
signal

Represents the signal TubeChannelStateChanged on the remote object.

Emitted when the state of the tube channel changes. Valid state transitions are documented with Tube_Channel_State.

Parameters
state
The new state of the tube.
void Tp::Client::ChannelInterfaceTubeInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01198.html0000644000175100017520000000442312530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketAddressIPv4 Member List

This is the complete list of members for Tp::SocketAddressIPv4, including all inherited members.

addressTp::SocketAddressIPv4
portTp::SocketAddressIPv4


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/open.png0000644000175100017520000000017312530426257021102 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR à‘BIDATxíÝÁ €0 Ð׬ՙ\Àº€39—b!©9{|ðI>$#Àß´ý8/¨ÄØzƒ/Ï>2À[ÎgiU,/¬~¼Ï\ Ä9Ù¸IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00541.html0000644000175100017520000001306212530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::UIntList Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::UIntList Struct Reference

#include <TelepathyQt/Types>

Inherits QList< uint >.

Public Member Functions

 UIntList ()
 
 UIntList (const QList< uint > &a)
 
UIntListoperator= (const QList< uint > &a)
 

Detailed Description

Generic list type with uint elements. Convertible with QList<uint>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::UIntList::UIntList ( )
inline
Tp::UIntList::UIntList ( const QList< uint > &  a)
inline

Member Function Documentation

UIntList& Tp::UIntList::operator= ( const QList< uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00296.html0000644000175100017520000012167512530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceLocationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ContactLocations
GetLocations (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply< QVariantMap > RequestLocation (uint contact, int timeout=-1)
 
QDBusPendingReply SetLocation (const QVariantMap &location, int timeout=-1)
 

Signals

void LocationUpdated (uint contact, const QVariantMap &location)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceLocationInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceLocationInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceLocationInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceLocationInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceLocationInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyLocationAccessControlTypes () const
 
Tp::PendingVariantrequestPropertyLocationAccessControl () const
 
Tp::PendingOperationsetPropertyLocationAccessControl (Tp::RichPresenceAccessControl newValue)
 
Tp::PendingVariantrequestPropertySupportedLocationFeatures () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Location".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceLocationInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceLocationInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceLocationInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceLocationInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceLocationInterface::ConnectionInterfaceLocationInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceLocationInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceLocationInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Location", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceLocationInterface::requestPropertyLocationAccessControlTypes ( ) const
inline

Asynchronous getter for the remote object property LocationAccessControlTypes of type Tp::UIntList.

The types of access control that are supported by this connection.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceLocationInterface::requestPropertyLocationAccessControl ( ) const
inline

Asynchronous getter for the remote object property LocationAccessControl of type Tp::RichPresenceAccessControl.

The current access control mechanism and settings for this connection. Before publishing location for the first time, if this has not been set by a client, implementations SHOULD set it to be as restrictive as possible (an empty whitelist, if supported).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ConnectionInterfaceLocationInterface::setPropertyLocationAccessControl ( Tp::RichPresenceAccessControl  newValue)
inline

Asynchronous setter for the remote object property LocationAccessControl of type Tp::RichPresenceAccessControl.

The current access control mechanism and settings for this connection. Before publishing location for the first time, if this has not been set by a client, implementations SHOULD set it to be as restrictive as possible (an empty whitelist, if supported).

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceLocationInterface::requestPropertySupportedLocationFeatures ( ) const
inline

Asynchronous getter for the remote object property SupportedLocationFeatures of type uint.

Indicates the Location features supported by this connection. This property MAY be undefined before ConnectionInterface::Status becomes Connected, but MUST remain constant thereafter.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceLocationInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ContactLocations> Tp::Client::ConnectionInterfaceLocationInterface::GetLocations ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetLocations on the remote object.

Return the current locations of the given contacts, if they are already known. If any of the given contacts' locations are not known, request their current locations, but return immediately without waiting for a reply; if a reply with a non-empty location is later received for those contacts, the LocationUpdated() signal will be emitted for them.

This method is appropriate for "lazy" location finding, for instance displaying the location (if available) of everyone in your contact list.

For backwards compatibility, if this method is called by a client whose "interest count" for this interface, as defined by ConnectionInterface::AddClientInterest() , is zero, the Connection SHOULD behave as if AddClientInterest had been called for this interface just before that method call. Clients that do not explicitly call AddClientInterest SHOULD NOT call ConnectionInterface::RemoveClientInterest() either.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
The contacts whose locations should be returned or signalled.
timeoutThe timeout in milliseconds.
Returns
The contacts&apos; locations, if already known. Contacts whose 
locations are not already known are omitted from the mapping; 
contacts known to have no location information appear in the 
mapping with an empty Location dictionary.
QDBusPendingReply<QVariantMap> Tp::Client::ConnectionInterfaceLocationInterface::RequestLocation ( uint  contact,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestLocation on the remote object.

Return the current location of the given contact. If necessary, make a request to the server for up-to-date information, and wait for a reply. This method is appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contact
The contact whose location should be returned.
timeoutThe timeout in milliseconds.
Returns
The contact&apos;s location. It MAY be empty, indicating that no 
location information was found.
QDBusPendingReply Tp::Client::ConnectionInterfaceLocationInterface::SetLocation ( const QVariantMap &  location,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetLocation on the remote object.

Set the local user's own location.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
location
The location to advertise. If the user wants to obscure their exact 
location by reducing the precision or accuracy, clients MUST do 
this themselves, rather than relying on the connection manager to 
do so. Clients that interact with more than one connection SHOULD 
advertise the same reduced-accuracy location to all of them, so 
that contacts cannot obtain an undesirably accurate location by 
assuming that random errors have been added and averaging the 
locations advertised on multiple connections.
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfaceLocationInterface::LocationUpdated ( uint  contact,
const QVariantMap &  location 
)
signal

Represents the signal LocationUpdated on the remote object.

Emitted when a contact's location changes or becomes known.

Parameters
contact
The contact
location
The contact&apos;s location, or empty to indicate that nothing is 
known about the contact&apos;s location.
void Tp::Client::ConnectionInterfaceLocationInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01257.html0000644000175100017520000002533312530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceConferenceInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceConferenceInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceConferenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceConferenceInterface
ChannelInterfaceConferenceInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceConferenceInterface
ChannelInterfaceConferenceInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceConferenceInterface
ChannelInterfaceConferenceInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceConferenceInterfaceexplicit
ChannelInterfaceConferenceInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceConferenceInterface
ChannelMerged(const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties)Tp::Client::ChannelInterfaceConferenceInterfacesignal
ChannelRemoved(const QDBusObjectPath &channel, const QVariantMap &details)Tp::Client::ChannelInterfaceConferenceInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceConferenceInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
requestPropertyChannels() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
requestPropertyInitialChannels() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
requestPropertyInitialInviteeHandles() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
requestPropertyInitialInviteeIDs() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
requestPropertyInvitationMessage() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
requestPropertyOriginalChannels() const Tp::Client::ChannelInterfaceConferenceInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceConferenceInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00040.html0000644000175100017520000001427412530426257021134 0ustar00kaffeinekaffeine00000000000000 roster/roster-item.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/roster-item.cpp
#include "roster-item.h"
#include "_gen/roster-item.moc.hpp"
#include <TelepathyQt/Presence>
using namespace Tp;
RosterItem::RosterItem(const ContactPtr &contact, QListWidget *parent)
: QObject(parent),
QListWidgetItem(parent),
mContact(contact)
{
onContactChanged();
connect(contact.data(),
SIGNAL(aliasChanged(QString)),
SLOT(onContactChanged()));
connect(contact.data(),
SIGNAL(presenceChanged(Tp::Presence)),
SLOT(onContactChanged()));
connect(contact.data(),
SIGNAL(subscriptionStateChanged(Tp::Contact::PresenceState)),
SLOT(onContactChanged()));
connect(contact.data(),
SIGNAL(publishStateChanged(Tp::Contact::PresenceState,QString)),
SLOT(onContactChanged()));
connect(contact.data(),
SIGNAL(blockStatusChanged(bool)),
SLOT(onContactChanged()));
}
RosterItem::~RosterItem()
{
}
void RosterItem::onContactChanged()
{
QString status = mContact->presence().status();
// I've asked to see the contact presence
if (mContact->subscriptionState() == Contact::PresenceStateAsk) {
setText(QString(QLatin1String("%1 (%2) (awaiting approval)")).arg(mContact->id()).arg(status));
// The contact asked to see my presence
} else if (mContact->publishState() == Contact::PresenceStateAsk) {
setText(QString(QLatin1String("%1 (%2) (pending approval)")).arg(mContact->id()).arg(status));
} else if (mContact->subscriptionState() == Contact::PresenceStateNo &&
mContact->publishState() == Contact::PresenceStateNo) {
setText(QString(QLatin1String("%1 (unknown)")).arg(mContact->id()));
} else {
setText(QString(QLatin1String("%1 (%2)")).arg(mContact->id()).arg(status));
}
if (mContact->isBlocked()) {
setText(QString(QLatin1String("%1 (blocked)")).arg(text()));
}
emit changed();
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01001.html0000644000175100017520000004440712530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ConnectionManager Member List

This is the complete list of members for Tp::ConnectionManager, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::ConnectionManagerprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< ConnectionManager >
channelFactory() const Tp::ConnectionManager
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< ConnectionManager >
connectionFactory() const Tp::ConnectionManager
ConnectionManager(const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::ConnectionManagerprotected
contactFactory() const Tp::ConnectionManager
create(const QDBusConnection &bus, const QString &name)Tp::ConnectionManagerstatic
create(const QString &name, const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::ConnectionManagerstatic
create(const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::ConnectionManagerstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureCoreTp::ConnectionManagerstatic
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< ConnectionManager >inline
hasProtocol(const QString &protocolName) const Tp::ConnectionManager
interface() constTp::OptionalInterfaceFactory< ConnectionManager >inline
interfaces() constTp::OptionalInterfaceFactory< ConnectionManager >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< ConnectionManager >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
listNames(const QDBusConnection &bus=QDBusConnection::sessionBus())Tp::ConnectionManagerstatic
missingFeatures() const Tp::ReadyObjectvirtual
nameTp::ConnectionManager
name() const Tp::ConnectionManager
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< ConnectionManager >inline
OptionalInterfaceFactory(ConnectionManager *this_)Tp::OptionalInterfaceFactory< ConnectionManager >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
protocol(const QString &protocolName) const Tp::ConnectionManager
protocolsTp::ConnectionManager
protocols() const Tp::ConnectionManager
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< ConnectionManager >inlineprotected
StatelessDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatelessDBusProxy
supportedProtocolsTp::ConnectionManager
supportedProtocols() const Tp::ConnectionManager
~ConnectionManager()Tp::ConnectionManagervirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< ConnectionManager >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatelessDBusProxy()Tp::StatelessDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00776_source.html0000644000175100017520000003411212530426257022525 0ustar00kaffeinekaffeine00000000000000 pending-handles.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-handles.h
1 
23 #ifndef _TelepathyQt_pending_handles_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_handles_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/PendingOperation>
32 #include <TelepathyQt/Types>
33 
34 #include <QHash>
35 #include <QString>
36 #include <QStringList>
37 
38 #include <TelepathyQt/Types>
39 
40 namespace Tp
41 {
42 
43 class PendingHandles;
44 class ReferencedHandles;
45 
46 class TP_QT_EXPORT PendingHandles : public PendingOperation
47 {
48  Q_OBJECT
49  Q_DISABLE_COPY(PendingHandles)
50 
51 public:
52  ~PendingHandles();
53 
54  ConnectionPtr connection() const;
55 
56  HandleType handleType() const;
57 
58  bool isRequest() const;
59 
60  bool isReference() const;
61 
62  const QStringList &namesRequested() const;
63 
64  QStringList validNames() const;
65 
66  QHash<QString, QPair<QString, QString> > invalidNames() const;
67 
68  const UIntList &handlesToReference() const;
69 
70  ReferencedHandles handles() const;
71 
72  UIntList invalidHandles() const;
73 
74 private Q_SLOTS:
75  TP_QT_NO_EXPORT void onRequestHandlesFinished(QDBusPendingCallWatcher *watcher);
76  TP_QT_NO_EXPORT void onHoldHandlesFinished(QDBusPendingCallWatcher *watcher);
77  TP_QT_NO_EXPORT void onRequestHandlesFallbackFinished(QDBusPendingCallWatcher *watcher);
78  TP_QT_NO_EXPORT void onHoldHandlesFallbackFinished(QDBusPendingCallWatcher *watcher);
79 
80 private:
81  friend class ConnectionLowlevel;
82 
83  TP_QT_NO_EXPORT PendingHandles(const ConnectionPtr &connection, HandleType handleType,
84  const QStringList &names);
85  TP_QT_NO_EXPORT PendingHandles(const ConnectionPtr &connection, HandleType handleType,
86  const UIntList &handles, const UIntList &alreadyHeld, const UIntList &notYetHeld);
87  TP_QT_NO_EXPORT PendingHandles(const QString &errorName, const QString &errorMessage);
88 
89  struct Private;
90  friend struct Private;
91  Private *mPriv;
92 };
93 
94 } // Tp
95 
96 #endif
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
The PendingHandles class represents the parameters of and the reply to an asynchronous handle request...
Definition: pending-handles.h:46
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
The ConnectionLowlevel class extends Connection with support to low-level features.
Definition: connection-lowlevel.h:43


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00355.html0000644000175100017520000002627212530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Filter< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFilter, GenericPropertyFilter, etc. More...

#include <TelepathyQt/Filter>

Inherits Tp::RefCounted.

Inherited by Tp::GenericPropertyFilter< Account >, Tp::AndFilter< T >, Tp::GenericCapabilityFilter< T >, Tp::GenericPropertyFilter< T >, Tp::NotFilter< T >, and Tp::OrFilter< T >.

Public Member Functions

virtual ~Filter ()
 
virtual bool isValid () const
 
virtual bool matches (const SharedPtr< T > &t) const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 Filter ()
 

Detailed Description

template<class T>
class Tp::Filter< T >

The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFilter, GenericPropertyFilter, etc.

Constructor & Destructor Documentation

template<class T >
virtual Tp::Filter< T >::~Filter ( )
inlinevirtual
template<class T >
Tp::Filter< T >::Filter ( )
inlineprotected

Member Function Documentation

template<class T >
virtual bool Tp::Filter< T >::matches ( const SharedPtr< T > &  t) const
inlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01316.html0000644000175100017520000002160112530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceServicePointInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceServicePointInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceServicePointInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceServicePointInterface
ConnectionInterfaceServicePointInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceServicePointInterface
ConnectionInterfaceServicePointInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceServicePointInterface
ConnectionInterfaceServicePointInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceServicePointInterfaceexplicit
ConnectionInterfaceServicePointInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceServicePointInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceServicePointInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceServicePointInterfaceinline
requestPropertyKnownServicePoints() const Tp::Client::ConnectionInterfaceServicePointInterfaceinline
ServicePointsChanged(const Tp::ServicePointInfoList &servicePoints)Tp::Client::ConnectionInterfaceServicePointInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ConnectionInterfaceServicePointInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01070.html0000644000175100017520000001341212530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingContactInfo Member List

This is the complete list of members for Tp::PendingContactInfo, including all inherited members.

contact() const Tp::PendingContactInfo
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
infoFields() const Tp::PendingContactInfo
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingContactInfo()Tp::PendingContactInfo
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/dir_6a0ad83b73160d92798e0df0d91b99f2.html0000644000175100017520000000520012530426260025456 0ustar00kaffeinekaffeine00000000000000 TelepathyQt Directory Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
TelepathyQt Directory Reference

Directories

directory  _gen
 

Files

file  build/TelepathyQt/global.h [code]
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00772_source.html0000644000175100017520000002654312530426257022532 0ustar00kaffeinekaffeine00000000000000 pending-dbus-tube-connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-dbus-tube-connection.h
1 
22 #ifndef _TelepathyQt_pending_dbus_tube_connection_h_HEADER_GUARD_
23 #define _TelepathyQt_pending_dbus_tube_connection_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/PendingOperation>
30 #include <TelepathyQt/OutgoingDBusTubeChannel>
31 
32 namespace Tp {
33 
34 class PendingString;
35 
36 class TP_QT_EXPORT PendingDBusTubeConnection : public PendingOperation
37 {
38  Q_OBJECT
39  Q_DISABLE_COPY(PendingDBusTubeConnection)
40 
41 public:
42  virtual ~PendingDBusTubeConnection();
43 
44  QString address() const;
45 
46  bool allowsOtherUsers() const;
47 
48 private Q_SLOTS:
49  TP_QT_NO_EXPORT void onConnectionFinished(Tp::PendingOperation *op);
50  TP_QT_NO_EXPORT void onStateChanged(Tp::TubeChannelState state);
51  TP_QT_NO_EXPORT void onChannelInvalidated(Tp::DBusProxy *proxy,
52  const QString &errorName,
53  const QString &errorMessage);
54 
55 private:
56  TP_QT_NO_EXPORT PendingDBusTubeConnection(PendingString *string,
57  bool allowOtherUsers, const QVariantMap &parameters,
58  const DBusTubeChannelPtr &object);
59  TP_QT_NO_EXPORT PendingDBusTubeConnection(const QString &errorName, const QString &errorMessage,
60  const DBusTubeChannelPtr &object);
61 
62  struct Private;
63  friend class OutgoingDBusTubeChannel;
65  friend struct Private;
66  Private *mPriv;
67 };
68 
69 }
70 
71 #endif
Definition: pending-dbus-tube-connection.h:36
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
TubeChannelState
Definition: build/TelepathyQt/_gen/constants.h:3729
The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel of type DBusTube...
Definition: outgoing-dbus-tube-channel.h:35
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube...
Definition: incoming-dbus-tube-channel.h:35
The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method...
Definition: pending-string.h:37


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00915.html0000644000175100017520000002034212530426257021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AccountFactory Member List

This is the complete list of members for Tp::AccountFactory, including all inherited members.

AccountFactory(const QDBusConnection &bus, const Features &features)Tp::AccountFactoryprotected
addFeature(const Feature &feature)Tp::FixedFeatureFactory
addFeatures(const Features &features)Tp::FixedFeatureFactory
cachedProxy(const QString &busName, const QString &objectPath) const Tp::DBusProxyFactoryprotected
construct(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const Tp::AccountFactoryprotectedvirtual
create(const QDBusConnection &bus, const Features &features=Features())Tp::AccountFactorystatic
dbusConnection() const Tp::DBusProxyFactory
DBusProxyFactory(const QDBusConnection &bus)Tp::DBusProxyFactoryprotected
features() const Tp::FixedFeatureFactory
featuresFor(const DBusProxyPtr &proxy) const Tp::FixedFeatureFactoryprotectedvirtual
finalBusNameFrom(const QString &uniqueOrWellKnown) const Tp::AccountFactoryprotectedvirtual
FixedFeatureFactory(const QDBusConnection &bus)Tp::FixedFeatureFactoryprotected
initialPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
nowHaveProxy(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotected
proxy(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const Tp::AccountFactory
readyPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
RefCounted()Tp::RefCountedinline
~AccountFactory()Tp::AccountFactoryvirtual
~DBusProxyFactory()Tp::DBusProxyFactoryvirtual
~FixedFeatureFactory()Tp::FixedFeatureFactoryvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00414.html0000644000175100017520000003161212530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::NotFilter< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The NotFilter class provides a generic filter object to be used in conjunction of other filters. More...

#include <TelepathyQt/NotFilter>

Inherits Tp::Filter< T >.

Public Member Functions

virtual ~NotFilter ()
 
virtual bool isValid () const
 
virtual bool matches (const SharedPtr< T > &t) const
 
SharedPtr< const Filter< T > > filter () const
 
- Public Member Functions inherited from Tp::Filter< T >
virtual ~Filter ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SharedPtr< NotFilter< T > > create (const SharedPtr< const Filter< T > > &filter=SharedPtr< const Filter< T > >())
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Filter< T >
 Filter ()
 

Detailed Description

template<class T>
class Tp::NotFilter< T >

The NotFilter class provides a generic filter object to be used in conjunction of other filters.

The NotFilter will match if its given filter does not match its criteria.

Constructor & Destructor Documentation

template<class T >
virtual Tp::NotFilter< T >::~NotFilter ( )
inlinevirtual

Member Function Documentation

template<class T >
static SharedPtr<NotFilter<T> > Tp::NotFilter< T >::create ( const SharedPtr< const Filter< T > > &  filter = SharedPtr<const Filter<T> >())
inlinestatic
template<class T >
virtual bool Tp::NotFilter< T >::isValid ( ) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
virtual bool Tp::NotFilter< T >::matches ( const SharedPtr< T > &  t) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
SharedPtr<const Filter<T> > Tp::NotFilter< T >::filter ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01385.html0000644000175100017520000000757212530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfacePowerSavingAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfacePowerSavingAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
PowerSavingActive() const Tp::Service::ConnectionInterfacePowerSavingAdaptor
PowerSavingChanged(bool active)Tp::Service::ConnectionInterfacePowerSavingAdaptorsignal
SetPowerSaving(bool activate, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfacePowerSavingAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00169.html0000644000175100017520000010406212530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::CaptchaAuthentication Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The CaptchaAuthentication class exposes CaptchaAuthentication's features for channels implementing it. More...

#include <TelepathyQt/CaptchaAuthentication>

Inherits Tp::Object.

Public Types

enum  ChallengeType {
  NoChallenge, OCRChallenge, AudioRecognitionChallenge, PictureQuestionChallenge,
  PictureRecognitionChallenge, TextQuestionChallenge, SpeechQuestionChallenge, SpeechRecognitionChallenge,
  VideoQuestionChallenge, VideoRecognitionChallenge, UnknownChallenge
}
 

Public Slots

Tp::PendingOperationcancel (Tp::CaptchaCancelReason reason, const QString &message=QString())
 

Signals

void statusChanged (Tp::CaptchaStatus status)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~CaptchaAuthentication ()
 
ChannelPtr channel () const
 
bool canRetry () const
 
Tp::CaptchaStatus status () const
 
QString error () const
 
Connection::ErrorDetails errorDetails () const
 
Tp::PendingCaptchasrequestCaptchas (const QStringList &preferredMimeTypes=QStringList(), ChallengeTypes preferredTypes=~ChallengeTypes(NoChallenge))
 
Tp::PendingOperationanswer (uint id, const QString &answer)
 
Tp::PendingOperationanswer (const Tp::CaptchaAnswers &response)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The CaptchaAuthentication class exposes CaptchaAuthentication's features for channels implementing it.

A ServerAuthentication channel can implement a CaptchaAuthentication interface: this class exposes all the features this interface provides in a high-level fashion. It is a mechanism for retrieving a captcha challenge from a connection manager and answering it.

This class is meant to be used just during authentication phase. It is useful just for platform-level handlers which are meant to handle authentication - if you are implementing a client which is meant to live in a Telepathy-aware platform, you probably won't need to handle this unless you have very special needs.

Note that CaptchaAuthentication cannot be instantiated directly, instead the accessor method from ServerAuthenticationChannel (ServerAuthenticationChannel::captchaAuthentication) should be used.

See Asynchronous Object Model, Shared Pointer Usage

Member Enumeration Documentation

Enumerator
NoChallenge 
OCRChallenge 
AudioRecognitionChallenge 
PictureQuestionChallenge 
PictureRecognitionChallenge 
TextQuestionChallenge 
SpeechQuestionChallenge 
SpeechRecognitionChallenge 
VideoQuestionChallenge 
VideoRecognitionChallenge 
UnknownChallenge 

Constructor & Destructor Documentation

Tp::CaptchaAuthentication::~CaptchaAuthentication ( )
virtual

Class destructor.

Member Function Documentation

Tp::ChannelPtr Tp::CaptchaAuthentication::channel ( ) const

Return the channel associated with this captcha.

CaptchaAuthentication is just a representation of an interface which can be implemented by a ServerAuthentication channel. This function will return the channel implementing the interface represented by this instance.

Note that it is currently guaranteed the ChannelPtr returned by this function will be a ServerAuthenticationChannel.

Returns
The channel implementing the CaptchaAuthentication interface represented by this instance.
bool Tp::CaptchaAuthentication::canRetry ( ) const

Return whether this channel supports updating its captchas or not.

Some protocols allow their captchas to be reloaded providing new data to the user; for example, in case the image provided is not easily readable. This function checks if this instance supports such a feature.

Note that in case this function returns true, requestCaptchas can be called safely after a failed answer attempt.

Returns
true if a new captcha can be fetched from this channel, false otherwise.
Tp::CaptchaStatus Tp::CaptchaAuthentication::status ( ) const

Return the current status of the captcha.

Returns
The current status of the captcha.
QString Tp::CaptchaAuthentication::error ( ) const

Return the code of the last error happened on the interface.

Returns
An error code describing the last error occurred.
See Also
errorDetails
Connection::ErrorDetails Tp::CaptchaAuthentication::errorDetails ( ) const

Return the details of the last error happened on the interface.

Returns
Further details describing the last error occurred.
See Also
error
PendingCaptchas * Tp::CaptchaAuthentication::requestCaptchas ( const QStringList &  preferredMimeTypes = QStringList(),
ChallengeTypes  preferredTypes = ~ChallengeTypes(NoChallenge) 
)

Request captcha challenges from the connection manager.

Even if most protocols usually provide a single captcha challenge (OCR), for a variety of reasons some of them could provide a number of different challenge types, requiring one or more of them to be answered.

This method initiates a request to the connection manager for obtaining the most compatible captcha challenges available. It allows to supply a number of supported mimetypes and types, so that the request will fail if the CM is unable to provide a challenge compatible with what the handler supports, or will provide the best one available otherwise.

Please note that all the challenges returned by this request must be answered in order for the authentication to succeed.

Note that if the CM supports retrying the captcha, this function can also be used to load a new set of captchas. In general, if canRetry returns true, one can expect this function to always return a different set of challenges which invalidates any other obtained previously.

Parameters
preferredMimeTypesA list of mimetypes supported by the handler, or an empty list if every mimetype can be supported.
preferredTypesA list of challenge types supported by the handler.
Returns
A PendingCaptchas which will emit PendingCaptchas::finished when the request has been completed and all the payloads have been downloaded.
See Also
canRetry
cancel
answer
Tp::PendingOperation * Tp::CaptchaAuthentication::answer ( uint  id,
const QString &  response 
)

Overloaded function. Convenience method when just a single captcha requires to be answered.

Note that you need to answer only the last set of challenges returned, in case requestCaptchas was invoked multiple times.

Please note that if this operation succeeds, the channel will be closed right after.

Parameters
idThe id of the challenge being answered.
responseThe answer of this challenge.
Returns
A PendingOperation which will emit PendingOperation::finished upon the outcome of the answer procedure. Upon success, the operation will complete once the channel is closed.
See Also
requestCaptchas
answer
Tp::PendingOperation * Tp::CaptchaAuthentication::answer ( const Tp::CaptchaAnswers response)

Answer a set of challenges.

Challenges obtained with requestCaptchas should be answered using this method. Note that every challenge returned by the last invocation of requestCaptchas must be answered in order for the operation to succeed.

Usually, most protocols will require just a single challenge to be answered: if that is the case, you can use the convenience overload.

Note that you need to answer only the last set of challenges returned, in case requestCaptchas was invoked multiple times.

Please note that if this operation succeeds, the channel will be closed right after.

Parameters
responseA set of answers mapped by their id to the challenges obtained previously
Returns
A PendingOperation which will emit PendingOperation::finished upon the outcome of the answer procedure. Upon success, the operation will complete once the channel is closed.
See Also
requestCaptchas
answer
void Tp::CaptchaAuthentication::statusChanged ( Tp::CaptchaStatus  status)
signal

Emitted when the value of status() changes.

See Also
status The new status of this CaptchaAuthentication.
Tp::PendingOperation * Tp::CaptchaAuthentication::cancel ( Tp::CaptchaCancelReason  reason,
const QString &  message = QString() 
)
slot

Cancel the current challenge.

Please note that if this operation succeeds, the channel will be closed right after.

Note that this function has not the same semantics as retry. The status of the CaptchaAuthentication will change to Failed even if the channel supports retrying. This function should be called only if the user refuses to answer any challenge. Instead, if the user wishes to retry, you should just call requestCaptchas one more time.

Parameters
reasonThe reason why the challenge has been cancelled.
messageA message detailing the cancel reason.
Returns
A PendingOperation which will emit PendingOperation::finished upon the outcome of the cancel procedure. Upon success, the operation will complete once the channel is closed.
See Also
requestCaptchas


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00984.html0000644000175100017520000001253612530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Callback7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00483.html0000644000175100017520000002313212530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor6 (FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
typedef R(* Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
typedef R Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::PtrFunctor6 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
ResultType Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6 
) const
inline

Member Data Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
FunctionType Tp::PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00228.html0000644000175100017520000001371612530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelOriginatorMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelOriginatorMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QDBusObjectPath >.

Public Member Functions

 ChannelOriginatorMap ()
 
 ChannelOriginatorMap (const QMap< uint, QDBusObjectPath > &a)
 
ChannelOriginatorMapoperator= (const QMap< uint, QDBusObjectPath > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QDBusObjectPath>, but needed to have a discrete type in the Qt type system.

A mapping from members of a conference to the original 1-1 channel with that contact, if any. See OriginalChannels for details.

Constructor & Destructor Documentation

Tp::ChannelOriginatorMap::ChannelOriginatorMap ( )
inline
Tp::ChannelOriginatorMap::ChannelOriginatorMap ( const QMap< uint, QDBusObjectPath > &  a)
inline

Member Function Documentation

ChannelOriginatorMap& Tp::ChannelOriginatorMap::operator= ( const QMap< uint, QDBusObjectPath > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01199.html0000644000175100017520000000442312530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketAddressIPv6 Member List

This is the complete list of members for Tp::SocketAddressIPv6, including all inherited members.

addressTp::SocketAddressIPv6
portTp::SocketAddressIPv6


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00542.html0000644000175100017520000001402612530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::VCardFieldAddressMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::VCardFieldAddressMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QString >.

Public Member Functions

 VCardFieldAddressMap ()
 
 VCardFieldAddressMap (const QMap< QString, QString > &a)
 
VCardFieldAddressMapoperator= (const QMap< QString, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QString>, but needed to have a discrete type in the Qt type system.

A mapping of vCard fields and addresses equivalent to a particular contact's protocol identifier. For instance, on XMPP this would contain x-jabber for all contacts, and x-facebook-id for contacts on Facebook's server.

Constructor & Destructor Documentation

Tp::VCardFieldAddressMap::VCardFieldAddressMap ( )
inline
Tp::VCardFieldAddressMap::VCardFieldAddressMap ( const QMap< QString, QString > &  a)
inline

Member Function Documentation

VCardFieldAddressMap& Tp::VCardFieldAddressMap::operator= ( const QMap< QString, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00297.html0000644000175100017520000005601112530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceMailNotificationAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceMailNotificationAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::MailURL RequestInboxURL (const QDBusMessage &dbusMessage)
 
Tp::MailURL RequestMailURL (const QString &ID, const QDBusVariant &URLData, const QDBusMessage &dbusMessage)
 

Signals

void MailsReceived (const Tp::MailList &mails)
 
void UnreadMailsChanged (uint count, const Tp::MailList &mailsAdded, const QStringList &mailsRemoved)
 

Public Member Functions

uint MailNotificationFlags () const
 
uint UnreadMailCount () const
 
Tp::MailList UnreadMails () const
 
QString MailAddress () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ConnectionInterfaceMailNotificationAdaptor::MailNotificationFlags ( ) const

Return the value of the exported D-Bus object property MailNotificationFlags of type uint.

Adaptees should export this property as a Qt property named 'mailNotificationFlags' with type uint.

Integer representing the bitwise-OR of supported features for e-mails notification on this server. This property MUST NOT change after the Connection becomes CONNECTED. This property indicates the behavior and availability of the other properties and signals within this interface. A connection manager that cannot at least set one of the flags in the Mail_Notification_Flags SHOULD NOT provide this interface.

Returns
The value of exported property MailNotificationFlags.
uint Tp::Service::ConnectionInterfaceMailNotificationAdaptor::UnreadMailCount ( ) const

Return the value of the exported D-Bus object property UnreadMailCount of type uint.

Adaptees should export this property as a Qt property named 'unreadMailCount' with type uint.

The number of unread messages in the Inbox. Change notification is via UnreadMailsChanged() .

This property is only useful if Supports_Unread_Mail_Count is set in the MailNotificationFlags ; otherwise, it MUST be zero.

If Thread_Based appears in the MailNotificationFlags , this property counts the number of threads, not the number of mails.

Note that this count MAY be bigger than the number of items in UnreadMails . See UnreadMails for more details.

Returns
The value of exported property UnreadMailCount.
Tp::MailList Tp::Service::ConnectionInterfaceMailNotificationAdaptor::UnreadMails ( ) const

Return the value of the exported D-Bus object property UnreadMails of type Tp::MailList.

Adaptees should export this property as a Qt property named 'unreadMails' with type Tp::MailList.

An array of unread Mails. Change notification is via UnreadMailsChanged. This property is only useful if Supports_Unread_Mails is set in MailNotificationFlags; otherwise, it MUST be an empty list. The array size MAY be shorter than UnreadMailCount. Some servers may limits the amount of detailed e-mails sent. This can significantly reduce the network traffic for large inbox. For this reason, it is normal that UnreadMailCount be bigger or equal to the size of this array.

Returns
The value of exported property UnreadMails.
QString Tp::Service::ConnectionInterfaceMailNotificationAdaptor::MailAddress ( ) const

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

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

A string representing the e-mail address of the account. The CMs MUST provide this information. In close integration of MailNotification with other e-mail services, the e-mail address can be used has a unique identifier for the account. Possible integration could be between Telepathy and Evolution where the e-mail address is the common information in both interfaces.

Returns
The value of exported property MailAddress.
Tp::MailURL Tp::Service::ConnectionInterfaceMailNotificationAdaptor::RequestInboxURL ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestInboxURL(const Tp::Service::ConnectionInterfaceMailNotificationAdaptor::RequestInboxURLContextPtr &context);

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

This method creates and returns a URL and an optional POST data that allow opening the Inbox folder of a webmail account. This URL MAY contain tokens with a short lifetime, so clients SHOULD request a new URL for each visit to the webmail interface. This method is implemented only if the Supports_Request_Inbox_URL flag is set in MailNotificationFlags. We are not using properties here because the tokens are unsuitable for sharing between clients, and network round-trips may be required to obtain the information that leads to authentication free webmail access.

Returns
A struture containing a URL and optional additional data to open a 
webmail client, without re-authentication if possible.
Tp::MailURL Tp::Service::ConnectionInterfaceMailNotificationAdaptor::RequestMailURL ( const QString &  ID,
const QDBusVariant &  URLData,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestMailURL(const QString& ID, const QDBusVariant& URLData, const Tp::Service::ConnectionInterfaceMailNotificationAdaptor::RequestMailURLContextPtr &context);

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

This method creates and returns a URL and optional POST data that allow opening a specific mail in a webmail interface. This method is implemented only if Supports_Request_Mail_URL flag is set in MailNotificationFlags. See RequestInboxURL for design rationale.

Parameters
ID
The mail&apos;s id as found in the Mail structure, or the empty 
string if no id key was provided.
URLData
Whatever url-data was found in the Mail structure, or the boolean 
value False (D-Bus type &apos;b&apos;) if no url-data was provided 
in the Mail.
Returns
A struture that contains a URL and optional additional data to open 
a webmail client, without re-authentication if possible.
void Tp::Service::ConnectionInterfaceMailNotificationAdaptor::MailsReceived ( const Tp::MailList mails)
signal

Represents the exported D-Bus signal MailsReceived on this object.

Adaptees should export this signal as a Qt signal with the following signature: void mailsReceived(const Tp::MailList& mails);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
mails

An array of Mails. Those e-mail MUST NOT have the "id" key.

On connections that emit this signal, it's impossible to tell when a mail has been removed, and hence when "id" has become invalid.

void Tp::Service::ConnectionInterfaceMailNotificationAdaptor::UnreadMailsChanged ( uint  count,
const Tp::MailList mailsAdded,
const QStringList &  mailsRemoved 
)
signal

Represents the exported D-Bus signal UnreadMailsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void unreadMailsChanged(uint count, const Tp::MailList& mailsAdded, const QStringList& mailsRemoved);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
count
Number of unread messages in the inbox (the new value of 
UnreadMailCount).
mailsAdded

A list of Mail that are being added or updated in \\\ \\link requestPropertyUnreadMails() UnreadMails \\endlink \\htmlonly .

Mails may be updated when the URL information (URL and POST data) have changed, or senders were added or removed from an e-mail thread.

If the Supports_Unread_Mails flag is not set, this list MUST be empty, even if Count has increased.

Parameters
mailsRemoved
A list of e-mail IDs that are being removed from UnreadMails. If 
the Supports_Unread_Mails flag is not set, this list MUST be empty, 
even if Count has decreased.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01258.html0000644000175100017520000002560212530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceDTMFInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceDTMFInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceDTMFInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceDTMFInterface
ChannelInterfaceDTMFInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceDTMFInterface
ChannelInterfaceDTMFInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceDTMFInterface
ChannelInterfaceDTMFInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceDTMFInterfaceexplicit
ChannelInterfaceDTMFInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceDTMFInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceDTMFInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MultipleTones(const QString &tones, int timeout=-1)Tp::Client::ChannelInterfaceDTMFInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceDTMFInterfaceinline
requestPropertyCurrentlySendingTones() const Tp::Client::ChannelInterfaceDTMFInterfaceinline
requestPropertyDeferredTones() const Tp::Client::ChannelInterfaceDTMFInterfaceinline
requestPropertyInitialTones() const Tp::Client::ChannelInterfaceDTMFInterfaceinline
SendingTones(const QString &tones)Tp::Client::ChannelInterfaceDTMFInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
StartTone(uint streamID, uchar event, int timeout=-1)Tp::Client::ChannelInterfaceDTMFInterfaceinlineslot
staticInterfaceName()Tp::Client::ChannelInterfaceDTMFInterfaceinlinestatic
StoppedTones(bool cancelled)Tp::Client::ChannelInterfaceDTMFInterfacesignal
StopTone(uint streamID, int timeout=-1)Tp::Client::ChannelInterfaceDTMFInterfaceinlineslot
TonesDeferred(const QString &tones)Tp::Client::ChannelInterfaceDTMFInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01002.html0000644000175100017520000005140212530426260021117 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Connection Member List

This is the complete list of members for Tp::Connection, including all inherited members.

accountBalance() const Tp::Connection
accountBalanceChanged(const Tp::CurrencyAmount &accountBalance)Tp::Connectionsignal
actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Connectionprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Connection >
capabilities() const Tp::Connection
channelFactory() const Tp::Connection
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Connection >
cmName() const Tp::Connection
Connection(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature)Tp::Connectionprotected
contactFactory() const Tp::Connection
contactManager() const Tp::Connection
create(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::Connectionstatic
create(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::Connectionstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
errorDetails() const Tp::Connection
FeatureAccountBalanceTp::Connectionstatic
FeatureConnectedTp::Connectionstatic
FeatureCoreTp::Connectionstatic
FeatureRosterTp::Connectionstatic
FeatureRosterGroupsTp::Connectionstatic
FeatureSelfContactTp::Connectionstatic
FeatureSimplePresenceTp::Connectionstatic
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Connection >inline
interface() constTp::OptionalInterfaceFactory< Connection >inline
interfaces() constTp::OptionalInterfaceFactory< Connection >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Connection >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Connection >inline
OptionalInterfaceFactory(Connection *this_)Tp::OptionalInterfaceFactory< Connection >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
protocolName() const Tp::Connection
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
selfContact() const Tp::Connection
selfContactChanged()Tp::Connectionsignal
selfHandle() const Tp::Connection
selfHandleChanged(uint newHandle)Tp::Connectionsignal
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Connection >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
status() const Tp::Connection
statusChanged(Tp::ConnectionStatus newStatus)Tp::Connectionsignal
statusReason() const Tp::Connection
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Connection()Tp::Connectionvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Connection >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00356.html0000644000175100017520000004070512530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::FixedFeatureFactory Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set of features for all constructed proxies. More...

#include <TelepathyQt/FixedFeatureFactory>

Inherits Tp::DBusProxyFactory.

Inherited by Tp::AccountFactory, and Tp::ConnectionFactory.

Public Member Functions

virtual ~FixedFeatureFactory ()
 
Features features () const
 
void addFeature (const Feature &feature)
 
void addFeatures (const Features &features)
 
- Public Member Functions inherited from Tp::DBusProxyFactory
virtual ~DBusProxyFactory ()
 
const QDBusConnection & dbusConnection () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 FixedFeatureFactory (const QDBusConnection &bus)
 
virtual Features featuresFor (const DBusProxyPtr &proxy) const
 
- Protected Member Functions inherited from Tp::DBusProxyFactory
 DBusProxyFactory (const QDBusConnection &bus)
 
DBusProxyPtr cachedProxy (const QString &busName, const QString &objectPath) const
 
PendingReadynowHaveProxy (const DBusProxyPtr &proxy) const
 
virtual QString finalBusNameFrom (const QString &uniqueOrWellKnown) const =0
 
virtual PendingOperationinitialPrepare (const DBusProxyPtr &proxy) const
 
virtual PendingOperationreadyPrepare (const DBusProxyPtr &proxy) const
 

Detailed Description

The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set of features for all constructed proxies.

Constructor & Destructor Documentation

Tp::FixedFeatureFactory::~FixedFeatureFactory ( )
virtual

Class destructor.

Tp::FixedFeatureFactory::FixedFeatureFactory ( const QDBusConnection &  bus)
protected

Class constructor.

The intention for storing the bus here is that it generally doesn't make sense to construct proxies for multiple buses in the same context. Allowing that would lead to more complex keying needs in the cache, as well.

Parameters
busThe D-Bus bus connection for the objects constructed using this factory.

Member Function Documentation

Features Tp::FixedFeatureFactory::features ( ) const

Gets the features this factory will make ready on constructed proxies.

Returns
The set of features.
void Tp::FixedFeatureFactory::addFeature ( const Feature feature)

Adds a single feature this factory will make ready on further constructed proxies.

No feature removal is provided, to guard against uncooperative modules removing features other modules have set and depend on.

Parameters
featureThe feature to add.
void Tp::FixedFeatureFactory::addFeatures ( const Features features)

Adds a set of features this factory will make ready on further constructed proxies.

No feature removal is provided, to guard against uncooperative modules removing features other modules have set and depend on.

Parameters
featuresThe features to add.
Features Tp::FixedFeatureFactory::featuresFor ( const DBusProxyPtr &  proxy) const
protectedvirtual

Fixed implementation of the per-proxy feature getter.

Returns
features(), irrespective of the actual proxy.

Implements Tp::DBusProxyFactory.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00758_source.html0000644000175100017520000002551012530426257022527 0ustar00kaffeinekaffeine00000000000000 pending-captchas.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-captchas.h
1 
23 #ifndef _TelepathyQt_pending_captcha_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_captcha_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/PendingOperation>
31 
32 #include <TelepathyQt/CaptchaAuthentication>
33 
34 #include <QPair>
35 
36 namespace Tp
37 {
38 
39 class Captcha;
40 
41 class TP_QT_EXPORT PendingCaptchas : public PendingOperation
42 {
43  Q_OBJECT
44  Q_DISABLE_COPY(PendingCaptchas)
45 
46 public:
47  virtual ~PendingCaptchas();
48 
49  Captcha captcha() const;
50  QList<Captcha> captchaList() const;
51  bool requiresMultipleCaptchas() const;
52 
53 private Q_SLOTS:
54  TP_QT_NO_EXPORT void onChannelInvalidated(Tp::DBusProxy *proxy,
55  const QString &errorName, const QString &errorMessage);
56  TP_QT_NO_EXPORT void onGetCaptchasWatcherFinished(QDBusPendingCallWatcher *watcher);
57  TP_QT_NO_EXPORT void onGetCaptchaDataWatcherFinished(QDBusPendingCallWatcher *watcher);
58 
59 private:
60  TP_QT_NO_EXPORT PendingCaptchas(const QDBusPendingCall &call,
61  const QStringList &preferredMimeTypes,
62  CaptchaAuthentication::ChallengeTypes preferredTypes,
63  const CaptchaAuthenticationPtr &channel);
64  TP_QT_NO_EXPORT PendingCaptchas(
65  const QString &errorName, const QString &errorMessage,
66  const CaptchaAuthenticationPtr &channel);
67 
68  struct Private;
69  friend class CaptchaAuthentication;
70  friend struct Private;
71  Private *mPriv;
72 };
73 
74 }
75 
76 #endif // TP_PENDING_CAPTCHA_H
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The PendingCaptchas class represents an asynchronous operation for retrieving a captcha challenge fro...
Definition: pending-captchas.h:41
The Captcha class represents a Captcha ready to be answered.
Definition: captcha.h:37
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The CaptchaAuthentication class exposes CaptchaAuthentication&#39;s features for channels implementing it...
Definition: captcha-authentication.h:43


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01317.html0000644000175100017520000002376512530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceSimplePresenceInterface Member List

This is the complete list of members for Tp::Client::ConnectionInterfaceSimplePresenceInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ConnectionInterfaceSimplePresenceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceSimplePresenceInterface
ConnectionInterfaceSimplePresenceInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ConnectionInterfaceSimplePresenceInterface
ConnectionInterfaceSimplePresenceInterface(Tp::DBusProxy *proxy)Tp::Client::ConnectionInterfaceSimplePresenceInterface
ConnectionInterfaceSimplePresenceInterface(const Tp::Client::ConnectionInterface &mainInterface)Tp::Client::ConnectionInterfaceSimplePresenceInterfaceexplicit
ConnectionInterfaceSimplePresenceInterface(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)Tp::Client::ConnectionInterfaceSimplePresenceInterface
GetPresences(const Tp::UIntList &contacts, int timeout=-1)Tp::Client::ConnectionInterfaceSimplePresenceInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ConnectionInterfaceSimplePresenceInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
PresencesChanged(const Tp::SimpleContactPresences &presence)Tp::Client::ConnectionInterfaceSimplePresenceInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ConnectionInterfaceSimplePresenceInterfaceinline
requestPropertyMaximumStatusMessageLength() const Tp::Client::ConnectionInterfaceSimplePresenceInterfaceinline
requestPropertyStatuses() const Tp::Client::ConnectionInterfaceSimplePresenceInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetPresence(const QString &status, const QString &statusMessage, int timeout=-1)Tp::Client::ConnectionInterfaceSimplePresenceInterfaceinlineslot
staticInterfaceName()Tp::Client::ConnectionInterfaceSimplePresenceInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00100.html0000644000175100017520000006025712530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelChatStateInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Chat.State. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2< void, uint,
DBusError * > 
SetChatStateCallback
 

Public Member Functions

virtual ~BaseChannelChatStateInterface ()
 
QVariantMap immutableProperties () const
 
Tp::ChatStateMap chatStates () const
 
void setChatStates (const Tp::ChatStateMap &chatStates)
 
void setSetChatStateCallback (const SetChatStateCallback &cb)
 
void setChatState (uint state, DBusError *error)
 
void chatStateChanged (uint contact, uint state)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelChatStateInterfacePtr 
create ()
 
template<typename BaseChannelChatStateInterfaceSubclass >
static SharedPtr
< BaseChannelChatStateInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseChannelChatStateInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Chat.State.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelChatStateInterface::~BaseChannelChatStateInterface ( )
virtual

Class destructor.

Tp::BaseChannelChatStateInterface::BaseChannelChatStateInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseChannelChatStateInterfacePtr Tp::BaseChannelChatStateInterface::create ( )
inlinestatic
template<typename BaseChannelChatStateInterfaceSubclass >
static SharedPtr<BaseChannelChatStateInterfaceSubclass> Tp::BaseChannelChatStateInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelChatStateInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::ChatStateMap Tp::BaseChannelChatStateInterface::chatStates ( ) const
void Tp::BaseChannelChatStateInterface::setChatStates ( const Tp::ChatStateMap chatStates)
void Tp::BaseChannelChatStateInterface::setSetChatStateCallback ( const SetChatStateCallback cb)
void Tp::BaseChannelChatStateInterface::setChatState ( uint  state,
DBusError error 
)
void Tp::BaseChannelChatStateInterface::chatStateChanged ( uint  contact,
uint  state 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01071.html0000644000175100017520000002416712530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingContacts Member List

This is the complete list of members for Tp::PendingContacts, including all inherited members.

contacts() const Tp::PendingContacts
contactsToUpgrade() const Tp::PendingContacts
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
features() const Tp::PendingContacts
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
handles() const Tp::PendingContacts
identifiers() const Tp::PendingContacts
invalidHandles() const Tp::PendingContacts
invalidIdentifiers() const Tp::PendingContacts
invalidUris() const Tp::PendingContacts
invalidVCardAddresses() const Tp::PendingContacts
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isForHandles() const Tp::PendingContacts
isForIdentifiers() const Tp::PendingContacts
isForUris() const Tp::PendingContacts
isForVCardAddresses() const Tp::PendingContacts
isUpgrade() const Tp::PendingContacts
isValid() const Tp::PendingOperation
manager() const Tp::PendingContacts
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
uris() const Tp::PendingContacts
validIdentifiers() const Tp::PendingContacts
validUris() const Tp::PendingContacts
validVCardAddresses() const Tp::PendingContacts
vcardAddresses() const Tp::PendingContacts
vcardField() const Tp::PendingContacts
~PendingContacts()Tp::PendingContacts
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00916.html0000644000175100017520000005565612530426257021161 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AccountManager Member List

This is the complete list of members for Tp::AccountManager, including all inherited members.

accountFactory() const Tp::AccountManager
accountForObjectPath(const QString &path) const Tp::AccountManager
accountForPath(const QString &path) const Tp::AccountManager
AccountManager(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature)Tp::AccountManagerprotected
accountsByProtocol(const QString &protocolName) const Tp::AccountManager
accountsForObjectPaths(const QStringList &paths) const Tp::AccountManager
accountsForPaths(const QStringList &paths) const Tp::AccountManager
actualFeatures() const Tp::ReadyObjectvirtual
allAccounts() const Tp::AccountManager
audioCallAccounts() const Tp::AccountManager
baseInterface() const Tp::AccountManagerprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< AccountManager >
channelFactory() const Tp::AccountManager
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< AccountManager >
connectionFactory() const Tp::AccountManager
contactFactory() const Tp::AccountManager
create(const QDBusConnection &bus)Tp::AccountManagerstatic
create(const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::AccountManagerstatic
create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::AccountManagerstatic
createAccount(const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties=QVariantMap())Tp::AccountManager
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
disabledAccounts() const Tp::AccountManager
enabledAccounts() const Tp::AccountManager
FeatureCoreTp::AccountManagerstatic
fileTransferAccounts() const Tp::AccountManager
filterAccounts(const AccountFilterConstPtr &filter) const Tp::AccountManager
filterAccounts(const QVariantMap &filter) const Tp::AccountManager
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< AccountManager >inline
interface() constTp::OptionalInterfaceFactory< AccountManager >inline
interfaces() constTp::OptionalInterfaceFactory< AccountManager >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< AccountManager >
invalidAccounts() const Tp::AccountManager
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
newAccount(const Tp::AccountPtr &account)Tp::AccountManagersignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
offlineAccounts() const Tp::AccountManager
onlineAccounts() const Tp::AccountManager
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< AccountManager >inline
OptionalInterfaceFactory(AccountManager *this_)Tp::OptionalInterfaceFactory< AccountManager >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< AccountManager >inlineprotected
StatelessDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatelessDBusProxy
streamedMediaAudioCallAccounts() const Tp::AccountManager
streamedMediaCallAccounts() const Tp::AccountManager
streamedMediaVideoCallAccounts() const Tp::AccountManager
streamedMediaVideoCallWithAudioAccounts() const Tp::AccountManager
supportedAccountProperties() const Tp::AccountManager
textChatAccounts() const Tp::AccountManager
textChatroomAccounts() const Tp::AccountManager
validAccounts() const Tp::AccountManager
videoCallAccounts() const Tp::AccountManager
~AccountManager()Tp::AccountManagervirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< AccountManager >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatelessDBusProxy()Tp::StatelessDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00415.html0000644000175100017520000002255712530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Object Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Object class provides an object with property notification. More...

#include <TelepathyQt/Object>

Inherits QObject, and Tp::RefCounted.

Inherited by Tp::AbstractDBusServiceInterface, Tp::AccountSet, Tp::CaptchaAuthentication, Tp::ClientRegistrar, Tp::Contact, Tp::ContactManager, Tp::DBusProxy, Tp::DBusService, Tp::ProfileManager, and Tp::StreamedMediaStream.

Signals

void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

The Object class provides an object with property notification.

Constructor & Destructor Documentation

Tp::Object::~Object ( )
virtual

Class destructor.

Tp::Object::Object ( )
protected

Construct a new Object object.

Member Function Documentation

void Tp::Object::propertyChanged ( const QString &  propertyName)
signal
void Tp::Object::notify ( const char *  propertyName)
protected

Notify that a property named propertyName changed.

This method will emit propertyChanged() for propertyName.

Todo:
Use for more classes beyond Account. Most importantly Contact.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00754_source.html0000644000175100017520000003345312530426257022530 0ustar00kaffeinekaffeine00000000000000 outgoing-stream-tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
outgoing-stream-tube-channel.h
1 
22 #ifndef _TelepathyQt_outgoing_stream_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_outgoing_stream_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/StreamTubeChannel>
30 #include <TelepathyQt/PendingOperation>
31 
32 class QHostAddress;
33 class QTcpServer;
34 class QLocalServer;
35 
36 namespace Tp
37 {
38 
39 class TP_QT_EXPORT OutgoingStreamTubeChannel : public StreamTubeChannel
40 {
41  Q_OBJECT
42  Q_DISABLE_COPY(OutgoingStreamTubeChannel)
43 
44 public:
45  static const Feature FeatureCore;
46 
47  static OutgoingStreamTubeChannelPtr create(const ConnectionPtr &connection,
48  const QString &objectPath, const QVariantMap &immutableProperties);
49 
50  virtual ~OutgoingStreamTubeChannel();
51 
52  PendingOperation *offerTcpSocket(const QHostAddress &address, quint16 port,
53  const QVariantMap &parameters = QVariantMap());
54  PendingOperation *offerTcpSocket(const QTcpServer *server,
55  const QVariantMap &parameters = QVariantMap());
56 
57  PendingOperation *offerUnixSocket(const QString &socketAddress,
58  const QVariantMap &parameters = QVariantMap(), bool requireCredentials = false);
59  PendingOperation *offerUnixSocket(const QLocalServer *server,
60  const QVariantMap &parameters = QVariantMap(), bool requireCredentials = false);
61 
62  QHash<uint, Tp::ContactPtr> contactsForConnections() const;
63 
64  QHash<QPair<QHostAddress,quint16>, uint> connectionsForSourceAddresses() const;
65  QHash<uchar, uint> connectionsForCredentials() const;
66 
67 protected:
68  OutgoingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath,
69  const QVariantMap &immutableProperties,
70  const Feature &coreFeature = OutgoingStreamTubeChannel::FeatureCore);
71 
72 private Q_SLOTS:
73  TP_QT_NO_EXPORT void onNewRemoteConnection(uint contactId,
74  const QDBusVariant &parameter, uint connectionId);
75  TP_QT_NO_EXPORT void onContactsRetrieved(const QUuid &uuid,
76  const QList<Tp::ContactPtr> &contacts);
77  TP_QT_NO_EXPORT void onConnectionClosed(uint connectionId,
78  const QString &errorName, const QString &errorMessage);
79 
80 private:
81  struct Private;
82  friend struct PendingOpenTube;
83  friend struct Private;
84  Private *mPriv;
85 };
86 
87 }
88 
89 #endif
The OutgoingStreamTubeChannel class represents an outgoing Telepathy channel of type StreamTube...
Definition: outgoing-stream-tube-channel.h:39
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The StreamTubeChannel class represents a Telepathy channel of type StreamTube.
Definition: stream-tube-channel.h:36
static const Feature FeatureCore
Definition: outgoing-stream-tube-channel.h:45


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01386.html0000644000175100017520000001162712530426260021143 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceRequestsAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceRequestsAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ChannelClosed(const QDBusObjectPath &removed)Tp::Service::ConnectionInterfaceRequestsAdaptorsignal
Channels() const Tp::Service::ConnectionInterfaceRequestsAdaptor
CreateChannel(const QVariantMap &request, const QDBusMessage &dbusMessage, QVariantMap &properties)Tp::Service::ConnectionInterfaceRequestsAdaptorslot
dbusConnection() const Tp::AbstractAdaptor
EnsureChannel(const QVariantMap &request, const QDBusMessage &dbusMessage, QDBusObjectPath &channel, QVariantMap &properties)Tp::Service::ConnectionInterfaceRequestsAdaptorslot
NewChannels(const Tp::ChannelDetailsList &channels)Tp::Service::ConnectionInterfaceRequestsAdaptorsignal
RequestableChannelClasses() const Tp::Service::ConnectionInterfaceRequestsAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01130.html0000644000175100017520000000435312530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AliasPair Member List

This is the complete list of members for Tp::AliasPair, including all inherited members.

aliasTp::AliasPair
handleTp::AliasPair


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00985.html0000644000175100017520000001634712530426260021153 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CapabilitiesBase Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00750_source.html0000644000175100017520000002006212530426257022514 0ustar00kaffeinekaffeine00000000000000 outgoing-dbus-tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
outgoing-dbus-tube-channel.h
1 
22 #ifndef _TelepathyQt_outgoing_dbus_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_outgoing_dbus_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/DBusTubeChannel>
30 
31 namespace Tp {
32 
33 class PendingDBusTubeConnection;
34 
35 class TP_QT_EXPORT OutgoingDBusTubeChannel : public DBusTubeChannel
36 {
37  Q_OBJECT
38  Q_DISABLE_COPY(OutgoingDBusTubeChannel)
39 
40 public:
41  static OutgoingDBusTubeChannelPtr create(const ConnectionPtr &connection,
42  const QString &objectPath, const QVariantMap &immutableProperties);
43 
44  virtual ~OutgoingDBusTubeChannel();
45 
46  PendingDBusTubeConnection *offerTube(const QVariantMap &parameters, bool allowOtherUsers = false);
47 
48 protected:
49  OutgoingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath,
50  const QVariantMap &immutableProperties);
51 
52 private:
53  struct Private;
54  friend struct Private;
55  Private *mPriv;
56 };
57 
58 }
59 
60 #endif
Definition: pending-dbus-tube-connection.h:36
The DBusTubeChannel class represents a Telepathy channel of type DBusTube.
Definition: dbus-tube-channel.h:34
The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel of type DBusTube...
Definition: outgoing-dbus-tube-channel.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00484.html0000644000175100017520000002362112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/functors.h>

Inherits Tp::BaseFunctor.

Public Types

typedef R(* FunctionType )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
 
typedef R ResultType
 

Public Member Functions

 PtrFunctor7 (FunctionType fn)
 
ResultType operator() (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
 

Public Attributes

FunctionType fn
 

Member Typedef Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
typedef R(* Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
typedef R Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::ResultType

Constructor & Destructor Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::PtrFunctor7 ( FunctionType  fn)
inline

Member Function Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
ResultType Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::operator() ( Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6,
Arg7  a7 
) const
inline

Member Data Documentation

template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
FunctionType Tp::PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::fn


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00229.html0000644000175100017520000017267512530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelRequest Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ChannelRequest class represents a Telepathy channel request. More...

#include <TelepathyQt/ChannelRequest>

Inherits Tp::StatefulDBusProxy, and Tp::OptionalInterfaceFactory< ChannelRequest >.

Signals

void failed (const QString &errorName, const QString &errorMessage)
 
void succeeded (const Tp::ChannelPtr &channel)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~ChannelRequest ()
 
AccountPtr account () const
 
QDateTime userActionTime () const
 
QString preferredHandler () const
 
QualifiedPropertyValueMapList requests () const
 
ChannelRequestHints hints () const
 
QVariantMap immutableProperties () const
 
PendingOperationcancel ()
 
ChannelPtr channel () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< ChannelRequest >
 OptionalInterfaceFactory (ChannelRequest *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static ChannelRequestPtr create (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
static ChannelRequestPtr create (const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 

Protected Member Functions

 ChannelRequest (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
 ChannelRequest (const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties)
 
Client::ChannelRequestInterfacebaseInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< ChannelRequest >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< ChannelRequest >
enum  InterfaceSupportedChecking
 

Detailed Description

The ChannelRequest class represents a Telepathy channel request.

A channel request is an object in the channel dispatcher representing an ongoing request for some channels to be created or found. There can be any number of channel request objects at the same time.

A channel request can be cancelled by any client (not just the one that requested it). This means that the channel dispatcher will close the resulting channel, or refrain from requesting it at all, rather than dispatching it to a handler.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::ChannelRequest::~ChannelRequest ( )
virtual

Class destructor.

Tp::ChannelRequest::ChannelRequest ( const QDBusConnection &  bus,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
protected

Construct a new channel request object using the given bus and the given factories.

Parameters
busQDBusConnection to use.
objectPathThe channel request object path.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
immutablePropertiesThe immutable properties of the channel request.
Returns
A ChannelRequestPtr object pointing to the newly created ChannelRequest.
Tp::ChannelRequest::ChannelRequest ( const AccountPtr &  account,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
protected

Construct a new channel request object using the given account.

The constructed instance will use the factories from the account.

Parameters
accountAccount to use.
objectPathThe channel request object path.
immutablePropertiesThe immutable properties of the channel request.
Returns
A ChannelRequestPtr object pointing to the newly created ChannelRequest.

Member Function Documentation

ChannelRequestPtr Tp::ChannelRequest::create ( const QDBusConnection &  bus,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
static

Create a new channel request object using the given bus and the given factories.

Parameters
busQDBusConnection to use.
objectPathThe channel request object path.
immutablePropertiesThe channel request immutable properties.
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ChannelRequestPtr object pointing to the newly created ChannelRequest object.
ChannelRequestPtr Tp::ChannelRequest::create ( const AccountPtr &  account,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new channel request object for the given account.

The returned instance will use factories from the account.

Parameters
accountThe account that the request was made through.
objectPathThe channel request object path.
immutablePropertiesThe channel request immutable properties.
Returns
A ChannelRequestPtr object pointing to the newly created ChannelRequest object.
AccountPtr Tp::ChannelRequest::account ( ) const

Return the account on which this request was made.

This method can be used even before the ChannelRequest is ready, in which case the account object corresponding to the immutable properties is returned. In this case, the Account object is not necessarily ready either. This is useful for eg. matching ChannelRequests from ClientHandlerInterface::addRequest() with existing accounts in the application: either by object path, or if account factories are in use, even by object identity.

If the account is not provided in the immutable properties, this will only return a non-NULL AccountPtr once ChannelRequest::FeatureCore is ready on this object.

Returns
A pointer to the Account object.
QDateTime Tp::ChannelRequest::userActionTime ( ) const

Return the time at which the user action occurred, or 0 if this channel request is for some reason not involving user action.

Unix developers: this corresponds to the _NET_WM_USER_TIME property in EWMH.

This property is set when the channel request is created, and can never change.

This method can be used even before the ChannelRequest is ready: in this case, the user action time from the immutable properties, if any, is returned.

Returns
The time at which the user action occurred as QDateTime.
QString Tp::ChannelRequest::preferredHandler ( ) const

Return either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.

This property is set when the channel request is created, and can never change.

This method can be used even before the ChannelRequest is ready: in this case, the preferred handler from the immutable properties, if any, is returned.

Returns
The preferred handler, or an empty string if any handler would be acceptable.
QualifiedPropertyValueMapList Tp::ChannelRequest::requests ( ) const

Return the desirable properties for the channel or channels to be created, as specified when placing the request in the first place.

This property is set when the channel request is created, and can never change.

This method can be used even before the ChannelRequest is ready: in this case, the requested channel properties from the immutable properties, if any, are returned. This is useful for e.g. matching ChannelRequests from ClientHandlerInterface::addRequest() with existing requests in the application (by the target ID or handle, most likely).

Returns
The requested desirable channel properties as a list of QualifiedPropertyValueMap objects.
ChannelRequestHints Tp::ChannelRequest::hints ( ) const

Return the dictionary of metadata provided by the channel requester when requesting the channel.

This property is set when the channel request is created, and can never change.

This method can be used even before the ChannelRequest is ready: in this case, the requested channel properties from the immutable properties, if any, are returned. This is useful for e.g. matching ChannelRequests from ClientHandlerInterface::addRequest() with existing requests in the application (by the target ID or handle, most likely).

See Also
Account::supportsRequestHints()
Returns
The hints in the request as a ChannelRequestHints object, if any.
QVariantMap Tp::ChannelRequest::immutableProperties ( ) const

Return all of the immutable properties passed to this object when created.

This is useful for e.g. getting to domain-specific properties of channel requests.

Returns
The immutable properties as QVariantMap.
PendingOperation * Tp::ChannelRequest::cancel ( )

Cancel the channel request.

If failed() is emitted in response to this method, the error will be TP_QT_ERROR_CANCELLED.

If the channel has already been dispatched to a handler, then it's too late to call this method, and the channel request will no longer exist.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
ChannelPtr Tp::ChannelRequest::channel ( ) const

Return the Channel which this request succeeded with, if any.

This will only ever be populated if Account::requestsSucceedWithChannel() is true, and succeeded() has already been emitted on this ChannelRequest. Note that a PendingChannelRequest being successfully finished already implies succeeded() has been emitted.

Returns
A pointer to the Channel object, or a null ChannelPtr if there isn't any.
void Tp::ChannelRequest::failed ( const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted when the channel request has failed. No further methods must not be called on it.

Parameters
errorNameThe name of a D-Bus error.
errorMessageThe error message.
See Also
succeeded()
void Tp::ChannelRequest::succeeded ( const Tp::ChannelPtr &  channel)
signal

Emitted when the channel request has succeeded. No further methods must not be called on it.

The channel parameter can be used to observe the channel resulting from the request (e.g. for it getting closed). The pointer may be NULL if the Channel Dispatcher implementation is too old. Whether a non-NULL channel can be expected can be checked with Account::requestsSucceedWithChannel().

If there is a channel, it will be of the subclass determined by and made ready (or not) according to the settings of the ChannelFactory on the Account the request was made through.

Parameters
channelPointer to a proxy for the resulting channel, if the Channel Dispatcher reported it.
See Also
failed()
Client::ChannelRequestInterface * Tp::ChannelRequest::baseInterface ( ) const
protected

Return the ChannelRequestInterface for this ChannelRequest class. This method is protected since the convenience methods provided by this class should always be used instead of the interface by users of the class.

Returns
A pointer to the existing Client::ChannelRequestInterface object for this ChannelRequest object.

Member Data Documentation

const Feature Tp::ChannelRequest::FeatureCore
static

Feature representing the core that needs to become ready to make the ChannelRequest object usable.

Note that this feature must be enabled in order to use most ChannelRequest methods.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00543.html0000644000175100017520000000731212530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::VideoResolution Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::VideoResolution Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint width
 
uint height
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

uint Tp::VideoResolution::width

With of the video stream.

uint Tp::VideoResolution::height

Height of the video stream.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00298.html0000644000175100017520000012477512530426260021155 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceMailNotificationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceMailNotificationInterface Class Reference

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< Tp::MailURLRequestInboxURL (int timeout=-1)
 
QDBusPendingReply< Tp::MailURLRequestMailURL (const QString &ID, const QDBusVariant &URLData, int timeout=-1)
 

Signals

void MailsReceived (const Tp::MailList &mails)
 
void UnreadMailsChanged (uint count, const Tp::MailList &mailsAdded, const QStringList &mailsRemoved)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceMailNotificationInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceMailNotificationInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceMailNotificationInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceMailNotificationInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceMailNotificationInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyMailNotificationFlags () const
 
Tp::PendingVariantrequestPropertyUnreadMailCount () const
 
Tp::PendingVariantrequestPropertyUnreadMails () const
 
Tp::PendingVariantrequestPropertyMailAddress () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.MailNotification".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceMailNotificationInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceMailNotificationInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceMailNotificationInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceMailNotificationInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceMailNotificationInterface::ConnectionInterfaceMailNotificationInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceMailNotificationInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceMailNotificationInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.MailNotification", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceMailNotificationInterface::requestPropertyMailNotificationFlags ( ) const
inline

Asynchronous getter for the remote object property MailNotificationFlags of type uint.

Integer representing the bitwise-OR of supported features for e-mails notification on this server. This property MUST NOT change after the Connection becomes CONNECTED. This property indicates the behavior and availability of the other properties and signals within this interface. A connection manager that cannot at least set one of the flags in the Mail_Notification_Flags SHOULD NOT provide this interface.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceMailNotificationInterface::requestPropertyUnreadMailCount ( ) const
inline

Asynchronous getter for the remote object property UnreadMailCount of type uint.

The number of unread messages in the Inbox. Change notification is via UnreadMailsChanged() .

This property is only useful if Supports_Unread_Mail_Count is set in the MailNotificationFlags ; otherwise, it MUST be zero.

If Thread_Based appears in the MailNotificationFlags , this property counts the number of threads, not the number of mails.

Note that this count MAY be bigger than the number of items in UnreadMails . See UnreadMails for more details.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceMailNotificationInterface::requestPropertyUnreadMails ( ) const
inline

Asynchronous getter for the remote object property UnreadMails of type Tp::MailList.

An array of unread Mails. Change notification is via UnreadMailsChanged. This property is only useful if Supports_Unread_Mails is set in MailNotificationFlags; otherwise, it MUST be an empty list. The array size MAY be shorter than UnreadMailCount. Some servers may limits the amount of detailed e-mails sent. This can significantly reduce the network traffic for large inbox. For this reason, it is normal that UnreadMailCount be bigger or equal to the size of this array.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceMailNotificationInterface::requestPropertyMailAddress ( ) const
inline

Asynchronous getter for the remote object property MailAddress of type QString.

A string representing the e-mail address of the account. The CMs MUST provide this information. In close integration of MailNotification with other e-mail services, the e-mail address can be used has a unique identifier for the account. Possible integration could be between Telepathy and Evolution where the e-mail address is the common information in both interfaces.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceMailNotificationInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::MailURL> Tp::Client::ConnectionInterfaceMailNotificationInterface::RequestInboxURL ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method RequestInboxURL on the remote object.

This method creates and returns a URL and an optional POST data that allow opening the Inbox folder of a webmail account. This URL MAY contain tokens with a short lifetime, so clients SHOULD request a new URL for each visit to the webmail interface. This method is implemented only if the Supports_Request_Inbox_URL flag is set in MailNotificationFlags. We are not using properties here because the tokens are unsuitable for sharing between clients, and network round-trips may be required to obtain the information that leads to authentication free webmail access.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
A struture containing a URL and optional additional data to open a 
webmail client, without re-authentication if possible.
QDBusPendingReply<Tp::MailURL> Tp::Client::ConnectionInterfaceMailNotificationInterface::RequestMailURL ( const QString &  ID,
const QDBusVariant &  URLData,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestMailURL on the remote object.

This method creates and returns a URL and optional POST data that allow opening a specific mail in a webmail interface. This method is implemented only if Supports_Request_Mail_URL flag is set in MailNotificationFlags. See RequestInboxURL for design rationale.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
ID
The mail&apos;s id as found in the Mail structure, or the empty 
string if no id key was provided.
URLData
Whatever url-data was found in the Mail structure, or the boolean 
value False (D-Bus type &apos;b&apos;) if no url-data was provided 
in the Mail.
timeoutThe timeout in milliseconds.
Returns
A struture that contains a URL and optional additional data to open 
a webmail client, without re-authentication if possible.
void Tp::Client::ConnectionInterfaceMailNotificationInterface::MailsReceived ( const Tp::MailList mails)
signal

Represents the signal MailsReceived on the remote object.

Emitted when new e-mails messages arrive to the inbox associated with this connection. This signal is used for protocols that are not able to maintain the UnreadMails list, but do provide real-time notification about newly arrived e-mails. It MUST NOT be emitted unless Emits_Mails_Received is set in MailNotificationFlags.

Parameters
mails

An array of Mails. Those e-mail MUST NOT have the "id" key.

On connections that emit this signal, it's impossible to tell when a mail has been removed, and hence when "id" has become invalid.

void Tp::Client::ConnectionInterfaceMailNotificationInterface::UnreadMailsChanged ( uint  count,
const Tp::MailList mailsAdded,
const QStringList &  mailsRemoved 
)
signal

Represents the signal UnreadMailsChanged on the remote object.

Emitted when UnreadMails or UnreadMailCount have changed. It MUST NOT be emited if Supports_Unread_Mail_Count flag is not set in MailNotificationFlags .

Mails_Added and Mails_Removed MUST be empty if the Supports_Unread_Mails flag is not set.

Parameters
count
Number of unread messages in the inbox (the new value of 
UnreadMailCount).
mailsAdded

A list of Mail that are being added or updated in UnreadMails .

Mails may be updated when the URL information (URL and POST data) have changed, or senders were added or removed from an e-mail thread.

If the Supports_Unread_Mails flag is not set, this list MUST be empty, even if Count has increased.

mailsRemoved
A list of e-mail IDs that are being removed from UnreadMails. If 
the Supports_Unread_Mails flag is not set, this list MUST be empty, 
even if Count has decreased.
void Tp::Client::ConnectionInterfaceMailNotificationInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01259.html0000644000175100017520000002075212530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceDestroyableInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceDestroyableInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceDestroyableInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceDestroyableInterface
ChannelInterfaceDestroyableInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceDestroyableInterface
ChannelInterfaceDestroyableInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceDestroyableInterface
ChannelInterfaceDestroyableInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceDestroyableInterfaceexplicit
ChannelInterfaceDestroyableInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceDestroyableInterface
Destroy(int timeout=-1)Tp::Client::ChannelInterfaceDestroyableInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceDestroyableInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceDestroyableInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceDestroyableInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00042.html0000644000175100017520000000704212530426257021131 0ustar00kaffeinekaffeine00000000000000 roster/roster-item.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/roster-item.h
#ifndef _TelepathyQt_examples_roster_roster_item_h_HEADER_GUARD_
#define _TelepathyQt_examples_roster_roster_item_h_HEADER_GUARD_
#include <TelepathyQt/Types>
#include <TelepathyQt/Contact>
#include <QListWidgetItem>
#include <QString>
class RosterItem : public QObject, public QListWidgetItem
{
Q_OBJECT
public:
RosterItem(const Tp::ContactPtr &contact,
QListWidget *parent = 0);
~RosterItem();
Tp::ContactPtr contact() const { return mContact; }
Q_SIGNALS:
void changed();
private Q_SLOTS:
void onContactChanged();
private:
Tp::ContactPtr mContact;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01003.html0000644000175100017520000001466612530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Connection::ErrorDetails Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00357.html0000644000175100017520000003137212530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller0< Functor, R > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller0< Functor, R > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller0< Functor, R >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller0 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller0< Functor, R >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller0< Functor, R >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R >
typedef R Tp::FunctorCaller0< Functor, R >::ResultType
template<class Functor , class R >
typedef R(* Tp::FunctorCaller0< Functor, R >::InvokeType)(AbstractFunctorCaller *)

Constructor & Destructor Documentation

template<class Functor , class R >
Tp::FunctorCaller0< Functor, R >::FunctorCaller0 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R >
static ResultType Tp::FunctorCaller0< Functor, R >::invoke ( AbstractFunctorCaller call)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01318.html0000644000175100017520000002062512530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::DebugInterface Member List

This is the complete list of members for Tp::Client::DebugInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
DebugInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DebugInterface
DebugInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DebugInterface
DebugInterface(Tp::DBusProxy *proxy)Tp::Client::DebugInterface
GetMessages(int timeout=-1)Tp::Client::DebugInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::DebugInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NewDebugMessage(double time, const QString &domain, uint level, const QString &message)Tp::Client::DebugInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::DebugInterfaceinline
requestPropertyEnabled() const Tp::Client::DebugInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyEnabled(bool newValue)Tp::Client::DebugInterfaceinline
staticInterfaceName()Tp::Client::DebugInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00101.html0000644000175100017520000007072012530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelConferenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Conference. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Member Functions

virtual ~BaseChannelConferenceInterface ()
 
QVariantMap immutableProperties () const
 
Tp::ObjectPathList channels () const
 
Tp::ObjectPathList initialChannels () const
 
Tp::UIntList initialInviteeHandles () const
 
QStringList initialInviteeIDs () const
 
QString invitationMessage () const
 
ChannelOriginatorMap originalChannels () const
 
void mergeChannel (const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties)
 
void removeChannel (const QDBusObjectPath &channel, const QVariantMap &details)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelConferenceInterfacePtr 
create (Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap())
 
template<typename BaseChannelConferenceInterfaceSubclass >
static SharedPtr
< BaseChannelConferenceInterfaceSubclass > 
create (Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap())
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Conference.

Constructor & Destructor Documentation

Tp::BaseChannelConferenceInterface::~BaseChannelConferenceInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelConferenceInterfacePtr Tp::BaseChannelConferenceInterface::create ( Tp::ObjectPathList  initialChannels = Tp::ObjectPathList(),
Tp::UIntList  initialInviteeHandles = Tp::UIntList(),
QStringList  initialInviteeIDs = QStringList(),
QString  invitationMessage = QString(),
ChannelOriginatorMap  originalChannels = ChannelOriginatorMap() 
)
inlinestatic
template<typename BaseChannelConferenceInterfaceSubclass >
static SharedPtr<BaseChannelConferenceInterfaceSubclass> Tp::BaseChannelConferenceInterface::create ( Tp::ObjectPathList  initialChannels = Tp::ObjectPathList(),
Tp::UIntList  initialInviteeHandles = Tp::UIntList(),
QStringList  initialInviteeIDs = QStringList(),
QString  invitationMessage = QString(),
ChannelOriginatorMap  originalChannels = ChannelOriginatorMap() 
)
inlinestatic
QVariantMap Tp::BaseChannelConferenceInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::ObjectPathList Tp::BaseChannelConferenceInterface::channels ( ) const
Tp::ObjectPathList Tp::BaseChannelConferenceInterface::initialChannels ( ) const
Tp::UIntList Tp::BaseChannelConferenceInterface::initialInviteeHandles ( ) const
QStringList Tp::BaseChannelConferenceInterface::initialInviteeIDs ( ) const
QString Tp::BaseChannelConferenceInterface::invitationMessage ( ) const
ChannelOriginatorMap Tp::BaseChannelConferenceInterface::originalChannels ( ) const
void Tp::BaseChannelConferenceInterface::mergeChannel ( const QDBusObjectPath &  channel,
uint  channelHandle,
const QVariantMap &  properties 
)
void Tp::BaseChannelConferenceInterface::removeChannel ( const QDBusObjectPath &  channel,
const QVariantMap &  details 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01072.html0000644000175100017520000001354412530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingDBusTubeConnection Member List

This is the complete list of members for Tp::PendingDBusTubeConnection, including all inherited members.

address() const Tp::PendingDBusTubeConnection
allowsOtherUsers() const Tp::PendingDBusTubeConnection
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingDBusTubeConnection()Tp::PendingDBusTubeConnectionvirtual
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00917.html0000644000175100017520000001402112530426257021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AccountPropertyFilter Member List

This is the complete list of members for Tp::AccountPropertyFilter, including all inherited members.

addProperty(const QString &propertyName, const QVariant &propertyValue)Tp::GenericPropertyFilter< Account >inline
create()Tp::AccountPropertyFilterinlinestatic
filter() constTp::GenericPropertyFilter< Account >inline
Filter()Tp::Filter< T >inlineprotected
GenericPropertyFilter()Tp::GenericPropertyFilter< Account >inlineprotected
isValid() const Tp::AccountPropertyFiltervirtual
matches(const SharedPtr< Account > &t) constTp::GenericPropertyFilter< Account >inlinevirtual
Tp::Filter::matches(const SharedPtr< T > &t) const Tp::Filter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
setProperties(const QVariantMap &filter)Tp::GenericPropertyFilter< Account >inline
~AccountPropertyFilter()Tp::AccountPropertyFilter
~Filter()Tp::Filter< T >inlinevirtual
~GenericPropertyFilter()Tp::GenericPropertyFilter< Account >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00416.html0000644000175100017520000001400512530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::ObjectImmutablePropertiesMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ObjectImmutablePropertiesMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QDBusObjectPath, QVariantMap >.

Public Member Functions

 ObjectImmutablePropertiesMap ()
 
 ObjectImmutablePropertiesMap (const QMap< QDBusObjectPath, QVariantMap > &a)
 
ObjectImmutablePropertiesMapoperator= (const QMap< QDBusObjectPath, QVariantMap > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QDBusObjectPath, QVariantMap>, but needed to have a discrete type in the Qt type system.

A mapping from object path to the immutable properties of the object.

Constructor & Destructor Documentation

Tp::ObjectImmutablePropertiesMap::ObjectImmutablePropertiesMap ( )
inline
Tp::ObjectImmutablePropertiesMap::ObjectImmutablePropertiesMap ( const QMap< QDBusObjectPath, QVariantMap > &  a)
inline

Member Function Documentation

ObjectImmutablePropertiesMap& Tp::ObjectImmutablePropertiesMap::operator= ( const QMap< QDBusObjectPath, QVariantMap > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01387.html0000644000175100017520000000711212530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceServicePointAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceServicePointAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
KnownServicePoints() const Tp::Service::ConnectionInterfaceServicePointAdaptor
ServicePointsChanged(const Tp::ServicePointInfoList &servicePoints)Tp::Service::ConnectionInterfaceServicePointAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00170.html0000644000175100017520000001665212530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::CaptchaInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CaptchaInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint ID
 
QString type
 
QString label
 
uint flags
 
QStringList availableMIMETypes
 

Detailed Description

Structure type generated from the specification.

A struct containing information regarding a single captcha mechanism.

Member Data Documentation

uint Tp::CaptchaInfo::ID

The ID with which to reference this captcha method when retrieving its data and answering it. They are unique within this channel instance only.

QString Tp::CaptchaInfo::type

The type of challenge as defined by XEP-0158. For instance, the commonly-used "type the letters/words you see in this image" challenge is represented by ocr

QString Tp::CaptchaInfo::label

A human-readable label for the challenge, as defined in XEP-0158.

If the server does not supply a label for a challenge of type other than qa, connection managers SHOULD set Label to an empty string instead of generating their own text. If the Label is an empty string, the Handler SHOULD replace it with a generic label in the user's locale, such as the strings suggested in XEP-0158 (for instance, Enter the text you see for ocr challenges). The Handler MAY use those generic labels in any case, as per the Internationalization Considerations section of XEP-0158.

Connection managers are not usually localized, so text generated by the connection manager would be in English, regardless of the user's locale. The Handler is better-placed to generate a generic Label in the user's locale.

For challenges of type qa, the Label is a plain-text question for the user to answer. The connection manager SHOULD NOT provide an empty Label; if it does, the Handler SHOULD treat that challenge as impossible, and SHOULD NOT attempt to display it.

uint Tp::CaptchaInfo::flags

One flag defined: Required. Most captchas will have no flags.

QStringList Tp::CaptchaInfo::availableMIMETypes

A list of MIME types the server is offering to provide for this captcha method.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01131.html0000644000175100017520000000434312530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Avatar Member List

This is the complete list of members for Tp::Avatar, including all inherited members.

avatarDataTp::Avatar
MIMETypeTp::Avatar


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00736_source.html0000644000175100017520000004244312530426257022527 0ustar00kaffeinekaffeine00000000000000 message-content-part.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
message-content-part.h
1 
23 #ifndef _TelepathyQt_message_content_part_h_HEADER_GUARD_
24 #define _TelepathyQt_message_content_part_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class TP_QT_EXPORT MessageContentPart
37 {
38 public:
43 
44  bool isValid() const { return mPriv.constData() != 0; }
45 
46  MessageContentPart &operator=(const MessageContentPart &other);
47  bool operator==(const MessageContentPart &other) const;
48 
49  MessagePart barePart() const;
50 
51 private:
52  struct Private;
53  friend struct Private;
54  QSharedDataPointer<Private> mPriv;
55 };
56 
57 class TP_QT_EXPORT MessageContentPartList :
58  public QList<MessageContentPart>
59 {
60 public:
63  {
64  append(MessageContentPart(mp));
65  }
67  {
68  Q_FOREACH (const MessagePart &mp, mps) {
69  append(MessageContentPart(mp));
70  }
71  }
73  {
74  append(mcp);
75  }
76  MessageContentPartList(const QList<MessageContentPart> &other)
77  : QList<MessageContentPart>(other)
78  {
79  }
80 
82  {
83  MessagePartList list;
84  Q_FOREACH (const MessageContentPart &mcp, *this) {
85  list.append(mcp.barePart());
86  }
87  return list;
88  }
89 };
90 
91 } // Tp
92 
93 Q_DECLARE_METATYPE(Tp::MessageContentPart);
94 Q_DECLARE_METATYPE(Tp::MessageContentPartList);
95 
96 #endif
MessagePartList bareParts() const
Definition: message-content-part.h:81
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
MessageContentPartList(const MessageContentPart &mcp)
Definition: message-content-part.h:72
MessageContentPartList(const MessagePartList &mps)
Definition: message-content-part.h:66
MessagePart barePart() const
Definition: message-content-part.cpp:82
MessageContentPartList(const MessagePart &mp)
Definition: message-content-part.h:62
The MessageContentPartList class represents a list of MessageContentPart.
Definition: message-content-part.h:57
MessageContentPartList(const QList< MessageContentPart > &other)
Definition: message-content-part.h:76
MessageContentPartList()
Definition: message-content-part.h:61
QList< MessagePart > MessagePartList
Definition: build/TelepathyQt/_gen/types.h:2031
The MessageContentPart class represents a Telepathy message part.
Definition: message-content-part.h:36
bool isValid() const
Definition: message-content-part.h:44
Definition: build/TelepathyQt/_gen/types.h:2013


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00986.html0000644000175100017520000002320412530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CaptchaAuthentication Member List

This is the complete list of members for Tp::CaptchaAuthentication, including all inherited members.

answer(uint id, const QString &answer)Tp::CaptchaAuthentication
answer(const Tp::CaptchaAnswers &response)Tp::CaptchaAuthentication
AudioRecognitionChallenge enum valueTp::CaptchaAuthentication
cancel(Tp::CaptchaCancelReason reason, const QString &message=QString())Tp::CaptchaAuthenticationslot
canRetry() const Tp::CaptchaAuthentication
ChallengeType enum nameTp::CaptchaAuthentication
channel() const Tp::CaptchaAuthentication
error() const Tp::CaptchaAuthentication
errorDetails() const Tp::CaptchaAuthentication
NoChallenge enum valueTp::CaptchaAuthentication
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
OCRChallenge enum valueTp::CaptchaAuthentication
PictureQuestionChallenge enum valueTp::CaptchaAuthentication
PictureRecognitionChallenge enum valueTp::CaptchaAuthentication
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
requestCaptchas(const QStringList &preferredMimeTypes=QStringList(), ChallengeTypes preferredTypes=~ChallengeTypes(NoChallenge))Tp::CaptchaAuthentication
SpeechQuestionChallenge enum valueTp::CaptchaAuthentication
SpeechRecognitionChallenge enum valueTp::CaptchaAuthentication
status() const Tp::CaptchaAuthentication
statusChanged(Tp::CaptchaStatus status)Tp::CaptchaAuthenticationsignal
TextQuestionChallenge enum valueTp::CaptchaAuthentication
UnknownChallenge enum valueTp::CaptchaAuthentication
VideoQuestionChallenge enum valueTp::CaptchaAuthentication
VideoRecognitionChallenge enum valueTp::CaptchaAuthentication
~CaptchaAuthentication()Tp::CaptchaAuthenticationvirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00485.html0000644000175100017520000001372312530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::QualifiedPropertyValueMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::QualifiedPropertyValueMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 QualifiedPropertyValueMap ()
 
 QualifiedPropertyValueMap (const QMap< QString, QDBusVariant > &a)
 
QualifiedPropertyValueMapoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

A mapping from strings representing D-Bus properties (by their namespaced names) to their values.

Constructor & Destructor Documentation

Tp::QualifiedPropertyValueMap::QualifiedPropertyValueMap ( )
inline
Tp::QualifiedPropertyValueMap::QualifiedPropertyValueMap ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

QualifiedPropertyValueMap& Tp::QualifiedPropertyValueMap::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00732_source.html0000644000175100017520000000634312530426257022522 0ustar00kaffeinekaffeine00000000000000 media-session-handler.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
media-session-handler.h
1 
23 #ifndef _TelepathyQt_media_session_handler_h_HEADER_GUARD_
24 #define _TelepathyQt_media_session_handler_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
48 #include <TelepathyQt/_gen/cli-media-session-handler.h>
49 
50 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00544.html0000644000175100017520000004507712530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::WeakPtr< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::WeakPtr< T > Class Template Reference

The WeakPtr class holds a weak reference to an object managed by SharedPtr. More...

#include <TelepathyQt/WeakPtr>

Public Member Functions

 WeakPtr ()
 
 WeakPtr (T *d)
 
 WeakPtr (const WeakPtr< T > &o)
 
 WeakPtr (const SharedPtr< T > &o)
 
 ~WeakPtr ()
 
bool isNull () const
 
bool operator! () const
 
 operator UnspecifiedBoolType () const
 
WeakPtr< T > & operator= (const WeakPtr< T > &o)
 
WeakPtr< T > & operator= (const SharedPtr< T > &o)
 
void swap (WeakPtr< T > &o)
 
SharedPtr< T > toStrongRef () const
 

Friends

uint qHash (const WeakPtr< T > &ptr)
 

Detailed Description

template<class T>
class Tp::WeakPtr< T >

The WeakPtr class holds a weak reference to an object managed by SharedPtr.

Tp::WeakPtr is useful for example for breaking reference cycles which would result from using a Tp::SharedPtr for both ends of a pair of mutually linked objects to refer to each other.

See Shared Pointer Usage

Constructor & Destructor Documentation

template<class T>
Tp::WeakPtr< T >::WeakPtr ( )
inline
template<class T>
Tp::WeakPtr< T >::WeakPtr ( T *  d)
inlineexplicit
template<class T>
Tp::WeakPtr< T >::WeakPtr ( const WeakPtr< T > &  o)
inline
template<class T>
Tp::WeakPtr< T >::WeakPtr ( const SharedPtr< T > &  o)
inline
template<class T>
Tp::WeakPtr< T >::~WeakPtr ( )
inline

Member Function Documentation

template<class T>
bool Tp::WeakPtr< T >::isNull ( ) const
inline
template<class T>
bool Tp::WeakPtr< T >::operator! ( ) const
inline
template<class T>
Tp::WeakPtr< T >::operator UnspecifiedBoolType ( ) const
inline
template<class T>
WeakPtr<T>& Tp::WeakPtr< T >::operator= ( const WeakPtr< T > &  o)
inline
template<class T>
WeakPtr<T>& Tp::WeakPtr< T >::operator= ( const SharedPtr< T > &  o)
inline
template<class T>
void Tp::WeakPtr< T >::swap ( WeakPtr< T > &  o)
inline
template<class T>
SharedPtr<T> Tp::WeakPtr< T >::toStrongRef ( ) const
inline

Friends And Related Function Documentation

template<class T>
uint qHash ( const WeakPtr< T > &  ptr)
friend


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00299.html0000644000175100017520000002600012530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfacePowerSavingAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfacePowerSavingAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

void SetPowerSaving (bool activate, const QDBusMessage &dbusMessage)
 

Signals

void PowerSavingChanged (bool active)
 

Public Member Functions

bool PowerSavingActive () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ConnectionInterfacePowerSavingAdaptor::PowerSavingActive ( ) const

Return the value of the exported D-Bus object property PowerSavingActive of type bool.

Adaptees should export this property as a Qt property named 'powerSavingActive' with type bool.

True if protocol-level power saving features are currently activated. This property can be changed using the SetPowerSaving() method; change notifications is via the PowerSavingChanged() signal.

Returns
The value of exported property PowerSavingActive.
void Tp::Service::ConnectionInterfacePowerSavingAdaptor::SetPowerSaving ( bool  activate,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setPowerSaving(bool activate, const Tp::Service::ConnectionInterfacePowerSavingAdaptor::SetPowerSavingContextPtr &context);

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

Turn power saving mode on or off.

Depending on the device's activity level, the connection can have its power saving mode turned on or off.

Errors raised by this method indicate that power saving could not be enabled, which SHOULD NOT generally be treated as fatal.

If the CM cannot switch modes, either because of the protocol (NotImplemented), or because of the service (NotAvailable), Mission Control (or whoever manages this) should be made aware. The error could be ignored or, in the extreme, be fascist and disconnect the account.
Parameters
activate
True if protocol-level power saving features should be activated; 
False if they should be de-activated.
void Tp::Service::ConnectionInterfacePowerSavingAdaptor::PowerSavingChanged ( bool  active)
signal

Represents the exported D-Bus signal PowerSavingChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void powerSavingChanged(bool active);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
active
The new state of the power saving feature.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01004.html0000644000175100017520000002331212530426260021120 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactCapabilities Member List

This is the complete list of members for Tp::ContactCapabilities, including all inherited members.

allClassSpecs() const Tp::CapabilitiesBase
audioCalls() const Tp::CapabilitiesBase
CapabilitiesBase()Tp::CapabilitiesBase
CapabilitiesBase(const CapabilitiesBase &other)Tp::CapabilitiesBase
CapabilitiesBase(bool specificToContact)Tp::CapabilitiesBaseprotected
CapabilitiesBase(const RequestableChannelClassList &rccs, bool specificToContact)Tp::CapabilitiesBaseprotected
CapabilitiesBase(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)Tp::CapabilitiesBaseprotected
ContactCapabilities()Tp::ContactCapabilities
ContactCapabilities(bool specificToContact)Tp::ContactCapabilitiesprotected
ContactCapabilities(const RequestableChannelClassList &rccs, bool specificToContact)Tp::ContactCapabilitiesprotected
ContactCapabilities(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)Tp::ContactCapabilitiesprotected
dbusTubes(const QString &serviceName) const Tp::ContactCapabilities
dbusTubeServices() const Tp::ContactCapabilities
fileTransfers() const Tp::CapabilitiesBase
isSpecificToContact() const Tp::CapabilitiesBase
operator=(const CapabilitiesBase &other)Tp::CapabilitiesBase
streamedMediaAudioCalls() const Tp::CapabilitiesBase
streamedMediaCalls() const Tp::CapabilitiesBase
streamedMediaVideoCalls() const Tp::CapabilitiesBase
streamedMediaVideoCallsWithAudio() const Tp::CapabilitiesBase
streamTubes(const QString &service) const Tp::ContactCapabilities
streamTubeServices() const Tp::ContactCapabilities
textChats() const Tp::CapabilitiesBase
updateRequestableChannelClasses(const RequestableChannelClassList &rccs)Tp::CapabilitiesBaseprotectedvirtual
upgradingCalls() const Tp::CapabilitiesBase
upgradingStreamedMediaCalls() const Tp::CapabilitiesBase
videoCalls() const Tp::CapabilitiesBase
videoCallsWithAudio() const Tp::CapabilitiesBase
~CapabilitiesBase()Tp::CapabilitiesBasevirtual
~ContactCapabilities()Tp::ContactCapabilitiesvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00358.html0000644000175100017520000003217112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller1< Functor, R, Arg1 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller1< Functor, R, Arg1 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller1< Functor, R, Arg1 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller1 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller1< Functor, R, Arg1 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller1< Functor, R, Arg1 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 >
typedef R Tp::FunctorCaller1< Functor, R, Arg1 >::ResultType
template<class Functor , class R , class Arg1 >
typedef R(* Tp::FunctorCaller1< Functor, R, Arg1 >::InvokeType)(AbstractFunctorCaller *, Arg1)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 >
Tp::FunctorCaller1< Functor, R, Arg1 >::FunctorCaller1 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 >
static ResultType Tp::FunctorCaller1< Functor, R, Arg1 >::invoke ( AbstractFunctorCaller call,
Arg1  a1 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01319.html0000644000175100017520000002061512530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::MediaSessionHandlerInterface Member List

This is the complete list of members for Tp::Client::MediaSessionHandlerInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Error(uint errorCode, const QString &message, int timeout=-1)Tp::Client::MediaSessionHandlerInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::MediaSessionHandlerInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MediaSessionHandlerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::MediaSessionHandlerInterface
MediaSessionHandlerInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::MediaSessionHandlerInterface
MediaSessionHandlerInterface(Tp::DBusProxy *proxy)Tp::Client::MediaSessionHandlerInterface
NewStreamHandler(const QDBusObjectPath &streamHandler, uint ID, uint mediaType, uint direction)Tp::Client::MediaSessionHandlerInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Ready(int timeout=-1)Tp::Client::MediaSessionHandlerInterfaceinlineslot
requestAllProperties() const Tp::Client::MediaSessionHandlerInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::MediaSessionHandlerInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00102.html0000644000175100017520000006047512530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelGroupInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Group. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback3< void, const
Tp::UIntList &, const QString
&, DBusError * > 
RemoveMembersCallback
 
typedef Callback3< void, const
Tp::UIntList &, const QString
&, DBusError * > 
AddMembersCallback
 

Public Member Functions

virtual ~BaseChannelGroupInterface ()
 
QVariantMap immutableProperties () const
 
void setRemoveMembersCallback (const RemoveMembersCallback &cb)
 
void setAddMembersCallback (const AddMembersCallback &cb)
 
void addMembers (const Tp::UIntList &handles, const QStringList &identifiers)
 
void removeMembers (const Tp::UIntList &handles)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelGroupInterfacePtr create (ChannelGroupFlags initialFlags, uint selfHandle)
 
template<typename BaseChannelGroupInterfaceSubclass >
static SharedPtr
< BaseChannelGroupInterfaceSubclass > 
create (ChannelGroupFlags initialFlags, uint selfHandle)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Group.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelGroupInterface::~BaseChannelGroupInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelGroupInterfacePtr Tp::BaseChannelGroupInterface::create ( ChannelGroupFlags  initialFlags,
uint  selfHandle 
)
inlinestatic
template<typename BaseChannelGroupInterfaceSubclass >
static SharedPtr<BaseChannelGroupInterfaceSubclass> Tp::BaseChannelGroupInterface::create ( ChannelGroupFlags  initialFlags,
uint  selfHandle 
)
inlinestatic
QVariantMap Tp::BaseChannelGroupInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseChannelGroupInterface::setRemoveMembersCallback ( const RemoveMembersCallback cb)
void Tp::BaseChannelGroupInterface::setAddMembersCallback ( const AddMembersCallback cb)
void Tp::BaseChannelGroupInterface::addMembers ( const Tp::UIntList handles,
const QStringList &  identifiers 
)
void Tp::BaseChannelGroupInterface::removeMembers ( const Tp::UIntList handles)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00725_source.html0000644000175100017520000002504512530426257022524 0ustar00kaffeinekaffeine00000000000000 key-file.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
key-file.h
1 
23 #ifndef _TelepathyQt_key_file_h_HEADER_GUARD_
24 #define _TelepathyQt_key_file_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/Global>
27 
28 #include <QMetaType>
29 #include <QtGlobal>
30 
31 class QString;
32 class QStringList;
33 
34 #ifndef DOXYGEN_SHOULD_SKIP_THIS
35 
36 namespace Tp
37 {
38 
39 class TP_QT_NO_EXPORT KeyFile
40 {
41 public:
42  enum Status {
43  None = 0,
44  NoError,
45  NotFoundError,
46  AccessError,
47  FormatError,
48  };
49 
50  KeyFile();
51  KeyFile(const KeyFile &other);
52  KeyFile(const QString &fileName);
53  ~KeyFile();
54 
55  KeyFile &operator=(const KeyFile &other);
56 
57  void setFileName(const QString &fileName);
58  QString fileName() const;
59 
60  Status status() const;
61 
62  void setGroup(const QString &group);
63  QString group() const;
64 
65  QStringList allGroups() const;
66  QStringList allKeys() const;
67  QStringList keys() const;
68  bool contains(const QString &key) const;
69 
70  QString rawValue(const QString &key) const;
71  QString value(const QString &key) const;
72  QStringList valueAsStringList(const QString &key) const;
73 
74  static bool unescapeString(const QByteArray &data, int from, int to,
75  QString &result);
76  static bool unescapeStringList(const QByteArray &data, int from, int to,
77  QStringList &result);
78 
79 private:
80  struct Private;
81  friend struct Private;
82  Private *mPriv;
83 };
84 
85 }
86 
87 Q_DECLARE_METATYPE(Tp::KeyFile);
88 
89 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
90 
91 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01073.html0000644000175100017520000001312712530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingDebugMessageList Member List

This is the complete list of members for Tp::PendingDebugMessageList, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
result() const Tp::PendingDebugMessageList
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingDebugMessageList()Tp::PendingDebugMessageListvirtual
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00918.html0000644000175100017520000001415712530426257021152 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AccountSet Member List

This is the complete list of members for Tp::AccountSet, including all inherited members.

accountAdded(const Tp::AccountPtr &account)Tp::AccountSetsignal
accountManagerTp::AccountSet
accountManager() const Tp::AccountSet
accountRemoved(const Tp::AccountPtr &account)Tp::AccountSetsignal
accountsTp::AccountSet
accounts() const Tp::AccountSet
AccountSet(const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter)Tp::AccountSet
AccountSet(const AccountManagerPtr &accountManager, const QVariantMap &filter)Tp::AccountSet
filterTp::AccountSet
filter() const Tp::AccountSet
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
~AccountSet()Tp::AccountSetvirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00417.html0000644000175100017520000001330712530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::ObjectPathList Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ObjectPathList Struct Reference

#include <TelepathyQt/Types>

Inherits QList< QDBusObjectPath >.

Public Member Functions

 ObjectPathList ()
 
 ObjectPathList (const QList< QDBusObjectPath > &a)
 
ObjectPathListoperator= (const QList< QDBusObjectPath > &a)
 

Detailed Description

Generic list type with QDBusObjectPath elements. Convertible with QList<QDBusObjectPath>, but needed to have a discrete type in the Qt type system.

Constructor & Destructor Documentation

Tp::ObjectPathList::ObjectPathList ( )
inline
Tp::ObjectPathList::ObjectPathList ( const QList< QDBusObjectPath > &  a)
inline

Member Function Documentation

ObjectPathList& Tp::ObjectPathList::operator= ( const QList< QDBusObjectPath > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01388.html0000644000175100017520000001112612530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceSimplePresenceAdaptor Member List

This is the complete list of members for Tp::Service::ConnectionInterfaceSimplePresenceAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetPresences(const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceSimplePresenceAdaptorslot
MaximumStatusMessageLength() const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor
PresencesChanged(const Tp::SimpleContactPresences &presence)Tp::Service::ConnectionInterfaceSimplePresenceAdaptorsignal
SetPresence(const QString &status, const QString &statusMessage, const QDBusMessage &dbusMessage)Tp::Service::ConnectionInterfaceSimplePresenceAdaptorslot
Statuses() const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00721_source.html0000644000175100017520000002741312530426257022521 0ustar00kaffeinekaffeine00000000000000 incoming-file-transfer-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
incoming-file-transfer-channel.h
1 
23 #ifndef _TelepathyQt_incoming_file_transfer_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_incoming_file_transfer_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/FileTransferChannel>
31 
32 #include <QAbstractSocket>
33 
34 namespace Tp
35 {
36 
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(IncomingFileTransferChannel)
41 
42 public:
43  static const Feature FeatureCore;
44 
45  static IncomingFileTransferChannelPtr create(const ConnectionPtr &connection,
46  const QString &objectPath, const QVariantMap &immutableProperties);
47 
48  virtual ~IncomingFileTransferChannel();
49 
50  PendingOperation *setUri(const QString& uri);
51  PendingOperation *acceptFile(qulonglong offset, QIODevice *output);
52 
53 Q_SIGNALS:
54  void uriDefined(const QString &uri);
55 
56 protected:
57  IncomingFileTransferChannel(const ConnectionPtr &connection,
58  const QString &objectPath,
59  const QVariantMap &immutableProperties,
61 
62 private Q_SLOTS:
63  TP_QT_NO_EXPORT void onAcceptFileFinished(Tp::PendingOperation *op);
64 
65  TP_QT_NO_EXPORT void onSocketConnected();
66  TP_QT_NO_EXPORT void onSocketDisconnected();
67  TP_QT_NO_EXPORT void onSocketError(QAbstractSocket::SocketError error);
68  TP_QT_NO_EXPORT void doTransfer();
69 
70 private:
71  TP_QT_NO_EXPORT void connectToHost();
72  TP_QT_NO_EXPORT void setFinished();
73 
74  struct Private;
75  friend struct Private;
76  Private *mPriv;
77 };
78 
79 } // Tp
80 
81 #endif
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
static const Feature FeatureCore
Definition: incoming-file-transfer-channel.h:43
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The IncomingFileTransferChannel class represents a Telepathy channel of type FileTransfer for incomin...
Definition: incoming-file-transfer-channel.h:37
The FileTransferChannel class represents a Telepathy channel of type FileTransfer.
Definition: file-transfer-channel.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00171.html0000644000175100017520000044025712530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Channel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The Channel class represents a Telepathy channel. More...

#include <TelepathyQt/Channel>

Inherits Tp::StatefulDBusProxy, and Tp::OptionalInterfaceFactory< Channel >.

Inherited by Tp::CallChannel, Tp::ContactSearchChannel, Tp::FileTransferChannel, Tp::RoomListChannel, Tp::ServerAuthenticationChannel, Tp::StreamedMediaChannel, Tp::TextChannel, and Tp::TubeChannel.

Classes

class  GroupMemberChangeDetails
 The Channel::GroupMemberChangeDetails class represents the details of a group membership change. More...
 

Signals

void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Group interface

Cached access to state of the group interface on the associated remote object, if the interface is present.

Some methods can be used when targetHandleType() == HandleTypeContact, such as groupFlags(), groupCanAddContacts(), groupCanRemoveContacts(), groupSelfContact() and groupContacts().

As the group interface state can change freely during the lifetime of the channel due to events like new contacts joining the group, the cached state is automatically kept in sync with the remote object's state by hooking to the change notification signals present in the D-Bus interface.

As the cached value changes, change notification signals are emitted.

Signals such as groupMembersChanged(), groupSelfContactChanged(), etc., are emitted to indicate that properties have changed.

Check the individual signals' descriptions for details.

ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
bool groupSelfHandleIsLocalPending () const
 
PendingOperationgroupAddSelfHandle ()
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 

Detailed Description

The Channel class represents a Telepathy channel.

All communication in the Telepathy framework is carried out via channel objects. Specialized classes for some specific channel types such as StreamedMediaChannel, TextChannel, FileTransferChannel are provided.

The remote object accessor functions on this object (channelType(), targetHandleType(), and so on) don't make any D-Bus calls; instead, they return/use values cached from a previous introspection run. The introspection process populates their values in the most efficient way possible based on what the service implements.

To avoid unnecessary D-Bus traffic, some accessors only return valid information after specific features have been enabled. For instance, to retrieve the initial invitee contacts in a conference channel, it is necessary to enable the feature Channel::FeatureConferenceInitialInviteeContacts. See the individual methods descriptions for more details.

Channel features can be enabled by constructing a ChannelFactory and enabling the desired features, and passing it to AccountManager, Account or ClientRegistrar when creating them as appropriate. However, if a particular feature is only ever used in a specific circumstance, such as an user opening some settings dialog separate from the general view of the application, features can be later enabled as needed by calling becomeReady() with the additional features, and waiting for the resulting PendingOperation to finish.

Each channel is owned by a connection. If the Connection object becomes invalidated the Channel object will also get invalidated.

Usage

Creating a channel object

Channel objects can be created in various ways, but the preferred way is trough Account channel creation methods such as Account::ensureTextChat(), Account::createFileTransfer(), which uses the channel dispatcher.

If you already know the object path, you can just call create(). For example:

*
* ChannelPtr chan = Channel::create(connection, objectPath,
*
*

Making channel ready to use

A Channel object needs to become ready before usage, meaning that the introspection process finished and the object accessors can be used.

To make the object ready, use becomeReady() and wait for the PendingOperation::finished() signal to be emitted.

*
* class MyClass : public QObject
* {
* QOBJECT
*
* public:
* MyClass(QObject *parent = 0);
* ~MyClass() { }
*
* private Q_SLOTS:
* void onChannelReady(Tp::PendingOperation*);
*
* private:
* ChannelPtr chan;
* };
*
* MyClass::MyClass(const ConnectionPtr &connection,
* const QString &objectPath, const QVariantMap &immutableProperties)
* : QObject(parent)
* {
* connect(chan->becomeReady(),
* SIGNAL(finished(Tp::PendingOperation*)),
* SLOT(onChannelReady(Tp::PendingOperation*)));
* }
*
* void MyClass::onChannelReady(Tp::PendingOperation *op)
* {
* if (op->isError()) {
* qWarning() << "Channel cannot become ready:" <<
* op->errorName() << "-" << op->errorMessage();
* return;
* }
*
* // Channel is now ready
* }
*
*

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::Channel::~Channel ( )
virtual

Class destructor.

Tp::Channel::Channel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature 
)
protected

Construct a new Channel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type. The corresponding introspectable should depend on Channel::FeatureCore.

Member Function Documentation

ChannelPtr Tp::Channel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new Channel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A ChannelPtr object pointing to the newly created Channel object.
Todo:
immutableProperties should be used to populate the corresponding accessors (such as channelType()) already on construction, not only when making FeatureCore ready (fd.o #41654)
ConnectionPtr Tp::Channel::connection ( ) const

Return the connection owning this channel.

Returns
A pointer to the Connection object.
QVariantMap Tp::Channel::immutableProperties ( ) const

Return the immutable properties of the channel.

If the channel is ready (isReady(Channel::FeatureCore) returns true), the following keys are guaranteed to be present: org.freedesktop.Telepathy.Channel.ChannelType, org.freedesktop.Telepathy.Channel.TargetHandleType, org.freedesktop.Telepathy.Channel.TargetHandle and org.freedesktop.Telepathy.Channel.Requested.

The keys and values in this map are defined by the Telepathy specification, or by third-party extensions to that specification. These are the properties that cannot change over the lifetime of the channel; they're announced in the result of the request, for efficiency.

Returns
The immutable properties as QVariantMap.
QString Tp::Channel::channelType ( ) const

Return the D-Bus interface name for the type of this channel.

This method requires Channel::FeatureCore to be ready.

Returns
The D-Bus interface name for the type of the channel.
HandleType Tp::Channel::targetHandleType ( ) const

Return the type of the handle returned by targetHandle() as specified in HandleType.

This method requires Channel::FeatureCore to be ready.

Returns
The target handle type as HandleType.
See Also
targetHandle(), targetId()
uint Tp::Channel::targetHandle ( ) const

Return the handle of the remote party with which this channel communicates.

This method requires Channel::FeatureCore to be ready.

Returns
An integer representing the target handle, which is of the type targetHandleType() indicates.
See Also
targetHandleType(), targetId()
QString Tp::Channel::targetId ( ) const

Return the persistent unique ID of the remote party with which this channel communicates.

If targetHandleType() is HandleTypeContact, this will be the ID of the remote contact, and similarly the unique ID of the room when targetHandleType() is HandleTypeRoom.

This is not necessarily the best identifier to display to the user, though. In particular, for contacts, their alias should be displayed instead. It can be used for matching channels and UI elements for them across reconnects, though, at which point the old channels and contacts are invalidated.

This method requires Channel::FeatureCore to be ready.

Returns
The target identifier.
See Also
targetHandle(), targetContact()
ContactPtr Tp::Channel::targetContact ( ) const

Return the contact with which this channel communicates for its lifetime, if applicable.

This method requires Channel::FeatureCore to be ready.

Returns
A pointer to the Contact object, or a null ContactPtr if targetHandleType() is not HandleTypeContact.
See Also
targetHandle(), targetId()
bool Tp::Channel::isRequested ( ) const

Return whether this channel was created in response to a local request.

This method requires Channel::FeatureCore to be ready.

Returns
true if the channel was created in response to a local request, false otherwise.
ContactPtr Tp::Channel::initiatorContact ( ) const

Return the contact who initiated this channel.

This method requires Channel::FeatureCore to be ready.

Returns
A pointer to the Contact object representing the contact who initiated the channel, or a null ContactPtr if it can't be retrieved.
PendingOperation * Tp::Channel::requestClose ( )

Start an asynchronous request that this channel be closed.

The returned PendingOperation object will signal the success or failure of this request; under normal circumstances, it can be expected to succeed.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
requestLeave()
PendingOperation * Tp::Channel::requestLeave ( const QString &  message = QString(),
ChannelGroupChangeReason  reason = ChannelGroupChangeReasonNone 
)

Start an asynchronous request to leave this channel as gracefully as possible.

If leaving any more gracefully is not possible, this will revert to the same as requestClose(). In particular, this will be the case for channels with no group interface (TP_QT_IFACE_CHANNEL_INTERFACE_GROUP not in the list returned by interfaces()).

The returned PendingOperation object will signal the success or failure of this request; under normal circumstances, it can be expected to succeed.

A message and a reason may be provided along with the request, which will be sent to the server if supported, which is indicated by ChannelGroupFlagMessageDepart and/or ChannelGroupFlagMessageReject.

Attempting to leave again when we have already left, either by our request or forcibly, will be a no-op, with the returned PendingOperation immediately finishing successfully.

Parameters
messageThe message, which can be blank if desired.
reasonA reason for leaving.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
ChannelGroupFlags Tp::Channel::groupFlags ( ) const

Return a set of flags indicating the capabilities and behaviour of the group on this channel.

Change notification is via the groupFlagsChanged() signal.

This method requires Channel::FeatureCore to be ready.

Returns
The bitfield combination of flags as ChannelGroupFlags.
See Also
groupFlagsChanged()
bool Tp::Channel::groupCanAddContacts ( ) const

Return whether contacts can be added or invited to this channel.

Change notification is via the groupCanAddContactsChanged() signal.

This method requires Channel::FeatureCore to be ready.

Returns
true if contacts can be added or invited to the channel, false otherwise.
See Also
groupFlags(), groupAddContacts()
bool Tp::Channel::groupCanAddContactsWithMessage ( ) const

Return whether a message is expected when adding/inviting contacts, who are not already members, to this channel.

This method requires Channel::FeatureCore to be ready.

Returns
true if a message is expected, false otherwise.
See Also
groupFlags(), groupAddContacts()
bool Tp::Channel::groupCanAcceptContactsWithMessage ( ) const

Return whether a message is expected when accepting contacts' requests to join this channel.

This method requires Channel::FeatureCore to be ready.

Returns
true if a message is expected, false otherwise.
See Also
groupFlags(), groupAddContacts()
PendingOperation * Tp::Channel::groupAddContacts ( const QList< ContactPtr > &  contacts,
const QString &  message = QString() 
)

Add contacts to this channel.

Contacts on the local pending list (those waiting for permission to join the channel) can always be added. If groupCanAcceptContactsWithMessage() returns true, an optional message is expected when doing this; if not, the message parameter is likely to be ignored (so the user should not be asked for a message, and the message parameter should be left empty).

Other contacts can only be added if groupCanAddContacts() returns true. If groupCanAddContactsWithMessage() returns true, an optional message is expected when doing this, and if not, the message parameter is likely to be ignored.

This method requires Channel::FeatureCore to be ready.

Parameters
contactsContacts to be added.
messageA string message, which can be blank if desired.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
groupCanAddContacts(), groupCanAddContactsWithMessage(), groupCanAcceptContactsWithMessage()
bool Tp::Channel::groupCanRescindContacts ( ) const

Return whether contacts in groupRemotePendingContacts() can be removed from this channel (i.e. whether an invitation can be rescinded).

Change notification is via the groupCanRescindContactsChanged() signal.

This method requires Channel::FeatureCore to be ready.

Returns
true if contacts can be removed, false otherwise.
See Also
groupFlags(), groupRemoveContacts()
bool Tp::Channel::groupCanRescindContactsWithMessage ( ) const

Return whether a message is expected when removing contacts who are in groupRemotePendingContacts() from this channel (i.e. rescinding an invitation).

This method requires Channel::FeatureCore to be ready.

Returns
true if a message is expected, false otherwise.
See Also
groupFlags(), groupRemoveContacts()
bool Tp::Channel::groupCanRemoveContacts ( ) const

Return if contacts in groupContacts() can be removed from this channel.

Note that contacts in local pending lists, and the groupSelfContact(), can always be removed from the channel.

Change notification is via the groupCanRemoveContactsChanged() signal.

This method requires Channel::FeatureCore to be ready.

Returns
true if contacts can be removed, false otherwise.
See Also
groupFlags(), groupRemoveContacts()
bool Tp::Channel::groupCanRemoveContactsWithMessage ( ) const

Return whether a message is expected when removing contacts who are in groupContacts() from this channel.

This method requires Channel::FeatureCore to be ready.

Returns
true if a message is expected, false otherwise.
See Also
groupFlags(), groupRemoveContacts()
bool Tp::Channel::groupCanRejectContactsWithMessage ( ) const

Return whether a message is expected when removing contacts who are in groupLocalPendingContacts() from this channel (i.e. rejecting a request to join).

This method requires Channel::FeatureCore to be ready.

Returns
true if a message is expected, false otherwise.
See Also
groupFlags(), groupRemoveContacts()
bool Tp::Channel::groupCanDepartWithMessage ( ) const

Return whether a message is expected when removing the groupSelfContact() from this channel (i.e. departing from the channel).

Returns
true if a message is expected, false otherwise.
See Also
groupFlags(), groupRemoveContacts()
PendingOperation * Tp::Channel::groupRemoveContacts ( const QList< ContactPtr > &  contacts,
const QString &  message = QString(),
ChannelGroupChangeReason  reason = ChannelGroupChangeReasonNone 
)

Remove contacts from this channel.

Contacts on the local pending list (those waiting for permission to join the channel) can always be removed. If groupCanRejectContactsWithMessage() returns true, an optional message is expected when doing this; if not, the message parameter is likely to be ignored (so the user should not be asked for a message, and the message parameter should be left empty).

The groupSelfContact() can also always be removed, as a way to leave the group with an optional departure message and/or departure reason indication. If groupCanDepartWithMessage() returns true, an optional message is expected when doing this, and if not, the message parameter is likely to be ignored.

Contacts in the group can only be removed (e.g. kicked) if groupCanRemoveContacts() returns true. If groupCanRemoveContactsWithMessage() returns true, an optional message is expected when doing this, and if not, the message parameter is likely to be ignored.

Contacts in the remote pending list (those who have been invited to the channel) can only be removed (have their invitations rescinded) if groupCanRescindContacts() returns true. If groupCanRescindContactsWithMessage() returns true, an optional message is expected when doing this, and if not, the message parameter is likely to be ignored.

This method requires Channel::FeatureCore to be ready.

Parameters
contactsContacts to be removed.
messageA string message, which can be blank if desired.
reasonReason of the change, as specified in ChannelGroupChangeReason
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
groupCanRemoveContacts(), groupCanRemoveContactsWithMessage(), groupCanRejectContactsWithMessage(), groupCanRescindContacts(), groupCanRescindContacts(), groupCanRescindContactsWithMessage(), groupCanDepartWithMessage()
Contacts Tp::Channel::groupContacts ( bool  includeSelfContact = true) const

Return the current contacts of the group.

It is possible to omit the contact representing the local user, even if the contact is in the set, by passing false as the parameter includeSelfContact.

Change notification is via the groupMembersChanged() signal.

This method requires Channel::FeatureCore to be ready.

Parameters
includeSelfContactWhether to include the self contact in the returned set.
Returns
A set of pointers to the Contact objects.
See Also
groupLocalPendingContacts(), groupRemotePendingContacts()
Contacts Tp::Channel::groupLocalPendingContacts ( bool  includeSelfContact = true) const

Return the contacts currently waiting for local approval to join the group.

It is possible to omit the contact representing the local user, even if the contact is in the set, by passing false as the parameter includeSelfContact.

Change notification is via the groupMembersChanged() signal.

This method requires Channel::FeatureCore to be ready.

Parameters
includeSelfContactWhether to include the self contact in the returned set.
Returns
A set of pointers to the Contact objects.
See Also
groupContacts(), groupRemotePendingContacts()
Contacts Tp::Channel::groupRemotePendingContacts ( bool  includeSelfContact = true) const

Return the contacts currently waiting for remote approval to join the group.

It is possible to omit the contact representing the local user, even if the contact is in the set, by passing false as the parameter includeSelfContact.

Change notification is via the groupMembersChanged() signal.

This method requires Channel::FeatureCore to be ready.

Parameters
includeSelfContactWhether to include the self contact in the returned set.
Returns
A set of pointers to the Contact objects.
See Also
groupContacts(), groupLocalPendingContacts()
Channel::GroupMemberChangeDetails Tp::Channel::groupLocalPendingContactChangeInfo ( const ContactPtr &  contact) const

Return information of a local pending contact change. If no information is available, an object for which GroupMemberChangeDetails::isValid() returns false is returned.

This method requires Channel::FeatureCore to be ready.

Parameters
contactA Contact object that is on the local pending contacts list.
Returns
The change info as a GroupMemberChangeDetails object.
Channel::GroupMemberChangeDetails Tp::Channel::groupSelfContactRemoveInfo ( ) const

Return information on the removal of the local user from the group. If the user hasn't been removed from the group, an object for which GroupMemberChangeDetails::isValid() returns false is returned.

This method should be called only after you've left the channel. This is useful for getting the remove information after missing the corresponding groupMembersChanged() signal, as the local user being removed usually causes the channel to be closed.

The returned information is not guaranteed to be correct if groupIsSelfHandleTracked() returns false and a self handle change has occurred on the remote object.

This method requires Channel::FeatureCore to be ready.

Returns
The remove info as a GroupMemberChangeDetails object.
bool Tp::Channel::groupAreHandleOwnersAvailable ( ) const

Return whether globally valid handles can be looked up using the channel-specific handle on this channel using this object.

Handle owner lookup is only available if:

If this function returns false, the return value of groupHandleOwners() is undefined and groupHandleOwnersChanged() will never be emitted.

The value returned by this function will stay fixed for the entire time the object is ready, so no change notification is provided.

This method requires Channel::FeatureCore to be ready.

Returns
true if handle owner lookup functionality is available, false otherwise.
HandleOwnerMap Tp::Channel::groupHandleOwners ( ) const

Return a mapping of handles specific to this channel to globally valid handles.

The mapping includes at least all of the channel-specific handles in this channel's members, local-pending and remote-pending sets as keys. Any handle not in the keys of this mapping is not channel-specific in this channel. Handles which are channel-specific, but for which the owner is unknown, appear in this mapping with 0 as owner.

Change notification is via the groupHandleOwnersChanged() signal.

This method requires Channel::FeatureCore to be ready.

Returns
A mapping from group-specific handles to globally valid handles.
bool Tp::Channel::groupIsSelfContactTracked ( ) const

Return whether the value returned by groupSelfContact() is guaranteed to accurately represent the local user even after nickname changes, etc.

This should always be true for new services implementing the group interface.

Older services not providing group properties don't necessarily emit the SelfHandleChanged signal either, so self contact changes can't be reliably tracked.

This method requires Channel::FeatureCore to be ready.

Returns
true if changes to the self contact are tracked, false otherwise.
ContactPtr Tp::Channel::groupSelfContact ( ) const

Return a Contact object representing the user in the group if at all possible, otherwise a Contact object representing the user globally.

Change notification is via the groupSelfContactChanged() signal.

This method requires Channel::FeatureCore to be ready.

Returns
A pointer to the Contact object.
bool Tp::Channel::isConference ( ) const

Return whether this channel implements the conference interface (TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE is in the list returned by interfaces()).

This method requires Channel::FeatureCore to be ready.

Returns
true if the conference interface is supported, false otherwise.
Contacts Tp::Channel::conferenceInitialInviteeContacts ( ) const

Return a list of contacts invited to this conference when it was created.

This method requires Channel::FeatureConferenceInitialInviteeContacts to be ready.

Returns
A set of pointers to the Contact objects.
QList< ChannelPtr > Tp::Channel::conferenceChannels ( ) const

Return the individual channels that are part of this conference.

Change notification is via the conferenceChannelMerged() and conferenceChannelRemoved() signals.

Note that the returned channels are not guaranteed to be ready. Calling Channel::becomeReady() may be needed.

This method requires Channel::FeatureCore to be ready.

Returns
A list of pointers to Channel objects containing all channels in the conference.
See Also
conferenceInitialChannels(), conferenceOriginalChannels()
QList< ChannelPtr > Tp::Channel::conferenceInitialChannels ( ) const

Return the initial value of conferenceChannels().

Note that the returned channels are not guaranteed to be ready. Calling Channel::becomeReady() may be needed.

This method requires Channel::FeatureCore to be ready.

Returns
A list of pointers to Channel objects containing all channels that were initially part of the conference.
See Also
conferenceChannels(), conferenceOriginalChannels()
QHash< uint, ChannelPtr > Tp::Channel::conferenceOriginalChannels ( ) const

Return a map between channel specific handles and the corresponding channels of this conference.

This method is only relevant on GSM conference calls where it is possible to have the same phone number in a conference twice; for instance, it could be the number of a corporate switchboard. This is represented using channel-specific handles; whether or not a channel uses channel-specific handles is reported in groupFlags(). The groupHandleOwners() specifies the mapping from opaque channel-specific handles to actual numbers; this property specifies the original 1-1 channel corresponding to each channel-specific handle in the conference.

In protocols where this situation cannot arise, such as XMPP, this method will return an empty hash.

Example, consider this situation:

  1. Place a call (with path /call/to/simon) to the contact +441234567890 (which is assigned the handle h, say), and ask to be put through to Simon McVittie;
  2. Put that call on hold;
  3. Place another call (with path /call/to/jonny) to +441234567890, and ask to be put through to Jonny Lamb;
  4. Request a new conference channel with initial channels: ['/call/to/simon', '/call/to/jonny'].

The new channel will have the following properties, for some handles s and j:

{ groupFlags(): ChannelGroupFlagChannelSpecificHandles | (other flags), groupMembers(): [self handle, s, j], groupHandleOwners(): { s: h, j: h }, conferenceInitialChannels(): ['/call/to/simon', '/call/to/jonny'], conferenceChannels(): ['/call/to/simon', '/call/to/jonny'], conferenceOriginalChannels(): { s: '/call/to/simon', j: '/call/to/jonny' },

...

}

Note that the returned channels are not guaranteed to be ready. Calling Channel::becomeReady() may be needed.

This method requires Channel::FeatureCore to be ready.

Returns
A map of channel specific handles to pointers to Channel objects.
See Also
conferenceChannels(), conferenceInitialChannels()
bool Tp::Channel::supportsConferenceMerging ( ) const

Return whether this channel supports conference merging using conferenceMergeChannel().

This method requires Channel::FeatureCore to be ready.

Returns
true if the interface is supported, false otherwise.
See Also
conferenceMergeChannel()
PendingOperation * Tp::Channel::conferenceMergeChannel ( const ChannelPtr &  channel)

Request that the given channel be incorporated into this channel.

This method requires Channel::FeatureCore to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
supportsConferenceMerging()
bool Tp::Channel::supportsConferenceSplitting ( ) const

Return whether this channel supports splitting using conferenceSplitChannel().

This method requires Channel::FeatureCore to be ready.

Returns
true if the interface is supported, false otherwise.
See Also
conferenceSplitChannel()
PendingOperation * Tp::Channel::conferenceSplitChannel ( )

Request that this channel is removed from any conference of which it is a part.

This method requires Channel::FeatureCore to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
supportsConferenceSplitting()
void Tp::Channel::groupFlagsChanged ( Tp::ChannelGroupFlags  flags,
Tp::ChannelGroupFlags  added,
Tp::ChannelGroupFlags  removed 
)
signal

Emitted when the value of groupFlags() changes.

Parameters
flagsThe value which would now be returned by groupFlags().
addedFlags added compared to the previous value.
removedFlags removed compared to the previous value.
void Tp::Channel::groupCanAddContactsChanged ( bool  canAddContacts)
signal

Emitted when the value of groupCanAddContacts() changes.

Parameters
canAddContactsWhether a contact can be added to this channel.
See Also
groupCanAddContacts()
void Tp::Channel::groupCanRemoveContactsChanged ( bool  canRemoveContacts)
signal

Emitted when the value of groupCanRemoveContacts() changes.

Parameters
canRemoveContactsWhether a contact can be removed from this channel.
See Also
groupCanRemoveContacts()
void Tp::Channel::groupCanRescindContactsChanged ( bool  canRescindContacts)
signal

Emitted when the value of groupCanRescindContacts() changes.

Parameters
canRescindContactsWhether contact invitations can be rescinded.
See Also
groupCanRescindContacts()
void Tp::Channel::groupMembersChanged ( const Tp::Contacts &  groupMembersAdded,
const Tp::Contacts &  groupLocalPendingMembersAdded,
const Tp::Contacts &  groupRemotePendingMembersAdded,
const Tp::Contacts &  groupMembersRemoved,
const Tp::Channel::GroupMemberChangeDetails details 
)
signal

Emitted when the value returned by groupContacts(), groupLocalPendingContacts() or groupRemotePendingContacts() changes.

Parameters
groupMembersAddedThe contacts that were added to this channel.
groupLocalPendingMembersAddedThe local pending contacts that were added to this channel.
groupRemotePendingMembersAddedThe remote pending contacts that were added to this channel.
groupMembersRemovedThe contacts removed from this channel.
detailsAdditional details such as the contact requesting or causing the change.
void Tp::Channel::groupHandleOwnersChanged ( const Tp::HandleOwnerMap owners,
const Tp::UIntList added,
const Tp::UIntList removed 
)
signal

Emitted when the value returned by groupHandleOwners() changes.

Parameters
ownersThe value which would now be returned by groupHandleOwners().
addedHandles which have been added to the mapping as keys, or existing handle keys for which the mapped-to value has changed.
removedHandles which have been removed from the mapping.
void Tp::Channel::groupSelfContactChanged ( )
signal

Emitted when the value returned by groupSelfContact() changes.

void Tp::Channel::conferenceChannelMerged ( const Tp::ChannelPtr &  channel)
signal

Emitted when a new channel is added to the value of conferenceChannels().

Parameters
channelThe channel that was added to conferenceChannels().
void Tp::Channel::conferenceChannelRemoved ( const Tp::ChannelPtr &  channel,
const Tp::Channel::GroupMemberChangeDetails details 
)
signal

Emitted when a new channel is removed from the value of conferenceChannels().

Parameters
channelThe channel that was removed from conferenceChannels().
detailsThe change details.
Client::ChannelInterface * Tp::Channel::baseInterface ( ) const
protected

Return the Client::ChannelInterface interface proxy object for this channel. This method is protected since the convenience methods provided by this class should generally be used instead of calling D-Bus methods directly.

Returns
A pointer to the existing Client::ChannelInterface object for this Channel object.
bool Tp::Channel::groupSelfHandleIsLocalPending ( ) const
protected

Return whether the local user is in the "local pending" state. This indicates that the local user needs to take action to accept an invitation, an incoming call, etc.

This method requires Channel::FeatureCore to be ready.

Returns
true if local user is in the channel's local-pending set, false otherwise.
PendingOperation * Tp::Channel::groupAddSelfHandle ( )
protectedslot

Attempt to add the local user to this channel. In some channel types, such as Text and StreamedMedia, this is used to accept an invitation or an incoming call.

This method requires Channel::FeatureCore to be ready.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.

Member Data Documentation

const Feature Tp::Channel::FeatureCore
static

Feature representing the core that needs to become ready to make the Channel object usable.

Note that this feature must be enabled in order to use most Channel methods. See specific methods documentation for more details.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.

const Feature Tp::Channel::FeatureConferenceInitialInviteeContacts
static

Feature used in order to access the conference initial invitee contacts info.

See Also
conferenceInitialInviteeContacts()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01132.html0000644000175100017520000000526612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AvatarTokenMap Member List

This is the complete list of members for Tp::AvatarTokenMap, including all inherited members.

AvatarTokenMap()Tp::AvatarTokenMapinline
AvatarTokenMap(const QMap< uint, QString > &a)Tp::AvatarTokenMapinline
operator=(const QMap< uint, QString > &a)Tp::AvatarTokenMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00987.html0000644000175100017520000001002512530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Captcha Member List

This is the complete list of members for Tp::Captcha, including all inherited members.

Captcha()Tp::Captcha
Captcha(const Captcha &other)Tp::Captcha
data() const Tp::Captcha
id() const Tp::Captcha
isValid() const Tp::Captchainline
label() const Tp::Captcha
mimeType() const Tp::Captcha
operator=(const Captcha &rhs)Tp::Captcha
type() const Tp::Captcha
~Captcha()Tp::Captcha


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/sync_on.png0000644000175100017520000000151512530426257021612 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRàw=øIDATxíÝ_HTYÀñï8ã¤ó§i§4-g6ÆËÕ&kQ)¨Ô!Š0ÒURKÚ…„ê¡/»PEÁ>ìK-+KÁ²Ñ.Y”¾dEPaA‰ø°¥¶›ZSÓïÜ;3wºŠ–¯—߯gfîïœsçœWKÇñ.€ÉøD­¨a‘'¬âq_ôˆk¢ÀŒ ÀDŽøQ´ÄïC¨¶åñÏÿgÅ ñ 0„Y‚:qZ¦Á)~õâ€èLý0HVñ× žz-¿‰C“%¨g¦˜6€é8%Úõ¬ëwêÙUÏ¿˜ª³Ä }? ?€·3ÀÀž©Š À”K• @hà a±ðaÇæUe‹ sù~ë2²ì“&Ú&B*AÄljæºììi*˨,Ëçí»÷oÆ£T”,d[˜¼3-*ÁÀ…>å‡Ë çLÉŸçfk˜Ò éw#*AEjKUy>ûšËÉõ&{µ¢8—m5Ki¬ jjƒD*¿NŽÖigwÃ7Dª’mz骹úKÛ¾±ˆ¶M!æ¤ÍkÐ?šoý¬_åÓlXí#Ò~–¸¬ê×ÒÑXŠÓ‘ùRÙ*Eû‚ՂדðEÜ;6«e"Q(²Ù=–¿Ezæ5Kؼָ_ 1òzBªJë ±XŒì96åªjL^7{ùãJÑ÷1½i@%8'7M©_\Qœ#ÓUŒËñýÿyõ Wo Éx8¼s¥v¯ªì|×SnÜ q_m Ýé î>bèÕí[JX,½4[Tú{R£ë¼ôˆ¾þa€tÝjjzzÅ'ÅìȶiIžŽòwÏs ¡€—ÕKøõâC^ŽŒ˜Y­¨µÉ%6¨´êˆº]vÛðhâ½iWv–hôëê°Ò¨¾'æÌ‚·ñ|[ßìúÅ^€YrD=<ýDû]äÇ÷s€Ïõ‹8™ºCì? À ¨—t4õᩎ¡Jã‡W‹É± îr¼cjMɘìx| šE©øNÔ‰œøA¢þ«–€Z¼ñ‡jó î#™§¢¢4gIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00486.html0000644000175100017520000006626712530426260021155 0ustar00kaffeinekaffeine00000000000000 Tp::ReadinessHelper Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ReadinessHelper class is a helper class used by the introspection process. More...

#include <TelepathyQt/ReadinessHelper>

Inherits QObject.

Classes

class  Introspectable
 The ReadinessHelper::Introspectable class represents a introspectable used by ReadinessHelper. More...
 

Public Types

typedef void(* IntrospectFunc )(void *data)
 
typedef QMap< Feature,
Introspectable
Introspectables
 

Signals

void statusReady (uint status)
 

Public Member Functions

 ReadinessHelper (RefCounted *object, uint currentStatus=0, const Introspectables &introspectables=Introspectables(), QObject *parent=0)
 
 ReadinessHelper (DBusProxy *proxy, uint currentStatus=0, const Introspectables &introspectables=Introspectables(), QObject *parent=0)
 
 ~ReadinessHelper ()
 
void addIntrospectables (const Introspectables &introspectables)
 
uint currentStatus () const
 
void setCurrentStatus (uint currentStatus)
 
void forceCurrentStatus (uint currentStatus)
 
QStringList interfaces () const
 
void setInterfaces (const QStringList &interfaces)
 
Features requestedFeatures () const
 
Features actualFeatures () const
 
Features missingFeatures () const
 
bool isReady (const Feature &feature, QString *errorName=0, QString *errorMessage=0) const
 
bool isReady (const Features &features, QString *errorName=0, QString *errorMessage=0) const
 
PendingReadybecomeReady (const Features &requestedFeatures)
 
void setIntrospectCompleted (const Feature &feature, bool success, const QString &errorName=QString(), const QString &errorMessage=QString())
 
void setIntrospectCompleted (const Feature &feature, bool success, const QDBusError &error)
 

Detailed Description

The ReadinessHelper class is a helper class used by the introspection process.

Member Typedef Documentation

typedef void(* Tp::ReadinessHelper::IntrospectFunc)(void *data)

Constructor & Destructor Documentation

Tp::ReadinessHelper::ReadinessHelper ( RefCounted object,
uint  currentStatus = 0,
const Introspectables introspectables = Introspectables(),
QObject *  parent = 0 
)
Tp::ReadinessHelper::ReadinessHelper ( DBusProxy proxy,
uint  currentStatus = 0,
const Introspectables introspectables = Introspectables(),
QObject *  parent = 0 
)
Tp::ReadinessHelper::~ReadinessHelper ( )

Member Function Documentation

void Tp::ReadinessHelper::addIntrospectables ( const Introspectables introspectables)
uint Tp::ReadinessHelper::currentStatus ( ) const
void Tp::ReadinessHelper::setCurrentStatus ( uint  currentStatus)
void Tp::ReadinessHelper::forceCurrentStatus ( uint  currentStatus)

Force the current internal status to currentStatus.

Note that this method will not start a new introspection or restart the current one in case one is running.

This is useful for example when the status is unknown initially but it will become known in the first introspection run and there is no need to re-run the introspection.

Parameters
currentStatusThe status to set.
QStringList Tp::ReadinessHelper::interfaces ( ) const
void Tp::ReadinessHelper::setInterfaces ( const QStringList &  interfaces)
Features Tp::ReadinessHelper::requestedFeatures ( ) const
Features Tp::ReadinessHelper::actualFeatures ( ) const
Features Tp::ReadinessHelper::missingFeatures ( ) const
bool Tp::ReadinessHelper::isReady ( const Feature feature,
QString *  errorName = 0,
QString *  errorMessage = 0 
) const
bool Tp::ReadinessHelper::isReady ( const Features features,
QString *  errorName = 0,
QString *  errorMessage = 0 
) const
PendingReady * Tp::ReadinessHelper::becomeReady ( const Features requestedFeatures)
void Tp::ReadinessHelper::setIntrospectCompleted ( const Feature feature,
bool  success,
const QString &  errorName = QString(),
const QString &  errorMessage = QString() 
)
void Tp::ReadinessHelper::setIntrospectCompleted ( const Feature feature,
bool  success,
const QDBusError &  error 
)
void Tp::ReadinessHelper::statusReady ( uint  status)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00230.html0000644000175100017520000003104612530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelRequestHints Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelRequestHints Class Reference

The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester when requesting a channel. More...

#include <TelepathyQt/ChannelRequestHints>

Public Member Functions

 ChannelRequestHints ()
 
 ChannelRequestHints (const QVariantMap &hints)
 
 ChannelRequestHints (const ChannelRequestHints &other)
 
 ~ChannelRequestHints ()
 
ChannelRequestHintsoperator= (const ChannelRequestHints &other)
 
bool isValid () const
 
bool hasHint (const QString &reversedDomain, const QString &localName) const
 
QVariant hint (const QString &reversedDomain, const QString &localName) const
 
void setHint (const QString &reversedDomain, const QString &localName, const QVariant &value)
 
QVariantMap allHints () const
 

Detailed Description

The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester when requesting a channel.

Constructor & Destructor Documentation

Tp::ChannelRequestHints::ChannelRequestHints ( )
Tp::ChannelRequestHints::ChannelRequestHints ( const QVariantMap &  hints)
Tp::ChannelRequestHints::ChannelRequestHints ( const ChannelRequestHints other)
Tp::ChannelRequestHints::~ChannelRequestHints ( )

Member Function Documentation

ChannelRequestHints & Tp::ChannelRequestHints::operator= ( const ChannelRequestHints other)
bool Tp::ChannelRequestHints::isValid ( ) const
bool Tp::ChannelRequestHints::hasHint ( const QString &  reversedDomain,
const QString &  localName 
) const
QVariant Tp::ChannelRequestHints::hint ( const QString &  reversedDomain,
const QString &  localName 
) const
void Tp::ChannelRequestHints::setHint ( const QString &  reversedDomain,
const QString &  localName,
const QVariant &  value 
)
QVariantMap Tp::ChannelRequestHints::allHints ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00714_source.html0000644000175100017520000002231712530426257022521 0ustar00kaffeinekaffeine00000000000000 global.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
build/TelepathyQt/global.h
1 
23 #ifndef _TelepathyQt_global_h_HEADER_GUARD_
24 #define _TelepathyQt_global_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <QtGlobal>
31 
32 #define TP_QT_MAJOR_VERSION 0
33 #define TP_QT_MINOR_VERSION 9
34 #define TP_QT_MICRO_VERSION 6
35 #define TP_QT_VERSION ((TP_QT_MAJOR_VERSION<<16)|(TP_QT_MINOR_VERSION<<8)|(TP_QT_MICRO_VERSION))
36 
50 #define TP_QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
51 
52 #ifdef BUILDING_TP_QT
53 # define TP_QT_EXPORT Q_DECL_EXPORT
54 #else
55 # define TP_QT_EXPORT Q_DECL_IMPORT
56 #endif
57 
58 #if !defined(Q_OS_WIN) && defined(QT_VISIBILITY_AVAILABLE)
59 # define TP_QT_NO_EXPORT __attribute__((visibility("hidden")))
60 #endif
61 
62 #ifndef TP_QT_NO_EXPORT
63 # define TP_QT_NO_EXPORT
64 #endif
65 
118 #ifndef TP_QT_DEPRECATED
119 # ifdef TP_QT_DEPRECATED_WARNINGS
120 # ifdef BUILDING_TP_QT
121 # define TP_QT_DEPRECATED
122 # else
123 # define TP_QT_DEPRECATED Q_DECL_DEPRECATED
124 # endif
125 # else
126 # define TP_QT_DEPRECATED
127 # endif
128 #endif
129 
155 #ifndef TP_QT_EXPORT_DEPRECATED
156 # define TP_QT_EXPORT_DEPRECATED TP_QT_DEPRECATED TP_QT_EXPORT
157 #endif
158 
159 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01260.html0000644000175100017520000002306612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceFileTransferMetadataInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceFileTransferMetadataInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceFileTransferMetadataInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceFileTransferMetadataInterface
ChannelInterfaceFileTransferMetadataInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceFileTransferMetadataInterface
ChannelInterfaceFileTransferMetadataInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceFileTransferMetadataInterface
ChannelInterfaceFileTransferMetadataInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceexplicit
ChannelInterfaceFileTransferMetadataInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceFileTransferMetadataInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceinline
requestPropertyMetadata() const Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceinline
requestPropertyServiceName() const Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyMetadata(Tp::Metadata newValue)Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceinline
setPropertyServiceName(QString newValue)Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceinline
staticInterfaceName()Tp::Client::ChannelInterfaceFileTransferMetadataInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00044.html0000644000175100017520000007050112530426257021133 0ustar00kaffeinekaffeine00000000000000 roster/roster-widget.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/roster-widget.cpp
#include "roster-widget.h"
#include "_gen/roster-widget.moc.hpp"
#include "roster-item.h"
#include <TelepathyQt/Types>
#include <TelepathyQt/Contact>
#include <TelepathyQt/ContactManager>
#include <TelepathyQt/PendingConnection>
#include <TelepathyQt/PendingContacts>
#include <TelepathyQt/PendingOperation>
#include <TelepathyQt/PendingReady>
#include <QAction>
#include <QDebug>
#include <QDialog>
#include <QDialogButtonBox>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QListWidget>
#include <QListWidgetItem>
#include <QMessageBox>
#include <QPushButton>
#include <QVBoxLayout>
using namespace Tp;
RosterWidget::RosterWidget(QWidget *parent)
: QWidget(parent)
{
setWindowTitle(QLatin1String("Roster"));
createActions();
setupGui();
}
RosterWidget::~RosterWidget()
{
}
void RosterWidget::setConnection(const ConnectionPtr &conn)
{
if (mConn) {
unsetConnection();
}
mConn = conn;
connect(conn->contactManager().data(),
SIGNAL(presencePublicationRequested(const Tp::Contacts &)),
SLOT(onPresencePublicationRequested(const Tp::Contacts &)));
// TODO listen to allKnownContactsChanged
connect(conn->contactManager().data(),
SIGNAL(stateChanged(Tp::ContactListState)),
SLOT(onContactManagerStateChanged(Tp::ContactListState)));
onContactManagerStateChanged(conn->contactManager()->state());
}
void RosterWidget::unsetConnection()
{
while (mList->count() > 0) {
RosterItem *item = (RosterItem *) mList->item(0);
mList->takeItem(0);
delete item;
}
mConn.reset();
updateActions();
mAddBtn->setEnabled(false);
}
void RosterWidget::createActions()
{
mAuthAction = new QAction(QLatin1String("Authorize Contact"), this);
mAuthAction->setEnabled(false);
connect(mAuthAction,
SIGNAL(triggered(bool)),
SLOT(onAuthActionTriggered(bool)));
mDenyAction = new QAction(QLatin1String("Deny Contact"), this);
mDenyAction->setEnabled(false);
connect(mDenyAction,
SIGNAL(triggered(bool)),
SLOT(onDenyActionTriggered(bool)));
mRemoveAction = new QAction(QLatin1String("Remove Contact"), this);
mRemoveAction->setEnabled(false);
connect(mRemoveAction,
SIGNAL(triggered(bool)),
SLOT(onRemoveActionTriggered(bool)));
mBlockAction = new QAction(QLatin1String("Block Contact"), this);
mBlockAction->setEnabled(false);
mBlockAction->setCheckable(true);
connect(mBlockAction,
SIGNAL(triggered(bool)),
SLOT(onBlockActionTriggered(bool)));
}
void RosterWidget::setupGui()
{
QVBoxLayout *vbox = new QVBoxLayout;
mList = new QListWidget;
connect(mList,
SIGNAL(itemSelectionChanged()),
SLOT(onItemSelectionChanged()));
vbox->addWidget(mList);
mList->setContextMenuPolicy(Qt::ActionsContextMenu);
mList->addAction(mAuthAction);
mList->addAction(mDenyAction);
mList->addAction(mRemoveAction);
mList->addAction(mBlockAction);
QHBoxLayout *hbox = new QHBoxLayout;
mAddBtn = new QPushButton(QLatin1String("+"));
mAddBtn->setEnabled(false);
connect(mAddBtn,
SIGNAL(clicked(bool)),
SLOT(onAddButtonClicked()));
hbox->addWidget(mAddBtn);
hbox->addStretch(1);
vbox->addLayout(hbox);
setLayout(vbox);
mAddDlg = new QDialog(this);
mAddDlg->setWindowTitle(QLatin1String("Add Contact"));
QVBoxLayout *addDlgVBox = new QVBoxLayout;
QHBoxLayout *addDlgEntryHBox = new QHBoxLayout;
QLabel *label = new QLabel(QLatin1String("Username"));
addDlgEntryHBox->addWidget(label);
mAddDlgEdt = new QLineEdit();
addDlgEntryHBox->addWidget(mAddDlgEdt);
addDlgVBox->addLayout(addDlgEntryHBox);
QDialogButtonBox *addDlgBtnBox = new QDialogButtonBox(
QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal);
connect(addDlgBtnBox, SIGNAL(accepted()), mAddDlg, SLOT(accept()));
connect(addDlgBtnBox, SIGNAL(rejected()), mAddDlg, SLOT(reject()));
addDlgVBox->addWidget(addDlgBtnBox);
mAddDlg->setLayout(addDlgVBox);
}
RosterItem *RosterWidget::createItemForContact(const ContactPtr &contact,
bool &exists)
{
RosterItem *item;
exists = false;
for (int i = 0; i < mList->count(); ++i) {
item = dynamic_cast<RosterItem*>(mList->item(i));
if (item->contact() == contact) {
exists = true;
return item;
}
}
return new RosterItem(contact, mList);
}
void RosterWidget::onContactManagerStateChanged(ContactListState state)
{
if (state == ContactListStateSuccess) {
qDebug() << "Loading contacts";
RosterItem *item;
bool exists;
foreach (const ContactPtr &contact, mConn->contactManager()->allKnownContacts()) {
exists = false;
item = createItemForContact(contact, exists);
if (!exists) {
connect(item, SIGNAL(changed()), SLOT(updateActions()));
}
}
mAddBtn->setEnabled(true);
}
}
void RosterWidget::onPresencePublicationRequested(const Contacts &contacts)
{
qDebug() << "Presence publication requested";
RosterItem *item;
bool exists;
foreach (const ContactPtr &contact, contacts) {
exists = false;
item = createItemForContact(contact, exists);
if (!exists) {
connect(item, SIGNAL(changed()), SLOT(updateActions()));
}
}
}
void RosterWidget::onItemSelectionChanged()
{
updateActions();
}
void RosterWidget::onAddButtonClicked()
{
mAddDlgEdt->clear();
int ret = mAddDlg->exec();
if (ret == QDialog::Rejected) {
return;
}
QString username = mAddDlgEdt->text();
PendingContacts *pcontacts = mConn->contactManager()->contactsForIdentifiers(
QStringList() << username);
connect(pcontacts,
SIGNAL(finished(Tp::PendingOperation *)),
SLOT(onContactRetrieved(Tp::PendingOperation *)));
}
void RosterWidget::onAuthActionTriggered(bool checked)
{
Q_UNUSED(checked);
QList<QListWidgetItem *> selectedItems = mList->selectedItems();
if (selectedItems.isEmpty()) {
return;
}
Q_ASSERT(selectedItems.size() == 1);
RosterItem *item = dynamic_cast<RosterItem*>(selectedItems.first());
if (item->contact()->publishState() != Contact::PresenceStateYes) {
item->contact()->authorizePresencePublication();
}
}
void RosterWidget::onDenyActionTriggered(bool checked)
{
Q_UNUSED(checked);
QList<QListWidgetItem *> selectedItems = mList->selectedItems();
if (selectedItems.isEmpty()) {
return;
}
Q_ASSERT(selectedItems.size() == 1);
RosterItem *item = dynamic_cast<RosterItem*>(selectedItems.first());
if (item->contact()->publishState() != Contact::PresenceStateNo) {
// The contact can't see my presence
item->contact()->removePresencePublication();
}
}
void RosterWidget::onRemoveActionTriggered(bool checked)
{
Q_UNUSED(checked);
QList<QListWidgetItem *> selectedItems = mList->selectedItems();
if (selectedItems.isEmpty()) {
return;
}
Q_ASSERT(selectedItems.size() == 1);
RosterItem *item = dynamic_cast<RosterItem*>(selectedItems.first());
if (item->contact()->subscriptionState() != Contact::PresenceStateNo) {
// The contact can't see my presence and I can't see his/her presence
item->contact()->removePresencePublication();
item->contact()->removePresenceSubscription();
}
}
void RosterWidget::onBlockActionTriggered(bool checked)
{
QList<QListWidgetItem *> selectedItems = mList->selectedItems();
if (selectedItems.isEmpty()) {
return;
}
Q_ASSERT(selectedItems.size() == 1);
RosterItem *item = dynamic_cast<RosterItem*>(selectedItems.first());
if (checked) {
item->contact()->block();
} else {
item->contact()->unblock();
}
}
void RosterWidget::onContactRetrieved(Tp::PendingOperation *op)
{
PendingContacts *pcontacts = qobject_cast<PendingContacts *>(op);
QList<ContactPtr> contacts = pcontacts->contacts();
Q_ASSERT(pcontacts->identifiers().size() == 1);
QString username = pcontacts->identifiers().first();
if (contacts.size() != 1 || !contacts.first()) {
QMessageBox msgBox;
msgBox.setText(QString(QLatin1String("Unable to add contact \"%1\"")).arg(username));
msgBox.exec();
return;
}
ContactPtr contact = contacts.first();
qDebug() << "Request presence subscription for contact" << username;
bool exists = false;
RosterItem *item = createItemForContact(contact, exists);
if (!exists) {
connect(item, SIGNAL(changed()), SLOT(updateActions()));
}
contact->requestPresenceSubscription();
}
void RosterWidget::updateActions()
{
QList<QListWidgetItem *> selectedItems = mList->selectedItems();
if (selectedItems.isEmpty()) {
mAuthAction->setEnabled(false);
mDenyAction->setEnabled(false);
mRemoveAction->setEnabled(false);
mBlockAction->setEnabled(false);
updateActions(0);
return;
}
Q_ASSERT(selectedItems.size() == 1);
RosterItem *item = dynamic_cast<RosterItem*>(selectedItems.first());
ContactPtr contact = item->contact();
ContactManagerPtr manager = contact->manager();
qDebug() << "Contact" << contact->id() << "selected";
qDebug() << " subscription state:" << contact->subscriptionState();
qDebug() << " publish state :" << contact->publishState();
qDebug() << " blocked :" << contact->isBlocked();
if (manager->canAuthorizePresencePublication() &&
contact->publishState() == Contact::PresenceStateAsk) {
mAuthAction->setEnabled(true);
} else {
mAuthAction->setEnabled(false);
}
if (manager->canRemovePresencePublication() &&
contact->publishState() != Contact::PresenceStateNo) {
mDenyAction->setEnabled(true);
} else {
mDenyAction->setEnabled(false);
}
if (manager->canRemovePresenceSubscription() &&
contact->subscriptionState() != Contact::PresenceStateNo) {
mRemoveAction->setEnabled(true);
} else {
mRemoveAction->setEnabled(false);
}
if (manager->canBlockContacts() &&
contact->publishState() == Contact::PresenceStateYes) {
mBlockAction->setEnabled(true);
} else {
mBlockAction->setEnabled(false);
}
mBlockAction->setChecked(contact->isBlocked());
updateActions(item);
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01005.html0000644000175100017520000001123712530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactFactory Member List

This is the complete list of members for Tp::ContactFactory, including all inherited members.

addFeature(const Feature &feature)Tp::ContactFactory
addFeatures(const Features &features)Tp::ContactFactory
construct(ContactManager *manager, const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes) const Tp::ContactFactoryprotectedvirtual
ContactFactory(const Features &features)Tp::ContactFactoryprotected
create(const Features &features=Features())Tp::ContactFactorystatic
features() const Tp::ContactFactory
prepare(const ContactPtr &contact) const Tp::ContactFactoryprotectedvirtual
RefCounted()Tp::RefCountedinline
~ContactFactory()Tp::ContactFactoryvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00710_source.html0000644000175100017520000005506312530426257022521 0ustar00kaffeinekaffeine00000000000000 generic-capability-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
generic-capability-filter.h
1 
23 #ifndef _TelepathyQt_generic_capability_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_generic_capability_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/ConnectionCapabilities>
31 #include <TelepathyQt/Filter>
32 #include <TelepathyQt/Types>
33 
34 namespace Tp
35 {
36 
37 template <class T>
39 {
40 public:
43  {
45  rccSpecs));
46  }
47 
48  inline virtual ~GenericCapabilityFilter() { }
49 
50  inline virtual bool isValid() const { return true; }
51 
52  inline virtual bool matches(const SharedPtr<T> &t) const
53  {
54  bool supportedRcc;
55  RequestableChannelClassSpecList objectRccSpecs = t->capabilities().allClassSpecs();
56  Q_FOREACH (const RequestableChannelClassSpec &filterRccSpec, mFilter) {
57  supportedRcc = false;
58 
59  Q_FOREACH (const RequestableChannelClassSpec &objectRccSpec, objectRccSpecs) {
60  /* check if fixed properties match */
61  if (filterRccSpec.fixedProperties() == objectRccSpec.fixedProperties()) {
62  supportedRcc = true;
63 
64  /* check if all allowed properties in the filter RCC
65  * are in the object RCC allowed properties */
66  Q_FOREACH (const QString &value, filterRccSpec.allowedProperties()) {
67  if (!objectRccSpec.allowsProperty(value)) {
68  /* one of the properties in the filter RCC
69  * allowed properties is not in the object RCC
70  * allowed properties */
71  supportedRcc = false;
72  break;
73  }
74  }
75 
76  /* this RCC is supported, no need to check anymore */
77  if (supportedRcc) {
78  break;
79  }
80  }
81  }
82 
83  /* one of the filter RCC is not supported, this object
84  * won't match filter */
85  if (!supportedRcc) {
86  return false;
87  }
88  }
89 
90  return true;
91  }
92 
93  inline RequestableChannelClassSpecList filter() const { return mFilter; }
94 
96  {
97  mFilter.append(rccSpec.bareClass());
98  }
99 
101  {
102  mFilter = rccSpecs.bareClasses();
103  }
104 
105 private:
107  : Filter<T>(), mFilter(rccSpecs) { }
108 
109  RequestableChannelClassSpecList mFilter;
110 };
111 
112 } // Tp
113 
114 #endif
void setRequestableChannelClassesSubset(const RequestableChannelClassSpecList &rccSpecs)
Definition: generic-capability-filter.h:100
The RequestableChannelClassSpec class represents a Telepathy requestable channel class.
Definition: requestable-channel-class-spec.h:36
RequestableChannelClass bareClass() const
Definition: requestable-channel-class-spec.cpp:583
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
virtual ~GenericCapabilityFilter()
Definition: generic-capability-filter.h:48
RequestableChannelClassList bareClasses() const
Definition: requestable-channel-class-spec.h:125
virtual bool isValid() const
Definition: generic-capability-filter.h:50
void addRequestableChannelClassSubset(const RequestableChannelClassSpec &rccSpec)
Definition: generic-capability-filter.h:95
virtual bool matches(const SharedPtr< T > &t) const
Definition: generic-capability-filter.h:52
QStringList allowedProperties() const
Definition: requestable-channel-class-spec.cpp:575
static SharedPtr< GenericCapabilityFilter< T > > create(const RequestableChannelClassSpecList &rccSpecs=RequestableChannelClassSpecList())
Definition: generic-capability-filter.h:41
RequestableChannelClassSpecList filter() const
Definition: generic-capability-filter.h:93
bool allowsProperty(const QString &name) const
Definition: requestable-channel-class-spec.cpp:567
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101
The GenericCapabilityFilter class provides a generic filter object to be used to filter objects by ca...
Definition: generic-capability-filter.h:38
QVariantMap fixedProperties() const
Definition: requestable-channel-class-spec.cpp:559


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00359.html0000644000175100017520000003265712530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller2< Functor, R, Arg1, Arg2 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller2< Functor, R, Arg1, Arg2 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller2< Functor, R, Arg1, Arg2 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1, Arg2)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller2 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller2< Functor, R, Arg1, Arg2 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller2< Functor, R, Arg1, Arg2 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 , class Arg2 >
typedef R Tp::FunctorCaller2< Functor, R, Arg1, Arg2 >::ResultType
template<class Functor , class R , class Arg1 , class Arg2 >
typedef R(* Tp::FunctorCaller2< Functor, R, Arg1, Arg2 >::InvokeType)(AbstractFunctorCaller *, Arg1, Arg2)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 , class Arg2 >
Tp::FunctorCaller2< Functor, R, Arg1, Arg2 >::FunctorCaller2 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 , class Arg2 >
static ResultType Tp::FunctorCaller2< Functor, R, Arg1, Arg2 >::invoke ( AbstractFunctorCaller call,
Arg1  a1,
Arg2  a2 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00103.html0000644000175100017520000006053312530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelHoldInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Hold. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback3< void, const
Tp::LocalHoldState &, const
Tp::LocalHoldStateReason
&, DBusError * > 
SetHoldStateCallback
 

Signals

void holdStateChanged (const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~BaseChannelHoldInterface ()
 
QVariantMap immutableProperties () const
 
Tp::LocalHoldState getHoldState () const
 
Tp::LocalHoldStateReason getHoldReason () const
 
void setHoldState (const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason)
 
void setSetHoldStateCallback (const SetHoldStateCallback &cb)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelHoldInterfacePtr create ()
 
template<typename BaseChannelHoldInterfaceSubclass >
static SharedPtr
< BaseChannelHoldInterfaceSubclass > 
create ()
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Hold.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelHoldInterface::~BaseChannelHoldInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelHoldInterfacePtr Tp::BaseChannelHoldInterface::create ( )
inlinestatic
template<typename BaseChannelHoldInterfaceSubclass >
static SharedPtr<BaseChannelHoldInterfaceSubclass> Tp::BaseChannelHoldInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelHoldInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::LocalHoldState Tp::BaseChannelHoldInterface::getHoldState ( ) const
Tp::LocalHoldStateReason Tp::BaseChannelHoldInterface::getHoldReason ( ) const
void Tp::BaseChannelHoldInterface::setHoldState ( const Tp::LocalHoldState state,
const Tp::LocalHoldStateReason reason 
)
void Tp::BaseChannelHoldInterface::setSetHoldStateCallback ( const SetHoldStateCallback cb)
void Tp::BaseChannelHoldInterface::holdStateChanged ( const Tp::LocalHoldState state,
const Tp::LocalHoldStateReason reason 
)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01074.html0000644000175100017520000001710412530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingHandles Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00919.html0000644000175100017520000020454612530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Account Member List

This is the complete list of members for Tp::Account, including all inherited members.

Account(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature)Tp::Accountprotected
actualFeatures() const Tp::ReadyObjectvirtual
allowedPresenceStatuses(bool includeAllStatuses=false) const Tp::Account
automaticPresenceTp::Account
automaticPresence() const Tp::Account
automaticPresenceChanged(const Tp::Presence &automaticPresence)Tp::Accountsignal
avatarTp::Account
avatar() const Tp::Account
avatarChanged(const Tp::Avatar &avatar)Tp::Accountsignal
avatarRequirementsTp::Account
avatarRequirements() const Tp::Account
baseInterface() const Tp::Accountprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Account >
capabilitiesTp::Account
capabilities() const Tp::Account
capabilitiesChanged(const Tp::ConnectionCapabilities &capabilities)Tp::Accountsignal
changingPresenceTp::Account
changingPresence(bool value)Tp::Accountsignal
channelFactory() const Tp::Account
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Account >
cmNameTp::Account
cmName() const Tp::Account
connectionTp::Account
connection() const Tp::Account
connectionChanged(const Tp::ConnectionPtr &connection)Tp::Accountsignal
connectionErrorTp::Account
connectionError() const Tp::Account
connectionErrorDetailsTp::Account
connectionErrorDetails() const Tp::Account
connectionFactory() const Tp::Account
connectionStatusTp::Account
connectionStatus() const Tp::Account
connectionStatusChanged(Tp::ConnectionStatus status)Tp::Accountsignal
connectionStatusReasonTp::Account
connectionStatusReason() const Tp::Account
connectsAutomaticallyTp::Account
connectsAutomatically() const Tp::Account
connectsAutomaticallyPropertyChanged(bool connectsAutomatically)Tp::Accountsignal
contactFactory() const Tp::Account
create(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::Accountstatic
create(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::Accountstatic
createAndHandleChannel(const QVariantMap &requestedProperties, const QDateTime &userActionTime)Tp::Account
createAndHandleConferenceCall(const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceCall(const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceStreamedMediaCall(const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceStreamedMediaCall(const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceTextChat(const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceTextChat(const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceTextChatroom(const QString &roomName, const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleConferenceTextChatroom(const QString &roomName, const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleContactSearch(const QString &server=QString(), uint limit=0, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleDBusTube(const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleDBusTube(const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleFileTransfer(const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleFileTransfer(const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleStreamTube(const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createAndHandleStreamTube(const ContactPtr &contact, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
createChannel(const QVariantMap &requestedProperties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceCall(const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceCall(const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceStreamedMediaCall(const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceStreamedMediaCall(const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceTextChat(const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceTextChat(const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceTextChatroom(const QString &roomName, const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createConferenceTextChatroom(const QString &roomName, const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createContactSearch(const QString &server, uint limit=0, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createDBusTube(const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createDBusTube(const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createDBusTubeRoom(const QString &room, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createFileTransfer(const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createFileTransfer(const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createStreamTube(const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
createStreamTube(const ContactPtr &contact, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
currentPresenceTp::Account
currentPresence() const Tp::Account
currentPresenceChanged(const Tp::Presence &currentPresence)Tp::Accountsignal
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
dispatcherInterface() const Tp::Accountprotected
displayNameTp::Account
displayName() const Tp::Account
displayNameChanged(const QString &displayName)Tp::Accountsignal
enabledTp::Account
ensureAndHandleAudioCall(const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleAudioCall(const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleAudioVideoCall(const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleAudioVideoCall(const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleChannel(const QVariantMap &requestedProperties, const QDateTime &userActionTime)Tp::Account
ensureAndHandleStreamedMediaAudioCall(const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleStreamedMediaAudioCall(const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleStreamedMediaCall(const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleStreamedMediaCall(const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleStreamedMediaVideoCall(const QString &contactIdentifier, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleStreamedMediaVideoCall(const ContactPtr &contact, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleTextChat(const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleTextChat(const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleTextChatroom(const QString &roomName, const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleVideoCall(const QString &contactIdentifier, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAndHandleVideoCall(const ContactPtr &contact, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime())Tp::Account
ensureAudioCall(const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureAudioCall(const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureAudioVideoCall(const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureAudioVideoCall(const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureChannel(const QVariantMap &requestedProperties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureStreamedMediaAudioCall(const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureStreamedMediaAudioCall(const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureStreamedMediaCall(const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureStreamedMediaCall(const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureStreamedMediaVideoCall(const QString &contactIdentifier, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureStreamedMediaVideoCall(const ContactPtr &contact, bool withAudio=false, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureTextChat(const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureTextChat(const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureTextChatroom(const QString &roomName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureVideoCall(const QString &contactIdentifier, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
ensureVideoCall(const ContactPtr &contact, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints())Tp::Account
FeatureAvatarTp::Accountstatic
FeatureCapabilitiesTp::Accountstatic
FeatureCoreTp::Accountstatic
FeatureProfileTp::Accountstatic
FeatureProtocolInfoTp::Accountstatic
firstOnline()Tp::Accountsignal
hasBeenOnlineTp::Account
hasBeenOnline() const Tp::Account
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Account >inline
iconNameTp::Account
iconName() const Tp::Account
iconNameChanged(const QString &iconName)Tp::Accountsignal
interface() constTp::OptionalInterfaceFactory< Account >inline
interfaces() constTp::OptionalInterfaceFactory< Account >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Account >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isChangingPresence() const Tp::Account
isEnabled() const Tp::Account
isOnline() const Tp::Account
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
isValidAccount() const Tp::Account
maxPresenceStatusMessageLength() const Tp::Account
missingFeatures() const Tp::ReadyObjectvirtual
nicknameTp::Account
nickname() const Tp::Account
nicknameChanged(const QString &nickname)Tp::Accountsignal
normalizedNameTp::Account
normalizedName() const Tp::Account
normalizedNameChanged(const QString &normalizedName)Tp::Accountsignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
onlineTp::Account
onlinenessChanged(bool online)Tp::Accountsignal
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Account >inline
OptionalInterfaceFactory(Account *this_)Tp::OptionalInterfaceFactory< Account >inline
parametersTp::Account
parameters() const Tp::Account
parametersChanged(const QVariantMap &parameters)Tp::Accountsignal
profileTp::Account
profile() const Tp::Account
profileChanged(const Tp::ProfilePtr &profile)Tp::Accountsignal
propertyChanged(const QString &propertyName)Tp::Objectsignal
protocolInfoTp::Account
protocolInfo() const Tp::Account
protocolNameTp::Account
protocolName() const Tp::Account
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
reconnect()Tp::Account
RefCounted()Tp::RefCountedinline
remove()Tp::Account
removed()Tp::Accountsignal
requestedFeatures() const Tp::ReadyObjectvirtual
requestedPresenceTp::Account
requestedPresence() const Tp::Account
requestedPresenceChanged(const Tp::Presence &requestedPresence)Tp::Accountsignal
requestsSucceedWithChannel() const Tp::Account
serviceNameTp::Account
serviceName() const Tp::Account
serviceNameChanged(const QString &serviceName)Tp::Accountsignal
setAutomaticPresence(const Presence &presence)Tp::Account
setAvatar(const Avatar &avatar)Tp::Account
setBusName(const QString &busName)Tp::DBusProxyprotected
setConnectsAutomatically(bool value)Tp::Account
setDisplayName(const QString &value)Tp::Account
setEnabled(bool value)Tp::Account
setIconName(const QString &value)Tp::Account
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Account >inlineprotected
setNickname(const QString &value)Tp::Account
setRequestedPresence(const Presence &presence)Tp::Account
setServiceName(const QString &value)Tp::Account
stateChanged(bool state)Tp::Accountsignal
StatelessDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatelessDBusProxy
supportsRequestHints() const Tp::Account
uniqueIdentifierTp::Account
uniqueIdentifier() const Tp::Account
updateParameters(const QVariantMap &set, const QStringList &unset)Tp::Account
validTp::Account
validityChanged(bool validity)Tp::Accountsignal
~Account()Tp::Accountvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Account >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatelessDBusProxy()Tp::StatelessDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00707_source.html0000644000175100017520000002225512530426257022524 0ustar00kaffeinekaffeine00000000000000 fixed-feature-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
fixed-feature-factory.h
1 
23 #ifndef _TelepathyQt_fixed_feature_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_fixed_feature_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/SharedPtr>
32 
33 #include <TelepathyQt/DBusProxyFactory>
34 
35 class QDBusConnection;
36 
37 namespace Tp
38 {
39 
40 class Feature;
41 class Features;
42 
43 class TP_QT_EXPORT FixedFeatureFactory : public DBusProxyFactory
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(FixedFeatureFactory)
47 
48 public:
49  virtual ~FixedFeatureFactory();
50 
51  Features features() const;
52 
53  void addFeature(const Feature &feature);
54  void addFeatures(const Features &features);
55 
56 protected:
57  FixedFeatureFactory(const QDBusConnection &bus);
58 
59  virtual Features featuresFor(const DBusProxyPtr &proxy) const;
60 
61 private:
62  struct Private;
63  friend struct Private;
64  Private *mPriv;
65 };
66 
67 } // Tp
68 
69 #endif
The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set o...
Definition: fixed-feature-factory.h:43
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching...
Definition: dbus-proxy-factory.h:48
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00418.html0000644000175100017520000002151712530426257021143 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClientObserver::ObserverInfo Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientObserver::ObserverInfo Class Reference

The AbstractClientObserver::ObserverInfo class provides a wrapper around the additional info about the channels passed to observeChannels(). More...

#include <TelepathyQt/AbstractClientObserver>

Public Member Functions

 ObserverInfo (const QVariantMap &info=QVariantMap())
 
 ObserverInfo (const ObserverInfo &other)
 
 ~ObserverInfo ()
 
ObserverInfooperator= (const ObserverInfo &other)
 
bool isRecovering () const
 
QVariantMap allInfo () const
 

Detailed Description

The AbstractClientObserver::ObserverInfo class provides a wrapper around the additional info about the channels passed to observeChannels().

See Also
AbstractClientObserver

Constructor & Destructor Documentation

Tp::AbstractClientObserver::ObserverInfo::ObserverInfo ( const QVariantMap &  info = QVariantMap())
Tp::AbstractClientObserver::ObserverInfo::ObserverInfo ( const ObserverInfo other)
Tp::AbstractClientObserver::ObserverInfo::~ObserverInfo ( )

Member Function Documentation

AbstractClientObserver::ObserverInfo & Tp::AbstractClientObserver::ObserverInfo::operator= ( const ObserverInfo other)
bool Tp::AbstractClientObserver::ObserverInfo::isRecovering ( ) const
inline
QVariantMap Tp::AbstractClientObserver::ObserverInfo::allInfo ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00172.html0000644000175100017520000010417312530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Close (const QDBusMessage &dbusMessage)
 
QString GetChannelType (const QDBusMessage &dbusMessage)
 
uint GetHandle (const QDBusMessage &dbusMessage, uint &targetHandle)
 
QStringList GetInterfaces (const QDBusMessage &dbusMessage)
 

Signals

void Closed ()
 

Public Member Functions

QString ChannelType () const
 
QStringList Interfaces () const
 
uint TargetHandle () const
 
QString TargetID () const
 
uint TargetHandleType () const
 
bool Requested () const
 
uint InitiatorHandle () const
 
QString InitiatorID () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelAdaptor::ChannelType ( ) const

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

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

The channel's type. This cannot change once the channel has been created.

For compatibility between older connection managers and newer clients, if this is unavailable or is an empty string, clients MUST use the result of calling GetChannelType() .

The GetAll method lets clients retrieve all properties in one round-trip, which is desirable.

When requesting a channel, the request MUST specify a channel type, and the request MUST fail if the specified channel type cannot be supplied.

Common sense.
Returns
The value of exported property ChannelType.
QStringList Tp::Service::ChannelAdaptor::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.

Extra interfaces provided by this channel. This SHOULD NOT include the channel type and the Channel interface itself, and cannot change once the channel has been created.

For compatibility between older connection managers and newer clients, if this is unavailable, or if this is an empty list and ChannelType is an empty string, clients MUST use the result of calling GetInterfaces() instead. If this is an empty list but ChannelType is non-empty, clients SHOULD NOT call GetInterfaces; this implies that connection managers that implement the ChannelType property MUST also implement the Interfaces property correctly.

The GetAll method lets clients retrieve all properties in one round-trip, which is desirable.

When requesting a channel with a particular value for this property, the request must fail without side-effects unless the connection manager expects to be able to provide a channel whose interfaces include at least the interfaces requested.

Returns
The value of exported property Interfaces.
uint Tp::Service::ChannelAdaptor::TargetHandle ( ) const

Return the value of the exported D-Bus object property TargetHandle of type uint.

Adaptees should export this property as a Qt property named 'targetHandle' with type uint.

The handle (a representation for the identifier) of the contact, chatroom, etc. with which this handle communicates. Its type is given by the TargetHandleType property.

This is fixed for the lifetime of the channel, so channels which could potentially be used to communicate with multiple contacts, and do not have an identity of their own (such as a Handle_Type_Room handle), must have TargetHandleType set to Handle_Type_None and TargetHandle set to 0.

Unlike in the telepathy-spec 0.16 API, there is no particular uniqueness guarantee - there can be many channels with the same (channel type, handle type, handle) tuple. This is necessary to support conversation threads in XMPP and SIP, for example.

If this is present in a channel request, it must be nonzero, TargetHandleType MUST be present and not Handle_Type_None, and TargetID MUST NOT be present. Properties from org.freedesktop.Telepathy.Channel.Interface.Addressing1 MUST NOT be present.

The channel that satisfies the request MUST either:

  • have the specified TargetHandle property; or
  • have TargetHandleType = Handle_Type_None, TargetHandle = 0, and be configured such that it could communicate with the specified handle in some other way (e.g. have the requested contact handle in its Group interface)
Returns
The value of exported property TargetHandle.
QString Tp::Service::ChannelAdaptor::TargetID ( ) const

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

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

The string that would result from inspecting the TargetHandle property (i.e. the identifier in the IM protocol of the contact, room, etc. with which this channel communicates), or the empty string if the TargetHandle is 0.

The presence of this property avoids the following race condition:

  • New channel C is signalled with target handle T
  • Client calls ConnectionInterface::InspectHandles() (CONTACT, [T])
  • Channel C closes, removing the last reference to handle T
  • ConnectionInterface::InspectHandles() (CONTACT, [T]) returns an error

If this is present in a channel request, TargetHandleType MUST be present and not Handle_Type_None, and TargetHandle MUST NOT be present. Properties from org.freedesktop.Telepathy.Channel.Interface.Addressing1 MUST NOT be present.The request MUST fail with error InvalidHandle, without side-effects, if the requested TargetID would not be accepted by ConnectionInterface::RequestHandles() .

The returned channel must be related to the handle corresponding to the given identifier, in the same way as if TargetHandle had been part of the request instead.

Requesting channels with a string identifier saves a round-trip (the call to RequestHandles). It also allows the channel dispatcher to accept a channel request for an account that is not yet connected (and thus has no valid handles), bring the account online, and pass on the same parameters to the new connection's CreateChannel method.

Returns
The value of exported property TargetID.
uint Tp::Service::ChannelAdaptor::TargetHandleType ( ) const

Return the value of the exported D-Bus object property TargetHandleType of type uint.

Adaptees should export this property as a Qt property named 'targetHandleType' with type uint.

The type of TargetHandle .

If this is omitted from a channel request, connection managers SHOULD treat this as equivalent to Handle_Type_None.

If this is omitted or is Handle_Type_None, TargetHandle and TargetID MUST be omitted from the request.

Returns
The value of exported property TargetHandleType.
bool Tp::Service::ChannelAdaptor::Requested ( ) const

Return the value of the exported D-Bus object property Requested of type bool.

Adaptees should export this property as a Qt property named 'requested' with type bool.

True if this channel was created in response to a local request, such as a call to ConnectionInterface::RequestChannel() or ConnectionInterfaceRequestsInterface::CreateChannel() .

The idea of this property is to distinguish between "incoming" and "outgoing" channels, in a way that doesn't break down when considering special cases like contact lists that are automatically created on connection to the server, or chatrooms that an IRC proxy/bouncer like irssi-proxy or bip was already in.

The reason we want to make that distinction is that UIs for things that the user explicitly requested should start up automatically, whereas for incoming messages and VoIP calls we should first ask the user whether they want to open the messaging UI or accept the call.

If the channel was not explicitly requested (even if it was created as a side-effect of a call to one of those functions, e.g. because joining a Tube in a MUC context on XMPP implies joining that MUC), then this property is false.

For compatibility with older connection managers, clients SHOULD assume that this property is true if they see a channel announced by the ConnectionInterface::NewChannel() signal with the suppress_handler parameter set to true.

In a correct connection manager, the only way to get such a channel is to request it.

Clients MAY additionally assume that this property is false if they see a channel announced by the NewChannel signal with the suppress_handler parameter set to false.

This is more controversial, since it's possible to get that parameter set to false by requesting a channel. However, there's no good reason to do so, and we've deprecated this practice.

In the particular case of the channel dispatcher, the only side-effect of wrongly thinking a channel is unrequested is likely to be that the user has to confirm that they want to use it, so it seems fairly harmless to assume in the channel dispatcher that channels with suppress_handler false are indeed unrequested.

It does not make sense for this property to be in channel requests—it will always be true for channels returned by CreateChannel, and callers of EnsureChannel cannot control whether an existing channel was originally requested locally—so it MUST NOT be accepted.

Returns
The value of exported property Requested.
uint Tp::Service::ChannelAdaptor::InitiatorHandle ( ) const

Return the value of the exported D-Bus object property InitiatorHandle of type uint.

Adaptees should export this property as a Qt property named 'initiatorHandle' with type uint.

The contact who initiated the channel; for instance, the contact who invited the local user to a chatroom, or the contact who initiated a call.

This does not necessarily represent the contact who created the underlying protocol-level construct. For instance, if Rob creates a chatroom, Will joins that chatroom, and Will invites Simon to join it, then Simon will see Will as the InitiatorHandle of the channel representing the chatroom.

The room creator is generally a less useful piece of information than the inviter, is less likely to be available at invitation time (i.e. can't necessarily be an immutable property), and is less likely to be available at all. The creator of a chatroom is not currently available via Telepathy; if added in future, it is likely to be made available as a property on the Chatroom interface (bug 23151).

For channels requested by the local user, this MUST be the value of ConnectionInterface::SelfHandle at the time the channel was created (i.e. not a channel-specific handle).

On some protocols, the SelfHandle may change (as signalled by ConnectionInterface::SelfContactChanged() ), but this property is immutable. Hence, locally-requested channels' InitiatorHandle and InitiatorID may not match the current SelfHandle; Requested can be used to determine whether the channel was created locally.

For channels requested by a remote user, this MUST be their handle. If unavailable or not applicable, this MUST be 0 (for instance, contact lists are not really initiated by anyone in particular, and it's easy to imagine a protocol where chatroom invitations can be anonymous).

For channels with the ChannelInterfaceGroupInterface interface, this SHOULD be the same contact who is signalled as the "Actor" causing the self-handle to be placed in the local-pending set.

This SHOULD NOT be a channel-specific handle, if possible.

It does not make sense for this property to be in channel requests - the initiator will always be the local user - so it MUST NOT be accepted.

Returns
The value of exported property InitiatorHandle.
QString Tp::Service::ChannelAdaptor::InitiatorID ( ) const

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

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

The string that would result from inspecting the InitiatorHandle property (i.e. the initiator's identifier in the IM protocol).

The presence of this property avoids the following race condition:

  • New StreamedMedia channel C is signalled with initiator handle I
  • Client calls ConnectionInterface::InspectHandles() (CONTACT, [I])
  • Channel C closes, removing the last reference to handle I
  • ConnectionInterface::InspectHandles() (CONTACT, [I]) returns an error
  • Client can indicate that a call was missed, but not who called!

It does not make sense for this property to be in channel requests - the initiator will always be the local user - so it MUST NOT be accepted.

Returns
The value of exported property InitiatorID.
void Tp::Service::ChannelAdaptor::Close ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void close(const Tp::Service::ChannelAdaptor::CloseContextPtr &context);

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

Request that the channel be closed. This is not the case until the Closed signal has been emitted, and depending on the connection manager this may simply remove you from the channel on the server, rather than causing it to stop existing entirely. Some channels such as contact list channels may not be closed.

QString Tp::Service::ChannelAdaptor::GetChannelType ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getChannelType(const Tp::Service::ChannelAdaptor::GetChannelTypeContextPtr &context);

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

Returns the interface name for the type of this channel. Clients SHOULD use the ChannelType property instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip.

Returns
The interface name
uint Tp::Service::ChannelAdaptor::GetHandle ( const QDBusMessage &  dbusMessage,
uint &  targetHandle 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getHandle(const Tp::Service::ChannelAdaptor::GetHandleContextPtr &context);

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

Returns the handle type and number if this channel represents a communication with a particular contact, room or server-stored list, or zero if it is transient and defined only by its contents. Clients SHOULD use the TargetHandle and TargetHandleType properties instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip.

Parameters
targetHandleOutput parameter
The same as TargetHandle.
Returns
The same as TargetHandleType.
QStringList Tp::Service::ChannelAdaptor::GetInterfaces ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getInterfaces(const Tp::Service::ChannelAdaptor::GetInterfacesContextPtr &context);

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

Get the optional interfaces implemented by the channel. Clients SHOULD use the Interfaces property instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip.

Returns
An array of the D-Bus interface names
void Tp::Service::ChannelAdaptor::Closed ( )
signal

Represents the exported D-Bus signal Closed on this object.

Adaptees should export this signal as a Qt signal with the following signature: void closed();

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01133.html0000644000175100017520000000525012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallMemberMap Member List

This is the complete list of members for Tp::CallMemberMap, including all inherited members.

CallMemberMap()Tp::CallMemberMapinline
CallMemberMap(const QMap< uint, uint > &a)Tp::CallMemberMapinline
operator=(const QMap< uint, uint > &a)Tp::CallMemberMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00988.html0000644000175100017520000005253612530426260021156 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelClassSpec Member List

This is the complete list of members for Tp::ChannelClassSpec, including all inherited members.

allProperties() const Tp::ChannelClassSpec
audioCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
bareClass() const Tp::ChannelClassSpec
ChannelClassSpec()Tp::ChannelClassSpec
ChannelClassSpec(const ChannelClass &cc)Tp::ChannelClassSpec
ChannelClassSpec(const QVariantMap &props)Tp::ChannelClassSpec
ChannelClassSpec(const QString &channelType, HandleType targetHandleType, const QVariantMap &otherProperties=QVariantMap())Tp::ChannelClassSpec
ChannelClassSpec(const QString &channelType, HandleType targetHandleType, bool requested, const QVariantMap &otherProperties=QVariantMap())Tp::ChannelClassSpec
ChannelClassSpec(const ChannelClassSpec &other, const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpec
channelType() const Tp::ChannelClassSpecinline
contactSearch(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
hasCallInitialAudioFlag() const Tp::ChannelClassSpecinline
hasCallInitialVideoFlag() const Tp::ChannelClassSpecinline
hasProperty(const QString &qualifiedName) const Tp::ChannelClassSpec
hasRequested() const Tp::ChannelClassSpecinline
hasStreamedMediaInitialAudioFlag() const Tp::ChannelClassSpecinline
hasStreamedMediaInitialVideoFlag() const Tp::ChannelClassSpecinline
incomingDBusTube(const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
incomingFileTransfer(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
incomingRoomDBusTube(const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
incomingRoomStreamTube(const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
incomingStreamTube(const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
isRequested() const Tp::ChannelClassSpecinline
isSubsetOf(const ChannelClassSpec &other) const Tp::ChannelClassSpec
isValid() const Tp::ChannelClassSpec
matches(const QVariantMap &immutableProperties) const Tp::ChannelClassSpec
mediaCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
operator=(const ChannelClassSpec &other)Tp::ChannelClassSpec
operator==(const ChannelClassSpec &other) const Tp::ChannelClassSpecinline
outgoingDBusTube(const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
outgoingFileTransfer(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
outgoingRoomDBusTube(const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
outgoingRoomStreamTube(const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
outgoingStreamTube(const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
property(const QString &qualifiedName) const Tp::ChannelClassSpec
roomList(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
serverAuthentication(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
setCallInitialAudioFlag()Tp::ChannelClassSpecinline
setCallInitialVideoFlag()Tp::ChannelClassSpecinline
setChannelType(const QString &type)Tp::ChannelClassSpecinline
setProperty(const QString &qualifiedName, const QVariant &value)Tp::ChannelClassSpec
setRequested(bool requested)Tp::ChannelClassSpecinline
setStreamedMediaInitialAudioFlag()Tp::ChannelClassSpecinline
setStreamedMediaInitialVideoFlag()Tp::ChannelClassSpecinline
setTargetHandleType(HandleType type)Tp::ChannelClassSpecinline
streamedMediaAudioCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
streamedMediaCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
streamedMediaVideoCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
streamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
targetHandleType() const Tp::ChannelClassSpecinline
textChat(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
textChatroom(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
unnamedStreamedMediaAudioCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
unnamedStreamedMediaCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
unnamedStreamedMediaVideoCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
unnamedStreamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
unnamedTextChat(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
unsetCallInitialAudioFlag()Tp::ChannelClassSpecinline
unsetCallInitialVideoFlag()Tp::ChannelClassSpecinline
unsetProperty(const QString &qualifiedName)Tp::ChannelClassSpec
unsetRequested()Tp::ChannelClassSpecinline
unsetStreamedMediaInitialAudioFlag()Tp::ChannelClassSpecinline
unsetStreamedMediaInitialVideoFlag()Tp::ChannelClassSpecinline
videoCall(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
videoCallWithAudio(const QVariantMap &additionalProperties=QVariantMap())Tp::ChannelClassSpecstatic
~ChannelClassSpec()Tp::ChannelClassSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00703_source.html0000644000175100017520000004106112530426257022514 0ustar00kaffeinekaffeine00000000000000 file-transfer-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
file-transfer-channel.h
1 
23 #ifndef _TelepathyQt_file_transfer_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_file_transfer_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 
32 namespace Tp
33 {
34 
35 class TP_QT_EXPORT FileTransferChannel : public Channel
36 {
37  Q_OBJECT
38  Q_DISABLE_COPY(FileTransferChannel)
39 
40 public:
41  static const Feature FeatureCore;
42 
43  static FileTransferChannelPtr create(const ConnectionPtr &connection,
44  const QString &objectPath, const QVariantMap &immutableProperties);
45 
46  virtual ~FileTransferChannel();
47 
48  FileTransferState state() const;
49  FileTransferStateChangeReason stateReason() const;
50 
51  QString fileName() const;
52  QString contentType() const;
53  qulonglong size() const;
54  QString uri() const;
55 
56  FileHashType contentHashType() const;
57  QString contentHash() const;
58 
59  QString description() const;
60 
61  QDateTime lastModificationTime() const;
62 
63  qulonglong initialOffset() const;
64 
65  qulonglong transferredBytes() const;
66 
67  PendingOperation *cancel();
68 
69 Q_SIGNALS:
70  void stateChanged(Tp::FileTransferState state,
72  void initialOffsetDefined(qulonglong initialOffset);
73  void transferredBytesChanged(qulonglong count);
74 
75 protected:
76  FileTransferChannel(const ConnectionPtr &connection, const QString &objectPath,
77  const QVariantMap &immutableProperties,
78  const Feature &coreFeature = FileTransferChannel::FeatureCore);
79 
80  SupportedSocketMap availableSocketTypes() const;
81 
82  virtual void connectToHost();
83  bool isConnected() const;
84  void setConnected();
85 
86  bool isFinished() const;
87  virtual void setFinished();
88 
89 private Q_SLOTS:
90  TP_QT_NO_EXPORT void gotProperties(QDBusPendingCallWatcher *watcher);
91 
92  TP_QT_NO_EXPORT void changeState();
93  TP_QT_NO_EXPORT void onStateChanged(uint state, uint stateReason);
94  TP_QT_NO_EXPORT void onInitialOffsetDefined(qulonglong initialOffset);
95  TP_QT_NO_EXPORT void onTransferredBytesChanged(qulonglong count);
96 
97 protected Q_SLOTS:
98  TP_QT_NO_EXPORT void onUriDefined(const QString &uri);
99 
100 private:
101  struct Private;
102  friend struct Private;
103  Private *mPriv;
104 };
105 
106 } // Tp
107 
108 #endif
static const Feature FeatureCore
Definition: file-transfer-channel.h:41
FileHashType
Definition: build/TelepathyQt/_gen/constants.h:2678
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
FileTransferState
Definition: build/TelepathyQt/_gen/constants.h:2577
FileTransferStateChangeReason
Definition: build/TelepathyQt/_gen/constants.h:2630
Definition: build/TelepathyQt/_gen/types.h:3100
The FileTransferChannel class represents a Telepathy channel of type FileTransfer.
Definition: file-transfer-channel.h:35
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00487.html0000644000175100017520000003647612530426260021155 0ustar00kaffeinekaffeine00000000000000 Tp::ReadyObject Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <>>

Inherited by Tp::DBusProxy, Tp::ProfileManager, and Tp::StreamedMediaStream [private].

Public Member Functions

 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 

Protected Member Functions

ReadinessHelperreadinessHelper () const
 

Detailed Description

<TelepathyQt/ReadyObject>

Constructor & Destructor Documentation

Tp::ReadyObject::ReadyObject ( RefCounted object,
const Feature featureCore 
)

Construct a new ReadyObject object.

Parameters
objectThe RefCounted the object refers to.
featureCoreThe core feature of the object.
Tp::ReadyObject::ReadyObject ( DBusProxy proxy,
const Feature featureCore 
)

Construct a new ReadyObject object.

Parameters
proxyThe DBusProxy the object refers to.
featureCoreThe core feature of the object.
Tp::ReadyObject::~ReadyObject ( )
virtual

Class destructor.

Member Function Documentation

bool Tp::ReadyObject::isReady ( const Features features = Features()) const
virtual

Return whether this object has finished its initial setup.

This is mostly useful as a sanity check, in code that shouldn't be run until the object is ready. To wait for the object to be ready, call becomeReady() and connect to the finished signal on the result.

Parameters
featuresThe features which should be tested
Returns
true if the object has finished its initial setup for basic functionality plus the given features
PendingReady * Tp::ReadyObject::becomeReady ( const Features requestedFeatures = Features())
virtual

Return a pending operation which will succeed when this object finishes its initial setup, or will fail if a fatal error occurs during this initial setup.

If an empty set is used FeatureCore will be considered as the requested feature.

Parameters
requestedFeaturesThe features which should be enabled
Returns
A PendingReady object which will emit finished when this object has finished or failed initial setup for basic functionality plus the given features
Features Tp::ReadyObject::requestedFeatures ( ) const
virtual
Features Tp::ReadyObject::actualFeatures ( ) const
virtual
Features Tp::ReadyObject::missingFeatures ( ) const
virtual
ReadinessHelper * Tp::ReadyObject::readinessHelper ( ) const
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00231.html0000644000175100017520000013236612530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelRequestInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ChannelRequest>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Proceed (int timeout=-1)
 
QDBusPendingReply Cancel (int timeout=-1)
 

Signals

void Failed (const QString &error, const QString &message)
 
void Succeeded ()
 
void SucceededWithChannel (const QDBusObjectPath &connection, const QVariantMap &connectionProperties, const QDBusObjectPath &channel, const QVariantMap &channelProperties)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelRequestInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelRequestInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelRequestInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyAccount () const
 
Tp::PendingVariantrequestPropertyUserActionTime () const
 
Tp::PendingVariantrequestPropertyPreferredHandler () const
 
Tp::PendingVariantrequestPropertyRequests () const
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyHints () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ChannelRequestInterface::ChannelRequestInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelRequestInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelRequestInterface::ChannelRequestInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelRequestInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelRequestInterface::ChannelRequestInterface ( Tp::DBusProxy proxy)

Creates a ChannelRequestInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ChannelRequestInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.ChannelRequest", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelRequestInterface::requestPropertyAccount ( ) const
inline

Asynchronous getter for the remote object property Account of type QDBusObjectPath.

The Account on which this request was made. This property cannot change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelRequestInterface::requestPropertyUserActionTime ( ) const
inline

Asynchronous getter for the remote object property UserActionTime of type qlonglong.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This property is set when the channel request is created, and can never change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelRequestInterface::requestPropertyPreferredHandler ( ) const
inline

Asynchronous getter for the remote object property PreferredHandler of type QString.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.

This property is set when the channel request is created, and can never change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelRequestInterface::requestPropertyRequests ( ) const
inline

Asynchronous getter for the remote object property Requests of type Tp::QualifiedPropertyValueMapList.

An array of dictionaries containing desirable properties for the channel or channels to be created.

This is an array so that we could add a CreateChannels method in future without redefining the API of ChannelRequest.

This property is set when the channel request is created, and can never change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelRequestInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the extra interfaces provided by this channel request. This property cannot change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelRequestInterface::requestPropertyHints ( ) const
inline

Asynchronous getter for the remote object property Hints of type QVariantMap.

A dictionary of metadata provided by the channel requester, which the handler and other clients MAY choose to interpret. Clients MAY choose to use platform-specific keys for their own purposes, but MUST ignore unknown keys and MUST cope with expected keys being missing. Clients SHOULD namespace hint names by having them start with a reversed domain name, in the same way as D-Bus interface names.

This property might be used to pass a contact ID for a telephone number shared between two contacts from the address book to the call UI, so that if you try to call “Mumâ€, the call UI knows this rather than having to guess or show “Calling Mum or Dadâ€. The format of these contact IDs would be platform-specific, so we leave the definition of the dictionary entry up to the platform in question. But third-party channel requesters might not include the contact ID, so the call UI has to be able to deal with it not being there.

The channel dispatcher does not currently interpret any of these hints: they are solely for communication between cooperating clients. If hints that do affect the channel dispatcher are added in future, their names will start with an appropriate reversed domain name (e.g. org.freedesktop.Telepathy for hints defined by this specification, or an appropriate vendor name for third-party plugins).

This property may be set when the channel request is created, and can never change. Since it is immutable, it SHOULD be included in the dictionary of properties passed to ClientInterfaceRequestsInterface::AddRequest() by the ChannelDispatcherInterface .

The following standardised hints are defined:

org.freedesktop.Telepathy.ChannelRequest.DelegateToPreferredHandler - b
If present and True the client currently handling the channel SHOULD pass the channel to the PreferredHandler using ChannelDispatcherInterface::DelegateChannels() .
This hint allows the user to request a channel in their preferred client in a situation where there are two chat handlers (for example: requesting a channel in Empathy which is currently being handled by gnome-shell).
If the channel is currently unhandled, clients SHOULD ignore this hint.
It is assumed that Mission Control will correctly delegate an unhandled channel to the preferred Handler. This allows requesting clients to always include this hint in their channel request.
The Handler should check each ChannelRequestInterface of the Requests_Satisfied parameter of ClientHandlerInterface::HandleChannels() for the hint. The first request containing the hint SHOULD be used and all further hints SHOULD be ignored.
This covers the very unlikely case where ClientHandlerInterface::HandleChannels() satisfies two separate requests which have different PreferredHandler s.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelRequestInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelRequestInterface::Proceed ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Proceed on the remote object.

Proceed with the channel request.

The client that created this object calls this method when it has connected signal handlers for Succeeded() and Failed() .

Clients other than the client which created the ChannelRequest MUST NOT call this method.

This method SHOULD return immediately; on success, the request might still fail, but this will be indicated asynchronously by the Failed() signal.

Proceed cannot fail, unless clients have got the life-cycle of a ChannelRequest seriously wrong (e.g. a client calls this method twice, or a client that did not create the ChannelRequest calls this method). If it fails, clients SHOULD assume that the whole ChannelRequest has become useless.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelRequestInterface::Cancel ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Cancel on the remote object.

Cancel the channel request. The precise effect depends on the current progress of the request.

If the connection manager has not already been asked to create a channel, then Failed() is emitted immediately, and the channel request is removed.

If the connection manager has already been asked to create a channel but has not produced one yet (e.g. if ConnectionInterfaceRequestsInterface::CreateChannel() has been called, but has not yet returned), then the ChannelDispatcher will remember that the request has been cancelled. When the channel appears, it will be closed (if it was newly created and can be closed), and will not be dispatched to a handler.

If the connection manager has already returned a channel, but the channel has not yet been dispatched to a handler then the channel dispatcher will not dispatch that channel to a handler. If the channel was newly created for this request, the channel dispatcher will close it with ChannelInterface::Close() ; otherwise, the channel dispatcher will ignore it. In either case, Failed() will be emitted when processing has been completed.

If Failed() is emitted in response to this method, the error SHOULD be org.freedesktop.Telepathy.Error.Cancelled.

If the channel has already been dispatched to a handler, then it's too late to call this method, and the channel request will no longer exist.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelRequestInterface::Failed ( const QString &  error,
const QString &  message 
)
signal

Represents the signal Failed on the remote object.

The channel request has failed. It is no longer present, and further methods must not be called on it.

Parameters
error

The name of a D-Bus error. This can come from various sources, including the error raised by ConnectionInterfaceRequestsInterface::CreateChannel() , or an error generated to represent failure to establish the ConnectionInterface .

message
If the first argument of the D-Bus error message was a string, that 
string. Otherwise, an empty string.
void Tp::Client::ChannelRequestInterface::Succeeded ( )
signal

Represents the signal Succeeded on the remote object.

The channel request has succeeded. It is no longer present, and further methods must not be called on it.

void Tp::Client::ChannelRequestInterface::SucceededWithChannel ( const QDBusObjectPath &  connection,
const QVariantMap &  connectionProperties,
const QDBusObjectPath &  channel,
const QVariantMap &  channelProperties 
)
signal

Represents the signal SucceededWithChannel on the remote object.

Variant of the ChannelRequestInterface::Succeeded() signal allowing to get the channel which has been created.

This signal MUST be emitted if the ChannelDispatcherInterface 's ChannelDispatcherInterface::SupportsRequestHints property is true. If supported, it MUST be emitted before the Succeeded() signal.

Parameters
connection

The Connection owning the channel.

connectionProperties

A subset of the Connection's properties, currently unused. This parameter may be used in future.

channel

The channel which has been created.

channelProperties

The same immutable properties of the Channel that would appear in a ConnectionInterfaceRequestsInterface::NewChannels() signal.

void Tp::Client::ChannelRequestInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01261.html0000644000175100017520000004120112530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceGroupInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceGroupInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddMembers(const Tp::UIntList &contacts, const QString &message, int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
ChannelInterfaceGroupInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceGroupInterface
ChannelInterfaceGroupInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceGroupInterface
ChannelInterfaceGroupInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceGroupInterface
ChannelInterfaceGroupInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceGroupInterfaceexplicit
ChannelInterfaceGroupInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceGroupInterface
GetAllMembers(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetGroupFlags(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetHandleOwners(const Tp::UIntList &handles, int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetLocalPendingMembers(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetLocalPendingMembersWithInfo(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetMembers(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetRemotePendingMembers(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GetSelfHandle(int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
GroupFlagsChanged(uint added, uint removed)Tp::Client::ChannelInterfaceGroupInterfacesignal
HandleOwnersChanged(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed)Tp::Client::ChannelInterfaceGroupInterfacesignal
HandleOwnersChangedDetailed(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers)Tp::Client::ChannelInterfaceGroupInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceGroupInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MembersChanged(const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason)Tp::Client::ChannelInterfaceGroupInterfacesignal
MembersChangedDetailed(const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details)Tp::Client::ChannelInterfaceGroupInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
RemoveMembers(const Tp::UIntList &contacts, const QString &message, int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
RemoveMembersWithReason(const Tp::UIntList &contacts, const QString &message, uint reason, int timeout=-1)Tp::Client::ChannelInterfaceGroupInterfaceinlineslot
requestAllProperties() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertyGroupFlags() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertyHandleOwners() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertyLocalPendingMembers() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertyMemberIdentifiers() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertyMembers() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertyRemotePendingMembers() const Tp::Client::ChannelInterfaceGroupInterfaceinline
requestPropertySelfHandle() const Tp::Client::ChannelInterfaceGroupInterfaceinline
SelfContactChanged(uint selfHandle, const QString &selfID)Tp::Client::ChannelInterfaceGroupInterfacesignal
SelfHandleChanged(uint selfHandle)Tp::Client::ChannelInterfaceGroupInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceGroupInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01006.html0000644000175100017520000004126712530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactManager Member List

This is the complete list of members for Tp::ContactManager, including all inherited members.

addContactsToGroup(const QString &group, const QList< ContactPtr > &contacts)Tp::ContactManager
addGroup(const QString &group)Tp::ContactManager
allKnownContacts() const Tp::ContactManager
allKnownContactsChanged(const Tp::Contacts &contactsAdded, const Tp::Contacts &contactsRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::ContactManagersignal
allKnownGroups() const Tp::ContactManager
authorizePresencePublication(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::ContactManager
blockContacts(const QList< ContactPtr > &contacts)Tp::ContactManager
blockContactsAndReportAbuse(const QList< ContactPtr > &contacts)Tp::ContactManager
canAuthorizePresencePublication() const Tp::ContactManager
canBlockContacts() const Tp::ContactManager
canRemovePresencePublication() const Tp::ContactManager
canRemovePresenceSubscription() const Tp::ContactManager
canReportAbuse() const Tp::ContactManager
canRequestPresenceSubscription() const Tp::ContactManager
canRescindPresenceSubscriptionRequest() const Tp::ContactManager
connection() const Tp::ContactManager
contactsForHandles(const UIntList &handles, const Features &features=Features())Tp::ContactManager
contactsForHandles(const ReferencedHandles &handles, const Features &features=Features())Tp::ContactManager
contactsForHandles(const HandleIdentifierMap &handles, const Features &features=Features())Tp::ContactManager
contactsForIdentifiers(const QStringList &identifiers, const Features &features=Features())Tp::ContactManager
contactsForUris(const QStringList &uris, const Features &features=Features())Tp::ContactManager
contactsForVCardAddresses(const QString &vcardField, const QStringList &vcardAddresses, const Features &features=Features())Tp::ContactManager
groupAdded(const QString &group)Tp::ContactManagersignal
groupContacts(const QString &group) const Tp::ContactManager
groupMembersChanged(const QString &group, const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::ContactManagersignal
groupRemoved(const QString &group)Tp::ContactManagersignal
groupRenamed(const QString &oldGroup, const QString &newGroup)Tp::ContactManagersignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
presencePublicationRequested(const Tp::Contacts &contacts)Tp::ContactManagersignal
propertyChanged(const QString &propertyName)Tp::Objectsignal
publicationAuthorizationHasMessage() const Tp::ContactManager
publicationRejectionHasMessage() const Tp::ContactManager
publicationRemovalHasMessage() const Tp::ContactManager
RefCounted()Tp::RefCountedinline
refreshContactInfo(const QList< ContactPtr > &contact)Tp::ContactManager
removeContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::ContactManager
removeContactsFromGroup(const QString &group, const QList< ContactPtr > &contacts)Tp::ContactManager
removeGroup(const QString &group)Tp::ContactManager
removePresencePublication(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::ContactManager
removePresenceSubscription(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::ContactManager
requestContactAvatars(const QList< ContactPtr > &contacts)Tp::ContactManager
requestPresenceSubscription(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::ContactManager
state() const Tp::ContactManager
stateChanged(Tp::ContactListState state)Tp::ContactManagersignal
subscriptionRemovalHasMessage() const Tp::ContactManager
subscriptionRequestHasMessage() const Tp::ContactManager
subscriptionRescindingHasMessage() const Tp::ContactManager
supportedFeatures() const Tp::ContactManager
unblockContacts(const QList< ContactPtr > &contacts)Tp::ContactManager
upgradeContacts(const QList< ContactPtr > &contacts, const Features &features)Tp::ContactManager
~ContactManager()Tp::ContactManagervirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00860.html0000644000175100017520000241571212530426257021152 0ustar00kaffeinekaffeine00000000000000 Tp Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp Namespace Reference

Namespaces

 Farstream
 
 Client
 
 Service
 
 KeyFile
 
 ManagerFile
 

Classes

class  AbstractAdaptor
 Base class for all the low-level service-side adaptors. More...
 
class  AbstractClient
 The AbstractClient class represents a Telepathy client. More...
 
class  AbstractClientObserver
 The AbstractClientObserver class represents a Telepathy observer. More...
 
class  AbstractClientApprover
 The AbstractClientApprover class represents a Telepathy approver. More...
 
class  AbstractClientHandler
 The AbstractClientHandler class represents a Telepathy handler. More...
 
class  AbstractInterface
 The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals. More...
 
class  AccountFactory
 The AccountFactory class is responsible for constructing Account objects according to application-defined settings. More...
 
class  AccountManager
 The AccountManager class represents a Telepathy account manager. More...
 
class  AccountPropertyFilter
 The AccountPropertyFilter class provides a filter object to be used to filter accounts by properties. More...
 
class  AccountSet
 The AccountSet class represents a set of Telepathy accounts filtered by a given criteria. More...
 
class  Account
 The Account class represents a Telepathy account. More...
 
class  AndFilter
 The AndFilter class provides a generic filter object to be used in conjunction of other filters. More...
 
class  AvatarData
 The AvatarData class represents a Telepathy avatar. More...
 
class  AvatarSpec
 The AvatarSpec class represents a Telepathy avatar information supported by a protocol. More...
 
class  AbstractCallContentInterface
 Base class for all the CallContent object interface implementations. More...
 
class  BaseCallContent
 
class  BaseCallMuteInterface
 Base class for implementations of Call.Interface.Mute. More...
 
class  BaseCallContentDTMFInterface
 Base class for implementations of Call.Content.Interface.DTMF. More...
 
class  BaseChannel
 Base class for channel implementations. More...
 
class  AbstractChannelInterface
 Base class for all the Channel object interface implementations. More...
 
class  BaseChannelTextType
 Base class for implementations of Channel.Type.Text. More...
 
class  BaseChannelMessagesInterface
 Base class for implementations of Channel.Interface.Messages. More...
 
class  BaseChannelRoomListType
 Base class for implementations of Channel.Type.RoomList. More...
 
class  BaseChannelServerAuthenticationType
 Base class for implementations of Channel.Type.ServerAuthentifcation. More...
 
class  BaseChannelCaptchaAuthenticationInterface
 Base class for implementations of Channel.Interface.CaptchaAuthentication. More...
 
class  BaseChannelSASLAuthenticationInterface
 Base class for implementations of Channel.Interface.SASLAuthentication. More...
 
class  BaseChannelSecurableInterface
 Base class for implementations of Channel.Interface.Securable. More...
 
class  BaseChannelChatStateInterface
 Base class for implementations of Channel.Interface.Chat.State. More...
 
class  BaseChannelGroupInterface
 Base class for implementations of Channel.Interface.Group. More...
 
class  BaseChannelRoomInterface
 Base class for implementations of Channel.Interface.Room2. More...
 
class  BaseChannelRoomConfigInterface
 Base class for implementations of Channel.Interface.RoomConfig1. More...
 
class  BaseChannelCallType
 Base class for implementations of Channel.Type.Call. More...
 
class  BaseChannelHoldInterface
 Base class for implementations of Channel.Interface.Hold. More...
 
class  BaseChannelMergeableConferenceInterface
 Base class for implementations of Channel.Interface.MergeableConference. More...
 
class  BaseChannelSplittableInterface
 Base class for implementations of Channel.Interface.Splittable. More...
 
class  BaseChannelConferenceInterface
 Base class for implementations of Channel.Interface.Conference. More...
 
class  BaseChannelSMSInterface
 Base class for implementations of Channel.Interface.SMS. More...
 
class  BaseConnectionManager
 Base class for connection manager implementations. More...
 
class  BaseConnection
 Base class for Connection implementations. More...
 
class  AbstractConnectionInterface
 Base class for all the Connection object interface implementations. More...
 
class  BaseConnectionRequestsInterface
 Base class for implementations of Connection.Interface.Requests. More...
 
class  BaseConnectionContactsInterface
 Base class for implementations of Connection.Interface.Contacts. More...
 
class  BaseConnectionSimplePresenceInterface
 Base class for implementations of Connection.Interface.SimplePresence. More...
 
class  BaseConnectionContactListInterface
 Base class for implementations of Connection.Interface.ContactList. More...
 
class  BaseConnectionContactInfoInterface
 Base class for implementations of Connection.Interface.Contact.Info. More...
 
class  BaseConnectionAddressingInterface
 Base class for implementations of Connection.Interface.Addressing. More...
 
class  BaseConnectionAliasingInterface
 Base class for implementations of Connection.Interface.Aliasing. More...
 
class  BaseConnectionAvatarsInterface
 Base class for implementations of Connection.Interface.Avatars. More...
 
class  BaseProtocol
 Base class for protocol implementations. More...
 
class  AbstractProtocolInterface
 Base class for all the Protocol object interface implementations. More...
 
class  BaseProtocolAddressingInterface
 Base class for implementations of Protocol.Interface.Addressing. More...
 
class  BaseProtocolAvatarsInterface
 Base class for implementations of Protocol.Interface.Avatars. More...
 
class  BaseProtocolPresenceInterface
 Base class for implementations of Protocol.Interface.Presence. More...
 
class  CallChannel
 The CallChannel class provides an object representing a Telepathy channel of type Call. More...
 
class  CallContent
 The CallContent class provides an object representing a Telepathy Call.Content. More...
 
class  PendingCallContent
 
class  CallStream
 The CallStream class provides an object representing a Telepathy Call.Stream. More...
 
struct  AbstractFunctorCaller
 
struct  BaseFunctorCaller
 
class  BaseCallback
 Base class for all the callback classes. More...
 
struct  FunctorCaller0
 
class  Callback0
 Callback with 0 arguments. More...
 
struct  FunctorCaller1
 
class  Callback1
 Callback with 1 argument. More...
 
struct  FunctorCaller2
 
class  Callback2
 Callback with 2 arguments. More...
 
struct  FunctorCaller3
 
class  Callback3
 Callback with 3 arguments. More...
 
struct  FunctorCaller4
 
class  Callback4
 Callback with 4 arguments. More...
 
struct  FunctorCaller5
 
class  Callback5
 Callback with 5 arguments. More...
 
struct  FunctorCaller6
 
class  Callback6
 Callback with 6 arguments. More...
 
struct  FunctorCaller7
 
class  Callback7
 Callback with 7 arguments. More...
 
class  CapabilitiesBase
 The CapabilitiesBase class represents the capabilities a Connection or a Contact supports. More...
 
class  CaptchaAuthentication
 The CaptchaAuthentication class exposes CaptchaAuthentication's features for channels implementing it. More...
 
class  Captcha
 The Captcha class represents a Captcha ready to be answered. More...
 
class  ChannelClassSpec
 The ChannelClassSpec class represents a Telepathy channel class. More...
 
class  ChannelClassSpecList
 The ChannelClassSpecList class represents a list of ChannelClassSpec. More...
 
class  ChannelDispatchOperation
 The ChannelDispatchOperation class represents a Telepathy channel dispatch operation. More...
 
class  ChannelFactory
 The ChannelFactory class is responsible for constructing Channel objects according to application-defined settings. More...
 
class  ChannelRequest
 The ChannelRequest class represents a Telepathy channel request. More...
 
class  ChannelRequestHints
 The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester when requesting a channel. More...
 
class  Channel
 The Channel class represents a Telepathy channel. More...
 
class  ClientRegistrar
 The ClientRegistrar class is responsible for registering Telepathy clients (Observer, Approver, Handler). More...
 
class  ConnectionCapabilities
 The ConnectionCapabilities class represents the capabilities of a Connection. More...
 
class  ConnectionFactory
 The ConnectionFactory class is responsible for constructing Connection objects according to application-defined settings. More...
 
class  ConnectionLowlevel
 The ConnectionLowlevel class extends Connection with support to low-level features. More...
 
class  ConnectionManagerLowlevel
 The ConnectionManagerLowlevel class extends ConnectionManager with support to low-level features. More...
 
class  ConnectionManager
 The ConnectionManager class represents a Telepathy connection manager. More...
 
class  Connection
 The Connection class represents a Telepathy connection. More...
 
class  ContactCapabilities
 The ContactCapabilities class represents the capabilities of a Contact. More...
 
class  ContactFactory
 The ContactFactory class is responsible for constructing Contact objects according to application-defined settings. More...
 
class  ContactManager
 The ContactManager class is responsible for managing contacts. More...
 
class  ContactMessenger
 The ContactMessenger class provides an easy way to send text messages to a contact and also track sent/receive text messages from the same contact. More...
 
class  ContactSearchChannel
 The ContactSearchChannel class represents a Telepathy channel of type ContactSearch. More...
 
class  Contact
 The Contact class represents a Telepathy contact. More...
 
class  DBusError
 Small container class, containing a D-Bus error. More...
 
class  DBusObject
 A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object. More...
 
class  DBusProxyFactory
 The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching and making them ready as appropriate. More...
 
class  DBusProxy
 The DBusProxy class is a base class representing a remote object available over D-Bus. More...
 
class  StatelessDBusProxy
 The StatelessDBusProxy class is a base class representing a remote object whose API is basically stateless. More...
 
class  StatefulDBusProxy
 The StatefulDBusProxy class is a base class representing a remote object whose API is stateful. More...
 
class  DBusService
 Base class for D-Bus services. More...
 
class  AbstractDBusServiceInterface
 Base class for D-Bus service interfaces. More...
 
class  DBusTubeChannel
 The DBusTubeChannel class represents a Telepathy channel of type DBusTube. More...
 
class  DebugReceiver
 The DebugReceiver class provides a D-Bus proxy for a Telepathy Debug object. More...
 
class  Feature
 The Feature class represents a feature that can be enabled on demand. More...
 
class  Features
 The Features class represents a list of Feature. More...
 
class  FileTransferChannelCreationProperties
 The FileTransferChannelCreationProperties class represents the properties of a file transfer channel request. More...
 
class  FileTransferChannel
 The FileTransferChannel class represents a Telepathy channel of type FileTransfer. More...
 
class  Filter
 The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFilter, GenericPropertyFilter, etc. More...
 
class  FixedFeatureFactory
 The FixedFeatureFactory class is a base class for all D-Bus proxy factories which want the same set of features for all constructed proxies. More...
 
struct  BaseFunctor
 
struct  PtrFunctor0
 
struct  MemberFunctor0
 
struct  PtrFunctor1
 
struct  MemberFunctor1
 
struct  PtrFunctor2
 
struct  MemberFunctor2
 
struct  PtrFunctor3
 
struct  MemberFunctor3
 
struct  PtrFunctor4
 
struct  MemberFunctor4
 
struct  PtrFunctor5
 
struct  MemberFunctor5
 
struct  PtrFunctor6
 
struct  MemberFunctor6
 
struct  PtrFunctor7
 
struct  MemberFunctor7
 
class  GenericCapabilityFilter
 The GenericCapabilityFilter class provides a generic filter object to be used to filter objects by capabilities. More...
 
class  GenericPropertyFilter
 The GenericPropertyFilter class provides a generic filter object to be used to filter objects by properties. More...
 
class  HandledChannelNotifier
 The HandledChannelNotifier class can be used to keep track of channel() being re-requested. More...
 
class  IncomingDBusTubeChannel
 The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube. More...
 
class  IncomingFileTransferChannel
 The IncomingFileTransferChannel class represents a Telepathy channel of type FileTransfer for incoming file transfers. More...
 
class  IncomingStreamTubeChannel
 The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube. More...
 
class  LocationInfo
 The LocationInfo class represents the location of a Telepathy Contact. More...
 
class  MessageContentPart
 The MessageContentPart class represents a Telepathy message part. More...
 
class  MessageContentPartList
 The MessageContentPartList class represents a list of MessageContentPart. More...
 
class  Message
 The Message class represents a Telepathy message in a TextChannel. More...
 
class  ReceivedMessage
 The ReceivedMessage class is a subclass of Message, representing a received message only. More...
 
class  MethodInvocationContext
 The MethodInvocationContext class provides a way for the service implementation to respond to method calls. More...
 
class  NotFilter
 The NotFilter class provides a generic filter object to be used in conjunction of other filters. More...
 
class  Object
 The Object class provides an object with property notification. More...
 
class  OptionalInterfaceFactory
 The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to offer access to shared instances of interface proxies for optional interfaces. More...
 
class  OrFilter
 The OrFilter class provides a generic filter object to be used in conjunction of other filters. More...
 
class  OutgoingDBusTubeChannel
 The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel of type DBusTube. More...
 
class  OutgoingFileTransferChannel
 The OutgoingFileTransferChannel class represents a Telepathy channel of type FileTransfer for outgoing file transfers. More...
 
class  OutgoingStreamTubeChannel
 The OutgoingStreamTubeChannel class represents an outgoing Telepathy channel of type StreamTube. More...
 
class  PendingAccount
 The PendingAccount class represents the parameters of and the reply to an asynchronous account request. More...
 
class  PendingCaptchas
 The PendingCaptchas class represents an asynchronous operation for retrieving a captcha challenge from a connection manager. More...
 
class  PendingChannelRequest
 The PendingChannelRequest class represents the parameters of and the reply to an asynchronous ChannelRequest request. More...
 
class  PendingChannel
 The PendingChannel class represents the parameters of and the reply to an asynchronous channel request. More...
 
class  PendingConnection
 The PendingConnection class represents the parameters of and the reply to an asynchronous connection request. More...
 
class  PendingContactAttributes
 The PendingContactAttributes class represents the parameters of and the reply to an asynchronous request for raw contact attributes, as used in the ConnectionLowlevel::contactAttributes() low-level convenience method wrapping the Client::ConnectionInterfaceContactsInterface::GetContactAttributes() D-Bus method. More...
 
class  PendingContactInfo
 The PendingContactInfo class represents the parameters of and the reply to an asynchronous contact info request. More...
 
class  PendingContacts
 The PendingContacts class is used by ContactManager when creating/updating Contact objects. More...
 
class  PendingDBusTubeConnection
 
class  PendingDebugMessageList
 
class  PendingHandles
 The PendingHandles class represents the parameters of and the reply to an asynchronous handle request/hold. More...
 
class  PendingOperation
 The PendingOperation class is a base class for pending asynchronous operations. More...
 
class  PendingReady
 The PendingReady class represents the features requested and the reply to a request for an object to become ready. More...
 
class  PendingSendMessage
 The PendingSendMessage class represents the parameters of and the reply to an asynchronous message send request. More...
 
class  PendingStreamTubeConnection
 The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming stream tube. More...
 
class  PendingStringList
 The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string list. More...
 
class  PendingString
 The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a string. More...
 
class  PendingVariantMap
 The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant map. More...
 
class  PendingVariant
 The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus method call that returns a variant. More...
 
class  Presence
 The Presence class represents a Telepathy simple presence. More...
 
class  PresenceSpec
 The PresenceSpec class represents a Telepathy presence information supported by a protocol. More...
 
class  PresenceSpecList
 The PresenceSpecList class represents a list of PresenceSpec. More...
 
class  ProfileManager
 The ProfileManager class provides helper methods to retrieve Profile objects. More...
 
class  Profile
 The Profile class provides an easy way to read Telepathy profile files according to http://telepathy.freedesktop.org/wiki/service-profile-v1. More...
 
class  ProtocolInfo
 The ProtocolInfo class represents a Telepathy Protocol. More...
 
class  ProtocolParameter
 The ProtocolParameter class represents a Telepathy protocol parameter. More...
 
class  ReadinessHelper
 The ReadinessHelper class is a helper class used by the introspection process. More...
 
class  ReadyObject
 
class  ReferencedHandles
 Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles container is guaranteed to be valid (and stay valid, as long it's in at least one ReferencedHandles container). More...
 
class  RequestableChannelClassSpec
 The RequestableChannelClassSpec class represents a Telepathy requestable channel class. More...
 
class  RequestableChannelClassSpecList
 The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec. More...
 
class  RoomListChannel
 The RoomListChannel class represents a Telepathy Channel of type RoomList. More...
 
class  ServerAuthenticationChannel
 The ServerAuthenticationChannel class is a base class for all ServerAuthentication types. More...
 
class  SharedPtr
 The SharedPtr class is a pointer to an explicitly shared object. More...
 
class  WeakPtr
 The WeakPtr class holds a weak reference to an object managed by SharedPtr. More...
 
class  RefCounted
 The RefCounted class is a base class for shared objects used by SharedPtr. More...
 
class  SimpleCallObserver
 The SimpleCallObserver class provides an easy way to track calls in an account and can be optionally filtered by a contact and/or call direction. More...
 
class  SimpleObserver
 The SimpleObserver class provides an easy way to track channels in an account and can be optionally filtered by a contact. More...
 
class  PendingSuccess
 The PendingSuccess class represents PendingOperation that is always successful. More...
 
class  PendingFailure
 The PendingFailure class represents a PendingOperation that always fails with the error passed to the constructor. More...
 
class  PendingVoid
 The PendingVoid class is a generic subclass of PendingOperation representing a pending D-Bus method call that does not return anything (or returns a result that is not interesting). More...
 
class  PendingComposite
 The PendingComposite class is a PendingOperation that can be used to track multiple pending operations at once. More...
 
class  SimpleStreamTubeHandler
 
class  SimpleTextObserver
 The SimpleTextObserver class provides an easy way to track sent/received text messages in an account and can be optionally filtered by a contact. More...
 
class  StreamTubeChannel
 The StreamTubeChannel class represents a Telepathy channel of type StreamTube. More...
 
class  StreamTubeClient
 The StreamTubeClient class is a Handler implementation for incoming Stream Tube channels, allowing an application to easily get notified about services they can connect to offered to them over Telepathy Tubes without worrying about the channel dispatching details. More...
 
class  StreamTubeServer
 The StreamTubeServer class is a Handler implementation for outgoing Stream Tube channels, allowing an application to easily export a TCP network server over Telepathy Tubes without worrying about the channel dispatching details. More...
 
class  PendingStreamedMediaStreams
 Class containing the result of an asynchronous streamed media stream creation request. More...
 
class  StreamedMediaStream
 The StreamedMediaStream class represents a Telepathy streamed media stream. More...
 
class  StreamedMediaChannel
 The StreamedMediaChannel class represents a Telepathy channel of type StreamedMedia. More...
 
class  TextChannel
 The TextChannel class represents a Telepathy channel of type Text. More...
 
class  TubeChannel
 The TubeChannel class is a base class for all tube types. More...
 
struct  ByteArrayList
 
struct  ObjectPathList
 
struct  UIntList
 
struct  AccessControl
 
struct  AddressingNormalizationMap
 
struct  AliasMap
 
struct  AliasPair
 
struct  Avatar
 
struct  AvatarTokenMap
 
struct  CallMemberMap
 
struct  CallStateReason
 
struct  Candidate
 
struct  CandidateInfo
 
struct  CapabilityChange
 
struct  CapabilityPair
 
struct  CaptchaAnswers
 
struct  CaptchaInfo
 
struct  ChannelCallStateMap
 
struct  ChannelClass
 
struct  ChannelDetails
 
struct  ChannelInfo
 
struct  ChannelOriginatorMap
 
struct  ChatStateMap
 
struct  ComponentStateMap
 
struct  ContactAttributesMap
 
struct  ContactCapability
 
struct  ContactClientTypes
 
struct  ContactInfoField
 
struct  ContactLocations
 
struct  ContactMediaDescriptionPropertiesMap
 
struct  ContactSSRCsMap
 
struct  ContactSearchMap
 
struct  ContactSendingStateMap
 
struct  ContactSubscriptions
 
struct  CurrencyAmount
 
struct  DBusTubeMember
 
struct  DBusTubeParticipants
 
struct  DebugMessage
 
struct  FieldSpec
 
struct  HTTPPostData
 
struct  HandleIdentifierMap
 
struct  HandleOwnerMap
 
struct  LocalPendingInfo
 
struct  Location
 
struct  Mail
 
struct  MailAddress
 
struct  MediaDescriptionOffer
 
struct  MediaDescriptionProperties
 
struct  MediaSessionHandlerInfo
 
struct  MediaStreamHandlerTransport
 
struct  MediaStreamInfo
 
struct  MessagePart
 
struct  MessagePartContentMap
 
struct  Metadata
 
struct  MultipleStatusMap
 
struct  NotDelegatedError
 
struct  ObjectImmutablePropertiesMap
 
struct  ParamSpec
 
struct  PendingTextMessage
 
struct  PropertyFlagsChange
 
struct  PropertySpec
 
struct  PropertyValue
 
struct  ProtocolPropertiesMap
 
struct  QualifiedPropertyValueMap
 
struct  RTCPFeedbackMessage
 
struct  RTPHeaderExtension
 
struct  RequestableChannelClass
 
struct  RichPresenceAccessControl
 
struct  RoomInfo
 
struct  ServicePoint
 
struct  SimplePresence
 
struct  SimpleStatusSpec
 
struct  SingleContactAttributesMap
 
struct  SocketAddressIP
 
struct  SocketAddressIPv4
 
struct  SocketAddressIPv6
 
struct  SocketNetmaskIPv4
 
struct  SocketNetmaskIPv6
 
struct  StreamCredentials
 
struct  StringStringMap
 
struct  StringVariantMap
 
struct  SupportedSocketMap
 
struct  TLSCertificateRejection
 
struct  TubeInfo
 
struct  VCardFieldAddressMap
 
struct  VideoResolution
 
struct  CandidatePair
 
struct  Codec
 
struct  ContactCapabilitiesMap
 
struct  ContactInfoMap
 
struct  ContactSearchResultMap
 
struct  ContactSubscriptionMap
 
struct  HandlerCapabilities
 
struct  LastActivityAndStatuses
 
struct  MailURL
 
struct  MediaStreamHandlerCandidate
 
struct  MediaStreamHandlerCodec
 
struct  NotDelegatedMap
 
struct  RTCPFeedbackMessageProperties
 
struct  ServicePointInfo
 
struct  SimpleContactPresences
 
struct  SimpleStatusSpecMap
 
struct  StatusSpec
 
struct  ContactCodecMap
 
struct  ContactPresences
 
struct  RTCPFeedbackMessageMap
 
struct  StatusSpecMap
 
class  AccountCapabilityFilter
 The AccountCapabilityFilter class provides a filter object to be used to filter accounts by capabilities. More...
 

Typedefs

typedef
GenericCapabilityFilter
< Account
AccountCapabilityFilter
 
typedef Filter< AccountAccountFilter
 
typedef QList< CallContentPtr > CallContents
 
typedef QList< CallStreamPtr > CallStreams
 
typedef QPair
< ChannelClassSpec, Features
ChannelClassFeatures
 
typedef void(* DebugCallback )(const QString &libraryName, const QString &libraryVersion, QtMsgType type, const QString &msg)
 
typedef QList< ProtocolInfoProtocolInfoList
 
typedef QList< ProtocolParameterProtocolParameterList
 
typedef QListIterator< uint > ReferencedHandlesIterator
 
typedef QList
< StreamedMediaStreamPtr > 
StreamedMediaStreams
 
typedef QFlags< ConnMgrParamFlagConnMgrParamFlags
 
typedef QFlags
< ConnectionAliasFlag
ConnectionAliasFlags
 
typedef QFlags< AnonymityModeAnonymityModeFlags
 
typedef QFlags
< ConnectionCapabilityFlag
ConnectionCapabilityFlags
 
typedef QFlags
< ContactBlockingCapability
ContactBlockingCapabilities
 
typedef QFlags< ContactInfoFlagContactInfoFlags
 
typedef QFlags
< ContactInfoFieldFlag
ContactInfoFieldFlags
 
typedef QFlags< LocationFeatureLocationFeatures
 
typedef QFlags
< MailNotificationFlag
MailNotificationFlags
 
typedef QFlags< CallFlagCallFlags
 
typedef QFlags< CallMemberFlagCallMemberFlags
 
typedef QFlags
< MediaStreamPending
MediaStreamPendingSend
 
typedef QFlags
< ChannelMediaCapability
ChannelMediaCapabilities
 
typedef QFlags
< ChannelTextMessageFlag
ChannelTextMessageFlags
 
typedef QFlags< CaptchaFlagCaptchaFlags
 
typedef QFlags< ChannelCallStateChannelCallStateFlags
 
typedef QFlags< ChannelGroupFlagChannelGroupFlags
 
typedef QFlags
< MessagePartSupportFlag
MessagePartSupportFlags
 
typedef QFlags
< MessageSendingFlag
MessageSendingFlags
 
typedef QFlags
< DeliveryReportingSupportFlag
DeliveryReportingSupportFlags
 
typedef QFlags
< ChannelPasswordFlag
ChannelPasswordFlags
 
typedef QFlags< PropertyFlagPropertyFlags
 
typedef QFlags
< StorageRestrictionFlag
StorageRestrictionFlags
 
typedef QFlags
< RTCPXRStatisticsFlag
RTCPXRStatisticsFlags
 
typedef QList< AliasPairAliasPairList
 
typedef QList< CallMemberMapCallMemberMapList
 
typedef QList< CandidateCandidateList
 
typedef QList< CapabilityChangeCapabilityChangeList
 
typedef QList< CapabilityPairCapabilityPairList
 
typedef QList< CaptchaInfoCaptchaInfoList
 
typedef QList< ChannelClassChannelClassList
 
typedef QList< ChannelDetailsChannelDetailsList
 
typedef QList< ChannelInfoChannelInfoList
 
typedef QList< ContactCapabilityContactCapabilityList
 
typedef QList< ContactInfoFieldContactInfoFieldList
 
typedef QList< DBusTubeMemberDBusTubeMemberList
 
typedef QList< DebugMessageDebugMessageList
 
typedef QList< FieldSpecFieldSpecs
 
typedef QList< HTTPPostDataHTTPPostDataList
 
typedef QList< LocalPendingInfoLocalPendingInfoList
 
typedef QList< MailMailList
 
typedef QList< MailAddressMailAddressList
 
typedef QList
< MediaSessionHandlerInfo
MediaSessionHandlerInfoList
 
typedef QList
< MediaStreamHandlerTransport
MediaStreamHandlerTransportList
 
typedef QList< MediaStreamInfoMediaStreamInfoList
 
typedef QList< MessagePartMessagePartList
 
typedef QList< MessagePartListMessagePartListList
 
typedef QList
< ObjectImmutablePropertiesMap
ObjectImmutablePropertiesMapList
 
typedef QList< ParamSpecParamSpecList
 
typedef QList< PendingTextMessagePendingTextMessageList
 
typedef QList
< PropertyFlagsChange
PropertyFlagsChangeList
 
typedef QList< PropertySpecPropertySpecList
 
typedef QList< PropertyValuePropertyValueList
 
typedef QList
< QualifiedPropertyValueMap
QualifiedPropertyValueMapList
 
typedef QList
< RTCPFeedbackMessage
RTCPFeedbackMessageList
 
typedef QList< RTPHeaderExtensionRTPHeaderExtensionsList
 
typedef QList
< RequestableChannelClass
RequestableChannelClassList
 
typedef QList< RoomInfoRoomInfoList
 
typedef QList< SocketAddressIPSocketAddressIPList
 
typedef QList< StringStringMapStringStringMapList
 
typedef QList< StringVariantMapStringVariantMapList
 
typedef QList
< TLSCertificateRejection
TLSCertificateRejectionList
 
typedef QList< TubeInfoTubeInfoList
 
typedef QList< VideoResolutionVideoResolutionStruct
 
typedef QList< CandidatePairCandidatePairList
 
typedef QList< CodecCodecList
 
typedef QList
< ContactCapabilitiesMap
ContactCapabilitiesMapList
 
typedef QList
< HandlerCapabilities
HandlerCapabilitiesList
 
typedef QList
< MediaStreamHandlerCandidate
MediaStreamHandlerCandidateList
 
typedef QList
< MediaStreamHandlerCodec
MediaStreamHandlerCodecList
 
typedef QList< ServicePointInfoServicePointInfoList
 

Enumerations

enum  ConnMgrParamFlag {
  ConnMgrParamFlagRequired, ConnMgrParamFlagRegister, ConnMgrParamFlagHasDefault, ConnMgrParamFlagSecret,
  ConnMgrParamFlagDBusProperty, _ConnMgrParamFlagPadding
}
 
enum  ConnectionAliasFlag { ConnectionAliasFlagUserSet, _ConnectionAliasFlagPadding }
 
enum  AnonymityMode { AnonymityModeClientInfo, AnonymityModeShowClientInfo, AnonymityModeNetworkInfo, _AnonymityModePadding }
 
enum  ConnectionCapabilityFlag { ConnectionCapabilityFlagCreate, ConnectionCapabilityFlagInvite, _ConnectionCapabilityFlagPadding }
 
enum  ContactBlockingCapability { ContactBlockingCapabilityCanReportAbusive, _ContactBlockingCapabilityPadding }
 
enum  ContactInfoFlag { ContactInfoFlagCanSet, ContactInfoFlagPush, _ContactInfoFlagPadding }
 
enum  ContactInfoFieldFlag { ContactInfoFieldFlagParametersExact, ContactInfoFieldFlagOverwrittenByNickname, _ContactInfoFieldFlagPadding }
 
enum  LocationFeature { LocationFeatureCanSet, _LocationFeaturePadding }
 
enum  MailNotificationFlag {
  MailNotificationFlagSupportsUnreadMailCount, MailNotificationFlagSupportsUnreadMails, MailNotificationFlagEmitsMailsReceived, MailNotificationFlagSupportsRequestInboxURL,
  MailNotificationFlagSupportsRequestMailURL, MailNotificationFlagThreadBased, _MailNotificationFlagPadding
}
 
enum  CallFlag {
  CallFlagLocallyHeld, CallFlagLocallyRinging, CallFlagLocallyQueued, CallFlagForwarded,
  CallFlagClearing, _CallFlagPadding
}
 
enum  CallMemberFlag { CallMemberFlagRinging, CallMemberFlagHeld, CallMemberFlagConferenceHost, _CallMemberFlagPadding }
 
enum  MediaStreamPending { MediaStreamPendingLocalSend, MediaStreamPendingRemoteSend, _MediaStreamPendingPadding }
 
enum  ChannelMediaCapability {
  ChannelMediaCapabilityAudio, ChannelMediaCapabilityVideo, ChannelMediaCapabilityNATTraversalSTUN, ChannelMediaCapabilityNATTraversalGTalkP2P,
  ChannelMediaCapabilityNATTraversalICEUDP, ChannelMediaCapabilityImmutableStreams, _ChannelMediaCapabilityPadding
}
 
enum  ChannelTextMessageFlag {
  ChannelTextMessageFlagTruncated, ChannelTextMessageFlagNonTextContent, ChannelTextMessageFlagScrollback, ChannelTextMessageFlagRescued,
  _ChannelTextMessageFlagPadding
}
 
enum  CaptchaFlag { CaptchaFlagRequired, _CaptchaFlagPadding }
 
enum  ChannelCallState {
  ChannelCallStateRinging, ChannelCallStateQueued, ChannelCallStateHeld, ChannelCallStateForwarded,
  ChannelCallStateInProgress, ChannelCallStateConferenceHost, _ChannelCallStatePadding
}
 
enum  ChannelGroupFlag {
  ChannelGroupFlagCanAdd, ChannelGroupFlagCanRemove, ChannelGroupFlagCanRescind, ChannelGroupFlagMessageAdd,
  ChannelGroupFlagMessageRemove, ChannelGroupFlagMessageAccept, ChannelGroupFlagMessageReject, ChannelGroupFlagMessageRescind,
  ChannelGroupFlagChannelSpecificHandles, ChannelGroupFlagOnlyOneGroup, ChannelGroupFlagHandleOwnersNotAvailable, ChannelGroupFlagProperties,
  ChannelGroupFlagMembersChangedDetailed, ChannelGroupFlagMessageDepart, _ChannelGroupFlagPadding
}
 
enum  MessagePartSupportFlag { MessagePartSupportFlagOneAttachment, MessagePartSupportFlagMultipleAttachments, _MessagePartSupportFlagPadding }
 
enum  MessageSendingFlag { MessageSendingFlagReportDelivery, MessageSendingFlagReportRead, MessageSendingFlagReportDeleted, _MessageSendingFlagPadding }
 
enum  DeliveryReportingSupportFlag {
  DeliveryReportingSupportFlagReceiveFailures, DeliveryReportingSupportFlagReceiveSuccesses, DeliveryReportingSupportFlagReceiveRead, DeliveryReportingSupportFlagReceiveDeleted,
  _DeliveryReportingSupportFlagPadding
}
 
enum  ChannelPasswordFlag { ChannelPasswordFlagProvide, ChannelPasswordFlagHint, _ChannelPasswordFlagPadding }
 
enum  PropertyFlag { PropertyFlagRead, PropertyFlagWrite, _PropertyFlagPadding }
 
enum  StorageRestrictionFlag {
  StorageRestrictionFlagCannotSetParameters, StorageRestrictionFlagCannotSetEnabled, StorageRestrictionFlagCannotSetPresence, StorageRestrictionFlagCannotSetService,
  _StorageRestrictionFlagPadding
}
 
enum  RTCPXRStatisticsFlag {
  RTCPXRStatisticsFlagLoss, RTCPXRStatisticsFlagDuplicate, RTCPXRStatisticsFlagJitter, RTCPXRStatisticsFlagTTL,
  RTCPXRStatisticsFlagHL, _RTCPXRStatisticsFlagPadding
}
 
enum  HandleType {
  HandleTypeNone, HandleTypeContact, HandleTypeRoom, HandleTypeList,
  HandleTypeGroup, _HandleTypePadding
}
 
enum  ConnectionStatus { ConnectionStatusConnected, ConnectionStatusConnecting, ConnectionStatusDisconnected, _ConnectionStatusPadding }
 
enum  ConnectionStatusReason {
  ConnectionStatusReasonNoneSpecified, ConnectionStatusReasonRequested, ConnectionStatusReasonNetworkError, ConnectionStatusReasonAuthenticationFailed,
  ConnectionStatusReasonEncryptionError, ConnectionStatusReasonNameInUse, ConnectionStatusReasonCertNotProvided, ConnectionStatusReasonCertUntrusted,
  ConnectionStatusReasonCertExpired, ConnectionStatusReasonCertNotActivated, ConnectionStatusReasonCertHostnameMismatch, ConnectionStatusReasonCertFingerprintMismatch,
  ConnectionStatusReasonCertSelfSigned, ConnectionStatusReasonCertOtherError, ConnectionStatusReasonCertRevoked, ConnectionStatusReasonCertInsecure,
  ConnectionStatusReasonCertLimitExceeded, _ConnectionStatusReasonPadding
}
 
enum  ContactListState {
  ContactListStateNone, ContactListStateWaiting, ContactListStateFailure, ContactListStateSuccess,
  _ContactListStatePadding
}
 
enum  SubscriptionState {
  SubscriptionStateUnknown, SubscriptionStateNo, SubscriptionStateRemovedRemotely, SubscriptionStateAsk,
  SubscriptionStateYes, _SubscriptionStatePadding
}
 
enum  ContactMetadataStorageType {
  ContactMetadataStorageTypeNone, ContactMetadataStorageTypeSubscribedOrPending, ContactMetadataStorageTypeSubscribed, ContactMetadataStorageTypeAnyone,
  _ContactMetadataStorageTypePadding
}
 
enum  HTTPMethod { HTTPMethodGet, HTTPMethodPost, _HTTPMethodPadding }
 
enum  ServicePointType { ServicePointTypeNone, ServicePointTypeEmergency, ServicePointTypeCounseling, _ServicePointTypePadding }
 
enum  ConnectionPresenceType {
  ConnectionPresenceTypeUnset, ConnectionPresenceTypeOffline, ConnectionPresenceTypeAvailable, ConnectionPresenceTypeAway,
  ConnectionPresenceTypeExtendedAway, ConnectionPresenceTypeHidden, ConnectionPresenceTypeBusy, ConnectionPresenceTypeUnknown,
  ConnectionPresenceTypeError, _ConnectionPresenceTypePadding
}
 
enum  AccessControlType {
  AccessControlTypeWhitelist, AccessControlTypePublishList, AccessControlTypeGroup, AccessControlTypeOpen,
  AccessControlTypeSubscribeOrPublishList, AccessControlTypeClosed, AccessControlTypeNotUnderstood, _AccessControlTypePadding
}
 
enum  RichPresenceAccessControlType {
  RichPresenceAccessControlTypeWhitelist, RichPresenceAccessControlTypePublishList, RichPresenceAccessControlTypeGroup, RichPresenceAccessControlTypeOpen,
  _RichPresenceAccessControlTypePadding
}
 
enum  CallState {
  CallStateUnknown, CallStatePendingInitiator, CallStateInitialising, CallStateInitialised,
  CallStateAccepted, CallStateActive, CallStateEnded, _CallStatePadding
}
 
enum  CallStateChangeReason {
  CallStateChangeReasonUnknown, CallStateChangeReasonProgressMade, CallStateChangeReasonUserRequested, CallStateChangeReasonForwarded,
  CallStateChangeReasonRejected, CallStateChangeReasonNoAnswer, CallStateChangeReasonInvalidContact, CallStateChangeReasonPermissionDenied,
  CallStateChangeReasonBusy, CallStateChangeReasonInternalError, CallStateChangeReasonServiceError, CallStateChangeReasonNetworkError,
  CallStateChangeReasonMediaError, CallStateChangeReasonConnectivityError, _CallStateChangeReasonPadding
}
 
enum  ChannelContactSearchState {
  ChannelContactSearchStateNotStarted, ChannelContactSearchStateInProgress, ChannelContactSearchStateMoreAvailable, ChannelContactSearchStateCompleted,
  ChannelContactSearchStateFailed, _ChannelContactSearchStatePadding
}
 
enum  FileTransferState {
  FileTransferStateNone, FileTransferStatePending, FileTransferStateAccepted, FileTransferStateOpen,
  FileTransferStateCompleted, FileTransferStateCancelled, _FileTransferStatePadding
}
 
enum  FileTransferStateChangeReason {
  FileTransferStateChangeReasonNone, FileTransferStateChangeReasonRequested, FileTransferStateChangeReasonLocalStopped, FileTransferStateChangeReasonRemoteStopped,
  FileTransferStateChangeReasonLocalError, FileTransferStateChangeReasonRemoteError, _FileTransferStateChangeReasonPadding
}
 
enum  FileHashType {
  FileHashTypeNone, FileHashTypeMD5, FileHashTypeSHA1, FileHashTypeSHA256,
  _FileHashTypePadding
}
 
enum  MediaStreamType { MediaStreamTypeAudio, MediaStreamTypeVideo, _MediaStreamTypePadding }
 
enum  MediaStreamState { MediaStreamStateDisconnected, MediaStreamStateConnecting, MediaStreamStateConnected, _MediaStreamStatePadding }
 
enum  MediaStreamDirection {
  MediaStreamDirectionNone, MediaStreamDirectionSend, MediaStreamDirectionReceive, MediaStreamDirectionBidirectional,
  _MediaStreamDirectionPadding
}
 
enum  ChannelTextSendError {
  ChannelTextSendErrorUnknown, ChannelTextSendErrorOffline, ChannelTextSendErrorInvalidContact, ChannelTextSendErrorPermissionDenied,
  ChannelTextSendErrorTooLong, ChannelTextSendErrorNotImplemented, _ChannelTextSendErrorPadding
}
 
enum  ChannelTextMessageType {
  ChannelTextMessageTypeNormal, ChannelTextMessageTypeAction, ChannelTextMessageTypeNotice, ChannelTextMessageTypeAutoReply,
  ChannelTextMessageTypeDeliveryReport, _ChannelTextMessageTypePadding
}
 
enum  TubeType { TubeTypeDBus, TubeTypeStream, _TubeTypePadding }
 
enum  TubeState { TubeStateLocalPending, TubeStateRemotePending, TubeStateOpen, _TubeStatePadding }
 
enum  CaptchaCancelReason { CaptchaCancelReasonUserCancelled, CaptchaCancelReasonNotSupported, CaptchaCancelReasonServiceConfused, _CaptchaCancelReasonPadding }
 
enum  CaptchaStatus {
  CaptchaStatusLocalPending, CaptchaStatusRemotePending, CaptchaStatusSucceeded, CaptchaStatusTryAgain,
  CaptchaStatusFailed, _CaptchaStatusPadding
}
 
enum  ChannelChatState {
  ChannelChatStateGone, ChannelChatStateInactive, ChannelChatStateActive, ChannelChatStatePaused,
  ChannelChatStateComposing, _ChannelChatStatePadding
}
 
enum  DTMFEvent {
  DTMFEventDigit0, DTMFEventDigit1, DTMFEventDigit2, DTMFEventDigit3,
  DTMFEventDigit4, DTMFEventDigit5, DTMFEventDigit6, DTMFEventDigit7,
  DTMFEventDigit8, DTMFEventDigit9, DTMFEventAsterisk, DTMFEventHash,
  DTMFEventLetterA, DTMFEventLetterB, DTMFEventLetterC, DTMFEventLetterD,
  _DTMFEventPadding
}
 
enum  ChannelGroupChangeReason {
  ChannelGroupChangeReasonNone, ChannelGroupChangeReasonOffline, ChannelGroupChangeReasonKicked, ChannelGroupChangeReasonBusy,
  ChannelGroupChangeReasonInvited, ChannelGroupChangeReasonBanned, ChannelGroupChangeReasonError, ChannelGroupChangeReasonInvalidContact,
  ChannelGroupChangeReasonNoAnswer, ChannelGroupChangeReasonRenamed, ChannelGroupChangeReasonPermissionDenied, ChannelGroupChangeReasonSeparated,
  _ChannelGroupChangeReasonPadding
}
 
enum  LocalHoldState {
  LocalHoldStateUnheld, LocalHoldStateHeld, LocalHoldStatePendingHold, LocalHoldStatePendingUnhold,
  _LocalHoldStatePadding
}
 
enum  LocalHoldStateReason { LocalHoldStateReasonNone, LocalHoldStateReasonRequested, LocalHoldStateReasonResourceNotAvailable, _LocalHoldStateReasonPadding }
 
enum  DeliveryStatus {
  DeliveryStatusUnknown, DeliveryStatusDelivered, DeliveryStatusTemporarilyFailed, DeliveryStatusPermanentlyFailed,
  DeliveryStatusAccepted, DeliveryStatusRead, DeliveryStatusDeleted, _DeliveryStatusPadding
}
 
enum  SASLAbortReason { SASLAbortReasonInvalidChallenge, SASLAbortReasonUserAbort, _SASLAbortReasonPadding }
 
enum  SASLStatus {
  SASLStatusNotStarted, SASLStatusInProgress, SASLStatusServerSucceeded, SASLStatusClientAccepted,
  SASLStatusSucceeded, SASLStatusServerFailed, SASLStatusClientFailed, _SASLStatusPadding
}
 
enum  TubeChannelState {
  TubeChannelStateLocalPending, TubeChannelStateRemotePending, TubeChannelStateOpen, TubeChannelStateNotOffered,
  _TubeChannelStatePadding
}
 
enum  SocketAddressType {
  SocketAddressTypeUnix, SocketAddressTypeAbstractUnix, SocketAddressTypeIPv4, SocketAddressTypeIPv6,
  _SocketAddressTypePadding
}
 
enum  SocketAccessControl {
  SocketAccessControlLocalhost, SocketAccessControlPort, SocketAccessControlNetmask, SocketAccessControlCredentials,
  _SocketAccessControlPadding
}
 
enum  MediaStreamError {
  MediaStreamErrorUnknown, MediaStreamErrorEOS, MediaStreamErrorCodecNegotiationFailed, MediaStreamErrorConnectionFailed,
  MediaStreamErrorNetworkError, MediaStreamErrorNoCodecs, MediaStreamErrorInvalidCMBehavior, MediaStreamErrorMediaError,
  _MediaStreamErrorPadding
}
 
enum  MediaStreamBaseProto { MediaStreamBaseProtoUDP, MediaStreamBaseProtoTCP, _MediaStreamBaseProtoPadding }
 
enum  MediaStreamTransportType { MediaStreamTransportTypeLocal, MediaStreamTransportTypeDerived, MediaStreamTransportTypeRelay, _MediaStreamTransportTypePadding }
 
enum  DebugLevel {
  DebugLevelError, DebugLevelCritical, DebugLevelWarning, DebugLevelMessage,
  DebugLevelInfo, DebugLevelDebug, _DebugLevelPadding
}
 
enum  TLSCertificateState { TLSCertificateStatePending, TLSCertificateStateAccepted, TLSCertificateStateRejected, _TLSCertificateStatePadding }
 
enum  TLSCertificateRejectReason {
  TLSCertificateRejectReasonUnknown, TLSCertificateRejectReasonUntrusted, TLSCertificateRejectReasonExpired, TLSCertificateRejectReasonNotActivated,
  TLSCertificateRejectReasonFingerprintMismatch, TLSCertificateRejectReasonHostnameMismatch, TLSCertificateRejectReasonSelfSigned, TLSCertificateRejectReasonRevoked,
  TLSCertificateRejectReasonInsecure, TLSCertificateRejectReasonLimitExceeded, _TLSCertificateRejectReasonPadding
}
 
enum  CallContentPacketizationType { CallContentPacketizationTypeRTP, CallContentPacketizationTypeRaw, CallContentPacketizationTypeMSNWebcam, _CallContentPacketizationTypePadding }
 
enum  CallContentDisposition { CallContentDispositionNone, CallContentDispositionInitial, _CallContentDispositionPadding }
 
enum  RCPTXRRTTMode { RCPTXRRTTModeAll, RCPTXRRTTModeSender, _RCPTXRRTTModePadding }
 
enum  StreamFlowState {
  StreamFlowStateStopped, StreamFlowStatePendingStart, StreamFlowStatePendingStop, StreamFlowStateStarted,
  _StreamFlowStatePadding
}
 
enum  CallStreamCandidateType {
  CallStreamCandidateTypeNone, CallStreamCandidateTypeHost, CallStreamCandidateTypeServerReflexive, CallStreamCandidateTypePeerReflexive,
  CallStreamCandidateTypeRelay, CallStreamCandidateTypeMulticast, _CallStreamCandidateTypePadding
}
 
enum  StreamComponent { StreamComponentUnknown, StreamComponentData, StreamComponentControl, _StreamComponentPadding }
 
enum  StreamTransportType {
  StreamTransportTypeUnknown, StreamTransportTypeRawUDP, StreamTransportTypeICE, StreamTransportTypeGTalkP2P,
  StreamTransportTypeWLM2009, StreamTransportTypeSHM, StreamTransportTypeMulticast, _StreamTransportTypePadding
}
 
enum  SendingState {
  SendingStateNone, SendingStatePendingSend, SendingStateSending, SendingStatePendingStopSending,
  _SendingStatePadding
}
 
enum  StreamEndpointState {
  StreamEndpointStateConnecting, StreamEndpointStateProvisionallyConnected, StreamEndpointStateFullyConnected, StreamEndpointStateExhaustedCandidates,
  StreamEndpointStateFailed, _StreamEndpointStatePadding
}
 
enum  LocalMuteState {
  LocalMuteStateUnmuted, LocalMuteStateMuted, LocalMuteStatePendingMute, LocalMuteStatePendingUnmute,
  LocalMuteStatePartiallyMuted, _LocalMuteStatePadding
}
 

Functions

uint qHash (const ChannelClassSpec &spec)
 
uint qHash (const QSet< ChannelClassSpec > &specSet)
 
uint qHash (const ChannelClassSpecList &specList)
 
void enableDebug (bool enable)
 
void enableWarnings (bool enable)
 
void setDebugCallback (DebugCallback cb)
 
Debug enabledDebug ()
 
Debug enabledWarning ()
 
Features operator| (const Feature &feature1, const Feature &feature2)
 
Features operator| (const Features &features, const Feature &feature)
 
uint qHash (const Features &features)
 
template<class R >
PtrFunctor0< R > ptrFun (R(*fn)())
 
template<class R , class Arg1 >
PtrFunctor1< R, Arg1 > ptrFun (R(*fn)(Arg1))
 
template<class R , class Arg1 , class Arg2 >
PtrFunctor2< R, Arg1, Arg2 > ptrFun (R(*fn)(Arg1, Arg2))
 
template<class R , class Arg1 , class Arg2 , class Arg3 >
PtrFunctor3< R, Arg1, Arg2, Arg3 > ptrFun (R(*fn)(Arg1, Arg2, Arg3))
 
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
PtrFunctor4< R, Arg1, Arg2,
Arg3, Arg4 > 
ptrFun (R(*fn)(Arg1, Arg2, Arg3, Arg4))
 
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
PtrFunctor5< R, Arg1, Arg2,
Arg3, Arg4, Arg5 > 
ptrFun (R(*fn)(Arg1, Arg2, Arg3, Arg4, Arg5))
 
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
PtrFunctor6< R, Arg1, Arg2,
Arg3, Arg4, Arg5, Arg6 > 
ptrFun (R(*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6))
 
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
PtrFunctor7< R, Arg1, Arg2,
Arg3, Arg4, Arg5, Arg6, Arg7 > 
ptrFun (R(*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7))
 
template<class R , class T >
MemberFunctor0< R, T > memFun (T *obj, R(T::*fn)())
 
template<class R , class T , class Arg1 >
MemberFunctor1< R, T, Arg1 > memFun (T *obj, R(T::*fn)(Arg1))
 
template<class R , class T , class Arg1 , class Arg2 >
MemberFunctor2< R, T, Arg1, Arg2 > memFun (T *obj, R(T::*fn)(Arg1, Arg2))
 
template<class R , class T , class Arg1 , class Arg2 , class Arg3 >
MemberFunctor3< R, T, Arg1,
Arg2, Arg3 > 
memFun (T *obj, R(T::*fn)(Arg1, Arg2, Arg3))
 
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
MemberFunctor4< R, T, Arg1,
Arg2, Arg3, Arg4 > 
memFun (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4))
 
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
MemberFunctor5< R, T, Arg1,
Arg2, Arg3, Arg4, Arg5 > 
memFun (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5))
 
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
MemberFunctor6< R, T, Arg1,
Arg2, Arg3, Arg4, Arg5, Arg6 > 
memFun (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6))
 
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
MemberFunctor7< R, T, Arg1,
Arg2, Arg3, Arg4, Arg5, Arg6,
Arg7 > 
memFun (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7))
 
uint qHash (const ProtocolParameter &parameter)
 
template<typename T >
uint qHash (const SharedPtr< T > &ptr)
 
template<typename T >
uint qHash (const WeakPtr< T > &ptr)
 
void registerTypes ()
 
bool operator== (const SUSocketAddress &v1, const SUSocketAddress &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SUSocketAddress &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SUSocketAddress &val)
 
QString escapeAsIdentifier (const QString &string)
 
bool checkValidProtocolName (const QString &protocolName)
 
QVariant::Type variantTypeFromDBusSignature (const QString &signature)
 
QVariant parseValueWithDBusSignature (const QString &value, const QString &dbusSignature)
 
bool operator== (const AccessControl &v1, const AccessControl &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const AccessControl &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, AccessControl &val)
 
bool operator== (const AliasPair &v1, const AliasPair &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const AliasPair &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, AliasPair &val)
 
bool operator== (const Avatar &v1, const Avatar &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const Avatar &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, Avatar &val)
 
bool operator== (const CallStateReason &v1, const CallStateReason &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const CallStateReason &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, CallStateReason &val)
 
bool operator== (const Candidate &v1, const Candidate &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const Candidate &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, Candidate &val)
 
bool operator== (const CapabilityChange &v1, const CapabilityChange &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const CapabilityChange &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, CapabilityChange &val)
 
bool operator== (const CapabilityPair &v1, const CapabilityPair &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const CapabilityPair &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, CapabilityPair &val)
 
bool operator== (const CaptchaInfo &v1, const CaptchaInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const CaptchaInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, CaptchaInfo &val)
 
bool operator== (const ChannelDetails &v1, const ChannelDetails &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ChannelDetails &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ChannelDetails &val)
 
bool operator== (const ChannelInfo &v1, const ChannelInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ChannelInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ChannelInfo &val)
 
bool operator== (const ContactCapability &v1, const ContactCapability &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ContactCapability &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ContactCapability &val)
 
bool operator== (const ContactInfoField &v1, const ContactInfoField &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ContactInfoField &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ContactInfoField &val)
 
bool operator== (const ContactSubscriptions &v1, const ContactSubscriptions &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ContactSubscriptions &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ContactSubscriptions &val)
 
bool operator== (const CurrencyAmount &v1, const CurrencyAmount &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const CurrencyAmount &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, CurrencyAmount &val)
 
bool operator== (const DBusTubeMember &v1, const DBusTubeMember &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const DBusTubeMember &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, DBusTubeMember &val)
 
bool operator== (const DebugMessage &v1, const DebugMessage &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const DebugMessage &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, DebugMessage &val)
 
bool operator== (const FieldSpec &v1, const FieldSpec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const FieldSpec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, FieldSpec &val)
 
bool operator== (const HTTPPostData &v1, const HTTPPostData &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const HTTPPostData &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, HTTPPostData &val)
 
bool operator== (const LocalPendingInfo &v1, const LocalPendingInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const LocalPendingInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, LocalPendingInfo &val)
 
bool operator== (const MailAddress &v1, const MailAddress &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MailAddress &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MailAddress &val)
 
bool operator== (const MediaDescriptionOffer &v1, const MediaDescriptionOffer &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MediaDescriptionOffer &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MediaDescriptionOffer &val)
 
bool operator== (const MediaSessionHandlerInfo &v1, const MediaSessionHandlerInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MediaSessionHandlerInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MediaSessionHandlerInfo &val)
 
bool operator== (const MediaStreamHandlerTransport &v1, const MediaStreamHandlerTransport &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MediaStreamHandlerTransport &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MediaStreamHandlerTransport &val)
 
bool operator== (const MediaStreamInfo &v1, const MediaStreamInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MediaStreamInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MediaStreamInfo &val)
 
bool operator== (const NotDelegatedError &v1, const NotDelegatedError &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const NotDelegatedError &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, NotDelegatedError &val)
 
bool operator== (const ParamSpec &v1, const ParamSpec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ParamSpec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ParamSpec &val)
 
bool operator== (const PendingTextMessage &v1, const PendingTextMessage &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const PendingTextMessage &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, PendingTextMessage &val)
 
bool operator== (const PropertyFlagsChange &v1, const PropertyFlagsChange &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const PropertyFlagsChange &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, PropertyFlagsChange &val)
 
bool operator== (const PropertySpec &v1, const PropertySpec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const PropertySpec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, PropertySpec &val)
 
bool operator== (const PropertyValue &v1, const PropertyValue &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const PropertyValue &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, PropertyValue &val)
 
bool operator== (const RTCPFeedbackMessage &v1, const RTCPFeedbackMessage &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const RTCPFeedbackMessage &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, RTCPFeedbackMessage &val)
 
bool operator== (const RTPHeaderExtension &v1, const RTPHeaderExtension &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const RTPHeaderExtension &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, RTPHeaderExtension &val)
 
bool operator== (const RequestableChannelClass &v1, const RequestableChannelClass &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const RequestableChannelClass &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, RequestableChannelClass &val)
 
bool operator== (const RichPresenceAccessControl &v1, const RichPresenceAccessControl &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const RichPresenceAccessControl &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, RichPresenceAccessControl &val)
 
bool operator== (const RoomInfo &v1, const RoomInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const RoomInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, RoomInfo &val)
 
bool operator== (const ServicePoint &v1, const ServicePoint &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ServicePoint &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ServicePoint &val)
 
bool operator== (const SimplePresence &v1, const SimplePresence &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SimplePresence &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SimplePresence &val)
 
bool operator== (const SimpleStatusSpec &v1, const SimpleStatusSpec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SimpleStatusSpec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SimpleStatusSpec &val)
 
bool operator== (const SocketAddressIP &v1, const SocketAddressIP &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SocketAddressIP &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SocketAddressIP &val)
 
bool operator== (const SocketAddressIPv4 &v1, const SocketAddressIPv4 &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SocketAddressIPv4 &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SocketAddressIPv4 &val)
 
bool operator== (const SocketAddressIPv6 &v1, const SocketAddressIPv6 &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SocketAddressIPv6 &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SocketAddressIPv6 &val)
 
bool operator== (const SocketNetmaskIPv4 &v1, const SocketNetmaskIPv4 &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SocketNetmaskIPv4 &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SocketNetmaskIPv4 &val)
 
bool operator== (const SocketNetmaskIPv6 &v1, const SocketNetmaskIPv6 &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const SocketNetmaskIPv6 &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, SocketNetmaskIPv6 &val)
 
bool operator== (const StreamCredentials &v1, const StreamCredentials &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const StreamCredentials &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, StreamCredentials &val)
 
bool operator== (const TLSCertificateRejection &v1, const TLSCertificateRejection &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const TLSCertificateRejection &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, TLSCertificateRejection &val)
 
bool operator== (const TubeInfo &v1, const TubeInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const TubeInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, TubeInfo &val)
 
bool operator== (const VideoResolution &v1, const VideoResolution &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const VideoResolution &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, VideoResolution &val)
 
bool operator== (const CandidatePair &v1, const CandidatePair &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const CandidatePair &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, CandidatePair &val)
 
bool operator== (const Codec &v1, const Codec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const Codec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, Codec &val)
 
bool operator== (const HandlerCapabilities &v1, const HandlerCapabilities &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const HandlerCapabilities &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, HandlerCapabilities &val)
 
bool operator== (const LastActivityAndStatuses &v1, const LastActivityAndStatuses &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const LastActivityAndStatuses &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, LastActivityAndStatuses &val)
 
bool operator== (const MailURL &v1, const MailURL &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MailURL &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MailURL &val)
 
bool operator== (const MediaStreamHandlerCandidate &v1, const MediaStreamHandlerCandidate &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MediaStreamHandlerCandidate &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MediaStreamHandlerCandidate &val)
 
bool operator== (const MediaStreamHandlerCodec &v1, const MediaStreamHandlerCodec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const MediaStreamHandlerCodec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, MediaStreamHandlerCodec &val)
 
bool operator== (const RTCPFeedbackMessageProperties &v1, const RTCPFeedbackMessageProperties &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const RTCPFeedbackMessageProperties &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, RTCPFeedbackMessageProperties &val)
 
bool operator== (const ServicePointInfo &v1, const ServicePointInfo &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const ServicePointInfo &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, ServicePointInfo &val)
 
bool operator== (const StatusSpec &v1, const StatusSpec &v2)
 
QDBusArgument & operator<< (QDBusArgument &arg, const StatusSpec &val)
 
const QDBusArgument & operator>> (const QDBusArgument &arg, StatusSpec &val)
 
void _registerTypes ()
 
bool operator!= (const AccessControl &v1, const AccessControl &v2)
 
bool operator!= (const AliasPair &v1, const AliasPair &v2)
 
bool operator!= (const Avatar &v1, const Avatar &v2)
 
bool operator!= (const CallStateReason &v1, const CallStateReason &v2)
 
bool operator!= (const Candidate &v1, const Candidate &v2)
 
bool operator!= (const CapabilityChange &v1, const CapabilityChange &v2)
 
bool operator!= (const CapabilityPair &v1, const CapabilityPair &v2)
 
bool operator!= (const CaptchaInfo &v1, const CaptchaInfo &v2)
 
bool operator!= (const ChannelDetails &v1, const ChannelDetails &v2)
 
bool operator!= (const ChannelInfo &v1, const ChannelInfo &v2)
 
bool operator!= (const ContactCapability &v1, const ContactCapability &v2)
 
bool operator!= (const ContactInfoField &v1, const ContactInfoField &v2)
 
bool operator!= (const ContactSubscriptions &v1, const ContactSubscriptions &v2)
 
bool operator!= (const CurrencyAmount &v1, const CurrencyAmount &v2)
 
bool operator!= (const DBusTubeMember &v1, const DBusTubeMember &v2)
 
bool operator!= (const DebugMessage &v1, const DebugMessage &v2)
 
bool operator!= (const FieldSpec &v1, const FieldSpec &v2)
 
bool operator!= (const HTTPPostData &v1, const HTTPPostData &v2)
 
bool operator!= (const LocalPendingInfo &v1, const LocalPendingInfo &v2)
 
bool operator!= (const MailAddress &v1, const MailAddress &v2)
 
bool operator!= (const MediaDescriptionOffer &v1, const MediaDescriptionOffer &v2)
 
bool operator!= (const MediaSessionHandlerInfo &v1, const MediaSessionHandlerInfo &v2)
 
bool operator!= (const MediaStreamHandlerTransport &v1, const MediaStreamHandlerTransport &v2)
 
bool operator!= (const MediaStreamInfo &v1, const MediaStreamInfo &v2)
 
bool operator!= (const NotDelegatedError &v1, const NotDelegatedError &v2)
 
bool operator!= (const ParamSpec &v1, const ParamSpec &v2)
 
bool operator!= (const PendingTextMessage &v1, const PendingTextMessage &v2)
 
bool operator!= (const PropertyFlagsChange &v1, const PropertyFlagsChange &v2)
 
bool operator!= (const PropertySpec &v1, const PropertySpec &v2)
 
bool operator!= (const PropertyValue &v1, const PropertyValue &v2)
 
bool operator!= (const RTCPFeedbackMessage &v1, const RTCPFeedbackMessage &v2)
 
bool operator!= (const RTPHeaderExtension &v1, const RTPHeaderExtension &v2)
 
bool operator!= (const RequestableChannelClass &v1, const RequestableChannelClass &v2)
 
bool operator!= (const RichPresenceAccessControl &v1, const RichPresenceAccessControl &v2)
 
bool operator!= (const RoomInfo &v1, const RoomInfo &v2)
 
bool operator!= (const ServicePoint &v1, const ServicePoint &v2)
 
bool operator!= (const SimplePresence &v1, const SimplePresence &v2)
 
bool operator!= (const SimpleStatusSpec &v1, const SimpleStatusSpec &v2)
 
bool operator!= (const SocketAddressIP &v1, const SocketAddressIP &v2)
 
bool operator!= (const SocketAddressIPv4 &v1, const SocketAddressIPv4 &v2)
 
bool operator!= (const SocketAddressIPv6 &v1, const SocketAddressIPv6 &v2)
 
bool operator!= (const SocketNetmaskIPv4 &v1, const SocketNetmaskIPv4 &v2)
 
bool operator!= (const SocketNetmaskIPv6 &v1, const SocketNetmaskIPv6 &v2)
 
bool operator!= (const StreamCredentials &v1, const StreamCredentials &v2)
 
bool operator!= (const TLSCertificateRejection &v1, const TLSCertificateRejection &v2)
 
bool operator!= (const TubeInfo &v1, const TubeInfo &v2)
 
bool operator!= (const VideoResolution &v1, const VideoResolution &v2)
 
bool operator!= (const CandidatePair &v1, const CandidatePair &v2)
 
bool operator!= (const Codec &v1, const Codec &v2)
 
bool operator!= (const HandlerCapabilities &v1, const HandlerCapabilities &v2)
 
bool operator!= (const LastActivityAndStatuses &v1, const LastActivityAndStatuses &v2)
 
bool operator!= (const MailURL &v1, const MailURL &v2)
 
bool operator!= (const MediaStreamHandlerCandidate &v1, const MediaStreamHandlerCandidate &v2)
 
bool operator!= (const MediaStreamHandlerCodec &v1, const MediaStreamHandlerCodec &v2)
 
bool operator!= (const RTCPFeedbackMessageProperties &v1, const RTCPFeedbackMessageProperties &v2)
 
bool operator!= (const ServicePointInfo &v1, const ServicePointInfo &v2)
 
bool operator!= (const StatusSpec &v1, const StatusSpec &v2)
 

Variables

const int NUM_HANDLE_TYPES
 
const int NUM_CONNECTION_STATUSES
 
const int NUM_CONNECTION_STATUS_REASONS
 
const int NUM_CONTACT_LIST_STATES
 
const int NUM_SUBSCRIPTION_STATES
 
const int NUM_CONTACT_METADATA_STORAGE_TYPES
 
const int NUM_HTTP_METHODS
 
const int NUM_SERVICE_POINT_TYPES
 
const int NUM_CONNECTION_PRESENCE_TYPES
 
const int NUM_ACCESS_CONTROL_TYPES
 
const int NUM_RICH_PRESENCE_ACCESS_CONTROL_TYPES
 
const int NUM_CALL_STATES
 
const int NUM_CALL_STATE_CHANGE_REASONS
 
const int NUM_CHANNEL_CONTACT_SEARCH_STATES
 
const int NUM_FILE_TRANSFER_STATES
 
const int NUM_FILE_TRANSFER_STATE_CHANGE_REASONS
 
const int NUM_FILE_HASH_TYPES
 
const int NUM_MEDIA_STREAM_TYPES
 
const int NUM_MEDIA_STREAM_STATES
 
const int NUM_MEDIA_STREAM_DIRECTIONS
 
const int NUM_CHANNEL_TEXT_SEND_ERRORS
 
const int NUM_CHANNEL_TEXT_MESSAGE_TYPES
 
const int NUM_TUBE_TYPES
 
const int NUM_TUBE_STATES
 
const int NUM_CAPTCHA_CANCEL_REASONS
 
const int NUM_CAPTCHA_STATUSES
 
const int NUM_CHANNEL_CHAT_STATES
 
const int NUM_DTMF_EVENTS
 
const int NUM_CHANNEL_GROUP_CHANGE_REASONS
 
const int NUM_LOCAL_HOLD_STATES
 
const int NUM_LOCAL_HOLD_STATE_REASONS
 
const int NUM_DELIVERY_STATUSES
 
const int NUM_SASL_ABORT_REASONS
 
const int NUM_SASL_STATUSES
 
const int NUM_TUBE_CHANNEL_STATES
 
const int NUM_SOCKET_ADDRESS_TYPES
 
const int NUM_SOCKET_ACCESS_CONTROLS
 
const int NUM_MEDIA_STREAM_ERRORS
 
const int NUM_MEDIA_STREAM_BASE_PROTOS
 
const int NUM_MEDIA_STREAM_TRANSPORT_TYPES
 
const int NUM_DEBUG_LEVELS
 
const int NUM_TLS_CERTIFICATE_STATES
 
const int NUM_TLS_CERTIFICATE_REJECT_REASONS
 
const int NUM_CALL_CONTENT_PACKETIZATION_TYPES
 
const int NUM_CALL_CONTENT_DISPOSITIONS
 
const int NUM_RCPT_XR_RTT_MODES
 
const int NUM_STREAM_FLOW_STATES
 
const int NUM_CALL_STREAM_CANDIDATE_TYPES
 
const int NUM_STREAM_COMPONENTS
 
const int NUM_STREAM_TRANSPORT_TYPES
 
const int NUM_SENDING_STATES
 
const int NUM_STREAM_ENDPOINT_STATES
 
const int NUM_LOCAL_MUTE_STATES
 

Detailed Description

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

Copyright © 2009-2012 Collabora Ltd. http://www.collabora.co.uk/ Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Typedef Documentation

typedef QList<CallContentPtr> Tp::CallContents
typedef QList<CallStreamPtr> Tp::CallStreams
typedef QListIterator<uint> Tp::ReferencedHandlesIterator
typedef QList<StreamedMediaStreamPtr> Tp::StreamedMediaStreams

Function Documentation

uint Tp::qHash ( const ChannelClassSpec &  spec)
inline
uint Tp::qHash ( const QSet< ChannelClassSpec > &  specSet)
inline
uint Tp::qHash ( const ChannelClassSpecList &  specList)
inline
Debug Tp::enabledDebug ( )
Debug Tp::enabledWarning ( )
Features Tp::operator| ( const Feature &  feature1,
const Feature &  feature2 
)
inline
Features Tp::operator| ( const Features &  features,
const Feature &  feature 
)
inline
uint Tp::qHash ( const Features &  features)
inline
template<class R >
PtrFunctor0<R> Tp::ptrFun ( R(*)()  fn)
inline
template<class R , class Arg1 >
PtrFunctor1<R, Arg1> Tp::ptrFun ( R(*)(Arg1)  fn)
inline
template<class R , class Arg1 , class Arg2 >
PtrFunctor2<R, Arg1, Arg2> Tp::ptrFun ( R(*)(Arg1, Arg2)  fn)
inline
template<class R , class Arg1 , class Arg2 , class Arg3 >
PtrFunctor3<R, Arg1, Arg2, Arg3> Tp::ptrFun ( R(*)(Arg1, Arg2, Arg3)  fn)
inline
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
PtrFunctor4<R, Arg1, Arg2, Arg3, Arg4> Tp::ptrFun ( R(*)(Arg1, Arg2, Arg3, Arg4)  fn)
inline
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
PtrFunctor5<R, Arg1, Arg2, Arg3, Arg4, Arg5> Tp::ptrFun ( R(*)(Arg1, Arg2, Arg3, Arg4, Arg5)  fn)
inline
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
PtrFunctor6<R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6> Tp::ptrFun ( R(*)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)  fn)
inline
template<class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
PtrFunctor7<R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7> Tp::ptrFun ( R(*)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)  fn)
inline
template<class R , class T >
MemberFunctor0<R, T> Tp::memFun ( T *  obj,
R(T::*)()  fn 
)
inline
template<class R , class T , class Arg1 >
MemberFunctor1<R, T, Arg1> Tp::memFun ( T *  obj,
R(T::*)(Arg1)  fn 
)
inline
template<class R , class T , class Arg1 , class Arg2 >
MemberFunctor2<R, T, Arg1, Arg2> Tp::memFun ( T *  obj,
R(T::*)(Arg1, Arg2)  fn 
)
inline
template<class R , class T , class Arg1 , class Arg2 , class Arg3 >
MemberFunctor3<R, T, Arg1, Arg2, Arg3> Tp::memFun ( T *  obj,
R(T::*)(Arg1, Arg2, Arg3)  fn 
)
inline
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
MemberFunctor4<R, T, Arg1, Arg2, Arg3, Arg4> Tp::memFun ( T *  obj,
R(T::*)(Arg1, Arg2, Arg3, Arg4)  fn 
)
inline
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
MemberFunctor5<R, T, Arg1, Arg2, Arg3, Arg4, Arg5> Tp::memFun ( T *  obj,
R(T::*)(Arg1, Arg2, Arg3, Arg4, Arg5)  fn 
)
inline
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
MemberFunctor6<R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6> Tp::memFun ( T *  obj,
R(T::*)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)  fn 
)
inline
template<class R , class T , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
MemberFunctor7<R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7> Tp::memFun ( T *  obj,
R(T::*)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)  fn 
)
inline
uint Tp::qHash ( const ProtocolParameter &  parameter)
template<typename T >
uint Tp::qHash ( const SharedPtr< T > &  ptr)
inline
template<typename T >
uint Tp::qHash ( const WeakPtr< T > &  ptr)
inline
void Tp::registerTypes ( )

\ingroup types

Register the types used by the library with the QtDBus type system.

Call this function to register the types used before using anything else in the library.

bool Tp::operator== ( const SUSocketAddress &  v1,
const SUSocketAddress &  v2 
)
QDBusArgument& Tp::operator<< ( QDBusArgument &  arg,
const SUSocketAddress &  val 
)
const QDBusArgument& Tp::operator>> ( const QDBusArgument &  arg,
SUSocketAddress &  val 
)
QString Tp::escapeAsIdentifier ( const QString &  string)

Escape an arbitrary string so it follows the rules for a C identifier, and hence an object path component, interface element component, bus name component or member name in D-Bus.

This is a reversible encoding, so it preserves distinctness.

The escaping consists of replacing all non-alphanumerics, and the first character if it's a digit, with an underscore and two lower-case hex digits:

"0123abc_xyz\x01\xff" -> _30123abc_5fxyz_01_ff

i.e. similar to URI encoding, but with _ taking the role of %, and a smaller allowed set. As a special case, "" is escaped to "_" (just for completeness, really).

Parameters
stringThe string to be escaped.
Returns
the escaped string.
bool Tp::checkValidProtocolName ( const QString &  protocolName)
QVariant::Type Tp::variantTypeFromDBusSignature ( const QString &  signature)
QVariant Tp::parseValueWithDBusSignature ( const QString &  value,
const QString &  dbusSignature 
)
bool Tp::operator== ( const AccessControl &  v1,
const AccessControl &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const AccessControl &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
AccessControl &  val 
)
bool Tp::operator== ( const AliasPair &  v1,
const AliasPair &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const AliasPair &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
AliasPair &  val 
)
bool Tp::operator== ( const Avatar &  v1,
const Avatar &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const Avatar &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
Avatar &  val 
)
bool Tp::operator== ( const CallStateReason &  v1,
const CallStateReason &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const CallStateReason &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
CallStateReason &  val 
)
bool Tp::operator== ( const Candidate &  v1,
const Candidate &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const Candidate &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
Candidate &  val 
)
bool Tp::operator== ( const CapabilityChange &  v1,
const CapabilityChange &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const CapabilityChange &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
CapabilityChange &  val 
)
bool Tp::operator== ( const CapabilityPair &  v1,
const CapabilityPair &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const CapabilityPair &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
CapabilityPair &  val 
)
bool Tp::operator== ( const CaptchaInfo &  v1,
const CaptchaInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const CaptchaInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
CaptchaInfo &  val 
)
bool Tp::operator== ( const ChannelDetails &  v1,
const ChannelDetails &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ChannelDetails &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ChannelDetails &  val 
)
bool Tp::operator== ( const ChannelInfo &  v1,
const ChannelInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ChannelInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ChannelInfo &  val 
)
bool Tp::operator== ( const ContactCapability &  v1,
const ContactCapability &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ContactCapability &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ContactCapability &  val 
)
bool Tp::operator== ( const ContactInfoField &  v1,
const ContactInfoField &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ContactInfoField &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ContactInfoField &  val 
)
bool Tp::operator== ( const ContactSubscriptions &  v1,
const ContactSubscriptions &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ContactSubscriptions &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ContactSubscriptions &  val 
)
bool Tp::operator== ( const CurrencyAmount &  v1,
const CurrencyAmount &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const CurrencyAmount &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
CurrencyAmount &  val 
)
bool Tp::operator== ( const DBusTubeMember &  v1,
const DBusTubeMember &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const DBusTubeMember &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
DBusTubeMember &  val 
)
bool Tp::operator== ( const DebugMessage &  v1,
const DebugMessage &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const DebugMessage &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
DebugMessage &  val 
)
bool Tp::operator== ( const FieldSpec &  v1,
const FieldSpec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const FieldSpec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
FieldSpec &  val 
)
bool Tp::operator== ( const HTTPPostData &  v1,
const HTTPPostData &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const HTTPPostData &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
HTTPPostData &  val 
)
bool Tp::operator== ( const LocalPendingInfo &  v1,
const LocalPendingInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const LocalPendingInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
LocalPendingInfo &  val 
)
bool Tp::operator== ( const MailAddress &  v1,
const MailAddress &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MailAddress &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MailAddress &  val 
)
bool Tp::operator== ( const MediaDescriptionOffer &  v1,
const MediaDescriptionOffer &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MediaDescriptionOffer &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MediaDescriptionOffer &  val 
)
bool Tp::operator== ( const MediaSessionHandlerInfo &  v1,
const MediaSessionHandlerInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MediaSessionHandlerInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MediaSessionHandlerInfo &  val 
)
bool Tp::operator== ( const MediaStreamHandlerTransport &  v1,
const MediaStreamHandlerTransport &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MediaStreamHandlerTransport &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MediaStreamHandlerTransport &  val 
)
bool Tp::operator== ( const MediaStreamInfo &  v1,
const MediaStreamInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MediaStreamInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MediaStreamInfo &  val 
)
bool Tp::operator== ( const NotDelegatedError &  v1,
const NotDelegatedError &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const NotDelegatedError &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
NotDelegatedError &  val 
)
bool Tp::operator== ( const ParamSpec &  v1,
const ParamSpec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ParamSpec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ParamSpec &  val 
)
bool Tp::operator== ( const PendingTextMessage &  v1,
const PendingTextMessage &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const PendingTextMessage &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
PendingTextMessage &  val 
)
bool Tp::operator== ( const PropertyFlagsChange &  v1,
const PropertyFlagsChange &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const PropertyFlagsChange &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
PropertyFlagsChange &  val 
)
bool Tp::operator== ( const PropertySpec &  v1,
const PropertySpec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const PropertySpec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
PropertySpec &  val 
)
bool Tp::operator== ( const PropertyValue &  v1,
const PropertyValue &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const PropertyValue &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
PropertyValue &  val 
)
bool Tp::operator== ( const RTCPFeedbackMessage &  v1,
const RTCPFeedbackMessage &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const RTCPFeedbackMessage &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
RTCPFeedbackMessage &  val 
)
bool Tp::operator== ( const RTPHeaderExtension &  v1,
const RTPHeaderExtension &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const RTPHeaderExtension &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
RTPHeaderExtension &  val 
)
bool Tp::operator== ( const RequestableChannelClass &  v1,
const RequestableChannelClass &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const RequestableChannelClass &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
RequestableChannelClass &  val 
)
bool Tp::operator== ( const RichPresenceAccessControl &  v1,
const RichPresenceAccessControl &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const RichPresenceAccessControl &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
RichPresenceAccessControl &  val 
)
bool Tp::operator== ( const RoomInfo &  v1,
const RoomInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const RoomInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
RoomInfo &  val 
)
bool Tp::operator== ( const ServicePoint &  v1,
const ServicePoint &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ServicePoint &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ServicePoint &  val 
)
bool Tp::operator== ( const SimplePresence &  v1,
const SimplePresence &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SimplePresence &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SimplePresence &  val 
)
bool Tp::operator== ( const SimpleStatusSpec &  v1,
const SimpleStatusSpec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SimpleStatusSpec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SimpleStatusSpec &  val 
)
bool Tp::operator== ( const SocketAddressIP &  v1,
const SocketAddressIP &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SocketAddressIP &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SocketAddressIP &  val 
)
bool Tp::operator== ( const SocketAddressIPv4 &  v1,
const SocketAddressIPv4 &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SocketAddressIPv4 &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SocketAddressIPv4 &  val 
)
bool Tp::operator== ( const SocketAddressIPv6 &  v1,
const SocketAddressIPv6 &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SocketAddressIPv6 &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SocketAddressIPv6 &  val 
)
bool Tp::operator== ( const SocketNetmaskIPv4 &  v1,
const SocketNetmaskIPv4 &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SocketNetmaskIPv4 &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SocketNetmaskIPv4 &  val 
)
bool Tp::operator== ( const SocketNetmaskIPv6 &  v1,
const SocketNetmaskIPv6 &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const SocketNetmaskIPv6 &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
SocketNetmaskIPv6 &  val 
)
bool Tp::operator== ( const StreamCredentials &  v1,
const StreamCredentials &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const StreamCredentials &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
StreamCredentials &  val 
)
bool Tp::operator== ( const TLSCertificateRejection &  v1,
const TLSCertificateRejection &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const TLSCertificateRejection &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
TLSCertificateRejection &  val 
)
bool Tp::operator== ( const TubeInfo &  v1,
const TubeInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const TubeInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
TubeInfo &  val 
)
bool Tp::operator== ( const VideoResolution &  v1,
const VideoResolution &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const VideoResolution &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
VideoResolution &  val 
)
bool Tp::operator== ( const CandidatePair &  v1,
const CandidatePair &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const CandidatePair &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
CandidatePair &  val 
)
bool Tp::operator== ( const Codec &  v1,
const Codec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const Codec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
Codec &  val 
)
bool Tp::operator== ( const HandlerCapabilities &  v1,
const HandlerCapabilities &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const HandlerCapabilities &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
HandlerCapabilities &  val 
)
bool Tp::operator== ( const LastActivityAndStatuses &  v1,
const LastActivityAndStatuses &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const LastActivityAndStatuses &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
LastActivityAndStatuses &  val 
)
bool Tp::operator== ( const MailURL &  v1,
const MailURL &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MailURL &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MailURL &  val 
)
bool Tp::operator== ( const MediaStreamHandlerCandidate &  v1,
const MediaStreamHandlerCandidate &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MediaStreamHandlerCandidate &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MediaStreamHandlerCandidate &  val 
)
bool Tp::operator== ( const MediaStreamHandlerCodec &  v1,
const MediaStreamHandlerCodec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const MediaStreamHandlerCodec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
MediaStreamHandlerCodec &  val 
)
bool Tp::operator== ( const RTCPFeedbackMessageProperties &  v1,
const RTCPFeedbackMessageProperties &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const RTCPFeedbackMessageProperties &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
RTCPFeedbackMessageProperties &  val 
)
bool Tp::operator== ( const ServicePointInfo &  v1,
const ServicePointInfo &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const ServicePointInfo &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
ServicePointInfo &  val 
)
bool Tp::operator== ( const StatusSpec &  v1,
const StatusSpec &  v2 
)
QDBusArgument & Tp::operator<< ( QDBusArgument &  arg,
const StatusSpec &  val 
)
const QDBusArgument & Tp::operator>> ( const QDBusArgument &  arg,
StatusSpec &  val 
)
void Tp::_registerTypes ( )
bool Tp::operator!= ( const AccessControl &  v1,
const AccessControl &  v2 
)
inline
bool Tp::operator!= ( const AliasPair &  v1,
const AliasPair &  v2 
)
inline
bool Tp::operator!= ( const Avatar &  v1,
const Avatar &  v2 
)
inline
bool Tp::operator!= ( const CallStateReason &  v1,
const CallStateReason &  v2 
)
inline
bool Tp::operator!= ( const Candidate &  v1,
const Candidate &  v2 
)
inline
bool Tp::operator!= ( const CapabilityChange &  v1,
const CapabilityChange &  v2 
)
inline
bool Tp::operator!= ( const CapabilityPair &  v1,
const CapabilityPair &  v2 
)
inline
bool Tp::operator!= ( const CaptchaInfo &  v1,
const CaptchaInfo &  v2 
)
inline
bool Tp::operator!= ( const ChannelDetails &  v1,
const ChannelDetails &  v2 
)
inline
bool Tp::operator!= ( const ChannelInfo &  v1,
const ChannelInfo &  v2 
)
inline
bool Tp::operator!= ( const ContactCapability &  v1,
const ContactCapability &  v2 
)
inline
bool Tp::operator!= ( const ContactInfoField &  v1,
const ContactInfoField &  v2 
)
inline
bool Tp::operator!= ( const ContactSubscriptions &  v1,
const ContactSubscriptions &  v2 
)
inline
bool Tp::operator!= ( const CurrencyAmount &  v1,
const CurrencyAmount &  v2 
)
inline
bool Tp::operator!= ( const DBusTubeMember &  v1,
const DBusTubeMember &  v2 
)
inline
bool Tp::operator!= ( const DebugMessage &  v1,
const DebugMessage &  v2 
)
inline
bool Tp::operator!= ( const FieldSpec &  v1,
const FieldSpec &  v2 
)
inline
bool Tp::operator!= ( const HTTPPostData &  v1,
const HTTPPostData &  v2 
)
inline
bool Tp::operator!= ( const LocalPendingInfo &  v1,
const LocalPendingInfo &  v2 
)
inline
bool Tp::operator!= ( const MailAddress &  v1,
const MailAddress &  v2 
)
inline
bool Tp::operator!= ( const MediaDescriptionOffer &  v1,
const MediaDescriptionOffer &  v2 
)
inline
bool Tp::operator!= ( const MediaSessionHandlerInfo &  v1,
const MediaSessionHandlerInfo &  v2 
)
inline
bool Tp::operator!= ( const MediaStreamHandlerTransport &  v1,
const MediaStreamHandlerTransport &  v2 
)
inline
bool Tp::operator!= ( const MediaStreamInfo &  v1,
const MediaStreamInfo &  v2 
)
inline
bool Tp::operator!= ( const NotDelegatedError &  v1,
const NotDelegatedError &  v2 
)
inline
bool Tp::operator!= ( const ParamSpec &  v1,
const ParamSpec &  v2 
)
inline
bool Tp::operator!= ( const PendingTextMessage &  v1,
const PendingTextMessage &  v2 
)
inline
bool Tp::operator!= ( const PropertyFlagsChange &  v1,
const PropertyFlagsChange &  v2 
)
inline
bool Tp::operator!= ( const PropertySpec &  v1,
const PropertySpec &  v2 
)
inline
bool Tp::operator!= ( const PropertyValue &  v1,
const PropertyValue &  v2 
)
inline
bool Tp::operator!= ( const RTCPFeedbackMessage &  v1,
const RTCPFeedbackMessage &  v2 
)
inline
bool Tp::operator!= ( const RTPHeaderExtension &  v1,
const RTPHeaderExtension &  v2 
)
inline
bool Tp::operator!= ( const RequestableChannelClass &  v1,
const RequestableChannelClass &  v2 
)
inline
bool Tp::operator!= ( const RichPresenceAccessControl &  v1,
const RichPresenceAccessControl &  v2 
)
inline
bool Tp::operator!= ( const RoomInfo &  v1,
const RoomInfo &  v2 
)
inline
bool Tp::operator!= ( const ServicePoint &  v1,
const ServicePoint &  v2 
)
inline
bool Tp::operator!= ( const SimplePresence &  v1,
const SimplePresence &  v2 
)
inline
bool Tp::operator!= ( const SimpleStatusSpec &  v1,
const SimpleStatusSpec &  v2 
)
inline
bool Tp::operator!= ( const SocketAddressIP &  v1,
const SocketAddressIP &  v2 
)
inline
bool Tp::operator!= ( const SocketAddressIPv4 &  v1,
const SocketAddressIPv4 &  v2 
)
inline
bool Tp::operator!= ( const SocketAddressIPv6 &  v1,
const SocketAddressIPv6 &  v2 
)
inline
bool Tp::operator!= ( const SocketNetmaskIPv4 &  v1,
const SocketNetmaskIPv4 &  v2 
)
inline
bool Tp::operator!= ( const SocketNetmaskIPv6 &  v1,
const SocketNetmaskIPv6 &  v2 
)
inline
bool Tp::operator!= ( const StreamCredentials &  v1,
const StreamCredentials &  v2 
)
inline
bool Tp::operator!= ( const TLSCertificateRejection &  v1,
const TLSCertificateRejection &  v2 
)
inline
bool Tp::operator!= ( const TubeInfo &  v1,
const TubeInfo &  v2 
)
inline
bool Tp::operator!= ( const VideoResolution &  v1,
const VideoResolution &  v2 
)
inline
bool Tp::operator!= ( const CandidatePair &  v1,
const CandidatePair &  v2 
)
inline
bool Tp::operator!= ( const Codec &  v1,
const Codec &  v2 
)
inline
bool Tp::operator!= ( const HandlerCapabilities &  v1,
const HandlerCapabilities &  v2 
)
inline
bool Tp::operator!= ( const LastActivityAndStatuses &  v1,
const LastActivityAndStatuses &  v2 
)
inline
bool Tp::operator!= ( const MailURL &  v1,
const MailURL &  v2 
)
inline
bool Tp::operator!= ( const MediaStreamHandlerCandidate &  v1,
const MediaStreamHandlerCandidate &  v2 
)
inline
bool Tp::operator!= ( const MediaStreamHandlerCodec &  v1,
const MediaStreamHandlerCodec &  v2 
)
inline
bool Tp::operator!= ( const RTCPFeedbackMessageProperties &  v1,
const RTCPFeedbackMessageProperties &  v2 
)
inline
bool Tp::operator!= ( const ServicePointInfo &  v1,
const ServicePointInfo &  v2 
)
inline
bool Tp::operator!= ( const StatusSpec &  v1,
const StatusSpec &  v2 
)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01320.html0000644000175100017520000004553012530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::MediaStreamHandlerInterface Member List

This is the complete list of members for Tp::Client::MediaStreamHandlerInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddRemoteCandidate(const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports)Tp::Client::MediaStreamHandlerInterfacesignal
Close()Tp::Client::MediaStreamHandlerInterfacesignal
CodecChoice(uint codecID, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
CodecsUpdated(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
Error(uint errorCode, const QString &message, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
HoldState(bool held, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::MediaStreamHandlerInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MediaStreamHandlerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::MediaStreamHandlerInterface
MediaStreamHandlerInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::MediaStreamHandlerInterface
MediaStreamHandlerInterface(Tp::DBusProxy *proxy)Tp::Client::MediaStreamHandlerInterface
NativeCandidatesPrepared(int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
NewActiveCandidatePair(const QString &nativeCandidateID, const QString &remoteCandidateID, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
NewActiveTransportPair(const QString &nativeCandidateID, const Tp::MediaStreamHandlerTransport &nativeTransport, const QString &remoteCandidateID, const Tp::MediaStreamHandlerTransport &remoteTransport, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
NewNativeCandidate(const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Ready(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
RemoveRemoteCandidate(const QString &candidateID)Tp::Client::MediaStreamHandlerInterfacesignal
requestAllProperties() const Tp::Client::MediaStreamHandlerInterfaceinline
requestPropertyCreatedLocally() const Tp::Client::MediaStreamHandlerInterfaceinline
requestPropertyNATTraversal() const Tp::Client::MediaStreamHandlerInterfaceinline
requestPropertyRelayInfo() const Tp::Client::MediaStreamHandlerInterfaceinline
requestPropertySTUNServers() const Tp::Client::MediaStreamHandlerInterfaceinline
SetActiveCandidatePair(const QString &nativeCandidateID, const QString &remoteCandidateID)Tp::Client::MediaStreamHandlerInterfacesignal
SetLocalCodecs(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetRemoteCandidateList(const Tp::MediaStreamHandlerCandidateList &remoteCandidates)Tp::Client::MediaStreamHandlerInterfacesignal
SetRemoteCodecs(const Tp::MediaStreamHandlerCodecList &codecs)Tp::Client::MediaStreamHandlerInterfacesignal
SetRemoteFeedbackMessages(const Tp::RTCPFeedbackMessageMap &messages)Tp::Client::MediaStreamHandlerInterfacesignal
SetRemoteHeaderExtensions(const Tp::RTPHeaderExtensionsList &headerExtensions)Tp::Client::MediaStreamHandlerInterfacesignal
SetStreamHeld(bool held)Tp::Client::MediaStreamHandlerInterfacesignal
SetStreamPlaying(bool playing)Tp::Client::MediaStreamHandlerInterfacesignal
SetStreamSending(bool sending)Tp::Client::MediaStreamHandlerInterfacesignal
StartNamedTelephonyEvent(uchar event, uint codecID)Tp::Client::MediaStreamHandlerInterfacesignal
StartSoundTelephonyEvent(uchar event)Tp::Client::MediaStreamHandlerInterfacesignal
StartTelephonyEvent(uchar event)Tp::Client::MediaStreamHandlerInterfacesignal
staticInterfaceName()Tp::Client::MediaStreamHandlerInterfaceinlinestatic
StopTelephonyEvent()Tp::Client::MediaStreamHandlerInterfacesignal
StreamState(uint state, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
SupportedCodecs(const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
SupportedFeedbackMessages(const Tp::RTCPFeedbackMessageMap &messages, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
SupportedHeaderExtensions(const Tp::RTPHeaderExtensionsList &headerExtensions, int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
UnholdFailure(int timeout=-1)Tp::Client::MediaStreamHandlerInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00104.html0000644000175100017520000004760612530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelMergeableConferenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.MergeableConference. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2< void, const
QDBusObjectPath &, DBusError * > 
MergeCallback
 

Public Member Functions

virtual ~BaseChannelMergeableConferenceInterface ()
 
QVariantMap immutableProperties () const
 
void merge (const QDBusObjectPath &channel)
 
void setMergeCallback (const MergeCallback &cb)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelMergeableConferenceInterfacePtr 
create ()
 
template<typename BaseChannelMergeableConferenceInterfaceSubclass >
static SharedPtr
< BaseChannelMergeableConferenceInterfaceSubclass > 
create ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.MergeableConference.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelMergeableConferenceInterface::~BaseChannelMergeableConferenceInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelMergeableConferenceInterfacePtr Tp::BaseChannelMergeableConferenceInterface::create ( )
inlinestatic
template<typename BaseChannelMergeableConferenceInterfaceSubclass >
static SharedPtr<BaseChannelMergeableConferenceInterfaceSubclass> Tp::BaseChannelMergeableConferenceInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelMergeableConferenceInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseChannelMergeableConferenceInterface::merge ( const QDBusObjectPath &  channel)
void Tp::BaseChannelMergeableConferenceInterface::setMergeCallback ( const MergeCallback cb)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01075.html0000644000175100017520000001207112530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingOperation Member List

This is the complete list of members for Tp::PendingOperation, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00419.html0000644000175100017520000004230612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::OptionalInterfaceFactory< DBusProxySubclass > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::OptionalInterfaceFactory< DBusProxySubclass > Class Template Reference

The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to offer access to shared instances of interface proxies for optional interfaces. More...

#include <TelepathyQt/OptionalInterfaceFactory>

Public Types

enum  InterfaceSupportedChecking { CheckInterfaceSupported, BypassInterfaceCheck }
 

Public Member Functions

 OptionalInterfaceFactory (DBusProxySubclass *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
template<class Interface >
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
template<typename Interface >
Interface * interface () const
 

Protected Member Functions

void setInterfaces (const QStringList &interfaces)
 

Detailed Description

template<typename DBusProxySubclass>
class Tp::OptionalInterfaceFactory< DBusProxySubclass >

The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to offer access to shared instances of interface proxies for optional interfaces.

To use this helper in a subclass of DBusProxy (say, ExampleObject), ExampleObject should inherit from OptionalInterfaceFactory<ExampleObject>, and call OptionalInterfaceFactory(this) in its constructor's initialization list.

Template Parameters
DBusProxySubclassA subclass of DBusProxy

Member Enumeration Documentation

template<typename DBusProxySubclass>
enum Tp::OptionalInterfaceFactory::InterfaceSupportedChecking

Specifies if the interface being supported by the remote object should be checked by optionalInterface() and the convenience functions for it.

See Also
optionalInterface()
Enumerator
CheckInterfaceSupported 

Don't return an interface instance unless it can be guaranteed that the remote object actually implements the interface.

BypassInterfaceCheck 

Return an interface instance even if it can't be verified that the remote object supports the interface.

Constructor & Destructor Documentation

template<typename DBusProxySubclass>
Tp::OptionalInterfaceFactory< DBusProxySubclass >::OptionalInterfaceFactory ( DBusProxySubclass *  this_)
inline

Class constructor.

Parameters
this_The class to which this OptionalInterfaceFactory is attached
template<typename DBusProxySubclass>
Tp::OptionalInterfaceFactory< DBusProxySubclass >::~OptionalInterfaceFactory ( )
inline

Class destructor.

Frees all interface instances constructed by this factory.

Member Function Documentation

template<typename DBusProxySubclass>
Tp::OptionalInterfaceFactory< DBusProxySubclass >::interfaces ( ) const
inline

Return a list of interfaces supported by this object.

Returns
List of supported interfaces.
template<typename DBusProxySubclass>
bool Tp::OptionalInterfaceFactory< DBusProxySubclass >::hasInterface ( const QString &  name) const
inline
template<typename DBusProxySubclass>
template<class Interface >
Interface* Tp::OptionalInterfaceFactory< DBusProxySubclass >::optionalInterface ( InterfaceSupportedChecking  check = CheckInterfaceSupported) const
inline
template<typename DBusProxySubclass>
template<typename Interface >
template< typename Interface > inline Interface * Tp::OptionalInterfaceFactory< DBusProxySubclass >::interface ( ) const
inline

Return a pointer to a valid instance of a interface class, associated with the same remote object as the given main interface instance. The given main interface must be of the class the optional interface is generated for (for eg. ChannelInterfaceGroupInterface this means ChannelInterface) or a subclass.

First invocation of this method for a particular optional interface class will construct the instance; subsequent calls will return a pointer to the same instance.

The returned instance is freed when the factory is destroyed; using it after destroying the factory will likely produce a crash. As the instance is shared, it should not be freed directly.

Template Parameters
InterfaceClass of the interface instance to get.
Returns
A pointer to an optional interface instance.
template<typename DBusProxySubclass>
void Tp::OptionalInterfaceFactory< DBusProxySubclass >::setInterfaces ( const QStringList &  interfaces)
inlineprotected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00173.html0000644000175100017520000001341312530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelCallStateMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelCallStateMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, uint >.

Public Member Functions

 ChannelCallStateMap ()
 
 ChannelCallStateMap (const QMap< uint, uint > &a)
 
ChannelCallStateMapoperator= (const QMap< uint, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, uint>, but needed to have a discrete type in the Qt type system.

A map from contacts to call states.

Constructor & Destructor Documentation

Tp::ChannelCallStateMap::ChannelCallStateMap ( )
inline
Tp::ChannelCallStateMap::ChannelCallStateMap ( const QMap< uint, uint > &  a)
inline

Member Function Documentation

ChannelCallStateMap& Tp::ChannelCallStateMap::operator= ( const QMap< uint, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00699_source.html0000644000175100017520000003637712530426257022550 0ustar00kaffeinekaffeine00000000000000 feature.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
feature.h
1 
23 #ifndef _TelepathyQt_feature_h_HEADER_GUARD_
24 #define _TelepathyQt_feature_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QMetaType>
33 #include <QPair>
34 #include <QSet>
35 #include <QSharedDataPointer>
36 #include <QString>
37 
38 namespace Tp
39 {
40 
41 class TP_QT_EXPORT Feature : public QPair<QString, uint>
42 {
43 public:
44  Feature();
45  Feature(const QString &className, uint id, bool critical = false);
46  Feature(const Feature &other);
47  ~Feature();
48 
49  bool isValid() const { return mPriv.constData() != 0; }
50 
51  Feature &operator=(const Feature &other);
52 
53  bool isCritical() const;
54 
55 private:
56  struct Private;
57  friend struct Private;
58  QSharedDataPointer<Private> mPriv;
59 };
60 
61 class TP_QT_EXPORT Features : public QSet<Feature>
62 {
63 public:
64  Features() { }
65  Features(const Feature &feature) { insert(feature); }
66  Features(const QSet<Feature> &s) : QSet<Feature>(s) { }
67 };
68 
69 inline Features operator|(const Feature &feature1, const Feature &feature2)
70 {
71  return Features() << feature1 << feature2;
72 }
73 
74 inline Features operator|(const Features &features, const Feature &feature)
75 {
76  return Features(features) << feature;
77 }
78 
79 inline uint qHash(const Features &features)
80 {
81  int ret = 0;
82  Q_FOREACH (const Feature &feature, features) {
83  int h = qHash(feature);
84  ret ^= h;
85  }
86  return ret;
87 }
88 
89 } // Tp
90 
91 Q_DECLARE_METATYPE(Tp::Feature);
92 Q_DECLARE_METATYPE(Tp::Features);
93 
94 #endif
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
Features(const Feature &feature)
Definition: feature.h:65
Features(const QSet< Feature > &s)
Definition: feature.h:66
Features()
Definition: feature.h:64
Features operator|(const Feature &feature1, const Feature &feature2)
Definition: feature.h:69
bool isValid() const
Definition: feature.h:49
uint qHash(const ChannelClassSpec &spec)
Definition: channel-class-spec.h:283
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01134.html0000644000175100017520000000530712530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CallStateReason Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00989.html0000644000175100017520000000647112530426260021154 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelClassSpecList Member List

This is the complete list of members for Tp::ChannelClassSpecList, including all inherited members.

bareClasses() const Tp::ChannelClassSpecListinline
ChannelClassSpecList()Tp::ChannelClassSpecListinline
ChannelClassSpecList(const ChannelClassSpec &spec)Tp::ChannelClassSpecListinline
ChannelClassSpecList(const QList< ChannelClassSpec > &other)Tp::ChannelClassSpecListinline
ChannelClassSpecList(const ChannelClassList &classes)Tp::ChannelClassSpecListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00488.html0000644000175100017520000010474212530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::ReceivedMessage Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ReceivedMessage class is a subclass of Message, representing a received message only. More...

#include <TelepathyQt/ReceivedMessage>

Inherits Tp::Message.

Classes

class  DeliveryDetails
 The ReceivedMessage::DeliveryDetails class represents the details of a delivery report. More...
 

Public Member Functions

 ReceivedMessage (const ReceivedMessage &other)
 
ReceivedMessageoperator= (const ReceivedMessage &other)
 
 ~ReceivedMessage ()
 
QDateTime received () const
 
ContactPtr sender () const
 
QString senderNickname () const
 
QString supersededToken () const
 
bool isScrollback () const
 
bool isRescued () const
 
bool isDeliveryReport () const
 
DeliveryDetails deliveryDetails () const
 
bool isFromChannel (const TextChannelPtr &channel) const
 
- Public Member Functions inherited from Tp::Message
 Message (ChannelTextMessageType, const QString &)
 
 Message (const Message &other)
 
 ~Message ()
 
Messageoperator= (const Message &other)
 
bool operator== (const Message &other) const
 
bool operator!= (const Message &other) const
 
QDateTime sent () const
 
ChannelTextMessageType messageType () const
 
bool isTruncated () const
 
bool hasNonTextContent () const
 
QString messageToken () const
 
bool isSpecificToDBusInterface () const
 
QString dbusInterface () const
 
QString text () const
 
MessagePart header () const
 
int size () const
 
MessagePart part (uint index) const
 
MessagePartList parts () const
 

Protected Member Functions

 ReceivedMessage (const MessagePartList &parts, const TextChannelPtr &channel)
 
 ReceivedMessage ()
 
uint senderHandle () const
 
QString senderId () const
 
uint pendingId () const
 
void setForceNonText ()
 
void clearSenderHandle ()
 
void setSender (const ContactPtr &sender)
 

Detailed Description

The ReceivedMessage class is a subclass of Message, representing a received message only.

It contains additional information that's generally only available on received messages.

Constructor & Destructor Documentation

Tp::ReceivedMessage::ReceivedMessage ( const ReceivedMessage other)

Copy constructor.

Tp::ReceivedMessage::~ReceivedMessage ( )

Class destructor.

Tp::ReceivedMessage::ReceivedMessage ( const MessagePartList parts,
const TextChannelPtr &  channel 
)
protected

Construct a new ReceivedMessage object.

Parameters
partsThe parts of a message as defined by the Telepathy specification. This list must have length at least 1.
channelThe channel owning this message.
Tp::ReceivedMessage::ReceivedMessage ( )
protected

Member Function Documentation

ReceivedMessage & Tp::ReceivedMessage::operator= ( const ReceivedMessage other)

Assignment operator.

QDateTime Tp::ReceivedMessage::received ( ) const

Return the time the message was received.

Returns
The timestamp as QDateTime, or QDateTime() if unknown.
ContactPtr Tp::ReceivedMessage::sender ( ) const

Return the contact who sent the message.

Returns
A pointer to the Contact object.
See Also
senderNickname()
QString Tp::ReceivedMessage::senderNickname ( ) const

Return the nickname chosen by the sender of the message, which can be different for each message in a conversation.

Returns
The nickname.
See Also
sender()
QString Tp::ReceivedMessage::supersededToken ( ) const

If this message replaces a previous message, return the value of messageToken() for that previous message. Otherwise, return an empty string.

For instance, a user interface could replace the superseded message with this message, or grey out the superseded message.

Returns
The message token of the superseded message or an empty string if none.
bool Tp::ReceivedMessage::isScrollback ( ) const

Return whether the incoming message was part of a replay of message history.

If true, loggers can use this to improve their heuristics for elimination of duplicate messages (a simple, correct implementation would be to avoid logging any message that has this flag).

Returns
true if the scrollback flag is set, false otherwise.
bool Tp::ReceivedMessage::isRescued ( ) const

Return whether the incoming message was seen in a previous channel during the lifetime of the connection, but was not acknowledged before that channel closed, causing the channel in which it now appears to open.

If true, loggers should not log this message again.

Returns
true if the rescued flag is set, false otherwise.
bool Tp::ReceivedMessage::isDeliveryReport ( ) const

Return whether the incoming message is a delivery report.

Returns
true if a delivery report, false otherwise.
See Also
deliveryDetails()
ReceivedMessage::DeliveryDetails Tp::ReceivedMessage::deliveryDetails ( ) const

Return the details of a delivery report.

This method should only be used if isDeliveryReport() returns true.

Returns
The delivery report as a ReceivedMessage::DeliveryDetails object.
See Also
isDeliveryReport()
bool Tp::ReceivedMessage::isFromChannel ( const TextChannelPtr &  channel) const

Return whether this message is from channel.

Returns
true if the message is from channel, false otherwise.
uint Tp::ReceivedMessage::senderHandle ( ) const
protected
QString Tp::ReceivedMessage::senderId ( ) const
protected
uint Tp::ReceivedMessage::pendingId ( ) const
protected
void Tp::ReceivedMessage::setForceNonText ( )
protected
void Tp::ReceivedMessage::clearSenderHandle ( )
protected
void Tp::ReceivedMessage::setSender ( const ContactPtr &  sender)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00232.html0000644000175100017520000016230212530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeCallAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeCallAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void SetRinging (const QDBusMessage &dbusMessage)
 
void SetQueued (const QDBusMessage &dbusMessage)
 
void Accept (const QDBusMessage &dbusMessage)
 
void Hangup (uint reason, const QString &detailedHangupReason, const QString &message, const QDBusMessage &dbusMessage)
 
QDBusObjectPath AddContent (const QString &contentName, uint contentType, uint initialDirection, const QDBusMessage &dbusMessage)
 

Signals

void ContentAdded (const QDBusObjectPath &content)
 
void ContentRemoved (const QDBusObjectPath &content, const Tp::CallStateReason &reason)
 
void CallStateChanged (uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails)
 
void CallMembersChanged (const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)
 

Public Member Functions

Tp::ObjectPathList Contents () const
 
QVariantMap CallStateDetails () const
 
uint CallState () const
 
uint CallFlags () const
 
Tp::CallStateReason CallStateReason () const
 
bool HardwareStreaming () const
 
Tp::CallMemberMap CallMembers () const
 
Tp::HandleIdentifierMap MemberIdentifiers () const
 
uint InitialTransport () const
 
bool InitialAudio () const
 
bool InitialVideo () const
 
QString InitialAudioName () const
 
QString InitialVideoName () const
 
bool MutableContents () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ObjectPathList Tp::Service::ChannelTypeCallAdaptor::Contents ( ) const

Return the value of the exported D-Bus object property Contents of type Tp::ObjectPathList.

Adaptees should export this property as a Qt property named 'contents' with type Tp::ObjectPathList.

The list of CallContentInterface objects that are part of this call. Change notification is via the ContentAdded() and ContentRemoved() signals.

Returns
The value of exported property Contents.
QVariantMap Tp::Service::ChannelTypeCallAdaptor::CallStateDetails ( ) const

Return the value of the exported D-Bus object property CallStateDetails of type QVariantMap.

Adaptees should export this property as a Qt property named 'callStateDetails' with type QVariantMap.

A map used to provide optional extensible details for the CallState , CallFlags and/or CallStateReason .

Well-known keys and their corresponding value types include:

hangup-message - s
An optional human-readable message sent when the call was ended, corresponding to the Message argument to the Hangup() method. This is only applicable when the call state is Ended.
XMPP Jingle can send such messages.
queue-message - s
An optional human-readable message sent when the local contact is being held in a queue. This is only applicable when Locally_Queued is in the call flags.
SIP 182 notifications can have human-readable messages attached.
debug-message - s
A message giving further details of any error indicated by the CallStateReason . This will not normally be localized or suitable for display to users, and is only applicable when the call state is Ended.
balance-required - i
Optionally included when a call cannot be connected because there is InsufficientBalance, indicating what the required balance would be to place this call. The value of this key has the same units and scale as ConnectionInterfaceBalanceInterface::AccountBalance .
forwarded-to - u
Optionally included when the CallStateReason is Forwarded. It indicates the handle to whom the Call was forwarded.
forwarded-to-id - s
The string that would result from inspecting the forwarded-to key (i.e. the contact's identifier in the IM protocol).
Returns
The value of exported property CallStateDetails.
uint Tp::Service::ChannelTypeCallAdaptor::CallState ( ) const

Return the value of the exported D-Bus object property CallState of type uint.

Adaptees should export this property as a Qt property named 'callState' with type uint.

The current high-level state of this call. The CallFlags provide additional information, and the CallStateReason and CallStateDetails explain the reason for the current values for those properties.

Note that when in a conference call, this property is purely to show your state in joining the call. The receiver (or remote contact) in this context is the conference server itself. The property does not change when other call members' states change.

Clients MAY consider unknown values in this property to be an error.

Returns
The value of exported property CallState.
uint Tp::Service::ChannelTypeCallAdaptor::CallFlags ( ) const

Return the value of the exported D-Bus object property CallFlags of type uint.

Adaptees should export this property as a Qt property named 'callFlags' with type uint.

Flags representing the status of the call as a whole, providing more specific information than the CallState .

Clients are expected to ignore unknown flags in this property, without error.

When an ongoing call is active and not on hold or has any other problems, this property will be 0.

Returns
The value of exported property CallFlags.
Tp::CallStateReason Tp::Service::ChannelTypeCallAdaptor::CallStateReason ( ) const

Return the value of the exported D-Bus object property CallStateReason of type Tp::CallStateReason.

Adaptees should export this property as a Qt property named 'callStateReason' with type Tp::CallStateReason.

The reason for the last change to the CallState and/or CallFlags . The CallStateDetails MAY provide additional information.

Returns
The value of exported property CallStateReason.
bool Tp::Service::ChannelTypeCallAdaptor::HardwareStreaming ( ) const

Return the value of the exported D-Bus object property HardwareStreaming of type bool.

Adaptees should export this property as a Qt property named 'hardwareStreaming' with type bool.

If this property is True, all of the media streaming is done by some mechanism outside the scope of Telepathy.

A connection manager might be intended for a specialized hardware device, which will take care of the audio streaming (e.g. telepathy-ring, which uses GSM hardware which does the actual audio streaming for the call).

If this is False, the handler is responsible for doing the actual media streaming for at least some contents itself. Those contents will have the CallContentInterfaceMediaInterface interface, to communicate the necessary information to a streaming implementation. Connection managers SHOULD operate like this, if possible.

Many connection managers (such as telepathy-gabble) only do the call signalling, and expect the client to do the actual streaming using something like Farsight, to improve latency and allow better UI integration.

Returns
The value of exported property HardwareStreaming.
Tp::CallMemberMap Tp::Service::ChannelTypeCallAdaptor::CallMembers ( ) const

Return the value of the exported D-Bus object property CallMembers of type Tp::CallMemberMap.

Adaptees should export this property as a Qt property named 'callMembers' with type Tp::CallMemberMap.

A mapping from the remote contacts that are part of this call to flags describing their status. This mapping never has the local user's handle as a key.

When the call ends, this property should be an empty list, and notified with CallMembersChanged()

If the Call implements ChannelInterfaceGroupInterface and the Group members are channel-specific handles, then this call SHOULD also use channel-specific handles.

Anonymous members are exposed as channel-specific handles with no owner.

Returns
The value of exported property CallMembers.
Tp::HandleIdentifierMap Tp::Service::ChannelTypeCallAdaptor::MemberIdentifiers ( ) const

Return the value of the exported D-Bus object property MemberIdentifiers of type Tp::HandleIdentifierMap.

Adaptees should export this property as a Qt property named 'memberIdentifiers' with type Tp::HandleIdentifierMap.

The string identifiers for handles mentioned in CallMembers, to give clients the minimal information necessary to create contacts without waiting for round-trips.

Returns
The value of exported property MemberIdentifiers.
uint Tp::Service::ChannelTypeCallAdaptor::InitialTransport ( ) const

Return the value of the exported D-Bus object property InitialTransport of type uint.

Adaptees should export this property as a Qt property named 'initialTransport' with type uint.

If set on a requested channel, this indicates the transport that should be used for this call. Where not applicable, this property is defined to be Unknown, in particular, on CMs with hardware streaming.

When implementing a voip gateway one wants the outgoing leg of the gatewayed to have the same transport as the incoming leg. This property allows the gateway to request a Call with the right transport from the CM.
Returns
The value of exported property InitialTransport.
bool Tp::Service::ChannelTypeCallAdaptor::InitialAudio ( ) const

Return the value of the exported D-Bus object property InitialAudio of type bool.

Adaptees should export this property as a Qt property named 'initialAudio' with type bool.

If set to True in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call ChannelTypeCallInterface::AddContent() .

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If True on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If True on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by ChannelTypeCallInterface::Contents ).

The name of this new content can be decided by using the InitialAudioName property.

Connection managers that support the ConnectionInterfaceContactCapabilitiesInterface interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = Call in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling ConnectionInterfaceContactCapabilitiesInterface::UpdateCapabilities() (clients of a ChannelDispatcherInterface SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their ClientHandlerInterface::HandlerChannelFilter properties):

  • { ChannelType = Call }
  • { ChannelType = Call, InitialAudio = True } if receiving calls with audio is supported
  • { ChannelType = Call, InitialVideo = True } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

Returns
The value of exported property InitialAudio.
bool Tp::Service::ChannelTypeCallAdaptor::InitialVideo ( ) const

Return the value of the exported D-Bus object property InitialVideo of type bool.

Adaptees should export this property as a Qt property named 'initialVideo' with type bool.

The same as InitialAudio , but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is False, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

Returns
The value of exported property InitialVideo.
QString Tp::Service::ChannelTypeCallAdaptor::InitialAudioName ( ) const

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

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

If InitialAudio is set to True, then this property will name the intial audio content with the value of this property.

Content names are meant to be significant, but if no name can be given to initial audio content, then its name cannot be meaningful or even localized.

If this property is empty or missing from the channel request and InitialAudio is True, then the CM must come up with a sensible for the content, such as "audio".

If the protocol has no concept of stream names then this property will not show up in the allowed properties list of the Requestable Channel Classes for call channels.

Returns
The value of exported property InitialAudioName.
QString Tp::Service::ChannelTypeCallAdaptor::InitialVideoName ( ) const

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

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

The same as InitialAudioName , but for a video stream created by setting InitialVideo to True. This property is immutable and so cannot change.

Returns
The value of exported property InitialVideoName.
bool Tp::Service::ChannelTypeCallAdaptor::MutableContents ( ) const

Return the value of the exported D-Bus object property MutableContents of type bool.

Adaptees should export this property as a Qt property named 'mutableContents' with type bool.

If True, a stream of a different content type can be added after the Channel has been requested

If this property is missing, clients SHOULD assume that it is False, and thus that the channel's streams cannot be changed once the call has started.

If this property isn't present in the "allowed" set in any of the Call entries contact capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call1" button with the option to add and remove video once the call has started for contacts without this flag.

Returns
The value of exported property MutableContents.
void Tp::Service::ChannelTypeCallAdaptor::SetRinging ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setRinging(const Tp::Service::ChannelTypeCallAdaptor::SetRingingContextPtr &context);

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

Indicate that the local user has been alerted about the incoming call.

This method is only useful if the channel's ChannelInterface::Requested property is False, and the CallState is Initialised (an incoming call is ready and waiting for the user to be notified). Calling this method SHOULD set CallFlags ' bit Locally_Ringing, and notify the remote contact that the local user has been alerted (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.

In all other states, this method SHOULD fail with the error NotAvailable.

void Tp::Service::ChannelTypeCallAdaptor::SetQueued ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setQueued(const Tp::Service::ChannelTypeCallAdaptor::SetQueuedContextPtr &context);

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

Notifies the CM that the local user is already in a call, so this call has been put in a call-waiting style queue.

This method is only useful if the channel's ChannelInterface::Requested property is False, and the CallState is Initialising or Initialised. Calling this method SHOULD set CallFlags ' bit Locally_Queued, and notify the remote contact that the call is in a queue (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.

Locally_Queued is a little like Locally_Held, but applies to calls that have not been Accepted (the Locally_Queued flag should be unset by the CM when Accept is called). It should also be set in response to the state of the world, rather than in response to user action.

void Tp::Service::ChannelTypeCallAdaptor::Accept ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void accept(const Tp::Service::ChannelTypeCallAdaptor::AcceptContextPtr &context);

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

For incoming calls in state Initialised, accept the incoming call. This changes the CallState to Accepted.

For outgoing calls in state Pending_Initiator, actually call the remote contact; this changes the CallState to Initialising.

Otherwise, this method SHOULD fail with the error NotAvailable.

This method should be called exactly once per Call, by whatever client (user interface) is handling the channel.

When this method is called, for each CallContentInterface whose CallContentInterface::Disposition is Initial, any streams where the CallStreamInterface::LocalSendingState is Pending_Send will be moved to Sending as if CallStreamInterface::SetSending() (True) had been called.

void Tp::Service::ChannelTypeCallAdaptor::Hangup ( uint  reason,
const QString &  detailedHangupReason,
const QString &  message,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void hangup(uint reason, const QString& detailedHangupReason, const QString& message, const Tp::Service::ChannelTypeCallAdaptor::HangupContextPtr &context);

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

Request that the call is ended. All contents will be removed from the Call so that the Contents property will be the empty list.

Parameters
reason
A generic hangup reason.
detailedHangupReason
A more specific reason for the call hangup, if one is available, or 
an empty string otherwise.
message
A human-readable message to be sent to the remote contact(s). XMPP 
Jingle allows calls to be terminated with a human-readable message.
QDBusObjectPath Tp::Service::ChannelTypeCallAdaptor::AddContent ( const QString &  contentName,
uint  contentType,
uint  initialDirection,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void addContent(const QString& contentName, uint contentType, uint initialDirection, const Tp::Service::ChannelTypeCallAdaptor::AddContentContextPtr &context);

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

Request that a new Content of type Content_Type is added to the Call1. Handlers should check the value of the MutableContents property before trying to add another content as it might not be allowed.

Parameters
contentName
The suggested name of the content to add. The content name property 
should be meaningful, so should be given a name which is 
significant to the user. The name could be a localized 
&quot;audio&quot;, &quot;video&quot; or perhaps include some string 
identifying the source, such as a webcam identifier. If there is 
already a content with the same name as this property then a 
sensible suffix should be added. For example, if this argument is 
&quot;audio&quot; but a content of the same name already exists, a 
sensible suffix such as &quot; (1)&quot; is appended to name the 
new content &quot;audio (1)&quot;. A further content with the name 
&quot;audio&quot; would then be named &quot;audio (2)&quot;.
contentType
The media stream type of the content to be added to the call.
initialDirection
The requested initial direction of the new content.
Returns
Path to the newly-created Call1.Content object.
void Tp::Service::ChannelTypeCallAdaptor::ContentAdded ( const QDBusObjectPath &  content)
signal

Represents the exported D-Bus signal ContentAdded on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contentAdded(const QDBusObjectPath& content);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
content
Path to the newly-created Content object.
void Tp::Service::ChannelTypeCallAdaptor::ContentRemoved ( const QDBusObjectPath &  content,
const Tp::CallStateReason reason 
)
signal

Represents the exported D-Bus signal ContentRemoved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void contentRemoved(const QDBusObjectPath& content, const Tp::CallStateReason& reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
content
The Content which was removed.
reason
Why the content was removed.
void Tp::Service::ChannelTypeCallAdaptor::CallStateChanged ( uint  callState,
uint  callFlags,
const Tp::CallStateReason callStateReason,
const QVariantMap &  callStateDetails 
)
signal

Represents the exported D-Bus signal CallStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void callStateChanged(uint callState, uint callFlags, const Tp::CallStateReason& callStateReason, const QVariantMap& callStateDetails);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
callState
The new value of the CallState property.
callFlags
The new value of the CallFlags property.
callStateReason
The new value of the CallStateReason property.
callStateDetails
The new value of the CallStateDetails property.
void Tp::Service::ChannelTypeCallAdaptor::CallMembersChanged ( const Tp::CallMemberMap flagsChanged,
const Tp::HandleIdentifierMap identifiers,
const Tp::UIntList removed,
const Tp::CallStateReason reason 
)
signal

Represents the exported D-Bus signal CallMembersChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void callMembersChanged(const Tp::CallMemberMap& flagsChanged, const Tp::HandleIdentifierMap& identifiers, const Tp::UIntList& removed, const Tp::CallStateReason& reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
flagsChanged
A map from members of the call to their new call member flags, 
including at least the members who have been added to CallMembers, 
and the members whose flags have changed.
identifiers The identifiers of the contacts in the Flags_Changed map.
removed
A list of members who have left the call, i.e. keys to be removed 
from CallMembers.
reason
A structured reason for the change.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01262.html0000644000175100017520000002201012530426260021120 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceHoldInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceHoldInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceHoldInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceHoldInterface
ChannelInterfaceHoldInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceHoldInterface
ChannelInterfaceHoldInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceHoldInterface
ChannelInterfaceHoldInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceHoldInterfaceexplicit
ChannelInterfaceHoldInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceHoldInterface
GetHoldState(int timeout=-1)Tp::Client::ChannelInterfaceHoldInterfaceinlineslot
HoldStateChanged(uint holdState, uint reason)Tp::Client::ChannelInterfaceHoldInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceHoldInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceHoldInterfaceinline
RequestHold(bool hold, int timeout=-1)Tp::Client::ChannelInterfaceHoldInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceHoldInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00046.html0000644000175100017520000001521212530426257021133 0ustar00kaffeinekaffeine00000000000000 roster/roster-widget.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/roster-widget.h
#ifndef _TelepathyQt_examples_roster_roster_widget_h_HEADER_GUARD_
#define _TelepathyQt_examples_roster_roster_widget_h_HEADER_GUARD_
#include <QWidget>
#include <TelepathyQt/Contact>
#include <TelepathyQt/Connection>
namespace Tp {
class Connection;
class PendingOperation;
}
class QAction;
class QDialog;
class QLineEdit;
class QListWidget;
class QListWidgetItem;
class QPushButton;
class RosterItem;
class RosterWidget : public QWidget
{
Q_OBJECT
public:
RosterWidget(QWidget *parent = 0);
virtual ~RosterWidget();
Tp::ConnectionPtr connection() const { return mConn; }
void setConnection(const Tp::ConnectionPtr &conn);
void unsetConnection();
QListWidget *listWidget() const { return mList; }
protected:
virtual RosterItem *createItemForContact(
const Tp::ContactPtr &contact,
bool &exists);
virtual void updateActions(RosterItem *item) { }
private Q_SLOTS:
void onContactManagerStateChanged(Tp::ContactListState state);
void onPresencePublicationRequested(const Tp::Contacts &);
void onItemSelectionChanged();
void onAddButtonClicked();
void onAuthActionTriggered(bool);
void onDenyActionTriggered(bool);
void onRemoveActionTriggered(bool);
void onBlockActionTriggered(bool);
void onContactRetrieved(Tp::PendingOperation *op);
void updateActions();
private:
void createActions();
void setupGui();
Tp::ConnectionPtr mConn;
QAction *mAuthAction;
QAction *mRemoveAction;
QAction *mDenyAction;
QAction *mBlockAction;
QListWidget *mList;
QPushButton *mAddBtn;
QDialog *mAddDlg;
QLineEdit *mAddDlgEdt;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01007.html0000644000175100017520000001245312530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactMessenger Member List

This is the complete list of members for Tp::ContactMessenger, including all inherited members.

account() const Tp::ContactMessenger
contactIdentifier() const Tp::ContactMessenger
create(const AccountPtr &account, const ContactPtr &contact)Tp::ContactMessengerstatic
create(const AccountPtr &account, const QString &contactIdentifier)Tp::ContactMessengerstatic
messageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel)Tp::ContactMessengersignal
messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel)Tp::ContactMessengersignal
RefCounted()Tp::RefCountedinline
sendMessage(const QString &text, ChannelTextMessageType type=ChannelTextMessageTypeNormal, MessageSendingFlags flags=0)Tp::ContactMessenger
sendMessage(const MessageContentPartList &parts, MessageSendingFlags flags=0)Tp::ContactMessenger
textChats() const Tp::ContactMessenger
~ContactMessenger()Tp::ContactMessengervirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00688_source.html0000644000175100017520000003430312530426257022531 0ustar00kaffeinekaffeine00000000000000 dbus-service.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus-service.h
1 
23 #ifndef _TelepathyQt_dbus_service_h_HEADER_GUARD_
24 #define _TelepathyQt_dbus_service_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/DBusError>
31 #include <TelepathyQt/Global>
32 #include <TelepathyQt/Object>
33 #include <TelepathyQt/ServiceTypes>
34 
35 #include <QObject>
36 #include <QVariantMap>
37 
38 class QDBusConnection;
39 class QString;
40 
41 namespace Tp
42 {
43 
44 class DBusObject;
45 
46 class TP_QT_EXPORT DBusService : public Object
47 {
48  Q_OBJECT
49  Q_DISABLE_COPY(DBusService)
50 
51 public:
52  DBusService(const QDBusConnection &dbusConnection);
53  virtual ~DBusService();
54 
55  virtual QVariantMap immutableProperties() const = 0;
56 
57  QDBusConnection dbusConnection() const;
58  QString busName() const;
59  QString objectPath() const;
60  DBusObject *dbusObject() const;
61  bool isRegistered() const;
62 
63 protected:
64  virtual bool registerObject(const QString &busName, const QString &objectPath,
65  DBusError *error);
66 
67 private:
68  class Private;
69  friend class Private;
70  Private *mPriv;
71 };
72 
73 class TP_QT_EXPORT AbstractDBusServiceInterface : public Object
74 {
75  Q_OBJECT
76  Q_DISABLE_COPY(AbstractDBusServiceInterface)
77 
78 public:
79  AbstractDBusServiceInterface(const QString &interfaceName);
81 
82  QString interfaceName() const;
83 
84  virtual QVariantMap immutableProperties() const = 0;
85 
86  DBusObject *dbusObject() const;
87  bool isRegistered() const;
88 
89 protected:
90  virtual bool registerInterface(DBusObject *dbusObject);
91  virtual void createAdaptor() = 0;
92 
93 public:
94  bool notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue);
95 
96 private:
97  class Private;
98  friend class Private;
99  Private *mPriv;
100 };
101 
102 }
103 
104 #endif
Base class for D-Bus service interfaces.
Definition: dbus-service.h:73
The Object class provides an object with property notification.
Definition: object.h:39
Base class for D-Bus services.
Definition: dbus-service.h:46
A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object.
Definition: dbus-object.h:39
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00360.html0000644000175100017520000003334512530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1, Arg2, Arg3)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller3 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 >
typedef R Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >::ResultType
template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 >
typedef R(* Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >::InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 >
Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >::FunctorCaller3 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 >
static ResultType Tp::FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >::invoke ( AbstractFunctorCaller call,
Arg1  a1,
Arg2  a2,
Arg3  a3 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01321.html0000644000175100017520000002334112530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::PropertiesInterfaceInterface Member List

This is the complete list of members for Tp::Client::PropertiesInterfaceInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
GetProperties(const Tp::UIntList &properties, int timeout=-1)Tp::Client::PropertiesInterfaceInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::PropertiesInterfaceInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListProperties(int timeout=-1)Tp::Client::PropertiesInterfaceInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
PropertiesChanged(const Tp::PropertyValueList &properties)Tp::Client::PropertiesInterfaceInterfacesignal
PropertiesInterfaceInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::PropertiesInterfaceInterface
PropertiesInterfaceInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::PropertiesInterfaceInterface
PropertiesInterfaceInterface(Tp::DBusProxy *proxy)Tp::Client::PropertiesInterfaceInterface
PropertiesInterfaceInterface(const Tp::AbstractInterface &mainInterface)Tp::Client::PropertiesInterfaceInterfaceexplicit
PropertiesInterfaceInterface(const Tp::AbstractInterface &mainInterface, QObject *parent)Tp::Client::PropertiesInterfaceInterface
PropertyFlagsChanged(const Tp::PropertyFlagsChangeList &properties)Tp::Client::PropertiesInterfaceInterfacesignal
requestAllProperties() const Tp::Client::PropertiesInterfaceInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetProperties(const Tp::PropertyValueList &properties, int timeout=-1)Tp::Client::PropertiesInterfaceInterfaceinlineslot
staticInterfaceName()Tp::Client::PropertiesInterfaceInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00105.html0000644000175100017520000007021212530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelMessagesInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Messages. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback3< QString,
const Tp::MessagePartList
&, uint, DBusError * > 
SendMessageCallback
 

Public Member Functions

virtual ~BaseChannelMessagesInterface ()
 
QVariantMap immutableProperties () const
 
QStringList supportedContentTypes ()
 
Tp::UIntList messageTypes ()
 
uint messagePartSupportFlags ()
 
uint deliveryReportingSupport ()
 
Tp::MessagePartListList pendingMessages ()
 
void messageSent (const Tp::MessagePartList &content, uint flags, const QString &messageToken)
 
void setSendMessageCallback (const SendMessageCallback &cb)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelMessagesInterfacePtr 
create (BaseChannelTextType *textTypeInterface, QStringList supportedContentTypes, UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport)
 
template<typename BaseChannelMessagesInterfaceSubclass >
static SharedPtr
< BaseChannelMessagesInterfaceSubclass > 
create ()
 

Protected Member Functions

QString sendMessage (const Tp::MessagePartList &message, uint flags, DBusError *error)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Messages.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelMessagesInterface::~BaseChannelMessagesInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelMessagesInterfacePtr Tp::BaseChannelMessagesInterface::create ( BaseChannelTextType textTypeInterface,
QStringList  supportedContentTypes,
UIntList  messageTypes,
uint  messagePartSupportFlags,
uint  deliveryReportingSupport 
)
inlinestatic
template<typename BaseChannelMessagesInterfaceSubclass >
static SharedPtr<BaseChannelMessagesInterfaceSubclass> Tp::BaseChannelMessagesInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelMessagesInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

QStringList Tp::BaseChannelMessagesInterface::supportedContentTypes ( )
Tp::UIntList Tp::BaseChannelMessagesInterface::messageTypes ( )
uint Tp::BaseChannelMessagesInterface::messagePartSupportFlags ( )
uint Tp::BaseChannelMessagesInterface::deliveryReportingSupport ( )
Tp::MessagePartListList Tp::BaseChannelMessagesInterface::pendingMessages ( )
void Tp::BaseChannelMessagesInterface::messageSent ( const Tp::MessagePartList content,
uint  flags,
const QString &  messageToken 
)
void Tp::BaseChannelMessagesInterface::setSendMessageCallback ( const SendMessageCallback cb)
QString Tp::BaseChannelMessagesInterface::sendMessage ( const Tp::MessagePartList message,
uint  flags,
DBusError error 
)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01076.html0000644000175100017520000001334512530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingReady Member List

This is the complete list of members for Tp::PendingReady, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
proxy() const Tp::PendingReady
requestedFeatures() const Tp::PendingReady
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual
~PendingReady()Tp::PendingReady


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/tab_a.png0000644000175100017520000000021612530426257021205 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR$ÇÇ[UIDATxíK €0C'o¤(Šˆ[Žà%Üxÿ#Ù©­ç ùÁöó¦W¦e# 3t I 3+¼øEã~\D½9¯Ûàè’wM·¿öÿ}Yõ_êA4Yžã}IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00920.html0000644000175100017520000001107012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AndFilter< T > Member List

This is the complete list of members for Tp::AndFilter< T >, including all inherited members.

create(const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >())Tp::AndFilter< T >inlinestatic
Filter()Tp::Filter< T >inlineprotected
filters() const Tp::AndFilter< T >inline
isValid() const Tp::AndFilter< T >inlinevirtual
matches(const SharedPtr< T > &t) const Tp::AndFilter< T >inlinevirtual
RefCounted()Tp::RefCountedinline
~AndFilter()Tp::AndFilter< T >inlinevirtual
~Filter()Tp::Filter< T >inlinevirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/tab_b.png0000644000175100017520000000025112530426257021205 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR$ÇÇ[pIDATxíÝMƒ EáÇ»ÐÔ¸¸u`âÀ´V0РÆ}:t]DÁ²s¿ä®‚¶ýËu¥ø|’xùî½À>ÿ1»& mÄ8ÜSÙÑxÜLÀUûšÞ²ÄiE–ŠåOs„¢’nxàÒêÓKN²~jIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00684_source.html0000644000175100017520000003006012530426257022521 0ustar00kaffeinekaffeine00000000000000 dbus-proxy-factory.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus-proxy-factory.h
1 
23 #ifndef _TelepathyQt_dbus_proxy_factory_h_HEADER_GUARD_
24 #define _TelepathyQt_dbus_proxy_factory_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/SharedPtr>
32 #include <TelepathyQt/Types>
33 
34 // For Q_DISABLE_COPY
35 #include <QtGlobal>
36 
37 #include <QString>
38 
39 class QDBusConnection;
40 
41 namespace Tp
42 {
43 
44 class Features;
45 class PendingReady;
46 class PendingOperation;
47 
48 class TP_QT_EXPORT DBusProxyFactory : public QObject, public RefCounted
49 {
50  Q_OBJECT
51  Q_DISABLE_COPY(DBusProxyFactory)
52 
53 public:
54  virtual ~DBusProxyFactory();
55 
56  const QDBusConnection &dbusConnection() const;
57 
58 protected:
59  DBusProxyFactory(const QDBusConnection &bus);
60 
61  DBusProxyPtr cachedProxy(const QString &busName, const QString &objectPath) const;
62 
63  PendingReady *nowHaveProxy(const DBusProxyPtr &proxy) const;
64 
65  // I don't want this to be non-pure virtual, because I want ALL subclasses to have to think
66  // about whether or not they need to uniquefy the name or not. If a subclass doesn't implement
67  // this while it should, matching with the cache for future requests and invalidation breaks.
68  virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const = 0;
69 
70  virtual PendingOperation *initialPrepare(const DBusProxyPtr &proxy) const;
71  virtual PendingOperation *readyPrepare(const DBusProxyPtr &proxy) const;
72 
73  virtual Features featuresFor(const DBusProxyPtr &proxy) const = 0;
74 
75 private:
76  class Cache;
77 
78  struct Private;
79  friend struct Private;
80  Private *mPriv;
81 };
82 
83 } // Tp
84 
85 #endif
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching...
Definition: dbus-proxy-factory.h:48
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00174.html0000644000175100017520000001452412530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelClass Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelClass Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< QString, QDBusVariant >.

Public Member Functions

 ChannelClass ()
 
 ChannelClass (const QMap< QString, QDBusVariant > &a)
 
ChannelClassoperator= (const QMap< QString, QDBusVariant > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.

Mapping representing a class of channels that can be requested from a connection manager, can be handled by a user interface, are supported by a contact, etc.

Classes of channel are identified by the fixed values of a subset of their properties.

Channel classes SHOULD always include the keys ChannelInterface::ChannelType and ChannelInterface::TargetHandleType . (One exception is that ChannelTypeContactSearchInterface channels do not have TargetHandleType None in their requestable channel classes, for historical reasons.)

Constructor & Destructor Documentation

Tp::ChannelClass::ChannelClass ( )
inline
Tp::ChannelClass::ChannelClass ( const QMap< QString, QDBusVariant > &  a)
inline

Member Function Documentation

ChannelClass& Tp::ChannelClass::operator= ( const QMap< QString, QDBusVariant > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01135.html0000644000175100017520000000522412530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Candidate Member List

This is the complete list of members for Tp::Candidate, including all inherited members.

componentTp::Candidate
infoTp::Candidate
IPTp::Candidate
portTp::Candidate


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00680_source.html0000644000175100017520000002120212530426257022513 0ustar00kaffeinekaffeine00000000000000 dbus-error.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
dbus-error.h
1 
23 #ifndef _TelepathyQt_dbus_error_h_HEADER_GUARD_
24 #define _TelepathyQt_dbus_error_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 namespace Tp
33 {
34 
35 class TP_QT_EXPORT DBusError
36 {
37  Q_DISABLE_COPY(DBusError)
38 
39 public:
40  DBusError();
41  DBusError(const QString &name, const QString &message);
42  ~DBusError();
43 
44  bool isValid() const { return mPriv != 0; }
45 
46  bool operator==(const DBusError &other) const;
47  bool operator!=(const DBusError &other) const;
48 
49  QString name() const;
50  QString message() const;
51  void set(const QString &name, const QString &message);
52 
53 private:
54  struct Private;
55  friend struct Private;
56  Private *mPriv;
57 };
58 
59 } // Tp
60 
61 #endif
bool operator!=(const AccessControl &v1, const AccessControl &v2)
Definition: build/TelepathyQt/_gen/types.h:144
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35
bool isValid() const
Definition: dbus-error.h:44


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00489.html0000644000175100017520000001376212530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::RefCounted Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The RefCounted class is a base class for shared objects used by SharedPtr. More...

#include <TelepathyQt/RefCounted>

Inherited by Tp::MethodInvocationContext<>, Tp::AbstractClient, Tp::ConnectionLowlevel, Tp::ConnectionManagerLowlevel, Tp::ContactFactory, Tp::ContactMessenger, Tp::DBusProxyFactory, Tp::Filter< T >, Tp::MethodInvocationContext< T1, T2, T3, T4, T5, T6, T7, T8 >, Tp::Object, Tp::Profile, Tp::SimpleCallObserver, Tp::SimpleObserver, Tp::SimpleStreamTubeHandler::InvocationData, Tp::SimpleTextObserver, Tp::StreamTubeClient, and Tp::StreamTubeServer.

Public Member Functions

 RefCounted ()
 
virtual ~RefCounted ()
 

Detailed Description

The RefCounted class is a base class for shared objects used by SharedPtr.

See Shared Pointer Usage

Constructor & Destructor Documentation

Tp::RefCounted::RefCounted ( )
inline
virtual Tp::RefCounted::~RefCounted ( )
inlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00233.html0000644000175100017520000023523312530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeCallInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetRinging (int timeout=-1)
 
QDBusPendingReply SetQueued (int timeout=-1)
 
QDBusPendingReply Accept (int timeout=-1)
 
QDBusPendingReply Hangup (uint reason, const QString &detailedHangupReason, const QString &message, int timeout=-1)
 
QDBusPendingReply
< QDBusObjectPath > 
AddContent (const QString &contentName, uint contentType, uint initialDirection, int timeout=-1)
 

Signals

void ContentAdded (const QDBusObjectPath &content)
 
void ContentRemoved (const QDBusObjectPath &content, const Tp::CallStateReason &reason)
 
void CallStateChanged (uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails)
 
void CallMembersChanged (const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeCallInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeCallInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeCallInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeCallInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeCallInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyContents () const
 
Tp::PendingVariantrequestPropertyCallStateDetails () const
 
Tp::PendingVariantrequestPropertyCallState () const
 
Tp::PendingVariantrequestPropertyCallFlags () const
 
Tp::PendingVariantrequestPropertyCallStateReason () const
 
Tp::PendingVariantrequestPropertyHardwareStreaming () const
 
Tp::PendingVariantrequestPropertyCallMembers () const
 
Tp::PendingVariantrequestPropertyMemberIdentifiers () const
 
Tp::PendingVariantrequestPropertyInitialTransport () const
 
Tp::PendingVariantrequestPropertyInitialAudio () const
 
Tp::PendingVariantrequestPropertyInitialVideo () const
 
Tp::PendingVariantrequestPropertyInitialAudioName () const
 
Tp::PendingVariantrequestPropertyInitialVideoName () const
 
Tp::PendingVariantrequestPropertyMutableContents () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.Call1".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeCallInterface::ChannelTypeCallInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeCallInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeCallInterface::ChannelTypeCallInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeCallInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeCallInterface::ChannelTypeCallInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeCallInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeCallInterface::ChannelTypeCallInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeCallInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeCallInterface::ChannelTypeCallInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeCallInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeCallInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.Call1", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyContents ( ) const
inline

Asynchronous getter for the remote object property Contents of type Tp::ObjectPathList.

The list of CallContentInterface objects that are part of this call. Change notification is via the ContentAdded() and ContentRemoved() signals.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyCallStateDetails ( ) const
inline

Asynchronous getter for the remote object property CallStateDetails of type QVariantMap.

A map used to provide optional extensible details for the CallState , CallFlags and/or CallStateReason .

Well-known keys and their corresponding value types include:

hangup-message - s
An optional human-readable message sent when the call was ended, corresponding to the Message argument to the Hangup() method. This is only applicable when the call state is Ended.
XMPP Jingle can send such messages.
queue-message - s
An optional human-readable message sent when the local contact is being held in a queue. This is only applicable when Locally_Queued is in the call flags.
SIP 182 notifications can have human-readable messages attached.
debug-message - s
A message giving further details of any error indicated by the CallStateReason . This will not normally be localized or suitable for display to users, and is only applicable when the call state is Ended.
balance-required - i
Optionally included when a call cannot be connected because there is InsufficientBalance, indicating what the required balance would be to place this call. The value of this key has the same units and scale as ConnectionInterfaceBalanceInterface::AccountBalance .
forwarded-to - u
Optionally included when the CallStateReason is Forwarded. It indicates the handle to whom the Call was forwarded.
forwarded-to-id - s
The string that would result from inspecting the forwarded-to key (i.e. the contact's identifier in the IM protocol).
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyCallState ( ) const
inline

Asynchronous getter for the remote object property CallState of type uint.

The current high-level state of this call. The CallFlags provide additional information, and the CallStateReason and CallStateDetails explain the reason for the current values for those properties.

Note that when in a conference call, this property is purely to show your state in joining the call. The receiver (or remote contact) in this context is the conference server itself. The property does not change when other call members' states change.

Clients MAY consider unknown values in this property to be an error.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyCallFlags ( ) const
inline

Asynchronous getter for the remote object property CallFlags of type uint.

Flags representing the status of the call as a whole, providing more specific information than the CallState .

Clients are expected to ignore unknown flags in this property, without error.

When an ongoing call is active and not on hold or has any other problems, this property will be 0.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyCallStateReason ( ) const
inline

Asynchronous getter for the remote object property CallStateReason of type Tp::CallStateReason.

The reason for the last change to the CallState and/or CallFlags . The CallStateDetails MAY provide additional information.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyHardwareStreaming ( ) const
inline

Asynchronous getter for the remote object property HardwareStreaming of type bool.

If this property is True, all of the media streaming is done by some mechanism outside the scope of Telepathy.

A connection manager might be intended for a specialized hardware device, which will take care of the audio streaming (e.g. telepathy-ring, which uses GSM hardware which does the actual audio streaming for the call).

If this is False, the handler is responsible for doing the actual media streaming for at least some contents itself. Those contents will have the CallContentInterfaceMediaInterface interface, to communicate the necessary information to a streaming implementation. Connection managers SHOULD operate like this, if possible.

Many connection managers (such as telepathy-gabble) only do the call signalling, and expect the client to do the actual streaming using something like Farsight, to improve latency and allow better UI integration.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyCallMembers ( ) const
inline

Asynchronous getter for the remote object property CallMembers of type Tp::CallMemberMap.

A mapping from the remote contacts that are part of this call to flags describing their status. This mapping never has the local user's handle as a key.

When the call ends, this property should be an empty list, and notified with CallMembersChanged()

If the Call implements ChannelInterfaceGroupInterface and the Group members are channel-specific handles, then this call SHOULD also use channel-specific handles.

Anonymous members are exposed as channel-specific handles with no owner.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyMemberIdentifiers ( ) const
inline

Asynchronous getter for the remote object property MemberIdentifiers of type Tp::HandleIdentifierMap.

The string identifiers for handles mentioned in CallMembers, to give clients the minimal information necessary to create contacts without waiting for round-trips.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyInitialTransport ( ) const
inline

Asynchronous getter for the remote object property InitialTransport of type uint.

If set on a requested channel, this indicates the transport that should be used for this call. Where not applicable, this property is defined to be Unknown, in particular, on CMs with hardware streaming.

When implementing a voip gateway one wants the outgoing leg of the gatewayed to have the same transport as the incoming leg. This property allows the gateway to request a Call with the right transport from the CM.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyInitialAudio ( ) const
inline

Asynchronous getter for the remote object property InitialAudio of type bool.

If set to True in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call ChannelTypeCallInterface::AddContent() .

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If True on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If True on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by ChannelTypeCallInterface::Contents ).

The name of this new content can be decided by using the InitialAudioName property.

Connection managers that support the ConnectionInterfaceContactCapabilitiesInterface interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = Call in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling ConnectionInterfaceContactCapabilitiesInterface::UpdateCapabilities() (clients of a ChannelDispatcherInterface SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their ClientHandlerInterface::HandlerChannelFilter properties):

  • { ChannelType = Call }
  • { ChannelType = Call, InitialAudio = True } if receiving calls with audio is supported
  • { ChannelType = Call, InitialVideo = True } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyInitialVideo ( ) const
inline

Asynchronous getter for the remote object property InitialVideo of type bool.

The same as InitialAudio , but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is False, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyInitialAudioName ( ) const
inline

Asynchronous getter for the remote object property InitialAudioName of type QString.

If InitialAudio is set to True, then this property will name the intial audio content with the value of this property.

Content names are meant to be significant, but if no name can be given to initial audio content, then its name cannot be meaningful or even localized.

If this property is empty or missing from the channel request and InitialAudio is True, then the CM must come up with a sensible for the content, such as "audio".

If the protocol has no concept of stream names then this property will not show up in the allowed properties list of the Requestable Channel Classes for call channels.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyInitialVideoName ( ) const
inline

Asynchronous getter for the remote object property InitialVideoName of type QString.

The same as InitialAudioName , but for a video stream created by setting InitialVideo to True. This property is immutable and so cannot change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeCallInterface::requestPropertyMutableContents ( ) const
inline

Asynchronous getter for the remote object property MutableContents of type bool.

If True, a stream of a different content type can be added after the Channel has been requested

If this property is missing, clients SHOULD assume that it is False, and thus that the channel's streams cannot be changed once the call has started.

If this property isn't present in the "allowed" set in any of the Call entries contact capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call1" button with the option to add and remove video once the call has started for contacts without this flag.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeCallInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelTypeCallInterface::SetRinging ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method SetRinging on the remote object.

Indicate that the local user has been alerted about the incoming call.

This method is only useful if the channel's ChannelInterface::Requested property is False, and the CallState is Initialised (an incoming call is ready and waiting for the user to be notified). Calling this method SHOULD set CallFlags ' bit Locally_Ringing, and notify the remote contact that the local user has been alerted (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.

In all other states, this method SHOULD fail with the error NotAvailable.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeCallInterface::SetQueued ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method SetQueued on the remote object.

Notifies the CM that the local user is already in a call, so this call has been put in a call-waiting style queue.

This method is only useful if the channel's ChannelInterface::Requested property is False, and the CallState is Initialising or Initialised. Calling this method SHOULD set CallFlags ' bit Locally_Queued, and notify the remote contact that the call is in a queue (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.

Locally_Queued is a little like Locally_Held, but applies to calls that have not been Accepted (the Locally_Queued flag should be unset by the CM when Accept is called). It should also be set in response to the state of the world, rather than in response to user action.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeCallInterface::Accept ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Accept on the remote object.

For incoming calls in state Initialised, accept the incoming call. This changes the CallState to Accepted.

For outgoing calls in state Pending_Initiator, actually call the remote contact; this changes the CallState to Initialising.

Otherwise, this method SHOULD fail with the error NotAvailable.

This method should be called exactly once per Call, by whatever client (user interface) is handling the channel.

When this method is called, for each CallContentInterface whose CallContentInterface::Disposition is Initial, any streams where the CallStreamInterface::LocalSendingState is Pending_Send will be moved to Sending as if CallStreamInterface::SetSending() (True) had been called.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeCallInterface::Hangup ( uint  reason,
const QString &  detailedHangupReason,
const QString &  message,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Hangup on the remote object.

Request that the call is ended. All contents will be removed from the Call so that the Contents property will be the empty list.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
reason
A generic hangup reason.
detailedHangupReason
A more specific reason for the call hangup, if one is available, or 
an empty string otherwise.
message
A human-readable message to be sent to the remote contact(s). XMPP 
Jingle allows calls to be terminated with a human-readable message.
timeoutThe timeout in milliseconds.
QDBusPendingReply<QDBusObjectPath> Tp::Client::ChannelTypeCallInterface::AddContent ( const QString &  contentName,
uint  contentType,
uint  initialDirection,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddContent on the remote object.

Request that a new Content of type Content_Type is added to the Call1. Handlers should check the value of the MutableContents property before trying to add another content as it might not be allowed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contentName
The suggested name of the content to add. The content name property 
should be meaningful, so should be given a name which is 
significant to the user. The name could be a localized 
&quot;audio&quot;, &quot;video&quot; or perhaps include some string 
identifying the source, such as a webcam identifier. If there is 
already a content with the same name as this property then a 
sensible suffix should be added. For example, if this argument is 
&quot;audio&quot; but a content of the same name already exists, a 
sensible suffix such as &quot; (1)&quot; is appended to name the 
new content &quot;audio (1)&quot;. A further content with the name 
&quot;audio&quot; would then be named &quot;audio (2)&quot;.
contentType
The media stream type of the content to be added to the call.
initialDirection
The requested initial direction of the new content.
timeoutThe timeout in milliseconds.
Returns
Path to the newly-created Call1.Content object.
void Tp::Client::ChannelTypeCallInterface::ContentAdded ( const QDBusObjectPath &  content)
signal

Represents the signal ContentAdded on the remote object.

Emitted when a new CallContentInterface is added to the call.

Parameters
content
Path to the newly-created Content object.
void Tp::Client::ChannelTypeCallInterface::ContentRemoved ( const QDBusObjectPath &  content,
const Tp::CallStateReason reason 
)
signal

Represents the signal ContentRemoved on the remote object.

Emitted when a CallContentInterface is removed from the call.

Parameters
content
The Content which was removed.
reason
Why the content was removed.
void Tp::Client::ChannelTypeCallInterface::CallStateChanged ( uint  callState,
uint  callFlags,
const Tp::CallStateReason callStateReason,
const QVariantMap &  callStateDetails 
)
signal

Represents the signal CallStateChanged on the remote object.

Emitted when the state of the call as a whole changes.

This signal is emitted for any change in the properties corresponding to its arguments, even if the other properties referenced remain unchanged.

Parameters
callState
The new value of the CallState property.
callFlags
The new value of the CallFlags property.
callStateReason
The new value of the CallStateReason property.
callStateDetails
The new value of the CallStateDetails property.
void Tp::Client::ChannelTypeCallInterface::CallMembersChanged ( const Tp::CallMemberMap flagsChanged,
const Tp::HandleIdentifierMap identifiers,
const Tp::UIntList removed,
const Tp::CallStateReason reason 
)
signal

Represents the signal CallMembersChanged on the remote object.

Emitted when the CallMembers property changes in any way, either because contacts have been added to the call, contacts have been removed from the call, or contacts' flags have changed.

Parameters
flagsChanged
A map from members of the call to their new call member flags, 
including at least the members who have been added to CallMembers, 
and the members whose flags have changed.
identifiers The identifiers of the contacts in the Flags_Changed map.
removed
A list of members who have left the call, i.e. keys to be removed 
from CallMembers.
reason
A structured reason for the change.
void Tp::Client::ChannelTypeCallInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/tab_h.png0000644000175100017520000000026112530426257021214 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR$ÇÇ[xIDATxíÝMÁ@†áž~¥ÜÆÎ’Evˆ¿"!•²‘d*×rGq=Š{¼ßSݧçë­ÓÉHÇ uO^õø[À_‡¢ãXvyËþÒ±=·VCffææ{°öŠó´Rçœ%_õçÿŽ¢ö·°Çrug¶(?gh\i>|sIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01263.html0000644000175100017520000002165012530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceMediaSignallingInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceMediaSignallingInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceMediaSignallingInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceMediaSignallingInterface
ChannelInterfaceMediaSignallingInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceMediaSignallingInterface
ChannelInterfaceMediaSignallingInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceMediaSignallingInterface
ChannelInterfaceMediaSignallingInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceMediaSignallingInterfaceexplicit
ChannelInterfaceMediaSignallingInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceMediaSignallingInterface
GetSessionHandlers(int timeout=-1)Tp::Client::ChannelInterfaceMediaSignallingInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceMediaSignallingInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NewSessionHandler(const QDBusObjectPath &sessionHandler, const QString &sessionType)Tp::Client::ChannelInterfaceMediaSignallingInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceMediaSignallingInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceMediaSignallingInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01008.html0000644000175100017520000010014412530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSearchChannel Member List

This is the complete list of members for Tp::ContactSearchChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
availableSearchKeys() const Tp::ContactSearchChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
ContactSearchChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::ContactSearchChannelprotected
continueSearch()Tp::ContactSearchChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::ContactSearchChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::ContactSearchChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
limit() const Tp::ContactSearchChannel
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
search(const QString &searchKey, const QString &searchTerm)Tp::ContactSearchChannel
search(const ContactSearchMap &searchTerms)Tp::ContactSearchChannel
SearchResult typedefTp::ContactSearchChannel
searchResultReceived(const Tp::ContactSearchChannel::SearchResult &result)Tp::ContactSearchChannelsignal
searchState() const Tp::ContactSearchChannel
searchStateChanged(Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details)Tp::ContactSearchChannelsignal
server() const Tp::ContactSearchChannel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
stopSearch()Tp::ContactSearchChannel
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~ContactSearchChannel()Tp::ContactSearchChannelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x63.html0000644000175100017520000000720412530426260024140 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00361.html0000644000175100017520000003403312530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller4 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
typedef R Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >::ResultType
template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
typedef R(* Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >::InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >::FunctorCaller4 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 >
static ResultType Tp::FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >::invoke ( AbstractFunctorCaller call,
Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01322.html0000644000175100017520000002531312530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::AuthenticationTLSCertificateInterface Member List

This is the complete list of members for Tp::Client::AuthenticationTLSCertificateInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Accept(int timeout=-1)Tp::Client::AuthenticationTLSCertificateInterfaceinlineslot
Accepted()Tp::Client::AuthenticationTLSCertificateInterfacesignal
AuthenticationTLSCertificateInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AuthenticationTLSCertificateInterface
AuthenticationTLSCertificateInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::AuthenticationTLSCertificateInterface
AuthenticationTLSCertificateInterface(Tp::DBusProxy *proxy)Tp::Client::AuthenticationTLSCertificateInterface
AuthenticationTLSCertificateInterface(const Tp::AbstractInterface &mainInterface)Tp::Client::AuthenticationTLSCertificateInterfaceexplicit
AuthenticationTLSCertificateInterface(const Tp::AbstractInterface &mainInterface, QObject *parent)Tp::Client::AuthenticationTLSCertificateInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::AuthenticationTLSCertificateInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
Reject(const Tp::TLSCertificateRejectionList &rejections, int timeout=-1)Tp::Client::AuthenticationTLSCertificateInterfaceinlineslot
Rejected(const Tp::TLSCertificateRejectionList &rejections)Tp::Client::AuthenticationTLSCertificateInterfacesignal
requestAllProperties() const Tp::Client::AuthenticationTLSCertificateInterfaceinline
requestPropertyCertificateChainData() const Tp::Client::AuthenticationTLSCertificateInterfaceinline
requestPropertyCertificateType() const Tp::Client::AuthenticationTLSCertificateInterfaceinline
requestPropertyRejections() const Tp::Client::AuthenticationTLSCertificateInterfaceinline
requestPropertyState() const Tp::Client::AuthenticationTLSCertificateInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::AuthenticationTLSCertificateInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00106.html0000644000175100017520000013157612530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelRoomConfigInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.RoomConfig1. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2< void, const
QVariantMap &, DBusError * > 
UpdateConfigurationCallback
 

Public Member Functions

virtual ~BaseChannelRoomConfigInterface ()
 
QVariantMap immutableProperties () const
 
bool anonymous () const
 
void setAnonymous (bool anonymous)
 
bool inviteOnly () const
 
void setInviteOnly (bool inviteOnly)
 
uint limit () const
 
void setLimit (uint limit)
 
bool moderated () const
 
void setModerated (bool moderated)
 
QString title () const
 
void setTitle (const QString &title)
 
QString description () const
 
void setDescription (const QString &description)
 
bool persistent () const
 
void setPersistent (bool persistent)
 
bool isPrivate () const
 
void setPrivate (bool newPrivate)
 
bool passwordProtected () const
 
void setPasswordProtected (bool passwordProtected)
 
QString password () const
 
void setPassword (const QString &password)
 
QString passwordHint () const
 
void setPasswordHint (const QString &passwordHint)
 
bool canUpdateConfiguration () const
 
void setCanUpdateConfiguration (bool canUpdateConfiguration)
 
QStringList mutableProperties () const
 
void setMutableProperties (const QStringList &mutableProperties)
 
bool configurationRetrieved () const
 
void setConfigurationRetrieved (bool configurationRetrieved)
 
void setUpdateConfigurationCallback (const UpdateConfigurationCallback &cb)
 
void updateConfiguration (const QVariantMap &properties, DBusError *error)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelRoomConfigInterfacePtr 
create ()
 
template<typename BaseChannelRoomConfigInterfaceSubclass >
static SharedPtr
< BaseChannelRoomConfigInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseChannelRoomConfigInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.RoomConfig1.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelRoomConfigInterface::~BaseChannelRoomConfigInterface ( )
virtual

Class destructor.

Tp::BaseChannelRoomConfigInterface::BaseChannelRoomConfigInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseChannelRoomConfigInterfacePtr Tp::BaseChannelRoomConfigInterface::create ( )
inlinestatic
template<typename BaseChannelRoomConfigInterfaceSubclass >
static SharedPtr<BaseChannelRoomConfigInterfaceSubclass> Tp::BaseChannelRoomConfigInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelRoomConfigInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

bool Tp::BaseChannelRoomConfigInterface::anonymous ( ) const
void Tp::BaseChannelRoomConfigInterface::setAnonymous ( bool  anonymous)
bool Tp::BaseChannelRoomConfigInterface::inviteOnly ( ) const
void Tp::BaseChannelRoomConfigInterface::setInviteOnly ( bool  inviteOnly)
uint Tp::BaseChannelRoomConfigInterface::limit ( ) const
void Tp::BaseChannelRoomConfigInterface::setLimit ( uint  limit)
bool Tp::BaseChannelRoomConfigInterface::moderated ( ) const
void Tp::BaseChannelRoomConfigInterface::setModerated ( bool  moderated)
QString Tp::BaseChannelRoomConfigInterface::title ( ) const
void Tp::BaseChannelRoomConfigInterface::setTitle ( const QString &  title)
QString Tp::BaseChannelRoomConfigInterface::description ( ) const
void Tp::BaseChannelRoomConfigInterface::setDescription ( const QString &  description)
bool Tp::BaseChannelRoomConfigInterface::persistent ( ) const
void Tp::BaseChannelRoomConfigInterface::setPersistent ( bool  persistent)
bool Tp::BaseChannelRoomConfigInterface::isPrivate ( ) const
void Tp::BaseChannelRoomConfigInterface::setPrivate ( bool  newPrivate)
bool Tp::BaseChannelRoomConfigInterface::passwordProtected ( ) const
void Tp::BaseChannelRoomConfigInterface::setPasswordProtected ( bool  passwordProtected)
QString Tp::BaseChannelRoomConfigInterface::password ( ) const
void Tp::BaseChannelRoomConfigInterface::setPassword ( const QString &  password)
QString Tp::BaseChannelRoomConfigInterface::passwordHint ( ) const
void Tp::BaseChannelRoomConfigInterface::setPasswordHint ( const QString &  passwordHint)
bool Tp::BaseChannelRoomConfigInterface::canUpdateConfiguration ( ) const
void Tp::BaseChannelRoomConfigInterface::setCanUpdateConfiguration ( bool  canUpdateConfiguration)
QStringList Tp::BaseChannelRoomConfigInterface::mutableProperties ( ) const
void Tp::BaseChannelRoomConfigInterface::setMutableProperties ( const QStringList &  mutableProperties)
bool Tp::BaseChannelRoomConfigInterface::configurationRetrieved ( ) const
void Tp::BaseChannelRoomConfigInterface::setConfigurationRetrieved ( bool  configurationRetrieved)
void Tp::BaseChannelRoomConfigInterface::setUpdateConfigurationCallback ( const UpdateConfigurationCallback cb)
void Tp::BaseChannelRoomConfigInterface::updateConfiguration ( const QVariantMap &  properties,
DBusError error 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01077.html0000644000175100017520000001434512530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingSendMessage Member List

This is the complete list of members for Tp::PendingSendMessage, including all inherited members.

channel() const Tp::PendingSendMessage
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
message() const Tp::PendingSendMessage
messenger() const Tp::PendingSendMessage
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
sentMessageToken() const Tp::PendingSendMessage
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual
~PendingSendMessage()Tp::PendingSendMessage


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00921.html0000644000175100017520000000545412530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AvatarData Member List

This is the complete list of members for Tp::AvatarData, including all inherited members.

AvatarData(const QString &fileName, const QString &mimeType)Tp::AvatarDatainline
AvatarData()Tp::AvatarDatainline
fileNameTp::AvatarData
mimeTypeTp::AvatarData


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00420.html0000644000175100017520000003177212530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::OrFilter< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The OrFilter class provides a generic filter object to be used in conjunction of other filters. More...

#include <TelepathyQt/OrFilter>

Inherits Tp::Filter< T >.

Public Member Functions

virtual ~OrFilter ()
 
virtual bool isValid () const
 
virtual bool matches (const SharedPtr< T > &t) const
 
QList< SharedPtr< const Filter
< T > > > 
filters () const
 
- Public Member Functions inherited from Tp::Filter< T >
virtual ~Filter ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SharedPtr< OrFilter< T > > create (const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >())
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Filter< T >
 Filter ()
 

Detailed Description

template<class T>
class Tp::OrFilter< T >

The OrFilter class provides a generic filter object to be used in conjunction of other filters.

The OrFilter will match if any of its given list of filters matches their criteria.

Constructor & Destructor Documentation

template<class T >
virtual Tp::OrFilter< T >::~OrFilter ( )
inlinevirtual

Member Function Documentation

template<class T >
static SharedPtr<OrFilter<T> > Tp::OrFilter< T >::create ( const QList< SharedPtr< const Filter< T > > > &  filters = QList<SharedPtr<const Filter<T> > >())
inlinestatic
template<class T >
virtual bool Tp::OrFilter< T >::isValid ( ) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
virtual bool Tp::OrFilter< T >::matches ( const SharedPtr< T > &  t) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
QList<SharedPtr<const Filter<T> > > Tp::OrFilter< T >::filters ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00175.html0000644000175100017520000023221012530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelClassSpec Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ChannelClassSpec class represents a Telepathy channel class. More...

#include <TelepathyQt/ChannelClassSpec>

Public Member Functions

 ChannelClassSpec ()
 
 ChannelClassSpec (const ChannelClass &cc)
 
 ChannelClassSpec (const QVariantMap &props)
 
 ChannelClassSpec (const QString &channelType, HandleType targetHandleType, const QVariantMap &otherProperties=QVariantMap())
 
 ChannelClassSpec (const QString &channelType, HandleType targetHandleType, bool requested, const QVariantMap &otherProperties=QVariantMap())
 
 ChannelClassSpec (const ChannelClassSpec &other, const QVariantMap &additionalProperties=QVariantMap())
 
 ~ChannelClassSpec ()
 
bool isValid () const
 
ChannelClassSpecoperator= (const ChannelClassSpec &other)
 
bool operator== (const ChannelClassSpec &other) const
 
bool isSubsetOf (const ChannelClassSpec &other) const
 
bool matches (const QVariantMap &immutableProperties) const
 
QString channelType () const
 
void setChannelType (const QString &type)
 
HandleType targetHandleType () const
 
void setTargetHandleType (HandleType type)
 
bool hasRequested () const
 
bool isRequested () const
 
void setRequested (bool requested)
 
void unsetRequested ()
 
bool hasCallInitialAudioFlag () const
 
void setCallInitialAudioFlag ()
 
void unsetCallInitialAudioFlag ()
 
bool hasCallInitialVideoFlag () const
 
void setCallInitialVideoFlag ()
 
void unsetCallInitialVideoFlag ()
 
bool hasStreamedMediaInitialAudioFlag () const
 
void setStreamedMediaInitialAudioFlag ()
 
void unsetStreamedMediaInitialAudioFlag ()
 
bool hasStreamedMediaInitialVideoFlag () const
 
void setStreamedMediaInitialVideoFlag ()
 
void unsetStreamedMediaInitialVideoFlag ()
 
bool hasProperty (const QString &qualifiedName) const
 
QVariant property (const QString &qualifiedName) const
 
void setProperty (const QString &qualifiedName, const QVariant &value)
 
void unsetProperty (const QString &qualifiedName)
 
QVariantMap allProperties () const
 
ChannelClass bareClass () const
 

Static Public Member Functions

static ChannelClassSpec textChat (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec textChatroom (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec unnamedTextChat (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec mediaCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec audioCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec videoCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec videoCallWithAudio (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec streamedMediaCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec streamedMediaAudioCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec streamedMediaVideoCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec streamedMediaVideoCallWithAudio (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec unnamedStreamedMediaCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec unnamedStreamedMediaAudioCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec unnamedStreamedMediaVideoCall (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec unnamedStreamedMediaVideoCallWithAudio (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec serverAuthentication (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec roomList (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec outgoingFileTransfer (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec incomingFileTransfer (const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec outgoingStreamTube (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec incomingStreamTube (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec outgoingRoomStreamTube (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec incomingRoomStreamTube (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec outgoingDBusTube (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec incomingDBusTube (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec outgoingRoomDBusTube (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec incomingRoomDBusTube (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap())
 
static ChannelClassSpec contactSearch (const QVariantMap &additionalProperties=QVariantMap())
 

Detailed Description

The ChannelClassSpec class represents a Telepathy channel class.

Constructor & Destructor Documentation

Tp::ChannelClassSpec::ChannelClassSpec ( )
Tp::ChannelClassSpec::ChannelClassSpec ( const ChannelClass cc)
Tp::ChannelClassSpec::ChannelClassSpec ( const QVariantMap &  props)
Tp::ChannelClassSpec::ChannelClassSpec ( const QString &  channelType,
HandleType  targetHandleType,
const QVariantMap &  otherProperties = QVariantMap() 
)
Tp::ChannelClassSpec::ChannelClassSpec ( const QString &  channelType,
HandleType  targetHandleType,
bool  requested,
const QVariantMap &  otherProperties = QVariantMap() 
)
Tp::ChannelClassSpec::ChannelClassSpec ( const ChannelClassSpec other,
const QVariantMap &  additionalProperties = QVariantMap() 
)
Tp::ChannelClassSpec::~ChannelClassSpec ( )

Member Function Documentation

bool Tp::ChannelClassSpec::isValid ( ) const
ChannelClassSpec & Tp::ChannelClassSpec::operator= ( const ChannelClassSpec other)
bool Tp::ChannelClassSpec::operator== ( const ChannelClassSpec other) const
inline
bool Tp::ChannelClassSpec::isSubsetOf ( const ChannelClassSpec other) const
bool Tp::ChannelClassSpec::matches ( const QVariantMap &  immutableProperties) const
QString Tp::ChannelClassSpec::channelType ( ) const
inline
void Tp::ChannelClassSpec::setChannelType ( const QString &  type)
inline
HandleType Tp::ChannelClassSpec::targetHandleType ( ) const
inline
void Tp::ChannelClassSpec::setTargetHandleType ( HandleType  type)
inline
bool Tp::ChannelClassSpec::hasRequested ( ) const
inline
bool Tp::ChannelClassSpec::isRequested ( ) const
inline
void Tp::ChannelClassSpec::setRequested ( bool  requested)
inline
void Tp::ChannelClassSpec::unsetRequested ( )
inline
bool Tp::ChannelClassSpec::hasCallInitialAudioFlag ( ) const
inline
void Tp::ChannelClassSpec::setCallInitialAudioFlag ( )
inline
void Tp::ChannelClassSpec::unsetCallInitialAudioFlag ( )
inline
bool Tp::ChannelClassSpec::hasCallInitialVideoFlag ( ) const
inline
void Tp::ChannelClassSpec::setCallInitialVideoFlag ( )
inline
void Tp::ChannelClassSpec::unsetCallInitialVideoFlag ( )
inline
bool Tp::ChannelClassSpec::hasStreamedMediaInitialAudioFlag ( ) const
inline
void Tp::ChannelClassSpec::setStreamedMediaInitialAudioFlag ( )
inline
void Tp::ChannelClassSpec::unsetStreamedMediaInitialAudioFlag ( )
inline
bool Tp::ChannelClassSpec::hasStreamedMediaInitialVideoFlag ( ) const
inline
void Tp::ChannelClassSpec::setStreamedMediaInitialVideoFlag ( )
inline
void Tp::ChannelClassSpec::unsetStreamedMediaInitialVideoFlag ( )
inline
bool Tp::ChannelClassSpec::hasProperty ( const QString &  qualifiedName) const
QVariant Tp::ChannelClassSpec::property ( const QString &  qualifiedName) const
void Tp::ChannelClassSpec::setProperty ( const QString &  qualifiedName,
const QVariant &  value 
)
void Tp::ChannelClassSpec::unsetProperty ( const QString &  qualifiedName)
QVariantMap Tp::ChannelClassSpec::allProperties ( ) const
ChannelClass Tp::ChannelClassSpec::bareClass ( ) const
ChannelClassSpec Tp::ChannelClassSpec::textChat ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::textChatroom ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::unnamedTextChat ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::mediaCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::audioCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::videoCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::videoCallWithAudio ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::streamedMediaCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::streamedMediaAudioCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::streamedMediaVideoCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::streamedMediaVideoCallWithAudio ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::unnamedStreamedMediaCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::unnamedStreamedMediaAudioCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::unnamedStreamedMediaVideoCall ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio ( const QVariantMap &  additionalProperties = QVariantMap())
static
Tp::ChannelClassSpec Tp::ChannelClassSpec::serverAuthentication ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::roomList ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::outgoingFileTransfer ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::incomingFileTransfer ( const QVariantMap &  additionalProperties = QVariantMap())
static
ChannelClassSpec Tp::ChannelClassSpec::outgoingStreamTube ( const QString &  service = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::incomingStreamTube ( const QString &  service = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::outgoingRoomStreamTube ( const QString &  service = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::incomingRoomStreamTube ( const QString &  service = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::outgoingDBusTube ( const QString &  serviceName = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::incomingDBusTube ( const QString &  serviceName = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::outgoingRoomDBusTube ( const QString &  serviceName = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::incomingRoomDBusTube ( const QString &  serviceName = QString(),
const QVariantMap &  additionalProperties = QVariantMap() 
)
static
ChannelClassSpec Tp::ChannelClassSpec::contactSearch ( const QVariantMap &  additionalProperties = QVariantMap())
static


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01136.html0000644000175100017520000000527612530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CandidateInfo Member List

This is the complete list of members for Tp::CandidateInfo, including all inherited members.

CandidateInfo()Tp::CandidateInfoinline
CandidateInfo(const QMap< QString, QDBusVariant > &a)Tp::CandidateInfoinline
operator=(const QMap< QString, QDBusVariant > &a)Tp::CandidateInfoinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00990.html0000644000175100017520000004324512530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelDispatchOperation Member List

This is the complete list of members for Tp::ChannelDispatchOperation, including all inherited members.

account() const Tp::ChannelDispatchOperation
actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::ChannelDispatchOperationprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< ChannelDispatchOperation >
ChannelDispatchOperation(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList< ChannelPtr > &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::ChannelDispatchOperationprotected
channelLost(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage)Tp::ChannelDispatchOperationsignal
channels() const Tp::ChannelDispatchOperation
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< ChannelDispatchOperation >
claim()Tp::ChannelDispatchOperation
claim(const AbstractClientHandlerPtr &handler)Tp::ChannelDispatchOperation
connection() const Tp::ChannelDispatchOperation
create(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList< ChannelPtr > &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::ChannelDispatchOperationstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureCoreTp::ChannelDispatchOperationstatic
handleWith(const QString &handler)Tp::ChannelDispatchOperation
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< ChannelDispatchOperation >inline
interface() constTp::OptionalInterfaceFactory< ChannelDispatchOperation >inline
interfaces() constTp::OptionalInterfaceFactory< ChannelDispatchOperation >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< ChannelDispatchOperation >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< ChannelDispatchOperation >inline
OptionalInterfaceFactory(ChannelDispatchOperation *this_)Tp::OptionalInterfaceFactory< ChannelDispatchOperation >inline
possibleHandlers() const Tp::ChannelDispatchOperation
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< ChannelDispatchOperation >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~ChannelDispatchOperation()Tp::ChannelDispatchOperationvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< ChannelDispatchOperation >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00234.html0000644000175100017520000005607212530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeContactListInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelTypeContactListInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeContactListInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeContactListInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeContactListInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeContactListInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.ContactList".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeContactListInterface::ChannelTypeContactListInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeContactListInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeContactListInterface::ChannelTypeContactListInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeContactListInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeContactListInterface::ChannelTypeContactListInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeContactListInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeContactListInterface::ChannelTypeContactListInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeContactListInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeContactListInterface::ChannelTypeContactListInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeContactListInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeContactListInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.ContactList", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelTypeContactListInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelTypeContactListInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/tab_s.png0000644000175100017520000000027012530426257021227 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR$ÇÇ[IDATxíÝ ‚@@Ñ£?Q…¤"š¢%¦I‘—Šf–6[´HÃäQƒ<Þâõþ]ždr Í’s?ˆO=Ñññw'ÌF‡Ž íðö-~rÃ[œèŠ­ì¬mƒÖ¬ƒݯнŠÕF)Yº% §`nÌ,9B ™’©!ÑŒ\ý<Å#üîî•IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01264.html0000644000175100017520000002665612530426260021146 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceMessagesInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceMessagesInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceMessagesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceMessagesInterface
ChannelInterfaceMessagesInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceMessagesInterface
ChannelInterfaceMessagesInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceMessagesInterface
ChannelInterfaceMessagesInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceMessagesInterfaceexplicit
ChannelInterfaceMessagesInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceMessagesInterface
GetPendingMessageContent(uint messageID, const Tp::UIntList &parts, int timeout=-1)Tp::Client::ChannelInterfaceMessagesInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceMessagesInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
MessageReceived(const Tp::MessagePartList &message)Tp::Client::ChannelInterfaceMessagesInterfacesignal
MessageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken)Tp::Client::ChannelInterfaceMessagesInterfacesignal
PendingMessagesRemoved(const Tp::UIntList &messageIDs)Tp::Client::ChannelInterfaceMessagesInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceMessagesInterfaceinline
requestPropertyDeliveryReportingSupport() const Tp::Client::ChannelInterfaceMessagesInterfaceinline
requestPropertyMessagePartSupportFlags() const Tp::Client::ChannelInterfaceMessagesInterfaceinline
requestPropertyMessageTypes() const Tp::Client::ChannelInterfaceMessagesInterfaceinline
requestPropertyPendingMessages() const Tp::Client::ChannelInterfaceMessagesInterfaceinline
requestPropertySupportedContentTypes() const Tp::Client::ChannelInterfaceMessagesInterfaceinline
SendMessage(const Tp::MessagePartList &message, uint flags, int timeout=-1)Tp::Client::ChannelInterfaceMessagesInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceMessagesInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00659_source.html0000644000175100017520000002126612530426257022533 0ustar00kaffeinekaffeine00000000000000 connection-manager-lowlevel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
connection-manager-lowlevel.h
1 
23 #ifndef _TelepathyQt_connection_manager_lowlevel_h_HEADER_GUARD_
24 #define _TelepathyQt_connection_manager_lowlevel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class PendingConnection;
37 
38 class TP_QT_EXPORT ConnectionManagerLowlevel : public QObject, public RefCounted
39 {
40  Q_OBJECT
41  Q_DISABLE_COPY(ConnectionManagerLowlevel)
42 
43 public:
45 
46  bool isValid() const;
47  ConnectionManagerPtr connectionManager() const;
48 
49  PendingConnection *requestConnection(const QString &protocolName,
50  const QVariantMap &parameters);
51 
52 private:
53  friend class ConnectionManager;
54 
55  TP_QT_NO_EXPORT ConnectionManagerLowlevel(ConnectionManager *parent);
56 
57  struct Private;
58  friend struct Private;
59  Private *mPriv;
60 };
61 
62 } // Tp
63 
64 #endif
The PendingConnection class represents the parameters of and the reply to an asynchronous connection ...
Definition: pending-connection.h:43
The ConnectionManager class represents a Telepathy connection manager.
Definition: connection-manager.h:52
The ConnectionManagerLowlevel class extends ConnectionManager with support to low-level features...
Definition: connection-manager-lowlevel.h:38
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00048.html0000644000175100017520000002017512530426257021141 0ustar00kaffeinekaffeine00000000000000 roster/roster-window.cpp
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/roster-window.cpp
#include "roster-window.h"
#include "_gen/roster-window.moc.hpp"
#include "roster-widget.h"
#include <TelepathyQt/Types>
#include <TelepathyQt/ChannelFactory>
#include <TelepathyQt/Connection>
#include <TelepathyQt/ConnectionFactory>
#include <TelepathyQt/ContactFactory>
#include <TelepathyQt/PendingOperation>
#include <TelepathyQt/PendingReady>
#include <QDebug>
using namespace Tp;
RosterWindow::RosterWindow(const QString &accountName, QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(QLatin1String("Roster"));
setupGui();
ChannelFactoryPtr channelFactory = ChannelFactory::create(
QDBusConnection::sessionBus());
ConnectionFactoryPtr connectionFactory = ConnectionFactory::create(
QDBusConnection::sessionBus(), Connection::FeatureConnected |
ContactFactoryPtr contactFactory = ContactFactory::create(
TP_QT_ACCOUNT_OBJECT_PATH_BASE + QLatin1Char('/') + accountName,
connectionFactory, channelFactory, contactFactory);
connect(mAccount->becomeReady(Account::FeatureCore),
SIGNAL(finished(Tp::PendingOperation *)),
SLOT(onAccountReady(Tp::PendingOperation *)));
resize(240, 320);
}
RosterWindow::~RosterWindow()
{
}
void RosterWindow::setupGui()
{
mRoster = new RosterWidget();
setCentralWidget(mRoster);
}
void RosterWindow::onAccountReady(Tp::PendingOperation *op)
{
if (op->isError()) {
qWarning() << "Account cannot become ready - " <<
op->errorName() << '-' << op->errorMessage();
QCoreApplication::exit(1);
return;
}
qDebug() << "Account ready";
connect(mAccount.data(),
SIGNAL(connectionChanged(Tp::ConnectionPtr)),
SLOT(onAccountConnectionChanged(Tp::ConnectionPtr)));
if (mAccount->connection().isNull()) {
qDebug() << "The account given has no Connection. Please set it online to continue.";
}
onAccountConnectionChanged(mAccount->connection());
}
void RosterWindow::onAccountConnectionChanged(const ConnectionPtr &conn)
{
if (conn) {
mRoster->setConnection(conn);
} else {
mRoster->unsetConnection();
}
}


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01009.html0000644000175100017520000001037012530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactSearchChannel::SearchStateChangeDetails Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x64.html0000644000175100017520000000441612530426260024143 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00362.html0000644000175100017520000003452112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller5 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
typedef R Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >::ResultType
template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
typedef R(* Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >::InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >::FunctorCaller5 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 >
static ResultType Tp::FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >::invoke ( AbstractFunctorCaller call,
Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00655_source.html0000644000175100017520000002746012530426257022531 0ustar00kaffeinekaffeine00000000000000 connection-capabilities.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
connection-capabilities.h
1 
23 #ifndef _TelepathyQt_connection_capabilities_h_HEADER_GUARD_
24 #define _TelepathyQt_connection_capabilities_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/CapabilitiesBase>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class TestBackdoors;
37 
38 class TP_QT_EXPORT ConnectionCapabilities : public CapabilitiesBase
39 {
40 public:
42  virtual ~ConnectionCapabilities();
43 
44  bool textChatrooms() const;
45 
46  TP_QT_DEPRECATED bool conferenceStreamedMediaCalls() const;
47  TP_QT_DEPRECATED bool conferenceStreamedMediaCallsWithInvitees() const;
48  bool conferenceTextChats() const;
49  bool conferenceTextChatsWithInvitees() const;
50  bool conferenceTextChatrooms() const;
51  bool conferenceTextChatroomsWithInvitees() const;
52 
53  bool contactSearches() const;
54  bool contactSearchesWithSpecificServer() const;
55  bool contactSearchesWithLimit() const;
56 
57  bool dbusTubes() const;
58  bool streamTubes() const;
59 
60 protected:
61  friend class Account;
62  friend class Connection;
63  friend class ProtocolInfo;
64  friend class TestBackdoors;
65 
68 };
69 
70 } // Tp
71 
72 Q_DECLARE_METATYPE(Tp::ConnectionCapabilities);
73 
74 #endif
The CapabilitiesBase class represents the capabilities a Connection or a Contact supports.
Definition: capabilities-base.h:36
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
The Connection class represents a Telepathy connection.
Definition: connection.h:62
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101
The ConnectionCapabilities class represents the capabilities of a Connection.
Definition: connection-capabilities.h:38
The Account class represents a Telepathy account.
Definition: account.h:68


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01323.html0000644000175100017520000003465112530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::DBus::DBusDaemonInterface Member List

This is the complete list of members for Tp::Client::DBus::DBusDaemonInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AddMatch(const QString &rule, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
DBusDaemonInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::DBusDaemonInterface
DBusDaemonInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::DBusDaemonInterface
DBusDaemonInterface(Tp::DBusProxy *proxy)Tp::Client::DBus::DBusDaemonInterface
DBusDaemonInterface(const Tp::AbstractInterface &mainInterface)Tp::Client::DBus::DBusDaemonInterfaceexplicit
DBusDaemonInterface(const Tp::AbstractInterface &mainInterface, QObject *parent)Tp::Client::DBus::DBusDaemonInterface
GetConnectionSELinuxSecurityContext(const QString &connectionName, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
GetConnectionUnixProcessID(const QString &connectionName, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
GetConnectionUnixUser(const QString &connectionName, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
GetId(int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
GetNameOwner(const QString &name, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
Hello(int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::DBus::DBusDaemonInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListActivatableNames(int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
ListNames(int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
ListQueuedOwners(const QString &name, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
NameAcquired(const QString &name)Tp::Client::DBus::DBusDaemonInterfacesignal
NameHasOwner(const QString &nameToCheck, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
NameLost(const QString &name)Tp::Client::DBus::DBusDaemonInterfacesignal
NameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner)Tp::Client::DBus::DBusDaemonInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ReleaseName(const QString &name, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
ReloadConfig(int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
RemoveMatch(const QString &rule, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
requestAllProperties() const Tp::Client::DBus::DBusDaemonInterfaceinline
RequestName(const QString &name, uint flags, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
StartServiceByName(const QString &service, uint flags, int timeout=-1)Tp::Client::DBus::DBusDaemonInterfaceinlineslot
staticInterfaceName()Tp::Client::DBus::DBusDaemonInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00107.html0000644000175100017520000006334612530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelRoomInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Room2. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Member Functions

virtual ~BaseChannelRoomInterface ()
 
QVariantMap immutableProperties () const
 
QString roomName () const
 
QString server () const
 
QString creator () const
 
uint creatorHandle () const
 
QDateTime creationTimestamp () const
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelRoomInterfacePtr create (const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)
 
template<typename BaseChannelRoomInterfaceSubclass >
static SharedPtr
< BaseChannelRoomInterfaceSubclass > 
create (const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)
 

Protected Member Functions

 BaseChannelRoomInterface (const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Room2.

Constructor & Destructor Documentation

Tp::BaseChannelRoomInterface::~BaseChannelRoomInterface ( )
virtual

Class destructor.

Tp::BaseChannelRoomInterface::BaseChannelRoomInterface ( const QString &  roomName,
const QString &  server,
const QString &  creator,
uint  creatorHandle,
const QDateTime &  creationTimestamp 
)
protected

Class constructor.

Member Function Documentation

static BaseChannelRoomInterfacePtr Tp::BaseChannelRoomInterface::create ( const QString &  roomName,
const QString &  server,
const QString &  creator,
uint  creatorHandle,
const QDateTime &  creationTimestamp 
)
inlinestatic
template<typename BaseChannelRoomInterfaceSubclass >
static SharedPtr<BaseChannelRoomInterfaceSubclass> Tp::BaseChannelRoomInterface::create ( const QString &  roomName,
const QString &  server,
const QString &  creator,
uint  creatorHandle,
const QDateTime &  creationTimestamp 
)
inlinestatic
QVariantMap Tp::BaseChannelRoomInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

QString Tp::BaseChannelRoomInterface::roomName ( ) const
QString Tp::BaseChannelRoomInterface::server ( ) const
QString Tp::BaseChannelRoomInterface::creator ( ) const
uint Tp::BaseChannelRoomInterface::creatorHandle ( ) const
QDateTime Tp::BaseChannelRoomInterface::creationTimestamp ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01078.html0000644000175100017520000001513012530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingStreamTubeConnection Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00922.html0000644000175100017520000001227112530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AvatarSpec Member List

This is the complete list of members for Tp::AvatarSpec, including all inherited members.

AvatarSpec()Tp::AvatarSpec
AvatarSpec(const QStringList &supportedMimeTypes, uint minHeight, uint maxHeight, uint recommendedHeight, uint minWidth, uint maxWidth, uint recommendedWidth, uint maxBytes)Tp::AvatarSpec
AvatarSpec(const AvatarSpec &other)Tp::AvatarSpec
isValid() const Tp::AvatarSpecinline
maximumBytes() const Tp::AvatarSpec
maximumHeight() const Tp::AvatarSpec
maximumWidth() const Tp::AvatarSpec
minimumHeight() const Tp::AvatarSpec
minimumWidth() const Tp::AvatarSpec
operator=(const AvatarSpec &other)Tp::AvatarSpec
recommendedHeight() const Tp::AvatarSpec
recommendedWidth() const Tp::AvatarSpec
supportedMimeTypes() const Tp::AvatarSpec
~AvatarSpec()Tp::AvatarSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00421.html0000644000175100017520000023663312530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::OutgoingDBusTubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel of type DBusTube. More...

#include <TelepathyQt/OutgoingDBusTubeChannel>

Inherits Tp::DBusTubeChannel.

Public Member Functions

virtual ~OutgoingDBusTubeChannel ()
 
PendingDBusTubeConnectionofferTube (const QVariantMap &parameters, bool allowOtherUsers=false)
 
- Public Member Functions inherited from Tp::DBusTubeChannel
virtual ~DBusTubeChannel ()
 
QString serviceName () const
 
bool supportsRestrictingToCurrentUser () const
 
QHash< QString, Tp::ContactPtr > contactsForBusNames () const
 
QString address () const
 
- Public Member Functions inherited from Tp::TubeChannel
virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static OutgoingDBusTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::DBusTubeChannel
static DBusTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::TubeChannel
static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Protected Member Functions

 OutgoingDBusTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Protected Member Functions inherited from Tp::DBusTubeChannel
 DBusTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Protected Member Functions inherited from Tp::TubeChannel
 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::DBusTubeChannel
void busNameAdded (const QString &busName, const Tp::ContactPtr &contact)
 
void busNameRemoved (const QString &busName, const Tp::ContactPtr &contact)
 
- Signals inherited from Tp::TubeChannel
void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Static Public Attributes inherited from Tp::DBusTubeChannel
static const Feature FeatureCore
 
static const Feature FeatureBusNameMonitoring
 
- Static Public Attributes inherited from Tp::TubeChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel of type DBusTube.

Outgoing (locally initiated/requested) tubes are initially in the TubeChannelStateNotOffered state. When offerTube is called, the connection manager takes care of instantiating a new DBus server, at which point the tube state becomes TubeChannelStateRemotePending.

If the target accepts the connection request, the state goes TubeChannelStateOpen and both sides can start using the new private bus, the address of which can be retrieved from the completed PendingDBusTubeConnection or from this class.

Note
If you plan to use QtDBus for the DBus connection, please note you should always use QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use of DBus Tubes through QtDBus.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::OutgoingDBusTubeChannel::~OutgoingDBusTubeChannel ( )
virtual

Class destructor.

Tp::OutgoingDBusTubeChannel::OutgoingDBusTubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
protected

Construct a new OutgoingDBusTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.

Member Function Documentation

OutgoingDBusTubeChannelPtr Tp::OutgoingDBusTubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new OutgoingDBusTubeChannel channel.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.
Returns
A OutgoingDBusTubeChannelPtr object pointing to the newly created OutgoingDBusTubeChannel object.
PendingDBusTubeConnection * Tp::OutgoingDBusTubeChannel::offerTube ( const QVariantMap &  parameters,
bool  allowOtherUsers = false 
)

Offer the tube

This method sets up a private DBus connection to the channel target(s), and offers it through the tube.

The PendingDBusTubeConnection returned by this method will be completed as soon as the tube is opened and ready to be used.

This method requires DBusTubeChannel::FeatureCore to be enabled.

Parameters
parametersA dictionary of arbitrary Parameters to send with the tube offer. The other end will receive this QVariantMap in the parameters() method of the corresponding IncomingDBusTubeChannel.
allowOtherUsersWhether the server should allow other users to connect to this tube more than just the current one. If your application has no specific needs, it is advisable not to modify the default value of this argument.
Note
If allowOtherUsers == false, but one of the ends does not support current user restriction, the tube will be offered regardless, falling back to allowing any connection. If your application requires strictly this condition to be enforced, you should check DBusTubeChannel::supportsRestrictingToCurrentUser before offering the tube, and take action from there. The tube is guaranteed either to be offered with the desired restriction or to fail the accept phase if supportsRestrictingToCurrentUser is true and allowOtherUsers is false.
Returns
A PendingDBusTubeConnection which will finish as soon as the tube is ready to be used (hence in the Open state)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00651_source.html0000644000175100017520000003604412530426257022523 0ustar00kaffeinekaffeine00000000000000 client-registrar.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
client-registrar.h
1 
23 #ifndef _TelepathyQt_client_registrar_h_HEADER_GUARD_
24 #define _TelepathyQt_client_registrar_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/AccountFactory>
31 #include <TelepathyQt/ChannelFactory>
32 #include <TelepathyQt/ConnectionFactory>
33 #include <TelepathyQt/ContactFactory>
34 #include <TelepathyQt/Object>
35 #include <TelepathyQt/Types>
36 
37 #include <QDBusConnection>
38 #include <QString>
39 
40 namespace Tp
41 {
42 
43 class TP_QT_EXPORT ClientRegistrar : public Object
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(ClientRegistrar)
47 
48 public:
49  static ClientRegistrarPtr create(const QDBusConnection &bus);
50  static ClientRegistrarPtr create(
51  const AccountFactoryConstPtr &accountFactory =
52  AccountFactory::create(QDBusConnection::sessionBus()),
53  const ConnectionFactoryConstPtr &connectionFactory =
54  ConnectionFactory::create(QDBusConnection::sessionBus()),
55  const ChannelFactoryConstPtr &channelFactory =
56  ChannelFactory::create(QDBusConnection::sessionBus()),
57  const ContactFactoryConstPtr &contactFactory =
59  static ClientRegistrarPtr create(const QDBusConnection &bus,
60  const AccountFactoryConstPtr &accountFactory,
61  const ConnectionFactoryConstPtr &connectionFactory,
62  const ChannelFactoryConstPtr &channelFactory,
63  const ContactFactoryConstPtr &contactFactory);
64  static ClientRegistrarPtr create(const AccountManagerPtr &accountManager);
65 
66  ~ClientRegistrar();
67 
68  QDBusConnection dbusConnection() const;
69 
70  AccountFactoryConstPtr accountFactory() const;
71  ConnectionFactoryConstPtr connectionFactory() const;
72  ChannelFactoryConstPtr channelFactory() const;
73  ContactFactoryConstPtr contactFactory() const;
74 
75  QList<AbstractClientPtr> registeredClients() const;
76  bool registerClient(const AbstractClientPtr &client,
77  const QString &clientName, bool unique = false);
78  bool unregisterClient(const AbstractClientPtr &client);
79  void unregisterClients();
80 
81 private:
82  ClientRegistrar(const QDBusConnection &bus,
83  const AccountFactoryConstPtr &accountFactory,
84  const ConnectionFactoryConstPtr &connectionFactory,
85  const ChannelFactoryConstPtr &channelFactory,
86  const ContactFactoryConstPtr &contactFactory);
87 
88  struct Private;
89  friend struct Private;
90  Private *mPriv;
91 
92  static QHash<QPair<QString, QString>, ClientRegistrar *> registrarForConnection;
93 };
94 
95 } // Tp
96 
97 #endif
static ConnectionFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: connection-factory.cpp:57
static ContactFactoryPtr create(const Features &features=Features())
Definition: contact-factory.cpp:48
The Object class provides an object with property notification.
Definition: object.h:39
static AccountFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: account-factory.cpp:58
static ChannelFactoryPtr create(const QDBusConnection &bus)
Definition: channel-factory.cpp:86
The ClientRegistrar class is responsible for registering Telepathy clients (Observer, Approver, Handler).
Definition: client-registrar.h:43


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00176.html0000644000175100017520000002112012530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelClassSpecList Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelClassSpecList Class Reference

The ChannelClassSpecList class represents a list of ChannelClassSpec. More...

#include <TelepathyQt/ChannelClassSpecList>

Inherits QList< ChannelClassSpec >.

Public Member Functions

 ChannelClassSpecList ()
 
 ChannelClassSpecList (const ChannelClassSpec &spec)
 
 ChannelClassSpecList (const QList< ChannelClassSpec > &other)
 
 ChannelClassSpecList (const ChannelClassList &classes)
 
ChannelClassList bareClasses () const
 

Detailed Description

The ChannelClassSpecList class represents a list of ChannelClassSpec.

Constructor & Destructor Documentation

Tp::ChannelClassSpecList::ChannelClassSpecList ( )
inline
Tp::ChannelClassSpecList::ChannelClassSpecList ( const ChannelClassSpec spec)
inline
Tp::ChannelClassSpecList::ChannelClassSpecList ( const QList< ChannelClassSpec > &  other)
inline
Tp::ChannelClassSpecList::ChannelClassSpecList ( const ChannelClassList classes)
inline

Member Function Documentation

ChannelClassList Tp::ChannelClassSpecList::bareClasses ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01137.html0000644000175100017520000000627012530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CapabilityChange Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00991.html0000644000175100017520000010654212530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelFactory Member List

This is the complete list of members for Tp::ChannelFactory, including all inherited members.

addCommonFeatures(const Features &features)Tp::ChannelFactory
addFeaturesFor(const ChannelClassSpec &channelClass, const Features &features)Tp::ChannelFactory
addFeaturesForCalls(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForContactSearches(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForIncomingDBusTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForIncomingFileTransfers(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForIncomingRoomDBusTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForIncomingRoomStreamTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForIncomingStreamTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForOutgoingDBusTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForOutgoingFileTransfers(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForOutgoingRoomDBusTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForOutgoingRoomStreamTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForOutgoingStreamTubes(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForRoomLists(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForServerAuthentication(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForStreamedMediaCalls(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForTextChatrooms(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
addFeaturesForTextChats(const Features &features, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
cachedProxy(const QString &busName, const QString &objectPath) const Tp::DBusProxyFactoryprotected
ChannelFactory(const QDBusConnection &bus)Tp::ChannelFactoryprotected
commonFeatures() const Tp::ChannelFactory
constructorFor(const ChannelClassSpec &channelClass) const Tp::ChannelFactory
constructorForContactSearches(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForIncomingDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForIncomingFileTransfers(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForIncomingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForIncomingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForIncomingStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForOutgoingDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForOutgoingFileTransfers(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForOutgoingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForOutgoingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForOutgoingStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForRoomLists(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForServerAuthentication(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForStreamedMediaCalls(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForTextChatrooms(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
constructorForTextChats(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
create(const QDBusConnection &bus)Tp::ChannelFactorystatic
dbusConnection() const Tp::DBusProxyFactory
DBusProxyFactory(const QDBusConnection &bus)Tp::DBusProxyFactoryprotected
fallbackConstructor() const Tp::ChannelFactory
featuresFor(const ChannelClassSpec &channelClass) const Tp::ChannelFactory
featuresFor(const DBusProxyPtr &proxy) const Tp::ChannelFactoryprotectedvirtual
featuresForCalls(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForContactSearches(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForIncomingDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForIncomingFileTransfers(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForIncomingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForIncomingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForIncomingStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForOutgoingDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForOutgoingFileTransfers(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForOutgoingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForOutgoingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForOutgoingStreamTubes(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForRoomLists(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForServerAuthentication(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForStreamedMediaCalls(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForTextChatrooms(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
featuresForTextChats(const QVariantMap &additionalProps=QVariantMap()) const Tp::ChannelFactory
finalBusNameFrom(const QString &uniqueOrWellKnown) const Tp::ChannelFactoryprotectedvirtual
initialPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
nowHaveProxy(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotected
proxy(const ConnectionPtr &connection, const QString &channelPath, const QVariantMap &immutableProperties) const Tp::ChannelFactory
readyPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
RefCounted()Tp::RefCountedinline
setConstructorFor(const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor)Tp::ChannelFactory
setConstructorForCalls(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForContactSearches(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForIncomingDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForIncomingFileTransfers(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForIncomingRoomDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForIncomingRoomStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForIncomingStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForOutgoingDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForOutgoingFileTransfers(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForOutgoingRoomDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForOutgoingRoomStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForOutgoingStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForRoomLists(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForServerAuthentication(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForStreamedMediaCalls(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForTextChatrooms(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setConstructorForTextChats(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactory
setFallbackConstructor(const ConstructorConstPtr &ctor)Tp::ChannelFactory
setFallbackSubclass()Tp::ChannelFactoryinline
setSubclassFor(const ChannelClassSpec &channelClass)Tp::ChannelFactoryinline
setSubclassForCalls(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForContactSearches(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForIncomingDBusTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForIncomingFileTransfers(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForIncomingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForIncomingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForIncomingStreamTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForOutgoingDBusTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForOutgoingFileTransfers(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForOutgoingRoomDBusTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForOutgoingRoomStreamTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForOutgoingStreamTubes(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForRoomLists(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForServerAuthentication(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForStreamedMediaCalls(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForTextChatrooms(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
setSubclassForTextChats(const QVariantMap &additionalProps=QVariantMap())Tp::ChannelFactoryinline
~ChannelFactory()Tp::ChannelFactoryvirtual
~DBusProxyFactory()Tp::DBusProxyFactoryvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00490.html0000644000175100017520000017360612530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::ReferencedHandles Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles container is guaranteed to be valid (and stay valid, as long it's in at least one ReferencedHandles container). More...

#include <TelepathyQt/ReferencedHandles>

Public Types

typedef UIntList::const_iterator const_iterator
 
typedef UIntList::ConstIterator ConstIterator
 
typedef UIntList::const_pointer const_pointer
 
typedef UIntList::const_reference const_reference
 
typedef UIntList::difference_type difference_type
 
typedef UIntList::pointer pointer
 
typedef UIntList::reference reference
 
typedef UIntList::size_type size_type
 
typedef UIntList::value_type value_type
 

Public Member Functions

 ReferencedHandles ()
 
 ReferencedHandles (const ReferencedHandles &other)
 
 ~ReferencedHandles ()
 
ConnectionPtr connection () const
 
HandleType handleType () const
 
uint at (int i) const
 
uint back () const
 
uint first () const
 
uint front () const
 
uint last () const
 
uint value (int i, uint defaultValue=0) const
 
const_iterator begin () const
 
const_iterator constBegin () const
 
const_iterator constEnd () const
 
const_iterator end () const
 
bool contains (uint handle) const
 
int count (uint handle) const
 
int count () const
 
bool empty () const
 
bool endsWith (uint handle) const
 
int indexOf (uint handle, int from=0) const
 
bool isEmpty () const
 
int lastIndexOf (uint handle, int from=-1) const
 
int length () const
 
ReferencedHandles mid (int pos, int length=-1) const
 
int size () const
 
bool startsWith (uint handle) const
 
void append (const ReferencedHandles &another)
 
void clear ()
 
void move (int from, int to)
 
void pop_back ()
 
void pop_front ()
 
int removeAll (uint handle)
 
void removeAt (int i)
 
void removeFirst ()
 
void removeLast ()
 
bool removeOne (uint handle)
 
void swap (int i, int j)
 
uint takeAt (int i)
 
uint takeFirst ()
 
uint takeLast ()
 
bool operator!= (const ReferencedHandles &another) const
 
bool operator!= (const UIntList &another) const
 
ReferencedHandles operator+ (const ReferencedHandles &another) const
 
ReferencedHandlesoperator+= (const ReferencedHandles &another)
 
ReferencedHandlesoperator<< (const ReferencedHandles &another)
 
ReferencedHandlesoperator= (const ReferencedHandles &another)
 
bool operator== (const ReferencedHandles &another) const
 
bool operator== (const UIntList &list) const
 
uint operator[] (int i) const
 
UIntList toList () const
 
QSet< uint > toSet () const
 
std::list< uint > toStdList () const
 
QVector< uint > toVector () const
 

Detailed Description

Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles container is guaranteed to be valid (and stay valid, as long it's in at least one ReferencedHandles container).

The class offers a QList-style API. However, from the mutable operations, only the operations for which the validity guarantees can be preserved are provided. This means no functions which can add an arbitrary handle to the container are included - the only way to add handles to the container is to reference them using Connection::referenceHandles() and appending the resulting ReferenceHandles instance.

ReferencedHandles is a implicitly shared class.

Member Typedef Documentation

typedef UIntList::const_iterator Tp::ReferencedHandles::const_iterator
typedef UIntList::ConstIterator Tp::ReferencedHandles::ConstIterator
typedef UIntList::const_pointer Tp::ReferencedHandles::const_pointer
typedef UIntList::const_reference Tp::ReferencedHandles::const_reference
typedef UIntList::difference_type Tp::ReferencedHandles::difference_type
typedef UIntList::pointer Tp::ReferencedHandles::pointer
typedef UIntList::reference Tp::ReferencedHandles::reference
typedef UIntList::size_type Tp::ReferencedHandles::size_type
typedef UIntList::value_type Tp::ReferencedHandles::value_type

Constructor & Destructor Documentation

Tp::ReferencedHandles::ReferencedHandles ( )
Tp::ReferencedHandles::ReferencedHandles ( const ReferencedHandles other)
Tp::ReferencedHandles::~ReferencedHandles ( )

Member Function Documentation

ConnectionPtr Tp::ReferencedHandles::connection ( ) const
HandleType Tp::ReferencedHandles::handleType ( ) const
uint Tp::ReferencedHandles::at ( int  i) const
uint Tp::ReferencedHandles::back ( ) const
inline
uint Tp::ReferencedHandles::first ( ) const
inline
uint Tp::ReferencedHandles::front ( ) const
inline
uint Tp::ReferencedHandles::last ( ) const
inline
uint Tp::ReferencedHandles::value ( int  i,
uint  defaultValue = 0 
) const
ReferencedHandles::const_iterator Tp::ReferencedHandles::begin ( ) const
const_iterator Tp::ReferencedHandles::constBegin ( ) const
inline
const_iterator Tp::ReferencedHandles::constEnd ( ) const
inline
ReferencedHandles::const_iterator Tp::ReferencedHandles::end ( ) const
bool Tp::ReferencedHandles::contains ( uint  handle) const
int Tp::ReferencedHandles::count ( uint  handle) const
int Tp::ReferencedHandles::count ( ) const
inline
bool Tp::ReferencedHandles::empty ( ) const
inline
bool Tp::ReferencedHandles::endsWith ( uint  handle) const
inline
int Tp::ReferencedHandles::indexOf ( uint  handle,
int  from = 0 
) const
bool Tp::ReferencedHandles::isEmpty ( ) const
int Tp::ReferencedHandles::lastIndexOf ( uint  handle,
int  from = -1 
) const
int Tp::ReferencedHandles::length ( ) const
inline
ReferencedHandles Tp::ReferencedHandles::mid ( int  pos,
int  length = -1 
) const
int Tp::ReferencedHandles::size ( ) const
bool Tp::ReferencedHandles::startsWith ( uint  handle) const
inline
void Tp::ReferencedHandles::append ( const ReferencedHandles another)
inline
void Tp::ReferencedHandles::clear ( )
void Tp::ReferencedHandles::move ( int  from,
int  to 
)
void Tp::ReferencedHandles::pop_back ( )
inline
void Tp::ReferencedHandles::pop_front ( )
inline
int Tp::ReferencedHandles::removeAll ( uint  handle)
void Tp::ReferencedHandles::removeAt ( int  i)
void Tp::ReferencedHandles::removeFirst ( )
inline
void Tp::ReferencedHandles::removeLast ( )
inline
bool Tp::ReferencedHandles::removeOne ( uint  handle)
void Tp::ReferencedHandles::swap ( int  i,
int  j 
)
uint Tp::ReferencedHandles::takeAt ( int  i)
uint Tp::ReferencedHandles::takeFirst ( )
inline
uint Tp::ReferencedHandles::takeLast ( )
inline
bool Tp::ReferencedHandles::operator!= ( const ReferencedHandles another) const
inline
bool Tp::ReferencedHandles::operator!= ( const UIntList another) const
inline
ReferencedHandles Tp::ReferencedHandles::operator+ ( const ReferencedHandles another) const
ReferencedHandles& Tp::ReferencedHandles::operator+= ( const ReferencedHandles another)
inline
ReferencedHandles& Tp::ReferencedHandles::operator<< ( const ReferencedHandles another)
inline
ReferencedHandles & Tp::ReferencedHandles::operator= ( const ReferencedHandles another)
bool Tp::ReferencedHandles::operator== ( const ReferencedHandles another) const
bool Tp::ReferencedHandles::operator== ( const UIntList list) const
uint Tp::ReferencedHandles::operator[] ( int  i) const
inline
UIntList Tp::ReferencedHandles::toList ( ) const
QSet<uint> Tp::ReferencedHandles::toSet ( ) const
inline
std::list<uint> Tp::ReferencedHandles::toStdList ( ) const
inline
QVector<uint> Tp::ReferencedHandles::toVector ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00648_source.html0000644000175100017520000002761112530426257022531 0ustar00kaffeinekaffeine00000000000000 cli-tls-certificate-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-tls-certificate-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/tls-certificate.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 AuthenticationTLSCertificateInterface::AuthenticationTLSCertificateInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent())
26 {
27 }
28 
30  : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent)
31 {
32 }
33 
35  const QString &error, const QString &message)
36 {
37  disconnect(this, SIGNAL(Accepted()), NULL, NULL);
38  disconnect(this, SIGNAL(Rejected(const Tp::TLSCertificateRejectionList&)), NULL, NULL);
39 
40  Tp::AbstractInterface::invalidate(proxy, error, message);
41 }
42 }
43 }
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-tls-certificate-body.hpp:34
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
QList< TLSCertificateRejection > TLSCertificateRejectionList
Definition: build/TelepathyQt/_gen/types.h:3203
void Rejected(const Tp::TLSCertificateRejectionList &rejections)
AuthenticationTLSCertificateInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-tls-certificate-body.hpp:9


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00235.html0000644000175100017520000005567112530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeContactSearchAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeContactSearchAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Search (const Tp::ContactSearchMap &terms, const QDBusMessage &dbusMessage)
 
void More (const QDBusMessage &dbusMessage)
 
void Stop (const QDBusMessage &dbusMessage)
 

Signals

void SearchStateChanged (uint state, const QString &error, const QVariantMap &details)
 
void SearchResultReceived (const Tp::ContactSearchResultMap &result)
 

Public Member Functions

uint SearchState () const
 
uint Limit () const
 
QStringList AvailableSearchKeys () const
 
QString Server () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ChannelTypeContactSearchAdaptor::SearchState ( ) const

Return the value of the exported D-Bus object property SearchState of type uint.

Adaptees should export this property as a Qt property named 'searchState' with type uint.

The current state of this search channel object. Change notification is via SearchStateChanged.

Returns
The value of exported property SearchState.
uint Tp::Service::ChannelTypeContactSearchAdaptor::Limit ( ) const

Return the value of the exported D-Bus object property Limit of type uint.

Adaptees should export this property as a Qt property named 'limit' with type uint.

If supported by the protocol, the maximum number of results that should be returned, where 0 represents no limit. If the protocol does not support limiting results, this should be 0.

For example, if the terms passed to Search() match Antonius, Bridget and Charles and this property is 2, the search service SHOULD only return Antonius and Bridget.

This property SHOULD be requestable if and only if the protocol supports specifying a limit; implementations SHOULD use 0 as the default if possible, or a protocol-specific sensible default otherwise.

Returns
The value of exported property Limit.
QStringList Tp::Service::ChannelTypeContactSearchAdaptor::AvailableSearchKeys ( ) const

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

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

The set of search keys supported by this channel. Example values include [""] (for protocols where several address fields are implicitly searched) or ["x-n-given", "x-n-family", "nickname", "email"] (for XMPP XEP-0055, without extensibility via Data Forms). It can be in the NewChannels signal for round-trip reduction.

Returns
The value of exported property AvailableSearchKeys.
QString Tp::Service::ChannelTypeContactSearchAdaptor::Server ( ) const

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

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

For protocols which support searching for contacts on multiple servers with different DNS names (like XMPP), the DNS name of the server being searched by this channel, e.g. "characters.shakespeare.lit". Otherwise, the empty string. XEP 0055 defines a mechanism for XMPP clients to search services of their choice for contacts, such as users.jabber.org (the "Jabber User Directory"). This property SHOULD be requestable if and only if the protocol supports querying multiple different servers; implementations SHOULD use a sensible default if possible if this property is not specified in a channel request. This allows a client to perform searches on a protocol it knows nothing about without requiring the user to guess a valid server's hostname.

Returns
The value of exported property Server.
void Tp::Service::ChannelTypeContactSearchAdaptor::Search ( const Tp::ContactSearchMap terms,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void search(const Tp::ContactSearchMap& terms, const Tp::Service::ChannelTypeContactSearchAdaptor::SearchContextPtr &context);

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

Send a request to start a search for contacts on this connection. This may only be called while the SearchState is Not_Started; a valid search request will cause the SearchStateChanged signal to be emitted with the state In_Progress.

Parameters
terms
A dictionary mapping search key names to the desired values
void Tp::Service::ChannelTypeContactSearchAdaptor::More ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void more(const Tp::Service::ChannelTypeContactSearchAdaptor::MoreContextPtr &context);

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

Request that a search in SearchState More_Available move back to state In_Progress and continue listing up to Limit more results.
void Tp::Service::ChannelTypeContactSearchAdaptor::Stop ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void stop(const Tp::Service::ChannelTypeContactSearchAdaptor::StopContextPtr &context);

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

Stop the current search. This may not be called while the SearchState is Not_Started. If called while the SearchState is In_Progress, SearchStateChanged() will be emitted, with the state Failed and the error org.freedesktop.Telepathy.Error.Cancelled.

Calling this method on a search in state Completed or Failed succeeds, but has no effect.

Specifying Stop to succeed when the search has finished means that clients who call Stop just before receiving SearchStateChanged() don't have to handle a useless error.

Depending on the protocol, the connection manager may not be able to prevent the server from sending further results after this method returns; if this is the case, it MUST ignore any further results.

void Tp::Service::ChannelTypeContactSearchAdaptor::SearchStateChanged ( uint  state,
const QString &  error,
const QVariantMap &  details 
)
signal

Represents the exported D-Bus signal SearchStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void searchStateChanged(uint state, const QString& error, const QVariantMap& details);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
state
The new search state
error If the new state is Failed, the name of a D-Bus error describing what went wrong. Otherwise, the empty string.
details

Additional information about the state transition, which may include the following well-known keys:

debug-message (s)
Debugging information on the change, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances

This argument allows for future extensions. For instance, if moving to state Failed because the server rejected one of our search terms, we could define a key that indicates which terms were invalid.

void Tp::Service::ChannelTypeContactSearchAdaptor::SearchResultReceived ( const Tp::ContactSearchResultMap result)
signal

Represents the exported D-Bus signal SearchResultReceived on this object.

Adaptees should export this signal as a Qt signal with the following signature: void searchResultReceived(const Tp::ContactSearchResultMap& result);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
result
A mapping from contact identifier to an array of fields 
representing information about this contact.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00644_source.html0000644000175100017520000004626212530426257022530 0ustar00kaffeinekaffeine00000000000000 cli-media-stream-handler-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-media-stream-handler-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/media-stream-handler.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 MediaStreamHandlerInterface::MediaStreamHandlerInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 MediaStreamHandlerInterface::MediaStreamHandlerInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(AddRemoteCandidate(const QString&, const Tp::MediaStreamHandlerTransportList&)), NULL, NULL);
28  disconnect(this, SIGNAL(Close()), NULL, NULL);
29  disconnect(this, SIGNAL(RemoveRemoteCandidate(const QString&)), NULL, NULL);
30  disconnect(this, SIGNAL(SetActiveCandidatePair(const QString&, const QString&)), NULL, NULL);
31  disconnect(this, SIGNAL(SetRemoteCandidateList(const Tp::MediaStreamHandlerCandidateList&)), NULL, NULL);
32  disconnect(this, SIGNAL(SetRemoteCodecs(const Tp::MediaStreamHandlerCodecList&)), NULL, NULL);
33  disconnect(this, SIGNAL(SetStreamPlaying(bool)), NULL, NULL);
34  disconnect(this, SIGNAL(SetStreamSending(bool)), NULL, NULL);
35  disconnect(this, SIGNAL(StartTelephonyEvent(uchar)), NULL, NULL);
36  disconnect(this, SIGNAL(StartNamedTelephonyEvent(uchar, uint)), NULL, NULL);
37  disconnect(this, SIGNAL(StartSoundTelephonyEvent(uchar)), NULL, NULL);
38  disconnect(this, SIGNAL(StopTelephonyEvent()), NULL, NULL);
39  disconnect(this, SIGNAL(SetStreamHeld(bool)), NULL, NULL);
40  disconnect(this, SIGNAL(SetRemoteFeedbackMessages(const Tp::RTCPFeedbackMessageMap&)), NULL, NULL);
41  disconnect(this, SIGNAL(SetRemoteHeaderExtensions(const Tp::RTPHeaderExtensionsList&)), NULL, NULL);
42 
43  Tp::AbstractInterface::invalidate(proxy, error, message);
44 }
45 }
46 }
QList< RTPHeaderExtension > RTPHeaderExtensionsList
Definition: build/TelepathyQt/_gen/types.h:2506
void SetRemoteCandidateList(const Tp::MediaStreamHandlerCandidateList &remoteCandidates)
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
void AddRemoteCandidate(const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports)
void RemoveRemoteCandidate(const QString &candidateID)
QList< MediaStreamHandlerTransport > MediaStreamHandlerTransportList
Definition: build/TelepathyQt/_gen/types.h:1970
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
void SetRemoteFeedbackMessages(const Tp::RTCPFeedbackMessageMap &messages)
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-media-stream-handler-body.hpp:24
Definition: build/TelepathyQt/_gen/types.h:3939
QList< MediaStreamHandlerCandidate > MediaStreamHandlerCandidateList
Definition: build/TelepathyQt/_gen/types.h:3662
void SetRemoteHeaderExtensions(const Tp::RTPHeaderExtensionsList &headerExtensions)
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
void SetActiveCandidatePair(const QString &nativeCandidateID, const QString &remoteCandidateID)
void SetRemoteCodecs(const Tp::MediaStreamHandlerCodecList &codecs)
MediaStreamHandlerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-media-stream-handler-body.hpp:9
void StartNamedTelephonyEvent(uchar event, uint codecID)
QList< MediaStreamHandlerCodec > MediaStreamHandlerCodecList
Definition: build/TelepathyQt/_gen/types.h:3715


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01265.html0000644000175100017520000002215712530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfacePasswordInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfacePasswordInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfacePasswordInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfacePasswordInterface
ChannelInterfacePasswordInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfacePasswordInterface
ChannelInterfacePasswordInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfacePasswordInterface
ChannelInterfacePasswordInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfacePasswordInterfaceexplicit
ChannelInterfacePasswordInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfacePasswordInterface
GetPasswordFlags(int timeout=-1)Tp::Client::ChannelInterfacePasswordInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfacePasswordInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
PasswordFlagsChanged(uint added, uint removed)Tp::Client::ChannelInterfacePasswordInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ProvidePassword(const QString &password, int timeout=-1)Tp::Client::ChannelInterfacePasswordInterfaceinlineslot
requestAllProperties() const Tp::Client::ChannelInterfacePasswordInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfacePasswordInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00864.html0000644000175100017520000007035312530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Client Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client Namespace Reference

Namespaces

 DBus
 

Classes

class  AccountManagerInterface
 
class  AccountInterface
 
class  AccountInterfaceAddressingInterface
 
class  AccountInterfaceAvatarInterface
 
class  AccountInterfaceStorageInterface
 
class  CallContentMediaDescriptionInterface
 
class  CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface
 
class  CallContentMediaDescriptionInterfaceRTCPFeedbackInterface
 
class  CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface
 
class  CallContentInterface
 
class  CallContentInterfaceAudioControlInterface
 
class  CallContentInterfaceDTMFInterface
 
class  CallContentInterfaceMediaInterface
 
class  CallContentInterfaceVideoControlInterface
 
class  CallStreamEndpointInterface
 
class  CallStreamInterface
 
class  CallStreamInterfaceMediaInterface
 
class  ChannelDispatchOperationInterface
 
class  ChannelDispatcherInterface
 
class  ChannelDispatcherInterfaceMessages1Interface
 
class  ChannelRequestInterface
 
class  ChannelInterface
 
class  ChannelInterfaceAnonymityInterface
 
class  ChannelInterfaceCallStateInterface
 
class  ChannelInterfaceCaptchaAuthenticationInterface
 
class  ChannelInterfaceChatStateInterface
 
class  ChannelInterfaceConferenceInterface
 
class  ChannelInterfaceDTMFInterface
 
class  ChannelInterfaceDestroyableInterface
 
class  ChannelInterfaceFileTransferMetadataInterface
 
class  ChannelInterfaceGroupInterface
 
class  ChannelInterfaceHoldInterface
 
class  ChannelInterfaceMediaSignallingInterface
 
class  ChannelInterfaceMessagesInterface
 
class  ChannelInterfacePasswordInterface
 
class  ChannelInterfaceRoomConfigInterface
 
class  ChannelInterfaceRoomInterface
 
class  ChannelInterfaceSASLAuthenticationInterface
 
class  ChannelInterfaceSMSInterface
 
class  ChannelInterfaceSecurableInterface
 
class  ChannelInterfaceServicePointInterface
 
class  ChannelInterfaceSubjectInterface
 
class  ChannelInterfaceTubeInterface
 
class  ChannelTypeCallInterface
 
class  ChannelTypeContactListInterface
 
class  ChannelTypeContactSearchInterface
 
class  ChannelTypeDBusTubeInterface
 
class  ChannelTypeFileTransferInterface
 
class  ChannelTypeRoomListInterface
 
class  ChannelTypeServerAuthenticationInterface
 
class  ChannelTypeServerTLSConnectionInterface
 
class  ChannelTypeStreamTubeInterface
 
class  ChannelTypeStreamedMediaInterface
 
class  ChannelTypeTextInterface
 
class  ChannelTypeTubesInterface
 
class  ClientInterface
 
class  ClientApproverInterface
 
class  ClientHandlerInterface
 
class  ClientInterfaceRequestsInterface
 
class  ClientObserverInterface
 
class  ConnectionManagerInterface
 
class  ProtocolInterface
 
class  ProtocolInterfaceAddressingInterface
 
class  ProtocolInterfaceAvatarsInterface
 
class  ProtocolInterfacePresenceInterface
 
class  ConnectionInterface
 
class  ConnectionInterfaceAddressingInterface
 
class  ConnectionInterfaceAliasingInterface
 
class  ConnectionInterfaceAnonymityInterface
 
class  ConnectionInterfaceAvatarsInterface
 
class  ConnectionInterfaceBalanceInterface
 
class  ConnectionInterfaceCapabilitiesInterface
 
class  ConnectionInterfaceCellularInterface
 
class  ConnectionInterfaceClientTypesInterface
 
class  ConnectionInterfaceContactBlockingInterface
 
class  ConnectionInterfaceContactCapabilitiesInterface
 
class  ConnectionInterfaceContactGroupsInterface
 
class  ConnectionInterfaceContactInfoInterface
 
class  ConnectionInterfaceContactListInterface
 
class  ConnectionInterfaceContactsInterface
 
class  ConnectionInterfaceLocationInterface
 
class  ConnectionInterfaceMailNotificationInterface
 
class  ConnectionInterfacePowerSavingInterface
 
class  ConnectionInterfacePresenceInterface
 
class  ConnectionInterfaceRequestsInterface
 
class  ConnectionInterfaceServicePointInterface
 
class  ConnectionInterfaceSimplePresenceInterface
 
class  DebugInterface
 
class  MediaSessionHandlerInterface
 
class  MediaStreamHandlerInterface
 
class  PropertiesInterfaceInterface
 
class  AuthenticationTLSCertificateInterface
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00640_source.html0000644000175100017520000002170712530426257022521 0ustar00kaffeinekaffeine00000000000000 cli-debug-receiver-body.hpp Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-debug-receiver-body.hpp
1 #define IN_TP_QT_HEADER
2 #include "TelepathyQt/debug-receiver.h"
3 
4 namespace Tp
5 {
6 namespace Client
7 {
8 
9 DebugInterface::DebugInterface(const QString& busName, const QString& objectPath, QObject *parent)
10  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
11 {
12 }
13 
14 DebugInterface::DebugInterface(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent)
15  : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent)
16 {
17 }
18 
20  : Tp::AbstractInterface(proxy, staticInterfaceName())
21 {
22 }
23 
25  const QString &error, const QString &message)
26 {
27  disconnect(this, SIGNAL(NewDebugMessage(double, const QString&, uint, const QString&)), NULL, NULL);
28 
29  Tp::AbstractInterface::invalidate(proxy, error, message);
30 }
31 }
32 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &)
Definition: cli-debug-receiver-body.hpp:24
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message)
Definition: abstract-interface.cpp:101
DebugInterface(const QString &busName, const QString &objectPath, QObject *parent=0)
Definition: cli-debug-receiver-body.hpp:9
void NewDebugMessage(double time, const QString &domain, uint level, const QString &message)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x65.html0000644000175100017520000000411412530426260024137 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00363.html0000644000175100017520000003520712530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller6 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
typedef R Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::ResultType
template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
typedef R(* Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::FunctorCaller6 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 >
static ResultType Tp::FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >::invoke ( AbstractFunctorCaller call,
Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01324.html0000644000175100017520000002060612530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::DBus::IntrospectableInterface Member List

This is the complete list of members for Tp::Client::DBus::IntrospectableInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
Introspect(int timeout=-1)Tp::Client::DBus::IntrospectableInterfaceinlineslot
IntrospectableInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::IntrospectableInterface
IntrospectableInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::IntrospectableInterface
IntrospectableInterface(Tp::DBusProxy *proxy)Tp::Client::DBus::IntrospectableInterface
IntrospectableInterface(const Tp::AbstractInterface &mainInterface)Tp::Client::DBus::IntrospectableInterfaceexplicit
IntrospectableInterface(const Tp::AbstractInterface &mainInterface, QObject *parent)Tp::Client::DBus::IntrospectableInterface
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::DBus::IntrospectableInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::DBus::IntrospectableInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::DBus::IntrospectableInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00108.html0000644000175100017520000006703512530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelRoomListType Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Type.RoomList. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback1< void,
DBusError * > 
ListRoomsCallback
 
typedef Callback1< void,
DBusError * > 
StopListingCallback
 

Public Member Functions

virtual ~BaseChannelRoomListType ()
 
QVariantMap immutableProperties () const
 
QString server () const
 
bool getListingRooms ()
 
void setListingRooms (bool listing)
 
void setListRoomsCallback (const ListRoomsCallback &cb)
 
void listRooms (DBusError *error)
 
void setStopListingCallback (const StopListingCallback &cb)
 
void stopListing (DBusError *error)
 
void gotRooms (const Tp::RoomInfoList &rooms)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelRoomListTypePtr create (const QString &server=QString())
 
template<typename BaseChannelRoomListTypeSubclass >
static SharedPtr
< BaseChannelRoomListTypeSubclass > 
create (const QString &server=QString())
 

Protected Member Functions

 BaseChannelRoomListType (const QString &server)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Type.RoomList.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelRoomListType::~BaseChannelRoomListType ( )
virtual

Class destructor.

Tp::BaseChannelRoomListType::BaseChannelRoomListType ( const QString &  server)
protected

Class constructor.

Member Function Documentation

static BaseChannelRoomListTypePtr Tp::BaseChannelRoomListType::create ( const QString &  server = QString())
inlinestatic
template<typename BaseChannelRoomListTypeSubclass >
static SharedPtr<BaseChannelRoomListTypeSubclass> Tp::BaseChannelRoomListType::create ( const QString &  server = QString())
inlinestatic
QVariantMap Tp::BaseChannelRoomListType::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

QString Tp::BaseChannelRoomListType::server ( ) const
bool Tp::BaseChannelRoomListType::getListingRooms ( )
void Tp::BaseChannelRoomListType::setListingRooms ( bool  listing)
void Tp::BaseChannelRoomListType::setListRoomsCallback ( const ListRoomsCallback cb)
void Tp::BaseChannelRoomListType::listRooms ( DBusError error)
void Tp::BaseChannelRoomListType::setStopListingCallback ( const StopListingCallback cb)
void Tp::BaseChannelRoomListType::stopListing ( DBusError error)
void Tp::BaseChannelRoomListType::gotRooms ( const Tp::RoomInfoList rooms)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01079.html0000644000175100017520000001461012530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingStringList Member List

This is the complete list of members for Tp::PendingStringList, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
PendingStringList(const SharedPtr< RefCounted > &object)Tp::PendingStringList
PendingStringList(QDBusPendingCall call, const SharedPtr< RefCounted > &object)Tp::PendingStringList
result() const Tp::PendingStringList
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
setResult(const QStringList &result)Tp::PendingStringListprotected
~PendingOperation()Tp::PendingOperationvirtual
~PendingStringList()Tp::PendingStringList


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00923.html0000644000175100017520000001507212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractCallContentInterface Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00637_source.html0000644000175100017520000157076712530426257022547 0ustar00kaffeinekaffeine00000000000000 cli-connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-connection.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT ConnectionInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Connection");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
128  {
129  return internalRequestProperty(QLatin1String("Interfaces"));
130  }
131 
146  {
147  return internalRequestProperty(QLatin1String("SelfHandle"));
148  }
149 
164  {
165  return internalRequestProperty(QLatin1String("SelfID"));
166  }
167 
187  {
188  return internalRequestProperty(QLatin1String("Status"));
189  }
190 
206  {
207  return internalRequestProperty(QLatin1String("HasImmortalHandles"));
208  }
209 
217  {
218  return internalRequestAllProperties();
219  }
220 
221 public Q_SLOTS:
239  inline QDBusPendingReply<> Connect(int timeout = -1)
240  {
241  if (!invalidationReason().isEmpty()) {
242  return QDBusPendingReply<>(QDBusMessage::createError(
243  invalidationReason(),
244  invalidationMessage()
245  ));
246  }
247 
248  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
249  this->staticInterfaceName(), QLatin1String("Connect"));
250  return this->connection().asyncCall(callMessage, timeout);
251  }
252 
265  inline QDBusPendingReply<> Disconnect(int timeout = -1)
266  {
267  if (!invalidationReason().isEmpty()) {
268  return QDBusPendingReply<>(QDBusMessage::createError(
269  invalidationReason(),
270  invalidationMessage()
271  ));
272  }
273 
274  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
275  this->staticInterfaceName(), QLatin1String("Disconnect"));
276  return this->connection().asyncCall(callMessage, timeout);
277  }
278 
297  inline QDBusPendingReply<QStringList> GetInterfaces(int timeout = -1)
298  {
299  if (!invalidationReason().isEmpty()) {
300  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
301  invalidationReason(),
302  invalidationMessage()
303  ));
304  }
305 
306  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
307  this->staticInterfaceName(), QLatin1String("GetInterfaces"));
308  return this->connection().asyncCall(callMessage, timeout);
309  }
310 
325  inline QDBusPendingReply<QString> GetProtocol(int timeout = -1)
326  {
327  if (!invalidationReason().isEmpty()) {
328  return QDBusPendingReply<QString>(QDBusMessage::createError(
329  invalidationReason(),
330  invalidationMessage()
331  ));
332  }
333 
334  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
335  this->staticInterfaceName(), QLatin1String("GetProtocol"));
336  return this->connection().asyncCall(callMessage, timeout);
337  }
338 
354  inline QDBusPendingReply<uint> GetSelfHandle(int timeout = -1)
355  {
356  if (!invalidationReason().isEmpty()) {
357  return QDBusPendingReply<uint>(QDBusMessage::createError(
358  invalidationReason(),
359  invalidationMessage()
360  ));
361  }
362 
363  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
364  this->staticInterfaceName(), QLatin1String("GetSelfHandle"));
365  return this->connection().asyncCall(callMessage, timeout);
366  }
367 
382  inline QDBusPendingReply<uint> GetStatus(int timeout = -1)
383  {
384  if (!invalidationReason().isEmpty()) {
385  return QDBusPendingReply<uint>(QDBusMessage::createError(
386  invalidationReason(),
387  invalidationMessage()
388  ));
389  }
390 
391  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
392  this->staticInterfaceName(), QLatin1String("GetStatus"));
393  return this->connection().asyncCall(callMessage, timeout);
394  }
395 
438  inline QDBusPendingReply<> HoldHandles(uint handleType, const Tp::UIntList& handles, int timeout = -1)
439  {
440  if (!invalidationReason().isEmpty()) {
441  return QDBusPendingReply<>(QDBusMessage::createError(
442  invalidationReason(),
443  invalidationMessage()
444  ));
445  }
446 
447  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
448  this->staticInterfaceName(), QLatin1String("HoldHandles"));
449  callMessage << QVariant::fromValue(handleType) << QVariant::fromValue(handles);
450  return this->connection().asyncCall(callMessage, timeout);
451  }
452 
476  inline QDBusPendingReply<QStringList> InspectHandles(uint handleType, const Tp::UIntList& handles, int timeout = -1)
477  {
478  if (!invalidationReason().isEmpty()) {
479  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
480  invalidationReason(),
481  invalidationMessage()
482  ));
483  }
484 
485  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
486  this->staticInterfaceName(), QLatin1String("InspectHandles"));
487  callMessage << QVariant::fromValue(handleType) << QVariant::fromValue(handles);
488  return this->connection().asyncCall(callMessage, timeout);
489  }
490 
505  inline QDBusPendingReply<Tp::ChannelInfoList> ListChannels(int timeout = -1)
506  {
507  if (!invalidationReason().isEmpty()) {
508  return QDBusPendingReply<Tp::ChannelInfoList>(QDBusMessage::createError(
509  invalidationReason(),
510  invalidationMessage()
511  ));
512  }
513 
514  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
515  this->staticInterfaceName(), QLatin1String("ListChannels"));
516  return this->connection().asyncCall(callMessage, timeout);
517  }
518 
544  inline QDBusPendingReply<> ReleaseHandles(uint handleType, const Tp::UIntList& handles, int timeout = -1)
545  {
546  if (!invalidationReason().isEmpty()) {
547  return QDBusPendingReply<>(QDBusMessage::createError(
548  invalidationReason(),
549  invalidationMessage()
550  ));
551  }
552 
553  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
554  this->staticInterfaceName(), QLatin1String("ReleaseHandles"));
555  callMessage << QVariant::fromValue(handleType) << QVariant::fromValue(handles);
556  return this->connection().asyncCall(callMessage, timeout);
557  }
558 
638  inline QDBusPendingReply<QDBusObjectPath> RequestChannel(const QString& type, uint handleType, uint handle, bool suppressHandler, int timeout = -1)
639  {
640  if (!invalidationReason().isEmpty()) {
641  return QDBusPendingReply<QDBusObjectPath>(QDBusMessage::createError(
642  invalidationReason(),
643  invalidationMessage()
644  ));
645  }
646 
647  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
648  this->staticInterfaceName(), QLatin1String("RequestChannel"));
649  callMessage << QVariant::fromValue(type) << QVariant::fromValue(handleType) << QVariant::fromValue(handle) << QVariant::fromValue(suppressHandler);
650  return this->connection().asyncCall(callMessage, timeout);
651  }
652 
693  inline QDBusPendingReply<Tp::UIntList> RequestHandles(uint handleType, const QStringList& identifiers, int timeout = -1)
694  {
695  if (!invalidationReason().isEmpty()) {
696  return QDBusPendingReply<Tp::UIntList>(QDBusMessage::createError(
697  invalidationReason(),
698  invalidationMessage()
699  ));
700  }
701 
702  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
703  this->staticInterfaceName(), QLatin1String("RequestHandles"));
704  callMessage << QVariant::fromValue(handleType) << QVariant::fromValue(identifiers);
705  return this->connection().asyncCall(callMessage, timeout);
706  }
707 
801  inline QDBusPendingReply<> AddClientInterest(const QStringList& tokens, int timeout = -1)
802  {
803  if (!invalidationReason().isEmpty()) {
804  return QDBusPendingReply<>(QDBusMessage::createError(
805  invalidationReason(),
806  invalidationMessage()
807  ));
808  }
809 
810  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
811  this->staticInterfaceName(), QLatin1String("AddClientInterest"));
812  callMessage << QVariant::fromValue(tokens);
813  return this->connection().asyncCall(callMessage, timeout);
814  }
815 
847  inline QDBusPendingReply<> RemoveClientInterest(const QStringList& tokens, int timeout = -1)
848  {
849  if (!invalidationReason().isEmpty()) {
850  return QDBusPendingReply<>(QDBusMessage::createError(
851  invalidationReason(),
852  invalidationMessage()
853  ));
854  }
855 
856  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
857  this->staticInterfaceName(), QLatin1String("RemoveClientInterest"));
858  callMessage << QVariant::fromValue(tokens);
859  return this->connection().asyncCall(callMessage, timeout);
860  }
861 
862 Q_SIGNALS:
874  void SelfHandleChanged(uint selfHandle);
875 
891  void SelfContactChanged(uint selfHandle, const QString& selfID);
892 
936  void NewChannel(const QDBusObjectPath& objectPath, const QString& channelType, uint handleType, uint handle, bool suppressHandler);
937 
1007  void ConnectionError(const QString& error, const QVariantMap& details);
1008 
1025  void StatusChanged(uint status, uint reason);
1026 
1027 protected:
1028  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1029 };
1030 
1039 {
1040  Q_OBJECT
1041 
1042 public:
1049  static inline QLatin1String staticInterfaceName()
1050  {
1051  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Addressing1");
1052  }
1053 
1062  const QString& busName,
1063  const QString& objectPath,
1064  QObject* parent = 0
1065  );
1066 
1076  const QDBusConnection& connection,
1077  const QString& busName,
1078  const QString& objectPath,
1079  QObject* parent = 0
1080  );
1081 
1089 
1098 
1106  ConnectionInterfaceAddressingInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
1107 
1115  {
1116  return internalRequestAllProperties();
1117  }
1118 
1119 public Q_SLOTS:
1209  inline QDBusPendingReply<Tp::AddressingNormalizationMap, Tp::ContactAttributesMap> GetContactsByVCardField(const QString& field, const QStringList& addresses, const QStringList& interfaces, int timeout = -1)
1210  {
1211  if (!invalidationReason().isEmpty()) {
1212  return QDBusPendingReply<Tp::AddressingNormalizationMap, Tp::ContactAttributesMap>(QDBusMessage::createError(
1213  invalidationReason(),
1214  invalidationMessage()
1215  ));
1216  }
1217 
1218  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1219  this->staticInterfaceName(), QLatin1String("GetContactsByVCardField"));
1220  callMessage << QVariant::fromValue(field) << QVariant::fromValue(addresses) << QVariant::fromValue(interfaces);
1221  return this->connection().asyncCall(callMessage, timeout);
1222  }
1223 
1294  inline QDBusPendingReply<Tp::AddressingNormalizationMap, Tp::ContactAttributesMap> GetContactsByURI(const QStringList& URIs, const QStringList& interfaces, int timeout = -1)
1295  {
1296  if (!invalidationReason().isEmpty()) {
1297  return QDBusPendingReply<Tp::AddressingNormalizationMap, Tp::ContactAttributesMap>(QDBusMessage::createError(
1298  invalidationReason(),
1299  invalidationMessage()
1300  ));
1301  }
1302 
1303  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1304  this->staticInterfaceName(), QLatin1String("GetContactsByURI"));
1305  callMessage << QVariant::fromValue(URIs) << QVariant::fromValue(interfaces);
1306  return this->connection().asyncCall(callMessage, timeout);
1307  }
1308 
1309 protected:
1310  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1311 };
1312 
1321 {
1322  Q_OBJECT
1323 
1324 public:
1331  static inline QLatin1String staticInterfaceName()
1332  {
1333  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Aliasing");
1334  }
1335 
1344  const QString& busName,
1345  const QString& objectPath,
1346  QObject* parent = 0
1347  );
1348 
1358  const QDBusConnection& connection,
1359  const QString& busName,
1360  const QString& objectPath,
1361  QObject* parent = 0
1362  );
1363 
1371 
1380 
1388  ConnectionInterfaceAliasingInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
1389 
1397  {
1398  return internalRequestAllProperties();
1399  }
1400 
1401 public Q_SLOTS:
1417  inline QDBusPendingReply<uint> GetAliasFlags(int timeout = -1)
1418  {
1419  if (!invalidationReason().isEmpty()) {
1420  return QDBusPendingReply<uint>(QDBusMessage::createError(
1421  invalidationReason(),
1422  invalidationMessage()
1423  ));
1424  }
1425 
1426  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1427  this->staticInterfaceName(), QLatin1String("GetAliasFlags"));
1428  return this->connection().asyncCall(callMessage, timeout);
1429  }
1430 
1449  inline QDBusPendingReply<QStringList> RequestAliases(const Tp::UIntList& contacts, int timeout = -1)
1450  {
1451  if (!invalidationReason().isEmpty()) {
1452  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
1453  invalidationReason(),
1454  invalidationMessage()
1455  ));
1456  }
1457 
1458  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1459  this->staticInterfaceName(), QLatin1String("RequestAliases"));
1460  callMessage << QVariant::fromValue(contacts);
1461  return this->connection().asyncCall(callMessage, timeout);
1462  }
1463 
1486  inline QDBusPendingReply<Tp::AliasMap> GetAliases(const Tp::UIntList& contacts, int timeout = -1)
1487  {
1488  if (!invalidationReason().isEmpty()) {
1489  return QDBusPendingReply<Tp::AliasMap>(QDBusMessage::createError(
1490  invalidationReason(),
1491  invalidationMessage()
1492  ));
1493  }
1494 
1495  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1496  this->staticInterfaceName(), QLatin1String("GetAliases"));
1497  callMessage << QVariant::fromValue(contacts);
1498  return this->connection().asyncCall(callMessage, timeout);
1499  }
1500 
1520  inline QDBusPendingReply<> SetAliases(const Tp::AliasMap& aliases, int timeout = -1)
1521  {
1522  if (!invalidationReason().isEmpty()) {
1523  return QDBusPendingReply<>(QDBusMessage::createError(
1524  invalidationReason(),
1525  invalidationMessage()
1526  ));
1527  }
1528 
1529  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1530  this->staticInterfaceName(), QLatin1String("SetAliases"));
1531  callMessage << QVariant::fromValue(aliases);
1532  return this->connection().asyncCall(callMessage, timeout);
1533  }
1534 
1535 Q_SIGNALS:
1552  void AliasesChanged(const Tp::AliasPairList& aliases);
1553 
1554 protected:
1555  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1556 };
1557 
1566 {
1567  Q_OBJECT
1568 
1569 public:
1576  static inline QLatin1String staticInterfaceName()
1577  {
1578  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Anonymity");
1579  }
1580 
1589  const QString& busName,
1590  const QString& objectPath,
1591  QObject* parent = 0
1592  );
1593 
1603  const QDBusConnection& connection,
1604  const QString& busName,
1605  const QString& objectPath,
1606  QObject* parent = 0
1607  );
1608 
1616 
1625 
1633  ConnectionInterfaceAnonymityInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
1634 
1646  {
1647  return internalRequestProperty(QLatin1String("SupportedAnonymityModes"));
1648  }
1649 
1666  {
1667  return internalRequestProperty(QLatin1String("AnonymityMandatory"));
1668  }
1669 
1686  {
1687  return internalSetProperty(QLatin1String("AnonymityMandatory"), QVariant::fromValue(newValue));
1688  }
1689 
1703  {
1704  return internalRequestProperty(QLatin1String("AnonymityModes"));
1705  }
1706 
1720  {
1721  return internalSetProperty(QLatin1String("AnonymityModes"), QVariant::fromValue(newValue));
1722  }
1723 
1731  {
1732  return internalRequestAllProperties();
1733  }
1734 
1735 Q_SIGNALS:
1745  void AnonymityModesChanged(uint modes);
1746 
1747 protected:
1748  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1749 };
1750 
1759 {
1760  Q_OBJECT
1761 
1762 public:
1769  static inline QLatin1String staticInterfaceName()
1770  {
1771  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Avatars");
1772  }
1773 
1782  const QString& busName,
1783  const QString& objectPath,
1784  QObject* parent = 0
1785  );
1786 
1796  const QDBusConnection& connection,
1797  const QString& busName,
1798  const QString& objectPath,
1799  QObject* parent = 0
1800  );
1801 
1809 
1818 
1826  ConnectionInterfaceAvatarsInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
1827 
1840  {
1841  return internalRequestProperty(QLatin1String("SupportedAvatarMIMETypes"));
1842  }
1843 
1856  {
1857  return internalRequestProperty(QLatin1String("MinimumAvatarHeight"));
1858  }
1859 
1872  {
1873  return internalRequestProperty(QLatin1String("MinimumAvatarWidth"));
1874  }
1875 
1891  {
1892  return internalRequestProperty(QLatin1String("RecommendedAvatarHeight"));
1893  }
1894 
1908  {
1909  return internalRequestProperty(QLatin1String("RecommendedAvatarWidth"));
1910  }
1911 
1924  {
1925  return internalRequestProperty(QLatin1String("MaximumAvatarHeight"));
1926  }
1927 
1940  {
1941  return internalRequestProperty(QLatin1String("MaximumAvatarWidth"));
1942  }
1943 
1956  {
1957  return internalRequestProperty(QLatin1String("MaximumAvatarBytes"));
1958  }
1959 
1967  {
1968  return internalRequestAllProperties();
1969  }
1970 
1971 public Q_SLOTS:
2006  inline QDBusPendingReply<QStringList, ushort, ushort, ushort, ushort, uint> GetAvatarRequirements(int timeout = -1)
2007  {
2008  if (!invalidationReason().isEmpty()) {
2009  return QDBusPendingReply<QStringList, ushort, ushort, ushort, ushort, uint>(QDBusMessage::createError(
2010  invalidationReason(),
2011  invalidationMessage()
2012  ));
2013  }
2014 
2015  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2016  this->staticInterfaceName(), QLatin1String("GetAvatarRequirements"));
2017  return this->connection().asyncCall(callMessage, timeout);
2018  }
2019 
2041  inline QDBusPendingReply<QStringList> GetAvatarTokens(const Tp::UIntList& contacts, int timeout = -1)
2042  {
2043  if (!invalidationReason().isEmpty()) {
2044  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
2045  invalidationReason(),
2046  invalidationMessage()
2047  ));
2048  }
2049 
2050  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2051  this->staticInterfaceName(), QLatin1String("GetAvatarTokens"));
2052  callMessage << QVariant::fromValue(contacts);
2053  return this->connection().asyncCall(callMessage, timeout);
2054  }
2055 
2083  inline QDBusPendingReply<Tp::AvatarTokenMap> GetKnownAvatarTokens(const Tp::UIntList& contacts, int timeout = -1)
2084  {
2085  if (!invalidationReason().isEmpty()) {
2086  return QDBusPendingReply<Tp::AvatarTokenMap>(QDBusMessage::createError(
2087  invalidationReason(),
2088  invalidationMessage()
2089  ));
2090  }
2091 
2092  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2093  this->staticInterfaceName(), QLatin1String("GetKnownAvatarTokens"));
2094  callMessage << QVariant::fromValue(contacts);
2095  return this->connection().asyncCall(callMessage, timeout);
2096  }
2097 
2122  inline QDBusPendingReply<QByteArray, QString> RequestAvatar(uint contact, int timeout = -1)
2123  {
2124  if (!invalidationReason().isEmpty()) {
2125  return QDBusPendingReply<QByteArray, QString>(QDBusMessage::createError(
2126  invalidationReason(),
2127  invalidationMessage()
2128  ));
2129  }
2130 
2131  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2132  this->staticInterfaceName(), QLatin1String("RequestAvatar"));
2133  callMessage << QVariant::fromValue(contact);
2134  return this->connection().asyncCall(callMessage, timeout);
2135  }
2136 
2155  inline QDBusPendingReply<> RequestAvatars(const Tp::UIntList& contacts, int timeout = -1)
2156  {
2157  if (!invalidationReason().isEmpty()) {
2158  return QDBusPendingReply<>(QDBusMessage::createError(
2159  invalidationReason(),
2160  invalidationMessage()
2161  ));
2162  }
2163 
2164  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2165  this->staticInterfaceName(), QLatin1String("RequestAvatars"));
2166  callMessage << QVariant::fromValue(contacts);
2167  return this->connection().asyncCall(callMessage, timeout);
2168  }
2169 
2193  inline QDBusPendingReply<QString> SetAvatar(const QByteArray& avatar, const QString& MIMEType, int timeout = -1)
2194  {
2195  if (!invalidationReason().isEmpty()) {
2196  return QDBusPendingReply<QString>(QDBusMessage::createError(
2197  invalidationReason(),
2198  invalidationMessage()
2199  ));
2200  }
2201 
2202  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2203  this->staticInterfaceName(), QLatin1String("SetAvatar"));
2204  callMessage << QVariant::fromValue(avatar) << QVariant::fromValue(MIMEType);
2205  return this->connection().asyncCall(callMessage, timeout);
2206  }
2207 
2218  inline QDBusPendingReply<> ClearAvatar(int timeout = -1)
2219  {
2220  if (!invalidationReason().isEmpty()) {
2221  return QDBusPendingReply<>(QDBusMessage::createError(
2222  invalidationReason(),
2223  invalidationMessage()
2224  ));
2225  }
2226 
2227  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2228  this->staticInterfaceName(), QLatin1String("ClearAvatar"));
2229  return this->connection().asyncCall(callMessage, timeout);
2230  }
2231 
2232 Q_SIGNALS:
2249  void AvatarUpdated(uint contact, const QString& newAvatarToken);
2250 
2273  void AvatarRetrieved(uint contact, const QString& token, const QByteArray& avatar, const QString& type);
2274 
2275 protected:
2276  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
2277 };
2278 
2287 {
2288  Q_OBJECT
2289 
2290 public:
2297  static inline QLatin1String staticInterfaceName()
2298  {
2299  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Balance");
2300  }
2301 
2310  const QString& busName,
2311  const QString& objectPath,
2312  QObject* parent = 0
2313  );
2314 
2324  const QDBusConnection& connection,
2325  const QString& busName,
2326  const QString& objectPath,
2327  QObject* parent = 0
2328  );
2329 
2337 
2346 
2354  ConnectionInterfaceBalanceInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
2355 
2375  {
2376  return internalRequestProperty(QLatin1String("AccountBalance"));
2377  }
2378 
2397  {
2398  return internalRequestProperty(QLatin1String("ManageCreditURI"));
2399  }
2400 
2408  {
2409  return internalRequestAllProperties();
2410  }
2411 
2412 Q_SIGNALS:
2427  void BalanceChanged(const Tp::CurrencyAmount& balance);
2428 
2429 protected:
2430  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
2431 };
2432 
2441 {
2442  Q_OBJECT
2443 
2444 public:
2451  static inline QLatin1String staticInterfaceName()
2452  {
2453  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Capabilities");
2454  }
2455 
2464  const QString& busName,
2465  const QString& objectPath,
2466  QObject* parent = 0
2467  );
2468 
2478  const QDBusConnection& connection,
2479  const QString& busName,
2480  const QString& objectPath,
2481  QObject* parent = 0
2482  );
2483 
2491 
2500 
2508  ConnectionInterfaceCapabilitiesInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
2509 
2517  {
2518  return internalRequestAllProperties();
2519  }
2520 
2521 public Q_SLOTS:
2575  inline QDBusPendingReply<Tp::CapabilityPairList> AdvertiseCapabilities(const Tp::CapabilityPairList& add, const QStringList& remove, int timeout = -1)
2576  {
2577  if (!invalidationReason().isEmpty()) {
2578  return QDBusPendingReply<Tp::CapabilityPairList>(QDBusMessage::createError(
2579  invalidationReason(),
2580  invalidationMessage()
2581  ));
2582  }
2583 
2584  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2585  this->staticInterfaceName(), QLatin1String("AdvertiseCapabilities"));
2586  callMessage << QVariant::fromValue(add) << QVariant::fromValue(remove);
2587  return this->connection().asyncCall(callMessage, timeout);
2588  }
2589 
2624  inline QDBusPendingReply<Tp::ContactCapabilityList> GetCapabilities(const Tp::UIntList& handles, int timeout = -1)
2625  {
2626  if (!invalidationReason().isEmpty()) {
2627  return QDBusPendingReply<Tp::ContactCapabilityList>(QDBusMessage::createError(
2628  invalidationReason(),
2629  invalidationMessage()
2630  ));
2631  }
2632 
2633  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
2634  this->staticInterfaceName(), QLatin1String("GetCapabilities"));
2635  callMessage << QVariant::fromValue(handles);
2636  return this->connection().asyncCall(callMessage, timeout);
2637  }
2638 
2639 Q_SIGNALS:
2666  void CapabilitiesChanged(const Tp::CapabilityChangeList& caps);
2667 
2668 protected:
2669  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
2670 };
2671 
2680 {
2681  Q_OBJECT
2682 
2683 public:
2690  static inline QLatin1String staticInterfaceName()
2691  {
2692  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Cellular");
2693  }
2694 
2703  const QString& busName,
2704  const QString& objectPath,
2705  QObject* parent = 0
2706  );
2707 
2717  const QDBusConnection& connection,
2718  const QString& busName,
2719  const QString& objectPath,
2720  QObject* parent = 0
2721  );
2722 
2730 
2739 
2747  ConnectionInterfaceCellularInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
2748 
2768  {
2769  return internalRequestProperty(QLatin1String("MessageValidityPeriod"));
2770  }
2771 
2791  {
2792  return internalSetProperty(QLatin1String("MessageValidityPeriod"), QVariant::fromValue(newValue));
2793  }
2794 
2818  {
2819  return internalRequestProperty(QLatin1String("OverrideMessageServiceCentre"));
2820  }
2821 
2845  {
2846  return internalSetProperty(QLatin1String("OverrideMessageServiceCentre"), QVariant::fromValue(newValue));
2847  }
2848 
2866  {
2867  return internalRequestProperty(QLatin1String("MessageServiceCentre"));
2868  }
2869 
2887  {
2888  return internalSetProperty(QLatin1String("MessageServiceCentre"), QVariant::fromValue(newValue));
2889  }
2890 
2905  {
2906  return internalRequestProperty(QLatin1String("IMSI"));
2907  }
2908 
2928  {
2929  return internalRequestProperty(QLatin1String("MessageReducedCharacterSet"));
2930  }
2931 
2951  {
2952  return internalSetProperty(QLatin1String("MessageReducedCharacterSet"), QVariant::fromValue(newValue));
2953  }
2954 
2981  {
2982  return internalRequestProperty(QLatin1String("MessageNationalCharacterSet"));
2983  }
2984 
3011  {
3012  return internalSetProperty(QLatin1String("MessageNationalCharacterSet"), QVariant::fromValue(newValue));
3013  }
3014 
3022  {
3023  return internalRequestAllProperties();
3024  }
3025 
3026 Q_SIGNALS:
3042  void IMSIChanged(const QString& IMSI);
3043 
3044 protected:
3045  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3046 };
3047 
3056 {
3057  Q_OBJECT
3058 
3059 public:
3066  static inline QLatin1String staticInterfaceName()
3067  {
3068  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ClientTypes");
3069  }
3070 
3079  const QString& busName,
3080  const QString& objectPath,
3081  QObject* parent = 0
3082  );
3083 
3093  const QDBusConnection& connection,
3094  const QString& busName,
3095  const QString& objectPath,
3096  QObject* parent = 0
3097  );
3098 
3106 
3115 
3123  ConnectionInterfaceClientTypesInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
3124 
3132  {
3133  return internalRequestAllProperties();
3134  }
3135 
3136 public Q_SLOTS:
3165  inline QDBusPendingReply<Tp::ContactClientTypes> GetClientTypes(const Tp::UIntList& contacts, int timeout = -1)
3166  {
3167  if (!invalidationReason().isEmpty()) {
3168  return QDBusPendingReply<Tp::ContactClientTypes>(QDBusMessage::createError(
3169  invalidationReason(),
3170  invalidationMessage()
3171  ));
3172  }
3173 
3174  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3175  this->staticInterfaceName(), QLatin1String("GetClientTypes"));
3176  callMessage << QVariant::fromValue(contacts);
3177  return this->connection().asyncCall(callMessage, timeout);
3178  }
3179 
3204  inline QDBusPendingReply<QStringList> RequestClientTypes(uint contact, int timeout = -1)
3205  {
3206  if (!invalidationReason().isEmpty()) {
3207  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
3208  invalidationReason(),
3209  invalidationMessage()
3210  ));
3211  }
3212 
3213  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3214  this->staticInterfaceName(), QLatin1String("RequestClientTypes"));
3215  callMessage << QVariant::fromValue(contact);
3216  return this->connection().asyncCall(callMessage, timeout);
3217  }
3218 
3219 Q_SIGNALS:
3234  void ClientTypesUpdated(uint contact, const QStringList& clientTypes);
3235 
3236 protected:
3237  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3238 };
3239 
3248 {
3249  Q_OBJECT
3250 
3251 public:
3258  static inline QLatin1String staticInterfaceName()
3259  {
3260  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactBlocking");
3261  }
3262 
3271  const QString& busName,
3272  const QString& objectPath,
3273  QObject* parent = 0
3274  );
3275 
3285  const QDBusConnection& connection,
3286  const QString& busName,
3287  const QString& objectPath,
3288  QObject* parent = 0
3289  );
3290 
3298 
3307 
3316 
3334  {
3335  return internalRequestProperty(QLatin1String("ContactBlockingCapabilities"));
3336  }
3337 
3345  {
3346  return internalRequestAllProperties();
3347  }
3348 
3349 public Q_SLOTS:
3409  inline QDBusPendingReply<> BlockContacts(const Tp::UIntList& contacts, bool reportAbusive, int timeout = -1)
3410  {
3411  if (!invalidationReason().isEmpty()) {
3412  return QDBusPendingReply<>(QDBusMessage::createError(
3413  invalidationReason(),
3414  invalidationMessage()
3415  ));
3416  }
3417 
3418  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3419  this->staticInterfaceName(), QLatin1String("BlockContacts"));
3420  callMessage << QVariant::fromValue(contacts) << QVariant::fromValue(reportAbusive);
3421  return this->connection().asyncCall(callMessage, timeout);
3422  }
3423 
3442  inline QDBusPendingReply<> UnblockContacts(const Tp::UIntList& contacts, int timeout = -1)
3443  {
3444  if (!invalidationReason().isEmpty()) {
3445  return QDBusPendingReply<>(QDBusMessage::createError(
3446  invalidationReason(),
3447  invalidationMessage()
3448  ));
3449  }
3450 
3451  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3452  this->staticInterfaceName(), QLatin1String("UnblockContacts"));
3453  callMessage << QVariant::fromValue(contacts);
3454  return this->connection().asyncCall(callMessage, timeout);
3455  }
3456 
3477  inline QDBusPendingReply<Tp::HandleIdentifierMap> RequestBlockedContacts(int timeout = -1)
3478  {
3479  if (!invalidationReason().isEmpty()) {
3480  return QDBusPendingReply<Tp::HandleIdentifierMap>(QDBusMessage::createError(
3481  invalidationReason(),
3482  invalidationMessage()
3483  ));
3484  }
3485 
3486  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3487  this->staticInterfaceName(), QLatin1String("RequestBlockedContacts"));
3488  return this->connection().asyncCall(callMessage, timeout);
3489  }
3490 
3491 Q_SIGNALS:
3510  void BlockedContactsChanged(const Tp::HandleIdentifierMap& blockedContacts, const Tp::HandleIdentifierMap& unblockedContacts);
3511 
3512 protected:
3513  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3514 };
3515 
3524 {
3525  Q_OBJECT
3526 
3527 public:
3534  static inline QLatin1String staticInterfaceName()
3535  {
3536  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities");
3537  }
3538 
3547  const QString& busName,
3548  const QString& objectPath,
3549  QObject* parent = 0
3550  );
3551 
3561  const QDBusConnection& connection,
3562  const QString& busName,
3563  const QString& objectPath,
3564  QObject* parent = 0
3565  );
3566 
3574 
3583 
3592 
3600  {
3601  return internalRequestAllProperties();
3602  }
3603 
3604 public Q_SLOTS:
3667  inline QDBusPendingReply<> UpdateCapabilities(const Tp::HandlerCapabilitiesList& handlerCapabilities, int timeout = -1)
3668  {
3669  if (!invalidationReason().isEmpty()) {
3670  return QDBusPendingReply<>(QDBusMessage::createError(
3671  invalidationReason(),
3672  invalidationMessage()
3673  ));
3674  }
3675 
3676  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3677  this->staticInterfaceName(), QLatin1String("UpdateCapabilities"));
3678  callMessage << QVariant::fromValue(handlerCapabilities);
3679  return this->connection().asyncCall(callMessage, timeout);
3680  }
3681 
3717  inline QDBusPendingReply<Tp::ContactCapabilitiesMap> GetContactCapabilities(const Tp::UIntList& handles, int timeout = -1)
3718  {
3719  if (!invalidationReason().isEmpty()) {
3720  return QDBusPendingReply<Tp::ContactCapabilitiesMap>(QDBusMessage::createError(
3721  invalidationReason(),
3722  invalidationMessage()
3723  ));
3724  }
3725 
3726  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3727  this->staticInterfaceName(), QLatin1String("GetContactCapabilities"));
3728  callMessage << QVariant::fromValue(handles);
3729  return this->connection().asyncCall(callMessage, timeout);
3730  }
3731 
3732 Q_SIGNALS:
3753  void ContactCapabilitiesChanged(const Tp::ContactCapabilitiesMap& caps);
3754 
3755 protected:
3756  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
3757 };
3758 
3767 {
3768  Q_OBJECT
3769 
3770 public:
3777  static inline QLatin1String staticInterfaceName()
3778  {
3779  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactGroups");
3780  }
3781 
3790  const QString& busName,
3791  const QString& objectPath,
3792  QObject* parent = 0
3793  );
3794 
3804  const QDBusConnection& connection,
3805  const QString& busName,
3806  const QString& objectPath,
3807  QObject* parent = 0
3808  );
3809 
3817 
3826 
3834  ConnectionInterfaceContactGroupsInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
3835 
3853  {
3854  return internalRequestProperty(QLatin1String("DisjointGroups"));
3855  }
3856 
3870  {
3871  return internalRequestProperty(QLatin1String("GroupStorage"));
3872  }
3873 
3898  {
3899  return internalRequestProperty(QLatin1String("Groups"));
3900  }
3901 
3909  {
3910  return internalRequestAllProperties();
3911  }
3912 
3913 public Q_SLOTS:
3962  inline QDBusPendingReply<> SetContactGroups(uint contact, const QStringList& groups, int timeout = -1)
3963  {
3964  if (!invalidationReason().isEmpty()) {
3965  return QDBusPendingReply<>(QDBusMessage::createError(
3966  invalidationReason(),
3967  invalidationMessage()
3968  ));
3969  }
3970 
3971  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
3972  this->staticInterfaceName(), QLatin1String("SetContactGroups"));
3973  callMessage << QVariant::fromValue(contact) << QVariant::fromValue(groups);
3974  return this->connection().asyncCall(callMessage, timeout);
3975  }
3976 
4024  inline QDBusPendingReply<> SetGroupMembers(const QString& group, const Tp::UIntList& members, int timeout = -1)
4025  {
4026  if (!invalidationReason().isEmpty()) {
4027  return QDBusPendingReply<>(QDBusMessage::createError(
4028  invalidationReason(),
4029  invalidationMessage()
4030  ));
4031  }
4032 
4033  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4034  this->staticInterfaceName(), QLatin1String("SetGroupMembers"));
4035  callMessage << QVariant::fromValue(group) << QVariant::fromValue(members);
4036  return this->connection().asyncCall(callMessage, timeout);
4037  }
4038 
4079  inline QDBusPendingReply<> AddToGroup(const QString& group, const Tp::UIntList& members, int timeout = -1)
4080  {
4081  if (!invalidationReason().isEmpty()) {
4082  return QDBusPendingReply<>(QDBusMessage::createError(
4083  invalidationReason(),
4084  invalidationMessage()
4085  ));
4086  }
4087 
4088  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4089  this->staticInterfaceName(), QLatin1String("AddToGroup"));
4090  callMessage << QVariant::fromValue(group) << QVariant::fromValue(members);
4091  return this->connection().asyncCall(callMessage, timeout);
4092  }
4093 
4133  inline QDBusPendingReply<> RemoveFromGroup(const QString& group, const Tp::UIntList& members, int timeout = -1)
4134  {
4135  if (!invalidationReason().isEmpty()) {
4136  return QDBusPendingReply<>(QDBusMessage::createError(
4137  invalidationReason(),
4138  invalidationMessage()
4139  ));
4140  }
4141 
4142  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4143  this->staticInterfaceName(), QLatin1String("RemoveFromGroup"));
4144  callMessage << QVariant::fromValue(group) << QVariant::fromValue(members);
4145  return this->connection().asyncCall(callMessage, timeout);
4146  }
4147 
4176  inline QDBusPendingReply<> RemoveGroup(const QString& group, int timeout = -1)
4177  {
4178  if (!invalidationReason().isEmpty()) {
4179  return QDBusPendingReply<>(QDBusMessage::createError(
4180  invalidationReason(),
4181  invalidationMessage()
4182  ));
4183  }
4184 
4185  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4186  this->staticInterfaceName(), QLatin1String("RemoveGroup"));
4187  callMessage << QVariant::fromValue(group);
4188  return this->connection().asyncCall(callMessage, timeout);
4189  }
4190 
4230  inline QDBusPendingReply<> RenameGroup(const QString& oldName, const QString& newName, int timeout = -1)
4231  {
4232  if (!invalidationReason().isEmpty()) {
4233  return QDBusPendingReply<>(QDBusMessage::createError(
4234  invalidationReason(),
4235  invalidationMessage()
4236  ));
4237  }
4238 
4239  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4240  this->staticInterfaceName(), QLatin1String("RenameGroup"));
4241  callMessage << QVariant::fromValue(oldName) << QVariant::fromValue(newName);
4242  return this->connection().asyncCall(callMessage, timeout);
4243  }
4244 
4245 Q_SIGNALS:
4263  void GroupsChanged(const Tp::UIntList& contact, const QStringList& added, const QStringList& removed);
4264 
4275  void GroupsCreated(const QStringList& names);
4276 
4324  void GroupRenamed(const QString& oldName, const QString& newName);
4325 
4352  void GroupsRemoved(const QStringList& names);
4353 
4354 protected:
4355  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
4356 };
4357 
4366 {
4367  Q_OBJECT
4368 
4369 public:
4376  static inline QLatin1String staticInterfaceName()
4377  {
4378  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactInfo");
4379  }
4380 
4389  const QString& busName,
4390  const QString& objectPath,
4391  QObject* parent = 0
4392  );
4393 
4403  const QDBusConnection& connection,
4404  const QString& busName,
4405  const QString& objectPath,
4406  QObject* parent = 0
4407  );
4408 
4416 
4425 
4433  ConnectionInterfaceContactInfoInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
4434 
4459  {
4460  return internalRequestProperty(QLatin1String("ContactInfoFlags"));
4461  }
4462 
4521  {
4522  return internalRequestProperty(QLatin1String("SupportedFields"));
4523  }
4524 
4532  {
4533  return internalRequestAllProperties();
4534  }
4535 
4536 public Q_SLOTS:
4559  inline QDBusPendingReply<Tp::ContactInfoMap> GetContactInfo(const Tp::UIntList& contacts, int timeout = -1)
4560  {
4561  if (!invalidationReason().isEmpty()) {
4562  return QDBusPendingReply<Tp::ContactInfoMap>(QDBusMessage::createError(
4563  invalidationReason(),
4564  invalidationMessage()
4565  ));
4566  }
4567 
4568  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4569  this->staticInterfaceName(), QLatin1String("GetContactInfo"));
4570  callMessage << QVariant::fromValue(contacts);
4571  return this->connection().asyncCall(callMessage, timeout);
4572  }
4573 
4593  inline QDBusPendingReply<> RefreshContactInfo(const Tp::UIntList& contacts, int timeout = -1)
4594  {
4595  if (!invalidationReason().isEmpty()) {
4596  return QDBusPendingReply<>(QDBusMessage::createError(
4597  invalidationReason(),
4598  invalidationMessage()
4599  ));
4600  }
4601 
4602  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4603  this->staticInterfaceName(), QLatin1String("RefreshContactInfo"));
4604  callMessage << QVariant::fromValue(contacts);
4605  return this->connection().asyncCall(callMessage, timeout);
4606  }
4607 
4629  inline QDBusPendingReply<Tp::ContactInfoFieldList> RequestContactInfo(uint contact, int timeout = -1)
4630  {
4631  if (!invalidationReason().isEmpty()) {
4632  return QDBusPendingReply<Tp::ContactInfoFieldList>(QDBusMessage::createError(
4633  invalidationReason(),
4634  invalidationMessage()
4635  ));
4636  }
4637 
4638  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4639  this->staticInterfaceName(), QLatin1String("RequestContactInfo"));
4640  callMessage << QVariant::fromValue(contact);
4641  return this->connection().asyncCall(callMessage, timeout);
4642  }
4643 
4661  inline QDBusPendingReply<> SetContactInfo(const Tp::ContactInfoFieldList& contactInfo, int timeout = -1)
4662  {
4663  if (!invalidationReason().isEmpty()) {
4664  return QDBusPendingReply<>(QDBusMessage::createError(
4665  invalidationReason(),
4666  invalidationMessage()
4667  ));
4668  }
4669 
4670  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
4671  this->staticInterfaceName(), QLatin1String("SetContactInfo"));
4672  callMessage << QVariant::fromValue(contactInfo);
4673  return this->connection().asyncCall(callMessage, timeout);
4674  }
4675 
4676 Q_SIGNALS:
4693  void ContactInfoChanged(uint contact, const Tp::ContactInfoFieldList& contactInfo);
4694 
4695 protected:
4696  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
4697 };
4698 
4707 {
4708  Q_OBJECT
4709 
4710 public:
4717  static inline QLatin1String staticInterfaceName()
4718  {
4719  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ContactList");
4720  }
4721 
4730  const QString& busName,
4731  const QString& objectPath,
4732  QObject* parent = 0
4733  );
4734 
4744  const QDBusConnection& connection,
4745  const QString& busName,
4746  const QString& objectPath,
4747  QObject* parent = 0
4748  );
4749 
4757 
4766 
4774  ConnectionInterfaceContactListInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
4775 
4787  {
4788  return internalRequestProperty(QLatin1String("ContactListState"));
4789  }
4790 
4851  {
4852  return internalRequestProperty(QLatin1String("ContactListPersists"));
4853  }
4854 
4884  {
4885  return internalRequestProperty(QLatin1String("CanChangeContactList"));
4886  }
4887 
4917  {
4918  return internalRequestProperty(QLatin1String("RequestUsesMessage"));
4919  }
4920 
4953  {
4954  return internalRequestProperty(QLatin1String("DownloadAtConnection"));
4955  }
4956 
4964  {
4965  return internalRequestAllProperties();
4966  }
4967 
4968 public Q_SLOTS:
5040  inline QDBusPendingReply<Tp::ContactAttributesMap> GetContactListAttributes(const QStringList& interfaces, bool hold, int timeout = -1)
5041  {
5042  if (!invalidationReason().isEmpty()) {
5043  return QDBusPendingReply<Tp::ContactAttributesMap>(QDBusMessage::createError(
5044  invalidationReason(),
5045  invalidationMessage()
5046  ));
5047  }
5048 
5049  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5050  this->staticInterfaceName(), QLatin1String("GetContactListAttributes"));
5051  callMessage << QVariant::fromValue(interfaces) << QVariant::fromValue(hold);
5052  return this->connection().asyncCall(callMessage, timeout);
5053  }
5054 
5165  inline QDBusPendingReply<> RequestSubscription(const Tp::UIntList& contacts, const QString& message, int timeout = -1)
5166  {
5167  if (!invalidationReason().isEmpty()) {
5168  return QDBusPendingReply<>(QDBusMessage::createError(
5169  invalidationReason(),
5170  invalidationMessage()
5171  ));
5172  }
5173 
5174  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5175  this->staticInterfaceName(), QLatin1String("RequestSubscription"));
5176  callMessage << QVariant::fromValue(contacts) << QVariant::fromValue(message);
5177  return this->connection().asyncCall(callMessage, timeout);
5178  }
5179 
5251  inline QDBusPendingReply<> AuthorizePublication(const Tp::UIntList& contacts, int timeout = -1)
5252  {
5253  if (!invalidationReason().isEmpty()) {
5254  return QDBusPendingReply<>(QDBusMessage::createError(
5255  invalidationReason(),
5256  invalidationMessage()
5257  ));
5258  }
5259 
5260  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5261  this->staticInterfaceName(), QLatin1String("AuthorizePublication"));
5262  callMessage << QVariant::fromValue(contacts);
5263  return this->connection().asyncCall(callMessage, timeout);
5264  }
5265 
5315  inline QDBusPendingReply<> RemoveContacts(const Tp::UIntList& contacts, int timeout = -1)
5316  {
5317  if (!invalidationReason().isEmpty()) {
5318  return QDBusPendingReply<>(QDBusMessage::createError(
5319  invalidationReason(),
5320  invalidationMessage()
5321  ));
5322  }
5323 
5324  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5325  this->staticInterfaceName(), QLatin1String("RemoveContacts"));
5326  callMessage << QVariant::fromValue(contacts);
5327  return this->connection().asyncCall(callMessage, timeout);
5328  }
5329 
5366  inline QDBusPendingReply<> Unsubscribe(const Tp::UIntList& contacts, int timeout = -1)
5367  {
5368  if (!invalidationReason().isEmpty()) {
5369  return QDBusPendingReply<>(QDBusMessage::createError(
5370  invalidationReason(),
5371  invalidationMessage()
5372  ));
5373  }
5374 
5375  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5376  this->staticInterfaceName(), QLatin1String("Unsubscribe"));
5377  callMessage << QVariant::fromValue(contacts);
5378  return this->connection().asyncCall(callMessage, timeout);
5379  }
5380 
5417  inline QDBusPendingReply<> Unpublish(const Tp::UIntList& contacts, int timeout = -1)
5418  {
5419  if (!invalidationReason().isEmpty()) {
5420  return QDBusPendingReply<>(QDBusMessage::createError(
5421  invalidationReason(),
5422  invalidationMessage()
5423  ));
5424  }
5425 
5426  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5427  this->staticInterfaceName(), QLatin1String("Unpublish"));
5428  callMessage << QVariant::fromValue(contacts);
5429  return this->connection().asyncCall(callMessage, timeout);
5430  }
5431 
5446  inline QDBusPendingReply<> Download(int timeout = -1)
5447  {
5448  if (!invalidationReason().isEmpty()) {
5449  return QDBusPendingReply<>(QDBusMessage::createError(
5450  invalidationReason(),
5451  invalidationMessage()
5452  ));
5453  }
5454 
5455  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5456  this->staticInterfaceName(), QLatin1String("Download"));
5457  return this->connection().asyncCall(callMessage, timeout);
5458  }
5459 
5460 Q_SIGNALS:
5470  void ContactListStateChanged(uint contactListState);
5471 
5522  void ContactsChangedWithID(const Tp::ContactSubscriptionMap& changes, const Tp::HandleIdentifierMap& identifiers, const Tp::HandleIdentifierMap& removals);
5523 
5546  void ContactsChanged(const Tp::ContactSubscriptionMap& changes, const Tp::UIntList& removals);
5547 
5548 protected:
5549  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
5550 };
5551 
5560 {
5561  Q_OBJECT
5562 
5563 public:
5570  static inline QLatin1String staticInterfaceName()
5571  {
5572  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Contacts");
5573  }
5574 
5583  const QString& busName,
5584  const QString& objectPath,
5585  QObject* parent = 0
5586  );
5587 
5597  const QDBusConnection& connection,
5598  const QString& busName,
5599  const QString& objectPath,
5600  QObject* parent = 0
5601  );
5602 
5610 
5619 
5627  ConnectionInterfaceContactsInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
5628 
5640  {
5641  return internalRequestProperty(QLatin1String("ContactAttributeInterfaces"));
5642  }
5643 
5651  {
5652  return internalRequestAllProperties();
5653  }
5654 
5655 public Q_SLOTS:
5738  inline QDBusPendingReply<Tp::ContactAttributesMap> GetContactAttributes(const Tp::UIntList& handles, const QStringList& interfaces, bool hold, int timeout = -1)
5739  {
5740  if (!invalidationReason().isEmpty()) {
5741  return QDBusPendingReply<Tp::ContactAttributesMap>(QDBusMessage::createError(
5742  invalidationReason(),
5743  invalidationMessage()
5744  ));
5745  }
5746 
5747  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5748  this->staticInterfaceName(), QLatin1String("GetContactAttributes"));
5749  callMessage << QVariant::fromValue(handles) << QVariant::fromValue(interfaces) << QVariant::fromValue(hold);
5750  return this->connection().asyncCall(callMessage, timeout);
5751  }
5752 
5801  inline QDBusPendingReply<uint, QVariantMap> GetContactByID(const QString& identifier, const QStringList& interfaces, int timeout = -1)
5802  {
5803  if (!invalidationReason().isEmpty()) {
5804  return QDBusPendingReply<uint, QVariantMap>(QDBusMessage::createError(
5805  invalidationReason(),
5806  invalidationMessage()
5807  ));
5808  }
5809 
5810  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
5811  this->staticInterfaceName(), QLatin1String("GetContactByID"));
5812  callMessage << QVariant::fromValue(identifier) << QVariant::fromValue(interfaces);
5813  return this->connection().asyncCall(callMessage, timeout);
5814  }
5815 
5816 protected:
5817  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
5818 };
5819 
5828 {
5829  Q_OBJECT
5830 
5831 public:
5838  static inline QLatin1String staticInterfaceName()
5839  {
5840  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Location");
5841  }
5842 
5851  const QString& busName,
5852  const QString& objectPath,
5853  QObject* parent = 0
5854  );
5855 
5865  const QDBusConnection& connection,
5866  const QString& busName,
5867  const QString& objectPath,
5868  QObject* parent = 0
5869  );
5870 
5878 
5887 
5895  ConnectionInterfaceLocationInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
5896 
5907  {
5908  return internalRequestProperty(QLatin1String("LocationAccessControlTypes"));
5909  }
5910 
5924  {
5925  return internalRequestProperty(QLatin1String("LocationAccessControl"));
5926  }
5927 
5941  {
5942  return internalSetProperty(QLatin1String("LocationAccessControl"), QVariant::fromValue(newValue));
5943  }
5944 
5959  {
5960  return internalRequestProperty(QLatin1String("SupportedLocationFeatures"));
5961  }
5962 
5970  {
5971  return internalRequestAllProperties();
5972  }
5973 
5974 public Q_SLOTS:
6015  inline QDBusPendingReply<Tp::ContactLocations> GetLocations(const Tp::UIntList& contacts, int timeout = -1)
6016  {
6017  if (!invalidationReason().isEmpty()) {
6018  return QDBusPendingReply<Tp::ContactLocations>(QDBusMessage::createError(
6019  invalidationReason(),
6020  invalidationMessage()
6021  ));
6022  }
6023 
6024  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6025  this->staticInterfaceName(), QLatin1String("GetLocations"));
6026  callMessage << QVariant::fromValue(contacts);
6027  return this->connection().asyncCall(callMessage, timeout);
6028  }
6029 
6054  inline QDBusPendingReply<QVariantMap> RequestLocation(uint contact, int timeout = -1)
6055  {
6056  if (!invalidationReason().isEmpty()) {
6057  return QDBusPendingReply<QVariantMap>(QDBusMessage::createError(
6058  invalidationReason(),
6059  invalidationMessage()
6060  ));
6061  }
6062 
6063  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6064  this->staticInterfaceName(), QLatin1String("RequestLocation"));
6065  callMessage << QVariant::fromValue(contact);
6066  return this->connection().asyncCall(callMessage, timeout);
6067  }
6068 
6090  inline QDBusPendingReply<> SetLocation(const QVariantMap& location, int timeout = -1)
6091  {
6092  if (!invalidationReason().isEmpty()) {
6093  return QDBusPendingReply<>(QDBusMessage::createError(
6094  invalidationReason(),
6095  invalidationMessage()
6096  ));
6097  }
6098 
6099  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6100  this->staticInterfaceName(), QLatin1String("SetLocation"));
6101  callMessage << QVariant::fromValue(location);
6102  return this->connection().asyncCall(callMessage, timeout);
6103  }
6104 
6105 Q_SIGNALS:
6120  void LocationUpdated(uint contact, const QVariantMap& location);
6121 
6122 protected:
6123  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6124 };
6125 
6134 {
6135  Q_OBJECT
6136 
6137 public:
6144  static inline QLatin1String staticInterfaceName()
6145  {
6146  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.MailNotification");
6147  }
6148 
6157  const QString& busName,
6158  const QString& objectPath,
6159  QObject* parent = 0
6160  );
6161 
6171  const QDBusConnection& connection,
6172  const QString& busName,
6173  const QString& objectPath,
6174  QObject* parent = 0
6175  );
6176 
6184 
6193 
6202 
6218  {
6219  return internalRequestProperty(QLatin1String("MailNotificationFlags"));
6220  }
6221 
6247  {
6248  return internalRequestProperty(QLatin1String("UnreadMailCount"));
6249  }
6250 
6268  {
6269  return internalRequestProperty(QLatin1String("UnreadMails"));
6270  }
6271 
6287  {
6288  return internalRequestProperty(QLatin1String("MailAddress"));
6289  }
6290 
6298  {
6299  return internalRequestAllProperties();
6300  }
6301 
6302 public Q_SLOTS:
6326  inline QDBusPendingReply<Tp::MailURL> RequestInboxURL(int timeout = -1)
6327  {
6328  if (!invalidationReason().isEmpty()) {
6329  return QDBusPendingReply<Tp::MailURL>(QDBusMessage::createError(
6330  invalidationReason(),
6331  invalidationMessage()
6332  ));
6333  }
6334 
6335  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6336  this->staticInterfaceName(), QLatin1String("RequestInboxURL"));
6337  return this->connection().asyncCall(callMessage, timeout);
6338  }
6339 
6369  inline QDBusPendingReply<Tp::MailURL> RequestMailURL(const QString& ID, const QDBusVariant& URLData, int timeout = -1)
6370  {
6371  if (!invalidationReason().isEmpty()) {
6372  return QDBusPendingReply<Tp::MailURL>(QDBusMessage::createError(
6373  invalidationReason(),
6374  invalidationMessage()
6375  ));
6376  }
6377 
6378  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6379  this->staticInterfaceName(), QLatin1String("RequestMailURL"));
6380  callMessage << QVariant::fromValue(ID) << QVariant::fromValue(URLData);
6381  return this->connection().asyncCall(callMessage, timeout);
6382  }
6383 
6384 Q_SIGNALS:
6407  void MailsReceived(const Tp::MailList& mails);
6408 
6450  void UnreadMailsChanged(uint count, const Tp::MailList& mailsAdded, const QStringList& mailsRemoved);
6451 
6452 protected:
6453  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6454 };
6455 
6464 {
6465  Q_OBJECT
6466 
6467 public:
6474  static inline QLatin1String staticInterfaceName()
6475  {
6476  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.PowerSaving");
6477  }
6478 
6487  const QString& busName,
6488  const QString& objectPath,
6489  QObject* parent = 0
6490  );
6491 
6501  const QDBusConnection& connection,
6502  const QString& busName,
6503  const QString& objectPath,
6504  QObject* parent = 0
6505  );
6506 
6514 
6523 
6531  ConnectionInterfacePowerSavingInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
6532 
6549  {
6550  return internalRequestProperty(QLatin1String("PowerSavingActive"));
6551  }
6552 
6560  {
6561  return internalRequestAllProperties();
6562  }
6563 
6564 public Q_SLOTS:
6598  inline QDBusPendingReply<> SetPowerSaving(bool activate, int timeout = -1)
6599  {
6600  if (!invalidationReason().isEmpty()) {
6601  return QDBusPendingReply<>(QDBusMessage::createError(
6602  invalidationReason(),
6603  invalidationMessage()
6604  ));
6605  }
6606 
6607  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6608  this->staticInterfaceName(), QLatin1String("SetPowerSaving"));
6609  callMessage << QVariant::fromValue(activate);
6610  return this->connection().asyncCall(callMessage, timeout);
6611  }
6612 
6613 Q_SIGNALS:
6626  void PowerSavingChanged(bool active);
6627 
6628 protected:
6629  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
6630 };
6631 
6640 {
6641  Q_OBJECT
6642 
6643 public:
6650  static inline QLatin1String staticInterfaceName()
6651  {
6652  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Presence");
6653  }
6654 
6663  const QString& busName,
6664  const QString& objectPath,
6665  QObject* parent = 0
6666  );
6667 
6677  const QDBusConnection& connection,
6678  const QString& busName,
6679  const QString& objectPath,
6680  QObject* parent = 0
6681  );
6682 
6690 
6699 
6707  ConnectionInterfacePresenceInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
6708 
6716  {
6717  return internalRequestAllProperties();
6718  }
6719 
6720 public Q_SLOTS:
6742  inline QDBusPendingReply<> AddStatus(const QString& status, const QVariantMap& parameters, int timeout = -1)
6743  {
6744  if (!invalidationReason().isEmpty()) {
6745  return QDBusPendingReply<>(QDBusMessage::createError(
6746  invalidationReason(),
6747  invalidationMessage()
6748  ));
6749  }
6750 
6751  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6752  this->staticInterfaceName(), QLatin1String("AddStatus"));
6753  callMessage << QVariant::fromValue(status) << QVariant::fromValue(parameters);
6754  return this->connection().asyncCall(callMessage, timeout);
6755  }
6756 
6770  inline QDBusPendingReply<> ClearStatus(int timeout = -1)
6771  {
6772  if (!invalidationReason().isEmpty()) {
6773  return QDBusPendingReply<>(QDBusMessage::createError(
6774  invalidationReason(),
6775  invalidationMessage()
6776  ));
6777  }
6778 
6779  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6780  this->staticInterfaceName(), QLatin1String("ClearStatus"));
6781  return this->connection().asyncCall(callMessage, timeout);
6782  }
6783 
6807  inline QDBusPendingReply<Tp::ContactPresences> GetPresence(const Tp::UIntList& contacts, int timeout = -1)
6808  {
6809  if (!invalidationReason().isEmpty()) {
6810  return QDBusPendingReply<Tp::ContactPresences>(QDBusMessage::createError(
6811  invalidationReason(),
6812  invalidationMessage()
6813  ));
6814  }
6815 
6816  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6817  this->staticInterfaceName(), QLatin1String("GetPresence"));
6818  callMessage << QVariant::fromValue(contacts);
6819  return this->connection().asyncCall(callMessage, timeout);
6820  }
6821 
6843  inline QDBusPendingReply<Tp::StatusSpecMap> GetStatuses(int timeout = -1)
6844  {
6845  if (!invalidationReason().isEmpty()) {
6846  return QDBusPendingReply<Tp::StatusSpecMap>(QDBusMessage::createError(
6847  invalidationReason(),
6848  invalidationMessage()
6849  ));
6850  }
6851 
6852  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6853  this->staticInterfaceName(), QLatin1String("GetStatuses"));
6854  return this->connection().asyncCall(callMessage, timeout);
6855  }
6856 
6875  inline QDBusPendingReply<> RemoveStatus(const QString& status, int timeout = -1)
6876  {
6877  if (!invalidationReason().isEmpty()) {
6878  return QDBusPendingReply<>(QDBusMessage::createError(
6879  invalidationReason(),
6880  invalidationMessage()
6881  ));
6882  }
6883 
6884  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6885  this->staticInterfaceName(), QLatin1String("RemoveStatus"));
6886  callMessage << QVariant::fromValue(status);
6887  return this->connection().asyncCall(callMessage, timeout);
6888  }
6889 
6908  inline QDBusPendingReply<> RequestPresence(const Tp::UIntList& contacts, int timeout = -1)
6909  {
6910  if (!invalidationReason().isEmpty()) {
6911  return QDBusPendingReply<>(QDBusMessage::createError(
6912  invalidationReason(),
6913  invalidationMessage()
6914  ));
6915  }
6916 
6917  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6918  this->staticInterfaceName(), QLatin1String("RequestPresence"));
6919  callMessage << QVariant::fromValue(contacts);
6920  return this->connection().asyncCall(callMessage, timeout);
6921  }
6922 
6938  inline QDBusPendingReply<> SetLastActivityTime(uint time, int timeout = -1)
6939  {
6940  if (!invalidationReason().isEmpty()) {
6941  return QDBusPendingReply<>(QDBusMessage::createError(
6942  invalidationReason(),
6943  invalidationMessage()
6944  ));
6945  }
6946 
6947  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
6948  this->staticInterfaceName(), QLatin1String("SetLastActivityTime"));
6949  callMessage << QVariant::fromValue(time);
6950  return this->connection().asyncCall(callMessage, timeout);
6951  }
6952 
6990  inline QDBusPendingReply<> SetStatus(const Tp::MultipleStatusMap& statuses, int timeout = -1)
6991  {
6992  if (!invalidationReason().isEmpty()) {
6993  return QDBusPendingReply<>(QDBusMessage::createError(
6994  invalidationReason(),
6995  invalidationMessage()
6996  ));
6997  }
6998 
6999  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7000  this->staticInterfaceName(), QLatin1String("SetStatus"));
7001  callMessage << QVariant::fromValue(statuses);
7002  return this->connection().asyncCall(callMessage, timeout);
7003  }
7004 
7005 Q_SIGNALS:
7022  void PresenceUpdate(const Tp::ContactPresences& presence);
7023 
7024 protected:
7025  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
7026 };
7027 
7036 {
7037  Q_OBJECT
7038 
7039 public:
7046  static inline QLatin1String staticInterfaceName()
7047  {
7048  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Requests");
7049  }
7050 
7059  const QString& busName,
7060  const QString& objectPath,
7061  QObject* parent = 0
7062  );
7063 
7073  const QDBusConnection& connection,
7074  const QString& busName,
7075  const QString& objectPath,
7076  QObject* parent = 0
7077  );
7078 
7086 
7095 
7103  ConnectionInterfaceRequestsInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
7104 
7116  {
7117  return internalRequestProperty(QLatin1String("Channels"));
7118  }
7119 
7150  {
7151  return internalRequestProperty(QLatin1String("RequestableChannelClasses"));
7152  }
7153 
7161  {
7162  return internalRequestAllProperties();
7163  }
7164 
7165 public Q_SLOTS:
7247  inline QDBusPendingReply<QDBusObjectPath, QVariantMap> CreateChannel(const QVariantMap& request, int timeout = -1)
7248  {
7249  if (!invalidationReason().isEmpty()) {
7250  return QDBusPendingReply<QDBusObjectPath, QVariantMap>(QDBusMessage::createError(
7251  invalidationReason(),
7252  invalidationMessage()
7253  ));
7254  }
7255 
7256  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7257  this->staticInterfaceName(), QLatin1String("CreateChannel"));
7258  callMessage << QVariant::fromValue(request);
7259  return this->connection().asyncCall(callMessage, timeout);
7260  }
7261 
7326  inline QDBusPendingReply<bool, QDBusObjectPath, QVariantMap> EnsureChannel(const QVariantMap& request, int timeout = -1)
7327  {
7328  if (!invalidationReason().isEmpty()) {
7329  return QDBusPendingReply<bool, QDBusObjectPath, QVariantMap>(QDBusMessage::createError(
7330  invalidationReason(),
7331  invalidationMessage()
7332  ));
7333  }
7334 
7335  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7336  this->staticInterfaceName(), QLatin1String("EnsureChannel"));
7337  callMessage << QVariant::fromValue(request);
7338  return this->connection().asyncCall(callMessage, timeout);
7339  }
7340 
7341 Q_SIGNALS:
7385  void NewChannels(const Tp::ChannelDetailsList& channels);
7386 
7399  void ChannelClosed(const QDBusObjectPath& removed);
7400 
7401 protected:
7402  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
7403 };
7404 
7413 {
7414  Q_OBJECT
7415 
7416 public:
7423  static inline QLatin1String staticInterfaceName()
7424  {
7425  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.ServicePoint");
7426  }
7427 
7436  const QString& busName,
7437  const QString& objectPath,
7438  QObject* parent = 0
7439  );
7440 
7450  const QDBusConnection& connection,
7451  const QString& busName,
7452  const QString& objectPath,
7453  QObject* parent = 0
7454  );
7455 
7463 
7472 
7480  ConnectionInterfaceServicePointInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
7481 
7494  {
7495  return internalRequestProperty(QLatin1String("KnownServicePoints"));
7496  }
7497 
7505  {
7506  return internalRequestAllProperties();
7507  }
7508 
7509 Q_SIGNALS:
7523  void ServicePointsChanged(const Tp::ServicePointInfoList& servicePoints);
7524 
7525 protected:
7526  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
7527 };
7528 
7537 {
7538  Q_OBJECT
7539 
7540 public:
7547  static inline QLatin1String staticInterfaceName()
7548  {
7549  return QLatin1String("org.freedesktop.Telepathy.Connection.Interface.SimplePresence");
7550  }
7551 
7560  const QString& busName,
7561  const QString& objectPath,
7562  QObject* parent = 0
7563  );
7564 
7574  const QDBusConnection& connection,
7575  const QString& busName,
7576  const QString& objectPath,
7577  QObject* parent = 0
7578  );
7579 
7587 
7596 
7604  ConnectionInterfaceSimplePresenceInterface(const Tp::Client::ConnectionInterface& mainInterface, QObject* parent);
7605 
7648  {
7649  return internalRequestProperty(QLatin1String("Statuses"));
7650  }
7651 
7697  {
7698  return internalRequestProperty(QLatin1String("MaximumStatusMessageLength"));
7699  }
7700 
7708  {
7709  return internalRequestAllProperties();
7710  }
7711 
7712 public Q_SLOTS:
7776  inline QDBusPendingReply<> SetPresence(const QString& status, const QString& statusMessage, int timeout = -1)
7777  {
7778  if (!invalidationReason().isEmpty()) {
7779  return QDBusPendingReply<>(QDBusMessage::createError(
7780  invalidationReason(),
7781  invalidationMessage()
7782  ));
7783  }
7784 
7785  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7786  this->staticInterfaceName(), QLatin1String("SetPresence"));
7787  callMessage << QVariant::fromValue(status) << QVariant::fromValue(statusMessage);
7788  return this->connection().asyncCall(callMessage, timeout);
7789  }
7790 
7822  inline QDBusPendingReply<Tp::SimpleContactPresences> GetPresences(const Tp::UIntList& contacts, int timeout = -1)
7823  {
7824  if (!invalidationReason().isEmpty()) {
7825  return QDBusPendingReply<Tp::SimpleContactPresences>(QDBusMessage::createError(
7826  invalidationReason(),
7827  invalidationMessage()
7828  ));
7829  }
7830 
7831  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
7832  this->staticInterfaceName(), QLatin1String("GetPresences"));
7833  callMessage << QVariant::fromValue(contacts);
7834  return this->connection().asyncCall(callMessage, timeout);
7835  }
7836 
7837 Q_SIGNALS:
7850  void PresencesChanged(const Tp::SimpleContactPresences& presence);
7851 
7852 protected:
7853  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
7854 };
7855 }
7856 }
7857 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterface*)
7858 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceAddressingInterface*)
7859 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceAliasingInterface*)
7860 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceAnonymityInterface*)
7861 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceAvatarsInterface*)
7862 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceBalanceInterface*)
7863 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceCapabilitiesInterface*)
7864 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceCellularInterface*)
7865 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceClientTypesInterface*)
7866 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceContactBlockingInterface*)
7867 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceContactCapabilitiesInterface*)
7868 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceContactGroupsInterface*)
7869 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceContactInfoInterface*)
7870 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceContactListInterface*)
7871 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceContactsInterface*)
7872 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceLocationInterface*)
7873 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceMailNotificationInterface*)
7874 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfacePowerSavingInterface*)
7875 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfacePresenceInterface*)
7876 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceRequestsInterface*)
7877 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceServicePointInterface*)
7878 Q_DECLARE_METATYPE(Tp::Client::ConnectionInterfaceSimplePresenceInterface*)
QList< ChannelDetails > ChannelDetailsList
Definition: build/TelepathyQt/_gen/types.h:820
Tp::PendingVariant * requestPropertyRecommendedAvatarHeight() const
Definition: cli-connection.h:1890
QDBusPendingReply< QStringList, ushort, ushort, ushort, ushort, uint > GetAvatarRequirements(int timeout=-1)
Definition: cli-connection.h:2006
Tp::PendingVariant * requestPropertyPowerSavingActive() const
Definition: cli-connection.h:6548
QList< ContactInfoField > ContactInfoFieldList
Definition: build/TelepathyQt/_gen/types.h:1188
Tp::PendingVariant * requestPropertyContactAttributeInterfaces() const
Definition: cli-connection.h:5639
QDBusPendingReply< Tp::ContactInfoFieldList > RequestContactInfo(uint contact, int timeout=-1)
Definition: cli-connection.h:4629
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:7547
Tp::PendingOperation * setPropertyMessageNationalCharacterSet(QString newValue)
Definition: cli-connection.h:3010
QDBusPendingReply AddStatus(const QString &status, const QVariantMap &parameters, int timeout=-1)
Definition: cli-connection.h:6742
Tp::PendingVariant * requestPropertySelfID() const
Definition: cli-connection.h:163
Tp::PendingVariant * requestPropertyStatuses() const
Definition: cli-connection.h:7647
QDBusPendingReply RemoveFromGroup(const QString &group, const Tp::UIntList &members, int timeout=-1)
Definition: cli-connection.h:4133
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:3534
QDBusPendingReply< Tp::SimpleContactPresences > GetPresences(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:7822
Tp::PendingVariant * requestPropertyContactListState() const
Definition: cli-connection.h:4786
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:2690
QList< CapabilityChange > CapabilityChangeList
Definition: build/TelepathyQt/_gen/types.h:522
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:3258
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:3131
Definition: build/TelepathyQt/_gen/types.h:3917
QDBusPendingReply RemoveStatus(const QString &status, int timeout=-1)
Definition: cli-connection.h:6875
QDBusPendingReply< QByteArray, QString > RequestAvatar(uint contact, int timeout=-1)
Definition: cli-connection.h:2122
Tp::PendingOperation * setPropertyMessageServiceCentre(QString newValue)
Definition: cli-connection.h:2886
QDBusPendingReply SetGroupMembers(const QString &group, const Tp::UIntList &members, int timeout=-1)
Definition: cli-connection.h:4024
QDBusPendingReply RequestSubscription(const Tp::UIntList &contacts, const QString &message, int timeout=-1)
Definition: cli-connection.h:5165
QDBusPendingReply< Tp::ContactClientTypes > GetClientTypes(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:3165
Tp::PendingVariant * requestPropertyMailAddress() const
Definition: cli-connection.h:6286
QDBusPendingReply< QString > GetProtocol(int timeout=-1)
Definition: cli-connection.h:325
Definition: cli-connection.h:7035
QDBusPendingReply< uint > GetAliasFlags(int timeout=-1)
Definition: cli-connection.h:1417
Tp::PendingVariant * requestPropertyRequestableChannelClasses() const
Definition: cli-connection.h:7149
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:7046
Definition: cli-connection.h:6639
QList< AliasPair > AliasPairList
Definition: build/TelepathyQt/_gen/types.h:224
QDBusPendingReply Connect(int timeout=-1)
Definition: cli-connection.h:239
QDBusPendingReply< QString > SetAvatar(const QByteArray &avatar, const QString &MIMEType, int timeout=-1)
Definition: cli-connection.h:2193
Tp::PendingVariant * requestPropertyStatus() const
Definition: cli-connection.h:186
QDBusPendingReply SetPresence(const QString &status, const QString &statusMessage, int timeout=-1)
Definition: cli-connection.h:7776
Tp::PendingVariant * requestPropertyChannels() const
Definition: cli-connection.h:7115
Definition: build/TelepathyQt/_gen/types.h:1352
Tp::PendingVariant * requestPropertyAnonymityMandatory() const
Definition: cli-connection.h:1665
QDBusPendingReply< Tp::MailURL > RequestMailURL(const QString &ID, const QDBusVariant &URLData, int timeout=-1)
Definition: cli-connection.h:6369
QDBusPendingReply Disconnect(int timeout=-1)
Definition: cli-connection.h:265
Tp::PendingVariant * requestPropertyMessageReducedCharacterSet() const
Definition: cli-connection.h:2927
QList< HandlerCapabilities > HandlerCapabilitiesList
Definition: build/TelepathyQt/_gen/types.h:3567
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:6297
QDBusPendingReply Unpublish(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:5417
QList< Mail > MailList
Definition: build/TelepathyQt/_gen/types.h:1780
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:6715
Tp::PendingVariant * requestPropertyMinimumAvatarHeight() const
Definition: cli-connection.h:1855
QDBusPendingReply< Tp::ContactAttributesMap > GetContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, bool hold, int timeout=-1)
Definition: cli-connection.h:5738
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:216
QDBusPendingReply< Tp::ContactLocations > GetLocations(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:6015
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:6650
QDBusPendingReply AddToGroup(const QString &group, const Tp::UIntList &members, int timeout=-1)
Definition: cli-connection.h:4079
QDBusPendingReply< Tp::ContactCapabilitiesMap > GetContactCapabilities(const Tp::UIntList &handles, int timeout=-1)
Definition: cli-connection.h:3717
Tp::PendingVariant * requestPropertyOverrideMessageServiceCentre() const
Definition: cli-connection.h:2817
Tp::PendingVariant * requestPropertyMaximumAvatarHeight() const
Definition: cli-connection.h:1923
Definition: cli-connection.h:5827
Definition: cli-connection.h:44
QDBusPendingReply RemoveClientInterest(const QStringList &tokens, int timeout=-1)
Definition: cli-connection.h:847
QDBusPendingReply UpdateCapabilities(const Tp::HandlerCapabilitiesList &handlerCapabilities, int timeout=-1)
Definition: cli-connection.h:3667
Tp::PendingOperation * setPropertyOverrideMessageServiceCentre(bool newValue)
Definition: cli-connection.h:2844
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:7423
QDBusPendingReply< QStringList > GetInterfaces(int timeout=-1)
Definition: cli-connection.h:297
Tp::PendingVariant * requestPropertyMessageNationalCharacterSet() const
Definition: cli-connection.h:2980
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
QDBusPendingReply< Tp::AliasMap > GetAliases(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:1486
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
QDBusPendingReply< Tp::MailURL > RequestInboxURL(int timeout=-1)
Definition: cli-connection.h:6326
Tp::PendingVariant * requestPropertyMaximumAvatarBytes() const
Definition: cli-connection.h:1955
Tp::PendingVariant * requestPropertyMinimumAvatarWidth() const
Definition: cli-connection.h:1871
Definition: build/TelepathyQt/_gen/types.h:101
QDBusPendingReply< Tp::AddressingNormalizationMap, Tp::ContactAttributesMap > GetContactsByURI(const QStringList &URIs, const QStringList &interfaces, int timeout=-1)
Definition: cli-connection.h:1294
QDBusPendingReply RenameGroup(const QString &oldName, const QString &newName, int timeout=-1)
Definition: cli-connection.h:4230
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:7707
QDBusPendingReply AuthorizePublication(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:5251
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:1576
QDBusPendingReply< Tp::HandleIdentifierMap > RequestBlockedContacts(int timeout=-1)
Definition: cli-connection.h:3477
QList< CapabilityPair > CapabilityPairList
Definition: build/TelepathyQt/_gen/types.h:554
Definition: cli-connection.h:1758
QDBusPendingReply< Tp::ContactInfoMap > GetContactInfo(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:4559
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:6144
QDBusPendingReply< QDBusObjectPath, QVariantMap > CreateChannel(const QVariantMap &request, int timeout=-1)
Definition: cli-connection.h:7247
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:3344
QDBusPendingReply< Tp::AvatarTokenMap > GetKnownAvatarTokens(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:2083
QDBusPendingReply< Tp::ContactPresences > GetPresence(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:6807
Tp::PendingVariant * requestPropertyKnownServicePoints() const
Definition: cli-connection.h:7493
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:5969
Tp::PendingVariant * requestPropertySupportedAnonymityModes() const
Definition: cli-connection.h:1645
Definition: build/TelepathyQt/_gen/types.h:2641
Tp::PendingVariant * requestPropertySupportedAvatarMIMETypes() const
Definition: cli-connection.h:1839
QDBusPendingReply SetPowerSaving(bool activate, int timeout=-1)
Definition: cli-connection.h:6598
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:4717
Tp::PendingVariant * requestPropertyMessageValidityPeriod() const
Definition: cli-connection.h:2767
QDBusPendingReply SetContactInfo(const Tp::ContactInfoFieldList &contactInfo, int timeout=-1)
Definition: cli-connection.h:4661
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:3021
Tp::PendingVariant * requestPropertyManageCreditURI() const
Definition: cli-connection.h:2396
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:7160
QDBusPendingReply RequestAvatars(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:2155
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:1331
QDBusPendingReply RefreshContactInfo(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:4593
QDBusPendingReply ClearAvatar(int timeout=-1)
Definition: cli-connection.h:2218
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:6474
QDBusPendingReply ReleaseHandles(uint handleType, const Tp::UIntList &handles, int timeout=-1)
Definition: cli-connection.h:544
Tp::PendingVariant * requestPropertyDisjointGroups() const
Definition: cli-connection.h:3852
QList< ServicePointInfo > ServicePointInfoList
Definition: build/TelepathyQt/_gen/types.h:3814
QDBusPendingReply< QVariantMap > RequestLocation(uint contact, int timeout=-1)
Definition: cli-connection.h:6054
QDBusPendingReply HoldHandles(uint handleType, const Tp::UIntList &handles, int timeout=-1)
Definition: cli-connection.h:438
QDBusPendingReply ClearStatus(int timeout=-1)
Definition: cli-connection.h:6770
QDBusPendingReply UnblockContacts(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:3442
Tp::PendingOperation * setPropertyAnonymityModes(uint newValue)
Definition: cli-connection.h:1719
QDBusPendingReply AddClientInterest(const QStringList &tokens, int timeout=-1)
Definition: cli-connection.h:801
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:3777
QDBusPendingReply BlockContacts(const Tp::UIntList &contacts, bool reportAbusive, int timeout=-1)
Definition: cli-connection.h:3409
Tp::PendingVariant * requestPropertyMaximumStatusMessageLength() const
Definition: cli-connection.h:7696
Tp::PendingVariant * requestPropertyMessageServiceCentre() const
Definition: cli-connection.h:2865
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:1049
QDBusPendingReply< QStringList > RequestAliases(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:1449
QDBusPendingReply< Tp::CapabilityPairList > AdvertiseCapabilities(const Tp::CapabilityPairList &add, const QStringList &remove, int timeout=-1)
Definition: cli-connection.h:2575
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:3908
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:1769
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:3066
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:1730
Tp::PendingVariant * requestPropertyCanChangeContactList() const
Definition: cli-connection.h:4883
Tp::PendingVariant * requestPropertyMailNotificationFlags() const
Definition: cli-connection.h:6217
QDBusPendingReply SetContactGroups(uint contact, const QStringList &groups, int timeout=-1)
Definition: cli-connection.h:3962
Definition: build/TelepathyQt/_gen/types.h:2107
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:2451
QDBusPendingReply< uint > GetStatus(int timeout=-1)
Definition: cli-connection.h:382
QDBusPendingReply< QDBusObjectPath > RequestChannel(const QString &type, uint handleType, uint handle, bool suppressHandler, int timeout=-1)
Definition: cli-connection.h:638
Definition: build/TelepathyQt/_gen/types.h:1646
Tp::PendingVariant * requestPropertySupportedLocationFeatures() const
Definition: cli-connection.h:5958
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:2407
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:1114
QDBusPendingReply Unsubscribe(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:5366
Tp::PendingVariant * requestPropertyLocationAccessControlTypes() const
Definition: cli-connection.h:5906
QDBusPendingReply< Tp::ContactCapabilityList > GetCapabilities(const Tp::UIntList &handles, int timeout=-1)
Definition: cli-connection.h:2624
QDBusPendingReply SetLastActivityTime(uint time, int timeout=-1)
Definition: cli-connection.h:6938
QDBusPendingReply< bool, QDBusObjectPath, QVariantMap > EnsureChannel(const QVariantMap &request, int timeout=-1)
Definition: cli-connection.h:7326
Tp::PendingVariant * requestPropertyDownloadAtConnection() const
Definition: cli-connection.h:4952
QDBusPendingReply< QStringList > RequestClientTypes(uint contact, int timeout=-1)
Definition: cli-connection.h:3204
Tp::PendingVariant * requestPropertyGroupStorage() const
Definition: cli-connection.h:3869
QDBusPendingReply< QStringList > GetAvatarTokens(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:2041
Tp::PendingOperation * setPropertyMessageReducedCharacterSet(bool newValue)
Definition: cli-connection.h:2950
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:1966
Definition: build/TelepathyQt/_gen/types.h:3505
Tp::PendingVariant * requestPropertyMaximumAvatarWidth() const
Definition: cli-connection.h:1939
QDBusPendingReply SetAliases(const Tp::AliasMap &aliases, int timeout=-1)
Definition: cli-connection.h:1520
QDBusPendingReply< QStringList > InspectHandles(uint handleType, const Tp::UIntList &handles, int timeout=-1)
Definition: cli-connection.h:476
Tp::PendingVariant * requestPropertySelfHandle() const
Definition: cli-connection.h:145
Tp::PendingVariant * requestPropertyAnonymityModes() const
Definition: cli-connection.h:1702
Tp::PendingVariant * requestPropertyIMSI() const
Definition: cli-connection.h:2904
Definition: build/TelepathyQt/_gen/types.h:3827
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:5838
Tp::PendingVariant * requestPropertyHasImmortalHandles() const
Definition: cli-connection.h:205
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:55
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:4531
QDBusPendingReply SetStatus(const Tp::MultipleStatusMap &statuses, int timeout=-1)
Definition: cli-connection.h:6990
Tp::PendingOperation * setPropertyMessageValidityPeriod(uint newValue)
Definition: cli-connection.h:2790
Definition: cli-connection.h:2286
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:2516
QDBusPendingReply< Tp::ChannelInfoList > ListChannels(int timeout=-1)
Definition: cli-connection.h:505
QDBusPendingReply< Tp::StatusSpecMap > GetStatuses(int timeout=-1)
Definition: cli-connection.h:6843
Definition: cli-connection.h:5559
QDBusPendingReply< Tp::UIntList > RequestHandles(uint handleType, const QStringList &identifiers, int timeout=-1)
Definition: cli-connection.h:693
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
QDBusPendingReply< uint, QVariantMap > GetContactByID(const QString &identifier, const QStringList &interfaces, int timeout=-1)
Definition: cli-connection.h:5801
QDBusPendingReply RequestPresence(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:6908
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:1396
QDBusPendingReply< Tp::ContactAttributesMap > GetContactListAttributes(const QStringList &interfaces, bool hold, int timeout=-1)
Definition: cli-connection.h:5040
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:4963
Tp::PendingVariant * requestPropertyLocationAccessControl() const
Definition: cli-connection.h:5923
QDBusPendingReply RemoveGroup(const QString &group, int timeout=-1)
Definition: cli-connection.h:4176
QDBusPendingReply< uint > GetSelfHandle(int timeout=-1)
Definition: cli-connection.h:354
Tp::PendingOperation * setPropertyLocationAccessControl(Tp::RichPresenceAccessControl newValue)
Definition: cli-connection.h:5940
Tp::PendingVariant * requestPropertyUnreadMailCount() const
Definition: cli-connection.h:6246
Tp::PendingVariant * requestPropertySupportedFields() const
Definition: cli-connection.h:4520
Tp::PendingVariant * requestPropertyRecommendedAvatarWidth() const
Definition: cli-connection.h:1907
Definition: cli-connection.h:2679
Definition: build/TelepathyQt/_gen/types.h:3428
QDBusPendingReply SetLocation(const QVariantMap &location, int timeout=-1)
Definition: cli-connection.h:6090
QDBusPendingReply RemoveContacts(const Tp::UIntList &contacts, int timeout=-1)
Definition: cli-connection.h:5315
Tp::PendingVariant * requestPropertyContactInfoFlags() const
Definition: cli-connection.h:4458
Tp::PendingVariant * requestPropertyRequestUsesMessage() const
Definition: cli-connection.h:4916
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:7504
Definition: build/TelepathyQt/_gen/types.h:183
Tp::PendingVariant * requestPropertyUnreadMails() const
Definition: cli-connection.h:6267
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:6559
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:2297
Tp::PendingOperation * setPropertyAnonymityMandatory(bool newValue)
Definition: cli-connection.h:1685
Tp::PendingVariant * requestPropertyContactListPersists() const
Definition: cli-connection.h:4850
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:5650
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:4376
QDBusPendingReply Download(int timeout=-1)
Definition: cli-connection.h:5446
Definition: cli-connection.h:1565
static QLatin1String staticInterfaceName()
Definition: cli-connection.h:5570
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-connection.h:3599
Definition: cli-connection.h:1320
QDBusPendingReply< Tp::AddressingNormalizationMap, Tp::ContactAttributesMap > GetContactsByVCardField(const QString &field, const QStringList &addresses, const QStringList &interfaces, int timeout=-1)
Definition: cli-connection.h:1209
Tp::PendingVariant * requestPropertyAccountBalance() const
Definition: cli-connection.h:2374
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-connection.h:127
Tp::PendingVariant * requestPropertyContactBlockingCapabilities() const
Definition: cli-connection.h:3333
Tp::PendingVariant * requestPropertyGroups() const
Definition: cli-connection.h:3897


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00422.html0000644000175100017520000024311212530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::OutgoingFileTransferChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The OutgoingFileTransferChannel class represents a Telepathy channel of type FileTransfer for outgoing file transfers. More...

#include <TelepathyQt/OutgoingFileTransferChannel>

Inherits Tp::FileTransferChannel.

Public Member Functions

virtual ~OutgoingFileTransferChannel ()
 
PendingOperationprovideFile (QIODevice *input)
 
- Public Member Functions inherited from Tp::FileTransferChannel
virtual ~FileTransferChannel ()
 
FileTransferState state () const
 
FileTransferStateChangeReason stateReason () const
 
QString fileName () const
 
QString contentType () const
 
qulonglong size () const
 
QString uri () const
 
FileHashType contentHashType () const
 
QString contentHash () const
 
QString description () const
 
QDateTime lastModificationTime () const
 
qulonglong initialOffset () const
 
qulonglong transferredBytes () const
 
PendingOperationcancel ()
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static
OutgoingFileTransferChannelPtr 
create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::FileTransferChannel
static FileTransferChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::FileTransferChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 OutgoingFileTransferChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=OutgoingFileTransferChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::FileTransferChannel
 FileTransferChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore)
 
SupportedSocketMap availableSocketTypes () const
 
bool isConnected () const
 
void setConnected ()
 
bool isFinished () const
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::FileTransferChannel
void stateChanged (Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason)
 
void initialOffsetDefined (qulonglong initialOffset)
 
void transferredBytesChanged (qulonglong count)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Slots inherited from Tp::FileTransferChannel
void onUriDefined (const QString &uri)
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The OutgoingFileTransferChannel class represents a Telepathy channel of type FileTransfer for outgoing file transfers.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::OutgoingFileTransferChannel::~OutgoingFileTransferChannel ( )
virtual

Class destructor.

Tp::OutgoingFileTransferChannel::OutgoingFileTransferChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = OutgoingFileTransferChannel::FeatureCore 
)
protected

Construct a new OutgoingFileTransferChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on OutgoingFileTransferChannel::FeatureCore.

Member Function Documentation

OutgoingFileTransferChannelPtr Tp::OutgoingFileTransferChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new OutgoingFileTransferChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
An OutgoingFileTransferChannelPtr object pointing to the newly created OutgoingFileTransferChannel object.
PendingOperation * Tp::OutgoingFileTransferChannel::provideFile ( QIODevice *  input)

Provide the file for an outgoing file transfer which has been offered.

The state will change to FileTransferStateOpen as soon as the transfer starts. The given input device should not be destroyed until the state() changes to FileTransferStateCompleted or FileTransferStateCancelled. If input is a sequential device QIODevice::isSequential(), it should be closed when no more data is available, so that it's known when to stop reading.

Only the primary handler of a file transfer channel may call this method.

This method requires FileTransferChannel::FeatureCore to be ready.

Parameters
inputA QIODevice object where the data will be read from.
Returns
A PendingOperation object which will emit PendingOperation::finished when the call has finished.
See Also
stateChanged(), state(), stateReason()

Member Data Documentation

const Feature Tp::OutgoingFileTransferChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the OutgoingFileTransferChannel object usable.

This is currently the same as FileTransferChannel::FeatureCore, but may change to include more.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00177.html0000644000175100017520000001263012530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelDetails Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelDetails Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QDBusObjectPath channel
 
QVariantMap properties
 

Detailed Description

Structure type generated from the specification.

Enough details of a channel that clients can work out how to dispatch or handle it.

Member Data Documentation

QDBusObjectPath Tp::ChannelDetails::channel

The object path of the channel.

QVariantMap Tp::ChannelDetails::properties

Properties of the channel.

Connection managers MUST NOT include properties in this mapping if their values can change. Clients MUST ignore properties that appear in this mapping if their values can change.

If properties that could change were included, the following race condition would be likely to exist in some cases:

  • NewChannels or Get("Channels") includes a property P with value V1
  • Client creates a proxy object for the channel
  • The value of P changes to V2
  • Client connects to PChanged signal
  • Client should call Get("P") or GetAll here, to avoid the race, but client's author has forgotten to do so
  • Proxy object thinks P == V1, but actually P == V2

We've taken the opportunity to make the API encourage the client author to get it right. Where possible, we intend that properties whose value will be used in channel dispatching or other "early" processing will be defined so that they are immutable (can never change).

Each dictionary MUST contain the keys ChannelInterface::ChannelType , ChannelInterface::TargetHandleType , ChannelInterface::TargetHandle , ChannelInterface::TargetID and ChannelInterface::Requested .

We expect these to be crucial to the channel-dispatching process.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01138.html0000644000175100017520000000442512530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CapabilityPair Member List

This is the complete list of members for Tp::CapabilityPair, including all inherited members.

channelTypeTp::CapabilityPair
typeSpecificFlagsTp::CapabilityPair


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00992.html0000644000175100017520000004465112530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelRequest Member List

This is the complete list of members for Tp::ChannelRequest, including all inherited members.

account() const Tp::ChannelRequest
actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::ChannelRequestprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< ChannelRequest >
cancel()Tp::ChannelRequest
channel() const Tp::ChannelRequest
ChannelRequest(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::ChannelRequestprotected
ChannelRequest(const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties)Tp::ChannelRequestprotected
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< ChannelRequest >
create(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::ChannelRequeststatic
create(const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties)Tp::ChannelRequeststatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
failed(const QString &errorName, const QString &errorMessage)Tp::ChannelRequestsignal
FeatureCoreTp::ChannelRequeststatic
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< ChannelRequest >inline
hints() const Tp::ChannelRequest
immutableProperties() const Tp::ChannelRequest
interface() constTp::OptionalInterfaceFactory< ChannelRequest >inline
interfaces() constTp::OptionalInterfaceFactory< ChannelRequest >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< ChannelRequest >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< ChannelRequest >inline
OptionalInterfaceFactory(ChannelRequest *this_)Tp::OptionalInterfaceFactory< ChannelRequest >inline
preferredHandler() const Tp::ChannelRequest
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
requests() const Tp::ChannelRequest
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< ChannelRequest >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
succeeded(const Tp::ChannelPtr &channel)Tp::ChannelRequestsignal
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
userActionTime() const Tp::ChannelRequest
~ChannelRequest()Tp::ChannelRequestvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< ChannelRequest >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00633_source.html0000644000175100017520000020745312530426257022527 0ustar00kaffeinekaffeine00000000000000 cli-client.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-client.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT ClientInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Client");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
119  {
120  return internalRequestProperty(QLatin1String("Interfaces"));
121  }
122 
130  {
131  return internalRequestAllProperties();
132  }
133 
134 protected:
135  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
136 };
137 
146 {
147  Q_OBJECT
148 
149 public:
156  static inline QLatin1String staticInterfaceName()
157  {
158  return QLatin1String("org.freedesktop.Telepathy.Client.Approver");
159  }
160 
169  const QString& busName,
170  const QString& objectPath,
171  QObject* parent = 0
172  );
173 
183  const QDBusConnection& connection,
184  const QString& busName,
185  const QString& objectPath,
186  QObject* parent = 0
187  );
188 
196 
204  explicit ClientApproverInterface(const Tp::Client::ClientInterface& mainInterface);
205 
213  ClientApproverInterface(const Tp::Client::ClientInterface& mainInterface, QObject* parent);
214 
241  {
242  return internalRequestProperty(QLatin1String("ApproverChannelFilter"));
243  }
244 
252  {
253  return internalRequestAllProperties();
254  }
255 
256 public Q_SLOTS:
339  inline QDBusPendingReply<> AddDispatchOperation(const Tp::ChannelDetailsList& channels, const QDBusObjectPath& dispatchOperation, const QVariantMap& properties, int timeout = -1)
340  {
341  if (!invalidationReason().isEmpty()) {
342  return QDBusPendingReply<>(QDBusMessage::createError(
343  invalidationReason(),
344  invalidationMessage()
345  ));
346  }
347 
348  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
349  this->staticInterfaceName(), QLatin1String("AddDispatchOperation"));
350  callMessage << QVariant::fromValue(channels) << QVariant::fromValue(dispatchOperation) << QVariant::fromValue(properties);
351  return this->connection().asyncCall(callMessage, timeout);
352  }
353 
354 protected:
355  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
356 };
357 
366 {
367  Q_OBJECT
368 
369 public:
376  static inline QLatin1String staticInterfaceName()
377  {
378  return QLatin1String("org.freedesktop.Telepathy.Client.Handler");
379  }
380 
389  const QString& busName,
390  const QString& objectPath,
391  QObject* parent = 0
392  );
393 
403  const QDBusConnection& connection,
404  const QString& busName,
405  const QString& objectPath,
406  QObject* parent = 0
407  );
408 
416 
424  explicit ClientHandlerInterface(const Tp::Client::ClientInterface& mainInterface);
425 
433  ClientHandlerInterface(const Tp::Client::ClientInterface& mainInterface, QObject* parent);
434 
460  {
461  return internalRequestProperty(QLatin1String("HandlerChannelFilter"));
462  }
463 
500  {
501  return internalRequestProperty(QLatin1String("BypassApproval"));
502  }
503 
552  {
553  return internalRequestProperty(QLatin1String("Capabilities"));
554  }
555 
594  {
595  return internalRequestProperty(QLatin1String("HandledChannels"));
596  }
597 
605  {
606  return internalRequestAllProperties();
607  }
608 
609 public Q_SLOTS:
715  inline QDBusPendingReply<> HandleChannels(const QDBusObjectPath& account, const QDBusObjectPath& connection, const Tp::ChannelDetailsList& channels, const Tp::ObjectPathList& requestsSatisfied, qulonglong userActionTime, const QVariantMap& handlerInfo, int timeout = -1)
716  {
717  if (!invalidationReason().isEmpty()) {
718  return QDBusPendingReply<>(QDBusMessage::createError(
719  invalidationReason(),
720  invalidationMessage()
721  ));
722  }
723 
724  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
725  this->staticInterfaceName(), QLatin1String("HandleChannels"));
726  callMessage << QVariant::fromValue(account) << QVariant::fromValue(connection) << QVariant::fromValue(channels) << QVariant::fromValue(requestsSatisfied) << QVariant::fromValue(userActionTime) << QVariant::fromValue(handlerInfo);
727  return this->connection().asyncCall(callMessage, timeout);
728  }
729 
730 protected:
731  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
732 };
733 
742 {
743  Q_OBJECT
744 
745 public:
752  static inline QLatin1String staticInterfaceName()
753  {
754  return QLatin1String("org.freedesktop.Telepathy.Client.Interface.Requests");
755  }
756 
765  const QString& busName,
766  const QString& objectPath,
767  QObject* parent = 0
768  );
769 
779  const QDBusConnection& connection,
780  const QString& busName,
781  const QString& objectPath,
782  QObject* parent = 0
783  );
784 
792 
800  explicit ClientInterfaceRequestsInterface(const Tp::Client::ClientInterface& mainInterface);
801 
809  ClientInterfaceRequestsInterface(const Tp::Client::ClientInterface& mainInterface, QObject* parent);
810 
818  {
819  return internalRequestAllProperties();
820  }
821 
822 public Q_SLOTS:
905  inline QDBusPendingReply<> AddRequest(const QDBusObjectPath& request, const QVariantMap& properties, int timeout = -1)
906  {
907  if (!invalidationReason().isEmpty()) {
908  return QDBusPendingReply<>(QDBusMessage::createError(
909  invalidationReason(),
910  invalidationMessage()
911  ));
912  }
913 
914  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
915  this->staticInterfaceName(), QLatin1String("AddRequest"));
916  callMessage << QVariant::fromValue(request) << QVariant::fromValue(properties);
917  return this->connection().asyncCall(callMessage, timeout);
918  }
919 
960  inline QDBusPendingReply<> RemoveRequest(const QDBusObjectPath& request, const QString& error, const QString& message, int timeout = -1)
961  {
962  if (!invalidationReason().isEmpty()) {
963  return QDBusPendingReply<>(QDBusMessage::createError(
964  invalidationReason(),
965  invalidationMessage()
966  ));
967  }
968 
969  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
970  this->staticInterfaceName(), QLatin1String("RemoveRequest"));
971  callMessage << QVariant::fromValue(request) << QVariant::fromValue(error) << QVariant::fromValue(message);
972  return this->connection().asyncCall(callMessage, timeout);
973  }
974 
975 protected:
976  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
977 };
978 
987 {
988  Q_OBJECT
989 
990 public:
997  static inline QLatin1String staticInterfaceName()
998  {
999  return QLatin1String("org.freedesktop.Telepathy.Client.Observer");
1000  }
1001 
1010  const QString& busName,
1011  const QString& objectPath,
1012  QObject* parent = 0
1013  );
1014 
1024  const QDBusConnection& connection,
1025  const QString& busName,
1026  const QString& objectPath,
1027  QObject* parent = 0
1028  );
1029 
1037 
1045  explicit ClientObserverInterface(const Tp::Client::ClientInterface& mainInterface);
1046 
1054  ClientObserverInterface(const Tp::Client::ClientInterface& mainInterface, QObject* parent);
1055 
1149  {
1150  return internalRequestProperty(QLatin1String("ObserverChannelFilter"));
1151  }
1152 
1195  {
1196  return internalRequestProperty(QLatin1String("Recover"));
1197  }
1198 
1243  {
1244  return internalRequestProperty(QLatin1String("DelayApprovers"));
1245  }
1246 
1254  {
1255  return internalRequestAllProperties();
1256  }
1257 
1258 public Q_SLOTS:
1383  inline QDBusPendingReply<> ObserveChannels(const QDBusObjectPath& account, const QDBusObjectPath& connection, const Tp::ChannelDetailsList& channels, const QDBusObjectPath& dispatchOperation, const Tp::ObjectPathList& requestsSatisfied, const QVariantMap& observerInfo, int timeout = -1)
1384  {
1385  if (!invalidationReason().isEmpty()) {
1386  return QDBusPendingReply<>(QDBusMessage::createError(
1387  invalidationReason(),
1388  invalidationMessage()
1389  ));
1390  }
1391 
1392  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1393  this->staticInterfaceName(), QLatin1String("ObserveChannels"));
1394  callMessage << QVariant::fromValue(account) << QVariant::fromValue(connection) << QVariant::fromValue(channels) << QVariant::fromValue(dispatchOperation) << QVariant::fromValue(requestsSatisfied) << QVariant::fromValue(observerInfo);
1395  return this->connection().asyncCall(callMessage, timeout);
1396  }
1397 
1398 protected:
1399  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1400 };
1401 }
1402 }
1403 Q_DECLARE_METATYPE(Tp::Client::ClientInterface*)
1404 Q_DECLARE_METATYPE(Tp::Client::ClientApproverInterface*)
1405 Q_DECLARE_METATYPE(Tp::Client::ClientHandlerInterface*)
1406 Q_DECLARE_METATYPE(Tp::Client::ClientInterfaceRequestsInterface*)
1407 Q_DECLARE_METATYPE(Tp::Client::ClientObserverInterface*)
QList< ChannelDetails > ChannelDetailsList
Definition: build/TelepathyQt/_gen/types.h:820
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-client.h:251
QDBusPendingReply AddRequest(const QDBusObjectPath &request, const QVariantMap &properties, int timeout=-1)
Definition: cli-client.h:905
Tp::PendingVariant * requestPropertyRecover() const
Definition: cli-client.h:1194
static QLatin1String staticInterfaceName()
Definition: cli-client.h:376
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-client.h:118
Definition: cli-client.h:365
Tp::PendingVariant * requestPropertyCapabilities() const
Definition: cli-client.h:551
Definition: cli-client.h:986
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-client.h:1253
Tp::PendingVariant * requestPropertyApproverChannelFilter() const
Definition: cli-client.h:240
Tp::PendingVariant * requestPropertyBypassApproval() const
Definition: cli-client.h:499
QDBusPendingReply RemoveRequest(const QDBusObjectPath &request, const QString &error, const QString &message, int timeout=-1)
Definition: cli-client.h:960
static QLatin1String staticInterfaceName()
Definition: cli-client.h:156
Tp::PendingVariant * requestPropertyDelayApprovers() const
Definition: cli-client.h:1242
Definition: cli-client.h:145
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
QDBusPendingReply HandleChannels(const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const Tp::ObjectPathList &requestsSatisfied, qulonglong userActionTime, const QVariantMap &handlerInfo, int timeout=-1)
Definition: cli-client.h:715
static QLatin1String staticInterfaceName()
Definition: cli-client.h:752
static QLatin1String staticInterfaceName()
Definition: cli-client.h:997
Tp::PendingVariant * requestPropertyHandlerChannelFilter() const
Definition: cli-client.h:459
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-client.h:817
Definition: build/TelepathyQt/_gen/types.h:81
QDBusPendingReply ObserveChannels(const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const Tp::ObjectPathList &requestsSatisfied, const QVariantMap &observerInfo, int timeout=-1)
Definition: cli-client.h:1383
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
QDBusPendingReply AddDispatchOperation(const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const QVariantMap &properties, int timeout=-1)
Definition: cli-client.h:339
Definition: cli-client.h:44
Tp::PendingVariant * requestPropertyHandledChannels() const
Definition: cli-client.h:593
Tp::PendingVariant * requestPropertyObserverChannelFilter() const
Definition: cli-client.h:1148
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-client.h:604
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
static QLatin1String staticInterfaceName()
Definition: cli-client.h:55
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-client.h:129


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00491.html0000644000175100017520000003004312530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeServer::RemoteContact Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer::RemoteContact Class Reference

The StreamTubeServer::RemoteContact class represents a contact from which a socket connection to our exported socket originates. More...

#include <TelepathyQt/StreamTubeServer>

Inherits QPair< AccountPtr, ContactPtr >.

Public Member Functions

 RemoteContact ()
 
 RemoteContact (const AccountPtr &account, const ContactPtr &contact)
 
 RemoteContact (const RemoteContact &other)
 
 ~RemoteContact ()
 
bool isValid () const
 
RemoteContactoperator= (const RemoteContact &other)
 
const AccountPtr & account () const
 
const ContactPtr & contact () const
 

Detailed Description

The StreamTubeServer::RemoteContact class represents a contact from which a socket connection to our exported socket originates.

Constructor & Destructor Documentation

Tp::StreamTubeServer::RemoteContact::RemoteContact ( )

Constructs a new invalid RemoteContact instance.

Tp::StreamTubeServer::RemoteContact::RemoteContact ( const AccountPtr &  account,
const ContactPtr &  contact 
)

Constructs a new RemoteContact for the given contact object from the given account.

Parameters
accountA pointer to the account which this contact can be reached through.
contactA pointer to the contact object.
Tp::StreamTubeServer::RemoteContact::RemoteContact ( const RemoteContact other)

Copy constructor.

Tp::StreamTubeServer::RemoteContact::~RemoteContact ( )

Class destructor.

Member Function Documentation

bool Tp::StreamTubeServer::RemoteContact::isValid ( ) const
inline

Return whether or not the contact is valid or is just the null object created using the default constructor.

Returns
true if valid, false otherwise.
StreamTubeServer::RemoteContact & Tp::StreamTubeServer::RemoteContact::operator= ( const RemoteContact other)

Assignment operator.

AccountPtr Tp::StreamTubeServer::RemoteContact::account ( ) const
inline

Return the account through which the contact can be reached.

Returns
A pointer to the account object.
ContactPtr Tp::StreamTubeServer::RemoteContact::contact ( ) const
inline

Return the actual contact object.

Returns
A pointer to the object.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2folderclosed.png0000644000175100017520000000115012530426257023404 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆ/IDATxí]MOÔ@~ÚúuØlp]ö¿#›Å]PYECˆ\9ù¼yÑß`ÖÄÿàÿÀÉxóâ¢C &=qÐÄ£—vZçv¶3m؃‡vžLûNç}Þ÷}Þ½ZA@n° OäNp ’xóþK°ññ€xÜj”°8sÑ€“ “€œ_¼[Âíæ§ïD'‚•yye+ø¼û 7#rNŸlïük* ¾0Ь_d«_(àñÖ±àôz=ñxõv§÷h©‰z¹€šØP-äóä’̪uý¼$»\DãJc—B4¯ãÝÖ.:£Ï-ÑÏß}µŠLEíºþ #—ûáºÀÏgN;BŠ€6ïýñ䬜…ö@’Ðåñp&™h>p9¤™EEά¨ÎÊ‘" u¥n€$R"?{¹<˜…ë…%PNtâ$‰ß¶±úá+^<é"§2 ªDq”q´\¬«Ò™a–Œ‘©Aÿ€"Ôµ ™êŸèP£}#Eàz{û.8i îp³ê(ADwD¦E<ê¬cE¦$ HdÊÄ ”.:Ù GŽ-`ŒL‚ý¾'¢‰Ä<¤CIª½;ÙÇTZd±i};>èôß‚z×;K×§8t ¤Ž q”:uvÿv•Ý›¬²ÙvEân{„M·FXg¼ÌfZÖ¨°¹‰*›ßÌß©±ù©:›j–YqèÜë#3çÏSøWøÿÿÑr'ø Ôùù‚ ©¡IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00236.html0000644000175100017520000012447712530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeContactSearchInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Search (const Tp::ContactSearchMap &terms, int timeout=-1)
 
QDBusPendingReply More (int timeout=-1)
 
QDBusPendingReply Stop (int timeout=-1)
 

Signals

void SearchStateChanged (uint state, const QString &error, const QVariantMap &details)
 
void SearchResultReceived (const Tp::ContactSearchResultMap &result)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeContactSearchInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeContactSearchInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeContactSearchInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeContactSearchInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeContactSearchInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertySearchState () const
 
Tp::PendingVariantrequestPropertyLimit () const
 
Tp::PendingVariantrequestPropertyAvailableSearchKeys () const
 
Tp::PendingVariantrequestPropertyServer () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.ContactSearch".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeContactSearchInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeContactSearchInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeContactSearchInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeContactSearchInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeContactSearchInterface::ChannelTypeContactSearchInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeContactSearchInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeContactSearchInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.ContactSearch", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeContactSearchInterface::requestPropertySearchState ( ) const
inline

Asynchronous getter for the remote object property SearchState of type uint.

The current state of this search channel object. Change notification is via SearchStateChanged.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeContactSearchInterface::requestPropertyLimit ( ) const
inline

Asynchronous getter for the remote object property Limit of type uint.

If supported by the protocol, the maximum number of results that should be returned, where 0 represents no limit. If the protocol does not support limiting results, this should be 0.

For example, if the terms passed to Search() match Antonius, Bridget and Charles and this property is 2, the search service SHOULD only return Antonius and Bridget.

This property SHOULD be requestable if and only if the protocol supports specifying a limit; implementations SHOULD use 0 as the default if possible, or a protocol-specific sensible default otherwise.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeContactSearchInterface::requestPropertyAvailableSearchKeys ( ) const
inline

Asynchronous getter for the remote object property AvailableSearchKeys of type QStringList.

The set of search keys supported by this channel. Example values include [""] (for protocols where several address fields are implicitly searched) or ["x-n-given", "x-n-family", "nickname", "email"] (for XMPP XEP-0055, without extensibility via Data Forms). It can be in the NewChannels signal for round-trip reduction.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeContactSearchInterface::requestPropertyServer ( ) const
inline

Asynchronous getter for the remote object property Server of type QString.

For protocols which support searching for contacts on multiple servers with different DNS names (like XMPP), the DNS name of the server being searched by this channel, e.g. "characters.shakespeare.lit". Otherwise, the empty string. XEP 0055 defines a mechanism for XMPP clients to search services of their choice for contacts, such as users.jabber.org (the "Jabber User Directory"). This property SHOULD be requestable if and only if the protocol supports querying multiple different servers; implementations SHOULD use a sensible default if possible if this property is not specified in a channel request. This allows a client to perform searches on a protocol it knows nothing about without requiring the user to guess a valid server's hostname.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeContactSearchInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelTypeContactSearchInterface::Search ( const Tp::ContactSearchMap terms,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Search on the remote object.

Send a request to start a search for contacts on this connection. This may only be called while the SearchState is Not_Started; a valid search request will cause the SearchStateChanged signal to be emitted with the state In_Progress.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
terms
A dictionary mapping search key names to the desired values
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeContactSearchInterface::More ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method More on the remote object.

Request that a search in SearchState More_Available move back to state In_Progress and continue listing up to Limit more results.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeContactSearchInterface::Stop ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Stop on the remote object.

Stop the current search. This may not be called while the SearchState is Not_Started. If called while the SearchState is In_Progress, SearchStateChanged() will be emitted, with the state Failed and the error org.freedesktop.Telepathy.Error.Cancelled.

Calling this method on a search in state Completed or Failed succeeds, but has no effect.

Specifying Stop to succeed when the search has finished means that clients who call Stop just before receiving SearchStateChanged() don't have to handle a useless error.

Depending on the protocol, the connection manager may not be able to prevent the server from sending further results after this method returns; if this is the case, it MUST ignore any further results.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelTypeContactSearchInterface::SearchStateChanged ( uint  state,
const QString &  error,
const QVariantMap &  details 
)
signal

Represents the signal SearchStateChanged on the remote object.

Emitted when the SearchState property changes. The implementation MUST NOT make transitions other than the following:

  • Not_Started → In_Progress
  • In_Progress → More_Available
  • More_Available → In_Progress
  • In_Progress → Completed
  • In_Progress → Failed
Parameters
state
The new search state
error If the new state is Failed, the name of a D-Bus error describing what went wrong. Otherwise, the empty string.
details

Additional information about the state transition, which may include the following well-known keys:

debug-message (s)
Debugging information on the change, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances

This argument allows for future extensions. For instance, if moving to state Failed because the server rejected one of our search terms, we could define a key that indicates which terms were invalid.

void Tp::Client::ChannelTypeContactSearchInterface::SearchResultReceived ( const Tp::ContactSearchResultMap result)
signal

Represents the signal SearchResultReceived on the remote object.

Emitted when a some search results are received from the server. This signal can be fired arbitrarily many times so clients MUST NOT assume they'll get only one signal.

Parameters
result
A mapping from contact identifier to an array of fields 
representing information about this contact.
void Tp::Client::ChannelTypeContactSearchInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01266.html0000644000175100017520000003143312530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceRoomConfigInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceRoomConfigInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceRoomConfigInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceRoomConfigInterface
ChannelInterfaceRoomConfigInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceRoomConfigInterface
ChannelInterfaceRoomConfigInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceRoomConfigInterface
ChannelInterfaceRoomConfigInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceRoomConfigInterfaceexplicit
ChannelInterfaceRoomConfigInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceRoomConfigInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceRoomConfigInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyAnonymous() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyCanUpdateConfiguration() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyConfigurationRetrieved() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyDescription() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyInviteOnly() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyLimit() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyModerated() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyMutableProperties() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyPassword() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyPasswordHint() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyPasswordProtected() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyPersistent() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyPrivate() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
requestPropertyTitle() const Tp::Client::ChannelInterfaceRoomConfigInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceRoomConfigInterfaceinlinestatic
UpdateConfiguration(const QVariantMap &properties, int timeout=-1)Tp::Client::ChannelInterfaceRoomConfigInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00626_source.html0000644000175100017520000007104512530426257022525 0ustar00kaffeinekaffeine00000000000000 cli-channel-dispatch-operation.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-channel-dispatch-operation.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.ChannelDispatchOperation");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
107  {
108  return internalRequestProperty(QLatin1String("Interfaces"));
109  }
110 
124  {
125  return internalRequestProperty(QLatin1String("Connection"));
126  }
127 
139  {
140  return internalRequestProperty(QLatin1String("Account"));
141  }
142 
155  {
156  return internalRequestProperty(QLatin1String("Channels"));
157  }
158 
177  {
178  return internalRequestProperty(QLatin1String("PossibleHandlers"));
179  }
180 
188  {
189  return internalRequestAllProperties();
190  }
191 
192 public Q_SLOTS:
238  inline QDBusPendingReply<> HandleWith(const QString& handler, int timeout = -1)
239  {
240  if (!invalidationReason().isEmpty()) {
241  return QDBusPendingReply<>(QDBusMessage::createError(
242  invalidationReason(),
243  invalidationMessage()
244  ));
245  }
246 
247  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
248  this->staticInterfaceName(), QLatin1String("HandleWith"));
249  callMessage << QVariant::fromValue(handler);
250  return this->connection().asyncCall(callMessage, timeout);
251  }
252 
306  inline QDBusPendingReply<> Claim(int timeout = -1)
307  {
308  if (!invalidationReason().isEmpty()) {
309  return QDBusPendingReply<>(QDBusMessage::createError(
310  invalidationReason(),
311  invalidationMessage()
312  ));
313  }
314 
315  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
316  this->staticInterfaceName(), QLatin1String("Claim"));
317  return this->connection().asyncCall(callMessage, timeout);
318  }
319 
350  inline QDBusPendingReply<> HandleWithTime(const QString& handler, qlonglong userActionTime, int timeout = -1)
351  {
352  if (!invalidationReason().isEmpty()) {
353  return QDBusPendingReply<>(QDBusMessage::createError(
354  invalidationReason(),
355  invalidationMessage()
356  ));
357  }
358 
359  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
360  this->staticInterfaceName(), QLatin1String("HandleWithTime"));
361  callMessage << QVariant::fromValue(handler) << QVariant::fromValue(userActionTime);
362  return this->connection().asyncCall(callMessage, timeout);
363  }
364 
365 Q_SIGNALS:
411  void ChannelLost(const QDBusObjectPath& channel, const QString& error, const QString& message);
412 
455  void Finished();
456 
457 protected:
458  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
459 };
460 }
461 }
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-channel-dispatch-operation.h:106
Tp::PendingVariant * requestPropertyConnection() const
Definition: cli-channel-dispatch-operation.h:123
QDBusPendingReply Claim(int timeout=-1)
Definition: cli-channel-dispatch-operation.h:306
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariant * requestPropertyAccount() const
Definition: cli-channel-dispatch-operation.h:138
QDBusPendingReply HandleWith(const QString &handler, int timeout=-1)
Definition: cli-channel-dispatch-operation.h:238
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-channel-dispatch-operation.h:187
Definition: cli-channel-dispatch-operation.h:44
QDBusPendingReply HandleWithTime(const QString &handler, qlonglong userActionTime, int timeout=-1)
Definition: cli-channel-dispatch-operation.h:350
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
static QLatin1String staticInterfaceName()
Definition: cli-channel-dispatch-operation.h:55
Tp::PendingVariant * requestPropertyChannels() const
Definition: cli-channel-dispatch-operation.h:154
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyPossibleHandlers() const
Definition: cli-channel-dispatch-operation.h:176


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01010.html0000644000175100017520000005017612530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Contact Member List

This is the complete list of members for Tp::Contact, including all inherited members.

actualFeatures() const Tp::Contact
addedToGroup(const QString &group)Tp::Contactsignal
addToGroup(const QString &group)Tp::Contact
alias() const Tp::Contact
aliasChanged(const QString &alias)Tp::Contactsignal
augment(const Features &requestedFeatures, const QVariantMap &attributes)Tp::Contactprotectedvirtual
authorizePresencePublication(const QString &message=QString())Tp::Contact
avatarData() const Tp::Contact
avatarDataChanged(const Tp::AvatarData &avatarData)Tp::Contactsignal
avatarToken() const Tp::Contact
avatarTokenChanged(const QString &avatarToken)Tp::Contactsignal
block()Tp::Contact
blockAndReportAbuse()Tp::Contact
blockStatusChanged(bool blocked)Tp::Contactsignal
capabilities() const Tp::Contact
capabilitiesChanged(const Tp::ContactCapabilities &caps)Tp::Contactsignal
clientTypes() const Tp::Contact
clientTypesChanged(const QStringList &clientTypes)Tp::Contactsignal
Contact(ContactManager *manager, const ReferencedHandles &handle, const Features &requestedFeatures, const QVariantMap &attributes)Tp::Contactprotected
FeatureAddressesTp::Contactstatic
FeatureAliasTp::Contactstatic
FeatureAvatarDataTp::Contactstatic
FeatureAvatarTokenTp::Contactstatic
FeatureCapabilitiesTp::Contactstatic
FeatureClientTypesTp::Contactstatic
FeatureInfoTp::Contactstatic
FeatureLocationTp::Contactstatic
FeatureSimplePresenceTp::Contactstatic
groups() const Tp::Contact
handle() const Tp::Contact
id() const Tp::Contact
infoFields() const Tp::Contact
infoFieldsChanged(const Tp::Contact::InfoFields &infoFields)Tp::Contactsignal
isAvatarTokenKnown() const Tp::Contact
isBlocked() const Tp::Contact
isContactInfoKnown() const Tp::Contact
isPublishCancelled() const Tp::Contact
isPublishStateKnown() const Tp::Contact
isSubscriptionRejected() const Tp::Contact
isSubscriptionStateKnown() const Tp::Contact
location() const Tp::Contact
locationUpdated(const Tp::LocationInfo &location)Tp::Contactsignal
manager() const Tp::Contact
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
presence() const Tp::Contact
presenceChanged(const Tp::Presence &presence)Tp::Contactsignal
PresenceState enum nameTp::Contact
PresenceStateAsk enum valueTp::Contact
PresenceStateNo enum valueTp::Contact
PresenceStateYes enum valueTp::Contact
propertyChanged(const QString &propertyName)Tp::Objectsignal
publishState() const Tp::Contact
publishStateChanged(Tp::Contact::PresenceState state, const QString &message)Tp::Contactsignal
publishStateMessage() const Tp::Contact
RefCounted()Tp::RefCountedinline
refreshInfo()Tp::Contact
removedFromGroup(const QString &group)Tp::Contactsignal
removeFromGroup(const QString &group)Tp::Contact
removePresencePublication(const QString &message=QString())Tp::Contact
removePresenceSubscription(const QString &message=QString())Tp::Contact
requestAvatarData()Tp::Contact
requestClientTypes()Tp::Contact
requestedFeatures() const Tp::Contact
requestInfo()Tp::Contact
requestPresenceSubscription(const QString &message=QString())Tp::Contact
subscriptionState() const Tp::Contact
subscriptionStateChanged(Tp::Contact::PresenceState state)Tp::Contactsignal
unblock()Tp::Contact
uris() const Tp::Contact
vcardAddresses() const Tp::Contact
~Contact()Tp::Contact
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00865.html0000644000175100017520000000603412530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Client::DBus Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::DBus Namespace Reference

Classes

class  DBusDaemonInterface
 
class  IntrospectableInterface
 
class  PeerInterface
 
class  PropertiesInterface
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x66.html0000644000175100017520000002425512530426260024150 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- f -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00364.html0000644000175100017520000003567512530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Struct Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > Struct Template Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/callbacks.h>

Inherits Tp::BaseFunctorCaller< FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, Functor >.

Public Types

typedef R ResultType
 
typedef R(* InvokeType )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
 
- Public Types inherited from Tp::AbstractFunctorCaller
typedef void *(* HookType )(void *)
 

Public Member Functions

 FunctorCaller7 (const Functor &functor)
 
- Public Member Functions inherited from Tp::BaseFunctorCaller< FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, Functor >
 BaseFunctorCaller (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook)
 
virtual ~BaseFunctorCaller ()
 
virtual AbstractFunctorCallerclone () const
 
- Public Member Functions inherited from Tp::AbstractFunctorCaller
 AbstractFunctorCaller (HookType invokeMethodHook)
 
virtual ~AbstractFunctorCaller ()
 

Static Public Member Functions

static ResultType invoke (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7)
 

Additional Inherited Members

- Public Attributes inherited from Tp::BaseFunctorCaller< FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, Functor >
Functor functor
 
- Public Attributes inherited from Tp::AbstractFunctorCaller
HookType invokeMethodHook
 

Member Typedef Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
typedef R Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::ResultType
template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
typedef R(* Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::InvokeType)(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)

Constructor & Destructor Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::FunctorCaller7 ( const Functor &  functor)
inlineexplicit

Member Function Documentation

template<class Functor , class R , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class Arg7 >
static ResultType Tp::FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >::invoke ( AbstractFunctorCaller call,
Arg1  a1,
Arg2  a2,
Arg3  a3,
Arg4  a4,
Arg5  a5,
Arg6  a6,
Arg7  a7 
)
inlinestatic


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01325.html0000644000175100017520000002102012530426260021120 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::DBus::PeerInterface Member List

This is the complete list of members for Tp::Client::DBus::PeerInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
GetMachineId(int timeout=-1)Tp::Client::DBus::PeerInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::DBus::PeerInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
PeerInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::PeerInterface
PeerInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::PeerInterface
PeerInterface(Tp::DBusProxy *proxy)Tp::Client::DBus::PeerInterface
PeerInterface(const Tp::AbstractInterface &mainInterface)Tp::Client::DBus::PeerInterfaceexplicit
PeerInterface(const Tp::AbstractInterface &mainInterface, QObject *parent)Tp::Client::DBus::PeerInterface
Ping(int timeout=-1)Tp::Client::DBus::PeerInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::DBus::PeerInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::DBus::PeerInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00109.html0000644000175100017520000015164712530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelSASLAuthenticationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.SASLAuthentication. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2< void, const
QString &, DBusError * > 
StartMechanismCallback
 
typedef Callback3< void, const
QString &, const QByteArray
&, DBusError * > 
StartMechanismWithDataCallback
 
typedef Callback2< void, const
QByteArray &, DBusError * > 
RespondCallback
 
typedef Callback1< void,
DBusError * > 
AcceptSASLCallback
 
typedef Callback3< void, uint,
const QString &, DBusError * > 
AbortSASLCallback
 

Public Member Functions

virtual ~BaseChannelSASLAuthenticationInterface ()
 
QVariantMap immutableProperties () const
 
QStringList availableMechanisms () const
 
bool hasInitialData () const
 
bool canTryAgain () const
 
QString authorizationIdentity () const
 
QString defaultUsername () const
 
QString defaultRealm () const
 
bool maySaveResponse () const
 
uint saslStatus () const
 
void setSaslStatus (uint status, const QString &reason, const QVariantMap &details)
 
QString saslError () const
 
void setSaslError (const QString &saslError)
 
QVariantMap saslErrorDetails () const
 
void setSaslErrorDetails (const QVariantMap &saslErrorDetails)
 
void setStartMechanismCallback (const StartMechanismCallback &cb)
 
void startMechanism (const QString &mechanism, DBusError *error)
 
void setStartMechanismWithDataCallback (const StartMechanismWithDataCallback &cb)
 
void startMechanismWithData (const QString &mechanism, const QByteArray &initialData, DBusError *error)
 
void setRespondCallback (const RespondCallback &cb)
 
void respond (const QByteArray &responseData, DBusError *error)
 
void setAcceptSaslCallback (const AcceptSASLCallback &cb)
 
void acceptSasl (DBusError *error)
 
void setAbortSaslCallback (const AbortSASLCallback &cb)
 
void abortSasl (uint reason, const QString &debugMessage, DBusError *error)
 
void newChallenge (const QByteArray &challengeData)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelSASLAuthenticationInterfacePtr 
create (const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)
 
template<typename BaseChannelSASLAuthenticationInterfaceSubclass >
static SharedPtr
< BaseChannelSASLAuthenticationInterfaceSubclass > 
create (const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)
 

Protected Member Functions

 BaseChannelSASLAuthenticationInterface (const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.SASLAuthentication.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelSASLAuthenticationInterface::~BaseChannelSASLAuthenticationInterface ( )
virtual

Class destructor.

Tp::BaseChannelSASLAuthenticationInterface::BaseChannelSASLAuthenticationInterface ( const QStringList &  availableMechanisms,
bool  hasInitialData,
bool  canTryAgain,
const QString &  authorizationIdentity,
const QString &  defaultUsername,
const QString &  defaultRealm,
bool  maySaveResponse 
)
protected

Class constructor.

Member Function Documentation

static BaseChannelSASLAuthenticationInterfacePtr Tp::BaseChannelSASLAuthenticationInterface::create ( const QStringList &  availableMechanisms,
bool  hasInitialData,
bool  canTryAgain,
const QString &  authorizationIdentity,
const QString &  defaultUsername,
const QString &  defaultRealm,
bool  maySaveResponse 
)
inlinestatic
template<typename BaseChannelSASLAuthenticationInterfaceSubclass >
static SharedPtr<BaseChannelSASLAuthenticationInterfaceSubclass> Tp::BaseChannelSASLAuthenticationInterface::create ( const QStringList &  availableMechanisms,
bool  hasInitialData,
bool  canTryAgain,
const QString &  authorizationIdentity,
const QString &  defaultUsername,
const QString &  defaultRealm,
bool  maySaveResponse 
)
inlinestatic
QVariantMap Tp::BaseChannelSASLAuthenticationInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

QStringList Tp::BaseChannelSASLAuthenticationInterface::availableMechanisms ( ) const
bool Tp::BaseChannelSASLAuthenticationInterface::hasInitialData ( ) const
bool Tp::BaseChannelSASLAuthenticationInterface::canTryAgain ( ) const
QString Tp::BaseChannelSASLAuthenticationInterface::authorizationIdentity ( ) const
QString Tp::BaseChannelSASLAuthenticationInterface::defaultUsername ( ) const
QString Tp::BaseChannelSASLAuthenticationInterface::defaultRealm ( ) const
bool Tp::BaseChannelSASLAuthenticationInterface::maySaveResponse ( ) const
uint Tp::BaseChannelSASLAuthenticationInterface::saslStatus ( ) const
void Tp::BaseChannelSASLAuthenticationInterface::setSaslStatus ( uint  status,
const QString &  reason,
const QVariantMap &  details 
)
QString Tp::BaseChannelSASLAuthenticationInterface::saslError ( ) const
void Tp::BaseChannelSASLAuthenticationInterface::setSaslError ( const QString &  saslError)
QVariantMap Tp::BaseChannelSASLAuthenticationInterface::saslErrorDetails ( ) const
void Tp::BaseChannelSASLAuthenticationInterface::setSaslErrorDetails ( const QVariantMap &  saslErrorDetails)
void Tp::BaseChannelSASLAuthenticationInterface::setStartMechanismCallback ( const StartMechanismCallback cb)
void Tp::BaseChannelSASLAuthenticationInterface::startMechanism ( const QString &  mechanism,
DBusError error 
)
void Tp::BaseChannelSASLAuthenticationInterface::setStartMechanismWithDataCallback ( const StartMechanismWithDataCallback cb)
void Tp::BaseChannelSASLAuthenticationInterface::startMechanismWithData ( const QString &  mechanism,
const QByteArray &  initialData,
DBusError error 
)
void Tp::BaseChannelSASLAuthenticationInterface::setRespondCallback ( const RespondCallback cb)
void Tp::BaseChannelSASLAuthenticationInterface::respond ( const QByteArray &  responseData,
DBusError error 
)
void Tp::BaseChannelSASLAuthenticationInterface::setAcceptSaslCallback ( const AcceptSASLCallback cb)
void Tp::BaseChannelSASLAuthenticationInterface::acceptSasl ( DBusError error)
void Tp::BaseChannelSASLAuthenticationInterface::setAbortSaslCallback ( const AbortSASLCallback cb)
void Tp::BaseChannelSASLAuthenticationInterface::abortSasl ( uint  reason,
const QString &  debugMessage,
DBusError error 
)
void Tp::BaseChannelSASLAuthenticationInterface::newChallenge ( const QByteArray &  challengeData)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00622_source.html0000644000175100017520000011565512530426257022527 0ustar00kaffeinekaffeine00000000000000 cli-call-stream-endpoint.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-stream-endpoint.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Call1.Stream.Endpoint");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
109  {
110  return internalRequestProperty(QLatin1String("RemoteCredentials"));
111  }
112 
123  {
124  return internalRequestProperty(QLatin1String("RemoteCandidates"));
125  }
126 
158  {
159  return internalRequestProperty(QLatin1String("SelectedCandidatePairs"));
160  }
161 
173  {
174  return internalRequestProperty(QLatin1String("EndpointState"));
175  }
176 
189  {
190  return internalRequestProperty(QLatin1String("Transport"));
191  }
192 
214  {
215  return internalRequestProperty(QLatin1String("Controlling"));
216  }
217 
229  {
230  return internalRequestProperty(QLatin1String("IsICELite"));
231  }
232 
240  {
241  return internalRequestAllProperties();
242  }
243 
244 public Q_SLOTS:
278  inline QDBusPendingReply<> SetSelectedCandidatePair(const Tp::Candidate& localCandidate, const Tp::Candidate& remoteCandidate, int timeout = -1)
279  {
280  if (!invalidationReason().isEmpty()) {
281  return QDBusPendingReply<>(QDBusMessage::createError(
282  invalidationReason(),
283  invalidationMessage()
284  ));
285  }
286 
287  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
288  this->staticInterfaceName(), QLatin1String("SetSelectedCandidatePair"));
289  callMessage << QVariant::fromValue(localCandidate) << QVariant::fromValue(remoteCandidate);
290  return this->connection().asyncCall(callMessage, timeout);
291  }
292 
311  inline QDBusPendingReply<> SetEndpointState(uint component, uint state, int timeout = -1)
312  {
313  if (!invalidationReason().isEmpty()) {
314  return QDBusPendingReply<>(QDBusMessage::createError(
315  invalidationReason(),
316  invalidationMessage()
317  ));
318  }
319 
320  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
321  this->staticInterfaceName(), QLatin1String("SetEndpointState"));
322  callMessage << QVariant::fromValue(component) << QVariant::fromValue(state);
323  return this->connection().asyncCall(callMessage, timeout);
324  }
325 
345  inline QDBusPendingReply<> AcceptSelectedCandidatePair(const Tp::Candidate& localCandidate, const Tp::Candidate& remoteCandidate, int timeout = -1)
346  {
347  if (!invalidationReason().isEmpty()) {
348  return QDBusPendingReply<>(QDBusMessage::createError(
349  invalidationReason(),
350  invalidationMessage()
351  ));
352  }
353 
354  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
355  this->staticInterfaceName(), QLatin1String("AcceptSelectedCandidatePair"));
356  callMessage << QVariant::fromValue(localCandidate) << QVariant::fromValue(remoteCandidate);
357  return this->connection().asyncCall(callMessage, timeout);
358  }
359 
379  inline QDBusPendingReply<> RejectSelectedCandidatePair(const Tp::Candidate& localCandidate, const Tp::Candidate& remoteCandidate, int timeout = -1)
380  {
381  if (!invalidationReason().isEmpty()) {
382  return QDBusPendingReply<>(QDBusMessage::createError(
383  invalidationReason(),
384  invalidationMessage()
385  ));
386  }
387 
388  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
389  this->staticInterfaceName(), QLatin1String("RejectSelectedCandidatePair"));
390  callMessage << QVariant::fromValue(localCandidate) << QVariant::fromValue(remoteCandidate);
391  return this->connection().asyncCall(callMessage, timeout);
392  }
393 
411  inline QDBusPendingReply<> SetControlling(bool controlling, int timeout = -1)
412  {
413  if (!invalidationReason().isEmpty()) {
414  return QDBusPendingReply<>(QDBusMessage::createError(
415  invalidationReason(),
416  invalidationMessage()
417  ));
418  }
419 
420  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
421  this->staticInterfaceName(), QLatin1String("SetControlling"));
422  callMessage << QVariant::fromValue(controlling);
423  return this->connection().asyncCall(callMessage, timeout);
424  }
425 
426 Q_SIGNALS:
442  void RemoteCredentialsSet(const QString& username, const QString& password);
443 
454  void RemoteCandidatesAdded(const Tp::CandidateList& candidates);
455 
473  void CandidatePairSelected(const Tp::Candidate& localCandidate, const Tp::Candidate& remoteCandidate);
474 
488  void EndpointStateChanged(uint component, uint state);
489 
499  void ControllingChanged(bool controlling);
500 
501 protected:
502  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
503 };
504 }
505 }
506 Q_DECLARE_METATYPE(Tp::Client::CallStreamEndpointInterface*)
Tp::PendingVariant * requestPropertyControlling() const
Definition: cli-call-stream-endpoint.h:213
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
QList< Candidate > CandidateList
Definition: build/TelepathyQt/_gen/types.h:413
Tp::PendingVariant * requestPropertySelectedCandidatePairs() const
Definition: cli-call-stream-endpoint.h:157
Tp::PendingVariant * requestPropertyEndpointState() const
Definition: cli-call-stream-endpoint.h:172
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariant * requestPropertyTransport() const
Definition: cli-call-stream-endpoint.h:188
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-stream-endpoint.h:239
Tp::PendingVariant * requestPropertyRemoteCandidates() const
Definition: cli-call-stream-endpoint.h:122
QDBusPendingReply SetSelectedCandidatePair(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)
Definition: cli-call-stream-endpoint.h:278
QDBusPendingReply SetControlling(bool controlling, int timeout=-1)
Definition: cli-call-stream-endpoint.h:411
Tp::PendingVariant * requestPropertyRemoteCredentials() const
Definition: cli-call-stream-endpoint.h:108
QDBusPendingReply SetEndpointState(uint component, uint state, int timeout=-1)
Definition: cli-call-stream-endpoint.h:311
QDBusPendingReply AcceptSelectedCandidatePair(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)
Definition: cli-call-stream-endpoint.h:345
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Definition: cli-call-stream-endpoint.h:44
Tp::PendingVariant * requestPropertyIsICELite() const
Definition: cli-call-stream-endpoint.h:228
Definition: build/TelepathyQt/_gen/types.h:379
static QLatin1String staticInterfaceName()
Definition: cli-call-stream-endpoint.h:55
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
QDBusPendingReply RejectSelectedCandidatePair(const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1)
Definition: cli-call-stream-endpoint.h:379


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00924.html0000644000175100017520000002236512530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseCallContent Member List

This is the complete list of members for Tp::BaseCallContent, including all inherited members.

BaseCallContent(const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)Tp::BaseCallContentprotected
busName() const Tp::DBusService
create(const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)Tp::BaseCallContentinlinestatic
dbusConnection() const Tp::DBusService
dbusObject() const Tp::DBusService
DBusService(const QDBusConnection &dbusConnection)Tp::DBusService
disposition() const Tp::BaseCallContent
immutableProperties() const Tp::BaseCallContentvirtual
interface(const QString &interfaceName) const Tp::BaseCallContent
interfaces() const Tp::BaseCallContent
isRegistered() const Tp::DBusService
name() const Tp::BaseCallContent
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusService
plugInterface(const AbstractCallContentInterfacePtr &interface)Tp::BaseCallContent
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerObject(DBusError *error=NULL)Tp::BaseCallContent
registerObject(const QString &busName, const QString &objectPath, DBusError *error)Tp::BaseCallContentprotectedvirtual
remove()Tp::BaseCallContentprotected
streams() const Tp::BaseCallContent
type() const Tp::BaseCallContent
uniqueName() const Tp::BaseCallContentvirtual
~BaseCallContent()Tp::BaseCallContentvirtual
~DBusService()Tp::DBusServicevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00423.html0000644000175100017520000032744012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::OutgoingStreamTubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The OutgoingStreamTubeChannel class represents an outgoing Telepathy channel of type StreamTube. More...

#include <TelepathyQt/OutgoingStreamTubeChannel>

Inherits Tp::StreamTubeChannel.

Public Member Functions

virtual ~OutgoingStreamTubeChannel ()
 
PendingOperationofferTcpSocket (const QHostAddress &address, quint16 port, const QVariantMap &parameters=QVariantMap())
 
PendingOperationofferTcpSocket (const QTcpServer *server, const QVariantMap &parameters=QVariantMap())
 
PendingOperationofferUnixSocket (const QString &socketAddress, const QVariantMap &parameters=QVariantMap(), bool requireCredentials=false)
 
PendingOperationofferUnixSocket (const QLocalServer *server, const QVariantMap &parameters=QVariantMap(), bool requireCredentials=false)
 
QHash< uint, Tp::ContactPtr > contactsForConnections () const
 
QHash< QPair< QHostAddress,
quint16 >, uint > 
connectionsForSourceAddresses () const
 
QHash< uchar, uint > connectionsForCredentials () const
 
- Public Member Functions inherited from Tp::StreamTubeChannel
virtual ~StreamTubeChannel ()
 
QString service () const
 
bool supportsIPv4SocketsOnLocalhost () const
 
bool supportsIPv4SocketsWithSpecifiedAddress () const
 
bool supportsIPv6SocketsOnLocalhost () const
 
bool supportsIPv6SocketsWithSpecifiedAddress () const
 
bool supportsUnixSocketsOnLocalhost () const
 
bool supportsUnixSocketsWithCredentials () const
 
bool supportsAbstractUnixSocketsOnLocalhost () const
 
bool supportsAbstractUnixSocketsWithCredentials () const
 
QSet< uint > connections () const
 
SocketAddressType addressType () const
 
QPair< QHostAddress, quint16 > ipAddress () const
 
QString localAddress () const
 
- Public Member Functions inherited from Tp::TubeChannel
virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static OutgoingStreamTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StreamTubeChannel
static StreamTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::TubeChannel
static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::StreamTubeChannel
static const Feature FeatureCore
 
static const Feature FeatureConnectionMonitoring
 
- Static Public Attributes inherited from Tp::TubeChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 OutgoingStreamTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=OutgoingStreamTubeChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::StreamTubeChannel
 StreamTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore)
 
void addConnection (uint connection)
 
void removeConnection (uint connection, const QString &error, const QString &message)
 
void setAddressType (SocketAddressType type)
 
SocketAccessControl accessControl () const
 
void setAccessControl (SocketAccessControl accessControl)
 
void setIpAddress (const QPair< QHostAddress, quint16 > &address)
 
void setLocalAddress (const QString &address)
 
bool isDroppingConnections () const
 
- Protected Member Functions inherited from Tp::TubeChannel
 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::StreamTubeChannel
void newConnection (uint connectionId)
 
void connectionClosed (uint connectionId, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::TubeChannel
void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The OutgoingStreamTubeChannel class represents an outgoing Telepathy channel of type StreamTube.

Outgoing (locally initiated/requested) tubes are initially in the TubeChannelStateNotOffered state. The various offer methods in this class can be used to offer a local listening TCP or Unix socket for the tube's target to connect to, at which point the tube becomes TubeChannelStateRemotePending. If the target accepts the connection request, the state goes TubeChannelStateOpen and the connection manager will start tunneling any incoming connections from the recipient side to the local service.

Constructor & Destructor Documentation

Tp::OutgoingStreamTubeChannel::~OutgoingStreamTubeChannel ( )
virtual

Class destructor.

Tp::OutgoingStreamTubeChannel::OutgoingStreamTubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = OutgoingStreamTubeChannel::FeatureCore 
)
protected

Construct a new OutgoingStreamTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on OutgoingStreamTubeChannel::FeatureCore.

Member Function Documentation

OutgoingStreamTubeChannelPtr Tp::OutgoingStreamTubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new OutgoingStreamTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A OutgoingStreamTubeChannelPtr object pointing to the newly created OutgoingStreamTubeChannel object.
PendingOperation * Tp::OutgoingStreamTubeChannel::offerTcpSocket ( const QHostAddress &  address,
quint16  port,
const QVariantMap &  parameters = QVariantMap() 
)

Offer a TCP socket over this stream tube.

This method offers a TCP socket over this tube. The socket's address is given as a QHostAddress and a numerical port in native byte order.

If your application uses QTcpServer as the local TCP server implementation, you can use the offerTcpSocket(const QTcpServer *, const QVariantMap &) overload instead to more easily pass the server's listen address.

It is guaranteed that when the PendingOperation returned by this method will be completed, the tube will be opened and ready to be used.

Connection managers adhering to the Telepathy specification should always support offering IPv4 TCP sockets. IPv6 sockets are only supported if supportsIPv6SocketsOnLocalhost() is true.

Note that the library will try to use SocketAccessControlPort access control whenever possible, as it allows to map connections to users based on their source addresses. If supportsIPv4SocketsWithSpecifiedAddress() or supportsIPv6SocketsWithSpecifiedAddress() for IPv4 and IPv6 sockets respectively is false, this feature is not available, and the connectionsForSourceAddresses() map won't contain useful distinct keys.

Arbitrary parameters can be associated with the offer to bootstrap legacy protocols; these will in particular be available as IncomingStreamTubeChannel::parameters() for a tube receiver implemented using TelepathyQt in the other end.

This method requires OutgoingStreamTubeChannel::FeatureCore to be ready.

Parameters
addressA valid IPv4 or IPv6 address pointing to an existing socket.
portThe port the socket is listening for connections to.
parametersA dictionary of arbitrary parameters to send with the tube offer.
Returns
A PendingOperation which will emit PendingOperation::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
PendingOperation * Tp::OutgoingStreamTubeChannel::offerTcpSocket ( const QTcpServer *  server,
const QVariantMap &  parameters = QVariantMap() 
)

Offer a TCP socket over this stream tube.

Otherwise identical to offerTcpSocket(const QHostAddress &, quint16, const QVariantMap &), but allows passing the local service's address in an already listening QTcpServer.

Parameters
serverA valid QTcpServer, which should be already listening for incoming connections.
parametersA dictionary of arbitrary parameters to send with the tube offer.
Returns
A PendingOperation which will emit PendingOperation::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
PendingOperation * Tp::OutgoingStreamTubeChannel::offerUnixSocket ( const QString &  socketAddress,
const QVariantMap &  parameters = QVariantMap(),
bool  requireCredentials = false 
)

Offer an Unix socket over this stream tube.

This method offers an Unix socket over this stream tube. The socket address is given as a a QString, which should contain the path to the socket. Abstract Unix sockets are also supported, and are given as addresses prefixed with a NUL byte.

If your application uses QLocalServer as the local Unix server implementation, you can use the offerUnixSocket(const QLocalServer *, const QVariantMap &, bool) overload instead to more easily pass the server's listen address.

Note that only connection managers for which supportsUnixSocketsOnLocalhost() or supportsAbstractUnixSocketsOnLocalhost() is true support exporting Unix sockets.

If supportsUnixSocketsWithCredentials() or supportsAbstractUnixSocketsWithCredentials(), as appropriate, returns true, the requireCredentials parameter can be set to true to make the connection manager pass an SCM_CREDS or SCM_CREDENTIALS message as supported by the platform when making a new connection. This enables preventing other local users from connecting to the service, but might not be possible to use with all protocols as the message is in-band in the data stream.

Arbitrary parameters can be associated with the offer to bootstrap legacy protocols; these will in particular be available as IncomingStreamTubeChannel::parameters() for a tube receiver implemented using TelepathyQt in the other end.

This method requires OutgoingStreamTubeChannel::FeatureCore to be ready.

Parameters
socketAddressA valid path to an existing Unix socket or abstract Unix socket.
parametersA dictionary of arbitrary parameters to send with the tube offer.
requireCredentialsWhether the server requires a SCM_CREDS or SCM_CREDENTIALS message upon connection.
Returns
A PendingOperation which will emit PendingOperation::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
PendingOperation * Tp::OutgoingStreamTubeChannel::offerUnixSocket ( const QLocalServer *  server,
const QVariantMap &  parameters = QVariantMap(),
bool  requireCredentials = false 
)

Offer an Unix socket over the tube.

Otherwise identical to offerUnixSocket(const QString &, const QVariantMap &, bool), but allows passing the local service's address as an already listening QLocalServer.

This method requires OutgoingStreamTubeChannel::FeatureCore to be ready.

Parameters
serverA valid QLocalServer, which should be already listening for incoming connections.
parametersA dictionary of arbitrary parameters to send with the tube offer.
requireCredentialsWhether the server should require a SCM_CRED or SCM_CREDENTIALS message upon connection.
Returns
A PendingOperation which will emit PendingOperation::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
See Also
StreamTubeChannel::supportsUnixSocketsOnLocalhost(), StreamTubeChannel::supportsUnixSocketsWithCredentials(), StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost(), StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials()
QHash< uint, ContactPtr > Tp::OutgoingStreamTubeChannel::contactsForConnections ( ) const

Return a map from connection ids to the associated contact.

Note that this function will only return valid data after the tube has been opened.

This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready.

Returns
The map from connection ids to pointer to Contact objects.
See Also
connectionsForSourceAddresses(), connectionsForCredentials(), StreamTubeChannel::addressType()
QHash< QPair< QHostAddress, quint16 >, uint > Tp::OutgoingStreamTubeChannel::connectionsForSourceAddresses ( ) const

Return a map from a source address to the corresponding connections ids.

The connection ids retrieved here can be used to map a source address which connected to your socket to a connection ID (for error reporting) and further, to a contact (by using contactsForConnections()).

This method is only useful if a TCP socket was offered on this tube and the connection manager supports SocketAccessControlPort, which can be discovered using supportsIPv4SocketsWithSpecifiedAddress() and supportsIPv6SocketsWithSpecifiedAddress() for IPv4 and IPv6 sockets respectively.

Note that this function will only return valid data after the tube has been opened.

This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready.

Returns
The map from source addresses as (QHostAddress, port in native byte order) pairs to the corresponding connection ids.
See Also
connectionsForCredentials()
QHash< uchar, uint > Tp::OutgoingStreamTubeChannel::connectionsForCredentials ( ) const

Return a map from a credential byte to the corresponding connections ids.

The connection ids retrieved here can be used to map a source address which connected to your socket to a connection ID (for error reporting) and further, to a contact (by using contactsForConnections()).

This method is only useful if this tube was offered using an Unix socket and passing credential bytes was enabled (requireCredentials == true).

Note that this function will only return valid data after the tube has been opened.

This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready.

Returns
The map from credential bytes to the corresponding connection ids.
See Also
connectionsForSourceAddresses()

Member Data Documentation

const Feature Tp::OutgoingStreamTubeChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the OutgoingStreamTubeChannel object usable.

This is currently the same as StreamTubeChannel::FeatureCore, but may change to include more.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00178.html0000644000175100017520000015747412530426260021154 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelDispatcherInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ChannelDispatcher>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< QDBusObjectPath > 
CreateChannel (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)
 
QDBusPendingReply
< QDBusObjectPath > 
EnsureChannel (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)
 
QDBusPendingReply
< QDBusObjectPath > 
CreateChannelWithHints (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1)
 
QDBusPendingReply
< QDBusObjectPath > 
EnsureChannelWithHints (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1)
 
QDBusPendingReply
< Tp::ObjectPathList,
Tp::NotDelegatedMap
DelegateChannels (const Tp::ObjectPathList &channels, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1)
 
QDBusPendingReply PresentChannel (const QDBusObjectPath &channel, qlonglong userActionTime, int timeout=-1)
 

Public Member Functions

 ChannelDispatcherInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelDispatcherInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelDispatcherInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertySupportsRequestHints () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ChannelDispatcherInterface::ChannelDispatcherInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelDispatcherInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelDispatcherInterface::ChannelDispatcherInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelDispatcherInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelDispatcherInterface::ChannelDispatcherInterface ( Tp::DBusProxy proxy)

Creates a ChannelDispatcherInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ChannelDispatcherInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.ChannelDispatcher", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelDispatcherInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the extra interfaces provided by this channel dispatcher.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelDispatcherInterface::requestPropertySupportsRequestHints ( ) const
inline

Asynchronous getter for the remote object property SupportsRequestHints of type bool.

If True, the channel dispatcher is new enough to support CreateChannelWithHints and EnsureChannelWithHints, in addition to the older CreateChannel and EnsureChannel methods, and also new enough to emit SucceededWithChannel before the older Succeeded signal. If False or missing, only the metadata-less variants are supported.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelDispatcherInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QDBusObjectPath> Tp::Client::ChannelDispatcherInterface::CreateChannel ( const QDBusObjectPath &  account,
const QVariantMap &  requestedProperties,
qlonglong  userActionTime,
const QString &  preferredHandler,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CreateChannel on the remote object.

Equivalent to calling CreateChannelWithHints() with an empty Hints parameter.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account for which the new channel is to be created.
requestedProperties

A dictionary containing desirable properties.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

userActionTime

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

preferredHandler

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

timeoutThe timeout in milliseconds.
Returns
A ChannelRequest object.
QDBusPendingReply<QDBusObjectPath> Tp::Client::ChannelDispatcherInterface::EnsureChannel ( const QDBusObjectPath &  account,
const QVariantMap &  requestedProperties,
qlonglong  userActionTime,
const QString &  preferredHandler,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method EnsureChannel on the remote object.

Equivalent to calling EnsureChannelWithHints() with an empty Hints parameter.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account for which the new channel is to be created.
requestedProperties

A dictionary containing desirable properties.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

userActionTime

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

preferredHandler

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable. The behaviour and rationale are the same as for the corresponding parameter to EnsureChannelWithHints() .

timeoutThe timeout in milliseconds.
Returns
A ChannelRequest object.
QDBusPendingReply<QDBusObjectPath> Tp::Client::ChannelDispatcherInterface::CreateChannelWithHints ( const QDBusObjectPath &  account,
const QVariantMap &  requestedProperties,
qlonglong  userActionTime,
const QString &  preferredHandler,
const QVariantMap &  hints,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CreateChannelWithHints on the remote object.

Start a request to create a channel. This initially just creates a ChannelRequestInterface object, which can be used to continue the request and track its success or failure.

The request can take a long time - in the worst case, the channel dispatcher has to ask the account manager to put the account online, the account manager has to ask the operating system to obtain an Internet connection, and the operating system has to ask the user whether to activate an Internet connection using an on-demand mechanism like dialup.

This means that using a single D-Bus method call and response to represent the whole request will tend to lead to that call timing out, which is not the behaviour we want.

If this method is called for an Account that is disabled, invalid or otherwise unusable, no error is signalled until ChannelRequestInterface::Proceed() is called, at which point ChannelRequestInterface::Failed() is emitted with an appropriate error.

This means there's only one code path for errors, apart from InvalidArgument for "that request makes no sense".

It also means that the request will proceed if the account is enabled after calling CreateChannel, but before calling Proceed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account for which the new channel is to be created.
requestedProperties

A dictionary containing desirable properties. This has the same semantics as the corresponding parameter to ConnectionInterfaceRequestsInterface::CreateChannel() .

Certain properties will not necessarily make sense in this dictionary: for instance, ChannelInterface::TargetHandle can only be given if the requester is able to interact with a ConnectionInterface to the desired account.

userActionTime

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action. The ChannelRequestInterface::UserActionTime property will be set to this value, and it will eventually be passed as the User_Action_Time parameter of ClientHandlerInterface::HandleChannels() .

preferredHandler

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable. The channel dispatcher SHOULD dispatch as many as possible of the resulting channels (ideally, all of them) to that handler—irrespective of whether that handler's ClientHandlerInterface::HandlerChannelFilter matches the channel—and SHOULD remember the preferred handler so it can try to dispatch subsequent channels in the same bundle to the same handler.

This must be the well-known bus name, not the unique name, to ensure that all handlers do indeed have the Client API, and the Client object on the handler can be located easily.

This is partly so the channel dispatcher can call ClientHandlerInterface::HandleChannels() on it, and partly so the channel dispatcher can recover state if it crashes and is restarted.

The filter should be disregarded for ease of use of this interface: clients will usually use this argument to request channels be sent to themself, and this should trump the filter not matching. This also allows a client to become the handler for a channel produced by one of its own requests, while not being a candidate to handle other channels of that type.

If this is a well-known bus name and the handler has the Requests interface, the channel dispatcher SHOULD call ClientInterfaceRequestsInterface::AddRequest() on that Handler after this method has returned.

This ordering allows a Handler which calls CreateChannel with itself as the preferred handler to associate the call to AddRequest with that call.

This is copied to the ChannelRequest that is returned, as the ChannelRequestInterface::PreferredHandler property.

hints
Additional information about the channel request, which will be 
used as the value for the resulting request&apos;s Hints property. 
See the Hints property&apos;s documentation for rationale.
timeoutThe timeout in milliseconds.
Returns
A ChannelRequest object.
QDBusPendingReply<QDBusObjectPath> Tp::Client::ChannelDispatcherInterface::EnsureChannelWithHints ( const QDBusObjectPath &  account,
const QVariantMap &  requestedProperties,
qlonglong  userActionTime,
const QString &  preferredHandler,
const QVariantMap &  hints,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method EnsureChannelWithHints on the remote object.

Start a request to ensure that a channel exists, creating it if necessary. This initially just creates a ChannelRequestInterface object, which can be used to continue the request and track its success or failure.

If this method is called for an Account that is disabled, invalid or otherwise unusable, no error is signalled until ChannelRequestInterface::Proceed() is called, at which point ChannelRequestInterface::Failed() is emitted with an appropriate error.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account for which the new channel is to be created.
requestedProperties

A dictionary containing desirable properties. This has the same semantics as the corresponding parameter to ConnectionInterfaceRequestsInterface::EnsureChannel() .

Certain properties will not necessarily make sense in this dictionary: for instance, ChannelInterface::TargetHandle can only be given if the requester is able to interact with a ConnectionInterface to the desired account.

userActionTime

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

preferredHandler

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable. The behaviour and rationale are the same as for the corresponding parameter to CreateChannelWithHints() , except as noted here.

If any new channels are created in response to this request, the channel dispatcher SHOULD dispatch as many as possible of the resulting channels (ideally, all of them) to that handler, and SHOULD remember the preferred handler so it can try to dispatch subsequent channels in the same bundle to the same handler. If the requested channel already exists (that is, ConnectionInterfaceRequestsInterface::EnsureChannel() returns Yours=False) then the channel dispatcher SHOULD re-dispatch the channel to its existing handler, and MUST NOT dispatch it to this client (unless it is the existing handler); the request is still deemed to have succeeded in this case.

An address book application, for example, might call ChannelDispatcherInterface::EnsureChannel() to ensure that a text channel with a particular contact is displayed to the user; it does not care whether a new channel was made. An IM client might call ChannelDispatcherInterface::EnsureChannel() in response to the user double-clicking an entry in the contact list, with itself as the Preferred_Handler; if the user already has a conversation with that contact in another application, they would expect the existing window to be presented, rather than their double-click leading to an error message. So the request should succeed, even if its Preferred_Handler is not used.

hints
Additional information about the channel request, which will be 
used as the value for the resulting request&apos;s Hints property.
timeoutThe timeout in milliseconds.
Returns
A ChannelRequest object.
QDBusPendingReply<Tp::ObjectPathList, Tp::NotDelegatedMap> Tp::Client::ChannelDispatcherInterface::DelegateChannels ( const Tp::ObjectPathList channels,
qlonglong  userActionTime,
const QString &  preferredHandler,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method DelegateChannels on the remote object.

Called by a ClientHandlerInterface to redispatch a bunch of channels it is currently handling.

For each Channel in Channels, if another ClientHandlerInterface can be found, ClientHandlerInterface::HandleChannels() will be called on it until a ClientHandlerInterface accepts it.

This method returns once all the Channels have either been accepted or rejected by Handlers.

If this method fails, the original ClientHandlerInterface is still handling the channels.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
channels

The list of channels to redispatch. The caller has to be the current ClientHandlerInterface of all of these channels

userActionTime

The time at which user action occurred, or 0 if this channels delegation is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints() .

preferredHandler

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred new handler for these channels, or an empty string to indicate that any handler would be acceptable. The behaviour and rationale are the same as for the corresponding parameter to CreateChannelWithHints() .

timeoutThe timeout in milliseconds.
Returns

The list of channels which have been delegated; the caller is no longer handling these channels.

The client should remove these channels from its ClientHandlerInterface::HandledChannels property.

Returns

The list of channels which have NOT been delegated; the caller is still handling these channels.

QDBusPendingReply Tp::Client::ChannelDispatcherInterface::PresentChannel ( const QDBusObjectPath &  channel,
qlonglong  userActionTime,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method PresentChannel on the remote object.

Equivalent of calling ChannelDispatcherInterface::EnsureChannel() with a Requested_Properties which would result in ensuring Channel.

If Channel is handled, its handler will be asked to present it the user (e.g. bring it into the foreground).

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
channel

The channel to present.

userActionTime

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to EnsureChannelWithHints() .

timeoutThe timeout in milliseconds.
void Tp::Client::ChannelDispatcherInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00619_source.html0000644000175100017520000027736312530426257022542 0ustar00kaffeinekaffeine00000000000000 cli-call-content.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-call-content.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT CallContentInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Call1.Content");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
112  {
113  return internalRequestProperty(QLatin1String("Interfaces"));
114  }
115 
136  {
137  return internalRequestProperty(QLatin1String("Name"));
138  }
139 
152  {
153  return internalRequestProperty(QLatin1String("Type"));
154  }
155 
166  {
167  return internalRequestProperty(QLatin1String("Disposition"));
168  }
169 
196  {
197  return internalRequestProperty(QLatin1String("Streams"));
198  }
199 
207  {
208  return internalRequestAllProperties();
209  }
210 
211 public Q_SLOTS:
224  inline QDBusPendingReply<> Remove(int timeout = -1)
225  {
226  if (!invalidationReason().isEmpty()) {
227  return QDBusPendingReply<>(QDBusMessage::createError(
228  invalidationReason(),
229  invalidationMessage()
230  ));
231  }
232 
233  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
234  this->staticInterfaceName(), QLatin1String("Remove"));
235  return this->connection().asyncCall(callMessage, timeout);
236  }
237 
238 Q_SIGNALS:
250  void StreamsAdded(const Tp::ObjectPathList& streams);
251 
267  void StreamsRemoved(const Tp::ObjectPathList& streams, const Tp::CallStateReason& reason);
268 
269 protected:
270  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
271 };
272 
281 {
282  Q_OBJECT
283 
284 public:
291  static inline QLatin1String staticInterfaceName()
292  {
293  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl");
294  }
295 
304  const QString& busName,
305  const QString& objectPath,
306  QObject* parent = 0
307  );
308 
318  const QDBusConnection& connection,
319  const QString& busName,
320  const QString& objectPath,
321  QObject* parent = 0
322  );
323 
331 
340 
349 
362  {
363  return internalRequestProperty(QLatin1String("RequestedInputVolume"));
364  }
365 
378  {
379  return internalRequestProperty(QLatin1String("RequestedOutputVolume"));
380  }
381 
389  {
390  return internalRequestAllProperties();
391  }
392 
393 public Q_SLOTS:
411  inline QDBusPendingReply<> ReportInputVolume(int volume, int timeout = -1)
412  {
413  if (!invalidationReason().isEmpty()) {
414  return QDBusPendingReply<>(QDBusMessage::createError(
415  invalidationReason(),
416  invalidationMessage()
417  ));
418  }
419 
420  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
421  this->staticInterfaceName(), QLatin1String("ReportInputVolume"));
422  callMessage << QVariant::fromValue(volume);
423  return this->connection().asyncCall(callMessage, timeout);
424  }
425 
443  inline QDBusPendingReply<> ReportOutputVolume(int volume, int timeout = -1)
444  {
445  if (!invalidationReason().isEmpty()) {
446  return QDBusPendingReply<>(QDBusMessage::createError(
447  invalidationReason(),
448  invalidationMessage()
449  ));
450  }
451 
452  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
453  this->staticInterfaceName(), QLatin1String("ReportOutputVolume"));
454  callMessage << QVariant::fromValue(volume);
455  return this->connection().asyncCall(callMessage, timeout);
456  }
457 
458 protected:
459  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
460 };
461 
470 {
471  Q_OBJECT
472 
473 public:
480  static inline QLatin1String staticInterfaceName()
481  {
482  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.DTMF");
483  }
484 
493  const QString& busName,
494  const QString& objectPath,
495  QObject* parent = 0
496  );
497 
507  const QDBusConnection& connection,
508  const QString& busName,
509  const QString& objectPath,
510  QObject* parent = 0
511  );
512 
520 
529 
537  CallContentInterfaceDTMFInterface(const Tp::Client::CallContentInterface& mainInterface, QObject* parent);
538 
551  {
552  return internalRequestProperty(QLatin1String("CurrentlySendingTones"));
553  }
554 
573  {
574  return internalRequestProperty(QLatin1String("DeferredTones"));
575  }
576 
584  {
585  return internalRequestAllProperties();
586  }
587 
588 public Q_SLOTS:
612  inline QDBusPendingReply<> StartTone(uchar event, int timeout = -1)
613  {
614  if (!invalidationReason().isEmpty()) {
615  return QDBusPendingReply<>(QDBusMessage::createError(
616  invalidationReason(),
617  invalidationMessage()
618  ));
619  }
620 
621  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
622  this->staticInterfaceName(), QLatin1String("StartTone"));
623  callMessage << QVariant::fromValue(event);
624  return this->connection().asyncCall(callMessage, timeout);
625  }
626 
642  inline QDBusPendingReply<> StopTone(int timeout = -1)
643  {
644  if (!invalidationReason().isEmpty()) {
645  return QDBusPendingReply<>(QDBusMessage::createError(
646  invalidationReason(),
647  invalidationMessage()
648  ));
649  }
650 
651  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
652  this->staticInterfaceName(), QLatin1String("StopTone"));
653  return this->connection().asyncCall(callMessage, timeout);
654  }
655 
701  inline QDBusPendingReply<> MultipleTones(const QString& tones, int timeout = -1)
702  {
703  if (!invalidationReason().isEmpty()) {
704  return QDBusPendingReply<>(QDBusMessage::createError(
705  invalidationReason(),
706  invalidationMessage()
707  ));
708  }
709 
710  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
711  this->staticInterfaceName(), QLatin1String("MultipleTones"));
712  callMessage << QVariant::fromValue(tones);
713  return this->connection().asyncCall(callMessage, timeout);
714  }
715 
716 Q_SIGNALS:
743  void TonesDeferred(const QString& tones);
744 
761  void SendingTones(const QString& tones);
762 
774  void StoppedTones(bool cancelled);
775 
776 protected:
777  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
778 };
779 
788 {
789  Q_OBJECT
790 
791 public:
798  static inline QLatin1String staticInterfaceName()
799  {
800  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.Media");
801  }
802 
811  const QString& busName,
812  const QString& objectPath,
813  QObject* parent = 0
814  );
815 
825  const QDBusConnection& connection,
826  const QString& busName,
827  const QString& objectPath,
828  QObject* parent = 0
829  );
830 
838 
847 
855  CallContentInterfaceMediaInterface(const Tp::Client::CallContentInterface& mainInterface, QObject* parent);
856 
870  {
871  return internalRequestProperty(QLatin1String("RemoteMediaDescriptions"));
872  }
873 
885  {
886  return internalRequestProperty(QLatin1String("LocalMediaDescriptions"));
887  }
888 
918  {
919  return internalRequestProperty(QLatin1String("MediaDescriptionOffer"));
920  }
921 
934  {
935  return internalRequestProperty(QLatin1String("Packetization"));
936  }
937 
949  {
950  return internalRequestProperty(QLatin1String("CurrentDTMFEvent"));
951  }
952 
964  {
965  return internalRequestProperty(QLatin1String("CurrentDTMFState"));
966  }
967 
975  {
976  return internalRequestAllProperties();
977  }
978 
979 public Q_SLOTS:
1000  inline QDBusPendingReply<> UpdateLocalMediaDescription(const QVariantMap& mediaDescription, int timeout = -1)
1001  {
1002  if (!invalidationReason().isEmpty()) {
1003  return QDBusPendingReply<>(QDBusMessage::createError(
1004  invalidationReason(),
1005  invalidationMessage()
1006  ));
1007  }
1008 
1009  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1010  this->staticInterfaceName(), QLatin1String("UpdateLocalMediaDescription"));
1011  callMessage << QVariant::fromValue(mediaDescription);
1012  return this->connection().asyncCall(callMessage, timeout);
1013  }
1014 
1036  inline QDBusPendingReply<> AcknowledgeDTMFChange(uchar event, uint state, int timeout = -1)
1037  {
1038  if (!invalidationReason().isEmpty()) {
1039  return QDBusPendingReply<>(QDBusMessage::createError(
1040  invalidationReason(),
1041  invalidationMessage()
1042  ));
1043  }
1044 
1045  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1046  this->staticInterfaceName(), QLatin1String("AcknowledgeDTMFChange"));
1047  callMessage << QVariant::fromValue(event) << QVariant::fromValue(state);
1048  return this->connection().asyncCall(callMessage, timeout);
1049  }
1050 
1065  inline QDBusPendingReply<> Fail(const Tp::CallStateReason& reason, int timeout = -1)
1066  {
1067  if (!invalidationReason().isEmpty()) {
1068  return QDBusPendingReply<>(QDBusMessage::createError(
1069  invalidationReason(),
1070  invalidationMessage()
1071  ));
1072  }
1073 
1074  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1075  this->staticInterfaceName(), QLatin1String("Fail"));
1076  callMessage << QVariant::fromValue(reason);
1077  return this->connection().asyncCall(callMessage, timeout);
1078  }
1079 
1080 Q_SIGNALS:
1112  void NewMediaDescriptionOffer(const QDBusObjectPath& mediaDescription, const QVariantMap& properties);
1113 
1125  void MediaDescriptionOfferDone();
1126 
1142  void LocalMediaDescriptionChanged(const QVariantMap& updatedMediaDescription);
1143 
1159  void RemoteMediaDescriptionsChanged(const Tp::ContactMediaDescriptionPropertiesMap& updatedMediaDescriptions);
1160 
1179  void MediaDescriptionsRemoved(const Tp::UIntList& removedMediaDescriptions);
1180 
1198  void DTMFChangeRequested(uchar event, uint state);
1199 
1200 protected:
1201  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1202 };
1203 
1212 {
1213  Q_OBJECT
1214 
1215 public:
1222  static inline QLatin1String staticInterfaceName()
1223  {
1224  return QLatin1String("org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl");
1225  }
1226 
1235  const QString& busName,
1236  const QString& objectPath,
1237  QObject* parent = 0
1238  );
1239 
1249  const QDBusConnection& connection,
1250  const QString& busName,
1251  const QString& objectPath,
1252  QObject* parent = 0
1253  );
1254 
1262 
1271 
1279  CallContentInterfaceVideoControlInterface(const Tp::Client::CallContentInterface& mainInterface, QObject* parent);
1280 
1292  {
1293  return internalRequestProperty(QLatin1String("VideoResolution"));
1294  }
1295 
1307  {
1308  return internalRequestProperty(QLatin1String("Bitrate"));
1309  }
1310 
1322  {
1323  return internalRequestProperty(QLatin1String("Framerate"));
1324  }
1325 
1337  {
1338  return internalRequestProperty(QLatin1String("MTU"));
1339  }
1340 
1351  {
1352  return internalRequestProperty(QLatin1String("ManualKeyFrames"));
1353  }
1354 
1362  {
1363  return internalRequestAllProperties();
1364  }
1365 
1366 Q_SIGNALS:
1373  void KeyFrameRequested();
1374 
1380  void VideoResolutionChanged(const Tp::VideoResolution& newResolution);
1381 
1387  void BitrateChanged(uint newBitrate);
1388 
1394  void FramerateChanged(uint newFramerate);
1395 
1401  void MTUChanged(uint newMTU);
1402 
1403 protected:
1404  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1405 };
1406 }
1407 }
1408 Q_DECLARE_METATYPE(Tp::Client::CallContentInterface*)
1409 Q_DECLARE_METATYPE(Tp::Client::CallContentInterfaceAudioControlInterface*)
1410 Q_DECLARE_METATYPE(Tp::Client::CallContentInterfaceDTMFInterface*)
1411 Q_DECLARE_METATYPE(Tp::Client::CallContentInterfaceMediaInterface*)
1412 Q_DECLARE_METATYPE(Tp::Client::CallContentInterfaceVideoControlInterface*)
Tp::PendingVariant * requestPropertyCurrentDTMFState() const
Definition: cli-call-content.h:963
QDBusPendingReply UpdateLocalMediaDescription(const QVariantMap &mediaDescription, int timeout=-1)
Definition: cli-call-content.h:1000
QDBusPendingReply MultipleTones(const QString &tones, int timeout=-1)
Definition: cli-call-content.h:701
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
static QLatin1String staticInterfaceName()
Definition: cli-call-content.h:1222
Definition: cli-call-content.h:787
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content.h:388
Definition: build/TelepathyQt/_gen/types.h:320
Tp::PendingVariant * requestPropertyPacketization() const
Definition: cli-call-content.h:933
Definition: cli-call-content.h:44
static QLatin1String staticInterfaceName()
Definition: cli-call-content.h:291
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Definition: build/TelepathyQt/_gen/types.h:3277
Tp::PendingVariant * requestPropertyRequestedOutputVolume() const
Definition: cli-call-content.h:377
QDBusPendingReply ReportOutputVolume(int volume, int timeout=-1)
Definition: cli-call-content.h:443
Tp::PendingVariant * requestPropertyCurrentDTMFEvent() const
Definition: cli-call-content.h:948
Definition: build/TelepathyQt/_gen/types.h:101
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content.h:206
QDBusPendingReply ReportInputVolume(int volume, int timeout=-1)
Definition: cli-call-content.h:411
Definition: build/TelepathyQt/_gen/types.h:81
Definition: cli-call-content.h:469
static QLatin1String staticInterfaceName()
Definition: cli-call-content.h:480
Tp::PendingVariant * requestPropertyBitrate() const
Definition: cli-call-content.h:1306
QDBusPendingReply Fail(const Tp::CallStateReason &reason, int timeout=-1)
Definition: cli-call-content.h:1065
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content.h:583
Tp::PendingVariant * requestPropertyManualKeyFrames() const
Definition: cli-call-content.h:1350
Definition: build/TelepathyQt/_gen/types.h:1220
Tp::PendingVariant * requestPropertyCurrentlySendingTones() const
Definition: cli-call-content.h:550
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content.h:1361
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingVariant * requestPropertyRequestedInputVolume() const
Definition: cli-call-content.h:361
Tp::PendingVariant * requestPropertyFramerate() const
Definition: cli-call-content.h:1321
Tp::PendingVariant * requestPropertyDeferredTones() const
Definition: cli-call-content.h:572
Tp::PendingVariant * requestPropertyType() const
Definition: cli-call-content.h:151
Tp::PendingVariant * requestPropertyStreams() const
Definition: cli-call-content.h:195
static QLatin1String staticInterfaceName()
Definition: cli-call-content.h:798
Tp::PendingVariant * requestPropertyDisposition() const
Definition: cli-call-content.h:165
Tp::PendingVariant * requestPropertyMediaDescriptionOffer() const
Definition: cli-call-content.h:917
static QLatin1String staticInterfaceName()
Definition: cli-call-content.h:55
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-call-content.h:111
QDBusPendingReply StopTone(int timeout=-1)
Definition: cli-call-content.h:642
Tp::PendingVariant * requestPropertyName() const
Definition: cli-call-content.h:135
Tp::PendingVariant * requestPropertyMTU() const
Definition: cli-call-content.h:1336
QDBusPendingReply Remove(int timeout=-1)
Definition: cli-call-content.h:224
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyLocalMediaDescriptions() const
Definition: cli-call-content.h:884
QDBusPendingReply AcknowledgeDTMFChange(uchar event, uint state, int timeout=-1)
Definition: cli-call-content.h:1036
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-call-content.h:974
Tp::PendingVariant * requestPropertyRemoteMediaDescriptions() const
Definition: cli-call-content.h:869
Tp::PendingVariant * requestPropertyVideoResolution() const
Definition: cli-call-content.h:1291
QDBusPendingReply StartTone(uchar event, int timeout=-1)
Definition: cli-call-content.h:612


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01139.html0000644000175100017520000000526612530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CaptchaAnswers Member List

This is the complete list of members for Tp::CaptchaAnswers, including all inherited members.

CaptchaAnswers()Tp::CaptchaAnswersinline
CaptchaAnswers(const QMap< uint, QString > &a)Tp::CaptchaAnswersinline
operator=(const QMap< uint, QString > &a)Tp::CaptchaAnswersinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00993.html0000644000175100017520000001071112530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelRequestHints Member List

This is the complete list of members for Tp::ChannelRequestHints, including all inherited members.

allHints() const Tp::ChannelRequestHints
ChannelRequestHints()Tp::ChannelRequestHints
ChannelRequestHints(const QVariantMap &hints)Tp::ChannelRequestHints
ChannelRequestHints(const ChannelRequestHints &other)Tp::ChannelRequestHints
hasHint(const QString &reversedDomain, const QString &localName) const Tp::ChannelRequestHints
hint(const QString &reversedDomain, const QString &localName) const Tp::ChannelRequestHints
isValid() const Tp::ChannelRequestHints
operator=(const ChannelRequestHints &other)Tp::ChannelRequestHints
setHint(const QString &reversedDomain, const QString &localName, const QVariant &value)Tp::ChannelRequestHints
~ChannelRequestHints()Tp::ChannelRequestHints


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00492.html0000644000175100017520000001542312530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::RequestableChannelClass Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RequestableChannelClass Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QVariantMap fixedProperties
 
QStringList allowedProperties
 

Detailed Description

Structure type generated from the specification.

Structure representing a class of channels that can be requested, identified by a set of properties that identify that class of channel.

This will often just be the channel type and the handle type, but can include other properties of the channel - for instance, encrypted channels might require properties that unencrypted channels do not, like an encryption key.

In some cases, these classes of channel may overlap, in the sense that one class fixes all the properties that another class does, plus some more properties.

For older clients to still be able to understand how to request channels in the presence of a hypothetical "encryption" interface, we'd need to represent it like this:

  • class 1: ChannelType = Text, TargetHandleType = CONTACT
  • class 2: Channel.ChannelType = Text, Channel.TargetHandleType = CONTACT, Encryption.Encrypted = TRUE

Member Data Documentation

QVariantMap Tp::RequestableChannelClass::fixedProperties

The property values that identify this requestable channel class. These properties MUST be included in requests for a channel of this class, and MUST take these values.

Clients that do not understand the semantics of all the Fixed_Properties MUST NOT request channels of this class, since they would be unable to avoid making an incorrect request.

This implies that connection managers wishing to make channels available to old or minimal clients SHOULD have a channel class with the minimum number of Fixed_Properties, and MAY additionally have channel classes with extra Fixed_Properties.

Interface designers SHOULD avoid introducing fixed properties whose types are not serializable in a .manager file.

Connection managers with a fixed property that is not serializable cannot have a complete .manager file.

QStringList Tp::RequestableChannelClass::allowedProperties

Properties that MAY be set when requesting a channel of this channel type and handle type.

This array MUST NOT include properties that are in the Fixed_Properties mapping.

Properties in this array may either be required or optional, according to their documented semantics.

For instance, if TargetHandleType takes a value that is not Handle_Type_None, one or the other of TargetHandle and TargetID is required. Clients are expected to understand the documented relationship between the properties, so we do not have separate arrays of required and optional properties.

If this array contains the org.freedesktop.Telepathy.Channel.FUTURE.Bundle property, then this class of channel can be combined with other channels with that property in a request, or added to an existing bundle. If not, this signifies that the connection manager is unable to mark channels of this class as part of a bundle - this means that to the remote contact they are likely to be indistinguishable from channels requested separately.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00237.html0000644000175100017520000004347112530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeDBusTubeAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeDBusTubeAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

QString Offer (const QVariantMap &parameters, uint accesscontrol, const QDBusMessage &dbusMessage)
 
QString Accept (uint accesscontrol, const QDBusMessage &dbusMessage)
 

Signals

void DBusNamesChanged (const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed)
 

Public Member Functions

QString ServiceName () const
 
Tp::DBusTubeParticipants DBusNames () const
 
Tp::UIntList SupportedAccessControls () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelTypeDBusTubeAdaptor::ServiceName ( ) const

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

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

A string representing the service name that will be used over the tube. It SHOULD be a well-known D-Bus service name, of the form com.example.ServiceName.

When the tube is offered, the service name is transmitted to the other end.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST be included in the request.

Returns
The value of exported property ServiceName.
Tp::DBusTubeParticipants Tp::Service::ChannelTypeDBusTubeAdaptor::DBusNames ( ) const

Return the value of the exported D-Bus object property DBusNames of type Tp::DBusTubeParticipants.

Adaptees should export this property as a Qt property named 'dbusNames' with type Tp::DBusTubeParticipants.

For a multi-user (i.e. Handle_Type_Room) D-Bus tube, a mapping between contact handles and their unique bus names on this tube. For a peer-to-peer (i.e. Handle_Type_Contact) D-Bus tube, the empty dictionary. Change notification is via DBusNamesChanged.

Returns
The value of exported property DBusNames.
Tp::UIntList Tp::Service::ChannelTypeDBusTubeAdaptor::SupportedAccessControls ( ) const

Return the value of the exported D-Bus object property SupportedAccessControls of type Tp::UIntList.

Adaptees should export this property as a Qt property named 'supportedAccessControls' with type Tp::UIntList.

A list of the access control types that are supported with this channel. Note that only Socket_Access_Control_Localhost and Socket_Access_Control_Credentials can be used with D-Bus tubes. Using Socket_Access_Control_Credentials is recommended.

Socket_Access_Control_Credentials is easy to implement for a D-Bus tube, because typical D-Bus library implementations like libdbus and GDBus already have to support it to be able to connect to the system or session bus, and usually enable it by default; so there's typically no good reason to relax access control to Localhost.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST NOT be included in the request.

Returns
The value of exported property SupportedAccessControls.
QString Tp::Service::ChannelTypeDBusTubeAdaptor::Offer ( const QVariantMap &  parameters,
uint  accesscontrol,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void offer(const QVariantMap& parameters, uint accesscontrol, const Tp::Service::ChannelTypeDBusTubeAdaptor::OfferContextPtr &context);

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

Offers a D-Bus tube providing the service specified.

Parameters
parameters
The dictionary of arbitrary Parameters to send with the tube offer.
accesscontrol
The access control the connection manager applies to the D-Bus 
socket.
Returns
The string describing the address of the private bus. The client 
SHOULD NOT attempt to connect to the address until the tube is open.
QString Tp::Service::ChannelTypeDBusTubeAdaptor::Accept ( uint  accesscontrol,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void accept(uint accesscontrol, const Tp::Service::ChannelTypeDBusTubeAdaptor::AcceptContextPtr &context);

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

Accept a D-Bus tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeChannelStateChanged signal is emitted.

Parameters
accesscontrol
The access control the connection manager applies to the D-Bus 
socket.
Returns
The string describing the address of the private bus. The client 
SHOULD NOT attempt to connect to the address until the tube is open.
void Tp::Service::ChannelTypeDBusTubeAdaptor::DBusNamesChanged ( const Tp::DBusTubeParticipants added,
const Tp::UIntList removed 
)
signal

Represents the exported D-Bus signal DBusNamesChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void dbusNamesChanged(const Tp::DBusTubeParticipants& added, const Tp::UIntList& removed);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
added
Array of handles and D-Bus names of new participants.
removed
Array of handles of former participants.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00615_source.html0000644000175100017520000027051612530426257022527 0ustar00kaffeinekaffeine00000000000000 cli-account.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
cli-account.h
1 /*
2  * This file contains D-Bus client proxy classes generated by qt-client-gen.py.
3  *
4  * This file can be distributed under the same terms as the specification from
5  * which it was generated.
6  */
7 
8 #ifndef IN_TP_QT_HEADER
9 #error IN_TP_QT_HEADER
10 #endif
11 
12 #include <TelepathyQt/Types>
13 
14 #include <QtGlobal>
15 
16 #include <QString>
17 #include <QObject>
18 #include <QVariant>
19 
20 #include <QDBusPendingReply>
21 
22 #include <TelepathyQt/AbstractInterface>
23 #include <TelepathyQt/DBusProxy>
24 #include <TelepathyQt/Global>
25 
26 namespace Tp
27 {
28 class PendingVariant;
29 class PendingOperation;
30 }
31 
32 namespace Tp
33 {
34 namespace Client
35 {
36 
44 class TP_QT_EXPORT AccountInterface : public Tp::AbstractInterface
45 {
46  Q_OBJECT
47 
48 public:
55  static inline QLatin1String staticInterfaceName()
56  {
57  return QLatin1String("org.freedesktop.Telepathy.Account");
58  }
59 
68  const QString& busName,
69  const QString& objectPath,
70  QObject* parent = 0
71  );
72 
82  const QDBusConnection& connection,
83  const QString& busName,
84  const QString& objectPath,
85  QObject* parent = 0
86  );
87 
95 
106  {
107  return internalRequestProperty(QLatin1String("Interfaces"));
108  }
109 
124  {
125  return internalRequestProperty(QLatin1String("DisplayName"));
126  }
127 
142  {
143  return internalSetProperty(QLatin1String("DisplayName"), QVariant::fromValue(newValue));
144  }
145 
159  {
160  return internalRequestProperty(QLatin1String("Icon"));
161  }
162 
175  inline Tp::PendingOperation *setPropertyIcon(QString newValue)
176  {
177  return internalSetProperty(QLatin1String("Icon"), QVariant::fromValue(newValue));
178  }
179 
200  {
201  return internalRequestProperty(QLatin1String("Valid"));
202  }
203 
243  {
244  return internalRequestProperty(QLatin1String("Enabled"));
245  }
246 
286  {
287  return internalSetProperty(QLatin1String("Enabled"), QVariant::fromValue(newValue));
288  }
289 
308  {
309  return internalRequestProperty(QLatin1String("Nickname"));
310  }
311 
329  inline Tp::PendingOperation *setPropertyNickname(QString newValue)
330  {
331  return internalSetProperty(QLatin1String("Nickname"), QVariant::fromValue(newValue));
332  }
333 
382  {
383  return internalRequestProperty(QLatin1String("Service"));
384  }
385 
433  inline Tp::PendingOperation *setPropertyService(QString newValue)
434  {
435  return internalSetProperty(QLatin1String("Service"), QVariant::fromValue(newValue));
436  }
437 
458  {
459  return internalRequestProperty(QLatin1String("Parameters"));
460  }
461 
494  {
495  return internalRequestProperty(QLatin1String("AutomaticPresence"));
496  }
497 
530  {
531  return internalSetProperty(QLatin1String("AutomaticPresence"), QVariant::fromValue(newValue));
532  }
533 
550  {
551  return internalRequestProperty(QLatin1String("ConnectAutomatically"));
552  }
553 
570  {
571  return internalSetProperty(QLatin1String("ConnectAutomatically"), QVariant::fromValue(newValue));
572  }
573 
596  {
597  return internalRequestProperty(QLatin1String("Connection"));
598  }
599 
618  {
619  return internalRequestProperty(QLatin1String("ConnectionStatus"));
620  }
621 
635  {
636  return internalRequestProperty(QLatin1String("ConnectionStatusReason"));
637  }
638 
670  {
671  return internalRequestProperty(QLatin1String("ConnectionError"));
672  }
673 
699  {
700  return internalRequestProperty(QLatin1String("ConnectionErrorDetails"));
701  }
702 
718  {
719  return internalRequestProperty(QLatin1String("CurrentPresence"));
720  }
721 
750  {
751  return internalRequestProperty(QLatin1String("RequestedPresence"));
752  }
753 
782  {
783  return internalSetProperty(QLatin1String("RequestedPresence"), QVariant::fromValue(newValue));
784  }
785 
828  {
829  return internalRequestProperty(QLatin1String("ChangingPresence"));
830  }
831 
870  {
871  return internalRequestProperty(QLatin1String("NormalizedName"));
872  }
873 
889  {
890  return internalRequestProperty(QLatin1String("HasBeenOnline"));
891  }
892 
926  {
927  return internalRequestProperty(QLatin1String("Supersedes"));
928  }
929 
963  {
964  return internalSetProperty(QLatin1String("Supersedes"), QVariant::fromValue(newValue));
965  }
966 
974  {
975  return internalRequestAllProperties();
976  }
977 
978 public Q_SLOTS:
989  inline QDBusPendingReply<> Remove(int timeout = -1)
990  {
991  if (!invalidationReason().isEmpty()) {
992  return QDBusPendingReply<>(QDBusMessage::createError(
993  invalidationReason(),
994  invalidationMessage()
995  ));
996  }
997 
998  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
999  this->staticInterfaceName(), QLatin1String("Remove"));
1000  return this->connection().asyncCall(callMessage, timeout);
1001  }
1002 
1073  inline QDBusPendingReply<QStringList> UpdateParameters(const QVariantMap& set, const QStringList& unset, int timeout = -1)
1074  {
1075  if (!invalidationReason().isEmpty()) {
1076  return QDBusPendingReply<QStringList>(QDBusMessage::createError(
1077  invalidationReason(),
1078  invalidationMessage()
1079  ));
1080  }
1081 
1082  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1083  this->staticInterfaceName(), QLatin1String("UpdateParameters"));
1084  callMessage << QVariant::fromValue(set) << QVariant::fromValue(unset);
1085  return this->connection().asyncCall(callMessage, timeout);
1086  }
1087 
1129  inline QDBusPendingReply<> Reconnect(int timeout = -1)
1130  {
1131  if (!invalidationReason().isEmpty()) {
1132  return QDBusPendingReply<>(QDBusMessage::createError(
1133  invalidationReason(),
1134  invalidationMessage()
1135  ));
1136  }
1137 
1138  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1139  this->staticInterfaceName(), QLatin1String("Reconnect"));
1140  return this->connection().asyncCall(callMessage, timeout);
1141  }
1142 
1143 Q_SIGNALS:
1153  void Removed();
1154 
1169  void AccountPropertyChanged(const QVariantMap& properties);
1170 
1171 protected:
1172  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1173 };
1174 
1183 {
1184  Q_OBJECT
1185 
1186 public:
1193  static inline QLatin1String staticInterfaceName()
1194  {
1195  return QLatin1String("org.freedesktop.Telepathy.Account.Interface.Addressing");
1196  }
1197 
1206  const QString& busName,
1207  const QString& objectPath,
1208  QObject* parent = 0
1209  );
1210 
1220  const QDBusConnection& connection,
1221  const QString& busName,
1222  const QString& objectPath,
1223  QObject* parent = 0
1224  );
1225 
1233 
1242 
1250  AccountInterfaceAddressingInterface(const Tp::Client::AccountInterface& mainInterface, QObject* parent);
1251 
1273  {
1274  return internalRequestProperty(QLatin1String("URISchemes"));
1275  }
1276 
1284  {
1285  return internalRequestAllProperties();
1286  }
1287 
1288 public Q_SLOTS:
1309  inline QDBusPendingReply<> SetURISchemeAssociation(const QString& URIScheme, bool association, int timeout = -1)
1310  {
1311  if (!invalidationReason().isEmpty()) {
1312  return QDBusPendingReply<>(QDBusMessage::createError(
1313  invalidationReason(),
1314  invalidationMessage()
1315  ));
1316  }
1317 
1318  QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
1319  this->staticInterfaceName(), QLatin1String("SetURISchemeAssociation"));
1320  callMessage << QVariant::fromValue(URIScheme) << QVariant::fromValue(association);
1321  return this->connection().asyncCall(callMessage, timeout);
1322  }
1323 
1324 protected:
1325  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1326 };
1327 
1336 {
1337  Q_OBJECT
1338 
1339 public:
1346  static inline QLatin1String staticInterfaceName()
1347  {
1348  return QLatin1String("org.freedesktop.Telepathy.Account.Interface.Avatar");
1349  }
1350 
1359  const QString& busName,
1360  const QString& objectPath,
1361  QObject* parent = 0
1362  );
1363 
1373  const QDBusConnection& connection,
1374  const QString& busName,
1375  const QString& objectPath,
1376  QObject* parent = 0
1377  );
1378 
1386 
1394  explicit AccountInterfaceAvatarInterface(const Tp::Client::AccountInterface& mainInterface);
1395 
1403  AccountInterfaceAvatarInterface(const Tp::Client::AccountInterface& mainInterface, QObject* parent);
1404 
1419  {
1420  return internalRequestProperty(QLatin1String("Avatar"));
1421  }
1422 
1437  {
1438  return internalSetProperty(QLatin1String("Avatar"), QVariant::fromValue(newValue));
1439  }
1440 
1448  {
1449  return internalRequestAllProperties();
1450  }
1451 
1452 Q_SIGNALS:
1461  void AvatarChanged();
1462 
1463 protected:
1464  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1465 };
1466 
1475 {
1476  Q_OBJECT
1477 
1478 public:
1485  static inline QLatin1String staticInterfaceName()
1486  {
1487  return QLatin1String("org.freedesktop.Telepathy.Account.Interface.Storage");
1488  }
1489 
1498  const QString& busName,
1499  const QString& objectPath,
1500  QObject* parent = 0
1501  );
1502 
1512  const QDBusConnection& connection,
1513  const QString& busName,
1514  const QString& objectPath,
1515  QObject* parent = 0
1516  );
1517 
1525 
1533  explicit AccountInterfaceStorageInterface(const Tp::Client::AccountInterface& mainInterface);
1534 
1542  AccountInterfaceStorageInterface(const Tp::Client::AccountInterface& mainInterface, QObject* parent);
1543 
1563  {
1564  return internalRequestProperty(QLatin1String("StorageProvider"));
1565  }
1566 
1595  {
1596  return internalRequestProperty(QLatin1String("StorageIdentifier"));
1597  }
1598 
1632  {
1633  return internalRequestProperty(QLatin1String("StorageSpecificInformation"));
1634  }
1635 
1653  {
1654  return internalRequestProperty(QLatin1String("StorageRestrictions"));
1655  }
1656 
1664  {
1665  return internalRequestAllProperties();
1666  }
1667 
1668 protected:
1669  virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
1670 };
1671 }
1672 }
1673 Q_DECLARE_METATYPE(Tp::Client::AccountInterface*)
1674 Q_DECLARE_METATYPE(Tp::Client::AccountInterfaceAddressingInterface*)
1675 Q_DECLARE_METATYPE(Tp::Client::AccountInterfaceAvatarInterface*)
1676 Q_DECLARE_METATYPE(Tp::Client::AccountInterfaceStorageInterface*)
Tp::PendingVariant * requestPropertyValid() const
Definition: cli-account.h:199
Tp::PendingVariant * requestPropertyNormalizedName() const
Definition: cli-account.h:869
Tp::PendingVariant * requestPropertyStorageIdentifier() const
Definition: cli-account.h:1594
Definition: build/TelepathyQt/_gen/types.h:2733
Tp::PendingVariant * requestPropertyEnabled() const
Definition: cli-account.h:242
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
static QLatin1String staticInterfaceName()
Definition: cli-account.h:1193
Tp::PendingVariant * requestPropertySupersedes() const
Definition: cli-account.h:925
Definition: cli-account.h:44
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-account.h:1283
Tp::PendingVariant * requestPropertyDisplayName() const
Definition: cli-account.h:123
Definition: cli-account.h:1474
Tp::PendingVariant * requestPropertyAvatar() const
Definition: cli-account.h:1418
Tp::PendingOperation * setPropertyAvatar(Tp::Avatar newValue)
Definition: cli-account.h:1436
Tp::PendingVariant * requestPropertyInterfaces() const
Definition: cli-account.h:105
Tp::PendingOperation * setPropertySupersedes(Tp::ObjectPathList newValue)
Definition: cli-account.h:962
QDBusPendingReply Reconnect(int timeout=-1)
Definition: cli-account.h:1129
Tp::PendingVariant * requestPropertyURISchemes() const
Definition: cli-account.h:1272
Tp::PendingVariant * requestPropertyConnectAutomatically() const
Definition: cli-account.h:549
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-account.h:973
The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals.
Definition: abstract-interface.h:42
Tp::PendingVariant * requestPropertyConnection() const
Definition: cli-account.h:595
Tp::PendingVariant * requestPropertyConnectionError() const
Definition: cli-account.h:669
QDBusPendingReply Remove(int timeout=-1)
Definition: cli-account.h:989
Tp::PendingVariant * requestPropertyConnectionStatusReason() const
Definition: cli-account.h:634
Tp::PendingOperation * setPropertyConnectAutomatically(bool newValue)
Definition: cli-account.h:569
Tp::PendingOperation * setPropertyDisplayName(QString newValue)
Definition: cli-account.h:141
Tp::PendingVariant * requestPropertyParameters() const
Definition: cli-account.h:457
static QLatin1String staticInterfaceName()
Definition: cli-account.h:55
Definition: build/TelepathyQt/_gen/types.h:81
Tp::PendingOperation * setPropertyAutomaticPresence(Tp::SimplePresence newValue)
Definition: cli-account.h:529
Tp::PendingVariant * requestPropertyStorageRestrictions() const
Definition: cli-account.h:1652
Tp::PendingVariant * requestPropertyConnectionStatus() const
Definition: cli-account.h:617
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-account.h:1447
static QLatin1String staticInterfaceName()
Definition: cli-account.h:1346
Tp::PendingVariant * requestPropertyNickname() const
Definition: cli-account.h:307
Definition: cli-account.h:1335
QDBusPendingReply< QStringList > UpdateParameters(const QVariantMap &set, const QStringList &unset, int timeout=-1)
Definition: cli-account.h:1073
Tp::PendingOperation * setPropertyService(QString newValue)
Definition: cli-account.h:433
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
Tp::PendingOperation * setPropertyEnabled(bool newValue)
Definition: cli-account.h:285
Tp::PendingOperation * setPropertyRequestedPresence(Tp::SimplePresence newValue)
Definition: cli-account.h:781
static QLatin1String staticInterfaceName()
Definition: cli-account.h:1485
Tp::PendingVariant * requestPropertyConnectionErrorDetails() const
Definition: cli-account.h:698
Tp::PendingVariant * requestPropertyRequestedPresence() const
Definition: cli-account.h:749
Definition: build/TelepathyQt/_gen/types.h:240
Tp::PendingVariant * requestPropertyService() const
Definition: cli-account.h:381
QDBusPendingReply SetURISchemeAssociation(const QString &URIScheme, bool association, int timeout=-1)
Definition: cli-account.h:1309
Tp::PendingVariant * requestPropertyStorageProvider() const
Definition: cli-account.h:1562
Tp::PendingVariant * requestPropertyChangingPresence() const
Definition: cli-account.h:827
The PendingVariantMap class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-variant-map.h:38
Tp::PendingVariant * requestPropertyCurrentPresence() const
Definition: cli-account.h:717
Tp::PendingVariant * requestPropertyHasBeenOnline() const
Definition: cli-account.h:888
Tp::PendingVariantMap * requestAllProperties() const
Definition: cli-account.h:1663
Tp::PendingVariant * requestPropertyStorageSpecificInformation() const
Definition: cli-account.h:1631
Tp::PendingOperation * setPropertyNickname(QString newValue)
Definition: cli-account.h:329
Tp::PendingVariant * requestPropertyIcon() const
Definition: cli-account.h:158
Tp::PendingOperation * setPropertyIcon(QString newValue)
Definition: cli-account.h:175
Tp::PendingVariant * requestPropertyAutomaticPresence() const
Definition: cli-account.h:493


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00611_source.html0000644000175100017520000002177712530426257022526 0ustar00kaffeinekaffeine00000000000000 channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
Farstream/channel.h
1 
22 #ifndef _TelepathyQt_Farstream_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_Farstream_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_FARSTREAM_HEADER
26 #error IN_TP_QT_FARSTREAM_HEADER
27 #endif
28 
29 #include <TelepathyQt/Farstream/Global>
30 #include <TelepathyQt/Types>
31 
32 #include <TelepathyQt/PendingOperation>
33 #include <TelepathyQt/RefCounted>
34 
35 typedef struct _TfChannel TfChannel;
36 
37 namespace Tp
38 {
39 namespace Farstream
40 {
41 
42 class TP_QT_FS_EXPORT PendingChannel : public Tp::PendingOperation
43 {
44  Q_OBJECT
45  Q_DISABLE_COPY(PendingChannel)
46 
47 public:
48  ~PendingChannel();
49 
50  TfChannel *tfChannel() const;
51  CallChannelPtr callChannel() const;
52 
53 private:
54  TP_QT_FS_NO_EXPORT PendingChannel(const CallChannelPtr &channel);
55 
56  friend PendingChannel *createChannel(const CallChannelPtr &channel);
57 
58  struct Private;
59  friend struct Private;
60  Private *mPriv;
61 };
62 
63 TP_QT_FS_EXPORT PendingChannel *createChannel(const CallChannelPtr &channel);
64 
65 } // Farstream
66 } // Tp
67 
68 #endif
PendingChannel * createChannel(const CallChannelPtr &channel)
Definition: Farstream/channel.cpp:159
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: Farstream/channel.h:42


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01267.html0000644000175100017520000002304112530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceRoomInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceRoomInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceRoomInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceRoomInterface
ChannelInterfaceRoomInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceRoomInterface
ChannelInterfaceRoomInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceRoomInterface
ChannelInterfaceRoomInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceRoomInterfaceexplicit
ChannelInterfaceRoomInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceRoomInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceRoomInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceRoomInterfaceinline
requestPropertyCreationTimestamp() const Tp::Client::ChannelInterfaceRoomInterfaceinline
requestPropertyCreator() const Tp::Client::ChannelInterfaceRoomInterfaceinline
requestPropertyCreatorHandle() const Tp::Client::ChannelInterfaceRoomInterfaceinline
requestPropertyRoomName() const Tp::Client::ChannelInterfaceRoomInterfaceinline
requestPropertyServer() const Tp::Client::ChannelInterfaceRoomInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceRoomInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00050.html0000644000175100017520000000741512530426257021134 0ustar00kaffeinekaffeine00000000000000 roster/roster-window.h
   Home · All Classes · All Namespaces · Modules · Functions · Files
roster/roster-window.h
#ifndef _TelepathyQt_examples_roster_roster_window_h_HEADER_GUARD_
#define _TelepathyQt_examples_roster_roster_window_h_HEADER_GUARD_
#include <QMainWindow>
#include <TelepathyQt/Account>
#include <TelepathyQt/Types>
namespace Tp {
class PendingOperation;
}
class RosterWidget;
class RosterWindow : public QMainWindow
{
Q_OBJECT
public:
RosterWindow(const QString &accountName, QWidget *parent = 0);
virtual ~RosterWindow();
private Q_SLOTS:
void onAccountReady(Tp::PendingOperation *op);
void onAccountConnectionChanged(const Tp::ConnectionPtr &conn);
private:
void setupGui();
Tp::AccountPtr mAccount;
RosterWidget *mRoster;
};
#endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01011.html0000644000175100017520000000755712530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Contact::InfoFields Member List

This is the complete list of members for Tp::Contact::InfoFields, including all inherited members.

allFields() const Tp::Contact::InfoFields
fields(const QString &name) const Tp::Contact::InfoFields
InfoFields()Tp::Contact::InfoFields
InfoFields(const ContactInfoFieldList &fields)Tp::Contact::InfoFields
InfoFields(const InfoFields &other)Tp::Contact::InfoFields
isValid() const Tp::Contact::InfoFieldsinline
operator=(const InfoFields &other)Tp::Contact::InfoFields
~InfoFields()Tp::Contact::InfoFields


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00866.html0000644000175100017520000000655012530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::Farstream Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Farstream Namespace Reference

Classes

class  PendingChannel
 

Functions

PendingChannelcreateChannel (const CallChannelPtr &channel)
 

Function Documentation

Q_DECL_IMPORT PendingChannel * Tp::Farstream::createChannel ( const CallChannelPtr &  channel)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x67.html0000644000175100017520000000303612530426260024143 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- g -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00365.html0000644000175100017520000003730212530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::GenericCapabilityFilter< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::GenericCapabilityFilter< T > Class Template Reference

The GenericCapabilityFilter class provides a generic filter object to be used to filter objects by capabilities. More...

#include <TelepathyQt/GenericCapabilityFilter>

Inherits Tp::Filter< T >.

Public Member Functions

virtual ~GenericCapabilityFilter ()
 
virtual bool isValid () const
 
virtual bool matches (const SharedPtr< T > &t) const
 
RequestableChannelClassSpecList filter () const
 
void addRequestableChannelClassSubset (const RequestableChannelClassSpec &rccSpec)
 
void setRequestableChannelClassesSubset (const RequestableChannelClassSpecList &rccSpecs)
 
- Public Member Functions inherited from Tp::Filter< T >
virtual ~Filter ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static SharedPtr
< GenericCapabilityFilter< T > > 
create (const RequestableChannelClassSpecList &rccSpecs=RequestableChannelClassSpecList())
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::Filter< T >
 Filter ()
 

Detailed Description

template<class T>
class Tp::GenericCapabilityFilter< T >

The GenericCapabilityFilter class provides a generic filter object to be used to filter objects by capabilities.

The objects used in conjunction with this filter must implement a method called capabilities() returning a CapabilitiesBase (or a subclass of it) instance. Specialized classes such as AccountCapabilityFilter are also provided and should be used where appropriate.

Constructor & Destructor Documentation

template<class T >
virtual Tp::GenericCapabilityFilter< T >::~GenericCapabilityFilter ( )
inlinevirtual

Member Function Documentation

template<class T >
static SharedPtr<GenericCapabilityFilter<T> > Tp::GenericCapabilityFilter< T >::create ( const RequestableChannelClassSpecList rccSpecs = RequestableChannelClassSpecList())
inlinestatic
template<class T >
virtual bool Tp::GenericCapabilityFilter< T >::isValid ( ) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
virtual bool Tp::GenericCapabilityFilter< T >::matches ( const SharedPtr< T > &  t) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T >
RequestableChannelClassSpecList Tp::GenericCapabilityFilter< T >::filter ( ) const
inline
template<class T >
void Tp::GenericCapabilityFilter< T >::addRequestableChannelClassSubset ( const RequestableChannelClassSpec rccSpec)
inline
template<class T >
void Tp::GenericCapabilityFilter< T >::setRequestableChannelClassesSubset ( const RequestableChannelClassSpecList rccSpecs)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01326.html0000644000175100017520000002220012530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::DBus::PropertiesInterface Member List

This is the complete list of members for Tp::Client::DBus::PropertiesInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Get(const QString &interfaceName, const QString &propertyName, int timeout=-1)Tp::Client::DBus::PropertiesInterfaceinlineslot
GetAll(const QString &interfaceName, int timeout=-1)Tp::Client::DBus::PropertiesInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::DBus::PropertiesInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
PropertiesInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::PropertiesInterface
PropertiesInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::DBus::PropertiesInterface
PropertiesInterface(Tp::DBusProxy *proxy)Tp::Client::DBus::PropertiesInterface
PropertiesInterface(const Tp::AbstractInterface &mainInterface)Tp::Client::DBus::PropertiesInterfaceexplicit
PropertiesInterface(const Tp::AbstractInterface &mainInterface, QObject *parent)Tp::Client::DBus::PropertiesInterface
requestAllProperties() const Tp::Client::DBus::PropertiesInterfaceinline
Set(const QString &interfaceName, const QString &propertyName, const QDBusVariant &value, int timeout=-1)Tp::Client::DBus::PropertiesInterfaceinlineslot
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::DBus::PropertiesInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01080.html0000644000175100017520000001407712530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingString Member List

This is the complete list of members for Tp::PendingString, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
PendingString(QDBusPendingCall call, const SharedPtr< RefCounted > &object)Tp::PendingString
result() const Tp::PendingString
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
setResult(const QString &result)Tp::PendingStringprotected
~PendingOperation()Tp::PendingOperationvirtual
~PendingString()Tp::PendingString


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00925.html0000644000175100017520000002055412530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseCallMuteInterface Member List

This is the complete list of members for Tp::BaseCallMuteInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create()Tp::BaseCallMuteInterfaceinlinestatic
create()Tp::BaseCallMuteInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseCallMuteInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
localMuteState() const Tp::BaseCallMuteInterface
muteStateChanged(const Tp::LocalMuteState &state)Tp::BaseCallMuteInterfacesignal
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setMuteState(const Tp::LocalMuteState &state)Tp::BaseCallMuteInterface
SetMuteStateCallback typedefTp::BaseCallMuteInterface
setSetMuteStateCallback(const SetMuteStateCallback &cb)Tp::BaseCallMuteInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseCallMuteInterface()Tp::BaseCallMuteInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00424.html0000644000175100017520000003632012530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Profile::Parameter Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Profile::Parameter Class Reference

The Profile::Parameter class represents a parameter defined in .profile files. More...

#include <TelepathyQt/Profile>

Public Member Functions

 Parameter ()
 
 Parameter (const Parameter &other)
 
 Parameter (const QString &name, const QDBusSignature &dbusSignature, const QVariant &value, const QString &label, bool mandatory)
 
 ~Parameter ()
 
QString name () const
 
QDBusSignature dbusSignature () const
 
QVariant::Type type () const
 
QVariant value () const
 
QString label () const
 
bool isMandatory () const
 
Parameteroperator= (const Parameter &other)
 

Detailed Description

The Profile::Parameter class represents a parameter defined in .profile files.

Constructor & Destructor Documentation

Tp::Profile::Parameter::Parameter ( )

Construct a new Profile::Parameter object.

Tp::Profile::Parameter::Parameter ( const Parameter other)

Construct a new Profile::Parameter object that is a copy of other.

Tp::Profile::Parameter::Parameter ( const QString &  name,
const QDBusSignature &  dbusSignature,
const QVariant &  value,
const QString &  label,
bool  mandatory 
)

Construct a new Profile::Parameter object.

Parameters
nameThe parameter name.
dbusSignatureThe parameter D-Bus signature.
valueThe parameter value.
labelThe parameter label.
mandatoryWhether this parameter is mandatory.
Tp::Profile::Parameter::~Parameter ( )

Class destructor.

Member Function Documentation

QString Tp::Profile::Parameter::name ( ) const

Return the name of this parameter.

Returns
The name of this parameter.
QDBusSignature Tp::Profile::Parameter::dbusSignature ( ) const

Return the D-Bus signature of this parameter.

Returns
The D-Bus signature of this parameter.
QVariant::Type Tp::Profile::Parameter::type ( ) const

Return the QVariant::Type of this parameter, constructed using dbusSignature().

Returns
The QVariant::Type of this parameter.
QVariant Tp::Profile::Parameter::value ( ) const

Return the value of this parameter.

If mandatory() returns true, the value must not be modified and should be used as is when creating accounts for this profile.

Returns
The value of this parameter.
QString Tp::Profile::Parameter::label ( ) const

Return the human-readable label of this parameter.

Returns
The human-readable label of this parameter.
bool Tp::Profile::Parameter::isMandatory ( ) const

Return whether this parameter is mandatory, or whether the value returned by value() should be used as is when creating accounts for this profile.

Returns
true if mandatory, otherwise false.
Profile::Parameter & Tp::Profile::Parameter::operator= ( const Parameter other)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00179.html0000644000175100017520000007430012530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelDispatcherInterfaceMessages1Interface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ChannelDispatcher>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > SendMessage (const QDBusObjectPath &account, const QString &targetID, const Tp::MessagePartList &message, uint flags, int timeout=-1)
 

Public Member Functions

 ChannelDispatcherInterfaceMessages1Interface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelDispatcherInterfaceMessages1Interface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelDispatcherInterfaceMessages1Interface (Tp::DBusProxy *proxy)
 
 ChannelDispatcherInterfaceMessages1Interface (const Tp::Client::ChannelDispatcherInterface &mainInterface)
 
 ChannelDispatcherInterfaceMessages1Interface (const Tp::Client::ChannelDispatcherInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages1".

Constructor & Destructor Documentation

Tp::Client::ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelDispatcherInterfaceMessages1Interface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelDispatcherInterfaceMessages1Interface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface ( Tp::DBusProxy proxy)

Creates a ChannelDispatcherInterfaceMessages1Interface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface ( const Tp::Client::ChannelDispatcherInterface mainInterface)
explicit

Creates a ChannelDispatcherInterfaceMessages1Interface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelDispatcherInterfaceMessages1Interface::ChannelDispatcherInterfaceMessages1Interface ( const Tp::Client::ChannelDispatcherInterface mainInterface,
QObject *  parent 
)

Creates a ChannelDispatcherInterfaceMessages1Interface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelDispatcherInterfaceMessages1Interface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages1", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelDispatcherInterfaceMessages1Interface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::ChannelDispatcherInterfaceMessages1Interface::SendMessage ( const QDBusObjectPath &  account,
const QString &  targetID,
const Tp::MessagePartList message,
uint  flags,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SendMessage on the remote object.

Submit a message to the server for sending, like the ChannelInterfaceMessagesInterface::SendMessage() method.

If the Account is connected and a Text channel to the Target_ID already exists, this method is equivalent to sending the same message via that channel.

Otherwise, this method creates a channel (connecting the Account if appropriate), sends the desired message, and closes the channel as if via ChannelInterface::Close() , without acknowledging any messages received on that channel during that time.

If any messages are received on that channel before it is closed, a correct connection manager implementation will reopen the channel when it is closed, resulting in those "rescued" messages being processed by the system's normal ClientHandlerInterface for text channels. In particular, this deals with the situation where a successful or failed delivery report is received before the channel is closed.

Expecting a trivial client (perhaps a send-only IRC bot, or a simple SMS-sending API) to go through all those steps to send a message seems somewhat unreasonable. Having this as a method in the ChannelDispatcher lets it take some short-cuts if required, and centralizes the implementation to reduce the risk of mistakes that cause message loss.

The ChannelDispatcher SHOULD support this method for any connection manager that would accept channel requests of this form:

  {
  …  ChannelInterface::ChannelType   :
      …  ChannelTypeTextInterface ,
  …  ChannelInterface::TargetHandleType   :
      Contact,
  …  ChannelInterface::TargetID   :
  Target_ID
}

However, if the connection manager provides additional APIs (such as a way to open "send-only" channels), the ChannelDispatcher MAY use those: it is not required to use those exact request parameters.

This method may raise any error that would be raised by the ConnectionInterfaceRequestsInterface::EnsureChannel() or ChannelInterfaceMessagesInterface::SendMessage() methods, or signalled by the ChannelRequestInterface::Failed() signal.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
account
The Account through which to communicate.
targetID
The contact to send the message to.
message
The parts of the message, the same as for Messages.SendMessage.
flags
Flags influencing how to send the message, the same as for 
Messages.SendMessage.
timeoutThe timeout in milliseconds.
Returns
An opaque token equivalent to the one returned by 
Messages.SendMessage.
void Tp::Client::ChannelDispatcherInterfaceMessages1Interface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00994.html0000644000175100017520000007074412530426260021154 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Channel Member List

This is the complete list of members for Tp::Channel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::Channelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::Channelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00493.html0000644000175100017520000012567312530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::RequestableChannelClassSpec Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The RequestableChannelClassSpec class represents a Telepathy requestable channel class. More...

#include <TelepathyQt/RequestableChannelClassSpec>

Public Member Functions

 RequestableChannelClassSpec ()
 
 RequestableChannelClassSpec (const RequestableChannelClass &rcc)
 
 RequestableChannelClassSpec (const RequestableChannelClassSpec &other)
 
 ~RequestableChannelClassSpec ()
 
bool isValid () const
 
RequestableChannelClassSpecoperator= (const RequestableChannelClassSpec &other)
 
bool operator== (const RequestableChannelClassSpec &other) const
 
bool supports (const RequestableChannelClassSpec &spec) const
 
QString channelType () const
 
bool hasTargetHandleType () const
 
HandleType targetHandleType () const
 
bool hasFixedProperty (const QString &name) const
 
QVariant fixedProperty (const QString &name) const
 
QVariantMap fixedProperties () const
 
bool allowsProperty (const QString &name) const
 
QStringList allowedProperties () const
 
RequestableChannelClass bareClass () const
 

Static Public Member Functions

static RequestableChannelClassSpec textChat ()
 
static RequestableChannelClassSpec textChatroom ()
 
static RequestableChannelClassSpec audioCall ()
 
static RequestableChannelClassSpec audioCallWithVideoAllowed ()
 
static RequestableChannelClassSpec videoCall ()
 
static RequestableChannelClassSpec videoCallWithAudioAllowed ()
 
static RequestableChannelClassSpec streamedMediaCall ()
 
static RequestableChannelClassSpec streamedMediaAudioCall ()
 
static RequestableChannelClassSpec streamedMediaVideoCall ()
 
static RequestableChannelClassSpec streamedMediaVideoCallWithAudio ()
 
static RequestableChannelClassSpec fileTransfer ()
 
static RequestableChannelClassSpec conferenceTextChat ()
 
static RequestableChannelClassSpec conferenceTextChatWithInvitees ()
 
static RequestableChannelClassSpec conferenceTextChatroom ()
 
static RequestableChannelClassSpec conferenceTextChatroomWithInvitees ()
 
static RequestableChannelClassSpec conferenceStreamedMediaCall ()
 
static RequestableChannelClassSpec conferenceStreamedMediaCallWithInvitees ()
 
static RequestableChannelClassSpec contactSearch ()
 
static RequestableChannelClassSpec contactSearchWithSpecificServer ()
 
static RequestableChannelClassSpec contactSearchWithLimit ()
 
static RequestableChannelClassSpec contactSearchWithSpecificServerAndLimit ()
 
static RequestableChannelClassSpec dbusTube (const QString &serviceName=QString())
 
static RequestableChannelClassSpec streamTube (const QString &service=QString())
 

Detailed Description

The RequestableChannelClassSpec class represents a Telepathy requestable channel class.

Constructor & Destructor Documentation

Tp::RequestableChannelClassSpec::RequestableChannelClassSpec ( )
Tp::RequestableChannelClassSpec::RequestableChannelClassSpec ( const RequestableChannelClass rcc)
Tp::RequestableChannelClassSpec::RequestableChannelClassSpec ( const RequestableChannelClassSpec other)
Tp::RequestableChannelClassSpec::~RequestableChannelClassSpec ( )

Member Function Documentation

RequestableChannelClassSpec Tp::RequestableChannelClassSpec::textChat ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::textChatroom ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::audioCall ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::audioCallWithVideoAllowed ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::videoCall ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::videoCallWithAudioAllowed ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::streamedMediaCall ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::streamedMediaAudioCall ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::streamedMediaVideoCall ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::streamedMediaVideoCallWithAudio ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::fileTransfer ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::conferenceTextChat ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::conferenceTextChatWithInvitees ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::conferenceTextChatroom ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::conferenceTextChatroomWithInvitees ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::conferenceStreamedMediaCall ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::conferenceStreamedMediaCallWithInvitees ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::contactSearch ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::contactSearchWithSpecificServer ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::contactSearchWithLimit ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::contactSearchWithSpecificServerAndLimit ( )
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::dbusTube ( const QString &  serviceName = QString())
static
RequestableChannelClassSpec Tp::RequestableChannelClassSpec::streamTube ( const QString &  service = QString())
static
bool Tp::RequestableChannelClassSpec::isValid ( ) const
inline
RequestableChannelClassSpec & Tp::RequestableChannelClassSpec::operator= ( const RequestableChannelClassSpec other)
bool Tp::RequestableChannelClassSpec::operator== ( const RequestableChannelClassSpec other) const
bool Tp::RequestableChannelClassSpec::supports ( const RequestableChannelClassSpec spec) const
QString Tp::RequestableChannelClassSpec::channelType ( ) const
bool Tp::RequestableChannelClassSpec::hasTargetHandleType ( ) const
HandleType Tp::RequestableChannelClassSpec::targetHandleType ( ) const
bool Tp::RequestableChannelClassSpec::hasFixedProperty ( const QString &  name) const
QVariant Tp::RequestableChannelClassSpec::fixedProperty ( const QString &  name) const
QVariantMap Tp::RequestableChannelClassSpec::fixedProperties ( ) const
bool Tp::RequestableChannelClassSpec::allowsProperty ( const QString &  name) const
QStringList Tp::RequestableChannelClassSpec::allowedProperties ( ) const
RequestableChannelClass Tp::RequestableChannelClassSpec::bareClass ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00238.html0000644000175100017520000011032612530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeDBusTubeInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QString > Offer (const QVariantMap &parameters, uint accesscontrol, int timeout=-1)
 
QDBusPendingReply< QString > Accept (uint accesscontrol, int timeout=-1)
 

Signals

void DBusNamesChanged (const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeDBusTubeInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeDBusTubeInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeDBusTubeInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeDBusTubeInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeDBusTubeInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyServiceName () const
 
Tp::PendingVariantrequestPropertyDBusNames () const
 
Tp::PendingVariantrequestPropertySupportedAccessControls () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.DBusTube".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeDBusTubeInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeDBusTubeInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeDBusTubeInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeDBusTubeInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeDBusTubeInterface::ChannelTypeDBusTubeInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeDBusTubeInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeDBusTubeInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.DBusTube", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeDBusTubeInterface::requestPropertyServiceName ( ) const
inline

Asynchronous getter for the remote object property ServiceName of type QString.

A string representing the service name that will be used over the tube. It SHOULD be a well-known D-Bus service name, of the form com.example.ServiceName.

When the tube is offered, the service name is transmitted to the other end.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST be included in the request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeDBusTubeInterface::requestPropertyDBusNames ( ) const
inline

Asynchronous getter for the remote object property DBusNames of type Tp::DBusTubeParticipants.

For a multi-user (i.e. Handle_Type_Room) D-Bus tube, a mapping between contact handles and their unique bus names on this tube. For a peer-to-peer (i.e. Handle_Type_Contact) D-Bus tube, the empty dictionary. Change notification is via DBusNamesChanged.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeDBusTubeInterface::requestPropertySupportedAccessControls ( ) const
inline

Asynchronous getter for the remote object property SupportedAccessControls of type Tp::UIntList.

A list of the access control types that are supported with this channel. Note that only Socket_Access_Control_Localhost and Socket_Access_Control_Credentials can be used with D-Bus tubes. Using Socket_Access_Control_Credentials is recommended.

Socket_Access_Control_Credentials is easy to implement for a D-Bus tube, because typical D-Bus library implementations like libdbus and GDBus already have to support it to be able to connect to the system or session bus, and usually enable it by default; so there's typically no good reason to relax access control to Localhost.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST NOT be included in the request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeDBusTubeInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QString> Tp::Client::ChannelTypeDBusTubeInterface::Offer ( const QVariantMap &  parameters,
uint  accesscontrol,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Offer on the remote object.

Offers a D-Bus tube providing the service specified.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
parameters
The dictionary of arbitrary Parameters to send with the tube offer.
accesscontrol
The access control the connection manager applies to the D-Bus 
socket.
timeoutThe timeout in milliseconds.
Returns
The string describing the address of the private bus. The client 
SHOULD NOT attempt to connect to the address until the tube is open.
QDBusPendingReply<QString> Tp::Client::ChannelTypeDBusTubeInterface::Accept ( uint  accesscontrol,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method Accept on the remote object.

Accept a D-Bus tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeChannelStateChanged signal is emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
accesscontrol
The access control the connection manager applies to the D-Bus 
socket.
timeoutThe timeout in milliseconds.
Returns
The string describing the address of the private bus. The client 
SHOULD NOT attempt to connect to the address until the tube is open.
void Tp::Client::ChannelTypeDBusTubeInterface::DBusNamesChanged ( const Tp::DBusTubeParticipants added,
const Tp::UIntList removed 
)
signal

Represents the signal DBusNamesChanged on the remote object.

Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a participant opens or closes the tube. This provides change notification for the DBusNames property.

Parameters
added
Array of handles and D-Bus names of new participants.
removed
Array of handles of former participants.
void Tp::Client::ChannelTypeDBusTubeInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01268.html0000644000175100017520000003373112530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceSASLAuthenticationInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceSASLAuthenticationInterface, including all inherited members.

AbortSASL(uint reason, const QString &debugMessage, int timeout=-1)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinlineslot
AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AcceptSASL(int timeout=-1)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinlineslot
ChannelInterfaceSASLAuthenticationInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSASLAuthenticationInterface
ChannelInterfaceSASLAuthenticationInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSASLAuthenticationInterface
ChannelInterfaceSASLAuthenticationInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceSASLAuthenticationInterface
ChannelInterfaceSASLAuthenticationInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceexplicit
ChannelInterfaceSASLAuthenticationInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceSASLAuthenticationInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
NewChallenge(const QByteArray &challengeData)Tp::Client::ChannelInterfaceSASLAuthenticationInterfacesignal
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyAuthorizationIdentity() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyAvailableMechanisms() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyCanTryAgain() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyDefaultRealm() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyDefaultUsername() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyHasInitialData() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertyMaySaveResponse() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertySASLError() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertySASLErrorDetails() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
requestPropertySASLStatus() const Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinline
Respond(const QByteArray &responseData, int timeout=-1)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinlineslot
SASLStatusChanged(uint status, const QString &reason, const QVariantMap &details)Tp::Client::ChannelInterfaceSASLAuthenticationInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
StartMechanism(const QString &mechanism, int timeout=-1)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinlineslot
StartMechanismWithData(const QString &mechanism, const QByteArray &initialData, int timeout=-1)Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinlineslot
staticInterfaceName()Tp::Client::ChannelInterfaceSASLAuthenticationInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01012.html0000644000175100017520000000772012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusError Member List

This is the complete list of members for Tp::DBusError, including all inherited members.

DBusError()Tp::DBusError
DBusError(const QString &name, const QString &message)Tp::DBusError
isValid() const Tp::DBusErrorinline
message() const Tp::DBusError
name() const Tp::DBusError
operator!=(const DBusError &other) const Tp::DBusError
operator==(const DBusError &other) const Tp::DBusError
set(const QString &name, const QString &message)Tp::DBusError
~DBusError()Tp::DBusError


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00867.html0000644000175100017520000000325712530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::KeyFile Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::KeyFile Namespace Reference


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x68.html0000644000175100017520000000426412530426260024150 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00366.html0000644000175100017520000003526212530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::GenericPropertyFilter< T > Class Template Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::GenericPropertyFilter< T > Class Template Reference

The GenericPropertyFilter class provides a generic filter object to be used to filter objects by properties. More...

#include <TelepathyQt/GenericPropertyFilter>

Inherits Tp::Filter< T >.

Public Member Functions

virtual ~GenericPropertyFilter ()
 
virtual bool isValid () const
 
virtual bool matches (const SharedPtr< T > &t) const
 
QVariantMap filter () const
 
void addProperty (const QString &propertyName, const QVariant &propertyValue)
 
void setProperties (const QVariantMap &filter)
 
- Public Member Functions inherited from Tp::Filter< T >
virtual ~Filter ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Protected Member Functions

 GenericPropertyFilter ()
 
- Protected Member Functions inherited from Tp::Filter< T >
 Filter ()
 

Detailed Description

template<class T>
class Tp::GenericPropertyFilter< T >

The GenericPropertyFilter class provides a generic filter object to be used to filter objects by properties.

Specialized classes such as AccountPropertyFilter are also provided and should be used where appropriate.

Constructor & Destructor Documentation

template<class T>
virtual Tp::GenericPropertyFilter< T >::~GenericPropertyFilter ( )
inlinevirtual
template<class T>
Tp::GenericPropertyFilter< T >::GenericPropertyFilter ( )
inlineprotected

Member Function Documentation

template<class T>
virtual bool Tp::GenericPropertyFilter< T >::isValid ( ) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

Reimplemented in Tp::AccountPropertyFilter.

template<class T>
virtual bool Tp::GenericPropertyFilter< T >::matches ( const SharedPtr< T > &  t) const
inlinevirtual

Reimplemented from Tp::Filter< T >.

template<class T>
QVariantMap Tp::GenericPropertyFilter< T >::filter ( ) const
inline
template<class T>
void Tp::GenericPropertyFilter< T >::addProperty ( const QString &  propertyName,
const QVariant &  propertyValue 
)
inline
template<class T>
void Tp::GenericPropertyFilter< T >::setProperties ( const QVariantMap &  filter)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01327.html0000644000175100017520000001423312530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Farstream::PendingChannel Member List

This is the complete list of members for Tp::Farstream::PendingChannel, including all inherited members.

callChannel() const Tp::Farstream::PendingChannel
createChannel(const CallChannelPtr &channel)Tp::Farstream::PendingChannelfriend
errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
tfChannel() const Tp::Farstream::PendingChannel
~PendingChannel()Tp::Farstream::PendingChannel
~PendingOperation()Tp::PendingOperationvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00110.html0000644000175100017520000005207512530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelSecurableInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Securable. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Member Functions

virtual ~BaseChannelSecurableInterface ()
 
QVariantMap immutableProperties () const
 
bool encrypted () const
 
void setEncrypted (bool encrypted)
 
bool verified () const
 
void setVerified (bool verified)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelSecurableInterfacePtr 
create ()
 
template<typename BaseChannelSecurableInterfaceSubclass >
static SharedPtr
< BaseChannelSecurableInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseChannelSecurableInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Securable.

Constructor & Destructor Documentation

Tp::BaseChannelSecurableInterface::~BaseChannelSecurableInterface ( )
virtual

Class destructor.

Tp::BaseChannelSecurableInterface::BaseChannelSecurableInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseChannelSecurableInterfacePtr Tp::BaseChannelSecurableInterface::create ( )
inlinestatic
template<typename BaseChannelSecurableInterfaceSubclass >
static SharedPtr<BaseChannelSecurableInterfaceSubclass> Tp::BaseChannelSecurableInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelSecurableInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

bool Tp::BaseChannelSecurableInterface::encrypted ( ) const
void Tp::BaseChannelSecurableInterface::setEncrypted ( bool  encrypted)
bool Tp::BaseChannelSecurableInterface::verified ( ) const
void Tp::BaseChannelSecurableInterface::setVerified ( bool  verified)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01081.html0000644000175100017520000001351012530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingVariantMap Member List

This is the complete list of members for Tp::PendingVariantMap, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
PendingVariantMap(QDBusPendingCall call, const SharedPtr< RefCounted > &object)Tp::PendingVariantMap
result() const Tp::PendingVariantMap
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual
~PendingVariantMap()Tp::PendingVariantMap


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00926.html0000644000175100017520000002333512530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseCallContentDTMFInterface Member List

This is the complete list of members for Tp::BaseCallContentDTMFInterface, including all inherited members.

AbstractCallContentInterface(const QString &interfaceName)Tp::AbstractCallContentInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create()Tp::BaseCallContentDTMFInterfaceinlinestatic
create()Tp::BaseCallContentDTMFInterfaceinlinestatic
currentlySendingTones() const Tp::BaseCallContentDTMFInterface
dbusObject() const Tp::AbstractDBusServiceInterface
deferredTones() const Tp::BaseCallContentDTMFInterface
immutableProperties() const Tp::BaseCallContentDTMFInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
MultipleTonesCallback typedefTp::BaseCallContentDTMFInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setCurrentlySendingTones(bool sendingTones)Tp::BaseCallContentDTMFInterface
setDeferredTones(const QString &deferredTones)Tp::BaseCallContentDTMFInterface
setMultipleTonesCallback(const MultipleTonesCallback &cb)Tp::BaseCallContentDTMFInterface
setStartToneCallback(const StartToneCallback &cb)Tp::BaseCallContentDTMFInterface
setStopToneCallback(const StopToneCallback &cb)Tp::BaseCallContentDTMFInterface
StartToneCallback typedefTp::BaseCallContentDTMFInterface
StopToneCallback typedefTp::BaseCallContentDTMFInterface
~AbstractCallContentInterface()Tp::AbstractCallContentInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseCallContentDTMFInterface()Tp::BaseCallContentDTMFInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2doc.png0000644000175100017520000000135212530426257021510 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRÚ}\ˆ±IDATxíMOS[…Ÿžsúa?-XZ(PD4‚ AWbu`b 77wäHFÆCËÔÂÿà/`vo„ˆAPòq‹P @ ­ûÝè980 îà¤+»§Ýy×^ïZï9SW¹\83g‰3'°Nâçl¹¸_b¯p ïåûÆVÜÖ¡€Ÿ×"¬Ö†X€d]Ðà3“ÉÃÄÌ™xŸ ßMàœ[<çSPkvc—hÈ'…™˜^Åm™hØ7 `Û™¦ èÀåráq›‘œ¾!daeKŸþÆÕ˜:Ì*³_דâèi?I–eP*B7Ÿ¿åô!¹Ýgr6Ër6oKbëþãðôrI”ËTˆüªŒ¨xóö=›ù¢&‰(e+ßóÄkýÇ`ëÁÜb.“¸ÐW×w0¥°jÑzN™¬|©WEãµ¢a¯6[öX†AkÓù*/œ¨‰€ÉY­ ÿV’§–u²jÂ>1W *½·°PGŽzÿ¨/Eg{ ŸÇâaoŠÁVú:è¿™¤1$ôR§W,–ªà¨@ŠË56¾ÀÔÜ-¾,mê¸Î/æè¹– òr5¥T*S(Vf8ö9u’ Õ£w›ùóa=Í<{Ò¡UŒ÷r¯+ÉådDÏF$è°…£é¿`zþ»ÎúöN‘µÜ®0Q3£~_^Ëóâ¯N=ˆvpTà±LžT}ˆîkq†Òm<¼ÎÓ?Zh¿X£ï_þÝ¥[)ƒ `gêÃa_Ô*äÔ2`'=õ´Fÿ2EâÁPú ÷»›l=8‹Wv°%THqÉ¿<"¤ïG¾ÆxH{#ÆÖ«aÔJÕÞ‡—m‹„ çñKsÿàñVŠØ¡°·MâÒ^ TÁ– Ý›r¥ß½ømüÿ_™?ªWİ÷#uIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00425.html0000644000175100017520000002171012530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::StreamTubeServer::ParametersGenerator Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamTubeServer::ParametersGenerator Class Referenceabstract

The StreamTubeServer::ParametersGenerator abstract interface allows sending a different set of parameters with each tube offer. More...

#include <TelepathyQt/StreamTubeServer>

Inherited by Tp::FixedParametersGenerator.

Public Member Functions

virtual QVariantMap nextParameters (const AccountPtr &account, const OutgoingStreamTubeChannelPtr &tube, const ChannelRequestHints &hints)=0
 

Protected Member Functions

virtual ~ParametersGenerator ()
 

Detailed Description

The StreamTubeServer::ParametersGenerator abstract interface allows sending a different set of parameters with each tube offer.

Tube parameters are arbitrary data sent with the tube offer, which can be retrieved in the receiving end with IncomingStreamTubeChannel::parameters(). They can be used to transfer e.g. session identification information, authentication credentials or alike, for bootstrapping the protocol used for communicating over the tube.

For usecases where the parameters don't need to change between each tube, just passing a fixed set of parameters to a suitable StreamTubeServer::exportTcpSocket() overload is usually more convenient than implementing a ParametersGenerator. Note that StreamTubeServer::exportTcpSocket() can be called multiple times to change the parameters for future tubes when e.g. configuration settings have been changed, so a ParametersGenerator only needs to be implemented if each and every tube must have a different set of parameters.

Constructor & Destructor Documentation

Tp::StreamTubeServer::ParametersGenerator::~ParametersGenerator ( )
inlineprotectedvirtual

Class destructor. Protected, because StreamTubeServer never deletes a ParametersGenerator passed to it.

Member Function Documentation

QVariantMap Tp::StreamTubeServer::ParametersGenerator::nextParameters ( const AccountPtr &  account,
const OutgoingStreamTubeChannelPtr &  tube,
const ChannelRequestHints hints 
)
pure virtual

Return the parameters to send when offering the given tube.

Parameters
accountThe account from which the tube originates.
tubeThe tube channel which is going to be offered by the StreamTubeServer.
hintsThe hints associated with the request that led to the creation of this tube, if any.
Returns
Parameters to send with the offer, or an empty QVariantMap if none are needed for this tube.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01140.html0000644000175100017520000000561212530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::CaptchaInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00596_source.html0000644000175100017520000002244512530426257022533 0ustar00kaffeinekaffeine00000000000000 captcha.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
captcha.h
1 
23 #ifndef _TelepathyQt_captcha_h_HEADER_GUARD_
24 #define _TelepathyQt_captcha_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/CaptchaAuthentication>
31 
32 namespace Tp
33 {
34 
35 class PendingCaptchas;
36 
37 class TP_QT_EXPORT Captcha {
38 public:
39  Captcha();
40  Captcha(const Captcha &other);
41  ~Captcha();
42 
43  bool isValid() const { return mPriv.constData() != 0; }
44 
45  Captcha &operator=(const Captcha &rhs);
46 
47  QString mimeType() const;
48  QString label() const;
49  QByteArray data() const;
51  uint id() const;
52 
53 private:
54  struct Private;
55  friend struct Private;
56  friend class PendingCaptchas;
57 
58  Captcha(const QString &mimeType, const QString &label, const QByteArray &data,
60 
61  QSharedDataPointer<Captcha::Private> mPriv;
62 };
63 
64 }
65 
66 #endif
ChallengeType
Definition: captcha-authentication.h:49
The PendingCaptchas class represents an asynchronous operation for retrieving a captcha challenge fro...
Definition: pending-captchas.h:41
The Captcha class represents a Captcha ready to be answered.
Definition: captcha.h:37
bool isValid() const
Definition: captcha.h:43


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00995.html0000644000175100017520000001437312530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Channel::GroupMemberChangeDetails Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00494.html0000644000175100017520000002422512530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::RequestableChannelClassSpecList Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RequestableChannelClassSpecList Class Reference

The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec. More...

#include <TelepathyQt/RequestableChannelClassSpecList>

Inherits QList< RequestableChannelClassSpec >.

Public Member Functions

 RequestableChannelClassSpecList ()
 
 RequestableChannelClassSpecList (const RequestableChannelClass &rcc)
 
 RequestableChannelClassSpecList (const RequestableChannelClassList &rccs)
 
 RequestableChannelClassSpecList (const RequestableChannelClassSpec &rccSpec)
 
 RequestableChannelClassSpecList (const QList< RequestableChannelClassSpec > &other)
 
RequestableChannelClassList bareClasses () const
 

Detailed Description

Constructor & Destructor Documentation

Tp::RequestableChannelClassSpecList::RequestableChannelClassSpecList ( )
inline
Tp::RequestableChannelClassSpecList::RequestableChannelClassSpecList ( const RequestableChannelClass rcc)
inline
Tp::RequestableChannelClassSpecList::RequestableChannelClassSpecList ( const RequestableChannelClassList rccs)
inline
Tp::RequestableChannelClassSpecList::RequestableChannelClassSpecList ( const RequestableChannelClassSpec rccSpec)
inline
Tp::RequestableChannelClassSpecList::RequestableChannelClassSpecList ( const QList< RequestableChannelClassSpec > &  other)
inline

Member Function Documentation

RequestableChannelClassList Tp::RequestableChannelClassSpecList::bareClasses ( ) const
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00239.html0000644000175100017520000013071212530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeFileTransferAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeFileTransferAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

QDBusVariant AcceptFile (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, const QDBusMessage &dbusMessage)
 
QDBusVariant ProvideFile (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, const QDBusMessage &dbusMessage)
 

Signals

void FileTransferStateChanged (uint state, uint reason)
 
void TransferredBytesChanged (qulonglong count)
 
void InitialOffsetDefined (qulonglong initialOffset)
 
void URIDefined (const QString &URI)
 

Public Member Functions

uint State () const
 
QString ContentType () const
 
QString Filename () const
 
qulonglong Size () const
 
uint ContentHashType () const
 
QString ContentHash () const
 
QString Description () const
 
qlonglong Date () const
 
Tp::SupportedSocketMap AvailableSocketTypes () const
 
qulonglong TransferredBytes () const
 
qulonglong InitialOffset () const
 
QString URI () const
 
void SetURI (const QString &newValue)
 
QString FileCollection () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ChannelTypeFileTransferAdaptor::State ( ) const

Return the value of the exported D-Bus object property State of type uint.

Adaptees should export this property as a Qt property named 'state' with type uint.

The state of the file transfer as described by the File_Transfer_State enum.

Returns
The value of exported property State.
QString Tp::Service::ChannelTypeFileTransferAdaptor::ContentType ( ) const

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

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

The file's MIME type. This cannot change once the channel has been created.

This property is mandatory when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. Protocols which do not have a content-type property with file transfers should set this value to application/octet-stream.

Returns
The value of exported property ContentType.
QString Tp::Service::ChannelTypeFileTransferAdaptor::Filename ( ) const

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

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

The name of the file on the sender's side. This is therefore given as a suggested filename for the receiver. This cannot change once the channel has been created.

This property should be the basename of the file being sent. For example, if the sender sends the file /home/user/monkey.pdf then this property should be set to monkey.pdf.

This property is mandatory when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. This property cannot be empty and MUST be set to a sensible value.

Returns
The value of exported property Filename.
qulonglong Tp::Service::ChannelTypeFileTransferAdaptor::Size ( ) const

Return the value of the exported D-Bus object property Size of type qulonglong.

Adaptees should export this property as a Qt property named 'size' with type qulonglong.

The size of the file. If this property is set, then the file transfer is guaranteed to be this size. This cannot change once the channel has been created.

When you are creating a channel with this property, its value MUST be accurate and in bytes. However, when receiving a file, this property still MUST be in bytes but might not be entirely accurate to the byte.

This property is mandatory when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. If this information isn't provided in the protocol, connection managers MUST set it to UINT64_MAX.

Returns
The value of exported property Size.
uint Tp::Service::ChannelTypeFileTransferAdaptor::ContentHashType ( ) const

Return the value of the exported D-Bus object property ContentHashType of type uint.

Adaptees should export this property as a Qt property named 'contentHashType' with type uint.

The type of the ContentHash property.

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. However, if you wish to include the ContentHash property you MUST also include this property. If you omit this property from a ConnectionInterfaceRequestsInterface::CreateChannel() method call then its value will be assumed to be File_Hash_Type_None.

For each supported hash type, implementations SHOULD include an entry in ConnectionInterfaceRequestsInterface::RequestableChannelClasses with this property fixed to that hash type. If the protocol supports offering a file without a content hash, implementations SHOULD list this property in Allowed in a requestable channel class, mapping hash types they don't understand to None.

Returns
The value of exported property ContentHashType.
QString Tp::Service::ChannelTypeFileTransferAdaptor::ContentHash ( ) const

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

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

Hash of the contents of the file transfer, of type described in the value of the ContentHashType property.

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. Its value MUST correspond to the appropriate type of the ContentHashType property. If the ContentHashType property is not set, or set to File_Hash_Type_None, then this property will not even be looked at.

Returns
The value of exported property ContentHash.
QString Tp::Service::ChannelTypeFileTransferAdaptor::Description ( ) const

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

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

Description of the file transfer. This cannot change once the channel has been created.

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. If this property was not provided by the remote party, connection managers MUST set it to the empty string.

Returns
The value of exported property Description.
qlonglong Tp::Service::ChannelTypeFileTransferAdaptor::Date ( ) const

Return the value of the exported D-Bus object property Date of type qlonglong.

Adaptees should export this property as a Qt property named 'date' with type qlonglong.

The last modification time of the file being transferred. This cannot change once the channel has been created

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method.

Returns
The value of exported property Date.
Tp::SupportedSocketMap Tp::Service::ChannelTypeFileTransferAdaptor::AvailableSocketTypes ( ) const

Return the value of the exported D-Bus object property AvailableSocketTypes of type Tp::SupportedSocketMap.

Adaptees should export this property as a Qt property named 'availableSocketTypes' with type Tp::SupportedSocketMap.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for sockets with that address type. For simplicity, if a CM supports offering a particular type of file transfer, it is assumed to support accepting it. Connection Managers MUST support at least Socket_Address_Type_IPv4.

A typical value for a host without IPv6 support:

  {
    Socket_Address_Type_IPv4:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
       Socket_Access_Control_Netmask],
    Socket_Address_Type_Unix:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
  }
Returns
The value of exported property AvailableSocketTypes.
qulonglong Tp::Service::ChannelTypeFileTransferAdaptor::TransferredBytes ( ) const

Return the value of the exported D-Bus object property TransferredBytes of type qulonglong.

Adaptees should export this property as a Qt property named 'transferredBytes' with type qulonglong.

The number of bytes that have been transferred at the time of requesting the property. This will be updated as the file transfer continues.

Returns
The value of exported property TransferredBytes.
qulonglong Tp::Service::ChannelTypeFileTransferAdaptor::InitialOffset ( ) const

Return the value of the exported D-Bus object property InitialOffset of type qulonglong.

Adaptees should export this property as a Qt property named 'initialOffset' with type qulonglong.

The offset in bytes from where the file should be sent. This MUST be respected by both the receiver and the sender after the state becomes Open, but before any data is sent or received. Until the InitialOffsetDefined() signal is emitted, this property is undefined.

Before setting the State property to Open, the connection manager MUST set the InitialOffset property, possibly to 0.

This property MUST NOT change after the state of the transfer has changed to Open.

Returns
The value of exported property InitialOffset.
QString Tp::Service::ChannelTypeFileTransferAdaptor::URI ( ) const

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

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

For outgoing file transfers, this requestable property allows the channel requester to inform observers (and the handler, if it is not the requester itself) of the URI of the file being transferred. Note that the connection manager SHOULD NOT read this file directly; the handler streams the file into the CM through the socket negotiated using ProvideFile() .

On outgoing file transfers, this property MUST NOT change after the channel is requested.

For incoming file transfers, this property MAY be set by the channel handler before calling AcceptFile() to inform observers where the incoming file will be saved. If set by an approver, the handler MUST save the file to that location. Setting this property once AcceptFile() has been called MUST fail. Once this property has been set URIDefined() is emitted.

If set, this URI SHOULD generally point to a file on the local system, as defined by RFC 1738 §3.10; that is, it should be of the form file:///path/to/file or file://localhost/path/to/file. For outgoing files, this URI MAY use a different scheme, such as http:, if a remote resource is being transferred to a contact.

Returns
The value of exported property URI.
void Tp::Service::ChannelTypeFileTransferAdaptor::SetURI ( const QString &  newValue)

Set the value of the exported D-Bus object property URI of type QString.

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

For outgoing file transfers, this requestable property allows the channel requester to inform observers (and the handler, if it is not the requester itself) of the URI of the file being transferred. Note that the connection manager SHOULD NOT read this file directly; the handler streams the file into the CM through the socket negotiated using ProvideFile() .

On outgoing file transfers, this property MUST NOT change after the channel is requested.

For incoming file transfers, this property MAY be set by the channel handler before calling AcceptFile() to inform observers where the incoming file will be saved. If set by an approver, the handler MUST save the file to that location. Setting this property once AcceptFile() has been called MUST fail. Once this property has been set URIDefined() is emitted.

If set, this URI SHOULD generally point to a file on the local system, as defined by RFC 1738 §3.10; that is, it should be of the form file:///path/to/file or file://localhost/path/to/file. For outgoing files, this URI MAY use a different scheme, such as http:, if a remote resource is being transferred to a contact.

QString Tp::Service::ChannelTypeFileTransferAdaptor::FileCollection ( ) const

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

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

The collection of files to which this channel belongs, or the empty string if this channel does not belong to a collection of files.

A channel's FileCollection property can never change.

At least on GTalk and apparently also on iChat the user can send a set of files to a contact and that contact can then pick and choose which files to actually receive.

The CM should emit all new FT channels belonging to one collection at the same time. UIs supporting this feature can then bundle all these channels together in some way, and show a nice UI. UIs not supporting it will treat them as separate transfers, which is not great but a reasonable fallback.

No mechanism is currently defined to indicate whether the UI should expect any more files in the same collection. UIs SHOULD assume that more file transfers may be added to a collection. It is possible that a "no more channels in this collection" indication will be added in a future version of this specification.

Returns
The value of exported property FileCollection.
QDBusVariant Tp::Service::ChannelTypeFileTransferAdaptor::AcceptFile ( uint  addressType,
uint  accessControl,
const QDBusVariant &  accessControlParam,
qulonglong  offset,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void acceptFile(uint addressType, uint accessControl, const QDBusVariant& accessControlParam, qulonglong offset, const Tp::Service::ChannelTypeFileTransferAdaptor::AcceptFileContextPtr &context);

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

Accept a file transfer that's in the Pending state. The file transfer's state becomes Accepted after this method is called. At this point the client can connect to the socket. CM MUST emit InitialOffsetDefined and change the state to Open before writing to the socket. Then InitialOffset should be respected in case its value differs from the offset that was specified as an argument to AcceptFile.

Parameters
addressType
The type of address the connection manager should listen on.
accessControl
The type of access control the connection manager should apply to 
the socket.
accessControlParam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
offset
The desired offset in bytes where the file transfer should start. 
The offset is taken from the beginning of the file. Specifying an 
offset of zero will start the transfer from the beginning of the 
file. The offset that is actually given in the InitialOffset 
property can differ from this argument where the requested offset 
is not supported. (For example, some protocols do not support 
offsets at all so the InitialOffset property will always be 0.)
Returns
The address on which the connection manager will listen for 
connections for this file transfer.
QDBusVariant Tp::Service::ChannelTypeFileTransferAdaptor::ProvideFile ( uint  addressType,
uint  accessControl,
const QDBusVariant &  accessControlParam,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void provideFile(uint addressType, uint accessControl, const QDBusVariant& accessControlParam, const Tp::Service::ChannelTypeFileTransferAdaptor::ProvideFileContextPtr &context);

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

Provide the file for an outgoing file transfer which has been offered. Opens a socket that the client can use to provide a file to the connection manager. The channel MUST have been requested, and will change state to Open when this method is called if its state was Accepted.

Parameters
addressType
The type of address the connection manager should listen on.
accessControl
The type of access control the connection manager should apply to 
the socket.
accessControlParam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
Returns
The address on which the connection manager will listen for 
connections for this file transfer.
void Tp::Service::ChannelTypeFileTransferAdaptor::FileTransferStateChanged ( uint  state,
uint  reason 
)
signal

Represents the exported D-Bus signal FileTransferStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void fileTransferStateChanged(uint state, uint reason);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
state
The new state of the file transfer; see the File_Transfer_State 
enumeration.
reason
The reason for the state change; see the 
File_Transfer_State_Change_Reason enumeration. The value will 
always be File_Transfer_State_Change_Reason_None, except when 
changing state to cancelled.
void Tp::Service::ChannelTypeFileTransferAdaptor::TransferredBytesChanged ( qulonglong  count)
signal

Represents the exported D-Bus signal TransferredBytesChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void transferredBytesChanged(qulonglong count);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
count
The number of already transferred bytes.
void Tp::Service::ChannelTypeFileTransferAdaptor::InitialOffsetDefined ( qulonglong  initialOffset)
signal

Represents the exported D-Bus signal InitialOffsetDefined on this object.

Adaptees should export this signal as a Qt signal with the following signature: void initialOffsetDefined(qulonglong initialOffset);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
initialOffset
The value of the InitialOffset property.
void Tp::Service::ChannelTypeFileTransferAdaptor::URIDefined ( const QString &  URI)
signal

Represents the exported D-Bus signal URIDefined on this object.

Adaptees should export this signal as a Qt signal with the following signature: void uriDefined(const QString& URI);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
URI
The value of the URI property.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00592_source.html0000644000175100017520000003270512530426257022527 0ustar00kaffeinekaffeine00000000000000 capabilities-base.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
capabilities-base.h
1 
23 #ifndef _TelepathyQt_capabilities_base_h_HEADER_GUARD_
24 #define _TelepathyQt_capabilities_base_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/RequestableChannelClassSpec>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 class TP_QT_EXPORT CapabilitiesBase
37 {
38 public:
40  CapabilitiesBase(const CapabilitiesBase &other);
41  virtual ~CapabilitiesBase();
42 
43  CapabilitiesBase &operator=(const CapabilitiesBase &other);
44 
45  RequestableChannelClassSpecList allClassSpecs() const;
46 
47  bool isSpecificToContact() const;
48 
49  bool textChats() const;
50 
51  bool audioCalls() const;
52  bool videoCalls() const;
53  bool videoCallsWithAudio() const;
54  bool upgradingCalls() const;
55 
56  TP_QT_DEPRECATED bool streamedMediaCalls() const;
57  TP_QT_DEPRECATED bool streamedMediaAudioCalls() const;
58  TP_QT_DEPRECATED bool streamedMediaVideoCalls() const;
59  TP_QT_DEPRECATED bool streamedMediaVideoCallsWithAudio() const;
60  TP_QT_DEPRECATED bool upgradingStreamedMediaCalls() const;
61 
62  bool fileTransfers() const;
63 
64  // later: FIXME TODO why not now?
65  // QList<FileHashType> fileTransfersRequireHash() const;
66 
67 protected:
68  CapabilitiesBase(bool specificToContact);
70  bool specificToContact);
72  bool specificToContact);
73 
74  virtual void updateRequestableChannelClasses(
75  const RequestableChannelClassList &rccs);
76 
77 private:
78  friend class Connection;
79  friend class Contact;
80 
81  struct Private;
82  friend struct Private;
83  QSharedDataPointer<Private> mPriv;
84 };
85 
86 } // Tp
87 
88 Q_DECLARE_METATYPE(Tp::CapabilitiesBase);
89 
90 #endif
The CapabilitiesBase class represents the capabilities a Connection or a Contact supports.
Definition: capabilities-base.h:36
QList< RequestableChannelClass > RequestableChannelClassList
Definition: build/TelepathyQt/_gen/types.h:2621
The Connection class represents a Telepathy connection.
Definition: connection.h:62
The Contact class represents a Telepathy contact.
Definition: contact.h:51
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2blank.png0000644000175100017520000000012612530426257022030 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01269.html0000644000175100017520000002242212530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceSMSInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceSMSInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceSMSInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSMSInterface
ChannelInterfaceSMSInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSMSInterface
ChannelInterfaceSMSInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceSMSInterface
ChannelInterfaceSMSInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceSMSInterfaceexplicit
ChannelInterfaceSMSInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceSMSInterface
GetSMSLength(const Tp::MessagePartList &message, int timeout=-1)Tp::Client::ChannelInterfaceSMSInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceSMSInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceSMSInterfaceinline
requestPropertyFlash() const Tp::Client::ChannelInterfaceSMSInterfaceinline
requestPropertySMSChannel() const Tp::Client::ChannelInterfaceSMSInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SMSChannelChanged(bool SMSChannel)Tp::Client::ChannelInterfaceSMSInterfacesignal
staticInterfaceName()Tp::Client::ChannelInterfaceSMSInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00052.html0000644000175100017520000000630112530426257021127 0ustar00kaffeinekaffeine00000000000000 Installation
   Home · All Classes · All Namespaces · Modules · Functions · Files
Installation

Installing from source on Linux

Requirements

Building Telepathy-Qt requires:

For the full set of regression tests to run, you'll also need:

and to build the example VoIP call UI (examples/call), you'll need:

Building

After installing all dependencies, run:

$ mkdir build; cd build
$ cmake ..
$ make
$ make install 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01013.html0000644000175100017520000000611512530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusObject Member List

This is the complete list of members for Tp::DBusObject, including all inherited members.

dbusConnection() const Tp::DBusObject
DBusObject(const QDBusConnection &dbusConnection, QObject *parent=0)Tp::DBusObject
objectPath() const Tp::DBusObject
setObjectPath(const QString &path)Tp::DBusObjectprotected
~DBusObject()Tp::DBusObjectvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00868.html0000644000175100017520000000327312530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::ManagerFile Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ManagerFile Namespace Reference


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x69.html0000644000175100017520000000531112530426260024143 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00367.html0000644000175100017520000005552612530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::Channel::GroupMemberChangeDetails Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Channel::GroupMemberChangeDetails Class Reference

The Channel::GroupMemberChangeDetails class represents the details of a group membership change. More...

#include <TelepathyQt/Channel>

Public Member Functions

 GroupMemberChangeDetails ()
 
 GroupMemberChangeDetails (const GroupMemberChangeDetails &other)
 
 ~GroupMemberChangeDetails ()
 
GroupMemberChangeDetailsoperator= (const GroupMemberChangeDetails &other)
 
bool isValid () const
 
bool hasActor () const
 
ContactPtr actor () const
 
bool hasReason () const
 
ChannelGroupChangeReason reason () const
 
bool hasMessage () const
 
QString message () const
 
bool hasError () const
 
QString error () const
 
bool hasDebugMessage () const
 
QString debugMessage () const
 
QVariantMap allDetails () const
 

Detailed Description

The Channel::GroupMemberChangeDetails class represents the details of a group membership change.

Extended information is not always available; this will be reflected by the return value of isValid().

Constructor & Destructor Documentation

Tp::Channel::GroupMemberChangeDetails::GroupMemberChangeDetails ( )

Constructs a new invalid GroupMemberChangeDetails instance.

Tp::Channel::GroupMemberChangeDetails::GroupMemberChangeDetails ( const GroupMemberChangeDetails other)

Copy constructor.

Tp::Channel::GroupMemberChangeDetails::~GroupMemberChangeDetails ( )

Class destructor.

Member Function Documentation

Channel::GroupMemberChangeDetails & Tp::Channel::GroupMemberChangeDetails::operator= ( const GroupMemberChangeDetails other)

Assigns all information (validity, details) from other to this.

bool Tp::Channel::GroupMemberChangeDetails::isValid ( ) const
inline

Return whether the details are valid (have actually been received from the service).

Returns
true if valid, false otherwise.
bool Tp::Channel::GroupMemberChangeDetails::hasActor ( ) const

Return whether the details specify an actor.

If present, actor() will return the contact object representing the person who made the change.

Returns
true if the actor is known, false otherwise.
See Also
actor()
ContactPtr Tp::Channel::GroupMemberChangeDetails::actor ( ) const

Return the contact object representing the person who made the change (actor), if known.

Returns
A pointer to the Contact object, or a null ContactPtr if the actor is unknown.
See Also
hasActor()
bool Tp::Channel::GroupMemberChangeDetails::hasReason ( ) const
inline

Return whether the details specify the reason for the change.

Returns
true if the reason is known, false otherwise.
See Also
reason()
ChannelGroupChangeReason Tp::Channel::GroupMemberChangeDetails::reason ( ) const
inline

Return the reason for the change, if known.

Returns
The change reason as ChannelGroupChangeReason, or ChannelGroupChangeReasonNone if the reason is unknown.
See Also
hasReason()
bool Tp::Channel::GroupMemberChangeDetails::hasMessage ( ) const
inline

Return whether the details specify a human-readable message from the contact represented by actor() pertaining to the change.

Returns
true if the message is known, false otherwise.
See Also
message()
QString Tp::Channel::GroupMemberChangeDetails::message ( ) const
inline

Return a human-readable message from the contact represented by actor() pertaining to the change, if known.

Returns
The message, or an empty string if the message is unknown.
See Also
hasMessage()
bool Tp::Channel::GroupMemberChangeDetails::hasError ( ) const
inline

Return whether the details specify a D-Bus error describing the change.

Returns
true if the error is known, false otherwise.
See Also
error()
QString Tp::Channel::GroupMemberChangeDetails::error ( ) const
inline

Return the D-Bus error describing the change, if known.

The D-Bus error provides more specific information than the reason() and should be used if applicable.

Returns
A D-Bus error describing the change, or an empty string if the error is unknown.
See Also
hasError()
bool Tp::Channel::GroupMemberChangeDetails::hasDebugMessage ( ) const
inline

Return whether the details specify a debug message.

Returns
true if debug message is present, false otherwise.
See Also
debugMessage()
QString Tp::Channel::GroupMemberChangeDetails::debugMessage ( ) const
inline

Return the debug message specified by the details, if any.

The debug message is purely informational, offered for display for bug reporting purposes, and should not be attempted to be parsed.

Returns
The debug message, or an empty string if there is none.
See Also
hasDebugMessage()
QVariantMap Tp::Channel::GroupMemberChangeDetails::allDetails ( ) const

Return a map containing all details of the group members change.

This is useful for accessing domain-specific additional details.

Returns
The details of the group members change as QVariantMap.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01328.html0000644000175100017520000001204012530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::CallContentAdaptor Member List

This is the complete list of members for Tp::Service::CallContentAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
Disposition() const Tp::Service::CallContentAdaptor
Interfaces() const Tp::Service::CallContentAdaptor
Name() const Tp::Service::CallContentAdaptor
Remove(const QDBusMessage &dbusMessage)Tp::Service::CallContentAdaptorslot
Streams() const Tp::Service::CallContentAdaptor
StreamsAdded(const Tp::ObjectPathList &streams)Tp::Service::CallContentAdaptorsignal
StreamsRemoved(const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason)Tp::Service::CallContentAdaptorsignal
Type() const Tp::Service::CallContentAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00111.html0000644000175100017520000004165112530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelServerAuthenticationType Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Type.ServerAuthentifcation. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Member Functions

virtual ~BaseChannelServerAuthenticationType ()
 
QVariantMap immutableProperties () const
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelServerAuthenticationTypePtr 
create (const QString &authenticationMethod)
 
template<typename BaseChannelServerAuthenticationTypeSubclass >
static SharedPtr
< BaseChannelServerAuthenticationTypeSubclass > 
create (const QString &authenticationMethod)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Type.ServerAuthentifcation.

Constructor & Destructor Documentation

Tp::BaseChannelServerAuthenticationType::~BaseChannelServerAuthenticationType ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelServerAuthenticationTypePtr Tp::BaseChannelServerAuthenticationType::create ( const QString &  authenticationMethod)
inlinestatic
template<typename BaseChannelServerAuthenticationTypeSubclass >
static SharedPtr<BaseChannelServerAuthenticationTypeSubclass> Tp::BaseChannelServerAuthenticationType::create ( const QString &  authenticationMethod)
inlinestatic
QVariantMap Tp::BaseChannelServerAuthenticationType::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01082.html0000644000175100017520000001346012530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingVariant Member List

This is the complete list of members for Tp::PendingVariant, including all inherited members.

errorMessage() const Tp::PendingOperation
errorName() const Tp::PendingOperation
finished(Tp::PendingOperation *operation)Tp::PendingOperationsignal
isError() const Tp::PendingOperation
isFinished() const Tp::PendingOperation
isValid() const Tp::PendingOperation
object() const Tp::PendingOperationprotected
PendingOperation(const SharedPtr< RefCounted > &object)Tp::PendingOperationprotected
PendingVariant(QDBusPendingCall call, const SharedPtr< RefCounted > &object)Tp::PendingVariant
result() const Tp::PendingVariant
setFinished()Tp::PendingOperationprotectedslot
setFinishedWithError(const QString &name, const QString &message)Tp::PendingOperationprotectedslot
setFinishedWithError(const QDBusError &error)Tp::PendingOperationprotectedslot
~PendingOperation()Tp::PendingOperationvirtual
~PendingVariant()Tp::PendingVariant


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00858_source.html0000644000175100017520000001550412530426257022532 0ustar00kaffeinekaffeine00000000000000 utils.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
utils.h
1 
23 #ifndef _TelepathyQt_utils_h_HEADER_GUARD_
24 #define _TelepathyQt_utils_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 #include <QString>
33 #include <QVariant>
34 
35 namespace Tp
36 {
37 
38 TP_QT_EXPORT QString escapeAsIdentifier(const QString &string);
39 
40 TP_QT_EXPORT bool checkValidProtocolName(const QString &protocolName);
41 
42 TP_QT_EXPORT QVariant::Type variantTypeFromDBusSignature(const QString &signature);
43 TP_QT_EXPORT QVariant parseValueWithDBusSignature(const QString &value,
44  const QString &dbusSignature);
45 
46 } // Tp
47 
48 #endif
bool checkValidProtocolName(const QString &protocolName)
Definition: utils.cpp:122
QVariant::Type variantTypeFromDBusSignature(const QString &signature)
Definition: utils.cpp:148
QVariant parseValueWithDBusSignature(const QString &value, const QString &dbusSignature)
Definition: utils.cpp:174
QString escapeAsIdentifier(const QString &string)
Definition: utils.cpp:64


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00927.html0000644000175100017520000002631112530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannel Member List

This is the complete list of members for Tp::BaseChannel, including all inherited members.

BaseChannel(const QDBusConnection &dbusConnection, BaseConnection *connection, const QString &channelType, uint targetHandleType, uint targetHandle)Tp::BaseChannelprotected
busName() const Tp::DBusService
channelType() const Tp::BaseChannel
close()Tp::BaseChannel
closed()Tp::BaseChannelsignal
create(BaseConnection *connection, const QString &channelType, Tp::HandleType targetHandleType=Tp::HandleTypeNone, uint targetHandle=0)Tp::BaseChannelinlinestatic
dbusConnection() const Tp::DBusService
dbusObject() const Tp::DBusService
DBusService(const QDBusConnection &dbusConnection)Tp::DBusService
details() const Tp::BaseChannel
immutableProperties() const Tp::BaseChannelvirtual
initiatorHandle() const Tp::BaseChannel
initiatorID() const Tp::BaseChannel
interface(const QString &interfaceName) const Tp::BaseChannel
interfaces() const Tp::BaseChannel
isRegistered() const Tp::DBusService
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusService
plugInterface(const AbstractChannelInterfacePtr &interface)Tp::BaseChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerObject(DBusError *error=NULL)Tp::BaseChannel
registerObject(const QString &busName, const QString &objectPath, DBusError *error)Tp::BaseChannelprotectedvirtual
requested() const Tp::BaseChannel
setInitiatorHandle(uint initiatorHandle)Tp::BaseChannel
setInitiatorID(const QString &initiatorID)Tp::BaseChannel
setRequested(bool requested)Tp::BaseChannel
setTargetID(const QString &targetID)Tp::BaseChannel
targetHandle() const Tp::BaseChannel
targetHandleType() const Tp::BaseChannel
targetID() const Tp::BaseChannel
uniqueName() const Tp::BaseChannelvirtual
~BaseChannel()Tp::BaseChannelvirtual
~DBusService()Tp::DBusServicevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/annotated.html0000644000175100017520000066110012530426260022273 0ustar00kaffeinekaffeine00000000000000 Class List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 1234]
\NTp


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00426.html0000644000175100017520000001267012530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::ParamSpec Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ParamSpec Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString name
 
uint flags
 
QString signature
 
QDBusVariant defaultValue
 

Detailed Description

Structure type generated from the specification.

A struct representing an allowed parameter, as returned by GetParameters on the ConnectionManager interface.

Member Data Documentation

QString Tp::ParamSpec::name

A string parameter name

uint Tp::ParamSpec::flags

A bitwise OR of the parameter flags

QString Tp::ParamSpec::signature

A string containing the D-Bus type signature for this parameter

QDBusVariant Tp::ParamSpec::defaultValue

The default value (if the Has_Default flag is not present, there is no default and this takes some dummy value, which SHOULD be of the appropriate D-Bus type)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00180.html0000644000175100017520000016213612530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelDispatchOperation Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ChannelDispatchOperation class represents a Telepathy channel dispatch operation. More...

#include <TelepathyQt/ChannelDispatchOperation>

Inherits Tp::StatefulDBusProxy, and Tp::OptionalInterfaceFactory< ChannelDispatchOperation >.

Signals

void channelLost (const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~ChannelDispatchOperation ()
 
ConnectionPtr connection () const
 
AccountPtr account () const
 
QList< ChannelPtr > channels () const
 
QStringList possibleHandlers () const
 
PendingOperationhandleWith (const QString &handler)
 
PendingOperationclaim ()
 
PendingOperationclaim (const AbstractClientHandlerPtr &handler)
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< ChannelDispatchOperation >
 OptionalInterfaceFactory (ChannelDispatchOperation *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static ChannelDispatchOperationPtr create (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList< ChannelPtr > &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 

Protected Member Functions

 ChannelDispatchOperation (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList< ChannelPtr > &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)
 
Client::ChannelDispatchOperationInterfacebaseInterface () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< ChannelDispatchOperation >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< ChannelDispatchOperation >
enum  InterfaceSupportedChecking
 

Detailed Description

The ChannelDispatchOperation class represents a Telepathy channel dispatch operation.

One of the channel dispatcher's functions is to offer incoming channels to Approver clients for approval. An approver should generally ask the user whether they want to participate in the requested communication channels (join the chat or chatroom, answer the call, accept the file transfer, or whatever is appropriate). A collection of channels offered in this way is represented by a ChannelDispatchOperation object.

If the user wishes to accept the communication channels, the approver should call handleWith() to indicate the user's or approver's preferred handler for the channels (the empty string indicates no particular preference, and will cause any suitable handler to be used).

If the user wishes to reject the communication channels, or if the user accepts the channels and the approver will handle them itself, the approver should call claim(). If the resulting PendingOperation succeeds, the approver immediately has control over the channels as their primary handler, and may do anything with them (in particular, it may close them in whatever way seems most appropriate).

There are various situations in which the channel dispatch operation will be closed, causing the DBusProxy::invalidated() signal to be emitted. If this happens, the approver should stop prompting the user.

Because all approvers are launched simultaneously, the user might respond to another approver; if this happens, the invalidated signal will be emitted with the error code TP_QT_ERROR_OBJECT_REMOVED.

If a channel closes, the signal channelLost() is emitted. If all channels close, there is nothing more to dispatch, so the invalidated signal will be emitted with the error code TP_QT_ERROR_OBJECT_REMOVED.

If the channel dispatcher crashes or exits, the invalidated signal will be emitted with the error code TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER. In a high-quality implementation, the dispatcher should be restarted, at which point it will create new channel dispatch operations for any undispatched channels, and the approver will be notified again.

Constructor & Destructor Documentation

Tp::ChannelDispatchOperation::~ChannelDispatchOperation ( )
virtual

Class destructor.

Tp::ChannelDispatchOperation::ChannelDispatchOperation ( const QDBusConnection &  bus,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const QList< ChannelPtr > &  initialChannels,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
protected

Construct a new channel dispatch operation object using the given bus, the given factories and the given initial channels.

Parameters
busQDBusConnection to use
objectPathThe channel dispatch operation object path.
immutablePropertiesThe channel dispatch operation immutable properties.
initialChannelsThe channels this CDO has initially (further tracking is done internally).
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.

Member Function Documentation

ChannelDispatchOperationPtr Tp::ChannelDispatchOperation::create ( const QDBusConnection &  bus,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const QList< ChannelPtr > &  initialChannels,
const AccountFactoryConstPtr &  accountFactory,
const ConnectionFactoryConstPtr &  connectionFactory,
const ChannelFactoryConstPtr &  channelFactory,
const ContactFactoryConstPtr &  contactFactory 
)
static

Create a new channel dispatch operation object using the given bus, the given factories and the given initial channels.

Parameters
busQDBusConnection to use.
objectPathThe channel dispatch operation object path.
immutablePropertiesThe channel dispatch operation immutable properties.
initialChannelsThe channels this CDO has initially (further tracking is done internally).
accountFactoryThe account factory to use.
connectionFactoryThe connection factory to use.
channelFactoryThe channel factory to use.
contactFactoryThe contact factory to use.
Returns
A ChannelDispatchOperationPtr object pointing to the newly created ChannelDispatchOperation object.
ConnectionPtr Tp::ChannelDispatchOperation::connection ( ) const

Return the connection with which the channels for this dispatch operation are associated.

This method requires ChannelDispatchOperation::FeatureCore to be ready.

Returns
A pointer to the Connection object.
AccountPtr Tp::ChannelDispatchOperation::account ( ) const

Return the account with which the connection and channels for this dispatch operation are associated.

This method requires ChannelDispatchOperation::FeatureCore to be ready.

Returns
A pointer to the Account object.
QList< ChannelPtr > Tp::ChannelDispatchOperation::channels ( ) const

Return the channels to be dispatched.

This method requires ChannelDispatchOperation::FeatureCore to be ready.

Returns
A list of pointers to Channel objects.
QStringList Tp::ChannelDispatchOperation::possibleHandlers ( ) const

Return the well known bus names (starting with org.freedesktop.Telepathy.Client.) of the possible Handlers for this dispatch operation channels with the preferred handlers first.

As a result, approvers should use the first handler by default, unless they have a reason to do otherwise.

This method requires ChannelDispatchOperation::FeatureCore to be ready.

Returns
List of possible handlers names.
PendingOperation * Tp::ChannelDispatchOperation::handleWith ( const QString &  handler)

Called by an approver to accept a channel bundle and request that the given handler be used to handle it.

If successful, this method will cause the ChannelDispatchOperation object to disappear, emitting invalidated with error TP_QT_ERROR_OBJECT_REMOVED.

However, this method may fail because the dispatch has already been completed and the object has already gone. If this occurs, it indicates that another approver has asked for the bundle to be handled by a particular handler. The approver must not attempt to interact with the channels further in this case, unless it is separately invoked as the handler.

Approvers which are also channel handlers should use claim() instead of this method to request that they can handle a channel bundle themselves.

Parameters
handlerThe well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the channel handler that should handle the channel, or an empty string if the client has no preferred channel handler.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
PendingOperation * Tp::ChannelDispatchOperation::claim ( )

Called by an approver to claim channels for closing them.

Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
PendingOperation * Tp::ChannelDispatchOperation::claim ( const AbstractClientHandlerPtr &  handler)

Called by an approver to claim channels for handling internally. If this method is called successfully, the handler becomes the handler for the channel, but does not have the AbstractClientHandler::handleChannels() method called on it.

Approvers wishing to reject channels must call this method to claim ownership of them, and must not call requestClose() on the channels unless/until this method returns successfully.

The channel dispatcher can't know how best to close arbitrary channel types, so it leaves it up to the approver to do so. For instance, for text channels it is necessary to acknowledge any messages that have already been displayed to the user first - ideally, the approver would display and then acknowledge the messages - or to call Channel::requestClose() if the destructive behaviour of that method is desired.

Similarly, an approver for streamed media channels can close the channel with a reason (e.g. "busy") if desired. The channel dispatcher, which is designed to have no specific knowledge of particular channel types, can't do that.

If successful, this method will cause the ChannelDispatchOperation object to disappear, emitting Finished, in the same way as for handleWith().

This method may fail because the dispatch operation has already been completed. Again, see handleWith() for more details. The approver must not attempt to interact with the channels further in this case.

Parameters
handlerThe channel handler, that should remain registered during the lifetime of channels(), otherwise dispatching will fail if the channel dispatcher restarts.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
claim(), handleWith()
void Tp::ChannelDispatchOperation::channelLost ( const Tp::ChannelPtr &  channel,
const QString &  errorName,
const QString &  errorMessage 
)
signal

Emitted when a channel has closed before it could be claimed or handled. If this is emitted for the last remaining channel in a channel dispatch operation, it will immediately be followed by invalidated() with error TP_QT_ERROR_OBJECT_REMOVED.

Parameters
channelThe channel that was closed.
errorThe name of a D-Bus error indicating why the channel closed.
errorMessageThe error message.
Client::ChannelDispatchOperationInterface * Tp::ChannelDispatchOperation::baseInterface ( ) const
protected

Return the ChannelDispatchOperationInterface for this ChannelDispatchOperation class. This method is protected since the convenience methods provided by this class should always be used instead of the interface by users of the class.

Returns
A pointer to the existing Client::ChannelDispatchOperationInterface object for this ChannelDispatchOperation object.

Member Data Documentation

const Feature Tp::ChannelDispatchOperation::FeatureCore
static

Feature representing the core that needs to become ready to make the ChannelDispatchOperation object usable.

Note that this feature must be enabled in order to use most ChannelDispatchOperation methods.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01141.html0000644000175100017520000000533012530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelCallStateMap Member List

This is the complete list of members for Tp::ChannelCallStateMap, including all inherited members.

ChannelCallStateMap()Tp::ChannelCallStateMapinline
ChannelCallStateMap(const QMap< uint, uint > &a)Tp::ChannelCallStateMapinline
operator=(const QMap< uint, uint > &a)Tp::ChannelCallStateMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00996.html0000644000175100017520000001701312530426260021144 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ClientRegistrar Member List

This is the complete list of members for Tp::ClientRegistrar, including all inherited members.

accountFactory() const Tp::ClientRegistrar
channelFactory() const Tp::ClientRegistrar
connectionFactory() const Tp::ClientRegistrar
contactFactory() const Tp::ClientRegistrar
create(const QDBusConnection &bus)Tp::ClientRegistrarstatic
create(const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create())Tp::ClientRegistrarstatic
create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory)Tp::ClientRegistrarstatic
create(const AccountManagerPtr &accountManager)Tp::ClientRegistrarstatic
dbusConnection() const Tp::ClientRegistrar
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerClient(const AbstractClientPtr &client, const QString &clientName, bool unique=false)Tp::ClientRegistrar
registeredClients() const Tp::ClientRegistrar
unregisterClient(const AbstractClientPtr &client)Tp::ClientRegistrar
unregisterClients()Tp::ClientRegistrar
~ClientRegistrar()Tp::ClientRegistrar
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00578_source.html0000644000175100017520000014700712530426257022535 0ustar00kaffeinekaffeine00000000000000 base-protocol.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
base-protocol.h
1 
23 #ifndef _TelepathyQt_base_protocol_h_HEADER_GUARD_
24 #define _TelepathyQt_base_protocol_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/AvatarSpec>
31 #include <TelepathyQt/Callbacks>
32 #include <TelepathyQt/DBusService>
33 #include <TelepathyQt/Global>
34 #include <TelepathyQt/PresenceSpecList>
35 #include <TelepathyQt/ProtocolParameterList>
36 #include <TelepathyQt/RequestableChannelClassSpecList>
37 #include <TelepathyQt/Types>
38 
39 #include <QDBusConnection>
40 
41 class QString;
42 class QStringList;
43 
44 namespace Tp
45 {
46 
47 class TP_QT_EXPORT BaseProtocol : public DBusService
48 {
49  Q_OBJECT
50  Q_DISABLE_COPY(BaseProtocol)
51 
52 public:
53  static BaseProtocolPtr create(const QString &name)
54  {
55  return BaseProtocolPtr(new BaseProtocol(QDBusConnection::sessionBus(), name));
56  }
57  template<typename BaseProtocolSubclass>
58  static SharedPtr<BaseProtocolSubclass> create(const QString &name)
59  {
60  return SharedPtr<BaseProtocolSubclass>(new BaseProtocolSubclass(
61  QDBusConnection::sessionBus(), name));
62  }
63  static BaseProtocolPtr create(const QDBusConnection &dbusConnection, const QString &name)
64  {
65  return BaseProtocolPtr(new BaseProtocol(dbusConnection, name));
66  }
67  template<typename BaseProtocolSubclass>
68  static SharedPtr<BaseProtocolSubclass> create(const QDBusConnection &dbusConnection,
69  const QString &name)
70  {
71  return SharedPtr<BaseProtocolSubclass>(new BaseProtocolSubclass(dbusConnection, name));
72  }
73 
74  virtual ~BaseProtocol();
75 
76  QString name() const;
77 
78  QVariantMap immutableProperties() const;
79 
80  // Proto
81  QStringList connectionInterfaces() const;
82  void setConnectionInterfaces(const QStringList &connInterfaces);
83 
84  ProtocolParameterList parameters() const;
85  void setParameters(const ProtocolParameterList &parameters);
86 
87  RequestableChannelClassSpecList requestableChannelClasses() const;
88  void setRequestableChannelClasses(const RequestableChannelClassSpecList &rccSpecs);
89 
90  QString vcardField() const;
91  void setVCardField(const QString &vcardField);
92 
93  QString englishName() const;
94  void setEnglishName(const QString &englishName);
95 
96  QString iconName() const;
97  void setIconName(const QString &iconName);
98 
99  QStringList authenticationTypes() const;
100  void setAuthenticationTypes(const QStringList &authenticationTypes);
101 
103  void setCreateConnectionCallback(const CreateConnectionCallback &cb);
104  Tp::BaseConnectionPtr createConnection(const QVariantMap &parameters, DBusError *error);
105 
107  void setIdentifyAccountCallback(const IdentifyAccountCallback &cb);
108  QString identifyAccount(const QVariantMap &parameters, DBusError *error);
109 
111  void setNormalizeContactCallback(const NormalizeContactCallback &cb);
112  QString normalizeContact(const QString &contactId, DBusError *error);
113 
114  QList<AbstractProtocolInterfacePtr> interfaces() const;
115  AbstractProtocolInterfacePtr interface(const QString & interfaceName) const;
116  bool plugInterface(const AbstractProtocolInterfacePtr &interface);
117 
118 protected:
119  BaseProtocol(const QDBusConnection &dbusConnection, const QString &name);
120 
121  virtual bool registerObject(const QString &busName, const QString &objectPath,
122  DBusError *error);
123 
124 private:
125  friend class BaseConnectionManager;
126  class Adaptee;
127  friend class Adaptee;
128  class Private;
129  friend class Private;
130  Private *mPriv;
131 };
132 
134 {
135  Q_OBJECT
136  Q_DISABLE_COPY(AbstractProtocolInterface)
137 
138 public:
139  AbstractProtocolInterface(const QString &interfaceName);
140  virtual ~AbstractProtocolInterface();
141 
142 private:
143  friend class BaseProtocol;
144 
145  class Private;
146  friend class Private;
147  Private *mPriv;
148 };
149 
151 {
152  Q_OBJECT
153  Q_DISABLE_COPY(BaseProtocolAddressingInterface)
154 
155 public:
156  static BaseProtocolAddressingInterfacePtr create()
157  {
158  return BaseProtocolAddressingInterfacePtr(new BaseProtocolAddressingInterface());
159  }
160  template<typename BaseProtocolAddressingInterfaceSubclass>
162  {
164  new BaseProtocolAddressingInterfaceSubclass());
165  }
166 
168 
169  QVariantMap immutableProperties() const;
170 
171  QStringList addressableVCardFields() const;
172  void setAddressableVCardFields(const QStringList &vcardFields);
173 
174  QStringList addressableUriSchemes() const;
175  void setAddressableUriSchemes(const QStringList &uriSchemes);
176 
178  void setNormalizeVCardAddressCallback(const NormalizeVCardAddressCallback &cb);
179  QString normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress, DBusError *error);
180 
182  void setNormalizeContactUriCallback(const NormalizeContactUriCallback &cb);
183  QString normalizeContactUri(const QString &uri, DBusError *error);
184 
185 protected:
187 
188 private:
189  void createAdaptor();
190 
191  class Adaptee;
192  friend class Adaptee;
193  struct Private;
194  friend struct Private;
195  Private *mPriv;
196 };
197 
199 {
200  Q_OBJECT
201  Q_DISABLE_COPY(BaseProtocolAvatarsInterface)
202 
203 public:
204  static BaseProtocolAvatarsInterfacePtr create()
205  {
206  return BaseProtocolAvatarsInterfacePtr(new BaseProtocolAvatarsInterface());
207  }
208  template<typename BaseProtocolAvatarsInterfaceSubclass>
210  {
212  new BaseProtocolAvatarsInterfaceSubclass());
213  }
214 
215  virtual ~BaseProtocolAvatarsInterface();
216 
217  QVariantMap immutableProperties() const;
218 
219  AvatarSpec avatarDetails() const;
220  void setAvatarDetails(const AvatarSpec &spec);
221 
222 protected:
224 
225 private:
226  void createAdaptor();
227 
228  class Adaptee;
229  friend class Adaptee;
230  struct Private;
231  friend struct Private;
232  Private *mPriv;
233 };
234 
236 {
237  Q_OBJECT
238  Q_DISABLE_COPY(BaseProtocolPresenceInterface)
239 
240 public:
241  static BaseProtocolPresenceInterfacePtr create()
242  {
243  return BaseProtocolPresenceInterfacePtr(new BaseProtocolPresenceInterface());
244  }
245  template<typename BaseProtocolPresenceInterfaceSubclass>
247  {
249  new BaseProtocolPresenceInterfaceSubclass());
250  }
251 
253 
254  QVariantMap immutableProperties() const;
255 
256  PresenceSpecList statuses() const;
257  void setStatuses(const PresenceSpecList &statuses);
258 
259 protected:
261 
262 private:
263  void createAdaptor();
264 
265  class Adaptee;
266  friend class Adaptee;
267  struct Private;
268  friend struct Private;
269  Private *mPriv;
270 };
271 
272 }
273 
274 #endif
static BaseProtocolPtr create(const QDBusConnection &dbusConnection, const QString &name)
Definition: base-protocol.h:63
static SharedPtr< BaseProtocolAddressingInterfaceSubclass > create()
Definition: base-protocol.h:161
Base class for connection manager implementations.
Definition: base-connection-manager.h:41
Base class for D-Bus service interfaces.
Definition: dbus-service.h:73
The AvatarSpec class represents a Telepathy avatar information supported by a protocol.
Definition: avatar.h:51
QList< ProtocolParameter > ProtocolParameterList
Definition: protocol-parameter.h:85
Base class for protocol implementations.
Definition: base-protocol.h:47
static BaseProtocolPresenceInterfacePtr create()
Definition: base-protocol.h:241
Callback2< QString, const QString &, DBusError * > NormalizeContactUriCallback
Definition: base-protocol.h:181
Base class for implementations of Protocol.Interface.Presence.
Definition: base-protocol.h:235
Callback3< QString, const QString &, const QString &, DBusError * > NormalizeVCardAddressCallback
Definition: base-protocol.h:177
Callback2< BaseConnectionPtr, const QVariantMap &, DBusError * > CreateConnectionCallback
Definition: base-protocol.h:102
Callback2< QString, const QVariantMap &, DBusError * > IdentifyAccountCallback
Definition: base-protocol.h:106
Base class for D-Bus services.
Definition: dbus-service.h:46
static SharedPtr< BaseProtocolSubclass > create(const QDBusConnection &dbusConnection, const QString &name)
Definition: base-protocol.h:68
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
static BaseProtocolAvatarsInterfacePtr create()
Definition: base-protocol.h:204
static SharedPtr< BaseProtocolPresenceInterfaceSubclass > create()
Definition: base-protocol.h:246
The PresenceSpecList class represents a list of PresenceSpec.
Definition: presence.h:125
Base class for implementations of Protocol.Interface.Avatars.
Definition: base-protocol.h:198
static SharedPtr< BaseProtocolSubclass > create(const QString &name)
Definition: base-protocol.h:58
static BaseProtocolPtr create(const QString &name)
Definition: base-protocol.h:53
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35
Callback2< QString, const QString &, DBusError * > NormalizeContactCallback
Definition: base-protocol.h:110
The RequestableChannelClassSpecList class represents a list of RequestableChannelClassSpec.
Definition: requestable-channel-class-spec.h:101
static SharedPtr< BaseProtocolAvatarsInterfaceSubclass > create()
Definition: base-protocol.h:209
Base class for implementations of Protocol.Interface.Addressing.
Definition: base-protocol.h:150
static BaseProtocolAddressingInterfacePtr create()
Definition: base-protocol.h:156
Base class for all the Protocol object interface implementations.
Definition: base-protocol.h:133


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00495.html0000644000175100017520000001044712530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::RichPresenceAccessControl Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RichPresenceAccessControl Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint type
 
QDBusVariant detail
 

Detailed Description

Structure type generated from the specification.

An access control mode for extended presence items like geolocation. This type isn't actually used by the SimplePresence interface, but it's included here so it can be referenced by rich presence interfaces such as ConnectionInterfaceLocationInterface .

ConnectionInterfaceLocationInterface uses this for historical reasons, new interfaces will use Access_Control_Type.

Member Data Documentation

uint Tp::RichPresenceAccessControl::type

The type of access control to apply.

QDBusVariant Tp::RichPresenceAccessControl::detail

Any additional information required by the Type. The required type and semantics are defined for each Rich_Presence_Access_Control_Type.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00850_source.html0000644000175100017520000000630512530426257022521 0ustar00kaffeinekaffeine00000000000000 tls-certificate.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
tls-certificate.h
1 
22 #ifndef _TelepathyQt_tls_certificate_h_HEADER_GUARD_
23 #define _TelepathyQt_tls_certificate_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/_gen/cli-tls-certificate.h>
30 
31 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01200.html0000644000175100017520000000443312530426260021121 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketNetmaskIPv4 Member List

This is the complete list of members for Tp::SocketNetmaskIPv4, including all inherited members.

addressTp::SocketNetmaskIPv4
prefixLengthTp::SocketNetmaskIPv4


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00574_source.html0000644000175100017520000004313012530426257022521 0ustar00kaffeinekaffeine00000000000000 base-connection-manager.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
base-connection-manager.h
1 
23 #ifndef _TelepathyQt_base_connection_manager_h_HEADER_GUARD_
24 #define _TelepathyQt_base_connection_manager_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/DBusService>
31 #include <TelepathyQt/Global>
32 #include <TelepathyQt/Types>
33 
34 #include <QDBusConnection>
35 
36 class QString;
37 
38 namespace Tp
39 {
40 
41 class TP_QT_EXPORT BaseConnectionManager : public DBusService
42 {
43  Q_OBJECT
44  Q_DISABLE_COPY(BaseConnectionManager)
45 
46 public:
47  static BaseConnectionManagerPtr create(const QString &name)
48  {
49  return BaseConnectionManagerPtr(new BaseConnectionManager(
50  QDBusConnection::sessionBus(), name));
51  }
52  template<typename BaseConnectionManagerSubclass>
54  {
55  return SharedPtr<BaseConnectionManagerSubclass>(new BaseConnectionManagerSubclass(
56  QDBusConnection::sessionBus(), name));
57  }
58  static BaseConnectionManagerPtr create(const QDBusConnection &dbusConnection,
59  const QString &name)
60  {
61  return BaseConnectionManagerPtr(new BaseConnectionManager(dbusConnection, name));
62  }
63  template<typename BaseConnectionManagerSubclass>
64  static SharedPtr<BaseConnectionManagerSubclass> create(const QDBusConnection &dbusConnection,
65  const QString &name)
66  {
67  return SharedPtr<BaseConnectionManagerSubclass>(new BaseConnectionManagerSubclass(
68  dbusConnection, name));
69  }
70 
71  virtual ~BaseConnectionManager();
72 
73  QString name() const;
74 
75  QVariantMap immutableProperties() const;
76 
77  QList<BaseProtocolPtr> protocols() const;
78  BaseProtocolPtr protocol(const QString &protocolName) const;
79  bool hasProtocol(const QString &protocolName) const;
80  bool addProtocol(const BaseProtocolPtr &protocol);
81 
82  bool registerObject(DBusError *error = NULL);
83 
84  QList<BaseConnectionPtr> connections() const;
85 
86 Q_SIGNALS:
87  void newConnection(const BaseConnectionPtr &connection);
88 
89 protected:
90  BaseConnectionManager(const QDBusConnection &dbusConnection, const QString &name);
91 
92  virtual bool registerObject(const QString &busName, const QString &objectPath,
93  DBusError *error);
94 
95 private Q_SLOTS:
96  TP_QT_NO_EXPORT void removeConnection();
97 
98 private:
99  TP_QT_NO_EXPORT void addConnection(const BaseConnectionPtr &connection);
100 
101  class Adaptee;
102  friend class Adaptee;
103  class Private;
104  friend class Private;
105  Private *mPriv;
106 };
107 
108 }
109 
110 #endif
static SharedPtr< BaseConnectionManagerSubclass > create(const QString &name)
Definition: base-connection-manager.h:53
Base class for connection manager implementations.
Definition: base-connection-manager.h:41
static BaseConnectionManagerPtr create(const QDBusConnection &dbusConnection, const QString &name)
Definition: base-connection-manager.h:58
static SharedPtr< BaseConnectionManagerSubclass > create(const QDBusConnection &dbusConnection, const QString &name)
Definition: base-connection-manager.h:64
static BaseConnectionManagerPtr create(const QString &name)
Definition: base-connection-manager.h:47
Base class for D-Bus services.
Definition: dbus-service.h:46
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01014.html0000644000175100017520000001217612530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusProxyFactory Member List

This is the complete list of members for Tp::DBusProxyFactory, including all inherited members.

cachedProxy(const QString &busName, const QString &objectPath) const Tp::DBusProxyFactoryprotected
dbusConnection() const Tp::DBusProxyFactory
DBusProxyFactory(const QDBusConnection &bus)Tp::DBusProxyFactoryprotected
featuresFor(const DBusProxyPtr &proxy) const =0Tp::DBusProxyFactoryprotectedpure virtual
finalBusNameFrom(const QString &uniqueOrWellKnown) const =0Tp::DBusProxyFactoryprotectedpure virtual
initialPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
nowHaveProxy(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotected
readyPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
RefCounted()Tp::RefCountedinline
~DBusProxyFactory()Tp::DBusProxyFactoryvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00869.html0000644000175100017520000004577012530426260021156 0ustar00kaffeinekaffeine00000000000000 Tp::Service Namespace Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service Namespace Reference

Classes

class  CallContentAdaptor
 
class  CallContentInterfaceDTMFAdaptor
 
class  CallInterfaceMuteAdaptor
 
class  ChannelAdaptor
 
class  ChannelInterfaceAnonymityAdaptor
 
class  ChannelInterfaceCallStateAdaptor
 
class  ChannelInterfaceCaptchaAuthenticationAdaptor
 
class  ChannelInterfaceChatStateAdaptor
 
class  ChannelInterfaceConferenceAdaptor
 
class  ChannelInterfaceDTMFAdaptor
 
class  ChannelInterfaceDestroyableAdaptor
 
class  ChannelInterfaceFileTransferMetadataAdaptor
 
class  ChannelInterfaceGroupAdaptor
 
class  ChannelInterfaceHoldAdaptor
 
class  ChannelInterfaceMediaSignallingAdaptor
 
class  ChannelInterfaceMergeableConferenceAdaptor
 
class  ChannelInterfaceMessagesAdaptor
 
class  ChannelInterfacePasswordAdaptor
 
class  ChannelInterfaceRoomAdaptor
 
class  ChannelInterfaceRoomConfigAdaptor
 
class  ChannelInterfaceSASLAuthenticationAdaptor
 
class  ChannelInterfaceSMSAdaptor
 
class  ChannelInterfaceSecurableAdaptor
 
class  ChannelInterfaceServicePointAdaptor
 
class  ChannelInterfaceSplittableAdaptor
 
class  ChannelInterfaceSubjectAdaptor
 
class  ChannelTypeCallAdaptor
 
class  ChannelTypeContactSearchAdaptor
 
class  ChannelTypeDBusTubeAdaptor
 
class  ChannelTypeFileTransferAdaptor
 
class  ChannelTypeRoomListAdaptor
 
class  ChannelTypeServerAuthenticationAdaptor
 
class  ChannelTypeServerTLSConnectionAdaptor
 
class  ChannelTypeStreamTubeAdaptor
 
class  ChannelTypeStreamedMediaAdaptor
 
class  ChannelTypeTextAdaptor
 
class  ConnectionManagerAdaptor
 
class  ProtocolAdaptor
 
class  ProtocolInterfaceAddressingAdaptor
 
class  ProtocolInterfaceAvatarsAdaptor
 
class  ProtocolInterfacePresenceAdaptor
 
class  ConnectionAdaptor
 
class  ConnectionInterfaceAddressingAdaptor
 
class  ConnectionInterfaceAliasingAdaptor
 
class  ConnectionInterfaceAnonymityAdaptor
 
class  ConnectionInterfaceAvatarsAdaptor
 
class  ConnectionInterfaceBalanceAdaptor
 
class  ConnectionInterfaceCellularAdaptor
 
class  ConnectionInterfaceClientTypesAdaptor
 
class  ConnectionInterfaceContactBlockingAdaptor
 
class  ConnectionInterfaceContactCapabilitiesAdaptor
 
class  ConnectionInterfaceContactGroupsAdaptor
 
class  ConnectionInterfaceContactInfoAdaptor
 
class  ConnectionInterfaceContactListAdaptor
 
class  ConnectionInterfaceContactsAdaptor
 
class  ConnectionInterfaceLocationAdaptor
 
class  ConnectionInterfaceMailNotificationAdaptor
 
class  ConnectionInterfacePowerSavingAdaptor
 
class  ConnectionInterfaceRequestsAdaptor
 
class  ConnectionInterfaceServicePointAdaptor
 
class  ConnectionInterfaceSimplePresenceAdaptor
 


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00570_source.html0000644000175100017520000011044412530426257022520 0ustar00kaffeinekaffeine00000000000000 base-call.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
base-call.h
1 
23 #ifndef _TelepathyQt_base_call_h_HEADER_GUARD_
24 #define _TelepathyQt_base_call_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 
31 #include <TelepathyQt/DBusService>
32 #include <TelepathyQt/Global>
33 #include <TelepathyQt/Types>
34 #include <TelepathyQt/Callbacks>
35 #include <TelepathyQt/Constants>
36 #include <TelepathyQt/BaseChannel>
37 
38 #include <QDBusConnection>
39 
40 class QString;
41 
42 namespace Tp
43 {
44 
46 {
47  Q_OBJECT
48  Q_DISABLE_COPY(AbstractCallContentInterface)
49 
50 public:
51  AbstractCallContentInterface(const QString &interfaceName);
53 
54 private:
55  friend class BaseCallContent;
56 
57  class Private;
58  friend class Private;
59  Private *mPriv;
60 };
61 
62 class TP_QT_EXPORT BaseCallContent : public DBusService
63 {
64  Q_OBJECT
65  Q_DISABLE_COPY(BaseCallContent)
66 
67 public:
68  static BaseCallContentPtr create(const QDBusConnection &dbusConnection,
69  BaseChannel* channel,
70  const QString &name,
71  const Tp::MediaStreamType &type,
72  const Tp::MediaStreamDirection &direction) {
73  return BaseCallContentPtr(new BaseCallContent(dbusConnection, channel, name, type, direction));
74  }
75 
76  virtual ~BaseCallContent();
77  QVariantMap immutableProperties() const;
78  bool registerObject(DBusError *error = NULL);
79  virtual QString uniqueName() const;
80 
81  QList<AbstractCallContentInterfacePtr> interfaces() const;
82  AbstractCallContentInterfacePtr interface(const QString &interfaceName) const;
83  bool plugInterface(const AbstractCallContentInterfacePtr &interface);
84 
85  QString name() const;
86  Tp::MediaStreamType type() const;
87  Tp::CallContentDisposition disposition() const;
88  Tp::ObjectPathList streams() const;
89 protected:
90  BaseCallContent(const QDBusConnection &dbusConnection,
91  BaseChannel* channel,
92  const QString &name,
93  const Tp::MediaStreamType &type,
94  const Tp::MediaStreamDirection &direction);
95 
96  virtual bool registerObject(const QString &busName, const QString &objectPath,
97  DBusError *error);
98  void remove();
99 
100 private:
101  class Adaptee;
102  friend class Adaptee;
103  struct Private;
104  friend struct Private;
105  Private *mPriv;
106 };
107 
109 {
110  Q_OBJECT
111  Q_DISABLE_COPY(BaseCallMuteInterface)
112 
113 public:
114  static BaseCallMuteInterfacePtr create() {
115  return BaseCallMuteInterfacePtr(new BaseCallMuteInterface());
116  }
117  template<typename BaseCallMuteInterfaceSubclass>
120  new BaseCallMuteInterfaceSubclass());
121  }
122  virtual ~BaseCallMuteInterface();
123 
124  QVariantMap immutableProperties() const;
125 
126  Tp::LocalMuteState localMuteState() const;
127  void setMuteState(const Tp::LocalMuteState &state);
128 
130  void setSetMuteStateCallback(const SetMuteStateCallback &cb);
131 Q_SIGNALS:
132  void muteStateChanged(const Tp::LocalMuteState &state);
133 private:
135  void createAdaptor();
136 
137  class Adaptee;
138  friend class Adaptee;
139  struct Private;
140  friend struct Private;
141  Private *mPriv;
142 };
143 
145 {
146  Q_OBJECT
147  Q_DISABLE_COPY(BaseCallContentDTMFInterface)
148 
149 public:
150  static BaseCallContentDTMFInterfacePtr create() {
151  return BaseCallContentDTMFInterfacePtr(new BaseCallContentDTMFInterface());
152  }
153  template<typename BaseCallContentDTMFInterfaceSubclass>
156  new BaseCallContentDTMFInterfaceSubclass());
157  }
158  virtual ~BaseCallContentDTMFInterface();
159 
160  QVariantMap immutableProperties() const;
161 
162  bool currentlySendingTones() const;
163  void setCurrentlySendingTones(bool sendingTones);
164 
165  QString deferredTones() const;
166  void setDeferredTones(const QString &deferredTones);
167 
168 
170  void setStartToneCallback(const StartToneCallback &cb);
172  void setStopToneCallback(const StopToneCallback &cb);
174  void setMultipleTonesCallback(const MultipleTonesCallback &cb);
175 Q_SIGNALS:
176 
177 private:
179  void createAdaptor();
180 
181  class Adaptee;
182  friend class Adaptee;
183  struct Private;
184  friend struct Private;
185  Private *mPriv;
186 };
187 
188 
189 }
190 #endif
MediaStreamType
Definition: build/TelepathyQt/_gen/constants.h:2716
Base class for D-Bus service interfaces.
Definition: dbus-service.h:73
static BaseCallContentDTMFInterfacePtr create()
Definition: base-call.h:150
Base class for all the Channel object interface implementations.
Definition: base-channel.h:95
static BaseCallContentPtr create(const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction)
Definition: base-call.h:68
Base class for implementations of Call.Interface.Mute.
Definition: base-call.h:108
Callback2< void, const QString &, DBusError * > MultipleTonesCallback
Definition: base-call.h:173
LocalMuteState
Definition: build/TelepathyQt/_gen/constants.h:4626
Base class for D-Bus services.
Definition: dbus-service.h:46
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
static SharedPtr< BaseCallMuteInterfaceSubclass > create()
Definition: base-call.h:118
Base class for all the CallContent object interface implementations.
Definition: base-call.h:45
Callback1< void, DBusError * > StopToneCallback
Definition: base-call.h:171
Base class for implementations of Call.Content.Interface.DTMF.
Definition: base-call.h:144
Definition: build/TelepathyQt/_gen/types.h:81
Small container class, containing a D-Bus error.
Definition: dbus-error.h:35
MediaStreamDirection
Definition: build/TelepathyQt/_gen/constants.h:2777
static BaseCallMuteInterfacePtr create()
Definition: base-call.h:114
Callback2< void, const Tp::LocalMuteState &, DBusError * > SetMuteStateCallback
Definition: base-call.h:129
Definition: base-call.h:62
CallContentDisposition
Definition: build/TelepathyQt/_gen/constants.h:4241
Base class for channel implementations.
Definition: base-channel.h:42
static SharedPtr< BaseCallContentDTMFInterfaceSubclass > create()
Definition: base-call.h:154
Callback2< void, uchar, DBusError * > StartToneCallback
Definition: base-call.h:169


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00368.html0000644000175100017520000001740712530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::HandledChannelNotifier Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The HandledChannelNotifier class can be used to keep track of channel() being re-requested. More...

#include <TelepathyQt/HandledChannelNotifier>

Inherits QObject.

Signals

void handledAgain (const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints)
 

Public Member Functions

 ~HandledChannelNotifier ()
 
ChannelPtr channel () const
 

Protected Member Functions

void connectNotify (const QMetaMethod &signal)
 

Detailed Description

The HandledChannelNotifier class can be used to keep track of channel() being re-requested.

Instances of this class cannot be constructed directly; the only way to get one is trough PendingChannel.

Constructor & Destructor Documentation

Tp::HandledChannelNotifier::~HandledChannelNotifier ( )

Member Function Documentation

ChannelPtr Tp::HandledChannelNotifier::channel ( ) const
void Tp::HandledChannelNotifier::handledAgain ( const QDateTime &  userActionTime,
const Tp::ChannelRequestHints requestHints 
)
signal
void Tp::HandledChannelNotifier::connectNotify ( const QMetaMethod &  signal)
protected


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01329.html0000644000175100017520000001252712530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::CallContentInterfaceDTMFAdaptor Member List

This is the complete list of members for Tp::Service::CallContentInterfaceDTMFAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
CurrentlySendingTones() const Tp::Service::CallContentInterfaceDTMFAdaptor
dbusConnection() const Tp::AbstractAdaptor
DeferredTones() const Tp::Service::CallContentInterfaceDTMFAdaptor
MultipleTones(const QString &tones, const QDBusMessage &dbusMessage)Tp::Service::CallContentInterfaceDTMFAdaptorslot
SendingTones(const QString &tones)Tp::Service::CallContentInterfaceDTMFAdaptorsignal
StartTone(uchar event, const QDBusMessage &dbusMessage)Tp::Service::CallContentInterfaceDTMFAdaptorslot
StoppedTones(bool cancelled)Tp::Service::CallContentInterfaceDTMFAdaptorsignal
StopTone(const QDBusMessage &dbusMessage)Tp::Service::CallContentInterfaceDTMFAdaptorslot
TonesDeferred(const QString &tones)Tp::Service::CallContentInterfaceDTMFAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00112.html0000644000175100017520000005520512530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelSMSInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.SMS. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2< void, const
Tp::MessagePartList
&, DBusError * > 
GetSMSLengthCallback
 

Signals

void smsChannelChanged (bool smsChannel)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~BaseChannelSMSInterface ()
 
QVariantMap immutableProperties () const
 
void setGetSMSLengthCallback (const GetSMSLengthCallback &cb)
 
bool flash () const
 
bool smsChannel () const
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelSMSInterfacePtr create (bool flash, bool smsChannel)
 
template<typename BaseChannelSMSInterfaceSubclass >
static SharedPtr
< BaseChannelSMSInterfaceSubclass > 
create (bool flash, bool smsChannel)
 

Additional Inherited Members

- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.SMS.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelSMSInterface::~BaseChannelSMSInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelSMSInterfacePtr Tp::BaseChannelSMSInterface::create ( bool  flash,
bool  smsChannel 
)
inlinestatic
template<typename BaseChannelSMSInterfaceSubclass >
static SharedPtr<BaseChannelSMSInterfaceSubclass> Tp::BaseChannelSMSInterface::create ( bool  flash,
bool  smsChannel 
)
inlinestatic
QVariantMap Tp::BaseChannelSMSInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseChannelSMSInterface::setGetSMSLengthCallback ( const GetSMSLengthCallback cb)
bool Tp::BaseChannelSMSInterface::flash ( ) const
bool Tp::BaseChannelSMSInterface::smsChannel ( ) const
void Tp::BaseChannelSMSInterface::smsChannelChanged ( bool  smsChannel)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01083.html0000644000175100017520000002034212530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Presence Member List

This is the complete list of members for Tp::Presence, including all inherited members.

available(const QString &statusMessage=QString())Tp::Presencestatic
away(const QString &statusMessage=QString())Tp::Presencestatic
barePresence() const Tp::Presence
brb(const QString &statusMessage=QString())Tp::Presencestatic
busy(const QString &statusMessage=QString())Tp::Presencestatic
chat(const QString &statusMessage=QString())Tp::Presencestatic
dnd(const QString &statusMessage=QString())Tp::Presencestatic
hidden(const QString &statusMessage=QString())Tp::Presencestatic
isValid() const Tp::Presenceinline
offline(const QString &statusMessage=QString())Tp::Presencestatic
operator!=(const Presence &other) const Tp::Presence
operator=(const Presence &other)Tp::Presence
operator==(const Presence &other) const Tp::Presence
Presence()Tp::Presence
Presence(const SimplePresence &sp)Tp::Presence
Presence(ConnectionPresenceType type, const QString &status, const QString &statusMessage)Tp::Presence
Presence(const Presence &other)Tp::Presence
setStatus(const SimplePresence &value)Tp::Presence
setStatus(ConnectionPresenceType type, const QString &status, const QString &statusMessage)Tp::Presence
setStatusMessage(const QString &statusMessage)Tp::Presence
status() const Tp::Presence
statusMessage() const Tp::Presence
type() const Tp::Presence
xa(const QString &statusMessage=QString())Tp::Presencestatic
~Presence()Tp::Presence


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00928.html0000644000175100017520000001503612530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractChannelInterface Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00427.html0000644000175100017520000006365112530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::Client::DBus::PeerInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/DBus>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Ping (int timeout=-1)
 
QDBusPendingReply< QString > GetMachineId (int timeout=-1)
 

Public Member Functions

 PeerInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 PeerInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 PeerInterface (Tp::DBusProxy *proxy)
 
 PeerInterface (const Tp::AbstractInterface &mainInterface)
 
 PeerInterface (const Tp::AbstractInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.DBus.Peer".

Constructor & Destructor Documentation

Tp::Client::DBus::PeerInterface::PeerInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a PeerInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::PeerInterface::PeerInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a PeerInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::DBus::PeerInterface::PeerInterface ( Tp::DBusProxy proxy)

Creates a PeerInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::DBus::PeerInterface::PeerInterface ( const Tp::AbstractInterface mainInterface)
explicit

Creates a PeerInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::DBus::PeerInterface::PeerInterface ( const Tp::AbstractInterface mainInterface,
QObject *  parent 
)

Creates a PeerInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::DBus::PeerInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.DBus.Peer", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::DBus::PeerInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::DBus::PeerInterface::Ping ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Ping on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QString> Tp::Client::DBus::PeerInterface::GetMachineId ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetMachineId on the remote object.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::DBus::PeerInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00181.html0000644000175100017520000013144612530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelDispatchOperationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/ChannelDispatchOperation>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply HandleWith (const QString &handler, int timeout=-1)
 
QDBusPendingReply Claim (int timeout=-1)
 
QDBusPendingReply HandleWithTime (const QString &handler, qlonglong userActionTime, int timeout=-1)
 

Signals

void ChannelLost (const QDBusObjectPath &channel, const QString &error, const QString &message)
 
void Finished ()
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelDispatchOperationInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelDispatchOperationInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelDispatchOperationInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyConnection () const
 
Tp::PendingVariantrequestPropertyAccount () const
 
Tp::PendingVariantrequestPropertyChannels () const
 
Tp::PendingVariantrequestPropertyPossibleHandlers () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ChannelDispatchOperationInterface::ChannelDispatchOperationInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelDispatchOperationInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelDispatchOperationInterface::ChannelDispatchOperationInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelDispatchOperationInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelDispatchOperationInterface::ChannelDispatchOperationInterface ( Tp::DBusProxy proxy)

Creates a ChannelDispatchOperationInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ChannelDispatchOperationInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.ChannelDispatchOperation", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelDispatchOperationInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

A list of the extra interfaces provided by this channel dispatch operation. This property cannot change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelDispatchOperationInterface::requestPropertyConnection ( ) const
inline

Asynchronous getter for the remote object property Connection of type QDBusObjectPath.

The Connection with which the Channels are associated. The well-known bus name to use can be derived from this object path by removing the leading '/' and replacing all subsequent '/' by '.'. This property cannot change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelDispatchOperationInterface::requestPropertyAccount ( ) const
inline

Asynchronous getter for the remote object property Account of type QDBusObjectPath.

The Account with which the Connection and Channels are associated. This property cannot change.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelDispatchOperationInterface::requestPropertyChannels ( ) const
inline

Asynchronous getter for the remote object property Channels of type Tp::ChannelDetailsList.

The Channels to be dispatched, and their properties. Change notification is via the ChannelLost signal (channels cannot be added to this property, only removed).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelDispatchOperationInterface::requestPropertyPossibleHandlers ( ) const
inline

Asynchronous getter for the remote object property PossibleHandlers of type QStringList.

The well known bus names (starting with org.freedesktop.Telepathy.Client.) of the possible Handlers for these channels. The channel dispatcher MUST place the most preferred handlers first, according to some reasonable heuristic. As a result, approvers SHOULD use the first handler by default. The heuristic used to prioritize handlers SHOULD give a higher priority to handlers that are already running. If, for instance, Empathy and Kopete have similar functionality, and Empathy is running, we should prefer to send channels to it rather than launching Kopete via service activation.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelDispatchOperationInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelDispatchOperationInterface::HandleWith ( const QString &  handler,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method HandleWith on the remote object.

Called by an approver to accept a channel bundle and request that the given handler be used to handle it.

If successful, this method will cause the ChannelDispatchOperation object to disappear, emitting Finished() .

However, this method may fail because the dispatch has already been completed and the object has already gone. If this occurs, it indicates that another approver has asked for the bundle to be handled by a particular handler. The approver MUST NOT attempt to interact with the channels further in this case, unless it is separately invoked as the handler.

Approvers which are also channel handlers SHOULD use Claim() instead of HandleWith to request that they can handle a channel bundle themselves.

(FIXME: list some possible errors)

If the channel handler raises an error from ClientHandlerInterface::HandleChannels() , this method MAY respond by raising that same error, even if it is not specifically documented here.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handler

The well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the channel handler that should handle the channel, or the empty string if the client has no preferred channel handler.

timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelDispatchOperationInterface::Claim ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Claim on the remote object.

Called by an approver to claim channels for handling internally. If this method is called successfully, the process calling this method becomes the handler for the channel, but does not have the ClientHandlerInterface::HandleChannels() method called on it.

Clients that call Claim on channels but do not immediately close them SHOULD implement the Handler interface and its ClientHandlerInterface::HandledChannels property.

Approvers wishing to reject channels MUST call this method to claim ownership of them, and MUST NOT call ChannelInterface::Close() on the channels unless/until this method returns successfully.

The channel dispatcher can't know how best to close arbitrary channel types, so it leaves it up to the approver to do so. For instance, for Text channels it is necessary to acknowledge any messages that have already been displayed to the user first - ideally, the approver would display and then acknowledge the messages - or to call ChannelInterfaceDestroyableInterface::Destroy() if the destructive behaviour of that method is desired.

Similarly, an Approver for StreamedMedia channels can close the channel with a reason (e.g. "busy") if desired. The channel dispatcher, which is designed to have no specific knowledge of particular channel types, can't do that.

If successful, this method will cause the ChannelDispatchOperation object to disappear, emitting Finished() , in the same way as for HandleWith() .

This method may fail because the dispatch operation has already been completed. Again, see HandleWith for more details. The approver MUST NOT attempt to interact with the channels further in this case.

(FIXME: list some other possible errors)

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelDispatchOperationInterface::HandleWithTime ( const QString &  handler,
qlonglong  userActionTime,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method HandleWithTime on the remote object.

A variant of HandleWith() allowing the approver to pass an user action time. This timestamp will be passed to the Handler when ClientHandlerInterface::HandleChannels() is called.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
handler

The well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the channel handler that should handle the channel, or the empty string if the client has no preferred channel handler.

userActionTime

The time at which user action occurred.

timeoutThe timeout in milliseconds.
void Tp::Client::ChannelDispatchOperationInterface::ChannelLost ( const QDBusObjectPath &  channel,
const QString &  error,
const QString &  message 
)
signal

Represents the signal ChannelLost on the remote object.

A channel has closed before it could be claimed or handled. If this is emitted for the last remaining channel in a channel dispatch operation, it MUST immediately be followed by Finished() .

This signal MUST NOT be emitted until all Approvers that were invoked have returned (successfully or with an error) from their ClientApproverInterface::AddDispatchOperation() method.

This means that Approvers can connect to the ChannelLost signal in a race-free way. Non-approver processes that discover a channel dispatch operation in some way (such as observers) will have to follow the usual "connect to signals then recover state" model - first connect to ChannelLost and Finished() , then download Channels (and on error, perhaps assume that the operation has already Finished).

Parameters
channel
The Channel that closed.
error

The name of a D-Bus error indicating why the channel closed. If no better reason can be found, org.freedesktop.Telepathy.Error.NotAvailable MAY be used as a fallback; this means that this error SHOULD NOT be given any more specific meaning.

message
A string associated with the D-Bus error.
void Tp::Client::ChannelDispatchOperationInterface::Finished ( )
signal

Represents the signal Finished on the remote object.

Emitted when this dispatch operation finishes. The dispatch operation is no longer present and further methods must not be called on it.

Approvers that have a user interface SHOULD stop notifying the user about the channels in response to this signal; they MAY assume that on errors, they would have received ChannelLost() first.

Its object path SHOULD NOT be reused for a subsequent dispatch operation; the ChannelDispatcher MUST choose object paths in a way that avoids immediate re-use.

Otherwise, clients might accidentally call HandleWith() or Claim() on a new dispatch operation instead of the one they intended to handle.

This signal MUST NOT be emitted until all Approvers that were invoked have returned (successfully or with an error) from their ClientApproverInterface::AddDispatchOperation() method.

This means that Approvers can connect to the ChannelLost signal in a race-free way. Non-approver processes that discover a channel dispatch operation in some way (such as observers) will have to follow the usual "connect to signals then recover state" model - first connect to ChannelLost() and Finished, then download Channels (and on error, perhaps assume that the operation has already Finished).

void Tp::Client::ChannelDispatchOperationInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01142.html0000644000175100017520000000526612530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelClass Member List

This is the complete list of members for Tp::ChannelClass, including all inherited members.

ChannelClass()Tp::ChannelClassinline
ChannelClass(const QMap< QString, QDBusVariant > &a)Tp::ChannelClassinline
operator=(const QMap< QString, QDBusVariant > &a)Tp::ChannelClassinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00563_source.html0000644000175100017520000030056612530426257022530 0ustar00kaffeinekaffeine00000000000000 account.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account.h
1 
23 #ifndef _TelepathyQt_account_h_HEADER_GUARD_
24 #define _TelepathyQt_account_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/_gen/cli-account.h>
31 
32 #include <TelepathyQt/ChannelRequestHints>
33 #include <TelepathyQt/Connection>
34 #include <TelepathyQt/ConnectionCapabilities>
35 #include <TelepathyQt/ConnectionFactory>
36 #include <TelepathyQt/ContactFactory>
37 #include <TelepathyQt/ChannelFactory>
38 #include <TelepathyQt/ChannelDispatcherInterface>
39 #include <TelepathyQt/DBus>
40 #include <TelepathyQt/DBusProxy>
41 #include <TelepathyQt/FileTransferChannelCreationProperties>
42 #include <TelepathyQt/OptionalInterfaceFactory>
43 #include <TelepathyQt/Presence>
44 #include <TelepathyQt/PresenceSpec>
45 #include <TelepathyQt/ProtocolInfo>
46 #include <TelepathyQt/ReadinessHelper>
47 #include <TelepathyQt/Types>
48 #include <TelepathyQt/Constants>
49 #include <TelepathyQt/SharedPtr>
50 
51 #include <QSet>
52 #include <QString>
53 #include <QStringList>
54 #include <QVariantMap>
55 
56 namespace Tp
57 {
58 
59 class Account;
60 class Connection;
61 class PendingChannel;
62 class PendingChannelRequest;
63 class PendingConnection;
64 class PendingOperation;
65 class PendingReady;
66 class PendingStringList;
67 
68 class TP_QT_EXPORT Account : public StatelessDBusProxy,
69  public OptionalInterfaceFactory<Account>
70 {
71  Q_OBJECT
72  Q_DISABLE_COPY(Account)
73  Q_PROPERTY(bool valid READ isValidAccount NOTIFY validityChanged)
74  Q_PROPERTY(bool enabled READ isEnabled NOTIFY stateChanged)
75  Q_PROPERTY(QString cmName READ cmName)
76  Q_PROPERTY(QString protocolName READ protocolName)
77  Q_PROPERTY(QString serviceName READ serviceName NOTIFY serviceNameChanged)
78  Q_PROPERTY(ProfilePtr profile READ profile NOTIFY profileChanged)
79  Q_PROPERTY(QString displayName READ displayName NOTIFY displayNameChanged)
80  Q_PROPERTY(QString iconName READ iconName NOTIFY iconNameChanged)
81  Q_PROPERTY(QString nickname READ nickname NOTIFY nicknameChanged)
82  Q_PROPERTY(AvatarSpec avatarRequirements READ avatarRequirements)
83  Q_PROPERTY(Avatar avatar READ avatar NOTIFY avatarChanged)
84  Q_PROPERTY(QVariantMap parameters READ parameters NOTIFY parametersChanged)
85  Q_PROPERTY(ProtocolInfo protocolInfo READ protocolInfo)
86  Q_PROPERTY(ConnectionCapabilities capabilities READ capabilities NOTIFY capabilitiesChanged)
87  Q_PROPERTY(bool hasBeenOnline READ hasBeenOnline)
88  Q_PROPERTY(bool connectsAutomatically READ connectsAutomatically NOTIFY connectsAutomaticallyPropertyChanged)
89  Q_PROPERTY(ConnectionStatus connectionStatus READ connectionStatus NOTIFY connectionStatusChanged)
90  Q_PROPERTY(ConnectionStatusReason connectionStatusReason READ connectionStatusReason)
91  Q_PROPERTY(QString connectionError READ connectionError)
92  Q_PROPERTY(Tp::Connection::ErrorDetails connectionErrorDetails READ connectionErrorDetails)
93  Q_PROPERTY(ConnectionPtr connection READ connection NOTIFY connectionChanged)
94  Q_PROPERTY(bool changingPresence READ isChangingPresence NOTIFY changingPresence)
95  Q_PROPERTY(Presence automaticPresence READ automaticPresence NOTIFY automaticPresenceChanged)
96  Q_PROPERTY(Presence currentPresence READ currentPresence NOTIFY currentPresenceChanged)
97  Q_PROPERTY(Presence requestedPresence READ requestedPresence NOTIFY requestedPresenceChanged)
98  Q_PROPERTY(bool online READ isOnline NOTIFY onlinenessChanged)
99  Q_PROPERTY(QString uniqueIdentifier READ uniqueIdentifier)
100  Q_PROPERTY(QString normalizedName READ normalizedName NOTIFY normalizedNameChanged)
101 
102 public:
103  static const Feature FeatureCore;
104  static const Feature FeatureAvatar;
105  static const Feature FeatureProtocolInfo;
106  static const Feature FeatureCapabilities;
107  static const Feature FeatureProfile;
108 
109  static AccountPtr create(const QString &busName, const QString &objectPath,
110  const ConnectionFactoryConstPtr &connectionFactory =
111  ConnectionFactory::create(QDBusConnection::sessionBus()),
112  const ChannelFactoryConstPtr &channelFactory =
113  ChannelFactory::create(QDBusConnection::sessionBus()),
114  const ContactFactoryConstPtr &contactFactory =
115  ContactFactory::create());
116  static AccountPtr create(const QDBusConnection &bus,
117  const QString &busName, const QString &objectPath,
118  const ConnectionFactoryConstPtr &connectionFactory,
119  const ChannelFactoryConstPtr &channelFactory,
120  const ContactFactoryConstPtr &contactFactory =
121  ContactFactory::create());
122  virtual ~Account();
123 
124  ConnectionFactoryConstPtr connectionFactory() const;
125  ChannelFactoryConstPtr channelFactory() const;
126  ContactFactoryConstPtr contactFactory() const;
127 
128  bool isValidAccount() const;
129 
130  bool isEnabled() const;
131  PendingOperation *setEnabled(bool value);
132 
133  QString cmName() const;
134 
135  QString protocolName() const;
136 
137  QString serviceName() const;
138  PendingOperation *setServiceName(const QString &value);
139 
140  ProfilePtr profile() const;
141 
142  QString displayName() const;
143  PendingOperation *setDisplayName(const QString &value);
144 
145  QString iconName() const;
146  PendingOperation *setIconName(const QString &value);
147 
148  QString nickname() const;
149  PendingOperation *setNickname(const QString &value);
150 
151  AvatarSpec avatarRequirements() const;
152  // TODO: We probably want to expose the avatar file name once we have the avatar token and MC
153  // starts sharing the cache used by tp-qt and tp-glib and use Tp::AvatarData to represent
154  // it as used in Tp::Contact
155  const Avatar &avatar() const;
156  PendingOperation *setAvatar(const Avatar &avatar);
157 
158  QVariantMap parameters() const;
159  PendingStringList *updateParameters(const QVariantMap &set,
160  const QStringList &unset);
161 
162  ProtocolInfo protocolInfo() const;
163 
164  ConnectionCapabilities capabilities() const;
165 
166  bool connectsAutomatically() const;
167  PendingOperation *setConnectsAutomatically(bool value);
168 
169  bool hasBeenOnline() const;
170 
171  ConnectionStatus connectionStatus() const;
172  ConnectionStatusReason connectionStatusReason() const;
173  QString connectionError() const;
174  Connection::ErrorDetails connectionErrorDetails() const;
175  ConnectionPtr connection() const;
176 
177  bool isChangingPresence() const;
178 
179  PresenceSpecList allowedPresenceStatuses(bool includeAllStatuses = false) const;
180  uint maxPresenceStatusMessageLength() const;
181 
182  // TODO: Add overload methods to set presence from a Profile::Presence
183  // TODO: Add usablePresences() that would return a list of presences that could be set on the
184  // account
185  Presence automaticPresence() const;
186  PendingOperation *setAutomaticPresence(const Presence &presence);
187 
188  Presence currentPresence() const;
189 
190  Presence requestedPresence() const;
191  PendingOperation *setRequestedPresence(const Presence &presence);
192 
193  bool isOnline() const;
194 
195  QString uniqueIdentifier() const;
196 
197  QString normalizedName() const;
198 
199  PendingOperation *reconnect();
200 
201  PendingOperation *remove();
202 
203  bool supportsRequestHints() const;
204  bool requestsSucceedWithChannel() const;
205 
206  PendingChannelRequest *ensureTextChat(
207  const QString &contactIdentifier,
208  const QDateTime &userActionTime = QDateTime::currentDateTime(),
209  const QString &preferredHandler = QString(),
210  const ChannelRequestHints &hints = ChannelRequestHints());
211  PendingChannelRequest *ensureTextChat(
212  const ContactPtr &contact,
213  const QDateTime &userActionTime = QDateTime::currentDateTime(),
214  const QString &preferredHandler = QString(),
215  const ChannelRequestHints &hints = ChannelRequestHints());
216 
217  PendingChannelRequest *ensureTextChatroom(
218  const QString &roomName,
219  const QDateTime &userActionTime = QDateTime::currentDateTime(),
220  const QString &preferredHandler = QString(),
221  const ChannelRequestHints &hints = ChannelRequestHints());
222 
223  PendingChannelRequest *ensureAudioCall(
224  const QString &contactIdentifier,
225  const QString &initialAudioContentName = QString(),
226  const QDateTime &userActionTime = QDateTime::currentDateTime(),
227  const QString &preferredHandler = QString(),
228  const ChannelRequestHints &hints = ChannelRequestHints());
229  PendingChannelRequest *ensureAudioCall(
230  const ContactPtr &contact,
231  const QString &initialAudioContentName = QString(),
232  const QDateTime &userActionTime = QDateTime::currentDateTime(),
233  const QString &preferredHandler = QString(),
234  const ChannelRequestHints &hints = ChannelRequestHints());
235  PendingChannelRequest *ensureVideoCall(
236  const QString &contactIdentifier,
237  const QString &initialVideoContentName = QString(),
238  const QDateTime &userActionTime = QDateTime::currentDateTime(),
239  const QString &preferredHandler = QString(),
240  const ChannelRequestHints &hints = ChannelRequestHints());
241  PendingChannelRequest *ensureVideoCall(
242  const ContactPtr &contact,
243  const QString &initialVideoContentName = QString(),
244  const QDateTime &userActionTime = QDateTime::currentDateTime(),
245  const QString &preferredHandler = QString(),
246  const ChannelRequestHints &hints = ChannelRequestHints());
247  PendingChannelRequest *ensureAudioVideoCall(
248  const QString &contactIdentifier,
249  const QString &initialAudioContentName = QString(),
250  const QString &initialVideoContentName = QString(),
251  const QDateTime &userActionTime = QDateTime::currentDateTime(),
252  const QString &preferredHandler = QString(),
253  const ChannelRequestHints &hints = ChannelRequestHints());
254  PendingChannelRequest *ensureAudioVideoCall(
255  const ContactPtr &contact,
256  const QString &initialAudioContentName = QString(),
257  const QString &initialVideoContentName = QString(),
258  const QDateTime &userActionTime = QDateTime::currentDateTime(),
259  const QString &preferredHandler = QString(),
260  const ChannelRequestHints &hints = ChannelRequestHints());
261 
262  TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaCall(
263  const QString &contactIdentifier,
264  const QDateTime &userActionTime = QDateTime::currentDateTime(),
265  const QString &preferredHandler = QString(),
266  const ChannelRequestHints &hints = ChannelRequestHints());
267  TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaCall(
268  const ContactPtr &contact,
269  const QDateTime &userActionTime = QDateTime::currentDateTime(),
270  const QString &preferredHandler = QString(),
271  const ChannelRequestHints &hints = ChannelRequestHints());
272  TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaAudioCall(
273  const QString &contactIdentifier,
274  const QDateTime &userActionTime = QDateTime::currentDateTime(),
275  const QString &preferredHandler = QString(),
276  const ChannelRequestHints &hints = ChannelRequestHints());
277  TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaAudioCall(
278  const ContactPtr &contact,
279  const QDateTime &userActionTime = QDateTime::currentDateTime(),
280  const QString &preferredHandler = QString(),
281  const ChannelRequestHints &hints = ChannelRequestHints());
282  TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaVideoCall(
283  const QString &contactIdentifier,
284  bool withAudio = true,
285  const QDateTime &userActionTime = QDateTime::currentDateTime(),
286  const QString &preferredHandler = QString(),
287  const ChannelRequestHints &hints = ChannelRequestHints());
288  TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaVideoCall(
289  const ContactPtr &contact,
290  bool withAudio = false,
291  const QDateTime &userActionTime = QDateTime::currentDateTime(),
292  const QString &preferredHandler = QString(),
293  const ChannelRequestHints &hints = ChannelRequestHints());
294 
295  PendingChannelRequest *createFileTransfer(
296  const QString &contactIdentifier,
297  const FileTransferChannelCreationProperties &properties,
298  const QDateTime &userActionTime = QDateTime::currentDateTime(),
299  const QString &preferredHandler = QString(),
300  const ChannelRequestHints &hints = ChannelRequestHints());
301  PendingChannelRequest *createFileTransfer(
302  const ContactPtr &contact,
303  const FileTransferChannelCreationProperties &properties,
304  const QDateTime &userActionTime = QDateTime::currentDateTime(),
305  const QString &preferredHandler = QString(),
306  const ChannelRequestHints &hints = ChannelRequestHints());
307 
308  PendingChannelRequest *createStreamTube(
309  const QString &contactIdentifier,
310  const QString &service,
311  const QDateTime &userActionTime = QDateTime::currentDateTime(),
312  const QString &preferredHandler = QString(),
313  const ChannelRequestHints &hints = ChannelRequestHints());
314  PendingChannelRequest *createStreamTube(
315  const ContactPtr &contact,
316  const QString &service,
317  const QDateTime &userActionTime = QDateTime::currentDateTime(),
318  const QString &preferredHandler = QString(),
319  const ChannelRequestHints &hints = ChannelRequestHints());
320 
321  PendingChannelRequest *createDBusTube(
322  const QString &contactIdentifier,
323  const QString &serviceName,
324  const QDateTime &userActionTime = QDateTime::currentDateTime(),
325  const QString &preferredHandler = QString(),
326  const ChannelRequestHints &hints = ChannelRequestHints());
327  PendingChannelRequest *createDBusTube(
328  const ContactPtr &contact,
329  const QString &serviceName,
330  const QDateTime &userActionTime = QDateTime::currentDateTime(),
331  const QString &preferredHandler = QString(),
332  const ChannelRequestHints &hints = ChannelRequestHints());
333  PendingChannelRequest *createDBusTubeRoom(
334  const QString &room,
335  const QString &serviceName,
336  const QDateTime &userActionTime = QDateTime::currentDateTime(),
337  const QString &preferredHandler = QString(),
338  const ChannelRequestHints &hints = ChannelRequestHints());
339 
340  TP_QT_DEPRECATED PendingChannelRequest *createConferenceStreamedMediaCall(
341  const QList<ChannelPtr> &channels,
342  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
343  const QDateTime &userActionTime = QDateTime::currentDateTime(),
344  const QString &preferredHandler = QString(),
345  const ChannelRequestHints &hints = ChannelRequestHints());
346  TP_QT_DEPRECATED PendingChannelRequest *createConferenceStreamedMediaCall(
347  const QList<ChannelPtr> &channels,
348  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
349  const QDateTime &userActionTime = QDateTime::currentDateTime(),
350  const QString &preferredHandler = QString(),
351  const ChannelRequestHints &hints = ChannelRequestHints());
352 
353  PendingChannelRequest *createConferenceCall(
354  const QList<ChannelPtr> &channels,
355  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
356  const QDateTime &userActionTime = QDateTime::currentDateTime(),
357  const QString &preferredHandler = QString(),
358  const ChannelRequestHints &hints = ChannelRequestHints());
359  PendingChannelRequest *createConferenceCall(
360  const QList<ChannelPtr> &channels,
361  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
362  const QDateTime &userActionTime = QDateTime::currentDateTime(),
363  const QString &preferredHandler = QString(),
364  const ChannelRequestHints &hints = ChannelRequestHints());
365 
366  PendingChannelRequest *createConferenceTextChat(
367  const QList<ChannelPtr> &channels,
368  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
369  const QDateTime &userActionTime = QDateTime::currentDateTime(),
370  const QString &preferredHandler = QString(),
371  const ChannelRequestHints &hints = ChannelRequestHints());
372  PendingChannelRequest *createConferenceTextChat(
373  const QList<ChannelPtr> &channels,
374  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
375  const QDateTime &userActionTime = QDateTime::currentDateTime(),
376  const QString &preferredHandler = QString(),
377  const ChannelRequestHints &hints = ChannelRequestHints());
378 
379  PendingChannelRequest *createConferenceTextChatroom(
380  const QString &roomName,
381  const QList<ChannelPtr> &channels,
382  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
383  const QDateTime &userActionTime = QDateTime::currentDateTime(),
384  const QString &preferredHandler = QString(),
385  const ChannelRequestHints &hints = ChannelRequestHints());
386  PendingChannelRequest *createConferenceTextChatroom(
387  const QString &roomName,
388  const QList<ChannelPtr> &channels,
389  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
390  const QDateTime &userActionTime = QDateTime::currentDateTime(),
391  const QString &preferredHandler = QString(),
392  const ChannelRequestHints &hints = ChannelRequestHints());
393 
394  PendingChannel *createAndHandleConferenceCall(
395  const QList<ChannelPtr> &channels,
396  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
397  const QDateTime &userActionTime = QDateTime::currentDateTime());
398  PendingChannel *createAndHandleConferenceCall(
399  const QList<ChannelPtr> &channels,
400  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
401  const QDateTime &userActionTime = QDateTime::currentDateTime());
402 
403  PendingChannelRequest *createContactSearch(
404  const QString &server,
405  uint limit = 0,
406  const QDateTime &userActionTime = QDateTime::currentDateTime(),
407  const QString &preferredHandler = QString(),
408  const ChannelRequestHints &hints = ChannelRequestHints());
409 
410  PendingChannel *ensureAndHandleTextChat(
411  const QString &contactIdentifier,
412  const QDateTime &userActionTime = QDateTime::currentDateTime());
413  PendingChannel *ensureAndHandleTextChat(
414  const ContactPtr &contact,
415  const QDateTime &userActionTime = QDateTime::currentDateTime());
416 
417  PendingChannel *ensureAndHandleTextChatroom(
418  const QString &roomName,
419  const QDateTime &userActionTime = QDateTime::currentDateTime());
420 
421  PendingChannel *ensureAndHandleAudioCall(
422  const QString &contactIdentifier,
423  const QString &initialAudioContentName = QString(),
424  const QDateTime &userActionTime = QDateTime::currentDateTime());
425  PendingChannel *ensureAndHandleAudioCall(
426  const ContactPtr &contact,
427  const QString &initialAudioContentName = QString(),
428  const QDateTime &userActionTime = QDateTime::currentDateTime());
429  PendingChannel *ensureAndHandleVideoCall(
430  const QString &contactIdentifier,
431  const QString &initialVideoContentName = QString(),
432  const QDateTime &userActionTime = QDateTime::currentDateTime());
433  PendingChannel *ensureAndHandleVideoCall(
434  const ContactPtr &contact,
435  const QString &initialVideoContentName = QString(),
436  const QDateTime &userActionTime = QDateTime::currentDateTime());
437  PendingChannel *ensureAndHandleAudioVideoCall(
438  const QString &contactIdentifier,
439  const QString &initialAudioContentName = QString(),
440  const QString &initialVideoContentName = QString(),
441  const QDateTime &userActionTime = QDateTime::currentDateTime());
442  PendingChannel *ensureAndHandleAudioVideoCall(
443  const ContactPtr &contact,
444  const QString &initialAudioContentName = QString(),
445  const QString &initialVideoContentName = QString(),
446  const QDateTime &userActionTime = QDateTime::currentDateTime());
447 
448  TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaCall(
449  const QString &contactIdentifier,
450  const QDateTime &userActionTime = QDateTime::currentDateTime());
451  TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaCall(
452  const ContactPtr &contact,
453  const QDateTime &userActionTime = QDateTime::currentDateTime());
454 
455  TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaAudioCall(
456  const QString &contactIdentifier,
457  const QDateTime &userActionTime = QDateTime::currentDateTime());
458  TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaAudioCall(
459  const ContactPtr &contact,
460  const QDateTime &userActionTime = QDateTime::currentDateTime());
461 
462  TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaVideoCall(
463  const QString &contactIdentifier,
464  bool withAudio = true,
465  const QDateTime &userActionTime = QDateTime::currentDateTime());
466  TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaVideoCall(
467  const ContactPtr &contact,
468  bool withAudio = true,
469  const QDateTime &userActionTime = QDateTime::currentDateTime());
470 
471  PendingChannel *createAndHandleFileTransfer(
472  const QString &contactIdentifier,
473  const FileTransferChannelCreationProperties &properties,
474  const QDateTime &userActionTime = QDateTime::currentDateTime());
475  PendingChannel *createAndHandleFileTransfer(
476  const ContactPtr &contact,
477  const FileTransferChannelCreationProperties &properties,
478  const QDateTime &userActionTime = QDateTime::currentDateTime());
479 
480  PendingChannel *createAndHandleStreamTube(
481  const QString &contactIdentifier,
482  const QString &service,
483  const QDateTime &userActionTime = QDateTime::currentDateTime());
484  PendingChannel *createAndHandleStreamTube(
485  const ContactPtr &contact,
486  const QString &service,
487  const QDateTime &userActionTime = QDateTime::currentDateTime());
488 
489  PendingChannel *createAndHandleDBusTube(
490  const QString &contactIdentifier,
491  const QString &serviceName,
492  const QDateTime &userActionTime = QDateTime::currentDateTime());
493  PendingChannel *createAndHandleDBusTube(
494  const ContactPtr &contact,
495  const QString &serviceName,
496  const QDateTime &userActionTime = QDateTime::currentDateTime());
497 
498  PendingChannel *createAndHandleConferenceTextChat(
499  const QList<ChannelPtr> &channels,
500  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
501  const QDateTime &userActionTime = QDateTime::currentDateTime());
502  PendingChannel *createAndHandleConferenceTextChat(
503  const QList<ChannelPtr> &channels,
504  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
505  const QDateTime &userActionTime = QDateTime::currentDateTime());
506 
507  PendingChannel *createAndHandleConferenceTextChatroom(
508  const QString &roomName,
509  const QList<ChannelPtr> &channels,
510  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
511  const QDateTime &userActionTime = QDateTime::currentDateTime());
512  PendingChannel *createAndHandleConferenceTextChatroom(
513  const QString &roomName,
514  const QList<ChannelPtr> &channels,
515  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
516  const QDateTime &userActionTime = QDateTime::currentDateTime());
517 
518  TP_QT_DEPRECATED PendingChannel *createAndHandleConferenceStreamedMediaCall(
519  const QList<ChannelPtr> &channels,
520  const QStringList &initialInviteeContactsIdentifiers = QStringList(),
521  const QDateTime &userActionTime = QDateTime::currentDateTime());
522  TP_QT_DEPRECATED PendingChannel *createAndHandleConferenceStreamedMediaCall(
523  const QList<ChannelPtr> &channels,
524  const QList<ContactPtr> &initialInviteeContacts = QList<ContactPtr>(),
525  const QDateTime &userActionTime = QDateTime::currentDateTime());
526 
527  PendingChannel *createAndHandleContactSearch(
528  const QString &server = QString(),
529  uint limit = 0,
530  const QDateTime &userActionTime = QDateTime::currentDateTime());
531 
532  // advanced
533  PendingChannelRequest *createChannel(
534  const QVariantMap &requestedProperties,
535  const QDateTime &userActionTime = QDateTime::currentDateTime(),
536  const QString &preferredHandler = QString(),
537  const ChannelRequestHints &hints = ChannelRequestHints());
538 
539  PendingChannelRequest *ensureChannel(
540  const QVariantMap &requestedProperties,
541  const QDateTime &userActionTime = QDateTime::currentDateTime(),
542  const QString &preferredHandler = QString(),
543  const ChannelRequestHints &hints = ChannelRequestHints());
544 
545  PendingChannel *createAndHandleChannel(
546  const QVariantMap &requestedProperties,
547  const QDateTime &userActionTime);
548  PendingChannel *ensureAndHandleChannel(
549  const QVariantMap &requestedProperties,
550  const QDateTime &userActionTime);
551 
552 Q_SIGNALS:
553  void removed();
554  void serviceNameChanged(const QString &serviceName);
555  void profileChanged(const Tp::ProfilePtr &profile);
556  void displayNameChanged(const QString &displayName);
557  void iconNameChanged(const QString &iconName);
558  void nicknameChanged(const QString &nickname);
559  void normalizedNameChanged(const QString &normalizedName);
560  void validityChanged(bool validity);
561  void stateChanged(bool state);
562  void capabilitiesChanged(const Tp::ConnectionCapabilities &capabilities);
563  void connectsAutomaticallyPropertyChanged(bool connectsAutomatically);
564  void firstOnline();
565  void parametersChanged(const QVariantMap &parameters);
566  void changingPresence(bool value);
567  void automaticPresenceChanged(const Tp::Presence &automaticPresence);
568  void currentPresenceChanged(const Tp::Presence &currentPresence);
569  void requestedPresenceChanged(const Tp::Presence &requestedPresence);
570  void onlinenessChanged(bool online);
571  void avatarChanged(const Tp::Avatar &avatar);
572  void connectionStatusChanged(Tp::ConnectionStatus status);
573  void connectionChanged(const Tp::ConnectionPtr &connection);
574 
575 protected:
576  friend class PendingChannelRequest; // to access dispatcherInterface()
577 
578  Account(const QDBusConnection &bus,
579  const QString &busName, const QString &objectPath,
580  const ConnectionFactoryConstPtr &connectionFactory,
581  const ChannelFactoryConstPtr &channelFactory,
582  const ContactFactoryConstPtr &contactFactory,
583  const Feature &coreFeature);
584 
585  Client::AccountInterface *baseInterface() const;
586  Client::ChannelDispatcherInterface *dispatcherInterface() const;
587 
588 private Q_SLOTS:
589  TP_QT_NO_EXPORT void onDispatcherIntrospected(Tp::PendingOperation *op);
590  TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *);
591  TP_QT_NO_EXPORT void gotAvatar(QDBusPendingCallWatcher *);
592  TP_QT_NO_EXPORT void onAvatarChanged();
593  TP_QT_NO_EXPORT void onConnectionManagerReady(Tp::PendingOperation *);
594  TP_QT_NO_EXPORT void onConnectionReady(Tp::PendingOperation *);
595  TP_QT_NO_EXPORT void onPropertyChanged(const QVariantMap &delta);
596  TP_QT_NO_EXPORT void onRemoved();
597  TP_QT_NO_EXPORT void onConnectionBuilt(Tp::PendingOperation *);
598 
599 private:
600  struct Private;
601  friend struct Private;
602 
603  Private *mPriv;
604 };
605 
606 } // Tp
607 
608 #endif
The StatelessDBusProxy class is a base class representing a remote object whose API is basically stat...
Definition: dbus-proxy.h:80
The AvatarSpec class represents a Telepathy avatar information supported by a protocol.
Definition: avatar.h:51
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
ConnectionStatusReason
Definition: build/TelepathyQt/_gen/constants.h:1465
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
The Presence class represents a Telepathy simple presence.
Definition: presence.h:36
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The ChannelFactory class is responsible for constructing Channel objects according to application-def...
Definition: channel-factory.h:46
The Connection class represents a Telepathy connection.
Definition: connection.h:62
ConnectionStatus
Definition: build/TelepathyQt/_gen/constants.h:1420
The PresenceSpecList class represents a list of PresenceSpec.
Definition: presence.h:125
The PendingChannel class represents the parameters of and the reply to an asynchronous channel reques...
Definition: pending-channel.h:44
The ContactFactory class is responsible for constructing Contact objects according to application-def...
Definition: contact-factory.h:44
The PendingStringList class is a generic subclass of PendingOperation representing a pending D-Bus me...
Definition: pending-string-list.h:37
The ConnectionFactory class is responsible for constructing Connection objects according to applicati...
Definition: connection-factory.h:49
The FileTransferChannelCreationProperties class represents the properties of a file transfer channel ...
Definition: file-transfer-channel-creation-properties.h:41
The PendingChannelRequest class represents the parameters of and the reply to an asynchronous Channel...
Definition: pending-channel-request.h:46
Definition: build/TelepathyQt/_gen/types.h:240
The ConnectionCapabilities class represents the capabilities of a Connection.
Definition: connection-capabilities.h:38
The Account class represents a Telepathy account.
Definition: account.h:68
The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to of...
Definition: optional-interface-factory.h:65


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00997.html0000644000175100017520000002660212530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ConnectionCapabilities Member List

This is the complete list of members for Tp::ConnectionCapabilities, including all inherited members.

allClassSpecs() const Tp::CapabilitiesBase
audioCalls() const Tp::CapabilitiesBase
CapabilitiesBase()Tp::CapabilitiesBase
CapabilitiesBase(const CapabilitiesBase &other)Tp::CapabilitiesBase
CapabilitiesBase(bool specificToContact)Tp::CapabilitiesBaseprotected
CapabilitiesBase(const RequestableChannelClassList &rccs, bool specificToContact)Tp::CapabilitiesBaseprotected
CapabilitiesBase(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact)Tp::CapabilitiesBaseprotected
conferenceStreamedMediaCalls() const Tp::ConnectionCapabilities
conferenceStreamedMediaCallsWithInvitees() const Tp::ConnectionCapabilities
conferenceTextChatrooms() const Tp::ConnectionCapabilities
conferenceTextChatroomsWithInvitees() const Tp::ConnectionCapabilities
conferenceTextChats() const Tp::ConnectionCapabilities
conferenceTextChatsWithInvitees() const Tp::ConnectionCapabilities
ConnectionCapabilities()Tp::ConnectionCapabilities
ConnectionCapabilities(const RequestableChannelClassList &rccs)Tp::ConnectionCapabilitiesprotected
ConnectionCapabilities(const RequestableChannelClassSpecList &rccSpecs)Tp::ConnectionCapabilitiesprotected
contactSearches() const Tp::ConnectionCapabilities
contactSearchesWithLimit() const Tp::ConnectionCapabilities
contactSearchesWithSpecificServer() const Tp::ConnectionCapabilities
dbusTubes() const Tp::ConnectionCapabilities
fileTransfers() const Tp::CapabilitiesBase
isSpecificToContact() const Tp::CapabilitiesBase
operator=(const CapabilitiesBase &other)Tp::CapabilitiesBase
streamedMediaAudioCalls() const Tp::CapabilitiesBase
streamedMediaCalls() const Tp::CapabilitiesBase
streamedMediaVideoCalls() const Tp::CapabilitiesBase
streamedMediaVideoCallsWithAudio() const Tp::CapabilitiesBase
streamTubes() const Tp::ConnectionCapabilities
textChatrooms() const Tp::ConnectionCapabilities
textChats() const Tp::CapabilitiesBase
updateRequestableChannelClasses(const RequestableChannelClassList &rccs)Tp::CapabilitiesBaseprotectedvirtual
upgradingCalls() const Tp::CapabilitiesBase
upgradingStreamedMediaCalls() const Tp::CapabilitiesBase
videoCalls() const Tp::CapabilitiesBase
videoCallsWithAudio() const Tp::CapabilitiesBase
~CapabilitiesBase()Tp::CapabilitiesBasevirtual
~ConnectionCapabilities()Tp::ConnectionCapabilitiesvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00836_source.html0000644000175100017520000012616012530426257022527 0ustar00kaffeinekaffeine00000000000000 streamed-media-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
streamed-media-channel.h
1 
23 #ifndef _TelepathyQt_streamed_media_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_streamed_media_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/PendingOperation>
32 #include <TelepathyQt/Object>
33 #include <TelepathyQt/SharedPtr>
34 #include <TelepathyQt/Types>
35 
36 namespace Tp
37 {
38 
40 
41 typedef QList<StreamedMediaStreamPtr> StreamedMediaStreams;
42 
43 class TP_QT_EXPORT_DEPRECATED PendingStreamedMediaStreams : public PendingOperation
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(PendingStreamedMediaStreams)
47 
48 public:
50 
51  StreamedMediaChannelPtr channel() const;
52 
53  StreamedMediaStreams streams() const;
54 
55 private Q_SLOTS:
56  TP_QT_NO_EXPORT void gotStreams(QDBusPendingCallWatcher *op);
57 
58  TP_QT_NO_EXPORT void onStreamRemoved(const Tp::StreamedMediaStreamPtr &stream);
59  TP_QT_NO_EXPORT void onStreamReady(Tp::PendingOperation *op);
60 
61 private:
62  friend class StreamedMediaChannel;
63 
64  TP_QT_NO_EXPORT PendingStreamedMediaStreams(const StreamedMediaChannelPtr &channel,
65  const ContactPtr &contact,
66  const QList<MediaStreamType> &types);
67 
68  struct Private;
69  friend struct Private;
70  Private *mPriv;
71 };
72 
73 class TP_QT_EXPORT_DEPRECATED StreamedMediaStream : public Object, private ReadyObject
74 {
75  Q_OBJECT
76  Q_DISABLE_COPY(StreamedMediaStream)
77 
78 public:
79  enum SendingState {
83  };
84 
86 
87  StreamedMediaChannelPtr channel() const;
88 
89  uint id() const;
90 
91  ContactPtr contact() const;
92 
93  MediaStreamState state() const;
94  MediaStreamType type() const;
95 
96  SendingState localSendingState() const;
97  SendingState remoteSendingState() const;
98 
99  bool sending() const;
100  bool receiving() const;
101 
102  bool localSendingRequested() const;
103  bool remoteSendingRequested() const;
104 
105  MediaStreamDirection direction() const;
106  MediaStreamPendingSend pendingSend() const;
107 
108  PendingOperation *requestSending(bool send);
109  PendingOperation *requestReceiving(bool receive);
110 
111  PendingOperation *requestDirection(MediaStreamDirection direction);
112  PendingOperation *requestDirection(bool send, bool receive);
113 
114  PendingOperation *startDTMFTone(DTMFEvent event);
115  PendingOperation *stopDTMFTone();
116 
117 Q_SIGNALS:
118  void localSendingStateChanged(Tp::StreamedMediaStream::SendingState localSendingState);
119  void remoteSendingStateChanged(Tp::StreamedMediaStream::SendingState remoteSendingState);
120 
121 private Q_SLOTS:
122  TP_QT_NO_EXPORT void gotContact(Tp::PendingOperation *op);
123 
124 private:
126  friend class StreamedMediaChannel;
127 
128  static const Feature FeatureCore;
129 
130  TP_QT_NO_EXPORT StreamedMediaStream(const StreamedMediaChannelPtr &channel, const MediaStreamInfo &info);
131 
132  TP_QT_NO_EXPORT void gotDirection(uint direction, uint pendingSend);
133  TP_QT_NO_EXPORT void gotStreamState(uint state);
134 
135  struct Private;
136  friend struct Private;
137  Private *mPriv;
138 };
139 
140 class TP_QT_EXPORT_DEPRECATED StreamedMediaChannel : public Channel
141 {
142  Q_OBJECT
143  Q_DISABLE_COPY(StreamedMediaChannel)
144  Q_ENUMS(StateChangeReason)
145 
146 public:
147  static const Feature FeatureCore;
148  static const Feature FeatureStreams;
150 
152  StateChangeReasonUnknown = 0,
153  StateChangeReasonUserRequested = 1
154  };
155 
156  static StreamedMediaChannelPtr create(const ConnectionPtr &connection,
157  const QString &objectPath, const QVariantMap &immutableProperties);
158 
159  virtual ~StreamedMediaChannel();
160 
161  bool awaitingLocalAnswer() const;
162  bool awaitingRemoteAnswer() const;
163 
164  PendingOperation *acceptCall();
165  PendingOperation *hangupCall();
166 
167  StreamedMediaStreams streams() const;
168  StreamedMediaStreams streamsForType(MediaStreamType type) const;
169 
170  PendingStreamedMediaStreams *requestStream(const ContactPtr &contact, MediaStreamType type);
171  PendingStreamedMediaStreams *requestStreams(const ContactPtr &contact, QList<MediaStreamType> types);
172 
173  PendingOperation *removeStream(const StreamedMediaStreamPtr &stream);
174  PendingOperation *removeStreams(const StreamedMediaStreams &streams);
175 
176  bool handlerStreamingRequired() const;
177 
178  LocalHoldState localHoldState() const;
179  LocalHoldStateReason localHoldStateReason() const;
180  PendingOperation *requestHold(bool hold);
181 
182 Q_SIGNALS:
183  void streamAdded(const Tp::StreamedMediaStreamPtr &stream);
184  void streamRemoved(const Tp::StreamedMediaStreamPtr &stream);
185  void streamDirectionChanged(const Tp::StreamedMediaStreamPtr &stream,
186  Tp::MediaStreamDirection direction,
187  Tp::MediaStreamPendingSend pendingSend);
188  void streamStateChanged(const Tp::StreamedMediaStreamPtr &stream,
189  Tp::MediaStreamState state);
190  void streamError(const Tp::StreamedMediaStreamPtr &stream,
191  Tp::MediaStreamError errorCode,
192  const QString &errorMessage);
193 
194  void localHoldStateChanged(Tp::LocalHoldState state,
195  Tp::LocalHoldStateReason reason);
196 
197 protected:
198  StreamedMediaChannel(const ConnectionPtr &connection,
199  const QString &objectPath, const QVariantMap &immutableProperties,
200  const Feature &coreFeature = StreamedMediaChannel::FeatureCore);
201 
202 private Q_SLOTS:
203  TP_QT_NO_EXPORT void onStreamReady(Tp::PendingOperation *op);
204 
205  TP_QT_NO_EXPORT void gotStreams(QDBusPendingCallWatcher *);
206  TP_QT_NO_EXPORT void onStreamAdded(uint, uint, uint);
207  TP_QT_NO_EXPORT void onStreamRemoved(uint);
208  TP_QT_NO_EXPORT void onStreamDirectionChanged(uint, uint, uint);
209  TP_QT_NO_EXPORT void onStreamStateChanged(uint streamId, uint streamState);
210  TP_QT_NO_EXPORT void onStreamError(uint, uint, const QString &);
211 
212  TP_QT_NO_EXPORT void gotLocalHoldState(QDBusPendingCallWatcher *);
213  TP_QT_NO_EXPORT void onLocalHoldStateChanged(uint, uint);
214 
215 private:
217 
218  StreamedMediaStreamPtr addStream(const MediaStreamInfo &streamInfo);
219  StreamedMediaStreamPtr lookupStreamById(uint streamId);
220 
221  struct Private;
222  friend struct Private;
223  Private *mPriv;
224 };
225 
226 } // Tp
227 
228 #endif
SendingState
Definition: streamed-media-channel.h:79
MediaStreamType
Definition: build/TelepathyQt/_gen/constants.h:2716
DTMFEvent
Definition: build/TelepathyQt/_gen/constants.h:3121
The StreamedMediaStream class represents a Telepathy streamed media stream.
Definition: streamed-media-channel.h:73
The Object class provides an object with property notification.
Definition: object.h:39
static const Feature FeatureLocalHoldState
Definition: streamed-media-channel.h:149
StateChangeReason
Definition: streamed-media-channel.h:151
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
static const Feature FeatureStreams
Definition: streamed-media-channel.h:148
QFlags< MediaStreamPending > MediaStreamPendingSend
Definition: build/TelepathyQt/_gen/constants.h:682
Definition: ready-object.h:42
MediaStreamState
Definition: build/TelepathyQt/_gen/constants.h:2744
The StreamedMediaChannel class represents a Telepathy channel of type StreamedMedia.
Definition: streamed-media-channel.h:140
static const Feature FeatureCore
Definition: streamed-media-channel.h:147
Definition: build/TelepathyQt/_gen/types.h:1979
Class containing the result of an asynchronous streamed media stream creation request.
Definition: streamed-media-channel.h:43
MediaStreamDirection
Definition: build/TelepathyQt/_gen/constants.h:2777
QList< StreamedMediaStreamPtr > StreamedMediaStreams
Definition: streamed-media-channel.h:39
Definition: build/TelepathyQt/_gen/constants.h:4534
Definition: build/TelepathyQt/_gen/constants.h:4544
LocalHoldState
Definition: build/TelepathyQt/_gen/constants.h:3466
Definition: build/TelepathyQt/_gen/constants.h:4539
MediaStreamError
Definition: build/TelepathyQt/_gen/constants.h:3912
SendingState
Definition: build/TelepathyQt/_gen/constants.h:4529
LocalHoldStateReason
Definition: build/TelepathyQt/_gen/constants.h:3516
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00496.html0000644000175100017520000001037612530426260021144 0ustar00kaffeinekaffeine00000000000000 Tp::RoomInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RoomInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

uint handle
 
QString channelType
 
QVariantMap info
 

Detailed Description

Structure type generated from the specification.

Member Data Documentation

uint Tp::RoomInfo::handle
QString Tp::RoomInfo::channelType
QVariantMap Tp::RoomInfo::info


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00240.html0000644000175100017520000020412312530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeFileTransferInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< QDBusVariant > AcceptFile (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, int timeout=-1)
 
QDBusPendingReply< QDBusVariant > ProvideFile (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)
 

Signals

void FileTransferStateChanged (uint state, uint reason)
 
void TransferredBytesChanged (qulonglong count)
 
void InitialOffsetDefined (qulonglong initialOffset)
 
void URIDefined (const QString &URI)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeFileTransferInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeFileTransferInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeFileTransferInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeFileTransferInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeFileTransferInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyState () const
 
Tp::PendingVariantrequestPropertyContentType () const
 
Tp::PendingVariantrequestPropertyFilename () const
 
Tp::PendingVariantrequestPropertySize () const
 
Tp::PendingVariantrequestPropertyContentHashType () const
 
Tp::PendingVariantrequestPropertyContentHash () const
 
Tp::PendingVariantrequestPropertyDescription () const
 
Tp::PendingVariantrequestPropertyDate () const
 
Tp::PendingVariantrequestPropertyAvailableSocketTypes () const
 
Tp::PendingVariantrequestPropertyTransferredBytes () const
 
Tp::PendingVariantrequestPropertyInitialOffset () const
 
Tp::PendingVariantrequestPropertyURI () const
 
Tp::PendingOperationsetPropertyURI (QString newValue)
 
Tp::PendingVariantrequestPropertyFileCollection () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.FileTransfer".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeFileTransferInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeFileTransferInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeFileTransferInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeFileTransferInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeFileTransferInterface::ChannelTypeFileTransferInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeFileTransferInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeFileTransferInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.FileTransfer", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyState ( ) const
inline

Asynchronous getter for the remote object property State of type uint.

The state of the file transfer as described by the File_Transfer_State enum.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyContentType ( ) const
inline

Asynchronous getter for the remote object property ContentType of type QString.

The file's MIME type. This cannot change once the channel has been created.

This property is mandatory when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. Protocols which do not have a content-type property with file transfers should set this value to application/octet-stream.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyFilename ( ) const
inline

Asynchronous getter for the remote object property Filename of type QString.

The name of the file on the sender's side. This is therefore given as a suggested filename for the receiver. This cannot change once the channel has been created.

This property should be the basename of the file being sent. For example, if the sender sends the file /home/user/monkey.pdf then this property should be set to monkey.pdf.

This property is mandatory when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. This property cannot be empty and MUST be set to a sensible value.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertySize ( ) const
inline

Asynchronous getter for the remote object property Size of type qulonglong.

The size of the file. If this property is set, then the file transfer is guaranteed to be this size. This cannot change once the channel has been created.

When you are creating a channel with this property, its value MUST be accurate and in bytes. However, when receiving a file, this property still MUST be in bytes but might not be entirely accurate to the byte.

This property is mandatory when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. If this information isn't provided in the protocol, connection managers MUST set it to UINT64_MAX.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyContentHashType ( ) const
inline

Asynchronous getter for the remote object property ContentHashType of type uint.

The type of the ContentHash property.

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. However, if you wish to include the ContentHash property you MUST also include this property. If you omit this property from a ConnectionInterfaceRequestsInterface::CreateChannel() method call then its value will be assumed to be File_Hash_Type_None.

For each supported hash type, implementations SHOULD include an entry in ConnectionInterfaceRequestsInterface::RequestableChannelClasses with this property fixed to that hash type. If the protocol supports offering a file without a content hash, implementations SHOULD list this property in Allowed in a requestable channel class, mapping hash types they don't understand to None.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyContentHash ( ) const
inline

Asynchronous getter for the remote object property ContentHash of type QString.

Hash of the contents of the file transfer, of type described in the value of the ContentHashType property.

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. Its value MUST correspond to the appropriate type of the ContentHashType property. If the ContentHashType property is not set, or set to File_Hash_Type_None, then this property will not even be looked at.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyDescription ( ) const
inline

Asynchronous getter for the remote object property Description of type QString.

Description of the file transfer. This cannot change once the channel has been created.

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method. If this property was not provided by the remote party, connection managers MUST set it to the empty string.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyDate ( ) const
inline

Asynchronous getter for the remote object property Date of type qlonglong.

The last modification time of the file being transferred. This cannot change once the channel has been created

This property is optional when requesting the channel with the ConnectionInterfaceRequestsInterface::CreateChannel() method.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyAvailableSocketTypes ( ) const
inline

Asynchronous getter for the remote object property AvailableSocketTypes of type Tp::SupportedSocketMap.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for sockets with that address type. For simplicity, if a CM supports offering a particular type of file transfer, it is assumed to support accepting it. Connection Managers MUST support at least Socket_Address_Type_IPv4.

A typical value for a host without IPv6 support:

  {
    Socket_Address_Type_IPv4:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
       Socket_Access_Control_Netmask],
    Socket_Address_Type_Unix:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
  }
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyTransferredBytes ( ) const
inline

Asynchronous getter for the remote object property TransferredBytes of type qulonglong.

The number of bytes that have been transferred at the time of requesting the property. This will be updated as the file transfer continues.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyInitialOffset ( ) const
inline

Asynchronous getter for the remote object property InitialOffset of type qulonglong.

The offset in bytes from where the file should be sent. This MUST be respected by both the receiver and the sender after the state becomes Open, but before any data is sent or received. Until the InitialOffsetDefined() signal is emitted, this property is undefined.

Before setting the State property to Open, the connection manager MUST set the InitialOffset property, possibly to 0.

This property MUST NOT change after the state of the transfer has changed to Open.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyURI ( ) const
inline

Asynchronous getter for the remote object property URI of type QString.

For outgoing file transfers, this requestable property allows the channel requester to inform observers (and the handler, if it is not the requester itself) of the URI of the file being transferred. Note that the connection manager SHOULD NOT read this file directly; the handler streams the file into the CM through the socket negotiated using ProvideFile() .

On outgoing file transfers, this property MUST NOT change after the channel is requested.

For incoming file transfers, this property MAY be set by the channel handler before calling AcceptFile() to inform observers where the incoming file will be saved. If set by an approver, the handler MUST save the file to that location. Setting this property once AcceptFile() has been called MUST fail. Once this property has been set URIDefined() is emitted.

If set, this URI SHOULD generally point to a file on the local system, as defined by RFC 1738 §3.10; that is, it should be of the form file:///path/to/file or file://localhost/path/to/file. For outgoing files, this URI MAY use a different scheme, such as http:, if a remote resource is being transferred to a contact.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingOperation* Tp::Client::ChannelTypeFileTransferInterface::setPropertyURI ( QString  newValue)
inline

Asynchronous setter for the remote object property URI of type QString.

For outgoing file transfers, this requestable property allows the channel requester to inform observers (and the handler, if it is not the requester itself) of the URI of the file being transferred. Note that the connection manager SHOULD NOT read this file directly; the handler streams the file into the CM through the socket negotiated using ProvideFile() .

On outgoing file transfers, this property MUST NOT change after the channel is requested.

For incoming file transfers, this property MAY be set by the channel handler before calling AcceptFile() to inform observers where the incoming file will be saved. If set by an approver, the handler MUST save the file to that location. Setting this property once AcceptFile() has been called MUST fail. Once this property has been set URIDefined() is emitted.

If set, this URI SHOULD generally point to a file on the local system, as defined by RFC 1738 §3.10; that is, it should be of the form file:///path/to/file or file://localhost/path/to/file. For outgoing files, this URI MAY use a different scheme, such as http:, if a remote resource is being transferred to a contact.

Returns
A pending operation which will emit finished when the property has been set.
Tp::PendingVariant* Tp::Client::ChannelTypeFileTransferInterface::requestPropertyFileCollection ( ) const
inline

Asynchronous getter for the remote object property FileCollection of type QString.

The collection of files to which this channel belongs, or the empty string if this channel does not belong to a collection of files.

A channel's FileCollection property can never change.

At least on GTalk and apparently also on iChat the user can send a set of files to a contact and that contact can then pick and choose which files to actually receive.

The CM should emit all new FT channels belonging to one collection at the same time. UIs supporting this feature can then bundle all these channels together in some way, and show a nice UI. UIs not supporting it will treat them as separate transfers, which is not great but a reasonable fallback.

No mechanism is currently defined to indicate whether the UI should expect any more files in the same collection. UIs SHOULD assume that more file transfers may be added to a collection. It is possible that a "no more channels in this collection" indication will be added in a future version of this specification.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeFileTransferInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QDBusVariant> Tp::Client::ChannelTypeFileTransferInterface::AcceptFile ( uint  addressType,
uint  accessControl,
const QDBusVariant &  accessControlParam,
qulonglong  offset,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AcceptFile on the remote object.

Accept a file transfer that's in the Pending state. The file transfer's state becomes Accepted after this method is called. At this point the client can connect to the socket. CM MUST emit InitialOffsetDefined and change the state to Open before writing to the socket. Then InitialOffset should be respected in case its value differs from the offset that was specified as an argument to AcceptFile.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
addressType
The type of address the connection manager should listen on.
accessControl
The type of access control the connection manager should apply to 
the socket.
accessControlParam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
offset
The desired offset in bytes where the file transfer should start. 
The offset is taken from the beginning of the file. Specifying an 
offset of zero will start the transfer from the beginning of the 
file. The offset that is actually given in the InitialOffset 
property can differ from this argument where the requested offset 
is not supported. (For example, some protocols do not support 
offsets at all so the InitialOffset property will always be 0.)
timeoutThe timeout in milliseconds.
Returns
The address on which the connection manager will listen for 
connections for this file transfer.
QDBusPendingReply<QDBusVariant> Tp::Client::ChannelTypeFileTransferInterface::ProvideFile ( uint  addressType,
uint  accessControl,
const QDBusVariant &  accessControlParam,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method ProvideFile on the remote object.

Provide the file for an outgoing file transfer which has been offered. Opens a socket that the client can use to provide a file to the connection manager. The channel MUST have been requested, and will change state to Open when this method is called if its state was Accepted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
addressType
The type of address the connection manager should listen on.
accessControl
The type of access control the connection manager should apply to 
the socket.
accessControlParam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
timeoutThe timeout in milliseconds.
Returns
The address on which the connection manager will listen for 
connections for this file transfer.
void Tp::Client::ChannelTypeFileTransferInterface::FileTransferStateChanged ( uint  state,
uint  reason 
)
signal

Represents the signal FileTransferStateChanged on the remote object.

Emitted when the state of a file transfer changes.

Parameters
state
The new state of the file transfer; see the File_Transfer_State 
enumeration.
reason
The reason for the state change; see the 
File_Transfer_State_Change_Reason enumeration. The value will 
always be File_Transfer_State_Change_Reason_None, except when 
changing state to cancelled.
void Tp::Client::ChannelTypeFileTransferInterface::TransferredBytesChanged ( qulonglong  count)
signal

Represents the signal TransferredBytesChanged on the remote object.

Emitted when the number of transferred bytes changes. This will not be signalled with every single byte change. Instead, the most frequent this signal will be emitted is once a second. This should be sufficient, and the TransferredBytes property SHOULD NOT be polled.

Parameters
count
The number of already transferred bytes.
void Tp::Client::ChannelTypeFileTransferInterface::InitialOffsetDefined ( qulonglong  initialOffset)
signal

Represents the signal InitialOffsetDefined on the remote object.

Emitted when the value of the InitialOffset property has been negotiated. This signal MUST be emitted before the channel becomes Open and clients have to use this offset when transferring the file.

Parameters
initialOffset
The value of the InitialOffset property.
void Tp::Client::ChannelTypeFileTransferInterface::URIDefined ( const QString &  URI)
signal

Represents the signal URIDefined on the remote object.

Emitted when the value of the URI property has been set. This signal MUST only be emitted on incoming file transfers, and only if the handler sets the URI property before accepting the file.

Parameters
URI
The value of the URI property.
void Tp::Client::ChannelTypeFileTransferInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01201.html0000644000175100017520000000443312530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SocketNetmaskIPv6 Member List

This is the complete list of members for Tp::SocketNetmaskIPv6, including all inherited members.

addressTp::SocketNetmaskIPv6
prefixLengthTp::SocketNetmaskIPv6


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00832_source.html0000644000175100017520000010726712530426257022532 0ustar00kaffeinekaffeine00000000000000 stream-tube-client.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
stream-tube-client.h
1 
23 #ifndef _TelepathyQt_stream_tube_client_h_HEADER_GUARD_
24 #define _TelepathyQt_stream_tube_client_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/AccountFactory>
27 #include <TelepathyQt/ChannelFactory>
28 #include <TelepathyQt/ConnectionFactory>
29 #include <TelepathyQt/ContactFactory>
30 #include <TelepathyQt/RefCounted>
31 #include <TelepathyQt/Types>
32 
33 class QHostAddress;
34 
35 namespace Tp
36 {
37 
38 class PendingStreamTubeConnection;
39 
40 class TP_QT_EXPORT StreamTubeClient : public QObject, public RefCounted
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(StreamTubeClient)
44 
45  class TubeWrapper;
46 
47 public:
48 
50  {
51  public:
52  virtual QPair<QHostAddress, quint16>
53  nextSourceAddress(const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube) = 0;
54 
55  protected:
57  };
58 
59  class Tube : public QPair<AccountPtr, IncomingStreamTubeChannelPtr>
60  {
61  public:
62  Tube();
63  Tube(const AccountPtr &account, const IncomingStreamTubeChannelPtr &channel);
64  Tube(const Tube &other);
65  ~Tube();
66 
67  bool isValid() const { return mPriv.constData() != 0; }
68 
69  Tube &operator=(const Tube &other);
70 
71  const AccountPtr &account() const
72  {
73  return first;
74  }
75 
76  const IncomingStreamTubeChannelPtr &channel() const
77  {
78  return second;
79  }
80 
81  private:
82  struct Private;
83  friend struct Private;
84  QSharedDataPointer<Private> mPriv;
85  };
86 
87  static StreamTubeClientPtr create(
88  const QStringList &p2pServices,
89  const QStringList &roomServices = QStringList(),
90  const QString &clientName = QString(),
91  bool monitorConnections = false,
92  bool bypassApproval = false,
93  const AccountFactoryConstPtr &accountFactory =
94  AccountFactory::create(QDBusConnection::sessionBus()),
95  const ConnectionFactoryConstPtr &connectionFactory =
96  ConnectionFactory::create(QDBusConnection::sessionBus()),
97  const ChannelFactoryConstPtr &channelFactory =
98  ChannelFactory::create(QDBusConnection::sessionBus()),
99  const ContactFactoryConstPtr &contactFactory =
101 
102  static StreamTubeClientPtr create(
103  const QDBusConnection &bus,
104  const AccountFactoryConstPtr &accountFactory,
105  const ConnectionFactoryConstPtr &connectionFactory,
106  const ChannelFactoryConstPtr &channelFactory,
107  const ContactFactoryConstPtr &contactFactory,
108  const QStringList &p2pServices,
109  const QStringList &roomServices = QStringList(),
110  const QString &clientName = QString(),
111  bool monitorConnections = false,
112  bool bypassApproval = false);
113 
114  static StreamTubeClientPtr create(
115  const AccountManagerPtr &accountManager,
116  const QStringList &p2pServices,
117  const QStringList &roomServices = QStringList(),
118  const QString &clientName = QString(),
119  bool monitorConnections = false,
120  bool bypassApproval = false);
121 
122  static StreamTubeClientPtr create(
123  const ClientRegistrarPtr &registrar,
124  const QStringList &p2pServices,
125  const QStringList &roomServices = QStringList(),
126  const QString &clientName = QString(),
127  bool monitorConnections = false,
128  bool bypassApproval = false);
129 
130  virtual ~StreamTubeClient();
131 
132  ClientRegistrarPtr registrar() const;
133  QString clientName() const;
134  bool isRegistered() const;
135  bool monitorsConnections() const;
136 
137  bool acceptsAsTcp() const;
138  TcpSourceAddressGenerator *tcpGenerator() const;
139  bool acceptsAsUnix() const;
140 
141  void setToAcceptAsTcp(TcpSourceAddressGenerator *generator = 0);
142  void setToAcceptAsUnix(bool requireCredentials = false);
143 
144  QList<Tube> tubes() const;
145  QHash<Tube, QSet<uint> > connections() const;
146 
147 Q_SIGNALS:
148  void tubeOffered(
149  const Tp::AccountPtr &account,
150  const Tp::IncomingStreamTubeChannelPtr &tube);
151  void tubeClosed(
152  const Tp::AccountPtr &account,
153  const Tp::IncomingStreamTubeChannelPtr &tube,
154  const QString &error,
155  const QString &message);
156 
157  void tubeAcceptedAsTcp(
158  const QHostAddress &listenAddress,
159  quint16 listenPort,
160  const QHostAddress &sourceAddress,
161  quint16 sourcePort,
162  const Tp::AccountPtr &account,
163  const Tp::IncomingStreamTubeChannelPtr &tube);
164  void tubeAcceptedAsUnix(
165  const QString &listenAddress,
166  bool requiresCredentials,
167  uchar credentialByte,
168  const Tp::AccountPtr &account,
169  const Tp::IncomingStreamTubeChannelPtr &tube);
170 
171  void newConnection(
172  const Tp::AccountPtr &account,
173  const Tp::IncomingStreamTubeChannelPtr &tube,
174  uint connectionId);
175  void connectionClosed(
176  const Tp::AccountPtr &account,
177  const Tp::IncomingStreamTubeChannelPtr &tube,
178  uint connectionId,
179  const QString &error,
180  const QString &message);
181 
182 private Q_SLOTS:
183 
184  TP_QT_NO_EXPORT void onInvokedForTube(
185  const Tp::AccountPtr &account,
186  const Tp::StreamTubeChannelPtr &tube,
187  const QDateTime &userActionTime,
188  const Tp::ChannelRequestHints &requestHints);
189 
190  TP_QT_NO_EXPORT void onAcceptFinished(TubeWrapper *, Tp::PendingStreamTubeConnection *);
191  TP_QT_NO_EXPORT void onTubeInvalidated(Tp::DBusProxy *, const QString &, const QString &);
192 
193  TP_QT_NO_EXPORT void onNewConnection(
194  TubeWrapper *wrapper,
195  uint conn);
196  TP_QT_NO_EXPORT void onConnectionClosed(
197  TubeWrapper *wrapper,
198  uint conn,
199  const QString &error,
200  const QString &message);
201 
202 private:
203  TP_QT_NO_EXPORT StreamTubeClient(
204  const ClientRegistrarPtr &registrar,
205  const QStringList &p2pServices,
206  const QStringList &roomServices,
207  const QString &clientName,
208  bool monitorConnections,
209  bool bypassApproval);
210 
211  struct Private;
212  Private *mPriv;
213 };
214 
215 } // Tp
216 
217 #endif
static ConnectionFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: connection-factory.cpp:57
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
bool isValid() const
Definition: stream-tube-client.h:67
static ContactFactoryPtr create(const Features &features=Features())
Definition: contact-factory.cpp:48
The ChannelRequestHints class represents a dictionary of metadata provided by the channel requester w...
Definition: channel-request.h:121
The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming ...
Definition: pending-stream-tube-connection.h:43
virtual ~TcpSourceAddressGenerator()
Definition: stream-tube-client.h:56
static AccountFactoryPtr create(const QDBusConnection &bus, const Features &features=Features())
Definition: account-factory.cpp:58
The StreamTubeClient class is a Handler implementation for incoming Stream Tube channels, allowing an application to easily get notified about services they can connect to offered to them over Telepathy Tubes without worrying about the channel dispatching details.
Definition: stream-tube-client.h:40
const AccountPtr & account() const
Definition: stream-tube-client.h:71
static ChannelFactoryPtr create(const QDBusConnection &bus)
Definition: channel-factory.cpp:86
The StreamTubeClient::TcpSourceAddressGenerator abstract interface allows using socket source address...
Definition: stream-tube-client.h:49
The StreamTubeClient::Tube class represents a tube being handled by the client.
Definition: stream-tube-client.h:59
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
const IncomingStreamTubeChannelPtr & channel() const
Definition: stream-tube-client.h:76


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01270.html0000644000175100017520000002133712530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceSecurableInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceSecurableInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceSecurableInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSecurableInterface
ChannelInterfaceSecurableInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSecurableInterface
ChannelInterfaceSecurableInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceSecurableInterface
ChannelInterfaceSecurableInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceSecurableInterfaceexplicit
ChannelInterfaceSecurableInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceSecurableInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceSecurableInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceSecurableInterfaceinline
requestPropertyEncrypted() const Tp::Client::ChannelInterfaceSecurableInterfaceinline
requestPropertyVerified() const Tp::Client::ChannelInterfaceSecurableInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceSecurableInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00054.html0000644000175100017520000000375712530426257021145 0ustar00kaffeinekaffeine00000000000000 How to report a bug
   Home · All Classes · All Namespaces · Modules · Functions · Files
How to report a bug

Before reporting a bug, please check the Bug Tracker to see if the issue is already known.

Always include the following information in your bug report:

  • The version of Telepathy-Qt you are using

Please submit the bug report, feature request or "to-do" item here.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01015.html0000644000175100017520000002171712530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusProxy Member List

This is the complete list of members for Tp::DBusProxy, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x70.html0000644000175100017520000001047112530426260024136 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00369.html0000644000175100017520000001347712530426260021150 0ustar00kaffeinekaffeine00000000000000 Tp::HandleIdentifierMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandleIdentifierMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, QString >.

Public Member Functions

 HandleIdentifierMap ()
 
 HandleIdentifierMap (const QMap< uint, QString > &a)
 
HandleIdentifierMapoperator= (const QMap< uint, QString > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, QString>, but needed to have a discrete type in the Qt type system.

A map from handles to the corresponding normalized string identifier.

Constructor & Destructor Documentation

Tp::HandleIdentifierMap::HandleIdentifierMap ( )
inline
Tp::HandleIdentifierMap::HandleIdentifierMap ( const QMap< uint, QString > &  a)
inline

Member Function Documentation

HandleIdentifierMap& Tp::HandleIdentifierMap::operator= ( const QMap< uint, QString > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00113.html0000644000175100017520000004704012530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelSplittableInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Interface.Splittable. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback1< void,
DBusError * > 
SplitCallback
 

Public Member Functions

virtual ~BaseChannelSplittableInterface ()
 
QVariantMap immutableProperties () const
 
void split ()
 
void setSplitCallback (const SplitCallback &cb)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseChannelSplittableInterfacePtr 
create ()
 
template<typename BaseChannelSplittableInterfaceSubclass >
static SharedPtr
< BaseChannelSplittableInterfaceSubclass > 
create ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for implementations of Channel.Interface.Splittable.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseChannelSplittableInterface::~BaseChannelSplittableInterface ( )
virtual

Class destructor.

Member Function Documentation

static BaseChannelSplittableInterfacePtr Tp::BaseChannelSplittableInterface::create ( )
inlinestatic
template<typename BaseChannelSplittableInterfaceSubclass >
static SharedPtr<BaseChannelSplittableInterfaceSubclass> Tp::BaseChannelSplittableInterface::create ( )
inlinestatic
QVariantMap Tp::BaseChannelSplittableInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseChannelSplittableInterface::split ( )
void Tp::BaseChannelSplittableInterface::setSplitCallback ( const SplitCallback cb)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00552_source.html0000644000175100017520000001151312530426257022515 0ustar00kaffeinekaffeine00000000000000 account-capability-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
account-capability-filter.h
1 
23 #ifndef _TelepathyQt_account_capability_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_account_capability_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/GenericCapabilityFilter>
31 
32 namespace Tp
33 {
34 
36 
37 } // Tp
38 
39 #endif
GenericCapabilityFilter< Account > AccountCapabilityFilter
Definition: account-capability-filter.h:35
The GenericCapabilityFilter class provides a generic filter object to be used to filter objects by ca...
Definition: generic-capability-filter.h:38


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01084.html0000644000175100017520000002365512530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PresenceSpec Member List

This is the complete list of members for Tp::PresenceSpec, including all inherited members.

AllFlags enum valueTp::PresenceSpec
available(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
away(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
bareSpec() const Tp::PresenceSpec
brb(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
busy(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
CanHaveStatusMessage enum valueTp::PresenceSpec
canHaveStatusMessage() const Tp::PresenceSpec
chat(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
dnd(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
error(SimpleStatusFlags flags=CanHaveStatusMessage)Tp::PresenceSpecstatic
hidden(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
isValid() const Tp::PresenceSpecinline
MaySetOnSelf enum valueTp::PresenceSpec
maySetOnSelf() const Tp::PresenceSpec
NoFlags enum valueTp::PresenceSpec
offline(SimpleStatusFlags flags=CanHaveStatusMessage)Tp::PresenceSpecstatic
operator!=(const PresenceSpec &other) const Tp::PresenceSpec
operator<(const PresenceSpec &other) const Tp::PresenceSpec
operator=(const PresenceSpec &other)Tp::PresenceSpec
operator==(const PresenceSpec &other) const Tp::PresenceSpec
presence(const QString &statusMessage=QString()) const Tp::PresenceSpec
PresenceSpec()Tp::PresenceSpec
PresenceSpec(const QString &status, const SimpleStatusSpec &spec)Tp::PresenceSpec
PresenceSpec(const PresenceSpec &other)Tp::PresenceSpec
pstn(SimpleStatusFlags flags=CanHaveStatusMessage)Tp::PresenceSpecstatic
Q_DECLARE_FLAGS(SimpleStatusFlags, SimpleStatusFlag)Tp::PresenceSpec
SimpleStatusFlag enum nameTp::PresenceSpec
unknown(SimpleStatusFlags flags=CanHaveStatusMessage)Tp::PresenceSpecstatic
xa(SimpleStatusFlags flags=AllFlags)Tp::PresenceSpecstatic
~PresenceSpec()Tp::PresenceSpec


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00929.html0000644000175100017520000002360312530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelTextType Member List

This is the complete list of members for Tp::BaseChannelTextType, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
acknowledgePendingMessages(const Tp::UIntList &IDs, DBusError *error)Tp::BaseChannelTextTypeprotected
addReceivedMessage(const Tp::MessagePartList &message)Tp::BaseChannelTextType
BaseChannelTextType(BaseChannel *channel)Tp::BaseChannelTextTypeprotected
create(BaseChannel *channel)Tp::BaseChannelTextTypeinlinestatic
create(BaseChannel *channel)Tp::BaseChannelTextTypeinlinestatic
createChannelTp::BaseChannelTextType
CreateChannelCallback typedefTp::BaseChannelTextType
dbusObject() const Tp::AbstractDBusServiceInterface
ensureChannelTp::BaseChannelTextType
EnsureChannelCallback typedefTp::BaseChannelTextType
immutableProperties() const Tp::BaseChannelTextTypevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
MessageAcknowledgedCallback typedefTp::BaseChannelTextType
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
pendingMessages()Tp::BaseChannelTextType
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
requestableChannelClassesTp::BaseChannelTextType
setMessageAcknowledgedCallback(const MessageAcknowledgedCallback &cb)Tp::BaseChannelTextType
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelTextType()Tp::BaseChannelTextTypevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00428.html0000644000175100017520000003126512530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::PendingAccount Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingAccount Class Reference

The PendingAccount class represents the parameters of and the reply to an asynchronous account request. More...

#include <TelepathyQt/PendingAccount>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingAccount ()
 
AccountManagerPtr manager () const
 
AccountPtr account () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingAccount class represents the parameters of and the reply to an asynchronous account request.

Instances of this class cannot be constructed directly; the only way to get one is via AccountManager.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingAccount::~PendingAccount ( )

Class destructor.

Member Function Documentation

AccountManagerPtr Tp::PendingAccount::manager ( ) const

Return the account manager through which the request was made.

Returns
A pointer to the AccountManager object.
AccountPtr Tp::PendingAccount::account ( ) const

Return the newly created account.

Returns
A pointer to an Account object, or a null AccountPtr if an error occurred.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00182.html0000644000175100017520000040354112530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelFactory Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The ChannelFactory class is responsible for constructing Channel objects according to application-defined settings. More...

#include <TelepathyQt/ChannelFactory>

Inherits Tp::DBusProxyFactory.

Public Member Functions

virtual ~ChannelFactory ()
 
Features featuresForTextChats (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForTextChats (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForTextChats (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForTextChats (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForTextChats (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForTextChatrooms (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForTextChatrooms (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForTextChatrooms (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForTextChatrooms (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForTextChatrooms (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForCalls (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForCalls (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
template<typename Subclass >
void setSubclassForCalls (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForCalls (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForStreamedMediaCalls (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForStreamedMediaCalls (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForStreamedMediaCalls (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForStreamedMediaCalls (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForStreamedMediaCalls (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForRoomLists (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForRoomLists (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForRoomLists (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForRoomLists (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForRoomLists (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForOutgoingFileTransfers (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForOutgoingFileTransfers (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForOutgoingFileTransfers (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForOutgoingFileTransfers (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForOutgoingFileTransfers (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForIncomingFileTransfers (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForIncomingFileTransfers (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForIncomingFileTransfers (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForIncomingFileTransfers (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForIncomingFileTransfers (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForOutgoingStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForOutgoingStreamTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForOutgoingStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForOutgoingStreamTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForOutgoingStreamTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForIncomingStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForIncomingStreamTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForIncomingStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForIncomingStreamTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForIncomingStreamTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForOutgoingRoomStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForOutgoingRoomStreamTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForOutgoingRoomStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForOutgoingRoomStreamTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForOutgoingRoomStreamTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForIncomingRoomStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForIncomingRoomStreamTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForIncomingRoomStreamTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForIncomingRoomStreamTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForIncomingRoomStreamTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForOutgoingDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForOutgoingDBusTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForOutgoingDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForOutgoingDBusTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForOutgoingDBusTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForIncomingDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForIncomingDBusTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForIncomingDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForIncomingDBusTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForIncomingDBusTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForOutgoingRoomDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForOutgoingRoomDBusTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForOutgoingRoomDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForOutgoingRoomDBusTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForOutgoingRoomDBusTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForIncomingRoomDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForIncomingRoomDBusTubes (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForIncomingRoomDBusTubes (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForIncomingRoomDBusTubes (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForIncomingRoomDBusTubes (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForContactSearches (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForContactSearches (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForContactSearches (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForContactSearches (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForContactSearches (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features featuresForServerAuthentication (const QVariantMap &additionalProps=QVariantMap()) const
 
void addFeaturesForServerAuthentication (const Features &features, const QVariantMap &additionalProps=QVariantMap())
 
ConstructorConstPtr constructorForServerAuthentication (const QVariantMap &additionalProps=QVariantMap()) const
 
template<typename Subclass >
void setSubclassForServerAuthentication (const QVariantMap &additionalProps=QVariantMap())
 
void setConstructorForServerAuthentication (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap())
 
Features commonFeatures () const
 
void addCommonFeatures (const Features &features)
 
ConstructorConstPtr fallbackConstructor () const
 
template<typename Subclass >
void setFallbackSubclass ()
 
void setFallbackConstructor (const ConstructorConstPtr &ctor)
 
Features featuresFor (const ChannelClassSpec &channelClass) const
 
void addFeaturesFor (const ChannelClassSpec &channelClass, const Features &features)
 
template<typename Subclass >
void setSubclassFor (const ChannelClassSpec &channelClass)
 
ConstructorConstPtr constructorFor (const ChannelClassSpec &channelClass) const
 
void setConstructorFor (const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor)
 
PendingReadyproxy (const ConnectionPtr &connection, const QString &channelPath, const QVariantMap &immutableProperties) const
 
- Public Member Functions inherited from Tp::DBusProxyFactory
virtual ~DBusProxyFactory ()
 
const QDBusConnection & dbusConnection () const
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static ChannelFactoryPtr create (const QDBusConnection &bus)
 

Protected Member Functions

 ChannelFactory (const QDBusConnection &bus)
 
virtual QString finalBusNameFrom (const QString &uniqueOrWellKnown) const
 
virtual Features featuresFor (const DBusProxyPtr &proxy) const
 
- Protected Member Functions inherited from Tp::DBusProxyFactory
 DBusProxyFactory (const QDBusConnection &bus)
 
DBusProxyPtr cachedProxy (const QString &busName, const QString &objectPath) const
 
PendingReadynowHaveProxy (const DBusProxyPtr &proxy) const
 
virtual PendingOperationinitialPrepare (const DBusProxyPtr &proxy) const
 
virtual PendingOperationreadyPrepare (const DBusProxyPtr &proxy) const
 

Detailed Description

The ChannelFactory class is responsible for constructing Channel objects according to application-defined settings.

Constructor & Destructor Documentation

Tp::ChannelFactory::~ChannelFactory ( )
virtual

Class destructor.

Tp::ChannelFactory::ChannelFactory ( const QDBusConnection &  bus)
protected

Construct a new ChannelFactory object.

The constructed factory will construct channel subclasses provided by TelepathyQt as appropriate for the channel immutable properties, but not make any features ready.

Parameters
busThe QDBusConnection the proxies constructed using this factory should use.

Member Function Documentation

ChannelFactoryPtr Tp::ChannelFactory::create ( const QDBusConnection &  bus)
static

Create a new ChannelFactory object.

The returned factory will construct channel subclasses provided by TelepathyQt as appropriate for the channel immutable properties, but not make any features ready.

Parameters
busThe QDBusConnection the proxies constructed using this factory should use.
Returns
An ChannelFactoryPtr pointing to the newly created factory.
Features Tp::ChannelFactory::featuresForTextChats ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForTextChats ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForTextChats ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForTextChats ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForTextChats ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForTextChatrooms ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForTextChatrooms ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForTextChatrooms ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForTextChatrooms ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForTextChatrooms ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForCalls ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForCalls ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForCalls ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForCalls ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForStreamedMediaCalls ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForStreamedMediaCalls ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForStreamedMediaCalls ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForStreamedMediaCalls ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForStreamedMediaCalls ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForRoomLists ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForRoomLists ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForRoomLists ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForRoomLists ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForRoomLists ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForOutgoingFileTransfers ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForOutgoingFileTransfers ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForOutgoingFileTransfers ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForOutgoingFileTransfers ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForOutgoingFileTransfers ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForIncomingFileTransfers ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForIncomingFileTransfers ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForIncomingFileTransfers ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForIncomingFileTransfers ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForIncomingFileTransfers ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForOutgoingStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForOutgoingStreamTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForOutgoingStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForOutgoingStreamTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForOutgoingStreamTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForIncomingStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForIncomingStreamTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForIncomingStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForIncomingStreamTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForIncomingStreamTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForOutgoingRoomStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForOutgoingRoomStreamTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForOutgoingRoomStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForOutgoingRoomStreamTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForOutgoingRoomStreamTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForIncomingRoomStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForIncomingRoomStreamTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForIncomingRoomStreamTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForIncomingRoomStreamTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForIncomingRoomStreamTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForOutgoingDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForOutgoingDBusTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForOutgoingDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForOutgoingDBusTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForOutgoingDBusTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForIncomingDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForIncomingDBusTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForIncomingDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForIncomingDBusTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForIncomingDBusTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForOutgoingRoomDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForOutgoingRoomDBusTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForOutgoingRoomDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForOutgoingRoomDBusTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForOutgoingRoomDBusTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForIncomingRoomDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForIncomingRoomDBusTubes ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForIncomingRoomDBusTubes ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForIncomingRoomDBusTubes ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForIncomingRoomDBusTubes ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForContactSearches ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForContactSearches ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForContactSearches ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForContactSearches ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForContactSearches ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::featuresForServerAuthentication ( const QVariantMap &  additionalProps = QVariantMap()) const
void Tp::ChannelFactory::addFeaturesForServerAuthentication ( const Features features,
const QVariantMap &  additionalProps = QVariantMap() 
)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorForServerAuthentication ( const QVariantMap &  additionalProps = QVariantMap()) const
template<typename Subclass >
void Tp::ChannelFactory::setSubclassForServerAuthentication ( const QVariantMap &  additionalProps = QVariantMap())
inline
void Tp::ChannelFactory::setConstructorForServerAuthentication ( const ConstructorConstPtr &  ctor,
const QVariantMap &  additionalProps = QVariantMap() 
)
Features Tp::ChannelFactory::commonFeatures ( ) const
void Tp::ChannelFactory::addCommonFeatures ( const Features features)
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::fallbackConstructor ( ) const
template<typename Subclass >
void Tp::ChannelFactory::setFallbackSubclass ( )
inline
void Tp::ChannelFactory::setFallbackConstructor ( const ConstructorConstPtr &  ctor)
Features Tp::ChannelFactory::featuresFor ( const ChannelClassSpec channelClass) const
void Tp::ChannelFactory::addFeaturesFor ( const ChannelClassSpec channelClass,
const Features features 
)
template<typename Subclass >
void Tp::ChannelFactory::setSubclassFor ( const ChannelClassSpec channelClass)
inline
ChannelFactory::ConstructorConstPtr Tp::ChannelFactory::constructorFor ( const ChannelClassSpec channelClass) const
void Tp::ChannelFactory::setConstructorFor ( const ChannelClassSpec channelClass,
const ConstructorConstPtr &  ctor 
)
PendingReady * Tp::ChannelFactory::proxy ( const ConnectionPtr &  connection,
const QString &  channelPath,
const QVariantMap &  immutableProperties 
) const

Constructs a Channel proxy and begins making it ready.

If a valid proxy already exists in the factory cache for the given combination of busName and objectPath, it is returned instead. All newly created proxies are automatically cached until they're either DBusProxy::invalidated() or the last reference to them outside the factory has been dropped.

The proxy can be accessed immediately after this function returns using PendingReady::proxy().

Parameters
connectionProxy for the owning connection of the channel.
channelPathThe object path of the channel.
immutablePropertiesThe immutable properties of the channel.
Returns
A PendingReady operation with the proxy in PendingReady::proxy().
QString Tp::ChannelFactory::finalBusNameFrom ( const QString &  uniqueOrWellKnown) const
protectedvirtual

Transforms well-known names to the corresponding unique names, as is appropriate for Channel

Parameters
uniqueOrWellKnownThe name to transform.
Returns
The unique name corresponding to uniqueOrWellKnown (which may be it itself).

Implements Tp::DBusProxyFactory.

Features Tp::ChannelFactory::featuresFor ( const DBusProxyPtr &  proxy) const
protectedvirtual

Return features as configured for the channel class given by the Channel::immutableProperties() of proxy.

Parameters
proxyThe Channel proxy to determine the features for.
Returns
A list of Feature objects.

Implements Tp::DBusProxyFactory.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01143.html0000644000175100017520000000441212530426260021124 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelDetails Member List

This is the complete list of members for Tp::ChannelDetails, including all inherited members.

channelTp::ChannelDetails
propertiesTp::ChannelDetails


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00821_source.html0000644000175100017520000003224212530426257022516 0ustar00kaffeinekaffeine00000000000000 simple-call-observer.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
simple-call-observer.h
1 
23 #ifndef _TelepathyQt_simple_call_observer_h_HEADER_GUARD_
24 #define _TelepathyQt_simple_call_observer_h_HEADER_GUARD_
25 
26 #include <TelepathyQt/Constants>
27 #include <TelepathyQt/Types>
28 
29 #include <QObject>
30 
31 namespace Tp
32 {
33 
34 class PendingOperation;
35 
36 class TP_QT_EXPORT SimpleCallObserver : public QObject,
37  public RefCounted
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(SimpleCallObserver)
41  Q_FLAGS(CallDirection CallDirections)
42 
43 public:
45  CallDirectionIncoming = 0x01,
46  CallDirectionOutgoing = 0x02,
47  CallDirectionBoth = CallDirectionIncoming | CallDirectionOutgoing
48  };
49  Q_DECLARE_FLAGS(CallDirections, CallDirection)
50 
51  static SimpleCallObserverPtr create(const AccountPtr &account,
52  CallDirection direction = CallDirectionBoth);
53  static SimpleCallObserverPtr create(const AccountPtr &account,
54  const ContactPtr &contact,
55  CallDirection direction = CallDirectionBoth);
56  static SimpleCallObserverPtr create(const AccountPtr &account,
57  const QString &contactIdentifier,
58  CallDirection direction = CallDirectionBoth);
59 
60  virtual ~SimpleCallObserver();
61 
62  AccountPtr account() const;
63  QString contactIdentifier() const;
64  CallDirection direction() const;
65 
66  QList<CallChannelPtr> calls() const;
67  TP_QT_DEPRECATED QList<StreamedMediaChannelPtr> streamedMediaCalls() const;
68 
69 Q_SIGNALS:
70  void callStarted(const Tp::CallChannelPtr &channel);
71  void callEnded(const Tp::CallChannelPtr &channel,
72  const QString &errorName, const QString &errorMessage);
73 
74  void streamedMediaCallStarted(const Tp::StreamedMediaChannelPtr &channel);
75  void streamedMediaCallEnded(const Tp::StreamedMediaChannelPtr &channel,
76  const QString &errorName, const QString &errorMessage);
77 
78 private Q_SLOTS:
79  TP_QT_NO_EXPORT void onNewChannels(const QList<Tp::ChannelPtr> &channels);
80  TP_QT_NO_EXPORT void onChannelInvalidated(const Tp::ChannelPtr &channel,
81  const QString &errorName, const QString &errorMessage);
82 
83 private:
84  TP_QT_NO_EXPORT static SimpleCallObserverPtr create(
85  const AccountPtr &account,
86  const QString &contactIdentifier, bool requiresNormalization,
87  CallDirection direction);
88 
89  TP_QT_NO_EXPORT SimpleCallObserver(const AccountPtr &account,
90  const QString &contactIdentifier, bool requiresNormalization,
91  CallDirection direction);
92 
93  struct Private;
94  friend struct Private;
95  Private *mPriv;
96 };
97 
98 } // Tp
99 
100 #endif
The SimpleCallObserver class provides an easy way to track calls in an account and can be optionally ...
Definition: simple-call-observer.h:36
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
CallDirection
Definition: simple-call-observer.h:44


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00998.html0000644000175100017520000002023712530426260021150 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ConnectionFactory Member List

This is the complete list of members for Tp::ConnectionFactory, including all inherited members.

addFeature(const Feature &feature)Tp::FixedFeatureFactory
addFeatures(const Features &features)Tp::FixedFeatureFactory
cachedProxy(const QString &busName, const QString &objectPath) const Tp::DBusProxyFactoryprotected
ConnectionFactory(const QDBusConnection &bus, const Features &features)Tp::ConnectionFactoryprotected
construct(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const Tp::ConnectionFactoryprotectedvirtual
create(const QDBusConnection &bus, const Features &features=Features())Tp::ConnectionFactorystatic
dbusConnection() const Tp::DBusProxyFactory
DBusProxyFactory(const QDBusConnection &bus)Tp::DBusProxyFactoryprotected
features() const Tp::FixedFeatureFactory
featuresFor(const DBusProxyPtr &proxy) const Tp::FixedFeatureFactoryprotectedvirtual
finalBusNameFrom(const QString &uniqueOrWellKnown) const Tp::ConnectionFactoryprotectedvirtual
FixedFeatureFactory(const QDBusConnection &bus)Tp::FixedFeatureFactoryprotected
initialPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
nowHaveProxy(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotected
proxy(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const Tp::ConnectionFactory
readyPrepare(const DBusProxyPtr &proxy) const Tp::DBusProxyFactoryprotectedvirtual
RefCounted()Tp::RefCountedinline
~ConnectionFactory()Tp::ConnectionFactoryvirtual
~DBusProxyFactory()Tp::DBusProxyFactoryvirtual
~FixedFeatureFactory()Tp::FixedFeatureFactoryvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00497.html0000644000175100017520000017605712530426260021156 0ustar00kaffeinekaffeine00000000000000 Tp::RoomListChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The RoomListChannel class represents a Telepathy Channel of type RoomList. More...

#include <TelepathyQt/RoomListChannel>

Inherits Tp::Channel.

Public Member Functions

virtual ~RoomListChannel ()
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static RoomListChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Protected Member Functions

 RoomListChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=Channel::FeatureCore)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The RoomListChannel class represents a Telepathy Channel of type RoomList.

Note that this subclass of Channel will eventually provide a high-level API for the RoomList interface. Until then, it's just a Channel.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::RoomListChannel::~RoomListChannel ( )
virtual

Class destructor.

Tp::RoomListChannel::RoomListChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = Channel::FeatureCore 
)
protected

Construct a new RoomListChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should should depend on Channel::FeatureCore.

Member Function Documentation

RoomListChannelPtr Tp::RoomListChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new RoomListChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A RoomListChannelPtr object pointing to the newly created RoomListChannel object.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00241.html0000644000175100017520000003632112530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeRoomListAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeRoomListAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

bool GetListingRooms (const QDBusMessage &dbusMessage)
 
void ListRooms (const QDBusMessage &dbusMessage)
 
void StopListing (const QDBusMessage &dbusMessage)
 

Signals

void GotRooms (const Tp::RoomInfoList &rooms)
 
void ListingRooms (bool listing)
 

Public Member Functions

QString Server () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelTypeRoomListAdaptor::Server ( ) const

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

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

For protocols with a concept of chatrooms on multiple servers with different DNS names (like XMPP), the DNS name of the server whose rooms are listed by this channel, e.g. "conference.jabber.org". Otherwise, the empty string. This property cannot change during the lifetime of the channel.

Returns
The value of exported property Server.
bool Tp::Service::ChannelTypeRoomListAdaptor::GetListingRooms ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getListingRooms(const Tp::Service::ChannelTypeRoomListAdaptor::GetListingRoomsContextPtr &context);

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

Check to see if there is already a room list request in progress on this channel.

Returns
A boolean indicating if room listing is in progress
void Tp::Service::ChannelTypeRoomListAdaptor::ListRooms ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void listRooms(const Tp::Service::ChannelTypeRoomListAdaptor::ListRoomsContextPtr &context);

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

Request the list of rooms from the server. The ListingRooms (True) signal should be emitted when this request is being processed, GotRooms when any room information is received, and ListingRooms (False) when the request is complete.

void Tp::Service::ChannelTypeRoomListAdaptor::StopListing ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void stopListing(const Tp::Service::ChannelTypeRoomListAdaptor::StopListingContextPtr &context);

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

Stop the room listing if it's in progress, but don't close the channel. The ListingRooms (False) signal should be emitted when the listing stops.

void Tp::Service::ChannelTypeRoomListAdaptor::GotRooms ( const Tp::RoomInfoList rooms)
signal

Represents the exported D-Bus signal GotRooms on this object.

Adaptees should export this signal as a Qt signal with the following signature: void gotRooms(const Tp::RoomInfoList& rooms);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
rooms An array of structs containing:
  • an integer room handle
  • a string representing the D-Bus interface name of the channel type
  • a dictionary mapping string keys to variant boxed information
void Tp::Service::ChannelTypeRoomListAdaptor::ListingRooms ( bool  listing)
signal

Represents the exported D-Bus signal ListingRooms on this object.

Adaptees should export this signal as a Qt signal with the following signature: void listingRooms(bool listing);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
listing
A boolean indicating if room listing is in progress


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01202.html0000644000175100017520000000443012530426260021120 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StreamCredentials Member List

This is the complete list of members for Tp::StreamCredentials, including all inherited members.

passwordTp::StreamCredentials
usernameTp::StreamCredentials


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/telepathy-qt.tags0000644000175100017520000765700512530426257022757 0ustar00kaffeinekaffeine00000000000000 async_model Asynchronous Object Model a00002 async_model_overview callbacks Callbacks Usage a00004 callbacks_overview accounts_example Accounts Example a00006 accounts_example_account_item_cpp accounts/account-item.cpp a00008 accounts_example_account_item_h accounts/account-item.h a00010 accounts_example_accounts_window_cpp accounts/accounts-window.cpp a00012 accounts_example_accounts_window_h accounts/accounts-window.h a00014 accounts_example_main accounts/main.cpp a00016 contact_messenger_example Contact Messenger Example a00018 contact_messenger_example_sender_cpp contact-messenger/sender.cpp a00020 contact_messenger_example_sender_h contact-messenger/sender.h a00022 protocols_example Protocols Example a00024 protocols_example_main protocols/main.cpp a00026 protocols_example_cm_wrapper_cpp protocols/cm-wrapper.cpp a00028 protocols_example_cm_wrapper_h protocols/cm-wrapper.h a00030 protocols_example_protocols_cpp protocols/protocols.cpp a00032 protocols_example_protocols_h protocols/protocols.h a00034 roster_example Roster Example a00036 roster_example_main roster/main.cpp a00038 roster_example_roster_item_cpp roster/roster-item.cpp a00040 roster_example_roster_item_h roster/roster-item.h a00042 roster_example_roster_widget_cpp roster/roster-widget.cpp a00044 roster_example_roster_widget_h roster/roster-widget.h a00046 roster_example_roster_window_cpp roster/roster-window.cpp a00048 roster_example_roster_window_h roster/roster-window.h a00050 installation Installation a00052 installation_from_source installation_from_source_requirements installation_from_source_building bugreport How to report a bug a00054 mailing_lists Mailing Lists a00056 shared_ptr Shared Pointer Usage a00058 shared_ptr_overview utilityconsts Utility string constants a00870.html #define TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE a00870.html gad12ac04a69dad205b4ac1db5c3616e02 #define TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE a00870.html ga82bacf2c11c46ac8465466b49c7c4dc4 #define TP_QT_CONNECTION_BUS_NAME_BASE a00870.html gafce46e0293e8b8ed0cb49cc06fb52fdc #define TP_QT_CONNECTION_OBJECT_PATH_BASE a00870.html gafcafb3bcb597ecccc003fc8ce9a2a957 #define TP_QT_ACCOUNT_MANAGER_BUS_NAME a00870.html gafcfe2ea4e82d229999b3876ba06fe4a4 #define TP_QT_ACCOUNT_MANAGER_OBJECT_PATH a00870.html gaa3e702c9e58f1e0ed3cd8e0cabd38c73 #define TP_QT_CHANNEL_DISPATCHER_BUS_NAME a00870.html gab4b745a5d2743ff9f18d3c3ebefef533 #define TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH a00870.html gabdc46f5d6c775103cde2c1e076161453 #define TP_QT_ACCOUNT_OBJECT_PATH_BASE a00870.html gaa4aaa603a4454417a9e2ff8813f83fc5 #define TP_QT_DEBUG_OBJECT_PATH a00870.html gaf6f886e1183c0cc4d7cbaf6744a719e7 clientdbus Generic D-Bus proxies a00871.html Tp::Client::DBus::DBusDaemonInterface Tp::Client::DBus::IntrospectableInterface Tp::Client::DBus::PeerInterface Tp::Client::DBus::PropertiesInterface debug Common debug support a00872.html void(* DebugCallback a00872.html gac649008aad1016daf386c45e214de63b )(const QString &libraryName, const QString &libraryVersion, QtMsgType type, const QString &msg) void enableDebug a00872.html ga52cbf229d908f8ea516b53f074e44241 (bool enable) void enableWarnings a00872.html ga7cc429d87fa4d829de26cd835cc005d3 (bool enable) void setDebugCallback a00872.html ga04ff12f8b086a5373b4c12853388e791 (DebugCallback cb) clientsideproxies Client-side proxies a00873.html clientdbus clientaccount clientam clientchannel clientchanneldispatcher clientchanneldispatchoperation clientchannelrequest clientclient clientcm clientconn clientmsesh clientmstrh clientprops Tp::AbstractInterface Tp::DebugReceiver Tp::OptionalInterfaceFactory clientaccount Account proxies a00874.html Tp::AccountSet Tp::Account Tp::ContactMessenger Tp::PendingAccount Tp::Client::AccountInterface Tp::Client::AccountInterfaceAddressingInterface Tp::Client::AccountInterfaceAvatarInterface Tp::Client::AccountInterfaceStorageInterface clientam Account manager proxies a00875.html Tp::AccountManager Tp::Client::AccountManagerInterface clientchannel Channel proxies a00876.html Tp::CallChannel Tp::CallContent Tp::CallStream Tp::CaptchaAuthentication Tp::Channel::GroupMemberChangeDetails Tp::Channel Tp::ContactSearchChannel Tp::DBusTubeChannel Tp::FileTransferChannelCreationProperties Tp::FileTransferChannel Tp::HandledChannelNotifier Tp::IncomingDBusTubeChannel Tp::IncomingFileTransferChannel Tp::IncomingStreamTubeChannel Tp::Message Tp::ReceivedMessage Tp::ReceivedMessage::DeliveryDetails Tp::OutgoingDBusTubeChannel Tp::OutgoingFileTransferChannel Tp::OutgoingStreamTubeChannel Tp::PendingChannel Tp::PendingDBusTubeConnection Tp::PendingSendMessage Tp::PendingStreamTubeConnection Tp::RoomListChannel Tp::ServerAuthenticationChannel Tp::StreamTubeChannel Tp::PendingStreamedMediaStreams Tp::StreamedMediaStream Tp::StreamedMediaChannel Tp::TextChannel Tp::TubeChannel Tp::Client::ChannelInterface Tp::Client::ChannelInterfaceAnonymityInterface Tp::Client::ChannelInterfaceCallStateInterface Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface Tp::Client::ChannelInterfaceChatStateInterface Tp::Client::ChannelInterfaceConferenceInterface Tp::Client::ChannelInterfaceDTMFInterface Tp::Client::ChannelInterfaceDestroyableInterface Tp::Client::ChannelInterfaceFileTransferMetadataInterface Tp::Client::ChannelInterfaceGroupInterface Tp::Client::ChannelInterfaceHoldInterface Tp::Client::ChannelInterfaceMediaSignallingInterface Tp::Client::ChannelInterfaceMessagesInterface Tp::Client::ChannelInterfacePasswordInterface Tp::Client::ChannelInterfaceRoomConfigInterface Tp::Client::ChannelInterfaceRoomInterface Tp::Client::ChannelInterfaceSASLAuthenticationInterface Tp::Client::ChannelInterfaceSMSInterface Tp::Client::ChannelInterfaceSecurableInterface Tp::Client::ChannelInterfaceServicePointInterface Tp::Client::ChannelInterfaceSubjectInterface Tp::Client::ChannelInterfaceTubeInterface Tp::Client::ChannelTypeCallInterface Tp::Client::ChannelTypeContactListInterface Tp::Client::ChannelTypeContactSearchInterface Tp::Client::ChannelTypeDBusTubeInterface Tp::Client::ChannelTypeFileTransferInterface Tp::Client::ChannelTypeRoomListInterface Tp::Client::ChannelTypeServerAuthenticationInterface Tp::Client::ChannelTypeServerTLSConnectionInterface Tp::Client::ChannelTypeStreamTubeInterface Tp::Client::ChannelTypeStreamedMediaInterface Tp::Client::ChannelTypeTextInterface Tp::Client::ChannelTypeTubesInterface clientchanneldispatcher ChannelDispatcher proxies a00877.html Tp::Client::ChannelDispatcherInterface Tp::Client::ChannelDispatcherInterfaceMessages1Interface clientchanneldispatchoperation ChannelDispatchOperation proxies a00878.html Tp::ChannelDispatchOperation Tp::Client::ChannelDispatchOperationInterface clientchannelrequest ChannelRequest proxies a00879.html Tp::ChannelRequest Tp::ChannelRequestHints Tp::PendingChannelRequest Tp::Client::ChannelRequestInterface clientclient Client proxies a00880.html Tp::AbstractClient Tp::AbstractClientObserver Tp::AbstractClientObserver::ObserverInfo Tp::AbstractClientApprover Tp::AbstractClientHandler Tp::AbstractClientHandler::Capabilities Tp::AbstractClientHandler::HandlerInfo Tp::Client::ClientInterface Tp::Client::ClientApproverInterface Tp::Client::ClientHandlerInterface Tp::Client::ClientInterfaceRequestsInterface Tp::Client::ClientObserverInterface clientcm Connection manager proxies a00881.html Tp::ConnectionManagerLowlevel Tp::ConnectionManager Tp::ProtocolInfo Tp::ProtocolParameter Tp::Client::ConnectionManagerInterface Tp::Client::ProtocolInterface Tp::Client::ProtocolInterfaceAddressingInterface Tp::Client::ProtocolInterfaceAvatarsInterface Tp::Client::ProtocolInterfacePresenceInterface clientconn Connection proxies a00882.html Tp::CapabilitiesBase Tp::ConnectionCapabilities Tp::ConnectionLowlevel Tp::Connection Tp::Connection::ErrorDetails Tp::ContactCapabilities Tp::ContactManager Tp::Contact::InfoFields Tp::Contact Tp::LocationInfo Tp::PendingConnection Tp::PendingContactAttributes Tp::PendingContactInfo Tp::PendingContacts Tp::PendingHandles Tp::ReferencedHandles Tp::Client::ConnectionInterface Tp::Client::ConnectionInterfaceAddressingInterface Tp::Client::ConnectionInterfaceAliasingInterface Tp::Client::ConnectionInterfaceAnonymityInterface Tp::Client::ConnectionInterfaceAvatarsInterface Tp::Client::ConnectionInterfaceBalanceInterface Tp::Client::ConnectionInterfaceCapabilitiesInterface Tp::Client::ConnectionInterfaceCellularInterface Tp::Client::ConnectionInterfaceClientTypesInterface Tp::Client::ConnectionInterfaceContactBlockingInterface Tp::Client::ConnectionInterfaceContactCapabilitiesInterface Tp::Client::ConnectionInterfaceContactGroupsInterface Tp::Client::ConnectionInterfaceContactInfoInterface Tp::Client::ConnectionInterfaceContactListInterface Tp::Client::ConnectionInterfaceContactsInterface Tp::Client::ConnectionInterfaceLocationInterface Tp::Client::ConnectionInterfaceMailNotificationInterface Tp::Client::ConnectionInterfacePowerSavingInterface Tp::Client::ConnectionInterfacePresenceInterface Tp::Client::ConnectionInterfaceRequestsInterface Tp::Client::ConnectionInterfaceServicePointInterface Tp::Client::ConnectionInterfaceSimplePresenceInterface servicesideimpl Service-side implementation a00883.html servicechannel servicecm serviceconn Tp::AbstractAdaptor Tp::DBusError Tp::DBusObject Tp::DBusService Tp::AbstractDBusServiceInterface servicechannel Channel service implementation a00884.html Tp::Service::ChannelAdaptor Tp::Service::ChannelInterfaceAnonymityAdaptor Tp::Service::ChannelInterfaceCallStateAdaptor Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor Tp::Service::ChannelInterfaceChatStateAdaptor Tp::Service::ChannelInterfaceConferenceAdaptor Tp::Service::ChannelInterfaceDTMFAdaptor Tp::Service::ChannelInterfaceDestroyableAdaptor Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor Tp::Service::ChannelInterfaceGroupAdaptor Tp::Service::ChannelInterfaceHoldAdaptor Tp::Service::ChannelInterfaceMediaSignallingAdaptor Tp::Service::ChannelInterfaceMergeableConferenceAdaptor Tp::Service::ChannelInterfaceMessagesAdaptor Tp::Service::ChannelInterfacePasswordAdaptor Tp::Service::ChannelInterfaceRoomAdaptor Tp::Service::ChannelInterfaceRoomConfigAdaptor Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor Tp::Service::ChannelInterfaceSMSAdaptor Tp::Service::ChannelInterfaceSecurableAdaptor Tp::Service::ChannelInterfaceServicePointAdaptor Tp::Service::ChannelInterfaceSplittableAdaptor Tp::Service::ChannelInterfaceSubjectAdaptor Tp::Service::ChannelTypeCallAdaptor Tp::Service::ChannelTypeContactSearchAdaptor Tp::Service::ChannelTypeDBusTubeAdaptor Tp::Service::ChannelTypeFileTransferAdaptor Tp::Service::ChannelTypeRoomListAdaptor Tp::Service::ChannelTypeServerAuthenticationAdaptor Tp::Service::ChannelTypeServerTLSConnectionAdaptor Tp::Service::ChannelTypeStreamTubeAdaptor Tp::Service::ChannelTypeStreamedMediaAdaptor Tp::Service::ChannelTypeTextAdaptor servicecm Connection manager service implementation a00885.html Tp::AbstractCallContentInterface Tp::BaseCallMuteInterface Tp::BaseCallContentDTMFInterface Tp::BaseChannel Tp::AbstractChannelInterface Tp::BaseChannelTextType Tp::BaseChannelMessagesInterface Tp::BaseChannelRoomListType Tp::BaseChannelServerAuthenticationType Tp::BaseChannelCaptchaAuthenticationInterface Tp::BaseChannelSASLAuthenticationInterface Tp::BaseChannelSecurableInterface Tp::BaseChannelChatStateInterface Tp::BaseChannelGroupInterface Tp::BaseChannelRoomInterface Tp::BaseChannelRoomConfigInterface Tp::BaseChannelCallType Tp::BaseChannelHoldInterface Tp::BaseChannelMergeableConferenceInterface Tp::BaseChannelSplittableInterface Tp::BaseChannelConferenceInterface Tp::BaseChannelSMSInterface Tp::BaseConnectionManager Tp::AbstractConnectionInterface Tp::BaseConnectionRequestsInterface Tp::BaseConnectionContactsInterface Tp::BaseConnectionSimplePresenceInterface Tp::BaseConnectionContactListInterface Tp::BaseConnectionContactInfoInterface Tp::BaseConnectionAddressingInterface Tp::BaseConnectionAliasingInterface Tp::BaseConnectionAvatarsInterface Tp::BaseProtocol Tp::AbstractProtocolInterface Tp::BaseProtocolAddressingInterface Tp::BaseProtocolAvatarsInterface Tp::BaseProtocolPresenceInterface Tp::Service::ConnectionManagerAdaptor Tp::Service::ProtocolAdaptor Tp::Service::ProtocolInterfaceAddressingAdaptor Tp::Service::ProtocolInterfaceAvatarsAdaptor Tp::Service::ProtocolInterfacePresenceAdaptor serviceconn Connection service implementation a00886.html Tp::BaseConnection Tp::Service::ConnectionAdaptor Tp::Service::ConnectionInterfaceAddressingAdaptor Tp::Service::ConnectionInterfaceAliasingAdaptor Tp::Service::ConnectionInterfaceAnonymityAdaptor Tp::Service::ConnectionInterfaceAvatarsAdaptor Tp::Service::ConnectionInterfaceBalanceAdaptor Tp::Service::ConnectionInterfaceCellularAdaptor Tp::Service::ConnectionInterfaceClientTypesAdaptor Tp::Service::ConnectionInterfaceContactBlockingAdaptor Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor Tp::Service::ConnectionInterfaceContactGroupsAdaptor Tp::Service::ConnectionInterfaceContactInfoAdaptor Tp::Service::ConnectionInterfaceContactListAdaptor Tp::Service::ConnectionInterfaceContactsAdaptor Tp::Service::ConnectionInterfaceLocationAdaptor Tp::Service::ConnectionInterfaceMailNotificationAdaptor Tp::Service::ConnectionInterfacePowerSavingAdaptor Tp::Service::ConnectionInterfaceRequestsAdaptor Tp::Service::ConnectionInterfaceServicePointAdaptor Tp::Service::ConnectionInterfaceSimplePresenceAdaptor wrappers Wrapper classes a00887.html Tp::AvatarData Tp::AvatarSpec Tp::ChannelClassSpec Tp::ChannelClassSpecList Tp::ContactSearchChannel::SearchStateChangeDetails Tp::MessageContentPart Tp::MessageContentPartList Tp::Presence Tp::PresenceSpec Tp::PresenceSpecList Tp::RequestableChannelClassSpec Tp::RequestableChannelClassSpecList utils Utililty classes a00888.html Tp::AccountCapabilityFilter Tp::AccountFactory Tp::AccountPropertyFilter Tp::AndFilter Tp::BaseCallback Tp::Callback0 Tp::Callback1 Tp::Callback2 Tp::Callback3 Tp::Callback4 Tp::Callback5 Tp::Callback6 Tp::Callback7 Tp::ChannelFactory Tp::ConnectionFactory Tp::ContactFactory Tp::DBusProxyFactory Tp::Feature Tp::Features Tp::Filter Tp::FixedFeatureFactory Tp::GenericCapabilityFilter Tp::GenericPropertyFilter Tp::MethodInvocationContext Tp::NotFilter Tp::OrFilter Tp::PendingSuccess Tp::PendingFailure Tp::PendingVoid Tp::PendingComposite Tp::PendingReady Tp::PendingStringList Tp::PendingString Tp::PendingVariantMap Tp::PendingVariant Tp::Profile Tp::Profile::Parameter Tp::Profile::Presence Tp::ReadinessHelper Tp::ReadinessHelper::Introspectable Tp::RefCounted Tp::SharedPtr Tp::WeakPtr Tp::SimpleCallObserver Tp::SimpleObserver Tp::SimpleTextObserver clientmsesh Media session handler proxies a00889.html Tp::Client::MediaSessionHandlerInterface clientmstrh Media stream handler proxies a00890.html Tp::Client::MediaStreamHandlerInterface clientprops Telepathy Properties proxy a00891.html Tp::Client::PropertiesInterfaceInterface utility functions a00892.html flagtypeconsts Flag type constants a00893.html QFlags< ConnMgrParamFlag > ConnMgrParamFlags a00893.html ga1ec95e0e8a60f6e9fcff6c0e5f6d1d2d QFlags< ConnectionAliasFlag > ConnectionAliasFlags a00893.html gae209ab8dc8dfb0cdb18dde803abb1ecc QFlags< AnonymityMode > AnonymityModeFlags a00893.html ga5a62d572ef4b37d2c530e82d1a343fda QFlags< ConnectionCapabilityFlag > ConnectionCapabilityFlags a00893.html ga69e0ae4c578de4e8281c66d56725800f QFlags< ContactBlockingCapability > ContactBlockingCapabilities a00893.html ga74e90ca71966332843fb6151dced4c49 QFlags< ContactInfoFlag > ContactInfoFlags a00893.html ga058b4ea8ec38721f3f2d6c5f90969365 QFlags< ContactInfoFieldFlag > ContactInfoFieldFlags a00893.html ga382ba0240f67164dac0738216da6e64d QFlags< LocationFeature > LocationFeatures a00893.html ga8a6cdfccfaf1954767c3274fc539162f QFlags< MailNotificationFlag > MailNotificationFlags a00893.html gafd6ee67fbf03013403438de823c5d18f QFlags< CallFlag > CallFlags a00893.html ga23879924993c4e2383bad817f3bdf5e1 QFlags< CallMemberFlag > CallMemberFlags a00893.html ga6c3e650fcbac033703069c8762664118 QFlags< MediaStreamPending > MediaStreamPendingSend a00893.html ga81e5288410135f5ab84ca9d59dbca988 QFlags< ChannelMediaCapability > ChannelMediaCapabilities a00893.html gaa68e46bf2d2ce86778a7a91e507da2fd QFlags< ChannelTextMessageFlag > ChannelTextMessageFlags a00893.html ga2db541b9a0efb3c9f3831ad6e7a6924b QFlags< CaptchaFlag > CaptchaFlags a00893.html ga28d990842d23b3d1dac39c23f7252cb5 QFlags< ChannelCallState > ChannelCallStateFlags a00893.html gae23e253bc21e75878c9cbbc5a305bbf6 QFlags< ChannelGroupFlag > ChannelGroupFlags a00893.html ga2aa3d302db1664feb0dd960eab27ed52 QFlags< MessagePartSupportFlag > MessagePartSupportFlags a00893.html ga4bfff302b6b5d81554686d23babad276 QFlags< MessageSendingFlag > MessageSendingFlags a00893.html ga0cc93486e0bc233331ea4e8ba512ae0b QFlags< DeliveryReportingSupportFlag > DeliveryReportingSupportFlags a00893.html gac53c2806bb9e28f40fa80b6b0596986e QFlags< ChannelPasswordFlag > ChannelPasswordFlags a00893.html ga601f54a29430f1ea82a421a1ba5b470b QFlags< PropertyFlag > PropertyFlags a00893.html ga932aabdf9cf257497afdfe4d88f9bb72 QFlags< StorageRestrictionFlag > StorageRestrictionFlags a00893.html ga435da029c381cecf7511ae963554ff77 QFlags< RTCPXRStatisticsFlag > RTCPXRStatisticsFlags a00893.html gad27cbc06add91c8b90463be0616ff32c ConnMgrParamFlag a00893.html ga5cb2fa9d056d53a2942394c5b13dafe7 @ ConnMgrParamFlagRequired a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a7b7151e5c5f6c582dd4a5782a2b21ce1 @ ConnMgrParamFlagRegister a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a1fc8a43025d60fddc2de0d5f03c4be65 @ ConnMgrParamFlagHasDefault a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a5c90d0a9a3fc1d64081ad614af8ed978 @ ConnMgrParamFlagSecret a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a1d8f731dd2f9cbeb5e11a3e16d1a5d7b @ ConnMgrParamFlagDBusProperty a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7ac02602299e89100fa0e1f4b855140691 @ _ConnMgrParamFlagPadding a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a5e922734230292cb238220301b828839 ConnectionAliasFlag a00893.html gaef4f6c211ed67dac662bf64736ed207a @ ConnectionAliasFlagUserSet a00893.html ggaef4f6c211ed67dac662bf64736ed207aa74605a2a62fc83950d2b3f7143a72d79 @ _ConnectionAliasFlagPadding a00893.html ggaef4f6c211ed67dac662bf64736ed207aaebe67dcae258f069cb01993d254648bd AnonymityMode a00893.html ga757256bafd010c153333986e415a205e @ AnonymityModeClientInfo a00893.html gga757256bafd010c153333986e415a205ea1d1114e10218b5232108fecad35864ce @ AnonymityModeShowClientInfo a00893.html gga757256bafd010c153333986e415a205ea2a5ee09100d2ddaefbe47a36739c75b7 @ AnonymityModeNetworkInfo a00893.html gga757256bafd010c153333986e415a205eab4ff0e3e79327d08a0693add72928046 @ _AnonymityModePadding a00893.html gga757256bafd010c153333986e415a205ea997db8140fc8f0e2106f16403e37de66 ConnectionCapabilityFlag a00893.html ga2bfda5e1b7b0e582dcc4beafbc686e2f @ ConnectionCapabilityFlagCreate a00893.html gga2bfda5e1b7b0e582dcc4beafbc686e2fabcba0674619a6c92d98af8a73a7991b6 @ ConnectionCapabilityFlagInvite a00893.html gga2bfda5e1b7b0e582dcc4beafbc686e2fa2dfbb9b4870dddedf50b96eaa005a625 @ _ConnectionCapabilityFlagPadding a00893.html gga2bfda5e1b7b0e582dcc4beafbc686e2faa90c051bc5b9c252725695aee9cfcfb8 ContactBlockingCapability a00893.html ga5ff0e407360d15b72ed8db5039e393cd @ ContactBlockingCapabilityCanReportAbusive a00893.html gga5ff0e407360d15b72ed8db5039e393cda33ed07dda4bde02f3c31f52e139ecc27 @ _ContactBlockingCapabilityPadding a00893.html gga5ff0e407360d15b72ed8db5039e393cda83cd5558884f307f1473c2c13f3e797f ContactInfoFlag a00893.html ga8fd6152ac8664f7043f597a958c33cb1 @ ContactInfoFlagCanSet a00893.html gga8fd6152ac8664f7043f597a958c33cb1a432131938b4cf72de980ceeab3f7f957 @ ContactInfoFlagPush a00893.html gga8fd6152ac8664f7043f597a958c33cb1a826fbdd18b10cc3f43a56460b71c8818 @ _ContactInfoFlagPadding a00893.html gga8fd6152ac8664f7043f597a958c33cb1a6bece6d34725fe3511a49b7285a66882 ContactInfoFieldFlag a00893.html ga74c105177c0b1e57474fd8e04f15d4d9 @ ContactInfoFieldFlagParametersExact a00893.html gga74c105177c0b1e57474fd8e04f15d4d9af61eec02c35ad02d6e7fea102a78fbee @ ContactInfoFieldFlagOverwrittenByNickname a00893.html gga74c105177c0b1e57474fd8e04f15d4d9a289de4147a75f0f15a94933174f00523 @ _ContactInfoFieldFlagPadding a00893.html gga74c105177c0b1e57474fd8e04f15d4d9aa56f65d632572391aeefaa006ea72fee LocationFeature a00893.html gaa527b9338d1b405122e98454f7e3b569 @ LocationFeatureCanSet a00893.html ggaa527b9338d1b405122e98454f7e3b569a33d3fc47ceee2e5541a4012d53abaa73 @ _LocationFeaturePadding a00893.html ggaa527b9338d1b405122e98454f7e3b569a142730992e5819ee562c743023aac8ee MailNotificationFlag a00893.html ga21317c6c96d4875d8ca7618ef7b39183 @ MailNotificationFlagSupportsUnreadMailCount a00893.html gga21317c6c96d4875d8ca7618ef7b39183a453639b6a753438c7b599c4f2d4b0b37 @ MailNotificationFlagSupportsUnreadMails a00893.html gga21317c6c96d4875d8ca7618ef7b39183aa0f7bb1c1918579815c589c8b87e5d9c @ MailNotificationFlagEmitsMailsReceived a00893.html gga21317c6c96d4875d8ca7618ef7b39183a47dae26c23dd0d6c0afeb0eb28879d6b @ MailNotificationFlagSupportsRequestInboxURL a00893.html gga21317c6c96d4875d8ca7618ef7b39183a6c525f4f23305b3939c2a1e0e1527c7a @ MailNotificationFlagSupportsRequestMailURL a00893.html gga21317c6c96d4875d8ca7618ef7b39183af09af0f14fbfa7ea02ef8db7c55f940d @ MailNotificationFlagThreadBased a00893.html gga21317c6c96d4875d8ca7618ef7b39183a11f770f71ed06eb3590090af16694e1a @ _MailNotificationFlagPadding a00893.html gga21317c6c96d4875d8ca7618ef7b39183ad74fdc6915917e2296a0854b17ca91fd CallFlag a00893.html gaf0ca6541c128e8636355db618bb8905c @ CallFlagLocallyHeld a00893.html ggaf0ca6541c128e8636355db618bb8905ca9b81f2c41e19987c015dea9f0db87cc3 @ CallFlagLocallyRinging a00893.html ggaf0ca6541c128e8636355db618bb8905ca77d51bde51748bc257b157d7f3a121dd @ CallFlagLocallyQueued a00893.html ggaf0ca6541c128e8636355db618bb8905cae83382836bc4502185536e92dce46cf4 @ CallFlagForwarded a00893.html ggaf0ca6541c128e8636355db618bb8905ca8b480e748569900593f38e9577978112 @ CallFlagClearing a00893.html ggaf0ca6541c128e8636355db618bb8905cac5d43644a005f65a9a705538b40257d4 @ _CallFlagPadding a00893.html ggaf0ca6541c128e8636355db618bb8905cab61c9a6b9f086aa174a69eab71931ed5 CallMemberFlag a00893.html ga750486dca75cdd08fe07242049bc863d @ CallMemberFlagRinging a00893.html gga750486dca75cdd08fe07242049bc863daca1fc71e62aef7e332544effc860a6d1 @ CallMemberFlagHeld a00893.html gga750486dca75cdd08fe07242049bc863dab53f9525e96e76aac774d6a9ca46fc16 @ CallMemberFlagConferenceHost a00893.html gga750486dca75cdd08fe07242049bc863da99315403fd65c373bdda55def1697153 @ _CallMemberFlagPadding a00893.html gga750486dca75cdd08fe07242049bc863da27246b7da2ca2ba35faa9399e5bc1d99 MediaStreamPending a00893.html gabf9a12dd89a5a502270bf18fd1cca47d @ MediaStreamPendingLocalSend a00893.html ggabf9a12dd89a5a502270bf18fd1cca47dab6f964a0b18c3cf5bd8fa3389fd84403 @ MediaStreamPendingRemoteSend a00893.html ggabf9a12dd89a5a502270bf18fd1cca47dad226bd2a7c98d02406ff1b4a56d724cf @ _MediaStreamPendingPadding a00893.html ggabf9a12dd89a5a502270bf18fd1cca47da5060120b4d5ab6cc272654a506f647a5 ChannelMediaCapability a00893.html gabacbce0da0a9ffbdcf61b486fb228296 @ ChannelMediaCapabilityAudio a00893.html ggabacbce0da0a9ffbdcf61b486fb228296ae258062ae67379e51857f8f67883f2d9 @ ChannelMediaCapabilityVideo a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a0046934ca06adeffcba8f8e8ff8e9eb5 @ ChannelMediaCapabilityNATTraversalSTUN a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a83d15a00008eaf4d8bb5ae09786c779f @ ChannelMediaCapabilityNATTraversalGTalkP2P a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a83be87a1c5b327eb98df027672952bd8 @ ChannelMediaCapabilityNATTraversalICEUDP a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a7ce46ce2b6b4a8bb8d73edf9807af9ea @ ChannelMediaCapabilityImmutableStreams a00893.html ggabacbce0da0a9ffbdcf61b486fb228296abaa2e098339493d9f42694453287397d @ _ChannelMediaCapabilityPadding a00893.html ggabacbce0da0a9ffbdcf61b486fb228296aff3cfd5112e2d2679d4801e9ccd6313f ChannelTextMessageFlag a00893.html ga0712fe4009ffbcb6b49e99fe47af4ce6 @ ChannelTextMessageFlagTruncated a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6af42f7c5d364574ad92204e4dcaa23965 @ ChannelTextMessageFlagNonTextContent a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6aeb0dbeba04a987d64e11af3aae3c8f79 @ ChannelTextMessageFlagScrollback a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6a73bd1335bafc306e7220cc57652414cb @ ChannelTextMessageFlagRescued a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6a09e726755fbfae4bba9dd5b95ccd4015 @ _ChannelTextMessageFlagPadding a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6a3e7936efcdcbf252dee6d01d4ce3fa6e CaptchaFlag a00893.html ga6a04590391bb361bc1c47e22571d81fa @ CaptchaFlagRequired a00893.html gga6a04590391bb361bc1c47e22571d81faaf8112f78c092b2e6eda2c7c9b782b612 @ _CaptchaFlagPadding a00893.html gga6a04590391bb361bc1c47e22571d81faa70f5bb9ba2f8ee35bca58b2d8751cdcc ChannelCallState a00893.html gac0a5e07b6cb83e50403bb971a60f45bf @ ChannelCallStateRinging a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa85542f90092584b3eec097e349394d0c @ ChannelCallStateQueued a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa0e00c1ca7a35c65138551d15280df63c @ ChannelCallStateHeld a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfafca34a52d14e2d721a1fb23df5bfec84 @ ChannelCallStateForwarded a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfae52645cc6beb01c00fd1d544d0907777 @ ChannelCallStateInProgress a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa1ecef1a51a1e00bab1b19679a7741086 @ ChannelCallStateConferenceHost a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa594aa75472a6d190873ad4fcb56f564e @ _ChannelCallStatePadding a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa6cc625f385bf307291d2192be7b9743d ChannelGroupFlag a00893.html gadeaed0d7e8e3d306d4e4398387975857 @ ChannelGroupFlagCanAdd a00893.html ggadeaed0d7e8e3d306d4e4398387975857a92287976a53cff7fef872f7f338a6421 @ ChannelGroupFlagCanRemove a00893.html ggadeaed0d7e8e3d306d4e4398387975857a234d1cfcee7a197f0fe4dfaeec2c73e2 @ ChannelGroupFlagCanRescind a00893.html ggadeaed0d7e8e3d306d4e4398387975857aac6aa1a60ca623539e07af0af9311551 @ ChannelGroupFlagMessageAdd a00893.html ggadeaed0d7e8e3d306d4e4398387975857ac38ac45c32ee6580351f538db1cce427 @ ChannelGroupFlagMessageRemove a00893.html ggadeaed0d7e8e3d306d4e4398387975857a79a63ed9daf2566c8d98ebf7587b1547 @ ChannelGroupFlagMessageAccept a00893.html ggadeaed0d7e8e3d306d4e4398387975857ae4f4fe9907dc0c03d6952c4fcc20761e @ ChannelGroupFlagMessageReject a00893.html ggadeaed0d7e8e3d306d4e4398387975857aa1f993c76d9eeb1d9060428c79b562d1 @ ChannelGroupFlagMessageRescind a00893.html ggadeaed0d7e8e3d306d4e4398387975857a4cf292e38653fa27b7a8747d3dc20ab7 @ ChannelGroupFlagChannelSpecificHandles a00893.html ggadeaed0d7e8e3d306d4e4398387975857a6d9439ac4c1f06dd8c04d5963f9710bd @ ChannelGroupFlagOnlyOneGroup a00893.html ggadeaed0d7e8e3d306d4e4398387975857a014d2efa5ce405f7657c2a25d371f5fa @ ChannelGroupFlagHandleOwnersNotAvailable a00893.html ggadeaed0d7e8e3d306d4e4398387975857af98f1fe1441423f1638a4e27ffe7d61f @ ChannelGroupFlagProperties a00893.html ggadeaed0d7e8e3d306d4e4398387975857a4f141283930e2bcc21685084fb1355ef @ ChannelGroupFlagMembersChangedDetailed a00893.html ggadeaed0d7e8e3d306d4e4398387975857a4b809cf8cfc8bf253d66fc1e3f0cec00 @ ChannelGroupFlagMessageDepart a00893.html ggadeaed0d7e8e3d306d4e4398387975857a87b9a4cf165b77967282575281461a4a @ _ChannelGroupFlagPadding a00893.html ggadeaed0d7e8e3d306d4e4398387975857ab9a9872dfb053cb6cc6eb46c98dcc9c8 MessagePartSupportFlag a00893.html ga1c55f4f4934456de1364e395cc22c263 @ MessagePartSupportFlagOneAttachment a00893.html gga1c55f4f4934456de1364e395cc22c263afa21b09e15a4fac12a46721d2c7ea00f @ MessagePartSupportFlagMultipleAttachments a00893.html gga1c55f4f4934456de1364e395cc22c263ad7c9a031c066fdfe21a799da018ddb2a @ _MessagePartSupportFlagPadding a00893.html gga1c55f4f4934456de1364e395cc22c263aeff156ec7ed5a541c527a6957f21193b MessageSendingFlag a00893.html gad55925d8d24fecd516519f3a92aafb58 @ MessageSendingFlagReportDelivery a00893.html ggad55925d8d24fecd516519f3a92aafb58a2e33eea159b91165f09f475b88f32434 @ MessageSendingFlagReportRead a00893.html ggad55925d8d24fecd516519f3a92aafb58a27520e910e54d28731f7895ca2a37ad7 @ MessageSendingFlagReportDeleted a00893.html ggad55925d8d24fecd516519f3a92aafb58aef03fa0d57d5807de53537433b6f2afb @ _MessageSendingFlagPadding a00893.html ggad55925d8d24fecd516519f3a92aafb58a5a564addc4d0a541643b23f686c9195c DeliveryReportingSupportFlag a00893.html gaaa94e5e1d4cb5701a33445e2984cb486 @ DeliveryReportingSupportFlagReceiveFailures a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486a0d0715bc2e3cd811592257b806f076ca @ DeliveryReportingSupportFlagReceiveSuccesses a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486aa340e76702c1564dfbde667e3c73ba71 @ DeliveryReportingSupportFlagReceiveRead a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486aaf7a82a3ba3c1742d823ab71c633e79f @ DeliveryReportingSupportFlagReceiveDeleted a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486abe6bcf6721e9c937bc3bd815e44eb483 @ _DeliveryReportingSupportFlagPadding a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486a860915b62679978ddeea0bc1acdb5f7a ChannelPasswordFlag a00893.html gae5ebd6e742d951f5a5d31ac1e9e185c3 @ ChannelPasswordFlagProvide a00893.html ggae5ebd6e742d951f5a5d31ac1e9e185c3a90aa19041edfc0a0d6ec392f6a8029b3 @ ChannelPasswordFlagHint a00893.html ggae5ebd6e742d951f5a5d31ac1e9e185c3a049f04e1f55b3af8897d4ff5c3afbc3e @ _ChannelPasswordFlagPadding a00893.html ggae5ebd6e742d951f5a5d31ac1e9e185c3a8775a4977b8cb374d1ea8f1c3782a44f PropertyFlag a00893.html ga2268bdb3b45d0d46b05a7275f6a58bbe @ PropertyFlagRead a00893.html gga2268bdb3b45d0d46b05a7275f6a58bbea1b8c2f894807777844a02825fe59acb2 @ PropertyFlagWrite a00893.html gga2268bdb3b45d0d46b05a7275f6a58bbea853cc919d8d0ae43796362f285730314 @ _PropertyFlagPadding a00893.html gga2268bdb3b45d0d46b05a7275f6a58bbeafaefb2c4fc8a7b7e4848aba2413bdf9f StorageRestrictionFlag a00893.html ga8b5b12da307a1bca780ae392e899b16e @ StorageRestrictionFlagCannotSetParameters a00893.html gga8b5b12da307a1bca780ae392e899b16ea9a2bd9bb405afffb62a8b8eb50ee511a @ StorageRestrictionFlagCannotSetEnabled a00893.html gga8b5b12da307a1bca780ae392e899b16ea50bbce0cb18abedc1d31e57d67cba304 @ StorageRestrictionFlagCannotSetPresence a00893.html gga8b5b12da307a1bca780ae392e899b16eafe1d54999a2154d0f8fa96082f8e7fd5 @ StorageRestrictionFlagCannotSetService a00893.html gga8b5b12da307a1bca780ae392e899b16ea5170fcc3bb7cc2f6a7381e044bf9a972 @ _StorageRestrictionFlagPadding a00893.html gga8b5b12da307a1bca780ae392e899b16ea263a5409e2f093e9cc13282c6cd8b73c RTCPXRStatisticsFlag a00893.html gaa5f5055496c072aa97fd7f9e0f0c5419 @ RTCPXRStatisticsFlagLoss a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419aca1da490d670b5e2796b4ea1cca57f81 @ RTCPXRStatisticsFlagDuplicate a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419afcede23e95c8d6df44b10d9bb30d2e1a @ RTCPXRStatisticsFlagJitter a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a27b33220b8af82c00d3e05aaab0d578a @ RTCPXRStatisticsFlagTTL a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a3e010b11f7c39f8103d38a5f4d40a926 @ RTCPXRStatisticsFlagHL a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a7569492e0f4e73d1e9e6966d5b8b5905 @ _RTCPXRStatisticsFlagPadding a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a2219b3c5087e04541721c30fd316089a enumtypeconsts Enumerated type constants a00894.html HandleType a00894.html ga36fa367f622d8b98416393b3fe4c89d2 @ HandleTypeNone a00860.html ga36fa367f622d8b98416393b3fe4c89d2af89959dcf135559145d99732346c69e6 @ HandleTypeContact a00860.html ga36fa367f622d8b98416393b3fe4c89d2a5c0c85266c24696c080d2a688ec8bfa3 @ HandleTypeRoom a00860.html ga36fa367f622d8b98416393b3fe4c89d2ac4186e266a163cb4ced697e949b02cd3 @ HandleTypeList a00860.html ga36fa367f622d8b98416393b3fe4c89d2aff5b4d0f0110236fea4c3dcaafa67af9 @ HandleTypeGroup a00860.html ga36fa367f622d8b98416393b3fe4c89d2a2b95392fef02b76d4321a242e40173be @ _HandleTypePadding a00860.html ga36fa367f622d8b98416393b3fe4c89d2ac34fe4f627ac03b51f67c08636d62f8b ConnectionStatus a00894.html ga601f90d95125a95ed0ff9a546fb1363f @ ConnectionStatusConnected a00860.html ga601f90d95125a95ed0ff9a546fb1363fa6af1d5f41051b70b5c14bd19c4174d17 @ ConnectionStatusConnecting a00860.html ga601f90d95125a95ed0ff9a546fb1363fac691efe1fa9ab0c66332033c7817cf71 @ ConnectionStatusDisconnected a00860.html ga601f90d95125a95ed0ff9a546fb1363fa92910aabeadb7e95d5ccc7f13dac571c @ _ConnectionStatusPadding a00860.html ga601f90d95125a95ed0ff9a546fb1363faab3d27bb3ec6b8e831694eff11657d73 ConnectionStatusReason a00894.html gafcefb23369c2cf510f27775670294c6c @ ConnectionStatusReasonNoneSpecified a00860.html gafcefb23369c2cf510f27775670294c6cad4eedc748700e9f70a2da3d09d551300 @ ConnectionStatusReasonRequested a00860.html gafcefb23369c2cf510f27775670294c6ca2d0e83ce43fc2aa9b4afcd2bfb43fe6a @ ConnectionStatusReasonNetworkError a00860.html gafcefb23369c2cf510f27775670294c6ca98b5990d6c4d741b2063898f3592804f @ ConnectionStatusReasonAuthenticationFailed a00860.html gafcefb23369c2cf510f27775670294c6cac47620cab72ea7c2581e7fff78576c6b @ ConnectionStatusReasonEncryptionError a00860.html gafcefb23369c2cf510f27775670294c6ca5e5a11e3c27b792e1e84550d0bf31df1 @ ConnectionStatusReasonNameInUse a00860.html gafcefb23369c2cf510f27775670294c6caafc5abcd599707f4a3e9b000fa067496 @ ConnectionStatusReasonCertNotProvided a00860.html gafcefb23369c2cf510f27775670294c6ca2e699ec66e40de505f322fc8be878dc3 @ ConnectionStatusReasonCertUntrusted a00860.html gafcefb23369c2cf510f27775670294c6ca1f883ac52d327e25483a04dffcbf7e51 @ ConnectionStatusReasonCertExpired a00860.html gafcefb23369c2cf510f27775670294c6cafa91b31af9d1614844984e9ece64a32a @ ConnectionStatusReasonCertNotActivated a00860.html gafcefb23369c2cf510f27775670294c6ca5a5fd148b1bea5ad268da790fad52ef6 @ ConnectionStatusReasonCertHostnameMismatch a00860.html gafcefb23369c2cf510f27775670294c6ca2f4d5c18d6004f1243e47c9d65469997 @ ConnectionStatusReasonCertFingerprintMismatch a00860.html gafcefb23369c2cf510f27775670294c6caeeb9251b845f2cabfef42d4c8142dbe7 @ ConnectionStatusReasonCertSelfSigned a00860.html gafcefb23369c2cf510f27775670294c6ca80a9a592ebead08b6c414783598e8221 @ ConnectionStatusReasonCertOtherError a00860.html gafcefb23369c2cf510f27775670294c6ca1a97d6650615a881a8c78de07f131392 @ ConnectionStatusReasonCertRevoked a00860.html gafcefb23369c2cf510f27775670294c6cadac2dc2c58a78c85777564cda333445d @ ConnectionStatusReasonCertInsecure a00860.html gafcefb23369c2cf510f27775670294c6ca4133cb4e2c25a051548aac43fe440101 @ ConnectionStatusReasonCertLimitExceeded a00860.html gafcefb23369c2cf510f27775670294c6caa59fbd6d253a7f8100387e6d0e20e234 @ _ConnectionStatusReasonPadding a00860.html gafcefb23369c2cf510f27775670294c6ca40a4510b965940d1d12deb1d5289859f ContactListState a00894.html gad1ebe7859ea635738c90418460309dc7 @ ContactListStateNone a00860.html gad1ebe7859ea635738c90418460309dc7af310e50dbccd4e278dfda34de8229489 @ ContactListStateWaiting a00860.html gad1ebe7859ea635738c90418460309dc7a9f625f030f9168435c3ae9d9c7f7c9d4 @ ContactListStateFailure a00860.html gad1ebe7859ea635738c90418460309dc7ac932eb0a0fd5d2f4030dae78657ce314 @ ContactListStateSuccess a00860.html gad1ebe7859ea635738c90418460309dc7af8a70e85564460c8d9f72dba6bdb65a0 @ _ContactListStatePadding a00860.html gad1ebe7859ea635738c90418460309dc7aacd1235c772e255bc07304675005eff9 SubscriptionState a00894.html ga6c99f8845100a205c12d66ec117a78de @ SubscriptionStateUnknown a00860.html ga6c99f8845100a205c12d66ec117a78dea57618775be1e938333647f3f832e9354 @ SubscriptionStateNo a00860.html ga6c99f8845100a205c12d66ec117a78dea759008dafd20b15b8ded54735926f990 @ SubscriptionStateRemovedRemotely a00860.html ga6c99f8845100a205c12d66ec117a78deab530cc8b1158603d43de733e6df54be1 @ SubscriptionStateAsk a00860.html ga6c99f8845100a205c12d66ec117a78dea3c5c2a8cbaea19e032423e8c5a5ba365 @ SubscriptionStateYes a00860.html ga6c99f8845100a205c12d66ec117a78dea167c5e6e0bc915d6fa5d1e48b24118bf @ _SubscriptionStatePadding a00860.html ga6c99f8845100a205c12d66ec117a78deaef819596d05709f7ad510da6d132f8db ContactMetadataStorageType a00894.html ga4d71f3cae6d427dd3c2d59b6f7f72bab @ ContactMetadataStorageTypeNone a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72babac80c4375e54a9caa0b4074e95c2e60de @ ContactMetadataStorageTypeSubscribedOrPending a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72baba64095a44b4de5ba6f9de0950a3dff789 @ ContactMetadataStorageTypeSubscribed a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72babacd011a48c30589a2f701e7a7963abb58 @ ContactMetadataStorageTypeAnyone a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72baba40f8a384e7a569b8fd9bd895b0fa73be @ _ContactMetadataStorageTypePadding a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72babadc7c3bb44ba6fde83a87c969a2754882 HTTPMethod a00894.html ga555eee1bc333732490e1c4b8de9d1c88 @ HTTPMethodGet a00860.html ga555eee1bc333732490e1c4b8de9d1c88a82991109c053cac31f87b5cc1dfd42f0 @ HTTPMethodPost a00860.html ga555eee1bc333732490e1c4b8de9d1c88a923c73a532b12a1648862aefeb742351 @ _HTTPMethodPadding a00860.html ga555eee1bc333732490e1c4b8de9d1c88a4e5848d03cd970af98883a850ad4b5a6 ServicePointType a00894.html ga245141cc45e499cf4c660bf82c79453d @ ServicePointTypeNone a00860.html ga245141cc45e499cf4c660bf82c79453da53ae328cb93800ab8069e41ad01507c3 @ ServicePointTypeEmergency a00860.html ga245141cc45e499cf4c660bf82c79453dabf1bf92f07054247f9eb3f3ee0bf39fa @ ServicePointTypeCounseling a00860.html ga245141cc45e499cf4c660bf82c79453dabfb78370c8fcd533d70d9e9fe154677f @ _ServicePointTypePadding a00860.html ga245141cc45e499cf4c660bf82c79453da362acf4fa51a2fc98cda93ba0c378d81 ConnectionPresenceType a00894.html ga1f94046a888cc61a4c86f5426c4e9875 @ ConnectionPresenceTypeUnset a00860.html ga1f94046a888cc61a4c86f5426c4e9875aa1a9e769fc869eab68bdf1082ed4194d @ ConnectionPresenceTypeOffline a00860.html ga1f94046a888cc61a4c86f5426c4e9875a42893dcb07d9e743264653f2b1004f27 @ ConnectionPresenceTypeAvailable a00860.html ga1f94046a888cc61a4c86f5426c4e9875a5f13818f8fc8e0a1d2e635f0e290959d @ ConnectionPresenceTypeAway a00860.html ga1f94046a888cc61a4c86f5426c4e9875a0daa17373b159ace07e31e28e3e571e5 @ ConnectionPresenceTypeExtendedAway a00860.html ga1f94046a888cc61a4c86f5426c4e9875a22736f0f3c6517c6b50ba72b14c15dd1 @ ConnectionPresenceTypeHidden a00860.html ga1f94046a888cc61a4c86f5426c4e9875a93007eafa25f26e5c1fcdea1c558c2af @ ConnectionPresenceTypeBusy a00860.html ga1f94046a888cc61a4c86f5426c4e9875af1aaa306a6e92a81f03826000564c860 @ ConnectionPresenceTypeUnknown a00860.html ga1f94046a888cc61a4c86f5426c4e9875a246d03a6f3964d6d53bba07e132e8479 @ ConnectionPresenceTypeError a00860.html ga1f94046a888cc61a4c86f5426c4e9875aee12216cb066cb145ef76ca65e7c8d12 @ _ConnectionPresenceTypePadding a00860.html ga1f94046a888cc61a4c86f5426c4e9875ae09a65c8ab3476117627b294429d94cc AccessControlType a00894.html gabb9cd3c2de41e5caa1e42f04dfa036ba @ AccessControlTypeWhitelist a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baadb4e9c21aebc1b28c9db82f9b9b83d3f @ AccessControlTypePublishList a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baab2686c25851ee877f5a34fa44599e739 @ AccessControlTypeGroup a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa891e5e8face80384a496dd25fe59c457 @ AccessControlTypeOpen a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baadab26fb2daff5d11560330c362d17a72 @ AccessControlTypeSubscribeOrPublishList a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa89afa1bd6de8ce162daca2cb4f072c5b @ AccessControlTypeClosed a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa2e98912e22741a8f52792412d18e1374 @ AccessControlTypeNotUnderstood a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baab31c729946edb3fc6367cd955be48f5e @ _AccessControlTypePadding a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa113a017dc5796a924c814877e19670f9 RichPresenceAccessControlType a00894.html gada0e452157f0ace844f898df2328dd89 @ RichPresenceAccessControlTypeWhitelist a00860.html gada0e452157f0ace844f898df2328dd89a9030fc904f2c033d7dc65e75563321fa @ RichPresenceAccessControlTypePublishList a00860.html gada0e452157f0ace844f898df2328dd89a8197a38175a34ef69a79d560e607e660 @ RichPresenceAccessControlTypeGroup a00860.html gada0e452157f0ace844f898df2328dd89a14db81756caee469621dc35c49b1a03e @ RichPresenceAccessControlTypeOpen a00860.html gada0e452157f0ace844f898df2328dd89a132a7cfc6674c6404b1982cc0c5e6a52 @ _RichPresenceAccessControlTypePadding a00860.html gada0e452157f0ace844f898df2328dd89ad24aca58593d5a10e15564b119847cd5 CallState a00894.html ga29b57a5b4f94c451af84b5e57102c4d9 @ CallStateUnknown a00860.html ga29b57a5b4f94c451af84b5e57102c4d9a41367cc733adb6ea98643b24a74b5d88 @ CallStatePendingInitiator a00860.html ga29b57a5b4f94c451af84b5e57102c4d9aedebb08c95e37b5bbc2fcc41ee9fdfdc @ CallStateInitialising a00860.html ga29b57a5b4f94c451af84b5e57102c4d9a4715d2742ff582df46e1f5a501392335 @ CallStateInitialised a00860.html ga29b57a5b4f94c451af84b5e57102c4d9af60a9178889d8d0db1d56312bfccac9a @ CallStateAccepted a00860.html ga29b57a5b4f94c451af84b5e57102c4d9ac8f6abefc2087c47eb6c3b4f9f36b1b9 @ CallStateActive a00860.html ga29b57a5b4f94c451af84b5e57102c4d9ae00c2709e6515b32bbd57c9cad73064e @ CallStateEnded a00860.html ga29b57a5b4f94c451af84b5e57102c4d9ab7448536f3d5274e5b0dc995648efc60 @ _CallStatePadding a00860.html ga29b57a5b4f94c451af84b5e57102c4d9a3e85d0aff14c3c1588ac5902cc706d5f CallStateChangeReason a00894.html ga76f639168e50102c9de416ca38721a80 @ CallStateChangeReasonUnknown a00860.html ga76f639168e50102c9de416ca38721a80ae8415ad2b16289077d2c5e500dc1295d @ CallStateChangeReasonProgressMade a00860.html ga76f639168e50102c9de416ca38721a80ad25bca1fe2d9850b8799eac6c45a5bc7 @ CallStateChangeReasonUserRequested a00860.html ga76f639168e50102c9de416ca38721a80aca9ca451661e58baa6e6776904183184 @ CallStateChangeReasonForwarded a00860.html ga76f639168e50102c9de416ca38721a80a146edc9f2bf775dadc0fec696f12d147 @ CallStateChangeReasonRejected a00860.html ga76f639168e50102c9de416ca38721a80ae7b99c110154b433239540fed7984ecf @ CallStateChangeReasonNoAnswer a00860.html ga76f639168e50102c9de416ca38721a80a20b8a39d962991b07e890c11dabf6822 @ CallStateChangeReasonInvalidContact a00860.html ga76f639168e50102c9de416ca38721a80a1401a7adcca399a952fcae727f41bbd0 @ CallStateChangeReasonPermissionDenied a00860.html ga76f639168e50102c9de416ca38721a80ab9bbe2fd958138d3df4a82fe1034e585 @ CallStateChangeReasonBusy a00860.html ga76f639168e50102c9de416ca38721a80ab9f44ff3310752e0889181bf670b8155 @ CallStateChangeReasonInternalError a00860.html ga76f639168e50102c9de416ca38721a80a6b1c119afbaef077f2168bdcce49d7db @ CallStateChangeReasonServiceError a00860.html ga76f639168e50102c9de416ca38721a80a1d5846e29976ba99c07287f8f15d8ca2 @ CallStateChangeReasonNetworkError a00860.html ga76f639168e50102c9de416ca38721a80ac764e91ed0cf502072c1374342541d5a @ CallStateChangeReasonMediaError a00860.html ga76f639168e50102c9de416ca38721a80a5588aa2532eb7415e347b623ca8f5551 @ CallStateChangeReasonConnectivityError a00860.html ga76f639168e50102c9de416ca38721a80a1dc8412ac14fc83d517ffa42afdc217c @ _CallStateChangeReasonPadding a00860.html ga76f639168e50102c9de416ca38721a80aad70506b0d1c5a02e5cc596cfcacdba2 ChannelContactSearchState a00894.html gad6239ceeae9aa8a33b49fec1b77e535d @ ChannelContactSearchStateNotStarted a00860.html gad6239ceeae9aa8a33b49fec1b77e535da6d7b29eb8febda2c506bc566c10248f9 @ ChannelContactSearchStateInProgress a00860.html gad6239ceeae9aa8a33b49fec1b77e535da1b4aaa5f39b1c550afccbb8a58c4fece @ ChannelContactSearchStateMoreAvailable a00860.html gad6239ceeae9aa8a33b49fec1b77e535da78325173e9c273bde3b46ac3467eb173 @ ChannelContactSearchStateCompleted a00860.html gad6239ceeae9aa8a33b49fec1b77e535da3a306ee2b594771e71838cb90a6733fd @ ChannelContactSearchStateFailed a00860.html gad6239ceeae9aa8a33b49fec1b77e535da8fbac7e828625f03349227bf126e781c @ _ChannelContactSearchStatePadding a00860.html gad6239ceeae9aa8a33b49fec1b77e535da939a306e71fe8481235f39aa256117bd FileTransferState a00894.html ga4fae9d8b47f004df92c9eda24cf8781e @ FileTransferStateNone a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea706f060b407122404bb21e326fbed074 @ FileTransferStatePending a00860.html ga4fae9d8b47f004df92c9eda24cf8781eab6b3d23b02024da063bd17441383bc7f @ FileTransferStateAccepted a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea8ab3abc401d923aff9d5dfaaf7a1b93d @ FileTransferStateOpen a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea8ad132aec75c843581f9485f5e811673 @ FileTransferStateCompleted a00860.html ga4fae9d8b47f004df92c9eda24cf8781eae50cd129faf3d6729df2ffe97c614510 @ FileTransferStateCancelled a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea1de760588d3471e7b7c337158d1cc12a @ _FileTransferStatePadding a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea2c9a1e6b3478b332b32bc5b65881064c FileTransferStateChangeReason a00894.html ga2a35d8ba60e214fd8f1e284ea3d38aef @ FileTransferStateChangeReasonNone a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa20c12a9ed075c82c01c7e2b118387375 @ FileTransferStateChangeReasonRequested a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefad5ceb0681274fcb980781d2081e0bbd0 @ FileTransferStateChangeReasonLocalStopped a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa994c886ca6639971a44c6f1d39cd8b45 @ FileTransferStateChangeReasonRemoteStopped a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa248a063f70c5b5d233280ebc30af3b06 @ FileTransferStateChangeReasonLocalError a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa03a74da7f2a9052612accf9e48c66c26 @ FileTransferStateChangeReasonRemoteError a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa6ab01ac71d857162d139e24da4f2701d @ _FileTransferStateChangeReasonPadding a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefad37120830f305845cdf1df588abbfdf6 FileHashType a00894.html ga01668c37b6bf53402bd46218a778a077 @ FileHashTypeNone a00860.html ga01668c37b6bf53402bd46218a778a077a5425aefada78b0e6bb843aca067122ff @ FileHashTypeMD5 a00860.html ga01668c37b6bf53402bd46218a778a077af187e18369189fc8de709b62180a0913 @ FileHashTypeSHA1 a00860.html ga01668c37b6bf53402bd46218a778a077a758e4c3fa6c0eed34bb8a193382287aa @ FileHashTypeSHA256 a00860.html ga01668c37b6bf53402bd46218a778a077a13e7ee71af363e65e1ea8256d6b42b99 @ _FileHashTypePadding a00860.html ga01668c37b6bf53402bd46218a778a077ab3946a7403e0c0393d48675d87ea0e9f MediaStreamType a00894.html ga792af87e6990a550aea64cffd907b6af @ MediaStreamTypeAudio a00860.html ga792af87e6990a550aea64cffd907b6afa6cbfe7ede4404ebf3b660f4814ae3ecb @ MediaStreamTypeVideo a00860.html ga792af87e6990a550aea64cffd907b6afae67152402c83bc8e01263c784d8f27d4 @ _MediaStreamTypePadding a00860.html ga792af87e6990a550aea64cffd907b6afaef884197c1277bed4b70463c41728bfb MediaStreamState a00894.html gade0301e7ed872ed3ce2fe49fef847ef0 @ MediaStreamStateDisconnected a00860.html gade0301e7ed872ed3ce2fe49fef847ef0a20a0fcc2033be0126745e0f2d5782ac2 @ MediaStreamStateConnecting a00860.html gade0301e7ed872ed3ce2fe49fef847ef0ae4bd974acadcc6f461b214c728d76323 @ MediaStreamStateConnected a00860.html gade0301e7ed872ed3ce2fe49fef847ef0a113b29fea3d710696fc67e6d01994d4d @ _MediaStreamStatePadding a00860.html gade0301e7ed872ed3ce2fe49fef847ef0a5b998dce825824302d07b31bf1dccf47 MediaStreamDirection a00894.html gadcab310dc357419cb70579825175da64 @ MediaStreamDirectionNone a00860.html gadcab310dc357419cb70579825175da64af650069e060e98cf7ae0f2fde9acb91b @ MediaStreamDirectionSend a00860.html gadcab310dc357419cb70579825175da64a6364176a18a2c24c47f53445e5a690d7 @ MediaStreamDirectionReceive a00860.html gadcab310dc357419cb70579825175da64a5acbd56c8a1c214fa01230cf7aed1487 @ MediaStreamDirectionBidirectional a00860.html gadcab310dc357419cb70579825175da64ab781b88425ab2b8706e5ec2de542b7f4 @ _MediaStreamDirectionPadding a00860.html gadcab310dc357419cb70579825175da64ae554a8714498b747e9a87f24bb416379 ChannelTextSendError a00894.html ga5d62f6836d5167746124d53ba55e1dbd @ ChannelTextSendErrorUnknown a00860.html ga5d62f6836d5167746124d53ba55e1dbdac32481e278a5fae5e455bbbc793a9ecb @ ChannelTextSendErrorOffline a00860.html ga5d62f6836d5167746124d53ba55e1dbda3ad35d336edd345d0121d4063c4d181b @ ChannelTextSendErrorInvalidContact a00860.html ga5d62f6836d5167746124d53ba55e1dbdad7cb872eb410b4377eedcae6a6e95ce9 @ ChannelTextSendErrorPermissionDenied a00860.html ga5d62f6836d5167746124d53ba55e1dbdabbf708315596e486649430690af2fd25 @ ChannelTextSendErrorTooLong a00860.html ga5d62f6836d5167746124d53ba55e1dbda09d675f77316a66e1e330f2209bddecf @ ChannelTextSendErrorNotImplemented a00860.html ga5d62f6836d5167746124d53ba55e1dbda1020e6a8825cda2e058814d47ac88d78 @ _ChannelTextSendErrorPadding a00860.html ga5d62f6836d5167746124d53ba55e1dbda2cbc5f7244f3ae488713b4c46270ec54 ChannelTextMessageType a00894.html ga7f1e23e32fa6218eebc7021d094a8f49 @ ChannelTextMessageTypeNormal a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a37e68749b415d08419694a1e9e7837b4 @ ChannelTextMessageTypeAction a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a1766ba6643dd1a5cee388cd7220848f5 @ ChannelTextMessageTypeNotice a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a92bc2974bdd9f2c238705c73947512eb @ ChannelTextMessageTypeAutoReply a00860.html ga7f1e23e32fa6218eebc7021d094a8f49ad857b8087d7f921736efc85e2683e8be @ ChannelTextMessageTypeDeliveryReport a00860.html ga7f1e23e32fa6218eebc7021d094a8f49ad333d787b06dc9e8a79561573cb6fb1c @ _ChannelTextMessageTypePadding a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a6b94ac490da4899a2d9194a5ab65cffe TubeType a00894.html ga4c2a799af2fe17765ee45a8d8b703e2b @ TubeTypeDBus a00860.html ga4c2a799af2fe17765ee45a8d8b703e2babd7cb9df9ff44362dcab29b480e989f3 @ TubeTypeStream a00860.html ga4c2a799af2fe17765ee45a8d8b703e2ba205172a6ad834a1ac53749020471efc9 @ _TubeTypePadding a00860.html ga4c2a799af2fe17765ee45a8d8b703e2ba2a7c7466d4784296d28389cc22df9934 TubeState a00894.html ga53f50d894433ea4833ff1e751afa14a0 @ TubeStateLocalPending a00860.html ga53f50d894433ea4833ff1e751afa14a0ad1b9acd6405cd62f5ea736bd9d1c8b79 @ TubeStateRemotePending a00860.html ga53f50d894433ea4833ff1e751afa14a0ad891c7f1fbedaa330c3386fbdba30cb8 @ TubeStateOpen a00860.html ga53f50d894433ea4833ff1e751afa14a0ad6c6b4da4bb3b838bf5b77f59b060e1c @ _TubeStatePadding a00860.html ga53f50d894433ea4833ff1e751afa14a0a722f3a7a2f07168c8e013a308414030d CaptchaCancelReason a00894.html ga06c22a4c5a0028dbf58b64f217e87e47 @ CaptchaCancelReasonUserCancelled a00860.html ga06c22a4c5a0028dbf58b64f217e87e47ac833d4316d8cb6a6c89e5b7516e2572a @ CaptchaCancelReasonNotSupported a00860.html ga06c22a4c5a0028dbf58b64f217e87e47a2de6b3db732ff32d3960159dcea850ab @ CaptchaCancelReasonServiceConfused a00860.html ga06c22a4c5a0028dbf58b64f217e87e47aa7138d74344d4af0fbf47f9224420949 @ _CaptchaCancelReasonPadding a00860.html ga06c22a4c5a0028dbf58b64f217e87e47a1fde3bd11bff35f89fed67e3ce233d08 CaptchaStatus a00894.html gaa4dc89cbad454d2d524302c2f2504bc2 @ CaptchaStatusLocalPending a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a4d02051d9bf2c2e9104598e9914e947f @ CaptchaStatusRemotePending a00860.html gaa4dc89cbad454d2d524302c2f2504bc2add7e32a7261a06996685d997bcb48306 @ CaptchaStatusSucceeded a00860.html gaa4dc89cbad454d2d524302c2f2504bc2ae61f5e63f2b2a5f05f9fc6469fcd1f15 @ CaptchaStatusTryAgain a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a0df479d6ffca18bdd3122ce1c108c8a8 @ CaptchaStatusFailed a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a14ceed4683e79bea397aa6cb572ed8c4 @ _CaptchaStatusPadding a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a25d48ffe6ad3f6580fe03182c8188757 ChannelChatState a00894.html gafafcdfb5cc02a057311ebe1c3b339e50 @ ChannelChatStateGone a00860.html gafafcdfb5cc02a057311ebe1c3b339e50ae88de9b6a777523fcd095dffc66a77a2 @ ChannelChatStateInactive a00860.html gafafcdfb5cc02a057311ebe1c3b339e50a128b7853bb11562a90ebdc0c4e9a3b2e @ ChannelChatStateActive a00860.html gafafcdfb5cc02a057311ebe1c3b339e50a439643af76ef0bf428ffbcf958d4a1cb @ ChannelChatStatePaused a00860.html gafafcdfb5cc02a057311ebe1c3b339e50acea42513e9a70afaecfbf676dfbfa00b @ ChannelChatStateComposing a00860.html gafafcdfb5cc02a057311ebe1c3b339e50a29b17e44519c26f35f5d423e5a528b7c @ _ChannelChatStatePadding a00860.html gafafcdfb5cc02a057311ebe1c3b339e50ad39be07d5bc7d821871509c9ccfbfd16 DTMFEvent a00894.html ga012772bfae380954ec1655209ae053a4 @ DTMFEventDigit0 a00860.html ga012772bfae380954ec1655209ae053a4aba871cc8e5bb6f76d8e98fb3ea1b7b0f @ DTMFEventDigit1 a00860.html ga012772bfae380954ec1655209ae053a4aba24c37745bbc1663e371a02af724aa3 @ DTMFEventDigit2 a00860.html ga012772bfae380954ec1655209ae053a4a0b435ba1e5929b5f1285b4ed7bb4461c @ DTMFEventDigit3 a00860.html ga012772bfae380954ec1655209ae053a4ab5233d11f39ac3742e77feda41335d2d @ DTMFEventDigit4 a00860.html ga012772bfae380954ec1655209ae053a4a5b33b94977d7037ba782e43589f8a7c7 @ DTMFEventDigit5 a00860.html ga012772bfae380954ec1655209ae053a4a97ff04d31b935dff321a7fda4ff5c00f @ DTMFEventDigit6 a00860.html ga012772bfae380954ec1655209ae053a4abce00b38a8ef909f478e361d302a31b1 @ DTMFEventDigit7 a00860.html ga012772bfae380954ec1655209ae053a4ae36fb4b8bdf680dc9b5412ff12d0a959 @ DTMFEventDigit8 a00860.html ga012772bfae380954ec1655209ae053a4a7c38653c053fbab594870ebf4a988078 @ DTMFEventDigit9 a00860.html ga012772bfae380954ec1655209ae053a4a8f68ad6d8b9acd6de913b1bb7fadb9cb @ DTMFEventAsterisk a00860.html ga012772bfae380954ec1655209ae053a4acea062bf869937b1ad2ac5dc32625ba2 @ DTMFEventHash a00860.html ga012772bfae380954ec1655209ae053a4af2ea268770f0ed9b85211bed605eff7b @ DTMFEventLetterA a00860.html ga012772bfae380954ec1655209ae053a4abd42c36f21149b9547b5d98d50a4a5d7 @ DTMFEventLetterB a00860.html ga012772bfae380954ec1655209ae053a4a59813e8bc99d39cbe247100cc2f369ea @ DTMFEventLetterC a00860.html ga012772bfae380954ec1655209ae053a4a461aac5ce08cce03d43e02a11493aa56 @ DTMFEventLetterD a00860.html ga012772bfae380954ec1655209ae053a4afef5cae80946be1da53a642689946937 @ _DTMFEventPadding a00860.html ga012772bfae380954ec1655209ae053a4a4a5e01929a9c646ce84029d47841f154 ChannelGroupChangeReason a00894.html ga23b323e3a7d7e111827d7ecd5816611b @ ChannelGroupChangeReasonNone a00860.html ga23b323e3a7d7e111827d7ecd5816611bae138b982d4c9bbe853228fcbca5bb2d2 @ ChannelGroupChangeReasonOffline a00860.html ga23b323e3a7d7e111827d7ecd5816611ba04b849bb9ebef99d7ae5fe0be2d1c767 @ ChannelGroupChangeReasonKicked a00860.html ga23b323e3a7d7e111827d7ecd5816611bab5f6a81c45744defdf3d9e5a39f9b2b5 @ ChannelGroupChangeReasonBusy a00860.html ga23b323e3a7d7e111827d7ecd5816611bae95ea1e70846c6ed613694b02a75137d @ ChannelGroupChangeReasonInvited a00860.html ga23b323e3a7d7e111827d7ecd5816611ba93acb38c57c97166217c56683bfe532a @ ChannelGroupChangeReasonBanned a00860.html ga23b323e3a7d7e111827d7ecd5816611ba7a73c9f0c82baaf01577caa0faa3e9f4 @ ChannelGroupChangeReasonError a00860.html ga23b323e3a7d7e111827d7ecd5816611ba0d6c1d6b1ef4817db00b425a8a7e8568 @ ChannelGroupChangeReasonInvalidContact a00860.html ga23b323e3a7d7e111827d7ecd5816611bad6a3f9751907dba0b8948387ed869ad7 @ ChannelGroupChangeReasonNoAnswer a00860.html ga23b323e3a7d7e111827d7ecd5816611ba7a9e904a1e78b248a12ec90e532a325f @ ChannelGroupChangeReasonRenamed a00860.html ga23b323e3a7d7e111827d7ecd5816611bab548182cdb61cf8f401be9056dab542f @ ChannelGroupChangeReasonPermissionDenied a00860.html ga23b323e3a7d7e111827d7ecd5816611ba7965c7a788e1b15c44f0502d1b28a245 @ ChannelGroupChangeReasonSeparated a00860.html ga23b323e3a7d7e111827d7ecd5816611ba6e360d0a9cdc2652204e2cbe0293452f @ _ChannelGroupChangeReasonPadding a00860.html ga23b323e3a7d7e111827d7ecd5816611ba76ad374c857e4425205d2e981651f5dd LocalHoldState a00894.html gacb8a20bad361e968d1a7170bae64a34d @ LocalHoldStateUnheld a00860.html gacb8a20bad361e968d1a7170bae64a34da834824a35b674e8db7942e88b8c2886e @ LocalHoldStateHeld a00860.html gacb8a20bad361e968d1a7170bae64a34da282c8058e0e6a9d8d5ec88db26b6a80e @ LocalHoldStatePendingHold a00860.html gacb8a20bad361e968d1a7170bae64a34da3be247a894e45db07a60647a2ef66991 @ LocalHoldStatePendingUnhold a00860.html gacb8a20bad361e968d1a7170bae64a34da94586be270ad7b459f3fd7609a01aae9 @ _LocalHoldStatePadding a00860.html gacb8a20bad361e968d1a7170bae64a34da59dc43715eb19356066a493296db9642 LocalHoldStateReason a00894.html ga4738883a2b74c73d53c34db4214dfe64 @ LocalHoldStateReasonNone a00860.html ga4738883a2b74c73d53c34db4214dfe64a18b9753a1e0264b869a0c016b86ef9b5 @ LocalHoldStateReasonRequested a00860.html ga4738883a2b74c73d53c34db4214dfe64ab0637c6b3d632497a8f96f1fe722c20f @ LocalHoldStateReasonResourceNotAvailable a00860.html ga4738883a2b74c73d53c34db4214dfe64a752618dffe4900ab096690e25f1532df @ _LocalHoldStateReasonPadding a00860.html ga4738883a2b74c73d53c34db4214dfe64a5b935757ae39c5d894ba9d8628fe78d6 DeliveryStatus a00894.html ga604080e478c7ae07ec133324c3c844b1 @ DeliveryStatusUnknown a00860.html ga604080e478c7ae07ec133324c3c844b1af2e4b056d294ec494ff11bc2651a85bc @ DeliveryStatusDelivered a00860.html ga604080e478c7ae07ec133324c3c844b1ac2407dda8e99aca8ad1cfee1afbe7cd8 @ DeliveryStatusTemporarilyFailed a00860.html ga604080e478c7ae07ec133324c3c844b1a234e2d9c6c716cf8f6846a03b842651c @ DeliveryStatusPermanentlyFailed a00860.html ga604080e478c7ae07ec133324c3c844b1a414de69453b2798d0953ddb4178b96ce @ DeliveryStatusAccepted a00860.html ga604080e478c7ae07ec133324c3c844b1a83d67dce5a05963fd154b4168cd71e5e @ DeliveryStatusRead a00860.html ga604080e478c7ae07ec133324c3c844b1a0783f23ad57a2a04bc96deb54a786ec7 @ DeliveryStatusDeleted a00860.html ga604080e478c7ae07ec133324c3c844b1a73d92cd732f875053ad60cab0eed5d10 @ _DeliveryStatusPadding a00860.html ga604080e478c7ae07ec133324c3c844b1a26349096eded56b4083f437fbe035ec3 SASLAbortReason a00894.html gaf4f8a401f061ad5c26257f8e4e581050 @ SASLAbortReasonInvalidChallenge a00860.html gaf4f8a401f061ad5c26257f8e4e581050aeae9b855eb8241e7a0cef7b82f34e29e @ SASLAbortReasonUserAbort a00860.html gaf4f8a401f061ad5c26257f8e4e581050a177255584f02c722ae4f0346a61fa449 @ _SASLAbortReasonPadding a00860.html gaf4f8a401f061ad5c26257f8e4e581050a40b83468e273779bad71801a433c0256 SASLStatus a00894.html gad32b4dc0f4e05f7f5f054f8e86e29a71 @ SASLStatusNotStarted a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71aa17ef57b95fe5ad37a86eebf327c5115 @ SASLStatusInProgress a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a8383e86ce0c8434fdb5fbe945211ddb7 @ SASLStatusServerSucceeded a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a26c1f1732db66be7434c4889d77a369b @ SASLStatusClientAccepted a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a78ef3cf9ff636a4c917ea97ef16f5ab7 @ SASLStatusSucceeded a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71af1ca144e6962c5e60682400c48d0959c @ SASLStatusServerFailed a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71ab405ecc7532cb71ae9594ad8a32308ea @ SASLStatusClientFailed a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a270f05634247b2af51ea04dd2cfabc91 @ _SASLStatusPadding a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a9ef08b10aca094bad487ed8f7b575b32 TubeChannelState a00894.html gaed213c3ef4c3a3a732c871e2ec42285c @ TubeChannelStateLocalPending a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca2d6619fb7b4865ee832222cbff28fbf6 @ TubeChannelStateRemotePending a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca0baf79855da8c3c520522c47324de2a9 @ TubeChannelStateOpen a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca11243c36e2b4521f5d120dbe811413c1 @ TubeChannelStateNotOffered a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca3f74a3ac21241ca3374983174099dde8 @ _TubeChannelStatePadding a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca7d745822170fc1e13fa4f111d39a96d6 SocketAddressType a00894.html ga7c4136f60d444e2c62c9b6568cf96824 @ SocketAddressTypeUnix a00860.html ga7c4136f60d444e2c62c9b6568cf96824af3e31ed96405c22c9c255ab087aa0202 @ SocketAddressTypeAbstractUnix a00860.html ga7c4136f60d444e2c62c9b6568cf96824a205dd31f0952d22fd896541321646d91 @ SocketAddressTypeIPv4 a00860.html ga7c4136f60d444e2c62c9b6568cf96824ac3d350676a2a8f1a0024e8a22de2a752 @ SocketAddressTypeIPv6 a00860.html ga7c4136f60d444e2c62c9b6568cf96824a58293e917107b6c17bc6997bdbbdbdb3 @ _SocketAddressTypePadding a00860.html ga7c4136f60d444e2c62c9b6568cf96824acf256d93a4904324a44de7886a7db9d0 SocketAccessControl a00894.html ga59816b3c275bf13857e694c6ecec5fc9 @ SocketAccessControlLocalhost a00860.html ga59816b3c275bf13857e694c6ecec5fc9adc17ee56d8be8d2a8a1e3b63498bf909 @ SocketAccessControlPort a00860.html ga59816b3c275bf13857e694c6ecec5fc9a2c0ee1efb68ecddb8109490f3cd0f38d @ SocketAccessControlNetmask a00860.html ga59816b3c275bf13857e694c6ecec5fc9a526c352c65aee815e1403f1b05d6ffd5 @ SocketAccessControlCredentials a00860.html ga59816b3c275bf13857e694c6ecec5fc9ae9a58f3f6f2d5b1594f79002a63ab1e3 @ _SocketAccessControlPadding a00860.html ga59816b3c275bf13857e694c6ecec5fc9a1dc538633f1283be3bf70040130cd57d MediaStreamError a00894.html ga7378559696fef6d79ded2b9507834145 @ MediaStreamErrorUnknown a00860.html ga7378559696fef6d79ded2b9507834145a0bf9d4b1584d32b1aaf7b266e674ffc3 @ MediaStreamErrorEOS a00860.html ga7378559696fef6d79ded2b9507834145a57fb46b28042ed7bc1cf83c91362eb0d @ MediaStreamErrorCodecNegotiationFailed a00860.html ga7378559696fef6d79ded2b9507834145a31c11d8f2f55c182da9c3574f4ebc92a @ MediaStreamErrorConnectionFailed a00860.html ga7378559696fef6d79ded2b9507834145ae19086364c9c7ceef90692cc5e3c4553 @ MediaStreamErrorNetworkError a00860.html ga7378559696fef6d79ded2b9507834145ac7d864eb9b8517195597bc1b4e11136b @ MediaStreamErrorNoCodecs a00860.html ga7378559696fef6d79ded2b9507834145a1cddeded4db95f017084436dedff81fc @ MediaStreamErrorInvalidCMBehavior a00860.html ga7378559696fef6d79ded2b9507834145ac17c1e925b6c43ac849221266d95abe8 @ MediaStreamErrorMediaError a00860.html ga7378559696fef6d79ded2b9507834145a49acb3724b348b1814a90fa1117b71e4 @ _MediaStreamErrorPadding a00860.html ga7378559696fef6d79ded2b9507834145a3a472fa4d8cb01f7528fd315715ddece MediaStreamBaseProto a00894.html ga58b6c53046bff44524cbbd491d92b4dd @ MediaStreamBaseProtoUDP a00860.html ga58b6c53046bff44524cbbd491d92b4dda1a45c84819c5f5aa636721fa8c708ca3 @ MediaStreamBaseProtoTCP a00860.html ga58b6c53046bff44524cbbd491d92b4ddac73367ac89da1393cead276ab54d0d69 @ _MediaStreamBaseProtoPadding a00860.html ga58b6c53046bff44524cbbd491d92b4dda144e797fd2edc04784a7e733b346315a MediaStreamTransportType a00894.html gabaca565c16b2802bb9ea5cbf6b6a4327 @ MediaStreamTransportTypeLocal a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327a4e1cd3df3ca51fe5491b3174c5084dcd @ MediaStreamTransportTypeDerived a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327a97b1a445af18a0893768798fa801d6b9 @ MediaStreamTransportTypeRelay a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327af4a2724c7f58b312e88a62f240681ace @ _MediaStreamTransportTypePadding a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327ad35bc6c05d123c807b61c8190d570f6d DebugLevel a00894.html gabcd296a1f2f46223df1468700a3e22dc @ DebugLevelError a00860.html gabcd296a1f2f46223df1468700a3e22dca8e1728f5f1c5dea6f5d6e3d7804571d2 @ DebugLevelCritical a00860.html gabcd296a1f2f46223df1468700a3e22dca7764c642ac4cb8ef7d765a4942e9a1fa @ DebugLevelWarning a00860.html gabcd296a1f2f46223df1468700a3e22dca6a0e73d20aacf43a7de1621228084032 @ DebugLevelMessage a00860.html gabcd296a1f2f46223df1468700a3e22dcab825ff1a2efce24bfa0acea9fbdfe5c7 @ DebugLevelInfo a00860.html gabcd296a1f2f46223df1468700a3e22dca97f62eb29596bee19b4e6c730977867d @ DebugLevelDebug a00860.html gabcd296a1f2f46223df1468700a3e22dcaf1bf23992286b9212eaeca48501f0c71 @ _DebugLevelPadding a00860.html gabcd296a1f2f46223df1468700a3e22dcad632475463b5493179e2fa8e65d70bba TLSCertificateState a00894.html ga4599a4b62efa6b890716cc33c204a899 @ TLSCertificateStatePending a00860.html ga4599a4b62efa6b890716cc33c204a899ae43c8b95d2be8e8a725ec871be1915f5 @ TLSCertificateStateAccepted a00860.html ga4599a4b62efa6b890716cc33c204a899a92f9dceb8c50ead8b2e414cdf67e4691 @ TLSCertificateStateRejected a00860.html ga4599a4b62efa6b890716cc33c204a899a55ab7c9dfdf2f2f2f8d86761def3564c @ _TLSCertificateStatePadding a00860.html ga4599a4b62efa6b890716cc33c204a899a1ea99d4faa537948f77aab306daaca69 TLSCertificateRejectReason a00894.html gad74334f93654c0c1adbdd03ee0196488 @ TLSCertificateRejectReasonUnknown a00860.html gad74334f93654c0c1adbdd03ee0196488a6b18f12c84b98e2e5fcdf543f9f18cb6 @ TLSCertificateRejectReasonUntrusted a00860.html gad74334f93654c0c1adbdd03ee0196488afd94cbef2b741adf31344098db448efd @ TLSCertificateRejectReasonExpired a00860.html gad74334f93654c0c1adbdd03ee0196488a5394a96eccdc3b21cd7dd3d3cd2a98a6 @ TLSCertificateRejectReasonNotActivated a00860.html gad74334f93654c0c1adbdd03ee0196488a6cdc7c812f6988bda6efc8717149b892 @ TLSCertificateRejectReasonFingerprintMismatch a00860.html gad74334f93654c0c1adbdd03ee0196488a96e7dd1a7b4ad5b3e85d2632ddb6adc0 @ TLSCertificateRejectReasonHostnameMismatch a00860.html gad74334f93654c0c1adbdd03ee0196488a2b85f82659b659086956189f2b30ce1e @ TLSCertificateRejectReasonSelfSigned a00860.html gad74334f93654c0c1adbdd03ee0196488a0ed2c1a19819284a4142db4d6468ef49 @ TLSCertificateRejectReasonRevoked a00860.html gad74334f93654c0c1adbdd03ee0196488aa65901c32dbe47596ff4af0ab7f0d071 @ TLSCertificateRejectReasonInsecure a00860.html gad74334f93654c0c1adbdd03ee0196488addf4f700339e938b9c8b57e242363a8b @ TLSCertificateRejectReasonLimitExceeded a00860.html gad74334f93654c0c1adbdd03ee0196488acf4bf671caa2ab60767794321c1a4d52 @ _TLSCertificateRejectReasonPadding a00860.html gad74334f93654c0c1adbdd03ee0196488a613cc55b18197783c0b95a72feb072e1 CallContentPacketizationType a00894.html gaf4760523ed21820d3c2a6e74a230defe @ CallContentPacketizationTypeRTP a00860.html gaf4760523ed21820d3c2a6e74a230defead0b067ea6416e64cca910812a12f1cf6 @ CallContentPacketizationTypeRaw a00860.html gaf4760523ed21820d3c2a6e74a230defea50512d6e710cc8d4fc30a0ebe5ab5343 @ CallContentPacketizationTypeMSNWebcam a00860.html gaf4760523ed21820d3c2a6e74a230defea916ffc6cf0d6dee0a06e8238ac5a6262 @ _CallContentPacketizationTypePadding a00860.html gaf4760523ed21820d3c2a6e74a230defeab66a3102877d1c05cbe0b597c101bb5e CallContentDisposition a00894.html ga0b9c2541a4cb18bd89fb50dc37c057ad @ CallContentDispositionNone a00860.html ga0b9c2541a4cb18bd89fb50dc37c057adadfc0b70af8ad2490d73f50aa1f474aee @ CallContentDispositionInitial a00860.html ga0b9c2541a4cb18bd89fb50dc37c057adadb7ace9352dc4088311da29a12b7be4f @ _CallContentDispositionPadding a00860.html ga0b9c2541a4cb18bd89fb50dc37c057adaaca3027c7f76035ce61ba1be39ecf11a RCPTXRRTTMode a00894.html ga69b6598dfe33d3f82bf225d6e387aaee @ RCPTXRRTTModeAll a00860.html ga69b6598dfe33d3f82bf225d6e387aaeeae6bc80f78b2f3ba88969b7289e3bb60c @ RCPTXRRTTModeSender a00860.html ga69b6598dfe33d3f82bf225d6e387aaeea0075f473c2a6254b3e888e0291b9c115 @ _RCPTXRRTTModePadding a00860.html ga69b6598dfe33d3f82bf225d6e387aaeea0f035c43a2ca7bd34048524b3991f114 StreamFlowState a00894.html ga57557f44cb750a772273d285d131242b @ StreamFlowStateStopped a00860.html ga57557f44cb750a772273d285d131242ba8042d34a732148f8b9bd0bb41e284c6b @ StreamFlowStatePendingStart a00860.html ga57557f44cb750a772273d285d131242ba0d736e7ccaec759526ee4b821d325a66 @ StreamFlowStatePendingStop a00860.html ga57557f44cb750a772273d285d131242ba0776426f146a2db8cf03c2572e49f31a @ StreamFlowStateStarted a00860.html ga57557f44cb750a772273d285d131242ba6c86f88a465502140f506bb0582f815d @ _StreamFlowStatePadding a00860.html ga57557f44cb750a772273d285d131242ba8249702021ca71004be5c89072c6b9c3 CallStreamCandidateType a00894.html gaf49827bf619488a43ca02670b391d981 @ CallStreamCandidateTypeNone a00860.html gaf49827bf619488a43ca02670b391d981afec61a63031e9bb39e28e6d6b43483d0 @ CallStreamCandidateTypeHost a00860.html gaf49827bf619488a43ca02670b391d981a7e6dca8593d61df8c1e939c8751e5a3a @ CallStreamCandidateTypeServerReflexive a00860.html gaf49827bf619488a43ca02670b391d981aff7471655affad557d59f8ab9367e54a @ CallStreamCandidateTypePeerReflexive a00860.html gaf49827bf619488a43ca02670b391d981acdda0ef65ecd90be69838c8bd67b4397 @ CallStreamCandidateTypeRelay a00860.html gaf49827bf619488a43ca02670b391d981a3bc120cfd06d0a7d18eaff40f2351ba7 @ CallStreamCandidateTypeMulticast a00860.html gaf49827bf619488a43ca02670b391d981a763e0f7ba4240229a26d73f0985dfd1c @ _CallStreamCandidateTypePadding a00860.html gaf49827bf619488a43ca02670b391d981a49d9190ff0c52058300b26602fd0c111 StreamComponent a00894.html gacba6e022f5b3292e88e2fb372c4e47b1 @ StreamComponentUnknown a00860.html gacba6e022f5b3292e88e2fb372c4e47b1af11a292444ac96a318352472fbf89216 @ StreamComponentData a00860.html gacba6e022f5b3292e88e2fb372c4e47b1a9bbe638136d2227d22e8f66918d86773 @ StreamComponentControl a00860.html gacba6e022f5b3292e88e2fb372c4e47b1a05e60bcb1450fe294cd7df6c8c53044f @ _StreamComponentPadding a00860.html gacba6e022f5b3292e88e2fb372c4e47b1a31763624549378b90218ef258e167325 StreamTransportType a00894.html gaab74feeec5bd0954e333caff3d971908 @ StreamTransportTypeUnknown a00860.html gaab74feeec5bd0954e333caff3d971908a19f0a61eb96ad82bdb787f69d0dc89fb @ StreamTransportTypeRawUDP a00860.html gaab74feeec5bd0954e333caff3d971908a673b45035add5c8eed84fc1f9bac0485 @ StreamTransportTypeICE a00860.html gaab74feeec5bd0954e333caff3d971908a777571595958760552d5118f97dff6ec @ StreamTransportTypeGTalkP2P a00860.html gaab74feeec5bd0954e333caff3d971908a35b2a77e3e69586f1bc08cc57a249599 @ StreamTransportTypeWLM2009 a00860.html gaab74feeec5bd0954e333caff3d971908a993dca4ce5c486bda2fb11eafffc600f @ StreamTransportTypeSHM a00860.html gaab74feeec5bd0954e333caff3d971908a07ad46f02a8d2351199bd0ff0e8109c3 @ StreamTransportTypeMulticast a00860.html gaab74feeec5bd0954e333caff3d971908a484a7f0c13e0fc6bd3b9646d3b3bc0d5 @ _StreamTransportTypePadding a00860.html gaab74feeec5bd0954e333caff3d971908a051cb55507eaab4b0330de993e03df1d SendingState a00894.html ga0c88294dbc48b75ba591dfab17ce8b0d @ SendingStateNone a00860.html ga0c88294dbc48b75ba591dfab17ce8b0da26a19edd449bb2334e5cdf6bc4b4076e @ SendingStatePendingSend a00860.html ga0c88294dbc48b75ba591dfab17ce8b0dad21a2ad2c8e8387672e3e60c9e3b05b6 @ SendingStateSending a00860.html ga0c88294dbc48b75ba591dfab17ce8b0daee8d5d7a2b72019255526874c7129fc0 @ SendingStatePendingStopSending a00860.html ga0c88294dbc48b75ba591dfab17ce8b0dac8fa85d237e13399527dafaeeeaadcf7 @ _SendingStatePadding a00860.html ga0c88294dbc48b75ba591dfab17ce8b0da30979609450bae8f0c5d74d6956f0b6d StreamEndpointState a00894.html gae7b563baf8ac09ee12a00f04e87703bd @ StreamEndpointStateConnecting a00860.html gae7b563baf8ac09ee12a00f04e87703bdab45f4463e556edd5e20cddd2032f5db2 @ StreamEndpointStateProvisionallyConnected a00860.html gae7b563baf8ac09ee12a00f04e87703bda74f5426e8522a80aabb32245a61bb8cb @ StreamEndpointStateFullyConnected a00860.html gae7b563baf8ac09ee12a00f04e87703bda6b3cc61f92e6ddead82cb11220319552 @ StreamEndpointStateExhaustedCandidates a00860.html gae7b563baf8ac09ee12a00f04e87703bdae2c9fd368bdce2ce2b4cf4ed0bbc44ae @ StreamEndpointStateFailed a00860.html gae7b563baf8ac09ee12a00f04e87703bda4437db7b85f19cb3a33ca7e836bb297f @ _StreamEndpointStatePadding a00860.html gae7b563baf8ac09ee12a00f04e87703bdaac58b7865c4ea4ffb711313e029e192d LocalMuteState a00894.html gafe7952a81b71b90fa8296454d01903ee @ LocalMuteStateUnmuted a00860.html gafe7952a81b71b90fa8296454d01903eeacc3cb4718e917cb24883a60be342c1ef @ LocalMuteStateMuted a00860.html gafe7952a81b71b90fa8296454d01903eea6a878278092d39c77aca54139cde6757 @ LocalMuteStatePendingMute a00860.html gafe7952a81b71b90fa8296454d01903eeaf036a3c5ac5cfb451a12ee169545e7d8 @ LocalMuteStatePendingUnmute a00860.html gafe7952a81b71b90fa8296454d01903eea8eb35a864cd199c575e888b6c2e657ff @ LocalMuteStatePartiallyMuted a00860.html gafe7952a81b71b90fa8296454d01903eea96bb27b8c56b5b94135c00c7b8e763c9 @ _LocalMuteStatePadding a00860.html gafe7952a81b71b90fa8296454d01903eea954ce460b1cecacfe47fdb3415c02c1a const int NUM_HANDLE_TYPES a00894.html ga23b2937d54313f18fddc50e51049224e const int NUM_CONNECTION_STATUSES a00894.html ga51c527949738caf38c485424584857d5 const int NUM_CONNECTION_STATUS_REASONS a00894.html ga7c63da3bd56c6f3a9314cfd7d466ae77 const int NUM_CONTACT_LIST_STATES a00894.html gafef1b806b948eef363dedfd3c8550935 const int NUM_SUBSCRIPTION_STATES a00894.html ga1066026edb2c924dd29e932bf0919a46 const int NUM_CONTACT_METADATA_STORAGE_TYPES a00894.html gae6e621542ef62c295ebad595c025604a const int NUM_HTTP_METHODS a00894.html ga727991cbea866a0000d18fd648859bc4 const int NUM_SERVICE_POINT_TYPES a00894.html ga2c408002f5c6691e190129a5c4dd55b3 const int NUM_CONNECTION_PRESENCE_TYPES a00894.html gac34c7572bf4aaecc2eb197659acd6ec4 const int NUM_ACCESS_CONTROL_TYPES a00894.html gaaddadcf3a2c5f356f79d7cf64bcb882d const int NUM_RICH_PRESENCE_ACCESS_CONTROL_TYPES a00894.html ga9bf83e6421ec8ce49937b1e95dcc77f7 const int NUM_CALL_STATES a00894.html ga849bd71910b6fde122a6828a9e8f4b49 const int NUM_CALL_STATE_CHANGE_REASONS a00894.html ga6fef28e82103edf666921355cb8f9c6b const int NUM_CHANNEL_CONTACT_SEARCH_STATES a00894.html ga5db8cc76bbcb2bc5ff6107f8c4d6453d const int NUM_FILE_TRANSFER_STATES a00894.html gafb681ac850e01abad10e3b484b0cc49b const int NUM_FILE_TRANSFER_STATE_CHANGE_REASONS a00894.html ga12e304098543152629637e49b916cd7e const int NUM_FILE_HASH_TYPES a00894.html ga91b5a335352c614e3e8d7956b7d151eb const int NUM_MEDIA_STREAM_TYPES a00894.html ga020e591698bc4bb04e35e4f98bf8c4f3 const int NUM_MEDIA_STREAM_STATES a00894.html ga53ef05a24413185540bbabac7fb29a3d const int NUM_MEDIA_STREAM_DIRECTIONS a00894.html ga92b5a97b69111f5119fd280848b1620e const int NUM_CHANNEL_TEXT_SEND_ERRORS a00894.html ga5df5b92c1722194593fc4069b1fd64f5 const int NUM_CHANNEL_TEXT_MESSAGE_TYPES a00894.html gaa3b94c8371162c898b7dc14728b02d3d const int NUM_TUBE_TYPES a00894.html ga04cae570f6300564d66ab85bb27ff393 const int NUM_TUBE_STATES a00894.html ga570400a3501480a78ada6d73d014c961 const int NUM_CAPTCHA_CANCEL_REASONS a00894.html ga76b89d0bf3094770baacd799465ee799 const int NUM_CAPTCHA_STATUSES a00894.html ga2266c7cf2ca710a664856fa617110e56 const int NUM_CHANNEL_CHAT_STATES a00894.html ga67f78e8d718687643b8a0916c8542208 const int NUM_DTMF_EVENTS a00894.html gaf57308ae5e0b480074d78a82194c05ce const int NUM_CHANNEL_GROUP_CHANGE_REASONS a00894.html ga392978c063029d424528a211471fd2a7 const int NUM_LOCAL_HOLD_STATES a00894.html gaa14f82b50ba815d15d1b132996a3779d const int NUM_LOCAL_HOLD_STATE_REASONS a00894.html ga76b407b65cc8c85810b124a5fb276345 const int NUM_DELIVERY_STATUSES a00894.html gacb7da01546b06ac67f5f3590c51c0db6 const int NUM_SASL_ABORT_REASONS a00894.html ga698fb6ee1474ba869f85b16bd2b0d366 const int NUM_SASL_STATUSES a00894.html gad05aae22ce147fc1c4ccb3713e524238 const int NUM_TUBE_CHANNEL_STATES a00894.html ga6a3a2b74a0cdd175165e9feb92a8e6d7 const int NUM_SOCKET_ADDRESS_TYPES a00894.html ga6b1c5504e1e1efd5351a37388aa4bdd5 const int NUM_SOCKET_ACCESS_CONTROLS a00894.html ga06b3062a1e6701d0e4f3b0a0c3334e80 const int NUM_MEDIA_STREAM_ERRORS a00894.html gadf99f8a1e60cfffdd5a02f7dceaf48bd const int NUM_MEDIA_STREAM_BASE_PROTOS a00894.html gac164eea6c21c2cd8a0f2b31aeb1f57a1 const int NUM_MEDIA_STREAM_TRANSPORT_TYPES a00894.html ga869d382e013d33a2f0d76390ec45dedc const int NUM_DEBUG_LEVELS a00894.html gaf443bff5b0eb066745920d8c81b3f47f const int NUM_TLS_CERTIFICATE_STATES a00894.html gaeb4f950a81daa039aeb673febe49fc5c const int NUM_TLS_CERTIFICATE_REJECT_REASONS a00894.html ga0f0ab633e7949e149a875dbf3a3f05e9 const int NUM_CALL_CONTENT_PACKETIZATION_TYPES a00894.html ga0603b7176d2161e8c6ac95e303952316 const int NUM_CALL_CONTENT_DISPOSITIONS a00894.html gacfe40cd91311309638b976aaa4e80b14 const int NUM_RCPT_XR_RTT_MODES a00894.html ga4c403e5aaa3b715de8710fd90a75d20f const int NUM_STREAM_FLOW_STATES a00894.html ga3795022133869c36d554a7874cd2c509 const int NUM_CALL_STREAM_CANDIDATE_TYPES a00894.html ga1b9cd2e8467258595f6dac7928eaf088 const int NUM_STREAM_COMPONENTS a00894.html gadb2306434f320cdd80edb9d573c76812 const int NUM_STREAM_TRANSPORT_TYPES a00894.html ga3eb19089259af918c9df32ab4648be98 const int NUM_SENDING_STATES a00894.html gafd9a5c0d96a7c1bc589a753452967a99 const int NUM_STREAM_ENDPOINT_STATES a00894.html ga453416f5d42ca929eb395db54bc923fb const int NUM_LOCAL_MUTE_STATES a00894.html gab19d9073477a6c48d5b73fee0809e7d6 ifacestrconsts Interface string constants a00895.html #define TP_QT_IFACE_CONNECTION_MANAGER a00895.html gaf2d69eebd87916358dbb2789c22c8a3b #define TP_QT_IFACE_PROTOCOL a00895.html gac396e03d3f80971c45c0ede00b49e657 #define TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING a00895.html gaa387a1500f1269dc3b46a79fe8f192de #define TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS a00895.html ga66f0a419993fa30a62718db3bf9040b3 #define TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE a00895.html ga8d1ecfa5822a767d0ae88c218aac5fa5 #define TP_QT_IFACE_CONNECTION a00895.html ga7f57ff8160f3d992ef409e7ea555292f #define TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING a00895.html ga1a17f21cce3d103303a154b427790034 #define TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING a00895.html ga7dddb9b2e33927d8789777f8275177db #define TP_QT_IFACE_CONNECTION_INTERFACE_ANONYMITY a00895.html gaa482d3b6ca7f8fbf2b741a17f6d1802a #define TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS a00895.html gaab8b6e3cffd9105b1736134f91dadd05 #define TP_QT_IFACE_CONNECTION_INTERFACE_BALANCE a00895.html ga2fde533d84a80c6e7e3890ef0562a7c1 #define TP_QT_IFACE_CONNECTION_INTERFACE_CAPABILITIES a00895.html ga2d05b341f45019c5050648fe4d65c892 #define TP_QT_IFACE_CONNECTION_INTERFACE_CELLULAR a00895.html ga8a9954037f090267134140ac586bb4eb #define TP_QT_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES a00895.html ga4e383e15608bb492a832569befe14a35 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS a00895.html ga148e8449c3c3391f45c280a7f1b3745a #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING a00895.html ga05ce59b2d2c80ad26bfcb7abe85fac47 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES a00895.html gacbe3d2fe2970be4f9898d36aaed2dd12 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS a00895.html ga30b74ef961f26ef66ae3a4eb06cd3adf #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO a00895.html ga1c46f67f04a180fa07dcffdadc3d9fc0 #define TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST a00895.html ga6522a15993c79e2ecb484a411a627537 #define TP_QT_IFACE_CONNECTION_INTERFACE_LOCATION a00895.html ga262bc6500bee934f3fa86b1ea83d7cdc #define TP_QT_IFACE_CONNECTION_INTERFACE_MAIL_NOTIFICATION a00895.html gad21a3a085137185b4871b0f620b55529 #define TP_QT_IFACE_CONNECTION_INTERFACE_POWER_SAVING a00895.html gab61a3f71bbcd6487c8e7b999eda20948 #define TP_QT_IFACE_CONNECTION_INTERFACE_PRESENCE a00895.html gabc8bdc7264be87cc72bcc78d382196f9 #define TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS a00895.html gad582414cb2c29431dd483c4909608b37 #define TP_QT_IFACE_CONNECTION_INTERFACE_SERVICE_POINT a00895.html ga9b014d8d38d88f1835664eed6f9acc8c #define TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE a00895.html ga50eab47acb39f6ff34cb7c980719f08b #define TP_QT_IFACE_CHANNEL a00895.html ga843f2cc845c26cf7652414d23333f90d #define TP_QT_IFACE_CHANNEL_TYPE_CALL a00895.html gadb1792f7a67278262a7018537a62838b #define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST a00895.html gaf68d4007bd80ac57aa96cfaf626c6f50 #define TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH a00895.html gaba26df25134e3db06f093e698d41da9a #define TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE a00895.html ga8bff1bf79350dd8bab1bdf36ad255f9b #define TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER a00895.html gaed5b7f0554952282b8cbb7f940428bec #define TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST a00895.html ga29ed77fac161f576f4c388b9d7338156 #define TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION a00895.html gaf03ade17a3c285e1e737e243a4e7e630 #define TP_QT_IFACE_CHANNEL_TYPE_SERVER_TLS_CONNECTION a00895.html gac1c8d66b90f883ea4fac9b87bf63d6d4 #define TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA a00895.html gabb44bae5a1606889ffd5bc2ef84f1234 #define TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE a00895.html gad6f6ec071229d19a0af87d8167a8e824 #define TP_QT_IFACE_CHANNEL_TYPE_TEXT a00895.html gaa3c70264a3a68388140b0ac0c0d98ba0 #define TP_QT_IFACE_CHANNEL_TYPE_TUBES a00895.html ga764d9b1a9d4890fb76ef97639f26a65a #define TP_QT_IFACE_CHANNEL_INTERFACE_ANONYMITY a00895.html ga8bffe3efe73776bae7096b4132ac4430 #define TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION a00895.html ga5d521a511f87f8553589fae06d616fac #define TP_QT_IFACE_CHANNEL_INTERFACE_CALL_STATE a00895.html ga57f5b68664e75ad0756be5daacd58c78 #define TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE a00895.html ga80f62096abef0aa2510ddd474cdfdab4 #define TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE a00895.html ga33ecf5d19a11ada53bb1608899b8fa37 #define TP_QT_IFACE_CHANNEL_INTERFACE_DESTROYABLE a00895.html gaac1efd7f28d5823846d722df630cae2e #define TP_QT_IFACE_CHANNEL_INTERFACE_DTMF a00895.html ga0dd3ad6e12d0b246142fad5ff9c33aa6 #define TP_QT_IFACE_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA a00895.html ga2682dc0f2516a82e8943444d15cf2538 #define TP_QT_IFACE_CHANNEL_INTERFACE_GROUP a00895.html gaa67c0597f60010c798d069d7e5a57ec9 #define TP_QT_IFACE_CHANNEL_INTERFACE_HOLD a00895.html gaedbbe6335a1c8a97ac938a89efe2897c #define TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING a00895.html ga44533972496f82f85a19b1a129089420 #define TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES a00895.html ga0ae686d14bb7a32f6b55969ae3886578 #define TP_QT_IFACE_CHANNEL_INTERFACE_PASSWORD a00895.html ga4d82b94624b027d8b676493a27cf8923 #define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM a00895.html ga1abbc62771f0379756e0ca89f02581ab #define TP_QT_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG a00895.html gabf5d143684ffa3d6b1a510f50ff31584 #define TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION a00895.html ga68dc4520146e486e951f113c226b3a35 #define TP_QT_IFACE_CHANNEL_INTERFACE_SECURABLE a00895.html ga6823b5e6cb145a79f772848542552225 #define TP_QT_IFACE_CHANNEL_INTERFACE_SERVICE_POINT a00895.html gabc616bd3a7ff8dd5a27e24d7cd0bf2b4 #define TP_QT_IFACE_CHANNEL_INTERFACE_SMS a00895.html ga4586f832364863d3837b0c6a53dc08d5 #define TP_QT_IFACE_CHANNEL_INTERFACE_SUBJECT a00895.html ga9f6f8caa6c3093e3f1c6a62fe314e0b4 #define TP_QT_IFACE_CHANNEL_INTERFACE_TUBE a00895.html ga6ab95706f3c48f1a49566b674c5e1775 #define TP_QT_IFACE_CHANNEL_DISPATCHER a00895.html ga41548e8382e95accee0a557c8fe23786 #define TP_QT_IFACE_CHANNEL_DISPATCHER_INTERFACE_MESSAGES1 a00895.html gae8a25f2cb5c63c89764d5eaf3c5524c6 #define TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION a00895.html ga1b6580c0d18a9597a0588719e9d11480 #define TP_QT_IFACE_CHANNEL_REQUEST a00895.html gabc1b3633ecdd689901bd9492f95eebc6 #define TP_QT_IFACE_MEDIA_SESSION_HANDLER a00895.html ga16b6d9eb00bf820a55ffb1805b22bb7a #define TP_QT_IFACE_MEDIA_STREAM_HANDLER a00895.html ga1723adbd66f8992c0b1b0838429f480f #define TP_QT_IFACE_DBUS_DAEMON a00895.html ga0f49a38039830b1c49df81850aa9bd32 #define TP_QT_IFACE_INTROSPECTABLE a00895.html ga560c2a797d227718341ad4939666ddb7 #define TP_QT_IFACE_PEER a00895.html ga6990e389958424947765f09a90cbdfe1 #define TP_QT_IFACE_PROPERTIES a00895.html ga252ed4b1cbbe14c0f772a77f4be41363 #define TP_QT_IFACE_DEBUG a00895.html ga97a740413a803402a5e3755100edd972 #define TP_QT_IFACE_PROPERTIES_INTERFACE a00895.html ga71d7dfb70d71a9196f7904ca2274883c #define TP_QT_IFACE_ACCOUNT_MANAGER a00895.html gab300a056e3491c334bf7dd3b57c288ef #define TP_QT_IFACE_ACCOUNT a00895.html gae5e5cf3d74338b3c96eb3792e171cb89 #define TP_QT_IFACE_ACCOUNT_INTERFACE_ADDRESSING a00895.html ga800d76b425ca6ebf5c2db7270cb5f74b #define TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR a00895.html ga0e8e90f360595814598ae0b1a9fda801 #define TP_QT_IFACE_ACCOUNT_INTERFACE_STORAGE a00895.html gab626be3e9cb8ac4c82f826e9d6f35702 #define TP_QT_IFACE_CLIENT a00895.html gafeed14b1b373bd5d0780a0a9be240e63 #define TP_QT_IFACE_CLIENT_OBSERVER a00895.html gaa698d51161c6dabaea74775099bd9922 #define TP_QT_IFACE_CLIENT_APPROVER a00895.html ga728bd2dc837fa91c5f446c0189eb3607 #define TP_QT_IFACE_CLIENT_HANDLER a00895.html gad8a287a33d2a4d4455d755666c182ef6 #define TP_QT_IFACE_CLIENT_INTERFACE_REQUESTS a00895.html gad4a7fc1e1c48893b9dddfe61599685ed #define TP_QT_IFACE_AUTHENTICATION_TLS_CERTIFICATE a00895.html gaceb8c3205d26ba9c93f7cb14a95913be #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_MEDIA a00895.html ga19064156c397c3294b4c22fa137a77fd #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF a00895.html ga84390e181e0725ed2d6ef6445af265ea #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL a00895.html ga69a72ae647358e2fd7bc1cd93aaafbed #define TP_QT_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL a00895.html ga8c5988653107a7028431ee07dd4e3b76 #define TP_QT_IFACE_CALL_CONTENT a00895.html gadd0ef288e767073b06e142d8bd02c555 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS a00895.html ga0dec517846794df9cb3abf573fc61d7d #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK a00895.html gaa2e24286eb4e19e9203859a439293a31 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS a00895.html ga90cdd1c7c1496785a487ce5b92f15a27 #define TP_QT_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION a00895.html gad76b2760da1d5d7412d51e2b42667b8f #define TP_QT_IFACE_CALL_STREAM_INTERFACE_MEDIA a00895.html gaf54a92b45fac3c4fd28c749866be87cd #define TP_QT_IFACE_CALL_STREAM a00895.html ga179c247d57183f70c2cd40bfff7394b6 #define TP_QT_IFACE_CALL_STREAM_ENDPOINT a00895.html ga98f44a1349a84dbbf0a87d43679fd98b #define TP_QT_IFACE_CALL_INTERFACE_MUTE a00895.html ga0982c977d5c22106dbadf3c54a11e6da errorstrconsts Error string constants a00896.html #define TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER a00896.html ga6564dfeb1fd342f909aa574d2c43dd9a #define TP_QT_DBUS_ERROR_UNKNOWN_INTERFACE a00896.html ga4fb645cf561929893f374c23a6438cdb #define TP_QT_DBUS_ERROR_UNKNOWN_METHOD a00896.html gabbfd8f6a898f01b96c6a9c854444a369 #define TP_QT_ERROR_OBJECT_REMOVED a00896.html gac29742c58a9a6ec646939e005873c497 #define TP_QT_ERROR_INCONSISTENT a00896.html ga41a4cf084fb4f49265ff3214cc61cecb #define TP_QT_ERROR_ORPHANED a00896.html ga380cd75c260c398bf1bc67785b838ae0 #define TP_QT_ERROR_NETWORK_ERROR a00896.html ga65e9021101931112e71cac342f39bec6 #define TP_QT_ERROR_NOT_IMPLEMENTED a00896.html ga5578e1b4fc9e7c798ac652002e1ee867 #define TP_QT_ERROR_INVALID_ARGUMENT a00896.html ga748489420e8c33e725363f9f5e1cadf4 #define TP_QT_ERROR_NOT_AVAILABLE a00896.html ga142d0c5162cadf41ef1737532aef012d #define TP_QT_ERROR_PERMISSION_DENIED a00896.html gaff6cdf30606d29f299c517e0609fa8d4 #define TP_QT_ERROR_DISCONNECTED a00896.html ga81c5413de9e100afc33233fb0149cfd7 #define TP_QT_ERROR_INVALID_HANDLE a00896.html gada56cf0f29dd9b846fe24529d2f3dbea #define TP_QT_ERROR_CHANNEL_BANNED a00896.html gae6f61b274461415f7feb58b0b1f0cc6e #define TP_QT_ERROR_CHANNEL_FULL a00896.html ga5e2a776fd4d9b3d589144c4226bf4058 #define TP_QT_ERROR_CHANNEL_INVITE_ONLY a00896.html ga2f7d257f26d5e52a1a399be07598316d #define TP_QT_ERROR_NOT_YOURS a00896.html ga353c44a48d9b850d5708e8c76dd27902 #define TP_QT_ERROR_CANCELLED a00896.html ga52bfa67b2af1655d7cdd66c516020812 #define TP_QT_ERROR_AUTHENTICATION_FAILED a00896.html ga3101a5aac3ee3bb0fb7d57f91dd13083 #define TP_QT_ERROR_ENCRYPTION_NOT_AVAILABLE a00896.html gabe2260dbb5c6f15a3d08912eeca3d974 #define TP_QT_ERROR_ENCRYPTION_ERROR a00896.html ga991c5c813352d541bd864d77fef2dd21 #define TP_QT_ERROR_CERT_NOT_PROVIDED a00896.html ga0ec967168175a000d6752bbe56cd4395 #define TP_QT_ERROR_CERT_UNTRUSTED a00896.html gacf29162fdea09b31fae947c77612bd95 #define TP_QT_ERROR_CERT_EXPIRED a00896.html gaf805864981be5a31bfae3e076d80474f #define TP_QT_ERROR_CERT_NOT_ACTIVATED a00896.html gabc79cad4eddc564712c2bf6a0ce6190d #define TP_QT_ERROR_CERT_FINGERPRINT_MISMATCH a00896.html ga1997bbc705628a9de2e96a9ce12cd8de #define TP_QT_ERROR_CERT_HOSTNAME_MISMATCH a00896.html ga0007a99b4966022ad5ed651a045a4367 #define TP_QT_ERROR_CERT_SELF_SIGNED a00896.html ga2fcadf7e8f7e8ca6272ce52a29ef9814 #define TP_QT_ERROR_CERT_REVOKED a00896.html ga022d8543d83be2fe8a4ef5fd03a89c38 #define TP_QT_ERROR_CERT_INSECURE a00896.html ga9a2156b2b4d55f55d596da1dd4fa639b #define TP_QT_ERROR_CERT_INVALID a00896.html gad6299d6f3c3f5b3ba0b104902c41638e #define TP_QT_ERROR_CERT_LIMIT_EXCEEDED a00896.html gafe234058d08b264b2e9764de4bf2c028 #define TP_QT_ERROR_NOT_CAPABLE a00896.html gac6ca70c7dcc9c7844667bbec2c52930b #define TP_QT_ERROR_OFFLINE a00896.html ga15c3c72b6c2e733b5bd5732b63fcce20 #define TP_QT_ERROR_CHANNEL_KICKED a00896.html gafa1d05f6d7216c6244c8c70af0bb7eeb #define TP_QT_ERROR_BUSY a00896.html gaff38238e3c8bd7ef22160214485eb634 #define TP_QT_ERROR_NO_ANSWER a00896.html ga82e60beacf86b1c0090b4a4763282c72 #define TP_QT_ERROR_DOES_NOT_EXIST a00896.html gaa71c0c24ba84d399c6e4fafa0f488a1e #define TP_QT_ERROR_TERMINATED a00896.html ga554d146983e044faad499d8ab0ce7eb5 #define TP_QT_ERROR_MEDIA_CODECS_INCOMPATIBLE a00896.html gaf07f17f02857d4393e26d92fdef1532d #define TP_QT_ERROR_MEDIA_UNSUPPORTED_TYPE a00896.html ga5a9bb6962c0f91e3563c217ef3bc8858 #define TP_QT_ERROR_MEDIA_STREAMING_ERROR a00896.html ga09f909dfc4522052ef2e1380046e200c #define TP_QT_ERROR_CONNECTION_REFUSED a00896.html ga0e76cc288ad8aa3c7d37ae644f6c911a #define TP_QT_ERROR_CONNECTION_FAILED a00896.html ga0d795bda9a3037474f1e0f150f3a5eb8 #define TP_QT_ERROR_CONNECTION_LOST a00896.html gae1c989d22b8611d5c748a31b693069ab #define TP_QT_ERROR_ALREADY_CONNECTED a00896.html ga8767758a0528481e78e7cbf27511be28 #define TP_QT_ERROR_CONNECTION_REPLACED a00896.html gad8d7ccfb2940598020cb410025e76c84 #define TP_QT_ERROR_REGISTRATION_EXISTS a00896.html ga4778df780a24b8bbe0dc5112bda7632b #define TP_QT_ERROR_SERVICE_BUSY a00896.html ga222e5f91acea45d362f8fa7b5d812034 #define TP_QT_ERROR_RESOURCE_UNAVAILABLE a00896.html ga0d4fbb909e1be3e00b0449f669ffb1fe #define TP_QT_ERROR_WOULD_BREAK_ANONYMITY a00896.html gad3d9877680070b453049e3ce6e4c49d7 #define TP_QT_ERROR_NOT_YET a00896.html ga912fa571003c4b9e9928b3af24b4fbc1 #define TP_QT_ERROR_REJECTED a00896.html ga2fbddff7b80dfc9461e133d96aaf6e25 #define TP_QT_ERROR_PICKED_UP_ELSEWHERE a00896.html ga16d46c17e689d40dd2ad13cbc760bca5 #define TP_QT_ERROR_SERVICE_CONFUSED a00896.html ga1a487cbd9d7d181aa29819b7bb2e244f #define TP_QT_ERROR_CONFUSED a00896.html gab5d9784bed7369eb655a0adaf959f7f0 #define TP_QT_ERROR_SOFTWARE_UPGRADE_REQUIRED a00896.html ga4bcfa78b05f6ab9aa2ce2b02f214c88e #define TP_QT_ERROR_EMERGENCY_CALLS_NOT_SUPPORTED a00896.html gac5d046fde515ad093e7ac84452a3966d #define TP_QT_ERROR_INSUFFICIENT_BALANCE a00896.html gad5ab7dddf12ffcfce38bd3ce0e3c50a1 #define TP_QT_ERROR_CAPTCHA_NOT_SUPPORTED a00896.html ga889bb3bc3f81633c6aba3b77747ac549 struct Structure types a00897.html Tp::AccessControl Tp::AliasPair Tp::Avatar Tp::CallStateReason Tp::Candidate Tp::CapabilityChange Tp::CapabilityPair Tp::CaptchaInfo Tp::ChannelDetails Tp::ChannelInfo Tp::ContactCapability Tp::ContactInfoField Tp::ContactSubscriptions Tp::CurrencyAmount Tp::DBusTubeMember Tp::DebugMessage Tp::FieldSpec Tp::HTTPPostData Tp::LocalPendingInfo Tp::MailAddress Tp::MediaDescriptionOffer Tp::MediaSessionHandlerInfo Tp::MediaStreamHandlerTransport Tp::MediaStreamInfo Tp::NotDelegatedError Tp::ParamSpec Tp::PendingTextMessage Tp::PropertyFlagsChange Tp::PropertySpec Tp::PropertyValue Tp::RTCPFeedbackMessage Tp::RTPHeaderExtension Tp::RequestableChannelClass Tp::RichPresenceAccessControl Tp::RoomInfo Tp::ServicePoint Tp::SimplePresence Tp::SimpleStatusSpec Tp::SocketAddressIP Tp::SocketAddressIPv4 Tp::SocketAddressIPv6 Tp::SocketNetmaskIPv4 Tp::SocketNetmaskIPv6 Tp::StreamCredentials Tp::TLSCertificateRejection Tp::TubeInfo Tp::VideoResolution Tp::CandidatePair Tp::Codec Tp::HandlerCapabilities Tp::LastActivityAndStatuses Tp::MailURL Tp::MediaStreamHandlerCandidate Tp::MediaStreamHandlerCodec Tp::RTCPFeedbackMessageProperties Tp::ServicePointInfo Tp::StatusSpec list List types a00898.html Tp::ByteArrayList Tp::ObjectPathList Tp::UIntList QList< AliasPair > AliasPairList a00898.html ga757dcd94888605b4f0d79f51bbcefa43 QList< CallMemberMap > CallMemberMapList a00898.html gaa5adf4e7ccf57ae583ba83c368f16cb5 QList< Candidate > CandidateList a00898.html gabdf7af55b514b0489d75746e76d5ab10 QList< CapabilityChange > CapabilityChangeList a00898.html ga0b2d49e1af78f1ab8d9249a5c4fe70d0 QList< CapabilityPair > CapabilityPairList a00898.html ga892cf317320ab69b02832d5dfca9273f QList< CaptchaInfo > CaptchaInfoList a00898.html gacd79793ab0ea32490833447992f64d91 QList< ChannelClass > ChannelClassList a00898.html ga635ae458e9972df8168a2467b8a9a667 QList< ChannelDetails > ChannelDetailsList a00898.html ga7014d699ff46041f3c88a396205ba4c0 QList< ChannelInfo > ChannelInfoList a00898.html ga5475de9fd22232c0550ef18ddd96e2ce QList< ContactCapability > ContactCapabilityList a00898.html ga25a7874e81a5b1884bfedfbc9de2b21c QList< ContactInfoField > ContactInfoFieldList a00898.html ga1bcdf451db0cd688c513eb251f9db826 QList< DBusTubeMember > DBusTubeMemberList a00898.html gaeb042df04a14635e599e4aac67d8cded QList< DebugMessage > DebugMessageList a00898.html gab97304df3b85109e3c7b723885d9afa1 QList< FieldSpec > FieldSpecs a00898.html ga86e2b82675f7aad4acef3399f9ac4f6b QList< HTTPPostData > HTTPPostDataList a00898.html gae6c63eb506f3a6076b6c07f351bf5eb7 QList< LocalPendingInfo > LocalPendingInfoList a00898.html gac97059fe5c133488d4dcfec37f43df7b QList< Mail > MailList a00898.html gae50b7b034851b01778a874e609029b87 QList< MailAddress > MailAddressList a00898.html ga13bf9d3d2e169d01cb6a1aa1182bc2ea QList< MediaSessionHandlerInfo > MediaSessionHandlerInfoList a00898.html ga07ca0c62ada90c615ee10bd22c70fb94 QList< MediaStreamHandlerTransport > MediaStreamHandlerTransportList a00898.html gaa367912f1202d6f2b29071f31633cd3c QList< MediaStreamInfo > MediaStreamInfoList a00898.html ga65181a48014c66c341422e7af20a58a7 QList< MessagePart > MessagePartList a00898.html gad29671d375c7a5bf1e8228f609b0d828 QList< MessagePartList > MessagePartListList a00898.html ga456fa0c4d341085f96af5222d70706b4 QList< ObjectImmutablePropertiesMap > ObjectImmutablePropertiesMapList a00898.html ga75d8bde97d8b9504f88ce0c9217b1595 QList< ParamSpec > ParamSpecList a00898.html gae1edd4964ec61f36c336217c86d21604 QList< PendingTextMessage > PendingTextMessageList a00898.html ga2b02972934a7134c50f58df1ed939bc3 QList< PropertyFlagsChange > PropertyFlagsChangeList a00898.html ga22a74fc2e884c0cadf09239b313a1687 QList< PropertySpec > PropertySpecList a00898.html ga88f81e671a1a1683537b0cc1e36c7c67 QList< PropertyValue > PropertyValueList a00898.html ga8565f094dc81def1852362f954930926 QList< QualifiedPropertyValueMap > QualifiedPropertyValueMapList a00898.html ga470b743611827a78ba5c10d9adc3a076 QList< RTCPFeedbackMessage > RTCPFeedbackMessageList a00898.html ga1c6419f296cb4c6815ec60f3642f4036 QList< RTPHeaderExtension > RTPHeaderExtensionsList a00898.html ga61c9bbcf5540dd326191a2f300c96165 QList< RequestableChannelClass > RequestableChannelClassList a00898.html gac19bde94a4bfba9311f1f37fbbdbe05c QList< RoomInfo > RoomInfoList a00898.html ga61418665719aaef9e0608f87eccca306 QList< SocketAddressIP > SocketAddressIPList a00898.html ga6ed3041ef7a8dd5a4169eb5a987c5c87 QList< StringStringMap > StringStringMapList a00898.html ga2869383d5f0b7f2efb5a7329491a2d8d QList< StringVariantMap > StringVariantMapList a00898.html ga82068e180fc9d8c9c169e4210271bfe3 QList< TLSCertificateRejection > TLSCertificateRejectionList a00898.html gae14945f191d95a4d3ff67d53f8e0e821 QList< TubeInfo > TubeInfoList a00898.html gaf81388615dd2d8fda5d74dc55f277799 QList< VideoResolution > VideoResolutionStruct a00898.html gad361c0dec97af2c12b57c8e72a01c74f QList< CandidatePair > CandidatePairList a00898.html ga4483704f64d5813fb1aa69e534f2f6aa QList< Codec > CodecList a00898.html ga109edbf33ad8b050e75e62e629dbe524 QList< ContactCapabilitiesMap > ContactCapabilitiesMapList a00898.html gaaba776766eb7d3cdc9161288bec3be04 QList< HandlerCapabilities > HandlerCapabilitiesList a00898.html ga557ebc02ad2e9e0c40549cd20928f3a0 QList< MediaStreamHandlerCandidate > MediaStreamHandlerCandidateList a00898.html ga014d46ba19f093138774d4f80e4f923f QList< MediaStreamHandlerCodec > MediaStreamHandlerCodecList a00898.html ga19e9976a1866b5b395cc0f0e020c1389 QList< ServicePointInfo > ServicePointInfoList a00898.html ga1f268bf6d2790e4364cf6fe8b8b66ba5 mapping Mapping types a00899.html Tp::AddressingNormalizationMap Tp::AliasMap Tp::AvatarTokenMap Tp::CallMemberMap Tp::CandidateInfo Tp::CaptchaAnswers Tp::ChannelCallStateMap Tp::ChannelClass Tp::ChannelOriginatorMap Tp::ChatStateMap Tp::ComponentStateMap Tp::ContactAttributesMap Tp::ContactClientTypes Tp::ContactLocations Tp::ContactMediaDescriptionPropertiesMap Tp::ContactSSRCsMap Tp::ContactSearchMap Tp::ContactSendingStateMap Tp::DBusTubeParticipants Tp::HandleIdentifierMap Tp::HandleOwnerMap Tp::Location Tp::Mail Tp::MediaDescriptionProperties Tp::MessagePart Tp::MessagePartContentMap Tp::Metadata Tp::MultipleStatusMap Tp::ObjectImmutablePropertiesMap Tp::ProtocolPropertiesMap Tp::QualifiedPropertyValueMap Tp::SingleContactAttributesMap Tp::StringStringMap Tp::StringVariantMap Tp::SupportedSocketMap Tp::VCardFieldAddressMap Tp::ContactCapabilitiesMap Tp::ContactInfoMap Tp::ContactSearchResultMap Tp::ContactSubscriptionMap Tp::NotDelegatedMap Tp::SimpleContactPresences Tp::SimpleStatusSpecMap Tp::ContactCodecMap Tp::ContactPresences Tp::RTCPFeedbackMessageMap Tp::StatusSpecMap typesconstants Types and constants a00900.html utilityconsts flagtypeconsts enumtypeconsts ifacestrconsts errorstrconsts struct list mapping Tp a00860.html Tp::Farstream Tp::Client Tp::Service Tp::KeyFile Tp::ManagerFile Tp::AbstractAdaptor Tp::AbstractClient Tp::AbstractClientObserver Tp::AbstractClientApprover Tp::AbstractClientHandler Tp::AbstractInterface Tp::AccountFactory Tp::AccountManager Tp::AccountPropertyFilter Tp::AccountSet Tp::Account Tp::AndFilter Tp::AvatarData Tp::AvatarSpec Tp::AbstractCallContentInterface Tp::BaseCallContent Tp::BaseCallMuteInterface Tp::BaseCallContentDTMFInterface Tp::BaseChannel Tp::AbstractChannelInterface Tp::BaseChannelTextType Tp::BaseChannelMessagesInterface Tp::BaseChannelRoomListType Tp::BaseChannelServerAuthenticationType Tp::BaseChannelCaptchaAuthenticationInterface Tp::BaseChannelSASLAuthenticationInterface Tp::BaseChannelSecurableInterface Tp::BaseChannelChatStateInterface Tp::BaseChannelGroupInterface Tp::BaseChannelRoomInterface Tp::BaseChannelRoomConfigInterface Tp::BaseChannelCallType Tp::BaseChannelHoldInterface Tp::BaseChannelMergeableConferenceInterface Tp::BaseChannelSplittableInterface Tp::BaseChannelConferenceInterface Tp::BaseChannelSMSInterface Tp::BaseConnectionManager Tp::BaseConnection Tp::AbstractConnectionInterface Tp::BaseConnectionRequestsInterface Tp::BaseConnectionContactsInterface Tp::BaseConnectionSimplePresenceInterface Tp::BaseConnectionContactListInterface Tp::BaseConnectionContactInfoInterface Tp::BaseConnectionAddressingInterface Tp::BaseConnectionAliasingInterface Tp::BaseConnectionAvatarsInterface Tp::BaseProtocol Tp::AbstractProtocolInterface Tp::BaseProtocolAddressingInterface Tp::BaseProtocolAvatarsInterface Tp::BaseProtocolPresenceInterface Tp::CallChannel Tp::CallContent Tp::PendingCallContent Tp::CallStream Tp::AbstractFunctorCaller Tp::BaseFunctorCaller Tp::BaseCallback Tp::FunctorCaller0 Tp::Callback0 Tp::FunctorCaller1 Tp::Callback1 Tp::FunctorCaller2 Tp::Callback2 Tp::FunctorCaller3 Tp::Callback3 Tp::FunctorCaller4 Tp::Callback4 Tp::FunctorCaller5 Tp::Callback5 Tp::FunctorCaller6 Tp::Callback6 Tp::FunctorCaller7 Tp::Callback7 Tp::CapabilitiesBase Tp::CaptchaAuthentication Tp::Captcha Tp::ChannelClassSpec Tp::ChannelClassSpecList Tp::ChannelDispatchOperation Tp::ChannelFactory Tp::ChannelRequest Tp::ChannelRequestHints Tp::Channel Tp::ClientRegistrar Tp::ConnectionCapabilities Tp::ConnectionFactory Tp::ConnectionLowlevel Tp::ConnectionManagerLowlevel Tp::ConnectionManager Tp::Connection Tp::ContactCapabilities Tp::ContactFactory Tp::ContactManager Tp::ContactMessenger Tp::ContactSearchChannel Tp::Contact Tp::DBusError Tp::DBusObject Tp::DBusProxyFactory Tp::DBusProxy Tp::StatelessDBusProxy Tp::StatefulDBusProxy Tp::DBusService Tp::AbstractDBusServiceInterface Tp::DBusTubeChannel Tp::DebugReceiver Tp::Feature Tp::Features Tp::FileTransferChannelCreationProperties Tp::FileTransferChannel Tp::Filter Tp::FixedFeatureFactory Tp::BaseFunctor Tp::PtrFunctor0 Tp::MemberFunctor0 Tp::PtrFunctor1 Tp::MemberFunctor1 Tp::PtrFunctor2 Tp::MemberFunctor2 Tp::PtrFunctor3 Tp::MemberFunctor3 Tp::PtrFunctor4 Tp::MemberFunctor4 Tp::PtrFunctor5 Tp::MemberFunctor5 Tp::PtrFunctor6 Tp::MemberFunctor6 Tp::PtrFunctor7 Tp::MemberFunctor7 Tp::GenericCapabilityFilter Tp::GenericPropertyFilter Tp::HandledChannelNotifier Tp::IncomingDBusTubeChannel Tp::IncomingFileTransferChannel Tp::IncomingStreamTubeChannel Tp::LocationInfo Tp::MessageContentPart Tp::MessageContentPartList Tp::Message Tp::ReceivedMessage Tp::MethodInvocationContext Tp::NotFilter Tp::Object Tp::OptionalInterfaceFactory Tp::OrFilter Tp::OutgoingDBusTubeChannel Tp::OutgoingFileTransferChannel Tp::OutgoingStreamTubeChannel Tp::PendingAccount Tp::PendingCaptchas Tp::PendingChannelRequest Tp::PendingChannel Tp::PendingConnection Tp::PendingContactAttributes Tp::PendingContactInfo Tp::PendingContacts Tp::PendingDBusTubeConnection Tp::PendingDebugMessageList Tp::PendingHandles Tp::PendingOperation Tp::PendingReady Tp::PendingSendMessage Tp::PendingStreamTubeConnection Tp::PendingStringList Tp::PendingString Tp::PendingVariantMap Tp::PendingVariant Tp::Presence Tp::PresenceSpec Tp::PresenceSpecList Tp::ProfileManager Tp::Profile Tp::ProtocolInfo Tp::ProtocolParameter Tp::ReadinessHelper Tp::ReadyObject Tp::ReferencedHandles Tp::RequestableChannelClassSpec Tp::RequestableChannelClassSpecList Tp::RoomListChannel Tp::ServerAuthenticationChannel Tp::SharedPtr Tp::WeakPtr Tp::RefCounted Tp::SimpleCallObserver Tp::SimpleObserver Tp::PendingSuccess Tp::PendingFailure Tp::PendingVoid Tp::PendingComposite Tp::SimpleStreamTubeHandler Tp::SimpleTextObserver Tp::StreamTubeChannel Tp::StreamTubeClient Tp::StreamTubeServer Tp::PendingStreamedMediaStreams Tp::StreamedMediaStream Tp::StreamedMediaChannel Tp::TextChannel Tp::TubeChannel Tp::ByteArrayList Tp::ObjectPathList Tp::UIntList Tp::AccessControl Tp::AddressingNormalizationMap Tp::AliasMap Tp::AliasPair Tp::Avatar Tp::AvatarTokenMap Tp::CallMemberMap Tp::CallStateReason Tp::Candidate Tp::CandidateInfo Tp::CapabilityChange Tp::CapabilityPair Tp::CaptchaAnswers Tp::CaptchaInfo Tp::ChannelCallStateMap Tp::ChannelClass Tp::ChannelDetails Tp::ChannelInfo Tp::ChannelOriginatorMap Tp::ChatStateMap Tp::ComponentStateMap Tp::ContactAttributesMap Tp::ContactCapability Tp::ContactClientTypes Tp::ContactInfoField Tp::ContactLocations Tp::ContactMediaDescriptionPropertiesMap Tp::ContactSSRCsMap Tp::ContactSearchMap Tp::ContactSendingStateMap Tp::ContactSubscriptions Tp::CurrencyAmount Tp::DBusTubeMember Tp::DBusTubeParticipants Tp::DebugMessage Tp::FieldSpec Tp::HTTPPostData Tp::HandleIdentifierMap Tp::HandleOwnerMap Tp::LocalPendingInfo Tp::Location Tp::Mail Tp::MailAddress Tp::MediaDescriptionOffer Tp::MediaDescriptionProperties Tp::MediaSessionHandlerInfo Tp::MediaStreamHandlerTransport Tp::MediaStreamInfo Tp::MessagePart Tp::MessagePartContentMap Tp::Metadata Tp::MultipleStatusMap Tp::NotDelegatedError Tp::ObjectImmutablePropertiesMap Tp::ParamSpec Tp::PendingTextMessage Tp::PropertyFlagsChange Tp::PropertySpec Tp::PropertyValue Tp::ProtocolPropertiesMap Tp::QualifiedPropertyValueMap Tp::RTCPFeedbackMessage Tp::RTPHeaderExtension Tp::RequestableChannelClass Tp::RichPresenceAccessControl Tp::RoomInfo Tp::ServicePoint Tp::SimplePresence Tp::SimpleStatusSpec Tp::SingleContactAttributesMap Tp::SocketAddressIP Tp::SocketAddressIPv4 Tp::SocketAddressIPv6 Tp::SocketNetmaskIPv4 Tp::SocketNetmaskIPv6 Tp::StreamCredentials Tp::StringStringMap Tp::StringVariantMap Tp::SupportedSocketMap Tp::TLSCertificateRejection Tp::TubeInfo Tp::VCardFieldAddressMap Tp::VideoResolution Tp::CandidatePair Tp::Codec Tp::ContactCapabilitiesMap Tp::ContactInfoMap Tp::ContactSearchResultMap Tp::ContactSubscriptionMap Tp::HandlerCapabilities Tp::LastActivityAndStatuses Tp::MailURL Tp::MediaStreamHandlerCandidate Tp::MediaStreamHandlerCodec Tp::NotDelegatedMap Tp::RTCPFeedbackMessageProperties Tp::ServicePointInfo Tp::SimpleContactPresences Tp::SimpleStatusSpecMap Tp::StatusSpec Tp::ContactCodecMap Tp::ContactPresences Tp::RTCPFeedbackMessageMap Tp::StatusSpecMap Tp::AccountCapabilityFilter GenericCapabilityFilter< Account > AccountCapabilityFilter a00860.html a0fbe5e17526c282b49da74095f4a1ddf Filter< Account > AccountFilter a00860.html a24e2644163d833ea163f0249f529f8c9 QList< CallContentPtr > CallContents a00860.html a3820ec949dc82f6f97a30f0e104091af QList< CallStreamPtr > CallStreams a00860.html a83f7d048920d2599e033fc044169bbe0 QPair< ChannelClassSpec, Features > ChannelClassFeatures a00860.html a031f254486002def23779768e27ffc94 void(* DebugCallback a00872.html gac649008aad1016daf386c45e214de63b )(const QString &libraryName, const QString &libraryVersion, QtMsgType type, const QString &msg) QList< ProtocolInfo > ProtocolInfoList a00860.html ac5d329e03ae72736dacd3cc249790f25 QList< ProtocolParameter > ProtocolParameterList a00860.html aa7ad590c3b1ad16749cbe5709fd49d5f QListIterator< uint > ReferencedHandlesIterator a00860.html a7ffd423c5ecc983be75a5fe3b4861c75 QList< StreamedMediaStreamPtr > StreamedMediaStreams a00860.html a718c87b6def4f11250685fba6cb6ff30 QFlags< ConnMgrParamFlag > ConnMgrParamFlags a00893.html ga1ec95e0e8a60f6e9fcff6c0e5f6d1d2d QFlags< ConnectionAliasFlag > ConnectionAliasFlags a00893.html gae209ab8dc8dfb0cdb18dde803abb1ecc QFlags< AnonymityMode > AnonymityModeFlags a00893.html ga5a62d572ef4b37d2c530e82d1a343fda QFlags< ConnectionCapabilityFlag > ConnectionCapabilityFlags a00893.html ga69e0ae4c578de4e8281c66d56725800f QFlags< ContactBlockingCapability > ContactBlockingCapabilities a00893.html ga74e90ca71966332843fb6151dced4c49 QFlags< ContactInfoFlag > ContactInfoFlags a00893.html ga058b4ea8ec38721f3f2d6c5f90969365 QFlags< ContactInfoFieldFlag > ContactInfoFieldFlags a00893.html ga382ba0240f67164dac0738216da6e64d QFlags< LocationFeature > LocationFeatures a00893.html ga8a6cdfccfaf1954767c3274fc539162f QFlags< MailNotificationFlag > MailNotificationFlags a00893.html gafd6ee67fbf03013403438de823c5d18f QFlags< CallFlag > CallFlags a00893.html ga23879924993c4e2383bad817f3bdf5e1 QFlags< CallMemberFlag > CallMemberFlags a00893.html ga6c3e650fcbac033703069c8762664118 QFlags< MediaStreamPending > MediaStreamPendingSend a00893.html ga81e5288410135f5ab84ca9d59dbca988 QFlags< ChannelMediaCapability > ChannelMediaCapabilities a00893.html gaa68e46bf2d2ce86778a7a91e507da2fd QFlags< ChannelTextMessageFlag > ChannelTextMessageFlags a00893.html ga2db541b9a0efb3c9f3831ad6e7a6924b QFlags< CaptchaFlag > CaptchaFlags a00893.html ga28d990842d23b3d1dac39c23f7252cb5 QFlags< ChannelCallState > ChannelCallStateFlags a00893.html gae23e253bc21e75878c9cbbc5a305bbf6 QFlags< ChannelGroupFlag > ChannelGroupFlags a00893.html ga2aa3d302db1664feb0dd960eab27ed52 QFlags< MessagePartSupportFlag > MessagePartSupportFlags a00893.html ga4bfff302b6b5d81554686d23babad276 QFlags< MessageSendingFlag > MessageSendingFlags a00893.html ga0cc93486e0bc233331ea4e8ba512ae0b QFlags< DeliveryReportingSupportFlag > DeliveryReportingSupportFlags a00893.html gac53c2806bb9e28f40fa80b6b0596986e QFlags< ChannelPasswordFlag > ChannelPasswordFlags a00893.html ga601f54a29430f1ea82a421a1ba5b470b QFlags< PropertyFlag > PropertyFlags a00893.html ga932aabdf9cf257497afdfe4d88f9bb72 QFlags< StorageRestrictionFlag > StorageRestrictionFlags a00893.html ga435da029c381cecf7511ae963554ff77 QFlags< RTCPXRStatisticsFlag > RTCPXRStatisticsFlags a00893.html gad27cbc06add91c8b90463be0616ff32c QList< AliasPair > AliasPairList a00898.html ga757dcd94888605b4f0d79f51bbcefa43 QList< CallMemberMap > CallMemberMapList a00898.html gaa5adf4e7ccf57ae583ba83c368f16cb5 QList< Candidate > CandidateList a00898.html gabdf7af55b514b0489d75746e76d5ab10 QList< CapabilityChange > CapabilityChangeList a00898.html ga0b2d49e1af78f1ab8d9249a5c4fe70d0 QList< CapabilityPair > CapabilityPairList a00898.html ga892cf317320ab69b02832d5dfca9273f QList< CaptchaInfo > CaptchaInfoList a00898.html gacd79793ab0ea32490833447992f64d91 QList< ChannelClass > ChannelClassList a00898.html ga635ae458e9972df8168a2467b8a9a667 QList< ChannelDetails > ChannelDetailsList a00898.html ga7014d699ff46041f3c88a396205ba4c0 QList< ChannelInfo > ChannelInfoList a00898.html ga5475de9fd22232c0550ef18ddd96e2ce QList< ContactCapability > ContactCapabilityList a00898.html ga25a7874e81a5b1884bfedfbc9de2b21c QList< ContactInfoField > ContactInfoFieldList a00898.html ga1bcdf451db0cd688c513eb251f9db826 QList< DBusTubeMember > DBusTubeMemberList a00898.html gaeb042df04a14635e599e4aac67d8cded QList< DebugMessage > DebugMessageList a00898.html gab97304df3b85109e3c7b723885d9afa1 QList< FieldSpec > FieldSpecs a00898.html ga86e2b82675f7aad4acef3399f9ac4f6b QList< HTTPPostData > HTTPPostDataList a00898.html gae6c63eb506f3a6076b6c07f351bf5eb7 QList< LocalPendingInfo > LocalPendingInfoList a00898.html gac97059fe5c133488d4dcfec37f43df7b QList< Mail > MailList a00898.html gae50b7b034851b01778a874e609029b87 QList< MailAddress > MailAddressList a00898.html ga13bf9d3d2e169d01cb6a1aa1182bc2ea QList< MediaSessionHandlerInfo > MediaSessionHandlerInfoList a00898.html ga07ca0c62ada90c615ee10bd22c70fb94 QList< MediaStreamHandlerTransport > MediaStreamHandlerTransportList a00898.html gaa367912f1202d6f2b29071f31633cd3c QList< MediaStreamInfo > MediaStreamInfoList a00898.html ga65181a48014c66c341422e7af20a58a7 QList< MessagePart > MessagePartList a00898.html gad29671d375c7a5bf1e8228f609b0d828 QList< MessagePartList > MessagePartListList a00898.html ga456fa0c4d341085f96af5222d70706b4 QList< ObjectImmutablePropertiesMap > ObjectImmutablePropertiesMapList a00898.html ga75d8bde97d8b9504f88ce0c9217b1595 QList< ParamSpec > ParamSpecList a00898.html gae1edd4964ec61f36c336217c86d21604 QList< PendingTextMessage > PendingTextMessageList a00898.html ga2b02972934a7134c50f58df1ed939bc3 QList< PropertyFlagsChange > PropertyFlagsChangeList a00898.html ga22a74fc2e884c0cadf09239b313a1687 QList< PropertySpec > PropertySpecList a00898.html ga88f81e671a1a1683537b0cc1e36c7c67 QList< PropertyValue > PropertyValueList a00898.html ga8565f094dc81def1852362f954930926 QList< QualifiedPropertyValueMap > QualifiedPropertyValueMapList a00898.html ga470b743611827a78ba5c10d9adc3a076 QList< RTCPFeedbackMessage > RTCPFeedbackMessageList a00898.html ga1c6419f296cb4c6815ec60f3642f4036 QList< RTPHeaderExtension > RTPHeaderExtensionsList a00898.html ga61c9bbcf5540dd326191a2f300c96165 QList< RequestableChannelClass > RequestableChannelClassList a00898.html gac19bde94a4bfba9311f1f37fbbdbe05c QList< RoomInfo > RoomInfoList a00898.html ga61418665719aaef9e0608f87eccca306 QList< SocketAddressIP > SocketAddressIPList a00898.html ga6ed3041ef7a8dd5a4169eb5a987c5c87 QList< StringStringMap > StringStringMapList a00898.html ga2869383d5f0b7f2efb5a7329491a2d8d QList< StringVariantMap > StringVariantMapList a00898.html ga82068e180fc9d8c9c169e4210271bfe3 QList< TLSCertificateRejection > TLSCertificateRejectionList a00898.html gae14945f191d95a4d3ff67d53f8e0e821 QList< TubeInfo > TubeInfoList a00898.html gaf81388615dd2d8fda5d74dc55f277799 QList< VideoResolution > VideoResolutionStruct a00898.html gad361c0dec97af2c12b57c8e72a01c74f QList< CandidatePair > CandidatePairList a00898.html ga4483704f64d5813fb1aa69e534f2f6aa QList< Codec > CodecList a00898.html ga109edbf33ad8b050e75e62e629dbe524 QList< ContactCapabilitiesMap > ContactCapabilitiesMapList a00898.html gaaba776766eb7d3cdc9161288bec3be04 QList< HandlerCapabilities > HandlerCapabilitiesList a00898.html ga557ebc02ad2e9e0c40549cd20928f3a0 QList< MediaStreamHandlerCandidate > MediaStreamHandlerCandidateList a00898.html ga014d46ba19f093138774d4f80e4f923f QList< MediaStreamHandlerCodec > MediaStreamHandlerCodecList a00898.html ga19e9976a1866b5b395cc0f0e020c1389 QList< ServicePointInfo > ServicePointInfoList a00898.html ga1f268bf6d2790e4364cf6fe8b8b66ba5 ConnMgrParamFlag a00893.html ga5cb2fa9d056d53a2942394c5b13dafe7 @ ConnMgrParamFlagRequired a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a7b7151e5c5f6c582dd4a5782a2b21ce1 @ ConnMgrParamFlagRegister a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a1fc8a43025d60fddc2de0d5f03c4be65 @ ConnMgrParamFlagHasDefault a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a5c90d0a9a3fc1d64081ad614af8ed978 @ ConnMgrParamFlagSecret a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a1d8f731dd2f9cbeb5e11a3e16d1a5d7b @ ConnMgrParamFlagDBusProperty a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7ac02602299e89100fa0e1f4b855140691 @ _ConnMgrParamFlagPadding a00893.html gga5cb2fa9d056d53a2942394c5b13dafe7a5e922734230292cb238220301b828839 ConnectionAliasFlag a00893.html gaef4f6c211ed67dac662bf64736ed207a @ ConnectionAliasFlagUserSet a00893.html ggaef4f6c211ed67dac662bf64736ed207aa74605a2a62fc83950d2b3f7143a72d79 @ _ConnectionAliasFlagPadding a00893.html ggaef4f6c211ed67dac662bf64736ed207aaebe67dcae258f069cb01993d254648bd AnonymityMode a00893.html ga757256bafd010c153333986e415a205e @ AnonymityModeClientInfo a00893.html gga757256bafd010c153333986e415a205ea1d1114e10218b5232108fecad35864ce @ AnonymityModeShowClientInfo a00893.html gga757256bafd010c153333986e415a205ea2a5ee09100d2ddaefbe47a36739c75b7 @ AnonymityModeNetworkInfo a00893.html gga757256bafd010c153333986e415a205eab4ff0e3e79327d08a0693add72928046 @ _AnonymityModePadding a00893.html gga757256bafd010c153333986e415a205ea997db8140fc8f0e2106f16403e37de66 ConnectionCapabilityFlag a00893.html ga2bfda5e1b7b0e582dcc4beafbc686e2f @ ConnectionCapabilityFlagCreate a00893.html gga2bfda5e1b7b0e582dcc4beafbc686e2fabcba0674619a6c92d98af8a73a7991b6 @ ConnectionCapabilityFlagInvite a00893.html gga2bfda5e1b7b0e582dcc4beafbc686e2fa2dfbb9b4870dddedf50b96eaa005a625 @ _ConnectionCapabilityFlagPadding a00893.html gga2bfda5e1b7b0e582dcc4beafbc686e2faa90c051bc5b9c252725695aee9cfcfb8 ContactBlockingCapability a00893.html ga5ff0e407360d15b72ed8db5039e393cd @ ContactBlockingCapabilityCanReportAbusive a00893.html gga5ff0e407360d15b72ed8db5039e393cda33ed07dda4bde02f3c31f52e139ecc27 @ _ContactBlockingCapabilityPadding a00893.html gga5ff0e407360d15b72ed8db5039e393cda83cd5558884f307f1473c2c13f3e797f ContactInfoFlag a00893.html ga8fd6152ac8664f7043f597a958c33cb1 @ ContactInfoFlagCanSet a00893.html gga8fd6152ac8664f7043f597a958c33cb1a432131938b4cf72de980ceeab3f7f957 @ ContactInfoFlagPush a00893.html gga8fd6152ac8664f7043f597a958c33cb1a826fbdd18b10cc3f43a56460b71c8818 @ _ContactInfoFlagPadding a00893.html gga8fd6152ac8664f7043f597a958c33cb1a6bece6d34725fe3511a49b7285a66882 ContactInfoFieldFlag a00893.html ga74c105177c0b1e57474fd8e04f15d4d9 @ ContactInfoFieldFlagParametersExact a00893.html gga74c105177c0b1e57474fd8e04f15d4d9af61eec02c35ad02d6e7fea102a78fbee @ ContactInfoFieldFlagOverwrittenByNickname a00893.html gga74c105177c0b1e57474fd8e04f15d4d9a289de4147a75f0f15a94933174f00523 @ _ContactInfoFieldFlagPadding a00893.html gga74c105177c0b1e57474fd8e04f15d4d9aa56f65d632572391aeefaa006ea72fee LocationFeature a00893.html gaa527b9338d1b405122e98454f7e3b569 @ LocationFeatureCanSet a00893.html ggaa527b9338d1b405122e98454f7e3b569a33d3fc47ceee2e5541a4012d53abaa73 @ _LocationFeaturePadding a00893.html ggaa527b9338d1b405122e98454f7e3b569a142730992e5819ee562c743023aac8ee MailNotificationFlag a00893.html ga21317c6c96d4875d8ca7618ef7b39183 @ MailNotificationFlagSupportsUnreadMailCount a00893.html gga21317c6c96d4875d8ca7618ef7b39183a453639b6a753438c7b599c4f2d4b0b37 @ MailNotificationFlagSupportsUnreadMails a00893.html gga21317c6c96d4875d8ca7618ef7b39183aa0f7bb1c1918579815c589c8b87e5d9c @ MailNotificationFlagEmitsMailsReceived a00893.html gga21317c6c96d4875d8ca7618ef7b39183a47dae26c23dd0d6c0afeb0eb28879d6b @ MailNotificationFlagSupportsRequestInboxURL a00893.html gga21317c6c96d4875d8ca7618ef7b39183a6c525f4f23305b3939c2a1e0e1527c7a @ MailNotificationFlagSupportsRequestMailURL a00893.html gga21317c6c96d4875d8ca7618ef7b39183af09af0f14fbfa7ea02ef8db7c55f940d @ MailNotificationFlagThreadBased a00893.html gga21317c6c96d4875d8ca7618ef7b39183a11f770f71ed06eb3590090af16694e1a @ _MailNotificationFlagPadding a00893.html gga21317c6c96d4875d8ca7618ef7b39183ad74fdc6915917e2296a0854b17ca91fd CallFlag a00893.html gaf0ca6541c128e8636355db618bb8905c @ CallFlagLocallyHeld a00893.html ggaf0ca6541c128e8636355db618bb8905ca9b81f2c41e19987c015dea9f0db87cc3 @ CallFlagLocallyRinging a00893.html ggaf0ca6541c128e8636355db618bb8905ca77d51bde51748bc257b157d7f3a121dd @ CallFlagLocallyQueued a00893.html ggaf0ca6541c128e8636355db618bb8905cae83382836bc4502185536e92dce46cf4 @ CallFlagForwarded a00893.html ggaf0ca6541c128e8636355db618bb8905ca8b480e748569900593f38e9577978112 @ CallFlagClearing a00893.html ggaf0ca6541c128e8636355db618bb8905cac5d43644a005f65a9a705538b40257d4 @ _CallFlagPadding a00893.html ggaf0ca6541c128e8636355db618bb8905cab61c9a6b9f086aa174a69eab71931ed5 CallMemberFlag a00893.html ga750486dca75cdd08fe07242049bc863d @ CallMemberFlagRinging a00893.html gga750486dca75cdd08fe07242049bc863daca1fc71e62aef7e332544effc860a6d1 @ CallMemberFlagHeld a00893.html gga750486dca75cdd08fe07242049bc863dab53f9525e96e76aac774d6a9ca46fc16 @ CallMemberFlagConferenceHost a00893.html gga750486dca75cdd08fe07242049bc863da99315403fd65c373bdda55def1697153 @ _CallMemberFlagPadding a00893.html gga750486dca75cdd08fe07242049bc863da27246b7da2ca2ba35faa9399e5bc1d99 MediaStreamPending a00893.html gabf9a12dd89a5a502270bf18fd1cca47d @ MediaStreamPendingLocalSend a00893.html ggabf9a12dd89a5a502270bf18fd1cca47dab6f964a0b18c3cf5bd8fa3389fd84403 @ MediaStreamPendingRemoteSend a00893.html ggabf9a12dd89a5a502270bf18fd1cca47dad226bd2a7c98d02406ff1b4a56d724cf @ _MediaStreamPendingPadding a00893.html ggabf9a12dd89a5a502270bf18fd1cca47da5060120b4d5ab6cc272654a506f647a5 ChannelMediaCapability a00893.html gabacbce0da0a9ffbdcf61b486fb228296 @ ChannelMediaCapabilityAudio a00893.html ggabacbce0da0a9ffbdcf61b486fb228296ae258062ae67379e51857f8f67883f2d9 @ ChannelMediaCapabilityVideo a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a0046934ca06adeffcba8f8e8ff8e9eb5 @ ChannelMediaCapabilityNATTraversalSTUN a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a83d15a00008eaf4d8bb5ae09786c779f @ ChannelMediaCapabilityNATTraversalGTalkP2P a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a83be87a1c5b327eb98df027672952bd8 @ ChannelMediaCapabilityNATTraversalICEUDP a00893.html ggabacbce0da0a9ffbdcf61b486fb228296a7ce46ce2b6b4a8bb8d73edf9807af9ea @ ChannelMediaCapabilityImmutableStreams a00893.html ggabacbce0da0a9ffbdcf61b486fb228296abaa2e098339493d9f42694453287397d @ _ChannelMediaCapabilityPadding a00893.html ggabacbce0da0a9ffbdcf61b486fb228296aff3cfd5112e2d2679d4801e9ccd6313f ChannelTextMessageFlag a00893.html ga0712fe4009ffbcb6b49e99fe47af4ce6 @ ChannelTextMessageFlagTruncated a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6af42f7c5d364574ad92204e4dcaa23965 @ ChannelTextMessageFlagNonTextContent a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6aeb0dbeba04a987d64e11af3aae3c8f79 @ ChannelTextMessageFlagScrollback a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6a73bd1335bafc306e7220cc57652414cb @ ChannelTextMessageFlagRescued a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6a09e726755fbfae4bba9dd5b95ccd4015 @ _ChannelTextMessageFlagPadding a00893.html gga0712fe4009ffbcb6b49e99fe47af4ce6a3e7936efcdcbf252dee6d01d4ce3fa6e CaptchaFlag a00893.html ga6a04590391bb361bc1c47e22571d81fa @ CaptchaFlagRequired a00893.html gga6a04590391bb361bc1c47e22571d81faaf8112f78c092b2e6eda2c7c9b782b612 @ _CaptchaFlagPadding a00893.html gga6a04590391bb361bc1c47e22571d81faa70f5bb9ba2f8ee35bca58b2d8751cdcc ChannelCallState a00893.html gac0a5e07b6cb83e50403bb971a60f45bf @ ChannelCallStateRinging a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa85542f90092584b3eec097e349394d0c @ ChannelCallStateQueued a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa0e00c1ca7a35c65138551d15280df63c @ ChannelCallStateHeld a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfafca34a52d14e2d721a1fb23df5bfec84 @ ChannelCallStateForwarded a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfae52645cc6beb01c00fd1d544d0907777 @ ChannelCallStateInProgress a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa1ecef1a51a1e00bab1b19679a7741086 @ ChannelCallStateConferenceHost a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa594aa75472a6d190873ad4fcb56f564e @ _ChannelCallStatePadding a00893.html ggac0a5e07b6cb83e50403bb971a60f45bfa6cc625f385bf307291d2192be7b9743d ChannelGroupFlag a00893.html gadeaed0d7e8e3d306d4e4398387975857 @ ChannelGroupFlagCanAdd a00893.html ggadeaed0d7e8e3d306d4e4398387975857a92287976a53cff7fef872f7f338a6421 @ ChannelGroupFlagCanRemove a00893.html ggadeaed0d7e8e3d306d4e4398387975857a234d1cfcee7a197f0fe4dfaeec2c73e2 @ ChannelGroupFlagCanRescind a00893.html ggadeaed0d7e8e3d306d4e4398387975857aac6aa1a60ca623539e07af0af9311551 @ ChannelGroupFlagMessageAdd a00893.html ggadeaed0d7e8e3d306d4e4398387975857ac38ac45c32ee6580351f538db1cce427 @ ChannelGroupFlagMessageRemove a00893.html ggadeaed0d7e8e3d306d4e4398387975857a79a63ed9daf2566c8d98ebf7587b1547 @ ChannelGroupFlagMessageAccept a00893.html ggadeaed0d7e8e3d306d4e4398387975857ae4f4fe9907dc0c03d6952c4fcc20761e @ ChannelGroupFlagMessageReject a00893.html ggadeaed0d7e8e3d306d4e4398387975857aa1f993c76d9eeb1d9060428c79b562d1 @ ChannelGroupFlagMessageRescind a00893.html ggadeaed0d7e8e3d306d4e4398387975857a4cf292e38653fa27b7a8747d3dc20ab7 @ ChannelGroupFlagChannelSpecificHandles a00893.html ggadeaed0d7e8e3d306d4e4398387975857a6d9439ac4c1f06dd8c04d5963f9710bd @ ChannelGroupFlagOnlyOneGroup a00893.html ggadeaed0d7e8e3d306d4e4398387975857a014d2efa5ce405f7657c2a25d371f5fa @ ChannelGroupFlagHandleOwnersNotAvailable a00893.html ggadeaed0d7e8e3d306d4e4398387975857af98f1fe1441423f1638a4e27ffe7d61f @ ChannelGroupFlagProperties a00893.html ggadeaed0d7e8e3d306d4e4398387975857a4f141283930e2bcc21685084fb1355ef @ ChannelGroupFlagMembersChangedDetailed a00893.html ggadeaed0d7e8e3d306d4e4398387975857a4b809cf8cfc8bf253d66fc1e3f0cec00 @ ChannelGroupFlagMessageDepart a00893.html ggadeaed0d7e8e3d306d4e4398387975857a87b9a4cf165b77967282575281461a4a @ _ChannelGroupFlagPadding a00893.html ggadeaed0d7e8e3d306d4e4398387975857ab9a9872dfb053cb6cc6eb46c98dcc9c8 MessagePartSupportFlag a00893.html ga1c55f4f4934456de1364e395cc22c263 @ MessagePartSupportFlagOneAttachment a00893.html gga1c55f4f4934456de1364e395cc22c263afa21b09e15a4fac12a46721d2c7ea00f @ MessagePartSupportFlagMultipleAttachments a00893.html gga1c55f4f4934456de1364e395cc22c263ad7c9a031c066fdfe21a799da018ddb2a @ _MessagePartSupportFlagPadding a00893.html gga1c55f4f4934456de1364e395cc22c263aeff156ec7ed5a541c527a6957f21193b MessageSendingFlag a00893.html gad55925d8d24fecd516519f3a92aafb58 @ MessageSendingFlagReportDelivery a00893.html ggad55925d8d24fecd516519f3a92aafb58a2e33eea159b91165f09f475b88f32434 @ MessageSendingFlagReportRead a00893.html ggad55925d8d24fecd516519f3a92aafb58a27520e910e54d28731f7895ca2a37ad7 @ MessageSendingFlagReportDeleted a00893.html ggad55925d8d24fecd516519f3a92aafb58aef03fa0d57d5807de53537433b6f2afb @ _MessageSendingFlagPadding a00893.html ggad55925d8d24fecd516519f3a92aafb58a5a564addc4d0a541643b23f686c9195c DeliveryReportingSupportFlag a00893.html gaaa94e5e1d4cb5701a33445e2984cb486 @ DeliveryReportingSupportFlagReceiveFailures a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486a0d0715bc2e3cd811592257b806f076ca @ DeliveryReportingSupportFlagReceiveSuccesses a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486aa340e76702c1564dfbde667e3c73ba71 @ DeliveryReportingSupportFlagReceiveRead a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486aaf7a82a3ba3c1742d823ab71c633e79f @ DeliveryReportingSupportFlagReceiveDeleted a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486abe6bcf6721e9c937bc3bd815e44eb483 @ _DeliveryReportingSupportFlagPadding a00893.html ggaaa94e5e1d4cb5701a33445e2984cb486a860915b62679978ddeea0bc1acdb5f7a ChannelPasswordFlag a00893.html gae5ebd6e742d951f5a5d31ac1e9e185c3 @ ChannelPasswordFlagProvide a00893.html ggae5ebd6e742d951f5a5d31ac1e9e185c3a90aa19041edfc0a0d6ec392f6a8029b3 @ ChannelPasswordFlagHint a00893.html ggae5ebd6e742d951f5a5d31ac1e9e185c3a049f04e1f55b3af8897d4ff5c3afbc3e @ _ChannelPasswordFlagPadding a00893.html ggae5ebd6e742d951f5a5d31ac1e9e185c3a8775a4977b8cb374d1ea8f1c3782a44f PropertyFlag a00893.html ga2268bdb3b45d0d46b05a7275f6a58bbe @ PropertyFlagRead a00893.html gga2268bdb3b45d0d46b05a7275f6a58bbea1b8c2f894807777844a02825fe59acb2 @ PropertyFlagWrite a00893.html gga2268bdb3b45d0d46b05a7275f6a58bbea853cc919d8d0ae43796362f285730314 @ _PropertyFlagPadding a00893.html gga2268bdb3b45d0d46b05a7275f6a58bbeafaefb2c4fc8a7b7e4848aba2413bdf9f StorageRestrictionFlag a00893.html ga8b5b12da307a1bca780ae392e899b16e @ StorageRestrictionFlagCannotSetParameters a00893.html gga8b5b12da307a1bca780ae392e899b16ea9a2bd9bb405afffb62a8b8eb50ee511a @ StorageRestrictionFlagCannotSetEnabled a00893.html gga8b5b12da307a1bca780ae392e899b16ea50bbce0cb18abedc1d31e57d67cba304 @ StorageRestrictionFlagCannotSetPresence a00893.html gga8b5b12da307a1bca780ae392e899b16eafe1d54999a2154d0f8fa96082f8e7fd5 @ StorageRestrictionFlagCannotSetService a00893.html gga8b5b12da307a1bca780ae392e899b16ea5170fcc3bb7cc2f6a7381e044bf9a972 @ _StorageRestrictionFlagPadding a00893.html gga8b5b12da307a1bca780ae392e899b16ea263a5409e2f093e9cc13282c6cd8b73c RTCPXRStatisticsFlag a00893.html gaa5f5055496c072aa97fd7f9e0f0c5419 @ RTCPXRStatisticsFlagLoss a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419aca1da490d670b5e2796b4ea1cca57f81 @ RTCPXRStatisticsFlagDuplicate a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419afcede23e95c8d6df44b10d9bb30d2e1a @ RTCPXRStatisticsFlagJitter a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a27b33220b8af82c00d3e05aaab0d578a @ RTCPXRStatisticsFlagTTL a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a3e010b11f7c39f8103d38a5f4d40a926 @ RTCPXRStatisticsFlagHL a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a7569492e0f4e73d1e9e6966d5b8b5905 @ _RTCPXRStatisticsFlagPadding a00893.html ggaa5f5055496c072aa97fd7f9e0f0c5419a2219b3c5087e04541721c30fd316089a HandleType a00894.html ga36fa367f622d8b98416393b3fe4c89d2 @ HandleTypeNone a00860.html ga36fa367f622d8b98416393b3fe4c89d2af89959dcf135559145d99732346c69e6 @ HandleTypeContact a00860.html ga36fa367f622d8b98416393b3fe4c89d2a5c0c85266c24696c080d2a688ec8bfa3 @ HandleTypeRoom a00860.html ga36fa367f622d8b98416393b3fe4c89d2ac4186e266a163cb4ced697e949b02cd3 @ HandleTypeList a00860.html ga36fa367f622d8b98416393b3fe4c89d2aff5b4d0f0110236fea4c3dcaafa67af9 @ HandleTypeGroup a00860.html ga36fa367f622d8b98416393b3fe4c89d2a2b95392fef02b76d4321a242e40173be @ _HandleTypePadding a00860.html ga36fa367f622d8b98416393b3fe4c89d2ac34fe4f627ac03b51f67c08636d62f8b ConnectionStatus a00894.html ga601f90d95125a95ed0ff9a546fb1363f @ ConnectionStatusConnected a00860.html ga601f90d95125a95ed0ff9a546fb1363fa6af1d5f41051b70b5c14bd19c4174d17 @ ConnectionStatusConnecting a00860.html ga601f90d95125a95ed0ff9a546fb1363fac691efe1fa9ab0c66332033c7817cf71 @ ConnectionStatusDisconnected a00860.html ga601f90d95125a95ed0ff9a546fb1363fa92910aabeadb7e95d5ccc7f13dac571c @ _ConnectionStatusPadding a00860.html ga601f90d95125a95ed0ff9a546fb1363faab3d27bb3ec6b8e831694eff11657d73 ConnectionStatusReason a00894.html gafcefb23369c2cf510f27775670294c6c @ ConnectionStatusReasonNoneSpecified a00860.html gafcefb23369c2cf510f27775670294c6cad4eedc748700e9f70a2da3d09d551300 @ ConnectionStatusReasonRequested a00860.html gafcefb23369c2cf510f27775670294c6ca2d0e83ce43fc2aa9b4afcd2bfb43fe6a @ ConnectionStatusReasonNetworkError a00860.html gafcefb23369c2cf510f27775670294c6ca98b5990d6c4d741b2063898f3592804f @ ConnectionStatusReasonAuthenticationFailed a00860.html gafcefb23369c2cf510f27775670294c6cac47620cab72ea7c2581e7fff78576c6b @ ConnectionStatusReasonEncryptionError a00860.html gafcefb23369c2cf510f27775670294c6ca5e5a11e3c27b792e1e84550d0bf31df1 @ ConnectionStatusReasonNameInUse a00860.html gafcefb23369c2cf510f27775670294c6caafc5abcd599707f4a3e9b000fa067496 @ ConnectionStatusReasonCertNotProvided a00860.html gafcefb23369c2cf510f27775670294c6ca2e699ec66e40de505f322fc8be878dc3 @ ConnectionStatusReasonCertUntrusted a00860.html gafcefb23369c2cf510f27775670294c6ca1f883ac52d327e25483a04dffcbf7e51 @ ConnectionStatusReasonCertExpired a00860.html gafcefb23369c2cf510f27775670294c6cafa91b31af9d1614844984e9ece64a32a @ ConnectionStatusReasonCertNotActivated a00860.html gafcefb23369c2cf510f27775670294c6ca5a5fd148b1bea5ad268da790fad52ef6 @ ConnectionStatusReasonCertHostnameMismatch a00860.html gafcefb23369c2cf510f27775670294c6ca2f4d5c18d6004f1243e47c9d65469997 @ ConnectionStatusReasonCertFingerprintMismatch a00860.html gafcefb23369c2cf510f27775670294c6caeeb9251b845f2cabfef42d4c8142dbe7 @ ConnectionStatusReasonCertSelfSigned a00860.html gafcefb23369c2cf510f27775670294c6ca80a9a592ebead08b6c414783598e8221 @ ConnectionStatusReasonCertOtherError a00860.html gafcefb23369c2cf510f27775670294c6ca1a97d6650615a881a8c78de07f131392 @ ConnectionStatusReasonCertRevoked a00860.html gafcefb23369c2cf510f27775670294c6cadac2dc2c58a78c85777564cda333445d @ ConnectionStatusReasonCertInsecure a00860.html gafcefb23369c2cf510f27775670294c6ca4133cb4e2c25a051548aac43fe440101 @ ConnectionStatusReasonCertLimitExceeded a00860.html gafcefb23369c2cf510f27775670294c6caa59fbd6d253a7f8100387e6d0e20e234 @ _ConnectionStatusReasonPadding a00860.html gafcefb23369c2cf510f27775670294c6ca40a4510b965940d1d12deb1d5289859f ContactListState a00894.html gad1ebe7859ea635738c90418460309dc7 @ ContactListStateNone a00860.html gad1ebe7859ea635738c90418460309dc7af310e50dbccd4e278dfda34de8229489 @ ContactListStateWaiting a00860.html gad1ebe7859ea635738c90418460309dc7a9f625f030f9168435c3ae9d9c7f7c9d4 @ ContactListStateFailure a00860.html gad1ebe7859ea635738c90418460309dc7ac932eb0a0fd5d2f4030dae78657ce314 @ ContactListStateSuccess a00860.html gad1ebe7859ea635738c90418460309dc7af8a70e85564460c8d9f72dba6bdb65a0 @ _ContactListStatePadding a00860.html gad1ebe7859ea635738c90418460309dc7aacd1235c772e255bc07304675005eff9 SubscriptionState a00894.html ga6c99f8845100a205c12d66ec117a78de @ SubscriptionStateUnknown a00860.html ga6c99f8845100a205c12d66ec117a78dea57618775be1e938333647f3f832e9354 @ SubscriptionStateNo a00860.html ga6c99f8845100a205c12d66ec117a78dea759008dafd20b15b8ded54735926f990 @ SubscriptionStateRemovedRemotely a00860.html ga6c99f8845100a205c12d66ec117a78deab530cc8b1158603d43de733e6df54be1 @ SubscriptionStateAsk a00860.html ga6c99f8845100a205c12d66ec117a78dea3c5c2a8cbaea19e032423e8c5a5ba365 @ SubscriptionStateYes a00860.html ga6c99f8845100a205c12d66ec117a78dea167c5e6e0bc915d6fa5d1e48b24118bf @ _SubscriptionStatePadding a00860.html ga6c99f8845100a205c12d66ec117a78deaef819596d05709f7ad510da6d132f8db ContactMetadataStorageType a00894.html ga4d71f3cae6d427dd3c2d59b6f7f72bab @ ContactMetadataStorageTypeNone a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72babac80c4375e54a9caa0b4074e95c2e60de @ ContactMetadataStorageTypeSubscribedOrPending a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72baba64095a44b4de5ba6f9de0950a3dff789 @ ContactMetadataStorageTypeSubscribed a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72babacd011a48c30589a2f701e7a7963abb58 @ ContactMetadataStorageTypeAnyone a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72baba40f8a384e7a569b8fd9bd895b0fa73be @ _ContactMetadataStorageTypePadding a00860.html ga4d71f3cae6d427dd3c2d59b6f7f72babadc7c3bb44ba6fde83a87c969a2754882 HTTPMethod a00894.html ga555eee1bc333732490e1c4b8de9d1c88 @ HTTPMethodGet a00860.html ga555eee1bc333732490e1c4b8de9d1c88a82991109c053cac31f87b5cc1dfd42f0 @ HTTPMethodPost a00860.html ga555eee1bc333732490e1c4b8de9d1c88a923c73a532b12a1648862aefeb742351 @ _HTTPMethodPadding a00860.html ga555eee1bc333732490e1c4b8de9d1c88a4e5848d03cd970af98883a850ad4b5a6 ServicePointType a00894.html ga245141cc45e499cf4c660bf82c79453d @ ServicePointTypeNone a00860.html ga245141cc45e499cf4c660bf82c79453da53ae328cb93800ab8069e41ad01507c3 @ ServicePointTypeEmergency a00860.html ga245141cc45e499cf4c660bf82c79453dabf1bf92f07054247f9eb3f3ee0bf39fa @ ServicePointTypeCounseling a00860.html ga245141cc45e499cf4c660bf82c79453dabfb78370c8fcd533d70d9e9fe154677f @ _ServicePointTypePadding a00860.html ga245141cc45e499cf4c660bf82c79453da362acf4fa51a2fc98cda93ba0c378d81 ConnectionPresenceType a00894.html ga1f94046a888cc61a4c86f5426c4e9875 @ ConnectionPresenceTypeUnset a00860.html ga1f94046a888cc61a4c86f5426c4e9875aa1a9e769fc869eab68bdf1082ed4194d @ ConnectionPresenceTypeOffline a00860.html ga1f94046a888cc61a4c86f5426c4e9875a42893dcb07d9e743264653f2b1004f27 @ ConnectionPresenceTypeAvailable a00860.html ga1f94046a888cc61a4c86f5426c4e9875a5f13818f8fc8e0a1d2e635f0e290959d @ ConnectionPresenceTypeAway a00860.html ga1f94046a888cc61a4c86f5426c4e9875a0daa17373b159ace07e31e28e3e571e5 @ ConnectionPresenceTypeExtendedAway a00860.html ga1f94046a888cc61a4c86f5426c4e9875a22736f0f3c6517c6b50ba72b14c15dd1 @ ConnectionPresenceTypeHidden a00860.html ga1f94046a888cc61a4c86f5426c4e9875a93007eafa25f26e5c1fcdea1c558c2af @ ConnectionPresenceTypeBusy a00860.html ga1f94046a888cc61a4c86f5426c4e9875af1aaa306a6e92a81f03826000564c860 @ ConnectionPresenceTypeUnknown a00860.html ga1f94046a888cc61a4c86f5426c4e9875a246d03a6f3964d6d53bba07e132e8479 @ ConnectionPresenceTypeError a00860.html ga1f94046a888cc61a4c86f5426c4e9875aee12216cb066cb145ef76ca65e7c8d12 @ _ConnectionPresenceTypePadding a00860.html ga1f94046a888cc61a4c86f5426c4e9875ae09a65c8ab3476117627b294429d94cc AccessControlType a00894.html gabb9cd3c2de41e5caa1e42f04dfa036ba @ AccessControlTypeWhitelist a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baadb4e9c21aebc1b28c9db82f9b9b83d3f @ AccessControlTypePublishList a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baab2686c25851ee877f5a34fa44599e739 @ AccessControlTypeGroup a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa891e5e8face80384a496dd25fe59c457 @ AccessControlTypeOpen a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baadab26fb2daff5d11560330c362d17a72 @ AccessControlTypeSubscribeOrPublishList a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa89afa1bd6de8ce162daca2cb4f072c5b @ AccessControlTypeClosed a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa2e98912e22741a8f52792412d18e1374 @ AccessControlTypeNotUnderstood a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baab31c729946edb3fc6367cd955be48f5e @ _AccessControlTypePadding a00860.html gabb9cd3c2de41e5caa1e42f04dfa036baa113a017dc5796a924c814877e19670f9 RichPresenceAccessControlType a00894.html gada0e452157f0ace844f898df2328dd89 @ RichPresenceAccessControlTypeWhitelist a00860.html gada0e452157f0ace844f898df2328dd89a9030fc904f2c033d7dc65e75563321fa @ RichPresenceAccessControlTypePublishList a00860.html gada0e452157f0ace844f898df2328dd89a8197a38175a34ef69a79d560e607e660 @ RichPresenceAccessControlTypeGroup a00860.html gada0e452157f0ace844f898df2328dd89a14db81756caee469621dc35c49b1a03e @ RichPresenceAccessControlTypeOpen a00860.html gada0e452157f0ace844f898df2328dd89a132a7cfc6674c6404b1982cc0c5e6a52 @ _RichPresenceAccessControlTypePadding a00860.html gada0e452157f0ace844f898df2328dd89ad24aca58593d5a10e15564b119847cd5 CallState a00894.html ga29b57a5b4f94c451af84b5e57102c4d9 @ CallStateUnknown a00860.html ga29b57a5b4f94c451af84b5e57102c4d9a41367cc733adb6ea98643b24a74b5d88 @ CallStatePendingInitiator a00860.html ga29b57a5b4f94c451af84b5e57102c4d9aedebb08c95e37b5bbc2fcc41ee9fdfdc @ CallStateInitialising a00860.html ga29b57a5b4f94c451af84b5e57102c4d9a4715d2742ff582df46e1f5a501392335 @ CallStateInitialised a00860.html ga29b57a5b4f94c451af84b5e57102c4d9af60a9178889d8d0db1d56312bfccac9a @ CallStateAccepted a00860.html ga29b57a5b4f94c451af84b5e57102c4d9ac8f6abefc2087c47eb6c3b4f9f36b1b9 @ CallStateActive a00860.html ga29b57a5b4f94c451af84b5e57102c4d9ae00c2709e6515b32bbd57c9cad73064e @ CallStateEnded a00860.html ga29b57a5b4f94c451af84b5e57102c4d9ab7448536f3d5274e5b0dc995648efc60 @ _CallStatePadding a00860.html ga29b57a5b4f94c451af84b5e57102c4d9a3e85d0aff14c3c1588ac5902cc706d5f CallStateChangeReason a00894.html ga76f639168e50102c9de416ca38721a80 @ CallStateChangeReasonUnknown a00860.html ga76f639168e50102c9de416ca38721a80ae8415ad2b16289077d2c5e500dc1295d @ CallStateChangeReasonProgressMade a00860.html ga76f639168e50102c9de416ca38721a80ad25bca1fe2d9850b8799eac6c45a5bc7 @ CallStateChangeReasonUserRequested a00860.html ga76f639168e50102c9de416ca38721a80aca9ca451661e58baa6e6776904183184 @ CallStateChangeReasonForwarded a00860.html ga76f639168e50102c9de416ca38721a80a146edc9f2bf775dadc0fec696f12d147 @ CallStateChangeReasonRejected a00860.html ga76f639168e50102c9de416ca38721a80ae7b99c110154b433239540fed7984ecf @ CallStateChangeReasonNoAnswer a00860.html ga76f639168e50102c9de416ca38721a80a20b8a39d962991b07e890c11dabf6822 @ CallStateChangeReasonInvalidContact a00860.html ga76f639168e50102c9de416ca38721a80a1401a7adcca399a952fcae727f41bbd0 @ CallStateChangeReasonPermissionDenied a00860.html ga76f639168e50102c9de416ca38721a80ab9bbe2fd958138d3df4a82fe1034e585 @ CallStateChangeReasonBusy a00860.html ga76f639168e50102c9de416ca38721a80ab9f44ff3310752e0889181bf670b8155 @ CallStateChangeReasonInternalError a00860.html ga76f639168e50102c9de416ca38721a80a6b1c119afbaef077f2168bdcce49d7db @ CallStateChangeReasonServiceError a00860.html ga76f639168e50102c9de416ca38721a80a1d5846e29976ba99c07287f8f15d8ca2 @ CallStateChangeReasonNetworkError a00860.html ga76f639168e50102c9de416ca38721a80ac764e91ed0cf502072c1374342541d5a @ CallStateChangeReasonMediaError a00860.html ga76f639168e50102c9de416ca38721a80a5588aa2532eb7415e347b623ca8f5551 @ CallStateChangeReasonConnectivityError a00860.html ga76f639168e50102c9de416ca38721a80a1dc8412ac14fc83d517ffa42afdc217c @ _CallStateChangeReasonPadding a00860.html ga76f639168e50102c9de416ca38721a80aad70506b0d1c5a02e5cc596cfcacdba2 ChannelContactSearchState a00894.html gad6239ceeae9aa8a33b49fec1b77e535d @ ChannelContactSearchStateNotStarted a00860.html gad6239ceeae9aa8a33b49fec1b77e535da6d7b29eb8febda2c506bc566c10248f9 @ ChannelContactSearchStateInProgress a00860.html gad6239ceeae9aa8a33b49fec1b77e535da1b4aaa5f39b1c550afccbb8a58c4fece @ ChannelContactSearchStateMoreAvailable a00860.html gad6239ceeae9aa8a33b49fec1b77e535da78325173e9c273bde3b46ac3467eb173 @ ChannelContactSearchStateCompleted a00860.html gad6239ceeae9aa8a33b49fec1b77e535da3a306ee2b594771e71838cb90a6733fd @ ChannelContactSearchStateFailed a00860.html gad6239ceeae9aa8a33b49fec1b77e535da8fbac7e828625f03349227bf126e781c @ _ChannelContactSearchStatePadding a00860.html gad6239ceeae9aa8a33b49fec1b77e535da939a306e71fe8481235f39aa256117bd FileTransferState a00894.html ga4fae9d8b47f004df92c9eda24cf8781e @ FileTransferStateNone a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea706f060b407122404bb21e326fbed074 @ FileTransferStatePending a00860.html ga4fae9d8b47f004df92c9eda24cf8781eab6b3d23b02024da063bd17441383bc7f @ FileTransferStateAccepted a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea8ab3abc401d923aff9d5dfaaf7a1b93d @ FileTransferStateOpen a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea8ad132aec75c843581f9485f5e811673 @ FileTransferStateCompleted a00860.html ga4fae9d8b47f004df92c9eda24cf8781eae50cd129faf3d6729df2ffe97c614510 @ FileTransferStateCancelled a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea1de760588d3471e7b7c337158d1cc12a @ _FileTransferStatePadding a00860.html ga4fae9d8b47f004df92c9eda24cf8781ea2c9a1e6b3478b332b32bc5b65881064c FileTransferStateChangeReason a00894.html ga2a35d8ba60e214fd8f1e284ea3d38aef @ FileTransferStateChangeReasonNone a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa20c12a9ed075c82c01c7e2b118387375 @ FileTransferStateChangeReasonRequested a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefad5ceb0681274fcb980781d2081e0bbd0 @ FileTransferStateChangeReasonLocalStopped a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa994c886ca6639971a44c6f1d39cd8b45 @ FileTransferStateChangeReasonRemoteStopped a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa248a063f70c5b5d233280ebc30af3b06 @ FileTransferStateChangeReasonLocalError a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa03a74da7f2a9052612accf9e48c66c26 @ FileTransferStateChangeReasonRemoteError a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefa6ab01ac71d857162d139e24da4f2701d @ _FileTransferStateChangeReasonPadding a00860.html ga2a35d8ba60e214fd8f1e284ea3d38aefad37120830f305845cdf1df588abbfdf6 FileHashType a00894.html ga01668c37b6bf53402bd46218a778a077 @ FileHashTypeNone a00860.html ga01668c37b6bf53402bd46218a778a077a5425aefada78b0e6bb843aca067122ff @ FileHashTypeMD5 a00860.html ga01668c37b6bf53402bd46218a778a077af187e18369189fc8de709b62180a0913 @ FileHashTypeSHA1 a00860.html ga01668c37b6bf53402bd46218a778a077a758e4c3fa6c0eed34bb8a193382287aa @ FileHashTypeSHA256 a00860.html ga01668c37b6bf53402bd46218a778a077a13e7ee71af363e65e1ea8256d6b42b99 @ _FileHashTypePadding a00860.html ga01668c37b6bf53402bd46218a778a077ab3946a7403e0c0393d48675d87ea0e9f MediaStreamType a00894.html ga792af87e6990a550aea64cffd907b6af @ MediaStreamTypeAudio a00860.html ga792af87e6990a550aea64cffd907b6afa6cbfe7ede4404ebf3b660f4814ae3ecb @ MediaStreamTypeVideo a00860.html ga792af87e6990a550aea64cffd907b6afae67152402c83bc8e01263c784d8f27d4 @ _MediaStreamTypePadding a00860.html ga792af87e6990a550aea64cffd907b6afaef884197c1277bed4b70463c41728bfb MediaStreamState a00894.html gade0301e7ed872ed3ce2fe49fef847ef0 @ MediaStreamStateDisconnected a00860.html gade0301e7ed872ed3ce2fe49fef847ef0a20a0fcc2033be0126745e0f2d5782ac2 @ MediaStreamStateConnecting a00860.html gade0301e7ed872ed3ce2fe49fef847ef0ae4bd974acadcc6f461b214c728d76323 @ MediaStreamStateConnected a00860.html gade0301e7ed872ed3ce2fe49fef847ef0a113b29fea3d710696fc67e6d01994d4d @ _MediaStreamStatePadding a00860.html gade0301e7ed872ed3ce2fe49fef847ef0a5b998dce825824302d07b31bf1dccf47 MediaStreamDirection a00894.html gadcab310dc357419cb70579825175da64 @ MediaStreamDirectionNone a00860.html gadcab310dc357419cb70579825175da64af650069e060e98cf7ae0f2fde9acb91b @ MediaStreamDirectionSend a00860.html gadcab310dc357419cb70579825175da64a6364176a18a2c24c47f53445e5a690d7 @ MediaStreamDirectionReceive a00860.html gadcab310dc357419cb70579825175da64a5acbd56c8a1c214fa01230cf7aed1487 @ MediaStreamDirectionBidirectional a00860.html gadcab310dc357419cb70579825175da64ab781b88425ab2b8706e5ec2de542b7f4 @ _MediaStreamDirectionPadding a00860.html gadcab310dc357419cb70579825175da64ae554a8714498b747e9a87f24bb416379 ChannelTextSendError a00894.html ga5d62f6836d5167746124d53ba55e1dbd @ ChannelTextSendErrorUnknown a00860.html ga5d62f6836d5167746124d53ba55e1dbdac32481e278a5fae5e455bbbc793a9ecb @ ChannelTextSendErrorOffline a00860.html ga5d62f6836d5167746124d53ba55e1dbda3ad35d336edd345d0121d4063c4d181b @ ChannelTextSendErrorInvalidContact a00860.html ga5d62f6836d5167746124d53ba55e1dbdad7cb872eb410b4377eedcae6a6e95ce9 @ ChannelTextSendErrorPermissionDenied a00860.html ga5d62f6836d5167746124d53ba55e1dbdabbf708315596e486649430690af2fd25 @ ChannelTextSendErrorTooLong a00860.html ga5d62f6836d5167746124d53ba55e1dbda09d675f77316a66e1e330f2209bddecf @ ChannelTextSendErrorNotImplemented a00860.html ga5d62f6836d5167746124d53ba55e1dbda1020e6a8825cda2e058814d47ac88d78 @ _ChannelTextSendErrorPadding a00860.html ga5d62f6836d5167746124d53ba55e1dbda2cbc5f7244f3ae488713b4c46270ec54 ChannelTextMessageType a00894.html ga7f1e23e32fa6218eebc7021d094a8f49 @ ChannelTextMessageTypeNormal a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a37e68749b415d08419694a1e9e7837b4 @ ChannelTextMessageTypeAction a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a1766ba6643dd1a5cee388cd7220848f5 @ ChannelTextMessageTypeNotice a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a92bc2974bdd9f2c238705c73947512eb @ ChannelTextMessageTypeAutoReply a00860.html ga7f1e23e32fa6218eebc7021d094a8f49ad857b8087d7f921736efc85e2683e8be @ ChannelTextMessageTypeDeliveryReport a00860.html ga7f1e23e32fa6218eebc7021d094a8f49ad333d787b06dc9e8a79561573cb6fb1c @ _ChannelTextMessageTypePadding a00860.html ga7f1e23e32fa6218eebc7021d094a8f49a6b94ac490da4899a2d9194a5ab65cffe TubeType a00894.html ga4c2a799af2fe17765ee45a8d8b703e2b @ TubeTypeDBus a00860.html ga4c2a799af2fe17765ee45a8d8b703e2babd7cb9df9ff44362dcab29b480e989f3 @ TubeTypeStream a00860.html ga4c2a799af2fe17765ee45a8d8b703e2ba205172a6ad834a1ac53749020471efc9 @ _TubeTypePadding a00860.html ga4c2a799af2fe17765ee45a8d8b703e2ba2a7c7466d4784296d28389cc22df9934 TubeState a00894.html ga53f50d894433ea4833ff1e751afa14a0 @ TubeStateLocalPending a00860.html ga53f50d894433ea4833ff1e751afa14a0ad1b9acd6405cd62f5ea736bd9d1c8b79 @ TubeStateRemotePending a00860.html ga53f50d894433ea4833ff1e751afa14a0ad891c7f1fbedaa330c3386fbdba30cb8 @ TubeStateOpen a00860.html ga53f50d894433ea4833ff1e751afa14a0ad6c6b4da4bb3b838bf5b77f59b060e1c @ _TubeStatePadding a00860.html ga53f50d894433ea4833ff1e751afa14a0a722f3a7a2f07168c8e013a308414030d CaptchaCancelReason a00894.html ga06c22a4c5a0028dbf58b64f217e87e47 @ CaptchaCancelReasonUserCancelled a00860.html ga06c22a4c5a0028dbf58b64f217e87e47ac833d4316d8cb6a6c89e5b7516e2572a @ CaptchaCancelReasonNotSupported a00860.html ga06c22a4c5a0028dbf58b64f217e87e47a2de6b3db732ff32d3960159dcea850ab @ CaptchaCancelReasonServiceConfused a00860.html ga06c22a4c5a0028dbf58b64f217e87e47aa7138d74344d4af0fbf47f9224420949 @ _CaptchaCancelReasonPadding a00860.html ga06c22a4c5a0028dbf58b64f217e87e47a1fde3bd11bff35f89fed67e3ce233d08 CaptchaStatus a00894.html gaa4dc89cbad454d2d524302c2f2504bc2 @ CaptchaStatusLocalPending a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a4d02051d9bf2c2e9104598e9914e947f @ CaptchaStatusRemotePending a00860.html gaa4dc89cbad454d2d524302c2f2504bc2add7e32a7261a06996685d997bcb48306 @ CaptchaStatusSucceeded a00860.html gaa4dc89cbad454d2d524302c2f2504bc2ae61f5e63f2b2a5f05f9fc6469fcd1f15 @ CaptchaStatusTryAgain a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a0df479d6ffca18bdd3122ce1c108c8a8 @ CaptchaStatusFailed a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a14ceed4683e79bea397aa6cb572ed8c4 @ _CaptchaStatusPadding a00860.html gaa4dc89cbad454d2d524302c2f2504bc2a25d48ffe6ad3f6580fe03182c8188757 ChannelChatState a00894.html gafafcdfb5cc02a057311ebe1c3b339e50 @ ChannelChatStateGone a00860.html gafafcdfb5cc02a057311ebe1c3b339e50ae88de9b6a777523fcd095dffc66a77a2 @ ChannelChatStateInactive a00860.html gafafcdfb5cc02a057311ebe1c3b339e50a128b7853bb11562a90ebdc0c4e9a3b2e @ ChannelChatStateActive a00860.html gafafcdfb5cc02a057311ebe1c3b339e50a439643af76ef0bf428ffbcf958d4a1cb @ ChannelChatStatePaused a00860.html gafafcdfb5cc02a057311ebe1c3b339e50acea42513e9a70afaecfbf676dfbfa00b @ ChannelChatStateComposing a00860.html gafafcdfb5cc02a057311ebe1c3b339e50a29b17e44519c26f35f5d423e5a528b7c @ _ChannelChatStatePadding a00860.html gafafcdfb5cc02a057311ebe1c3b339e50ad39be07d5bc7d821871509c9ccfbfd16 DTMFEvent a00894.html ga012772bfae380954ec1655209ae053a4 @ DTMFEventDigit0 a00860.html ga012772bfae380954ec1655209ae053a4aba871cc8e5bb6f76d8e98fb3ea1b7b0f @ DTMFEventDigit1 a00860.html ga012772bfae380954ec1655209ae053a4aba24c37745bbc1663e371a02af724aa3 @ DTMFEventDigit2 a00860.html ga012772bfae380954ec1655209ae053a4a0b435ba1e5929b5f1285b4ed7bb4461c @ DTMFEventDigit3 a00860.html ga012772bfae380954ec1655209ae053a4ab5233d11f39ac3742e77feda41335d2d @ DTMFEventDigit4 a00860.html ga012772bfae380954ec1655209ae053a4a5b33b94977d7037ba782e43589f8a7c7 @ DTMFEventDigit5 a00860.html ga012772bfae380954ec1655209ae053a4a97ff04d31b935dff321a7fda4ff5c00f @ DTMFEventDigit6 a00860.html ga012772bfae380954ec1655209ae053a4abce00b38a8ef909f478e361d302a31b1 @ DTMFEventDigit7 a00860.html ga012772bfae380954ec1655209ae053a4ae36fb4b8bdf680dc9b5412ff12d0a959 @ DTMFEventDigit8 a00860.html ga012772bfae380954ec1655209ae053a4a7c38653c053fbab594870ebf4a988078 @ DTMFEventDigit9 a00860.html ga012772bfae380954ec1655209ae053a4a8f68ad6d8b9acd6de913b1bb7fadb9cb @ DTMFEventAsterisk a00860.html ga012772bfae380954ec1655209ae053a4acea062bf869937b1ad2ac5dc32625ba2 @ DTMFEventHash a00860.html ga012772bfae380954ec1655209ae053a4af2ea268770f0ed9b85211bed605eff7b @ DTMFEventLetterA a00860.html ga012772bfae380954ec1655209ae053a4abd42c36f21149b9547b5d98d50a4a5d7 @ DTMFEventLetterB a00860.html ga012772bfae380954ec1655209ae053a4a59813e8bc99d39cbe247100cc2f369ea @ DTMFEventLetterC a00860.html ga012772bfae380954ec1655209ae053a4a461aac5ce08cce03d43e02a11493aa56 @ DTMFEventLetterD a00860.html ga012772bfae380954ec1655209ae053a4afef5cae80946be1da53a642689946937 @ _DTMFEventPadding a00860.html ga012772bfae380954ec1655209ae053a4a4a5e01929a9c646ce84029d47841f154 ChannelGroupChangeReason a00894.html ga23b323e3a7d7e111827d7ecd5816611b @ ChannelGroupChangeReasonNone a00860.html ga23b323e3a7d7e111827d7ecd5816611bae138b982d4c9bbe853228fcbca5bb2d2 @ ChannelGroupChangeReasonOffline a00860.html ga23b323e3a7d7e111827d7ecd5816611ba04b849bb9ebef99d7ae5fe0be2d1c767 @ ChannelGroupChangeReasonKicked a00860.html ga23b323e3a7d7e111827d7ecd5816611bab5f6a81c45744defdf3d9e5a39f9b2b5 @ ChannelGroupChangeReasonBusy a00860.html ga23b323e3a7d7e111827d7ecd5816611bae95ea1e70846c6ed613694b02a75137d @ ChannelGroupChangeReasonInvited a00860.html ga23b323e3a7d7e111827d7ecd5816611ba93acb38c57c97166217c56683bfe532a @ ChannelGroupChangeReasonBanned a00860.html ga23b323e3a7d7e111827d7ecd5816611ba7a73c9f0c82baaf01577caa0faa3e9f4 @ ChannelGroupChangeReasonError a00860.html ga23b323e3a7d7e111827d7ecd5816611ba0d6c1d6b1ef4817db00b425a8a7e8568 @ ChannelGroupChangeReasonInvalidContact a00860.html ga23b323e3a7d7e111827d7ecd5816611bad6a3f9751907dba0b8948387ed869ad7 @ ChannelGroupChangeReasonNoAnswer a00860.html ga23b323e3a7d7e111827d7ecd5816611ba7a9e904a1e78b248a12ec90e532a325f @ ChannelGroupChangeReasonRenamed a00860.html ga23b323e3a7d7e111827d7ecd5816611bab548182cdb61cf8f401be9056dab542f @ ChannelGroupChangeReasonPermissionDenied a00860.html ga23b323e3a7d7e111827d7ecd5816611ba7965c7a788e1b15c44f0502d1b28a245 @ ChannelGroupChangeReasonSeparated a00860.html ga23b323e3a7d7e111827d7ecd5816611ba6e360d0a9cdc2652204e2cbe0293452f @ _ChannelGroupChangeReasonPadding a00860.html ga23b323e3a7d7e111827d7ecd5816611ba76ad374c857e4425205d2e981651f5dd LocalHoldState a00894.html gacb8a20bad361e968d1a7170bae64a34d @ LocalHoldStateUnheld a00860.html gacb8a20bad361e968d1a7170bae64a34da834824a35b674e8db7942e88b8c2886e @ LocalHoldStateHeld a00860.html gacb8a20bad361e968d1a7170bae64a34da282c8058e0e6a9d8d5ec88db26b6a80e @ LocalHoldStatePendingHold a00860.html gacb8a20bad361e968d1a7170bae64a34da3be247a894e45db07a60647a2ef66991 @ LocalHoldStatePendingUnhold a00860.html gacb8a20bad361e968d1a7170bae64a34da94586be270ad7b459f3fd7609a01aae9 @ _LocalHoldStatePadding a00860.html gacb8a20bad361e968d1a7170bae64a34da59dc43715eb19356066a493296db9642 LocalHoldStateReason a00894.html ga4738883a2b74c73d53c34db4214dfe64 @ LocalHoldStateReasonNone a00860.html ga4738883a2b74c73d53c34db4214dfe64a18b9753a1e0264b869a0c016b86ef9b5 @ LocalHoldStateReasonRequested a00860.html ga4738883a2b74c73d53c34db4214dfe64ab0637c6b3d632497a8f96f1fe722c20f @ LocalHoldStateReasonResourceNotAvailable a00860.html ga4738883a2b74c73d53c34db4214dfe64a752618dffe4900ab096690e25f1532df @ _LocalHoldStateReasonPadding a00860.html ga4738883a2b74c73d53c34db4214dfe64a5b935757ae39c5d894ba9d8628fe78d6 DeliveryStatus a00894.html ga604080e478c7ae07ec133324c3c844b1 @ DeliveryStatusUnknown a00860.html ga604080e478c7ae07ec133324c3c844b1af2e4b056d294ec494ff11bc2651a85bc @ DeliveryStatusDelivered a00860.html ga604080e478c7ae07ec133324c3c844b1ac2407dda8e99aca8ad1cfee1afbe7cd8 @ DeliveryStatusTemporarilyFailed a00860.html ga604080e478c7ae07ec133324c3c844b1a234e2d9c6c716cf8f6846a03b842651c @ DeliveryStatusPermanentlyFailed a00860.html ga604080e478c7ae07ec133324c3c844b1a414de69453b2798d0953ddb4178b96ce @ DeliveryStatusAccepted a00860.html ga604080e478c7ae07ec133324c3c844b1a83d67dce5a05963fd154b4168cd71e5e @ DeliveryStatusRead a00860.html ga604080e478c7ae07ec133324c3c844b1a0783f23ad57a2a04bc96deb54a786ec7 @ DeliveryStatusDeleted a00860.html ga604080e478c7ae07ec133324c3c844b1a73d92cd732f875053ad60cab0eed5d10 @ _DeliveryStatusPadding a00860.html ga604080e478c7ae07ec133324c3c844b1a26349096eded56b4083f437fbe035ec3 SASLAbortReason a00894.html gaf4f8a401f061ad5c26257f8e4e581050 @ SASLAbortReasonInvalidChallenge a00860.html gaf4f8a401f061ad5c26257f8e4e581050aeae9b855eb8241e7a0cef7b82f34e29e @ SASLAbortReasonUserAbort a00860.html gaf4f8a401f061ad5c26257f8e4e581050a177255584f02c722ae4f0346a61fa449 @ _SASLAbortReasonPadding a00860.html gaf4f8a401f061ad5c26257f8e4e581050a40b83468e273779bad71801a433c0256 SASLStatus a00894.html gad32b4dc0f4e05f7f5f054f8e86e29a71 @ SASLStatusNotStarted a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71aa17ef57b95fe5ad37a86eebf327c5115 @ SASLStatusInProgress a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a8383e86ce0c8434fdb5fbe945211ddb7 @ SASLStatusServerSucceeded a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a26c1f1732db66be7434c4889d77a369b @ SASLStatusClientAccepted a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a78ef3cf9ff636a4c917ea97ef16f5ab7 @ SASLStatusSucceeded a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71af1ca144e6962c5e60682400c48d0959c @ SASLStatusServerFailed a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71ab405ecc7532cb71ae9594ad8a32308ea @ SASLStatusClientFailed a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a270f05634247b2af51ea04dd2cfabc91 @ _SASLStatusPadding a00860.html gad32b4dc0f4e05f7f5f054f8e86e29a71a9ef08b10aca094bad487ed8f7b575b32 TubeChannelState a00894.html gaed213c3ef4c3a3a732c871e2ec42285c @ TubeChannelStateLocalPending a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca2d6619fb7b4865ee832222cbff28fbf6 @ TubeChannelStateRemotePending a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca0baf79855da8c3c520522c47324de2a9 @ TubeChannelStateOpen a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca11243c36e2b4521f5d120dbe811413c1 @ TubeChannelStateNotOffered a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca3f74a3ac21241ca3374983174099dde8 @ _TubeChannelStatePadding a00860.html gaed213c3ef4c3a3a732c871e2ec42285ca7d745822170fc1e13fa4f111d39a96d6 SocketAddressType a00894.html ga7c4136f60d444e2c62c9b6568cf96824 @ SocketAddressTypeUnix a00860.html ga7c4136f60d444e2c62c9b6568cf96824af3e31ed96405c22c9c255ab087aa0202 @ SocketAddressTypeAbstractUnix a00860.html ga7c4136f60d444e2c62c9b6568cf96824a205dd31f0952d22fd896541321646d91 @ SocketAddressTypeIPv4 a00860.html ga7c4136f60d444e2c62c9b6568cf96824ac3d350676a2a8f1a0024e8a22de2a752 @ SocketAddressTypeIPv6 a00860.html ga7c4136f60d444e2c62c9b6568cf96824a58293e917107b6c17bc6997bdbbdbdb3 @ _SocketAddressTypePadding a00860.html ga7c4136f60d444e2c62c9b6568cf96824acf256d93a4904324a44de7886a7db9d0 SocketAccessControl a00894.html ga59816b3c275bf13857e694c6ecec5fc9 @ SocketAccessControlLocalhost a00860.html ga59816b3c275bf13857e694c6ecec5fc9adc17ee56d8be8d2a8a1e3b63498bf909 @ SocketAccessControlPort a00860.html ga59816b3c275bf13857e694c6ecec5fc9a2c0ee1efb68ecddb8109490f3cd0f38d @ SocketAccessControlNetmask a00860.html ga59816b3c275bf13857e694c6ecec5fc9a526c352c65aee815e1403f1b05d6ffd5 @ SocketAccessControlCredentials a00860.html ga59816b3c275bf13857e694c6ecec5fc9ae9a58f3f6f2d5b1594f79002a63ab1e3 @ _SocketAccessControlPadding a00860.html ga59816b3c275bf13857e694c6ecec5fc9a1dc538633f1283be3bf70040130cd57d MediaStreamError a00894.html ga7378559696fef6d79ded2b9507834145 @ MediaStreamErrorUnknown a00860.html ga7378559696fef6d79ded2b9507834145a0bf9d4b1584d32b1aaf7b266e674ffc3 @ MediaStreamErrorEOS a00860.html ga7378559696fef6d79ded2b9507834145a57fb46b28042ed7bc1cf83c91362eb0d @ MediaStreamErrorCodecNegotiationFailed a00860.html ga7378559696fef6d79ded2b9507834145a31c11d8f2f55c182da9c3574f4ebc92a @ MediaStreamErrorConnectionFailed a00860.html ga7378559696fef6d79ded2b9507834145ae19086364c9c7ceef90692cc5e3c4553 @ MediaStreamErrorNetworkError a00860.html ga7378559696fef6d79ded2b9507834145ac7d864eb9b8517195597bc1b4e11136b @ MediaStreamErrorNoCodecs a00860.html ga7378559696fef6d79ded2b9507834145a1cddeded4db95f017084436dedff81fc @ MediaStreamErrorInvalidCMBehavior a00860.html ga7378559696fef6d79ded2b9507834145ac17c1e925b6c43ac849221266d95abe8 @ MediaStreamErrorMediaError a00860.html ga7378559696fef6d79ded2b9507834145a49acb3724b348b1814a90fa1117b71e4 @ _MediaStreamErrorPadding a00860.html ga7378559696fef6d79ded2b9507834145a3a472fa4d8cb01f7528fd315715ddece MediaStreamBaseProto a00894.html ga58b6c53046bff44524cbbd491d92b4dd @ MediaStreamBaseProtoUDP a00860.html ga58b6c53046bff44524cbbd491d92b4dda1a45c84819c5f5aa636721fa8c708ca3 @ MediaStreamBaseProtoTCP a00860.html ga58b6c53046bff44524cbbd491d92b4ddac73367ac89da1393cead276ab54d0d69 @ _MediaStreamBaseProtoPadding a00860.html ga58b6c53046bff44524cbbd491d92b4dda144e797fd2edc04784a7e733b346315a MediaStreamTransportType a00894.html gabaca565c16b2802bb9ea5cbf6b6a4327 @ MediaStreamTransportTypeLocal a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327a4e1cd3df3ca51fe5491b3174c5084dcd @ MediaStreamTransportTypeDerived a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327a97b1a445af18a0893768798fa801d6b9 @ MediaStreamTransportTypeRelay a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327af4a2724c7f58b312e88a62f240681ace @ _MediaStreamTransportTypePadding a00860.html gabaca565c16b2802bb9ea5cbf6b6a4327ad35bc6c05d123c807b61c8190d570f6d DebugLevel a00894.html gabcd296a1f2f46223df1468700a3e22dc @ DebugLevelError a00860.html gabcd296a1f2f46223df1468700a3e22dca8e1728f5f1c5dea6f5d6e3d7804571d2 @ DebugLevelCritical a00860.html gabcd296a1f2f46223df1468700a3e22dca7764c642ac4cb8ef7d765a4942e9a1fa @ DebugLevelWarning a00860.html gabcd296a1f2f46223df1468700a3e22dca6a0e73d20aacf43a7de1621228084032 @ DebugLevelMessage a00860.html gabcd296a1f2f46223df1468700a3e22dcab825ff1a2efce24bfa0acea9fbdfe5c7 @ DebugLevelInfo a00860.html gabcd296a1f2f46223df1468700a3e22dca97f62eb29596bee19b4e6c730977867d @ DebugLevelDebug a00860.html gabcd296a1f2f46223df1468700a3e22dcaf1bf23992286b9212eaeca48501f0c71 @ _DebugLevelPadding a00860.html gabcd296a1f2f46223df1468700a3e22dcad632475463b5493179e2fa8e65d70bba TLSCertificateState a00894.html ga4599a4b62efa6b890716cc33c204a899 @ TLSCertificateStatePending a00860.html ga4599a4b62efa6b890716cc33c204a899ae43c8b95d2be8e8a725ec871be1915f5 @ TLSCertificateStateAccepted a00860.html ga4599a4b62efa6b890716cc33c204a899a92f9dceb8c50ead8b2e414cdf67e4691 @ TLSCertificateStateRejected a00860.html ga4599a4b62efa6b890716cc33c204a899a55ab7c9dfdf2f2f2f8d86761def3564c @ _TLSCertificateStatePadding a00860.html ga4599a4b62efa6b890716cc33c204a899a1ea99d4faa537948f77aab306daaca69 TLSCertificateRejectReason a00894.html gad74334f93654c0c1adbdd03ee0196488 @ TLSCertificateRejectReasonUnknown a00860.html gad74334f93654c0c1adbdd03ee0196488a6b18f12c84b98e2e5fcdf543f9f18cb6 @ TLSCertificateRejectReasonUntrusted a00860.html gad74334f93654c0c1adbdd03ee0196488afd94cbef2b741adf31344098db448efd @ TLSCertificateRejectReasonExpired a00860.html gad74334f93654c0c1adbdd03ee0196488a5394a96eccdc3b21cd7dd3d3cd2a98a6 @ TLSCertificateRejectReasonNotActivated a00860.html gad74334f93654c0c1adbdd03ee0196488a6cdc7c812f6988bda6efc8717149b892 @ TLSCertificateRejectReasonFingerprintMismatch a00860.html gad74334f93654c0c1adbdd03ee0196488a96e7dd1a7b4ad5b3e85d2632ddb6adc0 @ TLSCertificateRejectReasonHostnameMismatch a00860.html gad74334f93654c0c1adbdd03ee0196488a2b85f82659b659086956189f2b30ce1e @ TLSCertificateRejectReasonSelfSigned a00860.html gad74334f93654c0c1adbdd03ee0196488a0ed2c1a19819284a4142db4d6468ef49 @ TLSCertificateRejectReasonRevoked a00860.html gad74334f93654c0c1adbdd03ee0196488aa65901c32dbe47596ff4af0ab7f0d071 @ TLSCertificateRejectReasonInsecure a00860.html gad74334f93654c0c1adbdd03ee0196488addf4f700339e938b9c8b57e242363a8b @ TLSCertificateRejectReasonLimitExceeded a00860.html gad74334f93654c0c1adbdd03ee0196488acf4bf671caa2ab60767794321c1a4d52 @ _TLSCertificateRejectReasonPadding a00860.html gad74334f93654c0c1adbdd03ee0196488a613cc55b18197783c0b95a72feb072e1 CallContentPacketizationType a00894.html gaf4760523ed21820d3c2a6e74a230defe @ CallContentPacketizationTypeRTP a00860.html gaf4760523ed21820d3c2a6e74a230defead0b067ea6416e64cca910812a12f1cf6 @ CallContentPacketizationTypeRaw a00860.html gaf4760523ed21820d3c2a6e74a230defea50512d6e710cc8d4fc30a0ebe5ab5343 @ CallContentPacketizationTypeMSNWebcam a00860.html gaf4760523ed21820d3c2a6e74a230defea916ffc6cf0d6dee0a06e8238ac5a6262 @ _CallContentPacketizationTypePadding a00860.html gaf4760523ed21820d3c2a6e74a230defeab66a3102877d1c05cbe0b597c101bb5e CallContentDisposition a00894.html ga0b9c2541a4cb18bd89fb50dc37c057ad @ CallContentDispositionNone a00860.html ga0b9c2541a4cb18bd89fb50dc37c057adadfc0b70af8ad2490d73f50aa1f474aee @ CallContentDispositionInitial a00860.html ga0b9c2541a4cb18bd89fb50dc37c057adadb7ace9352dc4088311da29a12b7be4f @ _CallContentDispositionPadding a00860.html ga0b9c2541a4cb18bd89fb50dc37c057adaaca3027c7f76035ce61ba1be39ecf11a RCPTXRRTTMode a00894.html ga69b6598dfe33d3f82bf225d6e387aaee @ RCPTXRRTTModeAll a00860.html ga69b6598dfe33d3f82bf225d6e387aaeeae6bc80f78b2f3ba88969b7289e3bb60c @ RCPTXRRTTModeSender a00860.html ga69b6598dfe33d3f82bf225d6e387aaeea0075f473c2a6254b3e888e0291b9c115 @ _RCPTXRRTTModePadding a00860.html ga69b6598dfe33d3f82bf225d6e387aaeea0f035c43a2ca7bd34048524b3991f114 StreamFlowState a00894.html ga57557f44cb750a772273d285d131242b @ StreamFlowStateStopped a00860.html ga57557f44cb750a772273d285d131242ba8042d34a732148f8b9bd0bb41e284c6b @ StreamFlowStatePendingStart a00860.html ga57557f44cb750a772273d285d131242ba0d736e7ccaec759526ee4b821d325a66 @ StreamFlowStatePendingStop a00860.html ga57557f44cb750a772273d285d131242ba0776426f146a2db8cf03c2572e49f31a @ StreamFlowStateStarted a00860.html ga57557f44cb750a772273d285d131242ba6c86f88a465502140f506bb0582f815d @ _StreamFlowStatePadding a00860.html ga57557f44cb750a772273d285d131242ba8249702021ca71004be5c89072c6b9c3 CallStreamCandidateType a00894.html gaf49827bf619488a43ca02670b391d981 @ CallStreamCandidateTypeNone a00860.html gaf49827bf619488a43ca02670b391d981afec61a63031e9bb39e28e6d6b43483d0 @ CallStreamCandidateTypeHost a00860.html gaf49827bf619488a43ca02670b391d981a7e6dca8593d61df8c1e939c8751e5a3a @ CallStreamCandidateTypeServerReflexive a00860.html gaf49827bf619488a43ca02670b391d981aff7471655affad557d59f8ab9367e54a @ CallStreamCandidateTypePeerReflexive a00860.html gaf49827bf619488a43ca02670b391d981acdda0ef65ecd90be69838c8bd67b4397 @ CallStreamCandidateTypeRelay a00860.html gaf49827bf619488a43ca02670b391d981a3bc120cfd06d0a7d18eaff40f2351ba7 @ CallStreamCandidateTypeMulticast a00860.html gaf49827bf619488a43ca02670b391d981a763e0f7ba4240229a26d73f0985dfd1c @ _CallStreamCandidateTypePadding a00860.html gaf49827bf619488a43ca02670b391d981a49d9190ff0c52058300b26602fd0c111 StreamComponent a00894.html gacba6e022f5b3292e88e2fb372c4e47b1 @ StreamComponentUnknown a00860.html gacba6e022f5b3292e88e2fb372c4e47b1af11a292444ac96a318352472fbf89216 @ StreamComponentData a00860.html gacba6e022f5b3292e88e2fb372c4e47b1a9bbe638136d2227d22e8f66918d86773 @ StreamComponentControl a00860.html gacba6e022f5b3292e88e2fb372c4e47b1a05e60bcb1450fe294cd7df6c8c53044f @ _StreamComponentPadding a00860.html gacba6e022f5b3292e88e2fb372c4e47b1a31763624549378b90218ef258e167325 StreamTransportType a00894.html gaab74feeec5bd0954e333caff3d971908 @ StreamTransportTypeUnknown a00860.html gaab74feeec5bd0954e333caff3d971908a19f0a61eb96ad82bdb787f69d0dc89fb @ StreamTransportTypeRawUDP a00860.html gaab74feeec5bd0954e333caff3d971908a673b45035add5c8eed84fc1f9bac0485 @ StreamTransportTypeICE a00860.html gaab74feeec5bd0954e333caff3d971908a777571595958760552d5118f97dff6ec @ StreamTransportTypeGTalkP2P a00860.html gaab74feeec5bd0954e333caff3d971908a35b2a77e3e69586f1bc08cc57a249599 @ StreamTransportTypeWLM2009 a00860.html gaab74feeec5bd0954e333caff3d971908a993dca4ce5c486bda2fb11eafffc600f @ StreamTransportTypeSHM a00860.html gaab74feeec5bd0954e333caff3d971908a07ad46f02a8d2351199bd0ff0e8109c3 @ StreamTransportTypeMulticast a00860.html gaab74feeec5bd0954e333caff3d971908a484a7f0c13e0fc6bd3b9646d3b3bc0d5 @ _StreamTransportTypePadding a00860.html gaab74feeec5bd0954e333caff3d971908a051cb55507eaab4b0330de993e03df1d SendingState a00894.html ga0c88294dbc48b75ba591dfab17ce8b0d @ SendingStateNone a00860.html ga0c88294dbc48b75ba591dfab17ce8b0da26a19edd449bb2334e5cdf6bc4b4076e @ SendingStatePendingSend a00860.html ga0c88294dbc48b75ba591dfab17ce8b0dad21a2ad2c8e8387672e3e60c9e3b05b6 @ SendingStateSending a00860.html ga0c88294dbc48b75ba591dfab17ce8b0daee8d5d7a2b72019255526874c7129fc0 @ SendingStatePendingStopSending a00860.html ga0c88294dbc48b75ba591dfab17ce8b0dac8fa85d237e13399527dafaeeeaadcf7 @ _SendingStatePadding a00860.html ga0c88294dbc48b75ba591dfab17ce8b0da30979609450bae8f0c5d74d6956f0b6d StreamEndpointState a00894.html gae7b563baf8ac09ee12a00f04e87703bd @ StreamEndpointStateConnecting a00860.html gae7b563baf8ac09ee12a00f04e87703bdab45f4463e556edd5e20cddd2032f5db2 @ StreamEndpointStateProvisionallyConnected a00860.html gae7b563baf8ac09ee12a00f04e87703bda74f5426e8522a80aabb32245a61bb8cb @ StreamEndpointStateFullyConnected a00860.html gae7b563baf8ac09ee12a00f04e87703bda6b3cc61f92e6ddead82cb11220319552 @ StreamEndpointStateExhaustedCandidates a00860.html gae7b563baf8ac09ee12a00f04e87703bdae2c9fd368bdce2ce2b4cf4ed0bbc44ae @ StreamEndpointStateFailed a00860.html gae7b563baf8ac09ee12a00f04e87703bda4437db7b85f19cb3a33ca7e836bb297f @ _StreamEndpointStatePadding a00860.html gae7b563baf8ac09ee12a00f04e87703bdaac58b7865c4ea4ffb711313e029e192d LocalMuteState a00894.html gafe7952a81b71b90fa8296454d01903ee @ LocalMuteStateUnmuted a00860.html gafe7952a81b71b90fa8296454d01903eeacc3cb4718e917cb24883a60be342c1ef @ LocalMuteStateMuted a00860.html gafe7952a81b71b90fa8296454d01903eea6a878278092d39c77aca54139cde6757 @ LocalMuteStatePendingMute a00860.html gafe7952a81b71b90fa8296454d01903eeaf036a3c5ac5cfb451a12ee169545e7d8 @ LocalMuteStatePendingUnmute a00860.html gafe7952a81b71b90fa8296454d01903eea8eb35a864cd199c575e888b6c2e657ff @ LocalMuteStatePartiallyMuted a00860.html gafe7952a81b71b90fa8296454d01903eea96bb27b8c56b5b94135c00c7b8e763c9 @ _LocalMuteStatePadding a00860.html gafe7952a81b71b90fa8296454d01903eea954ce460b1cecacfe47fdb3415c02c1a uint qHash a00860.html a2ef696a0d8e66b55fe4d33ab037b408e (const ChannelClassSpec &spec) uint qHash a00860.html a71c6a91e55bb5ddb2a4a5b8bfc5dcd9c (const QSet< ChannelClassSpec > &specSet) uint qHash a00860.html aefcfdc59e6f5eb27d988f6292b706302 (const ChannelClassSpecList &specList) void enableDebug a00872.html ga52cbf229d908f8ea516b53f074e44241 (bool enable) void enableWarnings a00872.html ga7cc429d87fa4d829de26cd835cc005d3 (bool enable) void setDebugCallback a00872.html ga04ff12f8b086a5373b4c12853388e791 (DebugCallback cb) Debug enabledDebug a00860.html aed3a7ef9278169667fba239c567bccd2 () Debug enabledWarning a00860.html a7757257be10e373dfff8ad1f25fa3318 () Features operator| a00860.html a5506682a3584a6f446f639cfed5b920b (const Feature &feature1, const Feature &feature2) Features operator| a00860.html a560cae4407a2089af01d38d0a097cdf2 (const Features &features, const Feature &feature) uint qHash a00860.html ad04994de8486a68fba31c147062ee5e4 (const Features &features) PtrFunctor0< R > ptrFun a00860.html a69a4e19165b179ae1cca6526e7fd89fb (R(*fn)()) PtrFunctor1< R, Arg1 > ptrFun a00860.html a84e58858c491d79624c22c08ee0e4ab8 (R(*fn)(Arg1)) PtrFunctor2< R, Arg1, Arg2 > ptrFun a00860.html a2e9f85674d4256034019f42af1cf1ce2 (R(*fn)(Arg1, Arg2)) PtrFunctor3< R, Arg1, Arg2, Arg3 > ptrFun a00860.html a94cde4d70a9571931d6fbbe9ced5386b (R(*fn)(Arg1, Arg2, Arg3)) PtrFunctor4< R, Arg1, Arg2, Arg3, Arg4 > ptrFun a00860.html a0df65663391d5d43ddd818a33bf1e32e (R(*fn)(Arg1, Arg2, Arg3, Arg4)) PtrFunctor5< R, Arg1, Arg2, Arg3, Arg4, Arg5 > ptrFun a00860.html a6e7dbd4d4e5e943afaf42870c63b2980 (R(*fn)(Arg1, Arg2, Arg3, Arg4, Arg5)) PtrFunctor6< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > ptrFun a00860.html acc9b4c644f85b772aea500fef11b631f (R(*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)) PtrFunctor7< R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > ptrFun a00860.html a7af80b75518c98a9b97057cf88177f8f (R(*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)) MemberFunctor0< R, T > memFun a00860.html aa79582b7e3c94d106e8bb70a1486260d (T *obj, R(T::*fn)()) MemberFunctor1< R, T, Arg1 > memFun a00860.html a8c011ba84f9075d9f0b51c24afc81947 (T *obj, R(T::*fn)(Arg1)) MemberFunctor2< R, T, Arg1, Arg2 > memFun a00860.html a22e49170f331bf477f345e958282ccdf (T *obj, R(T::*fn)(Arg1, Arg2)) MemberFunctor3< R, T, Arg1, Arg2, Arg3 > memFun a00860.html a641112b098228363642160cd9ad3e441 (T *obj, R(T::*fn)(Arg1, Arg2, Arg3)) MemberFunctor4< R, T, Arg1, Arg2, Arg3, Arg4 > memFun a00860.html a9ec115d657e8192aa23049b1ee114087 (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4)) MemberFunctor5< R, T, Arg1, Arg2, Arg3, Arg4, Arg5 > memFun a00860.html ab2538d0892333a23fe2e4ae70f7fefb8 (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5)) MemberFunctor6< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 > memFun a00860.html a39fcee57171be92a69f2ec258c34cf2b (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)) MemberFunctor7< R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 > memFun a00860.html a582886cefa160bd080f92886159cdaa2 (T *obj, R(T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)) uint qHash a00860.html a71006219e1876fcd174292130e6baaaa (const ProtocolParameter &parameter) uint qHash a00860.html ade905886d626745f0affa04d1eb78972 (const SharedPtr< T > &ptr) uint qHash a00860.html ae13216cbcf4902a974bc02e84b3f73d4 (const WeakPtr< T > &ptr) void registerTypes a00860.html ab8312af992258c4c971d5dfe745f6ba9 () bool operator== a00860.html a64124d3c464eb95a94a84787c44dc96d (const SUSocketAddress &v1, const SUSocketAddress &v2) QDBusArgument & operator<< a00860.html a2abfe3553ccba8e750facda4b42e821d (QDBusArgument &arg, const SUSocketAddress &val) const QDBusArgument & operator>> a00860.html ab950f54004efdeb2190df69444b97c51 (const QDBusArgument &arg, SUSocketAddress &val) QString escapeAsIdentifier a00860.html aaebe9d5f5d20d3a8156b763d54af55ed (const QString &string) bool checkValidProtocolName a00860.html a19c21cc46d1eb6e564a89a9bca9bf9c7 (const QString &protocolName) QVariant::Type variantTypeFromDBusSignature a00860.html a183a444afccd0cd1a1364f2063adc786 (const QString &signature) QVariant parseValueWithDBusSignature a00860.html a23af7e0407659ac7c2016901d3fb2722 (const QString &value, const QString &dbusSignature) bool operator== a00860.html a104edc83625caf560ad3139d2420075c (const AccessControl &v1, const AccessControl &v2) QDBusArgument & operator<< a00860.html aaff420286fc4d2de055a43c6ccb78350 (QDBusArgument &arg, const AccessControl &val) const QDBusArgument & operator>> a00860.html a1b8246f7d3ea8beb221b4c1038cfef85 (const QDBusArgument &arg, AccessControl &val) bool operator== a00860.html af26ed706982d8e9581221868b4700d38 (const AliasPair &v1, const AliasPair &v2) QDBusArgument & operator<< a00860.html a135372159215a3d354d90c2804ecdabb (QDBusArgument &arg, const AliasPair &val) const QDBusArgument & operator>> a00860.html aa23f5a9f159ada49ef0cee28261fb049 (const QDBusArgument &arg, AliasPair &val) bool operator== a00860.html a3c1ca3c6e806368751ae0813d2058c78 (const Avatar &v1, const Avatar &v2) QDBusArgument & operator<< a00860.html abbb2aa4539e46d7449db77183849e23c (QDBusArgument &arg, const Avatar &val) const QDBusArgument & operator>> a00860.html a6a699a95affd699b9afbf6c5d14b4a79 (const QDBusArgument &arg, Avatar &val) bool operator== a00860.html adb9b453a45d3023596e2009c325baf1e (const CallStateReason &v1, const CallStateReason &v2) QDBusArgument & operator<< a00860.html a5f46e58ff1172d3e2c5c57d1b86f2ff6 (QDBusArgument &arg, const CallStateReason &val) const QDBusArgument & operator>> a00860.html ae829afe1f16283c1933e74fbac3a499a (const QDBusArgument &arg, CallStateReason &val) bool operator== a00860.html a822f763e9be46bfbee90a774572ee0d5 (const Candidate &v1, const Candidate &v2) QDBusArgument & operator<< a00860.html a8e0d2e1d65142da84bb5bd2ce980dbaa (QDBusArgument &arg, const Candidate &val) const QDBusArgument & operator>> a00860.html a5d65f85e30f8095c0f6fe8bdfca095c6 (const QDBusArgument &arg, Candidate &val) bool operator== a00860.html ae3512c5951453b73a48b4722da58e799 (const CapabilityChange &v1, const CapabilityChange &v2) QDBusArgument & operator<< a00860.html a1b2e54df77ff13b5ad937996cd4be17a (QDBusArgument &arg, const CapabilityChange &val) const QDBusArgument & operator>> a00860.html a15e0f4bb9f54c92d162a065fc96e9df9 (const QDBusArgument &arg, CapabilityChange &val) bool operator== a00860.html a95952a7e1b490056e40e6eb416f80943 (const CapabilityPair &v1, const CapabilityPair &v2) QDBusArgument & operator<< a00860.html a596e7ef52b9a28b932ea4249104a4122 (QDBusArgument &arg, const CapabilityPair &val) const QDBusArgument & operator>> a00860.html ade5688c968fc6713ab6d65735732b4ac (const QDBusArgument &arg, CapabilityPair &val) bool operator== a00860.html a5157cc7ba9d7e0f28d7f58f84c1596a5 (const CaptchaInfo &v1, const CaptchaInfo &v2) QDBusArgument & operator<< a00860.html ab74a72cd5ab73e18dc74d31790862e03 (QDBusArgument &arg, const CaptchaInfo &val) const QDBusArgument & operator>> a00860.html ab7e699fa26498e3be78d670937cc5a3e (const QDBusArgument &arg, CaptchaInfo &val) bool operator== a00860.html a3314f0d4af7068843d5f4660c5970b3a (const ChannelDetails &v1, const ChannelDetails &v2) QDBusArgument & operator<< a00860.html a3e14e04670d021fa7c1f04fae7eb15e3 (QDBusArgument &arg, const ChannelDetails &val) const QDBusArgument & operator>> a00860.html acf4aa425f0b888b75f5f4f6d811e949b (const QDBusArgument &arg, ChannelDetails &val) bool operator== a00860.html adedf212bb09e2c8a315cf3fd8768b76b (const ChannelInfo &v1, const ChannelInfo &v2) QDBusArgument & operator<< a00860.html acee93c99f49245218065637f42cb49bd (QDBusArgument &arg, const ChannelInfo &val) const QDBusArgument & operator>> a00860.html aeb0e5a8008412152f2e354ac11a9f032 (const QDBusArgument &arg, ChannelInfo &val) bool operator== a00860.html abd5c475b0540e03c52d9988ce8f57659 (const ContactCapability &v1, const ContactCapability &v2) QDBusArgument & operator<< a00860.html a558eb474d056ce9c72b772f810306162 (QDBusArgument &arg, const ContactCapability &val) const QDBusArgument & operator>> a00860.html ab2b8a651fc5fd7b354a3d6414e8b3755 (const QDBusArgument &arg, ContactCapability &val) bool operator== a00860.html af4c97b6544fca7b2c6923ab6b1e5e1d2 (const ContactInfoField &v1, const ContactInfoField &v2) QDBusArgument & operator<< a00860.html a0f6f876cca113adc26adca98b6b70762 (QDBusArgument &arg, const ContactInfoField &val) const QDBusArgument & operator>> a00860.html a8979697b303b8cf757fc7d51563d575a (const QDBusArgument &arg, ContactInfoField &val) bool operator== a00860.html afa0272ef6765ff6cb02e3a05434e67d7 (const ContactSubscriptions &v1, const ContactSubscriptions &v2) QDBusArgument & operator<< a00860.html a355554b09e7dc64fd465521ccf7a083a (QDBusArgument &arg, const ContactSubscriptions &val) const QDBusArgument & operator>> a00860.html a2b5442b4a97b09f54ce94887e6cdfd72 (const QDBusArgument &arg, ContactSubscriptions &val) bool operator== a00860.html a27a2001a560e3208936823edc77cf74d (const CurrencyAmount &v1, const CurrencyAmount &v2) QDBusArgument & operator<< a00860.html aa6b101a2150aab4d9b1e0a898619e64b (QDBusArgument &arg, const CurrencyAmount &val) const QDBusArgument & operator>> a00860.html a9fa3cbad4ed6f7a4ea837dbb0693454f (const QDBusArgument &arg, CurrencyAmount &val) bool operator== a00860.html a7248ef36b9d98ac82f82dacf2028882d (const DBusTubeMember &v1, const DBusTubeMember &v2) QDBusArgument & operator<< a00860.html afbd32e40befcda310664f8331bee75ab (QDBusArgument &arg, const DBusTubeMember &val) const QDBusArgument & operator>> a00860.html a39d6b2564f8deab3630381cfecf6af58 (const QDBusArgument &arg, DBusTubeMember &val) bool operator== a00860.html a960513ce35965508bee79512ffe7abb9 (const DebugMessage &v1, const DebugMessage &v2) QDBusArgument & operator<< a00860.html ac863f794185f911ee853322b2b37932d (QDBusArgument &arg, const DebugMessage &val) const QDBusArgument & operator>> a00860.html a04582d7602c4decfe60c44336ad9a680 (const QDBusArgument &arg, DebugMessage &val) bool operator== a00860.html a64f0d89793f6e66504cd3a4fe554783e (const FieldSpec &v1, const FieldSpec &v2) QDBusArgument & operator<< a00860.html a5c5076e0a6271f1f567914e061156fa0 (QDBusArgument &arg, const FieldSpec &val) const QDBusArgument & operator>> a00860.html ade0f81f2092f3e63c3ef64b331430075 (const QDBusArgument &arg, FieldSpec &val) bool operator== a00860.html ab3229391b780080e31134898339b7a8d (const HTTPPostData &v1, const HTTPPostData &v2) QDBusArgument & operator<< a00860.html ae9a517da15a94b8aa2ad171a9e0409e7 (QDBusArgument &arg, const HTTPPostData &val) const QDBusArgument & operator>> a00860.html a5eca5e7cc8aaef037b41fe27f8956a97 (const QDBusArgument &arg, HTTPPostData &val) bool operator== a00860.html a4b343625ffb0e457cbe3989861b958cf (const LocalPendingInfo &v1, const LocalPendingInfo &v2) QDBusArgument & operator<< a00860.html a93cba2eb2a1d38716fe4c6b7bb139c90 (QDBusArgument &arg, const LocalPendingInfo &val) const QDBusArgument & operator>> a00860.html a17258034e4313dbe4de72c840ed8ed7e (const QDBusArgument &arg, LocalPendingInfo &val) bool operator== a00860.html a763f99d5a9e7c4346b0e22cff27eb132 (const MailAddress &v1, const MailAddress &v2) QDBusArgument & operator<< a00860.html a31fc416bd89be8bb2701309ca1cd0d3d (QDBusArgument &arg, const MailAddress &val) const QDBusArgument & operator>> a00860.html adb5d415147652074a379d725f1933d3c (const QDBusArgument &arg, MailAddress &val) bool operator== a00860.html a11ebfb13777a480fecd5d2208f323cd3 (const MediaDescriptionOffer &v1, const MediaDescriptionOffer &v2) QDBusArgument & operator<< a00860.html a4afb39e9a1c99ea8606dd53e852bcf94 (QDBusArgument &arg, const MediaDescriptionOffer &val) const QDBusArgument & operator>> a00860.html a812361553fd5adc71a7165771d56cbbb (const QDBusArgument &arg, MediaDescriptionOffer &val) bool operator== a00860.html af68a04a0a67ab96ca311894a86335599 (const MediaSessionHandlerInfo &v1, const MediaSessionHandlerInfo &v2) QDBusArgument & operator<< a00860.html a2cbde85f5ff3c92542509cda4ba33b87 (QDBusArgument &arg, const MediaSessionHandlerInfo &val) const QDBusArgument & operator>> a00860.html a67b562d35faa0c9a5545240a9747f5f9 (const QDBusArgument &arg, MediaSessionHandlerInfo &val) bool operator== a00860.html abea520d5798b9739653ccefbfcc909cc (const MediaStreamHandlerTransport &v1, const MediaStreamHandlerTransport &v2) QDBusArgument & operator<< a00860.html a1b4e9142371c45d09240850323828f37 (QDBusArgument &arg, const MediaStreamHandlerTransport &val) const QDBusArgument & operator>> a00860.html ad558325ebabbdd79ae50d4b3d6f209fb (const QDBusArgument &arg, MediaStreamHandlerTransport &val) bool operator== a00860.html a454427683779289983efc060816a54ce (const MediaStreamInfo &v1, const MediaStreamInfo &v2) QDBusArgument & operator<< a00860.html ab0b03c346dc8a607c39aec9b10cd755f (QDBusArgument &arg, const MediaStreamInfo &val) const QDBusArgument & operator>> a00860.html aa2fb547c67acbf393df85823f4d6ff14 (const QDBusArgument &arg, MediaStreamInfo &val) bool operator== a00860.html a41ff0bb2a7d568325e774afed089b83a (const NotDelegatedError &v1, const NotDelegatedError &v2) QDBusArgument & operator<< a00860.html afb9df75fec452021bcee3c11fdd04252 (QDBusArgument &arg, const NotDelegatedError &val) const QDBusArgument & operator>> a00860.html abc68eb50543fe0f902b555c27df5b558 (const QDBusArgument &arg, NotDelegatedError &val) bool operator== a00860.html a03ec783474ec059ed46af28aea1b85af (const ParamSpec &v1, const ParamSpec &v2) QDBusArgument & operator<< a00860.html aefd644f06b9cdb36bf1055fd47a82ece (QDBusArgument &arg, const ParamSpec &val) const QDBusArgument & operator>> a00860.html a7e0c6148ff57629a6f4986b0847664d8 (const QDBusArgument &arg, ParamSpec &val) bool operator== a00860.html a6fcf5c14befc36b63c3503ea477c8949 (const PendingTextMessage &v1, const PendingTextMessage &v2) QDBusArgument & operator<< a00860.html a7699dadecff412d0dd7bf6229514f33c (QDBusArgument &arg, const PendingTextMessage &val) const QDBusArgument & operator>> a00860.html a63e8645801c62516950fa22d59d4e8fb (const QDBusArgument &arg, PendingTextMessage &val) bool operator== a00860.html a8c30188e835378eb903ea5a403b7d2fc (const PropertyFlagsChange &v1, const PropertyFlagsChange &v2) QDBusArgument & operator<< a00860.html a4fb997279cd4dfda6de45f3823963e14 (QDBusArgument &arg, const PropertyFlagsChange &val) const QDBusArgument & operator>> a00860.html ad0d129c8958e8728fcc2e8629c195b6e (const QDBusArgument &arg, PropertyFlagsChange &val) bool operator== a00860.html af8ef12a998b88fd96a02711eaabcaa0c (const PropertySpec &v1, const PropertySpec &v2) QDBusArgument & operator<< a00860.html af5fc4f6106a63f4562ea50158e6177b3 (QDBusArgument &arg, const PropertySpec &val) const QDBusArgument & operator>> a00860.html abc78b4e920813381a4a1228b34e42ac9 (const QDBusArgument &arg, PropertySpec &val) bool operator== a00860.html af6ff5195f30ff8585eda7e5f0840f5f2 (const PropertyValue &v1, const PropertyValue &v2) QDBusArgument & operator<< a00860.html a2fdae7df634bcfd0f4df4d0ed3080c7f (QDBusArgument &arg, const PropertyValue &val) const QDBusArgument & operator>> a00860.html a1d914b93156ff5cce81056893bd3dba0 (const QDBusArgument &arg, PropertyValue &val) bool operator== a00860.html a82efc4294b579084a1f2c73814b807a1 (const RTCPFeedbackMessage &v1, const RTCPFeedbackMessage &v2) QDBusArgument & operator<< a00860.html acdac30f846a96e72f0102020f286dbfe (QDBusArgument &arg, const RTCPFeedbackMessage &val) const QDBusArgument & operator>> a00860.html a8bcae60f3dc198dcbbbbd4857a32dcd4 (const QDBusArgument &arg, RTCPFeedbackMessage &val) bool operator== a00860.html acf3ee548b68b31509762dfe22ceaac0e (const RTPHeaderExtension &v1, const RTPHeaderExtension &v2) QDBusArgument & operator<< a00860.html a43bcd6a2a9a43edcbb7259b1542f92b0 (QDBusArgument &arg, const RTPHeaderExtension &val) const QDBusArgument & operator>> a00860.html a670b0721a0b007b78b9ec313c34c08b4 (const QDBusArgument &arg, RTPHeaderExtension &val) bool operator== a00860.html a4bfd7957d4edff3db77708af3d5667c2 (const RequestableChannelClass &v1, const RequestableChannelClass &v2) QDBusArgument & operator<< a00860.html a381779506e0c37634a8d60e8ce181c4a (QDBusArgument &arg, const RequestableChannelClass &val) const QDBusArgument & operator>> a00860.html acfceeed7c38920f8e5b0b72b3bae9323 (const QDBusArgument &arg, RequestableChannelClass &val) bool operator== a00860.html af73ca0a6b0ff9af833608eb76dfb602e (const RichPresenceAccessControl &v1, const RichPresenceAccessControl &v2) QDBusArgument & operator<< a00860.html a5a565014375bca89ae51ca888cb06558 (QDBusArgument &arg, const RichPresenceAccessControl &val) const QDBusArgument & operator>> a00860.html a4da4e4584062f1cda69d9221d2fae74b (const QDBusArgument &arg, RichPresenceAccessControl &val) bool operator== a00860.html a750fbca8f312b9f28c9d01b444950142 (const RoomInfo &v1, const RoomInfo &v2) QDBusArgument & operator<< a00860.html aac8b4dda70795a3240a3f8fc1db39e91 (QDBusArgument &arg, const RoomInfo &val) const QDBusArgument & operator>> a00860.html ad332899bddba681887cc63aec3ccbd91 (const QDBusArgument &arg, RoomInfo &val) bool operator== a00860.html a029d84bd9cc671bad9e6e1a8258b75a4 (const ServicePoint &v1, const ServicePoint &v2) QDBusArgument & operator<< a00860.html a9bb6f7752d559b6d2e27655aceb665a7 (QDBusArgument &arg, const ServicePoint &val) const QDBusArgument & operator>> a00860.html a3463b2b6468606cc968413f824252e2c (const QDBusArgument &arg, ServicePoint &val) bool operator== a00860.html acb946490860241677e131841b4e1f069 (const SimplePresence &v1, const SimplePresence &v2) QDBusArgument & operator<< a00860.html ad288176ee8b4cc97931e813efdb70d6c (QDBusArgument &arg, const SimplePresence &val) const QDBusArgument & operator>> a00860.html aba2c9a7c07ee5c84cb5d35afca261e45 (const QDBusArgument &arg, SimplePresence &val) bool operator== a00860.html a5d991ec56483a795ab71314b160dfc84 (const SimpleStatusSpec &v1, const SimpleStatusSpec &v2) QDBusArgument & operator<< a00860.html a7b8dea03d7a8aea6dc5404a03e31512c (QDBusArgument &arg, const SimpleStatusSpec &val) const QDBusArgument & operator>> a00860.html a5c6b2d1468356e9fb8e743e0382dd32a (const QDBusArgument &arg, SimpleStatusSpec &val) bool operator== a00860.html a64433ce6d6b8018046709d292f1d7174 (const SocketAddressIP &v1, const SocketAddressIP &v2) QDBusArgument & operator<< a00860.html a8e0b090f6bfc1a3c0b5764664c25fb04 (QDBusArgument &arg, const SocketAddressIP &val) const QDBusArgument & operator>> a00860.html a3a8d887b8f6833c07d0e5a244e28207c (const QDBusArgument &arg, SocketAddressIP &val) bool operator== a00860.html a7bdfc31f1bd975273df3651b2a0ce2fc (const SocketAddressIPv4 &v1, const SocketAddressIPv4 &v2) QDBusArgument & operator<< a00860.html a2eefd9f666ac723a42f476665b434c8e (QDBusArgument &arg, const SocketAddressIPv4 &val) const QDBusArgument & operator>> a00860.html abfbc7f58defd0ee7393dc81525eb1eee (const QDBusArgument &arg, SocketAddressIPv4 &val) bool operator== a00860.html a785f9cb7a856c6e7fd8db739dc68642c (const SocketAddressIPv6 &v1, const SocketAddressIPv6 &v2) QDBusArgument & operator<< a00860.html a1cef3c91dc070c0855664a64cb8de1a2 (QDBusArgument &arg, const SocketAddressIPv6 &val) const QDBusArgument & operator>> a00860.html ab0ce11be3b452a9a7c5b45fef79c230c (const QDBusArgument &arg, SocketAddressIPv6 &val) bool operator== a00860.html a9e32cd02f09eef07fef02e00e3ad290b (const SocketNetmaskIPv4 &v1, const SocketNetmaskIPv4 &v2) QDBusArgument & operator<< a00860.html a1009a077f12f829c950215486f4fbb51 (QDBusArgument &arg, const SocketNetmaskIPv4 &val) const QDBusArgument & operator>> a00860.html a5337d4419ef5edf73a166ca1c570623e (const QDBusArgument &arg, SocketNetmaskIPv4 &val) bool operator== a00860.html a6db4bea6c36d7c9abb31da9a9dd1b13f (const SocketNetmaskIPv6 &v1, const SocketNetmaskIPv6 &v2) QDBusArgument & operator<< a00860.html a088c36733d53b81a6ea13f932d63fde4 (QDBusArgument &arg, const SocketNetmaskIPv6 &val) const QDBusArgument & operator>> a00860.html a4896031595ee0d39e0d5790ebf260f20 (const QDBusArgument &arg, SocketNetmaskIPv6 &val) bool operator== a00860.html a61a9e3472f0f34ec7267770c4296735f (const StreamCredentials &v1, const StreamCredentials &v2) QDBusArgument & operator<< a00860.html a62fa9eec66664150e199ebf05a28910d (QDBusArgument &arg, const StreamCredentials &val) const QDBusArgument & operator>> a00860.html a4298eeacd77ccab4b3823cb017a5048a (const QDBusArgument &arg, StreamCredentials &val) bool operator== a00860.html a96bfdb9d92ee3e0ac0604a9ac842b571 (const TLSCertificateRejection &v1, const TLSCertificateRejection &v2) QDBusArgument & operator<< a00860.html a89a356ed95f089e4e0928b7aec9b0bc1 (QDBusArgument &arg, const TLSCertificateRejection &val) const QDBusArgument & operator>> a00860.html a3b5637f997fb3357463786d349f79d31 (const QDBusArgument &arg, TLSCertificateRejection &val) bool operator== a00860.html ae0bc0e2201d212ad64089e35acc189cc (const TubeInfo &v1, const TubeInfo &v2) QDBusArgument & operator<< a00860.html a403c39f69fa5efcfd7762a38964bb1aa (QDBusArgument &arg, const TubeInfo &val) const QDBusArgument & operator>> a00860.html a8fa9b2dbbf4cb0f4896c9684bc8a9246 (const QDBusArgument &arg, TubeInfo &val) bool operator== a00860.html aa39cf2fa8e5e92edf3563b97e2f03c7c (const VideoResolution &v1, const VideoResolution &v2) QDBusArgument & operator<< a00860.html a6af509edc37bd14f77a7344640e59e75 (QDBusArgument &arg, const VideoResolution &val) const QDBusArgument & operator>> a00860.html ab4bd5703894de1276271c975f935a2e3 (const QDBusArgument &arg, VideoResolution &val) bool operator== a00860.html a6892bf024b6fca6356b55ec539f071bb (const CandidatePair &v1, const CandidatePair &v2) QDBusArgument & operator<< a00860.html ad0918fadae7ceb12a474d8fc5ea08081 (QDBusArgument &arg, const CandidatePair &val) const QDBusArgument & operator>> a00860.html a494bb434dca07743fc074b73e1e8298d (const QDBusArgument &arg, CandidatePair &val) bool operator== a00860.html adf7ca90647d65b95bbac6ec7eb022594 (const Codec &v1, const Codec &v2) QDBusArgument & operator<< a00860.html aa44522fae9d1052c33f1c4f4881099c5 (QDBusArgument &arg, const Codec &val) const QDBusArgument & operator>> a00860.html acc568aac5b1acd52580eb401d811a048 (const QDBusArgument &arg, Codec &val) bool operator== a00860.html a62cbb88a42ebd00abbf2a914e909fac2 (const HandlerCapabilities &v1, const HandlerCapabilities &v2) QDBusArgument & operator<< a00860.html a80c3e9cdd97140919e53d3f1fe482021 (QDBusArgument &arg, const HandlerCapabilities &val) const QDBusArgument & operator>> a00860.html ad548d3e484773439dfa5a4cb065bc292 (const QDBusArgument &arg, HandlerCapabilities &val) bool operator== a00860.html a7d7e8b0cfbd58a39026984173734c15a (const LastActivityAndStatuses &v1, const LastActivityAndStatuses &v2) QDBusArgument & operator<< a00860.html a522918ad66ac11136ead0a8e5e16d79a (QDBusArgument &arg, const LastActivityAndStatuses &val) const QDBusArgument & operator>> a00860.html a23bd3e53f8d57272a0258207d16701a1 (const QDBusArgument &arg, LastActivityAndStatuses &val) bool operator== a00860.html a759ad22bc62b06ad9e9adb6e84662e73 (const MailURL &v1, const MailURL &v2) QDBusArgument & operator<< a00860.html aa5341bd14e0654e5dbe77d247c17ba57 (QDBusArgument &arg, const MailURL &val) const QDBusArgument & operator>> a00860.html a327d3caf14e51fb86016c9725ce631e8 (const QDBusArgument &arg, MailURL &val) bool operator== a00860.html a7935e02f6dfdb16fab3303591644387e (const MediaStreamHandlerCandidate &v1, const MediaStreamHandlerCandidate &v2) QDBusArgument & operator<< a00860.html ac426b969de141533836b99cb9577b207 (QDBusArgument &arg, const MediaStreamHandlerCandidate &val) const QDBusArgument & operator>> a00860.html af1acc975f7f75c6a65c076eba66840b3 (const QDBusArgument &arg, MediaStreamHandlerCandidate &val) bool operator== a00860.html a782a8127564fa3b2db7fa76592307aa4 (const MediaStreamHandlerCodec &v1, const MediaStreamHandlerCodec &v2) QDBusArgument & operator<< a00860.html a7170b03224992d88f9960f100888090a (QDBusArgument &arg, const MediaStreamHandlerCodec &val) const QDBusArgument & operator>> a00860.html a413680d9501b8723f2ef73b75f6883f7 (const QDBusArgument &arg, MediaStreamHandlerCodec &val) bool operator== a00860.html abdb9e1691eb63d89bf68c3d0d9d2bfa8 (const RTCPFeedbackMessageProperties &v1, const RTCPFeedbackMessageProperties &v2) QDBusArgument & operator<< a00860.html a663946085b4fd82cda6a61372fad7289 (QDBusArgument &arg, const RTCPFeedbackMessageProperties &val) const QDBusArgument & operator>> a00860.html af08884757180771d5f391b85bc9b12f7 (const QDBusArgument &arg, RTCPFeedbackMessageProperties &val) bool operator== a00860.html a39f66d5b64a7a25d020ca514cb56a545 (const ServicePointInfo &v1, const ServicePointInfo &v2) QDBusArgument & operator<< a00860.html ac6b804b9185c8abfc87c9330cca861f5 (QDBusArgument &arg, const ServicePointInfo &val) const QDBusArgument & operator>> a00860.html acb0df5d1605ff041b84511b3738a7f0e (const QDBusArgument &arg, ServicePointInfo &val) bool operator== a00860.html a5bc251c11db5b0fb9ffd831eff9610ca (const StatusSpec &v1, const StatusSpec &v2) QDBusArgument & operator<< a00860.html a2abb573eaf4b4864725c5c039737e407 (QDBusArgument &arg, const StatusSpec &val) const QDBusArgument & operator>> a00860.html ad1630d74c79b92a92aaa05f8270e67db (const QDBusArgument &arg, StatusSpec &val) void _registerTypes a00860.html aba27cd30a29bf61a83836e8d206668fb () bool operator!= a00860.html a5e547b15fdf04ff0e5e479b94c012753 (const AccessControl &v1, const AccessControl &v2) bool operator!= a00860.html a27f858523fe19e5db7b54c2ff908fa47 (const AliasPair &v1, const AliasPair &v2) bool operator!= a00860.html ad48745d840af02a921cd2ffe359671d0 (const Avatar &v1, const Avatar &v2) bool operator!= a00860.html a2c12dcb77c5a6c7d195dac0c1537bc26 (const CallStateReason &v1, const CallStateReason &v2) bool operator!= a00860.html a21ea5b49e0c936620189cda01ef5a494 (const Candidate &v1, const Candidate &v2) bool operator!= a00860.html a992d1d2d926012f226d47590db5115c4 (const CapabilityChange &v1, const CapabilityChange &v2) bool operator!= a00860.html af73dce1737ee89e73d337591870f04f5 (const CapabilityPair &v1, const CapabilityPair &v2) bool operator!= a00860.html a137b5f1c553873d8a4d215aa40010f92 (const CaptchaInfo &v1, const CaptchaInfo &v2) bool operator!= a00860.html acddcdf0528ec53e1cae1dc2313badc5b (const ChannelDetails &v1, const ChannelDetails &v2) bool operator!= a00860.html a9e3df31c2709b74702fef9be2dcc7d17 (const ChannelInfo &v1, const ChannelInfo &v2) bool operator!= a00860.html ac34129c9dbf1fb8beb3febdc54a33b5e (const ContactCapability &v1, const ContactCapability &v2) bool operator!= a00860.html a3c1034e4fc544a04ba20f775349cfcc4 (const ContactInfoField &v1, const ContactInfoField &v2) bool operator!= a00860.html a9217114f1d6a8f0385ff2e400a11def6 (const ContactSubscriptions &v1, const ContactSubscriptions &v2) bool operator!= a00860.html ac22df834bdae30914d27a2330e70cf76 (const CurrencyAmount &v1, const CurrencyAmount &v2) bool operator!= a00860.html ac3cec2950ad44ad5fb93e884db482b13 (const DBusTubeMember &v1, const DBusTubeMember &v2) bool operator!= a00860.html a41b3a35ead1c09ac50f95f237e08d6a3 (const DebugMessage &v1, const DebugMessage &v2) bool operator!= a00860.html a89f2797d0b0682b1564d8cc8f28fa5e0 (const FieldSpec &v1, const FieldSpec &v2) bool operator!= a00860.html a032426276fa9c0bfe63dc94adaa5f515 (const HTTPPostData &v1, const HTTPPostData &v2) bool operator!= a00860.html ac3e284a317e0a4860976a6ac2d347218 (const LocalPendingInfo &v1, const LocalPendingInfo &v2) bool operator!= a00860.html af9b45de2f21a65b9383fc2bf2d1db75f (const MailAddress &v1, const MailAddress &v2) bool operator!= a00860.html a629c0a45567b1e0f21748f9a6b3d24d3 (const MediaDescriptionOffer &v1, const MediaDescriptionOffer &v2) bool operator!= a00860.html a745275afb3289b7422d8a4ba2d8bc95a (const MediaSessionHandlerInfo &v1, const MediaSessionHandlerInfo &v2) bool operator!= a00860.html a8cebd766e135dffa4bca474f57bb8a94 (const MediaStreamHandlerTransport &v1, const MediaStreamHandlerTransport &v2) bool operator!= a00860.html aab7b2a485efa96f50323781bdf6b7c9c (const MediaStreamInfo &v1, const MediaStreamInfo &v2) bool operator!= a00860.html a103f5568676be406491238fe3dd32432 (const NotDelegatedError &v1, const NotDelegatedError &v2) bool operator!= a00860.html a7402e5f40a17a309258a3c40e3e888b4 (const ParamSpec &v1, const ParamSpec &v2) bool operator!= a00860.html ac42a83f8cba45daf574b1c9920ff7b46 (const PendingTextMessage &v1, const PendingTextMessage &v2) bool operator!= a00860.html ab2dc17a2b5998d8fa3267080b3bbcea7 (const PropertyFlagsChange &v1, const PropertyFlagsChange &v2) bool operator!= a00860.html a563fde5229a655a974a9c1f556cd394e (const PropertySpec &v1, const PropertySpec &v2) bool operator!= a00860.html ac5c6dec9e45d53ee76a401d0d4a09e22 (const PropertyValue &v1, const PropertyValue &v2) bool operator!= a00860.html a45cd05a6310f49ccf5176e6da74c3a18 (const RTCPFeedbackMessage &v1, const RTCPFeedbackMessage &v2) bool operator!= a00860.html a48ccd457d40ea5df474382447c680bbd (const RTPHeaderExtension &v1, const RTPHeaderExtension &v2) bool operator!= a00860.html ad51c3d9ca14991d4c032de94eef1428b (const RequestableChannelClass &v1, const RequestableChannelClass &v2) bool operator!= a00860.html ac8dd3066029ecb2539e9f95d52f32e2a (const RichPresenceAccessControl &v1, const RichPresenceAccessControl &v2) bool operator!= a00860.html ac464a5316f0cd71651085fb99831ec70 (const RoomInfo &v1, const RoomInfo &v2) bool operator!= a00860.html ab5559ff7f72720e0877ae80b0eb22f4f (const ServicePoint &v1, const ServicePoint &v2) bool operator!= a00860.html a6936d9db44af616328ce22ddad8ee4e8 (const SimplePresence &v1, const SimplePresence &v2) bool operator!= a00860.html a36296961c2283ee6479ac354290b5377 (const SimpleStatusSpec &v1, const SimpleStatusSpec &v2) bool operator!= a00860.html a5ee6445414d074d61692ec0f07323336 (const SocketAddressIP &v1, const SocketAddressIP &v2) bool operator!= a00860.html aa27697d559728f110159c5df8d2420d6 (const SocketAddressIPv4 &v1, const SocketAddressIPv4 &v2) bool operator!= a00860.html ae83a550cbb0a68d291776c272ca3034c (const SocketAddressIPv6 &v1, const SocketAddressIPv6 &v2) bool operator!= a00860.html ab89c26d34ef9526a670695178e44ca8c (const SocketNetmaskIPv4 &v1, const SocketNetmaskIPv4 &v2) bool operator!= a00860.html a1aed9c3a6053af52b4932e541deac995 (const SocketNetmaskIPv6 &v1, const SocketNetmaskIPv6 &v2) bool operator!= a00860.html a534fc54ec941f4b1572f1506234da999 (const StreamCredentials &v1, const StreamCredentials &v2) bool operator!= a00860.html ae5a2612bc83289d689a50d3f7c657102 (const TLSCertificateRejection &v1, const TLSCertificateRejection &v2) bool operator!= a00860.html a2e48fc6503ccb1279161def8f03566c4 (const TubeInfo &v1, const TubeInfo &v2) bool operator!= a00860.html a8df800d22f5ea17f24d8f759d76c9d79 (const VideoResolution &v1, const VideoResolution &v2) bool operator!= a00860.html a03e2cdafe039981a66df1f3e8d71b764 (const CandidatePair &v1, const CandidatePair &v2) bool operator!= a00860.html a2ae8c09572f0778bc2979e152bbb546b (const Codec &v1, const Codec &v2) bool operator!= a00860.html a83329343f59ac2b0e91bd75584df5755 (const HandlerCapabilities &v1, const HandlerCapabilities &v2) bool operator!= a00860.html ad408479b7230049679239e5709a22821 (const LastActivityAndStatuses &v1, const LastActivityAndStatuses &v2) bool operator!= a00860.html ae4eb868efc18a7c62b4002f018920641 (const MailURL &v1, const MailURL &v2) bool operator!= a00860.html a9154c2e195561404f82c1e8046b327d7 (const MediaStreamHandlerCandidate &v1, const MediaStreamHandlerCandidate &v2) bool operator!= a00860.html a99b99ed8fe2dc66b7a7bc5c715915608 (const MediaStreamHandlerCodec &v1, const MediaStreamHandlerCodec &v2) bool operator!= a00860.html a585088155eedca764a7d7ee42fa6efdc (const RTCPFeedbackMessageProperties &v1, const RTCPFeedbackMessageProperties &v2) bool operator!= a00860.html a14bd1ff740159f8df74ddfd37311d19c (const ServicePointInfo &v1, const ServicePointInfo &v2) bool operator!= a00860.html affa1836c03ce6122bbc0b2453fe4c317 (const StatusSpec &v1, const StatusSpec &v2) const int NUM_HANDLE_TYPES a00894.html ga23b2937d54313f18fddc50e51049224e const int NUM_CONNECTION_STATUSES a00894.html ga51c527949738caf38c485424584857d5 const int NUM_CONNECTION_STATUS_REASONS a00894.html ga7c63da3bd56c6f3a9314cfd7d466ae77 const int NUM_CONTACT_LIST_STATES a00894.html gafef1b806b948eef363dedfd3c8550935 const int NUM_SUBSCRIPTION_STATES a00894.html ga1066026edb2c924dd29e932bf0919a46 const int NUM_CONTACT_METADATA_STORAGE_TYPES a00894.html gae6e621542ef62c295ebad595c025604a const int NUM_HTTP_METHODS a00894.html ga727991cbea866a0000d18fd648859bc4 const int NUM_SERVICE_POINT_TYPES a00894.html ga2c408002f5c6691e190129a5c4dd55b3 const int NUM_CONNECTION_PRESENCE_TYPES a00894.html gac34c7572bf4aaecc2eb197659acd6ec4 const int NUM_ACCESS_CONTROL_TYPES a00894.html gaaddadcf3a2c5f356f79d7cf64bcb882d const int NUM_RICH_PRESENCE_ACCESS_CONTROL_TYPES a00894.html ga9bf83e6421ec8ce49937b1e95dcc77f7 const int NUM_CALL_STATES a00894.html ga849bd71910b6fde122a6828a9e8f4b49 const int NUM_CALL_STATE_CHANGE_REASONS a00894.html ga6fef28e82103edf666921355cb8f9c6b const int NUM_CHANNEL_CONTACT_SEARCH_STATES a00894.html ga5db8cc76bbcb2bc5ff6107f8c4d6453d const int NUM_FILE_TRANSFER_STATES a00894.html gafb681ac850e01abad10e3b484b0cc49b const int NUM_FILE_TRANSFER_STATE_CHANGE_REASONS a00894.html ga12e304098543152629637e49b916cd7e const int NUM_FILE_HASH_TYPES a00894.html ga91b5a335352c614e3e8d7956b7d151eb const int NUM_MEDIA_STREAM_TYPES a00894.html ga020e591698bc4bb04e35e4f98bf8c4f3 const int NUM_MEDIA_STREAM_STATES a00894.html ga53ef05a24413185540bbabac7fb29a3d const int NUM_MEDIA_STREAM_DIRECTIONS a00894.html ga92b5a97b69111f5119fd280848b1620e const int NUM_CHANNEL_TEXT_SEND_ERRORS a00894.html ga5df5b92c1722194593fc4069b1fd64f5 const int NUM_CHANNEL_TEXT_MESSAGE_TYPES a00894.html gaa3b94c8371162c898b7dc14728b02d3d const int NUM_TUBE_TYPES a00894.html ga04cae570f6300564d66ab85bb27ff393 const int NUM_TUBE_STATES a00894.html ga570400a3501480a78ada6d73d014c961 const int NUM_CAPTCHA_CANCEL_REASONS a00894.html ga76b89d0bf3094770baacd799465ee799 const int NUM_CAPTCHA_STATUSES a00894.html ga2266c7cf2ca710a664856fa617110e56 const int NUM_CHANNEL_CHAT_STATES a00894.html ga67f78e8d718687643b8a0916c8542208 const int NUM_DTMF_EVENTS a00894.html gaf57308ae5e0b480074d78a82194c05ce const int NUM_CHANNEL_GROUP_CHANGE_REASONS a00894.html ga392978c063029d424528a211471fd2a7 const int NUM_LOCAL_HOLD_STATES a00894.html gaa14f82b50ba815d15d1b132996a3779d const int NUM_LOCAL_HOLD_STATE_REASONS a00894.html ga76b407b65cc8c85810b124a5fb276345 const int NUM_DELIVERY_STATUSES a00894.html gacb7da01546b06ac67f5f3590c51c0db6 const int NUM_SASL_ABORT_REASONS a00894.html ga698fb6ee1474ba869f85b16bd2b0d366 const int NUM_SASL_STATUSES a00894.html gad05aae22ce147fc1c4ccb3713e524238 const int NUM_TUBE_CHANNEL_STATES a00894.html ga6a3a2b74a0cdd175165e9feb92a8e6d7 const int NUM_SOCKET_ADDRESS_TYPES a00894.html ga6b1c5504e1e1efd5351a37388aa4bdd5 const int NUM_SOCKET_ACCESS_CONTROLS a00894.html ga06b3062a1e6701d0e4f3b0a0c3334e80 const int NUM_MEDIA_STREAM_ERRORS a00894.html gadf99f8a1e60cfffdd5a02f7dceaf48bd const int NUM_MEDIA_STREAM_BASE_PROTOS a00894.html gac164eea6c21c2cd8a0f2b31aeb1f57a1 const int NUM_MEDIA_STREAM_TRANSPORT_TYPES a00894.html ga869d382e013d33a2f0d76390ec45dedc const int NUM_DEBUG_LEVELS a00894.html gaf443bff5b0eb066745920d8c81b3f47f const int NUM_TLS_CERTIFICATE_STATES a00894.html gaeb4f950a81daa039aeb673febe49fc5c const int NUM_TLS_CERTIFICATE_REJECT_REASONS a00894.html ga0f0ab633e7949e149a875dbf3a3f05e9 const int NUM_CALL_CONTENT_PACKETIZATION_TYPES a00894.html ga0603b7176d2161e8c6ac95e303952316 const int NUM_CALL_CONTENT_DISPOSITIONS a00894.html gacfe40cd91311309638b976aaa4e80b14 const int NUM_RCPT_XR_RTT_MODES a00894.html ga4c403e5aaa3b715de8710fd90a75d20f const int NUM_STREAM_FLOW_STATES a00894.html ga3795022133869c36d554a7874cd2c509 const int NUM_CALL_STREAM_CANDIDATE_TYPES a00894.html ga1b9cd2e8467258595f6dac7928eaf088 const int NUM_STREAM_COMPONENTS a00894.html gadb2306434f320cdd80edb9d573c76812 const int NUM_STREAM_TRANSPORT_TYPES a00894.html ga3eb19089259af918c9df32ab4648be98 const int NUM_SENDING_STATES a00894.html gafd9a5c0d96a7c1bc589a753452967a99 const int NUM_STREAM_ENDPOINT_STATES a00894.html ga453416f5d42ca929eb395db54bc923fb const int NUM_LOCAL_MUTE_STATES a00894.html gab19d9073477a6c48d5b73fee0809e7d6 Tp::AbstractAdaptor a00060.html AbstractAdaptor a00060.html accab0d3dd39eea60bd17f73a6d084aa4 (const QDBusConnection &connection, QObject *adaptee, QObject *parent) ~AbstractAdaptor a00060.html a024a0530d62e6db9ba9ffb46550dae79 () QDBusConnection dbusConnection a00060.html ac8679e99e7b798d416ee1cf04d4a3de1 () const QObject * adaptee a00060.html a97d2bff3efdb7c760c052ca9960ceaa8 () const Tp::AbstractClient a00063.html Tp::RefCounted AbstractClient a00063.html a77bd0d3b24cc5d3d704a39036b4a320e () virtual ~AbstractClient a00063.html a8543a346d1b624c3d7b8fe115db8925d () bool isRegistered a00063.html af463e681ec011ab1ed5bac9038016260 () const RefCounted a00489.html ace03ea74806fd9a180b8863ae23c838c () virtual ~RefCounted a00489.html a56b3618d2e02f6999c77da00d4e1bfd4 () Tp::AbstractClientObserver a00066.html Tp::AbstractClient Tp::AbstractClientObserver::ObserverInfo virtual ~AbstractClientObserver a00066.html af2a98c9910fd0c3c5777ace96389797c () ChannelClassSpecList observerFilter a00066.html a0785ea6763d1e9474451f2f4dbc121a5 () const bool shouldRecover a00066.html a872a0ff1f6048b76ff71eac4395ecc15 () const virtual void observeChannels a00066.html a8b364b89efd118eb53410e162cd49001 (const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList< ChannelRequestPtr > &requestsSatisfied, const ObserverInfo &observerInfo)=0 AbstractClientObserver a00066.html a6d64a054dfca03d5329d90d68ff37377 (const ChannelClassSpecList &channelFilter, bool shouldRecover=false) observer_usage_sec observer_create_sec observer_register_sec Tp::AbstractClientObserver::ObserverInfo a00418.html ObserverInfo a00418.html a2650d9dddd69c40497ab1222cb8da9ff (const QVariantMap &info=QVariantMap()) ObserverInfo a00418.html adc47535a2a01d45f64cae33142da7d41 (const ObserverInfo &other) ~ObserverInfo a00418.html a3d20b63489b6a8248a240fc0e58f174b () ObserverInfo & operator= a00418.html ad14eb82b71a8c6de5faeada5e32a65b2 (const ObserverInfo &other) bool isRecovering a00418.html a8ff5b00956a5388e9ad286b306c4d7fa () const QVariantMap allInfo a00418.html a5c8b02ef312b977ab254df2f48ddda4a () const Tp::AbstractClientApprover a00064.html Tp::AbstractClient virtual ~AbstractClientApprover a00064.html a3dd0e62afefa42da582f2b263576b822 () ChannelClassSpecList approverFilter a00064.html a14a4daed739a919fa2eeb64be26d3f5e () const virtual void addDispatchOperation a00064.html aa50cc72153c6601df2ba1aad73831f87 (const MethodInvocationContextPtr<> &context, const ChannelDispatchOperationPtr &dispatchOperation)=0 AbstractClientApprover a00064.html a96ee6a9c0ef99f78f944b02c4a9e4be1 (const ChannelClassSpecList &channelFilter) approver_usage_sec approver_create_sec approver_register_sec Tp::AbstractClientHandler a00065.html Tp::AbstractClient Tp::AbstractClientHandler::Capabilities Tp::AbstractClientHandler::HandlerInfo virtual ~AbstractClientHandler a00065.html aecbb5e17a9494e9e25b95447b92664ad () ChannelClassSpecList handlerFilter a00065.html ae8164789b2f1c73c3d9eb9c768ee2d2d () const Capabilities handlerCapabilities a00065.html a66a39770b504442eace51e2d100e0882 () const virtual bool bypassApproval a00065.html abe174258a56c37021f52aacbc83bedbf () const =0 virtual void handleChannels a00065.html abc44780bc349b383e6be81582de1866c (const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const QList< ChannelRequestPtr > &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo)=0 bool wantsRequestNotification a00065.html ad2068126fa3fe0aae0c9247d98fb1ed7 () const virtual void addRequest a00065.html af5e487d62397b34cd5285d7492f50c57 (const ChannelRequestPtr &request) virtual void removeRequest a00065.html a4712b474e5669b309a67fd4ab1f702c5 (const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage) AbstractClientHandler a00065.html aaddc269dd6bd2ac7b3c1594189cf52b7 (const ChannelClassSpecList &channelFilter, const Capabilities &capabilities=Capabilities(), bool wantsRequestNotification=false) handler_usage_sec handler_create_sec handler_register_sec Tp::AbstractClientHandler::Capabilities a00163.html Capabilities a00163.html a7767581c7db12627b501c4e39a721467 (const QStringList &tokens=QStringList()) Capabilities a00163.html ac29183e65ccd2c79fe19e0fa61d3a4be (const Capabilities &other) ~Capabilities a00163.html ac0e04003800a4a322d96efcc55d623a0 () Capabilities & operator= a00163.html ae91f07c82f94ea378b9451914a58d563 (const Capabilities &other) bool hasGTalkP2PNATTraversalToken a00163.html aee32e23ea17ba54af4a3179fb35fa300 () const void setGTalkP2PNATTraversalToken a00163.html a74c1067e79a6a26d358ef394757e6148 () void unsetGTalkP2PNATTraversalToken a00163.html ae4dabea59bed35149656993818e3cfb4 () bool hasICEUDPNATTraversalToken a00163.html ae1b5ba70431d7173ef3a26d88bc9cf18 () const void setICEUDPNATTraversalToken a00163.html af1ae78b9e598cfee01cb7c23f3d25e57 () void unsetICEUDPNATTraversalToken a00163.html a8802511c8e0b831a0237ac35c21882f2 () bool hasWLM85NATTraversalToken a00163.html a97f143036495be415c8ed444516438e7 () const void setWLM85NATTraversalToken a00163.html a0374955d412edd3ad9482e5dd97ccbbc () void unsetWLM85NATTraversalToken a00163.html a79ecd955679b4ee35dad28a54fe15f5d () bool hasWLM2009NATTraversalToken a00163.html a45f7829d86e23d8f78b9738c498eda71 () const void setWLM2009NATTraversalToken a00163.html ac5ee21a35bb3cf45535afe13600fa25d () void unsetWLM2009NATTraversalToken a00163.html ae4fd19e35bbfbe0655fa388e30fd94b3 () bool hasAudioCodecToken a00163.html aa35250025f02bc1a70fc40f3fcd1e4ea (const QString &mimeSubType) const void setAudioCodecToken a00163.html ade6ae2301e4b046a4d9e680b31d25200 (const QString &mimeSubType) void unsetAudioCodecToken a00163.html a15e13330abb07055bb2a284b1f00be03 (const QString &mimeSubType) bool hasVideoCodecToken a00163.html a473e7c2038e0a44d0129498c1e5a96bd (const QString &mimeSubType) const void setVideoCodecToken a00163.html aad41ad40d7cce022be33fbe69dd2859b (const QString &mimeSubType) void unsetVideoCodecToken a00163.html a1a085cfb83bdf684d429c75c29e32d5e (const QString &mimeSubType) bool hasToken a00163.html a155a39e7c9d7dba7d4fef0fe8fef17b2 (const QString &token) const void setToken a00163.html acbdce560bb68d50f258638b2f3c14e23 (const QString &token) void unsetToken a00163.html ad5cfa9423061f66077b8d928ce8c958b (const QString &token) QStringList allTokens a00163.html a38833504428503fc0545a54dfd6c72d0 () const Tp::AbstractClientHandler::HandlerInfo a00372.html HandlerInfo a00372.html ad75a6c9a17cb968204103f9b9fc9df7c (const QVariantMap &info=QVariantMap()) HandlerInfo a00372.html ac2e3658f1326f16c46dbec467066854c (const HandlerInfo &other) ~HandlerInfo a00372.html a5ace26cbdcd385ea81a3d337b4d5dda1 () HandlerInfo & operator= a00372.html a88f0b703792886670bcf43fe9c115eba (const HandlerInfo &other) QVariantMap allInfo a00372.html a958edb701997eb1661afde8259ebc593 () const Tp::AbstractInterface a00070.html void propertiesChanged a00070.html a1c7549c77596f07f241e361c5124119d (const QVariantMap &changedProperties, const QStringList &invalidatedProperties) virtual ~AbstractInterface a00070.html ad82f1079204bca0dcfd1f6eeda3b0bcf () bool isValid a00070.html a6ffad807cd688510af39c9ddd808d5b5 () const QString invalidationReason a00070.html a8bf99ab34d551325914c08500acadc94 () const QString invalidationMessage a00070.html a96caf6bfea37a71d4849b4470728ceb4 () const void setMonitorProperties a00070.html a6b4af7363d43822a32fdd3fa56108424 (bool monitorProperties) bool isMonitoringProperties a00070.html a3714c9535fdd183a175c1b1e668f4ec7 () const virtual void invalidate a00070.html a79dde56ba44455f47c7c354ada07467a (Tp::DBusProxy *proxy, const QString &error, const QString &message) AbstractInterface a00070.html ae73665dbe1abf1c50a8ab98221274dbe (DBusProxy *proxy, const QLatin1String &interface) AbstractInterface a00070.html a454ff620101be4299892b3e47fead4d2 (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent) PendingVariant * internalRequestProperty a00070.html ad97c6346a1c2bbfd893943d60da27b89 (const QString &name) const PendingOperation * internalSetProperty a00070.html a735ab438b3675c6938cd534722c47b4e (const QString &name, const QVariant &newValue) PendingVariantMap * internalRequestAllProperties a00070.html a0fe684d0ef843a3e36f2ecee24defed6 () const Tp::AccountFactory a00075.html Tp::FixedFeatureFactory virtual ~AccountFactory a00075.html a71d9fc0d170c56ff711f85b736c76ec1 () PendingReady * proxy a00075.html a7ede7dec04ba26b835933b6b3e2f2882 (const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const virtual ~FixedFeatureFactory a00356.html a18870c3171032e3a27453bb010e86720 () Features features a00356.html ac02fe1d220587b4f4efc236c9e773332 () const void addFeature a00356.html ad21d770b0be00c0df531814e84fa2462 (const Feature &feature) void addFeatures a00356.html ad51b92980595eb5cacac6f3b93f6b5f7 (const Features &features) virtual ~DBusProxyFactory a00340.html accd7803cbbf50cc15fcef36839d5f961 () const QDBusConnection & dbusConnection a00340.html aaabfff2d1bfc81081fc6724a58b55ea3 () const static AccountFactoryPtr create a00075.html af67ebd126a8dedb3d8fee93b919b596f (const QDBusConnection &bus, const Features &features=Features()) AccountFactory a00075.html afcc221dbbc44fb3253c244e7a36d454f (const QDBusConnection &bus, const Features &features) virtual AccountPtr construct a00075.html aef69b0aa907ad4f44a5de8ecc5c110c4 (const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const virtual QString finalBusNameFrom a00075.html a43cc0732393ff41ee2f5408de729ae49 (const QString &uniqueOrWellKnown) const FixedFeatureFactory a00356.html a2feccddc408df42bd2bd0765eb68f889 (const QDBusConnection &bus) virtual Features featuresFor a00356.html a4c8effdc343a04cc7675cd4f740fbfae (const DBusProxyPtr &proxy) const DBusProxyFactory a00340.html aa57a60837c3c748c5f33e9e92580d3ca (const QDBusConnection &bus) DBusProxyPtr cachedProxy a00340.html a85284989eb0a7a8531234cb21ccd51d3 (const QString &busName, const QString &objectPath) const PendingReady * nowHaveProxy a00340.html ac4e7283969f7903ede45161b04a4aa37 (const DBusProxyPtr &proxy) const virtual PendingOperation * initialPrepare a00340.html a58b75844d411274a3a1c3dfdc6b8606f (const DBusProxyPtr &proxy) const virtual PendingOperation * readyPrepare a00340.html ab12a7b1e605f6ca8b99527e721e2d848 (const DBusProxyPtr &proxy) const Tp::AccountManager a00080.html Tp::StatelessDBusProxy OptionalInterfaceFactory< AccountManager > void newAccount a00080.html aef650cc35bea6a034b0dd15214e5e5ac (const Tp::AccountPtr &account) void invalidated a00339.html a2ec4e99262674ba916321d11398c6b58 (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage) void propertyChanged a00415.html a83a87f712a0c20755745880983977b7a (const QString &propertyName) virtual ~AccountManager a00080.html ae287073f203f0a8d78f5e6c2892c39f6 () AccountFactoryConstPtr accountFactory a00080.html a16036f8db8985700f39b059c17851d95 () const ConnectionFactoryConstPtr connectionFactory a00080.html af22db6cd9f3a977a893474ae6630e7a8 () const ChannelFactoryConstPtr channelFactory a00080.html afa69a902d00d9d57133b21094ca0f6b9 () const ContactFactoryConstPtr contactFactory a00080.html aa3d85fe57f232fa8350a40bafb01362d () const QList< AccountPtr > allAccounts a00080.html aa943498f3241bd1f7923afa86fdcd6ce () const AccountSetPtr validAccounts a00080.html a9743f5527faa9a532502f3298b6898a4 () const AccountSetPtr invalidAccounts a00080.html a19a91a98b9f6ddebba0dd4779bf8ffdc () const AccountSetPtr enabledAccounts a00080.html aa3955191455d4faeb46403107680bea3 () const AccountSetPtr disabledAccounts a00080.html a8f88078a8fcd1c1365e8c4d66c56c512 () const AccountSetPtr onlineAccounts a00080.html a6d8d358a6c97293fe5c5de86b99ad36a () const AccountSetPtr offlineAccounts a00080.html ac473461f9596c6baec3e81eb47dfc5f4 () const AccountSetPtr textChatAccounts a00080.html a5f466145d6b0795b1cb954fa0654c048 () const AccountSetPtr textChatroomAccounts a00080.html a268a0059391e83577a2c58ac16df0bb8 () const AccountSetPtr audioCallAccounts a00080.html a2c514a20780f21e39c5474f6a93698af () const AccountSetPtr videoCallAccounts a00080.html a3828f2cb5b6b7294901c054b354e1f6a () const AccountSetPtr streamedMediaCallAccounts a00080.html a70a4ae08d477e9470c2ee225bc72bee0 () const AccountSetPtr streamedMediaAudioCallAccounts a00080.html ac8400bd8e1aa0856b53dbbf8d2e9f8e7 () const AccountSetPtr streamedMediaVideoCallAccounts a00080.html a4e3635adcaa2d7497b8161034c9b93ea () const AccountSetPtr streamedMediaVideoCallWithAudioAccounts a00080.html a540cc48a6bea814a6623b3703343c462 () const AccountSetPtr fileTransferAccounts a00080.html a69b7abb4c0e69568a2c4a597796d819f () const AccountSetPtr accountsByProtocol a00080.html a7ebe2dbc3f23e3be8ff282db794af7e7 (const QString &protocolName) const AccountSetPtr filterAccounts a00080.html a423907cc361e319d5d9f62779aa324f3 (const AccountFilterConstPtr &filter) const AccountSetPtr filterAccounts a00080.html a208ba628bd31eada3772f7a9157cf372 (const QVariantMap &filter) const AccountPtr accountForObjectPath a00080.html a289248571d94fb7be0f501d52dc15386 (const QString &path) const AccountPtr accountForPath a00080.html abc2dc8dd16b90d401131ef287dd95585 (const QString &path) const QList< AccountPtr > accountsForObjectPaths a00080.html a615b30735c32ae303ff12d5f22e49420 (const QStringList &paths) const QList< AccountPtr > accountsForPaths a00080.html a6fc8f4e48d8fe4ec751bdfb842538b39 (const QStringList &paths) const QStringList supportedAccountProperties a00080.html a40fa241a679442565532e1e52dbbf6cd () const PendingAccount * createAccount a00080.html aa2d5cdc6e92c2a11a1fa07dabfaca95d (const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties=QVariantMap()) StatelessDBusProxy a00522.html a03e67b9c9a1edf4dd10ca3d011558118 (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore) virtual ~StatelessDBusProxy a00522.html abe2674d0119057442a047fa318255603 () DBusProxy a00339.html a377481f5dfa02148922c8b5f500033e0 (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore) virtual ~DBusProxy a00339.html ae9dd49ab6450270eee49c7e608e4699b () QDBusConnection dbusConnection a00339.html a336b08c4b43ff12b92d4e3bd75296a8d () const QString busName a00339.html ac37e3a353d5bdaebf451600959c1af1d () const QString objectPath a00339.html af95b104d2da1bb0c2ec5bc9cae224ecb () const bool isValid a00339.html adb39028a597488f81d5f8bacfe822886 () const QString invalidationReason a00339.html a5485c06ca011151760106abe47e0109f () const QString invalidationMessage a00339.html af3808f1cfe2ddf7187066e65639529db () const virtual ~Object a00415.html a6f7137bb1763779fdb6babc91f2462c3 () ReadyObject a00487.html a2de35741d4bf67914231a2e16b13dc64 (RefCounted *object, const Feature &featureCore) ReadyObject a00487.html a5abc100b28983140d7a543e774262b1f (DBusProxy *proxy, const Feature &featureCore) virtual ~ReadyObject a00487.html a81f5ea8834c094181c0b5fa5e222809d () virtual bool isReady a00487.html a344fc63eaef5278cbf938eaa1ed4c635 (const Features &features=Features()) const virtual PendingReady * becomeReady a00487.html ac02393f99a46725a4ffee32caaec13cc (const Features &requestedFeatures=Features()) virtual Features requestedFeatures a00487.html aa760fb2e39a85324384e337586a76360 () const virtual Features actualFeatures a00487.html a417478987395e7f7914527d44603450b () const virtual Features missingFeatures a00487.html a404a435b24239ae81bcd58c06da18478 () const OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (AccountManager *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static AccountManagerPtr create a00080.html a30ff19bd33c13261dcc5d2eed7c5a87e (const QDBusConnection &bus) static AccountManagerPtr create a00080.html a40290cda2ca69a5ac654a1fdd2475d21 (const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static AccountManagerPtr create a00080.html af50b99a52f73f47527eb6ab0d8cf4d02 (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static const Feature FeatureCore a00080.html ac1779286fbe3671cb7ae713963fa28ac AccountManager a00080.html ae48b47302eae2672b39556f1ab771740 (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature) Client::AccountManagerInterface * baseInterface a00080.html ac611e39ad5432d9804171e2514008b0e () const void setBusName a00339.html a8454cf67e8444988c50ba0d14ac5c2d5 (const QString &busName) void invalidate a00339.html a4cff103158912bc2207e0da18d00b710 (const QString &reason, const QString &message) void invalidate a00339.html a5b3bddf9ffeefd35b8efbf7fb0ba6134 (const QDBusError &error) Object a00415.html acd48c94dd2130fcd4ab80c44e3079b0c () void notify a00415.html ab082554e5af7e3271aa1486f86d74db7 (const char *propertyName) ReadinessHelper * readinessHelper a00487.html a34fdf6035f206e96a34f71d5dd7cb4c9 () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f am_usage_sec am_create_sec am_ready_sec Tp::AccountPropertyFilter a00082.html GenericPropertyFilter< Account > ~AccountPropertyFilter a00082.html a13b9a58680473d5128967b7b1de73718 () bool isValid a00082.html a331faf2fdcde69031c77323e0e172c64 () const virtual ~GenericPropertyFilter a00366.html a5dd35a21eb35072976cc22889d9fc774 () virtual bool matches a00366.html aa7cf2cb7ddaa0a78bb1a89e3dd81a338 (const SharedPtr< Account > &t) const QVariantMap filter a00366.html ad6bbf4bc4e5c3d06ad64663174cc23e7 () const void addProperty a00366.html a6f217b50d0be61932053444753be8995 (const QString &propertyName, const QVariant &propertyValue) void setProperties a00366.html ab8f6ecfbfd3a42d2388b70fb18d30cc3 (const QVariantMap &filter) virtual ~Filter a00355.html abb64b19e1e56d863e8ba653ec4c6552a () virtual bool matches a00355.html a4436adcdc7e8465ec20feef346547c40 (const SharedPtr< T > &t) const static AccountPropertyFilterPtr create a00082.html a747dba6924e1c604f237a5ddfa1e1104 () GenericPropertyFilter a00366.html a652316270232cb34ef0317fd044f84f4 () Filter a00355.html ac8a72371d850de0ff65c3ab68e8101f0 () Tp::AccountSet a00083.html Tp::Object void accountAdded a00083.html ad4c2e67665120452eb2204102cde0c18 (const Tp::AccountPtr &account) void accountRemoved a00083.html ae55a9de1c576d878d5f00ec3bc377d4f (const Tp::AccountPtr &account) AccountSet a00083.html ad3de88c91f8a39fd608ddf35a8a43433 (const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter) AccountSet a00083.html a39228d4f1b66bc857edc3fe7181cd064 (const AccountManagerPtr &accountManager, const QVariantMap &filter) virtual ~AccountSet a00083.html a7fedb11fbb563c34de1bd88afc6fcefe () AccountManagerPtr accountManager a00083.html aa5742d9fd244cc809201ec64830e534e () const AccountFilterConstPtr filter a00083.html ab9c2068a428aa8aadb8634f1fc6a001f () const QList< AccountPtr > accounts a00083.html a0dcbebe855cb46de7f0cbd18cff2da1d () const AccountManagerPtr accountManager a00083.html ab708e529f5e2b1dc168a85670bc47683 AccountFilterConstPtr filter a00083.html a65abb277c8a3be5b5f226b7b733dc7bc QList< AccountPtr > accounts a00083.html a93dffbca19977d08caa5696bfaec5c97 account_set_usage_sec account_set_create_sec Tp::Account a00073.html Tp::StatelessDBusProxy OptionalInterfaceFactory< Account > void removed a00073.html a8c564b522baf49c15018dc6ac48b3db2 () void serviceNameChanged a00073.html a4d28521835b27c47a55884a5c919092b (const QString &serviceName) void profileChanged a00073.html ace42d3a377fee2914566f68f5bccca2b (const Tp::ProfilePtr &profile) void displayNameChanged a00073.html a72c00f778599ca3c68bc97b7d5866fc1 (const QString &displayName) void iconNameChanged a00073.html a5373fba453c6b048857be9cd6b4fc50d (const QString &iconName) void nicknameChanged a00073.html afc0c31d4be4ff7efd21b0a4c5b44245f (const QString &nickname) void normalizedNameChanged a00073.html acdbc322a9b0bca21d857c629b6935c2b (const QString &normalizedName) void validityChanged a00073.html aa05c46077f96177b54a8a1e0f6aac6a5 (bool validity) void stateChanged a00073.html abdca5eae8368ed8601fea1f771859e95 (bool state) void capabilitiesChanged a00073.html a3943466e1bbec7a585939aad14423688 (const Tp::ConnectionCapabilities &capabilities) void connectsAutomaticallyPropertyChanged a00073.html a5c73e27c315e7f1d18eed8cbce727a55 (bool connectsAutomatically) void firstOnline a00073.html aabdb96a16b1d44347ada2f729b62133a () void parametersChanged a00073.html a73240d4c4269e91aafc512d2d0540f4e (const QVariantMap &parameters) void changingPresence a00073.html ab67374d7e791ead3beaddd3c78945e13 (bool value) void automaticPresenceChanged a00073.html afc167ca4b747c7ddc1b47187532bf18d (const Tp::Presence &automaticPresence) void currentPresenceChanged a00073.html af11a68796890bb36bbd861eeb6c728bf (const Tp::Presence &currentPresence) void requestedPresenceChanged a00073.html afe7216187ea9918ce7f05f529646090f (const Tp::Presence &requestedPresence) void onlinenessChanged a00073.html a7cde86e7ddc01a56b64caffbaec7fb2f (bool online) void avatarChanged a00073.html a04f4a8277e0207740bd355f93304de07 (const Tp::Avatar &avatar) void connectionStatusChanged a00073.html a55eeccfe19cc61410c34660682de00dd (Tp::ConnectionStatus status) void connectionChanged a00073.html ae8f51f89fa64a36aa7d85c6f40890c53 (const Tp::ConnectionPtr &connection) virtual ~Account a00073.html a49fa41a550c0fb2039b1945f866faaa8 () ConnectionFactoryConstPtr connectionFactory a00073.html ae2f177b0718c55235336a81e5c2377f0 () const ChannelFactoryConstPtr channelFactory a00073.html acd696bac5636d69b947f78fce9a9d23a () const ContactFactoryConstPtr contactFactory a00073.html a623af65416db8cb66f675deefa10edd3 () const bool isValidAccount a00073.html ada326018b91c5208302633624809c164 () const bool isEnabled a00073.html a136e97e79395c504099e3ddf74d9e4c8 () const PendingOperation * setEnabled a00073.html a236a0768d589ce8ee81bd3d20c03b36d (bool value) QString cmName a00073.html aa112f96ad72c2211ab27f2acdf66deff () const QString protocolName a00073.html a6662638c97a83b57adc4e3141a1a2f4d () const QString serviceName a00073.html a78b20f592c85d3036319d10b5d22680f () const PendingOperation * setServiceName a00073.html a989b494f485dbc81b5e7a6ea9938db16 (const QString &value) ProfilePtr profile a00073.html ae52d8f4fa9856dccbe4ff9e01cb5a24f () const QString displayName a00073.html a9fb40eab5d106c73bf8167386941d99b () const PendingOperation * setDisplayName a00073.html a734e4b2b84c708fcbd0fbcfba034e958 (const QString &value) QString iconName a00073.html a466818531605767d91a86f8a701f1c22 () const PendingOperation * setIconName a00073.html af27a1a46ef1ad5321e041c0e4113224d (const QString &value) QString nickname a00073.html acf0b1e286195c08aa0addba50f6fae4d () const PendingOperation * setNickname a00073.html a4ca3a21f9a30c549b8de4e8f828c47fb (const QString &value) AvatarSpec avatarRequirements a00073.html a1fb13db623ce1dc641f3efbb062abc11 () const const Avatar & avatar a00073.html a7986044d3712e222d4fe78e404ddb2c0 () const PendingOperation * setAvatar a00073.html a4b9a655f455894444cc1aca7013bc8f4 (const Avatar &avatar) QVariantMap parameters a00073.html a97dd9d43317189a31c3d2895b6749f92 () const PendingStringList * updateParameters a00073.html ac6c4b093a9a66f9f2148c572d3f7186d (const QVariantMap &set, const QStringList &unset) ProtocolInfo protocolInfo a00073.html aaf467624c2f236233f9c94a85334bef5 () const ConnectionCapabilities capabilities a00073.html a9908d3c7acdb5591efb11a5e1c27e39f () const bool connectsAutomatically a00073.html aaefb8ab1d01ff98b184e739560f49e78 () const PendingOperation * setConnectsAutomatically a00073.html a97ed89daad41d4628ee5407ae47465f5 (bool value) bool hasBeenOnline a00073.html ad693afac9776edb06c52d253ebc37d93 () const ConnectionStatus connectionStatus a00073.html a513a06f6482d9dd63060991e95c9198e () const ConnectionStatusReason connectionStatusReason a00073.html a19afe9d4286572b6d359bb5beaa8fe48 () const QString connectionError a00073.html a6d1db36226e162137ccaf29f5cb48593 () const Connection::ErrorDetails connectionErrorDetails a00073.html ab97ac22cf81da24e1e7b7e6e86bb59e6 () const ConnectionPtr connection a00073.html a5cc7bc5b20a3672ce9bee41c3de57e92 () const bool isChangingPresence a00073.html a76cf23e27bb40103e4dc9e58f6f4f416 () const PresenceSpecList allowedPresenceStatuses a00073.html af259615fab0050ccb1a3a40db6cbab1b (bool includeAllStatuses=false) const uint maxPresenceStatusMessageLength a00073.html a7b214856a7b5b2bba6c8515fdc43f9a3 () const Presence automaticPresence a00073.html a2687767e33179f3ddab29afcbd3dab54 () const PendingOperation * setAutomaticPresence a00073.html a6675cb92038e4669734d279af7f52db9 (const Presence &presence) Presence currentPresence a00073.html abe41ad93a3dfd277502e7cf8e152476b () const Presence requestedPresence a00073.html a097f61700dda6800acb723916c691ecf () const PendingOperation * setRequestedPresence a00073.html afd8463718f9643b2b1f32cb45bb6a776 (const Presence &presence) bool isOnline a00073.html a4d50af2176c91cbde03bb0001d098c6a () const QString uniqueIdentifier a00073.html a9c763d3a7cf2b419b8e564b0a56549c9 () const QString normalizedName a00073.html a3028b9d11e53c5a3b21b59e6050a6109 () const PendingOperation * reconnect a00073.html acf58d85dd564cf237609dd5b2097784f () PendingOperation * remove a00073.html a4fda5fc77d34eb22019d48ee52464dcf () bool supportsRequestHints a00073.html ac8df78c3696cd42d459445fe979e193b () const bool requestsSucceedWithChannel a00073.html a72bf6f6e2e270b24992f9417f11e087e () const PendingChannelRequest * ensureTextChat a00073.html acbd675a6f8d833b0047a9e02f47467f5 (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureTextChat a00073.html a4aca1313a940b50c96a0f6391fc00915 (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureTextChatroom a00073.html a38d57b57c77573bf4c37110d1d35cf3c (const QString &roomName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureAudioCall a00073.html a57e640b076f5304aa61d11613c7a12ab (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureAudioCall a00073.html a8e261569d921b6d89e5c58b4a6fcc253 (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureVideoCall a00073.html abc182d149d289aa5da22f068ee744eab (const QString &contactIdentifier, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureVideoCall a00073.html aa356cabad84aa7493f5b5f6d03d8e281 (const ContactPtr &contact, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureAudioVideoCall a00073.html a79a753c3497c5780f8e4f60319ac12bc (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureAudioVideoCall a00073.html a2bf8a9cd827d54d365ac6ca147de880e (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureStreamedMediaCall a00073.html a0a26395e77841d89ea789e590e023b43 (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureStreamedMediaCall a00073.html a5498d8d7f1f9c03aa903bd3db8b0d313 (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureStreamedMediaAudioCall a00073.html a0d07e32785d3a4487186127504c3f722 (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureStreamedMediaAudioCall a00073.html adb48eb5eadf0186a2c99616e5cea88a2 (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureStreamedMediaVideoCall a00073.html abe9b35767b382bca625aa8f690395468 (const QString &contactIdentifier, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureStreamedMediaVideoCall a00073.html afde4a46025b3e944e6531db84b9e32b3 (const ContactPtr &contact, bool withAudio=false, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createFileTransfer a00073.html ac415c6153d6373e299ec6d09a29898c0 (const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createFileTransfer a00073.html a252d8f4448d7854770673812a8811153 (const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createStreamTube a00073.html a859f4bad0a76afed783c133908c0fae5 (const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createStreamTube a00073.html a23c36e1cdf6925de40e9515af5fd64fb (const ContactPtr &contact, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createDBusTube a00073.html ac89bd92dadabd40f36e1d815375c166f (const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createDBusTube a00073.html a120bcf3ff503addd072a2d84768ee1a7 (const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createDBusTubeRoom a00073.html a3797fd7ad03521ec745e9175ad3d6d8d (const QString &room, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceStreamedMediaCall a00073.html ab57d1e0c35264c824195aeb14de4a206 (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceStreamedMediaCall a00073.html a9c7717a22e7e89aef4f6c977976129ba (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceCall a00073.html a198a4efc092b9943140c620ab6937b32 (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceCall a00073.html aded6e074122d7490bbb29957a0447f0d (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceTextChat a00073.html a124ca0577a3b7254f6b9058d2b9d1a27 (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceTextChat a00073.html a0af1347fe56d9577fa0c1ade2472452a (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceTextChatroom a00073.html a466bf2e116c3f6668ef6b0d2fbb1208e (const QString &roomName, const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * createConferenceTextChatroom a00073.html a4ce33e7af6d418632b27bed0e6b8b936 (const QString &roomName, const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannel * createAndHandleConferenceCall a00073.html a2ac3bfa697d84c759e0e94af91d1f1d4 (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceCall a00073.html adcfee5e1b088530cd34b63a84730dba4 (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannelRequest * createContactSearch a00073.html a04637cc0d7d688db6223b871eaedba74 (const QString &server, uint limit=0, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannel * ensureAndHandleTextChat a00073.html a3b94f7012027cd1d45ef7e81800585e9 (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleTextChat a00073.html a6f39485aa7e2ff5b5270085572de9240 (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleTextChatroom a00073.html ae19ab91a2aec44842c7a0e48dbe82948 (const QString &roomName, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleAudioCall a00073.html a7addf4a8277ee1279ed1751abdb32547 (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleAudioCall a00073.html a4316ea9f10a8d5832f135c0b5bf69060 (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleVideoCall a00073.html a4a4fd614a16fb85b8ecdc24e5602b732 (const QString &contactIdentifier, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleVideoCall a00073.html a734d950720413d9412ebe1f8ca1b6ed3 (const ContactPtr &contact, const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleAudioVideoCall a00073.html ad5d345a2c3b291774d53dbf59d293d4d (const QString &contactIdentifier, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleAudioVideoCall a00073.html a0b083cabd99590d26f377b52c06888b3 (const ContactPtr &contact, const QString &initialAudioContentName=QString(), const QString &initialVideoContentName=QString(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleStreamedMediaCall a00073.html aba0e7a69fe84870f250bd515eb4c4ff7 (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleStreamedMediaCall a00073.html a7498f2201ca64e4cdef4a433cfa2ebc0 (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleStreamedMediaAudioCall a00073.html a405c41b4272c30e828e2c1874a5671ec (const QString &contactIdentifier, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleStreamedMediaAudioCall a00073.html aff03d0bd441ca8ffbbd2bcb236f33a39 (const ContactPtr &contact, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleStreamedMediaVideoCall a00073.html abe6625709e2a1234929a3a0bf8ad5110 (const QString &contactIdentifier, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * ensureAndHandleStreamedMediaVideoCall a00073.html ae825938962e74f87bd47c6dc229734d5 (const ContactPtr &contact, bool withAudio=true, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleFileTransfer a00073.html aed93b0ed9559a475b42505395a478e50 (const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleFileTransfer a00073.html a0224f831a42d63b345322525e43cc781 (const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleStreamTube a00073.html a80e192ae718f2904524d3b5fbcb0a5fb (const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleStreamTube a00073.html a36e8c7b6aceb8ba7ddde04a88c637f65 (const ContactPtr &contact, const QString &service, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleDBusTube a00073.html a1c0feca79b6ccc4a9cfb9c3a5f0649c5 (const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleDBusTube a00073.html abbb00c4e4c689c62fce0e7abbc039944 (const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceTextChat a00073.html a670829dfd7250ff1b9986f19bb10a61a (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceTextChat a00073.html a046ddbd01f0168f9d76ee1020b424fcf (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceTextChatroom a00073.html a228666ac21047119285bdae8afa40e52 (const QString &roomName, const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceTextChatroom a00073.html ad7ab17e576bac62d22f649882f0a134d (const QString &roomName, const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceStreamedMediaCall a00073.html a1ee236fe5eedf6453b3ddfd3582b005b (const QList< ChannelPtr > &channels, const QStringList &initialInviteeContactsIdentifiers=QStringList(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleConferenceStreamedMediaCall a00073.html a4c45998f9c2d4dc41e5dc9befd8ec5d1 (const QList< ChannelPtr > &channels, const QList< ContactPtr > &initialInviteeContacts=QList< ContactPtr >(), const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannel * createAndHandleContactSearch a00073.html a72abf4e36163deaff3b4aed4a33d5fc9 (const QString &server=QString(), uint limit=0, const QDateTime &userActionTime=QDateTime::currentDateTime()) PendingChannelRequest * createChannel a00073.html a24722fdf1204c9f6d24fe3d4cc2c3292 (const QVariantMap &requestedProperties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannelRequest * ensureChannel a00073.html acb2d7f568beb5b96f0fe985f877d4ec9 (const QVariantMap &requestedProperties, const QDateTime &userActionTime=QDateTime::currentDateTime(), const QString &preferredHandler=QString(), const ChannelRequestHints &hints=ChannelRequestHints()) PendingChannel * createAndHandleChannel a00073.html aed5d16035a1c442e93a2fae72b850857 (const QVariantMap &requestedProperties, const QDateTime &userActionTime) PendingChannel * ensureAndHandleChannel a00073.html aee4ba1ddaf5b965e05803554e4d6ca02 (const QVariantMap &requestedProperties, const QDateTime &userActionTime) OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (Account *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static AccountPtr create a00073.html aef4c7a496efe8532088c7c91ef56ca1a (const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static AccountPtr create a00073.html a7cd951eaf433bc214136004002d9c23b (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static const Feature FeatureCore a00073.html a7539f38c2b784fb4b9f97da4ea97a6ad static const Feature FeatureAvatar a00073.html afc6d6fa78a867d70f9371a8d87570355 static const Feature FeatureProtocolInfo a00073.html af103cec14aca1099ab41ec53ad27b787 static const Feature FeatureCapabilities a00073.html a01b1ed83af4d509328278c4ec6c9fb7c static const Feature FeatureProfile a00073.html ae546a2de4635e84dca100e73f12a3923 Account a00073.html ab18d2713520cfe79375033ae4a917529 (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature) Client::AccountInterface * baseInterface a00073.html a3f50f8819ed6bcfbe3de72e4ab1f594a () const Client::ChannelDispatcherInterface * dispatcherInterface a00073.html a2c12bdde2185330aeeb11376899d44c7 () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) bool valid a00073.html a3cffc957c41ec745ccac736d62d12a02 bool enabled a00073.html aeb9b15744188659cb50146f2c7f24b24 QString cmName a00073.html ae9e0af24edd754310a26d2a4b199e90a QString protocolName a00073.html af675e608e7ccc275355716ba97446b0c QString serviceName a00073.html aef34a01727157f42f507f97e24450fc3 ProfilePtr profile a00073.html ad3d0be18bb75c147ca01d50bbcd1d440 QString displayName a00073.html ae4bdab95dd652f4625bde6cf7045f886 QString iconName a00073.html a1bdcb40505e0dcd18e2fadf0586a879f QString nickname a00073.html a770a6a3d3e2292a0f901616a7f8fb382 AvatarSpec avatarRequirements a00073.html a7142e9d3d92c9efc7f167f1fbd16b6e6 Avatar avatar a00073.html a0adb5a23167b2e36ae1178e653aaa543 QVariantMap parameters a00073.html aecbcd5c64d4b1110ae39052981a12083 ProtocolInfo protocolInfo a00073.html afb2abfa556b1dbfe135b82daecff7b5b ConnectionCapabilities capabilities a00073.html afbe2e6ca0be1db61d6c1b526b662b9e3 bool hasBeenOnline a00073.html a49784c282d5624c05212c759cbe35710 bool connectsAutomatically a00073.html a225d08dc86f88771d9bb52548587438f ConnectionStatus connectionStatus a00073.html aaa9b668961fc565957aa4a4516c20821 ConnectionStatusReason connectionStatusReason a00073.html a14fbcb879ac804648d078b870a32c793 QString connectionError a00073.html a6d8bc8610d01feb04c5102378126746b Tp::Connection::ErrorDetails connectionErrorDetails a00073.html a990be73ee94813ac53546176aafd1adc ConnectionPtr connection a00073.html af2a055b749ac0d96b0153d3a0cf35fd9 bool changingPresence a00073.html ac05567ba1653168e23b33aae6ad34463 Presence automaticPresence a00073.html a964518b04a92924e7f845ab98a68007b Presence currentPresence a00073.html aeb4d2c5bdb6ffb7f66904b1b4eb0f848 Presence requestedPresence a00073.html a7fefc5c5b2f028ef3678bd03bd5d2ae6 bool online a00073.html a7492892b2d84652633bb48c0007a470e QString uniqueIdentifier a00073.html a7698f1f9fc04b17128c59fdd519e0199 QString normalizedName a00073.html ad170e8e8962670f586652dae8c49bf3f InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f account_usage_sec account_create_sec account_ready_sec Tp::AndFilter a00087.html Tp::Filter virtual ~AndFilter a00087.html a34763fedbcc451d7d5c6756a7db931dd () virtual bool isValid a00087.html af8fee23e5ed63c0997f3b713cf9abb8d () const virtual bool matches a00087.html a6003457a9b6093f976f18268bcc0fa1e (const SharedPtr< T > &t) const QList< SharedPtr< const Filter< T > > > filters a00087.html a54a1bf0034b1fb1f1223dc86d048aeb5 () const static SharedPtr< AndFilter< T > > create a00087.html ad4257c712fb1ba80aaea65a9e10760c9 (const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >()) Tp::AvatarData a00090.html AvatarData a00090.html a469d73842f3653666adf48741be26b0b (const QString &fileName, const QString &mimeType) AvatarData a00090.html aec4d4212517c06d9f712488dd9af24ba () QString fileName a00090.html ab9d39d5346f8cd3be5eef72185287515 QString mimeType a00090.html a097053516b4cf12847daab25d313e473 Tp::AvatarSpec a00091.html AvatarSpec a00091.html af3d5d9cba6eb7371878d3ea7c37b16a4 () AvatarSpec a00091.html a9f5b0dbce7af7beca52e071b33511d9e (const QStringList &supportedMimeTypes, uint minHeight, uint maxHeight, uint recommendedHeight, uint minWidth, uint maxWidth, uint recommendedWidth, uint maxBytes) AvatarSpec a00091.html af91a0f3d036aa394b1167e2fd44db21e (const AvatarSpec &other) ~AvatarSpec a00091.html a279811d7a05c16a8095c7165f3352853 () bool isValid a00091.html ac8484053519fef9a4d82b0ac6bc69d22 () const AvatarSpec & operator= a00091.html afb23eec8d9767dd543c4687285a166f7 (const AvatarSpec &other) QStringList supportedMimeTypes a00091.html a90aea83463ca1f9b9349450fdcdef82a () const uint minimumHeight a00091.html a240e48e147f5d20f27f15c4c53b2c5b8 () const uint maximumHeight a00091.html aa1ac2ac8a0951716c26f3f788949d798 () const uint recommendedHeight a00091.html a0ac4dcf09f63a443008d2ea6a8fe463a () const uint minimumWidth a00091.html a85779e57443a3127a81c15f76e2f9d47 () const uint maximumWidth a00091.html a638af3491126c28e3ed8c355c839b0c8 () const uint recommendedWidth a00091.html a21bdb915de70ef99c4c1867e8d075dfc () const uint maximumBytes a00091.html a515d57c04be3419cf42bb9dda50ec786 () const Tp::AbstractCallContentInterface a00061.html Tp::AbstractDBusServiceInterface AbstractCallContentInterface a00061.html a094d7b39f7c1a2f9905d474c100a41de (const QString &interfaceName) virtual ~AbstractCallContentInterface a00061.html aed647df203a01169ea207e7f632d49dc () AbstractDBusServiceInterface a00068.html ab7f3a6c62addea121b3dd7a5d51c5766 (const QString &interfaceName) virtual ~AbstractDBusServiceInterface a00068.html a72d8f7e2e59db04759168e059323fbb1 () QString interfaceName a00068.html ae5a60300ba120fb6579a489d1e3abe59 () const virtual QVariantMap immutableProperties a00068.html aa73b72b907398dfc6a4563b62dc6fd2f () const =0 DBusObject * dbusObject a00068.html ae8630f88c35f340bf7a5b41ae13c208b () const bool isRegistered a00068.html a3e4213911feea638dd4dab3dd20ada17 () const bool notifyPropertyChanged a00068.html a427f7c7d37b1333ab67803b048856814 (const QString &propertyName, const QVariant &propertyValue) virtual bool registerInterface a00068.html a9d73f044373a17cfc82c6c0a9a8dbbaa (DBusObject *dbusObject) virtual void createAdaptor a00068.html a5e145203ddae87726aa46500691b2f3d ()=0 Tp::BaseCallContent a00094.html Tp::DBusService virtual ~BaseCallContent a00094.html a94737f765cbfc661175c6a8972923eb7 () QVariantMap immutableProperties a00094.html a37f12e7870aecd73143c4d80c9e2bf12 () const bool registerObject a00094.html a213bb918ee6cac14f1e0438fc76991d7 (DBusError *error=NULL) virtual QString uniqueName a00094.html af01c486a3a2198ee5febf5f7d6c041b5 () const QList< AbstractCallContentInterfacePtr > interfaces a00094.html acf9c5ff462ae58c299191864eaf2ea1c () const AbstractCallContentInterfacePtr interface a00094.html a3e7482e356212d6f8d276f49602f49c9 (const QString &interfaceName) const bool plugInterface a00094.html a03bc340a83aa196ab7ac903da236d0d8 (const AbstractCallContentInterfacePtr &interface) QString name a00094.html a53dd840166283290470dd946b41fd437 () const Tp::MediaStreamType type a00094.html a093bd416af7bcd12e98d832e01aa24f1 () const Tp::CallContentDisposition disposition a00094.html aca94b4e946595d71cfd794883b6238fe () const Tp::ObjectPathList streams a00094.html a860a092d13e4464c35477f6e2631cd07 () const DBusService a00341.html a7156a7b3ac09af59b1cbc5f9e33efc88 (const QDBusConnection &dbusConnection) virtual ~DBusService a00341.html a85b2bdc6cf8efaee666d655fc4693c16 () QDBusConnection dbusConnection a00341.html aa1f7e8613cfda37abfa4f529bb6633b5 () const QString busName a00341.html ae1cf0a6d00b2b7d541c3e5dbc319521b () const QString objectPath a00341.html aaf651c0bc7e2c0002c38509eeb03f3c9 () const DBusObject * dbusObject a00341.html a0da60cf97c088264c934d3c84b59d1fb () const bool isRegistered a00341.html affb11e5c2e364c6ca9356ef57efb17e3 () const static BaseCallContentPtr create a00094.html a0c06dcf05108d477e7a09cbdfddea110 (const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) BaseCallContent a00094.html a147b7854088ac7e5ba3f6b63edeb868b (const QDBusConnection &dbusConnection, BaseChannel *channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) virtual bool registerObject a00094.html ab04c4c7cb883ba5cb8aa58c25178a009 (const QString &busName, const QString &objectPath, DBusError *error) void remove a00094.html a7557b5c8ddd082706f4f5dd2930239f9 () Tp::BaseCallMuteInterface a00096.html Tp::AbstractChannelInterface Callback2< void, const Tp::LocalMuteState &, DBusError * > SetMuteStateCallback a00096.html af954d5151905552cb56f1a6965c2cbf7 void muteStateChanged a00096.html a40f767f8929103c93d99a37c78bbf823 (const Tp::LocalMuteState &state) virtual ~BaseCallMuteInterface a00096.html a5dfb42e4fc1b0dd200a8d3109253d70d () QVariantMap immutableProperties a00096.html a14654f6e30705cc696bb9b8fcf8a33d2 () const Tp::LocalMuteState localMuteState a00096.html a87f442b30b226c55c60f2acbd37d537f () const void setMuteState a00096.html afc68aa66ddab29f5ce16ba1194836fe6 (const Tp::LocalMuteState &state) void setSetMuteStateCallback a00096.html afabbca359dcadf3e1cd61bc51970fb3d (const SetMuteStateCallback &cb) AbstractChannelInterface a00062.html a05f8a1838aadc0d57f1d39235cf5a26d (const QString &interfaceName) virtual ~AbstractChannelInterface a00062.html a21c0ca1dd1f3ce07dd0f3d7a941a6443 () static BaseCallMuteInterfacePtr create a00096.html acd10559eec9464dd9ed86f06b3c89060 () static SharedPtr< BaseCallMuteInterfaceSubclass > create a00096.html abf763b36576d1af2f0402d4748f06c6f () Tp::BaseCallContentDTMFInterface a00095.html Tp::AbstractCallContentInterface Callback2< void, uchar, DBusError * > StartToneCallback a00095.html a9e5032502e099c9e6f4f2f99eeb7f0a6 Callback1< void, DBusError * > StopToneCallback a00095.html a8c6495b5e7a162a1429fdbbfc3f45968 Callback2< void, const QString &, DBusError * > MultipleTonesCallback a00095.html ac2995418798c11ce5e57372cb207eb93 virtual ~BaseCallContentDTMFInterface a00095.html abed6634a53c1166e1bc911995382496c () QVariantMap immutableProperties a00095.html ac1b4e300ec740615c836ee3198ed0fb7 () const bool currentlySendingTones a00095.html a2595bcb750b41370d7909f2e126140c1 () const void setCurrentlySendingTones a00095.html a3bfa31403472c7b607acd2cd7888eaea (bool sendingTones) QString deferredTones a00095.html a6323cd49ecd05a3da8c4cc583a815e35 () const void setDeferredTones a00095.html ada456706818b076b28b680c51bd0e7f7 (const QString &deferredTones) void setStartToneCallback a00095.html a95c59f61792b5e88bdee34c8b8ff1585 (const StartToneCallback &cb) void setStopToneCallback a00095.html a021db5e379c29db6d0bbdaddd7e415e3 (const StopToneCallback &cb) void setMultipleTonesCallback a00095.html a9fd65a54b8083bb9d03f2d4a9e0ca9ae (const MultipleTonesCallback &cb) static BaseCallContentDTMFInterfacePtr create a00095.html aa0670602c83441f28efd3583d3feb30b () static SharedPtr< BaseCallContentDTMFInterfaceSubclass > create a00095.html ac6d94d2940db65cc7a8d5bc8060a0ba5 () Tp::BaseChannel a00097.html Tp::DBusService void closed a00097.html aefe8f7c7599254e0b0d61d464eaadd61 () virtual ~BaseChannel a00097.html a7bd221dedfef61cb6cff80d8ed753cef () QVariantMap immutableProperties a00097.html acea1c31dd66e0f9beda3fe276dff24ae () const bool registerObject a00097.html aec93fb3d7bcc14614c1e0c4369052951 (DBusError *error=NULL) virtual QString uniqueName a00097.html a1dbe0a14c298d2c82bf9ed7a2cf3aae5 () const QString channelType a00097.html a2118c38e7fc7001f639cd230511e14c2 () const QList< AbstractChannelInterfacePtr > interfaces a00097.html a8ab729b7af80f0052078e911e97097c9 () const AbstractChannelInterfacePtr interface a00097.html a42334ea50a8118e27502e6f9b7caf7ae (const QString &interfaceName) const uint targetHandle a00097.html aed01438954fd5dfd32686fa6ccd88532 () const QString targetID a00097.html adbf7afecd0797892c80701fc0775422e () const uint targetHandleType a00097.html a8f36c3c52a066ae826ade37bae1e9cb2 () const bool requested a00097.html aeb2e449c5e85e18a4ab7cfe14873958a () const uint initiatorHandle a00097.html a743e1079d09a73cdb558356a78033458 () const QString initiatorID a00097.html af247f83fdbadfaeb879c22373863d12b () const Tp::ChannelDetails details a00097.html a170df49e2dc6d7b788a3ee80c5b5b549 () const void setInitiatorHandle a00097.html a3deaa23b54ef95c37816e0ba9a36cffa (uint initiatorHandle) void setInitiatorID a00097.html a99e71a612d3ef8d7221b56a71af60843 (const QString &initiatorID) void setTargetID a00097.html a7e0798ac490b9d11fc34fa607a49f74b (const QString &targetID) void setRequested a00097.html a79288dba4ea0d4c03b4b6507eb330f43 (bool requested) void close a00097.html a2b28ccdcbe5548937c5b59b6f1989ac5 () bool plugInterface a00097.html a3c9526cb13fe7c25013599759b38c136 (const AbstractChannelInterfacePtr &interface) static BaseChannelPtr create a00097.html af4433d522e7e76cc1d9840d50575d11b (BaseConnection *connection, const QString &channelType, Tp::HandleType targetHandleType=Tp::HandleTypeNone, uint targetHandle=0) BaseChannel a00097.html aee71adb58bb2d4043d148e900b7a5096 (const QDBusConnection &dbusConnection, BaseConnection *connection, const QString &channelType, uint targetHandleType, uint targetHandle) virtual bool registerObject a00097.html ac16b4657a85cc26754dffb38d4e992a0 (const QString &busName, const QString &objectPath, DBusError *error) Tp::AbstractChannelInterface a00062.html Tp::AbstractDBusServiceInterface Tp::BaseChannelTextType a00114.html Tp::AbstractChannelInterface Callback2< QDBusObjectPath, const QVariantMap &, DBusError * > CreateChannelCallback a00114.html a3f39447e08f759dd9d9ab5bc68a73e77 Callback2< bool, const QVariantMap &, DBusError * > EnsureChannelCallback a00114.html a99ad71f33a4c00e8d124e09515f8cd74 Callback1< void, QString > MessageAcknowledgedCallback a00114.html a1cfe03a23368ffcbbe803df627502286 virtual ~BaseChannelTextType a00114.html aefef10b512f0368fa71b31324e36a780 () QVariantMap immutableProperties a00114.html ac566514bd8fef2f019c116a2c616d01b () const void setMessageAcknowledgedCallback a00114.html abdc32a22e73088d9829c3fa8e84ce97c (const MessageAcknowledgedCallback &cb) Tp::MessagePartListList pendingMessages a00114.html a5412e7b80e0a1b3bca235ede93055e6a () void addReceivedMessage a00114.html a6f7fa2f64b19f983fe2bdae482750d5a (const Tp::MessagePartList &message) static BaseChannelTextTypePtr create a00114.html ae9010d588f4faa1e54f90fd0895cd734 (BaseChannel *channel) static SharedPtr< BaseChannelTextTypeSubclass > create a00114.html a7b4768ae659bafefe78d8909b1e90d3c (BaseChannel *channel) CreateChannelCallback createChannel a00114.html abe4772a87088199c72c7efd489039d8c EnsureChannelCallback ensureChannel a00114.html aa072e1d4e1b995aaf7ea635c9cc91d77 Tp::RequestableChannelClassList requestableChannelClasses a00114.html ae0cc0eec18f88aacedbba3c7290afb7c BaseChannelTextType a00114.html aeb02c4bfafec855b1e192e918ea2367f (BaseChannel *channel) void acknowledgePendingMessages a00114.html afd2a16be52faf59090fe8e21a4a9e6a5 (const Tp::UIntList &IDs, DBusError *error) Tp::BaseChannelMessagesInterface a00105.html Tp::AbstractChannelInterface Callback3< QString, const Tp::MessagePartList &, uint, DBusError * > SendMessageCallback a00105.html a2face9c5a77ee9ad66b89d59dd60c4f1 virtual ~BaseChannelMessagesInterface a00105.html aa599d8bad009d0b35f4da5c961e6ec0d () QVariantMap immutableProperties a00105.html a2dd13ab87aca833336ef1680ab9b74f6 () const QStringList supportedContentTypes a00105.html a598f2d0a45bc564026f4e7fc5f12500d () Tp::UIntList messageTypes a00105.html a295b8e01b2defa4ea2596621ba80b049 () uint messagePartSupportFlags a00105.html a82e23e841bc9a54b74dcd752d48df8aa () uint deliveryReportingSupport a00105.html ae59522552e1986922db5e8ed5aebd0f8 () Tp::MessagePartListList pendingMessages a00105.html afc7f7e9db5cfbfb37ec4569a98ce01e6 () void messageSent a00105.html a71aedb8e5e8589bbc4c04fc3015cc43f (const Tp::MessagePartList &content, uint flags, const QString &messageToken) void setSendMessageCallback a00105.html ab965fedbe69e66d7a8bf6485448e93aa (const SendMessageCallback &cb) static BaseChannelMessagesInterfacePtr create a00105.html a4e07368db3a07bdd61223774542f3733 (BaseChannelTextType *textTypeInterface, QStringList supportedContentTypes, UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport) static SharedPtr< BaseChannelMessagesInterfaceSubclass > create a00105.html a9277317ca5abdeeb4abdadc1d5f31eb4 () QString sendMessage a00105.html ae16f61baa2e0907e84caf67c7f4352d9 (const Tp::MessagePartList &message, uint flags, DBusError *error) Tp::BaseChannelRoomListType a00108.html Tp::AbstractChannelInterface Callback1< void, DBusError * > ListRoomsCallback a00108.html a06f219e7dd4c1d8f96a0908464478d40 Callback1< void, DBusError * > StopListingCallback a00108.html a1861c6b31c9961a6d089a9fc01dcd9df virtual ~BaseChannelRoomListType a00108.html adeb2de38675f44517a87287323b26dde () QVariantMap immutableProperties a00108.html a34b0a37bec0e157de82413328529f908 () const QString server a00108.html a3b09f94fa0943c2530eeaf8ef1454383 () const bool getListingRooms a00108.html af4c2d848cccd0052e1b24e6e4f29bb4d () void setListingRooms a00108.html a7f863da99515ed941dc2ebeba122732d (bool listing) void setListRoomsCallback a00108.html a230d1debc863a429a7383f57b23b0c9a (const ListRoomsCallback &cb) void listRooms a00108.html a236d613083f4b59ccb27db85653ee699 (DBusError *error) void setStopListingCallback a00108.html a7310e51707c6b3f9d2a4c320c534a271 (const StopListingCallback &cb) void stopListing a00108.html ab67baa9612ba0526b8150b2af385e06f (DBusError *error) void gotRooms a00108.html a5c43f47f5a0002bfabc8d28c46b8fd1e (const Tp::RoomInfoList &rooms) static BaseChannelRoomListTypePtr create a00108.html ab4ccc67cbef6bfd4d9eb51588e076081 (const QString &server=QString()) static SharedPtr< BaseChannelRoomListTypeSubclass > create a00108.html afdf2d8884eabbab8bc7ae9493b672e3f (const QString &server=QString()) BaseChannelRoomListType a00108.html a94ecac8a6448db4ce3a6d11772635ca5 (const QString &server) Tp::BaseChannelServerAuthenticationType a00111.html Tp::AbstractChannelInterface virtual ~BaseChannelServerAuthenticationType a00111.html ae0d21c08f50607e64cee0affe4b81c6a () QVariantMap immutableProperties a00111.html add62be55454f6d8fce2d02731af3e4c2 () const static BaseChannelServerAuthenticationTypePtr create a00111.html ad7df0e731e73eae6dbdba30837e952e5 (const QString &authenticationMethod) static SharedPtr< BaseChannelServerAuthenticationTypeSubclass > create a00111.html ad3da0cf4b894fb804084f344afb88d95 (const QString &authenticationMethod) Tp::BaseChannelCaptchaAuthenticationInterface a00099.html Tp::AbstractChannelInterface Callback4< void, Tp::CaptchaInfoList &, uint &, QString &, DBusError * > GetCaptchasCallback a00099.html a74f01318426aa8fdd00065461ae43e47 Callback3< QByteArray, uint, const QString &, DBusError * > GetCaptchaDataCallback a00099.html ab25cfe206b40330e13b7bd2fedab62f8 Callback2< void, const Tp::CaptchaAnswers &, DBusError * > AnswerCaptchasCallback a00099.html a1afc52fffa644c6f32cd57aacce1be70 Callback3< void, uint, const QString &, DBusError * > CancelCaptchaCallback a00099.html ae17f0b1de3ab5a1328c4a5464011369f virtual ~BaseChannelCaptchaAuthenticationInterface a00099.html ab66cab5a77e0d1bf167af2363ccd3872 () QVariantMap immutableProperties a00099.html a95fa366f9bbc290e2c603d0aa87a6223 () const void setGetCaptchasCallback a00099.html a4c47919a748fd9c47307be243c89af5f (const GetCaptchasCallback &cb) void setGetCaptchaDataCallback a00099.html a9995aaf25fe5ca572c5bacf3fb194826 (const GetCaptchaDataCallback &cb) void setAnswerCaptchasCallback a00099.html a393e33dea291a6d9c745dd1d0e094289 (const AnswerCaptchasCallback &cb) void setCancelCaptchaCallback a00099.html a2258156732e103d08c63f1a5c1133072 (const CancelCaptchaCallback &cb) void setCaptchaStatus a00099.html a5bf9b163da304aa49d1374307699659e (uint status) void setCaptchaError a00099.html aeaa9d81a65c8f46236adaafea79cb353 (const QString &busName) void setCaptchaErrorDetails a00099.html a73e2bafc18d31247d52c53a2e688450e (const QVariantMap &error) static BaseChannelCaptchaAuthenticationInterfacePtr create a00099.html aa2c894fafe07b3bc72fa76a99b671e84 (bool canRetryCaptcha) static SharedPtr< BaseChannelCaptchaAuthenticationInterfaceSubclass > create a00099.html aa615577305b197ff8d907462eb5e0522 (bool canRetryCaptcha) Tp::BaseChannelSASLAuthenticationInterface a00109.html Tp::AbstractChannelInterface Callback2< void, const QString &, DBusError * > StartMechanismCallback a00109.html a42f86a04e6a716ddf05e9d223ad85bb4 Callback3< void, const QString &, const QByteArray &, DBusError * > StartMechanismWithDataCallback a00109.html a9f7272e831d8ea1d932f0f18da3cc488 Callback2< void, const QByteArray &, DBusError * > RespondCallback a00109.html aafc7e7a0b7b1c9f05af21e917d1277c1 Callback1< void, DBusError * > AcceptSASLCallback a00109.html a56562c1bd158329c9e394a6eb47d0baa Callback3< void, uint, const QString &, DBusError * > AbortSASLCallback a00109.html ae91e0be7d6d23aa420bc6faa4aadc3ce virtual ~BaseChannelSASLAuthenticationInterface a00109.html a09355c9f7793287cf00055d75c0aae04 () QVariantMap immutableProperties a00109.html aa2e54270edb8d14e7a1d2c30f6e75687 () const QStringList availableMechanisms a00109.html ad968e46015ffa65600bf612473ca602e () const bool hasInitialData a00109.html a1cdd4fae27a4268ab94400516997d0d7 () const bool canTryAgain a00109.html aeefc13253b4a6a6441524be9da9447ca () const QString authorizationIdentity a00109.html ab35b3d81d61b3794fbeb8cabfc7902c4 () const QString defaultUsername a00109.html a5f1b9a72c75c15c8bfb3db413e5ca011 () const QString defaultRealm a00109.html ab95a8407eb53fd0a4d8e7b35cf0a466a () const bool maySaveResponse a00109.html a723116fe9a5302de0b1b9740be46b0c3 () const uint saslStatus a00109.html a6a654bb931dab331ae0036d5343cc044 () const void setSaslStatus a00109.html ad87b861e105378da65ac097978a5efa0 (uint status, const QString &reason, const QVariantMap &details) QString saslError a00109.html a1621438901f42036cb578a8cbe291457 () const void setSaslError a00109.html a28db9391bbb80c0a40aa06f429660f8e (const QString &saslError) QVariantMap saslErrorDetails a00109.html a65e602907701118570f45da37f2f43ae () const void setSaslErrorDetails a00109.html a8bd9b8274ae91609f938278ba09adf28 (const QVariantMap &saslErrorDetails) void setStartMechanismCallback a00109.html a34cc53bc2708d948282ff2729efa310a (const StartMechanismCallback &cb) void startMechanism a00109.html a1cd9d3339d2e2835ce6b8b4430d5f25b (const QString &mechanism, DBusError *error) void setStartMechanismWithDataCallback a00109.html a24d114c25bea83729089e81bf266b489 (const StartMechanismWithDataCallback &cb) void startMechanismWithData a00109.html a49edc500f31f612692538bc9140c5395 (const QString &mechanism, const QByteArray &initialData, DBusError *error) void setRespondCallback a00109.html a6cef188cc6d54c06bd9e14fb9e53ced9 (const RespondCallback &cb) void respond a00109.html a596a6906e0e8543f118f17a690545a71 (const QByteArray &responseData, DBusError *error) void setAcceptSaslCallback a00109.html aff7154811fd25cc7798637c0006919a6 (const AcceptSASLCallback &cb) void acceptSasl a00109.html a6524c13c0e490def60316ba68aa7ca43 (DBusError *error) void setAbortSaslCallback a00109.html af24a4006849d41d28b230f32473e455e (const AbortSASLCallback &cb) void abortSasl a00109.html a2591a5915d4e92784906b86cce1280e2 (uint reason, const QString &debugMessage, DBusError *error) void newChallenge a00109.html a9b427db5eaf6e903f6533b705706fb91 (const QByteArray &challengeData) static BaseChannelSASLAuthenticationInterfacePtr create a00109.html acabac44b4a13f22fac0bc8577ff00e3e (const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) static SharedPtr< BaseChannelSASLAuthenticationInterfaceSubclass > create a00109.html a8a5f231dc4517f83ce0f79a3be5eea37 (const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) BaseChannelSASLAuthenticationInterface a00109.html a39a34b35df179165e8b8a45b70b5cf86 (const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) Tp::BaseChannelSecurableInterface a00110.html Tp::AbstractChannelInterface virtual ~BaseChannelSecurableInterface a00110.html ad92d53c5143db045deea0504ca8863b9 () QVariantMap immutableProperties a00110.html a11d548cf97f74d40220d338e2ae3e4e0 () const bool encrypted a00110.html a8bd30c04e63a37260f8ee34e0b7c6740 () const void setEncrypted a00110.html ad6664538e14e5bc8c191e86ae9000996 (bool encrypted) bool verified a00110.html a138864a749f01585487aedc78af98654 () const void setVerified a00110.html acc4489e3ba0835983f4728097081d971 (bool verified) static BaseChannelSecurableInterfacePtr create a00110.html adebd8c2bb03aad43ee6de51f0dcab6f7 () static SharedPtr< BaseChannelSecurableInterfaceSubclass > create a00110.html af50c6f862e45ec7fe698e3ef2ade9a46 () BaseChannelSecurableInterface a00110.html a9b2e267616e5384ccb5242e35c76bd3f () Tp::BaseChannelChatStateInterface a00100.html Tp::AbstractChannelInterface Callback2< void, uint, DBusError * > SetChatStateCallback a00100.html a08976aaeaff4b8cc1aa772189d970ff1 virtual ~BaseChannelChatStateInterface a00100.html a17d3384fd300470fea9557f07a2d2916 () QVariantMap immutableProperties a00100.html ad60203f6b60b435ac0cf8e5609b90690 () const Tp::ChatStateMap chatStates a00100.html a994f7d66691b2f0f494649698f244c95 () const void setChatStates a00100.html a521c97c59c8307ca8adb87a89c31d7d3 (const Tp::ChatStateMap &chatStates) void setSetChatStateCallback a00100.html a16d190411f5a1b2cf72837d35edc6d58 (const SetChatStateCallback &cb) void setChatState a00100.html af90288b9f1807d5ccab6b10860da775b (uint state, DBusError *error) void chatStateChanged a00100.html a4982716f7c5f9a5bfb6a2bfee680750f (uint contact, uint state) static BaseChannelChatStateInterfacePtr create a00100.html a4aa027ad28a0c3d49f7c5c022134b4e6 () static SharedPtr< BaseChannelChatStateInterfaceSubclass > create a00100.html a63f02bea2c390c6de74022b26f16cf3e () BaseChannelChatStateInterface a00100.html a767ba965aa6c33b73da0d921df2ce4e1 () Tp::BaseChannelGroupInterface a00102.html Tp::AbstractChannelInterface Callback3< void, const Tp::UIntList &, const QString &, DBusError * > RemoveMembersCallback a00102.html a53002569569a021433a4c0db897d53c1 Callback3< void, const Tp::UIntList &, const QString &, DBusError * > AddMembersCallback a00102.html a8a13f680106d6462ac16a74a8207d53a virtual ~BaseChannelGroupInterface a00102.html a0a43a3a5f8e58c1d5f9c83e2e3661833 () QVariantMap immutableProperties a00102.html ad3f1373e6f50ef8c91b5442d76f3ea3e () const void setRemoveMembersCallback a00102.html aecbdebc0536c28fff802e6eaee0c66d3 (const RemoveMembersCallback &cb) void setAddMembersCallback a00102.html aa5e53d38aa08066feecca85b047fe205 (const AddMembersCallback &cb) void addMembers a00102.html a38a47d4a53d6942f9adb24313bbc268a (const Tp::UIntList &handles, const QStringList &identifiers) void removeMembers a00102.html a0fab769dab97175f4cef47d2c6067137 (const Tp::UIntList &handles) static BaseChannelGroupInterfacePtr create a00102.html a1f3162b94e923d76e92460565b2fbdce (ChannelGroupFlags initialFlags, uint selfHandle) static SharedPtr< BaseChannelGroupInterfaceSubclass > create a00102.html a494a6c56bc42583807ba1b1709711e39 (ChannelGroupFlags initialFlags, uint selfHandle) Tp::BaseChannelRoomInterface a00107.html Tp::AbstractChannelInterface virtual ~BaseChannelRoomInterface a00107.html aee1ef29e1bed5c80d27c2503ef0e7ca7 () QVariantMap immutableProperties a00107.html a354c85886d2e366bad235e9211544395 () const QString roomName a00107.html a51cff256fff33817bac216588cae3948 () const QString server a00107.html a1f323c6a8a716dbe7bb5b719410a1b36 () const QString creator a00107.html af05cabc9af5332edc852288809147f2f () const uint creatorHandle a00107.html a7a0f0e8e0afdedf3bf9d2986e36e8e8d () const QDateTime creationTimestamp a00107.html a9113e629c1037ddf525096cb9594773b () const static BaseChannelRoomInterfacePtr create a00107.html afb24771711d60913a3133f77b9103521 (const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) static SharedPtr< BaseChannelRoomInterfaceSubclass > create a00107.html ad69f941c8f06bfa18d083e61fa8687ba (const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) BaseChannelRoomInterface a00107.html adfda283d867df12ee5f84c74169c9602 (const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) Tp::BaseChannelRoomConfigInterface a00106.html Tp::AbstractChannelInterface Callback2< void, const QVariantMap &, DBusError * > UpdateConfigurationCallback a00106.html a44314120ec2476d134c2787a9aee718b virtual ~BaseChannelRoomConfigInterface a00106.html a1f594c754c2d3b880f559eb9c8afc592 () QVariantMap immutableProperties a00106.html a75bddf784236b1ef35f4b76abb6a8865 () const bool anonymous a00106.html a328d10a78dd8844e4bf6e71691a7a84a () const void setAnonymous a00106.html ace7a51ffa8ac1f470fbaf319a39e6ca3 (bool anonymous) bool inviteOnly a00106.html a513faa3bf7be6bd84a668033e59f502f () const void setInviteOnly a00106.html a11a86d60e3fa4c5a32984e9a4673007f (bool inviteOnly) uint limit a00106.html a0856b7bdadf1d04117dadc9608d5dbce () const void setLimit a00106.html ae22daefd93b5be2c05705957cb2be099 (uint limit) bool moderated a00106.html ae422b316d20eb77fbb161e1c5f72f8f1 () const void setModerated a00106.html a2cd523b2ed918d305e0863a0917dfede (bool moderated) QString title a00106.html a2a58c0e1b4b518aa480557d9ba3d45c4 () const void setTitle a00106.html ad125dc845a1810d23e670d4fe2b08b56 (const QString &title) QString description a00106.html aff4bc4c66c2be0a31094c9131bab1fb8 () const void setDescription a00106.html ab1f437597ea58746481d9fb42f7408ab (const QString &description) bool persistent a00106.html a02f45ee81610678e15b0c5edc18c4bd3 () const void setPersistent a00106.html a8aa2b5a21df8f3afdf776df00e608343 (bool persistent) bool isPrivate a00106.html ac348fb2fb39ffb7889a5033d7a492152 () const void setPrivate a00106.html ac7bcc5484112b4575500449365f49360 (bool newPrivate) bool passwordProtected a00106.html aaa2eb65dbcfb19fb92101547a2818505 () const void setPasswordProtected a00106.html a7dc9712508ab783da118d9bc6900e5ac (bool passwordProtected) QString password a00106.html a20ff83512fcdc6599f1043000f7e0002 () const void setPassword a00106.html af73c52da30105dac138f09a040ebe70b (const QString &password) QString passwordHint a00106.html a18eaab395fa700f4e65ada7841b2ff53 () const void setPasswordHint a00106.html a57a15dd10050bf7f0eeac16d067dede6 (const QString &passwordHint) bool canUpdateConfiguration a00106.html a1ab787858f8a7d4c4ce0e1ec00fdd52a () const void setCanUpdateConfiguration a00106.html ac1dba2bad6a56e69414da5b4613177f2 (bool canUpdateConfiguration) QStringList mutableProperties a00106.html a3a662df2408da863bc67f963456075ed () const void setMutableProperties a00106.html a21bba464850da554b7388cb697eb7e76 (const QStringList &mutableProperties) bool configurationRetrieved a00106.html a1ebbbca2f6b1058c28b3ac8904b15472 () const void setConfigurationRetrieved a00106.html ab4a28cc95876027cb39ba586fe9e915e (bool configurationRetrieved) void setUpdateConfigurationCallback a00106.html a6f7e8ea8c2a784995b7aa26e57c96ff2 (const UpdateConfigurationCallback &cb) void updateConfiguration a00106.html aa085476aa568adfc9f0a345bf135f078 (const QVariantMap &properties, DBusError *error) static BaseChannelRoomConfigInterfacePtr create a00106.html aeef270d33475f1701b39ac9e5af95fa3 () static SharedPtr< BaseChannelRoomConfigInterfaceSubclass > create a00106.html a5fe705bbfb8cd3e73873e5b9c4da0916 () BaseChannelRoomConfigInterface a00106.html ae45dcf4efdc20e15677ea8da127e5936 () Tp::BaseChannelCallType a00098.html Tp::AbstractChannelInterface Callback2< QDBusObjectPath, const QVariantMap &, DBusError * > CreateChannelCallback a00098.html ac07aebbc79c8156ccc33aff6545030bb Callback2< bool, const QVariantMap &, DBusError * > EnsureChannelCallback a00098.html aecbedb4ac782ace1caa2172d687bc5c8 Callback1< void, DBusError * > AcceptCallback a00098.html a1e06369a85d65ae0abc26d9b7208a3dc Callback4< void, uint, const QString &, const QString &, DBusError * > HangupCallback a00098.html a92a059065795e2f6ddc81112016ff17e Callback1< void, DBusError * > SetRingingCallback a00098.html aa23cff3beeaccc712f58704c1f95a130 Callback1< void, DBusError * > SetQueuedCallback a00098.html a52d27c3eefc2296619e0aaa12fe7682d Callback4< QDBusObjectPath, const QString &, const Tp::MediaStreamType &, const Tp::MediaStreamDirection &, DBusError * > AddContentCallback a00098.html ac9338f367499d39ece3113e62235d989 virtual ~BaseChannelCallType a00098.html a7b16dd81172d04bed97ab113f5242434 () QVariantMap immutableProperties a00098.html a48de04bbe2e4f276408f0a0f7cfb6f44 () const Tp::ObjectPathList contents a00098.html acb945a507abe8a19d877ba0cd56bdda5 () QVariantMap callStateDetails a00098.html add847858dd8077bcf780dd93307ae884 () uint callState a00098.html afc8dc6dbdacb476d5c9141c71e9baac8 () uint callFlags a00098.html a0a34acf72c48f995988ee1fd430cad06 () Tp::CallStateReason callStateReason a00098.html a9357e20bfcdf8e91d41ef9b9de890e87 () bool hardwareStreaming a00098.html a967948a331c6e93b15496e5666400ac0 () Tp::CallMemberMap callMembers a00098.html a830ecbd4b9942a57c1e77223dc065550 () Tp::HandleIdentifierMap memberIdentifiers a00098.html adec6316a47ece4ba30708b71afc19f45 () uint initialTransport a00098.html a2d60828513b740ea23544bffab943095 () bool initialAudio a00098.html ad8f445fcee6442ecb2c55fac5a295908 () bool initialVideo a00098.html a8fefccc031c25a6d90af381664b5f135 () QString initialAudioName a00098.html aebc9a593388db8ac2d4b985ba9905a9e () QString initialVideoName a00098.html ae26defd58c160bc943999d4f1673139f () bool mutableContents a00098.html af091c8d944e83d5e04c02dd6af8319ea () void setAcceptCallback a00098.html a6d307dad19400b49d0798b1e82c70b10 (const AcceptCallback &cb) void setHangupCallback a00098.html a2b3eefcceaf4bc8c84811ad2a676382a (const HangupCallback &cb) void setSetRingingCallback a00098.html a09236fe89bff106795694a0c951218b5 (const SetRingingCallback &cb) void setSetQueuedCallback a00098.html ac5ac51604f427a2cada5b049155d23a9 (const SetQueuedCallback &cb) void setAddContentCallback a00098.html a32ccd7885503181abc894304005bced1 (const AddContentCallback &cb) void setCallState a00098.html af031c13283dd8ec35060b8776fa9ce65 (const Tp::CallState &state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails) void setMembersFlags a00098.html a63cba116ddb040c76c0b0e03c97033e9 (const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason) BaseCallContentPtr addContent a00098.html a44331dfad31b7140de6949f584001e7b (const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) void addContent a00098.html af69ce636cbeeb7678fc6f6f901ed6bf8 (BaseCallContentPtr content) static BaseChannelCallTypePtr create a00098.html ae17bf6d0551d70268bb90df55215da25 (BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false) static SharedPtr< BaseChannelCallTypeSubclass > create a00098.html a9a56c400f73aaa8c4c2b1fca9812cc85 (BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false) CreateChannelCallback createChannel a00098.html aa31c72050b421f410535aecaca1848dc EnsureChannelCallback ensureChannel a00098.html afb9b0e4801da733acd44f125ddc8c160 Tp::RequestableChannelClassList requestableChannelClasses a00098.html a54127bbdbbfc7ae5026adb092f52c7b7 BaseChannelCallType a00098.html a65d5d4c31d1cd63a5938d3b22b1ed091 (BaseChannel *channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents=false) Tp::BaseChannelHoldInterface a00103.html Tp::AbstractChannelInterface Callback3< void, const Tp::LocalHoldState &, const Tp::LocalHoldStateReason &, DBusError * > SetHoldStateCallback a00103.html a2eaf8d361f52494b3b45ebe9fb005e48 void holdStateChanged a00103.html a9d11a9a550cf7f9930153fde509a7b41 (const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason) virtual ~BaseChannelHoldInterface a00103.html abc2766de7780a64e4a71db1d77591a33 () QVariantMap immutableProperties a00103.html a0b318be645db94c8727f4e928fe6c00b () const Tp::LocalHoldState getHoldState a00103.html a410cb60791afb47248927c645d39ad29 () const Tp::LocalHoldStateReason getHoldReason a00103.html a353ae248a93a25bd287ebdca3de092c1 () const void setHoldState a00103.html a06ad5937c32a9f06173e1789f7e2f6f8 (const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason) void setSetHoldStateCallback a00103.html ae6fbac76f2535427d3131940033ddd86 (const SetHoldStateCallback &cb) static BaseChannelHoldInterfacePtr create a00103.html a778b3017b4cc591b8a367f54c8bc8bc2 () static SharedPtr< BaseChannelHoldInterfaceSubclass > create a00103.html a6ca48492b362b66645d26724d0b12dbc () Tp::BaseChannelMergeableConferenceInterface a00104.html Tp::AbstractChannelInterface Callback2< void, const QDBusObjectPath &, DBusError * > MergeCallback a00104.html a44e1a8d16bb73ee56c4b9fd533c8ac74 virtual ~BaseChannelMergeableConferenceInterface a00104.html a399c1e485fec9b2cab6f13ac11b9dc9e () QVariantMap immutableProperties a00104.html a6f9c9db6b648f6a7988f4d88dba37f3c () const void merge a00104.html a9d9849c09d6b395ede6a4a763100900e (const QDBusObjectPath &channel) void setMergeCallback a00104.html aca376732c337ea728a1e4dadf6197e16 (const MergeCallback &cb) static BaseChannelMergeableConferenceInterfacePtr create a00104.html afa0168573ed44343c70c5e5ec0c710f7 () static SharedPtr< BaseChannelMergeableConferenceInterfaceSubclass > create a00104.html ae1e6c306bf3a60a69ea88de1afb6be13 () Tp::BaseChannelSplittableInterface a00113.html Tp::AbstractChannelInterface Callback1< void, DBusError * > SplitCallback a00113.html a56c7f82dcfd2d6751c720b5f08d48be0 virtual ~BaseChannelSplittableInterface a00113.html a1717462f6285b64379b0bbf881f7aaf2 () QVariantMap immutableProperties a00113.html a750836f1238b585e0cc0e3563b5f4bf0 () const void split a00113.html aa52237ebfce7d4bdce923d929c2ec320 () void setSplitCallback a00113.html a705f1f9576a0dbfade7a521a75068414 (const SplitCallback &cb) static BaseChannelSplittableInterfacePtr create a00113.html a3b907573538970a164024795936bbcc7 () static SharedPtr< BaseChannelSplittableInterfaceSubclass > create a00113.html a2fbc101bc0bec644fa638d567bf8a92d () Tp::BaseChannelConferenceInterface a00101.html Tp::AbstractChannelInterface virtual ~BaseChannelConferenceInterface a00101.html aaaad51d5ff043bf6ed501568746d113e () QVariantMap immutableProperties a00101.html aaf0d4a2d79f56b51105b18faf3f066e9 () const Tp::ObjectPathList channels a00101.html a92225c2a89610c35770aa76627c07e66 () const Tp::ObjectPathList initialChannels a00101.html aa2e4dfb423535be80b27473d670f2ed9 () const Tp::UIntList initialInviteeHandles a00101.html a2b4c213e97ae83d024e0c19ecf96142c () const QStringList initialInviteeIDs a00101.html aa18e9d7cf599b8d0d1971c096c98fbed () const QString invitationMessage a00101.html aa3d345bc903bd4558b29451f57656410 () const ChannelOriginatorMap originalChannels a00101.html ad39980722e5a4ddaa7d530c43f6004d4 () const void mergeChannel a00101.html a789e47e118be1254d17593f3becb23ac (const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties) void removeChannel a00101.html aa8efacf687dc107b36373f2a5b71182d (const QDBusObjectPath &channel, const QVariantMap &details) static BaseChannelConferenceInterfacePtr create a00101.html abee703bc4a328bb894535a07827cd1ae (Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap()) static SharedPtr< BaseChannelConferenceInterfaceSubclass > create a00101.html a17642c1d92a481d3859c4b7e7d95acfc (Tp::ObjectPathList initialChannels=Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles=Tp::UIntList(), QStringList initialInviteeIDs=QStringList(), QString invitationMessage=QString(), ChannelOriginatorMap originalChannels=ChannelOriginatorMap()) Tp::BaseChannelSMSInterface a00112.html Tp::AbstractChannelInterface Callback2< void, const Tp::MessagePartList &, DBusError * > GetSMSLengthCallback a00112.html ae67e97e156b8c2b23086cf7b221e71b1 void smsChannelChanged a00112.html ab91abd2e9f9ad17a4d0bc5cb8a5aafae (bool smsChannel) virtual ~BaseChannelSMSInterface a00112.html ab386e1bdf86b577a4526e99789baf20d () QVariantMap immutableProperties a00112.html a14455e788530d4303f5d58f21f7d2d46 () const void setGetSMSLengthCallback a00112.html a17ca068c24a2e0df3e4edcf2b3b904d2 (const GetSMSLengthCallback &cb) bool flash a00112.html a25c20e0458923827e9b3a7b15dde60fc () const bool smsChannel a00112.html a11c6671800476c9c239844679d80dd47 () const static BaseChannelSMSInterfacePtr create a00112.html a29ae3922cf18040e69a7916cefde4343 (bool flash, bool smsChannel) static SharedPtr< BaseChannelSMSInterfaceSubclass > create a00112.html a786b29dfdd91c5b9d37f359d0d81db73 (bool flash, bool smsChannel) Tp::BaseConnectionManager a00122.html Tp::DBusService void newConnection a00122.html aec924f0c98fe84e2cede63b8180e0bd8 (const BaseConnectionPtr &connection) virtual ~BaseConnectionManager a00122.html aba6ca3e31d6109efcad481b9331fa1ad () QString name a00122.html a55b2067ca06f6337b00fd6cb35c206b8 () const QVariantMap immutableProperties a00122.html a96ca8a6b55c923e1baa2f3096aa1443e () const QList< BaseProtocolPtr > protocols a00122.html a05108bc2d77df85aa6ff8481ba706813 () const BaseProtocolPtr protocol a00122.html ae12d300da9b4da40fc99d126719a511f (const QString &protocolName) const bool hasProtocol a00122.html a2c1e8bfaf1ba1f6e5eede2d0e02915c9 (const QString &protocolName) const bool addProtocol a00122.html a9e545502f9148154e5321a13489d3c14 (const BaseProtocolPtr &protocol) bool registerObject a00122.html adf85fbe7d273e9628be2380a8e44ef38 (DBusError *error=NULL) QList< BaseConnectionPtr > connections a00122.html ac18978a6d9d550d39db2be9f677fc9ea () const static BaseConnectionManagerPtr create a00122.html a23e48db54811831a056e80145d302d12 (const QString &name) static SharedPtr< BaseConnectionManagerSubclass > create a00122.html aec68a4f81bce19eef5705be2b7c37263 (const QString &name) static BaseConnectionManagerPtr create a00122.html ac8c4d4839684a2ba546fb55958dcd904 (const QDBusConnection &dbusConnection, const QString &name) static SharedPtr< BaseConnectionManagerSubclass > create a00122.html aae6a7adade939b4ae77a53748c24a5ba (const QDBusConnection &dbusConnection, const QString &name) BaseConnectionManager a00122.html acbfd3dc14d56b58f708bc14f2a4b436b (const QDBusConnection &dbusConnection, const QString &name) virtual bool registerObject a00122.html ab5e0b85ce1a352a07d43566681602a2b (const QString &busName, const QString &objectPath, DBusError *error) Tp::BaseConnection a00115.html Tp::DBusService Callback2< BaseChannelPtr, const QVariantMap &, DBusError * > CreateChannelCallback a00115.html a89e5f0bfdeaae9f1cb0407f03419136e Callback1< void, DBusError * > ConnectCallback a00115.html ad70a77b0280e420877d9fc8329cd9461 Callback3< QStringList, uint, const Tp::UIntList &, DBusError * > InspectHandlesCallback a00115.html a6364e793a9635dba67f39b024a656cd1 Callback3< Tp::UIntList, uint, const QStringList &, DBusError * > RequestHandlesCallback a00115.html a0e7df882652b96dad66b9f00e62edf18 void disconnected a00115.html a3a7ab1dd564ff6b597f7d9d712b9a8ad () virtual ~BaseConnection a00115.html a57a7563e802eeab218aaa461b34b1d25 () QString cmName a00115.html adef16d41150bd74cc7ea2d4cd5e25906 () const QString protocolName a00115.html a31a94890e53adb5fe91c3eb568729f9e () const QVariantMap parameters a00115.html a7c8f844d9b9a5f41d4305828b12d9139 () const QVariantMap immutableProperties a00115.html a8bd12c5e682f4c70a9449e41f2d7af02 () const uint selfHandle a00115.html ac4cc741d73791bec6560a1b7bb8adec3 () const void setSelfHandle a00115.html ac3d00009f5b6b48d5e530c1edb274299 (uint selfHandle) QString selfID a00115.html a4f2b32af841b3689542393374dbe85a1 () const void setSelfID a00115.html afc679de44fd34369632e6d364a717d48 (const QString &selfID) void setSelfContact a00115.html a6205fbddb2812004c19b44ba738caeef (uint selfHandle, const QString &selfID) uint status a00115.html a3fee3e27c6d9f20d3fc844918d268d8a () const void setStatus a00115.html a7092da5052819463debc1576ac4a07bc (uint newStatus, uint reason) void setCreateChannelCallback a00115.html a097f855e8a5829322a9d4dba3bda8784 (const CreateChannelCallback &cb) BaseChannelPtr createChannel a00115.html ab8e32936838b8309f8f72c848aafe089 (const QVariantMap &request, bool suppressHandler, DBusError *error) void setConnectCallback a00115.html a54b22553e2af8382131410637d115692 (const ConnectCallback &cb) void setInspectHandlesCallback a00115.html a8f8fadabf71d515ab770e1634eb04794 (const InspectHandlesCallback &cb) QStringList inspectHandles a00115.html aaeb77fd6d08aaa02155de923952dd8a2 (uint handleType, const Tp::UIntList &handles, DBusError *error) void setRequestHandlesCallback a00115.html a25699341f483dcb26baa0d210a7adc50 (const RequestHandlesCallback &cb) Tp::UIntList requestHandles a00115.html ab09fe07c2690173f3f75e5418aa186d3 (uint handleType, const QStringList &identifiers, DBusError *error) Tp::ChannelInfoList channelsInfo a00115.html a7851492d9a107e728a884f3c0038a226 () Tp::ChannelDetailsList channelsDetails a00115.html aefdafcf29876fe91aab2426641ec84d6 () BaseChannelPtr ensureChannel a00115.html ad0fdc3731dc4c2e83504551f9d5837a2 (const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error) void addChannel a00115.html ad2df5288fd214e4abc6554b69eb5908b (BaseChannelPtr channel, bool suppressHandler=false) QList< AbstractConnectionInterfacePtr > interfaces a00115.html a9224c1307c7fc7012628dc6744a83e1e () const AbstractConnectionInterfacePtr interface a00115.html abf2720e76a139322d85a55d96b6f4deb (const QString &interfaceName) const bool plugInterface a00115.html a693e7ed25ce3727c314b0ff8d2af0e8b (const AbstractConnectionInterfacePtr &interface) bool registerObject a00115.html aa45975c5a628aad418385ef42f4f2dae (DBusError *error=NULL) virtual QString uniqueName a00115.html a95b0eacbb0cb6a2ef5a6a04ae817f8e7 () const static BaseConnectionPtr create a00115.html a84186ce9113561539e34841a7012227b (const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus()) static SharedPtr< BaseConnectionSubclass > create a00115.html a81d93e1db37a33de8fc62610aec6b754 (const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus()) BaseConnection a00115.html acddfd7f573107d6acdfdbe8538089bbc (const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap &parameters) virtual bool registerObject a00115.html a33d8b5973a926e504fefc724e63898e0 (const QString &busName, const QString &objectPath, DBusError *error) virtual bool matchChannel a00115.html acde76105556c26692bbd5ed8aac081c2 (const Tp::BaseChannelPtr &channel, const QVariantMap &request, Tp::DBusError *error) Tp::AbstractConnectionInterface a00067.html Tp::AbstractDBusServiceInterface AbstractConnectionInterface a00067.html a8d1e1067c880ec0eade290b0d25ac6b6 (const QString &interfaceName) virtual ~AbstractConnectionInterface a00067.html a6558f11eddee37d80d964ed3b15fc260 () Tp::BaseConnectionRequestsInterface a00123.html Tp::AbstractConnectionInterface void newChannels a00123.html aa6b06b6cee5174ab137a4384774a25e5 (const Tp::ChannelDetailsList &channels) void channelClosed a00123.html a43b54e0b82b36ea6b4e5b306c7f237b4 (const QDBusObjectPath &removed) virtual ~BaseConnectionRequestsInterface a00123.html a6d47e4654cb7aeef52738ec7f1a25638 () QVariantMap immutableProperties a00123.html a96e79ee2c9cef27708f5e8a543cb3273 () const void ensureChannel a00123.html ae9de9bbcda1cace829dd14d832e9418a (const QVariantMap &request, bool &yours, QDBusObjectPath &channel, QVariantMap &details, DBusError *error) void createChannel a00123.html a68250e692572522817998faf30ef91b5 (const QVariantMap &request, QDBusObjectPath &channel, QVariantMap &details, DBusError *error) static BaseConnectionRequestsInterfacePtr create a00123.html a037188a2cbc379010d4daf4628fd4b33 (BaseConnection *connection) static SharedPtr< BaseConnectionRequestsInterfaceSubclass > create a00123.html a95cdbb39fbeaaab87567948ebc1efaed (BaseConnection *connection) Tp::RequestableChannelClassList requestableChannelClasses a00123.html a0b06833bf48cc0041b909fcb8958943f BaseConnectionRequestsInterface a00123.html a531c29fd5bc0977644194c15dfe91cd9 (BaseConnection *connection) Tp::BaseConnectionContactsInterface a00121.html Tp::AbstractConnectionInterface Callback3< ContactAttributesMap, const Tp::UIntList &, const QStringList &, DBusError * > GetContactAttributesCallback a00121.html a45d54cc3723fd2b474f7e652670235d6 virtual ~BaseConnectionContactsInterface a00121.html a2b4712d93958f414a7c064201bdcc3f1 () QVariantMap immutableProperties a00121.html a92999566cef613f1a29ba752f82a9148 () const void setGetContactAttributesCallback a00121.html ae05550d5697ccf6b95d4cc1ec6074a29 (const GetContactAttributesCallback &cb) ContactAttributesMap getContactAttributes a00121.html a2087586695b56c027a24790969333e9f (const Tp::UIntList &handles, const QStringList &interfaces, DBusError *error) void setContactAttributeInterfaces a00121.html a0ae694be272303cc549864bc829821dd (const QStringList &contactAttributeInterfaces) static BaseConnectionContactsInterfacePtr create a00121.html a4e667a54088f755a02822a7f4b9c8b9b () static SharedPtr< BaseConnectionContactsInterfaceSubclass > create a00121.html a2705b2f2a3679333f858abe73a816460 () BaseConnectionContactsInterface a00121.html a31c5c913370a808e28ef0cc1069759fb () Tp::BaseConnectionSimplePresenceInterface a00124.html Tp::AbstractConnectionInterface Callback3< uint, const QString &, const QString &, DBusError * > SetPresenceCallback a00124.html ac6f1aa0688ce336d02a7e396cf34901f virtual ~BaseConnectionSimplePresenceInterface a00124.html a6e79b49adcc59bbaf3718e7db988b647 () QVariantMap immutableProperties a00124.html aa051aa882cbadc9aad02177ec5582826 () const Tp::SimpleStatusSpecMap statuses a00124.html ab5e1e0fcba7f0d04ae4f79360efd4d04 () const void setStatuses a00124.html a10c3a45de0bfd77880b2e6bbf0ead9e1 (const Tp::SimpleStatusSpecMap &statuses) uint maximumStatusMessageLength a00124.html a5bb567ce678b1f19d4cdcc74aaa828ed () const void setMaximumStatusMessageLength a00124.html ab97d98b932c6eaf4121ff25aebe394dd (uint maximumStatusMessageLength) void setSetPresenceCallback a00124.html a071ffe777d0356636d93efc782dcd6c9 (const SetPresenceCallback &cb) void setPresences a00124.html ad292196e3d077914e46e161c04fc102f (const Tp::SimpleContactPresences &presences) Tp::SimpleContactPresences getPresences a00124.html ac06ebc7369ecaa985858d0d82992f8b2 (const Tp::UIntList &contacts) static BaseConnectionSimplePresenceInterfacePtr create a00124.html ad7969a9fdca3e6706c04a5373dfd5abd () static SharedPtr< BaseConnectionSimplePresenceInterfaceSubclass > create a00124.html ad05c5b6c1758d96044fd7ceb0aec156e () BaseConnectionSimplePresenceInterface a00124.html a63cfc8ef8ef142dd9d9b40e22b1c9856 () Tp::BaseConnectionContactListInterface a00120.html Tp::AbstractConnectionInterface Callback3< Tp::ContactAttributesMap, const QStringList &, bool, DBusError * > GetContactListAttributesCallback a00120.html ac0f0eea8a5e4c9699fe0fbc5104978d9 Callback3< void, const Tp::UIntList &, const QString &, DBusError * > RequestSubscriptionCallback a00120.html af1f346fe750967fe9a6e15c671d9c1bb Callback2< void, const Tp::UIntList &, DBusError * > AuthorizePublicationCallback a00120.html acd763cd7300fb48dd73aeb34514dbbc0 Callback2< void, const Tp::UIntList &, DBusError * > RemoveContactsCallback a00120.html a8de8379df3056f4524bd1d46ec15ff84 Callback2< void, const Tp::UIntList &, DBusError * > UnsubscribeCallback a00120.html aaf80dbfff09ca56b4cd70dcc814fd98e Callback2< void, const Tp::UIntList &, DBusError * > UnpublishCallback a00120.html a7c1466d9c0214d18cac597929a90f468 Callback1< void, DBusError * > DownloadCallback a00120.html a3e27b4bf933464567c1b7204034ce1c9 virtual ~BaseConnectionContactListInterface a00120.html a09289bd6be1cc1cd17f2e01fb22672fb () QVariantMap immutableProperties a00120.html a04335742d8721b20aae01426089558c0 () const uint contactListState a00120.html a8b44a361b204c005e66984ad68b71882 () const void setContactListState a00120.html aa6f68deead8b3446cdbce0754e58a8c9 (uint contactListState) bool contactListPersists a00120.html a2863be4953af9c80e63ae17110a033a6 () const void setContactListPersists a00120.html a5a6764f7a312514f9d45deb964ce3fca (bool contactListPersists) bool canChangeContactList a00120.html a412f5db0ef1c2d1f05c50b631edbc189 () const void setCanChangeContactList a00120.html a5b07a3078598bdc26da4c208792eb82c (bool canChangeContactList) bool requestUsesMessage a00120.html a907685057b75835cea7ee41b60db8949 () const void setRequestUsesMessage a00120.html a2310ceba0f44ba25b45d2fb298f5a3d6 (bool requestUsesMessage) bool downloadAtConnection a00120.html ab78c13ebf8a10d0a7af0d2b2908399e7 () const void setDownloadAtConnection a00120.html a3d017e15cb7323205f5b2f9d16b1151e (bool downloadAtConnection) void setGetContactListAttributesCallback a00120.html a5c900a3d2d3103aa0899145cbc8a4f81 (const GetContactListAttributesCallback &cb) Tp::ContactAttributesMap getContactListAttributes a00120.html ae7a3355f62cce5e912eec71077cb83de (const QStringList &interfaces, bool hold, DBusError *error) void setRequestSubscriptionCallback a00120.html aa92a7d437756eee82c6238ae65352643 (const RequestSubscriptionCallback &cb) void requestSubscription a00120.html a499611a70788103f33fa380254e5c7a4 (const Tp::UIntList &contacts, const QString &message, DBusError *error) void setAuthorizePublicationCallback a00120.html a69172e6de5b5c33628ee3eb0dd6919b2 (const AuthorizePublicationCallback &cb) void authorizePublication a00120.html a065f0ba43b1175792ea343fa31b048c9 (const Tp::UIntList &contacts, DBusError *error) void setRemoveContactsCallback a00120.html a7c49a4a3d37ff23678a4c58cc3575654 (const RemoveContactsCallback &cb) void removeContacts a00120.html a31f02ac60f93721918ebe2b6551e3ec2 (const Tp::UIntList &contacts, DBusError *error) void setUnsubscribeCallback a00120.html a3d83897ee74e8a7574b644196d79d3e2 (const UnsubscribeCallback &cb) void unsubscribe a00120.html adaf35dce9d3b214883f8173d18ee3742 (const Tp::UIntList &contacts, DBusError *error) void setUnpublishCallback a00120.html addff80c027499a1e9b9d3cb92d853573 (const UnpublishCallback &cb) void unpublish a00120.html a63ed0293d5f66272559316792720c736 (const Tp::UIntList &contacts, DBusError *error) void setDownloadCallback a00120.html ad46c355f944444b07a50c7184fe0e281 (const DownloadCallback &cb) void download a00120.html a5b8a8ae480119b8f9ae8a884058aa847 (DBusError *error) void contactsChangedWithID a00120.html ab79aa1e59fb158a592c2e87939f4bdee (const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals) static BaseConnectionContactListInterfacePtr create a00120.html a34341b10cb8150bc9affaf13879de3b2 () static SharedPtr< BaseConnectionContactListInterfaceSubclass > create a00120.html a8fddfb82beed10647d0d01a05d08fb6a () BaseConnectionContactListInterface a00120.html abce9ee6c0b9ae4664507ec2849ada905 () Tp::BaseConnectionContactInfoInterface a00119.html Tp::AbstractConnectionInterface Callback2< Tp::ContactInfoMap, const Tp::UIntList &, DBusError * > GetContactInfoCallback a00119.html ab2bead55df25f20a3eaa015c82699cf0 Callback2< void, const Tp::UIntList &, DBusError * > RefreshContactInfoCallback a00119.html a86777ecf50f0fa9f0bb4eee76aa8b7e7 Callback2< Tp::ContactInfoFieldList, uint, DBusError * > RequestContactInfoCallback a00119.html a1e933d83c9433cd07059d6e4836c7719 Callback2< void, const Tp::ContactInfoFieldList &, DBusError * > SetContactInfoCallback a00119.html af4fe6af59fa31c929460a703f38e9065 virtual ~BaseConnectionContactInfoInterface a00119.html a6ff954ac600e992a4e4d5940ea53528e () QVariantMap immutableProperties a00119.html aa29671adb3caebd683b19c4c31270122 () const Tp::ContactInfoFlags contactInfoFlags a00119.html aa9f464b0f8d11aaf38ba5ad854b7a371 () const void setContactInfoFlags a00119.html a41e266c096c416d5ef56d3433e78077b (const Tp::ContactInfoFlags &contactInfoFlags) Tp::FieldSpecs supportedFields a00119.html a9756a339330ef1cc5fbf1a199a0e5bb8 () const void setSupportedFields a00119.html a8e67734f0c43dc20f6fb42ce05b094b9 (const Tp::FieldSpecs &supportedFields) void setGetContactInfoCallback a00119.html a139841da5407f410672de3df98e8a712 (const GetContactInfoCallback &cb) Tp::ContactInfoMap getContactInfo a00119.html a8c4411a29200f89cdb5f7f658c065972 (const Tp::UIntList &contacts, DBusError *error) void setRefreshContactInfoCallback a00119.html a75c446b2487350966312affcb4288034 (const RefreshContactInfoCallback &cb) void refreshContactInfo a00119.html ab8047182e1639b5b81e6d8d6084cba12 (const Tp::UIntList &contacts, DBusError *error) void setRequestContactInfoCallback a00119.html a1d2b85e2014320e811ff31e955e36825 (const RequestContactInfoCallback &cb) Tp::ContactInfoFieldList requestContactInfo a00119.html aacb0b4c3413b860f54c23deb77add33a (uint contact, DBusError *error) void setSetContactInfoCallback a00119.html a80bb698a3332a498ab129339a4489f62 (const SetContactInfoCallback &cb) void setContactInfo a00119.html aebdf5bdaea0a0642057ce69f7d62f8ce (const Tp::ContactInfoFieldList &contactInfo, DBusError *error) void contactInfoChanged a00119.html a71557081fd97a9db1ae4530e2004c782 (uint contact, const Tp::ContactInfoFieldList &contactInfo) static BaseConnectionContactInfoInterfacePtr create a00119.html aae90dc1ee7f60e031bfbc2e794ccff28 () static SharedPtr< BaseConnectionContactInfoInterfaceSubclass > create a00119.html a0894bfeb6e2725808278da8e701f6f30 () BaseConnectionContactInfoInterface a00119.html ac12a57407776fcd55e6b3cb234f09861 () Tp::BaseConnectionAddressingInterface a00116.html Tp::AbstractConnectionInterface Callback6< void, const QString &, const QStringList &, const QStringList &, Tp::AddressingNormalizationMap &, Tp::ContactAttributesMap &, DBusError * > GetContactsByVCardFieldCallback a00116.html aa20dbf4900b4c94f14dbe0ac015127f6 Callback5< void, const QStringList &, const QStringList &, Tp::AddressingNormalizationMap &, Tp::ContactAttributesMap &, DBusError * > GetContactsByURICallback a00116.html ad5e1454beaa8328331d7a760e8aab423 virtual ~BaseConnectionAddressingInterface a00116.html af91f7af857e9f20b3070b19b4b9b028b () QVariantMap immutableProperties a00116.html afe19c4c5d1c289b4e66a22b1b900c3a5 () const void setGetContactsByVCardFieldCallback a00116.html a8e01f9f3958354f8373d93be29857705 (const GetContactsByVCardFieldCallback &cb) void setGetContactsByURICallback a00116.html afc5751d57ddc8b0d5f4f7c9ee94b1699 (const GetContactsByURICallback &cb) static BaseConnectionAddressingInterfacePtr create a00116.html a926dbffa185c7c6373563c2f8df8b991 () static SharedPtr< BaseConnectionAddressingInterfaceSubclass > create a00116.html a1b8663d1b8c7dc4e79698b72b1f1aa81 () BaseConnectionAddressingInterface a00116.html adfccb0220940e58c5841157008bf9aa8 () Tp::BaseConnectionAliasingInterface a00117.html Tp::AbstractConnectionInterface Callback1< Tp::ConnectionAliasFlags, DBusError * > GetAliasFlagsCallback a00117.html ad5692bcc5982bb90219a1b2c567ad428 Callback2< QStringList, const Tp::UIntList &, DBusError * > RequestAliasesCallback a00117.html ae0eec92399fd193ae573c7dbb4c46c6c Callback2< Tp::AliasMap, const Tp::UIntList &, DBusError * > GetAliasesCallback a00117.html a1b368d819196fd04dff3978969809733 Callback2< void, const Tp::AliasMap &, DBusError * > SetAliasesCallback a00117.html ab4ddd65924eb6276b1cc866a6c408c19 virtual ~BaseConnectionAliasingInterface a00117.html a25f5c853a0243e1f22463c2cc46d7e0a () QVariantMap immutableProperties a00117.html a63381011308c2d6f7c5f74cc2c4b9794 () const void setGetAliasFlagsCallback a00117.html ad9b6835155f8812b05758eab41781115 (const GetAliasFlagsCallback &cb) Tp::ConnectionAliasFlags getAliasFlags a00117.html a095a5872e32fe387b12e0881133fc275 (DBusError *error) void setRequestAliasesCallback a00117.html aef1aeabf72d6930ad54ba9fa522fbed6 (const RequestAliasesCallback &cb) QStringList requestAliases a00117.html a2b8aa5affa090178525c7bb146388a10 (const Tp::UIntList &contacts, DBusError *error) void setGetAliasesCallback a00117.html af86f26fc918da707533386254d5402c5 (const GetAliasesCallback &cb) Tp::AliasMap getAliases a00117.html a7e1101ad2207b982f5b74c14fbde1c1b (const Tp::UIntList &contacts, DBusError *error) void setSetAliasesCallback a00117.html a417cf9935f2a3d43da182918c6804046 (const SetAliasesCallback &cb) void setAliases a00117.html a9c79978a9f1d8ed06812a4ebdcfa7e3e (const Tp::AliasMap &aliases, DBusError *error) void aliasesChanged a00117.html af06ef74d7b9f09c2840a1e789bfaa029 (const Tp::AliasPairList &aliases) static BaseConnectionAliasingInterfacePtr create a00117.html a6aba16132fd5780a681903091d16dc30 () static SharedPtr< BaseConnectionAliasingInterfaceSubclass > create a00117.html a9cc67cd849c0b36541e848f6792e8944 () BaseConnectionAliasingInterface a00117.html aabd833046918b0614bac9bfaa60ed330 () Tp::BaseConnectionAvatarsInterface a00118.html Tp::AbstractConnectionInterface Callback2< Tp::AvatarTokenMap, const Tp::UIntList &, DBusError * > GetKnownAvatarTokensCallback a00118.html a5c188ee34a43e236a9061793999fe9c0 Callback2< void, const Tp::UIntList &, DBusError * > RequestAvatarsCallback a00118.html ac763f5686b019a59bf54a2020caba909 Callback3< QString, const QByteArray &, const QString &, DBusError * > SetAvatarCallback a00118.html a949e25da450da20663390924da4f62af Callback1< void, DBusError * > ClearAvatarCallback a00118.html a70e40c4273ad84e782f6f2ab31997568 virtual ~BaseConnectionAvatarsInterface a00118.html a841d29420b2d9d23cb2145b0464e4ce2 () QVariantMap immutableProperties a00118.html aeeaac4e0aa3b38fe0a0ad24df84e4de8 () const AvatarSpec avatarDetails a00118.html ab9c6c26292ce434d07095ee97ffb5383 () const void setAvatarDetails a00118.html a9e0521eb8612ff6f12bb0b16a2d5da0e (const AvatarSpec &spec) void setGetKnownAvatarTokensCallback a00118.html a687564b710288ca723750ff1522a6224 (const GetKnownAvatarTokensCallback &cb) Tp::AvatarTokenMap getKnownAvatarTokens a00118.html a089f73065be4b3b2e355223bc1fb1c86 (const Tp::UIntList &contacts, DBusError *error) void setRequestAvatarsCallback a00118.html a67613ff98fbfe2fe15d2444ff911d257 (const RequestAvatarsCallback &cb) void requestAvatars a00118.html ac132414501a87065577ae7f0f47062f2 (const Tp::UIntList &contacts, DBusError *error) void setSetAvatarCallback a00118.html afa64de29bc65ab5fc8e0af5537f73851 (const SetAvatarCallback &cb) QString setAvatar a00118.html a7d01064812b2784d9cf566c9c4dedae7 (const QByteArray &avatar, const QString &mimeType, DBusError *error) void setClearAvatarCallback a00118.html afd942dd91c8347b330ee2f127fc443e8 (const ClearAvatarCallback &cb) void clearAvatar a00118.html afe52c63241ab390f16e72b7f6b4f7a43 (DBusError *error) void avatarUpdated a00118.html a46ddbbfc0429d4d2fa8118eb49b9b1ab (uint contact, const QString &newAvatarToken) void avatarRetrieved a00118.html a4af115dcec8777e315c1bf926be52643 (uint contact, const QString &token, const QByteArray &avatar, const QString &type) static BaseConnectionAvatarsInterfacePtr create a00118.html a3066614221a3bbfc72851499da20dde1 () static SharedPtr< BaseConnectionAvatarsInterfaceSubclass > create a00118.html a67f7fc5dd489e17f8fa483dcff34c0c1 () BaseConnectionAvatarsInterface a00118.html acf2324080362aba94f5f58e08aab4047 () Tp::BaseProtocol a00127.html Tp::DBusService Callback2< BaseConnectionPtr, const QVariantMap &, DBusError * > CreateConnectionCallback a00127.html a754a9cbbee89e10d007d54a822abbba9 Callback2< QString, const QVariantMap &, DBusError * > IdentifyAccountCallback a00127.html a5be1a3e566f6941789443b9eb5a7aa54 Callback2< QString, const QString &, DBusError * > NormalizeContactCallback a00127.html af08508c4bfaa09ce71698365c724754e virtual ~BaseProtocol a00127.html abe324f7382944c98357b745d1f447754 () QString name a00127.html a97d21acbee456b6a50ff9aa248e845c1 () const QVariantMap immutableProperties a00127.html aa89e38a5eafea9440fc5d6d36cadb0d5 () const QStringList connectionInterfaces a00127.html ac2855d193fda0733527fe0f4c838eb6c () const void setConnectionInterfaces a00127.html a0323131c57fb3919d97c0934ceb1e197 (const QStringList &connInterfaces) ProtocolParameterList parameters a00127.html a8dac258c1fcbbef9c1667f4a843ea3e9 () const void setParameters a00127.html a9230ce0069f1c5dc2718a38fd38b77c4 (const ProtocolParameterList &parameters) RequestableChannelClassSpecList requestableChannelClasses a00127.html af4d465b67497dc393459496397301ad6 () const void setRequestableChannelClasses a00127.html abf3f1adee60c6d6f0f33028dd2f11d9d (const RequestableChannelClassSpecList &rccSpecs) QString vcardField a00127.html a8d13a3ec36b3f8c5998267ea0e3e92d5 () const void setVCardField a00127.html a9c91b65251e69bc08b5dfbd6f3ed0418 (const QString &vcardField) QString englishName a00127.html ae23ef0315e4344677a960596b81bc6e8 () const void setEnglishName a00127.html a1cf142fe8cee7ae8510736809828659b (const QString &englishName) QString iconName a00127.html a32c5d745b28d679998ea6a3007e55368 () const void setIconName a00127.html a41376268d1583c1217395a15bfe6fd2f (const QString &iconName) QStringList authenticationTypes a00127.html a8f81226737b86dd7269bcb702484a4cb () const void setAuthenticationTypes a00127.html ac618edcd67b7528670da894c273e284c (const QStringList &authenticationTypes) void setCreateConnectionCallback a00127.html a02f0988bb7083dd8e9b20e8cb2350f51 (const CreateConnectionCallback &cb) Tp::BaseConnectionPtr createConnection a00127.html ad0733724fe51c059a0a503ddd70268ae (const QVariantMap &parameters, DBusError *error) void setIdentifyAccountCallback a00127.html a9c1e6b2e6601c459bd3cc52b4ca5f133 (const IdentifyAccountCallback &cb) QString identifyAccount a00127.html a4926c732f0d835b728b4b5a413797576 (const QVariantMap &parameters, DBusError *error) void setNormalizeContactCallback a00127.html a9416d4a97e23359fa7753a8c2a8f34b6 (const NormalizeContactCallback &cb) QString normalizeContact a00127.html ab3908229b44f3397dd6d0fe6d7463490 (const QString &contactId, DBusError *error) QList< AbstractProtocolInterfacePtr > interfaces a00127.html aa8c6220baf97b64a0efea933a124895d () const AbstractProtocolInterfacePtr interface a00127.html a9ed1d5f4f1e817f6bf81f8b7d0e55725 (const QString &interfaceName) const bool plugInterface a00127.html a9bc5a99e490f3b4858b7559b42ec8567 (const AbstractProtocolInterfacePtr &interface) static BaseProtocolPtr create a00127.html a13a02b2d82a1c4bcb7cbb86bc3ce9a2c (const QString &name) static SharedPtr< BaseProtocolSubclass > create a00127.html ab6877446aabf2122340bc73f0ccd0137 (const QString &name) static BaseProtocolPtr create a00127.html a25b4c1b77af3c1e5799bafb55de5fe5b (const QDBusConnection &dbusConnection, const QString &name) static SharedPtr< BaseProtocolSubclass > create a00127.html a57bfcbdedf90255f806640522369f461 (const QDBusConnection &dbusConnection, const QString &name) BaseProtocol a00127.html a8d922b26eec0e19a1487b1083be60d00 (const QDBusConnection &dbusConnection, const QString &name) virtual bool registerObject a00127.html a1484af076699ff225817248538e060cf (const QString &busName, const QString &objectPath, DBusError *error) Tp::AbstractProtocolInterface a00071.html Tp::AbstractDBusServiceInterface AbstractProtocolInterface a00071.html abb9aec5d7d64c5c2187c4a5923c2ef55 (const QString &interfaceName) virtual ~AbstractProtocolInterface a00071.html aef0831190fc807ba8c21b0abd2d5d0da () Tp::BaseProtocolAddressingInterface a00128.html Tp::AbstractProtocolInterface Callback3< QString, const QString &, const QString &, DBusError * > NormalizeVCardAddressCallback a00128.html aaf6153a1fc10de1cef1ef5296643d279 Callback2< QString, const QString &, DBusError * > NormalizeContactUriCallback a00128.html a0d76428929399db0e8f117520942ca6d virtual ~BaseProtocolAddressingInterface a00128.html af25c5f97835e751b26b79e1c6b2fb5f4 () QVariantMap immutableProperties a00128.html a5c134d4757b31480e8fbff83a1db79e6 () const QStringList addressableVCardFields a00128.html a9bdb55fef54a7af0df2b088c3529ccd2 () const void setAddressableVCardFields a00128.html ae82ada4d1f6f969045699872358652c9 (const QStringList &vcardFields) QStringList addressableUriSchemes a00128.html a29fdbb5b3f8f792039964aecbf59aa99 () const void setAddressableUriSchemes a00128.html aa655d34b029325d5bd38c207b8ab3df0 (const QStringList &uriSchemes) void setNormalizeVCardAddressCallback a00128.html a97231d17119828328c0ed4fb6e876d9b (const NormalizeVCardAddressCallback &cb) QString normalizeVCardAddress a00128.html a15ddf2ccf7e4d0f7ae7803c492c91d43 (const QString &vcardField, const QString &vcardAddress, DBusError *error) void setNormalizeContactUriCallback a00128.html a0e49a479f42c62eed624bcddb250f0f1 (const NormalizeContactUriCallback &cb) QString normalizeContactUri a00128.html aafa464e7e8b51d928bfd9706637f93fe (const QString &uri, DBusError *error) static BaseProtocolAddressingInterfacePtr create a00128.html a6aa0b03781d69091500002cfe897cf0f () static SharedPtr< BaseProtocolAddressingInterfaceSubclass > create a00128.html a28d3e56b9e74a6f704e10b64ae4496b3 () BaseProtocolAddressingInterface a00128.html ad1bce0dc314e162c895a4e797ccf28fc () Tp::BaseProtocolAvatarsInterface a00129.html Tp::AbstractProtocolInterface virtual ~BaseProtocolAvatarsInterface a00129.html a6c08a96f5a02b037ceeac239520bf536 () QVariantMap immutableProperties a00129.html ab4730d3a7b82a918a593c36802291a51 () const AvatarSpec avatarDetails a00129.html ac5fcc903abfc9f512bce3202533c1896 () const void setAvatarDetails a00129.html a58f77a409e97f7d453206fc1c142773c (const AvatarSpec &spec) static BaseProtocolAvatarsInterfacePtr create a00129.html a83e084786e3c283756344524220e075d () static SharedPtr< BaseProtocolAvatarsInterfaceSubclass > create a00129.html a01d93ed9dca936895aa1b8bc4ff01543 () BaseProtocolAvatarsInterface a00129.html aeba211a409db85d13633febe2f16bf52 () Tp::BaseProtocolPresenceInterface a00130.html Tp::AbstractProtocolInterface virtual ~BaseProtocolPresenceInterface a00130.html a37e421a5f126246ae6081db38920e9c5 () QVariantMap immutableProperties a00130.html a84d8cc22f1c37d2a57911d9b74e3ee76 () const PresenceSpecList statuses a00130.html abfda554023305d87655cc38d7d24c12f () const void setStatuses a00130.html ac03a1e1616bc96cd334f7c63c3831eb5 (const PresenceSpecList &statuses) static BaseProtocolPresenceInterfacePtr create a00130.html af79b5416be145c84aab70c051280aa03 () static SharedPtr< BaseProtocolPresenceInterfaceSubclass > create a00130.html ad9e2fca08c8f7335e7e8d87d74edadf1 () BaseProtocolPresenceInterface a00130.html a7d39850098f393d2d0b4174d6462dda4 () Tp::CallChannel a00140.html Tp::Channel void callStateChanged a00140.html a20ee5987f101b17d51d0aa0728e8c422 (Tp::CallState state) void callFlagsChanged a00140.html abe3fdb9e12b37fdb160a7fcb15e3bcf2 (Tp::CallFlags flags) void remoteMemberFlagsChanged a00140.html a8924b3eda5dedaffa276563196e31564 (const QHash< Tp::ContactPtr, Tp::CallMemberFlags > &remoteMemberFlags, const Tp::CallStateReason &reason) void remoteMembersRemoved a00140.html a4ebd0813e1ac1946bad783f968f00d2e (const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason) void contentAdded a00140.html acd83ab0d7c600f7316e30cd66398d5b3 (const Tp::CallContentPtr &content) void contentRemoved a00140.html a2e40925e9a10f57cec4bcbdc3b7f24c7 (const Tp::CallContentPtr &content, const Tp::CallStateReason &reason) void localHoldStateChanged a00140.html a33820c267894971e550a6bc7b848db0c (Tp::LocalHoldState state, Tp::LocalHoldStateReason reason) void groupFlagsChanged a00171.html ad89d6ce74c58ebf61a4926a1de357abe (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed) void groupCanAddContactsChanged a00171.html ab9efd229d37f6e6004ac5ff3f582d6ee (bool canAddContacts) void groupCanRemoveContactsChanged a00171.html a67c5eef9ac7d326959dd42d5a7df7faa (bool canRemoveContacts) void groupCanRescindContactsChanged a00171.html a41dacc664ff47e165c4771529dfcf133 (bool canRescindContacts) void groupMembersChanged a00171.html a9a19634088f78c3fb81fd166df72739e (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details) void groupHandleOwnersChanged a00171.html a64255c824c71e3bf3db54ab1bcfd7fe6 (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed) void groupSelfContactChanged a00171.html af49ad76277e06b7ebf82e1577275a483 () void conferenceChannelMerged a00171.html ae9863051758cc3f27b5fdcd3054e99e0 (const Tp::ChannelPtr &channel) void conferenceChannelRemoved a00171.html a126dc12155e5cb8f27177d563da5ff6a (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details) virtual ~CallChannel a00140.html a5eb52cf42809d04f47ae40323ff0d364 () bool handlerStreamingRequired a00140.html a16b5201603c2fa27debee12e38f3c4c7 () const StreamTransportType initialTransportType a00140.html aa36c7fc6959223a29d42b981b3f8c30f () const bool hasInitialAudio a00140.html ae604021a45998e02dd2f995757ef13bd () const bool hasInitialVideo a00140.html a6a9e174152c95ee9889308c2d0d8ecec () const QString initialAudioName a00140.html a245257c5d657bb1786027d48f894549a () const QString initialVideoName a00140.html a6db694786597d739eec23b09300b586c () const bool hasMutableContents a00140.html ae8968da112538fbd3437095869971b72 () const PendingOperation * setRinging a00140.html a979b738e62a952b03de72c0714fe4f6e () PendingOperation * setQueued a00140.html a433d41012e561dc2a745fff45a9b3cfd () PendingOperation * accept a00140.html ad4d70fbcbb694ef8f9e3099bd95503f2 () PendingOperation * hangup a00140.html a86a247081faf23709252ecc1d8e64f1d (CallStateChangeReason reason=CallStateChangeReasonUserRequested, const QString &detailedReason=QString(), const QString &message=QString()) CallState callState a00140.html a5590d677ac201876056418e9f89daea3 () const CallFlags callFlags a00140.html a573cef951cfb1ff9db3e5a82fc730e97 () const CallStateReason callStateReason a00140.html af4de4f8bd11bb4e3160a7b27cdc7d7b4 () const QVariantMap callStateDetails a00140.html a996300f27f632d0e1b10df66bb5fc76b () const Contacts remoteMembers a00140.html aa1468ea101344800bff47eb5ceafb408 () const CallMemberFlags remoteMemberFlags a00140.html aa6802bb3ccba31555d4e51fe4f0902b8 (const ContactPtr &member) const CallContents contents a00140.html aaaf47fbc2f8dcb535fabeb1291d9d45e () const CallContents contentsForType a00140.html ac69beea4a26feab6bf71bc23a453dafa (MediaStreamType type) const CallContentPtr contentByName a00140.html a1d33d777b6d8874171e50708856a0f6e (const QString &contentName) const PendingCallContent * requestContent a00140.html a810b9a62be218ddedf9592167979638d (const QString &name, MediaStreamType type, MediaStreamDirection direction) LocalHoldState localHoldState a00140.html aede2a1234654a5d1044ddf4dfefb3df0 () const LocalHoldStateReason localHoldStateReason a00140.html a1bfc67452494081f5525c6a96b239981 () const PendingOperation * requestHold a00140.html a19fcb71d9327bb6876b5c8dec9f1e00c (bool hold) virtual ~Channel a00171.html a985547027af2a72e3feb25d2ccf087a8 () ConnectionPtr connection a00171.html aa30315c7f2480e346ee8943df982c212 () const QVariantMap immutableProperties a00171.html a0446ca8a0fe4251d5c0e9065304b0d94 () const QString channelType a00171.html a9bbf9b2886d305548677d8821a34bd50 () const HandleType targetHandleType a00171.html a42c98d6ff979b5fdf9778ddc777373fe () const uint targetHandle a00171.html a799b68a6d9a24aa4433e95baeb54cc12 () const QString targetId a00171.html a7a07f98077f3f9f133b7f136c84c3670 () const ContactPtr targetContact a00171.html a7769265d5da24e22e1b6a23cdb99c9ae () const bool isRequested a00171.html a6d96df8e1de97a087f7ae0f5333f3eab () const ContactPtr initiatorContact a00171.html ae283517935f22e7a21853de03c889ff7 () const PendingOperation * requestClose a00171.html acb1a800352ab8cec80aa2035fe803e15 () PendingOperation * requestLeave a00171.html a6897e0b59c5f1284707c904fe95e6be2 (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone) bool isConference a00171.html a2a361e19f4f97245d8990ade3d71e0b9 () const Contacts conferenceInitialInviteeContacts a00171.html a9eb6776df574ad5eac3ed217fbcbf3a2 () const QList< ChannelPtr > conferenceChannels a00171.html a1534e58ff1068bf6ca029a03ba7dd134 () const QList< ChannelPtr > conferenceInitialChannels a00171.html a3c01542f154d8dd3215808b0f581cccb () const QHash< uint, ChannelPtr > conferenceOriginalChannels a00171.html ab563fa0d9e7202c9a0661b45e2bcc54b () const bool supportsConferenceMerging a00171.html a060f03903441f532ab3e10d2782b8ec4 () const PendingOperation * conferenceMergeChannel a00171.html a5208dbc6f39e04b66b364106ce07599c (const ChannelPtr &channel) bool supportsConferenceSplitting a00171.html a87091c215b2093fd699e1556f365e1cb () const PendingOperation * conferenceSplitChannel a00171.html a5ea6a3a44618b95a6e71ce72e752792b () ChannelGroupFlags groupFlags a00171.html abbee48987796764e3e3772ce995c010e () const bool groupCanAddContacts a00171.html a6cb2dbd3acece5a370c7ab99b80f34e6 () const bool groupCanAddContactsWithMessage a00171.html acae34246b4e5acf9a6275a450f3eba73 () const bool groupCanAcceptContactsWithMessage a00171.html af014b62a43660d2163d2b5f8f3621c7d () const PendingOperation * groupAddContacts a00171.html acc945279bd4566ffb4ba8c0f904e50b7 (const QList< ContactPtr > &contacts, const QString &message=QString()) bool groupCanRescindContacts a00171.html a98b233d8c741adf56d628945dee5878f () const bool groupCanRescindContactsWithMessage a00171.html a09810a8beacdcec192979eda2dc092b2 () const bool groupCanRemoveContacts a00171.html a5c5490d743c142adf8d5703e2ed6c2d0 () const bool groupCanRemoveContactsWithMessage a00171.html af9cbc61a3f06c254b5b9e944a1125181 () const bool groupCanRejectContactsWithMessage a00171.html a0cb2eec67f7bbe6eb9cdfc9b01e116b0 () const bool groupCanDepartWithMessage a00171.html a59e3f480718aef14e38569ccfc2dba64 () const PendingOperation * groupRemoveContacts a00171.html a15983f21a04226f730345bf4d1b8f22e (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone) Contacts groupContacts a00171.html a65f219d7a97d7b838d3a638899329eae (bool includeSelfContact=true) const Contacts groupLocalPendingContacts a00171.html a3e4d1b48d36dcabc82db17e4f91f1557 (bool includeSelfContact=true) const Contacts groupRemotePendingContacts a00171.html ae856118e1634348a5f6036b78fe61e87 (bool includeSelfContact=true) const GroupMemberChangeDetails groupLocalPendingContactChangeInfo a00171.html aa7476d5f3c85953e319ba110ffac59bd (const ContactPtr &contact) const GroupMemberChangeDetails groupSelfContactRemoveInfo a00171.html a153d105e41f89f062c6d479232f8d61f () const bool groupAreHandleOwnersAvailable a00171.html a9bd2bdb1dd943e9b8ffe9e4b849bc048 () const HandleOwnerMap groupHandleOwners a00171.html ae531e432ebe3cff7f922ea7f52117a09 () const bool groupIsSelfContactTracked a00171.html a9501cc64ddbfeef7be864554f801193e () const ContactPtr groupSelfContact a00171.html abff3edca07f40572b69ab1eb40b6b160 () const StatefulDBusProxy a00521.html a7632f926d92300e92aaa8fd48c431185 (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore) virtual ~StatefulDBusProxy a00521.html a57018959bb419e2ad393a8300857b868 () OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (Channel *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static CallChannelPtr create a00140.html adf1b8153cb99c7e0ab4fbdedf70fc559 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static ChannelPtr create a00171.html ab9e80e6c7d574f9f853cf6c47801da72 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static QString uniqueNameFrom a00521.html a61e8c614eaf20f5d52eb4b17f060369a (const QDBusConnection &bus, const QString &wellKnownOrUnique) static QString uniqueNameFrom a00521.html a87d6063f9fa84aa8ccae110ceacffd40 (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message) static const Feature FeatureCore a00140.html a644391eb4161f82651ea0ceb3b701cd6 static const Feature FeatureCallState a00140.html a2c540e6a86bdd05a819deac4161c07c6 static const Feature FeatureCallMembers a00140.html acb2c8f6dcf6c6f0919dd75a09c0e5adf static const Feature FeatureContents a00140.html aa0b46928e544859d57a610774674cb25 static const Feature FeatureLocalHoldState a00140.html ac5586ecd4ff602790865106023400846 static const Feature FeatureCore a00171.html a83c71f5ebefd137981583d8a1ba6773d static const Feature FeatureConferenceInitialInviteeContacts a00171.html a05706198daf9f5c92bfca2b29a0744c9 CallChannel a00140.html a650376c6144ca375bb8b5e04c7fb0a5a (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=CallChannel::FeatureCore) Channel a00171.html a52c89004f625576968767b4ede6e2a35 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) Client::ChannelInterface * baseInterface a00171.html a5d5a59388659f5cdf970055c6b4a4053 () const bool groupSelfHandleIsLocalPending a00171.html a44d7d66bbb9421d061f01938cf258955 () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f PendingOperation * groupAddSelfHandle a00171.html afaee8e55452c94e49fe234bb89097462 () Tp::CallContent a00141.html Tp::StatefulDBusProxy OptionalInterfaceFactory< CallContent > void streamAdded a00141.html a730ecd19f69b477d1abd6122280f4e6e (const Tp::CallStreamPtr &stream) void streamRemoved a00141.html a33d3906c43dee4754a07f776ffee6cb0 (const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason) ~CallContent a00141.html a81dfa25f2bed9528dcea07cd177c99fa () CallChannelPtr channel a00141.html ac83f175cdfca41498d7ec406f165213b () const QString name a00141.html ab749b4ec3712c14611471f681dd77954 () const MediaStreamType type a00141.html a78e94d077794f83a66c333f5e40112b7 () const CallContentDisposition disposition a00141.html a05c5728d5b6c44ad5be4f9142b4a17a4 () const CallStreams streams a00141.html a7eb03541695c8d135ddb29315806cd8f () const PendingOperation * remove a00141.html aea2066f03a84a9fa255572dfbe416be6 () bool supportsDTMF a00141.html ac10b5bf2b32fca6373e808f4e2a68110 () const PendingOperation * startDTMFTone a00141.html a4fd35fbaf1a8e50c9db645933f8a9f2c (DTMFEvent event) PendingOperation * stopDTMFTone a00141.html ac39ed3b9c60045241e9a61c719fe504d () OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (CallContent *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) Tp::PendingCallContent a00429.html Tp::PendingOperation ~PendingCallContent a00429.html aad443633b6e63a5ec6437cfe98cb6c84 () CallContentPtr content a00429.html adca21704795390ed7f1562efef398753 () const virtual ~PendingOperation a00443.html abd218ec414d17ad5ac7d408f28118b91 () bool isFinished a00443.html adb775a9b977ebb85e1ee0473669f45b0 () const bool isValid a00443.html a2b4e8575ad69c45cba0b2b070674c51f () const bool isError a00443.html a24440bb6d849af38b6e439cdca9e0707 () const QString errorName a00443.html a59a70ec4857b40d3355c2f336229216a () const QString errorMessage a00443.html ab17664ef188c153aed9fdac478ee8c76 () const void finished a00443.html addbb8c4462019ffdf19095a31da0cc7a (Tp::PendingOperation *operation) void setFinished a00443.html a6ba0dd198408611c3afd272cde6b6702 () void setFinishedWithError a00443.html ab7cc7962607ab6729ade1c5e6e070a53 (const QString &name, const QString &message) void setFinishedWithError a00443.html a0a69e6672e2b34b51cdcabd807b8236e (const QDBusError &error) PendingOperation a00443.html aa3181e83c48ad81316f4fb3d081528d0 (const SharedPtr< RefCounted > &object) SharedPtr< RefCounted > object a00443.html aa25a577804897fb7f395fccf0fe17dd2 () const Tp::CallStream a00156.html Tp::StatefulDBusProxy OptionalInterfaceFactory< CallStream > void localSendingStateChanged a00156.html ab254a1c43336929a7678ed220904e65e (Tp::SendingState localSendingState, const Tp::CallStateReason &reason) void remoteSendingStateChanged a00156.html a29f12406179eb4cb82bbaa783e32b745 (const QHash< Tp::ContactPtr, Tp::SendingState > &remoteSendingStates, const Tp::CallStateReason &reason) void remoteMembersRemoved a00156.html a9d8ca109af432c71c3f50d91e7d470f7 (const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason) ~CallStream a00156.html a5e4bd23d594e9bb1f654fc533b3326af () CallContentPtr content a00156.html a3405461a24cc3bb70de2aaa0fb420cb6 () const Contacts remoteMembers a00156.html a4890e0d9e521ed88388e3cedc51f62bd () const bool canRequestReceiving a00156.html a5c74c24f56b4db9c11c46c5e3ecb43fc () const SendingState localSendingState a00156.html a5d73874fa611e40d56d782163f38261b () const SendingState remoteSendingState a00156.html a01445c496aaa67139d5556756a8ec31e (const ContactPtr &contact) const PendingOperation * requestSending a00156.html a595c1041331e8c42d43359fbf744c315 (bool send) PendingOperation * requestReceiving a00156.html a2b0e5457e8e5bf927002302aa177b4d2 (const ContactPtr &contact, bool receive) OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (CallStream *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) Tp::AbstractFunctorCaller a00069.html void *(* HookType a00069.html aba2fa60903d8c7dba88ba99a060762ae )(void *) AbstractFunctorCaller a00069.html ae11043afca2123970051ad78d8f53ee0 (HookType invokeMethodHook) virtual ~AbstractFunctorCaller a00069.html a1c7a083774ed060319c7d723a5fe983e () virtual AbstractFunctorCaller * clone a00069.html a1908087a5de65fb714d0f4efe4b561ec () const =0 HookType invokeMethodHook a00069.html a9c85599e1af1aaede7da9c09c674d0c1 Tp::BaseFunctorCaller a00126.html T Functor Tp::AbstractFunctorCaller BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::BaseCallback a00093.html BaseCallback a00093.html a004ab8eb73e2d0593511b1a1991aa96c () BaseCallback a00093.html aa8692b22f524e662c0a61aa01cf0a2f2 (AbstractFunctorCaller *caller) BaseCallback a00093.html aa49c5a89c4e7522f57371d50babdd428 (const BaseCallback &other) virtual ~BaseCallback a00093.html af96b8c3466f6ea2e8cb78439278ddd9d () bool isValid a00093.html a9a9b46a8682d31b7a971c77de6bdc396 () const BaseCallback & operator= a00093.html ab4aec0842d5165e86985d354fe1e19db (const BaseCallback &other) AbstractFunctorCaller * caller a00093.html afd47da9a9492006d4b3a52f0e39dc036 Tp::FunctorCaller0 a00357.html BaseFunctorCaller< FunctorCaller0< Functor, R >, Functor > R ResultType a00357.html a5d54166916dec370260f238bce6a8948 R(* InvokeType a00357.html a07b83461ba2b027310de0ae359d595b0 )(AbstractFunctorCaller *) FunctorCaller0 a00357.html aace32e7725b71811b26057ee948cfb03 (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00357.html acdf41bc8cecf176c5788e2d7ec2f0add (AbstractFunctorCaller *call) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback0 a00132.html Tp::BaseCallback R(* FunctionType a00132.html a1a53a1bdd2562398260cf92adb267bbd )() R ResultType a00132.html a37184de7f3509ffe325b8fc168b83127 Callback0 a00132.html a5b803a5335e64214f46c296ca04f2b60 () Callback0 a00132.html a97a4fcaf510962662a29117a17f39e9c (const Functor &functor) ResultType operator() a00132.html af2ba1dad2f9d7cac0f1ba29a3216da0e () const Tp::FunctorCaller1 a00358.html BaseFunctorCaller< FunctorCaller1< Functor, R, Arg1 >, Functor > R ResultType a00358.html aed33744b5d003f695e45439ea92c8e5d R(* InvokeType a00358.html a5f54b2fea31185cf58811147670b647c )(AbstractFunctorCaller *, Arg1) FunctorCaller1 a00358.html ad9d8773059665921c27c74508ef20cbf (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00358.html a43b5b57ccf917ca934987d2b8da27ec0 (AbstractFunctorCaller *call, Arg1 a1) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback1 a00133.html R Arg1 Tp::BaseCallback R(* FunctionType a00133.html a8230a2cc29b294afe16a67df3fe6c69f )(Arg1) R ResultType a00133.html aaa892e46ea815e4111e776e2ca064303 Callback1 a00133.html a34091b70f384167901c9714be811ce98 () Callback1 a00133.html a2712579bbb75a7b7f37b9c3b703772a7 (const Functor &functor) ResultType operator() a00133.html ac5ae3231fffd5f6215930ad1fc507451 (Arg1 a1) const Tp::FunctorCaller2 a00359.html BaseFunctorCaller< FunctorCaller2< Functor, R, Arg1, Arg2 >, Functor > R ResultType a00359.html a6b4193c7f32542b22fec2b3e31b82541 R(* InvokeType a00359.html a30f618f401548e50e8764de2431beaa8 )(AbstractFunctorCaller *, Arg1, Arg2) FunctorCaller2 a00359.html adb6f9af7847df5b2420925a0bc521719 (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00359.html afaf7bac16db7aa2c015819039aa46d17 (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback2 a00134.html R Arg1 Arg2 Tp::BaseCallback R(* FunctionType a00134.html a1e77ba169e6dca8734fc30ec57a4ad3a )(Arg1, Arg2) R ResultType a00134.html a4d293f1019a514e53260ce5ea0ffd36c Callback2 a00134.html a1c111169d477e2facb20324a4aafcf25 () Callback2 a00134.html a2d1d16388904d39fbecb6e2c37b6a809 (const Functor &functor) ResultType operator() a00134.html a56b014b42e7768bb896cfce334493291 (Arg1 a1, Arg2 a2) const Tp::FunctorCaller3 a00360.html BaseFunctorCaller< FunctorCaller3< Functor, R, Arg1, Arg2, Arg3 >, Functor > R ResultType a00360.html a40763b1e97de7f7f468909e157c24bae R(* InvokeType a00360.html afbaf2f2cf4808332b1b453cb34cf7e32 )(AbstractFunctorCaller *, Arg1, Arg2, Arg3) FunctorCaller3 a00360.html ae2ac18445dcdc8e07dd9fc6f57e76131 (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00360.html ac29cadb66115a12e621c9d3680da43cc (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback3 a00135.html R Arg1 Arg2 Arg3 Tp::BaseCallback R(* FunctionType a00135.html a24035d13d34d70ee67420691323fc5a0 )(Arg1, Arg2, Arg3) R ResultType a00135.html a3f30e770a61a49affe78ead5ddd57acb Callback3 a00135.html a8fdd01c14f72a0866fb660a7eff5606b () Callback3 a00135.html a24955a1e427f7fb238e8628a1a684c3d (const Functor &functor) ResultType operator() a00135.html ad72e4a8b291532345bee86402f26627b (Arg1 a1, Arg2 a2, Arg3 a3) const Tp::FunctorCaller4 a00361.html BaseFunctorCaller< FunctorCaller4< Functor, R, Arg1, Arg2, Arg3, Arg4 >, Functor > R ResultType a00361.html ad4331657a2f073027e9cd4a4e2a1e6a0 R(* InvokeType a00361.html aae553295f3ed18c8911db8b25be3e7b6 )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4) FunctorCaller4 a00361.html ac2a1e2ae23a3a5623edcf2af5fe21b91 (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00361.html a4a827f9a920b9bcee2ce19ec49cd7e41 (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback4 a00136.html R Arg1 Arg2 Arg3 Arg4 Tp::BaseCallback R(* FunctionType a00136.html af1473687cd81be1c4832244e3920e334 )(Arg1, Arg2, Arg3, Arg4) R ResultType a00136.html aa2bf2940b6529b9936d90420f9332d90 Callback4 a00136.html ad9d33e67e0405e6080ffe9a7752a33a2 () Callback4 a00136.html a4cfb048db968e63bc081967a36285e32 (const Functor &functor) ResultType operator() a00136.html a9ee4fb9c6736ebc09b7193c3f4cfae7d (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const Tp::FunctorCaller5 a00362.html BaseFunctorCaller< FunctorCaller5< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5 >, Functor > R ResultType a00362.html a237a666ede6c5227ab05576ec1dcf4dd R(* InvokeType a00362.html a1e636b7585b1572383c86d7840fd710a )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5) FunctorCaller5 a00362.html a686eda1d44bd7d1118853bd9f4ca3e0e (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00362.html a7e81c232f78f0513c7f79bcfe422dffa (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback5 a00137.html R Arg1 Arg2 Arg3 Arg4 Arg5 Tp::BaseCallback R(* FunctionType a00137.html a6007de73cafab1bd98bbf4cb70d07785 )(Arg1, Arg2, Arg3, Arg4, Arg5) R ResultType a00137.html a42e6e0987abaaf57ed7be31c0b5d0676 Callback5 a00137.html adac369018e947d416cb222db942dfe30 () Callback5 a00137.html af46ebdd4ab21ef27c9a15de887c4cc22 (const Functor &functor) ResultType operator() a00137.html a08c0bf6ca597a70de62c558ff884e781 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const Tp::FunctorCaller6 a00363.html BaseFunctorCaller< FunctorCaller6< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >, Functor > R ResultType a00363.html a40cf29fcdaaa769ca9f7961c9eddff39 R(* InvokeType a00363.html a51fd0f5bcac496abeaa150fc0488515a )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) FunctorCaller6 a00363.html a42c365dc1441f28588cf5af626f9d6c2 (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00363.html a741c2d6adc592e2e52518712a389d170 (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback6 a00138.html R Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Tp::BaseCallback R(* FunctionType a00138.html a8f26f430a793770eb93125f1c0e54560 )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) R ResultType a00138.html ae9c1a588370fa4f57faa3b3dda7cbae6 Callback6 a00138.html a808ca3148e3f565790043c22d8e8c1a0 () Callback6 a00138.html a2344cc6db15323e676ba37f421fc8e6d (const Functor &functor) ResultType operator() a00138.html a97219be4db1487135dc289b69d992822 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const Tp::FunctorCaller7 a00364.html BaseFunctorCaller< FunctorCaller7< Functor, R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >, Functor > R ResultType a00364.html a3bc8c546dcfa229de1165b36148debe3 R(* InvokeType a00364.html a6b6d2122f6a9ee82613db4425caeb4de )(AbstractFunctorCaller *, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) FunctorCaller7 a00364.html a4988aed3dff9c8ecd29cefcba5c7d921 (const Functor &functor) BaseFunctorCaller a00126.html ae7dfb581985ab61e02dcc0d330ab6a90 (const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) virtual ~BaseFunctorCaller a00126.html a7843b46c04c2154675aff07fef12da27 () virtual AbstractFunctorCaller * clone a00126.html a24341dd2e9f04ba5e26df7c40c22226e () const static ResultType invoke a00364.html aad46983c636654dd272c2cdae29d7fd6 (AbstractFunctorCaller *call, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) Functor functor a00126.html ad60f187bb7c70ce7a51ee129aabc58dc Tp::Callback7 a00139.html Tp::BaseCallback R(* FunctionType a00139.html a2564e119fc4c30a60c199f4e28792a7a )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) R ResultType a00139.html ae544642279f02fd964fc1af981d99411 Callback7 a00139.html a9485b39133010f132970c19f787416e9 () Callback7 a00139.html a16452079fefd60bbc25f9b84690b851b (const Functor &functor) ResultType operator() a00139.html afc63092b5c09e0677587497adb063a43 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const Tp::CapabilitiesBase a00164.html CapabilitiesBase a00164.html a1d6825a3442f02f2022d03ce790e76c7 () CapabilitiesBase a00164.html a74316dfcc9251e830f2a817ac896492d (const CapabilitiesBase &other) virtual ~CapabilitiesBase a00164.html a9e8c72fc44412b62682248a419ed03ee () CapabilitiesBase & operator= a00164.html a78c7a70514d7fe182b6ad20fabdd46ca (const CapabilitiesBase &other) RequestableChannelClassSpecList allClassSpecs a00164.html ac9fed1452165cec3753579b692e52421 () const bool isSpecificToContact a00164.html a75e439476d7ac6f4c703eb321f304a3f () const bool textChats a00164.html ae37ff85bb8939c973ace2609c7a83d49 () const bool audioCalls a00164.html ad49ec413a341f0203ae851a08313f56f () const bool videoCalls a00164.html a19da89463f6d3390aeadba487ec78f47 () const bool videoCallsWithAudio a00164.html aad47dd0e50cf52e00e0c4a769e504eec () const bool upgradingCalls a00164.html aa9c866689cacccc12116997e01feefe9 () const bool streamedMediaCalls a00164.html afb13a503379b891d781e5d9ee6f1082a () const bool streamedMediaAudioCalls a00164.html a6e79eee6dff0bf53a8cebec9a131d7ca () const bool streamedMediaVideoCalls a00164.html a8a3a6ca9031dc1c86f78dfd8a3daf6f0 () const bool streamedMediaVideoCallsWithAudio a00164.html a9106da37a42c0ad9a310907fbe247e4c () const bool upgradingStreamedMediaCalls a00164.html aafc5599f071dede36c492a418186bac6 () const bool fileTransfers a00164.html a1793069a74fbf11dc9e2114469c2d53c () const CapabilitiesBase a00164.html ad8c30790e746235b9e4b459749eefc21 (bool specificToContact) CapabilitiesBase a00164.html abb02ee8949eb0045ff5394efaba3a94e (const RequestableChannelClassList &rccs, bool specificToContact) CapabilitiesBase a00164.html a679abce4b85f7d0b79991fe984b78a46 (const RequestableChannelClassSpecList &rccSpecs, bool specificToContact) virtual void updateRequestableChannelClasses a00164.html a05d7a3f7bc885ee8ce87e441d54671d3 (const RequestableChannelClassList &rccs) Tp::CaptchaAuthentication a00169.html Tp::Object ChallengeType a00169.html a735efcce598bac2ff9d606782f1e1418 @ NoChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a7b4c6aad7b9a65efb7c86598750190e3 @ OCRChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a6fe07985e62fa909a934747b71f0bd2f @ AudioRecognitionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418ab63211e2649bc1e81980ad05e0cf6419 @ PictureQuestionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a7a11655a77f3b48f2a9e8e98d1470712 @ PictureRecognitionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a5ad3901677b98144bd769c4e6e35cb9f @ TextQuestionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a3083e5c1808b5656f0b8cfa9fc54c982 @ SpeechQuestionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418ab4de748e694c6bd5cbaab3cf16c3e2bd @ SpeechRecognitionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a6a458a8fb6d8b360a5defe4af927d8ca @ VideoQuestionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a09ca9b62fc1c059304285d901cbbfcf3 @ VideoRecognitionChallenge a00169.html a735efcce598bac2ff9d606782f1e1418a207e2a506a84e396ffa25f4149f0fe90 @ UnknownChallenge a00169.html a735efcce598bac2ff9d606782f1e1418aa3357d893520da03b5d906c6bb59544d Tp::PendingOperation * cancel a00169.html a781ee784454c7c78ff9f0193d0165949 (Tp::CaptchaCancelReason reason, const QString &message=QString()) void statusChanged a00169.html a317b6ec9d9ef192b27620d85ed52191c (Tp::CaptchaStatus status) virtual ~CaptchaAuthentication a00169.html a1b898a10beffeff6d81fecbc49658e25 () ChannelPtr channel a00169.html ab9ed0a84d0e2082e091654bfe9be4517 () const bool canRetry a00169.html ac3c61ba4fad3c06cc7ad8c6b79ad5c85 () const Tp::CaptchaStatus status a00169.html af32b234c1bac73f3d09777cc865b1666 () const QString error a00169.html a00212326929e2a401a6420ea7a8ab836 () const Connection::ErrorDetails errorDetails a00169.html a3bc8666ba874757c4907ee6a13408200 () const Tp::PendingCaptchas * requestCaptchas a00169.html a1c17a9c530d7a193e8497df1e2fde937 (const QStringList &preferredMimeTypes=QStringList(), ChallengeTypes preferredTypes=~ChallengeTypes(NoChallenge)) Tp::PendingOperation * answer a00169.html a14bb2f644f24af3df939415e1122a7a3 (uint id, const QString &answer) Tp::PendingOperation * answer a00169.html aaad5ae808b5e95df77abc67d17a9af65 (const Tp::CaptchaAnswers &response) Tp::Captcha a00167.html Captcha a00167.html a5b3d04cf2e580aa782cc184352ac6616 () Captcha a00167.html aff2594586616897d7ca9db15359bd305 (const Captcha &other) ~Captcha a00167.html ae57884b7be37d4bded2bfbbfb2d28e22 () bool isValid a00167.html a1000fc7037a8ba71f3add41da5c0eb75 () const Captcha & operator= a00167.html ac0a66fbb1066ccb1db4d5cfc6b2f7dbe (const Captcha &rhs) QString mimeType a00167.html aa2eab673769b35904006f95c255d5232 () const QString label a00167.html a4ec9638a137c51e501a192db6d5162fc () const QByteArray data a00167.html ab0c719fe7bd00e99c61b3d77d260b1e8 () const CaptchaAuthentication::ChallengeType type a00167.html a5e76b73eb3712eee6ed9b110f9c5f30b () const uint id a00167.html aee99f3ceb66fca75e32cb51026df1a25 () const Tp::ChannelClassSpec a00175.html ChannelClassSpec a00175.html aad4b9eb6b3a6f5dd268a9984114f0426 () ChannelClassSpec a00175.html ab0019fe11785156d12ed280db7639426 (const ChannelClass &cc) ChannelClassSpec a00175.html a9771aefe01e0ca4ded16e5c5b8b970a1 (const QVariantMap &props) ChannelClassSpec a00175.html aac1f16d2f7c68ac8b29a1e5b05e3dc3e (const QString &channelType, HandleType targetHandleType, const QVariantMap &otherProperties=QVariantMap()) ChannelClassSpec a00175.html a4aea45c8ac9f9303050602e28aca4c22 (const QString &channelType, HandleType targetHandleType, bool requested, const QVariantMap &otherProperties=QVariantMap()) ChannelClassSpec a00175.html ac66234c6ffa44b83a6de38bef86a33a8 (const ChannelClassSpec &other, const QVariantMap &additionalProperties=QVariantMap()) ~ChannelClassSpec a00175.html abe072071c9b71c563c2c19df1a9783c9 () bool isValid a00175.html a97dc9eaebffde6c6aec4dc04ee6910fb () const ChannelClassSpec & operator= a00175.html aeb6eb9b59c7065c87e98e1acf0d1191e (const ChannelClassSpec &other) bool operator== a00175.html ac89f8c3b4474c6a68d69f36b58bf30a4 (const ChannelClassSpec &other) const bool isSubsetOf a00175.html ae5856156d58870d3ac0481a9940e22c6 (const ChannelClassSpec &other) const bool matches a00175.html abcea33782b6107c3dd79fa20aec435cf (const QVariantMap &immutableProperties) const QString channelType a00175.html a47a6f287e483edc865217ac125044cf2 () const void setChannelType a00175.html acfd0e3bde9520e15156482a3edd5e74f (const QString &type) HandleType targetHandleType a00175.html a609b08909a130f806e92b0991ba2e072 () const void setTargetHandleType a00175.html ab9501d602cc8e3bc40bacff721026307 (HandleType type) bool hasRequested a00175.html a67d1b975a485d7677761eb9411b74a37 () const bool isRequested a00175.html a9dfad22aa03440c6327b9958fd4c42a9 () const void setRequested a00175.html ac0622a89fcfa8c73e2b667e25cf58d32 (bool requested) void unsetRequested a00175.html a7758a95585755b32a1ba6fd4a2820b26 () bool hasCallInitialAudioFlag a00175.html ad45baa89ea6d471dc155b7f396759997 () const void setCallInitialAudioFlag a00175.html a46459b5ae363c5009d5621f3e3587d27 () void unsetCallInitialAudioFlag a00175.html ac9117ec12fd5679be5465978445ec9f2 () bool hasCallInitialVideoFlag a00175.html a5f545d01a9e37d39030c73ecd01fe9c8 () const void setCallInitialVideoFlag a00175.html a9dee2a6e5f6b45281d8930ab4a4c2934 () void unsetCallInitialVideoFlag a00175.html ad8c51eab9738488bee5338579a9fc7bc () bool hasStreamedMediaInitialAudioFlag a00175.html a85ce2ec1d6e099b191896416a0044188 () const void setStreamedMediaInitialAudioFlag a00175.html a4444620e7eb2e5e9ecb3e6f9415679ab () void unsetStreamedMediaInitialAudioFlag a00175.html a50dc02ec24a4e2564572557cd088ae15 () bool hasStreamedMediaInitialVideoFlag a00175.html a76d811533003ae55554f1a71aac33cf7 () const void setStreamedMediaInitialVideoFlag a00175.html a67d8dc5ff1536f1423d97bdd90a59088 () void unsetStreamedMediaInitialVideoFlag a00175.html a87d17c1d1f83cdefdde4023a6fa8307a () bool hasProperty a00175.html a86f44f7b10ab680c1072e85f663e70af (const QString &qualifiedName) const QVariant property a00175.html af282864ac2a392f44279e8ae88294eb4 (const QString &qualifiedName) const void setProperty a00175.html aeef2a85d66a157be12af95e7137cd85d (const QString &qualifiedName, const QVariant &value) void unsetProperty a00175.html aa55aa3f6407bdfb8cbd8fc23ed34b736 (const QString &qualifiedName) QVariantMap allProperties a00175.html adf4c99badfc9d2108ae57d898c44afc2 () const ChannelClass bareClass a00175.html a0613c81aad3f7203ca04a035b1eb7f45 () const static ChannelClassSpec textChat a00175.html a8396208afbe06b3b565e301321243adb (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec textChatroom a00175.html ae294759b58d74fe2271810c3b01511de (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec unnamedTextChat a00175.html a2a9de7599298f8013ea804fc87eb48e2 (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec mediaCall a00175.html adc8939c5706e37ace286584fd8f76fac (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec audioCall a00175.html a2d431355008b4446878f612a636ea49a (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec videoCall a00175.html acc389563474b335b430e97853ffe46e5 (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec videoCallWithAudio a00175.html a9a3b6a890c5cfac494f757ad9cc45a80 (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec streamedMediaCall a00175.html a1bfb95cfa86530d30ceeed734e25c12d (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec streamedMediaAudioCall a00175.html a978c5a4e9565e3ba360a2ba8447212ba (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec streamedMediaVideoCall a00175.html afa00e2a16df25ac6a193771d6c2f1f9f (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec streamedMediaVideoCallWithAudio a00175.html ab5dbc7a0c9abc76cf7718ff987d63728 (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec unnamedStreamedMediaCall a00175.html a7bbd1056894665fddcef16904d5dfead (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec unnamedStreamedMediaAudioCall a00175.html a07abeff6a8dcc128bcff7b6a37fbeb2e (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec unnamedStreamedMediaVideoCall a00175.html ab9ad979760108b0bc19b344a2969efcd (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec unnamedStreamedMediaVideoCallWithAudio a00175.html a551faee4e45353abeff69d70d2f48db9 (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec serverAuthentication a00175.html a50afdce74085d1dc88be8e59b1ae38fc (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec roomList a00175.html a0e3d8ca909b665954cac0961ff6cdabb (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec outgoingFileTransfer a00175.html a8fc2109dfa0afc1b6833a12194709c4f (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec incomingFileTransfer a00175.html acd0d807341e5c923469276c0028ac2c7 (const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec outgoingStreamTube a00175.html a8ec0b6df9556b7de4a5f2cf32e7fc1d0 (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec incomingStreamTube a00175.html a32e6f753bb93cd162824d714728ce72f (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec outgoingRoomStreamTube a00175.html af176da23698c3bd53f4f59d36325e927 (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec incomingRoomStreamTube a00175.html a812704dde4189e42bcfb15f194cabe61 (const QString &service=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec outgoingDBusTube a00175.html a542274b84ae5db1e8065cb67e4178877 (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec incomingDBusTube a00175.html a89ad95b6eb5f4d3f69cba926660df384 (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec outgoingRoomDBusTube a00175.html acba659ac38f75b67d5eed3710f411799 (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec incomingRoomDBusTube a00175.html a57afe9287632cde69e6b0ed46c22c5ae (const QString &serviceName=QString(), const QVariantMap &additionalProperties=QVariantMap()) static ChannelClassSpec contactSearch a00175.html a18576a0e838e65ce7d6add906577ec33 (const QVariantMap &additionalProperties=QVariantMap()) Tp::ChannelClassSpecList a00176.html ChannelClassSpecList a00176.html a6c75fce26ab4051e2a7845e823c2136b () ChannelClassSpecList a00176.html a8bd425703cb70c43a488e5566cf96dd3 (const ChannelClassSpec &spec) ChannelClassSpecList a00176.html adac9b1f7068650fdbf223edfaf2ae9aa (const QList< ChannelClassSpec > &other) ChannelClassSpecList a00176.html a91a3354f419a1685ad10111e93ca6ad5 (const ChannelClassList &classes) ChannelClassList bareClasses a00176.html a55bd979ade70a7600818c9ab4882f783 () const Tp::ChannelDispatchOperation a00180.html Tp::StatefulDBusProxy OptionalInterfaceFactory< ChannelDispatchOperation > void channelLost a00180.html adbec0d5c90cd39e41aea005a57d4face (const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage) virtual ~ChannelDispatchOperation a00180.html ad65a5030d2e07cda4e94f56335540897 () ConnectionPtr connection a00180.html a97a31d8837c887c5c3cfb3b384b9daf8 () const AccountPtr account a00180.html a522666f095aecf88e940caa3c5c760aa () const QList< ChannelPtr > channels a00180.html a6dfcf1643ae5add061cfc85cbfcc75f9 () const QStringList possibleHandlers a00180.html a7d2fddbd2bdb7d340777d881d8c21042 () const PendingOperation * handleWith a00180.html a6110ece4fc4e28a5a8fc071fb1871f9d (const QString &handler) PendingOperation * claim a00180.html abe3cc768fce132036939f63384fe7c82 () PendingOperation * claim a00180.html af0bd9c46a0e88aa49c72984a43300b33 (const AbstractClientHandlerPtr &handler) OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (ChannelDispatchOperation *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static ChannelDispatchOperationPtr create a00180.html af2641c395dc9df9431c21d7175e71bbe (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList< ChannelPtr > &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) static const Feature FeatureCore a00180.html a0d296de60678b7e1b60b679028f35e7f ChannelDispatchOperation a00180.html acecbbde978de90f3683ca5396807896b (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList< ChannelPtr > &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) Client::ChannelDispatchOperationInterface * baseInterface a00180.html ab64648baf1e2797cdb63cb7884f95ae4 () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f Tp::ChannelFactory a00182.html Tp::DBusProxyFactory virtual ~ChannelFactory a00182.html af96b3dff0320c8eefb431d6b15816dd9 () Features featuresForTextChats a00182.html afd986643fc95f5034104f5c7b9f24e43 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForTextChats a00182.html a9f6aa9d64f21c5f9786ca99b2c50ead7 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForTextChats a00182.html a8db3bb93ee16ddd56179bd8e46a18f4e (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForTextChats a00182.html aa1c22d5d1edcf0788353bd09c254a07e (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForTextChats a00182.html aec4b0245e029309ce071d6e0c92d63f6 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForTextChatrooms a00182.html a78b6423d7f6813337a7eba7b1f0a09a0 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForTextChatrooms a00182.html ab7b1f660613756d269d5e445bf77d14a (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForTextChatrooms a00182.html a9c068cfbac44290ac462bb7ece1c339d (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForTextChatrooms a00182.html ad9db6b948abaeffb2a327d55b0a0cb46 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForTextChatrooms a00182.html a7da9a444eb83b848376ee108681265b4 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForCalls a00182.html a0b46eff100cf1808bcb47db53830b134 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForCalls a00182.html a9f344ca7cde70f44dee0ff3c4575d01a (const Features &features, const QVariantMap &additionalProps=QVariantMap()) void setSubclassForCalls a00182.html a2cf129a603d71aabada4e9325407e23f (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForCalls a00182.html aefd5cd955e67fab3686ffee950000766 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForStreamedMediaCalls a00182.html ab50af50f3fe9898cd5e6b6bdd9edb243 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForStreamedMediaCalls a00182.html a025c18da2ebf1f18d18277b986d7c5c4 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForStreamedMediaCalls a00182.html a15ae766f8d4d3fab616ee94fbc82da62 (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForStreamedMediaCalls a00182.html a7de56eda41e697a4a2a191b5bc7b05e2 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForStreamedMediaCalls a00182.html a83854338778f47ecf0f87c2ab93aa3ec (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForRoomLists a00182.html ad9d04ffb15ce72511ec748b0fae445cf (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForRoomLists a00182.html aaa269dd2e537a736e5c5b635441f3f28 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForRoomLists a00182.html a5bedb174e10d92cc570a2c2a4013f27f (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForRoomLists a00182.html a7b3905e311abb60b4f6c55708cf59c14 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForRoomLists a00182.html a510437aa6fe7aa4383f17e418b2cd9b4 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForOutgoingFileTransfers a00182.html a5a6f69901dc424c1ccb9eb70f404687d (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForOutgoingFileTransfers a00182.html a955a4243faf34edfb5e46b5e1d200a16 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForOutgoingFileTransfers a00182.html a669607881fccadde49fb2933d1c1c04e (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForOutgoingFileTransfers a00182.html a93187d3d8097aa63be45e14211ed077f (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForOutgoingFileTransfers a00182.html ac61edcd321e81b46e2da1eaa9d1a0631 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForIncomingFileTransfers a00182.html af069fad815d0a0f607fb09a35ada345a (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForIncomingFileTransfers a00182.html afe626884fbb4f731160ea6489549ec1e (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForIncomingFileTransfers a00182.html a469f3d51228d878f246dead3e9ec5eda (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForIncomingFileTransfers a00182.html a5598e2a82c446780d1c1fe44c2b10d4e (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForIncomingFileTransfers a00182.html a119f85ccdb3339666381f8965f954dc5 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForOutgoingStreamTubes a00182.html a2197a651412571f4932450223d6a0a53 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForOutgoingStreamTubes a00182.html af67d2137868732ae2e255506b667e557 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForOutgoingStreamTubes a00182.html a497873772cb424b20424a4b79bb0a3ac (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForOutgoingStreamTubes a00182.html a052c5dfa9740bd9232d7624964e0c830 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForOutgoingStreamTubes a00182.html a7a8c664a88d541a68bc40fc0ecf1ec8e (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForIncomingStreamTubes a00182.html ad690f3b74db4e5635bea388aee2a355f (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForIncomingStreamTubes a00182.html af6715877cdf727ee70b225370751ed7c (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForIncomingStreamTubes a00182.html a518f41f815ed4c8eeac4480ba78c394d (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForIncomingStreamTubes a00182.html ad61e36911fbc08d4fafd5becece7b721 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForIncomingStreamTubes a00182.html a769953d95ba9b5131c16d72b6d61e033 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForOutgoingRoomStreamTubes a00182.html ab346a8a3e366bd980379a800015f3572 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForOutgoingRoomStreamTubes a00182.html ab6ed457d1d10a787335f8583b5df9528 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForOutgoingRoomStreamTubes a00182.html a4e031f698e544db0e8a2f04e45b0970c (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForOutgoingRoomStreamTubes a00182.html aa66c7c88415c48f2bb71b70c8e2ebe57 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForOutgoingRoomStreamTubes a00182.html aa430cfe85a5c9e4de44e3d095f7fcaa5 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForIncomingRoomStreamTubes a00182.html af1d2c7860280cf9aea90012cf4add3f2 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForIncomingRoomStreamTubes a00182.html afeab30624c79cc455f41e051404411f2 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForIncomingRoomStreamTubes a00182.html a71b7736d3184ac8330413a69234712ad (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForIncomingRoomStreamTubes a00182.html ab36675668c0b0a1cdc84f19bb41ae89a (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForIncomingRoomStreamTubes a00182.html a0c19633cc9ff152cf0ba14c78b905506 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForOutgoingDBusTubes a00182.html acabb66c8439c0ac2e337c1887df57c1b (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForOutgoingDBusTubes a00182.html aa08f9483bca95d6e72356bf54a135822 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForOutgoingDBusTubes a00182.html a23cb6130bb6b4b6b9b52140269b79130 (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForOutgoingDBusTubes a00182.html a84e80d707d01e0046b71836878e23a08 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForOutgoingDBusTubes a00182.html a13e3e8f96a323bcc573363a165f50ba1 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForIncomingDBusTubes a00182.html a3918e49b689cb840d12e4deecde4c7d0 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForIncomingDBusTubes a00182.html a94e9817a0343ddf604ffde16be44af80 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForIncomingDBusTubes a00182.html a0d8fc201abf70b86d9bfc95c178f7a2d (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForIncomingDBusTubes a00182.html a81300eb3578c419b30558e9f21816028 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForIncomingDBusTubes a00182.html a529cad69a46d0bbe83ab9fae61941f4b (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForOutgoingRoomDBusTubes a00182.html ac24025b8a1e3b072cef038787ba9e64f (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForOutgoingRoomDBusTubes a00182.html ae7afe6513a706969bdbf104cd26cccd3 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForOutgoingRoomDBusTubes a00182.html a29b68b27c1a1674482c4967904345668 (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForOutgoingRoomDBusTubes a00182.html acb3e9d43f7654756debc1f6bdf4e0bca (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForOutgoingRoomDBusTubes a00182.html a10e21fa0b80a590fb800906b8b91885a (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForIncomingRoomDBusTubes a00182.html a21cb39f35440724c930339eff42c0c8b (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForIncomingRoomDBusTubes a00182.html a7e37c612daff3815a233be7846567630 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForIncomingRoomDBusTubes a00182.html a0e9423fcd28ca10d4c47533750cbf219 (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForIncomingRoomDBusTubes a00182.html a0ef97eb6e7df9abb34a1da820e961f10 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForIncomingRoomDBusTubes a00182.html acc4ff9c075de6e3285f4f2c7a8db659b (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForContactSearches a00182.html adba95bc56cdb6dc05d98a8ded2e252e1 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForContactSearches a00182.html ad24821fa63fda6a9a07b77daff7a8032 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForContactSearches a00182.html ae8548eae52a0bb1556a868bfd387aaeb (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForContactSearches a00182.html a7db4e54e4807d873d9c82cf1eb56dd3d (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForContactSearches a00182.html ab84b44e85ca686248840bba9a37ec328 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features featuresForServerAuthentication a00182.html a5337f6e8b224920a5afe8bcfde31f724 (const QVariantMap &additionalProps=QVariantMap()) const void addFeaturesForServerAuthentication a00182.html aeb8f1b0f6ff05e43d214ed1b288622e7 (const Features &features, const QVariantMap &additionalProps=QVariantMap()) ConstructorConstPtr constructorForServerAuthentication a00182.html ad2dd8397524d698530ec94c16d91af05 (const QVariantMap &additionalProps=QVariantMap()) const void setSubclassForServerAuthentication a00182.html a0629638577bfe6c9deea5511c8d6c020 (const QVariantMap &additionalProps=QVariantMap()) void setConstructorForServerAuthentication a00182.html ad8b89da204ccab1de8bb3bdde80d9b18 (const ConstructorConstPtr &ctor, const QVariantMap &additionalProps=QVariantMap()) Features commonFeatures a00182.html ae425ff10faabfa99d16f7c45a7942c16 () const void addCommonFeatures a00182.html aa2cda93a389b1174e6a8cc914973bb7c (const Features &features) ConstructorConstPtr fallbackConstructor a00182.html aca236c9f8217882b969df66c71c3b4e9 () const void setFallbackSubclass a00182.html ae0b44cb14dff09176f9809a455c7546a () void setFallbackConstructor a00182.html a071e3e4a64b9b20424e051629eb69902 (const ConstructorConstPtr &ctor) Features featuresFor a00182.html aa972b93fec81a9ccc569764fff6e4626 (const ChannelClassSpec &channelClass) const void addFeaturesFor a00182.html ad5e816407353a34ce9b171ff1f964b34 (const ChannelClassSpec &channelClass, const Features &features) void setSubclassFor a00182.html a1c50ffaad80849ca3e281d771090c110 (const ChannelClassSpec &channelClass) ConstructorConstPtr constructorFor a00182.html aed6e02ede635d08cdbc13858b8d27253 (const ChannelClassSpec &channelClass) const void setConstructorFor a00182.html a522dbf512bbd855aae71b4d4817ff8d3 (const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor) PendingReady * proxy a00182.html a523b44eb42d509dde6dc5407ef2e002a (const ConnectionPtr &connection, const QString &channelPath, const QVariantMap &immutableProperties) const static ChannelFactoryPtr create a00182.html a6e472cf0591d4e8a731839a45ce50ad0 (const QDBusConnection &bus) ChannelFactory a00182.html a4a07442bf86a0fdcba4d9240f9a25834 (const QDBusConnection &bus) virtual QString finalBusNameFrom a00182.html acfe8fe6a30a5d894e6050c40d73cb1b8 (const QString &uniqueOrWellKnown) const virtual Features featuresFor a00182.html aa1093d1b1b9a2d79e81232ce8e4ec860 (const DBusProxyPtr &proxy) const Tp::ChannelRequest a00229.html Tp::StatefulDBusProxy OptionalInterfaceFactory< ChannelRequest > void failed a00229.html a7d9ed07c568582bfa6e48bd38faee819 (const QString &errorName, const QString &errorMessage) void succeeded a00229.html a05262d57d3b1134e614256d7dad8d8eb (const Tp::ChannelPtr &channel) virtual ~ChannelRequest a00229.html afa9d83521eaaad8b807a83da53a7c6a9 () AccountPtr account a00229.html adcb35b58ee4ba57919fbe4a43161fcc8 () const QDateTime userActionTime a00229.html adc6a7ab407026e16e8daf377b3b78cd4 () const QString preferredHandler a00229.html a653bb5c7c552db71638d970332cc8438 () const QualifiedPropertyValueMapList requests a00229.html ab14c46c9fa671a21e5a3e453b633ac0f () const ChannelRequestHints hints a00229.html abfe44f6fffec61bbf6f9a3ab26c10eef () const QVariantMap immutableProperties a00229.html a75ca6ed4cf10fea1dfc5687daab8735f () const PendingOperation * cancel a00229.html ab65f0a6d13266ab32cbb38417c3875ae () ChannelPtr channel a00229.html a5a0c3eac26eb434b5cf044f6c07e72d8 () const OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (ChannelRequest *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static ChannelRequestPtr create a00229.html a4f011f4ba673442d64577d3250029c9c (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) static ChannelRequestPtr create a00229.html a2b72e2476e47e4d39c084da2453ccfb8 (const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00229.html a2aa5704551dde6d21af951b449067a90 ChannelRequest a00229.html a1584babd6c6ed1acf7224c58b81c5256 (const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) ChannelRequest a00229.html a785bffffc67a9191fc68ae8eb2d89e37 (const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties) Client::ChannelRequestInterface * baseInterface a00229.html a14dca9031552aaed29b2b50e95ad969e () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f Tp::ChannelRequestHints a00230.html ChannelRequestHints a00230.html ae79c1212d4ac734ad0580369565515ff () ChannelRequestHints a00230.html a60d0f55c34e16a44bc00c58c0fade87f (const QVariantMap &hints) ChannelRequestHints a00230.html a49b1c290d530fe002a0996333a898de6 (const ChannelRequestHints &other) ~ChannelRequestHints a00230.html a392111301e8e498d4c0f60187b39f9d1 () ChannelRequestHints & operator= a00230.html acb20d3499e0e09be9764f3e2cca17aa1 (const ChannelRequestHints &other) bool isValid a00230.html a75f8cb73be6352a40209917936495958 () const bool hasHint a00230.html a74e0fbca7252a346f55ebcf8df22297f (const QString &reversedDomain, const QString &localName) const QVariant hint a00230.html aeaec3c8326fb57d318772097cded1ec9 (const QString &reversedDomain, const QString &localName) const void setHint a00230.html ac3f467a85e5dcac0d171aad6606c8638 (const QString &reversedDomain, const QString &localName, const QVariant &value) QVariantMap allHints a00230.html acdbe6dddd6955a7ba3b2f0e091b62bba () const Tp::Channel a00171.html Tp::StatefulDBusProxy OptionalInterfaceFactory< Channel > Tp::Channel::GroupMemberChangeDetails chan_usage_sec chan_create_sec chan_ready_sec Tp::Channel::GroupMemberChangeDetails a00367.html GroupMemberChangeDetails a00367.html a48c5f27593216b49e83acc91d81920d8 () GroupMemberChangeDetails a00367.html a79462117fb371c0033f95db563b1cb1a (const GroupMemberChangeDetails &other) ~GroupMemberChangeDetails a00367.html a14eab0d6e2651bca27602347d704b81a () GroupMemberChangeDetails & operator= a00367.html a135a0802e86ac40947c9abfec235d61b (const GroupMemberChangeDetails &other) bool isValid a00367.html a5e366f00986075e3bb8effee16bb0971 () const bool hasActor a00367.html adf94b9c24d04ee43cde2eb823ec06be1 () const ContactPtr actor a00367.html adcb153798d9f667fb2e2dba4d0bc7989 () const bool hasReason a00367.html a9fb50692359db8431da17898c57b597d () const ChannelGroupChangeReason reason a00367.html a7c1647ab21b98b543d4fc5a8e29b9b1a () const bool hasMessage a00367.html a424ad28b9fefe69cef4421c68acb1134 () const QString message a00367.html a12faf9d5bf6192915d77d432f7ec3f2a () const bool hasError a00367.html a3e8f25a0dbdfc7c72e06e29f1a8b68f6 () const QString error a00367.html a930cdd1484e41e61ee137959c9ff9b4f () const bool hasDebugMessage a00367.html a22c4a0db0572ab93d29b7bbfdb77a641 () const QString debugMessage a00367.html a0ac7c427b6e87b44bfcb263d602063ae () const QVariantMap allDetails a00367.html ad96a81dde6b2e07bdac5086152323560 () const Tp::ClientRegistrar a00260.html Tp::Object ~ClientRegistrar a00260.html a2628204c7847bc5bb535b1cc01b81aa4 () QDBusConnection dbusConnection a00260.html aa5e2433fdb5e8129a0c060f8a5dbdd30 () const AccountFactoryConstPtr accountFactory a00260.html a9f22d7f159ccbc84bac88be5f05bdc29 () const ConnectionFactoryConstPtr connectionFactory a00260.html a562477f469e0a193736dd5508c7e5291 () const ChannelFactoryConstPtr channelFactory a00260.html aca84ddb99a28c6f911362464e64b817f () const ContactFactoryConstPtr contactFactory a00260.html a7db495adc294dda744ed4781ede01b43 () const QList< AbstractClientPtr > registeredClients a00260.html a16fe9d5b6ec9e15b40a84ecf63e123d2 () const bool registerClient a00260.html a18c094053cc83809a167370f7113341b (const AbstractClientPtr &client, const QString &clientName, bool unique=false) bool unregisterClient a00260.html a6bfe24179b1e9d44a6a618a0d346e4a7 (const AbstractClientPtr &client) void unregisterClients a00260.html abfa88fe255a78e44faacdedfda2fec20 () static ClientRegistrarPtr create a00260.html a82f69f7d62e78d263ac26e5f7b51f523 (const QDBusConnection &bus) static ClientRegistrarPtr create a00260.html afe18588712ea58fc961408be22afbd83 (const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static ClientRegistrarPtr create a00260.html a444848407927131641af467109faa23e (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) static ClientRegistrarPtr create a00260.html ab822cf38041a032670e938e02f8ff080 (const AccountManagerPtr &accountManager) cr_usage_sec cr_create_sec cr_registering_sec Tp::ConnectionCapabilities a00265.html Tp::CapabilitiesBase ConnectionCapabilities a00265.html ad11fea17bae85184e09b58a428bf98c1 () virtual ~ConnectionCapabilities a00265.html a2d8fc7dd4c2f85cefd2043bbc0b72fc2 () bool textChatrooms a00265.html a311f0a6bf4540ddb83fad1039bbc6ab0 () const bool conferenceStreamedMediaCalls a00265.html aa931444110a23bf72ed7310bd5feee59 () const bool conferenceStreamedMediaCallsWithInvitees a00265.html a2abd061d45954f5544803fd8c1e18ebe () const bool conferenceTextChats a00265.html ae3be98c4e873cc4b6a2d12c41d592c3b () const bool conferenceTextChatsWithInvitees a00265.html abf882e1da606851004ab2e334729e983 () const bool conferenceTextChatrooms a00265.html a7e16aaca152b69d48b13d3616e587b8e () const bool conferenceTextChatroomsWithInvitees a00265.html ab2a50985142547c1aea772b93cda580c () const bool contactSearches a00265.html a346839e3b9c8af511ac51380ec1d44d2 () const bool contactSearchesWithSpecificServer a00265.html a5581dcc91c33e3fb2cd5ca909fa6c291 () const bool contactSearchesWithLimit a00265.html acfd4b70389eff46b52f91e866b7fa1d8 () const bool dbusTubes a00265.html ae5ec90e7d21f948b4feb2d64ed04e56d () const bool streamTubes a00265.html a401558f7cbcc02bd39a8848752ff11cc () const ConnectionCapabilities a00265.html a206a4b817c3742ef99418b6e53d1a776 (const RequestableChannelClassList &rccs) ConnectionCapabilities a00265.html ae739a04443be467f85e18e5a5d2397ef (const RequestableChannelClassSpecList &rccSpecs) Tp::ConnectionFactory a00266.html Tp::FixedFeatureFactory virtual ~ConnectionFactory a00266.html a287d602bc3e358fdd343b31977fd92e9 () PendingReady * proxy a00266.html a38d679adf6078b0511a4d14d3990ec3a (const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const static ConnectionFactoryPtr create a00266.html a36edf94e6a977d175146be820c014dc7 (const QDBusConnection &bus, const Features &features=Features()) ConnectionFactory a00266.html a6e0b1665e7ea306297f2f2c24df6e870 (const QDBusConnection &bus, const Features &features) virtual ConnectionPtr construct a00266.html afa59732a681f38065f78e808f2ac6dfd (const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const virtual QString finalBusNameFrom a00266.html ab1251bd98dec96f8a2b3c9ab62e0caf1 (const QString &uniqueOrWellKnown) const Tp::ConnectionLowlevel a00308.html Tp::RefCounted ~ConnectionLowlevel a00308.html aec70ebc6f61d39f2f6ce9a7251e545e1 () bool isValid a00308.html a989c8d7ecb790f008351c0be8801986f () const ConnectionPtr connection a00308.html a296be91116fa075ed800ab271d7c41bc () const PendingReady * requestConnect a00308.html adad3f0e46e1c3c4c98544bb7d340480d (const Features &requestedFeatures=Features()) PendingOperation * requestDisconnect a00308.html a755798967e4cdf6da1289da28862b179 () SimpleStatusSpecMap allowedPresenceStatuses a00308.html aed9fc8c25a465d3838355850e141ef00 () const uint maxPresenceStatusMessageLength a00308.html a38ea995a0439b2d796bdfc7b0202e3f9 () const PendingOperation * setSelfPresence a00308.html a75ac25bfa3bdbf9f012ff223406d8db7 (const QString &status, const QString &statusMessage) PendingChannel * createChannel a00308.html a7b12503cbb302b81e6d66bde16ce3e22 (const QVariantMap &request) PendingChannel * createChannel a00308.html aa2735d19e297d0840854a2a13982ae4e (const QVariantMap &request, int timeout) PendingChannel * ensureChannel a00308.html a206bf1c04cf460b00ce96527632cc3b7 (const QVariantMap &request) PendingChannel * ensureChannel a00308.html a81921413027017073265d874e2a216ee (const QVariantMap &request, int timeout) PendingHandles * requestHandles a00308.html a78ab30b0f022b5624eb74bfa63984e6b (HandleType handleType, const QStringList &names) PendingHandles * referenceHandles a00308.html a215e173f60e1c5c3cb72f1a81aaac152 (HandleType handleType, const UIntList &handles) PendingContactAttributes * contactAttributes a00308.html abe631c36b5c3c3c2f5f47da299dd9b8f (const UIntList &handles, const QStringList &interfaces, bool reference=true) QStringList contactAttributeInterfaces a00308.html a5c29fee7f683b77cc9e547572cfef027 () const void injectContactIds a00308.html a98c37ffb06db1147ece617022162417e (const HandleIdentifierMap &contactIds) void injectContactId a00308.html af6bb69a40fcd7570927d5e0d0af1f7bb (uint handle, const QString &contactId) Tp::ConnectionManagerLowlevel a00312.html Tp::RefCounted ~ConnectionManagerLowlevel a00312.html acd0eb4d2b197aa5c0dee7cbf25a300b2 () bool isValid a00312.html a62bf424d33bb0879872c45951057e61a () const ConnectionManagerPtr connectionManager a00312.html a731a6277636dc3379ed7cd04fd8fc933 () const PendingConnection * requestConnection a00312.html a03387ca868e4fd195037e44f7d39e85d (const QString &protocolName, const QVariantMap &parameters) Tp::ConnectionManager a00309.html Tp::StatelessDBusProxy OptionalInterfaceFactory< ConnectionManager > virtual ~ConnectionManager a00309.html aa0f20ca9e71d59633fd9b6ea1a8763b6 () QString name a00309.html abdcc976229007c7e14f807b64bb63f74 () const ConnectionFactoryConstPtr connectionFactory a00309.html a6336058295c90e97f28cb038310ee12c () const ChannelFactoryConstPtr channelFactory a00309.html a9fc735e792973e0b10fe500e088a705d () const ContactFactoryConstPtr contactFactory a00309.html abb781a150e4cde477d507697fbfb2831 () const QStringList supportedProtocols a00309.html a984817c505553dc8a8b6d27fd84dfa41 () const const ProtocolInfoList & protocols a00309.html ac60ebb96b662bcb703d052cb3a3d4c6b () const bool hasProtocol a00309.html a2e7c27d5dec78c71eeaacc4b4c9ba403 (const QString &protocolName) const ProtocolInfo protocol a00309.html a2e1d9073a0732e10772104b7f21e598f (const QString &protocolName) const OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (ConnectionManager *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static ConnectionManagerPtr create a00309.html a8cdfaeae6d4efde734b01797aec037e7 (const QDBusConnection &bus, const QString &name) static ConnectionManagerPtr create a00309.html a8056229e3683962e732e5190561ec4f6 (const QString &name, const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static ConnectionManagerPtr create a00309.html a2fbe31cd738148546f3f41a3361bc93f (const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static PendingStringList * listNames a00309.html ab4488e9c105fcf20ff494e89087f60eb (const QDBusConnection &bus=QDBusConnection::sessionBus()) static const Feature FeatureCore a00309.html ab598a95bf0e38c8ebcd542b8c4c69d0c ConnectionManager a00309.html af963841a786f7426b415152cdd24d95c (const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) Client::ConnectionManagerInterface * baseInterface a00309.html ac9c58694df64dadfbf06a99b8a97f170 () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) QString name a00309.html a9feef3a5e739dd1c5f63dbfbf571e4f9 QStringList supportedProtocols a00309.html a988e5d359ceeda327aae07008ee2eba6 ProtocolInfoList protocols a00309.html ae78473168234b90f050396b7c2d09d71 InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f Tp::Connection a00263.html Tp::StatefulDBusProxy OptionalInterfaceFactory< Connection > Tp::Connection::ErrorDetails void statusChanged a00263.html a3812449d9e2b5cfa70c437a0cd36d014 (Tp::ConnectionStatus newStatus) void selfHandleChanged a00263.html a410f3768d95dce2efa21bca2e500673a (uint newHandle) void selfContactChanged a00263.html ae4abf99523e737b183858b525410461b () void accountBalanceChanged a00263.html ab050d0607f1d1cd1a826aa7d9cf349a0 (const Tp::CurrencyAmount &accountBalance) virtual ~Connection a00263.html ac0926851c142146c0bd1cd3b95b76cfb () ChannelFactoryConstPtr channelFactory a00263.html a27e53ade1cd0fcc658d58ba008dd5d29 () const ContactFactoryConstPtr contactFactory a00263.html a3b06334fb0ea8e73e292c89de88f3039 () const QString cmName a00263.html a8f2168c942763c8220f516ab6f0cc457 () const QString protocolName a00263.html a949df10fcc0722f4b8e00fca6253f398 () const ConnectionStatus status a00263.html a7eefc2f1f44614d375822fa8af6e1d05 () const ConnectionStatusReason statusReason a00263.html aca21b3cfa48fade2023c37165fb2de79 () const const ErrorDetails & errorDetails a00263.html a22da076fc2c2ddf380a43a877a04951b () const uint selfHandle a00263.html a8712aa8d00be6dd5d5e897147fb7bd2e () const ContactPtr selfContact a00263.html a359f35737ac7afac5b6575de3059c5be () const CurrencyAmount accountBalance a00263.html aaf468455c540234631a358715b24acf7 () const ConnectionCapabilities capabilities a00263.html a1aeada5cef07c09584b3d14587808865 () const ContactManagerPtr contactManager a00263.html a5d1ae07b1ae25e99053c89a43b0a95ba () const OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (Connection *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const static ConnectionPtr create a00263.html a6d894b98d3b0efbfba992b89f039a031 (const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) static ConnectionPtr create a00263.html afc71a3c4153b352201048d883f07036b (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) static const Feature FeatureCore a00263.html abc270e079265fcbec7e422d002523298 static const Feature FeatureSelfContact a00263.html af1a6dedc304a3b68d04dc191e20203c6 static const Feature FeatureSimplePresence a00263.html af832a6ba64e4811a2ff364c755493afb static const Feature FeatureRoster a00263.html a3dac123c3d7845db5ecd423fcd733323 static const Feature FeatureRosterGroups a00263.html adf6eab299cb7a0186ded6074e57fb5d0 static const Feature FeatureAccountBalance a00263.html a6053a35e135d08ed9b7f28ea7a86558e static const Feature FeatureConnected a00263.html acb9a25022157355be1b534bfe6bc1f25 Connection a00263.html a48d7eb17e7b90a817d3be1de0efdb7a2 (const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature) Client::ConnectionInterface * baseInterface a00263.html a414d50a08898a3f52642f37ae50c202e () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f conn_usage_sec conn_create_sec conn_ready_sec Tp::Connection::ErrorDetails a00349.html ErrorDetails a00349.html a5b0ba9df9110f276e06ef95922d6005b () ErrorDetails a00349.html a795f19754b52973c1a1bb50219c7f49d (const QVariantMap &details) ErrorDetails a00349.html a41dd9790d9f5e49bc5ce891d90778ffa (const ErrorDetails &other) ~ErrorDetails a00349.html a1f4f39c0df1e5120bd36ed309a50bae6 () ErrorDetails & operator= a00349.html a7fb9b68381d4eaebbe74cae8f7e23432 (const ErrorDetails &other) bool isValid a00349.html a48f2d195a116f672feddd4218e87a531 () const bool hasDebugMessage a00349.html a5cec9c3d8b7c50ad31d6fd73f9784fd4 () const QString debugMessage a00349.html a511b72f210100ddb57da3bb0e720cbd0 () const bool hasServerMessage a00349.html a00e42ba36c9094cd5e868ac0634dfb3e () const QString serverMessage a00349.html a7ccb305148c3812028167e23eec5d872 () const bool hasUserRequested a00349.html abb680817f99e846408ef1d18c4dcffc1 () const bool userRequested a00349.html a66cd75caea80c61ddeb83e837ad7a13f () const bool hasExpectedHostname a00349.html aa2fb6b18d46253541dc45547ab239202 () const QString expectedHostname a00349.html a64fcc4838b1be1d71bccb8470d8d45eb () const bool hasCertificateHostname a00349.html ab708b33ca38b986431e3972fccf1ad18 () const QString certificateHostname a00349.html aabae56774ef17c1512583613ed5bc08e () const QVariantMap allDetails a00349.html a45563746582851913ba7caa6c4cda9b7 () const Tp::ContactCapabilities a00315.html Tp::CapabilitiesBase ContactCapabilities a00315.html a1c8b59b409121c88b6233f55a8ebe06e () virtual ~ContactCapabilities a00315.html a54c6f7506c86cad7345d3eebfc0a44c1 () bool dbusTubes a00315.html a2415f2979a2a31af6767587b4f430ad7 (const QString &serviceName) const QStringList dbusTubeServices a00315.html a598b1c486e0c255fd5a3b6b09738034f () const bool streamTubes a00315.html a099c2ad7c3b4c4e2b7fbf395f0da71a5 (const QString &service) const QStringList streamTubeServices a00315.html af89f0e09b4319c8614f3b4603a182c31 () const ContactCapabilities a00315.html a19e5f36372e74acd4de7bf9de6e3d4a5 (bool specificToContact) ContactCapabilities a00315.html a75f53c321f69e1be7df1d3310ad5d284 (const RequestableChannelClassList &rccs, bool specificToContact) ContactCapabilities a00315.html a24a45a95b6026c2e9cf3bc878ab60ea8 (const RequestableChannelClassSpecList &rccSpecs, bool specificToContact) Tp::ContactFactory a00320.html Tp::RefCounted virtual ~ContactFactory a00320.html abdc81d784a4b10e6ec69c529aa19afb5 () Features features a00320.html a164f793bc1c263e4d9f31e4011787519 () const void addFeature a00320.html aad52dfcc20b9b32649bbcf1cfa084dd5 (const Feature &feature) void addFeatures a00320.html a8d48d2bcb259358d27a7b3bc48015895 (const Features &features) static ContactFactoryPtr create a00320.html a1e65dc49f0c4ab8162b6d69717276752 (const Features &features=Features()) ContactFactory a00320.html aa0c8d46ff64084030ce08cd8f6836648 (const Features &features) virtual ContactPtr construct a00320.html a617cdc6f87c1c505f66f00f4ad85b3cc (ContactManager *manager, const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes) const virtual PendingOperation * prepare a00320.html acf3b277d8ad55760df43250a5590f8a1 (const ContactPtr &contact) const Tp::ContactManager a00324.html Tp::Object void stateChanged a00324.html ab08ec3253dde87c9ae00df8d05188b82 (Tp::ContactListState state) void presencePublicationRequested a00324.html a6fd4463cdd976722642239d5412691a0 (const Tp::Contacts &contacts) void groupAdded a00324.html a9f4088f2dc6fde3d93081bd4cc0eee64 (const QString &group) void groupRenamed a00324.html a46359db15ed92bc1ab140adb2759c7ae (const QString &oldGroup, const QString &newGroup) void groupRemoved a00324.html a9ed8c4284e625ea4eeba9a52c922d89d (const QString &group) void groupMembersChanged a00324.html a878b55c5edf1c0a596881a2038075ef6 (const QString &group, const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details) void allKnownContactsChanged a00324.html ae4d442bf3ad52303c6490d356ce481d5 (const Tp::Contacts &contactsAdded, const Tp::Contacts &contactsRemoved, const Tp::Channel::GroupMemberChangeDetails &details) virtual ~ContactManager a00324.html a0ce348904cde9db375f71a6bb53987f0 () ConnectionPtr connection a00324.html af101a4f8ae122e85e9fac5d6c0b537a2 () const Features supportedFeatures a00324.html aeb877cd57dfba9e04dffb65d74b8717b () const ContactListState state a00324.html a1355aca8ae314ed81ecf3a0320e81bbc () const Contacts allKnownContacts a00324.html a3c12a76eb7542de6e75afa6499ac93a5 () const QStringList allKnownGroups a00324.html a9009d3811e5efc8ccc1f1dc9464c11dc () const PendingOperation * addGroup a00324.html a24457084fe465714d5f3d6e321af8b54 (const QString &group) PendingOperation * removeGroup a00324.html a48ab95a31eab835a3d0cb51bb857438c (const QString &group) Contacts groupContacts a00324.html a50547e5fb2e109238a9ca50736fc199d (const QString &group) const PendingOperation * addContactsToGroup a00324.html a708499de87d0e57c49421e13fe467ed1 (const QString &group, const QList< ContactPtr > &contacts) PendingOperation * removeContactsFromGroup a00324.html a27c80e1ab19be8b8542ae14f8d6ce691 (const QString &group, const QList< ContactPtr > &contacts) bool canRequestPresenceSubscription a00324.html ad8e08099706426de94b2bd1f23a0008c () const bool subscriptionRequestHasMessage a00324.html abd8e2c4544a1724e5fb10bf16c80b001 () const PendingOperation * requestPresenceSubscription a00324.html a67ba299f82a47b6dc6d3f6d3645c007d (const QList< ContactPtr > &contacts, const QString &message=QString()) bool canRemovePresenceSubscription a00324.html ac498236242908f35f35309b6346545a5 () const bool subscriptionRemovalHasMessage a00324.html ae70040aad36cf4a546c3f7f2cc66645f () const bool canRescindPresenceSubscriptionRequest a00324.html ae14695e4e6eb0385b3d6f69cfbd032fd () const bool subscriptionRescindingHasMessage a00324.html a763cc321e395d3252d9ca04a02086527 () const PendingOperation * removePresenceSubscription a00324.html a368a06c54d07ede65d273cf693b2332f (const QList< ContactPtr > &contacts, const QString &message=QString()) bool canAuthorizePresencePublication a00324.html a5cae6b97938e3fdbfad730586030d765 () const bool publicationAuthorizationHasMessage a00324.html aae15b650476959aa7aa2397859e8ad9c () const PendingOperation * authorizePresencePublication a00324.html a22916788a01fc087d66088ae756f6660 (const QList< ContactPtr > &contacts, const QString &message=QString()) bool publicationRejectionHasMessage a00324.html a103ec996765a5e3434cb8b265427666f () const bool canRemovePresencePublication a00324.html a1602d61f630c016d41525b54c5e73caa () const bool publicationRemovalHasMessage a00324.html a1fc517663e67692b9b8b688aafec5095 () const PendingOperation * removePresencePublication a00324.html a6e1d65b5d6be2af709e88f87216750e5 (const QList< ContactPtr > &contacts, const QString &message=QString()) PendingOperation * removeContacts a00324.html a24a5a21ae83dbab5923f0f75dae6606f (const QList< ContactPtr > &contacts, const QString &message=QString()) bool canBlockContacts a00324.html a5366527c88063801f1222443d2909ce9 () const bool canReportAbuse a00324.html a653cff49446d43979ee2150a8fc9550f () const PendingOperation * blockContacts a00324.html a78f591ad92400f0e9b27de1248b3bd46 (const QList< ContactPtr > &contacts) PendingOperation * blockContactsAndReportAbuse a00324.html ab2191227907fca9ae565a18cc621ac4d (const QList< ContactPtr > &contacts) PendingOperation * unblockContacts a00324.html abae132ca2f20df46a825eb1acb8d0a1a (const QList< ContactPtr > &contacts) PendingContacts * contactsForHandles a00324.html a2355acb3dbcb50d2b6f8285eb4b556d8 (const UIntList &handles, const Features &features=Features()) PendingContacts * contactsForHandles a00324.html a595c828f1d320467e775a91e6cd2d28d (const ReferencedHandles &handles, const Features &features=Features()) PendingContacts * contactsForHandles a00324.html aa1305c59634925fea621d1d10f9275de (const HandleIdentifierMap &handles, const Features &features=Features()) PendingContacts * contactsForIdentifiers a00324.html a1497aedf16dbdcded0fbcb2c4f29b352 (const QStringList &identifiers, const Features &features=Features()) PendingContacts * contactsForVCardAddresses a00324.html aea09abb6cb5aeba931ba8392167baa32 (const QString &vcardField, const QStringList &vcardAddresses, const Features &features=Features()) PendingContacts * contactsForUris a00324.html ac6842742473bef9300e3ff1c48c25d2f (const QStringList &uris, const Features &features=Features()) PendingContacts * upgradeContacts a00324.html a3a939155d5d13b9e30fe52660d32939c (const QList< ContactPtr > &contacts, const Features &features) void requestContactAvatars a00324.html a00fb3dd601748e7a455c57027be48ed5 (const QList< ContactPtr > &contacts) PendingOperation * refreshContactInfo a00324.html a020c0e302e894c323e4f0579a6c41d00 (const QList< ContactPtr > &contact) Tp::ContactMessenger a00326.html Tp::RefCounted void messageSent a00326.html a7aa1a873748165a75234a2795e519544 (const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel) void messageReceived a00326.html ad1c321adc574237c193663a341b89cb0 (const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel) virtual ~ContactMessenger a00326.html aa33ca4bd3c65515d80831b77b00e7226 () AccountPtr account a00326.html ad1ffb6ae0b66dae5eca1abb17bd6d64b () const QString contactIdentifier a00326.html a22fb9c45ffb22629dd8716c4fe610f12 () const QList< TextChannelPtr > textChats a00326.html a49b5251a8711fc705d8be68c541d3815 () const PendingSendMessage * sendMessage a00326.html a30c4b668b097ff94273de2b3241086e4 (const QString &text, ChannelTextMessageType type=ChannelTextMessageTypeNormal, MessageSendingFlags flags=0) PendingSendMessage * sendMessage a00326.html acb7ac211a1cc2f83f9a419f5821e51b5 (const MessageContentPartList &parts, MessageSendingFlags flags=0) static ContactMessengerPtr create a00326.html ab2fbdb730a9649a5ac338fa61ff8fe88 (const AccountPtr &account, const ContactPtr &contact) static ContactMessengerPtr create a00326.html a8b88fa8574844994aa490e282d655708 (const AccountPtr &account, const QString &contactIdentifier) Tp::ContactSearchChannel a00328.html Tp::Channel Tp::ContactSearchChannel::SearchStateChangeDetails QHash< ContactPtr, Contact::InfoFields > SearchResult a00328.html a92cf99841e856d9e6d4855e12e3b2547 void searchStateChanged a00328.html ac28937310553af2b6ccc2fe342d9d21e (Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details) void searchResultReceived a00328.html a11acd0bf22af556645f51394753f7d47 (const Tp::ContactSearchChannel::SearchResult &result) virtual ~ContactSearchChannel a00328.html a2e098658a284a68d3da3e3cf5f04c1b6 () ChannelContactSearchState searchState a00328.html ac7ab1919bc7bda2b53978f129455c818 () const uint limit a00328.html a5959f05cef06d33ab26329cf8b5f96b0 () const QStringList availableSearchKeys a00328.html a50583016b5b63c746731ac83613e556d () const QString server a00328.html aee18c17cd612dec094192c68fb26c9f0 () const PendingOperation * search a00328.html aed86236f46e2a8c8c98be1028179424c (const QString &searchKey, const QString &searchTerm) PendingOperation * search a00328.html ac26ebbc56d95167ef0190f810e7a299c (const ContactSearchMap &searchTerms) void continueSearch a00328.html aaf683cddb21337c62111e0f240dc8597 () void stopSearch a00328.html afc3eb7cc90889b6590609542ec830029 () static ContactSearchChannelPtr create a00328.html a96801b2054954b6df9768da72eccecab (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00328.html a4abe3794920e06ec1ee7db7bd490dd51 ContactSearchChannel a00328.html a801b3050584be5d3a12d9c6831f50ccf (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) Tp::ContactSearchChannel::SearchStateChangeDetails a00502.html SearchStateChangeDetails a00502.html a0bb56eb4821f2f46d10a502edce1ffd4 () SearchStateChangeDetails a00502.html a6c3e7bc79cf99dd8ef53b886ed2c397f (const SearchStateChangeDetails &other) ~SearchStateChangeDetails a00502.html aa3e602c35a614fb9cda74c0fbb2fd52e () bool isValid a00502.html a4c0ec04e6ee971486623a554bbf2892d () const SearchStateChangeDetails & operator= a00502.html ade1e8fb20461d83a7f8179a8a6fcbecd (const SearchStateChangeDetails &other) bool hasDebugMessage a00502.html add8799b5f10ada18312b3f3be2b74ebe () const QString debugMessage a00502.html ab7b08d8964aa69cdb6d95af8dc13ce9a () const QVariantMap allDetails a00502.html a3730cbc8e89decd366e650e472880847 () const Tp::Contact a00313.html Tp::Object Tp::Contact::InfoFields PresenceState a00313.html ab758b1908d04f9870c8091456f3ddc5b @ PresenceStateNo a00313.html ab758b1908d04f9870c8091456f3ddc5baf7076e1e97f86d1c4ebc4ebe290e3c61 @ PresenceStateAsk a00313.html ab758b1908d04f9870c8091456f3ddc5ba9c5f79349a1de47e9734bf77042f0728 @ PresenceStateYes a00313.html ab758b1908d04f9870c8091456f3ddc5ba7eabc92c3f6ae76802f5bdfac658ebdc void aliasChanged a00313.html ace8b4e7779bda7a773b983114d549215 (const QString &alias) void avatarTokenChanged a00313.html a113976de58b07cf9da5e867aac61e61c (const QString &avatarToken) void avatarDataChanged a00313.html a612ee28bc1240ed7cc242c1d8ceb2c63 (const Tp::AvatarData &avatarData) void presenceChanged a00313.html a034354d4568e525569cad825070caae7 (const Tp::Presence &presence) void capabilitiesChanged a00313.html a0e3355749ebda1585ac55b379ad128fd (const Tp::ContactCapabilities &caps) void locationUpdated a00313.html acae80bba6988ba2355626852c773e416 (const Tp::LocationInfo &location) void infoFieldsChanged a00313.html af6169b8950a3e67cc96b4832cf336e73 (const Tp::Contact::InfoFields &infoFields) void subscriptionStateChanged a00313.html af83e6bc67e66198c2090a27f868f4bd2 (Tp::Contact::PresenceState state) void publishStateChanged a00313.html afb7b962372cfb9d9eed5ec1e9c5fd36a (Tp::Contact::PresenceState state, const QString &message) void blockStatusChanged a00313.html a1db42abddc2803fcbd1597366251b9c7 (bool blocked) void addedToGroup a00313.html ab3289edf063657b66b6fc754185cc22a (const QString &group) void removedFromGroup a00313.html a9814b8af1fa29dad5bb1626b455c20a7 (const QString &group) void clientTypesChanged a00313.html aa01dea7d04735d8a9ddefd1d0c1b689c (const QStringList &clientTypes) ~Contact a00313.html ae778594b7fd91499112861b2b3d7772f () ContactManagerPtr manager a00313.html aea6e33b03faf8c68d4577bcb4161dc42 () const ReferencedHandles handle a00313.html ab64dc31bd4fbfc9791da9c60fe9f8173 () const QString id a00313.html aca45e993fea6618783ad2187d09d45b5 () const Features requestedFeatures a00313.html ae2dde6b88239722647494fca5e2c2b65 () const Features actualFeatures a00313.html a8705afdb5019e74ac92eec8dc9e5d94c () const QString alias a00313.html ad8348105833f362b812aa8aa8bfe698a () const QMap< QString, QString > vcardAddresses a00313.html a6760b6f21928b8fd49e203bc6a7b2b97 () const QStringList uris a00313.html ac785dfebd90f92fc8d8ef57b4846379c () const bool isAvatarTokenKnown a00313.html a6f7bfd8bfb8d0ad2ed11661ca052a7f3 () const QString avatarToken a00313.html a3605f3bef239b197e8dc9705f05de5e4 () const AvatarData avatarData a00313.html ab9ac335a30dcba596f7c98cd811a782a () const void requestAvatarData a00313.html aa92553f42d6de4ba1c285bff1233c014 () Presence presence a00313.html a27db3cfb69c113bbf39b9697bd013fe6 () const ContactCapabilities capabilities a00313.html a1afdb35ac692840aadf8091a9694b4df () const LocationInfo location a00313.html ad475fa80abd48fa447adf61d14bd2011 () const bool isContactInfoKnown a00313.html abc6f53dd1b25f60c3271397be64dfab3 () const InfoFields infoFields a00313.html ad2cc0129e906e9bc27b7a86b81dd8816 () const PendingOperation * refreshInfo a00313.html afbcc3d1622dae475b56caa8b43af5938 () PendingContactInfo * requestInfo a00313.html aa80d9b8a16b17856ad7abc5c63431fee () bool isSubscriptionStateKnown a00313.html ad14f250055a72a36b6ffde1943ce5201 () const bool isSubscriptionRejected a00313.html aa5b01df3d2cb99d663fbb34dbe2baa43 () const PresenceState subscriptionState a00313.html a650f9b833ebb36f28e7b8ac004e0e765 () const bool isPublishStateKnown a00313.html a3494aaab888db05620292cf2f32069dd () const bool isPublishCancelled a00313.html a044078488356a3c4b1b6c82061f66152 () const PresenceState publishState a00313.html aff2a3b67a62428cf4d06c90f69ef4688 () const QString publishStateMessage a00313.html a9d9baf0be1c527c35e14d8fccadf2c28 () const PendingOperation * requestPresenceSubscription a00313.html af30104295906e16cb1c98afb14acdd73 (const QString &message=QString()) PendingOperation * removePresenceSubscription a00313.html ab907f90204744c50836abd5a54d674fa (const QString &message=QString()) PendingOperation * authorizePresencePublication a00313.html a4f83e036d937ca58e82b25f72efebdb1 (const QString &message=QString()) PendingOperation * removePresencePublication a00313.html ab4b51e36e7efe1a921c2fb2d7bc391fb (const QString &message=QString()) bool isBlocked a00313.html a0c6a8d9c0fc3a99bb62d9246907192f5 () const PendingOperation * block a00313.html a32b183df90e0c037177b4335c1243b31 () PendingOperation * blockAndReportAbuse a00313.html a719edcff5e9353e6f1c72cb7cfbc31d6 () PendingOperation * unblock a00313.html a45c18438210c49f7dc08fa514d7e58a5 () QStringList groups a00313.html a0914911fa54d112aea94dc43d0fb124f () const PendingOperation * addToGroup a00313.html a37e3eccee021ba28b567b3256b4c592b (const QString &group) PendingOperation * removeFromGroup a00313.html a5df622e88d066440fac3a079b148afec (const QString &group) QStringList clientTypes a00313.html a47fa2c1858dc68be0f93b2745fac2050 () const PendingStringList * requestClientTypes a00313.html a1e6ab17e02ba414395574d8df6471d12 () static const Feature FeatureAlias a00313.html a536e766810218cd7d6de0d201dd03ebe static const Feature FeatureAvatarData a00313.html a6f66e39ad96bf52b25126f39459c47dc static const Feature FeatureAvatarToken a00313.html af9b6a80e2453f27272859b57cd47f80f static const Feature FeatureCapabilities a00313.html a06e83ec4d31a506b6812a8afda6a8af5 static const Feature FeatureInfo a00313.html a949fd098a4d13311dc4d81c2a1706553 static const Feature FeatureLocation a00313.html a3e80342afc76406c7c069d96e0cdbac8 static const Feature FeatureSimplePresence a00313.html af9098f3f176bfce4fa2628f97d4c9ae3 static const Feature FeatureAddresses a00313.html adafed65eb8ad4fb16e611ee8fc400d66 static const Feature FeatureClientTypes a00313.html a5210cf171bfb7d9df41c02b285fb24ce Contact a00313.html a8017eddef01ed158ac60957b213c1f09 (ContactManager *manager, const ReferencedHandles &handle, const Features &requestedFeatures, const QVariantMap &attributes) virtual void augment a00313.html a8bf74ad84d6ea767c4d3edd6af7e7624 (const Features &requestedFeatures, const QVariantMap &attributes) Tp::Contact::InfoFields a00377.html InfoFields a00377.html aa27a13bb4cb14c350220846d8d4ee84c () InfoFields a00377.html a5a84e96a2fb1e8f5013b023e06a636f5 (const ContactInfoFieldList &fields) InfoFields a00377.html ae16ade6240b6b63e5640db65a111c0e8 (const InfoFields &other) ~InfoFields a00377.html aa7e43607089a4dbe48b51b9b034f029f () bool isValid a00377.html a77b2fa73a80c4a54d2be600118cea44b () const InfoFields & operator= a00377.html acba855e62b6f4c74bbe56696ef529612 (const InfoFields &other) ContactInfoFieldList fields a00377.html a1ccbcfdf61b6e920aedbf77188c14dae (const QString &name) const ContactInfoFieldList allFields a00377.html a1a90bcf42b3647d238a5abd306f63ccf () const Tp::DBusError a00337.html DBusError a00337.html a8d43990c630256f0226983d7aaed17b3 () DBusError a00337.html a655dae19351bca06887016f258e47521 (const QString &name, const QString &message) ~DBusError a00337.html aea11156ce698b000d1d92f8e8b90f80c () bool isValid a00337.html a612c00e5a05312042297b7b2ded181a8 () const bool operator== a00337.html a65c50178f47a021ecf4e5debdcc591f8 (const DBusError &other) const bool operator!= a00337.html ac35fa8b59013e9788dde7b50e14c4c0e (const DBusError &other) const QString name a00337.html ab673c95a6a793a3c92bdf64c521b96dd () const QString message a00337.html a5d6b9b9f2192a7947f8236b0f64add0a () const void set a00337.html aa58c913f245d4841941f77022ff8e21a (const QString &name, const QString &message) Tp::DBusObject a00338.html DBusObject a00338.html a8a40ad322d15a975003d875d40350de8 (const QDBusConnection &dbusConnection, QObject *parent=0) virtual ~DBusObject a00338.html a399bdc058db284b634e7831128f58c5b () QString objectPath a00338.html a4286a623ab64e1e6257dde303955c692 () const QDBusConnection dbusConnection a00338.html a210eb370c731cb7c7c90f29c1d61be9f () const void setObjectPath a00338.html a2cadadc3294425d18e0ede0b9a07ada2 (const QString &path) Tp::DBusProxyFactory a00340.html Tp::RefCounted virtual QString finalBusNameFrom a00340.html acb7d5d014352d54ccd821911fb0ece05 (const QString &uniqueOrWellKnown) const =0 virtual Features featuresFor a00340.html a40aaeeb2981d2e0e62372bf744dad9ed (const DBusProxyPtr &proxy) const =0 Tp::DBusProxy a00339.html Tp::Object Tp::ReadyObject Tp::StatelessDBusProxy a00522.html Tp::DBusProxy Tp::StatefulDBusProxy a00521.html Tp::DBusProxy Tp::DBusService a00341.html Tp::Object virtual QVariantMap immutableProperties a00341.html a2ad262e8bb9c5577ad41f7b28a51e4e1 () const =0 virtual bool registerObject a00341.html a680d7bda2dab65741f80605d3b3ff607 (const QString &busName, const QString &objectPath, DBusError *error) Tp::AbstractDBusServiceInterface a00068.html Tp::Object Tp::DBusTubeChannel a00342.html Tp::TubeChannel void busNameAdded a00342.html ab78140328bdfa768da72cc64b3b4f668 (const QString &busName, const Tp::ContactPtr &contact) void busNameRemoved a00342.html a4739394d5e81812f0ab04be061afdcab (const QString &busName, const Tp::ContactPtr &contact) void stateChanged a00539.html a82f1cc0406c02e85f7a1bde6070d7f9d (Tp::TubeChannelState state) virtual ~DBusTubeChannel a00342.html a035b470a4d23a2be6183f5fe534f9c25 () QString serviceName a00342.html a44114279ecb94d29249fbb251d1ac807 () const bool supportsRestrictingToCurrentUser a00342.html aaaa5d832f72b29f54f98f45aca73455a () const QHash< QString, Tp::ContactPtr > contactsForBusNames a00342.html af33f624c11036679f22f2c6fcffb1c2b () const QString address a00342.html a23663e0cf235bb22ff6e1a8efb928211 () const virtual ~TubeChannel a00539.html ac2847a4f862906815c1231a2d80d52cb () TubeChannelState state a00539.html a9e5cd49ad6bfde378a79cdf69b8265dc () const QVariantMap parameters a00539.html a7d0eddeca675a3c0864fcc39b73bd4da () const static DBusTubeChannelPtr create a00342.html a5ad7ac4799086ea7d9236ddee3ea9160 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static TubeChannelPtr create a00539.html afbb45e75124522c4895889ed41445306 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00342.html a1532c8140e6f2ed059e0f5abebc292e1 static const Feature FeatureBusNameMonitoring a00342.html ac38c8afe2813f4f827d9db96a7750298 static const Feature FeatureCore a00539.html a0c08aeb853f66ffdf990a02ece5d2c65 DBusTubeChannel a00342.html abd1c98f647a199663d1291a30cb6107e (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) TubeChannel a00539.html a97fdee383ebd73669ea52f0440dc0830 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore) void setParameters a00539.html abc827001cd776312e5ba5129e204ad2c (const QVariantMap &parameters) Tp::DebugReceiver a00347.html Tp::StatefulDBusProxy void newDebugMessage a00347.html a77cb755d0fc2e1083a76a5a32b74997d (const Tp::DebugMessage &message) virtual ~DebugReceiver a00347.html a9e36301c70b0ede9cbc192cedae0a0ec () PendingDebugMessageList * fetchMessages a00347.html a14fd2429a6917eb2055dc5dcab752b6b () PendingOperation * setMonitoringEnabled a00347.html acd0fb1527de983e87c70fc33baba1b6a (bool enabled) static DebugReceiverPtr create a00347.html a5d97fe881da64526350223f3b01a9b7d (const QString &busName, const QDBusConnection &bus=QDBusConnection::sessionBus()) static const Feature FeatureCore a00347.html ab2e6ba8728c77b27bffc70bc2e60a2a5 DebugReceiver a00347.html a768521e4d61b9d456eb83314bbdacc28 (const QDBusConnection &bus, const QString &busName) Tp::Feature a00350.html Feature a00350.html a012f956361c1ecebbe1101e90f1fb585 () Feature a00350.html a8fd9131ecf0ab37dc40d183fcfc5a419 (const QString &className, uint id, bool critical=false) Feature a00350.html a9a9c5cc1323bc8407f41e1765f551a6c (const Feature &other) ~Feature a00350.html af2b721f78b9ec87e4e84cfa58e02eacb () bool isValid a00350.html aa7bdcceed648c4e53013f62ff70c8cf1 () const Feature & operator= a00350.html a6a528aabd2ec8873bb65a63bd5fbf9a9 (const Feature &other) bool isCritical a00350.html aa2bcc5f643bef92d16e9a83dfd976096 () const Tp::Features a00351.html Features a00351.html a452f412bb96ea2d2414fc4c39957e21b () Features a00351.html a9ddd199fc8617e26d7f3bf7d3d046f5a (const Feature &feature) Features a00351.html a6149e886e295bc642bf0fd65caae224b (const QSet< Feature > &s) Tp::FileTransferChannelCreationProperties a00354.html FileTransferChannelCreationProperties a00354.html af88b5debb7223e3ea7e3686373cfc1df () FileTransferChannelCreationProperties a00354.html a9b53c4e07a23bce1335436a144a130fc (const QString &suggestedFileName, const QString &contentType, qulonglong size) FileTransferChannelCreationProperties a00354.html ae6283dbd4f28c6bb8f5cb89a25acea44 (const QString &path, const QString &contentType) FileTransferChannelCreationProperties a00354.html a172f86f6c1d215480c5b6fb12930639b (const FileTransferChannelCreationProperties &other) ~FileTransferChannelCreationProperties a00354.html a9d0a86216d53695b8e21b25476ad2e8b () bool isValid a00354.html ac5b7f10b06cb08bed5441bfdde1e1b77 () const FileTransferChannelCreationProperties & operator= a00354.html a21fb3ede84111eb8029acd1e2cfc2faa (const FileTransferChannelCreationProperties &other) bool operator== a00354.html a00535df9850e61ed2b65048a781e08ba (const FileTransferChannelCreationProperties &other) const FileTransferChannelCreationProperties & setContentHash a00354.html a938143631f0a8bc3aec19d9a6398bccd (FileHashType contentHashType, const QString &contentHash) FileTransferChannelCreationProperties & setDescription a00354.html add08c21a31f96f4aeadcfe928c88f83e (const QString &description) FileTransferChannelCreationProperties & setLastModificationTime a00354.html a2faea887b38383b22915d94c6f1f9783 (const QDateTime &lastModificationTime) FileTransferChannelCreationProperties & setUri a00354.html a253204c3d7b8f8849d7b1960f8142123 (const QString &uri) QString suggestedFileName a00354.html a894fabe1070c8505b4fbbe3377e004b8 () const QString contentType a00354.html a3a3c73bc9ccd9b2b5138410b42bdfc93 () const qulonglong size a00354.html a75d61b0513af3d58109e112bc18f06ac () const bool hasContentHash a00354.html a4e9fc3bf77c33c788c6bdb0a9b4aeaed () const FileHashType contentHashType a00354.html a0455dcadbf8399ea1752877f888a55ab () const QString contentHash a00354.html a204cecb12943032ccef093294e46248a () const bool hasDescription a00354.html a529ce0e965b4d697b28b153aa6c5c479 () const QString description a00354.html a2953c5a58d733b2cb094915b329621e8 () const bool hasLastModificationTime a00354.html a9f91b23adf39e21ee94ed50785de6cfd () const QDateTime lastModificationTime a00354.html ad802a6b7f7e2d17363822bb449d62b9b () const bool hasUri a00354.html a2fd3f48687e3ded60552a61dd6b5970f () const QString uri a00354.html a0a9855af1a389c6cb13fd5a12f5398d1 () const Tp::FileTransferChannel a00353.html Tp::Channel void stateChanged a00353.html ae7bab5a3817ce7c036509b3548c59d8b (Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason) void initialOffsetDefined a00353.html a1625963b2ed309a3b559ec1a34e47788 (qulonglong initialOffset) void transferredBytesChanged a00353.html ab5e1fc0317125ba466988f3f11c47ca0 (qulonglong count) virtual ~FileTransferChannel a00353.html acae3f8a38d02f05ad8752981f5c4d5c5 () FileTransferState state a00353.html af5eaf95fce467175709bc9a677a99823 () const FileTransferStateChangeReason stateReason a00353.html a60f72666dfef89e088ae3a0b0f48f74d () const QString fileName a00353.html a0b641c616449a894ff960d463748c383 () const QString contentType a00353.html aacfbbfd5b51c4da2641ccc8c353188c9 () const qulonglong size a00353.html abb67c974edd4363cace18283d29cbbce () const QString uri a00353.html ac1afab6110e28bbdff1fee46b7f8b7a7 () const FileHashType contentHashType a00353.html a1481e951ea766d1422859347cf64a182 () const QString contentHash a00353.html aa5dfb852c95bba3241e75da21e8e3ff3 () const QString description a00353.html aa0113985b9f3eaf249ebc7f90a2bd72a () const QDateTime lastModificationTime a00353.html a6710729f5b777cb039b5b6fb62ddf836 () const qulonglong initialOffset a00353.html a34dbec4a30c0d73d1f8861a3500af57d () const qulonglong transferredBytes a00353.html a7bcbf39ec7d92537bbda507e9cf07a7c () const PendingOperation * cancel a00353.html a02cd4e2fd045b474e488b87fbe6c1f07 () static FileTransferChannelPtr create a00353.html abc5e5967f512675521c323b480bae955 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00353.html a5f5f0af9fa83ed14c097670c05b0ed71 void onUriDefined a00353.html a7d5d10c8e3c57e2e54ab53d9cc34453c (const QString &uri) FileTransferChannel a00353.html a9d502b0dafe62f57370bb519443a3265 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore) SupportedSocketMap availableSocketTypes a00353.html a497872a3f691722f20654937b5cbea90 () const virtual void connectToHost a00353.html aa86326ced6b70b4d1b26e1f784167df7 () bool isConnected a00353.html a7d40e3566345990a25a4f84f5189ab89 () const void setConnected a00353.html a34305944fca0868033cfae04512d4a4b () bool isFinished a00353.html a6a6d65f672214327340a44fee3fffd3d () const virtual void setFinished a00353.html a08527165099e8d671437727144871e9d () Tp::Filter a00355.html Tp::RefCounted virtual bool isValid a00355.html a26fe0d603bfd361eb3dc5885ed71ad91 () const Tp::FixedFeatureFactory a00356.html Tp::DBusProxyFactory Tp::BaseFunctor a00125.html Tp::PtrFunctor0 a00477.html Tp::BaseFunctor R(* FunctionType a00477.html a7f36a21e71f37e9d154c651c64eacefb )() R ResultType a00477.html abebbfc39abf235c103e90482bc003584 PtrFunctor0 a00477.html ac7185221d1144bfcbeb480244a2d9ea6 (FunctionType fn) ResultType operator() a00477.html a8e356d5cb210dbf67cf340c2f3e77735 () const FunctionType fn a00477.html a31ccfd2562ebc25f15b4ed7dbf553604 Tp::MemberFunctor0 a00396.html R T Tp::BaseFunctor R(T::* FunctionType a00396.html a1b808950da7da9579d3d43adf4de3f98 )() R ResultType a00396.html a87fb57058d08ed9cd019eebf236c2118 MemberFunctor0 a00396.html ab90e18d88ff643b8feec70e0d0f018b2 (T *object, FunctionType fn) ResultType operator() a00396.html a639c328b2cc6a81f17c3bc6f05b89537 () const T * object a00396.html ab1f8d31789dbe7155641bacd151ae947 FunctionType fn a00396.html a4a3579278df934e6ccf4c4f6555ab65b Tp::PtrFunctor1 a00478.html Tp::BaseFunctor R(* FunctionType a00478.html a4db78f6e4963fa72e500f4605aeb56b9 )(Arg1) R ResultType a00478.html a2e0b721873a46a51ea4c11f478c4ab8c PtrFunctor1 a00478.html a260ed00f836f6105d7971e8726b370d8 (FunctionType fn) ResultType operator() a00478.html a6f86a7eb2995d8ba8e225be802c66276 (Arg1 a1) const FunctionType fn a00478.html ac6f5715394fbf62789557076039f61fa Tp::MemberFunctor1 a00397.html R T Arg1 Tp::BaseFunctor R(T::* FunctionType a00397.html a569f3cc2ccd0f58f60d6aadfc5fab828 )(Arg1) R ResultType a00397.html a0ebb2b3efe65dff1284c852bf094d88b MemberFunctor1 a00397.html a0df4f0a3c73af27a50dd79c892b2e9b7 (T *object, FunctionType fn) ResultType operator() a00397.html a250548c62d4a786bb4387da2a562613e (Arg1 a1) const T * object a00397.html a3976788911c7ce9f4eea0dc6f827f93d FunctionType fn a00397.html a5f3954962bb3755fe0892d16c82ce7cf Tp::PtrFunctor2 a00479.html Tp::BaseFunctor R(* FunctionType a00479.html ababd6af3fe5524d4c59e070ac4a2a389 )(Arg1, Arg2) R ResultType a00479.html a319c715d757f577e295c8f307cd80a81 PtrFunctor2 a00479.html a10e3f7bfd0820eb81eba8a3efb5a3e77 (FunctionType fn) ResultType operator() a00479.html a604de724bf536ba97f7dc799a07b7c9c (Arg1 a1, Arg2 a2) const FunctionType fn a00479.html aac196f235c861f44da75f72bddb80461 Tp::MemberFunctor2 a00398.html R T Arg1 Arg2 Tp::BaseFunctor R(T::* FunctionType a00398.html aacdebabf70169c2ce67ba7f6be5e27c7 )(Arg1, Arg2) R ResultType a00398.html a1942264de104c940bf9a9014a2078845 MemberFunctor2 a00398.html ae4821a83c1c7d92ed37ea173775cfbc3 (T *object, FunctionType fn) ResultType operator() a00398.html af75910c9c2b82dc1a05296382e6ff172 (Arg1 a1, Arg2 a2) const T * object a00398.html ad58994441f870edb83c736f694394622 FunctionType fn a00398.html a626f4d11da224396fcc0aab1770157e5 Tp::PtrFunctor3 a00480.html Tp::BaseFunctor R(* FunctionType a00480.html a32a14c6693e1e8940c4dccc32fae5c6e )(Arg1, Arg2, Arg3) R ResultType a00480.html a5c0e4e4c122a0305b9f29a9eb2daa080 PtrFunctor3 a00480.html afd1b16a218044f653f085973596e778c (FunctionType fn) ResultType operator() a00480.html ae73625ea5ce8db7cb3b50a957ee67c00 (Arg1 a1, Arg2 a2, Arg3 a3) const FunctionType fn a00480.html af54e1109f6c0898367ddffcb89725d8e Tp::MemberFunctor3 a00399.html R T Arg1 Arg2 Arg3 Tp::BaseFunctor R(T::* FunctionType a00399.html a35e62e61349d8015454c877ee2492ed7 )(Arg1, Arg2, Arg3) R ResultType a00399.html a21126b048feaac620c076e6178f016d8 MemberFunctor3 a00399.html a4d29af967a24b06c261b48709d56db9e (T *object, FunctionType fn) ResultType operator() a00399.html ac632a04a839468df5290e20c5b3a56c5 (Arg1 a1, Arg2 a2, Arg3 a3) const T * object a00399.html a37ea89dc7db6d5c78b7dadb1bf5c1266 FunctionType fn a00399.html af996485857a2fb96d68b87281a8aab0f Tp::PtrFunctor4 a00481.html Tp::BaseFunctor R(* FunctionType a00481.html a445684d50a0c91aaaa85ff099ea85667 )(Arg1, Arg2, Arg3, Arg4) R ResultType a00481.html aa7182d38b55157b630f4ac495841c26a PtrFunctor4 a00481.html aece4779f9026524a44b305ab822aad6a (FunctionType fn) ResultType operator() a00481.html ad4fd8459459cdf9b3d37ce5379bcc723 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const FunctionType fn a00481.html a8534f8cc00cbf74525b641e28c201e2e Tp::MemberFunctor4 a00400.html R T Arg1 Arg2 Arg3 Arg4 Tp::BaseFunctor R(T::* FunctionType a00400.html a5a2c29dc260f64bb0efc3197f74a5a81 )(Arg1, Arg2, Arg3, Arg4) R ResultType a00400.html a2116745890f5ff8cf89957fa47e28b5d MemberFunctor4 a00400.html a08a9c674afd018fb4b71586ec9cdc5e5 (T *object, FunctionType fn) ResultType operator() a00400.html abb6ef93b62bf81aa2f30d0bb4730b06c (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const T * object a00400.html af0a6fd1a90cee14a54f18860838300ad FunctionType fn a00400.html abcc76109d98e89c2d2d0ea0a62b83b29 Tp::PtrFunctor5 a00482.html Tp::BaseFunctor R(* FunctionType a00482.html a79d99a241cb28b84c59d57433aa5112c )(Arg1, Arg2, Arg3, Arg4, Arg5) R ResultType a00482.html a4fb88d3e89a23bd35b7eb03c703d7d87 PtrFunctor5 a00482.html adb8d980d6a0dd413926dd46188e85d58 (FunctionType fn) ResultType operator() a00482.html a92dc97399b219cd08a063bc885e0e181 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const FunctionType fn a00482.html a4fcaab783a819a70963886f172cd695d Tp::MemberFunctor5 a00401.html R T Arg1 Arg2 Arg3 Arg4 Arg5 Tp::BaseFunctor R(T::* FunctionType a00401.html ab2d678ce00ef081437c27fb0fa734d60 )(Arg1, Arg2, Arg3, Arg4, Arg5) R ResultType a00401.html a09518cab4836da0b2b3a1253cdcc5ab2 MemberFunctor5 a00401.html acfd94005025a0ec05f5088742c9115e5 (T *object, FunctionType fn) ResultType operator() a00401.html aee5fe4dadf4113bc23aeea7930803b6e (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const T * object a00401.html a238734aa28508ef29e26d67302ad0df2 FunctionType fn a00401.html aba0ff8bbffa9ebedfe29597840fa65b1 Tp::PtrFunctor6 a00483.html Tp::BaseFunctor R(* FunctionType a00483.html afe6e77fc684f799ddd6449cefa465446 )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) R ResultType a00483.html a9484811c326c0a80cdacf47eb8e5abf8 PtrFunctor6 a00483.html a874637c4d70b11da1015c21b0c636094 (FunctionType fn) ResultType operator() a00483.html a9350b09154fb4e1d4f3a7906b67fa305 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const FunctionType fn a00483.html a748d7551e6debbfa9bdd81fdd8b3f4d9 Tp::MemberFunctor6 a00402.html R T Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Tp::BaseFunctor R(T::* FunctionType a00402.html aa2523de0913df7edda30bdb98ccd8949 )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) R ResultType a00402.html ae3bdb1c7cdc064c3e816e58d704b080c MemberFunctor6 a00402.html ae94b592ca2ca9310f77bf3d4a57789a2 (T *object, FunctionType fn) ResultType operator() a00402.html a84c3d9b2be733b847f117ad7710ce835 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const T * object a00402.html aac914df4f98fe659fafe0d6f1be99db8 FunctionType fn a00402.html ad9a18a7eb3a5901d7f2a3cdd16e979ef Tp::PtrFunctor7 a00484.html Tp::BaseFunctor R(* FunctionType a00484.html adab4b0951200ee741c5be3ccbcbc4cb3 )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) R ResultType a00484.html a6e296a3fd9bfda944a1b6e66e730df6a PtrFunctor7 a00484.html a90023dbc25c8eeab213cfe4b1122bac0 (FunctionType fn) ResultType operator() a00484.html abcac3d9986e0ad6f258856a5cac2d608 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const FunctionType fn a00484.html afac511cefc9ed93892308d699e077923 Tp::MemberFunctor7 a00403.html R T Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Tp::BaseFunctor R(T::* FunctionType a00403.html a36fd7762fd29592aa5b294589d7352a5 )(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) R ResultType a00403.html a0450634868848146d2165e961b3d3f51 MemberFunctor7 a00403.html a66f8a0c1a818c4d9f675d8706c420246 (T *object, FunctionType fn) ResultType operator() a00403.html a37ee11c370b6a2de9b498d4a345ca318 (Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const T * object a00403.html a78e8c43a63666356eed0087aaf806f64 FunctionType fn a00403.html a02f5f09b8a8d6a30e51519646be2765c Tp::GenericCapabilityFilter a00365.html Tp::Filter virtual ~GenericCapabilityFilter a00365.html a8dbbf38edd043b5b2ed114c81df039b5 () virtual bool isValid a00365.html a8d354be2876ec75479fd30c8b28d3374 () const virtual bool matches a00365.html ace0fafd2261279ee8a59f4f32b5c709f (const SharedPtr< T > &t) const RequestableChannelClassSpecList filter a00365.html a0f2d8289e149711b0749cc3d17530c20 () const void addRequestableChannelClassSubset a00365.html a31c32288601a65f063fe6cace72c2bc0 (const RequestableChannelClassSpec &rccSpec) void setRequestableChannelClassesSubset a00365.html af6204fef98cc3cf25b649926fabb1281 (const RequestableChannelClassSpecList &rccSpecs) static SharedPtr< GenericCapabilityFilter< T > > create a00365.html a74b1b36289a8dbc2458e1197bfda9c66 (const RequestableChannelClassSpecList &rccSpecs=RequestableChannelClassSpecList()) Tp::GenericPropertyFilter a00366.html T Tp::Filter virtual ~GenericPropertyFilter a00366.html a5dd35a21eb35072976cc22889d9fc774 () virtual bool isValid a00366.html a736f972b7f0531e551470cd76aa619ae () const virtual bool matches a00366.html aa7cf2cb7ddaa0a78bb1a89e3dd81a338 (const SharedPtr< T > &t) const QVariantMap filter a00366.html ad6bbf4bc4e5c3d06ad64663174cc23e7 () const void addProperty a00366.html a6f217b50d0be61932053444753be8995 (const QString &propertyName, const QVariant &propertyValue) void setProperties a00366.html ab8f6ecfbfd3a42d2388b70fb18d30cc3 (const QVariantMap &filter) GenericPropertyFilter a00366.html a652316270232cb34ef0317fd044f84f4 () Tp::HandledChannelNotifier a00368.html void handledAgain a00368.html a87035ac3451b7c0225625f308fb5d21c (const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints) ~HandledChannelNotifier a00368.html a827b9da4b2863577ba664fda40bc4690 () ChannelPtr channel a00368.html a90226a5762c1f6c743f91901ded0c9f4 () const void connectNotify a00368.html aaf6bef7bab640f551166047b9313283a (const QMetaMethod &signal) Tp::IncomingDBusTubeChannel a00374.html Tp::DBusTubeChannel virtual ~IncomingDBusTubeChannel a00374.html a390145993bcbff3b01c5d7cd60615b2d () PendingDBusTubeConnection * acceptTube a00374.html aabde954e1a410fa9ed25113973f532b3 (bool allowOtherUsers=false) static IncomingDBusTubeChannelPtr create a00374.html ae3e2251a78cf64a0db783291a5336685 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) IncomingDBusTubeChannel a00374.html af71545325a918ba798504a4859189332 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) Tp::IncomingFileTransferChannel a00375.html Tp::FileTransferChannel void uriDefined a00375.html afc82c988a18c5ef9f42cd2dd09d6564c (const QString &uri) virtual ~IncomingFileTransferChannel a00375.html a15b6bb0c0d092a524cc0bbdfb321766a () PendingOperation * setUri a00375.html a44c842f20225191f2fada0d6ac95d87b (const QString &uri) PendingOperation * acceptFile a00375.html aa62e022018986504a09f1f74172c991d (qulonglong offset, QIODevice *output) static IncomingFileTransferChannelPtr create a00375.html aafd81dd707b1d9c150e3ff21f93d9b2f (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00375.html acfa3edfc8e92758318b00454b6efd946 IncomingFileTransferChannel a00375.html a317d951472f8d1c2e0b8ac73f2654d22 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=IncomingFileTransferChannel::FeatureCore) Tp::IncomingStreamTubeChannel a00376.html Tp::StreamTubeChannel virtual ~IncomingStreamTubeChannel a00376.html a2f925c020b2a8dc99159fb9c198b80bf () PendingStreamTubeConnection * acceptTubeAsTcpSocket a00376.html a81e4fdcff28b00da56f0f77b7d68eeec () PendingStreamTubeConnection * acceptTubeAsTcpSocket a00376.html a6f8cc5a73e228b693f97917bbafdcf11 (const QHostAddress &allowedAddress, quint16 allowedPort) PendingStreamTubeConnection * acceptTubeAsUnixSocket a00376.html a85b4649b59e5ff5b1e501dad211e6ec1 (bool requireCredentials=false) virtual ~StreamTubeChannel a00528.html a670a7edc78854d28f5939fc56b255256 () QString service a00528.html ad25d53d8887f62bdc60c49c0f212a09b () const bool supportsIPv4SocketsOnLocalhost a00528.html a57a39b41239275e56c6e9dabdfe6ddb9 () const bool supportsIPv4SocketsWithSpecifiedAddress a00528.html a0af05f4159e124f86ac049b59df9a7a2 () const bool supportsIPv6SocketsOnLocalhost a00528.html a3e27bd9f2044d3c426ecde0d6833215d () const bool supportsIPv6SocketsWithSpecifiedAddress a00528.html a9b32c022174410548d38b79eb8d2c8b9 () const bool supportsUnixSocketsOnLocalhost a00528.html a76fa470eabdffcac7f7c05bd21d5c1cc () const bool supportsUnixSocketsWithCredentials a00528.html ac02fa715c03e8cd95fea129bd53027d2 () const bool supportsAbstractUnixSocketsOnLocalhost a00528.html ac384eef8c7e96aff0dcb321488ee55f4 () const bool supportsAbstractUnixSocketsWithCredentials a00528.html a1361c871ccb7a315cb133cc74e708337 () const QSet< uint > connections a00528.html aed3e952bc172ccd365aa885e0547945b () const SocketAddressType addressType a00528.html ad573db7778832e72613013c74c8a3fee () const QPair< QHostAddress, quint16 > ipAddress a00528.html ab3e29d999bdf9a3c2b72c478c252892e () const QString localAddress a00528.html af626269a9b076f4b6bff0ad0551b39ef () const static IncomingStreamTubeChannelPtr create a00376.html a89b4f36f0440a9e270c1401c663ada3f (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static StreamTubeChannelPtr create a00528.html a7fcf100a3e44372bca8339f9360e5d88 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00376.html a8d39c272c1f678db8e3fc325cd32ece6 static const Feature FeatureCore a00528.html a1e74072fe858a01ce407559613df814c static const Feature FeatureConnectionMonitoring a00528.html ac39339717d06a96b23cbfb7cbfc3540c IncomingStreamTubeChannel a00376.html a58c730a7e80a26fcf4e5a6f972076944 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=IncomingStreamTubeChannel::FeatureCore) StreamTubeChannel a00528.html a47929ec1d83df485725563e562c1656f (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore) void addConnection a00528.html a0565694a41a26961abf4e1f239920dc0 (uint connection) void removeConnection a00528.html ae3f116cfe5b3a843f23eb1d98c46a786 (uint connection, const QString &error, const QString &message) void setAddressType a00528.html a6529f1e57db95892102e77efa48d2b56 (SocketAddressType type) SocketAccessControl accessControl a00528.html aa5a1e3ccd70234bf1545e16f4202e74c () const void setAccessControl a00528.html a11422822baae08b270baf238b107db4a (SocketAccessControl accessControl) void setIpAddress a00528.html a6af133554c88a3511945ea97852a6ba5 (const QPair< QHostAddress, quint16 > &address) void setLocalAddress a00528.html a3793c2237941df78ed307350ce10421e (const QString &address) bool isDroppingConnections a00528.html a3449070e8220a8e12b029aea4b0b6fe9 () const void newConnection a00528.html a5f85450588e2d896e6de3bacdbdeb3cc (uint connectionId) void connectionClosed a00528.html a82d6927b2594f38f7e456385f4012012 (uint connectionId, const QString &errorName, const QString &errorMessage) Tp::LocationInfo a00383.html LocationInfo a00383.html acd9932c167e16f55340c294ee984d961 () LocationInfo a00383.html ad7a03b4ecce6ca4caad7d3086d110a59 (const QVariantMap &location) LocationInfo a00383.html a5ee2bd51ea377d912b033adb35d27ea5 (const LocationInfo &other) virtual ~LocationInfo a00383.html a4711ec46f054df87b4f5711edeea0718 () bool isValid a00383.html a6279ae2f6334149758a631903160320c () const LocationInfo & operator= a00383.html aba0d32eefe42585c30aefbf229f5fa89 (const LocationInfo &other) QString countryCode a00383.html aa2b40311c7436830f7aba2cbbad88036 () const QString country a00383.html a91723726d39ec0ec61f800fc263f620c () const QString region a00383.html a501639f209f2b42d45d2935ec87dc71d () const QString locality a00383.html aead56e91289b69adede588cd2de93e7c () const QString area a00383.html af56b6b0234c34c30c3366b6071753265 () const QString postalCode a00383.html a2599452941ac36b3bb979be3bacb1d65 () const QString street a00383.html aac639f13871160fffbda6579ce6b2327 () const QString building a00383.html a7f8166a18e3f633640230d5c53185e69 () const QString floor a00383.html a2af07738c7ffe45f703fc55a50b49921 () const QString room a00383.html aa562af7a5a6a12af7caab608b0b5107d () const QString text a00383.html a742e2e00504806d02e862a8429ffbf19 () const QString description a00383.html ad14a780af31a3cf634b8024496011671 () const QString uri a00383.html a41730be987e016cbcb9ddc4e1eae855e () const QString language a00383.html aefa38e6c6f9837974cae438f4ae68c15 () const double latitude a00383.html af37525c5d85ba8db4e1dcbe009dc244f () const double longitude a00383.html adc11a6ac2b877f10741e6f36795d0a5c () const double altitude a00383.html a44e6ca6341d2afadfb4d477015ff763f () const double accuracy a00383.html a1c7c6b92becfc24db142a21781c74f67 () const double speed a00383.html ab2d1e382375c5df18ab6173013ddb0e9 () const double bearing a00383.html aa3ba2dd02d194ecec25ddd49ea580ca1 () const QDateTime timestamp a00383.html aefdc0b6a3da88602ff6c27ec9bd1a114 () const QVariantMap allDetails a00383.html a0fab2cac03b8114ae6d5ee9a26134f44 () const Tp::MessageContentPart a00405.html MessageContentPart a00405.html af3bcd49e8f0e5425d91d6572ec441da0 () MessageContentPart a00405.html acf07c09fefeb7b996a58fcc99c4d053a (const MessagePart &mp) MessageContentPart a00405.html a108edee8ed3430b0c2bdc82ea0e2f2e6 (const MessageContentPart &other) ~MessageContentPart a00405.html ad79450f106c1723b95b7a265603092a7 () bool isValid a00405.html ab8daf140eb4dd3fa7464ed0fbebf3781 () const MessageContentPart & operator= a00405.html aa211e6ca7171480591dee1160bdbee00 (const MessageContentPart &other) bool operator== a00405.html a3f8c2c5a7478a4212fd8ab20e3e34c07 (const MessageContentPart &other) const MessagePart barePart a00405.html ac421ec6ee4ed28105a0689f3049dfeb1 () const Tp::MessageContentPartList a00406.html MessageContentPartList a00406.html a2708056ac491f1887f5f84bd4210268e () MessageContentPartList a00406.html a225066eafa3e72646c7e292de4962d40 (const MessagePart &mp) MessageContentPartList a00406.html a04a39163a6edd529fda90f9cb2505120 (const MessagePartList &mps) MessageContentPartList a00406.html aaf724d1c1367409e2c17e4d44921e0b1 (const MessageContentPart &mcp) MessageContentPartList a00406.html a91fa92965705e60e99d6291fd48d86c6 (const QList< MessageContentPart > &other) MessagePartList bareParts a00406.html a30268e7538f093cc8b70609ad38a15ef () const Tp::Message a00404.html Message a00404.html a613729fbb1dd2e2a8280c0218055ca9c (ChannelTextMessageType, const QString &) Message a00404.html a12ad1f6c77609ba2cd3d3d081c3c8d25 (const Message &other) ~Message a00404.html aef167f02f084bb4950fe5daf855281c8 () Message & operator= a00404.html a5688d85413d3be1c03d4db54e80dcc9e (const Message &other) bool operator== a00404.html aae5944d0f2387b9a5e4d205a57d2f31a (const Message &other) const bool operator!= a00404.html ab44f1b185f23f41795e7bfc29c6d4ac1 (const Message &other) const QDateTime sent a00404.html a50b3c6c7a03d2c2f132915b9087c0a19 () const ChannelTextMessageType messageType a00404.html ab17c74b432798fa117369cb88a67ea61 () const bool isTruncated a00404.html aaa663a7149c35528f19b997f83c65601 () const bool hasNonTextContent a00404.html afe7b6f02defee51318d53c1630e218f7 () const QString messageToken a00404.html a61584c03abf795aea21205f50ec81bfa () const bool isSpecificToDBusInterface a00404.html aab23c41b78a78d35ad921ad5a53fc975 () const QString dbusInterface a00404.html ae18bd32e2fb4437345f247bb29e63043 () const QString text a00404.html a7707a341dabe4ee5f99fc0247d891fe6 () const MessagePart header a00404.html a7fe6f84f66c787956723f04ab92c808a () const int size a00404.html ae50f4914b58c68fa4f78378047b4ea3f () const MessagePart part a00404.html a6162eee67ff8d4bfb3707c52bdac93ba (uint index) const MessagePartList parts a00404.html ab259a109bc86cf1435a63374ac3fb29c () const Tp::ReceivedMessage a00488.html Tp::Message Tp::ReceivedMessage::DeliveryDetails ReceivedMessage a00488.html ac9c8a6c2de8f85e3497ae55763b2666d (const ReceivedMessage &other) ReceivedMessage & operator= a00488.html a3e813666af59e9498543662a1bfcc3d6 (const ReceivedMessage &other) ~ReceivedMessage a00488.html a89ac72b35d58e961d4e3d8e110d9849b () QDateTime received a00488.html ae9457ab365ace5059be01881d8382891 () const ContactPtr sender a00488.html a651d3313775c1796b7fb17459eb6796e () const QString senderNickname a00488.html ab4bc0b337115d4b7bac22d0f506800b1 () const QString supersededToken a00488.html aa6cc806bb2a649979ddb3fbdf12bac19 () const bool isScrollback a00488.html af57030d9d5b0e0ded2cbea4c1cc1c03f () const bool isRescued a00488.html a58bbb6f3c9bfc3c941f316e4e89aaa58 () const bool isDeliveryReport a00488.html a2bfe8450380543052b189f6ff4dda269 () const DeliveryDetails deliveryDetails a00488.html a522811cc1187229c243abaab9a86dad2 () const bool isFromChannel a00488.html aa18322677acc4e0f8600cfe1c36b0e1e (const TextChannelPtr &channel) const ReceivedMessage a00488.html a3d6814887cb603a8d410879bfdc87744 (const MessagePartList &parts, const TextChannelPtr &channel) ReceivedMessage a00488.html aad9268aaedb5ba2cebe0d9a487688ecb () uint senderHandle a00488.html a507917e2bb6a8c73bdee4794c94f27dc () const QString senderId a00488.html afecd91e7d104263ac33ad6e2dc7723ce () const uint pendingId a00488.html ab8ca904e34bd56ccd381a913125c9844 () const void setForceNonText a00488.html a6fe1550b58300fdd72a007badc8846bd () void clearSenderHandle a00488.html ae9cf455e5fb23c914c1a466c0f5285ae () void setSender a00488.html a9f1529e2edb888c2cd39675340acca63 (const ContactPtr &sender) Tp::ReceivedMessage::DeliveryDetails a00348.html DeliveryDetails a00348.html aaf48e2cb49dc4ec6749221edadad4ef7 () DeliveryDetails a00348.html acd6bcdafb4b329e17cd961439ff7b4e2 (const DeliveryDetails &other) ~DeliveryDetails a00348.html aac75c7a3c5174a27e7726098c0bc1125 () DeliveryDetails & operator= a00348.html a4f2ef888429475dd225bc09a04b52ca6 (const DeliveryDetails &other) bool isValid a00348.html ac76a13b12fbabc831ffb8efffab8e4e4 () const DeliveryStatus status a00348.html a432c4ab80fb3bce56cea36e63312a1af () const bool hasOriginalToken a00348.html a58ed2c6b3335480aedff73522c2cd7da () const QString originalToken a00348.html a728038f8e72138f868a7e8dd58d16775 () const bool isError a00348.html ac462e2ad27c59029ba06815e08464474 () const ChannelTextSendError error a00348.html ac7812446b2dcfd0aeb0c873e26880f94 () const bool hasDebugMessage a00348.html af581dc9573c78becf6aaa855fa0fcd5f () const QString debugMessage a00348.html af508c6ed4d29ab2644b8cd49b0951417 () const QString dbusError a00348.html a3af4edab81649d45a3a75d746640f1e8 () const bool hasEchoedMessage a00348.html ac1015d544f2d0861668b020c26d37f0a () const Message echoedMessage a00348.html ad41858a3ff01e2d6ad0d48b8c53a343d () const Tp::MethodInvocationContext a00410.html T1 T2 T3 T4 T5 T6 T7 T8 Tp::RefCounted MethodInvocationContext a00410.html a46aea8301afc328f226cef0276cecf55 (const QDBusConnection &bus, const QDBusMessage &message) virtual ~MethodInvocationContext a00410.html a14890ae9fe15a479b02bdcfa80c3fc25 () bool isFinished a00410.html afed5371f98647dd35b2f46eaa706d7f2 () const bool isError a00410.html a833f4d41875b5954d49b0a5d79a0ea32 () const QString errorName a00410.html a00279091ddb8c7eb16f33c9b0fd578cb () const QString errorMessage a00410.html a56aaa54b6a4d73c16e273de93fab24c9 () const void setFinished a00410.html a178f52fefcc6ac93f1e9aef7c5c8b984 (const T1 &t1=T1(), const T2 &t2=T2(), const T3 &t3=T3(), const T4 &t4=T4(), const T5 &t5=T5(), const T6 &t6=T6(), const T7 &t7=T7(), const T8 &t8=T8()) void setFinishedWithError a00410.html accc180d53a757b3aa9bc9286dc464712 (const QString &errorName, const QString &errorMessage) Select< Index >::Type argumentAt a00410.html a8a4e5e0f5e5426ead7974adc6bf8e8f3 () const virtual void onFinished a00410.html a21ab9f2452e8c617275a49047fe8d385 () Tp::NotFilter a00414.html Tp::Filter virtual ~NotFilter a00414.html aa7b7d2ab12328884ff4ac84d52d7b880 () virtual bool isValid a00414.html a3c2f57defc9d77ebef94bb9c7be99fd4 () const virtual bool matches a00414.html aaa029bf9105fe39d2d106b9fe096f8ce (const SharedPtr< T > &t) const SharedPtr< const Filter< T > > filter a00414.html a98af04ea3fd767c5620813a6e52527af () const static SharedPtr< NotFilter< T > > create a00414.html a1d7c4f04dbf69ca810c690130e149648 (const SharedPtr< const Filter< T > > &filter=SharedPtr< const Filter< T > >()) Tp::Object a00415.html Tp::RefCounted Tp::OptionalInterfaceFactory a00419.html DBusProxySubclass InterfaceSupportedChecking a00419.html a7d7b4eec46ac3258e70177f6e3e4937f @ CheckInterfaceSupported a00419.html a7d7b4eec46ac3258e70177f6e3e4937fa3656e4c2bd93aa3aac424933c316d655 @ BypassInterfaceCheck a00419.html a7d7b4eec46ac3258e70177f6e3e4937fa24a4d338ee86ab43371d960a1faedcd9 OptionalInterfaceFactory a00419.html a246a25e9db61df8f276dc16d2802e945 (DBusProxySubclass *this_) ~OptionalInterfaceFactory a00419.html a33a51382c8d11e0b2d2e5e38de96e490 () QStringList interfaces a00419.html afa2877d62298299d006b46d77fecc09e () const bool hasInterface a00419.html a98357110cdffae727bb8f2bee80cc281 (const QString &name) const Interface * optionalInterface a00419.html a420b5a495b76274faa02b24de38af1fa (InterfaceSupportedChecking check=CheckInterfaceSupported) const Interface * interface a00419.html a2ce7f206a9eee3da8bfa31a23b15283c () const void setInterfaces a00419.html ae57eceda64422bb29f0aa121609c1f19 (const QStringList &interfaces) Tp::OrFilter a00420.html Tp::Filter virtual ~OrFilter a00420.html af285cea764f4d2ac71b5d5b4113b6198 () virtual bool isValid a00420.html a210066efb26ec9b627ce6be0fc7903bd () const virtual bool matches a00420.html a97895e9d3a7403af8a6acd821ad11cf4 (const SharedPtr< T > &t) const QList< SharedPtr< const Filter< T > > > filters a00420.html a22ae917c2b95bfb87ab52e8d72843822 () const static SharedPtr< OrFilter< T > > create a00420.html a7b688cfcd68bd5ff686d33f79711760c (const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >()) Tp::OutgoingDBusTubeChannel a00421.html Tp::DBusTubeChannel virtual ~OutgoingDBusTubeChannel a00421.html a1032217cac99b5dd7feb7258835eb034 () PendingDBusTubeConnection * offerTube a00421.html a0371e766254d1ed291710c7aad569147 (const QVariantMap &parameters, bool allowOtherUsers=false) static OutgoingDBusTubeChannelPtr create a00421.html a6b225327deb5419e2847921e32adae54 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) OutgoingDBusTubeChannel a00421.html a7c2b92e79a1c4bb1e7f96b2578b85900 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) Tp::OutgoingFileTransferChannel a00422.html Tp::FileTransferChannel virtual ~OutgoingFileTransferChannel a00422.html a0a0f0b03b7ecb01d7956c15419850b09 () PendingOperation * provideFile a00422.html a19cc9cd68441c5d6e260eab8d9ca2d1b (QIODevice *input) static OutgoingFileTransferChannelPtr create a00422.html a92d1221187f9df07306e7b843452743a (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00422.html af5a53b23a870cb4893d15eaad616f7b6 OutgoingFileTransferChannel a00422.html aea465cc98269324bc065920ff279a244 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=OutgoingFileTransferChannel::FeatureCore) Tp::OutgoingStreamTubeChannel a00423.html Tp::StreamTubeChannel virtual ~OutgoingStreamTubeChannel a00423.html a7478575299ff7c71db7acba895700c6f () PendingOperation * offerTcpSocket a00423.html a143e2df36036e3f7c9f86a5f696e5bcf (const QHostAddress &address, quint16 port, const QVariantMap &parameters=QVariantMap()) PendingOperation * offerTcpSocket a00423.html a6376568f5d86c3997a582deb6d28c827 (const QTcpServer *server, const QVariantMap &parameters=QVariantMap()) PendingOperation * offerUnixSocket a00423.html ac04f5fb54e80dd25c3d3da89d4d574a2 (const QString &socketAddress, const QVariantMap &parameters=QVariantMap(), bool requireCredentials=false) PendingOperation * offerUnixSocket a00423.html a1c142043399705135f62a7d7ff8da15f (const QLocalServer *server, const QVariantMap &parameters=QVariantMap(), bool requireCredentials=false) QHash< uint, Tp::ContactPtr > contactsForConnections a00423.html abbbc29e5d3f18a86b1fac19fe7e71f17 () const QHash< QPair< QHostAddress, quint16 >, uint > connectionsForSourceAddresses a00423.html ab98c4b3e65fa2cc70fe079e8ac72fb30 () const QHash< uchar, uint > connectionsForCredentials a00423.html a45842cc49b6e821b17146289a042ac3f () const static OutgoingStreamTubeChannelPtr create a00423.html a4a375cccbb5d552527a777fd9180c344 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00423.html a7ee76e14dcce84aa8a26474edd4160f2 OutgoingStreamTubeChannel a00423.html a3189fcc8ef8fbfa5367a7cb2a43218d8 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=OutgoingStreamTubeChannel::FeatureCore) Tp::PendingAccount a00428.html Tp::PendingOperation ~PendingAccount a00428.html ac3693443726401777a9ada4098fc41ce () AccountManagerPtr manager a00428.html a58c76d3eb8843ba9b0d191fdd80a2f2b () const AccountPtr account a00428.html aeb65df44f64d1cb3dcfe64a2b7e18478 () const Tp::PendingCaptchas a00430.html Tp::PendingOperation virtual ~PendingCaptchas a00430.html a0593edc35de52ae150ab58d8abb3ba9c () Captcha captcha a00430.html ae6746aadee31c30c7fe5d7a7918082d0 () const QList< Captcha > captchaList a00430.html ae095ac1c3f4a87bf1b83a9ff223907f7 () const bool requiresMultipleCaptchas a00430.html a6ff5d2b83ec819c26b323ebf2a786309 () const Tp::PendingChannelRequest a00433.html Tp::PendingOperation void channelRequestCreated a00433.html a419bb698a1867ed6993ada08bd86071c (const Tp::ChannelRequestPtr &channelRequest) ~PendingChannelRequest a00433.html ab01dc2cc41e87a3b54ae4ab04b1fef06 () AccountPtr account a00433.html aa7cb505587ef436e8764cdf5d7cf3ec7 () const ChannelRequestPtr channelRequest a00433.html a6f5b7561344b8430fd5f5ec0a3eeed43 () const PendingOperation * cancel a00433.html a7402674c33f709c5de212c544af8954d () Tp::PendingChannel a00432.html Tp::PendingOperation ~PendingChannel a00432.html ae77602d6533a88ff261daa51cebd9c55 () ConnectionPtr connection a00432.html ad3b1c8a68ce7999d2457bd7fa2536a81 () const bool yours a00432.html a19aec0edcb732c12eddd2b388a11c94e () const const QString & channelType a00432.html ac46b44e368b45f274b43625c48ae76ba () const uint targetHandleType a00432.html ad99154ee5c89e62e02341f688d54e05d () const uint targetHandle a00432.html abc8e08deea949fec59591954c4375ac2 () const QVariantMap immutableProperties a00432.html a8b2b2ea1c7d4c201ee3125e143372e14 () const ChannelPtr channel a00432.html a11fb7e7f32712a4f9a25aaf59687d2cb () const HandledChannelNotifier * handledChannelNotifier a00432.html a49dff9f3299e5c04d6b7c124799e959c () const Tp::PendingConnection a00435.html Tp::PendingOperation ~PendingConnection a00435.html ac8556625954214418e547378d15e5c46 () ConnectionManagerPtr manager a00435.html a6f8d648991ed255737259a46ba855376 () const ConnectionPtr connection a00435.html ab44e4f69a5b9ad8d1f6f6efd7011c5c2 () const Tp::PendingContactAttributes a00436.html Tp::PendingOperation ~PendingContactAttributes a00436.html a6955ad38883a04b599d12b269e4e4789 () ConnectionPtr connection a00436.html a84508852a763e941cf714a21583e8f16 () const const UIntList & contactsRequested a00436.html a53d775cd9fa163889ef4fc98e51cee11 () const const QStringList & interfacesRequested a00436.html a313df63e7b4773a4208c0fe3242a899e () const bool shouldReference a00436.html acf0d47bd44c1dfc70d72e4ea4af780ec () const ReferencedHandles validHandles a00436.html a076602d693d8ecd8f166ff50713310ae () const UIntList invalidHandles a00436.html a0419dabebe76ec42b539c37b07d5562a () const ContactAttributesMap attributes a00436.html af1970cbdb567bd860044f38cbf2d1d9d () const Tp::PendingContactInfo a00437.html Tp::PendingOperation ~PendingContactInfo a00437.html ac01127713823a2eab21580484e84b095 () ContactPtr contact a00437.html a4aa3f90209cd0c9f50a944afb3d3d86b () const Contact::InfoFields infoFields a00437.html ab2593668b4228c37203b1044bb587c87 () const Tp::PendingContacts a00438.html Tp::PendingOperation ~PendingContacts a00438.html ab8224a6242f1946d498c1666aea1ba04 () ContactManagerPtr manager a00438.html a8e06cf789aac390d554e42cd99451d26 () const Features features a00438.html a939e3ec49dbb6446e03198243d961d2d () const bool isForHandles a00438.html a68d8b12ed0791dabcee42743f2a7f776 () const UIntList handles a00438.html ae78da1d9cacdbd73352742875ffefb01 () const bool isForIdentifiers a00438.html ae8c8770929e0f14a730292f4f686078e () const QStringList identifiers a00438.html a82b71f1fb36cadba06499b3aab167a31 () const bool isForVCardAddresses a00438.html ac27c3adc68476adcaa5badb3ecdc11a1 () const QString vcardField a00438.html a9a7b281b9261a3a582a8391f93d528db () const QStringList vcardAddresses a00438.html a5fc080437fe9018f3df091beef383b80 () const bool isForUris a00438.html a840b2969e0ee4af0acdbab18f71d622d () const QStringList uris a00438.html a5dbc4e665df8eb73c0e5f08348eaa63a () const bool isUpgrade a00438.html ae1eb097fc59e8dea81998e1022a3449e () const QList< ContactPtr > contactsToUpgrade a00438.html ace4a8db43e7e037729301f06a797162d () const QList< ContactPtr > contacts a00438.html a27a390a2f721f8c269457eabea7c8688 () const UIntList invalidHandles a00438.html ad0044a47f813739bac9d237652c944f5 () const QStringList validIdentifiers a00438.html a920b538b9b1f25dbe752ec740707dc08 () const QHash< QString, QPair< QString, QString > > invalidIdentifiers a00438.html a4827db6541f54c47304b7016ae6b8ef6 () const QStringList validVCardAddresses a00438.html aa52e2555f2095bd2d24e59ee33fc4267 () const QStringList invalidVCardAddresses a00438.html aee40d0b9b89781807ee474bacd2ac732 () const QStringList validUris a00438.html a9ed889b00c55e9515434c995a7934ace () const QStringList invalidUris a00438.html a426652ce26ca0b16bc8d882c0d08710e () const Tp::PendingDBusTubeConnection a00439.html Tp::PendingOperation virtual ~PendingDBusTubeConnection a00439.html a264219243cd58011f529b613c9a4901f () QString address a00439.html a70a1c57f3eb7102d792b7b7f1ac00f9b () const bool allowsOtherUsers a00439.html a87f19e3f9b1873a95f7cabeb75df0f85 () const Tp::PendingDebugMessageList a00440.html Tp::PendingOperation virtual ~PendingDebugMessageList a00440.html af8e140c6591f704c7f7da18b4c6c943c () DebugMessageList result a00440.html aabff8fe3bedb58748b8d7aba691bd9d5 () const Tp::PendingHandles a00442.html Tp::PendingOperation ~PendingHandles a00442.html a172397f19a1210f05607ef590c7de78f () ConnectionPtr connection a00442.html a6a5444e8f92fea9470b420c156afe7f6 () const HandleType handleType a00442.html a6030f3b78dd401648b4df7f9450718c2 () const bool isRequest a00442.html a8998c31c8bc58004556d00da296c1a42 () const bool isReference a00442.html a974ddc8bddde79caef0a9e3a79ee7999 () const const QStringList & namesRequested a00442.html abcbc041a1c3503944fb1a0b46efbe8cb () const QStringList validNames a00442.html ab4dd0740e8aaedacc945c1470d67d63d () const QHash< QString, QPair< QString, QString > > invalidNames a00442.html af966a0dc9e6d69d66193b7ddca23aec8 () const const UIntList & handlesToReference a00442.html ac80bd40f0e27b8eed444fe2cbf54e472 () const ReferencedHandles handles a00442.html ac524bbfe23f411945a48b30c42409860 () const UIntList invalidHandles a00442.html aa101cc641ddfa3e21ce2cd5e18e741f5 () const Tp::PendingOperation a00443.html Tp::PendingReady a00444.html Tp::PendingOperation ~PendingReady a00444.html a371326df0d8cb7c9bc3814ba036ff608 () DBusProxyPtr proxy a00444.html a52478a85d09bcb9992fe566579c2ff27 () const Features requestedFeatures a00444.html a84584c9083eeccef5092180caf4ccca2 () const Tp::PendingSendMessage a00445.html Tp::PendingOperation ~PendingSendMessage a00445.html ac46961e744240a7b243a28e7070f18bb () TextChannelPtr channel a00445.html aafccbdb9bd56e8d0443b17adce917b0e () const ContactMessengerPtr messenger a00445.html a6475c825825b6cb59f9a462f433cb0ac () const QString sentMessageToken a00445.html aa11971307fe5692d57b17adb6cec5a13 () const Message message a00445.html acef01fc061fa1cfba70b5825b99012ef () const Tp::PendingStreamTubeConnection a00447.html Tp::PendingOperation virtual ~PendingStreamTubeConnection a00447.html a4815adbe7334a9b28f0624182bc9366b () SocketAddressType addressType a00447.html a118f4294bdcd6147f5b0a2101ecd4969 () const QPair< QHostAddress, quint16 > ipAddress a00447.html a242c0f1b29a0c668dd68fb801904c1d1 () const QString localAddress a00447.html a2c127932420bb7e8457f312f3a48a25c () const bool requiresCredentials a00447.html a3d4e4f0c2c2f0bcc0e41ed9c58a6d6ed () const uchar credentialByte a00447.html a1db89e668f068a85d06973c8cf759261 () const Tp::PendingStringList a00449.html Tp::PendingOperation PendingStringList a00449.html ac66dcbc0ca66e81c203c429cdf35c8bf (const SharedPtr< RefCounted > &object) PendingStringList a00449.html a82dc24036856a3adc3cd53bd7c282d2c (QDBusPendingCall call, const SharedPtr< RefCounted > &object) ~PendingStringList a00449.html a0860161359f8cd811fe9033c07cea130 () QStringList result a00449.html a5e7a0f39a6fc292d87e0f7bb7d618600 () const void setResult a00449.html a30db236d7c1aad1c2960bb5dad5f135c (const QStringList &result) Tp::PendingString a00448.html Tp::PendingOperation PendingString a00448.html a41630e61a68ecbc20178aab41071671f (QDBusPendingCall call, const SharedPtr< RefCounted > &object) ~PendingString a00448.html ab939af849371809be5b886082d57f6e4 () QString result a00448.html a588a2afab22f9ccf2bb28cf811f59f8a () const void setResult a00448.html adfbc254bb2b87bc10761ffa941787635 (const QString &result) Tp::PendingVariantMap a00453.html Tp::PendingOperation PendingVariantMap a00453.html a1ac92b5ce2c8bac5bf9580bce03b88c0 (QDBusPendingCall call, const SharedPtr< RefCounted > &object) ~PendingVariantMap a00453.html a6d734bc990c015f16853a4b77a09d2b3 () QVariantMap result a00453.html a49fe64d7aa599437d3320a72f82b4238 () const Tp::PendingVariant a00452.html Tp::PendingOperation PendingVariant a00452.html aefbef300b3530895ae15f66f83bd9705 (QDBusPendingCall call, const SharedPtr< RefCounted > &object) ~PendingVariant a00452.html afd0fe5fc5a08e6bf22adb4ff375991d6 () QVariant result a00452.html a886d4619e5ae41d2fc5c56c7dbce1c26 () const Tp::Presence a00455.html Presence a00455.html a96a70c850b08fc71caea5ec749e15ce2 () Presence a00455.html ade8370ac7fccded90deded2681b64e86 (const SimplePresence &sp) Presence a00455.html a6dbe459b9599f002c8b0dae7825f5c5f (ConnectionPresenceType type, const QString &status, const QString &statusMessage) Presence a00455.html adfeccff0083293393d7e3879f9d1820d (const Presence &other) ~Presence a00455.html a90c35e7258d25bcfb5f0f91a8885d515 () bool isValid a00455.html a6a73d3c0f64ef22bed94877703fd1ac1 () const Presence & operator= a00455.html af89abe9d87d1b2089276f5a9766ae8c3 (const Presence &other) bool operator== a00455.html afce6e0e73a14a8cc6028942ac3e89d36 (const Presence &other) const bool operator!= a00455.html a843d3323fafeba7842149c2b527098ba (const Presence &other) const ConnectionPresenceType type a00455.html a7a8cc174c58706f94c0bfe876a35cfdd () const QString status a00455.html ac286a2fdc3b3b2ea5d3b928317a0f3f2 () const QString statusMessage a00455.html a7aa0f00c4dbc323ce016ea5b42fa853b () const void setStatus a00455.html af928b8621d7beb4a2214a4fb74be3bfd (const SimplePresence &value) void setStatus a00455.html ae0a515cfe66d15bb9b12e5bdbc8c0096 (ConnectionPresenceType type, const QString &status, const QString &statusMessage) void setStatusMessage a00455.html a33b2f3e37e97cba80ade13831a9971cc (const QString &statusMessage) SimplePresence barePresence a00455.html a04bf087ffd4f162aaac2cb34f3da36e3 () const static Presence available a00455.html ae57a9a74c1253fecc40b8d6b7c0f25b7 (const QString &statusMessage=QString()) static Presence chat a00455.html a862e03a0bb2b8569728e83ea35600185 (const QString &statusMessage=QString()) static Presence away a00455.html a4af1f7ad72889f31d26a97648448d8a7 (const QString &statusMessage=QString()) static Presence brb a00455.html ae26ac946eb3201036637422f8e4f61df (const QString &statusMessage=QString()) static Presence busy a00455.html a072c2a50fb8e1a961dc5083ef480c17d (const QString &statusMessage=QString()) static Presence dnd a00455.html ad7b794b8dd66cbd4c5fb4bc4ee749bd9 (const QString &statusMessage=QString()) static Presence xa a00455.html a11047b8f34bb654e7e92e4c9239aafda (const QString &statusMessage=QString()) static Presence hidden a00455.html a549b8e3b0e40ed747bce2fd33d9d9b8a (const QString &statusMessage=QString()) static Presence offline a00455.html a40f43f74e4393a1f09cc825a3749127a (const QString &statusMessage=QString()) Tp::PresenceSpec a00457.html SimpleStatusFlag a00457.html a6294fa3935e9d72c9b16bc7ae6f0f43b @ NoFlags a00457.html a6294fa3935e9d72c9b16bc7ae6f0f43ba826c52c5726fa08b2da3dcfd06bcad72 @ MaySetOnSelf a00457.html a6294fa3935e9d72c9b16bc7ae6f0f43bac4d36e8bd03da9355dcc33df98240533 @ CanHaveStatusMessage a00457.html a6294fa3935e9d72c9b16bc7ae6f0f43bacdbdf1fb73e5c957284bf87cd1b45558 @ AllFlags a00457.html a6294fa3935e9d72c9b16bc7ae6f0f43bac502234b63b83950f24c0c310366ea3f Q_DECLARE_FLAGS a00457.html a7b4d5c4934ca67a3445a52bf1f6695c1 (SimpleStatusFlags, SimpleStatusFlag) PresenceSpec a00457.html ab1c782008bd33b0a26bd4d0419dc4a04 () PresenceSpec a00457.html ae0bc2d7c1e665f83d0d900f5450ac81d (const QString &status, const SimpleStatusSpec &spec) PresenceSpec a00457.html a1944e7a700629dddb24f5f5397e3e1dd (const PresenceSpec &other) ~PresenceSpec a00457.html a7a09bd19d8ab43e1b6f539a80a33c833 () bool isValid a00457.html af3a66aa0ee3c0fee122c60651e60feab () const PresenceSpec & operator= a00457.html a808e70be9272692b483010cd6e437816 (const PresenceSpec &other) bool operator== a00457.html a3ac00dcab839ada97b5f88cd2325ffac (const PresenceSpec &other) const bool operator!= a00457.html a25e0510745fa0a38921a599b6b111621 (const PresenceSpec &other) const bool operator< a00457.html a2ecc010db4c39cd1691a3e2b4dd24845 (const PresenceSpec &other) const Presence presence a00457.html a8d0096c7f43561d271339298e59a5811 (const QString &statusMessage=QString()) const bool maySetOnSelf a00457.html a89aa430b9e06468da80839cb48d5607a () const bool canHaveStatusMessage a00457.html aa2b5cc60c440ec3c5beb0a41aa0b0767 () const SimpleStatusSpec bareSpec a00457.html a9c3e20b33f8eba2d6e4510b4bf7c0c54 () const static PresenceSpec available a00457.html a166f068862651ec515434d0b4c627c8b (SimpleStatusFlags flags=AllFlags) static PresenceSpec chat a00457.html a25e6e844983f573b6e4f0481ccb92d05 (SimpleStatusFlags flags=AllFlags) static PresenceSpec pstn a00457.html a4e00877bdc035ad68dbabd5859387b6f (SimpleStatusFlags flags=CanHaveStatusMessage) static PresenceSpec away a00457.html a0077753a4794072f1dc2a28ec339884a (SimpleStatusFlags flags=AllFlags) static PresenceSpec brb a00457.html a05d321109834281269dbdb9ddd36de2e (SimpleStatusFlags flags=AllFlags) static PresenceSpec dnd a00457.html a96bebd17f5505a948e571ae0c7cfe974 (SimpleStatusFlags flags=AllFlags) static PresenceSpec busy a00457.html abe843961054d9bed1ce4d44203f9facd (SimpleStatusFlags flags=AllFlags) static PresenceSpec xa a00457.html a6a5643f89324ee1aea9fdf580f6c01e6 (SimpleStatusFlags flags=AllFlags) static PresenceSpec hidden a00457.html a983b5ade44d215a36e30440a9257092a (SimpleStatusFlags flags=AllFlags) static PresenceSpec offline a00457.html ab8246201702d9addbb07e77a32995290 (SimpleStatusFlags flags=CanHaveStatusMessage) static PresenceSpec unknown a00457.html a3756025e5ba6f43ed01e425ac36f472a (SimpleStatusFlags flags=CanHaveStatusMessage) static PresenceSpec error a00457.html aad51d2250497791649403ec24c128b0c (SimpleStatusFlags flags=CanHaveStatusMessage) Tp::PresenceSpecList a00458.html PresenceSpecList a00458.html a7b98b261c2ce061f961f8357465890fc () PresenceSpecList a00458.html a523d793dd49b562f8be0a500a1888ca8 (const SimpleStatusSpecMap &specMap) PresenceSpecList a00458.html a7e5fa4aa0323fbb963b14954c375e377 (const QList< PresenceSpec > &other) QMap< QString, PresenceSpec > toMap a00458.html a11014e8df8549c38ae65be9207f0d1ab () const SimpleStatusSpecMap bareSpecs a00458.html aad90b13b4b097c8654837411c0d02c31 () const Tp::ProfileManager a00460.html Tp::Object Tp::ReadyObject ~ProfileManager a00460.html a53b45f0148b2a6f01af866fb4088fb3d () QList< ProfilePtr > profiles a00460.html a77cec343b3b63fd443c51336e36b2ed5 () const QList< ProfilePtr > profilesForCM a00460.html adaf060205699c875f9f16cdd070b2349 (const QString &cmName) const QList< ProfilePtr > profilesForProtocol a00460.html a6e534df6f7498ba54b21cc2b207aa24e (const QString &protocolName) const ProfilePtr profileForService a00460.html a3117435a97cd88308868e7fc348a1567 (const QString &serviceName) const static ProfileManagerPtr create a00460.html aabe816d03b51d6e975734f27a2485be0 (const QDBusConnection &bus=QDBusConnection::sessionBus()) static const Feature FeatureCore a00460.html aaf02704b18d2c007a88b2e9c3131f0a7 static const Feature FeatureFakeProfiles a00460.html a219b8d6679b8f0a81f0a142bc87405ff Tp::Profile a00459.html Tp::RefCounted Tp::Profile::Parameter Tp::Profile::Presence QList< Parameter > ParameterList a00459.html a8a9bf02803f8c32ec6e1b9bc4aa0cbaa QList< Presence > PresenceList a00459.html a867270340de668a199cca09127efa614 ~Profile a00459.html a254e5bfc09abd2d556747b61eeeaf7e9 () QString serviceName a00459.html af95068a93b9573c6a6a80c0448f75d8a () const bool isValid a00459.html afa721c43ff4e93e9aa78deb295d5423b () const bool isFake a00459.html ac132749ecde1174657a71583556f17a7 () const QString type a00459.html a4d7bd00d0fa793f014c5213963d96be7 () const QString provider a00459.html a720035f806ff8f7ef67fefe0b5678a8f () const QString name a00459.html a4d0ffc991c72d5f9d82f27a4f6d135b3 () const QString iconName a00459.html afbd67c3974952fa6bdec41725d2b2ab8 () const QString cmName a00459.html a5746246892811f2685d705f3df972a8a () const QString protocolName a00459.html a2ecc5dd4d2a01dc32b7c45a5949d2d24 () const ParameterList parameters a00459.html a5d6f116d5e3af12fa0d447527efb7951 () const bool hasParameter a00459.html ad1bf70dbd0dba498e392f6ebbc837814 (const QString &name) const Parameter parameter a00459.html a00efaa4ae6abf7c8000e56366a2f04a4 (const QString &name) const bool allowOtherPresences a00459.html aa07a1d453ecafba5f64cfa7917a729a1 () const PresenceList presences a00459.html adf018fe2a706aab0be5a990a2b9623c3 () const bool hasPresence a00459.html ae35fe9f8e18ca63660b5d3c4cca38604 (const QString &id) const Presence presence a00459.html a6cd4e7b53395860dd0569f2d4714ffb2 (const QString &id) const RequestableChannelClassSpecList unsupportedChannelClassSpecs a00459.html a6dbd41f08550fe89fa75aa1ba7d8d4c5 () const static ProfilePtr createForServiceName a00459.html a8446f0b88bd7d2a5fe2802adf8114a1e (const QString &serviceName) static ProfilePtr createForFileName a00459.html aa726deb22f11df10d280ff7f14503000 (const QString &fileName) Tp::Profile::Parameter a00424.html Parameter a00424.html a358c97ef8cd49bdf63baeecdeedbf891 () Parameter a00424.html ab4c0f9d9b23674c7098d1a18f71a8a21 (const Parameter &other) Parameter a00424.html adc559e98b20fe5181a2e8124d5e313a4 (const QString &name, const QDBusSignature &dbusSignature, const QVariant &value, const QString &label, bool mandatory) ~Parameter a00424.html adc8332a978c58860a9c9a7a4b7e8a43a () QString name a00424.html a21f81519b616e1f00db6fe6e78ee6df1 () const QDBusSignature dbusSignature a00424.html a593b4c88a65c9256eda7117d6729a4f7 () const QVariant::Type type a00424.html a1f492fe97ba2407b48939b2f2bd812db () const QVariant value a00424.html a8212a38eeec78c26708a95c68837b9e9 () const QString label a00424.html a99664f72a426b1d95a3c28899c5cfd12 () const bool isMandatory a00424.html adee65800a07193a6315c166d86b6c89e () const Parameter & operator= a00424.html adda67f82550664474a6547f432f78b94 (const Parameter &other) Tp::Profile::Presence a00456.html Presence a00456.html acef1b4d491e69a92f13135744a9c021e () Presence a00456.html aba4f49631b241a651a5111051581c964 (const Presence &other) Presence a00456.html acddc434111b6f1cb7a9f403272ba981b (const QString &id, const QString &label, const QString &iconName, const QString &message, bool disabled) ~Presence a00456.html a6b5a513e98be36afd59d137f80a82e67 () QString id a00456.html a6b603e552cad1d802b001b9acaf61fa5 () const QString label a00456.html a549d3c6312401b4bb3f36a115619c74f () const QString iconName a00456.html a2717c5947fb5f3340ee522ad1966ebc2 () const bool canHaveStatusMessage a00456.html a73047af7349cf93e9e41af7de3120326 () const bool isDisabled a00456.html a621bebf1544c28e3456cbf1bee7246f7 () const Presence & operator= a00456.html aad73376aa58a3f26b33f371e1fe2cedb (const Presence &other) Tp::ProtocolInfo a00467.html ProtocolInfo a00467.html a38cc324bf94dbd1184841237c79a84a2 () ProtocolInfo a00467.html a800a7e31cace1c9175265f2e989402d2 (const ProtocolInfo &other) ~ProtocolInfo a00467.html a91408a030f9229026d34c5aafda95b78 () bool isValid a00467.html a2276cf69d524a1668e3dd7941f40225d () const ProtocolInfo & operator= a00467.html a49e4af6b520b5d07344195292d466c2a (const ProtocolInfo &other) QString cmName a00467.html aad7b00d30e5715a76bd8bc9207ba9256 () const QString name a00467.html a19ca863d985faa451355ff02ad273c4c () const ProtocolParameterList parameters a00467.html af6341b1c93f369f58b4bf34fbde158b3 () const bool hasParameter a00467.html a29925747aeafb70c778be86f4c5cb029 (const QString &name) const bool canRegister a00467.html af9a83845e067e872d25caa95491c3289 () const ConnectionCapabilities capabilities a00467.html a3a49bb3d427c0e35392a1291d822b800 () const QString vcardField a00467.html a208f75635d663c2299ee440eaa4affa6 () const QString englishName a00467.html a710f0ffd700cf32c3090b563e7627c14 () const QString iconName a00467.html a8e9e95ba9a562fbfd48bd87871b4adf8 () const PresenceSpecList allowedPresenceStatuses a00467.html aca52292a0c3a4b7173799f86666b9f1d () const AvatarSpec avatarRequirements a00467.html a5e11a069bffcce95683b3523929fce5d () const QStringList addressableVCardFields a00467.html ad351647e9fe18eb6d0f7e4f0fe807f43 () const QStringList addressableUriSchemes a00467.html ae55a1a1e910a519f77d18a7609b87c50 () const PendingString * normalizeVCardAddress a00467.html a6e9008f57748af200c4de3cd25e4f001 (const QString &vcardField, const QString &vcardAddress) PendingString * normalizeContactUri a00467.html a30a9af6b5f6087e20466f4261bf4c8e9 (const QString &uri) Tp::ProtocolParameter a00475.html ProtocolParameter a00475.html a90ddaf78a98917fe0a0d9e9acdc002c5 () ProtocolParameter a00475.html a4c85dca20be36721db6f5585be6771dd (const ParamSpec &spec) ProtocolParameter a00475.html afaa06616523630991cf167162088d8ea (const QString &name, const QDBusSignature &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue=QVariant()) ProtocolParameter a00475.html a2d090d3d6ce7df281643f110b0de3faa (const QString &name, const QString &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue=QVariant()) ProtocolParameter a00475.html a267a013144db39bf11158606d37b324e (const ProtocolParameter &other) ~ProtocolParameter a00475.html a3be3d2816a80fd6950ec1b6bbcfe3166 () bool isValid a00475.html add35e63e47f0ec127058637b6833c6b0 () const ProtocolParameter & operator= a00475.html a5687ebffb149510e372a3d5a26f5f980 (const ProtocolParameter &other) bool operator== a00475.html a9273c5097017978575a7a24b2ffcfb68 (const ProtocolParameter &other) const bool operator== a00475.html a7e9360e1d542115457a165c1913de7fe (const QString &name) const bool operator< a00475.html a3f2907ae828ba431408bf8a385388570 (const ProtocolParameter &other) const QString name a00475.html a8e5512a1713cf7c7f2ca1d11ba2538dc () const QDBusSignature dbusSignature a00475.html ab5eb32d9db8e250cb16c1dd67e413ecb () const QVariant::Type type a00475.html a7e7ba2fa9af014cec73c1c3de779a460 () const QVariant defaultValue a00475.html a5956eab64603a40fccfee57368c2a06f () const bool isRequired a00475.html ac615194164024066351377420ac84fe5 () const bool isSecret a00475.html a2fe397df6298ec27c0cdce9aa0fa4c8e () const bool isRequiredForRegistration a00475.html a7a034c5109455e77f02771ec08cd0197 () const ParamSpec bareParameter a00475.html abe99920e781fcb0f3881cfa23ccea4b4 () const Tp::ReadinessHelper a00486.html Tp::ReadinessHelper::Introspectable void(* IntrospectFunc a00486.html a1c93c38499ba330d1223033312a6301d )(void *data) QMap< Feature, Introspectable > Introspectables a00486.html a9772a3ba90500d39ae046a0f78cc4313 void statusReady a00486.html ad7271e5c9ac578ab6fb0cf9f84b83c14 (uint status) ReadinessHelper a00486.html a42ea15fdd0372a1abaf21f037da5a081 (RefCounted *object, uint currentStatus=0, const Introspectables &introspectables=Introspectables(), QObject *parent=0) ReadinessHelper a00486.html a370a0600f4c2a0b0ffe8c7d9d0ffbeaf (DBusProxy *proxy, uint currentStatus=0, const Introspectables &introspectables=Introspectables(), QObject *parent=0) ~ReadinessHelper a00486.html a5b2099f2a9660904be3f00d856ede784 () void addIntrospectables a00486.html adf756bde4d31e07f08933136d27ab1a4 (const Introspectables &introspectables) uint currentStatus a00486.html adf8f1675c104eb53cd53ab2363f80313 () const void setCurrentStatus a00486.html a27ed6d75ea53d3d9de87361a5b097c53 (uint currentStatus) void forceCurrentStatus a00486.html a0989475603c687bba1d734632915d9bf (uint currentStatus) QStringList interfaces a00486.html a947a5ff49c06f137c489911edce86903 () const void setInterfaces a00486.html a60c286169a6b333174480d4757239b06 (const QStringList &interfaces) Features requestedFeatures a00486.html a7b61414b87758963692862eb95ba1f75 () const Features actualFeatures a00486.html a1a4eefff76e2af9479b1891d89a28236 () const Features missingFeatures a00486.html a62e65ec97addb12f411b0702d02477ec () const bool isReady a00486.html aa9c64cfe903e2a8b4abbcc57d52bb2a4 (const Feature &feature, QString *errorName=0, QString *errorMessage=0) const bool isReady a00486.html a4767d8f77dc6030b725e334ede46a431 (const Features &features, QString *errorName=0, QString *errorMessage=0) const PendingReady * becomeReady a00486.html ae0c4884228f5a255f1d19b6909cea323 (const Features &requestedFeatures) void setIntrospectCompleted a00486.html ab8781bfe0bd8b79587d87b727d286628 (const Feature &feature, bool success, const QString &errorName=QString(), const QString &errorMessage=QString()) void setIntrospectCompleted a00486.html a1050f6df9704362726848bbbdb86dcfa (const Feature &feature, bool success, const QDBusError &error) Tp::ReadinessHelper::Introspectable a00378.html Introspectable a00378.html a52395a621fc2bff0ceef3b47560c7032 () Introspectable a00378.html ae0bd6bac6bc26f9f80886b6e7162a505 (const QSet< uint > &makesSenseForStatuses, const Features &dependsOnFeatures, const QStringList &dependsOnInterfaces, IntrospectFunc introspectFunc, void *introspectFuncData, bool critical=false) Introspectable a00378.html a3ea22ec902c002212a44168a3d8027c4 (const Introspectable &other) ~Introspectable a00378.html ac946102e1f3f8966bcec25ae39397d15 () Introspectable & operator= a00378.html a0568a8db310748fc4ed31ed4874282ee (const Introspectable &other) Tp::ReadyObject a00487.html Tp::ReferencedHandles a00490.html UIntList::const_iterator const_iterator a00490.html a44be16479cd4688554f54ea707fad540 UIntList::ConstIterator ConstIterator a00490.html aac96430ec59664371c358d33eac4d003 UIntList::const_pointer const_pointer a00490.html a1232840034944bc5e9781ebf04adda1c UIntList::const_reference const_reference a00490.html a2a66ff4d2f0ce2a5f6ce2db4e05713c0 UIntList::difference_type difference_type a00490.html a9b60a7c2c501c61c16c8a4b03ecb9754 UIntList::pointer pointer a00490.html af51cb0ab57afaa8a8c64d3d899fbf93f UIntList::reference reference a00490.html ac5430db5cea08986370b66c113f3ec63 UIntList::size_type size_type a00490.html a801c15bab7abce83b3b127b5d124faff UIntList::value_type value_type a00490.html a19d7736ecb9213b9ee62ee37dad3fde6 ReferencedHandles a00490.html a7c0247bad58184313805d49f77ab40a2 () ReferencedHandles a00490.html a9716f41c69fd96dcff5543d743f81959 (const ReferencedHandles &other) ~ReferencedHandles a00490.html ac4f24639a4f685754b6d335c7cf34348 () ConnectionPtr connection a00490.html abe65d3deadc65a4ad36c8d3c3f40130a () const HandleType handleType a00490.html a616892fad4eeeb41277c8a3ebe654d4f () const uint at a00490.html ac4de6225cb5a322e4e84df80da9c343a (int i) const uint back a00490.html aaa90dc57277940da6265d96944a4296c () const uint first a00490.html a2dced453fc4567ac367e22570d39210f () const uint front a00490.html a9cc8f4f2cc119d9c61d39564715f0598 () const uint last a00490.html af6cbcd88ef0eaadf9fccdcd72f167969 () const uint value a00490.html a63d0fc086c338613c713fea8776d5832 (int i, uint defaultValue=0) const const_iterator begin a00490.html a5527e35a154e7920db43a2623d8978dc () const const_iterator constBegin a00490.html a1207cbf0d38c21b68f35b552e02ebf16 () const const_iterator constEnd a00490.html a654c8a8df925635eb9f0aab7e3b678bb () const const_iterator end a00490.html a4115ac92d8f7aa40db6b64ef1709d7c3 () const bool contains a00490.html a1244de633fe115f9f341dcbd87fe7715 (uint handle) const int count a00490.html a3c45cdf6c5f444ed445754b0cf3403c8 (uint handle) const int count a00490.html ab039fb04bff715f34f78a8eb677d88a2 () const bool empty a00490.html a5c208ba568739a98883b23d324e6b973 () const bool endsWith a00490.html a82ea55b40ae561e534b8319e9b4236df (uint handle) const int indexOf a00490.html a3fa64718eebb9e8d74af349ced6b7799 (uint handle, int from=0) const bool isEmpty a00490.html ad1560c566c7c3bccc89c68661d1e9951 () const int lastIndexOf a00490.html af71265bd648ebdeba13ae556ed8710c0 (uint handle, int from=-1) const int length a00490.html a8f27fa0ca07df82524c3d0e0eec0854d () const ReferencedHandles mid a00490.html a6e9b096c8d7414ba89603bc6d01f5b15 (int pos, int length=-1) const int size a00490.html a6d8c1c47093c568d399c3f09f058c93d () const bool startsWith a00490.html abeb5948db1c8185860f8cb45a2f8cb20 (uint handle) const void append a00490.html aa7d426a715830e7dffdd03542343dc57 (const ReferencedHandles &another) void clear a00490.html a6aed11fb86143e62fc78d0ba900d1532 () void move a00490.html a55f5e6994b3f53e5861d2811a28b56da (int from, int to) void pop_back a00490.html ad87c1f4ae1fcea419b7fa2ed8aee457c () void pop_front a00490.html a06a81e183e231f85de2fa4d9862f3bce () int removeAll a00490.html a50b4e728492b35c58d426ef93c5b3fb4 (uint handle) void removeAt a00490.html adc48b88b4baf38956fed7812ffdee3a5 (int i) void removeFirst a00490.html a6bc386d784ad61bc985206e7e1679011 () void removeLast a00490.html a24e4c4fe77df5784bb88e4dc6d62b856 () bool removeOne a00490.html ad6ecd9f001140cbb0e68dc0223c0201b (uint handle) void swap a00490.html ae0876737bc259a3278dec639ed38cefb (int i, int j) uint takeAt a00490.html aa304cb33ebf4e8f529e02213f8a3edaa (int i) uint takeFirst a00490.html a7dfeeb81ce7767128bfd8419a1bf7b74 () uint takeLast a00490.html a51c9c5165cda03489d79de681e0924fe () bool operator!= a00490.html ad48b8b7806275304c5c5e1c81a08fce4 (const ReferencedHandles &another) const bool operator!= a00490.html ad3de7ff68313b8e8bab179860d31f7c5 (const UIntList &another) const ReferencedHandles operator+ a00490.html a8fc4e5d377f0ff8b001e362084681633 (const ReferencedHandles &another) const ReferencedHandles & operator+= a00490.html a233a8fa001e715fa937ac81b77c792fe (const ReferencedHandles &another) ReferencedHandles & operator<< a00490.html a72fe8343ff61cdc1744e01cc4f71b2e4 (const ReferencedHandles &another) ReferencedHandles & operator= a00490.html a3731e7a359e7e3270fa15bb8537451a2 (const ReferencedHandles &another) bool operator== a00490.html aef4ab4a755e07adea54b36576c21738c (const ReferencedHandles &another) const bool operator== a00490.html af04661dd087930a22b0280a3e5f3e8a6 (const UIntList &list) const uint operator[] a00490.html a4ab5b63d1e9e84740d47da6af8fabdc4 (int i) const UIntList toList a00490.html a810e5f08e6cd5467fc02dd8b4d82ddf1 () const QSet< uint > toSet a00490.html a133926c60915192d2b45700632a67aae () const std::list< uint > toStdList a00490.html a1b8427fcc2b9cfd084bde77b90d48180 () const QVector< uint > toVector a00490.html a5aca6acd9c9f249d1c1c31af5c215526 () const Tp::RequestableChannelClassSpec a00493.html RequestableChannelClassSpec a00493.html a9091a05f1770e30be329c1dc721585b8 () RequestableChannelClassSpec a00493.html ad7ee7d3aa731769fb10b3a86086a9ead (const RequestableChannelClass &rcc) RequestableChannelClassSpec a00493.html abba4c19436be5709895e46318d2be6d4 (const RequestableChannelClassSpec &other) ~RequestableChannelClassSpec a00493.html ae1587b6bab1b1f07ec9c673ce69c4a84 () bool isValid a00493.html a522d409c9b7f42c483d494253edb77ff () const RequestableChannelClassSpec & operator= a00493.html ab43be0db474fbd290b5d9677fa5cbe22 (const RequestableChannelClassSpec &other) bool operator== a00493.html a93e06ecb918be6b83f529c4878baf5c6 (const RequestableChannelClassSpec &other) const bool supports a00493.html a520420c2872d525885107d0f272caa31 (const RequestableChannelClassSpec &spec) const QString channelType a00493.html a1dc18d6b358125524c96fa9c221ee1b8 () const bool hasTargetHandleType a00493.html ac912b8123939c744da04460be23a1e37 () const HandleType targetHandleType a00493.html a210eb463162f1741c17d39e4d9237ab1 () const bool hasFixedProperty a00493.html ab14c1d78a316d13c9d680e2dd7fce218 (const QString &name) const QVariant fixedProperty a00493.html ab11b5d4e79dc1934a1f36b93564c9be6 (const QString &name) const QVariantMap fixedProperties a00493.html ab3987dad6d8612ebf9e31ab8ecfcae5d () const bool allowsProperty a00493.html a5f8d0cd201bbdde0ea092b120c4e2b21 (const QString &name) const QStringList allowedProperties a00493.html a55160b0a363afb39ecece13d9c967437 () const RequestableChannelClass bareClass a00493.html a974d8e3d17d706af2170ccc311bba8b2 () const static RequestableChannelClassSpec textChat a00493.html aa7125df8ddbe1789ad2c23f8cc6c79e9 () static RequestableChannelClassSpec textChatroom a00493.html aefaf246d69f65566cf65e09f6b7af0ab () static RequestableChannelClassSpec audioCall a00493.html a3be2b68dc3647a5dc5aed495cc32d915 () static RequestableChannelClassSpec audioCallWithVideoAllowed a00493.html aaf7c44b579675087c45cf2c17a101d07 () static RequestableChannelClassSpec videoCall a00493.html a4fc2d49c952fb17cf3a5677855e28b52 () static RequestableChannelClassSpec videoCallWithAudioAllowed a00493.html a76b0efaecd1b0dd16b1af209d3bdeeb1 () static RequestableChannelClassSpec streamedMediaCall a00493.html a47402240b0e4f34fe7b051dcbe218193 () static RequestableChannelClassSpec streamedMediaAudioCall a00493.html abf9e27c92999abb06d68aa6d617e030f () static RequestableChannelClassSpec streamedMediaVideoCall a00493.html af3f7564347f6a15b435ad95502f4cbd7 () static RequestableChannelClassSpec streamedMediaVideoCallWithAudio a00493.html a548e085b1a2f38f9d4621d2fa2b887e7 () static RequestableChannelClassSpec fileTransfer a00493.html ad4ad05b10d2641f601d6138179e08958 () static RequestableChannelClassSpec conferenceTextChat a00493.html a49cdfdadb45bc3473c5e460d622cd6c0 () static RequestableChannelClassSpec conferenceTextChatWithInvitees a00493.html a972991bb7c06db5ab859fe60cbfef1cc () static RequestableChannelClassSpec conferenceTextChatroom a00493.html ae2f7ea79f8472b08545a5be7dadc0f6e () static RequestableChannelClassSpec conferenceTextChatroomWithInvitees a00493.html af2c339c17362cba98bf35ca5504317a2 () static RequestableChannelClassSpec conferenceStreamedMediaCall a00493.html a81883fa104cbf75f23ae822bbf4461c7 () static RequestableChannelClassSpec conferenceStreamedMediaCallWithInvitees a00493.html aefda628ae1bec2aee33cabd868ec6d73 () static RequestableChannelClassSpec contactSearch a00493.html a30c89dba49046be4e122a97ef2523f25 () static RequestableChannelClassSpec contactSearchWithSpecificServer a00493.html a66fd6f597dd46d0eb8718ad6655d7b6a () static RequestableChannelClassSpec contactSearchWithLimit a00493.html aef06b59df2e9ee22c59430ffb682acf8 () static RequestableChannelClassSpec contactSearchWithSpecificServerAndLimit a00493.html a9a40a256b3a19a554c8126cdaf13bceb () static RequestableChannelClassSpec dbusTube a00493.html a0736ba6275ef56464d7553601ade67af (const QString &serviceName=QString()) static RequestableChannelClassSpec streamTube a00493.html a1ea59074d179f4091ca26078fd088de9 (const QString &service=QString()) Tp::RequestableChannelClassSpecList a00494.html RequestableChannelClassSpecList a00494.html abf7674f633f0209b52dc06eec65be108 () RequestableChannelClassSpecList a00494.html afe88a8525653a52afaafb374db7b29c2 (const RequestableChannelClass &rcc) RequestableChannelClassSpecList a00494.html adf37a4ccdc939fb6405a6156913f7dc1 (const RequestableChannelClassList &rccs) RequestableChannelClassSpecList a00494.html a933f02f81d33fc6407fd7fb124a5f053 (const RequestableChannelClassSpec &rccSpec) RequestableChannelClassSpecList a00494.html ab3697751f041b316d00d3491af91b6b2 (const QList< RequestableChannelClassSpec > &other) RequestableChannelClassList bareClasses a00494.html a76fb06b8c63c22a2ec323063a3eb044f () const Tp::RoomListChannel a00497.html Tp::Channel virtual ~RoomListChannel a00497.html a4a13963770e6aaf4e641c5805804c9f9 () static RoomListChannelPtr create a00497.html ab9c88b2759fc8fe16922e46946277c3e (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) RoomListChannel a00497.html a142779da14bd7a2077e24610761c67fd (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=Channel::FeatureCore) Tp::ServerAuthenticationChannel a00503.html Tp::Channel virtual ~ServerAuthenticationChannel a00503.html af8900ca5c00a79216fd5cba91f6c1537 () CaptchaAuthenticationPtr captchaAuthentication a00503.html a309378575350c2dc345312ff5ddf943a () const bool hasCaptchaInterface a00503.html a4b05b5ff95125d3990b13092aefd1e49 () const static ServerAuthenticationChannelPtr create a00503.html a4c7845fecc3434db49448bcd2cdad539 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00503.html a6c46e1a6a1dd2746116f2417725d8898 ServerAuthenticationChannel a00503.html ad654bf53a82973defdf639f928143dc0 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=ServerAuthenticationChannel::FeatureCore) Tp::SharedPtr a00506.html T SharedPtr a00506.html a79e77f8516541918fc59fc3158183cfc () SharedPtr a00506.html aeaadda9d83f81f9942b60b8c280322c2 (T *d) SharedPtr a00506.html a586886eb82450a8607aa9ea85bd49bfc (const SharedPtr< Subclass > &o) SharedPtr a00506.html a2af4d2c560f1a053c77e3b4db1157f4f (const SharedPtr< T > &o) SharedPtr a00506.html aa5e4c47a385747ecea8321bcfd1de5e9 (const WeakPtr< T > &o) ~SharedPtr a00506.html a71f1de35be59445d9779b438d2023946 () void reset a00506.html a7683de5eedc65e88c82c0d22deb4ee8b () T * data a00506.html adc73ce1581f42a51d84b8ac5a8998880 () const const T * constData a00506.html a4d5f86f30c12329a9bb25c751e929f3e () const T * operator-> a00506.html a608bb2dfb78e98f9417af758db90eda4 () T * operator-> a00506.html a618035ac0a3615febf15b3a691494c53 () const bool isNull a00506.html ae420fced157c5aa01e6657c99b7e2369 () const bool operator! a00506.html adbf812bbeb93627bce95e34348193944 () const operator UnspecifiedBoolType a00506.html ad1d510bbef0e492d78a19f06bac2fb9a () const bool operator== a00506.html a47a747a700f6f2f201c2b32b7953c049 (const SharedPtr< T > &o) const bool operator!= a00506.html a2c390370413437b5c157b66b80f36b80 (const SharedPtr< T > &o) const bool operator== a00506.html a9ce5aadb276e525209ad8fa0d4907d48 (const T *ptr) const bool operator!= a00506.html a700193a0dcb1e9f40db5f2e6197dce7e (const T *ptr) const SharedPtr< T > & operator= a00506.html aebc80490d3f55d97a94fcfab17ed2e11 (const SharedPtr< T > &o) void swap a00506.html a71e6e70f44c02324359ff508390491d7 (SharedPtr< T > &o) static SharedPtr< T > staticCast a00506.html a17cb7bc963db18dd259f0a3a435a8d44 (const SharedPtr< X > &src) static SharedPtr< T > dynamicCast a00506.html aa70d1a1931b049a2474a46e20d2ac96c (const SharedPtr< X > &src) static SharedPtr< T > constCast a00506.html a8c3fcef4cc5dc15522464f6759b37984 (const SharedPtr< X > &src) static SharedPtr< T > qObjectCast a00506.html a51dd7ce733587ce0bb5a286c31196daf (const SharedPtr< X > &src) Tp::WeakPtr a00544.html T WeakPtr a00544.html ae3298ebf0b212020bd5cf36f25e8de36 () WeakPtr a00544.html a3b35509929b3db70972697e257f52696 (T *d) WeakPtr a00544.html a747d5b502f228065554886cd98527601 (const WeakPtr< T > &o) WeakPtr a00544.html aae987022fe973ce08f4a1621547871cc (const SharedPtr< T > &o) ~WeakPtr a00544.html a5578d71cd460221beb4f4c14006a1f76 () bool isNull a00544.html ad507ba1eab0caa2d22a6ddcd0bda1de3 () const bool operator! a00544.html a6d8a29c3a5279f84745ff399c8ee142b () const operator UnspecifiedBoolType a00544.html a2326aae8806149e1d23fbb467c07e0c3 () const WeakPtr< T > & operator= a00544.html a523cdbb873d133e0920855f9acb2f321 (const WeakPtr< T > &o) WeakPtr< T > & operator= a00544.html aa56b28622ae36336e5cdda6b7bacf114 (const SharedPtr< T > &o) void swap a00544.html aa7702fd0f3b1a14cf52a9c77063f273b (WeakPtr< T > &o) SharedPtr< T > toStrongRef a00544.html a795442739ef1bdfed71a7160e99b09de () const friend uint qHash a00544.html a50440317a59020c14a0754a6b2eaa8f9 (const WeakPtr< T > &ptr) Tp::RefCounted a00489.html Tp::SimpleCallObserver a00507.html Tp::RefCounted CallDirection a00507.html af228184fac78b39b0a11775d13987a57 @ CallDirectionIncoming a00507.html af228184fac78b39b0a11775d13987a57a11582abca95d2634cf630aede9684215 @ CallDirectionOutgoing a00507.html af228184fac78b39b0a11775d13987a57a80229d03595171d4cd8735a7b3737660 @ CallDirectionBoth a00507.html af228184fac78b39b0a11775d13987a57afda9b5f637110570a664a9a4ed82bd41 void callStarted a00507.html acae8bfd6047a7ae64a7733068890f270 (const Tp::CallChannelPtr &channel) void callEnded a00507.html ad0d2aadd90c81643ed6bb9194d7948ec (const Tp::CallChannelPtr &channel, const QString &errorName, const QString &errorMessage) void streamedMediaCallStarted a00507.html af3300d394f47220c23d293366e271035 (const Tp::StreamedMediaChannelPtr &channel) void streamedMediaCallEnded a00507.html a73f129b605d4a91ef15858cdaf60a1c5 (const Tp::StreamedMediaChannelPtr &channel, const QString &errorName, const QString &errorMessage) virtual ~SimpleCallObserver a00507.html ac5fb12b263c1cf21579b29f97faa90fb () AccountPtr account a00507.html a5cb4db5e9da32cd9600bb6f96bdad089 () const QString contactIdentifier a00507.html a616b07b43343e9b382d604dea3556743 () const CallDirection direction a00507.html ad28a5bc0308e9e08c5eda325ab02bbb0 () const QList< CallChannelPtr > calls a00507.html a9de2dacc8eb402666d9af2aa7d9c8883 () const QList< StreamedMediaChannelPtr > streamedMediaCalls a00507.html a43041e2aa9859c607c912016c02bb40c () const static SimpleCallObserverPtr create a00507.html afbccd8b64b3eda96a992f6b5cadf7b42 (const AccountPtr &account, CallDirection direction=CallDirectionBoth) static SimpleCallObserverPtr create a00507.html a9a72405936afe6f7769e26fa53fce7b3 (const AccountPtr &account, const ContactPtr &contact, CallDirection direction=CallDirectionBoth) static SimpleCallObserverPtr create a00507.html a66d9f03294552eccd8be2c104296333b (const AccountPtr &account, const QString &contactIdentifier, CallDirection direction=CallDirectionBoth) Tp::SimpleObserver a00509.html Tp::RefCounted void newChannels a00509.html a86cf2f27f357ea6c3bc04065cc97e72a (const QList< Tp::ChannelPtr > &channels) void channelInvalidated a00509.html a4ebe1563722a01fefcdb60f6d6bb9732 (const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage) virtual ~SimpleObserver a00509.html a2dc3fe1b5b1da763a7f8fa3c9910609c () AccountPtr account a00509.html a40a226ed16097f26496498401b17b5d5 () const ChannelClassSpecList channelFilter a00509.html ad8b5207a04cdd0cc0c8586a33e1000db () const QString contactIdentifier a00509.html a55d27338ac0eee342955cecb74ab3046 () const QList< ChannelClassFeatures > extraChannelFeatures a00509.html a662db799d696786b129d711d2012c47f () const QList< ChannelPtr > channels a00509.html a3f2089961600aea0964a207601b0708e () const static SimpleObserverPtr create a00509.html abeebea99a08e86a098999f3fb88ceb7e (const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >()) static SimpleObserverPtr create a00509.html ad50f99efab06f8ab9bafed8564365093 (const AccountPtr &account, const ChannelClassSpecList &channelFilter, const ContactPtr &contact, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >()) static SimpleObserverPtr create a00509.html a02b8bed5cf4794c42104a3b2c995c892 (const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, const QList< ChannelClassFeatures > &extraChannelFeatures=QList< ChannelClassFeatures >()) Tp::PendingSuccess a00450.html Tp::PendingOperation PendingSuccess a00450.html af159b12ea9c08729c5065315c5bff348 (const SharedPtr< RefCounted > &object) Tp::PendingFailure a00441.html Tp::PendingOperation PendingFailure a00441.html a07070627d68522beb1970ddddcb5f82e (const QString &name, const QString &message, const SharedPtr< RefCounted > &object) PendingFailure a00441.html a19097704563c230f1a04cc9ca50fc726 (const QDBusError &error, const SharedPtr< RefCounted > &object) Tp::PendingVoid a00454.html Tp::PendingOperation PendingVoid a00454.html a794383e75741a6faaf4fb73f135dd835 (QDBusPendingCall call, const SharedPtr< RefCounted > &object) Tp::PendingComposite a00434.html Tp::PendingOperation PendingComposite a00434.html abc7ab0a788f837502ad580debdbc7d7b (const QList< PendingOperation * > &operations, const SharedPtr< RefCounted > &object) PendingComposite a00434.html aa0991c2fb6f53a3e0fe07d8b1f7d9f87 (const QList< PendingOperation * > &operations, bool failOnFirstError, const SharedPtr< RefCounted > &object) ~PendingComposite a00434.html a92f143e917d39644bd775dffcf0f806f () Tp::SimpleStreamTubeHandler a00513.html Tp::AbstractClientHandler void invokedForTube a00513.html a6517a9474816dc5dcfa824c405b11f31 (const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints) void tubeInvalidated a00513.html a9d4ba8ca3d49610bf9ce22089384ee1d (const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QString &errorName, const QString &errorMessage) ~SimpleStreamTubeHandler a00513.html aa802429138f4c73b74678c1a3e4e61b4 () bool monitorsConnections a00513.html abb310462a6b99ad4d633eb005b0455be () const bool bypassApproval a00513.html a572b7e13f4c8b956080f849dc999ad05 () const void handleChannels a00513.html a2e03f9d5f5e7b79690a6ceb37e200a60 (const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList< ChannelPtr > &channels, const QList< ChannelRequestPtr > &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo) static SharedPtr< SimpleStreamTubeHandler > create a00513.html a0d6199593c0c7222210603384a3328db (const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval=false) Tp::SimpleTextObserver a00514.html Tp::RefCounted void messageSent a00514.html a09f2fdc7f09a21e7a8a213599f4ed6af (const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel) void messageReceived a00514.html af2d932fc0ff2e01f1b7729643eedd63c (const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel) virtual ~SimpleTextObserver a00514.html a73e6e7535c76d559e3bff5c0d37c1abb () AccountPtr account a00514.html a95f81fd27482ed896811c98cee8a72e4 () const QString contactIdentifier a00514.html a7ea2658e0bc7ac503f4c5bef1e3ee93c () const QList< TextChannelPtr > textChats a00514.html af0b52324f6c8c69e5fb8a1644f1eff9f () const static SimpleTextObserverPtr create a00514.html ae941f7ce0beebf4a414eace0c1fd6d6a (const AccountPtr &account) static SimpleTextObserverPtr create a00514.html a9de5859431919dcd318644ec6a80c260 (const AccountPtr &account, const ContactPtr &contact) static SimpleTextObserverPtr create a00514.html ac6e8e2ef29e5365ec7ec9155af8f0681 (const AccountPtr &account, const QString &contactIdentifier) Tp::StreamTubeChannel a00528.html Tp::TubeChannel Tp::StreamTubeClient a00529.html Tp::RefCounted Tp::StreamTubeClient::TcpSourceAddressGenerator Tp::StreamTubeClient::Tube void tubeOffered a00529.html ad4d666b7d56b22c951af65021f2d9e7e (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube) void tubeClosed a00529.html ab8b5d535d458e1d0204fe1612b5280b2 (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, const QString &error, const QString &message) void tubeAcceptedAsTcp a00529.html a12d4647c8ad29a941ac6123905736f92 (const QHostAddress &listenAddress, quint16 listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube) void tubeAcceptedAsUnix a00529.html ad08bfa94a24811712e5c5ff2a1ac75bb (const QString &listenAddress, bool requiresCredentials, uchar credentialByte, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube) void newConnection a00529.html a546354350619ba4a6e3868ad66f8059f (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId) void connectionClosed a00529.html aeaea793406ca40e9938afdd4d8c0d016 (const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId, const QString &error, const QString &message) virtual ~StreamTubeClient a00529.html ac3a062f064bf9be0b8167de413034a4c () ClientRegistrarPtr registrar a00529.html a92732661ae0a10e7f2b21b67fc4da810 () const QString clientName a00529.html a09436a56bb9da91a0b8c32a476ca63be () const bool isRegistered a00529.html ac662264d218ab334f69cdd2eb62afca7 () const bool monitorsConnections a00529.html a4b9fd27d1b52389492906a6054f92e9b () const bool acceptsAsTcp a00529.html a0dd9d210fd985adc19c5cf214e065244 () const TcpSourceAddressGenerator * tcpGenerator a00529.html a11aba03e2672913e71e405daea4b17da () const bool acceptsAsUnix a00529.html a78e666ade88e771e6b1a539258622575 () const void setToAcceptAsTcp a00529.html abc9f3c4980b7e2b9013720b1aedde2b2 (TcpSourceAddressGenerator *generator=0) void setToAcceptAsUnix a00529.html a829e13f23dffbbb50e5af68b35b9c18f (bool requireCredentials=false) QList< Tube > tubes a00529.html a4a72d17586682c78d2cb3df358a64748 () const QHash< Tube, QSet< uint > > connections a00529.html a31d77a10ca40f3eb09ad506cb9c5f392 () const static StreamTubeClientPtr create a00529.html a46f483a430ddb98052253b28e160977b (const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false, const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static StreamTubeClientPtr create a00529.html af0c745c20a295b4f2fe78ba99fbbabc4 (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false) static StreamTubeClientPtr create a00529.html a0f43076d2684766b22326b8f165deb02 (const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false) static StreamTubeClientPtr create a00529.html a118bf57c77e658ee93e05b0ee31b3578 (const ClientRegistrarPtr &registrar, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, bool bypassApproval=false) Tp::StreamTubeClient::TcpSourceAddressGenerator a00534.html virtual QPair< QHostAddress, quint16 > nextSourceAddress a00534.html a39597af2206e3c769d60032c72bed2e9 (const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube)=0 virtual ~TcpSourceAddressGenerator a00534.html a244044fe9977844132b17fb203942d0a () Tp::StreamTubeClient::Tube a00537.html Tube a00537.html a67633232c4fe0f7069169c09b68789f6 () Tube a00537.html a95edd19c72cc3671c07548b0485e33cb (const AccountPtr &account, const IncomingStreamTubeChannelPtr &channel) Tube a00537.html a66473ad7e616da513dab970e12df0f7c (const Tube &other) ~Tube a00537.html ad05292b539750b59cacdf5f832da2a34 () bool isValid a00537.html a439289722f72a4951127d897f3b42724 () const Tube & operator= a00537.html adf4eab11564c1d77ba7c99244d6a0579 (const Tube &other) const AccountPtr & account a00537.html a0ba9bde070c51acfd6b3534423b26af7 () const const IncomingStreamTubeChannelPtr & channel a00537.html a3ddc0eba586612942ce091a76a749342 () const Tp::StreamTubeServer a00530.html Tp::RefCounted Tp::StreamTubeServer::ParametersGenerator Tp::StreamTubeServer::RemoteContact Tp::StreamTubeServer::Tube void tubeRequested a00530.html a79863540c66e7370bfc31b76cefbc9e4 (const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints) void tubeClosed a00530.html aa6149284bb271c332a1ae974c86c4457 (const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QString &error, const QString &message) void newTcpConnection a00530.html a3a6fb43124b2047c3eca73097710ba64 (const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const Tp::OutgoingStreamTubeChannelPtr &tube) void tcpConnectionClosed a00530.html acc8f5fcc855b371430d3915754ad3a8b (const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const QString &error, const QString &message, const Tp::OutgoingStreamTubeChannelPtr &tube) virtual ~StreamTubeServer a00530.html ac4ec3a4178996d1ea8305f25a25c9218 () ClientRegistrarPtr registrar a00530.html ac0af546f4a3fa08ffb8207e450fdcf91 () const QString clientName a00530.html a4f3ce4a3ebe9838e8911f7870560a34a () const bool isRegistered a00530.html a21dc72be595520a1982e8cdbc5b25441 () const bool monitorsConnections a00530.html a26340af76407099a3b495daa615c7071 () const QPair< QHostAddress, quint16 > exportedTcpSocketAddress a00530.html abb2fb44ceeedfd62746f62dce30a35d3 () const QVariantMap exportedParameters a00530.html aede3b7140c63b6ab77d0282a6cf90bb8 () const void exportTcpSocket a00530.html ac0675a57b83d927f357c3005de8f8fc9 (const QHostAddress &address, quint16 port, const QVariantMap &parameters=QVariantMap()) void exportTcpSocket a00530.html a2ffd7f4775bcf196b8cf41c702692e45 (const QTcpServer *server, const QVariantMap &parameters=QVariantMap()) void exportTcpSocket a00530.html a6e128b4f8b23eb78b8463a2898c21943 (const QHostAddress &address, quint16 port, ParametersGenerator *generator) void exportTcpSocket a00530.html a5782864765424878c2fa632bd8760a56 (const QTcpServer *server, ParametersGenerator *generator) QList< Tube > tubes a00530.html a5e7f76884a85b7a3b97e4f0cceaf2c6a () const QHash< QPair< QHostAddress, quint16 >, RemoteContact > tcpConnections a00530.html a6eae36057f2b458d0ee561a8d16cd25c () const static StreamTubeServerPtr create a00530.html a942ccb0e1c3326fee2fb2034c78d39bf (const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false, const AccountFactoryConstPtr &accountFactory=AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory=ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory=ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory=ContactFactory::create()) static StreamTubeServerPtr create a00530.html af29e1b553452032f8e5942c72c1bb1c9 (const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false) static StreamTubeServerPtr create a00530.html a17ce8c6e4263ee55db9afba3fc6f3f5b (const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false) static StreamTubeServerPtr create a00530.html af2425e6b5409b3720a89e62aa1fc617f (const ClientRegistrarPtr &registrar, const QStringList &p2pServices, const QStringList &roomServices=QStringList(), const QString &clientName=QString(), bool monitorConnections=false) Tp::StreamTubeServer::ParametersGenerator a00425.html virtual QVariantMap nextParameters a00425.html a93f5f6b77c05a47066cd2c8436f20a84 (const AccountPtr &account, const OutgoingStreamTubeChannelPtr &tube, const ChannelRequestHints &hints)=0 virtual ~ParametersGenerator a00425.html afb74be7b77d7ade23dda42d7d03b2799 () Tp::StreamTubeServer::RemoteContact a00491.html RemoteContact a00491.html a5a8a57923facba65400626717a46dc8e () RemoteContact a00491.html ac926107b62625433da4c727437fb6d78 (const AccountPtr &account, const ContactPtr &contact) RemoteContact a00491.html ae6a2a18a445007ac593b4790ff200db3 (const RemoteContact &other) ~RemoteContact a00491.html a7188ced89e760700ab077fe395c18852 () bool isValid a00491.html ac345016380802d84632a0118abe5b2c4 () const RemoteContact & operator= a00491.html a0cd829e9adaba61b3ff2b471ac6b3699 (const RemoteContact &other) const AccountPtr & account a00491.html ad5d677cbbbfcf48b3f04a12bd5f4e610 () const const ContactPtr & contact a00491.html ab95077e1a3bc57730d5115781a0ba2b8 () const Tp::StreamTubeServer::Tube a00538.html Tube a00538.html a6529318397d861649902642ae4711b77 () Tube a00538.html a7405a77abdebb5f0eeedeb73fb979652 (const AccountPtr &account, const OutgoingStreamTubeChannelPtr &channel) Tube a00538.html a4582e0c1f763920a55241fb27d42e103 (const Tube &other) ~Tube a00538.html a71568f91c500a4e551c4f7b75ad9f971 () bool isValid a00538.html a63f048fc5177b4b652aaf8f83033c49d () const Tube & operator= a00538.html a73282136752c854a99e67bbeac39bf8b (const Tube &other) const AccountPtr & account a00538.html a12f8951e6ecd4162acf35404101df420 () const const OutgoingStreamTubeChannelPtr & channel a00538.html aa886319747f3b685f8ab9c9e9c13db4a () const Tp::PendingStreamedMediaStreams a00446.html Tp::PendingOperation ~PendingStreamedMediaStreams a00446.html aa854cfd056e4c0c241ea20e0d88618f1 () StreamedMediaChannelPtr channel a00446.html ae46e35a08b1a8886eb2a7ad86e8d30c0 () const StreamedMediaStreams streams a00446.html a9b808fdfd12f770b9026b613e5b93c28 () const Tp::StreamedMediaStream a00527.html Tp::Object Tp::ReadyObject SendingState a00527.html aa20aefbe2d402de0b1f95b4fb7589991 @ SendingStateNone a00527.html aa20aefbe2d402de0b1f95b4fb7589991abdb45cafbe13cbb92c8b5221ddc12634 @ SendingStatePendingSend a00527.html aa20aefbe2d402de0b1f95b4fb7589991ad6a5eabc7c03df90abf25ee1f77d7026 @ SendingStateSending a00527.html aa20aefbe2d402de0b1f95b4fb7589991ab629deb52722cd6177eb3b6f7a1002c9 void localSendingStateChanged a00527.html a5edca9241d0c454dd3f49f2e24f41087 (Tp::StreamedMediaStream::SendingState localSendingState) void remoteSendingStateChanged a00527.html accc4f274f27963aa169f18bd9a90c8cd (Tp::StreamedMediaStream::SendingState remoteSendingState) ~StreamedMediaStream a00527.html aec3a7368cb37fc81baaa61b0413e39a2 () StreamedMediaChannelPtr channel a00527.html a9e6f5c7461158b9e5a69a69d418fdbd0 () const uint id a00527.html a1e592ac88fd625b9370eaa9304f3a52c () const ContactPtr contact a00527.html a9fd942aa528a5c26e16c21b8335a25e8 () const MediaStreamState state a00527.html a3cbdb625a22232dedbfe56cb51837e3c () const MediaStreamType type a00527.html a3366e1aaa8ec0c3a3951f38c109fc41c () const SendingState localSendingState a00527.html ab80d19fd4c6ddeda31265bc229c26750 () const SendingState remoteSendingState a00527.html a56563e54a579a2870d48d276b255ac32 () const bool sending a00527.html ad670aa4296ad803a66da0ab326b3d8b6 () const bool receiving a00527.html ae66d14804598aa1056229e6514af21e6 () const bool localSendingRequested a00527.html a1e1c4976bb2a78f643937b6beb66ae26 () const bool remoteSendingRequested a00527.html a1702dd672f21e46d6207a806afa3fe39 () const MediaStreamDirection direction a00527.html a1976b37c0ea2b475ec96391538e372e3 () const MediaStreamPendingSend pendingSend a00527.html a7fb9e87f5b771911e2971a215abf7b1a () const PendingOperation * requestSending a00527.html a9954ca20ff41ff654f1206819e870e4a (bool send) PendingOperation * requestReceiving a00527.html a3516b2fbebbdd8d7c0bc904175b801bb (bool receive) PendingOperation * requestDirection a00527.html ad0f385c6a06089e03331ea57d931afd6 (MediaStreamDirection direction) PendingOperation * requestDirection a00527.html a5da6b57291d0c7c6fbc651f8dde05445 (bool send, bool receive) PendingOperation * startDTMFTone a00527.html a961bc2a84d4327440a060ce884b683eb (DTMFEvent event) PendingOperation * stopDTMFTone a00527.html ad7bb488894b53ab5484ee41acae99261 () Tp::StreamedMediaChannel a00526.html Tp::Channel StateChangeReason a00526.html aa00cbebc4b282db3e254dd6205a05138 @ StateChangeReasonUnknown a00526.html aa00cbebc4b282db3e254dd6205a05138a1bd74716f24d551a68c8e2592fdcd16f @ StateChangeReasonUserRequested a00526.html aa00cbebc4b282db3e254dd6205a05138af76d70cf9e98db8aff3fbf4c05a22710 void streamAdded a00526.html a798f819d0649163d3ca8ca7c28c1f524 (const Tp::StreamedMediaStreamPtr &stream) void streamRemoved a00526.html aa382a319c11351cbd7b5739bfb2a0320 (const Tp::StreamedMediaStreamPtr &stream) void streamDirectionChanged a00526.html a727e237484584ed6387fc847ee7e8b87 (const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamDirection direction, Tp::MediaStreamPendingSend pendingSend) void streamStateChanged a00526.html ad05428521413d71f65df6326997d2141 (const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamState state) void streamError a00526.html a537da5008bba28869c2cf9bd52ff5066 (const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamError errorCode, const QString &errorMessage) void localHoldStateChanged a00526.html af6f78729302c09cdd2699f9a3499f8ca (Tp::LocalHoldState state, Tp::LocalHoldStateReason reason) virtual ~StreamedMediaChannel a00526.html a0a3395a2c8a2afc9a195da07becf26b4 () bool awaitingLocalAnswer a00526.html af93d70055440857f9a6e463328c060c9 () const bool awaitingRemoteAnswer a00526.html a1a7108ee579639c70aafdbd9e6fff85a () const PendingOperation * acceptCall a00526.html a2748ea78b7d17ab8cfcaae51cac315a8 () PendingOperation * hangupCall a00526.html ac4a9a7077f8c0edbe38a7b46ca190eca () StreamedMediaStreams streams a00526.html aafa3cffe04710ccf1beabbe515d502b7 () const StreamedMediaStreams streamsForType a00526.html adb652288311efd1d35a768f7e4d82c63 (MediaStreamType type) const PendingStreamedMediaStreams * requestStream a00526.html aa18f1d75117d2e539d04f2eba823fcae (const ContactPtr &contact, MediaStreamType type) PendingStreamedMediaStreams * requestStreams a00526.html a11214a0c6566423b1f0001c67bc3efa3 (const ContactPtr &contact, QList< MediaStreamType > types) PendingOperation * removeStream a00526.html aae01a58db339336839eed7e866752667 (const StreamedMediaStreamPtr &stream) PendingOperation * removeStreams a00526.html a64aea610d34913c44961a3f0cf02cdee (const StreamedMediaStreams &streams) bool handlerStreamingRequired a00526.html a0e4aa7c70d7dd8cb5e3cb623ce02784f () const LocalHoldState localHoldState a00526.html abd40156b29d1a68d40671f6634258ccb () const LocalHoldStateReason localHoldStateReason a00526.html a312c441b51660ea639c0f0efd276f2f0 () const PendingOperation * requestHold a00526.html a45d96c82ea5d919509f974545638a6df (bool hold) static StreamedMediaChannelPtr create a00526.html a24183d8e5ab9322678ba5f516ceb0bed (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00526.html ab1d58285aec127f99d447d75368724bd static const Feature FeatureStreams a00526.html adf0c6a0013b3f2bf3bca15dbeefe8b3b static const Feature FeatureLocalHoldState a00526.html ac8c70ed52e765cd287a69c9bf2a06016 StreamedMediaChannel a00526.html a45047cf4d0754dca0486fb4eeb540a4b (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamedMediaChannel::FeatureCore) Tp::TextChannel a00535.html Tp::Channel void acknowledge a00535.html afb55a5fc13266d563ba88f31041ed87b (const QList< ReceivedMessage > &messages) void forget a00535.html a18ca62ce003aa0e323e2b31e9551e48d (const QList< ReceivedMessage > &messages) PendingSendMessage * send a00535.html ab17daecfc62d114d80e2fd01a14e1ee5 (const QString &text, ChannelTextMessageType type=ChannelTextMessageTypeNormal, MessageSendingFlags flags=0) PendingSendMessage * send a00535.html a443a34b50039849df979edce50c02996 (const MessagePartList &parts, MessageSendingFlags flags=0) PendingOperation * inviteContacts a00535.html a8f6750e534c4fc9882ff5c60a5e0e1af (const QList< ContactPtr > &contacts, const QString &message=QString()) PendingOperation * requestChatState a00535.html ae69d0b390a05a119e3e0a9c90243aab6 (ChannelChatState state) void messageSent a00535.html a7121bdb9485e2adc7b914ee6e2e43a80 (const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken) void messageReceived a00535.html ac975bebed8816f41124cd04a99ee5ab5 (const Tp::ReceivedMessage &message) void pendingMessageRemoved a00535.html a6feaeaafabf33f6a067abe3a02baedbc (const Tp::ReceivedMessage &message) void chatStateChanged a00535.html a64da071ac16b527f5b55b5d42687464c (const Tp::ContactPtr &contact, Tp::ChannelChatState state) virtual ~TextChannel a00535.html a237ed447e98f238f20822f4f6d107f9a () bool hasMessagesInterface a00535.html acee19d717b2c1b920f8ba59479af5840 () const bool hasChatStateInterface a00535.html a387ca1f04dd16de42d3bf12a827f09fb () const bool canInviteContacts a00535.html a5ebe1cb0adfb54bd5f0d6f735c8d8ea7 () const bool supportsMessageType a00535.html adcff6ecd3ced7ffd1ace9a2403bbe062 (ChannelTextMessageType messageType) const QList< ChannelTextMessageType > supportedMessageTypes a00535.html a12600f3b7420d9a8f1d90b531bf603cb () const QStringList supportedContentTypes a00535.html a0fd060584cf0d8be1bd4bddc96b09e4c () const MessagePartSupportFlags messagePartSupport a00535.html a45e1ee5bbaeadad2dbd58f155138e0e1 () const DeliveryReportingSupportFlags deliveryReportingSupport a00535.html a50ab1fc4405e3bb92b7e7ab328df68df () const QList< ReceivedMessage > messageQueue a00535.html a4a0acad4523d9278a654888468219dff () const ChannelChatState chatState a00535.html a77dbe42d2c170e5c05e83fab59a4176e (const ContactPtr &contact) const static TextChannelPtr create a00535.html a480c7d4dd280f57bde8e2a2dbf4cfa2d (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) static const Feature FeatureCore a00535.html a4992224757d4366c17f81bd4522a60aa static const Feature FeatureMessageQueue a00535.html a7293d821bbdfee44693cc1161ef7f6dc static const Feature FeatureMessageCapabilities a00535.html a74b6f9875f38e3c48ecaaeb74762750d static const Feature FeatureMessageSentSignal a00535.html a53b22df8df169c3e21e3ebc595334db1 static const Feature FeatureChatState a00535.html aaa1ede637039b587f9072d9cbed336b0 TextChannel a00535.html ab4f3e598a3c9a842f3d0adc81b1c9e26 (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TextChannel::FeatureCore) Tp::TubeChannel a00539.html Tp::Channel Tp::ByteArrayList a00131.html ByteArrayList a00131.html a9f9f843dfb281d097099f9310a12e1e1 () ByteArrayList a00131.html a7f86e44671df3e63b7f2188f824372b1 (const QList< QByteArray > &a) ByteArrayList & operator= a00131.html add7ae228a19a284a2c79a1cc9f5b1551 (const QList< QByteArray > &a) Tp::ObjectPathList a00417.html ObjectPathList a00417.html aa6c33fefb5684699eff09dfc728ac6f2 () ObjectPathList a00417.html aa3b12cc1950635514f57429db5ce847f (const QList< QDBusObjectPath > &a) ObjectPathList & operator= a00417.html a051d45535c5a02c1eba809f9f0f36bb5 (const QList< QDBusObjectPath > &a) Tp::UIntList a00541.html UIntList a00541.html ad001d8ad577994be28bbc7fb52aef1bf () UIntList a00541.html a935d8111fb5bd3dba1860025738f7a5d (const QList< uint > &a) UIntList & operator= a00541.html aa2c576e266c71eac26f46ecee7ba4c4e (const QList< uint > &a) Tp::AccessControl a00072.html uint type a00072.html a37336da8653933b0f1857dd9410716a0 QDBusVariant detail a00072.html a36b6fdcda85868ec4b69507d2f3a6137 Tp::AddressingNormalizationMap a00084.html AddressingNormalizationMap a00084.html af8fc569e3101cabecccaa10b798c679e () AddressingNormalizationMap a00084.html a1bec431c9fa9d17c9855c0eba7add82e (const QMap< QString, uint > &a) AddressingNormalizationMap & operator= a00084.html a9af1a24642811c461f67ccc5f937e5d4 (const QMap< QString, uint > &a) Tp::AliasMap a00085.html AliasMap a00085.html aa6a691386791fcbc4864376ab45a79f5 () AliasMap a00085.html a3784f69287085e6ba227404683b7e520 (const QMap< uint, QString > &a) AliasMap & operator= a00085.html a8bdd57003482435cbd13e7fac47b3fbd (const QMap< uint, QString > &a) Tp::AliasPair a00086.html uint handle a00086.html acb1aed24c5bd58b495fce686d9518709 QString alias a00086.html ab911665744edf332d43cd6cc0ad1ea99 Tp::Avatar a00089.html QByteArray avatarData a00089.html a78383ca6b5249b065758c8e79552336b QString MIMEType a00089.html a19f922f163432a8c9fccb9b00004e93d Tp::AvatarTokenMap a00092.html AvatarTokenMap a00092.html a7438e97cd349c8b5a6136d3d22bc5356 () AvatarTokenMap a00092.html ad2e88f3fecf9e857d25973aa5f26f332 (const QMap< uint, QString > &a) AvatarTokenMap & operator= a00092.html a8f917ff08793b66140de46c7b1636983 (const QMap< uint, QString > &a) Tp::CallMemberMap a00154.html CallMemberMap a00154.html ae73c3cdd55372d128c081ba20508c73d () CallMemberMap a00154.html ae10b7be28437a0a2051e8a212a35da9e (const QMap< uint, uint > &a) CallMemberMap & operator= a00154.html ae20ee8d04bba03a002ad7e4abddbbf70 (const QMap< uint, uint > &a) Tp::CallStateReason a00155.html uint actor a00155.html afa5761f9b02d6683a9c1fd02f75f4c13 uint reason a00155.html a0f73e97b9ce2678a7637a66f1840ebd2 QString DBusReason a00155.html a3fd1f7d30b66390fae6bd660a77beb59 QString message a00155.html a67f766b6526c8156cb410bb6c70c6797 Tp::Candidate a00160.html uint component a00160.html aa87e518c275bfa1389fb3fec8593d4b7 QString IP a00160.html ad52bf86d2c2b44b12be58a9d2a4875b8 uint port a00160.html a407c6215d6aa3d64618b5e688449771c QVariantMap info a00160.html a744c2fd61fad4b8a60925ced0e7bb1cc Tp::CandidateInfo a00161.html CandidateInfo a00161.html aca9d51350940b3ab60cb23c69cf45dd4 () CandidateInfo a00161.html af5a57adefba8d98fda8fe0eb1d5b741a (const QMap< QString, QDBusVariant > &a) CandidateInfo & operator= a00161.html a39138283b1b61192b90c00cecb00d83c (const QMap< QString, QDBusVariant > &a) Tp::CapabilityChange a00165.html uint handle a00165.html af861f557a240c4027cbe21e3ac296a1d QString channelType a00165.html adf6f8fdc9ed9a750445332b3b3f07c78 uint oldGenericFlags a00165.html a23f2b3fed49ce61472bdc9fa068b994c uint newGenericFlags a00165.html afc024ff61d7056f2df64e4faa3a4f06d uint oldTypeSpecificFlags a00165.html ad605be5defad45db6c4aabc5cf9d7f5e uint newTypeSpecificFlags a00165.html a5c7ef332032c55f88f1ac7308ead9fd8 Tp::CapabilityPair a00166.html QString channelType a00166.html ae331dc8c4c853b804b5d8c436fd21b88 uint typeSpecificFlags a00166.html ac739c64fa64636013940fedf6e1e649d Tp::CaptchaAnswers a00168.html CaptchaAnswers a00168.html a1458dde424f45a29fb7ff87dfdcb0f8b () CaptchaAnswers a00168.html aac7a228d6ee4f3748cb29ae2a2de52dd (const QMap< uint, QString > &a) CaptchaAnswers & operator= a00168.html a109b8b67a563e0fa34d982d7399283e2 (const QMap< uint, QString > &a) Tp::CaptchaInfo a00170.html uint ID a00170.html add45381fad9491883eafb5d301f50109 QString type a00170.html afa6bd5fea1990542188a1c0a8fa216a5 QString label a00170.html a5d0d6128f05c5ac688cbef740803f0d8 uint flags a00170.html a700aa6dd98bde267b25472e698ffb085 QStringList availableMIMETypes a00170.html a598ed9ba79c6f35446eab21f0f8ffaed Tp::ChannelCallStateMap a00173.html ChannelCallStateMap a00173.html a5ea92444ad14a49ef1e80c5bd8ce10d9 () ChannelCallStateMap a00173.html a35df05e14241606c0e490d255f293216 (const QMap< uint, uint > &a) ChannelCallStateMap & operator= a00173.html af17418ea7b3aaebbb00b677824f34664 (const QMap< uint, uint > &a) Tp::ChannelClass a00174.html ChannelClass a00174.html a2cdd92e4288a21175ac76e64b9716fa9 () ChannelClass a00174.html a153f2964e50e2c512b4bf98364c2adb0 (const QMap< QString, QDBusVariant > &a) ChannelClass & operator= a00174.html a8229e830748f5d94ad0af5c18d800e21 (const QMap< QString, QDBusVariant > &a) Tp::ChannelDetails a00177.html QDBusObjectPath channel a00177.html a8b7a7ad095bcb6ad847c67fac177f18c QVariantMap properties a00177.html a58ea2d20c6fd914c0c91327e44d87554 Tp::ChannelInfo a00183.html QDBusObjectPath channel a00183.html aeaf4462b50596782ba32e2a3adfbffd5 QString channelType a00183.html a2acf8306b7b28207c98f03be05be7b35 uint handleType a00183.html a6d823ba8dc586535972b8c6e21f0952c uint handle a00183.html abcb87ea67667d6ea9f787ac862c5a69d Tp::ChannelOriginatorMap a00228.html ChannelOriginatorMap a00228.html a30e064311f1530dbf61fa8cf099958e2 () ChannelOriginatorMap a00228.html a69523d9dfc18bf49a99b442848731d31 (const QMap< uint, QDBusObjectPath > &a) ChannelOriginatorMap & operator= a00228.html a60fdcb55d57212eea0817de0e56b5a8d (const QMap< uint, QDBusObjectPath > &a) Tp::ChatStateMap a00254.html ChatStateMap a00254.html ad4dfaacc4ed5c669a08e209a4bffcdb5 () ChatStateMap a00254.html aa4cda41b139560ed90d0ac667e5de7f6 (const QMap< uint, uint > &a) ChatStateMap & operator= a00254.html a70cad5fd5c461ed4325a9df4ef9b36ce (const QMap< uint, uint > &a) Tp::ComponentStateMap a00262.html ComponentStateMap a00262.html a1c821f0009b989a3f38a4b9925033e11 () ComponentStateMap a00262.html a45e61aee2678ca225ce8f4466cd47dd4 (const QMap< uint, uint > &a) ComponentStateMap & operator= a00262.html a8d2070f327ebf6a5f83a0b31939961e7 (const QMap< uint, uint > &a) Tp::ContactAttributesMap a00314.html ContactAttributesMap a00314.html a9908c3b347b5c5a2c69ae2cf1433220b () ContactAttributesMap a00314.html a89eed8c58f5632e600b070c5da3efcc6 (const QMap< uint, QVariantMap > &a) ContactAttributesMap & operator= a00314.html a461566966fbcd67005ac24a7f7d5ad8c (const QMap< uint, QVariantMap > &a) Tp::ContactCapability a00317.html uint handle a00317.html a95a5f6cfc301edf04579c13bb295e430 QString channelType a00317.html a4539b0f8093f2476308003a930be6687 uint genericFlags a00317.html a4c025885b121932d426ed3565aded25c uint typeSpecificFlags a00317.html a55531eeb6d9ae9c1cff464a33da4f6c8 Tp::ContactClientTypes a00318.html ContactClientTypes a00318.html a62c1c8f1283665b4b242f3994b419f0d () ContactClientTypes a00318.html af9ec6f108474fbfc5ad3dcc438234dc4 (const QMap< uint, QStringList > &a) ContactClientTypes & operator= a00318.html a7e6fd4c6f5f10dd6b5a1b4c988cadf84 (const QMap< uint, QStringList > &a) Tp::ContactInfoField a00321.html QString fieldName a00321.html a1cc69fa1c18d29fe268b02aac866fbcb QStringList parameters a00321.html a5d3dbb5ec36017ecb335e31a9d2d16fb QStringList fieldValue a00321.html aebfb20659e9c1c15a117bee269b4e73e Tp::ContactLocations a00323.html ContactLocations a00323.html a7d5093d05ddb33caa88c7780343e4adb () ContactLocations a00323.html a1586598dc5060699308a67c6391b180e (const QMap< uint, QVariantMap > &a) ContactLocations & operator= a00323.html ab835d1df61f36536174d58d221290bb0 (const QMap< uint, QVariantMap > &a) Tp::ContactMediaDescriptionPropertiesMap a00325.html ContactMediaDescriptionPropertiesMap a00325.html ac3255557e39d6b52195ad6960b277c7e () ContactMediaDescriptionPropertiesMap a00325.html af9c98fe1941b6be961ed4032e2a2f94c (const QMap< uint, QVariantMap > &a) ContactMediaDescriptionPropertiesMap & operator= a00325.html a4031638288e46c10d7032b50a4f933a4 (const QMap< uint, QVariantMap > &a) Tp::ContactSSRCsMap a00332.html ContactSSRCsMap a00332.html ae2420e3ddd2051a4b57ca72aebe70a67 () ContactSSRCsMap a00332.html a74b5a4453757449974c90365a6fb4bb2 (const QMap< uint, UIntList > &a) ContactSSRCsMap & operator= a00332.html a4c5f01b784c7ee30c6b280799f1846f6 (const QMap< uint, UIntList > &a) Tp::ContactSearchMap a00329.html ContactSearchMap a00329.html a7e618543a0c3d519111def74065dcc3c () ContactSearchMap a00329.html a57c6790af9c51c9d276c5700fa27df20 (const QMap< QString, QString > &a) ContactSearchMap & operator= a00329.html a983b0fee5f4227f1af50bd1e0dfe393e (const QMap< QString, QString > &a) Tp::ContactSendingStateMap a00331.html ContactSendingStateMap a00331.html af1102c90ea5c7205b3934952bc0976fa () ContactSendingStateMap a00331.html a38c649db3a37d6644f5ec6790b39034f (const QMap< uint, uint > &a) ContactSendingStateMap & operator= a00331.html a20f56b6ea141078e48014a022e7b384b (const QMap< uint, uint > &a) Tp::ContactSubscriptions a00334.html uint subscribe a00334.html a84abdea97e9a6b6d5700b52f7a8caf36 uint publish a00334.html a4adede5b1eabff1eba25ed2a42b790dd QString publishRequest a00334.html afaed3e77a48d68af90830ee9ca843ce7 Tp::CurrencyAmount a00335.html int amount a00335.html ac788302b47ac04ad10146570c7950036 uint scale a00335.html a41e22c658bcfe34c05f95a3865074e01 QString currency a00335.html a1f8c2bad78d76fb77e36f9e8d1a4a869 Tp::DBusTubeMember a00343.html uint handle a00343.html a1a66fb62a27a3e884cd5d7f9e8fb052d QString uniqueName a00343.html a2aae283245a92c8f37b9a7d8b0b86ff1 Tp::DBusTubeParticipants a00344.html DBusTubeParticipants a00344.html a0bd4084e4104d4756e038c6f4816b2c2 () DBusTubeParticipants a00344.html ac2103d56dc8550c47e099dcb8e46a1e7 (const QMap< uint, QString > &a) DBusTubeParticipants & operator= a00344.html a96e59de468b8d30cd27448fd389f4430 (const QMap< uint, QString > &a) Tp::DebugMessage a00346.html double timestamp a00346.html a2482bdf6a5e616fa6d05cc159cd0e565 QString domain a00346.html a9650c39f1d5f1c4d7997f3778d50cbb7 uint level a00346.html a3124027d9ed546aabed530f4a7e80196 QString message a00346.html a631eb4370f17f82c8310b5d8cc86c486 Tp::FieldSpec a00352.html QString name a00352.html a17ae459552c227d6e78488bdc84d51f1 QStringList parameters a00352.html ac14cde2320037a2b387f47e95663d034 uint flags a00352.html acebd8c32de0c64cfd858ade76037401a uint max a00352.html aa7d60b9027ac275aa9ef7548f1f6686e Tp::HTTPPostData a00373.html QString key a00373.html abfcd2c0255ab587c5fc43043e3c1fbe6 QString value a00373.html a398fdaef7e43ae0a4e4fb31d7f652648 Tp::HandleIdentifierMap a00369.html HandleIdentifierMap a00369.html a0457cac4989eaef78f3b86b37db457f8 () HandleIdentifierMap a00369.html a97cc6a58adf909d664ec5f4efc4e3327 (const QMap< uint, QString > &a) HandleIdentifierMap & operator= a00369.html a91bdbb50d21509a5ad450c7c46d62c0e (const QMap< uint, QString > &a) Tp::HandleOwnerMap a00370.html HandleOwnerMap a00370.html a38c5788a5daa74e3f9f1a4af88f5becc () HandleOwnerMap a00370.html a2907f82e6ea97adc208d420444ff3c5a (const QMap< uint, uint > &a) HandleOwnerMap & operator= a00370.html afccefcebb32e155d926078656283be1b (const QMap< uint, uint > &a) Tp::LocalPendingInfo a00381.html uint toBeAdded a00381.html add8926f89623ae757569314e71868890 uint actor a00381.html a1a92791d2b1509bea1ce14a6cc812a2a uint reason a00381.html a2f513e7ae121f945b84c2a0c8850a777 QString message a00381.html afc71db75eda2f2edf228bf4b69e1bfca Tp::Location a00382.html Location a00382.html aaa4547edc84e248b1b2b9ff908d4f72e () Location a00382.html a4035686bd315d84b1dcf49d8ed8a39c3 (const QMap< QString, QDBusVariant > &a) Location & operator= a00382.html a40517f70cec10c31964297ea24cbb988 (const QMap< QString, QDBusVariant > &a) Tp::Mail a00384.html Mail a00384.html a8429598413ba5698761d4104e239f1bf () Mail a00384.html aa9f51f13a65b8d0de73ea1c242990911 (const QMap< QString, QDBusVariant > &a) Mail & operator= a00384.html a4c5d329bc561d00d8e41880ac6190187 (const QMap< QString, QDBusVariant > &a) Tp::MailAddress a00385.html QString name a00385.html aa061624bfb4b0e1fbba6a8060e019cb2 QString address a00385.html af7a5af758ca2d8cccec7d25177be5b6f Tp::MediaDescriptionOffer a00387.html QDBusObjectPath mediaDescription a00387.html a7c1f87d5f000fe25bdef4f828e3a37ef QVariantMap properties a00387.html a5f3da2243a353de9cc1013342ebcbaca Tp::MediaDescriptionProperties a00388.html MediaDescriptionProperties a00388.html a20563e0d40c51f8d1a54c8a8e535b07f () MediaDescriptionProperties a00388.html a2531f6cbad7c151249f29925695b7356 (const QMap< QString, QDBusVariant > &a) MediaDescriptionProperties & operator= a00388.html a6128afdfdbff49497cb0a4a3e14e7b3a (const QMap< QString, QDBusVariant > &a) Tp::MediaSessionHandlerInfo a00389.html QDBusObjectPath sessionHandler a00389.html a77f64dbde416a9b7f5fbba7acd10245e QString mediaSessionType a00389.html a32cc59fe4458e6f817716fb666d97c32 Tp::MediaStreamHandlerTransport a00394.html uint componentNumber a00394.html afa2bff5c2c31d4abeaf7f1f1566f4095 QString IPAddress a00394.html ae938c51294ba2500f67f18c98abd21c6 uint port a00394.html acdb5a875086cc85cb32be7665c489132 uint protocol a00394.html a60f70f93424862f2d0b118c5e173358f QString subtype a00394.html a29f3be6e0c12630d97e6739a4c74d442 QString profile a00394.html ac5ce026b4c33a923b8c0bb6486b479df double preferenceValue a00394.html a7c6678ca560a9382bdc6c039cef2a55a uint transportType a00394.html a832b70ed3b9d9c7668896a6eda6ed387 QString username a00394.html af1b86069bdae8e7e5b89f9043b7b021d QString password a00394.html a9fdfd85943b5058a18656eb720e6760f Tp::MediaStreamInfo a00395.html uint identifier a00395.html a976811fc43ada79fd328f3f1dc11e2d4 uint contact a00395.html ac4c7bca76588559028d435b2fe6b6224 uint type a00395.html a8b8721d07d4a4058897c1bc1487e52c5 uint state a00395.html a6542749a6d740def2c97c8aaa4a77bbf uint direction a00395.html aa623a103c92274d1a7d6870364c0f48c uint pendingSendFlags a00395.html a946e78a080cccd4ca47a0581f69a20a3 Tp::MessagePart a00407.html MessagePart a00407.html a1a41d368c27c4c1e02bdefb08f22264a () MessagePart a00407.html a6b75645f5b063c5ef953beb5690aed29 (const QMap< QString, QDBusVariant > &a) MessagePart & operator= a00407.html ac2e934cc97febd88b7c1906617904c00 (const QMap< QString, QDBusVariant > &a) Tp::MessagePartContentMap a00408.html MessagePartContentMap a00408.html a059ca636ee3e769540506c0d13a1b137 () MessagePartContentMap a00408.html a2ab1c58c121b99f935baeae0dcc1664c (const QMap< uint, QDBusVariant > &a) MessagePartContentMap & operator= a00408.html a91e48d97c6706e5d37ec458f9f5a87ba (const QMap< uint, QDBusVariant > &a) Tp::Metadata a00409.html Metadata a00409.html a735b34760675858f0371c311b351b155 () Metadata a00409.html a6b9d49a25101d281e5d4c3327565d862 (const QMap< QString, QStringList > &a) Metadata & operator= a00409.html a4994446a28bdaa899c94b9d43dfa44e6 (const QMap< QString, QStringList > &a) Tp::MultipleStatusMap a00411.html MultipleStatusMap a00411.html adc0aa567d7a9e230bef4d5f0df193d65 () MultipleStatusMap a00411.html a59b800128f0fd477acfa8e85ec3e2311 (const QMap< QString, QVariantMap > &a) MultipleStatusMap & operator= a00411.html a1770952e0be9af63c9da37cee95b6c91 (const QMap< QString, QVariantMap > &a) Tp::NotDelegatedError a00412.html QString errorName a00412.html aa8d75c8bf4cd609d65b53eb8c6f5a339 QString errorMessage a00412.html ac163be5c025227fd607e121250792e8e Tp::ObjectImmutablePropertiesMap a00416.html ObjectImmutablePropertiesMap a00416.html aa27ddf2431cd767e892778c8084312fc () ObjectImmutablePropertiesMap a00416.html a0e548da289afe6f9e80809860723f235 (const QMap< QDBusObjectPath, QVariantMap > &a) ObjectImmutablePropertiesMap & operator= a00416.html a952ae67ad95ccb8ca5fd681198882eb3 (const QMap< QDBusObjectPath, QVariantMap > &a) Tp::ParamSpec a00426.html QString name a00426.html a3427336575350de74b5cef719399da6d uint flags a00426.html a6ffd3669f250f78b22ead709307d3594 QString signature a00426.html ab2133ba67b01b05a7d49bfc296e32f92 QDBusVariant defaultValue a00426.html a7fa9c745e7b1a0d8deb7033d8df2990c Tp::PendingTextMessage a00451.html uint identifier a00451.html a2853752a52c8bfb5425572d7b3b7c1a0 uint unixTimestamp a00451.html afae449bf464ff944c189cf6b8f986927 uint sender a00451.html a9aa8df89dbb5cf050b10fe567a841199 uint messageType a00451.html a6064b4fc055b6dbab1d934a73ffb5808 uint flags a00451.html a2a9b6131f79fdc807e671d88de68b34d QString text a00451.html a304f13812a4fa78bd7f7d9b917212042 Tp::PropertyFlagsChange a00463.html uint propertyID a00463.html ad2a67b75ee1f452515312098ba132bfd uint newFlags a00463.html a6ebcdbedd503e4650c72708948144bb6 Tp::PropertySpec a00464.html uint propertyID a00464.html add6e67ef920701101b725d7fff0a320e QString name a00464.html a0f154fce1538a8041962b9a3c5af3029 QString signature a00464.html a3b107828ef8655fb00725686b74d51f2 uint flags a00464.html a1644a52dfe064265a0aa5fe6e90a2917 Tp::PropertyValue a00465.html uint identifier a00465.html aa2d2bbdf22d027af2eb6dcac5dfa065a QDBusVariant value a00465.html aba46069a91abcd786a53fcdeb3956055 Tp::ProtocolPropertiesMap a00476.html ProtocolPropertiesMap a00476.html a1758abbbca36be739a9b2422d3247fe3 () ProtocolPropertiesMap a00476.html aa355f8e3cbbfd3839cfc226f8113b1ea (const QMap< QString, QVariantMap > &a) ProtocolPropertiesMap & operator= a00476.html ae1119b35a4fd21e9d5f77eb74e1faa73 (const QMap< QString, QVariantMap > &a) Tp::QualifiedPropertyValueMap a00485.html QualifiedPropertyValueMap a00485.html af649e09c1a0ff93d8562a3d12e6c5d19 () QualifiedPropertyValueMap a00485.html a31b00139677db9d0b4b46f8a5f9b1716 (const QMap< QString, QDBusVariant > &a) QualifiedPropertyValueMap & operator= a00485.html adaeba5156fca40e92bf63e5b7019ce6b (const QMap< QString, QDBusVariant > &a) Tp::RTCPFeedbackMessage a00498.html QString type a00498.html ad099f588a114b1435ae2547422859c19 QString subtype a00498.html a21e3b5a4f1515b386c18d4c5f6631e6e QString parameters a00498.html ac2eef033839f24fc07e88df4e7e3e984 Tp::RTPHeaderExtension a00501.html uint ID a00501.html a7e20d861df2afef9a4258ed1b2fb6b6c uint direction a00501.html a63f16b528134a1814ddf5e0d43687c1f QString URI a00501.html a57eabda42755fb13b25bbe72c7c178fb QString parameters a00501.html abb8f26753104de224009d275b0bc0cca Tp::RequestableChannelClass a00492.html QVariantMap fixedProperties a00492.html aea833cfc56dea2405a61a0d8d82ee2a2 QStringList allowedProperties a00492.html a43de5927a252d90a988e35d52a37b87f Tp::RichPresenceAccessControl a00495.html uint type a00495.html a7ca0e7eb95c3dca3ce5081124b17882b QDBusVariant detail a00495.html a7db7d0f143be8054b958e7e7812ec4fe Tp::RoomInfo a00496.html uint handle a00496.html aa7519a9ee4cded06a72c7da7007923f2 QString channelType a00496.html abc4d26dcdcf74873727598433588f8a2 QVariantMap info a00496.html a629a9bcf2b50ccfae3138e2342ea2974 Tp::ServicePoint a00504.html uint servicePointType a00504.html a4574097ed1038db922fb63d88878a10a QString service a00504.html ad3fe8e6f9bfcdef22c3a0ae84a6c4700 Tp::SimplePresence a00510.html uint type a00510.html ab079d0fed6dcfe3c8dc6b64e925cb7f7 QString status a00510.html a3d0c93676cdf1c16bd14ed4a95f10914 QString statusMessage a00510.html a43bddb3a0909795eec3f9cc69a3787fc Tp::SimpleStatusSpec a00511.html uint type a00511.html a2529c0e267eb320c729e99bc43f805db bool maySetOnSelf a00511.html a968cddecd58b074ec3e785c2946f73ba bool canHaveMessage a00511.html afde4b8cdacfb5dd53e34bf7e09cabc9d Tp::SingleContactAttributesMap a00515.html SingleContactAttributesMap a00515.html a84c3195bf522f040ce50713580a03d0e () SingleContactAttributesMap a00515.html af062e3d67bb3e92a3fa03aa8d976ee73 (const QMap< QString, QDBusVariant > &a) SingleContactAttributesMap & operator= a00515.html a2ce188ed5088f1116a892ff443236c78 (const QMap< QString, QDBusVariant > &a) Tp::SocketAddressIP a00516.html QString address a00516.html a6912d0ea8cd99a048ebbbb61bbb39e7d ushort port a00516.html a17b7fa04cefee793067e7b022185e729 Tp::SocketAddressIPv4 a00517.html QString address a00517.html a6ce2c73995ea593326b7237e38a67c7a ushort port a00517.html adc892e488990cc26d818aa8f5857fc67 Tp::SocketAddressIPv6 a00518.html QString address a00518.html a49e2edfb1ed3ba66b85ff8546ac517e3 ushort port a00518.html a8c16ef9b2e43a267705ebaeb1f331946 Tp::SocketNetmaskIPv4 a00519.html QString address a00519.html a2840c43c4667b00113291b6bc24dab44 uchar prefixLength a00519.html af3488c362f4aabc881618f061d31cbf4 Tp::SocketNetmaskIPv6 a00520.html QString address a00520.html a3cf2596aad66d4747c6f4ec83fd157f0 uchar prefixLength a00520.html aec86021fa6cc9595b646271004571f92 Tp::StreamCredentials a00525.html QString username a00525.html a98adf83f0e60efbc694f3f871b441bf1 QString password a00525.html a16f3a03e9f071d701475ecbbf006e8c8 Tp::StringStringMap a00531.html StringStringMap a00531.html ab26589a7364423321a33220f00f85cc5 () StringStringMap a00531.html a5c4a7c18bc10a29c76c47038689d29a2 (const QMap< QString, QString > &a) StringStringMap & operator= a00531.html a083ef21fe67a47fd83b37a83dd92b9a9 (const QMap< QString, QString > &a) Tp::StringVariantMap a00532.html StringVariantMap a00532.html a91d545ae00fe3044bf9b147c08ea8483 () StringVariantMap a00532.html a8309328030f6b45fb3b4ed3dd9aca01b (const QMap< QString, QDBusVariant > &a) StringVariantMap & operator= a00532.html a8b4d73533ab802cc9a4ab21b7e555f0b (const QMap< QString, QDBusVariant > &a) Tp::SupportedSocketMap a00533.html SupportedSocketMap a00533.html a5542e1efdd4315a2b4a20872164fc873 () SupportedSocketMap a00533.html af6f50437da207644c7dd06f946d32144 (const QMap< uint, UIntList > &a) SupportedSocketMap & operator= a00533.html a2fdc17beea11ec58faf5c7c449e6be93 (const QMap< uint, UIntList > &a) Tp::TLSCertificateRejection a00536.html uint reason a00536.html a596fc6b335546115f80ac0945036f0aa QString error a00536.html a1ba42c160a46a02bd2aa23fc844cfd6e QVariantMap details a00536.html a870aa788afd0dfbc10afab90bf663b4e Tp::TubeInfo a00540.html uint identifier a00540.html a55ec47239502d4adb9db9ba64cdaf794 uint initiator a00540.html a840be6279f3ce706ffa05c9411511934 uint type a00540.html a7534872596f596abfbf1c0e7ceba0d37 QString service a00540.html adcbe49865a86edc12daf00c6403768b6 QVariantMap parameters a00540.html a987451ee37a0a9572f37ec6b355a0457 uint state a00540.html a5730ddfb08aa24c7b81312cdd192bbda Tp::VCardFieldAddressMap a00542.html VCardFieldAddressMap a00542.html addf7be050c3f5988ba9b7ba5b4dd2b7d () VCardFieldAddressMap a00542.html a9d54981e779870680f9e9f82b91455d8 (const QMap< QString, QString > &a) VCardFieldAddressMap & operator= a00542.html a1dec6f99ddde1061e63a0f5a07efde90 (const QMap< QString, QString > &a) Tp::VideoResolution a00543.html uint width a00543.html a3098c4efc3775c208916c1dcece5a43e uint height a00543.html a02c26671ca0031f6a75b66e26385d2f6 Tp::CandidatePair a00162.html Candidate local a00162.html a8a9504d8544994f622f15a26c6c2d5dd Candidate remote a00162.html afcdcf1056135a67f8dfdcdbaede619ef Tp::Codec a00261.html uint identifier a00261.html a7be2726f7a7fea865e7266e6f2b2177b QString name a00261.html a16b28348bda458eccebd50c9b5ad7e7d uint clockrate a00261.html a271fc0d965a75feb092cca1bb95a9136 uint channels a00261.html a8c800041f377ce5d5f38a7f8185cb9bc bool updated a00261.html a0b2f8520c1c673d176aa250ce1490b25 StringStringMap parameters a00261.html a61659a12fd6e58107f4c8f4aef03633e Tp::ContactCapabilitiesMap a00316.html ContactCapabilitiesMap a00316.html a09bf49d3f5afcdd4e5b23f8e1c94502b () ContactCapabilitiesMap a00316.html ab04f4abbf6b44aa09fdadac89ea3c181 (const QMap< uint, RequestableChannelClassList > &a) ContactCapabilitiesMap & operator= a00316.html a1abfaae5b86d434d36d6150ecfc7aad2 (const QMap< uint, RequestableChannelClassList > &a) Tp::ContactInfoMap a00322.html ContactInfoMap a00322.html a52f9eea5f802e7d203c0a23d82255c63 () ContactInfoMap a00322.html a1937f27cdb21e0f2acf4f404e7756b46 (const QMap< uint, ContactInfoFieldList > &a) ContactInfoMap & operator= a00322.html a27d39c2a92c669066f1717051cea65f8 (const QMap< uint, ContactInfoFieldList > &a) Tp::ContactSearchResultMap a00330.html ContactSearchResultMap a00330.html a03f40be63f84768088a33414ab75a2a7 () ContactSearchResultMap a00330.html a0b3400da0ea9237ee66a35c6114b6789 (const QMap< QString, ContactInfoFieldList > &a) ContactSearchResultMap & operator= a00330.html a29eeda8ec75bd8ac127e9a575c8810a6 (const QMap< QString, ContactInfoFieldList > &a) Tp::ContactSubscriptionMap a00333.html ContactSubscriptionMap a00333.html a7dca0876b80ed93d7f50b650e40a6aef () ContactSubscriptionMap a00333.html af63d33a231941350abd7e0d34a86e8c3 (const QMap< uint, ContactSubscriptions > &a) ContactSubscriptionMap & operator= a00333.html a1b23d32401dc349380d7e0ea7d5779ec (const QMap< uint, ContactSubscriptions > &a) Tp::HandlerCapabilities a00371.html QString wellKnownName a00371.html a4dfb85ed3096c2f09886391b1dd679aa StringVariantMapList channelClasses a00371.html a3572e7ce2f70f8066b144b700ffa4fd1 QStringList capabilities a00371.html afd2552fbfbc13aa8c39a6b4f2d2ce70f Tp::LastActivityAndStatuses a00380.html uint lastActivity a00380.html aa2c84793326941697aeebba6161dcfae MultipleStatusMap statuses a00380.html ad969842a107cc652f9feff91018c6c4d Tp::MailURL a00386.html QString URL a00386.html a8532db2c3603357ccc7369924494fd7f uint method a00386.html a75ff4e8924eb4433b56510a529864e64 HTTPPostDataList postData a00386.html a403f01eb6c062addc17bfc7a76a7bf9e Tp::MediaStreamHandlerCandidate a00391.html QString name a00391.html a6dbd5e48b794a037069f23851ec96b1d MediaStreamHandlerTransportList transports a00391.html a8e7dd63334f23067a7bb76aed0362074 Tp::MediaStreamHandlerCodec a00392.html uint codecID a00392.html a00c689f7bb4944dad548cc399fe48db4 QString name a00392.html ad1d1b69a148fb215b3f48f0e8dfbc1a6 uint mediaType a00392.html ab5ecbdd99a3f3275183c15936474f49e uint clockRate a00392.html a383b950a18b0fe0461726d648601e687 uint numberOfChannels a00392.html a57b78c25e631b7721a379a1add33959d StringStringMap parameters a00392.html a517fabe2623e3ab4159acd504fb559d1 Tp::NotDelegatedMap a00413.html NotDelegatedMap a00413.html adc24e8b38437f78d82aedf19e71ec688 () NotDelegatedMap a00413.html a6060a09791049d8b02fe25ff5eddaa6e (const QMap< QDBusObjectPath, NotDelegatedError > &a) NotDelegatedMap & operator= a00413.html aa4d65983375469dc6c18c0c305037e89 (const QMap< QDBusObjectPath, NotDelegatedError > &a) Tp::RTCPFeedbackMessageProperties a00500.html uint RTCPMinimumInterval a00500.html a785815c118b8414a41a9fd27a28edd94 RTCPFeedbackMessageList messages a00500.html a3a036862bfec531810d7e57b85c13a55 Tp::ServicePointInfo a00505.html ServicePoint servicePoint a00505.html a11d2f7bfab8addaedc24d3bfa38f5418 QStringList serviceIDs a00505.html a332187b214d59eff84cbed3737d8638a Tp::SimpleContactPresences a00508.html SimpleContactPresences a00508.html a1be942cc8d304f7bb753345a009cb8c1 () SimpleContactPresences a00508.html a5c842cea7dd50700132c881de296ca48 (const QMap< uint, SimplePresence > &a) SimpleContactPresences & operator= a00508.html a05b64cb109ed668352ad78f566b38cd2 (const QMap< uint, SimplePresence > &a) Tp::SimpleStatusSpecMap a00512.html SimpleStatusSpecMap a00512.html ad856cc9010d6e93b9577ec871d15ee90 () SimpleStatusSpecMap a00512.html accfaf94dd3211ab66d8322f4c9af62d8 (const QMap< QString, SimpleStatusSpec > &a) SimpleStatusSpecMap & operator= a00512.html a1d9293c6ef566b50902a7424baab6295 (const QMap< QString, SimpleStatusSpec > &a) Tp::StatusSpec a00523.html uint type a00523.html aa7aa2223df547af769307be0e778bfd0 bool maySetOnSelf a00523.html a56f0b00e61d877093c0e6903dcde7636 bool exclusive a00523.html ac03b2ebaec3e5a1f0d4a0afcff963871 StringStringMap parameterTypes a00523.html a096f1a7de3555905be469ef0560c370e Tp::ContactCodecMap a00319.html ContactCodecMap a00319.html a38e316ab8d0cb28f7216e070b58c99b9 () ContactCodecMap a00319.html aa930cc6a3528f20d0f19c19b5a0cf00f (const QMap< uint, CodecList > &a) ContactCodecMap & operator= a00319.html a7341b4d60bdcd4c18df5b8230e7f2196 (const QMap< uint, CodecList > &a) Tp::ContactPresences a00327.html ContactPresences a00327.html a8a127b0aadb1132dc679e9211d6bcbfc () ContactPresences a00327.html a0076ed95787843e7d39c76b8f9f0ab54 (const QMap< uint, LastActivityAndStatuses > &a) ContactPresences & operator= a00327.html ab8b6c93d7984dd0c10e044f2b2a60af5 (const QMap< uint, LastActivityAndStatuses > &a) Tp::RTCPFeedbackMessageMap a00499.html RTCPFeedbackMessageMap a00499.html ac6667858600fc8fc783f51e68e5e0f48 () RTCPFeedbackMessageMap a00499.html ac8c658ed9891b42f4df4da4ec436e328 (const QMap< uint, RTCPFeedbackMessageProperties > &a) RTCPFeedbackMessageMap & operator= a00499.html a191d1e92065cf0a57930fb941d2049b8 (const QMap< uint, RTCPFeedbackMessageProperties > &a) Tp::StatusSpecMap a00524.html StatusSpecMap a00524.html a7b4ac05b7522441a67ce00c5ec7978d2 () StatusSpecMap a00524.html af2908de8260cff7570446248e3a90754 (const QMap< QString, StatusSpec > &a) StatusSpecMap & operator= a00524.html a1d55b26ca8ce23c9e5618fd78f511828 (const QMap< QString, StatusSpec > &a) Tp::AccountCapabilityFilter a00074.html Tp::Client a00864.html Tp::Client::DBus Tp::Client::AccountManagerInterface Tp::Client::AccountInterface Tp::Client::AccountInterfaceAddressingInterface Tp::Client::AccountInterfaceAvatarInterface Tp::Client::AccountInterfaceStorageInterface Tp::Client::CallContentMediaDescriptionInterface Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface Tp::Client::CallContentInterface Tp::Client::CallContentInterfaceAudioControlInterface Tp::Client::CallContentInterfaceDTMFInterface Tp::Client::CallContentInterfaceMediaInterface Tp::Client::CallContentInterfaceVideoControlInterface Tp::Client::CallStreamEndpointInterface Tp::Client::CallStreamInterface Tp::Client::CallStreamInterfaceMediaInterface Tp::Client::ChannelDispatchOperationInterface Tp::Client::ChannelDispatcherInterface Tp::Client::ChannelDispatcherInterfaceMessages1Interface Tp::Client::ChannelRequestInterface Tp::Client::ChannelInterface Tp::Client::ChannelInterfaceAnonymityInterface Tp::Client::ChannelInterfaceCallStateInterface Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface Tp::Client::ChannelInterfaceChatStateInterface Tp::Client::ChannelInterfaceConferenceInterface Tp::Client::ChannelInterfaceDTMFInterface Tp::Client::ChannelInterfaceDestroyableInterface Tp::Client::ChannelInterfaceFileTransferMetadataInterface Tp::Client::ChannelInterfaceGroupInterface Tp::Client::ChannelInterfaceHoldInterface Tp::Client::ChannelInterfaceMediaSignallingInterface Tp::Client::ChannelInterfaceMessagesInterface Tp::Client::ChannelInterfacePasswordInterface Tp::Client::ChannelInterfaceRoomConfigInterface Tp::Client::ChannelInterfaceRoomInterface Tp::Client::ChannelInterfaceSASLAuthenticationInterface Tp::Client::ChannelInterfaceSMSInterface Tp::Client::ChannelInterfaceSecurableInterface Tp::Client::ChannelInterfaceServicePointInterface Tp::Client::ChannelInterfaceSubjectInterface Tp::Client::ChannelInterfaceTubeInterface Tp::Client::ChannelTypeCallInterface Tp::Client::ChannelTypeContactListInterface Tp::Client::ChannelTypeContactSearchInterface Tp::Client::ChannelTypeDBusTubeInterface Tp::Client::ChannelTypeFileTransferInterface Tp::Client::ChannelTypeRoomListInterface Tp::Client::ChannelTypeServerAuthenticationInterface Tp::Client::ChannelTypeServerTLSConnectionInterface Tp::Client::ChannelTypeStreamTubeInterface Tp::Client::ChannelTypeStreamedMediaInterface Tp::Client::ChannelTypeTextInterface Tp::Client::ChannelTypeTubesInterface Tp::Client::ClientInterface Tp::Client::ClientApproverInterface Tp::Client::ClientHandlerInterface Tp::Client::ClientInterfaceRequestsInterface Tp::Client::ClientObserverInterface Tp::Client::ConnectionManagerInterface Tp::Client::ProtocolInterface Tp::Client::ProtocolInterfaceAddressingInterface Tp::Client::ProtocolInterfaceAvatarsInterface Tp::Client::ProtocolInterfacePresenceInterface Tp::Client::ConnectionInterface Tp::Client::ConnectionInterfaceAddressingInterface Tp::Client::ConnectionInterfaceAliasingInterface Tp::Client::ConnectionInterfaceAnonymityInterface Tp::Client::ConnectionInterfaceAvatarsInterface Tp::Client::ConnectionInterfaceBalanceInterface Tp::Client::ConnectionInterfaceCapabilitiesInterface Tp::Client::ConnectionInterfaceCellularInterface Tp::Client::ConnectionInterfaceClientTypesInterface Tp::Client::ConnectionInterfaceContactBlockingInterface Tp::Client::ConnectionInterfaceContactCapabilitiesInterface Tp::Client::ConnectionInterfaceContactGroupsInterface Tp::Client::ConnectionInterfaceContactInfoInterface Tp::Client::ConnectionInterfaceContactListInterface Tp::Client::ConnectionInterfaceContactsInterface Tp::Client::ConnectionInterfaceLocationInterface Tp::Client::ConnectionInterfaceMailNotificationInterface Tp::Client::ConnectionInterfacePowerSavingInterface Tp::Client::ConnectionInterfacePresenceInterface Tp::Client::ConnectionInterfaceRequestsInterface Tp::Client::ConnectionInterfaceServicePointInterface Tp::Client::ConnectionInterfaceSimplePresenceInterface Tp::Client::DebugInterface Tp::Client::MediaSessionHandlerInterface Tp::Client::MediaStreamHandlerInterface Tp::Client::PropertiesInterfaceInterface Tp::Client::AuthenticationTLSCertificateInterface Tp::Client::AccountManagerInterface a00081.html Tp::AbstractInterface QDBusPendingReply< QDBusObjectPath > CreateAccount a00081.html ab7351db4a9af1fbbd0835d9d1e4716fe (const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap &parameters, const QVariantMap &properties, int timeout=-1) void AccountRemoved a00081.html a8894f899b1e58cb1f2190f14240e6679 (const QDBusObjectPath &account) void AccountValidityChanged a00081.html a2b5e39cf54b6fea3a771f8797f5a2b6e (const QDBusObjectPath &account, bool valid) AccountManagerInterface a00081.html a2a226c9f5c42b4ddec22f7a74076314a (const QString &busName, const QString &objectPath, QObject *parent=0) AccountManagerInterface a00081.html abcdbf868d6095e422c70a91edd36d1f8 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) AccountManagerInterface a00081.html a33ca113a2d0c8759e66932c7193fcb6c (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00081.html ad826980978d4c837909afdb9783be5a8 () const Tp::PendingVariant * requestPropertyValidAccounts a00081.html a214c776c1a116bb801af49eed60fff28 () const Tp::PendingVariant * requestPropertyInvalidAccounts a00081.html a43f0bbf47369464170fb685eb3608b9e () const Tp::PendingVariant * requestPropertySupportedAccountProperties a00081.html a90b55336750c04c3ec12e3eea0c00d64 () const Tp::PendingVariantMap * requestAllProperties a00081.html a1f905388fc689a06434548a271dbd83c () const static QLatin1String staticInterfaceName a00081.html a208f53b265c050567fa448090e9e57cb () virtual void invalidate a00081.html a78899af823271616f9c503b3e60257ef (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::AccountInterface a00076.html Tp::AbstractInterface QDBusPendingReply Remove a00076.html aafff9e9364c41883b86e508eae1b6d1e (int timeout=-1) QDBusPendingReply< QStringList > UpdateParameters a00076.html a3ba5ad3cfa9a002bb2c66c74104ad532 (const QVariantMap &set, const QStringList &unset, int timeout=-1) QDBusPendingReply Reconnect a00076.html a67dde6a908c5e44c599c6816ab0cf8a8 (int timeout=-1) void Removed a00076.html ac54562f56877c69c4a3d27ca758cf8fd () void AccountPropertyChanged a00076.html ab1c040e758a3af7da14fc3f570f24a40 (const QVariantMap &properties) AccountInterface a00076.html ae31d2650076d6b4b4d89906d6c71a4bc (const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterface a00076.html a8436989210e6335be512001bc8654f2e (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterface a00076.html add59859f573579959b72f2a402ff5c6a (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00076.html ac092a1717f929f7db1aaffaccb564479 () const Tp::PendingVariant * requestPropertyDisplayName a00076.html a4d8023273f270922b59493f23ca2a221 () const Tp::PendingOperation * setPropertyDisplayName a00076.html a27adff0d773158bbe81340aa4dac8a27 (QString newValue) Tp::PendingVariant * requestPropertyIcon a00076.html a7b797f4cf85678499338df91d18d8ed6 () const Tp::PendingOperation * setPropertyIcon a00076.html ab18a3c398ae4e5fef39b784dd9a54649 (QString newValue) Tp::PendingVariant * requestPropertyValid a00076.html ac91ef67bd0fe78f6b55159315a29bb81 () const Tp::PendingVariant * requestPropertyEnabled a00076.html a1ea9fbd2a42882e47ebb70c8fb300845 () const Tp::PendingOperation * setPropertyEnabled a00076.html ac4b9ce97170a52ac579b2c0d59a5586f (bool newValue) Tp::PendingVariant * requestPropertyNickname a00076.html a90018ec9de59a0d8e3949995dfdc084c () const Tp::PendingOperation * setPropertyNickname a00076.html a1bff26528d1f9793e0d528f70ad9da2c (QString newValue) Tp::PendingVariant * requestPropertyService a00076.html ae9040da7b193ea9597fff03f9fa5422d () const Tp::PendingOperation * setPropertyService a00076.html a69c80a9cb0077671630c73c0cfff5c34 (QString newValue) Tp::PendingVariant * requestPropertyParameters a00076.html a3bba5536ec20e444de1048db449aa981 () const Tp::PendingVariant * requestPropertyAutomaticPresence a00076.html a05b1a012789347f54c8aa65badd91922 () const Tp::PendingOperation * setPropertyAutomaticPresence a00076.html a40662d9b543e60e45a874751e47d2a5e (Tp::SimplePresence newValue) Tp::PendingVariant * requestPropertyConnectAutomatically a00076.html a1b3df420b6dd256f3246bbe9a283f761 () const Tp::PendingOperation * setPropertyConnectAutomatically a00076.html aff2365221bd8ec0cbcac24aa104cef31 (bool newValue) Tp::PendingVariant * requestPropertyConnection a00076.html aac5de300678dcb2b3632a06a51954ec0 () const Tp::PendingVariant * requestPropertyConnectionStatus a00076.html aa96d364028e5a1bf9438552e6d6c6d6c () const Tp::PendingVariant * requestPropertyConnectionStatusReason a00076.html aac277a5402c90ffc4d7891fecea13ab4 () const Tp::PendingVariant * requestPropertyConnectionError a00076.html a7c23434905a5a83069a752620562ac62 () const Tp::PendingVariant * requestPropertyConnectionErrorDetails a00076.html a2887994607dffcdc98696a0ce2711fc0 () const Tp::PendingVariant * requestPropertyCurrentPresence a00076.html a9e6d071253895146d85eb8f315b7eec2 () const Tp::PendingVariant * requestPropertyRequestedPresence a00076.html a38e8810907a6bfcf368ecf2a4d28cba2 () const Tp::PendingOperation * setPropertyRequestedPresence a00076.html adf6efd445e74a91fce805da68acd8d6a (Tp::SimplePresence newValue) Tp::PendingVariant * requestPropertyChangingPresence a00076.html a75c501194be615df752ba7df0c487d25 () const Tp::PendingVariant * requestPropertyNormalizedName a00076.html a9aea7ff6df329438b2a4937686d20219 () const Tp::PendingVariant * requestPropertyHasBeenOnline a00076.html a4c3d8e27c21236ad39eb3bddac2c46f4 () const Tp::PendingVariant * requestPropertySupersedes a00076.html a05c9e7324308782933906bcecf722f26 () const Tp::PendingOperation * setPropertySupersedes a00076.html a20a73a086ee2b377748c64aab880fae2 (Tp::ObjectPathList newValue) Tp::PendingVariantMap * requestAllProperties a00076.html ab72bdbe9b6f425a75beddc06a1f4b992 () const static QLatin1String staticInterfaceName a00076.html a78754208dfe803627327780459d485fb () virtual void invalidate a00076.html a3d919b1b4c69abf8f8f221cddf6d9780 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::AccountInterfaceAddressingInterface a00077.html Tp::AbstractInterface QDBusPendingReply SetURISchemeAssociation a00077.html a2c6138cf93d90216a52cccc9ccb94d8d (const QString &URIScheme, bool association, int timeout=-1) AccountInterfaceAddressingInterface a00077.html a6acaaa342386de67bac65e6aa2a17304 (const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterfaceAddressingInterface a00077.html ac5ced47e8b710d60f4b33a7b7bbdb65a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterfaceAddressingInterface a00077.html a0d7a7568d98ed1630e89670ddeaaee79 (Tp::DBusProxy *proxy) AccountInterfaceAddressingInterface a00077.html a369c13927928b13341127730c0025494 (const Tp::Client::AccountInterface &mainInterface) AccountInterfaceAddressingInterface a00077.html a6b239568bcbfc82ec583440759f1bf3f (const Tp::Client::AccountInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyURISchemes a00077.html a74d54665f6b0cb230663b6769b297bdc () const Tp::PendingVariantMap * requestAllProperties a00077.html a26be6a33179973aa2b189ab7addc1bf5 () const static QLatin1String staticInterfaceName a00077.html adf5073ab7af6de28230c5df27ff2c499 () virtual void invalidate a00077.html a2ad9311bb6fe091b703d4011797339ae (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::AccountInterfaceAvatarInterface a00078.html Tp::AbstractInterface void AvatarChanged a00078.html aca120acd11e059ed209bf83cda0ffee0 () AccountInterfaceAvatarInterface a00078.html abfe3a3f95b1f9768626aedd7661ba9ce (const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterfaceAvatarInterface a00078.html afc67a95ffce1c60c1e7a4623bfbfae21 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterfaceAvatarInterface a00078.html aa30ffddf9e86da2d80af6b124721bad3 (Tp::DBusProxy *proxy) AccountInterfaceAvatarInterface a00078.html a6a544583ea2008d4290a77197c0c9469 (const Tp::Client::AccountInterface &mainInterface) AccountInterfaceAvatarInterface a00078.html a7f4e4bb8948fd57058f26cd48ac0669c (const Tp::Client::AccountInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAvatar a00078.html abc51722fa2cbb87f3733c04e8ddcac9a () const Tp::PendingOperation * setPropertyAvatar a00078.html aaa2ddc3157ed643455f110eb10e86527 (Tp::Avatar newValue) Tp::PendingVariantMap * requestAllProperties a00078.html a73ce04a917e64c096c943821e94e211e () const static QLatin1String staticInterfaceName a00078.html a6c1370999b5585c9fac4bd255b94c6e7 () virtual void invalidate a00078.html a999fa3585b22c543ef1d8f38c1b1600e (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::AccountInterfaceStorageInterface a00079.html Tp::AbstractInterface AccountInterfaceStorageInterface a00079.html a5dfbb73fe643fbb058872dd1dee900e1 (const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterfaceStorageInterface a00079.html a4d30dbaa6bc4bacb5d1a2aa7d2b45f9a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) AccountInterfaceStorageInterface a00079.html a30f5d73e9fb458c4e8ae846abaa31b33 (Tp::DBusProxy *proxy) AccountInterfaceStorageInterface a00079.html a7eae5c3ed27a8bfcf025398e9b106ef1 (const Tp::Client::AccountInterface &mainInterface) AccountInterfaceStorageInterface a00079.html a6081adff3f0b32a9a6feae5f910817b0 (const Tp::Client::AccountInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyStorageProvider a00079.html aa2beaa0f6a8167b5ace076d62078f69f () const Tp::PendingVariant * requestPropertyStorageIdentifier a00079.html a1191e0999e12184180cf24a923133fc4 () const Tp::PendingVariant * requestPropertyStorageSpecificInformation a00079.html a85ee3f8c7c81d46079bd640a1df861e0 () const Tp::PendingVariant * requestPropertyStorageRestrictions a00079.html ae1bab8a5affc87fb91f0b81b42da56ba () const Tp::PendingVariantMap * requestAllProperties a00079.html a9bcaefcbb2eb3702b678ba44039d6e65 () const static QLatin1String staticInterfaceName a00079.html afeaefb26ec1af54929e64654be0a0637 () virtual void invalidate a00079.html aafc996cec550ca94826e128cde22b860 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentMediaDescriptionInterface a00149.html Tp::AbstractInterface QDBusPendingReply Accept a00149.html a8fa89a7b8399da4e5d88a58dedca3818 (const QVariantMap &localMediaDescription, int timeout=-1) QDBusPendingReply Reject a00149.html a420e2022b816f5630c4e9005dc53df6a (const Tp::CallStateReason &reason, int timeout=-1) CallContentMediaDescriptionInterface a00149.html acba57c72b34bc20080f001b24e8ab33a (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterface a00149.html af1c74ebf57c69353f2b69db3641a5f18 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterface a00149.html aa9dd283c26a96eface116878b7d35c79 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00149.html a2e831e31443ebffa99e84aab329368e9 () const Tp::PendingVariant * requestPropertyFurtherNegotiationRequired a00149.html a631c37f55367cf9b422fa7eea9f1f45f () const Tp::PendingVariant * requestPropertyHasRemoteInformation a00149.html aa1af9b0be809d4c24e41d43c005510a4 () const Tp::PendingVariant * requestPropertyCodecs a00149.html a44ff16492fa35cdf8219fafd3bd9c9a7 () const Tp::PendingVariant * requestPropertyRemoteContact a00149.html ad6b848303ad194e22eb22f9698301f92 () const Tp::PendingVariant * requestPropertySSRCs a00149.html a728603b2d7432bc920796d9a8fdad91e () const Tp::PendingVariantMap * requestAllProperties a00149.html ab9cb5eaa391e951496b3a81cac56b900 () const static QLatin1String staticInterfaceName a00149.html a1bf9168e84ffd9dad114017673bcf49d () virtual void invalidate a00149.html aa247e1fa320166fbd4e8aef0ae47ed21 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface a00150.html Tp::AbstractInterface CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface a00150.html afc166c7f7a47decffc87670f024785d1 (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface a00150.html a5164d90724bce66f0034a0f08985d1fa (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface a00150.html a09111bdaf8186c4959181242e03ff878 (Tp::DBusProxy *proxy) CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface a00150.html a31b95b0f9c4deeacb954bf06b579e4ae (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface) CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface a00150.html a77439759150989d1385d65340ecef76b (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyLossRLEMaxSize a00150.html a8f1782ccf29fd97bbd714402dc6967a3 () const Tp::PendingVariant * requestPropertyDuplicateRLEMaxSize a00150.html aef482fc71777488f975b88f7ae2b7bbd () const Tp::PendingVariant * requestPropertyPacketReceiptTimesMaxSize a00150.html aeb654a6820ea11cb1bcd785166c2fb2a () const Tp::PendingVariant * requestPropertyDLRRMaxSize a00150.html a542258fd8a97405fc6767208d6365283 () const Tp::PendingVariant * requestPropertyRTTMode a00150.html a09aa68425339981324d94f54e977682d () const Tp::PendingVariant * requestPropertyStatisticsFlags a00150.html a9b9425e6a5fa28a610a8332e27087064 () const Tp::PendingVariant * requestPropertyEnableMetrics a00150.html aaf023f447dd44752bd49aee59d55b8fa () const Tp::PendingVariantMap * requestAllProperties a00150.html a9d3a0ad886e2fe9d9e3dcfc1f0defdb5 () const static QLatin1String staticInterfaceName a00150.html aa729414fbc3257268f409c0859637f49 () virtual void invalidate a00150.html ab774993a1de24da043af383ca157e701 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentMediaDescriptionInterfaceRTCPFeedbackInterface a00151.html Tp::AbstractInterface CallContentMediaDescriptionInterfaceRTCPFeedbackInterface a00151.html a5199793fcec4f08010e70fb09d6b8a33 (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterfaceRTCPFeedbackInterface a00151.html a90b7a424e27bbcf294dc6f6db007e48d (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterfaceRTCPFeedbackInterface a00151.html ac8f5fe24ef75639a598e15db39c557f6 (Tp::DBusProxy *proxy) CallContentMediaDescriptionInterfaceRTCPFeedbackInterface a00151.html ac88dd77a4b612da49711e71abd02ac07 (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface) CallContentMediaDescriptionInterfaceRTCPFeedbackInterface a00151.html af911bb5d0f6a0e4c59db38c171327414 (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyFeedbackMessages a00151.html a32a89b8e51be9ef53cd6aad784cf943e () const Tp::PendingVariant * requestPropertyDoesAVPF a00151.html a9507cabe07989f55d51d63ced705f8c4 () const Tp::PendingVariantMap * requestAllProperties a00151.html a17995610a60669c1a390b6817dddd434 () const static QLatin1String staticInterfaceName a00151.html a275756d7052c8fc60a9c64b0743024eb () virtual void invalidate a00151.html a57a898cc31f68f66223c94f3a068db79 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface a00152.html Tp::AbstractInterface CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface a00152.html a9490ee7cdb3900a08740fd75e1ed8dbf (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface a00152.html a46d3c6e15c8220d5349e16dc1d565663 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface a00152.html ad8c17c2e85dc73a1f1ef3030f74458b9 (Tp::DBusProxy *proxy) CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface a00152.html a6edca2ea019e9863b3f1550c9416550f (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface) CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface a00152.html aa7ed063d44dc8d63f25bb34723c02f10 (const Tp::Client::CallContentMediaDescriptionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyHeaderExtensions a00152.html a9e57f79e92b53db006c887bea572df0e () const Tp::PendingVariantMap * requestAllProperties a00152.html a6b28a5bcd7c70d94b816859c33580901 () const static QLatin1String staticInterfaceName a00152.html a6a1132413624405ecb25e1c055ca3e28 () virtual void invalidate a00152.html a2c39533940a38a9a9a4f484b07e7bd23 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentInterface a00143.html Tp::AbstractInterface QDBusPendingReply Remove a00143.html aea25e4c9059b10d35f7f4b83bbb61650 (int timeout=-1) void StreamsAdded a00143.html a0c806b6cb9503906f5b0d72bca48edc3 (const Tp::ObjectPathList &streams) void StreamsRemoved a00143.html ac706b76f25a6f705b3913013dd4b91dd (const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason) CallContentInterface a00143.html a4cfea5c81f378d5da8faeb32d5db3cb2 (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterface a00143.html af98f65ea49e76a0ae7cfd2c6a83739a0 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterface a00143.html a54e5764eb6b61a5265000df741b2bd6e (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00143.html afa055c4b51d35c18c4fc0079e897237b () const Tp::PendingVariant * requestPropertyName a00143.html aee9b092cb04ef602097d21aadd326d11 () const Tp::PendingVariant * requestPropertyType a00143.html a1d00d67b7bc9c57a22677cf816fd032d () const Tp::PendingVariant * requestPropertyDisposition a00143.html a53328c2b0aa861de4355f6ddd8d3db2b () const Tp::PendingVariant * requestPropertyStreams a00143.html a08906a50dff80100f7431c5c34f32cbc () const Tp::PendingVariantMap * requestAllProperties a00143.html ae7a08da2aac1d503535502386f51af48 () const static QLatin1String staticInterfaceName a00143.html aea97fd569a945cea495997c46f33126e () virtual void invalidate a00143.html a43c1edd75138777e09f992e009e88505 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentInterfaceAudioControlInterface a00144.html Tp::AbstractInterface QDBusPendingReply ReportInputVolume a00144.html a42a5862da7b4e7a91c963d86052e36f3 (int volume, int timeout=-1) QDBusPendingReply ReportOutputVolume a00144.html a34d6d07613760cd6ad34daa5296367a5 (int volume, int timeout=-1) CallContentInterfaceAudioControlInterface a00144.html ae9ce696da71bd8e5c63f0d4c55e7b816 (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceAudioControlInterface a00144.html a34d37b841da255f6d95921bacc6c5a4b (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceAudioControlInterface a00144.html aedefe6d7ab2f6550b526d5a3ffdfc090 (Tp::DBusProxy *proxy) CallContentInterfaceAudioControlInterface a00144.html ab1a8515094bbfc1b353084cd911dbbf0 (const Tp::Client::CallContentInterface &mainInterface) CallContentInterfaceAudioControlInterface a00144.html af3e78120905c84433c28a3df207571e8 (const Tp::Client::CallContentInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyRequestedInputVolume a00144.html a9c66ec27ab31c2ce4ad417d98967ec36 () const Tp::PendingVariant * requestPropertyRequestedOutputVolume a00144.html aef12c0b9fce51fb5f999108313e57515 () const Tp::PendingVariantMap * requestAllProperties a00144.html a3cfc04962e1123ff082ff60b8b6bd157 () const static QLatin1String staticInterfaceName a00144.html a83291f33b972c1f26b15f17c4a223eb7 () virtual void invalidate a00144.html af9e73b4b38f6b0f0d250ccd32840b3ca (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentInterfaceDTMFInterface a00146.html Tp::AbstractInterface QDBusPendingReply StartTone a00146.html a6b273102d1f0cf0cbf6d5ea010300774 (uchar event, int timeout=-1) QDBusPendingReply StopTone a00146.html a1179c9a37ea73de37b66d6dc8b0b315c (int timeout=-1) QDBusPendingReply MultipleTones a00146.html a7e0321c82dab2219c23812c568b8f494 (const QString &tones, int timeout=-1) void TonesDeferred a00146.html abc342e6c869b1beab64eda1f05860c71 (const QString &tones) void SendingTones a00146.html a26ddb38bcf288d1b9888b5652e94a79b (const QString &tones) void StoppedTones a00146.html ac03a2249847509cd96b35293e2c2bb5e (bool cancelled) CallContentInterfaceDTMFInterface a00146.html abe8b84384a84850905bde5a0ebc86207 (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceDTMFInterface a00146.html a5e34f6464643da542026543327881abb (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceDTMFInterface a00146.html a6dce3fa7ec4d71193389e397e3638adf (Tp::DBusProxy *proxy) CallContentInterfaceDTMFInterface a00146.html a6f1db9ca830b33fca2e5f28516ff3ae3 (const Tp::Client::CallContentInterface &mainInterface) CallContentInterfaceDTMFInterface a00146.html ac6fa90c9a97ea50730d9cee2a557e43e (const Tp::Client::CallContentInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyCurrentlySendingTones a00146.html a8b8a251b64f331cf3ceacbce1863b5b6 () const Tp::PendingVariant * requestPropertyDeferredTones a00146.html a1ee5031039b1e759e8fc4abe3a7cc0d7 () const Tp::PendingVariantMap * requestAllProperties a00146.html a9f98ea3f01f9e611462bbd5703008c54 () const static QLatin1String staticInterfaceName a00146.html afb19c4a3f95870c0dfecfd3e6eb4fe80 () virtual void invalidate a00146.html aea89bc7c312ca03667fd83071dcd0ef6 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentInterfaceMediaInterface a00147.html Tp::AbstractInterface QDBusPendingReply UpdateLocalMediaDescription a00147.html ab54fd3f3fd9ec3095e23bc44601719eb (const QVariantMap &mediaDescription, int timeout=-1) QDBusPendingReply AcknowledgeDTMFChange a00147.html ad2130224845669ca6b61be830ee271ad (uchar event, uint state, int timeout=-1) QDBusPendingReply Fail a00147.html a5933265cdfffa8e2f0d995336af39aff (const Tp::CallStateReason &reason, int timeout=-1) void NewMediaDescriptionOffer a00147.html ac17ef58b267282d1f84ddf2e710bab29 (const QDBusObjectPath &mediaDescription, const QVariantMap &properties) void MediaDescriptionOfferDone a00147.html a4cb2cfc46cec8d48cb18fb94c5656f2e () void LocalMediaDescriptionChanged a00147.html ab568f77157a2b4b71fac9fc2111304d5 (const QVariantMap &updatedMediaDescription) void RemoteMediaDescriptionsChanged a00147.html a15370ecfd3fe2d7d70b9f1bfc5758eb9 (const Tp::ContactMediaDescriptionPropertiesMap &updatedMediaDescriptions) void MediaDescriptionsRemoved a00147.html ab3ed747236841cb241af3927d12b4ef8 (const Tp::UIntList &removedMediaDescriptions) void DTMFChangeRequested a00147.html ac8ba43d557db1edf1c6673ffa7a8f334 (uchar event, uint state) CallContentInterfaceMediaInterface a00147.html ac655eac56103911fd38c5e523c4d0f56 (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceMediaInterface a00147.html a446e272e3a24ed0fa5600103ea1aeb2f (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceMediaInterface a00147.html a0e74ccdab4c2ce06255a9b16ec49b8ef (Tp::DBusProxy *proxy) CallContentInterfaceMediaInterface a00147.html aa11816cc505c2b5d41d210cfdf89d218 (const Tp::Client::CallContentInterface &mainInterface) CallContentInterfaceMediaInterface a00147.html a2be7b34f87a38ce460b85f52abf202ca (const Tp::Client::CallContentInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyRemoteMediaDescriptions a00147.html a1172b1cef3d99cbf5abfb3dd77df46d6 () const Tp::PendingVariant * requestPropertyLocalMediaDescriptions a00147.html a480da9608fa55f554247238f7283211e () const Tp::PendingVariant * requestPropertyMediaDescriptionOffer a00147.html aa1bd45ae706af714b1bd12a1cdc01975 () const Tp::PendingVariant * requestPropertyPacketization a00147.html a3c5ba1a6230269eea80dc74fb5c08202 () const Tp::PendingVariant * requestPropertyCurrentDTMFEvent a00147.html aa29b4bf0d95ec9468480b33d48336534 () const Tp::PendingVariant * requestPropertyCurrentDTMFState a00147.html a45fe1c1148ab89991b65f2ee82ceea99 () const Tp::PendingVariantMap * requestAllProperties a00147.html ac7a2e5061321f7e9b8dcc19aa7304c9b () const static QLatin1String staticInterfaceName a00147.html a3b0dbc29402ac07449ebbbb4c699e90b () virtual void invalidate a00147.html a6dbf1076e51b359fbd932fee9d6a8abe (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallContentInterfaceVideoControlInterface a00148.html Tp::AbstractInterface void KeyFrameRequested a00148.html ade948dadb77c497b3c906649008ed324 () void VideoResolutionChanged a00148.html a9bcd7131c8425be2002cbf1997771364 (const Tp::VideoResolution &newResolution) void BitrateChanged a00148.html aa8bde7f71668d3499f7474baebc801fd (uint newBitrate) void FramerateChanged a00148.html ae42029f88c272b1d526449fe83088ba4 (uint newFramerate) void MTUChanged a00148.html a5ca4a30d9a43a0f2e0fa9a65e3d2760e (uint newMTU) CallContentInterfaceVideoControlInterface a00148.html af68d669d4d7dcd4c6a184a0d3d83670a (const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceVideoControlInterface a00148.html a9bef2ef5771c6e0f90f5758d7ebc80d5 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallContentInterfaceVideoControlInterface a00148.html a9504d27158b7dcee2efebff53c1fa5ba (Tp::DBusProxy *proxy) CallContentInterfaceVideoControlInterface a00148.html a348bfda5132fa95e7703cc824045c4ab (const Tp::Client::CallContentInterface &mainInterface) CallContentInterfaceVideoControlInterface a00148.html a330057918cc99e1348878b0d5f44d87d (const Tp::Client::CallContentInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyVideoResolution a00148.html a80813149a60a214fdbfe3d88df8e82fa () const Tp::PendingVariant * requestPropertyBitrate a00148.html a64e6f2320175e4cd316147c4bdf82ec3 () const Tp::PendingVariant * requestPropertyFramerate a00148.html a8fbc7e254260b80c0544d2bd7a853774 () const Tp::PendingVariant * requestPropertyMTU a00148.html a7fd6385196adf3812506947c8d51c6df () const Tp::PendingVariant * requestPropertyManualKeyFrames a00148.html abadcc3f0ee2343822264108a8a30bbe8 () const Tp::PendingVariantMap * requestAllProperties a00148.html a46120932b5eb17d362b076c2db175394 () const static QLatin1String staticInterfaceName a00148.html ab385b542eb8fca30a8c03da61d1d941e () virtual void invalidate a00148.html a3882f0ca56cfda96198b0c9fb276ed2a (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallStreamEndpointInterface a00157.html Tp::AbstractInterface QDBusPendingReply SetSelectedCandidatePair a00157.html aaf40c402dd700c6bbbd183ed5a3513d1 (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1) QDBusPendingReply SetEndpointState a00157.html ae66d90633c55e3c9f39d4f9188d1ca61 (uint component, uint state, int timeout=-1) QDBusPendingReply AcceptSelectedCandidatePair a00157.html acce5c5bc107acf0fadc497814984c373 (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1) QDBusPendingReply RejectSelectedCandidatePair a00157.html ab1ba28f4e26a3eb0d57df8be27255c1f (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate, int timeout=-1) QDBusPendingReply SetControlling a00157.html a8e403b903a8e86ae7c938e78d562c400 (bool controlling, int timeout=-1) void RemoteCredentialsSet a00157.html a73aab94dd184b75a3b5e8637646fdd24 (const QString &username, const QString &password) void RemoteCandidatesAdded a00157.html a1bdc2dc20844f8319fe003bb839c1cae (const Tp::CandidateList &candidates) void CandidatePairSelected a00157.html a21f5b03c6947d88e242dc4052844894e (const Tp::Candidate &localCandidate, const Tp::Candidate &remoteCandidate) void EndpointStateChanged a00157.html a5ec5d41031736d66f7962021506b29d6 (uint component, uint state) void ControllingChanged a00157.html af3171ebc6c2d341c445108d8a835be75 (bool controlling) CallStreamEndpointInterface a00157.html a9d59d25ae613d89517b3d11a63d6a045 (const QString &busName, const QString &objectPath, QObject *parent=0) CallStreamEndpointInterface a00157.html ae43b9c95c6377eea39134d1333c4097c (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallStreamEndpointInterface a00157.html a205075a3c63e41757b066ba51679e53e (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyRemoteCredentials a00157.html a330e8cd08e8aa8e496f52cc962ac68f0 () const Tp::PendingVariant * requestPropertyRemoteCandidates a00157.html ac1f4c760349900182d6d91fe86f5e0c9 () const Tp::PendingVariant * requestPropertySelectedCandidatePairs a00157.html a01176478223bc0107b27a88bc0c4d915 () const Tp::PendingVariant * requestPropertyEndpointState a00157.html a97631a9b0e3b252a8b3cc7da94c02c65 () const Tp::PendingVariant * requestPropertyTransport a00157.html af22d884b40eac9b44761d7a4602f241d () const Tp::PendingVariant * requestPropertyControlling a00157.html a606618d82c637800e9509a8078a876de () const Tp::PendingVariant * requestPropertyIsICELite a00157.html a7dce3327b86fc594f8d20516e4788c79 () const Tp::PendingVariantMap * requestAllProperties a00157.html aaba4736aef87d3751cac425c0af25a09 () const static QLatin1String staticInterfaceName a00157.html afcc6293a5f1985eada9b45edef210641 () virtual void invalidate a00157.html a93bd7c5e3e237e0f3c37fb2e4021cf35 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallStreamInterface a00158.html Tp::AbstractInterface QDBusPendingReply SetSending a00158.html a6e6c0077d52bb72755cbb27c7219620a (bool send, int timeout=-1) QDBusPendingReply RequestReceiving a00158.html a23cc0cb2a4326dc123b01e9108165f5c (uint contact, bool receive, int timeout=-1) void RemoteMembersChanged a00158.html ae34271eb8be0b9a568c8fa7b4e1db541 (const Tp::ContactSendingStateMap &updates, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason) void LocalSendingStateChanged a00158.html a5b3aac23c0ee7336cc7f5af5be633eea (uint state, const Tp::CallStateReason &reason) CallStreamInterface a00158.html a032956227aacbed3c1ee5bbf6d0723aa (const QString &busName, const QString &objectPath, QObject *parent=0) CallStreamInterface a00158.html a7fe232e55b31ff959bab36c84e31b34d (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallStreamInterface a00158.html a7ddff177ef400fac7e745b50fe3ef04c (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00158.html aba99875d5c450e0d060d80301e710a85 () const Tp::PendingVariant * requestPropertyRemoteMembers a00158.html a5a64e893204b0dd7406f7ac077785a65 () const Tp::PendingVariant * requestPropertyRemoteMemberIdentifiers a00158.html a46cd90977a8c680d1f34c852308a09cd () const Tp::PendingVariant * requestPropertyLocalSendingState a00158.html a636a90f26988c095262820a24dbdebd0 () const Tp::PendingVariant * requestPropertyCanRequestReceiving a00158.html a557906e1fa13b8b1fd41bf0e7328d077 () const Tp::PendingVariantMap * requestAllProperties a00158.html a35d03b0c34310acb64002fdd88f4eff6 () const static QLatin1String staticInterfaceName a00158.html a3fa6794ce3ee6680e35360fc71e355f3 () virtual void invalidate a00158.html afbd224de2065eb9266a5b3fa1d7caf18 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::CallStreamInterfaceMediaInterface a00159.html Tp::AbstractInterface QDBusPendingReply CompleteSendingStateChange a00159.html a118a8123429d2030a3f5a2aca42c288a (uint state, int timeout=-1) QDBusPendingReply ReportSendingFailure a00159.html af2df672d8284d2b58037d2d79f032cc1 (uint reason, const QString &error, const QString &message, int timeout=-1) QDBusPendingReply CompleteReceivingStateChange a00159.html ab6dc6fe16aec0821500683a47e6b6f82 (uint state, int timeout=-1) QDBusPendingReply ReportReceivingFailure a00159.html a7b1c306b7bbc14c20f1c5cf97816ba28 (uint reason, const QString &error, const QString &message, int timeout=-1) QDBusPendingReply SetCredentials a00159.html a8631da1aa08586bd7c8011eba4541911 (const QString &username, const QString &password, int timeout=-1) QDBusPendingReply AddCandidates a00159.html af00fb88e3f49989fb815dbb4b9b93c33 (const Tp::CandidateList &candidates, int timeout=-1) QDBusPendingReply FinishInitialCandidates a00159.html a183422f5a1bc3117f9428ee37d1aff36 (int timeout=-1) QDBusPendingReply Fail a00159.html ac5affdf39c8816ee2507085aa85ddaa8 (const Tp::CallStateReason &reason, int timeout=-1) void SendingStateChanged a00159.html a78ebcd8402a2a51fa0e3372cc7760eba (uint state) void ReceivingStateChanged a00159.html aad1a10397b108ccebbe3b8153281e3b3 (uint state) void LocalCandidatesAdded a00159.html a9205e73c9b0dd0e8561a832d19831aa0 (const Tp::CandidateList &candidates) void LocalCredentialsChanged a00159.html ae64146022a5e779cd34a32dcb7bb4579 (const QString &username, const QString &password) void RelayInfoChanged a00159.html aee40a4f15d6d4fc0677d34aee7d009a9 (const Tp::StringVariantMapList &relayInfo) void STUNServersChanged a00159.html a6ce3ef9c5cf2e038613f0a48e14619f1 (const Tp::SocketAddressIPList &servers) void ServerInfoRetrieved a00159.html a4cbc7d28e7bda299a898350d544addf9 () void EndpointsChanged a00159.html a1efcc726fbd7c311f6f768830cf8330d (const Tp::ObjectPathList &endpointsAdded, const Tp::ObjectPathList &endpointsRemoved) void ICERestartRequested a00159.html afb771e89e6a86b56d01e25d5082743eb () CallStreamInterfaceMediaInterface a00159.html a83316c9dea3bd73a79355a3e57a066f4 (const QString &busName, const QString &objectPath, QObject *parent=0) CallStreamInterfaceMediaInterface a00159.html a294ddd54eb8f2d1a858a098741bbde36 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) CallStreamInterfaceMediaInterface a00159.html a463cace5adff97f3e166b7c12bec6481 (Tp::DBusProxy *proxy) CallStreamInterfaceMediaInterface a00159.html ab72c7855e43f7f7a6699298535c05e9b (const Tp::Client::CallStreamInterface &mainInterface) CallStreamInterfaceMediaInterface a00159.html af231b7f203c8aaa9e949fffe321dcab1 (const Tp::Client::CallStreamInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySendingState a00159.html ada616279e530be35ab8054760fd37d10 () const Tp::PendingVariant * requestPropertyReceivingState a00159.html adedab8b4961b2186dbe067d1e84dca9c () const Tp::PendingVariant * requestPropertyTransport a00159.html abf369df6ae4cde198f143b347a2ba7d3 () const Tp::PendingVariant * requestPropertyLocalCandidates a00159.html a683ea7395242f6d9c28bec87e8b2364a () const Tp::PendingVariant * requestPropertyLocalCredentials a00159.html ac3b20b21ed683a89e3aa7af67513faae () const Tp::PendingVariant * requestPropertySTUNServers a00159.html a6c9e0e2d5972d53a516930de157323a8 () const Tp::PendingVariant * requestPropertyRelayInfo a00159.html a9a48b971ff50df29817c22a42087eb7e () const Tp::PendingVariant * requestPropertyHasServerInfo a00159.html a9d567b34885bdff4522eac082e61a26c () const Tp::PendingVariant * requestPropertyEndpoints a00159.html a9f6c53b46f628024c2d837892c8f5926 () const Tp::PendingVariant * requestPropertyICERestartPending a00159.html af893fbad5bfa060ea40be774bdb07d74 () const Tp::PendingVariantMap * requestAllProperties a00159.html a4334388285b2e2264bba5c8e5c72ca4d () const static QLatin1String staticInterfaceName a00159.html a1167ba883427c0194710e1387dfb47f0 () virtual void invalidate a00159.html a3ee08b4305dd6b30f5dafe10f89773a2 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelDispatchOperationInterface a00181.html Tp::AbstractInterface QDBusPendingReply HandleWith a00181.html a4aa587c9c05a2ad0a74277c5ee7d80a2 (const QString &handler, int timeout=-1) QDBusPendingReply Claim a00181.html a1a519eae4cfd367598370d95107f18d4 (int timeout=-1) QDBusPendingReply HandleWithTime a00181.html aca498e4abf991ef28587ecff7e36856a (const QString &handler, qlonglong userActionTime, int timeout=-1) void ChannelLost a00181.html a5266292ad400bb04990af3d6e50be91c (const QDBusObjectPath &channel, const QString &error, const QString &message) void Finished a00181.html af81dae9437a97ef253ffe3fbf86e3e95 () ChannelDispatchOperationInterface a00181.html aa51292af57dad62f21923167014e12ec (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelDispatchOperationInterface a00181.html aaf54a76dcd7dccefb88c03c2a13218ee (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelDispatchOperationInterface a00181.html aab1255e2cca44fc798664457eb19d384 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00181.html ae4eefa59f2ca34c881644a11eb328082 () const Tp::PendingVariant * requestPropertyConnection a00181.html aed61fa269d677c37e1bc647af96eedda () const Tp::PendingVariant * requestPropertyAccount a00181.html a302fe2c46a53795f6ffd5d3b2bda1b09 () const Tp::PendingVariant * requestPropertyChannels a00181.html a0200e63eda1630db29f21c349c43b23b () const Tp::PendingVariant * requestPropertyPossibleHandlers a00181.html aee19654059b2fff5a8d3e7a812c4c40a () const Tp::PendingVariantMap * requestAllProperties a00181.html a41e23e3901a4ed9618b70d245862b70d () const static QLatin1String staticInterfaceName a00181.html a065343de4bedcef0842295f8f4d96d4a () virtual void invalidate a00181.html aaddc4a77248179496b073d4edc9707fb (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelDispatcherInterface a00178.html Tp::AbstractInterface QDBusPendingReply< QDBusObjectPath > CreateChannel a00178.html a0c58ea06c28d1a449a8b751960349398 (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1) QDBusPendingReply< QDBusObjectPath > EnsureChannel a00178.html ac5e28d300f8ac69d1894f412aecf4bdd (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1) QDBusPendingReply< QDBusObjectPath > CreateChannelWithHints a00178.html a4d0b67d2118465e2ed155be98061df5b (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1) QDBusPendingReply< QDBusObjectPath > EnsureChannelWithHints a00178.html a53443624f4c53a085d4a3e51b3fc34cb (const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints, int timeout=-1) QDBusPendingReply< Tp::ObjectPathList, Tp::NotDelegatedMap > DelegateChannels a00178.html ad508625879d04f2cc4e843b34740bee7 (const Tp::ObjectPathList &channels, qlonglong userActionTime, const QString &preferredHandler, int timeout=-1) QDBusPendingReply PresentChannel a00178.html a9cd644f1a1354c918f8b5a8f9398c814 (const QDBusObjectPath &channel, qlonglong userActionTime, int timeout=-1) ChannelDispatcherInterface a00178.html a52cb4cd3e72ff3235a3cd419ea0e5e5c (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelDispatcherInterface a00178.html a4f279fd34492b9a453e66c915d16d5e5 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelDispatcherInterface a00178.html abdf1ab18772e586bdc36b1efec7e3a90 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00178.html ac05675306c3d51fd28827b25d06781c7 () const Tp::PendingVariant * requestPropertySupportsRequestHints a00178.html a61722ad5fedf791e665ff8b3d8435df6 () const Tp::PendingVariantMap * requestAllProperties a00178.html ae04105ed308e74353025dc8228335417 () const static QLatin1String staticInterfaceName a00178.html a989709eb4978b06fabd28cf18b629765 () virtual void invalidate a00178.html a167eaae3cf3228558a5efe817c46bfe8 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelDispatcherInterfaceMessages1Interface a00179.html Tp::AbstractInterface QDBusPendingReply< QString > SendMessage a00179.html ac373a051a15ea7e70dfb071d4cc062d1 (const QDBusObjectPath &account, const QString &targetID, const Tp::MessagePartList &message, uint flags, int timeout=-1) ChannelDispatcherInterfaceMessages1Interface a00179.html ac20c66f1a360d3ef665758484c558c34 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelDispatcherInterfaceMessages1Interface a00179.html a5e6caff74f566cc78f9b2aa6c89add94 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelDispatcherInterfaceMessages1Interface a00179.html a1eee3f0fbf67bac49b19421deb0255a0 (Tp::DBusProxy *proxy) ChannelDispatcherInterfaceMessages1Interface a00179.html ae510725cdec05bcfa581ce55ffc6c119 (const Tp::Client::ChannelDispatcherInterface &mainInterface) ChannelDispatcherInterfaceMessages1Interface a00179.html a46df356849ff4250606d8df0488f4ddb (const Tp::Client::ChannelDispatcherInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00179.html ac19dc06f8a83deb4433f70236ebe3f9c () const static QLatin1String staticInterfaceName a00179.html a09e4472511519380ecd61892e6d6c452 () virtual void invalidate a00179.html a61431029a06576a2a52cb6d26ae713ea (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelRequestInterface a00231.html Tp::AbstractInterface QDBusPendingReply Proceed a00231.html a7f57dc69dcd97a065a26f3de3efdbe97 (int timeout=-1) QDBusPendingReply Cancel a00231.html a082febb1dc3bb1a7b398c543d26d0f60 (int timeout=-1) void Failed a00231.html a3d915422d69667aa0f92d466786a14c0 (const QString &error, const QString &message) void Succeeded a00231.html a2320f90731c06ef81c4bf0c8234e11ee () void SucceededWithChannel a00231.html ad17d26e95afa047fd4df0b45a6d9d260 (const QDBusObjectPath &connection, const QVariantMap &connectionProperties, const QDBusObjectPath &channel, const QVariantMap &channelProperties) ChannelRequestInterface a00231.html aad18f5b3d14c103fb6fca937b18370ab (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelRequestInterface a00231.html ae092bdbb3ee9e152288730cb3eec9ca9 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelRequestInterface a00231.html a7112df9b9c9c7e7304b302ad5414c878 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyAccount a00231.html a2f1410c463a8c16aa5c71c06ab711582 () const Tp::PendingVariant * requestPropertyUserActionTime a00231.html ab8f4cb29696637da10fd5a1ebf5a9b24 () const Tp::PendingVariant * requestPropertyPreferredHandler a00231.html ad43b8985fcd8c79d8e5b0c62c3b7fd14 () const Tp::PendingVariant * requestPropertyRequests a00231.html a124319247c90b7021b5fc7e0803aede8 () const Tp::PendingVariant * requestPropertyInterfaces a00231.html a01428d1e129e24e8086a160a7d628227 () const Tp::PendingVariant * requestPropertyHints a00231.html afbab1ed4d79c5e1a965b9941cbc23ce0 () const Tp::PendingVariantMap * requestAllProperties a00231.html a5f560f0a7b8bc17cbeb78dab333811ad () const static QLatin1String staticInterfaceName a00231.html ac12cb892f982916ba1c81dcd4b445bf6 () virtual void invalidate a00231.html a7a85786c6c839eb5f26aaf49094b9c8a (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterface a00184.html Tp::AbstractInterface QDBusPendingReply Close a00184.html a822439bf7adb2ce890cf8066ea01a1ff (int timeout=-1) QDBusPendingReply< QString > GetChannelType a00184.html aa14a76049f40ba119845f2c52f84bdeb (int timeout=-1) QDBusPendingReply< uint, uint > GetHandle a00184.html a135d5199c69e92039f81bcbad48d6e27 (int timeout=-1) QDBusPendingReply< QStringList > GetInterfaces a00184.html a65855cac589751eee7717e266caa7c6c (int timeout=-1) void Closed a00184.html a42005b6ea5c4fb962a2a8789a35741da () ChannelInterface a00184.html a892880ace6b153f8c4cb6bd19066c074 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterface a00184.html a9044ef5ba0d6848c83511ab1d53d9c56 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterface a00184.html a248dd4161960529ca31f7cca130cbe36 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyChannelType a00184.html a48df5dad17fa70262c8d59b2c75c83c2 () const Tp::PendingVariant * requestPropertyInterfaces a00184.html ac0ef159d0249fe8fe9faf1b6a5dbba99 () const Tp::PendingVariant * requestPropertyTargetHandle a00184.html aba93f0a84612cc6c2adf866eaff3e763 () const Tp::PendingVariant * requestPropertyTargetID a00184.html aa04a1d3032316883c6ce5085f20caf68 () const Tp::PendingVariant * requestPropertyTargetHandleType a00184.html a389f3d423b4da14c328fd0ddbe20b8ae () const Tp::PendingVariant * requestPropertyRequested a00184.html a32516a093708b2b8accc930b8252dcfa () const Tp::PendingVariant * requestPropertyInitiatorHandle a00184.html a88f912db7a4d0680d3d78d928369cbe7 () const Tp::PendingVariant * requestPropertyInitiatorID a00184.html af7de86e324a198e115d6957f3da83fa1 () const Tp::PendingVariantMap * requestAllProperties a00184.html afedf34d3aac0c21bd9f6c49cc2709472 () const static QLatin1String staticInterfaceName a00184.html ae7005466f857a3b9117b4c191e3ef65e () virtual void invalidate a00184.html a0a29ac5a212f2e0b0e9db5544d245ee1 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceAnonymityInterface a00186.html Tp::AbstractInterface ChannelInterfaceAnonymityInterface a00186.html a0e3573c0c38f549ffdc2b39590bde5f5 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceAnonymityInterface a00186.html aa8b6922ebe291e31df1a4af795a99cb2 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceAnonymityInterface a00186.html a77ba03f8bcf3aacf0ada00a62efef3d2 (Tp::DBusProxy *proxy) ChannelInterfaceAnonymityInterface a00186.html a7cce5eb941804de9939c18c24b859a96 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceAnonymityInterface a00186.html ada1986c258ce523f87688d326d9f85d1 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAnonymityModes a00186.html a2feaa4231174c7a24b74171d6af38401 () const Tp::PendingVariant * requestPropertyAnonymityMandatory a00186.html a82f26e8942e062a498e71abd40fa2d86 () const Tp::PendingVariant * requestPropertyAnonymousID a00186.html a5bceb2cecc60f445625e9dc74417e41c () const Tp::PendingVariantMap * requestAllProperties a00186.html ad0f217a646a9d315d761fcfd9fb7d6fe () const static QLatin1String staticInterfaceName a00186.html a207155cf56f072bfe081b9ccf37d0ed9 () virtual void invalidate a00186.html aea5daa38f1568b7c2b751d304bf5857d (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceCallStateInterface a00188.html Tp::AbstractInterface QDBusPendingReply< Tp::ChannelCallStateMap > GetCallStates a00188.html a94f4b34ef7ca5b2ca26008f4da1e9ebb (int timeout=-1) void CallStateChanged a00188.html a2e3e0c6d2ab69cde21e52b9a4f3a0ba2 (uint contact, uint state) ChannelInterfaceCallStateInterface a00188.html ad54ff432ec4b2e9d8e909820ba35443c (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceCallStateInterface a00188.html a553c793ed9080be818fac1e73c571298 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceCallStateInterface a00188.html ae1cf5626aca898d1dcc31deab4718aa8 (Tp::DBusProxy *proxy) ChannelInterfaceCallStateInterface a00188.html a12dcaba49f90f1dddfd23fddba7d7d5b (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceCallStateInterface a00188.html acbe2950d7ead11c461d3adac5a37269e (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00188.html a78bbf0f1f18fdd147df88bf7154531f8 () const static QLatin1String staticInterfaceName a00188.html a409583f50c3c171ae50af9f5bf4fda9a () virtual void invalidate a00188.html a89570f7a9048005211d46aa5219ea94b (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface a00190.html Tp::AbstractInterface QDBusPendingReply< Tp::CaptchaInfoList, uint, QString > GetCaptchas a00190.html a5bce6ccb4f86ec65fbef41986506a3d9 (int timeout=-1) QDBusPendingReply< QByteArray > GetCaptchaData a00190.html a4689d9e53b602168efcc78322de63093 (uint ID, const QString &mimeType, int timeout=-1) QDBusPendingReply AnswerCaptchas a00190.html aed3a3dd4f17b0814ad45ff06a9b2749a (const Tp::CaptchaAnswers &answers, int timeout=-1) QDBusPendingReply CancelCaptcha a00190.html a84f3ba6a9f4e6ac7c914d7fffd112289 (uint reason, const QString &debugMessage, int timeout=-1) ChannelInterfaceCaptchaAuthenticationInterface a00190.html ac0b770d68a14bba885382001b62dd17d (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceCaptchaAuthenticationInterface a00190.html ad1dc1eabd51e3d8c420a0e52abd788c9 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceCaptchaAuthenticationInterface a00190.html ac96a5f5eb023eaa163ff1bfad534e6cc (Tp::DBusProxy *proxy) ChannelInterfaceCaptchaAuthenticationInterface a00190.html acadcaf07ddcae916228c725fd3568a7a (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceCaptchaAuthenticationInterface a00190.html accd8cb47123a4964848975b99f8c7054 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyCanRetryCaptcha a00190.html a407acbe74a17a0041d1740756b53c6df () const Tp::PendingVariant * requestPropertyCaptchaStatus a00190.html aa23aa44ac8eda567a69e28b69c557ad4 () const Tp::PendingVariant * requestPropertyCaptchaError a00190.html afd31a23fdd88e458a78aa09809a06953 () const Tp::PendingVariant * requestPropertyCaptchaErrorDetails a00190.html a73bc7c59534a0a3ab27ed822068f07be () const Tp::PendingVariantMap * requestAllProperties a00190.html a5141eef6c1d0d05eb9591eed4a354e98 () const static QLatin1String staticInterfaceName a00190.html a0dedaf4e56a242a00e4dc4ce208b811b () virtual void invalidate a00190.html a74a056026208feb89f67e1cd6da2af4f (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceChatStateInterface a00192.html Tp::AbstractInterface QDBusPendingReply SetChatState a00192.html a7bfc1a6e8e6c0c54b5bbe391dc24cbb1 (uint state, int timeout=-1) void ChatStateChanged a00192.html a8a5c78fb1e38007eb5602c97f99c826d (uint contact, uint state) ChannelInterfaceChatStateInterface a00192.html a86e591069556c2ef77ea5c4dd2c99213 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceChatStateInterface a00192.html a654df83bc55d2f46dcd48509bd3d81c7 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceChatStateInterface a00192.html a221cc1d3e4f778fb67a4409d0a130e8e (Tp::DBusProxy *proxy) ChannelInterfaceChatStateInterface a00192.html a6cdc1e708934976cd390081f08702222 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceChatStateInterface a00192.html ae19b1f51b9c360b1877bd35e04dcb2be (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyChatStates a00192.html ae5552b249ded0f18fdfa4013708813dc () const Tp::PendingVariantMap * requestAllProperties a00192.html ae6ff846230b0113d235b23568cdfee26 () const static QLatin1String staticInterfaceName a00192.html a78a69f72bce3905c903172c7806f7467 () virtual void invalidate a00192.html ad04a682781c90b58060b843a7cadae05 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceConferenceInterface a00194.html Tp::AbstractInterface void ChannelMerged a00194.html aa18cbd842e99515cda90efe07e8a91fd (const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties) void ChannelRemoved a00194.html a1d24742c62566f56411860baeb2150ea (const QDBusObjectPath &channel, const QVariantMap &details) ChannelInterfaceConferenceInterface a00194.html a6a791b536475b8cfc6b5e362a9fbfa38 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceConferenceInterface a00194.html a6f859b2cde332d102978818700e9234d (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceConferenceInterface a00194.html a9fafcb7b8fcb694737f9c7cac0c794c5 (Tp::DBusProxy *proxy) ChannelInterfaceConferenceInterface a00194.html a6a9cc2a45dd7f36534fdebee5d192e2c (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceConferenceInterface a00194.html ad46d53b05377ffcaa7cacb2838a21b1c (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyChannels a00194.html a7b85212cb060d3a19fd606665244e93f () const Tp::PendingVariant * requestPropertyInitialChannels a00194.html a4d9942808d335a31ab5448f26effefe1 () const Tp::PendingVariant * requestPropertyInitialInviteeHandles a00194.html a25988ffaac75d5db7643ba80d8f2aa00 () const Tp::PendingVariant * requestPropertyInitialInviteeIDs a00194.html ac315a8deab7588403c9f10a97927983c () const Tp::PendingVariant * requestPropertyInvitationMessage a00194.html a539c0363b105cce8fe0dc11b56d85364 () const Tp::PendingVariant * requestPropertyOriginalChannels a00194.html abf5d6b6c5b743b10ec242f8605beb5e5 () const Tp::PendingVariantMap * requestAllProperties a00194.html aa02a4f1b4eed56c88ab625ef1ba32198 () const static QLatin1String staticInterfaceName a00194.html a5d9c43e0c6f2e3e5a1254afb417a7bd2 () virtual void invalidate a00194.html ac0cba804de17ad80dd35fbe279626c82 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceDTMFInterface a00198.html Tp::AbstractInterface QDBusPendingReply StartTone a00198.html a7f4f47a584592d46b2182c53dcce22cc (uint streamID, uchar event, int timeout=-1) QDBusPendingReply StopTone a00198.html a755c363703a7afb5efe8c5d44b29e683 (uint streamID, int timeout=-1) QDBusPendingReply MultipleTones a00198.html ac436279fe00b1d024645eabdfaa1e98e (const QString &tones, int timeout=-1) void TonesDeferred a00198.html a413c337da0b107f1947b8393d414d8f8 (const QString &tones) void SendingTones a00198.html afa8462b3db0db4ee82bfffde8b30e41e (const QString &tones) void StoppedTones a00198.html a9619fd9b95e3d1f3af078e537116d4ac (bool cancelled) ChannelInterfaceDTMFInterface a00198.html aebdbf77eb52c5e20559543f7601296f3 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceDTMFInterface a00198.html ad8d400217c1a81800ecacbd22be01662 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceDTMFInterface a00198.html abd01a6731529646635d210fc57892ed3 (Tp::DBusProxy *proxy) ChannelInterfaceDTMFInterface a00198.html aa006dda0854225c735b72d8552ccc1a2 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceDTMFInterface a00198.html ac43aa619edb225c3a59c752e4adc5d71 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyCurrentlySendingTones a00198.html a6e8f3202e229c84b5055335f40b3bbe6 () const Tp::PendingVariant * requestPropertyInitialTones a00198.html ab0b01ad567b4178387723912b8a859e7 () const Tp::PendingVariant * requestPropertyDeferredTones a00198.html abc815fe134037b68a002f2f5d4e2744e () const Tp::PendingVariantMap * requestAllProperties a00198.html afac06b63451ba69cc204df607ea5c8ca () const static QLatin1String staticInterfaceName a00198.html aa83cc3ee16a396afd88e1aa73a442649 () virtual void invalidate a00198.html a1a26748d2b875d31993bf52d97e6148b (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceDestroyableInterface a00196.html Tp::AbstractInterface QDBusPendingReply Destroy a00196.html adffce8af8cc62152f5e273e3daa2e817 (int timeout=-1) ChannelInterfaceDestroyableInterface a00196.html a948b4517bac6d99f0c0a499361cd9efa (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceDestroyableInterface a00196.html afddc0033957ab2ab35569e637b1dfdf0 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceDestroyableInterface a00196.html a4461b2f092458ccbd9a44314829bf386 (Tp::DBusProxy *proxy) ChannelInterfaceDestroyableInterface a00196.html ae9432e173870c1553fc0a11381b44fd7 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceDestroyableInterface a00196.html a9a237ca6f56e5c514aec91881992bcfe (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00196.html a180bf4363d540b853c8e14c285fa6ab4 () const static QLatin1String staticInterfaceName a00196.html a4d1378f0615d3f182c5709cfc9f504c1 () virtual void invalidate a00196.html a98415e7574a38dba9726ab8ef5841e23 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceFileTransferMetadataInterface a00200.html Tp::AbstractInterface ChannelInterfaceFileTransferMetadataInterface a00200.html a8e3d0d8fb001199f6118ddf42e854473 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceFileTransferMetadataInterface a00200.html a0320cbe670c296a4dc2187af871ebaf6 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceFileTransferMetadataInterface a00200.html ad17298f8cde3a92407062d59b6d0d418 (Tp::DBusProxy *proxy) ChannelInterfaceFileTransferMetadataInterface a00200.html a34ec2407d057a1da59ac171c61860079 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceFileTransferMetadataInterface a00200.html a3dbdeb25f5cc1f14f12c9c130a75bc8d (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyServiceName a00200.html a97b92a9ad320126052b6d0980c13d7f6 () const Tp::PendingOperation * setPropertyServiceName a00200.html a5bff74a368d3133b24c4997015fbcd48 (QString newValue) Tp::PendingVariant * requestPropertyMetadata a00200.html a9808fa66158073369c9c255a8c230e99 () const Tp::PendingOperation * setPropertyMetadata a00200.html ad8e836f4ab0a51e3de3279c3177c2a6a (Tp::Metadata newValue) Tp::PendingVariantMap * requestAllProperties a00200.html ab3739c781eca3e944159f0129ad14323 () const static QLatin1String staticInterfaceName a00200.html a8162b34ba8a568b96d53dd8c75611655 () virtual void invalidate a00200.html ae4e8e9071c9be3fc2d60b83634f17870 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceGroupInterface a00202.html Tp::AbstractInterface QDBusPendingReply AddMembers a00202.html a679717c703b0c51ebc9dc1ff6a248693 (const Tp::UIntList &contacts, const QString &message, int timeout=-1) QDBusPendingReply< Tp::UIntList, Tp::UIntList, Tp::UIntList > GetAllMembers a00202.html ac801b6c6f0174090f556d4451fd94fd7 (int timeout=-1) QDBusPendingReply< uint > GetGroupFlags a00202.html ad307d230353b15975e824b9becee2bf0 (int timeout=-1) QDBusPendingReply< Tp::UIntList > GetHandleOwners a00202.html ae124118f5339d05e033018c1d540b9b9 (const Tp::UIntList &handles, int timeout=-1) QDBusPendingReply< Tp::UIntList > GetLocalPendingMembers a00202.html a71a77339bd0c81193ef4ab7501495e20 (int timeout=-1) QDBusPendingReply< Tp::LocalPendingInfoList > GetLocalPendingMembersWithInfo a00202.html a672af560e2335b00a096b69702c2cdde (int timeout=-1) QDBusPendingReply< Tp::UIntList > GetMembers a00202.html a002272a6c67ee7682f32cd318b3d7058 (int timeout=-1) QDBusPendingReply< Tp::UIntList > GetRemotePendingMembers a00202.html abfb7d3de4986e5a5039bb199a17e10a4 (int timeout=-1) QDBusPendingReply< uint > GetSelfHandle a00202.html a5c36599b48a9f43842134499cf61ef2d (int timeout=-1) QDBusPendingReply RemoveMembers a00202.html a68f5efdb73d7f6dcddb638fb05bea959 (const Tp::UIntList &contacts, const QString &message, int timeout=-1) QDBusPendingReply RemoveMembersWithReason a00202.html a730c7b58b679aa14cdeeb20e468643cb (const Tp::UIntList &contacts, const QString &message, uint reason, int timeout=-1) void HandleOwnersChanged a00202.html a0b5e0a8cf6d7b511a59b6aa6e02e468a (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed) void HandleOwnersChangedDetailed a00202.html a884c6ce068ac8f57a5c28a9aa958ab0f (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers) void SelfHandleChanged a00202.html a7538d2aae49e96eafb247af84b749ed1 (uint selfHandle) void SelfContactChanged a00202.html ae14a905b4aa426ac8d39eede78fa3e1a (uint selfHandle, const QString &selfID) void GroupFlagsChanged a00202.html aff24670319166febb52fbdd07f1ae1d4 (uint added, uint removed) void MembersChanged a00202.html a8fd1f5fe36448c5f32c8d35bca1af3c1 (const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason) void MembersChangedDetailed a00202.html ac840dd1ed0232d40ddaec4b2ffe6b289 (const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details) ChannelInterfaceGroupInterface a00202.html a8dc738ab020099112172d46f81cbfea7 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceGroupInterface a00202.html aa8d44d8da94dc3d52ac6676abd03344f (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceGroupInterface a00202.html a9f19860cd372053b2a26b3b9872b3966 (Tp::DBusProxy *proxy) ChannelInterfaceGroupInterface a00202.html a119c2047d24a622af97d9a804380b6ba (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceGroupInterface a00202.html ab9c5248b077b7b05f480ed923b999857 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyGroupFlags a00202.html a93a5eb6f41bedc6c57a25bebf81626b5 () const Tp::PendingVariant * requestPropertyHandleOwners a00202.html a40b5642f56029baddf910bc36615bb80 () const Tp::PendingVariant * requestPropertyLocalPendingMembers a00202.html ae3bc5b0510c7d6732846bc81e7d58579 () const Tp::PendingVariant * requestPropertyMembers a00202.html aabef4247d36d5d5311024ce5a4a746d2 () const Tp::PendingVariant * requestPropertyRemotePendingMembers a00202.html ab2282518e6a9fcc62da8c2af5748c955 () const Tp::PendingVariant * requestPropertySelfHandle a00202.html a97cc43cea0aad7761a3056412ea502be () const Tp::PendingVariant * requestPropertyMemberIdentifiers a00202.html a700c7ac5d6249d2d3c77bd49cc2c8809 () const Tp::PendingVariantMap * requestAllProperties a00202.html a44dccb58c143ee15afec7d21b045a76a () const static QLatin1String staticInterfaceName a00202.html a1f6b3019b28cf8c787a4dea326876262 () virtual void invalidate a00202.html ab54c77e9528266c565ec417791e6f546 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceHoldInterface a00204.html Tp::AbstractInterface QDBusPendingReply< uint, uint > GetHoldState a00204.html a245771309949e953ff90fb58ee9d91bd (int timeout=-1) QDBusPendingReply RequestHold a00204.html a05a20df88f33a9faf5fc0ab729d8730b (bool hold, int timeout=-1) void HoldStateChanged a00204.html a719bfb409d0197e11e944ce8ba5a5974 (uint holdState, uint reason) ChannelInterfaceHoldInterface a00204.html a246936e79a04a56da32f55384b770191 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceHoldInterface a00204.html adf33231fa0f8766ddc0ada5a0e740e28 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceHoldInterface a00204.html af59f7ef064c37aeb0a5c4f76d9b5d26d (Tp::DBusProxy *proxy) ChannelInterfaceHoldInterface a00204.html a7da65a8438e580b36d46cd8e9d12e76c (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceHoldInterface a00204.html a04cf11a3d78ce63052e26385f3c78a0e (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00204.html a179d036c9807aadda96d2cb45565f234 () const static QLatin1String staticInterfaceName a00204.html a349f24aeb30873dc2ef05606499603a8 () virtual void invalidate a00204.html a5c249bc9f5fb17b5945a8af0b53cc75b (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceMediaSignallingInterface a00206.html Tp::AbstractInterface QDBusPendingReply< Tp::MediaSessionHandlerInfoList > GetSessionHandlers a00206.html a5595cc1921151cef79673adc48ea048f (int timeout=-1) void NewSessionHandler a00206.html a61a94d9364bfdb63560ac5b187641c06 (const QDBusObjectPath &sessionHandler, const QString &sessionType) ChannelInterfaceMediaSignallingInterface a00206.html ad41879e41375051e402d35a4164972b6 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceMediaSignallingInterface a00206.html a307d06a72bf9f7d41917d243214fa625 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceMediaSignallingInterface a00206.html a7735787788c3dc00e4c2052575872d0c (Tp::DBusProxy *proxy) ChannelInterfaceMediaSignallingInterface a00206.html a866e14ac44da29db897b44f5f7cd125f (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceMediaSignallingInterface a00206.html a41ddefe575bde304766289e79b72a729 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00206.html af98111e4d51b58a89ebfb22833d4a2b5 () const static QLatin1String staticInterfaceName a00206.html a5fa2f2b351bf8c315a62f762be2c3e4b () virtual void invalidate a00206.html a9900ffb0c85243a2edce30e0b7070e88 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceMessagesInterface a00209.html Tp::AbstractInterface QDBusPendingReply< QString > SendMessage a00209.html a2322168c5097082626ce8e18e19df608 (const Tp::MessagePartList &message, uint flags, int timeout=-1) QDBusPendingReply< Tp::MessagePartContentMap > GetPendingMessageContent a00209.html a3aa8c7d409c35d4c2ad70a171c2e05eb (uint messageID, const Tp::UIntList &parts, int timeout=-1) void MessageSent a00209.html afbc7353fdabcd01e305061a2ee29deb0 (const Tp::MessagePartList &content, uint flags, const QString &messageToken) void PendingMessagesRemoved a00209.html a1653fd80ebb06e02ffbd8bb31935ce3f (const Tp::UIntList &messageIDs) void MessageReceived a00209.html aa6f58737e7247f1dafa158a375349a31 (const Tp::MessagePartList &message) ChannelInterfaceMessagesInterface a00209.html acd2a368d83af344d0d9df20f0a04f327 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceMessagesInterface a00209.html a61c6baf5ac33cdb2fa1c0f9d82971341 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceMessagesInterface a00209.html a13616cfdf998313de5a0b7e568870726 (Tp::DBusProxy *proxy) ChannelInterfaceMessagesInterface a00209.html a596dcfc8100e1b1c848d23e647b2443f (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceMessagesInterface a00209.html afa9a27ce573c6063fe0c2b3d81eb4aad (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySupportedContentTypes a00209.html a498b45f3f71b049c80ed92b43432c054 () const Tp::PendingVariant * requestPropertyMessageTypes a00209.html a5faa6d23838e93219b08f8e5171fb727 () const Tp::PendingVariant * requestPropertyMessagePartSupportFlags a00209.html ad1f813d6c96538dab7d8fa27248a2812 () const Tp::PendingVariant * requestPropertyPendingMessages a00209.html abcb27385de02342c40009d73299c943c () const Tp::PendingVariant * requestPropertyDeliveryReportingSupport a00209.html a8cb4c801b31b8085b8e66ee060a0b63c () const Tp::PendingVariantMap * requestAllProperties a00209.html a333ba30f24d33e7b5d8a189c4147bb9f () const static QLatin1String staticInterfaceName a00209.html a9dff305f703305fc024064c31e88bbfb () virtual void invalidate a00209.html ae852f646b8750ee9ae7513ecabce3c76 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfacePasswordInterface a00211.html Tp::AbstractInterface QDBusPendingReply< uint > GetPasswordFlags a00211.html a48c149d4bd9e6db9cd6db57709001319 (int timeout=-1) QDBusPendingReply< bool > ProvidePassword a00211.html a369b369ccaedec0ec005cc742c0817c0 (const QString &password, int timeout=-1) void PasswordFlagsChanged a00211.html a33b0006a8acf2cd01a9efd397d311f72 (uint added, uint removed) ChannelInterfacePasswordInterface a00211.html af0c53984c5b43c1d59859840962d12d2 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfacePasswordInterface a00211.html a1e737affc4b57c949768e2f8a4e6f430 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfacePasswordInterface a00211.html aa12766f3b5d8eeb1ee64b022a425da21 (Tp::DBusProxy *proxy) ChannelInterfacePasswordInterface a00211.html af854bb60a4f32453a5998007b3fdb947 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfacePasswordInterface a00211.html ac2ddeb333e5dc722f6057f5c9cd8c902 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00211.html add20d5c7edac8879219bff9a0a43b036 () const static QLatin1String staticInterfaceName a00211.html a2b9830bb2772224ae8fa6612ada70c1d () virtual void invalidate a00211.html acd3cc98291efedd3c12d1c61020ddfd4 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceRoomConfigInterface a00214.html Tp::AbstractInterface QDBusPendingReply UpdateConfiguration a00214.html a53d76043b144b6939d0f8f92a6f36585 (const QVariantMap &properties, int timeout=-1) ChannelInterfaceRoomConfigInterface a00214.html a6489fe2cc67f4aec2a2fcc17dfa844cc (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceRoomConfigInterface a00214.html adeaaebb9c593938099909eedc3cea37e (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceRoomConfigInterface a00214.html a8a8bbf566f98e8860e7cdc71939c74c6 (Tp::DBusProxy *proxy) ChannelInterfaceRoomConfigInterface a00214.html ab5a8de44dacbccbfcaac480d034ad7bd (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceRoomConfigInterface a00214.html a6a791ce6a1af63910309a06e23eaff07 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAnonymous a00214.html a6ed4ea0cb051eb41ae2da73ef2615644 () const Tp::PendingVariant * requestPropertyInviteOnly a00214.html aa1e97e5a531e18ea107690ca453ccdd3 () const Tp::PendingVariant * requestPropertyLimit a00214.html a727283cc20b6b80a14f0d4ac479f9547 () const Tp::PendingVariant * requestPropertyModerated a00214.html aac3a0af33a9f4c23371dca9ef00004b4 () const Tp::PendingVariant * requestPropertyTitle a00214.html a16bcbeffb471ce92aa16e0d79305c3dd () const Tp::PendingVariant * requestPropertyDescription a00214.html aefda5e4c915356cdef1dfa3db6ecce82 () const Tp::PendingVariant * requestPropertyPersistent a00214.html a23b9b5f3cd98f3b1db4618905a098a87 () const Tp::PendingVariant * requestPropertyPrivate a00214.html a4089c13a300530c670e1855bd8959575 () const Tp::PendingVariant * requestPropertyPasswordProtected a00214.html a8ada599b0b1e0e279eede9c3aea41467 () const Tp::PendingVariant * requestPropertyPassword a00214.html a1db9c38f17b331f98022b1e5ef901ca0 () const Tp::PendingVariant * requestPropertyPasswordHint a00214.html a34d5a053c3760c59ba1440de34af2147 () const Tp::PendingVariant * requestPropertyCanUpdateConfiguration a00214.html a480b7a505fe30c692bac992d99212b43 () const Tp::PendingVariant * requestPropertyMutableProperties a00214.html a272ebce0c8071cbc9d31665f1324736d () const Tp::PendingVariant * requestPropertyConfigurationRetrieved a00214.html a013888dceea833f9c09eec90f9deff32 () const Tp::PendingVariantMap * requestAllProperties a00214.html a396b87e9cc90d5b2be5c84051e9cad99 () const static QLatin1String staticInterfaceName a00214.html a65015abb60dbf4bac711555b2297cc57 () virtual void invalidate a00214.html a28a67d592dc8997eae9df77ab588e7ad (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceRoomInterface a00215.html Tp::AbstractInterface ChannelInterfaceRoomInterface a00215.html ac5ce5506a4884a4ac8d879b8a9fae9d1 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceRoomInterface a00215.html acc263338001cab4b4cd150447e4d9ac9 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceRoomInterface a00215.html a1d93de3db55703e908ea6d046f6297d2 (Tp::DBusProxy *proxy) ChannelInterfaceRoomInterface a00215.html a9dd2fef5cd2ef6be5a811ae2809e5c79 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceRoomInterface a00215.html a80fbfffddd2ac0eee9a7ea921d6a353e (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyRoomName a00215.html aa7fc762a19b88d57ddd8d6a191c987eb () const Tp::PendingVariant * requestPropertyServer a00215.html a448f405d57e2ff19a6d30b0b3670730c () const Tp::PendingVariant * requestPropertyCreator a00215.html a611d380ce7a3fc6b1fb00f8f19e5e765 () const Tp::PendingVariant * requestPropertyCreatorHandle a00215.html a7e7fbad25f8dda56fe47e353b75df6de () const Tp::PendingVariant * requestPropertyCreationTimestamp a00215.html ad4d3afba90ee79c47beea83606b54c3b () const Tp::PendingVariantMap * requestAllProperties a00215.html a5cfa36bb188013397648247868f7dd7e () const static QLatin1String staticInterfaceName a00215.html a68039b7815b306b293228571f86e1893 () virtual void invalidate a00215.html a2549818f3dec7bfa984d1e6fe19cbe47 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceSASLAuthenticationInterface a00217.html Tp::AbstractInterface QDBusPendingReply StartMechanism a00217.html a305de6933d13d95a9b6145c91cdeaccf (const QString &mechanism, int timeout=-1) QDBusPendingReply StartMechanismWithData a00217.html a132a20cc888970dabd202bfb4c5aacca (const QString &mechanism, const QByteArray &initialData, int timeout=-1) QDBusPendingReply Respond a00217.html ae8c86f45faa45fafd5fe42d03869c8a2 (const QByteArray &responseData, int timeout=-1) QDBusPendingReply AcceptSASL a00217.html ad6d594e30722ea3ee378be222700f798 (int timeout=-1) QDBusPendingReply AbortSASL a00217.html aef599fe6b2d21f0fc22accb4c8a43ace (uint reason, const QString &debugMessage, int timeout=-1) void SASLStatusChanged a00217.html a5bfadeaf864af8029796132ad19ab07f (uint status, const QString &reason, const QVariantMap &details) void NewChallenge a00217.html a7c18012aadaa73dadffc3979c965c41f (const QByteArray &challengeData) ChannelInterfaceSASLAuthenticationInterface a00217.html aa8b6865d152d3fe286ccf881c3f22039 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSASLAuthenticationInterface a00217.html aa25735e9c830ca6efd74d0a54e00074f (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSASLAuthenticationInterface a00217.html a62d0b6bcd773abdec6502f63fe6e0205 (Tp::DBusProxy *proxy) ChannelInterfaceSASLAuthenticationInterface a00217.html a5aba240e5be2087a4eb9a13c22bab50e (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceSASLAuthenticationInterface a00217.html a07e5eecf49a93679d96fb5516d8e2b88 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAvailableMechanisms a00217.html ab923daa38e076f9a0dfb6ff050a41bc3 () const Tp::PendingVariant * requestPropertyHasInitialData a00217.html a995ca3ca552831bc3cb1e271af8a175c () const Tp::PendingVariant * requestPropertyCanTryAgain a00217.html addfe20dbc6ebc0e4189c4d76b127ccb3 () const Tp::PendingVariant * requestPropertySASLStatus a00217.html a7560d50b14dcb743f9f59bee523af345 () const Tp::PendingVariant * requestPropertySASLError a00217.html a96b02246df4d899f84073e0defd371c1 () const Tp::PendingVariant * requestPropertySASLErrorDetails a00217.html a7ac446db7f00020f081be45711c1db7e () const Tp::PendingVariant * requestPropertyAuthorizationIdentity a00217.html aee55564e166f8b5be1bd4ef0cee20786 () const Tp::PendingVariant * requestPropertyDefaultUsername a00217.html a075de39104a43b28cdf19597675cd571 () const Tp::PendingVariant * requestPropertyDefaultRealm a00217.html a951f07f75b0594a2af1aad2a7026c7d1 () const Tp::PendingVariant * requestPropertyMaySaveResponse a00217.html a359c084b70afb615eabc5356ccecce72 () const Tp::PendingVariantMap * requestAllProperties a00217.html aafa8368c1df7466171d3f2e8c45cdc9f () const static QLatin1String staticInterfaceName a00217.html ad02dda8414442c6667d08b3731b8e1a4 () virtual void invalidate a00217.html a97b6ba872a1604e9b8399ccdc6c3fafd (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceSMSInterface a00223.html Tp::AbstractInterface QDBusPendingReply< uint, int, int > GetSMSLength a00223.html a25ca310de9dd4b8b5f4bd301e1d7e486 (const Tp::MessagePartList &message, int timeout=-1) void SMSChannelChanged a00223.html a44a6a31763a5b5a28fcd4f87ae336265 (bool SMSChannel) ChannelInterfaceSMSInterface a00223.html a0963567595da8466f4465a74252468e1 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSMSInterface a00223.html a31251dbe46c1c44dbb1d7ba56b892773 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSMSInterface a00223.html ae4c10b0c7b205032a5aa5e071a40eea6 (Tp::DBusProxy *proxy) ChannelInterfaceSMSInterface a00223.html a3a19a0190339a05da0cc1d3c2dd88c8f (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceSMSInterface a00223.html ad90f19f83c3774f703daaf80c7f6e571 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyFlash a00223.html a01085f8a670bd4dee774b0409a00af2b () const Tp::PendingVariant * requestPropertySMSChannel a00223.html a3701fe3db530a59dc25ce790cd8dfbf0 () const Tp::PendingVariantMap * requestAllProperties a00223.html ab4e879b9ec2423bc01fa5c7edccef3cb () const static QLatin1String staticInterfaceName a00223.html a6aaf11f1282007dfe112373a4415f718 () virtual void invalidate a00223.html a051ffa99b47faa6678ca7316f07f4399 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceSecurableInterface a00219.html Tp::AbstractInterface ChannelInterfaceSecurableInterface a00219.html ac3b4f21815ac1a4bddf4224800e9681c (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSecurableInterface a00219.html a2484f2a529d8de96ac4ddf40c85a8a41 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSecurableInterface a00219.html a77b998c8019ba11ff6d7a1bb6eb1428f (Tp::DBusProxy *proxy) ChannelInterfaceSecurableInterface a00219.html adfecafba5d1aa574104b06f5f1a5b583 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceSecurableInterface a00219.html a9c437b4f2287281fcc3efd578d48eaeb (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyEncrypted a00219.html a7394b53e31f6017c9b5bd012adfd1239 () const Tp::PendingVariant * requestPropertyVerified a00219.html ab5ff439de2e731a1d2caa973ccada90c () const Tp::PendingVariantMap * requestAllProperties a00219.html ad7f8e57f2be5deafc5d37cbf0f870cd7 () const static QLatin1String staticInterfaceName a00219.html a6b278292d1b013768e4af1e36bbe9b98 () virtual void invalidate a00219.html ad70f5ac7d07d41d97a00b15dccd446df (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceServicePointInterface a00221.html Tp::AbstractInterface void ServicePointChanged a00221.html a636a125d6977f21f075a29ae07cb3449 (const Tp::ServicePoint &servicePoint) ChannelInterfaceServicePointInterface a00221.html a4e7f7f5c9bd05d399b3fe889536f73da (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceServicePointInterface a00221.html a7ae470c6bb7937380431406530661a0d (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceServicePointInterface a00221.html a229e53bb7780ada1625006eabdced42b (Tp::DBusProxy *proxy) ChannelInterfaceServicePointInterface a00221.html afe41fcf5478a72f45623866181d75471 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceServicePointInterface a00221.html a3e588177e22476a742a19fa59b84a0b9 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyInitialServicePoint a00221.html a57779ab21eabb81fdb4810ef83e848c7 () const Tp::PendingVariant * requestPropertyCurrentServicePoint a00221.html a37142e1b3e07f9cb989741cd678b767d () const Tp::PendingVariantMap * requestAllProperties a00221.html a51af8cdfb06c5fa6571b9efd1082b48c () const static QLatin1String staticInterfaceName a00221.html af7d1bb5ed8aebade7d68f45c72aa3c0f () virtual void invalidate a00221.html a8cb04cd79913d3f5f7bd30f62871e830 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceSubjectInterface a00226.html Tp::AbstractInterface QDBusPendingReply SetSubject a00226.html ae8050062ba1d1227b2268c35b3aefb14 (const QString &subject, int timeout=-1) ChannelInterfaceSubjectInterface a00226.html a4f30df9a04bcf5cdac2019db138e63eb (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSubjectInterface a00226.html a657596870c4c43ee97d5e20e0b0fc742 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceSubjectInterface a00226.html ad17559f85c5031dcf3c8c68cc4f512f1 (Tp::DBusProxy *proxy) ChannelInterfaceSubjectInterface a00226.html a2502cb20c8d44916c59f43b957890558 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceSubjectInterface a00226.html a36c879570c198592799556e48dca9dc4 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySubject a00226.html a6e9ec95fafeeae8c955f6ced26935df6 () const Tp::PendingVariant * requestPropertyActor a00226.html a58a2fc47e7b6446994308c8c4f11651c () const Tp::PendingVariant * requestPropertyActorHandle a00226.html ab4be5f5f8ce000a450ae14bb8ed82073 () const Tp::PendingVariant * requestPropertyTimestamp a00226.html ac41f8586b2307d3a333b42a5fc9bf9d1 () const Tp::PendingVariant * requestPropertyCanSet a00226.html a3bb5ef600663b53b1f8d0b3e41655751 () const Tp::PendingVariantMap * requestAllProperties a00226.html a359eb138a64d8d06d6fd36e9c9caaa29 () const static QLatin1String staticInterfaceName a00226.html a9beac9d1b1f4f0ac35157059ed58352a () virtual void invalidate a00226.html a1dd337cbc675c8305f6795f645a0f754 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelInterfaceTubeInterface a00227.html Tp::AbstractInterface void TubeChannelStateChanged a00227.html a05afd17c2b2ab3fb4594ed51c36f1277 (uint state) ChannelInterfaceTubeInterface a00227.html a71e0de9d3eb14bd44216c31253132de5 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceTubeInterface a00227.html a5de20c8cf3492ebcdd98ffbd92faf4b6 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelInterfaceTubeInterface a00227.html afee67f861bbb27fcd2edd719c2a97998 (Tp::DBusProxy *proxy) ChannelInterfaceTubeInterface a00227.html a1cb7032c43f020efd899d00987bbf598 (const Tp::Client::ChannelInterface &mainInterface) ChannelInterfaceTubeInterface a00227.html abe77f4f6a4e51e5e2ac9f70fa6a03eeb (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyParameters a00227.html a17ea23ed3335870f87b76e01953002b1 () const Tp::PendingVariant * requestPropertyState a00227.html a64235b3e6509199718e97e855a39afee () const Tp::PendingVariantMap * requestAllProperties a00227.html ac5842a64c5898e83748391613217d35e () const static QLatin1String staticInterfaceName a00227.html ab0b2bd1476ce9b12e68da68b6d973d5d () virtual void invalidate a00227.html aa23a4a79b6ec6c81c1370cd9499aad61 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeCallInterface a00233.html Tp::AbstractInterface QDBusPendingReply SetRinging a00233.html a96239edddf18d4058f9099425d982a5c (int timeout=-1) QDBusPendingReply SetQueued a00233.html a741f81bef240cc59132133a29876be09 (int timeout=-1) QDBusPendingReply Accept a00233.html a633506fb39ef1a4d7b7d14069fcf1392 (int timeout=-1) QDBusPendingReply Hangup a00233.html afa49096dadac8b53c436bfb698151f7e (uint reason, const QString &detailedHangupReason, const QString &message, int timeout=-1) QDBusPendingReply< QDBusObjectPath > AddContent a00233.html ab33e95e80e652d661305d0a95fec8aca (const QString &contentName, uint contentType, uint initialDirection, int timeout=-1) void ContentAdded a00233.html adf5123584ed15171eeec88ee0dd7cdcb (const QDBusObjectPath &content) void ContentRemoved a00233.html a15b7638cda497d1b3be7f6cdbd766f53 (const QDBusObjectPath &content, const Tp::CallStateReason &reason) void CallStateChanged a00233.html a74e593605cb733cee4cfd96473f14e8c (uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails) void CallMembersChanged a00233.html a7e53ac3834a7321526ebb2cda3bbf04a (const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason) ChannelTypeCallInterface a00233.html aecad80b0dbd59d6f007252d82c8e87cc (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeCallInterface a00233.html a8950b8e0e52b1c4e27d012a5b1ae5b77 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeCallInterface a00233.html a16316a652a14601a29163c60840f63d5 (Tp::DBusProxy *proxy) ChannelTypeCallInterface a00233.html a03493dc42391870962fe7936261d254b (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeCallInterface a00233.html ab24514a6dd6c4ca7ff8cf1e8416b70a0 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyContents a00233.html a001110328039f224b70dafc475c31fbf () const Tp::PendingVariant * requestPropertyCallStateDetails a00233.html a72d3ca4955982fcd707988fcf5e03792 () const Tp::PendingVariant * requestPropertyCallState a00233.html a93fa7e2928719d075b068fa9d11d37db () const Tp::PendingVariant * requestPropertyCallFlags a00233.html a6540dd7a20f6d53e154abbc5fe8b3b2e () const Tp::PendingVariant * requestPropertyCallStateReason a00233.html abec721352f707fba6f301628c49d267c () const Tp::PendingVariant * requestPropertyHardwareStreaming a00233.html ae2356a39a64cc9e96ebf6c8be19aeec9 () const Tp::PendingVariant * requestPropertyCallMembers a00233.html aa69dae80831c99f2e948442372b57d50 () const Tp::PendingVariant * requestPropertyMemberIdentifiers a00233.html a7b38f12b971a1328b7d3adf0a57baf13 () const Tp::PendingVariant * requestPropertyInitialTransport a00233.html a830793df651ca3d88dd119ce86496e87 () const Tp::PendingVariant * requestPropertyInitialAudio a00233.html a7359b73bc1f2c36b7ecdfc0a264fd188 () const Tp::PendingVariant * requestPropertyInitialVideo a00233.html ace0f0982b16fc09cdce44f040cae1733 () const Tp::PendingVariant * requestPropertyInitialAudioName a00233.html aa6088e0eb02283553550c27a7c0fc0e7 () const Tp::PendingVariant * requestPropertyInitialVideoName a00233.html a0dcb4cd44bb1b0320b7dd5217fb21ec9 () const Tp::PendingVariant * requestPropertyMutableContents a00233.html a167b9c345eedf5fedce33bd00a3e85a2 () const Tp::PendingVariantMap * requestAllProperties a00233.html a6a6c36fb3384c128a0d5d9ee9f4b2f48 () const static QLatin1String staticInterfaceName a00233.html a30872a6283425848b143dca8e7f7abef () virtual void invalidate a00233.html a50f30944805c396ded58589c48eccbdf (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeContactListInterface a00234.html Tp::AbstractInterface ChannelTypeContactListInterface a00234.html a0b19c65f24fd0e3b45e20be0697020db (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeContactListInterface a00234.html a6bdb4bbe627bd33cbaf56017cd3f8b45 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeContactListInterface a00234.html a0c2a04bc94c5a67a24cb23f040940c7a (Tp::DBusProxy *proxy) ChannelTypeContactListInterface a00234.html a80cd1cde5874158b76f2c1fa6bc3f455 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeContactListInterface a00234.html af61df5ae0a86795d35fc619dddc8b8c9 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00234.html ab1edb48641e8fd3e020273d0d8b86ae4 () const static QLatin1String staticInterfaceName a00234.html a54ef6a00756e6797f65592500091b8ef () virtual void invalidate a00234.html af265a16ed1fa8c6c3670c19473ca447e (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeContactSearchInterface a00236.html Tp::AbstractInterface QDBusPendingReply Search a00236.html aa8ca6382d623328ab5210c5780782d5a (const Tp::ContactSearchMap &terms, int timeout=-1) QDBusPendingReply More a00236.html aa5d9d2b680bb81ec0e00fdff51620f3c (int timeout=-1) QDBusPendingReply Stop a00236.html a358c80442161ade9a9d3e758c8c729e4 (int timeout=-1) void SearchStateChanged a00236.html a5548696ea67359097cec33e62d511447 (uint state, const QString &error, const QVariantMap &details) void SearchResultReceived a00236.html aec8316d64e19e4f7b82717842e9175af (const Tp::ContactSearchResultMap &result) ChannelTypeContactSearchInterface a00236.html a0af91e03afa35941661ee3c8de2af634 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeContactSearchInterface a00236.html a628afe07e4d03a6b15a52eab899fd37c (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeContactSearchInterface a00236.html a3e8b70b4361ab47b00b63e99c05c0d2e (Tp::DBusProxy *proxy) ChannelTypeContactSearchInterface a00236.html a4f037961ba3ca6083222cc048ea36265 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeContactSearchInterface a00236.html a76e56ecdc349b7cd0a291c81ac3b4e57 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySearchState a00236.html aafddc844f61e63b77ddf7ec49267560e () const Tp::PendingVariant * requestPropertyLimit a00236.html a9adce7c2d55f5953a18729bdfdd14705 () const Tp::PendingVariant * requestPropertyAvailableSearchKeys a00236.html a7220b7ee2b349e81a2511e370b4b9d9b () const Tp::PendingVariant * requestPropertyServer a00236.html a6d8ed003b301ab7d12bb30ea6dfcba6e () const Tp::PendingVariantMap * requestAllProperties a00236.html ac3da5d23a1fd87f946cd17b6db26992b () const static QLatin1String staticInterfaceName a00236.html a54dfd37402a677c822fe0997325a0f4e () virtual void invalidate a00236.html ab70c0b92b91e3888e7f25c458f9b5aa6 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeDBusTubeInterface a00238.html Tp::AbstractInterface QDBusPendingReply< QString > Offer a00238.html a82729555d6a94dc8ec2fe9138eb7cf66 (const QVariantMap &parameters, uint accesscontrol, int timeout=-1) QDBusPendingReply< QString > Accept a00238.html ace79664ed05ccfaaaf849008be1f5967 (uint accesscontrol, int timeout=-1) void DBusNamesChanged a00238.html a0e4f4cb91e60addb7be6ccb9393ea6c2 (const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed) ChannelTypeDBusTubeInterface a00238.html a97718786c9c071014cbdee0dfdd9c479 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeDBusTubeInterface a00238.html a4f5eeb7b54185002fd6749136cba4162 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeDBusTubeInterface a00238.html a7463ca4d8d1e18ce797085c7d80eaf43 (Tp::DBusProxy *proxy) ChannelTypeDBusTubeInterface a00238.html a0277af23a31deea7094e4f86edfef06d (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeDBusTubeInterface a00238.html a068dd3c3cb9cbce5209a0be1fa157574 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyServiceName a00238.html a14f94c953b722f0c017be40ab28b972d () const Tp::PendingVariant * requestPropertyDBusNames a00238.html aa5b59ba24ef690f942c1c0933f33fd1a () const Tp::PendingVariant * requestPropertySupportedAccessControls a00238.html a3752156cf18aafd8c68b8b6eeab18fb9 () const Tp::PendingVariantMap * requestAllProperties a00238.html afd71a648d2ab61abb7011e0e3449405e () const static QLatin1String staticInterfaceName a00238.html a6149fdb3cc4d19827aa3f52db5a10060 () virtual void invalidate a00238.html a67dcf67123021313e8d9126a8e1c4936 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeFileTransferInterface a00240.html Tp::AbstractInterface QDBusPendingReply< QDBusVariant > AcceptFile a00240.html adfdff8bed32f86194ffd64074833bc69 (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, int timeout=-1) QDBusPendingReply< QDBusVariant > ProvideFile a00240.html ac9f2511f0821baa239c8e9898f9c94bf (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1) void FileTransferStateChanged a00240.html a92cb044275a108537f006d9f371dd750 (uint state, uint reason) void TransferredBytesChanged a00240.html a2f18f3ac37ec73cca36c6befd44e78f7 (qulonglong count) void InitialOffsetDefined a00240.html a94b5a83b112b80e7cf8d40401e8b9229 (qulonglong initialOffset) void URIDefined a00240.html a23733372663ed0021643cfa21abb7366 (const QString &URI) ChannelTypeFileTransferInterface a00240.html a07c223f949c456dcfc4c1c500aa28ba7 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeFileTransferInterface a00240.html adc6fa6da3f6cddb837bb1b713d44480c (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeFileTransferInterface a00240.html ad659f4687a3831c3bf4606e0dab16b0d (Tp::DBusProxy *proxy) ChannelTypeFileTransferInterface a00240.html a81a0546e3eaf32c91bc61b956567077b (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeFileTransferInterface a00240.html a5a001a018feebd76671c7aad0b277b56 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyState a00240.html ae7ce82a878ab8da1996d83ea80df16e7 () const Tp::PendingVariant * requestPropertyContentType a00240.html a1cb0ae96a1eee75e17eb065b6af98f5f () const Tp::PendingVariant * requestPropertyFilename a00240.html ad8fee01d164e271be0f7c61210772f30 () const Tp::PendingVariant * requestPropertySize a00240.html af5861bf6534ea5233fe5c923adb1ff55 () const Tp::PendingVariant * requestPropertyContentHashType a00240.html a8d9258f652692afecb922df19a84ad88 () const Tp::PendingVariant * requestPropertyContentHash a00240.html a3838827a70756189c4157bc9c797d853 () const Tp::PendingVariant * requestPropertyDescription a00240.html a19bfe89ff83b43548b569bf2347366ea () const Tp::PendingVariant * requestPropertyDate a00240.html a16029910669ec3a6f3200564c6f0603c () const Tp::PendingVariant * requestPropertyAvailableSocketTypes a00240.html aeee45cc78b3acc38ab66aaa2051d5ef1 () const Tp::PendingVariant * requestPropertyTransferredBytes a00240.html a62cbc15599c7dc0e93799a9b5a2e3a90 () const Tp::PendingVariant * requestPropertyInitialOffset a00240.html af6971cb9352130521303eb15396121e3 () const Tp::PendingVariant * requestPropertyURI a00240.html aef03522c10ee6cac3836fcfd27977283 () const Tp::PendingOperation * setPropertyURI a00240.html ac6f8df9dbae4fb8d0dc10529c85f6b08 (QString newValue) Tp::PendingVariant * requestPropertyFileCollection a00240.html a6b80e530575ce72ffc00e2152a94f2c5 () const Tp::PendingVariantMap * requestAllProperties a00240.html acd6eaf8157a573c4e10b26935b38e379 () const static QLatin1String staticInterfaceName a00240.html a5f9129c40781e3468d5f5c8338e02455 () virtual void invalidate a00240.html aad18fde9a91940b4a84d89af2d72e4ac (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeRoomListInterface a00242.html Tp::AbstractInterface QDBusPendingReply< bool > GetListingRooms a00242.html a95cea38c51f34c0b82d4b849ad7c7a9f (int timeout=-1) QDBusPendingReply ListRooms a00242.html ad498e11d474fb2686e3843cb7ae9fe3c (int timeout=-1) QDBusPendingReply StopListing a00242.html ab7ca661f291c91dbb65af8d03399dc40 (int timeout=-1) void GotRooms a00242.html a00f2de288e88901a36e471f62d3fcc32 (const Tp::RoomInfoList &rooms) void ListingRooms a00242.html ae46d854a92b5cd329ffd2dbd02ed2243 (bool listing) ChannelTypeRoomListInterface a00242.html a876c7a1362b8f70214d10c8ca5a55052 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeRoomListInterface a00242.html a8de5e2faed584a38eb0e21f32247fe02 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeRoomListInterface a00242.html a6cf14ead62c930642fb127122737271b (Tp::DBusProxy *proxy) ChannelTypeRoomListInterface a00242.html a91da5bc67aed8449ce35eab8ae68a513 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeRoomListInterface a00242.html a10dadadaf9a782075d03b282ce529087 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyServer a00242.html af3ed7577ccddd7b626975a1d050bdc2d () const Tp::PendingVariantMap * requestAllProperties a00242.html a19c02f689ab3cba27182cce786a7b672 () const static QLatin1String staticInterfaceName a00242.html a1404ba74e8b8f851599a1162643924f0 () virtual void invalidate a00242.html a003e269bb48fdcace7a472bd80e5f201 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeServerAuthenticationInterface a00244.html Tp::AbstractInterface ChannelTypeServerAuthenticationInterface a00244.html a9bc027f154b098d795c8080c28bda1c1 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeServerAuthenticationInterface a00244.html a1280f43539ed1953623b2e6ae300d79d (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeServerAuthenticationInterface a00244.html abb698c3b6b27a2ef8e20b9f18edebd7b (Tp::DBusProxy *proxy) ChannelTypeServerAuthenticationInterface a00244.html a73569e4ce995d386d496fdaecb5c5933 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeServerAuthenticationInterface a00244.html a6462ab1d85ccba33cc71b9b21d53ef63 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAuthenticationMethod a00244.html a227ca9b0f954a8fa04797b822d865607 () const Tp::PendingVariantMap * requestAllProperties a00244.html a24af76bf821b3a72abbaf20df9fbc482 () const static QLatin1String staticInterfaceName a00244.html a29724582a3b17d37efa75d34e98a5c61 () virtual void invalidate a00244.html a3605912956a74721f73a0985a0878854 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeServerTLSConnectionInterface a00246.html Tp::AbstractInterface ChannelTypeServerTLSConnectionInterface a00246.html a73dee1e82312f5e596bdcd601b28e3c3 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeServerTLSConnectionInterface a00246.html a4101ed78663a5374b338b6db031558af (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeServerTLSConnectionInterface a00246.html a6dfce06413fb3ed6f2629d71a23179a4 (Tp::DBusProxy *proxy) ChannelTypeServerTLSConnectionInterface a00246.html a10efd5c9e8a84240f4728c800478acf7 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeServerTLSConnectionInterface a00246.html a83744c6a4a3e408b1b12d94d43cceccd (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyServerCertificate a00246.html a8f9362f4bfe241ef4df03af6f02105ff () const Tp::PendingVariant * requestPropertyHostname a00246.html a4218c95b46a801355bc4d5b0e0a00412 () const Tp::PendingVariant * requestPropertyReferenceIdentities a00246.html a0cdca4f78427409609a4bba32102dead () const Tp::PendingVariantMap * requestAllProperties a00246.html a1d2808d74483476fcb190d61ee6aaa28 () const static QLatin1String staticInterfaceName a00246.html a363de4227c1c4cbe0a296531bf635369 () virtual void invalidate a00246.html a5228b77889d6d16e8c5d84a039d9c96c (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeStreamTubeInterface a00250.html Tp::AbstractInterface QDBusPendingReply Offer a00250.html a7877910bbb85221e3aa4d0449190c492 (uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, int timeout=-1) QDBusPendingReply< QDBusVariant > Accept a00250.html acb3148b12fa8a9681eb653fea91d0839 (uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, int timeout=-1) void NewRemoteConnection a00250.html a0e854a9f933d1441ce697fdbf70d9868 (uint handle, const QDBusVariant &connectionParam, uint connectionID) void NewLocalConnection a00250.html a477eae0d2c124e6e4f71669a6f1b99d7 (uint connectionID) void ConnectionClosed a00250.html ad16099fb7dc01dcbed2778de4e83b490 (uint connectionID, const QString &error, const QString &message) ChannelTypeStreamTubeInterface a00250.html a0061cb5ba974cc6fddb25e491a17083a (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeStreamTubeInterface a00250.html afb19c20b20a913cff7a4206a3c2a1e7a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeStreamTubeInterface a00250.html a421156df7a0a30e5c18a557308b79ac3 (Tp::DBusProxy *proxy) ChannelTypeStreamTubeInterface a00250.html a52b202dfe8ff607a2fdac6ea18c1f95f (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeStreamTubeInterface a00250.html a049fb5fabc2d075de62fec7c7333edf1 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyService a00250.html ae39d9906253a3e376cd6445a7742090d () const Tp::PendingVariant * requestPropertySupportedSocketTypes a00250.html a25f8a53f375e742844e12e5ca3d7b3c9 () const Tp::PendingVariantMap * requestAllProperties a00250.html a1343c74a06c16cbfba24ff9e7d44b12b () const static QLatin1String staticInterfaceName a00250.html a4cccdead76c7a301fe06b9e8436bffb4 () virtual void invalidate a00250.html a750a1f2830a0d359a8d0bd2ce46e12bb (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeStreamedMediaInterface a00248.html Tp::AbstractInterface QDBusPendingReply< Tp::MediaStreamInfoList > ListStreams a00248.html a7a8eeca318c2136b63ba097c457fa68a (int timeout=-1) QDBusPendingReply RemoveStreams a00248.html a7dbf38ab728bfbbfc33663dac8ba844c (const Tp::UIntList &streams, int timeout=-1) QDBusPendingReply RequestStreamDirection a00248.html ae52bd6692f541d32d385a5b3208ba6f1 (uint streamID, uint streamDirection, int timeout=-1) QDBusPendingReply< Tp::MediaStreamInfoList > RequestStreams a00248.html a96ce1fb969a88a702aa361fa6f9bb863 (uint contactHandle, const Tp::UIntList &types, int timeout=-1) void StreamAdded a00248.html a4888b1748c7b9891a0b4c0bb3084bc55 (uint streamID, uint contactHandle, uint streamType) void StreamDirectionChanged a00248.html a0632b6527268e75d40295eee10647358 (uint streamID, uint streamDirection, uint pendingFlags) void StreamError a00248.html a5b1141dd856c2991277fbc436fdc2eda (uint streamID, uint errorCode, const QString &message) void StreamRemoved a00248.html af016449ea3f901190f7aade9a570aa85 (uint streamID) void StreamStateChanged a00248.html a5d01071b0fada995bc2a99d749a90c70 (uint streamID, uint streamState) ChannelTypeStreamedMediaInterface a00248.html a015a4ff8c4f12da989ff8beb5fcc26dc (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeStreamedMediaInterface a00248.html a9ada38af464c9020bdf4f9fa513ef9d3 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeStreamedMediaInterface a00248.html a9afec910af19a04485e746d06e9babb3 (Tp::DBusProxy *proxy) ChannelTypeStreamedMediaInterface a00248.html a3f8b81e044e1e6fccbd53ae618289e63 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeStreamedMediaInterface a00248.html a002432238ea8dd5470b33a76c7eace96 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyInitialAudio a00248.html aca00f0bc30ae2859905ccecd96681232 () const Tp::PendingVariant * requestPropertyInitialVideo a00248.html a9bb55843906687b8f04b2978cc0928a3 () const Tp::PendingVariant * requestPropertyImmutableStreams a00248.html ae4409dc50ce4e882cd0e5f32c65149d6 () const Tp::PendingVariantMap * requestAllProperties a00248.html a7f2c884868504af6b93e157082c50846 () const static QLatin1String staticInterfaceName a00248.html ad4967b8376f1a25438a77f23d9bc9f3d () virtual void invalidate a00248.html a1dba035682776d470ddc7b38d173f0f9 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeTextInterface a00252.html Tp::AbstractInterface QDBusPendingReply AcknowledgePendingMessages a00252.html a1820e2231a34cdf2c8e5cfcc9a43fa21 (const Tp::UIntList &IDs, int timeout=-1) QDBusPendingReply< Tp::UIntList > GetMessageTypes a00252.html a2747e614a025a292f45085d275d94389 (int timeout=-1) QDBusPendingReply< Tp::PendingTextMessageList > ListPendingMessages a00252.html a0fb3a957973dda8ffc0e40b08f075927 (bool clear, int timeout=-1) QDBusPendingReply Send a00252.html ade1755fc13ce795b85885feb57fc95fd (uint type, const QString &text, int timeout=-1) void LostMessage a00252.html a78f91e1b7a45e1a8ecf9b1d0140830cb () void Received a00252.html a6806c943f87dd4c395ebc6a4179ba47c (uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text) void SendError a00252.html aca02a476054cd4ce1bf624d15b8b7ab7 (uint error, uint timestamp, uint type, const QString &text) void Sent a00252.html a9321e686cb3530918925b8e8ff4ef2d0 (uint timestamp, uint type, const QString &text) ChannelTypeTextInterface a00252.html a31aa761a43ff68c6061a2848a43aeee4 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeTextInterface a00252.html aeccffa348cfbb22d3dfcd30614013dd4 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeTextInterface a00252.html abb6dea8074ad447f69be2495dc44139a (Tp::DBusProxy *proxy) ChannelTypeTextInterface a00252.html a77020011d268a8ed946b61e8a95f0709 (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeTextInterface a00252.html aa72b33d9b66365d5412369fc4e4b3dda (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00252.html acd1fdd895549a7bfc90a4908766a247e () const static QLatin1String staticInterfaceName a00252.html ae2e905c7243ced2cc4edd7d63f3b667e () virtual void invalidate a00252.html a6dd8d58367fe1479c90f1f83eca858bc (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ChannelTypeTubesInterface a00253.html Tp::AbstractInterface QDBusPendingReply< Tp::SupportedSocketMap > GetAvailableStreamTubeTypes a00253.html a343f7d92ab89ae378b50b93497c94dff (int timeout=-1) QDBusPendingReply< Tp::UIntList > GetAvailableTubeTypes a00253.html a26fa7b69effd51e537b951550f01de62 (int timeout=-1) QDBusPendingReply< Tp::TubeInfoList > ListTubes a00253.html ace509ef5db58d877bd3cdc516aa3e27b (int timeout=-1) QDBusPendingReply< uint > OfferDBusTube a00253.html abcb2c8585aa2f4eead2a4f0e788b84c6 (const QString &service, const QVariantMap &parameters, int timeout=-1) QDBusPendingReply< uint > OfferStreamTube a00253.html ae85cc7d27df03535ef2ceb515543c35c (const QString &service, const QVariantMap &parameters, uint addressType, const QDBusVariant &address, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1) QDBusPendingReply< QString > AcceptDBusTube a00253.html afc825ce29cf82648c924d23d3442a2b9 (uint ID, int timeout=-1) QDBusPendingReply< QDBusVariant > AcceptStreamTube a00253.html a142bb5ed60790b480f65b746d23590c4 (uint ID, uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1) QDBusPendingReply CloseTube a00253.html ae4eec264c0877d163e85181320570641 (uint ID, int timeout=-1) QDBusPendingReply< QString > GetDBusTubeAddress a00253.html a86886c34eff72171302131d52a16b354 (uint ID, int timeout=-1) QDBusPendingReply< Tp::DBusTubeMemberList > GetDBusNames a00253.html af33674c47acb3e3f1c9ebf3896127bfe (uint ID, int timeout=-1) QDBusPendingReply< uint, QDBusVariant > GetStreamTubeSocketAddress a00253.html ae29055ee72a9535b26f2980852540cba (uint ID, int timeout=-1) void NewTube a00253.html a48c7fc07621c0d57f7590388a427c1eb (uint ID, uint initiator, uint type, const QString &service, const QVariantMap &parameters, uint state) void TubeStateChanged a00253.html a94177527d6b7ccc3599479cc7b38eb0e (uint ID, uint state) void TubeClosed a00253.html a60baa373a7ff70b3bc3bb3f4ce8fef03 (uint ID) void DBusNamesChanged a00253.html a0d6854bf9e2aa36001fc64235f1c4a66 (uint ID, const Tp::DBusTubeMemberList &added, const Tp::UIntList &removed) void StreamTubeNewConnection a00253.html af0a65a13343ae108c403efbdc73f382f (uint ID, uint handle) ChannelTypeTubesInterface a00253.html a52b0c417efb62c16e144916c50636b93 (const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeTubesInterface a00253.html a1a9b7687b7729ea15036d9ab76c17caf (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ChannelTypeTubesInterface a00253.html a16b819d1d500a7ac71fe12334198a383 (Tp::DBusProxy *proxy) ChannelTypeTubesInterface a00253.html ada9153b036f2ca62ab306c3180bcf2ea (const Tp::Client::ChannelInterface &mainInterface) ChannelTypeTubesInterface a00253.html a8c7ee23ee39be92d0896610bc3e62907 (const Tp::Client::ChannelInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00253.html af88c1235d163d1b79f0b405a199f3e0a () const static QLatin1String staticInterfaceName a00253.html a86162f964468be6ae06cfc5858866510 () virtual void invalidate a00253.html a337c8b4874868ab2cd56242ef1687557 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ClientInterface a00257.html Tp::AbstractInterface ClientInterface a00257.html a1c7d014fb851ce58f66d96e48c5a06fd (const QString &busName, const QString &objectPath, QObject *parent=0) ClientInterface a00257.html a8e8a39b46a759c714521e786e8c16b7c (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ClientInterface a00257.html ae893c2e14859707d653c4bdc51c3ff71 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00257.html ab8a91c2c49eb920784f95eea0cf4393b () const Tp::PendingVariantMap * requestAllProperties a00257.html ad488a2374c6c192b37f13feb79e88729 () const static QLatin1String staticInterfaceName a00257.html a5ced59da54cd89900b76245270bc34ae () virtual void invalidate a00257.html af294cc6e85be530e7e01b84b2ff827b4 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ClientApproverInterface a00255.html Tp::AbstractInterface QDBusPendingReply AddDispatchOperation a00255.html a3c8f2cd19bc110b3674ba42933485031 (const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const QVariantMap &properties, int timeout=-1) ClientApproverInterface a00255.html ac93bc1ec07e7d89f11e790f382ed4afb (const QString &busName, const QString &objectPath, QObject *parent=0) ClientApproverInterface a00255.html a927b52920af0847c6dfc57e15a344705 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ClientApproverInterface a00255.html a8f6cf1077c191640231b1bca4207e89a (Tp::DBusProxy *proxy) ClientApproverInterface a00255.html a1514313b901e5023c36881f5940b2bcc (const Tp::Client::ClientInterface &mainInterface) ClientApproverInterface a00255.html a5cb50beda40db37e1db6a611f611e25c (const Tp::Client::ClientInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyApproverChannelFilter a00255.html a5669e70f97ba8baecbc0ca881c940445 () const Tp::PendingVariantMap * requestAllProperties a00255.html abe4c13f6c3cd3f2d96e28d047e56fed4 () const static QLatin1String staticInterfaceName a00255.html a76621166ffdb2aa44b609537bddcbe56 () virtual void invalidate a00255.html aa35e0edec1be25c8afec41edffe79850 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ClientHandlerInterface a00256.html Tp::AbstractInterface QDBusPendingReply HandleChannels a00256.html a8a5614e91a82ede4761b6ba3e13724a1 (const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const Tp::ObjectPathList &requestsSatisfied, qulonglong userActionTime, const QVariantMap &handlerInfo, int timeout=-1) ClientHandlerInterface a00256.html a65c0d05c01eacbc939576e978c536e35 (const QString &busName, const QString &objectPath, QObject *parent=0) ClientHandlerInterface a00256.html a3ddc3654d064c13942ba4ffb1bb53ee8 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ClientHandlerInterface a00256.html a656ec0dc35846ed8de6360c45a7de376 (Tp::DBusProxy *proxy) ClientHandlerInterface a00256.html af8fc0be64052bb9a1a206dcb77d7f0e1 (const Tp::Client::ClientInterface &mainInterface) ClientHandlerInterface a00256.html adcd41c3fdba1b62b007ae9c11049bb35 (const Tp::Client::ClientInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyHandlerChannelFilter a00256.html a03b88e295fd2eda13a74ca563ef3a612 () const Tp::PendingVariant * requestPropertyBypassApproval a00256.html a9f3c6921da0449f0622784667e5b7df1 () const Tp::PendingVariant * requestPropertyCapabilities a00256.html a192b9fbe2cfc112eb4ad642d49be1aff () const Tp::PendingVariant * requestPropertyHandledChannels a00256.html a90849d477c548974f68940c5a552655c () const Tp::PendingVariantMap * requestAllProperties a00256.html ad43f4d74deb16f76650eddd25d78dca7 () const static QLatin1String staticInterfaceName a00256.html a345475f10315ae8f525907d655283874 () virtual void invalidate a00256.html a4e8818b257c63a8c3a0c1d000243376a (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ClientInterfaceRequestsInterface a00258.html Tp::AbstractInterface QDBusPendingReply AddRequest a00258.html a1329b48da918cd64b9426c6c72641b45 (const QDBusObjectPath &request, const QVariantMap &properties, int timeout=-1) QDBusPendingReply RemoveRequest a00258.html acc1968edab827b728dfffd6b4c873037 (const QDBusObjectPath &request, const QString &error, const QString &message, int timeout=-1) ClientInterfaceRequestsInterface a00258.html a079fc6b1d26170a376e65cbc21ce0e54 (const QString &busName, const QString &objectPath, QObject *parent=0) ClientInterfaceRequestsInterface a00258.html a698f3a6da8e6aa3cc92cf477bb3aecc3 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ClientInterfaceRequestsInterface a00258.html aaf31645a0eed2ab48af0aa91a917fe71 (Tp::DBusProxy *proxy) ClientInterfaceRequestsInterface a00258.html a18905d76f77992f0783eb7c04872efdb (const Tp::Client::ClientInterface &mainInterface) ClientInterfaceRequestsInterface a00258.html ad6fb7d74792e19d756cfc035ae4771da (const Tp::Client::ClientInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00258.html a668f1b4a0b8326f9b30b5f5f1f135b8d () const static QLatin1String staticInterfaceName a00258.html a1e896f5676b36a4cffbcc843d6015139 () virtual void invalidate a00258.html aee40ebdd12bdcda81afc4bc63bb1fc77 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ClientObserverInterface a00259.html Tp::AbstractInterface QDBusPendingReply ObserveChannels a00259.html aa39e6aec3617c1390535b892196391ee (const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const Tp::ObjectPathList &requestsSatisfied, const QVariantMap &observerInfo, int timeout=-1) ClientObserverInterface a00259.html a1764511b2499f753b122856604ee9dc3 (const QString &busName, const QString &objectPath, QObject *parent=0) ClientObserverInterface a00259.html ae5eef9e6dccaf18d352924acfb26af93 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ClientObserverInterface a00259.html ae68920bd0dd07340d4ca617610491e6d (Tp::DBusProxy *proxy) ClientObserverInterface a00259.html a9e99b32acf94e9a2ac7ab683ab8ab01e (const Tp::Client::ClientInterface &mainInterface) ClientObserverInterface a00259.html ab0cc02daf9f5e05e4ba0bd58ba54927c (const Tp::Client::ClientInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyObserverChannelFilter a00259.html aa419ddfd381d4aac1b0072988db60cff () const Tp::PendingVariant * requestPropertyRecover a00259.html a78fc6c230151bfdee93a0c0ef2ca0eff () const Tp::PendingVariant * requestPropertyDelayApprovers a00259.html abb05b659bc798a9799d33f53432ffa97 () const Tp::PendingVariantMap * requestAllProperties a00259.html ae4b93bee74564d07a0f9639015f12a63 () const static QLatin1String staticInterfaceName a00259.html ad6c750e5f82869b1ed3bbe596eec66d5 () virtual void invalidate a00259.html ad2e400ad845c2ef4857c5f89ec0ce625 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionManagerInterface a00311.html Tp::AbstractInterface QDBusPendingReply< Tp::ParamSpecList > GetParameters a00311.html a953a47d6b0340748ff4e4b3b989b172b (const QString &protocol, int timeout=-1) QDBusPendingReply< QStringList > ListProtocols a00311.html a9afa8a04b4dd0ca6a774b3fdd769d174 (int timeout=-1) QDBusPendingReply< QString, QDBusObjectPath > RequestConnection a00311.html a990ff973b2c7d3ea7c418503397358d2 (const QString &protocol, const QVariantMap &parameters, int timeout=-1) void NewConnection a00311.html a117b8eed297620abf0132378deb11870 (const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol) ConnectionManagerInterface a00311.html a4307ec6e7f3d2f41c61d6b9a73d10e6b (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionManagerInterface a00311.html aa5750616d0548197db4f8aeeaa877e7a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionManagerInterface a00311.html a0a19a88f5bebc6da92abdab35ee89d8c (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyProtocols a00311.html a1bea143a1b7008c16bd76e264623f872 () const Tp::PendingVariant * requestPropertyInterfaces a00311.html a82912274c4979257ddea64dd76373206 () const Tp::PendingVariantMap * requestAllProperties a00311.html a982ac20d66f42a53b5afda6a69c96245 () const static QLatin1String staticInterfaceName a00311.html a11cff1e3bb2025f775fa3583dfc9c863 () virtual void invalidate a00311.html a5446fd7a295386ec2a54d40937ecaafd (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ProtocolInterface a00468.html Tp::AbstractInterface QDBusPendingReply< QString > IdentifyAccount a00468.html a9a2882b28278f9bdc357e70e58eb51ee (const QVariantMap &parameters, int timeout=-1) QDBusPendingReply< QString > NormalizeContact a00468.html adecc0d11f8274c02d60ab822c4206692 (const QString &contactID, int timeout=-1) ProtocolInterface a00468.html a8d42bf04bd149b5fc7ae0241d533dc7d (const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterface a00468.html ac2d92dd26fb25776f2a6d33973fcd577 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterface a00468.html ae61d4b554b574cfedd01e62789a2ad0e (Tp::DBusProxy *proxy) ProtocolInterface a00468.html aa201a8b28ce1fc10282b59efe3bdadeb (const Tp::Client::ConnectionManagerInterface &mainInterface) ProtocolInterface a00468.html a6e09f230a1ac3a7e4683776b95f40d83 (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyInterfaces a00468.html a639fd9fe6592d022f24d70b09f9b9c8e () const Tp::PendingVariant * requestPropertyParameters a00468.html a6e62991877b6583b76034f0905f99ab8 () const Tp::PendingVariant * requestPropertyConnectionInterfaces a00468.html af1e7bb73f881efc82b1163208dbf7a01 () const Tp::PendingVariant * requestPropertyRequestableChannelClasses a00468.html a7a32935fcd9f42bdf66db01d0e828544 () const Tp::PendingVariant * requestPropertyVCardField a00468.html a1837bdf61d98c6d78ef5fcbfc2fa1527 () const Tp::PendingVariant * requestPropertyEnglishName a00468.html a124e7172dcc8ef1e129f95ca7bbf225c () const Tp::PendingVariant * requestPropertyIcon a00468.html a77e2839a11843c479474b47bfcf2044c () const Tp::PendingVariant * requestPropertyAuthenticationTypes a00468.html ab3cd67fb9a3d970ed39effd9bf06d9ea () const Tp::PendingVariantMap * requestAllProperties a00468.html a98f7dc156c89a506794e223b42c14639 () const static QLatin1String staticInterfaceName a00468.html ab2e6717a599a3aabbfc8b81759717bfa () virtual void invalidate a00468.html a767a5265a6cbce6b647918f375fa709f (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ProtocolInterfaceAddressingInterface a00470.html Tp::AbstractInterface QDBusPendingReply< QString > NormalizeVCardAddress a00470.html a7e5d861026881f3a8166ffff910e06d3 (const QString &VCardField, const QString &VCardAddress, int timeout=-1) QDBusPendingReply< QString > NormalizeContactURI a00470.html a79088c750137c2a24449c963899252cd (const QString &URI, int timeout=-1) ProtocolInterfaceAddressingInterface a00470.html ab3ac0c8c2d05973e108109bdf3b74670 (const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterfaceAddressingInterface a00470.html a4ac4219366eba255ae094592dda05c52 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterfaceAddressingInterface a00470.html a4f837214fa74ceace80e2b58d0fad92c (Tp::DBusProxy *proxy) ProtocolInterfaceAddressingInterface a00470.html af032f4afe6c8a48cefa21fca878be828 (const Tp::Client::ConnectionManagerInterface &mainInterface) ProtocolInterfaceAddressingInterface a00470.html a63f5d273c06f04544da005083ca551c8 (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAddressableVCardFields a00470.html a721bca967bc332882ffc976be4a43af6 () const Tp::PendingVariant * requestPropertyAddressableURISchemes a00470.html a3164a117332272810ca7f8cc089a219e () const Tp::PendingVariantMap * requestAllProperties a00470.html a238777bf0c352ab646890749a744acb5 () const static QLatin1String staticInterfaceName a00470.html a238dae2975d564211a604d8abcc53d99 () virtual void invalidate a00470.html a2e2fb91a802acb07243e857da962ac34 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ProtocolInterfaceAvatarsInterface a00472.html Tp::AbstractInterface ProtocolInterfaceAvatarsInterface a00472.html a7cc9bcf3f490ff9c99193546e759ba5a (const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterfaceAvatarsInterface a00472.html a3b067300c901370f3d1f0d89e4ee1137 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterfaceAvatarsInterface a00472.html a5b5d36d829c7ea606685bc5061499f14 (Tp::DBusProxy *proxy) ProtocolInterfaceAvatarsInterface a00472.html ae03a483768dd6c011bfe538df64b755f (const Tp::Client::ConnectionManagerInterface &mainInterface) ProtocolInterfaceAvatarsInterface a00472.html a14957c1c2acf7dd09e9d525abc6f2ddd (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySupportedAvatarMIMETypes a00472.html adfb2a42f3bfa971dc7ce8c5118633bbd () const Tp::PendingVariant * requestPropertyMinimumAvatarHeight a00472.html aafca11669a26c467b222031641d06e3e () const Tp::PendingVariant * requestPropertyMinimumAvatarWidth a00472.html a364aa9ec5baddb882e838eb60dfc59e2 () const Tp::PendingVariant * requestPropertyRecommendedAvatarHeight a00472.html a69df4fb1162e0933a70945b2b3f68659 () const Tp::PendingVariant * requestPropertyRecommendedAvatarWidth a00472.html a16c9449f5626c4a119d952ae221b3628 () const Tp::PendingVariant * requestPropertyMaximumAvatarHeight a00472.html a7c0cc351fcde0869b9b1d93a2cce192e () const Tp::PendingVariant * requestPropertyMaximumAvatarWidth a00472.html a4f81600298a104ab6126314f14dd8288 () const Tp::PendingVariant * requestPropertyMaximumAvatarBytes a00472.html a4b74bbad6f78012b3b8973357a8cfdde () const Tp::PendingVariantMap * requestAllProperties a00472.html a0016408fb5327ad44fb676047511965e () const static QLatin1String staticInterfaceName a00472.html a7b00747647e320e13c810c32add4e816 () virtual void invalidate a00472.html ac7fa15abfc0fd3b6e853937c6332b6df (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ProtocolInterfacePresenceInterface a00474.html Tp::AbstractInterface ProtocolInterfacePresenceInterface a00474.html a5f17202710d512b50f531919f5c9eace (const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterfacePresenceInterface a00474.html a424d94feb31c8735d077cd8279237e7a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ProtocolInterfacePresenceInterface a00474.html a22643842022694c5a093aebfc3ef6791 (Tp::DBusProxy *proxy) ProtocolInterfacePresenceInterface a00474.html a4fdba614f146b5af09b007ece08a9833 (const Tp::Client::ConnectionManagerInterface &mainInterface) ProtocolInterfacePresenceInterface a00474.html a834115c052f014fe4191e8217161e79e (const Tp::Client::ConnectionManagerInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyStatuses a00474.html a7d81bcd71a0263f81b0e294f2f2a095e () const Tp::PendingVariantMap * requestAllProperties a00474.html abeca037c97fe79a67514208849403ce0 () const static QLatin1String staticInterfaceName a00474.html a15d7ff8cfe0bfd8663ea1445261cbd6b () virtual void invalidate a00474.html a7e86d344076a015c3a95db851c1320e6 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterface a00267.html Tp::AbstractInterface QDBusPendingReply Connect a00267.html a8ec87139c9a4325c343704ed82dd3f2d (int timeout=-1) QDBusPendingReply Disconnect a00267.html aef7d85a82f1aa3199389a410285baf90 (int timeout=-1) QDBusPendingReply< QStringList > GetInterfaces a00267.html ad8fde8e1a89aba88787d42b9cc2e55be (int timeout=-1) QDBusPendingReply< QString > GetProtocol a00267.html a462020b5ee2c13a52010f0155a325410 (int timeout=-1) QDBusPendingReply< uint > GetSelfHandle a00267.html a584b7c43c4ea3fa60bd540c14abbe432 (int timeout=-1) QDBusPendingReply< uint > GetStatus a00267.html a47330a8f501d1b9634358a8ca6ac3b38 (int timeout=-1) QDBusPendingReply HoldHandles a00267.html a14f4cd0312e8b9c8fcd7ce369a983970 (uint handleType, const Tp::UIntList &handles, int timeout=-1) QDBusPendingReply< QStringList > InspectHandles a00267.html a7327cef43f7cfd1fe915727689d10edd (uint handleType, const Tp::UIntList &handles, int timeout=-1) QDBusPendingReply< Tp::ChannelInfoList > ListChannels a00267.html a09dc48d07a118c5023f7d6b5e633b745 (int timeout=-1) QDBusPendingReply ReleaseHandles a00267.html ad16bd0a3abde0ec1acf33e4a61710737 (uint handleType, const Tp::UIntList &handles, int timeout=-1) QDBusPendingReply< QDBusObjectPath > RequestChannel a00267.html aa47cba559bbbe54b170bec5f3e044801 (const QString &type, uint handleType, uint handle, bool suppressHandler, int timeout=-1) QDBusPendingReply< Tp::UIntList > RequestHandles a00267.html a9358410e2c3e263d29dd071cb1c03ec3 (uint handleType, const QStringList &identifiers, int timeout=-1) QDBusPendingReply AddClientInterest a00267.html a89546da1a6ea2e577a2daf2d2dfd3548 (const QStringList &tokens, int timeout=-1) QDBusPendingReply RemoveClientInterest a00267.html a254dae0090c1b44074475245ffcb1487 (const QStringList &tokens, int timeout=-1) void SelfHandleChanged a00267.html a8fbec1b80a6b878296c888fafab52b1e (uint selfHandle) void SelfContactChanged a00267.html a8f6c3869242cb762dda55c24aa9497f3 (uint selfHandle, const QString &selfID) void NewChannel a00267.html abe677e48098e91a45b7179ccd177a482 (const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler) void ConnectionError a00267.html a7aec7b63ff000b318ded32d9f6f0945e (const QString &error, const QVariantMap &details) void StatusChanged a00267.html a3e844cffb132c2790c1d5e96f49a853d (uint status, uint reason) ConnectionInterface a00267.html a1e01e2e9779ac8222ba91ac0da23593a (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterface a00267.html acdb8a53f409f4558d65a180fb2e70c85 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterface a00267.html a822cb38159f23b6940556b387f2fa1fe (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyInterfaces a00267.html ab4e5441ee3c48b300f363a0a4c09a1da () const Tp::PendingVariant * requestPropertySelfHandle a00267.html a2e9535cf988e586fb1b8afc0c86c10ec () const Tp::PendingVariant * requestPropertySelfID a00267.html ab640c45e935f1348137b335e92780459 () const Tp::PendingVariant * requestPropertyStatus a00267.html a5f9c73f030036f326577b5009a57c1db () const Tp::PendingVariant * requestPropertyHasImmortalHandles a00267.html a565a7efa781442d2c68f678402f16040 () const Tp::PendingVariantMap * requestAllProperties a00267.html a9908829a0d021ec42d03bcf2a73de6f1 () const static QLatin1String staticInterfaceName a00267.html a847ea5450f7bca013f16b6f7096a7502 () virtual void invalidate a00267.html a2b085f9aa591b5ffc1298d477735f470 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceAddressingInterface a00269.html Tp::AbstractInterface QDBusPendingReply< Tp::AddressingNormalizationMap, Tp::ContactAttributesMap > GetContactsByVCardField a00269.html a1c77024816322107a5636197f66604fe (const QString &field, const QStringList &addresses, const QStringList &interfaces, int timeout=-1) QDBusPendingReply< Tp::AddressingNormalizationMap, Tp::ContactAttributesMap > GetContactsByURI a00269.html a8fd89d0a7487e0f1d89e2ec7865f2c98 (const QStringList &URIs, const QStringList &interfaces, int timeout=-1) ConnectionInterfaceAddressingInterface a00269.html aa60d9d6d70331895d53584beb96875f1 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAddressingInterface a00269.html ab5e8e53748cba695f6e5a5903ee0c6bc (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAddressingInterface a00269.html aded89ea91edae9a8f6c344632aa58cae (Tp::DBusProxy *proxy) ConnectionInterfaceAddressingInterface a00269.html ab88cb0180cf5bc69dd0d1db005aa21ff (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceAddressingInterface a00269.html ac14c83c12480756303d8bf135853b65a (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00269.html a236fb80a795d62953b121bcf119c83b1 () const static QLatin1String staticInterfaceName a00269.html ab5dd9b237b1ad44e9aa5f5479d44915a () virtual void invalidate a00269.html af04460eb7d36ee5f3b2625ea4df45709 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceAliasingInterface a00271.html Tp::AbstractInterface QDBusPendingReply< uint > GetAliasFlags a00271.html a501f89d2ecea040095a7c537cdc7fbbc (int timeout=-1) QDBusPendingReply< QStringList > RequestAliases a00271.html a7aff627034e1b5359e29a8acf797d2ac (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< Tp::AliasMap > GetAliases a00271.html a972c44d52b22cfae45ea636430e253db (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply SetAliases a00271.html a23e464b0eaae1d3f05647ecdec2c3200 (const Tp::AliasMap &aliases, int timeout=-1) void AliasesChanged a00271.html a2ae8d24521ee642a53980b29910b3249 (const Tp::AliasPairList &aliases) ConnectionInterfaceAliasingInterface a00271.html aad543259e63e21d66bda29b1be5cbe73 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAliasingInterface a00271.html a66b85433266fa990bb14af577e76e4b0 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAliasingInterface a00271.html a741e07e3e1b86fc744c0a92420cd396d (Tp::DBusProxy *proxy) ConnectionInterfaceAliasingInterface a00271.html abf8d51eb420a76bd6e58a94d4d3b2868 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceAliasingInterface a00271.html a8ddaa0d859219c8e445b47b42e002b18 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00271.html aa6f314f94ac5c9a0e67f89dc4794b2e6 () const static QLatin1String staticInterfaceName a00271.html a0540ccae352b0a584cb6e77dd65c3e16 () virtual void invalidate a00271.html a1fe802db5325be43750cc45195118cb4 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceAnonymityInterface a00273.html Tp::AbstractInterface void AnonymityModesChanged a00273.html a7feaa29a9971f3f04b831e6df3f69ffa (uint modes) ConnectionInterfaceAnonymityInterface a00273.html a93f76517d61861131e4812c29e8cbf35 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAnonymityInterface a00273.html ad956cb14d3d0892152c0c8db878d4b43 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAnonymityInterface a00273.html a9bb037bb47b989d957ecb1fa25207cdc (Tp::DBusProxy *proxy) ConnectionInterfaceAnonymityInterface a00273.html a01f049e4ff41a8d03585eccd01f5bbc4 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceAnonymityInterface a00273.html aaa691262bc60176527ed8291881a573b (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySupportedAnonymityModes a00273.html ab2c5a768c6bb3034c76154209847ba54 () const Tp::PendingVariant * requestPropertyAnonymityMandatory a00273.html a86aed866fdf0242e2193992277e28b87 () const Tp::PendingOperation * setPropertyAnonymityMandatory a00273.html ac6c93db6b528696acc58dc8ebc73569b (bool newValue) Tp::PendingVariant * requestPropertyAnonymityModes a00273.html a9434c9fe5ba25e2586e0de4f644181aa () const Tp::PendingOperation * setPropertyAnonymityModes a00273.html a53d65221108e6e03a0643cbc5fa210d2 (uint newValue) Tp::PendingVariantMap * requestAllProperties a00273.html a55eaef286c368cd283b061668f7e1ef8 () const static QLatin1String staticInterfaceName a00273.html a63c6d6134ebf667221c9caa274aa69e4 () virtual void invalidate a00273.html abc2f422c543ed4e8efd9b761b4368c5b (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceAvatarsInterface a00275.html Tp::AbstractInterface QDBusPendingReply< QStringList, ushort, ushort, ushort, ushort, uint > GetAvatarRequirements a00275.html ac209652ace428086ef55ca482687fa91 (int timeout=-1) QDBusPendingReply< QStringList > GetAvatarTokens a00275.html a9f9948a2f58e04042edec6b34454f8e3 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< Tp::AvatarTokenMap > GetKnownAvatarTokens a00275.html a2272796c9fa2d31801d7f2a85ee0c2a0 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< QByteArray, QString > RequestAvatar a00275.html a4c8f2ede02ee69d8f86ec21b15382dda (uint contact, int timeout=-1) QDBusPendingReply RequestAvatars a00275.html a9a8d97c85504c7ac9ae6d8b75aedb46b (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< QString > SetAvatar a00275.html af176971d77543e1e957e3bafdfc47e1b (const QByteArray &avatar, const QString &MIMEType, int timeout=-1) QDBusPendingReply ClearAvatar a00275.html a6b8aedc11f9edf726af633d883b31224 (int timeout=-1) void AvatarUpdated a00275.html a8a69f40e0a4123a12f1a8c591d9df1a8 (uint contact, const QString &newAvatarToken) void AvatarRetrieved a00275.html affd91b0f5dec9fd534663cea065bfdc0 (uint contact, const QString &token, const QByteArray &avatar, const QString &type) ConnectionInterfaceAvatarsInterface a00275.html aa13f66d74abe98cee19c238523c5828b (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAvatarsInterface a00275.html ad113faa26c54c056ae47f1d31c842421 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceAvatarsInterface a00275.html a1ed509e25b7b8054e55bfd9ace794dfc (Tp::DBusProxy *proxy) ConnectionInterfaceAvatarsInterface a00275.html a551fc522587e7b5830adb5e169b141cc (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceAvatarsInterface a00275.html a404e5cc9770ea3379a9110b9563032d4 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertySupportedAvatarMIMETypes a00275.html a3b4d7a2709e668e465edfd0bd35c146c () const Tp::PendingVariant * requestPropertyMinimumAvatarHeight a00275.html a229fee758ea578bf25ae6dfc9ec3678b () const Tp::PendingVariant * requestPropertyMinimumAvatarWidth a00275.html ab5ebec9103a60d2edcb51d3955c591bb () const Tp::PendingVariant * requestPropertyRecommendedAvatarHeight a00275.html a2b86c90c7fbaad7b1d3eb3b2538e6a15 () const Tp::PendingVariant * requestPropertyRecommendedAvatarWidth a00275.html adb3d928d9fadae6593b115d0767c9783 () const Tp::PendingVariant * requestPropertyMaximumAvatarHeight a00275.html aaba8f5fb118e392f18d66cb4a270efd1 () const Tp::PendingVariant * requestPropertyMaximumAvatarWidth a00275.html af89aa1a9fb9b38594d82f8b3dc6ad9cb () const Tp::PendingVariant * requestPropertyMaximumAvatarBytes a00275.html a24685c00a32c5529f2e8e2d8c7608e8b () const Tp::PendingVariantMap * requestAllProperties a00275.html af29ea61f00847e9170b2403600e8d817 () const static QLatin1String staticInterfaceName a00275.html a4be2a1021e4d6f90c0ba0b25cf86531a () virtual void invalidate a00275.html a4e5c9e2e807f370f4567274b9786ff8c (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceBalanceInterface a00277.html Tp::AbstractInterface void BalanceChanged a00277.html a9678240d9c854a78a85726395cbe91c4 (const Tp::CurrencyAmount &balance) ConnectionInterfaceBalanceInterface a00277.html a0fea2fd262149535d630156c3385fbc0 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceBalanceInterface a00277.html ab7d0fdb4bd44c36d5ee43907e6a328ca (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceBalanceInterface a00277.html a05583a197b42da0afe0b9e292b15aee6 (Tp::DBusProxy *proxy) ConnectionInterfaceBalanceInterface a00277.html a47ee37f9342455837086b0adb8f42cd4 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceBalanceInterface a00277.html a909f0133ff0b45947e15879fa03511a2 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyAccountBalance a00277.html a1857446a85b9180abddfeea462f2789b () const Tp::PendingVariant * requestPropertyManageCreditURI a00277.html a12200610731dd5725a18db0526cc4908 () const Tp::PendingVariantMap * requestAllProperties a00277.html acd9d06cd501846d7480277e10b133b2b () const static QLatin1String staticInterfaceName a00277.html aefae2141a8a59de69a13a5eafb8f7c4b () virtual void invalidate a00277.html acbaa7d45cbfc8adb828d9b0aebbf6cae (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceCapabilitiesInterface a00278.html Tp::AbstractInterface QDBusPendingReply< Tp::CapabilityPairList > AdvertiseCapabilities a00278.html afa8e35f69d2c02ece24b8efef07637ac (const Tp::CapabilityPairList &add, const QStringList &remove, int timeout=-1) QDBusPendingReply< Tp::ContactCapabilityList > GetCapabilities a00278.html a4de20d043cdc61eca0c8ab055fb2db9d (const Tp::UIntList &handles, int timeout=-1) void CapabilitiesChanged a00278.html ad4ee760d1539ee1cdadc2f08592ac6a2 (const Tp::CapabilityChangeList &caps) ConnectionInterfaceCapabilitiesInterface a00278.html a714bcdb261e5eebd403cc84632c1ca01 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceCapabilitiesInterface a00278.html accce0f9b7b6fe3fa80b89e1f5cde2d6a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceCapabilitiesInterface a00278.html a5938f6dc0e61d4bd6e85d90546041616 (Tp::DBusProxy *proxy) ConnectionInterfaceCapabilitiesInterface a00278.html a824630f75302d619f276ddf2eee116a8 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceCapabilitiesInterface a00278.html ab47b148bbdd7eeed704c7415fbc4b2eb (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00278.html a53ded2b4a63247ada57398961b67fae2 () const static QLatin1String staticInterfaceName a00278.html ae018d05e7082f62b9fb21cac11ed9056 () virtual void invalidate a00278.html a6d65fa4d3e07b16dba47c431a6b7d111 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceCellularInterface a00280.html Tp::AbstractInterface void IMSIChanged a00280.html a88c9af7885ef795acdd07ba4c3e9a748 (const QString &IMSI) ConnectionInterfaceCellularInterface a00280.html a89d31c463da71533463aa8f3b32347ab (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceCellularInterface a00280.html aca5b634e499120e189034932f2ef7e28 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceCellularInterface a00280.html a892c42849a41392ac0e6c5fbc52f3e73 (Tp::DBusProxy *proxy) ConnectionInterfaceCellularInterface a00280.html a90a68712f03049de88aa7ded52446748 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceCellularInterface a00280.html afe2066a8106775cffb4786090611984b (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyMessageValidityPeriod a00280.html a557d7738b6669b0ac5a2238c546a989c () const Tp::PendingOperation * setPropertyMessageValidityPeriod a00280.html a9b2fa895cec8e3423dfcd4ef72d0d18d (uint newValue) Tp::PendingVariant * requestPropertyOverrideMessageServiceCentre a00280.html aca0c201eb330dd0f3bd281876f18a9cb () const Tp::PendingOperation * setPropertyOverrideMessageServiceCentre a00280.html a765ccdbe8b0761a59259bebed2b11b9e (bool newValue) Tp::PendingVariant * requestPropertyMessageServiceCentre a00280.html ae32cfc03c4f18331b32f5e49335ddae6 () const Tp::PendingOperation * setPropertyMessageServiceCentre a00280.html aeead06401be8de0767f5f8639e8f64cc (QString newValue) Tp::PendingVariant * requestPropertyIMSI a00280.html a684fa39547294b5e1c39f06f7fa2a7e6 () const Tp::PendingVariant * requestPropertyMessageReducedCharacterSet a00280.html a16e219476e26b245746c66b26426e471 () const Tp::PendingOperation * setPropertyMessageReducedCharacterSet a00280.html a81f8acf5bfda3213ba35590506011fb5 (bool newValue) Tp::PendingVariant * requestPropertyMessageNationalCharacterSet a00280.html afda286edcc3aa2c53b79db8c58167816 () const Tp::PendingOperation * setPropertyMessageNationalCharacterSet a00280.html a462feaf19bc887ea102f83351d1a0aab (QString newValue) Tp::PendingVariantMap * requestAllProperties a00280.html aa5381a17a177a055403d412d96436a43 () const static QLatin1String staticInterfaceName a00280.html af36cb60eb454ca7d7c79e141627b2b5e () virtual void invalidate a00280.html a2b7ebb6cf9038c00136aa1d1f2e822e1 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceClientTypesInterface a00282.html Tp::AbstractInterface QDBusPendingReply< Tp::ContactClientTypes > GetClientTypes a00282.html adfee9ef78f3f9f4f569c01e5dd4aef5c (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< QStringList > RequestClientTypes a00282.html af72cd23c79c5f53e4ede75cd8bdb7f2f (uint contact, int timeout=-1) void ClientTypesUpdated a00282.html abb34363bdafe17f4f4dbcef20b7c4eb7 (uint contact, const QStringList &clientTypes) ConnectionInterfaceClientTypesInterface a00282.html ac243f5452b0d159b51e0d15d242ab610 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceClientTypesInterface a00282.html a53cf7e054216bae8117e4605f08e1d02 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceClientTypesInterface a00282.html ac8dc73bff5ea332b8ee75a8af96a7464 (Tp::DBusProxy *proxy) ConnectionInterfaceClientTypesInterface a00282.html a20fdc3fecf336b3d8b20156b582b6bfd (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceClientTypesInterface a00282.html a0b47b8efc0dcc8e55268f684983ebe0d (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00282.html af5c537f0eb1d37874cc0d0af917aaef4 () const static QLatin1String staticInterfaceName a00282.html af22964dc6eb45c5166122f84718bf1fc () virtual void invalidate a00282.html ae78ace26fb1a50fbded487fbf9c1a5f5 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceContactBlockingInterface a00284.html Tp::AbstractInterface QDBusPendingReply BlockContacts a00284.html ae0051cd9fa800a4e55858451c538b82c (const Tp::UIntList &contacts, bool reportAbusive, int timeout=-1) QDBusPendingReply UnblockContacts a00284.html aa6d4535c4d50651b709791fe9408f98c (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< Tp::HandleIdentifierMap > RequestBlockedContacts a00284.html aa7c04800e2f50b34db4e856b517918e5 (int timeout=-1) void BlockedContactsChanged a00284.html aa9282209c45118dbd020399a23f0d02a (const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts) ConnectionInterfaceContactBlockingInterface a00284.html a1bcb1b19e8c45a4b56642195e11f1fde (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactBlockingInterface a00284.html a1976be7d8708b439a36e8fe5820f9843 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactBlockingInterface a00284.html accb8e4ddbabc1f75afe559f5833b7733 (Tp::DBusProxy *proxy) ConnectionInterfaceContactBlockingInterface a00284.html aa8b34abca1465601178e331146ad0f82 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceContactBlockingInterface a00284.html a2f9ac73d17ef28dface44a5f26e701f6 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyContactBlockingCapabilities a00284.html a2145dc150273c3922fc93340f2c32315 () const Tp::PendingVariantMap * requestAllProperties a00284.html a1a0cec0462113fe0c7d312993f6a937c () const static QLatin1String staticInterfaceName a00284.html a53df3c1bc6cc74b3153393d33512213d () virtual void invalidate a00284.html ab8c049b52fe9f96769a5c9b239cf19b9 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceContactCapabilitiesInterface a00286.html Tp::AbstractInterface QDBusPendingReply UpdateCapabilities a00286.html ad60d35f6a156d335b8864787d1c2455d (const Tp::HandlerCapabilitiesList &handlerCapabilities, int timeout=-1) QDBusPendingReply< Tp::ContactCapabilitiesMap > GetContactCapabilities a00286.html a544b1ab8b5fc97318f181b5f408a4d68 (const Tp::UIntList &handles, int timeout=-1) void ContactCapabilitiesChanged a00286.html af5f0b45de01638c60cec25d90b093b0e (const Tp::ContactCapabilitiesMap &caps) ConnectionInterfaceContactCapabilitiesInterface a00286.html aae9610e633129bb85c8c793523282bdc (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactCapabilitiesInterface a00286.html abe263ec05338badf8663642d76df35c3 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactCapabilitiesInterface a00286.html a5a26307419e42690f0eac5eac0752579 (Tp::DBusProxy *proxy) ConnectionInterfaceContactCapabilitiesInterface a00286.html a3ce3e1abb935c808ef374be03fbaedce (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceContactCapabilitiesInterface a00286.html a06fd3d98c414ce4ecaf20e2ef2b2e625 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00286.html a6627b2232989257782a3aa60e5da9597 () const static QLatin1String staticInterfaceName a00286.html af58216e81295b07579acbb02885a9477 () virtual void invalidate a00286.html af8c69e2d9f417e6d87dd46de927d3d18 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceContactGroupsInterface a00288.html Tp::AbstractInterface QDBusPendingReply SetContactGroups a00288.html a661684a4c1f46920ad079b2c8fbb2f39 (uint contact, const QStringList &groups, int timeout=-1) QDBusPendingReply SetGroupMembers a00288.html a40e5a2d30162c7de0d91efc5a737dfd3 (const QString &group, const Tp::UIntList &members, int timeout=-1) QDBusPendingReply AddToGroup a00288.html a312a437818840f27584827249251db40 (const QString &group, const Tp::UIntList &members, int timeout=-1) QDBusPendingReply RemoveFromGroup a00288.html a4bba3f12920f34999893eda04fa41899 (const QString &group, const Tp::UIntList &members, int timeout=-1) QDBusPendingReply RemoveGroup a00288.html a0df294ab4200151da3a5fa9add9b4e4f (const QString &group, int timeout=-1) QDBusPendingReply RenameGroup a00288.html acf3e3561a4a7b4091da6b2dc6a024b0c (const QString &oldName, const QString &newName, int timeout=-1) void GroupsChanged a00288.html a6f49d7198f08294e32386a6d4fc852f5 (const Tp::UIntList &contact, const QStringList &added, const QStringList &removed) void GroupsCreated a00288.html a74705f328c47b18ff49861268cb65d13 (const QStringList &names) void GroupRenamed a00288.html a1e527edc51e5f45b9d8ab01977418328 (const QString &oldName, const QString &newName) void GroupsRemoved a00288.html a1769d5929eb00e18232d03d3a04735dc (const QStringList &names) ConnectionInterfaceContactGroupsInterface a00288.html a42731c13015df417ee5883839d0bec71 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactGroupsInterface a00288.html ac577462760a6bdcd87d83e04b8fc93ac (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactGroupsInterface a00288.html a7aae6d6ee94842b90a60a36563fe3ceb (Tp::DBusProxy *proxy) ConnectionInterfaceContactGroupsInterface a00288.html a7ec20d2b5d96038c9002bb69806e45f5 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceContactGroupsInterface a00288.html a809d5cdf311c9191d8a73c60fcfc2101 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyDisjointGroups a00288.html adf4401f0359aee93173aaf06ddd3c693 () const Tp::PendingVariant * requestPropertyGroupStorage a00288.html ae6bc0cdfe3a49425416a1891afd69a02 () const Tp::PendingVariant * requestPropertyGroups a00288.html a7f6e343212870fa634e37817d5537da7 () const Tp::PendingVariantMap * requestAllProperties a00288.html a02fc663e73c78ff472a93b4f71038034 () const static QLatin1String staticInterfaceName a00288.html a700a96e2aa9c5dfaed3b596bd5bad025 () virtual void invalidate a00288.html a821becd032850e809f3d54a25c4f9bbc (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceContactInfoInterface a00290.html Tp::AbstractInterface QDBusPendingReply< Tp::ContactInfoMap > GetContactInfo a00290.html a36c3a022e951259ec3b4ed80e7480a33 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply RefreshContactInfo a00290.html ae9f2f896086c04da2519fcceb2d077e6 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< Tp::ContactInfoFieldList > RequestContactInfo a00290.html a0ef865f0ed9137a6087524fb5e6c4a8a (uint contact, int timeout=-1) QDBusPendingReply SetContactInfo a00290.html aff9dc6c63b0673a2f1d5e42fbf3ef8da (const Tp::ContactInfoFieldList &contactInfo, int timeout=-1) void ContactInfoChanged a00290.html a53685c0bb8e50e62e1e6903cd9117fe2 (uint contact, const Tp::ContactInfoFieldList &contactInfo) ConnectionInterfaceContactInfoInterface a00290.html a858818a079b8056b8ef1120db2a12323 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactInfoInterface a00290.html ae22dab06554e4cd9369ade030f18fbbc (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactInfoInterface a00290.html a1e663279de59b76d51ae8642b4c8804b (Tp::DBusProxy *proxy) ConnectionInterfaceContactInfoInterface a00290.html a4c3664981a062f323dffaa92d89514c4 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceContactInfoInterface a00290.html ab988eea21cd116dc2c1234a89c764387 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyContactInfoFlags a00290.html a17472ae90b4fdcafa5954632cdb214a4 () const Tp::PendingVariant * requestPropertySupportedFields a00290.html a942adb12ac99fe7a722fa07f56f3ccdf () const Tp::PendingVariantMap * requestAllProperties a00290.html a0d20a68700f5a55f5e4493f9af9f306a () const static QLatin1String staticInterfaceName a00290.html a014f076039461628f8a4aee678ddac13 () virtual void invalidate a00290.html ad7f88ffca44ce977bdd3fd0c0d0917d2 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceContactListInterface a00292.html Tp::AbstractInterface QDBusPendingReply< Tp::ContactAttributesMap > GetContactListAttributes a00292.html a6e699cca4cc6a1dbaa22209e9a4e8037 (const QStringList &interfaces, bool hold, int timeout=-1) QDBusPendingReply RequestSubscription a00292.html adeae1e380bc1f9bc3342057d571f0b93 (const Tp::UIntList &contacts, const QString &message, int timeout=-1) QDBusPendingReply AuthorizePublication a00292.html a1632effbf59f0e746d32efe66cabae9a (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply RemoveContacts a00292.html a61a7630763ca10bd1bff8fa62e7dd7bb (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply Unsubscribe a00292.html ab2b423b9376ec1c155ccf84e33356b45 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply Unpublish a00292.html a6dfda782fbf203ff4f8d45d4a6206b39 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply Download a00292.html ad6f51368f4d87a17baae74d2a0334519 (int timeout=-1) void ContactListStateChanged a00292.html ae3c1d17246c3ac4ecd47c381c03fec6a (uint contactListState) void ContactsChangedWithID a00292.html ae968799e729aff2d0c5d77946b62a54d (const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals) void ContactsChanged a00292.html ab4f99743d64306ef318f39a9bdc59d20 (const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals) ConnectionInterfaceContactListInterface a00292.html a05e2e822142be17118de349ff38da013 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactListInterface a00292.html a8d596a79288ae28e604e8aaf3714cbe8 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactListInterface a00292.html a1d4df82fd1f68d396a7a3c85266ee9b2 (Tp::DBusProxy *proxy) ConnectionInterfaceContactListInterface a00292.html a86d745f71277bfcf655887afd9a7a100 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceContactListInterface a00292.html a45236d75788776727da3db43a20227d8 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyContactListState a00292.html a14b164c68a4855c311ff338c4981e8ae () const Tp::PendingVariant * requestPropertyContactListPersists a00292.html aeec2a0e273dd855f6da054ccde63a56d () const Tp::PendingVariant * requestPropertyCanChangeContactList a00292.html a4bd8a495bb8c1cb9cd947c85df53c173 () const Tp::PendingVariant * requestPropertyRequestUsesMessage a00292.html aa005471e8039d196cce840344e4c22b5 () const Tp::PendingVariant * requestPropertyDownloadAtConnection a00292.html a6133c9d773edbec143a5946c81ec2f2c () const Tp::PendingVariantMap * requestAllProperties a00292.html a5c475329e6983af0f8a078a8bdbb5c0e () const static QLatin1String staticInterfaceName a00292.html a6da850950e8f95621deade9d32433220 () virtual void invalidate a00292.html abef53119d032bec10e74f408e7a2f1e8 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceContactsInterface a00294.html Tp::AbstractInterface QDBusPendingReply< Tp::ContactAttributesMap > GetContactAttributes a00294.html a43164831038004bb1446384a72a203d6 (const Tp::UIntList &handles, const QStringList &interfaces, bool hold, int timeout=-1) QDBusPendingReply< uint, QVariantMap > GetContactByID a00294.html afd513db3970efeb23a80394a9ac608f6 (const QString &identifier, const QStringList &interfaces, int timeout=-1) ConnectionInterfaceContactsInterface a00294.html a5334da2e8093c760f6f15c2ad2aa5208 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactsInterface a00294.html adedb85733443479e27473ab256b43818 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceContactsInterface a00294.html aa64fcedfe5125d458394aee656744735 (Tp::DBusProxy *proxy) ConnectionInterfaceContactsInterface a00294.html a65e1b66f4f02816fd70a8b3fb7337875 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceContactsInterface a00294.html a2fcaeab467c1dad4ee2ab40244fd5d00 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyContactAttributeInterfaces a00294.html a550882a35e022c74d1ffabae1d530491 () const Tp::PendingVariantMap * requestAllProperties a00294.html ac5d950250b57960e5bb4676c140eb0fd () const static QLatin1String staticInterfaceName a00294.html ad8496c61ac4ba933775ab354f39f2527 () virtual void invalidate a00294.html af05daee1d238e757510fb54a2cc9a433 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceLocationInterface a00296.html Tp::AbstractInterface QDBusPendingReply< Tp::ContactLocations > GetLocations a00296.html a68df6fc70906e05d4b58b176f413854b (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< QVariantMap > RequestLocation a00296.html a3ac061ef9ad9f9cb50035d7fa9621c37 (uint contact, int timeout=-1) QDBusPendingReply SetLocation a00296.html a5571f72a3d63ebebd386152361bc85c7 (const QVariantMap &location, int timeout=-1) void LocationUpdated a00296.html a8736c3a2b6ebf2810c334400d18cd8fe (uint contact, const QVariantMap &location) ConnectionInterfaceLocationInterface a00296.html a17183c2f8334c7c2d00f432914be1e92 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceLocationInterface a00296.html af9096959d21e9c306378bcd2bf42199a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceLocationInterface a00296.html a3525a707d16037cee7b31cde102a8c10 (Tp::DBusProxy *proxy) ConnectionInterfaceLocationInterface a00296.html a4aa2152a597fb766a7e300d8dec089b9 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceLocationInterface a00296.html a44d865536f79da0084843d6fc4a0b92d (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyLocationAccessControlTypes a00296.html a960c688f212710c3088aa7e46418e2df () const Tp::PendingVariant * requestPropertyLocationAccessControl a00296.html a62c31ded187999d76b1086097cb7cd61 () const Tp::PendingOperation * setPropertyLocationAccessControl a00296.html a1e263dbd54efe6c0cde6c951a7f79ef3 (Tp::RichPresenceAccessControl newValue) Tp::PendingVariant * requestPropertySupportedLocationFeatures a00296.html ab1572d82b30c5d099b48b320eb2acede () const Tp::PendingVariantMap * requestAllProperties a00296.html aaedbe81febb51486cd5f7f7dd53228e2 () const static QLatin1String staticInterfaceName a00296.html a1f755183a9c8b50577aa66e332e177a5 () virtual void invalidate a00296.html a587bfa053cefcd3eccc7b1c3416cab12 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceMailNotificationInterface a00298.html Tp::AbstractInterface QDBusPendingReply< Tp::MailURL > RequestInboxURL a00298.html a333c897d9c91cba88178ecc3bb27d341 (int timeout=-1) QDBusPendingReply< Tp::MailURL > RequestMailURL a00298.html a05e2ae66fb837f4914884016fb5bb4bc (const QString &ID, const QDBusVariant &URLData, int timeout=-1) void MailsReceived a00298.html a59c5a94dee389bce17a42732f31308dd (const Tp::MailList &mails) void UnreadMailsChanged a00298.html abbcf0be05caec8db3a8879a1602167e9 (uint count, const Tp::MailList &mailsAdded, const QStringList &mailsRemoved) ConnectionInterfaceMailNotificationInterface a00298.html ad9b23eaa83a9a3428317e2e2dfc3f319 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceMailNotificationInterface a00298.html a6f9d7b3b972ac98c511f8df57ee4e90c (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceMailNotificationInterface a00298.html a175c50bb4ca30c811b35d22690276bb0 (Tp::DBusProxy *proxy) ConnectionInterfaceMailNotificationInterface a00298.html a829aa16104a5ec270abc19bdb037dbc9 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceMailNotificationInterface a00298.html a3e3523ae9f559235738974a68cb1abf8 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyMailNotificationFlags a00298.html a33cbd435129563eae23f28745b2e17c9 () const Tp::PendingVariant * requestPropertyUnreadMailCount a00298.html a6645e265af4559d949cb087fe252b563 () const Tp::PendingVariant * requestPropertyUnreadMails a00298.html a27aca2fc415a9245802656d01c150d2b () const Tp::PendingVariant * requestPropertyMailAddress a00298.html ae3025cca19100dd269141a4173f8bacf () const Tp::PendingVariantMap * requestAllProperties a00298.html ae42b08e8c2f6299698dbbd6063d1a028 () const static QLatin1String staticInterfaceName a00298.html a5ff5822cf57191e9f77edf2652e5aea6 () virtual void invalidate a00298.html a94f112c22a33a6f560b1c6e54e734c98 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfacePowerSavingInterface a00300.html Tp::AbstractInterface QDBusPendingReply SetPowerSaving a00300.html aba066b06b69b3322b43a0173ea25ea02 (bool activate, int timeout=-1) void PowerSavingChanged a00300.html a87b5e39cffdcc4ec1fb826e891d047d9 (bool active) ConnectionInterfacePowerSavingInterface a00300.html a4cefe0b959073066239d530f97019129 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfacePowerSavingInterface a00300.html ae7906113a514d977a454d3d332d3bfc9 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfacePowerSavingInterface a00300.html a3c64a18d64530dfb01b92889e6889051 (Tp::DBusProxy *proxy) ConnectionInterfacePowerSavingInterface a00300.html aea38e632c0c9d18cc5103a20e9416662 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfacePowerSavingInterface a00300.html ac4223aa696aff8c8f53c77a7bcffd370 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyPowerSavingActive a00300.html a712f7768e7b052dc9f802eb82d3739be () const Tp::PendingVariantMap * requestAllProperties a00300.html a3c742bbf0f9b4990a2240ba68624c7f8 () const static QLatin1String staticInterfaceName a00300.html accb9c4775e22a038350ef724b271ba79 () virtual void invalidate a00300.html a7d1c84fa4b5db3647fa3f689f246c85d (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfacePresenceInterface a00301.html Tp::AbstractInterface QDBusPendingReply AddStatus a00301.html a76fe6e017ddd99da31385e938fb6fe5f (const QString &status, const QVariantMap &parameters, int timeout=-1) QDBusPendingReply ClearStatus a00301.html a723ec46a58338dea168b4e97346dc97f (int timeout=-1) QDBusPendingReply< Tp::ContactPresences > GetPresence a00301.html a35c769e34a29bd70be2295b060d9adf2 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply< Tp::StatusSpecMap > GetStatuses a00301.html a018adf15f18776a96c000f0f1a075851 (int timeout=-1) QDBusPendingReply RemoveStatus a00301.html a28e3b65cac66b6e4c00831fd95c658d5 (const QString &status, int timeout=-1) QDBusPendingReply RequestPresence a00301.html a45dcbce1eb47800ce480e9806e470ab0 (const Tp::UIntList &contacts, int timeout=-1) QDBusPendingReply SetLastActivityTime a00301.html ad310549eadbce01519da2e11317479eb (uint time, int timeout=-1) QDBusPendingReply SetStatus a00301.html ada9151b8ccbc8123a8192a9d76ad4c46 (const Tp::MultipleStatusMap &statuses, int timeout=-1) void PresenceUpdate a00301.html ab9f3acab2ffc168c54f60c2339ccdd39 (const Tp::ContactPresences &presence) ConnectionInterfacePresenceInterface a00301.html ac38ac3328a9fd7900c6aec8fc5011c4d (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfacePresenceInterface a00301.html a6d204c3d7357e73d722ced9b85b96d36 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfacePresenceInterface a00301.html ab89bd255de7e88e241814a217bfd4fc2 (Tp::DBusProxy *proxy) ConnectionInterfacePresenceInterface a00301.html a829cd3efb37171e9b1fc2927b6f513e3 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfacePresenceInterface a00301.html a96605696b633e6e48a6bb3f30d224cb4 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00301.html a7fbf0b22bdfb546649dc240e00e8ccc4 () const static QLatin1String staticInterfaceName a00301.html ab5fe238a270f5f25135e6d4570d682a8 () virtual void invalidate a00301.html a1e1919160fd6599717ed6006714516a7 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceRequestsInterface a00303.html Tp::AbstractInterface QDBusPendingReply< QDBusObjectPath, QVariantMap > CreateChannel a00303.html a1c7158c9b48d622551be4ae53f555497 (const QVariantMap &request, int timeout=-1) QDBusPendingReply< bool, QDBusObjectPath, QVariantMap > EnsureChannel a00303.html a3ec57bb2c8404981e4c7ffce83c7f62f (const QVariantMap &request, int timeout=-1) void NewChannels a00303.html aa9fda39dba52244626a87535073b85bd (const Tp::ChannelDetailsList &channels) void ChannelClosed a00303.html a60c133364acb5fe6fc4ec476aceaa390 (const QDBusObjectPath &removed) ConnectionInterfaceRequestsInterface a00303.html a18b4b6b81b42d196f8c17adf6d0d3f8f (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceRequestsInterface a00303.html ab5c9ca703b764048270a3edc3e18fd54 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceRequestsInterface a00303.html a0176e0e91ff8a943e7ea31354a83650f (Tp::DBusProxy *proxy) ConnectionInterfaceRequestsInterface a00303.html a5982b6b04863c694bee4eeeab3bfd133 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceRequestsInterface a00303.html a16e98317700317d69c12d87a55db3123 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyChannels a00303.html a26f0035084927da90dbbfa307bd1d709 () const Tp::PendingVariant * requestPropertyRequestableChannelClasses a00303.html a00ada64383785ded487e93cea7f72e44 () const Tp::PendingVariantMap * requestAllProperties a00303.html ae309194c1456d23f1457791308e4ae51 () const static QLatin1String staticInterfaceName a00303.html a6e7a4212115fd5044ec9d5b567714815 () virtual void invalidate a00303.html a128cb7c36b03dcf696848a9706dd15b9 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceServicePointInterface a00305.html Tp::AbstractInterface void ServicePointsChanged a00305.html a9656242d774513124acafbe3b7f96e25 (const Tp::ServicePointInfoList &servicePoints) ConnectionInterfaceServicePointInterface a00305.html aa23b82c27507a86de530f384adc545e1 (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceServicePointInterface a00305.html a5fd775577c9bfc10ae49365b047aedf7 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceServicePointInterface a00305.html ae328508880e3740aeeddf74e4bd7c169 (Tp::DBusProxy *proxy) ConnectionInterfaceServicePointInterface a00305.html a826306f29e572bebe538afd9ff96b0a8 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceServicePointInterface a00305.html a59aa84a66389ecee41ca3015031b6030 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyKnownServicePoints a00305.html a9e12a38a30383d79b8510603d2d706db () const Tp::PendingVariantMap * requestAllProperties a00305.html a6e73acb7b1c549076fb7aaa49494dd21 () const static QLatin1String staticInterfaceName a00305.html ac8a1be985e3a6a12590d1f00bfc6e548 () virtual void invalidate a00305.html a14b11f7cb8796fb3374e6a3ae001a8ff (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::ConnectionInterfaceSimplePresenceInterface a00307.html Tp::AbstractInterface QDBusPendingReply SetPresence a00307.html ab94bf6f10a2a8ca07b33d159a5ffbe83 (const QString &status, const QString &statusMessage, int timeout=-1) QDBusPendingReply< Tp::SimpleContactPresences > GetPresences a00307.html a471db128011bce253a0c18abeb7bbbef (const Tp::UIntList &contacts, int timeout=-1) void PresencesChanged a00307.html adf045e33db1a908dceed3f279e2d8365 (const Tp::SimpleContactPresences &presence) ConnectionInterfaceSimplePresenceInterface a00307.html afbf65807ff351072a6c42e9b6474371c (const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceSimplePresenceInterface a00307.html a260f1c27ccf82671c7fdc2e2b4ddf02f (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) ConnectionInterfaceSimplePresenceInterface a00307.html a1de7f68435f6c01f978c73fde36fa8e3 (Tp::DBusProxy *proxy) ConnectionInterfaceSimplePresenceInterface a00307.html abc1b658dcf1ef326e9fa5c0e52bbaf00 (const Tp::Client::ConnectionInterface &mainInterface) ConnectionInterfaceSimplePresenceInterface a00307.html a79396b6a34b59a4f774944d0a09c9660 (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyStatuses a00307.html a650155a84c65f55bef60fa0cedc7445b () const Tp::PendingVariant * requestPropertyMaximumStatusMessageLength a00307.html a86935dcdda31e2afe0fa3a2dcd850a3a () const Tp::PendingVariantMap * requestAllProperties a00307.html aed15c8da757fe8e2a70b809fb40a8b91 () const static QLatin1String staticInterfaceName a00307.html adf79fa88e94f9d20fa6c24fdeb6672d1 () virtual void invalidate a00307.html aa67e9fc93932aacb050c7d6b489cc49b (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::DebugInterface a00345.html Tp::AbstractInterface QDBusPendingReply< Tp::DebugMessageList > GetMessages a00345.html aac9b08e373bc0cc94bfa1b74224508ad (int timeout=-1) void NewDebugMessage a00345.html ac2b81507b4d1ce431b4860f139124559 (double time, const QString &domain, uint level, const QString &message) DebugInterface a00345.html a117efc98b88f41ef97ea49fbeac0fd25 (const QString &busName, const QString &objectPath, QObject *parent=0) DebugInterface a00345.html a6400212979f1096cc47df4ef3ff9786c (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) DebugInterface a00345.html a2831ff3879af99c7f9200b169ce35d7e (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertyEnabled a00345.html a68b2127b44ccd4ff4bd1bfaeb6df2ff0 () const Tp::PendingOperation * setPropertyEnabled a00345.html ae7f840ad766891194a944bf0906fdcbd (bool newValue) Tp::PendingVariantMap * requestAllProperties a00345.html a9dff2d6ee9f8133822df43e9ba9193a7 () const static QLatin1String staticInterfaceName a00345.html a80cc0178e605cc6142012a8b9b68dec2 () virtual void invalidate a00345.html a4948b31b45b4a915d8fb4653dac5c440 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::MediaSessionHandlerInterface a00390.html Tp::AbstractInterface QDBusPendingReply Error a00390.html a3f0046e0cad1347b062ed9d3bfae1910 (uint errorCode, const QString &message, int timeout=-1) QDBusPendingReply Ready a00390.html ac40036eb1b5cf7e4018ca4313b05008a (int timeout=-1) void NewStreamHandler a00390.html acff954aa161bcbb3f6e2fc4957caf544 (const QDBusObjectPath &streamHandler, uint ID, uint mediaType, uint direction) MediaSessionHandlerInterface a00390.html a60f68bde864ef4e89a757bb557f67070 (const QString &busName, const QString &objectPath, QObject *parent=0) MediaSessionHandlerInterface a00390.html adc109e17e10678956fb9a191b77a2d3a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) MediaSessionHandlerInterface a00390.html a4dceca7e849b67134571326ea4efce17 (Tp::DBusProxy *proxy) Tp::PendingVariantMap * requestAllProperties a00390.html aef7773e459405417a30040220e89fb7b () const static QLatin1String staticInterfaceName a00390.html a51c95d8ce66ee1244fbd6d09259d3ccb () virtual void invalidate a00390.html ac910fce6905a0712acdae9c59bf84487 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::MediaStreamHandlerInterface a00393.html Tp::AbstractInterface QDBusPendingReply CodecChoice a00393.html ab1eb1ea8dfd8c473dc5c8295d91af09b (uint codecID, int timeout=-1) QDBusPendingReply Error a00393.html a6ffe269363575ba32d9209076ba283fa (uint errorCode, const QString &message, int timeout=-1) QDBusPendingReply NativeCandidatesPrepared a00393.html a7533e24fe29154e6c040c5e78d203ceb (int timeout=-1) QDBusPendingReply NewActiveCandidatePair a00393.html a378d58676a97b4f88207da7de60bd5e3 (const QString &nativeCandidateID, const QString &remoteCandidateID, int timeout=-1) QDBusPendingReply NewActiveTransportPair a00393.html a2157b2c11b48b4ef90041d6b5bc986fd (const QString &nativeCandidateID, const Tp::MediaStreamHandlerTransport &nativeTransport, const QString &remoteCandidateID, const Tp::MediaStreamHandlerTransport &remoteTransport, int timeout=-1) QDBusPendingReply NewNativeCandidate a00393.html a70dccf4f4e31226adc7c50b8e8cbd9d3 (const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports, int timeout=-1) QDBusPendingReply Ready a00393.html a7c35a805de431b425ff41cd7ae3e69b8 (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1) QDBusPendingReply SetLocalCodecs a00393.html a62ab8f562006416a2727628df6b840b1 (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1) QDBusPendingReply StreamState a00393.html aff2a3cb3d9ff321980d8f230442107dc (uint state, int timeout=-1) QDBusPendingReply SupportedCodecs a00393.html aca2771ece7eb32035846050fb9cb3881 (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1) QDBusPendingReply CodecsUpdated a00393.html ac67fd8f6fa5389a04092474458cc7278 (const Tp::MediaStreamHandlerCodecList &codecs, int timeout=-1) QDBusPendingReply HoldState a00393.html acaa1e0a04ef78dbac081291a59ab1e25 (bool held, int timeout=-1) QDBusPendingReply UnholdFailure a00393.html a17b91781196eb8686f41ec1ff8988de7 (int timeout=-1) QDBusPendingReply SupportedFeedbackMessages a00393.html a352e74e4d182f23e5a9e0bc192ef3474 (const Tp::RTCPFeedbackMessageMap &messages, int timeout=-1) QDBusPendingReply SupportedHeaderExtensions a00393.html a0930ccb9c067824d5ee8fa28e0e157e9 (const Tp::RTPHeaderExtensionsList &headerExtensions, int timeout=-1) void AddRemoteCandidate a00393.html a71da3591b07d2e37ebcc199ef2727d68 (const QString &candidateID, const Tp::MediaStreamHandlerTransportList &transports) void Close a00393.html a6c44a70c44fd004fd4b43aae6b8a1b40 () void RemoveRemoteCandidate a00393.html a69193bef66e727de09eacb7862f92190 (const QString &candidateID) void SetActiveCandidatePair a00393.html a81ecf3c9698847a4914a3fb1f1b1c8d8 (const QString &nativeCandidateID, const QString &remoteCandidateID) void SetRemoteCandidateList a00393.html a53b464dcf845795381e1890051ab6327 (const Tp::MediaStreamHandlerCandidateList &remoteCandidates) void SetRemoteCodecs a00393.html a4516248ace8a973431c62eda79db804e (const Tp::MediaStreamHandlerCodecList &codecs) void SetStreamPlaying a00393.html a22fccd4c562256e7afaab7525fe93980 (bool playing) void SetStreamSending a00393.html ac773bc4c94d1006fdc9a1b9ad95e1cff (bool sending) void StartTelephonyEvent a00393.html a7f097ede51dc766cb7479e9c9876efa5 (uchar event) void StartNamedTelephonyEvent a00393.html a2a484bb332305b45e023d60a61aa60b7 (uchar event, uint codecID) void StartSoundTelephonyEvent a00393.html ab1c3114691efd4e260e1a55becf3ce7e (uchar event) void StopTelephonyEvent a00393.html ad3f9985f9cb50463571070ac048c3a0e () void SetStreamHeld a00393.html a0fc9b6f34770c4e7e19ad2085168a81d (bool held) void SetRemoteFeedbackMessages a00393.html a3d81e3cc0e0b7583057e225df094df39 (const Tp::RTCPFeedbackMessageMap &messages) void SetRemoteHeaderExtensions a00393.html a32280b602d749c88bf4f38b84bbca65c (const Tp::RTPHeaderExtensionsList &headerExtensions) MediaStreamHandlerInterface a00393.html a46dd707795a460004b097011a1bfe706 (const QString &busName, const QString &objectPath, QObject *parent=0) MediaStreamHandlerInterface a00393.html a97315efe57079b115f77bd182a6bca18 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) MediaStreamHandlerInterface a00393.html ae03a9bf5ca863e354dce096a5823b561 (Tp::DBusProxy *proxy) Tp::PendingVariant * requestPropertySTUNServers a00393.html a2b072d7a310666b4fceaa135e678c08c () const Tp::PendingVariant * requestPropertyCreatedLocally a00393.html a06b69631c6a0acef4a525857d285bfaf () const Tp::PendingVariant * requestPropertyNATTraversal a00393.html a008303f379a16c11d51ceb2856d456ac () const Tp::PendingVariant * requestPropertyRelayInfo a00393.html af58da5e3b6ef1be48b852d5e61bcc37c () const Tp::PendingVariantMap * requestAllProperties a00393.html abcd670ce4fc78f5baad5a1b538b125cc () const static QLatin1String staticInterfaceName a00393.html a4e7a0e544ba39af67de1d6ab1b4c3210 () virtual void invalidate a00393.html a4f311f1bfc38ab71b364aeae56f2f46c (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::PropertiesInterfaceInterface a00462.html Tp::AbstractInterface QDBusPendingReply< Tp::PropertyValueList > GetProperties a00462.html a1927cdac3d907145f7a9882cdbb650e8 (const Tp::UIntList &properties, int timeout=-1) QDBusPendingReply< Tp::PropertySpecList > ListProperties a00462.html a7836d5040a1042c645d1f96cd84f765d (int timeout=-1) QDBusPendingReply SetProperties a00462.html ae3a46e0395b74f5ea99b43e485907c53 (const Tp::PropertyValueList &properties, int timeout=-1) void PropertiesChanged a00462.html a70d85eda1acf37d41f4e8e3f6d584516 (const Tp::PropertyValueList &properties) void PropertyFlagsChanged a00462.html a90ffb4d172b3e3d06b5c9b6c6cd92d82 (const Tp::PropertyFlagsChangeList &properties) PropertiesInterfaceInterface a00462.html a445c31e3a6a9f90699c443283fec1b1d (const QString &busName, const QString &objectPath, QObject *parent=0) PropertiesInterfaceInterface a00462.html a420cddeca2b1747564118363c6b81197 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) PropertiesInterfaceInterface a00462.html a524fa4127e57ea2253972ba73bb5cdf9 (Tp::DBusProxy *proxy) PropertiesInterfaceInterface a00462.html a30456c2cdf6a231ba206c29fd12eb4ac (const Tp::AbstractInterface &mainInterface) PropertiesInterfaceInterface a00462.html a54e9e6ab502403f96eae819773409c53 (const Tp::AbstractInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00462.html ab808fd4e2512b5e4e0f69c2bf883c058 () const static QLatin1String staticInterfaceName a00462.html a64d117634afe773532adf37904c012b1 () virtual void invalidate a00462.html a82ebdd7d943d1f9de8245148f7cadd90 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::AuthenticationTLSCertificateInterface a00088.html Tp::AbstractInterface QDBusPendingReply Accept a00088.html ad8d84c54a4928a85610af32e2cfe1eb6 (int timeout=-1) QDBusPendingReply Reject a00088.html a47c2ce5d23a40e8f67ae21e6ed10f18b (const Tp::TLSCertificateRejectionList &rejections, int timeout=-1) void Accepted a00088.html aae701f94fef1b62efa5444fde85e50dd () void Rejected a00088.html a5022b77f848b753345912006c33df94b (const Tp::TLSCertificateRejectionList &rejections) AuthenticationTLSCertificateInterface a00088.html a8de5e54aad53b84989ddd6c646a8ce50 (const QString &busName, const QString &objectPath, QObject *parent=0) AuthenticationTLSCertificateInterface a00088.html a4d73a765cf518b4b938e26bf7140c0d2 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) AuthenticationTLSCertificateInterface a00088.html aef138ea6d1a1b8389335207c79bf986e (Tp::DBusProxy *proxy) AuthenticationTLSCertificateInterface a00088.html a8416d29eca6fc8aadba3b047002dccb3 (const Tp::AbstractInterface &mainInterface) AuthenticationTLSCertificateInterface a00088.html ac8799a798e61cc27eff4886c3b367772 (const Tp::AbstractInterface &mainInterface, QObject *parent) Tp::PendingVariant * requestPropertyState a00088.html abc4cd3cad66a106398dda827b074eb5d () const Tp::PendingVariant * requestPropertyRejections a00088.html a46ab8ba7a65afa02bf2145674cea65af () const Tp::PendingVariant * requestPropertyCertificateType a00088.html a4d9653cd0ce74d99a0a14233fdf06ac6 () const Tp::PendingVariant * requestPropertyCertificateChainData a00088.html a2d088f89edb634030c6807b14842d22b () const Tp::PendingVariantMap * requestAllProperties a00088.html a21297bcfdcabc19633222a88bd759732 () const static QLatin1String staticInterfaceName a00088.html afc2979d50a8821cec8149a1f66e3a7ee () virtual void invalidate a00088.html ac14dcbe81d26913244336c26839fe231 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::DBus a00865.html Tp::Client::DBus::DBusDaemonInterface Tp::Client::DBus::IntrospectableInterface Tp::Client::DBus::PeerInterface Tp::Client::DBus::PropertiesInterface Tp::Client::DBus::DBusDaemonInterface a00336.html Tp::AbstractInterface QDBusPendingReply< QString > Hello a00336.html abf91f6b4c2d9a203a7b7b116b1ed67b9 (int timeout=-1) QDBusPendingReply< uint > RequestName a00336.html a1c2f62810300323b9a65e99244c89629 (const QString &name, uint flags, int timeout=-1) QDBusPendingReply< uint > ReleaseName a00336.html ae2f28e59d906fbe9262c410747c04ae9 (const QString &name, int timeout=-1) QDBusPendingReply< uint > StartServiceByName a00336.html a5faac2da91621ae9264b3677fd733474 (const QString &service, uint flags, int timeout=-1) QDBusPendingReply< bool > NameHasOwner a00336.html ac1a4054f2de6e844f7eb09e043d87a6a (const QString &nameToCheck, int timeout=-1) QDBusPendingReply< QStringList > ListNames a00336.html a86e111a1fd7e83cf95e0297f3c18d4d0 (int timeout=-1) QDBusPendingReply< QStringList > ListActivatableNames a00336.html a89b0efab846eaa484c56f5e06a486d22 (int timeout=-1) QDBusPendingReply AddMatch a00336.html a0cb4dbace19b2cf6998462c5ba2c4b38 (const QString &rule, int timeout=-1) QDBusPendingReply RemoveMatch a00336.html a5a1dff1acb49646fe3f5fcbd9211e246 (const QString &rule, int timeout=-1) QDBusPendingReply< QString > GetNameOwner a00336.html ae1076ee8927cbeb98374968126441a68 (const QString &name, int timeout=-1) QDBusPendingReply< QStringList > ListQueuedOwners a00336.html a15cb00d9ade842cb57e7cfe71e0596bb (const QString &name, int timeout=-1) QDBusPendingReply< uint > GetConnectionUnixUser a00336.html a3352cbe9f6fc88d2a06b495716d3f531 (const QString &connectionName, int timeout=-1) QDBusPendingReply< uint > GetConnectionUnixProcessID a00336.html af1b1c3a17cec8c7ec5ea2dd11dd5ead4 (const QString &connectionName, int timeout=-1) QDBusPendingReply< QByteArray > GetConnectionSELinuxSecurityContext a00336.html a2dab4a9797ec950694db157d21cb2cb0 (const QString &connectionName, int timeout=-1) QDBusPendingReply ReloadConfig a00336.html ae41100be2b8a6d960aecc50e8fd87210 (int timeout=-1) QDBusPendingReply< QString > GetId a00336.html a76ec33447e0ed498d347c804ec599c82 (int timeout=-1) void NameOwnerChanged a00336.html a69de8ead31c4cd85f344439cc55888c8 (const QString &name, const QString &oldOwner, const QString &newOwner) void NameLost a00336.html ab39be66da3dde8b798b8a3904368fa7b (const QString &name) void NameAcquired a00336.html ad833cb71cdb66e9b017515a1e48cf63c (const QString &name) DBusDaemonInterface a00336.html ada3fb22d5797701d89a178b1fb9f29d3 (const QString &busName, const QString &objectPath, QObject *parent=0) DBusDaemonInterface a00336.html a1fa41111a13feab6f7953ddd1dd66d02 (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) DBusDaemonInterface a00336.html a6bfc57c16db707969b6d0b04f72ca471 (Tp::DBusProxy *proxy) DBusDaemonInterface a00336.html a5de4b7e83bbbc323966b2b7e918ccf0a (const Tp::AbstractInterface &mainInterface) DBusDaemonInterface a00336.html af6d142b513d6f8578a399b6ea9f2d9aa (const Tp::AbstractInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00336.html abc61a62b5717a277422f330ff91a6155 () const static QLatin1String staticInterfaceName a00336.html a5c01517705abf992475dcc6665114352 () virtual void invalidate a00336.html a705a6bf39fe30cbb3646f73a41262eba (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::DBus::IntrospectableInterface a00379.html Tp::AbstractInterface QDBusPendingReply< QString > Introspect a00379.html ab45c42e8f439dbcb48e50a3d6ffac6cf (int timeout=-1) IntrospectableInterface a00379.html a2917257eca5fc414366ff5c9ec3fad2f (const QString &busName, const QString &objectPath, QObject *parent=0) IntrospectableInterface a00379.html a75f948e820d730e984d6f6f09c97eb9a (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) IntrospectableInterface a00379.html a22ce17260c5645251421a152a8088107 (Tp::DBusProxy *proxy) IntrospectableInterface a00379.html af3622953cbba3701e3fbf375adc4b138 (const Tp::AbstractInterface &mainInterface) IntrospectableInterface a00379.html a6435e1fdb55052cf123edb2abdfa50b2 (const Tp::AbstractInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00379.html a32908974769042980a106e60db28a214 () const static QLatin1String staticInterfaceName a00379.html a4b8fc3cfa04205ec0d11346c64b6820c () virtual void invalidate a00379.html a2149fb31f2b659c7afe91c7c30cb5984 (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::DBus::PeerInterface a00427.html Tp::AbstractInterface QDBusPendingReply Ping a00427.html a0411ad7a2039a28ec2b1f717a4c9aff2 (int timeout=-1) QDBusPendingReply< QString > GetMachineId a00427.html a1ab3831a3b26e408aa29e56e23f84f02 (int timeout=-1) PeerInterface a00427.html acf2f8d325c99ab420ec807c0deecb560 (const QString &busName, const QString &objectPath, QObject *parent=0) PeerInterface a00427.html a25290a5fa5f34efe37be7cc2f258b9de (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) PeerInterface a00427.html a5dc567af22bc50df16f85214fe7121a3 (Tp::DBusProxy *proxy) PeerInterface a00427.html a3cffc55edc3f0726bf6f82b3b38b4ecd (const Tp::AbstractInterface &mainInterface) PeerInterface a00427.html ac8bb2e67ed18570cad4b6f73a00db62f (const Tp::AbstractInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00427.html ae31306b9d3cbab8f098604871af654ab () const static QLatin1String staticInterfaceName a00427.html a45c07d7364a1cee2a8bf880c8286f668 () virtual void invalidate a00427.html a4f99988b2b35281fb34e69fc97efbabe (Tp::DBusProxy *, const QString &, const QString &) Tp::Client::DBus::PropertiesInterface a00461.html Tp::AbstractInterface QDBusPendingReply< QDBusVariant > Get a00461.html a28ffd86c80d0647c2ec112f9216900a5 (const QString &interfaceName, const QString &propertyName, int timeout=-1) QDBusPendingReply Set a00461.html aa837b58666a042a6ad2b4e80702f3a41 (const QString &interfaceName, const QString &propertyName, const QDBusVariant &value, int timeout=-1) QDBusPendingReply< QVariantMap > GetAll a00461.html a524e8e38990b1466cda291dff455aac4 (const QString &interfaceName, int timeout=-1) PropertiesInterface a00461.html a3b047ca34890ab9dca5f45da471d8256 (const QString &busName, const QString &objectPath, QObject *parent=0) PropertiesInterface a00461.html af55d78f1c851f0beabaf6e77416a765f (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0) PropertiesInterface a00461.html a9507e86c9d36c8b8eb4d0d66045900c5 (Tp::DBusProxy *proxy) PropertiesInterface a00461.html a82062c51e2f76c79032ac80ea5b6df24 (const Tp::AbstractInterface &mainInterface) PropertiesInterface a00461.html a11524dcd1520bbd5bc3308a82fb152c2 (const Tp::AbstractInterface &mainInterface, QObject *parent) Tp::PendingVariantMap * requestAllProperties a00461.html ad9ffd4414206a5afe4a8a195725ea634 () const static QLatin1String staticInterfaceName a00461.html aec562b76639a74b3a4318f0eba14b6dc () virtual void invalidate a00461.html a2cb6c27ca000bb82ce0d82f012a16e93 (Tp::DBusProxy *, const QString &, const QString &) Tp::Farstream a00866.html Tp::Farstream::PendingChannel PendingChannel * createChannel a00866.html ac1e305224f48f834db3fd36122a004c3 (const CallChannelPtr &channel) Tp::Farstream::PendingChannel a00431.html Tp::PendingOperation ~PendingChannel a00431.html a7cbe24d5e907d6cd8c8086cb650d9873 () TfChannel * tfChannel a00431.html ae703b4e636fd73bfac644c3440e60f93 () const CallChannelPtr callChannel a00431.html a38312e22da9f7d0b8da1f1ae17419a4c () const friend PendingChannel * createChannel a00431.html af9591e53749061c076b8e48ddef0141e (const CallChannelPtr &channel) Tp::KeyFile a00867.html Tp::ManagerFile a00868.html Tp::Service a00869.html Tp::Service::CallContentAdaptor Tp::Service::CallContentInterfaceDTMFAdaptor Tp::Service::CallInterfaceMuteAdaptor Tp::Service::ChannelAdaptor Tp::Service::ChannelInterfaceAnonymityAdaptor Tp::Service::ChannelInterfaceCallStateAdaptor Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor Tp::Service::ChannelInterfaceChatStateAdaptor Tp::Service::ChannelInterfaceConferenceAdaptor Tp::Service::ChannelInterfaceDTMFAdaptor Tp::Service::ChannelInterfaceDestroyableAdaptor Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor Tp::Service::ChannelInterfaceGroupAdaptor Tp::Service::ChannelInterfaceHoldAdaptor Tp::Service::ChannelInterfaceMediaSignallingAdaptor Tp::Service::ChannelInterfaceMergeableConferenceAdaptor Tp::Service::ChannelInterfaceMessagesAdaptor Tp::Service::ChannelInterfacePasswordAdaptor Tp::Service::ChannelInterfaceRoomAdaptor Tp::Service::ChannelInterfaceRoomConfigAdaptor Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor Tp::Service::ChannelInterfaceSMSAdaptor Tp::Service::ChannelInterfaceSecurableAdaptor Tp::Service::ChannelInterfaceServicePointAdaptor Tp::Service::ChannelInterfaceSplittableAdaptor Tp::Service::ChannelInterfaceSubjectAdaptor Tp::Service::ChannelTypeCallAdaptor Tp::Service::ChannelTypeContactSearchAdaptor Tp::Service::ChannelTypeDBusTubeAdaptor Tp::Service::ChannelTypeFileTransferAdaptor Tp::Service::ChannelTypeRoomListAdaptor Tp::Service::ChannelTypeServerAuthenticationAdaptor Tp::Service::ChannelTypeServerTLSConnectionAdaptor Tp::Service::ChannelTypeStreamTubeAdaptor Tp::Service::ChannelTypeStreamedMediaAdaptor Tp::Service::ChannelTypeTextAdaptor Tp::Service::ConnectionManagerAdaptor Tp::Service::ProtocolAdaptor Tp::Service::ProtocolInterfaceAddressingAdaptor Tp::Service::ProtocolInterfaceAvatarsAdaptor Tp::Service::ProtocolInterfacePresenceAdaptor Tp::Service::ConnectionAdaptor Tp::Service::ConnectionInterfaceAddressingAdaptor Tp::Service::ConnectionInterfaceAliasingAdaptor Tp::Service::ConnectionInterfaceAnonymityAdaptor Tp::Service::ConnectionInterfaceAvatarsAdaptor Tp::Service::ConnectionInterfaceBalanceAdaptor Tp::Service::ConnectionInterfaceCellularAdaptor Tp::Service::ConnectionInterfaceClientTypesAdaptor Tp::Service::ConnectionInterfaceContactBlockingAdaptor Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor Tp::Service::ConnectionInterfaceContactGroupsAdaptor Tp::Service::ConnectionInterfaceContactInfoAdaptor Tp::Service::ConnectionInterfaceContactListAdaptor Tp::Service::ConnectionInterfaceContactsAdaptor Tp::Service::ConnectionInterfaceLocationAdaptor Tp::Service::ConnectionInterfaceMailNotificationAdaptor Tp::Service::ConnectionInterfacePowerSavingAdaptor Tp::Service::ConnectionInterfaceRequestsAdaptor Tp::Service::ConnectionInterfaceServicePointAdaptor Tp::Service::ConnectionInterfaceSimplePresenceAdaptor Tp::Service::CallContentAdaptor a00142.html Tp::AbstractAdaptor void Remove a00142.html aa788d3eb3ca92425f4632264c8a26803 (const QDBusMessage &dbusMessage) void StreamsAdded a00142.html aa84ed93494387fc4cdefb2fa1f9a20f2 (const Tp::ObjectPathList &streams) void StreamsRemoved a00142.html a3ed567d8ebbc560adb95ccc7e6f92adf (const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason) QStringList Interfaces a00142.html ab48f8ea94e8d9343087b403d14822860 () const QString Name a00142.html a105a4f2a90e1dc694464bc5749dc0a52 () const uint Type a00142.html a3f0bd1bd691c2c23f9a341e89543e4e6 () const uint Disposition a00142.html a429ca4820baec7f975a5e8c945512425 () const Tp::ObjectPathList Streams a00142.html a744818dd30fa2ab945642dcc0ac80a08 () const Tp::Service::CallContentInterfaceDTMFAdaptor a00145.html Tp::AbstractAdaptor void StartTone a00145.html a35cf04c2759f656cfd30b45263266be7 (uchar event, const QDBusMessage &dbusMessage) void StopTone a00145.html a9d9a665663ac35fc1703072f4b6b30a6 (const QDBusMessage &dbusMessage) void MultipleTones a00145.html a5871d16846d907b7f3be17eb363430c5 (const QString &tones, const QDBusMessage &dbusMessage) void TonesDeferred a00145.html a2bf729d45003567c650c122ec205b032 (const QString &tones) void SendingTones a00145.html ad2e5a8b5d1aa3471e69fcf13b0cf9002 (const QString &tones) void StoppedTones a00145.html a028489f704f04b5feb8f60b230a7f7a1 (bool cancelled) bool CurrentlySendingTones a00145.html ac5daf0d079231b89c0639c1305789772 () const QString DeferredTones a00145.html ab9b93afc3087a490c7db686922a84260 () const Tp::Service::CallInterfaceMuteAdaptor a00153.html Tp::AbstractAdaptor void RequestMuted a00153.html aa410efc5a84acb147758ee778abfed7e (bool muted, const QDBusMessage &dbusMessage) void MuteStateChanged a00153.html a6567f5e58045d6243b4d03d8f7a7663d (uint muteState) uint LocalMuteState a00153.html a78182a9deed2c6bbd1a92af123bced11 () const Tp::Service::ChannelAdaptor a00172.html Tp::AbstractAdaptor void Close a00172.html abe458ff47e8ee0f8f3323c91bafa4409 (const QDBusMessage &dbusMessage) QString GetChannelType a00172.html aa6387c08a16eddbbe1b97996eb68706a (const QDBusMessage &dbusMessage) uint GetHandle a00172.html ac2559172a718146dcc882a449a6aff98 (const QDBusMessage &dbusMessage, uint &targetHandle) QStringList GetInterfaces a00172.html a89612921dcbfa86cce6ed7d2df7f0574 (const QDBusMessage &dbusMessage) void Closed a00172.html a12a9f23fcd60e988cd9a9d9c2117b70a () QString ChannelType a00172.html a929235fbf04b2c2530dd2c191dcfa6bd () const QStringList Interfaces a00172.html aa61a9a8097cff8dbd7482a82922001ed () const uint TargetHandle a00172.html a21565396763752d220d77aca28bbf64a () const QString TargetID a00172.html ac6cbc434bccb3e17006982373024f647 () const uint TargetHandleType a00172.html ab9e1f4005a9b840289d2d8292c3b413b () const bool Requested a00172.html ae4f42a4ef3f2c2fb7b6cf19aff3cd9ef () const uint InitiatorHandle a00172.html a0b2c2d28c8bc08538cd892e33e92e0b8 () const QString InitiatorID a00172.html a2aa89470e66d7752831fc5474b9edecb () const Tp::Service::ChannelInterfaceAnonymityAdaptor a00185.html Tp::AbstractAdaptor uint AnonymityModes a00185.html a8762891ff508969815200141da8d2fca () const bool AnonymityMandatory a00185.html a7a6e96369cfe24bb70ec1fbea61a3572 () const QString AnonymousID a00185.html a298c13249a39ae5905428f93de5f7b16 () const Tp::Service::ChannelInterfaceCallStateAdaptor a00187.html Tp::AbstractAdaptor Tp::ChannelCallStateMap GetCallStates a00187.html ae33b9eb26a68627dd54a9256ab56e442 (const QDBusMessage &dbusMessage) void CallStateChanged a00187.html a9d380180b6fa97be9de08e75312d2677 (uint contact, uint state) Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor a00189.html Tp::AbstractAdaptor Tp::CaptchaInfoList GetCaptchas a00189.html a4ac194bf359c0913614336ed78f85ef2 (const QDBusMessage &dbusMessage, uint &numberRequired, QString &language) QByteArray GetCaptchaData a00189.html a59ad22d64ad265c63b000622a73b31f4 (uint ID, const QString &mimeType, const QDBusMessage &dbusMessage) void AnswerCaptchas a00189.html ad982c9275c8e3218c61a6adfc33434a4 (const Tp::CaptchaAnswers &answers, const QDBusMessage &dbusMessage) void CancelCaptcha a00189.html a44e1fdc04c01ad091a6776897c963fc2 (uint reason, const QString &debugMessage, const QDBusMessage &dbusMessage) bool CanRetryCaptcha a00189.html a098e2182bd917f61cbaf949712f5f5c8 () const uint CaptchaStatus a00189.html af17f4f7e68818b8796e0ac3582821b7e () const QString CaptchaError a00189.html a03faf9bb81cad0c1f33f7476e86227fe () const QVariantMap CaptchaErrorDetails a00189.html a72ec5cc004fd929e12cca91d39f6c334 () const Tp::Service::ChannelInterfaceChatStateAdaptor a00191.html Tp::AbstractAdaptor void SetChatState a00191.html ab689b32c98e68b9bd91c973505bab7ad (uint state, const QDBusMessage &dbusMessage) void ChatStateChanged a00191.html a4a49ddeb5babc7d628f7a527d711a9cd (uint contact, uint state) Tp::ChatStateMap ChatStates a00191.html aa85a66194bd09951875ffc68a912a8f4 () const Tp::Service::ChannelInterfaceConferenceAdaptor a00193.html Tp::AbstractAdaptor void ChannelMerged a00193.html ab0362c5e1aace058d17311333ce01112 (const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties) void ChannelRemoved a00193.html aa4d91a3f04500c3069ea564f56bd8425 (const QDBusObjectPath &channel, const QVariantMap &details) Tp::ObjectPathList Channels a00193.html a41cefe99b2656d5adc0716190684fd0f () const Tp::ObjectPathList InitialChannels a00193.html ac8489ce39af741352de1b7ea85d7c373 () const Tp::UIntList InitialInviteeHandles a00193.html a9ed7e651ad1fa5966add694ae6f3cc70 () const QStringList InitialInviteeIDs a00193.html a6862aa9a853e427dbed276b63361d10a () const QString InvitationMessage a00193.html a79382485d87c14b77b4c3118d2711cc4 () const Tp::ChannelOriginatorMap OriginalChannels a00193.html a5e53c1a2c15058536537206a75183a6b () const Tp::Service::ChannelInterfaceDTMFAdaptor a00197.html Tp::AbstractAdaptor void StartTone a00197.html aaa83383aab86d8088d51f1d0e856d95d (uint streamID, uchar event, const QDBusMessage &dbusMessage) void StopTone a00197.html aac956ef8f7cd893c436f225edbc87d1f (uint streamID, const QDBusMessage &dbusMessage) void MultipleTones a00197.html ae09d13531be7dd4465e3be79ec24b5d3 (const QString &tones, const QDBusMessage &dbusMessage) void TonesDeferred a00197.html abde82061de177cc12751d87d2c536537 (const QString &tones) void SendingTones a00197.html a79a46abe63ca9d096fdbc9c862eefa3e (const QString &tones) void StoppedTones a00197.html af6d7f5ccd891bea26d5513b47839575c (bool cancelled) bool CurrentlySendingTones a00197.html a56724032e375dee49abe5984dd8272d2 () const QString InitialTones a00197.html a9b0ebb4f8cdf692b96ba32796abcb2db () const QString DeferredTones a00197.html a83e384ba139a2925575e2950aa6ae013 () const Tp::Service::ChannelInterfaceDestroyableAdaptor a00195.html Tp::AbstractAdaptor void Destroy a00195.html aeb0927fb7da278fda6bb6a5b185a3eb3 (const QDBusMessage &dbusMessage) Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor a00199.html Tp::AbstractAdaptor QString ServiceName a00199.html aa3911f10aea818761c5bdca8bf569877 () const void SetServiceName a00199.html a41f71d45b8186f0d7bffb90e0a3fd98c (const QString &newValue) Tp::Metadata Metadata a00199.html aadc9e7b25553262cb8ae2b2166eacadb () const void SetMetadata a00199.html a3d2c81321b189c88885462ef094b45c8 (const Tp::Metadata &newValue) Tp::Service::ChannelInterfaceGroupAdaptor a00201.html Tp::AbstractAdaptor void AddMembers a00201.html af0e8e93a2aebc2e46d234db08cb4693b (const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage) Tp::UIntList GetAllMembers a00201.html a950aa00e569d7becf9e6fb27e3984b56 (const QDBusMessage &dbusMessage, Tp::UIntList &localPending, Tp::UIntList &remotePending) uint GetGroupFlags a00201.html aa175f94d900c736ef11a52dc82dd0d95 (const QDBusMessage &dbusMessage) Tp::UIntList GetHandleOwners a00201.html a1eeca8a26bda844fe46c0c3a26e0919d (const Tp::UIntList &handles, const QDBusMessage &dbusMessage) Tp::UIntList GetLocalPendingMembers a00201.html a959465d45d546a4345076d93a679836e (const QDBusMessage &dbusMessage) Tp::LocalPendingInfoList GetLocalPendingMembersWithInfo a00201.html a388829bb42cb5f050164da677b317405 (const QDBusMessage &dbusMessage) Tp::UIntList GetMembers a00201.html a8ad47ac44c8c141a2ed78521b29be10d (const QDBusMessage &dbusMessage) Tp::UIntList GetRemotePendingMembers a00201.html a15fae7a08c4ce8fb86b3863a04737342 (const QDBusMessage &dbusMessage) uint GetSelfHandle a00201.html af3e62cecb11d1b1899689b8c80db4ec9 (const QDBusMessage &dbusMessage) void RemoveMembers a00201.html a9622ee491f9bb63caaec739ed829d521 (const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage) void RemoveMembersWithReason a00201.html a6e26374a18d72bc8e42cafdef80499bb (const Tp::UIntList &contacts, const QString &message, uint reason, const QDBusMessage &dbusMessage) void HandleOwnersChanged a00201.html a97270a93eed50bcdb15fe113c1c65e33 (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed) void HandleOwnersChangedDetailed a00201.html a885404e52266b5df7fb3b23ad813a72d (const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers) void SelfHandleChanged a00201.html ae9eec0de9428a8696df6dadec2b3800c (uint selfHandle) void SelfContactChanged a00201.html aff7ae0f41b6f5d64fe26ec89a3e73a27 (uint selfHandle, const QString &selfID) void GroupFlagsChanged a00201.html a75449f47c331e8282aaea06ba1a628b8 (uint added, uint removed) void MembersChanged a00201.html a5067fbcd635f99dd2d0a86a8e33e2311 (const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason) void MembersChangedDetailed a00201.html a30708b6745ad36c3678af7ebc9652ba7 (const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details) uint GroupFlags a00201.html ae4c3a315be5f9f56624c4c300c99efb4 () const Tp::HandleOwnerMap HandleOwners a00201.html a5be2a40a9fb4728a51c35b5b1ef9888c () const Tp::LocalPendingInfoList LocalPendingMembers a00201.html a995e2c16e97a0a39b26cdb143cb7d2de () const Tp::UIntList Members a00201.html a03d3328c11e56a60b43d04e51d5f1d39 () const Tp::UIntList RemotePendingMembers a00201.html abf1e846f91bfcd40c2262b6b893468f0 () const uint SelfHandle a00201.html ab12826700062d07092a81c5417988dbf () const Tp::HandleIdentifierMap MemberIdentifiers a00201.html a61efb4777344275a815a2ddc5020c327 () const Tp::Service::ChannelInterfaceHoldAdaptor a00203.html Tp::AbstractAdaptor uint GetHoldState a00203.html a8ddcc1dacc04f7f12f63cbaa0c764400 (const QDBusMessage &dbusMessage, uint &reason) void RequestHold a00203.html ac7dc2115a1ac123a24fdb95e51910355 (bool hold, const QDBusMessage &dbusMessage) void HoldStateChanged a00203.html ace9b9306c6ec632c6954d71931912a4a (uint holdState, uint reason) Tp::Service::ChannelInterfaceMediaSignallingAdaptor a00205.html Tp::AbstractAdaptor Tp::MediaSessionHandlerInfoList GetSessionHandlers a00205.html a0a49cc5e4688a2ea9900a32b585db741 (const QDBusMessage &dbusMessage) void NewSessionHandler a00205.html a1b2fa685fa7910bf79c4c67e9bd998ba (const QDBusObjectPath &sessionHandler, const QString &sessionType) Tp::Service::ChannelInterfaceMergeableConferenceAdaptor a00207.html Tp::AbstractAdaptor void Merge a00207.html a6b67fc936249afbdb9f2fd959bca983b (const QDBusObjectPath &channel, const QDBusMessage &dbusMessage) Tp::Service::ChannelInterfaceMessagesAdaptor a00208.html Tp::AbstractAdaptor QString SendMessage a00208.html a835f4a93d881df426fa397e572bb2fae (const Tp::MessagePartList &message, uint flags, const QDBusMessage &dbusMessage) Tp::MessagePartContentMap GetPendingMessageContent a00208.html a13764e774c731a4129c67f4608b6dbf1 (uint messageID, const Tp::UIntList &parts, const QDBusMessage &dbusMessage) void MessageSent a00208.html a9ed9acc389d69dd36e3a45333eeaa440 (const Tp::MessagePartList &content, uint flags, const QString &messageToken) void PendingMessagesRemoved a00208.html a66bd4e39d28cb0df58cb220499f1dbed (const Tp::UIntList &messageIDs) void MessageReceived a00208.html a1be3bf2af9e5dbecf7d400e565398888 (const Tp::MessagePartList &message) QStringList SupportedContentTypes a00208.html a6d92e96a0751cc902f75695591db6544 () const Tp::UIntList MessageTypes a00208.html a0b40def274d3ecf0583880720c804a9c () const uint MessagePartSupportFlags a00208.html ad8c15f52ff6c1b8d145e8ebcc39a0504 () const Tp::MessagePartListList PendingMessages a00208.html a01f67d0b9af45e16e596161718a60774 () const uint DeliveryReportingSupport a00208.html a4e70ef26d8ff0b9de8a7fa9d0916a1b0 () const Tp::Service::ChannelInterfacePasswordAdaptor a00210.html Tp::AbstractAdaptor uint GetPasswordFlags a00210.html a8699188a5cc5529b216d56b93de0d663 (const QDBusMessage &dbusMessage) bool ProvidePassword a00210.html a612daf467788b64602716c3bda0100c0 (const QString &password, const QDBusMessage &dbusMessage) void PasswordFlagsChanged a00210.html a36487ccd500813386455021c42a1fe14 (uint added, uint removed) Tp::Service::ChannelInterfaceRoomAdaptor a00212.html Tp::AbstractAdaptor QString RoomName a00212.html adc9acdd4504a8863b7a30269a4bcb2b5 () const QString Server a00212.html a1d4d20ff5ae8f0e3ad54ffd279c2ba2d () const QString Creator a00212.html acf5e3d05aae4c30919c2e6b61d6ab18c () const uint CreatorHandle a00212.html a211bdb2dc4cd1ef6b7c75eb5f3902565 () const qlonglong CreationTimestamp a00212.html afe66fc3ab98c1e03df2f4803ba265104 () const Tp::Service::ChannelInterfaceRoomConfigAdaptor a00213.html Tp::AbstractAdaptor void UpdateConfiguration a00213.html a6eb4feecc893a9ca77702284ca72ffa4 (const QVariantMap &properties, const QDBusMessage &dbusMessage) bool Anonymous a00213.html ac330b5bac5cc1bae799777cb1c5f41f1 () const bool InviteOnly a00213.html aef64302fd8d8ed48769f81f1d89fe1c0 () const uint Limit a00213.html a856510ba9bfe50e19712b074e71a2d09 () const bool Moderated a00213.html ae0390e7eb13074037768be071bfa4ab2 () const QString Title a00213.html a1b8e8421c0ddb5a447efb19d53840534 () const QString Description a00213.html a06900a33729a9077e9470b69106f1ea0 () const bool Persistent a00213.html a2d21b644b19d501e98b8a85413e67b29 () const bool Private a00213.html abdcaec26a1d76071fce229f7cac7459d () const bool PasswordProtected a00213.html a7290b1826e01c1a6475236c5f1b26af4 () const QString Password a00213.html ab16018cbb6d5947733fc730aa1928435 () const QString PasswordHint a00213.html a706e6605a57b5f341cd542cc34dc2752 () const bool CanUpdateConfiguration a00213.html a0c77712fc45d1afb76fe4b7a0a34ca47 () const QStringList MutableProperties a00213.html a7d8682eeaa61b971f33ca05db44cd473 () const bool ConfigurationRetrieved a00213.html a64467b10a1d8cfd00d059427ea33ca91 () const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor a00216.html Tp::AbstractAdaptor void StartMechanism a00216.html a0315aa77fe2ae46303ba06b8038f87b5 (const QString &mechanism, const QDBusMessage &dbusMessage) void StartMechanismWithData a00216.html afbc6557994761d9d52fd3caa64d0ea55 (const QString &mechanism, const QByteArray &initialData, const QDBusMessage &dbusMessage) void Respond a00216.html a428b6af8733fc6e500943682fd48d6ae (const QByteArray &responseData, const QDBusMessage &dbusMessage) void AcceptSASL a00216.html a91ab3972ed1a42a185f0f484c410798d (const QDBusMessage &dbusMessage) void AbortSASL a00216.html a598dfecd6e968ee5d59db96d56ed276c (uint reason, const QString &debugMessage, const QDBusMessage &dbusMessage) void SASLStatusChanged a00216.html af92c907e5f00df72138a516c51aa2ae4 (uint status, const QString &reason, const QVariantMap &details) void NewChallenge a00216.html a8fbe0f282a3385138287de33737093ae (const QByteArray &challengeData) QStringList AvailableMechanisms a00216.html ab5d6f4e43ea5d9a4687e7405bd669d0c () const bool HasInitialData a00216.html a5b9a2a01e9542ee6d71aff52371707ad () const bool CanTryAgain a00216.html ad658421274a50950ef8470bbfc3a47ea () const uint SASLStatus a00216.html ae5d309f378529a4496648f9d38b0e8c8 () const QString SASLError a00216.html a41622697bff95c6b2aec67944645ba58 () const QVariantMap SASLErrorDetails a00216.html a2e4b9d18eeb40446971f123eb0801de0 () const QString AuthorizationIdentity a00216.html a45e74bc22cd48668599e953027a50beb () const QString DefaultUsername a00216.html ab0449af7a14edde38ccd07bde7c2c9d3 () const QString DefaultRealm a00216.html a4877ed846697613bc70f6e279140996b () const bool MaySaveResponse a00216.html aeeb46c1fea1639cbe48e5f1efba54e68 () const Tp::Service::ChannelInterfaceSMSAdaptor a00222.html Tp::AbstractAdaptor uint GetSMSLength a00222.html a7cd5a4aa99bf4073d6c38520683652bb (const Tp::MessagePartList &message, const QDBusMessage &dbusMessage, int &remainingCharacters, int &estimatedCost) void SMSChannelChanged a00222.html a6dffe59752b6a1196d613a12ac5e59da (bool SMSChannel) bool Flash a00222.html aef5dff6b2a5ce2efb0221c2b281efa1f () const bool SMSChannel a00222.html a2e26f8ff8f6a956768b8c91807d982be () const Tp::Service::ChannelInterfaceSecurableAdaptor a00218.html Tp::AbstractAdaptor bool Encrypted a00218.html a1f09cb47118246b65434e7a5e9229132 () const bool Verified a00218.html a320bf70839dcac191e738c365dd20be3 () const Tp::Service::ChannelInterfaceServicePointAdaptor a00220.html Tp::AbstractAdaptor void ServicePointChanged a00220.html a1fde3e3d4e4af7a419f5fb63de822ef0 (const Tp::ServicePoint &servicePoint) Tp::ServicePoint InitialServicePoint a00220.html af9afa9b6065005d44a3c7cf3e68a7c94 () const Tp::ServicePoint CurrentServicePoint a00220.html a87866f6b5e32997151c217454070c488 () const Tp::Service::ChannelInterfaceSplittableAdaptor a00224.html Tp::AbstractAdaptor void Split a00224.html a4b170c2765b189c13ea69335fc5d1a89 (const QDBusMessage &dbusMessage) Tp::Service::ChannelInterfaceSubjectAdaptor a00225.html Tp::AbstractAdaptor void SetSubject a00225.html aaf0bf894163f53ff7141c5b43aec52e0 (const QString &subject, const QDBusMessage &dbusMessage) QString Subject a00225.html a10ad27eb633be24972dc73d20b92ac5f () const QString Actor a00225.html a51b2dc200aaf3963700d5da69cd413e4 () const uint ActorHandle a00225.html ad8707adbad45dfb68a560c14eaf6aeca () const qlonglong Timestamp a00225.html a77b285b0fab8b67f7d50fea031018d25 () const bool CanSet a00225.html ab980742ffb90fbe4b5c7a8f8c37420c7 () const Tp::Service::ChannelTypeCallAdaptor a00232.html Tp::AbstractAdaptor void SetRinging a00232.html af363c80a629780e33d178316bfcda744 (const QDBusMessage &dbusMessage) void SetQueued a00232.html abf81c7e1f25915114e6db1686248ab60 (const QDBusMessage &dbusMessage) void Accept a00232.html a021154fa565fde857cad4865c9d5482a (const QDBusMessage &dbusMessage) void Hangup a00232.html a662b08f1ca9969e91fe082e3f00b83d2 (uint reason, const QString &detailedHangupReason, const QString &message, const QDBusMessage &dbusMessage) QDBusObjectPath AddContent a00232.html a25bf24604eeaf866a075d748aa000b17 (const QString &contentName, uint contentType, uint initialDirection, const QDBusMessage &dbusMessage) void ContentAdded a00232.html a7dcbefa1ebd63cb016b9a3e443a91f24 (const QDBusObjectPath &content) void ContentRemoved a00232.html a203a3eee7432246b0a963149bcd96418 (const QDBusObjectPath &content, const Tp::CallStateReason &reason) void CallStateChanged a00232.html a3371047326bd8a2cc2a7c5020efc95a4 (uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails) void CallMembersChanged a00232.html a690fdeb6da432269c4f800d7a6f6c4b7 (const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason) Tp::ObjectPathList Contents a00232.html aee05b46f2086e767d23d71b6196a2e3b () const QVariantMap CallStateDetails a00232.html ac4b9f12996fb551c0c886745efb820fa () const uint CallState a00232.html aacd078094cdb6bc2877f59a099a4ae3f () const uint CallFlags a00232.html a767bb9335a45129468b68adcd9217250 () const Tp::CallStateReason CallStateReason a00232.html a34a3bd0ecd73dcacc04b6ac8d90d2998 () const bool HardwareStreaming a00232.html a1b765ca2d1b27b7d54ba4348671a7cc9 () const Tp::CallMemberMap CallMembers a00232.html aa21663fc521f7203fa1a92e238f8e617 () const Tp::HandleIdentifierMap MemberIdentifiers a00232.html aea81ed1875985303d1bdcf89c4c6c66d () const uint InitialTransport a00232.html acc34cfb03ed01673ec170118976b81d8 () const bool InitialAudio a00232.html add8fee6f6a93611d80cc76582c1407cf () const bool InitialVideo a00232.html a1222695a7e5a5d38b0330de078371bc5 () const QString InitialAudioName a00232.html a2b79e1648675eca32dca7db9394cd387 () const QString InitialVideoName a00232.html a9ab90b79b62d282369ee011c21ee229d () const bool MutableContents a00232.html ad95dbb4c2705b7d1d2404a9aece89a2f () const Tp::Service::ChannelTypeContactSearchAdaptor a00235.html Tp::AbstractAdaptor void Search a00235.html abdca21d791669d47fb3c283ec1536cb9 (const Tp::ContactSearchMap &terms, const QDBusMessage &dbusMessage) void More a00235.html a22569504021be72d61630c78bbbc8601 (const QDBusMessage &dbusMessage) void Stop a00235.html a9184dff81d0356419dfcbf3430a5ee15 (const QDBusMessage &dbusMessage) void SearchStateChanged a00235.html aefb0462a164086e33693b6c4586205a5 (uint state, const QString &error, const QVariantMap &details) void SearchResultReceived a00235.html a19784ebe5d924b14d06a218d840aeb5c (const Tp::ContactSearchResultMap &result) uint SearchState a00235.html a9d4ac3caf22d1e5d84b21c87f0856c91 () const uint Limit a00235.html a31e51a4bf384d76578c0f20db0f23a85 () const QStringList AvailableSearchKeys a00235.html adfde62c5428b5700eecbc49c6e7df2eb () const QString Server a00235.html a5cf87fa0ecc07124891624e35f662cbf () const Tp::Service::ChannelTypeDBusTubeAdaptor a00237.html Tp::AbstractAdaptor QString Offer a00237.html afb0d410e26377e0494e9935d1305dfa5 (const QVariantMap &parameters, uint accesscontrol, const QDBusMessage &dbusMessage) QString Accept a00237.html aef83039f952b9afb726a487ae8648c44 (uint accesscontrol, const QDBusMessage &dbusMessage) void DBusNamesChanged a00237.html a4036c3e0e71e7df64ce19fbca943ae44 (const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed) QString ServiceName a00237.html a026fab2f45f0e74bdf447994f236be35 () const Tp::DBusTubeParticipants DBusNames a00237.html ab2f63ff61e807083fbc9a9c0736a12b4 () const Tp::UIntList SupportedAccessControls a00237.html ab2d1c733dbb44ff4505220c5f62e402d () const Tp::Service::ChannelTypeFileTransferAdaptor a00239.html Tp::AbstractAdaptor QDBusVariant AcceptFile a00239.html ae5c14e5d6d0f53e2ec41c9a340d60faa (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, const QDBusMessage &dbusMessage) QDBusVariant ProvideFile a00239.html a08969b825d3ec204e8387aeaac16258f (uint addressType, uint accessControl, const QDBusVariant &accessControlParam, const QDBusMessage &dbusMessage) void FileTransferStateChanged a00239.html aee8bb4b8c9f57843808f3c74e9217323 (uint state, uint reason) void TransferredBytesChanged a00239.html af7b166da9d2436bd84369ec80784b32a (qulonglong count) void InitialOffsetDefined a00239.html a49b31a4939379aec225cb04e42bb87b4 (qulonglong initialOffset) void URIDefined a00239.html ab262b58c76a2b38fda55bc8fe7063675 (const QString &URI) uint State a00239.html a7ace72dbb75c170069b492d96d700dfd () const QString ContentType a00239.html ad92f474a6240c8c9841f204ba2434fd1 () const QString Filename a00239.html a72d95eedefe7bdc687a4934ea402f29f () const qulonglong Size a00239.html a6d92178228a308200e967c0713cf6a37 () const uint ContentHashType a00239.html a87b4b3f3c40016cfd6ed67cb6d3a33f2 () const QString ContentHash a00239.html aee6210068c68f9e5aee816984082f403 () const QString Description a00239.html a5ce3e866d7cfaf3bc8a528186c343f73 () const qlonglong Date a00239.html a8a16cdd5fa5dc2ec9b823c020aade15c () const Tp::SupportedSocketMap AvailableSocketTypes a00239.html af8546bec0fa0f271ccd56e0cda81e08b () const qulonglong TransferredBytes a00239.html ad09a2a5e0e2a41f71b01284558200ded () const qulonglong InitialOffset a00239.html a4e776fcb020699402fa3a4d3ae5b72b3 () const QString URI a00239.html ae84da3e138f201ebd788af7321f79334 () const void SetURI a00239.html aebec7393092b250babcf71102176b762 (const QString &newValue) QString FileCollection a00239.html acdc0964c44b9dc320d8f550c9876d1d9 () const Tp::Service::ChannelTypeRoomListAdaptor a00241.html Tp::AbstractAdaptor bool GetListingRooms a00241.html a81a17343ee071c1630471a0d3aeacb76 (const QDBusMessage &dbusMessage) void ListRooms a00241.html af0579e982ad7e358296face15a0fc2a4 (const QDBusMessage &dbusMessage) void StopListing a00241.html a8eca6ccba1680f27665f17ec1879603b (const QDBusMessage &dbusMessage) void GotRooms a00241.html a680039a6b9250fa5ca8086d07b31a637 (const Tp::RoomInfoList &rooms) void ListingRooms a00241.html a90c07dc1bb25c2640053ba2354e2af30 (bool listing) QString Server a00241.html ad02231377085a640a0ea1b2c19900c22 () const Tp::Service::ChannelTypeServerAuthenticationAdaptor a00243.html Tp::AbstractAdaptor QString AuthenticationMethod a00243.html a08fdf9f3c67532e592c6147c071bbcd2 () const Tp::Service::ChannelTypeServerTLSConnectionAdaptor a00245.html Tp::AbstractAdaptor QDBusObjectPath ServerCertificate a00245.html a41410dfd5b93643efe1e272b14385fe6 () const QString Hostname a00245.html a452cb80d646c528473bde1e977931aec () const QStringList ReferenceIdentities a00245.html aba87c0327f908757d62c3cf1255ade88 () const Tp::Service::ChannelTypeStreamTubeAdaptor a00249.html Tp::AbstractAdaptor void Offer a00249.html a621a7853448fa20a8a28d5e5cc840ce3 (uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, const QDBusMessage &dbusMessage) QDBusVariant Accept a00249.html aefd72e99d65e8500db17432973f24d9c (uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, const QDBusMessage &dbusMessage) void NewRemoteConnection a00249.html a08d028ec5991ee54d6e5d2ccb4dc0492 (uint handle, const QDBusVariant &connectionParam, uint connectionID) void NewLocalConnection a00249.html a60feed1c50d0a418e7f371fd6f57c298 (uint connectionID) void ConnectionClosed a00249.html a0f2febbd75090d4c997771df49027a21 (uint connectionID, const QString &error, const QString &message) QString Service a00249.html a7235e743a0c54207ecc9aef9509cd2dd () const Tp::SupportedSocketMap SupportedSocketTypes a00249.html a56479cdd93f13ea33a2ee5d097855334 () const Tp::Service::ChannelTypeStreamedMediaAdaptor a00247.html Tp::AbstractAdaptor Tp::MediaStreamInfoList ListStreams a00247.html acb0f9b7cbff53d60dd260fcddb1c711a (const QDBusMessage &dbusMessage) void RemoveStreams a00247.html a2210de1a15009ee9bca49855f14cb18a (const Tp::UIntList &streams, const QDBusMessage &dbusMessage) void RequestStreamDirection a00247.html af1fdb3307d6b1cf3f301de29b7ed12bc (uint streamID, uint streamDirection, const QDBusMessage &dbusMessage) Tp::MediaStreamInfoList RequestStreams a00247.html a2a7b649188aa9d3c77bd675395ad70fb (uint contactHandle, const Tp::UIntList &types, const QDBusMessage &dbusMessage) void StreamAdded a00247.html a546be2192da4e323070c5751a60c7140 (uint streamID, uint contactHandle, uint streamType) void StreamDirectionChanged a00247.html ae07f4755a4ef42b2f28114bf5c9e7342 (uint streamID, uint streamDirection, uint pendingFlags) void StreamError a00247.html a00a0096fa394d03376ca896f474342f8 (uint streamID, uint errorCode, const QString &message) void StreamRemoved a00247.html a782aa76f325a13d592a42298e486cf26 (uint streamID) void StreamStateChanged a00247.html a80317ee0f1477c2c9aedebe4622dc171 (uint streamID, uint streamState) bool InitialAudio a00247.html ad8d82b80f920e281e4bfe681427ca3ad () const bool InitialVideo a00247.html a10ff693e742fe62734a3fb74462031b7 () const bool ImmutableStreams a00247.html ae3b700b2515373f7cb39b23dbad371ed () const Tp::Service::ChannelTypeTextAdaptor a00251.html Tp::AbstractAdaptor void AcknowledgePendingMessages a00251.html a5049215b731ba2a49d699d916ac56a16 (const Tp::UIntList &IDs, const QDBusMessage &dbusMessage) Tp::UIntList GetMessageTypes a00251.html a73e9bbf57a2916de7c9d716062cd5f76 (const QDBusMessage &dbusMessage) Tp::PendingTextMessageList ListPendingMessages a00251.html aa2a1d28395f015be882df9bdb794fc56 (bool clear, const QDBusMessage &dbusMessage) void Send a00251.html a776cc50ea82f0d93086fda1ea69634c2 (uint type, const QString &text, const QDBusMessage &dbusMessage) void LostMessage a00251.html a6ff60c5711a95c5e9fe69422f870561f () void Received a00251.html a652e9da097debd226ee5d9a8ba811d3c (uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text) void SendError a00251.html ad4c577d24c6c5e10a8593ce22e9bd6a9 (uint error, uint timestamp, uint type, const QString &text) void Sent a00251.html a2a4b699ba7210fc0ee144d25ee89df88 (uint timestamp, uint type, const QString &text) Tp::Service::ConnectionManagerAdaptor a00310.html Tp::AbstractAdaptor Tp::ParamSpecList GetParameters a00310.html af9f618176a2409d640567e54f1924ce2 (const QString &protocol, const QDBusMessage &dbusMessage) QStringList ListProtocols a00310.html a1dedb5f60a49fbed163f34646b4d9bb8 (const QDBusMessage &dbusMessage) QString RequestConnection a00310.html ac669c05384dac31adde9d9d81b699de1 (const QString &protocol, const QVariantMap &parameters, const QDBusMessage &dbusMessage, QDBusObjectPath &objectPath) void NewConnection a00310.html aca56b97e09a66ad5cc040c7b528eec5d (const QString &busName, const QDBusObjectPath &objectPath, const QString &protocol) Tp::ProtocolPropertiesMap Protocols a00310.html aaf18304b063e57abf778ea2f02489d8d () const QStringList Interfaces a00310.html af1c1c7014ccba454f468ef027f2564ff () const Tp::Service::ProtocolAdaptor a00466.html Tp::AbstractAdaptor QString IdentifyAccount a00466.html a73a495f12a13f2f062fc99eda96931f6 (const QVariantMap &parameters, const QDBusMessage &dbusMessage) QString NormalizeContact a00466.html aaa98c67a8d0376742c411995efeaa724 (const QString &contactID, const QDBusMessage &dbusMessage) QStringList Interfaces a00466.html a1f5210eb59b779e18d5610e47091465f () const Tp::ParamSpecList Parameters a00466.html a45e03df75a5162b09b086801f5f6a1b0 () const QStringList ConnectionInterfaces a00466.html a2322e0cc9f45dfcfca20ed8f591b2991 () const Tp::RequestableChannelClassList RequestableChannelClasses a00466.html ab31a6245633da84dbd0a7e83796af5c0 () const QString VCardField a00466.html a76bba2c9a53c1ce99cf0e97ac8ebaf64 () const QString EnglishName a00466.html a6ae1f857a1e0c7069dcc12f3c0458847 () const QString Icon a00466.html a3e648df1142e0435af2633eb91db61b9 () const QStringList AuthenticationTypes a00466.html a2a329d11809c32ea0ecfe7076bcce31e () const Tp::Service::ProtocolInterfaceAddressingAdaptor a00469.html Tp::AbstractAdaptor QString NormalizeVCardAddress a00469.html a988a0b2196f410c7956f9ac5254e923c (const QString &VCardField, const QString &VCardAddress, const QDBusMessage &dbusMessage) QString NormalizeContactURI a00469.html abb74f687d1ffd21a35222312c417b6f0 (const QString &URI, const QDBusMessage &dbusMessage) QStringList AddressableVCardFields a00469.html a294d2f77e54b67fe5712edba14405a6a () const QStringList AddressableURISchemes a00469.html a630c319b59fdeee7a4c7fadbbc73a621 () const Tp::Service::ProtocolInterfaceAvatarsAdaptor a00471.html Tp::AbstractAdaptor QStringList SupportedAvatarMIMETypes a00471.html a6bb45ec4ce2437f7906ad412df854491 () const uint MinimumAvatarHeight a00471.html a0732e6e1d253bc5ccb645a7012ea836f () const uint MinimumAvatarWidth a00471.html a435a41f408b15985c0d91d084fbc79a0 () const uint RecommendedAvatarHeight a00471.html a4e793ab308710740a4966742f8bee9d7 () const uint RecommendedAvatarWidth a00471.html a3c465c888ce725857df10521a2fcb971 () const uint MaximumAvatarHeight a00471.html ac4d9894a3c35769084d3ab94115689a6 () const uint MaximumAvatarWidth a00471.html aa17f212ce6a621aa1d7d701cf28e8063 () const uint MaximumAvatarBytes a00471.html a1fad0f65671089949ca93d0158c3467e () const Tp::Service::ProtocolInterfacePresenceAdaptor a00473.html Tp::AbstractAdaptor Tp::SimpleStatusSpecMap Statuses a00473.html ae03267e3d4c00a485b32c11bb67016e2 () const Tp::Service::ConnectionAdaptor a00264.html Tp::AbstractAdaptor void Connect a00264.html a73d382c521c3d13f754c58aaf608b1a1 (const QDBusMessage &dbusMessage) void Disconnect a00264.html a52ac237af003cfe2c6c265018a282045 (const QDBusMessage &dbusMessage) QStringList GetInterfaces a00264.html adb5de4e9c623f15a9513c9bdca06af62 (const QDBusMessage &dbusMessage) QString GetProtocol a00264.html afd5d0f39fae9e95cbea828aca5b62826 (const QDBusMessage &dbusMessage) uint GetSelfHandle a00264.html a725953ef692a67efb6a1a2e7065d1903 (const QDBusMessage &dbusMessage) uint GetStatus a00264.html a8f6a1f098395b03631a05fe6e69e4862 (const QDBusMessage &dbusMessage) void HoldHandles a00264.html ae59fb61c0a67fff79580d28c84091a6b (uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage) QStringList InspectHandles a00264.html ae387d1bb41caa0f1890c054684d06448 (uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage) Tp::ChannelInfoList ListChannels a00264.html a329e6d5611e842077931b0364378b142 (const QDBusMessage &dbusMessage) void ReleaseHandles a00264.html af688481268f0b4e7b497474e34e83d60 (uint handleType, const Tp::UIntList &handles, const QDBusMessage &dbusMessage) QDBusObjectPath RequestChannel a00264.html a59fa2dbee7ad1bbd854e34ecfd15c6ac (const QString &type, uint handleType, uint handle, bool suppressHandler, const QDBusMessage &dbusMessage) Tp::UIntList RequestHandles a00264.html adcbed892eea08521f17763b55a27b74f (uint handleType, const QStringList &identifiers, const QDBusMessage &dbusMessage) void AddClientInterest a00264.html aa96ea0fcc143228d3c18815dbff4c12a (const QStringList &tokens, const QDBusMessage &dbusMessage) void RemoveClientInterest a00264.html a2e8cfa449b235907983613213b8ce08d (const QStringList &tokens, const QDBusMessage &dbusMessage) void SelfHandleChanged a00264.html af95583076bbcdb5449ec8c3fcab0e1f0 (uint selfHandle) void SelfContactChanged a00264.html af97de448a4282ecf71b68a79d292ad56 (uint selfHandle, const QString &selfID) void NewChannel a00264.html aea4e8e241627c693edb2339e0e339d1c (const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler) void ConnectionError a00264.html a69fcb6c0b5080a1fbe16bed8b86cdffa (const QString &error, const QVariantMap &details) void StatusChanged a00264.html a00e7dd6801d8c74f4279b77319ef1f4e (uint status, uint reason) QStringList Interfaces a00264.html a4234438154f08235c73bcd5772f35f80 () const uint SelfHandle a00264.html a62af90aeef74affe5c91a7933d2c6a0b () const QString SelfID a00264.html a446e2c697b9d37243fd312a2708b9ad8 () const uint Status a00264.html a0568760aae07e3c83cf9a9ae1a088d03 () const bool HasImmortalHandles a00264.html aac1feec178caa481985ca628b0314988 () const Tp::Service::ConnectionInterfaceAddressingAdaptor a00268.html Tp::AbstractAdaptor Tp::AddressingNormalizationMap GetContactsByVCardField a00268.html ae0c8a39d759975700e4d1cb2eaf9d540 (const QString &field, const QStringList &addresses, const QStringList &interfaces, const QDBusMessage &dbusMessage, Tp::ContactAttributesMap &attributes) Tp::AddressingNormalizationMap GetContactsByURI a00268.html a8c72a89d7797226d0ef9ffdf17cf65db (const QStringList &URIs, const QStringList &interfaces, const QDBusMessage &dbusMessage, Tp::ContactAttributesMap &attributes) Tp::Service::ConnectionInterfaceAliasingAdaptor a00270.html Tp::AbstractAdaptor uint GetAliasFlags a00270.html af63e26536ebbebbc4c01d851920990f7 (const QDBusMessage &dbusMessage) QStringList RequestAliases a00270.html a6801e935a5752ab20e1e9186063d75bf (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) Tp::AliasMap GetAliases a00270.html ae66ef3db9ec1526f1164e02e38b4c13b (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void SetAliases a00270.html a262dc8281d009532596596a98ebc716c (const Tp::AliasMap &aliases, const QDBusMessage &dbusMessage) void AliasesChanged a00270.html a7c02c627811dd4b1a32be8df3df04f4f (const Tp::AliasPairList &aliases) Tp::Service::ConnectionInterfaceAnonymityAdaptor a00272.html Tp::AbstractAdaptor void AnonymityModesChanged a00272.html a40e7c72afef7796237635cbcd74b6282 (uint modes) uint SupportedAnonymityModes a00272.html aa97450169ad2fcfd1019020e95b80fa0 () const bool AnonymityMandatory a00272.html ae794fcec524410802f98a6b8e2deb632 () const void SetAnonymityMandatory a00272.html ae7342a7ad9db4fdd6d79623a1abb9f8d (const bool &newValue) uint AnonymityModes a00272.html ab12dca9278a4d96b4801b9fa513fa470 () const void SetAnonymityModes a00272.html ac37745ea752844a2d773bd75f9cca231 (const uint &newValue) Tp::Service::ConnectionInterfaceAvatarsAdaptor a00274.html Tp::AbstractAdaptor QStringList GetAvatarRequirements a00274.html ac595f09727b7f6af6aaef483b8c328a8 (const QDBusMessage &dbusMessage, ushort &minWidth, ushort &minHeight, ushort &maxWidth, ushort &maxHeight, uint &maxBytes) QStringList GetAvatarTokens a00274.html aee8589b82b1fff518d4c94016a0b590d (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) Tp::AvatarTokenMap GetKnownAvatarTokens a00274.html a2e7840b1b9bb5142f8ca7d7df05b73e9 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) QByteArray RequestAvatar a00274.html a278e656ce047bccc5277bf540e504edc (uint contact, const QDBusMessage &dbusMessage, QString &MIMEType) void RequestAvatars a00274.html a8f85752de6192274cc6840aa7892ec3b (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) QString SetAvatar a00274.html a5546eb53cdb8c060d26a9fa891d6fc54 (const QByteArray &avatar, const QString &MIMEType, const QDBusMessage &dbusMessage) void ClearAvatar a00274.html ae4bb411b21cba14817d6f22a78b9de19 (const QDBusMessage &dbusMessage) void AvatarUpdated a00274.html ace0be5db89bb67067861c095c6136daa (uint contact, const QString &newAvatarToken) void AvatarRetrieved a00274.html a70940f8a541fd48898423cc16910a8ed (uint contact, const QString &token, const QByteArray &avatar, const QString &type) QStringList SupportedAvatarMIMETypes a00274.html ab8bd06f5a01e71c91819558072c754e1 () const uint MinimumAvatarHeight a00274.html ad1e5af7d0e09f0a7850fb6b231b5690a () const uint MinimumAvatarWidth a00274.html ab2409fc5f1145f43d13d5afa2fa1bc4c () const uint RecommendedAvatarHeight a00274.html a46416ecc7df2f67086e415f046908e16 () const uint RecommendedAvatarWidth a00274.html afbd3c91be4bfaa9ac022ae53d7b8946b () const uint MaximumAvatarHeight a00274.html acc9d8e34f9a97d8524079b0046c24547 () const uint MaximumAvatarWidth a00274.html ade13e6095c77cbe7101d3735cf7fa39b () const uint MaximumAvatarBytes a00274.html a516f0e5a82b535544045640702bafae1 () const Tp::Service::ConnectionInterfaceBalanceAdaptor a00276.html Tp::AbstractAdaptor void BalanceChanged a00276.html ac693f76d2be7c744f833928332744001 (const Tp::CurrencyAmount &balance) Tp::CurrencyAmount AccountBalance a00276.html ab2524c889359fdffb934fafbcd2a2c83 () const QString ManageCreditURI a00276.html a477691a2a85cdbe66db635ff9fcb4679 () const Tp::Service::ConnectionInterfaceCellularAdaptor a00279.html Tp::AbstractAdaptor void IMSIChanged a00279.html abdf0cfdbfe96b145389bf23f7592ebc6 (const QString &IMSI) uint MessageValidityPeriod a00279.html a895336718d6b12f7d189c8d683a145d4 () const void SetMessageValidityPeriod a00279.html a8bdccc66bc0b28043c82ae973bcce921 (const uint &newValue) bool OverrideMessageServiceCentre a00279.html a086aa44c98ed68009926a50c68d9702b () const void SetOverrideMessageServiceCentre a00279.html a5a9c3f33e563757dc59cb8b8f3ba05e6 (const bool &newValue) QString MessageServiceCentre a00279.html a2fa7be22824456f10d9c410ed61a032f () const void SetMessageServiceCentre a00279.html a877ac7d2d9b7c407656743da309f83d6 (const QString &newValue) QString IMSI a00279.html ab5f9b102782d7cb41894342dc4937f4b () const bool MessageReducedCharacterSet a00279.html a9f1a4deb6988221e38c8626a3b02f15d () const void SetMessageReducedCharacterSet a00279.html a4e3ca7ae7c3e12b96c8e5566a2d492af (const bool &newValue) QString MessageNationalCharacterSet a00279.html a23c2d51ba587ad90f15a7b479e5df2a8 () const void SetMessageNationalCharacterSet a00279.html a3061d050feafc99e0a94ae5355b53f57 (const QString &newValue) Tp::Service::ConnectionInterfaceClientTypesAdaptor a00281.html Tp::AbstractAdaptor Tp::ContactClientTypes GetClientTypes a00281.html af077994b54351b63f52b0ab96abd894b (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) QStringList RequestClientTypes a00281.html a616196591dbb04d9077c96385b4a4e71 (uint contact, const QDBusMessage &dbusMessage) void ClientTypesUpdated a00281.html a0a64b2105ff55c3bdbe1553c0a466eef (uint contact, const QStringList &clientTypes) Tp::Service::ConnectionInterfaceContactBlockingAdaptor a00283.html Tp::AbstractAdaptor void BlockContacts a00283.html a32d3ec832aae0c872a51ce0edb1a9ae1 (const Tp::UIntList &contacts, bool reportAbusive, const QDBusMessage &dbusMessage) void UnblockContacts a00283.html a78b8c0e091576c6be7680c5b22d95f7b (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) Tp::HandleIdentifierMap RequestBlockedContacts a00283.html a4d8f1289b0504fc6f1aa8c058303fb43 (const QDBusMessage &dbusMessage) void BlockedContactsChanged a00283.html a39dd90f0bc0f3569e67ffee83705bc2b (const Tp::HandleIdentifierMap &blockedContacts, const Tp::HandleIdentifierMap &unblockedContacts) uint ContactBlockingCapabilities a00283.html ac10a94c3fcacb1e26f5020ea79ec4217 () const Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor a00285.html Tp::AbstractAdaptor void UpdateCapabilities a00285.html a4a56c07e28527959423ae59d52034db8 (const Tp::HandlerCapabilitiesList &handlerCapabilities, const QDBusMessage &dbusMessage) Tp::ContactCapabilitiesMap GetContactCapabilities a00285.html a8894d1a8a0228bd9437a7630261a5407 (const Tp::UIntList &handles, const QDBusMessage &dbusMessage) void ContactCapabilitiesChanged a00285.html a6ceb8682c551ec4929f12f5db6590323 (const Tp::ContactCapabilitiesMap &caps) Tp::Service::ConnectionInterfaceContactGroupsAdaptor a00287.html Tp::AbstractAdaptor void SetContactGroups a00287.html a055cae4b56365a0090741186298dc93f (uint contact, const QStringList &groups, const QDBusMessage &dbusMessage) void SetGroupMembers a00287.html ac90dda4e5752a32d1c159a04491eff0c (const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage) void AddToGroup a00287.html a7d2f6e90407482ae67c1f07cdffef3f7 (const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage) void RemoveFromGroup a00287.html a614800a64aa91c75f8d7990c0abf5c2d (const QString &group, const Tp::UIntList &members, const QDBusMessage &dbusMessage) void RemoveGroup a00287.html a9e7470132dfbbd770e003e907ed035ee (const QString &group, const QDBusMessage &dbusMessage) void RenameGroup a00287.html a72cabf8e97b2b2b636f7292510dd8fee (const QString &oldName, const QString &newName, const QDBusMessage &dbusMessage) void GroupsChanged a00287.html aefba8763dad7b8f087ca49380a2af2bd (const Tp::UIntList &contact, const QStringList &added, const QStringList &removed) void GroupsCreated a00287.html aa78bce9ae1cdf964f6b2352c2ed69078 (const QStringList &names) void GroupRenamed a00287.html a9954baaa5dd332be0caf4b9ce7ba39a2 (const QString &oldName, const QString &newName) void GroupsRemoved a00287.html ade0252f35d2653dc110adff193e10ecc (const QStringList &names) bool DisjointGroups a00287.html ac09f770d0a46219011093db1edac8871 () const uint GroupStorage a00287.html a9ba7807ee4d01db23ecfa94e5f75e352 () const QStringList Groups a00287.html acbf2ec6aa7d24f923402ad7420da8e3b () const Tp::Service::ConnectionInterfaceContactInfoAdaptor a00289.html Tp::AbstractAdaptor Tp::ContactInfoMap GetContactInfo a00289.html a3ef38111b5702a200169647e69f0b467 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void RefreshContactInfo a00289.html afc90c4131bd598d7b4512078dfad5791 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) Tp::ContactInfoFieldList RequestContactInfo a00289.html a6d0d01b7e476d761b5d303df15ebdf47 (uint contact, const QDBusMessage &dbusMessage) void SetContactInfo a00289.html a533cbd62609371240cc1e3905025029c (const Tp::ContactInfoFieldList &contactInfo, const QDBusMessage &dbusMessage) void ContactInfoChanged a00289.html ae106f2cb71292c6ba5de1adc69af00f8 (uint contact, const Tp::ContactInfoFieldList &contactInfo) uint ContactInfoFlags a00289.html ac4b637d921980cce81393a25988ca5eb () const Tp::FieldSpecs SupportedFields a00289.html a294f7c25e87a9d956616d78c7a553b0c () const Tp::Service::ConnectionInterfaceContactListAdaptor a00291.html Tp::AbstractAdaptor Tp::ContactAttributesMap GetContactListAttributes a00291.html aa32344dfae592d1aa872a097d70b5ff2 (const QStringList &interfaces, bool hold, const QDBusMessage &dbusMessage) void RequestSubscription a00291.html a832a0ed4ccc80a7a8e72f12b611b56ed (const Tp::UIntList &contacts, const QString &message, const QDBusMessage &dbusMessage) void AuthorizePublication a00291.html a12ad76890652ebb4e9cc6f4523651b58 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void RemoveContacts a00291.html a0c7e22a6f96ad50d33422edf0c469a1d (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void Unsubscribe a00291.html a9b5c8d5ad939dc86ec627082eb23e5f7 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void Unpublish a00291.html a2eca9eb144622e1c22a3a4ade4431e05 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void Download a00291.html ac73b12ca1acc57f016919904fc40b5f4 (const QDBusMessage &dbusMessage) void ContactListStateChanged a00291.html a0d8088c2894c82c594e989b0b780b2f8 (uint contactListState) void ContactsChangedWithID a00291.html aba0efb54374778348745a3f62f4d6ab2 (const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals) void ContactsChanged a00291.html a45e1c50cb591aefaecc0c79521d4f42f (const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals) uint ContactListState a00291.html aaafef76085010d488e9c502b48dc189b () const bool ContactListPersists a00291.html ac60e198b7fed33a43d4e20bf611193f2 () const bool CanChangeContactList a00291.html a749b27e022afc69abb66ee21c6f0f185 () const bool RequestUsesMessage a00291.html a2fd4d3b9d5ee2e5de3d0f3af2ceb5378 () const bool DownloadAtConnection a00291.html a6fa4d2e5b0d68811c2c729626c9d8523 () const Tp::Service::ConnectionInterfaceContactsAdaptor a00293.html Tp::AbstractAdaptor Tp::ContactAttributesMap GetContactAttributes a00293.html a78579dbdc2b38b3f869e7818cbacd112 (const Tp::UIntList &handles, const QStringList &interfaces, bool hold, const QDBusMessage &dbusMessage) uint GetContactByID a00293.html ab5c9cee56572be08a691cd99f547447c (const QString &identifier, const QStringList &interfaces, const QDBusMessage &dbusMessage, QVariantMap &attributes) QStringList ContactAttributeInterfaces a00293.html abb09304f13604008fdc8cea90c827758 () const Tp::Service::ConnectionInterfaceLocationAdaptor a00295.html Tp::AbstractAdaptor Tp::ContactLocations GetLocations a00295.html a65eb8922fe737d0e43b9f19086eda93c (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) QVariantMap RequestLocation a00295.html a69a49d552fad0a07232dfba4aeeb90b0 (uint contact, const QDBusMessage &dbusMessage) void SetLocation a00295.html a6b13abf3ee78bf37886b8a274aa63be3 (const QVariantMap &location, const QDBusMessage &dbusMessage) void LocationUpdated a00295.html a7dfd8a62b2f0bab17b41d81825878965 (uint contact, const QVariantMap &location) Tp::UIntList LocationAccessControlTypes a00295.html a7b0b280403eef6cb34d2ce186f6ed20d () const Tp::RichPresenceAccessControl LocationAccessControl a00295.html a7ce48d546d8ff529bc8e50b62975b886 () const void SetLocationAccessControl a00295.html ab07800568faa9e147bdca1e0dff3fbb1 (const Tp::RichPresenceAccessControl &newValue) uint SupportedLocationFeatures a00295.html a04356e63f56ffefbea293a92736d18e6 () const Tp::Service::ConnectionInterfaceMailNotificationAdaptor a00297.html Tp::AbstractAdaptor Tp::MailURL RequestInboxURL a00297.html a3222133768dc4b6580fc723a9ab4ee26 (const QDBusMessage &dbusMessage) Tp::MailURL RequestMailURL a00297.html a9e131ecf2c9e759e15db6d571be3fdfb (const QString &ID, const QDBusVariant &URLData, const QDBusMessage &dbusMessage) void MailsReceived a00297.html a1eeac0403539aba66dfbd6acb34d3f26 (const Tp::MailList &mails) void UnreadMailsChanged a00297.html a43345a783ac0683c306ce916b4b7ed97 (uint count, const Tp::MailList &mailsAdded, const QStringList &mailsRemoved) uint MailNotificationFlags a00297.html ad7a51c608d02bf7b5be576646008df75 () const uint UnreadMailCount a00297.html a13cb55f92ad329efeb3b1f0e9e11a61a () const Tp::MailList UnreadMails a00297.html acec33470246c2e525fdafc597817e542 () const QString MailAddress a00297.html afbc80a3b662ddb4664291f76c08d185e () const Tp::Service::ConnectionInterfacePowerSavingAdaptor a00299.html Tp::AbstractAdaptor void SetPowerSaving a00299.html a604afa50da24d3aba3af833ca1d7ab8d (bool activate, const QDBusMessage &dbusMessage) void PowerSavingChanged a00299.html a04249e87ac861b2790c5d07ef559d7f1 (bool active) bool PowerSavingActive a00299.html a0f2763ff74e44ffaf61f97d0559d4b56 () const Tp::Service::ConnectionInterfaceRequestsAdaptor a00302.html Tp::AbstractAdaptor QDBusObjectPath CreateChannel a00302.html a9ebb03048a0ad8f40f96acfb94ec8b9a (const QVariantMap &request, const QDBusMessage &dbusMessage, QVariantMap &properties) bool EnsureChannel a00302.html ab8f7b243fa766fa7d3339a3029e4c22c (const QVariantMap &request, const QDBusMessage &dbusMessage, QDBusObjectPath &channel, QVariantMap &properties) void NewChannels a00302.html a91fce08f8d8c53d8985b0e747232f226 (const Tp::ChannelDetailsList &channels) void ChannelClosed a00302.html a66c4d4eda4ff64eeda677314507e38fc (const QDBusObjectPath &removed) Tp::ChannelDetailsList Channels a00302.html aa79e6d571601ed2ba5cc356dfcfdbd24 () const Tp::RequestableChannelClassList RequestableChannelClasses a00302.html a11b33c2d54de19029255b7da08a17d60 () const Tp::Service::ConnectionInterfaceServicePointAdaptor a00304.html Tp::AbstractAdaptor void ServicePointsChanged a00304.html a7d223760064ffcc71cca5442ad5b3a6a (const Tp::ServicePointInfoList &servicePoints) Tp::ServicePointInfoList KnownServicePoints a00304.html aa6abaef40b42161e7a5f7b5ffd83eb0c () const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor a00306.html Tp::AbstractAdaptor void SetPresence a00306.html a0fd2e16d577fca803bb14bf5678c3172 (const QString &status, const QString &statusMessage, const QDBusMessage &dbusMessage) Tp::SimpleContactPresences GetPresences a00306.html a1a5a3d7455ce9f39b84c8ab385d3e8d3 (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage) void PresencesChanged a00306.html af578ac2cc7fdfd455bc6f45a9cead333 (const Tp::SimpleContactPresences &presence) Tp::SimpleStatusSpecMap Statuses a00306.html a72b4b5bf9c14398ef8b42e2f70608cb8 () const uint MaximumStatusMessageLength a00306.html ab1f0d68c58eee29f0d9746886483fb3d () const _gen /home/kaffeine/devel/gsoc/release/build/TelepathyQt/_gen/ dir_da638a168252e2c60116c394abd6721a.html cli-account-body.hpp cli-account-manager-body.hpp cli-account-manager.h cli-account.h cli-call-content-body.hpp cli-call-content-media-description-body.hpp cli-call-content-media-description.h cli-call-content.h cli-call-stream-body.hpp cli-call-stream-endpoint-body.hpp cli-call-stream-endpoint.h cli-call-stream.h cli-channel-body.hpp cli-channel-dispatch-operation-body.hpp cli-channel-dispatch-operation.h cli-channel-dispatcher-body.hpp cli-channel-dispatcher.h cli-channel-request-body.hpp cli-channel-request.h cli-channel.h cli-client-body.hpp cli-client.h cli-connection-body.hpp cli-connection-manager-body.hpp cli-connection-manager.h cli-connection.h cli-dbus-body.hpp cli-dbus.h cli-debug-receiver-body.hpp cli-debug-receiver.h cli-media-session-handler-body.hpp cli-media-session-handler.h cli-media-stream-handler-body.hpp cli-media-stream-handler.h cli-properties-body.hpp cli-properties.h cli-tls-certificate-body.hpp cli-tls-certificate.h build/TelepathyQt/_gen/constants.h svc-call.cpp svc-call.h svc-channel.cpp svc-channel.h svc-connection-manager.cpp svc-connection-manager.h svc-connection.cpp svc-connection.h types-body.hpp build/TelepathyQt/_gen/types.h build /home/kaffeine/devel/gsoc/release/build/ dir_873b20b8174f0d08bad0230936669cc5.html TelepathyQt Farstream /home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/Farstream/ dir_a7efd3693e0e01cb2055bca70ce6963d.html Farstream/channel.cpp Farstream/channel.h telepathy-qt/TelepathyQt/Farstream/global.h TelepathyQt /home/kaffeine/devel/gsoc/release/build/TelepathyQt/ dir_6a0ad83b73160d92798e0df0d91b99f2.html _gen build/TelepathyQt/global.h TelepathyQt /home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/ dir_d31e7bccdbb8c214182f9922ec6f9b9e.html Farstream abstract-adaptor.cpp abstract-adaptor.h abstract-client.cpp abstract-client.h abstract-interface.cpp abstract-interface.h account-capability-filter.h account-factory.cpp account-factory.h account-filter.h account-manager.cpp account-manager.h account-property-filter.cpp account-property-filter.h account-set.cpp account-set.h account.cpp account.h and-filter.h avatar.cpp avatar.h base-call.cpp base-call.h base-channel.cpp base-channel.h base-connection-manager.cpp base-connection-manager.h base-connection.cpp base-connection.h base-protocol.cpp base-protocol.h call-channel.cpp call-channel.h call-content-media-description.cpp call-content-media-description.h call-content.cpp call-content.h call-stream-endpoint.cpp call-stream-endpoint.h call-stream.cpp call-stream.h callbacks.h capabilities-base.cpp capabilities-base.h captcha-authentication.cpp captcha-authentication.h captcha.cpp captcha.h channel-class-features.h channel-class-spec.cpp channel-class-spec.h channel-dispatch-operation.cpp channel-dispatch-operation.h channel-dispatcher.cpp channel-dispatcher.h channel-factory.cpp channel-factory.h channel-request.cpp channel-request.h channel.cpp channel.h client-registrar.cpp client-registrar.h client.cpp client.h connection-capabilities.cpp connection-capabilities.h connection-factory.cpp connection-factory.h connection-lowlevel.h connection-manager-lowlevel.h connection-manager.cpp connection-manager.h connection.cpp connection.h telepathy-qt/TelepathyQt/constants.h contact-capabilities.cpp contact-capabilities.h contact-factory.cpp contact-factory.h contact-manager-roster.cpp contact-manager.cpp contact-manager.h contact-messenger.cpp contact-messenger.h contact-search-channel.cpp contact-search-channel.h contact.cpp contact.h dbus-error.cpp dbus-error.h dbus-object.cpp dbus-object.h dbus-proxy-factory.cpp dbus-proxy-factory.h dbus-proxy.cpp dbus-proxy.h dbus-service.cpp dbus-service.h dbus-tube-channel.cpp dbus-tube-channel.h dbus.cpp dbus.h debug-receiver.cpp debug-receiver.h debug.cpp debug.h feature.cpp feature.h file-transfer-channel-creation-properties.cpp file-transfer-channel-creation-properties.h file-transfer-channel.cpp file-transfer-channel.h filter.h fixed-feature-factory.cpp fixed-feature-factory.h functors.h generic-capability-filter.h generic-property-filter.h handled-channel-notifier.cpp handled-channel-notifier.h incoming-dbus-tube-channel.cpp incoming-dbus-tube-channel.h incoming-file-transfer-channel.cpp incoming-file-transfer-channel.h incoming-stream-tube-channel.cpp incoming-stream-tube-channel.h key-file.cpp key-file.h location-info.cpp location-info.h manager-file.cpp manager-file.h media-session-handler.cpp media-session-handler.h media-stream-handler.cpp media-stream-handler.h message-content-part.cpp message-content-part.h message.cpp message.h method-invocation-context.h not-filter.h object.cpp object.h optional-interface-factory.cpp optional-interface-factory.h or-filter.h outgoing-dbus-tube-channel.cpp outgoing-dbus-tube-channel.h outgoing-file-transfer-channel.cpp outgoing-file-transfer-channel.h outgoing-stream-tube-channel.cpp outgoing-stream-tube-channel.h pending-account.cpp pending-account.h pending-captchas.cpp pending-captchas.h pending-channel-request.cpp pending-channel-request.h pending-channel.cpp pending-channel.h pending-connection.cpp pending-connection.h pending-contact-attributes.cpp pending-contact-attributes.h pending-contact-info.cpp pending-contact-info.h pending-contacts.cpp pending-contacts.h pending-dbus-tube-connection.cpp pending-dbus-tube-connection.h pending-debug-message-list.cpp pending-debug-message-list.h pending-handles.cpp pending-handles.h pending-operation.cpp pending-operation.h pending-ready.cpp pending-ready.h pending-send-message.cpp pending-send-message.h pending-stream-tube-connection.cpp pending-stream-tube-connection.h pending-string-list.cpp pending-string-list.h pending-string.cpp pending-string.h pending-variant-map.cpp pending-variant-map.h pending-variant.cpp pending-variant.h presence.cpp presence.h profile-manager.cpp profile-manager.h profile.cpp profile.h properties.cpp properties.h protocol-info.cpp protocol-info.h protocol-parameter.cpp protocol-parameter.h readiness-helper.cpp readiness-helper.h ready-object.cpp ready-object.h referenced-handles.cpp referenced-handles.h requestable-channel-class-spec.cpp requestable-channel-class-spec.h room-list-channel.cpp room-list-channel.h server-authentication-channel.cpp server-authentication-channel.h service-types.h shared-ptr.h simple-call-observer.cpp simple-call-observer.h simple-observer.cpp simple-observer.h simple-pending-operations.h simple-stream-tube-handler.cpp simple-stream-tube-handler.h simple-text-observer.cpp simple-text-observer.h stream-tube-channel.cpp stream-tube-channel.h stream-tube-client.cpp stream-tube-client.h stream-tube-server.cpp stream-tube-server.h streamed-media-channel.cpp streamed-media-channel.h test-backdoors.cpp test-backdoors.h text-channel.cpp text-channel.h tls-certificate.cpp tls-certificate.h tube-channel.cpp tube-channel.h types.cpp telepathy-qt/TelepathyQt/types.h utils.cpp utils.h index Telepathy-Qt a00059 Introduction getting_started examples developer_resources telepathy-qt-0.9.6.1/doc/html/a00300.html0000644000175100017520000007275712530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfacePowerSavingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetPowerSaving (bool activate, int timeout=-1)
 

Signals

void PowerSavingChanged (bool active)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfacePowerSavingInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfacePowerSavingInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfacePowerSavingInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfacePowerSavingInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfacePowerSavingInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyPowerSavingActive () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.PowerSaving".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfacePowerSavingInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfacePowerSavingInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfacePowerSavingInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfacePowerSavingInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfacePowerSavingInterface::ConnectionInterfacePowerSavingInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfacePowerSavingInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfacePowerSavingInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.PowerSaving", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfacePowerSavingInterface::requestPropertyPowerSavingActive ( ) const
inline

Asynchronous getter for the remote object property PowerSavingActive of type bool.

True if protocol-level power saving features are currently activated. This property can be changed using the SetPowerSaving() method; change notifications is via the PowerSavingChanged() signal.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfacePowerSavingInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterfacePowerSavingInterface::SetPowerSaving ( bool  activate,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetPowerSaving on the remote object.

Turn power saving mode on or off.

Depending on the device's activity level, the connection can have its power saving mode turned on or off.

Errors raised by this method indicate that power saving could not be enabled, which SHOULD NOT generally be treated as fatal.

If the CM cannot switch modes, either because of the protocol (NotImplemented), or because of the service (NotAvailable), Mission Control (or whoever manages this) should be made aware. The error could be ignored or, in the extreme, be fascist and disconnect the account.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
activate
True if protocol-level power saving features should be activated; 
False if they should be de-activated.
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfacePowerSavingInterface::PowerSavingChanged ( bool  active)
signal

Represents the signal PowerSavingChanged on the remote object.

The PowerSavingActive property changed.
Parameters
active
The new state of the power saving feature.
void Tp::Client::ConnectionInterfacePowerSavingInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01271.html0000644000175100017520000002220412530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceServicePointInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceServicePointInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceServicePointInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceServicePointInterface
ChannelInterfaceServicePointInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceServicePointInterface
ChannelInterfaceServicePointInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceServicePointInterface
ChannelInterfaceServicePointInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceServicePointInterfaceexplicit
ChannelInterfaceServicePointInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceServicePointInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceServicePointInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceServicePointInterfaceinline
requestPropertyCurrentServicePoint() const Tp::Client::ChannelInterfaceServicePointInterfaceinline
requestPropertyInitialServicePoint() const Tp::Client::ChannelInterfaceServicePointInterfaceinline
ServicePointChanged(const Tp::ServicePoint &servicePoint)Tp::Client::ChannelInterfaceServicePointInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceServicePointInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00814_source.html0000644000175100017520000002001012530426257022506 0ustar00kaffeinekaffeine00000000000000 room-list-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
room-list-channel.h
1 
23 #ifndef _TelepathyQt_room_list_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_room_list_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 
32 namespace Tp
33 {
34 
35 class TP_QT_EXPORT RoomListChannel : public Channel
36 {
37  Q_OBJECT
38  Q_DISABLE_COPY(RoomListChannel)
39 
40 public:
41  static RoomListChannelPtr create(const ConnectionPtr &connection,
42  const QString &objectPath, const QVariantMap &immutableProperties);
43 
44  virtual ~RoomListChannel();
45 
46 protected:
47  RoomListChannel(const ConnectionPtr &connection, const QString &objectPath,
48  const QVariantMap &immutableProperties,
49  const Feature &coreFeature = Channel::FeatureCore);
50 
51 private:
52  struct Private;
53  friend struct Private;
54  Private *mPriv;
55 };
56 
57 } // Tp
58 
59 #endif
static const Feature FeatureCore
Definition: channel.h:58
The Feature class represents a feature that can be enabled on demand.
Definition: feature.h:41
The RoomListChannel class represents a Telepathy Channel of type RoomList.
Definition: room-list-channel.h:35
The Channel class represents a Telepathy channel.
Definition: channel.h:51


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01016.html0000644000175100017520000002315512530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatelessDBusProxy Member List

This is the complete list of members for Tp::StatelessDBusProxy, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
StatelessDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatelessDBusProxy
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatelessDBusProxy()Tp::StatelessDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00870.html0000644000175100017520000002453612530426257021151 0ustar00kaffeinekaffeine00000000000000 Utility string constants
   Home · All Classes · All Namespaces · Modules · Functions · Files
Utility string constants

Macros

#define TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE
 
#define TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE
 
#define TP_QT_CONNECTION_BUS_NAME_BASE
 
#define TP_QT_CONNECTION_OBJECT_PATH_BASE
 
#define TP_QT_ACCOUNT_MANAGER_BUS_NAME
 
#define TP_QT_ACCOUNT_MANAGER_OBJECT_PATH
 
#define TP_QT_CHANNEL_DISPATCHER_BUS_NAME
 
#define TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH
 
#define TP_QT_ACCOUNT_OBJECT_PATH_BASE
 
#define TP_QT_DEBUG_OBJECT_PATH
 

Detailed Description

Utility constants which aren't generated from the specification but are useful for working with the Telepathy protocol.

Macro Definition Documentation

#define TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE

The prefix for a connection manager's bus name, to which the CM's name (e.g. "gabble") should be appended.

#define TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE

The prefix for a connection manager's object path, to which the CM's name (e.g. "gabble") should be appended.

#define TP_QT_CONNECTION_BUS_NAME_BASE

The prefix for a connection's bus name, to which the CM's name (e.g. "gabble"), the protocol (e.g. "jabber") and an element representing the account should be appended.

#define TP_QT_CONNECTION_OBJECT_PATH_BASE

The prefix for a connection's object path, to which the CM's name (e.g. "gabble"), the protocol (e.g. "jabber") and an element representing the account should be appended.

#define TP_QT_ACCOUNT_MANAGER_BUS_NAME

The well-known bus name of the Account Manager.

See Also
Tp::AccountManager
#define TP_QT_ACCOUNT_MANAGER_OBJECT_PATH

The object path of the Account Manager object.

See Also
Tp::AccountManager
#define TP_QT_CHANNEL_DISPATCHER_BUS_NAME

The well-known bus name of the Channel Dispatcher.

#define TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH

The object path of the Channel Dispatcherr object.

#define TP_QT_ACCOUNT_OBJECT_PATH_BASE

The prefix for an Account's object path, to which the CM's name (e.g. "gabble"), the protocol (e.g. "jabber") and an element identifying the particular account should be appended.

See Also
Tp::Account
#define TP_QT_DEBUG_OBJECT_PATH

The object path of the Debug object of various services.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01330.html0000644000175100017520000000744512530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::CallInterfaceMuteAdaptor Member List

This is the complete list of members for Tp::Service::CallInterfaceMuteAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
dbusConnection() const Tp::AbstractAdaptor
LocalMuteState() const Tp::Service::CallInterfaceMuteAdaptor
MuteStateChanged(uint muteState)Tp::Service::CallInterfaceMuteAdaptorsignal
RequestMuted(bool muted, const QDBusMessage &dbusMessage)Tp::Service::CallInterfaceMuteAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00810_source.html0000644000175100017520000015230112530426257022513 0ustar00kaffeinekaffeine00000000000000 referenced-handles.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
referenced-handles.h
1 
23 #ifndef _TelepathyQt_referenced_handles_h_HEADER_GUARD_
24 #define _TelepathyQt_referenced_handles_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Constants>
31 #include <TelepathyQt/Types>
32 
33 #ifndef QT_NO_STL
34 # include <list>
35 #endif
36 
37 #include <QList>
38 #include <QSet>
39 #include <QSharedDataPointer>
40 #include <QVector>
41 
42 namespace Tp
43 {
44 
45 class Connection;
46 
47 class TP_QT_EXPORT ReferencedHandles
48 {
49 public:
50  typedef UIntList::const_iterator const_iterator;
51  typedef UIntList::ConstIterator ConstIterator;
52  typedef UIntList::const_pointer const_pointer;
53  typedef UIntList::const_reference const_reference;
54  typedef UIntList::difference_type difference_type;
55  typedef UIntList::pointer pointer;
56  typedef UIntList::reference reference;
57  typedef UIntList::size_type size_type;
58  typedef UIntList::value_type value_type;
59 
63 
64  ConnectionPtr connection() const;
65  HandleType handleType() const;
66 
67  uint at(int i) const;
68 
69  inline uint back() const
70  {
71  return last();
72  }
73 
74  inline uint first() const
75  {
76  return at(0);
77  }
78 
79  inline uint front() const
80  {
81  return first();
82  }
83 
84  inline uint last() const
85  {
86  return at(size() - 1);
87  }
88 
89  uint value(int i, uint defaultValue = 0) const;
90 
91  const_iterator begin() const;
92 
93  inline const_iterator constBegin() const
94  {
95  return begin();
96  }
97 
98  inline const_iterator constEnd() const
99  {
100  return end();
101  }
102 
103  const_iterator end() const;
104 
105  bool contains(uint handle) const;
106 
107  int count(uint handle) const;
108 
109  inline int count() const
110  {
111  return size();
112  }
113 
114  inline bool empty() const
115  {
116  return isEmpty();
117  }
118 
119  inline bool endsWith(uint handle) const
120  {
121  return !isEmpty() && last() == handle;
122  }
123 
124  int indexOf(uint handle, int from = 0) const;
125 
126  bool isEmpty() const;
127 
128  int lastIndexOf(uint handle, int from = -1) const;
129 
130  inline int length() const
131  {
132  return count();
133  }
134 
135  ReferencedHandles mid(int pos, int length = -1) const;
136 
137  int size() const;
138 
139  inline bool startsWith(uint handle) const
140  {
141  return !isEmpty() && first() == handle;
142  }
143 
144  inline void append(const ReferencedHandles& another)
145  {
146  *this = *this + another;
147  }
148 
149  void clear();
150  void move(int from, int to);
151 
152  inline void pop_back()
153  {
154  return removeLast();
155  }
156 
157  inline void pop_front()
158  {
159  return removeFirst();
160  }
161 
162  int removeAll(uint handle);
163 
164  void removeAt(int i);
165 
166  inline void removeFirst()
167  {
168  return removeAt(0);
169  }
170 
171  inline void removeLast()
172  {
173  return removeAt(size() - 1);
174  }
175 
176  bool removeOne(uint handle);
177 
178  void swap(int i, int j);
179 
180  uint takeAt(int i);
181 
182  inline uint takeFirst()
183  {
184  return takeAt(0);
185  }
186 
187  inline uint takeLast()
188  {
189  return takeAt(size() - 1);
190  }
191 
192  bool operator!=(const ReferencedHandles& another) const
193  {
194  return !(*this == another);
195  }
196 
197  bool operator!=(const UIntList& another) const
198  {
199  return !(*this == another);
200  }
201 
202  ReferencedHandles operator+(const ReferencedHandles& another) const;
203 
205  {
206  return *this = (*this + another);
207  }
208 
210  {
211  return *this += another;
212  }
213 
214  ReferencedHandles& operator=(const ReferencedHandles& another);
215 
216  bool operator==(const ReferencedHandles& another) const;
217  bool operator==(const UIntList& list) const;
218 
219  inline uint operator[](int i) const
220  {
221  return at(i);
222  }
223 
224  UIntList toList() const;
225 
226  inline QSet<uint> toSet() const
227  {
228  return toList().toSet();
229  }
230 
231 #ifndef QT_NO_STL
232  inline std::list<uint> toStdList() const
233  {
234  return toList().toStdList();
235  }
236 #endif
237 
238  inline QVector<uint> toVector() const
239  {
240  return toList().toVector();
241  }
242 
243 private:
244  // For access to the "prime" constructor
245  friend class ContactManager;
247  friend class PendingContacts;
248  friend class PendingHandles;
249 
250  TP_QT_NO_EXPORT ReferencedHandles(const ConnectionPtr &connection,
251  HandleType handleType, const UIntList& handles);
252 
253  struct Private;
254  friend struct Private;
255  QSharedDataPointer<Private> mPriv;
256 };
257 
258 typedef QListIterator<uint> ReferencedHandlesIterator;
259 
260 } // Tp
261 
262 Q_DECLARE_METATYPE(Tp::ReferencedHandles);
263 
264 #endif
bool startsWith(uint handle) const
Definition: referenced-handles.h:139
const_iterator constEnd() const
Definition: referenced-handles.h:98
uint front() const
Definition: referenced-handles.h:79
The ContactManager class is responsible for managing contacts.
Definition: contact-manager.h:50
QSet< uint > toSet() const
Definition: referenced-handles.h:226
HandleType
Definition: build/TelepathyQt/_gen/constants.h:1375
bool operator==(const SUSocketAddress &v1, const SUSocketAddress &v2)
Definition: types.cpp:50
bool empty() const
Definition: referenced-handles.h:114
void pop_front()
Definition: referenced-handles.h:157
The PendingHandles class represents the parameters of and the reply to an asynchronous handle request...
Definition: pending-handles.h:46
uint first() const
Definition: referenced-handles.h:74
bool operator!=(const ReferencedHandles &another) const
Definition: referenced-handles.h:192
void removeLast()
Definition: referenced-handles.h:171
void pop_back()
Definition: referenced-handles.h:152
ReferencedHandles & operator<<(const ReferencedHandles &another)
Definition: referenced-handles.h:209
uint operator[](int i) const
Definition: referenced-handles.h:219
int count() const
Definition: referenced-handles.h:109
Definition: build/TelepathyQt/_gen/types.h:101
bool operator!=(const UIntList &another) const
Definition: referenced-handles.h:197
uint takeLast()
Definition: referenced-handles.h:187
The PendingContacts class is used by ContactManager when creating/updating Contact objects...
Definition: pending-contacts.h:46
UIntList::const_pointer const_pointer
Definition: referenced-handles.h:52
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
UIntList::ConstIterator ConstIterator
Definition: referenced-handles.h:51
bool endsWith(uint handle) const
Definition: referenced-handles.h:119
UIntList::size_type size_type
Definition: referenced-handles.h:57
uint back() const
Definition: referenced-handles.h:69
void append(const ReferencedHandles &another)
Definition: referenced-handles.h:144
QListIterator< uint > ReferencedHandlesIterator
Definition: referenced-handles.h:258
ReferencedHandles & operator+=(const ReferencedHandles &another)
Definition: referenced-handles.h:204
int length() const
Definition: referenced-handles.h:130
UIntList::reference reference
Definition: referenced-handles.h:56
QVector< uint > toVector() const
Definition: referenced-handles.h:238
UIntList::difference_type difference_type
Definition: referenced-handles.h:54
std::list< uint > toStdList() const
Definition: referenced-handles.h:232
UIntList::const_iterator const_iterator
Definition: referenced-handles.h:50
uint last() const
Definition: referenced-handles.h:84
UIntList::pointer pointer
Definition: referenced-handles.h:55
UIntList::value_type value_type
Definition: referenced-handles.h:58
const_iterator constBegin() const
Definition: referenced-handles.h:93
void removeFirst()
Definition: referenced-handles.h:166
UIntList::const_reference const_reference
Definition: referenced-handles.h:53
uint takeFirst()
Definition: referenced-handles.h:182
The PendingContactAttributes class represents the parameters of and the reply to an asynchronous requ...
Definition: pending-contact-attributes.h:40


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00114.html0000644000175100017520000007077012530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::BaseChannelTextType Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Channel.Type.Text. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractChannelInterface.

Public Types

typedef Callback2
< QDBusObjectPath, const
QVariantMap &, DBusError * > 
CreateChannelCallback
 
typedef Callback2< bool, const
QVariantMap &, DBusError * > 
EnsureChannelCallback
 
typedef Callback1< void, QString > MessageAcknowledgedCallback
 

Public Member Functions

virtual ~BaseChannelTextType ()
 
QVariantMap immutableProperties () const
 
void setMessageAcknowledgedCallback (const MessageAcknowledgedCallback &cb)
 
Tp::MessagePartListList pendingMessages ()
 
void addReceivedMessage (const Tp::MessagePartList &message)
 
- Public Member Functions inherited from Tp::AbstractChannelInterface
 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseChannelTextTypePtr create (BaseChannel *channel)
 
template<typename BaseChannelTextTypeSubclass >
static SharedPtr
< BaseChannelTextTypeSubclass > 
create (BaseChannel *channel)
 

Public Attributes

CreateChannelCallback createChannel
 
EnsureChannelCallback ensureChannel
 
Tp::RequestableChannelClassList requestableChannelClasses
 

Protected Member Functions

 BaseChannelTextType (BaseChannel *channel)
 
void acknowledgePendingMessages (const Tp::UIntList &IDs, DBusError *error)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Channel.Type.Text.

Member Typedef Documentation

typedef Callback2<QDBusObjectPath, const QVariantMap&, DBusError*> Tp::BaseChannelTextType::CreateChannelCallback

Constructor & Destructor Documentation

Tp::BaseChannelTextType::~BaseChannelTextType ( )
virtual

Class destructor.

Tp::BaseChannelTextType::BaseChannelTextType ( BaseChannel channel)
protected

Class constructor.

Member Function Documentation

static BaseChannelTextTypePtr Tp::BaseChannelTextType::create ( BaseChannel channel)
inlinestatic
template<typename BaseChannelTextTypeSubclass >
static SharedPtr<BaseChannelTextTypeSubclass> Tp::BaseChannelTextType::create ( BaseChannel channel)
inlinestatic
QVariantMap Tp::BaseChannelTextType::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseChannelTextType::setMessageAcknowledgedCallback ( const MessageAcknowledgedCallback cb)
Tp::MessagePartListList Tp::BaseChannelTextType::pendingMessages ( )
void Tp::BaseChannelTextType::addReceivedMessage ( const Tp::MessagePartList message)
void Tp::BaseChannelTextType::acknowledgePendingMessages ( const Tp::UIntList IDs,
DBusError error 
)
protected

Member Data Documentation

CreateChannelCallback Tp::BaseChannelTextType::createChannel
EnsureChannelCallback Tp::BaseChannelTextType::ensureChannel
Tp::RequestableChannelClassList Tp::BaseChannelTextType::requestableChannelClasses


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01085.html0000644000175100017520000000634212530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PresenceSpecList Member List

This is the complete list of members for Tp::PresenceSpecList, including all inherited members.

bareSpecs() const Tp::PresenceSpecListinline
PresenceSpecList()Tp::PresenceSpecListinline
PresenceSpecList(const SimpleStatusSpecMap &specMap)Tp::PresenceSpecListinline
PresenceSpecList(const QList< PresenceSpec > &other)Tp::PresenceSpecListinline
toMap() const Tp::PresenceSpecListinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2mlastnode.png0000644000175100017520000000036612530426257022735 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|½IDATxíÝ!NAÅñ¤‡à\ ÷à Um@`Ô5iÒ`ëh ‚ÅW7] b§ÝˆŠ&oföÍd¾YÔ4 üšcø ‡€´‹Åòù3v=¼]†§µ\B… I¿‹=B·™B¡®;¸k´µ W°ÍN@vyÍÑÖ4ãß÷]ÈâYìã§|M}]ÔÚx6a }ôdׇØYüú¨>¤||5?Ó>|žB"¡î'¡IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00429.html0000644000175100017520000002463112530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::PendingCallContent Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingCallContent Class Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/call-content.h>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingCallContent ()
 
CallContentPtr content () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Constructor & Destructor Documentation

Tp::PendingCallContent::~PendingCallContent ( )

Member Function Documentation

CallContentPtr Tp::PendingCallContent::content ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00183.html0000644000175100017520000001267112530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::ChannelInfo Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelInfo Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QDBusObjectPath channel
 
QString channelType
 
uint handleType
 
uint handle
 

Detailed Description

Structure type generated from the specification.

A struct representing a channel, as returned by ListChannels on the Connection interface.

Member Data Documentation

QDBusObjectPath Tp::ChannelInfo::channel

The object path of the channel, which is on the same bus name as the connection

QString Tp::ChannelInfo::channelType

The channel's type

uint Tp::ChannelInfo::handleType

The type of the handle that the channel communicates with, or Handle_Type_None if there is no associated handle

uint Tp::ChannelInfo::handle

The handle that the channel communicates with, or 0 if there is no associated handle


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01144.html0000644000175100017520000000526112530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelInfo Member List

This is the complete list of members for Tp::ChannelInfo, including all inherited members.

channelTp::ChannelInfo
channelTypeTp::ChannelInfo
handleTp::ChannelInfo
handleTypeTp::ChannelInfo


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00999.html0000644000175100017520000001607112530426260021152 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ConnectionLowlevel Member List

This is the complete list of members for Tp::ConnectionLowlevel, including all inherited members.

allowedPresenceStatuses() const Tp::ConnectionLowlevel
connection() const Tp::ConnectionLowlevel
contactAttributeInterfaces() const Tp::ConnectionLowlevel
contactAttributes(const UIntList &handles, const QStringList &interfaces, bool reference=true)Tp::ConnectionLowlevel
createChannel(const QVariantMap &request)Tp::ConnectionLowlevel
createChannel(const QVariantMap &request, int timeout)Tp::ConnectionLowlevel
ensureChannel(const QVariantMap &request)Tp::ConnectionLowlevel
ensureChannel(const QVariantMap &request, int timeout)Tp::ConnectionLowlevel
injectContactId(uint handle, const QString &contactId)Tp::ConnectionLowlevel
injectContactIds(const HandleIdentifierMap &contactIds)Tp::ConnectionLowlevel
isValid() const Tp::ConnectionLowlevel
maxPresenceStatusMessageLength() const Tp::ConnectionLowlevel
RefCounted()Tp::RefCountedinline
referenceHandles(HandleType handleType, const UIntList &handles)Tp::ConnectionLowlevel
requestConnect(const Features &requestedFeatures=Features())Tp::ConnectionLowlevel
requestDisconnect()Tp::ConnectionLowlevel
requestHandles(HandleType handleType, const QStringList &names)Tp::ConnectionLowlevel
setSelfPresence(const QString &status, const QString &statusMessage)Tp::ConnectionLowlevel
~ConnectionLowlevel()Tp::ConnectionLowlevel
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00498.html0000644000175100017520000001122712530426260021142 0ustar00kaffeinekaffeine00000000000000 Tp::RTCPFeedbackMessage Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RTCPFeedbackMessage Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString type
 
QString subtype
 
QString parameters
 

Detailed Description

Structure type generated from the specification.

A struct defining an RTCP feedback message.

Member Data Documentation

QString Tp::RTCPFeedbackMessage::type

Feedback type, for example "ack", "nack", or "ccm".

QString Tp::RTCPFeedbackMessage::subtype

Feedback subtype, according to the Type, can be an empty string (""), if there is no subtype. For example, generic nack is Type="nack" Subtype="".

QString Tp::RTCPFeedbackMessage::parameters

Feedback parameters as a string. Format is defined in the relevant RFC


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00242.html0000644000175100017520000010614712530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeRoomListInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply< bool > GetListingRooms (int timeout=-1)
 
QDBusPendingReply ListRooms (int timeout=-1)
 
QDBusPendingReply StopListing (int timeout=-1)
 

Signals

void GotRooms (const Tp::RoomInfoList &rooms)
 
void ListingRooms (bool listing)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeRoomListInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeRoomListInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeRoomListInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeRoomListInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeRoomListInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyServer () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.RoomList".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeRoomListInterface::ChannelTypeRoomListInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeRoomListInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeRoomListInterface::ChannelTypeRoomListInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeRoomListInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeRoomListInterface::ChannelTypeRoomListInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeRoomListInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeRoomListInterface::ChannelTypeRoomListInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeRoomListInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeRoomListInterface::ChannelTypeRoomListInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeRoomListInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeRoomListInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.RoomList", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeRoomListInterface::requestPropertyServer ( ) const
inline

Asynchronous getter for the remote object property Server of type QString.

For protocols with a concept of chatrooms on multiple servers with different DNS names (like XMPP), the DNS name of the server whose rooms are listed by this channel, e.g. "conference.jabber.org". Otherwise, the empty string. This property cannot change during the lifetime of the channel.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeRoomListInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<bool> Tp::Client::ChannelTypeRoomListInterface::GetListingRooms ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetListingRooms on the remote object.

Check to see if there is already a room list request in progress on this channel.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
A boolean indicating if room listing is in progress
QDBusPendingReply Tp::Client::ChannelTypeRoomListInterface::ListRooms ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListRooms on the remote object.

Request the list of rooms from the server. The ListingRooms (True) signal should be emitted when this request is being processed, GotRooms when any room information is received, and ListingRooms (False) when the request is complete.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeRoomListInterface::StopListing ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method StopListing on the remote object.

Stop the room listing if it's in progress, but don't close the channel. The ListingRooms (False) signal should be emitted when the listing stops.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
void Tp::Client::ChannelTypeRoomListInterface::GotRooms ( const Tp::RoomInfoList rooms)
signal

Represents the signal GotRooms on the remote object.

Emitted when information about rooms on the server becomes available. The array contains the room handle (as can be passed to the ConnectionInterface::RequestChannel() method with HANDLE_TYPE_ROOM), the channel type, and a dictionary containing further information about the room as available. The following well-known keys and types are recommended for use where appropriate:

handle-name (s)
The identifier of the room (as would be returned by ConnectionInterface::InspectHandles() ). This property is mandatory.
name (s)
The human-readable name of the room if different from the handle
description (s)
A description of the room's overall purpose
subject (s)
The current subject of conversation in the room (as would be returned by getting the string part of the ChannelInterfaceSubjectInterface::Subject property)
members (u)
The number of members in the room
password (b)
True if the room requires a password to enter
invite-only (b)
True if you cannot join the room, but must be invited
room-id (s)
The human-readable identifier of a chat room (as would be returned by getting the ChannelInterfaceRoomInterface::RoomName property)
server (s)
The DNS name of the server hosting these channels (as would be returned by getting the ChannelInterfaceRoomInterface::Server property)
Parameters
rooms An array of structs containing:
  • an integer room handle
  • a string representing the D-Bus interface name of the channel type
  • a dictionary mapping string keys to variant boxed information
void Tp::Client::ChannelTypeRoomListInterface::ListingRooms ( bool  listing)
signal

Represents the signal ListingRooms on the remote object.

Emitted to indicate whether or not room listing request is currently in progress.

Parameters
listing
A boolean indicating if room listing is in progress
void Tp::Client::ChannelTypeRoomListInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01203.html0000644000175100017520000000530412530426260021122 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StringStringMap Member List

This is the complete list of members for Tp::StringStringMap, including all inherited members.

operator=(const QMap< QString, QString > &a)Tp::StringStringMapinline
StringStringMap()Tp::StringStringMapinline
StringStringMap(const QMap< QString, QString > &a)Tp::StringStringMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00301.html0000644000175100017520000013125612530426260021126 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfacePresenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply AddStatus (const QString &status, const QVariantMap &parameters, int timeout=-1)
 
QDBusPendingReply ClearStatus (int timeout=-1)
 
QDBusPendingReply
< Tp::ContactPresences
GetPresence (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply
< Tp::StatusSpecMap
GetStatuses (int timeout=-1)
 
QDBusPendingReply RemoveStatus (const QString &status, int timeout=-1)
 
QDBusPendingReply RequestPresence (const Tp::UIntList &contacts, int timeout=-1)
 
QDBusPendingReply SetLastActivityTime (uint time, int timeout=-1)
 
QDBusPendingReply SetStatus (const Tp::MultipleStatusMap &statuses, int timeout=-1)
 

Signals

void PresenceUpdate (const Tp::ContactPresences &presence)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfacePresenceInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfacePresenceInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfacePresenceInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfacePresenceInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfacePresenceInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Presence".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfacePresenceInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfacePresenceInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfacePresenceInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfacePresenceInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfacePresenceInterface::ConnectionInterfacePresenceInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfacePresenceInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfacePresenceInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Presence", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfacePresenceInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterfacePresenceInterface::AddStatus ( const QString &  status,
const QVariantMap &  parameters,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method AddStatus on the remote object.

Request that a single presence status is published for the user, along with any desired parameters. Changes will be indicated by PresenceUpdate signals being emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
status
The string identifier of the desired status
parameters
A dictionary of optional parameter names mapped to their 
variant-boxed values
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfacePresenceInterface::ClearStatus ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ClearStatus on the remote object.

Request that all of a user's presence statuses be removed. Be aware that this request may simply result in the statuses being replaced by a default available status. Changes will be indicated by PresenceUpdate signals being emitted.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::ContactPresences> Tp::Client::ConnectionInterfacePresenceInterface::GetPresence ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetPresence on the remote object.

Get presence previously emitted by PresenceUpdate for the given contacts. Data is returned in the same structure as the PresenceUpdate signal. Using this method in favour of RequestPresence has the advantage that it will not wake up each client connected to the PresenceUpdate signal.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of the contacts whose presence should be obtained
timeoutThe timeout in milliseconds.
Returns
Presence information in the same format as for the PresenceUpdate 
signal
QDBusPendingReply<Tp::StatusSpecMap> Tp::Client::ConnectionInterfacePresenceInterface::GetStatuses ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetStatuses on the remote object.

Get a dictionary of the valid presence statuses for this connection. This is only available when online because only some statuses will be available on some servers.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
A dictionary of string identifiers mapped to a struct for each 
status, containing: a type value from one of the values above a 
boolean to indicate if this status may be set on yourself a boolean 
to indicate if this is an exclusive status which you may not set 
alongside any other a dictionary of valid optional string argument 
names mapped to their types
QDBusPendingReply Tp::Client::ConnectionInterfacePresenceInterface::RemoveStatus ( const QString &  status,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveStatus on the remote object.

Request that the given presence status is no longer published for the user. Changes will be indicated by PresenceUpdate signals being emitted. As with ClearStatus, removing a status may actually result in it being replaced by a default available status.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
status
The string identifier of the status not to publish anymore for the 
user
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfacePresenceInterface::RequestPresence ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestPresence on the remote object.

Request the presence for contacts on this connection. A PresenceUpdate signal will be emitted when they are received. This is not the same as subscribing to the presence of a contact, which must be done using the 'subscription' ContactList, and on some protocols presence information may not be available unless a subscription exists.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of the contacts whose presence should be obtained
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfacePresenceInterface::SetLastActivityTime ( uint  time,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetLastActivityTime on the remote object.

Request that the recorded last activity time for the user be updated on the server.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
time
A UNIX timestamp of the user&apos;s last activity time (in UTC)
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ConnectionInterfacePresenceInterface::SetStatus ( const Tp::MultipleStatusMap statuses,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetStatus on the remote object.

Request that the user's presence be changed to the given statuses and desired parameters. Changes will be reflected by PresenceUpdate() signals being emitted.

Statuses whose Connection_Presence_Type is Offline, Error or Unknown MUST NOT be passed to this function. Connection managers SHOULD reject these statuses.

On certain protocols, this method may be called on a newly-created connection which is still in the DISCONNECTED state, and will sign on with the requested status. If the requested status is not available after signing on, NotAvailable will be returned and the connection will remain offline, or if the protocol does not support signing on with a certain status, Disconnected will be returned.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
statuses
A dictionary mapping status identifiers to dictionaries, which map 
optional parameter names to their variant-boxed values
timeoutThe timeout in milliseconds.
void Tp::Client::ConnectionInterfacePresenceInterface::PresenceUpdate ( const Tp::ContactPresences presence)
signal

Represents the signal PresenceUpdate on the remote object.

This signal should be emitted when your own presence has been changed, or the presence of the member of any of the connection's channels has been changed, or when the presence requested by RequestPresence is available.

Parameters
presence
A dictionary of contact handles mapped to a struct containing a 
UNIX timestamp of the last activity time (in UTC), and a dictionary 
mapping the contact&apos;s current status identifiers to a 
dictionary of optional parameter names mapped to their 
variant-boxed values
void Tp::Client::ConnectionInterfacePresenceInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01272.html0000644000175100017520000002366412530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceSubjectInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceSubjectInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceSubjectInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSubjectInterface
ChannelInterfaceSubjectInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceSubjectInterface
ChannelInterfaceSubjectInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceSubjectInterface
ChannelInterfaceSubjectInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceSubjectInterfaceexplicit
ChannelInterfaceSubjectInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceSubjectInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceSubjectInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceSubjectInterfaceinline
requestPropertyActor() const Tp::Client::ChannelInterfaceSubjectInterfaceinline
requestPropertyActorHandle() const Tp::Client::ChannelInterfaceSubjectInterfaceinline
requestPropertyCanSet() const Tp::Client::ChannelInterfaceSubjectInterfaceinline
requestPropertySubject() const Tp::Client::ChannelInterfaceSubjectInterfaceinline
requestPropertyTimestamp() const Tp::Client::ChannelInterfaceSubjectInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetSubject(const QString &subject, int timeout=-1)Tp::Client::ChannelInterfaceSubjectInterfaceinlineslot
staticInterfaceName()Tp::Client::ChannelInterfaceSubjectInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00056.html0000644000175100017520000000400012530426257021125 0ustar00kaffeinekaffeine00000000000000 Mailing Lists
   Home · All Classes · All Namespaces · Modules · Functions · Files
Mailing Lists

General discussion list
This list should be used for general discussion about Telepathy usage, development.

Commits list
Subscribe to this list to follow the commits.

Bugs list
Subscribe to this list to follow the bug reports.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01017.html0000644000175100017520000002445512530426260021135 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StatefulDBusProxy Member List

This is the complete list of members for Tp::StatefulDBusProxy, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~DBusProxy()Tp::DBusProxyvirtual
~Object()Tp::Objectvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00871.html0000644000175100017520000000650212530426257021143 0ustar00kaffeinekaffeine00000000000000 Generic D-Bus proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Generic D-Bus proxies

Classes

class  Tp::Client::DBus::DBusDaemonInterface
 
class  Tp::Client::DBus::IntrospectableInterface
 
class  Tp::Client::DBus::PeerInterface
 
class  Tp::Client::DBus::PropertiesInterface
 

Detailed Description

Proxy objects representing well-known generic D-Bus interfaces on remote objects. Note that QDBus already has QDBusConnectionInterface for accessing the bus daemon, so in the parts where there is an overlap in the functionality, using the QDBus proxy should be given consideration instead of blindly using the proxy provided here.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x72.html0000644000175100017520000000444112530426260024140 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00370.html0000644000175100017520000001334012530426260021125 0ustar00kaffeinekaffeine00000000000000 Tp::HandleOwnerMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandleOwnerMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, uint >.

Public Member Functions

 HandleOwnerMap ()
 
 HandleOwnerMap (const QMap< uint, uint > &a)
 
HandleOwnerMapoperator= (const QMap< uint, uint > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, uint>, but needed to have a discrete type in the Qt type system.

A map from channel-specific handles to their owners.

Constructor & Destructor Documentation

Tp::HandleOwnerMap::HandleOwnerMap ( )
inline
Tp::HandleOwnerMap::HandleOwnerMap ( const QMap< uint, uint > &  a)
inline

Member Function Documentation

HandleOwnerMap& Tp::HandleOwnerMap::operator= ( const QMap< uint, uint > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01331.html0000644000175100017520000001440712530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelAdaptor Member List

This is the complete list of members for Tp::Service::ChannelAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ChannelType() const Tp::Service::ChannelAdaptor
Close(const QDBusMessage &dbusMessage)Tp::Service::ChannelAdaptorslot
Closed()Tp::Service::ChannelAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
GetChannelType(const QDBusMessage &dbusMessage)Tp::Service::ChannelAdaptorslot
GetHandle(const QDBusMessage &dbusMessage, uint &targetHandle)Tp::Service::ChannelAdaptorslot
GetInterfaces(const QDBusMessage &dbusMessage)Tp::Service::ChannelAdaptorslot
InitiatorHandle() const Tp::Service::ChannelAdaptor
InitiatorID() const Tp::Service::ChannelAdaptor
Interfaces() const Tp::Service::ChannelAdaptor
Requested() const Tp::Service::ChannelAdaptor
TargetHandle() const Tp::Service::ChannelAdaptor
TargetHandleType() const Tp::Service::ChannelAdaptor
TargetID() const Tp::Service::ChannelAdaptor
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00115.html0000644000175100017520000017457212530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnection Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for Connection implementations. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::DBusService.

Public Types

typedef Callback2
< BaseChannelPtr, const
QVariantMap &, DBusError * > 
CreateChannelCallback
 
typedef Callback1< void,
DBusError * > 
ConnectCallback
 
typedef Callback3< QStringList,
uint, const Tp::UIntList
&, DBusError * > 
InspectHandlesCallback
 
typedef Callback3
< Tp::UIntList, uint, const
QStringList &, DBusError * > 
RequestHandlesCallback
 

Signals

void disconnected ()
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~BaseConnection ()
 
QString cmName () const
 
QString protocolName () const
 
QVariantMap parameters () const
 
QVariantMap immutableProperties () const
 
uint selfHandle () const
 
void setSelfHandle (uint selfHandle)
 
QString selfID () const
 
void setSelfID (const QString &selfID)
 
void setSelfContact (uint selfHandle, const QString &selfID)
 
uint status () const
 
void setStatus (uint newStatus, uint reason)
 
void setCreateChannelCallback (const CreateChannelCallback &cb)
 
BaseChannelPtr createChannel (const QVariantMap &request, bool suppressHandler, DBusError *error)
 
void setConnectCallback (const ConnectCallback &cb)
 
void setInspectHandlesCallback (const InspectHandlesCallback &cb)
 
QStringList inspectHandles (uint handleType, const Tp::UIntList &handles, DBusError *error)
 
void setRequestHandlesCallback (const RequestHandlesCallback &cb)
 
Tp::UIntList requestHandles (uint handleType, const QStringList &identifiers, DBusError *error)
 
Tp::ChannelInfoList channelsInfo ()
 
Tp::ChannelDetailsList channelsDetails ()
 
BaseChannelPtr ensureChannel (const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error)
 
void addChannel (BaseChannelPtr channel, bool suppressHandler=false)
 
QList
< AbstractConnectionInterfacePtr > 
interfaces () const
 
AbstractConnectionInterfacePtr interface (const QString &interfaceName) const
 
bool plugInterface (const AbstractConnectionInterfacePtr &interface)
 
bool registerObject (DBusError *error=NULL)
 
virtual QString uniqueName () const
 
- Public Member Functions inherited from Tp::DBusService
 DBusService (const QDBusConnection &dbusConnection)
 
virtual ~DBusService ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static BaseConnectionPtr create (const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus())
 
template<typename BaseConnectionSubclass >
static SharedPtr
< BaseConnectionSubclass > 
create (const QString &cmName, const QString &protocolName, const QVariantMap &parameters, const QDBusConnection &dbusConnection=QDBusConnection::sessionBus())
 

Protected Member Functions

 BaseConnection (const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap &parameters)
 
virtual bool registerObject (const QString &busName, const QString &objectPath, DBusError *error)
 
virtual bool matchChannel (const Tp::BaseChannelPtr &channel, const QVariantMap &request, Tp::DBusError *error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for Connection implementations.

Member Typedef Documentation

typedef Callback2<BaseChannelPtr, const QVariantMap &, DBusError*> Tp::BaseConnection::CreateChannelCallback

Constructor & Destructor Documentation

Tp::BaseConnection::~BaseConnection ( )
virtual

Class destructor.

Tp::BaseConnection::BaseConnection ( const QDBusConnection &  dbusConnection,
const QString &  cmName,
const QString &  protocolName,
const QVariantMap &  parameters 
)
protected

Construct a BaseConnection.

Parameters
dbusConnectionThe D-Bus connection that will be used by this object.
cmNameThe name of the connection manager associated with this connection.
protocolNameThe name of the protocol associated with this connection.
parametersThe parameters of this connection.

Member Function Documentation

static BaseConnectionPtr Tp::BaseConnection::create ( const QString &  cmName,
const QString &  protocolName,
const QVariantMap &  parameters,
const QDBusConnection &  dbusConnection = QDBusConnection::sessionBus() 
)
inlinestatic
template<typename BaseConnectionSubclass >
static SharedPtr<BaseConnectionSubclass> Tp::BaseConnection::create ( const QString &  cmName,
const QString &  protocolName,
const QVariantMap &  parameters,
const QDBusConnection &  dbusConnection = QDBusConnection::sessionBus() 
)
inlinestatic
QString Tp::BaseConnection::cmName ( ) const

Return the name of the connection manager associated with this connection.

Returns
The name of the connection manager associated with this connection.
QString Tp::BaseConnection::protocolName ( ) const

Return the name of the protocol associated with this connection.

Returns
The name of the protocol associated with this connection.
QVariantMap Tp::BaseConnection::parameters ( ) const

Return the parameters of this connection.

Returns
The parameters of this connection.
QVariantMap Tp::BaseConnection::immutableProperties ( ) const
virtual

Return the immutable properties of this connection object.

Immutable properties cannot change after the object has been registered on the bus with registerObject().

Returns
The immutable properties of this connection object.

Implements Tp::DBusService.

uint Tp::BaseConnection::selfHandle ( ) const
void Tp::BaseConnection::setSelfHandle ( uint  selfHandle)
QString Tp::BaseConnection::selfID ( ) const
void Tp::BaseConnection::setSelfID ( const QString &  selfID)
void Tp::BaseConnection::setSelfContact ( uint  selfHandle,
const QString &  selfID 
)
uint Tp::BaseConnection::status ( ) const
void Tp::BaseConnection::setStatus ( uint  newStatus,
uint  reason 
)
void Tp::BaseConnection::setCreateChannelCallback ( const CreateChannelCallback cb)
Tp::BaseChannelPtr Tp::BaseConnection::createChannel ( const QVariantMap &  request,
bool  suppressHandler,
DBusError error 
)
void Tp::BaseConnection::setConnectCallback ( const ConnectCallback cb)
void Tp::BaseConnection::setInspectHandlesCallback ( const InspectHandlesCallback cb)
QStringList Tp::BaseConnection::inspectHandles ( uint  handleType,
const Tp::UIntList handles,
DBusError error 
)
void Tp::BaseConnection::setRequestHandlesCallback ( const RequestHandlesCallback cb)
Tp::UIntList Tp::BaseConnection::requestHandles ( uint  handleType,
const QStringList &  identifiers,
DBusError error 
)
Tp::ChannelInfoList Tp::BaseConnection::channelsInfo ( )
Tp::ChannelDetailsList Tp::BaseConnection::channelsDetails ( )
Tp::BaseChannelPtr Tp::BaseConnection::ensureChannel ( const QVariantMap &  request,
bool &  yours,
bool  suppressHandler,
DBusError error 
)

Return a new or exists channel, satisfying the given request.

This method iterate over exist channels to find the one satisfying the request. If there is no suitable channel, then new channel with given request details will be created. This method uses the matchChannel() method to check whether there exists a channel which confirms with the request.

If error is passed, any error that may occur will be stored there.

Parameters
requestA dictionary containing the desirable properties.
yoursA returning argument. true if returned channel is a new one and false otherwise.
suppressHandlerAn option to suppress handler in case of a new channel creation.
errorA pointer to an empty DBusError where any possible error will be stored.
Returns
A pointer to a channel, satisfying the given request.
See Also
matchChannel()
void Tp::BaseConnection::addChannel ( BaseChannelPtr  channel,
bool  suppressHandler = false 
)
QList< AbstractConnectionInterfacePtr > Tp::BaseConnection::interfaces ( ) const

Return a list of interfaces that have been plugged into this Protocol D-Bus object with plugInterface().

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Returns
A list containing all the Protocol interface implementation objects.
See Also
plugInterface(), interface()
AbstractConnectionInterfacePtr Tp::BaseConnection::interface ( const QString &  interfaceName) const

Return a pointer to the interface with the given name.

Parameters
interfaceNameThe D-Bus name of the interface, ex. TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING.
Returns
A pointer to the AbstractConnectionInterface object that implements the D-Bus interface with the given name, or a null pointer if such an interface has not been plugged into this object.
See Also
plugInterface(), interfaces()
bool Tp::BaseConnection::plugInterface ( const AbstractConnectionInterfacePtr &  interface)

Plug a new interface into this Connection D-Bus object.

This property is immutable and cannot change after this Protocol object has been registered on the bus with registerObject().

Parameters
interfaceAn AbstractConnectionInterface instance that implements the interface that is to be plugged.
Returns
true on success or false otherwise
See Also
interfaces(), interface()
bool Tp::BaseConnection::registerObject ( DBusError error = NULL)

Register this connection object on the bus.

If error is passed, any D-Bus error that may occur will be stored there.

Parameters
errorA pointer to an empty DBusError where any possible D-Bus error will be stored.
Returns
true on success and false if there was an error or this connection object is already registered.
See Also
isRegistered()
QString Tp::BaseConnection::uniqueName ( ) const
virtual

Return a unique name for this connection.

Returns
A unique name for this connection.
void Tp::BaseConnection::disconnected ( )
signal

Emitted when this connection has been disconnected.

bool Tp::BaseConnection::registerObject ( const QString &  busName,
const QString &  objectPath,
DBusError error 
)
protectedvirtual

Reimplemented from DBusService.

Reimplemented from Tp::DBusService.

bool Tp::BaseConnection::matchChannel ( const Tp::BaseChannelPtr &  channel,
const QVariantMap &  request,
Tp::DBusError error 
)
protectedvirtual

Check channel on conformity with request.

This virtual method is used to check if a channel satisfying the given request. It is warranted, that the type of the channel meets the requested type.

The default implementation compares TargetHandleType and TargetHandle/TargetID. If error is passed, any error that may occur will be stored there.

Parameters
channelA pointer to a channel to be checked.
requestA dictionary containing the desirable properties.
errorA pointer to an empty DBusError where any possible error will be stored.
Returns
true if channel match the request and false otherwise.
See Also
ensureChannel()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x6b.html0000644000175100017520000000364112530426260023165 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- k -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01086.html0000644000175100017520000001762212530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ProfileManager Member List

This is the complete list of members for Tp::ProfileManager, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
create(const QDBusConnection &bus=QDBusConnection::sessionBus())Tp::ProfileManagerstatic
FeatureCoreTp::ProfileManagerstatic
FeatureFakeProfilesTp::ProfileManagerstatic
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
profileForService(const QString &serviceName) const Tp::ProfileManager
profiles() const Tp::ProfileManager
profilesForCM(const QString &cmName) const Tp::ProfileManager
profilesForProtocol(const QString &protocolName) const Tp::ProfileManager
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
~Object()Tp::Objectvirtual
~ProfileManager()Tp::ProfileManager
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00930.html0000644000175100017520000002321712530426260021133 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelMessagesInterface Member List

This is the complete list of members for Tp::BaseChannelMessagesInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
create(BaseChannelTextType *textTypeInterface, QStringList supportedContentTypes, UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport)Tp::BaseChannelMessagesInterfaceinlinestatic
create()Tp::BaseChannelMessagesInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
deliveryReportingSupport()Tp::BaseChannelMessagesInterface
immutableProperties() const Tp::BaseChannelMessagesInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
messagePartSupportFlags()Tp::BaseChannelMessagesInterface
messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken)Tp::BaseChannelMessagesInterface
messageTypes()Tp::BaseChannelMessagesInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
pendingMessages()Tp::BaseChannelMessagesInterface
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
sendMessage(const Tp::MessagePartList &message, uint flags, DBusError *error)Tp::BaseChannelMessagesInterfaceprotected
SendMessageCallback typedefTp::BaseChannelMessagesInterface
setSendMessageCallback(const SendMessageCallback &cb)Tp::BaseChannelMessagesInterface
supportedContentTypes()Tp::BaseChannelMessagesInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelMessagesInterface()Tp::BaseChannelMessagesInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/namespacemembers_type.html0000644000175100017520000002524712530426260024674 0ustar00kaffeinekaffeine00000000000000 Namespace Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- a -

  • AccountCapabilityFilter : Tp
  • AccountFilter : Tp
  • AliasPairList : Tp
  • AnonymityModeFlags : Tp

- c -

  • CallContents : Tp
  • CallFlags : Tp
  • CallMemberFlags : Tp
  • CallMemberMapList : Tp
  • CallStreams : Tp
  • CandidateList : Tp
  • CandidatePairList : Tp
  • CapabilityChangeList : Tp
  • CapabilityPairList : Tp
  • CaptchaFlags : Tp
  • CaptchaInfoList : Tp
  • ChannelCallStateFlags : Tp
  • ChannelClassFeatures : Tp
  • ChannelClassList : Tp
  • ChannelDetailsList : Tp
  • ChannelGroupFlags : Tp
  • ChannelInfoList : Tp
  • ChannelMediaCapabilities : Tp
  • ChannelPasswordFlags : Tp
  • ChannelTextMessageFlags : Tp
  • CodecList : Tp
  • ConnectionAliasFlags : Tp
  • ConnectionCapabilityFlags : Tp
  • ConnMgrParamFlags : Tp
  • ContactBlockingCapabilities : Tp
  • ContactCapabilitiesMapList : Tp
  • ContactCapabilityList : Tp
  • ContactInfoFieldFlags : Tp
  • ContactInfoFieldList : Tp
  • ContactInfoFlags : Tp

- d -

  • DBusTubeMemberList : Tp
  • DebugCallback : Tp
  • DebugMessageList : Tp
  • DeliveryReportingSupportFlags : Tp

- f -

  • FieldSpecs : Tp

- h -

  • HandlerCapabilitiesList : Tp
  • HTTPPostDataList : Tp

- l -

  • LocalPendingInfoList : Tp
  • LocationFeatures : Tp

- m -

  • MailAddressList : Tp
  • MailList : Tp
  • MailNotificationFlags : Tp
  • MediaSessionHandlerInfoList : Tp
  • MediaStreamHandlerCandidateList : Tp
  • MediaStreamHandlerCodecList : Tp
  • MediaStreamHandlerTransportList : Tp
  • MediaStreamInfoList : Tp
  • MediaStreamPendingSend : Tp
  • MessagePartList : Tp
  • MessagePartListList : Tp
  • MessagePartSupportFlags : Tp
  • MessageSendingFlags : Tp

- o -

  • ObjectImmutablePropertiesMapList : Tp

- p -

  • ParamSpecList : Tp
  • PendingTextMessageList : Tp
  • PropertyFlags : Tp
  • PropertyFlagsChangeList : Tp
  • PropertySpecList : Tp
  • PropertyValueList : Tp
  • ProtocolInfoList : Tp
  • ProtocolParameterList : Tp

- q -

  • QualifiedPropertyValueMapList : Tp

- r -

  • ReferencedHandlesIterator : Tp
  • RequestableChannelClassList : Tp
  • RoomInfoList : Tp
  • RTCPFeedbackMessageList : Tp
  • RTCPXRStatisticsFlags : Tp
  • RTPHeaderExtensionsList : Tp

- s -

  • ServicePointInfoList : Tp
  • SocketAddressIPList : Tp
  • StorageRestrictionFlags : Tp
  • StreamedMediaStreams : Tp
  • StringStringMapList : Tp
  • StringVariantMapList : Tp

- t -

  • TLSCertificateRejectionList : Tp
  • TubeInfoList : Tp

- v -

  • VideoResolutionStruct : Tp


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00184.html0000644000175100017520000014707512530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply Close (int timeout=-1)
 
QDBusPendingReply< QString > GetChannelType (int timeout=-1)
 
QDBusPendingReply< uint, uint > GetHandle (int timeout=-1)
 
QDBusPendingReply< QStringList > GetInterfaces (int timeout=-1)
 

Signals

void Closed ()
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterface (Tp::DBusProxy *proxy)
 
Tp::PendingVariantrequestPropertyChannelType () const
 
Tp::PendingVariantrequestPropertyInterfaces () const
 
Tp::PendingVariantrequestPropertyTargetHandle () const
 
Tp::PendingVariantrequestPropertyTargetID () const
 
Tp::PendingVariantrequestPropertyTargetHandleType () const
 
Tp::PendingVariantrequestPropertyRequested () const
 
Tp::PendingVariantrequestPropertyInitiatorHandle () const
 
Tp::PendingVariantrequestPropertyInitiatorID () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

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

Constructor & Destructor Documentation

Tp::Client::ChannelInterface::ChannelInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterface::ChannelInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterface::ChannelInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyChannelType ( ) const
inline

Asynchronous getter for the remote object property ChannelType of type QString.

The channel's type. This cannot change once the channel has been created.

For compatibility between older connection managers and newer clients, if this is unavailable or is an empty string, clients MUST use the result of calling GetChannelType() .

The GetAll method lets clients retrieve all properties in one round-trip, which is desirable.

When requesting a channel, the request MUST specify a channel type, and the request MUST fail if the specified channel type cannot be supplied.

Common sense.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyInterfaces ( ) const
inline

Asynchronous getter for the remote object property Interfaces of type QStringList.

Extra interfaces provided by this channel. This SHOULD NOT include the channel type and the Channel interface itself, and cannot change once the channel has been created.

For compatibility between older connection managers and newer clients, if this is unavailable, or if this is an empty list and ChannelType is an empty string, clients MUST use the result of calling GetInterfaces() instead. If this is an empty list but ChannelType is non-empty, clients SHOULD NOT call GetInterfaces; this implies that connection managers that implement the ChannelType property MUST also implement the Interfaces property correctly.

The GetAll method lets clients retrieve all properties in one round-trip, which is desirable.

When requesting a channel with a particular value for this property, the request must fail without side-effects unless the connection manager expects to be able to provide a channel whose interfaces include at least the interfaces requested.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyTargetHandle ( ) const
inline

Asynchronous getter for the remote object property TargetHandle of type uint.

The handle (a representation for the identifier) of the contact, chatroom, etc. with which this handle communicates. Its type is given by the TargetHandleType property.

This is fixed for the lifetime of the channel, so channels which could potentially be used to communicate with multiple contacts, and do not have an identity of their own (such as a Handle_Type_Room handle), must have TargetHandleType set to Handle_Type_None and TargetHandle set to 0.

Unlike in the telepathy-spec 0.16 API, there is no particular uniqueness guarantee - there can be many channels with the same (channel type, handle type, handle) tuple. This is necessary to support conversation threads in XMPP and SIP, for example.

If this is present in a channel request, it must be nonzero, TargetHandleType MUST be present and not Handle_Type_None, and TargetID MUST NOT be present. Properties from org.freedesktop.Telepathy.Channel.Interface.Addressing1 MUST NOT be present.

The channel that satisfies the request MUST either:

  • have the specified TargetHandle property; or
  • have TargetHandleType = Handle_Type_None, TargetHandle = 0, and be configured such that it could communicate with the specified handle in some other way (e.g. have the requested contact handle in its Group interface)
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyTargetID ( ) const
inline

Asynchronous getter for the remote object property TargetID of type QString.

The string that would result from inspecting the TargetHandle property (i.e. the identifier in the IM protocol of the contact, room, etc. with which this channel communicates), or the empty string if the TargetHandle is 0.

The presence of this property avoids the following race condition:

If this is present in a channel request, TargetHandleType MUST be present and not Handle_Type_None, and TargetHandle MUST NOT be present. Properties from org.freedesktop.Telepathy.Channel.Interface.Addressing1 MUST NOT be present.The request MUST fail with error InvalidHandle, without side-effects, if the requested TargetID would not be accepted by ConnectionInterface::RequestHandles() .

The returned channel must be related to the handle corresponding to the given identifier, in the same way as if TargetHandle had been part of the request instead.

Requesting channels with a string identifier saves a round-trip (the call to RequestHandles). It also allows the channel dispatcher to accept a channel request for an account that is not yet connected (and thus has no valid handles), bring the account online, and pass on the same parameters to the new connection's CreateChannel method.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyTargetHandleType ( ) const
inline

Asynchronous getter for the remote object property TargetHandleType of type uint.

The type of TargetHandle .

If this is omitted from a channel request, connection managers SHOULD treat this as equivalent to Handle_Type_None.

If this is omitted or is Handle_Type_None, TargetHandle and TargetID MUST be omitted from the request.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyRequested ( ) const
inline

Asynchronous getter for the remote object property Requested of type bool.

True if this channel was created in response to a local request, such as a call to ConnectionInterface::RequestChannel() or ConnectionInterfaceRequestsInterface::CreateChannel() .

The idea of this property is to distinguish between "incoming" and "outgoing" channels, in a way that doesn't break down when considering special cases like contact lists that are automatically created on connection to the server, or chatrooms that an IRC proxy/bouncer like irssi-proxy or bip was already in.

The reason we want to make that distinction is that UIs for things that the user explicitly requested should start up automatically, whereas for incoming messages and VoIP calls we should first ask the user whether they want to open the messaging UI or accept the call.

If the channel was not explicitly requested (even if it was created as a side-effect of a call to one of those functions, e.g. because joining a Tube in a MUC context on XMPP implies joining that MUC), then this property is false.

For compatibility with older connection managers, clients SHOULD assume that this property is true if they see a channel announced by the ConnectionInterface::NewChannel() signal with the suppress_handler parameter set to true.

In a correct connection manager, the only way to get such a channel is to request it.

Clients MAY additionally assume that this property is false if they see a channel announced by the NewChannel signal with the suppress_handler parameter set to false.

This is more controversial, since it's possible to get that parameter set to false by requesting a channel. However, there's no good reason to do so, and we've deprecated this practice.

In the particular case of the channel dispatcher, the only side-effect of wrongly thinking a channel is unrequested is likely to be that the user has to confirm that they want to use it, so it seems fairly harmless to assume in the channel dispatcher that channels with suppress_handler false are indeed unrequested.

It does not make sense for this property to be in channel requests—it will always be true for channels returned by CreateChannel, and callers of EnsureChannel cannot control whether an existing channel was originally requested locally—so it MUST NOT be accepted.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyInitiatorHandle ( ) const
inline

Asynchronous getter for the remote object property InitiatorHandle of type uint.

The contact who initiated the channel; for instance, the contact who invited the local user to a chatroom, or the contact who initiated a call.

This does not necessarily represent the contact who created the underlying protocol-level construct. For instance, if Rob creates a chatroom, Will joins that chatroom, and Will invites Simon to join it, then Simon will see Will as the InitiatorHandle of the channel representing the chatroom.

The room creator is generally a less useful piece of information than the inviter, is less likely to be available at invitation time (i.e. can't necessarily be an immutable property), and is less likely to be available at all. The creator of a chatroom is not currently available via Telepathy; if added in future, it is likely to be made available as a property on the Chatroom interface (bug 23151).

For channels requested by the local user, this MUST be the value of ConnectionInterface::SelfHandle at the time the channel was created (i.e. not a channel-specific handle).

On some protocols, the SelfHandle may change (as signalled by ConnectionInterface::SelfContactChanged() ), but this property is immutable. Hence, locally-requested channels' InitiatorHandle and InitiatorID may not match the current SelfHandle; Requested can be used to determine whether the channel was created locally.

For channels requested by a remote user, this MUST be their handle. If unavailable or not applicable, this MUST be 0 (for instance, contact lists are not really initiated by anyone in particular, and it's easy to imagine a protocol where chatroom invitations can be anonymous).

For channels with the ChannelInterfaceGroupInterface interface, this SHOULD be the same contact who is signalled as the "Actor" causing the self-handle to be placed in the local-pending set.

This SHOULD NOT be a channel-specific handle, if possible.

It does not make sense for this property to be in channel requests - the initiator will always be the local user - so it MUST NOT be accepted.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterface::requestPropertyInitiatorID ( ) const
inline

Asynchronous getter for the remote object property InitiatorID of type QString.

The string that would result from inspecting the InitiatorHandle property (i.e. the initiator's identifier in the IM protocol).

The presence of this property avoids the following race condition:

It does not make sense for this property to be in channel requests - the initiator will always be the local user - so it MUST NOT be accepted.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ChannelInterface::Close ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method Close on the remote object.

Request that the channel be closed. This is not the case until the Closed signal has been emitted, and depending on the connection manager this may simply remove you from the channel on the server, rather than causing it to stop existing entirely. Some channels such as contact list channels may not be closed.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
QDBusPendingReply<QString> Tp::Client::ChannelInterface::GetChannelType ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetChannelType on the remote object.

Returns the interface name for the type of this channel. Clients SHOULD use the ChannelType property instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The interface name
QDBusPendingReply<uint, uint> Tp::Client::ChannelInterface::GetHandle ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetHandle on the remote object.

Returns the handle type and number if this channel represents a communication with a particular contact, room or server-stored list, or zero if it is transient and defined only by its contents. Clients SHOULD use the TargetHandle and TargetHandleType properties instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The same as TargetHandleType.
The same as TargetHandle.
QDBusPendingReply<QStringList> Tp::Client::ChannelInterface::GetInterfaces ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetInterfaces on the remote object.

Get the optional interfaces implemented by the channel. Clients SHOULD use the Interfaces property instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of the D-Bus interface names
void Tp::Client::ChannelInterface::Closed ( )
signal

Represents the signal Closed on the remote object.

Emitted when the channel has been closed. Method calls on the channel are no longer valid after this signal has been emitted, and the connection manager may then remove the object from the bus at any point.

void Tp::Client::ChannelInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01145.html0000644000175100017520000000536612530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChannelOriginatorMap Member List

This is the complete list of members for Tp::ChannelOriginatorMap, including all inherited members.

ChannelOriginatorMap()Tp::ChannelOriginatorMapinline
ChannelOriginatorMap(const QMap< uint, QDBusObjectPath > &a)Tp::ChannelOriginatorMapinline
operator=(const QMap< uint, QDBusObjectPath > &a)Tp::ChannelOriginatorMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2vertline.png0000644000175100017520000000012612530426257022571 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00499.html0000644000175100017520000001414112530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::RTCPFeedbackMessageMap Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::RTCPFeedbackMessageMap Struct Reference

#include <TelepathyQt/Types>

Inherits QMap< uint, RTCPFeedbackMessageProperties >.

Public Member Functions

 RTCPFeedbackMessageMap ()
 
 RTCPFeedbackMessageMap (const QMap< uint, RTCPFeedbackMessageProperties > &a)
 
RTCPFeedbackMessageMapoperator= (const QMap< uint, RTCPFeedbackMessageProperties > &a)
 

Detailed Description

Mapping type generated from the specification. Convertible with QMap<uint, RTCPFeedbackMessageProperties>, but needed to have a discrete type in the Qt type system.

A map of codec and its feedback properties.

Constructor & Destructor Documentation

Tp::RTCPFeedbackMessageMap::RTCPFeedbackMessageMap ( )
inline
Tp::RTCPFeedbackMessageMap::RTCPFeedbackMessageMap ( const QMap< uint, RTCPFeedbackMessageProperties > &  a)
inline

Member Function Documentation

RTCPFeedbackMessageMap& Tp::RTCPFeedbackMessageMap::operator= ( const QMap< uint, RTCPFeedbackMessageProperties > &  a)
inline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00243.html0000644000175100017520000001436412530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeServerAuthenticationAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeServerAuthenticationAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Member Functions

QString AuthenticationMethod () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelTypeServerAuthenticationAdaptor::AuthenticationMethod ( ) const

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

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

This property defines the method used for the authentication step represented by this channel, which MUST be one of this channel's ChannelInterface::Interfaces .

The initially-defined interface that can be used here is ChannelInterfaceSASLAuthenticationInterface .

Returns
The value of exported property AuthenticationMethod.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01204.html0000644000175100017520000000532612530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::StringVariantMap Member List

This is the complete list of members for Tp::StringVariantMap, including all inherited members.

operator=(const QMap< QString, QDBusVariant > &a)Tp::StringVariantMapinline
StringVariantMap()Tp::StringVariantMapinline
StringVariantMap(const QMap< QString, QDBusVariant > &a)Tp::StringVariantMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00302.html0000644000175100017520000005476312530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceRequestsAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceRequestsAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

QDBusObjectPath CreateChannel (const QVariantMap &request, const QDBusMessage &dbusMessage, QVariantMap &properties)
 
bool EnsureChannel (const QVariantMap &request, const QDBusMessage &dbusMessage, QDBusObjectPath &channel, QVariantMap &properties)
 

Signals

void NewChannels (const Tp::ChannelDetailsList &channels)
 
void ChannelClosed (const QDBusObjectPath &removed)
 

Public Member Functions

Tp::ChannelDetailsList Channels () const
 
Tp::RequestableChannelClassList RequestableChannelClasses () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ChannelDetailsList Tp::Service::ConnectionInterfaceRequestsAdaptor::Channels ( ) const

Return the value of the exported D-Bus object property Channels of type Tp::ChannelDetailsList.

Adaptees should export this property as a Qt property named 'channels' with type Tp::ChannelDetailsList.

A list of all the channels which currently exist on this connection. Change notification is via the NewChannels and ChannelClosed signals.

Returns
The value of exported property Channels.
Tp::RequestableChannelClassList Tp::Service::ConnectionInterfaceRequestsAdaptor::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.

The classes of channel that are expected to be available on this connection, i.e. those for which CreateChannel() can reasonably be expected to succeed. User interfaces can use this information to show or hide UI components.

This property cannot change after the connection has gone to state Connection_Status_Connected, so there is no change notification (if the connection has context-dependent capabilities, it SHOULD advertise support for all classes of channel that it might support during its lifetime). Before this state has been reached, the value of this property is undefined.

This is not on an optional interface, because connection managers can always offer some sort of clue about the channel classes they expect to support (at worst, they can announce support for everything for which they have code).

Returns
The value of exported property RequestableChannelClasses.
QDBusObjectPath Tp::Service::ConnectionInterfaceRequestsAdaptor::CreateChannel ( const QVariantMap &  request,
const QDBusMessage &  dbusMessage,
QVariantMap &  properties 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void createChannel(const QVariantMap& request, const Tp::Service::ConnectionInterfaceRequestsAdaptor::CreateChannelContextPtr &context);

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

Request that an entirely new channel is created.

There is deliberately no flag corresponding to the suppress_handler argument to ConnectionInterface::RequestChannel() , because passing a FALSE value for that argument is deprecated. Requests made using this interface always behave as though suppress_handler was TRUE.

Parameters
request

A dictionary containing desirable properties, which MUST include \\\ \\link ChannelInterface::requestPropertyChannelType() ChannelInterface::ChannelType \\endlink \\htmlonly . Some properties are defined such that only an exact match makes sense, and connection managers MUST NOT satisfy a request with a channel where that property does not match; some properties are defined such that the connection manager MAY treat the request as merely a hint, and make a best-effort attempt to satisfy it. This is documented separately for each property.

If this dictionary contains a property whose semantics are not known to the connection manager, this method MUST fail without side-effects (in particular it must not create a new channel).

This is necessary if we want to be able to invent properties in future that, when used in a request, are hard requirements rather than just hints. A connection manager that did not know the semantics of those properties could incorrectly return a new channel that did not satisfy the requirements.

The connection manager MUST NOT respond successfully, and SHOULD NOT create a new channel or cause any other side-effects, unless it can create a new channel that satisfies the client's requirements.

Properties that will be set by this argument need not have write access after the channel has been created - indeed, it is expected that most will be read-only.

Parameters
propertiesOutput parameter

Properties of the channel that was produced, equivalent to the properties in Channel_Details. Connection managers MUST NOT include properties here whose values can change, for the same reasons as in Channel_Details.

Returns

The Channel object, which MUST NOT be signalled with \\\ NewChannels() \\htmlonly until after this method returns.

This allows the requester to alter its handling of NewChannels by knowing whether one of the channels satisfied a request it made.
bool Tp::Service::ConnectionInterfaceRequestsAdaptor::EnsureChannel ( const QVariantMap &  request,
const QDBusMessage &  dbusMessage,
QDBusObjectPath &  channel,
QVariantMap &  properties 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void ensureChannel(const QVariantMap& request, const Tp::Service::ConnectionInterfaceRequestsAdaptor::EnsureChannelContextPtr &context);

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

Request that channels are ensured to exist.

The connection manager is in the best position to determine which existing channels could satisfy which requests.

Parameters
request

A dictionary containing desirable properties, with the same semantics as the corresponding parameter to \\\ CreateChannel() \\htmlonly .

channelOutput parameter
The Channel object. If it was created as a result of this method 
call, it MUST NOT be signalled by NewChannels until after this 
method returns. This allows the requester to alter its handling of 
NewChannels by knowing whether one of the channels satisfied a 
request it made.
propertiesOutput parameter

Properties of the channel that was produced, equivalent to the properties in Channel_Details. Connection managers MUST NOT include properties here whose values can change, for the same reasons as in Channel_Details.

Returns

If false, the caller of EnsureChannel MUST assume that some other process is handling this channel; if true, the caller of EnsureChannel SHOULD handle it themselves or delegate it to another client.

If the creation of a channel makes several calls to EnsureChannel (and no other requests) successful, exactly one of those calls MUST return a true value for this argument.

If the creation of a channel makes other requests successful, the value returned for this argument MUST be such that exactly one of the clients making requests ends up responsible for the channel. In particular, if \\\ CreateChannel() \\htmlonly returns a channel C, any EnsureChannel calls that also return C MUST return a false value for this argument.

void Tp::Service::ConnectionInterfaceRequestsAdaptor::NewChannels ( const Tp::ChannelDetailsList channels)
signal

Represents the exported D-Bus signal NewChannels on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newChannels(const Tp::ChannelDetailsList& channels);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
channels
The channels and their details. All channels that are signalled 
together like this MUST have the same Bundle property, which may 
either refer to an existing bundle, or establish a new bundle.
void Tp::Service::ConnectionInterfaceRequestsAdaptor::ChannelClosed ( const QDBusObjectPath &  removed)
signal

Represents the exported D-Bus signal ChannelClosed on this object.

Adaptees should export this signal as a Qt signal with the following signature: void channelClosed(const QDBusObjectPath& removed);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
removed
The channel which has been removed from the Channels property


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01273.html0000644000175100017520000002167312530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelInterfaceTubeInterface Member List

This is the complete list of members for Tp::Client::ChannelInterfaceTubeInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelInterfaceTubeInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceTubeInterface
ChannelInterfaceTubeInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelInterfaceTubeInterface
ChannelInterfaceTubeInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelInterfaceTubeInterface
ChannelInterfaceTubeInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelInterfaceTubeInterfaceexplicit
ChannelInterfaceTubeInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelInterfaceTubeInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelInterfaceTubeInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelInterfaceTubeInterfaceinline
requestPropertyParameters() const Tp::Client::ChannelInterfaceTubeInterfaceinline
requestPropertyState() const Tp::Client::ChannelInterfaceTubeInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelInterfaceTubeInterfaceinlinestatic
TubeChannelStateChanged(uint state)Tp::Client::ChannelInterfaceTubeInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01018.html0000644000175100017520000001325512530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusService Member List

This is the complete list of members for Tp::DBusService, including all inherited members.

busName() const Tp::DBusService
dbusConnection() const Tp::DBusService
dbusObject() const Tp::DBusService
DBusService(const QDBusConnection &dbusConnection)Tp::DBusService
immutableProperties() const =0Tp::DBusServicepure virtual
isRegistered() const Tp::DBusService
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusService
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerObject(const QString &busName, const QString &objectPath, DBusError *error)Tp::DBusServiceprotectedvirtual
~DBusService()Tp::DBusServicevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00872.html0000644000175100017520000001726512530426257021154 0ustar00kaffeinekaffeine00000000000000 Common debug support
   Home · All Classes · All Namespaces · Modules · Functions · Files
Common debug support

Typedefs

typedef void(* Tp::DebugCallback )(const QString &libraryName, const QString &libraryVersion, QtMsgType type, const QString &msg)
 

Functions

void Tp::enableDebug (bool enable)
 
void Tp::enableWarnings (bool enable)
 
void Tp::setDebugCallback (DebugCallback cb)
 

Detailed Description

TelepathyQt has an internal mechanism for displaying debugging output. It uses the Qt debugging subsystem, so if you want to redirect the messages, use qInstallMsgHandler() from <QtGlobal>.

Debugging output is divided into two categories: normal debug output and warning messages. Normal debug output results in the normal operation of the library, warning messages are output only when something goes wrong. Each category can be invidually enabled.

Typedef Documentation

Tp::DebugCallback
* typedef QDebug (*DebugCallback)(const QString &libraryName,
* const QString &libraryVersion,
* QtMsgType type,
* const QString &msg)
*

Function Documentation

void Tp::enableDebug ( bool  enable)

Enable or disable normal debug output from the library. If the library is not compiled with debug support enabled, this has no effect; no output is produced in any case.

The default is false ie. no debug output.

Parameters
enableWhether debug output should be enabled or not.
void Tp::enableWarnings ( bool  enable)

Enable or disable warning output from the library. If the library is not compiled with debug support enabled, this has no effect; no output is produced in any case.

The default is true ie. warning output enabled.

Parameters
enableWhether warnings should be enabled or not.
void Tp::setDebugCallback ( DebugCallback  cb)

Set the callback method that will handle the debug output.

If cb is NULL this method will set the defaultDebugCallback instead. The default callback function will print the output using default Qt debug system.

Parameters
cbA function pointer to the callback method or NULL.
See Also
DebugCallback


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x73.html0000644000175100017520000000652512530426260024146 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00371.html0000644000175100017520000001240012530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::HandlerCapabilities Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HandlerCapabilities Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString wellKnownName
 
StringVariantMapList channelClasses
 
QStringList capabilities
 

Detailed Description

Structure type generated from the specification.

A structure representing the capabilities of a single client.

Member Data Documentation

QString Tp::HandlerCapabilities::wellKnownName

For implementations of the Client interface, the well-known bus name name of the client; for any other process, any other reversed domain name that uniquely identifies it.

StringVariantMapList Tp::HandlerCapabilities::channelClasses
An array of channel classes that can be handled by this client. This will usually be a copy of the client's ClientHandlerInterface::HandlerChannelFilter property.
QStringList Tp::HandlerCapabilities::capabilities
An array of client capabilities supported by this client, to be used by the connection manager to determine what capabilities to advertise. This will usually be a copy of the client's ClientHandlerInterface::Capabilities property.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01332.html0000644000175100017520000000734512530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceAnonymityAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00116.html0000644000175100017520000005633112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionAddressingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Connection.Interface.Addressing. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback6< void, const
QString &, const QStringList
&, const QStringList
&, Tp::AddressingNormalizationMap
&, Tp::ContactAttributesMap
&, DBusError * > 
GetContactsByVCardFieldCallback
 
typedef Callback5< void, const
QStringList &, const
QStringList
&, Tp::AddressingNormalizationMap
&, Tp::ContactAttributesMap
&, DBusError * > 
GetContactsByURICallback
 

Public Member Functions

virtual ~BaseConnectionAddressingInterface ()
 
QVariantMap immutableProperties () const
 
void setGetContactsByVCardFieldCallback (const GetContactsByVCardFieldCallback &cb)
 
void setGetContactsByURICallback (const GetContactsByURICallback &cb)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionAddressingInterfacePtr 
create ()
 
template<typename BaseConnectionAddressingInterfaceSubclass >
static SharedPtr
< BaseConnectionAddressingInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionAddressingInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.Addressing.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseConnectionAddressingInterface::~BaseConnectionAddressingInterface ( )
virtual

Class destructor.

Tp::BaseConnectionAddressingInterface::BaseConnectionAddressingInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionAddressingInterfacePtr Tp::BaseConnectionAddressingInterface::create ( )
inlinestatic
template<typename BaseConnectionAddressingInterfaceSubclass >
static SharedPtr<BaseConnectionAddressingInterfaceSubclass> Tp::BaseConnectionAddressingInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionAddressingInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseConnectionAddressingInterface::setGetContactsByVCardFieldCallback ( const GetContactsByVCardFieldCallback cb)
void Tp::BaseConnectionAddressingInterface::setGetContactsByURICallback ( const GetContactsByURICallback cb)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x6c.html0000644000175100017520000002352012530426260023164 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- l -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00788_source.html0000644000175100017520000002150612530426257022533 0ustar00kaffeinekaffeine00000000000000 pending-string.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-string.h
1 
23 #ifndef _TelepathyQt_pending_string_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_string_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/PendingOperation>
31 
32 #include <QString>
33 
34 namespace Tp
35 {
36 
37 class TP_QT_EXPORT PendingString : public PendingOperation
38 {
39  Q_OBJECT
40  Q_DISABLE_COPY(PendingString);
41 
42 public:
43  PendingString(QDBusPendingCall call, const SharedPtr<RefCounted> &object);
44  ~PendingString();
45 
46  QString result() const;
47 
48 protected:
49  void setResult(const QString &result);
50 
51 private Q_SLOTS:
52  TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher *watcher);
53 
54 private:
55  friend class ProtocolInfo;
56 
57  TP_QT_NO_EXPORT PendingString(const QString &errorName, const QString &errorMessage);
58 
59  struct Private;
60  friend struct Private;
61  Private *mPriv;
62 };
63 
64 } // Tp
65 
66 #endif
The ProtocolInfo class represents a Telepathy Protocol.
Definition: protocol-info.h:46
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The PendingString class is a generic subclass of PendingOperation representing a pending D-Bus method...
Definition: pending-string.h:37


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01087.html0000644000175100017520000001662112530426260021140 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Profile Member List

This is the complete list of members for Tp::Profile, including all inherited members.

allowOtherPresences() const Tp::Profile
cmName() const Tp::Profile
createForFileName(const QString &fileName)Tp::Profilestatic
createForServiceName(const QString &serviceName)Tp::Profilestatic
hasParameter(const QString &name) const Tp::Profile
hasPresence(const QString &id) const Tp::Profile
iconName() const Tp::Profile
isFake() const Tp::Profile
isValid() const Tp::Profile
name() const Tp::Profile
parameter(const QString &name) const Tp::Profile
ParameterList typedefTp::Profile
parameters() const Tp::Profile
presence(const QString &id) const Tp::Profile
PresenceList typedefTp::Profile
presences() const Tp::Profile
protocolName() const Tp::Profile
provider() const Tp::Profile
RefCounted()Tp::RefCountedinline
serviceName() const Tp::Profile
type() const Tp::Profile
unsupportedChannelClassSpecs() const Tp::Profile
~Profile()Tp::Profile
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00931.html0000644000175100017520000002364612530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelRoomListType Member List

This is the complete list of members for Tp::BaseChannelRoomListType, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseChannelRoomListType(const QString &server)Tp::BaseChannelRoomListTypeprotected
create(const QString &server=QString())Tp::BaseChannelRoomListTypeinlinestatic
create(const QString &server=QString())Tp::BaseChannelRoomListTypeinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
getListingRooms()Tp::BaseChannelRoomListType
gotRooms(const Tp::RoomInfoList &rooms)Tp::BaseChannelRoomListType
immutableProperties() const Tp::BaseChannelRoomListTypevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
listRooms(DBusError *error)Tp::BaseChannelRoomListType
ListRoomsCallback typedefTp::BaseChannelRoomListType
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
server() const Tp::BaseChannelRoomListType
setListingRooms(bool listing)Tp::BaseChannelRoomListType
setListRoomsCallback(const ListRoomsCallback &cb)Tp::BaseChannelRoomListType
setStopListingCallback(const StopListingCallback &cb)Tp::BaseChannelRoomListType
stopListing(DBusError *error)Tp::BaseChannelRoomListType
StopListingCallback typedefTp::BaseChannelRoomListType
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelRoomListType()Tp::BaseChannelRoomListTypevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00430.html0000644000175100017520000004104412530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::PendingCaptchas Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingCaptchas Class Reference

The PendingCaptchas class represents an asynchronous operation for retrieving a captcha challenge from a connection manager. More...

#include <TelepathyQt/PendingCaptchas>

Inherits Tp::PendingOperation.

Public Member Functions

virtual ~PendingCaptchas ()
 
Captcha captcha () const
 
QList< CaptchacaptchaList () const
 
bool requiresMultipleCaptchas () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingCaptchas class represents an asynchronous operation for retrieving a captcha challenge from a connection manager.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingCaptchas::~PendingCaptchas ( )
virtual

Class destructor.

Member Function Documentation

Captcha Tp::PendingCaptchas::captcha ( ) const

Return the main captcha of the request. This captcha is guaranteed to be compatible with any constraint specified in CaptchaAuthentication::requestCaptchas().

This is a convenience method which should be used when requiresMultipleCaptchas() is false - otherwise, you should use captchaList.

The returned Captcha can be answered through CaptchaAuthentication::answer() by using its id.

This method will return a meaningful value only if the operation was completed successfully.

Returns
The main captcha for the pending request.
See Also
captchaList() CaptchaAuthentication::requestCaptchas() requiresMultipleCaptchas() CaptchaAuthentication::answer()
QList< Captcha > Tp::PendingCaptchas::captchaList ( ) const

Return all the captchas of the request. These captchas are guaranteed to be compatible with any constraint specified in CaptchaAuthentication::requestCaptchas().

If requiresMultipleCaptchas() is false, you probably want to use the convenience method captcha() instead.

The returned Captchas can be answered through CaptchaAuthentication::answer() by using their ids.

This method will return a meaningful value only if the operation was completed successfully.

Returns
All the captchas for the pending request.
See Also
captcha() CaptchaAuthentication::requestCaptchas() requiresMultipleCaptchas() CaptchaAuthentication::answer()
bool Tp::PendingCaptchas::requiresMultipleCaptchas ( ) const

Return whether this request requires more than one captcha to be answered or not.

This method should always be checked before answering to find out what the connection manager expects. Depending on the result, you might want to use the result from captcha() if just a single answer is required, or from captchaList() otherwise.

This method will return a meaningful value only if the operation was completed successfully.

Returns
The main captcha for the pending request.
See Also
captcha() captchaList()


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00185.html0000644000175100017520000002160112530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceAnonymityAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceAnonymityAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Member Functions

uint AnonymityModes () const
 
bool AnonymityMandatory () const
 
QString AnonymousID () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

uint Tp::Service::ChannelInterfaceAnonymityAdaptor::AnonymityModes ( ) const

Return the value of the exported D-Bus object property AnonymityModes of type uint.

Adaptees should export this property as a Qt property named 'anonymityModes' with type uint.

The list of initially requested anonymity modes on the channel. This MUST NOT change, and is Requestable.
Returns
The value of exported property AnonymityModes.
bool Tp::Service::ChannelInterfaceAnonymityAdaptor::AnonymityMandatory ( ) const

Return the value of the exported D-Bus object property AnonymityMandatory of type bool.

Adaptees should export this property as a Qt property named 'anonymityMandatory' with type bool.

Whether or not the anonymity settings are required for this channel. This MUST NOT change, and is Requestable.

Returns
The value of exported property AnonymityMandatory.
QString Tp::Service::ChannelInterfaceAnonymityAdaptor::AnonymousID ( ) const

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

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

This is the ID that the remote user of the channel MAY see (assuming there's a single ID). For example, for SIP connections where the From address has been scrambled by the CM, the scrambled address would be available here for the client to see. This is completely optional, and MAY be an empty string ("") in cases where anonymity modes are not set, or the CM doesn't know what the remote contact will see, or any other case where this doesn't make sense.

This MAY change over the lifetime of the channel, and SHOULD NOT be used with the Request interface.

Returns
The value of exported property AnonymousID.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00784_source.html0000644000175100017520000003115612530426257022531 0ustar00kaffeinekaffeine00000000000000 pending-stream-tube-connection.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-stream-tube-connection.h
1 
22 #ifndef _TelepathyQt_pending_stream_tube_connection_h_HEADER_GUARD_
23 #define _TelepathyQt_pending_stream_tube_connection_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/Constants>
30 #include <TelepathyQt/PendingOperation>
31 #include <TelepathyQt/Types>
32 
33 #include <QPair>
34 
35 class QHostAddress;
36 
37 namespace Tp
38 {
39 
40 class PendingVariant;
41 class IncomingStreamTubeChannel;
42 
43 class TP_QT_EXPORT PendingStreamTubeConnection : public PendingOperation
44 {
45  Q_OBJECT
46  Q_DISABLE_COPY(PendingStreamTubeConnection)
47 
48 public:
49  virtual ~PendingStreamTubeConnection();
50 
51  SocketAddressType addressType() const;
52 
53  QPair<QHostAddress, quint16> ipAddress() const;
54  QString localAddress() const;
55 
56  bool requiresCredentials() const;
57  uchar credentialByte() const;
58 
59 private Q_SLOTS:
60  TP_QT_NO_EXPORT void onChannelInvalidated(Tp::DBusProxy *proxy,
61  const QString &errorName, const QString &errorMessage);
62  TP_QT_NO_EXPORT void onAcceptFinished(Tp::PendingOperation *op);
63  TP_QT_NO_EXPORT void onTubeStateChanged(Tp::TubeChannelState state);
64 
65 private:
66  TP_QT_NO_EXPORT PendingStreamTubeConnection(PendingVariant *acceptOperation,
67  SocketAddressType type, bool requiresCredentials, uchar credentialByte,
68  const IncomingStreamTubeChannelPtr &channel);
69  TP_QT_NO_EXPORT PendingStreamTubeConnection(
70  const QString &errorName, const QString &errorMessage,
71  const IncomingStreamTubeChannelPtr &channel);
72 
73  struct Private;
74  friend class IncomingStreamTubeChannel;
75  friend struct Private;
76  Private *mPriv;
77 };
78 
79 }
80 
81 #endif // TP_PENDING_STREAM_TUBE_CONNECTION_H
The DBusProxy class is a base class representing a remote object available over D-Bus.
Definition: dbus-proxy.h:42
TubeChannelState
Definition: build/TelepathyQt/_gen/constants.h:3729
The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube...
Definition: incoming-stream-tube-channel.h:40
The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming ...
Definition: pending-stream-tube-connection.h:43
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingVariant class is a generic subclass of PendingOperation representing a pending D-Bus metho...
Definition: pending-variant.h:38
SocketAddressType
Definition: build/TelepathyQt/_gen/constants.h:3775


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01146.html0000644000175100017520000000524012530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ChatStateMap Member List

This is the complete list of members for Tp::ChatStateMap, including all inherited members.

ChatStateMap()Tp::ChatStateMapinline
ChatStateMap(const QMap< uint, uint > &a)Tp::ChatStateMapinline
operator=(const QMap< uint, uint > &a)Tp::ChatStateMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00244.html0000644000175100017520000006207312530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeServerAuthenticationInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeServerAuthenticationInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelTypeServerAuthenticationInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeServerAuthenticationInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeServerAuthenticationInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeServerAuthenticationInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeServerAuthenticationInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAuthenticationMethod () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.ServerAuthentication".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeServerAuthenticationInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeServerAuthenticationInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeServerAuthenticationInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeServerAuthenticationInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeServerAuthenticationInterface::ChannelTypeServerAuthenticationInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeServerAuthenticationInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeServerAuthenticationInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.ServerAuthentication", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeServerAuthenticationInterface::requestPropertyAuthenticationMethod ( ) const
inline

Asynchronous getter for the remote object property AuthenticationMethod of type QString.

This property defines the method used for the authentication step represented by this channel, which MUST be one of this channel's ChannelInterface::Interfaces .

The initially-defined interface that can be used here is ChannelInterfaceSASLAuthenticationInterface .

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeServerAuthenticationInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelTypeServerAuthenticationInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00780_source.html0000644000175100017520000002563712530426257022534 0ustar00kaffeinekaffeine00000000000000 pending-ready.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-ready.h
1 
23 #ifndef _TelepathyQt_pending_ready_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_ready_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/DBusProxyFactory>
31 #include <TelepathyQt/PendingOperation>
32 #include <TelepathyQt/ReadinessHelper>
33 #include <TelepathyQt/SharedPtr>
34 
35 #include <QSet>
36 
37 namespace Tp
38 {
39 
40 class TP_QT_EXPORT PendingReady: public PendingOperation
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(PendingReady);
44 
45 public:
46  ~PendingReady();
47 
48  DBusProxyPtr proxy() const;
49 
50  Features requestedFeatures() const;
51 
52 private Q_SLOTS:
53  TP_QT_NO_EXPORT void onNestedFinished(Tp::PendingOperation *);
54 
55 private:
56  friend class Connection;
57  friend class DBusProxyFactory;
58  friend class ReadinessHelper;
59 
60  TP_QT_NO_EXPORT PendingReady(const SharedPtr<RefCounted> &object, const Features &requestedFeatures);
61  TP_QT_NO_EXPORT PendingReady(const SharedPtr<DBusProxyFactory> &factory,
62  const DBusProxyPtr &proxy, const Features &requestedFeatures);
63 
64  struct Private;
65  friend struct Private;
66  Private *mPriv;
67 };
68 
69 } // Tp
70 
71 #endif
The PendingReady class represents the features requested and the reply to a request for an object to ...
Definition: pending-ready.h:40
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
The Connection class represents a Telepathy connection.
Definition: connection.h:62
The DBusProxyFactory class is a base class for all D-Bus proxy factory classes. Handles proxy caching...
Definition: dbus-proxy-factory.h:48
The ReadinessHelper class is a helper class used by the introspection process.
Definition: readiness-helper.h:48
The Features class represents a list of Feature.
Definition: feature.h:61


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01205.html0000644000175100017520000000533012530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::SupportedSocketMap Member List

This is the complete list of members for Tp::SupportedSocketMap, including all inherited members.

operator=(const QMap< uint, UIntList > &a)Tp::SupportedSocketMapinline
SupportedSocketMap()Tp::SupportedSocketMapinline
SupportedSocketMap(const QMap< uint, UIntList > &a)Tp::SupportedSocketMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00303.html0000644000175100017520000012226112530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceRequestsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< QDBusObjectPath, QVariantMap > 
CreateChannel (const QVariantMap &request, int timeout=-1)
 
QDBusPendingReply< bool,
QDBusObjectPath, QVariantMap > 
EnsureChannel (const QVariantMap &request, int timeout=-1)
 

Signals

void NewChannels (const Tp::ChannelDetailsList &channels)
 
void ChannelClosed (const QDBusObjectPath &removed)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceRequestsInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceRequestsInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceRequestsInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceRequestsInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceRequestsInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyChannels () const
 
Tp::PendingVariantrequestPropertyRequestableChannelClasses () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.Requests".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceRequestsInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceRequestsInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceRequestsInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceRequestsInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceRequestsInterface::ConnectionInterfaceRequestsInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceRequestsInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceRequestsInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.Requests", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceRequestsInterface::requestPropertyChannels ( ) const
inline

Asynchronous getter for the remote object property Channels of type Tp::ChannelDetailsList.

A list of all the channels which currently exist on this connection. Change notification is via the NewChannels and ChannelClosed signals.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceRequestsInterface::requestPropertyRequestableChannelClasses ( ) const
inline

Asynchronous getter for the remote object property RequestableChannelClasses of type Tp::RequestableChannelClassList.

The classes of channel that are expected to be available on this connection, i.e. those for which CreateChannel() can reasonably be expected to succeed. User interfaces can use this information to show or hide UI components.

This property cannot change after the connection has gone to state Connection_Status_Connected, so there is no change notification (if the connection has context-dependent capabilities, it SHOULD advertise support for all classes of channel that it might support during its lifetime). Before this state has been reached, the value of this property is undefined.

This is not on an optional interface, because connection managers can always offer some sort of clue about the channel classes they expect to support (at worst, they can announce support for everything for which they have code).

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceRequestsInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<QDBusObjectPath, QVariantMap> Tp::Client::ConnectionInterfaceRequestsInterface::CreateChannel ( const QVariantMap &  request,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method CreateChannel on the remote object.

Request that an entirely new channel is created.

There is deliberately no flag corresponding to the suppress_handler argument to ConnectionInterface::RequestChannel() , because passing a FALSE value for that argument is deprecated. Requests made using this interface always behave as though suppress_handler was TRUE.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
request

A dictionary containing desirable properties, which MUST include ChannelInterface::ChannelType . Some properties are defined such that only an exact match makes sense, and connection managers MUST NOT satisfy a request with a channel where that property does not match; some properties are defined such that the connection manager MAY treat the request as merely a hint, and make a best-effort attempt to satisfy it. This is documented separately for each property.

If this dictionary contains a property whose semantics are not known to the connection manager, this method MUST fail without side-effects (in particular it must not create a new channel).

This is necessary if we want to be able to invent properties in future that, when used in a request, are hard requirements rather than just hints. A connection manager that did not know the semantics of those properties could incorrectly return a new channel that did not satisfy the requirements.

The connection manager MUST NOT respond successfully, and SHOULD NOT create a new channel or cause any other side-effects, unless it can create a new channel that satisfies the client's requirements.

Properties that will be set by this argument need not have write access after the channel has been created - indeed, it is expected that most will be read-only.

timeoutThe timeout in milliseconds.
Returns

The Channel object, which MUST NOT be signalled with NewChannels() until after this method returns.

This allows the requester to alter its handling of NewChannels by knowing whether one of the channels satisfied a request it made.

Returns

Properties of the channel that was produced, equivalent to the properties in Channel_Details. Connection managers MUST NOT include properties here whose values can change, for the same reasons as in Channel_Details.

QDBusPendingReply<bool, QDBusObjectPath, QVariantMap> Tp::Client::ConnectionInterfaceRequestsInterface::EnsureChannel ( const QVariantMap &  request,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method EnsureChannel on the remote object.

Request that channels are ensured to exist.

The connection manager is in the best position to determine which existing channels could satisfy which requests.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
request

A dictionary containing desirable properties, with the same semantics as the corresponding parameter to CreateChannel() .

timeoutThe timeout in milliseconds.
Returns

If false, the caller of EnsureChannel MUST assume that some other process is handling this channel; if true, the caller of EnsureChannel SHOULD handle it themselves or delegate it to another client.

If the creation of a channel makes several calls to EnsureChannel (and no other requests) successful, exactly one of those calls MUST return a true value for this argument.

If the creation of a channel makes other requests successful, the value returned for this argument MUST be such that exactly one of the clients making requests ends up responsible for the channel. In particular, if CreateChannel() returns a channel C, any EnsureChannel calls that also return C MUST return a false value for this argument.

Returns
The Channel object. If it was created as a result of this method 
call, it MUST NOT be signalled by NewChannels until after this 
method returns. This allows the requester to alter its handling of 
NewChannels by knowing whether one of the channels satisfied a 
request it made.

Properties of the channel that was produced, equivalent to the properties in Channel_Details. Connection managers MUST NOT include properties here whose values can change, for the same reasons as in Channel_Details.

void Tp::Client::ConnectionInterfaceRequestsInterface::NewChannels ( const Tp::ChannelDetailsList channels)
signal

Represents the signal NewChannels on the remote object.

New channels have been created. The connection manager SHOULD emit a single signal for any group of closely related channels that are created at the same time, so that the channel dispatcher can try to dispatch them to a handler as a unit.

In particular, if additional channels are created as a side-effect of a call to CreateChannel() , these channels SHOULD appear in the same NewChannels signal as the channel that satisfies the request.

Joining a MUC Tube in XMPP requires joining the corresponding MUC (chatroom), so a ChannelTypeTextInterface channel can be created as a side-effect.

Every time NewChannels is emitted, it MUST be followed by a ConnectionInterface::NewChannel() signal for each channel.

The double signal emission is for the benefit of older Telepathy clients, which won't be listening for NewChannels.

The more informative NewChannels signal comes first so that clients that did not examine the connection to find out whether Requests is supported will see the more informative signal for each channel first, and then ignore the less informative signal because it announces a new channel of which they are already aware.

Parameters
channels
The channels and their details. All channels that are signalled 
together like this MUST have the same Bundle property, which may 
either refer to an existing bundle, or establish a new bundle.
void Tp::Client::ConnectionInterfaceRequestsInterface::ChannelClosed ( const QDBusObjectPath &  removed)
signal

Represents the signal ChannelClosed on the remote object.

Emitted when a channel is closed and hence disappears from the Channels property. This is redundant with the Closed signal on the channel itself, but it does provide full change notification for the Channels property.

Parameters
removed
The channel which has been removed from the Channels property
void Tp::Client::ConnectionInterfaceRequestsInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01274.html0000644000175100017520000003650012530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeCallInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeCallInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Accept(int timeout=-1)Tp::Client::ChannelTypeCallInterfaceinlineslot
AddContent(const QString &contentName, uint contentType, uint initialDirection, int timeout=-1)Tp::Client::ChannelTypeCallInterfaceinlineslot
CallMembersChanged(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason)Tp::Client::ChannelTypeCallInterfacesignal
CallStateChanged(uint callState, uint callFlags, const Tp::CallStateReason &callStateReason, const QVariantMap &callStateDetails)Tp::Client::ChannelTypeCallInterfacesignal
ChannelTypeCallInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeCallInterface
ChannelTypeCallInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeCallInterface
ChannelTypeCallInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeCallInterface
ChannelTypeCallInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeCallInterfaceexplicit
ChannelTypeCallInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeCallInterface
ContentAdded(const QDBusObjectPath &content)Tp::Client::ChannelTypeCallInterfacesignal
ContentRemoved(const QDBusObjectPath &content, const Tp::CallStateReason &reason)Tp::Client::ChannelTypeCallInterfacesignal
Hangup(uint reason, const QString &detailedHangupReason, const QString &message, int timeout=-1)Tp::Client::ChannelTypeCallInterfaceinlineslot
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeCallInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyCallFlags() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyCallMembers() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyCallState() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyCallStateDetails() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyCallStateReason() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyContents() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyHardwareStreaming() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyInitialAudio() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyInitialAudioName() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyInitialTransport() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyInitialVideo() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyInitialVideoName() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyMemberIdentifiers() const Tp::Client::ChannelTypeCallInterfaceinline
requestPropertyMutableContents() const Tp::Client::ChannelTypeCallInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
SetQueued(int timeout=-1)Tp::Client::ChannelTypeCallInterfaceinlineslot
SetRinging(int timeout=-1)Tp::Client::ChannelTypeCallInterfaceinlineslot
staticInterfaceName()Tp::Client::ChannelTypeCallInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00058.html0000644000175100017520000000603512530426257021141 0ustar00kaffeinekaffeine00000000000000 Shared Pointer Usage
   Home · All Classes · All Namespaces · Modules · Functions · Files
Shared Pointer Usage

Overview

The Qt parent/child object model does not fit well with Telepathy-Qt object model, where in some places we either don't know the object parent or we can't use a parent, as the object can stay alive without it.

To avoid memory leaks, caused by objects that got instantiated and don't have any parent, we decided to make some of our objects reference counted, by making them inherit RefCounted.

Making the object reference counted, does not guarantee that it will get deleted when nobody is referencing it.

When instantiating new classes that inherits RefCounted the reference count is 0, this is referred to as the floating state. Again this may lead to memory leaks, caused by objects in the floating state that never get deleted.

So the solution is to put the object in a SharedPtr as soon as possible, letting the SharedPtr manage the object lifetime.

The pattern used is that classes inherit RefCounted and are used together with SharedPtr. When the reference count hits 0, the object is deleted.

In order to assure that the object is put in a SharedPtr as soon as possible, our objects inheriting RefCounted will have the constructor either private or protected, in case we want to support custom classes, and will have a public static create method that will return a SharedPtr pointing to the object instance.

Note that when developing custom classes, this pattern should be followed, to avoid objects in floating state, avoiding memory leaks.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01019.html0000644000175100017520000001376312530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractDBusServiceInterface Member List

This is the complete list of members for Tp::AbstractDBusServiceInterface, including all inherited members.

AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
createAdaptor()=0Tp::AbstractDBusServiceInterfaceprotectedpure virtual
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const =0Tp::AbstractDBusServiceInterfacepure virtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00873.html0000644000175100017520000002233012530426257021142 0ustar00kaffeinekaffeine00000000000000 Client-side proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Client-side proxies

Modules

 Generic D-Bus proxies
 
 Account proxies
 
 Account manager proxies
 
 Channel proxies
 
 ChannelDispatcher proxies
 
 ChannelDispatchOperation proxies
 
 ChannelRequest proxies
 
 Client proxies
 
 Connection manager proxies
 
 Connection proxies
 
 Media session handler proxies
 
 Media stream handler proxies
 
 Telepathy Properties proxy
 

Classes

class  Tp::AbstractInterface
 The AbstractInterface class is the base class for all client side D-Bus interfaces, allowing access to remote methods/properties/signals. More...
 
class  Tp::DebugReceiver
 The DebugReceiver class provides a D-Bus proxy for a Telepathy Debug object. More...
 
class  Tp::OptionalInterfaceFactory< DBusProxySubclass >
 The OptionalInterfaceFactory class is a helper class for high-level D-Bus proxy classes willing to offer access to shared instances of interface proxies for optional interfaces. More...
 

Detailed Description

Proxy objects representing remote service objects accessed via D-Bus.

In addition to providing direct access to methods, signals and properties exported by the remote objects, some of these proxies offer features like automatic inspection of remote object capabilities, property tracking, backwards compatibility helpers for older services and other utilities.

This file is part of TelepathyQt

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Proxy objects representing remote service objects accessed via D-Bus.

In addition to providing direct access to methods, signals and properties exported by the remote objects, some of these proxies offer features like automatic inspection of remote object capabilities, property tracking, backwards compatibility helpers for older services and other utilities.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x74.html0000644000175100017520000000603512530426260024143 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00372.html0000644000175100017520000001753512530426257021147 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractClientHandler::HandlerInfo Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::AbstractClientHandler::HandlerInfo Class Reference

The AbstractClientHandler::HandlerInfo class provides a wrapper around the additional info about the channels passed to handleChannels(). More...

#include <TelepathyQt/AbstractClientHandler>

Public Member Functions

 HandlerInfo (const QVariantMap &info=QVariantMap())
 
 HandlerInfo (const HandlerInfo &other)
 
 ~HandlerInfo ()
 
HandlerInfooperator= (const HandlerInfo &other)
 
QVariantMap allInfo () const
 

Detailed Description

The AbstractClientHandler::HandlerInfo class provides a wrapper around the additional info about the channels passed to handleChannels().

See Also
AbstractClientHandler

Constructor & Destructor Documentation

Tp::AbstractClientHandler::HandlerInfo::HandlerInfo ( const QVariantMap &  info = QVariantMap())
Tp::AbstractClientHandler::HandlerInfo::HandlerInfo ( const HandlerInfo other)
Tp::AbstractClientHandler::HandlerInfo::~HandlerInfo ( )

Member Function Documentation

AbstractClientHandler::HandlerInfo & Tp::AbstractClientHandler::HandlerInfo::operator= ( const HandlerInfo other)
QVariantMap Tp::AbstractClientHandler::HandlerInfo::allInfo ( ) const


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01333.html0000644000175100017520000000710612530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceCallStateAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceCallStateAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
CallStateChanged(uint contact, uint state)Tp::Service::ChannelInterfaceCallStateAdaptorsignal
dbusConnection() const Tp::AbstractAdaptor
GetCallStates(const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceCallStateAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00117.html0000644000175100017520000010164212530426260021127 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionAliasingInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Connection.Interface.Aliasing. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback1
< Tp::ConnectionAliasFlags,
DBusError * > 
GetAliasFlagsCallback
 
typedef Callback2< QStringList,
const Tp::UIntList
&, DBusError * > 
RequestAliasesCallback
 
typedef Callback2
< Tp::AliasMap, const
Tp::UIntList &, DBusError * > 
GetAliasesCallback
 
typedef Callback2< void, const
Tp::AliasMap &, DBusError * > 
SetAliasesCallback
 

Public Member Functions

virtual ~BaseConnectionAliasingInterface ()
 
QVariantMap immutableProperties () const
 
void setGetAliasFlagsCallback (const GetAliasFlagsCallback &cb)
 
Tp::ConnectionAliasFlags getAliasFlags (DBusError *error)
 
void setRequestAliasesCallback (const RequestAliasesCallback &cb)
 
QStringList requestAliases (const Tp::UIntList &contacts, DBusError *error)
 
void setGetAliasesCallback (const GetAliasesCallback &cb)
 
Tp::AliasMap getAliases (const Tp::UIntList &contacts, DBusError *error)
 
void setSetAliasesCallback (const SetAliasesCallback &cb)
 
void setAliases (const Tp::AliasMap &aliases, DBusError *error)
 
void aliasesChanged (const Tp::AliasPairList &aliases)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionAliasingInterfacePtr 
create ()
 
template<typename BaseConnectionAliasingInterfaceSubclass >
static SharedPtr
< BaseConnectionAliasingInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionAliasingInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.Aliasing.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseConnectionAliasingInterface::~BaseConnectionAliasingInterface ( )
virtual

Class destructor.

Tp::BaseConnectionAliasingInterface::BaseConnectionAliasingInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionAliasingInterfacePtr Tp::BaseConnectionAliasingInterface::create ( )
inlinestatic
template<typename BaseConnectionAliasingInterfaceSubclass >
static SharedPtr<BaseConnectionAliasingInterfaceSubclass> Tp::BaseConnectionAliasingInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionAliasingInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

void Tp::BaseConnectionAliasingInterface::setGetAliasFlagsCallback ( const GetAliasFlagsCallback cb)
Tp::ConnectionAliasFlags Tp::BaseConnectionAliasingInterface::getAliasFlags ( DBusError error)
void Tp::BaseConnectionAliasingInterface::setRequestAliasesCallback ( const RequestAliasesCallback cb)
QStringList Tp::BaseConnectionAliasingInterface::requestAliases ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionAliasingInterface::setGetAliasesCallback ( const GetAliasesCallback cb)
Tp::AliasMap Tp::BaseConnectionAliasingInterface::getAliases ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionAliasingInterface::setSetAliasesCallback ( const SetAliasesCallback cb)
void Tp::BaseConnectionAliasingInterface::setAliases ( const Tp::AliasMap aliases,
DBusError error 
)
void Tp::BaseConnectionAliasingInterface::aliasesChanged ( const Tp::AliasPairList aliases)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x6d.html0000644000175100017520000004615412530426260023175 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- m -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01088.html0000644000175100017520000001110612530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Profile::Parameter Member List

This is the complete list of members for Tp::Profile::Parameter, including all inherited members.

dbusSignature() const Tp::Profile::Parameter
isMandatory() const Tp::Profile::Parameter
label() const Tp::Profile::Parameter
name() const Tp::Profile::Parameter
operator=(const Parameter &other)Tp::Profile::Parameter
Parameter()Tp::Profile::Parameter
Parameter(const Parameter &other)Tp::Profile::Parameter
Parameter(const QString &name, const QDBusSignature &dbusSignature, const QVariant &value, const QString &label, bool mandatory)Tp::Profile::Parameter
type() const Tp::Profile::Parameter
value() const Tp::Profile::Parameter
~Parameter()Tp::Profile::Parameter


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00932.html0000644000175100017520000001635412530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelServerAuthenticationType Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00431.html0000644000175100017520000003116712530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::Farstream::PendingChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Farstream::PendingChannel Class Reference

#include </home/kaffeine/devel/gsoc/release/telepathy-qt/TelepathyQt/Farstream/channel.h>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingChannel ()
 
TfChannel * tfChannel () const
 
CallChannelPtr callChannel () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Friends

PendingChannelcreateChannel (const CallChannelPtr &channel)
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Constructor & Destructor Documentation

Tp::Farstream::PendingChannel::~PendingChannel ( )

Member Function Documentation

TfChannel * Tp::Farstream::PendingChannel::tfChannel ( ) const
CallChannelPtr Tp::Farstream::PendingChannel::callChannel ( ) const

Friends And Related Function Documentation

PendingChannel* createChannel ( const CallChannelPtr &  channel)
friend


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00186.html0000644000175100017520000006771212530426260021146 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceAnonymityInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelInterfaceAnonymityInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceAnonymityInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceAnonymityInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceAnonymityInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceAnonymityInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyAnonymityModes () const
 
Tp::PendingVariantrequestPropertyAnonymityMandatory () const
 
Tp::PendingVariantrequestPropertyAnonymousID () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.Anonymity".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceAnonymityInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceAnonymityInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceAnonymityInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceAnonymityInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceAnonymityInterface::ChannelInterfaceAnonymityInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceAnonymityInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceAnonymityInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.Anonymity", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelInterfaceAnonymityInterface::requestPropertyAnonymityModes ( ) const
inline

Asynchronous getter for the remote object property AnonymityModes of type uint.

The list of initially requested anonymity modes on the channel. This MUST NOT change, and is Requestable.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceAnonymityInterface::requestPropertyAnonymityMandatory ( ) const
inline

Asynchronous getter for the remote object property AnonymityMandatory of type bool.

Whether or not the anonymity settings are required for this channel. This MUST NOT change, and is Requestable.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelInterfaceAnonymityInterface::requestPropertyAnonymousID ( ) const
inline

Asynchronous getter for the remote object property AnonymousID of type QString.

This is the ID that the remote user of the channel MAY see (assuming there's a single ID). For example, for SIP connections where the From address has been scrambled by the CM, the scrambled address would be available here for the client to see. This is completely optional, and MAY be an empty string ("") in cases where anonymity modes are not set, or the CM doesn't know what the remote contact will see, or any other case where this doesn't make sense.

This MAY change over the lifetime of the channel, and SHOULD NOT be used with the Request interface.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceAnonymityInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelInterfaceAnonymityInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01147.html0000644000175100017520000000531012530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ComponentStateMap Member List

This is the complete list of members for Tp::ComponentStateMap, including all inherited members.

ComponentStateMap()Tp::ComponentStateMapinline
ComponentStateMap(const QMap< uint, uint > &a)Tp::ComponentStateMapinline
operator=(const QMap< uint, uint > &a)Tp::ComponentStateMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00766_source.html0000644000175100017520000002626512530426257022536 0ustar00kaffeinekaffeine00000000000000 pending-contact-attributes.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-contact-attributes.h
1 
23 #ifndef _TelepathyQt_pending_contact_attributes_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_contact_attributes_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/PendingOperation>
31 #include <TelepathyQt/Types>
32 #include <TelepathyQt/Constants>
33 #include <TelepathyQt/Types>
34 
35 namespace Tp
36 {
37 
38 class ReferencedHandles;
39 
40 class TP_QT_EXPORT PendingContactAttributes : public PendingOperation
41 {
42  Q_OBJECT
43  Q_DISABLE_COPY(PendingContactAttributes)
44 
45 public:
47 
48  ConnectionPtr connection() const;
49 
50  const UIntList &contactsRequested() const;
51  const QStringList &interfacesRequested() const;
52  bool shouldReference() const;
53 
54  ReferencedHandles validHandles() const;
55  UIntList invalidHandles() const;
56  ContactAttributesMap attributes() const;
57 
58 private Q_SLOTS:
59  TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher);
60 
61 private:
62  friend class ConnectionLowlevel;
63 
64  TP_QT_NO_EXPORT PendingContactAttributes(const ConnectionPtr &connection,
65  const UIntList &handles,
66  const QStringList &interfaces, bool reference);
67 
68  TP_QT_NO_EXPORT void failImmediately(const QString &error, const QString &errorMessage);
69 
70  struct Private;
71  friend struct Private;
72  Private *mPriv;
73 };
74 
75 } // Tp
76 
77 #endif
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
Definition: build/TelepathyQt/_gen/types.h:101
Helper container for safe management of handle lifetimes. Every handle in a ReferencedHandles contain...
Definition: referenced-handles.h:47
Definition: build/TelepathyQt/_gen/types.h:950
The ConnectionLowlevel class extends Connection with support to low-level features.
Definition: connection-lowlevel.h:43
The PendingContactAttributes class represents the parameters of and the reply to an asynchronous requ...
Definition: pending-contact-attributes.h:40


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00245.html0000644000175100017520000002342212530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeServerTLSConnectionAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeServerTLSConnectionAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Member Functions

QDBusObjectPath ServerCertificate () const
 
QString Hostname () const
 
QStringList ReferenceIdentities () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QDBusObjectPath Tp::Service::ChannelTypeServerTLSConnectionAdaptor::ServerCertificate ( ) const

Return the value of the exported D-Bus object property ServerCertificate of type QDBusObjectPath.

Adaptees should export this property as a Qt property named 'serverCertificate' with type QDBusObjectPath.

A TLSCertificate containing the certificate chain as sent by the server, and other relevant information.

Returns
The value of exported property ServerCertificate.
QString Tp::Service::ChannelTypeServerTLSConnectionAdaptor::Hostname ( ) const

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

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

The hostname or domain that the user expects to connect to. Clients SHOULD use the ReferenceIdentities property to verify the identity of the certificate. Clients MAY display this hostname to the user as the expected identity. Clients SHOULD use this property to lookup pinned certificates or other user preferences for the connection.

Returns
The value of exported property Hostname.
QStringList Tp::Service::ChannelTypeServerTLSConnectionAdaptor::ReferenceIdentities ( ) const

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

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

The identities of the server we expect ServerCertificate to certify; clients SHOULD verify that ServerCertificate matches one of these identities when checking its validity. This property MUST NOT be the empty list; it MUST contain the value of the Hostname property. All other identities included in this property MUST be derived from explicit user input or choices, such as Parameters passed to RequestConnection. The primary use for this property is for XMPP services hosted by Google Apps. When connecting to Google Talk using an .com JID, the server correctly presents a certificate for gmail.com; however, for domains hosted via Google Apps, a certificate for talk.google.com is offered, due to unresolved technical limitations. If the user has explicitly chosen to create a Google Talk account, then trusting a certificate for talk.google.com is reasonable. To handle this case, the connection manager may add the values of any or all of the server, fallback-server and extra-identities parameters; the Google Talk account creation user interface may set these parameters appropriately, or the user may set them for accounts with other services.

Returns
The value of exported property ReferenceIdentities.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01206.html0000644000175100017520000000503512530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::TLSCertificateRejection Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00762_source.html0000644000175100017520000003521012530426257022520 0ustar00kaffeinekaffeine00000000000000 pending-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
pending-channel.h
1 
23 #ifndef _TelepathyQt_pending_channel_h_HEADER_GUARD_
24 #define _TelepathyQt_pending_channel_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Channel>
31 #include <TelepathyQt/PendingOperation>
32 
33 #include <QString>
34 #include <QVariantMap>
35 
36 #include <QDBusPendingCallWatcher>
37 
38 namespace Tp
39 {
40 
41 class Connection;
42 class HandledChannelNotifier;
43 
44 class TP_QT_EXPORT PendingChannel : public PendingOperation
45 {
46  Q_OBJECT
47  Q_DISABLE_COPY(PendingChannel)
48 
49 public:
50  ~PendingChannel();
51 
52  ConnectionPtr connection() const;
53 
54  bool yours() const;
55 
56  const QString &channelType() const;
57 
58  uint targetHandleType() const;
59 
60  uint targetHandle() const;
61 
62  QVariantMap immutableProperties() const;
63 
64  ChannelPtr channel() const;
65 
66  HandledChannelNotifier *handledChannelNotifier() const;
67 
68 private Q_SLOTS:
69  TP_QT_NO_EXPORT void onConnectionCreateChannelFinished(
70  QDBusPendingCallWatcher *watcher);
71  TP_QT_NO_EXPORT void onConnectionEnsureChannelFinished(
72  QDBusPendingCallWatcher *watcher);
73  TP_QT_NO_EXPORT void onChannelReady(Tp::PendingOperation *op);
74 
75  TP_QT_NO_EXPORT void onHandlerError(const QString &errorName,
76  const QString &errorMessage);
77  TP_QT_NO_EXPORT void onHandlerChannelReceived(
78  const Tp::ChannelPtr &channel);
79  TP_QT_NO_EXPORT void onAccountCreateChannelFinished(
81 
82 private:
83  friend class Account;
84  friend class ConnectionLowlevel;
85 
86  TP_QT_NO_EXPORT PendingChannel(const ConnectionPtr &connection,
87  const QString &errorName, const QString &errorMessage);
88  TP_QT_NO_EXPORT PendingChannel(const ConnectionPtr &connection,
89  const QVariantMap &request, bool create, int timeout = -1);
90  TP_QT_NO_EXPORT PendingChannel(const AccountPtr &account,
91  const QVariantMap &request, const QDateTime &userActionTime,
92  bool create);
93  TP_QT_NO_EXPORT PendingChannel(const QString &errorName,
94  const QString &errorMessage);
95 
96  struct Private;
97  friend struct Private;
98  Private *mPriv;
99 };
100 
101 } // Tp
102 
103 #endif
The HandledChannelNotifier class can be used to keep track of channel() being re-requested.
Definition: handled-channel-notifier.h:41
The PendingOperation class is a base class for pending asynchronous operations.
Definition: pending-operation.h:45
The PendingChannel class represents the parameters of and the reply to an asynchronous channel reques...
Definition: pending-channel.h:44
The ConnectionLowlevel class extends Connection with support to low-level features.
Definition: connection-lowlevel.h:43
The Account class represents a Telepathy account.
Definition: account.h:68


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00304.html0000644000175100017520000002054212530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceServicePointAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceServicePointAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Signals

void ServicePointsChanged (const Tp::ServicePointInfoList &servicePoints)
 

Public Member Functions

Tp::ServicePointInfoList KnownServicePoints () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ServicePointInfoList Tp::Service::ConnectionInterfaceServicePointAdaptor::KnownServicePoints ( ) const

Return the value of the exported D-Bus object property KnownServicePoints of type Tp::ServicePointInfoList.

Adaptees should export this property as a Qt property named 'knownServicePoints' with type Tp::ServicePointInfoList.

The list of all (known) service points.
Returns
The value of exported property KnownServicePoints.
void Tp::Service::ConnectionInterfaceServicePointAdaptor::ServicePointsChanged ( const Tp::ServicePointInfoList servicePoints)
signal

Represents the exported D-Bus signal ServicePointsChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void servicePointsChanged(const Tp::ServicePointInfoList& servicePoints);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
servicePoints

The new value of \\\ \\link requestPropertyKnownServicePoints() KnownServicePoints \\endlink \\htmlonly .


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01275.html0000644000175100017520000002010712530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeContactListInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeContactListInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelTypeContactListInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeContactListInterface
ChannelTypeContactListInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeContactListInterface
ChannelTypeContactListInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeContactListInterface
ChannelTypeContactListInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeContactListInterfaceexplicit
ChannelTypeContactListInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeContactListInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeContactListInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeContactListInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeContactListInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/bc_s.png0000644000175100017520000000124412530426257021047 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDR€_ kIDATxíËkQÆÏ¹É̤I&“¦mš&156*nÄ…”ܸR,4 +Hµ(U­b”ª1‚ŠˆJ.º(E·mßúhëJmKS'C›(‚èäÑ…¤ï &äÖþ ‡ïrÎåü3gö(z÷ýÒ&_9ó}’ÕŸ@‰mÚu ` Øh`ñ÷Ô¯  „ú&·ññ×Ù~“½—Üò‡ÎÝÑM4¸%‰3²§?Êêh)€ÿù™\ÄYi>Jb @gûßiÞˆú²Ñkg§ãê\è½­šEUæv+?E€î"pæÖÛB\ƒY&ðØó$vM+ê’Dn¼)}òþ:§Xoâ ƒ3ŠÚ¯'¯¿.‚fÁ0ìuŠ9òLýj€f6¸%«3Gf”Ô#Ôsm(,ùÃk*Ê’³Jª…¯¼JË¢o䆔¼u_~ °r]%%mnu]z°r5[ÍÆ°«Úò•Xeµ’†Iù<ÈèÐÅg@IÔÚÞàµë3‚:/<JÇ’ÐQ) ñ¹…tÚß÷(Mû\63éCgl!ýí;ÿ¸4Ùhâñ=÷Zë29­w’ÝÒ´·ˆV;ÊL3ƒj&7©·º½÷a!I†)ëë$-öÇÓú³›‹7tIV¾VàñÔübf¨8¡ÈƒB<﫵imnÿœÈ‡„ lߣù‡ÛD —#É5“­'Æ4?쬲øM’™›°»g¬‚|5Åçµ½GNdÓÐr|ô”Ã&„ì"7+'³@ 5‡G➑Džâɬ^;õã–.3Òr"ý_R³¿Â@²oI¾å$IEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00874.html0000644000175100017520000001311112530426257021140 0ustar00kaffeinekaffeine00000000000000 Account proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Account proxies

Classes

class  Tp::AccountSet
 The AccountSet class represents a set of Telepathy accounts filtered by a given criteria. More...
 
class  Tp::Account
 The Account class represents a Telepathy account. More...
 
class  Tp::ContactMessenger
 The ContactMessenger class provides an easy way to send text messages to a contact and also track sent/receive text messages from the same contact. More...
 
class  Tp::PendingAccount
 The PendingAccount class represents the parameters of and the reply to an asynchronous account request. More...
 
class  Tp::Client::AccountInterface
 
class  Tp::Client::AccountInterfaceAddressingInterface
 
class  Tp::Client::AccountInterfaceAvatarInterface
 
class  Tp::Client::AccountInterfaceStorageInterface
 

Detailed Description

Proxy objects representing remote Telepathy account objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x75.html0000644000175100017520000000424212530426260024142 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00373.html0000644000175100017520000001267012530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::HTTPPostData Struct Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::HTTPPostData Struct Reference

#include <TelepathyQt/Types>

Public Attributes

QString key
 
QString value
 

Detailed Description

Structure type generated from the specification.

A pair (key, value) representing POST data compatible with the application/x-www-form-urlencoded MIME type. The strings MUST be valid UTF-8 strings, and the characters used in the key MUST obey the requirements of the HTML CDATA type. The value MUST NOT be encoded with HTML entities.

For example, if the POST data should contain a key "less-than" with value "<", and a key "percent" with value "%", this should be represented as two HTTP_Post_Data structures, ("less-than", "<") and ("percent", "%"), resulting in a POST request whose request body is "less-than=&lt;&percent=%25". If a client passes this to a browser by writing it into an HTML form, it could do so by representing it as:

<input type="hidden" name="less-than">&lt;</input>
<input type="hidden" name="percent">%</input>

This data can be used to generate a HTML file that will automatically load the URL with appropriate POST data, in which case the client MUST convert any characters that are special within HTML into HTML entities. Alternatively, it can be used in an API that will instruct the browser how to load the URL (like the Netscape Plug-in API), in which case the client MUST escape characters that are reserved in URLs, if appropriate for that API.

An array of pairs is used instead of a map from keys to values, because it's valid to repeat keys in both HTML and x-www-form-urlencoded data.

Member Data Documentation

QString Tp::HTTPPostData::key

The key, corresponding to a HTML control name

QString Tp::HTTPPostData::value

The value


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01334.html0000644000175100017520000001304212530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
AnswerCaptchas(const Tp::CaptchaAnswers &answers, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptorslot
CancelCaptcha(uint reason, const QString &debugMessage, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptorslot
CanRetryCaptcha() const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor
CaptchaError() const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor
CaptchaErrorDetails() const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor
CaptchaStatus() const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor
dbusConnection() const Tp::AbstractAdaptor
GetCaptchaData(uint ID, const QString &mimeType, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptorslot
GetCaptchas(const QDBusMessage &dbusMessage, uint &numberRequired, QString &language)Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00118.html0000644000175100017520000011022312530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionAvatarsInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Connection.Interface.Avatars. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback2
< Tp::AvatarTokenMap, const
Tp::UIntList &, DBusError * > 
GetKnownAvatarTokensCallback
 
typedef Callback2< void, const
Tp::UIntList &, DBusError * > 
RequestAvatarsCallback
 
typedef Callback3< QString,
const QByteArray &, const
QString &, DBusError * > 
SetAvatarCallback
 
typedef Callback1< void,
DBusError * > 
ClearAvatarCallback
 

Public Member Functions

virtual ~BaseConnectionAvatarsInterface ()
 
QVariantMap immutableProperties () const
 
AvatarSpec avatarDetails () const
 
void setAvatarDetails (const AvatarSpec &spec)
 
void setGetKnownAvatarTokensCallback (const GetKnownAvatarTokensCallback &cb)
 
Tp::AvatarTokenMap getKnownAvatarTokens (const Tp::UIntList &contacts, DBusError *error)
 
void setRequestAvatarsCallback (const RequestAvatarsCallback &cb)
 
void requestAvatars (const Tp::UIntList &contacts, DBusError *error)
 
void setSetAvatarCallback (const SetAvatarCallback &cb)
 
QString setAvatar (const QByteArray &avatar, const QString &mimeType, DBusError *error)
 
void setClearAvatarCallback (const ClearAvatarCallback &cb)
 
void clearAvatar (DBusError *error)
 
void avatarUpdated (uint contact, const QString &newAvatarToken)
 
void avatarRetrieved (uint contact, const QString &token, const QByteArray &avatar, const QString &type)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionAvatarsInterfacePtr 
create ()
 
template<typename BaseConnectionAvatarsInterfaceSubclass >
static SharedPtr
< BaseConnectionAvatarsInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionAvatarsInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.Avatars.

Member Typedef Documentation

typedef Callback3<QString, const QByteArray &, const QString &, DBusError*> Tp::BaseConnectionAvatarsInterface::SetAvatarCallback

Constructor & Destructor Documentation

Tp::BaseConnectionAvatarsInterface::~BaseConnectionAvatarsInterface ( )
virtual

Class destructor.

Tp::BaseConnectionAvatarsInterface::BaseConnectionAvatarsInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionAvatarsInterfacePtr Tp::BaseConnectionAvatarsInterface::create ( )
inlinestatic
template<typename BaseConnectionAvatarsInterfaceSubclass >
static SharedPtr<BaseConnectionAvatarsInterfaceSubclass> Tp::BaseConnectionAvatarsInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionAvatarsInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

AvatarSpec Tp::BaseConnectionAvatarsInterface::avatarDetails ( ) const
void Tp::BaseConnectionAvatarsInterface::setAvatarDetails ( const AvatarSpec spec)
void Tp::BaseConnectionAvatarsInterface::setGetKnownAvatarTokensCallback ( const GetKnownAvatarTokensCallback cb)
Tp::AvatarTokenMap Tp::BaseConnectionAvatarsInterface::getKnownAvatarTokens ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionAvatarsInterface::setRequestAvatarsCallback ( const RequestAvatarsCallback cb)
void Tp::BaseConnectionAvatarsInterface::requestAvatars ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionAvatarsInterface::setSetAvatarCallback ( const SetAvatarCallback cb)
QString Tp::BaseConnectionAvatarsInterface::setAvatar ( const QByteArray &  avatar,
const QString &  mimeType,
DBusError error 
)
void Tp::BaseConnectionAvatarsInterface::setClearAvatarCallback ( const ClearAvatarCallback cb)
void Tp::BaseConnectionAvatarsInterface::clearAvatar ( DBusError error)
void Tp::BaseConnectionAvatarsInterface::avatarUpdated ( uint  contact,
const QString &  newAvatarToken 
)
void Tp::BaseConnectionAvatarsInterface::avatarRetrieved ( uint  contact,
const QString &  token,
const QByteArray &  avatar,
const QString &  type 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x6e.html0000644000175100017520000002712012530426260023166 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- n -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01089.html0000644000175100017520000001047712530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Profile::Presence Member List

This is the complete list of members for Tp::Profile::Presence, including all inherited members.

canHaveStatusMessage() const Tp::Profile::Presence
iconName() const Tp::Profile::Presence
id() const Tp::Profile::Presence
isDisabled() const Tp::Profile::Presence
label() const Tp::Profile::Presence
operator=(const Presence &other)Tp::Profile::Presence
Presence()Tp::Profile::Presence
Presence(const Presence &other)Tp::Profile::Presence
Presence(const QString &id, const QString &label, const QString &iconName, const QString &message, bool disabled)Tp::Profile::Presence
~Presence()Tp::Profile::Presence


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00933.html0000644000175100017520000002445112530426260021137 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelCaptchaAuthenticationInterface Member List

This is the complete list of members for Tp::BaseChannelCaptchaAuthenticationInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
AnswerCaptchasCallback typedefTp::BaseChannelCaptchaAuthenticationInterface
CancelCaptchaCallback typedefTp::BaseChannelCaptchaAuthenticationInterface
create(bool canRetryCaptcha)Tp::BaseChannelCaptchaAuthenticationInterfaceinlinestatic
create(bool canRetryCaptcha)Tp::BaseChannelCaptchaAuthenticationInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
GetCaptchaDataCallback typedefTp::BaseChannelCaptchaAuthenticationInterface
GetCaptchasCallback typedefTp::BaseChannelCaptchaAuthenticationInterface
immutableProperties() const Tp::BaseChannelCaptchaAuthenticationInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setAnswerCaptchasCallback(const AnswerCaptchasCallback &cb)Tp::BaseChannelCaptchaAuthenticationInterface
setCancelCaptchaCallback(const CancelCaptchaCallback &cb)Tp::BaseChannelCaptchaAuthenticationInterface
setCaptchaError(const QString &busName)Tp::BaseChannelCaptchaAuthenticationInterface
setCaptchaErrorDetails(const QVariantMap &error)Tp::BaseChannelCaptchaAuthenticationInterface
setCaptchaStatus(uint status)Tp::BaseChannelCaptchaAuthenticationInterface
setGetCaptchaDataCallback(const GetCaptchaDataCallback &cb)Tp::BaseChannelCaptchaAuthenticationInterface
setGetCaptchasCallback(const GetCaptchasCallback &cb)Tp::BaseChannelCaptchaAuthenticationInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelCaptchaAuthenticationInterface()Tp::BaseChannelCaptchaAuthenticationInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00432.html0000644000175100017520000005317112530426260021132 0ustar00kaffeinekaffeine00000000000000 Tp::PendingChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingChannel Class Reference

The PendingChannel class represents the parameters of and the reply to an asynchronous channel request. More...

#include <TelepathyQt/PendingChannel>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingChannel ()
 
ConnectionPtr connection () const
 
bool yours () const
 
const QString & channelType () const
 
uint targetHandleType () const
 
uint targetHandle () const
 
QVariantMap immutableProperties () const
 
ChannelPtr channel () const
 
HandledChannelNotifierhandledChannelNotifier () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingChannel class represents the parameters of and the reply to an asynchronous channel request.

Instances of this class cannot be constructed directly; the only way to get one is trough Connection or Account.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingChannel::~PendingChannel ( )

Class destructor.

Member Function Documentation

ConnectionPtr Tp::PendingChannel::connection ( ) const

Return the connection through which the channel request was made.

Note that if this channel request was created through Account, a null ConnectionPtr will be returned.

Returns
A pointer to the Connection object.
bool Tp::PendingChannel::yours ( ) const

Return whether this channel belongs to this process.

If false, the caller must assume that some other process is handling this channel; if true, the caller should handle it themselves or delegate it to another client.

Returns
true if it belongs, false otherwise.
const QString & Tp::PendingChannel::channelType ( ) const

Return the channel type specified in the channel request.

Returns
The D-Bus interface name for the type of the channel.
uint Tp::PendingChannel::targetHandleType ( ) const

If the channel request has finished, return the handle type of the resulting channel. Otherwise, return the handle type that was requested.

(One example of a request producing a different target handle type is that on protocols like MSN, one-to-one conversations don't really exist, and if you request a text channel with handle type HandleTypeContact, what you will actually get is a text channel with handle type HandleTypeNone, with the requested contact as a member.)

Returns
The target handle type as HandleType.
See Also
targetHandle()
uint Tp::PendingChannel::targetHandle ( ) const

If the channel request has finished, return the target handle of the resulting channel. Otherwise, return the target handle that was requested (which might be different in some situations - see targetHandleType()).

Returns
An integer representing the target handle, which is of the type targetHandleType() indicates.
See Also
targetHandleType()
QVariantMap Tp::PendingChannel::immutableProperties ( ) const

If this channel request has finished, return the immutable properties of the resulting channel. Otherwise, return an empty map.

The keys and values in this map are defined by the Telepathy specification, or by third-party extensions to that specification. These are the properties that cannot change over the lifetime of the channel; they're announced in the result of the request, for efficiency. This map should be passed to the constructor of Channel or its subclasses (such as TextChannel).

These properties can also be used to process channels in a way that does not require the creation of a Channel object - for instance, a ChannelDispatcher implementation should be able to classify and process channels based on their immutable properties, without needing to create Channel objects.

Returns
The immutable properties as QVariantMap.
ChannelPtr Tp::PendingChannel::channel ( ) const

Return the channel resulting from the channel request.

Returns
A pointer to the Channel object.
HandledChannelNotifier * Tp::PendingChannel::handledChannelNotifier ( ) const

If this channel request has finished and was created through Account, return a HandledChannelNotifier object that will keep track of channel() being re-requested.

Returns
A HandledChannelNotifier instance, or 0 if an error occurred.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00187.html0000644000175100017520000002173212530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceCallStateAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceCallStateAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::ChannelCallStateMap GetCallStates (const QDBusMessage &dbusMessage)
 

Signals

void CallStateChanged (uint contact, uint state)
 

Additional Inherited Members

- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::ChannelCallStateMap Tp::Service::ChannelInterfaceCallStateAdaptor::GetCallStates ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getCallStates(const Tp::Service::ChannelInterfaceCallStateAdaptor::GetCallStatesContextPtr &context);

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

Get the current call states for all contacts involved in this call.

Returns
The current call states. Participants where the call state flags 
would be 0 (all unset) may be omitted from this mapping.
void Tp::Service::ChannelInterfaceCallStateAdaptor::CallStateChanged ( uint  contact,
uint  state 
)
signal

Represents the exported D-Bus signal CallStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void callStateChanged(uint contact, uint state);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
contact
An integer handle for the contact.
state
The new state for this contact.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01148.html0000644000175100017520000000535612530426260021141 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactAttributesMap Member List

This is the complete list of members for Tp::ContactAttributesMap, including all inherited members.

ContactAttributesMap()Tp::ContactAttributesMapinline
ContactAttributesMap(const QMap< uint, QVariantMap > &a)Tp::ContactAttributesMapinline
operator=(const QMap< uint, QVariantMap > &a)Tp::ContactAttributesMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00246.html0000644000175100017520000007163312530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeServerTLSConnectionInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeServerTLSConnectionInterface Class Reference

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Member Functions

 ChannelTypeServerTLSConnectionInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeServerTLSConnectionInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeServerTLSConnectionInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeServerTLSConnectionInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeServerTLSConnectionInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyServerCertificate () const
 
Tp::PendingVariantrequestPropertyHostname () const
 
Tp::PendingVariantrequestPropertyReferenceIdentities () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeServerTLSConnectionInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeServerTLSConnectionInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeServerTLSConnectionInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeServerTLSConnectionInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeServerTLSConnectionInterface::ChannelTypeServerTLSConnectionInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeServerTLSConnectionInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeServerTLSConnectionInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeServerTLSConnectionInterface::requestPropertyServerCertificate ( ) const
inline

Asynchronous getter for the remote object property ServerCertificate of type QDBusObjectPath.

A TLSCertificate containing the certificate chain as sent by the server, and other relevant information.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeServerTLSConnectionInterface::requestPropertyHostname ( ) const
inline

Asynchronous getter for the remote object property Hostname of type QString.

The hostname or domain that the user expects to connect to. Clients SHOULD use the ReferenceIdentities property to verify the identity of the certificate. Clients MAY display this hostname to the user as the expected identity. Clients SHOULD use this property to lookup pinned certificates or other user preferences for the connection.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeServerTLSConnectionInterface::requestPropertyReferenceIdentities ( ) const
inline

Asynchronous getter for the remote object property ReferenceIdentities of type QStringList.

The identities of the server we expect ServerCertificate to certify; clients SHOULD verify that ServerCertificate matches one of these identities when checking its validity. This property MUST NOT be the empty list; it MUST contain the value of the Hostname property. All other identities included in this property MUST be derived from explicit user input or choices, such as Parameters passed to RequestConnection. The primary use for this property is for XMPP services hosted by Google Apps. When connecting to Google Talk using an .com JID, the server correctly presents a certificate for gmail.com; however, for domains hosted via Google Apps, a certificate for talk.google.com is offered, due to unresolved technical limitations. If the user has explicitly chosen to create a Google Talk account, then trusting a certificate for talk.google.com is reasonable. To handle this case, the connection manager may add the values of any or all of the server, fallback-server and extra-identities parameters; the Google Talk account creation user interface may set these parameters appropriately, or the user may set them for accounts with other services.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeServerTLSConnectionInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ChannelTypeServerTLSConnectionInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01207.html0000644000175100017520000000610612530426260021127 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::TubeInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00748_source.html0000644000175100017520000003471112530426257022531 0ustar00kaffeinekaffeine00000000000000 or-filter.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
or-filter.h
1 
23 #ifndef _TelepathyQt_or_filter_h_HEADER_GUARD_
24 #define _TelepathyQt_or_filter_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Filter>
31 #include <TelepathyQt/Types>
32 
33 namespace Tp
34 {
35 
36 template <class T>
37 class OrFilter : public Filter<T>
38 {
39 public:
41  const QList<SharedPtr<const Filter<T> > > &filters = QList<SharedPtr<const Filter<T> > >())
42  {
44  }
45 
46  inline virtual ~OrFilter() { }
47 
48  inline virtual bool isValid() const
49  {
50  Q_FOREACH (const SharedPtr<const Filter<T> > &filter, mFilters) {
51  if (!filter || !filter->isValid()) {
52  return false;
53  }
54  }
55  return true;
56  }
57 
58  inline virtual bool matches(const SharedPtr<T> &t) const
59  {
60  if (!isValid()) {
61  return false;
62  }
63 
64  Q_FOREACH (const SharedPtr<const Filter<T> > &filter, mFilters) {
65  if (filter->matches(t)) {
66  return true;
67  }
68  }
69  return false;
70  }
71 
72  inline QList<SharedPtr<const Filter<T> > > filters() const { return mFilters; }
73 
74 private:
75  OrFilter(const QList<SharedPtr<const Filter<T> > > &filters)
76  : Filter<T>(), mFilters(filters) { }
77 
78  QList<SharedPtr<const Filter<T> > > mFilters;
79 };
80 
81 } // Tp
82 
83 #endif
The Filter class provides a base class to be used by specialized filters such as GenericCapabilityFil...
Definition: filter.h:37
The SharedPtr class is a pointer to an explicitly shared object.
Definition: shared-ptr.h:39
virtual bool matches(const SharedPtr< T > &t) const
Definition: or-filter.h:58
static SharedPtr< OrFilter< T > > create(const QList< SharedPtr< const Filter< T > > > &filters=QList< SharedPtr< const Filter< T > > >())
Definition: or-filter.h:40
QList< SharedPtr< const Filter< T > > > filters() const
Definition: or-filter.h:72
virtual bool isValid() const
Definition: or-filter.h:48
The OrFilter class provides a generic filter object to be used in conjunction of other filters...
Definition: or-filter.h:37
virtual ~OrFilter()
Definition: or-filter.h:46


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00305.html0000644000175100017520000006527012530426260021134 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceServicePointInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ConnectionInterfaceServicePointInterface Class Reference

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Signals

void ServicePointsChanged (const Tp::ServicePointInfoList &servicePoints)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceServicePointInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceServicePointInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceServicePointInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceServicePointInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceServicePointInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyKnownServicePoints () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ServicePoint".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceServicePointInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceServicePointInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceServicePointInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceServicePointInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceServicePointInterface::ConnectionInterfaceServicePointInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceServicePointInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceServicePointInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ServicePoint", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceServicePointInterface::requestPropertyKnownServicePoints ( ) const
inline

Asynchronous getter for the remote object property KnownServicePoints of type Tp::ServicePointInfoList.

The list of all (known) service points.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceServicePointInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
void Tp::Client::ConnectionInterfaceServicePointInterface::ServicePointsChanged ( const Tp::ServicePointInfoList servicePoints)
signal

Represents the signal ServicePointsChanged on the remote object.

Emitted when the list of known service points (or their IDs) has changed.

Parameters
servicePoints

The new value of KnownServicePoints .

void Tp::Client::ConnectionInterfaceServicePointInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01276.html0000644000175100017520000002577412530426260021151 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeContactSearchInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeContactSearchInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelTypeContactSearchInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeContactSearchInterface
ChannelTypeContactSearchInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeContactSearchInterface
ChannelTypeContactSearchInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeContactSearchInterface
ChannelTypeContactSearchInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeContactSearchInterfaceexplicit
ChannelTypeContactSearchInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeContactSearchInterface
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeContactSearchInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
More(int timeout=-1)Tp::Client::ChannelTypeContactSearchInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeContactSearchInterfaceinline
requestPropertyAvailableSearchKeys() const Tp::Client::ChannelTypeContactSearchInterfaceinline
requestPropertyLimit() const Tp::Client::ChannelTypeContactSearchInterfaceinline
requestPropertySearchState() const Tp::Client::ChannelTypeContactSearchInterfaceinline
requestPropertyServer() const Tp::Client::ChannelTypeContactSearchInterfaceinline
Search(const Tp::ContactSearchMap &terms, int timeout=-1)Tp::Client::ChannelTypeContactSearchInterfaceinlineslot
SearchResultReceived(const Tp::ContactSearchResultMap &result)Tp::Client::ChannelTypeContactSearchInterfacesignal
SearchStateChanged(uint state, const QString &error, const QVariantMap &details)Tp::Client::ChannelTypeContactSearchInterfacesignal
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeContactSearchInterfaceinlinestatic
Stop(int timeout=-1)Tp::Client::ChannelTypeContactSearchInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00744_source.html0000644000175100017520000001704612530426257022527 0ustar00kaffeinekaffeine00000000000000 object.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
object.h
1 
23 #ifndef _TelepathyQt_object_h_HEADER_GUARD_
24 #define _TelepathyQt_object_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 #include <TelepathyQt/RefCounted>
32 
33 #include <QObject>
34 #include <QString>
35 
36 namespace Tp
37 {
38 
39 class TP_QT_EXPORT Object : public QObject, public RefCounted
40 {
41  Q_OBJECT
42  Q_DISABLE_COPY(Object)
43 
44 public:
45  virtual ~Object();
46 
47 Q_SIGNALS:
48  void propertyChanged(const QString &propertyName);
49 
50 protected:
51  Object();
52 
53  void notify(const char *propertyName);
54 
55 private:
56  struct Private;
57  friend struct Private;
58  Private *mPriv;
59 };
60 
61 } // Tp
62 
63 #endif
The Object class provides an object with property notification.
Definition: object.h:39
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01020.html0000644000175100017520000010124112530426260021114 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DBusTubeChannel Member List

This is the complete list of members for Tp::DBusTubeChannel, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
address() const Tp::DBusTubeChannel
baseInterface() const Tp::Channelprotected
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
busNameAdded(const QString &busName, const Tp::ContactPtr &contact)Tp::DBusTubeChannelsignal
busNameRemoved(const QString &busName, const Tp::ContactPtr &contact)Tp::DBusTubeChannelsignal
BypassInterfaceCheck enum valueTp::OptionalInterfaceFactory< Channel >
Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)Tp::Channelprotected
channelType() const Tp::Channel
CheckInterfaceSupported enum valueTp::OptionalInterfaceFactory< Channel >
conferenceChannelMerged(const Tp::ChannelPtr &channel)Tp::Channelsignal
conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
conferenceChannels() const Tp::Channel
conferenceInitialChannels() const Tp::Channel
conferenceInitialInviteeContacts() const Tp::Channel
conferenceMergeChannel(const ChannelPtr &channel)Tp::Channel
conferenceOriginalChannels() const Tp::Channel
conferenceSplitChannel()Tp::Channel
connection() const Tp::Channel
contactsForBusNames() const Tp::DBusTubeChannel
create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::DBusTubeChannelstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
DBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)Tp::DBusTubeChannelprotected
FeatureBusNameMonitoringTp::DBusTubeChannelstatic
FeatureConferenceInitialInviteeContactsTp::Channelstatic
FeatureCoreTp::DBusTubeChannelstatic
groupAddContacts(const QList< ContactPtr > &contacts, const QString &message=QString())Tp::Channel
groupAddSelfHandle()Tp::Channelprotectedslot
groupAreHandleOwnersAvailable() const Tp::Channel
groupCanAcceptContactsWithMessage() const Tp::Channel
groupCanAddContacts() const Tp::Channel
groupCanAddContactsChanged(bool canAddContacts)Tp::Channelsignal
groupCanAddContactsWithMessage() const Tp::Channel
groupCanDepartWithMessage() const Tp::Channel
groupCanRejectContactsWithMessage() const Tp::Channel
groupCanRemoveContacts() const Tp::Channel
groupCanRemoveContactsChanged(bool canRemoveContacts)Tp::Channelsignal
groupCanRemoveContactsWithMessage() const Tp::Channel
groupCanRescindContacts() const Tp::Channel
groupCanRescindContactsChanged(bool canRescindContacts)Tp::Channelsignal
groupCanRescindContactsWithMessage() const Tp::Channel
groupContacts(bool includeSelfContact=true) const Tp::Channel
groupFlags() const Tp::Channel
groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)Tp::Channelsignal
groupHandleOwners() const Tp::Channel
groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)Tp::Channelsignal
groupIsSelfContactTracked() const Tp::Channel
groupLocalPendingContactChangeInfo(const ContactPtr &contact) const Tp::Channel
groupLocalPendingContacts(bool includeSelfContact=true) const Tp::Channel
groupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)Tp::Channelsignal
groupRemotePendingContacts(bool includeSelfContact=true) const Tp::Channel
groupRemoveContacts(const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
groupSelfContact() const Tp::Channel
groupSelfContactChanged()Tp::Channelsignal
groupSelfContactRemoveInfo() const Tp::Channel
groupSelfHandleIsLocalPending() const Tp::Channelprotected
hasInterface(const QString &name) constTp::OptionalInterfaceFactory< Channel >inline
immutableProperties() const Tp::Channel
initiatorContact() const Tp::Channel
interface() constTp::OptionalInterfaceFactory< Channel >inline
interfaces() constTp::OptionalInterfaceFactory< Channel >inline
InterfaceSupportedChecking enum nameTp::OptionalInterfaceFactory< Channel >
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isConference() const Tp::Channel
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isRequested() const Tp::Channel
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
optionalInterface(InterfaceSupportedChecking check=CheckInterfaceSupported) constTp::OptionalInterfaceFactory< Channel >inline
OptionalInterfaceFactory(Channel *this_)Tp::OptionalInterfaceFactory< Channel >inline
parameters() const Tp::TubeChannel
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestClose()Tp::Channel
requestedFeatures() const Tp::ReadyObjectvirtual
requestLeave(const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)Tp::Channel
serviceName() const Tp::DBusTubeChannel
setBusName(const QString &busName)Tp::DBusProxyprotected
setInterfaces(const QStringList &interfaces)Tp::OptionalInterfaceFactory< Channel >inlineprotected
setParameters(const QVariantMap &parameters)Tp::TubeChannelprotected
state() const Tp::TubeChannel
stateChanged(Tp::TubeChannelState state)Tp::TubeChannelsignal
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
supportsConferenceMerging() const Tp::Channel
supportsConferenceSplitting() const Tp::Channel
supportsRestrictingToCurrentUser() const Tp::DBusTubeChannel
targetContact() const Tp::Channel
targetHandle() const Tp::Channel
targetHandleType() const Tp::Channel
targetId() const Tp::Channel
TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)Tp::TubeChannelprotected
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~Channel()Tp::Channelvirtual
~DBusProxy()Tp::DBusProxyvirtual
~DBusTubeChannel()Tp::DBusTubeChannelvirtual
~Object()Tp::Objectvirtual
~OptionalInterfaceFactory()Tp::OptionalInterfaceFactory< Channel >inline
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual
~TubeChannel()Tp::TubeChannelvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00875.html0000644000175100017520000000547212530426257021154 0ustar00kaffeinekaffeine00000000000000 Account manager proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Account manager proxies

Classes

class  Tp::AccountManager
 The AccountManager class represents a Telepathy account manager. More...
 
class  Tp::Client::AccountManagerInterface
 

Detailed Description

Proxy objects representing remote Telepathy account manager objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x76.html0000644000175100017520000000315512530426260024145 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- v -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00374.html0000644000175100017520000023532112530426260021136 0ustar00kaffeinekaffeine00000000000000 Tp::IncomingDBusTubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube. More...

#include <TelepathyQt/IncomingDBusTubeChannel>

Inherits Tp::DBusTubeChannel.

Public Member Functions

virtual ~IncomingDBusTubeChannel ()
 
PendingDBusTubeConnectionacceptTube (bool allowOtherUsers=false)
 
- Public Member Functions inherited from Tp::DBusTubeChannel
virtual ~DBusTubeChannel ()
 
QString serviceName () const
 
bool supportsRestrictingToCurrentUser () const
 
QHash< QString, Tp::ContactPtr > contactsForBusNames () const
 
QString address () const
 
- Public Member Functions inherited from Tp::TubeChannel
virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static IncomingDBusTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::DBusTubeChannel
static DBusTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::TubeChannel
static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Protected Member Functions

 IncomingDBusTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Protected Member Functions inherited from Tp::DBusTubeChannel
 DBusTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Protected Member Functions inherited from Tp::TubeChannel
 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::DBusTubeChannel
void busNameAdded (const QString &busName, const Tp::ContactPtr &contact)
 
void busNameRemoved (const QString &busName, const Tp::ContactPtr &contact)
 
- Signals inherited from Tp::TubeChannel
void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Static Public Attributes inherited from Tp::DBusTubeChannel
static const Feature FeatureCore
 
static const Feature FeatureBusNameMonitoring
 
- Static Public Attributes inherited from Tp::TubeChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube.

In particular, this class is meant to be used as a comfortable way for accepting incoming DBus tubes. Unless a different behavior is specified, tubes will be always accepted allowing connections just from the current user, unless this or one of the other ends do not support that. Unless your application has specific needs, you usually want to keep this behavior.

Once a tube is successfully accepted and open (the PendingDBusTubeConnection returned from the accepting methods has finished), the application can connect to the DBus server, the address of which can be retrieved from PendingDBusTubeConnection::address().

Note
If you plan to use QtDBus for the DBus connection, please note you should always use QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use of DBus Tubes through QtDBus.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::IncomingDBusTubeChannel::~IncomingDBusTubeChannel ( )
virtual

Class destructor.

Tp::IncomingDBusTubeChannel::IncomingDBusTubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
protected

Construct a new IncomingDBusTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.

Member Function Documentation

IncomingDBusTubeChannelPtr Tp::IncomingDBusTubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new IncomingDBusTubeChannel channel.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe object path of this channel.
immutablePropertiesThe immutable properties of this channel.
Returns
A IncomingDBusTubeChannelPtr object pointing to the newly created IncomingDBusTubeChannel object.
PendingDBusTubeConnection * Tp::IncomingDBusTubeChannel::acceptTube ( bool  allowOtherUsers = false)

Accepts an incoming DBus tube.

This method accepts an incoming connection request for a DBus tube. It can be called only if the tube is in the LocalPending state.

Once called, this method will try opening the tube, and will create a new private DBus connection which can be used to communicate with the other end. You can then retrieve the address either from PendingDBusTubeConnection or from address().

This method requires DBusTubeChannel::FeatureCore to be enabled.

Parameters
allowOtherUsersWhether the server should allow other users to connect to this tube more than just the current one. If your application has no specific needs, it is advisable not to modify the default value of this argument.
Note
If allowOtherUsers == false, but one of the ends does not support current user restriction, the tube will be offered regardless, falling back to allowing any connection. If your application requires strictly this condition to be enforced, you should check DBusTubeChannel::supportsRestrictingToCurrentUser before accepting the tube, and take action from there. The tube is guaranteed either to be accepted with the desired restriction or to fail the accept phase if supportsRestrictingToCurrentUser is true and allowOtherUsers is false.
Returns
A PendingDBusTubeConnection which will finish as soon as the tube is ready to be used (hence in the Open state)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00740_source.html0000644000175100017520000007556512530426257022535 0ustar00kaffeinekaffeine00000000000000 method-invocation-context.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
method-invocation-context.h
1 
23 #ifndef _TelepathyQt_method_invocation_context_h_HEADER_GUARD_
24 #define _TelepathyQt_method_invocation_context_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <QtDBus>
31 #include <QtCore>
32 
33 namespace Tp
34 {
35 
36 #ifndef DOXYGEN_SHOULD_SKIP_THIS
37 
38 namespace MethodInvocationContextTypes
39 {
40 
41 struct Nil
42 {
43 };
44 
45 template<int Index,
46  typename T1, typename T2, typename T3, typename T4,
47  typename T5, typename T6, typename T7, typename T8>
48 struct Select
49 {
50  typedef Select<Index - 1, T2, T3, T4, T5, T6, T7, T8, Nil> Next;
51  typedef typename Next::Type Type;
52 };
53 template<typename T1, typename T2, typename T3, typename T4,
54  typename T5, typename T6, typename T7, typename T8>
55 struct Select<0, T1, T2, T3, T4, T5, T6, T7, T8>
56 {
57  typedef T1 Type;
58 };
59 
60 template<typename T1, typename T2, typename T3, typename T4,
61  typename T5, typename T6, typename T7, typename T8>
62 struct ForEach
63 {
64  typedef ForEach<T2, T3, T4, T5, T6, T7, T8, Nil> Next;
65  enum { Total = Next::Total + 1 };
66 };
67 template<>
68 struct ForEach<Nil, Nil, Nil, Nil, Nil, Nil, Nil, Nil>
69 {
70  enum { Total = 0 };
71 };
72 
73 }
74 
75 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
76 
77 template<typename T1 = MethodInvocationContextTypes::Nil, typename T2 = MethodInvocationContextTypes::Nil,
78  typename T3 = MethodInvocationContextTypes::Nil, typename T4 = MethodInvocationContextTypes::Nil,
79  typename T5 = MethodInvocationContextTypes::Nil, typename T6 = MethodInvocationContextTypes::Nil,
80  typename T7 = MethodInvocationContextTypes::Nil, typename T8 = MethodInvocationContextTypes::Nil>
82 {
83 #ifndef DOXYGEN_SHOULD_SKIP_THIS
84  template<int Index>
85  struct Select : MethodInvocationContextTypes::Select<Index, T1, T2, T3, T4, T5, T6, T7, T8>
86  {
87  };
88 
89  typedef MethodInvocationContextTypes::ForEach<T1, T2, T3, T4, T5, T6, T7, T8> ForEach;
90  enum { Count = ForEach::Total };
91 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
92 
93 public:
94  MethodInvocationContext(const QDBusConnection &bus, const QDBusMessage &message)
95  : mBus(bus), mMessage(message), mFinished(false)
96  {
97  mMessage.setDelayedReply(true);
98  }
99 
101  {
102  if (!mFinished) {
103  setFinishedWithError(QString(), QString());
104  }
105  }
106 
107  bool isFinished() const { return mFinished; }
108  bool isError() const { return !mErrorName.isEmpty(); }
109  QString errorName() const { return mErrorName; }
110  QString errorMessage() const { return mErrorMessage; }
111 
112  void setFinished(const T1 &t1 = T1(), const T2 &t2 = T2(), const T3 &t3 = T3(),
113  const T4 &t4 = T4(), const T5 &t5 = T5(), const T6 &t6 = T6(),
114  const T7 &t7 = T7(), const T8 &t8 = T8())
115  {
116  if (mFinished) {
117  return;
118  }
119 
120  mFinished = true;
121 
122  setReplyValue(0, qVariantFromValue(t1));
123  setReplyValue(1, qVariantFromValue(t2));
124  setReplyValue(2, qVariantFromValue(t3));
125  setReplyValue(3, qVariantFromValue(t4));
126  setReplyValue(4, qVariantFromValue(t5));
127  setReplyValue(5, qVariantFromValue(t6));
128  setReplyValue(6, qVariantFromValue(t7));
129  setReplyValue(7, qVariantFromValue(t8));
130 
131  if (mReply.isEmpty()) {
132  mBus.send(mMessage.createReply());
133  } else {
134  mBus.send(mMessage.createReply(mReply));
135  }
136  onFinished();
137  }
138 
139  void setFinishedWithError(const QString &errorName,
140  const QString &errorMessage)
141  {
142  if (mFinished) {
143  return;
144  }
145 
146  mFinished = true;
147 
148  if (errorName.isEmpty()) {
149  mErrorName = QLatin1String("org.freedesktop.Telepathy.Qt.ErrorHandlingError");
150  } else {
151  mErrorName = errorName;
152  }
153  mErrorMessage = errorMessage;
154 
155  mBus.send(mMessage.createErrorReply(mErrorName, mErrorMessage));
156  onFinished();
157  }
158 
159  template<int Index> inline
160  typename Select<Index>::Type argumentAt() const
161  {
162  Q_ASSERT(Index >= 0 && Index < Count);
163  return qdbus_cast<typename Select<Index>::Type>(mReply.value(Index));
164  }
165 
166 protected:
167  virtual void onFinished() {}
168 
169 private:
170  Q_DISABLE_COPY(MethodInvocationContext)
171 
172  void setReplyValue(int index, const QVariant &value)
173  {
174  if (index >= Count) {
175  return;
176  }
177  mReply.insert(index, value);
178  }
179 
180  QDBusConnection mBus;
181  QDBusMessage mMessage;
182  bool mFinished;
183  QList<QVariant> mReply;
184  QString mErrorName;
185  QString mErrorMessage;
186 };
187 
188 } // Tp
189 
190 Q_DECLARE_METATYPE(Tp::MethodInvocationContextTypes::Nil)
191 
192 #endif
The MethodInvocationContext class provides a way for the service implementation to respond to method ...
Definition: method-invocation-context.h:81
bool isFinished() const
Definition: method-invocation-context.h:107
void setFinishedWithError(const QString &errorName, const QString &errorMessage)
Definition: method-invocation-context.h:139
void setFinished(const T1 &t1=T1(), const T2 &t2=T2(), const T3 &t3=T3(), const T4 &t4=T4(), const T5 &t5=T5(), const T6 &t6=T6(), const T7 &t7=T7(), const T8 &t8=T8())
Definition: method-invocation-context.h:112
virtual void onFinished()
Definition: method-invocation-context.h:167
The RefCounted class is a base class for shared objects used by SharedPtr.
Definition: shared-ptr.h:42
Select< Index >::Type argumentAt() const
Definition: method-invocation-context.h:160
QString errorMessage() const
Definition: method-invocation-context.h:110
MethodInvocationContext(const QDBusConnection &bus, const QDBusMessage &message)
Definition: method-invocation-context.h:94
QString errorName() const
Definition: method-invocation-context.h:109
bool isError() const
Definition: method-invocation-context.h:108
virtual ~MethodInvocationContext()
Definition: method-invocation-context.h:100


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01335.html0000644000175100017520000000753312530426260021136 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceChatStateAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceChatStateAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
ChatStateChanged(uint contact, uint state)Tp::Service::ChannelInterfaceChatStateAdaptorsignal
ChatStates() const Tp::Service::ChannelInterfaceChatStateAdaptor
dbusConnection() const Tp::AbstractAdaptor
SetChatState(uint state, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceChatStateAdaptorslot
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00119.html0000644000175100017520000011401712530426260021131 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionContactInfoInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Connection.Interface.Contact.Info. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback2
< Tp::ContactInfoMap, const
Tp::UIntList &, DBusError * > 
GetContactInfoCallback
 
typedef Callback2< void, const
Tp::UIntList &, DBusError * > 
RefreshContactInfoCallback
 
typedef Callback2
< Tp::ContactInfoFieldList,
uint, DBusError * > 
RequestContactInfoCallback
 
typedef Callback2< void, const
Tp::ContactInfoFieldList
&, DBusError * > 
SetContactInfoCallback
 

Public Member Functions

virtual ~BaseConnectionContactInfoInterface ()
 
QVariantMap immutableProperties () const
 
Tp::ContactInfoFlags contactInfoFlags () const
 
void setContactInfoFlags (const Tp::ContactInfoFlags &contactInfoFlags)
 
Tp::FieldSpecs supportedFields () const
 
void setSupportedFields (const Tp::FieldSpecs &supportedFields)
 
void setGetContactInfoCallback (const GetContactInfoCallback &cb)
 
Tp::ContactInfoMap getContactInfo (const Tp::UIntList &contacts, DBusError *error)
 
void setRefreshContactInfoCallback (const RefreshContactInfoCallback &cb)
 
void refreshContactInfo (const Tp::UIntList &contacts, DBusError *error)
 
void setRequestContactInfoCallback (const RequestContactInfoCallback &cb)
 
Tp::ContactInfoFieldList requestContactInfo (uint contact, DBusError *error)
 
void setSetContactInfoCallback (const SetContactInfoCallback &cb)
 
void setContactInfo (const Tp::ContactInfoFieldList &contactInfo, DBusError *error)
 
void contactInfoChanged (uint contact, const Tp::ContactInfoFieldList &contactInfo)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionContactInfoInterfacePtr 
create ()
 
template<typename BaseConnectionContactInfoInterfaceSubclass >
static SharedPtr
< BaseConnectionContactInfoInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionContactInfoInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.Contact.Info.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseConnectionContactInfoInterface::~BaseConnectionContactInfoInterface ( )
virtual

Class destructor.

Tp::BaseConnectionContactInfoInterface::BaseConnectionContactInfoInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionContactInfoInterfacePtr Tp::BaseConnectionContactInfoInterface::create ( )
inlinestatic
template<typename BaseConnectionContactInfoInterfaceSubclass >
static SharedPtr<BaseConnectionContactInfoInterfaceSubclass> Tp::BaseConnectionContactInfoInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionContactInfoInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

Tp::ContactInfoFlags Tp::BaseConnectionContactInfoInterface::contactInfoFlags ( ) const
void Tp::BaseConnectionContactInfoInterface::setContactInfoFlags ( const Tp::ContactInfoFlags contactInfoFlags)
Tp::FieldSpecs Tp::BaseConnectionContactInfoInterface::supportedFields ( ) const
void Tp::BaseConnectionContactInfoInterface::setSupportedFields ( const Tp::FieldSpecs supportedFields)
void Tp::BaseConnectionContactInfoInterface::setGetContactInfoCallback ( const GetContactInfoCallback cb)
Tp::ContactInfoMap Tp::BaseConnectionContactInfoInterface::getContactInfo ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionContactInfoInterface::setRefreshContactInfoCallback ( const RefreshContactInfoCallback cb)
void Tp::BaseConnectionContactInfoInterface::refreshContactInfo ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionContactInfoInterface::setRequestContactInfoCallback ( const RequestContactInfoCallback cb)
Tp::ContactInfoFieldList Tp::BaseConnectionContactInfoInterface::requestContactInfo ( uint  contact,
DBusError error 
)
void Tp::BaseConnectionContactInfoInterface::setSetContactInfoCallback ( const SetContactInfoCallback cb)
void Tp::BaseConnectionContactInfoInterface::setContactInfo ( const Tp::ContactInfoFieldList contactInfo,
DBusError error 
)
void Tp::BaseConnectionContactInfoInterface::contactInfoChanged ( uint  contact,
const Tp::ContactInfoFieldList contactInfo 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_0x6f.html0000644000175100017520000005421712530426260023176 0ustar00kaffeinekaffeine00000000000000 Class Members
   Home · All Classes · All Namespaces · Modules · Functions · Files
Here is a list of all class members with links to the classes they belong to:

- o -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00934.html0000644000175100017520000004006012530426260021132 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelSASLAuthenticationInterface Member List

This is the complete list of members for Tp::BaseChannelSASLAuthenticationInterface, including all inherited members.

abortSasl(uint reason, const QString &debugMessage, DBusError *error)Tp::BaseChannelSASLAuthenticationInterface
AbortSASLCallback typedefTp::BaseChannelSASLAuthenticationInterface
AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
acceptSasl(DBusError *error)Tp::BaseChannelSASLAuthenticationInterface
AcceptSASLCallback typedefTp::BaseChannelSASLAuthenticationInterface
authorizationIdentity() const Tp::BaseChannelSASLAuthenticationInterface
availableMechanisms() const Tp::BaseChannelSASLAuthenticationInterface
BaseChannelSASLAuthenticationInterface(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)Tp::BaseChannelSASLAuthenticationInterfaceprotected
canTryAgain() const Tp::BaseChannelSASLAuthenticationInterface
create(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)Tp::BaseChannelSASLAuthenticationInterfaceinlinestatic
create(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse)Tp::BaseChannelSASLAuthenticationInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
defaultRealm() const Tp::BaseChannelSASLAuthenticationInterface
defaultUsername() const Tp::BaseChannelSASLAuthenticationInterface
hasInitialData() const Tp::BaseChannelSASLAuthenticationInterface
immutableProperties() const Tp::BaseChannelSASLAuthenticationInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
maySaveResponse() const Tp::BaseChannelSASLAuthenticationInterface
newChallenge(const QByteArray &challengeData)Tp::BaseChannelSASLAuthenticationInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
respond(const QByteArray &responseData, DBusError *error)Tp::BaseChannelSASLAuthenticationInterface
RespondCallback typedefTp::BaseChannelSASLAuthenticationInterface
saslError() const Tp::BaseChannelSASLAuthenticationInterface
saslErrorDetails() const Tp::BaseChannelSASLAuthenticationInterface
saslStatus() const Tp::BaseChannelSASLAuthenticationInterface
setAbortSaslCallback(const AbortSASLCallback &cb)Tp::BaseChannelSASLAuthenticationInterface
setAcceptSaslCallback(const AcceptSASLCallback &cb)Tp::BaseChannelSASLAuthenticationInterface
setRespondCallback(const RespondCallback &cb)Tp::BaseChannelSASLAuthenticationInterface
setSaslError(const QString &saslError)Tp::BaseChannelSASLAuthenticationInterface
setSaslErrorDetails(const QVariantMap &saslErrorDetails)Tp::BaseChannelSASLAuthenticationInterface
setSaslStatus(uint status, const QString &reason, const QVariantMap &details)Tp::BaseChannelSASLAuthenticationInterface
setStartMechanismCallback(const StartMechanismCallback &cb)Tp::BaseChannelSASLAuthenticationInterface
setStartMechanismWithDataCallback(const StartMechanismWithDataCallback &cb)Tp::BaseChannelSASLAuthenticationInterface
startMechanism(const QString &mechanism, DBusError *error)Tp::BaseChannelSASLAuthenticationInterface
StartMechanismCallback typedefTp::BaseChannelSASLAuthenticationInterface
startMechanismWithData(const QString &mechanism, const QByteArray &initialData, DBusError *error)Tp::BaseChannelSASLAuthenticationInterface
StartMechanismWithDataCallback typedefTp::BaseChannelSASLAuthenticationInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelSASLAuthenticationInterface()Tp::BaseChannelSASLAuthenticationInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00433.html0000644000175100017520000003554512530426260021140 0ustar00kaffeinekaffeine00000000000000 Tp::PendingChannelRequest Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingChannelRequest Class Reference

The PendingChannelRequest class represents the parameters of and the reply to an asynchronous ChannelRequest request. More...

#include <TelepathyQt/PendingChannelRequest>

Inherits Tp::PendingOperation.

Signals

void channelRequestCreated (const Tp::ChannelRequestPtr &channelRequest)
 
- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 

Public Member Functions

 ~PendingChannelRequest ()
 
AccountPtr account () const
 
ChannelRequestPtr channelRequest () const
 
PendingOperationcancel ()
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingChannelRequest class represents the parameters of and the reply to an asynchronous ChannelRequest request.

Instances of this class cannot be constructed directly; the only way to get one is through Account.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingChannelRequest::~PendingChannelRequest ( )

Class destructor.

Member Function Documentation

AccountPtr Tp::PendingChannelRequest::account ( ) const

Return the account through which the request was made.

Returns
A pointer to the Account object.
ChannelRequestPtr Tp::PendingChannelRequest::channelRequest ( ) const
PendingOperation * Tp::PendingChannelRequest::cancel ( )
void Tp::PendingChannelRequest::channelRequestCreated ( const Tp::ChannelRequestPtr &  channelRequest)
signal


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00188.html0000644000175100017520000006637412530426260021153 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelInterfaceCallStateInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::ChannelCallStateMap
GetCallStates (int timeout=-1)
 

Signals

void CallStateChanged (uint contact, uint state)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelInterfaceCallStateInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceCallStateInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelInterfaceCallStateInterface (Tp::DBusProxy *proxy)
 
 ChannelInterfaceCallStateInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelInterfaceCallStateInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Interface.CallState".

Constructor & Destructor Documentation

Tp::Client::ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceCallStateInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelInterfaceCallStateInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface ( Tp::DBusProxy proxy)

Creates a ChannelInterfaceCallStateInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelInterfaceCallStateInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelInterfaceCallStateInterface::ChannelInterfaceCallStateInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelInterfaceCallStateInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelInterfaceCallStateInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Interface.CallState", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariantMap* Tp::Client::ChannelInterfaceCallStateInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::ChannelCallStateMap> Tp::Client::ChannelInterfaceCallStateInterface::GetCallStates ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method GetCallStates on the remote object.

Get the current call states for all contacts involved in this call.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
The current call states. Participants where the call state flags 
would be 0 (all unset) may be omitted from this mapping.
void Tp::Client::ChannelInterfaceCallStateInterface::CallStateChanged ( uint  contact,
uint  state 
)
signal

Represents the signal CallStateChanged on the remote object.

Emitted when the state of a member of the channel has changed.

Parameters
contact
An integer handle for the contact.
state
The new state for this contact.
void Tp::Client::ChannelInterfaceCallStateInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01149.html0000644000175100017520000000534712530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactCapability Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00247.html0000644000175100017520000011355512530426260021141 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeStreamedMediaAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeStreamedMediaAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::MediaStreamInfoList ListStreams (const QDBusMessage &dbusMessage)
 
void RemoveStreams (const Tp::UIntList &streams, const QDBusMessage &dbusMessage)
 
void RequestStreamDirection (uint streamID, uint streamDirection, const QDBusMessage &dbusMessage)
 
Tp::MediaStreamInfoList RequestStreams (uint contactHandle, const Tp::UIntList &types, const QDBusMessage &dbusMessage)
 

Signals

void StreamAdded (uint streamID, uint contactHandle, uint streamType)
 
void StreamDirectionChanged (uint streamID, uint streamDirection, uint pendingFlags)
 
void StreamError (uint streamID, uint errorCode, const QString &message)
 
void StreamRemoved (uint streamID)
 
void StreamStateChanged (uint streamID, uint streamState)
 

Public Member Functions

bool InitialAudio () const
 
bool InitialVideo () const
 
bool ImmutableStreams () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ChannelTypeStreamedMediaAdaptor::InitialAudio ( ) const

Return the value of the exported D-Bus object property InitialAudio of type bool.

Adaptees should export this property as a Qt property named 'initialAudio' with type bool.

If set to true in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call ChannelTypeStreamedMediaInterface::RequestStreams() .

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If true on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If true on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by ChannelTypeStreamedMediaInterface::ListStreams() ).

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. ConnectionInterfaceRequestsInterface::NewChannels() signals.

This reduces D-Bus round trips.

Connection managers capable of signalling audio calls to contacts SHOULD include a channel class in ConnectionInterfaceRequestsInterface::RequestableChannelClasses with ChannelInterface::ChannelType = ChannelTypeStreamedMediaInterface and ChannelInterface::TargetHandleType = Contact in the fixed properties dictionary, and InitialAudio (and also InitialVideo, if applicable) in the allowed properties list. Clients wishing to discover whether a connection manager can signal audio and/or video calls SHOULD use this information.

Not all protocols support signalling video calls, and it would be possible (although unlikely) to have a protocol where only video, and not audio, could be signalled.

Connection managers that support the ConnectionInterfaceContactCapabilitiesInterface interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = StreamedMedia in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling ConnectionInterfaceContactCapabilitiesInterface::UpdateCapabilities() (clients of a ChannelDispatcherInterface SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their ClientHandlerInterface::HandlerChannelFilter properties):

  • { ChannelType = StreamedMedia }
  • { ChannelType = StreamedMedia, InitialAudio = true } if receiving calls with audio is supported
  • { ChannelType = StreamedMedia, InitialVideo = true } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

Returns
The value of exported property InitialAudio.
bool Tp::Service::ChannelTypeStreamedMediaAdaptor::InitialVideo ( ) const

Return the value of the exported D-Bus object property InitialVideo of type bool.

Adaptees should export this property as a Qt property named 'initialVideo' with type bool.

The same as InitialAudio , but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is false, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

Returns
The value of exported property InitialVideo.
bool Tp::Service::ChannelTypeStreamedMediaAdaptor::ImmutableStreams ( ) const

Return the value of the exported D-Bus object property ImmutableStreams of type bool.

Adaptees should export this property as a Qt property named 'immutableStreams' with type bool.

If True, once streams have been requested for this channel (either by setting InitialAudio or InitialVideo when the channel is requested, or by calling RequestStreams() on a channel with no streams), a stream of a different content type cannot be added; subsequent calls to RequestStreams() that attempt to do so will fail.

If this property is missing, clients SHOULD assume that it is false, and thus that the channel's streams can be changed once the call has started.

If this property is present in the "allowed" set in all of the StreamedMedia entries in a contact's capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call" button with the option to add and remove video once the call has started for contacts without this flag.

This property is immutable, and therefore SHOULD be announced in ConnectionInterfaceRequestsInterface::NewChannels() , etc.

Returns
The value of exported property ImmutableStreams.
Tp::MediaStreamInfoList Tp::Service::ChannelTypeStreamedMediaAdaptor::ListStreams ( const QDBusMessage &  dbusMessage)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void listStreams(const Tp::Service::ChannelTypeStreamedMediaAdaptor::ListStreamsContextPtr &context);

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

Returns an array of structs representing the streams currently active within this channel. Each stream is identified by an unsigned integer which is unique for each stream within the channel.

Returns
An array of structs containing:
  • the stream identifier
  • the contact handle who the stream is with (or 0 if the stream represents more than a single member)
  • the type of the stream
  • the current stream state
  • the current direction of the stream
  • the current pending send flags
void Tp::Service::ChannelTypeStreamedMediaAdaptor::RemoveStreams ( const Tp::UIntList streams,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void removeStreams(const Tp::UIntList& streams, const Tp::Service::ChannelTypeStreamedMediaAdaptor::RemoveStreamsContextPtr &context);

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

Request that the given streams are removed. If all streams are removed, the channel MAY close.

Clients SHOULD NOT attempt to terminate calls by removing all the streams; instead, clients SHOULD terminate calls by removing the ChannelInterfaceGroupInterface::SelfHandle from the channel, using either ChannelInterfaceGroupInterface::RemoveMembers() or ChannelInterfaceGroupInterface::RemoveMembersWithReason() .

Parameters
streams
An array of stream identifiers (as defined in ListStreams)
void Tp::Service::ChannelTypeStreamedMediaAdaptor::RequestStreamDirection ( uint  streamID,
uint  streamDirection,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestStreamDirection(uint streamID, uint streamDirection, const Tp::Service::ChannelTypeStreamedMediaAdaptor::RequestStreamDirectionContextPtr &context);

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

Request a change in the direction of an existing stream. In particular, this might be useful to stop sending media of a particular type, or inform the peer that you are no longer using media that is being sent to you.

Depending on the protocol, streams which are no longer sending in either direction should be removed and a StreamRemoved() signal emitted. Some direction changes can be enforced locally (for example, BIDIRECTIONAL -> RECEIVE can be achieved by merely stopping sending), others may not be possible on some protocols, and some need agreement from the remote end. In this case, the MEDIA_STREAM_PENDING_REMOTE_SEND flag will be set in the StreamDirectionChanged() signal, and the signal emitted again without the flag to indicate the resulting direction when the remote end has accepted or rejected the change.

Parameters
streamID
The stream identifier (as defined in ListStreams)
streamDirection
The desired stream direction (a value of MediaStreamDirection)
Tp::MediaStreamInfoList Tp::Service::ChannelTypeStreamedMediaAdaptor::RequestStreams ( uint  contactHandle,
const Tp::UIntList types,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void requestStreams(uint contactHandle, const Tp::UIntList& types, const Tp::Service::ChannelTypeStreamedMediaAdaptor::RequestStreamsContextPtr &context);

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

Request that streams be established to exchange the given types of media with the given member. In general this will try and establish a bidirectional stream, but on some protocols it may not be possible to indicate to the peer that you would like to receive media, so a send-only stream will be created initially. In the cases where the stream requires remote agreement (eg you wish to receive media from them), the StreamDirectionChanged() signal will be emitted with the MEDIA_STREAM_PENDING_REMOTE_SEND flag set, and the signal emitted again with the flag cleared when the remote end has replied.

If streams of the requested types already exist, calling this method results in the creation of additional streams. Accordingly, clients wishing to have exactly one audio stream or exactly one video stream SHOULD check for the current streams using ListStreams() before calling this method.

Parameters
contactHandle
A contact handle with whom to establish the streams
types
An array of stream types (values of MediaStreamType)
Returns
An array of structs (in the same order as the given stream types) containing:
  • the stream identifier
  • the contact handle who the stream is with (or 0 if the stream represents more than a single member)
  • the type of the stream
  • the current stream state
  • the current direction of the stream
  • the current pending send flags
void Tp::Service::ChannelTypeStreamedMediaAdaptor::StreamAdded ( uint  streamID,
uint  contactHandle,
uint  streamType 
)
signal

Represents the exported D-Bus signal StreamAdded on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamAdded(uint streamID, uint contactHandle, uint streamType);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streamID
The stream identifier (as defined in ListStreams)
contactHandle
The contact handle who the stream is with (or 0 if it represents 
more than a single member)
streamType
The stream type (a value from MediaStreamType)
void Tp::Service::ChannelTypeStreamedMediaAdaptor::StreamDirectionChanged ( uint  streamID,
uint  streamDirection,
uint  pendingFlags 
)
signal

Represents the exported D-Bus signal StreamDirectionChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamDirectionChanged(uint streamID, uint streamDirection, uint pendingFlags);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streamID
The stream identifier (as defined in ListStreams)
streamDirection
The new stream direction (as defined in ListStreams)
pendingFlags
The new pending send flags (as defined in ListStreams)
void Tp::Service::ChannelTypeStreamedMediaAdaptor::StreamError ( uint  streamID,
uint  errorCode,
const QString &  message 
)
signal

Represents the exported D-Bus signal StreamError on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamError(uint streamID, uint errorCode, const QString& message);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streamID
The stream identifier (as defined in ListStreams)
errorCode
A stream error number, one of the values of MediaStreamError
message
A string describing the error (for debugging purposes only)
void Tp::Service::ChannelTypeStreamedMediaAdaptor::StreamRemoved ( uint  streamID)
signal

Represents the exported D-Bus signal StreamRemoved on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamRemoved(uint streamID);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streamID
stream_id - the stream identifier (as defined in ListStreams)
void Tp::Service::ChannelTypeStreamedMediaAdaptor::StreamStateChanged ( uint  streamID,
uint  streamState 
)
signal

Represents the exported D-Bus signal StreamStateChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void streamStateChanged(uint streamID, uint streamState);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
streamID
The stream identifier (as defined in ListStreams)
streamState
The new stream state (as defined in ListStreams)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01208.html0000644000175100017520000000535412530426260021134 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::VCardFieldAddressMap Member List

This is the complete list of members for Tp::VCardFieldAddressMap, including all inherited members.

operator=(const QMap< QString, QString > &a)Tp::VCardFieldAddressMapinline
VCardFieldAddressMap()Tp::VCardFieldAddressMapinline
VCardFieldAddressMap(const QMap< QString, QString > &a)Tp::VCardFieldAddressMapinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00306.html0000644000175100017520000005072112530426260021130 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ConnectionInterfaceSimplePresenceAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ConnectionInterfaceSimplePresenceAdaptor Class Reference

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

Inherits Tp::AbstractAdaptor.

Public Slots

void SetPresence (const QString &status, const QString &statusMessage, const QDBusMessage &dbusMessage)
 
Tp::SimpleContactPresences GetPresences (const Tp::UIntList &contacts, const QDBusMessage &dbusMessage)
 

Signals

void PresencesChanged (const Tp::SimpleContactPresences &presence)
 

Public Member Functions

Tp::SimpleStatusSpecMap Statuses () const
 
uint MaximumStatusMessageLength () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

Tp::SimpleStatusSpecMap Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::Statuses ( ) const

Return the value of the exported D-Bus object property Statuses of type Tp::SimpleStatusSpecMap.

Adaptees should export this property as a Qt property named 'statuses' with type Tp::SimpleStatusSpecMap.

A dictionary where the keys are the presence statuses that are available on this connection, and the values are the corresponding presence types.

While the connection is in the DISCONNECTED state, it contains the set of presence statuses allowed to be set before connecting. The connection manager will attempt to set the appropriate status when the connection becomes connected, but cannot necessarily guarantee it. The available statuses cannot change until the connection status changes, so there is no change notification.

While the connection is in the CONNECTED state, this property contains the set of presence statuses which are actually available on this protocol. This set is constant for the remaining lifetime of the connection, so again, there is no change notification.

While the connection is in the CONNECTING state, the value of this property is undefined and SHOULD NOT be used. It can change at any time without notification (in particular, any cached values from when the connection was in the DISCONNECTED or CONNECTING state MUST NOT be assumed to still be correct when the state has become CONNECTED).

This property MUST include the special statuses "unknown" and "error" if and only if the connection manager can emit them as a contact's status.

For instance, connection managers for local-xmpp (XEP-0174) would omit "unknown" since there is no such concept.
Returns
The value of exported property Statuses.
uint Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::MaximumStatusMessageLength ( ) const

Return the value of the exported D-Bus object property MaximumStatusMessageLength of type uint.

Adaptees should export this property as a Qt property named 'maximumStatusMessageLength' with type uint.

The maximum length in characters for any individual status message, or 0 if there is no limit.

While the connection is in the DISCONNECTED state, this property will be 0. The connection manager will attempt to set the appropriate value when the connection becomes connected, but cannot necessarily guarantee it. The maximum length cannot change until the connection status changes, so there is no change notification.

While the connection is in the CONNECTED state, this property contains the maximum length in characters for any individual status message which is actually allowed on this protocol. This value is constant for the remaining lifetime of the connection, so again, there is no change notification.

While the connection is in the CONNECTING state, the value of this property is undefined and SHOULD NOT be used. It can change at any time without notification (in particular, any cached values from when the connection was in the DISCONNECTED or CONNECTING state MUST NOT be assumed to still be correct when the state has become CONNECTED).

If a message passed to SetPresence() is longer than allowed by this property, the connection manager MUST truncate the supplied message; when emitting PresencesChanged() , the truncated version of the message MUST be used.

Some XMPP servers, like Google Talk, define a maximum length for status messages. Whether the user's server is one of these cannot be detected until quite late in the connection process.

Returns
The value of exported property MaximumStatusMessageLength.
void Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::SetPresence ( const QString &  status,
const QString &  statusMessage,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void setPresence(const QString& status, const QString& statusMessage, const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::SetPresenceContextPtr &context);

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

Request that the presence status and status message are published for the connection. Changes will be indicated by PresencesChanged() signals being emitted.

This method may be called on a newly-created connection while it is still in the DISCONNECTED state, to request that when the connection connects, it will do so with the selected status.

In DISCONNECTED state the Statuses property will indicate which statuses are allowed to be set while DISCONNECTED (none, if the Connection Manager doesn't allow this). This value MUST NOT be cached, as the set of allowed presences might change upon connecting.

Parameters
status

The string identifier of the desired status. Possible status identifiers are defined in the \\\ \\link requestPropertyStatuses() Statuses \\endlink \\htmlonly property.

Clients MUST NOT set a status whose string value they do not recognise, even if its presence type in Statuses matches what the user requested.

Suppose a protocol has statuses that include 'phone' (of type BUSY) and 'in-a-meeting' (of type BUSY), but there is no generic 'busy' status.
If the user requests "Busy" status from a menu, a client author might be tempted to pick an arbitrary status that has type BUSY. However, on this protocol, neither of the choices would be appropriate, and incorrect information about the user would be conveyed.

Statuses whose <tp:type>Connection_Presence_Type</tp:type> is Offline, Error or Unknown MUST NOT be passed to this function. Connection managers SHOULD reject these statuses.

To go offline, call \\endhtmlonly ConnectionInterface::Disconnect() \\htmlonly instead. The "error" and "unknown" statuses make no sense.
Parameters
statusMessage
The status message associated with the current status.
Tp::SimpleContactPresences Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::GetPresences ( const Tp::UIntList contacts,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getPresences(const Tp::UIntList& contacts, const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::GetPresencesContextPtr &context);

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

Get presence previously emitted by PresencesChanged for the given contacts. Data is returned in the same structure as the PresencesChanged signal; no additional network requests are made.

Parameters
contacts
An array of the contacts whose presence should be obtained.
Returns

Presence information in the same format as for the \\\ PresencesChanged() \\htmlonly signal. The returned mapping MUST include an entry for each contact in the method's argument.

The definition of the connection presence types Unknown and Offline means that if a connection manager will return Unknown for contacts not on the subscribe list, it MUST delay the reply to this method call until it has found out which contacts are, in fact, on the subscribe list.

void Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::PresencesChanged ( const Tp::SimpleContactPresences presence)
signal

Represents the exported D-Bus signal PresencesChanged on this object.

Adaptees should export this signal as a Qt signal with the following signature: void presencesChanged(const Tp::SimpleContactPresences& presence);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
presence
A dictionary of contact handles mapped to the status, presence type 
and status message.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01277.html0000644000175100017520000002375512530426260021147 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeDBusTubeInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeDBusTubeInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
Accept(uint accesscontrol, int timeout=-1)Tp::Client::ChannelTypeDBusTubeInterfaceinlineslot
ChannelTypeDBusTubeInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeDBusTubeInterface
ChannelTypeDBusTubeInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeDBusTubeInterface
ChannelTypeDBusTubeInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeDBusTubeInterface
ChannelTypeDBusTubeInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeDBusTubeInterfaceexplicit
ChannelTypeDBusTubeInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeDBusTubeInterface
DBusNamesChanged(const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed)Tp::Client::ChannelTypeDBusTubeInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeDBusTubeInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
Offer(const QVariantMap &parameters, uint accesscontrol, int timeout=-1)Tp::Client::ChannelTypeDBusTubeInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeDBusTubeInterfaceinline
requestPropertyDBusNames() const Tp::Client::ChannelTypeDBusTubeInterfaceinline
requestPropertyServiceName() const Tp::Client::ChannelTypeDBusTubeInterfaceinline
requestPropertySupportedAccessControls() const Tp::Client::ChannelTypeDBusTubeInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeDBusTubeInterfaceinlinestatic
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00060.html0000644000175100017520000003132012530426257021125 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for all the low-level service-side adaptors. More...

#include <TelepathyQt/AbstractAdaptor>

Inherits QDBusAbstractAdaptor.

Inherited by Tp::Service::CallContentAdaptor, Tp::Service::CallContentInterfaceDTMFAdaptor, Tp::Service::CallInterfaceMuteAdaptor, Tp::Service::ChannelAdaptor, Tp::Service::ChannelInterfaceAnonymityAdaptor, Tp::Service::ChannelInterfaceCallStateAdaptor, Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor, Tp::Service::ChannelInterfaceChatStateAdaptor, Tp::Service::ChannelInterfaceConferenceAdaptor, Tp::Service::ChannelInterfaceDestroyableAdaptor, Tp::Service::ChannelInterfaceDTMFAdaptor, Tp::Service::ChannelInterfaceFileTransferMetadataAdaptor, Tp::Service::ChannelInterfaceGroupAdaptor, Tp::Service::ChannelInterfaceHoldAdaptor, Tp::Service::ChannelInterfaceMediaSignallingAdaptor, Tp::Service::ChannelInterfaceMergeableConferenceAdaptor, Tp::Service::ChannelInterfaceMessagesAdaptor, Tp::Service::ChannelInterfacePasswordAdaptor, Tp::Service::ChannelInterfaceRoomAdaptor, Tp::Service::ChannelInterfaceRoomConfigAdaptor, Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor, Tp::Service::ChannelInterfaceSecurableAdaptor, Tp::Service::ChannelInterfaceServicePointAdaptor, Tp::Service::ChannelInterfaceSMSAdaptor, Tp::Service::ChannelInterfaceSplittableAdaptor, Tp::Service::ChannelInterfaceSubjectAdaptor, Tp::Service::ChannelTypeCallAdaptor, Tp::Service::ChannelTypeContactSearchAdaptor, Tp::Service::ChannelTypeDBusTubeAdaptor, Tp::Service::ChannelTypeFileTransferAdaptor, Tp::Service::ChannelTypeRoomListAdaptor, Tp::Service::ChannelTypeServerAuthenticationAdaptor, Tp::Service::ChannelTypeServerTLSConnectionAdaptor, Tp::Service::ChannelTypeStreamedMediaAdaptor, Tp::Service::ChannelTypeStreamTubeAdaptor, Tp::Service::ChannelTypeTextAdaptor, Tp::Service::ConnectionAdaptor, Tp::Service::ConnectionInterfaceAddressingAdaptor, Tp::Service::ConnectionInterfaceAliasingAdaptor, Tp::Service::ConnectionInterfaceAnonymityAdaptor, Tp::Service::ConnectionInterfaceAvatarsAdaptor, Tp::Service::ConnectionInterfaceBalanceAdaptor, Tp::Service::ConnectionInterfaceCellularAdaptor, Tp::Service::ConnectionInterfaceClientTypesAdaptor, Tp::Service::ConnectionInterfaceContactBlockingAdaptor, Tp::Service::ConnectionInterfaceContactCapabilitiesAdaptor, Tp::Service::ConnectionInterfaceContactGroupsAdaptor, Tp::Service::ConnectionInterfaceContactInfoAdaptor, Tp::Service::ConnectionInterfaceContactListAdaptor, Tp::Service::ConnectionInterfaceContactsAdaptor, Tp::Service::ConnectionInterfaceLocationAdaptor, Tp::Service::ConnectionInterfaceMailNotificationAdaptor, Tp::Service::ConnectionInterfacePowerSavingAdaptor, Tp::Service::ConnectionInterfaceRequestsAdaptor, Tp::Service::ConnectionInterfaceServicePointAdaptor, Tp::Service::ConnectionInterfaceSimplePresenceAdaptor, Tp::Service::ConnectionManagerAdaptor, Tp::Service::ProtocolAdaptor, Tp::Service::ProtocolInterfaceAddressingAdaptor, Tp::Service::ProtocolInterfaceAvatarsAdaptor, and Tp::Service::ProtocolInterfacePresenceAdaptor.

Public Member Functions

 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

Base class for all the low-level service-side adaptors.

This class serves as the parent for all the generated low-level service-side adaptors. Adaptors provide the interface of an object on the bus.

The implementation of this interface should be provided in a special object called the adaptee. The adaptee is meant to provide properties, signals and slots that are connected automatically with the adaptor using Qt's meta-object system.

Constructor & Destructor Documentation

Tp::AbstractAdaptor::AbstractAdaptor ( const QDBusConnection &  dbusConnection,
QObject *  adaptee,
QObject *  parent 
)

Construct a new AbstractAdaptor that operates on the given dbusConnection and redirects calls to the given adaptee.

Parameters
dbusConnectionThe D-Bus connection to use.
adapteeThe class the provides the implementation of the calls.
parentThe QObject parent of this adaptor.
Tp::AbstractAdaptor::~AbstractAdaptor ( )

Class destructor.

Member Function Documentation

QDBusConnection Tp::AbstractAdaptor::dbusConnection ( ) const

Return the D-Bus connection associated with this adaptor.

Returns
The D-Bus connection associated with this adaptor.
QObject * Tp::AbstractAdaptor::adaptee ( ) const

Return the adaptee object, i.e. the object that provides the implementation of this adaptor.

Returns
The adaptee object.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01021.html0000644000175100017520000003030112530426260021113 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::DebugReceiver Member List

This is the complete list of members for Tp::DebugReceiver, including all inherited members.

actualFeatures() const Tp::ReadyObjectvirtual
becomeReady(const Features &requestedFeatures=Features())Tp::ReadyObjectvirtual
busName() const Tp::DBusProxy
create(const QString &busName, const QDBusConnection &bus=QDBusConnection::sessionBus())Tp::DebugReceiverstatic
dbusConnection() const Tp::DBusProxy
DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::DBusProxy
DebugReceiver(const QDBusConnection &bus, const QString &busName)Tp::DebugReceiverprotected
FeatureCoreTp::DebugReceiverstatic
fetchMessages()Tp::DebugReceiver
invalidate(const QString &reason, const QString &message)Tp::DBusProxyprotected
invalidate(const QDBusError &error)Tp::DBusProxyprotected
invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)Tp::DBusProxysignal
invalidationMessage() const Tp::DBusProxy
invalidationReason() const Tp::DBusProxy
isReady(const Features &features=Features()) const Tp::ReadyObjectvirtual
isValid() const Tp::DBusProxy
missingFeatures() const Tp::ReadyObjectvirtual
newDebugMessage(const Tp::DebugMessage &message)Tp::DebugReceiversignal
notify(const char *propertyName)Tp::Objectprotected
Object()Tp::Objectprotected
objectPath() const Tp::DBusProxy
propertyChanged(const QString &propertyName)Tp::Objectsignal
readinessHelper() const Tp::ReadyObjectprotected
ReadyObject(RefCounted *object, const Feature &featureCore)Tp::ReadyObject
ReadyObject(DBusProxy *proxy, const Feature &featureCore)Tp::ReadyObject
RefCounted()Tp::RefCountedinline
requestedFeatures() const Tp::ReadyObjectvirtual
setBusName(const QString &busName)Tp::DBusProxyprotected
setMonitoringEnabled(bool enabled)Tp::DebugReceiver
StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)Tp::StatefulDBusProxy
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique)Tp::StatefulDBusProxystatic
uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)Tp::StatefulDBusProxystatic
~DBusProxy()Tp::DBusProxyvirtual
~DebugReceiver()Tp::DebugReceivervirtual
~Object()Tp::Objectvirtual
~ReadyObject()Tp::ReadyObjectvirtual
~RefCounted()Tp::RefCountedinlinevirtual
~StatefulDBusProxy()Tp::StatefulDBusProxyvirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00876.html0000644000175100017520000007751212530426257021161 0ustar00kaffeinekaffeine00000000000000 Channel proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
Channel proxies

Classes

class  Tp::CallChannel
 The CallChannel class provides an object representing a Telepathy channel of type Call. More...
 
class  Tp::CallContent
 The CallContent class provides an object representing a Telepathy Call.Content. More...
 
class  Tp::CallStream
 The CallStream class provides an object representing a Telepathy Call.Stream. More...
 
class  Tp::CaptchaAuthentication
 The CaptchaAuthentication class exposes CaptchaAuthentication's features for channels implementing it. More...
 
class  Tp::Channel::GroupMemberChangeDetails
 The Channel::GroupMemberChangeDetails class represents the details of a group membership change. More...
 
class  Tp::Channel
 The Channel class represents a Telepathy channel. More...
 
class  Tp::ContactSearchChannel
 The ContactSearchChannel class represents a Telepathy channel of type ContactSearch. More...
 
class  Tp::DBusTubeChannel
 The DBusTubeChannel class represents a Telepathy channel of type DBusTube. More...
 
class  Tp::FileTransferChannelCreationProperties
 The FileTransferChannelCreationProperties class represents the properties of a file transfer channel request. More...
 
class  Tp::FileTransferChannel
 The FileTransferChannel class represents a Telepathy channel of type FileTransfer. More...
 
class  Tp::HandledChannelNotifier
 The HandledChannelNotifier class can be used to keep track of channel() being re-requested. More...
 
class  Tp::IncomingDBusTubeChannel
 The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube. More...
 
class  Tp::IncomingFileTransferChannel
 The IncomingFileTransferChannel class represents a Telepathy channel of type FileTransfer for incoming file transfers. More...
 
class  Tp::IncomingStreamTubeChannel
 The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube. More...
 
class  Tp::Message
 The Message class represents a Telepathy message in a TextChannel. More...
 
class  Tp::ReceivedMessage
 The ReceivedMessage class is a subclass of Message, representing a received message only. More...
 
class  Tp::ReceivedMessage::DeliveryDetails
 The ReceivedMessage::DeliveryDetails class represents the details of a delivery report. More...
 
class  Tp::OutgoingDBusTubeChannel
 The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel of type DBusTube. More...
 
class  Tp::OutgoingFileTransferChannel
 The OutgoingFileTransferChannel class represents a Telepathy channel of type FileTransfer for outgoing file transfers. More...
 
class  Tp::OutgoingStreamTubeChannel
 The OutgoingStreamTubeChannel class represents an outgoing Telepathy channel of type StreamTube. More...
 
class  Tp::PendingChannel
 The PendingChannel class represents the parameters of and the reply to an asynchronous channel request. More...
 
class  Tp::PendingDBusTubeConnection
 
class  Tp::PendingSendMessage
 The PendingSendMessage class represents the parameters of and the reply to an asynchronous message send request. More...
 
class  Tp::PendingStreamTubeConnection
 The PendingStreamTubeConnection class represents an asynchronous operation for accepting an incoming stream tube. More...
 
class  Tp::RoomListChannel
 The RoomListChannel class represents a Telepathy Channel of type RoomList. More...
 
class  Tp::ServerAuthenticationChannel
 The ServerAuthenticationChannel class is a base class for all ServerAuthentication types. More...
 
class  Tp::StreamTubeChannel
 The StreamTubeChannel class represents a Telepathy channel of type StreamTube. More...
 
class  Tp::PendingStreamedMediaStreams
 Class containing the result of an asynchronous streamed media stream creation request. More...
 
class  Tp::StreamedMediaStream
 The StreamedMediaStream class represents a Telepathy streamed media stream. More...
 
class  Tp::StreamedMediaChannel
 The StreamedMediaChannel class represents a Telepathy channel of type StreamedMedia. More...
 
class  Tp::TextChannel
 The TextChannel class represents a Telepathy channel of type Text. More...
 
class  Tp::TubeChannel
 The TubeChannel class is a base class for all tube types. More...
 
class  Tp::Client::ChannelInterface
 
class  Tp::Client::ChannelInterfaceAnonymityInterface
 
class  Tp::Client::ChannelInterfaceCallStateInterface
 
class  Tp::Client::ChannelInterfaceCaptchaAuthenticationInterface
 
class  Tp::Client::ChannelInterfaceChatStateInterface
 
class  Tp::Client::ChannelInterfaceConferenceInterface
 
class  Tp::Client::ChannelInterfaceDTMFInterface
 
class  Tp::Client::ChannelInterfaceDestroyableInterface
 
class  Tp::Client::ChannelInterfaceFileTransferMetadataInterface
 
class  Tp::Client::ChannelInterfaceGroupInterface
 
class  Tp::Client::ChannelInterfaceHoldInterface
 
class  Tp::Client::ChannelInterfaceMediaSignallingInterface
 
class  Tp::Client::ChannelInterfaceMessagesInterface
 
class  Tp::Client::ChannelInterfacePasswordInterface
 
class  Tp::Client::ChannelInterfaceRoomConfigInterface
 
class  Tp::Client::ChannelInterfaceRoomInterface
 
class  Tp::Client::ChannelInterfaceSASLAuthenticationInterface
 
class  Tp::Client::ChannelInterfaceSMSInterface
 
class  Tp::Client::ChannelInterfaceSecurableInterface
 
class  Tp::Client::ChannelInterfaceServicePointInterface
 
class  Tp::Client::ChannelInterfaceSubjectInterface
 
class  Tp::Client::ChannelInterfaceTubeInterface
 
class  Tp::Client::ChannelTypeCallInterface
 
class  Tp::Client::ChannelTypeContactListInterface
 
class  Tp::Client::ChannelTypeContactSearchInterface
 
class  Tp::Client::ChannelTypeDBusTubeInterface
 
class  Tp::Client::ChannelTypeFileTransferInterface
 
class  Tp::Client::ChannelTypeRoomListInterface
 
class  Tp::Client::ChannelTypeServerAuthenticationInterface
 
class  Tp::Client::ChannelTypeServerTLSConnectionInterface
 
class  Tp::Client::ChannelTypeStreamTubeInterface
 
class  Tp::Client::ChannelTypeStreamedMediaInterface
 
class  Tp::Client::ChannelTypeTextInterface
 
class  Tp::Client::ChannelTypeTubesInterface
 

Detailed Description

Proxy objects representing remote Telepathy Channel objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/modules.html0000644000175100017520000002305112530426260021763 0ustar00kaffeinekaffeine00000000000000 Modules
   Home · All Classes · All Namespaces · Modules · Functions · Files
Modules


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/functions_vars_0x77.html0000644000175100017520000000321612530426260024144 0ustar00kaffeinekaffeine00000000000000 Class Members - Variables
   Home · All Classes · All Namespaces · Modules · Functions · Files
 

- w -


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00375.html0000644000175100017520000025614412530426260021145 0ustar00kaffeinekaffeine00000000000000 Tp::IncomingFileTransferChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The IncomingFileTransferChannel class represents a Telepathy channel of type FileTransfer for incoming file transfers. More...

#include <TelepathyQt/IncomingFileTransferChannel>

Inherits Tp::FileTransferChannel.

Signals

void uriDefined (const QString &uri)
 
- Signals inherited from Tp::FileTransferChannel
void stateChanged (Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason)
 
void initialOffsetDefined (qulonglong initialOffset)
 
void transferredBytesChanged (qulonglong count)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Public Member Functions

virtual ~IncomingFileTransferChannel ()
 
PendingOperationsetUri (const QString &uri)
 
PendingOperationacceptFile (qulonglong offset, QIODevice *output)
 
- Public Member Functions inherited from Tp::FileTransferChannel
virtual ~FileTransferChannel ()
 
FileTransferState state () const
 
FileTransferStateChangeReason stateReason () const
 
QString fileName () const
 
QString contentType () const
 
qulonglong size () const
 
QString uri () const
 
FileHashType contentHashType () const
 
QString contentHash () const
 
QString description () const
 
QDateTime lastModificationTime () const
 
qulonglong initialOffset () const
 
qulonglong transferredBytes () const
 
PendingOperationcancel ()
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static
IncomingFileTransferChannelPtr 
create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::FileTransferChannel
static FileTransferChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::FileTransferChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 IncomingFileTransferChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=IncomingFileTransferChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::FileTransferChannel
 FileTransferChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=FileTransferChannel::FeatureCore)
 
SupportedSocketMap availableSocketTypes () const
 
bool isConnected () const
 
void setConnected ()
 
bool isFinished () const
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Protected Slots inherited from Tp::FileTransferChannel
void onUriDefined (const QString &uri)
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The IncomingFileTransferChannel class represents a Telepathy channel of type FileTransfer for incoming file transfers.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::IncomingFileTransferChannel::~IncomingFileTransferChannel ( )
virtual

Class destructor.

Tp::IncomingFileTransferChannel::IncomingFileTransferChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = IncomingFileTransferChannel::FeatureCore 
)
protected

Construct a new IncomingFileTransferChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on IncomingFileTransferChannel::FeatureCore.

Member Function Documentation

IncomingFileTransferChannelPtr Tp::IncomingFileTransferChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new IncomingFileTransferChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A IncomingFileTransferChannelPtr object pointing to the newly created IncomingFileTransfer object.
PendingOperation * Tp::IncomingFileTransferChannel::setUri ( const QString &  uri)

Set the URI where the file will be saved.

This property may be set by the channel handler before calling AcceptFile to inform observers where the incoming file will be saved. When the URI property is set, the signal uriDefined() is emitted.

This method requires IncomingFileTransferChannel::FeatureCore to be ready.

Parameters
uriThe URI where the file will be saved.
Returns
A PendingOperation object which will emit PendingOperation::finished when the call has finished.
See Also
FileTransferChannel::uri(), uriDefined()
PendingOperation * Tp::IncomingFileTransferChannel::acceptFile ( qulonglong  offset,
QIODevice *  output 
)

Accept a file transfer that's in the FileTransferStatePending state().

The state will change to FileTransferStateOpen as soon as the transfer starts. The given output device should not be closed/destroyed until the state() changes to FileTransferStateCompleted or FileTransferStateCancelled.

Only the primary handler of a file transfer channel may call this method.

This method requires IncomingFileTransferChannel::FeatureCore to be ready.

Parameters
offsetThe desired offset in bytes where the file transfer should start. The offset is taken from the beginning of the file. Specifying an offset of zero will start the transfer from the beginning of the file. The offset that is actually given in the initialOffset() method can differ from this argument where the requested offset is not supported. (For example, some protocols do not support offsets at all so the initialOffset() will always be 0.).
outputA QIODevice object where the data will be written to. The device should be ready to use when the state() changes to FileTransferStateCompleted. If the transfer is cancelled, state() becomes FileTransferStateCancelled, the data in output should be ignored
Returns
A PendingOperation object which will emit PendingOperation::finished when the call has finished.
See Also
FileTransferChannel::stateChanged(), FileTransferChannel::state(), FileTransferChannel::stateReason(), FileTransferChannel::initialOffset()
void Tp::IncomingFileTransferChannel::uriDefined ( const QString &  uri)
signal

Emitted when the value of uri() changes.

Parameters
uriThe new URI of this file transfer channel.
See Also
FileTransferChannel::uri(), setUri()

Member Data Documentation

const Feature Tp::IncomingFileTransferChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the IncomingFileTransferChannel object usable.

This is currently the same as FileTransferChannel::FeatureCore, but may change to include more.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01336.html0000644000175100017520000001236012530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceConferenceAdaptor Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01090.html0000644000175100017520000001504412530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ProtocolInfo Member List


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00935.html0000644000175100017520000002057312530426260021142 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelSecurableInterface Member List

This is the complete list of members for Tp::BaseChannelSecurableInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseChannelSecurableInterface()Tp::BaseChannelSecurableInterfaceprotected
create()Tp::BaseChannelSecurableInterfaceinlinestatic
create()Tp::BaseChannelSecurableInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
encrypted() const Tp::BaseChannelSecurableInterface
immutableProperties() const Tp::BaseChannelSecurableInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setEncrypted(bool encrypted)Tp::BaseChannelSecurableInterface
setVerified(bool verified)Tp::BaseChannelSecurableInterface
verified() const Tp::BaseChannelSecurableInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelSecurableInterface()Tp::BaseChannelSecurableInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00434.html0000644000175100017520000003344412530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::PendingComposite Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingComposite Class Reference

The PendingComposite class is a PendingOperation that can be used to track multiple pending operations at once. More...

#include <TelepathyQt/PendingComposite>

Inherits Tp::PendingOperation.

Public Member Functions

 PendingComposite (const QList< PendingOperation * > &operations, const SharedPtr< RefCounted > &object)
 
 PendingComposite (const QList< PendingOperation * > &operations, bool failOnFirstError, const SharedPtr< RefCounted > &object)
 
 ~PendingComposite ()
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingComposite class is a PendingOperation that can be used to track multiple pending operations at once.

Constructor & Destructor Documentation

Tp::PendingComposite::PendingComposite ( const QList< PendingOperation * > &  operations,
const SharedPtr< RefCounted > &  object 
)
Tp::PendingComposite::PendingComposite ( const QList< PendingOperation * > &  operations,
bool  failOnFirstError,
const SharedPtr< RefCounted > &  object 
)
Tp::PendingComposite::~PendingComposite ( )


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00189.html0000644000175100017520000006217712530426260021151 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

Tp::CaptchaInfoList GetCaptchas (const QDBusMessage &dbusMessage, uint &numberRequired, QString &language)
 
QByteArray GetCaptchaData (uint ID, const QString &mimeType, const QDBusMessage &dbusMessage)
 
void AnswerCaptchas (const Tp::CaptchaAnswers &answers, const QDBusMessage &dbusMessage)
 
void CancelCaptcha (uint reason, const QString &debugMessage, const QDBusMessage &dbusMessage)
 

Public Member Functions

bool CanRetryCaptcha () const
 
uint CaptchaStatus () const
 
QString CaptchaError () const
 
QVariantMap CaptchaErrorDetails () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

bool Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CanRetryCaptcha ( ) const

Return the value of the exported D-Bus object property CanRetryCaptcha of type bool.

Adaptees should export this property as a Qt property named 'canRetryCaptcha' with type bool.

If true, GetCaptchas() can be expected to return new captcha information when in the Local_Pending state. If false, GetCaptchas() will return NotAvailable on subsequent calls.

Refreshing the captcha isn't required to work, although some protocols and implementations allow it. This is usually done in case a given captcha is unintelligible.

Returns
The value of exported property CanRetryCaptcha.
uint Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CaptchaStatus ( ) const

Return the value of the exported D-Bus object property CaptchaStatus of type uint.

Adaptees should export this property as a Qt property named 'captchaStatus' with type uint.

The current status of this channel.

Because only the Handler should call methods on this interface, the Handler MAY reduce round-trips by not fetching the initial value of this property, and instead assume that is initially Local_Pending.

This assumption normally avoids the need to call GetAll(), since the values of CaptchaError and CaptchaErrorDetails are also implied by this assumption, and the only other property is CanRetryCaptcha , which is immutable.

Returns
The value of exported property CaptchaStatus.
QString Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CaptchaError ( ) const

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

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

The reason for the CaptchaStatus , or an empty string if the state is neither Try_Again nor Failed.

Typical values: "", Cancelled, AuthenticationFailed, CaptchaNotSupported

In particular, an ordinary authentication failure (as would be produced for an incorrect answer) SHOULD be represented by AuthenticationFailed, cancellation by the user's request SHOULD be represented by Cancelled, cancellation due to the inability to display the captcha to the user or otherwise answer it SHOULD be represented by CaptchaNotSupported, and cancellation by a local process due to inconsistent or invalid challenges from the server SHOULD be represented by ServiceConfused.

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, this error code SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
The value of exported property CaptchaError.
QVariantMap Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CaptchaErrorDetails ( ) const

Return the value of the exported D-Bus object property CaptchaErrorDetails of type QVariantMap.

Adaptees should export this property as a Qt property named 'captchaErrorDetails' with type QVariantMap.

If CaptchaError is non-empty, any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of ConnectionInterface::ConnectionError() .

If this interface appears on a ChannelTypeServerAuthenticationInterface channel, and connection to the server fails with an authentication failure, these details SHOULD be copied into the ConnectionInterface::ConnectionError() signal.

Returns
The value of exported property CaptchaErrorDetails.
Tp::CaptchaInfoList Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchas ( const QDBusMessage &  dbusMessage,
uint &  numberRequired,
QString &  language 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getCaptchas(const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchasContextPtr &context);

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

Gets information regarding each of the captcha methods available and which and how many need to be successfully answered

To call this method successfully, the state must be Local_Pending or Try_Again. If it is Local_Pending, it remains Local_Pending. If called more than once while in Local_Pending state, or if the state is Try_Again, this method fetches a new set of captcha challenges, if possible, and the state returns to Local_Pending.

For instance, you could call GetCaptchas again from Local_Pending state if the user indicates that they can't understand the initially-offered captcha.

This is a method, not a property, so that it can be used to fetch more than one set of captcha challenges, and so that change notification is not required. Only the Handler should call this method and calling GetAll would not reduce round-trips, so the usual reasons to prefer a property do not apply here.

Parameters
numberRequiredOutput parameter
The number of captcha methods required to be answered in order to successfully complete this captcha challenge (most frequently 1, but XMPP allows servers to demand that more than one captcha is answered).
Parameters
languageOutput parameter
The language of each Label in Captcha_Info if available, for instance en_US, or "" if unknown.
Returns
Information about each of the available captcha methods.
QByteArray Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchaData ( uint  ID,
const QString &  mimeType,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void getCaptchaData(uint ID, const QString& mimeType, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchaDataContextPtr &context);

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

Fetch and return the captcha data. In protocols where captchas are downloaded out-of-band (for instance via HTTP), the connection manager is expected to do so.

Returns an empty array if the type was "qa"

If audio-based and image-based captchas are both available, we don't want to waste time downloading the audio until/unless the user asks to hear it. The extra D-Bus round-trips are not a problem, since they are expected to be quick compared with the time taken for the user to solve the captcha.

Parameters
ID
The ID of the captcha of which to retrieve data.
mimeType
MIME type picked by the Handler, chosen from the list of MIME types 
received in GetCaptchas. XEP-0158 allows the same captcha to be 
made available in multiple formats, for instance the same spoken 
question as audio/x-wav, application/ogg and audio/speex.
Returns
Captcha data as requested.
void Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::AnswerCaptchas ( const Tp::CaptchaAnswers answers,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void answerCaptchas(const Tp::CaptchaAnswers& answers, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::AnswerCaptchasContextPtr &context);

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

Answer as many captchas as desired and/or required.

Callable in state Local_Pending only. State changes to Remote_Pending.

Parameters
answers
The mapping of captcha IDs to answer strings.
void Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CancelCaptcha ( uint  reason,
const QString &  debugMessage,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void cancelCaptcha(uint reason, const QString& debugMessage, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CancelCaptchaContextPtr &context);

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

Cancel. State changes to Failed with error NotAvailable or Cancelled if it isn't already Failed. All you can do now is to close the channel.

Parameters
reason
Reason for cancelling. This MAY be used to choose an error response 
to the remote server, and SHOULD also be reflected in the 
CaptchaError.
debugMessage
A textual description of the reason for cancelling, supplied by the 
Handler. This message SHOULD NOT be sent to the remote server, but 
SHOULD be copied into the &apos;debug-message&apos; field of the 
CaptchaErrorDetails and ConnectionError.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/sync_off.png0000644000175100017520000000152512530426257021751 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRàw=øIDATxíÝKhTWÀñÿä1I&3™8M¦Iš™†I3Ú©b$cÌ I1V1±-(Tö±±Ð.* t!‚K[¥Ä¥ˆ„¨´f£`l(øl©"Y”¤6ÆgÌTú}·sgîܹ ±d{8?æÌ¹÷;çÜuíÚ`:!±F¬¢BäŠ?ŰÄm'yÊÅ>ÑlU¯½üý‰è_‹?€Œê ]€Y(ŠNñ±8fý1°Öqún-eâ¨øtºmâÈ Ó0}b›ù%·©µ×Œ®=Ÿ0´³?Š1sŸ‹0€¯8À‘;_ ‹W|%\ Zð— >舽ln¨p©.aÇ{ )t;Ú b nŸš¯›65°¢¡2çÅÔ?Žž>Oдàuönm¤¢Ì`×­Z¬WjC~>‘Ö¾0+á {{©fÝ×Mæ·æÅ•ìÙ¼˜` Ý›%uA6´½ÅÆö¨Á,]k¢ÄW¼™u±›]‹ˆ7§¯iòh€ ¶¶¬ÏÖu1 ló —Ҷ̺–:ÞÍ\ÄcãÏxøhR²Êè‡Qt$¿ß§¨ ª fdºü<4BÿÙ[•f¸d7=.Mé9/—éªÃëù/ÿO Üaàò}€,‘j?Ÿõ.5Úšm?œÿŸ®ŽXÿ2¬#¸d píæ(£?cÛú¼!½›a1¥Þ—ŽòØ©ܾ7dÔK:‚ùÒ‰ì)Ê3‚Ü™àÌà]€,±H€µ+køöäu<|`·LhC7¹ÔeÍ Ÿ×Ÿ˜tÜ‹ óH$^2%l.êaeÐäýE”ÌÉ|ÅÜìî‰Ýsä }¸ýDû^hzé~ðR›¦Ã¡¿]|#ü¯@×—Ö‡[k¹–<|š(Ç*€Ý¹dÇtMé:Ýñø«Ø,êÅû¢]”' øXÓ_nò¡Æ|Øý /c§fžâOIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a00719_source.html0000644000175100017520000002011412530426257022517 0ustar00kaffeinekaffeine00000000000000 incoming-dbus-tube-channel.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
incoming-dbus-tube-channel.h
1 
22 #ifndef _TelepathyQt_incoming_dbus_tube_channel_h_HEADER_GUARD_
23 #define _TelepathyQt_incoming_dbus_tube_channel_h_HEADER_GUARD_
24 
25 #ifndef IN_TP_QT_HEADER
26 #error IN_TP_QT_HEADER
27 #endif
28 
29 #include <TelepathyQt/DBusTubeChannel>
30 
31 namespace Tp {
32 
33 class PendingDBusTubeConnection;
34 
35 class TP_QT_EXPORT IncomingDBusTubeChannel : public DBusTubeChannel
36 {
37  Q_OBJECT
38  Q_DISABLE_COPY(IncomingDBusTubeChannel)
39 
40 public:
41  static IncomingDBusTubeChannelPtr create(const ConnectionPtr &connection,
42  const QString &objectPath, const QVariantMap &immutableProperties);
43 
44  virtual ~IncomingDBusTubeChannel();
45 
46  PendingDBusTubeConnection *acceptTube(bool allowOtherUsers = false);
47 
48 protected:
49  IncomingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath,
50  const QVariantMap &immutableProperties);
51 
52 private:
53  struct Private;
54  friend struct Private;
55  Private *mPriv;
56 
57 };
58 
59 }
60 
61 #endif
Definition: pending-dbus-tube-connection.h:36
The DBusTubeChannel class represents a Telepathy channel of type DBusTube.
Definition: dbus-tube-channel.h:34
The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube...
Definition: incoming-dbus-tube-channel.h:35


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00248.html0000644000175100017520000016620212530426260021137 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ChannelTypeStreamedMediaInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Channel>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply
< Tp::MediaStreamInfoList
ListStreams (int timeout=-1)
 
QDBusPendingReply RemoveStreams (const Tp::UIntList &streams, int timeout=-1)
 
QDBusPendingReply RequestStreamDirection (uint streamID, uint streamDirection, int timeout=-1)
 
QDBusPendingReply
< Tp::MediaStreamInfoList
RequestStreams (uint contactHandle, const Tp::UIntList &types, int timeout=-1)
 

Signals

void StreamAdded (uint streamID, uint contactHandle, uint streamType)
 
void StreamDirectionChanged (uint streamID, uint streamDirection, uint pendingFlags)
 
void StreamError (uint streamID, uint errorCode, const QString &message)
 
void StreamRemoved (uint streamID)
 
void StreamStateChanged (uint streamID, uint streamState)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ChannelTypeStreamedMediaInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeStreamedMediaInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ChannelTypeStreamedMediaInterface (Tp::DBusProxy *proxy)
 
 ChannelTypeStreamedMediaInterface (const Tp::Client::ChannelInterface &mainInterface)
 
 ChannelTypeStreamedMediaInterface (const Tp::Client::ChannelInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyInitialAudio () const
 
Tp::PendingVariantrequestPropertyInitialVideo () const
 
Tp::PendingVariantrequestPropertyImmutableStreams () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Channel.Type.StreamedMedia".

Constructor & Destructor Documentation

Tp::Client::ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeStreamedMediaInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ChannelTypeStreamedMediaInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface ( Tp::DBusProxy proxy)

Creates a ChannelTypeStreamedMediaInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface ( const Tp::Client::ChannelInterface mainInterface)
explicit

Creates a ChannelTypeStreamedMediaInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ChannelTypeStreamedMediaInterface::ChannelTypeStreamedMediaInterface ( const Tp::Client::ChannelInterface mainInterface,
QObject *  parent 
)

Creates a ChannelTypeStreamedMediaInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ChannelTypeStreamedMediaInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Channel.Type.StreamedMedia", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ChannelTypeStreamedMediaInterface::requestPropertyInitialAudio ( ) const
inline

Asynchronous getter for the remote object property InitialAudio of type bool.

If set to true in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call ChannelTypeStreamedMediaInterface::RequestStreams() .

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If true on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If true on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by ChannelTypeStreamedMediaInterface::ListStreams() ).

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. ConnectionInterfaceRequestsInterface::NewChannels() signals.

This reduces D-Bus round trips.

Connection managers capable of signalling audio calls to contacts SHOULD include a channel class in ConnectionInterfaceRequestsInterface::RequestableChannelClasses with ChannelInterface::ChannelType = ChannelTypeStreamedMediaInterface and ChannelInterface::TargetHandleType = Contact in the fixed properties dictionary, and InitialAudio (and also InitialVideo, if applicable) in the allowed properties list. Clients wishing to discover whether a connection manager can signal audio and/or video calls SHOULD use this information.

Not all protocols support signalling video calls, and it would be possible (although unlikely) to have a protocol where only video, and not audio, could be signalled.

Connection managers that support the ConnectionInterfaceContactCapabilitiesInterface interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = StreamedMedia in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling ConnectionInterfaceContactCapabilitiesInterface::UpdateCapabilities() (clients of a ChannelDispatcherInterface SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their ClientHandlerInterface::HandlerChannelFilter properties):

  • { ChannelType = StreamedMedia }
  • { ChannelType = StreamedMedia, InitialAudio = true } if receiving calls with audio is supported
  • { ChannelType = StreamedMedia, InitialVideo = true } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeStreamedMediaInterface::requestPropertyInitialVideo ( ) const
inline

Asynchronous getter for the remote object property InitialVideo of type bool.

The same as InitialAudio , but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is false, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ChannelTypeStreamedMediaInterface::requestPropertyImmutableStreams ( ) const
inline

Asynchronous getter for the remote object property ImmutableStreams of type bool.

If True, once streams have been requested for this channel (either by setting InitialAudio or InitialVideo when the channel is requested, or by calling RequestStreams() on a channel with no streams), a stream of a different content type cannot be added; subsequent calls to RequestStreams() that attempt to do so will fail.

If this property is missing, clients SHOULD assume that it is false, and thus that the channel's streams can be changed once the call has started.

If this property is present in the "allowed" set in all of the StreamedMedia entries in a contact's capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call" button with the option to add and remove video once the call has started for contacts without this flag.

This property is immutable, and therefore SHOULD be announced in ConnectionInterfaceRequestsInterface::NewChannels() , etc.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ChannelTypeStreamedMediaInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply<Tp::MediaStreamInfoList> Tp::Client::ChannelTypeStreamedMediaInterface::ListStreams ( int  timeout = -1)
inlineslot

Begins a call to the D-Bus method ListStreams on the remote object.

Returns an array of structs representing the streams currently active within this channel. Each stream is identified by an unsigned integer which is unique for each stream within the channel.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
timeoutThe timeout in milliseconds.
Returns
An array of structs containing:
  • the stream identifier
  • the contact handle who the stream is with (or 0 if the stream represents more than a single member)
  • the type of the stream
  • the current stream state
  • the current direction of the stream
  • the current pending send flags
QDBusPendingReply Tp::Client::ChannelTypeStreamedMediaInterface::RemoveStreams ( const Tp::UIntList streams,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RemoveStreams on the remote object.

Request that the given streams are removed. If all streams are removed, the channel MAY close.

Clients SHOULD NOT attempt to terminate calls by removing all the streams; instead, clients SHOULD terminate calls by removing the ChannelInterfaceGroupInterface::SelfHandle from the channel, using either ChannelInterfaceGroupInterface::RemoveMembers() or ChannelInterfaceGroupInterface::RemoveMembersWithReason() .

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
streams
An array of stream identifiers (as defined in ListStreams)
timeoutThe timeout in milliseconds.
QDBusPendingReply Tp::Client::ChannelTypeStreamedMediaInterface::RequestStreamDirection ( uint  streamID,
uint  streamDirection,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestStreamDirection on the remote object.

Request a change in the direction of an existing stream. In particular, this might be useful to stop sending media of a particular type, or inform the peer that you are no longer using media that is being sent to you.

Depending on the protocol, streams which are no longer sending in either direction should be removed and a StreamRemoved() signal emitted. Some direction changes can be enforced locally (for example, BIDIRECTIONAL -> RECEIVE can be achieved by merely stopping sending), others may not be possible on some protocols, and some need agreement from the remote end. In this case, the MEDIA_STREAM_PENDING_REMOTE_SEND flag will be set in the StreamDirectionChanged() signal, and the signal emitted again without the flag to indicate the resulting direction when the remote end has accepted or rejected the change.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
streamID
The stream identifier (as defined in ListStreams)
streamDirection
The desired stream direction (a value of MediaStreamDirection)
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::MediaStreamInfoList> Tp::Client::ChannelTypeStreamedMediaInterface::RequestStreams ( uint  contactHandle,
const Tp::UIntList types,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method RequestStreams on the remote object.

Request that streams be established to exchange the given types of media with the given member. In general this will try and establish a bidirectional stream, but on some protocols it may not be possible to indicate to the peer that you would like to receive media, so a send-only stream will be created initially. In the cases where the stream requires remote agreement (eg you wish to receive media from them), the StreamDirectionChanged() signal will be emitted with the MEDIA_STREAM_PENDING_REMOTE_SEND flag set, and the signal emitted again with the flag cleared when the remote end has replied.

If streams of the requested types already exist, calling this method results in the creation of additional streams. Accordingly, clients wishing to have exactly one audio stream or exactly one video stream SHOULD check for the current streams using ListStreams() before calling this method.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contactHandle
A contact handle with whom to establish the streams
types
An array of stream types (values of MediaStreamType)
timeoutThe timeout in milliseconds.
Returns
An array of structs (in the same order as the given stream types) containing:
  • the stream identifier
  • the contact handle who the stream is with (or 0 if the stream represents more than a single member)
  • the type of the stream
  • the current stream state
  • the current direction of the stream
  • the current pending send flags
void Tp::Client::ChannelTypeStreamedMediaInterface::StreamAdded ( uint  streamID,
uint  contactHandle,
uint  streamType 
)
signal

Represents the signal StreamAdded on the remote object.

Emitted when a new stream has been added to this channel. Clients SHOULD assume that the stream's Media_Stream_State is initially Disconnected.

If a connection manager needs to represent the addition of a stream whose state is already Connecting or Connected, it MUST do this by emitting StreamAdded, closely followed by StreamStateChanged() indicating a change to the appropriate state.

Historically, it was not clear from the StreamAdded signal what the state of the stream was. telepathy-spec 0.17.22 clarified this.

Similarly, clients SHOULD assume that the initial Media_Stream_Direction of a newly added stream is Receive, and that the initial Media_Stream_Pending_Send is Pending_Local_Send.

If a connection manager needs to represent the addition of a stream whose direction or pending-send differs from those initial values, it MUST do so by emitting StreamAdded, closely followed by StreamDirectionChanged() indicating a change to the appropriate direction and pending-send state.

StreamAdded doesn't itself indicate the stream's direction; this is unfortunate, but is preserved for compatibility.

This is the appropriate direction for streams added by a remote contact on existing connection managers, and does not violate user privacy by automatically sending audio or video (audio streams start off muted, video streams start off not sending). For streams added by the local user using the client receiving the signal, the true direction can also be determined from the return value of the RequestStreams() method.

Existing clients typically operate by maintaining a separate idea of the directions that they would like the streams to have, and enforcing these intended directions by calling RequestStreamDirection() whenever needed.

Parameters
streamID
The stream identifier (as defined in ListStreams)
contactHandle
The contact handle who the stream is with (or 0 if it represents 
more than a single member)
streamType
The stream type (a value from MediaStreamType)
void Tp::Client::ChannelTypeStreamedMediaInterface::StreamDirectionChanged ( uint  streamID,
uint  streamDirection,
uint  pendingFlags 
)
signal

Represents the signal StreamDirectionChanged on the remote object.

Emitted when the direction or pending flags of a stream are changed.

If the MEDIA_STREAM_PENDING_LOCAL_SEND flag is set, the remote user has requested that we begin sending on this stream. RequestStreamDirection() should be called to indicate whether or not this change is acceptable.

This allows for a MSN-style user interface, "Fred has asked you to enable your webcam. (Accept | Reject)", if desired.

Parameters
streamID
The stream identifier (as defined in ListStreams)
streamDirection
The new stream direction (as defined in ListStreams)
pendingFlags
The new pending send flags (as defined in ListStreams)
void Tp::Client::ChannelTypeStreamedMediaInterface::StreamError ( uint  streamID,
uint  errorCode,
const QString &  message 
)
signal

Represents the signal StreamError on the remote object.

Emitted when a stream encounters an error.

Parameters
streamID
The stream identifier (as defined in ListStreams)
errorCode
A stream error number, one of the values of MediaStreamError
message
A string describing the error (for debugging purposes only)
void Tp::Client::ChannelTypeStreamedMediaInterface::StreamRemoved ( uint  streamID)
signal

Represents the signal StreamRemoved on the remote object.

Emitted when a stream has been removed from this channel.

Parameters
streamID
stream_id - the stream identifier (as defined in ListStreams)
void Tp::Client::ChannelTypeStreamedMediaInterface::StreamStateChanged ( uint  streamID,
uint  streamState 
)
signal

Represents the signal StreamStateChanged on the remote object.

Emitted when a member's stream's state changes.

Parameters
streamID
The stream identifier (as defined in ListStreams)
streamState
The new stream state (as defined in ListStreams)
void Tp::Client::ChannelTypeStreamedMediaInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01209.html0000644000175100017520000000441112530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::VideoResolution Member List

This is the complete list of members for Tp::VideoResolution, including all inherited members.

heightTp::VideoResolution
widthTp::VideoResolution


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00307.html0000644000175100017520000011555012530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::Client::ConnectionInterfaceSimplePresenceInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

#include <TelepathyQt/Connection>

Inherits Tp::AbstractInterface.

Public Slots

QDBusPendingReply SetPresence (const QString &status, const QString &statusMessage, int timeout=-1)
 
QDBusPendingReply
< Tp::SimpleContactPresences
GetPresences (const Tp::UIntList &contacts, int timeout=-1)
 

Signals

void PresencesChanged (const Tp::SimpleContactPresences &presence)
 
- Signals inherited from Tp::AbstractInterface
void propertiesChanged (const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 

Public Member Functions

 ConnectionInterfaceSimplePresenceInterface (const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceSimplePresenceInterface (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
 
 ConnectionInterfaceSimplePresenceInterface (Tp::DBusProxy *proxy)
 
 ConnectionInterfaceSimplePresenceInterface (const Tp::Client::ConnectionInterface &mainInterface)
 
 ConnectionInterfaceSimplePresenceInterface (const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)
 
Tp::PendingVariantrequestPropertyStatuses () const
 
Tp::PendingVariantrequestPropertyMaximumStatusMessageLength () const
 
Tp::PendingVariantMaprequestAllProperties () const
 
- Public Member Functions inherited from Tp::AbstractInterface
virtual ~AbstractInterface ()
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
void setMonitorProperties (bool monitorProperties)
 
bool isMonitoringProperties () const
 

Static Public Member Functions

static QLatin1String staticInterfaceName ()
 

Protected Member Functions

virtual void invalidate (Tp::DBusProxy *, const QString &, const QString &)
 
- Protected Member Functions inherited from Tp::AbstractInterface
 AbstractInterface (DBusProxy *proxy, const QLatin1String &interface)
 
 AbstractInterface (const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)
 
PendingVariantinternalRequestProperty (const QString &name) const
 
PendingOperationinternalSetProperty (const QString &name, const QVariant &newValue)
 
PendingVariantMapinternalRequestAllProperties () const
 

Additional Inherited Members

- Protected Slots inherited from Tp::AbstractInterface

Detailed Description

Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.SimplePresence".

Constructor & Destructor Documentation

Tp::Client::ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface ( const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceSimplePresenceInterface associated with the given object on the session bus.

Parameters
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface ( const QDBusConnection &  connection,
const QString &  busName,
const QString &  objectPath,
QObject *  parent = 0 
)

Creates a ConnectionInterfaceSimplePresenceInterface associated with the given object on the given bus.

Parameters
connectionThe bus via which the object can be reached.
busNameName of the service the object is on.
objectPathPath to the object on the service.
parentPassed to the parent class constructor.
Tp::Client::ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface ( Tp::DBusProxy proxy)

Creates a ConnectionInterfaceSimplePresenceInterface associated with the same object as the given proxy.

Parameters
proxyThe proxy to use. It will also be the QObject::parent() for this object.
Tp::Client::ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface ( const Tp::Client::ConnectionInterface mainInterface)
explicit

Creates a ConnectionInterfaceSimplePresenceInterface associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.

Parameters
mainInterfaceThe proxy to use.
Tp::Client::ConnectionInterfaceSimplePresenceInterface::ConnectionInterfaceSimplePresenceInterface ( const Tp::Client::ConnectionInterface mainInterface,
QObject *  parent 
)

Creates a ConnectionInterfaceSimplePresenceInterface associated with the same object as the given proxy. However, a different parent object can be specified.

Parameters
mainInterfaceThe proxy to use.
parentPassed to the parent class constructor.

Member Function Documentation

static QLatin1String Tp::Client::ConnectionInterfaceSimplePresenceInterface::staticInterfaceName ( )
inlinestatic

Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.SimplePresence", which this class represents.

Returns
The D-Bus interface name.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceSimplePresenceInterface::requestPropertyStatuses ( ) const
inline

Asynchronous getter for the remote object property Statuses of type Tp::SimpleStatusSpecMap.

A dictionary where the keys are the presence statuses that are available on this connection, and the values are the corresponding presence types.

While the connection is in the DISCONNECTED state, it contains the set of presence statuses allowed to be set before connecting. The connection manager will attempt to set the appropriate status when the connection becomes connected, but cannot necessarily guarantee it. The available statuses cannot change until the connection status changes, so there is no change notification.

While the connection is in the CONNECTED state, this property contains the set of presence statuses which are actually available on this protocol. This set is constant for the remaining lifetime of the connection, so again, there is no change notification.

While the connection is in the CONNECTING state, the value of this property is undefined and SHOULD NOT be used. It can change at any time without notification (in particular, any cached values from when the connection was in the DISCONNECTED or CONNECTING state MUST NOT be assumed to still be correct when the state has become CONNECTED).

This property MUST include the special statuses "unknown" and "error" if and only if the connection manager can emit them as a contact's status.

For instance, connection managers for local-xmpp (XEP-0174) would omit "unknown" since there is no such concept.
Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariant* Tp::Client::ConnectionInterfaceSimplePresenceInterface::requestPropertyMaximumStatusMessageLength ( ) const
inline

Asynchronous getter for the remote object property MaximumStatusMessageLength of type uint.

The maximum length in characters for any individual status message, or 0 if there is no limit.

While the connection is in the DISCONNECTED state, this property will be 0. The connection manager will attempt to set the appropriate value when the connection becomes connected, but cannot necessarily guarantee it. The maximum length cannot change until the connection status changes, so there is no change notification.

While the connection is in the CONNECTED state, this property contains the maximum length in characters for any individual status message which is actually allowed on this protocol. This value is constant for the remaining lifetime of the connection, so again, there is no change notification.

While the connection is in the CONNECTING state, the value of this property is undefined and SHOULD NOT be used. It can change at any time without notification (in particular, any cached values from when the connection was in the DISCONNECTED or CONNECTING state MUST NOT be assumed to still be correct when the state has become CONNECTED).

If a message passed to SetPresence() is longer than allowed by this property, the connection manager MUST truncate the supplied message; when emitting PresencesChanged() , the truncated version of the message MUST be used.

Some XMPP servers, like Google Talk, define a maximum length for status messages. Whether the user's server is one of these cannot be detected until quite late in the connection process.

Returns
A pending variant which will emit finished when the property has been retrieved.
Tp::PendingVariantMap* Tp::Client::ConnectionInterfaceSimplePresenceInterface::requestAllProperties ( ) const
inline

Request all of the DBus properties on the interface.

Returns
A pending variant map which will emit finished when the properties have been retrieved.
QDBusPendingReply Tp::Client::ConnectionInterfaceSimplePresenceInterface::SetPresence ( const QString &  status,
const QString &  statusMessage,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method SetPresence on the remote object.

Request that the presence status and status message are published for the connection. Changes will be indicated by PresencesChanged() signals being emitted.

This method may be called on a newly-created connection while it is still in the DISCONNECTED state, to request that when the connection connects, it will do so with the selected status.

In DISCONNECTED state the Statuses property will indicate which statuses are allowed to be set while DISCONNECTED (none, if the Connection Manager doesn't allow this). This value MUST NOT be cached, as the set of allowed presences might change upon connecting.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
status

The string identifier of the desired status. Possible status identifiers are defined in the Statuses property.

Clients MUST NOT set a status whose string value they do not recognise, even if its presence type in Statuses matches what the user requested.

Suppose a protocol has statuses that include 'phone' (of type BUSY) and 'in-a-meeting' (of type BUSY), but there is no generic 'busy' status.

If the user requests "Busy" status from a menu, a client author might be tempted to pick an arbitrary status that has type BUSY. However, on this protocol, neither of the choices would be appropriate, and incorrect information about the user would be conveyed.

Statuses whose Connection_Presence_Type is Offline, Error or Unknown MUST NOT be passed to this function. Connection managers SHOULD reject these statuses.

To go offline, call ConnectionInterface::Disconnect() instead. The "error" and "unknown" statuses make no sense.

statusMessage
The status message associated with the current status.
timeoutThe timeout in milliseconds.
QDBusPendingReply<Tp::SimpleContactPresences> Tp::Client::ConnectionInterfaceSimplePresenceInterface::GetPresences ( const Tp::UIntList contacts,
int  timeout = -1 
)
inlineslot

Begins a call to the D-Bus method GetPresences on the remote object.

Get presence previously emitted by PresencesChanged for the given contacts. Data is returned in the same structure as the PresencesChanged signal; no additional network requests are made.

Note that timeout is ignored as of now. It will be used once http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed.

Parameters
contacts
An array of the contacts whose presence should be obtained.
timeoutThe timeout in milliseconds.
Returns

Presence information in the same format as for the PresencesChanged() signal. The returned mapping MUST include an entry for each contact in the method's argument.

The definition of the connection presence types Unknown and Offline means that if a connection manager will return Unknown for contacts not on the subscribe list, it MUST delay the reply to this method call until it has found out which contacts are, in fact, on the subscribe list.

void Tp::Client::ConnectionInterfaceSimplePresenceInterface::PresencesChanged ( const Tp::SimpleContactPresences presence)
signal

Represents the signal PresencesChanged on the remote object.

This signal should be emitted when your own presence has been changed, or the presence of the member of any of the connection's channels has been changed.

Parameters
presence
A dictionary of contact handles mapped to the status, presence type 
and status message.
void Tp::Client::ConnectionInterfaceSimplePresenceInterface::invalidate ( Tp::DBusProxy proxy,
const QString &  error,
const QString &  message 
)
protectedvirtual

Reimplemented from Tp::AbstractInterface.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01278.html0000644000175100017520000003455212530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeFileTransferInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeFileTransferInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
AcceptFile(uint addressType, uint accessControl, const QDBusVariant &accessControlParam, qulonglong offset, int timeout=-1)Tp::Client::ChannelTypeFileTransferInterfaceinlineslot
ChannelTypeFileTransferInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeFileTransferInterface
ChannelTypeFileTransferInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeFileTransferInterface
ChannelTypeFileTransferInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeFileTransferInterface
ChannelTypeFileTransferInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeFileTransferInterfaceexplicit
ChannelTypeFileTransferInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeFileTransferInterface
FileTransferStateChanged(uint state, uint reason)Tp::Client::ChannelTypeFileTransferInterfacesignal
InitialOffsetDefined(qulonglong initialOffset)Tp::Client::ChannelTypeFileTransferInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeFileTransferInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
ProvideFile(uint addressType, uint accessControl, const QDBusVariant &accessControlParam, int timeout=-1)Tp::Client::ChannelTypeFileTransferInterfaceinlineslot
requestAllProperties() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyAvailableSocketTypes() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyContentHash() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyContentHashType() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyContentType() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyDate() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyDescription() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyFileCollection() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyFilename() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyInitialOffset() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertySize() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyState() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyTransferredBytes() const Tp::Client::ChannelTypeFileTransferInterfaceinline
requestPropertyURI() const Tp::Client::ChannelTypeFileTransferInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
setPropertyURI(QString newValue)Tp::Client::ChannelTypeFileTransferInterfaceinline
staticInterfaceName()Tp::Client::ChannelTypeFileTransferInterfaceinlinestatic
TransferredBytesChanged(qulonglong count)Tp::Client::ChannelTypeFileTransferInterfacesignal
URIDefined(const QString &URI)Tp::Client::ChannelTypeFileTransferInterfacesignal
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00061.html0000644000175100017520000003242112530426260021123 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractCallContentInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for all the CallContent object interface implementations. More...

#include <TelepathyQt/BaseCall>

Inherits Tp::AbstractDBusServiceInterface.

Inherited by Tp::BaseCallContentDTMFInterface.

Public Member Functions

 AbstractCallContentInterface (const QString &interfaceName)
 
virtual ~AbstractCallContentInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
virtual QVariantMap immutableProperties () const =0
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
virtual void createAdaptor ()=0
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for all the CallContent object interface implementations.

Constructor & Destructor Documentation

Tp::AbstractCallContentInterface::AbstractCallContentInterface ( const QString &  interfaceName)
Tp::AbstractCallContentInterface::~AbstractCallContentInterface ( )
virtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01022.html0000644000175100017520000000670412530426260021126 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Feature Member List

This is the complete list of members for Tp::Feature, including all inherited members.

Feature()Tp::Feature
Feature(const QString &className, uint id, bool critical=false)Tp::Feature
Feature(const Feature &other)Tp::Feature
isCritical() const Tp::Feature
isValid() const Tp::Featureinline
operator=(const Feature &other)Tp::Feature
~Feature()Tp::Feature


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00877.html0000644000175100017520000000506212530426257021151 0ustar00kaffeinekaffeine00000000000000 ChannelDispatcher proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
ChannelDispatcher proxies

Classes

class  Tp::Client::ChannelDispatcherInterface
 
class  Tp::Client::ChannelDispatcherInterfaceMessages1Interface
 

Detailed Description

Proxy objects representing remote Telepathy ChannelDispatcher objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00376.html0000644000175100017520000030157712530426260021147 0ustar00kaffeinekaffeine00000000000000 Tp::IncomingStreamTubeChannel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube. More...

#include <TelepathyQt/IncomingStreamTubeChannel>

Inherits Tp::StreamTubeChannel.

Public Member Functions

virtual ~IncomingStreamTubeChannel ()
 
PendingStreamTubeConnectionacceptTubeAsTcpSocket ()
 
PendingStreamTubeConnectionacceptTubeAsTcpSocket (const QHostAddress &allowedAddress, quint16 allowedPort)
 
PendingStreamTubeConnectionacceptTubeAsUnixSocket (bool requireCredentials=false)
 
- Public Member Functions inherited from Tp::StreamTubeChannel
virtual ~StreamTubeChannel ()
 
QString service () const
 
bool supportsIPv4SocketsOnLocalhost () const
 
bool supportsIPv4SocketsWithSpecifiedAddress () const
 
bool supportsIPv6SocketsOnLocalhost () const
 
bool supportsIPv6SocketsWithSpecifiedAddress () const
 
bool supportsUnixSocketsOnLocalhost () const
 
bool supportsUnixSocketsWithCredentials () const
 
bool supportsAbstractUnixSocketsOnLocalhost () const
 
bool supportsAbstractUnixSocketsWithCredentials () const
 
QSet< uint > connections () const
 
SocketAddressType addressType () const
 
QPair< QHostAddress, quint16 > ipAddress () const
 
QString localAddress () const
 
- Public Member Functions inherited from Tp::TubeChannel
virtual ~TubeChannel ()
 
TubeChannelState state () const
 
QVariantMap parameters () const
 
- Public Member Functions inherited from Tp::Channel
virtual ~Channel ()
 
ConnectionPtr connection () const
 
QVariantMap immutableProperties () const
 
QString channelType () const
 
HandleType targetHandleType () const
 
uint targetHandle () const
 
QString targetId () const
 
ContactPtr targetContact () const
 
bool isRequested () const
 
ContactPtr initiatorContact () const
 
PendingOperationrequestClose ()
 
PendingOperationrequestLeave (const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
bool isConference () const
 
Contacts conferenceInitialInviteeContacts () const
 
QList< ChannelPtr > conferenceChannels () const
 
QList< ChannelPtr > conferenceInitialChannels () const
 
QHash< uint, ChannelPtr > conferenceOriginalChannels () const
 
bool supportsConferenceMerging () const
 
PendingOperationconferenceMergeChannel (const ChannelPtr &channel)
 
bool supportsConferenceSplitting () const
 
PendingOperationconferenceSplitChannel ()
 
ChannelGroupFlags groupFlags () const
 
bool groupCanAddContacts () const
 
bool groupCanAddContactsWithMessage () const
 
bool groupCanAcceptContactsWithMessage () const
 
PendingOperationgroupAddContacts (const QList< ContactPtr > &contacts, const QString &message=QString())
 
bool groupCanRescindContacts () const
 
bool groupCanRescindContactsWithMessage () const
 
bool groupCanRemoveContacts () const
 
bool groupCanRemoveContactsWithMessage () const
 
bool groupCanRejectContactsWithMessage () const
 
bool groupCanDepartWithMessage () const
 
PendingOperationgroupRemoveContacts (const QList< ContactPtr > &contacts, const QString &message=QString(), ChannelGroupChangeReason reason=ChannelGroupChangeReasonNone)
 
Contacts groupContacts (bool includeSelfContact=true) const
 
Contacts groupLocalPendingContacts (bool includeSelfContact=true) const
 
Contacts groupRemotePendingContacts (bool includeSelfContact=true) const
 
GroupMemberChangeDetails groupLocalPendingContactChangeInfo (const ContactPtr &contact) const
 
GroupMemberChangeDetails groupSelfContactRemoveInfo () const
 
bool groupAreHandleOwnersAvailable () const
 
HandleOwnerMap groupHandleOwners () const
 
bool groupIsSelfContactTracked () const
 
ContactPtr groupSelfContact () const
 
- Public Member Functions inherited from Tp::StatefulDBusProxy
 StatefulDBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~StatefulDBusProxy ()
 
- Public Member Functions inherited from Tp::DBusProxy
 DBusProxy (const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore)
 
virtual ~DBusProxy ()
 
QDBusConnection dbusConnection () const
 
QString busName () const
 
QString objectPath () const
 
bool isValid () const
 
QString invalidationReason () const
 
QString invalidationMessage () const
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 
- Public Member Functions inherited from Tp::ReadyObject
 ReadyObject (RefCounted *object, const Feature &featureCore)
 
 ReadyObject (DBusProxy *proxy, const Feature &featureCore)
 
virtual ~ReadyObject ()
 
virtual bool isReady (const Features &features=Features()) const
 
virtual PendingReadybecomeReady (const Features &requestedFeatures=Features())
 
virtual Features requestedFeatures () const
 
virtual Features actualFeatures () const
 
virtual Features missingFeatures () const
 
- Public Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
 OptionalInterfaceFactory (Channel *this_)
 
 ~OptionalInterfaceFactory ()
 
QStringList interfaces () const
 
bool hasInterface (const QString &name) const
 
Interface * optionalInterface (InterfaceSupportedChecking check=CheckInterfaceSupported) const
 
Interface * interface () const
 

Static Public Member Functions

static IncomingStreamTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StreamTubeChannel
static StreamTubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::TubeChannel
static TubeChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::Channel
static ChannelPtr create (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties)
 
- Static Public Member Functions inherited from Tp::StatefulDBusProxy
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique)
 
static QString uniqueNameFrom (const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message)
 

Static Public Attributes

static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::StreamTubeChannel
static const Feature FeatureCore
 
static const Feature FeatureConnectionMonitoring
 
- Static Public Attributes inherited from Tp::TubeChannel
static const Feature FeatureCore
 
- Static Public Attributes inherited from Tp::Channel
static const Feature FeatureCore
 
static const Feature FeatureConferenceInitialInviteeContacts
 

Protected Member Functions

 IncomingStreamTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=IncomingStreamTubeChannel::FeatureCore)
 
- Protected Member Functions inherited from Tp::StreamTubeChannel
 StreamTubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=StreamTubeChannel::FeatureCore)
 
void addConnection (uint connection)
 
void removeConnection (uint connection, const QString &error, const QString &message)
 
void setAddressType (SocketAddressType type)
 
SocketAccessControl accessControl () const
 
void setAccessControl (SocketAccessControl accessControl)
 
void setIpAddress (const QPair< QHostAddress, quint16 > &address)
 
void setLocalAddress (const QString &address)
 
bool isDroppingConnections () const
 
- Protected Member Functions inherited from Tp::TubeChannel
 TubeChannel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature=TubeChannel::FeatureCore)
 
void setParameters (const QVariantMap &parameters)
 
- Protected Member Functions inherited from Tp::Channel
 Channel (const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature)
 
Client::ChannelInterfacebaseInterface () const
 
bool groupSelfHandleIsLocalPending () const
 
- Protected Member Functions inherited from Tp::DBusProxy
void setBusName (const QString &busName)
 
void invalidate (const QString &reason, const QString &message)
 
void invalidate (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 
- Protected Member Functions inherited from Tp::ReadyObject
ReadinessHelperreadinessHelper () const
 
- Protected Member Functions inherited from Tp::OptionalInterfaceFactory< Channel >
void setInterfaces (const QStringList &interfaces)
 

Additional Inherited Members

- Public Types inherited from Tp::OptionalInterfaceFactory< Channel >
enum  InterfaceSupportedChecking
 
- Signals inherited from Tp::StreamTubeChannel
void newConnection (uint connectionId)
 
void connectionClosed (uint connectionId, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::TubeChannel
void stateChanged (Tp::TubeChannelState state)
 
- Signals inherited from Tp::Channel
void groupFlagsChanged (Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed)
 
void groupCanAddContactsChanged (bool canAddContacts)
 
void groupCanRemoveContactsChanged (bool canRemoveContacts)
 
void groupCanRescindContactsChanged (bool canRescindContacts)
 
void groupMembersChanged (const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details)
 
void groupHandleOwnersChanged (const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed)
 
void groupSelfContactChanged ()
 
void conferenceChannelMerged (const Tp::ChannelPtr &channel)
 
void conferenceChannelRemoved (const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details)
 
- Signals inherited from Tp::DBusProxy
void invalidated (Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage)
 
- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Slots inherited from Tp::Channel
PendingOperationgroupAddSelfHandle ()
 

Detailed Description

The IncomingStreamTubeChannel class represents an incoming Telepathy channel of type StreamTube.

In particular, this class is meant to be used as a comfortable way for accepting incoming stream tubes. Tubes can be accepted as TCP and/or Unix sockets with various access control methods depending on what the service supports using the various overloads of acceptTubeAsTcpSocket() and acceptTubeAsUnixSocket().

Once a tube is successfully accepted and open (the PendingStreamTubeConnection returned from the accepting methods has finished), the application can connect to the socket the address of which can be retrieved from PendingStreamTubeConnection::ipAddress() and/or PendingStreamTubeConnection::localAddress() depending on which accepting method was used. Connecting to this socket will open a tunneled connection to the service listening at the offering end of the tube.

For more details, please refer to Telepathy specification.

See Asynchronous Object Model, Shared Pointer Usage

Constructor & Destructor Documentation

Tp::IncomingStreamTubeChannel::~IncomingStreamTubeChannel ( )
virtual

Class destructor.

Tp::IncomingStreamTubeChannel::IncomingStreamTubeChannel ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties,
const Feature coreFeature = IncomingStreamTubeChannel::FeatureCore 
)
protected

Construct a new IncomingStreamTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
coreFeatureThe core feature of the channel type, if any. The corresponding introspectable should depend on IncomingStreamTubeChannel::FeatureCore.

Member Function Documentation

IncomingStreamTubeChannelPtr Tp::IncomingStreamTubeChannel::create ( const ConnectionPtr &  connection,
const QString &  objectPath,
const QVariantMap &  immutableProperties 
)
static

Create a new IncomingStreamTubeChannel object.

Parameters
connectionConnection owning this channel, and specifying the service.
objectPathThe channel object path.
immutablePropertiesThe channel immutable properties.
Returns
A IncomingStreamTubeChannelPtr object pointing to the newly created IncomingStreamTubeChannel object.
PendingStreamTubeConnection * Tp::IncomingStreamTubeChannel::acceptTubeAsTcpSocket ( )

Accept an incoming stream tube as a TCP socket.

This method accepts an incoming connection request for a stream tube. It can be called only if the tube is in the TubeStateLocalPending state.

The connection manager will open a TCP socket for the application to connect to. The address of the socket will be returned in PendingStreamTubeConnection::ipAddress() once the operation has finished successfully.

Using this overload, the connection manager will accept every incoming connection from localhost.

This accept method must be supported by all connection managers adhering to the Telepathy specification.

This method requires IncomingStreamTubeChannel::FeatureCore to be ready.

Returns
A PendingStreamTubeConnection which will emit PendingStreamTubeConnection::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
PendingStreamTubeConnection * Tp::IncomingStreamTubeChannel::acceptTubeAsTcpSocket ( const QHostAddress &  allowedAddress,
quint16  allowedPort 
)

Accept an incoming stream tube as a TCP socket.

This method accepts an incoming connection request for a stream tube. It can be called only if the tube is in the TubeStateLocalPending state.

The connection manager will open a TCP socket for the application to connect to. The address of the socket will be returned in PendingStreamTubeConnection::ipAddress() once the operation has finished successfully.

This overload lets you specify an allowed address/port combination for connecting to the CM socket. Connections with other source addresses won't be accepted. The accessors supportsIPv4SocketsWithSpecifiedAddress() and supportsIPv6SocketsWithSpecifiedAddress() can be used to verify that the connection manager supports this kind of access control; otherwise, this method will always fail unless QHostAddress::Any (or QHostAddress::AnyIPv4 in Qt5) or QHostAddress::AnyIPv6 is passed, in which case the behavior is identical to the always supported acceptTubeAsTcpSocket() overload.

Note that when using QHostAddress::Any (or QHostAddress::AnyIPv4 in Qt5) or QHostAddress::AnyIPv6, allowedPort is ignored.

This method requires IncomingStreamTubeChannel::FeatureCore to be ready.

Parameters
allowedAddressAn allowed address for connecting to the socket.
allowedPortAn allowed port for connecting to the socket.
Returns
A PendingStreamTubeConnection which will emit PendingStreamTubeConnection::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
PendingStreamTubeConnection * Tp::IncomingStreamTubeChannel::acceptTubeAsUnixSocket ( bool  requireCredentials = false)

Accept an incoming stream tube as a Unix socket.

This method accepts an incoming connection request for a stream tube. It can be called only if the tube is in the TubeStateLocalPending state.

An Unix socket (can be used with QLocalSocket or alike) will be opened by the connection manager as the local tube endpoint. This is only supported if supportsUnixSocketsOnLocalhost() is true.

You can also specify whether the CM should require an SCM_CREDS or SCM_CREDENTIALS message upon connection instead of accepting every incoming connection from localhost. This provides additional security, but requires sending the byte retrieved from PendingStreamTubeConnection::credentialByte() in-line in the socket byte stream (in a credentials message if available on the platform), which might not be compatible with all protocols or libraries. Also, only connection managers for which supportsUnixSocketsWithCredentials() is true support this type of access control.

This method requires IncomingStreamTubeChannel::FeatureCore to be ready.

Parameters
requireCredentialsWhether the CM should require an SCM_CREDS or SCM_CREDENTIALS message upon connection.
Returns
A PendingStreamTubeConnection which will emit PendingStreamTubeConnection::finished when the stream tube is ready to be used (hence in the TubeStateOpen state).
See Also
StreamTubeChannel::supportsUnixSocketsOnLocalhost(), StreamTubeChannel::supportsUnixSocketsWithCredentials(), StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost(), StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials()

Member Data Documentation

const Feature Tp::IncomingStreamTubeChannel::FeatureCore
static

Feature representing the core that needs to become ready to make the IncomingStreamTubeChannel object usable.

This is currently the same as StreamTubeChannel::FeatureCore, but may change to include more.

When calling isReady(), becomeReady(), this feature is implicitly added to the requested features.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01337.html0000644000175100017520000001312012530426260021125 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelInterfaceDTMFAdaptor Member List

This is the complete list of members for Tp::Service::ChannelInterfaceDTMFAdaptor, including all inherited members.

AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent)Tp::AbstractAdaptor
adaptee() const Tp::AbstractAdaptor
CurrentlySendingTones() const Tp::Service::ChannelInterfaceDTMFAdaptor
dbusConnection() const Tp::AbstractAdaptor
DeferredTones() const Tp::Service::ChannelInterfaceDTMFAdaptor
InitialTones() const Tp::Service::ChannelInterfaceDTMFAdaptor
MultipleTones(const QString &tones, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceDTMFAdaptorslot
SendingTones(const QString &tones)Tp::Service::ChannelInterfaceDTMFAdaptorsignal
StartTone(uint streamID, uchar event, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceDTMFAdaptorslot
StoppedTones(bool cancelled)Tp::Service::ChannelInterfaceDTMFAdaptorsignal
StopTone(uint streamID, const QDBusMessage &dbusMessage)Tp::Service::ChannelInterfaceDTMFAdaptorslot
TonesDeferred(const QString &tones)Tp::Service::ChannelInterfaceDTMFAdaptorsignal
~AbstractAdaptor()Tp::AbstractAdaptor


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00120.html0000644000175100017520000015142212530426260021122 0ustar00kaffeinekaffeine00000000000000 Tp::BaseConnectionContactListInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for implementations of Connection.Interface.ContactList. More...

#include <TelepathyQt/BaseConnection>

Inherits Tp::AbstractConnectionInterface.

Public Types

typedef Callback3
< Tp::ContactAttributesMap,
const QStringList &, bool,
DBusError * > 
GetContactListAttributesCallback
 
typedef Callback3< void, const
Tp::UIntList &, const QString
&, DBusError * > 
RequestSubscriptionCallback
 
typedef Callback2< void, const
Tp::UIntList &, DBusError * > 
AuthorizePublicationCallback
 
typedef Callback2< void, const
Tp::UIntList &, DBusError * > 
RemoveContactsCallback
 
typedef Callback2< void, const
Tp::UIntList &, DBusError * > 
UnsubscribeCallback
 
typedef Callback2< void, const
Tp::UIntList &, DBusError * > 
UnpublishCallback
 
typedef Callback1< void,
DBusError * > 
DownloadCallback
 

Public Member Functions

virtual ~BaseConnectionContactListInterface ()
 
QVariantMap immutableProperties () const
 
uint contactListState () const
 
void setContactListState (uint contactListState)
 
bool contactListPersists () const
 
void setContactListPersists (bool contactListPersists)
 
bool canChangeContactList () const
 
void setCanChangeContactList (bool canChangeContactList)
 
bool requestUsesMessage () const
 
void setRequestUsesMessage (bool requestUsesMessage)
 
bool downloadAtConnection () const
 
void setDownloadAtConnection (bool downloadAtConnection)
 
void setGetContactListAttributesCallback (const GetContactListAttributesCallback &cb)
 
Tp::ContactAttributesMap getContactListAttributes (const QStringList &interfaces, bool hold, DBusError *error)
 
void setRequestSubscriptionCallback (const RequestSubscriptionCallback &cb)
 
void requestSubscription (const Tp::UIntList &contacts, const QString &message, DBusError *error)
 
void setAuthorizePublicationCallback (const AuthorizePublicationCallback &cb)
 
void authorizePublication (const Tp::UIntList &contacts, DBusError *error)
 
void setRemoveContactsCallback (const RemoveContactsCallback &cb)
 
void removeContacts (const Tp::UIntList &contacts, DBusError *error)
 
void setUnsubscribeCallback (const UnsubscribeCallback &cb)
 
void unsubscribe (const Tp::UIntList &contacts, DBusError *error)
 
void setUnpublishCallback (const UnpublishCallback &cb)
 
void unpublish (const Tp::UIntList &contacts, DBusError *error)
 
void setDownloadCallback (const DownloadCallback &cb)
 
void download (DBusError *error)
 
void contactsChangedWithID (const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)
 
- Public Member Functions inherited from Tp::AbstractConnectionInterface
 AbstractConnectionInterface (const QString &interfaceName)
 
virtual ~AbstractConnectionInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Static Public Member Functions

static
BaseConnectionContactListInterfacePtr 
create ()
 
template<typename BaseConnectionContactListInterfaceSubclass >
static SharedPtr
< BaseConnectionContactListInterfaceSubclass > 
create ()
 

Protected Member Functions

 BaseConnectionContactListInterface ()
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 

Detailed Description

Base class for implementations of Connection.Interface.ContactList.

Member Typedef Documentation

Constructor & Destructor Documentation

Tp::BaseConnectionContactListInterface::~BaseConnectionContactListInterface ( )
virtual

Class destructor.

Tp::BaseConnectionContactListInterface::BaseConnectionContactListInterface ( )
protected

Class constructor.

Member Function Documentation

static BaseConnectionContactListInterfacePtr Tp::BaseConnectionContactListInterface::create ( )
inlinestatic
template<typename BaseConnectionContactListInterfaceSubclass >
static SharedPtr<BaseConnectionContactListInterfaceSubclass> Tp::BaseConnectionContactListInterface::create ( )
inlinestatic
QVariantMap Tp::BaseConnectionContactListInterface::immutableProperties ( ) const
virtual

Return the immutable properties of this interface.

Immutable properties cannot change after the interface has been registered on a service on the bus with registerInterface().

Returns
The immutable properties of this interface.

Implements Tp::AbstractDBusServiceInterface.

uint Tp::BaseConnectionContactListInterface::contactListState ( ) const
void Tp::BaseConnectionContactListInterface::setContactListState ( uint  contactListState)
bool Tp::BaseConnectionContactListInterface::contactListPersists ( ) const
void Tp::BaseConnectionContactListInterface::setContactListPersists ( bool  contactListPersists)
bool Tp::BaseConnectionContactListInterface::canChangeContactList ( ) const
void Tp::BaseConnectionContactListInterface::setCanChangeContactList ( bool  canChangeContactList)
bool Tp::BaseConnectionContactListInterface::requestUsesMessage ( ) const
void Tp::BaseConnectionContactListInterface::setRequestUsesMessage ( bool  requestUsesMessage)
bool Tp::BaseConnectionContactListInterface::downloadAtConnection ( ) const
void Tp::BaseConnectionContactListInterface::setDownloadAtConnection ( bool  downloadAtConnection)
void Tp::BaseConnectionContactListInterface::setGetContactListAttributesCallback ( const GetContactListAttributesCallback cb)
Tp::ContactAttributesMap Tp::BaseConnectionContactListInterface::getContactListAttributes ( const QStringList &  interfaces,
bool  hold,
DBusError error 
)
void Tp::BaseConnectionContactListInterface::setRequestSubscriptionCallback ( const RequestSubscriptionCallback cb)
void Tp::BaseConnectionContactListInterface::requestSubscription ( const Tp::UIntList contacts,
const QString &  message,
DBusError error 
)
void Tp::BaseConnectionContactListInterface::setAuthorizePublicationCallback ( const AuthorizePublicationCallback cb)
void Tp::BaseConnectionContactListInterface::authorizePublication ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionContactListInterface::setRemoveContactsCallback ( const RemoveContactsCallback cb)
void Tp::BaseConnectionContactListInterface::removeContacts ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionContactListInterface::setUnsubscribeCallback ( const UnsubscribeCallback cb)
void Tp::BaseConnectionContactListInterface::unsubscribe ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionContactListInterface::setUnpublishCallback ( const UnpublishCallback cb)
void Tp::BaseConnectionContactListInterface::unpublish ( const Tp::UIntList contacts,
DBusError error 
)
void Tp::BaseConnectionContactListInterface::setDownloadCallback ( const DownloadCallback cb)
void Tp::BaseConnectionContactListInterface::download ( DBusError error)
void Tp::BaseConnectionContactListInterface::contactsChangedWithID ( const Tp::ContactSubscriptionMap changes,
const Tp::HandleIdentifierMap identifiers,
const Tp::HandleIdentifierMap removals 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00708_source.html0000644000175100017520000031220212530426257022517 0ustar00kaffeinekaffeine00000000000000 functors.h Source File
   Home · All Classes · All Namespaces · Modules · Functions · Files
functors.h
1 
23 #ifndef _TelepathyQt_functors_h_HEADER_GUARD_
24 #define _TelepathyQt_functors_h_HEADER_GUARD_
25 
26 #ifndef IN_TP_QT_HEADER
27 #error IN_TP_QT_HEADER
28 #endif
29 
30 #include <TelepathyQt/Global>
31 
32 namespace Tp
33 {
34 
35 struct TP_QT_EXPORT BaseFunctor
36 {
37 };
38 
39 template <class R >
40 struct PtrFunctor0 : public BaseFunctor
41 {
42  typedef R (*FunctionType)();
43  typedef R ResultType;
44 
46 
47  ResultType operator()() const { return fn(); }
48 
50 };
51 
52 template <class R, class T >
53 struct MemberFunctor0 : public BaseFunctor
54 {
55  typedef R (T::*FunctionType)();
56  typedef R ResultType;
57 
58  MemberFunctor0(T *object, FunctionType fn) : object(object), fn(fn) {}
59 
60  ResultType operator()() const { return (object->*(fn))(); }
61 
62  T *object;
64 };
65 
66 template <class R , class Arg1>
67 struct PtrFunctor1 : public BaseFunctor
68 {
69  typedef R (*FunctionType)(Arg1);
70  typedef R ResultType;
71 
73 
74  ResultType operator()(Arg1 a1) const { return fn(a1); }
75 
77 };
78 
79 template <class R, class T , class Arg1>
80 struct MemberFunctor1 : public BaseFunctor
81 {
82  typedef R (T::*FunctionType)(Arg1);
83  typedef R ResultType;
84 
85  MemberFunctor1(T *object, FunctionType fn) : object(object), fn(fn) {}
86 
87  ResultType operator()(Arg1 a1) const { return (object->*(fn))(a1); }
88 
89  T *object;
91 };
92 
93 template <class R , class Arg1, class Arg2>
94 struct PtrFunctor2 : public BaseFunctor
95 {
96  typedef R (*FunctionType)(Arg1, Arg2);
97  typedef R ResultType;
98 
100 
101  ResultType operator()(Arg1 a1, Arg2 a2) const { return fn(a1, a2); }
102 
104 };
105 
106 template <class R, class T , class Arg1, class Arg2>
108 {
109  typedef R (T::*FunctionType)(Arg1, Arg2);
110  typedef R ResultType;
111 
112  MemberFunctor2(T *object, FunctionType fn) : object(object), fn(fn) {}
113 
114  ResultType operator()(Arg1 a1, Arg2 a2) const { return (object->*(fn))(a1, a2); }
115 
116  T *object;
118 };
119 
120 template <class R , class Arg1, class Arg2, class Arg3>
121 struct PtrFunctor3 : public BaseFunctor
122 {
123  typedef R (*FunctionType)(Arg1, Arg2, Arg3);
124  typedef R ResultType;
125 
127 
128  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const { return fn(a1, a2, a3); }
129 
131 };
132 
133 template <class R, class T , class Arg1, class Arg2, class Arg3>
135 {
136  typedef R (T::*FunctionType)(Arg1, Arg2, Arg3);
137  typedef R ResultType;
138 
139  MemberFunctor3(T *object, FunctionType fn) : object(object), fn(fn) {}
140 
141  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const { return (object->*(fn))(a1, a2, a3); }
142 
143  T *object;
145 };
146 
147 template <class R , class Arg1, class Arg2, class Arg3, class Arg4>
148 struct PtrFunctor4 : public BaseFunctor
149 {
150  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4);
151  typedef R ResultType;
152 
154 
155  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const { return fn(a1, a2, a3, a4); }
156 
158 };
159 
160 template <class R, class T , class Arg1, class Arg2, class Arg3, class Arg4>
162 {
163  typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4);
164  typedef R ResultType;
165 
166  MemberFunctor4(T *object, FunctionType fn) : object(object), fn(fn) {}
167 
168  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const { return (object->*(fn))(a1, a2, a3, a4); }
169 
170  T *object;
172 };
173 
174 template <class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
175 struct PtrFunctor5 : public BaseFunctor
176 {
177  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5);
178  typedef R ResultType;
179 
181 
182  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const { return fn(a1, a2, a3, a4, a5); }
183 
185 };
186 
187 template <class R, class T , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
189 {
190  typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5);
191  typedef R ResultType;
192 
193  MemberFunctor5(T *object, FunctionType fn) : object(object), fn(fn) {}
194 
195  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const { return (object->*(fn))(a1, a2, a3, a4, a5); }
196 
197  T *object;
199 };
200 
201 template <class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
202 struct PtrFunctor6 : public BaseFunctor
203 {
204  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
205  typedef R ResultType;
206 
208 
209  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const { return fn(a1, a2, a3, a4, a5, a6); }
210 
212 };
213 
214 template <class R, class T , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
216 {
217  typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
218  typedef R ResultType;
219 
220  MemberFunctor6(T *object, FunctionType fn) : object(object), fn(fn) {}
221 
222  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const { return (object->*(fn))(a1, a2, a3, a4, a5, a6); }
223 
224  T *object;
226 };
227 
228 template <class R , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
229 struct PtrFunctor7 : public BaseFunctor
230 {
231  typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
232  typedef R ResultType;
233 
235 
236  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const { return fn(a1, a2, a3, a4, a5, a6, a7); }
237 
239 };
240 
241 template <class R, class T , class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
243 {
244  typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
245  typedef R ResultType;
246 
247  MemberFunctor7(T *object, FunctionType fn) : object(object), fn(fn) {}
248 
249  ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const { return (object->*(fn))(a1, a2, a3, a4, a5, a6, a7); }
250 
251  T *object;
253 };
254 
255 // convenience methods
256 
257 // ptrFun
258 
259 template <class R>
260 inline PtrFunctor0<R>
261 ptrFun(R (*fn)() )
262 { return PtrFunctor0<R>(fn); }
263 
264 template <class R, class Arg1>
265 inline PtrFunctor1<R, Arg1>
266 ptrFun(R (*fn)(Arg1) )
267 { return PtrFunctor1<R, Arg1>(fn); }
268 
269 template <class R, class Arg1, class Arg2>
270 inline PtrFunctor2<R, Arg1, Arg2>
271 ptrFun(R (*fn)(Arg1, Arg2) )
272 { return PtrFunctor2<R, Arg1, Arg2>(fn); }
273 
274 template <class R, class Arg1, class Arg2, class Arg3>
275 inline PtrFunctor3<R, Arg1, Arg2, Arg3>
276 ptrFun(R (*fn)(Arg1, Arg2, Arg3) )
277 { return PtrFunctor3<R, Arg1, Arg2, Arg3>(fn); }
278 
279 template <class R, class Arg1, class Arg2, class Arg3, class Arg4>
280 inline PtrFunctor4<R, Arg1, Arg2, Arg3, Arg4>
281 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4) )
283 
284 template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
285 inline PtrFunctor5<R, Arg1, Arg2, Arg3, Arg4, Arg5>
286 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4, Arg5) )
288 
289 template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
290 inline PtrFunctor6<R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6>
291 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) )
293 
294 template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
295 inline PtrFunctor7<R, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7>
296 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) )
298 
299 // memFun
300 
301 template <class R, class T>
302 inline MemberFunctor0<R, T>
303 memFun( T *obj, R (T::*fn)() )
304 { return MemberFunctor0<R, T>(obj, fn); }
305 
306 template <class R, class T, class Arg1>
307 inline MemberFunctor1<R, T, Arg1>
308 memFun( T *obj, R (T::*fn)(Arg1) )
309 { return MemberFunctor1<R, T, Arg1>(obj, fn); }
310 
311 template <class R, class T, class Arg1, class Arg2>
312 inline MemberFunctor2<R, T, Arg1, Arg2>
313 memFun( T *obj, R (T::*fn)(Arg1, Arg2) )
314 { return MemberFunctor2<R, T, Arg1, Arg2>(obj, fn); }
315 
316 template <class R, class T, class Arg1, class Arg2, class Arg3>
317 inline MemberFunctor3<R, T, Arg1, Arg2, Arg3>
318 memFun( T *obj, R (T::*fn)(Arg1, Arg2, Arg3) )
319 { return MemberFunctor3<R, T, Arg1, Arg2, Arg3>(obj, fn); }
320 
321 template <class R, class T, class Arg1, class Arg2, class Arg3, class Arg4>
322 inline MemberFunctor4<R, T, Arg1, Arg2, Arg3, Arg4>
323 memFun( T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4) )
325 
326 template <class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
327 inline MemberFunctor5<R, T, Arg1, Arg2, Arg3, Arg4, Arg5>
328 memFun( T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5) )
330 
331 template <class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
332 inline MemberFunctor6<R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6>
333 memFun( T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) )
335 
336 template <class R, class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
337 inline MemberFunctor7<R, T, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7>
338 memFun( T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) )
340 
341 }
342 
343 #endif
FunctionType fn
Definition: functors.h:117
T * object
Definition: functors.h:89
ResultType operator()() const
Definition: functors.h:47
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const
Definition: functors.h:141
MemberFunctor7(T *object, FunctionType fn)
Definition: functors.h:247
MemberFunctor0< R, T > memFun(T *obj, R(T::*fn)())
Definition: functors.h:303
R(T::* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
Definition: functors.h:244
FunctionType fn
Definition: functors.h:130
T * object
Definition: functors.h:62
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
Definition: functors.h:249
MemberFunctor4(T *object, FunctionType fn)
Definition: functors.h:166
Definition: functors.h:242
Definition: functors.h:188
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4)
Definition: functors.h:150
R(T::* FunctionType)()
Definition: functors.h:55
ResultType operator()(Arg1 a1, Arg2 a2) const
Definition: functors.h:114
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
Definition: functors.h:222
T * object
Definition: functors.h:224
R(T::* FunctionType)(Arg1, Arg2, Arg3)
Definition: functors.h:136
FunctionType fn
Definition: functors.h:225
ResultType operator()(Arg1 a1, Arg2 a2) const
Definition: functors.h:101
R ResultType
Definition: functors.h:137
PtrFunctor3(FunctionType fn)
Definition: functors.h:126
FunctionType fn
Definition: functors.h:252
PtrFunctor0< R > ptrFun(R(*fn)())
Definition: functors.h:261
T * object
Definition: functors.h:197
Definition: functors.h:94
Definition: functors.h:53
R(T::* FunctionType)(Arg1, Arg2)
Definition: functors.h:109
PtrFunctor2(FunctionType fn)
Definition: functors.h:99
R(T::* FunctionType)(Arg1, Arg2, Arg3, Arg4)
Definition: functors.h:163
Definition: functors.h:229
R ResultType
Definition: functors.h:232
Definition: functors.h:175
R(* FunctionType)(Arg1, Arg2)
Definition: functors.h:96
R(T::* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Definition: functors.h:217
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5)
Definition: functors.h:177
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const
Definition: functors.h:128
R(* FunctionType)()
Definition: functors.h:42
Definition: functors.h:134
R(T::* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5)
Definition: functors.h:190
R ResultType
Definition: functors.h:191
FunctionType fn
Definition: functors.h:157
R ResultType
Definition: functors.h:151
PtrFunctor7(FunctionType fn)
Definition: functors.h:234
R(* FunctionType)(Arg1, Arg2, Arg3)
Definition: functors.h:123
R ResultType
Definition: functors.h:164
FunctionType fn
Definition: functors.h:49
R ResultType
Definition: functors.h:218
PtrFunctor0(FunctionType fn)
Definition: functors.h:45
R ResultType
Definition: functors.h:70
T * object
Definition: functors.h:143
FunctionType fn
Definition: functors.h:103
FunctionType fn
Definition: functors.h:171
PtrFunctor6(FunctionType fn)
Definition: functors.h:207
T * object
Definition: functors.h:251
ResultType operator()(Arg1 a1) const
Definition: functors.h:87
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
Definition: functors.h:231
Definition: functors.h:161
FunctionType fn
Definition: functors.h:90
Definition: functors.h:202
PtrFunctor1(FunctionType fn)
Definition: functors.h:72
ResultType operator()(Arg1 a1) const
Definition: functors.h:74
MemberFunctor0(T *object, FunctionType fn)
Definition: functors.h:58
ResultType operator()() const
Definition: functors.h:60
Definition: functors.h:148
FunctionType fn
Definition: functors.h:198
R ResultType
Definition: functors.h:43
FunctionType fn
Definition: functors.h:76
Definition: functors.h:67
R(* FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Definition: functors.h:204
MemberFunctor6(T *object, FunctionType fn)
Definition: functors.h:220
Definition: functors.h:35
PtrFunctor4(FunctionType fn)
Definition: functors.h:153
FunctionType fn
Definition: functors.h:184
FunctionType fn
Definition: functors.h:211
R ResultType
Definition: functors.h:205
MemberFunctor2(T *object, FunctionType fn)
Definition: functors.h:112
R ResultType
Definition: functors.h:124
Definition: functors.h:107
R(T::* FunctionType)(Arg1)
Definition: functors.h:82
R ResultType
Definition: functors.h:178
MemberFunctor5(T *object, FunctionType fn)
Definition: functors.h:193
FunctionType fn
Definition: functors.h:144
T * object
Definition: functors.h:170
FunctionType fn
Definition: functors.h:238
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
Definition: functors.h:155
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const
Definition: functors.h:209
PtrFunctor5(FunctionType fn)
Definition: functors.h:180
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const
Definition: functors.h:168
R(* FunctionType)(Arg1)
Definition: functors.h:69
Definition: functors.h:40
MemberFunctor1(T *object, FunctionType fn)
Definition: functors.h:85
R ResultType
Definition: functors.h:56
MemberFunctor3(T *object, FunctionType fn)
Definition: functors.h:139
Definition: functors.h:121
T * object
Definition: functors.h:116
R ResultType
Definition: functors.h:97
Definition: functors.h:80
R ResultType
Definition: functors.h:83
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const
Definition: functors.h:236
Definition: functors.h:215
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
Definition: functors.h:182
R ResultType
Definition: functors.h:110
ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const
Definition: functors.h:195
R ResultType
Definition: functors.h:245
FunctionType fn
Definition: functors.h:63


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01091.html0000644000175100017520000001524212530426260021131 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ProtocolParameter Member List

This is the complete list of members for Tp::ProtocolParameter, including all inherited members.

bareParameter() const Tp::ProtocolParameter
dbusSignature() const Tp::ProtocolParameter
defaultValue() const Tp::ProtocolParameter
isRequired() const Tp::ProtocolParameter
isRequiredForRegistration() const Tp::ProtocolParameter
isSecret() const Tp::ProtocolParameter
isValid() const Tp::ProtocolParameterinline
name() const Tp::ProtocolParameter
operator<(const ProtocolParameter &other) const Tp::ProtocolParameter
operator=(const ProtocolParameter &other)Tp::ProtocolParameter
operator==(const ProtocolParameter &other) const Tp::ProtocolParameter
operator==(const QString &name) const Tp::ProtocolParameter
ProtocolParameter()Tp::ProtocolParameter
ProtocolParameter(const ParamSpec &spec)Tp::ProtocolParameter
ProtocolParameter(const QString &name, const QDBusSignature &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue=QVariant())Tp::ProtocolParameter
ProtocolParameter(const QString &name, const QString &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue=QVariant())Tp::ProtocolParameter
ProtocolParameter(const ProtocolParameter &other)Tp::ProtocolParameter
type() const Tp::ProtocolParameter
~ProtocolParameter()Tp::ProtocolParameter


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00936.html0000644000175100017520000002173612530426260021145 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::BaseChannelChatStateInterface Member List

This is the complete list of members for Tp::BaseChannelChatStateInterface, including all inherited members.

AbstractChannelInterface(const QString &interfaceName)Tp::AbstractChannelInterface
AbstractDBusServiceInterface(const QString &interfaceName)Tp::AbstractDBusServiceInterface
BaseChannelChatStateInterface()Tp::BaseChannelChatStateInterfaceprotected
chatStateChanged(uint contact, uint state)Tp::BaseChannelChatStateInterface
chatStates() const Tp::BaseChannelChatStateInterface
create()Tp::BaseChannelChatStateInterfaceinlinestatic
create()Tp::BaseChannelChatStateInterfaceinlinestatic
dbusObject() const Tp::AbstractDBusServiceInterface
immutableProperties() const Tp::BaseChannelChatStateInterfacevirtual
interfaceName() const Tp::AbstractDBusServiceInterface
isRegistered() const Tp::AbstractDBusServiceInterface
notify(const char *propertyName)Tp::Objectprotected
notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue)Tp::AbstractDBusServiceInterface
Object()Tp::Objectprotected
propertyChanged(const QString &propertyName)Tp::Objectsignal
RefCounted()Tp::RefCountedinline
registerInterface(DBusObject *dbusObject)Tp::AbstractDBusServiceInterfaceprotectedvirtual
setChatState(uint state, DBusError *error)Tp::BaseChannelChatStateInterface
SetChatStateCallback typedefTp::BaseChannelChatStateInterface
setChatStates(const Tp::ChatStateMap &chatStates)Tp::BaseChannelChatStateInterface
setSetChatStateCallback(const SetChatStateCallback &cb)Tp::BaseChannelChatStateInterface
~AbstractChannelInterface()Tp::AbstractChannelInterfacevirtual
~AbstractDBusServiceInterface()Tp::AbstractDBusServiceInterfacevirtual
~BaseChannelChatStateInterface()Tp::BaseChannelChatStateInterfacevirtual
~Object()Tp::Objectvirtual
~RefCounted()Tp::RefCountedinlinevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00435.html0000644000175100017520000003140012530426260021124 0ustar00kaffeinekaffeine00000000000000 Tp::PendingConnection Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::PendingConnection Class Reference

The PendingConnection class represents the parameters of and the reply to an asynchronous connection request. More...

#include <TelepathyQt/PendingConnection>

Inherits Tp::PendingOperation.

Public Member Functions

 ~PendingConnection ()
 
ConnectionManagerPtr manager () const
 
ConnectionPtr connection () const
 
- Public Member Functions inherited from Tp::PendingOperation
virtual ~PendingOperation ()
 
bool isFinished () const
 
bool isValid () const
 
bool isError () const
 
QString errorName () const
 
QString errorMessage () const
 

Additional Inherited Members

- Signals inherited from Tp::PendingOperation
void finished (Tp::PendingOperation *operation)
 
- Protected Slots inherited from Tp::PendingOperation
void setFinished ()
 
void setFinishedWithError (const QString &name, const QString &message)
 
void setFinishedWithError (const QDBusError &error)
 
- Protected Member Functions inherited from Tp::PendingOperation
 PendingOperation (const SharedPtr< RefCounted > &object)
 
SharedPtr< RefCountedobject () const
 

Detailed Description

The PendingConnection class represents the parameters of and the reply to an asynchronous connection request.

Instances of this class cannot be constructed directly; the only way to get one is via ConnectionManager.

See Asynchronous Object Model

Constructor & Destructor Documentation

Tp::PendingConnection::~PendingConnection ( )

Class destructor.

Member Function Documentation

ConnectionManagerPtr Tp::PendingConnection::manager ( ) const

Return the connection manager through which the request was made.

Returns
A pointer to the ConnectionManager object.
ConnectionPtr Tp::PendingConnection::connection ( ) const

Return the connection resulting from the connection request.

Returns
A pointer to the Connection object.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/ftv2pnode.png0000644000175100017520000000034512530426257022051 0ustar00kaffeinekaffeine00000000000000‰PNG  IHDRɪ|¬IDATxí=QF‘Ø¥D«ÔkÄ:‰F©PK؃=V@§Õ³ Õ8SHxñÌ0bnrróŠ{ò½¿¾’$ ÀÏTŠP  ö¼X¬OÛd6êìòð"°²S´±O¥B€(¡àQé)š+YĈ ÒªËRÉÐ>VtÉsˆm9(ê„䜥k‚-@ȧ-Ü$ó b Ò[he ¿Kp-ôl|CùÿApRG'rÍ­aIEND®B`‚telepathy-qt-0.9.6.1/doc/html/a01150.html0000644000175100017520000000533612530426260021130 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ContactClientTypes Member List

This is the complete list of members for Tp::ContactClientTypes, including all inherited members.

ContactClientTypes()Tp::ContactClientTypesinline
ContactClientTypes(const QMap< uint, QStringList > &a)Tp::ContactClientTypesinline
operator=(const QMap< uint, QStringList > &a)Tp::ContactClientTypesinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00249.html0000644000175100017520000005761112530426260021143 0ustar00kaffeinekaffeine00000000000000 Tp::Service::ChannelTypeStreamTubeAdaptor Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Service::ChannelTypeStreamTubeAdaptor Class Reference

#include <TelepathyQt/_gen/svc-channel.h>

Inherits Tp::AbstractAdaptor.

Public Slots

void Offer (uint addresstype, const QDBusVariant &address, uint accesscontrol, const QVariantMap &parameters, const QDBusMessage &dbusMessage)
 
QDBusVariant Accept (uint addresstype, uint accesscontrol, const QDBusVariant &accesscontrolparam, const QDBusMessage &dbusMessage)
 

Signals

void NewRemoteConnection (uint handle, const QDBusVariant &connectionParam, uint connectionID)
 
void NewLocalConnection (uint connectionID)
 
void ConnectionClosed (uint connectionID, const QString &error, const QString &message)
 

Public Member Functions

QString Service () const
 
Tp::SupportedSocketMap SupportedSocketTypes () const
 
- Public Member Functions inherited from Tp::AbstractAdaptor
 AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
 
 ~AbstractAdaptor ()
 
QDBusConnection dbusConnection () const
 
QObject * adaptee () const
 

Detailed Description

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

Member Function Documentation

QString Tp::Service::ChannelTypeStreamTubeAdaptor::Service ( ) const

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

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

A string representing the service name that will be used over the tube. It should be a well-known TCP service name as defined by http://www.iana.org/assignments/port-numbers or http://www.dns-sd.org/ServiceTypes.html, for instance "rsync" or "daap".

When the tube is offered, the service name is transmitted to the other end.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST be included in the request.

Returns
The value of exported property Service.
Tp::SupportedSocketMap Tp::Service::ChannelTypeStreamTubeAdaptor::SupportedSocketTypes ( ) const

Return the value of the exported D-Bus object property SupportedSocketTypes of type Tp::SupportedSocketMap.

Adaptees should export this property as a Qt property named 'supportedSocketTypes' with type Tp::SupportedSocketMap.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for stream tubes with that address type. For simplicity, if a CM supports offering a particular type of tube, it is assumed to support accepting it.

A typical value for a host without IPv6 support:

  {
    Socket_Address_Type_IPv4:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
       Socket_Access_Control_Netmask],
    Socket_Address_Type_Unix:
      [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
  }

Connection Managers MUST support at least IPv4 with the localhost access control.

When requesting a channel with ConnectionInterfaceRequestsInterface::CreateChannel() , this property MUST NOT be included in the request.

Returns
The value of exported property SupportedSocketTypes.
void Tp::Service::ChannelTypeStreamTubeAdaptor::Offer ( uint  addresstype,
const QDBusVariant &  address,
uint  accesscontrol,
const QVariantMap &  parameters,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void offer(uint addresstype, const QDBusVariant& address, uint accesscontrol, const QVariantMap& parameters, const Tp::Service::ChannelTypeStreamTubeAdaptor::OfferContextPtr &context);

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

Offer a stream tube exporting the local socket specified.

Parameters
addresstype
The type of the listening address of the local service, as a member 
of Socket_Address_Type.
address
The listening address of the local service, as indicated by the 
address_type.
accesscontrol
The access control the local service applies to the local socket, 
specified so the connection manager can behave appropriately when 
it connects.
parameters
The dictionary of arbitrary Parameters to send with the tube offer.
QDBusVariant Tp::Service::ChannelTypeStreamTubeAdaptor::Accept ( uint  addresstype,
uint  accesscontrol,
const QDBusVariant &  accesscontrolparam,
const QDBusMessage &  dbusMessage 
)
slot

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

Adaptees should export this method as a Qt slot with the following signature: void accept(uint addresstype, uint accesscontrol, const QDBusVariant& accesscontrolparam, const Tp::Service::ChannelTypeStreamTubeAdaptor::AcceptContextPtr &context);

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

Accept a stream tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeChannelStateChanged signal is emitted.

Parameters
addresstype
The type of address the connection manager should listen on.
accesscontrol

The type of access control the connection manager should apply to the socket.

Note that if you plan to establish more than one connection through the tube, the Socket_Access_Control_Port access control can't be used as you can't connect more than once from the same port.

accesscontrolparam
A parameter for the access control type, to be interpreted as 
specified in the documentation for the Socket_Access_Control enum.
Returns
The address on which the connection manager will listen for 
connections to this tube. The client should not attempt to connect 
to the address until the tube is open.
void Tp::Service::ChannelTypeStreamTubeAdaptor::NewRemoteConnection ( uint  handle,
const QDBusVariant &  connectionParam,
uint  connectionID 
)
signal

Represents the exported D-Bus signal NewRemoteConnection on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newRemoteConnection(uint handle, const QDBusVariant& connectionParam, uint connectionID);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
handle
The handle of the participant who opened the new connection
connectionParam

A parameter which can be used by the listening process to identify the connection. Note that this parameter has a meaningful value only in the Socket_Access_Control_Port and Socket_Access_Control_Credentials cases. If a different Socket_Access_Control has been chosen when offering the tube, this parameter should be ignored.

In the Socket_Access_Control_Port case, the variant contains a struct Socket_Address_IPv4 (or Socket_Address_IPv6) containing the address from which the CM is connected to the client application.

In the Socket_Access_Control_Credentials case, the variant contains the byte (D-Bus signature 'y') that has been sent with the credentials.

connectionID
The unique ID associated with this connection. This ID will be used 
to identifiy the connection when reporting errors with 
ConnectionClosed.
void Tp::Service::ChannelTypeStreamTubeAdaptor::NewLocalConnection ( uint  connectionID)
signal

Represents the exported D-Bus signal NewLocalConnection on this object.

Adaptees should export this signal as a Qt signal with the following signature: void newLocalConnection(uint connectionID);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
connectionID
The unique ID associated with this connection. This ID will be used 
to identifiy the connection when reporting errors with 
ConnectionClosed.
void Tp::Service::ChannelTypeStreamTubeAdaptor::ConnectionClosed ( uint  connectionID,
const QString &  error,
const QString &  message 
)
signal

Represents the exported D-Bus signal ConnectionClosed on this object.

Adaptees should export this signal as a Qt signal with the following signature: void connectionClosed(uint connectionID, const QString& error, const QString& message);

The adaptee signal will be automatically relayed as a D-Bus signal once emitted.

Parameters
connectionID
The ID of the connection.
error

The name of a D-Bus error describing the error that occurred.

The following errors can be used:

  • org.freedesktop.Telepathy.Error.Cancelled: user closed the socket or the tube.
  • org.freedesktop.Telepathy.Error.ConnectionLost: the bytestream relaying connection's data has been broken.
  • org.freedesktop.Telepathy.Error.ConnectionRefused: the tube offer refused the connection.
message
A debug message.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00308.html0000644000175100017520000012703512530426260021135 0ustar00kaffeinekaffeine00000000000000 Tp::ConnectionLowlevel Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::ConnectionLowlevel Class Reference

The ConnectionLowlevel class extends Connection with support to low-level features. More...

#include <TelepathyQt/ConnectionLowlevel>

Inherits QObject, and Tp::RefCounted.

Public Member Functions

 ~ConnectionLowlevel ()
 
bool isValid () const
 
ConnectionPtr connection () const
 
PendingReadyrequestConnect (const Features &requestedFeatures=Features())
 
PendingOperationrequestDisconnect ()
 
SimpleStatusSpecMap allowedPresenceStatuses () const
 
uint maxPresenceStatusMessageLength () const
 
PendingOperationsetSelfPresence (const QString &status, const QString &statusMessage)
 
PendingChannelcreateChannel (const QVariantMap &request)
 
PendingChannelcreateChannel (const QVariantMap &request, int timeout)
 
PendingChannelensureChannel (const QVariantMap &request)
 
PendingChannelensureChannel (const QVariantMap &request, int timeout)
 
PendingHandlesrequestHandles (HandleType handleType, const QStringList &names)
 
PendingHandlesreferenceHandles (HandleType handleType, const UIntList &handles)
 
PendingContactAttributescontactAttributes (const UIntList &handles, const QStringList &interfaces, bool reference=true)
 
QStringList contactAttributeInterfaces () const
 
void injectContactIds (const HandleIdentifierMap &contactIds)
 
void injectContactId (uint handle, const QString &contactId)
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Detailed Description

The ConnectionLowlevel class extends Connection with support to low-level features.

Constructor & Destructor Documentation

Tp::ConnectionLowlevel::~ConnectionLowlevel ( )

Member Function Documentation

bool Tp::ConnectionLowlevel::isValid ( ) const
ConnectionPtr Tp::ConnectionLowlevel::connection ( ) const
PendingReady * Tp::ConnectionLowlevel::requestConnect ( const Features requestedFeatures = Features())

Start an asynchronous request that the connection be connected.

When using a full-fledged Telepathy setup with an Account Manager service, the Account methods Account::setRequestedPresence() and Account::reconnect() must be used instead.

The returned PendingOperation will finish successfully when the connection has reached ConnectionStatusConnected and the requested features are all ready, or finish with an error if a fatal error occurs during that process.

Parameters
requestedFeaturesThe features which should be enabled
Returns
A PendingReady which will emit PendingReady::finished when the Connection has reached ConnectionStatusConnected, and initial setup for basic functionality, plus the given features, has succeeded or failed.
PendingOperation * Tp::ConnectionLowlevel::requestDisconnect ( )

Start an asynchronous request that the connection be disconnected. The returned PendingOperation object will signal the success or failure of this request; under normal circumstances, it can be expected to succeed.

When using a full-fledged Telepathy setup with an Account Manager service, Account::setRequestedPresence() with Presence::offline() as an argument should generally be used instead.

Returns
A PendingOperation which will emit PendingOperation::finished when the request has been made.
SimpleStatusSpecMap Tp::ConnectionLowlevel::allowedPresenceStatuses ( ) const

Return a dictionary of presence statuses valid for use in this connection.

The value may have changed arbitrarily during the time the Connection spends in status ConnectionStatusConnecting, again staying fixed for the entire time in ConnectionStatusConnected.

This method requires Connection::FeatureSimplePresence to be ready.

Returns
The allowed statuses as a map from string identifiers to SimpleStatusSpec objects.
uint Tp::ConnectionLowlevel::maxPresenceStatusMessageLength ( ) const

Return the maximum length for a presence status message.

The value may have changed arbitrarily during the time the Connection spends in status ConnectionStatusConnecting, again staying fixed for the entire time in ConnectionStatusConnected.

This method requires Connection::FeatureSimplePresence to be ready.

Returns
The maximum length, or 0 if there is no limit.
PendingOperation * Tp::ConnectionLowlevel::setSelfPresence ( const QString &  status,
const QString &  statusMessage 
)

Set the self presence status.

This should generally only be called by an Account Manager. In typical usage, Account::setRequestedPresence() should be used instead.

status must be one of the allowed statuses returned by allowedPresenceStatuses().

Note that clients SHOULD set the status message for the local user to the empty string, unless the user has actually provided a specific message (i.e. one that conveys more information than the ConnectionStatus).

Parameters
statusThe desired status.
statusMessageThe desired status message.
Returns
A PendingOperation which will emit PendingOperation::finished when the call has finished.
See Also
allowedPresenceStatuses()
PendingChannel * Tp::ConnectionLowlevel::createChannel ( const QVariantMap &  request)

Same as createChannel(request, -1)

PendingChannel * Tp::ConnectionLowlevel::createChannel ( const QVariantMap &  request,
int  timeout 
)

Asynchronously creates a channel satisfying the given request.

In typical usage, only the Channel Dispatcher should call this. Ordinary applications should use the Account::createChannel() family of methods (which invoke the Channel Dispatcher's services).

The request MUST contain the following keys: org.freedesktop.Telepathy.Channel.ChannelType org.freedesktop.Telepathy.Channel.TargetHandleType

Upon completion, the reply to the request can be retrieved through the returned PendingChannel object. The object also provides access to the parameters with which the call was made and a signal to connect to get notification of the request finishing processing. See the documentation for that class for more info.

Parameters
requestA dictionary containing the desirable properties.
timeoutThe D-Bus timeout in milliseconds used for the method call. If timeout is -1, a default implementation-defined value that is suitable for inter-process communications (generally, 25 seconds) will be used.
Returns
A PendingChannel which will emit PendingChannel::finished when the channel has been created, or an error occurred.
See Also
PendingChannel, ensureChannel(), Account::createChannel(), Account::createAndHandleChannel(), Account::ensureChannel(), Account::ensureAndHandleChannel()
PendingChannel * Tp::ConnectionLowlevel::ensureChannel ( const QVariantMap &  request)

Same as ensureChannel(request, -1)

PendingChannel * Tp::ConnectionLowlevel::ensureChannel ( const QVariantMap &  request,
int  timeout 
)

Asynchronously ensures a channel exists satisfying the given request.

In typical usage, only the Channel Dispatcher should call this. Ordinary applications should use the Account::ensureChannel() family of methods (which invoke the Channel Dispatcher's services).

The request MUST contain the following keys: org.freedesktop.Telepathy.Channel.ChannelType org.freedesktop.Telepathy.Channel.TargetHandleType

Upon completion, the reply to the request can be retrieved through the returned PendingChannel object. The object also provides access to the parameters with which the call was made and a signal to connect to get notification of the request finishing processing. See the documentation for that class for more info.

Parameters
requestA dictionary containing the desirable properties.
timeoutThe D-Bus timeout in milliseconds used for the method call. If timeout is -1, a default implementation-defined value that is suitable for inter-process communications (generally, 25 seconds) will be used.
Returns
A PendingChannel which will emit PendingChannel::finished when the channel is ensured to exist, or an error occurred.
See Also
PendingChannel, createChannel(), Account::createChannel(), Account::createAndHandleChannel(), Account::ensureChannel(), Account::ensureAndHandleChannel()
PendingHandles * Tp::ConnectionLowlevel::requestHandles ( HandleType  handleType,
const QStringList &  names 
)

Request handles of the given type for the given entities (contacts, rooms, lists, etc.).

Typically one doesn't need to request and use handles directly; instead, string identifiers and/or Contact objects are used in most APIs. File a bug for APIs in which there is no alternative to using handles. In particular however using low-level DBus interfaces for which there is no corresponding high-level (or one is implementing that abstraction) functionality does and will always require using bare handles.

Upon completion, the reply to the request can be retrieved through the returned PendingHandles object. The object also provides access to the parameters with which the call was made and a signal to connect to to get notification of the request finishing processing. See the documentation for that class for more info.

The returned PendingHandles object should be freed using its QObject::deleteLater() method after it is no longer used. However, all PendingHandles objects resulting from requests to a particular Connection will be freed when the Connection itself is freed. Conversely, this means that the PendingHandles object should not be used after the Connection is destroyed.

Parameters
handleTypeType for the handles to request, as specified in HandleType.
namesNames of the entities to request handles for.
Returns
A PendingHandles which will emit PendingHandles::finished when the handles have been requested, or an error occurred.
See Also
PendingHandles
PendingHandles * Tp::ConnectionLowlevel::referenceHandles ( HandleType  handleType,
const UIntList handles 
)

Request a reference to the given handles. Handles not explicitly requested (via requestHandles()) but eg. observed in a signal need to be referenced to guarantee them staying valid.

Typically one doesn't need to reference and use handles directly; instead, string identifiers and/or Contact objects are used in most APIs. File a bug for APIs in which there is no alternative to using handles. In particular however using low-level DBus interfaces for which there is no corresponding high-level (or one is implementing that abstraction) functionality does and will always require using bare handles.

Upon completion, the reply to the operation can be retrieved through the returned PendingHandles object. The object also provides access to the parameters with which the call was made and a signal to connect to to get notification of the request finishing processing. See the documentation for that class for more info.

The returned PendingHandles object should be freed using its QObject::deleteLater() method after it is no longer used. However, all PendingHandles objects resulting from requests to a particular Connection will be freed when the Connection itself is freed. Conversely, this means that the PendingHandles object should not be used after the Connection is destroyed.

See Also
PendingHandles
Parameters
handleTypeType of the handles given, as specified in HandleType.
handlesHandles to request a reference to.
Returns
A PendingHandles which will emit PendingHandles::finished when the handles have been referenced, or an error occurred.
PendingContactAttributes * Tp::ConnectionLowlevel::contactAttributes ( const UIntList handles,
const QStringList &  interfaces,
bool  reference = true 
)

Requests attributes for contacts. Optionally, the handles of the contacts will be referenced automatically. Essentially, this method wraps ConnectionInterfaceContactsInterface::GetContactAttributes(), integrating it with the rest of the handle-referencing machinery.

This is very low-level API the Contact/ContactManager API provides a higher level of abstraction for the same functionality.

Upon completion, the reply to the request can be retrieved through the returned PendingContactAttributes object. The object also provides access to the parameters with which the call was made and a signal to connect to to get notification of the request finishing processing. See the documentation for that class for more info.

If the remote object doesn't support the Contacts interface (as signified by the list returned by interfaces() not containing TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS), the returned PendingContactAttributes instance will fail instantly with the error TP_QT_ERROR_NOT_IMPLEMENTED.

Similarly, if the connection isn't both connected and ready (status() == ConnectionStatusConnected && isReady(Connection::FeatureCore)), the returned PendingContactAttributes instance will fail instantly with the error TP_QT_ERROR_NOT_AVAILABLE.

This method requires Connection::FeatureCore to be ready.

See Also
PendingContactAttributes
Parameters
handlesA list of handles of type HandleTypeContact
interfacesD-Bus interfaces for which the client requires information
referenceWhether the handles should additionally be referenced.
Returns
A PendingContactAttributes which will emit PendingContactAttributes::fininshed when the contact attributes have been retrieved, or an error occurred.
QStringList Tp::ConnectionLowlevel::contactAttributeInterfaces ( ) const
void Tp::ConnectionLowlevel::injectContactIds ( const HandleIdentifierMap contactIds)
void Tp::ConnectionLowlevel::injectContactId ( uint  handle,
const QString &  contactId 
)


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01279.html0000644000175100017520000002357612530426260021152 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Client::ChannelTypeRoomListInterface Member List

This is the complete list of members for Tp::Client::ChannelTypeRoomListInterface, including all inherited members.

AbstractInterface(DBusProxy *proxy, const QLatin1String &interface)Tp::AbstractInterfaceprotected
AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent)Tp::AbstractInterfaceprotected
ChannelTypeRoomListInterface(const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeRoomListInterface
ChannelTypeRoomListInterface(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)Tp::Client::ChannelTypeRoomListInterface
ChannelTypeRoomListInterface(Tp::DBusProxy *proxy)Tp::Client::ChannelTypeRoomListInterface
ChannelTypeRoomListInterface(const Tp::Client::ChannelInterface &mainInterface)Tp::Client::ChannelTypeRoomListInterfaceexplicit
ChannelTypeRoomListInterface(const Tp::Client::ChannelInterface &mainInterface, QObject *parent)Tp::Client::ChannelTypeRoomListInterface
GetListingRooms(int timeout=-1)Tp::Client::ChannelTypeRoomListInterfaceinlineslot
GotRooms(const Tp::RoomInfoList &rooms)Tp::Client::ChannelTypeRoomListInterfacesignal
internalRequestAllProperties() const Tp::AbstractInterfaceprotected
internalRequestProperty(const QString &name) const Tp::AbstractInterfaceprotected
internalSetProperty(const QString &name, const QVariant &newValue)Tp::AbstractInterfaceprotected
invalidate(Tp::DBusProxy *, const QString &, const QString &)Tp::Client::ChannelTypeRoomListInterfaceprotectedvirtual
invalidationMessage() const Tp::AbstractInterface
invalidationReason() const Tp::AbstractInterface
isMonitoringProperties() const Tp::AbstractInterface
isValid() const Tp::AbstractInterface
ListingRooms(bool listing)Tp::Client::ChannelTypeRoomListInterfacesignal
ListRooms(int timeout=-1)Tp::Client::ChannelTypeRoomListInterfaceinlineslot
propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties)Tp::AbstractInterfacesignal
requestAllProperties() const Tp::Client::ChannelTypeRoomListInterfaceinline
requestPropertyServer() const Tp::Client::ChannelTypeRoomListInterfaceinline
setMonitorProperties(bool monitorProperties)Tp::AbstractInterface
staticInterfaceName()Tp::Client::ChannelTypeRoomListInterfaceinlinestatic
StopListing(int timeout=-1)Tp::Client::ChannelTypeRoomListInterfaceinlineslot
~AbstractInterface()Tp::AbstractInterfacevirtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00062.html0000644000175100017520000003455212530426260021133 0ustar00kaffeinekaffeine00000000000000 Tp::AbstractChannelInterface Class Reference
   Home · All Classes · All Namespaces · Modules · Functions · Files

Base class for all the Channel object interface implementations. More...

#include <TelepathyQt/BaseChannel>

Inherits Tp::AbstractDBusServiceInterface.

Inherited by Tp::BaseCallMuteInterface, Tp::BaseChannelCallType, Tp::BaseChannelCaptchaAuthenticationInterface, Tp::BaseChannelChatStateInterface, Tp::BaseChannelConferenceInterface, Tp::BaseChannelGroupInterface, Tp::BaseChannelHoldInterface, Tp::BaseChannelMergeableConferenceInterface, Tp::BaseChannelMessagesInterface, Tp::BaseChannelRoomConfigInterface, Tp::BaseChannelRoomInterface, Tp::BaseChannelRoomListType, Tp::BaseChannelSASLAuthenticationInterface, Tp::BaseChannelSecurableInterface, Tp::BaseChannelServerAuthenticationType, Tp::BaseChannelSMSInterface, Tp::BaseChannelSplittableInterface, and Tp::BaseChannelTextType.

Public Member Functions

 AbstractChannelInterface (const QString &interfaceName)
 
virtual ~AbstractChannelInterface ()
 
- Public Member Functions inherited from Tp::AbstractDBusServiceInterface
 AbstractDBusServiceInterface (const QString &interfaceName)
 
virtual ~AbstractDBusServiceInterface ()
 
QString interfaceName () const
 
virtual QVariantMap immutableProperties () const =0
 
DBusObjectdbusObject () const
 
bool isRegistered () const
 
bool notifyPropertyChanged (const QString &propertyName, const QVariant &propertyValue)
 
- Public Member Functions inherited from Tp::Object
virtual ~Object ()
 
- Public Member Functions inherited from Tp::RefCounted
 RefCounted ()
 
virtual ~RefCounted ()
 

Additional Inherited Members

- Signals inherited from Tp::Object
void propertyChanged (const QString &propertyName)
 
- Protected Member Functions inherited from Tp::AbstractDBusServiceInterface
virtual bool registerInterface (DBusObject *dbusObject)
 
virtual void createAdaptor ()=0
 
- Protected Member Functions inherited from Tp::Object
 Object ()
 
void notify (const char *propertyName)
 

Detailed Description

Base class for all the Channel object interface implementations.

Constructor & Destructor Documentation

Tp::AbstractChannelInterface::AbstractChannelInterface ( const QString &  interfaceName)
Tp::AbstractChannelInterface::~AbstractChannelInterface ( )
virtual


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a01023.html0000644000175100017520000000516112530426260021123 0ustar00kaffeinekaffeine00000000000000 Member List
   Home · All Classes · All Namespaces · Modules · Functions · Files
Tp::Features Member List

This is the complete list of members for Tp::Features, including all inherited members.

Features()Tp::Featuresinline
Features(const Feature &feature)Tp::Featuresinline
Features(const QSet< Feature > &s)Tp::Featuresinline


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/doc/html/a00878.html0000644000175100017520000000562312530426257021155 0ustar00kaffeinekaffeine00000000000000 ChannelDispatchOperation proxies
   Home · All Classes · All Namespaces · Modules · Functions · Files
ChannelDispatchOperation proxies

Classes

class  Tp::ChannelDispatchOperation
 The ChannelDispatchOperation class represents a Telepathy channel dispatch operation. More...
 
class  Tp::Client::ChannelDispatchOperationInterface
 

Detailed Description

Proxy objects representing remote Telepathy ChannelDispatchOperation objects and their optional interfaces.


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.6.1
telepathy-qt-0.9.6.1/NEWS0000644000175100017520000017773612530423576016446 0ustar00kaffeinekaffeine00000000000000telepathy-qt 0.9.6.1 (2015-05-25) ================================= The "Emergency aid" release. Fixes: * Fixed illegal C++ statement in one of service interfaces. telepathy-qt 0.9.6 (2015-05-15) ================================= The "New blood" release. Enhancements: * Added TP_QT_VERSION and TP_QT_VERSION_CHECK macros - Can be used like #if (TP_QT_VERSION == TP_QT_VERSION_CHECK(0, 9, 6)) - Absence of the TP_QT_VERSION macros indicates previous versions (might be useful for service bindings compatibility) * Added client side support for conference calls * Implemented numerous interfaces for service bindings API changes: * Refactored service-side bindings API - BaseConnection createChannel() and ensureChannel() methods now accept request map instead of several extracted values. - BaseChannel::create() arguments reordered in natural way. Fixes: * Fixed CallContent interfaces exposing (required for DTMF) * fd.0 #86312: Fixed condition in adaptor methods generation telepathy-qt 0.9.5 (2014-09-09) ================================= The "Return of the Akademy Release" release. Enhancements: * Added more service side bindings * Service bindings now enabled by default * Bump Farstream version * Allow subclass of Tp::ReceivedMessage Fixes: * fd.o #77986: Workaround invalid channelRequests when delegating telepathy-qt 0.9.4 (2014-06-14) ================================= The "Back from the dead" release. Enhancements: * fd.o #63098: add method Account::createDbusTubeRoom Fixes: * fd.o #46241: Fixed linking in farstream and farsight * Require tp-glib 0.18 and fix 0.19-ism * fd.o #47647: Fixed storing avatars, so that they are not stored millions of times each. * fd.o #62711: Fixed stack overflow in SimpleObserver::create * Fix compilation and running against release Qt5 Cleanups: * Removed Farsight telepathy-qt 0.9.3 (2012-07-13) ================================= The "We promised, we delivered" release. Enhancements: * Added ClientTypes bindings to Contact. * Fixed deprecation macros, and added TP_QT_EXPORT_DEPRECATED. * Ported SimpleCallObserver to also handle Call1 calls. * Deprecated Farsight and StreamedMedia. Fixes: * Removed occurencies of deprecated tp-glib functions from the DBus tube tests. * Fixed DISABLE_WERROR, which now works as expected. * Fixed linking of the DBus tube tests with strict linkers like gold. * Synced tests/lib/glib/utils.* to remove deprecation warnings. * Removed occurencies of the deprecated tp_connection_new from Farsight/Farstream. telepathy-qt 0.9.2 (2012-07-04) ================================= The "We were at aKademy and we got bored" release. Enhancements: * Introducing Telepathy-Qt-Service, a new static library that contains experimental service-side bindings. For the moment this exposes the required low-level interfaces for writing connection managers, as well as some basic high-level API. * Renamed AccountManager::accountForPath() and AccountManager::accountsForPaths() to accountForObjectPath() and accountsForObjectPaths() respectively, deprecating the old names. * Added bindings for Debug interface. * Enable several options in CMake to allow to selectively build components. In particular, now Farsight, Farstream, examples and tests are optional. Farsight is disabled by default. * fd.o #28366: Added high level bindings for DBus tubes. Fixes: * Fix PkgConfig detection in DBus find files * Fix a race condition in test-account-basics and test-dbus-properties. * Fix compilation with gcc 4.7. * Fix tests compilation with telepathy-glib 0.19. * Fix FindDBus.cmake to find the correct paths. * Pass -fvisibility-inlines-hidden to the compiler if it's supported. telepathy-qt 0.9.1 (2012-03-23) ================================= The "it is call time" release. Enhancements: * fd.o #43025: Tp::Presence now has a setStatusMessage() method which keeps the old status id and status type * Added methods in Tp::AbstractInterface to support PropertiesChanged. This way it is possible for internal classes to monitor any property belonging to their interface * fd.o #46403: Update spec files to spec 0.25.2 and generate low-level bindings for all non-draft interfaces * fd.o #46347: Added high-level bindings for new CaptchaAuthentication interface * fd.o #46484: Add high-level Call bindings * Introducing new Telepathy-Qt-Farstream, a new mini-library with glue code to connect telepathy-farstream to Telepathy-Qt Fixes: * fd.o #45850: Telepathy Qt4 cannot compile against glib 2.31.0 and above * fd.o #39346: telepathy-qt fails to build with clang * fd.o #45755: Inconsistent ordering of pendingMessageRemoved telepathy-qt 0.9.0 (2011-12-20) ================================ The "Merry Christmas" release. This release begins the new 0.9 development series for feature additions following the 0.8 stable release series. Starting with this release the project is renamed to telepathy-qt (TelepathyQt) and Qt5 support is added alongside Qt4 support and for that 0.9 will be API (see changes below) and ABI incompatible with previous versions. API changes: * Everything containing qt4 (with or without caps) was renamed to qt. Eg.: - TP_QT4_DEPRECATED -> TP_QT_DEPRECATED - #include -> #include * Errors and constant macros starting with TELEPATHY_ (const char * versions) were removed, remaining only the versions that expand to QLatin1String. Eg.: - TELEPATHY_ERROR_INVALID_HANDLE <- removed - TP_QT4_ERROR_INVALID_HANDLE -> TP_QT_ERROR_INVALID_HANDLE * All deprecated methods (marked with TP_QT4_DEPRECATED) and signals (those that used to emit warnings at runtime when connecting to them) were removed. * StreamTubeChannel::connections() now returns a QSet instead of an UIntList. * Channel::groupContacts and groupLocal/RemotePendingContacts() gained a "includeSelfContact" param defaulting to true. * KeyFile and ManagerFile classes are now removed from public API. * SharedPtr cannot be constructed from a QWeakPointer anymore as the conversion from a QWeakPointer to a SharedPtr can't be made thread-safe. WeakPtr is reintroduced as a weak pointer class safely promoteable to a SharedPtr. * TelepathyQt-Farsight does not include telepathy-farsight/channel.h directly anymore. * ContactManager::lookupContactByHandle() is removed from public API. Enhancements: * fd.o #35084: The StreamTubeClient and StreamTubeServer classes have been added to allow implementing Telepathy Stream Tube connectivity for applications without having to worry about the channel dispatching details * Contact::refreshInfo() requests are now batched together on D-Bus * fd.o #41356: Implement methods to retrieve available message types on TextChannel. * fd.o #43631: Add CMake config files. Now CMake projects can find Tp-Qt straight away without the need of Find* files. * fd.o #43598 - Add high-level API for Proto.I.Addressing interface * fd.o #43599 - Add high-level API for Conn.I.Addressing interface Fixes: * Our TODO process being completely out of date. Trying to use doxygen \todo annotations from now on * FeatureRoster is set on Tp::Connection even for roster-less accounts. Known issues: * Some tests are failing for some Qt 4.7 configurations, reports on fd.o bug #43551 please. telepathy-qt4 0.7.3 (2011-10-07) ================================ The "a must" release. Enhancements: * Added HandleTypeRoom StreamTubes to ChannelClassSpec * It is now possible to capture and redirect the library debug output via setting a DebugCallback using the Tp::setDebugCallback function * The ChannelClassSpec implementation has been optimized, which yields ChannelFactory setup and consequently application startup speedups * StreamTubeChannel now ensures connectionClosed() is emitted for all connections on a closing tube * Add Presence/PresenceSpec operator== support * Add Presence/PresenceSpec operator!= support (Rohan Garg) * Add Authentication.TLSCertificate to the set of generated interfaces * Improve file transfer examples to properly use the ChannelDispatcher Fixes: * Ensure that the proper Channel Dispatcher methods are being called when creating/ensuring channels. * Prevent PendingContacts crashes in corner cases where contacts are still being built when a Connection is destroyed. Note that this affects which object is returned by PendingContacts::object() - we've now made it explicit that object() shouldn't be used externally as we make no guarantees on what object it returns, by deprecating it. It will be made protected: in the next API break * Passing a non-empty service param to ChannelClassSpec::{incoming,outgoing}StreamTube() messing up the shared instance as used by e.g. ChannelFactory * Connections not being removed from StreamTubeChannel::connections() when they are closed, and newConnection() and connectionClosed() events getting reordered * fd.o# 40655 - ChannelDispatchOperation::claim() cannot be used by Approvers to handle channels * Codegen is now able to utilize types with D-Bus signature aay, aas and aav * Account/Connection/Channel now properly check if FeatureCore is ready on accessors * Readded erroneously removed protected API to StreamTubeChannel, which restores full ABI backwards compatibility. telepathy-qt4 0.7.2 (2011-08-04) ================================ The "Stage 0 Tune Up" release. Enhancements: * Lots of additions and corrections to API documentation * Code generator now produces nicer output for member-ref, dbus-ref and rationale elements in docstrings * The stable D-Bus interfaces Account.Interface.Storage, Channel.Type.DBusTube and Channel.Interface.Destroyable have been added to generated bindings Fixes: * Tp::IncomingStreamTubeChannel always reports an empty socket address to connect to for accepted Tubes - and various other StreamTube fixes thanks to now having unit tests for them telepathy-qt4 0.7.1 (2011-06-09) ================================ The "where is the file?" release. Enhancements: * fd.o #37034: The URI property can now be set when requesting file transfers, and can be read by the Handler (and any Observers) from Tp::FileTransferChannel (Daniele E. Domenichelli) * Improved tests readability by moving common code into helper classes, macros, etc, in preparation for increasing the test coverage Fixes: * Fixed documentation for Contact::publishStateChanged() (Daniele E. Domenichelli) * Properly crosslink our doxygen docs to Qt documentation on fresh builds * Properly generate docs for auto generated classes telepathy-qt4 0.7.0 (2011-06-01) ================================ The "Doctor Love knew this so he made another great invention just for the lonely you!" release. This release begins the new 0.7 development series series for feature additions following the 0.6 stable release series. Both 0.6 and 0.7 will continue to be backwards compatible API and ABI wise with the earlier 0.5 development series. Enhancements: * fd.o #35341: Use the new ContactBlocking D-Bus interface for better performance in Tp::ContactManager (George Kiagiadakis) * ReceivedMessage: Add accessors for retrieving delivery report information, sender nickname and superseded message token * Crosslink our doxygen docs to Qt documentation Fixes: * Do not close channels created using the request and handle API if MC restarts * Pass new value correctly as variant in generated binding setProperty* methods * Properly initialize Connection account balance members * fd.o #36881 - Wrong documentation for Tp::Account::connectionStatusChanged (and a bunch of other parts of the API) * fd.o #31769 - The documentation of TextChannel's features is not very helpful * Skip docs generation for internal OptionalInterfaceCache telepathy-qt4 0.5.16 (2011-05-01) ================================= The "A brown paper bagful of Easter Eggs" release. Enhancements: * fd.o #36526: Tp::Channel has now gained targetID() and targetContact() accessors * fd.o #35421: Update to spec 0.22.0: - Added auto generated class for Conn.ContactBlocking - Added Connection::ErrorDetails accessors for ConnectionError details server-message, user-requested, expected-hostname and certificate-hostname * Add support for Conn.SimplePresence.MaximumStatusMessageLength * Add Features operator|(Features, Feature) * ContactManager state now only advances to Success when both the roster and the roster groups have been downloaded, if requested * New class SimpleObserver that can be used to observe arbitrary channels on a given Account. * fd.o #33525 - Helper class(es) for observing calls - New class SimpleCallObserver class which makes it easy to follow all StreamedMedia communication on a given Account. Fixes: * fd.o #35633: Contact features being erased after further contact upgrades, e.g. from ContactFactory used together with Connection::FeatureRosterGroups * Contact::groups() and ContactManager::groupContacts() not populated correctly when using CMs with new-style ContactGroups D-Bus API * Timeout in some CMs when introspecting contact list channels * Crashes with Connection::FeatureSelfContact enabled (Manifested as an assert for inFlightFeatures or pendingFeatures being hit) * Crashes if a connection disconnects while FeatureRosterGroups is being introspected (SIGSEGV in PendingOperation from ContactManager::Roster) * Added correctly named pretty headers for the Conn.ClientTypes/ContactGroups/ContactList/Saving interfaces * Odd build system failures from feature checks which were anyway redundant due to our recently bumped Qt 4.6+ dependency - checks now removed telepathy-qt4 0.5.15 (2011-04-12) ================================= The "How to remove a hole from a set of holes" release. Enhancements: * Performance improvements for introspection (becomeReady() latency) * Some documentation improvements. Fixes: * Incorrect scoping for Initial{Audio,Video} properties in Account channel request methods * Possible deadlock on connection status changes when FeatureConnected is requested on a Connection * Crash opportunities when introspecting a Connection which disappears in the process (e.g. due to a network error or a CM crash) telepathy-qt4 0.5.14 (2011-04-05) ================================= The "Now succeeds at failing!" release. The Qt dependency has been bumped to >= 4.6.0 for all future releases. Enhancements: * AccountManager will now retry introspection 5 times with a 3 seconds interval (or immediately if error is Timeout) if the introspection failed and becomeReady() will fail if there is still an error after all tries. * AccountManager will no more signal newAccount if the initial introspection failed. * ConnectionCapabilities and ContactCapabilities are now subclassable Fixes: * Regression in 0.5.13 causing PendingReadys to not fail even if the object being made ready disappears * Discrepancy between the spec and implementation on initially assumed non-locally-requested StreamedMediaChannel stream direction * Reporting capabilities of offline accounts incorrectly because of a .manager file parsing bug telepathy-qt4 0.5.13 (2011-03-23) ================================= The "what is my id?" release. Enhancements: * Added example to send messages using ContactMessenger. Fixes: * ContactMessenger: Do not crash if an error occurred normalizing the contact identifier but the ContactManager::contactsForIdentifiers() succeeded. * Multiple parallel invalidated() signal connections created between DBusProxy and ReadinessHelper telepathy-qt4 0.5.12 (2011-03-18) ================================= The "Can I use the IM framework for, like, sending and receiving messages" release. Enhancements: * fd.o #28753: Added SimpleTextObserver class which makes it easy to follow all text communication on a given Account * fd.o #35321: Added ContactMessenger class for easily sending and receiving text messages with a particular contact Fixes: * The Request & Handle API spuriously failing with SERVICE_CONFUSED because of a race condition with introspecting the proxies telepathy-qt4 0.5.11 (2011-03-09) ================================= The "more contacts?" release. Enhancements: * fd.o#33121 - Bind Connection.ContactList.ContactsChangedWithID. Fixes: * ContactManager will now create contact objects even if everything fails but we have the contact handle/id and the connection has ImmortalHandles. * Ensure FeatureRoster is ready before setting ContactManager state to success even in fallback mode. telepathy-qt4 0.5.10 (2011-03-09) ================================= The "am I connected?" release. Enhancements: * Added Connection::FeatureConnected to help applications that only care about connected connections. Setting this feature on the ConnectionFactory used will make sure all connections signalled by the library are connected. Fixes: * Ensure FeatureRoster is ready before setting ContactManager state to success. telepathy-qt4 0.5.9 (2011-03-07) ================================= The "planned engineering works for the last year" release. Enhancements: * fd.o#28367 - Added High-level API for StreamTube channels * fd.o#34228 - Added API on Account for requesting Channels and handling them yourself, implemented properly using the Channel Dispatcher service * Account::allowedPresenceStatuses() now has fallbacks to include "available" and "offline" when that makes sense * Removed some more private symbols from the shared library, resulting in slightly faster load times * Deprecated ConnectionCapabilities contact search related methods with singular names and added plural versions of them, for API consistency. * Contacts publish/subscription state updates for removed contacts are only signalled after the ContactManager::allKnownContactsChanged signal is emitted. Fixes: * Redundant Contact::avatarDataChanged() emissions * Connection::becomeReady() never finishing in state Connecting, which for example prevents handling ServerAuthentication channels. NOTE: any code incorrectly relying on the old buggy behavior of becomeReady() only finishing once the connection goes Connected or Disconnected may need adjustment. * Linking errors referencing the QtXml library * Spec-incompliant building of Client names when uniquifying is requested from ClientRegistrar * Sensitive data in Account parameters being included in debug logs telepathy-qt4 0.5.8 (2011-02-22) ================================= The "where are my contacts?" release. Enhancements: * Account won't try to build a Connection object anymore if the connection object path hasn't changed. * Connection::FeatureRoster will now fail introspection if ContactList interface is not supported, neither fallback roster channels. * ContactManager now has a state() accessor and a corresponding stateChanged() signal to keep track of the progress made in retrieving the contact list. * Made Profile/Account/ContactManager debug output a bit cleaner. * Cleaned up debug classes by removing unused code. Fixes: * Properly replace "_" with "-" on Account::protocolName(). telepathy-qt4 0.5.7 (2011-02-15) ================================= The "fit for galoshes" release. Enhancements: * Make the debug subsystem as no-op as possible when debugging is disabled at runtime with Tp::enableDebug(false) and Tp::enableWarnings(false). * fd.o#33123 - Bind Protocol.Avatars. * fd.o#33124 - Bind Protocol.Presence. * fd.o#33116 - Added support for passing hints to channel requests, also making channel requests marginally more efficient CPU and memory wise in the process. * fd.o#33117 - Added support for extracting hints from ChannelRequests. * fd.o#33117 - Added support for ChannelRequests reporting the channel created for them on success, for further observation. Fixes: * fd.o#34131 - Writing avatar cache into $HOME with scratchbox. * Unstable generated future-* headers being installed (although nothing declared in them was ever exported in the library). * Possible crashes in Channel internal updateContacts function when just the self handle changed. telepathy-qt4 0.5.6 (2011-01-27) ================================= The "accept/decline" release. Enhancements: * Update to spec 0.21.8. - Added auto generated classes for Account.Addressing, Channel.ServerAuthentication, Channel.SASLAuthentication, Channel.Securable and Conn.MainNotification. Fixes: * Properly ignore protocol with invalid names. * Properly escape protocol name with "-" when constructing protocol object path. * Properly link against QtXml. * Properly emit presencePublicationRequested if the contact current publish state changes to PresenceStateAsk. * Added missing fancy-headers for generated classes. telepathy-qt4 0.5.5 (2011-01-25) ================================= The "I wish I had less contacts" release. Enhancements: * CapabilitiesBase: Added method to check if file transfer is supported. Fixes: * Contact list contacts are now guaranteed to contain the features set on ContactFactory. * Contact list groups are now automatically reintrospected when needed. * Another attempt to fix a crash when contacts are removed from contact list while the introspection is still running. * fd.o#33457 - tp-qt4 uses non-atomic file write in avatar cache. telepathy-qt4 0.5.4 (2011-01-20) ================================= The "the shower of golden paper bags" release. Enhancements: * Presence publication requests are now reported more sensibly by the ContactManager::presencePublicationRequested(Contacts) signal, with the per-contact request message, if any, being in Contact::publishStateMessage() Fixes: * ContactManager not emitting presencePublicationRequested if the request message is empty. * ContactManager sometimes crashing when contacts are removed using the new ContactList interface. telepathy-qt4 0.5.3 (2011-01-17) ================================= The "contact factorization" release. Enhancements: * Added Tp::Contact::requestAvatarData() * Added Tp::Contact::isContactInfoKnown() * fd.o#32999 - operator< and qHash are not implemented for Tp::ProtocolParameter. * fd.o#33119 - Bind Connection.HasImmortalHandles. * ContactFactory is no more a stub class. The features set in the ContactFactory will be enabled in all contacts created by ContactManager and the classes using it (Connection, Channel, etc). Fixes: * Build failures on systems using GNU gold or the --no-add-needed/--no-copy-dt-needed-entries linker flags telepathy-qt4 0.5.2 (2011-01-03) ================================= The "I'm not subscribed now, right? WRONG" release. Enhancements: * Added Or/NotFilter classes making it more flexible to use the Filter API. * Channel invalidation reasons now more accurately describe what happened, including a new error TP_QT4_ERROR_ORPHANED for the corresponding Connection getting invalidated from whichever reason. * Added support for ContactList and ContactGroups interfaces improving performance of Connection::FeatureRoster/Groups when the CM supports the new interfaces. * ContactManager PendingOperations finish at consistent times wrt actual state changes when used with a CM sporting the new ContactList/ContactGroups interfaces * Deprecated Contact/ContactManager signals carrying a Channel::GroupMemberChangeDetails param for publish/subscription/block state changes and added new signals that should be used in new code. * fd.o #31464 - Added Channel::requestLeave() for leaving channels more gracefully than closing them; StreamedMediaChannel::hangupCall now uses that Fixes: * Properly install TelepathyQt4/ConnectionManagerLowLevel. * A race condition causing proxies to be needlessly dropped from the factory cache and hence new proxies built for a future request, and eventually hitting an assert in onProxyInvalidated as a result * Memory leaks when using Connection::FeatureRoster/RosterGroups where the connection and roster channels were leaking. * fd.o#29728 - ContactManager::addGroup and removeGroup are confusing/broken. * fd.o#29735 - Roster API semantics are error / race condition prone. telepathy-qt4 0.5.1 (2010-12-08) ================================= The "lazily evaluated birth" release. Fixes: * fd.o #29731: Memory leaks reported by make check-valgrind * Crash using a dangling (const!) iterator when a channel is removed from a conference * Crash when the an object path for an Account in an account set is quickly reused after it's removed * Emitting redundant {local,remote}SendingStateChanged signals from StreamedMediaChannel * ChannelDispatchOperation::channelLost failing to include Tp:: in the signal arg type names, making it a tad hard to connect to telepathy-qt4 0.5.0 (2010-11-16) ================================= The "new era of breakage" release. This release IS NOT API/ABI COMPATIBLE WITH EARLIER RELEASES. Further releases in the 0.5 development series will however be compatible with this release, as will any releases in a 0.6 stable series. For enhanced compatibility versions from 0.5 and earlier series can be parallel installed, with 0.5 bumping the .so major version to .so.1. However, the development headers and pkgconfig file can't be parallel installed. Enhancements: * fd.o #28793 - It is no longer necessary to keep the proxy / other object you get a PendingOperation from manually referenced until the operation is finished * fd.o #28797 - generated client code (AbstractInterface subclasses) now allows setting a non-default timeout for D-Bus method calls * fd.o #29486 - Bare variant maps and string lists are no longer exposed in the API unless absolutely necessary; instead they have wrapper classes with easy access to well-known keys and values. Among other consequences, this means AbstractClient implementations NEED TO CHANGE their method implementation signatures to accept the wrapper classes instead of bare QVariantMaps. * Setting automatic/requested presence in Account now uses Tp::Presence * Cleaned up the API and internal code by removing all deprecated classes, methods and signals. * Added Tp::Object intermediate base class for uniform QObject property change notification. Connection, Channel and Contact will be propertified using it in the future. * Enumeration and flag types generated from the specification can now be used in API without endangering ABI stability due to added padding members, enhancing type safety in numerous instances where bare uints used to be returned / taken as a parameter. * Moved low-level functionality which shouldn't be used when using a full Telepathy setup with a Mission Control service (Account Manager + Channel Dispatcher) available from Connection and ConnectionManager to Lowlevel classes, which can be accessed only if TP_QT4_ENABLE_LOWLEVEL_API is #defined through a lowlevel() accessor on them * Bare pointers are no longer returned from the API, instead either SharedPtr or Qt implicitly shared handle classes are used (applicable to Connection/ContactCapabilities, ProtocolInfo, etc) * Tp::Contact is now a RefCounted and uses Tp::Feature like the rest of the library. * ClientRegistrar no longer guarantees that a singleton instance is returned for create(). In particular, this relaxation allows us to implement an API in the future which constructs a ClientRegistrar behind the scenes to be able to request and handle channels without manually implementing an AbstractClientHandler. * The Filter API is now more future-proof, with the assumption that the filter chain is ANDed together dropped. It will be possible to combine filters using And/Or/Not filter combiners in the future, of which And is included now. * The SharedPtr API has been improved. In particular, it's now safe to use it as a QMap/QHash key and more difficult to use it incorrectly as a boolean or an integer. The redundant WeakPtr class has been removed - use QWeakPointer instead (which works with SharedPtr for all QObject classes). * Tp::Contact friend list state change signals now have a details argument (which will contain e.g. the request message for publishState() == Ask when somebody adds you to their contact list, for example). This means that code connecting to them NEEDS TO BE CHANGED. * Account::haveConnection(Changed) and friends is now the less confusing Account::connection(Changed) pair * AccountManager filtering methods returning an AccountSet now have more descriptive names without the Set suffix * Account/Connection/Channel subclasses now can override the "core" feature implied by isReady() and becomeReady(). In particular, this means that e.g. ContactSearchChannel::isReady() with no arguments will only return true if ContactSearchChannel::FeatureCore is ready in addition to Channel::FeatureCore. * StreamedMediaChannel is once again just for Channel.Type.StreamedMedia channels, with the intermediate Call.DRAFT support and API removed. When Call is undrafted, a new CallChannel will be added and StreamedMediaChannel deprecated. * Similarly, hacky Conference.DRAFT support IS REMOVED. Only the final Conference interface is supported from now on. * Everything that used to be called just Audio/Video/MediaCall etc now has StreamedMedia in the name, to not conflict with future Call API. Fixes: * fd.o #27204 - Codegen erroneously uses enums' value-prefix as the name for the C++ enum * fd.o #29998 - Connecting to signal Tp::TextChannel::chatStateChanged needs typedef if not done in Tp namespace * fd.o #27795 - Problems using Tp::SharedPtr as a key in QMap * ChannelRequest not becoming ready successfully when there is no Account specified * ContactSearchChannel not initializing its private members correctly * Compile errors with QT_STRICT_ITERATORS * Some MSVC++ compilation issues (though there still are likely some remaining) * ContactManager::allKnownContacts not picking up changes from the "stored" list telepathy-qt4 0.3.14 (2010-11-05) ================================= The "O HAI MY NAME IS CONFERENCE" release. Enhancements: * fd.o #30098 - Added an asynchronous property request API for generated low-level proxies * Added high-level class for SimplePresence and changed Contact to use it, deprecating the old methods using SimplePresence directly. * Added signals deprecation support to Contact. * Deprecated StreamedMediaChannel methods that only make sense when used with Call.DRAFT channels (we're going to drop support for that particular draft in 0.5.0) * Deprecated all optional interface convenience methods. The methods inherited from OptionalInterfaceFactory should be used directly instead if access to low-level proxies is needed. * Add unnamed (anonymous, TargetHandleType == None) variants for text chats and calls to ChannelClassSpec * Register all non-QObject public classes with the Qt meta-object system, so they can e.g. be stored in QVariants. Fixes: * Unnamed text and StreamedMedia calls not included in the ChannelFactory (channel class) -> (subclass, features) mapping * Some RequestableChannelClassSpec and ConnectionCapabilities methods having a notion of "text chat with a person WHO is a conference", which doesn't exist telepathy-qt4 0.3.13 (2010-11-01) ================================= The "sickness won't slow us down" release. Enhancements: * Added TP_QT4_ prefixed versions of all generated string constants marked as QLatin1String for less verbose usage with Q_NO_CAST_FROM_ASCII * Added signals deprecation mechanism to warn when a deprecated signal is used. * fd.o #29451 - Make it possible to specify subclasses to use and features to make ready on them in ChannelFactory * fd.o #29484 - RequestableChannelClass should have high-level API * fd.o #29486 - Add a ChannelClassSpec class for easily specifying Client channel filters (and building Channel requests and ChannelFactory filters for advanced usage) * Added more deprecated methods and remove some methods that should not be deprecated. Now the library together with examples builds itself with deprecation warnings enabled, to make sure no deprecate method is used internally. * Deprecated autogenerated synchronous properties accessors/setters. Fixes: * fd.o #30223 - telepathy-qt4's codegen doesn't deal with tp:external-type properly * fd.o #30923 - Fix compilation errors in 0.3.12 - The tp-glib version requirement in 0.3.12 was too old - Compile error in the tp-glib based test library * fd.o #31087 - ChannelRequest immutable property extraction relying on undefined method argument evaluation order -> failing on some toolchains * TextChannel never finishing introspection of FeatureMessageQueue with some older services * Properly document ContactSearchChannel signals. * AccountManager and AccountSet getting confused and hitting asserts with certain sequences of introspecting and adding/removing accounts, most prominently when removing and readding an account * Useless PendingReady code having potential for crashes in corner-cases but serving no useful purpose (now removed) * Code generator changes not always triggering rebuilds properly telepathy-qt4 0.3.12 (2010-10-15) ================================= The "break is coming" release. New API: * Added ContactSearch high-level class. * Added constructors/accessors for using Channel/ContactFactory in Connection. * Added high-level class for ContactInfoFieldList. Enhancements: * Updated to spec 0.21.1: - Added auto generated classes for Conn.ClientTypes/ContactGroups/ContactList/ PowerSaving and Chan.ServerTLSConnection. - Make use of Observer.ObserverInfo.request-properties map, making ChannelRequest use the immutable properties defined in the map if available, avoiding unneeded introspection. - Added support for Conference interface alongside Conference.DRAFT support. - Added ConnectionCapabilities methods to check conference support. * Improved Account::capabilities() to take Profile::unsupportedChannelClasses into account. * Improved StreamedMediaChannel test coverage to yellow (> 80%). Fixes: * Properly install TelepathyQt4/Farsight/global.h. * fd.o#30386 - Regression: StreamedMediaChannel::streamAdded is not emitted when one requests a new stream using a StreamedMedia channel type. * Fixed MediaStream::requestDirection when using a Call channel type. * Un-deprecate AccountManager methods to retrieve accounts given the account paths. * Some small documentation fixes. telepathy-qt4 0.3.11 (2010-10-04) ================================= The "farewell hated friend" release. Enhancements: * fd.o #24648 - Port Telepathy-Qt4's build system from autotools to cmake, resulting in faster builds. All targets supported by the previous build system are still supported, and some new were added, notably individual targets for unit tests and callgrind support. * fd.o #29672 - Support for Profiles - a way to describe different IM/VoIP services by data files (e.g. Google Talk for the XMPP/Jabber protocol) * fd.o #29699 - ChannelRequest immutable data is now accessible even before it's fully ready - this is useful for e.g. early initialization of channel context in applications with the AbstractClientHandler requestNotification API * Some performance optimizations in ReadyObject, ReadinessHelper and Channel Fixes: * Race conditions uncovered by Qt 4.7 in TestAccountBasics and TestConnRoster telepathy-qt4 0.3.10 (2010-09-16) ================================= The {bool b; if (b == false || b == true || b == 99) { /*...*/ }} release. Enhancements: * fd.o #29609 - ClientRegistrar and all related classes now use Factories too, which means if you use the factory-enabled create() variants such as create(AccountManagerPtr), you can share account and connection proxies with the rest of your application, and/or make them be ready by the time your addDispatchOperation/handleChannels/observeChannels implementation is called * fd.o #29090 - Added support to filter accounts by their capabilities (whether you can do room chats, voice calls, etc, using a given account) * Added Account::capabilities(), which automatically gets the capabilities from a connected Connection if there's one, or the protocol object if there isn't * Generic Filter framework, currently only used for Account filtering, but in the future also for filtering Contacts * ChannelRequest is now also using the same Account/Connection etc objects than the rest of the application * PendingChannelRequest now holds a reference to its Account, so you don't have to keep a reference to the Account in your application's scope for the channel request to succeed * There are now variants of the ContactManager signals presencePublicationRequested, groupMembersChanged and allKnownContactsChanged which carry the details parameter (contains things like the message and the reason) Fixes: * Memory leak when using PendingComposite * Memory leak in QDBus triggered by ClientHandlerRequestsAdaptor code (there's a workaround, and the actual bug is reported as QTBUG-13562) * The PendingOperation returned by Connection::requestConnect() finishing even if the connection wasn't connected yet * Hitting an assert in cornercases for calling setIntrospectedCalled twice in Account Avatar introspection * Account::changingPresence() not being initialized correctly telepathy-qt4 0.3.9 (2010-09-10) ================================ The "THE ORIGINAL SWEAT FACTORY^W^WSAUNA MASTER" release. Enhancements: * fd.o #29451 - Add Factory infrastructure, enabling: - sharing accounts/connections between different parts of the library better (this will soon enable us to eliminate duplicate objects between AbstractClient implementations and the AM) - requesting that all accounts/connections/channels/contacts are always ready with given features - automatically constructing application-defined subclasses whenever eg. an Account is constructed * Add finished and usable AccountFactory and ConnectionFactory APIs, and also added API/ABI placeholder ChannelFactory and ContactFactory APIs which will be more useful soon * fd.o #29606 - Use factories in AccountManager and Account for constructing Accounts and Connections -> if desired features are enabled, one no longer needs to make any Account::becomeReady and Connection::becomeReady calls when using an AccountManager * fd.o #29409 - Use QDBusServiceWatcher if available, reducing wakeups * fd.o #20034 - Add avatar cache implementation and featureAvatarData on Tp::Contact using it. * Made Channel::groupSelfContact() always have some contact for the user as long as the channel is ready (if the group has none, the Connection one is used) * (Side-effect from other work) Add fallbacks to channel requests in case the service doesn't provide the InitiatorHandle or the Requested property * Made Channel debug output a bit cleaner * Added Connection::ErrorDetails to represent additional information about error conditions causing Connection invalidation * Made the Connection API guide the applications better to correct error handling practices (all error handling should be done in invalidated() slots) * Add SharedPtr::qobjectCast(), an upcasting constructor and pointer to const support Fixes: * A race condition which could result in Channel ignoring a member change (only applicable to services with Group.MembersChangedDetailed) * A bug where Channel::groupMembersChanged(only removed members) isn't always emitted if the local user is not a member of the group - probably means signaling contacts being removed from roster groups didn't work either * Yet another TestConnRosterGroup race condition (freq: 6 in 20000 runs) * fd.o#29930 - Build error with glib 2.25 * ReadyObjects incorrectly handling feature dependencies * Account/Connection/Channel readifying themselves even if not asked to * Handle reference management screwing up if there are multiple connections online on a single CM * Lots of crash opportunities when a PendingOperation is underway when its parent-ish object is unreferenced in an application telepathy-qt4 0.3.8 (2010-08-24) ================================ The "a weekend (and quite a bit of the Monday early hours) well spent" release. Enhancements: * fd.o#29395 - Update to spec 0.19.10 * fd.o#29461 - Update to spec 0.19.11 * fd.o#28948 - Added docs/tests/missing Qt properties to AccountSet * fd.o#29357 - Account::iconName() and icon() now always return sensible non-empty values * fd.o#28819 - {Account,ConnectionManager}::protocolInfo() has been improved - Recent CMs are now introspected with less D-Bus calls - New API capabilities(), vcardField(), englishName(), iconName() on ProtocolInfo and ManagerFile * fd.o#25126 - Some redundant debug output has been removed * fd.o#27460 - Connection now introspects recent CMs with less D-Bus traffic * Connection::contactManager and ::capabilities are now less of a death-trap - now always are non-NULL - operations fail with descriptive errors if the Connection isn't valid - they used to go NULL at an indeterminate time when eg. disconnecting * Account::connection() object path parsing has been optimized Fixes: * fd.o#28947 - Account::filterAccounts doc does not properly format the example code * fd.o#28651 - Cannot receive files using gabble 0.9 * fd.o#29145 - AccountSet::accountRemoved is emitted for newly-created non-matching accounts * fd.o#29699 - ChannelRequest incorrectly checks immutable properties * Broken iteration code in MediaStream which often led to busy-looping forever * (Harmless) uninitialized memory use reported by valgrind in Account internals Test suite improvements: * fd.o#29702 - Unit tests now execute reliably, and 10-30x faster * Added the script repeat-tests.sh for repeating tests to detect race conditions * Added a conservative 10 minute per test watchdog to detect hung-up test logic - Should be plenty even for heavily loaded VM build bots, as the whole test suite now executes in 2.4-2.5 seconds on my laptop * The StreamedMedia legacy and Future.Call tests now actually have different names to be able to distinguish between them in the test logs * Test coverage reporting now works again; turns out we need to disable building the shared library when it is enabled * amd64 memory use errors (pointer size != int size) calling g_object_new() in tests have been fixed telepathy-qt4 0.3.7 (2010-07-12) ================================ The “not as bad as Pepsi Max†release. Enhancements: * fd.o#28927 - Generate code for Channel.Interface.{Anonymity,ServicePoint} (wjt) * fd.o#28942 - Refresh HACKING and README (wjt) * Update to spec version 0.19.9, adding Read and Deleted members to MessageSendingFlagReport, DeliveryReportingSupportFlagReceive, and DeliveryStatus (wjt) Fixes: * fd.o#28945 - AccountManager::accountsByProtocol() returns an empty set * fd.o#28946 - AccountSet should indicate whether the filter used is valid telepathy-qt4 0.3.6 (2010-07-01) ================================ The "I've been thinkin' a lot today" release. New API: * Added Qt properties to Account. * Added filter API to AccountManager to filter accounts based on Qt properties. Includes a new class AccountSet that represents a set of accounts that match a certain filter and that updates automatically based on accounts Qt properties changes. * fd.o#25035 - Add API to AccountManager to get a list of Account objects, all ready. * fd.o#28825 - Bind Account.Service * fd.o#28828 - Add Qt properties to ConnectionManager * fd.o#28861 - Add auto generated interface and Connection accessor for Connection.Cellular interface Enhancements: * fd.o#28302 - Sync test CM with telepathy-glib * fd.o#28827 - Add valgrind support to tests * fd.o#28850 - Update to spec 0.19.8 Fixes: * fd.o#28489 - manager-file.py missing in tp-qt4 0.3.4 tarball * fd.o#28826 - KeyFile should support spaces in key names and string list params that don't terminate with ; * fd.o#28829 - Contact should not fail if /capabilities attr is empty * fd.o#28830 - Channel does not parse immutable properties correctly * fd.o#28831 - Connection FeatureRosterGroups does not work after FeatureAccountBalance support was added telepathy-qt4 0.3.5 (2010-06-21) ================================ The "Think I'll get it done yesterday" release. New API: * fd.o#28018: Bind Account.ChangingPresence. * fd.o#28552: Bind Account.ConnectionError/Details. Enhancements: * fd.o#28536: update to spec 0.19.7 (ConnectionError, Anonymity, ServicePoint, ChatStates). Fixes: * Update with-session-bus.sh from telepathy-glib, fixing a bashism. (smcv) * Fixed coverity issues with call example. * Fixed AbstractClient documentation. (albanc) * telepathy-qt4-farsight telepathy-glib dependency is now >= 0.8.1. (albanc) telepathy-qt4 0.3.4 (2010-05-23) ================================ The "Cause time takes time, ya know" release. New API: * fd.o#28143: Implement Connection.Balance interface support. Fixes: * Fix strict QtDBus demarshalling which was causing crashes when using qdbus_cast from a SocketAddressIP*. (drf) telepathy-qt4 0.3.3 (2010-05-09) ================================ The "generic fun" release. New API: * fd.o#27671: ContactInfo high-level API. Enhancements: - Added Call.Content.Remove support to StreamedMediaChannel. Fixes: - Fixed a leak in Connection::gotCapabilities, - Correctly remove object path from Account::uniqueIdentifier. telepathy-qt4 0.3.2 (2010-04-23) ================================ The "poisoned with anti-coffee" release. New API: * fd.o#27379: Add a new signal, allKnownContactsChanged. (drf) * fd.o#27677: Add Observer.Recover support. * Added support for retrieving contacts location. Enhancements: * Added example application to list all supported protocols. * fd.o#27670: Updated to spec 0.19.5. Fixes: * Fixed compilation (more specific, moc generation). The code was triggering QTBUG #2151. (drf) * Correctly handle UTF-8 in code generator. (wjt) * Fixed text-chan test race condition. (drf) telepathy-qt4 0.3.1 (2010-03-30) ================================ The "it's all about coffee" release. Enhancements: * Added/Improved documentation for various classes and some minor documentation style fixes. Fixes: * Fixed bug where StreamedMediaChannel::requestStream returned PendingOperation was never finishing. telepathy-qt4 0.3.0 (2010-03-18) ================================ The "With My Own Two Hands" release. Dependencies: * Full regression tests now require telepathy-glib >= 0.10.0 (telepathy-glib is still optional) New API: * Channel: Added Conference/MergeableConference/Spplitabble interfaces support. * StreamedMediaChannel: Added Call interface support. Enhancements: * Updated to 0.19.1 spec. * Better tests directories organization (complete separation of glib/python specific code). Fixes: * fd.o#25422: generate code for Call draft API. * fd.o#26117: Add Call interface support to StreamedMediaChannel. * fd.o#26881: Remove the usage of QString::fromAscii. * fd.o#27124: Missing docs for some classes. * fd.o#27125: Add support to QT_NO_CAST_FROM_ASCII. * Fixed bug when Channel was never getting ready. telepathy-qt4 0.2.2 (2010-02-22) ================================ The "no pain, no gain" release. New API: * AbstractClientHandler: Added support to set Handler Capabilities property. Fixes: * fd.o #25659: ObserveChannels implementation might actually return immediately. telepathy-qt4 0.2.1 (2009-12-04) ================================ The "all you want, only better" release. Fixes: * fd.o #25058: reduce the scope of our workaround for Qt 4.5 bug , fixing compilation against Qt versions >= 4.6 beta, where this bug has been fixed (smcv) * Avoid the installed AccountManager (if any) being service-activated during distcheck under some circumstances (smcv) * Compile with symbols hidden by default, explicitly export a few symbols that were mistakenly not exported, and improve the code generation tools to be more correct about their exports (smcv) * Improve the code-generation tools to cope with UTF-8 in the spec (wjt, smcv) * Enable Automake 1.11 silent building (./configure --enable-silent-rules to enable this) (wjt) Code generation release notes: * qt4-types-gen.py and qt4-client-gen.py previously forced the generated classes to be exported, in a way that's not actually correct for code outside telepathy-qt4 (the TELEPATHY_QT4_EXPORT macro). They now use a macro set by --visibility, defaulting to nothing; if you're building a shared library with -fvisibility=hidden, or supporting Windows, you may need to use --visibility=YOUR_LIB_EXPORT when running these scripts. See TelepathyQt4/global.h or QtDBus/qdbusmacros.h for an example of setting up such a macro (unfortunately, the only correct way to do this seems to be for each shared library to define its own). telepathy-qt4 0.2.0 (2009-11-10) ================================ The "I Shot the Sheriff" release. API changes: * Connection: Changed status/statusReason/statusChanged to use enums Tp::Connection::Status and ConnectionStatusReason. * Connection: Renamed getContactAttributes method to contactAttributes. Fixes: * fd.o#23370: Make better use of telepathy-spec 0.17.27 errors. * fd.o#24422: Account removal should be represented by TELEPATHY_QT4_ERROR_OBJECT_REMOVED. telepathy-qt4 0.1.12 (2009-11-05) ================================ The "an enzyme that breaks down tigers" release. New API: * TextChannel: Added ChatState interface support. API changes: * TextChannel: send() methods now receive a flags parameter, so we proper support delivery reports. Fixes: * pkgconfig: Added missing QtNetwork dependency. telepathy-qt4 0.1.11 (2009-10-08) ================================ The "on more to go" release. New API: * FileTransferChannel: Added methods to access FileTransfer interface properties. * IncomingFileTransferChannel: Added specialized class for handling incoming file transfers. * OutgoingFileTransferChannel: Added specialized class for handling outgoing file transfers. * CapabilitiesBase: Added base class to represent contact/connection capabilities. * ContactCapabilities: Added specialized class that inherits CapabilitiesBase to represent contact capabilities. * ConnectionCapabilities: Added specialized class that inherits CapabilitiesBase to represent connection capabilities. * Contact: Added ContactCapabilities interface support. * Connection: Added capabilities (RequestableChannelClasses) support. * Account: Added ensureAudio/VideoCall methods that make use of InitialAudio/Video properties when creating StreamedMedia channels. * Channel: Added streamTubeInterface/tubeInterface methods. (Patch from Abner Silva ). * PendingVariant: Added pending operation helper class for D-Bus methods that return a variant as result. API changes: * Renamed PendingVoidMethodCall to PendingVoid. * Changed PendingVoid/Success/Failure constructor to receive parent as last parameter. Enhancements: * Added examples for handling incoming/outgoing file transfers, examples/file-transfer/ * Added C++ visibility support. * Updated to 0.18.0 spec. Fixes: * fd.o #24324: Account::create/ensureXXX should receive a const QDateTime & for userActionTime * Explicitly use uint for TargetHandleType. telepathy-qt4 0.1.10 (2009-08-25) ================================ The "not yet stable" release. New API: * StreamedMediaChannel: Added Hold and DTMF interface support. Enhancements: * Moved OptionalInterfaceFactory::InterfaceSupportedChecking docs from DBusProxy to OptionalInterfaceFactory. * Use struct Private instead of class Private for consistence. * Removed cli/Client from header guards. Fixes: * fd.o #20269: Channel's Contact objects should initially have no features. * fd.o #21335: Implement Group self-handle removal reasons. * fd.o #23040: Running connection managers appear twice in ConnectionManager::listNames result. * fd.o #23282: Channel should update ReadinessHelper with the supported interfaces. telepathy-qt4 0.1.9 (2009-07-23) ================================ The "never too late" release. New API: * OptionalInterfaceFactory: Added methods interfaces and optionalInterface and removed duplicated code in all OptionalInterfaceFactory subclasses. * Added ContactManager allKnownGroups, addGroup, removeGroup, groupContacts, addContactsToGroup and removeContactsFromGroup methods. * Added ContactManager groupAdded, groupRemoved and groupMembersChanged signals. * Added Contact groups, addToGroup and removeFromGroup methods. * Added Contact addedToGroup and removedFromGroup signals. API changes: * Changed ProtocolParameter requiredForRegistration method to isRequiredForRegistration to make it consistent with other bool returning getters. Enhancements: * Changed all classes to follow coding-style. * Moved documentation to source file for all classes. * Standardize class definition in all classes: * Moved public xxxInterface methods definition to the end of the public methods declaration. * Added friend struct Private declaration. * Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. * Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. * Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private * Moved friend class xxx definitions to be placed right below private keyword * ChannelDispatchOperation: Emit invalidated with TELEPATHY_QT4_ERROR_OBJECT_REMOVED when ChannelDispatchOperation.Finished is received. * Added/Improved some documentation. Fixes: * ClientApproverAdaptor: Use the dbus fully qualified name to get the connection property (Patch from George Kiagiadakis ). * Fixed bug 20268: Connection's selfContact object should initially have no features. * Fixed bug 20080: KeyFile: ";" as a list may be mis-parsed. * Fixed bug 20082: KeyFile: double (and other types?) not correctly tested. * Fixed bug 20353: No d-pointer in Channel::GroupMemberChangeDetails. * Fixed bug 20033: Contact / ContactList Group integration. telepathy-qt4 0.1.8 (2009-06-16) ================================ The "Every Good Boy Deserves Frontalot" release. New API: * Added PendingChannelRequest class to be used when requesting channels using ChannelDispatcher through Account. * Added Account methods to request/create channels using ChannelDispatcher (ensureTextChat, ensureTextChatroom, ensureMediaCall, createChannel and ensureChannel) Enhancements: * Updated to telepathy-spec 0.17.26 Fixes: * ChannelDispatchOperation: Read Channels property instead of incorrectly reading ChannelDetailsList (Patch from George Kiagiadakis ). telepathy-qt4 0.1.7 (2009-06-02) ================================ The "approver" release. New API: * Added Client Approver support. * Added ChannelDispatchOperation high-level class. Bugfixes: * Fixed bug 21988: Channel does not work properly if the parent connection object is not ready * Fixed bug 21993: TextChannel does not become ready until first message is received if FeatureMessageQueue is enabled. telepathy-qt4 0.1.6 (2009-05-28) ================================ The "So hot, I have a fever" release. New API: * Added Channel::immutableProperties public method. Enhancements: * Added ChannelFactory, internal class to create channels based on their types. * PendingChannel: Use ChannelFactory to create channels. Bugfixes: * Proper define AbstractClientPtr. * ClientRegistrar: Fixed Observer adaptor introspection data. * ClientRegistrar: Use ChannelFactory to create Channels. telepathy-qt4 0.1.5 (2009-05-19) ================================ The "do not look at the conductor" release. New API: * Added Client support (Handler, Observer). * Added ClientRegistrar, class responsible for registering clients and proper exporting their D-Bus interfaces. * Added AbstractClientObserver, AbstractClientApprover (skeleton) and AbstractClientHandler. Clients should inherit one or some combination of these, by using multiple inheritance, and register themselves using ClientRegistrar::registerClient() in order to become a Client. * Added ChannelRequest high-level class. telepathy-qt4 0.1.4 (2009-05-08) ================================ The "global military-industrial complex is subsidising your iPod" release. Dependencies: * Creating accounts, and possibly updating their parameters, now requires an AccountManager implementing telepathy-spec 0.17.24, such as telepathy-mission-control >= 5.0.beta70 (in particular, beta 69 won't work, and the KWallet-based account manager will also need updating) API changes: * Renamed SharedData header file to RefCounted to follow class name. New API: * Update to telepathy-spec 0.17.24, breaking some D-Bus APIs: * fd.o #21619: Account::updateParameters() returns a PendingStringList of the parameters that won't be changed until reconnection takes place * Account::reconnect() added (newer MC versions don't violate telepathy-spec by reconnecting automatically when parameters are changed) * AccountManager::supportedAccountProperties() added * AccountManager::createAccount() takes an optional dict of properties (the valid keys are in supportedAccountProperties()) * Enhance PendingStringList to have a constructor from a QDBusPendingCall Bugfixes: * Don't try to run Python tests unless we have the gobject module (the tests use it) telepathy-qt4 0.1.3 (2009-04-22) ================================ The "what are you scared of?" release. Dependencies: * Full regression tests now require telepathy-glib >= 0.7.28 (telepathy-glib is still optional) API changes: * Namespace simplification: Telepathy::Client::Channel (etc.) are now Tp::Channel, similar to telepathy-glib's TpChannel. Auto-generated client classes like Telepathy::Client::ChannelInterface are now Tp::Client::ChannelInterface. * AccountManager, Account, ConnectionManager, Connection, Channel and Channel subclasses now inherit from Tp::RefCounted and are used together with Tp::SharedPtr/Tp::WeakPtr, shared and weak pointer classes using ideas from Qt, glibmm, Boost and WebKit. The constructor is now protected (in order to support custom classes) and a public create method that returns a SharedPtr was added. This is an attempt to avoid memory leaks as much as possible, see http://lists.freedesktop.org/archives/telepathy/2009-March/003218.html for more details. * Instead of forward-declaring Telepathy::Client::Channel and using a variable of type Telepathy::Client::Channel *, you should now include and use either Tp::ChannelPtr, which is a reference-counted shared pointer, or Tp::WeakPtr, which is the weak counterpart. * Header simplification: the public headers now look like , i.e. without the Client subdirectory. * PendingHandles now finish successfully on non fatal errors (InvalidArgument, InvalidHandle, NotAvailable). PendingHandles::invalidNames/invalidHandles should be used to check if a non-fatal error occurred and some handle could not be acquired. Enhancements: * Updated to telepathy-spec 0.17.23 * TelepathyQt4Farsight is a new mini-library with glue code to connect telepathy-farsight to Telepathy-Qt4. Handlers for streamed media channels with media signalling can #include and pass their Tp::StreamedMediaChannel to Tp::createFarsightChannel, then hook up the resulting TfChannel to a GStreamer pipeline of their choice. * StreamedMediaChannel has a new handlerStreamingRequired method so you can check whether the handler needs to carry out the streaming * fd.o #21336: Channels now indicate whether a message is expected when doing various Group operations * fd.o #21337: Account supports the new HasBeenOnline property Fixes: * fd.o #20583: Contact objects don't work without the Contacts interface. * fd.o #20584: Contact object creation doesn't survive bad IDs or handles. telepathy-qt4 0.1.2 (2009-03-23) ================================ The "robotic automatic hoover" release. Dependencies: * Full regression tests now require telepathy-glib >= 0.7.27 (telepathy-glib is still optional) * telepathy-farsight >= 0.0.4 is a new optional dependency API changes: * AccountManager, Account, ConnectionManager, Connection, Channel now inherit QSharedData and are used together with QExplicitlySharedDataPointer. This is needed so we can create shared pointers based on the object itself, instead of doing hacks to find the shared pointer related to a given object. See http://lists.freedesktop.org/archives/telepathy/2009-March/003168.html for more details. * Channel Features are now Feature objects, not integers * The Feature class is now in its own header, Enhancements: * The skeletal StreamedMediaChannel class from 0.1.0 has been expanded to cover all the functionality of the Telepathy StreamedMedia interface * PendingConnection, PendingAccount etc. have busName and objectPath methods where necessary, so that objects of custom classes can be constructed * Features can now be considered critical, meaning that failure to set them up leads to failure of becomeReady() - this should only be used for features that should never fail unless the service is buggy, like Connection and Channel core functionality * examples/call/ is an example of how to use StreamedMediaChannel, which can make and receive XMPP Jingle calls using telepathy-gabble (this feature requires telepathy-farsight and GStreamer) Fixes: * When introspection of a Feature fails, the D-Bus error is propagated as the failure reason of becomeReady() * Fix a memory leak in TextChannel telepathy-qt4 0.1.1 (2009-03-05) ================================ The "PresencePublicationAuthorizationRequestRejection" release. API changes: * PendingReadyAccount, PendingReadyAccountManager, PendingReadyConnection, PendingReadyConnectionManager have all been replaced by the PendingReady class * Account, AccountManager, Connection and ConnectionManager features are now QSet, not bitfields * Plural contacts are generally represented by a QSet > instead of a QList > (with a new typedef, Telepathy::Client::Contacts, which must be used in signal/slot connections) Enhancements: * Added Connection::FeatureRoster, which, when enabled, adds contact list (a.k.a. roster/buddy list) functionality to the ContactManager and Contact objects * Improved maintainability of Account, AccountManager, Connection and ConnectionManager becoming ready * A QSharedPointer is now hashable with qHash, meaning contacts can be QSet or QHash members * Added a trivial contact list user interface, examples/roster/roster Fixes: * The client library no longer attempts to enforce group add/remove flags: whatever change the user requests is passed on to the connection manager (which might reject it) * PendingReady objects returned by Connection::becomeReady() have the Connection as parent, rather than an internal object that isn't useful to library users telepathy-qt4 0.1.0 (2009-02-26) ================================ The "pending operation" release. This first release of telepathy-qt4 features high-level API for the following: * Manipulating accounts on a Telepathy AccountManager implementation as described by telepathy-spec 0.17.x, such as Mission Control 5 (beta versions currently available) * Manipulating Telepathy connection managers via the ConnectionManager and Connection core API * Setting your own presence on a connection manager supporting the SimplePresence interface * Requesting channels from a connection manager supporting the Requests interface * Reading contacts' aliases etc. on a connection manager supporting the Contacts interface * Sending and receiving messages on Text channels, with or without the Messages interface In addition, lower-level auto-generated accessors are provided for all the functionality of telepathy-spec version 0.17.19. Notable functionality that is currently missing, but will be added soon, includes: * Manipulating a server-stored contact list * Controlling VoIP calls in StreamedMedia channels /* ex: set textwidth=80: */ telepathy-qt-0.9.6.1/spec/0000755000175100017520000000000012530423576016654 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/spec/Channel_Interface_File_Transfer_Metadata.xml0000644000175100017520000001062112530423576027331 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface exists to provide a mechanism to include arbitrary additional information in file transfers. For example, one might want to send a document and include the number of times the character P appeared in the file, so would add NumberOfPs=42 to the Metadata property.

ServiceName living in its own property makes it easier for specific applications to send files to each other, bypassing the standard handler. For example, the Banshee Telepathy plugin handler could match on ServiceName so the Empathy file transfer is not used instead.

A string representing the service name that will be used over the file transfer channel. This property is equivalent to the Channel.Type.DBusTube.ServiceName and Channel.Type.StreamTube.Service properties. If no service name is given then this property will be the empty string.

Additional information about the file transfer set by the channel initiator. If no additional information is given then this property will be empty.

A mapping from string key to a list of strings, used in the Metadata property. To emulate a simple string → string hash table one should have exactly one member in the value string list. This property is an a{sas} primarily because this maps easily to XEP-0004 Data Forms, and allows more structured metadata than a{ss} would. (For instance, a list of RDF triples could be expressed as one long array of strings, or as three-element values for a series of dummy key names, rather than as one big string blob.) While it might be convenient for applications to allow keys of arbitrary types, the added convenience would be outweighed by having to define the XMPP representation
telepathy-qt-0.9.6.1/spec/Channel_Type_Streamed_Media.xml0000644000175100017520000012014312530423576024673 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

An audio stream A video stream The stream is disconnected. The stream is trying to connect. The stream is connected. Media are not being sent or received Media are being sent, but not received Media are being received, but not sent Media are being sent and received The local user has been asked to send media by the remote user. Call RequestStreamDirection to indicate whether or not this is acceptable. The remote user has been asked to send media by the local user. The StreamDirectionChanged signal will be emitted when the remote user accepts or rejects this change.

An unsigned integer identifying a stream within a channel.

An array of structs containing:
  • the stream identifier
  • the contact handle who the stream is with (or 0 if the stream represents more than a single member)
  • the type of the stream
  • the current stream state
  • the current direction of the stream
  • the current pending send flags
Returns an array of structs representing the streams currently active within this channel. Each stream is identified by an unsigned integer which is unique for each stream within the channel.
An array of stream identifiers (as defined in ListStreams)

Request that the given streams are removed. If all streams are removed, the channel MAY close.

Clients SHOULD NOT attempt to terminate calls by removing all the streams; instead, clients SHOULD terminate calls by removing the Group.SelfHandle from the channel, using either RemoveMembers or RemoveMembersWithReason.

A stream identifier is unknown
The stream identifier (as defined in ListStreams) The desired stream direction (a value of MediaStreamDirection)

Request a change in the direction of an existing stream. In particular, this might be useful to stop sending media of a particular type, or inform the peer that you are no longer using media that is being sent to you.

Depending on the protocol, streams which are no longer sending in either direction should be removed and a StreamRemoved signal emitted. Some direction changes can be enforced locally (for example, BIDIRECTIONAL -> RECEIVE can be achieved by merely stopping sending), others may not be possible on some protocols, and some need agreement from the remote end. In this case, the MEDIA_STREAM_PENDING_REMOTE_SEND flag will be set in the StreamDirectionChanged signal, and the signal emitted again without the flag to indicate the resulting direction when the remote end has accepted or rejected the change.

A stream identifier is unknown The requested direction is not available on this stream
A contact handle with whom to establish the streams An array of stream types (values of MediaStreamType) An array of structs (in the same order as the given stream types) containing:
  • the stream identifier
  • the contact handle who the stream is with (or 0 if the stream represents more than a single member)
  • the type of the stream
  • the current stream state
  • the current direction of the stream
  • the current pending send flags

Request that streams be established to exchange the given types of media with the given member. In general this will try and establish a bidirectional stream, but on some protocols it may not be possible to indicate to the peer that you would like to receive media, so a send-only stream will be created initially. In the cases where the stream requires remote agreement (eg you wish to receive media from them), the StreamDirectionChanged signal will be emitted with the MEDIA_STREAM_PENDING_REMOTE_SEND flag set, and the signal emitted again with the flag cleared when the remote end has replied.

If streams of the requested types already exist, calling this method results in the creation of additional streams. Accordingly, clients wishing to have exactly one audio stream or exactly one video stream SHOULD check for the current streams using ListStreams before calling this method.

It is valid to use a handle which is neither a current nor pending member in this channel's Group interface. If so, that handle will be added to the remote-pending set only when an attempt has actually been made to contact them. For further call-state notification, use the CallState interface, if supported. This usage was not allowed in spec versions below 0.17.2.

A stream type given is invalid. A stream type given is not implemented by the connection manager. Since 0.17.23, connection managers SHOULD raise this error in preference to InvalidArgument. Connection managers can't know whether an unknown number is a valid stream type that was introduced in a later spec version. That contact's client does not implement one of the given stream types. For this method, clients SHOULD consider this error and NotCapable to be equivalent. That contact's client does not implement one of the given stream types. Since 0.17.23, connection managers SHOULD raise this in preference to NotAvailable.
The stream identifier (as defined in ListStreams) The contact handle who the stream is with (or 0 if it represents more than a single member) The stream type (a value from MediaStreamType)

Emitted when a new stream has been added to this channel. Clients SHOULD assume that the stream's Media_Stream_State is initially Disconnected.

If a connection manager needs to represent the addition of a stream whose state is already Connecting or Connected, it MUST do this by emitting StreamAdded, closely followed by StreamStateChanged indicating a change to the appropriate state.

Historically, it was not clear from the StreamAdded signal what the state of the stream was. telepathy-spec 0.17.22 clarified this.

Similarly, clients SHOULD assume that the initial Media_Stream_Direction of a newly added stream is Receive, and that the initial Media_Stream_Pending_Send is Pending_Local_Send.

If a connection manager needs to represent the addition of a stream whose direction or pending-send differs from those initial values, it MUST do so by emitting StreamAdded, closely followed by StreamDirectionChanged indicating a change to the appropriate direction and pending-send state.

StreamAdded doesn't itself indicate the stream's direction; this is unfortunate, but is preserved for compatibility.

This is the appropriate direction for streams added by a remote contact on existing connection managers, and does not violate user privacy by automatically sending audio or video (audio streams start off muted, video streams start off not sending). For streams added by the local user using the client receiving the signal, the true direction can also be determined from the return value of the RequestStreams method.

Existing clients typically operate by maintaining a separate idea of the directions that they would like the streams to have, and enforcing these intended directions by calling RequestStreamDirection whenever needed.

The stream identifier (as defined in ListStreams) The new stream direction (as defined in ListStreams) The new pending send flags (as defined in ListStreams)

Emitted when the direction or pending flags of a stream are changed.

If the MEDIA_STREAM_PENDING_LOCAL_SEND flag is set, the remote user has requested that we begin sending on this stream. RequestStreamDirection should be called to indicate whether or not this change is acceptable.

This allows for a MSN-style user interface, "Fred has asked you to enable your webcam. (Accept | Reject)", if desired.

The stream identifier (as defined in ListStreams) A stream error number, one of the values of MediaStreamError A string describing the error (for debugging purposes only) Emitted when a stream encounters an error. stream_id - the stream identifier (as defined in ListStreams) Emitted when a stream has been removed from this channel. The stream identifier (as defined in ListStreams) The new stream state (as defined in ListStreams) Emitted when a member's stream's state changes.

If set to true in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call RequestStreams.

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If true on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If true on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by ListStreams).

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. NewChannels signals.

This reduces D-Bus round trips.

Connection managers capable of signalling audio calls to contacts SHOULD include a channel class in RequestableChannelClasses with ChannelType = StreamedMedia and TargetHandleType = Contact in the fixed properties dictionary, and InitialAudio (and also InitialVideo, if applicable) in the allowed properties list. Clients wishing to discover whether a connection manager can signal audio and/or video calls SHOULD use this information.

Not all protocols support signalling video calls, and it would be possible (although unlikely) to have a protocol where only video, and not audio, could be signalled.

Connection managers that support the ContactCapabilities interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = StreamedMedia in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling UpdateCapabilities (clients of a ChannelDispatcher SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their HandlerChannelFilter properties):

  • { ChannelType = StreamedMedia }
  • { ChannelType = StreamedMedia, InitialAudio = true } if receiving calls with audio is supported
  • { ChannelType = StreamedMedia, InitialVideo = true } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

The same as InitialAudio, but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is false, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

If True, once streams have been requested for this channel (either by setting InitialAudio or InitialVideo when the channel is requested, or by calling RequestStreams on a channel with no streams), a stream of a different content type cannot be added; subsequent calls to RequestStreams that attempt to do so will fail.

If this property is missing, clients SHOULD assume that it is false, and thus that the channel's streams can be changed once the call has started.

If this property is present in the "allowed" set in all of the StreamedMedia entries in a contact's capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call" button with the option to add and remove video once the call has started for contacts without this flag.

This property is immutable, and therefore SHOULD be announced in NewChannels, etc.

A channel that can send and receive streamed media such as audio or video. Provides a number of methods for listing and requesting new streams, and signals to indicate when streams have been added, removed and changed status. The state of the call (ringing remotely, ringing locally, answered, missed, etc.) are represented using the properties and signals of the Group interface.

In general this should be used in conjunction with the MediaSignalling interface to exchange connection candidates and codec choices with whichever component is responsible for the streams. However, in certain applications where no candidate exchange is necessary (eg the streams are handled by specialised hardware which is controlled directly by the connection manager), the signalling interface can be omitted and this channel type used simply to control the streams.

Outgoing calls

To make an audio-only call to a contact foo@example.com, clients should call:

CreateChannel({
  ChannelType: StreamedMedia,
  TargetHandleType: Contact,
  TargetID: 'foo@example.com',
  InitialAudio: True,
)

As always, TargetHandle may be used in place of TargetID if the contact's handle is already known. To make an audio-and-video call, the client should also specify InitialVideo. The connection manager SHOULD return a channel whose immutable properties contain the local user as the InitiatorHandle, the remote contact as the TargetHandle, Requested = True (indicating that the call is outgoing); the Group interface should initially have the local user in Members and the remote contact in RemotePendingMembers, to indicate that we are awaiting their response.

The contact answering the call is represented by the CM signalling MembersChanged, moving the remote contact to Members, with the remote contact as the Actor and Reason None. The contact rejecting the call is represented by both contacts being removed from the group, with the remote contact as the Actor and Reason set appropriately. The local user may hang up at any time by calling RemoveMembersWithReason to remove themself, with an appropriate reason; the CM SHOULD relay the reason to the remote contact, and emit MembersChanged removing both contacts from the group with the self handle as the Actor.

(In the past, several other patterns have been used to place outgoing calls; see 'Requesting StreamedMedia Channels' on the Telepathy wiki for the details.)

Incoming calls

Incoming calls' immutable properties should contain TargetHandleType = Contact, both TargetHandle and InitiatorHandle set to the remote contact, Requested = False (indicating that this is an incoming call), and appropriate values of InitialAudio and InitialVideo; the Group interface should initially have the local user in LocalPendingMembers and the remote contact in Members, indicating that the contact is awaiting our response.

To accept the call, use AddMembers to move the local user to the group's members. To reject the call, use RemoveMembersWithReason to remove the local member from the group, with an appropriate reason. If the remote user ends the call before it is answered, this is represented by MembersChanged removing both parties from the group with the remote contact as the Actor, and Reason set appropriately.

Note that the call may end with the self handle as the Actor without the user having chosen to reject the call, as indicated by the nature of the Reason. Specifically, some local component may time out the call (indicating this with reason No_Answer; for example, the CM may have forwarded the call to another number, as configured using Forwarding.DRAFT), or something may have gone wrong with the call (indicated by reason Error). Such calls SHOULD be considered missed, just as if the remote contact had hung up before the local user answered the call.

This is a bit awkward, but these are the best ways we can represent these situations. It's important to document which calls should be considered missed, to ensure that the user can be notified.

When the local user accepts an incoming call, the connection manager SHOULD change the direction of any streams with pending local send to be sending, without altering whether those streams are receiving.

This matches existing practice, and means that a client can answer incoming calls and get an unmuted microphone/activated webcam without having to take additional action to accept the stream directions.

It does, however, introduce a race condition: a client believing that it is accepting an audio-only call by calling AddMembers can inadvertantly accept an audio + video call (and hence activate sending from a webcam without the user's permission) if a video stream is added just before AddMembers is processed. This race should be removed when this specification is revised.

During a call

If ImmutableStreams is False, new streams may be requested using RequestStreams (to add video to an audio-only call, for instance), and existing streams may be removed using RemoveStreams (for example, to downgrade an audio-video call to audio-only). The call may be ended by calling RemoveMembers or RemoveMembersWithReason; the call ending is signalled by the CM emitting MembersChanged, removing both parties from the group.

Handler filters

For historical reasons, handlers must specify more than one filter if they want to correctly advertise support for audio and/or video calls. If they can handle channels using the MediaSignalling interface, they should also advertise various Handler_Capability_Tokens to indicate which codecs and transports they support. See InitialAudio and MediaSignalling/video/h264 for the gory details. In summary:

To advertise support for streamed media in general, include the following filter in HandlerChannelFilter:
{ '...Channel.ChannelType': '...Channel.Type.StreamedMedia' ,
  '...Channel.TargetHandleType': Contact,
}
To advertise support for audio calls, also include the following filter:
{ '...Channel.ChannelType': '...Channel.Type.StreamedMedia' ,
  '...Channel.TargetHandleType': Contact,
  '...Channel.Type.StreamedMedia.InitialAudio': True,
}
To advertise support for video calls, also include the following filter:
{ '...Channel.ChannelType': '...Channel.Type.StreamedMedia' ,
  '...Channel.TargetHandleType': Contact,
  '...Channel.Type.StreamedMedia.InitialVideo': True,
}
If you use telepathy-farsight, and have H.264 support, you probably want these Capabilities:
[ "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/ice-udp",
  "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/gtalk-p2p",
  "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/h264",
]
The channel-type-specific capability flags used for Channel.Type.StreamedMedia in the Connection.Interface.Capabilities interface. See the InitialAudio property for details of the mechanisms that will replace this. The handle is capable of using audio streams within a media channel. The handle is capable of using video streams within a media channel. The handle is capable of performing STUN to traverse NATs. The handle is capable of establishing Google Talk peer-to-peer connections (as implemented in libjingle 0.3) to traverse NATs. The handle is capable of establishing ICE UDP peer-to-peer connections (as defined by the IETF MMUSIC working group) to traverse NATs. Channels whose target handle is this contact will have ImmutableStreams = True.
telepathy-qt-0.9.6.1/spec/generic-types.xml0000644000175100017520000002155212530423576022161 0ustar00kaffeinekaffeine00000000000000 An unsigned 32-bit integer representing time as the number of seconds elapsed since the Unix epoch (1970-01-01T00:00:00Z) An signed 64-bit integer representing time as the number of seconds elapsed since the Unix epoch (1970-01-01T00:00:00Z); negative for times before the epoch The Text interface is the only user of Unix_Timestamp so far, and we'd like to be Y2038 compatible in future interfaces. A string representing a D-Bus bus name - either a well-known name like "org.freedesktop.Telepathy.MissionControl" or a unique name like ":1.123" A string representing a D-Bus well-known name like "org.freedesktop.Telepathy.MissionControl". A string representing a D-Bus unique name, such as ":1.123" An ASCII string representing a D-Bus interface - two or more elements separated by dots, where each element is a non-empty string of ASCII letters, digits and underscores, not starting with a digit. The maximum total length is 255 characters. For example, "org.freedesktop.DBus.Peer". An ASCII string representing a D-Bus error. This is syntactically the same as a DBus_Interface, but the meaning is different. A string representing a D-Bus signature (the 'g' type isn't used because of poor interoperability, particularly with dbus-glib) An ASCII string representing a D-Bus method, signal or property name - a non-empty string of ASCII letters, digits and underscores, not starting with a digit, with a maximum length of 255 characters. For example, "Ping". A string representing the full name of a D-Bus method, signal or property, consisting of a DBus_Interface, followed by a dot, followed by a DBus_Member. For example, "org.freedesktop.DBus.Peer.Ping". A mapping from strings representing D-Bus properties (by their namespaced names) to their values. A D-Bus interface name, followed by a dot and a D-Bus property name. The value of the property. A mapping from strings to variants representing extra key-value pairs. A mapping from strings to strings representing extra key-value pairs. An IP address and port. Either a dotted-quad IPv4 address literal as for Socket_Address_IPv4, or an RFC2373 IPv6 address as for Socket_Address_IPv6. The TCP or UDP port number. An IPv4 address and port. A dotted-quad IPv4 address literal: four ASCII decimal numbers, each between 0 and 255 inclusive, e.g. "192.168.0.1". The TCP or UDP port number. An IPv6 address and port. An IPv6 address literal as specified by RFC2373 section 2.2, e.g. "2001:DB8::8:800:200C:4171". The TCP or UDP port number. An IPv4 network or subnet. A dotted-quad IPv4 address literal: four ASCII decimal numbers, each between 0 and 255 inclusive, e.g. "192.168.0.1". The number of leading bits of the address that must match, for this netmask to be considered to match an address. An IPv6 network or subnet. An IPv6 address literal as specified by RFC2373 section 2.2, e.g. "2001:DB8::8:800:200C:4171". The number of leading bits of the address that must match, for this netmask to be considered to match an address.

The time at which an user action occurred. This type has the 2 following special values:

0: the action doesn't involve any user action. Clients SHOULD avoid stealing focus when presenting the channel.

MAX_INT64: clients SHOULD behave as though the user action happened at the current time, e.g. a client MAY request that its window gains focus.

This can be used by clients that can't know the X server time like command line applications for example.

For all the other values it corresponds to the time of the user action. Clients SHOULD use this for focus-stealing prevention, if applicable. Note that the time is dependant on the local environment and so is not necessarily a wall-clock time. For example in an X environment it's expected to be the X timestamp of events. This corresponds to the _NET_WM_USER_TIME property in EWMH.

A mapping from object path to the immutable properties of the object. The object path of an object The immutable properties of the object A language tag as defined in IETF BCP 47, such as "en_US".
telepathy-qt-0.9.6.1/spec/Channel_Type_Server_Authentication.xml0000644000175100017520000001372012530423576026337 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

The type for a channel representing an authentication step with the server. The actual authentication functionality is implemented by the additional interface named in AuthenticationMethod, such as Channel.Interface.SASLAuthentication.

Future authentication steps also supported by this channel type might include solving a captcha and/or agreeing to an EULA or terms-of-use document; each of these would be represented by a channel with this type, but a different AuthenticationMethod.

Channels of this type will normally be be signalled and dispatched while the Connection owning them is in the CONNECTING state. They MAY also appear on a Connection in the CONNECTED state, for instance if periodic re-authentication is required.

Normally, only one channel of this type will exist on a given Connection; if there is more than one, the handler must complete authentication with each of them in turn.

Channels of this type cannot be requested with methods such as CreateChannel. They always have Requested = False, TargetHandleType = None and TargetHandle = 0.

While it is CONNECTING, the Connection MUST NOT proceed with connection, or signal StatusChanged to the CONNECTED state, until each channel of this type has either been accepted as having a positive result (for instance, on SASL channels this is done with the AcceptSASL method), or closed with the Close method.

ServerAuthentication channels normally represent the client authenticating itself to the server, but can also be used for the server to authenticate itself to the client (i.e. prove that it is in fact the desired server and not an imposter). Until the authentication handler has confirmed this, connection should not continue.

If a channel of this type is closed with the Close method before authentication has succeeded, this indicates that the Handler has given up its attempts to authenticate or that no Handler is available.

If this occurs, the connection manager MAY attempt to continue connection (for instance, performing SASL authentication by using any credentials passed to RequestConnection, for instance from the Account.Parameters). If this fails or has already been tried, the Connection will disconnect.

In particular, the ChannelDispatcher will close the channel if it cannot find a handler.

When the connection is done with the channel and it is no longer needed, it is left open until either the connection state turns to DISCONNECTED or the handler closes the channel. The channel SHOULD NOT close itself once finished with.

This property defines the method used for the authentication step represented by this channel, which MUST be one of this channel's Interfaces.

The initially-defined interface that can be used here is Channel.Interface.SASLAuthentication.

telepathy-qt-0.9.6.1/spec/Properties_Interface.xml0000644000175100017520000002164512530423576023522 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2007 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

All uses of this interface have been expunged, and it may now be laid to rest. A struct (property ID, property name, D-Bus signature, flags) representing a property, as returned by ListProperties on the Properties interface. A struct (property ID, flags) representing a change to a property's flags, as seen in the PropertyFlagsChanged signal on the Properties interface. An unsigned integer used to represent a Telepathy property. A struct (property ID, value) representing a property's value, as seen in the PropertiesChanged signal on the Properties interface, returned by the GetProperties method and passed to the SetProperties method. Returns an array of (identifier, value) pairs containing the current values of the given properties. An array of property identifiers

An array of structs containing:

  • integer identifiers
  • variant boxed values
Some property identifier requested is invalid Some property requested does not have the PROPERTY_FLAG_READ flag
Returns a dictionary of the properties available on this channel. An array of structs containing:
  • an integer identifier
  • a string property name
  • a string representing the D-Bus signature of this property
  • a bitwise OR of the flags applicable to this property
Emitted when the value of readable properties has changed.

An array of structs containing:

  • integer identifiers
  • variant boxed values

The array should contain only properties whose values have actually changed.

Emitted when the flags of some room properties have changed.

An array of structs containing:

  • integer identifiers
  • a bitwise OR of the current flags

The array should contain only properties whose flags have actually changed.

Takes an array of (identifier, value) pairs containing desired values to set the given properties. In the case of any errors, no properties will be changed. When the changes have been acknowledged by the server, the PropertiesChanged signal will be emitted.

All properties given must have the PROPERTY_FLAG_WRITE flag, or PermissionDenied will be returned. If any variants are of the wrong type, NotAvailable will be returned. If any given property identifiers are invalid, InvalidArgument will be returned.

An array mapping integer property identifiers to boxed values

Interface for channels and other objects, to allow querying and setting properties. ListProperties returns which properties are valid for the given channel, including their type, and an integer handle used to refer to them in GetProperties, SetProperties, and the PropertiesChanged signal. The values are represented by D-Bus variant types, and are accompanied by flags indicating whether or not the property is readable or writable.

Each property also has a flags value to indicate what methods are available. This is a bitwise OR of PropertyFlags values.

The property can be read The property can be written
telepathy-qt-0.9.6.1/spec/Connection_Interface_Contacts.xml0000644000175100017520000002522312530423576025317 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2008 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface allows many attributes of many contacts to be obtained in a single D-Bus round trip.

Each contact attribute has an string identifier (Contact_Attribute), which is namespaced by the D-Bus interface which defines it.

A DBus_Interface, followed by a slash '/' character and an identifier for an attribute defined by that interface. The attribute identifier SHOULD be in lower case. These aren't D-Bus core Properties, and we want them to look visibly different. Some of the attributes of a single contact. The name of the attribute The value of the attribute Mapping returned by GetContactAttributes, representing a collection of Contacts and their requested attributes. A contact Attributes of that contact A list of D-Bus interfaces for which GetContactAttributes is expected to work. This cannot change during the lifetime of the Connection. Return any number of contact attributes for the given handles. An array of handles representing contacts.

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Connection managers SHOULD ignore interfaces requested which they do not support (i.e. those not mentioned in the ContactAttributeInterfaces property.)

This simplifies client-side code. Clients which care may distinguish between unsupported interfaces (e.g. this Connection does not support Avatars), and interfaces on which no information is known for these contacts (e.g. we don't know the avatar tokens of any of the contacts, so we omitted them all) by inspecting ContactAttributeInterfaces.

Attributes from the interface org.freedesktop.Telepathy.Connection are always returned, and need not be requested explicitly.

As well as returning cached information immediately, the connection MAY start asynchronous requests to obtain better values for the contact attributes. If better values are later obtained by this process, they will be indicated with the usual signals (such as AliasesChanged).

For instance, an XMPP connection manager could download vCards in response to a request for Aliasing attributes.
requesting information for interfaces not mentioned in ContactAttributeInterfaces is no longer an error. Be aware that older connection managers may still consider this an error.

If true, all handles that appear as keys in the result have been held on behalf of the calling process, as if by a call to Connection.HoldHandles. (If HasImmortalHandles is true, which SHOULD be the case in all new connection managers, this has no effect.)

For further round-trip avoidance.

A dictionary mapping the contact handles to contact attributes. If any of the requested handles are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

Return any number of contact attributes for the given identifier. This is for a single identifier to make it simpler to use for the most common use case. For multiple contacts case, GetContactAttributes should be used. An identifier representing a contact.

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

See GetContactAttributes for details.

The contact's handle, as returned by RequestHandles

All supported attributes of the contact on the given interfaces that can be returned without network round-trips. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

The contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

telepathy-qt-0.9.6.1/spec/Channel_Type_Room_List.xml0000644000175100017520000001717712530423576023753 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

For protocols with a concept of chatrooms on multiple servers with different DNS names (like XMPP), the DNS name of the server whose rooms are listed by this channel, e.g. "conference.jabber.org". Otherwise, the empty string.

This property cannot change during the lifetime of the channel.

A boolean indicating if room listing is in progress Check to see if there is already a room list request in progress on this channel. An array of structs containing:
  • an integer room handle
  • a string representing the D-Bus interface name of the channel type
  • a dictionary mapping string keys to variant boxed information

Emitted when information about rooms on the server becomes available. The array contains the room handle (as can be passed to the RequestChannel method with HANDLE_TYPE_ROOM), the channel type, and a dictionary containing further information about the room as available. The following well-known keys and types are recommended for use where appropriate:

handle-name (s)
The identifier of the room (as would be returned by InspectHandles). This property is mandatory.
name (s)
The human-readable name of the room if different from the handle
description (s)
A description of the room's overall purpose
subject (s)
The current subject of conversation in the room (as would be returned by getting the string part of the Subject property)
members (u)
The number of members in the room
password (b)
True if the room requires a password to enter
invite-only (b)
True if you cannot join the room, but must be invited
room-id (s)
The human-readable identifier of a chat room (as would be returned by getting the RoomName property)
server (s)
The DNS name of the server hosting these channels (as would be returned by getting the Server property)
Request the list of rooms from the server. The ListingRooms (True) signal should be emitted when this request is being processed, GotRooms when any room information is received, and ListingRooms (False) when the request is complete. Stop the room listing if it's in progress, but don't close the channel. The ListingRooms (False) signal should be emitted when the listing stops. A boolean indicating if room listing is in progress Emitted to indicate whether or not room listing request is currently in progress.

A channel type for listing named channels available on the server. Once the ListRooms method is called, it emits signals for rooms present on the server, until you Close this channel. In some cases, it may not be possible to stop the deluge of information from the server. This channel should be closed when the room information is no longer being displayed, so that the room handles can be freed.

This channel type may be implemented as a singleton on some protocols, so clients should be prepared for the eventuality that they are given a channel that is already in the middle of listing channels. The ListingRooms signal, or GetListingRooms method, can be used to check this.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Contact_List.xml0000644000175100017520000014600312530423576026127 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for connections that have any concept of a list of known contacts (roster, buddy list, friends list etc.)

On many protocols, there's a server-side roster (as in XMPP), or a set of server-side lists that can be combined to form a roster (as in MSN).

In some protocols (like link-local XMPP), while there might not be any server or roster, it's possible to list "nearby" contacts.

In Telepathy 0.20 and older, we represented contact lists as a collection of ContactList channels. This is remarkably difficult to work with in practice - every client that cares about contact lists has to take the union of some hard-to-define set of these channels - and conflicts with the idea that channels that cannot be dispatched to a handler should be closed.

The list of contacts is not exposed as a D-Bus property; it can be fetched using GetContactListAttributes.

In some protocols, such as XMPP, the contact list may not be available immediately. The GetContactListAttributes method will fail until the contact list is available. Using a method also allows extra attributes to be retrieved at the same time.

The progress made in retrieving the contact list. The connection has not started to retrieve the contact list. If GetContactListAttributes is called in this state, it will raise NotYet. The connection has started to retrieve the contact list, but has not yet succeeded or failed. If GetContactListAttributes is called in this state, it will raise NotYet.

The connection has tried and failed to retrieve the contact list. If GetContactListAttributes is called in this state, it will immediately raise an error indicating the reason for failure.

The connection manager SHOULD try again to obtain the contact list, if appropriate for the protocol. If it succeeds later, the ContactListState MUST advance to Success.

The connection has successfully retrieved the contact list. If GetContactListAttributes is called in this state, it will return successfully.
The progress made in retrieving the contact list. Change notification is via ContactListStateChanged. Emitted when ContactListState changes. The new value of ContactListState.

Return some contact attributes for a list of contacts associated with the user. This list MUST include at least:

  • all contacts whose subscribe attribute is not No
  • all contacts whose publish attribute is not No

but MAY contain other contacts.

For instance, on XMPP, all contacts on the roster would appear here even if they have subscription="none", unless there's reason to believe the user does not want to see them (such as having been blocked).

This list does not need to contain every visible contact: for instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear here. Blocked contacts SHOULD NOT appear here, unless they still have a non-No subscribe or publish attribute for some reason.

It's reasonable to assume that blocked contacts should not be visible to the user unless they specifically go looking for them, at least in protocols like XMPP where blocking a contact suppresses presence.

A list of strings indicating which D-Bus interfaces the calling process is interested in. Equivalent to the corresponding argument to GetContactAttributes, except that if this list does not contain the ContactList interface itself, it is treated as though that interface was also requested.

If true, all handles that appear as keys in the result have been held on behalf of the calling process, as if by a call to Connection.HoldHandles. (If HasImmortalHandles is true, which SHOULD be the case in all new connection managers, this has no effect.)

A dictionary mapping the contact handles to contact attributes, equivalent to the result of GetContactAttributes.

The ContactListState is None or Waiting. In particular, this error is raised if the Status is not yet Connection_Status_Connected.

An enumeration indicating whether presence subscription is denied, denied but pending permission, or allowed. The exact semantics vary according to where this type is used: see the subscribe and publish contact attributes for details.

The presence subscription state is unknown. Presence information cannot be seen, and either the subscription state Removed_Remotely does not apply, or it is not known whether that state applies. Presence information cannot be seen because the remote contact took action: either the local user's request to see the remote contact's presence was denied, or the remote contact requested to see the local user's presence but then cancelled their request. Presence information cannot be seen. Permission to see presence information has been requested, and the request has not yet been declined or accepted. Presence information can be seen.

If this attribute on a contact is Yes, this connection can expect to receive their presence, along with any other information that has the same access control.

This is subscription="from" or subscription="both" in XMPP, the "forward list" on MSN, or the contact being "added to the local user's buddy list" in ICQ, for example.

If this attribute is not Yes, the local user cannot generally expect to receive presence from this contact. Their presence status as returned by GetPresences is likely to be (Unknown, "unknown", ""), unless the local user can temporarily see their presence for some other reason (for instance, on XMPP, contacts seen in chatrooms will temporarily have available presence).

If this attribute is Ask, this indicates that the local user has asked to receive the contact's presence at some time. It is implementation-dependent whether contacts' subscribe attributes can remain set to Ask, or are reset to No, when the connection disconnects.

Some protocols store the fact that we wishes to see a contact's presence; on these protocols, this attribute can remain Ask indefinitely. On other protocols, only contacts who have been asked during the current session will ever have Ask status.

If this attribute is Removed_Remotely, this indicates that the local user has asked to receive the contact's presence at some time, but the remote contact has rejected that request, and a local user interface has not yet acknowledged this. It is implementation-dependent whether contacts' subscribe attributes can remain set to Removed_Remotely, or are reset to No, when the connection disconnects.

After notifying the user, user interfaces MAY acknowledge a change to subscribe=Removed_Remotely by calling either Unsubscribe or RemoveContacts, which will set subscribe to No (and perhaps remove the contact). This allows user interfaces to detect that the user has been notified about the rejected request.

This attribute's value will be Unknown or omitted until the ContactListState has changed to Success.

If this attribute on a contact is Yes, the local user's presence is published to that contact, along with any other information that shares an access-control mechanism with presence (depending on protocol, server configuration and/or user configuration, this may include avatars, "rich presence" such as location, etc.).

This is subscription="to" or subscription="both" in XMPP, the "reverse list" on MSN, or the state of "being added to the contact's buddy list" in ICQ, for example.

If this attribute is not Yes, the local user's presence is not published to that contact; however, if it is Ask, the contact has requested that the local user's presence is made available to them.

It is implementation-dependent whether contacts' publish attributes can remain set to Ask, or are reset to No, when the connection disconnects.

Some protocols store the fact that a contact wishes to see our presence; on these protocols, this attribute can remain Ask indefinitely. On other protocols, only contacts who have asked during the current session will ever have Ask status.

If this attribute is Removed_Remotely, this indicates that the remote contact has asked to receive the user's presence at some time, but has then cancelled that request before a response was given by the local user. User interfaces MAY reset publish from Removed_Remotely to No, by calling either Unpublish or RemoveContacts.

If multiple factors affect whether a contact can receive the local user's presence, this attribute SHOULD reflect the overall result. For instance, an XMPP contact with subscription="to" or subscription="both", but who has been blocked via XEP-0016 Privacy Lists, SHOULD have publish=No.

This attribute's value will be Unknown or omitted until the ContactListState has changed to Success.

If the publish attribute is Ask, an optional message that was sent by the contact asking to receive the local user's presence; omitted if none was given.

If the contact asking to receive our presence is also using Telepathy, this is the message they supplied as the Message argument to RequestSubscription.

Otherwise, this SHOULD be omitted.

This attribute will also be omitted until the ContactListState has changed to Success.

If true, presence subscriptions (in both directions) on this connection are stored by the server or other infrastructure.

XMPP, MSN, ICQ, etc. all behave like this.

If false, presence subscriptions on this connection are not stored.

In SIMPLE (SIP), clients are expected to keep a record of subscriptions, as described below. In link-local XMPP, subscriptions are implicit (everyone on the local network receives presence from everyone else) so nothing is ever stored.

If CanChangeContactList is true, Telepathy clients (e.g. user interfaces or address books) MAY keep a record of permission to publish and requests to subscribe locally, and attempt to restore it for each Connection. If ContactListPersists is false, clients MAY do this for all contacts; if ContactListPersists is true, clients SHOULD NOT change the state of contacts that were not changed locally.

In SIMPLE (SIP), ContactListPersists is false, but CanChangeContactList is true. Presence will not be received unless clients renew any subscriptions they have for each connection, in the way described. There is no server-side storage, so clients have no alternative but to maintain independent contact lists.

In protocols like XMPP and MSN, it may be useful for clients to queue up subscription requests or removals made while offline and process them next time the connection is online. However, clients should only replay the changes, rather than resetting the contact list to match a stored copy, to avoid overwriting changes that were made on the server.

Clients that replay requests like this SHOULD do so by calling AuthorizePublication to pre-approve publication of presence to the appropriate contacts, followed by RequestSubscription to request the appropriate contacts' presences.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Values of this enumeration indicate the extent to which metadata such as aliases and group memberships can be stored for the contacts on a particular connection.

On some protocols, certain metadata (for instance, contact aliases) can only be stored for contacts on the contact list, or contacts with a particular contact list state.

To make it easier to deal with such protocols, if clients set metadata on a contact who is not in the required state, the Connection MUST cache the metadata for the duration of the session. If clients request the attributes of that contact after the appropriate "set" method has returned successfully, the Connection MUST return the new (cached) value.

If the contact is later placed in the required state to store metadata (for instance, if subscription to the contact's presence is requested, on a protocol like MSN where the alias has storage type Subscribed_Or_Pending), the connection MUST store the cached metadata at that time.

If the Connection didn't cache changes in this way, a client intending to change the alias on MSN would have to wait until the server acknowledged the subscription request; in the meantime, other clients would still display the old alias.

The only exception to that general rule is that if the Connection cannot store particular metadata at all (i.e. the storage type is None), it MUST reject attempts to set it.

If the implementation knows that metadata can't be stored at all, it's useful to report that, which can be done synchronously. In general, user interfaces should detect storage type None and not display editing controls at all.

This connection cannot store this type of metadata at all, and attempting to do so will fail with NotImplemented.

Link-local XMPP can't store aliases or group memberships at all, and subscription and presence states are implicit (all contacts on the local network have subscribe = publish = Yes and no other contacts exist).

As of April 2010, the XMPP server for Facebook Chat provides a read-only view of the user's Facebook contacts, so it could also usefully have this storage type.

This type of metadata can only be stored permanently for contacts whose subscribe attribute is Ask or Yes.

Contact aliases and groups on MSN have this behaviour.

This type of metadata can only be stored permanently for contacts whose subscribe attribute is Yes.

No service with this behaviour is currently known, but it's a stricter form of Subscribed_Or_Pending.

The user can set this metadata for any valid contact identifier, whether or not they have any presence subscription relationship to it, and it will be stored on their contact list.

Contact aliases and groups on XMPP have this behaviour; it is possible to put a contact in a group, or assign an alias to them, without requesting that presence be shared.

A single contact's subscribe, publish and publish-request attributes. The new value of the contact's "subscribe" attribute. The new value of the contact's "publish" attribute. The new value of the contact's "publish-request" attribute, or the empty string if that attribute would be omitted. A map from contacts to their subscribe, publish and publish-request attributes. The contact's handle. The contact's subscribe, publish and publish-request attributes.

Emitted when the contact list becomes available, when contacts' basic stored properties change, when new contacts are added to the list that would be returned by GetContactListAttributes, or when contacts are removed from that list.

This provides change notification for that list, and for contacts' subscribe, publish and publish-request attributes.

Connection managers SHOULD also emit this signal when a contact requests that the user's presence is published to them, even if that contact's publish attribute is already Ask and the publish-request has not changed.

If the same contact sends 10 identical requests, 10 identical signals should be emitted.

The new subscribe, publish and publish-request attributes of all the contacts that have been added, and all the contacts for which those attributes have changed. The identifiers of the contacts in the Changes map. The contacts that have been removed from the list that would be returned by GetContactListAttributes. This also implies that they have subscribe = No and publish = No; contacts MUST NOT be listed both here and in Changes.
Connection managers MUST still emit this signal, but clients SHOULD listen for the ContactsChangedWithID signal in addition, and ignore this signal after ContactsChangedWithID has been emitted at least once.

Emitted immediately after ContactsChangedWithID, under the same circumstances.

If clients receive this signal without first receiving a corresponding ContactsChangedWithID, they MUST assume that only this signal will be emitted.

The same as the corresponding argument to ContactsChangedWithID. The same as the corresponding argument to ContactsChangedWithID, except that it only includes handles and not identifiers.

If true, presence subscription and publication can be changed using the RequestSubscription, AuthorizePublication and RemoveContacts methods.

If false, all of those methods will always fail; they SHOULD raise the error org.freedesktop.Telepathy.Error.NotImplemented.

In XEP-0174 "Serverless Messaging" (link-local XMPP), presence is implicitly published to everyone in the local subnet, so the user cannot control their presence publication.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Request that the given contacts allow the local user to subscribe to their presence, i.e. that their subscribe attribute becomes Yes.

Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically allow the contacts to see the local user's presence). User interfaces that require mutual subscription MAY call AuthorizePublication at the same time as this method.

Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.

Before calling this method on a connection where GetAliasFlags returns the User_Set flag, user interfaces SHOULD obtain, from the user, an alias to identify the contact in future, and store it using SetAliases.

The user MAY be prompted using the contact's current self-assigned nickname, or something derived from the contact's (presumably self-assigned) identifier, as a default, but these names chosen by the contact SHOULD NOT be used without user approval.

This is a generalization of XEP-0165 "Best Practices to Discourage JID Mimicking") to protocols other than XMPP. A reasonable user interface for this, as used in many XMPP clients, is to have a text entry for the alias adjacent to the text entry for the identifier to add.

For contacts with subscribe=Yes, this method has no effect. It MUST return successfully if all contacts are in this state.

For contacts with subscribe=Ask, this method SHOULD send a new request, with the given message, if allowed by the underlying protocol.

For contacts with subscribe=No or subscribe=Rejected, this method SHOULD request that the contact allows the local user to subscribe to their presence; in general, this will change their publish attribute to Ask (although it could change directly to Yes in some situations).

Any state changes that immediately result from this request MUST be signalled via ContactsChanged before this method returns.

This makes it easy for user interfaces to see what practical effect this method had.

If the remote contact accepts the request, their subscribe attribute will later change from Ask to Yes.

If the remote contact explicitly rejects the request (in protocols that allow this), their subscribe attribute will later change from Ask to Rejected.

If the subscription request is cancelled by the local user, the contact's subscribe attribute will change from Ask to No.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes.

One or more contacts to whom requests are to be sent.

An optional plain-text message from the user, to send to those contacts with the subscription request. The RequestUsesMessage property indicates whether this message will be used or ignored.

Clients SHOULD NOT send a non-empty message without first giving the user an opportunity to edit it.

These messages are typically presented to the remote contact as if the user had typed them, so as a minimum, the user should be allowed to see what the UI will be saying on their behalf.

Connections where this message is not useful MUST still allow it to be non-empty.

The ContactListState is None or Waiting. It was not possible to perform the requested action, because CanChangeContactList is false.

If true, the Message parameter to RequestSubscription is likely to be significant, and user interfaces SHOULD prompt the user for a message to send with the request; a message such as "I would like to add you to my contact list", translated into the local user's language, might make a suitable default.

This matches user expectations in XMPP and ICQ, for instance.

If false, the parameter is ignored; user interfaces SHOULD avoid prompting the user, and SHOULD pass an empty string to RequestSubscription.

FIXME: is there any such protocol?

If true, the contact list is automatically downloaded at connection. If false, the contact list is only downloaded when requested explicitely with Download.

Downloading the contact list uses bandwidth and is not always necessary or desired. For example, a client could cache the contact list from previous connections and accept less regular updates, it could get the contact list from an out-of-band protocol-specific way, or it could not need the contact list at all.

Connection managers MUST default to true.

If a connection manager starts supporting this property but defaults to false, it would break all existing clients that don't call Download.

For each of the given contacts, request that the local user's presence is sent to that contact, i.e. that their publish attribute becomes Yes.

Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically request that the contacts allow the user to subscribe to their presence). User interfaces that require mutual subscription MAY call RequestSubscription at the same time as this method.

Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.

For contacts with publish=Yes, this method has no effect; it MUST return successfully if all contacts given have this state.

For contacts with publish=Ask, this method accepts the contact's request to see the local user's presence, changing their publish attribute from Ask to Yes.

For contacts with publish=No, if the protocol allows it, this method allows the contacts to see the local user's presence even though they have not requested it, changing their publish attribute from No to Yes. Otherwise, it merely records the fact that presence publication to those contacts is allowed; if any of those contacts ask to receive the local user's presence later in the lifetime of the connection, the connection SHOULD immediately allow them to do so, changing their publish attribute directly from No to Yes.

This makes it easy to implement the common UI policy that if the user attempts to subscribe to a contact's presence, requests for reciprocal subscription are automatically approved.

Any state changes that immediately result from this request MUST be signalled via ContactsChanged before this method returns.

This makes it easy for user interfaces to see what practical effect this method had.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes.

One or more contacts to authorize.

It was not possible to perform the requested action, because CanChangeContactList is false. The ContactListState is None or Waiting.

Remove the given contacts from the contact list entirely. It is protocol-dependent whether this works, and under which circumstances.

If possible, this method SHOULD set the contacts' subscribe and publish attributes to No, remove any stored aliases for those contacts, and remove the contacts from the result of GetContactListAttributes.

This method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts (for instance, if there is an outstanding request to subscribe to the contact's presence, and it's not possible to cancel such requests). However, all signals that immediately result from this method call MUST be emitted before it returns, so that clients can interpret the result.

User interfaces removing a contact from the contact list are unlikely to want spurious failure notifications resulting from limitations of a particular protocol. However, emitting the signals first means that if a client does want to check exactly what happened, it can wait for the method to return (while applying change-notification signals to its local cache of the contact list's state), then consult its local cache of the contact list's state to see whether the contact is still there.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes.

One or more contacts to remove.

It was not possible to perform the requested action because CanChangeContactList is false. The ContactListState is None or Waiting.

Attempt to set the given contacts' subscribe attribute to No, i.e. stop receiving their presence.

For contacts with subscribe=Ask, this attempts to cancel an earlier request to subscribe to the contact's presence; for contacts with subscribe=Yes, this attempts to unsubscribe from the contact's presence.

As with RemoveContacts, this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes.

One or more contacts to remove.

It was not possible to perform the requested action because CanChangeContactList is false.

Attempt to set the given contacts' publish attribute to No, i.e. stop sending presence to them.

For contacts with publish=Ask, this method explicitly rejects the contact's request to subscribe to the user's presence; for contacts with publish=Yes, this method attempts to prevent the user's presence from being received by the contact.

As with RemoveContacts, this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState changes to Failure, this method SHOULD raise the same error as GetContactListAttributes.

One or more contacts to remove.

It was not possible to perform the requested action because CanChangeContactList is false. The ContactListState is None or Waiting.

Download the contact list from the server. If DownloadAtConnection is true, Download does nothing.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Communication_Policy.xml0000644000175100017520000001460512530423576027667 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (draft 1)

This interface supports controlling which contacts are allowed to initiate text chats, incoming calls, and other forms of communication as supported by the underlying protocol. The policies supported for different communication methods on this connection are listed in the SupportedPolicies property. The current configuration is held in ActivePolicies; it can be modified using SetPolicy, and changes are signalled by PolicyChanged.

A mapping of communication methods (channel types), and their associated policy. The channel interface with the policy. The active policy for this channel type. The communication policies supported by this connection.

The active communication policies on this connection. Communication methods that are not in this mapping are considered open.

For example, to allow incoming calls only from contacts buddy list, and to allow text messages from anyone, the policy would look like this:

{
    'org.freedesktop.Telepathy.Channel.Type.Text' : Access_Control_Type_Open,
    'org.freedesktop.Telepathy.Channel.Type.Call' : Access_Control_Type_Publish_List
}
        

Changes to this property are signalled by PolicyChanged.

Set a policy for a communication method (channel type). Depending on the server or protocol, more than one communication method could be bound to the same policy, if calling this method on one channel type changes the policy on another channel type, the PolicyChanged signal that would follow would include all the channel types that have an altered policy. The channel type to set the policy for. The policy to set for this channel. ActivePolicies has changed. This occurs when the server unilaterally changed the policy or SetPolicy has been called. A subset of the active policies that have changed.

The communication methods (channel types), and the policies that can be applied to them. This is server and protocol dependant.

Grouped channel types will always have the same policy applied to them.

Different protocols have different limitations to the granularity of communication policies. One protocol might be able to set a different policy for VoIP calls and text chat, while another protocol might only be able to set one policy to both VoIP and text chat.
A list of channel interfaces that support these policies. A list of supported policies.
telepathy-qt-0.9.6.1/spec/Channel_Request.xml0000644000175100017520000003671412530423576022471 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008–2011 Collabora Ltd. Copyright © 2008–2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

A channel request is an object in the ChannelDispatcher representing an ongoing request for some channels to be created or found. They are created by methods such as CreateChannel. There can be any number of ChannelRequest objects at the same time.

Its well-known bus name is the same as that of the ChannelDispatcher, "org.freedesktop.Telepathy.ChannelDispatcher".

See ChannelDispatcher.CreateChannel for rationale for ChannelRequest being a separate object.

A channel request can be cancelled by any client (not just the one that requested it). This means that the ChannelDispatcher will Close the resulting channel, or refrain from requesting it at all, rather than dispatching it to a handler.

The Account on which this request was made. This property cannot change.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This property is set when the channel request is created, and can never change.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.

This property is set when the channel request is created, and can never change.

An array of dictionaries containing desirable properties for the channel or channels to be created.

This is an array so that we could add a CreateChannels method in future without redefining the API of ChannelRequest.

This property is set when the channel request is created, and can never change.

A list of the extra interfaces provided by this channel request. This property cannot change.

Proceed with the channel request.

The client that created this object calls this method when it has connected signal handlers for Succeeded and Failed.

Clients other than the client which created the ChannelRequest MUST NOT call this method.

This method SHOULD return immediately; on success, the request might still fail, but this will be indicated asynchronously by the Failed signal.

Proceed cannot fail, unless clients have got the life-cycle of a ChannelRequest seriously wrong (e.g. a client calls this method twice, or a client that did not create the ChannelRequest calls this method). If it fails, clients SHOULD assume that the whole ChannelRequest has become useless.

This method has already been called, so it is no longer available. Stop calling it.

Cancel the channel request. The precise effect depends on the current progress of the request.

If the connection manager has not already been asked to create a channel, then Failed is emitted immediately, and the channel request is removed.

If the connection manager has already been asked to create a channel but has not produced one yet (e.g. if Connection.Interface.Requests.CreateChannel has been called, but has not yet returned), then the ChannelDispatcher will remember that the request has been cancelled. When the channel appears, it will be closed (if it was newly created and can be closed), and will not be dispatched to a handler.

If the connection manager has already returned a channel, but the channel has not yet been dispatched to a handler then the channel dispatcher will not dispatch that channel to a handler. If the channel was newly created for this request, the channel dispatcher will close it with Close; otherwise, the channel dispatcher will ignore it. In either case, Failed will be emitted when processing has been completed.

If Failed is emitted in response to this method, the error SHOULD be org.freedesktop.Telepathy.Error.Cancelled.

If the channel has already been dispatched to a handler, then it's too late to call this method, and the channel request will no longer exist.

The channel request has failed. It is no longer present, and further methods must not be called on it.

The name of a D-Bus error. This can come from various sources, including the error raised by CreateChannel, or an error generated to represent failure to establish the Connection.

If the first argument of the D-Bus error message was a string, that string. Otherwise, an empty string.

The channel request has succeeded. It is no longer present, and further methods must not be called on it.

A dictionary of metadata provided by the channel requester, which the handler and other clients MAY choose to interpret. Clients MAY choose to use platform-specific keys for their own purposes, but MUST ignore unknown keys and MUST cope with expected keys being missing. Clients SHOULD namespace hint names by having them start with a reversed domain name, in the same way as D-Bus interface names.

This property might be used to pass a contact ID for a telephone number shared between two contacts from the address book to the call UI, so that if you try to call “Mumâ€, the call UI knows this rather than having to guess or show “Calling Mum or Dadâ€. The format of these contact IDs would be platform-specific, so we leave the definition of the dictionary entry up to the platform in question. But third-party channel requesters might not include the contact ID, so the call UI has to be able to deal with it not being there.

The channel dispatcher does not currently interpret any of these hints: they are solely for communication between cooperating clients. If hints that do affect the channel dispatcher are added in future, their names will start with an appropriate reversed domain name (e.g. org.freedesktop.Telepathy for hints defined by this specification, or an appropriate vendor name for third-party plugins).

This property may be set when the channel request is created, and can never change. Since it is immutable, it SHOULD be included in the dictionary of properties passed to AddRequest by the ChannelDispatcher.

The following standardised hints are defined:

org.freedesktop.Telepathy.ChannelRequest.DelegateToPreferredHandler - b
If present and True the client currently handling the channel SHOULD pass the channel to the PreferredHandler using DelegateChannels. This hint allows the user to request a channel in their preferred client in a situation where there are two chat handlers (for example: requesting a channel in Empathy which is currently being handled by gnome-shell). If the channel is currently unhandled, clients SHOULD ignore this hint. It is assumed that Mission Control will correctly delegate an unhandled channel to the preferred Handler. This allows requesting clients to always include this hint in their channel request. The Handler should check each ChannelRequest of the Requests_Satisfied parameter of HandleChannels for the hint. The first request containing the hint SHOULD be used and all further hints SHOULD be ignored. This covers the very unlikely case where HandleChannels satisfies two separate requests which have different PreferredHandlers.

Variant of the Succeeded signal allowing to get the channel which has been created.

This signal MUST be emitted if the ChannelDispatcher's SupportsRequestHints property is true. If supported, it MUST be emitted before the Succeeded signal.

The Connection owning the channel.

A subset of the Connection's properties, currently unused. This parameter may be used in future.

The channel which has been created.

The same immutable properties of the Channel that would appear in a NewChannels signal.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Aliasing.xml0000644000175100017520000002107112530423576025265 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A dictionary whose keys are contact handles and whose values are aliases. A pair (contact handle, alias) as seen in the AliasesChanged signal. An array containing structs of:
  • the handle representing the contact
  • the new alias
Signal emitted when a contact's alias (or that of the user) is changed.

The aliases of contacts on this connection may be changed by the user of the service, not just by the contacts themselves. This is the case on Jabber, for instance.

It is possible that aliases can be changed by the contacts too - which alias takes precedence is not defined by this specification, and depends on the server and/or connection manager implementation.

This flag only applies to the aliases of "globally valid" contact handles. At this time, clients should not expect to be able to change the aliases corresponding to any channel-specific handles. If this becomes possible in future, a new flag will be defined.

An integer with a bitwise OR of flags from ConnectionAliasFlags Return a bitwise OR of flags detailing the behaviour of aliases on this connection. An array of handles representing contacts A list of aliases in the same order as the contact handles Request the value of several contacts' aliases at once. An array of handles representing contacts A dictionary mapping contact handles to aliases Request the value of several contacts' aliases at once. This SHOULD only return cached aliases, falling back on the contact identifier (i.e. the string corresponding to the handle) if none is present. Also if there was no cached alias, a request SHOULD be started of which the result is later signalled by AliasesChanged. A dictionary mapping integer handles of contacts to strings of the new alias to set. Request that the alias of the given contact be changed. Success will be indicated by emitting an AliasesChanged signal. On connections where the CONNECTION_ALIAS_FLAG_USER_SET flag is not set, this method will only ever succeed if the contact is the user's own handle (as returned by Connection.GetSelfHandle).

The same string that would be returned by GetAliases (always present with some value, possibly the same as Connection/contact-id, if information from the Aliasing interface was requested)

An interface on connections to support protocols where contacts have an alias which they can change at will. Provides a method for the user to set their own alias, and a signal which should be emitted when a contact's alias is changed or first discovered.

On connections where the user is allowed to set aliases for contacts and store them on the server, the GetAliasFlags method will have the CONNECTION_ALIAS_FLAG_USER_SET flag set, and the SetAliases method may be called on contact handles other than the user themselves.

Aliases are intended to be used as the main displayed name for the contact, where available.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Credentials_Storage.xml0000644000175100017520000000605112530423576026731 0ustar00kaffeinekaffeine00000000000000 Copyright © 2011 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

A channel interface for SASL authentication channels that can save the credentials in the connection manager.

This interface is unlikely to be present for any SASL channels that are more complex than a simple password prompt (e.g. X-TELEPATHY-PASSWORD or PLAIN).

In practice, this interface should only be implemented by connection managers that implement the ConnectionManager.Interface.AccountStorage.DRAFT interface. To clear a password that has been saved in this manner, a client should call AccountStorage.DRAFT.ForgetCredentials on the Account.

Whether to store the authentication credentials.

This method tells the connection manager whether to store the authentication response in order to allow the connection manager to sign-on automatically in the future.

If credentials have been stored in this way, the client SHOULD NOT attempt to store the credentials locally in a keyring.

This method MUST be called before AcceptSASL is called or it will have no effect.

telepathy-qt-0.9.6.1/spec/Protocol_Interface_Presence.xml0000644000175100017520000001063712530423576025012 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for protocols where it might be possible to set the user's presence, and the supported presence types can be predicted before connecting.

This allows UIs to show or hide presence types that aren't always supported, such as "invisible", while not online.

The properties on this interface SHOULD be cached in the .manager file, in the [Protocol proto] group. For each status s in Statuses, that group should contain a key of the form status-s whose value is the Connection_Presence_Type as an ASCII decimal integer, followed by a space-separated sequence of tokens from the following set:

settable
If present, the user can set this status on themselves using SetPresence; this corresponds to May_Set_On_Self in the Simple_Status_Spec struct.
message
If present, the user can set a non-empty message for this status; this corresponds to Can_Have_Message in the Simple_Status_Spec struct.

Unrecognised tokens MUST be ignored.

For instance, an XMPP connection manager might have this .manager file:

[Protocol jabber]
Interfaces=org.freedesktop.Telepathy.Protocol.Interface.Presence;
param-account=s required
param-password=s required
status-offline=1
status-unknown=7
status-error=8
status-hidden=5 settable message
status-xa=4 settable message
status-away=3 settable message
status-dnd=6 settable message
status-available=2 settable message
status-chat=2 settable message

which corresponds to these property values (using a Python-like syntax):

Statuses = {
    'offline': (OFFLINE, False, False),
    'unknown': (UNKNOWN, False, False),
    'error': (ERROR, False, False),
    'hidden': (HIDDEN, True, True),
    'xa': (EXTENDED_AWAY, True, True),
    'away': (AWAY, True, True),
    'dnd': (BUSY, True, True),
    'available': (AVAILABLE, True, True),
    'chat': (AVAILABLE, True, True),
}

The statuses that might appear in the Connection.Interface.SimplePresence.Statuses property on a connection to this protocol that supports SimplePresence. This property is immutable.

Depending on server capabilities, it is possible that not all of these will actually appear on the Connection.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Forwarding.xml0000644000175100017520000004000312530423576025634 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd. Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft version, not API-stable)

This connection interface is for protocols that are capable of signaling to remote contacts that incoming communication channels should be instead sent to a separate contact. This might apply to things such as call forwarding, for example.

In some cases, a CM may register forwarding rules with an external service; in those cases, it will never see the incoming channel, and the forwarding will happen automatically.

In other cases, the CM will handle the forwarding itself. When an incoming channel is detected, the status of the local user will determine whether or not a forwarding rule is matched. For some rules, this MAY happen immediately (ie, if the user is Busy); for others, there MAY be a timeout (in seconds) that must expire before the forwarding rule is matched (the timeout is specified by the first element in the Forwarding_Rule_Entry list).

Once a forwarding rule is matched and any necessary timeouts have expired, the CM can forward the incoming channel to the specified handle. If for whatever reason the remote handle does not accept the channel AND the CM supports multiple forwarding entries AND any necessary timeouts have expired (specified by the next entry in the list), the CM can forward the incoming channel to the next handle in the entry list. This continues until the list is exhausted, or the incoming channel is accepted.

Note that the rule matches are only for the first entry in the in the forwarding rule list. Once the incoming channel has been forwarded, the next entry in the list (assuming one exists and the contact that the channel has been forwarded to does not respond after any necessary timeouts) is used regardless of the status of the forwarded channel. The initial match rule might have been Busy, whereas the contact that the channel has been forwarded to might be offline. Even in this case, the Busy list is still traversed until the channel is handled (or there are no more forwarding entries in the list).

For example, assuming the following dict for Forwarding_Rules:

        ForwardingRules = {
          Busy: ( initial-timeout: 30, [
            (handle: 3, timeout: 15),
            (handle: 5, timeout: 20)
          ]),
          NoReply: ( initial-timeout: 15, [
            (handle: 5, timeout: 30),
            (handle: 3, timeout: 20)
          ])
        }

We can imagine a scenario where an incoming channel is detected, the media stream is available (ie, not Busy), and the local user is online. While the CM is waiting for the local user to accept the channel, it looks at NoReply's first timeout value. After 15s if the local user hasn't accepted, the CM forwards the channel to Handle #5. The CM then waits 30s for Handle #5 to accept the channel. If after 30s it does not, the CM forwards the incoming channel to Handle #3, which will have 20s to accept the channel.

When an unanswered StreamedMedia call is forwarded, both the contact and the self handle should be removed from the group with the self handle as the actor, and Channel_Group_Change_Reason No_Answer or Busy, as appropriate. For Call1 channels, the Call_State_Change_Reason Forwarded should be used.

The various forwarding conditions that are supported by this interface. In general, the conditions should not overlap; it should be very clear which rule would be chosen given a CM's behavior with an incoming channel. The exception to this is Unconditional, which will override all other rules. Incoming channels should always be forwarded. Note that setting this will override any other rules. If not set, other rules will be checked when an incoming communication channel is detected.

The incoming channel should be forwarded if a busy signal is detected. What defines "Busy" is CM-specific (perhaps a single resource is already in use, or a user's status is set to Busy Connection_Presence_Type).

If initial timeout is specified for Busy condition and call waiting is not supported by the service, the timeout will be ignored.

The incoming channel should be forwarded if the local user doesn't accept it within the specified amount of time. The incoming channel should be forwarded if the user is offline. This could be a manual setting (the user has chosen to set their presence to offline or invisible) or something specified by the underlying network (the user is not within range of a cell tower).

A forwarding rule entry. These MAY be chained together for CMs that support chaining of forwards (in other words, a forwarding rule may have multiple entries; if the contact in the first entry doesn't respond, the incoming channel might be forwarded to the contact in the second entry).

For CMs and protocols that don't support chaining of entries, only the first entry would be used.

The length of time (in seconds) to wait the contact to respond to the forwarded channel. This MAY be ignored by the CM if it isn't supported by the underlying network/protocol for the specific status of the remote contact (for example, a GSM call that is forwarded may return Not_Reachable immediately without waiting for the timeout value to expire).

A value of 0 means the condition can match immediately. A value of MAX_UINT32 means that the CM's default should be used.

The contact to forward an incoming channel to. If the handle doesn't point to anything (e.g. points to a phone number that doesn't exist), the entry SHOULD be skipped.
A chain of forwarding rules and an initial timeout after which the rules are applied. Initial timeout for the rule. The forwarding targets (an array of type Forwarding_Rule_Entry). A dictionary whose keys are forwarding conditions and whose values are Forwarding_Rule_Chain structs. A dictionary whose keys are forwarding conditions and whose values are maximum number of Forwarding_Rule_Entry for the condition.

A map of forwarding conditions supported on this connection to maximum number of Forwarding_Rule_Entry supported for the specific condition.

When forwarding is done by the provider, different providers might support different chain sizes, or provider and local implementation chain sizes might differ.

The current forwarding rules that are enabled for this connection. Forwarding rules each contain an array of type Forwarding_Rule_Entry.

Emitted when the ForwardingRules property changes.

By the time this is emitted, the property MUST have been updated with the new rules being active. If any protocol/network requests must be made, they should be completed before the signal is emitted.

The condition of the forwarding rule that's been changed. The new initial timeout for the rule. The new (and as of the emission of the signal, currently active) forwards. The order is relevant; those at the lowest array index are used first.
Update the forwarding rules.

The forwarding rule to override. Note that this SHOULD not affect other rules; setting a rule that overrides others (such as Forwarding_Rule_Unconditional) will not modify other rules. This means that when a client sets Forwarding_Rule_Busy and then temporarily sets Forwarding_Rule_Unconditional, the Forwarding_Rule_Busy rule will retain settings after Forwarding_Rule_Unconditional, has been unset.

If the CM has no choice but to adjust multiple rules after a call to this function (ie, due to the network or protocol forcing such behavior), the CM MUST emit multiple ForwardingRuleChanged signals for each changed rule. The order of the signals is implementation-dependent, with the only requirement that the last signal is for the rule that was originally requested to have been changed (e.g. if Unconditional automatically modifies Busy and NoReply, three separate ForwardingRuleChanged signals should be raised with the last signal being for Forwarding_Rule_Unconditional).

Each forwarding condition will occur no more than once in the rule array. Setting a rule will overwrite the old rule with the same Forwarding_Condition in its entirety.

The forwarding targets (an array of type Forwarding_Rule_Entry) to activate for the rule. An empty array will effectively disable the rule. The old forwarding targets (an array of type Forwarding_Rule_Entry). This is the list of entries that is being replaced with the call to SetForwardingRule. The specified Condition is not supported by this connection, or the number of chained SupportedForwardingConditions should be checked prior to calling SetForwardingRule. A Handle that has been supplied is invalid.
telepathy-qt-0.9.6.1/spec/Channel_Type_Stream_Tube.xml0000644000175100017520000003134512530423576024247 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Limited Copyright © 2008-2009 Nokia Corporation This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A stream tube is a transport for ordered, reliable data transfer, similar to SOCK_STREAM sockets.

When offering a stream tube, the initiating client creates a local listening socket and offers it to the recipient client using the Offer method. When a recipient accepts a stream tube using the Accept method, the recipient's connection manager creates a new local listening socket. Each time the recipient's client connects to this socket, the initiator's connection manager proxies this connection to the originally offered socket.

Offer a stream tube exporting the local socket specified. The type of the listening address of the local service, as a member of Socket_Address_Type. The listening address of the local service, as indicated by the address_type. The access control the local service applies to the local socket, specified so the connection manager can behave appropriately when it connects. The dictionary of arbitrary Parameters to send with the tube offer. The contact associated with this channel doesn't have tube capabilities. The connection manager doesn't support the given address type or access-control type. Accept a stream tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeChannelStateChanged signal is emitted. The type of address the connection manager should listen on.

The type of access control the connection manager should apply to the socket.

Note that if you plan to establish more than one connection through the tube, the Socket_Access_Control_Port access control can't be used as you can't connect more than once from the same port.

A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum. The address on which the connection manager will listen for connections to this tube. The client should not attempt to connect to the address until the tube is open. The access_control_param is invalid with the given access_control. The given address type or access-control mechanism is not supported.

Emitted each time a participant opens a new connection to its socket.

This signal is only fired on the offering side.

The handle of the participant who opened the new connection

A parameter which can be used by the listening process to identify the connection. Note that this parameter has a meaningful value only in the Socket_Access_Control_Port and Socket_Access_Control_Credentials cases. If a different Socket_Access_Control has been chosen when offering the tube, this parameter should be ignored.

In the Socket_Access_Control_Port case, the variant contains a struct Socket_Address_IPv4 (or Socket_Address_IPv6) containing the address from which the CM is connected to the client application.

In the Socket_Access_Control_Credentials case, the variant contains the byte (D-Bus signature 'y') that has been sent with the credentials.

The unique ID associated with this connection. This ID will be used to identifiy the connection when reporting errors with ConnectionClosed.

Emitted when the tube application connects to the CM's socket.

This signal is only fired on the accepting side.

The unique ID associated with this connection. This ID will be used to identifiy the connection when reporting errors with ConnectionClosed.

Emitted when a connection has been closed.

The ID of the connection.

The name of a D-Bus error describing the error that occurred.

The following errors can be used:

  • org.freedesktop.Telepathy.Error.Cancelled: user closed the socket or the tube.
  • org.freedesktop.Telepathy.Error.ConnectionLost: the bytestream relaying connection's data has been broken.
  • org.freedesktop.Telepathy.Error.ConnectionRefused: the tube offer refused the connection.
A debug message.

A string representing the service name that will be used over the tube. It should be a well-known TCP service name as defined by http://www.iana.org/assignments/port-numbers or http://www.dns-sd.org/ServiceTypes.html, for instance "rsync" or "daap".

When the tube is offered, the service name is transmitted to the other end.

When requesting a channel with Connection.Interface.Requests.CreateChannel, this property MUST be included in the request.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for stream tubes with that address type. For simplicity, if a CM supports offering a particular type of tube, it is assumed to support accepting it.

A typical value for a host without IPv6 support:

          {
            Socket_Address_Type_IPv4:
              [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
               Socket_Access_Control_Netmask],
            Socket_Address_Type_Unix:
              [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
          }
        

Connection Managers MUST support at least IPv4 with the localhost access control.

When requesting a channel with Connection.Interface.Requests.CreateChannel, this property MUST NOT be included in the request.

An identifier for a stream tube connection. These are defined with the NewLocalConnection or NewRemoteConnection signals and are used by ConnectionClosed to identify the closed connection.
telepathy-qt-0.9.6.1/spec/Call_Stream_Interface_Media.xml0000644000175100017520000007701512530423576024655 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009-2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This interface deals with how to connect a stream to an endpoint. It contains all that is required to describe the local endpoint, to succesfully establish a connection. While a call is established, one may try to connect to multiple remote endpoints at the same time. This is called forking in the SIP jargon. Informations related to the connections are on the Endpoint objects. Once the call is established, there MUST be a single endpoint left.

ICE restarts

If the CM wants to do an ICE restart, then the ICERestartPending property is set, and the ICERestartRequested signal is emitted. The streaming implementation should then call SetCredentials again. This will trigger the actual ICE restart, and cause LocalCandidates to be cleared.

For more information on ICE restarts see RFC 5245 section 9.1.1.1

The type of SendingState and ReceivingState. No data is flowing (or expected to be flowing) at this time. The streaming implementation has been told to start or receiving, but has not yet indicated that it is doing so. The streaming implementation has been told to stop sending or receiving data, but it has not yet indicated that it has done so. The streaming implementation is successfully sending or receiving data, and everything is going swimmingly. Indicates whether the streaming implementation is/should be sending media for this stream. The streaming implementation should be able to rely on reading this value and listening to SendingStateChanged to determine whether it should be sending media or not. It should not need to listen to the Hold interfaces on the Call/Content. Feedback on success should be given via CompleteSendingStateChange. Failures should be reported via ReportSendingFailure. Change notification for SendingState. Note that this information is duplicated onto the Stream interface, so that UIs can ignore the Media interface, and streaming implementations can ignore everything but the media interface. The new value of SendingState.

Called in response to SendingStateChanged(Pending_*, *) to indicate that the media state has successfully progressed from Pending_{Start, Stop, Pause} to the corresponding non-pending state.

The new (non-pending) value of SendingState. The state change made no sense, and was ignored by the CM. The most likely cause for this is a race-condition between the CM emitting a new state change and the streaming implementation responding to the previous state change.
Can be called at any point to indicate a failure in the outgoing portion of the stream. The counterpart of SendingState. Indicates whether the streaming implementation is/should be expecting to receive media for this stream. The CM should only tell the streaming implementation to stop receiving if it has been told to put the stream on hold, or the stream has been removed from the call. Change notification for ReceivingState. The new value of ReceivingState.

Called in response to ReceivingStateChanged(Pending_*, *) to indicate that the media state has successfully progressed from Pending_{Start, Stop, Pause} to the corresponding non-pending state.

The new (non-pending) value of ReceivingState. The state change made no sense, and was ignored by the CM. The most likely cause for this is a race-condition between the CM emitting a new state change and the streaming implementation responding to the previous state change.
Can be called at any point to indicate a failure in the incoming portion of the stream.

Used to set the username fragment and password for streams that have global credentials.

The username to use when authenticating on the stream. The password to use when authenticating on the stream.
The network topology that an IP candidate represents. This can sometimes be used to infer what kind of performance characteristics (latency, bandwith, etc) can be expected of connections made to this candidate. This is not an IP candidate. This is a reserved value, and should not be seen on the bus. This candidate represents a direct connection to the host, as its address is taken directly the host's IP stack. This candidate probably represents a connection to the host through a NAT device, as its address was discovered by sending a binding request to a STUN server or similar. This candidate probably represents a good route between the host and its peer, as its address was discovered by sending a STUN binding request to one of the candidates advertised by the peer. This candidate represents the address of a relay server (usually somewhere on the public internet). This candidate is the most likely to work, but all media will go via a relay server, so latency is likely to be higher than other types of candidate. This candidate represents a Multicast group. This value should only appear if the Stream's Transport is set to Multicast.

Extra information about the candidate. Allowed and mandatory keys depend on the transport protocol used. The following keys are commenly used:

type - u
The type of candidate (Call_Stream_Candidate_Type)
foundation - s
The foundation of this candidate
protocol - u
Underlying protocol of the candidate (Media_Stream_Base_Proto)
priority - u
Priority of the candidate (should be a number between 0 and 65535). Most ICE implementations will prefer the highest priority candidate pair that manages to connect. For backwards compatibility with non-ICE SIP clients, the lowest priority candidate may be sent as a raw UDP fallback candidate. It is recommended that a relay candidate is used as the lowest priority candidate if possible. If both IPv4 and IPv6 raw udp fallback candidates are available, they should be set to the same priority and advertised to the CM at the same time. The CM will decide which to advertise to the remote end.
base-ip - s
The underlying Host address where media sent to this (non-host-type) candidate will eventually arrive.
base-port - u
The underlying Host port where media sent to this (non-host-type) candidate will eventually arrive.
username - s
Username of this candidate (only if credentials are per candidate)
password - s
Password of this candidate (only if credentials are per candidate)
ttl - u
The TTL mandated for RTP/RTCP packets sent to a multicast group (only valid for Multicast Streams)
One of the well-known keys documented here, or an implementation-specific key. The value corresponding to that key.
Media streams can use more than one UDP socket: one for RTP (data) and one for RTCP (control). Most of the time, they are adjacent to each other, but some protocols (xmpp) signal each port separately. The stream transport type is unknown or not applicable (should not appear over dbus). This is the high-traffic data socket, containing the audio/video data for the stream. This is the low-traffic control socket, usually containing feedback about packet loss etc. A Stream Candidate. The component number. The IP address to use. The port number to use. Additional information about the candidate. Add candidates to the LocalCandidates property and signal them to the remote contact(s). Note that connection managers MAY delay the sending of candidates until FinishInitialCandidates is called. The candidates to be added. This indicates to the CM that the initial batch of candidates has been added, and should now be processed/sent to the remote side. Protocols supporting Raw UDP SHOULD wait for FinishInitialCandidates, and then set the lowest priority candidate as the Raw UDP candidate. The minimal required candidates have not been set. For example, for an RTP protocol, at least one candidate on the component 1 (RTP) must have been set. WLM_8_5 was removed A transport that can be used for streaming. The stream transport type is unknown or not applicable (for streams that do not have a configurable transport). Raw UDP, with or without STUN. All streaming clients are assumed to support this transport, so there is no handler capability token for it in the Call1 interface. [This corresponds to "none" or "stun" in the old Media.StreamHandler interface.] Interactive Connectivity Establishment, as defined by RFC 5245. Note that this value covers ICE-UDP only. [This corresponds to "ice-udp" in the old Media.StreamHandler interface.] Google Talk peer-to-peer connectivity establishment, as implemented by libjingle 0.3. [This corresponds to "gtalk-p2p" in the old Media.StreamHandler interface.] The transport used by Windows Live Messenger 2009 or later, which resembles ICE draft 19. [This corresponds to "wlm-2009" in the old Media.StreamHandler interface.] Shared memory transport, as implemented by the GStreamer shmsrc and shmsink plugins. Multicast transport. The transport for this stream. [FIXME]. Change notification is via the LocalCandidatesAdded signal. Emitted when local candidates are added to the LocalCandidates property. Candidates that have been added. A username and password pair. The username. The password. The local credentials are sent to the remote site over the signalling protocol. They are used in ICE to make sure that the connectivity checks come from the right peer. Change notification is via the LocalCredentialsChanged signal. This property will be a pair of empty strings if ICE has not yet been started. renamed from LocalCredentailsSet Emitted when the value of LocalCredentials changes to a non-empty value. This should only happen when the streaming implementation calls SetCredentials, so this signal is mostly useful for debugging. Emitted when the value of RelayInfo changes. Emitted when the value of STUNServers changes.

The IP addresses of possible STUN servers to use for NAT traversal, as dotted-quad IPv4 address literals or RFC2373 IPv6 address literals. Change notification is via the STUNServersChanged signal. The IP addresses MUST NOT be given as DNS hostnames.

High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP to make life easier for streaming implementations.

A list of mappings describing TURN or Google relay servers available for the client to use in its candidate gathering, as determined from the protocol. Well-known map keys are:

ip - s
The IP address of the relay server as a dotted-quad IPv4 address literal or an RFC2373 IPv6 address literal. This MUST NOT be a DNS hostname. High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP and make life easier for streaming implementations.
type - s

Either udp for UDP (UDP MUST be assumed if this key is omitted), tcp for TCP, or tls.

The precise meaning of this key depends on the Transport property: if Transport is ICE, tls means TLS over TCP as referenced by ICE draft 19, and if Transport is GTalk_P2P, tls means a fake SSL session over TCP as implemented by libjingle.

port - q
The UDP or TCP port of the relay server as an ASCII unsigned integer
unique-id - s
A string identifying the relay server. If two RelayInfo entries have the same unique-id, but different types, there is usually little point in connecting to both. Use priority to determine which version to prefer in this case. Can also be used by the streaming implementation to avoid connecting to the same relay multiple times if relaying is required for both audio and video.
priority - u
A number determining which version of a server to prefer (if multiple are present with the same unique-id, the one with the highest priority should be used, or the streaming implementation should use the one whose type has the most desirable properties)
username - s
The username to use
password - s
The password to use
component - u
The component number to use this relay server for, as an ASCII unsigned integer; if not included, this relay server may be used for any or all components. In ICE draft 6, as used by Google Talk, credentials are only valid once, so each component needs relaying separately.

An equivalent of the gtalk-p2p-relay-token property on MediaSignalling channels is not included here. The connection manager should be responsible for making the necessary HTTP requests to turn the token into a username and password.

The type of relay server that this represents depends on the value of the Transport property. If Transport is ICE, this is a TURN server; if Transport is GTalk_P2P, this is a Google relay server; otherwise, the meaning of RelayInfo is undefined.

If relaying is not possible for this stream, the list is empty.

Change notification is given via the RelayInfoChanged signal.

Signals that the initial information about STUN and Relay servers has been retrieved, i.e. the HasServerInfo property is now true.

True if all the initial information about STUN servers and Relay servers has been retrieved. Change notification is via the ServerInfoRetrieved signal.

Streaming implementations that can't cope with STUN and relay servers being added later SHOULD wait for this property to become true before proceeding.
Emitted when the Endpoints property changes. Endpoints that were added. Endpoints that no longer exist.

The list of Endpoint objects that exist for this stream.

Change notification is via the EndpointsChanged signal.

Emitted when the remote side requests an ICE restart (e.g. third party call control, when the remote endpoint changes). The streaming implementation should call SetCredentials again. State recovery for ICERestartRequested. Set when the signal is emitted, and unset when SetCredentials is called. Useful for debugging. Signal an unrecoverable error for this stream, and remove it. If all streams are removed from a content, then it will also be removed. A structured reason for stream removal.
telepathy-qt-0.9.6.1/spec/Media_Stream_Handler.xml0000644000175100017520000011104512530423576023367 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2008 Collabora Limited Copyright (C) 2005-2008 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Handles signalling the information pertaining to a specific media stream. A client should provide information to this handler as and when it is available. Information about a codec supported by a client or a peer's client. The codec's payload identifier, as per RFC 3551 (static or dynamic) The codec's name Type of stream this codec supports Sampling frequency in Hertz Number of supported channels Codec-specific optional parameters The IP addresses of possible STUN servers to use for NAT traversal, as dotted-quad IPv4 address literals or RFC2373 IPv6 address literals. This property cannot change once the stream has been created, so there is no change notification. The IP addresses MUST NOT be given as DNS hostnames. High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP to make life easier for streaming implementations. True if we were the creator of this stream, false otherwise. This information is needed for some nat traversal mechanisms, such as ICE-UDP, where the creator gets the role of the controlling agent.

The transport (NAT traversal technique) to be used for this stream. Well-known values include:

none
Raw UDP, with or without STUN, should be used. If the STUNServers property is non-empty, STUN SHOULD be used.
stun
A deprecated synonym for 'none'.
gtalk-p2p
Google Talk peer-to-peer connectivity establishment should be used, as implemented in libjingle 0.3.
ice-udp
Interactive Connectivity Establishment should be used, as defined by the IETF MMUSIC working group.
wlm-8.5
The transport used by Windows Live Messenger 8.5 or later, which resembles ICE draft 6, should be used.
wlm-2009
The transport used by Windows Live Messenger 2009 or later, which resembles ICE draft 19, should be used.

This property cannot change once the stream has been created, so there is no change notification.

A list of mappings describing TURN or Google relay servers available for the client to use in its candidate gathering, as determined from the protocol. Map keys are:

ip - s
The IP address of the relay server as a dotted-quad IPv4 address literal or an RFC2373 IPv6 address literal. This MUST NOT be a DNS hostname. High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP and make life easier for streaming implementations.
type - s

Either udp for UDP (UDP MUST be assumed if this key is omitted), tcp for TCP, or tls.

The precise meaning of this key depends on the NATTraversal property: if NATTraversal is ice-udp, tls means TLS over TCP as referenced by ICE draft 19, and if NATTraversal is gtalk-p2p, tls means a fake SSL session over TCP as implemented by libjingle.

port - q
The UDP or TCP port of the relay server as an ASCII unsigned integer
username - s
The username to use
password - s
The password to use
component - u
The component number to use this relay server for, as an ASCII unsigned integer; if not included, this relay server may be used for any or all components. In ICE draft 6, as used by Google Talk, credentials are only valid once, so each component needs relaying separately.

An equivalent of the gtalk-p2p-relay-token property on MediaSignalling channels is not included here. The connection manager should be responsible for making the necessary HTTP requests to turn the token into a username and password.

The type of relay server that this represents depends on the value of the NATTraversal property. If NATTraversal is ice-udp, this is a TURN server; if NATTraversal is gtalk-p2p, this is a Google relay server; otherwise, the meaning of RelayInfo is undefined.

If relaying is not possible for this stream, the list is empty.

This property cannot change once the stream has been created, so there is no change notification.

String identifier for this candidate Array of transports for this candidate with fields, as defined in NewNativeCandidate Signal emitted when the connection manager wishes to inform the client of a new remote candidate. Signal emitted when the connection manager wishes the stream to be closed. Inform the connection manager of codec used to receive data. ID of error, from the MediaStreamError enumeration String describing the error Inform the connection manager that an error occured in this stream. The connection manager should emit the StreamError signal for the stream on the relevant channel, and remove the stream from the session. An unknown error occured. The end of the stream was reached. This error has no use anywhere. In Farsight 1 times, it was used to indicate a GStreamer EOS (when the end of a file is reached). But since this is for live calls, it makes no sense. There are no common codecs between the local side and the other particpants in the call. The possible codecs are not signalled here: the streaming implementation is assumed to report them in an implementation-dependent way, e.g. Farsight should use GstMissingElement. A network connection for the Media could not be established or was lost. There was an error in the networking stack (other than the connection failure). There are no installed codecs for this media type. The CM is doing something wrong. There was an error in the media processing stack. Informs the connection manager that all possible native candisates have been discovered for the moment. Informs the connection manager that a valid candidate pair has been discovered and streaming is in progress.

Informs the connection manager that a valid transport pair has been discovered and streaming is in progress. Component id MUST be the same for both transports and the pair is only valid for that component.

The connection manager might need to send the details of the active transport pair (e.g. c and o parameters of SDP body need to contain address of selected native RTP transport as stipulated by RFC 5245). However, the candidate ID might not be enough to determine these info if the transport was found after NativeCandidatesPrepared has been called (e.g. peer reflexive ICE candidate).

This method must be called before NewActiveCandidatePair.

This way, connection managers supporting this method can safely ignore subsequent NewActiveCandidatePair call.

Connection managers SHOULD NOT implement this method unless they need to inform the peer about selected transports. As a result, streaming implementations MUST NOT treat errors raised by this method as fatal.

Usually, connection managers only need to do one answer/offer round-trip. However, some protocols give the possibility to to send an updated offer (e.g. ICE defines such mechanism to avoid some race conditions and to properly set the state of gateway devices).

UDP (User Datagram Protocol) TCP (Transmission Control Protocol) String identifier for this candidate Array of transports for this candidate, with fields:
  • component number
  • IP address (as a string)
  • port
  • base network protocol (one of the values of MediaStreamBaseProto)
  • proto subtype (e.g. RTP)
  • proto profile (e.g. AVP)
  • our preference value of this transport (double in range 0.0-1.0 inclusive); 1 signals the most preferred transport
  • transport type, one of the values of MediaStreamTransportType
  • username if authentication is required
  • password if authentication is required
Inform this MediaStreamHandler that a new native transport candidate has been ascertained.
A local address An external address derived by a method such as STUN An external stream relay Locally-supported codecs. Inform the connection manager that a client is ready to handle this StreamHandler. Also provide it with info about all supported codecs. Locally-supported codecs

Used to provide codecs after Ready(), so the media client can go ready for an incoming call and exchange candidates/codecs before knowing what local codecs are available.

This is useful for gatewaying calls between two connection managers. Given an incoming call, you need to call Ready to get the remote codecs before you can use them as the "local" codecs to place the outgoing call, and hence receive the outgoing call's remote codecs to use as the incoming call's "local" codecs.

In this situation, you would pass an empty list of codecs to the incoming call's Ready method, then later call SetLocalCodecs on the incoming call in order to respond to the offer.

String identifier for remote candidate to drop There is no case where you want to release candidates (except for an ICE reset, and there you'd want to replace then all, using SetRemoteCandidateList). Signal emitted when the connection manager wishes to inform the client that the remote end has removed a previously usable candidate. It seemed like a good idea at the time, but wasn't. Emitted by the connection manager to inform the client that a valid candidate pair has been discovered by the remote end and streaming is in progress. A list of candidate id and a list of transports as defined in NewNativeCandidate Signal emitted when the connection manager wishes to inform the client of all the available remote candidates at once. Codecs supported by the remote peer. Signal emitted when the connection manager wishes to inform the client of the codecs supported by the remote end. If these codecs are compatible with the remote codecs, then the client must call SupportedCodecs, otherwise call Error. If emitted with argument TRUE, this means that the connection manager wishes to set the stream playing; this means that the streaming implementation should expect to receive data. If emitted with argument FALSE this signal is basically meaningless and should be ignored. We're very sorry. Signal emitted when the connection manager wishes to set whether or not the stream sends to the remote end. A telephony event code. Request that a telephony event (as defined by RFC 4733) is transmitted over this stream until StopTelephonyEvent is called. A telephony event code as defined by RFC 4733. The payload type to use when sending events. The value 0xFFFFFFFF means to send with the already configured event type instead of using the specified one. Request that a telephony event (as defined by RFC 4733) is transmitted over this stream until StopTelephonyEvent is called. This differs from StartTelephonyEvent in that you force the event to be transmitted as a RFC 4733 named event, not as sound. You can also force a specific Codec ID. A telephony event code as defined by RFC 4733. Request that a telephony event (as defined by RFC 4733) is transmitted over this stream until StopTelephonyEvent is called. This differs from StartTelephonyEvent in that you force the event to be transmitted as sound instead of as a named event. Request that any ongoing telephony events (as defined by RFC 4733) being transmitted over this stream are stopped. Informs the connection manager of the stream's current state, as as specified in Channel.Type.StreamedMedia::ListStreams. Locally supported codecs. Inform the connection manager of the supported codecs for this session. This is called after the connection manager has emitted SetRemoteCodecs to notify what codecs are supported by the peer, and will thus be an intersection of all locally supported codecs (passed to Ready) and those supported by the peer. Locally supported codecs, which SHOULD be the same as were previously in effect, but possibly with different parameters. Inform the connection manager that the parameters of the supported codecs for this session have changed. The connection manager should send the new parameters to the remote contact. This is required for H.264 and Theora, for example.

Emitted when the connection manager wishes to place the stream on hold (so the streaming client should free hardware or software resources) or take the stream off hold (so the streaming client should reacquire the necessary resources).

When placing a channel's streams on hold, the connection manager SHOULD notify the remote contact that this will be done (if appropriate in the protocol) before it emits this signal.

It is assumed that relinquishing a resource will not fail. If it does, the call is probably doomed anyway.

When unholding a channel's streams, the connection manager SHOULD emit this signal and wait for success to be indicated via HoldState before it notifies the remote contact that the channel has been taken off hold.

This means that if a resource is unavailable, the remote contact will never even be told that we tried to acquire it.

If true, the stream is to be placed on hold.
Notify the connection manager that the stream's hold state has been changed successfully in response to SetStreamHeld. If true, the stream is now on hold. Notify the connection manager that an attempt to reacquire the necessary hardware or software resources to unhold the stream, in response to SetStreamHeld, has failed. This struct is also used by Call, but in call, the CM should know about RTP profiles, and never use MAXUINT as a default value, because it complicates things unnecessarily. The minimum interval between two regular RTCP packets in milliseconds for this content. If no special value is desired, one should put MAXUINT (0xFFFFFFFF). Implementors and users of Call's RTCPFeedback should not use the MAXUINT default. Instead, in RTP/AVP, the default should be 5000 (5 seconds). If using the RTP/AVPF profile, it can be set to a lower value, the default being 0. The RTCP feedback messages for this codec. A struct defining an RTCP feedback message. Feedback type, for example "ack", "nack", or "ccm". Feedback subtype, according to the Type, can be an empty string (""), if there is no subtype. For example, generic nack is Type="nack" Subtype="". Feedback parameters as a string. Format is defined in the relevant RFC A map of codec and its feedback properties. Numeric identifier for the codec. This will be used as the PT in the SDP or content description. The RTCP feedback properties for this codec. Remote Feedback messages desired by the remote side Signal emitted when the connection manager wishes to inform the client of the feedback messages supported by the remote end. This signal is emitted before SetRemoteCodecs. If the client supports any of these messages, it must call SupportedFeedbackMessages before calling SupportedCodecs. Locally supported feedback messages. Inform the connection manager of the supported feedback messages for this session. This is called a before calling SupportedCodecs, Ready or CodecsUpdated to indicate the local, or negotiated feedback messages. A struct defining a RTP Header extension Identifier to be negotiated Direction in which the Header Extension is negotiated. URI defining the extension Feedback parameters as a string. Format is defined in the relevant RFC Header extensions desired by the remote side Signal emitted when the connection manager wishes to inform the client of the RTP header extensions supported by the remote end. This signal is emitted before SetRemoteCodecs. If the client supports any of these messages, it must call SupportedHeaderExtensions before calling SupportedCodecs. Locally supported RTP header extensions. Inform the connection manager of the supported RTP header extensions for this session. This is called before calling SupportedCodecs, Ready or CodecsUpdated to indicate the local or negotiated RTP header extensions.
telepathy-qt-0.9.6.1/spec/Client_Approver.xml0000644000175100017520000002331312530423576022474 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

Approvers are clients that notify the user that new channels have been created by a contact, and allow the user to accept or reject those channels. The new channels are represented by a ChannelDispatchOperation object, which is passed to the AddDispatchOperation method.

For instance, Empathy's tray icon, or the answer/reject window seen when a Maemo device receives a VoIP call, should be Approvers.

Approvers can also select which channel handler will be used for the channel, for instance by offering the user a list of possible handlers rather than just an accept/reject choice. However, the Channel Dispatcher must be able to prioritize possible handlers on its own using some reasonable heuristic, probably based on user configuration.

It is possible (and useful) to have an approver and a channel handler in the same process; this is particularly useful if a channel handler wants to claim responsibility for particular channels itself.

All approvers are notified simultaneously. For instance, in a desktop system, there might be one approver that displays a notification-area icon, one that is part of a contact list window and highlights contacts there, and one that is part of a full-screen media player.

Any approver can approve the handling of a channel dispatch operation with a particular channel handler by calling the HandleWith method. Approvers can also attempt to Claim channels; if this succeeds, the approver may handle the channels itself (if it is also a Handler), or close the channels in order to reject them.

At the D-Bus level, there is no "reject" operation: approvers wishing to reject channels SHOULD call the Claim method, then (if it succeeds) close the channels in any way they see fit.

The first approver to reply gets its decision acted on; any other approvers that reply at approximately the same time will get a D-Bus error, indicating that the channel has already been dealt with.

Approvers should usually prompt the user and ask for confirmation, rather than dispatching the channel to a handler straight away.

Non-interactive approvers can also be implemented as Observers as described in the interface description.

A specification of the channels in which this approver is interested. The AddDispatchOperation method should be called by the channel dispatcher whenever at least one of the channels in a channel dispatch operation matches this description.

This property works in exactly the same way as the Client.Observer.ObserverChannelFilter property. In particular, it cannot change while the approver process continues to own the corresponding Client bus name.

In the .client file, it is represented in the same way as ObserverChannelFilter, but the group has the same name as this interface and the keys start with ApproverChannelFilter instead of ObserverChannelFilter.

Called by the channel dispatcher when a ChannelDispatchOperation in which the approver has registered an interest is created, or when the approver starts up while such channel dispatch operations already exist.

The channel dispatcher SHOULD call this method on all approvers at the same time. If an approver returns an error from this method, the approver is assumed to be faulty.

If no approvers return from this method successfully (including situations where there are no matching approvers at all), the channel dispatcher SHOULD consider this to be an error, and recover by dispatching the channel to the most preferred handler.

Processes that aren't approvers (or don't at least ensure that there is some approver) probably shouldn't be making connections anyway, so there should always be at least one approver running.

The initial value of the ChannelDispatchOperation.Channels property, containing the Channels to be dispatched and their properties.

This can't be signalled to the approver through the Properties parameter of this method, because Channels is not an immutable property.

This argument always contains all of the channels in the channel dispatch operation, even if not all of them actually match the ApproverChannelFilter.

This seems the least bad way to handle such a situation; see the discussion on bug #21090.

The actual channels to be dispatched may reduce as channels are closed: this is signalled by ChannelDispatchOperation.ChannelLost.

Approvers SHOULD connect to ChannelLost and ChannelDispatchOperation.Finished. (if desired) before returning from AddDispatchOperation, since those signals are guaranteed not to be emitted until after all AddDispatchOperation calls have returned (with success or failure) or timed out.

The ChannelDispatchOperation to be processed.

Properties of the channel dispatch operation. The keys MUST be fully qualified D-Bus property names. This MUST NOT include properties that could change, SHOULD include as many properties as possible given that constraint, and MUST include at least the Account, Connection and PossibleHandlers properties.

telepathy-qt-0.9.6.1/spec/Call_Content_Interface_DTMF.xml0000644000175100017520000002513212530423576024540 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Collabora Limited Copyright © 2005-2010 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) An interface that gives audio Contents the ability to send DTMF events which have been established using the Call1 channel type. The event codes used are in common with those defined in RFC4733, and are listed in the DTMF_Event enumeration. A numeric event code from the DTMF_Event enum.

Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until StopTone is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable.

The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly.

Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

The event id was invalid. DTMF tones are already being played.
Stop sending any DTMF tones which have been started using the StartTone or MultipleTones methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. On some protocols it might be impossible to cancel queued tones immediately. Continuous tones are not supported by this stream. Deprecated, since stream IDs are ignored.

A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:

  • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of DTMF_Event
  • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds
  • 'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the TonesDeferred signal with the rest of the string as its argument: see that signal for details

Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager.

In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence.

The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as audio/telephone-event.

Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

The supplied Tones string was invalid. DTMF tones are already being played.
Indicates whether there are DTMF tones currently being sent in the channel. If so, the client should wait for StoppedTones signal before trying to send more tones.

The tones waiting for the user to continue, if any.

When this property is set to a non-empty value, TonesDeferred is emitted. When any tones are played (i.e. whenever SendingTones is emitted), this property is reset to the empty string.

The new non-empty value of DeferredTones.

Emitted when 'w' or 'W', indicating "wait for the user to continue", is encountered while playing a DTMF string queued by MultipleTones. Any queued DTMF events after the 'w', which have not yet been played, are placed in the DeferredTones property and copied into this signal's argument.

When the channel handler is ready to continue, it MAY pass the value of DeferredTones to MultipleTones, to resume sending. Alternatively, it MAY ignore the deferred tones, or even play different tones instead. Any deferred tones are discarded the next time a tone is played.

This signal SHOULD NOT be emitted if there is nothing left to play, i.e. if the 'w' was the last character in the DTMF string.

DTMF string (one or more events) that is to be played.

DTMF tone(s)are being sent to all eligible streams in the channel. The signal is provided to indicating the fact that the streams are currently being used to send one or more DTMF tones, so any other media input is not getting through to the audio stream. It also serves as a cue for the StopTone method.

True if the DTMF tones were actively cancelled via StopTone.

DTMF tones have finished playing on streams in this channel.

telepathy-qt-0.9.6.1/spec/Account_Interface_Addressing.xml0000644000175100017520000001014012530423576025111 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) The standard D-Bus PropertiesChanged signal is now used for URISchemes property change notifications.

Some accounts can be used for multiple protocols; for instance, SIP and Skype accounts can often be used to contact the PSTN, MSN and Yahoo accounts can contact each other, and XMPP accounts can potentially contact many protocols via a transport.

However, if the user does not intend to make use of this functionality, user interfaces can improve clarity by not displaying it: for instance, if a user prefers to call phone numbers via a particular SIP account, when an address book displays a contact with a phone number, it is desirable to display a "call with SIP" button for that account, but avoid displaying similar buttons for any other configured SIP or Skype accounts.

The purpose of this interface is to allow this "for use with" information to be recorded and retrieved.

A list of fields indicating the type of URI addressing scheme the the account should be used for (eg 'tel') indicating the account is intended for use by applications offering a telephony UI, or 'sip' or 'xmpp' for those protocols

Note that these fields signify intent, not ability: It is entirely possible that an account which can be used for a given URI scheme is not wanted for it by the user, and therefore not flagged as such in this field.

Change notification for this property is provided by the standard D-Bus PropertiesChanged signal.

Associate (or disassociate) an account with a particular URI addressing scheme, (such as 'tel' for telephony)

URI scheme to associate/disassociate the account with/from

True to associate this account with a given addressing scheme

False if the account should not be associated with said scheme

telepathy-qt-0.9.6.1/spec/Channel_Interface_Hold.xml0000644000175100017520000002255712530423576023707 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2008 Collabora Limited Copyright (C) 2005-2008 Nokia Corporation Copyright (C) 2006 INdT This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. first API-stable version

Interface for channels where you may put the channel on hold. This only makes sense for channels where you are streaming media to or from the members. (To see whether the other participant has put you on hold, see CallState.)

If you place a channel on hold, this indicates that you do not wish to be sent media streams by any of its members and will be ignoring any media streams you continue to receive. It also requests that the connection manager free up any resources that are only needed for an actively used channel (e.g. in a GSM or PBX call, it will be necessary to place an active call on hold before you can start another call).

This can also be used for putting a single Content on hold, if the protocol supports it (This interface is in the Channel namespace for historical reasons).

Return whether the local user has placed the channel on hold. The state of the channel The reason why the channel is in that state Emitted to indicate that the hold state has changed for this channel. This may occur as a consequence of you requesting a change with RequestHold, or the state changing as a result of a request from another process. The state of the channel The reason for the state change The hold state of a channel. All streams are unheld (the call is active). New channels SHOULD have this hold state. All streams are held (the call is on hold) The connection manager is attempting to move to state Held, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are on hold. Examining the Hold state of Call Contents (if applicable) may provide more useful information. The connection manager is attempting to move to state Unheld, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are on hold. Examining the Hold state of Call Contents (if applicable) may provide more useful information. The reason for a change to the Local_Hold_State. Clients MUST treat unknown values as equivalent to Local_Hold_State_Reason_None. The reason cannot be described by any of the predefined values (connection managers SHOULD avoid this reason, but clients MUST handle it gracefully) The change is in response to a user request The change is because some resource was not available A boolean indicating whether or not the channel should be on hold

Request that the channel be put on hold (be instructed not to send any media streams to you) or be taken off hold.

If the connection manager can immediately tell that the requested state change could not possibly succeed, this method SHOULD return the NotAvailable error. If the requested state is the same as the current state, this method SHOULD return successfully without doing anything.

Otherwise, this method SHOULD immediately set the hold state to Local_Hold_State_Pending_Hold or Local_Hold_State_Pending_Unhold (as appropriate), emitting HoldStateChanged if this is a change, and return successfully.

The eventual success or failure of the request is indicated by a subsequent HoldStateChanged signal, changing the hold state to Local_Hold_State_Held or Local_Hold_State_Unheld.

If the channel has multiple streams, and the connection manager succeeds in changing the hold state of one stream but fails to change the hold state of another, it SHOULD attempt to revert all streams to their previous hold states.

The following state transitions SHOULD be used, where appropriate:

  • Successful hold: (Unheld, any reason) → (Pending_Hold, Requested) → (Held, Requested)
  • Successful unhold: (Held, any reason) → (Pending_Unhold, Requested) → (Unheld, Requested)
  • Attempting to unhold fails at the first attempt to acquire a resource: (Held, any reason) → (Pending_Unhold, Requested) → (Held, Resource_Not_Available)
  • Attempting to unhold acquires one resource, but fails to acquire a second, and takes time to release the first: (Held, any reason) → (Pending_Unhold, Requested) → (Pending_Hold, Resource_Not_Available) → (Held, Resource_Not_Available)
The requested hold state cannot be achieved; for example, if only a limited number of channels can be in the "not on hold" state, attempts to exceed this number will raise NotAvailable.
telepathy-qt-0.9.6.1/spec/Channel_Dispatcher_Interface_Operation_List.xml0000644000175100017520000001332412530423576030112 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

This interface allows users of the ChannelDispatcher to enumerate all the pending dispatch operations, with change notification.

The existence of the DispatchOperations property allows a newly started approver to pick up existing dispatch operations.

This is on a separate interface so clients that aren't interested in doing this aren't woken up by its signals.

Details of a channel dispatch operation. The object path of the ChannelDispatchOperation.

Properties of the channel dispatch operation.

Connection managers MUST NOT include properties in this mapping if their values can change. Clients MUST ignore properties that appear in this mapping if their values can change.

The rationale is the same as for Channel_Details.

Each dictionary MUST contain at least the following keys:

  • org.freedesktop.Telepathy.ChannelDispatchOperation.Interfaces
  • org.freedesktop.Telepathy.ChannelDispatchOperation.Connection
  • org.freedesktop.Telepathy.ChannelDispatchOperation.Account
  • org.freedesktop.Telepathy.ChannelDispatchOperation.PossibleHandlers

The list of ChannelDispatchOperation objects currently being processed. Change notification is via the NewDispatchOperation and DispatchOperationFinished signals.

Emitted when a dispatch operation is added to DispatchOperations.

The dispatch operation that was created. The same properties that would appear in the Properties member of Dispatch_Operation_Details.
Emitted when a dispatch operation finishes (i.e. exactly once per emission of ChannelDispatchOperation.Finished). Strictly speaking this is redundant with ChannelDispatchOperation.Finished, but it provides full change-notification for the DispatchOperations property. The dispatch operation that was closed.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Tube.xml0000644000175100017520000003366612530423576023723 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Limited Copyright © 2008-2009 Nokia Corporation This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A tube is a mechanism for arbitrary data transfer between two or more IM users, used to allow applications on the users' systems to communicate without having to establish network connections themselves. Currently, two types of tube exist: Channel.Type.DBusTube and Channel.Type.StreamTube. This interface contains the properties, signals and methods common to both types of tube; you can only create channels of a specific tube type, not of this type. A tube channel contains exactly one tube; if you need several tubes, you have to create several tube channels.

Tube channels can be requested for Handle_Type Contact (for 1-1 communication) or Room (to communicate with others in the room simultaneously).

As an exception to the usual handling of capabilities, connection managers for protocols with capability discovery (such as XMPP) SHOULD advertise the capability representing each Tube type that they support (Channel.Type.DBusTube and/or Channel.Type.StreamTube) even if no client has indicated via UpdateCapabilities that such a tube is supported. They SHOULD also allow clients to offer tubes with any Service or ServiceName to any contact which supports the corresponding tube capability.

This lowers the barrier to entry for those writing new tube applications, and preserves interoperability with older versions of the Telepathy stack which did not support rich capabilities.

Each tube has a dictionary of arbitrary parameters. Parameters are commonly used to bootstrap legacy protocols where you can't negotiate parameters in-band. The allowable keys, types and values are defined by the service, but connection managers must support the value being a string (D-Bus type 's'), array of bytes (D-Bus type 'ay'), unsigned integer (D-Bus type 'u'), integer (D-Bus type 'i') and boolean (D-Bus type 'b').

When the tube is offered, the parameters are transmitted with the offer and appear as a property of the incoming tube for other participants.

For example, a stream tube for Service "smb" (Server Message Block over TCP/IP) might use the following properties, as defined in DNS SRV (RFC 2782) Service Types:

{ 'u': 'some-username',
  'p': 'top-secret-password',
  'path': '/etc/passwd',
}

When requesting a tube with CreateChannel, this property MUST NOT be included in the request; instead, it is set when StreamTube.Offer or DBusTube.Offer (as appropriate) is called. Its value is undefined until the tube is offered; once set, its value MUST NOT change.

When receiving an incoming tube, this property is immutable and so advertised in the NewChannels signal.

State of the tube in this channel.

When requesting a tube with CreateChannel, this property MUST NOT be included in the request.

The initiator offered the tube. The tube is waiting to be accepted/closed locally. If the client accepts the tube, the tube's state will be Open. The tube is waiting to be accepted/closed remotely. If the recipient accepts the tube, the tube's state will be Open. The initiator offered the tube and the recipient accepted it. The tube is open for traffic. The tube's state stays in this state until it is closed. The tube channel has been requested but the tube is not yet offered. The client should offer the tube to the recipient and the tube's state will be Remote_Pending. The method used to offer the tube depends on the tube type. Emitted when the state of the tube channel changes. Valid state transitions are documented with Tube_Channel_State. The new state of the tube. A Unix socket. The address variant contains a byte-array, signature 'ay', containing the path of the socket. An abstract Unix socket. The address variant contains a byte-array, signature 'ay', containing the path of the socket including the leading null byte. An IPv4 socket. The address variant contains a Socket_Address_IPv4, i.e. a structure with signature (sq) in which the string is an IPv4 dotted-quad address literal (and must not be a DNS name), while the 16-bit unsigned integer is the port number. An IPv6 socket. The address variant contains a Socket_Address_IPv6, i.e. a structure with signature (sq) in which the string is an IPv6 address literal as specified in RFC2373 (and must not be a DNS name), while the 16-bit unsigned integer is the port number.

The IP or Unix socket can be accessed by any local user (e.g. a Unix socket that accepts all local connections, or an IP socket listening on 127.0.0.1 (or ::1) or rejecting connections not from that address). The associated variant must be ignored.

For a D-Bus tube, this means that the "same user" access control typically provided by default in D-Bus implementations SHOULD be disabled. If the socket is only available to local users (e.g. a Unix socket, an IPv4 socket bound to 127.0.0.1, or an IPv6 socket bound to ::1), the ANONYMOUS authentication mechanism MAY be enabled.

May only be used on IP sockets, and only for Stream tubes. The associated variant must contain a struct Socket_Address_IPv4 (or Socket_Address_IPv6) containing the string form of an IP address of the appropriate version, and a port number. The socket can only be accessed if the connecting process has that address and port number; all other connections will be rejected. This has never been implemented. If you want to share a service to your whole LAN, Telepathy is not the way to do it. May only be used on IP sockets. The associated variant must contain a struct Socket_Netmask_IPv4 (or Socket_Netmask_IPv6) with signature (sy), containing the string form of an IP address of the appropriate version, and a prefix length "n". The socket can only be accessed if the first n bits of the connecting address match the first n bits of the given address.

The high-level meaning of this access control type is that only the same user (e.g. same numeric Unix uid) is allowed to interact with the tube. Exactly how this is achieved varies by channel type.

For StreamTube channels, this access control type may only be used on UNIX sockets. The connecting process must send a byte when it first connects, which is not considered to be part of the data stream. If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass credentials over sockets, the connecting process must do so if possible; if not, it must still send the byte, without any attached credentials. (This mechanism is very similar to the first byte of a D-Bus connection, except that in D-Bus the byte is always zero, whereas in Tubes it can be nonzero.)

For DBusTube channels, this access control type may be used on any type of socket, and there is no extra byte added by Telepathy at the beginning of the stream: all bytes in the stream are part of the D-Bus tube connection. The connecting process should prove its identity via any of the SASL authentication mechanisms usually used for D-Bus (in typical D-Bus implementations this involves either sending and receiving credentials as above, or demonstrating the ability to write to a file in the user's home directory).

In either case, the listening process will disconnect the connection unless it can determine by OS-specific means that the connecting process has the same user ID as the listening process.

In either tube type, the associated variant must be ignored.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Transfer.xml0000644000175100017520000000472112530423576024576 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The handle of the member to transfer The handle of the destination contact Request that the given channel member instead connects to a different contact ID. An interface for channels where you may request that one of the members connects to somewhere else instead.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Contact_Capabilities.xml0000644000175100017520000003465412530423576027615 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006, 2008 Collabora Limited Copyright (C) 2005, 2006, 2008 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

Contact capabilities describe the channel classes which may be created with a given contact in advance of attempting to create a channel. Each capability represents a commitment by the connection manager that it will ordinarily be able to create a channel with a contact when given a request with the properties defined by the channel class.

Capabilities pertain to particular contact handles, and represent activities such as having a text chat, a voice call with the user or a stream tube of a defined type.

This interface also enables user interfaces to notify the connection manager what capabilities to advertise for the user to other contacts. This is done by using the UpdateCapabilities method.

XMPP is a major user of this interface: XMPP contacts will not, in general, be callable using VoIP unless they advertise suitable Jingle capabilities.

Many other protocols also have some concept of capability flags, which this interface exposes in a protocol-independent way.

A structure representing the capabilities of a single client. For implementations of the Client interface, the well-known bus name name of the client; for any other process, any other reversed domain name that uniquely identifies it. An array of channel classes that can be handled by this client. This will usually be a copy of the client's HandlerChannelFilter property. An array of client capabilities supported by this client, to be used by the connection manager to determine what capabilities to advertise. This will usually be a copy of the client's Capabilities property.

Alter the connection's advertised capabilities to include the intersection of the given clients' capabilities with what the connection manager is able to implement.

On connections managed by the ChannelDispatcher, processes other than the ChannelDispatcher SHOULD NOT call this method, and the ChannelDispatcher SHOULD use this method to advertise the capabilities of all the registered Client.Handler implementations.On connections not managed by the ChannelDispatcher, clients MAY use this method directly, to indicate the channels they will handle and the extra capabilities they have.

Upon a successful invocation of this method, the connection manager will only emit the ContactCapabilitiesChanged signal for the user's SelfHandle if, in the underlying protocol, the new capabilities are distinct from the previous state.

The connection manager will essentially intersect the provided capabilities and the channel classes it implements. Therefore, certain properties which are never fixed for a channel class (such as the target handle, or the Parameters property of a tube channel) will almost certainly not be advertised.

This method MAY be called on a newly-created connection while it is still in the DISCONNECTED state, to request that when the connection connects, it will do so with the appropriate capabilities. Doing so MUST NOT fail.

The capabilities of one or more clients.

For each client in the given list, any capabilities previously advertised for the same client name are discarded, then replaced by the capabilities indicated.

As a result, if a client becomes unavailable, this method SHOULD be called with a Handler_Capabilities structure containing its name, an empty list of channel classes, and an empty list of capabilities. When this is done, the connection manager SHOULD free all memory associated with that client name.

This method takes a list of clients so that when the channel dispatcher first calls it (with a list of all the Handlers that are initially available), the changes can be made atomically, with only one transmission of updated capabilities to the network. Afterwards, the channel dispatcher will call this method with a single-element list every time a Handler becomes available or unavailable.

The connection manager MUST ignore any channel classes and client capabilities for which there is no representation in the protocol or no support in the connection manager.

An array of contact handles for this connection.

The handle zero MUST NOT be included in the request.

A map from contact handles to lists of requestable channel classes, representing the channel requests that are expected to succeed for that contact.

Contacts listed among Handles whose capabilities are unknown SHOULD be omitted from this map; contacts known to have an empty set of capabilities SHOULD be included in the keys of this map, with an empty array as the corresponding value.

Returns an array of requestable channel classes for the given contact handles, representing the channel requests that are expected to succeed.

The handle does not represent a contact. Zero is always invalid.
All the capabilities of the contacts

Announce that there has been a change of capabilities on the given handles. A single signal can be emitted for several contacts.

The underlying protocol can get several contacts' capabilities at the same time.

A mapping from contact handle to their capabilities. A contact handle.

The contact's capabilities. These should be represented in the same way as in RequestableChannelClasses, except that they may have more fixed properties or fewer allowed properties, to represent contacts who do not have all the capabilities of the connection.

In particular, requestable channel classes for channels with target handle type Contact MUST list TargetHandleType among their fixed properties when they appear here, and clients MAY assume that this will be the case.

This matches the initial implementations - service-side in telepathy-gabble, and client-side in telepathy-qt4 - and means that clients can use exactly the same code to interpret RequestableChannelClasses and contact capabilities.

Channel classes with target handle type Handle_Type_Contact indicate that a request that matches the channel class, and also either has the contact's handle as TargetHandle or the contact's identifier as TargetID, can be expected to succeed. Connection managers SHOULD NOT include the TargetHandle or TargetID as a fixed property in contact capabilities.

This makes one channel class sufficient to describe requests via TargetHandle or TargetID, and is necessary in order to allow clients to interpret RequestableChannelClasses and contact capabilities with the same code.

Channel classes with target handle type Handle_Type_Room or Handle_Type_None indicate that if a channel matching the channel class is created, then inviting the contact to that channel can be expected to succeed.

To support room-based XMPP protocols like Muji and MUC Tubes, it's necessary to be able to discover who can be invited to a given room channel; most XMPP contacts won't support being invited into a Muji conference call, at least in the short to medium term.

No interpretation is defined for channel classes with any other target handle type, or for channel classes that do not fix a target handle type, in this version of the Telepathy specification.

The same structs that would be returned by GetContactCapabilities. Omitted from the result if the contact's capabilities are not known; present in the result as an empty array if the contact is known to have no capabilities at all.

telepathy-qt-0.9.6.1/spec/Connection_Manager.xml0000644000175100017520000007311212530423576023133 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2012 Collabora Limited Copyright (C) 2005-2008 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The name of a connection manager, found in its well-known bus name and object path. This must be a non-empty string of ASCII letters, digits and underscores, starting with a letter. This is typically the name of the executable with any "telepathy-" prefix removed, and any hyphen/minus signs replaced by underscores.

Connection manager names SHOULD NOT be the same as the name of the protocol they implement.

This is likely to lead to conflicts between different implementations of the same protocol (or indeed inability to distinguish between the different implementations!). The Telepathy project traditionally uses some sort of pun (Haze is based on libpurple, Salut implements a protocol often called Bonjour, and Wilde implements the OSCAR protocol).

Connection manager names SHOULD NOT be the same as the name of a library on which they are based.

We often abbreviate, for instance, telepathy-haze as “Hazeâ€, but abbreviating telepathy-sofiasip—since renamed to telepathy-rakia for exactly this reason—to “Sofia-SIP†caused confusion between the connection manager and the library it uses. Please don't repeat that mistake.

Prior to version 0.17.1, the allowed characters were not specified

An instant messaging protocol. It must consist only of ASCII letters, digits and hyphen/minus signs (U+002D "-"), and must start with a letter. Where possible, this SHOULD be chosen from the following well-known values:

  • aim - AOL Instant Messenger (OSCAR or TOC)
  • gadugadu - Gadu-Gadu
  • groupwise - Novell Groupwise
  • icq - ICQ (OSCAR)
  • irc - Internet Relay Chat (RFC 1459, 2810-2813)
  • jabber - XMPP (RFC 3920, 3921) or Jabber
  • local-xmpp - Link-local XMPP (XEP-0174) (Bonjour, Salut)
  • msn - MSNP (Windows Live Messenger)
  • myspace - MySpaceIM
  • mxit - MXit
  • napster - Napster
  • qq - Tencent QQ
  • sametime - IBM Lotus Sametime
  • silc - SILC
  • sip - Session Initiation Protocol (SIP), with or without SIMPLE support
  • skype - Skype
  • tel - telephony (the PSTN, including GSM, CDMA and fixed-line telephony)
  • trepia - Trepia
  • yahoo - YMSG (Yahoo! Messenger)
  • yahoojp - Japanese version of YMSG
  • zephyr - Zephyr
Prior to version 0.17.1, the allowed characters were not specified
A struct representing an allowed parameter, as returned by GetParameters on the ConnectionManager interface. A string parameter name A bitwise OR of the parameter flags A string containing the D-Bus type signature for this parameter The default value (if the Has_Default flag is not present, there is no default and this takes some dummy value, which SHOULD be of the appropriate D-Bus type) This parameter is required for connecting to the server. This parameter is required for registering an account on the server. This parameter has a default value, which is returned in GetParameters; not providing this parameter is equivalent to providing the default.

This parameter should be considered private or secret; for instance, clients should store it in a "password safe" like gnome-keyring or kwallet, omit it from debug logs, and use a text input widget that hides the value of the parameter.

(Clients that support older connection managers may also treat any parameter whose name contains "password" as though it had this flag.)

This parameter is also a D-Bus property on the resulting Connection; a parameter named com.example.Duck.Macaroni with this flag corresponds to the Macaroni property on the com.example.Duck interface. Its value can be queried and possibly changed on an existing Connection using methods on the org.freedesktop.DBus.Properties interface.

When a new value for a parameter with this flag is passed to Account.UpdateParameters, the account manager will attempt to update its value on any running connections. Similarly, if the parameter also has the Has_Default flag, and is passed in the second argument to UpdateParameters, the default value will be applied to any running connections. Thus, clients generally do not need to directly access or update the connection property; instead, they SHOULD manipulate Account.Parameters.

This allows runtime-configurable options to be stored and maintained by the AccountManager, without needing to invent a separate account preference for “properties that should be set on the connection as soon as it is createdâ€. It was originally invented to manage Cellular preferences.

The required protocol name An array of structs representing possible parameters. Get a list of the parameters which may be specified in the Parameters of an Account (or, for specialised applications which do not use the account manager, passed to 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. The requested protocol is not supported by this manager

A map from protocol identifiers supported by a connection manager to the immutable properties of the corresponding Protocol objects.

A protocol name The immutable properties of the corresponding Protocol object

A map from protocol identifiers supported by this connection manager to the immutable properties of the corresponding Protocol objects.

Providing the immutable properties here means that when the API of Protocol objects has been finalized, most clients will only need one D-Bus round trip to interrogate the ConnectionManager about all its protocols.

If this map is empty or missing, clients SHOULD fall back to calling ListProtocols and GetParameters.

The keys of the Protocols map. Get a list of protocol identifiers that are implemented by this connection manager. The D-Bus service where the connection object can be found The object path of the Connection object on this service The identifier for the protocol this connection uses Emitted when a new Connection object is created. The protocol identifier A dictionary mapping parameter names to values of the appropriate type, as indicated by GetParameters and the well-known list of names and value types documented on the Connection_Parameter_Name type. A D-Bus service name where the new Connection object can be found The D-Bus object path to the Connection on this service

Request a Connection object representing a given account on a given protocol with the given parameters. The method returns the bus name and the object path where the new Connection object can be found, which should have the status of Connection_Status_Disconnected, to allow signal handlers to be attached before connecting is started with the Connect method.

Most applications should not use this method: they should instead use the the Connection property on an Account object obtained from the AccountManager. This method is used internally by the account manager to create connections when needed.

The parameters which must and may be provided in the parameters dictionary can be discovered with the GetParameters method. These parameters, their types, and their default values may be cached in files so that all available connection managers do not need to be started to discover which protocols are available.

To request values for these parameters from the user, a client must have prior knowledge of the meaning of the parameter names, so the well-known names and types defined by the Connection_Parameter_Name type should be used where appropriate.

Connection manager authors SHOULD avoid introducing parameters whose default values would not be serializable in a .manager file.

The same serialization format is used in Mission Control to store accounts.

Every successful RequestConnection call will cause the emission of a NewConnection signal for the same newly created connection. The requester can use the returned object path and service name independently of the emission of that signal. In that case this signal emission is most useful for, e.g. other processes that are monitoring the creation of new connections.

The requested protocol is not supported by this manager The requested connection already appears to exist Unrecognised connection parameters

Well-known connection parameter names, along with their expected type. Where possible, connection managers should use names and types from this list in the Parameters that may be passed to RequestConnection.

account (s)
The identifier for the user's account on the server
server (s)
A fully qualified domain name or numeric IPv4 or IPv6 address. Using the fully-qualified domain name form is recommended whenever possible. If this parameter is specified and the account for that protocol also specifies a server, this parameter should override that in the user id.
port (q)
A TCP or UDP port number. If this parameter is specified and the account for that protocol also specifies a port, this parameter should override that in the account.
password (s)
A password associated with the account.
require-encryption (b)
Require encryption for this connection. A connection should fail to connect if require-encryption is set and an encrypted connection is not possible.
register (b)
This account should be created on the server if it does not already exist.
ident (s)
The local username to report to the server if necessary, such as in IRC.
fullname (s)
The user's full name if the service requires this when authenticating or registering.
stun-server (s)
The IP address or FQDN of a STUN server to use for NAT traversal, without any ":port" suffix.
stun-port (q)
The UDP port number on the stun-server to use for STUN. Only significant if the stun-server is also supplied.
keepalive-interval (u)

The time in seconds between pings sent to the server to ensure that the connection is still alive, or 0 to disable such pings.

This parameter is superseded by the KeepaliveInterval property, which can be updated on an already-established connection as well as being specified when requesting the connection. Clients SHOULD provide that parameter instead, if allowed; new connection managers SHOULD implement it in preference to this one.

The following well-known parameter names correspond to D-Bus properties, and thus their Conn_Mgr_Param_Flags should include DBus_Property. See that flag for more details on this kind of parameter.

A list of the extra interfaces provided by this connection manager (i.e. extra functionality that can be provided even before a connection has been created).

No interfaces suitable for listing in this property are currently defined; it's provided as a hook for possible future functionality.

To be compatible with older connection managers, if retrieving this property fails, clients SHOULD assume that its value is an empty list.

Connection managers with a non-empty list of Interfaces MUST represent them in the .manager file, if they have one, as an Interfaces key in the group headed [ConnectionManager], whose value is a list of strings each followed by a semicolon.

A D-Bus service which allows connections to be created. The manager processes are intended to be started by D-Bus service activation.

For service discovery, each Telepathy connection manager must have a connection manager name (see Connection_Manager_Name for syntax).

The connection manager must then provide a well-known bus name of org.freedesktop.Telepathy.ConnectionManager.cmname where cmname is its connection manager name. If it makes sense to start the connection manager using D-Bus service activation, it must register that well-known name for service activation by installing a .service file.

Clients can list the running connection managers by calling the ListNames method on the D-Bus daemon's org.freedesktop.DBus interface and looking for names matching the above pattern; they can list the activatable connection managers by calling ListActivatableNames, and they should usually combine the two lists to get a complete list of running or activatable connection managers.

When the connection manager is running, it must have an object implementing the ConnectionManager interface at the object path /org/freedesktop/Telepathy/ConnectionManager/cmname.

Connection managers' capabilities can be determined dynamically by calling their ListProtocols method, then for each protocol of interest, calling GetParameters to discover the required and optional parameters. However, since it is inefficient to activate all possible connection managers on the system just to find out what they can do, there is a standard mechanism to store static information about CMs in ".manager files".

To look up a connection manager's supported protocols, clients should search the data directories specified by the freedesktop.org XDG Base Directory Specification ($XDG_DATA_HOME, defaulting to $HOME/.local/share if unset, followed by colon-separated paths from $XDG_DATA_DIRS, defaulting to /usr/local/share:/usr/share if unset) for the first file named telepathy/managers/cmname.manager that can be read without error. This file has the same syntax as a freedesktop.org Desktop Entry file.

Clients must still support connection managers for which no .manager file can be found, which they can do by activating the connection manager and calling its methods; the .manager file is merely an optimization. Connection managers whose list of protocols can change at any time (for instance, via a plugin architecture) should not install a .manager file.

The .manager file SHOULD have a group headed [ConnectionManager], containing a key Interfaces representing Interfaces as a sequence of strings each followed by a semicolon (the "localestrings" type from the Desktop Entry Specification).

The [ConnectionManager] group SHOULD NOT contain keys ObjectPath or BusName. If it does, they MUST be ignored.

The object path and bus name are derivable from the connection manager's name, which is part of the filename, so these keys are redundant. They were required in very old versions of Telepathy.

For each protocol name proto that would be returned by ListProtocols, the .manager file contains a group headed [Protocol proto]. For each parameter p that would be returned by GetParameters(proto), the .manager file contains a key param-p with a value consisting of a D-Bus signature (a single complete type), optionally followed by a space and a space-separated list of flags. The supported flags are:

  • required, corresponding to Conn_Mgr_Param_Flag_Required
  • register, corresponding to Conn_Mgr_Param_Flag_Register
  • secret, corresponding to Conn_Mgr_Param_Flag_Secret
  • dbus-property, corresponding to Conn_Mgr_Param_Flag_DBus_Property

The group may also contain a key default-p whose value is a string form of the default value for the parameter. If this key exists, it sets the default, and also sets the flag Conn_Mgr_Param_Flag_Has_Default. The default value is formatted according to the D-Bus signature as follows:

s (string)
The UTF-8 string, with the standard backslash escape sequences supported by the Desktop Entry Specification (the "localestring" type from the Desktop Entry Specification)
o (object path)
The object path as an ASCII string
b (boolean)
"true" (case-insensitively) or "1" means True, "false" (case-insensitively) or "0" means False; when writing a file, "true" and "false" SHOULD be used
y, q, u, t (8-, 16-, 32-, 64-bit unsigned integer)
ASCII decimal integer
n, i, x (16-, 32-, 64-bit signed integer)
ASCII decimal integer, optionally prefixed with "-"
d (double-precision floating point)
ASCII decimal number
as (array of string), ao (array of object path)
A sequence of UTF-8 strings each followed by a semicolon, with any semicolons they contain escaped with a backslash (the "localestrings" type from the Desktop Entry Specification)

Currently, no other D-Bus signatures are allowed to have default values, but clients parsing the .manager file MUST ignore defaults that they cannot parse, and treat them as if the default-p key was not present at all.

It is not required that a connection manager be able to support multiple protocols, or even multiple connections. When a connection is made, a service name where the connection object can be found is returned. A manager which can only make one connection may then remove itself from its well-known bus name, causing a new connection manager to be activated when somebody attempts to make a new connection.

Prior to version 0.17.2, support for CMs with no .manager file was not explicitly required. Prior to version 0.17.16 the serialization of string arrays (signature 'as') was not defined Prior to version 0.25.2 the serialization of object-path arrays (signature 'ao') was not defined
telepathy-qt-0.9.6.1/spec/Channel_Dispatcher.xml0000644000175100017520000010270612530423576023122 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

The channel dispatcher is responsible for responding to new channels and launching client processes to handle them. It also provides functionality for client processes to request that new channels are created.

If a channel dispatcher is running, it is responsible for dispatching new channels on all Connections created by the AccountManager. Connections not created by the AccountManager are outside the scope of the channel dispatcher.

Connections created by standalone Telepathy clients that do not intend to interact with the channel dispatcher should be ignored - otherwise, the channel dispatcher would try to launch handlers for channels that the standalone client was already handling internally.

The current channel dispatcher is defined to be the process that owns the well-known bus name org.freedesktop.Telepathy.ChannelDispatcher on the session bus. This process MUST export an object with this interface at the object path /org/freedesktop/Telepathy/ChannelDispatcher.

Until a mechanism exists for making a reasonable automatic choice of ChannelDispatcher implementation, implementations SHOULD NOT register as an activatable service for the ChannelDispatcher's well-known bus name. Instead, it is RECOMMENDED that some component of the user's session will select and activate a particular implementation, and that other Telepathy-enabled programs can detect whether channel request/dispatch functionality is available by checking whether the ChannelDispatcher's well-known name is in use at runtime.

There are three categories of client process defined by this specification:

Observer

Observers monitor the creation of new channels. This functionality can be used for things like message logging. All observers are notified simultaneously.

Approver

Approvers notify the user that new channels have been created, and also select which channel handler will be used for the channel, either by asking the user or by choosing the most appropriate channel handler.

Handler

Each new channel or set of channels is passed to exactly one handler as its final destination. A typical channel handler is a user interface process handling channels of a particular type.

A list of the extra interfaces provided by this channel dispatcher.

Equivalent to calling CreateChannelWithHints with an empty Hints parameter.

The Account for which the new channel is to be created.

A dictionary containing desirable properties.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

Previously, the spec didn't say that this should disregard the handler's filter. This has been implemented since telepathy-mission-control 5.3.2.
A ChannelRequest object. The Preferred_Handler is syntactically invalid or does not start with org.freedesktop.Telepathy.Client., the Account does not exist, or one of the Requested_Properties is invalid

Equivalent to calling EnsureChannelWithHints with an empty Hints parameter.

The Account for which the new channel is to be created.

A dictionary containing desirable properties.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable. The behaviour and rationale are the same as for the corresponding parameter to EnsureChannelWithHints.

A ChannelRequest object. The Preferred_Handler is syntactically invalid or does not start with org.freedesktop.Telepathy.Client., the Account does not exist, or one of the Requested_Properties is invalid
Support for this method is indicated by the SupportsRequestHints property. Clients MUST recover from this method being unsupported by falling back to CreateChannel.

Start a request to create a channel. This initially just creates a ChannelRequest object, which can be used to continue the request and track its success or failure.

The request can take a long time - in the worst case, the channel dispatcher has to ask the account manager to put the account online, the account manager has to ask the operating system to obtain an Internet connection, and the operating system has to ask the user whether to activate an Internet connection using an on-demand mechanism like dialup.

This means that using a single D-Bus method call and response to represent the whole request will tend to lead to that call timing out, which is not the behaviour we want.

If this method is called for an Account that is disabled, invalid or otherwise unusable, no error is signalled until ChannelRequest.Proceed is called, at which point ChannelRequest.Failed is emitted with an appropriate error.

This means there's only one code path for errors, apart from InvalidArgument for "that request makes no sense".

It also means that the request will proceed if the account is enabled after calling CreateChannel, but before calling Proceed.

The Account for which the new channel is to be created.

A dictionary containing desirable properties. This has the same semantics as the corresponding parameter to Connection.Interface.Requests.CreateChannel.

Certain properties will not necessarily make sense in this dictionary: for instance, TargetHandle can only be given if the requester is able to interact with a Connection to the desired account.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action. The UserActionTime property will be set to this value, and it will eventually be passed as the User_Action_Time parameter of HandleChannels.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable. The channel dispatcher SHOULD dispatch as many as possible of the resulting channels (ideally, all of them) to that handler—irrespective of whether that handler's HandlerChannelFilter matches the channel—and SHOULD remember the preferred handler so it can try to dispatch subsequent channels in the same bundle to the same handler.

This must be the well-known bus name, not the unique name, to ensure that all handlers do indeed have the Client API, and the Client object on the handler can be located easily.

This is partly so the channel dispatcher can call HandleChannels on it, and partly so the channel dispatcher can recover state if it crashes and is restarted.

The filter should be disregarded for ease of use of this interface: clients will usually use this argument to request channels be sent to themself, and this should trump the filter not matching. This also allows a client to become the handler for a channel produced by one of its own requests, while not being a candidate to handle other channels of that type.

If this is a well-known bus name and the handler has the Requests interface, the channel dispatcher SHOULD call AddRequest on that Handler after this method has returned.

This ordering allows a Handler which calls CreateChannel with itself as the preferred handler to associate the call to AddRequest with that call.

This is copied to the ChannelRequest that is returned, as the PreferredHandler property.

Previously, the spec didn't say that this should disregard the handler's filter. This has been implemented since telepathy-mission-control 5.3.2.

Additional information about the channel request, which will be used as the value for the resulting request's Hints property.

See the Hints property's documentation for rationale.

A ChannelRequest object. The Preferred_Handler is syntactically invalid or does not start with org.freedesktop.Telepathy.Client., the Account does not exist, or one of the Requested_Properties is invalid
Support for this method is indicated by the SupportsRequestHints property. Clients MUST recover from this method being unsupported by falling back to EnsureChannel.

Start a request to ensure that a channel exists, creating it if necessary. This initially just creates a ChannelRequest object, which can be used to continue the request and track its success or failure.

If this method is called for an Account that is disabled, invalid or otherwise unusable, no error is signalled until ChannelRequest.Proceed is called, at which point ChannelRequest.Failed is emitted with an appropriate error.

The rationale is as for CreateChannelWithHints.

The Account for which the new channel is to be created.

A dictionary containing desirable properties. This has the same semantics as the corresponding parameter to Connection.Interface.Requests.EnsureChannel.

Certain properties will not necessarily make sense in this dictionary: for instance, TargetHandle can only be given if the requester is able to interact with a Connection to the desired account.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, or an empty string to indicate that any handler would be acceptable. The behaviour and rationale are the same as for the corresponding parameter to CreateChannelWithHints, except as noted here.

If any new channels are created in response to this request, the channel dispatcher SHOULD dispatch as many as possible of the resulting channels (ideally, all of them) to that handler, and SHOULD remember the preferred handler so it can try to dispatch subsequent channels in the same bundle to the same handler. If the requested channel already exists (that is, Connection.Interface.Requests.EnsureChannel returns Yours=False) then the channel dispatcher SHOULD re-dispatch the channel to its existing handler, and MUST NOT dispatch it to this client (unless it is the existing handler); the request is still deemed to have succeeded in this case.

An address book application, for example, might call EnsureChannel to ensure that a text channel with a particular contact is displayed to the user; it does not care whether a new channel was made. An IM client might call EnsureChannel in response to the user double-clicking an entry in the contact list, with itself as the Preferred_Handler; if the user already has a conversation with that contact in another application, they would expect the existing window to be presented, rather than their double-click leading to an error message. So the request should succeed, even if its Preferred_Handler is not used.

Additional information about the channel request, which will be used as the value for the resulting request's Hints property. A ChannelRequest object. The Preferred_Handler is syntactically invalid or does not start with org.freedesktop.Telepathy.Client., the Account does not exist, or one of the Requested_Properties is invalid
Implemented since telepathy-mission-control 5.7.12. This method now returns Delegated and Not_Delegated instead of nothing. HandleChannels is now called once per Channel in Channels.

Called by a Handler to redispatch a bunch of channels it is currently handling.

For each Channel in Channels, if another Handler can be found, HandleChannels will be called on it until a Handler accepts it.

This method returns once all the Channels have either been accepted or rejected by Handlers.

If this method fails, the original Handler is still handling the channels.

The list of channels to redispatch. The caller has to be the current Handler of all of these channels

The time at which user action occurred, or 0 if this channels delegation is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to CreateChannelWithHints.

Either the well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the preferred new handler for these channels, or an empty string to indicate that any handler would be acceptable. The behaviour and rationale are the same as for the corresponding parameter to CreateChannelWithHints.

The list of channels which have been delegated; the caller is no longer handling these channels.

The client should remove these channels from its HandledChannels property.

The list of channels which have NOT been delegated; the caller is still handling these channels.

The Preferred_Handler is syntactically invalid or does not start with org.freedesktop.Telepathy.Client.. At least one Channel in Channels is not currently handled by the caller. No Channel has been delegated.
A mapping associating not delegated channel with an error. The path of the channel An error describing why the channel has not be delegated the name of a D-Bus error describing what went wrong. a human-readable informative error message. Implemented since telepathy-mission-control 5.7.12.

Equivalent of calling EnsureChannel with a Requested_Properties which would result in ensuring Channel.

If Channel is handled, its handler will be asked to present it the user (e.g. bring it into the foreground).

The channel to present.

The time at which user action occurred, or 0 if this channel request is for some reason not involving user action.

This parameter is used in the same way as the corresponding parameter to EnsureChannelWithHints.

The Account does not exist, the Channel does not exist or it does not belong to the Account.
If True, the channel dispatcher is new enough to support CreateChannelWithHints and EnsureChannelWithHints, in addition to the older CreateChannel and EnsureChannel methods, and also new enough to emit SucceededWithChannel before the older Succeeded signal. If False or missing, only the metadata-less variants are supported.
telepathy-qt-0.9.6.1/spec/Account_Manager_Interface_Hidden.xml0000644000175100017520000000774312530423576025672 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd. Copyright © 2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface lists accounts whose Hidden property is True.

first draft A list of valid (complete, usable) Accounts intended exclusively for noninteractive applications. These accounts are not included in AccountManager.ValidAccounts. Change notification is via HiddenAccountValidityChanged. A list of incomplete or otherwise unusable Accounts intended exclusively for noninteractive applications. Change notification is via HiddenAccountValidityChanged. The given account has been removed from ValidHiddenAccounts or InvalidHiddenAccounts. An Account, which must not be used any more. The validity of the given account has changed. New magic accounts are also indicated by this signal, as an account validity change (usually to True) on an account that did not previously exist. This is effectively change notification for the valid and invalid accounts lists. An Account. True if the account is now valid.
telepathy-qt-0.9.6.1/spec/Channel_Bundle.xml0000644000175100017520000000422712530423576022244 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Ltd. Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A group of related channels, which should all be dispatched to the same handler if possible.

Bundles currently have no functionality of their own, so clients SHOULD NOT examine this interface, but should instead treat the bundle object-path as an opaque identifier. If more functionality is added to bundles in future, this interface will be used for capability discovery.

The lifetime of a bundle is defined by its component channels - as long as one or more channels whose Bundle property is B exist, the bundle B will also exist.

A list of the extra interfaces provided by this channel bundle.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Call_State.xml0000644000175100017520000001374012530423576025026 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Limited Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

An interface for streamed media channels that can indicate call progress or call states. The presence of this interface is no guarantee that call states will actually be signalled (for instance, SIP implementations are not guaranteed to generate status 180 Ringing, so a call can be accepted without the Ringing flag ever having been set; similarly, Jingle implementations are not guaranteed to send <ringing/>).

To notify the other participant in the call that they are on hold, see Hold.

Get the current call states for all contacts involved in this call. The current call states. Participants where the call state flags would be 0 (all unset) may be omitted from this mapping. Emitted when the state of a member of the channel has changed. An integer handle for the contact. The new state for this contact. A map from contacts to call states. A contact involved in this call. State flags for the given contact. A set of flags representing call states. The contact has been alerted about the call but has not responded (e.g. 180 Ringing in SIP). The contact is temporarily unavailable, and the call has been placed in a queue (e.g. 182 Queued in SIP, or call-waiting in telephony). The contact has placed the call on hold, and will not receive media from the local user or any other participants until they unhold the call again. The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted. Progress has been made in placing the outgoing call, but the destination contact may not have been made aware of the call yet (so the Ringing state is not appropriate). This corresponds to SIP's status code 183 Session Progress, and could be used when the outgoing call has reached a gateway, for instance. This contact has merged this call into a conference. Note that GSM provides a notification when the remote party merges a call into a conference, but not when it is split out again; thus, this flag can only indicate that the call has been part of a conference at some point. If a GSM connection manager receives a notification that a call has been merged into a conference a second time, it SHOULD represent this by clearing and immediately re-setting this flag on the remote contact.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Splittable.xml0000644000175100017520000000604412530423576025115 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009 Collabora Limited Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

An interface for channels that can be made conceptually part of a Conference, and can then be detached from that conference.

This interface addresses part of freedesktop.org bug #24906 (GSM-compatible conference calls). GSM is currently the only protocol known to implement this; PBXs might implement it too.

Request that this channel is removed from any Conference of which it is a part.

This implies that the media streams within the conference are put on hold and the media streams within the member channel leaving the conference are unheld.

This channel isn't in a conference. This channel is in a conference but can't currently be split away from it.
telepathy-qt-0.9.6.1/spec/Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml0000644000175100017520000001412312530423576033554 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API)

This codec offer interface provides a method of signalling for RTCP extended reports, documented by RTP Control Protocol Extended Reports (RTCP XR) (RFC 3611). CMs should ignore all RTCP Extended Report parameters that are not listed in this spec at the time of implementation. More parameters can be added to the spec as required.

For more details on what RTCP extended reports can do and how to use them, one should refer to RFC 3611.

If non-zero, enable Loss Run Length Encoded Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit. If non-zero, enable Duplicate Run-Length-Encoded Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit. If non-zero, enable Packet Receipt Times Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit. If non-zero, enable Receiver Reference Time and Delay since Last Receiver Report Blocks (for estimating Round Trip Times between non-senders and other parties in the call. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit. Who is allowed to send Delay since Last Receiver Reports. Which fields SHOULD be included in the statistics summary report blocks that are sent, and whether to send VoIP Metrics Report Blocks. There can be zero or more flags set. Whether to enable VoIP Metrics Report Blocks. These blocks are of a fixed size. Loss report flag, as defined in RFC3611 section 4.6. Duplicate report flag, as defined in RFC3611 section 4.6. Jitter flag, as defined in RFC3611 section 4.6. First bit of TTL or Hop Limit flag, as defined in RFC3611 section 4.6. Second bit of TTL or Hop Limit flag, as defined in RFC3611 section 4.6. Both RTP data senders and data receivers MAY send DLRR blocks. Only active RTP senders MAY send DLRR blocks, i.e., non RTP senders SHALL NOT send DLRR blocks.
telepathy-qt-0.9.6.1/spec/Call_Content_Interface_Media.xml0000644000175100017520000005651412530423576025035 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009-2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

Interface to use by a software implementation of media streaming. The reason behind splitting the members of this interface out from the main Content interface is that the software is not necessarily what controls the media. An example of this is in GSM phones, where the CM just tells the phone to dial a number and it does the audio routing in a device specific hardware way and the CM does not need to concern itself with codecs.

Codec Negotiation

When a new Call1 channel appears (whether it was requested or not) a MediaDescription object will either be waiting in the MediaDescriptionOffer property, or will appear at some point via the NewMediaDescriptionOffer signal.

If nothing is known about the remote side's Media capabilities (e.g. outgoing SIP/XMPP call), this MediaDescription will pop up with {HasRemoteInformation = false, FurtherNegotiationRequired = true}, and the local user's streaming implementation SHOULD call Accept, with a description of all supported codecs and other features. The CM will then send this information to the remote side (and LocalMediaDescriptionChanged will fire with details of the description passed into Accept for debugging purposes).

When the remote codecs and other content information are available (e.g. Remote user replies to initial offer, or sends a new offer of their own, a new MediaDescription will appear, with {HasRemoteInformation = true, FurtherNegotiationRequired = false}, and the Codecs property on the description offer set to the codecs which are supported by the remote contact. The local user's streaming implementation SHOULD then call Accept, with a description that is compatible with the one one in the offer. After the codec set is accepted, both LocalMediaDescriptionChanged and RemoteMediaDescriptionsChanged will fire to signal their respective changes, to aid with debugging. Note that if Accept is called, with FurtherNegotiationRequired set to false, the CM should be able to rely on the fact that the description passed into Accept is compatible with the one in the offer, and the description passed into Accept will not be signalled to the remote side.

Changing codecs mid-call

To update the codecs in the local (and optionally remote) media descriptions mid-call, the UpdateLocalMediaDescription method should be called with details of the new codec list. If this is accepted, then LocalMediaDescriptionChanged will be emitted with the new codec set.

If parameters requiring negotiation are changed, then the FurtherNegotiationRequired property should be set to TRUE, and the new media description should only be used once they come in a new MediaDescriptionOffer

If the other side decides to update his or her codec list during a call, a new MediaDescription object will appear through NewMediaDescriptionOffer which should be acted on as documented above.

Protocols without negotiation

For protocols where the codecs are not negotiable, the initial content's MediaDescription object will appear with HasRemoteInformation, set to true and the known supported codec values in Codecs.

A description of a codec. Numeric identifier for the codec. This will be used as the PT in the SDP or content description. The name of the codec. The clockrate of the codec. Number of channels of the codec if applicable, otherwise 0. This should be set to true in calls to Accept and UpdateLocalMediaDescription if this codec has changed in a way that needs to be signalled over the network. If it is set to false, the CM is allowed ignore any differences between the current parameters and the previous ones This mechanism may be used to save bandwidth and avoid the CM having to calculate diffs against previous versions of this struct, which can lead to false-positives (e.g. redundant ptime updates). Extra parameters for this codec. A map from contact to the list of codecs he or she supports. A contact handle. The codecs that the contact supports. The remote contact this description refers to or 0. This matches the RemoteContact property on MediaDescription The properties of the description The remote description offer and its information The object path to the MediaDescription The immutable properties of all interfaces of the codec description. Having all the codec description properties here saves a D-Bus round-trip - it shouldn't be necessary to get the properties from the MediaDescription object, in practice. Update the local codec mapping and other interfaces of the MediaDescription. This method should only be used during an existing call to update the local media description. This may trigger a re-negotiation which may result in new new MediaDescriptionOffers if the "FurtherNegotiationRequired" property is TRUE. Otherwise, only parameters which strictly describe the media being sent can be changed. The updated media description that the local side wants to use. The protocol does not support changing the codecs mid-call. The description given is invalid in some way.

A map from contact handles to descriptions supported by that contact.

Keys of this map will appear in at most one RemoteMembers. See RemoteContact for more details on how to map between MediaDescriptions and Streams.

A map from contact handles to the descriptions the local side responsed with.

Emitted when a new MediaDescription appears. The streaming >implementation MUST respond by calling the Accept or Reject method on the description object appeared.

Emission of this signal indicates that the MediaDescriptionOffer property has changed to (Description, Contact, MediaDescriptionProperties).

When the MediaDescriptionOffer has been dealt with then MediaDescriptionOfferDone must be emitted before NewMediaDescriptionOffer is emitted again.

The object path of the new media description. This replaces any previous media description. The immutable properties of the remote media description. Having all the MediaDescription properties here saves a D-Bus round-trip - it shouldn't be necessary to get the properties from the MediaDescription object, in practice.

Emitted when a MediaDescription has been handled.

Emission of this signal indicates that the MediaDescriptionOffer property has changed to ("/", 0, {}).

Change notification for LocalMediaDescriptions

The local content description that was updated

Change notification for RemoteMediaDescriptions

The remote content descriptions that were updated

Removal notification for RemoteMediaDescriptions and LocalMediaDescriptions

The local and remote content descriptions that are no longer part of this content

The object path to the current MediaDescription object, its RemoteContact and a mapping of the MediaDescriptions properties. If the object path is "/" then there isn't an outstanding content description, and the mapping MUST be empty.

Having all MediaDescription properties here saves a D-Bus round-trip - it shouldn't be necessary to get these properties from the Content MediaDescription object, in practice.

Change notification is via the NewMediaDescriptionOffer and MediaDescriptionOfferDone signals.

A packetization method that can be used for a content. Real-time Transport Protocol, as documented by RFC 3550. Raw media. MSN webcam. This is the video-only one-way type which was used in earlier versions of WLM. Although no longer used, modern WLM clients still support the MSN webcam protocol.

The packetization method in use for this content.

Used by the CM to relay instructions from Channel.Interface.DTMF to the streaming implementation. If any contact in this call supports the telephone-event codec in their MediaDescription, this event should be sent as outlined in RFC 4733. Otherwise, it should be sent as an audible tone. The event to send (or stop sending). Either Pending_Send or Pending_Stop_Sending. Called by the streaming implementation in response to DTMFChangeRequested to confirm that it has started or stopped sending the event in question. The event referred to in the corresponding DTMFChangeRequested signal. Either Sending or None. The currently requested DTMF event (for state-recoverability of DTMFChangeRequested). Should be ignored if CurrentDTMFState is None. The current DTMF state (for state-recoverability of DTMFChangeRequested). Signal an unrecoverable error for this content, and remove it. A reason struct describing the error.
telepathy-qt-0.9.6.1/spec/Call_Content_Media_Description.xml0000644000175100017520000002446512530423576025420 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009-2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) This object represents a remote Description Offer to which the local streaming implementation should reply with its local Description. This is intended as a temporary transactional object for use with Content.Interface.Media. There will always be 0 or 1 MediaDescription object per Content. In most cases, this object will stay alive until you call either Accept or Reject, and then disappear. There are some cases (e.g. an endpoint being removed from the call) where a MediaDescription object will disappear before you have had a chance to either Accept or Reject it. The local description to send to the remote contacts and to use in the Content. Accepts the updated Description and update the corresponding local description. If FurtherNegotiationRequired is True, calling this method will generally cause a network round-trip and a new MediaDescription to be offered (hopefully with FurtherNegotiationRequired set to False). The description given is invalid in some way. Reject the proposed update to the remote description. A structured reason for the rejection.

Extra interfaces provided by this media description. This SHOULD NOT include the Description interface itself.

If this is set to True by the CM in a MediaDescriptionOffer, it means "This is an offer under the SDP Offer/Answer model. Whatever you accept this offer with is what I will send to the other side in my answer." If this is set to False by the CM then it means "This is an Answer under the SDP Offer/Answer model, and if it remains False in the Accept(), no further codec negotiation needs to happen." If this is set to True by the streaming implementation (e.g. in an Accept or UpdateLocalMediaDescription call) then a new SDP Offer/Answer round-trip will be initiated.

True if this offer contains information from the remote side: If False then the Accept response solely depends on the capabilities and preferences of the local side. In most protocols this property will be False for the initial DescriptionOffer on an outgoing call.

A list of codecs the remote contact supports. When used with Accept, it means the locally supported codecs. The contact handle that this description applies to. This property can be used as an opaque identifier, and searched for in RemoteMembers for each Stream in this Content, to determine which Stream this MediaDescription applies to. If multiple MediaDescriptions apply to the same Stream, the SSRCs property should be used to separate media before decoding. If this property is 0, this MediaDescription applies to all streams, so the above matching method is unneccesary (e.g. in conference calls with a mixer, media from all participants is mixed into one stream). When calling Accept or UpdateLocalMediaDescription, this should always be set to 0, or omitted, because it is assumed that you send the same MediaDescription to everyone (Encoding a stream separately for each contact in a call is inefficient, and should be avoided). The remote contact these SSRCs belong to or 0. The list of Synchronisation Sources.

A map from Handle to list of Synchronisation Sources, as defined by RFC 3550.

Some protocols require the negotiation of SSRC identifiers for RTP streams. If this is the case, then MediaDescription offers will appear with this property set. The streaming implementation should then call Accept with a map from 0 to a list containing a single SSRC (which does not collide with these, or any previously seen SSRCs). If a new MediaDescription offer appears with an SSRC the same as one in LocalMediaDescriptions, then the streaming implementation should pick a new SSRC to resolve the collision.

It is expected that this list will normally be at most one element long, but it is kept as a list for extensibility. The concatenation of all SSRCs associated with a Stream should contain no duplicate entries. If there are collisions, then it is the responsibility of the protocol implementation to resolve them and generate new offers.

If this property is omitted, then the streaming implementation can assume that there is only one MediaDescription per Stream.

If there is a single multicast Call Stream with multiple Remote Members, and all members are forced to use the same MediaDescription, this map can be used by the streaming implementation to determine which video sources belong to which contacts (e.g. in order to put a name under each face in the call)

A mapping containing all properties that define the information from a MediaDescription and its interfaces.

If HasRemoteInformation is True, then this mapping will always contains at least Codecs

A D-Bus interface name, followed by a dot and a D-Bus property name. The value of the property
telepathy-qt-0.9.6.1/spec/Channel_Interface_SMS.xml0000644000175100017520000003140612530423576023454 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008–2010 Nokia Corporation Copyright © 2010 Collabora Ltd. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Imported from rtcom-telepathy-glib, with the unused properties removed and the documentation tidied up.

This interface contains SMS-specific properties for text channels.

The presence of this interface on a channel does not imply that messages will be delivered via SMS.

This interface MAY appear in the Interfaces property of channels where SMSChannel would be immutable and false. It SHOULD appear on channels where SMSChannel is immutable and true, and also on channels where SMSChannel is mutable (i.e. channels that might fall back to sending SMS at any time, such as on MSN).

Handler filters

A handler for class 0 SMSes should advertise the following filter:

{ ...ChannelType: ...Text,
  ...TargetHandleType: Contact,
  ...SMS.Flash: True,
}

It should also set its BypassApproval property to True, so that it is invoked immediately for new channels.

Contact Capabilities

Contacts to whom SMSes can be sent SHOULD indicate this via a requestable channel class with SMSChannel = True as a fixed property.

For instance, a contact that can accept both text and SMS channels:

[
({ ...ChannelType: ...Text,
   ...TargetHandleType: Contact,
 },
 [ ...TargetHandle, ...TargetID ]),

({ ...ChannelType: ...Text,
   ...TargetHandleType: Contact,
   ...SMSChannel: True,
 },
 [ ...TargetHandle, ...TargetID ]),
]

If True, then this channel is exclusively for receiving class 0 SMSes (and no SMSes can be sent using SendMessage on this channel). If False, no incoming class 0 SMSes will appear on this channel.

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. NewChannels signals.

Class 0 SMSes should be displayed immediately to the user, and need not be saved to the device memory unless the user explicitly chooses to do so. This is unlike “normalâ€, class 1 SMSes, which must be stored, but need not be shown immediately in their entirity to the user.

Separating class 0 SMSes into their own channel with this immutable property allows them to be dispatched to a different Handler—which would include this property in its HandlerChannelFilter—avoiding the normal Text channel handler having to decide for each message whether it should be displayed to the user immediately or handled normally.

Currently, no mechanism is defined for sending class 0 SMSes. It seems reasonable to support specifying the class of an outgoing SMS in its header Message_Part, rather than requiring the UI to request a special channel for such SMSes; hence, we define here that channels with Flash set to True are read-only.

If TRUE, messages sent and received on this channel are transmitted via SMS.

If this property is included in the channel request, the Connection Manager MUST return an appropriate channel (i.e. if TRUE the channel must be for SMSes, if FALSE it must not), or else fail to provide the requested channel with the NotCapable error.

For example, to explicitly request an SMS channel to a contact. You might construct a channel request like:

{
  Channel.Type: Channel.Type.Text,
  Channel.TargetHandleType: Handle_Type_Contact,
  Channel.TargetID: escher.cat,
  Channel.Interface.SMS.SMSChannel: True,
}
Some protocols allow us to send SMSes to a remote contact, without knowing the phone number to which those SMSes will be sent. This provides a mechanism to request such channels.

If this property is not included in the channel request, the Connection Manager MAY return an SMS channel if that is the most appropriate medium (i.e. if the channel target is a phone number).

To some types of identifiers (i.e. phone numbers) it only makes sense to return an SMS channel, this is what happens currently with telepathy-ring. We don't want to break this behaviour when we are not explicit about the type of channel we want. Alternatively, for protocols where there is an SMS fallback for IM messages, it's possible that we don't care what sort of channel we get, and simply want notification of the transport.

Some protocols have a fallback to deliver IM messages via SMS. On these protocols, the Connection Manager SHOULD set the property value as appropriate, and notify its change with SMSChannelChanged.

Protocols such as MSN can fall back to delivering IM messages via SMS. Where possible we want clients to be able to inform the user that their messages are going to be redirected to the remote contact's phone.
The new value for SMSChannel. This signal indicates a change in the SMSChannel property.

Returns the number of 140 octet chunks required to send a message via SMS, as well as the number of remaining characters available in the final chunk and, if possible, an estimate of the cost.

There are a number of different SMS encoding mechanisms, and the client doesn't know which mechanisms an individual CM might support. This method allows the client, without any knowledge of the encoding mechanism, to provide length details to the user.

Clients SHOULD limit the frequency with which this method is called and SHOULD NOT call it for every keystroke. Clients MAY estimate the remaining size between single keystrokes.

The message the user wishes to send.

The number of 140 octet chunks required to send this message.

For example, in the GSM standard 7-bit encoding, a 162 character message would require 2 chunks.

The number of further characters that can be fit in the final chunk. A negative value indicates that the message will be truncated by abs(Remaining_Characters). The value MIN_INT32 (-231) indicates the message will be truncated by an unknown amount.

For example, in the GSM standard 7-bit encoding, a 162 character message would return 144 remaining characters (because of the space required for the multipart SMS header).

The estimated cost of sending this message. The currency and scale of this value are the same as the Balance.AccountBalance property.

A value of -1 indicates the cost could not be estimated.

Raised when the method is not available on this channel. Clients MAY choose to make their own estimation. Raised when the content cannot be encoded into a valid SMS.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Resources.xml0000644000175100017520000002166312530423576025517 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

An interface on connections to show contact attributes for specific resources of a contact, if the protocol supports multiple resources. Resources are most common in XMPP, hence the name of this interface, but they are also present in MSN, where they are called points of presence.

When a client requests some attribute of a contact using its handle on the connection, the CM uses an algorithm to choose the most appropriate resource for the job. If there is only one resource, then the choice is obvious. If, however, there is more than one resource connected at any one time, the CM either aggregates all appropriate information to return (in the case of capabilities), or chooses one specific resource (in the case of presence).

Resources in XMPP have names, and it can be extremely useful for the user to be able to know which resources of a contact are online, providing the names are human-readable. Before now, resources have not been exposed in Telepathy, but this interface attempts to change this.

When using this interface, it is a little like using the Contacts interface, but only resource-specific attributes are ever returned. The resource-specific contact attributes are decided on by the CM, but XMPP's are listed below:

  • SimplePresence/presence
  • ContactCapabilities/capabilities
  • ClientTypes/client-types
Return the resource information of the given contacts. If any of the contact attributes for specific resources of the given contacts' are not known return immediately without waiting for a reply. The contacts whose resource attributes should be returned.

The contacts' resources and the contact attributes specific to each resource. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

For every contact handle passed into this method, it is guaranteed that there will be a key in the returned map that corresponds to said handle. If there is no information regarding the contact the resource information map will be empty.

The resource string is never human-readable. The resource string might be human-readable.

Whether the resources returned from GetResources are human readable or not.

If the connection manager knows that all resource names are automatically generated, then the resource strings mean nothing to the user. Showing these strings in the UI would be confusing, so by setting this to Resources_Human_Readability_Never, the UI is advised not to show resources.

If on the other hand, all resources are set to nice names (such as "office" or "home") then it might be wise to expose these strings in the UI, so this property would be set to Resources_Human_Readability_Maybe. This is the case in XMPP -- most resources are set in a way that the user can deduce some information from them. The absence of an Always enum value is because in the case of XMPP, the resource string could be partially human-readable (as on Google Talk, where a resource of "home" is changed by the server to a unique string like "home_1234fdec") or not at all human-readable.

Emitted when a contact has a resource added or removed, or any contact attribute for any resource changes. The contact. The contact's resource information. All resource information is given, not just the details which have changed. A map of a contact's resources to their resource-specific information.

The name of the resource.

A map of contact attributes whose data is specific to this resource.
Mapping returned by GetResources, representing a collection of Contacts, their resources, and their resource-specific contact attributes. A contact. A map of the contact's resources to their resource-specific information.

The same mapping that would be returned by GetResources for this contact.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Sidecars1.xml0000644000175100017520000001244612530423576025362 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2013 Collabora Limited Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) The "primary" interface implemented by an object attached to a connection. For example, a Gabble plugin implementing fine-grained control of XEP-0016 privacy lists might expose an object implementing com.example.PrivacyLists. The object path of the sidecar, exported by the same bus name as the Connection to which it is attached. Immutable properties of the sidecar.

Request an object with a particular interface providing additional connection-specific functionality, together with its immutable properties. These will often be implemented by plug-ins to the connection managers; for example, support for an XMPP XEP for which no generic Telepathy interface exists might be implemented by a Gabble plugin exposing a sidecar with a particular interface.

This method may be called at any point during the lifetime of a connection, even before its Connection_Status changes to Connected. It MAY take a long time to return—perhaps it needs to wait for a connection to be established and for all the services supported by the server to be discovered before determining whether necessary server-side support is available—so callers SHOULD override the default method timeout (25 seconds) with a much higher value (perhaps even MAX_INT32, meaning “no timeout†in recent versions of libdbus).

There is an implicit assumption that any connection manager plugin will only want to export one “primary†object per feature it implements, since there is a one-to-one mapping between interface and object. This is reasonable since Sidecars are (intended to be) analogous to extra interfaces on the connection, providing once-per-connection shared functionality; it also makes client code straightforward (look up the interface you care about in a dictionary, build a proxy object from the value). More “plural†plugins are likely to want to implement new types of Channel instead.

The requested sidecar is not implemented by this connection manager, or a necessary server-side component does not exist. (FIXME: split these two errors out? Then again, once we list the guaranteed and possible sidecars on a Protocol object, clients can tell the difference themselves, because they shouldn't be calling this in the first case.) A server-side component needed by the requested sidecar reported it is currently too busy, or did not respond for some implementation-defined time. The caller may wish to try again later. The connection was disconnected while the sidecar was being set up.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Mail_Notification.xml0000644000175100017520000007016012530423576027131 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2007 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) A client MUST notify interest in this feature before it will be enabled. This Connection provides the number of unread e-mails (or e-mail threads) in the main folder of your e-mail account, as the UnreadMailCount property. The connection manager will update this value by emitting the UnreadMailsChanged signal. This Connection provides a detailed list of unread e-mails, as the UnreadMails property. If this flag is set, Supports_Unread_Mail_Count MUST be set, and Emits_Mails_Received MUST NOT be set. The Connection will update the list by emitting the UnreadMailsChanged signals. This Connection emits the MailsReceived signal, which provides details about newly arrived e-mails but does not maintain their read/unread status afterwards. This flag MUST NOT be combined with Supports_Unread_Mails. This Connection can provide a URL (with optional POST data) to open the the inbox of the e-mail account in a web-based client, via the RequestInboxURL method.

This Connection can provide a URL (with optional POST data) to open a specific mail in a web-based client, via the RequestMailURL method. This feature is not useful unless either Emits_Mails_Received or Supports_Unread_Mails is set.

If this flag is not set, clients SHOULD fall back to using RequestInboxURL if available.

Each Mail represents a thread of e-mails, which MAY have more than one sender.

Google Talk notifies users about new mail in terms of unread threads, rather than unread e-mails.

Flags representing capabilities provided by a connection manager. Those values can be used as bitfield. Some flags depend on, or conflict with, each other.

Connections SHOULD implement as many of these features as the underlying protocol allows, preferring to implement Supports_Unread_Mails instead of Emits_Mails_Received if both are possible.

Use the GET method when opening the URL. Use the POST method when opening the URL. Refer to HTTP_Post_Data for more details. The HTTP Method with which to request a URL.

A pair (key, value) representing POST data compatible with the application/x-www-form-urlencoded MIME type. The strings MUST be valid UTF-8 strings, and the characters used in the key MUST obey the requirements of the HTML CDATA type. The value MUST NOT be encoded with HTML entities.

For example, if the POST data should contain a key "less-than" with value "<", and a key "percent" with value "%", this should be represented as two HTTP_Post_Data structures, ("less-than", "<") and ("percent", "%"), resulting in a POST request whose request body is "less-than=&lt;&percent=%25". If a client passes this to a browser by writing it into an HTML form, it could do so by representing it as:

        <input type="hidden" name="less-than">&lt;</input>
        <input type="hidden" name="percent">%</input>
        

This data can be used to generate a HTML file that will automatically load the URL with appropriate POST data, in which case the client MUST convert any characters that are special within HTML into HTML entities. Alternatively, it can be used in an API that will instruct the browser how to load the URL (like the Netscape Plug-in API), in which case the client MUST escape characters that are reserved in URLs, if appropriate for that API.

An array of pairs is used instead of a map from keys to values, because it's valid to repeat keys in both HTML and x-www-form-urlencoded data.

The key, corresponding to a HTML control name The value

A pair (name, address) representing an e-mail address, such as ("Nicolas Dufresne", "nicolas.dufresne@collabora.co.uk"). At least one of name and address MUST be provided. A missing element will be represented by the empty string.

The CM should provide as much information as possible, but not all protocols provide both the displayed name and the address. (If a protocol doesn't provide either, it should omit the appropriate field from the Mail entirely.)

The displayed name corresponding to the e-mail address The actual e-mail address

A structure containing the required information to open a web-based e-mail UI, without needing re-authentication (if possible).

Because the URL and POST data frequently contain short-lived credential tokens, a new URL should be requested (by calling one of the methods that returns a Mail_URL) for each visit to the web-based UI, and the URL should be visited soon after it is returned.

The URL to which to send a request. The HTTP method of the request. An array of name-value pairs containing the POST data to use when opening the URL. This MUST be an empty array if the Method is not POST.
An extensible map representing a mail, or (on protocols where Thread_Based appears in MailNotificationFlags) a thread of mails. All keys are optional where not otherwise stated; however, at least one of "senders" and "subject" must be included.

A key providing information about the mail or thread. Well-known keys are as follows:

id — s

A unique ID for this e-mail. CMs with Supports_Unread_Mails set in MailNotificationFlags MUST provide this key in each Mail.

If provided, the ID SHOULD be unique to a Mail at least until that mail is removed with the UnreadMailsChanged signal (in protocols with Supports_Unread_Emails), or unique for the duration of a session (otherwise).

In protocols with Supports_Unread_Mails, this key is used to indicate which mail was removed. In protocols without that feature, it's impossible to tell when a mail has been removed (and hence how long the identifier will remain valid for use with RequestMailURL).

url-data — any type
An opaque identifier (typically a string or list of strings) provided to the Connection when calling RequestMailURL, containing information used by the Connection to build the URL.
senders — a(ss) (Mail_Address)
An array of sender display name and e-mail address pairs. Note that only e-mails represented as a thread can have multiple senders.
to-addresses — a(ss) (Mail_Address)
An array of display name and e-mail address pairs representing the recipients.
cc-addresses — a(ss) (Mail_Address)
An array of display name and e-mail address pairs representing the carbon-copy recipients.
sent-timestamp — x (Unix_Timestamp64)
A UNIX timestamp indicating when the message was sent, or for a thread, when the most recent message was sent.
received-timestamp — x (Unix_Timestamp64)
A UNIX timestamp indicating when the message was received, or for a thread, when the most recent message was received.
has-attachments — b
If true, this mail has attachments.
subject — s
The subject of the message. This MUST be encoded in UTF-8.
content-type — s

The MIME type of the message content. Two types are currently supported: "text/plain" for plain text, and "text/html" for a HTML document. If omitted, "text/plain" MUST be assumed. Regardless of MIME type, the content MUST be valid UTF-8 (which may require that the Connection transcodes it from a legacy encoding).

All strings on D-Bus must be UTF-8.

truncated — b
If true, the content is only a partial message; if false or omitted, the content is the entire message.
content — s
The body of the message, possibly truncated, encoded as appropriate for "content-type".
folder — s
The name of the folder containing this e-mails. If omitted, the inbox SHOULD be assumed.
The value, of whatever type is appropriate for the key.
Integer representing the bitwise-OR of supported features for e-mails notification on this server. This property MUST NOT change after the Connection becomes CONNECTED. This property indicates the behavior and availability of the other properties and signals within this interface. A connection manager that cannot at least set one of the flags in the Mail_Notification_Flags SHOULD NOT provide this interface.

The number of unread messages in the Inbox. Change notification is via UnreadMailsChanged.

This property is only useful if Supports_Unread_Mail_Count is set in the MailNotificationFlags; otherwise, it MUST be zero.

If Thread_Based appears in the MailNotificationFlags, this property counts the number of threads, not the number of mails.

Note that this count MAY be bigger than the number of items in UnreadMails. See UnreadMails for more details.

An array of unread Mails. Change notification is via UnreadMailsChanged. This property is only useful if Supports_Unread_Mails is set in MailNotificationFlags; otherwise, it MUST be an empty list.

The array size MAY be shorter than UnreadMailCount.

Some servers may limits the amount of detailed e-mails sent. This can significantly reduce the network traffic for large inbox. For this reason, it is normal that UnreadMailCount be bigger or equal to the size of this array.

A string representing the e-mail address of the account. The CMs MUST provide this information. In close integration of MailNotification with other e-mail services, the e-mail address can be used has a unique identifier for the account. Possible integration could be between Telepathy and Evolution where the e-mail address is the common information in both interfaces.

An array of Mails. Those e-mail MUST NOT have the "id" key.

On connections that emit this signal, it's impossible to tell when a mail has been removed, and hence when "id" has become invalid.

Emitted when new e-mails messages arrive to the inbox associated with this connection. This signal is used for protocols that are not able to maintain the UnreadMails list, but do provide real-time notification about newly arrived e-mails. It MUST NOT be emitted unless Emits_Mails_Received is set in MailNotificationFlags.
Number of unread messages in the inbox (the new value of UnreadMailCount).

A list of Mail that are being added or updated in UnreadMails.

Mails may be updated when the URL information (URL and POST data) have changed, or senders were added or removed from an e-mail thread.

If the Supports_Unread_Mails flag is not set, this list MUST be empty, even if Count has increased.

A list of e-mail IDs that are being removed from UnreadMails. If the Supports_Unread_Mails flag is not set, this list MUST be empty, even if Count has decreased.

Emitted when UnreadMails or UnreadMailCount have changed. It MUST NOT be emited if Supports_Unread_Mail_Count flag is not set in MailNotificationFlags.

Mails_Added and Mails_Removed MUST be empty if the Supports_Unread_Mails flag is not set.

A struture containing a URL and optional additional data to open a webmail client, without re-authentication if possible. This method creates and returns a URL and an optional POST data that allow opening the Inbox folder of a webmail account. This URL MAY contain tokens with a short lifetime, so clients SHOULD request a new URL for each visit to the webmail interface. This method is implemented only if the Supports_Request_Inbox_URL flag is set in MailNotificationFlags. We are not using properties here because the tokens are unsuitable for sharing between clients, and network round-trips may be required to obtain the information that leads to authentication free webmail access. The mail's id as found in the Mail structure, or the empty string if no id key was provided. Whatever url-data was found in the Mail structure, or the boolean value False (D-Bus type 'b') if no url-data was provided in the Mail. A struture that contains a URL and optional additional data to open a webmail client, without re-authentication if possible. This method creates and returns a URL and optional POST data that allow opening a specific mail in a webmail interface. This method is implemented only if Supports_Request_Mail_URL flag is set in MailNotificationFlags. See RequestInboxURL for design rationale.

An interface to support receiving notifications about a e-mail account associated with this connection.

In protocols where this is possible, this interface also allows the connection manager to provide the necessary information for clients to open a web-based mail client without having to re-authenticate.

To use this interface, a client MUST first subscribe by passing the name of this interface to the Connection.AddClientInterest method. The subscription mechanic aims at reducing network traffic and memory footprint in the situation where nobody is currently interesting in provided information. When done with this interface, clients SHOULD call Connection.RemoveClientInterest to allow the CM to release resources.

Protocols have various different levels of Mail Notification support. To describe the level of support, the interface provides a property called MailNotificationFlags. Not all combinations are valid; protocols can be divided into four categories as follows.

Connections to the most capable protocols, such as Google's XMPP Mail Notification extension, have the Supports_Unread_Mails flag (this implies that they must also have Supports_Unread_Mail_Count, but not Emits_Mails_Received). On these connections, clients requiring change notification MUST monitor the UnreadMailsChanged signal, and either recover the initial state from the UnreadMails property (if they require details other than the number of mails) or the UnreadMailCount property (if they are only interested in the number of unread mails). The MailsReceived signal is never emitted on these connections, so clients that will display a short-term notification for each new mail MUST do so in response to emission of the UnreadMailsChanged signal.

The most common situation, seen in protocols like MSN and Yahoo, is that the number of unread mails is provided and kept up-to-date, and a separate notification is emitted with some details of each new mail. This is a combination of the following two features, and clients SHOULD implement one or both as appropriate for their requirements.

On protocols that have the Emits_Mails_Received flag (which implies that they do not have Supports_Unread_Mails), the CM does not keep track of any mails; it simply emits a notification whenever new mail arrives. Those events may be used for short term display (like a notification popup) to inform the user. No protocol is known to support only this feature, but it is useful for integration with libraries that that do not implement tracking of the number of mails. Clients requiring these notifications MUST monitor the MailsReceived signal on any connections with this flag.

On protocols that have the Supports_Unread_Mail_Count flag but not the Supports_Unread_Mails flag, clients cannot display complete details of unread email, but can display an up-to-date count of the number of unread mails. To do this, they must monitor the UnreadMailsChanged signal, and retrieve the initial state from the UnreadMailCount property.

Orthogonal features described by the MailNotificationFlags property include the RequestSomethingURL methods, which are used to obtain URLs allowing clients to open a webmail client. Connections SHOULD support as many of these methods as possible.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Room.xml0000644000175100017520000004427112530423576023732 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd. Copyright © 2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(version 2)

Different IM protocols use a variety of ways to name chat rooms. The simplest example is perhaps IRC, where chat rooms have short, persistent, human-readable string names, and are generally global across the network. Skype chat rooms have persistent string names, so you can leave and re-join a room, but these names are opaque unique identifiers. MSN chat rooms are unnamed, and you can only join one by being invited. And XMPP wins the coveted “most complicated chat rooms†prize: chat rooms may be hosted by different servers with different DNS names; normally they have human-readable names, except that all MUCs on Google Talk's conference server have UUIDs as names, and XEP-0045 §10.1.4 Requesting a Unique Room Name defines a protocol for requesting a unique, opaque room name on the server. Note that this interface is not restricted to Text channels, and can also be used on Call channels.

This interface intends to support and differentiate these mechanisms more clearly than the TargetHandleType and TargetID properties can alone. It initially contains a pair of properties used to represent the human-readable parts of a Room_Handle's identifier, if any. The above examples for different protocols are represented as follows:

  • The IRC channel #telepathy on Freenode is represented by a channel with properties TargetHandleType = Room, TargetID = "#telepathy", RoomName = "#telepathy", Server = "", indicating that the room has a human-readable identifier, and is not confined to a particular server on the network. Actually, IRC supports creating “local†channels specific to the server they are created on. These channels have identifiers starting with & rather than #. These could be represented by setting Server appropriately.
  • A Skype group chat with opaque identifier 0xdeadbeef has TargetHandleType = Room, TargetID = "0xdeadbeef", RoomName = "", Server = "", indicating that the room has an identifier but no human-readable name.
  • An MSN group chat has TargetHandleType = None, RoomName = "", Server = "", indicating that the room has neither an identifier (so it cannot be re-joined later) nor a human-readable name.
  • A standard Jabber multi-user chat jdev@conference.jabber.org has TargetHandleType = Room, TargetID = "jdev@conference.jabber.org", RoomName = "jdev", Server = "conference.jabber.org".
  • A Google Talk private MUC private-chat-11111x1x-11xx-111x-1111-111x1xx11x11@groupchat.google.com has TargetHandleType = Room, TargetID = "private-chat-11111x1x-11xx-111x-1111-111x1xx11x11@groupchat.google.com", RoomName = "", Server = "groupchat.google.com", indicating that the room has a persistent identifier, no human-readable name, and is hosted by a particular server.
  • Similarly, a XEP-0045 §10.1.4 uniquely-named room lrcgsnthzvwm@conference.jabber.org has TargetHandleType = Room, TargetID = "lrcgsnthzvwm@conference.jabber.org", RoomName = "", Server = "conference.jabber.org", indicating that the room has a persistent identifier, no human-readable name, and is hosted by a particular server.

Requestable channel classes

If the connection supports joining text chat rooms by unique identifier, like Skype, it should advertise a Requestable_Channel_Class matching:

( Fixed = { ...ChannelType: ...Text,
            ...TargetHandleType: Room,
          },
  Allowed = [ ...TargetID,
              ...TargetHandle,
            ]
)

Channel requests must specify either TargetID or TargetHandle.

If, like IRC, the room identifiers are also human-readable, the RCCs should also include RoomName in Allowed_Properties:

( Fixed = { ...ChannelType: ...Text,
            ...TargetHandleType: Room,
          },
  Allowed = [ ...TargetID,
              ...TargetHandle,
              ...RoomName
            ]
),

( Fixed = { ...ChannelType: ...Text
          },
  Allowed = [ ...RoomName,
            ]
)

Requests may specify the RoomName in place of TargetID or TargetHandle . Note how RoomName appears in Allowed_Properties of a different RCC because when TargetHandleType is omitted (or is None), both TargetHandle and TargetID must also be omitted. RoomName is allowed in conjuction with TargetID or TargetHandle in some situations, as explained below in the Requesting room channels section.

If rooms may be on different servers, Server should also be included in the allowed properties, but CMs MUST use a reasonable default Server if not explicitly specified in a channel request. The CM's default server MAY be configurable by a connection parameter specified on a RequestConnection call, similarly to how the fallback conference server is specified on jabber connections in gabble.

If the protocol supports unnamed rooms, RoomName should be fixed to the empty string, and TargetHandleType should be None:

( Fixed = { ...ChannelType: ...Text,
            ...TargetHandleType: None,
            ...RoomName: "",
          },
  Allowed = [ ]
)

Requesting room channels

When explicitly joining a room, the CM cannot know whether the room ID is unique or not. As a result, if this is the case, adding an empty string RoomName into the channel request will ensure the CM knows. For example:

{ ...ChannelType: ...Text,
  ...TargetHandleType: Room,
  ...TargetID: "qwerasdfzxcv@conference.jabber.org",
  ...RoomName: ""
}

If RoomName features in Allowed_Properties then the only value allowed in conjunction with TargetID or TargetHandle is the empty string. Requests with conflicting TargetID and RoomName properties will fail with InvalidArgument.

To create a XEP-0045 §10.1.4 uniquely-named room channel on the conference.jabber.org server, then the following channel request should be made:

{ ...ChannelType: ...Text,
  ...RoomName: ""
  ...Server: "conference.jabber.org"
}

If everything is successful, then when the channel request is satisfied, a new channel will appear with the following properties:

{ ...ChannelType: ...Text,
  ...TargetHandleType: Room,
  ...TargetID: "kajsdhkajshdfjkshdfjkhs@conference.jabber.org",
  ...RoomName: ""
  ...Server: "conference.jabber.org"
}

The CM will have received the unique room name (kajsdhkajshdfjkshdfjkhs) and then created a room with such a name on the said server. The empty RoomName property shows that the room name is not human-readable.

The human-readable identifier of a chat room. Note that if non-empty, this property (and perhaps also Server) should be sufficient in a channel request to join the room. XMPP MUCs have a room name concept which is more like a topic, except more persistent. This D-Bus property is not this XMPP room name, but the bit before the @ in the room jid; see RoomConfig1.Title for that concept.

This property cannot change during the lifetime of the channel. It should appear in the Allowed_Properties of a Requestable_Channel_Class for the connection if rooms on this connection have human-readable names, and can be joined by name.

For protocols with a concept of chatrooms on multiple servers with different DNS names (like XMPP), the DNS name of the server hosting this channel (for example, "conference.jabber.org" or "groupchat.google.com"). For other protocols, the empty string.

This property cannot change during the lifetime of the channel. It should appear in the Allowed_Properties of a Requestable_Channel_Class for the connection if and only if non-empty values are supported.

The normalized contact ID representing who created the room; or the empty string if unknown. The handle corresponding to Creator; or 0 if Creator is unknown. A unix timestamp indicating when the room was created; or INT_MAX64 if unknown.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Messages.xml0000644000175100017520000020462012530423576024561 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008–2010 Collabora Ltd. Copyright © 2008–2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This interface extends the Text interface to support more general messages, including:

  • messages with attachments (like MIME multipart/mixed)
  • groups of alternatives (like MIME multipart/alternative)
  • delivery reports (which replace Text.SendError), addding support for protocols where the message content is not echoed back to the sender on failure and for receiving positive acknowledgements, as well as ensuring that incoming delivery reports are not lost if no client is handling the channel yet;
  • any extra types of message we need in future

Incoming messages, outgoing messages, and delivery reports are all represented as lists of Message_Part structures, with a format reminiscent of e-mail. Messages are sent by calling SendMessage; outgoing messages are announced to other clients which may be interested in the channel by the MessageSent signal. Incoming messages and delivery reports are signalled by MessageReceived, and are stored in the the PendingMessages property until acknowledged by calling Text.AcknowledgePendingMessages. Only the Handler for a channel should acknowledge messages; Observers (such as loggers) and Approvers for the channel may listen for incoming messages, and send messages of their own, but SHOULD NOT acknowledge messages.

If observers were allowed to acknowledge messages, then messages might have been acknowledged before the handler even got to see the channel, and hence could not be shown to the user.

If this interface is present, clients that support it SHOULD listen for the MessageSent and MessageReceived signals, and ignore the Sent, SendError and Received signals on the Text interface (which are guaranteed to duplicate signals from this interface).

Although this specification supports formatted (rich-text) messages with unformatted alternatives, implementations SHOULD NOT attempt to send formatted messages until the Telepathy specification has also been extended to cover capability discovery for message formatting.

We intend to expose all rich-text messages as XHTML-IM, but on some protocols, formatting is an extremely limited subset of that format (e.g. there are protocols where foreground/background colours, font and size can be set, but only for entire messages). Until we can tell UIs what controls to offer to the user, it's unfriendly to offer the user controls that may have no effect.

A list of MIME types supported by this channel, with more preferred MIME types appearing earlier in the list. The list MAY include "*/*" to indicate that attachments with arbitrary MIME types can be sent. This list MUST NOT be empty, since all Messages implementations MUST accept messages containing a single "text/plain" part.

Items in this list MUST be normalized to lower-case.

Some examples of how this property interacts with the MessagePartSupportFlags:

A simple IM implementation: only plain text messages are allowed
SupportedContentTypes = ['text/plain'], MessagePartSupportFlags = 0
Formatted text with a plain text alternative is allowed (see the HTML interface draft)
SupportedContentTypes = ['text/html', 'text/plain'], MessagePartSupportFlags = 0
JPEG or PNG images may be sent, but without any attached text
SupportedContentTypes = ['text/plain', 'image/jpeg', 'image/png'], MessagePartSupportFlags = 0
Unformatted text to which an optional JPEG or PNG image may be attached
SupportedContentTypes = ['text/plain', 'image/jpeg', 'image/png'], MessagePartSupportFlags = One_Attachment
Formatted text to which arbitrarily many images may be attached
SupportedContentTypes = ['text/html', 'text/plain', 'image/jpeg', 'image/png', 'image/x-ms-bmp'], MessagePartSupportFlags = One_Attachment | Multiple_Attachments
A full SIP implementation: arbitrary MIME messages are allowed
SupportedContentTypes = ['*/*'], MessagePartSupportFlags = One_Attachment | Multiple_Attachments
This supersedes GetMessageTypes; fall back to that method for compatibility with older connection managers.

A list of message types which may be sent on this channel.

Flags indicating the level of support for message parts on this channel.

Flags indicating the level of support for message parts on this channel. They are designed such that setting more flags always implies that the channel has more capabilities.

If no flags are set, this indicates that messages may contain a single message part whose content-type is any of the types from SupportedContentTypes, possibly with some alternatives.

There is no flag indicating support for alternatives. This is because the SendMessage implementation can always accept messages containing alternatives, even if the underlying protocol does not, by deleting all alternatives except the first (most preferred) that is supported.

Each of the flags so far implies the previous flag, so we could have used a simple enumeration here; however, we've defined the message-part support indicator as a flag set for future expansion.

See SupportedContentTypes for some examples.

SendMessage will accept messages containing a textual message body, plus a single attachment of any type listed in the SupportedContentTypes property. It does not make sense for this flag to be set if Message_Part_Support_Flag_Data_Only is not also set (because the connection manager can trivially provide an empty text part if necessary). SendMessage will accept messages containing a textual message body, plus an arbitrary number of attachments of any type listed in the SupportedContentTypes property. It does not make sense for this flag to be set if Message_Part_Support_Flag_One_Attachment is not also set.

Part of a message's content. In practice, this mapping never appears in isolation: incoming messages are represented by a list of Message_Part mappings in the MessageReceived signal, and outgoing messages are passed to SendMessage as a list of these mappings.

The first part of the message contains "headers", which refer to the entire message. The second and subsequent parts contain the message's content, including plain text, formatted text and/or attached files. Well-known keys for the header and body parts are defined by the Message_Header_Key and Message_Body_Key types, respectively. It is an error for a connection manager to put keys referring to the message as a whole in the second or subsequent Message_Part, or keys intended for body parts in the first Message_Part; clients MUST recover from this error by ignoring these mis-placed keys.

Instead of representing messages as aa{sv} where the first dictionary is special (a dictionary of headers), we could have used a signature like (a{sv}aa{sv}) to separate out the headers and the body parts.

However, this would make access to the messages more awkward. In Python, the syntax for access to a header field would remain message[0]['message-type'], but access to a body field in the second body part would change from message[2]['content'] to message[1][1]['content']. In GLib, the message would change from being a GPtrArray(GHashTable) to being a GValueArray(GHashTable, GPtrArray(GHashTable)) which is rather inconvenient to dereference.

In any group of parts with the same non-empty value for the alternative key (which represent alternative versions of the same content), more faithful versions of the intended message MUST come before less faithful versions (note that this order is the opposite of MIME multipart/alternative parts). Clients SHOULD display the first alternative that they understand.

Specifying the preference order means that if the underlying protocol doesn't support alternatives, the CM can safely delete everything apart from the first supported alternative when sending messages.

The order is the reverse of MIME because MIME's rationale for placing the "plainest" part first (legibility in pre-MIME UAs) does not apply to us, and placing the most preferred part first simplifies display (a client can iterate the message in order, display the first alternative that it understands, and skip displaying all subsequent parts with the same "alternative" key).

Clients SHOULD present all parts that are not redundant alternatives in the order they appear in this array, possibly excluding parts that are referenced by another displayed part. It is implementation-specific how the parts are presented to the user.

This allows CMs to assume that all parts are actually shown to the user, even if they are not explicitly referenced - we do not yet recommend formatted text, and there is no way for plain text to reference an attachment since it has no concept of markup or references. This also forces clients to do something sensible with messages that consist entirely of "attachments", with no "body" at all.

For instance, when displaying the above example, a client that understands the HTML part should display the JPEG image once, between the two lines "Here is a photo of my cat:" and "Isn't it cute?"; it may additionally present the image in some way for a second time, after "Isn't it cute?", or may choose not to.

A client that does not understand HTML, displaying the same message, should display the plain-text part, followed by the JPEG image.

Connection managers, clients and extensions to this specification SHOULD NOT include Handles as values in a Message_Part, except for message-sender in the header.

Reference-counting handles in clients becomes problematic if the channel proxy cannot know whether particular map values are handles or not.

Example messages

A rich-text message, with an embedded image, might be represented as:

[
  {
    'message-token': '9de9546a-3400-4419-a505-3ea270cb834c',
    'message-sender': 42,
    'message-sent': 1210067943,
    'message-received': 1210067947,
    'message-type': 0,              # = Channel_Text_Message_Type_Normal
    'pending-message-id': 437,
  },
  { 'alternative': 'main',
    'content-type': 'text/html',
    'content': 'Here is a photo of my cat:<br />' +
               '<img src="cid:catphoto" alt="lol!" />' +
               '<br />Isn't it cute?',
  },
  { 'alternative': 'main',
    'content-type': 'text/plain',
    'content': 'Here is a photo of my cat:\n[IMG: lol!]\nIsn't it cute?',
  },
  { 'identifier': 'catphoto',
    'content-type': 'image/jpeg',
    'size': 101000,
    'needs-retrieval': True,
  },
]

telepathy-ring, Nokia's GSM connection manager, represents vCards sent via SMS as:

[
  {
    'message-token': '9de9546a-3400-4419-a505-3ea270cb834c',
    'message-sender': 42,
    'message-sent': 1210067943,
    'message-received': 1210067947,
    'message-type': 0,              # = Channel_Text_Message_Type_Normal
    'pending-message-id': 437,
  },
  { 'content-type': 'text/x-vcard',
    'content': [ 0x66, 0x69, 0x71, ...], # vCard data as an array of bytes
  },
]

Delivery reports

Delivery reports are also represented as messages with the message-type header mapping to Channel_Text_Message_Type Delivery_Report. Delivery reports SHOULD contain the message-sender header, mapping to the intended recipient of the original message, if possible; other headers specific to delivery reports are defined by the Delivery_Report_Header_Key type. The second and subsequent parts, if present, are a human-readable report from the IM service.

For backwards- and forwards-compatibility, whenever a delivery error report is signalled—that is, with delivery-status mapping to Delivery_Status Temporarily_Failed or Permanently_Failed—SendError SHOULD also be emitted; whenever SendError is emitted, a delivery report MUST also be signalled. Delivery report messages on this interface MUST be represented in emissions of Received as messages with the Non_Text_Content Channel_Text_Message_Flags; clients which understand this interface SHOULD ignore the SendError signal in favour of listening for delivery reports, as mentioned in the introduction.

The result of attempting to send delivery reports using SendMessage is currently undefined.

Example delivery reports

A minimal delivery report indicating permanent failure of the sent message whose token was b9a991bd-8845-4d7f-a704-215186f43bb4 for an unknown reason
[{
# header
'message-sender': 123,
'message-type': Channel_Text_Message_Type_Delivery_Report,
'delivery-status': Delivery_Status_Permanently_Failed,
'delivery-token': 'b9a991bd-8845-4d7f-a704-215186f43bb4',
}
# no body
]
A delivery report where the failed message is echoed back to the sender rather than being referenced by ID, and the failure reason is that this protocol cannot send messages to offline contacts such as the contact with handle 123
[{ # header
'message-sender': 123,
'message-type': Channel_Text_Message_Type_Delivery_Report,
'delivery-status': Delivery_Status_Temporarily_Failed,
'delivery-error': Channel_Text_Send_Error_Offline,
'delivery-echo':
    [{ # header of original message
    'message-sender': 1,
    'message-sent': 1210067943,
    },
    { # body of original message
    'content-type': 'text/plain',
    'content': 'Hello, world!',
    }]
  ],

# no body
]
A maximally complex delivery report: the server reports a bilingual human-readable failure message because the user sent a message "Hello, world!" with token b9a991bd-8845-4d7f-a704-215186f43bb4 to a contact with handle 123, but that handle represents a contact who does not actually exist
[{ # header
'message-sender': 123,
'message-type': Channel_Text_Message_Type_Delivery_Report,
'delivery-status': Delivery_Status_Permanently_Failed,
'delivery-error': Channel_Text_Send_Error_Invalid_Contact,
'delivery-token': 'b9a991bd-8845-4d7f-a704-215186f43bb4',
'delivery-echo':
    [{ # header of original message
    'message-sender': 1,
    'message-sent': 1210067943,
    },
    { # body of original message
    'content-type': 'text/plain',
    'content': 'Hello, world!',
    }]
  ],
},
{ # message from server (alternative in English)
'alternative': '404',
'content-type': 'text/plain',
'lang': 'en',
'content': 'I have no contact with that name',
},
{ # message from server (alternative in German)
'alternative': '404'.
'content-type': 'text/plain',
'lang': 'de',
'content', 'Ich habe keinen Kontakt mit diesem Namen',
}
]
A minimal delivery report indicating successful delivery of the sent message whose token was b9a991bd-8845-4d7f-a704-215186f43bb4
[{
# header
'message-sender': 123,
'message-type': Channel_Text_Message_Type_Delivery_Report,
'delivery-status': Delivery_Status_Delivered,
'delivery-token': 'b9a991bd-8845-4d7f-a704-215186f43bb4',
}
# no body
]
A key, which SHOULD be one of the well-known keys specified by Message_Header_Key, Message_Body_Key or Delivery_Report_Header_Key if possible. The value corresponding to the given key, which SHOULD be one of the specified types for well-known keys.
Removed protocol-token—which had never been implemented—and respecified message-token not to have unimplementable uniqueness guarantees.

Well-known keys for the first Message_Part of a message, which contains metadata about the message as a whole, along with the corresponding value types. Some keys make sense for both incoming and outgoing messages, while others are only meaningful for one or the other.

message-token (s - Protocol_Message_Token)

An opaque identifier for the message, as used by the underlying protocol. For outgoing messages, this SHOULD be globally unique; for incoming messages, this is not guaranteed to uniquely identify a message, even within the scope of a single channel or contact; the only guarantee made is that two messages with different message-token headers are different messages.

Clients wishing to determine whether a new message with the scrollback header matches a previously-logged message with the same message-token SHOULD compare the message's sender, contents, message-sent or message-received timestamp, etc. Note that, in XMPP, the server only supplies a timestamp for scrollback messages, not for messages received while you are in a room; thus, non-scrollback messages will lack a message-sent timestamp.

In practice, most protocols do not provide globally-unique identifiers for messages. Connection managers, being stateless, do not have the necessary information — namely, IM logs — to generate reliable unique tokens for messages.

For instance, some XMPP clients (including Gabble) stamp messages they send with unique identifiers, but others number outgoing messages in a conversation from 1 upwards.

message-sent (x - Unix_Timestamp64)
The time the message was sent (if unavailable, the time it arrived at a central server MAY be used). Omitted if no reasonable approximation is available; SHOULD always be present on outgoing messages.
message-received (x - Unix_Timestamp64)
The time the message was received locally. SHOULD always be present.
message-sender (u - Contact_Handle)
The contact who sent the message. If 0 or omitted, the contact who sent the message could not be determined.
message-sender-id (s)
The identifier of the contact who sent the message, i.e. the result of calling InspectHandles on message-sender. If omitted, clients MUST fall back to looking at message-sender.
sender-nickname (s)
The nickname chosen by the sender of the message, which can be different for each message in a conversation.
message-type (u - Channel_Text_Message_Type)
The type of message; if omitted, Channel_Text_Message_Type_Normal MUST be assumed. MAY be omitted for normal chat messages.
supersedes (s – Protocol_Message_Token)
If present, this message supersedes a previous message, identified by its message-token header. The user interface MAY, for example, choose to replace the superseded message with this message, or grey out the superseded message. Skype, for example, allows the user to amend messages they have already sent (to correct typos, etc.). Connection Managers SHOULD represent repeatedly edited messages in the following form:
                message {token = a};
                message {token = b, supersedes = a};
                message {token = c, supersedes = a};
              
The alternative form is:
                  message {token = a};
                  message {token = b, supersedes = a};
                  message {token = c, supersedes = b};
                
but it is more difficult to implement in UIs/loggers, and it breaks irrecoverably if message b is lost. If a CM is forced to use this form, it should be tested extensively for interoperability with existing clients.
Clients should deal gracefully if the original message gets lost, but one or more corrections to it get through:
                message {token = x} gets lost;
                message {token = y, supersedes = x};
                message {token = z, supersedes = x};
              
This is the form that CMs will use to mean "I know that this message was edited, but I don't know what it originally said." It is often in the interests of the remote side for message x to be lost (e.g. to hide embarassing mistakes or sensitive information) so it might not be possible to retrieve it (even on protocols with reliable message-delivery guarantees).
original-message-sent (x - Unix_Timestamp64)
The message-sent header of the message that this one supersedes. This key should only be present if supersedes is also present. It MAY be used as a hint to help clients locate the original message in its logs. If present, comparing the tuple (original-message-sent, supersedes) with (message-sent, message-token) SHOULD be enough to uniquely identify the original message.
original-message-received (x - Unix_Timestamp64)
The message-received header of the message that this one supersedes. This key should only be present if supersedes is also present. It MAY be used as a hint in a similar way to original-message-sent.
pending-message-id (u - Message_ID)
The incoming message ID. This MUST NOT be present on outgoing messages. Clients SHOULD NOT store this key - it is only valid for as long as the message remains unacknowledged.
interface (s - DBus_Interface)
This message is specific to the given interface, which is neither Text nor Messages. It SHOULD be ignored if that interface is not supported. (Note that an 'interface' key can also appear on the second and subsequent parts, where it indicates that that part (only) should be ignored if unsupported.)
scrollback (b)
If present and true, the incoming message was part of a replay of message history (this matches the Scrollback flag in Channel_Text_Message_Flags). This flag does not make sense on outgoing messages and SHOULD NOT appear there.
rescued (b)
If present and true, the incoming message has been seen in a previous channel during the lifetime of the Connection, but had not been acknowledged when that channel closed, causing an identical channel (in which the message now appears) to open. This matches the Rescued flag in Channel_Text_Message_Flags; it does not make sense on outgoing messages, and SHOULD NOT appear there.

Well-known keys for the second and subsequent Message_Parts of a message, which contain the message content, along with the corresponding value types.

identifier (s — Protocol_Content_Identifier)
An opaque identifier for this part. Parts of a message MAY reference other parts by treating this identifier as if it were a MIME Content-ID and using the cid: URI scheme.
alternative (s)

If present, this part of the message is an alternative for all other parts with the same value for "alternative". Clients SHOULD only display one of them (this is expected to be used for XHTML messages in a future version of this specification).

If omitted, this part is not an alternative for any other part.

Parts of a message MAY reference the group of alternatives as a whole (i.e. a reference to whichever of them is chosen) by treating this identifier as if it were the MIME Content-ID of a multipart/alternative part, and using the cid: URI scheme.

content-type (s)

The MIME type of this part. See the documentation for MessageReceived and MessageSent for notes on the special status of "text/plain" parts.

Connection managers MUST NOT signal parts without a 'content-type' key; if a protocol provides no way to determine the MIME type, the connection manager is responsible for guessing it, but MAY fall back to "text/plain" for text and "application/octet-stream" for non-text.

Clients MUST ignore parts without a 'content-type' key, which are reserved for future expansion.

When sending messages, clients SHOULD normalize the content-type to lower case, but connection managers SHOULD NOT rely on this. When signalling sent or received messages, connection managers MUST normalize the content-type to lower case.

lang (s)
The natural language of this part, identified by a RFC 3066 language tag. XMPP allows alternative-selection by language as well as by content-type.
size (u)
The size in bytes (if needs-retrieval is true, this MAY be an estimated or approximate size). SHOULD be omitted if 'content' is provided. There's no point in providing the size if you're already providing all the content.
thumbnail (b)

This part is a thumbnail. To represent an image together with its thumbnail in a single message, there should be one part for the full image followed by a part for the thumbnail (following the “more complete versions first†requirement), with the same 'alternative' value. For example:

[ ... ,
  { 'alternative': 'catphoto',
    'content-type': 'image/jpeg',
    'size': 150000,
    'content': [0xFF, 0xD8, ... 0xFF 0xD9],
  },
  { 'alternative': 'catphoto',
    'content-type': 'image/jpeg'
    'size': 1024,
    'thumbnail': True,
    'content': [0xFF, 0xD8, ... 0xFF 0xD9],
  },
  ...
]
needs-retrieval (b)
If false or omitted, the connection manager already holds this part in memory. If present and true, this part must be retrieved on demand (like MIME's message/external-body) by a mechanism to be defined later. The mechanism was meant to be GetPendingMessageContent, but that didn't work out. It's worth leaving the header in in preparation for a future mechanism.
truncated (b)
The content available via the 'content' key has been truncated by the server or connection manager (equivalent to Channel_Text_Message_Flag_Truncated in the Text interface).
content (s or ay)
The part's content, if it is available and sufficiently small to include here (implies that 'needs-retrieval' is false or omitted). Otherwise, omitted. If the part is human-readable text or HTML, the value for this key MUST be a UTF-8 string (D-Bus signature 's'). If the part is not text, the value MUST be a byte-array (D-Bus signature 'ay'). If the part is a text-based format that is not the main body of the message (e.g. an iCalendar or an attached XML document), the value SHOULD be a UTF-8 string, transcoding from another charset to UTF-8 if necessary, but MAY be a byte-array (of unspecified character set) if transcoding fails or the source charset is not known.
interface (s - DBus_Interface)
This part is specific to the given interface, which is neither Text nor Messages. It SHOULD be ignored if that interface is not supported. (Note that an 'interface' key can also appear on the first part, where it indicates that the entire message should be ignored if unsupported.)

Well-known keys for the first Message_Part of a delivery report, along with the corresponding value types. Some of these are special-cases of headers defined by Message_Header_Key.

message-sender (u - Contact_Handle, as defined by Message_Header_Key)
MUST be the intended recipient of the original message, if available (zero or omitted if the intended recipient is unavailable or is not a contact, e.g. a chatroom), even if the delivery report actually came from an intermediate server.
message-type (u - Channel_Text_Message_Type, as defined by Message_Header_Key)
MUST be Channel_Text_Message_Type_Delivery_Report.
delivery-status (u - Delivery_Status)
The status of the message. All delivery reports MUST contain this key in the first Message_Part.
delivery-token (s - Protocol_Message_Token)

An identifier for the message to which this delivery report refers. MUST NOT be an empty string. Omitted if not available.

Clients may match this against the token produced by the SendMessage method and MessageSent signal. A status report with no token could match any sent message, and a sent message with an empty token could match any status report. If multiple sent messages match, clients SHOULD use some reasonable heuristic.

In an ideal world, we could unambiguously match reports against messages; however, deployed protocols are not ideal, and not all reports and messages can be matched.
delivery-error (u - Channel_Text_Send_Error)
The reason for the failure. MUST be omitted if this was a successful delivery; SHOULD be omitted if it would be Channel_Text_Send_Error_Unknown.
delivery-dbus-error (s - DBus_Error_Name)
The reason for the failure, specified as a (possibly implementation-specific) D-Bus error. MUST be omitted if this was a successful delivery. If set, the 'delivery-error' key SHOULD be set to the closest available value.
delivery-error-message (s)
Debugging information on why the message could not be delivered. MUST be omitted if this was a successful delivery; MAY always be omitted.
delivery-echo (aa{sv} - Message_Part[])

The message content, as defined by the Messages interface. Omitted if no content is available. Content MAY have been truncated, message parts MAY have been removed, and message parts MAY have had their content removed (i.e. the message part metadata is present, but the 'content' key is not).

Some protocols, like XMPP, echo the failing message back to the sender. This is sometimes the only way to match it against the sent message, so we include it here.
This type is only used by GetPendingMessageContent, which is unimplemented and deprecated. The index of a message part within a message. This structure is only used by GetPendingMessageContent, which is unimplemented and deprecated. A mapping from message part indexes to their content, as returned by GetPendingMessageContent. Indexes into the array of Message_Parts that represents a message. The "headers" part (which is not a valid argument to GetPendingMessageContent) is considered to be part 0, so the valid part numbers start at 1 (for the second message part). The message part's content. The variant MUST contain either type 's' or 'ay' (UTF-8 text string, or byte array), following the same rules as for the value of the 'content' key in the Message_Part mappings.

An opaque token used to identify messages in the underlying. protocol. As a special case, the empty string indicates that there is no particular identification for a message.

CM implementations SHOULD use an identifier expected to be unique, such as a UUID, for outgoing messages (if possible).

Some protocols can only track a limited number of messages in a small message-ID space (SMS messages are identified by a single byte), and some implementations send non-unique identifiers (some XMPP clients use very simple message IDs, such as an incrementing integer that resets to 1 at the beginning of each connection). As a result, clients MUST NOT assume that protocol tokens will not be re-used.

In particular, clients SHOULD use a heuristic to assign delivery reports to messages, such as matching on message content or timestamp (if available), or assuming that the delivery report refers to the most recent message with that ID.

A protocol-specific identifier for a blob of content, as used for the identifier key in a Message_Part. The same identifier MAY be re-used if the same content, byte-for-byte, appears as a part of several messages.

On XMPP, these identifiers might be Content-IDs for custom smileys implemented using XEP-0232 Bits of Binary; the same smiley might well appear in multiple messages.

Submit a message to the server for sending. If this method returns successfully, the message has been submitted to the server and the MessageSent signal is emitted. A corresponding Sent signal on the Text interface MUST also be emitted.

This method MUST return before the MessageSent signal is emitted.

This means that the process sending the message is the first to see the Protocol_Message_Token, and can relate the message to the corresponding MessageSent signal by comparing message tokens (if supported by the protocol).

If this method fails, message submission to the server has failed and no signal on this interface (or the Text interface) is emitted.

If this method succeeds, message submission to the server has succeeded, but the message has not necessarily reached its intended recipient. If a delivery failure is detected later, this is signalled by receiving a message whose message-type header maps to Delivery_Report. Similarly, if delivery is detected to have been successful (which is not possible in all protocols), a successful delivery report will be signalled.

The message content, including any attachments or alternatives. This MUST NOT include the following headers, or any others that do not make sense for a client to specify: message-sender, message-sender-id, message-sent, message-received, pending-message-id. Flags affecting how the message is sent. The channel MAY ignore some or all flags, depending on DeliveryReportingSupport; the flags that were handled by the CM are provided in MessageSent. An opaque token used to match any incoming delivery or failure reports against this message, or an empty string if the message is not readily identifiable. The requested message is malformed and cannot be sent.
Flags altering the way a message is sent. The "most usual" action should always be to have these flags unset. Some indication of which flags are supported is provided by the DeliveryReportingSupport property.

Provide a successful delivery report if possible, even if this is not the default for this protocol. Ignored if delivery reports are not possible on this protocol.

In some protocols, like XMPP, it is not conventional to request or send positive delivery notifications.

Delivery failure reports SHOULD always be sent, but if this flag is present, the connection manager MAY also try harder to obtain failed delivery reports or allow them to be matched to outgoing messages.

Provide a delivery report when the message is read by the recipient, even if this is not the default for this protocol. Ignored if read reports are not possible on this protocol.

Provide a delivery report when the message is deleted by the recipient, even if this is not the default for this protocol. Ignored if such reports are not possible on this protocol.

Signals that a message has been submitted for sending. This MUST be emitted exactly once per emission of the Sent signal on the Text interface, for backwards-compatibility; clients SHOULD ignore the latter if this interface is present, as mentioned in the introduction.

This SHOULD be emitted as soon as the CM determines it's theoretically possible to send the message (e.g. the parameters are supported and correct).

This signal allows a process that is not the caller of SendMessage to log sent messages.

The message content (see Message_Part for full details). If the message that was passed to SendMessage has a formatted text part that the connection manager recognises, but no text/plain alternative, the CM MUST use the formatted text part to generate a text/plain alternative which is also included in this signal argument.

The connection manager SHOULD include the message-sender, message-sender-id and message-sent headers in the representation of the message that is signalled here. If the channel has channel-specific handles, the message-sender and message-sender-id SHOULD reflect the sender that other contacts will see.

If the connection manager can predict that the message will be altered during transmission, this argument SHOULD reflect what other contacts will receive, rather than being a copy of the argument to SendMessage (if the message is truncated, formatting or alternatives are dropped, etc., then the edited version SHOULD appear in this signal).

Flags affecting how the message was sent. The flags might be a subset of those passed to SendMessage if the caller requested unsupported flags.

An opaque token used to match any incoming delivery or failure reports against this message, or an empty string if the message is not readily identifiable.

A list of incoming messages that have neither been acknowledged nor rejected. This list is a more detailed version of the one returned by Text.ListPendingMessages, and contains the same messages, uniquely identified by the same pending message IDs. Its items can be removed using Text.AcknowledgePendingMessages.

Change notification is via MessageReceived and PendingMessagesRemoved.

The messages with the given IDs have been removed from the PendingMessages list. Clients SHOULD NOT attempt to acknowledge those messages. This completes change notification for the PendingMessages property (previously, there was change notification when pending messages were added, but not when they were removed). The messages that have been removed from the pending message list. This method has never been implemented, and in any case would have been impossible to use correctly when multiple clients (such as a logger and the handler) are interested in a text channel. See freedesktop.org bug #26417 for more details. Retrieve the content of one or more parts of a pending message. Note that this function may take a considerable amount of time to return if the part's 'needs-retrieval' flag is true; consider extending the default D-Bus method call timeout. Additional API is likely to be added in future, to stream large message parts. The ID of a pending message The desired entries in the array of message parts, identified by their position. The "headers" part (which is not a valid argument to this method) is considered to be part 0, so the valid part numbers start at 1 (for the second Message_Part).

The content of the requested parts. The keys in this mapping are positions in the array of message parts; the values are either of type 's' or 'ay' (UTF-8 text string, or byte array), following the same rules as for the value of the 'content' key in the Message_Part mappings.

If the one of the requested part numbers was greater than zero but referred to a part that had no content (i.e. it had no 'content-type' key or no 'content' key), it is simply omitted from this mapping; this is not considered to be an error condition.

Either there is no pending message with the given message ID, or one of the part numbers given was 0 or too large.
Signals that a message has been received and added to the pending messages queue. This MUST be emitted exactly once per emission of the Received signal on the Text interface, for backwards-compatibility; clients SHOULD ignore the latter in favour of this signal if this interface is present, as mentioned in the introduction.

The message content, including any attachments or alternatives. If the incoming message contains formatted text without a plain text alternative, the connection manager MUST generate a text/plain alternative from the formatted text, and include it in this message (both here, and in the PendingMessages property).

The status of a message as indicated by a delivery report.

If this enum is extended in future specifications, this should only be to add new, non-overlapping conditions (i.e. all failures should still be signalled as either Temporarily_Failed or Permanently_Failed). If additional detail is required (e.g. distinguishing between the various types of permanent failure) this will be done using additional Delivery_Report_Header_Keys.

The message's disposition is unknown. Clients SHOULD consider all messages to have status Delivery_Status_Unknown unless otherwise specified; connection managers SHOULD NOT signal this delivery status explicitly. The message has been delivered to the intended recipient. Delivery of the message has failed. Clients SHOULD notify the user, but MAY automatically try sending another copy of the message. Similar to errors with type="wait" in XMPP; analogous to 4xx errors in SMTP. Delivery of the message has failed. Clients SHOULD NOT try again unless by specific user action. If the user does not modify the message or alter configuration before re-sending, this error is likely to happen again. Similar to errors with type="cancel", type="modify" or type="auth" in XMPP; analogous to 5xx errors in SMTP. An intermediate server has accepted the message but the message has not been yet delivered to the ultimate recipient. The connection manager might send a Failed report or Delivered report later. Similar to "202 Accepted" success code in SIP; analogous to 251 and 252 responses in SMTP. The message has been read by the intended recipient. The message has been deleted by the intended recipient. This MAY be signalled on its own if the message is deleted without being read, or after Read if the message was read before being deleted.
Flags indicating the level of support for delivery reporting on this channel, as found on the DeliveryReportingSupport property. Any future flags added to this set will conform to the convention that the presence of an extra flag implies that more operations will succeed. Note that CMs may always provide more reports than are requested in the Message_Sending_Flags passed to SendMessage. If senders want delivery reports, they should ask for them. If they don't want delivery reports, they can just ignore them, so there's no need to have capability discovery for what will happen if a delivery report isn't requested. Clients MAY expect to receive negative delivery reports if Message_Sending_Flag_Report_Delivery is specified when sending. Clients MAY expect to receive positive delivery reports if Message_Sending_Flag_Report_Delivery is specified when sending. Clients MAY expect to receive Delivery_Status Read reports if Message_Sending_Flag_Report_Read is specified when sending. Clients MAY expect to receive Delivery_Status Deleted reports if Message_Sending_Flag_Report_Deleted is specified when sending. A bitfield indicating features supported by this channel.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Addressing.xml0000644000175100017520000001221712530423576025074 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as draft)

This interface provides properties that can be used for requesting channels through different contact addressing schemes like vCard addresses or URIs.

The vCard field, normalized to lower case, TargetVCardAddress refers to.

The url vCard field MUST NOT appear here; see TargetURI instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.

If this is omitted from a request, TargetVCardAddress MUST be omitted as well.

The URI scheme used in TargetURI

While this seems redundant, since the scheme is included in TargetURI, it exists for constructing RequestableChannelClasses that support a limited set of URI schemes.

If this is omitted from a request, TargetURI MUST be omitted as well.

The vCard address of the Channel's target.

If this is present in a channel request, TargetVCardField MUST be present, and TargetHandle, TargetID, and TargetURI MUST NOT be present. TargetHandleType must either not be present or set to Handle_Type_Contact. The request MUST fail with error InvalidHandle, without side-effects, if the requested vCard address cannot be found.

The URI of the Channel's target. The URI's scheme (i.e. the part before the first colon) MUST be identical to TargetURIScheme.

If this is present in a channel request, TargetVCardField MUST be present, and TargetHandle, TargetID, and TargetVCardAddress MUST NOT be present. TargetHandleType must either not be present or set to Handle_Type_Contact. The request MUST fail with error InvalidHandle, without side-effects, if the requested vCard address cannot be found.

telepathy-qt-0.9.6.1/spec/Media_Session_Handler.xml0000644000175100017520000000702212530423576023556 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Use StreamHandler.Error on each StreamHandler object instead. Informs the connection manager that an error occured in this session. If used, the connection manager must terminate the session and all of the streams within it, and may also emit a StreamError signal on the channel for each stream within the session. The path of a new object implementing the StreamHandler interface. The unique ID of the new stream Type of media that this stream should handle Direction of this stream Emitted when a new stream handler has been created for this session. Inform the connection manager that a client is ready to handle this session handler (i.e. that it has connected to the NewStreamHandler signal and done any other necessary setup). An media session handler is an object that handles a number of synchronised media streams.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Simple_Presence.xml0000644000175100017520000007252112530423576026621 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2008 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A struct representing the presence of a contact. The presence type, e.g. Connection_Presence_Type_Away. The string identifier of the status, e.g. "brb", as defined in the Statuses property.

The user-defined status message, e.g. "Back soon!".

Clients SHOULD set the status message for the local user to the empty string, unless the user has actually provided a specific message (i.e. one that conveys more information than the Status).

User interfaces SHOULD regard an empty status message as unset, and MAY replace it with a localized string corresponding to the Status or Type.

Use case: Daf sets his status in Empathy by choosing the Welsh translation of "Available" from a menu. It is more informative for his English-speaking colleagues to see the English translation of "Available" (as localized by their own clients) than to see "Ar Gael" (which they don't understand anyway).
Mapping returned by GetPresences and signalled by PresencesChanged, indicating the presence of a number of contacts. A contact The contact's presence A struct containing information about a status. The type of a presence. This SHOULD NOT be used as a way to set statuses that the client does not recognise (as explained in SetPresence), but MAY be used to check that the client's assumptions about a particular status name match the connection manager's. If true, the user can set this status on themselves using SetPresence. If true, a non-empty message can be set for this status. Otherwise, the empty string is the only acceptable message. On IRC you can be Away with a status message, but if you are available you cannot set a status message. A mapping describing possible statuses. The string identifier of this status. Details of this status.

The string identifier of the desired status. Possible status identifiers are defined in the Statuses property.

Clients MUST NOT set a status whose string value they do not recognise, even if its presence type in Statuses matches what the user requested.

Suppose a protocol has statuses that include 'phone' (of type BUSY) and 'in-a-meeting' (of type BUSY), but there is no generic 'busy' status.

If the user requests "Busy" status from a menu, a client author might be tempted to pick an arbitrary status that has type BUSY. However, on this protocol, neither of the choices would be appropriate, and incorrect information about the user would be conveyed.

Statuses whose Connection_Presence_Type is Offline, Error or Unknown MUST NOT be passed to this function. Connection managers SHOULD reject these statuses.

To go offline, call Disconnect instead. The "error" and "unknown" statuses make no sense.

The status message associated with the current status.

Request that the presence status and status message are published for the connection. Changes will be indicated by PresencesChanged signals being emitted.

This method may be called on a newly-created connection while it is still in the DISCONNECTED state, to request that when the connection connects, it will do so with the selected status.

In DISCONNECTED state the Statuses property will indicate which statuses are allowed to be set while DISCONNECTED (none, if the Connection Manager doesn't allow this). This value MUST NOT be cached, as the set of allowed presences might change upon connecting.

Either the specified status is not supported, the specified status cannot be set on the user themselves, or a non-empty message was supplied for a status that does not accept a message.
An array of the contacts whose presence should be obtained.

Presence information in the same format as for the PresencesChanged signal. The returned mapping MUST include an entry for each contact in the method's argument.

The definition of the connection presence types Unknown and Offline means that if a connection manager will return Unknown for contacts not on the subscribe list, it MUST delay the reply to this method call until it has found out which contacts are, in fact, on the subscribe list.

Get presence previously emitted by PresencesChanged for the given contacts. Data is returned in the same structure as the PresencesChanged signal; no additional network requests are made. While discovering the subscribe list in order to distinguish between Unknown and Offline statuses, a network error occurred.

A dictionary where the keys are the presence statuses that are available on this connection, and the values are the corresponding presence types.

While the connection is in the DISCONNECTED state, it contains the set of presence statuses allowed to be set before connecting. The connection manager will attempt to set the appropriate status when the connection becomes connected, but cannot necessarily guarantee it. The available statuses cannot change until the connection status changes, so there is no change notification.

While the connection is in the CONNECTED state, this property contains the set of presence statuses which are actually available on this protocol. This set is constant for the remaining lifetime of the connection, so again, there is no change notification.

While the connection is in the CONNECTING state, the value of this property is undefined and SHOULD NOT be used. It can change at any time without notification (in particular, any cached values from when the connection was in the DISCONNECTED or CONNECTING state MUST NOT be assumed to still be correct when the state has become CONNECTED).

This property MUST include the special statuses "unknown" and "error" if and only if the connection manager can emit them as a contact's status.

For instance, connection managers for local-xmpp (XEP-0174) would omit "unknown" since there is no such concept.

The maximum length in characters for any individual status message, or 0 if there is no limit.

While the connection is in the DISCONNECTED state, this property will be 0. The connection manager will attempt to set the appropriate value when the connection becomes connected, but cannot necessarily guarantee it. The maximum length cannot change until the connection status changes, so there is no change notification.

While the connection is in the CONNECTED state, this property contains the maximum length in characters for any individual status message which is actually allowed on this protocol. This value is constant for the remaining lifetime of the connection, so again, there is no change notification.

While the connection is in the CONNECTING state, the value of this property is undefined and SHOULD NOT be used. It can change at any time without notification (in particular, any cached values from when the connection was in the DISCONNECTED or CONNECTING state MUST NOT be assumed to still be correct when the state has become CONNECTED).

If a message passed to SetPresence is longer than allowed by this property, the connection manager MUST truncate the supplied message; when emitting PresencesChanged, the truncated version of the message MUST be used.

Some XMPP servers, like Google Talk, define a maximum length for status messages. Whether the user's server is one of these cannot be detected until quite late in the connection process.

A dictionary of contact handles mapped to the status, presence type and status message. This signal should be emitted when your own presence has been changed, or the presence of the member of any of the connection's channels has been changed. An invalid presence type used as a null value. This value MUST NOT appear in the Statuses property, or in the result of GetStatuses on the deprecated Presence interface. Offline Available Away Away for an extended time Hidden (invisible) Busy, Do Not Disturb. Unknown, unable to determine presence for this contact, for example if the protocol only allows presence of subscribed contacts. Error, an error occurred while trying to determine presence. The message, if set, is an error from the server.

A type for communication access control. These control policies are used in CommunicationPolicy.DRAFT as well as most rich presence interfaces.

New interfaces should use this type, and NOT Rich_Presence_Access_Control_Type.

Only allow contacts that are in a certain whitelist.

The associated variant in Access_Control is a list of Contact_Handle representing the whitelist, with signature au.

Allow contacts in the user's 'publish' list. The associated variant in Access_Control is ignored.

Only allow contacts that are in a certain group.

The associated variant in Access_Control is a Group_Handle representing the permitted group.

Allow all contacts. The associated variant in Access_Control is ignored. Allow all contacts in the user's 'subscribe' or 'publish' list. The associated variant in Access_Control is ignored. Forbid all contacts. The associated variant in Access_Control is ignored.

The access control rule is too complex to be represented in the current Telepathy API. The associated variant is meaningless. Setting this mode is never valid; the connection manager MUST raise an error if this is attempted.

XEP-0016 Privacy Lists can easily produce access control mechanisms that can't be expressed in a simpler API. We need to be able to at least indicate that fact.

The associated variant in Access_Control is ignored.

A type of access control for Rich_Presence_Access_Control. For most types, the exact access control is given by an associated variant.

These are the access control types from XMPP publish/subscribe (XEP-0060).

Location uses this for historical reasons, new interfaces will use Access_Control_Type.

The associated variant is a list of contacts (signature 'au', Contact_Handle[]) who can see the extended presence information. All contacts in the user's 'publish' contact list can see the extended presence information. The associated variant is ignored. The associated variant is a handle of type Group (signature 'u', Group_Handle) representing a group of contacts who can see the extended presence information. Anyone with access to the service can see the extended presence information.

An access control mode for extended presence items like geolocation. This type isn't actually used by the SimplePresence interface, but it's included here so it can be referenced by rich presence interfaces.

New interfaces should use this type, and NOT Rich_Presence_Access_Control.

The type of access control to apply. Any additional information required by the Type. The required type and semantics are defined for each Access_Control_Type.

An access control mode for extended presence items like geolocation. This type isn't actually used by the SimplePresence interface, but it's included here so it can be referenced by rich presence interfaces such as Location.

Location uses this for historical reasons, new interfaces will use Access_Control_Type.

The type of access control to apply. Any additional information required by the Type. The required type and semantics are defined for each Rich_Presence_Access_Control_Type.

The same struct that would be returned by GetPresences (always present with some value if information from the SimplePresence interface was requested)

This interface is for services which have a concept of presence which can be published for yourself and monitored on your contacts.

Presence on an individual (yourself or one of your contacts) is modelled as a status and a status message. Valid statuses are defined per connection, and a list of those that can be set on youself can be obtained from the Statuses property.

Each status has an arbitrary string identifier which should have an agreed meaning between the connection manager and any client which is expected to make use of it. The following well-known values should be used where possible to allow clients to identify common choices:

Status identifier Connection_Presence_Type Remarks
"available" Available
"chat" Available Actively interested in chatting, as opposed to merely available.
"pstn" Available This contact is actually a phone number, not an IM account. As such, the contact is conceptually always available, but not in the same way that a contact can set their IM status to “availableâ€. It does not make sense to allow the user to set this status on herself; hence, on protocols where this status is supported, its entry in Statuses SHOULD have May_Set_On_Self set to False.
"away" Away
"brb" Away Be Right Back (a more specific form of Away)
"busy" Busy
"dnd" Busy Do Not Disturb (a more specific form of Busy)
"xa" Extended_Away Extended Away
"hidden" Hidden Also known as "Invisible" or "Appear Offline"
"offline" Offline
"unknown" Unknown special, see below
"error" Error special, see below

As well as these well-known status identifiers, every status also has a numerical type value chosen from Connection_Presence_Type which can be used by the client to classify even unknown statuses into different fundamental types.

These numerical types exist so that even if a client does not understand the string identifier being used, and hence cannot present the presence to the user to set on themselves, it may display an approximation of the presence if it is set on a contact.

As well as the normal status identifiers, there are two special ones that may be present: 'unknown' with type Unknown and 'error' with type Error. 'unknown' indicates that it is impossible to determine the presence of a contact at this time, for example because it's not on the 'subscribe' list and the protocol only allows one to determine the presence of contacts you're subscribed to. 'error' indicates that there was a failure in determining the status of a contact.

If the connection has a 'subscribe' contact list, PresencesChanged signals should be emitted to indicate changes of contacts on this list, and should also be emitted for changes in your own presence. Depending on the protocol, the signal may also be emitted for others such as people with whom you are communicating, and any user interface should be updated accordingly.

telepathy-qt-0.9.6.1/spec/Channel_Type_Contact_List.xml0000644000175100017520000001256712530423576024430 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Replaced by Connection.Interface.ContactList

A channel type for representing a list of people on the server which is not used for communication. This is intended for use with the interface Channel.Interface.Group for managing buddy lists and privacy lists on the server. This channel type has no methods because all of the functionality it represents is available via the group interface.

There are currently two types of contact list: HANDLE_TYPE_LIST is a "magic" server-defined list, and HANDLE_TYPE_GROUP is a user-defined contact group.

For server-defined lists like the subscribe list, singleton instances of this channel type should be created by the connection manager at connection time if the list exists on the server, or may be requested by using the appropriate handle. These handles can be obtained using RequestHandles with a Handle_Type of HANDLE_TYPE_LIST and one of the following identifiers:

  • subscribe - the group of contacts for whom you receive presence
  • publish - the group of contacts who may receive your presence
  • hide - a group of contacts who are on the publish list but are temporarily disallowed from receiving your presence
  • allow - a group of contacts who may send you messages
  • deny - a group of contacts who may not send you messages
  • stored - on protocols where the user's contacts are stored, this contact list contains all stored contacts regardless of subscription status.

A contact can be in several server-defined lists. All lists are optional to implement. If RequestHandles or RequestChannel for a particular contact list raises an error, this indicates that the connection manager makes no particular statement about the list's contents; clients MUST NOT consider this to be fatal.

If a client wants to list all of a user's contacts, it is appropriate to use the union of the subscribe, publish and stored lists, including the local and remote pending members.

For example in XMPP, contacts who have the subscription type "none", "from", "to" and "both" can be respectively in the lists:

  • "none": stored
  • "from": stored and publish
  • "to": stored and subscribe
  • "both": stored, publish and subscribe

These contact list channels may not be closed.

For user-defined contact groups, instances of this channel type should be created by the connection manager at connection time for each group that exists on the server. New, empty groups can be created by calling RequestHandles with a Handle_Type of HANDLE_TYPE_GROUP and with the name set to the human-readable UTF-8 name of the group.

User-defined groups may be deleted by calling Close on the channel, but only if the group is already empty. Closing a channel to a non-empty group is not allowed; its members must be set to the empty set first.

On some protocols (e.g. XMPP) empty groups are not represented on the server, so disconnecting from the server and reconnecting might cause empty groups to vanish.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Picture.xml0000644000175100017520000001740312530423576024426 0ustar00kaffeinekaffeine00000000000000 Copyright © 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

An interface channels can implement to support a picture. Most of the time this will be implemented by channels implementing the Room2 interface. Note that this interface is not restricted to Text channels, and can also be used on Call channels.

This is a separate interface from RoomConfig1 because (a) it's possible some protocol might support pictures for 1:1 chats; and (b) it avoids downloading an unwanted picture in a GetAll request.
The new picture. The MIME type.

Set the room's picture. Clients SHOULD look at the picture flags before calling this method as the user might not have permission to set the picture.

A successful return of this method indicates a successful change in picture, but clients should still listen for changes to the Picture property for further changes by other users or the server.

Picture is somehow invalid: e.g. unsupported MIME type, too big, etc.

The picture representing this channel.

This property may change during the lifetime of the channel and MUST not be included in a channel request.

The normalized contact ID representing who last modified the picture, or the empty string if it is not known.

The handle corresponding to Actor, or 0 if the Actor is unknown.

A unix timestamp indicating when the picture was last modified, or INT_MAX64 if unknown.

TRUE if the Picture property can be set by the user by calling SetPicture, otherwise FALSE.

If implementations are unsure of what this value should be it SHOULD still be set to what it believes the value is. As a result, clients should be aware that SetPicture can still fail even with this property set to TRUE.

An array of supported MIME types (e.g. "image/jpeg"). Clients MAY assume that the first type in this array is preferred. The minimum height in pixels of the picture, which MAY be 0. The minimum width in pixels of the picture, which MAY be 0. The recommended height in pixels of the picture, or 0 if there is no preferred height. The recommended width in pixels of the picture, or 0 if there is no preferred width. The maximum height in pixels of the picture, or 0 if there is no limit. The maximum width in pixels of the picture, or 0 if there is no limit. The maximum size in bytes of the picture, or 0 if there is no limit.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Mergeable_Conference.xml0000644000175100017520000001164612530423576027030 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009 Collabora Limited Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

An interface for multi-user conference channels that can have additional individual channels merged into them after they are created.

This interface addresses part of freedesktop.org bug #24906 (GSM-compatible conference calls). GSM is currently the only protocol known to implement this; PBXs might implement it too.

It might be made into a mandatory-to-implement part of Conference, or kept as a separate interface, when stabilized.

Request that the given channel be incorporated into this channel.

The given channel SHOULD be added to Conference.Channels if and only if the underlying protocol signals the merge in some way. It MUST NOT be added to Conference.InitialChannels (to preserve immutability).

In GSM it is possible to merge additional calls into an ongoing conference.

In XMPP this method could be implemented to merge a 1-1 Text channel into a MUC Text channel by inviting the peer from the Text channel into the MUC, or to merge a 1-1 Jingle call into a Muji call by inviting the peer from the Jingle call into the Muji call. (MUC and Muji channels are both implemented by XMPP MUCs, with Handle_Type_Room.)

A channel with the same ChannelType as this one, but with TargetHandleType = CONTACT.

The given channel isn't suitable for merging into this one: for instance, it might have the wrong channel type or handle type. It will never be possible to merge channels into this particular conference. The given channel is theoretically suitable for merging into this one, but that's not currently possible for some reason (for instance, this SHOULD be raised if a limit on the number of channels in a conference is exceeded). [FIXME: PermissionDenied?]
telepathy-qt-0.9.6.1/spec/Connection_Interface_Anonymity.xml0000644000175100017520000001702512530423576025531 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2010 Nokia Corporation Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface to support anonymity settings on a per-connection basis. This defines what personal identifying information a remote contact may or may not see. For example, GSM might use this for CLIR, while SIP might use this for privacy service requests.

Flags for the various types of anonymity modes. These modes are solely to inform the CM of the desired anonymous settings. It is up to the CM to determine whether the anonymity modes should be handled within the CM itself, or whether the network that a CM might be talking to should be enforcing anonymity.

CMs MAY support only a subset of these modes, and specific connections MAY support none at all.

Obscure any information that provides user identification, user-agent identification or personal details. Examples of this information might be GSM CallerID, SIP from address, various informational email headers, etc.

The CM should scrub/replace any of this information before passing messages or data onto the network. Note that a CM which has the option of obscuring the information at the CM or privacy service level would choose both (anonymity services are opaque to clients of this interface).

Clients SHOULD NOT set both Client_Info and Show_Client_Info modes. If they are set, the CM MUST respect Client_Info and ignore Show_Client_Info.

Explicitly request showing of client information. In connection context, this can be used to override service default. In channel context, this overrides connection anonymity modes.

In GSM, it's possible to have CLIR enabled by default, and explicitly suppress CLIR for a single phone call.

Clients SHOULD NOT set both Client_Info and Show_Client_Info modes. If they are set, the CM MUST respect Client_Info and ignore Show_Client_Info. The CM MAY set both Client_Info and Show_Client_Info in SupportedAnonymityModes to indicate its support for explicitly hiding and publicising client information.

Obscure any originating IP address information, contact URIs, and anonymize all traffic involved with sending/receiving any media streams or call content. Examples of this include the "headers" portions of RFC 3323 as well as the History-Info (described in RFC 4244) for a SIP CM.

This SHOULD have the effect of hiding address information from the remote contact (ie, the contact cannot know what IP address the session is originated from). Obviously the network still needs to be able to route information between contacts, so this provides no guarantees of what can be seen by intermediaries.

The anonymity modes supported by the CM for this connection. Once Connection.Status has moved to Connected, this property MUST NOT change.

This specifies whether or not the anonymity settings MUST be respected by the CM and any intermediaries between the local and remote contacts. If this is set to true but anonymity settings cannot be followed, then the session MUST be denied with a org.freedesktop.Telepathy.Error.WouldBreakAnonymity error. Any client that sets AnonymityModes SHOULD also set this property first (rather than accepting the CM's default value).

The currently enabled anonymity modes for the connection. Setting has the effect of requesting new modes for the connection, and may raise an error if the unsupported modes are set. Successfully changing the modes will result in emission of AnonymityModesChanged signal.

An unsupported mode was supplied. Supported modes are specified in the SupportedAnonymityModes property, and this should be checked prior to setting AnonymityModes.
Emitted when the anonymity mode has changed. The new anonymity modes for this connection.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Balance.xml0000644000175100017520000001433512530423576025070 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009 Collabora Ltd. Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

In many real-time communication services the user can pay for certain services, typically calls to the PSTN, in advance. In (at least) Skype, it's possible to query the current balance in a machine-readable way.

An amount of money in a specified currency. For example, 3.21 British pounds would conventionally be represented by (Amount = 321, Scale = 2, Currency = "GBP"), but could be represented by (Amount = 3210, Scale = 3, Currency = "GBP") in a service that records balance in units of 0.001 pounds.

As a special case, if Amount = 0, Scale = 2**32 - 1 (i.e. the largest possible 32-bit unsigned integer) and Currency = "", this indicates an unknown amount.

The amount, expressed as a fixed-point number with decimal scale defined by the Scale field; for instance, an Amount value of 1234 with Scale of 2 represents 12.34 in the currency unit given by the Currency field.

The decimal scale for the fixed point value of the Amount field, defining the number of rightmost decimal digits from the integer value which form the fractional part of the resulting currency value.

As well as defining the interpretation of Amount, user interfaces may use this value to determine the precision with which to display the amount.

The currency code represented by this amount, which SHOULD be an international currency code such as "EUR", "USD", or "JPY" if possible. An empty string can be used to indicate that the currency is not known.

The user's balance on the account corresponding to this Connection. A negative amount may be possible on some services, and indicates that the user owes money to the service provider.

On initial connection, this property may have an unknown value, represented by Amount = 0, Scale = 2**32 - 1 (the largest possible 32-bit unsigned integer) and Currency = "".

A URI the user may visit via the web browser to manage and top-up their account balance. This property is not guaranteed to be well-defined until the connection becomes Connected; there is no change notification. Different protocols and even servers or gateways (e.g. SIP and XMPP PSTN gateways) will have a different website used to manage a user's account balance. This property enables the client to provide that to the user. A Connection Manager MAY set this itself (because it is static or discoverable), or expose it as a connection parameter.

Emitted when the user's balance has changed.

The new value of the AccountBalance property.

telepathy-qt-0.9.6.1/spec/Channel_Type_File_Transfer.xml0000644000175100017520000006726012530423576024565 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

A channel type for transferring files. The transmission of data between contacts is achieved by reading from or writing to a socket. The type of the socket (local Unix, IPv4, etc.) is decided on when the file transfer is offered or accepted.

A socket approach is used to make the transfer less dependent on both client and connection manager knowing the same protocols. As an example, when browsing an SMB share in a file manager, one selects "Send file" and chooses a contact. Instead of passing a URL which would then require the connection manager to connect to the SMB share itself, the client passes a stream from which the connection manager reads, requiring no further connection to the share. It also allows connection managers to be more restricted in their access to the system, allowing tighter security policies with eg SELinux, or more flexible deployments which cross user or system boundaries.

The Telepathy client should connect to the socket or address that the connection manager has set up and provided back to the clients through the two methods.

  • In order to send a file, one should request a FileTransfer channel for a contact, including at least the mandatory properties (Filename, Size and ContentType). Then, one should call ProvideFile to configure the socket that will be used to transfer the file.
  • In order to receive an incoming file transfer, one should call AcceptFile and then wait until the state changes to Open. When the receiver wants to resume a transfer, the Offset argument should be should be set to a non-zero value when calling AcceptFile.
  • Once the offset has been negotiated, the InitialOffsetDefined signal is emitted and the InitialOffset property is defined. The InitialOffsetDefined signal is emitted before channel becomes Open. The receiver MUST check the value of InitialOffset for a difference in offset from the requested value in AcceptFile.
  • When the state changes to Open, Clients can start the transfer of the file using the offset previously announced.

If something goes wrong with the transfer, Channel.Close should be called on the channel.

The File channel type may be requested for handles of type HANDLE_TYPE_CONTACT. If the channel is requested for any other handle type then the behaviour is undefined.

Connection managers SHOULD NOT advertise support for file transfer to other contacts unless it has been indicated by a call to UpdateCapabilities.

People would send us files, and it would always fail. That would be silly.

The state of the file transfer as described by the File_Transfer_State enum.

The file's MIME type. This cannot change once the channel has been created.

This property is mandatory when requesting the channel with the Connection.Interface.Requests.CreateChannel method. Protocols which do not have a content-type property with file transfers should set this value to application/octet-stream.

The name of the file on the sender's side. This is therefore given as a suggested filename for the receiver. This cannot change once the channel has been created.

This property should be the basename of the file being sent. For example, if the sender sends the file /home/user/monkey.pdf then this property should be set to monkey.pdf.

This property is mandatory when requesting the channel with the Connection.Interface.Requests.CreateChannel method. This property cannot be empty and MUST be set to a sensible value.

The size of the file. If this property is set, then the file transfer is guaranteed to be this size. This cannot change once the channel has been created.

When you are creating a channel with this property, its value MUST be accurate and in bytes. However, when receiving a file, this property still MUST be in bytes but might not be entirely accurate to the byte.

This property is mandatory when requesting the channel with the Connection.Interface.Requests.CreateChannel method. If this information isn't provided in the protocol, connection managers MUST set it to UINT64_MAX.

The type of the ContentHash property.

This property is optional when requesting the channel with the Connection.Interface.Requests.CreateChannel method. However, if you wish to include the ContentHash property you MUST also include this property. If you omit this property from a Connection.Interface.Requests.CreateChannel method call then its value will be assumed to be File_Hash_Type_None.

For each supported hash type, implementations SHOULD include an entry in RequestableChannelClasses with this property fixed to that hash type. If the protocol supports offering a file without a content hash, implementations SHOULD list this property in Allowed in a requestable channel class, mapping hash types they don't understand to None.

Hash of the contents of the file transfer, of type described in the value of the ContentHashType property.

This property is optional when requesting the channel with the Connection.Interface.Requests.CreateChannel method. Its value MUST correspond to the appropriate type of the ContentHashType property. If the ContentHashType property is not set, or set to File_Hash_Type_None, then this property will not even be looked at.

Description of the file transfer. This cannot change once the channel has been created.

This property is optional when requesting the channel with the Connection.Interface.Requests.CreateChannel method. If this property was not provided by the remote party, connection managers MUST set it to the empty string.

The last modification time of the file being transferred. This cannot change once the channel has been created

This property is optional when requesting the channel with the Connection.Interface.Requests.CreateChannel method.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for sockets with that address type. For simplicity, if a CM supports offering a particular type of file transfer, it is assumed to support accepting it. Connection Managers MUST support at least Socket_Address_Type_IPv4.

A typical value for a host without IPv6 support:

          {
            Socket_Address_Type_IPv4:
              [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
               Socket_Access_Control_Netmask],
            Socket_Address_Type_Unix:
              [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
          }
        

The number of bytes that have been transferred at the time of requesting the property. This will be updated as the file transfer continues.

The offset in bytes from where the file should be sent. This MUST be respected by both the receiver and the sender after the state becomes Open, but before any data is sent or received. Until the InitialOffsetDefined signal is emitted, this property is undefined.

Before setting the State property to Open, the connection manager MUST set the InitialOffset property, possibly to 0.

This property MUST NOT change after the state of the transfer has changed to Open.

For outgoing file transfers, this requestable property allows the channel requester to inform observers (and the handler, if it is not the requester itself) of the URI of the file being transferred. Note that the connection manager SHOULD NOT read this file directly; the handler streams the file into the CM through the socket negotiated using ProvideFile.

On outgoing file transfers, this property MUST NOT change after the channel is requested.

For incoming file transfers, this property MAY be set by the channel handler before calling AcceptFile to inform observers where the incoming file will be saved. If set by an approver, the handler MUST save the file to that location. Setting this property once AcceptFile has been called MUST fail. Once this property has been set URIDefined is emitted.

If set, this URI SHOULD generally point to a file on the local system, as defined by RFC 1738 §3.10; that is, it should be of the form file:///path/to/file or file://localhost/path/to/file. For outgoing files, this URI MAY use a different scheme, such as http:, if a remote resource is being transferred to a contact.

An invalid state type used as a null value. This value MUST NOT appear in the State property. The file transfer is waiting to be accepted/closed by the receiver. The receiver has to call AcceptFile, then wait for the state to change to Open and check the offset value. The receiver has accepted the transfer. The sender now has to call ProvideFile to actually start the transfer. The receiver should now wait for the state to change to Open and check the offset value. The file transfer is open for traffic. The file transfer has been completed successfully. The file transfer has been cancelled. No reason was specified. The change in state was requested. The file transfer was cancelled by the local user. The file transfer was cancelled by the remote user. The file transfer was cancelled because of a local error. The file transfer was cancelled because of a remote error. No hash. MD5 digest as a string of 32 ASCII hex digits. SHA1 digest as a string of ASCII hex digits. SHA256 digest as a string of ASCII hex digits. Accept a file transfer that's in the Pending state. The file transfer's state becomes Accepted after this method is called. At this point the client can connect to the socket. CM MUST emit InitialOffsetDefined and change the state to Open before writing to the socket. Then InitialOffset should be respected in case its value differs from the offset that was specified as an argument to AcceptFile. The type of address the connection manager should listen on. The type of access control the connection manager should apply to the socket. A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum. The desired offset in bytes where the file transfer should start. The offset is taken from the beginning of the file. Specifying an offset of zero will start the transfer from the beginning of the file. The offset that is actually given in the InitialOffset property can differ from this argument where the requested offset is not supported. (For example, some protocols do not support offsets at all so the InitialOffset property will always be 0.) The address on which the connection manager will listen for connections for this file transfer. The given address type or access-control mechanism is not supported. Your address type, access control, access control parameter, offset, or a combination of all four is invalid. The file transfer is not in the Pending state, there isn't or there is a local error with acquiring a socket. Provide the file for an outgoing file transfer which has been offered. Opens a socket that the client can use to provide a file to the connection manager. The channel MUST have been requested, and will change state to Open when this method is called if its state was Accepted. The type of address the connection manager should listen on. The type of access control the connection manager should apply to the socket. A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum. The address on which the connection manager will listen for connections for this file transfer. The given address type or access-control mechanism is not supported. Your address type, access control, access control parameter, or a combination of all three is invalid. Channel is not an outgoing transfer, ProvideFile has already been called, or there was a local error acquiring the socket. Emitted when the state of a file transfer changes. The new state of the file transfer; see the File_Transfer_State enumeration. The reason for the state change; see the File_Transfer_State_Change_Reason enumeration. The value will always be File_Transfer_State_Change_Reason_None, except when changing state to cancelled. Emitted when the number of transferred bytes changes. This will not be signalled with every single byte change. Instead, the most frequent this signal will be emitted is once a second. This should be sufficient, and the TransferredBytes property SHOULD NOT be polled. The number of already transferred bytes. Emitted when the value of the InitialOffset property has been negotiated. This signal MUST be emitted before the channel becomes Open and clients have to use this offset when transferring the file. The value of the InitialOffset property. Emitted when the value of the URI property has been set. This signal MUST only be emitted on incoming file transfers, and only if the handler sets the URI property before accepting the file. The value of the URI property.

The collection of files to which this channel belongs, or the empty string if this channel does not belong to a collection of files.

A channel's FileCollection property can never change.

At least on GTalk and apparently also on iChat the user can send a set of files to a contact and that contact can then pick and choose which files to actually receive.

The CM should emit all new FT channels belonging to one collection at the same time. UIs supporting this feature can then bundle all these channels together in some way, and show a nice UI. UIs not supporting it will treat them as separate transfers, which is not great but a reasonable fallback.

No mechanism is currently defined to indicate whether the UI should expect any more files in the same collection. UIs SHOULD assume that more file transfers may be added to a collection. It is possible that a "no more channels in this collection" indication will be added in a future version of this specification.

telepathy-qt-0.9.6.1/spec/Channel_Interface_DTMF.xml0000644000175100017520000003642512530423576023552 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Collabora Limited Copyright © 2005-2010 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The only part of this spec that should be used with a Call1 channel is the "InitialTones" property. The Stream_IDs in this interface can now be ignored by CMs. An interface that gives a Channel the ability to send DTMF events over audio streams which have been established using the StreamedMedia channel type. The event codes used are in common with those defined in RFC4733, and are listed in the DTMF_Event enumeration. The Stream_ID parameter became vestigial. A stream ID as defined in the StreamedMedia channel type. This argument is included for backwards compatibility and MUST be ignored by the implementations - the tone SHOULD be sent to all eligible streams in the channel. A numeric event code from the DTMF_Event enum.

Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until StopTone is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable.

The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly.

Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

The given stream ID was invalid. Deprecated, since stream IDs are ignored. There are no eligible audio streams. DTMF tones are already being played.
The Stream_ID parameter became vestigial. A stream ID as defined in the StreamedMedia channel type. This argument is included for backwards compatibility and MUST be ignored by the implementations - the sending SHOULD be stoped in all eligible streams in the channel. Stop sending any DTMF tones which have been started using the StartTone or MultipleTones methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. On some protocols it might be impossible to cancel queued tones immediately. The given stream ID was invalid. Deprecated, since stream IDs are ignored. Continuous tones are not supported by this stream. Deprecated, since stream IDs are ignored. The characters [pPxXwW,] must also be supported.

A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:

  • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of DTMF_Event
  • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds
  • 'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the TonesDeferred signal with the rest of the string as its argument: see that signal for details

Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager.

In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence.

The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as audio/telephone-event.

Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.

The supplied Tones string was invalid. There are no eligible audio streams. DTMF tones are already being played.
Indicates whether there are DTMF tones currently being sent in the channel. If so, the client should wait for StoppedTones signal before trying to send more tones.

If non-empty in a channel request that will create a new channel, the connection manager should send the tones immediately after at least one eligible audio stream has been created in the channel.

This should only be used with InitialAudio=true.

This property is immutable (cannot change).

The tones waiting for the user to continue, if any.

When this property is set to a non-empty value, TonesDeferred is emitted. When any tones are played (i.e. whenever SendingTones is emitted), this property is reset to the empty string.

The new non-empty value of DeferredTones.

Emitted when 'w' or 'W', indicating "wait for the user to continue", is encountered while playing a DTMF string queued by MultipleTones or InitialTones. Any queued DTMF events after the 'w', which have not yet been played, are placed in the DeferredTones property and copied into this signal's argument.

When the channel handler is ready to continue, it MAY pass the value of DeferredTones to MultipleTones, to resume sending. Alternatively, it MAY ignore the deferred tones, or even play different tones instead. Any deferred tones are discarded the next time a tone is played.

This signal SHOULD NOT be emitted if there is nothing left to play, i.e. if the 'w' was the last character in the DTMF string.

DTMF string (one or more events) that is to be played.

DTMF tone(s)are being sent to all eligible streams in the channel. The signal is provided to indicating the fact that the streams are currently being used to send one or more DTMF tones, so any other media input is not getting through to the audio stream. It also serves as a cue for the StopTone method.

True if the DTMF tones were actively cancelled via StopTone.

DTMF tones have finished playing on streams in this channel.

0 1 2 3 4 5 6 7 8 9 * # A B C D
telepathy-qt-0.9.6.1/spec/Channel_Interface_Service_Point.xml0000644000175100017520000001021012530423576025551 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for channels that can indicate when/if they are connected to some form of service point. For example, when dialing 9-1-1 in the US, a GSM modem/network will recognize that as an emergency call, and inform higher levels of the stack that the call is being handled by an emergency service. In this example, the call is handled by a Public Safety Answering Point (PSAP) which is labeled as "urn:service:sos". Other networks and protocols may handle this differently while still using this interface.

Note that while the majority of examples given in this documentation are for GSM calls, they could just as easily be SIP calls, GSM SMS's, etc.

This property is used to indicate that the channel target is a well-known service point. Please note that the CM (or lower layers of the stack or network) may forward the connection to other other service points, which the CM SHOULD indicate via ServicePointChanged signal.

This property SHOULD be set for channel requests that are specifically targeting service points.

The service point that the channel is connected to. If the channel is not connected to a service point, the CM MUST set the Service_Point_Type field to None; for instance, this will be the case for ordinary calls.

Emitted when a channel changes the service point that it's connected to. This might be a new call being connected to a service, a call connected to a service being routed to a different service (ie, an emergency call being routed from a generic emergency PSAP to a poison control PSAP), or any number of other things.

Note that this should be emitted as soon as the CM has been notified of the switch, and has updated its internal state. The CM MAY still be in the process of connecting to the new service point.

The new service point that is being used.
telepathy-qt-0.9.6.1/spec/Channel_Dispatch_Operation.xml0000644000175100017520000005555312530423576024622 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

A channel dispatch operation is an object in the ChannelDispatcher representing a batch of unrequested channels being announced to client Approver processes.

These objects can result from new incoming channels or channels which are automatically created for some reason, but cannot result from outgoing requests for channels.

More specifically, whenever the Connection.Interface.Requests.NewChannels signal contains channels whose Requested property is false, or whenever the Connection.NewChannel signal contains a channel with suppress_handler false, one or more ChannelDispatchOperation objects are created for those channels.

(If some channels in a NewChannels signal are in different bundles, this is an error. The channel dispatcher SHOULD recover by treating the NewChannels signal as if it had been several NewChannels signals each containing one channel.)

First, the channel dispatcher SHOULD construct a list of all the Handlers that could handle all the channels (based on their HandlerChannelFilter property), ordered by priority in some implementation-dependent way. If there are handlers which could handle all the channels, one channel dispatch operation SHOULD be created for all the channels. If there are not, one channel dispatch operation SHOULD be created for each channel, each with a list of channel handlers that could handle that channel.

If no handler at all can handle a channel, the channel dispatcher SHOULD terminate that channel instead of creating a channel dispatcher for it. It is RECOMMENDED that the channel dispatcher closes the channels using Channel.Interface.Destroyable.Destroy if supported, or Channel.Close otherwise. As a special case, the channel dispatcher SHOULD NOT close ContactList channels, and if Close fails, the channel dispatcher SHOULD ignore that channel.

ContactList channels are strange. We hope to replace them with something better, such as an interface on the Connection, in a future version of this specification.

When listing channel handlers, priority SHOULD be given to channel handlers that are already handling channels from the same bundle.

If a handler with BypassApproval = True could handle all of the channels in the dispatch operation, then the channel dispatcher SHOULD call HandleChannels on that handler, and (assuming the call succeeds) emit Finished and stop processing those channels without involving any approvers.

Some channel types can be picked up "quietly" by an existing channel handler. If a Text channel is added to an existing bundle containing a StreamedMedia channel, there shouldn't be any approvers, flashing icons or notification bubbles, if the the UI for the StreamedMedia channel can just add a text box and display the message.

Otherwise, the channel dispatcher SHOULD send the channel dispatch operation to all relevant approvers (in parallel) and wait for an approver to claim the channels or request that they are handled. See AddDispatchOperation for more details on this.

Finally, if the approver requested it, the channel dispatcher SHOULD send the channels to a handler.

A list of the extra interfaces provided by this channel dispatch operation. This property cannot change. The Connection with which the Channels are associated. The well-known bus name to use can be derived from this object path by removing the leading '/' and replacing all subsequent '/' by '.'. This property cannot change. The Account with which the Connection and Channels are associated. This property cannot change. The Channels to be dispatched, and their properties. Change notification is via the ChannelLost signal (channels cannot be added to this property, only removed).

A channel has closed before it could be claimed or handled. If this is emitted for the last remaining channel in a channel dispatch operation, it MUST immediately be followed by Finished.

This signal MUST NOT be emitted until all Approvers that were invoked have returned (successfully or with an error) from their AddDispatchOperation method.

This means that Approvers can connect to the ChannelLost signal in a race-free way. Non-approver processes that discover a channel dispatch operation in some way (such as observers) will have to follow the usual "connect to signals then recover state" model - first connect to ChannelLost and Finished, then download Channels (and on error, perhaps assume that the operation has already Finished).

The Channel that closed.

The name of a D-Bus error indicating why the channel closed. If no better reason can be found, org.freedesktop.Telepathy.Error.NotAvailable MAY be used as a fallback; this means that this error SHOULD NOT be given any more specific meaning.

A string associated with the D-Bus error.

The well known bus names (starting with org.freedesktop.Telepathy.Client.) of the possible Handlers for these channels. The channel dispatcher MUST place the most preferred handlers first, according to some reasonable heuristic. As a result, approvers SHOULD use the first handler by default.

The heuristic used to prioritize handlers SHOULD give a higher priority to handlers that are already running.

If, for instance, Empathy and Kopete have similar functionality, and Empathy is running, we should prefer to send channels to it rather than launching Kopete via service activation.

Called by an approver to accept a channel bundle and request that the given handler be used to handle it.

If successful, this method will cause the ChannelDispatchOperation object to disappear, emitting Finished.

However, this method may fail because the dispatch has already been completed and the object has already gone. If this occurs, it indicates that another approver has asked for the bundle to be handled by a particular handler. The approver MUST NOT attempt to interact with the channels further in this case, unless it is separately invoked as the handler.

Approvers which are also channel handlers SHOULD use Claim instead of HandleWith to request that they can handle a channel bundle themselves.

(FIXME: list some possible errors)

If the channel handler raises an error from HandleChannels, this method MAY respond by raising that same error, even if it is not specifically documented here.

The well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the channel handler that should handle the channel, or the empty string if the client has no preferred channel handler.

The selected handler is non-empty, but is not a syntactically correct DBus_Bus_Name or does not start with "org.freedesktop.Telepathy.Client.". The selected handler is temporarily unable to handle these channels. The selected handler is syntactically correct, but will never be able to handle these channels (for instance because the channels do not match its HandlerChannelFilter, or because HandleChannels raised NotImplemented). At the time that HandleWith was called, this dispatch operation was processing an earlier call to HandleWith. The earlier call has now succeeded, so some Handler nominated by another approver is now responsible for the channels. In this situation, the second call to HandleWith MUST NOT return until the first one has returned successfully or unsuccessfully, and if the first call to HandleChannels fails, the channel dispatcher SHOULD try to obey the choice of Handler made by the second call to HandleWith.

Called by an approver to claim channels for handling internally. If this method is called successfully, the process calling this method becomes the handler for the channel, but does not have the HandleChannels method called on it.

Clients that call Claim on channels but do not immediately close them SHOULD implement the Handler interface and its HandledChannels property.

Approvers wishing to reject channels MUST call this method to claim ownership of them, and MUST NOT call Close on the channels unless/until this method returns successfully.

The channel dispatcher can't know how best to close arbitrary channel types, so it leaves it up to the approver to do so. For instance, for Text channels it is necessary to acknowledge any messages that have already been displayed to the user first - ideally, the approver would display and then acknowledge the messages - or to call Channel.Interface.Destroyable.Destroy if the destructive behaviour of that method is desired.

Similarly, an Approver for StreamedMedia channels can close the channel with a reason (e.g. "busy") if desired. The channel dispatcher, which is designed to have no specific knowledge of particular channel types, can't do that.

If successful, this method will cause the ChannelDispatchOperation object to disappear, emitting Finished, in the same way as for HandleWith.

This method may fail because the dispatch operation has already been completed. Again, see HandleWith for more details. The approver MUST NOT attempt to interact with the channels further in this case.

(FIXME: list some other possible errors)

At the time that Claim was called, this dispatch operation was processing a call to HandleWith which has now succeeded, so some Handler nominated by another approver is now responsible for the channel.
At the time of writing, no released implementation of the Channel Dispatcher implements this method; clients should fall back to calling HandleWith.

A variant of HandleWith allowing the approver to pass an user action time. This timestamp will be passed to the Handler when HandleChannels is called.

The well-known bus name (starting with org.freedesktop.Telepathy.Client.) of the channel handler that should handle the channel, or the empty string if the client has no preferred channel handler.

The time at which user action occurred.

The selected handler is non-empty, but is not a syntactically correct DBus_Bus_Name or does not start with "org.freedesktop.Telepathy.Client.". The selected handler is temporarily unable to handle these channels. The selected handler is syntactically correct, but will never be able to handle these channels (for instance because the channels do not match its HandlerChannelFilter, or because HandleChannels raised NotImplemented). At the time that HandleWith was called, this dispatch operation was processing an earlier call to HandleWith. The earlier call has now succeeded, so some Handler nominated by another approver is now responsible for the channels. In this situation, the second call to HandleWith MUST NOT return until the first one has returned successfully or unsuccessfully, and if the first call to HandleChannels fails, the channel dispatcher SHOULD try to obey the choice of Handler made by the second call to HandleWith.

Emitted when this dispatch operation finishes. The dispatch operation is no longer present and further methods must not be called on it.

Approvers that have a user interface SHOULD stop notifying the user about the channels in response to this signal; they MAY assume that on errors, they would have received ChannelLost first.

Its object path SHOULD NOT be reused for a subsequent dispatch operation; the ChannelDispatcher MUST choose object paths in a way that avoids immediate re-use.

Otherwise, clients might accidentally call HandleWith or Claim on a new dispatch operation instead of the one they intended to handle.

This signal MUST NOT be emitted until all Approvers that were invoked have returned (successfully or with an error) from their AddDispatchOperation method.

This means that Approvers can connect to the ChannelLost signal in a race-free way. Non-approver processes that discover a channel dispatch operation in some way (such as observers) will have to follow the usual "connect to signals then recover state" model - first connect to ChannelLost and Finished, then download Channels (and on error, perhaps assume that the operation has already Finished).

telepathy-qt-0.9.6.1/spec/Channel_Interface_Subject.xml0000644000175100017520000001337512530423576024416 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010–2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(version 2)

An interface channels can implement to support subjects. Most of the time this will be implemented by channels implementing the Room2 interface, but some protocols support subjects in 1-to-1 chats (such as XMPP). Note that this interface is not restricted to Text channels, and can also be used on Call channels.

The new subject.

Set the room's subject. Clients SHOULD look at the subject flags before calling this method as the user might not have permission to set the subject.

A successful return of this method indicates a successful change in subject, but clients should still listen for changes to the Subject property for further changes by other users or the server.

The human-readable subject on the channel such as the topic in an IRC channel, or the room name in XMPP MUCs.

This property replaces the subject Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.

This property may change during the lifetime of the channel and MUST not be included in a channel request.

The normalized contact ID representing who last modified the subject, or the empty string if it is not known.

This property replaces the subject-contact Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.

The handle corresponding to Actor, or 0 if the Actor is unknown.

A unix timestamp indicating when the subject was last modified, or INT_MAX64 if unknown.

This property replaces the subject-timestamp Telepathy property of Text channels, as Telepathy properties are soon to be deprecated completely.

TRUE if the Subject property can be set by the user by calling SetSubject, otherwise FALSE.

If implementations are unsure of what this value should be it SHOULD still be set to what it believes the value is. As a result, clients should be aware that SetSubject can still fail even with this property set to TRUE.

In XMPP it is impossible to know whether an occupant can set the subject as XMPP server implementations are wildly inconsistent.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Client_Types.xml0000644000175100017520000002201712530423576026141 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface on connections to support protocols which allows users to subscribe to the client types of their contacts.

One can connect to instant messaging networks on a huge variety of devices, from PCs, to phones to consoles. It can be useful for users to know what kind of device a contact is using so that he or she can decide not to send that big file or start a video chat. This interface exposes exactly this information for clients to display.

The client types are represented in strings, using the values documented by the XMPP registrar with some additional types added for other protocols. A contact can set one or more client types so this interface returns a list of strings to denote client types for a contact. The well-known client types to be used are:

  • bot
  • console (minimal non-GUI client used on dumb terminals or text-only screens, not a games console)
  • handheld
  • pc
  • phone
  • web

If the empty list is given as the client types, this means that details about the contact's client types are unknown. If there are multiple resources of a contact online at one point in time, the client types of the most available resource will be returned. In other words, the returned client types are those for the resource whose presence will be retreived using the SimplePresence interface.

For example, if a contact has two resources:

  • their phone, with presence "available"; and
  • their pc, with presence "busy";

then the methods in this interface will return an array (with one element: "phone") as the client types because that is the more available resource. If at some later time the contact's phone's presence changes to "away", the ClientTypesUpdated signal will notify that the contact's client types attribute has changed from ["phone"] to ["pc"], because "busy" is a more available presence than "away".

A mapping from contact handle to client types. A contact. The contact's client types as documented earlier in this interface. Return the client types of the given contacts, if they are already known. If any of the given contacts' client types are not known, request their current client types, but return immediately without waiting for a reply; if a reply with a non-empty client type array is later received for those contacts, the ClientTypesUpdated signal will be emitted for them. This method is appropriate for "lazy" client type finding, for instance displaying the client types (if available) of everyone in your contact list. The contacts whose client types should be returned or signalled. The contacts' client types, if already known. Contacts whose client types are not already known are omitted from the mapping; contacts known to have no client type information appear in the mapping with an empty list. Return the current client types of the given contact. If necessary, make a request to the server for up-to-date information, and wait for a reply. This method is appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions. The contact whose client types should be returned. The contact's client types. It MAY be empty, indicating that no client type information was found. The requested contact does not allow the local user to see their client type information. Emitted when a contact's client types change or become known. The contact. The contact's client types, or an empty list to indicate that nothing is known about the contact's client types.

The same mapping that would be returned by GetClientTypes for this contact. Omitted from the result if the contact's client types are not known.

A string representing a single client type of a contact.
telepathy-qt-0.9.6.1/spec/Channel_Type_Server_TLS_Connection.xml0000644000175100017520000001356712530423576026212 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API)

A channel type that carries a TLS certificate between a server and a client connecting to it.

Channels of this kind always have Requested = False, TargetHandleType = None and TargetHandle = 0, and cannot be requested with methods such as CreateChannel. Also, they SHOULD be dispatched while the Connection owning them is in the CONNECTING state.

In this case, handlers SHOULD accept or reject the certificate, using the relevant methods on the provided object, or MAY just Close the channel before doing so, to fall back to a non-interactive verification process done inside the CM.

For example, channels of this kind can pop up while a client is connecting to an XMPP server.

A TLSCertificate containing the certificate chain as sent by the server, and other relevant information.

The hostname or domain that the user expects to connect to. Clients SHOULD use the ReferenceIdentities property to verify the identity of the certificate. Clients MAY display this hostname to the user as the expected identity. Clients SHOULD use this property to lookup pinned certificates or other user preferences for the connection.

If this property is not present, clients SHOULD use the Hostname property as the reference identity to validate server certificates against.

The identities of the server we expect ServerCertificate to certify; clients SHOULD verify that ServerCertificate matches one of these identities when checking its validity.

This property MUST NOT be the empty list; it MUST contain the value of the Hostname property. All other identities included in this property MUST be derived from explicit user input or choices, such as Parameters passed to RequestConnection.

The primary use for this property is for XMPP services hosted by Google Apps. When connecting to Google Talk using an @gmail.com JID, the server correctly presents a certificate for gmail.com; however, for domains hosted via Google Apps, a certificate for talk.google.com is offered, due to unresolved technical limitations.

If the user has explicitly chosen to create a Google Talk account, then trusting a certificate for talk.google.com is reasonable. To handle this case, the connection manager may add the values of any or all of the server, fallback-server and extra-identities parameters; the Google Talk account creation user interface may set these parameters appropriately, or the user may set them for accounts with other services.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Avatars.xml0000644000175100017520000005436412530423576025152 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2008 Collabora Limited Copyright (C) 2005-2008 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

strengthened uniqueness requirements so (CM name, protocol, token) is unique; previously only (our Account, remote contact identifier, token) was required to be unique

An opaque token chosen by the connection manager, representing a particular avatar.

Because avatars can be relatively large images, most protocols provide a way to detect whether an old avatar is still valid, or whether an avatar has changed, without pushing the actual avatar data to all clients.

The connection manager MUST choose these tokens in a way that makes it highly unlikely that two different avatars with the same connection manager and protocol will have the same token.

This means that clients MAY use the triple (Connection_Manager_Name, Protocol, avatar token) as a key for their avatar cache. For instance, an avatar for a telepathy-gabble Jabber contact might be stored in a file .../gabble/jabber/4e199b4a1c40b497a95fcd1cd896351733849949.png.

For instance, some protocols (like XMPP) identify avatars by a hash of the avatar data; in this case, the hash can be used as the avatar token.

Some protocols identify avatars by the timestamp of the last change to the avatar; in these protocols it would be necessary for the connection manager to encode both the timestamp and the contact's identifier into the avatar token in order to ensure uniqueness.

This token SHOULD be kept short and reasonably suitable for use in a filename, but MAY contain any UTF-8 character (so clients using avatar tokens in filenames MUST be prepared to escape characters that are not valid in filenames). Connection managers for protocols where tokens would otherwise become inconveniently large or contain many unsuitable characters SHOULD hash the identifying data to generate the token.

A dictionary whose keys are contact handles and whose values are avatar tokens. An integer handle for the contact whose avatar has changed Unique token for their new avatar Emitted when the avatar for a contact has been updated, or first discovered on this connection. If the token differs from the token associated with the client's cached avatar for this contact, the new avatar should be requested with RequestAvatars. The contact whose avatar has been retrieved The token corresponding to the avatar An array of bytes containing the image data A string containing the image MIME type (eg image/jpeg), or empty if unknown Emitted when the avatar for a contact has been retrieved. Fall back to calling GetAvatarRequirements if getting this property fails. An array of supported MIME types (e.g. "image/jpeg"). Clients MAY assume that the first type in this array is preferred. This property cannot change after the Connection goes to the Connected state. Fall back to calling GetAvatarRequirements if getting this property fails. The minimum height in pixels of an avatar on this protocol, which MAY be 0. This property cannot change after the Connection goes to the Connected state. Fall back to calling GetAvatarRequirements if getting this property fails. The minimum width in pixels of an avatar on this protocol, which MAY be 0. This property cannot change after the Connection goes to the Connected state. The recommended height in pixels of an avatar on this protocol, or 0 if there is no preferred height. This property cannot change after the Connection goes to the Connected state. In XMPP a recommended width is given by the protocol specification; in proprietary protocols, using the same avatar size as the proprietary client is likely to lead to the best display to other users. The recommended width in pixels of an avatar on this protocol, or 0 if there is no preferred width. This property cannot change after the Connection goes to the Connected state. The rationale is the same as for RecommendedAvatarHeight. Fall back to calling GetAvatarRequirements if getting this property fails. The maximum height in pixels of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state. Fall back to calling GetAvatarRequirements if getting this property fails. The maximum width in pixels of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state. Fall back to calling GetAvatarRequirements if getting this property fails. The maximum size in bytes of an avatar on this protocol, or 0 if there is no limit. This property cannot change after the Connection goes to the Connected state. Use GetAll to retrieve the D-Bus properties on this interface, falling back to this method on failure. An array of supported MIME types (eg image/jpeg) The minimum image width in pixels The minimum image height in pixels The maximum image width in pixels, or 0 if there is no limit The maximum image height in pixels, or 0 if there is no limit The maximum image size in bytes, or 0 if there is no limit Get the required format of avatars on this connection. An array of handles representing contacts An array of avatar tokens or empty strings (if no avatar is set) in the same order as the given array of contact handles Use GetKnownAvatarTokens instead. Get the unique tokens for all of the given contacts' avatars. Using this method in new Telepathy clients is deprecated; use GetKnownAvatarTokens instead. An array of handles representing contacts A dictionary of handles mapped to avatar tokens, containing only the known avatar tokens. Get the unique tokens for the given contacts' avatars. These tokens can be persisted across connections, and should be used by the client to check whether the avatars have been updated. For handles other than the self handle, only tokens that are already known are returned; an empty token means the given contact has no avatar. However, a CM must always have the tokens for the self handle if one is set (even if it is set to no avatar). On protocols where the avatar does not persist between connections, a CM should omit the self handle from the returned map until an avatar is explicitly set or cleared. An integer handle for the contact to request the avatar for An array of bytes containing the image data A string containing the image MIME type (eg image/jpeg), or empty if unknown Use RequestAvatars instead. Request the avatar for a given contact. Using this method in new Telepathy clients is deprecated; use RequestAvatars instead. The contact does not currently have an avatar. The contacts to retrieve avatars for Request avatars for a number of contacts. The AvatarRetrieved signal is emitted for each avatar retrieved. If the handles are valid but retrieving an avatar fails (for any reason, including the contact not having an avatar) the AvatarRetrieved signal is not emitted for that contact. An array of bytes representing the avatar image data A string representing the image MIME type The string token of the new avatar Set a new avatar image for this connection. The avatar image must respect the requirements obtained by GetAvatarRequirements. Remove the avatar image for this connection.

The same string that would be returned by GetKnownAvatarTokens (omitted from the result if the contact's avatar token is not known, present as an empty string if the contact is known not to have an avatar). Unlike in the GetKnownAvatarTokens method, the avatar tokens for the self handle aren't required to be present. This attribute should not be used to determine whether or not the Avatar needs to be set.

An interface for requesting avatars for contacts on a given connection, receiving notification when avatars are changed, and publishing your own avatar.

Avatars are identified by a string, the Avatar_Token, which represents a particular avatar. Tokens MUST be chosen by the connection manager in such a way that the triple (Connection_Manager_Name, Protocol, Avatar_Token) uniquely identifies an avatar. An empty token means that an avatar has not been set for this contact, and a changed token implies the contact's avatar has changed, but the strings should otherwise be considered opaque by clients.

A client should use GetKnownAvatarTokens to request the tokens for the avatars of all the contacts it is interested in when it connects. The avatars can then be requested using RequestAvatars for the contacts. Clients should bind to the AvatarUpdated signal and request a new copy of the avatar when a contacts' avatar token changes. Clients should cache the token and data of each contact's avatar between connections, to avoid repeatedly retrieving the same avatar.

To publish an avatar, a client should use SetAvatar to provide an image which meets the requirements returned by the GetAvatarRequirements function. On some protocols the avatar is stored on the server, so setting the avatar is persistent, but on others it is transferred via a peer to peer mechanism, so needs to be set every connection. Hence, on every connection, clients should inspect the avatar token of the connection's self handle using GetKnownAvatarTokens; if the self handle is not in the returned map, the client should re-set the avatar. If the self handle's avatar token is known, but the avatar has been changed locally since the last connection, the client should upload the new avatar; if the avatar has not changed locally, then the client should download the avatar from the server if its token differs from the that of the local avatar.

To remove the published avatar on protocols which have persistent avatars, a client should use the ClearAvatar method. This method can safely be used even if there is no avatar for this connection.

telepathy-qt-0.9.6.1/spec/Account_Interface_Hidden.xml0000644000175100017520000000617612530423576024237 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

An interface for flagging certain accounts as hidden, so that they do not appear in the account manager's standard lists of accounts. Accounts whose Hidden property is True are intended for non-interactive use (by non-user-visible services), and appear on the AccountManager.Interface.Hidden.DRAFT1 interface; in all other respects, they behave like any other account.

XMPP, in particular, is increasingly used for purposes other than instant messaging and VoIP. For instance, extensions exist for inter-device bookmark synchronization.

While obviously these services could re-use connections intended for instant messaging, in some cases you might want to use a different account. (Perhaps your bookmark sync provider is not your IM provider.) This API allows such auxiliary accounts to exist in Telepathy, while not being displayed in standard user interfaces for IM, VoIP, and friends.

If True, this account is intended for non-interactive use, and thus should not be presented to the user. It will not appear in properties and signals on the main AccountManager interface; instead, it will show up on AccountManager.Interface.Hidden.DRAFT1.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Room_Config.xml0000644000175100017520000003006112530423576025207 0ustar00kaffeinekaffeine00000000000000 Copyright © 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

version 1. This replaces the old-school Telepathy properties on Text.

Represents the configuration of a chatroom, some aspects of which may be modifiable by the user, depending on their privileges. This corresponds to the room configuration on XMPP, and various channel mode flags on IRC.

The “topic†(on IRC) or “subject†(on XMPP) is not part of this interface; it can be found on the Subject2 interface.

True if people may join the channel without other members being made aware of their identity. True if people may not join the channel until they have been invited. The limit to the number of members; or 0 if there is no limit. True if channel membership is not sufficient to allow participation. A human-visible name for the channel, if it differs from Room2.RoomName; the empty string, otherwise.

On XMPP, this represents the muc#roomconfig_roomname field of the muc#roomconfig form. So for jdev@conference.jabber.org, for example:

  • Room2.RoomName = "jdev";
  • Room2.Server = "conference.jabber.org";
  • Title = "General Jabber development discussion".

XEP-0045 is awful.

A human-readable description of the channel's overall purpose; if any. True if the channel will remain in existence on the server after all members have left it. True if the channel is not visible to non-members. True if contacts joining this channel must provide a password to be granted entry. Note that this property does not indicate that a password is required right now; see the Password interface for the API used to provide a password while joining a room. If PasswordProtected is True, the password required to enter the channel, if known. If the password is unknown, or PasswordProtected is False, the empty string. On XMPP—bless its cotton socks!—non-owners of a MUC cannot see its current password, even if they just provided the password in order to join the room…

If PasswordProtected is True, an optional hint for the password.

On protocols supporting PasswordHint (indicated by its presence in MutableProperties), Password and PasswordHint MUST be set in a single call to UpdateConfiguration.

Skype requires that the password and its hint be supplied together.
If True, the user may call UpdateConfiguration to change the values of the properties listed in MutableProperties.

A list of (unqualified) property names on this interface which may be modified using UpdateConfiguration (if CanUpdateConfiguration is True). Properties not listed here cannot be modified.

For example, IRC does not have the concept of joining a room without other participants knowing your true identity; so on IRC the Anonymous property will always be False, and MutableProperties will not include "Anonymous".

True once the initial room configuration has been retrieved, or False otherwise. On some services, this may take some time after you've joined a room to fetch the configuration. Once this property changes to True, the other properties on this interface can be assumed to be accurate; this property MUST not change to False after it becomes True.

An application's “configure this room†dialog might choose to display a spinner while this property is False, rather than allowing the user to edit probably-inaccurate configuration.

The new values of one or more properties on this interface, which must be listed in MutableProperties. For instance, to set up a channel for discussing top-secret corporate merge plans, this parameter might be:

{
  'Private': True,
  'InviteOnly': True,
  'Description': "The first rule of #inteltakeover is: do not talk about #inteltakeover",
}

If CanUpdateConfiguration is True, modifies the current values of one or more room properties. This method SHOULD NOT return until the change has been accepted or declined by the server.

Note that the server may ostensibly accept the changes (thus allowing this method to return success) but signal different values; for example, the server might truncate Title to some maximum length. Callers SHOULD continue to listen for the PropertiesChanged signal, and trust the values it signals over those provided to this method.

The user is not allowed to reconfigure this room. One or more of the specified properties is unknown, or ill-typed. One or more of the specified properties cannot be modified on this protocol. The room's current configuration has not yet been retrieved, so we cannot update it just yet. The application might like to try again once the ConfigurationRetrieved property becomes True.
telepathy-qt-0.9.6.1/spec/Channel_Future.xml0000644000175100017520000000617112530423576022305 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Ltd. Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface contains functionality which we intend to incorporate into the Channel interface in future. It should be considered to be conceptually part of the core Channel interface, but without API or ABI guarantees.

If we add new functionality to the Channel interface, libraries that use generated code (notably telepathy-glib) will have it as part of their ABI forever, meaning we can't make incompatible changes. By using this interface as a staging area for future Channel functionality, we can try out new properties, signals and methods as application-specific extensions, then merge them into the core Channel interface when we have enough implementation experience to declare them to be stable.

The name is by analogy to Python's __future__ pseudo-module.

(in Channel.FUTURE pseudo-interface)

The ChannelBundle.DRAFT to which this channel belongs.

A channel's Bundle property can never change.

Older connection managers might not have this property. Clients (particularly the channel dispatcher) SHOULD recover by considering each channel to be in a bundle containing only that channel, distinct from all other bundles, which has no additional interfaces.

telepathy-qt-0.9.6.1/spec/Channel_Type_Tubes.xml0000644000175100017520000005727212530423576023126 0ustar00kaffeinekaffeine00000000000000 Copyright © 2007-2009 Collabora Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Client implementations SHOULD use StreamTube and DBusTube instead.

A "tube" is a mechanism for arbitrary data transfer. Two types of data transfer are currently specified: D-Bus messages, and streams of bytes. Each tube has a service name, which is a string specifying the kind of communication that takes place over it, and a dictionary of arbitrary parameters. Tube parameters are commonly used for bootstrap information such as usernames and passwords. Each tube is identified by a locally unique identifier.

The Tubes channel type may be requested for handles of type HANDLE_TYPE_CONTACT and HANDLE_TYPE_ROOM.

Stream tubes specify listening addresses using pairs of parameters with signature 'u', 'v', where the integer 'u' is a member of Socket_Address_Type and the v is dependent on the type of address.

An identifier for a tube. These are local to a Tubes channel, and may not be assumed to be the same as the other participants' idea of the tube identifier. A struct (tube ID, initiator handle, tube type, service name, parameters, state) representing a tube, as returned by ListTubes on the Tubes channel type. Represents a participant in a multi-user D-Bus tube, as returned by GetDBusNames and seen in the DBusNamesChanged signal. The handle of a participant in this D-Bus tube. That participant's unique name.

The tube is D-Bus tube as described by the org.freedesktop.Telepathy.Channel.Type.DBusTube interface.

The tube is stream tube as described by the org.freedesktop.Telepathy.Channel.Type.StreamTube interface.

The tube is waiting to be accepted/closed locally. The tube is waiting to be accepted/closed remotely. The tube is open for traffic. The supported socket address and access-control types for tubes. See GetAvailableStreamTubeTypes. List the available address types and access-control types for stream tubes.

A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for stream tubes with that address type. For simplicity, if a CM supports offering a particular type of tube, it is assumed to support accepting it.

A typical value for a host without IPv6 support:

            {
              Socket_Address_Type_IPv4:
                [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
                 Socket_Access_Control_Netmask],
              Socket_Address_Type_Unix:
                [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
            }
          

If stream tubes are not supported, this will be an empty dictionary.

An array of the available tube types, as defined by the Tube_Type enum. Return an array of tuples, each representing a tube, with the following members:
  • the tube's ID
  • the tube's initiator
  • the tube's type
  • the tube's service
  • the tube's parameters
  • the tube's state
Offers a D-Bus tube providing the service specified. A string representing the service name that will be used over the tube. It should be a well-known D-Bus service name, of the form com.example.ServiceName. A dictionary of properties for the new tube; the allowable keys, types and values are defined by the service. Connection managers must support the value being any primitive (non-container) D-Bus type, or a byte array 'ay'. The ID of the new tube. The contact associated with this channel doesn't have tubes capabilities. The connection manager doesn't support D-Bus tubes. Offer a stream tube exporting the local socket specified. A string representing the service name that will be used over the tube. It should be a well-known TCP service name as defined by http://www.iana.org/assignments/port-numbers or http://www.dns-sd.org/ServiceTypes.html, for instance "rsync" or "daap".

A dictionary of properties for the new tube; the allowable keys, types and values are defined by the service. Connection managers must support the value being any primitive (non-container) D-Bus type, or a byte array 'ay'.

These should usually be the same key-value pairs specified for use in the DNS-SD TXT record for that service.

The type of the listening address of the local service, as a member of Socket_Address_Type. The listening address of the local service, as indicated by the address_type. The access control the local service applies to the local socket, specified so the connection manager can behave appropriately when it connects. A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum. The ID of the new tube. The contact associated with this channel doesn't have tube capabilities. The connection manager doesn't support stream tubes, or does not support the given address type or access-control type.
Emitted when a tube is created. The ID of the new tube. The handle of the contact who initiated the tube. The tube type, as defined by the Tube_Type enum. A string representing the service that will be used over the tube. The new tube's properties. The new tube's state. Accept a D-Bus tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeStateChanged signal is emitted. The ID of the tube to accept. The string describing the address of the private bus. The client should not attempt to connect to the address until the tube is open. The given tube ID is invalid or does not refer to a D-Bus tube. Accept a stream tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeStateChanged signal is emitted. The ID of the tube to accept. The type of address the connection manager should listen on. The type of access control the connection manager should apply to the socket. A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum. The address on which the connection manager will listen for connections to this tube. The client should not attempt to connect to the address until the tube is open. The given tube ID is invalid or does not refer to a stream tube. The given address type or access-control mechanism is not supported. Emitted when the state of a tube changes. The ID of the tube that changed state. The new state of the tube; see the Tube_State enumeration. Close a tube. The ID of the tube to close. Emitted when a tube has been closed. The ID of a closed tube is no longer valid. The ID may later be reused for a new tube. The ID of the tube that was closed. For a D-Bus tube, return a string describing the address of the private bus. The ID of the tube to get an address for. The bus address. The tube is not a D-Bus tube. This tube is not in the "open" state. For a multi-user (i.e. Handle_Type_Room) D-Bus tube, obtain a mapping between contact handles and their unique bus names on this tube. The ID of the tube to get names for. An array of structures, each containing a contact handle and a D-Bus bus name. The tube is not a multi-user D-Bus tube. This tube is not in the "open" state. Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a participant opens or closes the tube. The ID of the tube whose names have changed. Array of handles and D-Bus names of new participants. Array of handles of former participants. For a stream tube, obtain the address of the socket used to communicate over this tube. The ID of the stream tube to get the socket for. The type of the listening address of the socket, as a member of Socket_Address_Type. The listening address of the socket, as indicated by the address_type. The tube is not a stream tube. This tube is not in the "open" state. Emitted on a stream tube when a participant opens a new connection to its socket. The ID of the tube The handle of the participant who opened the new connection
telepathy-qt-0.9.6.1/spec/Protocol_Interface_Avatars.xml0000644000175100017520000001435212530423576024645 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for protocols where it might be possible to set the user's avatar, and the expected size limits and supported MIME types are known before connecting.

If the avatar requirements cannot be discovered while offline, it's impossible to avoid setting the Account's Avatar property to an unsupported avatar.

Each property on this interface SHOULD be cached in the .manager file, using a key of the same name as the property in the [Protocol proto] group. All properties are encoded in ASCII decimal in the obvious way, except for SupportedAvatarMIMETypes which is encoded as a sequence of strings each followed by a semicolon (as for the "localestrings" type in the Desktop Entry Specification).

For instance, an XMPP connection manager might have this .manager file:

[Protocol jabber]
Interfaces=org.freedesktop.Telepathy.Protocol.Interface.Avatars;
param-account=s required
param-password=s required
SupportedAvatarMIMETypes=image/png;image/jpeg;image/gif;
MinimumAvatarHeight=32
RecommendedAvatarHeight=64
MaximumAvatarHeight=96
MinimumAvatarWidth=32
RecommendedAvatarWidth=64
MaximumAvatarWidth=96
MaximumAvatarBytes=8192
The expected value of the Connection.Interface.Avatars.SupportedAvatarMIMETypes property on connections to this protocol. The expected value of the Connection.Interface.Avatars.MinimumAvatarHeight property on connections to this protocol. The expected value of the Connection.Interface.Avatars.MinimumAvatarWidth property on connections to this protocol. The expected value of the Connection.Interface.Avatars.RecommendedAvatarHeight property on connections to this protocol. The expected value of the Connection.Interface.Avatars.RecommendedAvatarWidth property on connections to this protocol. The expected value of the Connection.Interface.Avatars.MaximumAvatarHeight property on connections to this protocol. The expected value of the Connection.Interface.Avatars.MaximumAvatarWidth property on connections to this protocol. The expected value of the Connection.Interface.Avatars.MaximumAvatarBytes property on connections to this protocol.
telepathy-qt-0.9.6.1/spec/Client.xml0000644000175100017520000001424012530423576020615 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

Telepathy clients use connection managers, the channel dispatcher and optionally the account manager to provide useful functionality.

User interface processes are the obvious example of Telepathy clients, but they can provide other functionality, such as address-book synchronization.

Every running or activatable process with a well-known name of the form org.freedesktop.Telepathy.Client.clientname should be probed by the channel dispatcher to discover its capabilities. Each client is either an observer, an approver, a channel handler, or some combination of these.

Activatable services (those with a D-Bus .service file) must be supported so that we can run clients in response to channel creation.

Non-activatable services (those that do not register a D-Bus .service file for their well-known name, but do request it at runtime) must be supported so that we can have programs that process channels, but only if they are already running - for instance, a full-screen media centre application might do this.

The client name, clientname, MUST be a non-empty string of ASCII digits, letters, dots and/or underscores, starting with a letter, and without sets of two consecutive dots or a dot followed by a digit. For non-activatable services, it MAY contain a part that is generated per instance at runtime.

If each of a client Foo's instances should be able to manipulate channels separately, the instance with unique name :1.25 might request a well-known name like org.freedesktop.Telepathy.Client.Foo._1._25.

(Note that well-known bus-name components may not start with a digit, so o.f.T.Client.Foo.1.25 would not be acceptable.)

Each Client MUST export an object whose object path may be determined by replacing '.' with '/' in the well-known name and prepending '/'. This object represents its API as a Telepathy client; the channel dispatcher will call its methods and read its properties when appropriate.

As an optimization, activatable clients SHOULD install a file $XDG_DATA_DIRS/telepathy/clients/clientname.client containing a cached version of its immutable properties, so that for most clients, the channel dispatcher can just read a file to discover capabilities, instead of having to service-activate the client immediately in order to fetch its read-only properties. However, the D-Bus API is canonical, and the channel dispatcher MUST support clients without such a file.

Non-activatable clients MAY install a .client file, but there's not much point in them doing so.

The .client files MUST contain UTF-8 text with the same syntax as Desktop Entry files (although the allowed groups, keys and values differ). Every .client file MUST contain a group whose name is the name of this interface.

The groups, keys and values in the .client file are defined by individual interfaces. Each interface that can usefully cache information in the .client file SHOULD correspond to a group with the same name.

A list of the extra interfaces provided by this client. This SHOULD include at least one of Client.Observer, Client.Approver or Client.Handler.

In the .client file, this is represented by key "Interfaces" in the group named after this interface. The value of the key is a list of interface names each followed by a semicolon (so it always ends with a semicolon unless it is empty), i.e. a key of type "strings" as described in the Desktop Entry specification.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Destroyable.xml0000644000175100017520000000742512530423576025273 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Ltd. Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This interface exists to support channels where Channel.Close is insufficiently destructive. At the moment this means Channel.Type.Text, but the existence of this interface means that unsupported channels can be terminated in a non-channel-type-specific way.

Close the channel abruptly, possibly with loss of data. The connection manager MUST NOT re-create the channel unless/until more events occur.

The main motivating situation for this method is that when a Text channel with pending messages is closed with Close, it comes back as an incoming channel (to avoid a race between Close and an incoming message). If Destroy is called on a Text channel, the CM should delete all pending messages and close the channel, and the channel shouldn't be re-created until/unless another message arrives.

Most clients SHOULD call Channel.Close instead. However, if a client explicitly intends to destroy the channel with possible loss of data, it SHOULD call this method if this interface is supported (according to the Channel.Interfaces property), falling back to Close if not.

In particular, channel dispatchers SHOULD use this method if available when terminating channels that cannot be handled correctly (for instance, if no handler has been installed for a channel type, or if the handler crashes repeatedly).

Connection managers do not need to implement this interface on channels where Close and Destroy would be equivalent.

Callers need to be able to fall back to Close in any case.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Chat_State.xml0000644000175100017520000001424212530423576025030 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2007 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A map from contacts to their chat states. A contact The contact's chat state

A map containing the chat states of all contacts in this channel whose chat state is not Inactive.

Contacts in this channel, but who are not listed in this map, may be assumed to be in the Inactive state.

In implementations that do not have this property, its value may be assumed to be empty until a ChatStateChanged signal indicates otherwise.

This property was not present in older versions of telepathy-spec, because chat states in XMPP are not state-recoverable (if you miss the change notification signal, there's no way to know the state). However, this property still allows clients to recover state changes that were seen by the CM before the client started to deal with the channel.

In CMs that follow older spec versions, assuming Inactive will mean that initial chat states will always be assumed to be Inactive, which is the best we can do. XEP 0085 specifies Inactive as the "neutral" state to be assumed unless told otherwise.

The new state. Set the local state and notify other members of the channel that it has changed. An integer handle for the contact. The new state of this contact. Emitted when the state of a member of the channel has changed. This includes local state. The contact has effectively ceased participating in the chat. The contact has not been active for some time. The contact is actively participating in the chat. The contact has paused composing a message. The contact is composing a message to be sent to the chat.

An interface for channels for receiving notifications of remote contacts' state, and for notifying remote contacts of the local state.

Clients should assume that a contact's state is Channel_Chat_State_Inactive unless they receive a notification otherwise.

The Channel_Chat_State_Gone state is treated differently to other states:

  • It may not be used for multi-user chats
  • It may not be explicitly sent
  • It should be automatically sent when the channel is closed
  • It must not be sent to the peer if a channel is closed without being used
  • Receiving it must not cause a new channel to be opened

The different states are defined by XEP-0085, but may be applied to any suitable protocol.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Contact_Blocking.xml0000644000175100017520000002400612530423576026742 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009–2011 Collabora Ltd. Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Changes from the draft: methods and signals now return Handle_Identifier_Map (a{us}) rather than bare lists of contact handles (au)

An interface for connections where contacts can be blocked from communicating with this user and receiving this user's presence. Clients may retrieve a list of currently-blocked contacts using RequestBlockedContacts, and listen for BlockedContactsChanged to be notified when contacts are blocked and unblocked. The BlockContacts and UnblockContacts methods do what they say on the tin; depending on the value of the ContactBlockingCapabilities property, contacts may be reported for spam or other abuse when calling BlockContacts.

This interface is intended for protocols where blocking contacts persists on the server between connections; connection managers for protocols with no server-side support for blocking contacts MAY choose to implement this interface using an on-disk file of blocked contacts or some other means to store blocked contacts between connections.

This interface is intended to replace the ContactList channel with TargetHandleType List and TargetID "deny" (along with the ContactList and ContactGroups interfaces replacing other channels with TargetHandleType List and TargetHandleType Group, respectively).

Direct the server to block some contacts. The precise effect is protocol-dependent, but SHOULD include ignoring all current and subsequent communications from the given contacts, avoiding sending presence to them in future, and if they were already receiving the local user's presence, behaving as if the local user went offline.

Some contacts to block. If some of the contacts in this list are already blocked, the connection manager MUST act as if they were not specified in this list.

In addition to blocking, report these contacts as abusive to the server administrators.

Clients can determine whether this capability is available by checking the ContactBlockingCapabilities property. If this argument is set to True by a client despite ContactBlockingCapabilities not containing the Can_Report_Abusive flag, the connection manager SHOULD act as if it were False and simply block the supplied contacts.

A correct user interface shouldn't get this far without knowing that reporting abusive contacts is not supported. If it does, then the user has expressed their intention to block these contacts. Returning an error would leave the UI with three options:

  • Ignore the error, leaving the contacts not actually blocked;
  • Display an error to the user;
  • Call this method again, passing False for this argument.

None of these seem preferable to the CM just ignoring this flag if it doesn't support it: that way, the contacts will be blocked, as the user requested, and UIs have fewer ways to mess up entirely.

Direct the server to unblock some contacts.

Some contacts to unblock. If some of the contacts in this list are not currently blocked, the connection manager MUST act as if they were not specified in this list.

List the contacts that are blocked.

Clients SHOULD allow a relatively long timeout for calls to this method, since on some protocols contact blocking is part of the contact list, which can take a significant time to retrieve.

The blocked contacts’ handles, together with their identifiers.

Emitted when the list of blocked contacts is first retrieved (before returning from any pending calls to RequestBlockedContacts), and whenever the list of blocked contacts subsequently changes.

Contacts added to the result of RequestBlockedContacts. Contacts removed from the result of RequestBlockedContacts.

True if the contact would be in the result of RequestBlockedContacts; False or omitted if the contact is not blocked, or if it is unknown whether the contact is blocked.

Additional capabilities for contact blocking; currently, this is limited to whether contacts may be reported as abusive.

Note that there is no capability for supporting blocking itself: the presence of this interface on a Connection indicates that blocking contacts is supported.

When calling BlockContacts, the contacts may be reporting as abusive to the server administrators by setting Report_Abusive to True.
telepathy-qt-0.9.6.1/spec/Call_Stream.xml0000644000175100017520000003163412530423576021573 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009-2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

One stream inside a Content. A stream is a single flow of packets to and from a single remote endpoint. If your call connects to multiple people, you could have multiple streams.

For protocols that support muting streams separately, this object MAY also implement the Mute interface

Set the stream to start or stop sending media from the local user to other contacts.

If True, the LocalSendingState should change to Sending, if it isn't already.

If False, the LocalSendingState should change to None, if it isn't already.

If the call has not been accepted yet, calling SetSending(True) is an error. See LocalSendingState for details.

Request that a remote contact stops or starts sending on this stream.

The CanRequestReceiving property defines whether the protocol allows the local user to request the other side start sending on this stream.

Contact from which sending is requested

If true, request that the given contact starts to send media. If false, request that the given contact stops sending media.

The request contact is valid but is not involved in this stream. The protocol does not allow the local user to request the other side starts sending on this stream.
renamed from SendersChanged to MembersChanged renamed from MembersChanged to RemoteMembersChanged Emitted when RemoteMembers changes. A mapping from channel-specific handles to their updated sending state, whose keys include at least the members who were added, and the members whose states changed. The identifiers of the contacts in the Updates map. The channel-specific handles that were removed from the keys of the RemoteMembers property, as a result of the contact leaving this stream A structured reason for the change. Emitted when LocalSendingState changes. The new value of LocalSendingState. A structured reason for the change. Enum indicating whether a contact is sending media. The contact is not sending media and has not been asked to do so. The contact has been asked to start sending media. The contact is sending media. The contact has been asked to stop sending media. A map from a contact to his or her sending state. The contact handle. The sending state of the contact.

Extra interfaces provided by this stream, such as Stream.Interface.Media. This SHOULD NOT include the Stream interface itself, and cannot change once the stream has been created.

renamed from Senders

A map from remote contacts to their sending state.

Media sent to this stream will be sent to all members listed here. All members listed here will also appear in CallMembers, and each CallMembers member will be listed in at most one Stream per Content. Therefore, to hide things from a member of the call, UIs only need to mute one Stream per Content.

Contacts' handles in this map indicate whether they are sending media to this stream. Sending_State_Pending_Send indicates contacts who are not sending but have been asked to do so. The local user's sending state is shown in LocalSendingState.

This mapping is also used by the streaming implementation to map from MediaDescriptions to Streams. In this use-case, all of the senders in this stream will be represented in RemoteMediaDescriptions. This use-case should not affect anything that does not handle media streaming.

The string identifiers for handles mentioned in RemoteMembers, to give clients the minimal information necessary to create contacts without waiting for round-trips.

The local user's sending state. Media sent on this stream should be assumed to be received, directly or indirectly, by every other contact in the RemoteMembers mapping. Change notification is given via the LocalSendingStateChanged signal.

Implementations of the first Call draft had the self handle in the RemoteMembers (then called Members) map and this showed that it's annoying having to keep track of the self handle so that it can be special-cased.

A value of Pending_Send for this property indicates that the other side requested the local user start sending media (which can be done by calling either SetSending or Accept).

When Accept is called, all streams with a local sending state of Pending_Send and the associated Disposition set to Initial are automatically set to sending.

If true, the user can request that a remote contact starts sending on this stream.

Not all protocols allow the user to ask the other side to start sending media.
telepathy-qt-0.9.6.1/spec/Call_Content.xml0000644000175100017520000002100312530423576021737 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009-2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This object represents one Content inside a Call1. For example, in an audio/video call there would be one audio content and one video content. Each content has one or more Stream objects which represent the actual transport to one or more remote contacts.

There are two cases where multiple streams may happen:
  • Calls with more than two participants, if the protocol does not support multicast, and does not have mixer proxy.
  • With jingle, when calling a contact connected from multiple resources, a stream is created for each resource. Once the remote contact answered from one of its resources, all other streams get removed.

For protocols that support muting all streams of a given content separately, this object MAY also implement the Mute interface

previously there were no arguments Remove the content from the call. This will cause Call1.ContentRemoved((self_handle, User_Requested, "", "")) to be emitted. Raised when a Call doesn't support removing contents (e.g. a Google Talk video call).

Extra interfaces provided by this content, such as Content.Interface.Media, Interface.Hold or Interface.Mute. This SHOULD NOT include the Content interface itself, and cannot change once the content has been created.

The name of the content.

The content name property should be meaningful, so should be given a name which is significant to the user. The name could be the "audio" or "video" string localized, or perhaps include some string identifying the source, such as a webcam identifier.

The media type of this content.

The disposition of this content, which defines whether to automatically start sending data on the streams when Accept is called on the channel. The content has no specific disposition.

The content was initially part of the call. When Accept is called on the channel, all streams of this content with LocalSendingState set to Pending_Send will be moved to Sending as if SetSending (True) had been called.

The disposition of this content. plural version, renamed from StreamAdded

Emitted when streams are added to a call.

The Streams which were added.
plural version, renamed from StreamRemoved

Emitted when streams are removed from a call

The Streams which were removed. Why the content was removed.

The list of Stream objects that exist in this content.

In a conference call multiple parties can share one media content (say, audio), but the streaming of that media can either be shared or separate. For example, in a multicast conference all contacts would share one stream, while in a Muji conference there would be a stream for each participant.

Change notification is through the StreamsAdded and StreamsRemoved signals.

telepathy-qt-0.9.6.1/spec/Call_Content_Interface_Audio_Control.xml0000644000175100017520000001227312530423576026551 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This interface allows the connection manager to be kept informed of, and control, the input and output volumes of an audio stream. While generally not needed, if the connection manager needs to handle stream volumes directly (typically when using Call_Content_Packetization_Type_Raw), this interface may be necessary.

If this interface is present, the handler should call ReportInputVolume and ReportOutputVolume whenever the input and output volume change, both when the user manually modifies the volume and when the volumes are adjusted in response to RequestedInputVolume and RequestedOutputVolume changing.

The maximum volume as used in this interface represent the unamplified hardware volume (0 dB). No software amplification should be used to boost the signal to a higher level when this Interface is in use

The input volume as requested by the Connection Manager. Initially and on any changes the client should change its input volume to match the requested volume. Report the input volume level as set by the client.

Report to the CM that the Content input volume has been changed by the client.

It is the client's responsibility to change the input volume used for the content. However, the client MUST call this whenever it changes input volume for the content.

The input volume as requested by the Connection Manager. Initially and on any changes the client should change its input volume to match the requested volume. Report the output volume level as set by the client.

Report to the CM that the content output volume has been changed by the client.

It is the client's responsibility to change the output volume used for the content. However, the client MUST call this whenever it changes output volume for the content.

A volume value either reported to or requested by the Connection Manager. This value should either be -1 for an unknown value or in the range of 0-255, with 0 being the minimal volume and 255 being the highest unamplified volume the input or output is capable of (known as 0 dB)

telepathy-qt-0.9.6.1/spec/Channel_Interface_Conference.xml0000644000175100017520000007502512530423576025066 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009 Collabora Limited Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for multi-user conference channels that can "continue from" one or more individual channels. This could be used to invite other contacts to an existing 1-1 text conversation, combine two phone calls into one conference call, and so on, with roughly the same API in each case.

This interface addresses freedesktop.org bug #24906 (GSM-compatible conference calls) and bug #24939 (upgrading calls and chats to multi-user). See those bugs for more rationale and use cases.

Existing channels are upgraded by requesting a new channel of the same ChannelType, listing the channels to be merged into the new conference in the InitialChannels property of the request. If InitialInviteeHandles and InitialInviteeIDs are Allowed_Properties in RequestableChannelClasses, ad-hoc conferences to a set of contacts may be created by requesting a channel, specifying InitialInviteeHandles and/or InitialInviteeIDs to be the contacts in question. A request may specify these alongside InitialChannels, to simultaneously upgrade a channel to a conference and invite others to join it.

Channels with this interface MAY also implement MergeableConference.DRAFT to support merging more 1-1 channels into an ongoing conference. Similarly, 1-1 channels MAY implement Splittable.DRAFT to support being broken out of a Conference channel.

The Group interface on Conference channels MAY use channel-specific handles for participants; clients SHOULD support both Conferences that have channel-specific handles, and those that do not.

In the GSM case, the Conference's Group interface MAY have channel-specific handles, to represent the fact that the same phone number may be in a conference twice (for instance, it could be the number of a corporate switchboard).

In the XMPP case, the Conference's Group interface SHOULD have channel-specific handles, to reflect the fact that the participants have MUC-specific identities, and the user might also be able to see their global identities, or not.

In most other cases, including MSN and link-local XMPP, the Conference's Group interface SHOULD NOT have channel-specific handles, since users' identities are always visible.

Connection managers implementing channels with this interface MUST NOT allow the object paths of channels that could be merged into a Conference to be re-used, unless the channel re-using the object path is equivalent to the channel that previously used it.

If you upgrade some channels into a conference, and then close the original channels, InitialChannels (which is immutable) will contain paths to channels which no longer exist. This implies that you should not re-use channel object paths, unless future incarnations of the path are equivalent.

For instance, on protocols where you can only have zero or one 1-1 text channels with Emily at one time, it would be OK to re-use the same object path for every 1-1 text channel with Emily; but on protocols where this is not true, it would be misleading.

Examples of usage

A pair of 1-1 GSM calls C1 and C2 can be merged into a single conference call by calling:

CreateChannel({ ...ChannelType: ...Call, ...InitialChannels: [C1, C2] })

which returns a new channel Cn implementing the conference interface. (As a quirk of GSM, both 1-1 will cease to function normally until they are Split from the conference, or the conference ends.)

An XMPP 1-1 conversation C3 (with chris@example.com, say) can be continued in a newly created multi-user chatroom by calling:

CreateChannel({ ...ChannelType: ...Text, ...InitialChannels: [C3] })

Or, to invite emily@example.net to join the newly-created MUC at the same time:

CreateChannel({ ...ChannelType: ...Text, ...InitialChannels: [C3], ...InitialInviteeIDs: ['emily@example.net'] })

To continue C3 in a particular multi-user chatroom (rather than the implementation inventing a unique name for the room), call:

EnsureChannel({ ...ChannelType: ...Text, ...TargetHandleType: ...Room, ...TargetID: 'telepathy@conf.example.com', ...InitialChannels: [C3] })

Note the use of EnsureChannel — if a channel for telepathy@conf.example.com is already open, this SHOULD be equivalent to inviting chris@example.com to the existing channel.

In the above cases, the text channel C3 SHOULD remain open and fully functional (until explicitly closed by a client); new incoming 1-1 messages from chris@example.com SHOULD appear in C3, and messages sent using C3 MUST be relayed only to chris@example.com.

If there is an open 1-1 text channel with a contact, in every other situation new messages will appear in that channel. Given that the old channel remains open — which is the least surprising behaviour, and eases us towards a beautiful world where channels never close themselves — it stands to reason that it should be where new messages from Chris should appear. On MSN, creating a conference from C3 should migrate the underlying switchboard from C3 to the new channel; this is an implementation detail, and should not affect the representation on D-Bus. With a suitable change of terminology, Skype has the same behaviour.

If the current handler of that channel doesn't want this to happen (maybe it transformed the existing tab into the group chat window, and so there'd be no UI element still around to show new messages), then it should just Close the old 1-1 channel; it'll respawn if necessary.

Either of the XMPP cases could work for Call channels, to upgrade from 1-1 Jingle to multi-user Jingle. Any of the XMPP cases could in principle work for link-local XMPP (XEP-0174).

XMPP and MSN do not natively have a concept of merging two or more channels C1, C2... into one channel, Cn. However, the GSM-style merging API can be supported on XMPP and MSN, as an API short-cut for upgrading C1 into a conference Cn (which invites the TargetHandle of C1 into Cn), then immediately inviting the TargetHandle of C2, the TargetHandle of C3, etc. into Cn as well.

Sample RequestableChannelClasses

A GSM connection might advertise the following channel class for conference calls:

( Fixed = {
    ...ChannelType: ...StreamedMedia
  },
  Allowed = [ InitialChannels, InitialAudio ]
)

This indicates support for starting audio-only conference calls by merging two or more existing channels (since InitialInviteeHandles and InitialInviteeIDs are not allowed).

An XMPP connection might advertise the following classes for ad-hoc multi-user text chats:

( Fixed = {
    ...ChannelType: ...Text
  },
  Allowed = [ InitialChannels, InitialInviteeHandles, InitialInviteeIDs, InvitationMessage ]
),
( Fixed = {
    ...ChannelType: ...Text,
    ...TargetHandleType: Room
  },
  Allowed = [ TargetHandle, TargetID,
              InitialChannels, InitialInviteeHandles, InitialInviteeIDs, InvitationMessage ]
)

The first class indicates support for starting ad-hoc (nameless) chat rooms, upgraded from existing 1-1 channels and/or inviting new contacts, along with a message to be sent along with the invitations. The second indicates support for upgrading to a particular named chat room.

The individual Channels that are continued by this conference, which have the same ChannelType as this one, but with TargetHandleType = CONTACT.

This property MUST NOT be requestable; instead, the InitialChannels property may be specified when requesting a channel.

This is consistent with requesting InitialInviteeHandles and InitialInviteeIDs, rather than requesting Group.Members and some hypothetical ID version of that property.

Change notification is via the ChannelMerged and ChannelRemoved signals.

Emitted when a new channel is added to the value of Channels.

The channel that was added to Channels. A new channel-specific handle for the TargetHandle of Channel, as will appear in OriginalChannels, or 0 if a global handle is used for Channel's TargetHandle on the Group interface of this channel. Channel's immutable properties.

Emitted when a channel is removed from the value of Channels, either because it closed or because it was split using the Splittable.DRAFT.Split method.

If a channel is removed because it was closed, Closed should be emitted before this signal.

The channel that was removed from Channels. Additional information about the removal, which may include the same well-known keys as the Details argument of MembersChangedDetailed, with the same semantics.

The initial value of Channels.

This property SHOULD be requestable. Omitting it from a request is equivalent to providing it with an empty list as value. Requests where its value has at least two channel paths SHOULD be expected to succeed on any implementation of this interface. If InitialInviteeHandles and InitialInviteeIDs are Allowed_Properties in RequestableChannelClasses, then requests with zero or one channel paths SHOULD also succeed; otherwise, clients SHOULD NOT make requests with zero or one paths for this property.

In GSM, a pair of calls can be merged into a conference, but you can't start a conference call from zero or one existing calls. In XMPP and MSN, you can create a new chatroom, or upgrade one 1-1 channel into a chatroom; however, on these protocols, it is also possible to fake GSM-style merging by upgrading the first channel, then inviting the targets of all the other channels into it.

If possible, the Channels' states SHOULD NOT be altered by merging them into a conference. However, depending on the protocol, the Channels MAY be placed in a "frozen" state by placing them in this property's value or by calling MergeableConference.DRAFT.Merge on them.

In Jingle, nothing special will happen to merged calls. UIs MAY automatically place calls on hold before merging them, if that is the desired behaviour; this SHOULD always work. Not doing an implicit hold/unhold seems to preserve least-astonishment.

In GSM, the calls that are merged go into a state similar to Hold, but they cannot be unheld, only split from the conference call using Channel.Interface.Splittable.DRAFT.Split.

Depending on the protocol, it might be signalled to remote users that this channel is a continuation of all the requested channels, or that it is only a continuation of the first channel in the list.

In MSN, the conference steals the underlying switchboard (protocol construct) from one of its component channels, so the conference appears to remote users to be a continuation of that channel and no other. The connection manager has to make some arbitrary choice, so we arbitrarily mandate that it SHOULD choose the first channel in the list as the one to continue.

A list of additional contacts invited to this conference when it was created.

If it is possible to invite new contacts when creating a conference (as opposed to merging several channels into one new conference channel), this property SHOULD be requestable, and appear in the allowed properties in RequestableChannelClasses. Otherwise, this property SHOULD NOT be requestable, and its value SHOULD always be the empty list.

On GSM you have to place a 1-1 call before you can merge it into a conference; on the other hand, you can invite new contacts to XMPP Muji calls and XMPP/MSN/Skype ad-hoc chat rooms without starting a 1-1 channel with them first.

If included in a request, the given contacts are automatically invited into the new channel, as if they had been added with Group.AddMembers(InitialInviteeHandles, InvitationMessage) immediately after the channel was created.

This is a simple convenience API for the common case that a UI upgrades a 1-1 chat to a multi-user chat solely in order to invite someone else to participate.

If the local user was not the initiator of this channel, the Group.SelfHandle SHOULD appear in the value of this property, together with any other contacts invited at the same time (if that information is known).

InitialInviteeHandles, InitialInviteeIDs and InitialChannels MAY be combined in a single request.

For example, if you have a 1-1 channel C1 with Rob, and you want to invite Sjoerd to join the discussion, you can do so by requesting a channel with InitialChannels=[C1] and InitialInviteeHandles=[sjoerd], or InitialChannels=[C1] and InitialInviteeIDs=["sjoerd@example.com"].

If a request includes some combination of InitialInviteeHandles, InitialInviteeIDs and InitialChannels, then the value of InitialInviteeHandles on the resulting channel SHOULD be the union of the handles from InitialInviteeHandles, the handles corresponding to the InitialInviteeIDs, and the target handles of the InitialChannels, with any duplicate handles removed. Because this property is immutable, its value SHOULD be computed before the channel is announced via the NewChannels signal.

This simplifies identification of new channels in clients - they only have to look at one of the properties, not both. For example, after either of the requests mentioned above, the NewChannels signal would announce the channel with InitialChannels=[C1], InitialInviteeHandles=[rob, sjoerd], and InitialInviteeIDs=["rob@example.net", "sjoerd.example.com"].

A list of additional contacts invited to this conference when it was created.

This property SHOULD be requestable if and only if InitialInviteeHandles is requestable. Its semantics are the same, except that it takes a list of the string representations of contact handles; invitations are sent to any contact present in either or both of these properties.

When a channel is created, the values of InitialInviteeHandles and InitialInviteeIDs MUST correspond to each other. In particular, this means that the value of InitialInviteeIDs will include the TargetID of each channel in InitialChannels, and the ID corresponding to each handle in InitialInviteeHandles.

The message that was sent to the InitialInviteeHandles when they were invited.

This property SHOULD be requestable, and appear in the allowed properties in RequestableChannelClasses, in protocols where invitations can have an accompanying text message.

This allows invitations with a message to be sent when using InitialInviteeHandles or InitialInviteeIDs.

If the local user was not the initiator of this channel, the message with which they were invited (if any) SHOULD appear in the value of this property.

On GSM conference calls, it is possible to have the same phone number in a conference twice; for instance, it could be the number of a corporate switchboard. This is represented using channel-specific handles; whether or not a channel uses channel-specific handles is reported in Group.GroupFlags. The Group.HandleOwners property specifies the mapping from opaque channel-specific handles to actual numbers; this property specifies the original 1-1 channel corresponding to each channel-specific handle in the conference.

In protocols where this situation cannot arise, such as XMPP, this property MAY remain empty.

For example, consider this situation:

  1. Place a call (with path /call/to/simon) to the contact +441234567890 (which is assigned the handle h, say), and ask to be put through to Simon McVittie;
  2. Put that call on hold;
  3. Place another call (with path /call/to/jonny) to +441234567890, and ask to be put through to Jonny Lamb;
  4. Request a new channel with InitialChannels: ['/call/to/simon', '/call/to/jonny'].

The new channel will have the following properties, for some handles s and j:

{
...Group.GroupFlags: Channel_Specific_Handles | (other flags),
...Group.Members: [self_handle, s, j],
...Group.HandleOwners: { s: h, j: h },
...InitialChannels: ['/call/to/simon', '/call/to/jonny'],
...Channels: ['/call/to/simon', '/call/to/jonny'],
...OriginalChannels: { s: '/call/to/simon', j: '/call/to/jonny' },
# ...standard properties like ChannelType: Group elided...
}

Change notification is via the ChannelMerged and ChannelRemoved signals: if Channel_Specific_Handle in the former is non-zero, this property SHOULD be updated to map that handle to the merged channel's path.

A channel-specific handle for a participant in this conference. The object path of Channels representing the original 1-1 channel with Channel_Specific_Handle. A mapping from members of a conference to the original 1-1 channel with that contact, if any. See OriginalChannels for details.
telepathy-qt-0.9.6.1/spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml0000644000175100017520000000525212530423576031765 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API)

This codec offer interface provides a method of signalling support for RTCP feedback, documented by Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF) (RFC 4585).

The codec identifiers used in the description of the Feedback Messages sent in the Accept's should match those used for the RemoteCodecs in the same Accept call.

For more details on what RTCP Feedback can do and how to use it, one should refer to RFC 4585.

A map of remote feedback codec properties that are supported. True if the remote contact supports Audio-Visual Profile Feedback (AVPF), otherwise False.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Addressing.xml0000644000175100017520000002627112530423576025630 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2010-2012 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This interface deals with the multiple address types that can refer to the same contact, such as vCard fields and URIs.

It can be used to retrieve contacts with a specific addresses through GetContactsByVCardField and GetContactsByURI, as well as defining the various addressing methods for a given contact through this interface's contact attributes.

The vCard field of the addresses we are requesting. The field name SHOULD be in lower case. Supported fields can be found in AddressableVCardFields.

The url vCard field MUST NOT appear here; see GetContactsByURI instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.

The addresses to get contact handles for. The address types should match the given vCard field.

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Attributes from this interface and from org.freedesktop.Telepathy.Connection are always returned, and need not be requested explicitly.

The behavior of this parameter is similar to the same parameter in Contacts.GetContactAttributes.

A mapping from requested vCard addresses to the corresponding contact handles.

Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.

A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

Request contacts and retrieve their attributes using a given field in their vCards.

The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the Connection.ReleaseHandles method.

The URI addresses to get contact handles for. Supported schemes can be found in AddressableURISchemes.

A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.

Attributes from this interface and from org.freedesktop.Telepathy.Connection are always returned, and need not be requested explicitly.

The behavior of this parameter is similar to the same parameter in Contacts.GetContactAttributes.

A mapping of requested URIs to the corresponding contact handles.

Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.

A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.

Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.

Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (org.freedesktop.Telepathy.Connection/contact-id).

Request contacts and retrieve their attributes using URI addresses.

The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the Connection.ReleaseHandles method.

A mapping of vCard fields and addresses equivalent to a particular contact's protocol identifier. For instance, on XMPP this would contain x-jabber for all contacts, and x-facebook-id for contacts on Facebook's server.

A vCard field, such as x-jabber. The value of that vCard field for the contact.
The various vCard addresses that identify this contact. The various URI addresses that identify this contact. A map from URIs/vCard addresses to the corresponding handle. The URI or vCard address that has been requested by GetContactsByVCardField or GetContactsByURI. A nonzero handle.
telepathy-qt-0.9.6.1/spec/Account_Interface_Storage.xml0000644000175100017520000001512712530423576024444 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface extends the core Account interface to specify details regarding the storage of this account.

Single-sign-on systems do not generally have directly user-editable properties for Accounts, and require the user to visit a specific UI to alter their account properties. User interfaces should know not to expose these account properties as user-editable, and instead redirect the user to the appropriate interface.

The name of the account storage implementation, which SHOULD start with a reversed domain name in the same way as D-Bus interface names. When this is the empty string the account is internally stored.

This property cannot change once an Account has been created.

Unique identification of the account within the storage backend. The contents of the variant are defined by the StorageProvider.

This property cannot change once an Account has been created.

Different storage systems will have their own way of uniquely identifying an account, typically an integer or a string. Given that all users of this property should have direct knowledge of the backend they should know what types to expect and how to handle it.

Map containing information specific to the storage backend. The keys and the types of their values are defined by the StorageProvider, and are not interpreted by the AccountManager implementation.

As the values in this map may change at any time (due to an external application manipulating the storage provider directly), this property should not be cached; it should instead be retrieved each time it is needed.

This can be used to provide additional hints to user interfaces aware of a specific storage provider, without requiring those user interfaces to use the StorageIdentifier to query the storage provider directly.

Bitfield which defines what restrictions this Storage method has.

This property cannot change once an Account has been created.

Flags indicating restrictions imposed on an Account by its storage method. The account's Parameters property can't be changed by calling UpdateParameters. The account can't be enabled/disabled by setting the Enabled property. The account's presence can't be changed by setting the RequestedPresence and AutomaticPresence properties. The account's Service property cannot be changed.
telepathy-qt-0.9.6.1/spec/Call_Content_Interface_Video_Control.xml0000644000175100017520000001175512530423576026562 0ustar00kaffeinekaffeine00000000000000 Copyright © 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface that allows the connection manager to control the video stream.

This interface is generally not needed. In cases where the connection manager handles the network communication and the media is transferred from the client to the connection manager via shared memory, it can sometimes be beneficial for the connection manager to be able to control certain aspects of the video stream.

Request that the video encoder produce a new key frame as soon as possible. With of the video stream. Height of the video stream. The resolution at which the streaming engine should be sending.

Change notification is via the VideoResolutionChanged signal.

The desired video resolution has changed. The bitrate the streaming engine should be sending at.

Change notification is via the BitrateChanged signal.

The desired bitrate has changed The framerate the streaming engine should be sending at.

Change notification is via the FramerateChanged signal.

The desired framerate has changed The Maximum Transmission Unit

Change notification is via the MTUChanged signal.

The Maximum Transmission Unit has changed Only send key frames when manually requested
telepathy-qt-0.9.6.1/spec/Connection_Interface_Cellular.xml0000644000175100017520000001706512530423576025311 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2010 Nokia Corporation Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This interface is for various cellular things (GSM and/or CDMA) that aren't really applicable to other protocols.

Define how long should the service centre try message delivery before giving up, failing delivery and deleting the message. A value of 0 means to use the service centre's default period.

The value specified is in seconds. Note that various protocols or implementations may round the value up (eg. to a minute or hour precision). The maximum validity period may vary depending on protocol or provider.

Previously, as an undocumented feature, setting MessageServiceCentre to the empty string caused the SIM's default SMSC to be used.

If True, SMSes will be sent via the service centre specified by MessageServiceCentre. If False, the SIM's default SMSC will be used, ignoring the value of MessageServiceCentre.

It could be desirable for a configuration interface to remember the user's previous choice of custom SMSC, even if it's not in use. This boolean allows that choice to be saved as an account parameter by Mission Control, rather than the UI needing to save it elsewhere to be restored if the user wants to reactivate it.

This property's value is now ignored unless OverrideMessageServiceCentre is True.

Address for the messaging service centre. Typically (as is the case for GSM's SMSC), it's the ISDN / telephony address (ie. a phone number). If OverrideMessageServiceCentre is False, this property's value should be ignored by the CM in favour of the SIM's default SMSC.

The International Mobile Subscriber Identifier, if it exists. This would originate from a SIM card. If the IMSI is unknown, this will contain an empty string ("").

Emitted when the IMSI for the connection changes. This sort of thing is rare, but could happen on cellular phones that allow hot-swapping of SIM cards. In the case of SIM swapping, this signal would be emitted twice; the first time while the SIM is being ejected (with an empty string), and the second time after a new SIM has been inserted (assuming that the IMSI can be determined from the new SIM). The new IMSI value. This may be an empty string in the case where the IMSI is being reset or removed.

Determines how to encode SMSes containing characters that do not fit into a non-Unicode character set. If False (which SHOULD be the default), messages will be encoded as UCS-2 and sent with no loss of fidelity (at the potential financial cost of using twice as many SMSes); if True, the message will be recoded in an implementationâ€specific way to fit into a GSM reduced character set.

Hint for the connection manager for the GSM character set that should be used to send SMSes. The connection manager SHOULD follow this hint unless it has other ways to determine a better encoding. If the value is "gsm" (which SHOULD be the default), SMSes will be encoded in the normal 7-bit GSM character set, eventually falling back to UCS-2; see the MessageReducedCharacterSet property for details. Other valid character sets are specified in the GSM standard and are, for instance, "turkey", "spain" or "portugal". If the SMS cannot be encoded using the requested character set the behaviour is implementation-specific, but it is RECOMMENDED that the connection manager should behave as if this property was set to "gsm".

telepathy-qt-0.9.6.1/spec/errors.xml0000644000175100017520000006042012530423576020714 0ustar00kaffeinekaffeine00000000000000

The D-Bus errors used in Telepathy all start with org.freedesktop.Telepathy.Error.. They are used in D-Bus messages of type ERROR, and also as plain strings annotated with the DBus_Error_Name type.

In principle, any method can raise any error (this is a general fact of IPC). For instance, generic D-Bus errors starting with org.freedesktop.DBus.Error. will occur in some situations.

Telepathy methods can also raise implementation-specific errors to indicate specialized failure conditions. For better interoperability, if a suitable Telepathy error exists, it should be preferred.

The namespace org.freedesktop.Telepathy.Qt4.Error. is reserved for use by the D-Bus client implementation in telepathy-qt4, which uses it to represent certain error situations that did not involve a D-Bus ERROR message. These errors are defined and documented as part of telepathy-qt4's C++ API, and should not be used on D-Bus.

Raised when there is an error reading from or writing to the network. Raised when the requested method, channel, etc is not available on this connection. Raised when one of the provided arguments is invalid. Raised when the requested functionality is temporarily unavailable. The user is not permitted to perform the requested operation. The connection is not currently connected and cannot be used. This error may also be raised when operations are performed on a Connection for which StatusChanged has signalled status Disconnected for reason None. The second usage corresponds to None in the Connection_Status_Reason enum; if a better reason is available, the corresponding error should be used instead. The handle specified is unknown on this channel or connection. You are banned from the channel. The channel is full. The requested channel is invite-only.

The requested channel or other resource already exists, and another user interface in this session is responsible for it.

User interfaces SHOULD handle this error unobtrusively, since it indicates that some other user interface is already processing the channel.

Raised by an ongoing request if it is cancelled by user request before it has completed, or when operations are performed on an object which the user has asked to close (for instance, a Connection where the user has called Disconnect, or a Channel where the user has called Close). The second form can be used to correspond to the Requested member in the Connection_Status_Reason enum, or to to represent the situation where disconnecting a Connection, closing a Channel, etc. has been requested by the user but this request has not yet been acted on, for instance because the service will only act on the request when it has finished processing an event queue. Raised when authentication with a service was unsuccessful. This corresponds to Authentication_Failed in the Connection_Status_Reason enum. Raised if a user request insisted that encryption should be used, but encryption was not actually available. This corresponds to part of Encryption_Error in the Connection_Status_Reason enum. It's been separated into a distinct error here because the two concepts that were part of EncryptionError seem to be things that could reasonably appear differently in the UI. Raised if encryption appears to be available, but could not actually be used (for instance if SSL/TLS negotiation fails). This corresponds to part of Encryption_Error in the Connection_Status_Reason enum. Raised if the server did not provide a SSL/TLS certificate. This error MUST NOT be used to represent the absence of a client certificate provided by the Telepathy connection manager. This corresponds to Cert_Not_Provided in the Connection_Status_Reason enum. That error explicitly applied only to server SSL certificates, so this one is similarly limited; having the CM present a client certificate is a possible future feature, but it should have its own error handling. Raised if the server provided a SSL/TLS certificate signed by an untrusted certifying authority. This error SHOULD NOT be used to represent a self-signed certificate: see the Self Signed error for that. This corresponds to Cert_Untrusted in the Connection_Status_Reason enum and to Untrusted in the TLS_Certificate_Reject_Reason enum, with a clarification to avoid ambiguity. Raised if the server provided an expired SSL/TLS certificate. This corresponds to Cert_Expired in the Connection_Status_Reason enum and to Expired in the TLS_Certificate_Reject_Reason enum. Raised if the server provided an SSL/TLS certificate that will become valid at some point in the future. This corresponds to Cert_Not_Activated in the Connection_Status_Reason enum and to Not_Activated in the TLS_Certificate_Reject_Reason enum. Raised if the server provided an SSL/TLS certificate that did not have the expected fingerprint. This corresponds to Cert_Fingerprint_Mismatch in the Connection_Status_Reason enum and to Fingerprint_Mismatch in the TLS_Certificate_Reject_Reason enum.

Raised if the server provided an SSL/TLS certificate that did not match its hostname.

You MAY be able to get more details about the expected and certified hostnames by looking up the 'expected-hostname' and 'certificate-hostname' keys in the details map that came together with this error.

This corresponds to Cert_Hostname_Mismatch in the Connection_Status_Reason enum and to Hostname_Mismatch in the TLS_Certificate_Reject_Reason enum.
Raised if the server provided an SSL/TLS certificate that is self-signed and untrusted. This corresponds to Cert_Self_Signed in the Connection_Status_Reason enum and to Self_Signed in the TLS_Certificate_Reject_Reason enum. Raised if the server provided an SSL/TLS certificate that has been revoked. This corresponds to Cert_Revoked in the Connection_Status_Reason enum and to Revoked in the TLS_Certificate_Reject_Reason enum. Raised if the server provided an SSL/TLS certificate that uses an insecure cipher algorithm or is cryptographically weak. This corresponds to Cert_Insecure in the Connection_Status_Reason enum and to Insecure in the TLS_Certificate_Reject_Reason enum. Raised if the server provided an SSL/TLS certificate that is unacceptable in some way that does not have a more specific error. This corresponds to Cert_Other_Error in the Connection_Status_Reason enum and to Unknown in the TLS_Certificate_Reject_Reason enum. Raised if the length in bytes of the server certificate, or the depth of the server certificate chain exceeds the limits imposed by the crypto library. This corresponds to Cert_Limit_Exceeded in the Connection_Status_Reason enum and to Limit_Exceeded in the TLS_Certificate_Reject_Reason enum. Raised when requested functionality is unavailable due to contact not having required capabilities. Raised when requested functionality is unavailable because a contact is offline. This corresponds to Offline in the Channel_Group_Change_Reason enum. Used to represent a user being ejected from a channel by another user, for instance being kicked from a chatroom. This corresponds to Kicked in the Channel_Group_Change_Reason enum. Used to represent a user being removed from a channel because of a "busy" indication. This error SHOULD NOT be used to represent a server or other infrastructure being too busy to process a request - for that, see ServerBusy. This corresponds to Busy in the Channel_Group_Change_Reason enum. Used to represent a user being removed from a channel because they did not respond, e.g. to a StreamedMedia call. This corresponds to No_Answer in the Channel_Group_Change_Reason enum. Raised when the requested user does not, in fact, exist. This corresponds to Invalid_Contact in the Channel_Group_Change_Reason enum, but can also be used to represent other things not existing (like chatrooms, perhaps). Raised when a channel is terminated for an unspecified reason. In particular, this error SHOULD be used whenever normal termination of a 1-1 StreamedMedia call by the remote user is represented as a D-Bus error name. This corresponds to None in the Channel_Group_Change_Reason enum. Raised when the local streaming implementation has no codecs in common with the remote side. This corresponds to Media_Error. The media stream type requested is not supported by either the local or remote side. This corresponds to Media_Error. Raised when the call's streaming implementation has some kind of internal error. This corresponds to Internal_Error. Raised when a connection is refused. Raised when a connection can't be established. Raised when a connection is broken. Raised when the user attempts to connect to an account but they are already connected (perhaps from another client or computer), and the protocol or account settings do not allow this. XMPP can have this behaviour if the user chooses the same resource in both clients (it is server-dependent whether the result is AlreadyConnected on the new connection, ConnectionReplaced on the old connection, or two successful connections). Raised by an existing connection to an account if it is replaced by a new connection (perhaps from another client or computer). In MSNP, when connecting twice with the same Passport, the new connection "wins" and the old one is automatically disconnected. XMPP can also have this behaviour if the user chooses the same resource in two clients (it is server-dependent whether the result is AlreadyConnected on the new connection, ConnectionReplaced on the old connection, or two successful connections). Raised during in-band registration if the server indicates that the requested account already exists. Raised if a server or some other piece of infrastructure cannot process the request, e.g. due to resource limitations. Clients MAY try again later. This is not the same error as Busy, which indicates that a user is busy. Raised if a request cannot be satisfied because a process local to the user has insufficient resources. Clients MAY try again later. For instance, the ChannelDispatcher might raise this error for some or all channel requests if it has detected that there is not enough free memory. Raised if a request cannot be satisfied without violating an earlier request for anonymity, and the earlier request specified that raising an error is preferable to disclosing the user's identity (for instance via Connection.Interface.Anonymity.AnonymityMandatory or Channel.Interface.Anonymity.AnonymityMandatory). Raised when the requested functionality is not yet available, but is likely to become available after some time has passed. Raised when an incoming or outgoing Call1 is rejected by the the receiver. Raised when a call was terminated as a result of the local user picking up the call on a different resource. Raised when a server or other piece of infrastructure indicates an internal error, or when a message that makes no sense is received from a server or other piece of infrastructure. For instance, this is appropriate for XMPP's internal-server-error, and is also appropriate if you receive sufficiently inconsistent information from a server that you cannot continue. Raised if a server rejects protocol messages from a connection manager claiming that they do not make sense, two local processes fail to understand each other, or an apparently impossible situation is reached. For instance, this would be an appropriate mapping for XMPP's errors bad-format, invalid-xml, etc., which can't happen unless the local (or remote) XMPP implementation is faulty. This is also analogous to Invalid_CM_Behavior, TP_DBUS_ERROR_INCONSISTENT in telepathy-glib, and TELEPATHY_QT4_ERROR_INCONSISTENT in telepathy-qt4.

Raised as a ConnectionError when a Connection cannot be established because either the Connection Manager or its support library (e.g. wocky, papyon, sofiasip) requires upgrading to support a newer protocol version.

This error corresponds to the Connection_Status_Reason of Network_Error.

Some protocols transmit a protocol or library version number to the server, which will disconnect them if the version isn't appropriate. This way we can report the error to the user, and if appropriate, the user's client can check for updates.
Raised if a client attempts to dial a number that is recognized as an emergency number (e.g. '911' in the USA), but the Connection Manager or provider does not support dialling emergency numbers. Many VOIP providers have the ability to dial traditional (PSTN) telephone numbers, but do not provide the ability to dial emergency numbers (for instance, Google Voice). This error provides additional information about why such a call was unsuccessful.

Raised if the user has insufficient Balance to place a call or send a message.

The key 'balance-required' MAY be included in CallStateDetails or a delivery report's Message_Part (with the same units and scale as AccountBalance) to indicate how much credit is required to make this call or send this message.

Raised if the CaptchaAuthentication1 Handler either has no UI to present captchas, or it does, but wasn't able to answer any of the captchas given.

Copyright © 2005-2010 Collabora Limited Copyright © 2005-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

telepathy-qt-0.9.6.1/spec/Connection.xml0000644000175100017520000016446212530423576021512 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005-2009 Collabora Limited Copyright (C) 2005-2009 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A struct representing a channel, as returned by ListChannels on the Connection interface. The object path of the channel, which is on the same bus name as the connection The channel's type The type of the handle that the channel communicates with, or Handle_Type_None if there is no associated handle The handle that the channel communicates with, or 0 if there is no associated handle

Request that the connection be established. This will be done asynchronously and errors will be returned by emitting StatusChanged signals.

Calling this method on a Connection that is already connecting or connected is allowed, and has no effect.

Request that the connection be closed. This closes the connection if it's not already in DISCONNECTED state, and destroys the connection object.

The set of optional interfaces supported by this connection. Before the connection status changes to CONNECTED, this property may change at any time, but it is guaranteed that interfaces will only be added, not removed. After the connection status changes to CONNECTED, this property cannot change further.

There is no explicit change notification; reasonable behaviour for a client would be to retrieve the interfaces list once initially, and once more when it becomes CONNECTED.

In some connection managers, certain capabilities of a connection are known to be implemented for all connections (e.g. support for SimplePresence), and some interfaces (like SimplePresence) can even be used before connecting. Other capabilities may or may not exist, depending on server functionality; by the time the connection goes CONNECTED, the connection manager is expected to have evaluated the server's functionality and enabled any extra interfaces for the remainder of the Connection's lifetime.

Clients SHOULD fall back to calling GetInterfaces if this property is not supported.
The value of the Interfaces property

Returns the set of optional interfaces supported by this connection. See Interfaces for more details.

Before version 0.17.8 calling GetInterfaces while on a connection that is not yet CONNECTED wasn't allowed. If a CM returns this error, its list of interfaces should be regarded as empty until it becomes CONNECTED.
A string identifier for the protocol Get the protocol this connection is using. Emitted whenever the SelfHandle property changes. If the connection is not yet in the CONNECTED state, this signal is not guaranteed to be emitted. Clients MAY assume that if the SelfHandle property exists, this signal will be emitted when necessary. Use SelfContactChanged to get the new SelfID at the same time The new value of the SelfHandle property. Emitted whenever the SelfHandle and SelfID property changes. If the connection is not yet in the CONNECTED state, this signal is not guaranteed to be emitted. Clients MAY assume that if the SelfHandle and SelfID property exists, this signal will be emitted when necessary. The new value of the SelfHandle property. The new value of the SelfID property. The handle which represents the user on this connection, which will remain valid for the lifetime of this connection, or until a change in the user's identifier is signalled by the SelfContactChanged signal. If the connection is not yet in the CONNECTED state, the value of this property MAY be zero. For compatibility with older versions, clients should fall back to calling the GetSelfHandle method. The identifier which represents the user on this connection, which will remain valid for the lifetime of this connection, or until a change in the user's identifier is signalled by the SelfContactChanged signal. If the connection is not yet in the CONNECTED state, the value of this property MAY be empty string. The value of the SelfHandle property Returns the value of the SelfHandle property. Change notification is via the SelfHandleChanged signal. Use GetAll to get the SelfHandle property (and all other Connection properties) instead.

The current status of the connection. Change notification is via the StatusChanged signal.

If retrieval of property succeeds and yields the value Disconnected, this indicates that the connection has not yet been established. If connection has been attempted and failed, the Connection object SHOULD be removed from the bus entirely, meaning that retrieval of this property SHOULD fail.

Clients SHOULD fall back to calling GetStatus if this property is not supported.
The value of the Status property Get the current status as defined in the StatusChanged signal. If HasImmortalHandles is true, this method no longer does anything. The type of handle to be held A array of integer handles to hold

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, this method does nothing and returns successfully, unless the given handle type or any of the given handles is invalid.

In older connection managers, this method notifies the connection manger that your client is holding a copy of handles which may not be in use in any existing channel or list, and were not obtained by using the RequestHandles method. For example, a handle observed in an emitted signal, or displayed somewhere in the UI that is not associated with a channel. The connection manager must not deallocate a handle where any clients have used this method to indicate it is in use until the ReleaseHandles method is called, or the clients disappear from the bus.

Note that HoldHandles is idempotent - calling it multiple times is equivalent to calling it once. If a handle is "referenced" by several components which share a D-Bus unique name, the client should perform reference counting internally, and only call ReleaseHandles when none of the cooperating components need the handle any longer.

The handle type is invalid One of the given handles is not valid
The type of handle to be inspected An array of integer handles of this type An array of identifiers corresponding to the given handles, in the same order. Return a string representation for a number of handles of a given type. The handle type is invalid One of the given handles is not valid Use the Requests.Channels property instead. An array of structs representing channels. List all the channels which currently exist on this connection. Connection managers MUST still emit this signal, but clients SHOULD listen for the Requests.NewChannels signal instead. A D-Bus object path for the channel object on this service A D-Bus interface name representing the channel type An integer representing the type of handle this channel communicates with, or Handle_Type_None if no handle is specified A handle indicating the specific contact, room or list this channel communicates with, or zero if no handle is specified

If true, the channel was requested by a client that intends to present it to the user itself (i.e. it passed suppress_handler=TRUE to the RequestChannel method), so no other handler should be launched. Clients MAY assume that channels where this is true were created by a user request.

If false, either the channel was created due to incoming information from the service, or the channel was requested by a local client that does not intend to handle the channel itself (this usage is deprecated).

Clients MUST NOT assume that only incoming channels will have this flag set to false.

Emitted when a new Channel object is created, either through user request or incoming information from the service.
If HasImmortalHandles is true, this method no longer does anything. An integer handle type (as defined in RequestHandle) An array of integer handles being held by the client

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, this method does nothing and returns successfully, unless the given handle type or any of the given handles is invalid.

In older connection managers, this method explicitly notifies the connection manager that your client is no longer holding any references to the given handles, and that they may be deallocated if they are not held by any other clients or referenced by any existing channels. See HoldHandles for notes.

The handle type is invalid One of the given handles is not valid
Use Requests.CreateChannel or Requests.EnsureChannel instead. Connection managers MAY implement RequestChannel by raising NotImplemented, or implement fewer types of channel via this API. A D-Bus interface name representing base channel type An integer representing the handle type, or Handle_Type_None if no handle is specified A nonzero integer handle representing a contact, room, list etc. according to handle_type, or zero if the handle_type is Handle_Type_None

Clients SHOULD always set this to true.

The historical meaning was that clients that did not intend to take responsibility for displaying the channel to the user could set this to FALSE, in which case the channel dispatcher would launch an appropriate channel handler.

However, clients whose functionality relies on having a working channel dispatcher should obtain that functionality by calling methods on the channel dispatcher, so that they will get an appropriate error if the channel dispatcher is missing or not working.

The channel dispatcher itself should set this to true too, so that it will ignore the NewChannel signal that results from the creation of the channel. It can then dispatch the channel returned from this method to an appropriate handler.

So, there is no sensible use-case for setting this to false, and setting it to false can result in unhandled channels (in the case where clients assume that a channel dispatcher is present, but it isn't).

The D-Bus object path for the channel created or retrieved

Request a channel satisfying the specified type and communicating with the contact, room, list etc. indicated by the given handle_type and handle. The handle_type and handle may both be zero to request the creation of a new, empty channel, which may or may not be possible, depending on the protocol and channel type.

On success, the returned channel will always be of the requested type (i.e. implement the requested channel-type interface).

If a new, empty channel is requested, on success the returned channel will always be an "anonymous" channel for which the type and handle are both zero.

If a channel to a contact, room etc. is requested, on success, the returned channel may either be a new or existing channel to the requested entity (i.e. its TargetHandleType and TargetHandle properties are the requested handle type and handle), or a newly created "anonymous" channel associated with the requested handle in some implementation-specific way.

For example, for a contact handle, the returned channel might be "anonymous", but implement the groups interface and have the requested contact already present among the members.

If the request cannot be satisfied, an error is raised and no channel is created.

Unknown channel type The given handle does not exist or cannot be created The requested channel type cannot be created with the given handle The requested channel cannot be created because contact doesn't have the required capabilities.
A "null" handle type used to indicate the absence of a handle. When a handle type and a handle appear as a pair, if the handle type is zero, the handle must also be zero. A contact A chat room Replaced by Connection.Interface.ContactList A server-generated contact list (see Channel.Interface.Group) Replaced by Connection.Interface.ContactList A user-defined contact list (see Channel.Interface.Group) An unsigned 32-bit integer representing a handle An unsigned 32-bit integer representing a handle of type Handle_Type_Contact An unsigned 32-bit integer representing a handle of type Handle_Type_Room Replaced by Connection.Interface.ContactList An unsigned 32-bit integer representing a handle of type Handle_Type_List Replaced by Connection.Interface.ContactList An unsigned 32-bit integer representing a handle of type Handle_Type_Group If HasImmortalHandles is true, this method no longer has its reference-counting effect. The type of handle required An array of identifiers of entities to request handles for An array of integer handle numbers in the same order as the given identifiers.

Request several handles from the connection manager which represent a number of contacts, rooms or server-stored lists on the service.

If HasImmortalHandles is true, which SHOULD always be the case in this version of telepathy-spec, the handles remain valid until the connection disconnects.

The implementation of this method in older connection managers must record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the ReleaseHandles method. Where the identifier refers to an entity that already has a handle in this connection manager, this handle should be returned instead. The handle number 0 must not be returned by the connection manager.

The given identifier does not identify a valid entity of the given type. For instance, an XMPP connection would raise this error for identifiers with type Handle_Type_Room that do not contain exactly one '@' character, that contain spaces, and so on. The given handle type is not valid, or is not implemented on this connection. For instance, a connection to a protocol that doesn't have chat rooms would raise this error for room handles, and all CMs would raise this error for Handle_Type_None.
The connection is fully connected and all methods are available. Connect has been called but the connection has not yet been established. Some methods may fail until the connection has been established. If this is retrieved from GetStatus or Status, it indicates that connection has not yet been attempted. If seen in a StatusChanged signal, it indicates that the connection has failed; the Connection object SHOULD be removed from D-Bus immediately, and all subsequent method calls SHOULD fail.

A reason why the status of the connection changed. Apart from Requested, the values of this enumeration only make sense as reasons why the status changed to Disconnected.

There is no reason set for this state change. Unknown status reasons SHOULD be treated like this reason.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Disconnected.

The change is in response to a user request. Changes to the Connecting or Connected status SHOULD always indicate this reason; changes to the Disconnected status SHOULD indicate this reason if and only if the disconnection was requested by the user.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cancelled.

There was an error sending or receiving on the network socket.

When the status changes from Connecting to Disconnected for this reason, the equivalent D-Bus error is either org.freedesktop.Telepathy.Error.NetworkError, org.freedesktop.Telepathy.Error.ConnectionRefused, org.freedesktop.Telepathy.Error.ConnectionFailed or some more specific error.

When the status changes from Connected to Disconnected for this reason, the equivalent D-Bus error is either org.freedesktop.Telepathy.Error.NetworkError, org.freedesktop.Telepathy.Error.ConnectionLost or some more specific error.

The username or password was invalid.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.AuthenticationFailed.

There was an error negotiating SSL on this connection, or encryption was unavailable and require-encryption was set when the connection was created.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.EncryptionNotAvailable if encryption was not available at all, or org.freedesktop.Telepathy.Error.EncryptionError if encryption failed.

In general, this reason indicates that the requested account name or other identification could not be used due to conflict with another connection. It can be divided into three cases:

  • If the status change is from Connecting to Disconnected and the 'register' parameter to RequestConnection was present and true, the requested account could not be created on the server because it already exists. The equivalent D-Bus error is org.freedesktop.Telepathy.Error.RegistrationExists.
  • If the status change is from Connecting to Disconnected but the 'register' parameter is absent or false, the connection manager could not connect to the specified account because a connection to that account already exists. The equivalent D-Bus error is org.freedesktop.Telepathy.Error.AlreadyConnected. In some protocols, like XMPP (when connecting with the same JID and resource as an existing connection), the existing connection "wins" and the new one fails to connect.
  • If the status change is from Connected to Disconnected, the existing connection was automatically disconnected because a new connection to the same account (perhaps from a different client or location) was established. The equivalent D-Bus error is org.freedesktop.Telepathy.Error.ConnectionReplaced. In some protocols, like MSNP (when connecting twice with the same Passport), the new connection "wins" and the existing one is automatically disconnected.

The server did not provide a SSL certificate.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.NotProvided.

The server's SSL certificate is signed by an untrusted certifying authority. This error SHOULD NOT be used to represent a self-signed certificate: use the more specific Cert_Self_Signed reason for that.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Untrusted.

The server's SSL certificate has expired.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Expired.

The server's SSL certificate is not yet valid.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.NotActivated.

The server's SSL certificate did not match its hostname.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.HostnameMismatch.

The server's SSL certificate does not have the expected fingerprint.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.FingerprintMismatch.

The server's SSL certificate is self-signed.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.SelfSigned.

There was some other error validating the server's SSL certificate.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Invalid.

The server's SSL certificate has been revoked.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Revoked.

The server's SSL certificate uses an insecure algorithm, or is cryptographically weak.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.Insecure.

The length in bytes of the server certificate, or the depth of the sever certificate chain exceed the limits imposed by the crypto library.

When disconnected for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cert.LimitExceeded

Emitted when an error occurs that renders this connection unusable.

Whenever this signal is emitted, it MUST immediately be followed by a StatusChanged signal with status Connection_Status_Disconnected and an appropriate reason code.

Connection managers SHOULD emit this signal on disconnection, but need not do so. Clients MUST support connection managers that emit StatusChanged(Disconnected, ...) without first emitting ConnectionError.

This signal provides additional information about the reason for disconnection. The reason for connection is always straightforward - it was requested - so it does not need further explanation. However, on errors, it can be useful to provide additional information.

The Connection_Status_Reason is not given here, since it will be signalled in StatusChanged. A reasonable client implementation would be to store the information given by this signal until StatusChanged is received, at which point the information given by this signal can be used to supplement the StatusChanged signal.

The name of a D-Bus error describing the error that occurred, which may correspond to a Connection_Status_Reason, or may be a more specific Telepathy error (such as org.freedesktop.Telepathy.Error.ConnectionRefused for Connection_Status_Reason_Network_Error) or a protocol-specific or connection-manager-specific error in a suitable namespace. For instance, a SIP connection manager could signal "402 Payment Required" as an error in a connection-manager-specific namespace, or a link-local XMPP implementation that used Avahi could provide the error given to it by the avahi-daemon.

Additional information about the error, which may include the following well-known keys:

debug-message (s)
Debugging information on the change, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances
server-message (s)
A human-readable message from the server explaining what happened. This may be in the user's native language, or in the server operator's native language, or even in Lojban.
user-requested (b), expected-hostname (s), certificate-hostname (s)
The same details defined in TLS_Certificate_Rejection.
An integer indicating the new status, as defined by ConnectionStatus An integer indicating the reason for the status change, as defined by ConnectionStatusReason Emitted when the status of the connection changes. All states and reasons have numerical values, as defined in ConnectionStatus and ConnectionStatusReason.

The same string that would be returned by InspectHandles. As a special case, this is always present in the result of GetContactAttributes, whether it was explicitly requested or not.

Register a client's interest in notifications related to one or more interfaces.

Groups of notifications are identified by a token which is either a D-Bus interface name, or a string that starts with a D-Bus interface name. The meaning of each token is given by that D-Bus interface, which MUST define it in its documentation.

Initially, all interests are in entire interface, but allowing other strings allows subscription to part of an interface; for instance, an interest in ...MailNotification/count could track the number of messages without caring about their detailed content.

For each token with which this method interacts, the Connection tracks an "interest count" (like a reference count) for each unique bus name that has called this method. When a client calls this method, for each token, the interest count for its unique bus name is incremented; when RemoveClientInterest is called, all interest counts for that unique bus name are decremented. If the unique bus name leaves the bus (for instance, if the client crashes or exits), all interest counts for that unique bus name are set to zero.

The Connection can then use these reference counts to avoid subscribing to protocol-level notifications unless at least one client has a non-zero interest count for the relevant token.

This method exists to reduce memory and network overhead when there is no active subscription.

One situation where this is useful is Location: on XMPP, location updates are received over PEP. If the Connection advertises the geoloc+notify capability, it will be sent location updates for all contacts. To avoid consuming resources for this, the connection should avoid advertising that capability until a client has expressed an interest in contacts' locations.

Another example of a protocol that benefits from this method is the Google XMPP Mail Notification extension, which can be used to implement MailNotification. In this protocol, the CM receives a notification that something has changed, but to get more information, the CM must request this information. Knowing that nobody is currently interested in this information, the CM can avoid generating useless network traffic. Similarly, the CM may free the list of unread messages to reduce memory overhead.

If this method is called for an interface that might require protocol-level subscription, but the connection cannot set up that subscription yet (for instance because the Status is not Connected yet), the Connection MUST remember the client's interest, and attempt to subscribe to the appropriate protocol feature when this becomes possible.

Clients MAY ignore any errors raised by this method; it is intended to be called with the reply ignored.

The only reason it could fail is if it's unimplemented, in which case the only thing the client can usefully do is to proceed as if it had succeeded.

Interfaces or parts of interfaces in which to register an interest, represented by either a DBus_Interface, or a string prefixed with a DBus_Interface.

If the Connection does not support one of these tokens, this is not considered to be an error; the unsupported token is simply ignored.

Release an interest registered using AddClientInterest. See that method's documentation for details.

Clients MAY ignore any errors raised by this method; it is intended to be called with the reply ignored.

The only reasons it could fail are if it's unimplemented, or if the client's reference-counting is wrong and it has tried to remove a client interest that it did not add. In both cases, there's nothing the client could do about it.

Interfaces or parts of interfaces that were previously passed to AddClientInterest.

True if handles last for the whole lifetime of the Connection. This SHOULD be the case in all connection managers, but clients MUST interoperate with older connection managers (which reference-count handles).

This models a connection to a single user account on a communication service. Its basic capability is to provide the facility to request and receive channels of differing types (such as text channels or streaming media channels) which are used to carry out further communication.

In order to allow Connection objects to be discovered by new clients, the object path and well-known bus name MUST be of the form /org/freedesktop/Telepathy/Connection/cmname/proto/account and org.freedesktop.Telepathy.Connection.cmname.proto.account where:

  • cmname is the same Connection_Manager_Name that appears in the connection manager's object path and well-known bus name
  • proto is the Protocol name as seen in ListProtocols, but with "-" replaced with "_" to get a valid object path/bus name
  • account is some non-empty sequence of ASCII letters, digits and underscores not starting with a digit

account SHOULD be formed such that any valid distinct connection instance on this protocol has a distinct name. This might be formed by including the server name followed by the user name (escaped via some suitable mechanism like telepathy-glib's tp_escape_as_identifier() function to preserve uniqueness); on protocols where connecting multiple times is permissable, a per-connection identifier might be necessary to ensure uniqueness.

Clients MAY parse the object path to determine the connection manager name and the protocol, but MUST NOT attempt to parse the account part. Connection managers MAY use any unique string for this part.

As well as the methods and signatures below, arbitrary interfaces may be provided by the Connection object to represent extra connection-wide functionality, such as the Connection.Interface.SimplePresence for receiving and reporting presence information, and Connection.Interface.Aliasing for connections where contacts may set and change an alias for themselves. These interfaces can be discovered using the GetInterfaces method.

Contacts, rooms, and server-stored lists (such as subscribed contacts, block lists, or allow lists) on a service are all represented by immutable handles, which are unsigned non-zero integers which are valid only for the lifetime of the connection object, and are used throughout the protocol where these entities are represented, allowing simple testing of equality within clients.

Zero as a handle value is sometimes used as a "null" value to mean the absence of a contact, room, etc.

Handles have per-type uniqueness, meaning that every (handle type, handle number) tuple is guaranteed to be unique within a connection and that a handle alone (without its type) is meaningless or ambiguous. Connection manager implementations should reference count these handles to determine if they are in use either by any active clients or any open channels, and may deallocate them when this ceases to be true. Clients may request handles of a given type and identifier with the RequestHandles method, inspect the entity identifier with the InspectHandles method, keep handles from being released with HoldHandles, and notify that they are no longer storing handles with ReleaseHandles.

Previously, the account part of Connection bus names/object paths was allowed to have more than one component (i.e. contain dots or slashes), resulting in Connection bus names and object paths with more than 7 components. We now restrict Connection bus names/object paths to have exactly 7 components. The Requests and Contacts interfaces are now mandatory. Their functionality will be merged into the main Connection interface at some point in future.
telepathy-qt-0.9.6.1/spec/Channel_Handler.xml0000644000175100017520000000562612530423576022414 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2007-2008 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Clients should implement Client.Handler instead.

An interface exported by Mission Control 4 client applications which are able to handle incoming channels.

Called when a channel handler should handle a new channel. The bus name of the connection and channel The object-path of the connection that owns the channel The channel type The object-path of the channel The type of the handle that the channel communicates with, or 0 if there is no associated handle The handle that the channel communicates with, or 0 if there is no associated handle
telepathy-qt-0.9.6.1/spec/Channel_Type_Call.xml0000644000175100017520000021634512530423576022715 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Limited Copyright © 2009-2010 Nokia Corporation This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API)

A channel type for making audio and video calls. Call channels supersede the old StreamedMedia channel type. Call channels are much more flexible than its predecessor and allow more than two participants.

Handlers are advised against executing all the media signalling, codec and candidate negotiation themselves but instead use a helper library such as telepathy-farstream which when given a new Call channel will set up the transports and codecs and create GStreamer pads which can be added to the handler UI. This is useful as it means the handler does not have to worry how exactly the connection between the call participants is being made.

The TargetHandle and TargetID properties in a Call channel refer to the contact that the user initially called, or which contact initially called the user. Even in a conference call, where there are multiple contacts in the call, these properties refer to the initial contact, who might have left the conference since then. As a result, handlers should not rely on these properties.

Contents

Content objects represent the actual media that forms the Call (for example an audio content and a video content). Calls always have one or more Content objects associated with them. As a result, a new Call channel request MUST have either InitialAudio=True, or InitialVideo=True, or both, as the Requestable Channel Classes will document.

Content objects have one or more stream associated with them. More information on these streams and how to maniuplate them can be found on the Content interface page.

Outgoing calls

To make an audio-only call to a contact foo@example.com handlers should call:

CreateChannel({
  ...ChannelType: ...Call1,
  ...TargetHandleType: Contact,
  ...TargetID: 'foo@example.com',
  ...InitialAudio: True,
})

As always, TargetHandle may be used in place of TargetID if the contact's handle is already known. To make an audio and video call, the handler should also specify InitialVideo The connection manager SHOULD return a channel whose immutable properties contain the local user as the InitiatorHandle, the remote contact as the TargetHandle, Requested = True (indicating the call is outgoing).

After a new Call channel is requested, the CallState property will be Pending_Initiator. As the local user is the initiator, the call must be accepted by the handler by calling the Accept method. At this point, CallState changes to Initialising, which signifies that the call is waiting for the network to do something. When the CM has information indicating that the remote contact has been notified about the call (or immediately if the network is known not to convey such information) it should also change to Initialised. All changes to the CallState property are signalled using the CallStateChanged signal.

When the call is accepted by the remote contact, the CallStateChanged signal fires again to show that CallState = Accepted.

At this point telepathy-farstream will signal that a pad is available for the handler to show in the user interface. Once media is correctly flowing in both directions, the state will change to Active, to inform the user that they have a correctly working call there is nothing amiss.

Missed calls

If the remote contact does not accept the call in time, then the call can be terminated by the server. Note that this only happens in some protocols. Most XMPP clients, for example, do not do this and rely on the call initiator terminating the call. A missed call is shown in a Call channel by the CallState property changing to Ended, and the CallStateReason property changing to (remote contact, No_Answer, "").

Rejected calls

If the remote contact decides he or she does not feel like talking to the local user, he or she can reject his or her incoming call. This will be shown in the Call channel by CallState changing to Ended and the CallStateReason property changing to (remote contact, User_Requested, "org.freedesktop.Telepathy.Error.Rejected").

Incoming calls

When an incoming call occurs, something like the following NewChannels signal will occur:

NewChannels([
  /org/freedesktop/Telepathy/Connection/foo/bar/foo_40bar_2ecom/CallChannel,
  {
    ...ChannelType: ...Call1,
    ...TargetHandleType: Contact,
    ...TargetID: 'foo@example.com',
    ...TargetHandle: 42,
    ...Requested: False,
    ...InitialAudio: True,
    ...InitialVideo: True,
    ...InitialAudioName: "audio",
    ...InitialVideoName: "video",
    ...MutableContents: True,
  }])

The InitialAudio and InitialVideo properties show that the call has been started with two contents: one for audio streaming and one for video streaming. The InitialAudioName and InitialVideoName properties also show that the aforementioned audio and video contents have names "audio" and "video".

Once the handler has notified the local user that there is an incoming call waiting for acceptance, the handler should call SetRinging to let the CM know. The new channel should also be given to telepathy-farstream to work out how the two participants will connect together. telepathy-farstream will call the appropriate methods on the call's Contents to negotiate codecs and transports.

To pick up the call, the handler should call Accept. The CallState property changes to Accepted and once media is being transferred, telepathy-farstream will notify the handler of a new pad to be shown to the local user in the UI. Once media is correctly flowing in both directions, the state will change to Active, to inform the user that they have a correctly working call there is nothing amiss.

To reject the call, the handler should call the Hangup method. The CallState property will change to Ended and the CallStateReason property will change to (self handle, User_Requested, "org.freedesktop.Telepathy.Error.Rejected").

Ongoing calls

Adding and removing contents

When a call is open, new contents can be added as long as the CM supports it. The MutableContents property will let the handler know whether further contents can be added or existing contents removed. An example of this is starting a voice call between a contact and then adding a video content. To do this, the should call AddContent like this:

AddContent("video",
           Video)

Assuming no errors, the new video content will be added to the call. telepathy-farstream will pick up the new content and perform the transport and codec negotiation automatically. telpathy-farstream will signal when the video is ready to show in the handler's user interface.

A similar method is used for removing contents from a call, except that the Remove method is on the Content object.

Ending the call

To end the call, the handler should call the Hangup method. The CallState property will change to Ended and CallStateReason will change to (self handle, User_Requested, "org.freedesktop.Telepathy.Error.Cancelled").

If the other participant hangs up first then the CallState property will change to Ended and CallStateReason will change to (remote contact, User_Requested, "org.freedesktop.Telepathy.Error.Terminated").

Multi-party calls

Requestable channel classes

The RequestableChannelClasses for Call1 channels can be:

[( Fixed = { ...ChannelType: ...Call1,
            ...TargetHandleType: Contact,
            ...InitialVideo: True
          },
  Allowed = [ ...InitialVideoName,
              ...InitialAudio,
              ...InitialAudioName
            ]
),
( Fixed = { ...ChannelType: ...Call1,
            ...TargetHandleType: Contact,
            ...InitialAudio: True
          },
  Allowed = [ ...InitialAudioName,
              ...InitialVideo,
              ...InitialVideoName
            ]
)]

Clients aren't allowed to make outgoing calls that have neither initial audio nor initial video. Clearly, CMs which don't support video should leave out the first class and omit InitialVideo from the second class, and vice versa for CMs without audio support.

Handlers should not close Call1 channels without first calling Hangup on the channel. If a Call handler crashes, the ChannelDispatcher will call Close on the channel which SHOULD also imply a call to Hangup(User_Requested, "org.freedesktop.Telepathy.Error.Terminated", "") before actually closing the channel.

renamed from Ringing

Indicate that the local user has been alerted about the incoming call.

This method is only useful if the channel's Requested property is False, and the CallState is Initialised (an incoming call is ready and waiting for the user to be notified). Calling this method SHOULD set CallFlags' bit Locally_Ringing, and notify the remote contact that the local user has been alerted (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.

In all other states, this method SHOULD fail with the error NotAvailable.

The call was Requested, so ringing does not make sense. The call is no longer in state Initialised.
renamed from Ringing

Notifies the CM that the local user is already in a call, so this call has been put in a call-waiting style queue.

This method is only useful if the channel's Requested property is False, and the CallState is Initialising or Initialised. Calling this method SHOULD set CallFlags' bit Locally_Queued, and notify the remote contact that the call is in a queue (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.

Locally_Queued is a little like Locally_Held, but applies to calls that have not been Accepted (the Locally_Queued flag should be unset by the CM when Accept is called). It should also be set in response to the state of the world, rather than in response to user action.

The call was Requested, so queueing does not make sense. The call is no longer in state Initialising or Initialised.

For incoming calls in state Initialised, accept the incoming call. This changes the CallState to Accepted.

For outgoing calls in state Pending_Initiator, actually call the remote contact; this changes the CallState to Initialising.

Otherwise, this method SHOULD fail with the error NotAvailable.

This method should be called exactly once per Call, by whatever client (user interface) is handling the channel.

When this method is called, for each Content whose Disposition is Initial, any streams where the LocalSendingState is Pending_Send will be moved to Sending as if SetSending(True) had been called.

The call is not in one of the states where this method makes sense.
Request that the call is ended. All contents will be removed from the Call so that the Contents property will be the empty list. A generic hangup reason. A more specific reason for the call hangup, if one is available, or an empty string otherwise. A human-readable message to be sent to the remote contact(s). XMPP Jingle allows calls to be terminated with a human-readable message. The call has already been ended. Request that a new Content of type Content_Type is added to the Call1. Handlers should check the value of the MutableContents property before trying to add another content as it might not be allowed.

The suggested name of the content to add.

The content name property should be meaningful, so should be given a name which is significant to the user. The name could be a localized "audio", "video" or perhaps include some string identifying the source, such as a webcam identifier.

If there is already a content with the same name as this property then a sensible suffix should be added. For example, if this argument is "audio" but a content of the same name already exists, a sensible suffix such as " (1)" is appended to name the new content "audio (1)". A further content with the name "audio" would then be named "audio (2)".

The media stream type of the content to be added to the call. The requested initial direction of the new content. Path to the newly-created Call1.Content object. The media stream type given is invalid. The media stream type requested is not implemented by the CM. The media stream type requested is not supported by either the local or remote side. The content type requested cannot be added to this call. Examples of why this might be the case include because a second video stream cannot be added, or a content cannot be added when the content set isn't mutable.

Emitted when a new Content is added to the call.

Path to the newly-created Content object.

Emitted when a Content is removed from the call.

The Content which was removed. Why the content was removed.

The list of Content objects that are part of this call. Change notification is via the ContentAdded and ContentRemoved signals.

The state of a call, as a whole.

The allowed transitions are:

  • Pending_Initiator → Initialising (for outgoing calls, when Accept is called)
  • Initialising → Initialised (for outgoing calls, when the remote client indicates that the user has been notified about the call. If the network is known not to provide feedback about whether the remote side is ringing, then the call should immediately be set to Initialised.
  • Initialising → Initialised (for incoming calls, when e.g. the implementation has been initialised far enough that it is sensible to notify the user about the call (to reduce the probability that the user will pick up the call and have it immediately fail). The UI should then alert the user about the call, and call SetRinging)
  • Initialised → Accepted (for outgoing calls to a contact, when the remote contact accepts the call; for incoming calls, when Accept is called.)
  • Accepted → Active (when the local user successfully joins the call/conference, and media is known to be flowing successfully; also, when temporary connection problems are resolved (See below)). If the network is known not to provide feedback about when the call is properly connected, the call should immediately be set to Active.
  • Active → Accepted (when there are temporary connection problems that the CM is aware of and able to recover from)
  • any state → Ended (when the call is terminated normally, or when an error occurs that the CM is unable to recover from)

Clients MAY consider unknown values from this enum to be an error - additional values will not be defined after the Call specification is declared to be stable.

The call state is not known. This call state MUST NOT appear as a value of the CallState property, but MAY be used by client code to represent calls whose state is as yet unknown. The initiator of the call hasn't accepted the call yet. This state only makes sense for outgoing calls, where it means that the local user has not yet sent any signalling messages to the remote user(s), and will not do so until Accept is called. Progress has been made in placing the call, but the contact has not been made aware of the call yet. This corresponds to SIP's status code 183 Session Progress, and should be used for the period where the CM is waiting for the streaming implementation to initialise (before sending the initial INVITE or equivalent) and when the outgoing call has reached a gateway or ICE negotiation is pending. UIs should not produce a dialtone or start ringing if the call is in this state. In the outgoing case: at least one called user has been alerted about the call (a SIP 180 (Ringing) packet or equivalent has been received) but none have answered, so the call cannot go to Accepted (use Ringing to determine which members have been informed and which haven't, if you care). UIs SHOULD produce a dialtone for outgoing calls in this state. In the incoming case, the local user should be informed of the call as soon as the call reaches this state (and SetRinging should be called to inform the CM that this has happened, so that it can relay this fact to the caller using a SIP 180 (Ringing) packet or equivalent). The contact being called has accepted the call, but the call is not in the Active state (The most common reason for this is that the streaming implementation hasn't connected yet). The contact being called has accepted the call, and discourse between at least two parties should now be possible. The call has ended, either via normal termination or an error.
A set of flags representing additional information than is available in CallState. Many of these flags only make sense in a particular (or may explain why a call is in a specific state). The call has been put on hold by the local user, e.g. using the Hold interface. This flag SHOULD only be set if there is at least one Content, and all Contents are locally held. Otherwise, in transient situations where some but not all contents are on hold, UIs would falsely indicate that the call as a whole is on hold, which could lead to the user saying something they'll regret, while under the impression that the other contacts can't hear them! This flag exists as a simplified proxy for HoldStateChanged, to reduce the number of signals that need to be listened to by a simple UI. This flag exists for observability of the SetRinging method (e.g. so that loggers can tell whether the call got as far as alerting the user, or whether something went wrong before then). It should be set when the SetRinging is called, and unset when the call leaves Initialised. This flag exists for observability of the SetQueued method. It should be set when the SetQueued is called, and unset when the call leaves Initialising or Initialised. The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted. This flag only makes sense on outgoing calls. It SHOULD be set or unset according to informational messages from other contacts. This flag only occurs when the CallState is Ended. The call with this flag set has ended, but not all resources corresponding to the call have been freed yet. Depending on the protocol there might be some audible feedback while the clearing flag is set. In calls following the ITU-T Q.931 standard there is a period of time between the call ending and the underlying channel being completely free for re-use.

A map used to provide optional extensible details for the CallState, CallFlags and/or CallStateReason.

Well-known keys and their corresponding value types include:

hangup-message - s
An optional human-readable message sent when the call was ended, corresponding to the Message argument to the Hangup method. This is only applicable when the call state is Ended. XMPP Jingle can send such messages.
queue-message - s
An optional human-readable message sent when the local contact is being held in a queue. This is only applicable when Locally_Queued is in the call flags. SIP 182 notifications can have human-readable messages attached.
debug-message - s
A message giving further details of any error indicated by the CallStateReason. This will not normally be localized or suitable for display to users, and is only applicable when the call state is Ended.
balance-required - i
Optionally included when a call cannot be connected because there is InsufficientBalance, indicating what the required balance would be to place this call. The value of this key has the same units and scale as AccountBalance.
forwarded-to - u
Optionally included when the CallStateReason is Forwarded. It indicates the handle to whom the Call was forwarded.
forwarded-to-id - s
The string that would result from inspecting the forwarded-to key (i.e. the contact's identifier in the IM protocol).

The current high-level state of this call. The CallFlags provide additional information, and the CallStateReason and CallStateDetails explain the reason for the current values for those properties.

Note that when in a conference call, this property is purely to show your state in joining the call. The receiver (or remote contact) in this context is the conference server itself. The property does not change when other call members' states change.

Clients MAY consider unknown values in this property to be an error.

Flags representing the status of the call as a whole, providing more specific information than the CallState.

Clients are expected to ignore unknown flags in this property, without error.

When an ongoing call is active and not on hold or has any other problems, this property will be 0.

A simple representation of the reason for a change in the call's state, which may be used by simple clients, or used as a fallback when the DBus_Reason member of a Call_State_Reason struct is not understood. We just don't know. Unknown values of this enum SHOULD also be treated like this. Situation normal. Progress has been made in the setup/teardown of the call (and it didn't require any user interaction).

The change was requested by the contact indicated by the Actor member of a Call_State_Reason struct.

The DBus_Reason SHOULD be the empty string if the call was terminated normally, but MAY be a non-empty error name to indicate error-like call termination reasons (kicked from a conference by a moderator, etc.).

The call was forwarded. If known, the handle of the contact the call was forwarded to will be indicated by the "forwarded-to" member of a CallStateDetails dictionnary in the CallStateChanged signal.

The CallState changed from Initialised or Ended (or a content's direction changed) because it was rejected by the remote user.

Corresponds to Rejected

The CallState changed from Initialised or Ended because the initiator ended the call before the receiver accepted it. With an incoming call this state change reason signifies a missed call, or one that was picked up elsewhere before it was picked up here.

Corresponds to NoAnswer or PickedUpElsewhere

The CallState changed because one of the addresses does not exist on the network.

Corresponds to DoesNotExist

The CallState changed because the local user is not authorised.

Corresponds to PermissionDenied or InsufficientBalance

The CallState changed from Initialised Ended because the receiver is busy (e.g. is already engaged in another call, and has not placed the initiator in a call-waiting queue).

Corresponds to Busy

There has been an unexpected error in either the CM or some other local component.

Corresponds to Confused or Media.StreamingError

There has been an unexpected error in the server or some other remote component.

Corresponds to ServiceConfused

There has been a network error related to the CM or the signalling part of the call (compare and contrast: Streaming_Error).

Corresponds to NetworkError

Some aspect of the content is unsupported so has to be removed from the call.

Corresponds to Media.UnsupportedType or Media.CodecsIncompatible

It was not possible for the streaming implementation to connect to any of the users participating in this call or content.

Corresponds to ConnectionFailed or ConnectionLost

A description of the reason for a change to the CallState and/or CallFlags.

The contact responsible for the change, or 0 if no contact was responsible. The reason, chosen from a limited set of possibilities defined by the Telepathy specification. If User_Requested then the Actor member will dictate whether it was the local user or a remote contact responsible.

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.

This SHOULD be an empty string for changes to any state other than Ended.

The errors Cancelled and Terminated SHOULD NOT be used here; an empty string SHOULD be used instead.

Those error names are used to indicate normal call termination by the local user or another user, respectively, in contexts where a D-Bus error name must appear.

An optional debug message, to expediate debugging the potentially many processes involved in a call. This may be communicated across the network in protocols that support doing so, but it is not essential.

The reason for the last change to the CallState and/or CallFlags. The CallStateDetails MAY provide additional information.

Emitted when the state of the call as a whole changes.

This signal is emitted for any change in the properties corresponding to its arguments, even if the other properties referenced remain unchanged.

The new value of the CallState property. The new value of the CallFlags property. The new value of the CallStateReason property. The new value of the CallStateDetails property.

If this property is True, all of the media streaming is done by some mechanism outside the scope of Telepathy.

A connection manager might be intended for a specialized hardware device, which will take care of the audio streaming (e.g. telepathy-ring, which uses GSM hardware which does the actual audio streaming for the call).

If this is False, the handler is responsible for doing the actual media streaming for at least some contents itself. Those contents will have the Media interface, to communicate the necessary information to a streaming implementation. Connection managers SHOULD operate like this, if possible.

Many connection managers (such as telepathy-gabble) only do the call signalling, and expect the client to do the actual streaming using something like Farsight, to improve latency and allow better UI integration.

A set of flags representing the status of a remote contact in a call.

It is protocol- and client-specific whether a particular contact will ever have a particular flag set on them, and Telepathy clients SHOULD NOT assume that a flag will ever be set.

180 Ringing in SIP, and its equivalent in XMPP, are optional informational messages, and implementations are not required to send them. The same applies to the messages used to indicate hold state.

The remote contact's client has told us that the contact has been alerted about the call but has not responded.

This is a flag per member, not a flag for the call as a whole, because in Muji conference calls, you could invite someone and have their state be "ringing" for a while.

The call member has put this call on hold.

This is a flag per member, not a flag for the call as a whole, because in conference calls, any member could put the conference on hold.

This contact has merged this call into a conference. Note that GSM provides a notification when the remote party merges a call into a conference, but not when it is split out again; thus, this flag can only indicate that the call has been part of a conference at some point. If a GSM connection manager receives a notification that a call has been merged into a conference a second time, it SHOULD represent this by clearing and immediately re-setting this flag on the remote contact.
A mapping from handles to their current state in the call. Emitted when the CallMembers property changes in any way, either because contacts have been added to the call, contacts have been removed from the call, or contacts' flags have changed. A map from members of the call to their new call member flags, including at least the members who have been added to CallMembers, and the members whose flags have changed. The identifiers of the contacts in the Flags_Changed map. A list of members who have left the call, i.e. keys to be removed from CallMembers. A structured reason for the change.

A mapping from the remote contacts that are part of this call to flags describing their status. This mapping never has the local user's handle as a key.

When the call ends, this property should be an empty list, and notified with CallMembersChanged

If the Call implements Group and the Group members are channel-specific handles, then this call SHOULD also use channel-specific handles.

Anonymous members are exposed as channel-specific handles with no owner.

The string identifiers for handles mentioned in CallMembers, to give clients the minimal information necessary to create contacts without waiting for round-trips.

If set on a requested channel, this indicates the transport that should be used for this call. Where not applicable, this property is defined to be Unknown, in particular, on CMs with hardware streaming.

When implementing a voip gateway one wants the outgoing leg of the gatewayed to have the same transport as the incoming leg. This property allows the gateway to request a Call with the right transport from the CM.

If set to True in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call AddContent.

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If True on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If True on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by Contents).

The name of this new content can be decided by using the InitialAudioName property.

Connection managers that support the ContactCapabilities interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = Call in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling UpdateCapabilities (clients of a ChannelDispatcher SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their HandlerChannelFilter properties):

  • { ChannelType = Call }
  • { ChannelType = Call, InitialAudio = True } if receiving calls with audio is supported
  • { ChannelType = Call, InitialVideo = True } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

The same as InitialAudio, but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is False, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

If InitialAudio is set to True, then this property will name the intial audio content with the value of this property.

Content names are meant to be significant, but if no name can be given to initial audio content, then its name cannot be meaningful or even localized.

If this property is empty or missing from the channel request and InitialAudio is True, then the CM must come up with a sensible for the content, such as "audio".

If the protocol has no concept of stream names then this property will not show up in the allowed properties list of the Requestable Channel Classes for call channels.

The same as InitialAudioName, but for a video stream created by setting InitialVideo to True. This property is immutable and so cannot change.

If True, a stream of a different content type can be added after the Channel has been requested

If this property is missing, clients SHOULD assume that it is False, and thus that the channel's streams cannot be changed once the call has started.

If this property isn't present in the "allowed" set in any of the Call entries contact capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call1" button with the option to add and remove video once the call has started for contacts without this flag.

This client supports audio calls.

This client supports video calls.

The client can implement streaming for streams whose Transport property is GTalk_P2P.

The client can implement streaming for streams whose Transport property is ICE.

The client can implement streaming for streams whose Transport property is WLM_2009.

The client can implement streaming for streams whose Transport property is SHM.

The client supports media streaming with H264 (etc.).

This handler capability token is a one of a family of similar tokens: for any other audio or video codec whose MIME type is audio/subtype or video/subtype, a handler capability token of this form may exist (the subtype MUST appear in lower case in this context). Clients MAY support more codecs than they explicitly advertise support for; clients SHOULD explicitly advertise support for their preferred codec(s), and for codecs like H264 that are, in practice, significant in codec negotiation.

For instance, the XMPP capability used by the Google Video Chat web client to determine whether a client is compatible with it requires support for H264 video, so an XMPP connection manager that supports this version of Jingle should not advertise the Google Video Chat capability unless there is at least one installed client that declares that it supports video/h264 on Call channels.

For example, a client could advertise support for audio and video calls using Speex, Theora and H264 by having five handler capability tokens in its Capabilities property:

  • org.freedesktop.Telepathy.Channel.Type.Call1/audio
  • org.freedesktop.Telepathy.Channel.Type.Call1/audio/speex
  • org.freedesktop.Telepathy.Channel.Type.Call1/video
  • org.freedesktop.Telepathy.Channel.Type.Call1/video/theora
  • org.freedesktop.Telepathy.Channel.Type.Call1/video/h264

Clients MAY have media signalling abilities without explicitly supporting any particular codec, and connection managers SHOULD support this usage.

This is necessary to support gatewaying between two Telepathy connections, in which case the available codecs might not be known to the gatewaying process.

telepathy-qt-0.9.6.1/spec/Channel_Type_Text.xml0000644000175100017520000006666412530423576022775 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The Messages interface is now mandatory This interface used to have a bunch of clunky Telepathy.Properties. They have been removed in favour of D-Bus properties on the Room2, Subject2 and RoomConfig1 interfaces. A unique-per-channel identifier for an incoming message. These SHOULD be allocated in a way that minimizes collisions (in particular, message IDs SHOULD NOT be re-used until all of the 32-bit integer space has already been used). New APIs should use an array of Message_Part instead. A struct (message ID, timestamp in seconds since 1970-01-01 00:00 UTC, sender's handle, message type, flags, text) representing a pending text message, as returned by ListPendingMessages. The arguments of the Received signal also match this struct's signature. The IDs of the messages to acknowledge Inform the channel that you have handled messages by displaying them to the user (or equivalent), so they can be removed from the pending queue. A given message ID was not found, so no action was taken Consulting MessageTypes is preferred. An array of integer message types (ChannelTextMessageType) Return an array indicating which types of message may be sent on this channel. Consulting PendingMessages is preferred. If true, behave as if AcknowledgePendingMessages had also been called. Setting this to true is NOT RECOMMENDED for clients that have some sort of persistent message storage - clients SHOULD only acknowledge messages after they have actually stored them, which is impossible if this flag is true. An array of structs representing the pending queue. Each contains:
  • a numeric identifier
  • a Unix timestamp indicating when the message was received
  • the contact handle for the contact who sent the message
  • the message type, taken from ChannelTextMessageType
  • the bitwise-OR of the message flags from ChannelTextMessageFlags
  • the text of the message
List the messages currently in the pending queue, and optionally remove then all.
In practice, this signal was not emitted, and does not have useful semantics. This signal is emitted to indicate that an incoming message was not able to be stored and forwarded by the connection manager due to lack of memory. The MessageReceived signal is more informative. A numeric identifier for acknowledging the message A Unix timestamp indicating when the message was received The handle of the contact who sent the message The type of the message (normal, action, notice, etc.) A bitwise OR of the message flags The text of the message Signals that a message with the given id, timestamp, sender, type and text has been received on this channel. Applications that catch this signal and reliably inform the user of the message should acknowledge that they have dealt with the message with the AcknowledgePendingMessages method. The SendMessage method is more flexible. An integer indicating the type of the message The message to send

Request that a message be sent on this channel. When the message has been submitted for delivery, this method will return and the Sent signal will be emitted. If the message cannot be submitted for delivery, the method returns an error and no signal is emitted.

This method SHOULD return before the Sent signal is emitted.

When a Text channel implements the Messages interface, that "SHOULD" becomes a "MUST".

An unknown error occurred The requested contact was offline The requested contact is not valid The user does not have permission to speak on this channel The outgoing message was too long and was rejected by the server The channel doesn't support sending text messages to the requested contact Delivery reporting is now provided by the Messages interface. The error that occurred The Unix timestamp indicating when the message was sent The message type The text of the message

Signals that an outgoing message has failed to send. The error will be one of the values from ChannelTextSendError.

This signal should only be emitted for messages for which Sent has already been emitted and Send has already returned success.

older spec versions claimed that SendError was emitted instead of Sent, rather than in addition to Sent. However, the 0.17.3+ semantics were what we'd always actually implemented.
The MessageSent signal is more informative. Unix timestamp indicating when the message was sent The message type (normal, action, notice, etc) from ChannelTextMessageType The text of the message. If the message was, or will be, altered during transmission, this argument SHOULD reflect what other contacts will receive rather than being a copy of the argument to Send.

Signals that a message has been submitted for sending.

The type of message. An ordinary chat message. Unknown types SHOULD be treated like this. An action which might be presented to the user as "* <sender> <action>", such as an IRC CTCP ACTION (typically selected by the "/me" command). For example, the text of the message might be "drinks more coffee". A one-off or automated message not necessarily expecting a reply An automatically-generated reply message. A delivery report. This message type MUST NOT appear unless the channel supports the Messages interface; see Message_Part for the format that delivery reports must take. The Messages interface has an extensible data structure including separate booleans for most of these flags. The incoming message was truncated to a shorter length by the server or the connection manager.

The incoming message contained non-text content which cannot be represented by this interface, but has been signalled in the Messages interface.

Connection managers SHOULD only set this flag if the non-text content appears to be relatively significant (exactly how significant is up to the implementor). The intention is that if this flag is set, clients using this interface SHOULD inform the user that part of the message was not understood.

The incoming message was part of a replay of message history.

In XMPP multi-user chat, a few past messages are replayed when you join a chatroom. A sufficiently capable IRC connection manager could also set this flag on historical messages when connected to a proxy like bip or irssi-proxy. The existence of this flag allows loggers and UIs to use better heuristics when eliminating duplicates (a simple implementation made possible by this flag would be to avoid logging scrollback at all).

The incoming message has been seen in a previous channel during the lifetime of the Connection, but had not been acknowledged when that channel closed, causing an identical channel (the channel in which the message now appears) to open.

This means that a logger (which should already have seen the message in the previous channel) is able to recognise and ignore these replayed messages.

A channel type for sending and receiving messages. This channel type is primarily used for textual messages, but can also be used for formatted text, text with "attachments", or binary messages on some protocols.

Most of the methods and signals on this interface are deprecated, since they only support plain-text messages with limited metadata. See the mandatory Messages interface for the modern equivalents.

When a message is received, an identifier is assigned and a MessageReceived signal emitted, and the message is placed in a pending queue represented by the PendingMessages property. When the Handler for a channel has handled the message by showing it to the user (or equivalent), it should acknowledge the receipt of that message using the AcknowledgePendingMessages method, and the message will then be removed from the pending queue. Numeric identifiers for received messages may be reused over the lifetime of the channel.

Sending messages can be requested using the SendMessage method, which will return successfully when the message has been submitted for sending, or return an error with no signal emission if there is an immediate failure. If a message is submitted for sending but delivery of the message later fails, this is indicated by a delivery report, which is received in the same way as an incoming message.

Simple one-to-one chats (such as streams of private messages in XMPP or IRC) should be represented by a Text channel whose TargetHandleType is Contact. The expected way to request such a channel is to set the ChannelType, TargetHandleType, and either TargetHandle or TargetID in a call to EnsureChannel.

Named chat rooms whose identity can be saved and used again later (IRC channels, Jabber MUCs) are expected to be represented by Text channels with TargetHandleType = Room and the Group interface. In protocols where a chatroom can be used as a continuation of one or more one-to-one chats, these channels should also have the Conference interface.

Unnamed, transient chat rooms which cannot be rejoined by their unique identifier (e.g. a conversation on MSN which has, or once had, three or more participants) are expected to be represented by Text channels with TargetHandleType = None (and hence TargetHandle = 0), Group interface, and optionally the Conference interface.

On protocols like MSN where a conversation with a user is actually just a nameless chat room starting with exactly two members, to which more members can be invited, the initial one-to-one conversation SHOULD be represented with TargetHandleType = Contact. If a third participant joins or is invited, this SHOULD be represented by signalling a new Conference channel with the one-to-one channel in its InitialChannels, migrating the underlying protocol object from the one-to-one channel to the Conference channel, and creating a new protocol-level conversation if the one-to-one channel is re-used. See the Conference interface for more details.

This keeps the presentation of all one-to-one conversations uniform, and makes it easier to hand over a conversation from a 1-1-specific UI to a more elaborate multi-user UI; while it does require UIs to understand Conference to follow the upgrade, UIs that will deal with XMPP need to understand Conference anyway.

If a channel of type Text is closed while it has pending messages, the connection manager MUST allow this, but SHOULD open a new channel to deliver those messages, signalling it as a new channel with the NewChannels signal. The new channel should resemble the old channel, but have Requested = FALSE regardless of its previous value; the InitiatorHandle and InitiatorID should correspond to the sender of one of the pending messages.

In effect, this turns this situation, in which a client is likely to lose messages:

  • UI window is closed
  • message arrives
  • text channel emits Received
  • UI calls Close on text channel before it has seen the Received signal
  • text channel emits Closed and closes

into something nearly equivalent to this situation, which is fine:

  • UI window is closed
  • UI calls Close on text channel
  • text channel emits Closed and closes
  • message arrives
  • new text channel is created, connection emits NewChannels
  • (the same or a different) UI handles it

Requested must be set to FALSE so the replacement channel will be handled by something.

In practice, connection managers usually implement this by keeping the same internal object that represented the old channel, adjusting its properties, signalling that it was closed, then immediately re-signalling it as a new channel.

As a result, Text channels SHOULD implement Channel.Interface.Destroyable.

This "respawning" behaviour becomes problematic if there is no suitable handler for Text channels, or if a particular message repeatedly crashes the Text channel handler; a channel dispatcher can't just Close() the channel in these situations, because it will come back.

In these situations, the channel dispatcher needs a last-resort way to destroy the channel and stop it respawning. It could either acknowledge the messages itself, or use the Destroyable interface; the Destroyable interface has the advantage that it's not channel-type-dependent, so the channel dispatcher only has to understand one extra interface, however many channel types eventually need a distinction between Close and Destroy.

Opaquely-named rejoinable chatrooms (such as Skype rooms) are represented using the properties in the Room2 interface. Instructions and examples of how to request such channels are given in said interface's description.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Service_Point.xml0000644000175100017520000001300112530423576026301 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for connections whose channels may be able to indicate specific they are connected to some form of service station. For example, when dialing 9-1-1 in the US, a GSM modem/network will recognize that as an emergency call, and inform higher levels of the stack that the call is being handled by an emergency service. In this example, the call is handled by a Public Safety Answering Point (PSAP) which is labeled as "urn:service:sos". Other networks and protocols may handle this differently while still using this interface.

The service point. A list of IDs that are mapped to this service. This is provided as a convenience for the UIs, but the preferred method for requesting channel to a service is by setting the InitialServicePoint property in a channel request.

Description of a service point and IDs which are mapped to it.

An example Service Point info for GSM emergency calls (callable through "911" and "112") could look like:

  ServicePointInfo = (
    Service_Point: (
      Service_Point_Type: 1 (Emergency),
      Service_Point: "urn:service:sos"
    ),
    Service_IDs: [ "911", "112" ]
  )
The list of all (known) service points.

The new value of KnownServicePoints.

Emitted when the list of known service points (or their IDs) has changed.
A service point. The service type. String representation of the service point. The representation is service specific; it may be a 'service' Uniform Resource Name as specified by RFC 5031, or may be in some other form. Empty, unused or unknown value is represented by "". The various types of service points a channel might connect to. The channel is not communicating with a service point, or it is not known whether it is communicating with a service point (e.g. an ordinary call). The service point is a generic emergency point. The service point is some kind of counseling service (ie, mental health or child-services counseling).
telepathy-qt-0.9.6.1/spec/Account_Interface_External_Password_Storage.xml0000644000175100017520000000500712530423576030164 0ustar00kaffeinekaffeine00000000000000 Copyright © 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

An interface for Accounts whose passwords are stored externally and SHOULD NOT be stored by either the AccountManager nor any ServerAuthentication handler.

This interface SHOULD only appear on accounts for which the related Connection Manager implements ConnectionManager.Interface.AccountStorage.DRAFT.

Clears any saved password associated with this account.

Indicates whether the account has a saved password or not.

Change notification for this property is provided by the standard D-Bus PropertiesChanged signal.

telepathy-qt-0.9.6.1/spec/Account_Manager.xml0000644000175100017520000003057412530423576022435 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The account manager is a central service used to store account details.

The current account manager is defined to be the process that owns the well-known bus name org.freedesktop.Telepathy.AccountManager on the session bus. This process must export an /org/freedesktop/Telepathy/AccountManager object with the AccountManager interface.

A list of the interfaces provided by the account manager object. A list of the valid (complete, usable) Accounts. Change notification is via AccountValidityChanged. This split between valid and invalid accounts makes it easy to ignore the invalid ones. The only things that should be manipulating invalid accounts are account-editing UIs, which might be able to rescue them. A list of incomplete or otherwise unusable Accounts. Change notification is via AccountValidityChanged. The given account has been removed. This is effectively change notification for the valid and invalid accounts lists. On emission of this signal, the Account indicated will no longer be present in either of the lists. An Account, which must not be used any more. The validity of the given account has changed. New accounts are also indicated by this signal, as an account validity change (usually to True) on an account that did not previously exist. This is effectively change notification for the valid and invalid accounts lists. An Account. True if the account is now valid.

A list of the fully qualified names of properties that can be set via the Properties argument to CreateAccount when an account is created.

Examples of good properties to support here include Icon, Enabled, Nickname, AutomaticPresence, ConnectAutomatically, Supersedes, RequestedPresence and Avatar.

Examples of properties that would make no sense here include Valid, Connection, ConnectionStatus, ConnectionStatusReason, CurrentPresence and NormalizedName.

This property MUST NOT include include the DisplayName and Parameters properties, which are set using separate arguments.

This property MAY include the names of properties that, after account creation, will be read-only: this indicates that the property can be set at account creation but not changed later.

For example, an account manager might support migration tools that use this to preserve the HasBeenOnline property, even though that property is usually read-only.

Request the creation of a new Account. The account manager SHOULD NOT allow invalid accounts to be created. added the Properties argument The name of the connection manager, e.g. "salut". The protocol, e.g. "local-xmpp". The initial value of the new account's DisplayName property. The account manager SHOULD modify this to make it unique if an Account already exists with the same display name, for instance by appending a number or the 'account' parameter. Account manager implementations SHOULD accept an empty string, but account editing user interfaces should avoid passing an empty string for this parameter.

The account creation UI may ask the user for a name for the new account. If the author of the UI chooses not to do this, the account creation UI is better able to suggest a default display name because it has protocol-specific knowledge which the account manager does not.

The account manager always knows the complete list of accounts so it can easily tell whether it should append something to the display name to avoid presenting two identically-named accounts to the user.

Initial parameter values, as would be passed to RequestConnection.

The values of any other properties to be set immediately on the new Account.

Only the properties mentioned in SupportedAccountProperties are acceptable here. In particular, the DisplayName and Parameters properties are never allowed here, since they are set using the other arguments to this method.

Account manager implementations SHOULD support creating accounts with an empty value for this argument.

The new Account.

The Connection_Manager is not installed or does not implement the given Protocol.

The Parameters provided were unacceptable: they might omit a Required parameter, include an unsupported parameter, or have a value of the wrong type.

telepathy-qt-0.9.6.1/spec/Channel.xml0000644000175100017520000006454312530423576020762 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The channel's type. This cannot change once the channel has been created.

For compatibility between older connection managers and newer clients, if this is unavailable or is an empty string, clients MUST use the result of calling GetChannelType.

The GetAll method lets clients retrieve all properties in one round-trip, which is desirable.

When requesting a channel, the request MUST specify a channel type, and the request MUST fail if the specified channel type cannot be supplied.

Common sense.

Extra interfaces provided by this channel. This SHOULD NOT include the channel type and the Channel interface itself, and cannot change once the channel has been created.

For compatibility between older connection managers and newer clients, if this is unavailable, or if this is an empty list and ChannelType is an empty string, clients MUST use the result of calling GetInterfaces instead. If this is an empty list but ChannelType is non-empty, clients SHOULD NOT call GetInterfaces; this implies that connection managers that implement the ChannelType property MUST also implement the Interfaces property correctly.

The GetAll method lets clients retrieve all properties in one round-trip, which is desirable.

When requesting a channel with a particular value for this property, the request must fail without side-effects unless the connection manager expects to be able to provide a channel whose interfaces include at least the interfaces requested.

The handle (a representation for the identifier) of the contact, chatroom, etc. with which this handle communicates. Its type is given by the TargetHandleType property.

This is fixed for the lifetime of the channel, so channels which could potentially be used to communicate with multiple contacts, and do not have an identity of their own (such as a Handle_Type_Room handle), must have TargetHandleType set to Handle_Type_None and TargetHandle set to 0.

Unlike in the telepathy-spec 0.16 API, there is no particular uniqueness guarantee - there can be many channels with the same (channel type, handle type, handle) tuple. This is necessary to support conversation threads in XMPP and SIP, for example.

If this is present in a channel request, it must be nonzero, TargetHandleType MUST be present and not Handle_Type_None, and TargetID MUST NOT be present. Properties from Addressing1 MUST NOT be present.

The channel that satisfies the request MUST either:

  • have the specified TargetHandle property; or
  • have TargetHandleType = Handle_Type_None, TargetHandle = 0, and be configured such that it could communicate with the specified handle in some other way (e.g. have the requested contact handle in its Group interface)

The string that would result from inspecting the TargetHandle property (i.e. the identifier in the IM protocol of the contact, room, etc. with which this channel communicates), or the empty string if the TargetHandle is 0.

The presence of this property avoids the following race condition:

  • New channel C is signalled with target handle T
  • Client calls InspectHandles(CONTACT, [T])
  • Channel C closes, removing the last reference to handle T
  • InspectHandles(CONTACT, [T]) returns an error

If this is present in a channel request, TargetHandleType MUST be present and not Handle_Type_None, and TargetHandle MUST NOT be present. Properties from Addressing1 MUST NOT be present.The request MUST fail with error InvalidHandle, without side-effects, if the requested TargetID would not be accepted by RequestHandles.

The returned channel must be related to the handle corresponding to the given identifier, in the same way as if TargetHandle had been part of the request instead.

Requesting channels with a string identifier saves a round-trip (the call to RequestHandles). It also allows the channel dispatcher to accept a channel request for an account that is not yet connected (and thus has no valid handles), bring the account online, and pass on the same parameters to the new connection's CreateChannel method.

The type of TargetHandle.

If this is omitted from a channel request, connection managers SHOULD treat this as equivalent to Handle_Type_None.

If this is omitted or is Handle_Type_None, TargetHandle and TargetID MUST be omitted from the request.

Request that the channel be closed. This is not the case until the Closed signal has been emitted, and depending on the connection manager this may simply remove you from the channel on the server, rather than causing it to stop existing entirely. Some channels such as contact list channels may not be closed. This channel may never be closed, e.g. a contact list This channel is not currently in a state where it can be closed, e.g. a non-empty user-defined contact group Emitted when the channel has been closed. Method calls on the channel are no longer valid after this signal has been emitted, and the connection manager may then remove the object from the bus at any point. Use the ChannelType property if possible. The interface name Returns the interface name for the type of this channel. Clients SHOULD use the ChannelType property instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip. Use the TargetHandleType and TargetHandle properties if possible. The same as TargetHandleType. The same as TargetHandle. Returns the handle type and number if this channel represents a communication with a particular contact, room or server-stored list, or zero if it is transient and defined only by its contents. Clients SHOULD use the TargetHandle and TargetHandleType properties instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip. Use the Interfaces property if possible. An array of the D-Bus interface names Get the optional interfaces implemented by the channel. Clients SHOULD use the Interfaces property instead, falling back to this method only if necessary. The GetAll method lets clients retrieve all properties in one round-trip. (as stable API)

True if this channel was created in response to a local request, such as a call to Connection.RequestChannel or Connection.Interface.Requests.CreateChannel.

The idea of this property is to distinguish between "incoming" and "outgoing" channels, in a way that doesn't break down when considering special cases like contact lists that are automatically created on connection to the server, or chatrooms that an IRC proxy/bouncer like irssi-proxy or bip was already in.

The reason we want to make that distinction is that UIs for things that the user explicitly requested should start up automatically, whereas for incoming messages and VoIP calls we should first ask the user whether they want to open the messaging UI or accept the call.

If the channel was not explicitly requested (even if it was created as a side-effect of a call to one of those functions, e.g. because joining a Tube in a MUC context on XMPP implies joining that MUC), then this property is false.

For compatibility with older connection managers, clients SHOULD assume that this property is true if they see a channel announced by the Connection.NewChannel signal with the suppress_handler parameter set to true.

In a correct connection manager, the only way to get such a channel is to request it.

Clients MAY additionally assume that this property is false if they see a channel announced by the NewChannel signal with the suppress_handler parameter set to false.

This is more controversial, since it's possible to get that parameter set to false by requesting a channel. However, there's no good reason to do so, and we've deprecated this practice.

In the particular case of the channel dispatcher, the only side-effect of wrongly thinking a channel is unrequested is likely to be that the user has to confirm that they want to use it, so it seems fairly harmless to assume in the channel dispatcher that channels with suppress_handler false are indeed unrequested.

It does not make sense for this property to be in channel requests—it will always be true for channels returned by CreateChannel, and callers of EnsureChannel cannot control whether an existing channel was originally requested locally—so it MUST NOT be accepted.

(as stable API)

The contact who initiated the channel; for instance, the contact who invited the local user to a chatroom, or the contact who initiated a call.

This does not necessarily represent the contact who created the underlying protocol-level construct. For instance, if Rob creates a chatroom, Will joins that chatroom, and Will invites Simon to join it, then Simon will see Will as the InitiatorHandle of the channel representing the chatroom.

The room creator is generally a less useful piece of information than the inviter, is less likely to be available at invitation time (i.e. can't necessarily be an immutable property), and is less likely to be available at all. The creator of a chatroom is not currently available via Telepathy; if added in future, it is likely to be made available as a property on the Chatroom interface (bug 23151).

For channels requested by the local user, this MUST be the value of Connection.SelfHandle at the time the channel was created (i.e. not a channel-specific handle).

On some protocols, the SelfHandle may change (as signalled by Connection.SelfContactChanged), but this property is immutable. Hence, locally-requested channels' InitiatorHandle and InitiatorID may not match the current SelfHandle; Requested can be used to determine whether the channel was created locally.

For channels requested by a remote user, this MUST be their handle. If unavailable or not applicable, this MUST be 0 (for instance, contact lists are not really initiated by anyone in particular, and it's easy to imagine a protocol where chatroom invitations can be anonymous).

For channels with the Group interface, this SHOULD be the same contact who is signalled as the "Actor" causing the self-handle to be placed in the local-pending set.

This SHOULD NOT be a channel-specific handle, if possible.

It does not make sense for this property to be in channel requests - the initiator will always be the local user - so it MUST NOT be accepted.

(as stable API)

The string that would result from inspecting the InitiatorHandle property (i.e. the initiator's identifier in the IM protocol).

The presence of this property avoids the following race condition:

  • New StreamedMedia channel C is signalled with initiator handle I
  • Client calls InspectHandles(CONTACT, [I])
  • Channel C closes, removing the last reference to handle I
  • InspectHandles(CONTACT, [I]) returns an error
  • Client can indicate that a call was missed, but not who called!

It does not make sense for this property to be in channel requests - the initiator will always be the local user - so it MUST NOT be accepted.

All communication in the Telepathy framework is carried out via channel objects which are created and managed by connections. This interface must be implemented by all channel objects, along with one single channel type, such as Channel.Type.ContactList which represents a list of people (such as a buddy list) or Channel.Type.Text which represents a channel over which textual messages are sent and received.

Each Channel's object path MUST start with the object path of its associated Connection, followed by '/'. There MAY be any number of additional object-path components, which clients MUST NOT attempt to parse.

This ensures that Channel object paths are unique, even between Connections and CMs, because Connection object paths are guaranteed-unique via their link to the well-known bus name.

If all connection managers in use are known to comply with at least spec version 0.17.10, then the Connection's object path can even be determined from the Channel's without any additional information, by taking the first 7 components.

Each channel has a number of immutable properties (which cannot vary after the channel has been announced with NewChannels), provided to clients in the ObserveChannels, AddDispatchOperation and HandleChannels methods to permit immediate identification of the channel. This interface contains immutable properties common to all channels. In brief:

  • ChannelType specifies the kind of communication carried out on this channel;
  • TargetHandleType, TargetHandle and TargetID specify the entity with which this channel communicates, such as the other party in a 1-1 call, or the name of a multi-user chat room;
  • InitiatorHandle and InitiatorID specify who created this channel;
  • Requested indicates whether the local user requested this channel, or whether it is an incoming call, a text conversation started by a remote contact, a chatroom invitation, etc.

Other optional Interfaces can be implemented to indicate other available functionality, such as Channel.Interface.Group if the channel contains a number of contacts, Channel.Interface.Password to indicate that a channel may have a password set to require entry, and Channel.Interface.ChatState for typing notifications. The interfaces implemented may not vary after the channel has been created. These other interfaces (along with the interface named by ChannelType) may themselves specify immutable properties to be announced up-front along with the properties on this interface.

Some channels are “anonymousâ€, with TargetHandleType set to None, which indicates that the channel is defined by some other properties. For instance, transient ad-hoc chat rooms may be defined only by their members (as visible through the Group interface), and ContactSearch channels represent a single search attempt for a particular Server.

Specific connection manager implementations may implement channel types and interfaces which are not contained within this specification in order to support further functionality. To aid interoperability between client and connection manager implementations, the interfaces specified here should be used wherever applicable, and new interfaces made protocol-independent wherever possible. Because of the potential for 3rd party interfaces adding methods or signals with conflicting names, the D-Bus interface names should always be used to invoke methods and bind signals.

Previously we guaranteed that, for any handle type other than Handle_Type_None, and for any channel type and any handle, there would be no more than one channel with that combination of channel type, handle type and handle. This guarantee has now been removed in order to accommodate features like message threads. Previously we did not explicitly guarantee that Channels' object paths had the Connection's object path as a prefix.
telepathy-qt-0.9.6.1/spec/Client_Interface_Requests.xml0000644000175100017520000001711312530423576024472 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

This interface can be implemented by a Handler to be notified about requests for channels that it is likely to be asked to handle.

Called by the ChannelDispatcher to indicate that channels have been requested, and that if the request is successful, they will probably be handled by this Handler. The ChannelDispatcher SHOULD only call this method on one handler per request.

This allows the UI to start preparing to handle the channels in advance (e.g. render a window with an "in progress" message), improving perceived responsiveness.

The use of "probably" is because you can't necessarily tell from a channel request which handler will handle particular channels. A reasonable heuristic would be to match the request against the HandlerChannelFilter, and respect the preferred handler (if any).

If the request succeeds and is given to the expected Handler, the Requests_Satisfied parameter to HandleChannels can be used to match the channel to a previous AddRequest call.

This lets the UI direct the channels to the window that it already opened.

If the request fails, the expected handler is notified by the channel dispatcher calling its RemoveRequest method.

This lets the UI close the window or display the error.

The channel dispatcher SHOULD remember which handler was notified, and if the channel request succeeds, it SHOULD dispatch the channels to the expected handler, unless the channels do not match that handler's HandlerChannelFilter. If the channels are not dispatched to the expected handler, the handler that was expected is notified by the channel dispatcher calling its RemoveRequest method with the NotYours error.

Expected handling is for the UI to close the window it previously opened.

Handlers SHOULD NOT return an error from this method; errors returned from this method SHOULD NOT alter the channel dispatcher's behaviour.

Calls to this method are merely a notification.

The ChannelRequest object, which MUST have been returned by CreateChannel or EnsureChannel before this method is called. See those methods for the rationale of this ordering.

Some of the properties of the ChannelRequest. To avoid race conditions, this dictionary MUST NOT include properties whose values could subsequently change. It SHOULD include as many properties as possible, given that constraint.

In particular, the properties Requests, UserActionTime and Account MUST be included, and Hints MUST be included if implemented.

Called by the ChannelDispatcher to indicate that a request previously passed to AddRequest has failed and should be disregarded.

Handlers SHOULD NOT return an error from this method; errors returned from this method SHOULD NOT alter the channel dispatcher's behaviour.

Calls to this method are merely a notification.

The request that failed.

The name of the D-Bus error with which the request failed.

If this is org.freedesktop.Telepathy.Error.NotYours, this indicates that the request succeeded, but all the resulting channels were given to some other handler.

Any message supplied with the D-Bus error.
telepathy-qt-0.9.6.1/spec/Call_Content_Media_Description_Interface_RTP_Header_Extensions.xml0000644000175100017520000000576512530423576033616 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API)

This media description interface provides a method of signalling support for RTP Header Extensions, documented by A General Mechanism for RTP Header Extensions (RFC 5285).

For more details on the General Mechanism for RTP Header Extensions and how to use them, one should refer to RFC 5285.

A struct defining a RTP Header extension. Identifier to be negotiated. Direction in which the Header Extension is negotiated. URI defining the extension. Feedback parameters as a string. Format is defined in the relevant RFC. A list of remote header extensions which are supported.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Group.xml0000644000175100017520000016066512530423576024120 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A structure representing a contact whose attempt to join a group is to be confirmed by the local user using AddMembers. The contact to be added to the group The contact requesting or causing the change The reason for the change A human-readable message from the Actor, or an empty string if there is no message An array of contact handles to invite to the channel A string message, which can be blank if desired

Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.

A message may be provided along with the request, which will be sent to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT GroupFlags to see in which cases this message should be provided.

Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.

Use GetAll on the D-Bus Properties D-Bus interface to get properties including Members, RemotePendingMembers and LocalPendingMembers instead, falling back to this method and GetLocalPendingMembersWithInfo if necessary. array of handles of current members array of handles of local pending members array of handles of remote pending members Returns arrays of all current, local and remote pending channel members. The AddMembers method can be used to add or invite members who are not already in the local pending list (which is always valid). The RemoveMembers method can be used to remove channel members (removing those on the pending local list is always valid). The RemoveMembers method can be used on people on the remote pending list. A message may be sent to the server when calling AddMembers on contacts who are not currently pending members. A message may be sent to the server when calling RemoveMembers on contacts who are currently channel members. A message may be sent to the server when calling AddMembers on contacts who are locally pending. A message may be sent to the server when calling RemoveMembers on contacts who are locally pending. A message may be sent to the server when calling RemoveMembers on contacts who are remote pending.

The members of this group have handles which are specific to this channel, and are not valid as general-purpose handles on the connection. Depending on the channel, it may be possible to check the HandleOwners property or call GetHandleOwners to find the owners of these handles, which should be done if you wish to (e.g.) subscribe to the contact's presence.

Connection managers must ensure that any given handle is not simultaneously a general-purpose handle and a channel-specific handle.

Placing a contact in multiple groups of this type is not allowed and will raise NotAvailable (on services where contacts may only be in one user-defined group, user-defined groups will have this flag). In rooms with channel specific handles (ie Channel_Specific_Handles flag is set), this flag indicates that no handle owners are available, apart from the owner of the SelfHandle. This used to be an important optimization to avoid repeated GetHandleOwners calls, before we introduced the HandleOwners property and HandleOwnersChanged signal. This flag indicates that all the properties introduced in specification 0.17.6 are fully supported. Indicates that MembersChangedDetailed will be emitted for changes to this group's members in addition to MembersChanged. Clients can then connect to the former and ignore emission of the latter. This flag's state MUST NOT change over the lifetime of a channel. If it were allowed to change, client bindings would have to always connect to MembersChanged just in case the flag ever went away (and generally be unnecessarily complicated), which would mostly negate the point of having this flag in the first place. A message may be sent to the server when calling RemoveMembers on the SelfHandle. This would be set for XMPP Multi-User Chat or IRC channels, but not for a typical implementation of streamed media calls.
An integer representing the bitwise-OR of flags on this channel. The user interface can use this to present information about which operations are currently valid. Change notification is via the GroupFlagsChanged signal. For backwards compatibility, clients should fall back to calling GetGroupFlags if Channel_Group_Flag_Properties is not present. The value of the GroupFlags property Returns the value of the GroupFlags property. Use GetAll on the D-Bus Properties D-Bus interface to get properties including GroupFlags instead, falling back to this method if necessary. A map from channel-specific handles to their owners. For backwards compatibility, clients should fall back to calling GetHandleOwners if Channel_Group_Flag_Properties is not present. A nonzero channel-specific handle The global handle that owns the corresponding channel-specific handle, or 0 if this could not be determined A map from channel-specific handles to their owners, including at least all of the channel-specific handles in this channel's members, local-pending or remote-pending sets as keys. Any handle not in the keys of this mapping is not channel-specific in this channel. Handles which are channel-specific, but for which the owner is unknown, MUST appear in this mapping with 0 as owner. Change notification is via the HandleOwnersChanged signal. Emitted whenever the HandleOwners property changes. This signal should not be relied on unless Channel_Group_Flag_Properties is present. Clients should listen to HandleOwnersChangedDetailed instead to get the new identifiers as well. A map from channel-specific handles to their owners, in which the keys include all the handles that were added to the keys of the HandleOwners property, and all the handles in that property whose owner has changed The channel-specific handles that were removed from the keys of the HandleOwners property, as a result of the contact leaving this group in a previous MembersChanged signal

Emitted whenever the HandleOwners property changes.

Clients can assume this signal is emitted by the Connection Manager if the MemberIdentifiers property exists

A map from channel-specific handles to their owners, in which the keys include all the handles that were added to the keys of the HandleOwners property, and all the handles in that property whose owner has changed The channel-specific handles that were removed from the keys of the HandleOwners property, as a result of the contact leaving this group in a previous MembersChanged signal The string identifiers for handles mentioned in this signal, to give clients the minimal information necessary to create contacts without waiting for round-trips. Connection managers MUST include at least the identifiers for all handles in the Added map, and MAY include those from Removed array.
A list of integer handles representing members of the channel An array of integer handles representing the owner handles of the given room members, in the same order, or 0 if the owner is not available If the CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES flag is set on the channel, then the handles of the group members are specific to this channel, and are not meaningful in a connection-wide context such as contact lists. This method allows you to find the owner of the handle if it can be discovered in this channel, or 0 if the owner is not available. Clients should use the HandleOwners property and HandleOwnersChanged signal if Channel_Group_Flag_Properties is present. This channel doesn't have the CHANNEL_SPECIFIC_HANDLES flag, so handles in this channel are globally meaningful and calling this method is not necessary One of the given handles is not a member Returns the To_Be_Added handle (only) for each structure in the LocalPendingMembers property. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present. Returns the LocalPendingMembers property. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present. An array of structs containing:
  • A handle representing the contact requesting channel membership
  • A handle representing the contact making the request, or 0 if unknown
  • The reason for the request: one of the values of Channel_Group_Change_Reason
  • A string message containing the reason for the request if any (or blank if none)
An array of structs containing handles representing contacts requesting channel membership and awaiting local approval with AddMembers. If Channel_Group_Flag_Properties is not present, clients should fall back to using the deprecated GetLocalPendingMembersWithInfo method, or fall back from that to the deprecated GetAllMembers method. The members of this channel. If Channel_Group_Flag_Properties is not set, fall back to calling GetAllMembers. Returns the Members property. Use the Members property, if Channel_Group_Flag_Properties is present. An array of handles representing contacts who have been invited to the channel and are awaiting remote approval. If Channel_Group_Flag_Properties is not set, fall back to calling GetAllMembers. Returns an array of handles representing contacts who have been invited to the channel and are awaiting remote approval. Use the RemotePendingMembers property, if Channel_Group_Flag_Properties is present. Emitted whenever the SelfHandle property changes. This signal should not be relied on unless Channel_Group_Flag_Properties is present. Clients should listen to SelfContactChanged instead to get the new identifier as well. The new value of the SelfHandle property.

Emitted whenever the SelfHandle property changes.

Clients can assume this signal is emitted by the Connection Manager if the MemberIdentifiers property exists.

The new value of the SelfHandle property. The new value of the SelfHandle property's identifier.
The handle for the user on this channel (which can also be a local or remote pending member), or 0 if the user is not a member at all (which is likely to be the case, for instance, on ContactList channels). Note that this is different from the result of Connection.GetSelfHandle on some protocols, so the value of this handle should always be used with the methods of this interface. For backwards compatibility, clients should fall back to calling GetSelfHandle if Channel_Group_Flag_Properties is not present. The string identifiers for handles mentioned in this channel, to give clients the minimal information necessary to create contacts without waiting for round-trips. Connection managers MUST include at least the identifiers for SelfHandle, Members, LocalPendingMembers (and their actors if any), RemotePendingMembers and HandleOwners. Returns the value of the SelfHandle property. Clients should retrieve the SelfHandle property using GetAll instead, if Channel_Group_Flag_Properties is present. A bitwise OR of the flags which have been set A bitwise OR of the flags which have been cleared Emitted when the flags as returned by GetGroupFlags are changed. The user interface should be updated as appropriate.

The reason for a set of handles to move to one of Members, LocalPendingMembers or RemotePendingMembers, or to be removed from the group. A client may supply a reason when attempting to remove members from a group with RemoveMembersWithReason, and reasons are supplied by the CM when emitting MembersChanged and MembersChangedDetailed. Some reason codes have different meanings depending on the Actor in a MembersChanged signal.

No reason was provided for this change.

In particular, this reason SHOULD be used when representing users joining a named chatroom in the usual way, users leaving a chatroom by their own request, and normal termination of a StreamedMedia call by the remote user.

If the SelfHandle is removed from a group for this reason and the actor is not the SelfHandle, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Terminated.

If the SelfHandle is removed from a group for this reason and the actor is also the SelfHandle, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Cancelled.

The change is due to a user going offline. Also used when user is already offline, but this wasn't known previously.

If a one-to-one StreamedMedia call fails because the contact being called is offline, the connection manager SHOULD indicate this by removing both the SelfHandle and the other contact's handle from the Group interface with reason Offline.

For 1-1 calls, the call terminates as a result of removing the remote contact, so the SelfHandle should be removed at the same time as the remote contact and for the same reason.

If a handle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Offline.

The change is due to a kick operation.

If the SelfHandle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Channel.Kicked.

The change is due to a busy indication.

If a one-to-one StreamedMedia call fails because the contact being called is busy, the connection manager SHOULD indicate this by removing both the SelfHandle and the other contact's handle from the Group interface with reason Busy.

For 1-1 calls, the call terminates as a result of removing the remote contact, so the SelfHandle should be removed at the same time as the remote contact and for the same reason.

If the SelfHandle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Busy.

The change is due to an invitation. This reason SHOULD only be used when contacts are added to the remote-pending set (to indicate that the contact has been invited) or to the members (to indicate that the contact has accepted the invitation). Otherwise, what would it mean?

The change is due to a kick+ban operation.

If the SelfHandle is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.Channel.Banned.

The change is due to an error occurring.

The change is because the requested contact does not exist.

For instance, if the user invites a nonexistent contact to a chatroom or attempts to call a nonexistent contact, this could be indicated by the CM adding that contact's handle to remote-pending for reason None or Invited, then removing it for reason Invalid_Contact. In the case of a 1-1 StreamedMedia call, the CM SHOULD remove the self handle from the Group in the same signal.

For 1-1 calls, the call terminates as a result of removing the remote contact, so the SelfHandle should be removed at the same time as the remote contact and for the same reason.

If a contact is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.DoesNotExist.

The change is because the requested contact did not respond.

If a one-to-one StreamedMedia call fails because the contact being called did not respond, or the local user did not respond to an incoming call, the connection manager SHOULD indicate this by removing both the SelfHandle and the other contact's handle from the Group interface with reason No_Answer.

Documenting existing practice.

If a contact is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.NoAnswer.

The change is because a contact's unique identifier changed. There must be exactly one handle in the removed set and exactly one handle in one of the added sets. The Renamed signal on the Renaming interface will have been emitted for the same handles, shortly before this MembersChanged signal is emitted.

The change is because there was no permission to contact the requested handle.

If a contact is removed from a group for this reason, the equivalent D-Bus error is org.freedesktop.Telepathy.Error.PermissionDenied.

If members are removed with this reason code, the change is because the group has split into unconnected parts which can only communicate within themselves (e.g. netsplits on IRC use this reason code).

If members are added with this reason code, the change is because unconnected parts of the group have rejoined. If this channel carries messages (e.g. Text or Tubes channels) applications must assume that the contacts being added are likely to have missed some messages as a result of the separation, and that the contacts in the group are likely to have missed some messages from the contacts being added.

Note that from the added contacts' perspective, they have been in the group all along, and the contacts we indicate to be in the group (including the local user) have just rejoined the group with reason Separated. Application protocols in Tubes should be prepared to cope with this situation.

The SelfHandle SHOULD NOT be removed from channels with this reason.

A string message from the server, or blank if not A list of members added to the channel A list of members removed from the channel A list of members who are pending local approval A list of members who are pending remote approval The contact handle of the person who made the change, or 0 if not known A reason for the change

Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. There may also be a message from the server regarding this change, which may be displayed to the user if desired.

All channel-specific handles that are mentioned in this signal MUST be represented in the value of the HandleOwners property. In practice, this will mean that HandleOwnersChanged is emitted before emitting a MembersChanged signal in which channel-specific handles are added, but that it is emitted after emitting a MembersChanged signal in which channel-specific handles are removed.

See StreamedMedia for an overview of how group state changes are used to indicate the progress of a call.

A map from handles to the corresponding normalized string identifier. A nonzero handle The same string that would be returned by InspectHandles for this handle. A list of members added to the channel A list of members removed from the channel A list of members who are pending local approval A list of members who are pending remote approval

Information about the change, which may include the following well-known keys:

actor (u — Contact_Handle)
The contact handle of the person who made the change; 0 or omitted if unknown or not applicable.
change-reason (u — Channel_Group_Change_Reason)
A reason for the change.
contact-ids (a{us} — Handle_Identifier_Map)

The string identifiers for handles mentioned in this signal, to give clients the minimal information necessary to react to the event without waiting for round-trips. Connection managers SHOULD include the identifiers for members added to the group and for the actor (if any); they MAY omit the identifiers for handles which have been removed from the group.

On IRC, an event such as a netsplit could cause the vast majority of a channel to leave. Given that clients should already know the identifiers of a channel's members, including potentially hundreds of strings in the netsplit signal is unnecessary.

Clients MUST NOT assume that the presence or absence of a handle in this mapping is meaningful. This mapping is merely an optimization for round-trip reduction, and connection managers MAY add additional handles, omit some handles, or omit the mapping completely.

message (s)
A string message from the server regarding the change
error (s — DBus_Error_Name)
A (possibly implementation-specific) DBus error describing the change, providing more specific information than the Channel_Group_Change_Reason enum allows. This MUST only be present if it is strictly more informative than 'change-reason'; if present, 'change-reason' MUST be set to the closest available reason. A SIP connection manager might want to signal "402 Payment required" as something more specific than Error or Permission_Denied so that a SIP-aware UI could handle it specially; including a namespaced error permits this to be done without Channel_Group_Change_Reason being extended to encompass every error any CM ever wants to report.
debug-message (s)
Debugging information on the change. SHOULD NOT be shown to users in normal circumstances.

Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. This signal provides a superset of the information provided by MembersChanged; if the channel's GroupFlags contains Members_Changed_Detailed, then clients may listen exclusively to this signal in preference to that signal.

All channel-specific handles that are mentioned in this signal MUST be represented in the value of the HandleOwners property. In practice, this will mean that HandleOwnersChanged is emitted before emitting a MembersChangedDetailed signal in which channel-specific handles are added, but that it is emitted after emitting a MembersChangedDetailed signal in which channel-specific handles are removed.

See StreamedMedia for an overview of how group state changes are used to indicate the progress of a call.

An array of contact handles to remove from the channel A string message, which can be blank if desired

Requests the removal of contacts from a channel, reject their request for channel membership on the pending local list, or rescind their invitation on the pending remote list.

If the SelfHandle is in a Group, it can be removed via this method, in order to leave the group gracefully. This is the recommended way to leave a chatroom, close or reject a StreamedMedia call, and so on.

Accordingly, connection managers SHOULD support doing this, regardless of the value of GroupFlags. If doing so fails with PermissionDenied, this is considered to a bug in the connection manager, but clients MUST recover by falling back to closing the channel with the Close method.

Removing any contact from the local pending list is always allowed. Removing contacts other than the SelfHandle from the channel's members is allowed if and only if Channel_Group_Flag_Can_Remove is in the GroupFlags, while removing contacts other than the SelfHandle from the remote pending list is allowed if and only if Channel_Group_Flag_Can_Rescind is in the GroupFlags.

A message may be provided along with the request, which will be sent to the server if supported. See the Channel_Group_Flag_Message_Remove, Channel_Group_Flag_Message_Depart, Channel_Group_Flag_Message_Reject and Channel_Group_Flag_Message_Rescind GroupFlags to see in which cases this message should be provided.

An array of contact handles to remove from the channel A string message, which can be blank if desired A reason for the change As RemoveMembers, but a reason code may be provided where appropriate. The reason code may be ignored if the underlying protocol is unable to represent the given reason. The provided reason code was invalid.

Interface for channels which have multiple members, and where the members of the channel can change during its lifetime. Your presence in the channel cannot be presumed by the channel's existence (for example, a channel you may request membership of but your request may not be granted).

This interface implements three lists: a list of current members (Members), and two lists of local pending and remote pending members (LocalPendingMembers and RemotePendingMembers, respectively). Contacts on the remote pending list have been invited to the channel, but the remote user has not accepted the invitation. Contacts on the local pending list have requested membership of the channel, but the local user of the framework must accept their request before they may join. A single contact should never appear on more than one of the three lists. The lists are empty when the channel is created, and the MembersChanged signal (and, if the channel's GroupFlags contains Members_Changed_Detailed, the MembersChangedDetailed signal) should be emitted when information is retrieved from the server, or changes occur.

If the MembersChanged or MembersChangedDetailed signal indicates that the SelfHandle has been removed from the channel, and the channel subsequently emits Closed, clients SHOULD consider the details given in the MembersChanged or MembersChangedDetailed signal to be the reason why the channel closed.

Addition of members to the channel may be requested by using AddMembers. If remote acknowledgement is required, use of the AddMembers method will cause users to appear on the remote pending list. If no acknowledgement is required, AddMembers will add contacts to the member list directly. If a contact is awaiting authorisation on the local pending list, AddMembers will grant their membership request.

Removal of contacts from the channel may be requested by using RemoveMembers. If a contact is awaiting authorisation on the local pending list, RemoveMembers will refuse their membership request. If a contact is on the remote pending list but has not yet accepted the invitation, RemoveMembers will rescind the request if possible.

It should not be presumed that the requester of a channel implementing this interface is immediately granted membership, or indeed that they are a member at all, unless they appear in the list. They may, for instance, be placed into the remote pending list until a connection has been established or the request acknowledged remotely.

If the local user joins a Group channel whose members or other state cannot be discovered until the user joins (e.g. many chat room implementations), the connection manager should ensure that the channel is, as far as possible, in a consistent state before adding the local contact to the members set; until this happens, the local contact should be in the remote-pending set. For instance, if the connection manager queries the server to find out the initial members list for the channel, it should leave the local contact in the remote-pending set until it has finished receiving the initial members list.

If the protocol provides no reliable way to tell whether the complete initial members list has been received yet, the connection manager should make a best-effort attempt to wait for the full list (in the worst case, waiting for a suitable arbitrary timeout) rather than requiring user interfaces to do so on its behalf.

telepathy-qt-0.9.6.1/spec/Connection_Interface_IRC_Command1.xml0000644000175100017520000000520012530423576025666 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2013 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The command followed by its arguments.

Send an arbitrary IRC command to the server.

For example, an IRC client receiving /bip blreset from the user might call this method with BIP blreset as argument which will send BIP blreset to the server.

The command is supplied in UTF-8 (because strings on D-Bus are always UTF-8). It is transcoded into the connection's configured character set, if different, before sending to the server.

The connection manager MAY raise this error for commands that have a more appropriate D-Bus API.
An interface to send arbitrary IRC commands to the server.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Location.xml0000644000175100017520000004750112530423576025314 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Ltd. Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface on connections to support protocols which allow users to publish their current geographical location, and subscribe to the current location of their contacts.

This interface is geared strongly towards automatic propagation and use of this information, so focuses on latitude, longitude and altitude which can be determined by GPS, although provision is also included for an optional human-readable description of locations. All co-ordinate information is required to be relative to the WGS84 datum.

The information published through this interface is intended to have the same scope as presence information, so will normally be made available to those individuals on the user's "publish" contact list. Even so, user interfaces should not automatically publish location information without the consent of the user, and it is recommended that an option is made available to reduce the accuracy of the reported information to allow the user to maintain their privacy.

Location information is represented using the terminology of XMPP's XEP-0080 or the XEP-0080-derived Geoclue API where possible.

Clients of this interface SHOULD register an interest in it by calling Connection.AddClientInterest with an argument containing the name of this interface, before calling any Location method. If they do so, they SHOULD also call Connection.RemoveClientInterest after use to allow the CM to release resources associated with this interface.

A user's location, represented as an extensible mapping.

Civic addresses are represented by the following well-known keys (all of which have string values), which should be kept in sync with those used in XEP-0080 and in the Geoclue project:

  • countrycode - s: an ISO-3166-1 alpha-2 (two-letter) country code, e.g. "us", "gb", "fr"
  • country - s: a country name in unspecified locale, e.g. "USA"
  • region - s: an administrative region of the nation, such as a state or province
  • locality - s: a locality within the administrative region, such as a town or city
  • area - s: a named area such as a campus or neighborhood
  • postalcode - s: a code used for postal delivery
  • street - s: a thoroughfare within the locality, or a crossing of two thoroughfares

The following address keys are defined in XEP-0080 but not by Geoclue, and are also allowed:

  • building - s: a specific building on a street or in an area
  • floor - s: a particular floor in a building
  • room - s: a particular room in a building
  • text - s: any more specific information, e.g. "Northwest corner of the lobby"
  • description - s: A natural-language name for or description of the location, e.g. "Bill's house"
  • uri - s: a URI representing the location or pointing to more information about it

Since the previous strings have data intended to be read by users, the language used should be stated using:

  • language - s: a specific language or locale of location information in a format compatible to RFC 4646. Note that UTF-8 is the only allowed encoding, e.g. "en" or "fr-CA".

Positions are represented by the following well-known keys:

  • lat - d: latitude in decimal degrees north, -90 to +90, relative to the WGS-84 datum This is from XEP-0080; the XEP allows use of a different datum, but recommends this one. We enforce sanity by requiring a consistent datum: a minimal compliant implementation of this specification in terms of XEP-0080 would simply ignore the <lat> and <lon> elements if <datum> exists and has a value other than WGS-84, while an advanced implementation might correct for the different datum.
  • lon - d: Longitude in decimal degrees east, -180 to +180, relative to the WGS-84 datum Same rationale as 'lat'
  • alt - d: altitude in metres above sea level (negative if below sea level) This is from XEP-0080
  • accuracy - d: horizontal position error in metres if known This is from XEP-0080

Velocities are represented by the following well-known keys:

  • speed - d: speed in metres per second This is from XEP-0080
  • bearing - d: direction of movement in decimal degrees, where North is 0 and East is 90 This is from XEP-0080, and is equivalent to the struct field called "direction" in GeoClue

Other well-known keys:

  • timestamp - x (Unix_Timestamp64): the time that the contact was at this location, in seconds since 1970-01-01T00:00:00Z (i.e. the beginning of 1970 in UTC) XEP-0080 uses an ISO 8601 string for this, but a number of seconds since the epoch is probably easier to work with.
The value corresponding to the well-known key.
A map from contacts to their locations. A contact The contact's location, which MAY be empty to indicate that the contact's location is unknown

Return the current locations of the given contacts, if they are already known. If any of the given contacts' locations are not known, request their current locations, but return immediately without waiting for a reply; if a reply with a non-empty location is later received for those contacts, the LocationUpdated signal will be emitted for them.

This method is appropriate for "lazy" location finding, for instance displaying the location (if available) of everyone in your contact list.

For backwards compatibility, if this method is called by a client whose "interest count" for this interface, as defined by Connection.AddClientInterest, is zero, the Connection SHOULD behave as if AddClientInterest had been called for this interface just before that method call. Clients that do not explicitly call AddClientInterest SHOULD NOT call Connection.RemoveClientInterest either.

The contacts whose locations should be returned or signalled. The contacts' locations, if already known. Contacts whose locations are not already known are omitted from the mapping; contacts known to have no location information appear in the mapping with an empty Location dictionary.
Return the current location of the given contact. If necessary, make a request to the server for up-to-date information, and wait for a reply. This method is appropriate for use in a "Contact Information..." dialog; it can be used to show progress information (while waiting for the method to return), and can distinguish between various error conditions. The contact whose location should be returned. The contact's location. It MAY be empty, indicating that no location information was found. The requested contact does not allow the local user to see their location information. Emitted when a contact's location changes or becomes known. The contact The contact's location, or empty to indicate that nothing is known about the contact's location. Set the local user's own location. The location to advertise. If the user wants to obscure their exact location by reducing the precision or accuracy, clients MUST do this themselves, rather than relying on the connection manager to do so. Clients that interact with more than one connection SHOULD advertise the same reduced-accuracy location to all of them, so that contacts cannot obtain an undesirably accurate location by assuming that random errors have been added and averaging the locations advertised on multiple connections. The user's server does not support publishing their own location. If it is possible to determine this ahead of time, the Can_Set flag will not be set in SupportedLocationFeatures. The types of access control that are supported by this connection. The current access control mechanism and settings for this connection. Before publishing location for the first time, if this has not been set by a client, implementations SHOULD set it to be as restrictive as possible (an empty whitelist, if supported). Indicates the Location features supported by this connection. This property MAY be undefined before Status becomes Connected, but MUST remain constant thereafter. Indicates that setting your own location with SetLocation is supported on this connection. Flags describing the Location features which may be supported on any given connection.

The same mapping that would be returned by GetLocations for this contact. Omitted from the result if the contact's location is not known.

For backwards compatibility, if contact attributes that include this interface are requested by a client whose "interest count" for this interface, as defined by Connection.AddClientInterest, is zero, the Connection SHOULD behave as if AddClientInterest was called for this interface just before that request. Clients that do not explicitly call AddClientInterest SHOULD NOT call Connection.RemoveClientInterest either.

telepathy-qt-0.9.6.1/spec/all.xml0000644000175100017520000003333612530423576020156 0ustar00kaffeinekaffeine00000000000000 Telepathy D-Bus Interface Specification 0.27.3 Copyright © 2005-2012 Collabora Limited Copyright © 2005-2011 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A Connection Manager is a factory for connections.

Connections represent active protocol sessions. There are a number of core interfaces which all connections should implement, and a number of optional interfaces which provide various functionality related to contacts and to the connection itself.

On protocols that support contact lists, these interface expose the user's contact lists, along with presence subscription information, contact list groups (if supported), and the ability to block and unblock contacts (if supported).

These optional Connection interfaces expose metadata about contacts on this connection—from their current presence through to the type of client they're connected with—and allow the local user to publish such metadata back to their contacts.

These optional Connection interfaces expose protocol-specific features, and allow configuring the running connection.

A Channel is used by Telepathy to exchange data between local applications and remote servers. A given connection will have many channels, each one represented by a D-Bus object.

Each Channel has a type, represented by a D-Bus interface, and may implement one or more additional interfaces from the list of channel interfaces below.

Each Channel implements one of the following types:

A Channel may also implement one or more of the following interfaces, depending on its type. Some interfaces are only applicable to particular channel types, while others may (in principle) appear on any type of channel.

These interfaces may only appear on channels of type Text.

These interfaces are only applicable to channels of type StreamedMedia, with the exception of the Hold and DTMF interfaces, which may also appear on Call1 channels.

These interfaces provide functionality for ad-hoc conference calls and chat rooms. They are primarily intended for Text, StreamedMedia and Call1 channels, but may also appear on other types of channel.

A set of objects to be used for authentication purposes, such as TLS certificates or handshakes for negotiating end-to-end security.

These interfaces are used when a Call1 channel doesn't have HardwareStreaming to implement the media streaming aspects of a call.

The Account Manager is a desktop service that provides account configuration and can manage the connection managers. In general, clients will use the account manager to find out about instant messaging accounts and their associated connections.

The Channel Dispatcher is a desktop service whose purpose is to dispatch incoming Telepathy Channels to the appropriate client (e.g. incoming text chat, file transfer, tubes, etc.).

Clients should implement one or more of these interfaces to be able to handle channels coming in from the Channel Dispatcher.

telepathy-qt-0.9.6.1/spec/template.xml0000644000175100017520000000250512530423576021213 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

Foo.

telepathy-qt-0.9.6.1/spec/Call_Stream_Endpoint.xml0000644000175100017520000003764612530423576023444 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009-2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

This object represents an endpoint for a stream. In a one-to-one call, there will be one (bidirectional) stream per content and one endpoint per stream (as there is only one remote contact). In a multi-user call there is a stream for each remote contact and each stream has one endpoint as it refers to the one physical machine on the other end of the stream.

The multiple endpoint use case appears when SIP call forking is used. Unlike jingle call forking (which is just making multiple jingle calls to different resources appear as one call), SIP call forking is actually done at the server so you have one stream to the remote contact and then and endpoint for each SIP client to be called.

The ICE credentials used for all candidates. If each candidate has different credentials, then this property SHOULD be ("", ""). Per-candidate credentials are set in the Candidate's Candidate_Info a{sv}. The username set. The password set. Emitted when the remote ICE credentials for the endpoint are set. If each candidate has different credentials, then this signal will never be fired. A list of candidates for this endpoint. Emitted when remote candidates are added to the RemoteCandidates property. The candidates that were added. A Pair of candidates. The local candidate. The remote candidate. Emitted when a candidate is selected for use in the stream by the controlling side of an ICE session. The controlled side should call AcceptSelectedCandidatePair or RejectSelectedCandidatePair when connectivity checks have either succeeded or failed for this candidate pair. See also: SelectedCandidatePairs. The local candidate that has been selected. The remote candidate that has been selected.

The candidates that have been selected for use to stream packets to the remote contact for each component of the stream. Change notification is given via the the CandidatePairSelected signal.

Note to client implementors (from RFC 5245 section 9.2.2.3):

If at least one of the pairs is In-Progress, the agent SHOULD wait for those checks to complete, and as each completes, redo the processing in this section until there are no losing pairs.

Also note that some or all of the local candidates in this list may represent a peer-reflexive candidate that do not appear in LocalCandidates.

See RFC 5245 Appendix B.6. for more details about why this is.

Update the entry in SelectedCandidatePairs for a particular component, and signal it to the remote side.

This method should only be called by the controlling side of an ICE session. See CandidatePairSelected for details.

In the SDP offer/answer model, this signalling will take place as generating an updated offer. Note that updates may be queued up until information about all components of all streams is gathered.

The local candidate that has been selected. The remote candidate that has been selected.
Represents the state of ICE negotiation for a single component of a stream to an endpoint. Candidate gathering and connectivity checks are in progress. The streaming implementation has found at least one working candidate pair. It is possible to send media at this point, but the controlling side has yet to negotiate the final candidates for use in this call. This component of the stream is connected, and an updated offer has been sent and accepted (finalising the candidates to be used for the call). This should be set by the CM in response to AcceptSelectedCandidatePair. The streaming implementation has tried connecting to all of the available candidates and none of them have connected. This is distinct from Failed, because the CM might be able to provide more candidates later (more likely in XMPP than SIP). The CM and streaming implementation are in agreement that it is impossible to connect to this endpoint. This value should only be set by the CM. The state of ICE negotiation with this Endpoint for each component of the stream. Emitted when the EndpointState property changes. The component whose state has changed. The new state of this component. Change the EndpointState of the endpoint. The component whose state needs updating. The new state of this component. Called in response to CandidatePairSelected if/when this candidate pair is known to have passed its connectivity checks. The local candidate that has been selected. The remote candidate that has been selected. Called in response to CandidatePairSelected if/when this candidate pair is known to have failed its connectivity checks. The local candidate that has been selected. The remote candidate that has been selected. The transport type for the stream endpoint. This can be different from the transport of the Stream in the case where of falling back from ICE to Raw_UDP.

The local side is taking the controlling role (as defined by ICE RFC 5245). Change notification is given via the ControllingChanged signal.

In ICE, the Caller is normally in controlling mode (and the Callee in controlled-mode), except if the Caller is doing ICE-Lite, in which case it's reversed. The Controlling side is responsible for selecting nominated pairs, and generating updated offers upon conclusion of ICE.
Set whether the local side is taking the Controlling role. Note that if there are multiple endpoints (e.g. SIP call forking) it may be the case that all endpoints need to have the same controlling/controlled orientation. The new value of Controlling. The value of Controlling has changed. The new value of Controlling. The Remote side is an ICE Lite endpoint. (The local side is assumed to always be an ICE Full implementation.)
telepathy-qt-0.9.6.1/spec/Connection_Interface_Capabilities.xml0000644000175100017520000003066512530423576026140 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

An interface for connections where it is possible to know what channel types may be requested before the request is made to the connection object. Each capability represents a commitment by the connection manager that it will ordinarily be able to create a channel when given a request with the given type and handle.

Capabilities pertain to particular contact handles, and represent activities such as having a text chat or a voice call with the user. The activities are represented by the D-Bus interface name of the channel type for that activity.

The generic capability flags are defined by Connection_Capability_Flags.

In addition, channel types may have type specific capability flags of their own, which are described in the documentation for each channel type.

This interface also provides for user interfaces notifying the connection manager of what capabilities to advertise for the user. This is done by using the AdvertiseCapabilities method, and deals with the interface names of channel types and the type specific flags pertaining to them which are implemented by available client processes.

Previously, this interface also expressed capabilities of the connection itself, indicating what sorts of channels could be requested (for instance, the ability to open chatroom lists or chatrooms). However, this was never very well-defined or consistent, and as far as we know it was never implemented correctly. This usage is now deprecated. Client implementations SHOULD use ContactCapabilities instead. Connection managers implementing Capabilities MUST implement ContactCapabilities too. The given channel type and handle can be given to RequestChannel to create a new channel of this type. The given contact can be invited to an existing channel of this type. A pair (channel type, type-specific flags) as passed to AdvertiseCapabilities on the Capabilities interface. A struct (contact handle, channel type, generic flags, type-specific flags) representing a capability posessed by a contact, as returned by GetCapabilities on the Capabilities interface. A struct (contact handle, channel type, old generic flags, new generic flags, old type-specific flags, new type-specific flags) representing a change to one of a contact's capabilities, as seen in the CapabilitiesChanged signal on the Capabilities interface. An array of structures containing:
  • a string channel type
  • a bitwise OR of type specific capability flags
An array of D-Bus interface names of channel types to remove An array of structures describing the current capabilities containing:
  • a string channel type
  • a bitwise OR of type specific capability flags

Used by user interfaces to indicate which channel types they are able to handle on this connection. Because these may be provided by different client processes, this method accepts channel types to add and remove from the set already advertised on this connection. The type of advertised capabilities (create versus invite) is protocol-dependent and hence cannot be set by the this method. In the case of a client adding an already advertised channel type but with new channel type specific flags, the connection manager should simply add the new flags to the set of advertised capabilities.

Upon a successful invocation of this method, the CapabilitiesChanged signal will be emitted for the user's own handle ( Connection.GetSelfHandle) by the connection manager to indicate the changes that have been made. This signal should also be monitored to ensure that the set is kept accurate - for example, a client may remove capabilities or type specific capability flags when it exits which are still provided by another client.

On connections managed by the ChannelDispatcher, this method SHOULD NOT be used by clients other than the ChannelDispatcher itself.

An array of structures containing:
  • an integer handle representing the contact
  • a string channel type
  • a bitwise OR of the contact's old generic capability flags
  • a bitwise OR of the contact's new generic capability flags
  • a bitwise OR of the contact's old type specific capability flags
  • a bitwise OR of the contact's new type specific capability flags

Announce that there has been a change of capabilities on the given handle.

If the handle is zero, the capabilities refer to the connection itself, in some poorly defined way. This usage is deprecated and clients should ignore it.

An array of contact handles for this connection.

This may include zero, which originally meant a query for capabilities available on the connection itself. This usage is deprecated; clients SHOULD NOT do this, and connection managers SHOULD proceed as though zero had not been present in this list.

An array of structures containing:
  • an integer handle representing the contact
  • a string channel type
  • a bitwise OR of generic capability flags for the type
  • a bitwise OR of type specific capability flags for the type
Returns an array of capabilities for the given contact handles. The handle does not represent a contact and is not zero

The same structs that would be returned by GetCapabilities (all of them will redundantly have the contact's handle as the first member). Omitted from the result if the contact's capabilities are not known; present in the result as an empty array if the contact is known to have no capabilities at all.

telepathy-qt-0.9.6.1/spec/Client_Observer.xml0000644000175100017520000005114112530423576022465 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

Observers monitor the creation of new channels. This functionality can be used for things like message logging. All observers are notified simultaneously.

Observers SHOULD NOT modify the state of a channel except via user interaction.

We want Observer UIs for file transfer channels (a progress bar for the transfer) to be able to have a Cancel button.

Observers MUST NOT carry out actions that exactly one process must take responsibility for (e.g. acknowledging Text messages, or carrying out the actual transfer in a file transfer channel).

Since arbitrarily many observers can be activated for each channel, it would not make sense for observers to do things that can only be done by one process (acknowledging Text messages, carrying out streaming for StreamedMedia channels, doing the actual data transfer for file transfers, setting up the out-of-band connection for Tubes). The Handler is responsible for such tasks.

Handlers MAY, of course, delegate responsibility for these tasks to other processes (including those run as observers), but this MUST be done explicitly via a request from the Handler to the Observer.

Whenever a collection of new channels is signalled, the channel dispatcher will notify all running or activatable observers whose ObserverChannelFilter property (possibly as cached in the .client file) indicates that they are interested in some of the channels.

Observers are activated for all channels in which they have registered an interest - incoming, outgoing or automatically created - although of course the ObserverChannelFilter property can be set to filter on the Requested property.

Because it might take time for an observer to become ready (for instance, a Text logger needs to wait until pending messages have been downloaded), the channel dispatcher must wait (up to some timeout) for all observers to return from ObserveChannels before letting anything destructive happen. Destructive things (e.g. acknowledging messages) are defined to be done by handlers, therefore HandleWith and Claim aren't allowed to succeed until all observers are ready.

Non-interactive approvers (for instance, to shoot down spam IM channels before the tray icon blinks at the user, or to grab a SASL channel before the user is prompted for a password) can be implemented as observers by following these steps:

  1. ObserveChannels() is called on the observer.
  2. The observer calls Claim() on the CDO.
  3. The observer then returns from ObserveChannels().
  4. Claim will return successfully if the channels were successfully claimed, or failure if someone else got there first.

Non-interactive approvers implemented as observers SHOULD also set DelayApprovers to TRUE so that other Approvers are not called on until all observers return from ObserveChannels. This gives non-interactive approvers a chance to claim the channels before Approvers are called.

A specification of the channels in which this observer is interested. The ObserveChannels method should be called by the channel dispatcher whenever any of the new channels in a NewChannels signal match this description.

Only certain D-Bus types have useful semantics for matching like this, so only certain types are allowed:

Integers of all sizes, including byte (y, n, q, i, u, x, t)
Matched by numeric value, regardless of type (e.g. 42 as a 16-bit signed integer 'n' is considered equal to 42 as a 32-bit unsigned integer 'u')
Booleans (b)
Matched by equality in the obvious way; not considered equal to any other type
Strings (s)
Matched by equality in the obvious way; not considered equal to any other type
Object paths (o)
Matched by equality in the obvious way; not considered equal to any other type

This property never changes while the observer process owns its Client bus name. For activatable processes, the filter can change due to an upgrade - the channel dispatcher SHOULD observe changes to .client files using a mechanism like inotify.

Not allowing this property to change is a simplification, particularly for activatable processes (we reject the possibility that a process with a .client file, when activated, has a filter that differs from what its .client file said).

If an Observer wants to add extra channels to its list of interests at runtime, it can register an additional Client bus name (for instance, the org.freedesktop.Telepathy.Client.Empathy process with unique name :1.42 could additionally register org.freedesktop.Telepathy.Client.Empathy._1_42) with additional filters. To remove those filters, it can release the bus name; it could even re-claim the bus name immediately, with different filters.

The same principle is applied to Approvers and Handlers.

For observers that have a .client file, the channel dispatcher may discover this property from keys of the form "propertyname type", in groups in the .client file whose name is the name of this interface followed by .ObserverChannelFilter, a space and an ASCII decimal number starting from 0.

Values in the .client file are encoded in exactly the same way as the default-p keys in .manager files, as described in the ConnectionManager interface (but note that not all types supported in .manager files can appear in .client files).

For instance, a .client file for an observer that is only interested in Text channels, with CONTACT or ROOM handles, that were requested by a local client:

[org.freedesktop.Telepathy.Client]
Interfaces=org.freedesktop.Telepathy.Client.Observer;

[org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter 0]
org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.TargetHandleType u=1
org.freedesktop.Telepathy.Channel.Requested b=true

[org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter 1]
org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.TargetHandleType u=2
org.freedesktop.Telepathy.Channel.Requested b=true
When using telepathy-mission-control, version 5.4.0 or later is needed for this property to be useful.

If true, upon the startup of this observer, ObserveChannels will be called for every already existing channel matching its ObserverChannelFilter

When an activatable client having this property disappears from the bus and there are channels matching its ObserverChannelFilter, ObserveChannels will be called immediately to reactivate it again. Such clients should specify this property in their .client file as follows:

[org.freedesktop.Telepathy.Client.Observer]
Recover=true

This means that if an activatable Observer crashes, it will be restarted as soon as possible; while there is an unavoidable possibility that it will miss some events during this process (particularly Text messages), this window of event loss is kept to a minimum.

Non-activatable observers can't take advantage of this mechanism, but setting this property on a non-activatable observer does allow it to "catch up" on channels that are currently active at the time that it starts up.

When the ObserveChannels method is called due to observer recovery, the Observer_Info dictionary will contain one extra item mapping the key "recovering" to True.

Called by the channel dispatcher when channels in which the observer has registered an interest are announced in a NewChannels signal.

If the same NewChannels signal announces some channels that match the filter, and some that do not, then only a subset of the channels (those that do match the filter) are passed to this method.

If the channel dispatcher will split up the channels from a single NewChannels signal and dispatch them separately (for instance because no installed Handler can handle all of them), it will call ObserveChannels several times.

The observer MUST NOT return from this method call until it is ready for a handler for the channel to run (which may change the channel's state).

The channel dispatcher must wait for observers to start up, to avoid the following race: text channel logger (observer) gets ObserveChannels, text channel handler gets HandleChannels channel handler starts up faster and acknowledges messages, logger never sees those messages.

The channel dispatcher SHOULD NOT change its behaviour based on whether this method succeeds or fails: there are no defined D-Bus errors for this method, and if it fails, this only indicates that an Observer is somehow broken.

The expected error response in the channel dispatcher is to log a warning, and otherwise continue as though this method had succeeded.

The Account with which the channels are associated. The well-known bus name to use is that of the AccountManager. The Connection with which the channels are associated. The well-known bus name to use can be derived from this object path by removing the leading '/' and replacing all subsequent '/' by '.'. The Channels and their properties. Their well-known bus names are all the same as that of the Connection.

The path to the ChannelDispatchOperation for these channels, or the special value '/' if there is no ChannelDispatchOperation (because the channels were requested, not incoming).

If the Observer calls Claim or HandleWith on the dispatch operation, it MUST be careful to avoid deadlock, since these methods cannot return until the Observer has returned from ObserveChannels.

This allows an Observer to Claim a set of channels without having to match up calls to this method with calls to AddDispatchOperation.

The ChannelRequests satisfied by these channels. If the same process is an Observer and a Handler, it can be useful to be given this information as soon as possible (it will also be passed to Handler.HandleChannels).

Additional information about these channels. Currently defined keys are:

recovering - b
True if ObserveChannels was called for an existing channel (due to the Recover property being True); False or omitted otherwise. This allows observers to distinguish between new channels (the normal case), and existing channels that were given to the observer in order to catch up on previous events (perhaps after a previous instance of the same observer crashed).
request-properties - a{oa{sv}}
A map from ChannelRequest paths listed in Requests_Satisfied to Qualified_Property_Value_Maps containing namespaced immutable properties of each request.

All defined keys for this dictionary are optional; observers MAY safely ignore any entry in this dictionary.

If true, the channel dispatcher will wait for ObserveChannels to return before calling Approver.AddDispatchOperation on appropriate Approvers.

This property SHOULD be false unless there is a reason why a channel should not be given to approvers. An example of this is if an Observer is also a Handler and wants to Claim a channel so that it becomes its handler and doesn't want any approver to be called, this property should be true.

Observers and Approvers should be called at the same time in normal operation (with this property set to false) to improve responsiveness. For example, if an incoming call appears, the approver should get the channel as fast as possible to show a dialog, but if an approver has to make round-trips to set itself up, then the approval of the channel is delayed. As a result, it is recommended for this property to remain false unless absolutely necessary.

For service-activatable clients, this property should be specified in the observer's .client file as follows:

If this property is not implemented (telepathy-mission-control 5.7.5 and older), the channel dispatcher SHOULD consider it as being false.

[org.freedesktop.Telepathy.Client.Observer]
DelayApprovers=true
telepathy-qt-0.9.6.1/spec/Channel_Interface_Media_Signalling.xml0000644000175100017520000002167012530423576026202 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The old-style Telepathy properties, deprecated since March 2009, have been removed.

An interface for signalling a channel containing synchronised media sessions which can contain an arbitrary number of streams. The presence of this interface on a Channel indicates that the connection manager will not carry out the actual streaming for this channel, and that the client handling the channel is responsible for doing so; in most cases we recommend doing this by using the telepathy-farsight library.

Streaming audio and (particularly) video requires a high level of integration with the UI, and having the connection manager act as a proxy would be likely to introduce unacceptable latency. As a result, audio/video streaming is offloaded into the client where possible, as an exception to the general design of Telepathy.

The negotiation interface is based on the API of the Farsight library. This, in turn, is based upon the IETF MMusic ICE drafts, where connections are established by signalling potential connection candidates to the peer until a usable connection is found, and codecs are negotiated with an SDP-style offer and answer. However, the principles should be applicable to other media streaming methods and the API re-used without difficulty.

Note that the naming conventions used in the MediaStreamHandler and MediaSessionHandler interfaces are rather confusing; methods have signal-like names and signals have method-like names, due to the API being based rather too closely on that of Farsight. This is for historical reasons and will be fixed in a future release of the Telepathy specification.

The type of a media session. Currently, the only supported value is "rtp". A struct representing a active session handler. The object path of the session handler, which is on the same bus name as the channel. The media session's type Returns all currently active session handlers on this channel as a list of (session_handler_path, type). Object path of the new Media.SessionHandler object String indicating type of session, eg "rtp" Signal that a session handler object has been created. The client should create a session object and create streams for the streams within.

The client can implement streaming for streams whose NATTraversal property is gtalk-p2p.

The client can implement streaming for streams whose NATTraversal property is ice-udp.

The client can implement streaming for streams whose NATTraversal property is wlm-8.5.

The client can implement streaming for streams whose NATTraversal property is wlm-2009.

The client supports media streaming with H264 (etc.).

This handler capability token is a one of a family of similar tokens: for any other audio or video codec whose MIME type is audio/subtype or video/subtype, a handler capability token of this form may exist (the subtype MUST appear in lower case in this context). Clients MAY support more codecs than they explicitly advertise support for; clients SHOULD explicitly advertise support for their preferred codec(s), and for codecs like H264 that are, in practice, significant in codec negotiation.

For instance, the XMPP capability used by the Google Video Chat web client to determine whether a client is compatible with it requires support for H264 video, so an XMPP connection manager that supports this version of Jingle should not advertise the Google Video Chat capability unless there is at least one installed client that declares that it supports video/h264 on StreamedMedia channels.

For example, a client could advertise support for Speex, Theora and H264 by having three handler capability tokens, org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/audio/speex, org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/theora and org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/h264, in its Capabilities property.

Clients MAY have media signalling abilities without explicitly supporting any particular codec, and connection managers SHOULD support this usage.

This is necessary to support gatewaying between two Telepathy connections, in which case the available codecs might not be known to the gatewaying process.

telepathy-qt-0.9.6.1/spec/Account_Interface_Avatar.xml0000644000175100017520000000626712530423576024263 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Ltd. Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface extends the core Account interface to provide a user-settable avatar image.

The avatar could have been a property on the core Account interface, but was moved to a separate interface because it is likely to be large. This means that clients can safely use GetAll to get properties on the core Account interface without flooding the session bus with large images.

A struct containing avatar data marked with its MIME type.

May be set to an empty byte-array and an empty string, indicating no avatar.

The avatar to set on this account for display to other contacts, represented as a structure containing the bytes of the avatar, and the MIME type as a string; may be set to an empty byte-array and an empty string to indicate no avatar. When the account becomes connected, the account manager SHOULD set this avatar using SetAvatar if appropriate. Emitted when the Avatar property changes. The avatar itself is deliberately not included in this signal, to reduce bus traffic in the (likely common) case where no running application cares about the user's own avatar.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Password.xml0000644000175100017520000001161012530423576024607 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2011 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. The ProvidePassword method must be called now for the user to join the channel The RoomConfig1.PasswordHint contains a hint for the password. An integer with the logical OR of all the flags set (values of ChannelPasswordFlags) Returns the bitwise-OR of the flags relevant to the password on this channel. The user interface can use this to present information about which operations are currently valid. A bitwise OR of the flags which have been set A bitwise OR of the flags which have been cleared Emitted when the flags as returned by GetPasswordFlags are changed. The user interface should be updated as appropriate. The password A boolean indicating whether or not the password was correct Provide the password so that the channel can be joined. Must be called with the correct password in order for channel joining to proceed if the 'provide' password flag is set.

Interface for channels that may have a password set that users need to provide before being able to join. The GetPasswordFlags method and the associated PasswordFlagsChanged signal indicate whether the user must now provide a password to join the channel.

Once the user has joined the channel, the current password-protectedness of the room can be checked (and possibly modified) using the RoomConfig1 interface, if implemented.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Keepalive.xml0000644000175100017520000000675412530423576025456 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd. Copyright © 2010 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

Most messaging protocols allow the client to send periodic content-less pings to the server when the connection is otherwise idle, to reassure both itself and the server that its connection is still alive. Depending on the nature of the network connection, and the device running the client, the desired interval between such pings may vary.

For instance, on a mobile handset connected via 3G, overly-frequent keepalives can drain the battery through needlessly waking up the radio, and a relatively high interval is appropiate. By contrast, a desktop computer is less likely to be asleep in the first place, and users expect dropped connections to be noticed as soon as possible.

This interface provides a KeepaliveInterval property which controls the frequency of keepalive pings, if any. Connection managers implementing this property should also include it in Protocol.Parameters with the DBus_Property flag, allowing the desired value to be stored in Account.Parameters and passed onto the connection by the account manager.

The time in seconds between pings sent to the server to ensure that the connection is still alive, or 0 to disable such pings.

This property (and parameter) supersedes the older keepalive-interval Connection_Parameter_Name.

telepathy-qt-0.9.6.1/spec/Channel_Type_Contact_Search.xml0000644000175100017520000005401212530423576024711 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2009 Collabora Limited Copyright © 2005-2009 Nokia Corporation Copyright © 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

as stable API. Changes from draft 2: Contact_Search_Result_Map keys are now identifiers rather than handles; consequently, the values need not include x-telepathy-identifier.

A channel type for searching server-stored user directories. A new channel should be requested by a client for each search attempt, and closed when the search is completed or the required result has been found.

Connections that support contact search channels SHOULD have an entry in RequestableChannelClasses with the ChannelType fixed to this interface, and no other fixed properties. That requestable channel class MAY also have the Server and Limit properties in its list of allowed properties, depending on the protocol.

The requestable channel class would normally also have TargetHandleType fixed to None, but the initial implementation of ContactSearch (in telepathy-gabble) didn't do this.

All channels of this type should have TargetHandleType None (and hence TargetHandle 0 and TargetID "").

Requests for channels of this type need only optionally specify the Server property (if it is an allowed property in the connection's RequestableChannelClasses).

Before searching, the AvailableSearchKeys property should be inspected to determine the valid search keys which can be provided to the Search method. A search request is then started by providing some of these terms to the Search method, and the SearchState will change from Not_Started to In_Progress. As results are returned by the server, the SearchResultReceived signal is emitted for each contact found; when the search is complete, the search state will be set to Completed. If the search fails after Search has been called, the state will change to Failed. A running search can be cancelled by calling Stop.

If the protocol supports limiting the number of results returned by a search and subsequently requesting more results, after Limit results have been received the search state will be set to More_Available. Clients may call More to request another Limit results. If allowed by the connection manager, clients may specify the "page size" by specifying Limit when calling CreateChannel.

The client should call the channel's Close method when it is finished with the channel.

Each channel can only be used for a single search; a new channel should be requested for each subsequent search. Connection managers MUST support multiple ContactSearch channels being open at once (even to the same server, if applicable).

It does not make sense to request this channel type using EnsureChannel; clients SHOULD request channels of this type using CreateChannel instead.

A contact search channel that is already in use for a different search isn't useful.

The search has not started The search is in progress The search has paused, but more results can be retrieved by calling More. The search has been completed The search has failed The current state of this search channel object. Change notification is via SearchStateChanged. The new search state If the new state is Failed, the name of a D-Bus error describing what went wrong. Otherwise, the empty string.

Additional information about the state transition, which may include the following well-known keys:

debug-message (s)
Debugging information on the change, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances

This argument allows for future extensions. For instance, if moving to state Failed because the server rejected one of our search terms, we could define a key that indicates which terms were invalid.

Emitted when the SearchState property changes. The implementation MUST NOT make transitions other than the following:

  • Not_Started → In_Progress
  • In_Progress → More_Available
  • More_Available → In_Progress
  • In_Progress → Completed
  • In_Progress → Failed

Any of the following search keys, with the indicated result for the search:

The empty string
Search for the search term in some implementation-dependent set of fields, using an implementation-dependent algorithm (e.g. searching for each word mentioned) The "one big search box" approach to searching, as is familiar from Google. The Sametime plugin to Pidgin appears to search in this way.
A VCard_Field
Search for the search term in fields matching that name (for instance, nickname would search nicknames, and tel would search any available phone number, regardless of its work/home/mobile/... status).
A VCard_Field followed by ";" and a VCard_Type_Parameter of the form "type=..."
Search for the search term in fields of that name and type only (for instance, tel;type=mobile).
x-telepathy-identifier
Search for contacts whose identifier in the IM protocol matches the search term (e.g. contains it as a substring) Otherwise, starting a search by identifier would require the UI to know the vCard field name corresponding to identifiers in this protocol, which might be non-standard (like x-jabber) or not exist at all.
x-gender
For the search term "male" or "female", search only for contacts listed as male or female, respectively. The results for other search terms are undefined; it is likely that contacts with unspecified gender will only be matched if this search key is omitted from the request. Examples in XEP-0055 suggest this usage, and at least Gadu-Gadu also supports limiting search results by gender.
x-n-family
Search for the search term in contacts' family names (the first component of the vCard field n). Gadu-Gadu and TOC seem to support this mode of searching.
x-n-given
Search for the search term in contacts' given names (the second component of the vCard field n). As for x-n-family.
x-online
For the search term "yes", search only for contacts who are currently online. The results for other search terms are undefined. Gadu-Gadu appears to support this.
x-adr-locality
Search for the search term as a locality or city (the fourth component of the vCard field adr). Gadu-Gadu and TOC appear to support this.

If supported by the protocol, the maximum number of results that should be returned, where 0 represents no limit. If the protocol does not support limiting results, this should be 0.

For example, if the terms passed to Search match Antonius, Bridget and Charles and this property is 2, the search service SHOULD only return Antonius and Bridget.

This property SHOULD be requestable if and only if the protocol supports specifying a limit; implementations SHOULD use 0 as the default if possible, or a protocol-specific sensible default otherwise.

The set of search keys supported by this channel. Example values include [""] (for protocols where several address fields are implicitly searched) or ["x-n-given", "x-n-family", "nickname", "email"] (for XMPP XEP-0055, without extensibility via Data Forms). It can be in the NewChannels signal for round-trip reduction. A map from search keys to search terms. The search key to match against The term or terms to be searched for in the search key; depending on the protocol and the server implementation, this may be matched by exact or approximate equality, substring matching, word matching or any other matching algorithm A dictionary mapping search key names to the desired values Send a request to start a search for contacts on this connection. This may only be called while the SearchState is Not_Started; a valid search request will cause the SearchStateChanged signal to be emitted with the state In_Progress. The SearchState is no longer Not_Started, so this method is no longer available. The search terms included something this connection manager cannot search for. Request that a search in SearchState More_Available move back to state In_Progress and continue listing up to Limit more results. The SearchState is not More_Available.

Stop the current search. This may not be called while the SearchState is Not_Started. If called while the SearchState is In_Progress, SearchStateChanged will be emitted, with the state Failed and the error org.freedesktop.Telepathy.Error.Cancelled.

Calling this method on a search in state Completed or Failed succeeds, but has no effect.

Specifying Stop to succeed when the search has finished means that clients who call Stop just before receiving SearchStateChanged don't have to handle a useless error.

Depending on the protocol, the connection manager may not be able to prevent the server from sending further results after this method returns; if this is the case, it MUST ignore any further results.

The SearchState is Not_Started, so this method is not yet available.
A map from contact identifier to search result, emitted in the SearchResultReceived signal. The identifier of a contact matching the search terms. This is an identifier rather than a handle in case we make handles immortal; see fd.o#23155 and fd.o#13347 comment 5.

An array of fields representing information about this contact, in the same format used in the ContactInfo interface. It is possible that a separate call to RequestContactInfo would return more information than this signal provides.

A mapping from contact identifier to an array of fields representing information about this contact. Emitted when a some search results are received from the server. This signal can be fired arbitrarily many times so clients MUST NOT assume they'll get only one signal.

For protocols which support searching for contacts on multiple servers with different DNS names (like XMPP), the DNS name of the server being searched by this channel, e.g. "characters.shakespeare.lit". Otherwise, the empty string.

XEP 0055 defines a mechanism for XMPP clients to search services of their choice for contacts, such as users.jabber.org (the "Jabber User Directory").

This property SHOULD be requestable if and only if the protocol supports querying multiple different servers; implementations SHOULD use a sensible default if possible if this property is not specified in a channel request.

This allows a client to perform searches on a protocol it knows nothing about without requiring the user to guess a valid server's hostname.

telepathy-qt-0.9.6.1/spec/Client_Handler_Future.xml0000644000175100017520000000771512530423576023615 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009 Collabora Ltd. Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface contains functionality which we intend to incorporate into the Handler interface in future. It should be considered to be conceptually part of the core Handler interface, but without API or ABI guarantees.

If true, channels destined for this handler are not passed to observers for observing.

This is useful in use-cases where the handler doesn't want anyone observing the channel - for example, because channels it handles shouldn't be logged.

For service-activatable handlers, this property should be specified in the handler's .client file as follows:

[org.freedesktop.Telepathy.Client.Handler]
BypassObservers=true

If true, channels destined for this handler that have the Conference interface, with a channel that was previously handled by the same client process in their InitialChannels property, should bypass the approval stage. In effect, this is a weaker form of BypassApproval.

It would be reasonable for a user interface to accept invitations to continuations of an existing channel automatically, or not; this is a matter of UI policy.

It's somewhat complex for an Approver to keep track of which channels are being handled by a particular Handler, but the Channel Dispatcher already has to track this, so it's useful for the channel dispatcher to assist here.

telepathy-qt-0.9.6.1/spec/Connection_Manager_Interface_Account_Storage.xml0000644000175100017520000001115212530423576030247 0ustar00kaffeinekaffeine00000000000000 Copyright © 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft 1)

An interface for connection managers that store account details internally. At the moment this consists only of storing an account's credentials, but other functionality may be added in the future.

Account objects representing accounts on a connection manager that implements this interface should implement the ExternalPasswordStorage.DRAFT interface.

A set of flags representing the status of the Account stored in the Connection Manager. The associated account has its authentication credentials (password) stored in the connection manager A mapping from Account_Ids to account flags.

The set of Accounts stored in this Connection Manager, and flags indicating their status.

Change notification for this property is provided by the standard D-Bus PropertiesChanged signal.

Clears any saved credentials associated with the specified Account_Id. Any other saved data related to the account will be unaffected. An account id as returned from Protocol.IdentifyAccount. The account id is invalid. Completely removes all data associated with an account from the connection manager's internal storage. An account id as returned from Protocol.IdentifyAccount. The account id is invalid.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Power_Saving.xml0000644000175100017520000001172712530423576026150 0ustar00kaffeinekaffeine00000000000000 Copyright © 2007-2010 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

Some protocols support mechanisms for reducing bandwidth usage—and hence power usage, on mobile devices—when the user is not directly interacting with their IM client. For instance, Google Talk's XMPP server supports queueing incoming presence updates at the client's instruction; the client can instruct the server to deliver all outstanding presence updates at a later time. This interface may be used to instruct the connection manager to enable and disable such protocol-level features when a screensaver is activated, the device screen is locked, and so on, by calling the SetPowerSaving method.

Enabling power saving SHOULD NOT change behaviour in any way that is noticable to a user not actively interacting with their client. For example, delaying presence updates somewhat is unlikely to be noticed by a user not staring at their device waiting for a contact to come online; on the other hand, requesting that the server queue incoming messages would be noticable by the user, so is not an acceptable effect of calling SetPowerSaving.

Turn power saving mode on or off.

Depending on the device's activity level, the connection can have its power saving mode turned on or off.

Errors raised by this method indicate that power saving could not be enabled, which SHOULD NOT generally be treated as fatal.

If the CM cannot switch modes, either because of the protocol (NotImplemented), or because of the service (NotAvailable), Mission Control (or whoever manages this) should be made aware. The error could be ignored or, in the extreme, be fascist and disconnect the account.
True if protocol-level power saving features should be activated; False if they should be de-activated. The current connection has no power saving features.

True if protocol-level power saving features are currently activated. This property can be changed using the SetPowerSaving method; change notifications is via the PowerSavingChanged signal.

The new state of the power saving feature. The PowerSavingActive property changed.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Contact_Info.xml0000644000175100017520000005764512530423576026124 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Limited Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) The name of the field; this is the lowercased name of a vCard field. For example, a field representing a contact's address would be named "adr".

A list of vCard type parameters applicable to this field, with their values. The type parameter names, and any values that are case-insensitive in vCard, MUST be in lower case. For example, a contact's preferred home address would have parameters 'type=home' and 'type=pref'.

The type parameter 'type' is likely to be the most common, but there can be others, such as 'language=en'.

Characters which are required to be escaped in vCard type parameters should not be escaped in this list. For instance, a field "X-FOO;SEMICOLON=\;:bar" in a vCard would become ('x-foo', ['semicolon=;'], ['bar']) in this interface.

This avoids Telepathy UIs having to understand the escaping and unescaping rules for vCards. The type parameter name is not allowed (by RFC 2425) to contain an '=' character, so no ambiguity is introduced.

For unstructured vCard fields (such as 'fn', a formatted name field), a single-element array containing the field's value.

For structured fields (such as 'adr', an address field), an array corresponding to the semicolon-separated elements of the field (with empty strings for empty elements).

A vCard field with multiple comma-separated values, such as 'nickname', should be represented by several Contact_Info_Fields.

Characters which are required to be escaped in vCard values, such as semi-colons and newlines, should not be escaped in this list (e.g. if a value contains a newline, the data passed over D-Bus should contain a literal newline character).

An earlier draft of this interface split structured vCard fields into multiple Telepathy-level fields; for example, 'n' became 'family-name', 'given-name', etc. But under this representation, omitting empty components leads to difficulty identifying where one name ends and another begins. Consider the fields ['given-name', 'honorific-suffixes', 'family-name', 'honorific-prefixes']: does this represent two 'n' fields, or one with incorrect component ordering?

Represents one piece of information about a contact, as modelled by a single vCard field. Of the fields defined in RFC 2426, common examples include:

fn
The contact's full name, formatted to their liking
n
The contact's full name, divided into five parts: family name, given name, additional names, honorific prefixes, and honorific suffixes
org
The contact's organisation, divided into the organization's name possibly followed by one or more organizational unit names.
adr
A street address for the contact, divided into seven components: post office box, extended address, street address, locality (e.g., city), region (e.g., state or province), the postal code, and the country name.
label
A free-form street address for the contact, formatted as a single value (with embedded newlines where necessary) suitable for printing on an address label
tel
A telephone number for the contact.
email
An email address for the contact.

For example, the following vCard:

   BEGIN:vCard
   VERSION:3.0
   FN:Wee Ninja
   N;LANGUAGE=ja:Ninja;Wee;;;-san
   ORG:Collabora, Ltd.;Management Division;Human Resources\; Company Policy Enforcement
   ADR;TYPE=WORK,POSTAL,PARCEL:;;11 Kings Parade;Cambridge;Cambridgeshire
    ;CB2 1SJ;UK
   LABEL;TYPE=WORK,POSTAL,PARCEL:11 Kings Parade\nCambridge\nCambridgeshire\nUK\nCB2 1SJ
   TEL;TYPE=VOICE,WORK:+44 1223 362967, +44 7700 900753
   EMAIL;TYPE=INTERNET,PREF:wee.ninja@collabora.co.uk
   EMAIL;TYPE=INTERNET:wee.ninja@example.com
   URL:http://www.thinkgeek.com/geektoys/plush/8823/
   NICKNAME:HR Ninja,Enforcement Ninja
   END:vCard

would be represented by (in Python-like syntax):

[
  ('fn', [], ['Wee Ninja']),
  ('n', ['language=ja'], ['Ninja', 'Wee', '', '', '-san']),
  ('org', [], ['Collabora, Ltd.', 'Management Division',
    'Human Resources; Company Policy Enforcement']),
  ('adr', ['type=work','type=postal','type=parcel'],
   ['','','11 Kings Parade','Cambridge', 'Cambridgeshire','CB2 1SJ','UK']),
  ('label', ['type=work','type=postal','type=parcel'],
   ['''11 Kings Parade
  Cambridge
  Cambridgeshire
  UK
  CB2 1SJ''']),
  ('tel', ['type=voice','type=work'], ['+44 1223 362967']),
  ('tel', ['type=voice','type=work'], ['+44 7700 900753']),
  ('email', ['type=internet','type=pref'], ['wee.ninja@collabora.co.uk']),
  ('email', ['type=internet'], ['wee.ninja@example.com']),
  ('url', [], ['http://www.thinkgeek.com/geektoys/plush/8823/']),
  ('nickname', [], ['HR Ninja']),
  ('nickname', [], ['Enforcement Ninja'])
]
A dictionary whose keys are contact handles and whose values are contact information.. An integer handle for the contact whose info has changed. An array of fields representing information about this contact. Emitted when a contact's information has changed or been received for the first time on this connection. An array of handles representing contacts. A dictionary mapping contact handles to information, whose keys are the subset of the requested list of handles for which information was cached. Request information on several contacts at once. This SHOULD only return cached information, omitting handles for which no information is cached from the returned map. Integer handles for contacts. Retrieve information for the given contact, requesting it from the network if an up-to-date version is not cached locally. This method SHOULD return immediately, emitting ContactInfoChanged when the contacts' updated contact information is returned. This method allows a client with cached contact information to update its cache after a number of days. An integer handle for a contact. Information about that contact. Retrieve information for a contact, requesting it from the network if it is not cached locally. This method is appropriate for an explicit user request to show a contact's information; it allows a UI to wait for the contact info to be returned. The contact's information could not be retrieved. Set new contact information for this connection, replacing existing information. This method is only suppported if ContactInfoFlags contains Can_Set, and may only be passed fields conforming to SupportedFields. The new information to be set. Setting your own information is not supported on this protocol. The supplied fields do not match the restrictions specified by SupportedFields. Flags defining the behaviour of contact information on this protocol. Some protocols provide no information on contacts without an explicit request; others always push information to the connection manager as and when it changes. Indicates that SetContactInfo is supported on this connection. Indicates that the protocol pushes all contacts' information to the connection manager without prompting. If set, ContactInfoChanged will be emitted whenever contacts' information changes. A string naming a field in a vCard, such as "fn" or "adr". Although these are case-insensitive in RFC 2425, in Telepathy they MUST be normalized to lower case. In the terminology of RFC 2425 this is called a "type name", and corresponds to the "name" production given in the ABNF. A type parameter as defined by RFC 2426, such as "type=cell" or "language=en".

An integer representing the bitwise-OR of flags on this connection.

This property MAY change, without change notification, at any time before the connection moves to status Connection_Status_Connected. It MUST NOT change after that point.

Some XMPP servers, like Facebook Chat, do not allow the vCard to be changed (and so would not have the Can_Set flag). Whether the user's server is one of these cannot necessarily be detected until quite late in the connection process.

A struct describing a vCard field, with parameters, that may be passed to SetContactInfo on this Connection. A vCard field name, such as 'tel'. The set of vCard type parameters which may be set on this field. If this list is empty and the Contact_Info_Field_Flag_Parameters_Exact flag is not set, any vCard type parameters may be used. Flags describing the behaviour of this field. Maximum number of instances of this field which may be set. MAXUINT32 is used to indicate that there is no limit.

A list of field specifications describing the kinds of fields which may be passed to SetContactInfo. The empty list indicates that arbitrary vCard fields are permitted. This property SHOULD be the empty list, and be ignored by clients, if ContactInfoFlags does not contain the Can_Set flag.

For example, a protocol in which arbitrary vCards were stored as-is would set this property to the empty list. A protocol whose notion of contact information is one each of personal phone number, mobile phone number, location, email address and date of birth, with no attributes allowed on each piece of information, would set this property to (in Python-like syntax):

[
  ('tel', ['type=home'], Parameters_Exact, 1),
  ('tel', ['type=cell'], Parameters_Exact, 1),
  ('adr', [], Parameters_Exact, 1),
  ('bday', [], Parameters_Exact, 1),
  ('email', ['type=internet'], Parameters_Exact, 1),
]

A protocol which allows users to specify up to four phone numbers, which may be labelled as personal and/or mobile, would set this property to [ ('tel', ['type=home', 'type=cell'], 0, 4), ].

Studying existing IM protocols shows that in practice protocols allow either a very restricted set of fields (such as MSN, which seems to correspond roughly to the largest example above), or something mapping 1:1 to a large subset of vCard (such as XMPP's XEP-0054).

This property MAY change, without change notification, at any time before the connection moves to status Connection_Status_Connected. It MUST NOT change after that point.

Some XMPP servers, like Google Talk, only allow a small subset of the "vcard-temp" protocol. Whether the user's server is one of these cannot be detected until quite late in the connection process.

Flags describing the behaviour of a vCard field.

If present, exactly the parameters indicated must be set on this field; in the case of an empty list of parameters, this implies that parameters may not be used.

If absent, and the list of allowed parameters is non-empty, any (possibly empty) subset of that list may be used.

If absent, and the list of allowed parameters is empty, any parameters may be used.

Indicates that this field will be overwritten when the user's alias is changed with SetAliases or when the Account's Nickname is updated. Clients that allow the editing of the Alias and the ContactInfo in the same location should hide fields with this flag.

If a client allowed the user to edit both the nickname and the ContactInfo field at the same time, the user could set them to two different values even though they map to the same property. This would result in surprising behavior where the second value would win over the first.

In addition to hiding this field when editing ContactInfo together with the user's nickname, it is recommended that clients call SetContactInfo before setting the user's nickname.

This ensures that if the user changes the nickname, the correct value will get set even if the stale nickname is mistakenly sent along with SetContactInfo.

If used, this flag typically appears on either the 'nickname' or 'fn' field.

An interface for requesting information about a contact on a given connection. Information is represented as a list of Contact_Info_Fields forming a structured representation of a vCard (as defined by RFC 2426), using field names and semantics defined therein.

On some protocols, information about your contacts is pushed to you, with change notification; on others, like XMPP, the client must explicitly request the avatar, and has no way to tell whether it has changed without retrieving it in its entirety. This distinction is exposed by ContactInfoFlags containing the Push flag.

On protocols with the Push flag set, UIs can connect to ContactInfoChanged, call GetContactInfo once at login for the set of contacts they are interested in, and then be sure they will receive the latest contact info. On protocols like XMPP, clients can do the same, but will receive (at most) opportunistic updates if the info is retrieved for other reasons. Clients may call RequestContactInfo or RefreshContactInfo to force a contact's info to be updated, but MUST NOT do so unless this is either in response to direct user action, or to refresh their own cache after a number of days.

We don't want clients to accidentally cause a ridiculous amount of network traffic.

The same value that would be returned by GetContactInfo for this contact. Omitted from the result if the contact's info is not known.

telepathy-qt-0.9.6.1/spec/Account.xml0000644000175100017520000010264412530423576021001 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2012 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

An Account object encapsulates the necessary details to make a Telepathy connection.

Accounts are uniquely identified by object path. The object path of an Account MUST take the form /org/freedesktop/Telepathy/Account/cm/proto/acct, where:

  • cm is the same Connection_Manager_Name that appears in the connection manager's well-known bus name and object path
  • proto is the Protocol name as seen in ConnectionManager.ListProtocols, but with "-" replaced with "_" (i.e. the same as in the object-path of a Connection)
  • acct is an arbitrary string of ASCII letters, digits and underscores, starting with a letter or underscore, which uniquely identifies this account
  • Clients SHOULD parse the object path to discover the connection manager and protocol
  • Clients MUST NOT attempt to parse acct
  • Clients MUST NOT assume that acct matches the connection-specific part of a Connection's object-path and bus name
  • The account manager SHOULD choose acct such that if an account is deleted, its object path will be re-used if and only if the new account is in some sense "the same" (incorporating the 'account' parameter in some way is recommended)

This API avoids specifying the "profiles" used in Mission Control 4.x or the "presets" that have been proposed to replace them. An optional interface will be provided for AM implementations that want to provide presets.

There is deliberately no functionality here for opening channels; we intend to provide that in the channel dispatcher.

Other missing features which would be better in their own interfaces:

  • dynamic parameter-providing (aka provisioning)
  • saved server capabilities
  • account conditions
  • account grouping
moved the Avatar property to a separate interface A list of the extra interfaces provided by this account. Delete the account. This account has been removed. This is redundant with AccountRemoved, but it's still worth having, to avoid having to bind to AccountManager.AccountRemoved to tell you whether your Account is valid — ideally, an account-editing UI should only care about a single Account. The values of one or more properties on this interface (that do not specify that this signal does not apply to them) may have changed. This does not cover properties of other interfaces, which must provide their own change notification if appropriate. A map from property names in this namespace (e.g. Nickname) to values. Properties whose values have not changed SHOULD be omitted, but this need not be done. The user-visible name of this account. This SHOULD be chosen by the user at account creation time. The account creation user interface is responsible for setting a reasonable default value in the user's locale; something like "Jabber (bob@example.com)" would be sensible. The name of an icon in the system's icon theme, such as "im-msn", or the empty string to not specify an icon. If the icon is set to an empty string, the account manager or any client MAY derive a default icon, for instance from the protocol. If true, this account is considered by the account manager to be complete and usable. If false, user action is required to make it usable, and it will never attempt to connect (for instance, this might be caused by the absence of a required parameter). For connection managers with a plugin architecture, like telepathy-haze, we have little or no control over the parameters offered; for platforms with package management, we have little or no control over the CMs offered. NMC 4.x would just pretend the account didn't exist in these circumstances, but silent data loss is bad, and UIs with CM-specific knowledge (or a user filling in newly-required parameters) might be able to rescue a broken account.

This property gives the users the possibility to prevent an account from being used. This flag does not change the validity of the account.

A disabled account can never be put online.

Use cases:

  • user has two or more accounts capable of calling contact X, but he doesn't want the UI to prompt him everytime about which one he wants to use for the call. He can then disable all the equivalent accounts but one.
  • There is some temporary server error and the user doesn't want to be be bother by error messages, or change the account configuration: temporarily disabling the account is quicker.

The AccountManager SHOULD allow this property to be set on invalid accounts, but MUST NOT attempt to put invalid accounts online even if they become Enabled.

There doesn't seem to be any good reason not to allow this.

The nickname to set on this account for display to other contacts, as set by the user. When the account becomes connected, the account manager SHOULD set this as the user's alias using SetAliases if appropriate. In a later specification revision, we plan to separate the concepts of a contact's nickname as set by themselves, and the local name for them in our contact list (a "handle" or "pet name" as described in XEP-0165 and its references). The terminology change from alias to nickname here is a step in that direction.

Some protocols, like XMPP and SIP, are used by various different user-recognised brands, such as Google Talk and Ovi by Nokia. On accounts for such services, this property SHOULD be set to a string describing the service, which MUST consist only of ASCII letters, numbers and hyphen/minus signs, and start with a letter (matching the requirements for Protocol). For the jabber protocol, one of the following service names should be used if possible:

For the IRC protocol, the network name (freenode, gimpnet, etc.) can be used if relevant.

The Icon property SHOULD be set to a corresponding brand-specific icon name, if possible. In the future, this property may be used as an index into additional service-specific customizations. If this property is the empty string (or missing), the service is determined by the protocol name (either because this is a single-service protocol like msn, or because this is just a generic jabber or sip account without specific branding).

This property MAY be set, if appropriate, when calling CreateAccount. Updating this property will fail on externally-stored accounts whose StorageRestrictions include Cannot_Set_Service.

A map from connection manager parameter names (as in the ConnectionManager interface) to their values. This property includes only those parameters that are stored for this account, and SHOULD only include those parameters that the user has explicitly set.

This property cannot be altered using org.freedesktop.DBus.Properties.Set(); use UpdateParameters instead.

Change the value of the Parameters property.

If any of the Set parameters’ Conn_Mgr_Param_Flags include DBus_Property, the change will be applied immediately to the corresponding D-Bus Property on the active Connection, if there is one. If any of the Unset parameters’ Conn_Mgr_Param_Flags include both DBus_Property and Has_Default, the corresponding D-Bus Property on the connection will be set to the default value. Changes to other parameters will not take effect until the next time the account is disconnected and reconnected. (If parameters are explicitly set to their default value, or are unset when previously set to their default value, the account manager MAY decide that no reconnection is necessary to make the change take effect.)

In general, reconnecting is a destructive operation that shouldn't happen as a side-effect. In particular, migration tools that twiddle the settings of all accounts shouldn't cause an automatic disconnect and reconnect.

parameters which are also D-Bus properties can and should be updated on existing Connections return an array of the parameters that won't change until the account is reconnected A mapping from parameter names to their values. These parameters should be stored for future use. A list of the names of parameters to be removed from the set of stored values, allowing the default values to be used. If the given parameters were not, in fact, stored, or even if they do not exist at all, the account manager MUST accept this without error.

If all of the updates could be applied to the active Connection (if any), the empty list, signifying that no reconnection is required for the new parameters to take effect. For example, if the only parameter updated is ...Cellular.MessageValidityPeriod, the new value can be applied immediately to the connection.

Otherwise, a list of the names of parameters with changes that will not take effect until the account is reconnected. User interfaces that require "instant apply" semantics MAY call Reconnect in response to receiving a non-empty list. For example, if the caller updates both ...Anonymity.AnonymityMandatory and require-encryption, the former can be applied to the current connection, but the latter needs a reconnect to take effect, so this method should return ["require-encryption"].

The presence status that this account should have if it is brought online.

In ITOS2007 and ITOS2008 this is a global preference, not visible on D-Bus (the "default presence"). "Automatic presence" better describes when it is used.

Setting this property MUST NOT actually change the account's status until the next time it is (re)connected for some reason.

The value of this property MUST be one that would be acceptable for RequestedPresence, with the additional restriction that the Connection_Presence_Type MUST NOT be Offline.

Otherwise, it would not be possible to use this presence to bring the account online for a channel request.

If true, the account manager SHOULD attempt to put this account online with the AutomaticPresence whenever possible (in the base Account interface this is deliberately left vague). If false, it MUST NOT put the account online automatically in response to, for instance, connectivity changes, but SHOULD still put the account online with the AutomaticPresence if requested by the user (for instance, if the user tries to start a conversation using this account).

Either the object path of the Connection to this account, or the special value '/' if there is no connection.

If this object path is not '/', the Connection's well-known bus name can be derived from this object path by removing the first '/' and replacing subsequent '/' characters with '.'.

Object paths aren't nullable, so we can't use an empty string.
If the Connection property is non-empty, the status of that connection. If the Connection property is the empty string, this property may either be Disconnected (indicating that the account manager is not attempting to bring it online), or Connecting (indicating that the account manager is attempting to connect). The account manager is expected to set this by observing signals from the Connection. If the AM is doing some sort of backoff/delay on reconnection attempts, the account's status is conceptually "Connecting" even though there is no Connection. The reason for the last change to ConnectionStatus. The account manager is expected to set this by observing signals from the Connection. If you weren't watching the Connection at the time it failed, you can't tell why - unless the AM can tell you.

If the last connection to this account failed with an error, the D-Bus error name of that error; otherwise, the empty string. The account manager is expected to set this by observing the Connection.ConnectionError and Connection.StatusChanged signals.

If ConnectionError is received before the connection disconnects, its first argument should be used to set this property; otherwise, the Reason argument of StatusChanged should be converted to a suitable D-Bus error name.

Whenever the Connection connects successfully, this property should be reset to the empty string.

This combines the state-recoverability of ConnectionStatusReason with the extensibility of Connection.ConnectionError.

If the last connection to this account failed with an error, a mapping representing any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of Connection.ConnectionError.

Whenever the Connection connects successfully, this property should be reset to the empty map.

This combines the state-recoverability of ConnectionStatusReason with the extensibility of Connection.ConnectionError.

The actual presence. If the connection is not online, the Connection_Presence_Type SHOULD be Connection_Presence_Type_Offline. If the connection is online but does not support the SimplePresence interface, the type SHOULD be Connection_Presence_Type_Unset. The account manager is expected to set this by observing signals from the Connection.

The requested presence for this account. When this is changed, the account manager should attempt to manipulate the connection manager to make CurrentPresence match RequestedPresence as closely as possible. It should not be saved to any sort of persistent storage.

When the account manager automatically connects an account, it must signal this by setting the RequestedPresence to the same thing as the AutomaticPresence.

The Connection_Presence_Type in this property MUST NOT be Unset, Unknown or Error.

Requesting those presence types doesn't make sense.

If true, a change to the presence of this account is in progress.

Whenever RequestedPresence is set on an account that could go online, or whenever an account with a non-offline RequestedPresence becomes able to go online (for instance because Enabled or Valid changes to True), ChangingPresence MUST change to True, and the two property changes MUST be emitted in the same AccountPropertyChanged signal, before the Set method returns.

When the account manager succeeds or fails in changing the presence, or the connection disconnects due to an error, ChangingPresence MUST change to False as part of the same AccountPropertyChanged signal.

This allows UIs to indicate that a presence change is in progress or has finished, even if the change was initiated by a different UI.

For instance, Maemo 5 and Empathy indicate a presence change by having the presence indicator alternate between the RequestedPresence and the CurrentPresence; they should start blinking when ChangingPresence becomes true, and stop when it becomes false.

Re-connect this account. If the account is currently disconnected and the requested presence is offline, or if the account is not Enabled or not Valid, this does nothing.

If the account is disconnected and the requested presence is not offline, this forces an attempt to connect with the requested presence immediately.

If the account is connecting or connected, this is equivalent to remembering the current value of RequestedPresence, setting its value to (OFFLINE, "offline", ""), waiting for the change to take effect, then setting its value to the value that was previously remembered.

Clients desiring "instant apply" semantics for CM parameters MAY call this method to achieve that.

In particular, if the account's Connection is in the Connecting state, calling this method causes the attempt to connect to be aborted and re-tried.

This is necessary to ensure that the new parameters are picked up.

The normalized user ID of the local user on this account (i.e. the string returned when the InspectHandles method is called on the result of GetSelfHandle for an active connection).

It is unspecified whether this user ID is globally unique.

As currently implemented, IRC user IDs are only unique within the same IRCnet. On some saner protocols, the user ID includes a DNS name which provides global uniqueness.

If this value is not known yet (which will always be the case for accounts that have never been online), it will be an empty string.

It is possible that this value will change if the connection manager's normalization algorithm changes, although this SHOULD be avoided.

It's not always completely clear what normalization algorithm should be used; for instance, in Gabble, we currently use JIDs, but it would also have been reasonable to use xmpp URIs.

If true, this account has successfully been put online at some point in the past. UIs could apply a policy that the 'account' parameter can only be edited in accounts that have never been online, or that ConnectAutomatically cannot be set on such accounts. The account manager should not enforce such policies, but it can expose enough information to UIs that the UI can decide what to do.

A list of the object paths of formerly-used accounts which are superseded by this one.

For instance, if an account is migrated from one connection manager implementation to another, or even from one protocol to another (for instance formerly-proprietary services which can now be accessed via XMPP), log storage services could look for logs under all of the superseded object paths as well as the new object path.

This is a list because a single user-visible account could be migrated more than once.

If the Account Manager implementation performs an account migration automatically, it SHOULD set this property. If a client performs an account migration, it SHOULD set this property via via the Properties argument of CreateAccount when creating the migrated account. In either case, the value SHOULD include the old account's path, and every path from the old account's Supersedes property.

telepathy-qt-0.9.6.1/spec/Channel_Interface_HTML.xml0000644000175100017520000001027212530423576023554 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Ltd. Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(draft version, not API-stable)

This interface extends the Messages interface to support capability discovery, so clients can decide what subset of HTML is supported.

(However, the capability discovery mechanism has not been written yet, so this interface MUST NOT be used. It exists only to indicate what direction we intend to go in.)

XMPP supports all of XHTML-IM, and SIP (at least theoretically) supports all of XHTML. However, many protocols are more limited - for instance, in MSN you can only set font properties for a whole message at a time. We should not mislead users into thinking they can send MSN messages where individual words are emphasized.

If this interface is present, clients MAY send XHTML formatted text in message parts with type "text/html", and SHOULD interpret "text/html" message parts received in reply.

Client authors SHOULD pay careful attention to the security considerations in XEP-0071, "XHTML-IM", to avoid exposing client users to security risks. Clients MUST NOT assume that connection managers will filter messages to remove unsafe HTML.

Connection managers are the components in Telepathy that are most likely to be exploitable by a remote attacker to run malicious code (since they are network-facing), so any filtering that the CM does might be subverted.

To avoid misleading users, clients SHOULD only present UI for the subset of HTML that is indicated to be supported by this interface. It follows that clients SHOULD NOT send unsupported markup to the connection manager. However, even if the connection manager cannot send arbitrary XHTML, it MUST cope gracefully with being given arbitrary XHTML by a client.

Connection managers should be lenient in what they receive.

Clients MUST NOT send HTML that is not well-formed XML, but connection managers MAY signal HTML that is malformed or invalid. Clients SHOULD attempt to parse messages as XHTML, but fall back to using a permissive "tag-soup" HTML parser if that fails. (FIXME: or should the presence of this interface imply that the CM fixes up "text/html" to be XHTML? In practice that would result in all the CMs having to link against libxml2 or something... the rationale above no longer applies here, since dropping a malformed message is "safe")

telepathy-qt-0.9.6.1/spec/Connection_Interface_Renaming.xml0000644000175100017520000001156212530423576025302 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API) The handle of the original identifier The handle of the new identifier

Emitted when the unique identifier of a contact on the server changes.

Any channels associated with the contact's original handle will continue to be to that handle, and so are no longer useful (unless the contact renames back, or another contact connects with that unique ID). Clients may open a similar channel associated with the new handle to continue communicating with the contact.

For example, if a GUI client associates text channels with chat windows, it should detach the old channel from the chat window, closing it, and associate a channel to the new handle with the same window.

If the contact's old handle is in any of the member lists of a channel which has the groups interface, it will be removed from the channel and the new handle will be added. The resulting MembersChanged signal must be emitted after the Renamed signal; the reason should be RENAMED.

The handles may be either general-purpose or channel-specific. If the original handle is general-purpose, the new handle must be general-purpose; if the original handle is channel-specific, the new handle must be channel-specific in the same channel.

The desired identifier

Request that the user's own identifier is changed on the server. If successful, a Renamed signal will be emitted for the current "self handle" as returned by GetSelfHandle.

It is protocol-dependent how the identifier that's actually used will be derived from the supplied identifier; some sort of normalization might take place.

An interface on connections to support protocols where the unique identifiers of contacts can change. Because handles are immutable, this is represented by a pair of handles, that representing the old name, and that representing the new one.
telepathy-qt-0.9.6.1/spec/Debug.xml0000644000175100017520000001402112530423576020422 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2009 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for providing debug messages.

This interface is primarily provided by one object per service, at the path /org/freedesktop/Telepathy/debug.

TRUE if the NewDebugMessage signal should be emitted when a new debug message is generated. Retrieve buffered debug messages. An implementation could have a limit on how many message it keeps and so the array returned from this method should not be assumed to be all of the messages in the lifetime of the service. A list of debug messages. Emitted when a debug messages is generated if the Enabled property is set to TRUE. Timestamp of the debug message. Domain of the debug message, as described in the Debug_Message struct. Level of the debug message. The text of the debug message. Log level for errors. Error messages are always fatal, resulting in the service terminating after something completely unexpected occurred. Log level for critical messages. Critical messages are messages that the service might predict and it is up to the service itself to decide whether to terminate following a critical message. Log level for warnings. Log level for messages. Log level for information messages. Log level for debug messages. A struct representing a debug message, as returned by GetMessages. Timestamp of the debug message. This is a double to allow more accuracy in the time the message was logged.

Domain of the debug message. This is used to identify the source of debug messages. For example, debug messages from a connection manager could have this Domain struct member be the name of the connection manager, and logs from any helper library could have the name of the helper library.

The domain could also contain a category as to where the log message originated separated by a forward-slash. For example, if a debug message was output in a connection manager called "dummy", in the file-transfer code, this Domain struct member might be dummy/file-transfer.

Level of the debug message. This states the severity of the debug message. The text of the debug message.
telepathy-qt-0.9.6.1/spec/Call_Interface_Mute.xml0000644000175100017520000001432312530423576023226 0ustar00kaffeinekaffeine00000000000000 Copyright © 2005-2010 Nokia Corporation Copyright © 2005-2010 Collabora Ltd This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API)

Interface for calls which may be muted. This only makes sense for channels where audio or video is streaming between members.

Muting a call content indicates that the user does not wish to send outgoing audio or video.

It should always be possible to mute an entire call. It is sometimes also possible to mute individual Contents (e.g. to prevent background noise from disturbing other participants, but remain visible on webcam) or to mute individual streams (e.g. to "whisper" to other call participants)

For some protocols, the fact that the content is muted needs to be transmitted to the peer; for others, the notification to the peer is only informational (eg. XMPP), and some protocols may have no notion of muting at all.
The mute state of (at least part of) the call. See LocalMuteState for more details. All streams are unmuted (the call is active). New channels SHOULD have this mute state. All streams are Muted. The connection manager is attempting to move to state Muted, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are muted. Examining the Mute state of Call Contents (if applicable) may provide more useful information. The connection manager is attempting to move to state Unmuted, but has not yet completed that operation. It is unspecified whether any, all or none of the streams making up the channel are muted. Examining the Mute state of Call Contents or Streams may provide more useful information. Some of the constituent Streams are Muted. This state only makes sense on Call Channels or Contents. Examining the Mute state of Call Contents or Streams should provide more useful information. Emitted to indicate that the mute state has changed for this call content. This may occur as a consequence of the client calling RequestMuted, or as an indication that another client has (un)muted the content. The new mute state. The current mute state of this part of the call. New Contents should inherit the value of this property from the parent Call1. Similarly, Streams should inherit it from the parent Content. renamed from SetMuted to Mute renamed back from Mute to SetMuted True if the client wishes to mute the Content or Call.

Inform the CM that the Call, Content or Stream should be muted or unmuted.

The CM will tell the streaming implementation to Mute Streams as required, and emit MuteStateChanged when done.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Contact_Groups.xml0000644000175100017520000006155312530423576026501 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd. Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An interface for connections in which contacts can be placed in user-defined groups.

The most basic functionality of this interface is to list and monitor a contact's set of groups. To do this, use the GroupsChanged signal, and the groups contact attribute (this should usually be done by connecting to the GroupsChanged signal, then calling GetContactListAttributes with this interface included in the Interfaces argument). Simple user interfaces can limit themselves to displaying that information, and ignore the rest of this interface: to ensure that this works, GroupsChanged is emitted for every change, even if that change could be inferred from another signal such as GroupsRemoved.

Looking at contacts' lists of groups is sufficient to present a user interface resembling XMPP's data model, in which groups behave like tags applied to contacts, and so an empty group cannot exist or is not interesting. However, some protocols model groups as objects in their own right. User interfaces may either track the set of groups via the Groups property and the GroupsCreated and GroupsRemoved signals, or ignore this extra information.

Similarly, in some protocols it is possible to rename a group as a single atomic operation. Simpler user interfaces will see the new name being created, the old name being removed, and the members moving to the new name, via the signals described above. More advanced user interfaces can optionally distinguish between an atomic rename and a create/remove pair, and display renamed groups differently, by monitoring the GroupRenamed signal.

This interface also provides various methods to manipulate user-defined groups, which can be expected to work if GroupStorage is not None.

Depending on the protocol, some methods might be implemented by more than one protocol operation; for instance, in a "contact-centric" protocol like XMPP, SetContactGroups is a single protocol operation and SetGroupMembers requires a protocol operation per contact, whereas in a more "group-centric" protocol it might be the other way around. User interfaces SHOULD call whichever method most closely resembles the way in which the user's action was represented in the UI, and let the connection manager deal with the details.

True if each contact can be in at most one group; false if each contact can be in many groups.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

Indicates the extent to which contacts' groups can be set and stored.

This property cannot change after the connection has moved to the Connected state. Until then, its value is undefined, and it may change at any time, without notification.

The names of groups of which a contact is a member.

Change notification is via GroupsChanged; clients can also get extra context for group membership changes by receiving GroupRenamed and GroupsRemoved.

Emitted when contacts' groups change. The relevant contacts. The names of groups to which the contacts were added. The names of groups from which the contacts were removed.

The names of all groups that currently exist. This may be a larger set than the union of all contacts' groups contact attributes, if the connection allows groups to be empty.

Change notification is via GroupsCreated and GroupsRemoved; clients can also distinguish between a create/remove pair and a renamed group by receiving GroupRenamed.

This property's value is not meaningful until the ContactListState has become Success.

Emitted when new, empty groups are created. This will often be followed by GroupsChanged signals that add some members. The names of the new groups.

Emitted when a group is renamed, in protocols where this can be distinguished from group creation, removal and membership changes.

Immediately after this signal is emitted, GroupsCreated MUST signal the creation of a group with the new name, and GroupsRemoved MUST signal the removal of a group with the old name.

Emitting these extra signals, in this order, means that clients that are interested in the set of groups that exist (but treat a rename and a create/remove pair identically) can ignore the GroupRenamed signal entirely.

If the group was not empty, immediately after those signals are emitted, GroupsChanged MUST signal that the members of that group were removed from the old name and added to the new name.

On connection managers where groups behave like tags, renaming a group MAY be signalled as a set of GroupsCreated, GroupsRemoved and GroupsChanged signals, instead of emitting this signal.

On protocols like XMPP, another resource "renaming a group" is indistinguishable from changing contacts' groups individually.

The old name of the group. The new name of the group.

Emitted when one or more groups are removed. If they had members at the time that they were removed, then immediately after this signal is emitted, GroupsChanged MUST signal that their members were removed.

Emitting the signals in this order allows for two modes of operation. A client interested only in a contact's set of groups can ignore GroupsRemoved and rely on the GroupsChanged signal that will follow; a more elaborate client wishing to distinguish between all of a group's members being removed, and the group itself being removed, can additionally watch for GroupsRemoved and use it to disambiguate.

The names of the groups.

Add the given contact to the given groups (creating new groups if necessary), and remove them from all other groups.

This is the easiest and most correct way to implement user interfaces that display a single contact with a list of groups, resulting in a user expectation that when they apply the changes, the contact's set of groups will become exactly what was displayed.

If the user is removed from a group of which they were the only member, the group MAY be removed automatically.

In protocols like XMPP where groups behave like tags, a group with no members has no protocol representation.

Any GroupsCreated, GroupsChanged and GroupsRemoved signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as GetContactListAttributes.

The contact to alter. The set of groups which the contact should be in. Raised if DisjointGroups is true and the list of groups has more than one member. Raised if GroupStorage is Contact_Metadata_Storage_Type_None, i.e. groups cannot be edited.

Add the given members to the given group (creating it if necessary), and remove all other members.

This is the easiest and most correct way to implement user interfaces that display a single group with a list of contacts, resulting in a user expectation that when they apply the changes, the groups's set of members will become exactly what was displayed.

If DisjointGroups is true, this will also remove each member from their previous group.

If the user is removed from a group of which they were the only member, the group MAY be removed automatically.

Any GroupsCreated, GroupsChanged and GroupsRemoved signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as GetContactListAttributes.

The group to alter. The set of members for the group. If this set is empty, this method MAY remove the group. Raised if GroupStorage is Contact_Metadata_Storage_Type_None, i.e. groups cannot be edited.

Add the given members to the given group, creating it if necessary.

If DisjointGroups is true, this will also remove each member from their previous group.

This is good for user interfaces in which you can edit groups via drag-and-drop.

Any GroupsCreated, GroupsChanged and GroupsRemoved signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as GetContactListAttributes.

The group to alter. The set of members to include in the group. Raised if GroupStorage is Contact_Metadata_Storage_Type_None, i.e. groups cannot be edited.

Remove the given members from the given group.

This is good for user interfaces in which you can edit groups via drag-and-drop.

Any GroupsChanged or GroupsRemoved signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as GetContactListAttributes.

The group to alter. If it does not exist, then it has no members by definition, so this method SHOULD return successfully. The set of members to remove from the group. It is not an error to remove members who are already not in the group. If there are no members left in the group afterwards, the group MAY itself be removed. Raised if GroupStorage is Contact_Metadata_Storage_Type_None, i.e. groups cannot be edited.

Remove all members from the given group, then remove the group itself. If the group already does not exist, this method SHOULD return successfully.

Any GroupsChanged or GroupsRemoved signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as GetContactListAttributes.

The group to remove. Raised if GroupStorage is Contact_Metadata_Storage_Type_None, i.e. groups cannot be edited.

Rename the given group.

On protocols where groups behave like tags, this is an API short-cut for adding all of the group's members to a group with the new name, then removing the old group.

Otherwise, clients can't perform this operation atomically, even if the connection could.

Any GroupRenamed or GroupsRemoved signals that result from this method call MUST be emitted before the method returns.

This method SHOULD NOT be called until the ContactListState changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as GetContactListAttributes.

The group to rename. The new name for the group. Raised if GroupStorage is Contact_Metadata_Storage_Type_None, i.e. groups cannot be edited. Raised if there is no group with that name. Raised if there is already a group with the new name.
telepathy-qt-0.9.6.1/spec/Authentication_TLS_Certificate.xml0000644000175100017520000002742512530423576025413 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. (as stable API) This object represents a TLS certificate.

The raw data contained in a TLS certificate.

For X.509 certificates (CertificateType = "x509"), this MUST be in DER format, as defined by the X.690 ITU standard.

For PGP certificates (CertificateType = "pgp"), this MUST be a binary OpenPGP key as defined by section 11.1 of RFC 4880.

Struct representing one reason why a TLS certificate was rejected.

Since there can be multiple things wrong with a TLS certificate, arrays of this type are used to represent lists of reasons for rejection. In that case, the most important reason SHOULD be placed first in the list.

The value of the TLS_Certificate_Reject_Reason enumeration for this certificate rejection. Clients that do not understand the Error member, which may be implementation-specific, can use this property to classify rejection reasons into common categories.

The DBus error name for this certificate rejection.

This MAY correspond to the value of the Reason member, or MAY be a more specific D-Bus error name, perhaps implementation-specific.

Additional information about why the certificate was rejected. This MAY also include one or more of the following well-known keys:

user-requested (b)
True if the error was due to an user-requested rejection of the certificate; False if there was an unrecoverable error in the verification process.
expected-hostname (s)
If the rejection reason is Hostname_Mismatch, the hostname that the server certificate was expected to have.
certificate-hostname (s)
If the rejection reason is Hostname_Mismatch, the hostname of the certificate that was presented.

For instance, if you try to connect to gmail.com but are presented with a TLS certificate issued to evil.example.org, the error details for Hostname_Mismatch MAY include:

                {
                  'expected-hostname': 'gmail.com',
                  'certificate-hostname': 'evil.example.org',
                }
              
debug-message (s)
Debugging information on the error, corresponding to the message part of a D-Bus error message, which SHOULD NOT be displayed to users under normal circumstances

The possible states for a TLSCertificate object. The certificate is currently waiting to be accepted or rejected. The certificate has been verified. The certificate has been rejected. Possible reasons to reject a TLS certificate. The certificate has been rejected for another reason not listed in this enumeration. The certificate is not trusted. The certificate is expired. The certificate is not active yet. The certificate provided does not have the expected fingerprint. The hostname certified does not match the provided one. The certificate is self-signed. The certificate has been revoked. The certificate uses an insecure cipher algorithm, or is cryptographically weak. The length in bytes of the certificate, or the depth of the certificate chain exceed the limits imposed by the crypto library. The current state of this certificate. State change notifications happen by means of the Accepted and Rejected signals.

If the State is Rejected, an array of TLS_Certificate_Rejection structures containing the reason why the certificate is rejected.

If the State is not Rejected, this property is not meaningful, and SHOULD be set to an empty array.

The first rejection in the list MAY be assumed to be the most important; if the array contains more than one element, the CM MAY either use the values after the first, or ignore them.

The type of this TLS certificate (e.g. 'x509' or 'pgp').

This property is immutable

One or more TLS certificates forming a trust chain, each encoded as specified by Certificate_Data.

The first certificate in the chain MUST be the server certificate, followed by the issuer's certificate, followed by the issuer's issuer and so on.

The State of this certificate has changed to Accepted. The State of this certificate has changed to Rejected. The new value of the Rejections property. Accepts this certificate, i.e. marks it as verified. Rejects this certificate.

The new value of the Rejections property.

This MUST NOT be an empty array.

Raised when the method is called on an object whose State is not Pending, or when the provided rejection list is empty.
telepathy-qt-0.9.6.1/spec/Channel_Type_DBus_Tube.xml0000644000175100017520000002211612530423576023645 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Limited Copyright © 2008-2009 Nokia Corporation This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A D-Bus tube is an ordered reliable transport, for transporting D-Bus traffic.

For each D-Bus tube, the connection manager listens on a D-Bus server address, as detailed in the D-Bus specification. On this address, it emulates a bus upon which each tube participant appears as an endpoint.

The objects and interfaces which are expected to exist on the emulated bus depend on the well-known name; typically, either the participant who initiated the tube is expected to export the same objects/interfaces that would be exported by a service of that name on a bus, or all participants are expected to export those objects/interfaces.

In a multi-user context (Handle_Type_Room) the tube behaves like the D-Bus bus daemon, so participants can send each other private messages, or can send broadcast messages which are received by everyone in the tube (including themselves). Each participant has a D-Bus unique name; connection managers MUST prevent participants from sending messages with the wrong sender unique name, and SHOULD attempt to avoid participants receiving messages not intended for them.

In a 1-1 context (Handle_Type_Contact) the tube behaves like a peer-to-peer D-Bus connection - arbitrary D-Bus messages with any sender and/or destination can be sent by each participant, and each participant receives all messages sent by the other participant.

Offers a D-Bus tube providing the service specified. The dictionary of arbitrary Parameters to send with the tube offer. The access control the connection manager applies to the D-Bus socket. The string describing the address of the private bus. The client SHOULD NOT attempt to connect to the address until the tube is open. The contact associated with this channel doesn't have tubes capabilities. Accept a D-Bus tube that's in the "local pending" state. The connection manager will attempt to open the tube. The tube remains in the "local pending" state until the TubeChannelStateChanged signal is emitted. The access control the connection manager applies to the D-Bus socket. The string describing the address of the private bus. The client SHOULD NOT attempt to connect to the address until the tube is open. Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a participant opens or closes the tube. This provides change notification for the DBusNames property. Array of handles and D-Bus names of new participants. Array of handles of former participants.

A string representing the service name that will be used over the tube. It SHOULD be a well-known D-Bus service name, of the form com.example.ServiceName.

When the tube is offered, the service name is transmitted to the other end.

When requesting a channel with CreateChannel, this property MUST be included in the request.

For a multi-user (i.e. Handle_Type_Room) D-Bus tube, a mapping between contact handles and their unique bus names on this tube. For a peer-to-peer (i.e. Handle_Type_Contact) D-Bus tube, the empty dictionary. Change notification is via DBusNamesChanged. Represents the participants in a multi-user D-Bus tube, as used by the DBusNames property and the DBusNamesChanged signal. The handle of a participant in this D-Bus tube. That participant's unique name.

A list of the access control types that are supported with this channel. Note that only Socket_Access_Control_Localhost and Socket_Access_Control_Credentials can be used with D-Bus tubes. Using Socket_Access_Control_Credentials is recommended.

Socket_Access_Control_Credentials is easy to implement for a D-Bus tube, because typical D-Bus library implementations like libdbus and GDBus already have to support it to be able to connect to the system or session bus, and usually enable it by default; so there's typically no good reason to relax access control to Localhost.

When requesting a channel with Connection.Interface.Requests.CreateChannel, this property MUST NOT be included in the request.

telepathy-qt-0.9.6.1/spec/Client_Handler.xml0000644000175100017520000003732312530423576022261 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2009 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as a stable interface)

Handlers are the user interface for a channel. They turn an abstract Telepathy channel into something the user wants to see, like a text message stream or an audio and/or video call.

For its entire lifetime, each channel on a connection known to the channel dispatcher is either being processed by the channel dispatcher, or being handled by precisely one Handler.

Because each channel is only handled by one Handler, handlers may perform actions that only make sense to do once, such as acknowledging Text messages, doing the actual streaming for StreamedMedia channels with the MediaSignalling interface, or transferring the file in FileTransfer channels.

When a new incoming channel (one with Requested = FALSE) is offered to Approvers by the channel dispatcher, it also offers the Approvers a list of all the running or activatable handlers whose HandlerChannelFilter property (possibly as cached in the .client file) indicates that they are able to handle the channel. The Approvers can choose one of those channel handlers to handle the channel.

When a new outgoing channel (one with Requested = TRUE) appears, the channel dispatcher passes it to an appropriate channel handler automatically.

A specification of the channels that this channel handler can deal with. It will be offered to approvers as a potential channel handler for bundles that contain only suitable channels, or for suitable channels that must be handled separately.

This property works in exactly the same way as the Client.Observer.ObserverChannelFilter property. In particular, it cannot change while the handler process continues to own the corresponding Client bus name.

In the .client file, it is represented in the same way as ObserverChannelFilter, but the group has the same name as this interface and the keys start with HandlerChannelFilter instead of ObserverChannelFilter.

If true, channels destined for this handler are automatically handled, without invoking approvers.

The intended usage is to allow a client handling one channel to pick up closely related channels. Suppose a client capable of handling both Text and StreamedMedia, org.freedesktop.Telepathy.Client.Empathy, is handling a StreamedMedia channel. That client can take a second well-known bus name, say org.freedesktop.Telepathy.Client.Empathy._1._42.Bundle1, and configure an object at /org/freedesktop/Telepathy/Client/Empathy/_1/_42/Bundle1 with BypassApproval = TRUE, whose HandlerChannelFilter matches closely related Text channels by their Bundle property.

For service-activatable handlers, this property should be specified in the handler's .client file as follows:

[org.freedesktop.Telepathy.Client.Handler]
BypassApproval=true
A DBus_Interface, followed by a slash '/' character and an identifier for a capability defined by that interface. The capability identifier SHOULD be in lower case. If an interface references an external specification which is case-insensitive (such as MIME), then names from that specification MUST be normalized to lower-case before providing them to this Telepathy API, so that implementations can safely rely on simple byte-by-byte comparison. These aren't D-Bus core Properties, and we want them to look visibly different.

So far, all client capabilities are defined by the MediaSignalling interface.

The set of additional capabilities supported by this handler. This describes things like support for streamed media codecs and NAT traversal mechanisms: see the Contact Capabilities interface for more details.

For handlers that have a .client file, the channel dispatcher may discover this property from the org.freedesktop.Telepathy.Client.Handler.Capabilities group; for each capability, that group contains a key whose name is the capability, with value true. Keys with other values SHOULD NOT appear in this group.

For instance, the .client file for a streamed media handler that supports ICE-UDP NAT traversal, Speex audio, and Theora and H264 video might contain this group:

[org.freedesktop.Telepathy.Client.Handler.Capabilities]
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/ice-udp=true
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/audio/speex=true
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/theora=true
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/h264=true

Like the HandlerChannelFilter property, this property cannot change while the Handler owns its Client bus name. However, the .client file, if any, can change (due to upgrades or installation of pluggable codecs), and the capabilities really supported by the handler might not exactly match what is cached in the .client file.

The client file is installed statically and is intended to list codecs etc. that the handler guarantees it can support (e.g. by having a hard dependency on them), whereas the running handler process might be able to find additional codecs.

Called by the channel dispatcher when this client should handle these channels, or when this client should present channels that it is already handling to the user (e.g. bring them into the foreground).

Clients are expected to know what channels they're already handling, and which channel object path corresponds to which window or tab. This can easily be done using a hash table keyed by channels' object paths.

This method can raise any D-Bus error. If it does, the handler is assumed to have failed or crashed, and the channel dispatcher MUST recover in an implementation-specific way; it MAY attempt to dispatch the channels to another handler, or close the channels.

If closing the channels, it is RECOMMENDED that the channel dispatcher attempts to close the channels using Channel.Close, but resorts to calling Channel.Interface.Destroyable.Destroy (if available) or ignoring the channel (if not) if the same handler repeatedly fails to handle channels.

After HandleChannels returns successfully, the client process is considered to be responsible for the channel until it its unique name disappears from the bus.

If a process has multiple Client bus names - some temporary and some long-lived - and drops one of the temporary bus names in order to reduce the set of channels that it will handle, any channels that it is already handling should remain unaffected.

The Account with which the channels are associated. The well-known bus name to use is that of the AccountManager. The Connection with which the channels are associated. The well-known bus name to use can be derived from this object path by removing the leading '/' and replacing all subsequent '/' by '.'. The channels and their immutable properties. Their well-known bus name is the same as that of the Connection.

The requests satisfied by these channels.

If the handler implements Requests, this tells it that these channels match previous AddRequest calls that it may have received.

There can be more than one, if they were EnsureChannel requests.

The time at which user action occurred, or 0 if this channel is to be handled for some reason not involving user action. Handlers SHOULD use this for focus-stealing prevention, if applicable. This property has the same semantic as User_Action_Timestamp but is unsigned for historical reasons.

Additional information about these channels. Currently defined keys are:

request-properties - a{oa{sv}}
A map from ChannelRequest paths listed in Requests_Satisfied to Qualified_Property_Value_Maps containing namespaced immutable properties of each request.

When more keys are defined for this dictionary, all will be optional; handlers MAY safely ignore any entry in this dictionary.

A list of the channels that this process is currently handling.

There is no change notification.

This property exists for state recovery - it makes it possible for channel handling to survive a ChannelDispatcher crash.

If the channel dispatcher is automatically replaced, the replacement can discover all Handlers by looking for the Client well-known bus names, and discover which channels they are currently handling. Once this has been done, all unhandled channels can be re-dispatched, and the only issue visible to the user is that unhandled channels that they have already approved might be sent back to Approvers.

The value of this property SHOULD be the same for all Client instances that share a unique bus name, and SHOULD include all channels that are being handled, even if they were conceptually handled by a different Client instance.

Otherwise, when a process released a temporary Client name, channels that it handled because of that Client name would no longer be state-recoverable.

telepathy-qt-0.9.6.1/spec/Channel_Interface_SASL_Authentication.xml0000644000175100017520000010344312530423576026614 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

A channel interface for SASL authentication, as defined by RFC 4422. When this interface appears on a ServerAuthentication channel, it represents authentication with the server. In future, it could also be used to authenticate with secondary services, or even to authenticate end-to-end connections with contacts. As a result, this interface does not REQUIRE ServerAuthentication to allow for a potential future Channel.Type.PeerAuthentication interface.

In any protocol that requires a password, the connection manager can use this channel to let a user interface carry out a simple SASL-like handshake with it, as a way to get the user's credentials interactively. This can be used to connect to protocols that may require a password, without requiring that the password is saved in the Account.Parameters.

In some protocols, such as XMPP, authentication with the server is also carried out using SASL. In these protocols, a channel with this interface can provide a simple 1:1 mapping of the SASL negotiations taking place in the protocol, allowing more advanced clients to perform authentication via SASL mechanisms not known to the connection manager.

By providing SASL directly when the protocol supports it, we can use mechanisms like Kerberos or Google's X-GOOGLE-TOKEN without specific support in the connection manager.

For channels managed by a ChannelDispatcher, only the channel's Handler may call the methods on this interface. Other clients MAY observe the authentication process by watching its signals and properties.

There can only be one Handler, which is a good fit for SASL's 1-1 conversation between a client and a server.

A SASL mechanism, as defined by RFC 4422 and registered in the IANA registry of SASL mechanisms, or an unregistered SASL mechanism such as X-GOOGLE-TOKEN used in the same contexts.

As a special case, pseudo-mechanisms starting with X-TELEPATHY- are defined by this specification. Use of these pseudo-mechanisms indicates that the user's credentials are to be passed to the connection manager, which will then use them for authentication with the service, either by implementing the client side of some SASL mechanisms itself or by using a non-SASL protocol. The only such pseudo-mechanism currently defined is X-TELEPATHY-PASSWORD.

The X-TELEPATHY-PASSWORD mechanism is extremely simple:

  • The client MUST call StartMechanismWithData, with Initial_Data set to the password encoded in UTF-8. For simplicity, calling StartMechanism followed by calling Respond is not allowed in this mechanism.
  • The connection manager uses the password, together with authentication details from the Connection parameters, to authenticate itself to the server.
  • When the connection manager finishes its attempt to authenticate to the server, the channel's state changes to either SASL_Status_Server_Succeeded or SASL_Status_Server_Failed as appropriate.

The SASL mechanisms as offered by the server, plus any pseudo-SASL mechanisms supported by the connection manager for credentials transfer. For instance, in a protocol that natively uses SASL (like XMPP), this might be [ "X-TELEPATHY-PASSWORD", "PLAIN", "DIGEST-MD5", "SCRAM-SHA-1" ].

To make it possible to implement a very simple password-querying user interface without knowledge of any particular SASL mechanism, implementations of this interface MUST implement the pseudo-mechanism X-TELEPATHY-PASSWORD, unless none of the available mechanisms use a password at all.

If true, StartMechanismWithData can be expected to work for SASL mechanisms not starting with X-TELEPATHY- (this is the case in most, but not all, protocols). If false, StartMechanism must be used instead.

This property does not affect the X-TELEPATHY- pseudo-mechanisms such as X-TELEPATHY-PASSWORD, which can use StartMechanismWithData regardless of the value of this property.

If true, StartMechanism and (if supported) StartMechanismWithData can be expected to work when in one of the Failed states. If false, the only thing you can do after failure is to close the channel.

Retrying isn't required to work, although some protocols and implementations allow it.

The current status of this channel. Change notification is via the SASLStatusChanged signal.

The reason for the SASLStatus, or an empty string if the state is neither Server_Failed nor Client_Failed.

In particular, an ordinary authentication failure (as would be produced for an incorrect password) SHOULD be represented by AuthenticationFailed, cancellation by the user's request SHOULD be represented by Cancelled, and cancellation by a local process due to inconsistent or invalid challenges from the server SHOULD be represented by ServiceConfused.

If this interface appears on a ServerAuthentication channel, and connection to the server fails with an authentication failure, this error code SHOULD be copied into the Connection.ConnectionError signal.

If SASLError is non-empty, any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of Connection.ConnectionError.

If this interface appears on a ServerAuthentication channel, and connection to the server fails with an authentication failure, these details SHOULD be copied into the Connection.ConnectionError signal.

The identity for which authorization is being attempted, typically the 'account' from the RequestConnection parameters, normalized and formatted according to the conventions used for SASL in this protocol.

The normalization used for SASL might not be the same normalization used elsewhere: for instance, in a protocol with email-like identifiers such as XMPP or SIP, the user "juliet@example.com" might have to authenticate to the example.com server via SASL PLAIN as "juliet".

This is usually achieved by using the authorization identity for authentication, but an advanced Handler could offer the option to authenticate under a different identity.

The terminology used here is that the authorization identity is who you want to act as, and the authentication identity is used to prove that you may do so. For instance, if Juliet is authorized to access a role account, "sysadmin@example.com", and act on its behalf, it might be possible to authenticate as "juliet@example.com" with her own password, but request to be authorized as "sysadmin@example.com" instead of her own account. See RFC 4422 §3.4.1 for more details.

In SASL the authorization identity is normally guessed from the authentication identity, but the information available to the connection manager is the identity for which authorization is required, such as the desired JID in XMPP, so that's what we signal to UIs; it's up to the UI to choose whether to authenticate as the authorization identity or some other identity.

As a concrete example, the "sysadmin" XMPP account mentioned above would have { 'account': 'sysadmin@example.com' } in its Parameters, and this property would also be 'sysadmin@example.com'. A simple Handler would merely prompt for sysadmin@example.com's password, and use that JID as both the authorization and authentication identity, which might result in SASL PLAIN authentication with the initial response '\000sysadmin@example.com\000root'.

A more advanced Handler might also ask for an authentication identity, defaulting to 'sysadmin@example.com'; if Juliet provided authentication identity 'juliet@example.com' and password 'romeo', the Handler might perform SASL PLAIN authentication using the initial response 'sysadmin@example.com\000juliet@example.com\000romeo'.

The default username for use with SASL mechanisms that deal with a "simple username" (as defined in RFC 4422). If such a SASL mechanism is in use, clients SHOULD default to using the DefaultUsername; also, if the client uses the DefaultUsername, it SHOULD assume that the authorization identity AuthorizationIdentity will be derived from it by the server.

In XMPP, servers typically expect "user@example.com" to authenticate with username "user"; this was a SHOULD in RFC 3920.

3920bis weakens that SHOULD to "in the absence of local information provided by the server, an XMPP client SHOULD assume that the authentication identity for such a SASL mechanism is the combination of a user name and password, where the simple user name is the localpart of the user's JID".

For example, in the simple case, if the user connects with RequestConnection({ account: "user@example.com" }) and use PLAIN with password "password", he or she should authenticate like so: "\0user\0password" and the channel will look like this:

{ "...DefaultUsername": "user",
  "...AuthorizationIdentity": "user@example.com }

In the complex case, if the same user is using his or her sysadmin powers to log in as the "announcements" role address, he or she would connect with RequestConnection({ account: "announcements@example.com" }) and the SASL channel would look like this:

{ "...DefaultUsername": "announcements",
  "...AuthorizationIdentity": "announcements@example.com }

A sufficiently elaborate UI could give the opportunity to override the username from "announcements" to "user". The user's simple username is still "user", and the password is still "password", but this time he or she is trying to authorize to act as announcements@example.com, so the UI would have to perform SASL PLAIN with this string: "announcements@example.com\0user\0password", where "announcements@example.com" is the AuthorizationIdentity.

The default realm (as defined in RFC 2831) to use for authentication, if the server does not supply one.

The server is not required to provide a realm; if it doesn't, the client is expected to ask the user or provide a sensible default, typically the requested DNS name of the server. In some implementations of DIGEST-MD5, the server does not specify a realm, but expects that the client will choose a particular default, and authentication will fail if the client's default is different. Connection managers for protocols where this occurs are more easily able to work around these implementations than a generic client would be.

Whether or not the client can save the authentication response and re-use it to automate future authentication challenges.

If this property is False, the client SHOULD NOT attempt to cache the authentication response in its own keyring.

If this property is not specified, it should be treated as if it were True.

Some protocols or services may have terms and conditions that prohibit caching a user's credentials.
The chosen mechanism.

Start an authentication try using Mechanism, without sending initial data (an "initial response" as defined in RFC 4422).

This method is appropriate for mechanisms where the client cannot send anything until it receives a challenge from the server, such as DIGEST-MD5 in "initial authentication" mode.

The channel is not in a state where starting authentication makes sense (i.e. SASL_Status_Not_Started, or (if CanTryAgain is true) SASL_Status_Server_Failed or SASL_Status_Client_Failed). You should call AbortSASL and wait for SASL_Status_Client_Failed before starting another attempt. The server or connection manager doesn't implement the given SASL mechanism. Choose a SASL mechanism from AvailableMechanisms, or abort authentication if none of them are suitable.
The chosen mechanism. Initial data (an "initial response" in RFC 4422's terminology) to send with the mechanism.

Start an authentication try using Mechanism, and send Initial_Data as the "initial response" defined in RFC 4422 §3.3.

This method is appropriate for mechanisms where the client may send data first, such as PLAIN, or must send data first, such as DIGEST-MD5 in "subsequent authentication" mode.

Having two methods allows any mechanism where it makes a difference to distinguish between the absence of an initial response (StartMechanism) and a zero-byte initial response (StartMechanismWithData, with Initial_Data empty).

If the HasInitialData property is false, this indicates that the underlying protocol does not make it possible to send initial data. In such protocols, this method may only be used for the X-TELEPATHY- pseudo-mechanisms (such as X-TELEPATHY-PASSWORD), and will fail if used with an ordinary SASL mechanism.

For instance, the IRC SASL extension implemented in Charybdis and Atheme does not support initial data - the first message in the exchange only carries the mechanism. This is significant if using DIGEST-MD5, which cannot be used in the faster "subsequent authentication" mode on a protocol not supporting initial data.

The channel is not in a state where starting authentication makes sense (i.e. SASL_Status_Not_Started, or (if CanTryAgain is true) SASL_Status_Server_Failed or SASL_Status_Client_Failed). You should call AbortSASL and wait for SASL_Status_Client_Failed before starting another attempt. The server or connection manager doesn't implement the given SASL mechanism (choose one from AvailableMechanisms, or abort authentication if none of them are suitable), or doesn't allow initial data to be sent (as indicated by HasInitialData; call StartMechanism instead).
The response data.

Send a response to the the last challenge received via NewChallenge.

Either the state is not In_Progress, or no challenge has been received yet, or you have already responded to the last challenge.

If the channel's status is SASL_Status_Server_Succeeded, this method confirms successful authentication and advances the status of the channel to SASL_Status_Succeeded.

If the channel's status is SASL_Status_In_Progress, calling this method indicates that the last NewChallenge signal was in fact additional data sent after a successful SASL negotiation, and declares that from the client's point of view, authentication was successful. This advances the state of the channel to SASL_Status_Client_Accepted.

In mechanisms where the server authenticates itself to the client, calling this method indicates that the client considers this to have been successful. In the case of ServerAuthentication channels, this means that the connection manager MAY continue to connect, and MAY advance the Connection.Status to Connected.

Either the state is neither In_Progress nor Server_Succeeded, or no challenge has been received yet, or you have already responded to the last challenge.
Reason for abort. Debug message for abort.

Abort the current authentication try.

If the current status is SASL_Status_Server_Failed or SASL_Status_Client_Failed, this method returns successfully, but has no further effect. If the current status is SASL_Status_Succeeded or SASL_Status_Client_Accepted then NotAvailable is raised. Otherwise, it changes the channel's state to SASL_Status_Client_Failed, with an appropriate error name and reason code.

The current state is either Succeeded or Client_Accepted.
Emitted when the status of the channel changes. The new value of SASLStatus. The new value of SASLError. The new value of SASLErrorDetails.

Emitted when a new challenge is received from the server, or when a message indicating successful authentication and containing additional data is received from the server.

When the channel's handler is ready to proceed, it should respond to the challenge by calling Respond, or respond to the additional data by calling AcceptSASL. Alternatively, it may call AbortSASL to abort authentication.

The challenge data or additional data from the server.

A reason why SASL authentication was aborted by the client.

The server sent an invalid challenge or data. The user aborted the authentication.
The initial state. The Handler SHOULD either call AbortSASL, or connect to the NewChallenge signal then call StartMechanism or StartMechanismWithData. The challenge/response exchange is in progress. The Handler SHOULD call either Respond or AcceptSASL exactly once per emission of NewChallenge, or call AbortSASL at any time. The server has indicated successful authentication, and the connection manager is waiting for confirmation from the Handler. The Handler must call either AcceptSASL or AbortSASL to indicate whether it considers authentication to have been successful. The Handler has indicated successful authentication, and the connection manager is waiting for confirmation from the server. The state will progress to either Succeeded or Server_Failed when confirmation is received. Everyone is happy (the server sent success, and the client has called AcceptSASL). Connection to the server will proceed as soon as this state is reached. The Handler SHOULD call Close to close the channel. The server has indicated an authentication failure. If CanTryAgain is true, the client may try to authenticate again, by calling StartMechanism or StartMechanismWithData again. Otherwise, it should give up completely, by calling Close on the channel. The client has indicated an authentication failure. The possible actions are the same as for Server_Failed.
telepathy-qt-0.9.6.1/spec/Connection_Interface_Requests.xml0000644000175100017520000007171612530423576025364 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2008 Collabora Limited Copyright (C) 2008 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An enhanced version of the Telepathy connection interface, which can represent bundles of channels that should be dispatched together, and does not assume any particular properties by which channels are uniquely identifiable.

If this interface is implemented on a connection, then NewChannels MUST be emitted for all new channels, even those created with RequestChannel.

(as stable API) Enough details of a channel that clients can work out how to dispatch or handle it. The object path of the channel.

Properties of the channel.

Connection managers MUST NOT include properties in this mapping if their values can change. Clients MUST ignore properties that appear in this mapping if their values can change.

If properties that could change were included, the following race condition would be likely to exist in some cases:

  • NewChannels or Get("Channels") includes a property P with value V1
  • Client creates a proxy object for the channel
  • The value of P changes to V2
  • Client connects to PChanged signal
  • Client should call Get("P") or GetAll here, to avoid the race, but client's author has forgotten to do so
  • Proxy object thinks P == V1, but actually P == V2

We've taken the opportunity to make the API encourage the client author to get it right. Where possible, we intend that properties whose value will be used in channel dispatching or other "early" processing will be defined so that they are immutable (can never change).

Each dictionary MUST contain the keys org.freedesktop.Telepathy.Channel.ChannelType, org.freedesktop.Telepathy.Channel.TargetHandleType, org.freedesktop.Telepathy.Channel.TargetHandle, org.freedesktop.Telepathy.Channel.TargetID and org.freedesktop.Telepathy.Channel.Requested.

We expect these to be crucial to the channel-dispatching process.

(as stable API) It is now guaranteed that CreateChannel returns the channel before NewChannels announces it (the reverse was previously guaranteed).

Request that an entirely new channel is created.

There is deliberately no flag corresponding to the suppress_handler argument to Connection.RequestChannel, because passing a FALSE value for that argument is deprecated. Requests made using this interface always behave as though suppress_handler was TRUE.

A dictionary containing desirable properties, which MUST include ChannelType. Some properties are defined such that only an exact match makes sense, and connection managers MUST NOT satisfy a request with a channel where that property does not match; some properties are defined such that the connection manager MAY treat the request as merely a hint, and make a best-effort attempt to satisfy it. This is documented separately for each property.

If this dictionary contains a property whose semantics are not known to the connection manager, this method MUST fail without side-effects (in particular it must not create a new channel).

This is necessary if we want to be able to invent properties in future that, when used in a request, are hard requirements rather than just hints. A connection manager that did not know the semantics of those properties could incorrectly return a new channel that did not satisfy the requirements.

The connection manager MUST NOT respond successfully, and SHOULD NOT create a new channel or cause any other side-effects, unless it can create a new channel that satisfies the client's requirements.

Properties that will be set by this argument need not have write access after the channel has been created - indeed, it is expected that most will be read-only.

The Channel object, which MUST NOT be signalled with NewChannels until after this method returns.

This allows the requester to alter its handling of NewChannels by knowing whether one of the channels satisfied a request it made.

Properties of the channel that was produced, equivalent to the properties in Channel_Details. Connection managers MUST NOT include properties here whose values can change, for the same reasons as in Channel_Details.

The channel request was one that can never succeed, such as requesting an unsupported channel type, or requesting a channel type which this connection manager does not support with the given target handle type. An invalid handle was requested as the value of a property whose value is a handle (like Channel.TargetHandle), or a syntactically invalid identifier was requested as the value of a property whose value is the string corresponding to a handle (like Channel.TargetID). The request matched the fixed properties of a Requestable_Channel_Class in RequestableChannelClasses, but the allowed arguments did not make sense; for example, a RoomList was requested, but the Server property provided was not a valid DNS name. The requested channel cannot be created because the requested contact is using a client that lacks a particular feature. The requested channel cannot be created because the target is offline.

The requested channel cannot be created, but in principle, a similar request might succeed in future. For instance, this might be because:

  • a channel matching the request already exists and the protocol requires that only one such channel can exist at a time
  • a channel matching the request has already been requested (by a previous call to CreateChannel, EnsureChannel, Connection.RequestChannel or similar) and the protocol requires that only one such channel can exist at a time
It is now guaranteed that if the channel was created by this call to EnsureChannel, it's returned before NewChannels announces it (the reverse was previously guaranteed).

Request that channels are ensured to exist.

The connection manager is in the best position to determine which existing channels could satisfy which requests.

A dictionary containing desirable properties, with the same semantics as the corresponding parameter to CreateChannel.

If false, the caller of EnsureChannel MUST assume that some other process is handling this channel; if true, the caller of EnsureChannel SHOULD handle it themselves or delegate it to another client.

If the creation of a channel makes several calls to EnsureChannel (and no other requests) successful, exactly one of those calls MUST return a true value for this argument.

If the creation of a channel makes other requests successful, the value returned for this argument MUST be such that exactly one of the clients making requests ends up responsible for the channel. In particular, if CreateChannel returns a channel C, any EnsureChannel calls that also return C MUST return a false value for this argument.

The Channel object. If it was created as a result of this method call, it MUST NOT be signalled by NewChannels until after this method returns.

This allows the requester to alter its handling of NewChannels by knowing whether one of the channels satisfied a request it made.

Properties of the channel that was produced, equivalent to the properties in Channel_Details. Connection managers MUST NOT include properties here whose values can change, for the same reasons as in Channel_Details.

The channel request was one that can never succeed, such as requesting an unsupported channel type, or requesting a channel type which this connection manager does not support with the given target handle type. An invalid handle was requested as the value of a property whose value is a handle (like Channel.TargetHandle), or a syntactically invalid identifier was requested as the value of a property whose value is the string corresponding to a handle (like Channel.TargetID). The request matched the fixed properties of a Requestable_Channel_Class in RequestableChannelClasses, but the allowed arguments did not make sense; for example, a RoomList was requested, but the Server property provided was not a valid DNS name. The requested channel cannot be created because the requested contact is using a client that lacks a particular feature. The requested channel cannot be created because the target is offline. The requested channel cannot be created, but in principle, a similar request might succeed in future.
(as stable API) Added a guarantee of ordering relative to NewChannel

New channels have been created. The connection manager SHOULD emit a single signal for any group of closely related channels that are created at the same time, so that the channel dispatcher can try to dispatch them to a handler as a unit.

In particular, if additional channels are created as a side-effect of a call to CreateChannel, these channels SHOULD appear in the same NewChannels signal as the channel that satisfies the request.

Joining a MUC Tube in XMPP requires joining the corresponding MUC (chatroom), so a Text channel can be created as a side-effect.

Every time NewChannels is emitted, it MUST be followed by a Connection.NewChannel signal for each channel.

The double signal emission is for the benefit of older Telepathy clients, which won't be listening for NewChannels.

The more informative NewChannels signal comes first so that clients that did not examine the connection to find out whether Requests is supported will see the more informative signal for each channel first, and then ignore the less informative signal because it announces a new channel of which they are already aware.

The channels and their details. All channels that are signalled together like this MUST have the same Bundle property, which may either refer to an existing bundle, or establish a new bundle.
(as stable API) A list of all the channels which currently exist on this connection. Change notification is via the NewChannels and ChannelClosed signals. (as stable API) Emitted when a channel is closed and hence disappears from the Channels property. This is redundant with the Closed signal on the channel itself, but it does provide full change notification for the Channels property. The channel which has been removed from the Channels property (as stable API)

Mapping representing a class of channels that can be requested from a connection manager, can be handled by a user interface, are supported by a contact, etc.

Classes of channel are identified by the fixed values of a subset of their properties.

Channel classes SHOULD always include the keys org.freedesktop.Telepathy.Channel.ChannelType and org.freedesktop.Telepathy.Channel.TargetHandleType. (One exception is that ContactSearch channels do not have TargetHandleType None in their requestable channel classes, for historical reasons.)

A D-Bus interface name, followed by a dot and a D-Bus property name. The value of the property.
(as stable API)

Structure representing a class of channels that can be requested, identified by a set of properties that identify that class of channel.

This will often just be the channel type and the handle type, but can include other properties of the channel - for instance, encrypted channels might require properties that unencrypted channels do not, like an encryption key.

In some cases, these classes of channel may overlap, in the sense that one class fixes all the properties that another class does, plus some more properties.

For older clients to still be able to understand how to request channels in the presence of a hypothetical "encryption" interface, we'd need to represent it like this:

  • class 1: ChannelType = Text, TargetHandleType = CONTACT
  • class 2: Channel.ChannelType = Text, Channel.TargetHandleType = CONTACT, Encryption.Encrypted = TRUE

The property values that identify this requestable channel class. These properties MUST be included in requests for a channel of this class, and MUST take these values.

Clients that do not understand the semantics of all the Fixed_Properties MUST NOT request channels of this class, since they would be unable to avoid making an incorrect request.

This implies that connection managers wishing to make channels available to old or minimal clients SHOULD have a channel class with the minimum number of Fixed_Properties, and MAY additionally have channel classes with extra Fixed_Properties.

Interface designers SHOULD avoid introducing fixed properties whose types are not serializable in a .manager file.

Connection managers with a fixed property that is not serializable cannot have a complete .manager file.

Properties that MAY be set when requesting a channel of this channel type and handle type.

This array MUST NOT include properties that are in the Fixed_Properties mapping.

Properties in this array may either be required or optional, according to their documented semantics.

For instance, if TargetHandleType takes a value that is not Handle_Type_None, one or the other of TargetHandle and TargetID is required. Clients are expected to understand the documented relationship between the properties, so we do not have separate arrays of required and optional properties.

If this array contains the Bundle property, then this class of channel can be combined with other channels with that property in a request, or added to an existing bundle. If not, this signifies that the connection manager is unable to mark channels of this class as part of a bundle - this means that to the remote contact they are likely to be indistinguishable from channels requested separately.

(as stable API)

The classes of channel that are expected to be available on this connection, i.e. those for which CreateChannel can reasonably be expected to succeed. User interfaces can use this information to show or hide UI components.

This property cannot change after the connection has gone to state Connection_Status_Connected, so there is no change notification (if the connection has context-dependent capabilities, it SHOULD advertise support for all classes of channel that it might support during its lifetime). Before this state has been reached, the value of this property is undefined.

This is not on an optional interface, because connection managers can always offer some sort of clue about the channel classes they expect to support (at worst, they can announce support for everything for which they have code).

telepathy-qt-0.9.6.1/spec/Channel_Interface_Anonymity.xml0000644000175100017520000000606012530423576024777 0ustar00kaffeinekaffeine00000000000000 Copyright © 2008-2010 Nokia Corporation Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

Interface for requesting the anonymity modes of a channel (as defined in Connection.Interface.Anonymity).

The list of initially requested anonymity modes on the channel. This MUST NOT change, and is Requestable. Whether or not the anonymity settings are required for this channel. This MUST NOT change, and is Requestable.

This is the ID that the remote user of the channel MAY see (assuming there's a single ID). For example, for SIP connections where the From address has been scrambled by the CM, the scrambled address would be available here for the client to see. This is completely optional, and MAY be an empty string ("") in cases where anonymity modes are not set, or the CM doesn't know what the remote contact will see, or any other case where this doesn't make sense.

This MAY change over the lifetime of the channel, and SHOULD NOT be used with the Request interface.

telepathy-qt-0.9.6.1/spec/Channel_Interface_Captcha_Authentication.xml0000644000175100017520000005561012530423576027417 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010-2012 Collabora Limited

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(version 1)

A channel interface for captcha authentication. When this interface appears on a ServerAuthentication channel, it represents authentication with the server. In future, it could also be used to authenticate with secondary services, or even to authenticate end-to-end connections with contacts. As a result, this interface does not REQUIRE ServerAuthentication to allow for a potential future Channel.Type.PeerAuthentication interface.

In any protocol that requires a captcha, the connection manager can use this channel to let a user interface carry out a simple captcha handshake with it, as a way to test the user is human interactively.

For channels managed by a ChannelDispatcher, only the channel's Handler may call the methods on this interface. Other clients MAY observe the authentication process by watching its signals and properties.

The most commonly used form of captcha challenge is OCR (recognition of distorted letters or words in an image), but for accessibility reasons, this interface also allows various other types of challenge, such as plain-text questions or recognition of words in audio. Its structure is modelled on XMPP's XEP-0158, but can be used with other protocols by mapping their semantics into those used in XMPP.

It is important to support multiple types of captcha challenge to avoid discriminating against certain users; for instance, blind or partially-sighted users cannot be expected to answer an OCR challenge.

XEP-0158 supports a superset of all other known protocols' captcha interfaces, and is sufficiently elaborate that we expect it will continue to do so.

There can only be one Handler, which is a good fit for the question/answer model implied by captchas.

A struct containing information regarding a single captcha mechanism.

The ID with which to reference this captcha method when retrieving its data and answering it. They are unique within this channel instance only.

The type of challenge as defined by XEP-0158. For instance, the commonly-used "type the letters/words you see in this image" challenge is represented by ocr

A human-readable label for the challenge, as defined in XEP-0158.

If the server does not supply a label for a challenge of type other than qa, connection managers SHOULD set Label to an empty string instead of generating their own text. If the Label is an empty string, the Handler SHOULD replace it with a generic label in the user's locale, such as the strings suggested in XEP-0158 (for instance, Enter the text you see for ocr challenges). The Handler MAY use those generic labels in any case, as per the Internationalization Considerations section of XEP-0158.

Connection managers are not usually localized, so text generated by the connection manager would be in English, regardless of the user's locale. The Handler is better-placed to generate a generic Label in the user's locale.

For challenges of type qa, the Label is a plain-text question for the user to answer. The connection manager SHOULD NOT provide an empty Label; if it does, the Handler SHOULD treat that challenge as impossible, and SHOULD NOT attempt to display it.

One flag defined: Required. Most captchas will have no flags.

A list of MIME types the server is offering to provide for this captcha method.

A mapping of captcha IDs to answer strings. The ID of the captcha to which the associated answer string is answering. The answer string to answer the captcha referenced by the associated ID.

If true, GetCaptchas can be expected to return new captcha information when in the Local_Pending state. If false, GetCaptchas will return NotAvailable on subsequent calls.

Refreshing the captcha isn't required to work, although some protocols and implementations allow it. This is usually done in case a given captcha is unintelligible.

The current status of this channel.

Because only the Handler should call methods on this interface, the Handler MAY reduce round-trips by not fetching the initial value of this property, and instead assume that is initially Local_Pending.

This assumption normally avoids the need to call GetAll(), since the values of CaptchaError and CaptchaErrorDetails are also implied by this assumption, and the only other property is CanRetryCaptcha, which is immutable.

The reason for the CaptchaStatus, or an empty string if the state is neither Try_Again nor Failed.

Typical values: "", Cancelled, AuthenticationFailed, CaptchaNotSupported

In particular, an ordinary authentication failure (as would be produced for an incorrect answer) SHOULD be represented by AuthenticationFailed, cancellation by the user's request SHOULD be represented by Cancelled, cancellation due to the inability to display the captcha to the user or otherwise answer it SHOULD be represented by CaptchaNotSupported, and cancellation by a local process due to inconsistent or invalid challenges from the server SHOULD be represented by ServiceConfused.

If this interface appears on a ServerAuthentication channel, and connection to the server fails with an authentication failure, this error code SHOULD be copied into the Connection.ConnectionError signal.

If CaptchaError is non-empty, any additional information about the last disconnection; otherwise, the empty map. The keys and values are the same as for the second argument of Connection.ConnectionError.

If this interface appears on a ServerAuthentication channel, and connection to the server fails with an authentication failure, these details SHOULD be copied into the Connection.ConnectionError signal.

Information about each of the available captcha methods. The number of captcha methods required to be answered in order to successfully complete this captcha challenge (most frequently 1, but XMPP allows servers to demand that more than one captcha is answered). The language of each Label in Captcha_Info if available, for instance en_US, or "" if unknown.

Gets information regarding each of the captcha methods available and which and how many need to be successfully answered

To call this method successfully, the state must be Local_Pending or Try_Again. If it is Local_Pending, it remains Local_Pending. If called more than once while in Local_Pending state, or if the state is Try_Again, this method fetches a new set of captcha challenges, if possible, and the state returns to Local_Pending.

For instance, you could call GetCaptchas again from Local_Pending state if the user indicates that they can't understand the initially-offered captcha.

This is a method, not a property, so that it can be used to fetch more than one set of captcha challenges, and so that change notification is not required. Only the Handler should call this method and calling GetAll would not reduce round-trips, so the usual reasons to prefer a property do not apply here.

Either the state is not Local_Pending or Try_Again, or it has already been called and CanRetryCaptcha is False.
The ID of the captcha of which to retrieve data. MIME type picked by the Handler, chosen from the list of MIME types received in GetCaptchas. XEP-0158 allows the same captcha to be made available in multiple formats, for instance the same spoken question as audio/x-wav, application/ogg and audio/speex. Captcha data as requested.

Fetch and return the captcha data. In protocols where captchas are downloaded out-of-band (for instance via HTTP), the connection manager is expected to do so.

Returns an empty array if the type was "qa"

If audio-based and image-based captchas are both available, we don't want to waste time downloading the audio until/unless the user asks to hear it. The extra D-Bus round-trips are not a problem, since they are expected to be quick compared with the time taken for the user to solve the captcha.

The state is not in Local_Pending or GetCaptchas had never been called.
The mapping of captcha IDs to answer strings.

Answer as many captchas as desired and/or required.

Callable in state Local_Pending only. State changes to Remote_Pending.

The state is not in Local_Pending.
Reason for cancelling. This MAY be used to choose an error response to the remote server, and SHOULD also be reflected in the CaptchaError. A textual description of the reason for cancelling, supplied by the Handler. This message SHOULD NOT be sent to the remote server, but SHOULD be copied into the 'debug-message' field of the CaptchaErrorDetails and ConnectionError.

Cancel. State changes to Failed with error NotAvailable or Cancelled if it isn't already Failed. All you can do now is to close the channel.

The current state is Failed.

Extra flags to include with Captcha information

This captcha mechanism is required to be successfully answered in order to pass this captcha challenge.

A reason why captcha authentication was aborted by the client.

The user aborted the authentication. If this is used, the CaptchaError SHOULD be set to Cancelled The Handler doesn't support the given/required captcha types. If this is used, the CaptchaError SHOULD be set to CaptchaNotSupported. This SHOULD also be used if Close is called before CancelCaptcha. If no Handler supports captcha channels, the ChannelDispatcher will just call Close, because it has no knowledge of specific channel types. The Handler doesn't understand the captcha data received. The challenger may be sending gibberish. If this is used, the CaptchaError SHOULD be set to ServiceConfused.
The challenge/response exchange is in progress and waiting for a local action. Call AnswerCaptchas to go to the Remote_Pending state, or call CancelCaptcha followed by Close to give up. The challenge/response exchange is in progress and waiting for a response from the server. Wait for a reply from the server, which will result in the Succeeded, Try_Again, or Failed state, or call CancelCaptcha followed by Close to give up. Everyone is happy. Connection to the server will proceed as soon as this state is reached. There is nothing useful to do in this state except to call Close to close the channel. The server has indicated an authentication failure. Call GetCaptchas again to get a new captcha, or CancelCaptcha followed by Close to give up. Authentication has failed in some way. There is nothing useful to do in this state except to close the channel with Close.
telepathy-qt-0.9.6.1/spec/Channel_Dispatcher_Interface_Messages1.xml0000644000175100017520000001714112530423576027010 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2011-2013 Collabora Ltd. Copyright (C) 2011 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface allows DBus clients to use the ChannelDispatcher to send one-off text messages to a contact, identified by account and target ID, without requiring the caller to handle channels or be the primary message UI.

This enables entities other than the main UI to send messages to contacts.

The Account through which to communicate. The contact to send the message to. The parts of the message, the same as for Messages.SendMessage. Flags influencing how to send the message, the same as for Messages.SendMessage. An opaque token equivalent to the one returned by Messages.SendMessage.

Submit a message to the server for sending, like the Messages.SendMessage method.

If the Account is connected and a Text channel to the Target_ID already exists, this method is equivalent to sending the same message via that channel.

Otherwise, this method creates a channel (connecting the Account if appropriate), sends the desired message, and closes the channel as if via Channel.Close, without acknowledging any messages received on that channel during that time.

If any messages are received on that channel before it is closed, a correct connection manager implementation will reopen the channel when it is closed, resulting in those "rescued" messages being processed by the system's normal Handler for text channels. In particular, this deals with the situation where a successful or failed delivery report is received before the channel is closed.

Expecting a trivial client (perhaps a send-only IRC bot, or a simple SMS-sending API) to go through all those steps to send a message seems somewhat unreasonable. Having this as a method in the ChannelDispatcher lets it take some short-cuts if required, and centralizes the implementation to reduce the risk of mistakes that cause message loss.

The ChannelDispatcher SHOULD support this method for any connection manager that would accept channel requests of this form:

  {
    …Channel.ChannelType:
        …Channel.Type.Text,
    …Channel.TargetHandleType:
        Contact,
    …Channel.TargetID:
    Target_ID
  }

However, if the connection manager provides additional APIs (such as a way to open "send-only" channels), the ChannelDispatcher MAY use those: it is not required to use those exact request parameters.

This method may raise any error that would be raised by the Requests.EnsureChannel or Messages.SendMessage methods, or signalled by the Failed signal.

The connection manager does not implement Text channels that communicate with a named contact. The Target_ID was not syntactically valid for the Account's protocol. The requested message is malformed and cannot be sent. The requested channel cannot be created because the target is offline. The requested channel cannot be created, but in principle, a similar request might succeed in future.
telepathy-qt-0.9.6.1/spec/Channel_Interface_Securable.xml0000644000175100017520000000674312530423576024725 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

as stable API

This interface exists to expose security information about Channels. The two properties are sometimes immutable and can be used to make decisions on how cautious to be about transferring sensitive data. The special case of ServerAuthentication channels is one example of where the two properties are immutable.

For example, clients MAY use these properties to decide whether the PLAIN mechanism is acceptable for a SASLAuthentication channel.

True if this channel occurs over an encrypted connection. This does not imply that steps have been taken to avoid man-in-the-middle attacks.

For future support for RFC 5056 Channel Binding it is desirable to be able to use some SASL mechanisms over an encrypted connection to an unverified peer, which can prove that it is the desired destination during the SASL negotiation.

True if this channel occurs over a connection that is protected against tampering, and has been verified to be with the desired destination: for instance, one where TLS was previously negotiated, and the TLS certificate has been verified against a configured certificate authority or accepted by the user.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Presence.xml0000644000175100017520000004154712530423576025314 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Mapping used in Last_Activity_And_Statuses and passed to SetStatus, representing a collection of statuses. Use of this mapping with more than one member is deprecated. Structure representing a contact's presence, containing a last-activity time (deprecated) and a Multiple_Status_Map. Mapping returned by GetPresence and signalled by PresenceUpdate, where the keys are contacts and the values represent their presences. The string identifier of the desired status A dictionary of optional parameter names mapped to their variant-boxed values Request that a single presence status is published for the user, along with any desired parameters. Changes will be indicated by PresenceUpdate signals being emitted. Request that all of a user's presence statuses be removed. Be aware that this request may simply result in the statuses being replaced by a default available status. Changes will be indicated by PresenceUpdate signals being emitted. An array of the contacts whose presence should be obtained Presence information in the same format as for the PresenceUpdate signal Get presence previously emitted by PresenceUpdate for the given contacts. Data is returned in the same structure as the PresenceUpdate signal. Using this method in favour of RequestPresence has the advantage that it will not wake up each client connected to the PresenceUpdate signal. A dictionary of string identifiers mapped to a struct for each status, containing:
  • a type value from one of the values above
  • a boolean to indicate if this status may be set on yourself
  • a boolean to indicate if this is an exclusive status which you may not set alongside any other
  • a dictionary of valid optional string argument names mapped to their types
Get a dictionary of the valid presence statuses for this connection. This is only available when online because only some statuses will be available on some servers.
A dictionary of contact handles mapped to a struct containing a UNIX timestamp of the last activity time (in UTC), and a dictionary mapping the contact's current status identifiers to a dictionary of optional parameter names mapped to their variant-boxed values This signal should be emitted when your own presence has been changed, or the presence of the member of any of the connection's channels has been changed, or when the presence requested by RequestPresence is available. The string identifier of the status not to publish anymore for the user Request that the given presence status is no longer published for the user. Changes will be indicated by PresenceUpdate signals being emitted. As with ClearStatus, removing a status may actually result in it being replaced by a default available status. The status requested is not currently set An array of the contacts whose presence should be obtained Request the presence for contacts on this connection. A PresenceUpdate signal will be emitted when they are received. This is not the same as subscribing to the presence of a contact, which must be done using the 'subscription' ContactList, and on some protocols presence information may not be available unless a subscription exists. The presence of the requested contacts is not reported to this connection A UNIX timestamp of the user's last activity time (in UTC) Request that the recorded last activity time for the user be updated on the server. This protocol has no concept of idle time A dictionary mapping status identifiers to dictionaries, which map optional parameter names to their variant-boxed values

Request that the user's presence be changed to the given statuses and desired parameters. Changes will be reflected by PresenceUpdate signals being emitted.

Statuses whose Connection_Presence_Type is Offline, Error or Unknown MUST NOT be passed to this function. Connection managers SHOULD reject these statuses.

The same rationale as for SimplePresence.SetPresence applies.

On certain protocols, this method may be called on a newly-created connection which is still in the DISCONNECTED state, and will sign on with the requested status. If the requested status is not available after signing on, NotAvailable will be returned and the connection will remain offline, or if the protocol does not support signing on with a certain status, Disconnected will be returned.

Client implementations SHOULD use SimplePresence instead. Connection managers implementing Presence MUST implement SimplePresence too.

This interface is for services which have a concept of presence which can be published for yourself and monitored on your contacts. Telepathy's definition of presence is based on that used by the Galago project.

Presence on an individual (yourself or one of your contacts) is modelled as a last activity time along with a set of zero or more statuses, each of which may have arbitrary key/value parameters. Valid statuses are defined per connection, and a list of them can be obtained with the GetStatuses method.

(The SimplePresence interface which replaces this one restricts presences to one status per contact, with an optional message, which is in practice all that was implemented on this interface.)

Each status has an arbitrary string identifier which should have an agreed meaning between the connection manager and any client which is expected to make use of it. The well-known values defined by the SimplePresence interface SHOULD be used where possible

As well as these well-known status identifiers, every status also has a numerical type value chosen from Connection_Presence_Type which can be used by the client to classify even unknown statuses into different fundamental types.

These numerical types exist so that even if a client does not understand the string identifier being used, and hence cannot present the presence to the user to set on themselves, it may display an approximation of the presence if it is set on a contact.

The dictionary of variant types allows the connection manager to exchange further protocol-specific information with the client. It is recommended that the string (s) argument 'message' be interpreted as an optional message which can be associated with a presence status.

If the connection has a 'subscribe' contact list, PresenceUpdate signals should be emitted to indicate changes of contacts on this list, and should also be emitted for changes in your own presence. Depending on the protocol, the signal may also be emitted for others such as people with whom you are communicating, and any user interface should be updated accordingly.

On some protocols, RequestPresence may only succeed on contacts on your 'subscribe' list, and other contacts will cause a PermissionDenied error. On protocols where there is no 'subscribe' list, and RequestPresence succeeds, a client may poll the server intermittently to update any display of presence information.

telepathy-qt-0.9.6.1/spec/Protocol.xml0000644000175100017520000005616712530423576021216 0ustar00kaffeinekaffeine00000000000000 Copyright © 2009-2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API)

An object representing a protocol for which this ConnectionManager can create Connections.

Each Protocol object has the same well-known bus name as its parent ConnectionManager. Its object path is formed by taking the ConnectionManager's object path and appending '/', followed by the Protocol name with any hyphen/minus '-' converted to underscores '_'.

This is the same as the representation of protocol names in Account object paths, and in Connection object paths and bus names. For instance, telepathy-gabble and telepathy-salut would implement objects at /org/freedesktop/Telepathy/ConnectionManager/gabble/jabber and /org/freedesktop/Telepathy/ConnectionManager/salut/local_xmpp, respectively.

If the ConnectionManager has a .manager file, each Protocol's immutable properties must be represented in that file; the representation is described as part of the documentation for each property. For instance, a very simple ConnectionManager with one Protocol might be represented like this:

[ConnectionManager]
Interfaces=

[Protocol example]
Interfaces=
ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;
param-account=s required
param-password=s required secret
RequestableChannelClasses=text;
VCardField=x-example
EnglishName=Example
Icon=im-example
AuthenticationTypes=org.freedesktop.Telepathy.Channel.Type.ServerTLSConnection;org.freedesktop.Telepathy.Channel.Interface.SASLAuthentication;

[text]
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;

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 ConnectionManager 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.

The parameters which may be specified in the Parameters of an Account (or, for specialised applications which do not use the account manager, passed to 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 ConnectionManager 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 ConnectionManager interface.

A list of interface names which might be in the Interfaces property of a Connection 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.

A list of channel classes which might be requestable from a Connection to this protocol (i.e. they will, or might, appear in the Connection's 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 ConnectionManager 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;

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 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 Addressing1 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.

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.

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 Icon property is not set on an Account, or used by the AccountManager 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.

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.

A set of parameters as would be provided to RequestConnection

An opaque string suitable for use as the account-specific part of an Account's object path. This is not necessarily globally unique, but should represent a "best-effort" identification of the account.

For a pathological case, consider a user signing in as 'me@example.com' with 'server' 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.

The IdentifyAccount method is not supported by this connection manager. The caller SHOULD fall back to deriving identification from the parameters.

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 Connection.

If full normalization requires network activity or is otherwise impossible to do without a Connection, 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.

The identifier of a contact in this protocol The identifier of a contact in this protocol, normalized as much as possible The NormalizeContact method is not supported by this connection manager. The caller MAY recover by using the contact ID as-is.

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, ServerTLSConnection channels are obviously about TLS certificates so the channel type would appear in this list. However, a ServerAuthentication 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 ServerAuthentication.AuthenticationMethod property in this list.

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

[ ...Channel.Type.ServerTLSConnection,
  ...Channel.Interface.SASLAuthentication ]

This tells a client that before the connection status reached CONNECTED, a ServerTLSConnection could appear carrying a TLS certificate. It also tells the client that before the connection status reaches CONNECTED, a ServerAuthentication channel could also appear, where ServerAuthentication.AuthenticationMethod=SASLAuthentication. 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.

telepathy-qt-0.9.6.1/spec/Connection_Interface_Privacy.xml0000644000175100017520000001041512530423576025153 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2005, 2006 Collabora Limited Copyright (C) 2005, 2006 Nokia Corporation Copyright (C) 2006 INdT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

A string representing the current privacy mode Return the current privacy mode, which must be one of the values returned by GetPrivacyModes. An array of valid privacy modes for this connection Returns the privacy modes available on this connection. The following well-known names should be used where appropriate:
allow-all
any contact may initiate communication
allow-specified
only contacts on your 'allow' list may initiate communication
allow-subscribed
only contacts on your subscription list may initiate communication
The current privacy mode Emitted when the privacy mode is changed or the value has been initially received from the server. The desired privacy mode Request that the privacy mode be changed to the given value, which must be one of the values returned by GetPrivacyModes. Success is indicated by the method returning and the PrivacyModeChanged signal being emitted. An interface to support getting and setting privacy modes to configure situations such as not being contactable by people who are not on your subscribe list. If this interface is not implemented, the default can be presumed to be allow-all (as defined in GetPrivacyModes).
telepathy-qt-0.9.6.1/spec/Protocol_Interface_Addressing.xml0000644000175100017520000003551112530423576025327 0ustar00kaffeinekaffeine00000000000000 Copyright © 2010 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(as stable API). From the draft, NormalizeURI was renamed to NormalizeContactURI, clarifying that it removes any actions from the URI.

An interface for protocols that support multiple forms of addressing contacts, for example through vCard addresses and URIs.

If the ConnectionManager has a .manager file, and it supports this interface, the interface's immutable properties must be represented in the file; the representation is described as part of the documentation for each property.

For instance, a SIP connection manager might have the following lines in the .manager file.

[Protocol sip]
AddressableVCardFields=tel;x-sip;
AddressableURISchemes=tel;sip;

The vCard fields that can be used to request a contact with normalized to lower case. If the URL vCard field is addressable, a colon, followed by the supported URI schemes will be concatenated.

For example: ["tel", "x-sip"].

The url vCard field MUST NOT appear here; see AddressableURISchemes instead.

In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.

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 AddressableVCardFields. The corresponding value is a list of strings, each followed with a semicolon and in the syntax of the "localestring" type from the Desktop Entry Specification.

Well-known vCard fields:

tel
The TEL vCard field. Used for phone numbers.
x-sip
The X-SIP vCard field. Used for SIP addresses.
x-aim
The X-AIM vCard field. Used for AIM user IDs.
x-icq
The X-ICQ vCard field. Used for ICQ UINs.
x-skype
The X-SKYPE vCard field. Used for Skype user names or telephone numbers. There is also a X-SKYPE-USERNAME field, but for Telepathy purposes, x-skype is preferred
x-groupwise
The X-GROUPWISE vCard field. Used for Groupwise contacts.
x-gadugadu
The X-GADUGADU vCard field. Used for Gadu-Gadu contacts.
x-jabber
The X-JABBER vCard field. Used for XMPP JIDs.
x-msn
The X-MSN vCard field. Used for MSN contacts.
x-yahoo
The X-YAHOO vCard field. Used for Yahoo! IDs.
x-facebook-id
Used for Facebook IDs in XMPP. If the user JID is "-12345@chat.facebook.com" then the x-facebook-id is "12345"

The URI schemes that are supported by this protocol.

For example: ["tel", "sip"].

This property should only be used when the connection is offline. When it is connected the addressable URI schemes should be retrieved from the Requests.RequestableChannelClasses's TargetURIScheme fixed-property instead.

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 AddressableURISchemes. The corresponding value is a list of strings, each followed with a semicolon and in the syntax of the "localestring" type from the Desktop Entry Specification.

Well-known URI schemes:

sip
SIP protocol. For example: sip:julien@example.com.
sips
Secure (encrypted) SIP protocol. For example: sips:julien@example.com.
tel
Used for telephone numbers. For example: tel:+12065551234.
xmpp
XMPP protocol. For example: xmpp:julien@example.com.
msnim
For the purposes of Protocol.Interface.Addressing, Connection.Interface.Addressing1, and Channel.Interface.Addressing1, the verb part is ignored, and SHOULD be add; the contact field in the query string is used to identify the contact. For example: msnim:add?contact=julien.
aim
For the purposes of Protocol.Interface.Addressing, Connection.Interface.Addressing1, and Channel.Interface.Addressing1, the verb part is ignored, and SHOULD be addbuddy; the screenname field in the query string is used to identify the contact. For example: aim:addbuddy?screenname=julien.
skype
Skype protocol. For example: skype:julien.
ymsgr
For the purposes of Protocol.Interface.Addressing, Connection.Interface.Addressing1, and Channel.Interface.Addressing1, the verb part is ignored, and SHOULD be addfriend; the query string is used to identify the contact. For example: ymsgr:addfriend?julien.
gg
Gadu-Gadu protocol. For example: gg:julien.

Attempt to normalize the given vCard address. Where possible, this SHOULD return an address that would appear in the org.freedesktop.Telepathy.Connection.Interface.Addressing1/addresses attribute for a contact on a connected Connection.

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

An example would be a vCard TEL field with a formatted number in the form of +1 (206) 555 1234, this would be normalized to +12065551234.

This method MAY simply raise NotImplemented on some protocols, if it has no use.

The vCard field of the address we are normalizing. The field name SHOULD be in lower case, and MUST appear in AddressableVCardFields. The address to normalize, which is assumed to belong to a contact (and not, for instance, a chatroom or server). The vCard address, normalized as much as possible. The vCard field is not supported (it is not in AddressableVCardFields). The address is syntactically incorrect.
(renamed from NormalizeURI)

Attempt to normalize the given contact URI. Where possible, this SHOULD return an address that would appear in the org.freedesktop.Telepathy.Connection.Interface.Addressing1/uris attribute for a contact on a connected Connection.

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

If the URI has extra information beyond what's necessary to identify a particular contact, such as an XMPP resource or an action to carry out, this extra information SHOULD be removed. If all URIs in a scheme contain a verb or action (like aim, ymsgr and msnim URIs), then the verb SHOULD be replaced with the one specified in AddressableURISchemes.

This method is intended to normalize URIs stored in address books, for instance. In protocols like XMPP, if you vary the resource or action (query string), the URI still refers to the same high-level contact.

For instance, xmpp:romeo@Example.Com/Empathy?message;body=Hello would be normalized to xmpp:romeo@example.com, and aim:goim?screenname=Romeo%20M&message=Hello would be normalized to aim:addbuddy?screenname=romeom.

This method MAY simply raise NotImplemented on some protocols, if it has no use.

The URI to normalize, which is assumed to refer to a contact (as opposed to, for instance, a chatroom or a server).

In some protocols, like XMPP, there is no way to tell whether a given URI refers to a contact or a chatroom by looking at its syntax.

The URI's scheme (i.e. the part before the first colon) MUST appear in AddressableURISchemes.

A URI, normalized as much as possible. The URI scheme is not supported (it is not in AddressableURISchemes).

The URI is syntactically incorrect or cannot be interpreted as a reference to a contact.

For instance, aim:!? is not a valid AIM URI, while aim:goaway?message=Absent is a valid AIM URI, but not a contact.

telepathy-qt-0.9.6.1/cmake/0000755000175100017520000000000012530423576017002 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/cmake/modules/0000755000175100017520000000000012530423576020452 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/cmake/modules/FindQt.cmake0000644000175100017520000001012512530423576022640 0ustar00kaffeinekaffeine00000000000000# - Searches for Qt4 or Qt5. # Copyright (C) 2001-2009 Kitware, Inc. # Copyright (C) 2011 Collabora Ltd. # Copyright (C) 2011 Nokia Corporation # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. IF(DESIRED_QT_VERSION MATCHES 5) # Qt5 was explicitly requested, so use its CMakeConfig instead of qmake which may not be at a global location find_package(Qt5Core QUIET) IF( Qt5Core_DIR ) SET(QT5_INSTALLED TRUE) ENDIF( Qt5Core_DIR ) ENDIF(DESIRED_QT_VERSION MATCHES 5) #Otherwise search for installed qmakes IF(NOT QT5_INSTALLED) IF(NOT QT_QMAKE_EXECUTABLE) FIND_PROGRAM(QT_QMAKE_EXECUTABLE_FINDQT NAMES qmake qmake4 qmake-qt4 qmake5 qmake-qt5 PATHS "${QT_SEARCH_PATH}/bin" "$ENV{QTDIR}/bin") SET(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt qmake program.") ENDIF(NOT QT_QMAKE_EXECUTABLE) # now find qmake IF(QT_QMAKE_EXECUTABLE) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION) IF(QTVERSION MATCHES "4.*") SET(QT4_INSTALLED TRUE) ENDIF(QTVERSION MATCHES "4.*") IF(QTVERSION MATCHES "5.*") SET(QT5_INSTALLED TRUE) ENDIF(QTVERSION MATCHES "5.*") ENDIF(QT_QMAKE_EXECUTABLE) ENDIF(NOT QT5_INSTALLED) IF(NOT DESIRED_QT_VERSION) IF(QT4_INSTALLED) SET(DESIRED_QT_VERSION 4 CACHE STRING "Pick a version of Qt to use: 4 or 5") ENDIF(QT4_INSTALLED) IF(QT5_INSTALLED) SET(DESIRED_QT_VERSION 5 CACHE STRING "Pick a version of Qt to use: 4 or 5") ENDIF(QT5_INSTALLED) ENDIF(NOT DESIRED_QT_VERSION) IF(DESIRED_QT_VERSION MATCHES 4) SET(Qt4_FIND_REQUIRED ${Qt_FIND_REQUIRED}) SET(Qt4_FIND_QUIETLY ${Qt_FIND_QUIETLY}) SET(QT_MIN_VERSION ${QT4_MIN_VERSION}) SET(QT_MAX_VERSION ${QT4_MAX_VERSION}) INCLUDE(FindQt4) ENDIF(DESIRED_QT_VERSION MATCHES 4) IF(DESIRED_QT_VERSION MATCHES 5) SET(Qt5_FIND_REQUIRED ${Qt_FIND_REQUIRED}) SET(Qt5_FIND_QUIETLY ${Qt_FIND_QUIETLY}) SET(QT_MIN_VERSION ${QT5_MIN_VERSION}) SET(QT_MAX_VERSION ${QT5_MAX_VERSION}) INCLUDE(FindQt5) ENDIF(DESIRED_QT_VERSION MATCHES 5) IF(NOT QT4_INSTALLED AND NOT QT5_INSTALLED) IF(Qt_FIND_REQUIRED) MESSAGE(SEND_ERROR "CMake was unable to find any Qt versions, put qmake in your path, or set QTDIR/QT_QMAKE_EXECUTABLE.") ENDIF(Qt_FIND_REQUIRED) ELSE(NOT QT4_INSTALLED AND NOT QT5_INSTALLED) IF(NOT QT_FOUND) IF(Qt_FIND_REQUIRED) MESSAGE(FATAL_ERROR "CMake was unable to find Qt version: ${DESIRED_QT_VERSION}, put qmake in your path or set QTDIR/QT_QMAKE_EXECUTABLE.") ELSE(Qt_FIND_REQUIRED) MESSAGE("CMake was unable to find Qt version: ${DESIRED_QT_VERSION}, put qmake in your path or set QTDIR/QT_QMAKE_EXECUTABLE.") ENDIF(Qt_FIND_REQUIRED) ENDIF(NOT QT_FOUND) ENDIF(NOT QT4_INSTALLED AND NOT QT5_INSTALLED) MACRO(QT_GET_MOC_FLAGS moc_flags) IF(QT_VERSION_MAJOR MATCHES 4) QT4_GET_MOC_FLAGS(${moc_flags}) ELSE(QT_VERSION_MAJOR MATCHES 4) IF(QT_VERSION_MAJOR MATCHES 5) QT5_GET_MOC_FLAGS(${moc_flags}) ENDIF(QT_VERSION_MAJOR MATCHES 5) ENDIF(QT_VERSION_MAJOR MATCHES 4) ENDMACRO(QT_GET_MOC_FLAGS) MACRO(QT_CREATE_MOC_COMMAND infile outfile moc_flags moc_options) IF(QT_VERSION_MAJOR MATCHES 4) IF(CMAKE_VERSION VERSION_GREATER 2.8.11.20130607) QT4_CREATE_MOC_COMMAND(${infile} ${outfile} "${moc_flags}" "${moc_options}" "") ELSE(CMAKE_VERSION VERSION_GREATER 2.8.11.20130607) QT4_CREATE_MOC_COMMAND(${infile} ${outfile} "${moc_flags}" "${moc_options}") ENDIF(CMAKE_VERSION VERSION_GREATER 2.8.11.20130607) ELSE(QT_VERSION_MAJOR MATCHES 4) IF(QT_VERSION_MAJOR MATCHES 5) IF(QTVERSION VERSION_GREATER 5.1.99) QT5_CREATE_MOC_COMMAND(${infile} ${outfile} "${moc_flags}" "${moc_options}" "") ELSE() QT5_CREATE_MOC_COMMAND(${infile} ${outfile} "${moc_flags}" "${moc_options}") ENDIF() ENDIF(QT_VERSION_MAJOR MATCHES 5) ENDIF(QT_VERSION_MAJOR MATCHES 4) ENDMACRO(QT_CREATE_MOC_COMMAND) MARK_AS_ADVANCED(QT_QMAKE_EXECUTABLE_FINDQT) telepathy-qt-0.9.6.1/cmake/modules/FindTelepathyFarstream.cmake0000644000175100017520000000420312530423576026060 0ustar00kaffeinekaffeine00000000000000# - Try to find Telepathy-Farstream # Once done this will define # # TELEPATHY_FARSTREAM_FOUND - system has TelepathyFarstream # TELEPATHY_FARSTREAM_INCLUDE_DIR - the TelepathyFarstream include directory # TELEPATHY_FARSTREAM_LIBRARIES - the libraries needed to use TelepathyFarstream # TELEPATHY_FARSTREAM_DEFINITIONS - Compiler switches required for using TelepathyFarstream # Copyright (c) 2010, Dario Freddi # Copyright (c) 2011, Mateu Batle # # Redistribution and use is allowed according to the terms of the BSD license. if (TELEPATHY_FARSTREAM_INCLUDE_DIR AND TELEPATHY_FARSTREAM_LIBRARIES) # in cache already set(TelepathyFarstream_FIND_QUIETLY TRUE) else (TELEPATHY_FARSTREAM_INCLUDE_DIR AND TELEPATHY_FARSTREAM_LIBRARIES) set(TelepathyFarstream_FIND_QUIETLY FALSE) endif (TELEPATHY_FARSTREAM_INCLUDE_DIR AND TELEPATHY_FARSTREAM_LIBRARIES) if (NOT WIN32) # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls find_package(PkgConfig) if (TELEPATHY_FARSTREAM_MIN_VERSION) PKG_CHECK_MODULES(PC_TELEPATHY_FARSTREAM telepathy-farstream>=${TELEPATHY_FARSTREAM_MIN_VERSION}) else (TELEPATHY_FARSTREAM_MIN_VERSION) PKG_CHECK_MODULES(PC_TELEPATHY_FARSTREAM telepathy-farstream) endif (TELEPATHY_FARSTREAM_MIN_VERSION) set(TELEPATHY_FARSTREAM_DEFINITIONS ${PC_TELEPATHY_FARSTREAM_CFLAGS_OTHER}) endif (NOT WIN32) find_path(TELEPATHY_FARSTREAM_INCLUDE_DIR telepathy-farstream/telepathy-farstream.h PATHS ${PC_TELEPATHY_FARSTREAM_INCLUDEDIR} ${PC_TELEPATHY_FARSTREAM_INCLUDE_DIRS} PATH_SUFFIXES telepathy-1.0 ) find_library(TELEPATHY_FARSTREAM_LIBRARIES NAMES telepathy-farstream PATHS ${PC_TELEPATHY_FARSTREAM_LIBDIR} ${PC_TELEPATHY_FARSTREAM_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(TelepathyFarstream DEFAULT_MSG TELEPATHY_FARSTREAM_LIBRARIES TELEPATHY_FARSTREAM_INCLUDE_DIR) mark_as_advanced(TELEPATHY_FARSTREAM_INCLUDE_DIR TELEPATHY_FARSTREAM_LIBRARIES) telepathy-qt-0.9.6.1/cmake/modules/FindQt5.cmake0000644000175100017520000001312312530423576022726 0ustar00kaffeinekaffeine00000000000000# - Find Qt5 # This module can be used to find Qt5. # The most important issues are that Qt5 pkgconfig files are installed with PKG_CONFIG_PATH properly # set, and that Qt5 qmake is available via the system path. # This module defines a number of key variables and macros. # # Below is a detailed list of variables that FindQt5.cmake sets. # QT_FOUND If false, don't try to use Qt. # QT5_FOUND If false, don't try to use Qt5. # # QT_VERSION_MAJOR The major version of Qt found. # QT_VERSION_MINOR The minor version of Qt found. # QT_VERSION_PATCH The patch version of Qt found. # # QT_BINARY_DIR Path to "bin" of Qt5 # QT_DOC_DIR Path to "doc" of Qt5 # # QT_INCLUDES List of paths to all include directories of Qt5. # # QT_LIBRARIES List of paths to all libraries of Qt5. # QT_QTCORE_LIBRARY The QtCore library # QT_QTDBUS_LIBRARY The QtDBus library # QT_QTGUI_LIBRARY The QtGui library # QT_QTNETWORK_LIBRARY The QtNetwork library # QT_QTTEST_LIBRARY The QtTest library # QT_QTWIDGETS_LIBRARY The QtWidgets library # QT_QTXML_LIBRARY The QtXml library # # also defined, but NOT for general use are # QT_MOC_EXECUTABLE Where to find the moc tool # QT_CONFIG_FLAGS Flags used when building Qt # Copyright (C) 2001-2009 Kitware, Inc. # Copyright (C) 2011 Collabora Ltd. # Copyright (C) 2011 Nokia Corporation # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. IF(QT_INCLUDES AND QT_LIBRARIES AND QT_MAJOR_VERSION MATCHES 5) # Already in cache, be silent SET(QT_FOUND TRUE) SET(QT5_FOUND TRUE) RETURN() ENDIF(QT_INCLUDES AND QT_LIBRARIES AND QT_MAJOR_VERSION MATCHES 5) IF(NOT Qt5Core_DIR ) IF(NOT QT_QMAKE_EXECUTABLE) FIND_PROGRAM(QT_QMAKE_EXECUTABLE_FINDQT NAMES qmake qmake5 qmake-qt5 PATHS "${QT_SEARCH_PATH}/bin" "$ENV{QTDIR}/bin") SET(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt qmake program.") ENDIF(NOT QT_QMAKE_EXECUTABLE) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION) IF(NOT QTVERSION MATCHES "5.*") SET(QT_FOUND FALSE) SET(QT5_FOUND FALSE) IF(Qt5_FIND_REQUIRED) MESSAGE(FATAL_ERROR "CMake was unable to find Qt5, put qmake in your path or set QTDIR/QT_QMAKE_EXECUTABLE.") ENDIF(Qt5_FIND_REQUIRED) RETURN() ENDIF(NOT QTVERSION MATCHES "5.*") ENDIF(NOT Qt5Core_DIR ) find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt5DBus ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt5Test ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt5Network ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt5Xml ${REQUIRED_QT_VERSION} REQUIRED) # Copy includes and library names into the same style as pkgconfig used for Qt4 set(QT_INCLUDES ${Qt5Core_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Test_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS}) set(QT_QTCORE_LIBRARY ${Qt5Core_LIBRARIES}) set(QT_QTDBUS_LIBRARY ${Qt5DBus_LIBRARIES}) set(QT_QTGUI_LIBRARY ${Qt5Gui_LIBRARIES}) set(QT_QTNETWORK_LIBRARY ${Qt5Network_LIBRARIES}) set(QT_QTTEST_LIBRARY ${Qt5Test_LIBRARIES}) set(QT_QTWIDGETS_LIBRARY ${Qt5Widgets_LIBRARIES}) set(QT_QTXML_LIBRARY ${Qt5Xml_LIBRARIES}) set(QT_LIBRARIES ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTTEST_LIBRARY} ${QT_QTWIDGETS_LIBRARY} ${QT_QTXML_LIBRARY}) SET(QT_VERSION_MAJOR ${Qt5Core_VERSION_MAJOR}) SET(QT_VERSION_MINOR ${Qt5Core_VERSION_MINOR}) SET(QT_VERSION_PATCH ${Qt5Core_VERSION_PATCH}) SET(QT_VERSION ${Qt5Core_VERSION}) GET_PROPERTY(QT_QMAKE_EXECUTABLE TARGET ${Qt5Core_QMAKE_EXECUTABLE} PROPERTY IMPORTED_LOCATION) IF(NOT QT_INCLUDE_DIR) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_HEADERS" OUTPUT_VARIABLE QTHEADERS) SET(QT_INCLUDE_DIR ${QTHEADERS} CACHE INTERNAL "" FORCE) ENDIF(NOT QT_INCLUDE_DIR) IF(NOT QT_LIBRARY_DIR) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_LIBS" OUTPUT_VARIABLE QTLIBS) SET(QT_LIBRARY_DIR ${QTLIBS} CACHE INTERNAL "" FORCE) ENDIF(NOT QT_LIBRARY_DIR) IF(NOT QT_BINARY_DIR) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_BINS" OUTPUT_VARIABLE QTBINS) SET(QT_BINARY_DIR ${QTBINS} CACHE INTERNAL "" FORCE) ENDIF(NOT QT_BINARY_DIR) IF(NOT QT_DOC_DIR) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_DOCS" OUTPUT_VARIABLE QTDOCS) SET(QT_DOC_DIR ${QTDOCS} CACHE INTERNAL "" FORCE) ENDIF(NOT QT_DOC_DIR) IF(NOT QT_MOC_EXECUTABLE) FIND_PROGRAM(QT_MOC_EXECUTABLE NAMES moc moc5 moc-qt5 PATHS ${QT_BINARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) ENDIF(NOT QT_MOC_EXECUTABLE) MARK_AS_ADVANCED(QT_INCLUDES QT_INCLUDE_DIR QT_LIBRARIES QT_LIBRARY_DIR QT_BINARY_DIR QT_DOC_DIR QT_QMAKE_EXECUTABLE_FINDQT QT_QMAKE_EXECUTABLE QT_MOC_EXECUTABLE) # Invokes pkgconfig, cleans up the result and sets variables EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable qt_config QtCore OUTPUT_VARIABLE _pkgconfig_flags RESULT_VARIABLE _pkgconfig_failed) STRING(REPLACE " " ";" QT_CONFIG_FLAGS "${_pkgconfig_flags}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") INCLUDE(Qt5Macros) SET(QT_FOUND TRUE) SET(QT5_FOUND TRUE) telepathy-qt-0.9.6.1/cmake/modules/MacroLogFeature.cmake0000644000175100017520000001311012530423576024467 0ustar00kaffeinekaffeine00000000000000# This file defines the Feature Logging macros. # # MACRO_LOG_FEATURE(VAR FEATURE DESCRIPTION URL [REQUIRED [MIN_VERSION [COMMENTS]]]) # Logs the information so that it can be displayed at the end # of the configure run # VAR : TRUE or FALSE, indicating whether the feature is supported # FEATURE: name of the feature, e.g. "libjpeg" # DESCRIPTION: description what this feature provides # URL: home page # REQUIRED: TRUE or FALSE, indicating whether the featue is required # MIN_VERSION: minimum version number. empty string if unneeded # COMMENTS: More info you may want to provide. empty string if unnecessary # # MACRO_DISPLAY_FEATURE_LOG() # Call this to display the collected results. # Exits CMake with a FATAL error message if a required feature is missing # # Example: # # INCLUDE(MacroLogFeature) # # FIND_PACKAGE(JPEG) # MACRO_LOG_FEATURE(JPEG_FOUND "libjpeg" "Support JPEG images" "http://www.ijg.org" TRUE "3.2a" "") # ... # MACRO_DISPLAY_FEATURE_LOG() # Copyright (c) 2006, Alexander Neundorf, # Copyright (c) 2006, Allen Winter, # Copyright (c) 2009, Sebastian Trueg, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. IF (NOT _macroLogFeatureAlreadyIncluded) SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt) IF (EXISTS ${_file}) FILE(REMOVE ${_file}) ENDIF (EXISTS ${_file}) SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) IF (EXISTS ${_file}) FILE(REMOVE ${_file}) ENDIF (EXISTS ${_file}) SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) IF (EXISTS ${_file}) FILE(REMOVE ${_file}) ENDIF (EXISTS ${_file}) SET(_macroLogFeatureAlreadyIncluded TRUE) ENDIF (NOT _macroLogFeatureAlreadyIncluded) MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _comments) STRING(TOUPPER "${ARGV4}" _required) SET(_minvers "${ARGV5}") SET(_comments "${ARGV6}") IF (${_var}) SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) ELSE (${_var}) IF ("${_required}" STREQUAL "TRUE") SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/MissingRequirements.txt) ELSE ("${_required}" STREQUAL "TRUE") SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) ENDIF ("${_required}" STREQUAL "TRUE") ENDIF (${_var}) SET(_logtext " * ${_package}") IF (NOT ${_var}) IF (${_minvers} MATCHES ".*") SET(_logtext "${_logtext} (${_minvers} or higher)") ENDIF (${_minvers} MATCHES ".*") SET(_logtext "${_logtext} <${_url}>\n ") ELSE (NOT ${_var}) SET(_logtext "${_logtext} - ") ENDIF (NOT ${_var}) SET(_logtext "${_logtext}${_description}") IF (NOT ${_var}) IF (${_comments} MATCHES ".*") SET(_logtext "${_logtext}\n ${_comments}") ENDIF (${_comments} MATCHES ".*") # SET(_logtext "${_logtext}\n") #double-space missing features? ENDIF (NOT ${_var}) FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n") ENDMACRO(MACRO_LOG_FEATURE) MACRO(MACRO_DISPLAY_FEATURE_LOG) SET(_missingFile ${CMAKE_BINARY_DIR}/MissingRequirements.txt) SET(_enabledFile ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) SET(_disabledFile ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) IF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile}) SET(_printSummary TRUE) ENDIF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile}) IF(_printSummary) SET(_missingDeps 0) IF (EXISTS ${_enabledFile}) FILE(READ ${_enabledFile} _enabled) FILE(REMOVE ${_enabledFile}) SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n-----------------------------------------------------------------------------\n${_enabled}") ENDIF (EXISTS ${_enabledFile}) IF (EXISTS ${_disabledFile}) SET(_missingDeps 1) FILE(READ ${_disabledFile} _disabled) FILE(REMOVE ${_disabledFile}) SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n-----------------------------------------------------------------------------\n${_disabled}") ENDIF (EXISTS ${_disabledFile}) IF (EXISTS ${_missingFile}) SET(_missingDeps 1) FILE(READ ${_missingFile} _requirements) SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- You must install these packages before continuing.\n-----------------------------------------------------------------------------\n${_requirements}") FILE(REMOVE ${_missingFile}) SET(_haveMissingReq 1) ENDIF (EXISTS ${_missingFile}) IF (NOT ${_missingDeps}) SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- Congratulations! All external packages have been found.") ENDIF (NOT ${_missingDeps}) MESSAGE(${_summary}) MESSAGE("-----------------------------------------------------------------------------\n") IF(_haveMissingReq) MESSAGE(FATAL_ERROR "Exiting: Missing Requirements") ENDIF(_haveMissingReq) ENDIF(_printSummary) ENDMACRO(MACRO_DISPLAY_FEATURE_LOG) telepathy-qt-0.9.6.1/cmake/modules/FindGIO.cmake0000644000175100017520000000213112530423576022670 0ustar00kaffeinekaffeine00000000000000# - Try to find the GIO libraries # Once done this will define # # GIO_FOUND - system has GIO # GIO_INCLUDE_DIR - the GIO include directory # GIO_LIBRARIES - GIO library # # Copyright (C) 2011 Collabora Ltd. # Copyright (C) 2011 Nokia Corporation # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if(GIO_INCLUDE_DIR AND GIO_LIBRARIES) # Already in cache, be silent set(GIO_FIND_QUIETLY TRUE) endif(GIO_INCLUDE_DIR AND GIO_LIBRARIES) include(UsePkgConfig) pkg_check_modules(PC_LibGIO gio-2.0) find_path(GIO_MAIN_INCLUDE_DIR NAMES gio/gio.h HINTS ${PC_LibGIO_INCLUDEDIR} PATH_SUFFIXES glib-2.0) find_library(GIO_LIBRARY NAMES gio-2.0 HINTS ${PC_LibGIO_LIBDIR}) set(GIO_INCLUDE_DIR "${GIO_MAIN_INCLUDE_DIR}") set(GIO_LIBRARIES "${GIO_LIBRARY}") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GIO DEFAULT_MSG GIO_LIBRARIES GIO_MAIN_INCLUDE_DIR) mark_as_advanced(GIO_INCLUDE_DIR GIO_LIBRARIES) telepathy-qt-0.9.6.1/cmake/modules/TelepathyDist.cmake0000644000175100017520000001236512530423576024246 0ustar00kaffeinekaffeine00000000000000# setup make dist add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz COMMAND git archive --format=tar --prefix=${PACKAGE_NAME}-${PACKAGE_VERSION}/ HEAD | gzip > ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) add_custom_target(create-source-working-dir rm -rf ${PACKAGE_NAME}-${PACKAGE_VERSION} && gzip -df ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz && tar -xf ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar && rm ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar* && cd ${PACKAGE_NAME}-${PACKAGE_VERSION}/ && rm -rf doc && mkdir doc && cp -R ${CMAKE_BINARY_DIR}/doc/html doc/ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz COMMENT "Generating working source dir for the dist tarball") add_dependencies(create-source-working-dir doxygen-doc) add_custom_target(dist-hook chmod u+w ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}/ChangeLog && git log --stat > ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}/ChangeLog || git log > ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}/ChangeLog WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMENT "Updating Changelog") add_dependencies(dist-hook create-source-working-dir) add_custom_target(dist tar --format=ustar -chf - ${PACKAGE_NAME}-${PACKAGE_VERSION} | GZIP=--best gzip -c > ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Generating dist tarball") add_dependencies(dist dist-hook) # setup make distcheck add_custom_target(distcheck rm -rf build && mkdir build && cd build && cmake .. && make && make check WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}/ COMMENT "Testing successful tarball build") add_dependencies(distcheck dist) # CPack set(ENABLE_CPACK OFF CACHE BOOL "Enables CPack targets generation") if (ENABLE_CPACK) include(InstallRequiredSystemLibraries) SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A high-level binding for Telepathy in Qt") SET(CPACK_PACKAGE_VENDOR "Collabora Ltd.") SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README") SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") SET(CPACK_PACKAGE_VERSION_MAJOR ${TP_QT_MAJOR_VERSION}) SET(CPACK_PACKAGE_VERSION_MINOR ${TP_QT_MINOR_VERSION}) SET(CPACK_PACKAGE_VERSION_PATCH ${TP_QT_MICRO_VERSION}) SET(CPACK_PACKAGE_INSTALL_DIRECTORY "TelepathyQt") SET(CPACK_PACKAGE_CONTACT "telepathy@lists.freedesktop.org") set(CPACK_SOURCE_IGNORE_FILES "/build/;/.bzr/;~$;/.git/;/.kdev4/;${CPACK_SOURCE_IGNORE_FILES}") IF(WIN32 AND NOT UNIX) # There is a bug in NSI that does not handle full unix paths properly. Make # sure there is at least one set of four (4) backlasshes. #SET(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp") #SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe") SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} TelepathyQt") #SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.github.com") #SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.my-personal-home-page.com") #SET(CPACK_NSIS_CONTACT "me@my-personal-home-page.com") SET(CPACK_NSIS_MODIFY_PATH ON) ELSE(WIN32 AND NOT UNIX) #SET(CPACK_STRIP_FILES "bin/MyExecutable") SET(CPACK_SOURCE_STRIP_FILES "") ENDIF(WIN32 AND NOT UNIX) #SET(CPACK_PACKAGE_EXECUTABLES "MyExecutable" "My Executable") if (APPLE) set(CPACK_SET_DESTDIR ON) set(CPACK_PACKAGE_RELOCATABLE OFF) endif (APPLE) #name components set(CPACK_COMPONENT_MAINLIBRARY_DISPLAY_NAME "TelepathyQt main components") set(CPACK_COMPONENT_FARSTREAM_DISPLAY_NAME "TelepathyQt Farstream support") set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Development files for TelepathyQt") set(CPACK_COMPONENT_FARSTREAM_HEADERS_DISPLAY_NAME "Development files for TelepathyQt-Farstream") #components description set(CPACK_COMPONENT_MAINLIBRARY_DESCRIPTION "The main TelepathyQt library") set(CPACK_COMPONENT_FARSTREAM_DESCRIPTION "The TelepathyQt-Farstream library") set(CPACK_COMPONENT_HEADERS_DESCRIPTION "Development files for TelepathyQt") set(CPACK_COMPONENT_FARSTREAM_HEADERS_DESCRIPTION "Development files for TelepathyQt-Farstream") set(CPACK_COMPONENT_HEADERS_DEPENDS mainlibrary) set(CPACK_COMPONENT_FARSTREAM_DEPENDS mainlibrary) set(CPACK_COMPONENT_FARSTREAM_HEADERS_DEPENDS mainlibrary farstream) #installation types set(CPACK_ALL_INSTALL_TYPES User Developer Minimal) set(CPACK_COMPONENT_MAINLIBRARY_INSTALL_TYPES User Developer Minimal) set(CPACK_COMPONENT_FARSTREAM_INSTALL_TYPES User Developer) set(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer) set(CPACK_COMPONENT_FARSTREAM_HEADERS_INSTALL_TYPES Developer) # Leave this as the last declaration, always!!! include(CPack) endif (ENABLE_CPACK) telepathy-qt-0.9.6.1/cmake/modules/BasicFindPackageVersion.cmake.in0000644000175100017520000000262412530423576026531 0ustar00kaffeinekaffeine00000000000000# This is a very basic file for the new style find_package() search mode, # i.e. Config-mode. It is used by MACRO_WRITE_BASIC_CMAKE_VERSION_FILE() from # MacroWriteBasicCMakeVersionFile.cmake. # In this mode find_package() searches for a Config.cmake # file and an associated Version.cmake file, which it loads to check # the version number. # This file can be used with configure_file() to generate such a file for a project # with very basic logic. # It sets PACKAGE_VERSION_EXACT if the current version string and the requested # version string are exactly the same and it sets PACKAGE_VERSION_COMPATIBLE # if the current version is >= requested version. # If this is not good enough for your project, you need to write your own # improved Version.cmake file. # This file requires the following three variables to be set: # PROJECT_VERSION_MAJOR # PROJECT_VERSION_MINOR # PROJECT_VERSION_PATCH set(PACKAGE_VERSION @PROJECT_VERSION_FULL@) if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) set(PACKAGE_VERSION_COMPATIBLE FALSE) else("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) set(PACKAGE_VERSION_COMPATIBLE TRUE) if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}") set(PACKAGE_VERSION_EXACT TRUE) endif( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}") endif("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) telepathy-qt-0.9.6.1/cmake/modules/FindGIOUnix.cmake0000644000175100017520000000172112530423576023540 0ustar00kaffeinekaffeine00000000000000# - Try to find the GIO unix libraries # Once done this will define # # GIOUNIX_FOUND - system has GIO unix # GIOUNIX_INCLUDE_DIR - the GIO unix include directory # # Copyright (C) 2011 Collabora Ltd. # Copyright (C) 2011 Nokia Corporation # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if(GIOUNIX_INCLUDE_DIR) # Already in cache, be silent set(GIOUNIX_FIND_QUIETLY TRUE) endif(GIOUNIX_INCLUDE_DIR) include(UsePkgConfig) pkg_check_modules(PC_LibGIOUnix gio-unix-2.0) find_path(GIOUNIX_MAIN_INCLUDE_DIR NAMES gio/gunixconnection.h HINTS ${PC_LibGIOUnix_INCLUDEDIR} PATH_SUFFIXES gio-unix-2.0) set(GIOUNIX_INCLUDE_DIR "${GIOUNIX_MAIN_INCLUDE_DIR}") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GIOUNIX DEFAULT_MSG GIOUNIX_MAIN_INCLUDE_DIR) mark_as_advanced(GIOUNIX_INCLUDE_DIR) telepathy-qt-0.9.6.1/cmake/modules/FindGStreamer.cmake0000644000175100017520000000515012530423576024147 0ustar00kaffeinekaffeine00000000000000# - Try to find GStreamer # Once done this will define # # GSTREAMER_FOUND - system has GStreamer # GSTREAMER_INCLUDE_DIR - the GStreamer include directory # GSTREAMER_LIBRARIES - the libraries needed to use GStreamer # GSTREAMER_DEFINITIONS - Compiler switches required for using GStreamer # Copyright (c) 2006, Tim Beaulen # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # TODO: Other versions --> GSTREAMER_X_Y_FOUND (Example: GSTREAMER_0_8_FOUND and GSTREAMER_0_10_FOUND etc) IF (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_INTERFACE_LIBRARY) # in cache already SET(GSTREAMER_FIND_QUIETLY TRUE) ELSE (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_INTERFACE_LIBRARY) SET(GSTREAMER_FIND_QUIETLY FALSE) ENDIF (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_INTERFACE_LIBRARY) IF (NOT WIN32) # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls FIND_PACKAGE(PkgConfig) PKG_CHECK_MODULES(PC_GSTREAMER gstreamer-1.0) #MESSAGE(STATUS "DEBUG: GStreamer include directory = ${GSTREAMER_INCLUDE_DIRS}") #MESSAGE(STATUS "DEBUG: GStreamer link directory = ${GSTREAMER_LIBRARY_DIRS}") #MESSAGE(STATUS "DEBUG: GStreamer CFlags = ${GSTREAMER_CFLAGS_OTHER}") SET(GSTREAMER_DEFINITIONS ${PC_GSTREAMER_CFLAGS_OTHER}) ENDIF (NOT WIN32) FIND_PATH(GSTREAMER_INCLUDE_DIR gst/gst.h PATHS ${PC_GSTREAMER_INCLUDEDIR} ${PC_GSTREAMER_INCLUDE_DIRS} PATH_SUFFIXES gstreamer-1.0 ) FIND_LIBRARY(GSTREAMER_LIBRARIES NAMES gstreamer-1.0 PATHS ${PC_GSTREAMER_LIBDIR} ${PC_GSTREAMER_LIBRARY_DIRS} ) FIND_LIBRARY(GSTREAMER_BASE_LIBRARY NAMES gstbase-1.0 PATHS ${PC_GSTREAMER_LIBDIR} ${PC_GSTREAMER_LIBRARY_DIRS} ) IF (GSTREAMER_INCLUDE_DIR) #MESSAGE(STATUS "DEBUG: Found GStreamer include dir: ${GSTREAMER_INCLUDE_DIR}") ELSE (GSTREAMER_INCLUDE_DIR) MESSAGE(STATUS "GStreamer: WARNING: include dir not found") ENDIF (GSTREAMER_INCLUDE_DIR) IF (GSTREAMER_LIBRARIES) #MESSAGE(STATUS "DEBUG: Found GStreamer library: ${GSTREAMER_LIBRARIES}") ELSE (GSTREAMER_LIBRARIES) MESSAGE(STATUS "GStreamer: WARNING: library not found") ENDIF (GSTREAMER_LIBRARIES) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(GStreamer DEFAULT_MSG GSTREAMER_LIBRARIES GSTREAMER_INCLUDE_DIR GSTREAMER_BASE_LIBRARY) MARK_AS_ADVANCED(GSTREAMER_INCLUDE_DIR GSTREAMER_LIBRARIES GSTREAMER_BASE_LIBRARY) telepathy-qt-0.9.6.1/cmake/modules/FindDBusGLib.cmake0000644000175100017520000000405412530423576023653 0ustar00kaffeinekaffeine00000000000000# Try to find the GLib binding of the DBus library # DBUS_GLIB_FOUND - system has dbus-glib # DBUS_GLIB_INCLUDE_DIR - the dbus-glib include directory # DBUS_GLIB_LIBRARIES - Link these to use dbus-glib # Copyright (c) 2008, Allen Winter # Copyright (c) 2009, Andre Moreira Magalhaes # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. set(DBUS_GLIB_FIND_REQUIRED ${DBusGLib_FIND_REQUIRED}) if(DBUS_GLIB_INCLUDE_DIR AND DBUS_GLIB_LIBRARIES) # Already in cache, be silent set(DBUS_GLIB_FIND_QUIETLY TRUE) endif(DBUS_GLIB_INCLUDE_DIR AND DBUS_GLIB_LIBRARIES) if(NOT WIN32) find_package(PkgConfig) if (DBusGLib_FIND_VERSION_EXACT) pkg_check_modules(PC_DBUS_GLIB QUIET dbus-glib-1=${DBusGLib_FIND_VERSION}) else (DBusGLib_FIND_VERSION_EXACT) if (DBusGLib_FIND_VERSION) pkg_check_modules(PC_DBUS_GLIB REQUIRED dbus-glib-1>=${DBusGLib_FIND_VERSION}) else (DBusGLib_FIND_VERSION) pkg_check_modules(PC_DBUS_GLIB REQUIRED dbus-glib-1) endif (DBusGLib_FIND_VERSION) endif (DBusGLib_FIND_VERSION_EXACT) endif(NOT WIN32) find_path(DBUS_GLIB_INCLUDE_DIR NAMES dbus-1.0/dbus/dbus-glib.h HINTS ${PC_DBUS_GLIB_INCLUDEDIR} ${PC_DBUS_GLIB_INCLUDE_DIRS} ) find_path(DBUS_GLIB_LOWLEVEL_INCLUDE_DIR NAMES dbus/dbus-arch-deps.h HINTS ${PC_DBUS_GLIB_INCLUDEDIR} ${PC_DBUS_GLIB_INCLUDE_DIRS} ) # HACK! Workaround appending "/dbus-1.0" to the HINTS above not working for some reason. set(DBUS_GLIB_INCLUDE_DIRS "${DBUS_GLIB_INCLUDE_DIR}/dbus-1.0" "${DBUS_GLIB_LOWLEVEL_INCLUDE_DIR}" ) find_library(DBUS_GLIB_LIBRARIES NAMES dbus-glib-1 HINTS ${PC_DBUS_GLIB_LIBDIR} ${PC_DBUS_GLIB_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DBUS_GLIB DEFAULT_MSG DBUS_GLIB_LIBRARIES DBUS_GLIB_INCLUDE_DIR) telepathy-qt-0.9.6.1/cmake/modules/Qt5Macros.cmake0000644000175100017520000000524712530423576023302 0ustar00kaffeinekaffeine00000000000000# This file is included by FindQt5.cmake, don't include it directly. # Copyright (C) 2001-2009 Kitware, Inc. # Copyright (C) 2011 Collabora Ltd. # Copyright (C) 2011 Nokia Corporation # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. MACRO (QT5_GET_MOC_FLAGS _moc_flags) SET(${_moc_flags}) GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES) FOREACH(_current ${_inc_DIRS}) IF("${_current}" MATCHES "\\.framework/?$") STRING(REGEX REPLACE "/[^/]+\\.framework" "" framework_path "${_current}") SET(${_moc_flags} ${${_moc_flags}} "-F${framework_path}") ELSE("${_current}" MATCHES "\\.framework/?$") SET(${_moc_flags} ${${_moc_flags}} "-I${_current}") ENDIF("${_current}" MATCHES "\\.framework/?$") ENDFOREACH(_current ${_inc_DIRS}) GET_DIRECTORY_PROPERTY(_defines COMPILE_DEFINITIONS) FOREACH(_current ${_defines}) SET(${_moc_flags} ${${_moc_flags}} "-D${_current}") ENDFOREACH(_current ${_defines}) IF(Q_WS_WIN) SET(${_moc_flags} ${${_moc_flags}} -DWIN32) ENDIF(Q_WS_WIN) ENDMACRO (QT5_GET_MOC_FLAGS) # helper macro to set up a moc rule MACRO (QT5_CREATE_MOC_COMMAND infile outfile moc_flags moc_options) # For Windows, create a parameters file to work around command line length limit IF (WIN32) # Pass the parameters in a file. Set the working directory to # be that containing the parameters file and reference it by # just the file name. This is necessary because the moc tool on # MinGW builds does not seem to handle spaces in the path to the # file given with the @ syntax. GET_FILENAME_COMPONENT(_moc_outfile_name "${outfile}" NAME) GET_FILENAME_COMPONENT(_moc_outfile_dir "${outfile}" PATH) IF(_moc_outfile_dir) SET(_moc_working_dir WORKING_DIRECTORY ${_moc_outfile_dir}) ENDIF(_moc_outfile_dir) SET (_moc_parameters_file ${outfile}_parameters) SET (_moc_parameters ${moc_flags} ${moc_options} -o "${outfile}" "${infile}") STRING (REPLACE ";" "\n" _moc_parameters "${_moc_parameters}") FILE (WRITE ${_moc_parameters_file} "${_moc_parameters}") ADD_CUSTOM_COMMAND(OUTPUT ${outfile} COMMAND ${QT_MOC_EXECUTABLE} @${_moc_outfile_name}_parameters DEPENDS ${infile} ${_moc_working_dir} VERBATIM) ELSE (WIN32) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} COMMAND ${QT_MOC_EXECUTABLE} ARGS ${moc_flags} ${moc_options} -o ${outfile} ${infile} DEPENDS ${infile}) ENDIF (WIN32) ENDMACRO (QT5_CREATE_MOC_COMMAND) telepathy-qt-0.9.6.1/cmake/modules/FindGLIB2.cmake0000644000175100017520000000321012530423576023050 0ustar00kaffeinekaffeine00000000000000# - Try to find the GLIB2 libraries # Once done this will define # # GLIB2_FOUND - system has glib2 # GLIB2_INCLUDE_DIR - the glib2 include directory # GLIB2_LIBRARIES - glib2 library # Copyright (c) 2008 Laurent Montel, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if(GLIB2_INCLUDE_DIR AND GLIB2_LIBRARIES) # Already in cache, be silent set(GLIB2_FIND_QUIETLY TRUE) endif(GLIB2_INCLUDE_DIR AND GLIB2_LIBRARIES) find_package(PkgConfig) pkg_check_modules(PC_LibGLIB2 glib-2.0) find_path(GLIB2_MAIN_INCLUDE_DIR NAMES glib.h HINTS ${PC_LibGLIB2_INCLUDEDIR} PATH_SUFFIXES glib-2.0) find_library(GLIB2_LIBRARY NAMES glib-2.0 HINTS ${PC_LibGLIB2_LIBDIR} ) set(GLIB2_LIBRARIES ${GLIB2_LIBRARY}) # search the glibconfig.h include dir under the same root where the library is found get_filename_component(glib2LibDir "${GLIB2_LIBRARIES}" PATH) find_path(GLIB2_INTERNAL_INCLUDE_DIR glibconfig.h PATH_SUFFIXES glib-2.0/include HINTS ${PC_LibGLIB2_INCLUDEDIR} "${glib2LibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH}) set(GLIB2_INCLUDE_DIR "${GLIB2_MAIN_INCLUDE_DIR}") # not sure if this include dir is optional or required # for now it is optional if(GLIB2_INTERNAL_INCLUDE_DIR) set(GLIB2_INCLUDE_DIR ${GLIB2_INCLUDE_DIR} "${GLIB2_INTERNAL_INCLUDE_DIR}") endif(GLIB2_INTERNAL_INCLUDE_DIR) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GLIB2 DEFAULT_MSG GLIB2_LIBRARIES GLIB2_MAIN_INCLUDE_DIR) mark_as_advanced(GLIB2_INCLUDE_DIR GLIB2_LIBRARIES) telepathy-qt-0.9.6.1/cmake/modules/FindFarstream.cmake0000644000175100017520000000340512530423576024203 0ustar00kaffeinekaffeine00000000000000# - Try to find Farstream # Once done this will define # # FARSTREAM_FOUND - system has Farstream # FARSTREAM_INCLUDE_DIR - the Farstream include directory # FARSTREAM_LIBRARIES - the libraries needed to use Farstream # FARSTREAM_DEFINITIONS - Compiler switches required for using Farstream # Copyright (c) 2010, Dario Freddi # Copyright (c) 2012, George Kiagiadakis # # Redistribution and use is allowed according to the terms of the BSD license. if (FARSTREAM_INCLUDE_DIR AND FARSTREAM_LIBRARIES) # in cache already set(Farstream_FIND_QUIETLY TRUE) else (FARSTREAM_INCLUDE_DIR AND FARSTREAM_LIBRARIES) set(Farstream_FIND_QUIETLY FALSE) endif (FARSTREAM_INCLUDE_DIR AND FARSTREAM_LIBRARIES) if (NOT WIN32) # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls find_package(PkgConfig) if (FARSTREAM_MIN_VERSION) PKG_CHECK_MODULES(PC_FARSTREAM farstream-0.2>=${FARSTREAM_MIN_VERSION}) else (FARSTREAM_MIN_VERSION) PKG_CHECK_MODULES(PC_FARSTREAM farstream-0.2) endif (FARSTREAM_MIN_VERSION) set(FARSTREAM_DEFINITIONS ${PC_FARSTREAM_CFLAGS_OTHER}) endif (NOT WIN32) find_path(FARSTREAM_INCLUDE_DIR farstream/fs-conference.h PATHS ${PC_FARSTREAM_INCLUDEDIR} ${PC_FARSTREAM_INCLUDE_DIRS} PATH_SUFFIXES farstream-0.2 ) find_library(FARSTREAM_LIBRARIES NAMES farstream-0.2 PATHS ${PC_FARSTREAM_LIBDIR} ${PC_FARSTREAM_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Farstream DEFAULT_MSG FARSTREAM_LIBRARIES FARSTREAM_INCLUDE_DIR) mark_as_advanced(FARSTREAM_INCLUDE_DIR FARSTREAM_LIBRARIES) telepathy-qt-0.9.6.1/cmake/modules/FindTelepathyGlib.cmake0000644000175100017520000000431212530423576025012 0ustar00kaffeinekaffeine00000000000000# - Try to find Telepathy-Glib # Once done this will define # # TELEPATHY_GLIB_FOUND - system has Telepathy-Glib # TELEPATHY_GLIB_INCLUDE_DIR - the Telepathy-Glib include directory # TELEPATHY_GLIB_LIBRARIES - the libraries needed to use Telepathy-Glib # TELEPATHY_GLIB_DEFINITIONS - Compiler switches required for using Telepathy-Glib # Copyright (c) 2010, Dario Freddi # # Redistribution and use is allowed according to the terms of the BSD license. if (TELEPATHY_GLIB_INCLUDE_DIR AND TELEPATHY_GLIB_LIBRARIES) # in cache already set(TELEPATHYGLIB_FIND_QUIETLY TRUE) else (TELEPATHY_GLIB_INCLUDE_DIR AND TELEPATHY_GLIB_LIBRARIES) set(TELEPATHYGLIB_FIND_QUIETLY FALSE) endif (TELEPATHY_GLIB_INCLUDE_DIR AND TELEPATHY_GLIB_LIBRARIES) if (NOT WIN32) # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls find_package(PkgConfig) if (TELEPATHY_GLIB_MIN_VERSION) PKG_CHECK_MODULES(PC_TELEPATHY_GLIB telepathy-glib>=${TELEPATHY_GLIB_MIN_VERSION}) else (TELEPATHY_GLIB_MIN_VERSION) PKG_CHECK_MODULES(PC_TELEPATHY_GLIB telepathy-glib) endif (TELEPATHY_GLIB_MIN_VERSION) set(TELEPATHY_GLIB_DEFINITIONS ${PC_TELEPATHY_GLIB_CFLAGS_OTHER}) endif (NOT WIN32) if (TELEPATHY_GLIB_MIN_VERSION AND NOT PC_TELEPATHY_GLIB_FOUND) message(STATUS "Telepathy-glib not found or its version is < ${TELEPATHY_GLIB_MIN_VERSION}") else (TELEPATHY_GLIB_MIN_VERSION AND NOT PC_TELEPATHY_GLIB_FOUND) find_path(TELEPATHY_GLIB_INCLUDE_DIR telepathy-glib/client.h PATHS ${PC_TELEPATHY_GLIB_INCLUDEDIR} ${PC_TELEPATHY_GLIB_INCLUDE_DIRS} PATH_SUFFIXES telepathy-1.0 ) find_library(TELEPATHY_GLIB_LIBRARIES NAMES telepathy-glib PATHS ${PC_TELEPATHY_GLIB_LIBDIR} ${PC_TELEPATHY_GLIB_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(TelepathyGlib DEFAULT_MSG TELEPATHY_GLIB_LIBRARIES TELEPATHY_GLIB_INCLUDE_DIR) mark_as_advanced(TELEPATHY_GLIB_INCLUDE_DIR TELEPATHY_GLIB_LIBRARIES) endif (TELEPATHY_GLIB_MIN_VERSION AND NOT PC_TELEPATHY_GLIB_FOUND) telepathy-qt-0.9.6.1/cmake/modules/FindLibPython.py0000644000175100017520000000101212530423576023527 0ustar00kaffeinekaffeine00000000000000# Copyright (c) 2007, Simon Edwards # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. import sys import distutils.sysconfig print("exec_prefix:%s" % sys.exec_prefix) print("short_version:%s" % sys.version[:3]) print("long_version:%s" % sys.version.split()[0]) print("py_inc_dir:%s" % distutils.sysconfig.get_python_inc()) print("site_packages_dir:%s" % distutils.sysconfig.get_python_lib(plat_specific=1)) telepathy-qt-0.9.6.1/cmake/modules/FindLibXml2.cmake0000644000175100017520000000356112530423576023533 0ustar00kaffeinekaffeine00000000000000# - Try to find LibXml2 # Once done this will define # # LIBXML2_FOUND - System has LibXml2 # LIBXML2_INCLUDE_DIR - The LibXml2 include directory # LIBXML2_LIBRARIES - The libraries needed to use LibXml2 # LIBXML2_DEFINITIONS - Compiler switches required for using LibXml2 # LIBXML2_XMLLINT_EXECUTABLE - The XML checking tool xmllint coming with LibXml2 # Copyright (c) 2006, Alexander Neundorf, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. IF (LIBXML2_INCLUDE_DIR AND LIBXML2_LIBRARIES) # in cache already SET(LibXml2_FIND_QUIETLY TRUE) ENDIF (LIBXML2_INCLUDE_DIR AND LIBXML2_LIBRARIES) IF (NOT WIN32) # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls FIND_PACKAGE(PkgConfig) PKG_CHECK_MODULES(PC_LIBXML libxml-2.0) SET(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER}) ENDIF (NOT WIN32) FIND_PATH(LIBXML2_INCLUDE_DIR libxml/xpath.h HINTS ${PC_LIBXML_INCLUDEDIR} ${PC_LIBXML_INCLUDE_DIRS} PATH_SUFFIXES libxml2 ) FIND_LIBRARY(LIBXML2_LIBRARIES NAMES xml2 libxml2 HINTS ${PC_LIBXML_LIBDIR} ${PC_LIBXML_LIBRARY_DIRS} ) FIND_PROGRAM(LIBXML2_XMLLINT_EXECUTABLE xmllint) # for backwards compat. with KDE 4.0.x: SET(XMLLINT_EXECUTABLE "${LIBXML2_XMLLINT_EXECUTABLE}") IF( NOT LIBXML2_XMLLINT_EXECUTABLE ) MESSAGE(STATUS "xmllint program not found. Install it if you want validate generated doc file.") ENDIF(NOT LIBXML2_XMLLINT_EXECUTABLE ) INCLUDE(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE if # all listed variables are TRUE FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR) MARK_AS_ADVANCED(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARIES LIBXML2_XMLLINT_EXECUTABLE) telepathy-qt-0.9.6.1/cmake/modules/CompilerWarnings.cmake0000644000175100017520000000431512530423576024742 0ustar00kaffeinekaffeine00000000000000include(CheckCXXCompilerFlag) include(CheckCCompilerFlag) macro(check_lang_compiler_flag lang flag variable) if(${lang} STREQUAL c) check_c_compiler_flag(${flag} ${variable}) endif(${lang} STREQUAL c) if(${lang} STREQUAL cxx) check_cxx_compiler_flag(${flag} ${variable}) endif(${lang} STREQUAL cxx) endmacro(check_lang_compiler_flag flag variable) macro(compiler_warnings ret lang werror_by_default desirable_flags undesirable_flags) set(warning_flags "") foreach(flag ${desirable_flags}) check_lang_compiler_flag(${lang} -W${flag} ${flag}_${lang}_result) if(${${flag}_${lang}_result}) set(warning_flags "${warning_flags} -W${flag}") endif( ${${flag}_${lang}_result} ) endforeach(flag ${desirable_flags}) check_lang_compiler_flag(${lang} -Werror error_${lang}_result) if(${error_${lang}_result}) set(error_flags "-Werror") endif(${error_${lang}_result}) set(all_nowarning_flags_supported 1) foreach(flag ${undesirable_flags}) check_lang_compiler_flag(${lang} -Wno-${flag} ${flag}_${lang}_result) if(${${flag}_${lang}_result}) set(warning_flags "${warning_flags} -Wno-${flag}") else(${${flag}_${lang}_result}) set(all_nowarning_flags_supported 0) break() endif(${${flag}_${lang}_result}) check_lang_compiler_flag(${lang} -Wno-error=${flag} noerror_${flag}_${lang}_result) if(${noerror_${flag}_${lang}_result}) set(error_flags "${error_flags} -Wno-error=${flag}") endif(${noerror_${flag}_${lang}_result}) endforeach(flag ${undesirable_flags}) if(DISABLE_WERROR) set(enable_werror 0) else(DISABLE_WERROR) set(enable_werror 1) endif(DISABLE_WERROR) if(${werror_by_default} AND ${enable_werror} AND ${all_nowarning_flags_supported}) set(${ret} "${warning_flags} ${error_flags}") else(${werror_by_default} AND ${enable_werror} AND ${all_nowarning_flags_supported}) set(${ret} "${warning_flags}") endif(${werror_by_default} AND ${enable_werror} AND ${all_nowarning_flags_supported}) endmacro(compiler_warnings ret lang werror_by_default desirable_flags undesirable_flags) telepathy-qt-0.9.6.1/cmake/modules/MacroWriteBasicCMakeVersionFile.cmake0000644000175100017520000000215312530423576027542 0ustar00kaffeinekaffeine00000000000000# MACRO_WRITE_BASIC_CMAKE_VERSION_FILE( _filename _major _minor _patch) # Writes a file for use as ConfigVersion.cmake file to <_filename>. # See the documentation of FIND_PACKAGE() for details on this. # _filename is the output filename, it should be in the build tree. # _major is the major version number of the project to be installed # _minor is the minor version number of the project to be installed # _patch is the patch version number of the project to be installed # # Copyright (c) 2008, Alexander Neundorf, # Copyright (c) 2010, Collabora Ltd., # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. get_filename_component(_currentListFileDir ${CMAKE_CURRENT_LIST_FILE} PATH) function(MACRO_WRITE_BASIC_CMAKE_VERSION_FILE _filename _version) set(PROJECT_VERSION_FULL ${_version}) configure_file(${_currentListFileDir}/BasicFindPackageVersion.cmake.in "${_filename}" @ONLY) endfunction(MACRO_WRITE_BASIC_CMAKE_VERSION_FILE _major _minor _patch) telepathy-qt-0.9.6.1/cmake/modules/FindGObject.cmake0000644000175100017520000000427112530423576023576 0ustar00kaffeinekaffeine00000000000000# - Try to find GObject # Once done this will define # # GOBJECT_FOUND - system has GObject # GOBJECT_INCLUDE_DIR - the GObject include directory # GOBJECT_LIBRARIES - the libraries needed to use GObject # GOBJECT_DEFINITIONS - Compiler switches required for using GObject # Copyright (c) 2008 Helio Chissini de Castro, # (c)2006, Tim Beaulen IF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES) # in cache already SET(GObject_FIND_QUIETLY TRUE) ELSE (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES) SET(GObject_FIND_QUIETLY FALSE) ENDIF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES) IF (NOT WIN32) FIND_PACKAGE(PkgConfig REQUIRED) # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls PKG_CHECK_MODULES(PKG_GOBJECT2 REQUIRED gobject-2.0) SET(GOBJECT_DEFINITIONS ${PKG_GOBJECT2_CFLAGS}) ENDIF (NOT WIN32) FIND_PATH(GOBJECT_INCLUDE_DIR gobject/gobject.h PATHS ${PKG_GOBJECT2_INCLUDE_DIRS} /usr/include/glib-2.0/ PATH_SUFFIXES glib-2.0 ) FIND_LIBRARY(_GObjectLibs NAMES gobject-2.0 PATHS ${PKG_GOBJECT2_LIBRARY_DIRS} ) FIND_LIBRARY(_GModuleLibs NAMES gmodule-2.0 PATHS ${PKG_GOBJECT2_LIBRARY_DIRS} ) FIND_LIBRARY(_GThreadLibs NAMES gthread-2.0 PATHS ${PKG_GOBJECT2_LIBRARY_DIRS} ) FIND_LIBRARY(_GLibs NAMES glib-2.0 PATHS ${PKG_GOBJECT2_LIBRARY_DIRS} ) IF (WIN32) SET (GOBJECT_LIBRARIES ${_GObjectLibs} ${_GModuleLibs} ${_GThreadLibs} ${_GLibs}) ELSE (WIN32) SET (GOBJECT_LIBRARIES ${PKG_GOBJECT2_LIBRARIES}) ENDIF (WIN32) IF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES) SET(GOBJECT_FOUND TRUE) ELSE (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES) SET(GOBJECT_FOUND FALSE) ENDIF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES) IF (GOBJECT_FOUND) IF (NOT GObject_FIND_QUIETLY) MESSAGE(STATUS "Found GObject libraries: ${GOBJECT_LIBRARIES}") MESSAGE(STATUS "Found GObject includes : ${GOBJECT_INCLUDE_DIR}") ENDIF (NOT GObject_FIND_QUIETLY) ELSE (GOBJECT_FOUND) IF (GObject_FIND_REQUIRED) MESSAGE(STATUS "Could NOT find GObject") ENDIF(GObject_FIND_REQUIRED) ENDIF (GOBJECT_FOUND) MARK_AS_ADVANCED(GOBJECT_INCLUDE_DIR GOBJECT_LIBRARIES) telepathy-qt-0.9.6.1/cmake/modules/TelepathyDefaults.cmake0000644000175100017520000001572012530423576025110 0ustar00kaffeinekaffeine00000000000000# Enable testing using CTest enable_testing() # Always include srcdir and builddir in include path # This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} in about every subdir set(CMAKE_INCLUDE_CURRENT_DIR ON) # put the include dirs which are in the source or build tree # before all other include dirs, so the headers in the sources # are prefered over the already installed ones set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) # Use colored output set(CMAKE_COLOR_MAKEFILE ON) # Add an option to decide where to install the config files if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.6.2) option(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR "Prefer to install the Config.cmake files to lib/cmake/ instead of lib//cmake" TRUE) endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.6.2) # Set compiler flags if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -ggdb") set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") set(CMAKE_CXX_FLAGS_DEBUGFULL "-O0 -g3 -ggdb -fno-inline") set(CMAKE_CXX_FLAGS_PROFILE "-pg -g3 -ggdb -DNDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -ggdb") set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") set(CMAKE_C_FLAGS_DEBUG "-ggdb -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") set(CMAKE_C_FLAGS_DEBUGFULL "-O0 -g3 -ggdb -fno-inline") set(CMAKE_C_FLAGS_PROFILE "-pg -g3 -ggdb -DNDEBUG") set(CMAKE_EXE_LINKER_FLAGS_PROFILE "-pg -ggdb") set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "-pg -ggdb") set(DISABLE_WERROR 0 CACHE BOOL "compile without -Werror (normally enabled in development builds)") include(CompilerWarnings) include(TestCXXAcceptsFlag) CHECK_CXX_ACCEPTS_FLAG("-fvisibility=hidden" CXX_FVISIBILITY_HIDDEN) if (CXX_FVISIBILITY_HIDDEN) set(VISIBILITY_HIDDEN_FLAGS "-fvisibility=hidden") else (CXX_FVISIBILITY_HIDDEN) set(VISIBILITY_HIDDEN_FLAGS) endif (CXX_FVISIBILITY_HIDDEN) CHECK_CXX_ACCEPTS_FLAG("-fvisibility-inlines-hidden" CXX_FVISIBILITY_INLINES_HIDDEN) if (CXX_FVISIBILITY_INLINES_HIDDEN) set(VISIBILITY_HIDDEN_FLAGS "${VISIBILITY_HIDDEN_FLAGS} -fvisibility-inlines-hidden") endif (CXX_FVISIBILITY_INLINES_HIDDEN) CHECK_CXX_ACCEPTS_FLAG("-Wdeprecated-declarations" CXX_DEPRECATED_DECLARATIONS) if (CXX_DEPRECATED_DECLARATIONS) set(DEPRECATED_DECLARATIONS_FLAGS "-Wdeprecated-declarations -DTP_QT_DEPRECATED_WARNINGS") else (CXX_DEPRECATED_DECLARATIONS) set(DEPRECATED_DECLARATIONS_FLAGS) endif (CXX_DEPRECATED_DECLARATIONS) if(${TP_QT_NANO_VERSION} EQUAL 0) set(NOT_RELEASE 0) else(${TP_QT_NANO_VERSION} EQUAL 0) set(NOT_RELEASE 1) endif(${TP_QT_NANO_VERSION} EQUAL 0) set(desired all extra sign-compare pointer-arith format-security init-self non-virtual-dtor) set(undesired missing-field-initializers unused-parameter unused-local-typedefs) compiler_warnings(CMAKE_CXX_FLAGS_WARNINGS cxx ${NOT_RELEASE} "${desired}" "${undesired}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_WARNINGS}") set(desired_c all extra declaration-after-statement shadow strict-prototypes missing-prototypes sign-compare nested-externs pointer-arith format-security init-self) set(undesired_c missing-field-initializers unused-parameter unused-local-typedefs) compiler_warnings(CMAKE_C_FLAGS_WARNINGS c ${NOT_RELEASE} "${desired_c}" "${undesired_c}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_WARNINGS}") # Link development builds with -Wl,--no-add-needed # TODO: binutils 2.21 renames the flag to --no-copy-dt-needed-entries, though it keeps the old # one as a deprecated alias. if(${NOT_RELEASE} EQUAL 1) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-add-needed") endif(${NOT_RELEASE} EQUAL 1) if(CMAKE_SYSTEM_NAME MATCHES Linux) add_definitions(-D_BSD_SOURCE) endif(CMAKE_SYSTEM_NAME MATCHES Linux) # Compiler coverage set(ENABLE_COMPILER_COVERAGE OFF CACHE BOOL "Enables compiler coverage tests through lcov. Enabling this option will build Telepathy-Qt as a static library.") if (ENABLE_COMPILER_COVERAGE) check_cxx_accepts_flag("-fprofile-arcs -ftest-coverage" CXX_FPROFILE_ARCS) check_cxx_accepts_flag("-ftest-coverage" CXX_FTEST_COVERAGE) if (CXX_FPROFILE_ARCS AND CXX_FTEST_COVERAGE) find_program(LCOV lcov) find_program(LCOV_GENHTML genhtml) if (NOT LCOV OR NOT LCOV_GENHTML) message(FATAL_ERROR "You chose to use compiler coverage tests, but lcov or genhtml could not be found in your PATH.") else (NOT LCOV OR NOT LCOV_GENHTML) message(STATUS "Compiler coverage tests enabled - Telepathy-Qt will be compiled as a static library") set(COMPILER_COVERAGE_FLAGS "-fprofile-arcs -ftest-coverage") endif (NOT LCOV OR NOT LCOV_GENHTML) else (CXX_FPROFILE_ARCS AND CXX_FTEST_COVERAGE) message(FATAL_ERROR "You chose to use compiler coverage tests, but it appears your compiler is not able to support them.") endif (CXX_FPROFILE_ARCS AND CXX_FTEST_COVERAGE) else (ENABLE_COMPILER_COVERAGE) set(COMPILER_COVERAGE_FLAGS) endif (ENABLE_COMPILER_COVERAGE) # gcc under Windows if(MINGW) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--export-all-symbols -Wl,--disable-auto-import") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--export-all-symbols -Wl,--disable-auto-import") # we always link against the release version of QT with mingw # (even for debug builds). So we need to define QT_NO_DEBUG # or else QPluginLoader rejects plugins because it thinks # they're built against the wrong QT. add_definitions(-DQT_NO_DEBUG) endif(MINGW) endif(CMAKE_COMPILER_IS_GNUCXX) if(MSVC) set(ESCAPE_CHAR ^) endif(MSVC) set(LIB_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" ) set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The subdirectory where libraries will be installed (default is ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})" FORCE) set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The subdirectory where header files will be installed (default is ${CMAKE_INSTALL_PREFIX}/include)" FORCE) set(DATA_INSTALL_DIR "share/telepathy" CACHE PATH "The subdirectory where data files will be installed (default is ${CMAKE_INSTALL_PREFIX}/share/telepathy)" FORCE) telepathy-qt-0.9.6.1/cmake/modules/Doxygen.cmake0000644000175100017520000000260212530423576023071 0ustar00kaffeinekaffeine00000000000000# generate documentation on 'make doxygen-doc' file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc) find_package(Doxygen) if(DOXYGEN_FOUND) find_program(QHELPGENERATOR_EXECUTABLE qhelpgenerator) mark_as_advanced(QHELPGENERATOR_EXECUTABLE) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(QHELPGENERATOR DEFAULT_MSG QHELPGENERATOR_EXECUTABLE) set(QT_TAGS_FILE ${QT_DOC_DIR}/html/qt.tags) if(EXISTS ${QT_TAGS_FILE}) find_package(Perl) if (NOT PERL_FOUND) message(WARNING "Perl was not found. Qt crosslinks in uploaded docs won't be valid.") endif (NOT PERL_FOUND) else(EXISTS ${QT_TAGS_FILE}) message(WARNING "html/qt.tags not found in ${QT_DOC_DIR}. Set the QT_DOC_DIR variable to point to its location to enable crosslinking.") unset(QT_TAGS_FILE) endif(EXISTS ${QT_TAGS_FILE}) set(abs_top_builddir ${CMAKE_BINARY_DIR}) set(abs_top_srcdir ${CMAKE_SOURCE_DIR}) set(GENERATE_HTML YES) set(GENERATE_RTF NO) set(GENERATE_CHM NO) set(GENERATE_CHI NO) set(GENERATE_LATEX NO) set(GENERATE_MAN NO) set(GENERATE_XML NO) set(GENERATE_QHP ${QHELPGENERATOR_FOUND}) configure_file(doxygen.cfg.in ${CMAKE_BINARY_DIR}/doxygen.cfg) add_custom_target(doxygen-doc ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/doxygen.cfg) endif(DOXYGEN_FOUND) telepathy-qt-0.9.6.1/cmake/modules/FindPythonLibrary.cmake0000644000175100017520000000703112530423576025064 0ustar00kaffeinekaffeine00000000000000# FindPythonLibrary.cmake # ~~~~~~~~~~~~~~~~~~~~~~~ # Find the Python interpreter and related Python directories. # # This file defines the following variables: # # PYTHON_EXECUTABLE - The path and filename of the Python interpreter. # # PYTHON_SHORT_VERSION - The version of the Python interpreter found, # excluding the patch version number. (e.g. 2.5 and not 2.5.1)) # # PYTHON_LONG_VERSION - The version of the Python interpreter found as a human # readable string. # # PYTHON_SITE_PACKAGES_DIR - Location of the Python site-packages directory. # # PYTHON_INCLUDE_PATH - Directory holding the python.h include file. # # PYTHON_LIBRARY, PYTHON_LIBRARIES- Location of the Python library. # Copyright (c) 2007, Simon Edwards # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. INCLUDE(CMakeFindFrameworks) if(EXISTS PYTHON_LIBRARY) # Already in cache, be silent set(PYTHONLIBRARY_FOUND TRUE) else(EXISTS PYTHON_LIBRARY) FIND_PACKAGE(PythonInterp) if(PYTHONINTERP_FOUND) FIND_FILE(_find_lib_python_py FindLibPython.py PATHS ${CMAKE_MODULE_PATH}) EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_lib_python_py} OUTPUT_VARIABLE python_config) if(python_config) STRING(REGEX REPLACE ".*exec_prefix:([^\n]+).*$" "\\1" PYTHON_PREFIX ${python_config}) STRING(REGEX REPLACE ".*\nshort_version:([^\n]+).*$" "\\1" PYTHON_SHORT_VERSION ${python_config}) STRING(REGEX REPLACE ".*\nlong_version:([^\n]+).*$" "\\1" PYTHON_LONG_VERSION ${python_config}) STRING(REGEX REPLACE ".*\npy_inc_dir:([^\n]+).*$" "\\1" PYTHON_INCLUDE_PATH ${python_config}) STRING(REGEX REPLACE ".*\nsite_packages_dir:([^\n]+).*$" "\\1" PYTHON_SITE_PACKAGES_DIR ${python_config}) STRING(REGEX REPLACE "([0-9]+).([0-9]+)" "\\1\\2" PYTHON_SHORT_VERSION_NO_DOT ${PYTHON_SHORT_VERSION}) set(PYTHON_LIBRARY_NAMES python${PYTHON_SHORT_VERSION} python${PYTHON_SHORT_VERSION_NO_DOT}) if(WIN32) STRING(REPLACE "\\" "/" PYTHON_SITE_PACKAGES_DIR ${PYTHON_SITE_PACKAGES_DIR}) endif(WIN32) FIND_LIBRARY(PYTHON_LIBRARY NAMES ${PYTHON_LIBRARY_NAMES} PATHS ${PYTHON_PREFIX}/lib ${PYTHON_PREFIX}/libs NO_DEFAULT_PATH) set(PYTHONLIBRARY_FOUND TRUE) endif(python_config) # adapted from cmake's builtin FindPythonLibs if(APPLE) CMAKE_FIND_FRAMEWORKS(Python) set(PYTHON_FRAMEWORK_INCLUDES) if(Python_FRAMEWORKS) # If a framework has been selected for the include path, # make sure "-framework" is used to link it. if("${PYTHON_INCLUDE_PATH}" MATCHES "Python\\.framework") set(PYTHON_LIBRARY "") set(PYTHON_DEBUG_LIBRARY "") endif("${PYTHON_INCLUDE_PATH}" MATCHES "Python\\.framework") if(NOT PYTHON_LIBRARY) set (PYTHON_LIBRARY "-framework Python" CACHE FILEPATH "Python Framework" FORCE) endif(NOT PYTHON_LIBRARY) set(PYTHONLIBRARY_FOUND TRUE) endif(Python_FRAMEWORKS) endif(APPLE) endif(PYTHONINTERP_FOUND) if(PYTHONLIBRARY_FOUND) set(PYTHON_LIBRARIES ${PYTHON_LIBRARY}) if(NOT PYTHONLIBRARY_FIND_QUIETLY) message(STATUS "Found Python executable: ${PYTHON_EXECUTABLE}") message(STATUS "Found Python version: ${PYTHON_LONG_VERSION}") endif(NOT PYTHONLIBRARY_FIND_QUIETLY) else(PYTHONLIBRARY_FOUND) if(PYTHONLIBRARY_FIND_REQUIRED) message(FATAL_ERROR "Could not find Python") endif(PYTHONLIBRARY_FIND_REQUIRED) endif(PYTHONLIBRARY_FOUND) endif (EXISTS PYTHON_LIBRARY) telepathy-qt-0.9.6.1/cmake/modules/TpQtMacros.cmake0000644000175100017520000006703412530423576023523 0ustar00kaffeinekaffeine00000000000000# - Common macros for Tp-Qt # Copyright (c) 2010, Collabora Ltd. # # Redistribution and use is allowed according to the terms of the BSD license. # # These macros/functions are not exported - they are meant for internal usage into Telepathy-Qt's build system. # # Preamble: How dynamic generators are handled with the CMake build system. # Telepathy-Qt strongly relies upon lots of files generated at build time through some python programs, found # in tools/. To avoid developers the struggle of handling those manually, a set of convenience macros have been # created to handle them with the correct dependencies. Each of those macros takes a target name as a first argument # and creates a target with that exact name. In a similar fashion, in the last argument you can specify a list # of targets the generated target will depend on. This way, you can handle transparently dependencies between # generated files, while the dirty stuff is done for you in the background. # # macro TPQT_EXTRACT_DEPENDS (tpqt_other tpqt_depends) # Internal macro used to extract arguments from ARGN # # function TPQT_CREATE_MOC_COMMAND_TARGET_DEPS(inputfile outputfile moc_flags moc_options target_dependencies ...) # This function behaves exactly like qt_create_moc_command, but creates a custom target for the # moc file generation, allowing to specify a list of targets the generated moc target will depend on. # Just like qt_create_moc_command, it is an internal macro and it's not meant to be used explicitely. # # function TPQT_GENERATE_MOC_I(inputfile outputfile) # This function behaves exactly like qt_generate_moc, but it generates moc files with the -i option, # which disables the generation of an #include directive. This macro has to be used always when building # Tp-Qt internals due to the internal header files restrictions. # # function TPQT_GENERATE_MOC_I_TARGET_DEPS(inputfile outputfile target_dependencies ...) # This function acts as an overload to QT_GENERATE_MOC_I: it does exactly the same thing, but creates a # custom target for the moc file generation, and adds target_dependencies to it as dependencies. # # function TPQT_GENERATE_MOCS(sourcefile ...) # Generates mocs from a list of header files. You usually want to use this function when building tests # or examples. Please remember the list of the header files passed to this function MUST be added to the # target's sources. # # function TPQT_CLIENT_GENERATOR(spec group pretty_include namespace [arguments] [DEPENDS dependencies ...]) # This function takes care of invoking qt-client-gen.py with the correct arguments, which generates # headers out of specs. spec is the name of the spec headers will be generated from, group represents # the spec's group, pretty_include is the name of the capitalized header (for example ClientGenerator), # namespace is the C++ namespace the generated header will belong to. This function also accepts # as an optional last argument a list of additional command line arguments which will be passed to # qt-client-gen.py upon execution. After issuing DEPENDS in the last argument you can pass a list of targets # the generated target will depend on. # # function TPQT_FUTURE_CLIENT_GENERATOR(spec namespace [arguments] [DEPENDS dependencies ...]) # Same as tpqt_client_generator, but for future interfaces # # function TPQT_SERVICE_GENERATOR(spec group pretty_include namespace [arguments] [DEPENDS dependencies ...]) # This function takes care of invoking qt-svc-gen.py with the correct arguments, which generates # headers out of specs. spec is the name of the spec headers will be generated from, group represents # the spec's group, pretty_include is the name of the capitalized header (for example ServiceGenerator), # namespace is the C++ namespace the generated header will belong to. This function also accepts # as an optional last argument a list of additional command line arguments which will be passed to # qt-svc-gen.py upon execution. After issuing DEPENDS in the last argument you can pass a list of targets # the generated target will depend on. # # function TPQT_GENERATE_MANAGER_FILE(MANAGER_FILE OUTPUT_FILENAME DEPEND_FILENAME) # This function takes care of invoking manager-file.py with the correct arguments. The first argument is the # path to the manager-file.py file which should be used, the second is the output filename of the manager, # and the third is the path to the file which depends on the generated manager file. # # function TPQT_XINCLUDATOR (TARGET_NAME INPUT_FILE OUTPUT_FILE [additional_arguments ...] [DEPENDS dependencies ...]) # This function takes care of invoking xincludator.py with the correct arguments. TARGET_NAME is the name of # the generated target (see preamble), INPUT_FILE is the input spec file, OUTPUT_FILE is the filename # the generated file will be saved to. This function also accepts as an optional last argument a list of # additional command line arguments which will be passed to xincludator upon execution. # After issuing DEPENDS in the last argument you can pass a list of targets the generated target will depend on. # # function TPQT_CONSTANTS_GEN (TARGET_NAME SPEC_XML OUTPUT_FILE [additional_arguments ...] [DEPENDS dependencies ...]) # This function takes care of invoking qt-constants-gen.py with the correct arguments. TARGET_NAME is the name of # the generated target (see preamble), SPEC_XML is the spec input file, OUTPUT_FILE is the filename # the generated file will be saved to. This function also accepts as an optional last argument a list of # additional command line arguments which will be passed to qt-constants-gen.py upon execution. # After issuing DEPENDS in the last argument you can pass a list of targets the generated target will depend on. # # function TPQT_TYPES_GEN (TARGET_NAME SPEC_XML OUTFILE_DECL OUTFILE_IMPL NAMESPACE # REAL_INCLUDE PRETTY_INCLUDE [additional_arguments ...] [DEPENDS dependencies ...]) # This function takes care of invoking qt-types-gen.py with the correct arguments. TARGET_NAME is the name of # the generated target (see preamble), SPEC_XML is the input spec file, OUTFILE_DECL is the filename # the header of the generated file will be saved to, OUTFILE_IMPL is the filename the implementation of the # generated file will be saved to, NAMESPACE is the C++ namespace the generated header will belong to, # REAL_INCLUDE is the real include file you want to use, PRETTY_INCLUDE is the name of the capitalized header # (for example ClientGenerator). # This function also accepts as an optional last argument a list of additional command line arguments # which will be passed to qt-constants-gen.py upon execution. # After issuing DEPENDS in the last argument you can pass a list of targets the generated target will depend on. # # macro TPQT_ADD_GENERIC_UNIT_TEST (fancyName name [libraries ...]) # This macro takes care of building and adding a generic unit test to the automatic CTest suite. The requirement # for using this macro is to have the unit test contained in a single source file named ${name}.cpp. fancyName will # be used as the test and target's name, and you can specify as a third and optional argument a set of additional # libraries the target will link to. # # macro TPQT_ADD_DBUS_UNIT_TEST (fancyName name [libraries ...]) # This macro takes care of building and adding an unit test requiring DBus emulation to the automatic # CTest suite. The requirement for using this macro is to have the unit test contained in a single # source file named ${name}.cpp. fancyName will be used as the test and target's name, and you can specify as a third # and optional argument a set of additional libraries the target will link to. Please remember that you need to # set up the DBus environment by calling TPQT_SETUP_DBUS_TEST_ENVIRONMENT BEFORE you call this macro. # # macro _TPQT_ADD_CHECK_TARGETS (fancyName name command [args]) # This is an internal macro which is meant to be used by TPQT_ADD_DBUS_UNIT_TEST and TPQT_ADD_GENERIC_UNIT_TEST. # It takes care of generating a check target for each test method available (currently normal execution, valgrind and # callgrind). This macro accepts the same arguments as the add test macros, but accepts a command and a list of # arguments for running the test instead of the link libraries. However, you are not meant to call this macro from # your CMakeLists.txt files. # # function TPQT_SETUP_DBUS_TEST_ENVIRONMENT () # This function MUST be called before calling TPQT_ADD_DBUS_UNIT_TEST. It takes care of preparing the test # environment for DBus tests and generating the needed files. # # macro MAKE_INSTALL_PATH_ABSOLUTE (out in) # This macro makes the path given in the "in" variable absolute (or leaves it unchanged # if it's absolute already) by prefixing it with TELEPATHY_QT_INSTALL_DIR, # and returns the absolute path in the "out" variable. This macro is mainly used for # generating *Config.cmake files. # # MACRO (TPQT_EXTRACT_DEPENDS _tpqt_other _tpqt_depends) SET(${_tpqt_other}) SET(${_tpqt_depends}) SET(_TPQT_DOING_DEPENDS FALSE) FOREACH(_currentArg ${ARGN}) IF ("${_currentArg}" STREQUAL "DEPENDS") SET(_TPQT_DOING_DEPENDS TRUE) ELSE ("${_currentArg}" STREQUAL "DEPENDS") IF(_TPQT_DOING_DEPENDS) LIST(APPEND ${_tpqt_depends} "${_currentArg}") ELSE(_TPQT_DOING_DEPENDS) LIST(APPEND ${_tpqt_other} "${_currentArg}") ENDIF(_TPQT_DOING_DEPENDS) ENDIF ("${_currentArg}" STREQUAL "DEPENDS") ENDFOREACH(_currentArg) ENDMACRO (TPQT_EXTRACT_DEPENDS) # helper function to set up a moc rule FUNCTION (TPQT_CREATE_MOC_COMMAND_TARGET_DEPS infile outfile moc_flags moc_options) # For Windows, create a parameters file to work around command line length limit GET_FILENAME_COMPONENT(_moc_outfile_name "${outfile}" NAME) IF (WIN32) # Pass the parameters in a file. Set the working directory to # be that containing the parameters file and reference it by # just the file name. This is necessary because the moc tool on # MinGW builds does not seem to handle spaces in the path to the # file given with the @ syntax. GET_FILENAME_COMPONENT(_moc_outfile_dir "${outfile}" PATH) IF(_moc_outfile_dir) SET(_moc_working_dir WORKING_DIRECTORY ${_moc_outfile_dir}) ENDIF(_moc_outfile_dir) SET (_moc_parameters_file ${outfile}_parameters) SET (_moc_parameters ${moc_flags} ${moc_options} -o "${outfile}" "${infile}") FILE (REMOVE ${_moc_parameters_file}) FOREACH(arg ${_moc_parameters}) FILE (APPEND ${_moc_parameters_file} "${arg}\n") ENDFOREACH(arg) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} COMMAND ${QT_MOC_EXECUTABLE} @${_moc_outfile_name}_parameters DEPENDS ${infile} ${_moc_working_dir} VERBATIM) ELSE (WIN32) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} COMMAND ${QT_MOC_EXECUTABLE} ARGS ${moc_flags} ${moc_options} -o ${outfile} ${infile} DEPENDS ${infile}) ENDIF (WIN32) add_custom_target(moc-${_moc_outfile_name} DEPENDS ${outfile}) add_dependencies(moc-${_moc_outfile_name} ${ARGN}) ENDFUNCTION (TPQT_CREATE_MOC_COMMAND_TARGET_DEPS) # add the -i option to QT_GENERATE_MOC function(TPQT_GENERATE_MOC_I infile outfile) qt_get_moc_flags(moc_flags) get_filename_component(abs_infile ${infile} ABSOLUTE) qt_create_moc_command(${abs_infile} ${outfile} "${moc_flags}" "-i") set_source_files_properties(${outfile} PROPERTIES SKIP_AUTOMOC TRUE) # dont run automoc on this file endfunction(TPQT_GENERATE_MOC_I) # same as tpqt_generate_moc_i, but lets the caller specify a list of targets which the mocs should depend on function(TPQT_GENERATE_MOC_I_TARGET_DEPS infile outfile) qt_get_moc_flags(moc_flags) get_filename_component(abs_infile ${infile} ABSOLUTE) tpqt_create_moc_command_target_deps(${abs_infile} ${outfile} "${moc_flags}" "-i" ${ARGN}) set_source_files_properties(${outfile} PROPERTIES SKIP_AUTOMOC TRUE) # dont run automoc on this file endfunction(TPQT_GENERATE_MOC_I_TARGET_DEPS) # generates mocs for the passed list. The list should be added to the target's sources function(tpqt_generate_mocs) file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen" ) foreach(moc_src ${ARGN}) string(REPLACE ".h" ".moc.hpp" generated_file ${moc_src}) tpqt_generate_moc_i(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/_gen/${generated_file}) set_property(SOURCE ${moc_src} APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/${generated_file}) endforeach(moc_src ${ARGN}) endfunction(tpqt_generate_mocs) function(tpqt_client_generator spec group pretty_include namespace) tpqt_extract_depends(client_generator_args client_generator_depends ${ARGN}) set(ARGS ${CMAKE_SOURCE_DIR}/tools/qt-client-gen.py --group=${group} --namespace=${namespace} --typesnamespace=Tp --headerfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.h --implfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}-body.hpp --realinclude=TelepathyQt/${spec}.h --prettyinclude=TelepathyQt/${pretty_include} --specxml=${CMAKE_CURRENT_BINARY_DIR}/_gen/stable-spec.xml --ifacexml=${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml --extraincludes=${TYPES_INCLUDE} --must-define=IN_TP_QT_HEADER --visibility=TP_QT_EXPORT ${client_generator_args}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}-body.hpp COMMAND ${PYTHON_EXECUTABLE} ARGS ${ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_SOURCE_DIR}/tools/libqtcodegen.py ${CMAKE_SOURCE_DIR}/tools/qt-client-gen.py) add_custom_target(generate_cli-${spec}-body DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}-body.hpp) add_dependencies(all-generated-sources generate_cli-${spec}-body) if (client_generator_depends) add_dependencies(generate_cli-${spec}-body ${client_generator_depends}) endif (client_generator_depends) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.moc.hpp "generate_cli-${spec}-body") endfunction(tpqt_client_generator spec group pretty_include namespace) function(tpqt_future_client_generator spec namespace) tpqt_extract_depends(future_client_generator_args future_client_generator_depends ${ARGN}) set(ARGS ${CMAKE_SOURCE_DIR}/tools/qt-client-gen.py --namespace=${namespace} --typesnamespace=TpFuture --headerfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.h --implfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}-body.hpp --realinclude=TelepathyQt/future-internal.h --prettyinclude=TelepathyQt/future-internal.h --specxml=${CMAKE_CURRENT_BINARY_DIR}/_gen/future-spec.xml --ifacexml=${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.xml --extraincludes=${TYPES_INCLUDE} --extraincludes='' --extraincludes='' --visibility=TP_QT_NO_EXPORT ${future_client_generator_args}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}-body.hpp COMMAND ${PYTHON_EXECUTABLE} ARGS ${ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_SOURCE_DIR}/tools/libqtcodegen.py ${CMAKE_SOURCE_DIR}/tools/qt-client-gen.py) add_custom_target(generate_future-${spec}-body DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}-body.hpp) add_dependencies(all-generated-sources generate_future-${spec}-body) if (future_client_generator_depends) add_dependencies(generate_future-${spec}-body ${future_client_generator_depends}) endif (future_client_generator_depends) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.moc.hpp "generate_future-${spec}-body") endfunction(tpqt_future_client_generator spec namespace) function(tpqt_service_generator spec group pretty_include namespace) tpqt_extract_depends(service_generator_args service_generator_depends ${ARGN}) string(REPLACE "svc-" "" spec ${spec}) set(ARGS ${CMAKE_SOURCE_DIR}/tools/qt-svc-gen.py --group=${group} --namespace=${namespace} --typesnamespace=Tp --headerfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.h --implfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.cpp --realinclude=TelepathyQt/_gen/svc-${spec}.h --mocinclude=TelepathyQt/_gen/svc-${spec}.moc.hpp --specxml=${CMAKE_CURRENT_BINARY_DIR}/_gen/stable-spec.xml --ifacexml=${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-svc-${spec}.xml --visibility=TP_QT_EXPORT ${service_generator_args}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.cpp COMMAND ${PYTHON_EXECUTABLE} ARGS ${ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_SOURCE_DIR}/tools/libqtcodegen.py ${CMAKE_SOURCE_DIR}/tools/qt-svc-gen.py) add_custom_target(generate_service-${spec}-body DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.cpp) add_dependencies(all-generated-service-sources generate_service-${spec}-body) if (service_generator_depends) add_dependencies(generate_service-${spec}-body ${service_generator_depends}) endif (service_generator_depends) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec}.moc.hpp "generate_service-${spec}-body") endfunction(tpqt_service_generator spec group pretty_include namespace) # This function is used for generating CM in various examples function(tpqt_generate_manager_file MANAGER_FILE OUTPUT_FILENAME DEPEND_FILENAME) # make_directory is required, otherwise the command won't work!! make_directory(${CMAKE_CURRENT_BINARY_DIR}/_gen) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/param-spec-struct.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/${OUTPUT_FILENAME} COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/manager-file.py ${MANAGER_FILE} _gen DEPENDS ${CMAKE_SOURCE_DIR}/tools/manager-file.py) set_source_files_properties(${DEPEND_FILENAME} PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/param-spec-struct.h) endfunction(tpqt_generate_manager_file MANAGER_FILE) function(tpqt_xincludator _TARGET_NAME _INPUT_FILE _OUTPUT_FILE) tpqt_extract_depends(xincludator_gen_args xincludator_gen_depends ${ARGN}) # Gather all .xml files in TelepathyQt and spec/ and make this target depend on those file(GLOB depends_xml_files ${CMAKE_SOURCE_DIR}/TelepathyQt/*.xml ${CMAKE_SOURCE_DIR}/spec/*.xml) add_custom_command(OUTPUT ${_OUTPUT_FILE} COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/xincludator.py ${_INPUT_FILE} ${xincludator_gen_args} > ${_OUTPUT_FILE} DEPENDS ${CMAKE_SOURCE_DIR}/tools/xincludator.py ${_INPUT_FILE} ${depends_xml_files}) add_custom_target(${_TARGET_NAME} DEPENDS ${_OUTPUT_FILE}) if (xincludator_gen_depends) add_dependencies(${_TARGET_NAME} ${xincludator_gen_depends}) endif (xincludator_gen_depends) endfunction(tpqt_xincludator _TARGET_NAME _INPUT_FILE _OUTPUT_FILE) function(tpqt_constants_gen _TARGET_NAME _SPEC_XML _OUTFILE) tpqt_extract_depends(constants_gen_args constants_gen_depends ${ARGN}) # Gather all .xml files in TelepathyQt and spec/ and make this target depend on those file(GLOB depends_xml_files ${CMAKE_SOURCE_DIR}/TelepathyQt/*.xml ${CMAKE_SOURCE_DIR}/spec/*.xml) add_custom_command(OUTPUT ${_OUTFILE} COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/qt-constants-gen.py ${constants_gen_args} --specxml=${_SPEC_XML} > ${_OUTFILE} DEPENDS ${CMAKE_SOURCE_DIR}/tools/libqtcodegen.py ${CMAKE_SOURCE_DIR}/tools/qt-constants-gen.py ${_SPEC_XML} ${depends_xml_files}) add_custom_target(${_TARGET_NAME} DEPENDS ${_OUTFILE}) add_dependencies(all-generated-sources ${_TARGET_NAME}) if (constants_gen_depends) add_dependencies(${_TARGET_NAME} ${constants_gen_depends}) endif (constants_gen_depends) endfunction (tpqt_constants_gen _TARGET_NAME _SPEC_XML _OUTFILE) function(tpqt_types_gen _TARGET_NAME _SPEC_XML _OUTFILE_DECL _OUTFILE_IMPL _NAMESPACE _REALINCLUDE _PRETTYINCLUDE) tpqt_extract_depends(types_gen_args types_gen_depends ${ARGN}) # Gather all .xml files in TelepathyQt and spec/ and make this target depend on those file(GLOB depends_xml_files ${CMAKE_SOURCE_DIR}/TelepathyQt/*.xml ${CMAKE_SOURCE_DIR}/spec/*.xml) add_custom_command(OUTPUT ${_OUTFILE_DECL} ${_OUTFILE_IMPL} COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/qt-types-gen.py --namespace=${_NAMESPACE} --declfile=${_OUTFILE_DECL} --implfile=${_OUTFILE_IMPL} --realinclude=${_REALINCLUDE} --prettyinclude=${_PRETTYINCLUDE} ${types_gen_args} --specxml=${_SPEC_XML} DEPENDS ${CMAKE_SOURCE_DIR}/tools/libqtcodegen.py ${CMAKE_SOURCE_DIR}/tools/qt-types-gen.py ${_SPEC_XML} ${depends_xml_files}) add_custom_target(${_TARGET_NAME} DEPENDS ${_OUTFILE_IMPL}) add_dependencies(all-generated-sources ${_TARGET_NAME}) if (types_gen_depends) add_dependencies(${_TARGET_NAME} ${types_gen_depends}) endif (types_gen_depends) endfunction(tpqt_types_gen _TARGET_NAME _SPEC_XML _OUTFILE_DECL _OUTFILE_IMPL _NAMESPACE _REALINCLUDE _PRETTYINCLUDE) macro(tpqt_add_generic_unit_test _fancyName _name) tpqt_generate_moc_i(${_name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/${_name}.cpp.moc.hpp) add_executable(test-${_name} ${_name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/${_name}.cpp.moc.hpp) target_link_libraries(test-${_name} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} tp-qt-tests ${TP_QT_EXECUTABLE_LINKER_FLAGS} ${ARGN}) add_test(${_fancyName} ${SH} ${CMAKE_CURRENT_BINARY_DIR}/runGenericTest.sh ${CMAKE_CURRENT_BINARY_DIR}/test-${_name}) list(APPEND _telepathy_qt_test_cases test-${_name}) # Valgrind and Callgrind targets _tpqt_add_check_targets(${_fancyName} ${_name} ${CMAKE_CURRENT_BINARY_DIR}/runGenericTest.sh ${CMAKE_CURRENT_BINARY_DIR}/test-${_name}) endmacro(tpqt_add_generic_unit_test _fancyName _name) macro(tpqt_add_dbus_unit_test _fancyName _name) tpqt_generate_moc_i(${_name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/${_name}.cpp.moc.hpp) add_executable(test-${_name} ${_name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/${_name}.cpp.moc.hpp) target_link_libraries(test-${_name} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} tp-qt-tests ${TP_QT_EXECUTABLE_LINKER_FLAGS} ${ARGN}) set(with_session_bus ${CMAKE_CURRENT_BINARY_DIR}/runDbusTest.sh) add_test(${_fancyName} ${SH} ${with_session_bus} ${CMAKE_CURRENT_BINARY_DIR}/test-${_name}) list(APPEND _telepathy_qt_test_cases test-${_name}) # Valgrind and Callgrind targets _tpqt_add_check_targets(${_fancyName} ${_name} ${with_session_bus} ${CMAKE_CURRENT_BINARY_DIR}/test-${_name}) endmacro(tpqt_add_dbus_unit_test _fancyName _name) macro(_tpqt_add_check_targets _fancyName _name _runnerScript) set_tests_properties(${_fancyName} PROPERTIES FAIL_REGULAR_EXPRESSION "^FAIL!") # Standard check target add_custom_target(check-${_fancyName} ${SH} ${_runnerScript} ${ARGN}) add_dependencies(check-${_fancyName} test-${_name}) # Lcov target add_dependencies(lcov-check test-${_name}) # Valgrind target add_custom_target(check-valgrind-${_fancyName}) add_dependencies(check-valgrind-${_fancyName} test-${_name}) add_custom_command( TARGET check-valgrind-${_fancyName} COMMAND G_SLICE=always-malloc ${SH} ${_runnerScript} /usr/bin/valgrind --tool=memcheck --leak-check=full --leak-resolution=high --child-silent-after-fork=yes --num-callers=20 --gen-suppressions=all --log-file=${CMAKE_CURRENT_BINARY_DIR}/test-${_fancyName}.memcheck.log --suppressions=${CMAKE_SOURCE_DIR}/tools/tp-qt-tests.supp --suppressions=${CMAKE_SOURCE_DIR}/tools/telepathy-glib.supp ${ARGN} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Running valgrind on test \"${_fancyName}\"") add_dependencies(check-valgrind check-valgrind-${_fancyName}) # Callgrind target add_custom_target(check-callgrind-${_fancyName}) add_dependencies(check-callgrind-${_fancyName} test-${_name}) add_custom_command( TARGET check-callgrind-${_fancyName} COMMAND ${SH} ${_runnerScript} /usr/bin/valgrind --tool=callgrind --dump-instr=yes --log-file=${CMAKE_CURRENT_BINARY_DIR}/test-${_fancyName}.callgrind.log --callgrind-out-file=${CMAKE_CURRENT_BINARY_DIR}/test-${_fancyName}.callgrind.out ${ARGN} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Running callgrind on test \"${_fancyName}\"") add_dependencies(check-callgrind check-callgrind-${_fancyName}) endmacro(_tpqt_add_check_targets _fancyName _name) function(tpqt_setup_dbus_test_environment) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/runDbusTest.sh " ${test_environment} sh ${CMAKE_SOURCE_DIR}/tools/with-session-bus.sh \\ --config-file=${CMAKE_BINARY_DIR}/tests/dbus-1/session.conf -- $@ ") endfunction(tpqt_setup_dbus_test_environment) macro(make_install_path_absolute out in) if (IS_ABSOLUTE "${in}") set(${out} "${in}") else (IS_ABSOLUTE "${in}") set(${out} "\${TELEPATHY_QT${QT_VERSION_MAJOR}_INSTALL_DIR}/${in}") endif (IS_ABSOLUTE "${in}") endmacro(make_install_path_absolute out in) telepathy-qt-0.9.6.1/cmake/modules/FindDBus.cmake0000644000175100017520000000267412530423576023123 0ustar00kaffeinekaffeine00000000000000# - Try to find the low-level D-Bus library # Once done this will define # # DBUS_FOUND - system has D-Bus # DBUS_INCLUDE_DIRS - the D-Bus include directories # DBUS_INCLUDE_DIR - the D-Bus include directory # DBUS_ARCH_INCLUDE_DIR - the D-Bus architecture-specific include directory # DBUS_LIBRARIES - the libraries needed to use D-Bus # Copyright (c) 2012, George Kiagiadakis # Copyright (c) 2008, Kevin Kofler, # modeled after FindLibArt.cmake: # Copyright (c) 2006, Alexander Neundorf, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if (NOT WIN32) find_package(PkgConfig) pkg_check_modules(PC_DBUS dbus-1) endif (NOT WIN32) find_path(DBUS_INCLUDE_DIR dbus/dbus.h PATHS ${PC_DBUS_INCLUDE_DIRS} PATH_SUFFIXES dbus-1.0 ) find_path(DBUS_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h PATHS ${PC_DBUS_INCLUDE_DIRS} HINTS ${CMAKE_LIBRARY_PATH}/dbus-1.0/include ${CMAKE_SYSTEM_LIBRARY_PATH}/dbus-1.0/include ) find_library(DBUS_LIBRARIES NAMES dbus-1 PATHS ${PC_DBUS_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DBus DBUS_INCLUDE_DIR DBUS_ARCH_INCLUDE_DIR DBUS_LIBRARIES) set(DBUS_INCLUDE_DIRS ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR}) mark_as_advanced(DBUS_INCLUDE_DIR DBUS_ARCH_INCLUDE_DIR DBUS_LIBRARIES) telepathy-qt-0.9.6.1/tests/0000755000175100017520000000000012530423576017064 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/0000755000175100017520000000000012530423576017632 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/0000755000175100017520000000000012530423576020547 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/call/0000755000175100017520000000000012530423576021462 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/call/cm.c0000644000175100017520000000477512530423576022242 0ustar00kaffeinekaffeine00000000000000/* * manager.c - an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "cm.h" #include #include #include #include "conn.h" #include "protocol.h" G_DEFINE_TYPE (ExampleCallConnectionManager, example_call_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) struct _ExampleCallConnectionManagerPrivate { int dummy; }; static void example_call_connection_manager_init (ExampleCallConnectionManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, ExampleCallConnectionManagerPrivate); } static void example_call_connection_manager_constructed (GObject *object) { ExampleCallConnectionManager *self = EXAMPLE_CALL_CONNECTION_MANAGER (object); TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; void (*constructed) (GObject *) = ((GObjectClass *) example_call_connection_manager_parent_class)->constructed; TpBaseProtocol *protocol; if (constructed != NULL) constructed (object); protocol = g_object_new (EXAMPLE_TYPE_CALL_PROTOCOL, "name", "example", NULL); tp_base_connection_manager_add_protocol (base, protocol); g_object_unref (protocol); } static void example_call_connection_manager_class_init ( ExampleCallConnectionManagerClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; g_type_class_add_private (klass, sizeof (ExampleCallConnectionManagerPrivate)); object_class->constructed = example_call_connection_manager_constructed; base_class->cm_dbus_name = "example_call"; } telepathy-qt-0.9.6.1/tests/lib/glib/call/cm.h0000644000175100017520000000526112530423576022236 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef EXAMPLE_CALL_CM_H #define EXAMPLE_CALL_CM_H #include #include G_BEGIN_DECLS typedef struct _ExampleCallConnectionManager ExampleCallConnectionManager; typedef struct _ExampleCallConnectionManagerPrivate ExampleCallConnectionManagerPrivate; typedef struct _ExampleCallConnectionManagerClass ExampleCallConnectionManagerClass; typedef struct _ExampleCallConnectionManagerClassPrivate ExampleCallConnectionManagerClassPrivate; struct _ExampleCallConnectionManagerClass { TpBaseConnectionManagerClass parent_class; ExampleCallConnectionManagerClassPrivate *priv; }; struct _ExampleCallConnectionManager { TpBaseConnectionManager parent; ExampleCallConnectionManagerPrivate *priv; }; GType example_call_connection_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_CALL_CONNECTION_MANAGER \ (example_call_connection_manager_get_type ()) #define EXAMPLE_CALL_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ ExampleCallConnectionManager)) #define EXAMPLE_CALL_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ ExampleCallConnectionManagerClass)) #define EXAMPLE_IS_CALL_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER)) #define EXAMPLE_IS_CALL_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER)) #define EXAMPLE_CALL_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ ExampleCallConnectionManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/call/call-channel.c0000644000175100017520000006221112530423576024151 0ustar00kaffeinekaffeine00000000000000/* * call-channel.c - an example 1-1 audio/video call * * For simplicity, this channel emulates a device with its own * audio/video user interface, like a video-equipped form of the phones * manipulated by telepathy-snom or gnome-phone-manager. * * As a result, this channel has the HardwareStreaming flag, its contents * and streams do not have the Media interface, and clients should not attempt * to do their own streaming using telepathy-farsight, telepathy-stream-engine * or maemo-stream-engine. * * In practice, nearly all connection managers do not have HardwareStreaming, * and do have the Media interface on their contents/streams. Usage for those * CMs is the same, except that whichever client is the primary handler * for the channel should also hand the channel over to telepathy-farsight or * telepathy-stream-engine to implement the actual streaming. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "call-channel.h" #include #include #include #include #include #include #include #include "call-content.h" #include "call-stream.h" static void hold_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (ExampleCallChannel, example_call_channel, TP_TYPE_BASE_MEDIA_CALL_CHANNEL, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_HOLD, hold_iface_init)) enum { PROP_SIMULATION_DELAY = 1, N_PROPS }; struct _ExampleCallChannelPrivate { guint simulation_delay; TpBaseConnection *conn; TpHandle handle; gboolean locally_requested; guint hold_state; guint hold_state_reason; guint next_stream_id; gboolean closed; }; static const char * example_call_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_HOLD, NULL }; /* In practice you need one for audio, plus one per video (e.g. a * presentation might have separate video contents for the slides * and a camera pointed at the presenter), so having more than three * would be highly unusual */ #define MAX_CONTENTS_PER_CALL 100 G_GNUC_NULL_TERMINATED static void example_call_channel_set_state (ExampleCallChannel *self, TpCallState state, TpCallFlags flags, TpHandle actor, TpCallStateChangeReason reason, const gchar *error, ...) { /* FIXME: TpBaseCallChannel is not that flexible */ tp_base_call_channel_set_state ((TpBaseCallChannel *) self, state, actor, reason, error, ""); } static void example_call_channel_init (ExampleCallChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALL_CHANNEL, ExampleCallChannelPrivate); self->priv->next_stream_id = 1; self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE; } static ExampleCallContent *example_call_channel_add_content ( ExampleCallChannel *self, TpMediaStreamType media_type, gboolean locally_requested, gboolean initial, const gchar *requested_name, GError **error); static void example_call_channel_initiate_outgoing (ExampleCallChannel *self); static void constructed (GObject *object) { void (*chain_up) (GObject *) = ((GObjectClass *) example_call_channel_parent_class)->constructed; ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); TpBaseChannel *base = (TpBaseChannel *) self; TpBaseCallChannel *call = (TpBaseCallChannel *) self; if (chain_up != NULL) chain_up (object); self->priv->handle = tp_base_channel_get_target_handle (base); self->priv->locally_requested = tp_base_channel_is_requested (base); self->priv->conn = tp_base_channel_get_connection (base); tp_base_call_channel_update_member_flags (call, self->priv->handle, 0, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); if (self->priv->locally_requested) { /* Nobody is locally pending. The remote peer will turn up in * remote-pending state when we actually contact them, which is done * in example_call_channel_initiate_outgoing. */ example_call_channel_set_state (self, TP_CALL_STATE_PENDING_INITIATOR, 0, 0, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); } else { /* This is an incoming call, so the self-handle is locally * pending, to indicate that we need to answer. */ example_call_channel_set_state (self, TP_CALL_STATE_INITIALISED, 0, self->priv->handle, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); } /* FIXME: should respect initial names */ if (tp_base_call_channel_has_initial_audio (call, NULL)) { g_message ("Channel initially has an audio stream"); example_call_channel_add_content (self, TP_MEDIA_STREAM_TYPE_AUDIO, self->priv->locally_requested, TRUE, NULL, NULL); } if (tp_base_call_channel_has_initial_video (call, NULL)) { g_message ("Channel initially has a video stream"); example_call_channel_add_content (self, TP_MEDIA_STREAM_TYPE_VIDEO, self->priv->locally_requested, TRUE, NULL, NULL); } tp_base_channel_register (base); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); switch (property_id) { case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); switch (property_id) { case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void example_call_channel_terminate (ExampleCallChannel *self, TpHandle actor, TpChannelGroupChangeReason reason, TpCallStateChangeReason call_reason, const gchar *error_name) { TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpCallState call_state = tp_base_call_channel_get_state (base); if (call_state != TP_CALL_STATE_ENDED) { GList *contents; example_call_channel_set_state (self, TP_CALL_STATE_ENDED, 0, actor, call_reason, error_name, NULL); /* FIXME: fd.o #24936 #c20: it's unclear in the spec whether we should * remove peers on call termination or not. For now this example does. */ tp_base_call_channel_remove_member (base, self->priv->handle, actor, call_reason, error_name, NULL); if (actor == tp_base_connection_get_self_handle (self->priv->conn)) { const gchar *send_reason; /* In a real protocol these would be some sort of real protocol * construct, like an XMPP error stanza or a SIP error code */ switch (reason) { case TP_CHANNEL_GROUP_CHANGE_REASON_BUSY: send_reason = ""; break; case TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER: send_reason = ""; break; default: send_reason = ""; } g_message ("SIGNALLING: send: Terminating call: %s", send_reason); } /* terminate all streams: to avoid modifying the hash table (in the * streams-removed handler) while iterating over it, we have to copy the * keys and iterate over those */ contents = tp_base_call_channel_get_contents (base); contents = g_list_copy (contents); for (; contents != NULL; contents = g_list_delete_link (contents, contents)) { example_call_content_remove_stream (contents->data); tp_base_call_channel_remove_content (base, contents->data, 0, call_reason, error_name, ""); } } } static void dispose (GObject *object) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); /* the manager is meant to hold a ref to us until we've closed */ g_assert (self->priv->closed); ((GObjectClass *) example_call_channel_parent_class)->dispose (object); } static void close_channel (TpBaseChannel *base) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); example_call_channel_terminate (self, tp_base_connection_get_self_handle (self->priv->conn), TP_CHANNEL_GROUP_CHANGE_REASON_NONE, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); self->priv->closed = TRUE; tp_base_channel_destroyed (base); } static void call_accept (TpBaseCallChannel *self); static TpBaseCallContent * call_add_content (TpBaseCallChannel *self, const gchar *name, TpMediaStreamType media, TpMediaStreamDirection initial_direction, GError **error); static void call_hangup (TpBaseCallChannel *self, guint reason, const gchar *detailed_reason, const gchar *message); static void example_call_channel_class_init (ExampleCallChannelClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); TpBaseCallChannelClass *call_class = (TpBaseCallChannelClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleCallChannelPrivate)); call_class->accept = call_accept; call_class->add_content = call_add_content; call_class->hangup = call_hangup; base_class->target_handle_type = TP_HANDLE_TYPE_CONTACT; base_class->interfaces = example_call_channel_interfaces; base_class->close = close_channel; object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); } static gboolean simulate_contact_ended_cb (gpointer p) { ExampleCallChannel *self = p; TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpCallState call_state = tp_base_call_channel_get_state (base); /* if the call has been cancelled while we were waiting for the * contact to do so, do nothing! */ if (call_state == TP_CALL_STATE_ENDED) return FALSE; g_message ("SIGNALLING: receive: call terminated: "); example_call_channel_terminate (self, self->priv->handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); return FALSE; } static gboolean simulate_contact_answered_cb (gpointer p) { ExampleCallChannel *self = p; TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpCallState call_state = tp_base_call_channel_get_state (base); GList *contents; TpHandleRepoIface *contact_repo; const gchar *peer; /* if the call has been cancelled while we were waiting for the * contact to answer, do nothing! */ if (call_state == TP_CALL_STATE_ENDED) return FALSE; /* otherwise, we're waiting for a response from the contact, which now * arrives */ g_assert_cmpuint (call_state, ==, TP_CALL_STATE_INITIALISED); g_message ("SIGNALLING: receive: contact answered our call"); tp_base_call_channel_remote_accept (base); contents = tp_base_call_channel_get_contents (base); for (; contents != NULL; contents = contents->next) { ExampleCallStream *stream = example_call_content_get_stream (contents->data); if (stream == NULL) continue; /* remote contact accepts our proposed stream direction */ example_call_stream_simulate_contact_agreed_to_send (stream); } contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); peer = tp_handle_inspect (contact_repo, self->priv->handle); /* If the contact's ID contains the magic string "(terminate)", simulate * them hanging up after a moment. */ if (strstr (peer, "(terminate)") != NULL) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_ended_cb, g_object_ref (self), g_object_unref); } return FALSE; } static gboolean simulate_contact_busy_cb (gpointer p) { ExampleCallChannel *self = p; TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpCallState call_state = tp_base_call_channel_get_state (base); /* if the call has been cancelled while we were waiting for the * contact to answer, do nothing */ if (call_state == TP_CALL_STATE_ENDED) return FALSE; /* otherwise, we're waiting for a response from the contact, which now * arrives */ g_assert_cmpuint (call_state, ==, TP_CALL_STATE_INITIALISED); g_message ("SIGNALLING: receive: call terminated: "); example_call_channel_terminate (self, self->priv->handle, TP_CHANNEL_GROUP_CHANGE_REASON_BUSY, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, TP_ERROR_STR_BUSY); return FALSE; } static ExampleCallContent * example_call_channel_add_content (ExampleCallChannel *self, TpMediaStreamType media_type, gboolean locally_requested, gboolean initial, const gchar *requested_name, GError **error) { TpBaseCallChannel *base = (TpBaseCallChannel *) self; GList *contents; const gchar *type_str; TpHandle creator = self->priv->handle; TpCallContentDisposition disposition = TP_CALL_CONTENT_DISPOSITION_NONE; guint id = self->priv->next_stream_id++; ExampleCallContent *content; ExampleCallStream *stream; gchar *name; gchar *path; guint i; /* an arbitrary limit much less than 2**32 means we don't use ridiculous * amounts of memory, and also means @i can't wrap around when we use it to * uniquify content names. */ contents = tp_base_call_channel_get_contents (base); if (g_list_length (contents) > MAX_CONTENTS_PER_CALL) { g_set_error (error, TP_ERROR, TP_ERROR_PERMISSION_DENIED, "What are you doing with all those contents anyway?!"); return NULL; } type_str = (media_type == TP_MEDIA_STREAM_TYPE_AUDIO ? "audio" : "video"); if (tp_str_empty (requested_name)) { requested_name = type_str; } for (i = 0; ; i++) { GList *l; if (i == 0) name = g_strdup (requested_name); else name = g_strdup_printf ("%s (%u)", requested_name, i); for (l = contents; l != NULL; l = l->next) { if (!tp_strdiff (tp_base_call_content_get_name (l->data), name)) break; } if (l == NULL) { /* this name hasn't been used - good enough */ break; } g_free (name); name = NULL; } if (initial) disposition = TP_CALL_CONTENT_DISPOSITION_INITIAL; if (locally_requested) { g_message ("SIGNALLING: send: new %s stream %s", type_str, name); creator = self->priv->conn->self_handle; } path = g_strdup_printf ("%s/Content%u", tp_base_channel_get_object_path ((TpBaseChannel *) self), id); content = g_object_new (EXAMPLE_TYPE_CALL_CONTENT, "connection", self->priv->conn, "creator", creator, "media-type", media_type, "name", name, "disposition", disposition, "object-path", path, NULL); tp_base_call_channel_add_content (base, (TpBaseCallContent *) content); g_free (path); path = g_strdup_printf ("%s/Stream%u", tp_base_channel_get_object_path ((TpBaseChannel *) self), id); stream = g_object_new (EXAMPLE_TYPE_CALL_STREAM, "connection", self->priv->conn, "handle", self->priv->handle, "locally-requested", locally_requested, "object-path", path, NULL); example_call_content_add_stream (content, stream); g_free (path); g_object_unref (content); g_object_unref (stream); return content; } static gboolean simulate_contact_ringing_cb (gpointer p) { ExampleCallChannel *self = p; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); const gchar *peer; tp_base_call_channel_update_member_flags ((TpBaseCallChannel *) self, self->priv->handle, TP_CALL_MEMBER_FLAG_RINGING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); /* In this example there is no real contact, so just simulate them * answering after a short time - unless the contact's name * contains "(no answer)" or "(busy)" */ peer = tp_handle_inspect (contact_repo, self->priv->handle); if (strstr (peer, "(busy)") != NULL) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_busy_cb, g_object_ref (self), g_object_unref); } else if (strstr (peer, "(no answer)") != NULL) { /* do nothing - the call just rings forever */ } else { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_answered_cb, g_object_ref (self), g_object_unref); } return FALSE; } static void example_call_channel_initiate_outgoing (ExampleCallChannel *self) { g_message ("SIGNALLING: send: new streamed media call"); example_call_channel_set_state (self, TP_CALL_STATE_INITIALISED, 0, tp_base_connection_get_self_handle (self->priv->conn), TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); /* After a moment, we're sent an informational message saying it's ringing */ g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_ringing_cb, g_object_ref (self), g_object_unref); } static void accept_incoming_call (ExampleCallChannel *self) { TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); GList *contents; g_message ("SIGNALLING: send: Accepting incoming call from %s", tp_handle_inspect (contact_repo, self->priv->handle)); example_call_channel_set_state (self, TP_CALL_STATE_ACCEPTED, 0, tp_base_connection_get_self_handle (self->priv->conn), TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); contents = tp_base_call_channel_get_contents (base); for (; contents != NULL; contents = contents->next) { ExampleCallStream *stream = example_call_content_get_stream (contents->data); guint disposition = tp_base_call_content_get_disposition (contents->data); if (stream == NULL || disposition != TP_CALL_CONTENT_DISPOSITION_INITIAL) continue; /* we accept the proposed stream direction */ example_call_stream_accept_proposed_direction (stream); } } static void call_accept (TpBaseCallChannel *base) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); if (self->priv->locally_requested) { /* Take the contents we've already added, and make them happen */ example_call_channel_initiate_outgoing (self); } else { accept_incoming_call (self); } } static void call_hangup (TpBaseCallChannel *base, guint reason, const gchar *detailed_reason, const gchar *message G_GNUC_UNUSED) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); example_call_channel_terminate (self, tp_base_connection_get_self_handle (self->priv->conn), TP_CHANNEL_GROUP_CHANGE_REASON_NONE, reason, detailed_reason); } static TpBaseCallContent * call_add_content (TpBaseCallChannel *base, const gchar *content_name, guint content_type, TpMediaStreamDirection initial_direction, GError **error) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); return (TpBaseCallContent *) example_call_channel_add_content (self, content_type, TRUE, FALSE, content_name, error); } static gboolean simulate_hold (gpointer p) { ExampleCallChannel *self = p; TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpCallState call_state = tp_base_call_channel_get_state (base); TpCallFlags call_flags = 0; /* FIXME */ self->priv->hold_state = TP_LOCAL_HOLD_STATE_HELD; g_message ("SIGNALLING: hold state changed to held"); tp_svc_channel_interface_hold_emit_hold_state_changed (self, self->priv->hold_state, self->priv->hold_state_reason); example_call_channel_set_state (self, call_state, call_flags | TP_CALL_FLAG_LOCALLY_HELD, tp_base_connection_get_self_handle (self->priv->conn), TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); return FALSE; } static gboolean simulate_unhold (gpointer p) { ExampleCallChannel *self = p; TpBaseCallChannel *base = (TpBaseCallChannel *) self; TpCallState call_state = tp_base_call_channel_get_state (base); TpCallFlags call_flags = 0; /* FIXME */ self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; g_message ("SIGNALLING: hold state changed to unheld"); tp_svc_channel_interface_hold_emit_hold_state_changed (self, self->priv->hold_state, self->priv->hold_state_reason); example_call_channel_set_state (self, call_state, call_flags & ~TP_CALL_FLAG_LOCALLY_HELD, tp_base_connection_get_self_handle (self->priv->conn), TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); return FALSE; } static gboolean simulate_inability_to_unhold (gpointer p) { ExampleCallChannel *self = p; self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; g_message ("SIGNALLING: unable to unhold - hold state changed to " "pending hold"); tp_svc_channel_interface_hold_emit_hold_state_changed (self, self->priv->hold_state, self->priv->hold_state_reason); /* hold again */ g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_hold, g_object_ref (self), g_object_unref); return FALSE; } static void hold_get_hold_state (TpSvcChannelInterfaceHold *iface, DBusGMethodInvocation *context) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); tp_svc_channel_interface_hold_return_from_get_hold_state (context, self->priv->hold_state, self->priv->hold_state_reason); } static void hold_request_hold (TpSvcChannelInterfaceHold *iface, gboolean hold, DBusGMethodInvocation *context) { ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; const gchar *peer; GSourceFunc callback; if ((hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_HELD) || (!hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)) { tp_svc_channel_interface_hold_return_from_request_hold (context); return; } peer = tp_handle_inspect (contact_repo, self->priv->handle); if (!hold && strstr (peer, "(no unhold)") != NULL) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "unable to unhold"); goto error; } self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; if (hold) { self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; callback = simulate_hold; } else { self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_UNHOLD; peer = tp_handle_inspect (contact_repo, self->priv->handle); if (strstr (peer, "(inability to unhold)") != NULL) { callback = simulate_inability_to_unhold; } else { callback = simulate_unhold; } } g_message ("SIGNALLING: hold state changed to pending %s", (hold ? "hold" : "unhold")); tp_svc_channel_interface_hold_emit_hold_state_changed (iface, self->priv->hold_state, self->priv->hold_state_reason); /* No need to change the call flags - we never change the actual hold state * here, only the pending hold state */ g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, callback, g_object_ref (self), g_object_unref); tp_svc_channel_interface_hold_return_from_request_hold (context); return; error: dbus_g_method_return_error (context, error); g_error_free (error); } void hold_iface_init (gpointer iface, gpointer data) { TpSvcChannelInterfaceHoldClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_hold_implement_##x (klass, hold_##x) IMPLEMENT (get_hold_state); IMPLEMENT (request_hold); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/call/call-channel.h0000644000175100017520000000436712530423576024166 0ustar00kaffeinekaffeine00000000000000/* * call-channel.h - header for an example channel * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef EXAMPLE_CALL_CHANNEL_H #define EXAMPLE_CALL_CHANNEL_H #include #include G_BEGIN_DECLS typedef struct _ExampleCallChannel ExampleCallChannel; typedef struct _ExampleCallChannelPrivate ExampleCallChannelPrivate; typedef struct _ExampleCallChannelClass ExampleCallChannelClass; GType example_call_channel_get_type (void); #define EXAMPLE_TYPE_CALL_CHANNEL \ (example_call_channel_get_type ()) #define EXAMPLE_CALL_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_CHANNEL, \ ExampleCallChannel)) #define EXAMPLE_CALL_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_CHANNEL, \ ExampleCallChannelClass)) #define EXAMPLE_IS_CALL_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_CHANNEL)) #define EXAMPLE_IS_CALL_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_CHANNEL)) #define EXAMPLE_CALL_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CHANNEL, \ ExampleCallChannelClass)) struct _ExampleCallChannelClass { TpBaseMediaCallChannelClass parent_class; }; struct _ExampleCallChannel { TpBaseMediaCallChannel parent; ExampleCallChannelPrivate *priv; }; G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/call/example_call.manager0000644000175100017520000000240212530423576025442 0ustar00kaffeinekaffeine00000000000000[ConnectionManager] Interfaces= [Protocol example] Interfaces= ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;org.freedesktop.Telepathy.Connection.Interface.Contacts;org.freedesktop.Telepathy.Connection.Interface.Presence;org.freedesktop.Telepathy.Connection.Interface.SimplePresence; param-account=s required register param-simulation-delay=u default-simulation-delay=1000 RequestableChannelClasses=audio;video; VCardField=x-telepathy-example EnglishName=Example with Call channels Icon=face-smile [audio] org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call1 org.freedesktop.Telepathy.Channel.TargetHandleType u=1 org.freedesktop.Telepathy.Channel.Type.Call1.InitialAudio b=1 allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.Call1.InitialVideo; [video] org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call1 org.freedesktop.Telepathy.Channel.TargetHandleType u=1 org.freedesktop.Telepathy.Channel.Type.Call1.InitialVideo b=1 allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.Call1.InitialAudio; telepathy-qt-0.9.6.1/tests/lib/glib/call/call-content.c0000644000175100017520000000553312530423576024217 0ustar00kaffeinekaffeine00000000000000/* * call-content.c - a content in a call. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "call-content.h" #include #include #include G_DEFINE_TYPE (ExampleCallContent, example_call_content, TP_TYPE_BASE_MEDIA_CALL_CONTENT) struct _ExampleCallContentPrivate { ExampleCallStream *stream; }; static void example_call_content_init (ExampleCallContent *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALL_CONTENT, ExampleCallContentPrivate); } static void dispose (GObject *object) { ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); g_clear_object (&self->priv->stream); ((GObjectClass *) example_call_content_parent_class)->dispose (object); } static void example_call_content_class_init (ExampleCallContentClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; g_type_class_add_private (klass, sizeof (ExampleCallContentPrivate)); object_class->dispose = dispose; } ExampleCallStream * example_call_content_get_stream (ExampleCallContent *self) { g_return_val_if_fail (EXAMPLE_IS_CALL_CONTENT (self), NULL); return self->priv->stream; } void example_call_content_add_stream (ExampleCallContent *self, ExampleCallStream *stream) { g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); g_return_if_fail (EXAMPLE_IS_CALL_STREAM (stream)); g_return_if_fail (self->priv->stream == NULL); self->priv->stream = g_object_ref (stream); tp_base_call_content_add_stream ((TpBaseCallContent *) self, (TpBaseCallStream *) stream); } void example_call_content_remove_stream (ExampleCallContent *self) { TpBaseCallStream *stream; g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); g_return_if_fail (self->priv->stream != NULL); stream = (TpBaseCallStream *) self->priv->stream; self->priv->stream = NULL; tp_base_call_content_remove_stream ((TpBaseCallContent *) self, stream, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); g_object_unref (stream); } telepathy-qt-0.9.6.1/tests/lib/glib/call/call-content.h0000644000175100017520000000530412530423576024220 0ustar00kaffeinekaffeine00000000000000/* * call-content.h - header for an example content * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef EXAMPLE_CALL_CONTENT_H #define EXAMPLE_CALL_CONTENT_H #include #include #include "call-stream.h" G_BEGIN_DECLS typedef struct _ExampleCallContent ExampleCallContent; typedef struct _ExampleCallContentPrivate ExampleCallContentPrivate; typedef struct _ExampleCallContentClass ExampleCallContentClass; typedef struct _ExampleCallContentClassPrivate ExampleCallContentClassPrivate; GType example_call_content_get_type (void); #define EXAMPLE_TYPE_CALL_CONTENT \ (example_call_content_get_type ()) #define EXAMPLE_CALL_CONTENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_CONTENT, \ ExampleCallContent)) #define EXAMPLE_CALL_CONTENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_CONTENT, \ ExampleCallContentClass)) #define EXAMPLE_IS_CALL_CONTENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_CONTENT)) #define EXAMPLE_IS_CALL_CONTENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_CONTENT)) #define EXAMPLE_CALL_CONTENT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONTENT, \ ExampleCallContentClass)) struct _ExampleCallContentClass { TpBaseMediaCallContentClass parent_class; ExampleCallContentClassPrivate *priv; }; struct _ExampleCallContent { TpBaseMediaCallContent parent; ExampleCallContentPrivate *priv; }; /* In this example, each content can only have one stream. */ ExampleCallStream *example_call_content_get_stream (ExampleCallContent *self); void example_call_content_add_stream (ExampleCallContent *self, ExampleCallStream *stream); void example_call_content_remove_stream (ExampleCallContent *self); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/call/protocol.c0000644000175100017520000001133512530423576023472 0ustar00kaffeinekaffeine00000000000000/* * protocol.c - an example Protocol * * Copyright © 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "protocol.h" #include #include "call-manager.h" #include "conn.h" G_DEFINE_TYPE (ExampleCallProtocol, example_call_protocol, TP_TYPE_BASE_PROTOCOL) static void example_call_protocol_init ( ExampleCallProtocol *self) { } gboolean example_call_protocol_check_contact_id (const gchar *id, gchar **normal, GError **error) { g_return_val_if_fail (id != NULL, FALSE); if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "ID must not be empty"); return FALSE; } if (normal != NULL) *normal = g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); return TRUE; } static gboolean account_param_filter (const TpCMParamSpec *paramspec, GValue *value, GError **error) { const gchar *id = g_value_get_string (value); return example_call_protocol_check_contact_id (id, NULL, error); } static const TpCMParamSpec example_call_example_params[] = { { "account", "s", G_TYPE_STRING, TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, NULL, /* no default */ 0, /* unused, formerly struct offset */ account_param_filter, NULL, /* filter data, unused here */ NULL }, /* setter data, now unused */ { "simulation-delay", "u", G_TYPE_UINT, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GUINT_TO_POINTER (1000), /* default */ 0, /* unused, formerly struct offset */ NULL, /* no filter */ NULL, /* filter data, unused here */ NULL }, /* setter data, now unused */ { NULL } }; static const TpCMParamSpec * get_parameters (TpBaseProtocol *self) { return example_call_example_params; } static TpBaseConnection * new_connection (TpBaseProtocol *protocol, GHashTable *asv, GError **error) { ExampleCallConnection *conn; const gchar *account; guint sim_delay; account = tp_asv_get_string (asv, "account"); /* telepathy-glib checked this for us */ g_assert (account != NULL); sim_delay = tp_asv_get_uint32 (asv, "simulation-delay", NULL); conn = EXAMPLE_CALL_CONNECTION ( g_object_new (EXAMPLE_TYPE_CALL_CONNECTION, "account", account, "protocol", tp_base_protocol_get_name (protocol), "simulation-delay", sim_delay, NULL)); return (TpBaseConnection *) conn; } static gchar * normalize_contact (TpBaseProtocol *self G_GNUC_UNUSED, const gchar *contact, GError **error) { gchar *normal; if (example_call_protocol_check_contact_id (contact, &normal, error)) return normal; else return NULL; } static gchar * identify_account (TpBaseProtocol *self G_GNUC_UNUSED, GHashTable *asv, GError **error) { const gchar *account = tp_asv_get_string (asv, "account"); if (account != NULL) return normalize_contact (self, account, error); g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "'account' parameter not given"); return NULL; } static GStrv get_interfaces (TpBaseProtocol *self) { return NULL; } static void get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED, GStrv *connection_interfaces, GType **channel_managers, gchar **icon_name, gchar **english_name, gchar **vcard_field) { if (connection_interfaces != NULL) { *connection_interfaces = g_strdupv ( (GStrv) example_call_connection_get_possible_interfaces ()); } if (channel_managers != NULL) { GType types[] = { EXAMPLE_TYPE_CALL_MANAGER, G_TYPE_INVALID }; *channel_managers = g_memdup (types, sizeof (types)); } if (icon_name != NULL) *icon_name = g_strdup ("face-smile"); if (english_name != NULL) *english_name = g_strdup ("Example with Call channels"); if (vcard_field != NULL) *vcard_field = g_strdup ("x-telepathy-example"); } static void example_call_protocol_class_init ( ExampleCallProtocolClass *klass) { TpBaseProtocolClass *base_class = (TpBaseProtocolClass *) klass; base_class->get_parameters = get_parameters; base_class->new_connection = new_connection; base_class->normalize_contact = normalize_contact; base_class->identify_account = identify_account; base_class->get_interfaces = get_interfaces; base_class->get_connection_details = get_connection_details; } telepathy-qt-0.9.6.1/tests/lib/glib/call/protocol.h0000644000175100017520000000354412530423576023502 0ustar00kaffeinekaffeine00000000000000/* * protocol.h - header for an example Protocol * Copyright © 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_CALL_PROTOCOL_H #define EXAMPLE_CALL_PROTOCOL_H #include #include G_BEGIN_DECLS typedef struct _ExampleCallProtocol ExampleCallProtocol; typedef struct _ExampleCallProtocolPrivate ExampleCallProtocolPrivate; typedef struct _ExampleCallProtocolClass ExampleCallProtocolClass; typedef struct _ExampleCallProtocolClassPrivate ExampleCallProtocolClassPrivate; struct _ExampleCallProtocolClass { TpBaseProtocolClass parent_class; ExampleCallProtocolClassPrivate *priv; }; struct _ExampleCallProtocol { TpBaseProtocol parent; ExampleCallProtocolPrivate *priv; }; GType example_call_protocol_get_type (void); #define EXAMPLE_TYPE_CALL_PROTOCOL \ (example_call_protocol_get_type ()) #define EXAMPLE_CALL_PROTOCOL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ EXAMPLE_TYPE_CALL_PROTOCOL, \ ExampleCallProtocol)) #define EXAMPLE_CALL_PROTOCOL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ EXAMPLE_TYPE_CALL_PROTOCOL, \ ExampleCallProtocolClass)) #define EXAMPLE_IS_CALL_PROTOCOL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ EXAMPLE_TYPE_CALL_PROTOCOL)) #define EXAMPLE_IS_CALL_PROTOCOL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), \ EXAMPLE_TYPE_CALL_PROTOCOL)) #define EXAMPLE_CALL_PROTOCOL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ EXAMPLE_TYPE_CALL_PROTOCOL, \ ExampleCallProtocolClass)) gboolean example_call_protocol_check_contact_id (const gchar *id, gchar **normal, GError **error); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/call/CMakeLists.txt0000644000175100017520000000074712530423576024232 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) set(example_cm_call_SRCS call-channel.c call-channel.h call-content.c call-content.h call-manager.c call-manager.h call-stream.c call-stream.h cm.c cm.h conn.c conn.h protocol.c protocol.h) add_library(example-cm-call STATIC ${example_cm_call_SRCS}) target_link_libraries(example-cm-call ${TPGLIB_LIBRARIES}) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/call/call-manager.c0000644000175100017520000003567612530423576024172 0ustar00kaffeinekaffeine00000000000000/* * call-manager.c - an example channel manager for Call channels. * * This channel manager emulates a protocol like XMPP Jingle, where you can * make several simultaneous calls to the same or different contacts. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "call-manager.h" #include #include #include #include #include #include #include "call-channel.h" static void channel_manager_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleCallManager, example_call_manager, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, channel_manager_iface_init)) /* type definition stuff */ enum { PROP_CONNECTION = 1, PROP_SIMULATION_DELAY, N_PROPS }; struct _ExampleCallManagerPrivate { TpBaseConnection *conn; guint simulation_delay; /* Map from reffed ExampleCallChannel to the same pointer; used as a * set. */ GHashTable *channels; /* Next channel will be ("CallChannel%u", next_channel_index) */ guint next_channel_index; gulong status_changed_id; gulong available_id; }; static void example_call_manager_init (ExampleCallManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALL_MANAGER, ExampleCallManagerPrivate); self->priv->conn = NULL; self->priv->channels = g_hash_table_new_full (NULL, NULL, g_object_unref, NULL); self->priv->status_changed_id = 0; self->priv->available_id = 0; } static void example_call_manager_close_all (ExampleCallManager *self) { if (self->priv->channels != NULL) { GHashTable *tmp = self->priv->channels; GHashTableIter iter; gpointer v; self->priv->channels = NULL; g_hash_table_iter_init (&iter, tmp); while (g_hash_table_iter_next (&iter, NULL, &v)) tp_base_channel_close (v); g_hash_table_unref (tmp); } if (self->priv->available_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->available_id); self->priv->available_id = 0; } if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } } static void dispose (GObject *object) { ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); example_call_manager_close_all (self); g_assert (self->priv->channels == NULL); ((GObjectClass *) example_call_manager_parent_class)->dispose ( object); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); switch (property_id) { case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); switch (property_id) { case PROP_CONNECTION: /* We don't ref the connection, because it owns a reference to the * channel manager, and it guarantees that the manager's lifetime is * less than its lifetime */ self->priv->conn = g_value_get_object (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, ExampleCallManager *self) { switch (status) { case TP_CONNECTION_STATUS_DISCONNECTED: { example_call_manager_close_all (self); } break; default: break; } } static ExampleCallChannel *new_channel (ExampleCallManager *self, TpHandle handle, TpHandle initiator, gpointer request_token, gboolean initial_audio, gboolean initial_video); static gboolean simulate_incoming_call_cb (gpointer p) { ExampleCallManager *self = p; TpHandleRepoIface *contact_repo; TpHandle caller; /* do nothing if we've been disconnected while waiting for the contact to * call us */ if (self->priv->available_id == 0) return FALSE; /* We're called by someone whose ID on the IM service is "caller" */ contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); caller = tp_handle_ensure (contact_repo, "caller", NULL, NULL); new_channel (self, caller, caller, NULL, TRUE, FALSE); return FALSE; } /* Whenever our presence changes from away to available, and whenever our * presence message changes while remaining available, simulate a call from * a contact */ static void available_cb (GObject *conn G_GNUC_UNUSED, const gchar *message, ExampleCallManager *self) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_incoming_call_cb, g_object_ref (self), g_object_unref); } static void constructed (GObject *object) { ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_call_manager_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", (GCallback) status_changed_cb, self); self->priv->available_id = g_signal_connect (self->priv->conn, "available", (GCallback) available_cb, self); } static void example_call_manager_class_init (ExampleCallManagerClass *klass) { GParamSpec *param_spec; GObjectClass *object_class = (GObjectClass *) klass; object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); g_type_class_add_private (klass, sizeof (ExampleCallManagerPrivate)); } static void example_call_manager_foreach_channel (TpChannelManager *iface, TpExportableChannelFunc callback, gpointer user_data) { ExampleCallManager *self = EXAMPLE_CALL_MANAGER (iface); GHashTableIter iter; gpointer chan; g_hash_table_iter_init (&iter, self->priv->channels); while (g_hash_table_iter_next (&iter, &chan, NULL)) callback (chan, user_data); } static void channel_closed_cb (ExampleCallChannel *chan, ExampleCallManager *self) { tp_channel_manager_emit_channel_closed_for_object (self, TP_EXPORTABLE_CHANNEL (chan)); if (self->priv->channels != NULL) g_hash_table_remove (self->priv->channels, chan); } static ExampleCallChannel * new_channel (ExampleCallManager *self, TpHandle handle, TpHandle initiator, gpointer request_token, gboolean initial_audio, gboolean initial_video) { ExampleCallChannel *chan; gchar *object_path; GSList *requests = NULL; /* FIXME: This could potentially wrap around, but only after 4 billion * calls, which is probably plenty. */ object_path = g_strdup_printf ("%s/CallChannel%u", self->priv->conn->object_path, self->priv->next_channel_index++); chan = g_object_new (EXAMPLE_TYPE_CALL_CHANNEL, "connection", self->priv->conn, "object-path", object_path, "handle", handle, "initiator-handle", initiator, "requested", (self->priv->conn->self_handle == initiator), "simulation-delay", self->priv->simulation_delay, "initial-audio", initial_audio, "initial-video", initial_video, "mutable-contents", TRUE, NULL); g_free (object_path); g_signal_connect (chan, "closed", G_CALLBACK (channel_closed_cb), self); g_hash_table_insert (self->priv->channels, chan, chan); if (request_token != NULL) requests = g_slist_prepend (requests, request_token); tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), requests); g_slist_free (requests); return chan; } static const gchar * const audio_fixed_properties[] = { TP_PROP_CHANNEL_CHANNEL_TYPE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL }; static const gchar * const video_fixed_properties[] = { TP_PROP_CHANNEL_CHANNEL_TYPE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL }; static const gchar * const audio_allowed_properties[] = { TP_PROP_CHANNEL_TARGET_HANDLE, TP_PROP_CHANNEL_TARGET_ID, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL }; static const gchar * const video_allowed_properties[] = { TP_PROP_CHANNEL_TARGET_HANDLE, TP_PROP_CHANNEL_TARGET_ID, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL }; static void example_call_manager_type_foreach_channel_class (GType type, TpChannelManagerTypeChannelClassFunc func, gpointer user_data) { GHashTable *table = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_CALL, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN, TRUE, NULL); func (type, table, audio_allowed_properties, user_data); g_hash_table_remove (table, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO); tp_asv_set_boolean (table, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, TRUE); func (type, table, video_allowed_properties, user_data); g_hash_table_unref (table); } static gboolean example_call_manager_request (ExampleCallManager *self, gpointer request_token, GHashTable *request_properties, gboolean require_new) { TpHandle handle; GError *error = NULL; gboolean initial_audio, initial_video; if (tp_strdiff (tp_asv_get_string (request_properties, TP_PROP_CHANNEL_CHANNEL_TYPE), TP_IFACE_CHANNEL_TYPE_CALL)) { return FALSE; } if (tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) { return FALSE; } handle = tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE, NULL); g_assert (handle != 0); initial_audio = tp_asv_get_boolean (request_properties, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL); initial_video = tp_asv_get_boolean (request_properties, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL); if (!initial_audio && !initial_video) { g_set_error (&error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "Call channels must initially have either audio or video content"); goto error; } /* the set of (fixed | allowed) properties is the same for audio and video, * so we only need to check with one set */ if (tp_channel_manager_asv_has_unknown_properties (request_properties, audio_fixed_properties, audio_allowed_properties, &error)) { goto error; } if (handle == self->priv->conn->self_handle) { /* In protocols with a concept of multiple "resources" signed in to * one account (XMPP, and possibly MSN) it is technically possible to * call yourself - e.g. if you're signed in on two PCs, you can call one * from the other. For simplicity, this example simulates a protocol * where this is not the case. */ g_set_error (&error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "In this protocol, you can't call yourself"); goto error; } if (!require_new) { /* see if we're already calling that handle */ GHashTableIter iter; gpointer chan; g_hash_table_iter_init (&iter, self->priv->channels); while (g_hash_table_iter_next (&iter, &chan, NULL)) { guint its_handle; g_object_get (chan, "handle", &its_handle, NULL); if (its_handle == handle) { tp_channel_manager_emit_request_already_satisfied (self, request_token, TP_EXPORTABLE_CHANNEL (chan)); return TRUE; } } } new_channel (self, handle, self->priv->conn->self_handle, request_token, initial_audio, initial_video); return TRUE; error: tp_channel_manager_emit_request_failed (self, request_token, error->domain, error->code, error->message); g_error_free (error); return TRUE; } static gboolean example_call_manager_create_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_call_manager_request ( EXAMPLE_CALL_MANAGER (manager), request_token, request_properties, TRUE); } static gboolean example_call_manager_ensure_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_call_manager_request ( EXAMPLE_CALL_MANAGER (manager), request_token, request_properties, FALSE); } static void channel_manager_iface_init (gpointer g_iface, gpointer iface_data G_GNUC_UNUSED) { TpChannelManagerIface *iface = g_iface; iface->foreach_channel = example_call_manager_foreach_channel; iface->type_foreach_channel_class = example_call_manager_type_foreach_channel_class; iface->create_channel = example_call_manager_create_channel; iface->ensure_channel = example_call_manager_ensure_channel; /* In this channel manager, RequestChannel is not supported; Call is not * designed to work with the old RequestChannel API. */ iface->request_channel = NULL; } telepathy-qt-0.9.6.1/tests/lib/glib/call/call-manager.h0000644000175100017520000000450112530423576024156 0ustar00kaffeinekaffeine00000000000000/* * media-manager.h - header for an example channel manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef EXAMPLE_CALL_MANAGER_H #define EXAMPLE_CALL_MANAGER_H #include G_BEGIN_DECLS typedef struct _ExampleCallManager ExampleCallManager; typedef struct _ExampleCallManagerPrivate ExampleCallManagerPrivate; typedef struct _ExampleCallManagerClass ExampleCallManagerClass; typedef struct _ExampleCallManagerClassPrivate ExampleCallManagerClassPrivate; struct _ExampleCallManagerClass { GObjectClass parent_class; ExampleCallManagerClassPrivate *priv; }; struct _ExampleCallManager { GObject parent; ExampleCallManagerPrivate *priv; }; GType example_call_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_CALL_MANAGER \ (example_call_manager_get_type ()) #define EXAMPLE_CALL_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_MANAGER, \ ExampleCallManager)) #define EXAMPLE_CALL_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_MANAGER, \ ExampleCallManagerClass)) #define EXAMPLE_IS_CALL_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_MANAGER)) #define EXAMPLE_IS_CALL_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_MANAGER)) #define EXAMPLE_CALL_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_MANAGER, \ ExampleCallManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/call/conn.c0000644000175100017520000003042712530423576022571 0ustar00kaffeinekaffeine00000000000000/* * conn.c - an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "conn.h" #include #include #include #include #include "call-manager.h" #include "protocol.h" G_DEFINE_TYPE_WITH_CODE (ExampleCallConnection, example_call_connection, TP_TYPE_BASE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, tp_contacts_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, tp_presence_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, tp_presence_mixin_simple_presence_iface_init)) enum { PROP_ACCOUNT = 1, PROP_SIMULATION_DELAY, N_PROPS }; enum { SIGNAL_AVAILABLE, N_SIGNALS }; static guint signals[N_SIGNALS] = { 0 }; struct _ExampleCallConnectionPrivate { gchar *account; guint simulation_delay; gboolean away; gchar *presence_message; }; static void example_call_connection_init (ExampleCallConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALL_CONNECTION, ExampleCallConnectionPrivate); self->priv->away = FALSE; self->priv->presence_message = g_strdup (""); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_value_dup_string (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void finalize (GObject *object) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); tp_contacts_mixin_finalize (object); g_free (self->priv->account); g_free (self->priv->presence_message); G_OBJECT_CLASS (example_call_connection_parent_class)->finalize (object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); return g_strdup_printf ("%s@%p", self->priv->account, self); } gchar * example_call_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { gchar *normal = NULL; if (example_call_protocol_check_contact_id (id, &normal, error)) return normal; else return NULL; } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, example_call_normalize_contact, NULL); } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); GPtrArray *ret = g_ptr_array_sized_new (1); g_ptr_array_add (ret, g_object_new (EXAMPLE_TYPE_CALL_MANAGER, "connection", conn, "simulation-delay", self->priv->simulation_delay, NULL)); return ret; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished, but here * we can do it immediately. */ conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, error); if (conn->self_handle == 0) return FALSE; tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void shut_down (TpBaseConnection *conn) { /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished, but here * we can do it immediately. */ tp_base_connection_finish_shutdown (conn); } static void constructed (GObject *object) { TpBaseConnection *base = TP_BASE_CONNECTION (object); void (*chain_up) (GObject *) = G_OBJECT_CLASS (example_call_connection_parent_class)->constructed; if (chain_up != NULL) chain_up (object); tp_contacts_mixin_init (object, G_STRUCT_OFFSET (ExampleCallConnection, contacts_mixin)); tp_base_connection_register_with_contacts_mixin (base); tp_presence_mixin_init (object, G_STRUCT_OFFSET (ExampleCallConnection, presence_mixin)); tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); } static gboolean status_available (GObject *object, guint index_) { TpBaseConnection *base = TP_BASE_CONNECTION (object); if (base->status != TP_CONNECTION_STATUS_CONNECTED) return FALSE; return TRUE; } static GHashTable * get_contact_statuses (GObject *object, const GArray *contacts, GError **error) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); guint i; GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) tp_presence_status_free); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, guint, i); ExampleCallPresence presence; GHashTable *parameters; parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); /* we know our own status from the connection; for this example CM, * everyone else's status is assumed to be "available" */ if (contact == base->self_handle) { presence = (self->priv->away ? EXAMPLE_CALL_PRESENCE_AWAY : EXAMPLE_CALL_PRESENCE_AVAILABLE); if (self->priv->presence_message[0] != '\0') g_hash_table_insert (parameters, "message", tp_g_value_slice_new_string (self->priv->presence_message)); } else { presence = EXAMPLE_CALL_PRESENCE_AVAILABLE; } g_hash_table_insert (result, GUINT_TO_POINTER (contact), tp_presence_status_new (presence, parameters)); g_hash_table_unref (parameters); } return result; } static gboolean set_own_status (GObject *object, const TpPresenceStatus *status, GError **error) { ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); GHashTable *presences; const gchar *message = ""; if (status->optional_arguments != NULL) { GValue *v = g_hash_table_lookup (status->optional_arguments, "message"); if (v != NULL && G_VALUE_HOLDS_STRING (v)) { message = g_value_get_string (v); if (message == NULL) message = ""; } } if (status->index == EXAMPLE_CALL_PRESENCE_AWAY) { if (self->priv->away && !tp_strdiff (message, self->priv->presence_message)) return TRUE; self->priv->away = TRUE; } else { if (!self->priv->away && !tp_strdiff (message, self->priv->presence_message)) return TRUE; self->priv->away = FALSE; } g_free (self->priv->presence_message); self->priv->presence_message = g_strdup (message); presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), (gpointer) status); tp_presence_mixin_emit_presence_update (object, presences); g_hash_table_unref (presences); if (!self->priv->away) { g_signal_emit (self, signals[SIGNAL_AVAILABLE], 0, message); } return TRUE; } static const TpPresenceStatusOptionalArgumentSpec can_have_message[] = { { "message", "s", NULL, NULL }, { NULL } }; /* Must be kept in sync with ExampleCallPresence enum in header */ static const TpPresenceStatusSpec presence_statuses[] = { { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, can_have_message }, { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, can_have_message }, { NULL } }; static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, NULL }; const gchar * const * example_call_connection_get_possible_interfaces (void) { /* in this example CM we don't have any extra interfaces that are sometimes, * but not always, present */ return interfaces_always_present; } static void example_call_connection_class_init ( ExampleCallConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (ExampleCallConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_managers = create_channel_managers; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); /* Used in the call manager, to simulate an incoming call when we become * available */ signals[SIGNAL_AVAILABLE] = g_signal_new ("available", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); tp_contacts_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleCallConnectionClass, contacts_mixin)); tp_presence_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleCallConnectionClass, presence_mixin), status_available, get_contact_statuses, set_own_status, presence_statuses); tp_presence_mixin_simple_presence_init_dbus_properties (object_class); } telepathy-qt-0.9.6.1/tests/lib/glib/call/conn.h0000644000175100017520000000512212530423576022570 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_CALL_CONN_H #define EXAMPLE_CALL_CONN_H #include #include #include #include G_BEGIN_DECLS typedef struct _ExampleCallConnection ExampleCallConnection; typedef struct _ExampleCallConnectionPrivate ExampleCallConnectionPrivate; typedef struct _ExampleCallConnectionClass ExampleCallConnectionClass; typedef struct _ExampleCallConnectionClassPrivate ExampleCallConnectionClassPrivate; struct _ExampleCallConnectionClass { TpBaseConnectionClass parent_class; TpPresenceMixinClass presence_mixin; TpContactsMixinClass contacts_mixin; ExampleCallConnectionClassPrivate *priv; }; struct _ExampleCallConnection { TpBaseConnection parent; TpPresenceMixin presence_mixin; TpContactsMixin contacts_mixin; ExampleCallConnectionPrivate *priv; }; GType example_call_connection_get_type (void); #define EXAMPLE_TYPE_CALL_CONNECTION \ (example_call_connection_get_type ()) #define EXAMPLE_CALL_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_CONNECTION, \ ExampleCallConnection)) #define EXAMPLE_CALL_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_CONNECTION, \ ExampleCallConnectionClass)) #define EXAMPLE_IS_CALL_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_CONNECTION)) #define EXAMPLE_IS_CALL_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_CONNECTION)) #define EXAMPLE_CALL_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONNECTION, \ ExampleCallConnectionClass)) /* Must be kept in sync with the array presence_statuses in conn.c */ typedef enum { EXAMPLE_CALL_PRESENCE_OFFLINE = 0, EXAMPLE_CALL_PRESENCE_UNKNOWN, EXAMPLE_CALL_PRESENCE_ERROR, EXAMPLE_CALL_PRESENCE_AWAY, EXAMPLE_CALL_PRESENCE_AVAILABLE } ExampleCallPresence; gchar *example_call_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error); const gchar * const *example_call_connection_get_possible_interfaces (void); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/call/call-stream.c0000644000175100017520000003603612530423576024042 0ustar00kaffeinekaffeine00000000000000/* * call-stream.c - a stream in a call. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "call-stream.h" #include #include #include G_DEFINE_TYPE (ExampleCallStream, example_call_stream, TP_TYPE_BASE_MEDIA_CALL_STREAM) enum { PROP_SIMULATION_DELAY = 1, PROP_LOCALLY_REQUESTED, PROP_HANDLE, N_PROPS }; struct _ExampleCallStreamPrivate { guint simulation_delay; gboolean locally_requested; TpHandle handle; guint agreed_delay_id; }; static void example_call_stream_init (ExampleCallStream *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALL_STREAM, ExampleCallStreamPrivate); } static void example_call_stream_receive_direction_request ( ExampleCallStream *self, gboolean local_send, gboolean remote_send); static void example_call_stream_change_direction (ExampleCallStream *self, gboolean want_to_send, gboolean want_to_receive); static void constructed (GObject *object) { ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_call_stream_parent_class)->constructed; static guint count = 0; TpBaseConnection *conn; TpDBusDaemon *dbus; gchar *object_path; TpCallStreamEndpoint *endpoint; if (chain_up != NULL) chain_up (object); conn = tp_base_call_stream_get_connection ((TpBaseCallStream *) self); dbus = tp_base_connection_get_dbus_daemon (conn); object_path = g_strdup_printf ("%s/Endpoint%d", tp_base_call_stream_get_object_path ((TpBaseCallStream *) self), count++); endpoint = tp_call_stream_endpoint_new (dbus, object_path, TP_STREAM_TRANSPORT_TYPE_RAW_UDP, FALSE); tp_base_media_call_stream_add_endpoint ((TpBaseMediaCallStream *) self, endpoint); if (self->priv->locally_requested) { example_call_stream_change_direction (self, TRUE, TRUE); } else { example_call_stream_receive_direction_request (self, TRUE, TRUE); } g_object_unref (endpoint); g_free (object_path); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); switch (property_id) { case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; case PROP_LOCALLY_REQUESTED: g_value_set_boolean (value, self->priv->locally_requested); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); switch (property_id) { case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; case PROP_LOCALLY_REQUESTED: self->priv->locally_requested = g_value_get_boolean (value); break; case PROP_HANDLE: self->priv->handle = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static gboolean stream_request_receiving (TpBaseCallStream *base, TpHandle contact, gboolean receive, GError **error); static gboolean stream_set_sending (TpBaseCallStream *base, gboolean sending, GError **error); static void finalize (GObject *object) { ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); if (self->priv->agreed_delay_id != 0) g_source_remove (self->priv->agreed_delay_id); G_OBJECT_CLASS (example_call_stream_parent_class)->finalize (object); } static void example_call_stream_class_init (ExampleCallStreamClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseCallStreamClass *stream_class = (TpBaseCallStreamClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleCallStreamPrivate)); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->finalize = finalize; stream_class->request_receiving = stream_request_receiving; stream_class->set_sending = stream_set_sending; param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); param_spec = g_param_spec_boolean ("locally-requested", "Locally requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_LOCALLY_REQUESTED, param_spec); param_spec = g_param_spec_uint ("handle", "Peer's TpHandle", "The handle with which this stream communicates or 0 if not applicable", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_HANDLE, param_spec); } void example_call_stream_accept_proposed_direction (ExampleCallStream *self) { TpBaseCallStream *base = (TpBaseCallStream *) self; TpSendingState state = tp_base_call_stream_get_local_sending_state (base); if (state != TP_SENDING_STATE_PENDING_SEND) return; tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_SENDING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } void example_call_stream_simulate_contact_agreed_to_send (ExampleCallStream *self) { TpBaseCallStream *base = (TpBaseCallStream *) self; TpSendingState state = tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); if (state != TP_SENDING_STATE_PENDING_SEND) g_message ("%s: SIGNALLING: Sending to server: OK, I'll send you media", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_remote_sending_state ((TpBaseCallStream *) self, self->priv->handle, TP_SENDING_STATE_SENDING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } static gboolean simulate_contact_agreed_to_send_cb (gpointer p) { example_call_stream_simulate_contact_agreed_to_send (p); return FALSE; } static void example_call_stream_change_direction (ExampleCallStream *self, gboolean want_to_send, gboolean want_to_receive) { TpBaseCallStream *base = (TpBaseCallStream *) self; TpSendingState local_sending_state = tp_base_call_stream_get_local_sending_state (base); TpSendingState remote_sending_state = tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); if (want_to_send) { if (local_sending_state != TP_SENDING_STATE_SENDING) { if (local_sending_state == TP_SENDING_STATE_PENDING_SEND) { g_message ("%s: SIGNALLING: send: I will now send you media", tp_base_call_stream_get_object_path (base)); } g_message ("%s: MEDIA: sending media to peer", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_SENDING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } } else { if (local_sending_state == TP_SENDING_STATE_SENDING) { g_message ("%s: SIGNALLING: send: I will no longer send you media", tp_base_call_stream_get_object_path (base)); g_message ("%s: MEDIA: no longer sending media to peer", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } else if (local_sending_state == TP_SENDING_STATE_PENDING_SEND) { g_message ("%s: SIGNALLING: send: refusing to send you media", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } } if (want_to_receive) { if (remote_sending_state == TP_SENDING_STATE_NONE) { g_message ("%s: SIGNALLING: send: send me media, please?", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_remote_sending_state ( (TpBaseCallStream *) self, self->priv->handle, TP_SENDING_STATE_PENDING_SEND, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); if (self->priv->agreed_delay_id == 0) { self->priv->agreed_delay_id = g_timeout_add ( self->priv->simulation_delay, simulate_contact_agreed_to_send_cb, self); } } } else { if (remote_sending_state != TP_SENDING_STATE_NONE) { g_message ("%s: SIGNALLING: send: Please stop sending me media", tp_base_call_stream_get_object_path (base)); g_message ("%s: MEDIA: suppressing output of stream", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_remote_sending_state ( (TpBaseCallStream *) self, self->priv->handle, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } } } /* The remote user wants to change the direction of this stream according * to @local_send and @remote_send. Shall we let him? */ static void example_call_stream_receive_direction_request (ExampleCallStream *self, gboolean local_send, gboolean remote_send) { TpBaseCallStream *base = (TpBaseCallStream *) self; TpSendingState local_sending_state = tp_base_call_stream_get_local_sending_state (base); TpSendingState remote_sending_state = tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); /* In some protocols, streams cannot be neither sending nor receiving, so * if a stream is set to TP_MEDIA_STREAM_DIRECTION_NONE, this is equivalent * to removing it. (This is true in XMPP, for instance.) * * However, for this example we'll emulate a protocol where streams can be * directionless. */ if (local_send) { g_message ("%s: SIGNALLING: send: Please start sending me media", tp_base_call_stream_get_object_path (base)); if (local_sending_state == TP_SENDING_STATE_NONE) { /* ask the user for permission */ tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_PENDING_SEND, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } else { /* nothing to do, we're already sending (or asking the user for * permission to do so) on that stream */ } } else { g_message ("%s: SIGNALLING: receive: Please stop sending me media", tp_base_call_stream_get_object_path (base)); g_message ("%s: SIGNALLING: reply: OK!", tp_base_call_stream_get_object_path (base)); if (local_sending_state == TP_SENDING_STATE_SENDING) { g_message ("%s: MEDIA: no longer sending media to peer", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } else if (local_sending_state == TP_SENDING_STATE_PENDING_SEND) { tp_base_call_stream_update_local_sending_state (base, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } else { /* nothing to do, we're not sending on that stream anyway */ } } if (remote_send) { g_message ("%s: SIGNALLING: receive: I will now send you media", tp_base_call_stream_get_object_path (base)); if (remote_sending_state != TP_SENDING_STATE_SENDING) { tp_base_call_stream_update_remote_sending_state ( (TpBaseCallStream *) self, self->priv->handle, TP_SENDING_STATE_SENDING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } } else { if (remote_sending_state == TP_SENDING_STATE_PENDING_SEND) { g_message ("%s: SIGNALLING: receive: No, I refuse to send you media", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_remote_sending_state ( (TpBaseCallStream *) self, self->priv->handle, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } else if (remote_sending_state == TP_SENDING_STATE_SENDING) { g_message ("%s: SIGNALLING: receive: I will no longer send media", tp_base_call_stream_get_object_path (base)); tp_base_call_stream_update_remote_sending_state ( (TpBaseCallStream *) self, self->priv->handle, TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); } } } static gboolean stream_set_sending (TpBaseCallStream *base, gboolean sending, GError **error) { ExampleCallStream *self = EXAMPLE_CALL_STREAM (base); TpSendingState remote_sending_state = tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); example_call_stream_change_direction (self, sending, (remote_sending_state == TP_SENDING_STATE_SENDING)); return TRUE; } static gboolean stream_request_receiving (TpBaseCallStream *base, TpHandle contact, gboolean receive, GError **error) { ExampleCallStream *self = EXAMPLE_CALL_STREAM (base); TpSendingState local_sending_state = tp_base_call_stream_get_local_sending_state (base); /* This is the only member */ g_assert (contact == self->priv->handle); example_call_stream_change_direction (self, (local_sending_state == TP_SENDING_STATE_SENDING), receive); return TRUE; } telepathy-qt-0.9.6.1/tests/lib/glib/call/call-stream.h0000644000175100017520000000524512530423576024045 0ustar00kaffeinekaffeine00000000000000/* * call-stream.h - header for an example stream * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef EXAMPLE_CALL_STREAM_H #define EXAMPLE_CALL_STREAM_H #include #include G_BEGIN_DECLS typedef struct _ExampleCallStream ExampleCallStream; typedef struct _ExampleCallStreamPrivate ExampleCallStreamPrivate; typedef struct _ExampleCallStreamClass ExampleCallStreamClass; typedef struct _ExampleCallStreamClassPrivate ExampleCallStreamClassPrivate; GType example_call_stream_get_type (void); #define EXAMPLE_TYPE_CALL_STREAM \ (example_call_stream_get_type ()) #define EXAMPLE_CALL_STREAM(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_STREAM, \ ExampleCallStream)) #define EXAMPLE_CALL_STREAM_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_STREAM, \ ExampleCallStreamClass)) #define EXAMPLE_IS_CALL_STREAM(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_STREAM)) #define EXAMPLE_IS_CALL_STREAM_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_STREAM)) #define EXAMPLE_CALL_STREAM_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_STREAM, \ ExampleCallStreamClass)) struct _ExampleCallStreamClass { TpBaseMediaCallStreamClass parent_class; ExampleCallStreamClassPrivate *priv; }; struct _ExampleCallStream { TpBaseMediaCallStream parent; ExampleCallStreamPrivate *priv; }; void example_call_stream_accept_proposed_direction (ExampleCallStream *self); void example_call_stream_connect (ExampleCallStream *self); /* This controls receiving emulated network events, so it wouldn't exist in * a real connection manager */ void example_call_stream_simulate_contact_agreed_to_send ( ExampleCallStream *self); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo/0000755000175100017520000000000012530423576021465 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/echo/connection-manager.c0000644000175100017520000000371512530423576025406 0ustar00kaffeinekaffeine00000000000000/* * manager.c - an example connection manager * * Copyright (C) 2007 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "connection-manager.h" #include #include #include #include "conn.h" G_DEFINE_TYPE (ExampleEchoConnectionManager, example_echo_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) /* type definition stuff */ static void example_echo_connection_manager_init (ExampleEchoConnectionManager *self) { } /* private data */ typedef struct { gchar *account; } ExampleParams; #include "_gen/param-spec-struct.h" static gpointer alloc_params (void) { return g_slice_new0 (ExampleParams); } static void free_params (gpointer p) { ExampleParams *params = p; g_free (params->account); g_slice_free (ExampleParams, params); } static const TpCMProtocolSpec example_protocols[] = { { "example", example_echo_example_params, alloc_params, free_params }, { NULL, NULL } }; static TpBaseConnection * new_connection (TpBaseConnectionManager *self, const gchar *proto, TpIntSet *params_present, gpointer parsed_params, GError **error) { ExampleParams *params = parsed_params; ExampleEchoConnection *conn = EXAMPLE_ECHO_CONNECTION (g_object_new (EXAMPLE_TYPE_ECHO_CONNECTION, "account", params->account, "protocol", proto, NULL)); return (TpBaseConnection *) conn; } static void example_echo_connection_manager_class_init ( ExampleEchoConnectionManagerClass *klass) { TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; base_class->new_connection = new_connection; base_class->cm_dbus_name = "example_echo"; base_class->protocol_params = example_protocols; } telepathy-qt-0.9.6.1/tests/lib/glib/echo/connection-manager.h0000644000175100017520000000413112530423576025404 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example connection manager * Copyright (C) 2007 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_ECHO_CONNECTION_MANAGER_H__ #define __EXAMPLE_ECHO_CONNECTION_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleEchoConnectionManager ExampleEchoConnectionManager; typedef struct _ExampleEchoConnectionManagerPrivate ExampleEchoConnectionManagerPrivate; typedef struct _ExampleEchoConnectionManagerClass ExampleEchoConnectionManagerClass; typedef struct _ExampleEchoConnectionManagerClassPrivate ExampleEchoConnectionManagerClassPrivate; struct _ExampleEchoConnectionManagerClass { TpBaseConnectionManagerClass parent_class; ExampleEchoConnectionManagerClassPrivate *priv; }; struct _ExampleEchoConnectionManager { TpBaseConnectionManager parent; ExampleEchoConnectionManagerPrivate *priv; }; GType example_echo_connection_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_ECHO_CONNECTION_MANAGER \ (example_echo_connection_manager_get_type ()) #define EXAMPLE_ECHO_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_ECHO_CONNECTION_MANAGER, \ ExampleEchoConnectionManager)) #define EXAMPLE_ECHO_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_ECHO_CONNECTION_MANAGER, \ ExampleEchoConnectionManagerClass)) #define EXAMPLE_IS_ECHO_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_ECHO_CONNECTION_MANAGER)) #define EXAMPLE_IS_ECHO_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_ECHO_CONNECTION_MANAGER)) #define EXAMPLE_ECHO_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_CONNECTION_MANAGER, \ ExampleEchoConnectionManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo/CMakeLists.txt0000644000175100017520000000104412530423576024224 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) include_directories(${CMAKE_CURRENT_BINARY_DIR}) set(example_cm_echo_SRCS chan.c chan.h conn.c conn.h connection-manager.c connection-manager.h im-manager.c im-manager.h ) add_library(example-cm-echo STATIC ${example_cm_echo_SRCS}) target_link_libraries(example-cm-echo ${TPGLIB_LIBRARIES}) tpqt_generate_manager_file(${CMAKE_CURRENT_SOURCE_DIR}/manager-file.py example_echo.manager connection-manager.c) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/echo/chan.c0000644000175100017520000003651312530423576022552 0ustar00kaffeinekaffeine00000000000000/* * chan.c - an example text channel talking to a particular * contact. Similar code is used for 1-1 IM channels in many protocols * (IRC private messages ("/query"), XMPP IM etc.) * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ // We need to use the deprecated TpTextMixin here to test compatibility functionality #define _TP_IGNORE_DEPRECATIONS #include "chan.h" #include #include #include static void text_iface_init (gpointer iface, gpointer data); static void channel_iface_init (gpointer iface, gpointer data); static void destroyable_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (ExampleEchoChannel, example_echo_channel, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT, text_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_DESTROYABLE, destroyable_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL)) /* type definition stuff */ enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_CHANNEL_DESTROYED, PROP_CHANNEL_PROPERTIES, N_PROPS }; struct _ExampleEchoChannelPrivate { TpBaseConnection *conn; gchar *object_path; TpHandle handle; TpHandle initiator; /* These are really booleans, but gboolean is signed. Thanks, GLib */ unsigned closed:1; unsigned disposed:1; }; static const char * example_echo_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_DESTROYABLE, NULL }; static void example_echo_channel_init (ExampleEchoChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_CHANNEL, ExampleEchoChannelPrivate); } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (example_echo_channel_parent_class)->constructor (type, n_props, props); ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); tp_dbus_daemon_register_object ( tp_base_connection_get_dbus_daemon (self->priv->conn), self->priv->object_path, self); tp_text_mixin_init (object, G_STRUCT_OFFSET (ExampleEchoChannel, text), contact_repo); tp_text_mixin_set_message_types (object, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION, TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE, G_MAXUINT); return object; } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_TEXT); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; case PROP_TARGET_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->priv->handle)); } break; case PROP_REQUESTED: g_value_set_boolean (value, (self->priv->initiator == self->priv->conn->self_handle)); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, self->priv->initiator); break; case PROP_INITIATOR_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, self->priv->initiator == 0 ? "" : tp_handle_inspect (contact_repo, self->priv->initiator)); } break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_INTERFACES: g_value_set_boxed (value, example_echo_channel_interfaces); break; case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, self->priv->closed); break; case PROP_CHANNEL_PROPERTIES: g_value_take_boxed (value, tp_dbus_properties_mixin_make_properties_hash (object, TP_IFACE_CHANNEL, "ChannelType", TP_IFACE_CHANNEL, "TargetHandleType", TP_IFACE_CHANNEL, "TargetHandle", TP_IFACE_CHANNEL, "TargetID", TP_IFACE_CHANNEL, "InitiatorHandle", TP_IFACE_CHANNEL, "InitiatorID", TP_IFACE_CHANNEL, "Requested", TP_IFACE_CHANNEL, "Interfaces", NULL)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_free (self->priv->object_path); self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE: /* we don't ref it here because we don't necessarily have access to the * contact repo yet - instead we ref it in the constructor. */ self->priv->handle = g_value_get_uint (value); break; case PROP_INITIATOR_HANDLE: /* likewise */ self->priv->initiator = g_value_get_uint (value); break; case PROP_HANDLE_TYPE: case PROP_CHANNEL_TYPE: /* these properties are writable in the interface, but not actually * meaningfully changable on this channel, so we do nothing */ break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (object); if (self->priv->disposed) return; self->priv->disposed = TRUE; if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } ((GObjectClass *) example_echo_channel_parent_class)->dispose (object); } static void finalize (GObject *object) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (object); g_free (self->priv->object_path); tp_text_mixin_finalize (object); ((GObjectClass *) example_echo_channel_parent_class)->finalize (object); } static void example_echo_channel_class_init (ExampleEchoChannelClass *klass) { static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { NULL } }; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleEchoChannelPrivate)); object_class->constructor = constructor; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, "channel-destroyed"); g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, "channel-properties"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "The string obtained by inspecting the target handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); tp_text_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleEchoChannelClass, text_class)); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleEchoChannelClass, dbus_properties_class)); } static void example_echo_channel_close (ExampleEchoChannel *self) { GObject *object = (GObject *) self; if (!self->priv->closed) { TpHandle first_sender; /* The manager wants to be able to respawn the channel if it has pending * messages. When respawned, the channel must have the initiator set * to the contact who sent us those messages (if it isn't already), * and the messages must be marked as having been rescued so they * don't get logged twice. */ if (tp_text_mixin_has_pending_messages (object, &first_sender)) { if (self->priv->initiator != first_sender) { self->priv->initiator = first_sender; } tp_text_mixin_set_rescued (object); } else { /* No pending messages, so it's OK to really close */ self->priv->closed = TRUE; } tp_svc_channel_emit_closed (self); } } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (iface); example_echo_channel_close (self); tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_TEXT); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (iface); tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, self->priv->handle); } static void channel_get_interfaces (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, example_echo_channel_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void text_send (TpSvcChannelTypeText *iface, guint type, const gchar *text, DBusGMethodInvocation *context) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (iface); time_t timestamp = time (NULL); gchar *echo; guint echo_type = type; /* Send should return just before Sent is emitted. */ tp_svc_channel_type_text_return_from_send (context); /* Tell the client that the message was submitted for sending */ tp_svc_channel_type_text_emit_sent ((GObject *) self, timestamp, type, text); /* Pretend that the remote contact has replied. Normally, you'd * call tp_text_mixin_receive or tp_text_mixin_receive_with_flags * in response to network events */ switch (type) { case TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL: echo = g_strdup_printf ("You said: %s", text); break; case TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION: echo = g_strdup_printf ("notices that the user %s", text); break; case TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE: echo = g_strdup_printf ("You sent a notice: %s", text); break; default: echo = g_strdup_printf ("You sent some weird message type, %u: \"%s\"", type, text); echo_type = TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL; } tp_text_mixin_receive ((GObject *) self, echo_type, self->priv->handle, timestamp, echo); g_free (echo); } static void text_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeTextClass *klass = iface; tp_text_mixin_iface_init (iface, data); #define IMPLEMENT(x) tp_svc_channel_type_text_implement_##x (klass, text_##x) IMPLEMENT (send); #undef IMPLEMENT } static void destroyable_destroy (TpSvcChannelInterfaceDestroyable *iface, DBusGMethodInvocation *context) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (iface); tp_text_mixin_clear ((GObject *) self); example_echo_channel_close (self); g_assert (self->priv->closed); tp_svc_channel_interface_destroyable_return_from_destroy (context); } static void destroyable_iface_init (gpointer iface, gpointer data) { TpSvcChannelInterfaceDestroyableClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_destroyable_implement_##x (klass, destroyable_##x) IMPLEMENT (destroy); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/echo/chan.h0000644000175100017520000000350412530423576022551 0ustar00kaffeinekaffeine00000000000000/* * chan.h - header for an example channel * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CHAN_H__ #define __EXAMPLE_CHAN_H__ #include #include #include G_BEGIN_DECLS typedef struct _ExampleEchoChannel ExampleEchoChannel; typedef struct _ExampleEchoChannelClass ExampleEchoChannelClass; typedef struct _ExampleEchoChannelPrivate ExampleEchoChannelPrivate; GType example_echo_channel_get_type (void); #define EXAMPLE_TYPE_ECHO_CHANNEL \ (example_echo_channel_get_type ()) #define EXAMPLE_ECHO_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_ECHO_CHANNEL, \ ExampleEchoChannel)) #define EXAMPLE_ECHO_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_ECHO_CHANNEL, \ ExampleEchoChannelClass)) #define EXAMPLE_IS_ECHO_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_ECHO_CHANNEL)) #define EXAMPLE_IS_ECHO_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_ECHO_CHANNEL)) #define EXAMPLE_ECHO_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_CHANNEL, \ ExampleEchoChannelClass)) struct _ExampleEchoChannelClass { GObjectClass parent_class; TpTextMixinClass text_class; TpDBusPropertiesMixinClass dbus_properties_class; }; struct _ExampleEchoChannel { GObject parent; TpTextMixin text; ExampleEchoChannelPrivate *priv; }; G_END_DECLS #endif /* #ifndef __EXAMPLE_CHAN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/echo/conn.c0000644000175100017520000001225212530423576022570 0ustar00kaffeinekaffeine00000000000000/* * conn.c - an example connection * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "conn.h" #include #include #include #include "im-manager.h" G_DEFINE_TYPE (ExampleEchoConnection, example_echo_connection, TP_TYPE_BASE_CONNECTION) /* type definition stuff */ enum { PROP_ACCOUNT = 1, N_PROPS }; struct _ExampleEchoConnectionPrivate { gchar *account; }; static void example_echo_connection_init (ExampleEchoConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_CONNECTION, ExampleEchoConnectionPrivate); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { ExampleEchoConnection *self = EXAMPLE_ECHO_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { ExampleEchoConnection *self = EXAMPLE_ECHO_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_utf8_strdown (g_value_get_string (value), -1); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void finalize (GObject *object) { ExampleEchoConnection *self = EXAMPLE_ECHO_CONNECTION (object); g_free (self->priv->account); G_OBJECT_CLASS (example_echo_connection_parent_class)->finalize (object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { ExampleEchoConnection *self = EXAMPLE_ECHO_CONNECTION (conn); return g_strdup (self->priv->account); } static gchar * example_echo_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "ID must not be empty"); return NULL; } return g_utf8_strdown (id, -1); } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, example_echo_normalize_contact, NULL); } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { GPtrArray *ret = g_ptr_array_sized_new (1); g_ptr_array_add (ret, g_object_new (EXAMPLE_TYPE_ECHO_IM_MANAGER, "connection", conn, NULL)); return ret; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { ExampleEchoConnection *self = EXAMPLE_ECHO_CONNECTION (conn); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished, but here * we can do it immediately. */ conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, NULL); tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void shut_down (TpBaseConnection *conn) { /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished, but here * we can do it immediately. */ tp_base_connection_finish_shutdown (conn); } static void example_echo_connection_class_init (ExampleEchoConnectionClass *klass) { static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_REQUESTS, NULL }; TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; object_class->get_property = get_property; object_class->set_property = set_property; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (ExampleEchoConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_managers = create_channel_managers; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); } telepathy-qt-0.9.6.1/tests/lib/glib/echo/conn.h0000644000175100017520000000340512530423576022575 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for an example connection * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_ECHO_CONN_H__ #define __EXAMPLE_ECHO_CONN_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleEchoConnection ExampleEchoConnection; typedef struct _ExampleEchoConnectionClass ExampleEchoConnectionClass; typedef struct _ExampleEchoConnectionPrivate ExampleEchoConnectionPrivate; struct _ExampleEchoConnectionClass { TpBaseConnectionClass parent_class; }; struct _ExampleEchoConnection { TpBaseConnection parent; ExampleEchoConnectionPrivate *priv; }; GType example_echo_connection_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_ECHO_CONNECTION \ (example_echo_connection_get_type ()) #define EXAMPLE_ECHO_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_ECHO_CONNECTION, \ ExampleEchoConnection)) #define EXAMPLE_ECHO_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_ECHO_CONNECTION, \ ExampleEchoConnectionClass)) #define EXAMPLE_IS_ECHO_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_ECHO_CONNECTION)) #define EXAMPLE_IS_ECHO_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_ECHO_CONNECTION)) #define EXAMPLE_ECHO_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_CONNECTION, \ ExampleEchoConnectionClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo/manager-file.py0000644000175100017520000000100412530423576024361 0ustar00kaffeinekaffeine00000000000000# Input for tools/manager-file.py MANAGER = 'example_echo' PARAMS = { 'example' : { 'account': { 'dtype': 's', 'flags': 'required register', 'filter': 'tp_cm_param_filter_string_nonempty', # 'filter_data': 'NULL', # 'default': ..., # 'struct_field': '...', # 'setter_data': 'NULL', }, }, } STRUCTS = { 'example': 'ExampleParams' } telepathy-qt-0.9.6.1/tests/lib/glib/echo/im-manager.c0000644000175100017520000002463212530423576023655 0ustar00kaffeinekaffeine00000000000000/* * im-manager.c - an example channel manager for channels talking to a * particular contact. Similar code is used for 1-1 IM channels in many * protocols (IRC private messages ("/query"), XMPP IM etc.) * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "im-manager.h" #include #include #include "chan.h" static void channel_manager_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleEchoImManager, example_echo_im_manager, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, channel_manager_iface_init)) /* type definition stuff */ enum { PROP_CONNECTION = 1, N_PROPS }; struct _ExampleEchoImManagerPrivate { TpBaseConnection *conn; /* GUINT_TO_POINTER (handle) => ExampleEchoChannel */ GHashTable *channels; gulong status_changed_id; }; static void example_echo_im_manager_init (ExampleEchoImManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_IM_MANAGER, ExampleEchoImManagerPrivate); self->priv->channels = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref); } static void example_echo_im_manager_close_all (ExampleEchoImManager *self); static void dispose (GObject *object) { ExampleEchoImManager *self = EXAMPLE_ECHO_IM_MANAGER (object); example_echo_im_manager_close_all (self); g_assert (self->priv->channels == NULL); ((GObjectClass *) example_echo_im_manager_parent_class)->dispose (object); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleEchoImManager *self = EXAMPLE_ECHO_IM_MANAGER (object); switch (property_id) { case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleEchoImManager *self = EXAMPLE_ECHO_IM_MANAGER (object); switch (property_id) { case PROP_CONNECTION: /* We don't ref the connection, because it owns a reference to the * channel manager, and it guarantees that the manager's lifetime is * less than its lifetime */ self->priv->conn = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, ExampleEchoImManager *self) { if (status == TP_CONNECTION_STATUS_DISCONNECTED) example_echo_im_manager_close_all (self); } static void constructed (GObject *object) { ExampleEchoImManager *self = EXAMPLE_ECHO_IM_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_echo_im_manager_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", (GCallback) status_changed_cb, self); } static void example_echo_im_manager_class_init (ExampleEchoImManagerClass *klass) { GParamSpec *param_spec; GObjectClass *object_class = (GObjectClass *) klass; object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); g_type_class_add_private (klass, sizeof (ExampleEchoImManagerPrivate)); } static void example_echo_im_manager_close_all (ExampleEchoImManager *self) { if (self->priv->channels != NULL) { GHashTable *tmp = self->priv->channels; self->priv->channels = NULL; g_hash_table_destroy (tmp); } if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } } static void example_echo_im_manager_foreach_channel (TpChannelManager *iface, TpExportableChannelFunc callback, gpointer user_data) { ExampleEchoImManager *self = EXAMPLE_ECHO_IM_MANAGER (iface); GHashTableIter iter; gpointer handle, channel; g_hash_table_iter_init (&iter, self->priv->channels); while (g_hash_table_iter_next (&iter, &handle, &channel)) { callback (TP_EXPORTABLE_CHANNEL (channel), user_data); } } static void channel_closed_cb (ExampleEchoChannel *chan, ExampleEchoImManager *self) { tp_channel_manager_emit_channel_closed_for_object (self, TP_EXPORTABLE_CHANNEL (chan)); if (self->priv->channels != NULL) { TpHandle handle; gboolean really_destroyed; g_object_get (chan, "handle", &handle, "channel-destroyed", &really_destroyed, NULL); /* Re-announce the channel if it's not yet ready to go away (pending * messages) */ if (really_destroyed) { g_hash_table_remove (self->priv->channels, GUINT_TO_POINTER (handle)); } else { tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), NULL); } } } static void new_channel (ExampleEchoImManager *self, TpHandle handle, TpHandle initiator, gpointer request_token) { ExampleEchoChannel *chan; gchar *object_path; GSList *requests = NULL; object_path = g_strdup_printf ("%s/EchoChannel%u", self->priv->conn->object_path, handle); chan = g_object_new (EXAMPLE_TYPE_ECHO_CHANNEL, "connection", self->priv->conn, "object-path", object_path, "handle", handle, "initiator-handle", initiator, NULL); g_free (object_path); g_signal_connect (chan, "closed", (GCallback) channel_closed_cb, self); /* self->priv->channels takes ownership of 'chan' */ g_hash_table_insert (self->priv->channels, GUINT_TO_POINTER (handle), chan); if (request_token != NULL) requests = g_slist_prepend (requests, request_token); tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), requests); g_slist_free (requests); } static const gchar * const fixed_properties[] = { TP_PROP_CHANNEL_CHANNEL_TYPE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL }; static const gchar * const allowed_properties[] = { TP_PROP_CHANNEL_TARGET_HANDLE, TP_PROP_CHANNEL_TARGET_ID, NULL }; static void example_echo_im_manager_foreach_channel_class (TpChannelManager *manager, TpChannelManagerChannelClassFunc func, gpointer user_data) { GHashTable *table = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, NULL); func (manager, table, allowed_properties, user_data); g_hash_table_destroy (table); } static gboolean example_echo_im_manager_request (ExampleEchoImManager *self, gpointer request_token, GHashTable *request_properties, gboolean require_new) { TpHandle handle; ExampleEchoChannel *chan; GError *error = NULL; if (tp_strdiff (tp_asv_get_string (request_properties, TP_PROP_CHANNEL_CHANNEL_TYPE), TP_IFACE_CHANNEL_TYPE_TEXT)) { return FALSE; } if (tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) { return FALSE; } handle = tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE, NULL); g_assert (handle != 0); if (tp_channel_manager_asv_has_unknown_properties (request_properties, fixed_properties, allowed_properties, &error)) { goto error; } chan = g_hash_table_lookup (self->priv->channels, GUINT_TO_POINTER (handle)); if (chan == NULL) { new_channel (self, handle, self->priv->conn->self_handle, request_token); } else if (require_new) { g_set_error (&error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "An echo channel to contact #%u already exists", handle); goto error; } else { tp_channel_manager_emit_request_already_satisfied (self, request_token, TP_EXPORTABLE_CHANNEL (chan)); } return TRUE; error: tp_channel_manager_emit_request_failed (self, request_token, error->domain, error->code, error->message); g_error_free (error); return TRUE; } static gboolean example_echo_im_manager_create_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_echo_im_manager_request (EXAMPLE_ECHO_IM_MANAGER (manager), request_token, request_properties, TRUE); } static gboolean example_echo_im_manager_ensure_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_echo_im_manager_request (EXAMPLE_ECHO_IM_MANAGER (manager), request_token, request_properties, FALSE); } static void channel_manager_iface_init (gpointer g_iface, gpointer iface_data G_GNUC_UNUSED) { TpChannelManagerIface *iface = g_iface; iface->foreach_channel = example_echo_im_manager_foreach_channel; iface->foreach_channel_class = example_echo_im_manager_foreach_channel_class; iface->create_channel = example_echo_im_manager_create_channel; iface->ensure_channel = example_echo_im_manager_ensure_channel; /* In this channel manager, Request has the same semantics as Ensure */ iface->request_channel = example_echo_im_manager_ensure_channel; } telepathy-qt-0.9.6.1/tests/lib/glib/echo/im-manager.h0000644000175100017520000000332212530423576023653 0ustar00kaffeinekaffeine00000000000000/* * im-manager.h - header for an example channel manager * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_ECHO_IM_MANAGER_H__ #define __EXAMPLE_ECHO_IM_MANAGER_H__ #include G_BEGIN_DECLS typedef struct _ExampleEchoImManager ExampleEchoImManager; typedef struct _ExampleEchoImManagerClass ExampleEchoImManagerClass; typedef struct _ExampleEchoImManagerPrivate ExampleEchoImManagerPrivate; struct _ExampleEchoImManagerClass { GObjectClass parent_class; }; struct _ExampleEchoImManager { GObject parent; ExampleEchoImManagerPrivate *priv; }; GType example_echo_im_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_ECHO_IM_MANAGER \ (example_echo_im_manager_get_type ()) #define EXAMPLE_ECHO_IM_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_ECHO_IM_MANAGER, \ ExampleEchoImManager)) #define EXAMPLE_ECHO_IM_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_ECHO_IM_MANAGER, \ ExampleEchoImManagerClass)) #define EXAMPLE_IS_ECHO_IM_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_ECHO_IM_MANAGER)) #define EXAMPLE_IS_ECHO_IM_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_ECHO_IM_MANAGER)) #define EXAMPLE_ECHO_IM_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_IM_MANAGER, \ ExampleEchoImManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/debug.h0000644000175100017520000000013612530423576022006 0ustar00kaffeinekaffeine00000000000000#undef DEBUG #define DEBUG(format, ...) \ g_debug ("%s: " format, G_STRFUNC, ##__VA_ARGS__) telepathy-qt-0.9.6.1/tests/lib/glib/echo2/0000755000175100017520000000000012530423576021547 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/echo2/protocol.c0000644000175100017520000002327212530423576023562 0ustar00kaffeinekaffeine00000000000000/* * protocol.c - an example Protocol * * Copyright © 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "protocol.h" #include #include "conn.h" #include "im-manager.h" #include static void addressing_iface_init (TpProtocolAddressingInterface *iface); G_DEFINE_TYPE_WITH_CODE (ExampleEcho2Protocol, example_echo_2_protocol, TP_TYPE_BASE_PROTOCOL, G_IMPLEMENT_INTERFACE (TP_TYPE_PROTOCOL_ADDRESSING, addressing_iface_init); ) const gchar * const protocol_interfaces[] = { TP_IFACE_PROTOCOL_INTERFACE_ADDRESSING, TP_IFACE_PROTOCOL_INTERFACE_AVATARS, TP_IFACE_PROTOCOL_INTERFACE_PRESENCE, NULL }; const gchar * const supported_avatar_mime_types[] = { "image/png", "image/jpeg", "image/gif", NULL }; const gchar * const addressable_vcard_fields[] = { "x-echo2", NULL }; const gchar * const addressable_uri_schemes[] = { "echo2", NULL }; struct _ExampleEcho2ProtocolPrivate { TpPresenceStatusSpec *statuses; }; static TpPresenceStatusSpec new_status_spec (const gchar *name, TpConnectionPresenceType type, gboolean settable, gboolean can_have_message) { TpPresenceStatusSpec ret; TpPresenceStatusOptionalArgumentSpec *args = g_new0 (TpPresenceStatusOptionalArgumentSpec, 2); memset (&ret, 0, sizeof (TpPresenceStatusSpec)); ret.name = g_strdup (name); ret.presence_type = type; ret.self = settable; if (can_have_message) { args[0].name = g_strdup ("message"); args[0].dtype = g_strdup ("s"); } ret.optional_arguments = args; return ret; } static void example_echo_2_protocol_init ( ExampleEcho2Protocol *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_2_PROTOCOL, ExampleEcho2ProtocolPrivate); self->priv->statuses = g_new0 (TpPresenceStatusSpec, 4); self->priv->statuses[0] = new_status_spec ("offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, FALSE); self->priv->statuses[1] = new_status_spec ("dnd", TP_CONNECTION_PRESENCE_TYPE_BUSY, TRUE, FALSE); self->priv->statuses[2] = new_status_spec ("available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, TRUE); } static void example_echo_2_protocol_finalize (GObject *object) { ExampleEcho2Protocol *self = EXAMPLE_ECHO_2_PROTOCOL (object); TpPresenceStatusSpec *status = self->priv->statuses; for (; status->name != NULL; status++) { TpPresenceStatusOptionalArgumentSpec *arg = (TpPresenceStatusOptionalArgumentSpec *) status->optional_arguments; for (; arg->name != NULL; arg++) { g_free ((gpointer) arg->name); g_free ((gpointer) arg->dtype); } g_free ((gpointer) status->name); g_free ((gpointer) status->optional_arguments); } ((GObjectClass *) example_echo_2_protocol_parent_class)->finalize (object); } static const TpCMParamSpec example_echo_2_example_params[] = { { "account", "s", G_TYPE_STRING, TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, NULL, /* no default */ 0, /* formerly struct offset, now unused */ tp_cm_param_filter_string_nonempty, /* filter - empty strings disallowed */ NULL, /* filter data, unused for our filter */ NULL /* setter data, now unused */ }, { NULL } }; static const TpCMParamSpec * get_parameters (TpBaseProtocol *self) { return example_echo_2_example_params; } static TpBaseConnection * new_connection (TpBaseProtocol *protocol, GHashTable *asv, GError **error) { ExampleEcho2Connection *conn; const gchar *account; account = tp_asv_get_string (asv, "account"); if (account == NULL || account[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "The 'account' parameter is required"); return NULL; } conn = EXAMPLE_ECHO_2_CONNECTION ( g_object_new (EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", account, "protocol", tp_base_protocol_get_name (protocol), NULL)); return (TpBaseConnection *) conn; } gchar * example_echo_2_protocol_normalize_contact (const gchar *id, GError **error) { if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "ID must not be empty"); return NULL; } return g_utf8_strdown (id, -1); } static gchar * normalize_contact (TpBaseProtocol *self G_GNUC_UNUSED, const gchar *contact, GError **error) { return example_echo_2_protocol_normalize_contact (contact, error); } static gchar * identify_account (TpBaseProtocol *self G_GNUC_UNUSED, GHashTable *asv, GError **error) { const gchar *account = tp_asv_get_string (asv, "account"); if (account != NULL) return g_strdup (account); g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "'account' parameter not given"); return NULL; } static GStrv get_interfaces (TpBaseProtocol *self) { return g_strdupv ((GStrv) protocol_interfaces); } static void get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED, GStrv *connection_interfaces, GType **channel_managers, gchar **icon_name, gchar **english_name, gchar **vcard_field) { if (connection_interfaces != NULL) { *connection_interfaces = g_strdupv ( (GStrv) example_echo_2_connection_get_possible_interfaces ()); } if (channel_managers != NULL) { GType types[] = { EXAMPLE_TYPE_ECHO_2_IM_MANAGER, G_TYPE_INVALID }; *channel_managers = g_memdup (types, sizeof (types)); } if (icon_name != NULL) { /* a real protocol would use its own icon name - for this example we * borrow the one from ICQ */ *icon_name = g_strdup ("im-icq"); } if (english_name != NULL) { /* in a real protocol this would be "ICQ" or * "Windows Live Messenger (MSN)" or something */ *english_name = g_strdup ("Echo II example"); } if (vcard_field != NULL) { /* in a real protocol this would be "tel" or "x-jabber" or something */ *vcard_field = g_strdup ("x-telepathy-example"); } } static void get_avatar_details (TpBaseProtocol *self, GStrv *supported_mime_types, guint *min_height, guint *min_width, guint *recommended_height, guint *recommended_width, guint *max_height, guint *max_width, guint *max_bytes) { if (supported_mime_types != NULL) *supported_mime_types = g_strdupv ((GStrv) supported_avatar_mime_types); if (min_height != NULL) *min_height = 32; if (min_width != NULL) *min_width = 32; if (recommended_height != NULL) *recommended_height = 64; if (recommended_width != NULL) *recommended_width = 64; if (max_height != NULL) *max_height = 96; if (max_width != NULL) *max_width = 96; if (max_bytes != NULL) *max_bytes = 37748736; } static const TpPresenceStatusSpec * get_statuses (TpBaseProtocol *object) { ExampleEcho2Protocol *self = EXAMPLE_ECHO_2_PROTOCOL (object); return self->priv->statuses; } static void example_echo_2_protocol_class_init ( ExampleEcho2ProtocolClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseProtocolClass *base_class = (TpBaseProtocolClass *) klass; g_type_class_add_private (klass, sizeof (ExampleEcho2ProtocolPrivate)); object_class->finalize = example_echo_2_protocol_finalize; base_class->get_parameters = get_parameters; base_class->new_connection = new_connection; base_class->normalize_contact = normalize_contact; base_class->identify_account = identify_account; base_class->get_interfaces = get_interfaces; base_class->get_connection_details = get_connection_details; base_class->get_avatar_details = get_avatar_details; base_class->get_statuses = get_statuses; } static GStrv dup_supported_uri_schemes (TpBaseProtocol *self) { return g_strdupv ((gchar **) addressable_uri_schemes); } static GStrv dup_supported_vcard_fields (TpBaseProtocol *self) { return g_strdupv ((gchar **) addressable_vcard_fields); } static gchar * normalize_vcard_address (TpBaseProtocol *self, const gchar *vcard_field, const gchar *vcard_address, GError **error) { gchar *normalized_address = NULL; if (g_ascii_strcasecmp (vcard_field, "x-echo2") == 0) { normalized_address = g_ascii_strdown (vcard_address, -1); } else { g_set_error (error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "'%s' vCard field is not supported by this protocol", vcard_field); } return normalized_address; } static gchar * normalize_contact_uri (TpBaseProtocol *self, const gchar *uri, GError **error) { gchar *normalized_uri = NULL; gchar *scheme = g_uri_parse_scheme (uri); if (scheme == NULL) { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "'%s' is not a valid URI", uri); goto OUT; } else if (g_ascii_strcasecmp (scheme, "echo2") == 0) { gchar *scheme_down = g_ascii_strdown (scheme, -1); gchar *tmp = g_ascii_strdown (uri + strlen (scheme) + 1, -1); normalized_uri = g_strdup_printf ("%s:%s", scheme_down, tmp); g_free (scheme_down); g_free (tmp); } else { g_set_error (error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "'%s' URI scheme is not supported by this protocol", scheme); goto OUT; } OUT: g_free (scheme); return normalized_uri; } static void addressing_iface_init (TpProtocolAddressingInterface *iface) { iface->dup_supported_vcard_fields = dup_supported_vcard_fields; iface->dup_supported_uri_schemes = dup_supported_uri_schemes; iface->normalize_vcard_address = normalize_vcard_address; iface->normalize_contact_uri = normalize_contact_uri; } telepathy-qt-0.9.6.1/tests/lib/glib/echo2/protocol.h0000644000175100017520000000364712530423576023573 0ustar00kaffeinekaffeine00000000000000/* * protocol.h - header for an example Protocol * Copyright (C) 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_ECHO_MESSAGE_PARTS_PROTOCOL_H #define EXAMPLE_ECHO_MESSAGE_PARTS_PROTOCOL_H #include #include G_BEGIN_DECLS typedef struct _ExampleEcho2Protocol ExampleEcho2Protocol; typedef struct _ExampleEcho2ProtocolPrivate ExampleEcho2ProtocolPrivate; typedef struct _ExampleEcho2ProtocolClass ExampleEcho2ProtocolClass; typedef struct _ExampleEcho2ProtocolClassPrivate ExampleEcho2ProtocolClassPrivate; struct _ExampleEcho2ProtocolClass { TpBaseProtocolClass parent_class; ExampleEcho2ProtocolClassPrivate *priv; }; struct _ExampleEcho2Protocol { TpBaseProtocol parent; ExampleEcho2ProtocolPrivate *priv; }; GType example_echo_2_protocol_get_type (void); #define EXAMPLE_TYPE_ECHO_2_PROTOCOL \ (example_echo_2_protocol_get_type ()) #define EXAMPLE_ECHO_2_PROTOCOL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ EXAMPLE_TYPE_ECHO_2_PROTOCOL, \ ExampleEcho2Protocol)) #define EXAMPLE_ECHO_2_PROTOCOL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ EXAMPLE_TYPE_ECHO_2_PROTOCOL, \ ExampleEcho2ProtocolClass)) #define EXAMPLE_IS_ECHO_2_PROTOCOL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ EXAMPLE_TYPE_ECHO_2_PROTOCOL)) #define EXAMPLE_IS_ECHO_2_PROTOCOL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), \ EXAMPLE_TYPE_ECHO_2_PROTOCOL)) #define EXAMPLE_ECHO_2_PROTOCOL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ EXAMPLE_TYPE_ECHO_2_PROTOCOL, \ ExampleEcho2ProtocolClass)) gchar *example_echo_2_protocol_normalize_contact (const gchar *id, GError **error); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo2/connection-manager.c0000644000175100017520000000426512530423576025471 0ustar00kaffeinekaffeine00000000000000/* * manager.c - an example connection manager * * Copyright © 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "connection-manager.h" #include #include #include #include "protocol.h" G_DEFINE_TYPE (ExampleEcho2ConnectionManager, example_echo_2_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) /* type definition stuff */ static void example_echo_2_connection_manager_init ( ExampleEcho2ConnectionManager *self) { } static void example_echo_2_connection_manager_constructed (GObject *object) { ExampleEcho2ConnectionManager *self = EXAMPLE_ECHO_2_CONNECTION_MANAGER (object); TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; void (*constructed) (GObject *) = ((GObjectClass *) example_echo_2_connection_manager_parent_class)->constructed; TpBaseProtocol *protocol; if (constructed != NULL) constructed (object); protocol = g_object_new (EXAMPLE_TYPE_ECHO_2_PROTOCOL, "name", "example", NULL); tp_base_connection_manager_add_protocol (base, protocol); g_object_unref (protocol); } static const TpCMProtocolSpec no_protocols[] = { { NULL, NULL } }; static TpBaseConnection * new_connection (TpBaseConnectionManager *self, const gchar *proto, TpIntSet *params_present, gpointer parsed_params, GError **error) { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Protocol's new_connection() should be called instead"); return NULL; } static void example_echo_2_connection_manager_class_init ( ExampleEcho2ConnectionManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; object_class->constructed = example_echo_2_connection_manager_constructed; base_class->new_connection = new_connection; base_class->cm_dbus_name = "example_echo_2"; base_class->protocol_params = no_protocols; } telepathy-qt-0.9.6.1/tests/lib/glib/echo2/connection-manager.h0000644000175100017520000000416512530423576025475 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example connection manager * Copyright (C) 2007 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_ECHO_MESSAGE_PARTS_MANAGER_H #define EXAMPLE_ECHO_MESSAGE_PARTS_MANAGER_H #include #include G_BEGIN_DECLS typedef struct _ExampleEcho2ConnectionManager ExampleEcho2ConnectionManager; typedef struct _ExampleEcho2ConnectionManagerPrivate ExampleEcho2ConnectionManagerPrivate; typedef struct _ExampleEcho2ConnectionManagerClass ExampleEcho2ConnectionManagerClass; typedef struct _ExampleEcho2ConnectionManagerClassPrivate ExampleEcho2ConnectionManagerClassPrivate; struct _ExampleEcho2ConnectionManagerClass { TpBaseConnectionManagerClass parent_class; ExampleEcho2ConnectionManagerClassPrivate *priv; }; struct _ExampleEcho2ConnectionManager { TpBaseConnectionManager parent; ExampleEcho2ConnectionManagerPrivate *priv; }; GType example_echo_2_connection_manager_get_type (void); #define EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER \ (example_echo_2_connection_manager_get_type ()) #define EXAMPLE_ECHO_2_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER, \ ExampleEcho2ConnectionManager)) #define EXAMPLE_ECHO_2_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER, \ ExampleEcho2ConnectionManagerClass)) #define EXAMPLE_IS_ECHO_2_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER)) #define EXAMPLE_IS_ECHO_2_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), \ EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER)) #define EXAMPLE_ECHO_2_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER, \ ExampleEcho2ConnectionManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo2/CMakeLists.txt0000644000175100017520000000102512530423576024305 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) set(example_cm_echo2_SRCS chan.c chan.h conn.c connection-manager.c connection-manager.h conn.h im-manager.c im-manager.h protocol.c protocol.h) add_library(example-cm-echo2 STATIC ${example_cm_echo2_SRCS}) target_link_libraries(example-cm-echo2 ${TPGLIB_LIBRARIES}) tpqt_generate_manager_file(${CMAKE_CURRENT_SOURCE_DIR}/manager-file.py example_echo_2.manager connection-manager.c) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/echo2/chan.c0000644000175100017520000004672112530423576022636 0ustar00kaffeinekaffeine00000000000000/* * chan.c - an example text channel talking to a particular * contact. Similar code is used for 1-1 IM channels in many protocols * (IRC private messages ("/query"), XMPP IM etc.) * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "chan.h" #include #include #include #include static void channel_iface_init (gpointer iface, gpointer data); static void chat_state_iface_init (gpointer iface, gpointer data); static void destroyable_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (ExampleEcho2Channel, example_echo_2_channel, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT, tp_message_mixin_text_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_MESSAGES, tp_message_mixin_messages_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_CHAT_STATE, chat_state_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_DESTROYABLE, destroyable_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL)) /* type definition stuff */ enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_CHANNEL_DESTROYED, PROP_CHANNEL_PROPERTIES, N_PROPS }; struct _ExampleEcho2ChannelPrivate { TpBaseConnection *conn; gchar *object_path; TpHandle handle; TpHandle initiator; /* These are really booleans, but gboolean is signed. Thanks, GLib */ unsigned closed:1; unsigned disposed:1; }; static const char * example_echo_2_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_MESSAGES, TP_IFACE_CHANNEL_INTERFACE_CHAT_STATE, TP_IFACE_CHANNEL_INTERFACE_DESTROYABLE, NULL }; static void example_echo_2_channel_init (ExampleEcho2Channel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_2_CHANNEL, ExampleEcho2ChannelPrivate); } static void send_message (GObject *object, TpMessage *message, TpMessageSendingFlags flags) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (object); time_t timestamp = time (NULL); guint len = tp_message_count_parts (message); const gchar *content = NULL; TpMessage *received = NULL; guint i; if (tp_asv_get_string (tp_message_peek (message, 0), "interface") != NULL) { /* this message is interface-specific - let's not echo it */ goto finally; } content = tp_asv_get_string (tp_message_peek (message, 1), "content"); if (content && strstr (content, "(fail)") != NULL) { TpMessage *delivery_report = tp_cm_message_new (self->priv->conn, 1); tp_cm_message_set_sender (delivery_report, self->priv->handle); tp_message_set_uint32 (delivery_report, 0, "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_DELIVERY_REPORT); tp_message_set_int64 (delivery_report, 0, "message-received", timestamp); tp_message_set_uint32 (delivery_report, 0, "delivery-status", TP_DELIVERY_STATUS_PERMANENTLY_FAILED); tp_message_set_uint32 (delivery_report, 0, "delivery-error", TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED); tp_message_set_string (delivery_report, 0, "delivery-error-message", "You asked for it"); tp_message_set_string (delivery_report, 0, "delivery-token", "1111"); tp_cm_message_take_message (delivery_report, 0, "delivery-echo", message); tp_message_mixin_take_received (object, delivery_report); return; } received = tp_cm_message_new (self->priv->conn, 1); /* Copy/modify the headers for the "received" message */ { TpChannelTextMessageType message_type; gboolean valid; tp_cm_message_set_sender (received, self->priv->handle); tp_message_set_string (received, 0, "message-token", "0000"); tp_message_set_string (received, 0, "supersedes", "1234"); if (!tp_message_mixin_has_pending_messages (object, NULL)) tp_message_set_boolean (received, 0, "scrollback", TRUE); message_type = tp_asv_get_uint32 (tp_message_peek (message, 0), "message-type", &valid); /* The check for 'valid' means that if message-type is missing or of the * wrong type, fall back to NORMAL (this is in fact a no-op, since * NORMAL == 0 and tp_asv_get_uint32 returns 0 on missing or wrongly * typed values) */ if (valid && message_type != TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL) tp_message_set_uint32 (received, 0, "message-type", message_type); tp_message_set_uint32 (received, 0, "message-sent", timestamp); tp_message_set_uint32 (received, 0, "message-received", timestamp); } /* Copy the content for the "received" message */ for (i = 1; i < len; i++) { const GHashTable *input = tp_message_peek (message, i); const gchar *s; const GValue *value; guint j; /* in this example we ignore interface-specific parts */ s = tp_asv_get_string (input, "content-type"); if (s == NULL) continue; s = tp_asv_get_string (input, "interface"); if (s != NULL) continue; /* OK, we want to copy this part */ j = tp_message_append_part (received); s = tp_asv_get_string (input, "content-type"); g_assert (s != NULL); /* already checked */ tp_message_set_string (received, j, "content-type", s); s = tp_asv_get_string (input, "identifier"); if (s != NULL) tp_message_set_string (received, j, "identifier", s); s = tp_asv_get_string (input, "alternative"); if (s != NULL) tp_message_set_string (received, j, "alternative", s); s = tp_asv_get_string (input, "lang"); if (s != NULL) tp_message_set_string (received, j, "lang", s); value = tp_asv_lookup (input, "content"); if (value != NULL) tp_message_set (received, j, "content", value); } finally: /* "OK, we've sent the message" (after calling this, message must not be * dereferenced) */ tp_message_mixin_sent (object, message, flags, "", NULL); if (received != NULL) { /* Pretend the other user sent us back the same message. After this call, * the received message is owned by the mixin */ tp_message_mixin_take_received (object, received); } } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (example_echo_2_channel_parent_class)->constructor (type, n_props, props); ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (object); static TpChannelTextMessageType const types[] = { TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION, TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE }; static const char * const content_types[] = { "*/*", NULL }; tp_dbus_daemon_register_object ( tp_base_connection_get_dbus_daemon (self->priv->conn), self->priv->object_path, self); tp_message_mixin_init (object, G_STRUCT_OFFSET (ExampleEcho2Channel, text), self->priv->conn); tp_message_mixin_implement_sending (object, send_message, (sizeof (types) / sizeof (types[0])), types, TP_MESSAGE_PART_SUPPORT_FLAG_ONE_ATTACHMENT | TP_MESSAGE_PART_SUPPORT_FLAG_MULTIPLE_ATTACHMENTS, TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_FAILURES, content_types); return object; } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_TEXT); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; case PROP_TARGET_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->priv->handle)); } break; case PROP_REQUESTED: g_value_set_boolean (value, (self->priv->initiator == self->priv->conn->self_handle)); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, self->priv->initiator); break; case PROP_INITIATOR_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, self->priv->initiator == 0 ? "" : tp_handle_inspect (contact_repo, self->priv->initiator)); } break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_INTERFACES: g_value_set_boxed (value, example_echo_2_channel_interfaces); break; case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, self->priv->closed); break; case PROP_CHANNEL_PROPERTIES: g_value_take_boxed (value, tp_dbus_properties_mixin_make_properties_hash (object, TP_IFACE_CHANNEL, "ChannelType", TP_IFACE_CHANNEL, "TargetHandleType", TP_IFACE_CHANNEL, "TargetHandle", TP_IFACE_CHANNEL, "TargetID", TP_IFACE_CHANNEL, "InitiatorHandle", TP_IFACE_CHANNEL, "InitiatorID", TP_IFACE_CHANNEL, "Requested", TP_IFACE_CHANNEL, "Interfaces", NULL)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_free (self->priv->object_path); self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE: /* we don't ref it here because we don't necessarily have access to the * contact repo yet - instead we ref it in the constructor. */ self->priv->handle = g_value_get_uint (value); break; case PROP_INITIATOR_HANDLE: /* likewise */ self->priv->initiator = g_value_get_uint (value); break; case PROP_HANDLE_TYPE: case PROP_CHANNEL_TYPE: /* these properties are writable in the interface, but not actually * meaningfully changable on this channel, so we do nothing */ break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (object); if (self->priv->disposed) return; self->priv->disposed = TRUE; if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } ((GObjectClass *) example_echo_2_channel_parent_class)->dispose (object); } static void finalize (GObject *object) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (object); g_free (self->priv->object_path); tp_message_mixin_finalize (object); ((GObjectClass *) example_echo_2_channel_parent_class)->finalize (object); } static void example_echo_2_channel_class_init (ExampleEcho2ChannelClass *klass) { static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { NULL } }; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleEcho2ChannelPrivate)); object_class->constructor = constructor; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, "channel-destroyed"); g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, "channel-properties"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "The string obtained by inspecting the target handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleEcho2ChannelClass, dbus_properties_class)); tp_message_mixin_init_dbus_properties (object_class); } static void example_echo_2_channel_close (ExampleEcho2Channel *self) { GObject *object = (GObject *) self; if (!self->priv->closed) { TpHandle first_sender; /* The manager wants to be able to respawn the channel if it has pending * messages. When respawned, the channel must have the initiator set * to the contact who sent us those messages (if it isn't already), * and the messages must be marked as having been rescued so they * don't get logged twice. */ if (tp_message_mixin_has_pending_messages (object, &first_sender)) { if (self->priv->initiator != first_sender) { self->priv->initiator = first_sender; } tp_message_mixin_set_rescued (object); } else { /* No pending messages, so it's OK to really close */ self->priv->closed = TRUE; } tp_svc_channel_emit_closed (self); } } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (iface); example_echo_2_channel_close (self); tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_TEXT); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (iface); tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, self->priv->handle); } static void channel_get_interfaces (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, example_echo_2_channel_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void chat_state_set_chat_state(TpSvcChannelInterfaceChatState *iface, guint state, DBusGMethodInvocation *context) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (iface); GError *error = NULL; if (state >= NUM_TP_CHANNEL_CHAT_STATES) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "invalid state: %u", state); dbus_g_method_return_error (context, error); g_error_free (error); return; } tp_svc_channel_interface_chat_state_emit_chat_state_changed ( iface, self->priv->conn->self_handle, state); tp_svc_channel_interface_chat_state_return_from_set_chat_state (context); } static void chat_state_iface_init (gpointer iface, gpointer data) { TpSvcChannelInterfaceChatStateClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_chat_state_implement_##x (klass, chat_state_##x) IMPLEMENT (set_chat_state); #undef IMPLEMENT } static void destroyable_destroy (TpSvcChannelInterfaceDestroyable *iface, DBusGMethodInvocation *context) { ExampleEcho2Channel *self = EXAMPLE_ECHO_2_CHANNEL (iface); tp_message_mixin_clear ((GObject *) self); example_echo_2_channel_close (self); g_assert (self->priv->closed); tp_svc_channel_interface_destroyable_return_from_destroy (context); } static void destroyable_iface_init (gpointer iface, gpointer data) { TpSvcChannelInterfaceDestroyableClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_destroyable_implement_##x (klass, destroyable_##x) IMPLEMENT (destroy); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/echo2/chan.h0000644000175100017520000000351512530423576022635 0ustar00kaffeinekaffeine00000000000000/* * chan.h - header for an example channel * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_ECHO_MESSAGE_PARTS_CHAN_H #define EXAMPLE_ECHO_MESSAGE_PARTS_CHAN_H #include #include #include G_BEGIN_DECLS typedef struct _ExampleEcho2Channel ExampleEcho2Channel; typedef struct _ExampleEcho2ChannelClass ExampleEcho2ChannelClass; typedef struct _ExampleEcho2ChannelPrivate ExampleEcho2ChannelPrivate; GType example_echo_2_channel_get_type (void); #define EXAMPLE_TYPE_ECHO_2_CHANNEL \ (example_echo_2_channel_get_type ()) #define EXAMPLE_ECHO_2_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_ECHO_2_CHANNEL, \ ExampleEcho2Channel)) #define EXAMPLE_ECHO_2_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_ECHO_2_CHANNEL, \ ExampleEcho2ChannelClass)) #define EXAMPLE_IS_ECHO_2_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_ECHO_2_CHANNEL)) #define EXAMPLE_IS_ECHO_2_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_ECHO_2_CHANNEL)) #define EXAMPLE_ECHO_2_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_2_CHANNEL, \ ExampleEcho2ChannelClass)) struct _ExampleEcho2ChannelClass { GObjectClass parent_class; TpDBusPropertiesMixinClass dbus_properties_class; }; struct _ExampleEcho2Channel { GObject parent; TpMessageMixin text; ExampleEcho2ChannelPrivate *priv; }; G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo2/conn.c0000644000175100017520000001246112530423576022654 0ustar00kaffeinekaffeine00000000000000/* * conn.c - an example connection * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "conn.h" #include #include #include #include "im-manager.h" #include "protocol.h" G_DEFINE_TYPE (ExampleEcho2Connection, example_echo_2_connection, TP_TYPE_BASE_CONNECTION) enum { PROP_ACCOUNT = 1, N_PROPS }; struct _ExampleEcho2ConnectionPrivate { gchar *account; }; static void example_echo_2_connection_init (ExampleEcho2Connection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_2_CONNECTION, ExampleEcho2ConnectionPrivate); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { ExampleEcho2Connection *self = EXAMPLE_ECHO_2_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { ExampleEcho2Connection *self = EXAMPLE_ECHO_2_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_utf8_strdown (g_value_get_string (value), -1); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void finalize (GObject *object) { ExampleEcho2Connection *self = EXAMPLE_ECHO_2_CONNECTION (object); g_free (self->priv->account); G_OBJECT_CLASS (example_echo_2_connection_parent_class)->finalize (object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { ExampleEcho2Connection *self = EXAMPLE_ECHO_2_CONNECTION (conn); return g_strdup (self->priv->account); } static gchar * example_normalize_contact (TpHandleRepoIface *repo G_GNUC_UNUSED, const gchar *id, gpointer context G_GNUC_UNUSED, GError **error) { return example_echo_2_protocol_normalize_contact (id, error); } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, example_normalize_contact, NULL); } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { GPtrArray *ret = g_ptr_array_sized_new (1); g_ptr_array_add (ret, g_object_new (EXAMPLE_TYPE_ECHO_2_IM_MANAGER, "connection", conn, NULL)); return ret; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { ExampleEcho2Connection *self = EXAMPLE_ECHO_2_CONNECTION (conn); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished, but here * we can do it immediately. */ conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, NULL); tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void shut_down (TpBaseConnection *conn) { /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished, but here * we can do it immediately. */ tp_base_connection_finish_shutdown (conn); } static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_REQUESTS, NULL }; const gchar * const * example_echo_2_connection_get_possible_interfaces (void) { /* in this example CM we don't have any extra interfaces that are sometimes, * but not always, present */ return interfaces_always_present; } static void example_echo_2_connection_class_init (ExampleEcho2ConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; object_class->get_property = get_property; object_class->set_property = set_property; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (ExampleEcho2ConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_managers = create_channel_managers; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); } telepathy-qt-0.9.6.1/tests/lib/glib/echo2/conn.h0000644000175100017520000000373012530423576022660 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for an example connection * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_ECHO_MESSAGE_PARTS_CONN_H #define EXAMPLE_ECHO_MESSAGE_PARTS_CONN_H #include #include G_BEGIN_DECLS typedef struct _ExampleEcho2Connection ExampleEcho2Connection; typedef struct _ExampleEcho2ConnectionClass ExampleEcho2ConnectionClass; typedef struct _ExampleEcho2ConnectionPrivate ExampleEcho2ConnectionPrivate; struct _ExampleEcho2ConnectionClass { TpBaseConnectionClass parent_class; }; struct _ExampleEcho2Connection { TpBaseConnection parent; ExampleEcho2ConnectionPrivate *priv; }; GType example_echo_2_connection_get_type (void); #define EXAMPLE_TYPE_ECHO_2_CONNECTION \ (example_echo_2_connection_get_type ()) #define EXAMPLE_ECHO_2_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_ECHO_2_CONNECTION, \ ExampleEcho2Connection)) #define EXAMPLE_ECHO_2_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_ECHO_2_CONNECTION, \ ExampleEcho2ConnectionClass)) #define EXAMPLE_IS_ECHO_2_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_ECHO_2_CONNECTION)) #define EXAMPLE_IS_ECHO_2_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_ECHO_2_CONNECTION)) #define EXAMPLE_ECHO_2_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_2_CONNECTION, \ ExampleEcho2ConnectionClass)) const gchar * const *example_echo_2_connection_get_guaranteed_interfaces ( void); const gchar * const *example_echo_2_connection_get_possible_interfaces ( void); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/echo2/manager-file.py0000644000175100017520000000077312530423576024457 0ustar00kaffeinekaffeine00000000000000# Input for tools/manager-file.py MANAGER = 'example_echo_2' PARAMS = { 'example' : { 'account': { 'dtype': 's', 'flags': 'required register', 'filter': 'tp_cm_param_filter_string_nonempty', # 'filter_data': 'NULL', # 'default': ..., # 'struct_field': '...', # 'setter_data': 'NULL', }, }, } STRUCTS = { 'example': None } telepathy-qt-0.9.6.1/tests/lib/glib/echo2/im-manager.c0000644000175100017520000002466612530423576023746 0ustar00kaffeinekaffeine00000000000000/* * im-manager.c - an example channel manager for channels talking to a * particular contact. Similar code is used for 1-1 IM channels in many * protocols (IRC private messages ("/query"), XMPP IM etc.) * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "im-manager.h" #include #include #include "chan.h" static void channel_manager_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleEcho2ImManager, example_echo_2_im_manager, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, channel_manager_iface_init)) /* type definition stuff */ enum { PROP_CONNECTION = 1, N_PROPS }; struct _ExampleEcho2ImManagerPrivate { TpBaseConnection *conn; /* GUINT_TO_POINTER (handle) => ExampleEcho2Channel */ GHashTable *channels; gulong status_changed_id; }; static void example_echo_2_im_manager_init (ExampleEcho2ImManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_ECHO_2_IM_MANAGER, ExampleEcho2ImManagerPrivate); self->priv->channels = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref); } static void example_echo_2_im_manager_close_all (ExampleEcho2ImManager *self); static void dispose (GObject *object) { ExampleEcho2ImManager *self = EXAMPLE_ECHO_2_IM_MANAGER (object); example_echo_2_im_manager_close_all (self); g_assert (self->priv->channels == NULL); ((GObjectClass *) example_echo_2_im_manager_parent_class)->dispose (object); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleEcho2ImManager *self = EXAMPLE_ECHO_2_IM_MANAGER (object); switch (property_id) { case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleEcho2ImManager *self = EXAMPLE_ECHO_2_IM_MANAGER (object); switch (property_id) { case PROP_CONNECTION: /* We don't ref the connection, because it owns a reference to the * channel manager, and it guarantees that the manager's lifetime is * less than its lifetime */ self->priv->conn = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, ExampleEcho2ImManager *self) { if (status == TP_CONNECTION_STATUS_DISCONNECTED) example_echo_2_im_manager_close_all (self); } static void constructed (GObject *object) { ExampleEcho2ImManager *self = EXAMPLE_ECHO_2_IM_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_echo_2_im_manager_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", (GCallback) status_changed_cb, self); } static void example_echo_2_im_manager_class_init (ExampleEcho2ImManagerClass *klass) { GParamSpec *param_spec; GObjectClass *object_class = (GObjectClass *) klass; object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); g_type_class_add_private (klass, sizeof (ExampleEcho2ImManagerPrivate)); } static void example_echo_2_im_manager_close_all (ExampleEcho2ImManager *self) { if (self->priv->channels != NULL) { GHashTable *tmp = self->priv->channels; self->priv->channels = NULL; g_hash_table_destroy (tmp); } if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } } static void example_echo_2_im_manager_foreach_channel (TpChannelManager *iface, TpExportableChannelFunc callback, gpointer user_data) { ExampleEcho2ImManager *self = EXAMPLE_ECHO_2_IM_MANAGER (iface); GHashTableIter iter; gpointer handle, channel; g_hash_table_iter_init (&iter, self->priv->channels); while (g_hash_table_iter_next (&iter, &handle, &channel)) { callback (TP_EXPORTABLE_CHANNEL (channel), user_data); } } static void channel_closed_cb (ExampleEcho2Channel *chan, ExampleEcho2ImManager *self) { tp_channel_manager_emit_channel_closed_for_object (self, TP_EXPORTABLE_CHANNEL (chan)); if (self->priv->channels != NULL) { TpHandle handle; gboolean really_destroyed; g_object_get (chan, "handle", &handle, "channel-destroyed", &really_destroyed, NULL); /* Re-announce the channel if it's not yet ready to go away (pending * messages) */ if (really_destroyed) { g_hash_table_remove (self->priv->channels, GUINT_TO_POINTER (handle)); } else { tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), NULL); } } } static void new_channel (ExampleEcho2ImManager *self, TpHandle handle, TpHandle initiator, gpointer request_token) { ExampleEcho2Channel *chan; gchar *object_path; GSList *requests = NULL; object_path = g_strdup_printf ("%s/Echo2Channel%u", self->priv->conn->object_path, handle); chan = g_object_new (EXAMPLE_TYPE_ECHO_2_CHANNEL, "connection", self->priv->conn, "object-path", object_path, "handle", handle, "initiator-handle", initiator, NULL); g_free (object_path); g_signal_connect (chan, "closed", (GCallback) channel_closed_cb, self); g_hash_table_insert (self->priv->channels, GUINT_TO_POINTER (handle), chan); if (request_token != NULL) requests = g_slist_prepend (requests, request_token); tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), requests); g_slist_free (requests); } static const gchar * const fixed_properties[] = { TP_PROP_CHANNEL_CHANNEL_TYPE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL }; static const gchar * const allowed_properties[] = { TP_PROP_CHANNEL_TARGET_HANDLE, TP_PROP_CHANNEL_TARGET_ID, NULL }; static void example_echo_2_im_manager_type_foreach_channel_class (GType type, TpChannelManagerTypeChannelClassFunc func, gpointer user_data) { GHashTable *table = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, NULL); func (type, table, allowed_properties, user_data); g_hash_table_destroy (table); } static gboolean example_echo_2_im_manager_request (ExampleEcho2ImManager *self, gpointer request_token, GHashTable *request_properties, gboolean require_new) { TpHandle handle; ExampleEcho2Channel *chan; GError *error = NULL; if (tp_strdiff (tp_asv_get_string (request_properties, TP_PROP_CHANNEL_CHANNEL_TYPE), TP_IFACE_CHANNEL_TYPE_TEXT)) { return FALSE; } if (tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) { return FALSE; } handle = tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE, NULL); g_assert (handle != 0); if (tp_channel_manager_asv_has_unknown_properties (request_properties, fixed_properties, allowed_properties, &error)) { goto error; } chan = g_hash_table_lookup (self->priv->channels, GUINT_TO_POINTER (handle)); if (chan == NULL) { new_channel (self, handle, self->priv->conn->self_handle, request_token); } else if (require_new) { g_set_error (&error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "An echo2 channel to contact #%u already exists", handle); goto error; } else { tp_channel_manager_emit_request_already_satisfied (self, request_token, TP_EXPORTABLE_CHANNEL (chan)); } return TRUE; error: tp_channel_manager_emit_request_failed (self, request_token, error->domain, error->code, error->message); g_error_free (error); return TRUE; } static gboolean example_echo_2_im_manager_create_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_echo_2_im_manager_request (EXAMPLE_ECHO_2_IM_MANAGER (manager), request_token, request_properties, TRUE); } static gboolean example_echo_2_im_manager_ensure_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_echo_2_im_manager_request (EXAMPLE_ECHO_2_IM_MANAGER (manager), request_token, request_properties, FALSE); } static void channel_manager_iface_init (gpointer g_iface, gpointer data G_GNUC_UNUSED) { TpChannelManagerIface *iface = g_iface; iface->foreach_channel = example_echo_2_im_manager_foreach_channel; iface->type_foreach_channel_class = example_echo_2_im_manager_type_foreach_channel_class; iface->create_channel = example_echo_2_im_manager_create_channel; iface->ensure_channel = example_echo_2_im_manager_ensure_channel; /* In this channel manager, Request has the same semantics as Ensure */ iface->request_channel = example_echo_2_im_manager_ensure_channel; } telepathy-qt-0.9.6.1/tests/lib/glib/echo2/im-manager.h0000644000175100017520000000341112530423576023734 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example channel manager * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_ECHO_MESSAGE_PARTS_IM_MANAGER_H #define EXAMPLE_ECHO_MESSAGE_PARTS_IM_MANAGER_H #include G_BEGIN_DECLS typedef struct _ExampleEcho2ImManager ExampleEcho2ImManager; typedef struct _ExampleEcho2ImManagerClass ExampleEcho2ImManagerClass; typedef struct _ExampleEcho2ImManagerPrivate ExampleEcho2ImManagerPrivate; struct _ExampleEcho2ImManagerClass { GObjectClass parent_class; }; struct _ExampleEcho2ImManager { GObject parent; ExampleEcho2ImManagerPrivate *priv; }; GType example_echo_2_im_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_ECHO_2_IM_MANAGER \ (example_echo_2_im_manager_get_type ()) #define EXAMPLE_ECHO_2_IM_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_ECHO_2_IM_MANAGER, \ ExampleEcho2ImManager)) #define EXAMPLE_ECHO_2_IM_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_ECHO_2_IM_MANAGER, \ ExampleEcho2ImManagerClass)) #define EXAMPLE_IS_ECHO_2_IM_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_ECHO_2_IM_MANAGER)) #define EXAMPLE_IS_ECHO_2_IM_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_ECHO_2_IM_MANAGER)) #define EXAMPLE_ECHO_2_IM_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_ECHO_2_IM_MANAGER, \ ExampleEcho2ImManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contacts-conn.c0000644000175100017520000012727012530423576023475 0ustar00kaffeinekaffeine00000000000000/* * contacts-conn.c - connection with contact info * * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "contacts-conn.h" #include #include #include #include #include #include #include #include "debug.h" static void init_aliasing (gpointer, gpointer); static void init_avatars (gpointer, gpointer); static void init_location (gpointer, gpointer); static void init_contact_caps (gpointer, gpointer); static void init_contact_info (gpointer, gpointer); static void init_client_types (gpointer, gpointer); static void conn_avatars_properties_getter (GObject *object, GQuark interface, GQuark name, GValue *value, gpointer getter_data); G_DEFINE_TYPE_WITH_CODE (TpTestsContactsConnection, tp_tests_contacts_connection, TP_TESTS_TYPE_SIMPLE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_ALIASING, init_aliasing); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_AVATARS, init_avatars); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, tp_presence_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, tp_presence_mixin_simple_presence_iface_init) G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_LOCATION, init_location) G_IMPLEMENT_INTERFACE ( TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_CAPABILITIES, init_contact_caps) G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_INFO, init_contact_info) G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CLIENT_TYPES, init_client_types); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, tp_contacts_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_LIST, tp_base_contact_list_mixin_list_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_GROUPS, tp_base_contact_list_mixin_groups_iface_init); ); /* type definition stuff */ static const char *mime_types[] = { "image/png", NULL }; static TpDBusPropertiesMixinPropImpl conn_avatars_properties[] = { { "MinimumAvatarWidth", GUINT_TO_POINTER (1), NULL }, { "MinimumAvatarHeight", GUINT_TO_POINTER (2), NULL }, { "RecommendedAvatarWidth", GUINT_TO_POINTER (3), NULL }, { "RecommendedAvatarHeight", GUINT_TO_POINTER (4), NULL }, { "MaximumAvatarWidth", GUINT_TO_POINTER (5), NULL }, { "MaximumAvatarHeight", GUINT_TO_POINTER (6), NULL }, { "MaximumAvatarBytes", GUINT_TO_POINTER (7), NULL }, /* special-cased - it's the only one with a non-guint value */ { "SupportedAvatarMIMETypes", NULL, NULL }, { NULL } }; enum { N_SIGNALS }; struct _TpTestsContactsConnectionPrivate { /* TpHandle => gchar * */ GHashTable *aliases; /* TpHandle => AvatarData */ GHashTable *avatars; /* TpHandle => ContactsConnectionPresenceStatusIndex */ GHashTable *presence_statuses; /* TpHandle => gchar * */ GHashTable *presence_messages; /* TpHandle => GHashTable * */ GHashTable *locations; /* TpHandle => GPtrArray * */ GHashTable *capabilities; /* TpHandle => GPtrArray * */ GHashTable *contact_info; GPtrArray *default_contact_info; /* TpHandle => gchar ** */ GHashTable *client_types; TestContactListManager *list_manager; }; typedef struct { GArray *data; gchar *mime_type; gchar *token; } AvatarData; static AvatarData * avatar_data_new (GArray *data, const gchar *mime_type, const gchar *token) { AvatarData *a; a = g_slice_new (AvatarData); a->data = data ? g_array_ref (data) : NULL; a->mime_type = g_strdup (mime_type); a->token = g_strdup (token); return a; } static void avatar_data_free (gpointer data) { AvatarData *a = data; if (a != NULL) { if (a->data != NULL) g_array_unref (a->data); g_free (a->mime_type); g_free (a->token); g_slice_free (AvatarData, a); } } static void free_rcc_list (GPtrArray *rccs) { g_boxed_free (TP_ARRAY_TYPE_REQUESTABLE_CHANNEL_CLASS_LIST, rccs); } static void tp_tests_contacts_connection_init (TpTestsContactsConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_CONTACTS_CONNECTION, TpTestsContactsConnectionPrivate); self->priv->aliases = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free); self->priv->avatars = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, avatar_data_free); self->priv->presence_statuses = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); self->priv->presence_messages = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free); self->priv->locations = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_hash_table_unref); self->priv->capabilities = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) free_rcc_list); self->priv->contact_info = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_ptr_array_unref); self->priv->default_contact_info = (GPtrArray *) dbus_g_type_specialized_construct ( TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST); self->priv->client_types = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_strfreev); } static void finalize (GObject *object) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); tp_contacts_mixin_finalize (object); g_hash_table_destroy (self->priv->aliases); g_hash_table_destroy (self->priv->avatars); g_hash_table_destroy (self->priv->presence_statuses); g_hash_table_destroy (self->priv->presence_messages); g_hash_table_destroy (self->priv->locations); g_hash_table_destroy (self->priv->capabilities); g_hash_table_destroy (self->priv->contact_info); g_hash_table_destroy (self->priv->client_types); if (self->priv->default_contact_info != NULL) g_ptr_array_unref (self->priv->default_contact_info); G_OBJECT_CLASS (tp_tests_contacts_connection_parent_class)->finalize (object); } static void aliasing_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { guint i; TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, guint, i); const gchar *alias = g_hash_table_lookup (self->priv->aliases, GUINT_TO_POINTER (handle)); if (alias == NULL) { alias = tp_handle_inspect (contact_repo, handle); } tp_contacts_mixin_set_contact_attribute (attributes, handle, TP_IFACE_CONNECTION_INTERFACE_ALIASING "/alias", tp_g_value_slice_new_string (alias)); } } static void avatars_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { guint i; TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, guint, i); AvatarData *a = g_hash_table_lookup (self->priv->avatars, GUINT_TO_POINTER (handle)); if (a != NULL && a->token != NULL) { tp_contacts_mixin_set_contact_attribute (attributes, handle, TP_IFACE_CONNECTION_INTERFACE_AVATARS "/token", tp_g_value_slice_new_string (a->token)); } } } static void location_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { guint i; TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, guint, i); GHashTable *location = g_hash_table_lookup (self->priv->locations, GUINT_TO_POINTER (handle)); if (location != NULL) { tp_contacts_mixin_set_contact_attribute (attributes, handle, TP_IFACE_CONNECTION_INTERFACE_LOCATION "/location", tp_g_value_slice_new_boxed (TP_HASH_TYPE_LOCATION, location)); } } } static void contact_caps_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { guint i; TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, guint, i); GPtrArray *caps = g_hash_table_lookup (self->priv->capabilities, GUINT_TO_POINTER (handle)); if (caps != NULL) { tp_contacts_mixin_set_contact_attribute (attributes, handle, TP_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES "/capabilities", tp_g_value_slice_new_boxed ( TP_ARRAY_TYPE_REQUESTABLE_CHANNEL_CLASS_LIST, caps)); } } } static void contact_info_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { guint i; TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, guint, i); GPtrArray *info = g_hash_table_lookup (self->priv->contact_info, GUINT_TO_POINTER (handle)); if (info != NULL) { tp_contacts_mixin_set_contact_attribute (attributes, handle, TP_IFACE_CONNECTION_INTERFACE_CONTACT_INFO "/info", tp_g_value_slice_new_boxed (TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST, info)); } } } static TpDBusPropertiesMixinPropImpl conn_contact_info_properties[] = { { "ContactInfoFlags", GUINT_TO_POINTER (TP_CONTACT_INFO_FLAG_PUSH | TP_CONTACT_INFO_FLAG_CAN_SET), NULL }, { "SupportedFields", NULL, NULL }, { NULL } }; static void conn_contact_info_properties_getter (GObject *object, GQuark interface, GQuark name, GValue *value, gpointer getter_data) { GQuark q_supported_fields = g_quark_from_static_string ("SupportedFields"); static GPtrArray *supported_fields = NULL; if (name == q_supported_fields) { if (supported_fields == NULL) { supported_fields = g_ptr_array_new (); g_ptr_array_add (supported_fields, tp_value_array_build (4, G_TYPE_STRING, "n", G_TYPE_STRV, NULL, G_TYPE_UINT, 0, G_TYPE_UINT, 0, G_TYPE_INVALID)); } g_value_set_boxed (value, supported_fields); } else { g_value_set_uint (value, GPOINTER_TO_UINT (getter_data)); } } static void client_types_fill_contact_attributes ( GObject *object, const GArray *contacts, GHashTable *attributes) { guint i; TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); gchar **types = g_hash_table_lookup (self->priv->client_types, GUINT_TO_POINTER (handle)); if (types != NULL) { tp_contacts_mixin_set_contact_attribute (attributes, handle, TP_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES "/client-types", tp_g_value_slice_new_boxed (G_TYPE_STRV, types)); } } } static void constructed (GObject *object) { TpBaseConnection *base = TP_BASE_CONNECTION (object); void (*parent_impl) (GObject *) = G_OBJECT_CLASS (tp_tests_contacts_connection_parent_class)->constructed; if (parent_impl != NULL) parent_impl (object); tp_contacts_mixin_init (object, G_STRUCT_OFFSET (TpTestsContactsConnection, contacts_mixin)); tp_base_connection_register_with_contacts_mixin (base); tp_base_contact_list_mixin_register_with_contacts_mixin (base); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_ALIASING, aliasing_fill_contact_attributes); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_AVATARS, avatars_fill_contact_attributes); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_LOCATION, location_fill_contact_attributes); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES, contact_caps_fill_contact_attributes); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_CONTACT_INFO, contact_info_fill_contact_attributes); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES, client_types_fill_contact_attributes); tp_presence_mixin_init (object, G_STRUCT_OFFSET (TpTestsContactsConnection, presence_mixin)); tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); } static const TpPresenceStatusOptionalArgumentSpec can_have_message[] = { { "message", "s", NULL, NULL }, { NULL } }; /* Must match TpTestsContactsConnectionPresenceStatusIndex in the .h */ static const TpPresenceStatusSpec my_statuses[] = { { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, can_have_message }, { "busy", TP_CONNECTION_PRESENCE_TYPE_BUSY, TRUE, can_have_message }, { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, can_have_message }, { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, { NULL } }; static gboolean my_status_available (GObject *object, guint index) { TpBaseConnection *base = TP_BASE_CONNECTION (object); if (base->status != TP_CONNECTION_STATUS_CONNECTED) return FALSE; return TRUE; } static GHashTable * my_get_contact_statuses (GObject *object, const GArray *contacts, GError **error) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (object); GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) tp_presence_status_free); guint i; for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); gpointer key = GUINT_TO_POINTER (handle); TpTestsContactsConnectionPresenceStatusIndex index; const gchar *presence_message; GHashTable *parameters; index = GPOINTER_TO_UINT (g_hash_table_lookup ( self->priv->presence_statuses, key)); presence_message = g_hash_table_lookup ( self->priv->presence_messages, key); parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); if (presence_message != NULL) g_hash_table_insert (parameters, "message", tp_g_value_slice_new_string (presence_message)); g_hash_table_insert (result, key, tp_presence_status_new (index, parameters)); g_hash_table_destroy (parameters); } return result; } static gboolean my_set_own_status (GObject *object, const TpPresenceStatus *status, GError **error) { TpBaseConnection *base_conn = TP_BASE_CONNECTION (object); TpTestsContactsConnectionPresenceStatusIndex index = status->index; const gchar *message = ""; if (status->optional_arguments != NULL) { message = g_hash_table_lookup (status->optional_arguments, "message"); if (message == NULL) message = ""; } tp_tests_contacts_connection_change_presences (TP_TESTS_CONTACTS_CONNECTION (object), 1, &(base_conn->self_handle), &index, &message); return TRUE; } static guint my_get_maximum_status_message_length_cb (GObject *obj) { return 512; } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (conn); GPtrArray *ret = g_ptr_array_sized_new (1); self->priv->list_manager = g_object_new (TEST_TYPE_CONTACT_LIST_MANAGER, "connection", conn, NULL); g_ptr_array_add (ret, self->priv->list_manager); return ret; } static void tp_tests_contacts_connection_class_init (TpTestsContactsConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; TpPresenceMixinClass *mixin_class; static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_AVATARS, TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_CONTACT_LIST, TP_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_LOCATION, TP_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES, TP_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES, TP_IFACE_CONNECTION_INTERFACE_CONTACT_INFO, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, NULL }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CONNECTION_INTERFACE_AVATARS, conn_avatars_properties_getter, NULL, conn_avatars_properties, }, { TP_IFACE_CONNECTION_INTERFACE_CONTACT_INFO, conn_contact_info_properties_getter, NULL, conn_contact_info_properties, }, { NULL } }; object_class->constructed = constructed; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (TpTestsContactsConnectionPrivate)); base_class->interfaces_always_present = interfaces_always_present; base_class->create_channel_managers = create_channel_managers; tp_contacts_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsContactsConnectionClass, contacts_mixin)); tp_presence_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsContactsConnectionClass, presence_mixin), my_status_available, my_get_contact_statuses, my_set_own_status, my_statuses); mixin_class = TP_PRESENCE_MIXIN_CLASS(klass); mixin_class->get_maximum_status_message_length = my_get_maximum_status_message_length_cb; tp_presence_mixin_simple_presence_init_dbus_properties (object_class); klass->properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsContactsConnectionClass, properties_class)); tp_base_contact_list_mixin_class_init (base_class); } TestContactListManager * tp_tests_contacts_connection_get_contact_list_manager ( TpTestsContactsConnection *self) { return self->priv->list_manager; } void tp_tests_contacts_connection_change_aliases (TpTestsContactsConnection *self, guint n, const TpHandle *handles, const gchar * const *aliases) { GPtrArray *structs = g_ptr_array_sized_new (n); guint i; for (i = 0; i < n; i++) { GValueArray *pair = g_value_array_new (2); DEBUG ("contact#%u -> %s", handles[i], aliases[i]); g_hash_table_insert (self->priv->aliases, GUINT_TO_POINTER (handles[i]), g_strdup (aliases[i])); g_value_array_append (pair, NULL); g_value_init (pair->values + 0, G_TYPE_UINT); g_value_set_uint (pair->values + 0, handles[i]); g_value_array_append (pair, NULL); g_value_init (pair->values + 1, G_TYPE_STRING); g_value_set_string (pair->values + 1, aliases[i]); g_ptr_array_add (structs, pair); } tp_svc_connection_interface_aliasing_emit_aliases_changed (self, structs); g_ptr_array_foreach (structs, (GFunc) g_value_array_free, NULL); g_ptr_array_free (structs, TRUE); } void tp_tests_contacts_connection_change_presences ( TpTestsContactsConnection *self, guint n, const TpHandle *handles, const TpTestsContactsConnectionPresenceStatusIndex *indexes, const gchar * const *messages) { GHashTable *presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) tp_presence_status_free); guint i; for (i = 0; i < n; i++) { GHashTable *parameters; gpointer key = GUINT_TO_POINTER (handles[i]); DEBUG ("contact#%u -> %s \"%s\"", handles[i], my_statuses[indexes[i]].name, messages[i]); g_hash_table_insert (self->priv->presence_statuses, key, GUINT_TO_POINTER (indexes[i])); g_hash_table_insert (self->priv->presence_messages, key, g_strdup (messages[i])); parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); if (messages[i] != NULL && messages[i][0] != '\0') g_hash_table_insert (parameters, "message", tp_g_value_slice_new_string (messages[i])); g_hash_table_insert (presences, key, tp_presence_status_new (indexes[i], parameters)); g_hash_table_destroy (parameters); } tp_presence_mixin_emit_presence_update ((GObject *) self, presences); g_hash_table_destroy (presences); } void tp_tests_contacts_connection_change_avatar_tokens (TpTestsContactsConnection *self, guint n, const TpHandle *handles, const gchar * const *tokens) { guint i; for (i = 0; i < n; i++) { DEBUG ("contact#%u -> %s", handles[i], tokens[i]); g_hash_table_insert (self->priv->avatars, GUINT_TO_POINTER (handles[i]), avatar_data_new (NULL, NULL, tokens[i])); tp_svc_connection_interface_avatars_emit_avatar_updated (self, handles[i], tokens[i]); } } void tp_tests_contacts_connection_change_avatar_data ( TpTestsContactsConnection *self, TpHandle handle, GArray *data, const gchar *mime_type, const gchar *token, gboolean emit_avatar_updated) { g_hash_table_insert (self->priv->avatars, GUINT_TO_POINTER (handle), avatar_data_new (data, mime_type, token)); if (emit_avatar_updated) { tp_svc_connection_interface_avatars_emit_avatar_updated (self, handle, token); } } void tp_tests_contacts_connection_change_locations (TpTestsContactsConnection *self, guint n, const TpHandle *handles, GHashTable **locations) { guint i; for (i = 0; i < n; i++) { DEBUG ("contact#%u ->", handles[i]); tp_asv_dump (locations[i]); g_hash_table_insert (self->priv->locations, GUINT_TO_POINTER (handles[i]), g_hash_table_ref (locations[i])); tp_svc_connection_interface_location_emit_location_updated (self, handles[i], locations[i]); } } void tp_tests_contacts_connection_change_capabilities ( TpTestsContactsConnection *self, GHashTable *capabilities) { GHashTableIter iter; gpointer handle, caps; g_hash_table_iter_init (&iter, capabilities); while (g_hash_table_iter_next (&iter, &handle, &caps)) { g_hash_table_insert (self->priv->capabilities, handle, g_boxed_copy (TP_ARRAY_TYPE_REQUESTABLE_CHANNEL_CLASS_LIST, caps)); } tp_svc_connection_interface_contact_capabilities_emit_contact_capabilities_changed ( self, capabilities); } void tp_tests_contacts_connection_change_contact_info ( TpTestsContactsConnection *self, TpHandle handle, GPtrArray *info) { g_hash_table_insert (self->priv->contact_info, GUINT_TO_POINTER (handle), g_ptr_array_ref (info)); tp_svc_connection_interface_contact_info_emit_contact_info_changed (self, handle, info); } void tp_tests_contacts_connection_set_default_contact_info ( TpTestsContactsConnection *self, GPtrArray *info) { if (self->priv->default_contact_info != NULL) g_ptr_array_unref (self->priv->default_contact_info); self->priv->default_contact_info = g_ptr_array_ref (info); } void tp_tests_contacts_connection_change_client_types( TpTestsContactsConnection *self, TpHandle handle, gchar **client_types) { g_hash_table_insert (self->priv->client_types, GUINT_TO_POINTER (handle), client_types); tp_svc_connection_interface_client_types_emit_client_types_updated (self, handle, (const gchar **) client_types); } static void my_get_alias_flags (TpSvcConnectionInterfaceAliasing *aliasing, DBusGMethodInvocation *context) { TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); tp_svc_connection_interface_aliasing_return_from_get_alias_flags (context, 0); } static void my_get_aliases (TpSvcConnectionInterfaceAliasing *aliasing, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GHashTable *result; GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); const gchar *alias = g_hash_table_lookup (self->priv->aliases, GUINT_TO_POINTER (handle)); if (alias == NULL) g_hash_table_insert (result, GUINT_TO_POINTER (handle), (gchar *) tp_handle_inspect (contact_repo, handle)); else g_hash_table_insert (result, GUINT_TO_POINTER (handle), (gchar *) alias); } tp_svc_connection_interface_aliasing_return_from_get_aliases (context, result); g_hash_table_destroy (result); } static void my_request_aliases (TpSvcConnectionInterfaceAliasing *aliasing, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GPtrArray *result; gchar **strings; GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_ptr_array_sized_new (contacts->len + 1); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); const gchar *alias = g_hash_table_lookup (self->priv->aliases, GUINT_TO_POINTER (handle)); if (alias == NULL) g_ptr_array_add (result, (gchar *) tp_handle_inspect (contact_repo, handle)); else g_ptr_array_add (result, (gchar *) alias); } g_ptr_array_add (result, NULL); strings = (gchar **) g_ptr_array_free (result, FALSE); tp_svc_connection_interface_aliasing_return_from_request_aliases (context, (const gchar **) strings); g_free (strings); } static void init_aliasing (gpointer g_iface, gpointer iface_data) { TpSvcConnectionInterfaceAliasingClass *klass = g_iface; #define IMPLEMENT(x) tp_svc_connection_interface_aliasing_implement_##x (\ klass, my_##x) IMPLEMENT(get_alias_flags); IMPLEMENT(request_aliases); IMPLEMENT(get_aliases); /* IMPLEMENT(set_aliases); */ #undef IMPLEMENT } static void my_get_avatar_tokens (TpSvcConnectionInterfaceAvatars *avatars, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (avatars); TpBaseConnection *base = TP_BASE_CONNECTION (avatars); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; GHashTable *result; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); AvatarData *a = g_hash_table_lookup (self->priv->avatars, GUINT_TO_POINTER (handle)); if (a == NULL || a->token == NULL) { /* we're expected to do a round-trip to the server to find out * their token, so we have to give some sort of result. Assume * no avatar, here */ a = avatar_data_new (NULL, NULL, ""); g_hash_table_insert (self->priv->avatars, GUINT_TO_POINTER (handle), a); tp_svc_connection_interface_avatars_emit_avatar_updated (self, handle, a->token); } g_hash_table_insert (result, GUINT_TO_POINTER (handle), a->token); } tp_svc_connection_interface_avatars_return_from_get_known_avatar_tokens ( context, result); g_hash_table_destroy (result); } static void my_get_known_avatar_tokens (TpSvcConnectionInterfaceAvatars *avatars, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (avatars); TpBaseConnection *base = TP_BASE_CONNECTION (avatars); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; GHashTable *result; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); AvatarData *a = g_hash_table_lookup (self->priv->avatars, GUINT_TO_POINTER (handle)); const gchar *token = a ? a->token : NULL; g_hash_table_insert (result, GUINT_TO_POINTER (handle), (gchar *) (token != NULL ? token : "")); } tp_svc_connection_interface_avatars_return_from_get_known_avatar_tokens ( context, result); g_hash_table_destroy (result); } static void my_request_avatars (TpSvcConnectionInterfaceAvatars *avatars, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (avatars); TpBaseConnection *base = TP_BASE_CONNECTION (avatars); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); AvatarData *a = g_hash_table_lookup (self->priv->avatars, GUINT_TO_POINTER (handle)); if (a != NULL) tp_svc_connection_interface_avatars_emit_avatar_retrieved (self, handle, a->token, a->data, a->mime_type); } tp_svc_connection_interface_avatars_return_from_request_avatars (context); } static void conn_avatars_properties_getter (GObject *object, GQuark interface, GQuark name, GValue *value, gpointer getter_data) { GQuark q_mime_types = g_quark_from_static_string ( "SupportedAvatarMIMETypes"); if (name == q_mime_types) { g_value_set_static_boxed (value, mime_types); } else { g_value_set_uint (value, GPOINTER_TO_UINT (getter_data)); } } static void init_avatars (gpointer g_iface, gpointer iface_data) { TpSvcConnectionInterfaceAvatarsClass *klass = g_iface; #define IMPLEMENT(x) tp_svc_connection_interface_avatars_implement_##x (\ klass, my_##x) /* IMPLEMENT(get_avatar_requirements); */ IMPLEMENT(get_avatar_tokens); IMPLEMENT(get_known_avatar_tokens); /* IMPLEMENT(request_avatar); */ IMPLEMENT(request_avatars); /* IMPLEMENT(set_avatar); */ /* IMPLEMENT(clear_avatar); */ #undef IMPLEMENT } static void my_get_locations (TpSvcConnectionInterfaceLocation *avatars, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (avatars); TpBaseConnection *base = TP_BASE_CONNECTION (avatars); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; GHashTable *result; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); GHashTable *location = g_hash_table_lookup (self->priv->locations, GUINT_TO_POINTER (handle)); if (location != NULL) { g_hash_table_insert (result, GUINT_TO_POINTER (handle), location); } } tp_svc_connection_interface_location_return_from_get_locations ( context, result); g_hash_table_destroy (result); } static void init_location (gpointer g_iface, gpointer iface_data) { TpSvcConnectionInterfaceLocationClass *klass = g_iface; #define IMPLEMENT(x) tp_svc_connection_interface_location_implement_##x (\ klass, my_##x) IMPLEMENT(get_locations); #undef IMPLEMENT } static void my_get_contact_capabilities (TpSvcConnectionInterfaceContactCapabilities *obj, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (obj); TpBaseConnection *base = TP_BASE_CONNECTION (obj); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; GHashTable *result; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, TpHandle, i); GPtrArray *arr = g_hash_table_lookup (self->priv->capabilities, GUINT_TO_POINTER (handle)); if (arr != NULL) { g_hash_table_insert (result, GUINT_TO_POINTER (handle), arr); } } tp_svc_connection_interface_contact_capabilities_return_from_get_contact_capabilities ( context, result); g_hash_table_destroy (result); } static void init_contact_caps (gpointer g_iface, gpointer iface_data) { TpSvcConnectionInterfaceContactCapabilitiesClass *klass = g_iface; #define IMPLEMENT(x) tp_svc_connection_interface_contact_capabilities_implement_##x (\ klass, my_##x) IMPLEMENT(get_contact_capabilities); #undef IMPLEMENT } static GPtrArray * lookup_contact_info (TpTestsContactsConnection *self, TpHandle handle) { GPtrArray *ret = g_hash_table_lookup (self->priv->contact_info, GUINT_TO_POINTER (handle)); if (ret == NULL && self->priv->default_contact_info != NULL) { ret = self->priv->default_contact_info; g_hash_table_insert (self->priv->contact_info, GUINT_TO_POINTER (handle), g_ptr_array_ref (ret)); } if (ret == NULL) return g_ptr_array_new (); return g_ptr_array_ref (ret); } static void my_refresh_contact_info (TpSvcConnectionInterfaceContactInfo *obj, const GArray *contacts, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (obj); TpBaseConnection *base = TP_BASE_CONNECTION (obj); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } self->refresh_contact_info_called++; for (i = 0; i < contacts->len; i++) { TpHandle handle = g_array_index (contacts, guint, i); // actually update the info (if not using the default info) so there is an actual change g_hash_table_insert (self->priv->contact_info, GUINT_TO_POINTER (handle), g_ptr_array_ref (self->priv->default_contact_info)); tp_svc_connection_interface_contact_info_emit_contact_info_changed (self, handle, self->priv->default_contact_info); } tp_svc_connection_interface_contact_info_return_from_refresh_contact_info ( context); } static void my_request_contact_info (TpSvcConnectionInterfaceContactInfo *obj, guint handle, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (obj); TpBaseConnection *base = TP_BASE_CONNECTION (obj); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; GPtrArray *ret; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handle_is_valid (contact_repo, handle, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } ret = lookup_contact_info (self, handle); tp_svc_connection_interface_contact_info_return_from_request_contact_info ( context, ret); g_ptr_array_unref (ret); } static void my_set_contact_info (TpSvcConnectionInterfaceContactInfo *obj, const GPtrArray *info, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (obj); TpBaseConnection *base = TP_BASE_CONNECTION (obj); GPtrArray *copy; guint i; TpHandle self_handle; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); /* Deep copy info */ copy = g_ptr_array_new_with_free_func ((GDestroyNotify) g_value_array_free); for (i = 0; i < info->len; i++) g_ptr_array_add (copy, g_value_array_copy (g_ptr_array_index (info, i))); self_handle = tp_base_connection_get_self_handle (base); g_hash_table_insert (self->priv->contact_info, GUINT_TO_POINTER (self_handle), copy); tp_svc_connection_interface_contact_info_return_from_set_contact_info ( context); } static void init_contact_info (gpointer g_iface, gpointer iface_data) { TpSvcConnectionInterfaceContactInfoClass *klass = g_iface; #define IMPLEMENT(x) tp_svc_connection_interface_contact_info_implement_##x (\ klass, my_##x) IMPLEMENT (refresh_contact_info); IMPLEMENT (request_contact_info); IMPLEMENT (set_contact_info); #undef IMPLEMENT } static void my_request_client_types (TpSvcConnectionInterfaceClientTypes *obj, guint handle, DBusGMethodInvocation *context) { TpTestsContactsConnection *self = TP_TESTS_CONTACTS_CONNECTION (obj); TpBaseConnection *base = TP_BASE_CONNECTION (obj); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; gchar **types; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handle_is_valid (contact_repo, handle, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } types = g_hash_table_lookup(self->priv->client_types, GUINT_TO_POINTER (handle)); tp_svc_connection_interface_client_types_return_from_request_client_types ( context, (const gchar **) types); } static void init_client_types (gpointer g_iface, gpointer iface_data) { TpSvcConnectionInterfaceClientTypesClass *klass = g_iface; #define IMPLEMENT(x) tp_svc_connection_interface_client_types_implement_##x (\ klass, my_##x) /* IMPLEMENT (get_client_types); */ IMPLEMENT (request_client_types); #undef IMPLEMENT } /* =============== Legacy version (no Contacts interface) ================= */ G_DEFINE_TYPE (TpTestsLegacyContactsConnection, tp_tests_legacy_contacts_connection, TP_TESTS_TYPE_CONTACTS_CONNECTION); enum { LEGACY_PROP_HAS_IMMORTAL_HANDLES = 1 }; static void legacy_contacts_connection_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { switch (property_id) { case LEGACY_PROP_HAS_IMMORTAL_HANDLES: /* Pretend we don't. */ g_value_set_boolean (value, FALSE); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void tp_tests_legacy_contacts_connection_init (TpTestsLegacyContactsConnection *self) { } static void tp_tests_legacy_contacts_connection_class_init ( TpTestsLegacyContactsConnectionClass *klass) { /* Leave Contacts out of the interfaces we say are present, so clients * won't use it */ static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_AVATARS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_LOCATION, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, NULL }; TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; object_class->get_property = legacy_contacts_connection_get_property; base_class->interfaces_always_present = interfaces_always_present; g_object_class_override_property (object_class, LEGACY_PROP_HAS_IMMORTAL_HANDLES, "has-immortal-handles"); } /* =============== No Requests and no ContactCapabilities ================= */ G_DEFINE_TYPE (TpTestsNoRequestsConnection, tp_tests_no_requests_connection, TP_TESTS_TYPE_CONTACTS_CONNECTION); static void tp_tests_no_requests_connection_init (TpTestsNoRequestsConnection *self) { } static void tp_tests_no_requests_connection_class_init ( TpTestsNoRequestsConnectionClass *klass) { static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_AVATARS, TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_LOCATION, NULL }; TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; base_class->interfaces_always_present = interfaces_always_present; } telepathy-qt-0.9.6.1/tests/lib/glib/contacts-conn.h0000644000175100017520000001647312530423576023504 0ustar00kaffeinekaffeine00000000000000/* * contacts-conn.h - header for a connection with contact info * * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_CONTACTS_CONN_H__ #define __TP_TESTS_CONTACTS_CONN_H__ #include #include #include #include #include "simple-conn.h" #include "contact-list-manager.h" G_BEGIN_DECLS typedef struct _TpTestsContactsConnection TpTestsContactsConnection; typedef struct _TpTestsContactsConnectionClass TpTestsContactsConnectionClass; typedef struct _TpTestsContactsConnectionPrivate TpTestsContactsConnectionPrivate; struct _TpTestsContactsConnectionClass { TpTestsSimpleConnectionClass parent_class; TpPresenceMixinClass presence_mixin; TpContactsMixinClass contacts_mixin; TpDBusPropertiesMixinClass properties_class; }; struct _TpTestsContactsConnection { TpTestsSimpleConnection parent; TpPresenceMixin presence_mixin; TpContactsMixin contacts_mixin; guint refresh_contact_info_called; TpTestsContactsConnectionPrivate *priv; }; GType tp_tests_contacts_connection_get_type (void); /* Must match my_statuses in the .c */ typedef enum { TP_TESTS_CONTACTS_CONNECTION_STATUS_AVAILABLE, TP_TESTS_CONTACTS_CONNECTION_STATUS_BUSY, TP_TESTS_CONTACTS_CONNECTION_STATUS_AWAY, TP_TESTS_CONTACTS_CONNECTION_STATUS_OFFLINE, TP_TESTS_CONTACTS_CONNECTION_STATUS_UNKNOWN, TP_TESTS_CONTACTS_CONNECTION_STATUS_ERROR } TpTestsContactsConnectionPresenceStatusIndex; /* TYPE MACROS */ #define TP_TESTS_TYPE_CONTACTS_CONNECTION \ (tp_tests_contacts_connection_get_type ()) #define TP_TESTS_CONTACTS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_CONTACTS_CONNECTION, \ TpTestsContactsConnection)) #define TP_TESTS_CONTACTS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_CONTACTS_CONNECTION, \ TpTestsContactsConnectionClass)) #define TP_TESTS_IS_CONTACTS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_CONTACTS_CONNECTION)) #define TP_TESTS_IS_CONTACTS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_CONTACTS_CONNECTION)) #define TP_TESTS_CONTACTS_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CONTACTS_CONNECTION, \ TpTestsContactsConnectionClass)) TestContactListManager *tp_tests_contacts_connection_get_contact_list_manager ( TpTestsContactsConnection *self); void tp_tests_contacts_connection_change_aliases ( TpTestsContactsConnection *self, guint n, const TpHandle *handles, const gchar * const *aliases); void tp_tests_contacts_connection_change_presences ( TpTestsContactsConnection *self, guint n, const TpHandle *handles, const TpTestsContactsConnectionPresenceStatusIndex *indexes, const gchar * const *messages); void tp_tests_contacts_connection_change_avatar_tokens ( TpTestsContactsConnection *self, guint n, const TpHandle *handles, const gchar * const *tokens); void tp_tests_contacts_connection_change_avatar_data ( TpTestsContactsConnection *self, TpHandle handle, GArray *data, const gchar *mime_type, const gchar *token, gboolean emit_avatar_updated); void tp_tests_contacts_connection_change_locations ( TpTestsContactsConnection *self, guint n, const TpHandle *handles, GHashTable **locations); void tp_tests_contacts_connection_change_capabilities ( TpTestsContactsConnection *self, GHashTable *capabilities); void tp_tests_contacts_connection_change_contact_info ( TpTestsContactsConnection *self, TpHandle handle, GPtrArray *info); void tp_tests_contacts_connection_set_default_contact_info ( TpTestsContactsConnection *self, GPtrArray *info); void tp_tests_contacts_connection_change_client_types ( TpTestsContactsConnection *self, TpHandle handle, gchar **client_types); /* Legacy version (no Contacts interface, and no immortal handles) */ typedef struct _TpTestsLegacyContactsConnection TpTestsLegacyContactsConnection; typedef struct _TpTestsLegacyContactsConnectionClass TpTestsLegacyContactsConnectionClass; typedef struct _TpTestsLegacyContactsConnectionPrivate TpTestsLegacyContactsConnectionPrivate; struct _TpTestsLegacyContactsConnectionClass { TpTestsContactsConnectionClass parent_class; }; struct _TpTestsLegacyContactsConnection { TpTestsContactsConnection parent; TpTestsLegacyContactsConnectionPrivate *priv; }; GType tp_tests_legacy_contacts_connection_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_LEGACY_CONTACTS_CONNECTION \ (tp_tests_legacy_contacts_connection_get_type ()) #define LEGACY_TP_TESTS_CONTACTS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_LEGACY_CONTACTS_CONNECTION, \ TpTestsLegacyContactsConnection)) #define LEGACY_TP_TESTS_CONTACTS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_LEGACY_CONTACTS_CONNECTION, \ TpTestsLegacyContactsConnectionClass)) #define TP_TESTS_LEGACY_CONTACTS_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_LEGACY_CONTACTS_CONNECTION)) #define TP_TESTS_LEGACY_CONTACTS_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_LEGACY_CONTACTS_CONNECTION)) #define LEGACY_TP_TESTS_CONTACTS_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_LEGACY_CONTACTS_CONNECTION, \ TpTestsLegacyContactsConnectionClass)) /* No Requests version */ typedef struct _TpTestsNoRequestsConnection TpTestsNoRequestsConnection; typedef struct _TpTestsNoRequestsConnectionClass TpTestsNoRequestsConnectionClass; typedef struct _TpTestsNoRequestsConnectionPrivate TpTestsNoRequestsConnectionPrivate; struct _TpTestsNoRequestsConnectionClass { TpTestsContactsConnectionClass parent_class; }; struct _TpTestsNoRequestsConnection { TpTestsContactsConnection parent; TpTestsNoRequestsConnectionPrivate *priv; }; GType tp_tests_no_requests_connection_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_NO_REQUESTS_CONNECTION \ (tp_tests_no_requests_connection_get_type ()) #define TP_TESTS_NO_REQUESTS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_NO_REQUESTS_CONNECTION, \ TpTestsNoRequestsConnection)) #define TP_TESTS_NO_REQUESTS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_NO_REQUESTS_CONNECTION, \ TpTestsNoRequestsConnectionClass)) #define TP_TESTS_NO_REQUESTS_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_NO_REQUESTS_CONNECTION)) #define TP_TESTS_NO_REQUESTS_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_NO_REQUESTS_CONNECTION)) #define TP_TESTS_NO_REQUESTS_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_NO_REQUESTS_CONNECTION, \ TpTestsNoRequestsConnectionClass)) G_END_DECLS #endif /* ifndef __TP_TESTS_CONTACTS_CONN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/CMakeLists.txt0000644000175100017520000000402112530423576023304 0ustar00kaffeinekaffeine00000000000000include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${TELEPATHY_GLIB_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${GOBJECT_INCLUDE_DIR} ${GIO_INCLUDE_DIR} ${GIOUNIX_INCLUDE_DIR} ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR}) if(ENABLE_TP_GLIB_TESTS) add_subdirectory(call) add_subdirectory(callable) add_subdirectory(contactlist) add_subdirectory(contactlist2) add_subdirectory(echo) add_subdirectory(echo2) add_subdirectory(future) set(tp_glib_tests_SRCS bug16307-conn.c bug16307-conn.h captcha-chan.c captcha-chan.h contacts-conn.c contacts-conn.h contacts-noroster-conn.c contacts-noroster-conn.h contact-list-manager.h contact-list-manager.c contact-search-chan.c contact-search-chan.h debug.h params-cm.c params-cm.h simple-account.c simple-account.h simple-account-manager.c simple-account-manager.h simple-channel-dispatch-operation.c simple-channel-dispatch-operation.h simple-client.c simple-client.h simple-conn.c simple-conn.h simple-manager.c simple-manager.h textchan-group.c textchan-group.h textchan-null.c textchan-null.h util.c util.h) if(ENABLE_TP_GLIB_GIO_TESTS) list(APPEND tp_glib_tests_SRCS dbus-tube-chan.c dbus-tube-chan.h stream-tube-chan.c stream-tube-chan.h) endif(ENABLE_TP_GLIB_GIO_TESTS) add_library(tp-glib-tests SHARED ${tp_glib_tests_SRCS}) target_link_libraries(tp-glib-tests ${TELEPATHY_GLIB_LIBRARIES} ${GLIB2_LIBRARIES} ${GOBJECT_LIBRARIES} ${GIO_LIBRARIES} ${DBUS_GLIB_LIBRARIES} ${DBUS_LIBRARIES} example-cm-call example-cm-callable example-cm-contactlist example-cm-echo example-cm-echo2 tp-glib-tests-future-extensions) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/simple-channel-dispatch-operation.c0000644000175100017520000002224012530423576027405 0ustar00kaffeinekaffeine00000000000000/* * simple-channel-dispatch-operation.c - a simple channel dispatch operation * service. * * Copyright © 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "simple-channel-dispatch-operation.h" #include #include #include #include #include #include #include #include #include static void channel_dispatch_operation_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (TpTestsSimpleChannelDispatchOperation, tp_tests_simple_channel_dispatch_operation, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_DISPATCH_OPERATION, channel_dispatch_operation_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init) ) /* TP_IFACE_CHANNEL_DISPATCH_OPERATION is implied */ static const char *CHANNEL_DISPATCH_OPERATION_INTERFACES[] = { NULL }; static const gchar *CHANNEL_DISPATCH_OPERATION_POSSIBLE_HANDLERS[] = { TP_CLIENT_BUS_NAME_BASE ".Badger", NULL, }; enum { PROP_0, PROP_INTERFACES, PROP_CONNECTION, PROP_ACCOUNT, PROP_CHANNELS, PROP_POSSIBLE_HANDLERS, }; struct _SimpleChannelDispatchOperationPrivate { gchar *conn_path; gchar *account_path; /* Array of TpChannel */ GPtrArray *channels; }; static void tp_tests_simple_channel_dispatch_operation_handle_with ( TpSvcChannelDispatchOperation *iface, const gchar *handler, DBusGMethodInvocation *context) { if (!tp_strdiff (handler, "FAIL")) { GError error = { TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Nope" }; dbus_g_method_return_error (context, &error); return; } dbus_g_method_return (context); } static void tp_tests_simple_channel_dispatch_operation_claim ( TpSvcChannelDispatchOperation *iface, DBusGMethodInvocation *context) { dbus_g_method_return (context); } static void tp_tests_simple_channel_dispatch_operation_handle_with_time ( TpSvcChannelDispatchOperation *iface, const gchar *handler, gint64 user_action_timestamp, DBusGMethodInvocation *context) { dbus_g_method_return (context); } static void channel_dispatch_operation_iface_init (gpointer klass, gpointer unused G_GNUC_UNUSED) { #define IMPLEMENT(x) tp_svc_channel_dispatch_operation_implement_##x (\ klass, tp_tests_simple_channel_dispatch_operation_##x) IMPLEMENT(handle_with); IMPLEMENT(claim); IMPLEMENT(handle_with_time); #undef IMPLEMENT } static void tp_tests_simple_channel_dispatch_operation_init (TpTestsSimpleChannelDispatchOperation *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION, TpTestsSimpleChannelDispatchOperationPrivate); self->priv->channels = g_ptr_array_new_with_free_func ( (GDestroyNotify) g_object_unref); } static void tp_tests_simple_channel_dispatch_operation_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { TpTestsSimpleChannelDispatchOperation *self = TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION (object); switch (property_id) { case PROP_INTERFACES: g_value_set_boxed (value, CHANNEL_DISPATCH_OPERATION_INTERFACES); break; case PROP_ACCOUNT: g_value_set_boxed (value, self->priv->account_path); break; case PROP_CONNECTION: g_value_set_boxed (value, self->priv->conn_path); break; case PROP_CHANNELS: { GPtrArray *arr = g_ptr_array_new (); guint i; for (i = 0; i < self->priv->channels->len; i++) { TpChannel *channel = g_ptr_array_index (self->priv->channels, i); GValue props_value = G_VALUE_INIT; GVariant *props_variant; /* Yay, double conversion! But this is for tests corner case */ props_variant = tp_channel_dup_immutable_properties (channel); dbus_g_value_parse_g_variant (props_variant, &props_value); g_ptr_array_add (arr, tp_value_array_build (2, DBUS_TYPE_G_OBJECT_PATH, tp_proxy_get_object_path (channel), TP_HASH_TYPE_STRING_VARIANT_MAP, g_value_get_boxed (&props_value), G_TYPE_INVALID)); g_variant_unref (props_variant); g_value_unset (&props_value); } g_value_take_boxed (value, arr); } break; case PROP_POSSIBLE_HANDLERS: g_value_set_boxed (value, CHANNEL_DISPATCH_OPERATION_POSSIBLE_HANDLERS); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); break; } } static void tp_tests_simple_channel_dispatch_operation_finalize (GObject *object) { TpTestsSimpleChannelDispatchOperation *self = TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION (object); void (*finalize) (GObject *) = G_OBJECT_CLASS (tp_tests_simple_channel_dispatch_operation_parent_class)->finalize; g_free (self->priv->conn_path); g_free (self->priv->account_path); g_ptr_array_free (self->priv->channels, TRUE); if (finalize != NULL) finalize (object); } /** * This class currently only provides the minimum for * tp_channel_dispatch_operation_prepare to succeed. This turns out to be only a working * Properties.GetAll(). */ static void tp_tests_simple_channel_dispatch_operation_class_init (TpTestsSimpleChannelDispatchOperationClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl a_props[] = { { "Interfaces", "interfaces", NULL }, { "Connection", "connection", NULL }, { "Account", "account", NULL }, { "Channels", "channels", NULL }, { "PossibleHandlers", "possible-handlers", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL_DISPATCH_OPERATION, tp_dbus_properties_mixin_getter_gobject_properties, NULL, a_props }, { NULL }, }; g_type_class_add_private (klass, sizeof (TpTestsSimpleChannelDispatchOperationPrivate)); object_class->get_property = tp_tests_simple_channel_dispatch_operation_get_property; object_class->finalize = tp_tests_simple_channel_dispatch_operation_finalize; param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "In this case we only implement ChannelDispatchOperation, so none.", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_boxed ("connection", "connection path", "Connection path", DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("account", "account path", "Account path", DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_boxed ("channels", "channel paths", "Channel paths", TP_ARRAY_TYPE_CHANNEL_DETAILS_LIST, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CHANNELS, param_spec); param_spec = g_param_spec_boxed ("possible-handlers", "possible handlers", "possible handles", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_POSSIBLE_HANDLERS, param_spec); klass->dbus_props_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsSimpleChannelDispatchOperationClass, dbus_props_class)); } void tp_tests_simple_channel_dispatch_operation_set_conn_path ( TpTestsSimpleChannelDispatchOperation *self, const gchar *conn_path) { self->priv->conn_path = g_strdup (conn_path); } void tp_tests_simple_channel_dispatch_operation_add_channel ( TpTestsSimpleChannelDispatchOperation *self, TpChannel *chan) { g_ptr_array_add (self->priv->channels, g_object_ref (chan)); } void tp_tests_simple_channel_dispatch_operation_lost_channel ( TpTestsSimpleChannelDispatchOperation *self, TpChannel *chan) { const gchar *path = tp_proxy_get_object_path (chan); g_ptr_array_remove (self->priv->channels, chan); tp_svc_channel_dispatch_operation_emit_channel_lost (self, path, TP_ERROR_STR_NOT_AVAILABLE, "Badger"); if (self->priv->channels->len == 0) { /* We removed the last channel; fire Finished */ tp_svc_channel_dispatch_operation_emit_finished (self); } } void tp_tests_simple_channel_dispatch_operation_set_account_path ( TpTestsSimpleChannelDispatchOperation *self, const gchar *account_path) { self->priv->account_path = g_strdup (account_path); } telepathy-qt-0.9.6.1/tests/lib/glib/simple-channel-dispatch-operation.h0000644000175100017520000000556612530423576027426 0ustar00kaffeinekaffeine00000000000000/* * simple-channel-dispatch-operation.h - a simple channel dispatch operation * service. * * Copyright © 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION_H__ #define __TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION_H__ #include #include #include G_BEGIN_DECLS typedef struct _SimpleChannelDispatchOperation TpTestsSimpleChannelDispatchOperation; typedef struct _SimpleChannelDispatchOperationClass TpTestsSimpleChannelDispatchOperationClass; typedef struct _SimpleChannelDispatchOperationPrivate TpTestsSimpleChannelDispatchOperationPrivate; struct _SimpleChannelDispatchOperationClass { GObjectClass parent_class; TpDBusPropertiesMixinClass dbus_props_class; }; struct _SimpleChannelDispatchOperation { GObject parent; TpTestsSimpleChannelDispatchOperationPrivate *priv; }; GType tp_tests_simple_channel_dispatch_operation_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION \ (tp_tests_simple_channel_dispatch_operation_get_type ()) #define TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION, \ TpTestsSimpleChannelDispatchOperation)) #define TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION, \ TpTestsSimpleChannelDispatchOperationClass)) #define SIMPLE_IS_CHANNEL_DISPATCH_OPERATION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION)) #define SIMPLE_IS_CHANNEL_DISPATCH_OPERATION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION)) #define TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_CHANNEL_DISPATCH_OPERATION, \ TpTestsSimpleChannelDispatchOperationClass)) void tp_tests_simple_channel_dispatch_operation_set_conn_path ( TpTestsSimpleChannelDispatchOperation *self, const gchar *conn_path); void tp_tests_simple_channel_dispatch_operation_add_channel ( TpTestsSimpleChannelDispatchOperation *self, TpChannel *chan); void tp_tests_simple_channel_dispatch_operation_lost_channel ( TpTestsSimpleChannelDispatchOperation *self, TpChannel *chan); void tp_tests_simple_channel_dispatch_operation_set_account_path ( TpTestsSimpleChannelDispatchOperation *self, const gchar *account_path); G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_CHANNEL_DISPATCH_OPERATION_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/simple-conn.c0000644000175100017520000003131512530423576023142 0ustar00kaffeinekaffeine00000000000000/* * simple-conn.c - a simple connection * * Copyright (C) 2007-2010 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "simple-conn.h" #include #include #include #include #include #include #include #include #include "textchan-null.h" #include "util.h" static void conn_iface_init (TpSvcConnectionClass *); G_DEFINE_TYPE_WITH_CODE (TpTestsSimpleConnection, tp_tests_simple_connection, TP_TYPE_BASE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION, conn_iface_init)) /* type definition stuff */ enum { PROP_ACCOUNT = 1, PROP_BREAK_PROPS = 2, PROP_DBUS_STATUS = 3, N_PROPS }; enum { SIGNAL_GOT_SELF_HANDLE, N_SIGNALS }; static guint signals[N_SIGNALS] = {0}; struct _TpTestsSimpleConnectionPrivate { gchar *account; guint connect_source; guint disconnect_source; gboolean break_fastpath_props; /* TpHandle => reffed TpTestsTextChannelNull */ GHashTable *channels; GError *get_self_handle_error /* initially NULL */ ; }; static void tp_tests_simple_connection_init (TpTestsSimpleConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_CONNECTION, TpTestsSimpleConnectionPrivate); self->priv->channels = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_object_unref); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; case PROP_BREAK_PROPS: g_value_set_boolean (value, self->priv->break_fastpath_props); break; case PROP_DBUS_STATUS: if (self->priv->break_fastpath_props) { g_debug ("returning broken value for Connection.Status"); g_value_set_uint (value, 0xdeadbeefU); } else { guint32 status = TP_BASE_CONNECTION (self)->status; if (status == TP_INTERNAL_CONNECTION_STATUS_NEW) g_value_set_uint (value, TP_CONNECTION_STATUS_DISCONNECTED); else g_value_set_uint (value, status); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_utf8_strdown (g_value_get_string (value), -1); break; case PROP_BREAK_PROPS: self->priv->break_fastpath_props = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void dispose (GObject *object) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (object); g_hash_table_unref (self->priv->channels); G_OBJECT_CLASS (tp_tests_simple_connection_parent_class)->dispose (object); } static void finalize (GObject *object) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (object); if (self->priv->connect_source != 0) { g_source_remove (self->priv->connect_source); } if (self->priv->disconnect_source != 0) { g_source_remove (self->priv->disconnect_source); } g_clear_error (&self->priv->get_self_handle_error); g_free (self->priv->account); G_OBJECT_CLASS (tp_tests_simple_connection_parent_class)->finalize (object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (conn); return g_strdup (self->priv->account); } static gchar * tp_tests_simple_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "ID must not be empty"); return NULL; } if (strchr (id, ' ') != NULL) { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "ID must not contain spaces"); return NULL; } return g_utf8_strdown (id, -1); } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, tp_tests_simple_normalize_contact, NULL); repos[TP_HANDLE_TYPE_ROOM] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_ROOM, NULL, NULL); } static GPtrArray * create_channel_factories (TpBaseConnection *conn) { return g_ptr_array_sized_new (0); } void tp_tests_simple_connection_inject_disconnect (TpTestsSimpleConnection *self) { tp_base_connection_change_status ((TpBaseConnection *) self, TP_CONNECTION_STATUS_DISCONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); } static gboolean pretend_connected (gpointer data) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (data); TpBaseConnection *conn = (TpBaseConnection *) self; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, NULL); if (conn->status == TP_CONNECTION_STATUS_CONNECTING) { tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); } self->priv->connect_source = 0; return FALSE; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (conn); tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTING, TP_CONNECTION_STATUS_REASON_REQUESTED); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished. Here there * isn't actually a connection, so we'll fake a connection process that * takes time. */ self->priv->connect_source = g_timeout_add (0, pretend_connected, self); return TRUE; } static gboolean pretend_disconnected (gpointer data) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (data); /* We are disconnected, all our channels are invalidated */ g_hash_table_remove_all (self->priv->channels); tp_base_connection_finish_shutdown (TP_BASE_CONNECTION (data)); self->priv->disconnect_source = 0; return FALSE; } static void shut_down (TpBaseConnection *conn) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (conn); /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished. Here there * isn't actually a connection, so we'll fake a disconnection process that * takes time. */ self->priv->disconnect_source = g_timeout_add (0, pretend_disconnected, conn); } static void tp_tests_simple_connection_class_init (TpTestsSimpleConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_REQUESTS, NULL }; object_class->get_property = get_property; object_class->set_property = set_property; object_class->dispose = dispose; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (TpTestsSimpleConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_factories = create_channel_factories; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_boolean ("break-0192-properties", "Break 0.19.2 properties", "Break Connection D-Bus properties introduced in spec 0.19.2", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_BREAK_PROPS, param_spec); param_spec = g_param_spec_uint ("dbus-status", "Connection.Status", "The connection status as visible on D-Bus (overridden so can break it)", TP_CONNECTION_STATUS_CONNECTED, G_MAXUINT, TP_CONNECTION_STATUS_DISCONNECTED, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DBUS_STATUS, param_spec); signals[SIGNAL_GOT_SELF_HANDLE] = g_signal_new ("got-self-handle", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } void tp_tests_simple_connection_set_identifier (TpTestsSimpleConnection *self, const gchar *identifier) { TpBaseConnection *conn = (TpBaseConnection *) self; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); TpHandle handle = tp_handle_ensure (contact_repo, identifier, NULL, NULL); /* if this fails then the identifier was bad - caller error */ g_return_if_fail (handle != 0); tp_base_connection_set_self_handle (conn, handle); } TpTestsSimpleConnection * tp_tests_simple_connection_new (const gchar *account, const gchar *protocol) { return TP_TESTS_SIMPLE_CONNECTION (g_object_new ( TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", account, "protocol", protocol, NULL)); } gchar * tp_tests_simple_connection_ensure_text_chan (TpTestsSimpleConnection *self, const gchar *target_id, GHashTable **props) { TpTestsTextChannelNull *chan; gchar *chan_path; TpHandleRepoIface *contact_repo; TpHandle handle; static guint count = 0; TpBaseConnection *base_conn = (TpBaseConnection *) self; /* Get contact handle */ contact_repo = tp_base_connection_get_handles (base_conn, TP_HANDLE_TYPE_CONTACT); g_assert (contact_repo != NULL); handle = tp_handle_ensure (contact_repo, target_id, NULL, NULL); chan = g_hash_table_lookup (self->priv->channels, GUINT_TO_POINTER (handle)); if (chan != NULL) { /* Channel already exist, reuse it */ g_object_get (chan, "object-path", &chan_path, NULL); } else { chan_path = g_strdup_printf ("%s/Channel%u", base_conn->object_path, count++); chan = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( TP_TESTS_TYPE_TEXT_CHANNEL_NULL, "connection", self, "object-path", chan_path, "handle", handle, NULL)); g_hash_table_insert (self->priv->channels, GUINT_TO_POINTER (handle), chan); } if (props != NULL) *props = tp_tests_text_channel_get_props (chan); return chan_path; } void tp_tests_simple_connection_set_get_self_handle_error ( TpTestsSimpleConnection *self, GQuark domain, gint code, const gchar *message) { self->priv->get_self_handle_error = g_error_new_literal (domain, code, message); } static void get_self_handle (TpSvcConnection *iface, DBusGMethodInvocation *context) { TpTestsSimpleConnection *self = TP_TESTS_SIMPLE_CONNECTION (iface); TpBaseConnection *base = TP_BASE_CONNECTION (iface); g_assert (TP_IS_BASE_CONNECTION (base)); TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (self->priv->get_self_handle_error != NULL) { dbus_g_method_return_error (context, self->priv->get_self_handle_error); return; } tp_svc_connection_return_from_get_self_handle (context, base->self_handle); g_signal_emit (self, signals[SIGNAL_GOT_SELF_HANDLE], 0); } static void conn_iface_init (TpSvcConnectionClass *iface) { #define IMPLEMENT(prefix,x) \ tp_svc_connection_implement_##x (iface, prefix##x) IMPLEMENT(,get_self_handle); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/simple-conn.h0000644000175100017520000000502712530423576023150 0ustar00kaffeinekaffeine00000000000000/* * simple-conn.h - header for a simple connection * * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_SIMPLE_CONN_H__ #define __TP_TESTS_SIMPLE_CONN_H__ #include #include G_BEGIN_DECLS typedef struct _TpTestsSimpleConnection TpTestsSimpleConnection; typedef struct _TpTestsSimpleConnectionClass TpTestsSimpleConnectionClass; typedef struct _TpTestsSimpleConnectionPrivate TpTestsSimpleConnectionPrivate; struct _TpTestsSimpleConnectionClass { TpBaseConnectionClass parent_class; }; struct _TpTestsSimpleConnection { TpBaseConnection parent; TpTestsSimpleConnectionPrivate *priv; }; GType tp_tests_simple_connection_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_SIMPLE_CONNECTION \ (tp_tests_simple_connection_get_type ()) #define TP_TESTS_SIMPLE_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_SIMPLE_CONNECTION, \ TpTestsSimpleConnection)) #define TP_TESTS_SIMPLE_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_SIMPLE_CONNECTION, \ TpTestsSimpleConnectionClass)) #define TP_TESTS_SIMPLE_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_SIMPLE_CONNECTION)) #define TP_TESTS_SIMPLE_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_SIMPLE_CONNECTION)) #define TP_TESTS_SIMPLE_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_CONNECTION, \ TpTestsSimpleConnectionClass)) TpTestsSimpleConnection * tp_tests_simple_connection_new (const gchar *account, const gchar *protocol); /* Cause "network events", for debugging/testing */ void tp_tests_simple_connection_inject_disconnect ( TpTestsSimpleConnection *self); void tp_tests_simple_connection_set_identifier (TpTestsSimpleConnection *self, const gchar *identifier); gchar * tp_tests_simple_connection_ensure_text_chan ( TpTestsSimpleConnection *self, const gchar *target_id, GHashTable **props); void tp_tests_simple_connection_set_get_self_handle_error ( TpTestsSimpleConnection *self, GQuark domain, gint code, const gchar *message); G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_CONN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/callable/0000755000175100017520000000000012530423576022306 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/callable/media-manager.c0000644000175100017520000003510412530423576025144 0ustar00kaffeinekaffeine00000000000000/* * media-manager.c - an example channel manager for StreamedMedia calls. * This channel manager emulates a protocol like XMPP Jingle, where you can * make several simultaneous calls to the same or different contacts. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "media-manager.h" #include #include #include #include #include #include #include "media-channel.h" static void channel_manager_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleCallableMediaManager, example_callable_media_manager, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, channel_manager_iface_init)) /* type definition stuff */ enum { PROP_CONNECTION = 1, PROP_SIMULATION_DELAY, N_PROPS }; struct _ExampleCallableMediaManagerPrivate { TpBaseConnection *conn; guint simulation_delay; /* Map from reffed ExampleCallableMediaChannel to the same pointer; used as a * set. */ GHashTable *channels; /* Next channel will be ("MediaChannel%u", next_channel_index) */ guint next_channel_index; gulong status_changed_id; gulong available_id; }; static void example_callable_media_manager_init (ExampleCallableMediaManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, ExampleCallableMediaManagerPrivate); self->priv->conn = NULL; self->priv->channels = g_hash_table_new_full (NULL, NULL, g_object_unref, NULL); self->priv->status_changed_id = 0; self->priv->available_id = 0; } static void example_callable_media_manager_close_all (ExampleCallableMediaManager *self) { if (self->priv->channels != NULL) { GHashTable *tmp = self->priv->channels; self->priv->channels = NULL; g_hash_table_unref (tmp); } if (self->priv->available_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->available_id); self->priv->available_id = 0; } if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } } static void dispose (GObject *object) { ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); example_callable_media_manager_close_all (self); g_assert (self->priv->channels == NULL); ((GObjectClass *) example_callable_media_manager_parent_class)->dispose ( object); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); switch (property_id) { case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); switch (property_id) { case PROP_CONNECTION: /* We don't ref the connection, because it owns a reference to the * channel manager, and it guarantees that the manager's lifetime is * less than its lifetime */ self->priv->conn = g_value_get_object (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, ExampleCallableMediaManager *self) { switch (status) { case TP_CONNECTION_STATUS_DISCONNECTED: { example_callable_media_manager_close_all (self); } break; default: break; } } static ExampleCallableMediaChannel *new_channel ( ExampleCallableMediaManager *self, TpHandle handle, TpHandle initiator, gpointer request_token, gboolean initial_audio, gboolean initial_video); static gboolean simulate_incoming_call_cb (gpointer p) { ExampleCallableMediaManager *self = p; TpHandleRepoIface *contact_repo; TpHandle caller; /* do nothing if we've been disconnected while waiting for the contact to * call us */ if (self->priv->available_id == 0) return FALSE; /* We're called by someone whose ID on the IM service is "caller" */ contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); caller = tp_handle_ensure (contact_repo, "caller", NULL, NULL); new_channel (self, caller, caller, NULL, TRUE, FALSE); return FALSE; } /* Whenever our presence changes from away to available, and whenever our * presence message changes while remaining available, simulate a call from * a contact */ static void available_cb (GObject *conn G_GNUC_UNUSED, const gchar *message, ExampleCallableMediaManager *self) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_incoming_call_cb, g_object_ref (self), g_object_unref); } static void constructed (GObject *object) { ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_callable_media_manager_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", (GCallback) status_changed_cb, self); self->priv->available_id = g_signal_connect (self->priv->conn, "available", (GCallback) available_cb, self); } static void example_callable_media_manager_class_init ( ExampleCallableMediaManagerClass *klass) { GParamSpec *param_spec; GObjectClass *object_class = (GObjectClass *) klass; object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); g_type_class_add_private (klass, sizeof (ExampleCallableMediaManagerPrivate)); } static void example_callable_media_manager_foreach_channel ( TpChannelManager *iface, TpExportableChannelFunc callback, gpointer user_data) { ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (iface); GHashTableIter iter; gpointer chan; g_hash_table_iter_init (&iter, self->priv->channels); while (g_hash_table_iter_next (&iter, &chan, NULL)) callback (chan, user_data); } static void channel_closed_cb (ExampleCallableMediaChannel *chan, ExampleCallableMediaManager *self) { tp_channel_manager_emit_channel_closed_for_object (self, TP_EXPORTABLE_CHANNEL (chan)); if (self->priv->channels != NULL) g_hash_table_remove (self->priv->channels, chan); } static ExampleCallableMediaChannel * new_channel (ExampleCallableMediaManager *self, TpHandle handle, TpHandle initiator, gpointer request_token, gboolean initial_audio, gboolean initial_video) { ExampleCallableMediaChannel *chan; gchar *object_path; GSList *requests = NULL; /* FIXME: This could potentially wrap around, but only after 4 billion * calls, which is probably plenty. */ object_path = g_strdup_printf ("%s/MediaChannel%u", self->priv->conn->object_path, self->priv->next_channel_index++); chan = g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, "connection", self->priv->conn, "object-path", object_path, "handle", handle, "initiator-handle", initiator, "requested", (self->priv->conn->self_handle == initiator), "simulation-delay", self->priv->simulation_delay, "initial-audio", initial_audio, "initial-video", initial_video, NULL); g_free (object_path); g_signal_connect (chan, "closed", G_CALLBACK (channel_closed_cb), self); g_hash_table_insert (self->priv->channels, chan, chan); if (request_token != NULL) requests = g_slist_prepend (requests, request_token); tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), requests); g_slist_free (requests); return chan; } static const gchar * const fixed_properties[] = { TP_PROP_CHANNEL_CHANNEL_TYPE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL }; static const gchar * const allowed_properties[] = { TP_PROP_CHANNEL_TARGET_HANDLE, TP_PROP_CHANNEL_TARGET_ID, NULL }; static void example_callable_media_manager_foreach_channel_class ( TpChannelManager *manager, TpChannelManagerChannelClassFunc func, gpointer user_data) { GHashTable *table = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, NULL); func (manager, table, allowed_properties, user_data); g_hash_table_destroy (table); } static gboolean example_callable_media_manager_request (ExampleCallableMediaManager *self, gpointer request_token, GHashTable *request_properties, gboolean require_new) { TpHandle handle; GError *error = NULL; if (tp_strdiff (tp_asv_get_string (request_properties, TP_PROP_CHANNEL_CHANNEL_TYPE), TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA)) { return FALSE; } if (tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) { return FALSE; } handle = tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE, NULL); g_assert (handle != 0); if (tp_channel_manager_asv_has_unknown_properties (request_properties, fixed_properties, allowed_properties, &error)) { goto error; } if (handle == self->priv->conn->self_handle) { /* In protocols with a concept of multiple "resources" signed in to * one account (XMPP, and possibly MSN) it is technically possible to * call yourself - e.g. if you're signed in on two PCs, you can call one * from the other. For simplicity, this example simulates a protocol * where this is not the case. */ g_set_error (&error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "In this protocol, you can't call yourself"); goto error; } if (!require_new) { /* see if we're already calling that handle */ GHashTableIter iter; gpointer chan; g_hash_table_iter_init (&iter, self->priv->channels); while (g_hash_table_iter_next (&iter, &chan, NULL)) { guint its_handle; g_object_get (chan, "handle", &its_handle, NULL); if (its_handle == handle) { tp_channel_manager_emit_request_already_satisfied (self, request_token, TP_EXPORTABLE_CHANNEL (chan)); return TRUE; } } } new_channel (self, handle, self->priv->conn->self_handle, request_token, FALSE, FALSE); return TRUE; error: tp_channel_manager_emit_request_failed (self, request_token, error->domain, error->code, error->message); g_error_free (error); return TRUE; } static gboolean example_callable_media_manager_create_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_callable_media_manager_request ( EXAMPLE_CALLABLE_MEDIA_MANAGER (manager), request_token, request_properties, TRUE); } static gboolean example_callable_media_manager_ensure_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_callable_media_manager_request ( EXAMPLE_CALLABLE_MEDIA_MANAGER (manager), request_token, request_properties, FALSE); } static void channel_manager_iface_init (gpointer g_iface, gpointer iface_data G_GNUC_UNUSED) { TpChannelManagerIface *iface = g_iface; iface->foreach_channel = example_callable_media_manager_foreach_channel; iface->foreach_channel_class = example_callable_media_manager_foreach_channel_class; iface->create_channel = example_callable_media_manager_create_channel; iface->ensure_channel = example_callable_media_manager_ensure_channel; /* In this channel manager, RequestChannel is not supported (it's new * code so there's no reason to be backwards compatible). The requirements * for RequestChannel are somewhat complicated for backwards compatibility * reasons: see telepathy-gabble or * http://telepathy.freedesktop.org/wiki/Requesting%20StreamedMedia%20channels * for the gory details. */ iface->request_channel = NULL; } telepathy-qt-0.9.6.1/tests/lib/glib/callable/media-manager.h0000644000175100017520000000514612530423576025154 0ustar00kaffeinekaffeine00000000000000/* * media-manager.h - header for an example channel manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __EXAMPLE_CALLABLE_MEDIA_MANAGER_H__ #define __EXAMPLE_CALLABLE_MEDIA_MANAGER_H__ #include G_BEGIN_DECLS typedef struct _ExampleCallableMediaManager ExampleCallableMediaManager; typedef struct _ExampleCallableMediaManagerPrivate ExampleCallableMediaManagerPrivate; typedef struct _ExampleCallableMediaManagerClass ExampleCallableMediaManagerClass; typedef struct _ExampleCallableMediaManagerClassPrivate ExampleCallableMediaManagerClassPrivate; struct _ExampleCallableMediaManagerClass { GObjectClass parent_class; ExampleCallableMediaManagerClassPrivate *priv; }; struct _ExampleCallableMediaManager { GObject parent; ExampleCallableMediaManagerPrivate *priv; }; GType example_callable_media_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER \ (example_callable_media_manager_get_type ()) #define EXAMPLE_CALLABLE_MEDIA_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, \ ExampleCallableMediaManager)) #define EXAMPLE_CALLABLE_MEDIA_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, \ ExampleCallableMediaManagerClass)) #define EXAMPLE_IS_CALLABLE_MEDIA_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER)) #define EXAMPLE_IS_CALLABLE_MEDIA_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER)) #define EXAMPLE_CALLABLE_MEDIA_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, \ ExampleCallableMediaManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/callable/media-stream.c0000644000175100017520000004560012530423576025027 0ustar00kaffeinekaffeine00000000000000/* * media-stream.c - a stream in a streamed media call. * * In connection managers with MediaSignalling, this object would be a D-Bus * object in its own right. In this CM, MediaSignalling is not used, and this * object just represents internal state of the MediaChannel. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "media-stream.h" #include #include #include "media-channel.h" G_DEFINE_TYPE (ExampleCallableMediaStream, example_callable_media_stream, G_TYPE_OBJECT) enum { PROP_CHANNEL = 1, PROP_ID, PROP_HANDLE, PROP_TYPE, PROP_STATE, PROP_PENDING_SEND, PROP_DIRECTION, PROP_STREAM_INFO, PROP_SIMULATION_DELAY, PROP_LOCALLY_REQUESTED, N_PROPS }; enum { SIGNAL_REMOVED, SIGNAL_DIRECTION_CHANGED, N_SIGNALS }; static guint signals[N_SIGNALS] = { 0 }; struct _ExampleCallableMediaStreamPrivate { TpBaseConnection *conn; ExampleCallableMediaChannel *channel; guint id; TpHandle handle; TpMediaStreamType type; TpMediaStreamState state; TpMediaStreamDirection direction; TpMediaStreamPendingSend pending_send; guint simulation_delay; gulong call_terminated_id; guint connected_event_id; gboolean locally_requested; gboolean removed; }; static void example_callable_media_stream_init (ExampleCallableMediaStream *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, ExampleCallableMediaStreamPrivate); /* start off directionless */ self->priv->direction = TP_MEDIA_STREAM_DIRECTION_NONE; self->priv->pending_send = 0; self->priv->state = TP_MEDIA_STREAM_STATE_DISCONNECTED; } static void call_terminated_cb (ExampleCallableMediaChannel *channel, ExampleCallableMediaStream *self) { g_signal_handler_disconnect (channel, self->priv->call_terminated_id); self->priv->call_terminated_id = 0; example_callable_media_stream_close (self); } static void constructed (GObject *object) { ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_callable_media_stream_parent_class)->constructed; if (chain_up != NULL) chain_up (object); g_object_get (self->priv->channel, "connection", &self->priv->conn, NULL); self->priv->call_terminated_id = g_signal_connect (self->priv->channel, "call-terminated", G_CALLBACK (call_terminated_cb), self); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); switch (property_id) { case PROP_ID: g_value_set_uint (value, self->priv->id); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; case PROP_TYPE: g_value_set_uint (value, self->priv->type); break; case PROP_STATE: g_value_set_uint (value, self->priv->state); break; case PROP_PENDING_SEND: g_value_set_uint (value, self->priv->pending_send); break; case PROP_DIRECTION: g_value_set_uint (value, self->priv->direction); break; case PROP_CHANNEL: g_value_set_object (value, self->priv->channel); break; case PROP_STREAM_INFO: { GValueArray *va = g_value_array_new (6); guint i; for (i = 0; i < 6; i++) { g_value_array_append (va, NULL); g_value_init (va->values + i, G_TYPE_UINT); } g_value_set_uint (va->values + 0, self->priv->id); g_value_set_uint (va->values + 1, self->priv->handle); g_value_set_uint (va->values + 2, self->priv->type); g_value_set_uint (va->values + 3, self->priv->state); g_value_set_uint (va->values + 4, self->priv->direction); g_value_set_uint (va->values + 5, self->priv->pending_send); g_value_take_boxed (value, va); } break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; case PROP_LOCALLY_REQUESTED: g_value_set_boolean (value, self->priv->locally_requested); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); switch (property_id) { case PROP_ID: self->priv->id = g_value_get_uint (value); break; case PROP_HANDLE: self->priv->handle = g_value_get_uint (value); break; case PROP_TYPE: self->priv->type = g_value_get_uint (value); break; case PROP_CHANNEL: g_assert (self->priv->channel == NULL); self->priv->channel = g_value_dup_object (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; case PROP_LOCALLY_REQUESTED: self->priv->locally_requested = g_value_get_boolean (value); if (self->priv->locally_requested) { example_callable_media_stream_change_direction (self, TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL, NULL); } else { example_callable_media_stream_receive_direction_request (self, TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); example_callable_media_stream_close (self); if (self->priv->channel != NULL) { if (self->priv->call_terminated_id != 0) { g_signal_handler_disconnect (self->priv->channel, self->priv->call_terminated_id); self->priv->call_terminated_id = 0; } g_object_unref (self->priv->channel); self->priv->channel = NULL; } if (self->priv->conn != NULL) { g_object_unref (self->priv->conn); self->priv->conn = NULL; } ((GObjectClass *) example_callable_media_stream_parent_class)->dispose (object); } static void example_callable_media_stream_class_init (ExampleCallableMediaStreamClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleCallableMediaStreamPrivate)); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; param_spec = g_param_spec_object ("channel", "ExampleCallableMediaChannel", "Media channel that owns this stream", EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CHANNEL, param_spec); param_spec = g_param_spec_uint ("id", "Stream ID", "ID of this stream", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ID, param_spec); param_spec = g_param_spec_uint ("handle", "Peer's TpHandle", "The handle with which this stream communicates or 0 if not applicable", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_HANDLE, param_spec); param_spec = g_param_spec_uint ("type", "TpMediaStreamType", "Media stream type", 0, NUM_TP_MEDIA_STREAM_TYPES - 1, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TYPE, param_spec); param_spec = g_param_spec_uint ("state", "TpMediaStreamState", "Media stream connection state", 0, NUM_TP_MEDIA_STREAM_STATES - 1, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STATE, param_spec); param_spec = g_param_spec_uint ("direction", "TpMediaStreamDirection", "Media stream direction", 0, NUM_TP_MEDIA_STREAM_DIRECTIONS - 1, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DIRECTION, param_spec); param_spec = g_param_spec_uint ("pending-send", "TpMediaStreamPendingSend", "Requested media stream directions pending approval", 0, TP_MEDIA_STREAM_PENDING_LOCAL_SEND | TP_MEDIA_STREAM_PENDING_REMOTE_SEND, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PENDING_SEND, param_spec); param_spec = g_param_spec_boxed ("stream-info", "Stream info", "6-entry GValueArray as returned by ListStreams and RequestStreams", TP_STRUCT_TYPE_MEDIA_STREAM_INFO, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STREAM_INFO, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); param_spec = g_param_spec_boolean ("locally-requested", "Locally requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_LOCALLY_REQUESTED, param_spec); signals[SIGNAL_REMOVED] = g_signal_new ("removed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); signals[SIGNAL_DIRECTION_CHANGED] = g_signal_new ("direction-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } void example_callable_media_stream_close (ExampleCallableMediaStream *self) { if (!self->priv->removed) { self->priv->removed = TRUE; g_message ("Sending to server: Closing stream %u", self->priv->id); if (self->priv->connected_event_id != 0) { g_source_remove (self->priv->connected_event_id); } /* this has to come last, because the MediaChannel may unref us in * response to the removed signal */ g_signal_emit (self, signals[SIGNAL_REMOVED], 0); } } void example_callable_media_stream_accept_proposed_direction ( ExampleCallableMediaStream *self) { if (self->priv->removed || !(self->priv->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND)) return; g_message ("SIGNALLING: send: OK, I'll send you media on stream %u", self->priv->id); self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_SEND; self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_LOCAL_SEND; g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); } void example_callable_media_stream_simulate_contact_agreed_to_send ( ExampleCallableMediaStream *self) { if (self->priv->removed || !(self->priv->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND)) return; g_message ("SIGNALLING: receive: OK, I'll send you media on stream %u", self->priv->id); self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_RECEIVE; self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_REMOTE_SEND; g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); } static gboolean simulate_contact_agreed_to_send_cb (gpointer p) { example_callable_media_stream_simulate_contact_agreed_to_send (p); return FALSE; } gboolean example_callable_media_stream_change_direction ( ExampleCallableMediaStream *self, TpMediaStreamDirection direction, GError **error) { gboolean sending = ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_SEND) != 0); gboolean receiving = ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); gboolean want_to_send = ((direction & TP_MEDIA_STREAM_DIRECTION_SEND) != 0); gboolean want_to_receive = ((direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); gboolean pending_remote_send = ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND) != 0); gboolean pending_local_send = ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND) != 0); gboolean changed = FALSE; if (want_to_send) { if (!sending) { if (pending_local_send) { g_message ("SIGNALLING: send: I will now send you media on " "stream %u", self->priv->id); } g_message ("MEDIA: Sending media to peer for stream %u", self->priv->id); changed = TRUE; self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_SEND; } } else { if (sending) { g_message ("SIGNALLING: send: I will no longer send you media on " "stream %u", self->priv->id); g_message ("MEDIA: No longer sending media to peer for stream %u", self->priv->id); changed = TRUE; self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_SEND; } else if (pending_local_send) { g_message ("SIGNALLING: send: No, I refuse to send you media on " "stream %u", self->priv->id); changed = TRUE; self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_LOCAL_SEND; } } if (want_to_receive) { if (!receiving && !pending_remote_send) { g_message ("SIGNALLING: send: Please start sending me stream %u", self->priv->id); changed = TRUE; self->priv->pending_send |= TP_MEDIA_STREAM_PENDING_REMOTE_SEND; g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_agreed_to_send_cb, g_object_ref (self), g_object_unref); } } else { if (receiving) { g_message ("SIGNALLING: send: Please stop sending me stream %u", self->priv->id); g_message ("MEDIA: Suppressing output of stream %u", self->priv->id); changed = TRUE; self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_RECEIVE; } } if (changed) g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); return TRUE; } static gboolean simulate_stream_connected_cb (gpointer p) { ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (p); g_message ("MEDIA: stream connected"); self->priv->state = TP_MEDIA_STREAM_STATE_CONNECTED; g_object_notify ((GObject *) self, "state"); return FALSE; } void example_callable_media_stream_connect (ExampleCallableMediaStream *self) { /* if already trying to connect, do nothing */ if (self->priv->connected_event_id != 0) return; /* simulate it taking a short time to connect */ self->priv->connected_event_id = g_timeout_add (self->priv->simulation_delay, simulate_stream_connected_cb, self); } void example_callable_media_stream_receive_direction_request ( ExampleCallableMediaStream *self, TpMediaStreamDirection direction) { /* The remote user wants to change the direction of this stream to * @direction. Shall we let him? */ gboolean sending = ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_SEND) != 0); gboolean receiving = ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); gboolean send_requested = ((direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); gboolean receive_requested = ((direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); gboolean pending_remote_send = ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND) != 0); gboolean pending_local_send = ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND) != 0); gboolean changed = FALSE; if (send_requested) { g_message ("SIGNALLING: receive: Please start sending me stream %u", self->priv->id); if (!sending) { /* ask the user for permission */ self->priv->pending_send |= TP_MEDIA_STREAM_PENDING_LOCAL_SEND; changed = TRUE; } else { /* nothing to do, we're already sending on that stream */ } } else { g_message ("SIGNALLING: receive: Please stop sending me stream %u", self->priv->id); g_message ("SIGNALLING: send: OK, not sending stream %u", self->priv->id); if (sending) { g_message ("MEDIA: No longer sending media to peer for stream %u", self->priv->id); self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_SEND; changed = TRUE; } else if (pending_local_send) { self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_LOCAL_SEND; changed = TRUE; } else { /* nothing to do, we're not sending on that stream anyway */ } } if (receive_requested) { g_message ("SIGNALLING: receive: I will now send you media on stream %u", self->priv->id); if (!receiving) { self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_REMOTE_SEND; self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_RECEIVE; changed = TRUE; } } else { if (pending_remote_send) { g_message ("SIGNALLING: receive: No, I refuse to send you media on " "stream %u", self->priv->id); self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_REMOTE_SEND; changed = TRUE; } else if (receiving) { g_message ("SIGNALLING: receive: I will no longer send you media on " "stream %u", self->priv->id); self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_RECEIVE; changed = TRUE; } } if (changed) g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); } telepathy-qt-0.9.6.1/tests/lib/glib/callable/media-stream.h0000644000175100017520000000652112530423576025033 0ustar00kaffeinekaffeine00000000000000/* * media-stream.h - header for an example stream * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __EXAMPLE_CALLABLE_MEDIA_STREAM_H__ #define __EXAMPLE_CALLABLE_MEDIA_STREAM_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleCallableMediaStream ExampleCallableMediaStream; typedef struct _ExampleCallableMediaStreamPrivate ExampleCallableMediaStreamPrivate; typedef struct _ExampleCallableMediaStreamClass ExampleCallableMediaStreamClass; typedef struct _ExampleCallableMediaStreamClassPrivate ExampleCallableMediaStreamClassPrivate; GType example_callable_media_stream_get_type (void); #define EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM \ (example_callable_media_stream_get_type ()) #define EXAMPLE_CALLABLE_MEDIA_STREAM(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, \ ExampleCallableMediaStream)) #define EXAMPLE_CALLABLE_MEDIA_STREAM_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, \ ExampleCallableMediaStreamClass)) #define EXAMPLE_IS_CALLABLE_MEDIA_STREAM(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM)) #define EXAMPLE_IS_CALLABLE_MEDIA_STREAM_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM)) #define EXAMPLE_CALLABLE_MEDIA_STREAM_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, \ ExampleCallableMediaStreamClass)) struct _ExampleCallableMediaStreamClass { GObjectClass parent_class; ExampleCallableMediaStreamClassPrivate *priv; }; struct _ExampleCallableMediaStream { GObject parent; ExampleCallableMediaStreamPrivate *priv; }; void example_callable_media_stream_close (ExampleCallableMediaStream *self); gboolean example_callable_media_stream_change_direction ( ExampleCallableMediaStream *self, TpMediaStreamDirection direction, GError **error); void example_callable_media_stream_accept_proposed_direction ( ExampleCallableMediaStream *self); void example_callable_media_stream_connect (ExampleCallableMediaStream *self); /* This controls receiving emulated network events, so it wouldn't exist in * a real connection manager */ void example_callable_media_stream_simulate_contact_agreed_to_send ( ExampleCallableMediaStream *self); void example_callable_media_stream_receive_direction_request ( ExampleCallableMediaStream *self, TpMediaStreamDirection direction); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/callable/connection-manager.c0000644000175100017520000000661412530423576026230 0ustar00kaffeinekaffeine00000000000000/* * manager.c - an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "connection-manager.h" #include #include #include #include "conn.h" G_DEFINE_TYPE (ExampleCallableConnectionManager, example_callable_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) struct _ExampleCallableConnectionManagerPrivate { int dummy; }; static void example_callable_connection_manager_init ( ExampleCallableConnectionManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, ExampleCallableConnectionManagerPrivate); } typedef struct { gchar *account; guint simulation_delay; } ExampleParams; static gboolean account_param_filter (const TpCMParamSpec *paramspec, GValue *value, GError **error) { const gchar *id = g_value_get_string (value); g_value_take_string (value, example_callable_normalize_contact (NULL, id, NULL, error)); if (g_value_get_string (value) == NULL) return FALSE; return TRUE; } #include "_gen/param-spec-struct.h" static gpointer alloc_params (void) { ExampleParams *params = g_slice_new0 (ExampleParams); params->simulation_delay = 1000; return params; } static void free_params (gpointer p) { ExampleParams *params = p; g_free (params->account); g_slice_free (ExampleParams, params); } static const TpCMProtocolSpec example_protocols[] = { { "example", example_callable_example_params, alloc_params, free_params }, { NULL, NULL } }; static TpBaseConnection * new_connection (TpBaseConnectionManager *self, const gchar *proto, TpIntSet *params_present, gpointer parsed_params, GError **error) { ExampleParams *params = parsed_params; ExampleCallableConnection *conn; conn = EXAMPLE_CALLABLE_CONNECTION (g_object_new (EXAMPLE_TYPE_CALLABLE_CONNECTION, "account", params->account, "simulation-delay", params->simulation_delay, "protocol", proto, NULL)); return (TpBaseConnection *) conn; } static void example_callable_connection_manager_class_init ( ExampleCallableConnectionManagerClass *klass) { TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; g_type_class_add_private (klass, sizeof (ExampleCallableConnectionManagerPrivate)); base_class->new_connection = new_connection; base_class->cm_dbus_name = "example_callable"; base_class->protocol_params = example_protocols; } telepathy-qt-0.9.6.1/tests/lib/glib/callable/connection-manager.h0000644000175100017520000000552112530423576026231 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __EXAMPLE_CALLABLE_CONNECTION_MANAGER_H__ #define __EXAMPLE_CALLABLE_CONNECTION_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleCallableConnectionManager ExampleCallableConnectionManager; typedef struct _ExampleCallableConnectionManagerPrivate ExampleCallableConnectionManagerPrivate; typedef struct _ExampleCallableConnectionManagerClass ExampleCallableConnectionManagerClass; typedef struct _ExampleCallableConnectionManagerClassPrivate ExampleCallableConnectionManagerClassPrivate; struct _ExampleCallableConnectionManagerClass { TpBaseConnectionManagerClass parent_class; ExampleCallableConnectionManagerClassPrivate *priv; }; struct _ExampleCallableConnectionManager { TpBaseConnectionManager parent; ExampleCallableConnectionManagerPrivate *priv; }; GType example_callable_connection_manager_get_type (void); /* TYPE MACROS */ #define EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER \ (example_callable_connection_manager_get_type ()) #define EXAMPLE_CALLABLE_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, \ ExampleCallableConnectionManager)) #define EXAMPLE_CALLABLE_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, \ ExampleCallableConnectionManagerClass)) #define EXAMPLE_IS_CALLABLE_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER)) #define EXAMPLE_IS_CALLABLE_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER)) #define EXAMPLE_CALLABLE_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, \ ExampleCallableConnectionManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/callable/CMakeLists.txt0000644000175100017520000000110312530423576025041 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) set(example_cm_callable_SRCS conn.c conn.h connection-manager.c connection-manager.h media-channel.c media-channel.h media-manager.c media-manager.h media-stream.c media-stream.h) add_library(example-cm-callable STATIC ${example_cm_callable_SRCS}) target_link_libraries(example-cm-callable ${TPGLIB_LIBRARIES}) tpqt_generate_manager_file(${CMAKE_CURRENT_SOURCE_DIR}/manager-file.py example_callable.manager connection-manager.c) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/callable/conn.c0000644000175100017520000003104612530423576023413 0ustar00kaffeinekaffeine00000000000000/* * conn.c - an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "conn.h" #include #include #include #include #include #include "media-manager.h" G_DEFINE_TYPE_WITH_CODE (ExampleCallableConnection, example_callable_connection, TP_TYPE_BASE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, tp_contacts_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, tp_presence_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, tp_presence_mixin_simple_presence_iface_init)) enum { PROP_ACCOUNT = 1, PROP_SIMULATION_DELAY, N_PROPS }; enum { SIGNAL_AVAILABLE, N_SIGNALS }; static guint signals[N_SIGNALS] = { 0 }; struct _ExampleCallableConnectionPrivate { gchar *account; guint simulation_delay; gboolean away; gchar *presence_message; }; static void example_callable_connection_init (ExampleCallableConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALLABLE_CONNECTION, ExampleCallableConnectionPrivate); self->priv->away = FALSE; self->priv->presence_message = g_strdup (""); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_value_dup_string (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void finalize (GObject *object) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); tp_contacts_mixin_finalize (object); g_free (self->priv->account); g_free (self->priv->presence_message); G_OBJECT_CLASS (example_callable_connection_parent_class)->finalize (object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn); return g_strdup_printf ("%s@%p", self->priv->account, self); } gchar * example_callable_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "Contact ID must not be empty"); return NULL; } return g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, example_callable_normalize_contact, NULL); } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn); GPtrArray *ret = g_ptr_array_sized_new (1); g_ptr_array_add (ret, g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, "connection", conn, "simulation-delay", self->priv->simulation_delay, NULL)); return ret; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished, but here * we can do it immediately. */ conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, error); if (conn->self_handle == 0) return FALSE; tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void shut_down (TpBaseConnection *conn) { /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished, but here * we can do it immediately. */ tp_base_connection_finish_shutdown (conn); } static void constructed (GObject *object) { TpBaseConnection *base = TP_BASE_CONNECTION (object); void (*chain_up) (GObject *) = G_OBJECT_CLASS (example_callable_connection_parent_class)->constructed; if (chain_up != NULL) chain_up (object); tp_contacts_mixin_init (object, G_STRUCT_OFFSET (ExampleCallableConnection, contacts_mixin)); tp_base_connection_register_with_contacts_mixin (base); tp_presence_mixin_init (object, G_STRUCT_OFFSET (ExampleCallableConnection, presence_mixin)); tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); } static gboolean status_available (GObject *object, guint index_) { TpBaseConnection *base = TP_BASE_CONNECTION (object); if (base->status != TP_CONNECTION_STATUS_CONNECTED) return FALSE; return TRUE; } static GHashTable * get_contact_statuses (GObject *object, const GArray *contacts, GError **error) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); guint i; GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) tp_presence_status_free); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, guint, i); ExampleCallablePresence presence; GHashTable *parameters; parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); /* we know our own status from the connection; for this example CM, * everyone else's status is assumed to be "available" */ if (contact == base->self_handle) { presence = (self->priv->away ? EXAMPLE_CALLABLE_PRESENCE_AWAY : EXAMPLE_CALLABLE_PRESENCE_AVAILABLE); if (self->priv->presence_message[0] != '\0') g_hash_table_insert (parameters, "message", tp_g_value_slice_new_string (self->priv->presence_message)); } else { presence = EXAMPLE_CALLABLE_PRESENCE_AVAILABLE; } g_hash_table_insert (result, GUINT_TO_POINTER (contact), tp_presence_status_new (presence, parameters)); g_hash_table_destroy (parameters); } return result; } static gboolean set_own_status (GObject *object, const TpPresenceStatus *status, GError **error) { ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); GHashTable *presences; const gchar *message = ""; if (status->optional_arguments != NULL) { GValue *v = g_hash_table_lookup (status->optional_arguments, "message"); if (v != NULL && G_VALUE_HOLDS_STRING (v)) { message = g_value_get_string (v); if (message == NULL) message = ""; } } if (status->index == EXAMPLE_CALLABLE_PRESENCE_AWAY) { if (self->priv->away && !tp_strdiff (message, self->priv->presence_message)) return TRUE; self->priv->away = TRUE; } else { if (!self->priv->away && !tp_strdiff (message, self->priv->presence_message)) return TRUE; self->priv->away = FALSE; } g_free (self->priv->presence_message); self->priv->presence_message = g_strdup (message); presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), (gpointer) status); tp_presence_mixin_emit_presence_update (object, presences); g_hash_table_destroy (presences); if (!self->priv->away) { g_signal_emit (self, signals[SIGNAL_AVAILABLE], 0, message); } return TRUE; } static const TpPresenceStatusOptionalArgumentSpec can_have_message[] = { { "message", "s", NULL, NULL }, { NULL } }; /* Must be kept in sync with ExampleCallablePresence enum in header */ static const TpPresenceStatusSpec presence_statuses[] = { { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, can_have_message }, { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, can_have_message }, { NULL } }; static void example_callable_connection_class_init ( ExampleCallableConnectionClass *klass) { static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, NULL }; TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (ExampleCallableConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_managers = create_channel_managers; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); /* Used in the media manager, to simulate an incoming call when we become * available */ signals[SIGNAL_AVAILABLE] = g_signal_new ("available", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); tp_contacts_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleCallableConnectionClass, contacts_mixin)); tp_presence_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleCallableConnectionClass, presence_mixin), status_available, get_contact_statuses, set_own_status, presence_statuses); tp_presence_mixin_simple_presence_init_dbus_properties (object_class); } telepathy-qt-0.9.6.1/tests/lib/glib/callable/conn.h0000644000175100017520000000524012530423576023415 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CALLABLE_CONN_H__ #define __EXAMPLE_CALLABLE_CONN_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _ExampleCallableConnection ExampleCallableConnection; typedef struct _ExampleCallableConnectionPrivate ExampleCallableConnectionPrivate; typedef struct _ExampleCallableConnectionClass ExampleCallableConnectionClass; typedef struct _ExampleCallableConnectionClassPrivate ExampleCallableConnectionClassPrivate; struct _ExampleCallableConnectionClass { TpBaseConnectionClass parent_class; TpPresenceMixinClass presence_mixin; TpContactsMixinClass contacts_mixin; ExampleCallableConnectionClassPrivate *priv; }; struct _ExampleCallableConnection { TpBaseConnection parent; TpPresenceMixin presence_mixin; TpContactsMixin contacts_mixin; ExampleCallableConnectionPrivate *priv; }; GType example_callable_connection_get_type (void); #define EXAMPLE_TYPE_CALLABLE_CONNECTION \ (example_callable_connection_get_type ()) #define EXAMPLE_CALLABLE_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION, \ ExampleCallableConnection)) #define EXAMPLE_CALLABLE_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION, \ ExampleCallableConnectionClass)) #define EXAMPLE_IS_CALLABLE_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION)) #define EXAMPLE_IS_CALLABLE_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION)) #define EXAMPLE_CALLABLE_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION, \ ExampleCallableConnectionClass)) gchar *example_callable_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error); /* Must be kept in sync with the array presence_statuses in conn.c */ typedef enum { EXAMPLE_CALLABLE_PRESENCE_OFFLINE = 0, EXAMPLE_CALLABLE_PRESENCE_UNKNOWN, EXAMPLE_CALLABLE_PRESENCE_ERROR, EXAMPLE_CALLABLE_PRESENCE_AWAY, EXAMPLE_CALLABLE_PRESENCE_AVAILABLE } ExampleCallablePresence; G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/callable/manager-file.py0000644000175100017520000000115612530423576025212 0ustar00kaffeinekaffeine00000000000000# Input for tools/manager-file.py MANAGER = 'example_callable' PARAMS = { 'example' : { 'account': { 'dtype': 's', 'flags': 'required register', 'filter': 'account_param_filter', # 'filter_data': 'NULL', # 'default': ..., # 'struct_field': '...', # 'setter_data': 'NULL', }, 'simulation-delay': { 'dtype': 'u', 'default': 1000, }, }, } STRUCTS = { 'example': 'ExampleParams' } telepathy-qt-0.9.6.1/tests/lib/glib/callable/media-channel.c0000644000175100017520000013162612530423576025150 0ustar00kaffeinekaffeine00000000000000/* * media-channel.c - an example 1-1 streamed media call. * * For simplicity, this channel emulates a device with its own * audio/video user interface, like a video-equipped form of the phones * manipulated by telepathy-snom or gnome-phone-manager. * * As a result, this channel does not have the MediaSignalling interface, and * clients should not attempt to do their own streaming using * telepathy-farsight, telepathy-stream-engine or maemo-stream-engine. * * In practice, nearly all connection managers also have the MediaSignalling * interface on their streamed media channels. Usage for those CMs is the * same, except that whichever client is the primary handler for the channel * should also hand the channel over to telepathy-farsight or * telepathy-stream-engine to implement the actual streaming. * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "media-channel.h" #include "media-stream.h" #include #include #include #include #include #include #include #include static void media_iface_init (gpointer iface, gpointer data); static void channel_iface_init (gpointer iface, gpointer data); static void hold_iface_init (gpointer iface, gpointer data); static void dtmf_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (ExampleCallableMediaChannel, example_callable_media_channel, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_STREAMED_MEDIA, media_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, tp_group_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_HOLD, hold_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_DTMF, dtmf_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL)) enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_CHANNEL_DESTROYED, PROP_CHANNEL_PROPERTIES, PROP_SIMULATION_DELAY, PROP_INITIAL_AUDIO, PROP_INITIAL_VIDEO, N_PROPS }; enum { SIGNAL_CALL_TERMINATED, N_SIGNALS }; typedef enum { PROGRESS_NONE, PROGRESS_CALLING, PROGRESS_ACTIVE, PROGRESS_ENDED } ExampleCallableCallProgress; static guint signals[N_SIGNALS] = { 0 }; struct _ExampleCallableMediaChannelPrivate { TpBaseConnection *conn; gchar *object_path; TpHandle handle; TpHandle initiator; ExampleCallableCallProgress progress; guint simulation_delay; guint next_stream_id; GHashTable *streams; guint hold_state; guint hold_state_reason; gboolean locally_requested; gboolean initial_audio; gboolean initial_video; gboolean disposed; }; static const char * example_callable_media_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_GROUP, TP_IFACE_CHANNEL_INTERFACE_HOLD, TP_IFACE_CHANNEL_INTERFACE_DTMF, NULL }; static void example_callable_media_channel_init (ExampleCallableMediaChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, ExampleCallableMediaChannelPrivate); self->priv->next_stream_id = 1; self->priv->streams = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref); self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE; } static ExampleCallableMediaStream *example_callable_media_channel_add_stream ( ExampleCallableMediaChannel *self, TpMediaStreamType media_type, gboolean locally_requested); static void constructed (GObject *object) { void (*chain_up) (GObject *) = ((GObjectClass *) example_callable_media_channel_parent_class)->constructed; ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); TpIntSet *members; TpIntSet *local_pending; if (chain_up != NULL) chain_up (object); tp_dbus_daemon_register_object ( tp_base_connection_get_dbus_daemon (self->priv->conn), self->priv->object_path, self); tp_group_mixin_init (object, G_STRUCT_OFFSET (ExampleCallableMediaChannel, group), contact_repo, self->priv->conn->self_handle); /* Initially, the channel contains the initiator as a member; they are also * the actor for the change that adds any initial members. */ members = tp_intset_new_containing (self->priv->initiator); if (self->priv->locally_requested) { /* Nobody is locally pending. The remote peer will turn up in * remote-pending state when we actually contact them, which is done * in RequestStreams */ self->priv->progress = PROGRESS_NONE; local_pending = NULL; } else { /* This is an incoming call, so the self-handle is locally * pending, to indicate that we need to answer. */ self->priv->progress = PROGRESS_CALLING; local_pending = tp_intset_new_containing (self->priv->conn->self_handle); } tp_group_mixin_change_members (object, "", members /* added */, NULL /* nobody removed */, local_pending, /* added to local-pending */ NULL /* nobody added to remote-pending */, self->priv->initiator /* actor */, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (members); if (local_pending != NULL) tp_intset_destroy (local_pending); /* We don't need to allow adding or removing members to this Group in ways * that need flags set, so the only flag we set is to say we support the * Properties interface to the Group. * * It doesn't make sense to add anyone to the Group, since we already know * who we're going to call (or were called by). The only call to AddMembers * we need to support is to move ourselves from local-pending to member in * the incoming call case, and that's always allowed anyway. * * (Connection managers that support the various backwards-compatible * ways to make an outgoing StreamedMedia channel have to support adding the * peer to remote-pending, but that has no actual effect other than to * obscure what's going on; in this one, there's no need to support that * usage.) * * Similarly, it doesn't make sense to remove anyone from this Group apart * from ourselves (to hang up), and removing the SelfHandle is always * allowed anyway. */ tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_PROPERTIES, 0); /* Future versions of telepathy-spec will allow a channel request to * say "initially include an audio stream" and/or "initially include a video * stream", which would be represented like this; we don't support this * usage yet, though, so ExampleCallableMediaManager will never invoke * our constructor in this way. */ g_assert (!(self->priv->locally_requested && self->priv->initial_audio)); g_assert (!(self->priv->locally_requested && self->priv->initial_video)); if (!self->priv->locally_requested) { /* the caller has almost certainly asked us for some streams - there's * not much point in having a call otherwise */ if (self->priv->initial_audio) { g_message ("Channel initially has an audio stream"); example_callable_media_channel_add_stream (self, TP_MEDIA_STREAM_TYPE_AUDIO, FALSE); } if (self->priv->initial_video) { g_message ("Channel initially has a video stream"); example_callable_media_channel_add_stream (self, TP_MEDIA_STREAM_TYPE_VIDEO, FALSE); } } } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; case PROP_TARGET_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->priv->handle)); } break; case PROP_REQUESTED: g_value_set_boolean (value, self->priv->locally_requested); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, self->priv->initiator); break; case PROP_INITIATOR_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->priv->initiator)); } break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_INTERFACES: g_value_set_boxed (value, example_callable_media_channel_interfaces); break; case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, (self->priv->progress == PROGRESS_ENDED)); break; case PROP_CHANNEL_PROPERTIES: g_value_take_boxed (value, tp_dbus_properties_mixin_make_properties_hash (object, TP_IFACE_CHANNEL, "ChannelType", TP_IFACE_CHANNEL, "TargetHandleType", TP_IFACE_CHANNEL, "TargetHandle", TP_IFACE_CHANNEL, "TargetID", TP_IFACE_CHANNEL, "InitiatorHandle", TP_IFACE_CHANNEL, "InitiatorID", TP_IFACE_CHANNEL, "Requested", TP_IFACE_CHANNEL, "Interfaces", NULL)); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; case PROP_INITIAL_AUDIO: g_value_set_boolean (value, self->priv->initial_audio); break; case PROP_INITIAL_VIDEO: g_value_set_boolean (value, self->priv->initial_video); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_assert (self->priv->object_path == NULL); self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE: /* we don't ref it here because we don't necessarily have access to the * contact repo yet - instead we ref it in the constructor. */ self->priv->handle = g_value_get_uint (value); break; case PROP_INITIATOR_HANDLE: /* likewise */ self->priv->initiator = g_value_get_uint (value); break; case PROP_REQUESTED: self->priv->locally_requested = g_value_get_boolean (value); break; case PROP_HANDLE_TYPE: case PROP_CHANNEL_TYPE: /* these properties are writable in the interface, but not actually * meaningfully changable on this channel, so we do nothing */ break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; case PROP_INITIAL_AUDIO: self->priv->initial_audio = g_value_get_boolean (value); break; case PROP_INITIAL_VIDEO: self->priv->initial_video = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void example_callable_media_channel_close (ExampleCallableMediaChannel *self, TpHandle actor, TpChannelGroupChangeReason reason) { if (self->priv->progress != PROGRESS_ENDED) { TpIntSet *everyone; self->priv->progress = PROGRESS_ENDED; if (actor == self->group.self_handle) { const gchar *send_reason; /* In a real protocol these would be some sort of real protocol * construct, like an XMPP error stanza or a SIP error code */ switch (reason) { case TP_CHANNEL_GROUP_CHANGE_REASON_BUSY: send_reason = ""; break; case TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER: send_reason = ""; break; default: send_reason = ""; } g_message ("SIGNALLING: send: Terminating call: %s", send_reason); } everyone = tp_intset_new_containing (self->priv->handle); tp_intset_add (everyone, self->group.self_handle); tp_group_mixin_change_members ((GObject *) self, "", NULL /* nobody added */, everyone /* removed */, NULL /* nobody locally pending */, NULL /* nobody remotely pending */, actor, reason); tp_intset_destroy (everyone); g_signal_emit (self, signals[SIGNAL_CALL_TERMINATED], 0); tp_svc_channel_emit_closed (self); } } static void dispose (GObject *object) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); if (self->priv->disposed) return; self->priv->disposed = TRUE; g_hash_table_destroy (self->priv->streams); self->priv->streams = NULL; example_callable_media_channel_close (self, self->group.self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); ((GObjectClass *) example_callable_media_channel_parent_class)->dispose (object); } static void finalize (GObject *object) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); g_free (self->priv->object_path); tp_group_mixin_finalize (object); ((GObjectClass *) example_callable_media_channel_parent_class)->finalize (object); } static gboolean add_member (GObject *object, TpHandle member, const gchar *message, GError **error) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); /* In connection managers that supported the RequestChannel method for * streamed media channels, it would be necessary to support adding the * called contact to the members of an outgoing call. However, in this * legacy-free example, we don't support that usage, so the only use for * AddMembers is to accept an incoming call. */ if (member == self->group.self_handle && tp_handle_set_is_member (self->group.local_pending, member)) { /* We're in local-pending, move to members to accept. */ TpIntSet *set = tp_intset_new_containing (member); GHashTableIter iter; gpointer v; g_assert (self->priv->progress == PROGRESS_CALLING); g_message ("SIGNALLING: send: Accepting incoming call from %s", tp_handle_inspect (contact_repo, self->priv->handle)); self->priv->progress = PROGRESS_ACTIVE; tp_group_mixin_change_members (object, "", set /* added */, NULL /* nobody removed */, NULL /* nobody added to local pending */, NULL /* nobody added to remote pending */, member /* actor */, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); g_hash_table_iter_init (&iter, self->priv->streams); while (g_hash_table_iter_next (&iter, NULL, &v)) { /* we accept the proposed stream direction... */ example_callable_media_stream_accept_proposed_direction (v); /* ... and the stream tries to connect */ example_callable_media_stream_connect (v); } return TRUE; } /* Otherwise it's a meaningless request, so reject it. */ g_set_error (error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Cannot add handle %u to channel", member); return FALSE; } static gboolean remove_member_with_reason (GObject *object, TpHandle member, const gchar *message, guint reason, GError **error) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); /* The TpGroupMixin won't call this unless removing the member is allowed * by the group flags, which in this case means it must be our own handle * (because the other user never appears in local-pending). */ g_assert (member == self->group.self_handle); example_callable_media_channel_close (self, self->group.self_handle, reason); return TRUE; } static void example_callable_media_channel_class_init (ExampleCallableMediaChannelClass *klass) { static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { NULL } }; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleCallableMediaChannelPrivate)); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, "channel-destroyed"); g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, "channel-properties"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "The string obtained by inspecting the target handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); param_spec = g_param_spec_boolean ("initial-audio", "Initial audio?", "True if this channel had an audio stream when first announced", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIAL_AUDIO, param_spec); param_spec = g_param_spec_boolean ("initial-video", "Initial video?", "True if this channel had a video stream when first announced", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIAL_VIDEO, param_spec); signals[SIGNAL_CALL_TERMINATED] = g_signal_new ("call-terminated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleCallableMediaChannelClass, dbus_properties_class)); tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleCallableMediaChannelClass, group_class), add_member, NULL); tp_group_mixin_class_allow_self_removal (object_class); tp_group_mixin_class_set_remove_with_reason_func (object_class, remove_member_with_reason); tp_group_mixin_init_dbus_properties (object_class); } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); example_callable_media_channel_close (self, self->group.self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, self->priv->handle); } static void channel_get_interfaces (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, example_callable_media_channel_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void media_list_streams (TpSvcChannelTypeStreamedMedia *iface, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); GPtrArray *array = g_ptr_array_sized_new (g_hash_table_size ( self->priv->streams)); GHashTableIter iter; gpointer v; g_hash_table_iter_init (&iter, self->priv->streams); while (g_hash_table_iter_next (&iter, NULL, &v)) { ExampleCallableMediaStream *stream = v; GValueArray *va; g_object_get (stream, "stream-info", &va, NULL); g_ptr_array_add (array, va); } tp_svc_channel_type_streamed_media_return_from_list_streams (context, array); g_ptr_array_foreach (array, (GFunc) g_value_array_free, NULL); g_ptr_array_free (array, TRUE); } static void media_remove_streams (TpSvcChannelTypeStreamedMedia *iface, const GArray *stream_ids, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); guint i; for (i = 0; i < stream_ids->len; i++) { guint id = g_array_index (stream_ids, guint, i); if (g_hash_table_lookup (self->priv->streams, GUINT_TO_POINTER (id)) == NULL) { GError *error = g_error_new (TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "No stream with ID %u in this channel", id); dbus_g_method_return_error (context, error); g_error_free (error); return; } } for (i = 0; i < stream_ids->len; i++) { guint id = g_array_index (stream_ids, guint, i); example_callable_media_stream_close ( g_hash_table_lookup (self->priv->streams, GUINT_TO_POINTER (id))); } tp_svc_channel_type_streamed_media_return_from_remove_streams (context); } static void media_request_stream_direction (TpSvcChannelTypeStreamedMedia *iface, guint stream_id, guint stream_direction, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); ExampleCallableMediaStream *stream = g_hash_table_lookup ( self->priv->streams, GUINT_TO_POINTER (stream_id)); GError *error = NULL; if (stream == NULL) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "No stream with ID %u in this channel", stream_id); goto error; } if (stream_direction > TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Stream direction %u is not valid", stream_direction); goto error; } /* In some protocols, streams cannot be neither sending nor receiving, so * if a stream is set to TP_MEDIA_STREAM_DIRECTION_NONE, this is equivalent * to removing it with RemoveStreams. (This is true in XMPP, for instance.) * * If this was the case, there would be code like this here: * * if (stream_direction == TP_MEDIA_STREAM_DIRECTION_NONE) * { * example_callable_media_stream_close (stream); * tp_svc_channel_type_streamed_media_return_from_request_stream_direction ( * context); * return; * } * * However, for this example we'll emulate a protocol where streams can be * directionless. */ if (!example_callable_media_stream_change_direction (stream, stream_direction, &error)) goto error; tp_svc_channel_type_streamed_media_return_from_request_stream_direction ( context); return; error: dbus_g_method_return_error (context, error); g_error_free (error); } static void stream_removed_cb (ExampleCallableMediaStream *stream, ExampleCallableMediaChannel *self) { guint id; g_object_get (stream, "id", &id, NULL); g_signal_handlers_disconnect_matched (stream, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, self); g_hash_table_remove (self->priv->streams, GUINT_TO_POINTER (id)); tp_svc_channel_type_streamed_media_emit_stream_removed (self, id); if (g_hash_table_size (self->priv->streams) == 0) { /* no streams left, so the call terminates */ example_callable_media_channel_close (self, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); } } static void stream_direction_changed_cb (ExampleCallableMediaStream *stream, ExampleCallableMediaChannel *self) { guint id, direction, pending; g_object_get (stream, "id", &id, "direction", &direction, "pending-send", &pending, NULL); tp_svc_channel_type_streamed_media_emit_stream_direction_changed (self, id, direction, pending); } static void stream_state_changed_cb (ExampleCallableMediaStream *stream, GParamSpec *spec G_GNUC_UNUSED, ExampleCallableMediaChannel *self) { guint id, state; g_object_get (stream, "id", &id, "state", &state, NULL); tp_svc_channel_type_streamed_media_emit_stream_state_changed (self, id, state); } static gboolean simulate_contact_ended_cb (gpointer p) { ExampleCallableMediaChannel *self = p; /* if the call has been cancelled while we were waiting for the * contact to do so, do nothing! */ if (self->priv->progress == PROGRESS_ENDED) return FALSE; g_message ("SIGNALLING: receive: call terminated: "); example_callable_media_channel_close (self, self->priv->handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); return FALSE; } static gboolean simulate_contact_answered_cb (gpointer p) { ExampleCallableMediaChannel *self = p; TpIntSet *peer_set; GHashTableIter iter; gpointer v; TpHandleRepoIface *contact_repo; const gchar *peer; /* if the call has been cancelled while we were waiting for the * contact to answer, do nothing */ if (self->priv->progress == PROGRESS_ENDED) return FALSE; /* otherwise, we're waiting for a response from the contact, which now * arrives */ g_assert (self->priv->progress == PROGRESS_CALLING); g_message ("SIGNALLING: receive: contact answered our call"); self->priv->progress = PROGRESS_ACTIVE; peer_set = tp_intset_new_containing (self->priv->handle); tp_group_mixin_change_members ((GObject *) self, "", peer_set /* added */, NULL /* nobody removed */, NULL /* nobody added to local-pending */, NULL /* nobody added to remote-pending */, self->priv->handle /* actor */, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (peer_set); g_hash_table_iter_init (&iter, self->priv->streams); while (g_hash_table_iter_next (&iter, NULL, &v)) { /* remote contact accepts our proposed stream direction... */ example_callable_media_stream_simulate_contact_agreed_to_send (v); /* ... and the stream tries to connect */ example_callable_media_stream_connect (v); } contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); peer = tp_handle_inspect (contact_repo, self->priv->handle); /* If the contact's ID contains the magic string "(terminate)", simulate * them hanging up after a moment. */ if (strstr (peer, "(terminate)") != NULL) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_ended_cb, g_object_ref (self), g_object_unref); } return FALSE; } static gboolean simulate_contact_busy_cb (gpointer p) { ExampleCallableMediaChannel *self = p; /* if the call has been cancelled while we were waiting for the * contact to answer, do nothing */ if (self->priv->progress == PROGRESS_ENDED) return FALSE; /* otherwise, we're waiting for a response from the contact, which now * arrives */ g_assert (self->priv->progress == PROGRESS_CALLING); g_message ("SIGNALLING: receive: call terminated: "); example_callable_media_channel_close (self, self->priv->handle, TP_CHANNEL_GROUP_CHANGE_REASON_BUSY); return FALSE; } static ExampleCallableMediaStream * example_callable_media_channel_add_stream (ExampleCallableMediaChannel *self, TpMediaStreamType media_type, gboolean locally_requested) { ExampleCallableMediaStream *stream; guint id = self->priv->next_stream_id++; guint state, direction, pending_send; if (locally_requested) { g_message ("SIGNALLING: send: new %s stream", media_type == TP_MEDIA_STREAM_TYPE_AUDIO ? "audio" : "video"); } stream = g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, "channel", self, "id", id, "handle", self->priv->handle, "type", media_type, "locally-requested", locally_requested, "simulation-delay", self->priv->simulation_delay, NULL); g_hash_table_insert (self->priv->streams, GUINT_TO_POINTER (id), stream); tp_svc_channel_type_streamed_media_emit_stream_added (self, id, self->priv->handle, media_type); g_object_get (stream, "state", &state, "direction", &direction, "pending-send", &pending_send, NULL); /* this is the "implicit" initial state mandated by telepathy-spec */ if (state != TP_MEDIA_STREAM_STATE_DISCONNECTED) { tp_svc_channel_type_streamed_media_emit_stream_state_changed (self, id, state); } /* this is the "implicit" initial direction mandated by telepathy-spec */ if (direction != TP_MEDIA_STREAM_DIRECTION_RECEIVE || pending_send != TP_MEDIA_STREAM_PENDING_LOCAL_SEND) { tp_svc_channel_type_streamed_media_emit_stream_direction_changed (self, id, direction, pending_send); } g_signal_connect (stream, "removed", G_CALLBACK (stream_removed_cb), self); g_signal_connect (stream, "notify::state", G_CALLBACK (stream_state_changed_cb), self); g_signal_connect (stream, "direction-changed", G_CALLBACK (stream_direction_changed_cb), self); if (self->priv->progress == PROGRESS_ACTIVE) { example_callable_media_stream_connect (stream); } return stream; } static void media_request_streams (TpSvcChannelTypeStreamedMedia *iface, guint contact_handle, const GArray *media_types, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); GPtrArray *array; guint i; GError *error = NULL; if (!tp_handle_is_valid (contact_repo, contact_handle, &error)) goto error; if (contact_handle != self->priv->handle) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "This channel is for handle #%u, we can't make a stream to #%u", self->priv->handle, contact_handle); goto error; } if (self->priv->progress == PROGRESS_ENDED) { g_set_error (&error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Call has terminated"); goto error; } for (i = 0; i < media_types->len; i++) { guint media_type = g_array_index (media_types, guint, i); switch (media_type) { case TP_MEDIA_STREAM_TYPE_AUDIO: case TP_MEDIA_STREAM_TYPE_VIDEO: break; default: g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "%u is not a valid Media_Stream_Type", media_type); goto error; } } array = g_ptr_array_sized_new (media_types->len); for (i = 0; i < media_types->len; i++) { guint media_type = g_array_index (media_types, guint, i); ExampleCallableMediaStream *stream; GValueArray *info; if (self->priv->progress < PROGRESS_CALLING) { TpIntSet *peer_set = tp_intset_new_containing (self->priv->handle); const gchar *peer; g_message ("SIGNALLING: send: new streamed media call"); self->priv->progress = PROGRESS_CALLING; tp_group_mixin_change_members ((GObject *) self, "", NULL /* nobody added */, NULL /* nobody removed */, NULL /* nobody added to local-pending */, peer_set /* added to remote-pending */, self->group.self_handle /* actor */, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (peer_set); /* In this example there is no real contact, so just simulate them * answering after a short time - unless the contact's name * contains "(no answer)" or "(busy)" */ peer = tp_handle_inspect (contact_repo, self->priv->handle); if (strstr (peer, "(busy)") != NULL) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_busy_cb, g_object_ref (self), g_object_unref); } else if (strstr (peer, "(no answer)") != NULL) { /* do nothing - the call just rings forever */ } else { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_contact_answered_cb, g_object_ref (self), g_object_unref); } } stream = example_callable_media_channel_add_stream (self, media_type, TRUE); g_object_get (stream, "stream-info", &info, NULL); g_ptr_array_add (array, info); } tp_svc_channel_type_streamed_media_return_from_request_streams (context, array); g_boxed_free (TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, array); return; error: dbus_g_method_return_error (context, error); g_error_free (error); } static void media_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeStreamedMediaClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_type_streamed_media_implement_##x (klass, media_##x) IMPLEMENT (list_streams); IMPLEMENT (remove_streams); IMPLEMENT (request_stream_direction); IMPLEMENT (request_streams); #undef IMPLEMENT } static gboolean simulate_hold (gpointer p) { ExampleCallableMediaChannel *self = p; self->priv->hold_state = TP_LOCAL_HOLD_STATE_HELD; g_message ("SIGNALLING: hold state changed to held"); tp_svc_channel_interface_hold_emit_hold_state_changed (self, self->priv->hold_state, self->priv->hold_state_reason); return FALSE; } static gboolean simulate_unhold (gpointer p) { ExampleCallableMediaChannel *self = p; self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; g_message ("SIGNALLING: hold state changed to unheld"); tp_svc_channel_interface_hold_emit_hold_state_changed (self, self->priv->hold_state, self->priv->hold_state_reason); return FALSE; } static gboolean simulate_inability_to_unhold (gpointer p) { ExampleCallableMediaChannel *self = p; self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; g_message ("SIGNALLING: unable to unhold - hold state changed to " "pending hold"); tp_svc_channel_interface_hold_emit_hold_state_changed (self, self->priv->hold_state, self->priv->hold_state_reason); /* hold again */ g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, simulate_hold, g_object_ref (self), g_object_unref); return FALSE; } static void hold_get_hold_state (TpSvcChannelInterfaceHold *iface, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); tp_svc_channel_interface_hold_return_from_get_hold_state (context, self->priv->hold_state, self->priv->hold_state_reason); } static void hold_request_hold (TpSvcChannelInterfaceHold *iface, gboolean hold, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; const gchar *peer; GSourceFunc callback; if ((hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_HELD) || (!hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)) { tp_svc_channel_interface_hold_return_from_request_hold (context); return; } peer = tp_handle_inspect (contact_repo, self->priv->handle); if (!hold && strstr (peer, "(no unhold)") != NULL) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "unable to unhold"); goto error; } self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; if (hold) { self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; callback = simulate_hold; } else { self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_UNHOLD; peer = tp_handle_inspect (contact_repo, self->priv->handle); if (strstr (peer, "(inability to unhold)") != NULL) { callback = simulate_inability_to_unhold; } else { callback = simulate_unhold; } } g_message ("SIGNALLING: hold state changed to pending %s", (hold ? "hold" : "unhold")); tp_svc_channel_interface_hold_emit_hold_state_changed (iface, self->priv->hold_state, self->priv->hold_state_reason); g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, callback, g_object_ref (self), g_object_unref); tp_svc_channel_interface_hold_return_from_request_hold (context); return; error: dbus_g_method_return_error (context, error); g_error_free (error); } void hold_iface_init (gpointer iface, gpointer data) { TpSvcChannelInterfaceHoldClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_hold_implement_##x (klass, hold_##x) IMPLEMENT (get_hold_state); IMPLEMENT (request_hold); #undef IMPLEMENT } static void dtmf_start_tone (TpSvcChannelInterfaceDTMF *iface, guint stream_id, guchar event, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); ExampleCallableMediaStream *stream = g_hash_table_lookup (self->priv->streams, GUINT_TO_POINTER (stream_id)); GError *error = NULL; guint media_type; if (stream == NULL) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "No stream with ID %u in this channel", stream_id); goto error; } g_object_get (G_OBJECT (stream), "type", &media_type, NULL); if (media_type != TP_MEDIA_STREAM_TYPE_AUDIO) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "DTMF is only supported by audio streams"); goto error; } tp_svc_channel_interface_dtmf_return_from_start_tone (context); return; error: dbus_g_method_return_error (context, error); g_error_free (error); } static void dtmf_stop_tone (TpSvcChannelInterfaceDTMF *iface, guint stream_id, DBusGMethodInvocation *context) { ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); ExampleCallableMediaStream *stream = g_hash_table_lookup (self->priv->streams, GUINT_TO_POINTER (stream_id)); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); GError *error = NULL; const gchar *peer; guint media_type; if (stream == NULL) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "No stream with ID %u in this channel", stream_id); goto error; } g_object_get (G_OBJECT (stream), "type", &media_type, NULL); if (media_type != TP_MEDIA_STREAM_TYPE_AUDIO) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "DTMF is only supported by audio streams"); goto error; } peer = tp_handle_inspect (contact_repo, self->priv->handle); if (strstr (peer, "(no continuous tone)") != NULL) { g_set_error (&error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Continuous tones are not supported by this stream"); goto error; } tp_svc_channel_interface_dtmf_return_from_stop_tone (context); return; error: dbus_g_method_return_error (context, error); g_error_free (error); } static void dtmf_iface_init (gpointer iface, gpointer data) { TpSvcChannelInterfaceDTMFClass *klass = iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_dtmf_implement_##x (klass, dtmf_##x) IMPLEMENT (start_tone); IMPLEMENT (stop_tone); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/callable/media-channel.h0000644000175100017520000000535312530423576025152 0ustar00kaffeinekaffeine00000000000000/* * media-channel.h - header for an example channel * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __EXAMPLE_CALLABLE_MEDIA_CHANNEL_H__ #define __EXAMPLE_CALLABLE_MEDIA_CHANNEL_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleCallableMediaChannel ExampleCallableMediaChannel; typedef struct _ExampleCallableMediaChannelPrivate ExampleCallableMediaChannelPrivate; typedef struct _ExampleCallableMediaChannelClass ExampleCallableMediaChannelClass; typedef struct _ExampleCallableMediaChannelClassPrivate ExampleCallableMediaChannelClassPrivate; GType example_callable_media_channel_get_type (void); #define EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL \ (example_callable_media_channel_get_type ()) #define EXAMPLE_CALLABLE_MEDIA_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, \ ExampleCallableMediaChannel)) #define EXAMPLE_CALLABLE_MEDIA_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, \ ExampleCallableMediaChannelClass)) #define EXAMPLE_IS_CALLABLE_MEDIA_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL)) #define EXAMPLE_IS_CALLABLE_MEDIA_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL)) #define EXAMPLE_CALLABLE_MEDIA_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, \ ExampleCallableMediaChannelClass)) struct _ExampleCallableMediaChannelClass { GObjectClass parent_class; TpGroupMixinClass group_class; TpDBusPropertiesMixinClass dbus_properties_class; ExampleCallableMediaChannelClassPrivate *priv; }; struct _ExampleCallableMediaChannel { GObject parent; TpGroupMixin group; ExampleCallableMediaChannelPrivate *priv; }; G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/captcha-chan.c0000644000175100017520000004171312530423576023233 0ustar00kaffeinekaffeine00000000000000/* * captcha-chan.c - Simple captcha channel * * Copyright (C) 2012 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "captcha-chan.h" #include #include #include #include enum { PROP_METHOD = 1, PROP_RETRY, PROP_STATUS, PROP_ERROR, PROP_ERROR_DETAILS }; struct _TpTestsCaptchaChannelPrivate { TpCaptchaStatus status; TpSocketAccessControl access_control; GHashTable *parameters; gchar *error_string; GHashTable *error_details; gboolean can_retry; gboolean is_retrying; }; static void tp_tests_captcha_channel_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) object; switch (property_id) { case PROP_METHOD: g_value_set_string (value, TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION); break; case PROP_RETRY: g_value_set_boolean (value, self->priv->can_retry); break; case PROP_STATUS: g_value_set_uint (value, self->priv->status); break; case PROP_ERROR: g_value_set_string (value, self->priv->error_string); break; case PROP_ERROR_DETAILS: g_value_set_boxed (value, self->priv->error_details); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void tp_tests_captcha_channel_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) object; switch (property_id) { case PROP_RETRY: self->priv->can_retry = g_value_get_boolean(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void captcha_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (TpTestsCaptchaChannel, tp_tests_captcha_channel, TP_TYPE_BASE_CHANNEL, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_SERVER_AUTHENTICATION, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION, captcha_iface_init); ) /* type definition stuff */ static const char * tp_tests_captcha_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION, NULL }; static void tp_tests_captcha_channel_init (TpTestsCaptchaChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), TP_TESTS_TYPE_CAPTCHA_CHANNEL, TpTestsCaptchaChannelPrivate); } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (tp_tests_captcha_channel_parent_class)->constructor ( type, n_props, props); TpTestsCaptchaChannel *self = TP_TESTS_CAPTCHA_CHANNEL (object); self->priv->status = TP_CAPTCHA_STATUS_LOCAL_PENDING; self->priv->is_retrying = FALSE; self->priv->error_string = NULL; self->priv->error_details = tp_asv_new (NULL, NULL); tp_base_channel_register (TP_BASE_CHANNEL (self)); return object; } static void dispose (GObject *object) { // TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) object; // Free memory here if needed ((GObjectClass *) tp_tests_captcha_channel_parent_class)->dispose ( object); } static void channel_close (TpBaseChannel *channel) { tp_base_channel_destroyed (channel); } static void fill_immutable_properties (TpBaseChannel *chan, GHashTable *properties) { TpBaseChannelClass *klass = TP_BASE_CHANNEL_CLASS ( tp_tests_captcha_channel_parent_class); tp_dbus_properties_mixin_fill_properties_hash ( G_OBJECT (chan), properties, TP_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION, "AuthenticationMethod", TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION, "CanRetryCaptcha", NULL); klass->fill_immutable_properties (chan, properties); } static void tp_tests_captcha_channel_class_init (TpTestsCaptchaChannelClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl server_authentication_props[] = { { "AuthenticationMethod", "authentication-method", NULL }, { NULL, NULL, NULL } }; static TpDBusPropertiesMixinPropImpl captcha_authentication_props[] = { { "CanRetryCaptcha", "can-retry-captcha", NULL }, { "CaptchaStatus", "captcha-status", NULL }, { "CaptchaError", "captcha-error", NULL }, { "CaptchaErrorDetails", "captcha-error-details", NULL }, { NULL } }; object_class->constructor = constructor; object_class->get_property = tp_tests_captcha_channel_get_property; object_class->set_property = tp_tests_captcha_channel_set_property; object_class->dispose = dispose; base_class->channel_type = TP_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION; base_class->target_handle_type = TP_HANDLE_TYPE_NONE; base_class->interfaces = tp_tests_captcha_channel_interfaces; base_class->close = channel_close; base_class->fill_immutable_properties = fill_immutable_properties; param_spec = g_param_spec_string ("authentication-method", "AuthenticationMethod", "the authentication method for this channel", "", G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_METHOD, param_spec); param_spec = g_param_spec_boolean ( "can-retry-captcha", "CanRetryCaptcha", "Whether Captcha can be retried or not.", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_RETRY, param_spec); param_spec = g_param_spec_string ( "captcha-error", "CaptchaError", "error details of the captcha", "", G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ERROR, param_spec); param_spec = g_param_spec_boxed ( "captcha-error-details", "CaptchaErrorDetails", "error details of the captcha", TP_HASH_TYPE_STRING_VARIANT_MAP, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ERROR_DETAILS, param_spec); param_spec = g_param_spec_uint ( "captcha-status", "CaptchaStatus", "state of the captcha", 0, NUM_TP_CAPTCHA_STATUSES - 1, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STATUS, param_spec); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_TYPE_SERVER_AUTHENTICATION, tp_dbus_properties_mixin_getter_gobject_properties, NULL, server_authentication_props); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION, tp_dbus_properties_mixin_getter_gobject_properties, NULL, captcha_authentication_props); g_type_class_add_private (object_class, sizeof (TpTestsCaptchaChannelPrivate)); } static void set_status (TpTestsCaptchaChannel *self, guint status, const gchar *error, GHashTable *error_details) { GPtrArray *changed = g_ptr_array_new (); GHashTable *realerrors = error_details == NULL ? tp_asv_new (NULL, NULL) : error_details; if (self->priv->status != status) { self->priv->status = status; g_ptr_array_add (changed, (gpointer) "CaptchaStatus"); } if (self->priv->error_string != error) { g_free (self->priv->error_string); self->priv->error_string = g_strdup (error); g_ptr_array_add (changed, (gpointer) "CaptchaError"); } if (self->priv->error_details != realerrors) { if (self->priv->error_details != NULL) g_hash_table_unref (self->priv->error_details); self->priv->error_details = realerrors; if (self->priv->error_details != NULL) g_hash_table_ref (self->priv->error_details); g_ptr_array_add (changed, (gpointer) "CaptchaErrorDetails"); } if (changed->len > 0) { g_ptr_array_add (changed, NULL); tp_dbus_properties_mixin_emit_properties_changed (G_OBJECT (self), TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION, (const gchar * const *) changed->pdata); } g_ptr_array_unref (changed); } static void captcha_auth_answer_captchas (TpSvcChannelInterfaceCaptchaAuthentication *iface, GHashTable *answers, DBusGMethodInvocation *context) { TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) iface; const gchar *answer; GError *error; if (self->priv->status != TP_CAPTCHA_STATUS_LOCAL_PENDING) { error = g_error_new (TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Captcha status is in state %u", self->priv->status); dbus_g_method_return_error (context, error); g_error_free (error); return; } set_status(self, TP_CAPTCHA_STATUS_REMOTE_PENDING, NULL, NULL); answer = (const gchar *) g_hash_table_lookup (answers, GUINT_TO_POINTER (42)); if (answer == NULL) { error = g_error_new (TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Missing required challenge ID (%u)", 42); dbus_g_method_return_error (context, error); g_error_free (error); return; } if (tp_str_empty (answer)) { error = g_error_new_literal (TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Empty answer"); dbus_g_method_return_error (context, error); g_error_free (error); return; } if (tp_strdiff (answer, "This is the right answer")) { if (self->priv->can_retry) { set_status(self, TP_CAPTCHA_STATUS_TRY_AGAIN, NULL, NULL); } else { set_status(self, TP_CAPTCHA_STATUS_FAILED, NULL, NULL); } error = g_error_new_literal (TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Wrong answer"); dbus_g_method_return_error (context, error); g_error_free (error); return; } else { set_status(self, TP_CAPTCHA_STATUS_SUCCEEDED, NULL, NULL); } tp_svc_channel_interface_captcha_authentication_return_from_answer_captchas (context); } static void captcha_auth_get_captchas (TpSvcChannelInterfaceCaptchaAuthentication *iface, DBusGMethodInvocation *context) { TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) iface; GPtrArray *infos; GValueArray *info; static const gchar *mime_types_1[] = { "image/png", NULL }; static const gchar *mime_types_2[] = { "lol/wut", NULL }; static const gchar *no_mime_types[] = { NULL }; if (self->priv->status != TP_CAPTCHA_STATUS_LOCAL_PENDING && self->priv->status != TP_CAPTCHA_STATUS_TRY_AGAIN) { GError *error = g_error_new (TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Captcha status is in state %u", self->priv->status); dbus_g_method_return_error (context, error); g_error_free (error); return; } /* Yes, g_ptr_array_new_full() could be used here, but use * these functions instead to support older GLibs */ infos = g_ptr_array_sized_new (5); g_ptr_array_set_free_func (infos, (GDestroyNotify) g_value_array_free); info = tp_value_array_build (5, G_TYPE_UINT, 42, G_TYPE_STRING, "ocr", G_TYPE_STRING, "Enter the text displayed", G_TYPE_UINT, 0, G_TYPE_STRV, mime_types_1, G_TYPE_INVALID); g_ptr_array_add (infos, info); info = tp_value_array_build (5, G_TYPE_UINT, 76, G_TYPE_STRING, "picture_q", G_TYPE_STRING, "What in this picture?", G_TYPE_UINT, 0, G_TYPE_STRV, mime_types_2, G_TYPE_INVALID); g_ptr_array_add (infos, info); info = tp_value_array_build (5, G_TYPE_UINT, 15, G_TYPE_STRING, "qa", G_TYPE_STRING, "What is the answer?", G_TYPE_UINT, 0, G_TYPE_STRV, no_mime_types, G_TYPE_INVALID); g_ptr_array_add (infos, info); info = tp_value_array_build (5, G_TYPE_UINT, 51, G_TYPE_STRING, "video_q", G_TYPE_STRING, "Totallyfake", G_TYPE_UINT, 0, G_TYPE_STRV, no_mime_types, G_TYPE_INVALID); g_ptr_array_add (infos, info); info = tp_value_array_build (5, G_TYPE_UINT, 17, G_TYPE_STRING, "video_recog", G_TYPE_STRING, "Totallyfakeurgonnadie", G_TYPE_UINT, 0, G_TYPE_STRV, mime_types_2, G_TYPE_INVALID); g_ptr_array_add (infos, info); if (self->priv->status == TP_CAPTCHA_STATUS_TRY_AGAIN) { /* Handler started trying again, change status back */ set_status (self, TP_CAPTCHA_STATUS_LOCAL_PENDING, NULL, NULL); self->priv->is_retrying = TRUE; } tp_svc_channel_interface_captcha_authentication_return_from_get_captchas (context, infos, 1, ""); g_ptr_array_unref (infos); } static void captcha_auth_get_captcha_data (TpSvcChannelInterfaceCaptchaAuthentication *iface, guint id, const gchar *mime_type, DBusGMethodInvocation *context) { TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) iface; GArray *captcha; if (self->priv->status != TP_CAPTCHA_STATUS_LOCAL_PENDING) { GError *error = g_error_new (TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Captcha status is in state %u", self->priv->status); dbus_g_method_return_error (context, error); g_error_free (error); return; } if (id != 42 && id != 76) { GError *error = g_error_new (TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Invalid captcha ID (%u).", id); dbus_g_method_return_error (context, error); g_error_free (error); return; } if (tp_strdiff (mime_type, "image/png") && tp_strdiff (mime_type, "lol/wut")) { GError *error = g_error_new (TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "MIME type '%s' was not in the list provided. ", mime_type); dbus_g_method_return_error (context, error); g_error_free (error); return; } captcha = g_array_new (TRUE, FALSE, sizeof (guchar)); if (self->priv->is_retrying) { g_array_append_vals (captcha, "This is a reloaded payload", 26); } else { g_array_append_vals (captcha, "This is a fake payload", 22); } tp_svc_channel_interface_captcha_authentication_return_from_get_captcha_data (context, captcha); g_array_unref (captcha); } static void captcha_auth_cancel_captcha (TpSvcChannelInterfaceCaptchaAuthentication *iface, guint reason, const gchar *debug_message, DBusGMethodInvocation *context) { TpTestsCaptchaChannel *self = (TpTestsCaptchaChannel *) iface; const gchar *error = NULL; GError *gerror = NULL; GHashTable *error_details = NULL; if (self->priv->status == TP_CAPTCHA_STATUS_FAILED) { gerror = g_error_new_literal (TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Captcha status is already Failed"); dbus_g_method_return_error (context, gerror); g_error_free (gerror); return; } switch (reason) { case TP_CAPTCHA_CANCEL_REASON_USER_CANCELLED: error = TP_ERROR_STR_CANCELLED; break; case TP_CAPTCHA_CANCEL_REASON_NOT_SUPPORTED: error = TP_ERROR_STR_CAPTCHA_NOT_SUPPORTED; break; case TP_CAPTCHA_CANCEL_REASON_SERVICE_CONFUSED: error = TP_ERROR_STR_SERVICE_CONFUSED; break; default: g_warning ("Unknown cancel reason"); } error_details = tp_asv_new ( "debug-message", G_TYPE_STRING, debug_message, NULL); set_status (self, TP_CAPTCHA_STATUS_FAILED, error, error_details); g_hash_table_unref (error_details); tp_svc_channel_interface_captcha_authentication_return_from_cancel_captcha (context); } static void captcha_iface_init (gpointer g_iface, gpointer data G_GNUC_UNUSED) { TpSvcChannelInterfaceCaptchaAuthenticationClass *iface = (TpSvcChannelInterfaceCaptchaAuthenticationClass *) g_iface; #define IMPLEMENT(x) \ tp_svc_channel_interface_captcha_authentication_implement_##x (iface, \ captcha_auth_##x) IMPLEMENT(answer_captchas); IMPLEMENT(get_captchas); IMPLEMENT(get_captcha_data); IMPLEMENT(cancel_captcha); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/captcha-chan.h0000644000175100017520000000435212530423576023236 0ustar00kaffeinekaffeine00000000000000/* * captcha-chan.h - Simple captcha authentication channel * * Copyright (C) 2012 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_CAPTCHA_CHAN_H__ #define __TP_CAPTCHA_CHAN_H__ #include #include #include #include G_BEGIN_DECLS /* Base Class */ typedef struct _TpTestsCaptchaChannel TpTestsCaptchaChannel; typedef struct _TpTestsCaptchaChannelClass TpTestsCaptchaChannelClass; typedef struct _TpTestsCaptchaChannelPrivate TpTestsCaptchaChannelPrivate; GType tp_tests_captcha_channel_get_type (void); #define TP_TESTS_TYPE_CAPTCHA_CHANNEL \ (tp_tests_captcha_channel_get_type ()) #define TP_TESTS_CAPTCHA_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_CAPTCHA_CHANNEL, \ TpTestsCaptchaChannel)) #define TP_TESTS_CAPTCHA_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_CAPTCHA_CHANNEL, \ TpTestsCaptchaChannelClass)) #define TP_TESTS_IS_CAPTCHA_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_CAPTCHA_CHANNEL)) #define TP_TESTS_IS_CAPTCHA_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_CAPTCHA_CHANNEL)) #define TP_TESTS_CAPTCHA_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CAPTCHA_CHANNEL, \ TpTestsCaptchaChannelClass)) #define EXAMPLE_IS_ECHO_2_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_CAPTCHA_CHANNEL)) #define EXAMPLE_IS_ECHO_2_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_CAPTCHA_CHANNEL)) #define QUAD_CAPTCHA_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CAPTCHA_CHANNEL, \ TpTestsCaptchaChannelClass)) struct _TpTestsCaptchaChannelClass { TpBaseChannelClass parent_class; }; struct _TpTestsCaptchaChannel { TpBaseChannel parent; TpTestsCaptchaChannelPrivate *priv; }; G_END_DECLS #endif /* #ifndef __TP_CAPTCHA_CHAN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/future/0000755000175100017520000000000012530423576022061 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/future/CMakeLists.txt0000644000175100017520000000023512530423576024621 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) add_subdirectory(extensions) add_subdirectory(conference) add_subdirectory(conn-addressing) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/future/conference/0000755000175100017520000000000012530423576024170 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/future/conference/CMakeLists.txt0000644000175100017520000000072412530423576026733 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) include_directories( ${CMAKE_SOURCE_DIR}/tests/lib/glib/future) set(future_example_cm_conference_SRCS chan.c chan.h) add_library(future-example-cm-conference STATIC ${future_example_cm_conference_SRCS}) target_link_libraries(future-example-cm-conference ${TPGLIB_LIBRARIES} tp-glib-tests tp-glib-tests-future-extensions) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/future/conference/chan.c0000644000175100017520000005303212530423576025250 0ustar00kaffeinekaffeine00000000000000/* * conference-channel.c - an tp_tests conference channel * * Copyright © 2010 Collabora Ltd. * Copyright © 2010 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "chan.h" #include #include #include #include #include #include #include #include #include "extensions/extensions.h" /* TODO: * Simulate Conference.ChannelRemoved */ static void mergeable_conference_iface_init (gpointer iface, gpointer data); static void channel_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (TpTestsConferenceChannel, tp_tests_conference_channel, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, tp_group_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_CONFERENCE, NULL); G_IMPLEMENT_INTERFACE (FUTURE_TYPE_SVC_CHANNEL_INTERFACE_MERGEABLE_CONFERENCE, mergeable_conference_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL)) enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_CHANNEL_DESTROYED, PROP_CHANNEL_PROPERTIES, PROP_CONFERENCE_CHANNELS, PROP_CONFERENCE_INITIAL_CHANNELS, PROP_CONFERENCE_INITIAL_INVITEE_HANDLES, PROP_CONFERENCE_INITIAL_INVITEE_IDS, PROP_CONFERENCE_INVITATION_MESSAGE, PROP_CONFERENCE_ORIGINAL_CHANNELS, N_PROPS }; struct _TpTestsConferenceChannelPrivate { TpBaseConnection *conn; gchar *object_path; guint handle_type; GPtrArray *conference_initial_channels; GPtrArray *conference_channels; GArray *conference_initial_invitee_handles; gchar **conference_initial_invitee_ids; gchar *conference_invitation_message; GHashTable *conference_original_channels; gboolean disposed; gboolean closed; }; static const gchar * tp_tests_conference_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_GROUP, TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, FUTURE_IFACE_CHANNEL_INTERFACE_MERGEABLE_CONFERENCE, NULL }; static void tp_tests_conference_channel_init (TpTestsConferenceChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_CONFERENCE_CHANNEL, TpTestsConferenceChannelPrivate); self->priv->handle_type = (guint) -1; } static void constructed (GObject *object) { void (*chain_up) (GObject *) = ((GObjectClass *) tp_tests_conference_channel_parent_class)->constructed; TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); TpDBusDaemon *bus; if (chain_up != NULL) { chain_up (object); } bus = tp_dbus_daemon_dup (NULL); tp_dbus_daemon_register_object (bus, self->priv->object_path, object); tp_group_mixin_init (object, G_STRUCT_OFFSET (TpTestsConferenceChannel, group), contact_repo, self->priv->conn->self_handle); if (self->priv->handle_type == (guint) -1) { self->priv->handle_type = TP_HANDLE_TYPE_NONE; } if (!self->priv->conference_channels) { self->priv->conference_channels = g_ptr_array_new (); } if (!self->priv->conference_initial_channels) { self->priv->conference_initial_channels = g_ptr_array_new (); } if (!self->priv->conference_initial_invitee_handles) { self->priv->conference_initial_invitee_handles = g_array_new (FALSE, TRUE, sizeof (guint)); } if (!self->priv->conference_initial_invitee_ids) { self->priv->conference_initial_invitee_ids = g_new0 (gchar *, 1); } if (!self->priv->conference_invitation_message) { self->priv->conference_invitation_message = g_strdup (""); } if (!self->priv->conference_original_channels) { self->priv->conference_original_channels = dbus_g_type_specialized_construct ( TP_HASH_TYPE_CHANNEL_ORIGINATOR_MAP); } } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, self->priv->handle_type); break; case PROP_HANDLE: g_value_set_uint (value, 0); break; case PROP_TARGET_ID: g_value_set_string (value, ""); break; case PROP_REQUESTED: g_value_set_boolean (value, TRUE); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, 0); break; case PROP_INITIATOR_ID: g_value_set_string (value, ""); break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_INTERFACES: g_value_set_boxed (value, tp_tests_conference_channel_interfaces); break; case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, self->priv->closed); break; case PROP_CHANNEL_PROPERTIES: g_value_take_boxed (value, tp_dbus_properties_mixin_make_properties_hash (object, TP_IFACE_CHANNEL, "ChannelType", TP_IFACE_CHANNEL, "TargetHandleType", TP_IFACE_CHANNEL, "TargetHandle", TP_IFACE_CHANNEL, "TargetID", TP_IFACE_CHANNEL, "InitiatorHandle", TP_IFACE_CHANNEL, "InitiatorID", TP_IFACE_CHANNEL, "Requested", TP_IFACE_CHANNEL, "Interfaces", TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, "Channels", TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, "InitialChannels", TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, "InitialInviteeHandles", TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, "InitialInviteeIDs", TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, "InvitationMessage", TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, "OriginalChannels", NULL)); break; case PROP_CONFERENCE_CHANNELS: g_value_set_boxed (value, self->priv->conference_channels); g_assert (G_VALUE_HOLDS (value, TP_ARRAY_TYPE_OBJECT_PATH_LIST)); break; case PROP_CONFERENCE_INITIAL_CHANNELS: g_value_set_boxed (value, self->priv->conference_initial_channels); g_assert (G_VALUE_HOLDS (value, TP_ARRAY_TYPE_OBJECT_PATH_LIST)); break; case PROP_CONFERENCE_INITIAL_INVITEE_HANDLES: g_value_set_boxed (value, self->priv->conference_initial_invitee_handles); g_assert (G_VALUE_HOLDS (value, DBUS_TYPE_G_UINT_ARRAY)); break; case PROP_CONFERENCE_INITIAL_INVITEE_IDS: g_value_set_boxed (value, self->priv->conference_initial_invitee_ids); g_assert (G_VALUE_HOLDS (value, G_TYPE_STRV)); break; case PROP_CONFERENCE_INVITATION_MESSAGE: g_value_set_string (value, self->priv->conference_invitation_message); g_assert (G_VALUE_HOLDS (value, G_TYPE_STRING)); break; case PROP_CONFERENCE_ORIGINAL_CHANNELS: g_value_set_boxed (value, self->priv->conference_original_channels); g_assert (G_VALUE_HOLDS (value, TP_HASH_TYPE_CHANNEL_ORIGINATOR_MAP)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE_TYPE: self->priv->handle_type = g_value_get_uint (value); break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; case PROP_CONFERENCE_INITIAL_CHANNELS: g_ptr_array_free(self->priv->conference_initial_channels, TRUE); self->priv->conference_initial_channels = g_value_dup_boxed (value); g_ptr_array_free(self->priv->conference_channels, TRUE); self->priv->conference_channels = g_value_dup_boxed (value); break; case PROP_CONFERENCE_INITIAL_INVITEE_HANDLES: self->priv->conference_initial_invitee_handles = g_value_dup_boxed (value); break; case PROP_CONFERENCE_INITIAL_INVITEE_IDS: self->priv->conference_initial_invitee_ids = g_value_dup_boxed (value); break; case PROP_CONFERENCE_INVITATION_MESSAGE: self->priv->conference_invitation_message = g_value_dup_string (value); break; case PROP_CHANNEL_TYPE: case PROP_HANDLE: case PROP_TARGET_ID: case PROP_REQUESTED: case PROP_INITIATOR_HANDLE: case PROP_INITIATOR_ID: case PROP_CONFERENCE_CHANNELS: /* these properties are not actually meaningfully changeable on this * channel, so we do nothing */ break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (object); if (self->priv->disposed) { return; } self->priv->disposed = TRUE; g_ptr_array_free (self->priv->conference_channels, TRUE); self->priv->conference_channels = NULL; g_ptr_array_free (self->priv->conference_initial_channels, TRUE); self->priv->conference_initial_channels = NULL; if (self->priv->conference_initial_invitee_handles) { g_array_free (self->priv->conference_initial_invitee_handles, FALSE); } self->priv->conference_initial_invitee_handles = NULL; g_strfreev (self->priv->conference_initial_invitee_ids); self->priv->conference_initial_invitee_ids = NULL; g_free (self->priv->conference_invitation_message); self->priv->conference_invitation_message = NULL; g_boxed_free (TP_HASH_TYPE_CHANNEL_ORIGINATOR_MAP, self->priv->conference_original_channels); self->priv->conference_original_channels = NULL; if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } ((GObjectClass *) tp_tests_conference_channel_parent_class)->dispose (object); } static void finalize (GObject *object) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (object); g_free (self->priv->object_path); tp_group_mixin_finalize (object); ((GObjectClass *) tp_tests_conference_channel_parent_class)->finalize (object); } static gboolean add_member (GObject *obj, TpHandle handle, const gchar *message, GError **error) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (obj); TpIntSet *add = tp_intset_new (); tp_intset_add (add, handle); tp_group_mixin_change_members (obj, message, add, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (add); return TRUE; } static void tp_tests_conference_channel_class_init (TpTestsConferenceChannelClass *klass) { static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinPropImpl conference_props[] = { { "Channels", "channels", NULL }, { "InitialChannels", "initial-channels", NULL }, { "InitialInviteeHandles", "initial-invitee-handles", NULL }, { "InitialInviteeIDs", "initial-invitee-ids", NULL }, { "InvitationMessage", "invitation-message", NULL }, { "OriginalChannels", "original-channels", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { TP_IFACE_CHANNEL_INTERFACE_CONFERENCE, tp_dbus_properties_mixin_getter_gobject_properties, NULL, conference_props, }, { NULL } }; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (TpTestsConferenceChannelPrivate)); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, "channel-destroyed"); g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, "channel-properties"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "The string obtained by inspecting the target handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); param_spec = g_param_spec_boxed ("channels", "Channel paths", "A list of the object paths of channels", TP_ARRAY_TYPE_OBJECT_PATH_LIST, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONFERENCE_CHANNELS, param_spec); param_spec = g_param_spec_boxed ("initial-channels", "Initial Channel paths", "A list of the object paths of initial channels", TP_ARRAY_TYPE_OBJECT_PATH_LIST, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONFERENCE_INITIAL_CHANNELS, param_spec); param_spec = g_param_spec_boxed ("initial-invitee-handles", "Initial Invitee Handles", "A list of additional contacts invited to this conference when it was created", DBUS_TYPE_G_UINT_ARRAY, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONFERENCE_INITIAL_INVITEE_HANDLES, param_spec); param_spec = g_param_spec_boxed ("initial-invitee-ids", "Initial Invitee IDs", "A list of additional contacts invited to this conference when it was created", G_TYPE_STRV, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONFERENCE_INITIAL_INVITEE_IDS, param_spec); param_spec = g_param_spec_string ("invitation-message", "Invitation message", "The message that was sent to the InitialInviteeHandles when they were invited", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONFERENCE_INVITATION_MESSAGE, param_spec); param_spec = g_param_spec_boxed ("original-channels", "Original Channels", "A map of channel specific handles to channels", TP_HASH_TYPE_CHANNEL_ORIGINATOR_MAP, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONFERENCE_ORIGINAL_CHANNELS, param_spec); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsConferenceChannelClass, dbus_properties_class)); tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsConferenceChannelClass, group_class), add_member, NULL); tp_group_mixin_init_dbus_properties (object_class); } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (iface); if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (iface); tp_svc_channel_return_from_get_handle (context, self->priv->handle_type, 0); } static void channel_get_interfaces (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, tp_tests_conference_channel_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void mergeable_conference_merge (FutureSvcChannelInterfaceMergeableConference *iface G_GNUC_UNUSED, const gchar *channel, DBusGMethodInvocation *context) { TpTestsConferenceChannel *self = TP_TESTS_CONFERENCE_CHANNEL (iface); GHashTable *immutable_props = g_hash_table_new (NULL, NULL); g_ptr_array_add (self->priv->conference_channels, g_strdup (channel)); tp_svc_channel_interface_conference_emit_channel_merged (self, channel, 0, immutable_props); g_hash_table_destroy (immutable_props); future_svc_channel_interface_mergeable_conference_return_from_merge (context); } static void mergeable_conference_iface_init (gpointer iface, gpointer data) { FutureSvcChannelInterfaceMergeableConferenceClass *klass = iface; #define IMPLEMENT(x) future_svc_channel_interface_mergeable_conference_implement_##x (klass, mergeable_conference_##x) IMPLEMENT (merge); #undef IMPLEMENT } void tp_tests_conference_channel_remove_channel (TpTestsConferenceChannel *self, const gchar *channel) { guint i; for (i = 0; i < self->priv->conference_channels->len; i++) { gchar *path = g_ptr_array_index (self->priv->conference_channels, i); if (strcmp (path, channel) == 0) { GHashTable *details = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); g_ptr_array_remove (self->priv->conference_channels, (gpointer) path); g_free (path); g_hash_table_insert (details, "actor", tp_g_value_slice_new_uint (self->priv->conn->self_handle)); g_hash_table_insert (details, "domain-specific-detail-uint", tp_g_value_slice_new_uint (3)); tp_svc_channel_interface_conference_emit_channel_removed (self, channel, details); g_hash_table_destroy (details); } } } telepathy-qt-0.9.6.1/tests/lib/glib/future/conference/chan.h0000644000175100017520000000545712530423576025265 0ustar00kaffeinekaffeine00000000000000/* * conference-channel.h - header for an tp_tests conference channel * * Copyright © 2010 Collabora Ltd. * Copyright © 2010 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef TP_TESTS_CONFERENCE_CHANNEL_H #define TP_TESTS_CONFERENCE_CHANNEL_H #include #include #include G_BEGIN_DECLS typedef struct _TpTestsConferenceChannel TpTestsConferenceChannel; typedef struct _TpTestsConferenceChannelPrivate TpTestsConferenceChannelPrivate; typedef struct _TpTestsConferenceChannelClass TpTestsConferenceChannelClass; typedef struct _TpTestsConferenceChannelClassPrivate TpTestsConferenceChannelClassPrivate; GType tp_tests_conference_channel_get_type (void); #define TP_TESTS_TYPE_CONFERENCE_CHANNEL \ (tp_tests_conference_channel_get_type ()) #define TP_TESTS_CONFERENCE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_CONFERENCE_CHANNEL, \ TpTestsConferenceChannel)) #define TP_TESTS_CONFERENCE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_CONFERENCE_CHANNEL, \ TpTestsConferenceChannelClass)) #define TP_TESTS_IS_CONFERENCE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_CONFERENCE_CHANNEL)) #define TP_TESTS_IS_CONFERENCE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_CONFERENCE_CHANNEL)) #define TP_TESTS_CONFERENCE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CONFERENCE_CHANNEL, \ TpTestsConferenceChannelClass)) struct _TpTestsConferenceChannelClass { GObjectClass parent_class; TpDBusPropertiesMixinClass dbus_properties_class; TpGroupMixinClass group_class; TpTestsConferenceChannelClassPrivate *priv; }; struct _TpTestsConferenceChannel { GObject parent; TpGroupMixin group; TpTestsConferenceChannelPrivate *priv; }; void tp_tests_conference_channel_remove_channel (TpTestsConferenceChannel *self, const gchar *channel); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/future/conn-addressing/0000755000175100017520000000000012530423576025137 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/future/conn-addressing/CMakeLists.txt0000644000175100017520000000105112530423576027674 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) include_directories( ${CMAKE_SOURCE_DIR}/tests/lib/glib ${CMAKE_SOURCE_DIR}/tests/lib/glib/future ${DBUS_GLIB_INCLUDE_DIRS}) set(future_example_conn_addressing_SRCS conn.c conn.h) add_library(future-example-conn-addressing STATIC ${future_example_conn_addressing_SRCS}) target_link_libraries(future-example-conn-addressing ${TPGLIB_LIBRARIES} tp-glib-tests tp-glib-tests-future-extensions) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/future/conn-addressing/conn.c0000644000175100017520000002403312530423576026242 0ustar00kaffeinekaffeine00000000000000/* * conn.c - connection implementing Conn.I.Addressing * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "conn.h" #include #include #include #include #include #include #include "extensions/extensions.h" #include static void addressing_fill_contact_attributes (GObject *obj, const GArray *contacts, GHashTable *attributes_hash); static void addressing_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (TpTestsAddressingConnection, tp_tests_addressing_connection, TP_TESTS_TYPE_CONTACTS_CONNECTION, G_IMPLEMENT_INTERFACE (FUTURE_TYPE_SVC_CONNECTION_INTERFACE_ADDRESSING, addressing_iface_init); ); struct _TpTestsAddressingConnectionPrivate { }; static const gchar *addressable_vcard_fields[] = {"x-addr", NULL}; static const gchar *addressable_uri_schemes[] = {"addr", NULL}; static const char *assumed_interfaces[] = { TP_IFACE_CONNECTION, FUTURE_IFACE_CONNECTION_INTERFACE_ADDRESSING, NULL }; static void constructed (GObject *object) { TpTestsAddressingConnection *self = TP_TESTS_ADDRESSING_CONNECTION (object); void (*parent_impl) (GObject *) = G_OBJECT_CLASS (tp_tests_addressing_connection_parent_class)->constructed; if (parent_impl != NULL) parent_impl (object); tp_contacts_mixin_add_contact_attributes_iface (G_OBJECT (self), FUTURE_IFACE_CONNECTION_INTERFACE_ADDRESSING, addressing_fill_contact_attributes); } static void tp_tests_addressing_connection_init (TpTestsAddressingConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_ADDRESSING_CONNECTION, TpTestsAddressingConnectionPrivate); } static void finalize (GObject *object) { G_OBJECT_CLASS (tp_tests_addressing_connection_parent_class)->finalize (object); } static void tp_tests_addressing_connection_class_init (TpTestsAddressingConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_AVATARS, TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_CONTACT_LIST, TP_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_LOCATION, TP_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES, TP_IFACE_CONNECTION_INTERFACE_CONTACT_INFO, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, FUTURE_IFACE_CONNECTION_INTERFACE_ADDRESSING, NULL }; object_class->constructed = constructed; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (TpTestsAddressingConnectionPrivate)); base_class->interfaces_always_present = interfaces_always_present; } static gchar ** uris_for_handle (TpHandleRepoIface *contact_repo, TpHandle contact) { GPtrArray *uris = g_ptr_array_new (); const gchar * const *scheme; for (scheme = addressable_uri_schemes; *scheme != NULL; scheme++) { const gchar *identifier = tp_handle_inspect (contact_repo, contact); gchar *uri = g_strdup_printf ("%s:%s", *scheme, identifier); if (uri != NULL) { g_ptr_array_add (uris, uri); } } g_ptr_array_add (uris, NULL); return (gchar **) g_ptr_array_free (uris, FALSE); } static GHashTable * vcard_addresses_for_handle (TpHandleRepoIface *contact_repo, TpHandle contact) { GHashTable *addresses = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_free); const gchar * const *field; for (field = addressable_vcard_fields; *field != NULL; field++) { const gchar *identifier = tp_handle_inspect (contact_repo, contact); if (identifier != NULL) { g_hash_table_insert (addresses, (gpointer) *field, g_strdup (identifier)); } } return addresses; } static void addressing_fill_contact_attributes (GObject *obj, const GArray *contacts, GHashTable *attributes_hash) { guint i; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( (TpBaseConnection *) obj, TP_HANDLE_TYPE_CONTACT); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, TpHandle, i); gchar **uris = uris_for_handle (contact_repo, contact); GHashTable *addresses = vcard_addresses_for_handle (contact_repo, contact); tp_contacts_mixin_set_contact_attribute (attributes_hash, contact, FUTURE_IFACE_CONNECTION_INTERFACE_ADDRESSING"/uris", tp_g_value_slice_new_take_boxed (G_TYPE_STRV, uris)); tp_contacts_mixin_set_contact_attribute (attributes_hash, contact, FUTURE_IFACE_CONNECTION_INTERFACE_ADDRESSING"/addresses", tp_g_value_slice_new_take_boxed (TP_HASH_TYPE_STRING_STRING_MAP, addresses)); } } static gchar * uri_to_id (const gchar *uri, GError **error) { gchar *scheme; gchar *normalized_id = NULL; g_return_val_if_fail (uri != NULL, NULL); scheme = g_uri_parse_scheme (uri); if (scheme == NULL) { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "'%s' is not a valid URI", uri); goto OUT; } else if (g_ascii_strcasecmp (scheme, "addr") == 0) { normalized_id = g_strdup (uri + strlen (scheme) + 1); /* Strip the scheme */ } else { g_set_error (error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "'%s' URI scheme is not supported by this protocol", scheme); goto OUT; } OUT: g_free (scheme); return normalized_id; } static TpHandle ensure_handle_from_uri (TpHandleRepoIface *repo, const gchar *uri, GError **error) { TpHandle handle; gchar *id = uri_to_id (uri, error); if (id == NULL) return 0; handle = tp_handle_ensure (repo, id, NULL, error); g_free (id); return handle; } static void addressing_get_contacts_by_uri (FutureSvcConnectionInterfaceAddressing *iface, const gchar **uris, const gchar **interfaces, DBusGMethodInvocation *context) { const gchar **uri; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( (TpBaseConnection *) iface, TP_HANDLE_TYPE_CONTACT); GHashTable *attributes; GHashTable *requested = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); GArray *handles = g_array_sized_new (TRUE, TRUE, sizeof (TpHandle), g_strv_length ((gchar **) uris)); gchar *sender = dbus_g_method_get_sender (context); for (uri = uris; *uri != NULL; uri++) { TpHandle h = ensure_handle_from_uri (contact_repo, *uri, NULL); if (h == 0) continue; g_hash_table_insert (requested, g_strdup (*uri), GUINT_TO_POINTER (h)); g_array_append_val (handles, h); } attributes = tp_contacts_mixin_get_contact_attributes (G_OBJECT (iface), handles, interfaces, assumed_interfaces, sender); future_svc_connection_interface_addressing_return_from_get_contacts_by_uri ( context, requested, attributes); g_hash_table_unref (requested); g_hash_table_unref (attributes); g_free (sender); } static gchar * vcard_address_to_id (const gchar *vcard_field, const gchar *vcard_address, GError **error) { gchar *normalized_id = NULL; g_return_val_if_fail (vcard_field != NULL, NULL); g_return_val_if_fail (vcard_address != NULL, NULL); if (g_ascii_strcasecmp (vcard_field, "x-addr") == 0) { normalized_id = g_strdup (vcard_address); } else { g_set_error (error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "'%s' vCard field is not supported by this protocol", vcard_field); } return normalized_id; } static TpHandle ensure_handle_from_vcard_address (TpHandleRepoIface *repo, const gchar *vcard_field, const gchar *vcard_address, GError **error) { TpHandle handle; gchar *normalized_id; normalized_id = vcard_address_to_id (vcard_field, vcard_address, error); if (normalized_id == NULL) return 0; handle = tp_handle_ensure (repo, normalized_id, NULL, error); g_free (normalized_id); return handle; } static void addressing_get_contacts_by_vcard_field (FutureSvcConnectionInterfaceAddressing *iface, const gchar *field, const gchar **addresses, const gchar **interfaces, DBusGMethodInvocation *context) { const gchar **address; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( (TpBaseConnection *) iface, TP_HANDLE_TYPE_CONTACT); GHashTable *attributes; GHashTable *requested = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); GArray *handles = g_array_sized_new (TRUE, TRUE, sizeof (TpHandle), g_strv_length ((gchar **) addresses)); gchar *sender = dbus_g_method_get_sender (context); for (address = addresses; *address != NULL; address++) { TpHandle h = ensure_handle_from_vcard_address (contact_repo, field, *address, NULL); if (h == 0) continue; g_hash_table_insert (requested, g_strdup (*address), GUINT_TO_POINTER (h)); g_array_append_val (handles, h); } attributes = tp_contacts_mixin_get_contact_attributes (G_OBJECT (iface), handles, interfaces, assumed_interfaces, sender); future_svc_connection_interface_addressing_return_from_get_contacts_by_vcard_field ( context, requested, attributes); g_hash_table_unref (requested); g_hash_table_unref (attributes); g_free (sender); } static void addressing_iface_init (gpointer g_iface, gpointer iface_data) { #define IMPLEMENT(x) \ future_svc_connection_interface_addressing_implement_##x (\ g_iface, addressing_##x) IMPLEMENT(get_contacts_by_uri); IMPLEMENT(get_contacts_by_vcard_field); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/future/conn-addressing/conn.h0000644000175100017520000000377512530423576026261 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for a connection that implements Conn.I.Addressing * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_ADDRESSING_CONN_H__ #define __TP_TESTS_ADDRESSING_CONN_H__ #include #include #include "contacts-conn.h" G_BEGIN_DECLS typedef struct _TpTestsAddressingConnection TpTestsAddressingConnection; typedef struct _TpTestsAddressingConnectionClass TpTestsAddressingConnectionClass; typedef struct _TpTestsAddressingConnectionPrivate TpTestsAddressingConnectionPrivate; struct _TpTestsAddressingConnectionClass { TpTestsContactsConnectionClass parent_class; }; struct _TpTestsAddressingConnection { TpTestsContactsConnection parent; TpTestsAddressingConnectionPrivate *priv; }; GType tp_tests_addressing_connection_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_ADDRESSING_CONNECTION \ (tp_tests_addressing_connection_get_type ()) #define TP_TESTS_ADDRESSING_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_ADDRESSING_CONNECTION, \ TpTestsAddressingConnection)) #define TP_TESTS_ADDRESSING_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_ADDRESSING_CONNECTION, \ TpTestsAddressingConnectionClass)) #define TP_TESTS_ADDRESSING_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_ADDRESSING_CONNECTION)) #define TP_TESTS_ADDRESSING_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_ADDRESSING_CONNECTION)) #define TP_TESTS_ADDRESSING_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_ADDRESSING_CONNECTION, \ TpTestsAddressingConnectionClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/0000755000175100017520000000000012530423576024260 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/CMakeLists.txt0000644000175100017520000001333012530423576027020 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen") set(tp_glib_tests_future_extensions_SRCS extensions.c extensions.h) set(gen_all_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml) add_custom_command(OUTPUT ${gen_all_xml} COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/xincludator.py ${CMAKE_CURRENT_SOURCE_DIR}/all.xml > ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/all.xml ${CMAKE_CURRENT_SOURCE_DIR}/channel.xml ${CMAKE_CURRENT_SOURCE_DIR}/connection.xml ${CMAKE_CURRENT_SOURCE_DIR}/misc.xml ${CMAKE_SOURCE_DIR}/tools/xincludator.py) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/gtypes.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/gtypes-body.h COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/glib-gtypes-generator.py ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml _gen/gtypes Future DEPENDS ${gen_all_xml} ${CMAKE_SOURCE_DIR}/tools/glib-gtypes-generator.py) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.list COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/glib-signals-marshal-gen.py ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml > _gen/signals-marshal.list DEPENDS ${gen_all_xml}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.h COMMAND ${GLIB_GENMARSHAL} --header --prefix=_future_ext_marshal ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.list > _gen/signals-marshal.h DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.list) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gen-signals-marshal-c.sh " echo '#include \"_gen/signals-marshal.h\"' > _gen/signals-marshal.c ${GLIB_GENMARSHAL} --body --prefix=_future_ext_marshal ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.list >> _gen/signals-marshal.c ") set(gen_signals_marshal_c ${SH} ${CMAKE_CURRENT_BINARY_DIR}/gen-signals-marshal-c.sh) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.c COMMAND ${gen_signals_marshal_c} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.list) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/enums.h COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/c-constants-gen.py Future ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml > _gen/enums.h DEPENDS ${gen_all_xml} ${CMAKE_SOURCE_DIR}/tools/c-constants-gen.py) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/interfaces-body.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/interfaces.h COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/glib-interfaces-gen.py Future ${CMAKE_CURRENT_BINARY_DIR}/_gen/interfaces-body.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/interfaces.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml DEPENDS ${gen_all_xml} ${CMAKE_SOURCE_DIR}/tools/glib-interfaces-gen.py) set(SPECS connection channel misc) foreach(spec ${SPECS}) add_custom_command(OUTPUT "_gen/${spec}.xml" COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/xincludator.py ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml > ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.xml DEPENDS ${spec}.xml ${CMAKE_SOURCE_DIR}/tools/xincludator.py) endforeach(spec ${SPECS}) function(SVC_GENERATOR spec) set(ARGS ${CMAKE_SOURCE_DIR}/tools/glib-ginterface-gen.py --filename=${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-${spec} --signal-marshal-prefix=_future_ext --include='' --include='_gen/signals-marshal.h' --not-implemented-func='tp_dbus_g_method_return_not_implemented' --allow-unstable ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.xml Future_Svc_) add_custom_command(OUTPUT _gen/svc-${spec}.c _gen/svc-${spec}.h COMMAND ${PYTHON_EXECUTABLE} ARGS ${ARGS} DEPENDS ${CMAKE_SOURCE_DIR}/tools/glib-ginterface-gen.py ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.xml WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endfunction(SVC_GENERATOR spec) svc_generator(channel) svc_generator(connection) svc_generator(misc) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/enums.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/gtypes.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/gtypes-body.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/interfaces.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/interfaces-body.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.c ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/signals-marshal.list ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-channel.c ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-channel.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection.c ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-misc.c ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-misc.h) list(APPEND tp_glib_tests_future_extensions_SRCS ${NEW_FILES}) set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) add_library(tp-glib-tests-future-extensions STATIC ${tp_glib_tests_future_extensions_SRCS}) target_link_libraries(tp-glib-tests-future-extensions ${TPGLIB_LIBRARIES}) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/extensions.c0000644000175100017520000000030612530423576026622 0ustar00kaffeinekaffeine00000000000000#include "extensions.h" /* include auto-generated stubs for things common to service and client */ #include "_gen/gtypes-body.h" #include "_gen/interfaces-body.h" #include "_gen/signals-marshal.h" telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/extensions.h0000644000175100017520000000106112530423576026626 0ustar00kaffeinekaffeine00000000000000#ifndef FUTURE_EXTENSIONS_H #define FUTURE_EXTENSIONS_H #include #include #include #include "tests/lib/glib/future/extensions/_gen/enums.h" #include "tests/lib/glib/future/extensions/_gen/svc-channel.h" #include "tests/lib/glib/future/extensions/_gen/svc-connection.h" #include "tests/lib/glib/future/extensions/_gen/svc-misc.h" G_BEGIN_DECLS #include "tests/lib/glib/future/extensions/_gen/gtypes.h" #include "tests/lib/glib/future/extensions/_gen/interfaces.h" G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/misc.xml0000644000175100017520000000102512530423576025733 0ustar00kaffeinekaffeine00000000000000 Miscellaneous extensions from the future telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/all.xml0000644000175100017520000000053512530423576025555 0ustar00kaffeinekaffeine00000000000000 Extensions from the future telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/connection.xml0000644000175100017520000000043012530423576027136 0ustar00kaffeinekaffeine00000000000000 Connections extensions from the future telepathy-qt-0.9.6.1/tests/lib/glib/future/extensions/channel.xml0000644000175100017520000000064512530423576026417 0ustar00kaffeinekaffeine00000000000000 Channel extensions from the future telepathy-qt-0.9.6.1/tests/lib/glib/bug16307-conn.c0000644000175100017520000001452712530423576023035 0ustar00kaffeinekaffeine00000000000000/* * bug16307-conn.c - connection that reproduces the #15307 bug * * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "bug16307-conn.h" #include #include #include #include #include #include #include static void service_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (TpTestsBug16307Connection, tp_tests_bug16307_connection, TP_TESTS_TYPE_SIMPLE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION, service_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_ALIASING, NULL); ); /* type definition stuff */ enum { SIGNAL_GET_STATUS_RECEIVED, N_SIGNALS }; static guint signals[N_SIGNALS] = {0}; struct _TpTestsBug16307ConnectionPrivate { /* In a real connection manager, the underlying implementation start * connecting, then go to state CONNECTED when finished. Here there isn't * actually a connection, so the connection process is fake and the time * when it connects is, for this test purpose, when the D-Bus method GetStatus * is called. * * Also, the GetStatus D-Bus reply is delayed until * tp_tests_bug16307_connection_inject_get_status_return() is called */ DBusGMethodInvocation *get_status_invocation; }; static void tp_tests_bug16307_connection_init (TpTestsBug16307Connection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_BUG16307_CONNECTION, TpTestsBug16307ConnectionPrivate); } static void finalize (GObject *object) { G_OBJECT_CLASS (tp_tests_bug16307_connection_parent_class)->finalize (object); } static gboolean pretend_connected (gpointer data) { TpTestsBug16307Connection *self = TP_TESTS_BUG16307_CONNECTION (data); TpBaseConnection *conn = (TpBaseConnection *) self; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); gchar *account; g_object_get (self, "account", &account, NULL); conn->self_handle = tp_handle_ensure (contact_repo, account, NULL, NULL); g_free (account); tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return FALSE; } void tp_tests_bug16307_connection_inject_get_status_return (TpTestsBug16307Connection *self) { TpBaseConnection *self_base = TP_BASE_CONNECTION (self); DBusGMethodInvocation *context; gulong get_signal_id; /* if we don't have a pending get_status yet, wait for it */ if (self->priv->get_status_invocation == NULL) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); get_signal_id = g_signal_connect_swapped (self, "get-status-received", G_CALLBACK (g_main_loop_quit), loop); g_main_loop_run (loop); g_signal_handler_disconnect (self, get_signal_id); g_main_loop_unref (loop); } context = self->priv->get_status_invocation; g_assert (context != NULL); if (self_base->status == TP_INTERNAL_CONNECTION_STATUS_NEW) { tp_svc_connection_return_from_get_status ( context, TP_CONNECTION_STATUS_DISCONNECTED); } else { tp_svc_connection_return_from_get_status ( context, self_base->status); } self->priv->get_status_invocation = NULL; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTING, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void tp_tests_bug16307_connection_class_init (TpTestsBug16307ConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_CAPABILITIES, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_AVATARS, NULL }; static TpDBusPropertiesMixinPropImpl connection_properties[] = { { "Status", "dbus-status-except-i-broke-it", NULL }, { NULL } }; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (TpTestsBug16307ConnectionPrivate)); base_class->start_connecting = start_connecting; base_class->interfaces_always_present = interfaces_always_present; signals[SIGNAL_GET_STATUS_RECEIVED] = g_signal_new ("get-status-received", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /* break the Connection D-Bus properties implementation, so that we always * cause the slower introspection codepath (the one that actually calls * GetStatus) in TpConnection to be invoked */ tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CONNECTION, NULL, NULL, connection_properties); } /** * tp_tests_bug16307_connection_get_status * * Implements D-Bus method GetStatus * on interface org.freedesktop.Telepathy.Connection */ static void tp_tests_bug16307_connection_get_status (TpSvcConnection *iface, DBusGMethodInvocation *context) { TpBaseConnection *self_base = TP_BASE_CONNECTION (iface); TpTestsBug16307Connection *self = TP_TESTS_BUG16307_CONNECTION (iface); /* auto-connect on get_status */ if ((self_base->status == TP_INTERNAL_CONNECTION_STATUS_NEW || self_base->status == TP_CONNECTION_STATUS_DISCONNECTED)) { pretend_connected (self); } /* D-Bus return call later */ g_assert (self->priv->get_status_invocation == NULL); g_assert (context != NULL); self->priv->get_status_invocation = context; g_signal_emit (self, signals[SIGNAL_GET_STATUS_RECEIVED], 0); } static void service_iface_init (gpointer g_iface, gpointer iface_data) { TpSvcConnectionClass *klass = g_iface; #define IMPLEMENT(prefix,x) tp_svc_connection_implement_##x (klass, \ tp_tests_bug16307_connection_##prefix##x) IMPLEMENT(,get_status); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/bug16307-conn.h0000644000175100017520000000422012530423576023027 0ustar00kaffeinekaffeine00000000000000/* * bug16307-conn.h - header for a connection that reproduces the #15307 bug * * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_BUG16307_CONN_H__ #define __TP_TESTS_BUG16307_CONN_H__ #include #include #include "simple-conn.h" G_BEGIN_DECLS typedef struct _TpTestsBug16307Connection TpTestsBug16307Connection; typedef struct _TpTestsBug16307ConnectionClass TpTestsBug16307ConnectionClass; typedef struct _TpTestsBug16307ConnectionPrivate TpTestsBug16307ConnectionPrivate; struct _TpTestsBug16307ConnectionClass { TpTestsSimpleConnectionClass parent_class; }; struct _TpTestsBug16307Connection { TpTestsSimpleConnection parent; TpTestsBug16307ConnectionPrivate *priv; }; GType tp_tests_bug16307_connection_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_BUG16307_CONNECTION \ (tp_tests_bug16307_connection_get_type ()) #define TP_TESTS_BUG16307_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_BUG16307_CONNECTION, \ TpTestsBug16307Connection)) #define TP_TESTS_BUG16307_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_BUG16307_CONNECTION, \ TpTestsBug16307ConnectionClass)) #define TP_TESTS_BUG16307_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_BUG16307_CONNECTION)) #define TP_TESTS_BUG16307_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_BUG16307_CONNECTION)) #define TP_TESTS_BUG16307_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_BUG16307_CONNECTION, \ TpTestsBug16307ConnectionClass)) /* Cause "network events", for debugging/testing */ void tp_tests_bug16307_connection_inject_get_status_return (TpTestsBug16307Connection *self); G_END_DECLS #endif /* #ifndef __TP_TESTS_BUG16307_CONN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/dbus-tube-chan.c0000644000175100017520000005213212530423576023517 0ustar00kaffeinekaffeine00000000000000/* * dbus-tube-chan.c - Simple dbus tube channel * * Copyright (C) 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "dbus-tube-chan.h" #include #include #include #include #include #include #include enum { PROP_SERVICE_NAME = 1, PROP_DBUS_NAMES, PROP_SUPPORTED_ACCESS_CONTROLS, PROP_PARAMETERS, PROP_STATE, PROP_DBUS_ADDRESS }; struct _TpTestsDBusTubeChannelPrivate { TpTubeChannelState state; TpSocketAccessControl access_control; /* our unique D-Bus name on the virtual tube bus (NULL for 1-1 D-Bus tubes)*/ gchar *dbus_local_name; /* the address that we are listening for D-Bus connections on */ gchar *dbus_srv_addr; /* the path of the UNIX socket used by the D-Bus server */ gchar *socket_path; /* the server that's listening on dbus_srv_addr */ DBusServer *dbus_srv; /* the connection to dbus_srv from a local client, or NULL */ DBusConnection *dbus_conn; /* the queue of D-Bus messages to be delivered to a local client when it * will connect */ GSList *dbus_msg_queue; /* current size of the queue in bytes. The maximum is MAX_QUEUE_SIZE */ unsigned long dbus_msg_queue_size; /* mapping of contact handle -> D-Bus name (empty for 1-1 D-Bus tubes) */ GHashTable *dbus_names; GArray *supported_access_controls; GHashTable *parameters; gboolean close_on_accept; }; static void tp_tests_dbus_tube_channel_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsDBusTubeChannel *self = (TpTestsDBusTubeChannel *) object; switch (property_id) { case PROP_SERVICE_NAME: g_value_set_string (value, "com.test.Test"); break; case PROP_DBUS_NAMES: g_value_set_boxed (value, self->priv->dbus_names); break; case PROP_SUPPORTED_ACCESS_CONTROLS: g_value_set_boxed (value, self->priv->supported_access_controls); break; case PROP_PARAMETERS: g_value_set_boxed (value, self->priv->parameters); break; case PROP_DBUS_ADDRESS: g_value_set_string (value, self->priv->dbus_srv_addr); break; case PROP_STATE: g_value_set_uint (value, self->priv->state); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void tp_tests_dbus_tube_channel_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsDBusTubeChannel *self = (TpTestsDBusTubeChannel *) object; switch (property_id) { case PROP_SUPPORTED_ACCESS_CONTROLS: if (self->priv->supported_access_controls != NULL) g_array_free (self->priv->supported_access_controls, FALSE); self->priv->supported_access_controls = g_value_dup_boxed (value); break; case PROP_PARAMETERS: if (self->priv->parameters != NULL) g_hash_table_destroy (self->priv->parameters); self->priv->parameters = g_value_dup_boxed (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dbus_tube_iface_init (gpointer iface, gpointer data); G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpTestsDBusTubeChannel, tp_tests_dbus_tube_channel, TP_TYPE_BASE_CHANNEL, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_DBUS_TUBE, dbus_tube_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_TUBE, NULL); ) /* type definition stuff */ static const char * tp_tests_dbus_tube_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_TUBE, NULL }; static void tp_tests_dbus_tube_channel_init (TpTestsDBusTubeChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), TP_TESTS_TYPE_DBUS_TUBE_CHANNEL, TpTestsDBusTubeChannelPrivate); self->priv->dbus_names = g_hash_table_new (g_direct_hash, g_direct_equal); } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (tp_tests_dbus_tube_channel_parent_class)->constructor ( type, n_props, props); TpTestsDBusTubeChannel *self = TP_TESTS_DBUS_TUBE_CHANNEL (object); if (tp_base_channel_is_requested (TP_BASE_CHANNEL (self))) { self->priv->state = TP_TUBE_CHANNEL_STATE_NOT_OFFERED; self->priv->parameters = tp_asv_new (NULL, NULL); } else { self->priv->state = TP_TUBE_CHANNEL_STATE_LOCAL_PENDING; self->priv->parameters = tp_asv_new ("badger", G_TYPE_UINT, 42, NULL); } if (self->priv->supported_access_controls == NULL) { GArray *acontrols; TpSocketAccessControl a; acontrols = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); a = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; acontrols = g_array_append_val (acontrols, a); self->priv->supported_access_controls = acontrols; } tp_base_channel_register (TP_BASE_CHANNEL (self)); return object; } static void dispose (GObject *object) { TpTestsDBusTubeChannel *self = (TpTestsDBusTubeChannel *) object; tp_clear_pointer (&self->priv->dbus_names, g_hash_table_unref); if (self->priv->supported_access_controls != NULL) g_array_free (self->priv->supported_access_controls, TRUE); if (self->priv->parameters != NULL) g_hash_table_destroy (self->priv->parameters); if (self->priv->dbus_srv != NULL) dbus_server_unref (self->priv->dbus_srv); if (self->priv->dbus_conn != NULL) dbus_connection_unref (self->priv->dbus_conn); if (self->priv->dbus_srv_addr != NULL) g_free (self->priv->dbus_srv_addr); if (self->priv->socket_path != NULL) g_free (self->priv->socket_path); ((GObjectClass *) tp_tests_dbus_tube_channel_parent_class)->dispose ( object); } static void channel_close (TpBaseChannel *channel) { tp_base_channel_destroyed (channel); } static void fill_immutable_properties (TpBaseChannel *chan, GHashTable *properties) { TpBaseChannelClass *klass = TP_BASE_CHANNEL_CLASS ( tp_tests_dbus_tube_channel_parent_class); klass->fill_immutable_properties (chan, properties); tp_dbus_properties_mixin_fill_properties_hash ( G_OBJECT (chan), properties, TP_IFACE_CHANNEL_TYPE_DBUS_TUBE, "ServiceName", TP_IFACE_CHANNEL_TYPE_DBUS_TUBE, "SupportedAccessControls", NULL); if (!tp_base_channel_is_requested (chan)) { /* Parameters is immutable only for incoming tubes */ tp_dbus_properties_mixin_fill_properties_hash ( G_OBJECT (chan), properties, TP_IFACE_CHANNEL_INTERFACE_TUBE, "Parameters", NULL); } } static void tp_tests_dbus_tube_channel_class_init (TpTestsDBusTubeChannelClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl dbus_tube_props[] = { { "ServiceName", "service-name", NULL, }, { "DBusNames", "dbus-names", NULL, }, { "SupportedAccessControls", "supported-access-controls", NULL, }, { NULL } }; static TpDBusPropertiesMixinPropImpl tube_props[] = { { "Parameters", "parameters", NULL, }, { "State", "state", NULL, }, { NULL } }; object_class->constructor = constructor; object_class->get_property = tp_tests_dbus_tube_channel_get_property; object_class->set_property = tp_tests_dbus_tube_channel_set_property; object_class->dispose = dispose; base_class->channel_type = TP_IFACE_CHANNEL_TYPE_DBUS_TUBE; base_class->interfaces = tp_tests_dbus_tube_channel_interfaces; base_class->close = channel_close; base_class->fill_immutable_properties = fill_immutable_properties; /* base_class->target_handle_type is defined in subclasses */ param_spec = g_param_spec_string ("service-name", "Service Name", "the service name associated with this tube object.", "", G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SERVICE_NAME, param_spec); param_spec = g_param_spec_boxed ("dbus-names", "DBus Names", "DBusTube.DBusNames", TP_HASH_TYPE_DBUS_TUBE_PARTICIPANTS, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DBUS_NAMES, param_spec); param_spec = g_param_spec_boxed ("supported-access-controls", "Supported access-controls", "GArray containing supported access controls.", DBUS_TYPE_G_UINT_ARRAY, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SUPPORTED_ACCESS_CONTROLS, param_spec); param_spec = g_param_spec_string ( "dbus-address", "D-Bus address", "The D-Bus address on which this tube will listen for connections", "", G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DBUS_ADDRESS, param_spec); param_spec = g_param_spec_boxed ( "parameters", "Parameters", "parameters of the tube", TP_HASH_TYPE_STRING_VARIANT_MAP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PARAMETERS, param_spec); param_spec = g_param_spec_uint ( "state", "TpTubeState", "state of the tube", 0, NUM_TP_TUBE_CHANNEL_STATES - 1, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STATE, param_spec); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_TYPE_DBUS_TUBE, tp_dbus_properties_mixin_getter_gobject_properties, NULL, dbus_tube_props); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_INTERFACE_TUBE, tp_dbus_properties_mixin_getter_gobject_properties, NULL, tube_props); g_type_class_add_private (object_class, sizeof (TpTestsDBusTubeChannelPrivate)); } static gboolean check_access_control (TpTestsDBusTubeChannel *self, TpSocketAccessControl access_control) { guint i; for (i = 0; i < self->priv->supported_access_controls->len; i++) { if (g_array_index (self->priv->supported_access_controls, TpSocketAccessControl, i) == access_control) return TRUE; } return FALSE; } static void change_state (TpTestsDBusTubeChannel *self, TpTubeChannelState state) { self->priv->state = state; tp_svc_channel_interface_tube_emit_tube_channel_state_changed (self, state); } /* * Characters used are permissible both in filenames and in D-Bus names. (See * D-Bus specification for restrictions.) */ static void generate_ascii_string (guint len, gchar *buf) { const gchar *chars = "0123456789" "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "_-"; guint i; for (i = 0; i < len; i++) buf[i] = chars[g_random_int_range (0, 64)]; } static DBusHandlerResult filter_cb (DBusConnection *conn, DBusMessage *msg, void *user_data) { TpTestsDBusTubeChannel *self = TP_TESTS_DBUS_TUBE_CHANNEL (user_data); TpTestsDBusTubeChannelPrivate *priv = self->priv; gchar *marshalled = NULL; gint len; if (dbus_message_get_type (msg) == DBUS_MESSAGE_TYPE_SIGNAL && !tp_strdiff (dbus_message_get_interface (msg), "org.freedesktop.DBus.Local") && !tp_strdiff (dbus_message_get_member (msg), "Disconnected")) { /* connection was disconnected */ g_debug ("connection was disconnected"); dbus_connection_close (priv->dbus_conn); tp_clear_pointer (&priv->dbus_conn, dbus_connection_unref); goto out; } if (priv->dbus_local_name != NULL) { if (!dbus_message_set_sender (msg, priv->dbus_local_name)) g_debug ("dbus_message_set_sender failed"); } if (!dbus_message_marshal (msg, &marshalled, &len)) goto out; out: if (marshalled != NULL) g_free (marshalled); return DBUS_HANDLER_RESULT_HANDLED; } static dbus_bool_t allow_all_connections (DBusConnection *conn, unsigned long uid, void *data) { return TRUE; } static void new_connection_cb (DBusServer *server, DBusConnection *conn, void *data) { TpTestsDBusTubeChannel *self = TP_TESTS_DBUS_TUBE_CHANNEL (data); TpTestsDBusTubeChannelPrivate *priv = self->priv; guint32 serial; GSList *i; if (priv->dbus_conn != NULL) /* we already have a connection; drop this new one */ /* return without reffing conn means it will be dropped */ return; dbus_connection_ref (conn); dbus_connection_setup_with_g_main (conn, NULL); dbus_connection_add_filter (conn, filter_cb, self, NULL); priv->dbus_conn = conn; if (priv->access_control == TP_SOCKET_ACCESS_CONTROL_LOCALHOST) { /* By default libdbus use Credentials access control. If user wants * to use the Localhost access control, we need to bypass this check. */ dbus_connection_set_unix_user_function (conn, allow_all_connections, NULL, NULL); } /* We may have received messages to deliver before the local connection is * established. Theses messages are kept in the dbus_msg_queue list and are * delivered as soon as we get the connection. */ g_debug ("%u messages in the queue (%lu bytes)", g_slist_length (priv->dbus_msg_queue), priv->dbus_msg_queue_size); priv->dbus_msg_queue = g_slist_reverse (priv->dbus_msg_queue); for (i = priv->dbus_msg_queue; i != NULL; i = g_slist_delete_link (i, i)) { DBusMessage *msg = i->data; g_debug ("delivering queued message from '%s' to '%s' on the " "new connection", dbus_message_get_sender (msg), dbus_message_get_destination (msg)); dbus_connection_send (priv->dbus_conn, msg, &serial); dbus_message_unref (msg); } priv->dbus_msg_queue = NULL; priv->dbus_msg_queue_size = 0; } /* There is two step to enable receiving a D-Bus connection from the local * application: * - listen on the socket * - add the socket in the mainloop * * We need to know the socket path to return from the AcceptDBusTube D-Bus * call but the socket in the mainloop must be added only when we are ready * to receive connections, that is when the bytestream is fully open with the * remote contact. * * See also Bug 13891: * https://bugs.freedesktop.org/show_bug.cgi?id=13891 * */ static gboolean create_dbus_server (TpTestsDBusTubeChannel *self, GError **err) { #define SERVER_LISTEN_MAX_TRIES 5 TpTestsDBusTubeChannelPrivate *priv = self->priv; guint i; if (priv->dbus_srv != NULL) return TRUE; for (i = 0; i < SERVER_LISTEN_MAX_TRIES; i++) { gchar suffix[8]; DBusError error; g_free (priv->dbus_srv_addr); g_free (priv->socket_path); generate_ascii_string (8, suffix); priv->socket_path = g_strdup_printf ("%s/dbus-tpqt4-test-%.8s", g_get_tmp_dir (), suffix); priv->dbus_srv_addr = g_strdup_printf ("unix:path=%s", priv->socket_path); dbus_error_init (&error); priv->dbus_srv = dbus_server_listen (priv->dbus_srv_addr, &error); if (priv->dbus_srv != NULL) break; g_debug ("dbus_server_listen failed (try %u): %s: %s", i, error.name, error.message); dbus_error_free (&error); } if (priv->dbus_srv == NULL) { g_debug ("all attempts failed. Close the tube"); g_free (priv->dbus_srv_addr); priv->dbus_srv_addr = NULL; g_free (priv->socket_path); priv->socket_path = NULL; g_set_error (err, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Can't create D-Bus server"); return FALSE; } g_debug ("listening on %s", priv->dbus_srv_addr); dbus_server_set_new_connection_function (priv->dbus_srv, new_connection_cb, self, NULL); return TRUE; } static void dbus_tube_offer (TpSvcChannelTypeDBusTube *iface, GHashTable *parameters, guint access_control, DBusGMethodInvocation *context) { TpTestsDBusTubeChannel *self = (TpTestsDBusTubeChannel *) iface; GError *error = NULL; if (self->priv->state != TP_TUBE_CHANNEL_STATE_NOT_OFFERED) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Tube is not in the not offered state"); goto fail; } if (!check_access_control (self, access_control)) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Address type not supported with this access control"); goto fail; } self->priv->access_control = access_control; if (!create_dbus_server (self, &error)) goto fail; g_object_set (self, "parameters", parameters, NULL); change_state (self, TP_TUBE_CHANNEL_STATE_REMOTE_PENDING); tp_svc_channel_type_dbus_tube_return_from_offer (context, self->priv->dbus_srv_addr); return; fail: dbus_g_method_return_error (context, error); g_error_free (error); } static void dbus_tube_accept (TpSvcChannelTypeDBusTube *iface, guint access_control, DBusGMethodInvocation *context) { TpTestsDBusTubeChannel *self = (TpTestsDBusTubeChannel *) iface; GError *error = NULL; if (self->priv->state != TP_TUBE_CHANNEL_STATE_LOCAL_PENDING) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Tube is not in the local pending state"); goto fail; } if (!check_access_control (self, access_control)) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Address type not supported with this access control"); goto fail; } if (self->priv->close_on_accept) { tp_base_channel_close (TP_BASE_CHANNEL (self)); return; } if (!create_dbus_server (self, &error)) goto fail; change_state (self, TP_TUBE_CHANNEL_STATE_OPEN); tp_svc_channel_type_dbus_tube_return_from_accept (context, self->priv->dbus_srv_addr); return; fail: dbus_g_method_return_error (context, error); g_error_free (error); } static void dbus_tube_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeDBusTubeClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_type_dbus_tube_implement_##x (klass, dbus_tube_##x) IMPLEMENT(offer); IMPLEMENT(accept); #undef IMPLEMENT } /* Called to emulate a peer connecting to an offered tube */ void tp_tests_dbus_tube_channel_peer_connected_no_stream (TpTestsDBusTubeChannel *self, gchar *bus_name, TpHandle handle) { GHashTable *added; GArray *removed; if (self->priv->state == TP_TUBE_CHANNEL_STATE_REMOTE_PENDING) change_state (self, TP_TUBE_CHANNEL_STATE_OPEN); g_assert (self->priv->state == TP_TUBE_CHANNEL_STATE_OPEN); added = g_hash_table_new (g_direct_hash, g_direct_equal); removed = g_array_new (FALSE, FALSE, sizeof (TpHandle)); g_hash_table_insert (added, GUINT_TO_POINTER (handle), bus_name); // Add to the global hash table as well g_hash_table_insert (self->priv->dbus_names, GUINT_TO_POINTER (handle), bus_name); tp_svc_channel_type_dbus_tube_emit_dbus_names_changed (self, added, removed); g_hash_table_destroy (added); g_array_free (removed, TRUE); } /* Called to emulate a peer connecting to an offered tube */ void tp_tests_dbus_tube_channel_peer_disconnected (TpTestsDBusTubeChannel *self, TpHandle handle) { GHashTable *added; GArray *removed; g_assert (self->priv->state == TP_TUBE_CHANNEL_STATE_OPEN); added = g_hash_table_new (g_direct_hash, g_direct_equal); removed = g_array_new (FALSE, FALSE, sizeof (TpHandle)); g_array_append_val (removed, handle); // Remove from the global hash table as well g_hash_table_remove (self->priv->dbus_names, GUINT_TO_POINTER (handle)); tp_svc_channel_type_dbus_tube_emit_dbus_names_changed (self, added, removed); g_hash_table_destroy (added); g_array_free (removed, TRUE); } void tp_tests_dbus_tube_channel_set_close_on_accept ( TpTestsDBusTubeChannel *self, gboolean close_on_accept) { self->priv->close_on_accept = close_on_accept; } /* Contact DBus Tube */ G_DEFINE_TYPE (TpTestsContactDBusTubeChannel, tp_tests_contact_dbus_tube_channel, TP_TESTS_TYPE_DBUS_TUBE_CHANNEL) static void tp_tests_contact_dbus_tube_channel_init ( TpTestsContactDBusTubeChannel *self) { } static void tp_tests_contact_dbus_tube_channel_class_init ( TpTestsContactDBusTubeChannelClass *klass) { TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); base_class->target_handle_type = TP_HANDLE_TYPE_CONTACT; } /* Room DBus Tube */ G_DEFINE_TYPE (TpTestsRoomDBusTubeChannel, tp_tests_room_dbus_tube_channel, TP_TESTS_TYPE_DBUS_TUBE_CHANNEL) static void tp_tests_room_dbus_tube_channel_init ( TpTestsRoomDBusTubeChannel *self) { } static void tp_tests_room_dbus_tube_channel_class_init ( TpTestsRoomDBusTubeChannelClass *klass) { TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); base_class->target_handle_type = TP_HANDLE_TYPE_ROOM; } telepathy-qt-0.9.6.1/tests/lib/glib/dbus-tube-chan.h0000644000175100017520000001202112530423576023515 0ustar00kaffeinekaffeine00000000000000/* * dbus-tube-chan.h - Simple dbus tube channel * * Copyright (C) 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_DBUS_TUBE_CHAN_H__ #define __TP_DBUS_TUBE_CHAN_H__ #include #include #include #include G_BEGIN_DECLS /* Base Class */ typedef struct _TpTestsDBusTubeChannel TpTestsDBusTubeChannel; typedef struct _TpTestsDBusTubeChannelClass TpTestsDBusTubeChannelClass; typedef struct _TpTestsDBusTubeChannelPrivate TpTestsDBusTubeChannelPrivate; GType tp_tests_dbus_tube_channel_get_type (void); #define TP_TESTS_TYPE_DBUS_TUBE_CHANNEL \ (tp_tests_dbus_tube_channel_get_type ()) #define TP_TESTS_DBUS_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_DBUS_TUBE_CHANNEL, \ TpTestsDBusTubeChannel)) #define TP_TESTS_DBUS_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_DBUS_TUBE_CHANNEL, \ TpTestsDBusTubeChannelClass)) #define TP_TESTS_IS_DBUS_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_DBUS_TUBE_CHANNEL)) #define TP_TESTS_IS_DBUS_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_DBUS_TUBE_CHANNEL)) #define TP_TESTS_DBUS_TUBE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_DBUS_TUBE_CHANNEL, \ TpTestsDBusTubeChannelClass)) struct _TpTestsDBusTubeChannelClass { TpBaseChannelClass parent_class; TpTextMixinClass text_class; TpDBusPropertiesMixinClass dbus_properties_class; }; struct _TpTestsDBusTubeChannel { TpBaseChannel parent; TpTextMixin text; TpTestsDBusTubeChannelPrivate *priv; }; /* Contact DBus Tube */ typedef struct _TpTestsContactDBusTubeChannel TpTestsContactDBusTubeChannel; typedef struct _TpTestsContactDBusTubeChannelClass TpTestsContactDBusTubeChannelClass; GType tp_tests_contact_dbus_tube_channel_get_type (void); void tp_tests_dbus_tube_channel_set_close_on_accept ( TpTestsDBusTubeChannel *self, gboolean close_on_accept); void tp_tests_dbus_tube_channel_peer_connected_no_stream ( TpTestsDBusTubeChannel *self, gchar *bus_name, TpHandle handle); void tp_tests_dbus_tube_channel_peer_disconnected ( TpTestsDBusTubeChannel *self, TpHandle handle); #define TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL \ (tp_tests_contact_dbus_tube_channel_get_type ()) #define TP_TESTS_CONTACT_DBUS_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL, \ TpTestsContactDBusTubeChannel)) #define TP_TESTS_CONTACT_DBUS_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL, \ TpTestsContactDBusTubeChannelClass)) #define TP_TESTS_IS_CONTACT_DBUS_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL)) #define TP_TESTS_IS_CONTACT_DBUS_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL)) #define TP_TESTS_CONTACT_DBUS_TUBE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL, \ TpTestsContactDBusTubeChannelClass)) struct _TpTestsContactDBusTubeChannelClass { TpTestsDBusTubeChannelClass parent_class; }; struct _TpTestsContactDBusTubeChannel { TpTestsDBusTubeChannel parent; }; /* Room DBus Tube */ typedef struct _TpTestsRoomDBusTubeChannel TpTestsRoomDBusTubeChannel; typedef struct _TpTestsRoomDBusTubeChannelClass TpTestsRoomDBusTubeChannelClass; GType tp_tests_room_dbus_tube_channel_get_type (void); #define TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL \ (tp_tests_room_dbus_tube_channel_get_type ()) #define TP_TESTS_ROOM_DBUS_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL, \ TpTestsRoomDBusTubeChannel)) #define TP_TESTS_ROOM_DBUS_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL, \ TpTestsRoomDBusTubeChannelClass)) #define TP_TESTS_IS_ROOM_DBUS_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL)) #define TP_TESTS_IS_ROOM_DBUS_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL)) #define TP_TESTS_ROOM_DBUS_TUBE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL, \ TpTestsRoomDBusTubeChannelClass)) struct _TpTestsRoomDBusTubeChannelClass { TpTestsDBusTubeChannelClass parent_class; }; struct _TpTestsRoomDBusTubeChannel { TpTestsDBusTubeChannel parent; }; G_END_DECLS #endif /* #ifndef __TP_DBUS_TUBE_CHAN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/textchan-null.c0000644000175100017520000004232212530423576023504 0ustar00kaffeinekaffeine00000000000000/* * /dev/null as a text channel * * Copyright (C) 2008 Collabora Ltd. * Copyright (C) 2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ //TODO This either needs to be ported away from TpTextMixin, //or we need to use another test CM instead of this one on the tests where it is used. //tp-glib has not ported it because it is used in TpTextMixin tests. #define _TP_IGNORE_DEPRECATIONS #include "textchan-null.h" #include #include #include #include #include #include #include static void text_iface_init (gpointer iface, gpointer data); static void channel_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (TpTestsTextChannelNull, tp_tests_text_channel_null, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT, text_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL)) G_DEFINE_TYPE_WITH_CODE (TpTestsPropsTextChannel, tp_tests_props_text_channel, TP_TESTS_TYPE_TEXT_CHANNEL_NULL, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init)) G_DEFINE_TYPE_WITH_CODE (TpTestsPropsGroupTextChannel, tp_tests_props_group_text_channel, TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, tp_group_mixin_iface_init)) static const char *tp_tests_text_channel_null_interfaces[] = { NULL }; /* type definition stuff */ enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, N_PROPS }; struct _TpTestsTextChannelNullPrivate { TpBaseConnection *conn; gchar *object_path; TpHandle handle; unsigned closed:1; unsigned disposed:1; }; static void tp_tests_text_channel_null_init (TpTestsTextChannelNull *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_TEXT_CHANNEL_NULL, TpTestsTextChannelNullPrivate); } static void tp_tests_props_text_channel_init (TpTestsPropsTextChannel *self) { self->dbus_property_interfaces_retrieved = g_hash_table_new (NULL, NULL); } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (tp_tests_text_channel_null_parent_class)->constructor (type, n_props, props); TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); tp_dbus_daemon_register_object ( tp_base_connection_get_dbus_daemon (self->priv->conn), self->priv->object_path, self); tp_text_mixin_init (object, G_STRUCT_OFFSET (TpTestsTextChannelNull, text), contact_repo); tp_text_mixin_set_message_types (object, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION, TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE, G_MAXUINT); return object; } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object); TpTestsTextChannelNullClass *klass = TP_TESTS_TEXT_CHANNEL_NULL_GET_CLASS (self); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_TEXT); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; case PROP_TARGET_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->priv->handle)); } break; case PROP_REQUESTED: g_value_set_boolean (value, TRUE); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, self->priv->conn->self_handle); break; case PROP_INITIATOR_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->priv->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->priv->conn->self_handle)); } break; case PROP_INTERFACES: g_value_set_boxed (value, klass->interfaces); break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object); switch (property_id) { case PROP_OBJECT_PATH: g_free (self->priv->object_path); self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE: /* we don't ref it here because we don't necessarily have access to the * contact repo yet - instead we ref it in the constructor. */ self->priv->handle = g_value_get_uint (value); break; case PROP_HANDLE_TYPE: case PROP_CHANNEL_TYPE: /* these properties are writable in the interface, but not actually * meaningfully changable on this channel, so we do nothing */ break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } void tp_tests_text_channel_null_close (TpTestsTextChannelNull *self) { if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); tp_dbus_daemon_unregister_object ( tp_base_connection_get_dbus_daemon (self->priv->conn), self); } } static void dispose (GObject *object) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object); if (self->priv->disposed) return; self->priv->disposed = TRUE; tp_tests_text_channel_null_close (self); ((GObjectClass *) tp_tests_text_channel_null_parent_class)->dispose (object); } static void finalize (GObject *object) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object); g_free (self->priv->object_path); tp_text_mixin_finalize (object); ((GObjectClass *) tp_tests_text_channel_null_parent_class)->finalize (object); } static void tp_tests_text_channel_null_class_init (TpTestsTextChannelNullClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (TpTestsTextChannelNullPrivate)); klass->interfaces = tp_tests_text_channel_null_interfaces; object_class->constructor = constructor; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "The string obtained by inspecting the target handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); tp_text_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsTextChannelNullClass, text_class)); } static void tp_tests_props_text_channel_getter_gobject_properties (GObject *object, GQuark interface, GQuark name, GValue *value, gpointer getter_data) { TpTestsPropsTextChannel *self = TP_TESTS_PROPS_TEXT_CHANNEL (object); g_hash_table_insert (self->dbus_property_interfaces_retrieved, GUINT_TO_POINTER (interface), GUINT_TO_POINTER (interface)); tp_dbus_properties_mixin_getter_gobject_properties (object, interface, name, value, getter_data); } static void props_finalize (GObject *object) { TpTestsPropsTextChannel *self = TP_TESTS_PROPS_TEXT_CHANNEL (object); g_hash_table_unref (self->dbus_property_interfaces_retrieved); ((GObjectClass *) tp_tests_props_text_channel_parent_class)->finalize (object); } static void tp_tests_props_text_channel_class_init (TpTestsPropsTextChannelClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_tests_props_text_channel_getter_gobject_properties, NULL, channel_props, }, { NULL } }; object_class->finalize = props_finalize; klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsPropsTextChannelClass, dbus_properties_class)); } static const char *tp_tests_props_group_text_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_GROUP, NULL }; static void tp_tests_props_group_text_channel_init (TpTestsPropsGroupTextChannel *self) { } static void group_constructed (GObject *self) { TpBaseConnection *conn = TP_TESTS_TEXT_CHANNEL_NULL (self)->priv->conn; void (*chain_up) (GObject *) = ((GObjectClass *) tp_tests_props_group_text_channel_parent_class)->constructed; if (chain_up != NULL) chain_up (self); tp_group_mixin_init (self, G_STRUCT_OFFSET (TpTestsPropsGroupTextChannel, group), tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT), tp_base_connection_get_self_handle (conn)); tp_group_mixin_change_flags (self, TP_CHANNEL_GROUP_FLAG_PROPERTIES, 0); } static void group_finalize (GObject *self) { tp_group_mixin_finalize (self); ((GObjectClass *) tp_tests_props_group_text_channel_parent_class)->finalize (self); } static gboolean dummy_add_remove_member (GObject *obj, TpHandle handle, const gchar *message, GError **error) { return TRUE; } static void group_iface_props_getter (GObject *object, GQuark interface, GQuark name, GValue *value, gpointer getter_data) { TpTestsPropsTextChannel *self = TP_TESTS_PROPS_TEXT_CHANNEL (object); g_hash_table_insert (self->dbus_property_interfaces_retrieved, GUINT_TO_POINTER (interface), GUINT_TO_POINTER (interface)); tp_group_mixin_get_dbus_property (object, interface, name, value, getter_data); } static void tp_tests_props_group_text_channel_class_init (TpTestsPropsGroupTextChannelClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpTestsTextChannelNullClass *null_class = (TpTestsTextChannelNullClass *) klass; static TpDBusPropertiesMixinPropImpl group_props[] = { { "GroupFlags", NULL, NULL }, { "HandleOwners", NULL, NULL }, { "LocalPendingMembers", NULL, NULL }, { "Members", NULL, NULL }, { "RemotePendingMembers", NULL, NULL }, { "SelfHandle", NULL, NULL }, { NULL } }; null_class->interfaces = tp_tests_props_group_text_channel_interfaces; object_class->constructed = group_constructed; object_class->finalize = group_finalize; tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsPropsGroupTextChannelClass, group_class), dummy_add_remove_member, dummy_add_remove_member); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP, group_iface_props_getter, NULL, group_props); } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); tp_tests_text_channel_null_close (self); tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); self->get_channel_type_called++; tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_TEXT); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); self->get_handle_called++; tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, self->priv->handle); } static void channel_get_interfaces (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); TpTestsTextChannelNullClass *klass = TP_TESTS_TEXT_CHANNEL_NULL_GET_CLASS (self); self->get_interfaces_called++; tp_svc_channel_return_from_get_interfaces (context, klass->interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void text_send (TpSvcChannelTypeText *iface, guint type, const gchar *text, DBusGMethodInvocation *context) { /* silently swallow the message */ tp_svc_channel_type_text_return_from_send (context); } static void text_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeTextClass *klass = iface; tp_text_mixin_iface_init (iface, data); #define IMPLEMENT(x) tp_svc_channel_type_text_implement_##x (klass, text_##x) IMPLEMENT (send); #undef IMPLEMENT } GHashTable * tp_tests_text_channel_get_props (TpTestsTextChannelNull *self) { GHashTable *props; TpHandleType handle_type; TpHandle handle; gchar *target_id; gboolean requested; TpHandle initiator_handle; gchar *initiator_id; GStrv interfaces; g_object_get (self, "handle-type", &handle_type, "handle", &handle, "target-id", &target_id, "requested", &requested, "initiator-handle", &initiator_handle, "initiator-id", &initiator_id, "interfaces", &interfaces, NULL); props = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, handle_type, TP_PROP_CHANNEL_TARGET_HANDLE, G_TYPE_UINT, handle, TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, target_id, TP_PROP_CHANNEL_REQUESTED, G_TYPE_BOOLEAN, requested, TP_PROP_CHANNEL_INITIATOR_HANDLE, G_TYPE_UINT, initiator_handle, TP_PROP_CHANNEL_INITIATOR_ID, G_TYPE_STRING, initiator_id, TP_PROP_CHANNEL_INTERFACES, G_TYPE_STRV, interfaces, NULL); g_free (target_id); g_free (initiator_id); g_strfreev (interfaces); return props; } telepathy-qt-0.9.6.1/tests/lib/glib/textchan-null.h0000644000175100017520000001174212530423576023513 0ustar00kaffeinekaffeine00000000000000/* * /dev/null as a text channel * * Copyright (C) 2008 Collabora Ltd. * Copyright (C) 2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_TEXT_CHANNEL_NULL_H__ #define __TP_TESTS_TEXT_CHANNEL_NULL_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _TpTestsTextChannelNull TpTestsTextChannelNull; typedef struct _TpTestsTextChannelNullClass TpTestsTextChannelNullClass; typedef struct _TpTestsTextChannelNullPrivate TpTestsTextChannelNullPrivate; GType tp_tests_text_channel_null_get_type (void); #define TP_TESTS_TYPE_TEXT_CHANNEL_NULL \ (tp_tests_text_channel_null_get_type ()) #define TP_TESTS_TEXT_CHANNEL_NULL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_NULL, \ TpTestsTextChannelNull)) #define TP_TESTS_TEXT_CHANNEL_NULL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_TEXT_CHANNEL_NULL, \ TpTestsTextChannelNullClass)) #define TP_TESTS_IS_TEXT_CHANNEL_NULL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_NULL)) #define TP_TESTS_IS_TEXT_CHANNEL_NULL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_TEXT_CHANNEL_NULL)) #define TP_TESTS_TEXT_CHANNEL_NULL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_NULL, \ TpTestsTextChannelNullClass)) struct _TpTestsTextChannelNullClass { GObjectClass parent_class; const gchar **interfaces; TpTextMixinClass text_class; }; struct _TpTestsTextChannelNull { GObject parent; TpTextMixin text; guint get_handle_called; guint get_interfaces_called; guint get_channel_type_called; TpTestsTextChannelNullPrivate *priv; }; /* Subclass with D-Bus properties */ typedef struct _TestPropsTextChannel TpTestsPropsTextChannel; typedef struct _TestPropsTextChannelClass TpTestsPropsTextChannelClass; struct _TestPropsTextChannel { TpTestsTextChannelNull parent; GHashTable *dbus_property_interfaces_retrieved; }; struct _TestPropsTextChannelClass { TpTestsTextChannelNullClass parent; TpDBusPropertiesMixinClass dbus_properties_class; }; GType tp_tests_props_text_channel_get_type (void); #define TP_TESTS_TYPE_PROPS_TEXT_CHANNEL \ (tp_tests_props_text_channel_get_type ()) #define TP_TESTS_PROPS_TEXT_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, \ TpTestsPropsTextChannel)) #define TP_TESTS_PROPS_TEXT_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, \ TpTestsPropsTextChannelClass)) #define TP_TESTS_IS_PROPS_TEXT_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL)) #define TP_TESTS_IS_PROPS_TEXT_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL)) #define TP_TESTS_PROPS_TEXT_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, \ TpTestsPropsTextChannelClass)) /* Subclass with D-Bus properties and Group */ typedef struct _TestPropsGroupTextChannel TpTestsPropsGroupTextChannel; typedef struct _TestPropsGroupTextChannelClass TpTestsPropsGroupTextChannelClass; struct _TestPropsGroupTextChannel { TpTestsPropsTextChannel parent; TpGroupMixin group; }; struct _TestPropsGroupTextChannelClass { TpTestsPropsTextChannelClass parent; TpGroupMixinClass group_class; }; GType tp_tests_props_group_text_channel_get_type (void); #define TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL \ (tp_tests_props_group_text_channel_get_type ()) #define TP_TESTS_PROPS_GROUP_TEXT_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, \ TpTestsPropsGroupTextChannel)) #define TP_TESTS_PROPS_GROUP_TEXT_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, \ TpTestsPropsGroupTextChannelClass)) #define TP_TESTS_IS_PROPS_GROUP_TEXT_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL)) #define TP_TESTS_IS_PROPS_GROUP_TEXT_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL)) #define TP_TESTS_PROPS_GROUP_TEXT_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, \ TpTestsPropsGroupTextChannelClass)) void tp_tests_text_channel_null_close (TpTestsTextChannelNull *self); GHashTable * tp_tests_text_channel_get_props (TpTestsTextChannelNull *self); G_END_DECLS #endif /* #ifndef __TP_TESTS_TEXT_CHANNEL_NULL_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/params-cm.c0000644000175100017520000001454312530423576022602 0ustar00kaffeinekaffeine00000000000000/* * params-cm.h - source for TpTestsParamConnectionManager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "params-cm.h" #include #include #include G_DEFINE_TYPE (TpTestsParamConnectionManager, tp_tests_param_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) struct _TpTestsParamConnectionManagerPrivate { int dummy; }; static void tp_tests_param_connection_manager_init ( TpTestsParamConnectionManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER, TpTestsParamConnectionManagerPrivate); } enum { TP_TESTS_PARAM_STRING, TP_TESTS_PARAM_INT16, TP_TESTS_PARAM_INT32, TP_TESTS_PARAM_UINT16, TP_TESTS_PARAM_UINT32, TP_TESTS_PARAM_INT64, TP_TESTS_PARAM_UINT64, TP_TESTS_PARAM_BOOLEAN, TP_TESTS_PARAM_DOUBLE, TP_TESTS_PARAM_ARRAY_STRINGS, TP_TESTS_PARAM_ARRAY_BYTES, TP_TESTS_PARAM_OBJECT_PATH, TP_TESTS_PARAM_LC_STRING, TP_TESTS_PARAM_UC_STRING, NUM_PARAM }; static gboolean filter_string_ascii_case (const TpCMParamSpec *param_spec, GValue *value, GError **error) { const gchar *s = g_value_get_string (value); guint i; for (i = 0; s[i] != '\0'; i++) { int c = s[i]; /* just to avoid -Wtype-limits */ if (c < 0 || c > 127) /* char might be signed or unsigned */ { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "%s must be ASCII", param_spec->name); return FALSE; } } if (GINT_TO_POINTER (param_spec->filter_data)) g_value_take_string (value, g_ascii_strup (s, -1)); else g_value_take_string (value, g_ascii_strdown (s, -1)); return TRUE; } static TpCMParamSpec param_example_params[] = { { "a-string", "s", G_TYPE_STRING, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, "the default string", G_STRUCT_OFFSET (TpTestsCMParams, a_string), NULL, NULL, NULL }, { "a-int16", "n", G_TYPE_INT, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER (42), G_STRUCT_OFFSET (TpTestsCMParams, a_int16), NULL, NULL, NULL }, { "a-int32", "i", G_TYPE_INT, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER (42), G_STRUCT_OFFSET (TpTestsCMParams, a_int32), NULL, NULL, NULL }, { "a-uint16", "q", G_TYPE_UINT, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_uint16), NULL, NULL, NULL }, { "a-uint32", "u", G_TYPE_UINT, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_uint32), NULL, NULL, NULL }, { "a-int64", "x", G_TYPE_INT64, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_int64), NULL, NULL, NULL }, { "a-uint64", "t", G_TYPE_UINT64, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_uint64), NULL, NULL, NULL }, { "a-boolean", "b", G_TYPE_BOOLEAN, TP_CONN_MGR_PARAM_FLAG_REQUIRED, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_boolean), NULL, NULL, NULL }, { "a-double", "d", G_TYPE_DOUBLE, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_double), NULL, NULL, NULL }, { "a-array-of-strings", "as", 0, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_array_of_strings), NULL, NULL, NULL }, { "a-array-of-bytes", "ay", 0, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_array_of_bytes), NULL, NULL, NULL }, { "a-object-path", "o", 0, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, a_object_path), NULL, NULL, NULL }, /* demo of a filter */ { "lc-string", "s", G_TYPE_STRING, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, lc_string), filter_string_ascii_case, GINT_TO_POINTER (FALSE), NULL }, { "uc-string", "s", G_TYPE_STRING, 0, NULL, G_STRUCT_OFFSET (TpTestsCMParams, uc_string), filter_string_ascii_case, GINT_TO_POINTER (TRUE), NULL }, { NULL } }; static TpTestsCMParams *params = NULL; static gpointer alloc_params (void) { params = g_slice_new0 (TpTestsCMParams); return params; } static void free_params (gpointer p) { /* CM user is responsible to free params so he can check their values */ params = (TpTestsCMParams *) p; params->would_have_been_freed = TRUE; } static const TpCMProtocolSpec example_protocols[] = { { "example", param_example_params, alloc_params, free_params }, { NULL, NULL } }; static TpBaseConnection * new_connection (TpBaseConnectionManager *self, const gchar *proto, TpIntSet *params_present, gpointer parsed_params, GError **error) { g_set_error (error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "No connection for you"); return NULL; } static void tp_tests_param_connection_manager_class_init ( TpTestsParamConnectionManagerClass *klass) { TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; g_type_class_add_private (klass, sizeof (TpTestsParamConnectionManagerPrivate)); param_example_params[TP_TESTS_PARAM_ARRAY_STRINGS].gtype = G_TYPE_STRV; param_example_params[TP_TESTS_PARAM_ARRAY_BYTES].gtype = DBUS_TYPE_G_UCHAR_ARRAY; param_example_params[TP_TESTS_PARAM_OBJECT_PATH].gtype = DBUS_TYPE_G_OBJECT_PATH; base_class->new_connection = new_connection; base_class->cm_dbus_name = "params_cm"; base_class->protocol_params = example_protocols; } TpTestsCMParams * tp_tests_param_connection_manager_steal_params_last_conn (void) { TpTestsCMParams *p = params; params = NULL; return p; } void tp_tests_param_connection_manager_free_params (TpTestsCMParams *p) { g_free (p->a_string); g_strfreev (p->a_array_of_strings); if (p->a_array_of_bytes != NULL) g_array_free (p->a_array_of_bytes, TRUE); g_free (p->a_object_path); g_slice_free (TpTestsCMParams, p); } telepathy-qt-0.9.6.1/tests/lib/glib/params-cm.h0000644000175100017520000000652712530423576022612 0ustar00kaffeinekaffeine00000000000000/* * params-cm.h - header for TpTestsParamConnectionManager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __TP_TESTS_PARAM_CONNECTION_MANAGER_H__ #define __TP_TESTS_PARAM_CONNECTION_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _TpTestsParamConnectionManager TpTestsParamConnectionManager; typedef struct _TpTestsParamConnectionManagerPrivate TpTestsParamConnectionManagerPrivate; typedef struct _TpTestsParamConnectionManagerClass TpTestsParamConnectionManagerClass; typedef struct _TpTestsParamConnectionManagerClassPrivate TpTestsParamConnectionManagerClassPrivate; struct _TpTestsParamConnectionManagerClass { TpBaseConnectionManagerClass parent_class; TpTestsParamConnectionManagerClassPrivate *priv; }; struct _TpTestsParamConnectionManager { TpBaseConnectionManager parent; TpTestsParamConnectionManagerPrivate *priv; }; GType tp_tests_param_connection_manager_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER \ (tp_tests_param_connection_manager_get_type ()) #define TP_TESTS_PARAM_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER, \ TpTestsParamConnectionManager)) #define TP_TESTS_PARAM_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER, \ TpTestsParamConnectionManagerClass)) #define IS_PARAM_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER)) #define IS_PARAM_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER)) #define TP_TESTS_PARAM_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_PARAM_CONNECTION_MANAGER, \ TpTestsParamConnectionManagerClass)) typedef struct { gchar *a_string; gint a_int16; gint a_int32; guint a_uint16; guint a_uint32; gint64 a_int64; guint64 a_uint64; gboolean a_boolean; gdouble a_double; GStrv a_array_of_strings; GArray *a_array_of_bytes; gchar *a_object_path; gchar *lc_string; gchar *uc_string; gboolean would_have_been_freed; } TpTestsCMParams; TpTestsCMParams * tp_tests_param_connection_manager_steal_params_last_conn ( void); void tp_tests_param_connection_manager_free_params (TpTestsCMParams *params); G_END_DECLS #endif /* #ifndef __TP_TESTS_PARAM_CONNECTION_MANAGER_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/contacts-noroster-conn.c0000644000175100017520000000264412530423576025343 0ustar00kaffeinekaffeine00000000000000/* * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "contacts-noroster-conn.h" #include #include #include #include #include G_DEFINE_TYPE_WITH_CODE (TpTestsContactsNorosterConnection, tp_tests_contacts_noroster_connection, TP_TESTS_TYPE_SIMPLE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, NULL); ); static void tp_tests_contacts_noroster_connection_init (TpTestsContactsNorosterConnection *self) { } static void finalize (GObject *object) { G_OBJECT_CLASS (tp_tests_contacts_noroster_connection_parent_class)->finalize (object); } static void tp_tests_contacts_noroster_connection_class_init (TpTestsContactsNorosterConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_CONTACTS, NULL }; object_class->finalize = finalize; base_class->interfaces_always_present = interfaces_always_present; } telepathy-qt-0.9.6.1/tests/lib/glib/contacts-noroster-conn.h0000644000175100017520000000377312530423576025354 0ustar00kaffeinekaffeine00000000000000/* * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_CONTACTS_NOROSTER_CONN_H__ #define __TP_TESTS_CONTACTS_NOROSTER_CONN_H__ #include #include #include "simple-conn.h" G_BEGIN_DECLS typedef struct _TpTestsContactsNorosterConnection TpTestsContactsNorosterConnection; typedef struct _TpTestsContactsNorosterConnectionClass TpTestsContactsNorosterConnectionClass; struct _TpTestsContactsNorosterConnectionClass { TpTestsSimpleConnectionClass parent_class; }; struct _TpTestsContactsNorosterConnection { TpTestsSimpleConnection parent; }; GType tp_tests_contacts_noroster_connection_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION \ (tp_tests_contacts_noroster_connection_get_type ()) #define TP_TESTS_CONTACTS_NOROSTER_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION, \ TpTestsContactsNorosterConnection)) #define TP_TESTS_CONTACTS_NOROSTER_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION, \ TpTestsContactsNorosterConnectionClass)) #define TP_TESTS_CONTACTS_NOROSTER_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION)) #define TP_TESTS_CONTACTS_NOROSTER_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION)) #define TP_TESTS_CONTACTS_NOROSTER_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION, \ TpTestsContactsNorosterConnectionClass)) G_END_DECLS #endif /* #ifndef __TP_TESTS_CONTACTS_NOROSTER_CONN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/util.c0000644000175100017520000002675312530423576021705 0ustar00kaffeinekaffeine00000000000000/* Simple utility code used by the regression tests. * * Copyright © 2008-2010 Collabora Ltd. * Copyright © 2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "config.h" #include "util.h" #include #include #include #ifdef G_OS_UNIX # include /* for alarm() */ #endif #ifdef HAVE_GIO_UNIX #include #include #endif void tp_tests_proxy_run_until_prepared (gpointer proxy, const GQuark *features) { GError *error = NULL; tp_tests_proxy_run_until_prepared_or_failed (proxy, features, &error); g_assert_no_error (error); } /* A GAsyncReadyCallback whose user_data is a GAsyncResult **. It writes a * reference to the result into that pointer. */ void tp_tests_result_ready_cb (GObject *object, GAsyncResult *res, gpointer user_data) { GAsyncResult **result = user_data; *result = g_object_ref (res); } /* Run until *result contains a result. Intended to be used with a pending * async call that uses tp_tests_result_ready_cb. */ void tp_tests_run_until_result (GAsyncResult **result) { /* not synchronous */ g_assert (*result == NULL); while (*result == NULL) g_main_context_iteration (NULL, TRUE); } gboolean tp_tests_proxy_run_until_prepared_or_failed (gpointer proxy, const GQuark *features, GError **error) { GAsyncResult *result = NULL; gboolean r; tp_proxy_prepare_async (proxy, features, tp_tests_result_ready_cb, &result); tp_tests_run_until_result (&result); r = tp_proxy_prepare_finish (proxy, result, error); g_object_unref (result); return r; } TpDBusDaemon * tp_tests_dbus_daemon_dup_or_die (void) { TpDBusDaemon *d = tp_dbus_daemon_dup (NULL); /* In a shared library, this would be very bad (see fd.o #18832), but in a * regression test that's going to be run under a temporary session bus, * it's just what we want. */ if (d == NULL) { g_error ("Unable to connect to session bus"); } return d; } static void introspect_cb (TpProxy *proxy G_GNUC_UNUSED, const gchar *xml G_GNUC_UNUSED, const GError *error G_GNUC_UNUSED, gpointer user_data, GObject *weak_object G_GNUC_UNUSED) { g_main_loop_quit (user_data); } void tp_tests_proxy_run_until_dbus_queue_processed (gpointer proxy) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); tp_cli_dbus_introspectable_call_introspect (proxy, -1, introspect_cb, loop, NULL, NULL); g_main_loop_run (loop); g_main_loop_unref (loop); } void _test_assert_empty_strv (const char *file, int line, gconstpointer strv) { const gchar * const *strings = strv; if (strv != NULL && strings[0] != NULL) { guint i; g_message ("%s:%d: expected empty strv, but got:", file, line); for (i = 0; strings[i] != NULL; i++) { g_message ("* \"%s\"", strings[i]); } g_error ("%s:%d: strv wasn't empty (see above for contents", file, line); } } void _tp_tests_assert_strv_equals (const char *file, int line, const char *expected_desc, gconstpointer expected_strv, const char *actual_desc, gconstpointer actual_strv) { const gchar * const *expected = expected_strv; const gchar * const *actual = actual_strv; guint i; g_assert (expected != NULL); g_assert (actual != NULL); for (i = 0; expected[i] != NULL || actual[i] != NULL; i++) { if (expected[i] == NULL) { g_error ("%s:%d: assertion failed: (%s)[%u] == (%s)[%u]: " "NULL == %s", file, line, expected_desc, i, actual_desc, i, actual[i]); } else if (actual[i] == NULL) { g_error ("%s:%d: assertion failed: (%s)[%u] == (%s)[%u]: " "%s == NULL", file, line, expected_desc, i, actual_desc, i, expected[i]); } else if (tp_strdiff (expected[i], actual[i])) { g_error ("%s:%d: assertion failed: (%s)[%u] == (%s)[%u]: " "%s == %s", file, line, expected_desc, i, actual_desc, i, expected[i], actual[i]); } } } void tp_tests_create_conn (GType conn_type, const gchar *account, gboolean connect, TpBaseConnection **service_conn, TpConnection **client_conn) { TpDBusDaemon *dbus; TpSimpleClientFactory *factory; gchar *name; gchar *conn_path; GError *error = NULL; g_assert (service_conn != NULL); g_assert (client_conn != NULL); dbus = tp_tests_dbus_daemon_dup_or_die (); factory = (TpSimpleClientFactory *) tp_automatic_client_factory_new (dbus); *service_conn = tp_tests_object_new_static_class ( conn_type, "account", account, "protocol", "simple", NULL); g_assert (*service_conn != NULL); g_assert (tp_base_connection_register (*service_conn, "simple", &name, &conn_path, &error)); g_assert_no_error (error); *client_conn = tp_simple_client_factory_ensure_connection (factory, conn_path, NULL, &error); g_assert (*client_conn != NULL); g_assert_no_error (error); if (connect) { GQuark conn_features[] = { TP_CONNECTION_FEATURE_CONNECTED, 0 }; tp_cli_connection_call_connect (*client_conn, -1, NULL, NULL, NULL, NULL); tp_tests_proxy_run_until_prepared (*client_conn, conn_features); } g_free (name); g_free (conn_path); g_object_unref (dbus); g_object_unref (factory); } void tp_tests_create_and_connect_conn (GType conn_type, const gchar *account, TpBaseConnection **service_conn, TpConnection **client_conn) { tp_tests_create_conn (conn_type, account, TRUE, service_conn, client_conn); } /* This object exists solely so that tests/tests.supp can ignore "leaked" * classes. */ gpointer tp_tests_object_new_static_class (GType type, ...) { va_list ap; GObject *object; const gchar *first_property; va_start (ap, type); first_property = va_arg (ap, const gchar *); object = g_object_new_valist (type, first_property, ap); va_end (ap); return object; } static gboolean time_out (gpointer nil G_GNUC_UNUSED) { g_error ("Timed out"); g_assert_not_reached (); return FALSE; } void tp_tests_abort_after (guint sec) { gboolean debugger = FALSE; gchar *contents; if (g_file_get_contents ("/proc/self/status", &contents, NULL, NULL)) { /* http://www.youtube.com/watch?v=SXmv8quf_xM */ #define TRACER_T "\nTracerPid:\t" gchar *line = strstr (contents, TRACER_T); if (line != NULL) { gchar *value = line + strlen (TRACER_T); if (value[0] != '0' || value[1] != '\n') debugger = TRUE; } g_free (contents); } if (g_getenv ("TP_TESTS_NO_TIMEOUT") != NULL || debugger) return; g_timeout_add_seconds (sec, time_out, NULL); #ifdef G_OS_UNIX /* On Unix, we can kill the process more reliably; this is a safety-catch * in case it deadlocks or something, in which case the main loop won't be * processed. The default handler for SIGALRM is process termination. */ alarm (sec + 2); #endif } void tp_tests_init (int *argc, char ***argv) { g_type_init (); tp_tests_abort_after (10); tp_debug_set_flags ("all"); g_test_init (argc, argv, NULL); } void _tp_destroy_socket_control_list (gpointer data) { GArray *tab = data; g_array_unref (tab); } GValue * _tp_create_local_socket (TpSocketAddressType address_type, TpSocketAccessControl access_control, GSocketService **service, gchar **unix_address, GError **error) { gboolean success; GSocketAddress *address, *effective_address; GValue *address_gvalue; g_assert (service != NULL); g_assert (unix_address != NULL); switch (access_control) { case TP_SOCKET_ACCESS_CONTROL_LOCALHOST: case TP_SOCKET_ACCESS_CONTROL_CREDENTIALS: case TP_SOCKET_ACCESS_CONTROL_PORT: break; default: g_assert_not_reached (); } switch (address_type) { #ifdef HAVE_GIO_UNIX case TP_SOCKET_ADDRESS_TYPE_UNIX: { address = g_unix_socket_address_new (tmpnam (NULL)); break; } #endif case TP_SOCKET_ADDRESS_TYPE_IPV4: case TP_SOCKET_ADDRESS_TYPE_IPV6: { GInetAddress *localhost; localhost = g_inet_address_new_loopback ( address_type == TP_SOCKET_ADDRESS_TYPE_IPV4 ? G_SOCKET_FAMILY_IPV4 : G_SOCKET_FAMILY_IPV6); address = g_inet_socket_address_new (localhost, 0); g_object_unref (localhost); break; } default: g_assert_not_reached (); } *service = g_socket_service_new (); success = g_socket_listener_add_address ( G_SOCKET_LISTENER (*service), address, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, NULL, &effective_address, NULL); g_assert (success); switch (address_type) { #ifdef HAVE_GIO_UNIX case TP_SOCKET_ADDRESS_TYPE_UNIX: *unix_address = g_strdup (g_unix_socket_address_get_path ( G_UNIX_SOCKET_ADDRESS (effective_address))); address_gvalue = tp_g_value_slice_new_bytes ( g_unix_socket_address_get_path_len ( G_UNIX_SOCKET_ADDRESS (effective_address)), g_unix_socket_address_get_path ( G_UNIX_SOCKET_ADDRESS (effective_address))); break; #endif case TP_SOCKET_ADDRESS_TYPE_IPV4: case TP_SOCKET_ADDRESS_TYPE_IPV6: *unix_address = NULL; address_gvalue = tp_g_value_slice_new_take_boxed ( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4, dbus_g_type_specialized_construct ( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)); dbus_g_type_struct_set (address_gvalue, 0, address_type == TP_SOCKET_ADDRESS_TYPE_IPV4 ? "127.0.0.1" : "::1", 1, g_inet_socket_address_get_port ( G_INET_SOCKET_ADDRESS (effective_address)), G_MAXUINT); break; default: g_assert_not_reached (); } g_object_unref (address); g_object_unref (effective_address); return address_gvalue; } void tp_tests_connection_assert_disconnect_succeeds (TpConnection *connection) { GAsyncResult *result = NULL; GError *error = NULL; gboolean ok; tp_connection_disconnect_async (connection, tp_tests_result_ready_cb, &result); tp_tests_run_until_result (&result); ok = tp_connection_disconnect_finish (connection, result, &error); g_assert_no_error (error); g_assert (ok); g_object_unref (result); } /* The following blocks require tp-glib 0.19 to compile. However, tp_tests_connection_run_until_contact_by_id is never used in our code, so we simply disable its compilation. */ #if 0 static void one_contact_cb (GObject *object, GAsyncResult *result, gpointer user_data) { TpConnection *connection = (TpConnection *) object; TpContact **contact_loc = user_data; GError *error = NULL; *contact_loc = tp_connection_dup_contact_by_id_finish (connection, result, &error); g_assert_no_error (error); g_assert (TP_IS_CONTACT (*contact_loc)); } TpContact * tp_tests_connection_run_until_contact_by_id (TpConnection *connection, const gchar *id, guint n_features, const TpContactFeature *features) { TpContact *contact = NULL; tp_connection_dup_contact_by_id_async (connection, id, n_features, features, one_contact_cb, &contact); while (contact == NULL) g_main_context_iteration (NULL, TRUE); return contact; } #endif telepathy-qt-0.9.6.1/tests/lib/glib/util.h0000644000175100017520000000474612530423576021710 0ustar00kaffeinekaffeine00000000000000/* Simple utility code used by the regression tests. * * Copyright © 2008-2010 Collabora Ltd. * Copyright © 2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_LIB_UTIL_H__ #define __TP_TESTS_LIB_UTIL_H__ #include #include TpDBusDaemon *tp_tests_dbus_daemon_dup_or_die (void); void tp_tests_proxy_run_until_dbus_queue_processed (gpointer proxy); void tp_tests_proxy_run_until_prepared (gpointer proxy, const GQuark *features); gboolean tp_tests_proxy_run_until_prepared_or_failed (gpointer proxy, const GQuark *features, GError **error); #define test_assert_empty_strv(strv) \ _test_assert_empty_strv (__FILE__, __LINE__, strv) void _test_assert_empty_strv (const char *file, int line, gconstpointer strv); #define tp_tests_assert_strv_equals(actual, expected) \ _tp_tests_assert_strv_equals (__FILE__, __LINE__, \ #actual, actual, \ #expected, expected) void _tp_tests_assert_strv_equals (const char *file, int line, const char *actual_desc, gconstpointer actual_strv, const char *expected_desc, gconstpointer expected_strv); void tp_tests_create_conn (GType conn_type, const gchar *account, gboolean connect, TpBaseConnection **service_conn, TpConnection **client_conn); void tp_tests_create_and_connect_conn (GType conn_type, const gchar *account, TpBaseConnection **service_conn, TpConnection **client_conn); gpointer tp_tests_object_new_static_class (GType type, ...) G_GNUC_NULL_TERMINATED; void tp_tests_run_until_result (GAsyncResult **result); void tp_tests_result_ready_cb (GObject *object, GAsyncResult *res, gpointer user_data); void tp_tests_abort_after (guint sec); void tp_tests_init (int *argc, char ***argv); GValue *_tp_create_local_socket (TpSocketAddressType address_type, TpSocketAccessControl access_control, GSocketService **service, gchar **unix_address, GError **error); void _tp_destroy_socket_control_list (gpointer data); void tp_tests_connection_assert_disconnect_succeeds (TpConnection *connection); TpContact *tp_tests_connection_run_until_contact_by_id ( TpConnection *connection, const gchar *id, guint n_features, const TpContactFeature *features); #endif /* #ifndef __TP_TESTS_LIB_UTIL_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/textchan-group.c0000644000175100017520000003215112530423576023665 0ustar00kaffeinekaffeine00000000000000/* * a stub anonymous MUC * * Copyright (C) 2008 Collabora Ltd. * Copyright (C) 2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ //TODO This either needs to be ported away from TpTextMixin, //or we need to use another test CM instead of this one on the tests where it is used. //tp-glib has not ported it because it is used in TpTextMixin tests. #define _TP_IGNORE_DEPRECATIONS #include "textchan-group.h" #include #include #include #include #include #include #include static void text_iface_init (gpointer iface, gpointer data); static void channel_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (TpTestsTextChannelGroup, tp_tests_text_channel_group, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT, text_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, tp_group_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init)) static const char *text_channel_group_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_GROUP, NULL }; /* type definition stuff */ enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_DETAILED, PROP_PROPERTIES, N_PROPS }; struct _TpTestsTextChannelGroupPrivate { gchar *object_path; gboolean detailed; gboolean properties; gboolean closed; gboolean disposed; }; static gboolean add_member (GObject *obj, TpHandle handle, const gchar *message, GError **error) { TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (obj); TpIntSet *add = tp_intset_new (); tp_intset_add (add, handle); tp_group_mixin_change_members (obj, message, add, NULL, NULL, NULL, self->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (add); return TRUE; } static void tp_tests_text_channel_group_init (TpTestsTextChannelGroup *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_TEXT_CHANNEL_GROUP, TpTestsTextChannelGroupPrivate); } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (tp_tests_text_channel_group_parent_class)->constructor (type, n_props, props); TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->conn, TP_HANDLE_TYPE_CONTACT); TpChannelGroupFlags flags = 0; tp_dbus_daemon_register_object ( tp_base_connection_get_dbus_daemon (self->conn), self->priv->object_path, self); tp_text_mixin_init (object, G_STRUCT_OFFSET (TpTestsTextChannelGroup, text), contact_repo); tp_text_mixin_set_message_types (object, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION, TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE, G_MAXUINT); if (self->priv->detailed) flags |= TP_CHANNEL_GROUP_FLAG_MEMBERS_CHANGED_DETAILED; if (self->priv->properties) flags |= TP_CHANNEL_GROUP_FLAG_PROPERTIES; tp_group_mixin_init (object, G_STRUCT_OFFSET (TpTestsTextChannelGroup, group), contact_repo, self->conn->self_handle); tp_group_mixin_change_flags (object, flags, 0); return object; } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_TEXT); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, TP_HANDLE_TYPE_NONE); break; case PROP_HANDLE: g_value_set_uint (value, 0); break; case PROP_TARGET_ID: g_value_set_static_string (value, ""); break; case PROP_REQUESTED: g_value_set_boolean (value, TRUE); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, self->conn->self_handle); break; case PROP_INITIATOR_ID: { TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( self->conn, TP_HANDLE_TYPE_CONTACT); g_value_set_string (value, tp_handle_inspect (contact_repo, self->conn->self_handle)); } break; case PROP_INTERFACES: g_value_set_boxed (value, text_channel_group_interfaces); break; case PROP_CONNECTION: g_value_set_object (value, self->conn); break; case PROP_DETAILED: g_value_set_boolean (value, self->priv->detailed); break; case PROP_PROPERTIES: g_value_set_boolean (value, self->priv->properties); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (object); switch (property_id) { case PROP_OBJECT_PATH: g_free (self->priv->object_path); self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE: case PROP_HANDLE_TYPE: case PROP_CHANNEL_TYPE: /* these properties are writable in the interface, but not actually * meaningfully changable on this channel, so we do nothing */ break; case PROP_CONNECTION: self->conn = g_value_get_object (value); break; case PROP_DETAILED: self->priv->detailed = g_value_get_boolean (value); break; case PROP_PROPERTIES: self->priv->properties = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (object); if (self->priv->disposed) return; self->priv->disposed = TRUE; if (!self->priv->closed) { tp_svc_channel_emit_closed (self); } ((GObjectClass *) tp_tests_text_channel_group_parent_class)->dispose (object); } static void finalize (GObject *object) { TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (object); g_free (self->priv->object_path); tp_text_mixin_finalize (object); tp_group_mixin_finalize (object); ((GObjectClass *) tp_tests_text_channel_group_parent_class)->finalize (object); } static void tp_tests_text_channel_group_class_init (TpTestsTextChannelGroupClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { NULL } }; g_type_class_add_private (klass, sizeof (TpTestsTextChannelGroupPrivate)); object_class->constructor = constructor; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "Always the empty string on this channel", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); param_spec = g_param_spec_boolean ("detailed", "Has the Members_Changed_Detailed flag?", "True if the Members_Changed_Detailed group flag should be set", TRUE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DETAILED, param_spec); param_spec = g_param_spec_boolean ("properties", "Has the Properties flag?", "True if the Properties group flag should be set", TRUE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PROPERTIES, param_spec); tp_text_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsTextChannelGroupClass, text_class)); tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsTextChannelGroupClass, group_class), add_member, NULL); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsTextChannelGroupClass, dbus_properties_class)); tp_group_mixin_init_dbus_properties (object_class); } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (iface); if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_TEXT); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_NONE, 0); } static void channel_get_interfaces (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, text_channel_group_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void text_send (TpSvcChannelTypeText *iface, guint type, const gchar *text, DBusGMethodInvocation *context) { /* silently swallow the message */ tp_svc_channel_type_text_return_from_send (context); } static void text_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeTextClass *klass = iface; tp_text_mixin_iface_init (iface, data); #define IMPLEMENT(x) tp_svc_channel_type_text_implement_##x (klass, text_##x) IMPLEMENT (send); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/textchan-group.h0000644000175100017520000000414412530423576023673 0ustar00kaffeinekaffeine00000000000000/* * a stub anonymous MUC * * Copyright (C) 2008 Collabora Ltd. * Copyright (C) 2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TEST_TEXT_CHANNEL_GROUP_H__ #define __TEST_TEXT_CHANNEL_GROUP_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _TpTestsTextChannelGroup TpTestsTextChannelGroup; typedef struct _TpTestsTextChannelGroupClass TpTestsTextChannelGroupClass; typedef struct _TpTestsTextChannelGroupPrivate TpTestsTextChannelGroupPrivate; GType tp_tests_text_channel_group_get_type (void); #define TP_TESTS_TYPE_TEXT_CHANNEL_GROUP \ (tp_tests_text_channel_group_get_type ()) #define TP_TESTS_TEXT_CHANNEL_GROUP(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_GROUP, \ TpTestsTextChannelGroup)) #define TP_TESTS_TEXT_CHANNEL_GROUP_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_TEXT_CHANNEL_GROUP, \ TpTestsTextChannelGroupClass)) #define TEST_IS_TEXT_CHANNEL_GROUP(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_GROUP)) #define TEST_IS_TEXT_CHANNEL_GROUP_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_TEXT_CHANNEL_GROUP)) #define TP_TESTS_TEXT_CHANNEL_GROUP_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_GROUP, \ TpTestsTextChannelGroupClass)) struct _TpTestsTextChannelGroupClass { GObjectClass parent_class; TpTextMixinClass text_class; TpGroupMixinClass group_class; TpDBusPropertiesMixinClass dbus_properties_class; }; struct _TpTestsTextChannelGroup { GObject parent; TpBaseConnection *conn; TpTextMixin text; TpGroupMixin group; TpTestsTextChannelGroupPrivate *priv; }; G_END_DECLS #endif /* #ifndef __TEST_TEXT_CHANNEL_GROUP_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/simple-client.c0000644000175100017520000001511512530423576023463 0ustar00kaffeinekaffeine00000000000000/* * simple-client.c - a simple client * * Copyright © 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "simple-client.h" #include #include #include #include #include #include #include #include #include "util.h" G_DEFINE_TYPE (TpTestsSimpleClient, tp_tests_simple_client, TP_TYPE_BASE_CLIENT) static void simple_observe_channels ( TpBaseClient *client, TpAccount *account, TpConnection *connection, GList *channels, TpChannelDispatchOperation *dispatch_operation, GList *requests, TpObserveChannelsContext *context) { TpTestsSimpleClient *self = TP_TESTS_SIMPLE_CLIENT (client); GHashTable *info; gboolean fail; GList *l; /* Fail if caller set the fake "FAIL" info */ g_object_get (context, "observer-info", &info, NULL); fail = tp_asv_get_boolean (info, "FAIL", NULL); g_hash_table_unref (info); if (self->observe_ctx != NULL) { g_object_unref (self->observe_ctx); self->observe_ctx = NULL; } if (fail) { GError error = { TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "No observation for you!" }; tp_observe_channels_context_fail (context, &error); return; } g_assert (TP_IS_ACCOUNT (account)); g_assert (tp_proxy_is_prepared (account, TP_ACCOUNT_FEATURE_CORE)); g_assert (TP_IS_CONNECTION (connection)); g_assert (tp_proxy_is_prepared (connection, TP_CONNECTION_FEATURE_CORE)); g_assert_cmpuint (g_list_length (channels), >, 0); for (l = channels; l != NULL; l = g_list_next (l)) { TpChannel *channel = l->data; g_assert (TP_IS_CHANNEL (channel)); g_assert (tp_proxy_is_prepared (channel, TP_CHANNEL_FEATURE_CORE) || tp_proxy_get_invalidated (channel) != NULL); } if (dispatch_operation != NULL) g_assert (TP_IS_CHANNEL_DISPATCH_OPERATION (dispatch_operation)); for (l = requests; l != NULL; l = g_list_next (l)) { TpChannelRequest *request = l->data; g_assert (TP_IS_CHANNEL_REQUEST (request)); } self->observe_ctx = g_object_ref (context); tp_observe_channels_context_accept (context); } static void simple_add_dispatch_operation ( TpBaseClient *client, TpAccount *account, TpConnection *connection, GList *channels, TpChannelDispatchOperation *dispatch_operation, TpAddDispatchOperationContext *context) { TpTestsSimpleClient *self = TP_TESTS_SIMPLE_CLIENT (client); GList *l; g_assert (TP_IS_ACCOUNT (account)); g_assert (tp_proxy_is_prepared (account, TP_ACCOUNT_FEATURE_CORE)); g_assert (TP_IS_CONNECTION (connection)); g_assert (tp_proxy_is_prepared (connection, TP_CONNECTION_FEATURE_CORE)); g_assert (TP_IS_CHANNEL_DISPATCH_OPERATION (dispatch_operation)); g_assert (tp_proxy_is_prepared (dispatch_operation, TP_CHANNEL_DISPATCH_OPERATION_FEATURE_CORE) || tp_proxy_get_invalidated (dispatch_operation) != NULL); if (self->add_dispatch_ctx != NULL) { g_object_unref (self->add_dispatch_ctx); self->add_dispatch_ctx = NULL; } g_assert_cmpuint (g_list_length (channels), >, 0); for (l = channels; l != NULL; l = g_list_next (l)) { TpChannel *channel = l->data; g_assert (TP_IS_CHANNEL (channel)); g_assert (tp_proxy_is_prepared (channel, TP_CHANNEL_FEATURE_CORE) || tp_proxy_get_invalidated (channel) != NULL); } self->add_dispatch_ctx = g_object_ref (context); tp_add_dispatch_operation_context_accept (context); } static void simple_handle_channels (TpBaseClient *client, TpAccount *account, TpConnection *connection, GList *channels, GList *requests_satisfied, gint64 user_action_time, TpHandleChannelsContext *context) { TpTestsSimpleClient *self = TP_TESTS_SIMPLE_CLIENT (client); GList *l; if (self->handle_channels_ctx != NULL) { g_object_unref (self->handle_channels_ctx); self->handle_channels_ctx = NULL; } g_assert (TP_IS_ACCOUNT (account)); g_assert (tp_proxy_is_prepared (account, TP_ACCOUNT_FEATURE_CORE)); g_assert (TP_IS_CONNECTION (connection)); g_assert (tp_proxy_is_prepared (connection, TP_CONNECTION_FEATURE_CORE)); g_assert_cmpuint (g_list_length (channels), >, 0); for (l = channels; l != NULL; l = g_list_next (l)) { TpChannel *channel = l->data; g_assert (TP_IS_CHANNEL (channel)); g_assert (tp_proxy_is_prepared (channel, TP_CHANNEL_FEATURE_CORE) || tp_proxy_get_invalidated (channel) != NULL); } for (l = requests_satisfied; l != NULL; l = g_list_next (l)) { TpChannelRequest *request = l->data; g_assert (TP_IS_CHANNEL_REQUEST (request)); } self->handle_channels_ctx = g_object_ref (context); tp_handle_channels_context_accept (context); } static void tp_tests_simple_client_init (TpTestsSimpleClient *self) { } static void tp_tests_simple_client_dispose (GObject *object) { TpTestsSimpleClient *self = TP_TESTS_SIMPLE_CLIENT (object); void (*dispose) (GObject *) = G_OBJECT_CLASS (tp_tests_simple_client_parent_class)->dispose; if (self->observe_ctx != NULL) { g_object_unref (self->observe_ctx); self->observe_ctx = NULL; } if (self->add_dispatch_ctx != NULL) { g_object_unref (self->add_dispatch_ctx); self->add_dispatch_ctx = NULL; } if (self->handle_channels_ctx != NULL) { g_object_unref (self->handle_channels_ctx); self->handle_channels_ctx = NULL; } if (dispose != NULL) dispose (object); } static void tp_tests_simple_client_class_init (TpTestsSimpleClientClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); TpBaseClientClass *base_class = TP_BASE_CLIENT_CLASS (klass); object_class->dispose = tp_tests_simple_client_dispose; tp_base_client_implement_observe_channels (base_class, simple_observe_channels); tp_base_client_implement_add_dispatch_operation (base_class, simple_add_dispatch_operation); tp_base_client_implement_handle_channels (base_class, simple_handle_channels); } TpTestsSimpleClient * tp_tests_simple_client_new (TpDBusDaemon *dbus_daemon, const gchar *name, gboolean uniquify_name) { return tp_tests_object_new_static_class (TP_TESTS_TYPE_SIMPLE_CLIENT, "dbus-daemon", dbus_daemon, "name", name, "uniquify-name", uniquify_name, NULL); } telepathy-qt-0.9.6.1/tests/lib/glib/simple-client.h0000644000175100017520000000356612530423576023477 0ustar00kaffeinekaffeine00000000000000/* * simple-client.h - header for a simple client * * Copyright © 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_SIMPLE_CLIENT_H__ #define __TP_TESTS_SIMPLE_CLIENT_H__ #include #include G_BEGIN_DECLS typedef struct _TpTestsSimpleClient TpTestsSimpleClient; typedef struct _TpTestsSimpleClientClass TpTestsSimpleClientClass; struct _TpTestsSimpleClientClass { TpBaseClientClass parent_class; }; struct _TpTestsSimpleClient { TpBaseClient parent; TpObserveChannelsContext *observe_ctx; TpAddDispatchOperationContext *add_dispatch_ctx; TpHandleChannelsContext *handle_channels_ctx; }; GType tp_tests_simple_client_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_SIMPLE_CLIENT \ (tp_tests_simple_client_get_type ()) #define TP_TESTS_SIMPLE_CLIENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_SIMPLE_CLIENT, \ TpTestsSimpleClient)) #define TP_TESTS_SIMPLE_CLIENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_SIMPLE_CLIENT, \ TpTestsSimpleClientClass)) #define SIMPLE_IS_CLIENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_SIMPLE_CLIENT)) #define SIMPLE_IS_CLIENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_SIMPLE_CLIENT)) #define TP_TESTS_SIMPLE_CLIENT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_CLIENT, \ TpTestsSimpleClientClass)) TpTestsSimpleClient * tp_tests_simple_client_new (TpDBusDaemon *dbus_daemon, const gchar *name, gboolean uniquify_name); G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_CONN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/contact-list-manager.c0000644000175100017520000004734512530423576024744 0ustar00kaffeinekaffeine00000000000000/* * Example channel manager for contact lists * * Copyright © 2007-2010 Collabora Ltd. * Copyright © 2007-2010 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "contact-list-manager.h" #include #include struct _TestContactListManagerPrivate { TpBaseConnection *conn; gulong status_changed_id; /* TpHandle => ContactDetails */ GHashTable *contact_details; TpHandleRepoIface *contact_repo; TpHandleRepoIface *group_repo; TpHandleSet *groups; }; static void contact_groups_iface_init (TpContactGroupListInterface *iface); static void mutable_contact_groups_iface_init ( TpMutableContactGroupListInterface *iface); G_DEFINE_TYPE_WITH_CODE (TestContactListManager, test_contact_list_manager, TP_TYPE_BASE_CONTACT_LIST, G_IMPLEMENT_INTERFACE (TP_TYPE_CONTACT_GROUP_LIST, contact_groups_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_MUTABLE_CONTACT_GROUP_LIST, mutable_contact_groups_iface_init)) typedef struct { TpSubscriptionState subscribe; TpSubscriptionState publish; gchar *publish_request; TpHandleSet *groups; TpHandle handle; TpHandleRepoIface *contact_repo; } ContactDetails; static void contact_detail_destroy (gpointer p) { ContactDetails *d = p; g_free (d->publish_request); tp_handle_set_destroy (d->groups); g_slice_free (ContactDetails, d); } static ContactDetails * lookup_contact (TestContactListManager *self, TpHandle handle) { return g_hash_table_lookup (self->priv->contact_details, GUINT_TO_POINTER (handle)); } static ContactDetails * ensure_contact (TestContactListManager *self, TpHandle handle) { ContactDetails *d = lookup_contact (self, handle); if (d == NULL) { d = g_slice_new0 (ContactDetails); d->subscribe = TP_SUBSCRIPTION_STATE_NO; d->publish = TP_SUBSCRIPTION_STATE_NO; d->publish_request = NULL; d->groups = tp_handle_set_new (self->priv->group_repo); d->handle = handle; d->contact_repo = self->priv->contact_repo; g_hash_table_insert (self->priv->contact_details, GUINT_TO_POINTER (handle), d); } return d; } static void test_contact_list_manager_init (TestContactListManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TEST_TYPE_CONTACT_LIST_MANAGER, TestContactListManagerPrivate); self->priv->contact_details = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, contact_detail_destroy); } static void close_all (TestContactListManager *self) { if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } tp_clear_pointer (&self->priv->contact_details, g_hash_table_unref); tp_clear_pointer (&self->priv->groups, tp_handle_set_destroy); } static void dispose (GObject *object) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (object); close_all (self); ((GObjectClass *) test_contact_list_manager_parent_class)->dispose ( object); } static TpHandleSet * contact_list_dup_contacts (TpBaseContactList *base) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (base); TpHandleSet *set; GHashTableIter iter; gpointer k, v; set = tp_handle_set_new (self->priv->contact_repo); g_hash_table_iter_init (&iter, self->priv->contact_details); while (g_hash_table_iter_next (&iter, &k, &v)) { ContactDetails *d = v; /* add all the interesting items */ if (d->subscribe != TP_SUBSCRIPTION_STATE_NO || d->publish != TP_SUBSCRIPTION_STATE_NO) tp_handle_set_add (set, GPOINTER_TO_UINT (k)); } return set; } static void contact_list_dup_states (TpBaseContactList *base, TpHandle contact, TpSubscriptionState *subscribe, TpSubscriptionState *publish, gchar **publish_request) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (base); ContactDetails *d = lookup_contact (self, contact); if (d == NULL) { if (subscribe != NULL) *subscribe = TP_SUBSCRIPTION_STATE_NO; if (publish != NULL) *publish = TP_SUBSCRIPTION_STATE_NO; if (publish_request != NULL) *publish_request = NULL; } else { if (subscribe != NULL) *subscribe = d->subscribe; if (publish != NULL) *publish = d->publish; if (publish_request != NULL) *publish_request = g_strdup (d->publish_request); } } static GStrv contact_list_dup_groups (TpBaseContactList *base) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (base); GPtrArray *ret; if (self->priv->groups != NULL) { TpIntSetFastIter iter; TpHandle group; ret = g_ptr_array_sized_new (tp_handle_set_size (self->priv->groups) + 1); tp_intset_fast_iter_init (&iter, tp_handle_set_peek (self->priv->groups)); while (tp_intset_fast_iter_next (&iter, &group)) { g_ptr_array_add (ret, g_strdup (tp_handle_inspect ( self->priv->group_repo, group))); } } else { ret = g_ptr_array_sized_new (1); } g_ptr_array_add (ret, NULL); return (GStrv) g_ptr_array_free (ret, FALSE); } static GStrv contact_list_dup_contact_groups (TpBaseContactList *base, TpHandle contact) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (base); ContactDetails *d = lookup_contact (self, contact); GPtrArray *ret; if (d != NULL && d->groups != NULL) { TpIntSetFastIter iter; TpHandle group; ret = g_ptr_array_sized_new (tp_handle_set_size (d->groups) + 1); tp_intset_fast_iter_init (&iter, tp_handle_set_peek (d->groups)); while (tp_intset_fast_iter_next (&iter, &group)) { g_ptr_array_add (ret, g_strdup (tp_handle_inspect ( self->priv->group_repo, group))); } } else { ret = g_ptr_array_sized_new (1); } g_ptr_array_add (ret, NULL); return (GStrv) g_ptr_array_free (ret, FALSE); } static TpHandleSet * contact_list_dup_group_members (TpBaseContactList *base, const gchar *group) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (base); TpHandleSet *set; TpHandle group_handle; GHashTableIter iter; gpointer k, v; set = tp_handle_set_new (self->priv->contact_repo); group_handle = tp_handle_lookup (self->priv->group_repo, group, NULL, NULL); if (G_UNLIKELY (group_handle == 0)) { /* clearly it doesn't have members */ return set; } g_hash_table_iter_init (&iter, self->priv->contact_details); while (g_hash_table_iter_next (&iter, &k, &v)) { ContactDetails *d = v; if (d->groups != NULL && tp_handle_set_is_member (d->groups, group_handle)) tp_handle_set_add (set, GPOINTER_TO_UINT (k)); } return set; } static void contact_list_set_contact_groups_async (TpBaseContactList *base, TpHandle contact, const gchar * const *names, gsize n, GAsyncReadyCallback callback, gpointer user_data) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (base); ContactDetails *d; TpIntset *set, *added_set, *removed_set; GPtrArray *added_names, *removed_names; TpIntSetFastIter iter; TpHandle group_handle; guint i; d = ensure_contact (self, contact); set = tp_intset_new (); for (i = 0; i < n; i++) { group_handle = tp_handle_ensure (self->priv->group_repo, names[i], NULL, NULL); tp_intset_add (set, group_handle); } added_set = tp_intset_difference (set, tp_handle_set_peek (d->groups)); added_names = g_ptr_array_sized_new (tp_intset_size (added_set)); tp_intset_fast_iter_init (&iter, added_set); while (tp_intset_fast_iter_next (&iter, &group_handle)) { g_ptr_array_add (added_names, (gchar *) tp_handle_inspect ( self->priv->group_repo, group_handle)); } tp_intset_destroy (added_set); removed_set = tp_intset_difference (tp_handle_set_peek (d->groups), set); removed_names = g_ptr_array_sized_new (tp_intset_size (removed_set)); tp_intset_fast_iter_init (&iter, removed_set); while (tp_intset_fast_iter_next (&iter, &group_handle)) { g_ptr_array_add (removed_names, (gchar *) tp_handle_inspect ( self->priv->group_repo, group_handle)); } tp_intset_destroy (removed_set); tp_handle_set_destroy (d->groups); d->groups = tp_handle_set_new_from_intset (self->priv->group_repo, set); tp_intset_destroy (set); tp_base_contact_list_one_contact_groups_changed (base, contact, (const gchar * const *) added_names->pdata, added_names->len, (const gchar * const *) removed_names->pdata, removed_names->len); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, contact_list_set_contact_groups_async); g_ptr_array_unref (added_names); g_ptr_array_unref (removed_names); } static void contact_list_set_group_members_async (TpBaseContactList *base, const gchar *normalized_group, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { GSimpleAsyncResult *simple; simple = g_simple_async_result_new_error ((GObject *) base, callback, user_data, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "Not implemented"); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); } static void contact_list_add_to_group_async (TpBaseContactList *base, const gchar *group, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { GSimpleAsyncResult *simple; simple = g_simple_async_result_new_error ((GObject *) base, callback, user_data, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "Not implemented"); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); } static void contact_list_remove_from_group_async (TpBaseContactList *base, const gchar *group, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { GSimpleAsyncResult *simple; simple = g_simple_async_result_new_error ((GObject *) base, callback, user_data, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "Not implemented"); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); } static void contact_list_remove_group_async (TpBaseContactList *base, const gchar *group, GAsyncReadyCallback callback, gpointer user_data) { GSimpleAsyncResult *simple; simple = g_simple_async_result_new_error ((GObject *) base, callback, user_data, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "Not implemented"); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, TestContactListManager *self) { switch (status) { case TP_CONNECTION_STATUS_CONNECTED: { tp_base_contact_list_set_list_received (TP_BASE_CONTACT_LIST (self)); } break; case TP_CONNECTION_STATUS_DISCONNECTED: { close_all (self); } break; } } static void constructed (GObject *object) { TestContactListManager *self = TEST_CONTACT_LIST_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) test_contact_list_manager_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } self->priv->conn = tp_base_contact_list_get_connection ( TP_BASE_CONTACT_LIST (self), NULL); self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", G_CALLBACK (status_changed_cb), self); self->priv->contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); self->priv->group_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_GROUP); self->priv->groups = tp_handle_set_new (self->priv->group_repo); } static void contact_groups_iface_init (TpContactGroupListInterface *iface) { iface->dup_groups = contact_list_dup_groups; iface->dup_contact_groups = contact_list_dup_contact_groups; iface->dup_group_members = contact_list_dup_group_members; } static void mutable_contact_groups_iface_init ( TpMutableContactGroupListInterface *iface) { iface->set_contact_groups_async = contact_list_set_contact_groups_async; iface->set_group_members_async = contact_list_set_group_members_async; iface->add_to_group_async = contact_list_add_to_group_async; iface->remove_from_group_async = contact_list_remove_from_group_async; iface->remove_group_async = contact_list_remove_group_async; } static void test_contact_list_manager_class_init (TestContactListManagerClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseContactListClass *base_class =(TpBaseContactListClass *) klass; g_type_class_add_private (klass, sizeof (TestContactListManagerPrivate)); object_class->constructed = constructed; object_class->dispose = dispose; base_class->dup_states = contact_list_dup_states; base_class->dup_contacts = contact_list_dup_contacts; } void test_contact_list_manager_add_to_group (TestContactListManager *self, const gchar *group_name, TpHandle member) { TpBaseContactList *base = TP_BASE_CONTACT_LIST (self); ContactDetails *d = ensure_contact (self, member); TpHandle group_handle; group_handle = tp_handle_ensure (self->priv->group_repo, group_name, NULL, NULL); tp_handle_set_add (d->groups, group_handle); tp_base_contact_list_one_contact_groups_changed (base, member, &group_name, 1, NULL, 0); } void test_contact_list_manager_remove_from_group (TestContactListManager *self, const gchar *group_name, TpHandle member) { TpBaseContactList *base = TP_BASE_CONTACT_LIST (self); ContactDetails *d = lookup_contact (self, member); TpHandle group_handle; if (d == NULL) return; group_handle = tp_handle_ensure (self->priv->group_repo, group_name, NULL, NULL); tp_handle_set_remove (d->groups, group_handle); tp_base_contact_list_one_contact_groups_changed (base, member, NULL, 0, &group_name, 1); } typedef struct { TestContactListManager *self; TpHandleSet *handles; } SelfAndContact; static SelfAndContact * self_and_contact_new (TestContactListManager *self, TpHandleSet *handles) { SelfAndContact *ret = g_slice_new0 (SelfAndContact); ret->self = g_object_ref (self); ret->handles = tp_handle_set_copy (handles); return ret; } static void self_and_contact_destroy (gpointer p) { SelfAndContact *s = p; tp_handle_set_destroy (s->handles); g_object_unref (s->self); g_slice_free (SelfAndContact, s); } static gboolean receive_authorized (gpointer p) { SelfAndContact *s = p; GArray *handles_array; guint i; handles_array = tp_handle_set_to_array (s->handles); for (i = 0; i < handles_array->len; i++) { ContactDetails *d = lookup_contact (s->self, g_array_index (handles_array, TpHandle, i)); if (d == NULL) continue; d->subscribe = TP_SUBSCRIPTION_STATE_YES; /* if we're not publishing to them, also pretend they have asked us to do so */ if (d->publish != TP_SUBSCRIPTION_STATE_YES) { d->publish = TP_SUBSCRIPTION_STATE_ASK; tp_clear_pointer (&d->publish_request, g_free); d->publish_request = g_strdup ("automatic publish request"); } } g_array_unref (handles_array); tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (s->self), s->handles, NULL); return FALSE; } static gboolean receive_unauthorized (gpointer p) { SelfAndContact *s = p; GArray *handles_array; guint i; handles_array = tp_handle_set_to_array (s->handles); for (i = 0; i < handles_array->len; i++) { ContactDetails *d = lookup_contact (s->self, g_array_index (handles_array, TpHandle, i)); if (d == NULL) continue; d->subscribe = TP_SUBSCRIPTION_STATE_REMOVED_REMOTELY; } g_array_unref (handles_array); tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (s->self), s->handles, NULL); return FALSE; } void test_contact_list_manager_request_subscription (TestContactListManager *self, guint n_members, TpHandle *members, const gchar *message) { TpHandleSet *handles; guint i; gchar *message_lc; handles = tp_handle_set_new (self->priv->contact_repo); for (i = 0; i < n_members; i++) { ContactDetails *d = ensure_contact (self, members[i]); if (d->subscribe == TP_SUBSCRIPTION_STATE_YES) continue; d->subscribe = TP_SUBSCRIPTION_STATE_ASK; tp_handle_set_add (handles, members[i]); } tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (self), handles, NULL); message_lc = g_ascii_strdown (message, -1); if (strstr (message_lc, "please") != NULL) { g_idle_add_full (G_PRIORITY_DEFAULT, receive_authorized, self_and_contact_new (self, handles), self_and_contact_destroy); } else if (strstr (message_lc, "no") != NULL) { g_idle_add_full (G_PRIORITY_DEFAULT, receive_unauthorized, self_and_contact_new (self, handles), self_and_contact_destroy); } g_free (message_lc); tp_handle_set_destroy (handles); } void test_contact_list_manager_unsubscribe (TestContactListManager *self, guint n_members, TpHandle *members) { TpHandleSet *handles; guint i; handles = tp_handle_set_new (self->priv->contact_repo); for (i = 0; i < n_members; i++) { ContactDetails *d = lookup_contact (self, members[i]); if (d == NULL || d->subscribe == TP_SUBSCRIPTION_STATE_NO) continue; d->subscribe = TP_SUBSCRIPTION_STATE_NO; tp_handle_set_add (handles, members[i]); } tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (self), handles, NULL); tp_handle_set_destroy (handles); } void test_contact_list_manager_authorize_publication (TestContactListManager *self, guint n_members, TpHandle *members) { TpHandleSet *handles; guint i; handles = tp_handle_set_new (self->priv->contact_repo); for (i = 0; i < n_members; i++) { ContactDetails *d = lookup_contact (self, members[i]); if (d == NULL || d->publish != TP_SUBSCRIPTION_STATE_ASK) continue; d->publish = TP_SUBSCRIPTION_STATE_YES; tp_clear_pointer (&d->publish_request, g_free); tp_handle_set_add (handles, members[i]); } tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (self), handles, NULL); tp_handle_set_destroy (handles); } void test_contact_list_manager_unpublish (TestContactListManager *self, guint n_members, TpHandle *members) { TpHandleSet *handles; guint i; handles = tp_handle_set_new (self->priv->contact_repo); for (i = 0; i < n_members; i++) { ContactDetails *d = lookup_contact (self, members[i]); if (d == NULL || d->publish == TP_SUBSCRIPTION_STATE_NO) continue; d->publish = TP_SUBSCRIPTION_STATE_NO; tp_clear_pointer (&d->publish_request, g_free); tp_handle_set_add (handles, members[i]); } tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (self), handles, NULL); tp_handle_set_destroy (handles); } void test_contact_list_manager_remove (TestContactListManager *self, guint n_members, TpHandle *members) { TpHandleSet *handles; guint i; handles = tp_handle_set_new (self->priv->contact_repo); for (i = 0; i < n_members; i++) { ContactDetails *d = lookup_contact (self, members[i]); if (d == NULL) continue; g_hash_table_remove (self->priv->contact_details, GUINT_TO_POINTER (members[i])); tp_handle_set_add (handles, members[i]); } tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (self), NULL, handles); tp_handle_set_destroy (handles); } telepathy-qt-0.9.6.1/tests/lib/glib/contact-list-manager.h0000644000175100017520000000517112530423576024740 0ustar00kaffeinekaffeine00000000000000/* * Example channel manager for contact lists * * Copyright © 2007-2010 Collabora Ltd. * Copyright © 2007-2010 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TEST_CONTACT_LIST_MANAGER_H__ #define __TEST_CONTACT_LIST_MANAGER_H__ #include G_BEGIN_DECLS #define TEST_TYPE_CONTACT_LIST_MANAGER \ (test_contact_list_manager_get_type ()) #define TEST_CONTACT_LIST_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TEST_TYPE_CONTACT_LIST_MANAGER, \ TestContactListManager)) #define TEST_CONTACT_LIST_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TEST_TYPE_CONTACT_LIST_MANAGER, \ TestContactListManagerClass)) #define TEST_IS_CONTACT_LIST_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TEST_TYPE_CONTACT_LIST_MANAGER)) #define TEST_IS_CONTACT_LIST_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TEST_TYPE_CONTACT_LIST_MANAGER)) #define TEST_CONTACT_LIST_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_CONTACT_LIST_MANAGER, \ TestContactListManagerClass)) typedef struct _TestContactListManager TestContactListManager; typedef struct _TestContactListManagerClass TestContactListManagerClass; typedef struct _TestContactListManagerPrivate TestContactListManagerPrivate; struct _TestContactListManagerClass { TpBaseContactListClass parent_class; }; struct _TestContactListManager { TpBaseContactList parent; TestContactListManagerPrivate *priv; }; GType test_contact_list_manager_get_type (void); void test_contact_list_manager_add_to_group (TestContactListManager *self, const gchar *group_name, TpHandle member); void test_contact_list_manager_remove_from_group (TestContactListManager *self, const gchar *group_name, TpHandle member); void test_contact_list_manager_request_subscription (TestContactListManager *self, guint n_members, TpHandle *members, const gchar *message); void test_contact_list_manager_unsubscribe (TestContactListManager *self, guint n_members, TpHandle *members); void test_contact_list_manager_authorize_publication (TestContactListManager *self, guint n_members, TpHandle *members); void test_contact_list_manager_unpublish (TestContactListManager *self, guint n_members, TpHandle *members); void test_contact_list_manager_remove (TestContactListManager *self, guint n_members, TpHandle *members); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/simple-account.c0000644000175100017520000002327712530423576023651 0ustar00kaffeinekaffeine00000000000000/* * simple-account.c - a simple account service. * * Copyright (C) 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "simple-account.h" #include #include #include #include #include #include #include #include static void account_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (TpTestsSimpleAccount, tp_tests_simple_account, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_ACCOUNT, account_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init) ) /* TP_IFACE_ACCOUNT is implied */ static const char *ACCOUNT_INTERFACES[] = { NULL }; enum { PROP_0, PROP_INTERFACES, PROP_DISPLAY_NAME, PROP_ICON, PROP_VALID, PROP_ENABLED, PROP_NICKNAME, PROP_PARAMETERS, PROP_AUTOMATIC_PRESENCE, PROP_CONNECT_AUTO, PROP_CONNECTION, PROP_CONNECTION_STATUS, PROP_CONNECTION_STATUS_REASON, PROP_CURRENT_PRESENCE, PROP_REQUESTED_PRESENCE, PROP_NORMALIZED_NAME, PROP_HAS_BEEN_ONLINE, }; struct _TpTestsSimpleAccountPrivate { gpointer unused; }; static void account_iface_init (gpointer klass, gpointer unused G_GNUC_UNUSED) { #define IMPLEMENT(x) tp_svc_account_implement_##x (\ klass, tp_tests_simple_account_##x) /* TODO */ #undef IMPLEMENT } static void tp_tests_simple_account_init (TpTestsSimpleAccount *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_ACCOUNT, TpTestsSimpleAccountPrivate); } static void tp_tests_simple_account_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { GValueArray *presence; presence = tp_value_array_build (3, G_TYPE_UINT, TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, G_TYPE_STRING, "available", G_TYPE_STRING, "", G_TYPE_INVALID); switch (property_id) { case PROP_INTERFACES: g_value_set_boxed (value, ACCOUNT_INTERFACES); break; case PROP_DISPLAY_NAME: g_value_set_string (value, "Fake Account"); break; case PROP_ICON: g_value_set_string (value, ""); break; case PROP_VALID: g_value_set_boolean (value, TRUE); break; case PROP_ENABLED: g_value_set_boolean (value, TRUE); break; case PROP_NICKNAME: g_value_set_string (value, "badger"); break; case PROP_PARAMETERS: g_value_take_boxed (value, g_hash_table_new (NULL, NULL)); break; case PROP_AUTOMATIC_PRESENCE: g_value_set_boxed (value, presence); break; case PROP_CONNECT_AUTO: g_value_set_boolean (value, FALSE); break; case PROP_CONNECTION: g_value_set_boxed (value, "/"); break; case PROP_CONNECTION_STATUS: g_value_set_uint (value, TP_CONNECTION_STATUS_CONNECTED); break; case PROP_CONNECTION_STATUS_REASON: g_value_set_uint (value, TP_CONNECTION_STATUS_REASON_REQUESTED); break; case PROP_CURRENT_PRESENCE: g_value_set_boxed (value, presence); break; case PROP_REQUESTED_PRESENCE: g_value_set_boxed (value, presence); break; case PROP_NORMALIZED_NAME: g_value_set_string (value, ""); break; case PROP_HAS_BEEN_ONLINE: g_value_set_boolean (value, TRUE); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); break; } g_boxed_free (TP_STRUCT_TYPE_SIMPLE_PRESENCE, presence); } /** * This class currently only provides the minimum for * tp_account_prepare to succeed. This turns out to be only a working * Properties.GetAll(). */ static void tp_tests_simple_account_class_init (TpTestsSimpleAccountClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl a_props[] = { { "Interfaces", "interfaces", NULL }, { "DisplayName", "display-name", NULL }, { "Icon", "icon", NULL }, { "Valid", "valid", NULL }, { "Enabled", "enabled", NULL }, { "Nickname", "nickname", NULL }, { "Parameters", "parameters", NULL }, { "AutomaticPresence", "automatic-presence", NULL }, { "ConnectAutomatically", "connect-automatically", NULL }, { "Connection", "connection", NULL }, { "ConnectionStatus", "connection-status", NULL }, { "ConnectionStatusReason", "connection-status-reason", NULL }, { "CurrentPresence", "current-presence", NULL }, { "RequestedPresence", "requested-presence", NULL }, { "NormalizedName", "normalized-name", NULL }, { "HasBeenOnline", "has-been-online", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_ACCOUNT, tp_dbus_properties_mixin_getter_gobject_properties, NULL, a_props }, { NULL }, }; g_type_class_add_private (klass, sizeof (TpTestsSimpleAccountPrivate)); object_class->get_property = tp_tests_simple_account_get_property; param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "In this case we only implement Account, so none.", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("display-name", "display name", "DisplayName property", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DISPLAY_NAME, param_spec); param_spec = g_param_spec_string ("icon", "icon", "Icon property", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ICON, param_spec); param_spec = g_param_spec_boolean ("valid", "valid", "Valid property", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_VALID, param_spec); param_spec = g_param_spec_boolean ("enabled", "enabled", "Enabled property", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ENABLED, param_spec); param_spec = g_param_spec_string ("nickname", "nickname", "Nickname property", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_NICKNAME, param_spec); param_spec = g_param_spec_boxed ("parameters", "parameters", "Parameters property", TP_HASH_TYPE_STRING_VARIANT_MAP, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PARAMETERS, param_spec); param_spec = g_param_spec_boxed ("automatic-presence", "automatic presence", "AutomaticPresence property", TP_STRUCT_TYPE_SIMPLE_PRESENCE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_AUTOMATIC_PRESENCE, param_spec); param_spec = g_param_spec_boolean ("connect-automatically", "connect automatically", "ConnectAutomatically property", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECT_AUTO, param_spec); param_spec = g_param_spec_boxed ("connection", "connection", "Connection property", DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_uint ("connection-status", "connection status", "ConnectionStatus property", 0, NUM_TP_CONNECTION_STATUSES, TP_CONNECTION_STATUS_DISCONNECTED, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION_STATUS, param_spec); param_spec = g_param_spec_uint ("connection-status-reason", "connection status reason", "ConnectionStatusReason property", 0, NUM_TP_CONNECTION_STATUS_REASONS, TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION_STATUS_REASON, param_spec); param_spec = g_param_spec_boxed ("current-presence", "current presence", "CurrentPresence property", TP_STRUCT_TYPE_SIMPLE_PRESENCE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CURRENT_PRESENCE, param_spec); param_spec = g_param_spec_boxed ("requested-presence", "requested presence", "RequestedPresence property", TP_STRUCT_TYPE_SIMPLE_PRESENCE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED_PRESENCE, param_spec); param_spec = g_param_spec_string ("normalized-name", "normalized name", "NormalizedName property", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_NORMALIZED_NAME, param_spec); param_spec = g_param_spec_boolean ("has-been-online", "has been online", "HasBeenOnline property", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_HAS_BEEN_ONLINE, param_spec); klass->dbus_props_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsSimpleAccountClass, dbus_props_class)); } telepathy-qt-0.9.6.1/tests/lib/glib/simple-account.h0000644000175100017520000000347512530423576023654 0ustar00kaffeinekaffeine00000000000000/* * simple-account.h - header for a simple account service. * * Copyright (C) 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_SIMPLE_ACCOUNT_H__ #define __TP_TESTS_SIMPLE_ACCOUNT_H__ #include #include G_BEGIN_DECLS typedef struct _TpTestsSimpleAccount TpTestsSimpleAccount; typedef struct _TpTestsSimpleAccountClass TpTestsSimpleAccountClass; typedef struct _TpTestsSimpleAccountPrivate TpTestsSimpleAccountPrivate; struct _TpTestsSimpleAccountClass { GObjectClass parent_class; TpDBusPropertiesMixinClass dbus_props_class; }; struct _TpTestsSimpleAccount { GObject parent; TpTestsSimpleAccountPrivate *priv; }; GType tp_tests_simple_account_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_SIMPLE_ACCOUNT \ (tp_tests_simple_account_get_type ()) #define TP_TESTS_SIMPLE_ACCOUNT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT, \ TpTestsSimpleAccount)) #define TP_TESTS_SIMPLE_ACCOUNT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_SIMPLE_ACCOUNT, \ TpTestsSimpleAccountClass)) #define TP_TESTS_SIMPLE_IS_ACCOUNT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT)) #define TP_TESTS_SIMPLE_IS_ACCOUNT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_SIMPLE_ACCOUNT)) #define TP_TESTS_SIMPLE_ACCOUNT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT, \ TpTestsSimpleAccountClass)) G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_ACCOUNT_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/simple-manager.c0000644000175100017520000000455312530423576023623 0ustar00kaffeinekaffeine00000000000000/* * simple-manager.c - an simple connection manager * * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "simple-manager.h" #include #include #include #include #include "simple-conn.h" #include "util.h" G_DEFINE_TYPE (TpTestsSimpleConnectionManager, tp_tests_simple_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) /* type definition stuff */ static void tp_tests_simple_connection_manager_init (TpTestsSimpleConnectionManager *self) { } /* private data */ typedef struct { gchar *account; } TpTestsSimpleParams; static const TpCMParamSpec simple_params[] = { { "account", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, NULL, G_STRUCT_OFFSET (TpTestsSimpleParams, account), tp_cm_param_filter_string_nonempty, NULL }, { NULL } }; static gpointer alloc_params (void) { return g_slice_new0 (TpTestsSimpleParams); } static void free_params (gpointer p) { TpTestsSimpleParams *params = p; g_free (params->account); g_slice_free (TpTestsSimpleParams, params); } static const TpCMProtocolSpec simple_protocols[] = { { "simple", simple_params, alloc_params, free_params }, { NULL, NULL } }; static TpBaseConnection * new_connection (TpBaseConnectionManager *self, const gchar *proto, TpIntSet *params_present, gpointer parsed_params, GError **error) { TpTestsSimpleParams *params = parsed_params; TpTestsSimpleConnection *conn = TP_TESTS_SIMPLE_CONNECTION ( tp_tests_object_new_static_class (TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", params->account, "protocol", proto, NULL)); return (TpBaseConnection *) conn; } static void tp_tests_simple_connection_manager_class_init ( TpTestsSimpleConnectionManagerClass *klass) { TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; base_class->new_connection = new_connection; base_class->cm_dbus_name = "simple"; base_class->protocol_params = simple_protocols; } telepathy-qt-0.9.6.1/tests/lib/glib/simple-manager.h0000644000175100017520000000440012530423576023617 0ustar00kaffeinekaffeine00000000000000/* * simple-manager.h - header for a simple connection manager * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_SIMPLE_CONNECTION_MANAGER_H__ #define __TP_TESTS_SIMPLE_CONNECTION_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _TpTestsSimpleConnectionManager TpTestsSimpleConnectionManager; typedef struct _TpTestsSimpleConnectionManagerPrivate TpTestsSimpleConnectionManagerPrivate; typedef struct _TpTestsSimpleConnectionManagerClass TpTestsSimpleConnectionManagerClass; typedef struct _TpTestsSimpleConnectionManagerClassPrivate TpTestsSimpleConnectionManagerClassPrivate; struct _TpTestsSimpleConnectionManagerClass { TpBaseConnectionManagerClass parent_class; TpTestsSimpleConnectionManagerClassPrivate *priv; }; struct _TpTestsSimpleConnectionManager { TpBaseConnectionManager parent; TpTestsSimpleConnectionManagerPrivate *priv; }; GType tp_tests_simple_connection_manager_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER \ (tp_tests_simple_connection_manager_get_type ()) #define TP_TESTS_SIMPLE_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER, \ simpleConnectionManager)) #define TP_TESTS_SIMPLE_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER, \ TpTestsSimpleConnectionManagerClass)) #define TP_TESTS_SIMPLE_IS_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER)) #define TP_TESTS_SIMPLE_IS_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER)) #define TP_TESTS_SIMPLE_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER, \ TpTestsSimpleConnectionManagerClass)) G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_CONNECTION_MANAGER_H__*/ telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/0000755000175100017520000000000012530423576023076 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/connection-manager.c0000644000175100017520000000553412530423576027020 0ustar00kaffeinekaffeine00000000000000/* * manager.c - an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "connection-manager.h" #include #include #include #include "conn.h" G_DEFINE_TYPE (ExampleContactListConnectionManager, example_contact_list_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) struct _ExampleContactListConnectionManagerPrivate { int dummy; }; static void example_contact_list_connection_manager_init ( ExampleContactListConnectionManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, ExampleContactListConnectionManagerPrivate); } typedef struct { gchar *account; guint simulation_delay; } ExampleParams; static gboolean account_param_filter (const TpCMParamSpec *paramspec, GValue *value, GError **error) { const gchar *id = g_value_get_string (value); g_value_take_string (value, example_contact_list_normalize_contact (NULL, id, NULL, error)); if (g_value_get_string (value) == NULL) return FALSE; return TRUE; } #include "_gen/param-spec-struct.h" static gpointer alloc_params (void) { return g_slice_new0 (ExampleParams); } static void free_params (gpointer p) { ExampleParams *params = p; g_free (params->account); g_slice_free (ExampleParams, params); } static const TpCMProtocolSpec example_protocols[] = { { "example", example_contact_list_example_params, alloc_params, free_params }, { NULL, NULL } }; static TpBaseConnection * new_connection (TpBaseConnectionManager *self, const gchar *proto, TpIntSet *params_present, gpointer parsed_params, GError **error) { ExampleParams *params = parsed_params; ExampleContactListConnection *conn; conn = EXAMPLE_CONTACT_LIST_CONNECTION (g_object_new (EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", params->account, "simulation-delay", params->simulation_delay, "protocol", proto, NULL)); return (TpBaseConnection *) conn; } static void example_contact_list_connection_manager_class_init ( ExampleContactListConnectionManagerClass *klass) { TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; g_type_class_add_private (klass, sizeof (ExampleContactListConnectionManagerPrivate)); base_class->new_connection = new_connection; base_class->cm_dbus_name = "example_contact_list"; base_class->protocol_params = example_protocols; } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/connection-manager.h0000644000175100017520000000454612530423576027027 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_H__ #define __EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleContactListConnectionManager ExampleContactListConnectionManager; typedef struct _ExampleContactListConnectionManagerClass ExampleContactListConnectionManagerClass; typedef struct _ExampleContactListConnectionManagerPrivate ExampleContactListConnectionManagerPrivate; struct _ExampleContactListConnectionManagerClass { TpBaseConnectionManagerClass parent_class; }; struct _ExampleContactListConnectionManager { TpBaseConnectionManager parent; ExampleContactListConnectionManagerPrivate *priv; }; GType example_contact_list_connection_manager_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER \ (example_contact_list_connection_manager_get_type ()) #define EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, \ ExampleContactListConnectionManager)) #define EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, \ ExampleContactListConnectionManagerClass)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER)) #define EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, \ ExampleContactListConnectionManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/CMakeLists.txt0000644000175100017520000000106112530423576025634 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) set(example_cm_contactlist_SRCS conn.c conn.h connection-manager.c connection-manager.h contact-list.c contact-list.h contact-list-manager.c contact-list-manager.h) add_library(example-cm-contactlist STATIC ${example_cm_contactlist_SRCS}) target_link_libraries(example-cm-contactlist ${TPGLIB_LIBRARIES}) tpqt_generate_manager_file(${CMAKE_CURRENT_SOURCE_DIR}/manager-file.py example_contact_list.manager connection-manager.c) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/conn.c0000644000175100017520000004366412530423576024214 0ustar00kaffeinekaffeine00000000000000/* * conn.c - an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "conn.h" #include #include #include #include #include #include "contact-list-manager.h" static void init_aliasing (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleContactListConnection, example_contact_list_connection, TP_TYPE_BASE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_ALIASING, init_aliasing); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, tp_contacts_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, tp_presence_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, tp_presence_mixin_simple_presence_iface_init)) enum { PROP_ACCOUNT = 1, PROP_SIMULATION_DELAY, N_PROPS }; struct _ExampleContactListConnectionPrivate { gchar *account; guint simulation_delay; ExampleContactListManager *list_manager; gboolean away; }; static void example_contact_list_connection_init (ExampleContactListConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, ExampleContactListConnectionPrivate); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_value_dup_string (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void finalize (GObject *object) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); tp_contacts_mixin_finalize (object); g_free (self->priv->account); G_OBJECT_CLASS (example_contact_list_connection_parent_class)->finalize ( object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (conn); return g_strdup_printf ("%s@%p", self->priv->account, self); } gchar * example_contact_list_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "Contact ID must not be empty"); return NULL; } return g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); } static gchar * example_contact_list_normalize_group (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "Contact group name cannot be empty"); return NULL; } return g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, example_contact_list_normalize_contact, NULL); repos[TP_HANDLE_TYPE_LIST] = tp_static_handle_repo_new (TP_HANDLE_TYPE_LIST, example_contact_lists ()); repos[TP_HANDLE_TYPE_GROUP] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_GROUP, example_contact_list_normalize_group, NULL); } static void alias_updated_cb (ExampleContactListManager *manager, TpHandle contact, ExampleContactListConnection *self) { GPtrArray *aliases; GValueArray *pair; pair = g_value_array_new (2); g_value_array_append (pair, NULL); g_value_array_append (pair, NULL); g_value_init (pair->values + 0, G_TYPE_UINT); g_value_init (pair->values + 1, G_TYPE_STRING); g_value_set_uint (pair->values + 0, contact); g_value_set_string (pair->values + 1, example_contact_list_manager_get_alias (manager, contact)); aliases = g_ptr_array_sized_new (1); g_ptr_array_add (aliases, pair); tp_svc_connection_interface_aliasing_emit_aliases_changed (self, aliases); g_ptr_array_free (aliases, TRUE); g_value_array_free (pair); } static void presence_updated_cb (ExampleContactListManager *manager, TpHandle contact, ExampleContactListConnection *self) { TpBaseConnection *base = (TpBaseConnection *) self; TpPresenceStatus *status; /* we ignore the presence indicated by the contact list for our own handle */ if (contact == base->self_handle) return; status = tp_presence_status_new ( example_contact_list_manager_get_presence (manager, contact), NULL); tp_presence_mixin_emit_one_presence_update ((GObject *) self, contact, status); tp_presence_status_free (status); } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (conn); GPtrArray *ret = g_ptr_array_sized_new (1); self->priv->list_manager = EXAMPLE_CONTACT_LIST_MANAGER (g_object_new ( EXAMPLE_TYPE_CONTACT_LIST_MANAGER, "connection", conn, "simulation-delay", self->priv->simulation_delay, NULL)); g_signal_connect (self->priv->list_manager, "alias-updated", G_CALLBACK (alias_updated_cb), self); g_signal_connect (self->priv->list_manager, "presence-updated", G_CALLBACK (presence_updated_cb), self); g_ptr_array_add (ret, self->priv->list_manager); return ret; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (conn); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished, but here * we can do it immediately. */ conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, error); if (conn->self_handle == 0) return FALSE; tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void shut_down (TpBaseConnection *conn) { /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished, but here * we can do it immediately. */ tp_base_connection_finish_shutdown (conn); } static void aliasing_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); guint i; for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, guint, i); tp_contacts_mixin_set_contact_attribute (attributes, contact, TP_TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS, tp_g_value_slice_new_string ( example_contact_list_manager_get_alias (self->priv->list_manager, contact))); } } static void constructed (GObject *object) { TpBaseConnection *base = TP_BASE_CONNECTION (object); void (*chain_up) (GObject *) = G_OBJECT_CLASS (example_contact_list_connection_parent_class)->constructed; if (chain_up != NULL) chain_up (object); tp_contacts_mixin_init (object, G_STRUCT_OFFSET (ExampleContactListConnection, contacts_mixin)); tp_base_connection_register_with_contacts_mixin (base); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_ALIASING, aliasing_fill_contact_attributes); tp_presence_mixin_init (object, G_STRUCT_OFFSET (ExampleContactListConnection, presence_mixin)); tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); } static gboolean status_available (GObject *object, guint index_) { TpBaseConnection *base = TP_BASE_CONNECTION (object); if (base->status != TP_CONNECTION_STATUS_CONNECTED) return FALSE; return TRUE; } static GHashTable * get_contact_statuses (GObject *object, const GArray *contacts, GError **error) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); guint i; GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) tp_presence_status_free); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, guint, i); ExampleContactListPresence presence; GHashTable *parameters; /* we get our own status from the connection, and everyone else's status * from the contact lists */ if (contact == base->self_handle) { presence = (self->priv->away ? EXAMPLE_CONTACT_LIST_PRESENCE_AWAY : EXAMPLE_CONTACT_LIST_PRESENCE_AVAILABLE); } else { presence = example_contact_list_manager_get_presence ( self->priv->list_manager, contact); } parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); g_hash_table_insert (result, GUINT_TO_POINTER (contact), tp_presence_status_new (presence, parameters)); g_hash_table_destroy (parameters); } return result; } static gboolean set_own_status (GObject *object, const TpPresenceStatus *status, GError **error) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); GHashTable *presences; if (status->index == EXAMPLE_CONTACT_LIST_PRESENCE_AWAY) { if (self->priv->away) return TRUE; self->priv->away = TRUE; } else { if (!self->priv->away) return TRUE; self->priv->away = FALSE; } presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), (gpointer) status); tp_presence_mixin_emit_presence_update (object, presences); g_hash_table_destroy (presences); return TRUE; } static void example_contact_list_connection_class_init ( ExampleContactListConnectionClass *klass) { static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, NULL }; TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (ExampleContactListConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_managers = create_channel_managers; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); tp_contacts_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListConnectionClass, contacts_mixin)); tp_presence_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListConnectionClass, presence_mixin), status_available, get_contact_statuses, set_own_status, example_contact_list_presence_statuses ()); tp_presence_mixin_simple_presence_init_dbus_properties (object_class); } static void get_alias_flags (TpSvcConnectionInterfaceAliasing *aliasing, DBusGMethodInvocation *context) { TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); tp_svc_connection_interface_aliasing_return_from_get_alias_flags (context, TP_CONNECTION_ALIAS_FLAG_USER_SET); } static void get_aliases (TpSvcConnectionInterfaceAliasing *aliasing, const GArray *contacts, DBusGMethodInvocation *context) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GHashTable *result; GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, TpHandle, i); const gchar *alias = example_contact_list_manager_get_alias ( self->priv->list_manager, contact); g_hash_table_insert (result, GUINT_TO_POINTER (contact), (gchar *) alias); } tp_svc_connection_interface_aliasing_return_from_get_aliases (context, result); g_hash_table_destroy (result); } static void request_aliases (TpSvcConnectionInterfaceAliasing *aliasing, const GArray *contacts, DBusGMethodInvocation *context) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GPtrArray *result; gchar **strings; GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_ptr_array_sized_new (contacts->len + 1); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, TpHandle, i); const gchar *alias = example_contact_list_manager_get_alias ( self->priv->list_manager, contact); g_ptr_array_add (result, (gchar *) alias); } g_ptr_array_add (result, NULL); strings = (gchar **) g_ptr_array_free (result, FALSE); tp_svc_connection_interface_aliasing_return_from_request_aliases (context, (const gchar **) strings); g_free (strings); } static void set_aliases (TpSvcConnectionInterfaceAliasing *aliasing, GHashTable *aliases, DBusGMethodInvocation *context) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GHashTableIter iter; gpointer key, value; g_hash_table_iter_init (&iter, aliases); while (g_hash_table_iter_next (&iter, &key, &value)) { GError *error = NULL; if (!tp_handle_is_valid (contact_repo, GPOINTER_TO_UINT (key), &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } } g_hash_table_iter_init (&iter, aliases); while (g_hash_table_iter_next (&iter, &key, &value)) { example_contact_list_manager_set_alias (self->priv->list_manager, GPOINTER_TO_UINT (key), value); } tp_svc_connection_interface_aliasing_return_from_set_aliases (context); } static void init_aliasing (gpointer iface, gpointer iface_data G_GNUC_UNUSED) { TpSvcConnectionInterfaceAliasingClass *klass = iface; #define IMPLEMENT(x) tp_svc_connection_interface_aliasing_implement_##x (\ klass, x) IMPLEMENT(get_alias_flags); IMPLEMENT(request_aliases); IMPLEMENT(get_aliases); IMPLEMENT(set_aliases); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/conn.h0000644000175100017520000000450012530423576024203 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CONTACT_LIST_CONN_H__ #define __EXAMPLE_CONTACT_LIST_CONN_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _ExampleContactListConnection ExampleContactListConnection; typedef struct _ExampleContactListConnectionClass ExampleContactListConnectionClass; typedef struct _ExampleContactListConnectionPrivate ExampleContactListConnectionPrivate; struct _ExampleContactListConnectionClass { TpBaseConnectionClass parent_class; TpPresenceMixinClass presence_mixin; TpContactsMixinClass contacts_mixin; }; struct _ExampleContactListConnection { TpBaseConnection parent; TpPresenceMixin presence_mixin; TpContactsMixin contacts_mixin; ExampleContactListConnectionPrivate *priv; }; GType example_contact_list_connection_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_CONNECTION \ (example_contact_list_connection_get_type ()) #define EXAMPLE_CONTACT_LIST_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, \ ExampleContactListConnection)) #define EXAMPLE_CONTACT_LIST_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, \ ExampleContactListConnectionClass)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION)) #define EXAMPLE_CONTACT_LIST_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, \ ExampleContactListConnectionClass)) gchar *example_contact_list_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/contact-list.c0000644000175100017520000004671012530423576025656 0ustar00kaffeinekaffeine00000000000000/* * An example ContactList channel with handle type LIST or GROUP * * Copyright © 2009 Collabora Ltd. * Copyright © 2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "contact-list.h" #include #include #include #include #include "contact-list-manager.h" static void channel_iface_init (gpointer iface, gpointer data); static void list_channel_iface_init (gpointer iface, gpointer data); static void group_channel_iface_init (gpointer iface, gpointer data); /* Abstract base class */ G_DEFINE_TYPE_WITH_CODE (ExampleContactListBase, example_contact_list_base, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_CONTACT_LIST, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, tp_group_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL)) /* Subclass for handle type LIST */ G_DEFINE_TYPE_WITH_CODE (ExampleContactList, example_contact_list, EXAMPLE_TYPE_CONTACT_LIST_BASE, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, list_channel_iface_init)) /* Subclass for handle type GROUP */ G_DEFINE_TYPE_WITH_CODE (ExampleContactGroup, example_contact_group, EXAMPLE_TYPE_CONTACT_LIST_BASE, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, group_channel_iface_init)) static const gchar *contact_list_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_GROUP, NULL }; enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_CONNECTION, PROP_MANAGER, PROP_INTERFACES, PROP_CHANNEL_DESTROYED, PROP_CHANNEL_PROPERTIES, N_PROPS }; struct _ExampleContactListBasePrivate { TpBaseConnection *conn; ExampleContactListManager *manager; gchar *object_path; TpHandleType handle_type; TpHandle handle; /* These are really booleans, but gboolean is signed. Thanks, GLib */ unsigned closed:1; unsigned disposed:1; }; struct _ExampleContactListPrivate { int dummy:1; }; struct _ExampleContactGroupPrivate { int dummy:1; }; static void example_contact_list_base_init (ExampleContactListBase *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST_BASE, ExampleContactListBasePrivate); } static void example_contact_list_init (ExampleContactList *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST, ExampleContactListPrivate); } static void example_contact_group_init (ExampleContactGroup *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_GROUP, ExampleContactGroupPrivate); } static void constructed (GObject *object) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_contact_list_base_parent_class)->constructed; TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); TpHandle self_handle = self->priv->conn->self_handle; if (chain_up != NULL) chain_up (object); g_assert (TP_IS_BASE_CONNECTION (self->priv->conn)); g_assert (EXAMPLE_IS_CONTACT_LIST_MANAGER (self->priv->manager)); tp_dbus_daemon_register_object ( tp_base_connection_get_dbus_daemon (self->priv->conn), self->priv->object_path, self); tp_group_mixin_init (object, G_STRUCT_OFFSET (ExampleContactListBase, group), contact_repo, self_handle); /* Both the subclasses have full support for telepathy-spec 0.17.6. */ tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_PROPERTIES, 0); } static void list_constructed (GObject *object) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_contact_list_parent_class)->constructed; if (chain_up != NULL) chain_up (object); g_assert (self->parent.priv->handle_type == TP_HANDLE_TYPE_LIST); switch (self->parent.priv->handle) { case EXAMPLE_CONTACT_LIST_PUBLISH: /* We can stop publishing presence to people, but we can't * start sending people our presence unless they ask for it. * * (We can accept people's requests to see our presence - but that's * always allowed, so there's no flag.) */ tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_CAN_REMOVE, 0); break; case EXAMPLE_CONTACT_LIST_STORED: case EXAMPLE_CONTACT_LIST_DENY: /* We can add people to our roster (not that that's very useful without * also adding them to subscribe), and we can remove them altogether * (which implicitly removes them from subscribe, publish, and all * user-defined groups). * * Similarly, we can block and unblock people (i.e. add/remove them * to/from the deny list) */ tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_CAN_ADD | TP_CHANNEL_GROUP_FLAG_CAN_REMOVE, 0); break; case EXAMPLE_CONTACT_LIST_SUBSCRIBE: /* We can ask people to show us their presence, attaching a message. * We can also cancel (rescind) requests that they haven't replied to, * and stop receiving their presence after they allow it. */ tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_CAN_ADD | TP_CHANNEL_GROUP_FLAG_MESSAGE_ADD | TP_CHANNEL_GROUP_FLAG_CAN_REMOVE | TP_CHANNEL_GROUP_FLAG_CAN_RESCIND, 0); break; default: g_assert_not_reached (); } } static void group_constructed (GObject *object) { ExampleContactGroup *self = EXAMPLE_CONTACT_GROUP (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_contact_group_parent_class)->constructed; if (chain_up != NULL) chain_up (object); g_assert (self->parent.priv->handle_type == TP_HANDLE_TYPE_GROUP); /* We can add people to user-defined groups, and also remove them. */ tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_CAN_ADD | TP_CHANNEL_GROUP_FLAG_CAN_REMOVE, 0); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, self->priv->handle_type); break; case PROP_HANDLE: g_value_set_uint (value, self->priv->handle); break; case PROP_TARGET_ID: { TpHandleRepoIface *handle_repo = tp_base_connection_get_handles ( self->priv->conn, self->priv->handle_type); g_value_set_string (value, tp_handle_inspect (handle_repo, self->priv->handle)); } break; case PROP_REQUESTED: g_value_set_boolean (value, FALSE); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, 0); break; case PROP_INITIATOR_ID: g_value_set_static_string (value, ""); break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; case PROP_INTERFACES: g_value_set_boxed (value, contact_list_interfaces); break; case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, self->priv->closed); break; case PROP_CHANNEL_PROPERTIES: g_value_take_boxed (value, tp_dbus_properties_mixin_make_properties_hash (object, TP_IFACE_CHANNEL, "ChannelType", TP_IFACE_CHANNEL, "TargetHandleType", TP_IFACE_CHANNEL, "TargetHandle", TP_IFACE_CHANNEL, "TargetID", TP_IFACE_CHANNEL, "InitiatorHandle", TP_IFACE_CHANNEL, "InitiatorID", TP_IFACE_CHANNEL, "Requested", TP_IFACE_CHANNEL, "Interfaces", NULL)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); switch (property_id) { case PROP_OBJECT_PATH: g_free (self->priv->object_path); self->priv->object_path = g_value_dup_string (value); break; case PROP_HANDLE: /* we don't ref it here because we don't necessarily have access to the * repository (or even type) yet - instead we ref it in the constructor. */ self->priv->handle = g_value_get_uint (value); break; case PROP_HANDLE_TYPE: self->priv->handle_type = g_value_get_uint (value); break; case PROP_CHANNEL_TYPE: /* this property is writable in the interface, but not actually * meaningfully changable on this channel, so we do nothing */ break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; case PROP_MANAGER: self->priv->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); if (self->priv->disposed) return; self->priv->disposed = TRUE; if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } ((GObjectClass *) example_contact_list_base_parent_class)->dispose (object); } static void finalize (GObject *object) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); g_free (self->priv->object_path); tp_group_mixin_finalize (object); ((GObjectClass *) example_contact_list_base_parent_class)->finalize (object); } static gboolean group_add_member (GObject *object, TpHandle handle, const gchar *message, GError **error) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); return example_contact_list_manager_add_to_group (self->priv->manager, object, self->priv->handle, handle, message, error); } static gboolean group_remove_member (GObject *object, TpHandle handle, const gchar *message, GError **error) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); return example_contact_list_manager_remove_from_group (self->priv->manager, object, self->priv->handle, handle, message, error); } static gboolean list_add_member (GObject *object, TpHandle handle, const gchar *message, GError **error) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); return example_contact_list_manager_add_to_list (self->priv->manager, object, self->priv->handle, handle, message, error); } static gboolean list_remove_member (GObject *object, TpHandle handle, const gchar *message, GError **error) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (object); return example_contact_list_manager_remove_from_list (self->priv->manager, object, self->priv->handle, handle, message, error); } static void example_contact_list_base_class_init (ExampleContactListBaseClass *klass) { static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { NULL } }; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (ExampleContactListBasePrivate)); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, "channel-destroyed"); g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, "channel-properties"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_object ("manager", "ExampleContactListManager", "ExampleContactListManager object that owns this channel", EXAMPLE_TYPE_CONTACT_LIST_MANAGER, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_MANAGER, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Chatroom's ID", "The string obtained by inspecting the MUC's handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListBaseClass, dbus_properties_class)); /* Group mixin is initialized separately for each subclass - they have * different callbacks */ } static void example_contact_list_class_init (ExampleContactListClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; g_type_class_add_private (klass, sizeof (ExampleContactListPrivate)); object_class->constructed = list_constructed; tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListBaseClass, group_class), list_add_member, list_remove_member); tp_group_mixin_init_dbus_properties (object_class); } static void example_contact_group_class_init (ExampleContactGroupClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; g_type_class_add_private (klass, sizeof (ExampleContactGroupPrivate)); object_class->constructed = group_constructed; tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListBaseClass, group_class), group_add_member, group_remove_member); tp_group_mixin_init_dbus_properties (object_class); } static void list_channel_close (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { GError e = { TP_ERROR, TP_ERROR_NOT_IMPLEMENTED, "ContactList channels with handle type LIST may not be closed" }; dbus_g_method_return_error (context, &e); } static void group_channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleContactGroup *self = EXAMPLE_CONTACT_GROUP (iface); ExampleContactListBase *base = EXAMPLE_CONTACT_LIST_BASE (iface); if (tp_handle_set_size (base->group.members) > 0) { GError e = { TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Non-empty groups may not be deleted (closed)" }; dbus_g_method_return_error (context, &e); return; } if (!base->priv->closed) { /* If this was a real connection manager we'd delete the group here, * if such a concept existed in the protocol (in XMPP, it doesn't). * * Afterwards, close the channel: */ base->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { ExampleContactListBase *self = EXAMPLE_CONTACT_LIST_BASE (iface); tp_svc_channel_return_from_get_handle (context, self->priv->handle_type, self->priv->handle); } static void channel_get_interfaces (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, contact_list_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) /* close is implemented in subclasses, so don't IMPLEMENT (close); */ IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void list_channel_iface_init (gpointer iface, gpointer data G_GNUC_UNUSED) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, list_channel_##x) IMPLEMENT (close); #undef IMPLEMENT } static void group_channel_iface_init (gpointer iface, gpointer data G_GNUC_UNUSED) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, group_channel_##x) IMPLEMENT (close); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/contact-list.h0000644000175100017520000001045712530423576025662 0ustar00kaffeinekaffeine00000000000000/* * Example ContactList channels with handle type LIST or GROUP * * Copyright © 2009 Collabora Ltd. * Copyright © 2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_CONTACT_LIST_H #define EXAMPLE_CONTACT_LIST_H #include #include #include G_BEGIN_DECLS typedef struct _ExampleContactListBase ExampleContactListBase; typedef struct _ExampleContactListBaseClass ExampleContactListBaseClass; typedef struct _ExampleContactListBasePrivate ExampleContactListBasePrivate; typedef struct _ExampleContactList ExampleContactList; typedef struct _ExampleContactListClass ExampleContactListClass; typedef struct _ExampleContactListPrivate ExampleContactListPrivate; typedef struct _ExampleContactGroup ExampleContactGroup; typedef struct _ExampleContactGroupClass ExampleContactGroupClass; typedef struct _ExampleContactGroupPrivate ExampleContactGroupPrivate; GType example_contact_list_base_get_type (void); GType example_contact_list_get_type (void); GType example_contact_group_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_BASE \ (example_contact_list_base_get_type ()) #define EXAMPLE_CONTACT_LIST_BASE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CONTACT_LIST_BASE, \ ExampleContactListBase)) #define EXAMPLE_CONTACT_LIST_BASE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CONTACT_LIST_BASE, \ ExampleContactListBaseClass)) #define EXAMPLE_IS_CONTACT_LIST_BASE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CONTACT_LIST_BASE)) #define EXAMPLE_IS_CONTACT_LIST_BASE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CONTACT_LIST_BASE)) #define EXAMPLE_CONTACT_LIST_BASE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_LIST_BASE, \ ExampleContactListBaseClass)) #define EXAMPLE_TYPE_CONTACT_LIST \ (example_contact_list_get_type ()) #define EXAMPLE_CONTACT_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CONTACT_LIST, \ ExampleContactList)) #define EXAMPLE_CONTACT_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CONTACT_LIST, \ ExampleContactListClass)) #define EXAMPLE_IS_CONTACT_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CONTACT_LIST)) #define EXAMPLE_IS_CONTACT_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CONTACT_LIST)) #define EXAMPLE_CONTACT_LIST_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_LIST, \ ExampleContactListClass)) #define EXAMPLE_TYPE_CONTACT_GROUP \ (example_contact_group_get_type ()) #define EXAMPLE_CONTACT_GROUP(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CONTACT_GROUP, \ ExampleContactGroup)) #define EXAMPLE_CONTACT_GROUP_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CONTACT_GROUP, \ ExampleContactGroupClass)) #define EXAMPLE_IS_CONTACT_GROUP(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CONTACT_GROUP)) #define EXAMPLE_IS_CONTACT_GROUP_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CONTACT_GROUP)) #define EXAMPLE_CONTACT_GROUP_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_GROUP, \ ExampleContactGroupClass)) struct _ExampleContactListBaseClass { GObjectClass parent_class; TpGroupMixinClass group_class; TpDBusPropertiesMixinClass dbus_properties_class; }; struct _ExampleContactListClass { ExampleContactListBaseClass parent_class; }; struct _ExampleContactGroupClass { ExampleContactListBaseClass parent_class; }; struct _ExampleContactListBase { GObject parent; TpGroupMixin group; ExampleContactListBasePrivate *priv; }; struct _ExampleContactList { ExampleContactListBase parent; ExampleContactListPrivate *priv; }; struct _ExampleContactGroup { ExampleContactListBase parent; ExampleContactGroupPrivate *priv; }; G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/manager-file.py0000644000175100017520000000116212530423576025777 0ustar00kaffeinekaffeine00000000000000# Input for tools/manager-file.py MANAGER = 'example_contact_list' PARAMS = { 'example' : { 'account': { 'dtype': 's', 'flags': 'required register', 'filter': 'account_param_filter', # 'filter_data': 'NULL', # 'default': ..., # 'struct_field': '...', # 'setter_data': 'NULL', }, 'simulation-delay': { 'dtype': 'u', 'default': 1000, }, }, } STRUCTS = { 'example': 'ExampleParams' } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/contact-list-manager.c0000644000175100017520000015276512530423576027276 0ustar00kaffeinekaffeine00000000000000/* * Example channel manager for contact lists * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "contact-list-manager.h" #include #include #include #include "contact-list.h" /* elements 0, 1... of this array must be kept in sync with elements 1, 2... * of the enum ExampleContactList in contact-list-manager.h */ static const gchar *_contact_lists[NUM_EXAMPLE_CONTACT_LISTS + 1] = { "subscribe", "publish", "stored", "deny", NULL }; const gchar ** example_contact_lists (void) { return _contact_lists; } /* this array must be kept in sync with the enum * ExampleContactListPresence in contact-list-manager.h */ static const TpPresenceStatusSpec _statuses[] = { { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, NULL }, { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, NULL }, { NULL } }; const TpPresenceStatusSpec * example_contact_list_presence_statuses (void) { return _statuses; } typedef struct { gchar *alias; guint subscribe:1; guint publish:1; guint subscribe_requested:1; guint publish_requested:1; guint stored:1; guint blocked:1; TpHandleSet *tags; } ExampleContactDetails; static ExampleContactDetails * example_contact_details_new (void) { return g_slice_new0 (ExampleContactDetails); } static void example_contact_details_destroy (gpointer p) { ExampleContactDetails *d = p; if (d->tags != NULL) tp_handle_set_destroy (d->tags); g_free (d->alias); g_slice_free (ExampleContactDetails, d); } static void channel_manager_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleContactListManager, example_contact_list_manager, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, channel_manager_iface_init)) enum { ALIAS_UPDATED, PRESENCE_UPDATED, N_SIGNALS }; static guint signals[N_SIGNALS] = { 0 }; enum { PROP_CONNECTION = 1, PROP_SIMULATION_DELAY, N_PROPS }; struct _ExampleContactListManagerPrivate { TpBaseConnection *conn; guint simulation_delay; TpHandleRepoIface *contact_repo; TpHandleRepoIface *group_repo; TpHandleSet *contacts; /* GUINT_TO_POINTER (handle borrowed from contacts) * => ExampleContactDetails */ GHashTable *contact_details; ExampleContactList *lists[NUM_EXAMPLE_CONTACT_LISTS]; /* GUINT_TO_POINTER (handle borrowed from channel) => ExampleContactGroup */ GHashTable *groups; /* borrowed TpExportableChannel => GSList of gpointer (request tokens) that * will be satisfied by that channel when the contact list has been * downloaded. The requests are in reverse chronological order */ GHashTable *queued_requests; gulong status_changed_id; }; static void example_contact_list_manager_init (ExampleContactListManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST_MANAGER, ExampleContactListManagerPrivate); self->priv->contact_details = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, example_contact_details_destroy); self->priv->groups = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref); self->priv->queued_requests = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); /* initialized properly in constructed() */ self->priv->contact_repo = NULL; self->priv->group_repo = NULL; self->priv->contacts = NULL; } static void example_contact_list_manager_close_all (ExampleContactListManager *self) { guint i; if (self->priv->queued_requests != NULL) { GHashTable *tmp = self->priv->queued_requests; GHashTableIter iter; gpointer key, value; self->priv->queued_requests = NULL; g_hash_table_iter_init (&iter, tmp); while (g_hash_table_iter_next (&iter, &key, &value)) { GSList *requests = value; GSList *l; requests = g_slist_reverse (requests); for (l = requests; l != NULL; l = l->next) { tp_channel_manager_emit_request_failed (self, l->data, TP_ERROR, TP_ERROR_DISCONNECTED, "Unable to complete channel request due to disconnection"); } g_slist_free (requests); g_hash_table_iter_steal (&iter); } g_hash_table_destroy (tmp); } if (self->priv->contacts != NULL) { tp_handle_set_destroy (self->priv->contacts); self->priv->contacts = NULL; } if (self->priv->contact_details != NULL) { GHashTable *tmp = self->priv->contact_details; self->priv->contact_details = NULL; g_hash_table_destroy (tmp); } if (self->priv->groups != NULL) { GHashTable *tmp = self->priv->groups; self->priv->groups = NULL; g_hash_table_destroy (tmp); } for (i = 0; i < NUM_EXAMPLE_CONTACT_LISTS; i++) { if (self->priv->lists[i] != NULL) { ExampleContactList *list = self->priv->lists[i]; /* set self->priv->lists[i] to NULL here so list_closed_cb does * not try to delete the list again */ self->priv->lists[i] = NULL; g_object_unref (list); } } if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } } static void dispose (GObject *object) { ExampleContactListManager *self = EXAMPLE_CONTACT_LIST_MANAGER (object); example_contact_list_manager_close_all (self); g_assert (self->priv->groups == NULL); g_assert (self->priv->lists[0] == NULL); g_assert (self->priv->queued_requests == NULL); ((GObjectClass *) example_contact_list_manager_parent_class)->dispose ( object); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleContactListManager *self = EXAMPLE_CONTACT_LIST_MANAGER (object); switch (property_id) { case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleContactListManager *self = EXAMPLE_CONTACT_LIST_MANAGER (object); switch (property_id) { case PROP_CONNECTION: /* We don't ref the connection, because it owns a reference to the * manager, and it guarantees that the manager's lifetime is * less than its lifetime */ self->priv->conn = g_value_get_object (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void satisfy_queued_requests (TpExportableChannel *channel, gpointer user_data) { ExampleContactListManager *self = EXAMPLE_CONTACT_LIST_MANAGER (user_data); GSList *requests = g_hash_table_lookup (self->priv->queued_requests, channel); /* this is all fine even if requests is NULL */ g_hash_table_steal (self->priv->queued_requests, channel); requests = g_slist_reverse (requests); tp_channel_manager_emit_new_channel (self, channel, requests); g_slist_free (requests); } static ExampleContactDetails * lookup_contact (ExampleContactListManager *self, TpHandle contact) { return g_hash_table_lookup (self->priv->contact_details, GUINT_TO_POINTER (contact)); } static ExampleContactDetails * ensure_contact (ExampleContactListManager *self, TpHandle contact, gboolean *created) { ExampleContactDetails *ret = lookup_contact (self, contact); if (ret == NULL) { tp_handle_set_add (self->priv->contacts, contact); ret = example_contact_details_new (); ret->alias = g_strdup (tp_handle_inspect (self->priv->contact_repo, contact)); g_hash_table_insert (self->priv->contact_details, GUINT_TO_POINTER (contact), ret); if (created != NULL) *created = TRUE; } else if (created != NULL) { *created = FALSE; } return ret; } static void example_contact_list_manager_foreach_channel (TpChannelManager *manager, TpExportableChannelFunc callback, gpointer user_data) { ExampleContactListManager *self = EXAMPLE_CONTACT_LIST_MANAGER (manager); GHashTableIter iter; gpointer handle, channel; guint i; for (i = 0; i < NUM_EXAMPLE_CONTACT_LISTS; i++) { if (self->priv->lists[i] != NULL) callback (TP_EXPORTABLE_CHANNEL (self->priv->lists[i]), user_data); } g_hash_table_iter_init (&iter, self->priv->groups); while (g_hash_table_iter_next (&iter, &handle, &channel)) { callback (TP_EXPORTABLE_CHANNEL (channel), user_data); } } static ExampleContactGroup *ensure_group (ExampleContactListManager *self, TpHandle handle); static ExampleContactList *ensure_list (ExampleContactListManager *self, ExampleContactListHandle handle); static gboolean receive_contact_lists (gpointer p) { ExampleContactListManager *self = p; TpHandle handle, cambridge, montreal, francophones; ExampleContactDetails *d; TpIntSet *set, *cam_set, *mtl_set, *fr_set; TpIntSetFastIter iter; ExampleContactList *subscribe, *publish, *stored, *deny; ExampleContactGroup *cambridge_group, *montreal_group, *francophones_group; if (self->priv->groups == NULL) { /* connection already disconnected, so don't process the * "data from the server" */ return FALSE; } /* In a real CM we'd have received a contact list from the server at this * point. But this isn't a real CM, so we have to make one up... */ g_message ("Receiving roster from server"); subscribe = ensure_list (self, EXAMPLE_CONTACT_LIST_SUBSCRIBE); publish = ensure_list (self, EXAMPLE_CONTACT_LIST_PUBLISH); stored = ensure_list (self, EXAMPLE_CONTACT_LIST_STORED); deny = ensure_list (self, EXAMPLE_CONTACT_LIST_DENY); cambridge = tp_handle_ensure (self->priv->group_repo, "Cambridge", NULL, NULL); montreal = tp_handle_ensure (self->priv->group_repo, "Montreal", NULL, NULL); francophones = tp_handle_ensure (self->priv->group_repo, "Francophones", NULL, NULL); cambridge_group = ensure_group (self, cambridge); montreal_group = ensure_group (self, montreal); francophones_group = ensure_group (self, francophones); /* Add various people who are already subscribing and publishing */ set = tp_intset_new (); cam_set = tp_intset_new (); mtl_set = tp_intset_new (); fr_set = tp_intset_new (); handle = tp_handle_ensure (self->priv->contact_repo, "sjoerd@example.com", NULL, NULL); tp_intset_add (set, handle); tp_intset_add (cam_set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Sjoerd"); d->subscribe = TRUE; d->publish = TRUE; d->stored = TRUE; d->tags = tp_handle_set_new (self->priv->group_repo); tp_handle_set_add (d->tags, cambridge); handle = tp_handle_ensure (self->priv->contact_repo, "guillaume@example.com", NULL, NULL); tp_intset_add (set, handle); tp_intset_add (cam_set, handle); tp_intset_add (fr_set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Guillaume"); d->subscribe = TRUE; d->publish = TRUE; d->stored = TRUE; d->tags = tp_handle_set_new (self->priv->group_repo); tp_handle_set_add (d->tags, cambridge); tp_handle_set_add (d->tags, francophones); handle = tp_handle_ensure (self->priv->contact_repo, "olivier@example.com", NULL, NULL); tp_intset_add (set, handle); tp_intset_add (mtl_set, handle); tp_intset_add (fr_set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Olivier"); d->subscribe = TRUE; d->publish = TRUE; d->stored = TRUE; d->tags = tp_handle_set_new (self->priv->group_repo); tp_handle_set_add (d->tags, montreal); tp_handle_set_add (d->tags, francophones); handle = tp_handle_ensure (self->priv->contact_repo, "travis@example.com", NULL, NULL); tp_intset_add (set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Travis"); d->subscribe = TRUE; d->publish = TRUE; d->stored = TRUE; tp_group_mixin_change_members ((GObject *) subscribe, "", set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) publish, "", set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_fast_iter_init (&iter, set); while (tp_intset_fast_iter_next (&iter, &handle)) { g_signal_emit (self, signals[ALIAS_UPDATED], 0, handle); g_signal_emit (self, signals[PRESENCE_UPDATED], 0, handle); } tp_intset_destroy (set); /* Add a couple of people whose presence we've requested. They are * remote-pending in subscribe */ set = tp_intset_new (); handle = tp_handle_ensure (self->priv->contact_repo, "geraldine@example.com", NULL, NULL); tp_intset_add (set, handle); tp_intset_add (cam_set, handle); tp_intset_add (fr_set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Géraldine"); d->subscribe_requested = TRUE; d->stored = TRUE; d->tags = tp_handle_set_new (self->priv->group_repo); tp_handle_set_add (d->tags, cambridge); tp_handle_set_add (d->tags, francophones); handle = tp_handle_ensure (self->priv->contact_repo, "helen@example.com", NULL, NULL); tp_intset_add (set, handle); tp_intset_add (cam_set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Helen"); d->subscribe_requested = TRUE; d->stored = TRUE; d->tags = tp_handle_set_new (self->priv->group_repo); tp_handle_set_add (d->tags, cambridge); tp_group_mixin_change_members ((GObject *) subscribe, "", NULL, NULL, NULL, set, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_fast_iter_init (&iter, set); while (tp_intset_fast_iter_next (&iter, &handle)) { g_signal_emit (self, signals[ALIAS_UPDATED], 0, handle); g_signal_emit (self, signals[PRESENCE_UPDATED], 0, handle); } tp_intset_destroy (set); /* Receive a couple of authorization requests too. These people are * local-pending in publish */ handle = tp_handle_ensure (self->priv->contact_repo, "wim@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Wim"); d->publish_requested = TRUE; d->stored = TRUE; set = tp_intset_new_containing (handle); tp_group_mixin_change_members ((GObject *) publish, "I'm more metal than you!", NULL, NULL, set, NULL, handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); g_signal_emit (self, signals[ALIAS_UPDATED], 0, handle); g_signal_emit (self, signals[PRESENCE_UPDATED], 0, handle); handle = tp_handle_ensure (self->priv->contact_repo, "christian@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Christian"); d->publish_requested = TRUE; d->stored = TRUE; set = tp_intset_new_containing (handle); tp_group_mixin_change_members ((GObject *) publish, "I have some fermented herring for you", NULL, NULL, set, NULL, handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); g_signal_emit (self, signals[ALIAS_UPDATED], 0, handle); g_signal_emit (self, signals[PRESENCE_UPDATED], 0, handle); /* Add a couple of people who are blocked */ set = tp_intset_new (); handle = tp_handle_ensure (self->priv->contact_repo, "bill@example.com", NULL, NULL); tp_intset_add (set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Bill"); d->blocked = TRUE; handle = tp_handle_ensure (self->priv->contact_repo, "steve@example.com", NULL, NULL); tp_intset_add (set, handle); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Steve"); d->blocked = TRUE; tp_group_mixin_change_members ((GObject *) deny, "", set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_fast_iter_init (&iter, set); while (tp_intset_fast_iter_next (&iter, &handle)) { g_signal_emit (self, signals[ALIAS_UPDATED], 0, handle); g_signal_emit (self, signals[PRESENCE_UPDATED], 0, handle); } tp_intset_destroy (set); /* Handle groups */ tp_group_mixin_change_members ((GObject *) cambridge_group, "", cam_set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) montreal_group, "", mtl_set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) francophones_group, "", fr_set, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (fr_set); tp_intset_destroy (cam_set); tp_intset_destroy (mtl_set); /* Now we've received the roster, we can satisfy all the queued requests */ example_contact_list_manager_foreach_channel ((TpChannelManager *) self, satisfy_queued_requests, self); g_assert (g_hash_table_size (self->priv->queued_requests) == 0); g_hash_table_destroy (self->priv->queued_requests); self->priv->queued_requests = NULL; return FALSE; } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, ExampleContactListManager *self) { switch (status) { case TP_CONNECTION_STATUS_CONNECTED: { /* Do network I/O to get the contact list. This connection manager * doesn't really have a server, so simulate a small network delay * then invent a contact list */ g_timeout_add_full (G_PRIORITY_DEFAULT, 2 * self->priv->simulation_delay, receive_contact_lists, g_object_ref (self), g_object_unref); } break; case TP_CONNECTION_STATUS_DISCONNECTED: { example_contact_list_manager_close_all (self); } break; } } static void constructed (GObject *object) { ExampleContactListManager *self = EXAMPLE_CONTACT_LIST_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_contact_list_manager_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } self->priv->contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); self->priv->group_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_GROUP); self->priv->contacts = tp_handle_set_new (self->priv->contact_repo); self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", (GCallback) status_changed_cb, self); } static void example_contact_list_manager_class_init (ExampleContactListManagerClass *klass) { GParamSpec *param_spec; GObjectClass *object_class = (GObjectClass *) klass; object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); g_type_class_add_private (klass, sizeof (ExampleContactListManagerPrivate)); signals[ALIAS_UPDATED] = g_signal_new ("alias-updated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); signals[PRESENCE_UPDATED] = g_signal_new ("presence-updated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); } static void list_closed_cb (ExampleContactList *chan, ExampleContactListManager *self) { TpHandle handle; tp_channel_manager_emit_channel_closed_for_object (self, TP_EXPORTABLE_CHANNEL (chan)); g_object_get (chan, "handle", &handle, NULL); if (self->priv->lists[handle] == NULL) return; g_assert (chan == self->priv->lists[handle]); g_object_unref (self->priv->lists[handle]); self->priv->lists[handle] = NULL; } static void group_closed_cb (ExampleContactGroup *chan, ExampleContactListManager *self) { tp_channel_manager_emit_channel_closed_for_object (self, TP_EXPORTABLE_CHANNEL (chan)); if (self->priv->groups != NULL) { TpHandle handle; g_object_get (chan, "handle", &handle, NULL); g_hash_table_remove (self->priv->groups, GUINT_TO_POINTER (handle)); } } static ExampleContactListBase * new_channel (ExampleContactListManager *self, TpHandleType handle_type, TpHandle handle, gpointer request_token) { ExampleContactListBase *chan; gchar *object_path; GType type; GSList *requests = NULL; if (handle_type == TP_HANDLE_TYPE_LIST) { /* Some Telepathy clients wrongly assume that contact lists of type LIST * have object paths ending with "/subscribe", "/publish" etc. - * telepathy-spec has no such guarantee, so in this example we break * those clients. Please read the spec when implementing it :-) */ object_path = g_strdup_printf ("%s/%sContactList", self->priv->conn->object_path, _contact_lists[handle - 1]); type = EXAMPLE_TYPE_CONTACT_LIST; } else { /* Using Group%u (with handle as the value of %u) would be OK here too, * but we'll encode the group name into the object path to be kind * to people reading debug logs. */ gchar *id = tp_escape_as_identifier (tp_handle_inspect ( self->priv->group_repo, handle)); g_assert (handle_type == TP_HANDLE_TYPE_GROUP); object_path = g_strdup_printf ("%s/Group/%s", self->priv->conn->object_path, id); type = EXAMPLE_TYPE_CONTACT_GROUP; g_free (id); } chan = g_object_new (type, "connection", self->priv->conn, "manager", self, "object-path", object_path, "handle-type", handle_type, "handle", handle, NULL); g_free (object_path); if (handle_type == TP_HANDLE_TYPE_LIST) { g_signal_connect (chan, "closed", (GCallback) list_closed_cb, self); g_assert (self->priv->lists[handle] == NULL); self->priv->lists[handle] = EXAMPLE_CONTACT_LIST (chan); } else { g_signal_connect (chan, "closed", (GCallback) group_closed_cb, self); g_assert (g_hash_table_lookup (self->priv->groups, GUINT_TO_POINTER (handle)) == NULL); g_hash_table_insert (self->priv->groups, GUINT_TO_POINTER (handle), EXAMPLE_CONTACT_GROUP (chan)); } if (self->priv->queued_requests == NULL) { if (request_token != NULL) requests = g_slist_prepend (requests, request_token); tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), requests); g_slist_free (requests); } else if (request_token != NULL) { /* initial contact list not received yet, so we have to wait for it */ requests = g_hash_table_lookup (self->priv->queued_requests, chan); g_hash_table_steal (self->priv->queued_requests, chan); requests = g_slist_prepend (requests, request_token); g_hash_table_insert (self->priv->queued_requests, chan, requests); } return chan; } static ExampleContactList * ensure_list (ExampleContactListManager *self, ExampleContactListHandle handle) { if (self->priv->lists[handle] == NULL) { new_channel (self, TP_HANDLE_TYPE_LIST, handle, NULL); g_assert (self->priv->lists[handle] != NULL); } return self->priv->lists[handle]; } static ExampleContactGroup * ensure_group (ExampleContactListManager *self, TpHandle handle) { ExampleContactGroup *group = g_hash_table_lookup (self->priv->groups, GUINT_TO_POINTER (handle)); if (group == NULL) { group = EXAMPLE_CONTACT_GROUP (new_channel (self, TP_HANDLE_TYPE_GROUP, handle, NULL)); } return group; } static const gchar * const fixed_properties[] = { TP_PROP_CHANNEL_CHANNEL_TYPE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL }; static const gchar * const allowed_properties[] = { TP_PROP_CHANNEL_TARGET_HANDLE, TP_PROP_CHANNEL_TARGET_ID, NULL }; static void example_contact_list_manager_foreach_channel_class (TpChannelManager *manager, TpChannelManagerChannelClassFunc func, gpointer user_data) { GHashTable *table = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_LIST, NULL); func (manager, table, allowed_properties, user_data); g_hash_table_insert (table, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, tp_g_value_slice_new_uint (TP_HANDLE_TYPE_GROUP)); func (manager, table, allowed_properties, user_data); g_hash_table_destroy (table); } static gboolean example_contact_list_manager_request (ExampleContactListManager *self, gpointer request_token, GHashTable *request_properties, gboolean require_new) { TpHandleType handle_type; TpHandle handle; ExampleContactListBase *chan; GError *error = NULL; if (tp_strdiff (tp_asv_get_string (request_properties, TP_PROP_CHANNEL_CHANNEL_TYPE), TP_IFACE_CHANNEL_TYPE_CONTACT_LIST)) { return FALSE; } handle_type = tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL); if (handle_type != TP_HANDLE_TYPE_LIST && handle_type != TP_HANDLE_TYPE_GROUP) { return FALSE; } handle = tp_asv_get_uint32 (request_properties, TP_PROP_CHANNEL_TARGET_HANDLE, NULL); g_assert (handle != 0); if (tp_channel_manager_asv_has_unknown_properties (request_properties, fixed_properties, allowed_properties, &error)) { goto error; } if (handle_type == TP_HANDLE_TYPE_LIST) { /* telepathy-glib has already checked that the handle is valid */ g_assert (handle < NUM_EXAMPLE_CONTACT_LISTS); chan = EXAMPLE_CONTACT_LIST_BASE (self->priv->lists[handle]); } else { chan = g_hash_table_lookup (self->priv->groups, GUINT_TO_POINTER (handle)); } if (chan == NULL) { new_channel (self, handle_type, handle, request_token); } else if (require_new) { g_set_error (&error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "A ContactList channel for type #%u, handle #%u already exists", handle_type, handle); goto error; } else { tp_channel_manager_emit_request_already_satisfied (self, request_token, TP_EXPORTABLE_CHANNEL (chan)); } return TRUE; error: tp_channel_manager_emit_request_failed (self, request_token, error->domain, error->code, error->message); g_error_free (error); return TRUE; } static gboolean example_contact_list_manager_create_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_contact_list_manager_request ( EXAMPLE_CONTACT_LIST_MANAGER (manager), request_token, request_properties, TRUE); } static gboolean example_contact_list_manager_ensure_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties) { return example_contact_list_manager_request ( EXAMPLE_CONTACT_LIST_MANAGER (manager), request_token, request_properties, FALSE); } static void channel_manager_iface_init (gpointer g_iface, gpointer data G_GNUC_UNUSED) { TpChannelManagerIface *iface = g_iface; iface->foreach_channel = example_contact_list_manager_foreach_channel; iface->foreach_channel_class = example_contact_list_manager_foreach_channel_class; iface->create_channel = example_contact_list_manager_create_channel; iface->ensure_channel = example_contact_list_manager_ensure_channel; /* In this channel manager, Request has the same semantics as Ensure */ iface->request_channel = example_contact_list_manager_ensure_channel; } static void send_updated_roster (ExampleContactListManager *self, TpHandle contact) { ExampleContactDetails *d = g_hash_table_lookup (self->priv->contact_details, GUINT_TO_POINTER (contact)); const gchar *identifier = tp_handle_inspect (self->priv->contact_repo, contact); /* In a real connection manager, we'd transmit these new details to the * server, rather than just printing messages. */ if (d == NULL) { g_message ("Deleting contact %s from server", identifier); } else { g_message ("Transmitting new state of contact %s to server", identifier); g_message ("\talias = %s", d->alias); g_message ("\tcan see our presence = %s", d->publish ? "yes" : (d->publish_requested ? "no, but has requested it" : "no")); g_message ("\tsends us presence = %s", d->subscribe ? "yes" : (d->subscribe_requested ? "no, but we have requested it" : "no")); g_message ("\tstored = %s", d->stored ? "yes" : "no"); g_message ("\tblocked = %s", d->blocked ? "yes" : "no"); if (d->tags == NULL || tp_handle_set_size (d->tags) == 0) { g_message ("\tnot in any groups"); } else { TpIntSet *set = tp_handle_set_peek (d->tags); TpIntSetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, set); while (tp_intset_fast_iter_next (&iter, &member)) { g_message ("\tin group: %s", tp_handle_inspect (self->priv->group_repo, member)); } } } } gboolean example_contact_list_manager_add_to_group (ExampleContactListManager *self, GObject *channel, TpHandle group, TpHandle member, const gchar *message, GError **error) { gboolean updated; ExampleContactDetails *d = ensure_contact (self, member, &updated); ExampleContactList *stored = self->priv->lists[ EXAMPLE_CONTACT_LIST_STORED]; if (d->tags == NULL) d->tags = tp_handle_set_new (self->priv->group_repo); if (!tp_handle_set_is_member (d->tags, group)) { tp_handle_set_add (d->tags, group); updated = TRUE; } if (updated) { TpIntSet *added = tp_intset_new_containing (member); d->stored = TRUE; send_updated_roster (self, member); tp_group_mixin_change_members (channel, "", added, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", added, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (added); } return TRUE; } gboolean example_contact_list_manager_remove_from_group ( ExampleContactListManager *self, GObject *channel, TpHandle group, TpHandle member, const gchar *message, GError **error) { ExampleContactDetails *d = lookup_contact (self, member); /* If not on the roster or not in any groups, we have nothing to do */ if (d == NULL || d->tags == NULL) return TRUE; if (tp_handle_set_remove (d->tags, group)) { TpIntSet *removed = tp_intset_new_containing (member); send_updated_roster (self, member); tp_group_mixin_change_members (channel, "", NULL, removed, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (removed); } return TRUE; } typedef struct { ExampleContactListManager *self; TpHandle contact; } SelfAndContact; static SelfAndContact * self_and_contact_new (ExampleContactListManager *self, TpHandle contact) { SelfAndContact *ret = g_slice_new0 (SelfAndContact); ret->self = g_object_ref (self); ret->contact = contact; return ret; } static void self_and_contact_destroy (gpointer p) { SelfAndContact *s = p; g_object_unref (s->self); g_slice_free (SelfAndContact, s); } static void receive_auth_request (ExampleContactListManager *self, TpHandle contact) { ExampleContactDetails *d; TpIntSet *set; ExampleContactList *publish = self->priv->lists[ EXAMPLE_CONTACT_LIST_PUBLISH]; ExampleContactList *stored = self->priv->lists[ EXAMPLE_CONTACT_LIST_STORED]; /* if shutting down, do nothing */ if (publish == NULL) return; /* A remote contact has asked to see our presence. * * In a real connection manager this would be the result of incoming * data from the server. */ g_message ("From server: %s has sent us a publish request", tp_handle_inspect (self->priv->contact_repo, contact)); d = ensure_contact (self, contact, NULL); if (d->publish) return; d->publish_requested = TRUE; d->stored = TRUE; set = tp_intset_new_containing (contact); tp_group_mixin_change_members ((GObject *) publish, "May I see your presence, please?", NULL, NULL, set, NULL, contact, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, contact, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } static gboolean receive_authorized (gpointer p) { SelfAndContact *s = p; ExampleContactDetails *d; TpIntSet *set; ExampleContactList *subscribe = s->self->priv->lists[ EXAMPLE_CONTACT_LIST_SUBSCRIBE]; ExampleContactList *stored = s->self->priv->lists[ EXAMPLE_CONTACT_LIST_STORED]; /* A remote contact has accepted our request to see their presence. * * In a real connection manager this would be the result of incoming * data from the server. */ g_message ("From server: %s has accepted our subscribe request", tp_handle_inspect (s->self->priv->contact_repo, s->contact)); d = ensure_contact (s->self, s->contact, NULL); /* if we were already subscribed to them, then nothing really happened */ if (d->subscribe) return FALSE; d->subscribe_requested = FALSE; d->subscribe = TRUE; d->stored = TRUE; set = tp_intset_new_containing (s->contact); tp_group_mixin_change_members ((GObject *) subscribe, "", set, NULL, NULL, NULL, s->contact, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, s->contact, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); /* their presence changes to something other than UNKNOWN */ g_signal_emit (s->self, signals[PRESENCE_UPDATED], 0, s->contact); /* if we're not publishing to them, also pretend they have asked us to * do so */ if (!d->publish) { receive_auth_request (s->self, s->contact); } return FALSE; } static gboolean receive_unauthorized (gpointer p) { SelfAndContact *s = p; ExampleContactDetails *d; TpIntSet *set; ExampleContactList *subscribe = s->self->priv->lists[ EXAMPLE_CONTACT_LIST_SUBSCRIBE]; /* if shutting down, do nothing */ if (subscribe == NULL) return FALSE; /* A remote contact has rejected our request to see their presence. * * In a real connection manager this would be the result of incoming * data from the server. */ g_message ("From server: %s has rejected our subscribe request", tp_handle_inspect (s->self->priv->contact_repo, s->contact)); d = ensure_contact (s->self, s->contact, NULL); if (!d->subscribe && !d->subscribe_requested) return FALSE; d->subscribe_requested = FALSE; d->subscribe = FALSE; set = tp_intset_new_containing (s->contact); tp_group_mixin_change_members ((GObject *) subscribe, "Say 'please'!", NULL, set, NULL, NULL, s->contact, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); /* their presence changes to UNKNOWN */ g_signal_emit (s->self, signals[PRESENCE_UPDATED], 0, s->contact); return FALSE; } gboolean example_contact_list_manager_add_to_list (ExampleContactListManager *self, GObject *channel, ExampleContactListHandle list, TpHandle member, const gchar *message, GError **error) { TpIntSet *set; ExampleContactList *stored = self->priv->lists[EXAMPLE_CONTACT_LIST_STORED]; switch (list) { case EXAMPLE_CONTACT_LIST_SUBSCRIBE: /* we would like to see member's presence */ { gboolean created; ExampleContactDetails *d = ensure_contact (self, member, &created); gchar *message_lc; /* if they already authorized us, it's a no-op */ if (d->subscribe) return TRUE; /* In a real connection manager we'd start a network request here */ g_message ("Transmitting authorization request to %s: %s", tp_handle_inspect (self->priv->contact_repo, member), message); if (created || !d->subscribe_requested) { d->subscribe_requested = TRUE; d->stored = TRUE; send_updated_roster (self, member); } set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, message, NULL, NULL, NULL, set, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); /* subscribing to someone implicitly puts them on Stored, too */ tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); /* Pretend that after a delay, the contact notices the request * and allows or rejects it. In this example connection manager, * empty requests are allowed, as are requests that contain "please" * case-insensitively. All other requests are denied. */ message_lc = g_ascii_strdown (message, -1); if (message[0] == '\0' || strstr (message_lc, "please") != NULL) { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, receive_authorized, self_and_contact_new (self, member), self_and_contact_destroy); } else { g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, receive_unauthorized, self_and_contact_new (self, member), self_and_contact_destroy); } g_free (message_lc); } return TRUE; case EXAMPLE_CONTACT_LIST_PUBLISH: /* We would like member to see our presence. This is meaningless, * unless they have asked for it. */ { ExampleContactDetails *d = lookup_contact (self, member); if (d == NULL || !d->publish_requested) { /* the group mixin won't actually allow this to be reached, * because of the flags we set */ g_set_error (error, TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Can't unilaterally send presence to %s", tp_handle_inspect (self->priv->contact_repo, member)); return FALSE; } if (!d->publish) { d->publish = TRUE; d->publish_requested = FALSE; d->stored = TRUE; send_updated_roster (self, member); set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", set, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } } return TRUE; case EXAMPLE_CONTACT_LIST_STORED: /* we would like member to be on the roster */ { ExampleContactDetails *d = ensure_contact (self, member, NULL); d->stored = TRUE; send_updated_roster (self, member); set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", set, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } return TRUE; case EXAMPLE_CONTACT_LIST_DENY: /* We would like member to be blocked */ { ExampleContactDetails *d = ensure_contact (self, member, NULL); g_message ("Blocking %s", tp_handle_inspect (self->priv->contact_repo, member)); d->blocked = TRUE; send_updated_roster (self, member); set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", set, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } return TRUE; default: g_return_val_if_reached (FALSE); } } static gboolean auth_request_cb (gpointer p) { SelfAndContact *s = p; receive_auth_request (s->self, s->contact); return FALSE; } gboolean example_contact_list_manager_remove_from_list (ExampleContactListManager *self, GObject *channel, ExampleContactListHandle list, TpHandle member, const gchar *message, GError **error) { TpIntSet *set; switch (list) { case EXAMPLE_CONTACT_LIST_PUBLISH: /* we would like member not to see our presence any more, or we * would like to reject a request from them to see our presence */ { ExampleContactDetails *d = lookup_contact (self, member); if (d != NULL) { if (d->publish_requested) { g_message ("Rejecting authorization request from %s", tp_handle_inspect (self->priv->contact_repo, member)); d->publish_requested = FALSE; set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } else if (d->publish) { g_message ("Removing authorization from %s", tp_handle_inspect (self->priv->contact_repo, member)); d->publish = FALSE; set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); /* Pretend that after a delay, the contact notices the change * and asks for our presence again */ g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, auth_request_cb, self_and_contact_new (self, member), self_and_contact_destroy); } else { /* nothing to do, avoid "updating the roster" */ return TRUE; } send_updated_roster (self, member); } } return TRUE; case EXAMPLE_CONTACT_LIST_SUBSCRIBE: /* we would like to avoid receiving member's presence any more, * or we would like to cancel an outstanding request for their * presence */ { ExampleContactDetails *d = lookup_contact (self, member); if (d != NULL) { if (d->subscribe_requested) { g_message ("Cancelling our authorization request to %s", tp_handle_inspect (self->priv->contact_repo, member)); d->subscribe_requested = FALSE; set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } else if (d->subscribe) { g_message ("We no longer want presence from %s", tp_handle_inspect (self->priv->contact_repo, member)); d->subscribe = FALSE; set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); /* since they're no longer on the subscribe list, we can't * see their presence, so emit a signal changing it to * UNKNOWN */ g_signal_emit (self, signals[PRESENCE_UPDATED], 0, member); } else { /* nothing to do, avoid "updating the roster" */ return TRUE; } send_updated_roster (self, member); } } return TRUE; case EXAMPLE_CONTACT_LIST_STORED: /* we would like to remove member from the roster altogether */ { ExampleContactDetails *d = lookup_contact (self, member); if (d != NULL) { /* if the contact is blocked, do not completely delete it */ if (d->blocked) { d->publish = FALSE; d->publish_requested = FALSE; d->subscribe = FALSE; d->subscribe_requested = FALSE; d->stored = FALSE; } else { g_hash_table_remove (self->priv->contact_details, GUINT_TO_POINTER (member)); } send_updated_roster (self, member); set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ( (GObject *) self->priv->lists[EXAMPLE_CONTACT_LIST_SUBSCRIBE], "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_group_mixin_change_members ( (GObject *) self->priv->lists[EXAMPLE_CONTACT_LIST_PUBLISH], "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); if (!d->blocked) tp_handle_set_remove (self->priv->contacts, member); /* since they're no longer on the subscribe list, we can't * see their presence, so emit a signal changing it to * UNKNOWN */ g_signal_emit (self, signals[PRESENCE_UPDATED], 0, member); } } return TRUE; case EXAMPLE_CONTACT_LIST_DENY: /* we would like to unblock member */ { ExampleContactDetails *d = lookup_contact (self, member); if (d != NULL) { g_message ("Unblocking %s", tp_handle_inspect (self->priv->contact_repo, member)); /* if the contact is also not stored, we need to delete it */ if (!d->stored) { g_hash_table_remove (self->priv->contact_details, GUINT_TO_POINTER (member)); } else { d->blocked = FALSE; } send_updated_roster (self, member); set = tp_intset_new_containing (member); tp_group_mixin_change_members (channel, "", NULL, set, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); if (!d->stored) tp_handle_set_remove (self->priv->contacts, member); } } return TRUE; default: g_return_val_if_reached (FALSE); } } ExampleContactListPresence example_contact_list_manager_get_presence (ExampleContactListManager *self, TpHandle contact) { ExampleContactDetails *d = lookup_contact (self, contact); const gchar *id; if (d == NULL || !d->subscribe) { /* we don't know the presence of people not on the subscribe list, * by definition */ return EXAMPLE_CONTACT_LIST_PRESENCE_UNKNOWN; } id = tp_handle_inspect (self->priv->contact_repo, contact); /* In this example CM, we fake contacts' presence based on their name: * contacts in the first half of the alphabet are available, the rest * (including non-alphabetic and non-ASCII initial letters) are away. */ if ((id[0] >= 'A' && id[0] <= 'M') || (id[0] >= 'a' && id[0] <= 'm')) { return EXAMPLE_CONTACT_LIST_PRESENCE_AVAILABLE; } return EXAMPLE_CONTACT_LIST_PRESENCE_AWAY; } const gchar * example_contact_list_manager_get_alias (ExampleContactListManager *self, TpHandle contact) { ExampleContactDetails *d = lookup_contact (self, contact); if (d == NULL) { /* we don't have a user-defined alias for people not on the roster */ return tp_handle_inspect (self->priv->contact_repo, contact); } return d->alias; } void example_contact_list_manager_set_alias (ExampleContactListManager *self, TpHandle contact, const gchar *alias) { gboolean created; ExampleContactDetails *d = ensure_contact (self, contact, &created); ExampleContactList *stored = self->priv->lists[ EXAMPLE_CONTACT_LIST_STORED]; gchar *old = d->alias; TpIntSet *set; /* FIXME: if stored list hasn't been retrieved yet, queue the change for * later */ /* if shutting down, do nothing */ if (stored == NULL) return; d->alias = g_strdup (alias); d->stored = TRUE; if (created || tp_strdiff (old, alias)) send_updated_roster (self, contact); g_free (old); set = tp_intset_new_containing (contact); tp_group_mixin_change_members ((GObject *) stored, "", set, NULL, NULL, NULL, self->priv->conn->self_handle, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); tp_intset_destroy (set); } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist/contact-list-manager.h0000644000175100017520000000762512530423576027275 0ustar00kaffeinekaffeine00000000000000/* * Example channel manager for contact lists * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CONTACT_LIST_MANAGER_H__ #define __EXAMPLE_CONTACT_LIST_MANAGER_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _ExampleContactListManager ExampleContactListManager; typedef struct _ExampleContactListManagerClass ExampleContactListManagerClass; typedef struct _ExampleContactListManagerPrivate ExampleContactListManagerPrivate; struct _ExampleContactListManagerClass { GObjectClass parent_class; }; struct _ExampleContactListManager { GObject parent; ExampleContactListManagerPrivate *priv; }; GType example_contact_list_manager_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_MANAGER \ (example_contact_list_manager_get_type ()) #define EXAMPLE_CONTACT_LIST_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CONTACT_LIST_MANAGER, \ ExampleContactListManager)) #define EXAMPLE_CONTACT_LIST_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CONTACT_LIST_MANAGER, \ ExampleContactListManagerClass)) #define EXAMPLE_IS_CONTACT_LIST_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CONTACT_LIST_MANAGER)) #define EXAMPLE_IS_CONTACT_LIST_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CONTACT_LIST_MANAGER)) #define EXAMPLE_CONTACT_LIST_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_LIST_MANAGER, \ ExampleContactListManagerClass)) gboolean example_contact_list_manager_add_to_group ( ExampleContactListManager *self, GObject *channel, TpHandle group, TpHandle member, const gchar *message, GError **error); gboolean example_contact_list_manager_remove_from_group ( ExampleContactListManager *self, GObject *channel, TpHandle group, TpHandle member, const gchar *message, GError **error); /* elements 1, 2... of this enum must be kept in sync with elements 0, 1... * of the array _contact_lists in contact-list-manager.h */ typedef enum { INVALID_EXAMPLE_CONTACT_LIST, EXAMPLE_CONTACT_LIST_SUBSCRIBE = 1, EXAMPLE_CONTACT_LIST_PUBLISH, EXAMPLE_CONTACT_LIST_STORED, EXAMPLE_CONTACT_LIST_DENY, NUM_EXAMPLE_CONTACT_LISTS } ExampleContactListHandle; /* this enum must be kept in sync with the array _statuses in * contact-list-manager.c */ typedef enum { EXAMPLE_CONTACT_LIST_PRESENCE_OFFLINE = 0, EXAMPLE_CONTACT_LIST_PRESENCE_UNKNOWN, EXAMPLE_CONTACT_LIST_PRESENCE_ERROR, EXAMPLE_CONTACT_LIST_PRESENCE_AWAY, EXAMPLE_CONTACT_LIST_PRESENCE_AVAILABLE } ExampleContactListPresence; const TpPresenceStatusSpec *example_contact_list_presence_statuses ( void); gboolean example_contact_list_manager_add_to_list ( ExampleContactListManager *self, GObject *channel, ExampleContactListHandle list, TpHandle member, const gchar *message, GError **error); gboolean example_contact_list_manager_remove_from_list ( ExampleContactListManager *self, GObject *channel, ExampleContactListHandle list, TpHandle member, const gchar *message, GError **error); const gchar **example_contact_lists (void); ExampleContactListPresence example_contact_list_manager_get_presence ( ExampleContactListManager *self, TpHandle contact); const gchar *example_contact_list_manager_get_alias ( ExampleContactListManager *self, TpHandle contact); void example_contact_list_manager_set_alias ( ExampleContactListManager *self, TpHandle contact, const gchar *alias); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/simple-account-manager.c0000644000175100017520000001264612530423576025257 0ustar00kaffeinekaffeine00000000000000/* * simple-account-manager.c - a simple account manager service. * * Copyright (C) 2007-2009 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "simple-account-manager.h" #include #include #include #include static void account_manager_iface_init (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (TpTestsSimpleAccountManager, tp_tests_simple_account_manager, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_ACCOUNT_MANAGER, account_manager_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init) ) /* TP_IFACE_ACCOUNT_MANAGER is implied */ static const char *ACCOUNT_MANAGER_INTERFACES[] = { NULL }; static gchar *VALID_ACCOUNTS[] = { "/org/freedesktop/Telepathy/Account/fakecm/fakeproto/validaccount", NULL }; static gchar *INVALID_ACCOUNTS[] = { "/org/freedesktop/Telepathy/Account/fakecm/fakeproto/invalidaccount", NULL }; enum { PROP_0, PROP_INTERFACES, PROP_VALID_ACCOUNTS, PROP_INVALID_ACCOUNTS, }; struct _TpTestsSimpleAccountManagerPrivate { int dummy; }; static void tp_tests_simple_account_manager_create_account (TpSvcAccountManager *self, const gchar *in_Connection_Manager, const gchar *in_Protocol, const gchar *in_Display_Name, GHashTable *in_Parameters, GHashTable *in_Properties, DBusGMethodInvocation *context) { const gchar *out_Account = "/some/fake/account/i/think"; tp_svc_account_manager_return_from_create_account (context, out_Account); } static void account_manager_iface_init (gpointer klass, gpointer unused G_GNUC_UNUSED) { #define IMPLEMENT(x) tp_svc_account_manager_implement_##x (\ klass, tp_tests_simple_account_manager_##x) IMPLEMENT (create_account); #undef IMPLEMENT } static void tp_tests_simple_account_manager_init (TpTestsSimpleAccountManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, TpTestsSimpleAccountManagerPrivate); } static void tp_tests_simple_account_manager_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { GPtrArray *accounts; guint i = 0; switch (property_id) { case PROP_INTERFACES: g_value_set_boxed (value, ACCOUNT_MANAGER_INTERFACES); break; case PROP_VALID_ACCOUNTS: accounts = g_ptr_array_new (); for (i=0; VALID_ACCOUNTS[i] != NULL; i++) g_ptr_array_add (accounts, g_strdup (VALID_ACCOUNTS[i])); g_value_take_boxed (value, accounts); break; case PROP_INVALID_ACCOUNTS: accounts = g_ptr_array_new (); for (i=0; INVALID_ACCOUNTS[i] != NULL; i++) g_ptr_array_add (accounts, g_strdup (VALID_ACCOUNTS[i])); g_value_take_boxed (value, accounts); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); break; } } /** * This class currently only provides the minimum for * tp_account_manager_prepare to succeed. This turns out to be only a working * Properties.GetAll(). If we wanted later to check the case where * tp_account_prepare succeeds, we would need to implement an account object * too. */ static void tp_tests_simple_account_manager_class_init ( TpTestsSimpleAccountManagerClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl am_props[] = { { "Interfaces", "interfaces", NULL }, { "ValidAccounts", "valid-accounts", NULL }, { "InvalidAccounts", "invalid-accounts", NULL }, /* { "SupportedAccountProperties", "supported-account-properties", NULL }, */ { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_ACCOUNT_MANAGER, tp_dbus_properties_mixin_getter_gobject_properties, NULL, am_props }, { NULL }, }; g_type_class_add_private (klass, sizeof (TpTestsSimpleAccountManagerPrivate)); object_class->get_property = tp_tests_simple_account_manager_get_property; param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "In this case we only implement AccountManager, so none.", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_boxed ("valid-accounts", "Valid accounts", "The accounts which are valid on this account. This may be a lie.", TP_ARRAY_TYPE_OBJECT_PATH_LIST, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_VALID_ACCOUNTS, param_spec); param_spec = g_param_spec_boxed ("invalid-accounts", "Invalid accounts", "The accounts which are invalid on this account. This may be a lie.", TP_ARRAY_TYPE_OBJECT_PATH_LIST, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_INVALID_ACCOUNTS, param_spec); klass->dbus_props_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsSimpleAccountManagerClass, dbus_props_class)); } telepathy-qt-0.9.6.1/tests/lib/glib/simple-account-manager.h0000644000175100017520000000404712530423576025260 0ustar00kaffeinekaffeine00000000000000/* * simple-account-manager.h - header for a simple account manager service. * * Copyright (C) 2007-2009 Collabora Ltd. * Copyright (C) 2007-2008 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_TESTS_SIMPLE_ACCOUNT_MANAGER_H__ #define __TP_TESTS_SIMPLE_ACCOUNT_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _TpTestsSimpleAccountManager TpTestsSimpleAccountManager; typedef struct _TpTestsSimpleAccountManagerClass TpTestsSimpleAccountManagerClass; typedef struct _TpTestsSimpleAccountManagerPrivate TpTestsSimpleAccountManagerPrivate; struct _TpTestsSimpleAccountManagerClass { GObjectClass parent_class; TpDBusPropertiesMixinClass dbus_props_class; }; struct _TpTestsSimpleAccountManager { GObject parent; TpTestsSimpleAccountManagerPrivate *priv; }; GType tp_tests_simple_account_manager_get_type (void); /* TYPE MACROS */ #define TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER \ (tp_tests_simple_account_manager_get_type ()) #define SIMPLE_ACCOUNT_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, \ TpTestsSimpleAccountManager)) #define SIMPLE_ACCOUNT_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, \ TpTestsSimpleAccountManagerClass)) #define SIMPLE_IS_ACCOUNT_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER)) #define SIMPLE_IS_ACCOUNT_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER)) #define SIMPLE_ACCOUNT_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, \ TpTestsSimpleAccountManagerClass)) G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_ACCOUNT_MANAGER_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/stream-tube-chan.c0000644000175100017520000005265412530423576024066 0ustar00kaffeinekaffeine00000000000000/* * stream-tube-chan.c - Simple stream tube channel * * Copyright (C) 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "stream-tube-chan.h" #include #include #include #include #include #include #include enum { PROP_SERVICE = 1, PROP_SUPPORTED_SOCKET_TYPES, PROP_PARAMETERS, PROP_STATE, }; enum { SIG_INCOMING_CONNECTION, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = {0, }; struct _TpTestsStreamTubeChannelPrivate { TpTubeChannelState state; GHashTable *supported_socket_types; /* Accepting side */ GSocketService *service; GValue *access_control_param; /* Offering side */ TpSocketAddressType address_type; GValue *address; gchar *unix_address; guint connection_id; TpSocketAccessControl access_control; GHashTable *parameters; gboolean close_on_accept; }; static void destroy_socket_control_list (gpointer data) { GArray *tab = data; g_array_free (tab, TRUE); } static void create_supported_socket_types (TpTestsStreamTubeChannel *self) { TpSocketAccessControl access_control; GArray *unix_tab; g_assert (self->priv->supported_socket_types == NULL); self->priv->supported_socket_types = g_hash_table_new_full (NULL, NULL, NULL, destroy_socket_control_list); /* Socket_Address_Type_Unix */ unix_tab = g_array_sized_new (FALSE, FALSE, sizeof (TpSocketAccessControl), 1); access_control = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; g_array_append_val (unix_tab, access_control); g_hash_table_insert (self->priv->supported_socket_types, GUINT_TO_POINTER (TP_SOCKET_ADDRESS_TYPE_UNIX), unix_tab); } static void tp_tests_stream_tube_channel_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsStreamTubeChannel *self = (TpTestsStreamTubeChannel *) object; switch (property_id) { case PROP_SERVICE: g_value_set_string (value, "test-service"); break; case PROP_SUPPORTED_SOCKET_TYPES: g_value_set_boxed (value, self->priv->supported_socket_types); break; case PROP_PARAMETERS: g_value_set_boxed (value, self->priv->parameters); break; case PROP_STATE: g_value_set_uint (value, self->priv->state); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void tp_tests_stream_tube_channel_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsStreamTubeChannel *self = (TpTestsStreamTubeChannel *) object; switch (property_id) { case PROP_SUPPORTED_SOCKET_TYPES: self->priv->supported_socket_types = g_value_dup_boxed (value); break; case PROP_PARAMETERS: if (self->priv->parameters != NULL) g_hash_table_destroy (self->priv->parameters); self->priv->parameters = g_value_dup_boxed (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void stream_tube_iface_init (gpointer iface, gpointer data); G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpTestsStreamTubeChannel, tp_tests_stream_tube_channel, TP_TYPE_BASE_CHANNEL, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_STREAM_TUBE, stream_tube_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_TUBE, NULL); ) /* type definition stuff */ static const char * tp_tests_stream_tube_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_TUBE, NULL }; static void tp_tests_stream_tube_channel_init (TpTestsStreamTubeChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), TP_TESTS_TYPE_STREAM_TUBE_CHANNEL, TpTestsStreamTubeChannelPrivate); } static GObject * constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *object = G_OBJECT_CLASS (tp_tests_stream_tube_channel_parent_class)->constructor ( type, n_props, props); TpTestsStreamTubeChannel *self = TP_TESTS_STREAM_TUBE_CHANNEL (object); if (tp_base_channel_is_requested (TP_BASE_CHANNEL (self))) { self->priv->state = TP_TUBE_CHANNEL_STATE_NOT_OFFERED; self->priv->parameters = tp_asv_new (NULL, NULL); } else { self->priv->state = TP_TUBE_CHANNEL_STATE_LOCAL_PENDING; self->priv->parameters = tp_asv_new ("badger", G_TYPE_UINT, 42, NULL); } if (self->priv->supported_socket_types == NULL) create_supported_socket_types (self); tp_base_channel_register (TP_BASE_CHANNEL (self)); return object; } static void dispose (GObject *object) { TpTestsStreamTubeChannel *self = (TpTestsStreamTubeChannel *) object; if (self->priv->service != NULL) { g_socket_service_stop (self->priv->service); tp_clear_object (&self->priv->service); } tp_clear_pointer (&self->priv->address, tp_g_value_slice_free); tp_clear_pointer (&self->priv->supported_socket_types, g_hash_table_unref); tp_clear_pointer (&self->priv->access_control_param, tp_g_value_slice_free); if (self->priv->unix_address != NULL) g_unlink (self->priv->unix_address); tp_clear_pointer (&self->priv->unix_address, g_free); ((GObjectClass *) tp_tests_stream_tube_channel_parent_class)->dispose ( object); } static void channel_close (TpBaseChannel *channel) { tp_base_channel_destroyed (channel); } static void fill_immutable_properties (TpBaseChannel *chan, GHashTable *properties) { TpBaseChannelClass *klass = TP_BASE_CHANNEL_CLASS ( tp_tests_stream_tube_channel_parent_class); klass->fill_immutable_properties (chan, properties); tp_dbus_properties_mixin_fill_properties_hash ( G_OBJECT (chan), properties, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, "Service", TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, "SupportedSocketTypes", NULL); if (!tp_base_channel_is_requested (chan)) { /* Parameters is immutable only for incoming tubes */ tp_dbus_properties_mixin_fill_properties_hash ( G_OBJECT (chan), properties, TP_IFACE_CHANNEL_INTERFACE_TUBE, "Parameters", NULL); } } static void tp_tests_stream_tube_channel_class_init (TpTestsStreamTubeChannelClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); GParamSpec *param_spec; static TpDBusPropertiesMixinPropImpl stream_tube_props[] = { { "Service", "service", NULL, }, { "SupportedSocketTypes", "supported-socket-types", NULL }, { NULL } }; static TpDBusPropertiesMixinPropImpl tube_props[] = { { "Parameters", "parameters", NULL, }, { "State", "state", NULL, }, { NULL } }; object_class->constructor = constructor; object_class->get_property = tp_tests_stream_tube_channel_get_property; object_class->set_property = tp_tests_stream_tube_channel_set_property; object_class->dispose = dispose; base_class->channel_type = TP_IFACE_CHANNEL_TYPE_STREAM_TUBE; base_class->interfaces = tp_tests_stream_tube_channel_interfaces; base_class->close = channel_close; base_class->fill_immutable_properties = fill_immutable_properties; /* base_class->target_handle_type is defined in subclasses */ param_spec = g_param_spec_string ("service", "service name", "the service associated with this tube object.", "", G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SERVICE, param_spec); param_spec = g_param_spec_boxed ( "supported-socket-types", "Supported socket types", "GHashTable containing supported socket types.", TP_HASH_TYPE_SUPPORTED_SOCKET_MAP, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SUPPORTED_SOCKET_TYPES, param_spec); param_spec = g_param_spec_boxed ( "parameters", "Parameters", "parameters of the tube", TP_HASH_TYPE_STRING_VARIANT_MAP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PARAMETERS, param_spec); param_spec = g_param_spec_uint ( "state", "TpTubeState", "state of the tube", 0, NUM_TP_TUBE_CHANNEL_STATES - 1, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STATE, param_spec); signals[SIG_INCOMING_CONNECTION] = g_signal_new ("incoming-connection", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_IO_STREAM); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_TYPE_STREAM_TUBE, tp_dbus_properties_mixin_getter_gobject_properties, NULL, stream_tube_props); tp_dbus_properties_mixin_implement_interface (object_class, TP_IFACE_QUARK_CHANNEL_INTERFACE_TUBE, tp_dbus_properties_mixin_getter_gobject_properties, NULL, tube_props); g_type_class_add_private (object_class, sizeof (TpTestsStreamTubeChannelPrivate)); } static void change_state (TpTestsStreamTubeChannel *self, TpTubeChannelState state) { self->priv->state = state; tp_svc_channel_interface_tube_emit_tube_channel_state_changed (self, state); } /* Return the address of the socket which has been shared over the tube */ GSocketAddress * tp_tests_stream_tube_channel_get_server_address (TpTestsStreamTubeChannel *self) { return tp_g_socket_address_from_variant (self->priv->address_type, self->priv->address, NULL); } static gboolean check_address_type (TpTestsStreamTubeChannel *self, TpSocketAddressType address_type, TpSocketAccessControl access_control) { GArray *arr; guint i; arr = g_hash_table_lookup (self->priv->supported_socket_types, GUINT_TO_POINTER (address_type)); if (arr == NULL) return FALSE; for (i = 0; i < arr->len; i++) { if (g_array_index (arr, TpSocketAccessControl, i) == access_control) return TRUE; } return FALSE; } static void stream_tube_offer (TpSvcChannelTypeStreamTube *iface, guint address_type, const GValue *address, guint access_control, GHashTable *parameters, DBusGMethodInvocation *context) { TpTestsStreamTubeChannel *self = (TpTestsStreamTubeChannel *) iface; GError *error = NULL; if (self->priv->state != TP_TUBE_CHANNEL_STATE_NOT_OFFERED) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Tube is not in the not offered state"); goto fail; } if (!check_address_type (self, address_type, access_control)) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Address type not supported with this access control"); goto fail; } self->priv->address_type = address_type; self->priv->address = tp_g_value_slice_dup (address); self->priv->access_control = access_control; g_object_set (self, "parameters", parameters, NULL); change_state (self, TP_TUBE_CHANNEL_STATE_REMOTE_PENDING); tp_svc_channel_type_stream_tube_return_from_offer (context); return; fail: dbus_g_method_return_error (context, error); g_error_free (error); } static void service_incoming_cb (GSocketService *service, GSocketConnection *connection, GObject *source_object, gpointer user_data) { TpTestsStreamTubeChannel *self = user_data; GError *error = NULL; if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) { GCredentials *creds; guchar byte; /* FIXME: we should an async version of this API (bgo #629503) */ creds = tp_unix_connection_receive_credentials_with_byte ( connection, &byte, NULL, &error); g_assert_no_error (error); g_assert_cmpuint (byte, ==, g_value_get_uchar (self->priv->access_control_param)); g_object_unref (creds); } else if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_PORT) { GSocketAddress *remote_addr; gchar *host, *remote_host; guint port, remote_port; dbus_g_type_struct_get (self->priv->access_control_param, 0, &host, 1, &port, G_MAXUINT); remote_addr = g_socket_connection_get_remote_address (connection, &error); g_assert_no_error (error); remote_host = g_inet_address_to_string ( g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (remote_addr))); remote_port = g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (remote_addr)); g_assert_cmpuint (remote_port, ==, port); g_assert_cmpstr (remote_host, ==, host); g_free (host); g_free (remote_host); g_object_unref (remote_addr); } tp_svc_channel_type_stream_tube_emit_new_local_connection (self, self->priv->connection_id); self->priv->connection_id++; g_signal_emit (self, signals[SIG_INCOMING_CONNECTION], 0, connection); } static GValue * create_local_socket (TpTestsStreamTubeChannel *self, TpSocketAddressType address_type, TpSocketAccessControl access_control, GError **error) { gboolean success; GSocketAddress *address, *effective_address; GValue *address_gvalue; switch (access_control) { case TP_SOCKET_ACCESS_CONTROL_LOCALHOST: case TP_SOCKET_ACCESS_CONTROL_CREDENTIALS: case TP_SOCKET_ACCESS_CONTROL_PORT: break; default: g_assert_not_reached (); } switch (address_type) { case TP_SOCKET_ADDRESS_TYPE_UNIX: { address = g_unix_socket_address_new (tmpnam (NULL)); break; } case TP_SOCKET_ADDRESS_TYPE_IPV4: case TP_SOCKET_ADDRESS_TYPE_IPV6: { GInetAddress *localhost; localhost = g_inet_address_new_loopback ( address_type == TP_SOCKET_ADDRESS_TYPE_IPV4 ? G_SOCKET_FAMILY_IPV4 : G_SOCKET_FAMILY_IPV6); address = g_inet_socket_address_new (localhost, 0); g_object_unref (localhost); break; } default: g_assert_not_reached (); } self->priv->service = g_socket_service_new (); success = g_socket_listener_add_address ( G_SOCKET_LISTENER (self->priv->service), address, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, NULL, &effective_address, NULL); g_assert (success); tp_g_signal_connect_object (self->priv->service, "incoming", G_CALLBACK (service_incoming_cb), self, 0); switch (address_type) { case TP_SOCKET_ADDRESS_TYPE_UNIX: self->priv->unix_address = g_strdup (g_unix_socket_address_get_path ( G_UNIX_SOCKET_ADDRESS (effective_address))); address_gvalue = tp_g_value_slice_new_bytes ( g_unix_socket_address_get_path_len ( G_UNIX_SOCKET_ADDRESS (effective_address)), g_unix_socket_address_get_path ( G_UNIX_SOCKET_ADDRESS (effective_address))); break; case TP_SOCKET_ADDRESS_TYPE_IPV4: case TP_SOCKET_ADDRESS_TYPE_IPV6: address_gvalue = tp_g_value_slice_new_take_boxed ( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4, dbus_g_type_specialized_construct ( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)); dbus_g_type_struct_set (address_gvalue, 0, address_type == TP_SOCKET_ADDRESS_TYPE_IPV4 ? "127.0.0.1" : "::1", 1, g_inet_socket_address_get_port ( G_INET_SOCKET_ADDRESS (effective_address)), G_MAXUINT); break; default: g_assert_not_reached (); } g_object_unref (address); g_object_unref (effective_address); return address_gvalue; } static void stream_tube_accept (TpSvcChannelTypeStreamTube *iface, TpSocketAddressType address_type, TpSocketAccessControl access_control, const GValue *access_control_param, DBusGMethodInvocation *context) { TpTestsStreamTubeChannel *self = (TpTestsStreamTubeChannel *) iface; GError *error = NULL; GValue *address; if (self->priv->state != TP_TUBE_CHANNEL_STATE_LOCAL_PENDING) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Tube is not in the local pending state"); goto fail; } if (!check_address_type (self, address_type, access_control)) { g_set_error (&error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Address type not supported with this access control"); goto fail; } if (self->priv->close_on_accept) { tp_base_channel_close (TP_BASE_CHANNEL (self)); return; } address = create_local_socket (self, address_type, access_control, &error); self->priv->access_control = access_control; self->priv->access_control_param = tp_g_value_slice_dup ( access_control_param); change_state (self, TP_TUBE_CHANNEL_STATE_OPEN); tp_svc_channel_type_stream_tube_return_from_accept (context, address); tp_g_value_slice_free (address); return; fail: dbus_g_method_return_error (context, error); g_error_free (error); } static void stream_tube_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeStreamTubeClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_type_stream_tube_implement_##x (klass, stream_tube_##x) IMPLEMENT(offer); IMPLEMENT(accept); #undef IMPLEMENT } /* Called to emulate a peer connecting to an offered tube */ void tp_tests_stream_tube_channel_peer_connected (TpTestsStreamTubeChannel *self, GIOStream *stream, TpHandle handle) { GValue *connection_param; if (self->priv->state == TP_TUBE_CHANNEL_STATE_REMOTE_PENDING) change_state (self, TP_TUBE_CHANNEL_STATE_OPEN); g_assert (self->priv->state == TP_TUBE_CHANNEL_STATE_OPEN); switch (self->priv->access_control) { case TP_SOCKET_ACCESS_CONTROL_LOCALHOST: connection_param = tp_g_value_slice_new_static_string ("dummy"); break; case TP_SOCKET_ACCESS_CONTROL_CREDENTIALS: { GError *error = NULL; guchar byte = g_random_int_range (0, G_MAXUINT8); /* FIXME: we should an async version of this API (bgo #629503) */ tp_unix_connection_send_credentials_with_byte ( G_SOCKET_CONNECTION (stream), byte, NULL, &error); g_assert_no_error (error); connection_param = tp_g_value_slice_new_byte (byte); } break; case TP_SOCKET_ACCESS_CONTROL_PORT: { GSocketAddress *addr; GError *error = NULL; addr = g_socket_connection_get_local_address ( G_SOCKET_CONNECTION (stream), &error); g_assert_no_error (error); connection_param = tp_g_value_slice_new_take_boxed ( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4, dbus_g_type_specialized_construct ( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)); dbus_g_type_struct_set (connection_param, 0, "badger", 1, g_inet_socket_address_get_port ( G_INET_SOCKET_ADDRESS (addr)), G_MAXUINT); g_object_unref (addr); } break; default: g_assert_not_reached (); } tp_svc_channel_type_stream_tube_emit_new_remote_connection (self, handle, connection_param, self->priv->connection_id); self->priv->connection_id++; tp_g_value_slice_free (connection_param); } /* Called to emulate a peer connecting to an offered tube */ void tp_tests_stream_tube_channel_peer_connected_no_stream (TpTestsStreamTubeChannel *self, const GValue *connection_param, TpHandle handle) { if (self->priv->state == TP_TUBE_CHANNEL_STATE_REMOTE_PENDING) change_state (self, TP_TUBE_CHANNEL_STATE_OPEN); g_assert (self->priv->state == TP_TUBE_CHANNEL_STATE_OPEN); tp_svc_channel_type_stream_tube_emit_new_remote_connection (self, handle, connection_param, self->priv->connection_id); self->priv->connection_id++; } void tp_tests_stream_tube_channel_last_connection_disconnected ( TpTestsStreamTubeChannel *self, const gchar *error) { tp_svc_channel_type_stream_tube_emit_connection_closed (self, self->priv->connection_id - 1, error, "kaboum"); } void tp_tests_stream_tube_channel_set_close_on_accept ( TpTestsStreamTubeChannel *self, gboolean close_on_accept) { self->priv->close_on_accept = close_on_accept; } /* Contact Stream Tube */ G_DEFINE_TYPE (TpTestsContactStreamTubeChannel, tp_tests_contact_stream_tube_channel, TP_TESTS_TYPE_STREAM_TUBE_CHANNEL) static void tp_tests_contact_stream_tube_channel_init ( TpTestsContactStreamTubeChannel *self) { } static void tp_tests_contact_stream_tube_channel_class_init ( TpTestsContactStreamTubeChannelClass *klass) { TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); base_class->target_handle_type = TP_HANDLE_TYPE_CONTACT; } /* Room Stream Tube */ G_DEFINE_TYPE (TpTestsRoomStreamTubeChannel, tp_tests_room_stream_tube_channel, TP_TESTS_TYPE_STREAM_TUBE_CHANNEL) static void tp_tests_room_stream_tube_channel_init ( TpTestsRoomStreamTubeChannel *self) { } static void tp_tests_room_stream_tube_channel_class_init ( TpTestsRoomStreamTubeChannelClass *klass) { TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); base_class->target_handle_type = TP_HANDLE_TYPE_ROOM; } telepathy-qt-0.9.6.1/tests/lib/glib/stream-tube-chan.h0000644000175100017520000001254512530423576024066 0ustar00kaffeinekaffeine00000000000000/* * stream-tube-chan.h - Simple stream tube channel * * Copyright (C) 2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __TP_STREAM_TUBE_CHAN_H__ #define __TP_STREAM_TUBE_CHAN_H__ #include #include #include G_BEGIN_DECLS /* Base Class */ typedef struct _TpTestsStreamTubeChannel TpTestsStreamTubeChannel; typedef struct _TpTestsStreamTubeChannelClass TpTestsStreamTubeChannelClass; typedef struct _TpTestsStreamTubeChannelPrivate TpTestsStreamTubeChannelPrivate; GType tp_tests_stream_tube_channel_get_type (void); #define TP_TESTS_TYPE_STREAM_TUBE_CHANNEL \ (tp_tests_stream_tube_channel_get_type ()) #define TP_TESTS_STREAM_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_STREAM_TUBE_CHANNEL, \ TpTestsStreamTubeChannel)) #define TP_TESTS_STREAM_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_STREAM_TUBE_CHANNEL, \ TpTestsStreamTubeChannelClass)) #define TP_TESTS_IS_STREAM_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_STREAM_TUBE_CHANNEL)) #define TP_TESTS_IS_STREAM_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_STREAM_TUBE_CHANNEL)) #define TP_TESTS_STREAM_TUBE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_STREAM_TUBE_CHANNEL, \ TpTestsStreamTubeChannelClass)) struct _TpTestsStreamTubeChannelClass { TpBaseChannelClass parent_class; TpDBusPropertiesMixinClass dbus_properties_class; }; struct _TpTestsStreamTubeChannel { TpBaseChannel parent; TpTestsStreamTubeChannelPrivate *priv; }; GSocketAddress * tp_tests_stream_tube_channel_get_server_address ( TpTestsStreamTubeChannel *self); void tp_tests_stream_tube_channel_peer_connected ( TpTestsStreamTubeChannel *self, GIOStream *stream, TpHandle handle); void tp_tests_stream_tube_channel_peer_connected_no_stream (TpTestsStreamTubeChannel *self, const GValue *connection_param, TpHandle handle); void tp_tests_stream_tube_channel_last_connection_disconnected ( TpTestsStreamTubeChannel *self, const gchar *error); void tp_tests_stream_tube_channel_set_close_on_accept ( TpTestsStreamTubeChannel *self, gboolean close_on_accept); /* Contact Stream Tube */ typedef struct _TpTestsContactStreamTubeChannel TpTestsContactStreamTubeChannel; typedef struct _TpTestsContactStreamTubeChannelClass TpTestsContactStreamTubeChannelClass; GType tp_tests_contact_stream_tube_channel_get_type (void); #define TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL \ (tp_tests_contact_stream_tube_channel_get_type ()) #define TP_TESTS_CONTACT_STREAM_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL, \ TpTestsContactStreamTubeChannel)) #define TP_TESTS_CONTACT_STREAM_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL, \ TpTestsContactStreamTubeChannelClass)) #define TP_TESTS_IS_CONTACT_STREAM_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL)) #define TP_TESTS_IS_CONTACT_STREAM_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL)) #define TP_TESTS_CONTACT_STREAM_TUBE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL, \ TpTestsContactStreamTubeChannelClass)) struct _TpTestsContactStreamTubeChannelClass { TpTestsStreamTubeChannelClass parent_class; }; struct _TpTestsContactStreamTubeChannel { TpTestsStreamTubeChannel parent; }; /* Room Stream Tube */ typedef struct _TpTestsRoomStreamTubeChannel TpTestsRoomStreamTubeChannel; typedef struct _TpTestsRoomStreamTubeChannelClass TpTestsRoomStreamTubeChannelClass; GType tp_tests_room_stream_tube_channel_get_type (void); #define TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL \ (tp_tests_room_stream_tube_channel_get_type ()) #define TP_TESTS_ROOM_STREAM_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL, \ TpTestsRoomStreamTubeChannel)) #define TP_TESTS_ROOM_STREAM_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL, \ TpTestsRoomStreamTubeChannelClass)) #define TP_TESTS_IS_ROOM_STREAM_TUBE_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL)) #define TP_TESTS_IS_ROOM_STREAM_TUBE_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL)) #define TP_TESTS_ROOM_STREAM_TUBE_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL, \ TpTestsRoomStreamTubeChannelClass)) struct _TpTestsRoomStreamTubeChannelClass { TpTestsStreamTubeChannelClass parent_class; }; struct _TpTestsRoomStreamTubeChannel { TpTestsStreamTubeChannel parent; }; G_END_DECLS #endif /* #ifndef __TP_STREAM_TUBE_CHAN_H__ */ telepathy-qt-0.9.6.1/tests/lib/glib/contact-search-chan.c0000644000175100017520000005331312530423576024525 0ustar00kaffeinekaffeine00000000000000/* * contact-search-channel.c - an tp_tests contact search channel * * Copyright © 2010 Collabora Ltd. * Copyright © 2010 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "contact-search-chan.h" #include #include #include #include #include #include #include #include static void contact_search_iface_init (gpointer iface, gpointer data); static void channel_iface_init (gpointer iface, gpointer data); G_DEFINE_TYPE_WITH_CODE (TpTestsContactSearchChannel, tp_tests_contact_search_channel, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, tp_dbus_properties_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_CONTACT_SEARCH, contact_search_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, tp_group_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL)) enum { PROP_OBJECT_PATH = 1, PROP_CHANNEL_TYPE, PROP_HANDLE_TYPE, PROP_HANDLE, PROP_TARGET_ID, PROP_REQUESTED, PROP_INITIATOR_HANDLE, PROP_INITIATOR_ID, PROP_CONNECTION, PROP_INTERFACES, PROP_CHANNEL_DESTROYED, PROP_CHANNEL_PROPERTIES, PROP_CONTACT_SEARCH_STATE, PROP_CONTACT_SEARCH_LIMIT, PROP_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS, PROP_CONTACT_SEARCH_SERVER, N_PROPS }; typedef struct { gchar *id; gchar *employer; GPtrArray *contact_info; } TpTestsContactSearchContact; struct _TpTestsContactSearchChannelPrivate { TpBaseConnection *conn; gchar *object_path; guint contact_search_state; guint contact_search_limit; gchar **contact_search_available_search_keys; gchar *contact_search_server; GSList *contact_search_contacts; gboolean disposed; gboolean closed; }; static const gchar * tp_tests_contact_search_channel_interfaces[] = { TP_IFACE_CHANNEL_INTERFACE_GROUP, NULL }; static void tp_tests_contact_search_channel_init (TpTestsContactSearchChannel *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL, TpTestsContactSearchChannelPrivate); } static TpTestsContactSearchContact * new_contact (const gchar *id, const gchar *employer, const gchar *fn) { TpTestsContactSearchContact *contact = g_new (TpTestsContactSearchContact, 1); GPtrArray *contact_info = dbus_g_type_specialized_construct ( TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST); const gchar * const field_values[2] = { fn, NULL }; contact->id = g_strdup (id); contact->employer = g_strdup (employer); g_ptr_array_add (contact_info, tp_value_array_build (3, G_TYPE_STRING, "fn", G_TYPE_STRV, NULL, G_TYPE_STRV, field_values, G_TYPE_INVALID)); contact->contact_info = contact_info; return contact; } static void free_contact (TpTestsContactSearchContact *contact) { g_free (contact->id); g_free (contact->employer); g_boxed_free (TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST, contact->contact_info); g_free (contact); } static void constructed (GObject *object) { void (*chain_up) (GObject *) = ((GObjectClass *) tp_tests_contact_search_channel_parent_class)->constructed; TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (object); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); TpDBusDaemon *bus; if (chain_up != NULL) { chain_up (object); } bus = tp_dbus_daemon_dup (NULL); tp_dbus_daemon_register_object (bus, self->priv->object_path, object); tp_group_mixin_init (object, G_STRUCT_OFFSET (TpTestsContactSearchChannel, group), contact_repo, self->priv->conn->self_handle); self->priv->contact_search_state = TP_CHANNEL_CONTACT_SEARCH_STATE_NOT_STARTED; self->priv->contact_search_limit = 0; self->priv->contact_search_available_search_keys = g_new0 (gchar *, 2); self->priv->contact_search_available_search_keys[0] = g_strdup ("employer"); self->priv->contact_search_server = g_strdup ("characters.shakespeare.lit"); self->priv->contact_search_contacts = g_slist_append (self->priv->contact_search_contacts, new_contact ("oggis", "Collabora", "Olli Salli")); self->priv->contact_search_contacts = g_slist_append (self->priv->contact_search_contacts, new_contact ("andrunko", "Collabora", "Andre Moreira Magalhaes")); self->priv->contact_search_contacts = g_slist_append (self->priv->contact_search_contacts, new_contact ("wjt", "Collabora", "Will Thompson")); self->priv->contact_search_contacts = g_slist_append (self->priv->contact_search_contacts, new_contact ("foo", "Other Employer", "Foo")); self->priv->contact_search_contacts = g_slist_append (self->priv->contact_search_contacts, new_contact ("bar", "Other Employer", "Bar")); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: g_value_set_string (value, self->priv->object_path); break; case PROP_CHANNEL_TYPE: g_value_set_static_string (value, TP_IFACE_CHANNEL); break; case PROP_HANDLE_TYPE: g_value_set_uint (value, TP_HANDLE_TYPE_NONE); break; case PROP_HANDLE: g_value_set_uint (value, 0); break; case PROP_TARGET_ID: g_value_set_string (value, ""); break; case PROP_REQUESTED: g_value_set_boolean (value, TRUE); break; case PROP_INITIATOR_HANDLE: g_value_set_uint (value, 0); break; case PROP_INITIATOR_ID: g_value_set_string (value, ""); break; case PROP_CONNECTION: g_value_set_object (value, self->priv->conn); break; case PROP_INTERFACES: g_value_set_boxed (value, tp_tests_contact_search_channel_interfaces); break; case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, self->priv->closed); break; case PROP_CHANNEL_PROPERTIES: g_value_take_boxed (value, tp_dbus_properties_mixin_make_properties_hash (object, TP_IFACE_CHANNEL, "ChannelType", TP_IFACE_CHANNEL, "TargetHandleType", TP_IFACE_CHANNEL, "TargetHandle", TP_IFACE_CHANNEL, "TargetID", TP_IFACE_CHANNEL, "InitiatorHandle", TP_IFACE_CHANNEL, "InitiatorID", TP_IFACE_CHANNEL, "Requested", TP_IFACE_CHANNEL, "Interfaces", TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "SearchState", TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "Limit", TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "AvailableSearchKeys", TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "Server", NULL)); break; case PROP_CONTACT_SEARCH_STATE: g_value_set_uint (value, self->priv->contact_search_state); g_assert (G_VALUE_HOLDS (value, G_TYPE_UINT)); break; case PROP_CONTACT_SEARCH_LIMIT: g_value_set_uint (value, self->priv->contact_search_limit); g_assert (G_VALUE_HOLDS (value, G_TYPE_UINT)); break; case PROP_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS: g_value_set_boxed (value, self->priv->contact_search_available_search_keys); g_assert (G_VALUE_HOLDS (value, G_TYPE_STRV)); break; case PROP_CONTACT_SEARCH_SERVER: g_value_set_string (value, self->priv->contact_search_server); g_assert (G_VALUE_HOLDS (value, G_TYPE_STRING)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (object); switch (property_id) { case PROP_OBJECT_PATH: self->priv->object_path = g_value_dup_string (value); break; case PROP_CONNECTION: self->priv->conn = g_value_get_object (value); break; case PROP_CHANNEL_TYPE: case PROP_HANDLE: case PROP_HANDLE_TYPE: case PROP_TARGET_ID: case PROP_REQUESTED: case PROP_INITIATOR_HANDLE: case PROP_INITIATOR_ID: /* these properties are not actually meaningfully changeable on this * channel, so we do nothing */ break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void dispose (GObject *object) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (object); GSList *l; if (self->priv->disposed) { return; } self->priv->disposed = TRUE; g_strfreev (self->priv->contact_search_available_search_keys); self->priv->contact_search_available_search_keys = NULL; g_free (self->priv->contact_search_server); self->priv->contact_search_server = NULL; for (l = self->priv->contact_search_contacts; l != NULL; l = g_slist_next (l)) { free_contact ((TpTestsContactSearchContact *) l->data); } g_slist_free (self->priv->contact_search_contacts); if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } ((GObjectClass *) tp_tests_contact_search_channel_parent_class)->dispose (object); } static void finalize (GObject *object) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (object); g_free (self->priv->object_path); tp_group_mixin_finalize (object); ((GObjectClass *) tp_tests_contact_search_channel_parent_class)->finalize (object); } static void tp_tests_contact_search_channel_class_init (TpTestsContactSearchChannelClass *klass) { static TpDBusPropertiesMixinPropImpl channel_props[] = { { "TargetHandleType", "handle-type", NULL }, { "TargetHandle", "handle", NULL }, { "ChannelType", "channel-type", NULL }, { "Interfaces", "interfaces", NULL }, { "TargetID", "target-id", NULL }, { "Requested", "requested", NULL }, { "InitiatorHandle", "initiator-handle", NULL }, { "InitiatorID", "initiator-id", NULL }, { NULL } }; static TpDBusPropertiesMixinPropImpl contact_search_props[] = { { "SearchState", "search-state", NULL }, { "Limit", "limit", NULL }, { "AvailableSearchKeys", "available-search-keys", NULL }, { "Server", "server", NULL }, { NULL } }; static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_CHANNEL, tp_dbus_properties_mixin_getter_gobject_properties, NULL, channel_props, }, { TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, tp_dbus_properties_mixin_getter_gobject_properties, NULL, contact_search_props, }, { NULL } }; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; g_type_class_add_private (klass, sizeof (TpTestsContactSearchChannelPrivate)); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; g_object_class_override_property (object_class, PROP_OBJECT_PATH, "object-path"); g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, "channel-type"); g_object_class_override_property (object_class, PROP_HANDLE_TYPE, "handle-type"); g_object_class_override_property (object_class, PROP_HANDLE, "handle"); g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, "channel-destroyed"); g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, "channel-properties"); param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "Additional Channel.Interface.* interfaces", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); param_spec = g_param_spec_string ("target-id", "Peer's ID", "The string obtained by inspecting the target handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", "The contact who initiated the channel", 0, G_MAXUINT32, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, param_spec); param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", "The string obtained by inspecting the initiator-handle", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INITIATOR_ID, param_spec); param_spec = g_param_spec_boolean ("requested", "Requested?", "True if this channel was requested by the local user", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); param_spec = g_param_spec_uint ("search-state", "Search state", "The search state", 0, NUM_TP_CHANNEL_CONTACT_SEARCH_STATES, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONTACT_SEARCH_STATE, param_spec); param_spec = g_param_spec_uint ("limit", "Search limit", "The search limit", 0, G_MAXUINT32, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONTACT_SEARCH_LIMIT, param_spec); param_spec = g_param_spec_boxed ("available-search-keys", "Available Search Keys", "The available search keys", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS, param_spec); param_spec = g_param_spec_string ("server", "Server", "The search server", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONTACT_SEARCH_SERVER, param_spec); klass->dbus_properties_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsContactSearchChannelClass, dbus_properties_class)); tp_group_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsContactSearchChannelClass, group_class), NULL, NULL); tp_group_mixin_init_dbus_properties (object_class); } static void channel_close (TpSvcChannel *iface, DBusGMethodInvocation *context) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (iface); if (!self->priv->closed) { self->priv->closed = TRUE; tp_svc_channel_emit_closed (self); } tp_svc_channel_return_from_close (context); } static void channel_get_channel_type (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_channel_type (context, TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); } static void channel_get_handle (TpSvcChannel *iface, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_NONE, 0); } static void channel_get_interfaces (TpSvcChannel *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_return_from_get_interfaces (context, tp_tests_contact_search_channel_interfaces); } static void channel_iface_init (gpointer iface, gpointer data) { TpSvcChannelClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); IMPLEMENT (get_channel_type); IMPLEMENT (get_handle); IMPLEMENT (get_interfaces); #undef IMPLEMENT } static void change_search_state (TpTestsContactSearchChannel *self, guint state, const gchar *debug_message) { GHashTable *details = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); g_hash_table_insert (details, "debug-message", tp_g_value_slice_new_string (debug_message)); self->priv->contact_search_state = state; tp_svc_channel_type_contact_search_emit_search_state_changed (self, self->priv->contact_search_state, "", details); g_hash_table_destroy (details); } static gboolean validate_terms (TpTestsContactSearchChannel *self, GHashTable *terms, GError **error) { const gchar * const *asks = (const gchar * const *) self->priv->contact_search_available_search_keys; GHashTableIter iter; gpointer key; g_hash_table_iter_init (&iter, terms); while (g_hash_table_iter_next (&iter, &key, NULL)) { gchar *field = key; if (!tp_strv_contains (asks, field)) { g_debug ("%s is not in AvailableSearchKeys", field); g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "%s is not in AvailableSearchKeys", field); return FALSE; } } return TRUE; } static gboolean do_search (TpTestsContactSearchChannel *self, GHashTable *terms, GError **error) { GHashTable *results = g_hash_table_new (g_str_hash, g_str_equal); GHashTableIter iter; gchar *key, *value; if (!validate_terms (self, terms, error)) { return FALSE; } g_debug ("Doing search"); change_search_state (self, TP_CHANNEL_CONTACT_SEARCH_STATE_IN_PROGRESS, "in progress"); g_hash_table_iter_init (&iter, terms); while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *) &value)) { GSList *l; for (l = self->priv->contact_search_contacts; l != NULL; l = g_slist_next (l)) { TpTestsContactSearchContact *contact = (TpTestsContactSearchContact *) l->data; if (strcmp (contact->employer, value) == 0) { g_hash_table_insert (results, contact->id, contact->contact_info); } } } tp_svc_channel_type_contact_search_emit_search_result_received (self, results); change_search_state (self, TP_CHANNEL_CONTACT_SEARCH_STATE_COMPLETED, "completed"); g_hash_table_destroy (results); return TRUE; } static void contact_search_search (TpSvcChannelTypeContactSearch *iface G_GNUC_UNUSED, GHashTable *terms, DBusGMethodInvocation *context) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (iface); TpTestsContactSearchChannelPrivate *priv = self->priv; GError *error = NULL; if (priv->contact_search_state != TP_CHANNEL_CONTACT_SEARCH_STATE_NOT_STARTED) { g_debug ("Search state is %d", priv->contact_search_state); error = g_error_new (TP_ERROR, TP_ERROR_NOT_AVAILABLE, "SearchState is %d", priv->contact_search_state); goto err; } if (do_search (self, terms, &error)) { tp_svc_channel_type_contact_search_return_from_search (context); return; } err: dbus_g_method_return_error (context, error); g_error_free (error); } static void contact_search_more (TpSvcChannelTypeContactSearch *iface G_GNUC_UNUSED, DBusGMethodInvocation *context) { tp_svc_channel_type_contact_search_return_from_more (context); } static void contact_search_stop (TpSvcChannelTypeContactSearch *iface, DBusGMethodInvocation *context) { TpTestsContactSearchChannel *self = TP_TESTS_CONTACT_SEARCH_CHANNEL (iface); TpTestsContactSearchChannelPrivate *priv = self->priv; switch (priv->contact_search_state) { case TP_CHANNEL_CONTACT_SEARCH_STATE_IN_PROGRESS: change_search_state (self, TP_CHANNEL_CONTACT_SEARCH_STATE_FAILED, "stopped while in progress"); case TP_CHANNEL_CONTACT_SEARCH_STATE_COMPLETED: tp_svc_channel_type_contact_search_return_from_stop (context); break; case TP_CHANNEL_CONTACT_SEARCH_STATE_NOT_STARTED: { GError e = { TP_ERROR, TP_ERROR_NOT_AVAILABLE, "Search() hasn't been called yet" }; g_debug ("%s", e.message); dbus_g_method_return_error (context, &e); break; } case TP_CHANNEL_CONTACT_SEARCH_STATE_FAILED: case TP_CHANNEL_CONTACT_SEARCH_STATE_MORE_AVAILABLE: g_assert_not_reached (); } } static void contact_search_iface_init (gpointer iface, gpointer data) { TpSvcChannelTypeContactSearchClass *klass = iface; #define IMPLEMENT(x) tp_svc_channel_type_contact_search_implement_##x (klass, contact_search_##x) IMPLEMENT (search); IMPLEMENT (more); IMPLEMENT (stop); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/contact-search-chan.h0000644000175100017520000000544312530423576024533 0ustar00kaffeinekaffeine00000000000000/* * contact-search-channel.h - header for an tp_tests contact search channel * * Copyright © 2010 Collabora Ltd. * Copyright © 2010 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef TP_TESTS_CONTACT_SEARCH_CHANNEL_H #define TP_TESTS_CONTACT_SEARCH_CHANNEL_H #include #include #include G_BEGIN_DECLS typedef struct _TpTestsContactSearchChannel TpTestsContactSearchChannel; typedef struct _TpTestsContactSearchChannelPrivate TpTestsContactSearchChannelPrivate; typedef struct _TpTestsContactSearchChannelClass TpTestsContactSearchChannelClass; typedef struct _TpTestsContactSearchChannelClassPrivate TpTestsContactSearchChannelClassPrivate; GType tp_tests_contact_search_channel_get_type (void); #define TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL \ (tp_tests_contact_search_channel_get_type ()) #define TP_TESTS_CONTACT_SEARCH_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL, \ TpTestsContactSearchChannel)) #define TP_TESTS_CONTACT_SEARCH_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL, \ TpTestsContactSearchChannelClass)) #define TP_TESTS_IS_CONTACT_SEARCH_CHANNEL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL)) #define TP_TESTS_IS_CONTACT_SEARCH_CHANNEL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL)) #define TP_TESTS_CONTACT_SEARCH_CHANNEL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL, \ TpTestsContactSearchChannelClass)) struct _TpTestsContactSearchChannelClass { GObjectClass parent_class; TpDBusPropertiesMixinClass dbus_properties_class; TpGroupMixinClass group_class; TpTestsContactSearchChannelClassPrivate *priv; }; struct _TpTestsContactSearchChannel { GObject parent; TpGroupMixin group; TpTestsContactSearchChannelPrivate *priv; }; G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/0000755000175100017520000000000012530423576023160 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/protocol.c0000644000175100017520000001152212530423576025166 0ustar00kaffeinekaffeine00000000000000/* * protocol.c - an example Protocol * * Copyright © 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "protocol.h" #include #include "conn.h" #include "contact-list.h" G_DEFINE_TYPE (ExampleContactListProtocol, example_contact_list_protocol, TP_TYPE_BASE_PROTOCOL) static void example_contact_list_protocol_init ( ExampleContactListProtocol *self) { } gboolean example_contact_list_protocol_check_contact_id (const gchar *id, gchar **normal, GError **error) { g_return_val_if_fail (id != NULL, FALSE); if (id[0] == '\0') { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_HANDLE, "ID must not be empty"); return FALSE; } if (normal != NULL) *normal = g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); return TRUE; } static gboolean account_param_filter (const TpCMParamSpec *paramspec, GValue *value, GError **error) { const gchar *id = g_value_get_string (value); return example_contact_list_protocol_check_contact_id (id, NULL, error); } static const TpCMParamSpec example_contact_list_example_params[] = { { "account", "s", G_TYPE_STRING, TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, NULL, /* no default */ 0, /* unused, formerly struct offset */ account_param_filter, NULL, /* filter data, unused here */ NULL }, /* setter data, now unused */ { "simulation-delay", "u", G_TYPE_UINT, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GUINT_TO_POINTER (1000), /* default */ 0, /* unused, formerly struct offset */ NULL, /* no filter */ NULL, /* filter data, unused here */ NULL }, /* setter data, now unused */ { NULL } }; static const TpCMParamSpec * get_parameters (TpBaseProtocol *self) { return example_contact_list_example_params; } static TpBaseConnection * new_connection (TpBaseProtocol *protocol, GHashTable *asv, GError **error) { ExampleContactListConnection *conn; const gchar *account; guint sim_delay; account = tp_asv_get_string (asv, "account"); /* telepathy-glib checked this for us */ g_assert (account != NULL); sim_delay = tp_asv_get_uint32 (asv, "simulation-delay", NULL); conn = EXAMPLE_CONTACT_LIST_CONNECTION ( g_object_new (EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", account, "protocol", tp_base_protocol_get_name (protocol), "simulation-delay", sim_delay, NULL)); return (TpBaseConnection *) conn; } static gchar * normalize_contact (TpBaseProtocol *self G_GNUC_UNUSED, const gchar *contact, GError **error) { gchar *normal; if (example_contact_list_protocol_check_contact_id (contact, &normal, error)) return normal; else return NULL; } static gchar * identify_account (TpBaseProtocol *self G_GNUC_UNUSED, GHashTable *asv, GError **error) { const gchar *account = tp_asv_get_string (asv, "account"); if (account != NULL) return normalize_contact (self, account, error); g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "'account' parameter not given"); return NULL; } static GStrv get_interfaces (TpBaseProtocol *self) { return NULL; } static void get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED, GStrv *connection_interfaces, GType **channel_managers, gchar **icon_name, gchar **english_name, gchar **vcard_field) { if (connection_interfaces != NULL) { *connection_interfaces = g_strdupv ( (GStrv) example_contact_list_connection_get_possible_interfaces ()); } if (channel_managers != NULL) { GType types[] = { EXAMPLE_TYPE_CONTACT_LIST, G_TYPE_INVALID }; *channel_managers = g_memdup (types, sizeof (types)); } if (icon_name != NULL) *icon_name = g_strdup ("face-smile"); if (english_name != NULL) *english_name = g_strdup ("Example with a contact list"); if (vcard_field != NULL) *vcard_field = g_strdup ("x-telepathy-example"); } static void example_contact_list_protocol_class_init ( ExampleContactListProtocolClass *klass) { TpBaseProtocolClass *base_class = (TpBaseProtocolClass *) klass; base_class->get_parameters = get_parameters; base_class->new_connection = new_connection; base_class->normalize_contact = normalize_contact; base_class->identify_account = identify_account; base_class->get_interfaces = get_interfaces; base_class->get_connection_details = get_connection_details; } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/protocol.h0000644000175100017520000000413512530423576025175 0ustar00kaffeinekaffeine00000000000000/* * protocol.h - header for an example Protocol * Copyright © 2007-2010 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef EXAMPLE_CONTACT_LIST_PROTOCOL_H #define EXAMPLE_CONTACT_LIST_PROTOCOL_H #include #include G_BEGIN_DECLS typedef struct _ExampleContactListProtocol ExampleContactListProtocol; typedef struct _ExampleContactListProtocolPrivate ExampleContactListProtocolPrivate; typedef struct _ExampleContactListProtocolClass ExampleContactListProtocolClass; typedef struct _ExampleContactListProtocolClassPrivate ExampleContactListProtocolClassPrivate; struct _ExampleContactListProtocolClass { TpBaseProtocolClass parent_class; ExampleContactListProtocolClassPrivate *priv; }; struct _ExampleContactListProtocol { TpBaseProtocol parent; ExampleContactListProtocolPrivate *priv; }; GType example_contact_list_protocol_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL \ (example_contact_list_protocol_get_type ()) #define EXAMPLE_CONTACT_LIST_PROTOCOL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL, \ ExampleContactListProtocol)) #define EXAMPLE_CONTACT_LIST_PROTOCOL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL, \ ExampleContactListProtocolClass)) #define EXAMPLE_IS_CONTACT_LIST_PROTOCOL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL)) #define EXAMPLE_IS_CONTACT_LIST_PROTOCOL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), \ EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL)) #define EXAMPLE_CONTACT_LIST_PROTOCOL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL, \ ExampleContactListProtocolClass)) gboolean example_contact_list_protocol_check_contact_id (const gchar *id, gchar **normal, GError **error); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/connection-manager.c0000644000175100017520000000416012530423576027074 0ustar00kaffeinekaffeine00000000000000/* * manager.c - an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "connection-manager.h" #include #include #include #include "conn.h" #include "protocol.h" G_DEFINE_TYPE (ExampleContactListConnectionManager, example_contact_list_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER) struct _ExampleContactListConnectionManagerPrivate { int dummy; }; static void example_contact_list_connection_manager_init ( ExampleContactListConnectionManager *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, ExampleContactListConnectionManagerPrivate); } static void example_contact_list_connection_manager_constructed (GObject *object) { ExampleContactListConnectionManager *self = EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER (object); TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; void (*constructed) (GObject *) = ((GObjectClass *) example_contact_list_connection_manager_parent_class)->constructed; TpBaseProtocol *protocol; if (constructed != NULL) constructed (object); protocol = g_object_new (EXAMPLE_TYPE_CONTACT_LIST_PROTOCOL, "name", "example", NULL); tp_base_connection_manager_add_protocol (base, protocol); g_object_unref (protocol); } static void example_contact_list_connection_manager_class_init ( ExampleContactListConnectionManagerClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; TpBaseConnectionManagerClass *base_class = (TpBaseConnectionManagerClass *) klass; g_type_class_add_private (klass, sizeof (ExampleContactListConnectionManagerPrivate)); object_class->constructed = example_contact_list_connection_manager_constructed; base_class->cm_dbus_name = "example_contact_list"; } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/connection-manager.h0000644000175100017520000000454612530423576027111 0ustar00kaffeinekaffeine00000000000000/* * manager.h - header for an example connection manager * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_H__ #define __EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_H__ #include #include G_BEGIN_DECLS typedef struct _ExampleContactListConnectionManager ExampleContactListConnectionManager; typedef struct _ExampleContactListConnectionManagerClass ExampleContactListConnectionManagerClass; typedef struct _ExampleContactListConnectionManagerPrivate ExampleContactListConnectionManagerPrivate; struct _ExampleContactListConnectionManagerClass { TpBaseConnectionManagerClass parent_class; }; struct _ExampleContactListConnectionManager { TpBaseConnectionManager parent; ExampleContactListConnectionManagerPrivate *priv; }; GType example_contact_list_connection_manager_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER \ (example_contact_list_connection_manager_get_type ()) #define EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, \ ExampleContactListConnectionManager)) #define EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, \ ExampleContactListConnectionManagerClass)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION_MANAGER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER)) #define EXAMPLE_CONTACT_LIST_CONNECTION_MANAGER_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, \ ExampleContactListConnectionManagerClass)) G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/CMakeLists.txt0000644000175100017520000000063712530423576025726 0ustar00kaffeinekaffeine00000000000000if(ENABLE_TP_GLIB_TESTS) set(example_cm_contactlist2_SRCS conn.c conn.h connection-manager.c connection-manager.h contact-list.c contact-list.h protocol.c protocol.h) add_library(example-cm-contactlist2 STATIC ${example_cm_contactlist2_SRCS}) target_link_libraries(example-cm-contactlist2 ${TPGLIB_LIBRARIES}) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/conn.c0000644000175100017520000004367312530423576024276 0ustar00kaffeinekaffeine00000000000000/* * conn.c - an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "conn.h" #include #include #include #include #include "contact-list.h" #include "protocol.h" static void init_aliasing (gpointer, gpointer); G_DEFINE_TYPE_WITH_CODE (ExampleContactListConnection, example_contact_list_connection, TP_TYPE_BASE_CONNECTION, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_ALIASING, init_aliasing); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, tp_contacts_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_LIST, tp_base_contact_list_mixin_list_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_GROUPS, tp_base_contact_list_mixin_groups_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_BLOCKING, tp_base_contact_list_mixin_blocking_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, tp_presence_mixin_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, tp_presence_mixin_simple_presence_iface_init)) enum { PROP_ACCOUNT = 1, PROP_SIMULATION_DELAY, N_PROPS }; struct _ExampleContactListConnectionPrivate { gchar *account; guint simulation_delay; ExampleContactList *contact_list; gboolean away; }; static void example_contact_list_connection_init (ExampleContactListConnection *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, ExampleContactListConnectionPrivate); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *spec) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_value_set_string (value, self->priv->account); break; case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *spec) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); switch (property_id) { case PROP_ACCOUNT: g_free (self->priv->account); self->priv->account = g_value_dup_string (value); break; case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); } } static void finalize (GObject *object) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); tp_contacts_mixin_finalize (object); g_free (self->priv->account); G_OBJECT_CLASS (example_contact_list_connection_parent_class)->finalize ( object); } static gchar * get_unique_connection_name (TpBaseConnection *conn) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (conn); return g_strdup_printf ("%s@%p", self->priv->account, self); } gchar * example_contact_list_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error) { gchar *normal = NULL; if (example_contact_list_protocol_check_contact_id (id, &normal, error)) return normal; else return NULL; } static void create_handle_repos (TpBaseConnection *conn, TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) { repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new (TP_HANDLE_TYPE_CONTACT, example_contact_list_normalize_contact, NULL); } static void alias_updated_cb (ExampleContactList *contact_list, TpHandle contact, ExampleContactListConnection *self) { GPtrArray *aliases; GValueArray *pair; pair = g_value_array_new (2); g_value_array_append (pair, NULL); g_value_array_append (pair, NULL); g_value_init (pair->values + 0, G_TYPE_UINT); g_value_init (pair->values + 1, G_TYPE_STRING); g_value_set_uint (pair->values + 0, contact); g_value_set_string (pair->values + 1, example_contact_list_get_alias (contact_list, contact)); aliases = g_ptr_array_sized_new (1); g_ptr_array_add (aliases, pair); tp_svc_connection_interface_aliasing_emit_aliases_changed (self, aliases); g_ptr_array_free (aliases, TRUE); g_value_array_free (pair); } static void presence_updated_cb (ExampleContactList *contact_list, TpHandle contact, ExampleContactListConnection *self) { TpBaseConnection *base = (TpBaseConnection *) self; TpPresenceStatus *status; /* we ignore the presence indicated by the contact list for our own handle */ if (contact == base->self_handle) return; status = tp_presence_status_new ( example_contact_list_get_presence (contact_list, contact), NULL); tp_presence_mixin_emit_one_presence_update ((GObject *) self, contact, status); tp_presence_status_free (status); } static GPtrArray * create_channel_managers (TpBaseConnection *conn) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (conn); GPtrArray *ret = g_ptr_array_sized_new (1); self->priv->contact_list = EXAMPLE_CONTACT_LIST (g_object_new ( EXAMPLE_TYPE_CONTACT_LIST, "connection", conn, "simulation-delay", self->priv->simulation_delay, NULL)); g_signal_connect (self->priv->contact_list, "alias-updated", G_CALLBACK (alias_updated_cb), self); g_signal_connect (self->priv->contact_list, "presence-updated", G_CALLBACK (presence_updated_cb), self); g_ptr_array_add (ret, self->priv->contact_list); return ret; } static gboolean start_connecting (TpBaseConnection *conn, GError **error) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (conn); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); /* In a real connection manager we'd ask the underlying implementation to * start connecting, then go to state CONNECTED when finished, but here * we can do it immediately. */ conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, NULL, error); if (conn->self_handle == 0) return FALSE; tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return TRUE; } static void shut_down (TpBaseConnection *conn) { /* In a real connection manager we'd ask the underlying implementation to * start shutting down, then call this function when finished, but here * we can do it immediately. */ tp_base_connection_finish_shutdown (conn); } static void aliasing_fill_contact_attributes (GObject *object, const GArray *contacts, GHashTable *attributes) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); guint i; for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, guint, i); tp_contacts_mixin_set_contact_attribute (attributes, contact, TP_TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS, tp_g_value_slice_new_string ( example_contact_list_get_alias (self->priv->contact_list, contact))); } } static void constructed (GObject *object) { TpBaseConnection *base = TP_BASE_CONNECTION (object); void (*chain_up) (GObject *) = G_OBJECT_CLASS (example_contact_list_connection_parent_class)->constructed; if (chain_up != NULL) chain_up (object); tp_contacts_mixin_init (object, G_STRUCT_OFFSET (ExampleContactListConnection, contacts_mixin)); tp_base_connection_register_with_contacts_mixin (base); tp_base_contact_list_mixin_register_with_contacts_mixin (base); tp_contacts_mixin_add_contact_attributes_iface (object, TP_IFACE_CONNECTION_INTERFACE_ALIASING, aliasing_fill_contact_attributes); tp_presence_mixin_init (object, G_STRUCT_OFFSET (ExampleContactListConnection, presence_mixin)); tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); } static gboolean status_available (GObject *object, guint index_) { TpBaseConnection *base = TP_BASE_CONNECTION (object); if (base->status != TP_CONNECTION_STATUS_CONNECTED) return FALSE; return TRUE; } static GHashTable * get_contact_statuses (GObject *object, const GArray *contacts, GError **error) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); guint i; GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) tp_presence_status_free); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, guint, i); ExampleContactListPresence presence; GHashTable *parameters; /* we get our own status from the connection, and everyone else's status * from the contact lists */ if (contact == base->self_handle) { presence = (self->priv->away ? EXAMPLE_CONTACT_LIST_PRESENCE_AWAY : EXAMPLE_CONTACT_LIST_PRESENCE_AVAILABLE); } else { presence = example_contact_list_get_presence ( self->priv->contact_list, contact); } parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); g_hash_table_insert (result, GUINT_TO_POINTER (contact), tp_presence_status_new (presence, parameters)); g_hash_table_destroy (parameters); } return result; } static gboolean set_own_status (GObject *object, const TpPresenceStatus *status, GError **error) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (object); TpBaseConnection *base = TP_BASE_CONNECTION (object); GHashTable *presences; if (status->index == EXAMPLE_CONTACT_LIST_PRESENCE_AWAY) { if (self->priv->away) return TRUE; self->priv->away = TRUE; } else { if (!self->priv->away) return TRUE; self->priv->away = FALSE; } presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), (gpointer) status); tp_presence_mixin_emit_presence_update (object, presences); g_hash_table_destroy (presences); return TRUE; } static const gchar *interfaces_always_present[] = { TP_IFACE_CONNECTION_INTERFACE_ALIASING, TP_IFACE_CONNECTION_INTERFACE_CONTACTS, TP_IFACE_CONNECTION_INTERFACE_CONTACT_LIST, TP_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS, TP_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING, TP_IFACE_CONNECTION_INTERFACE_PRESENCE, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, NULL }; const gchar * const * example_contact_list_connection_get_possible_interfaces (void) { /* in this example CM we don't have any extra interfaces that are sometimes, * but not always, present */ return interfaces_always_present; } static void example_contact_list_connection_class_init ( ExampleContactListConnectionClass *klass) { TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; GParamSpec *param_spec; object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; object_class->finalize = finalize; g_type_class_add_private (klass, sizeof (ExampleContactListConnectionPrivate)); base_class->create_handle_repos = create_handle_repos; base_class->get_unique_connection_name = get_unique_connection_name; base_class->create_channel_managers = create_channel_managers; base_class->start_connecting = start_connecting; base_class->shut_down = shut_down; base_class->interfaces_always_present = interfaces_always_present; param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, param_spec); tp_contacts_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListConnectionClass, contacts_mixin)); tp_presence_mixin_class_init (object_class, G_STRUCT_OFFSET (ExampleContactListConnectionClass, presence_mixin), status_available, get_contact_statuses, set_own_status, example_contact_list_presence_statuses ()); tp_presence_mixin_simple_presence_init_dbus_properties (object_class); tp_base_contact_list_mixin_class_init (base_class); } static void get_alias_flags (TpSvcConnectionInterfaceAliasing *aliasing, DBusGMethodInvocation *context) { TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); tp_svc_connection_interface_aliasing_return_from_get_alias_flags (context, TP_CONNECTION_ALIAS_FLAG_USER_SET); } static void get_aliases (TpSvcConnectionInterfaceAliasing *aliasing, const GArray *contacts, DBusGMethodInvocation *context) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GHashTable *result; GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, TpHandle, i); const gchar *alias = example_contact_list_get_alias ( self->priv->contact_list, contact); g_hash_table_insert (result, GUINT_TO_POINTER (contact), (gchar *) alias); } tp_svc_connection_interface_aliasing_return_from_get_aliases (context, result); g_hash_table_destroy (result); } static void request_aliases (TpSvcConnectionInterfaceAliasing *aliasing, const GArray *contacts, DBusGMethodInvocation *context) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GPtrArray *result; gchar **strings; GError *error = NULL; guint i; TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context); if (!tp_handles_are_valid (contact_repo, contacts, FALSE, &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } result = g_ptr_array_sized_new (contacts->len + 1); for (i = 0; i < contacts->len; i++) { TpHandle contact = g_array_index (contacts, TpHandle, i); const gchar *alias = example_contact_list_get_alias ( self->priv->contact_list, contact); g_ptr_array_add (result, (gchar *) alias); } g_ptr_array_add (result, NULL); strings = (gchar **) g_ptr_array_free (result, FALSE); tp_svc_connection_interface_aliasing_return_from_request_aliases (context, (const gchar **) strings); g_free (strings); } static void set_aliases (TpSvcConnectionInterfaceAliasing *aliasing, GHashTable *aliases, DBusGMethodInvocation *context) { ExampleContactListConnection *self = EXAMPLE_CONTACT_LIST_CONNECTION (aliasing); TpBaseConnection *base = TP_BASE_CONNECTION (aliasing); TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base, TP_HANDLE_TYPE_CONTACT); GHashTableIter iter; gpointer key, value; g_hash_table_iter_init (&iter, aliases); while (g_hash_table_iter_next (&iter, &key, &value)) { GError *error = NULL; if (!tp_handle_is_valid (contact_repo, GPOINTER_TO_UINT (key), &error)) { dbus_g_method_return_error (context, error); g_error_free (error); return; } } g_hash_table_iter_init (&iter, aliases); while (g_hash_table_iter_next (&iter, &key, &value)) { example_contact_list_set_alias (self->priv->contact_list, GPOINTER_TO_UINT (key), value); } tp_svc_connection_interface_aliasing_return_from_set_aliases (context); } static void init_aliasing (gpointer iface, gpointer iface_data G_GNUC_UNUSED) { TpSvcConnectionInterfaceAliasingClass *klass = iface; #define IMPLEMENT(x) tp_svc_connection_interface_aliasing_implement_##x (\ klass, x) IMPLEMENT(get_alias_flags); IMPLEMENT(request_aliases); IMPLEMENT(get_aliases); IMPLEMENT(set_aliases); #undef IMPLEMENT } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/conn.h0000644000175100017520000000463412530423576024275 0ustar00kaffeinekaffeine00000000000000/* * conn.h - header for an example connection * * Copyright © 2007-2009 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CONTACT_LIST_CONN_H__ #define __EXAMPLE_CONTACT_LIST_CONN_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _ExampleContactListConnection ExampleContactListConnection; typedef struct _ExampleContactListConnectionClass ExampleContactListConnectionClass; typedef struct _ExampleContactListConnectionPrivate ExampleContactListConnectionPrivate; struct _ExampleContactListConnectionClass { TpBaseConnectionClass parent_class; TpPresenceMixinClass presence_mixin; TpContactsMixinClass contacts_mixin; }; struct _ExampleContactListConnection { TpBaseConnection parent; TpPresenceMixin presence_mixin; TpContactsMixin contacts_mixin; ExampleContactListConnectionPrivate *priv; }; GType example_contact_list_connection_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST_CONNECTION \ (example_contact_list_connection_get_type ()) #define EXAMPLE_CONTACT_LIST_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, \ ExampleContactListConnection)) #define EXAMPLE_CONTACT_LIST_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, \ ExampleContactListConnectionClass)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION)) #define EXAMPLE_IS_CONTACT_LIST_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION)) #define EXAMPLE_CONTACT_LIST_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, \ ExampleContactListConnectionClass)) gchar *example_contact_list_normalize_contact (TpHandleRepoIface *repo, const gchar *id, gpointer context, GError **error); const gchar * const * example_contact_list_connection_get_possible_interfaces ( void); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/contact-list.c0000644000175100017520000015055412530423576025742 0ustar00kaffeinekaffeine00000000000000/* * Example implementation of TpBaseContactList. * * Copyright © 2007-2010 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include "contact-list.h" #include #include #include #include /* this array must be kept in sync with the enum * ExampleContactListPresence in contact-list.h */ static const TpPresenceStatusSpec _statuses[] = { { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, NULL }, { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, NULL }, { NULL } }; const TpPresenceStatusSpec * example_contact_list_presence_statuses (void) { return _statuses; } typedef struct { gchar *alias; guint subscribe:1; guint publish:1; guint pre_approved:1; guint subscribe_requested:1; guint subscribe_rejected:1; /* string borrowed from priv->all_tags => the same pointer */ GHashTable *tags; } ExampleContactDetails; static ExampleContactDetails * example_contact_details_new (void) { return g_slice_new0 (ExampleContactDetails); } static void example_contact_details_destroy (gpointer p) { ExampleContactDetails *d = p; tp_clear_pointer (&d->tags, g_hash_table_unref); g_free (d->alias); g_slice_free (ExampleContactDetails, d); } static void mutable_contact_list_iface_init (TpMutableContactListInterface *); static void blockable_contact_list_iface_init ( TpBlockableContactListInterface *); static void contact_group_list_iface_init (TpContactGroupListInterface *); static void mutable_contact_group_list_iface_init ( TpMutableContactGroupListInterface *); G_DEFINE_TYPE_WITH_CODE (ExampleContactList, example_contact_list, TP_TYPE_BASE_CONTACT_LIST, G_IMPLEMENT_INTERFACE (TP_TYPE_BLOCKABLE_CONTACT_LIST, blockable_contact_list_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_CONTACT_GROUP_LIST, contact_group_list_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_MUTABLE_CONTACT_GROUP_LIST, mutable_contact_group_list_iface_init); G_IMPLEMENT_INTERFACE (TP_TYPE_MUTABLE_CONTACT_LIST, mutable_contact_list_iface_init)) enum { ALIAS_UPDATED, PRESENCE_UPDATED, N_SIGNALS }; static guint signals[N_SIGNALS] = { 0 }; enum { PROP_SIMULATION_DELAY = 1, N_PROPS }; struct _ExampleContactListPrivate { TpBaseConnection *conn; guint simulation_delay; TpHandleRepoIface *contact_repo; /* g_strdup (group name) => the same pointer */ GHashTable *all_tags; /* All contacts on our (fake) protocol-level contact list, * plus all contacts in publish_requests or cancelled_publish_requests */ TpHandleSet *contacts; /* All contacts on our (fake) protocol-level contact list * GUINT_TO_POINTER (handle borrowed from contacts) * => ExampleContactDetails */ GHashTable *contact_details; /* Contacts with an outstanding request for presence publication * (may or may not be in contact_details) * handle borrowed from contacts => g_strdup (message) */ GHashTable *publish_requests; /* Contacts who have requested presence but then cancelled their request * (may or may not be in contact_details) */ TpHandleSet *cancelled_publish_requests; TpHandleSet *blocked_contacts; gulong status_changed_id; }; static void example_contact_list_init (ExampleContactList *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EXAMPLE_TYPE_CONTACT_LIST, ExampleContactListPrivate); self->priv->contact_details = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, example_contact_details_destroy); self->priv->publish_requests = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free); self->priv->all_tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); /* initialized properly in constructed() */ self->priv->contact_repo = NULL; self->priv->contacts = NULL; self->priv->blocked_contacts = NULL; self->priv->cancelled_publish_requests = NULL; } static void example_contact_list_close_all (ExampleContactList *self) { tp_clear_pointer (&self->priv->contacts, tp_handle_set_destroy); tp_clear_pointer (&self->priv->blocked_contacts, tp_handle_set_destroy); tp_clear_pointer (&self->priv->cancelled_publish_requests, tp_handle_set_destroy); tp_clear_pointer (&self->priv->publish_requests, g_hash_table_unref); tp_clear_pointer (&self->priv->contact_details, g_hash_table_unref); /* this must come after freeing contact_details, because the strings are * borrowed */ tp_clear_pointer (&self->priv->all_tags, g_hash_table_unref); if (self->priv->status_changed_id != 0) { g_signal_handler_disconnect (self->priv->conn, self->priv->status_changed_id); self->priv->status_changed_id = 0; } } static void dispose (GObject *object) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (object); example_contact_list_close_all (self); ((GObjectClass *) example_contact_list_parent_class)->dispose ( object); } static void get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (object); switch (property_id) { case PROP_SIMULATION_DELAY: g_value_set_uint (value, self->priv->simulation_delay); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (object); switch (property_id) { case PROP_SIMULATION_DELAY: self->priv->simulation_delay = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static ExampleContactDetails * lookup_contact (ExampleContactList *self, TpHandle contact) { return g_hash_table_lookup (self->priv->contact_details, GUINT_TO_POINTER (contact)); } static ExampleContactDetails * ensure_contact (ExampleContactList *self, TpHandle contact, gboolean *created) { ExampleContactDetails *ret = lookup_contact (self, contact); if (ret == NULL) { tp_handle_set_add (self->priv->contacts, contact); ret = example_contact_details_new (); ret->alias = g_strdup (tp_handle_inspect (self->priv->contact_repo, contact)); g_hash_table_insert (self->priv->contact_details, GUINT_TO_POINTER (contact), ret); /* if we already had a publish request from them, then adding them to * the protocol-level contact list doesn't alter the Telepathy contact * list */ if (created != NULL) { *created = (g_hash_table_lookup (self->priv->publish_requests, GUINT_TO_POINTER (contact)) == NULL); } } else if (created != NULL) { *created = FALSE; } return ret; } static gchar * ensure_tag (ExampleContactList *self, const gchar *s, gboolean emit_signal) { gchar *r = g_hash_table_lookup (self->priv->all_tags, s); if (r == NULL) { g_message ("creating group %s", s); r = g_strdup (s); g_hash_table_insert (self->priv->all_tags, r, r); if (emit_signal) tp_base_contact_list_groups_created ((TpBaseContactList *) self, &s, 1); } return r; } static void example_contact_list_set_contact_groups_async (TpBaseContactList *contact_list, TpHandle contact, const gchar * const *names, gsize n, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); gboolean created; gsize i; ExampleContactDetails *d; GPtrArray *old_names, *new_names; GHashTableIter iter; gpointer k; for (i = 0; i < n; i++) ensure_tag (self, names[i], FALSE); tp_base_contact_list_groups_created (contact_list, names, n); d = ensure_contact (self, contact, &created); if (created) tp_base_contact_list_one_contact_changed (contact_list, contact); if (d->tags == NULL) d->tags = g_hash_table_new (g_str_hash, g_str_equal); old_names = g_ptr_array_sized_new (g_hash_table_size (d->tags)); new_names = g_ptr_array_sized_new (n); for (i = 0; i < n; i++) { if (g_hash_table_lookup (d->tags, names[i]) == NULL) { gchar *tag = g_hash_table_lookup (self->priv->all_tags, names[i]); g_assert (tag != NULL); /* already ensured to exist, above */ g_hash_table_insert (d->tags, tag, tag); g_ptr_array_add (new_names, tag); } } g_hash_table_iter_init (&iter, d->tags); while (g_hash_table_iter_next (&iter, &k, NULL)) { for (i = 0; i < n; i++) { if (!tp_strdiff (names[i], k)) goto next_hash_element; } /* not found in @names, so remove it */ g_ptr_array_add (old_names, k); g_hash_table_iter_remove (&iter); next_hash_element: continue; } tp_base_contact_list_one_contact_groups_changed (contact_list, contact, (const gchar * const *) new_names->pdata, new_names->len, (const gchar * const *) old_names->pdata, old_names->len); g_ptr_array_unref (old_names); g_ptr_array_unref (new_names); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_set_contact_groups_async); } static gboolean receive_contact_lists (gpointer p) { TpBaseContactList *contact_list = p; ExampleContactList *self = p; TpHandle handle; gchar *cambridge, *montreal, *francophones; ExampleContactDetails *d; GHashTableIter iter; gpointer handle_p; if (self->priv->all_tags == NULL) { /* connection already disconnected, so don't process the * "data from the server" */ return FALSE; } /* In a real CM we'd have received a contact list from the server at this * point. But this isn't a real CM, so we have to make one up... */ g_message ("Receiving roster from server"); cambridge = ensure_tag (self, "Cambridge", FALSE); montreal = ensure_tag (self, "Montreal", FALSE); francophones = ensure_tag (self, "Francophones", FALSE); /* Add various people who are already subscribing and publishing */ handle = tp_handle_ensure (self->priv->contact_repo, "sjoerd@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Sjoerd"); d->subscribe = TRUE; d->publish = TRUE; d->tags = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (d->tags, cambridge, cambridge); handle = tp_handle_ensure (self->priv->contact_repo, "guillaume@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Guillaume"); d->subscribe = TRUE; d->publish = TRUE; d->tags = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (d->tags, cambridge, cambridge); g_hash_table_insert (d->tags, francophones, francophones); handle = tp_handle_ensure (self->priv->contact_repo, "olivier@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Olivier"); d->subscribe = TRUE; d->publish = TRUE; d->tags = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (d->tags, montreal, montreal); g_hash_table_insert (d->tags, francophones, francophones); handle = tp_handle_ensure (self->priv->contact_repo, "travis@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Travis"); d->subscribe = TRUE; d->publish = TRUE; /* Add a couple of people whose presence we've requested. They are * remote-pending in subscribe */ handle = tp_handle_ensure (self->priv->contact_repo, "geraldine@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Géraldine"); d->subscribe_requested = TRUE; d->tags = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (d->tags, cambridge, cambridge); g_hash_table_insert (d->tags, francophones, francophones); handle = tp_handle_ensure (self->priv->contact_repo, "helen@example.com", NULL, NULL); d = ensure_contact (self, handle, NULL); g_free (d->alias); d->alias = g_strdup ("Helen"); d->subscribe_requested = TRUE; d->tags = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (d->tags, cambridge, cambridge); /* Receive a couple of authorization requests too. These people are * local-pending in publish; they're not actually on our protocol-level * contact list */ handle = tp_handle_ensure (self->priv->contact_repo, "wim@example.com", NULL, NULL); tp_handle_set_add (self->priv->contacts, handle); g_hash_table_insert (self->priv->publish_requests, GUINT_TO_POINTER (handle), g_strdup ("I'm more metal than you!")); handle = tp_handle_ensure (self->priv->contact_repo, "christian@example.com", NULL, NULL); tp_handle_set_add (self->priv->contacts, handle); g_hash_table_insert (self->priv->publish_requests, GUINT_TO_POINTER (handle), g_strdup ("I have some fermented herring for you")); /* Add a couple of blocked contacts. */ handle = tp_handle_ensure (self->priv->contact_repo, "bill@example.com", NULL, NULL); tp_handle_set_add (self->priv->blocked_contacts, handle); handle = tp_handle_ensure (self->priv->contact_repo, "steve@example.com", NULL, NULL); tp_handle_set_add (self->priv->blocked_contacts, handle); g_hash_table_iter_init (&iter, self->priv->contact_details); /* emit initial aliases, presences */ while (g_hash_table_iter_next (&iter, &handle_p, NULL)) { handle = GPOINTER_TO_UINT (handle_p); g_signal_emit (self, signals[ALIAS_UPDATED], 0, handle); g_signal_emit (self, signals[PRESENCE_UPDATED], 0, handle); } /* ... and off we go */ tp_base_contact_list_set_list_received (contact_list); return FALSE; } static void status_changed_cb (TpBaseConnection *conn, guint status, guint reason, ExampleContactList *self) { switch (status) { case TP_CONNECTION_STATUS_CONNECTED: { /* Do network I/O to get the contact list. This connection manager * doesn't really have a server, so simulate a small network delay * then invent a contact list */ tp_base_contact_list_set_list_pending ((TpBaseContactList *) self); g_timeout_add_full (G_PRIORITY_DEFAULT, 2 * self->priv->simulation_delay, receive_contact_lists, g_object_ref (self), g_object_unref); } break; case TP_CONNECTION_STATUS_DISCONNECTED: { example_contact_list_close_all (self); tp_clear_object (&self->priv->conn); } break; } } static void constructed (GObject *object) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (object); void (*chain_up) (GObject *) = ((GObjectClass *) example_contact_list_parent_class)->constructed; if (chain_up != NULL) { chain_up (object); } g_object_get (self, "connection", &self->priv->conn, NULL); g_assert (self->priv->conn != NULL); self->priv->contact_repo = tp_base_connection_get_handles (self->priv->conn, TP_HANDLE_TYPE_CONTACT); self->priv->contacts = tp_handle_set_new (self->priv->contact_repo); self->priv->blocked_contacts = tp_handle_set_new (self->priv->contact_repo); self->priv->cancelled_publish_requests = tp_handle_set_new ( self->priv->contact_repo); self->priv->status_changed_id = g_signal_connect (self->priv->conn, "status-changed", (GCallback) status_changed_cb, self); } static void send_updated_roster (ExampleContactList *self, TpHandle contact) { ExampleContactDetails *d = g_hash_table_lookup (self->priv->contact_details, GUINT_TO_POINTER (contact)); const gchar *request = g_hash_table_lookup (self->priv->publish_requests, GUINT_TO_POINTER (contact)); const gchar *identifier = tp_handle_inspect (self->priv->contact_repo, contact); /* In a real connection manager, we'd transmit these new details to the * server, rather than just printing messages. */ if (d == NULL) { g_message ("Deleting contact %s from server", identifier); } else { g_message ("Transmitting new state of contact %s to server", identifier); g_message ("\talias = %s", d->alias); g_message ("\tcan see our presence = %s", d->publish ? "yes" : (request != NULL ? "no, but has requested it" : "no")); g_message ("\tsends us presence = %s", d->subscribe ? "yes" : (d->subscribe_requested ? "no, but we have requested it" : (d->subscribe_rejected ? "no, request refused" : "no"))); if (d->tags == NULL || g_hash_table_size (d->tags) == 0) { g_message ("\tnot in any groups"); } else { GHashTableIter iter; gpointer k; g_hash_table_iter_init (&iter, d->tags); while (g_hash_table_iter_next (&iter, &k, NULL)) { g_message ("\tin group: %s", (gchar *) k); } } } } static void example_contact_list_set_group_members_async (TpBaseContactList *contact_list, const gchar *group, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *new_contacts = tp_handle_set_new (self->priv->contact_repo); TpHandleSet *added = tp_handle_set_new (self->priv->contact_repo); TpHandleSet *removed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; gchar *tag = ensure_tag (self, group, TRUE); tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { gboolean created = FALSE, updated = FALSE; ExampleContactDetails *d = ensure_contact (self, member, &created); if (created) tp_handle_set_add (new_contacts, member); if (d->tags == NULL) d->tags = g_hash_table_new (g_str_hash, g_str_equal); if (g_hash_table_lookup (d->tags, tag) == NULL) { g_hash_table_insert (d->tags, tag, tag); updated = TRUE; } if (created || updated) { send_updated_roster (self, member); tp_handle_set_add (added, member); } } tp_intset_fast_iter_init (&iter, tp_handle_set_peek (self->priv->contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d; if (tp_handle_set_is_member (contacts, member)) continue; d = lookup_contact (self, member); if (d != NULL && d->tags != NULL && g_hash_table_remove (d->tags, group)) tp_handle_set_add (removed, member); } if (!tp_handle_set_is_empty (new_contacts)) tp_base_contact_list_contacts_changed (contact_list, new_contacts, NULL); if (!tp_handle_set_is_empty (added)) tp_base_contact_list_groups_changed (contact_list, added, &group, 1, NULL, 0); if (!tp_handle_set_is_empty (removed)) tp_base_contact_list_groups_changed (contact_list, removed, NULL, 0, &group, 1); tp_handle_set_destroy (added); tp_handle_set_destroy (removed); tp_handle_set_destroy (new_contacts); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_set_group_members_async); } static void example_contact_list_add_to_group_async (TpBaseContactList *contact_list, const gchar *group, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *new_contacts = tp_handle_set_new (self->priv->contact_repo); TpHandleSet *new_to_group = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; gchar *tag = ensure_tag (self, group, TRUE); tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { gboolean created = FALSE, updated = FALSE; ExampleContactDetails *d = ensure_contact (self, member, &created); if (created) tp_handle_set_add (new_contacts, member); if (d->tags == NULL) d->tags = g_hash_table_new (g_str_hash, g_str_equal); if (g_hash_table_lookup (d->tags, tag) == NULL) { g_hash_table_insert (d->tags, tag, tag); updated = TRUE; } if (created || updated) { send_updated_roster (self, member); tp_handle_set_add (new_to_group, member); } } if (!tp_handle_set_is_empty (new_contacts)) tp_base_contact_list_contacts_changed (contact_list, new_contacts, NULL); if (!tp_handle_set_is_empty (new_to_group)) tp_base_contact_list_groups_changed (contact_list, new_to_group, &group, 1, NULL, 0); tp_handle_set_destroy (new_to_group); tp_handle_set_destroy (new_contacts); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_add_to_group_async); } static void example_contact_list_remove_from_group_async (TpBaseContactList *contact_list, const gchar *group, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d = lookup_contact (self, member); /* If not on the roster or not in any groups, we have nothing to do */ if (d != NULL && d->tags != NULL && g_hash_table_remove (d->tags, group)) { send_updated_roster (self, member); tp_handle_set_add (changed, member); } } if (!tp_handle_set_is_empty (changed)) tp_base_contact_list_groups_changed (contact_list, changed, NULL, 0, &group, 1); tp_handle_set_destroy (changed); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_remove_from_group_async); } typedef struct { ExampleContactList *self; TpHandle contact; } SelfAndContact; static SelfAndContact * self_and_contact_new (ExampleContactList *self, TpHandle contact) { SelfAndContact *ret = g_slice_new0 (SelfAndContact); ret->self = g_object_ref (self); ret->contact = contact; return ret; } static void self_and_contact_destroy (gpointer p) { SelfAndContact *s = p; g_object_unref (s->self); g_slice_free (SelfAndContact, s); } static void receive_auth_request (ExampleContactList *self, TpHandle contact) { ExampleContactDetails *d; /* if shutting down, do nothing */ if (self->priv->conn == NULL) return; /* A remote contact has asked to see our presence. * * In a real connection manager this would be the result of incoming * data from the server. */ g_message ("From server: %s has sent us a publish request", tp_handle_inspect (self->priv->contact_repo, contact)); d = lookup_contact (self, contact); if (d != NULL && d->publish) return; if (d != NULL && d->pre_approved) { /* the user already said yes, no need to signal anything */ g_message ("... this publish request was already approved"); d->pre_approved = FALSE; d->publish = TRUE; g_hash_table_remove (self->priv->publish_requests, GUINT_TO_POINTER (contact)); tp_handle_set_remove (self->priv->cancelled_publish_requests, contact); send_updated_roster (self, contact); } else { tp_handle_set_add (self->priv->contacts, contact); g_hash_table_insert (self->priv->publish_requests, GUINT_TO_POINTER (contact), g_strdup ("May I see your presence, please?")); } tp_base_contact_list_one_contact_changed ((TpBaseContactList *) self, contact); /* If the contact has a name ending with "@cancel.something", they * immediately take it back; this is mainly for the regression test. */ if (strstr (tp_handle_inspect (self->priv->contact_repo, contact), "@cancel.") != NULL) { g_message ("From server: %s has cancelled their publish request", tp_handle_inspect (self->priv->contact_repo, contact)); d->publish = FALSE; d->pre_approved = FALSE; g_hash_table_remove (self->priv->publish_requests, GUINT_TO_POINTER (contact)); tp_handle_set_add (self->priv->cancelled_publish_requests, contact); tp_base_contact_list_one_contact_changed ((TpBaseContactList *) self, contact); } } static gboolean receive_authorized (gpointer p) { SelfAndContact *s = p; ExampleContactDetails *d; /* if shutting down, do nothing */ if (s->self->priv->conn == NULL) return FALSE; /* A remote contact has accepted our request to see their presence. * * In a real connection manager this would be the result of incoming * data from the server. */ g_message ("From server: %s has accepted our subscribe request", tp_handle_inspect (s->self->priv->contact_repo, s->contact)); d = ensure_contact (s->self, s->contact, NULL); /* if we were already subscribed to them, then nothing really happened */ if (d->subscribe) return FALSE; /* DITTO, if our subscription request was cancelled in the meantime */ if (!d->subscribe_requested) return FALSE; d->subscribe_requested = FALSE; d->subscribe_rejected = FALSE; d->subscribe = TRUE; tp_base_contact_list_one_contact_changed ((TpBaseContactList *) s->self, s->contact); /* their presence changes to something other than UNKNOWN */ g_signal_emit (s->self, signals[PRESENCE_UPDATED], 0, s->contact); /* if we're not publishing to them, also pretend they have asked us to * do so */ if (!d->publish) { receive_auth_request (s->self, s->contact); } return FALSE; } static gboolean receive_unauthorized (gpointer p) { SelfAndContact *s = p; ExampleContactDetails *d; /* if shutting down, do nothing */ if (s->self->priv->conn == NULL) return FALSE; /* A remote contact has rejected our request to see their presence. * * In a real connection manager this would be the result of incoming * data from the server. */ g_message ("From server: %s has rejected our subscribe request", tp_handle_inspect (s->self->priv->contact_repo, s->contact)); d = ensure_contact (s->self, s->contact, NULL); if (!d->subscribe && !d->subscribe_requested) return FALSE; d->subscribe_requested = FALSE; d->subscribe_rejected = TRUE; d->subscribe = FALSE; tp_base_contact_list_one_contact_changed ((TpBaseContactList *) s->self, s->contact); /* their presence changes to UNKNOWN */ g_signal_emit (s->self, signals[PRESENCE_UPDATED], 0, s->contact); return FALSE; } static gboolean auth_request_cb (gpointer p) { SelfAndContact *s = p; receive_auth_request (s->self, s->contact); return FALSE; } ExampleContactListPresence example_contact_list_get_presence (ExampleContactList *self, TpHandle contact) { ExampleContactDetails *d = lookup_contact (self, contact); const gchar *id; if (d == NULL || !d->subscribe) { /* we don't know the presence of people not on the subscribe list, * by definition */ return EXAMPLE_CONTACT_LIST_PRESENCE_UNKNOWN; } id = tp_handle_inspect (self->priv->contact_repo, contact); /* In this example CM, we fake contacts' presence based on their name: * contacts in the first half of the alphabet are available, the rest * (including non-alphabetic and non-ASCII initial letters) are away. */ if ((id[0] >= 'A' && id[0] <= 'M') || (id[0] >= 'a' && id[0] <= 'm')) { return EXAMPLE_CONTACT_LIST_PRESENCE_AVAILABLE; } return EXAMPLE_CONTACT_LIST_PRESENCE_AWAY; } const gchar * example_contact_list_get_alias (ExampleContactList *self, TpHandle contact) { ExampleContactDetails *d = lookup_contact (self, contact); if (d == NULL) { /* we don't have a user-defined alias for people not on the roster */ return tp_handle_inspect (self->priv->contact_repo, contact); } return d->alias; } void example_contact_list_set_alias (ExampleContactList *self, TpHandle contact, const gchar *alias) { gboolean created; ExampleContactDetails *d; gchar *old; /* if shutting down, do nothing */ if (self->priv->conn == NULL) return; d = ensure_contact (self, contact, &created); if (created) { tp_base_contact_list_one_contact_changed ( (TpBaseContactList *) self, contact); } /* FIXME: if stored list hasn't been retrieved yet, queue the change for * later */ old = d->alias; d->alias = g_strdup (alias); if (created || tp_strdiff (old, alias)) send_updated_roster (self, contact); g_free (old); } static TpHandleSet * example_contact_list_dup_contacts (TpBaseContactList *contact_list) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); return tp_handle_set_copy (self->priv->contacts); } static TpHandleSet * example_contact_list_dup_group_members (TpBaseContactList *contact_list, const gchar *group) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpIntsetFastIter iter; TpHandle member; TpHandleSet *members = tp_handle_set_new (self->priv->contact_repo); tp_intset_fast_iter_init (&iter, tp_handle_set_peek (self->priv->contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d = lookup_contact (self, member); if (d != NULL && d->tags != NULL && g_hash_table_lookup_extended (d->tags, group, NULL, NULL)) tp_handle_set_add (members, member); } return members; } static const ExampleContactDetails no_details = { NULL, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }; static inline TpSubscriptionState compose_presence (gboolean full, gboolean ask, gboolean removed_remotely) { if (full) return TP_SUBSCRIPTION_STATE_YES; else if (ask) return TP_SUBSCRIPTION_STATE_ASK; else if (removed_remotely) return TP_SUBSCRIPTION_STATE_REMOVED_REMOTELY; else return TP_SUBSCRIPTION_STATE_NO; } static void example_contact_list_dup_states (TpBaseContactList *contact_list, TpHandle contact, TpSubscriptionState *subscribe, TpSubscriptionState *publish, gchar **publish_request) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); const ExampleContactDetails *details = lookup_contact (self, contact); const gchar *request = g_hash_table_lookup (self->priv->publish_requests, GUINT_TO_POINTER (contact)); if (details == NULL) details = &no_details; if (subscribe != NULL) *subscribe = compose_presence (details->subscribe, details->subscribe_requested, details->subscribe_rejected); if (publish != NULL) *publish = compose_presence (details->publish, (request != NULL), tp_handle_set_is_member (self->priv->cancelled_publish_requests, contact)); if (publish_request != NULL) *publish_request = g_strdup (request); } static void example_contact_list_request_subscription_async ( TpBaseContactList *contact_list, TpHandleSet *contacts, const gchar *message, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { gboolean created; ExampleContactDetails *d = ensure_contact (self, member, &created); gchar *message_lc; /* if they already authorized us, it's a no-op */ if (d->subscribe) continue; /* In a real connection manager we'd start a network request here */ g_message ("Transmitting authorization request to %s: %s", tp_handle_inspect (self->priv->contact_repo, member), message); tp_handle_set_add (changed, member); d->subscribe_rejected = FALSE; d->subscribe_requested = TRUE; send_updated_roster (self, member); /* Pretend that after a delay, the contact notices the request * and allows or rejects it. In this example connection manager, * empty requests are allowed, as are requests that contain "please" * case-insensitively. All other requests are denied. */ message_lc = g_ascii_strdown (message, -1); if (message[0] == '\0' || strstr (message_lc, "please") != NULL) { g_timeout_add_full (G_PRIORITY_LOW, self->priv->simulation_delay, receive_authorized, self_and_contact_new (self, member), self_and_contact_destroy); } else { g_timeout_add_full (G_PRIORITY_LOW, self->priv->simulation_delay, receive_unauthorized, self_and_contact_new (self, member), self_and_contact_destroy); } g_free (message_lc); } tp_base_contact_list_contacts_changed (contact_list, changed, NULL); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_request_subscription_async); } static void example_contact_list_authorize_publication_async ( TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d = ensure_contact (self, member, NULL); const gchar *request = g_hash_table_lookup (self->priv->publish_requests, GUINT_TO_POINTER (member)); if (tp_handle_set_remove (self->priv->cancelled_publish_requests, member)) tp_handle_set_add (changed, member); /* We would like member to see our presence. In this simulated protocol, * this is meaningless, unless they have asked for it; but we can still * remember the pre-authorization in case they ask later. */ if (request == NULL) { d->pre_approved = TRUE; } else if (!d->publish) { d->publish = TRUE; g_hash_table_remove (self->priv->publish_requests, GUINT_TO_POINTER (member)); send_updated_roster (self, member); tp_handle_set_add (changed, member); } } tp_base_contact_list_contacts_changed (contact_list, changed, NULL); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_authorize_publication_async); } static void example_contact_list_store_contacts_async ( TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { /* We would like member to be on the roster, but nothing more. */ if (lookup_contact (self, member) == NULL) { gboolean created; ensure_contact (self, member, &created); send_updated_roster (self, member); /* If we'd had a publish request from this member, then adding them * to the protocol-level contact list doesn't actually cause a * state change visible on Telepathy. */ if (created) tp_handle_set_add (changed, member); } } tp_base_contact_list_contacts_changed (contact_list, changed, NULL); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_store_contacts_async); } static void example_contact_list_remove_contacts_async (TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *removed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { /* we would like to remove member from the roster altogether */ if (lookup_contact (self, member) != NULL || g_hash_table_lookup (self->priv->publish_requests, GUINT_TO_POINTER (member)) != NULL || tp_handle_set_is_member (self->priv->cancelled_publish_requests, member)) { tp_handle_set_add (removed, member); g_hash_table_remove (self->priv->contact_details, GUINT_TO_POINTER (member)); g_hash_table_remove (self->priv->publish_requests, GUINT_TO_POINTER (member)); tp_handle_set_remove (self->priv->contacts, member); tp_handle_set_remove (self->priv->cancelled_publish_requests, member); send_updated_roster (self, member); /* since they're no longer on the subscribe list, we can't * see their presence, so emit a signal changing it to * UNKNOWN */ g_signal_emit (self, signals[PRESENCE_UPDATED], 0, member); } } tp_base_contact_list_contacts_changed (contact_list, NULL, removed); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_remove_contacts_async); } static void example_contact_list_unsubscribe_async (TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d = lookup_contact (self, member); /* we would like to avoid receiving member's presence any more, * or we would like to cancel an outstanding request for their * presence */ if (d != NULL) { if (d->subscribe_requested) { g_message ("Cancelling our authorization request to %s", tp_handle_inspect (self->priv->contact_repo, member)); d->subscribe_requested = FALSE; tp_handle_set_add (changed, member); send_updated_roster (self, member); } else if (d->subscribe_rejected) { g_message ("Forgetting rejected authorization request to %s", tp_handle_inspect (self->priv->contact_repo, member)); d->subscribe_rejected = FALSE; tp_handle_set_add (changed, member); send_updated_roster (self, member); } else if (d->subscribe) { g_message ("We no longer want presence from %s", tp_handle_inspect (self->priv->contact_repo, member)); d->subscribe = FALSE; /* since they're no longer on the subscribe list, we can't * see their presence, so emit a signal changing it to * UNKNOWN */ g_signal_emit (self, signals[PRESENCE_UPDATED], 0, member); tp_handle_set_add (changed, member); send_updated_roster (self, member); } } } tp_base_contact_list_contacts_changed (contact_list, changed, NULL); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_unsubscribe_async); } static void example_contact_list_unpublish_async (TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpHandleSet *removed = tp_handle_set_new (self->priv->contact_repo); TpIntsetFastIter iter; TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d = lookup_contact (self, member); const gchar *request = g_hash_table_lookup (self->priv->publish_requests, GUINT_TO_POINTER (member)); /* we would like member not to see our presence any more, or we * would like to reject a request from them to see our presence */ if (request != NULL) { g_message ("Rejecting authorization request from %s", tp_handle_inspect (self->priv->contact_repo, member)); g_hash_table_remove (self->priv->publish_requests, GUINT_TO_POINTER (member)); if (d == NULL) { /* the contact wasn't actually on our protocol-level contact * list, only on the Telepathy-level contact list, so rejecting * authorization makes them disappear */ tp_handle_set_add (removed, member); } else { tp_handle_set_add (changed, member); } } if (tp_handle_set_remove (self->priv->cancelled_publish_requests, member)) { g_message ("Acknowledging remotely-cancelled publish request"); tp_handle_set_add (changed, member); } if (d != NULL) { d->pre_approved = FALSE; if (d->publish) { g_message ("Removing authorization from %s", tp_handle_inspect (self->priv->contact_repo, member)); d->publish = FALSE; tp_handle_set_add (changed, member); send_updated_roster (self, member); /* Pretend that after a delay, the contact notices the change * and asks for our presence again */ g_timeout_add_full (G_PRIORITY_LOW, self->priv->simulation_delay, auth_request_cb, self_and_contact_new (self, member), self_and_contact_destroy); } } } tp_base_contact_list_contacts_changed (contact_list, changed, removed); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_unpublish_async); } static TpHandleSet * example_contact_list_dup_blocked_contacts (TpBaseContactList *contact_list) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); return tp_handle_set_copy (self->priv->blocked_contacts); } static void example_contact_list_block_contacts_async (TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpIntsetFastIter iter; TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { if (!tp_handle_set_is_member (self->priv->blocked_contacts, member)) { g_message ("Adding contact %s to blocked list", tp_handle_inspect (self->priv->contact_repo, member)); tp_handle_set_add (self->priv->blocked_contacts, member); tp_handle_set_add (changed, member); } } tp_base_contact_list_contact_blocking_changed (contact_list, changed); tp_handle_set_destroy (changed); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_block_contacts_async); } static void example_contact_list_unblock_contacts_async (TpBaseContactList *contact_list, TpHandleSet *contacts, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpIntsetFastIter iter; TpHandleSet *changed = tp_handle_set_new (self->priv->contact_repo); TpHandle member; tp_intset_fast_iter_init (&iter, tp_handle_set_peek (contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { if (tp_handle_set_remove (self->priv->blocked_contacts, member)) { g_message ("Removing contact %s from blocked list", tp_handle_inspect (self->priv->contact_repo, member)); tp_handle_set_add (changed, member); } } tp_base_contact_list_contact_blocking_changed (contact_list, changed); tp_handle_set_destroy (changed); tp_simple_async_report_success_in_idle ((GObject *) self, callback, user_data, example_contact_list_unblock_contacts_async); } static guint example_contact_list_get_group_storage ( TpBaseContactList *contact_list G_GNUC_UNUSED) { return TP_CONTACT_METADATA_STORAGE_TYPE_ANYONE; } static GStrv example_contact_list_dup_groups (TpBaseContactList *contact_list) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); GPtrArray *tags = g_ptr_array_sized_new ( g_hash_table_size (self->priv->all_tags) + 1); GHashTableIter iter; gpointer tag; g_hash_table_iter_init (&iter, self->priv->all_tags); while (g_hash_table_iter_next (&iter, &tag, NULL)) g_ptr_array_add (tags, g_strdup (tag)); g_ptr_array_add (tags, NULL); return (GStrv) g_ptr_array_free (tags, FALSE); } static GStrv example_contact_list_dup_contact_groups (TpBaseContactList *contact_list, TpHandle contact) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); GPtrArray *tags = g_ptr_array_sized_new ( g_hash_table_size (self->priv->all_tags) + 1); ExampleContactDetails *d = lookup_contact (self, contact); if (d != NULL && d->tags != NULL) { GHashTableIter iter; gpointer tag; g_hash_table_iter_init (&iter, d->tags); while (g_hash_table_iter_next (&iter, &tag, NULL)) g_ptr_array_add (tags, g_strdup (tag)); } g_ptr_array_add (tags, NULL); return (GStrv) g_ptr_array_free (tags, FALSE); } static void example_contact_list_remove_group_async (TpBaseContactList *contact_list, const gchar *group, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); TpIntsetFastIter iter; TpHandle member; /* signal the deletion */ g_message ("deleting group %s", group); tp_base_contact_list_groups_removed (contact_list, &group, 1); /* apply the change to our model of the contacts too; we don't need to signal * the change, because TpBaseContactList already did */ tp_intset_fast_iter_init (&iter, tp_handle_set_peek (self->priv->contacts)); while (tp_intset_fast_iter_next (&iter, &member)) { ExampleContactDetails *d = lookup_contact (self, member); if (d != NULL && d->tags != NULL) g_hash_table_remove (d->tags, group); } tp_simple_async_report_success_in_idle ((GObject *) contact_list, callback, user_data, example_contact_list_remove_group_async); } static gchar * example_contact_list_normalize_group (TpBaseContactList *contact_list, const gchar *id) { if (id[0] == '\0') return NULL; return g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); } static void example_contact_list_rename_group_async (TpBaseContactList *contact_list, const gchar *old_name, const gchar *new_name, GAsyncReadyCallback callback, gpointer user_data) { ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list); gchar *tag = ensure_tag (self, new_name, FALSE); GHashTableIter iter; gpointer v; /* signal the rename */ g_print ("renaming group %s to %s", old_name, new_name); tp_base_contact_list_group_renamed (contact_list, old_name, new_name); /* update our model (this doesn't need to signal anything because * TpBaseContactList already did) */ g_hash_table_iter_init (&iter, self->priv->contact_details); while (g_hash_table_iter_next (&iter, NULL, &v)) { ExampleContactDetails *d = v; if (d->tags != NULL && g_hash_table_remove (d->tags, old_name)) g_hash_table_insert (d->tags, tag, tag); } tp_simple_async_report_success_in_idle ((GObject *) contact_list, callback, user_data, example_contact_list_rename_group_async); } static void example_contact_list_class_init (ExampleContactListClass *klass) { TpBaseContactListClass *contact_list_class = (TpBaseContactListClass *) klass; GObjectClass *object_class = (GObjectClass *) klass; object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, g_param_spec_uint ("simulation-delay", "Simulation delay", "Delay between simulated network events", 0, G_MAXUINT32, 1000, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); contact_list_class->dup_contacts = example_contact_list_dup_contacts; contact_list_class->dup_states = example_contact_list_dup_states; /* for this example CM we pretend there is a server-stored contact list, * like in XMPP, even though there obviously isn't really */ contact_list_class->get_contact_list_persists = tp_base_contact_list_true_func; g_type_class_add_private (klass, sizeof (ExampleContactListPrivate)); signals[ALIAS_UPDATED] = g_signal_new ("alias-updated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); signals[PRESENCE_UPDATED] = g_signal_new ("presence-updated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); } static void mutable_contact_list_iface_init (TpMutableContactListInterface *iface) { iface->can_change_contact_list = tp_base_contact_list_true_func; iface->get_request_uses_message = tp_base_contact_list_true_func; iface->request_subscription_async = example_contact_list_request_subscription_async; iface->authorize_publication_async = example_contact_list_authorize_publication_async; iface->store_contacts_async = example_contact_list_store_contacts_async; iface->remove_contacts_async = example_contact_list_remove_contacts_async; iface->unsubscribe_async = example_contact_list_unsubscribe_async; iface->unpublish_async = example_contact_list_unpublish_async; } static void blockable_contact_list_iface_init (TpBlockableContactListInterface *iface) { iface->can_block = tp_base_contact_list_true_func; iface->dup_blocked_contacts = example_contact_list_dup_blocked_contacts; iface->block_contacts_async = example_contact_list_block_contacts_async; iface->unblock_contacts_async = example_contact_list_unblock_contacts_async; } static void contact_group_list_iface_init (TpContactGroupListInterface *iface) { iface->dup_groups = example_contact_list_dup_groups; iface->dup_group_members = example_contact_list_dup_group_members; iface->dup_contact_groups = example_contact_list_dup_contact_groups; iface->normalize_group = example_contact_list_normalize_group; } static void mutable_contact_group_list_iface_init ( TpMutableContactGroupListInterface *iface) { iface->set_group_members_async = example_contact_list_set_group_members_async; iface->add_to_group_async = example_contact_list_add_to_group_async; iface->remove_from_group_async = example_contact_list_remove_from_group_async; iface->remove_group_async = example_contact_list_remove_group_async; iface->rename_group_async = example_contact_list_rename_group_async; iface->set_contact_groups_async = example_contact_list_set_contact_groups_async; iface->get_group_storage = example_contact_list_get_group_storage; } telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/contact-list.h0000644000175100017520000000503112530423576025734 0ustar00kaffeinekaffeine00000000000000/* * Example channel manager for contact lists * * Copyright © 2007-2010 Collabora Ltd. * Copyright © 2007-2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #ifndef __EXAMPLE_CONTACT_LIST_H__ #define __EXAMPLE_CONTACT_LIST_H__ #include #include #include #include #include G_BEGIN_DECLS typedef struct _ExampleContactList ExampleContactList; typedef struct _ExampleContactListClass ExampleContactListClass; typedef struct _ExampleContactListPrivate ExampleContactListPrivate; struct _ExampleContactListClass { TpBaseContactListClass parent_class; }; struct _ExampleContactList { TpBaseContactList parent; ExampleContactListPrivate *priv; }; GType example_contact_list_get_type (void); #define EXAMPLE_TYPE_CONTACT_LIST \ (example_contact_list_get_type ()) #define EXAMPLE_CONTACT_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CONTACT_LIST, \ ExampleContactList)) #define EXAMPLE_CONTACT_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CONTACT_LIST, \ ExampleContactListClass)) #define EXAMPLE_IS_CONTACT_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CONTACT_LIST)) #define EXAMPLE_IS_CONTACT_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CONTACT_LIST)) #define EXAMPLE_CONTACT_LIST_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CONTACT_LIST, \ ExampleContactListClass)) /* this enum must be kept in sync with the array _statuses in * contact-list.c */ typedef enum { EXAMPLE_CONTACT_LIST_PRESENCE_OFFLINE = 0, EXAMPLE_CONTACT_LIST_PRESENCE_UNKNOWN, EXAMPLE_CONTACT_LIST_PRESENCE_ERROR, EXAMPLE_CONTACT_LIST_PRESENCE_AWAY, EXAMPLE_CONTACT_LIST_PRESENCE_AVAILABLE } ExampleContactListPresence; const TpPresenceStatusSpec *example_contact_list_presence_statuses ( void); ExampleContactListPresence example_contact_list_get_presence ( ExampleContactList *self, TpHandle contact); const gchar *example_contact_list_get_alias ( ExampleContactList *self, TpHandle contact); void example_contact_list_set_alias ( ExampleContactList *self, TpHandle contact, const gchar *alias); G_END_DECLS #endif telepathy-qt-0.9.6.1/tests/lib/glib/contactlist2/example_contact_list.manager0000644000175100017520000000207112530423576030715 0ustar00kaffeinekaffeine00000000000000[ConnectionManager] Interfaces= [Protocol example] Interfaces= ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;org.freedesktop.Telepathy.Connection.Interface.Contacts;org.freedesktop.Telepathy.Connection.Interface.Presence;org.freedesktop.Telepathy.Connection.Interface.SimplePresence; param-account=s required register param-simulation-delay=u default-simulation-delay=1000 RequestableChannelClasses=contactlist;contactgroup; VCardField=x-telepathy-example EnglishName=Example with a contact list Icon=face-smile [contactlist] org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.ContactList org.freedesktop.Telepathy.Channel.TargetHandleType u=3 allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID; [contactgroup] org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.ContactList org.freedesktop.Telepathy.Channel.TargetHandleType u=4 allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID; telepathy-qt-0.9.6.1/tests/lib/CMakeLists.txt0000644000175100017520000000163112530423576022373 0ustar00kaffeinekaffeine00000000000000include_directories( ${CMAKE_CURRENT_BINARY_DIR}) set(tp_qt_tests_SRCS test.cpp test-thread-helper.cpp ) set(tp_qt_tests_MOC_SRCS test.h test-thread-helper.h ) file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen") foreach(moc_src ${tp_qt_tests_MOC_SRCS}) set(generated_file _gen/${moc_src}) string(REPLACE ".h" ".h.moc.hpp" generated_file ${generated_file}) tpqt_generate_moc_i(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}) list(APPEND tp_qt_tests_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}) endforeach(moc_src ${tp_qt_tests_MOC_SRCS}) add_library(tp-qt-tests ${tp_qt_tests_SRCS}) target_link_libraries(tp-qt-tests ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} telepathy-qt${QT_VERSION_MAJOR}) if(ENABLE_TP_GLIB_TESTS) add_subdirectory(glib) add_subdirectory(glib-helpers) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/test.cpp0000644000175100017520000000575212530423576021326 0ustar00kaffeinekaffeine00000000000000#include "tests/lib/test.h" #include #include #include #include #include #include #include #include using Tp::PendingOperation; using Tp::PendingVoid; using Tp::Client::DBus::PeerInterface; Test::Test(QObject *parent) : QObject(parent), mLoop(new QEventLoop(this)) { QTimer::singleShot(10 * 60 * 1000, this, SLOT(onWatchdog())); } Test::~Test() { delete mLoop; } void Test::initTestCaseImpl() { Tp::registerTypes(); Tp::enableDebug(true); Tp::enableWarnings(true); QVERIFY(QDBusConnection::sessionBus().isConnected()); } void Test::initImpl() { } void Test::cleanupImpl() { } void Test::cleanupTestCaseImpl() { // To allow for cleanup code to run (e.g. PendingOperation cleanup after they finish) mLoop->processEvents(); } void Test::expectSuccessfulCall(PendingOperation *op) { if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mLoop->exit(1); return; } mLoop->exit(0); } void Test::expectSuccessfulCall(QDBusPendingCallWatcher *watcher) { if (watcher->isError()) { qWarning().nospace() << watcher->error().name() << ": " << watcher->error().message(); mLoop->exit(1); return; } mLoop->exit(0); } void Test::expectFailure(PendingOperation *op) { if (!op->isError()) { qWarning() << "expectFailure(): should have been an error, but wasn't"; mLastError = QString(); mLastErrorMessage = QString(); mLoop->exit(1); return; } mLastError = op->errorName(); mLastErrorMessage = op->errorMessage(); mLoop->exit(0); } void Test::expectSuccessfulProperty(PendingOperation *op) { if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mPropertyValue = QVariant(); mLoop->exit(1001); } else { Tp::PendingVariant *pv = qobject_cast(op); mPropertyValue = pv->result(); mLoop->exit(1000); } } void Test::processDBusQueue(Tp::DBusProxy *proxy) { // Call method Ping on the D-Bus Peer interface PeerInterface peer(proxy); PendingVoid *call = new PendingVoid(peer.Ping(), Tp::SharedPtr()); // Wait for the reply to the Ping call while (!call->isFinished()) { mLoop->processEvents(); } QVERIFY(call->isFinished()); QVERIFY(call->isValid()); // Do one more processEvents so the PendingVoid is always freed mLoop->processEvents(); } void Test::onWatchdog() { // We can't use QFAIL because the test would then go to cleanup() and/or cleanupTestCase(), // which would often hang too - so let's just use abort qWarning() << "Test took over 10 minutes to finish, it's probably hung up - aborting"; std::abort(); } #include "_gen/test.h.moc.hpp" telepathy-qt-0.9.6.1/tests/lib/test-thread-helper.cpp0000644000175100017520000000173712530423576024047 0ustar00kaffeinekaffeine00000000000000#include "tests/lib/test-thread-helper.h" #include #include TestThreadHelperBase::TestThreadHelperBase(ThreadObjectBase *threadObject) { Q_ASSERT(threadObject); mThread = new QThread; mThreadObject = threadObject; mThreadObject->moveToThread(mThread); QEventLoop loop; QObject::connect(mThread, SIGNAL(started()), &loop, SLOT(quit())); QTimer::singleShot(0, mThread, SLOT(start())); loop.exec(); } TestThreadHelperBase::~TestThreadHelperBase() { QMetaObject::invokeMethod(mThreadObject, "deleteLater"); mThread->quit(); mThread->wait(); mThread->deleteLater(); QCoreApplication::processEvents(); } void TestThreadHelperBase::executeCallback() { QEventLoop loop; QObject::connect(mThreadObject, SIGNAL(callbackExecutionFinished()), &loop, SLOT(quit())); QMetaObject::invokeMethod(mThreadObject, "executeCallback"); loop.exec(); } #include "_gen/test-thread-helper.h.moc.hpp" telepathy-qt-0.9.6.1/tests/lib/test-thread-helper.h0000644000175100017520000000336112530423576023507 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_tests_lib_test_thread_helper_h_HEADER_GUARD_ #define _TelepathyQt_tests_lib_test_thread_helper_h_HEADER_GUARD_ #include #include #include #include class ThreadObjectBase : public QObject { Q_OBJECT public Q_SLOTS: virtual void executeCallback() = 0; Q_SIGNALS: void callbackExecutionFinished(); }; template class ThreadObject : public ThreadObjectBase { public: typedef Tp::Callback1 Callback; Callback mCallback; virtual void executeCallback() { Q_ASSERT(mCallback.isValid()); Q_ASSERT(QThread::currentThread() != QCoreApplication::instance()->thread()); mCallback(mContext); Q_EMIT callbackExecutionFinished(); } private: Context mContext; }; class TestThreadHelperBase { public: virtual ~TestThreadHelperBase(); protected: TestThreadHelperBase(ThreadObjectBase *threadObject); void executeCallback(); protected: QThread *mThread; ThreadObjectBase *mThreadObject; }; template class TestThreadHelper : public TestThreadHelperBase { public: TestThreadHelper() : TestThreadHelperBase(new ThreadObject()) { } void executeCallback(typename ThreadObject::Callback const & cb) { static_cast*>(mThreadObject)->mCallback = cb; TestThreadHelperBase::executeCallback(); } }; #define TEST_THREAD_HELPER_EXECUTE(helper, callback) \ do { \ (helper)->executeCallback(Tp::ptrFun(callback)); \ if (QTest::currentTestFailed()) { \ return; \ } \ } while(0) #endif // _TelepathyQt_tests_lib_test_thread_helper_h_HEADER_GUARD_ telepathy-qt-0.9.6.1/tests/lib/python/0000755000175100017520000000000012530423576021153 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/python/account-manager.py0000755000175100017520000003724312530423576024605 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # # A small implementation of a Telepathy AccountManager. import sys import re import dbus from dbus.bus import NAME_FLAG_DO_NOT_QUEUE, REQUEST_NAME_REPLY_EXISTS from dbus.mainloop.glib import DBusGMainLoop from dbus.service import Object, method, signal from gobject import MainLoop TP = 'org.freedesktop.Telepathy' AM_IFACE = TP + '.AccountManager' AM_BUS_NAME = AM_IFACE AM_OBJECT_PATH = '/' + AM_IFACE.replace('.', '/') ACCOUNT_IFACE = TP + '.Account' ACCOUNT_IFACE_AVATAR_IFACE = ACCOUNT_IFACE + '.Interface.Avatar' ACCOUNT_OBJECT_PATH_BASE = '/' + ACCOUNT_IFACE.replace('.', '/') + '/' Connection_Status_Connected = dbus.UInt32(0) Connection_Status_Connecting = dbus.UInt32(1) Connection_Status_Disconnected = dbus.UInt32(2) Connection_Status_Reason_None_Specified = dbus.UInt32(0) Connection_Status_Reason_Requested = dbus.UInt32(1) Connection_Status_Reason_Network_Error = dbus.UInt32(2) Connection_Presence_Type_Offline = dbus.UInt32(1) Connection_Presence_Type_Available = dbus.UInt32(2) VALID_CONNECTION_MANAGER_NAME = re.compile(r'^[A-Za-z0-9][_A-Za-z0-9]+$') VALID_PROTOCOL_NAME = re.compile(r'^[A-Za-z0-9][-A-Za-z0-9]+$') TELEPATHY_ERROR = "org.freedesktop.Telepathy.Error" TELEPATHY_ERROR_DISCONNECTED = TELEPATHY_ERROR + ".Disconnected" TELEPATHY_ERROR_CANCELLED = TELEPATHY_ERROR + ".Cancelled" TELEPATHY_ERROR_NETWORK_ERROR = TELEPATHY_ERROR + ".NetworkError" class AccountManager(Object): def __init__(self, bus=None): #: map from object path to Account self._valid_accounts = {} #: map from object path to Account self._invalid_accounts = {} if bus is None: bus = dbus.SessionBus() ret = bus.request_name(AM_BUS_NAME, NAME_FLAG_DO_NOT_QUEUE) if ret == REQUEST_NAME_REPLY_EXISTS: raise dbus.NameExistsException(AM_BUS_NAME) Object.__init__(self, bus, AM_OBJECT_PATH) def _am_props(self): return dbus.Dictionary({ 'Interfaces': dbus.Array([], signature='s'), 'ValidAccounts': dbus.Array(self._valid_accounts.keys(), signature='o'), 'InvalidAccounts': dbus.Array(self._invalid_accounts.keys(), signature='o'), 'SupportedAccountProperties': dbus.Array([ACCOUNT_IFACE + '.Enabled'], signature='s'), }, signature='sv') @method(dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}') def GetAll(self, iface): if iface == AM_IFACE: return self._am_props() else: raise ValueError('No such interface') @method(dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v') def Get(self, iface, prop): if iface == AM_IFACE: props = self._am_props() else: raise ValueError('No such interface') if prop in props: return props[prop] else: raise ValueError('No such property') @method(dbus.PROPERTIES_IFACE, in_signature='ssv') def Set(self, iface, prop, value): raise NotImplementedError('No mutable properties') @signal(AM_IFACE, signature='ob') def AccountValidityChanged(self, path, valid): if valid: assert path in self._invalid_accounts assert path not in self._valid_accounts self._valid_accounts[path] = self._invalid_accounts.pop(path) else: assert path in self._valid_accounts assert path not in self._invalid_accounts self._invalid_accounts[path] = self._valid_accounts.pop(path) print "Emitting AccountValidityChanged(%s, %s)" % (path, valid) @signal(AM_IFACE, signature='o') def AccountRemoved(self, path): assert path in self._valid_accounts or path in self._invalid_accounts self._valid_accounts.pop(path, None) self._invalid_accounts.pop(path, None) print "Emitting AccountRemoved(%s)" % path @method(AM_IFACE, in_signature='sssa{sv}a{sv}', out_signature='o') def CreateAccount(self, cm, protocol, display_name, parameters, properties): if not VALID_CONNECTION_MANAGER_NAME.match(cm): raise ValueError('Invalid CM name') if not VALID_PROTOCOL_NAME.match(protocol): raise ValueError('Invalid protocol name') if properties: raise ValueError('This AM does not support setting properties at' 'account creation') base = ACCOUNT_OBJECT_PATH_BASE + cm + '/' + protocol.replace('-', '_') # FIXME: This is a stupid way to generate the paths - we should # incorporate the display name somehow. However, it's spec-compliant i = 0 while 1: path = '%s/Account%d' % (base, i) if (path not in self._valid_accounts and path not in self._invalid_accounts): account = Account(self, path, '%s (account %d)' % (display_name, i), parameters) # put it in the wrong set and move it to the right one - # that's probably the simplest implementation if account._is_valid(): self._invalid_accounts[path] = account self.AccountValidityChanged(path, True) assert path not in self._invalid_accounts assert path in self._valid_accounts else: self._valid_accounts[path] = account self.AccountValidityChanged(path, False) assert path not in self._valid_accounts assert path in self._invalid_accounts return path i += 1 raise AssertionError('Not reached') class Account(Object): def __init__(self, am, path, display_name, parameters): Object.__init__(self, am.connection, path) self._am = am self._connection = dbus.ObjectPath('/') self._connection_status = Connection_Status_Disconnected self._connection_status_reason = Connection_Status_Reason_None_Specified self._connection_error = u'' self._connection_error_details = dbus.Dictionary({}, signature='sv') self._service = u'' self._display_name = display_name self._icon = u'bob.png' self._enabled = True self._nickname = u'Bob' self._parameters = parameters self._has_been_online = False self._connect_automatically = False self._normalized_name = u'bob' self._automatic_presence = dbus.Struct( (Connection_Presence_Type_Available, 'available', ''), signature='uss') self._current_presence = dbus.Struct( (Connection_Presence_Type_Offline, 'offline', ''), signature='uss') self._requested_presence = dbus.Struct( (Connection_Presence_Type_Offline, 'offline', ''), signature='uss') self._avatar = dbus.Struct( (dbus.ByteArray(''), 'image/png'), signature='ays') self._interfaces = [ACCOUNT_IFACE_AVATAR_IFACE,] def _is_valid(self): return True @method(ACCOUNT_IFACE, in_signature='a{sv}as', out_signature='as') def UpdateParameters(self, set_, unset): print ("%s: entering UpdateParameters(\n %r,\n %r \n)" % (self.__dbus_object_path__, set_, unset)) for (key, value) in set_.iteritems(): self._parameters[key] = value for key in unset: self._parameters.pop(key, None) print ("%s: UpdateParameters(...) -> success" % self.__dbus_object_path__) self.AccountPropertyChanged({'Parameters': self._parameters}) return [] @signal(ACCOUNT_IFACE, signature='a{sv}') def AccountPropertyChanged(self, delta): print ("%s: emitting AccountPropertyChanged(\n %r \n)" % (self.__dbus_object_path__, delta)) @signal(ACCOUNT_IFACE_AVATAR_IFACE, signature='') def AvatarChanged(self): print ("%s: emitting AvatarChanged" % (self.__dbus_object_path__)) @method(ACCOUNT_IFACE, in_signature='', out_signature='') def Remove(self): print "%s: entering Remove()" % self.__dbus_object_path__ self.Removed() self.remove_from_connection() print "%s: Remove() -> success" % self.__dbus_object_path__ @signal(ACCOUNT_IFACE, signature='') def Removed(self): self._am.AccountRemoved(self.__dbus_object_path__) print "%s: Emitting Removed()" % self.__dbus_object_path__ def _account_props(self): return dbus.Dictionary({ 'Interfaces': dbus.Array(self._interfaces, signature='s'), 'Service': self._service, 'DisplayName': self._display_name, 'Icon': self._icon, 'Valid': self._is_valid(), 'Enabled': self._enabled, 'Nickname': self._nickname, 'Parameters': self._parameters, 'AutomaticPresence': self._automatic_presence, 'CurrentPresence': self._current_presence, 'RequestedPresence': self._requested_presence, 'HasBeenOnline': self._has_been_online, 'ConnectAutomatically': self._connect_automatically, 'Connection': self._connection, 'ConnectionStatus': self._connection_status, 'ConnectionStatusReason': self._connection_status_reason, 'ConnectionError': self._connection_error, 'ConnectionErrorDetails': self._connection_error_details, 'NormalizedName': self._normalized_name, }, signature='sv') def _account_avatar_props(self): return dbus.Dictionary({ 'Avatar': self._avatar }, signature='sv') @method(dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}') def GetAll(self, iface): if iface == ACCOUNT_IFACE: return self._account_props() elif iface == ACCOUNT_IFACE_AVATAR_IFACE: return self._account_avatar_props() else: raise ValueError('No such interface') @method(dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v') def Get(self, iface, prop): if iface == ACCOUNT_IFACE: props = self._account_props() elif iface == ACCOUNT_IFACE_AVATAR_IFACE: props = self._account_avatar_props() else: raise ValueError('No such interface') if prop in props: return props[prop] else: raise ValueError('No such property') @method(dbus.PROPERTIES_IFACE, in_signature='ssv', byte_arrays=True) def Set(self, iface, prop, value): if iface == ACCOUNT_IFACE: props = {} if prop == 'Service': self._service = unicode(value) elif prop == 'DisplayName': self._display_name = unicode(value) elif prop == 'Icon': self._icon = unicode(value) elif prop == 'Enabled': self._enabled = bool(value) elif prop == 'Nickname': self._nickname = unicode(value) elif prop == 'AutomaticPresence': self._automatic_presence = dbus.Struct( (dbus.UInt32(value[0]), unicode(value[1]), unicode(value[2])), signature='uss') elif prop == 'RequestedPresence': self._requested_presence = dbus.Struct( (dbus.UInt32(value[0]), unicode(value[1]), unicode(value[2])), signature='uss') # pretend to put the account online, if the presence != offline if value[0] != Connection_Presence_Type_Offline: # simulate that we are connecting/changing presence props["ChangingPresence"] = True if self._connection_status == Connection_Status_Disconnected: self._connection_status = Connection_Status_Connecting props["ConnectionStatus"] = self._connection_status props[prop] = self._account_props()[prop] self.AccountPropertyChanged(props) props["ChangingPresence"] = False if "(deny)" in self._requested_presence[2]: self._connection_status = Connection_Status_Disconnected self._connection_status_reason = Connection_Status_Reason_Network_Error self._connection_error = TELEPATHY_ERROR_NETWORK_ERROR self._connection_error_details = dbus.Dictionary( {'debug-message': u'You asked for it'}, signature='sv') self._current_presence = dbus.Struct( (Connection_Presence_Type_Offline, 'offline', ''), signature='uss') else: self._connection_status = Connection_Status_Connected self._connection_status_reason = Connection_Status_Reason_None_Specified self._connection_error = u'' self._connection_error_details = dbus.Dictionary({}, signature='sv') self._current_presence = self._requested_presence if self._has_been_online == False: self._has_been_online = True props["HasBeenOnline"] = self._has_been_online else: self._connection_status = Connection_Status_Disconnected self._connection_status_reason = Connection_Status_Reason_Requested self._connection_error = TELEPATHY_ERROR_CANCELLED self._connection_error_details = dbus.Dictionary( {'debug-message': u'You asked for it'}, signature='sv') self._current_presence = dbus.Struct( (Connection_Presence_Type_Offline, 'offline', ''), signature='uss') props["ConnectionStatus"] = self._connection_status props["ConnectionStatusReason"] = self._connection_status_reason props["ConnectionError"] = self._connection_error props["ConnectionErrorDetails"] = self._connection_error_details props["CurrentPresence"] = self._current_presence elif prop == 'ConnectAutomatically': self._connect_automatically = bool(value) elif prop == 'Connection': self._connection = dbus.ObjectPath(value) else: raise ValueError('Read-only or nonexistent property') props[prop] = self._account_props()[prop] self.AccountPropertyChanged(props) elif iface == ACCOUNT_IFACE_AVATAR_IFACE: if prop == 'Avatar': self._avatar = dbus.Struct( (dbus.ByteArray(value[0]), unicode(value[1])), signature='ays') self.AvatarChanged() else: raise ValueError('Nonexistent property') else: raise ValueError('No such interface') if __name__ == '__main__': DBusGMainLoop(set_as_default=True) try: am = AccountManager() except dbus.NameExistsException: print >> sys.stderr, 'AccountManager already running' sys.exit(1) print "AccountManager running..." mainloop = MainLoop() mainloop.run() telepathy-qt-0.9.6.1/tests/lib/test.h0000644000175100017520000000404612530423576020766 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_tests_lib_test_h_HEADER_GUARD_ #define _TelepathyQt_tests_lib_test_h_HEADER_GUARD_ #include #include #include #include #include namespace Tp { class DBusProxy; } class Test : public QObject { Q_OBJECT public: Test(QObject *parent = 0); virtual ~Test(); QEventLoop *mLoop; void processDBusQueue(Tp::DBusProxy *proxy); // The last error received in expectFailure() QString mLastError; QString mLastErrorMessage; protected: template bool waitForProperty(Tp::PendingVariant *pv, T *value); protected Q_SLOTS: void expectSuccessfulCall(QDBusPendingCallWatcher*); void expectSuccessfulCall(Tp::PendingOperation*); void expectFailure(Tp::PendingOperation*); void expectSuccessfulProperty(Tp::PendingOperation *op); void onWatchdog(); virtual void initTestCaseImpl(); virtual void initImpl(); virtual void cleanupImpl(); virtual void cleanupTestCaseImpl(); private: // The property retrieved by expectSuccessfulProperty() QVariant mPropertyValue; }; template bool Test::waitForProperty(Tp::PendingVariant *pv, T *value) { connect(pv, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulProperty(Tp::PendingOperation*))); if (mLoop->exec() == 1000) { *value = qdbus_cast(mPropertyValue); return true; } else { *value = T(); return false; } } #define TEST_VERIFY_OP(op) \ if (!op->isFinished()) { \ qWarning() << "unfinished"; \ mLoop->exit(1); \ return; \ } \ if (op->isError()) { \ qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); \ mLoop->exit(2); \ return; \ } \ if (!op->isValid()) { \ qWarning() << "inconsistent results"; \ mLoop->exit(3); \ return; \ } \ qDebug() << "finished"; #endif // _TelepathyQt_tests_lib_test_h_HEADER_GUARD_ telepathy-qt-0.9.6.1/tests/lib/glib-helpers/0000755000175100017520000000000012530423576022207 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/lib/glib-helpers/test-conn-helper.h0000644000175100017520000001001212530423576025541 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_tests_lib_glib_helpers_test_conn_helper_h_HEADER_GUARD_ #define _TelepathyQt_tests_lib_glib_helpers_test_conn_helper_h_HEADER_GUARD_ #include #include #include #include #include #include namespace Tp { class PendingContacts; } class TestConnHelper : public QObject { Q_OBJECT public: TestConnHelper(Test *parent, GType gType, const QString &account, const QString &protocol); TestConnHelper(Test *parent, GType gType, const char *firstPropertyName, ...); TestConnHelper(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const QString &account, const QString &protocol); TestConnHelper(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const char *firstPropertyName, ...); virtual ~TestConnHelper(); GObject *service() const { return mService; } Tp::ConnectionPtr client() const { return mClient; } QString objectPath() const; bool isValid() const; bool isReady(const Tp::Features &features = Tp::Features()) const; bool enableFeatures(const Tp::Features &features); bool connect(const Tp::Features &features = Tp::Features()); bool disconnect(); QList contacts(const QStringList &ids, const Tp::Features &features = Tp::Features()); QList contacts(const Tp::UIntList &handles, const Tp::Features &features = Tp::Features()); QList upgradeContacts(const QList &contacts, const Tp::Features &features = Tp::Features()); Tp::ChannelPtr createChannel(const QVariantMap &request); Tp::ChannelPtr createChannel(const QString &channelType, const Tp::ContactPtr &target); Tp::ChannelPtr createChannel(const QString &channelType, Tp::HandleType targetHandleType, uint targetHandle); Tp::ChannelPtr createChannel(const QString &channelType, Tp::HandleType targetHandleType, const QString &targetID); Tp::ChannelPtr ensureChannel(const QVariantMap &request); Tp::ChannelPtr ensureChannel(const QString &channelType, const Tp::ContactPtr &target); Tp::ChannelPtr ensureChannel(const QString &channelType, Tp::HandleType targetHandleType, uint targetHandle); Tp::ChannelPtr ensureChannel(const QString &channelType, Tp::HandleType targetHandleType, const QString &targetID); private Q_SLOTS: void expectConnInvalidated(); void expectContactsForIdentifiersFinished(Tp::PendingOperation *op); void expectContactsForHandlesFinished(Tp::PendingOperation *op); void expectUpgradeContactsFinished(Tp::PendingOperation *op); void expectCreateChannelFinished(Tp::PendingOperation *op); void expectEnsureChannelFinished(Tp::PendingOperation *op); private: void init(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const char *firstPropertyName, ...); void init(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const char *firstPropertyName, va_list varArgs); void expectPendingContactsFinished(Tp::PendingContacts *pc); Test *mParent; QEventLoop *mLoop; GObject *mService; Tp::ConnectionPtr mClient; // The property retrieved by expectPendingContactsFinished() QList mContacts; // Property used by expectPendingContactsFinished() Tp::Features mContactFeatures; // The property retrieved by expectCreate/EnsureChannelFinished() Tp::ChannelPtr mChannel; }; #endif // _TelepathyQt_tests_lib_glib_helpers_test_conn_helper_h_HEADER_GUARD_ telepathy-qt-0.9.6.1/tests/lib/glib-helpers/CMakeLists.txt0000644000175100017520000000145112530423576024750 0ustar00kaffeinekaffeine00000000000000include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${TELEPATHY_GLIB_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${GOBJECT_INCLUDE_DIR} ${DBUS_INCLUDE_DIR}) add_definitions(-DQT_NO_KEYWORDS) if(ENABLE_TP_GLIB_TESTS) file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen") tpqt_generate_moc_i(test-conn-helper.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/test-conn-helper.moc.hpp) add_library(tp-qt-tests-glib-helpers test-conn-helper.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/test-conn-helper.moc.hpp) target_link_libraries(tp-qt-tests-glib-helpers ${TELEPATHY_GLIB_LIBRARIES} ${GOBJECT_LIBRARIES} ${GLIB2_LIBRARIES} ${DBUS_GLIB_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} telepathy-qt${QT_VERSION_MAJOR}) endif(ENABLE_TP_GLIB_TESTS) telepathy-qt-0.9.6.1/tests/lib/glib-helpers/test-conn-helper.cpp0000644000175100017520000003227512530423576026113 0ustar00kaffeinekaffeine00000000000000#include "tests/lib/glib-helpers/test-conn-helper.h" #include "tests/lib/glib-helpers/_gen/test-conn-helper.moc.hpp" #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include TestConnHelper::TestConnHelper(Test *parent, GType gType, const QString &account, const QString &protocol) : QObject(parent) { Tp::ChannelFactoryPtr channelFactory = Tp::ChannelFactory::create(QDBusConnection::sessionBus()); Tp::ContactFactoryPtr contactFactory = Tp::ContactFactory::create(); init(parent, channelFactory, contactFactory, gType, "account", account.toLatin1().constData(), "protocol", protocol.toLatin1().constData(), NULL); } TestConnHelper::TestConnHelper(Test *parent, GType gType, const char *firstPropertyName, ...) : QObject(parent) { Tp::ChannelFactoryPtr channelFactory = Tp::ChannelFactory::create(QDBusConnection::sessionBus()); Tp::ContactFactoryPtr contactFactory = Tp::ContactFactory::create(); va_list varArgs; va_start(varArgs, firstPropertyName); init(parent, channelFactory, contactFactory, gType, firstPropertyName, varArgs); va_end(varArgs); } TestConnHelper::TestConnHelper(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const QString &account, const QString &protocol) : QObject(parent) { init(parent, channelFactory, contactFactory, gType, "account", account.toLatin1().constData(), "protocol", protocol.toLatin1().constData(), NULL); } TestConnHelper::TestConnHelper(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const char *firstPropertyName, ...) : QObject(parent) { va_list varArgs; va_start(varArgs, firstPropertyName); init(parent, channelFactory, contactFactory, gType, firstPropertyName, varArgs); va_end(varArgs); } TestConnHelper::~TestConnHelper() { disconnect(); if (mService != 0) { g_object_unref(mService); mService = 0; } } void TestConnHelper::init(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const char *firstPropertyName, ...) { va_list varArgs; va_start(varArgs, firstPropertyName); init(parent, channelFactory, contactFactory, gType, firstPropertyName, varArgs); va_end(varArgs); } void TestConnHelper::init(Test *parent, const Tp::ChannelFactoryConstPtr &channelFactory, const Tp::ContactFactoryConstPtr &contactFactory, GType gType, const char *firstPropertyName, va_list varArgs) { mParent = parent; mLoop = parent->mLoop; mService = g_object_new_valist(gType, firstPropertyName, varArgs); QVERIFY(mService != 0); gchar *connBusName; gchar *connPath; GError *error = 0; QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mService), "testcm", &connBusName, &connPath, &error)); QVERIFY(error == 0); QVERIFY(connBusName != 0); QVERIFY(connPath != 0); mClient = Tp::Connection::create(QLatin1String(connBusName), QLatin1String(connPath), channelFactory, contactFactory); QCOMPARE(mClient->isReady(), false); g_free(connBusName); g_free(connPath); } QString TestConnHelper::objectPath() const { return mClient->objectPath(); } bool TestConnHelper::isValid() const { return mClient->isValid(); } bool TestConnHelper::isReady(const Tp::Features &features) const { return mClient->isReady(features); } bool TestConnHelper::enableFeatures(const Tp::Features &features) { mLoop->processEvents(); QObject::connect(mClient->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), mParent, SLOT(expectSuccessfulCall(Tp::PendingOperation*))); return ((mLoop->exec() == 0) && mClient->isReady(features)); } bool TestConnHelper::connect(const Tp::Features &features) { mLoop->processEvents(); QObject::connect(mClient->lowlevel()->requestConnect(features), SIGNAL(finished(Tp::PendingOperation*)), mParent, SLOT(expectSuccessfulCall(Tp::PendingOperation*))); return ((mLoop->exec() == 0) && (mClient->status() == Tp::ConnectionStatusConnected) && mClient->isReady(features)); } bool TestConnHelper::disconnect() { if (!mClient->isValid()) { return false; } mLoop->processEvents(); QObject::connect(mClient.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(expectConnInvalidated())); tp_base_connection_change_status(TP_BASE_CONNECTION(mService), TP_CONNECTION_STATUS_DISCONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); return ((mLoop->exec() == 0) && !mClient->isValid() && (mClient->status() == Tp::ConnectionStatusDisconnected)); } QList TestConnHelper::contacts(const QStringList &ids, const Tp::Features &features) { mLoop->processEvents(); QList ret; Tp::PendingContacts *pc = mClient->contactManager()->contactsForIdentifiers(ids, features); mContactFeatures = features; QObject::connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectContactsForIdentifiersFinished(Tp::PendingOperation*))); if (mLoop->exec() == 0) { ret = mContacts; } mContactFeatures.clear(); mContacts.clear(); return ret; } QList TestConnHelper::contacts(const Tp::UIntList &handles, const Tp::Features &features) { mLoop->processEvents(); QList ret; Tp::PendingContacts *pc = mClient->contactManager()->contactsForHandles(handles, features); mContactFeatures = features; QObject::connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectContactsForHandlesFinished(Tp::PendingOperation*))); if (mLoop->exec() == 0) { ret = mContacts; } mContactFeatures.clear(); mContacts.clear(); return ret; } QList TestConnHelper::upgradeContacts(const QList &contacts, const Tp::Features &features) { mLoop->processEvents(); QList ret; Tp::PendingContacts *pc = mClient->contactManager()->upgradeContacts(contacts, features); mContactFeatures = features; QObject::connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectUpgradeContactsFinished(Tp::PendingOperation*))); if (mLoop->exec() == 0) { ret = mContacts; } mContactFeatures.clear(); mContacts.clear(); return ret; } Tp::ChannelPtr TestConnHelper::createChannel(const QVariantMap &request) { mLoop->processEvents(); Tp::ChannelPtr ret; Tp::PendingChannel *pc = mClient->lowlevel()->createChannel(request); QObject::connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectCreateChannelFinished(Tp::PendingOperation*))); if (mLoop->exec() == 0) { ret = mChannel; } mChannel.reset(); return ret; } Tp::ChannelPtr TestConnHelper::createChannel(const QString &channelType, const Tp::ContactPtr &target) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), target->handle()[0]); return createChannel(request); } Tp::ChannelPtr TestConnHelper::createChannel(const QString &channelType, Tp::HandleType targetHandleType, uint targetHandle) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) targetHandleType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), targetHandle); return createChannel(request); } Tp::ChannelPtr TestConnHelper::createChannel(const QString &channelType, Tp::HandleType targetHandleType, const QString &targetID) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) targetHandleType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), targetID); return ensureChannel(request); } Tp::ChannelPtr TestConnHelper::ensureChannel(const QVariantMap &request) { mLoop->processEvents(); Tp::ChannelPtr ret; Tp::PendingChannel *pc = mClient->lowlevel()->ensureChannel(request); QObject::connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectEnsureChannelFinished(Tp::PendingOperation*))); if (mLoop->exec() == 0) { ret = mChannel; } mChannel.reset(); return ret; } Tp::ChannelPtr TestConnHelper::ensureChannel(const QString &channelType, const Tp::ContactPtr &target) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), target->handle()[0]); return ensureChannel(request); } Tp::ChannelPtr TestConnHelper::ensureChannel(const QString &channelType, Tp::HandleType targetHandleType, uint targetHandle) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) targetHandleType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), targetHandle); return ensureChannel(request); } Tp::ChannelPtr TestConnHelper::ensureChannel(const QString &channelType, Tp::HandleType targetHandleType, const QString &targetID) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) targetHandleType); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), targetID); return ensureChannel(request); } void TestConnHelper::expectConnInvalidated() { mLoop->exit(0); } void TestConnHelper::expectContactsForIdentifiersFinished(Tp::PendingOperation *op) { Tp::PendingContacts *pc = qobject_cast(op); QCOMPARE(pc->isForHandles(), false); QCOMPARE(pc->isForIdentifiers(), true); QCOMPARE(pc->isUpgrade(), false); expectPendingContactsFinished(pc); } void TestConnHelper::expectContactsForHandlesFinished(Tp::PendingOperation *op) { Tp::PendingContacts *pc = qobject_cast(op); QCOMPARE(pc->isForHandles(), true); QCOMPARE(pc->isForIdentifiers(), false); QCOMPARE(pc->isUpgrade(), false); expectPendingContactsFinished(pc); } void TestConnHelper::expectUpgradeContactsFinished(Tp::PendingOperation *op) { Tp::PendingContacts *pc = qobject_cast(op); QCOMPARE(pc->isUpgrade(), true); expectPendingContactsFinished(pc); } void TestConnHelper::expectPendingContactsFinished(Tp::PendingContacts *pc) { QCOMPARE(pc->manager(), mClient->contactManager()); if (pc->isError()) { qWarning().nospace() << pc->errorName() << ": " << pc->errorMessage(); mContacts.clear(); mLoop->exit(1); } else { mContacts = pc->contacts(); Q_FOREACH (const Tp::ContactPtr &contact, mContacts) { QVERIFY(contact->requestedFeatures().contains(mContactFeatures)); } mLoop->exit(0); } } void TestConnHelper::expectCreateChannelFinished(Tp::PendingOperation *op) { if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mChannel.reset(); mLoop->exit(1); } else { Tp::PendingChannel *pc = qobject_cast(op); QCOMPARE(pc->yours(), true); mChannel = pc->channel(); mLoop->exit(0); } } void TestConnHelper::expectEnsureChannelFinished(Tp::PendingOperation *op) { if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mChannel.reset(); mLoop->exit(1); } else { Tp::PendingChannel *pc = qobject_cast(op); QCOMPARE(pc->yours(), false); mChannel = pc->channel(); mLoop->exit(0); } } telepathy-qt-0.9.6.1/tests/ptr.cpp0000644000175100017520000002103412530423576020375 0ustar00kaffeinekaffeine00000000000000#include #include #include using namespace Tp; class TestSharedPtr : public QObject { Q_OBJECT private Q_SLOTS: void testSharedPtrDict(); void testSharedPtrBoolConversion(); void testWeakPtrBoolConversion(); void testThreadSafety(); }; class Data; typedef SharedPtr DataPtr; class Data : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(Data); public: static DataPtr create() { return DataPtr(new Data()); } static DataPtr createNull() { return DataPtr(0); } private: Data() {} }; void TestSharedPtr::testSharedPtrDict() { QHash dict; DataPtr nullPtr = Data::createNull(); dict[nullPtr] = 1; QCOMPARE(dict.size(), 1); QCOMPARE(dict[nullPtr], 1); DataPtr validPtr1 = Data::create(); QCOMPARE(qHash(validPtr1.data()), qHash(validPtr1)); dict[validPtr1] = 2; QCOMPARE(dict.size(), 2); QCOMPARE(dict[nullPtr], 1); QCOMPARE(dict[validPtr1], 2); DataPtr validPtr2 = validPtr1; QCOMPARE(validPtr1.data(), validPtr2.data()); QCOMPARE(qHash(validPtr1), qHash(validPtr2)); dict[validPtr2] = 3; QCOMPARE(dict.size(), 2); QCOMPARE(dict[nullPtr], 1); QCOMPARE(dict[validPtr1], 3); QCOMPARE(dict[validPtr2], 3); DataPtr validPtrAlternative = Data::create(); QVERIFY(validPtr1.data() != validPtrAlternative.data()); QVERIFY(validPtr1 != validPtrAlternative); QVERIFY(qHash(validPtr1) != qHash(validPtrAlternative)); dict[validPtrAlternative] = 4; QCOMPARE(dict.size(), 3); QCOMPARE(dict[nullPtr], 1); QCOMPARE(dict[validPtr1], 3); QCOMPARE(dict[validPtr2], 3); QCOMPARE(dict[validPtrAlternative], 4); } void TestSharedPtr::testSharedPtrBoolConversion() { DataPtr nullPtr1; DataPtr nullPtr2 = Data::createNull(); DataPtr validPtr1 = Data::create(); DataPtr validPtr2 = validPtr1; DataPtr validPtrAlternative = Data::create(); // Boolean conditions QVERIFY(!validPtr1.isNull()); QVERIFY(nullPtr1.isNull()); QVERIFY(validPtr1 ? true : false); QVERIFY(!validPtr1 ? false : true); QVERIFY(nullPtr1 ? false : true); QVERIFY(!nullPtr1 ? true : false); QVERIFY(validPtr1); QVERIFY(!!validPtr1); QVERIFY(!nullPtr1); // Supported operators QVERIFY(nullPtr1 == nullPtr1); QVERIFY(nullPtr1 == nullPtr2); QVERIFY(validPtr1 == validPtr1); QVERIFY(validPtr1 == validPtr2); QVERIFY(validPtr1 != validPtrAlternative); QCOMPARE(validPtr1 == validPtrAlternative, false); QVERIFY(validPtr1 != nullPtr1); QCOMPARE(validPtr1 == nullPtr1, false); // Supported conversions, constructors and copy operators bool trueBool1 = validPtr1; QVERIFY(trueBool1); bool trueBool2(validPtr2); QVERIFY(trueBool2); trueBool1 = validPtrAlternative; QVERIFY(trueBool1); bool falseBool1 = nullPtr1; QVERIFY(!falseBool1); bool falseBool2(nullPtr2); QVERIFY(!falseBool2); falseBool1 = nullPtr1; QVERIFY(!falseBool1); #if 0 // Unsupported operators, this should not compile bool condition; condition = validPtr1 > nullPtr1; condition = validPtr1 + nullPtr1; // Unsupported conversions, this should not compile int validInt1 = validPtr1; int validInt2(validPtr1); validInt1 = validPtr1; int nullInt1 = nullPtr1; int nullInt2(nullPtr1); nullInt1 = nullPtr1; float validFloat1 = validPtr1; float validFloat2(validPtr1); validFloat1 = validPtr1; float nullFloat1 = nullPtr1; float nullFloat2(nullPtr1); nullFloat1 = nullPtr1; Q_UNUSED(validInt1); Q_UNUSED(validInt2); Q_UNUSED(nullInt1); Q_UNUSED(nullInt2); Q_UNUSED(validFloat1); Q_UNUSED(validFloat2); Q_UNUSED(nullFloat1); Q_UNUSED(nullFloat2); #endif } void TestSharedPtr::testWeakPtrBoolConversion() { WeakPtr nullPtr1; DataPtr strongNullPtr2 = Data::createNull(); WeakPtr nullPtr2 = strongNullPtr2; DataPtr strongValidPtr1 = Data::create(); WeakPtr validPtr1 = strongValidPtr1; WeakPtr validPtr2 = validPtr1; DataPtr strongValidPtrAlternative = Data::create(); WeakPtr validPtrAlternative = strongValidPtrAlternative; // Boolean conditions QVERIFY(!validPtr1.isNull()); QVERIFY(nullPtr1.isNull()); QVERIFY(validPtr1 ? true : false); QVERIFY(!validPtr1 ? false : true); QVERIFY(nullPtr1 ? false : true); QVERIFY(!nullPtr1 ? true : false); QVERIFY(validPtr1); QVERIFY(!!validPtr1); QVERIFY(!nullPtr1); // Supported operators QVERIFY(nullPtr1 == nullPtr1); QVERIFY(nullPtr1 == nullPtr2); QVERIFY(validPtr1 == validPtr1); QVERIFY(validPtr1 == validPtr2); // XXX why not comparison operator? //QVERIFY(validPtr1 != validPtrAlternative); //QCOMPARE(validPtr1 == validPtrAlternative, false); QVERIFY(validPtr1 != nullPtr1); QCOMPARE(validPtr1 == nullPtr1, false); // Supported conversions, constructors and copy operators bool trueBool1 = validPtr1; QVERIFY(trueBool1); bool trueBool2(validPtr2); QVERIFY(trueBool2); trueBool1 = validPtrAlternative; QVERIFY(trueBool1); bool falseBool1 = nullPtr1; QVERIFY(!falseBool1); bool falseBool2(nullPtr2); QVERIFY(!falseBool2); falseBool1 = nullPtr1; QVERIFY(!falseBool1); #if 0 // Unsupported operators, this should not compile bool condition; condition = validPtr1 > nullPtr1; condition = validPtr1 + nullPtr1; // Unsupported conversions, this should not compile int validInt1 = validPtr1; int validInt2(validPtr1); validInt1 = validPtr1; int nullInt1 = nullPtr1; int nullInt2(nullPtr1); nullInt1 = nullPtr1; float validFloat1 = validPtr1; float validFloat2(validPtr1); validFloat1 = validPtr1; float nullFloat1 = nullPtr1; float nullFloat2(nullPtr1); nullFloat1 = nullPtr1; Q_UNUSED(validInt1); Q_UNUSED(validInt2); Q_UNUSED(nullInt1); Q_UNUSED(nullInt2); Q_UNUSED(validFloat1); Q_UNUSED(validFloat2); Q_UNUSED(nullFloat1); Q_UNUSED(nullFloat2); #endif // Test the boolean operations after the main SharedPtr is gone strongValidPtrAlternative.reset(); QVERIFY(validPtrAlternative.isNull()); QVERIFY(validPtrAlternative ? false : true); QVERIFY(!validPtrAlternative ? true : false); } class Thread : public QThread { public: Thread(const DataPtr &ptr, QObject *parent = 0) : QThread(parent), mPtr(ptr) {} void run() { QVERIFY(!mPtr.isNull()); for (int i = 0; i < 200; ++i) { WeakPtr wptrtmp(mPtr); QVERIFY(!wptrtmp.isNull()); DataPtr ptrtmp(wptrtmp); wptrtmp = WeakPtr(); QVERIFY(!ptrtmp.isNull()); DataPtr ptrtmp2(ptrtmp); ptrtmp.reset(); QVERIFY(!ptrtmp2.isNull()); WeakPtr wptrtmp2 = ptrtmp2; ptrtmp2.reset(); QVERIFY(!wptrtmp2.isNull()); WeakPtr wptrtmp3(wptrtmp2); QVERIFY(!wptrtmp3.isNull()); wptrtmp3 = wptrtmp2; wptrtmp2 = WeakPtr(); QVERIFY(!wptrtmp3.isNull()); DataPtr ptrtmp3(wptrtmp3); wptrtmp3 = WeakPtr(); QCOMPARE(ptrtmp3.data(), mPtr.data()); QVERIFY(!ptrtmp3.isNull()); WeakPtr wptrtmp4(ptrtmp3.data()); ptrtmp3.reset(); QVERIFY(!wptrtmp4.isNull()); } } private: DataPtr mPtr; }; void TestSharedPtr::testThreadSafety() { DataPtr ptr = Data::create(); WeakPtr weakPtr(ptr); Data *savedData = ptr.data(); QVERIFY(savedData != NULL); QVERIFY(!ptr.isNull()); QVERIFY(!weakPtr.isNull()); Thread *t[5]; for (int i = 0; i < 5; ++i) { t[i] = new Thread(ptr, this); t[i]->start(); } for (int i = 0; i < 5; ++i) { t[i]->wait(); delete t[i]; } QCOMPARE(ptr.data(), savedData); QVERIFY(!ptr.isNull()); QVERIFY(!weakPtr.isNull()); for (int i = 0; i < 5; ++i) { t[i] = new Thread(ptr, this); t[i]->start(); } QVERIFY(!ptr.isNull()); QVERIFY(!weakPtr.isNull()); ptr.reset(); QVERIFY(ptr.isNull()); for (int i = 0; i < 5; ++i) { t[i]->wait(); delete t[i]; } QVERIFY(!ptr.data()); QVERIFY(ptr.isNull()); QVERIFY(weakPtr.isNull()); DataPtr promotedPtr(weakPtr); QVERIFY(!promotedPtr.data()); QVERIFY(promotedPtr.isNull()); } QTEST_MAIN(TestSharedPtr) #include "_gen/ptr.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/0000755000175100017520000000000012530423576020021 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/dbus/profile-manager.cpp0000644000175100017520000000706012530423576023600 0ustar00kaffeinekaffeine00000000000000#include #include #include #include using namespace Tp; class TestProfileManager : public Test { Q_OBJECT private Q_SLOTS: void testProfileManager(); }; void TestProfileManager::testProfileManager() { ProfileManagerPtr pm = ProfileManager::create(QDBusConnection::sessionBus()); QVERIFY(connect(pm->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pm->isReady(), true); QCOMPARE(pm->profiles().isEmpty(), false); QCOMPARE(pm->profiles().count(), 2); QCOMPARE(pm->profileForService(QLatin1String("test-profile")).isNull(), false); QCOMPARE(pm->profileForService(QLatin1String("test-profile-file-not-found")).isNull(), true); QCOMPARE(pm->profileForService(QLatin1String("test-profile-non-im-type")).isNull(), true); QCOMPARE(pm->profilesForCM(QLatin1String("testprofilecm")).isEmpty(), false); QCOMPARE(pm->profilesForCM(QLatin1String("testprofilecm")).count(), 2); QCOMPARE(pm->profilesForProtocol(QLatin1String("testprofileproto")).isEmpty(), false); QCOMPARE(pm->profilesForProtocol(QLatin1String("testprofileproto")).count(), 2); QVERIFY(connect(pm->becomeReady(ProfileManager::FeatureFakeProfiles), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pm->isReady(ProfileManager::FeatureFakeProfiles), true); QCOMPARE(pm->profiles().isEmpty(), false); QCOMPARE(pm->profiles().count(), 4); QCOMPARE(pm->profileForService(QLatin1String("spurious-normal")).isNull(), false); QCOMPARE(pm->profileForService(QLatin1String("spurious-weird")).isNull(), false); QCOMPARE(pm->profilesForCM(QLatin1String("spurious")).isEmpty(), false); QCOMPARE(pm->profilesForCM(QLatin1String("spurious")).count(), 2); QCOMPARE(pm->profilesForProtocol(QLatin1String("normal")).isEmpty(), false); QCOMPARE(pm->profilesForProtocol(QLatin1String("weird")).isEmpty(), false); ProfilePtr profile = pm->profileForService(QLatin1String("spurious-normal")); QCOMPARE(profile->type(), QLatin1String("IM")); QCOMPARE(profile->provider(), QString()); QCOMPARE(profile->name(), QLatin1String("normal")); QCOMPARE(profile->cmName(), QLatin1String("spurious")); QCOMPARE(profile->protocolName(), QLatin1String("normal")); QCOMPARE(profile->presences().isEmpty(), true); QCOMPARE(profile->parameters().isEmpty(), false); QCOMPARE(profile->parameters().count(), 1); QCOMPARE(profile->hasParameter(QLatin1String("not-found")), false); /* profile will only return CM default params, account is ignored */ QCOMPARE(profile->hasParameter(QLatin1String("account")), false); /* profile will only return CM default params, password is ignored */ QCOMPARE(profile->hasParameter(QLatin1String("password")), false); Profile::Parameter param = profile->parameter(QLatin1String("register")); QCOMPARE(param.name(), QLatin1String("register")); QCOMPARE(param.dbusSignature(), QDBusSignature(QLatin1String("b"))); QCOMPARE(param.type(), QVariant::Bool); QCOMPARE(param.value(), QVariant(true)); QCOMPARE(param.label(), QString()); QCOMPARE(param.isMandatory(), false); // Allow the PendingReadys to delete themselves mLoop->processEvents(); } QTEST_MAIN(TestProfileManager) #include "_gen/profile-manager.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/client-factories.cpp0000644000175100017520000014321512530423576023766 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; class ChannelRequestAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelRequest") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " " " \n" "") Q_PROPERTY(QDBusObjectPath Account READ Account) Q_PROPERTY(qulonglong UserActionTime READ UserActionTime) Q_PROPERTY(QString PreferredHandler READ PreferredHandler) Q_PROPERTY(Tp::QualifiedPropertyValueMapList Requests READ Requests) Q_PROPERTY(QStringList Interfaces READ Interfaces) public: ChannelRequestAdaptor(QDBusObjectPath account, qulonglong userActionTime, QString preferredHandler, QualifiedPropertyValueMapList requests, QStringList interfaces, QObject *parent) : QDBusAbstractAdaptor(parent), mAccount(account), mUserActionTime(userActionTime), mPreferredHandler(preferredHandler), mRequests(requests), mInterfaces(interfaces) { } virtual ~ChannelRequestAdaptor() { } public: // Properties inline QDBusObjectPath Account() const { return mAccount; } inline qulonglong UserActionTime() const { return mUserActionTime; } inline QString PreferredHandler() const { return mPreferredHandler; } inline QualifiedPropertyValueMapList Requests() const { return mRequests; } inline QStringList Interfaces() const { return mInterfaces; } public Q_SLOTS: // Methods void Proceed() { } void Cancel() { } Q_SIGNALS: // Signals void Failed(const QString &error, const QString &message); void Succeeded(); private: QDBusObjectPath mAccount; qulonglong mUserActionTime; QString mPreferredHandler; QualifiedPropertyValueMapList mRequests; QStringList mInterfaces; }; // Totally incomplete mini version of ChannelDispatchOperation class ChannelDispatchOperationAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelDispatchOperation") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Account READ Account) Q_PROPERTY(QDBusObjectPath Connection READ Connection) Q_PROPERTY(Tp::ChannelDetailsList Channels READ Channels) Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(QStringList PossibleHandlers READ PossibleHandlers) public: ChannelDispatchOperationAdaptor(const QDBusObjectPath &acc, const QDBusObjectPath &conn, const ChannelDetailsList &channels, const QStringList &possibleHandlers, QObject *parent) : QDBusAbstractAdaptor(parent), mAccount(acc), mConn(conn), mChannels(channels), mPossibleHandlers(possibleHandlers) { } virtual ~ChannelDispatchOperationAdaptor() { } public: // Properties inline QDBusObjectPath Account() const { return mAccount; } inline QDBusObjectPath Connection() const { return mConn; } inline ChannelDetailsList Channels() const { return mChannels; } inline QStringList Interfaces() const { return mInterfaces; } inline QStringList PossibleHandlers() const { return mPossibleHandlers; } private: QDBusObjectPath mAccount, mConn; ChannelDetailsList mChannels; QStringList mInterfaces; QStringList mPossibleHandlers; }; class MyClient : public QObject, public AbstractClientObserver, public AbstractClientApprover, public AbstractClientHandler { Q_OBJECT public: static AbstractClientPtr create(const ChannelClassSpecList &channelFilter, const AbstractClientHandler::Capabilities &capabilities, bool bypassApproval = false, bool wantsRequestNotification = false) { return AbstractClientPtr::dynamicCast(SharedPtr( new MyClient(channelFilter, capabilities, bypassApproval, wantsRequestNotification))); } MyClient(const ChannelClassSpecList &channelFilter, const AbstractClientHandler::Capabilities &capabilities, bool bypassApproval = false, bool wantsRequestNotification = false) : AbstractClientObserver(channelFilter), AbstractClientApprover(channelFilter), AbstractClientHandler(channelFilter, capabilities, wantsRequestNotification), mBypassApproval(bypassApproval) { } ~MyClient() { } void observeChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList &requestsSatisfied, const AbstractClientObserver::ObserverInfo &observerInfo) { mObserveChannelsAccount = account; mObserveChannelsConnection = connection; mObserveChannelsChannels = channels; mObserveChannelsDispatchOperation = dispatchOperation; mObserveChannelsRequestsSatisfied = requestsSatisfied; mObserveChannelsObserverInfo = observerInfo; context->setFinished(); QTimer::singleShot(0, this, SIGNAL(observeChannelsFinished())); } void addDispatchOperation(const MethodInvocationContextPtr<> &context, const ChannelDispatchOperationPtr &dispatchOperation) { mAddDispatchOperationChannels = dispatchOperation->channels(); mAddDispatchOperationDispatchOperation = dispatchOperation; context->setFinished(); QTimer::singleShot(0, this, SIGNAL(addDispatchOperationFinished())); } bool bypassApproval() const { return mBypassApproval; } void handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const AbstractClientHandler::HandlerInfo &handlerInfo) { mHandleChannelsAccount = account; mHandleChannelsConnection = connection; mHandleChannelsChannels = channels; mHandleChannelsRequestsSatisfied = requestsSatisfied; mHandleChannelsUserActionTime = userActionTime; mHandleChannelsHandlerInfo = handlerInfo; Q_FOREACH (const ChannelPtr &channel, channels) { connect(channel.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SIGNAL(channelClosed())); } context->setFinished(); QTimer::singleShot(0, this, SIGNAL(handleChannelsFinished())); } void addRequest(const ChannelRequestPtr &request) { mAddRequestRequest = request; Q_EMIT requestAdded(request); } void removeRequest(const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage) { mRemoveRequestRequest = request; mRemoveRequestErrorName = errorName; mRemoveRequestErrorMessage = errorMessage; Q_EMIT requestRemoved(request, errorName, errorMessage); } AccountPtr mObserveChannelsAccount; ConnectionPtr mObserveChannelsConnection; QList mObserveChannelsChannels; ChannelDispatchOperationPtr mObserveChannelsDispatchOperation; QList mObserveChannelsRequestsSatisfied; AbstractClientObserver::ObserverInfo mObserveChannelsObserverInfo; QList mAddDispatchOperationChannels; ChannelDispatchOperationPtr mAddDispatchOperationDispatchOperation; bool mBypassApproval; AccountPtr mHandleChannelsAccount; ConnectionPtr mHandleChannelsConnection; QList mHandleChannelsChannels; QList mHandleChannelsRequestsSatisfied; QDateTime mHandleChannelsUserActionTime; AbstractClientHandler::HandlerInfo mHandleChannelsHandlerInfo; ChannelRequestPtr mAddRequestRequest; ChannelRequestPtr mRemoveRequestRequest; QString mRemoveRequestErrorName; QString mRemoveRequestErrorMessage; Q_SIGNALS: void observeChannelsFinished(); void addDispatchOperationFinished(); void handleChannelsFinished(); void requestAdded(const Tp::ChannelRequestPtr &request); void requestRemoved(const Tp::ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage); void channelClosed(); }; class TestClientFactories : public Test { Q_OBJECT public: TestClientFactories(QObject *parent = 0) : Test(parent), mConnService(0), mBaseConnService(0), mContactRepo(0), mText1ChanService(0) { } void testObserveChannelsCommon(const AbstractClientPtr &clientObject, const QString &clientBusName, const QString &clientObjectPath); protected Q_SLOTS: void expectSignalEmission(); private Q_SLOTS: void initTestCase(); void init(); void testFactoryAccess(); void testRegister(); void testCapabilities(); void testObserveChannels(); void testAddDispatchOperation(); void testRequests(); void testHandleChannels(); void testChannelFactoryAccessors(); void cleanup(); void cleanupTestCase(); private: TpTestsContactsConnection *mConnService; TpBaseConnection *mBaseConnService; TpHandleRepoIface *mContactRepo; ExampleEchoChannel *mText1ChanService; ExampleEchoChannel *mText2ChanService; AccountManagerPtr mAM; AccountPtr mAccount; ConnectionPtr mConn; QString mText1ChanPath; QString mText2ChanPath; QString mConnName; QString mConnPath; ClientRegistrarPtr mClientRegistrar; QString mChannelDispatcherBusName; QString mChannelRequestPath; ChannelDispatchOperationAdaptor *mCDO; QString mCDOPath; AbstractClientHandler::Capabilities mClientCapabilities; AbstractClientPtr mClientObject1; QString mClientObject1BusName; QString mClientObject1Path; AbstractClientPtr mClientObject2; QString mClientObject2BusName; QString mClientObject2Path; uint mUserActionTime; }; void TestClientFactories::expectSignalEmission() { mLoop->exit(0); } void TestClientFactories::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("client-factories"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); QDBusConnection bus = QDBusConnection::sessionBus(); ChannelFactoryPtr chanFact = ChannelFactory::create(bus); chanFact->addFeaturesForTextChats(TextChannel::FeatureChatState | TextChannel::FeatureMessageQueue); chanFact->addCommonFeatures(Channel::FeatureCore); QCOMPARE(chanFact->commonFeatures().size(), 1); QCOMPARE(chanFact->featuresForTextChats().size(), 3); QVERIFY(chanFact->featuresForTextChats().contains(TextChannel::FeatureMessageQueue)); QVERIFY(chanFact->featuresForTextChats().contains(Channel::FeatureCore)); QVERIFY(!chanFact->featuresForTextChats().contains(TextChannel::FeatureMessageSentSignal)); mAM = AccountManager::create(AccountFactory::create(bus, Account::FeatureCore), ConnectionFactory::create(bus, Connection::FeatureCore | Connection::FeatureSimplePresence), chanFact); PendingReady *amReadyOp = mAM->becomeReady(); QVERIFY(amReadyOp != NULL); QVERIFY(connect(amReadyOp, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAM->isReady(), true); QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); PendingAccount *pacc = mAM->createAccount(QLatin1String("foo"), QLatin1String("bar"), QLatin1String("foobar"), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pacc->account()); mAccount = pacc->account(); gchar *name; gchar *connPath; GError *error = 0; mConnService = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "example", NULL)); QVERIFY(mConnService != 0); mBaseConnService = TP_BASE_CONNECTION(mConnService); QVERIFY(mBaseConnService != 0); QVERIFY(tp_base_connection_register(mBaseConnService, "example", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); mConn = ConnectionPtr::qObjectCast(mAccount->connectionFactory()->proxy(mConnName, mConnPath, ChannelFactory::create(bus), ContactFactory::create())->proxy()); QCOMPARE(mConn->isReady(), false); PendingReady *mConnReady = mConn->lowlevel()->requestConnect(); QVERIFY(mConnReady != NULL); QVERIFY(connect(mConnReady, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusConnected)); // create a Channel by magic, rather than doing D-Bus round-trips for it mContactRepo = tp_base_connection_get_handles(mBaseConnService, TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(mContactRepo, "someone@localhost", 0, 0); mText1ChanPath = mConnPath + QLatin1String("/TextChannel1"); QByteArray chanPath(mText1ChanPath.toLatin1()); mText1ChanService = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConnService, "object-path", chanPath.data(), "handle", handle, NULL)); mText2ChanPath = mConnPath + QLatin1String("/TextChannel2"); chanPath = mText2ChanPath.toLatin1(); mText2ChanService = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConnService, "object-path", chanPath.data(), "handle", handle, NULL)); mClientRegistrar = ClientRegistrar::create(mAM); // Fake ChannelRequest mChannelDispatcherBusName = TP_QT_IFACE_CHANNEL_DISPATCHER; mChannelRequestPath = QLatin1String("/org/freedesktop/Telepathy/ChannelRequest/Request1"); QObject *request = new QObject(this); mUserActionTime = QDateTime::currentDateTime().toTime_t(); new ChannelRequestAdaptor(QDBusObjectPath(mAccount->objectPath()), mUserActionTime, QString(), QualifiedPropertyValueMapList(), QStringList(), request); QVERIFY(bus.registerService(mChannelDispatcherBusName)); QVERIFY(bus.registerObject(mChannelRequestPath, request)); // Fake ChannelDispatchOperation mCDOPath = QLatin1String("/org/freedesktop/Telepathy/ChannelDispatchOperation/Operation1"); QObject *cdo = new QObject(this); // Initialize this here so we can actually set it in possibleHandlers mClientObject1Path = QLatin1String("/org/freedesktop/Telepathy/Client/foo"); ChannelDetailsList channelDetailsList; ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), ChannelClassSpec::textChat().allProperties() }; channelDetailsList.append(channelDetails); mCDO = new ChannelDispatchOperationAdaptor(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, QStringList() << mClientObject1BusName, cdo); QVERIFY(bus.registerObject(mCDOPath, cdo)); } void TestClientFactories::init() { initImpl(); } void TestClientFactories::testFactoryAccess() { AccountFactoryConstPtr accFact = mClientRegistrar->accountFactory(); QVERIFY(!accFact.isNull()); QCOMPARE(accFact.data(), mAM->accountFactory().data()); QCOMPARE(accFact->features(), Features(Account::FeatureCore)); ConnectionFactoryConstPtr connFact = mClientRegistrar->connectionFactory(); QVERIFY(!connFact.isNull()); QCOMPARE(connFact.data(), mAM->connectionFactory().data()); QCOMPARE(connFact->features(), Connection::FeatureCore | Connection::FeatureSimplePresence); ChannelFactoryConstPtr chanFact = mClientRegistrar->channelFactory(); QVERIFY(!chanFact.isNull()); QCOMPARE(chanFact.data(), mAM->channelFactory().data()); ContactFactoryConstPtr contactFact = mClientRegistrar->contactFactory(); QVERIFY(!contactFact.isNull()); QCOMPARE(contactFact.data(), mAM->contactFactory().data()); } void TestClientFactories::testRegister() { // invalid client QVERIFY(!mClientRegistrar->registerClient(AbstractClientPtr(), QLatin1String("foo"))); mClientCapabilities.setICEUDPNATTraversalToken(); mClientCapabilities.setAudioCodecToken(QLatin1String("speex")); ChannelClassSpecList filters; filters.append(ChannelClassSpec::textChat()); mClientObject1 = MyClient::create(filters, mClientCapabilities, false, true); QVERIFY(mClientRegistrar->registerClient(mClientObject1, QLatin1String("foo"))); QVERIFY(mClientRegistrar->registeredClients().contains(mClientObject1)); // no op - client already registered QVERIFY(mClientRegistrar->registerClient(mClientObject1, QLatin1String("foo"))); filters.clear(); filters.append(ChannelClassSpec::streamedMediaCall()); mClientObject2 = MyClient::create(filters, mClientCapabilities, true, true); QVERIFY(mClientRegistrar->registerClient(mClientObject2, QLatin1String("foo"), true)); QVERIFY(mClientRegistrar->registeredClients().contains(mClientObject2)); // no op - client already registered QVERIFY(mClientRegistrar->registerClient(mClientObject2, QLatin1String("foo"), true)); QDBusConnection bus = mClientRegistrar->dbusConnection(); QDBusConnectionInterface *busIface = bus.interface(); QStringList registeredServicesNames = busIface->registeredServiceNames(); QVERIFY(registeredServicesNames.filter( QRegExp(QLatin1String("^" "org.freedesktop.Telepathy.Client.foo" ".([_A-Za-z][_A-Za-z0-9]*)"))).size() == 1); mClientObject1BusName = QLatin1String("org.freedesktop.Telepathy.Client.foo"); mClientObject1Path = QLatin1String("/org/freedesktop/Telepathy/Client/foo"); mClientObject2BusName = registeredServicesNames.filter( QRegExp(QLatin1String("org.freedesktop.Telepathy.Client.foo._*"))).first(); mClientObject2Path = QString(QLatin1String("/%1")).arg(mClientObject2BusName); mClientObject2Path.replace(QLatin1String("."), QLatin1String("/")); } void TestClientFactories::testCapabilities() { QDBusConnection bus = mClientRegistrar->dbusConnection(); QStringList normalizedClientCaps = mClientCapabilities.allTokens(); normalizedClientCaps.sort(); QStringList normalizedHandlerCaps; // object 1 ClientHandlerInterface *handler1Iface = new ClientHandlerInterface(bus, mClientObject1BusName, mClientObject1Path, this); QVERIFY(waitForProperty(handler1Iface->requestPropertyCapabilities(), &normalizedHandlerCaps)); normalizedHandlerCaps.sort(); QCOMPARE(normalizedHandlerCaps, normalizedClientCaps); // object 2 ClientHandlerInterface *handler2Iface = new ClientHandlerInterface(bus, mClientObject2BusName, mClientObject2Path, this); QVERIFY(waitForProperty(handler2Iface->requestPropertyCapabilities(), &normalizedHandlerCaps)); normalizedHandlerCaps.sort(); QCOMPARE(normalizedHandlerCaps, normalizedClientCaps); } void TestClientFactories::testRequests() { QDBusConnection bus = mClientRegistrar->dbusConnection(); ClientInterfaceRequestsInterface *handlerRequestsIface = new ClientInterfaceRequestsInterface(bus, mClientObject1BusName, mClientObject1Path, this); MyClient *client = dynamic_cast(mClientObject1.data()); connect(client, SIGNAL(requestAdded(const Tp::ChannelRequestPtr &)), SLOT(expectSignalEmission())); QVariantMap requestProps; requestProps.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Account"), QVariant::fromValue(QDBusObjectPath(mAccount->objectPath()))); requestProps.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interface.DomainSpecific.IntegerProp"), QVariant::fromValue(3)); handlerRequestsIface->AddRequest(QDBusObjectPath(mChannelRequestPath), requestProps); if (!client->mAddRequestRequest) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(client->mAddRequestRequest->objectPath(), mChannelRequestPath); QCOMPARE(client->mAddRequestRequest->account().data(), mAccount.data()); QVERIFY(client->mAddRequestRequest->immutableProperties().contains( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interface.DomainSpecific.IntegerProp"))); QCOMPARE(qdbus_cast(client->mAddRequestRequest->immutableProperties().value( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interface.DomainSpecific.IntegerProp"))), 3); QVERIFY(connect(client->mAddRequestRequest->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(client->mAddRequestRequest->immutableProperties().contains( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".UserActionTime"))); QCOMPARE(qdbus_cast(client->mAddRequestRequest->immutableProperties().value( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".UserActionTime"))), mUserActionTime); connect(client, SIGNAL(requestRemoved(const Tp::ChannelRequestPtr &, const QString &, const QString &)), SLOT(expectSignalEmission())); handlerRequestsIface->RemoveRequest(QDBusObjectPath(mChannelRequestPath), QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Not available")); if (!client->mRemoveRequestRequest) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(client->mRemoveRequestRequest->objectPath(), mChannelRequestPath); // QCOMPARE(client->mRemoveRequestRequest->account().data(), // mAccount.data()); QCOMPARE(client->mRemoveRequestErrorName, QString(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE))); QCOMPARE(client->mRemoveRequestErrorMessage, QString(QLatin1String("Not available"))); } void TestClientFactories::testObserveChannelsCommon(const AbstractClientPtr &clientObject, const QString &clientBusName, const QString &clientObjectPath) { QDBusConnection bus = mClientRegistrar->dbusConnection(); ClientObserverInterface *observeIface = new ClientObserverInterface(bus, clientBusName, clientObjectPath, this); MyClient *client = dynamic_cast(clientObject.data()); connect(client, SIGNAL(observeChannelsFinished()), SLOT(expectSignalEmission())); ChannelDetailsList channelDetailsList; ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), ChannelClassSpec::textChat().allProperties() }; channelDetailsList.append(channelDetails); observeIface->ObserveChannels(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, QDBusObjectPath(mCDOPath), ObjectPathList() << QDBusObjectPath(mChannelRequestPath), QVariantMap()); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client->mObserveChannelsAccount->objectPath(), mAccount->objectPath()); QCOMPARE(client->mObserveChannelsAccount.data(), mAccount.data()); QVERIFY(client->mObserveChannelsAccount->isReady(Account::FeatureCore)); QCOMPARE(client->mObserveChannelsConnection->objectPath(), mConn->objectPath()); QCOMPARE(client->mObserveChannelsConnection.data(), mConn.data()); QVERIFY(client->mObserveChannelsConnection->isReady( Connection::FeatureCore | Connection::FeatureSimplePresence)); QCOMPARE(client->mObserveChannelsChannels.size(), 1); QCOMPARE(client->mObserveChannelsChannels.first()->objectPath(), mText1ChanPath); QVERIFY(!client->mObserveChannelsDispatchOperation.isNull()); QCOMPARE(client->mObserveChannelsDispatchOperation->account().data(), mAccount.data()); QCOMPARE(client->mObserveChannelsDispatchOperation->connection().data(), mConn.data()); QCOMPARE(client->mObserveChannelsRequestsSatisfied.size(), 1); QCOMPARE(client->mObserveChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath); QVERIFY(client->mObserveChannelsRequestsSatisfied.first()->isReady()); QCOMPARE(client->mObserveChannelsRequestsSatisfied.first()->account().data(), mAccount.data()); } void TestClientFactories::testObserveChannels() { testObserveChannelsCommon(mClientObject1, mClientObject1BusName, mClientObject1Path); testObserveChannelsCommon(mClientObject2, mClientObject2BusName, mClientObject2Path); } void TestClientFactories::testAddDispatchOperation() { QDBusConnection bus = mClientRegistrar->dbusConnection(); ClientApproverInterface *approverIface = new ClientApproverInterface(bus, mClientObject1BusName, mClientObject1Path, this); MyClient *client = dynamic_cast(mClientObject1.data()); connect(client, SIGNAL(addDispatchOperationFinished()), SLOT(expectSignalEmission())); QVariantMap dispatchOperationProperties; dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Connection"), QVariant::fromValue(mCDO->Connection())); dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Account"), QVariant::fromValue(mCDO->Account())); dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".PossibleHandlers"), QVariant::fromValue(mCDO->PossibleHandlers())); dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Interfaces"), QVariant::fromValue(mCDO->Interfaces())); approverIface->AddDispatchOperation(mCDO->Channels(), QDBusObjectPath(mCDOPath), dispatchOperationProperties); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client->mAddDispatchOperationChannels.first()->objectPath(), mText1ChanPath); QCOMPARE(client->mAddDispatchOperationChannels.first()->connection().data(), mConn.data()); QVERIFY(client->mAddDispatchOperationChannels.first()->connection()->isReady( Connection::FeatureCore | Connection::FeatureSimplePresence)); QCOMPARE(client->mAddDispatchOperationDispatchOperation->channels().first().data(), client->mAddDispatchOperationChannels.first().data()); QCOMPARE(client->mAddDispatchOperationDispatchOperation->objectPath(), mCDOPath); QVERIFY(client->mAddDispatchOperationDispatchOperation->isReady()); QCOMPARE(client->mAddDispatchOperationDispatchOperation->account().data(), mAccount.data()); QCOMPARE(client->mAddDispatchOperationDispatchOperation->connection().data(), mConn.data()); QCOMPARE(client->mAddDispatchOperationDispatchOperation->possibleHandlers().size(), 1); QCOMPARE(client->mAddDispatchOperationDispatchOperation->possibleHandlers(), mCDO->PossibleHandlers()); } void TestClientFactories::testHandleChannels() { QDBusConnection bus = mClientRegistrar->dbusConnection(); // object 1 ClientHandlerInterface *handler1Iface = new ClientHandlerInterface(bus, mClientObject1BusName, mClientObject1Path, this); MyClient *client1 = dynamic_cast(mClientObject1.data()); connect(client1, SIGNAL(handleChannelsFinished()), SLOT(expectSignalEmission())); ChannelDetailsList channelDetailsList; ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), ChannelClassSpec::textChat().allProperties() }; channelDetailsList.append(channelDetails); handler1Iface->HandleChannels(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, ObjectPathList() << QDBusObjectPath(mChannelRequestPath), mUserActionTime, QVariantMap()); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client1->mHandleChannelsAccount->objectPath(), mAccount->objectPath()); QCOMPARE(client1->mHandleChannelsAccount.data(), mAccount.data()); QVERIFY(client1->mHandleChannelsAccount->isReady()); QCOMPARE(client1->mHandleChannelsConnection->objectPath(), mConn->objectPath()); QCOMPARE(client1->mHandleChannelsConnection.data(), mConn.data()); QVERIFY(client1->mHandleChannelsConnection->isReady( Connection::FeatureCore | Connection::FeatureSimplePresence)); QCOMPARE(client1->mHandleChannelsChannels.first()->objectPath(), mText1ChanPath); TextChannelPtr textChan = TextChannelPtr::qObjectCast(client1->mHandleChannelsChannels.first()); QVERIFY(!textChan.isNull()); QVERIFY(textChan->isReady()); QVERIFY(textChan->isReady(Channel::FeatureCore)); QVERIFY(textChan->isReady(TextChannel::FeatureMessageQueue)); QVERIFY(textChan->isReady(TextChannel::FeatureChatState)); QCOMPARE(client1->mHandleChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath); QVERIFY(client1->mHandleChannelsRequestsSatisfied.first()->isReady()); QCOMPARE(client1->mHandleChannelsRequestsSatisfied.first()->account().data(), mAccount.data()); QCOMPARE(client1->mHandleChannelsUserActionTime.toTime_t(), mUserActionTime); Tp::ObjectPathList handledChannels; QVERIFY(waitForProperty(handler1Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText1ChanPath))); // object 2 ClientHandlerInterface *handler2Iface = new ClientHandlerInterface(bus, mClientObject2BusName, mClientObject2Path, this); MyClient *client2 = dynamic_cast(mClientObject2.data()); connect(client2, SIGNAL(handleChannelsFinished()), SLOT(expectSignalEmission())); channelDetailsList.clear(); channelDetails.channel = QDBusObjectPath(mText2ChanPath); channelDetailsList.append(channelDetails); handler2Iface->HandleChannels(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, ObjectPathList() << QDBusObjectPath(mChannelRequestPath), mUserActionTime, QVariantMap()); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client2->mHandleChannelsAccount->objectPath(), mAccount->objectPath()); QCOMPARE(client2->mHandleChannelsAccount.data(), mAccount.data()); QVERIFY(client2->mHandleChannelsAccount->isReady()); QCOMPARE(client2->mHandleChannelsConnection->objectPath(), mConn->objectPath()); QCOMPARE(client2->mHandleChannelsConnection.data(), mConn.data()); QVERIFY(client2->mHandleChannelsConnection->isReady( Connection::FeatureCore | Connection::FeatureSimplePresence)); QCOMPARE(client2->mHandleChannelsChannels.first()->objectPath(), mText2ChanPath); QCOMPARE(client2->mHandleChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath); QVERIFY(client2->mHandleChannelsRequestsSatisfied.first()->isReady()); QCOMPARE(client2->mHandleChannelsRequestsSatisfied.first()->account().data(), mAccount.data()); QCOMPARE(client2->mHandleChannelsUserActionTime.toTime_t(), mUserActionTime); QVERIFY(waitForProperty(handler1Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText1ChanPath))); QVERIFY(handledChannels.contains(QDBusObjectPath(mText2ChanPath))); QVERIFY(waitForProperty(handler2Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText1ChanPath))); QVERIFY(handledChannels.contains(QDBusObjectPath(mText2ChanPath))); // Handler.HandledChannels will now return all channels that are not invalidated/destroyed // even if the handler for such channels was already unregistered g_object_unref(mText1ChanService); connect(client1, SIGNAL(channelClosed()), SLOT(expectSignalEmission())); QCOMPARE(mLoop->exec(), 0); mClientRegistrar->unregisterClient(mClientObject1); QVERIFY(waitForProperty(handler2Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText2ChanPath))); g_object_unref(mText2ChanService); connect(client2, SIGNAL(channelClosed()), SLOT(expectSignalEmission())); QCOMPARE(mLoop->exec(), 0); QVERIFY(waitForProperty(handler2Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.isEmpty()); } void TestClientFactories::testChannelFactoryAccessors() { QDBusConnection bus = QDBusConnection::sessionBus(); ChannelFactoryPtr chanFact = ChannelFactory::create(bus); QCOMPARE(chanFact->featuresForTextChats(), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::textChat()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedTextChat()), Features()); QCOMPARE(chanFact->featuresForTextChatrooms(), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::textChatroom()), Features()); QCOMPARE(chanFact->featuresForStreamedMediaCalls(), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaCall()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaAudioCall()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCall()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCallWithAudio()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaAudioCall()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCall()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio()), Features()); QCOMPARE(chanFact->featuresForRoomLists(), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::roomList()), Features()); QCOMPARE(chanFact->featuresForOutgoingFileTransfers(), Features()); QCOMPARE(chanFact->featuresForIncomingFileTransfers(), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::outgoingFileTransfer()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::incomingFileTransfer()), Features()); QCOMPARE(chanFact->featuresForOutgoingStreamTubes(), Features()); QCOMPARE(chanFact->featuresForIncomingStreamTubes(), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::outgoingStreamTube()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::incomingStreamTube()), Features()); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::contactSearch()), Features()); QCOMPARE(chanFact->featuresForContactSearches(), Features()); Features commonFeatures; commonFeatures.insert(Channel::FeatureCore); chanFact->addCommonFeatures(commonFeatures); QCOMPARE(chanFact->featuresForTextChats(), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::textChat()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedTextChat()), commonFeatures); QCOMPARE(chanFact->featuresForTextChatrooms(), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::textChatroom()), commonFeatures); QCOMPARE(chanFact->featuresForStreamedMediaCalls(), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaCall()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaAudioCall()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCall()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCallWithAudio()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaAudioCall()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCall()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio()), commonFeatures); QCOMPARE(chanFact->featuresForRoomLists(), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::roomList()), commonFeatures); QCOMPARE(chanFact->featuresForOutgoingFileTransfers(), commonFeatures); QCOMPARE(chanFact->featuresForIncomingFileTransfers(), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::outgoingFileTransfer()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::incomingFileTransfer()), commonFeatures); QCOMPARE(chanFact->featuresForOutgoingStreamTubes(), commonFeatures); QCOMPARE(chanFact->featuresForIncomingStreamTubes(), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::outgoingStreamTube()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::incomingStreamTube()), commonFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::contactSearch()), commonFeatures); QCOMPARE(chanFact->featuresForContactSearches(), commonFeatures); Features textChatFeatures; textChatFeatures.insert(TextChannel::FeatureCore); textChatFeatures.insert(TextChannel::FeatureMessageQueue); chanFact->addFeaturesForTextChats(textChatFeatures); textChatFeatures |= commonFeatures; Features textChatroomFeatures; textChatroomFeatures.insert(TextChannel::FeatureCore); textChatroomFeatures.insert(TextChannel::FeatureMessageCapabilities); chanFact->addFeaturesForTextChatrooms(textChatroomFeatures); textChatroomFeatures |= commonFeatures; Features streamedMediaFeatures; streamedMediaFeatures.insert(StreamedMediaChannel::FeatureStreams); chanFact->addFeaturesForStreamedMediaCalls(streamedMediaFeatures); streamedMediaFeatures |= commonFeatures; // RoomListChannel has no feature, let's use FeatureConferenceInitialInviteeContacts just for // testing purposes Features roomListFeatures; roomListFeatures.insert(Channel::FeatureConferenceInitialInviteeContacts); chanFact->addFeaturesForRoomLists(roomListFeatures); roomListFeatures |= commonFeatures; Features outFtFeatures; outFtFeatures.insert(FileTransferChannel::FeatureCore); outFtFeatures.insert(OutgoingFileTransferChannel::FeatureCore); chanFact->addFeaturesForOutgoingFileTransfers(outFtFeatures); outFtFeatures |= commonFeatures; Features inFtFeatures; inFtFeatures.insert(FileTransferChannel::FeatureCore); inFtFeatures.insert(IncomingFileTransferChannel::FeatureCore); chanFact->addFeaturesForIncomingFileTransfers(inFtFeatures); inFtFeatures |= commonFeatures; Features outStubeFeatures; outStubeFeatures.insert(StreamTubeChannel::FeatureCore); outStubeFeatures.insert(OutgoingStreamTubeChannel::FeatureCore); chanFact->addFeaturesForOutgoingStreamTubes(outStubeFeatures); outStubeFeatures |= commonFeatures; Features inStubeFeatures = commonFeatures; outStubeFeatures.insert(StreamTubeChannel::FeatureCore); outStubeFeatures.insert(IncomingStreamTubeChannel::FeatureCore); chanFact->addFeaturesForIncomingStreamTubes(inStubeFeatures); inStubeFeatures |= commonFeatures; Features contactSearchFeatures; contactSearchFeatures.insert(ContactSearchChannel::FeatureCore); chanFact->addFeaturesForContactSearches(contactSearchFeatures); contactSearchFeatures |= commonFeatures; QCOMPARE(chanFact->featuresForTextChats(), textChatFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::textChat()), textChatFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedTextChat()), textChatFeatures); QCOMPARE(chanFact->featuresForTextChatrooms(), textChatroomFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::textChatroom()), textChatroomFeatures); QCOMPARE(chanFact->featuresForStreamedMediaCalls(), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaAudioCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCallWithAudio()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaAudioCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio()), streamedMediaFeatures); QCOMPARE(chanFact->featuresForRoomLists(), roomListFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::roomList()), roomListFeatures); QCOMPARE(chanFact->featuresForOutgoingFileTransfers(), outFtFeatures); QCOMPARE(chanFact->featuresForIncomingFileTransfers(), inFtFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::outgoingFileTransfer()), outFtFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::incomingFileTransfer()), inFtFeatures); QCOMPARE(chanFact->featuresForOutgoingStreamTubes(), outStubeFeatures); QCOMPARE(chanFact->featuresForIncomingStreamTubes(), inStubeFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::outgoingStreamTube()), outStubeFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::incomingStreamTube()), inStubeFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::contactSearch()), contactSearchFeatures); QCOMPARE(chanFact->featuresForContactSearches(), contactSearchFeatures); Features streamedMediaAudioFeatures; streamedMediaAudioFeatures.insert(StreamedMediaChannel::FeatureStreams); chanFact->addFeaturesFor(ChannelClassSpec::streamedMediaAudioCall(), streamedMediaAudioFeatures); streamedMediaAudioFeatures |= streamedMediaFeatures; QCOMPARE(chanFact->featuresForStreamedMediaCalls(), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaAudioCall()), streamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCallWithAudio()), streamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaAudioCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio()), streamedMediaFeatures); Features unnamedStreamedMediaAudioFeatures; unnamedStreamedMediaAudioFeatures.insert(StreamedMediaChannel::FeatureLocalHoldState); chanFact->addFeaturesFor(ChannelClassSpec::unnamedStreamedMediaAudioCall(), unnamedStreamedMediaAudioFeatures); unnamedStreamedMediaAudioFeatures |= streamedMediaFeatures; QCOMPARE(chanFact->featuresForStreamedMediaCalls(), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaAudioCall()), streamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCallWithAudio()), streamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaAudioCall()), unnamedStreamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio()), unnamedStreamedMediaAudioFeatures); QVariantMap otherProps; otherProps.insert(QLatin1String("ping"), QLatin1String("pong")); Features specificUnnamedStreamedMediaFeatures; specificUnnamedStreamedMediaFeatures.insert(Feature(QLatin1String("TestClass"), 1234)); chanFact->addFeaturesFor(ChannelClassSpec::unnamedStreamedMediaCall(otherProps), specificUnnamedStreamedMediaFeatures); specificUnnamedStreamedMediaFeatures |= streamedMediaFeatures; QCOMPARE(chanFact->featuresForStreamedMediaCalls(), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaAudioCall()), streamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::streamedMediaVideoCallWithAudio()), streamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaCall(otherProps)), specificUnnamedStreamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaAudioCall()), unnamedStreamedMediaAudioFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCall()), streamedMediaFeatures); QCOMPARE(chanFact->featuresFor(ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio()), unnamedStreamedMediaAudioFeatures); } void TestClientFactories::cleanup() { cleanupImpl(); } void TestClientFactories::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestClientFactories) #include "_gen/client-factories.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/dbus-tube-chan.cpp0000644000175100017520000007015312530423576023334 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; namespace { struct TestContext { bool withContact; TpSocketAddressType addressType; TpSocketAccessControl accessControl; }; TestContext contexts[] = { { FALSE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, { FALSE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_CREDENTIALS }, { TRUE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, { TRUE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_CREDENTIALS }, { FALSE, (TpSocketAddressType) NUM_TP_SOCKET_ADDRESS_TYPES, (TpSocketAccessControl) NUM_TP_SOCKET_ACCESS_CONTROLS } }; } class TestDBusTubeChan : public Test { Q_OBJECT public: TestDBusTubeChan(QObject *parent = 0) : Test(parent), mConn(0), mChanService(0), mBusNameWasAdded(false), mBusNameWasRemoved(false), mOfferFinished(false), mAllowsOtherUsers(false) { } protected Q_SLOTS: void onBusNameAdded(const QString &busName, const Tp::ContactPtr &contact); void onBusNameRemoved(const QString &busName, const Tp::ContactPtr &contact); void onOfferFinished(Tp::PendingOperation *op); void expectPendingTubeConnectionFinished(Tp::PendingOperation *op); private Q_SLOTS: void initTestCase(); void init(); void testCreation(); void testAcceptSuccess(); void testAcceptFail(); void testOfferSuccess(); void testOutgoingBusNameMonitoring(); void testExtractBusNameMonitoring(); void testAcceptCornerCases(); void testOfferCornerCases(); void cleanup(); void cleanupTestCase(); private: void createTubeChannel(bool requested, TpSocketAddressType addressType, TpSocketAccessControl accessControl, bool withContact); TestConnHelper *mConn; TpTestsDBusTubeChannel *mChanService; DBusTubeChannelPtr mChan; uint mCurrentContext; QHash mCurrentContactsForBusNames; bool mBusNameWasAdded; bool mBusNameWasRemoved; bool mOfferFinished; bool mAllowsOtherUsers; uint mExpectedHandle; QString mExpectedBusName; }; void TestDBusTubeChan::onBusNameAdded(const QString &busName, const Tp::ContactPtr &contact) { mCurrentContactsForBusNames.insert(busName, contact); mBusNameWasAdded = true; qDebug() << "Adding bus name" << busName << "for" << contact->id(); QCOMPARE(busName, mExpectedBusName); QCOMPARE(contact->handle().first(), mExpectedHandle); QCOMPARE(mChan->contactsForBusNames().size(), mCurrentContactsForBusNames.size()); mLoop->quit(); } void TestDBusTubeChan::onBusNameRemoved(const QString &busName, const Tp::ContactPtr &contact) { QVERIFY(mCurrentContactsForBusNames.contains(busName)); mCurrentContactsForBusNames.remove(busName); mBusNameWasRemoved = true; qDebug() << "Removing bus name" << busName << "for" << contact->id(); QCOMPARE(contact->handle().first(), mExpectedHandle); QCOMPARE(mChan->contactsForBusNames().size(), mCurrentContactsForBusNames.size()); mLoop->quit(); } void TestDBusTubeChan::onOfferFinished(Tp::PendingOperation *op) { TEST_VERIFY_OP(op); mOfferFinished = true; mLoop->exit(0); } void TestDBusTubeChan::expectPendingTubeConnectionFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingDBusTubeConnection *pdt = qobject_cast(op); mAllowsOtherUsers = pdt->allowsOtherUsers(); // Check the addresses match QCOMPARE(mChan->address(), pdt->address()); mLoop->exit(0); } void TestDBusTubeChan::createTubeChannel(bool requested, TpSocketAddressType addressType, TpSocketAccessControl accessControl, bool withContact) { mChan.reset(); mLoop->processEvents(); tp_clear_object(&mChanService); /* Create service-side tube channel object */ QString chanPath = QString(QLatin1String("%1/Channel")).arg(mConn->objectPath()); TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandleRepoIface *roomRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_ROOM); TpHandle handle; GType type; if (withContact) { handle = tp_handle_ensure(contactRepo, "bob", NULL, NULL); type = TP_TESTS_TYPE_CONTACT_DBUS_TUBE_CHANNEL; } else { handle = tp_handle_ensure(roomRepo, "#test", NULL, NULL); type = TP_TESTS_TYPE_ROOM_DBUS_TUBE_CHANNEL; } TpHandle alfHandle = tp_handle_ensure(contactRepo, "alf", NULL, NULL); GArray *acontrols; TpSocketAccessControl a; if (accessControl != TP_SOCKET_ACCESS_CONTROL_LOCALHOST) { acontrols = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2); a = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; acontrols = g_array_append_val (acontrols, a); a = TP_SOCKET_ACCESS_CONTROL_CREDENTIALS; acontrols = g_array_append_val (acontrols, a); } else { acontrols = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); a = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; acontrols = g_array_append_val (acontrols, a); } mChanService = TP_TESTS_DBUS_TUBE_CHANNEL(g_object_new( type, "connection", mConn->service(), "handle", handle, "requested", requested, "object-path", chanPath.toLatin1().constData(), "supported-access-controls", acontrols, "initiator-handle", alfHandle, NULL)); /* Create client-side tube channel object */ GHashTable *props; g_object_get(mChanService, "channel-properties", &props, NULL); if (requested) { mChan = OutgoingDBusTubeChannel::create(mConn->client(), chanPath, QVariantMap()); } else { mChan = IncomingDBusTubeChannel::create(mConn->client(), chanPath, QVariantMap()); } g_hash_table_unref(props); g_array_unref(acontrols); } void TestDBusTubeChan::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("dbus-tube-chan"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); } void TestDBusTubeChan::init() { initImpl(); mCurrentContext = -1; mBusNameWasAdded = false; mBusNameWasRemoved = false; mOfferFinished = false; mAllowsOtherUsers = false; mExpectedHandle = -1; mExpectedBusName = QString(); } void TestDBusTubeChan::testCreation() { /* Outgoing tube */ createTubeChannel(true, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, true); QVERIFY(connect(mChan->becomeReady(OutgoingDBusTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(OutgoingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), false); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); QCOMPARE(mChan->parameters().isEmpty(), true); QCOMPARE(mChan->serviceName(), QLatin1String("com.test.Test")); QCOMPARE(mChan->supportsRestrictingToCurrentUser(), false); QCOMPARE(mChan->contactsForBusNames().isEmpty(), true); QCOMPARE(mChan->address(), QString()); /* incoming tube */ createTubeChannel(false, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(IncomingDBusTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), false); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); QCOMPARE(mChan->parameters().isEmpty(), false); QCOMPARE(mChan->parameters().size(), 1); QCOMPARE(mChan->parameters().contains(QLatin1String("badger")), true); QCOMPARE(mChan->parameters().value(QLatin1String("badger")), QVariant(42)); QCOMPARE(mChan->serviceName(), QLatin1String("com.test.Test")); QCOMPARE(mChan->supportsRestrictingToCurrentUser(), false); QCOMPARE(mChan->contactsForBusNames().isEmpty(), true); QCOMPARE(mChan->address(), QString()); } void TestDBusTubeChan::testAcceptSuccess() { /* incoming tube */ for (int i = 0; contexts[i].addressType != NUM_TP_SOCKET_ADDRESS_TYPES; i++) { /* as we run several tests here, let's init/cleanup properly */ init(); qDebug() << "Testing context:" << i; mCurrentContext = i; createTubeChannel(false, contexts[i].addressType, contexts[i].accessControl, contexts[i].withContact); QVERIFY(connect(mChan->becomeReady(IncomingDBusTubeChannel::FeatureCore | DBusTubeChannel::FeatureBusNameMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); QVERIFY(connect(mChan.data(), SIGNAL(busNameAdded(QString,Tp::ContactPtr)), SLOT(onBusNameAdded(QString,Tp::ContactPtr)))); QVERIFY(connect(mChan.data(), SIGNAL(busNameRemoved(QString,Tp::ContactPtr)), SLOT(onBusNameRemoved(QString,Tp::ContactPtr)))); bool allowsOtherUsers = ((contexts[i].accessControl == TP_SOCKET_ACCESS_CONTROL_LOCALHOST) ? true : false); IncomingDBusTubeChannelPtr chan = IncomingDBusTubeChannelPtr::qObjectCast(mChan); if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { QVERIFY(connect(chan->acceptTube(allowsOtherUsers), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectPendingTubeConnectionFinished(Tp::PendingOperation *)))); } else { // Should never happen QVERIFY(false); } QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->state(), TubeChannelStateOpen); QCOMPARE(mAllowsOtherUsers, allowsOtherUsers); if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { qDebug() << "Connecting to bus" << mChan->address(); QDBusConnection conn = QDBusConnection::connectToPeer(mChan->address(), mChan->serviceName()); QCOMPARE(conn.isConnected(), true); qDebug() << "Connected to host"; } else { QVERIFY(false); } /* as we run several tests here, let's init/cleanup properly */ cleanup(); } } void TestDBusTubeChan::testAcceptFail() { /* incoming tube */ createTubeChannel(false, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(IncomingDBusTubeChannel::FeatureCore | DBusTubeChannel::FeatureBusNameMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); /* when accept is called the channel will be closed service side */ tp_tests_dbus_tube_channel_set_close_on_accept (mChanService, TRUE); /* calling accept should fail */ IncomingDBusTubeChannelPtr chan = IncomingDBusTubeChannelPtr::qObjectCast(mChan); QVERIFY(connect(chan->acceptTube(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isValid(), false); /* trying to accept again should fail immediately */ QVERIFY(connect(chan->acceptTube(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); } void TestDBusTubeChan::testOfferSuccess() { /* incoming tube */ for (int i = 0; contexts[i].addressType != NUM_TP_SOCKET_ADDRESS_TYPES; i++) { /* as we run several tests here, let's init/cleanup properly */ init(); qDebug() << "Testing context:" << i; mCurrentContext = i; createTubeChannel(true, contexts[i].addressType, contexts[i].accessControl, contexts[i].withContact); QVERIFY(connect(mChan->becomeReady(OutgoingDBusTubeChannel::FeatureCore | DBusTubeChannel::FeatureBusNameMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(OutgoingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); QCOMPARE(mChan->parameters().isEmpty(), true); mBusNameWasAdded = false; QVERIFY(connect(mChan.data(), SIGNAL(busNameAdded(QString,Tp::ContactPtr)), SLOT(onBusNameAdded(QString,Tp::ContactPtr)))); QVERIFY(connect(mChan.data(), SIGNAL(busNameRemoved(QString,Tp::ContactPtr)), SLOT(onBusNameRemoved(QString,Tp::ContactPtr)))); bool allowsOtherUsers = ((contexts[i].accessControl == TP_SOCKET_ACCESS_CONTROL_LOCALHOST) ? true : false); mExpectedHandle = -1; mExpectedBusName = QString(); mOfferFinished = false; OutgoingDBusTubeChannelPtr chan = OutgoingDBusTubeChannelPtr::qObjectCast(mChan); QVariantMap offerParameters; offerParameters.insert(QLatin1String("mushroom"), 44); qDebug() << "About to offer tube"; if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { QVERIFY(connect(chan->offerTube(offerParameters, allowsOtherUsers), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); } else { QVERIFY(false); } qDebug() << "Tube offered"; while (mChan->state() != TubeChannelStateRemotePending) { qDebug() << mLoop; mLoop->processEvents(); } // A client now connects to the tube if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { QDBusConnection conn = QDBusConnection::connectToPeer(mChan->address(), mChan->serviceName()); QCOMPARE(conn.isConnected(), true); } else { QVERIFY(false); } qDebug() << "Connected"; TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle bobHandle = tp_handle_ensure(contactRepo, "bob", NULL, NULL); gchar *bobService = g_strdup("org.bob.test"); tp_tests_dbus_tube_channel_peer_connected_no_stream(mChanService, bobService, bobHandle); mExpectedHandle = bobHandle; mExpectedBusName = QLatin1String("org.bob.test"); QCOMPARE(mChan->state(), TubeChannelStateRemotePending); qDebug() << "Waiting for offer finished"; while (!mOfferFinished) { QCOMPARE(mLoop->exec(), 0); } qDebug() << "Offer finished"; QCOMPARE(mChan->state(), TubeChannelStateOpen); QCOMPARE(mChan->parameters().isEmpty(), false); QCOMPARE(mChan->parameters().size(), 1); QCOMPARE(mChan->parameters().contains(QLatin1String("mushroom")), true); QCOMPARE(mChan->parameters().value(QLatin1String("mushroom")), QVariant(44)); // This section makes sense just in a room environment if (!contexts[i].withContact) { if (!mBusNameWasAdded) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mBusNameWasAdded, true); qDebug() << "Connected to host"; mBusNameWasRemoved = false; tp_tests_dbus_tube_channel_peer_disconnected(mChanService, mExpectedHandle); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mBusNameWasRemoved, true); /* let the internal DBusTubeChannel::onBusNamesChanged slot be called before * checking the data for that connection */ mLoop->processEvents(); QCOMPARE(chan->contactsForBusNames().isEmpty(), true); } /* as we run several tests here, let's init/cleanup properly */ cleanup(); g_free (bobService); } } void TestDBusTubeChan::testOutgoingBusNameMonitoring() { mCurrentContext = 0; // should point to room, localhost createTubeChannel(true, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(OutgoingDBusTubeChannel::FeatureCore | DBusTubeChannel::FeatureBusNameMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mChan.data(), SIGNAL(busNameAdded(QString,Tp::ContactPtr)), SLOT(onBusNameAdded(QString,Tp::ContactPtr)))); QVERIFY(connect(mChan.data(), SIGNAL(busNameRemoved(QString,Tp::ContactPtr)), SLOT(onBusNameRemoved(QString,Tp::ContactPtr)))); OutgoingDBusTubeChannelPtr chan = OutgoingDBusTubeChannelPtr::qObjectCast(mChan); QVERIFY(connect(chan->offerTube(QVariantMap()), // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); while (mChan->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } // Simulate a peer connection from someone we don't have a prebuilt contact for yet, and // immediately drop it TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle handle = tp_handle_ensure(contactRepo, "YouHaventSeenMeYet", NULL, NULL); gchar *service = g_strdup("org.not.seen.yet"); mExpectedHandle = handle; mExpectedBusName = QLatin1String("org.not.seen.yet"); tp_tests_dbus_tube_channel_peer_connected_no_stream(mChanService, service, handle); tp_tests_dbus_tube_channel_peer_disconnected(mChanService, handle); // Test that we get the events in the right sequence while (!mOfferFinished || !mBusNameWasAdded) { QVERIFY(!mBusNameWasRemoved || !mOfferFinished); QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mChan->contactsForBusNames().size(), 1); // The busNameRemoved emission should finally exit the main loop QCOMPARE(mLoop->exec(), 0); QVERIFY(mBusNameWasRemoved); QCOMPARE(mChan->contactsForBusNames().size(), 0); g_free (service); } void TestDBusTubeChan::testExtractBusNameMonitoring() { mCurrentContext = 0; // should point to room, localhost createTubeChannel(true, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(OutgoingDBusTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mChan.data(), SIGNAL(busNameAdded(QString,Tp::ContactPtr)), SLOT(onBusNameAdded(QString,Tp::ContactPtr)))); QVERIFY(connect(mChan.data(), SIGNAL(busNameRemoved(QString,Tp::ContactPtr)), SLOT(onBusNameRemoved(QString,Tp::ContactPtr)))); OutgoingDBusTubeChannelPtr chan = OutgoingDBusTubeChannelPtr::qObjectCast(mChan); QVERIFY(connect(chan->offerTube(QVariantMap()), // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); while (mChan->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } // Simulate a peer connection from someone TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle handle = tp_handle_ensure(contactRepo, "YouHaventSeenMeYet", NULL, NULL); gchar *service = g_strdup("org.not.seen.yet"); mExpectedHandle = handle; mExpectedBusName = QLatin1String("org.not.seen.yet"); tp_tests_dbus_tube_channel_peer_connected_no_stream(mChanService, service, handle); while (mChan->state() != TubeChannelStateOpen) { mLoop->processEvents(); } // Test that we didn't get a remote connection while (!mOfferFinished) { QCOMPARE(mLoop->exec(), 0); } QVERIFY(!mBusNameWasRemoved); QVERIFY(!mBusNameWasAdded); // This should also trigger a warning QCOMPARE(mChan->contactsForBusNames().size(), 0); // Now, enable the feature, and let it extract participants QVERIFY(connect(mChan->becomeReady(OutgoingDBusTubeChannel::FeatureBusNameMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); // This should now be fine QCOMPARE(mChan->contactsForBusNames().size(), 1); // The name should match QCOMPARE(mChan->contactsForBusNames().keys().first(), QLatin1String("org.not.seen.yet")); // And the signal shouldn't have been called QVERIFY(!mBusNameWasRemoved); QVERIFY(!mBusNameWasAdded); g_free (service); } void TestDBusTubeChan::testAcceptCornerCases() { /* incoming tube */ createTubeChannel(false, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); // These should not be ready yet QCOMPARE(mChan->serviceName(), QString()); QCOMPARE(mChan->supportsRestrictingToCurrentUser(), false); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); QCOMPARE(mChan->parameters(), QVariantMap()); IncomingDBusTubeChannelPtr chan = IncomingDBusTubeChannelPtr::qObjectCast(mChan); // Fail as features are not ready QVERIFY(connect(chan->acceptTube(), // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Become ready QVERIFY(connect(mChan->becomeReady(IncomingDBusTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), false); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); // Accept using unsupported method PendingDBusTubeConnection *connection = chan->acceptTube(); // As credentials are not supported, our connection should report we've fallen back. QVERIFY(connection->allowsOtherUsers()); QVERIFY(connect(connection, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->state(), TubeChannelStateOpen); /* try to re-accept the tube */ QVERIFY(connect(chan->acceptTube(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->state(), TubeChannelStateOpen); } void TestDBusTubeChan::testOfferCornerCases() { mCurrentContext = 0; // should point to room, localhost createTubeChannel(true, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); // These should not be ready yet QCOMPARE(mChan->serviceName(), QString()); QCOMPARE(mChan->supportsRestrictingToCurrentUser(), false); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); QCOMPARE(mChan->parameters(), QVariantMap()); OutgoingDBusTubeChannelPtr chan = OutgoingDBusTubeChannelPtr::qObjectCast(mChan); // Fail as features are not ready QVERIFY(connect(chan->offerTube(QVariantMap()), // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Make them ready QVERIFY(connect(mChan->becomeReady(OutgoingDBusTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingDBusTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(DBusTubeChannel::FeatureBusNameMonitoring), false); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); // Offer using unsupported method PendingDBusTubeConnection *connection = chan->offerTube(QVariantMap()); // As credentials are not supported, our connection should report we've fallen back. QVERIFY(connection->allowsOtherUsers()); QVERIFY(connect(connection, // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); while (mChan->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } // Simulate a peer connection from someone TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle handle = tp_handle_ensure(contactRepo, "YouHaventSeenMeYet", NULL, NULL); gchar *service = g_strdup("org.not.seen.yet"); mExpectedHandle = handle; mExpectedBusName = QLatin1String("org.not.seen.yet"); tp_tests_dbus_tube_channel_peer_connected_no_stream(mChanService, service, handle); while (mChan->state() != TubeChannelStateOpen) { mLoop->processEvents(); } // Get to the connection while (!mOfferFinished) { QCOMPARE(mLoop->exec(), 0); } // Test offering twice QVERIFY(connect(chan->offerTube(QVariantMap()), // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); g_free (service); } void TestDBusTubeChan::cleanup() { cleanupImpl(); if (mChan && mChan->isValid()) { qDebug() << "waiting for the channel to become invalidated"; QVERIFY(connect(mChan.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), mLoop, SLOT(quit()))); tp_base_channel_close(TP_BASE_CHANNEL(mChanService)); QCOMPARE(mLoop->exec(), 0); } mChan.reset(); if (mChanService != 0) { g_object_unref(mChanService); mChanService = 0; } mLoop->processEvents(); } void TestDBusTubeChan::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestDBusTubeChan) #include "_gen/dbus-tube-chan.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-capabilities.cpp0000644000175100017520000000650112530423576024113 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include using namespace Tp; class TestConnCapabilities : public Test { Q_OBJECT public: TestConnCapabilities(QObject *parent = 0) : Test(parent), conn(0) { } private Q_SLOTS: void initTestCase(); void init(); void testCapabilities(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *conn; }; void TestConnCapabilities::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-capabilities"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); } void TestConnCapabilities::init() { initImpl(); } void TestConnCapabilities::testCapabilities() { TestConnHelper *conn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", "me@example.com", "protocol", "contacts", NULL); QCOMPARE(conn->isReady(), false); // Before the connection is Ready, it doesn't guarantee support for anything but doesn't crash // either if we ask it for something QCOMPARE(conn->client()->capabilities().textChats(), false); QCOMPARE(conn->client()->capabilities().textChatrooms(), false); QCOMPARE(conn->client()->capabilities().streamedMediaCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaAudioCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaVideoCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaVideoCallsWithAudio(), false); QCOMPARE(conn->client()->capabilities().upgradingStreamedMediaCalls(), false); QCOMPARE(conn->connect(), true); // Now we should have the real information on what the connection supports QCOMPARE(conn->client()->capabilities().textChats(), true); QCOMPARE(conn->client()->capabilities().textChatrooms(), false); QCOMPARE(conn->client()->capabilities().streamedMediaCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaAudioCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaVideoCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaVideoCallsWithAudio(), false); QCOMPARE(conn->client()->capabilities().upgradingStreamedMediaCalls(), false); // Now, invalidate the connection by disconnecting it QCOMPARE(conn->disconnect(), true); // Check that no support for anything is again reported QCOMPARE(conn->client()->capabilities().textChats(), false); QCOMPARE(conn->client()->capabilities().textChatrooms(), false); QCOMPARE(conn->client()->capabilities().streamedMediaCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaAudioCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaVideoCalls(), false); QCOMPARE(conn->client()->capabilities().streamedMediaVideoCallsWithAudio(), false); QCOMPARE(conn->client()->capabilities().upgradingStreamedMediaCalls(), false); delete conn; } void TestConnCapabilities::cleanup() { cleanupImpl(); } void TestConnCapabilities::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestConnCapabilities) #include "_gen/conn-capabilities.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/handles.cpp0000644000175100017520000000651712530423576022154 0ustar00kaffeinekaffeine00000000000000#include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include using namespace Tp; class TestHandles : public Test { Q_OBJECT public: TestHandles(QObject *parent = 0) : Test(parent), mConn(0) { } protected Q_SLOTS: void expectPendingHandlesFinished(Tp::PendingOperation*); private Q_SLOTS: void initTestCase(); void init(); void testRequestAndRelease(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; ReferencedHandles mHandles; }; void TestHandles::expectPendingHandlesFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingHandles *pending = qobject_cast(op); mHandles = pending->handles(); mLoop->exit(0); } void TestHandles::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("handles"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL); QCOMPARE(mConn->connect(), true); } void TestHandles::init() { initImpl(); } void TestHandles::testRequestAndRelease() { // Test identifiers QStringList ids = QStringList() << QLatin1String("alice") << QLatin1String("bob") << QLatin1String("chris"); // Request handles for the identifiers and wait for the request to process PendingHandles *pending = mConn->client()->lowlevel()->requestHandles(Tp::HandleTypeContact, ids); QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingHandlesFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(disconnect(pending, SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(expectPendingHandlesFinished(Tp::PendingOperation*)))); ReferencedHandles handles = mHandles; mHandles = ReferencedHandles(); // Verify that the closure indicates correctly which names we requested QCOMPARE(pending->namesRequested(), ids); // Verify by directly poking the service that the handles correspond to the requested IDs TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); for (int i = 0; i < 3; i++) { uint handle = handles[i]; QCOMPARE(QString::fromUtf8(tp_handle_inspect(serviceRepo, handle)), ids[i]); } // Save the handles to a non-referenced normal container Tp::UIntList saveHandles = handles.toList(); // Start releasing the handles, RAII style, and complete the asynchronous process doing that handles = ReferencedHandles(); mLoop->processEvents(); processDBusQueue(mConn->client().data()); } void TestHandles::cleanup() { cleanupImpl(); } void TestHandles::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestHandles) #include "_gen/handles.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contact-factory.cpp0000644000175100017520000000367212530423576023635 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include using namespace Tp; class TestContactFactory : public Test { Q_OBJECT public: TestContactFactory(QObject *parent = 0) : Test(parent), mConn(0) { } private Q_SLOTS: void initTestCase(); void init(); void testConnectionSelfContactFeatures(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; }; void TestContactFactory::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contact-factory"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create(Contact::FeatureAlias), TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL); QCOMPARE(mConn->isReady(), false); } void TestContactFactory::init() { initImpl(); } void TestContactFactory::testConnectionSelfContactFeatures() { QCOMPARE(mConn->client()->contactFactory()->features().size(), 1); QVERIFY(mConn->client()->contactFactory()->features().contains(Contact::FeatureAlias)); QCOMPARE(mConn->connect(Connection::FeatureSelfContact), true); ContactPtr selfContact = mConn->client()->selfContact(); QVERIFY(!selfContact.isNull()); QVERIFY(selfContact->requestedFeatures().contains(Contact::FeatureAlias)); } void TestContactFactory::cleanup() { cleanupImpl(); } void TestContactFactory::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestContactFactory) #include "_gen/contact-factory.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/call-channel.cpp0000644000175100017520000011126112530423576023050 0ustar00kaffeinekaffeine00000000000000#include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include using namespace Tp; class TestCallChannel : public Test { Q_OBJECT public: TestCallChannel(QObject *parent = 0) : Test(parent), mConn(0) { } protected Q_SLOTS: void expectRequestContentFinished(Tp::PendingOperation *op); void expectSuccessfulRequestReceiving(Tp::PendingOperation *op); void onContentRemoved(const Tp::CallContentPtr &content, const Tp::CallStateReason &reason); void onCallStateChanged(Tp::CallState newState); void onCallFlagsChanged(Tp::CallFlags newFlags); void onRemoteMemberFlagsChanged( const QHash &remoteMemberFlags, const Tp::CallStateReason &reason); void onRemoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason); void onLocalSendingStateChanged(Tp::SendingState localSendingState, const Tp::CallStateReason &reason); void onRemoteSendingStateChanged( const QHash &remoteSendingStates, const Tp::CallStateReason &reason); void onLocalHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason); void onNewChannels(const Tp::ChannelDetailsList &details); private Q_SLOTS: void initTestCase(); void init(); void testOutgoingCall(); void testIncomingCall(); void testHold(); void testHangup(); void testCallMembers(); void testDTMF(); void testFeatureCore(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; CallChannelPtr mChan; CallContentPtr mRequestContentReturn; CallContentPtr mContentRemoved; CallStateReason mCallStateReason; CallState mCallState; CallFlags mCallFlags; QHash mRemoteMemberFlags; Contacts mRemoteMembersRemoved; SendingState mLSSCReturn; QQueue mLocalHoldStates; QQueue mLocalHoldStateReasons; // Remote sending state changed state-machine enum { RSSCStateInitial, RSSCStatePendingSend, RSSCStateSending, RSSCStateDone } mRSSCState; int mSuccessfulRequestReceivings; }; void TestCallChannel::expectRequestContentFinished(Tp::PendingOperation *op) { if (!op->isFinished()) { qWarning() << "unfinished"; mLoop->exit(1); return; } if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mLoop->exit(2); return; } if (!op->isValid()) { qWarning() << "inconsistent results"; mLoop->exit(3); return; } PendingCallContent *pmc = qobject_cast(op); mRequestContentReturn = pmc->content(); mLoop->exit(0); } void TestCallChannel::onLocalSendingStateChanged(Tp::SendingState state, const Tp::CallStateReason &reason) { qDebug() << "local sending state changed"; mLSSCReturn = state; mCallStateReason = reason; mLoop->exit(0); } void TestCallChannel::expectSuccessfulRequestReceiving(Tp::PendingOperation *op) { if (!op->isFinished()) { qWarning() << "unfinished"; mLoop->exit(1); return; } if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mLoop->exit(2); return; } if (!op->isValid()) { qWarning() << "inconsistent results"; mLoop->exit(3); return; } if (++mSuccessfulRequestReceivings == 2 && mRSSCState == RSSCStateDone) { mLoop->exit(0); } } void TestCallChannel::onContentRemoved(const CallContentPtr &content, const Tp::CallStateReason &reason) { mContentRemoved = content; mCallStateReason = reason; mLoop->exit(0); } void TestCallChannel::onCallStateChanged(CallState newState) { mCallState = newState; mLoop->exit(0); } void TestCallChannel::onCallFlagsChanged(CallFlags newFlags) { mCallFlags = newFlags; } void TestCallChannel::onRemoteMemberFlagsChanged( const QHash &remoteMemberFlags, const CallStateReason &reason) { mRemoteMemberFlags = remoteMemberFlags; mLoop->exit(0); } void TestCallChannel::onRemoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason) { mRemoteMembersRemoved = remoteMembers; } void TestCallChannel::onRemoteSendingStateChanged( const QHash &states, const Tp::CallStateReason &reason) { // There should be no further events QVERIFY(mRSSCState != RSSCStateDone); QCOMPARE(states.size(), 1); Tp::ContactPtr otherContact = states.keys().first(); CallContentPtr content = mChan->contentsForType(Tp::MediaStreamTypeVideo).first(); QVERIFY(content); CallStreamPtr stream = content->streams().first(); QVERIFY(stream); if (mRSSCState == RSSCStateInitial) { QCOMPARE(states[otherContact], SendingStatePendingSend); mRSSCState = RSSCStatePendingSend; } else if (mRSSCState == RSSCStatePendingSend) { QCOMPARE(states[otherContact], SendingStateSending); mRSSCState = RSSCStateSending; QVERIFY(connect(stream->requestReceiving(otherContact, false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulRequestReceiving(Tp::PendingOperation*)))); } else if (mRSSCState == RSSCStateSending) { QCOMPARE(states[otherContact], SendingStateNone); mRSSCState = RSSCStateDone; if (mSuccessfulRequestReceivings == 2) { mLoop->exit(0); } } qDebug() << "remote sending state changed to" << states[otherContact]; } void TestCallChannel::onLocalHoldStateChanged(Tp::LocalHoldState localHoldState, Tp::LocalHoldStateReason localHoldStateReason) { mLocalHoldStates.append(localHoldState); mLocalHoldStateReasons.append(localHoldStateReason); mLoop->exit(0); } void TestCallChannel::onNewChannels(const Tp::ChannelDetailsList &channels) { qDebug() << "new channels"; Q_FOREACH (const Tp::ChannelDetails &details, channels) { QString channelType = details.properties.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); bool requested = details.properties.value(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")).toBool(); qDebug() << " channelType:" << channelType; qDebug() << " requested :" << requested; if (channelType == TP_QT_IFACE_CHANNEL_TYPE_CALL && !requested) { mChan = CallChannel::create(mConn->client(), details.channel.path(), details.properties); mLoop->exit(0); } } } void TestCallChannel::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("call-channel"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_CALL_CONNECTION, "account", "me@example.com", "protocol", "example", "simulation-delay", 1, NULL); QCOMPARE(mConn->connect(Connection::FeatureSelfContact), true); } void TestCallChannel::init() { initImpl(); mRequestContentReturn.reset(); mContentRemoved.reset(); mCallStateReason = CallStateReason(); mCallState = CallStateUnknown; mCallFlags = (CallFlags) 0; mRemoteMemberFlags.clear(); mRemoteMembersRemoved.clear(); mLSSCReturn = (Tp::SendingState) -1; mLocalHoldStates.clear(); mLocalHoldStateReasons.clear(); } void TestCallChannel::testOutgoingCall() { qDebug() << "requesting contact for alice"; QList contacts = mConn->contacts(QStringList() << QLatin1String("alice")); QCOMPARE(contacts.size(), 1); ContactPtr otherContact = contacts.at(0); QVERIFY(otherContact); qDebug() << "creating the channel"; QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), otherContact->handle()[0]); request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), true); mChan = CallChannelPtr::qObjectCast(mConn->createChannel(request)); QVERIFY(mChan); qDebug() << "making the channel ready"; Features features; features << CallChannel::FeatureCallState << CallChannel::FeatureContents; QVERIFY(connect(mChan->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureCallState)); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureContents)); QCOMPARE(mChan->callState(), CallStatePendingInitiator); QVERIFY(connect(mChan->accept(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->callState(), CallStateInitialised); QCOMPARE(mChan->callStateReason().reason, (uint) CallStateChangeReasonUserRequested); QVERIFY(connect(mChan.data(), SIGNAL(callStateChanged(Tp::CallState)), SLOT(onCallStateChanged(Tp::CallState)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCallState, CallStateAccepted); QCOMPARE(mChan->callState(), CallStateAccepted); QCOMPARE(mChan->contents().size(), 1); Tp::CallContentPtr content; content = mChan->contents().first(); QVERIFY(content); QCOMPARE(content->name(), QString::fromLatin1("audio")); QCOMPARE(content->type(), Tp::MediaStreamTypeAudio); QCOMPARE(content->disposition(), Tp::CallContentDispositionInitial); QVERIFY(mChan->contentByName(QLatin1String("audio"))); /* QCOMPARE(mChan->groupContacts().size(), 2); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); QVERIFY(mChan->groupContacts().contains(otherContact)); */ qDebug() << "calling requestContent with a bad type"; // RequestContent with bad type must fail QVERIFY(connect(mChan->requestContent(QLatin1String("content1"), (Tp::MediaStreamType) -1, Tp::MediaStreamDirectionNone), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestContentFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 2); QVERIFY(!mRequestContentReturn); qDebug() << "calling requestContent with Audio"; QCOMPARE(mChan->contentsForType(Tp::MediaStreamTypeAudio).size(), 1); mRequestContentReturn.reset(); QVERIFY(connect(mChan->requestContent(QLatin1String("content1"), Tp::MediaStreamTypeAudio, Tp::MediaStreamDirectionBidirectional), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestContentFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mRequestContentReturn.isNull()); QCOMPARE(mRequestContentReturn->name(), QString(QLatin1String("content1"))); QCOMPARE(mRequestContentReturn->type(), Tp::MediaStreamTypeAudio); QCOMPARE(mRequestContentReturn->disposition(), Tp::CallContentDispositionNone); QCOMPARE(mChan->contentsForType(Tp::MediaStreamTypeAudio).size(), 2); qDebug() << "calling requestContent with Video"; mRequestContentReturn.reset(); QVERIFY(connect(mChan->requestContent(QLatin1String("content2"), Tp::MediaStreamTypeVideo, Tp::MediaStreamDirectionBidirectional), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestContentFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mRequestContentReturn.isNull()); QCOMPARE(mRequestContentReturn->name(), QString(QLatin1String("content2"))); QCOMPARE(mRequestContentReturn->type(), Tp::MediaStreamTypeVideo); // test content removal QCOMPARE(mChan->contentsForType(Tp::MediaStreamTypeAudio).size(), 2); content = mChan->contentsForType(Tp::MediaStreamTypeAudio).first(); QVERIFY(content); QVERIFY(connect(mChan.data(), SIGNAL(contentRemoved(Tp::CallContentPtr,Tp::CallStateReason)), SLOT(onContentRemoved(Tp::CallContentPtr,Tp::CallStateReason)))); QVERIFY(connect(content->remove(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); while (mContentRemoved.isNull()) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mChan->contentsForType(Tp::MediaStreamTypeAudio).size(), 1); QCOMPARE(mContentRemoved, content); QCOMPARE(mCallStateReason.reason, (uint) Tp::CallStateChangeReasonUserRequested); // test content sending changed content = mChan->contentsForType(Tp::MediaStreamTypeVideo).first(); Tp::CallStreamPtr stream = content->streams().first(); QVERIFY(content); QVERIFY(connect(stream.data(), SIGNAL(localSendingStateChanged(Tp::SendingState,Tp::CallStateReason)), SLOT(onLocalSendingStateChanged(Tp::SendingState,Tp::CallStateReason)))); qDebug() << "stopping sending"; QCOMPARE(stream->localSendingState(), Tp::SendingStateSending); QVERIFY(stream->remoteMembers().contains(otherContact)); QVERIFY(connect(stream->requestSending(false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); qDebug() << "stopping receiving"; QVERIFY(connect(stream->requestReceiving(otherContact, false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); qDebug() << "waiting until we're not sending and not receiving"; while (stream->localSendingState() != Tp::SendingStateNone || stream->remoteSendingState(otherContact) != Tp::SendingStateNone) { qDebug() << "re-entering mainloop to wait for local and remote SSC -> None"; // wait local and remote sending state change QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLSSCReturn, Tp::SendingStateNone); QCOMPARE(stream->localSendingState(), Tp::SendingStateNone); QCOMPARE(stream->remoteSendingState(otherContact), Tp::SendingStateNone); qDebug() << "re-enabling sending"; mLSSCReturn = (Tp::SendingState) -1; QVERIFY(connect(stream->requestSending(true), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLSSCReturn == (Tp::SendingState) -1) { qDebug() << "re-entering mainloop to wait for SSC -> Sending"; // wait sending state change QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLSSCReturn, Tp::SendingStateSending); qDebug() << "flushing D-Bus events"; processDBusQueue(mChan.data()); qDebug() << "enabling receiving"; mRSSCState = RSSCStateInitial; mSuccessfulRequestReceivings = 0; QVERIFY(connect(stream.data(), SIGNAL(remoteSendingStateChanged(QHash,Tp::CallStateReason)), SLOT(onRemoteSendingStateChanged(QHash,Tp::CallStateReason)))); // test content receiving changed QVERIFY(connect(stream->requestReceiving(otherContact, true), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulRequestReceiving(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(mRSSCState), static_cast(RSSCStateDone)); } void TestCallChannel::testIncomingCall() { mConn->client()->lowlevel()->setSelfPresence(QLatin1String("away"), QLatin1String("preparing for a test")); Tp::Client::ConnectionInterfaceRequestsInterface *connRequestsInterface = mConn->client()->optionalInterface(); QVERIFY(connect(connRequestsInterface, SIGNAL(NewChannels(const Tp::ChannelDetailsList&)), SLOT(onNewChannels(const Tp::ChannelDetailsList&)))); mConn->client()->lowlevel()->setSelfPresence(QLatin1String("available"), QLatin1String("call me?")); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan); QCOMPARE(mChan->contents().size(), 0); Features features; features << CallChannel::FeatureCallState << CallChannel::FeatureContents; QVERIFY(connect(mChan->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureCallState)); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureContents)); Tp::ContactPtr otherContact = mChan->initiatorContact(); QVERIFY(otherContact); QCOMPARE(mChan->callState(), CallStateInitialised); QVERIFY(connect(mChan.data(), SIGNAL(callFlagsChanged(Tp::CallFlags)), SLOT(onCallFlagsChanged(Tp::CallFlags)))); QVERIFY(connect(mChan->setRinging(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mCallFlags.testFlag(CallFlagLocallyRinging)); QVERIFY(mChan->callFlags().testFlag(CallFlagLocallyRinging)); QVERIFY(connect(mChan->setQueued(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mCallFlags.testFlag(CallFlagLocallyQueued)); QVERIFY(mChan->callFlags().testFlag(CallFlagLocallyQueued)); QVERIFY(connect(mChan->accept(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->callState(), CallStateAccepted); QVERIFY(!mCallFlags.testFlag(CallFlagLocallyQueued)); QVERIFY(!mCallFlags.testFlag(CallFlagLocallyRinging)); QVERIFY(!mChan->callFlags().testFlag(CallFlagLocallyRinging)); QVERIFY(!mChan->callFlags().testFlag(CallFlagLocallyQueued)); /* QCOMPARE(mChan->groupContacts().size(), 2); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QVERIFY(mChan->groupContacts().contains(mConn->selfContact())); */ QCOMPARE(mChan->contents().size(), 1); Tp::CallContentPtr content = mChan->contents().first(); QCOMPARE(content->channel(), mChan); QCOMPARE(content->type(), Tp::MediaStreamTypeAudio); qDebug() << "requesting a video stream"; // Request video stream QVERIFY(connect(mChan->requestContent(QLatin1String("video_content"), Tp::MediaStreamTypeVideo, Tp::MediaStreamDirectionBidirectional), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestContentFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); content = mRequestContentReturn; QCOMPARE(content->type(), Tp::MediaStreamTypeVideo); QCOMPARE(mChan->contents().size(), 2); QVERIFY(mChan->contents().contains(content)); QCOMPARE(mChan->contentsForType(Tp::MediaStreamTypeAudio).size(), 1); QCOMPARE(mChan->contentsForType(Tp::MediaStreamTypeVideo).size(), 1); // test content removal content = mChan->contentsForType(Tp::MediaStreamTypeAudio).first(); QVERIFY(content); qDebug() << "removing the audio content"; // call does not have the concept of removing streams, it will remove the content the stream // belongs QVERIFY(connect(mChan.data(), SIGNAL(contentRemoved(Tp::CallContentPtr,Tp::CallStateReason)), SLOT(onContentRemoved(Tp::CallContentPtr,Tp::CallStateReason)))); QVERIFY(connect(content->remove(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); while (mContentRemoved.isNull()) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mContentRemoved, content); } void TestCallChannel::testHold() { QList contacts = mConn->contacts(QStringList() << QLatin1String("bob")); QCOMPARE(contacts.size(), 1); ContactPtr otherContact = contacts.at(0); QVERIFY(otherContact); QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), otherContact->handle()[0]); request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), true); mChan = CallChannelPtr::qObjectCast(mConn->createChannel(request)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(Tp::CallChannel::FeatureLocalHoldState), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureLocalHoldState)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(Tp::LocalHoldStateUnheld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(Tp::LocalHoldStateReasonNone)); QVERIFY(connect(mChan.data(), SIGNAL(localHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)), SLOT(onLocalHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)))); // Request hold QVERIFY(connect(mChan->requestHold(true), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLocalHoldStates.size() != 2) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLocalHoldStates.first(), static_cast(Tp::LocalHoldStatePendingHold)); QCOMPARE(mLocalHoldStateReasons.first(), static_cast(Tp::LocalHoldStateReasonRequested)); QCOMPARE(mLocalHoldStates.last(), static_cast(Tp::LocalHoldStateHeld)); QCOMPARE(mLocalHoldStateReasons.last(), static_cast(Tp::LocalHoldStateReasonRequested)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(Tp::LocalHoldStateHeld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(Tp::LocalHoldStateReasonRequested)); mLocalHoldStates.clear(); mLocalHoldStateReasons.clear(); // Request unhold QVERIFY(connect(mChan->requestHold(false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLocalHoldStates.size() != 2) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLocalHoldStates.first(), static_cast(Tp::LocalHoldStatePendingUnhold)); QCOMPARE(mLocalHoldStateReasons.first(), static_cast(Tp::LocalHoldStateReasonRequested)); QCOMPARE(mLocalHoldStates.last(), static_cast(Tp::LocalHoldStateUnheld)); QCOMPARE(mLocalHoldStateReasons.last(), static_cast(Tp::LocalHoldStateReasonRequested)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(Tp::LocalHoldStateUnheld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(Tp::LocalHoldStateReasonRequested)); } void TestCallChannel::testHangup() { qDebug() << "requesting contact for alice"; QList contacts = mConn->contacts(QStringList() << QLatin1String("alice")); QCOMPARE(contacts.size(), 1); ContactPtr otherContact = contacts.at(0); QVERIFY(otherContact); qDebug() << "creating the channel"; QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), otherContact->handle()[0]); request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), true); mChan = CallChannelPtr::qObjectCast(mConn->createChannel(request)); QVERIFY(mChan); qDebug() << "making the channel ready"; QVERIFY(connect(mChan->becomeReady(CallChannel::FeatureCallState), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureCallState)); QCOMPARE(mChan->callState(), CallStatePendingInitiator); QVERIFY(connect(mChan->hangup(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->callState(), CallStateEnded); QCOMPARE(mChan->callStateReason().reason, (uint) CallStateChangeReasonUserRequested); } void TestCallChannel::testCallMembers() { qDebug() << "requesting contact for john"; QList contacts = mConn->contacts(QStringList() << QLatin1String("john")); QCOMPARE(contacts.size(), 1); ContactPtr otherContact = contacts.at(0); QVERIFY(otherContact); qDebug() << "creating the channel"; QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), otherContact->handle()[0]); request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), true); mChan = CallChannelPtr::qObjectCast(mConn->createChannel(request)); QVERIFY(mChan); qDebug() << "making the channel ready"; Features features; features << CallChannel::FeatureCallState << CallChannel::FeatureCallMembers << CallChannel::FeatureContents; QVERIFY(connect(mChan->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureCallMembers)); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureContents)); qDebug() << "accepting the call"; QCOMPARE(mChan->callState(), CallStatePendingInitiator); QCOMPARE(mChan->remoteMembers().size(), 1); QVERIFY(connect(mChan->accept(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->callState(), CallStateInitialised); QCOMPARE(mChan->callStateReason().reason, (uint) CallStateChangeReasonUserRequested); qDebug() << "ringing on the remote side"; QVERIFY(connect(mChan.data(), SIGNAL(remoteMemberFlagsChanged(QHash,Tp::CallStateReason)), SLOT(onRemoteMemberFlagsChanged(QHash,Tp::CallStateReason)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->callState(), CallStateInitialised); QCOMPARE(mRemoteMemberFlags.size(), 1); QCOMPARE(mChan->remoteMembers().size(), 1); QVERIFY(mRemoteMemberFlags.constBegin().value().testFlag(CallMemberFlagRinging)); QVERIFY(mChan->remoteMemberFlags(otherContact).testFlag(CallMemberFlagRinging)); QVERIFY(disconnect(mChan.data(), SIGNAL(remoteMemberFlagsChanged(QHash,Tp::CallStateReason)), this, SLOT(onRemoteMemberFlagsChanged(QHash,Tp::CallStateReason)))); qDebug() << "remote contact answers"; QVERIFY(connect(mChan.data(), SIGNAL(callStateChanged(Tp::CallState)), SLOT(onCallStateChanged(Tp::CallState)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCallState, CallStateAccepted); QCOMPARE(mChan->callState(), CallStateAccepted); QVERIFY(disconnect(mChan.data(), SIGNAL(callStateChanged(Tp::CallState)), this, SLOT(onCallStateChanged(Tp::CallState)))); qDebug() << "testing members"; QCOMPARE(mChan->contents().size(), 1); CallContentPtr content = mChan->contents().at(0); QCOMPARE(content->streams().size(), 1); QCOMPARE(mChan->remoteMembers().size(), 1); QCOMPARE(content->streams().at(0)->remoteMembers().size(), 1); ContactPtr contact1 = *mChan->remoteMembers().constBegin(); ContactPtr contact2 = *content->streams().at(0)->remoteMembers().constBegin(); QCOMPARE(contact1->id(), QString::fromLatin1("john")); QCOMPARE(contact2->id(), QString::fromLatin1("john")); qDebug() << "hanging up"; QVERIFY(connect(mChan.data(), SIGNAL(remoteMembersRemoved(Tp::Contacts,Tp::CallStateReason)), SLOT(onRemoteMembersRemoved(Tp::Contacts,Tp::CallStateReason)))); QVERIFY(connect(mChan->hangup(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->callState(), CallStateEnded); QCOMPARE(mChan->callStateReason().reason, (uint) CallStateChangeReasonUserRequested); QCOMPARE(mRemoteMembersRemoved.size(), 1); QCOMPARE((*mRemoteMembersRemoved.constBegin())->id(), QString::fromLatin1("john")); QCOMPARE(mChan->remoteMembers().size(), 0); QCOMPARE(mChan->contents().size(), 0); } void TestCallChannel::testDTMF() { mConn->client()->lowlevel()->setSelfPresence(QLatin1String("away"), QLatin1String("preparing for a test")); Tp::Client::ConnectionInterfaceRequestsInterface *connRequestsInterface = mConn->client()->optionalInterface(); QVERIFY(connect(connRequestsInterface, SIGNAL(NewChannels(const Tp::ChannelDetailsList&)), SLOT(onNewChannels(const Tp::ChannelDetailsList&)))); mConn->client()->lowlevel()->setSelfPresence(QLatin1String("available"), QLatin1String("call me?")); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan); qDebug() << "making the channel ready"; QVERIFY(connect(mChan->becomeReady(CallChannel::FeatureContents), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureContents)); QVERIFY(connect(mChan->accept(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->contents().size(), 1); Tp::CallContentPtr content = mChan->contents().first(); QCOMPARE(content->channel(), mChan); QCOMPARE(content->type(), Tp::MediaStreamTypeAudio); /* TODO enable when/if the example call CM actually supports DTMF QVERIFY(content->supportsDTMF()); QVERIFY(connect(content->startDTMFTone(DTMFEventDigit0), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(content->stopDTMFTone(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(content->startDTMFTone((DTMFEvent) 1234), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, QString(TP_QT_ERROR_INVALID_ARGUMENT)); */ qDebug() << "requesting video content"; QVERIFY(connect(mChan->requestContent(QLatin1String("video_content"), Tp::MediaStreamTypeVideo, Tp::MediaStreamDirectionBidirectional), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestContentFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); content = mRequestContentReturn; QCOMPARE(content->type(), Tp::MediaStreamTypeVideo); QVERIFY(!content->supportsDTMF()); QVERIFY(connect(content->startDTMFTone(DTMFEventDigit0), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, QString(TP_QT_ERROR_NOT_IMPLEMENTED)); QVERIFY(connect(content->stopDTMFTone(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, QString(TP_QT_ERROR_NOT_IMPLEMENTED)); } void TestCallChannel::testFeatureCore() { qDebug() << "requesting contact for alice"; QList contacts = mConn->contacts(QStringList() << QLatin1String("alice")); QCOMPARE(contacts.size(), 1); ContactPtr otherContact = contacts.at(0); QVERIFY(otherContact); qDebug() << "creating the channel"; QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), otherContact->handle()[0]); request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), true); mChan = CallChannelPtr::qObjectCast(mConn->createChannel(request)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(Tp::CallChannel::FeatureCore)); QVERIFY(mChan->hasInitialAudio()); QCOMPARE(mChan->initialAudioName(), QString::fromLatin1("audio")); QVERIFY(!mChan->hasInitialVideo()); QCOMPARE(mChan->initialVideoName(), QString::fromLatin1("video")); QVERIFY(mChan->hasMutableContents()); QVERIFY(mChan->handlerStreamingRequired()); qDebug() << "creating second CallChannel object"; //this object is not passed immutable properties on //the constructor, so it will have to introspect them. CallChannelPtr chan2 = CallChannel::create(mConn->client(), mChan->objectPath(), QVariantMap()); QVERIFY(connect(chan2->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(chan2->isReady(Tp::CallChannel::FeatureCore)); QVERIFY(chan2->hasInitialAudio()); QCOMPARE(chan2->initialAudioName(), QString::fromLatin1("audio")); QVERIFY(!chan2->hasInitialVideo()); QCOMPARE(chan2->initialVideoName(), QString::fromLatin1("video")); QVERIFY(chan2->hasMutableContents()); QVERIFY(chan2->handlerStreamingRequired()); } void TestCallChannel::cleanup() { mChan.reset(); cleanupImpl(); } void TestCallChannel::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestCallChannel) #include "_gen/call-channel.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/account-connection-factory.cpp0000644000175100017520000003332212530423576025766 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; // A really minimal Account implementation, totally not spec compliant outside the parts stressed by // this test class AccountAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Account") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Connection READ Connection) Q_PROPERTY(QStringList Interfaces READ Interfaces) public: AccountAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), mConnection(QLatin1String("/")) { } virtual ~AccountAdaptor() { } void setConnection(QString conn) { if (conn.isEmpty()) { conn = QLatin1String("/"); } mConnection = QDBusObjectPath(conn); QVariantMap props; props.insert(QLatin1String("Connection"), QVariant::fromValue(mConnection)); Q_EMIT AccountPropertyChanged(props); } public: // Properties inline QDBusObjectPath Connection() const { return mConnection; } inline QStringList Interfaces() const { return QStringList(); } Q_SIGNALS: // Signals void AccountPropertyChanged(const QVariantMap &properties); private: QDBusObjectPath mConnection; }; class TestAccountConnectionFactory : public Test { Q_OBJECT public: TestAccountConnectionFactory(QObject *parent = 0) : Test(parent), mConn1(0), mConn2(0), mDispatcher(0), mAccountAdaptor(0), mReceivedHaveConnection(0), mReceivedConn(0) { } protected Q_SLOTS: void onConnectionChanged(const Tp::ConnectionPtr &conn); void expectPropertyChange(const QString &property); private Q_SLOTS: void initTestCase(); void init(); void testIntrospectSeveralAccounts(); void testCreateAndIntrospect(); void testDefaultFactoryInitialConn(); void testReadifyingFactoryInitialConn(); void testSwitch(); void testQueuedSwitch(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn1, *mConn2; QObject *mDispatcher; QString mAccountBusName, mAccountPath; AccountAdaptor *mAccountAdaptor; AccountPtr mAccount; bool *mReceivedHaveConnection; QString *mReceivedConn; QStringList mReceivedConns; }; void TestAccountConnectionFactory::onConnectionChanged(const Tp::ConnectionPtr &conn) { qDebug() << "have connection:" << !conn.isNull(); if (mReceivedHaveConnection) { delete mReceivedHaveConnection; } mReceivedHaveConnection = new bool(!conn.isNull()); } void TestAccountConnectionFactory::expectPropertyChange(const QString &property) { if (property != QLatin1String("connection")) { // Not interesting return; } ConnectionPtr conn = mAccount->connection(); qDebug() << "connection changed:" << (conn ? conn->objectPath() : QLatin1String("none")); if (conn) { QCOMPARE(conn->objectPath(), conn->objectPath()); } if (mReceivedConn) { delete mReceivedConn; } mReceivedConn = new QString(conn ? conn->objectPath() : QLatin1String("")); mReceivedConns.push_back(conn ? conn->objectPath() : QLatin1String("")); } void TestAccountConnectionFactory::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("account-connection-factory"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn1 = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL); QCOMPARE(mConn1->isReady(), false); mConn2 = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me2@example.com", "protocol", "simple", NULL); QCOMPARE(mConn2->isReady(), false); mAccountBusName = TP_QT_IFACE_ACCOUNT_MANAGER; mAccountPath = QLatin1String("/org/freedesktop/Telepathy/Account/simple/simple/account"); } void TestAccountConnectionFactory::init() { initImpl(); mDispatcher = new QObject(this); mAccountAdaptor = new AccountAdaptor(mDispatcher); QDBusConnection bus = QDBusConnection::sessionBus(); QVERIFY(bus.registerService(mAccountBusName)); QVERIFY(bus.registerObject(mAccountPath, mDispatcher)); } // If this test fails, probably the code which tries to introspect the CD just once and then // continue with Account introspection has a bug void TestAccountConnectionFactory::testIntrospectSeveralAccounts() { QList ops; for (int i = 0; i < 10; i++) { AccountPtr acc = Account::create(mAccountBusName, mAccountPath); // This'll get the CD introspected in the middle (but won't finish any of the pending ops, // as they'll only finish in a singleShot in the next iter) // // One iteration to get readinessHelper to start introspecting, // the second to download the CD property // the third to get PendingVariant to actually emit the finished signal for it if (i == 5) { mLoop->processEvents(); mLoop->processEvents(); mLoop->processEvents(); } ops.push_back(acc->becomeReady()); } QVERIFY(connect(new PendingComposite(ops, SharedPtr()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } // If this test fails, probably the mini-Account implements too little for the Account proxy to work // OR the Account proxy is completely broken :) void TestAccountConnectionFactory::testCreateAndIntrospect() { mAccount = Account::create(mAccountBusName, mAccountPath); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestAccountConnectionFactory::testDefaultFactoryInitialConn() { mAccountAdaptor->setConnection(mConn1->objectPath()); mAccount = Account::create(mAccountBusName, mAccountPath); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAccount->connection()->objectPath(), mConn1->objectPath()); QVERIFY(!mAccount->connection().isNull()); QCOMPARE(mAccount->connectionFactory()->features(), Features()); } void TestAccountConnectionFactory::testReadifyingFactoryInitialConn() { mAccountAdaptor->setConnection(mConn1->objectPath()); mAccount = Account::create(mAccountBusName, mAccountPath, ConnectionFactory::create(QDBusConnection::sessionBus(), Connection::FeatureCore), ChannelFactory::create(QDBusConnection::sessionBus())); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAccount->connection()->objectPath(), mConn1->objectPath()); ConnectionPtr conn = mAccount->connection(); QVERIFY(!conn.isNull()); QVERIFY(conn->isReady(Connection::FeatureCore)); QCOMPARE(mAccount->connectionFactory()->features(), Features(Connection::FeatureCore)); } void TestAccountConnectionFactory::testSwitch() { mAccount = Account::create(mAccountBusName, mAccountPath, ConnectionFactory::create(QDBusConnection::sessionBus(), Connection::FeatureCore), ChannelFactory::create(QDBusConnection::sessionBus())); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mAccount->connection().isNull()); QVERIFY(connect(mAccount.data(), SIGNAL(connectionChanged(const Tp::ConnectionPtr &)), SLOT(onConnectionChanged(const Tp::ConnectionPtr &)))); QVERIFY(connect(mAccount.data(), SIGNAL(propertyChanged(QString)), SLOT(expectPropertyChange(QString)))); // Switch from none to conn 1 mAccountAdaptor->setConnection(mConn1->objectPath()); while (!mReceivedHaveConnection || !mReceivedConn) { mLoop->processEvents(); } QCOMPARE(*mReceivedHaveConnection, true); QCOMPARE(*mReceivedConn, mConn1->objectPath()); delete mReceivedHaveConnection; mReceivedHaveConnection = 0; delete mReceivedConn; mReceivedConn = 0; QCOMPARE(mAccount->connection()->objectPath(), mConn1->objectPath()); QVERIFY(!mAccount->connection().isNull()); ConnectionPtr conn = mAccount->connection(); QVERIFY(!conn.isNull()); QCOMPARE(conn->objectPath(), mConn1->objectPath()); QVERIFY(conn->isReady(Connection::FeatureCore)); // Switch from conn 1 to conn 2 mAccountAdaptor->setConnection(mConn2->objectPath()); while (!mReceivedConn) { mLoop->processEvents(); } QCOMPARE(*mReceivedConn, mConn2->objectPath()); delete mReceivedConn; mReceivedConn = 0; // connectionChanged() should have been emitted as it is a new connection QVERIFY(mReceivedHaveConnection); QVERIFY(!mAccount->connection().isNull()); QCOMPARE(mAccount->connection()->objectPath(), mConn2->objectPath()); conn = mAccount->connection(); QVERIFY(!conn.isNull()); QCOMPARE(conn->objectPath(), mConn2->objectPath()); QVERIFY(conn->isReady(Connection::FeatureCore)); // Switch from conn 2 to none mAccountAdaptor->setConnection(QString()); while (!mReceivedHaveConnection || !mReceivedConn) { mLoop->processEvents(); } QCOMPARE(*mReceivedConn, QString()); QCOMPARE(*mReceivedHaveConnection, false); QVERIFY(mAccount->connection().isNull()); } void TestAccountConnectionFactory::testQueuedSwitch() { mAccount = Account::create(mAccountBusName, mAccountPath, ConnectionFactory::create(QDBusConnection::sessionBus(), Connection::FeatureCore), ChannelFactory::create(QDBusConnection::sessionBus())); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mAccount->connection().isNull()); QVERIFY(connect(mAccount.data(), SIGNAL(propertyChanged(QString)), SLOT(expectPropertyChange(QString)))); // Switch a few times but don't give the proxy update machinery time to run mAccountAdaptor->setConnection(mConn1->objectPath()); mAccountAdaptor->setConnection(QString()); mAccountAdaptor->setConnection(mConn2->objectPath()); mAccountAdaptor->setConnection(QString()); mAccountAdaptor->setConnection(QString()); mAccountAdaptor->setConnection(QString()); mAccountAdaptor->setConnection(mConn2->objectPath()); mAccountAdaptor->setConnection(QString()); mAccountAdaptor->setConnection(mConn2->objectPath()); mAccountAdaptor->setConnection(mConn2->objectPath()); mAccountAdaptor->setConnection(mConn1->objectPath()); // We should get a total of 8 changes because some of them aren't actually any different while (mReceivedConns.size() < 8) { mLoop->processEvents(); } // To ensure it didn't go over, which might be possible if it handled two events in one iter QCOMPARE(mReceivedConns.size(), 8); // Ensure we got them in the correct order QCOMPARE(mReceivedConns, QStringList() << mConn1->objectPath() << QString() << mConn2->objectPath() << QString() << mConn2->objectPath() << QString() << mConn2->objectPath() << mConn1->objectPath()); // Check that the final state is correct QCOMPARE(mAccount->connection()->objectPath(), mConn1->objectPath()); QVERIFY(!mAccount->connection().isNull()); } void TestAccountConnectionFactory::cleanup() { mAccount.reset(); if (mReceivedHaveConnection) { delete mReceivedHaveConnection; mReceivedHaveConnection = 0; } if (mReceivedConn) { delete mReceivedConn; mReceivedConn = 0; } if (mAccountAdaptor) { delete mAccountAdaptor; mAccountAdaptor = 0; } if (mDispatcher) { delete mDispatcher; mDispatcher = 0; } mReceivedConns.clear(); cleanupImpl(); } void TestAccountConnectionFactory::cleanupTestCase() { if (mConn1) { QCOMPARE(mConn1->disconnect(), true); delete mConn1; } if (mConn2) { QCOMPARE(mConn2->disconnect(), true); delete mConn2; } cleanupTestCaseImpl(); } QTEST_MAIN(TestAccountConnectionFactory) #include "_gen/account-connection-factory.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/account-basics.cpp0000644000175100017520000005763512530423576023443 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestAccountBasics : public Test { Q_OBJECT public: TestAccountBasics(QObject *parent = 0) : Test(parent), mConn(0), mAccountsCount(0) { } protected Q_SLOTS: void onNewAccount(const Tp::AccountPtr &); void onAccountServiceNameChanged(const QString &); void onAccountDisplayNameChanged(const QString &); void onAccountIconNameChanged(const QString &); void onAccountNicknameChanged(const QString &); void onAccountAvatarChanged(const Tp::Avatar &); void onAccountParametersChanged(const QVariantMap &); void onAccountCapabilitiesChanged(const Tp::ConnectionCapabilities &); void onAccountConnectsAutomaticallyChanged(bool); void onAccountAutomaticPresenceChanged(const Tp::Presence &); void onAccountRequestedPresenceChanged(const Tp::Presence &); void onAccountCurrentPresenceChanged(const Tp::Presence &); private Q_SLOTS: void initTestCase(); void init(); void testBasics(); void cleanup(); void cleanupTestCase(); private: QStringList pathsForAccounts(const QList &list); QStringList pathsForAccounts(const AccountSetPtr &set); Tp::AccountManagerPtr mAM; TestConnHelper *mConn; int mAccountsCount; bool mCreatingAccount; QHash mProps; }; #define TEST_VERIFY_PROPERTY_CHANGE(acc, Type, PropertyName, propertyName, expectedValue) \ TEST_VERIFY_PROPERTY_CHANGE_EXTENDED(acc, Type, PropertyName, propertyName, \ propertyName ## Changed, acc->set ## PropertyName(expectedValue), expectedValue) #define TEST_VERIFY_PROPERTY_CHANGE_EXTENDED(acc, Type, PropertyName, propertyName, signalName, po, expectedValue) \ { \ mProps.clear(); \ qDebug().nospace() << "connecting to " << #propertyName << "Changed()"; \ QVERIFY(connect(acc.data(), \ SIGNAL(signalName(Type)), \ SLOT(onAccount ## PropertyName ## Changed(Type)))); \ qDebug().nospace() << "setting " << #propertyName; \ QVERIFY(connect(po, \ SIGNAL(finished(Tp::PendingOperation*)), \ SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); \ QCOMPARE(mLoop->exec(), 0); \ \ if (!mProps.contains(QLatin1String(#PropertyName))) { \ qDebug().nospace() << "waiting for the " << #propertyName << "Changed signal"; \ QCOMPARE(mLoop->exec(), 0); \ } else { \ qDebug().nospace() << "not waiting for " << #propertyName << "Changed because we already got it"; \ } \ \ QCOMPARE(acc->propertyName(), expectedValue); \ QCOMPARE(acc->propertyName(), \ mProps[QLatin1String(#PropertyName)].value< Type >()); \ \ QVERIFY(disconnect(acc.data(), \ SIGNAL(signalName(Type)), \ this, \ SLOT(onAccount ## PropertyName ## Changed(Type)))); \ processDBusQueue(acc.data()); \ } #define TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(Type, PropertyName) \ void TestAccountBasics::onAccount ## PropertyName ## Changed(Type value) \ { \ mProps[QLatin1String(#PropertyName)] = qVariantFromValue(value); \ mLoop->exit(0); \ } void TestAccountBasics::onNewAccount(const Tp::AccountPtr &acc) { Q_UNUSED(acc); mAccountsCount++; if (!mCreatingAccount) { mLoop->exit(0); } } TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const QString &, ServiceName) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const QString &, DisplayName) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const QString &, IconName) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const QString &, Nickname) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const Avatar &, Avatar) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const QVariantMap &, Parameters) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const ConnectionCapabilities &, Capabilities) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(bool, ConnectsAutomatically) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const Presence &, AutomaticPresence) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const Presence &, RequestedPresence) TEST_IMPLEMENT_PROPERTY_CHANGE_SLOT(const Presence &, CurrentPresence) QStringList TestAccountBasics::pathsForAccounts(const QList &list) { QStringList ret; Q_FOREACH (const AccountPtr &account, list) { ret << account->objectPath(); } return ret; } QStringList TestAccountBasics::pathsForAccounts(const AccountSetPtr &set) { QStringList ret; Q_FOREACH (const AccountPtr &account, set->accounts()) { ret << account->objectPath(); } return ret; } void TestAccountBasics::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("account-basics"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mAM = AccountManager::create(AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore | Account::FeatureCapabilities)); QVERIFY(!mAM->isReady()); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", "me@example.com", "protocol", "echo2", NULL); QVERIFY(mConn->connect()); } void TestAccountBasics::init() { mProps.clear(); mCreatingAccount = false; initImpl(); } void TestAccountBasics::testBasics() { QVERIFY(connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mAM->isReady()); QCOMPARE(mAM->interfaces(), QStringList()); QCOMPARE(mAM->supportedAccountProperties(), QStringList() << QLatin1String("org.freedesktop.Telepathy.Account.Enabled")); QVERIFY(connect(mAM.data(), SIGNAL(newAccount(const Tp::AccountPtr &)), SLOT(onNewAccount(const Tp::AccountPtr &)))); QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); PendingAccount *pacc = mAM->createAccount(QLatin1String("foo"), QLatin1String("bar"), QLatin1String("foobar"), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); mCreatingAccount = true; QCOMPARE(mLoop->exec(), 0); mCreatingAccount = false; QVERIFY(pacc->account()); while (mAccountsCount != 1) { QCOMPARE(mLoop->exec(), 0); } processDBusQueue(mConn->client().data()); QStringList paths; QString accPath(QLatin1String("/org/freedesktop/Telepathy/Account/foo/bar/Account0")); QCOMPARE(pathsForAccounts(mAM->allAccounts()), QStringList() << accPath); QList accs = mAM->accountsForObjectPaths( QStringList() << accPath << QLatin1String("/invalid/path")); QCOMPARE(accs.size(), 2); QCOMPARE(accs[0]->objectPath(), accPath); QVERIFY(!accs[1]); QVERIFY(mAM->allAccounts()[0]->isReady( Account::FeatureCore | Account::FeatureCapabilities)); AccountPtr acc = Account::create(mAM->dbusConnection(), mAM->busName(), QLatin1String("/org/freedesktop/Telepathy/Account/foo/bar/Account0"), mAM->connectionFactory(), mAM->channelFactory(), mAM->contactFactory()); QVERIFY(connect(acc->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady()); QCOMPARE(acc->connectionFactory(), mAM->connectionFactory()); QCOMPARE(acc->channelFactory(), mAM->channelFactory()); QCOMPARE(acc->contactFactory(), mAM->contactFactory()); QVERIFY(acc->isValidAccount()); QVERIFY(acc->isEnabled()); QCOMPARE(acc->cmName(), QLatin1String("foo")); QCOMPARE(acc->protocolName(), QLatin1String("bar")); // Service name is empty, fallback to protocol name QCOMPARE(acc->serviceName(), QLatin1String("bar")); // FeatureProfile not ready yet QVERIFY(!acc->profile()); QCOMPARE(acc->displayName(), QString(QLatin1String("foobar (account 0)"))); QCOMPARE(acc->iconName(), QLatin1String("bob.png")); QCOMPARE(acc->nickname(), QLatin1String("Bob")); // FeatureProtocolInfo not ready yet QVERIFY(!acc->avatarRequirements().isValid()); // FeatureAvatar not ready yet QVERIFY(acc->avatar().avatarData.isEmpty()); QVERIFY(acc->avatar().MIMEType.isEmpty()); QCOMPARE(acc->parameters().size(), 1); QVERIFY(acc->parameters().contains(QLatin1String("account"))); QCOMPARE(qdbus_cast(acc->parameters().value(QLatin1String("account"))), QLatin1String("foobar")); // FeatureProtocolInfo not ready yet QVERIFY(!acc->protocolInfo().isValid()); // FeatureCapabilities not ready yet ConnectionCapabilities caps = acc->capabilities(); QVERIFY(!caps.isSpecificToContact()); QVERIFY(!caps.textChats()); QVERIFY(!caps.streamedMediaCalls()); QVERIFY(!caps.streamedMediaAudioCalls()); QVERIFY(!caps.streamedMediaVideoCalls()); QVERIFY(!caps.streamedMediaVideoCallsWithAudio()); QVERIFY(!caps.upgradingStreamedMediaCalls()); QVERIFY(!caps.fileTransfers()); QVERIFY(!caps.textChatrooms()); QVERIFY(!caps.conferenceStreamedMediaCalls()); QVERIFY(!caps.conferenceStreamedMediaCallsWithInvitees()); QVERIFY(!caps.conferenceTextChats()); QVERIFY(!caps.conferenceTextChatsWithInvitees()); QVERIFY(!caps.conferenceTextChatrooms()); QVERIFY(!caps.conferenceTextChatroomsWithInvitees()); QVERIFY(!caps.contactSearches()); QVERIFY(!caps.contactSearchesWithSpecificServer()); QVERIFY(!caps.contactSearchesWithLimit()); QVERIFY(!caps.streamTubes()); QVERIFY(caps.allClassSpecs().isEmpty()); QVERIFY(!acc->connectsAutomatically()); QVERIFY(!acc->hasBeenOnline()); QCOMPARE(acc->connectionStatus(), ConnectionStatusDisconnected); QCOMPARE(acc->connectionStatusReason(), ConnectionStatusReasonNoneSpecified); QVERIFY(acc->connectionError().isEmpty()); QVERIFY(!acc->connectionErrorDetails().isValid()); QVERIFY(acc->connectionErrorDetails().allDetails().isEmpty()); QVERIFY(!acc->connection()); QVERIFY(!acc->isChangingPresence()); // Neither FeatureProtocolInfo or FeatureProfile are ready yet and we have no connection PresenceSpecList expectedPresences; { SimpleStatusSpec prSpec = { ConnectionPresenceTypeAvailable, true, false }; expectedPresences.append(PresenceSpec(QLatin1String("available"), prSpec)); } { SimpleStatusSpec prSpec = { ConnectionPresenceTypeOffline, true, false }; expectedPresences.append(PresenceSpec(QLatin1String("offline"), prSpec)); } qSort(expectedPresences); PresenceSpecList presences = acc->allowedPresenceStatuses(false); qSort(presences); QCOMPARE(presences.size(), 2); QCOMPARE(presences, expectedPresences); presences = acc->allowedPresenceStatuses(true); qSort(presences); QCOMPARE(presences.size(), 2); QCOMPARE(presences, expectedPresences); // No connection QCOMPARE(acc->maxPresenceStatusMessageLength(), static_cast(0)); QCOMPARE(acc->automaticPresence(), Presence::available()); QCOMPARE(acc->currentPresence(), Presence::offline()); QCOMPARE(acc->requestedPresence(), Presence::offline()); QVERIFY(!acc->isOnline()); QCOMPARE(acc->uniqueIdentifier(), QLatin1String("foo/bar/Account0")); QCOMPARE(acc->normalizedName(), QLatin1String("bob")); TEST_VERIFY_PROPERTY_CHANGE(acc, QString, DisplayName, displayName, QLatin1String("foo@bar")); TEST_VERIFY_PROPERTY_CHANGE(acc, QString, IconName, iconName, QLatin1String("im-foo")); // Setting icon to an empty string should fallback to im-$protocol as FeatureProtocolInfo and // FeatureProtocolInfo are not ready yet TEST_VERIFY_PROPERTY_CHANGE_EXTENDED(acc, QString, IconName, iconName, iconNameChanged, acc->setIconName(QString()), QLatin1String("im-bar")); TEST_VERIFY_PROPERTY_CHANGE(acc, QString, Nickname, nickname, QLatin1String("Bob rocks!")); qDebug() << "making Account::FeatureAvatar ready"; QVERIFY(connect(acc->becomeReady(Account::FeatureAvatar), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady(Account::FeatureAvatar)); Avatar expectedAvatar = { QByteArray("asdfg"), QLatin1String("image/jpeg") }; TEST_VERIFY_PROPERTY_CHANGE(acc, Tp::Avatar, Avatar, avatar, expectedAvatar); QVariantMap expectedParameters = acc->parameters(); expectedParameters[QLatin1String("foo")] = QLatin1String("bar"); TEST_VERIFY_PROPERTY_CHANGE_EXTENDED(acc, QVariantMap, Parameters, parameters, parametersChanged, acc->updateParameters(expectedParameters, QStringList()), expectedParameters); TEST_VERIFY_PROPERTY_CHANGE_EXTENDED(acc, bool, ConnectsAutomatically, connectsAutomatically, connectsAutomaticallyPropertyChanged, acc->setConnectsAutomatically(true), true); TEST_VERIFY_PROPERTY_CHANGE(acc, Tp::Presence, AutomaticPresence, automaticPresence, Presence::busy()); // Changing requested presence will also change hasBeenOnline/isOnline/currentPresence Presence expectedPresence = Presence::busy(); TEST_VERIFY_PROPERTY_CHANGE(acc, Tp::Presence, RequestedPresence, requestedPresence, expectedPresence); QVERIFY(acc->hasBeenOnline()); QVERIFY(acc->isOnline()); QCOMPARE(acc->currentPresence(), expectedPresence); qDebug() << "creating another account"; pacc = mAM->createAccount(QLatin1String("spurious"), QLatin1String("normal"), QLatin1String("foobar"), QVariantMap()); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); mCreatingAccount = true; QCOMPARE(mLoop->exec(), 0); mCreatingAccount = false; while (mAccountsCount != 2) { QCOMPARE(mLoop->exec(), 0); } processDBusQueue(mConn->client().data()); acc = Account::create(mAM->dbusConnection(), mAM->busName(), QLatin1String("/org/freedesktop/Telepathy/Account/spurious/normal/Account0"), mAM->connectionFactory(), mAM->channelFactory(), mAM->contactFactory()); QVERIFY(connect(acc->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady()); QCOMPARE(acc->iconName(), QLatin1String("bob.png")); // Setting icon to an empty string should fallback to Profile/ProtocolInfo/im-$protocol TEST_VERIFY_PROPERTY_CHANGE_EXTENDED(acc, QString, IconName, iconName, iconNameChanged, acc->setIconName(QString()), QLatin1String("im-normal")); QVERIFY(connect(acc->becomeReady(Account::FeatureProtocolInfo), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady(Account::FeatureProtocolInfo)); // This time it's fetched from the protocol object (although it probably internally just // infers it from the protocol name too) QCOMPARE(acc->iconName(), QLatin1String("im-normal")); ProtocolInfo protocolInfo = acc->protocolInfo(); QVERIFY(protocolInfo.isValid()); QCOMPARE(protocolInfo.iconName(), QLatin1String("im-normal")); QVERIFY(protocolInfo.hasParameter(QLatin1String("account"))); QVERIFY(protocolInfo.hasParameter(QLatin1String("password"))); QVERIFY(protocolInfo.hasParameter(QLatin1String("register"))); QVERIFY(!protocolInfo.hasParameter(QLatin1String("bogusparam"))); QCOMPARE(protocolInfo.parameters().size(), 3); QVERIFY(connect(acc->becomeReady(Account::FeatureProfile), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady(Account::FeatureProfile)); ProfilePtr profile = acc->profile(); QVERIFY(!profile.isNull()); QVERIFY(profile->isFake()); QVERIFY(profile->isValid()); QCOMPARE(profile->serviceName(), QString(QLatin1String("%1-%2")) .arg(acc->cmName()).arg(acc->serviceName())); QCOMPARE(profile->type(), QLatin1String("IM")); QCOMPARE(profile->provider(), QString()); QCOMPARE(profile->name(), acc->protocolName()); QCOMPARE(profile->cmName(), acc->cmName()); QCOMPARE(profile->protocolName(), acc->protocolName()); QVERIFY(!profile->parameters().isEmpty()); QVERIFY(profile->allowOtherPresences()); QVERIFY(profile->presences().isEmpty()); QVERIFY(profile->unsupportedChannelClassSpecs().isEmpty()); QCOMPARE(acc->serviceName(), acc->protocolName()); TEST_VERIFY_PROPERTY_CHANGE(acc, QString, ServiceName, serviceName, QLatin1String("spurious-service")); QVERIFY(connect(acc->becomeReady(Account::FeatureAvatar), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady(Account::FeatureAvatar)); QVERIFY(acc->avatar().avatarData.isEmpty()); QCOMPARE(acc->avatar().MIMEType, QString(QLatin1String("image/png"))); // make redundant becomeReady calls QVERIFY(connect(acc->becomeReady(Account::FeatureAvatar | Account::FeatureProtocolInfo), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady(Account::FeatureAvatar | Account::FeatureProtocolInfo)); QVERIFY(acc->avatar().avatarData.isEmpty()); QCOMPARE(acc->avatar().MIMEType, QString(QLatin1String("image/png"))); protocolInfo = acc->protocolInfo(); QVERIFY(protocolInfo.isValid()); QCOMPARE(protocolInfo.iconName(), QLatin1String("im-normal")); QVERIFY(protocolInfo.hasParameter(QLatin1String("account"))); QVERIFY(protocolInfo.hasParameter(QLatin1String("password"))); QVERIFY(protocolInfo.hasParameter(QLatin1String("register"))); QVERIFY(connect(acc->becomeReady(Account::FeatureCapabilities), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady(Account::FeatureCapabilities)); // using protocol info caps = acc->capabilities(); QVERIFY(caps.textChats()); // set new service name will change caps, icon and serviceName QVERIFY(connect(acc.data(), SIGNAL(capabilitiesChanged(const Tp::ConnectionCapabilities &)), SLOT(onAccountCapabilitiesChanged(const Tp::ConnectionCapabilities &)))); TEST_VERIFY_PROPERTY_CHANGE(acc, QString, ServiceName, serviceName, QLatin1String("test-profile")); while (!mProps.contains(QLatin1String("IconName")) && !mProps.contains(QLatin1String("Capabilities"))) { QCOMPARE(mLoop->exec(), 0); } // Now that both FeatureProtocolInfo and FeatureProfile are ready, let's check the allowed // presences expectedPresences.clear(); { SimpleStatusSpec prSpec = { ConnectionPresenceTypeAvailable, true, true }; expectedPresences.append(PresenceSpec(QLatin1String("available"), prSpec)); } { SimpleStatusSpec prSpec = { ConnectionPresenceTypeAway, true, true }; expectedPresences.append(PresenceSpec(QLatin1String("away"), prSpec)); } { SimpleStatusSpec prSpec = { ConnectionPresenceTypeOffline, true, false }; expectedPresences.append(PresenceSpec(QLatin1String("offline"), prSpec)); } qSort(expectedPresences); presences = acc->allowedPresenceStatuses(false); qSort(presences); QCOMPARE(presences.size(), 3); QCOMPARE(presences, expectedPresences); { SimpleStatusSpec prSpec = { ConnectionPresenceTypeExtendedAway, false, false }; expectedPresences.append(PresenceSpec(QLatin1String("xa"), prSpec)); } qSort(expectedPresences); presences = acc->allowedPresenceStatuses(true); qSort(presences); QCOMPARE(presences.size(), 4); QCOMPARE(presences, expectedPresences); QCOMPARE(acc->iconName(), QLatin1String("test-profile-icon")); // using merged protocol info caps and profile caps caps = acc->capabilities(); QVERIFY(!caps.textChats()); Client::DBus::PropertiesInterface *accPropertiesInterface = acc->interface(); // simulate that the account has a connection QVERIFY(connect(new PendingVoid( accPropertiesInterface->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("Connection"), QDBusVariant(mConn->objectPath())), acc), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); // wait for the connection to be built in Account while (acc->connection().isNull()) { QCOMPARE(mLoop->exec(), 0); } QVERIFY(connect(acc->connection()->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(acc->isReady()); // once the status change the capabilities will be updated mProps.clear(); QVERIFY(connect(acc->setRequestedPresence(Presence::available()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); while (!mProps.contains(QLatin1String("Capabilities"))) { QCOMPARE(mLoop->exec(), 0); } // using connection caps now caps = acc->capabilities(); QVERIFY(caps.textChats()); QVERIFY(!caps.textChatrooms()); QVERIFY(!caps.streamedMediaCalls()); QVERIFY(!caps.streamedMediaAudioCalls()); QVERIFY(!caps.streamedMediaVideoCalls()); QVERIFY(!caps.streamedMediaVideoCallsWithAudio()); QVERIFY(!caps.upgradingStreamedMediaCalls()); // once the status change the capabilities will be updated mProps.clear(); QVERIFY(connect(new PendingVoid( accPropertiesInterface->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("Connection"), QDBusVariant(QLatin1String("/"))), acc), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QVERIFY(connect(acc->setRequestedPresence(Presence::offline()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); while (!mProps.contains(QLatin1String("Capabilities"))) { QCOMPARE(mLoop->exec(), 0); } // back to using merged protocol info caps and profile caps caps = acc->capabilities(); QVERIFY(!caps.textChats()); processDBusQueue(mConn->client().data()); } void TestAccountBasics::cleanup() { cleanupImpl(); } void TestAccountBasics::cleanupTestCase() { if (mConn) { QVERIFY(mConn->disconnect()); delete mConn; } cleanupTestCaseImpl(); } QTEST_MAIN(TestAccountBasics) #include "_gen/account-basics.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/stream-tube-chan.cpp0000644000175100017520000010306612530423576023672 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; namespace { struct TestContext { bool withContact; TpSocketAddressType addressType; TpSocketAccessControl accessControl; }; // FIXME: Enable IPv6 and Port access control tests TestContext contexts[] = { { FALSE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, { FALSE, TP_SOCKET_ADDRESS_TYPE_IPV4, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, //{ FALSE, TP_SOCKET_ADDRESS_TYPE_IPV6, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, { FALSE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_CREDENTIALS }, { FALSE, TP_SOCKET_ADDRESS_TYPE_IPV4, TP_SOCKET_ACCESS_CONTROL_PORT }, { TRUE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, { TRUE, TP_SOCKET_ADDRESS_TYPE_IPV4, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, //{ TRUE, TP_SOCKET_ADDRESS_TYPE_IPV6, TP_SOCKET_ACCESS_CONTROL_LOCALHOST }, { TRUE, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_CREDENTIALS }, { TRUE, TP_SOCKET_ADDRESS_TYPE_IPV4, TP_SOCKET_ACCESS_CONTROL_PORT }, { FALSE, (TpSocketAddressType) NUM_TP_SOCKET_ADDRESS_TYPES, (TpSocketAccessControl) NUM_TP_SOCKET_ACCESS_CONTROLS } }; void destroySocketControlList(gpointer data) { g_array_free((GArray *) data, TRUE); } GHashTable *createSupportedSocketTypesHash(TpSocketAddressType addressType, TpSocketAccessControl accessControl) { GHashTable *ret; GArray *tab; ret = g_hash_table_new_full(NULL, NULL, NULL, destroySocketControlList); tab = g_array_sized_new(FALSE, FALSE, sizeof(TpSocketAccessControl), 1); g_array_append_val(tab, accessControl); g_hash_table_insert(ret, GUINT_TO_POINTER(addressType), tab); return ret; } GSocket *createTcpClientGSocket(TpSocketAddressType socketType) { Q_ASSERT(socketType != TP_SOCKET_ADDRESS_TYPE_UNIX); GSocketFamily family = (GSocketFamily) 0; switch (socketType) { case TP_SOCKET_ADDRESS_TYPE_UNIX: family = G_SOCKET_FAMILY_UNIX; break; case TP_SOCKET_ADDRESS_TYPE_IPV4: family = G_SOCKET_FAMILY_IPV4; break; case TP_SOCKET_ADDRESS_TYPE_IPV6: family = G_SOCKET_FAMILY_IPV6; break; default: Q_ASSERT(false); } /* Create socket to connect to the CM */ GError *error = NULL; GSocket *clientSocket = g_socket_new(family, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, &error); Q_ASSERT(clientSocket != NULL); if (socketType == TP_SOCKET_ADDRESS_TYPE_IPV4 || socketType == TP_SOCKET_ADDRESS_TYPE_IPV6) { /* Bind local address */ GSocketAddress *localAddress; GInetAddress *tmp; gboolean success; tmp = g_inet_address_new_loopback(family); localAddress = g_inet_socket_address_new(tmp, 0); success = g_socket_bind(clientSocket, localAddress, TRUE, &error); g_object_unref(tmp); g_object_unref(localAddress); Q_ASSERT(success); } return clientSocket; } } class TestStreamTubeChan : public Test { Q_OBJECT public: TestStreamTubeChan(QObject *parent = 0) : Test(parent), mConn(0), mChanService(0), mLocalConnectionId(-1), mRemoteConnectionId(-1), mGotLocalConnection(false), mGotRemoteConnection(false), mGotSocketConnection(false), mGotConnectionClosed(false), mOfferFinished(false), mRequiresCredentials(false), mCredentialByte(0) { } protected Q_SLOTS: void onNewLocalConnection(uint connectionId); void onNewRemoteConnection(uint connectionId); void onNewSocketConnection(); void onConnectionClosed(uint connectionId, const QString &errorName, const QString &errorMesssage); void onOfferFinished(Tp::PendingOperation *op); void expectPendingTubeConnectionFinished(Tp::PendingOperation *op); private Q_SLOTS: void initTestCase(); void init(); void testCreation(); void testAcceptTwice(); void testAcceptSuccess(); void testAcceptFail(); void testOfferSuccess(); void testOutgoingConnectionMonitoring(); void cleanup(); void cleanupTestCase(); private: void testCheckRemoteConnectionsCommon(); void createTubeChannel(bool requested, TpSocketAddressType addressType, TpSocketAccessControl accessControl, bool withContact); TestConnHelper *mConn; TpTestsStreamTubeChannel *mChanService; StreamTubeChannelPtr mChan; uint mCurrentContext; uint mLocalConnectionId; uint mRemoteConnectionId; bool mGotLocalConnection; bool mGotRemoteConnection; bool mGotSocketConnection; bool mGotConnectionClosed; bool mOfferFinished; bool mRequiresCredentials; uchar mCredentialByte; QHostAddress mExpectedAddress; uint mExpectedPort; uint mExpectedHandle; QString mExpectedId; }; void TestStreamTubeChan::onNewLocalConnection(uint connectionId) { qDebug() << "Got local connection with id:" << connectionId; mLocalConnectionId = connectionId; mGotLocalConnection = true; QVERIFY(mChan->connections().contains(connectionId)); mLoop->exit(0); } void TestStreamTubeChan::onNewRemoteConnection(uint connectionId) { qDebug() << "Got remote connection with id:" << connectionId; mRemoteConnectionId = connectionId; mGotRemoteConnection = true; QVERIFY(mChan->connections().contains(connectionId)); testCheckRemoteConnectionsCommon(); } void TestStreamTubeChan::onNewSocketConnection() { qDebug() << "Got new socket connection"; mGotSocketConnection = true; mLoop->exit(0); } void TestStreamTubeChan::onConnectionClosed(uint connectionId, const QString &errorName, const QString &errorMesssage) { qDebug() << "Got connetion closed for connection" << connectionId; mGotConnectionClosed = true; QVERIFY(!mChan->connections().contains(connectionId)); if (mChan->isRequested()) { testCheckRemoteConnectionsCommon(); } mLoop->exit(0); } void TestStreamTubeChan::onOfferFinished(Tp::PendingOperation *op) { TEST_VERIFY_OP(op); mOfferFinished = true; mLoop->exit(0); } void TestStreamTubeChan::expectPendingTubeConnectionFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingStreamTubeConnection *pstc = qobject_cast(op); mRequiresCredentials = pstc->requiresCredentials(); mCredentialByte = pstc->credentialByte(); mLoop->exit(0); } void TestStreamTubeChan::createTubeChannel(bool requested, TpSocketAddressType addressType, TpSocketAccessControl accessControl, bool withContact) { mChan.reset(); mLoop->processEvents(); tp_clear_object(&mChanService); /* Create service-side tube channel object */ QString chanPath = QString(QLatin1String("%1/Channel")).arg(mConn->objectPath()); TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandleRepoIface *roomRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_ROOM); TpHandle handle; GType type; if (withContact) { handle = tp_handle_ensure(contactRepo, "bob", NULL, NULL); type = TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL; } else { handle = tp_handle_ensure(roomRepo, "#test", NULL, NULL); type = TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL; } TpHandle alfHandle = tp_handle_ensure(contactRepo, "alf", NULL, NULL); GHashTable *sockets = createSupportedSocketTypesHash(addressType, accessControl); mChanService = TP_TESTS_STREAM_TUBE_CHANNEL(g_object_new( type, "connection", mConn->service(), "handle", handle, "requested", requested, "object-path", chanPath.toLatin1().constData(), "supported-socket-types", sockets, "initiator-handle", alfHandle, NULL)); /* Create client-side tube channel object */ GHashTable *props; g_object_get(mChanService, "channel-properties", &props, NULL); if (requested) { mChan = OutgoingStreamTubeChannel::create(mConn->client(), chanPath, QVariantMap()); } else { mChan = IncomingStreamTubeChannel::create(mConn->client(), chanPath, QVariantMap()); } g_hash_table_unref(props); g_hash_table_unref(sockets); } void TestStreamTubeChan::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("stream-tube-chan"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); } void TestStreamTubeChan::init() { initImpl(); mCurrentContext = -1; mLocalConnectionId = -1; mRemoteConnectionId = -1; mGotLocalConnection = false; mGotRemoteConnection = false; mGotConnectionClosed = false; mGotSocketConnection = false; mOfferFinished = false; mRequiresCredentials = false; mCredentialByte = 0; mExpectedAddress = QHostAddress(); mExpectedPort = -1; mExpectedHandle = -1; mExpectedId = QString(); } void TestStreamTubeChan::testCheckRemoteConnectionsCommon() { OutgoingStreamTubeChannelPtr chan = OutgoingStreamTubeChannelPtr::qObjectCast(mChan); QVERIFY(chan); QCOMPARE(chan->contactsForConnections().isEmpty(), false); QCOMPARE(chan->contactsForConnections().contains(mRemoteConnectionId), true); QCOMPARE(chan->contactsForConnections().value(mRemoteConnectionId)->handle()[0], mExpectedHandle); QCOMPARE(chan->contactsForConnections().value(mRemoteConnectionId)->id(), mExpectedId); if (contexts[mCurrentContext].accessControl == TP_SOCKET_ACCESS_CONTROL_PORT) { // qDebug() << "+++ conn for source addresses" << chan->connectionsForSourceAddresses(); QCOMPARE(chan->connectionsForSourceAddresses().isEmpty(), false); QCOMPARE(chan->connectionsForCredentials().isEmpty(), true); QPair srcAddr(mExpectedAddress, mExpectedPort); QCOMPARE(chan->connectionsForSourceAddresses().contains(srcAddr), true); QCOMPARE(chan->connectionsForSourceAddresses().value(srcAddr), mRemoteConnectionId); } else if (contexts[mCurrentContext].accessControl == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) { // qDebug() << "+++ conn for credentials" << chan->connectionsForCredentials(); QCOMPARE(chan->connectionsForCredentials().isEmpty(), false); QCOMPARE(chan->connectionsForSourceAddresses().isEmpty(), true); QCOMPARE(chan->connectionsForCredentials().contains(mCredentialByte), true); QCOMPARE(chan->connectionsForCredentials().value(mCredentialByte), mRemoteConnectionId); } mLoop->exit(0); } void TestStreamTubeChan::testCreation() { /* Outgoing tube */ createTubeChannel(true, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, true); QVERIFY(connect(mChan->becomeReady(OutgoingStreamTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(OutgoingStreamTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(StreamTubeChannel::FeatureConnectionMonitoring), false); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); QCOMPARE(mChan->parameters().isEmpty(), true); QCOMPARE(mChan->service(), QLatin1String("test-service")); QCOMPARE(mChan->supportsIPv4SocketsOnLocalhost(), false); QCOMPARE(mChan->supportsIPv4SocketsWithSpecifiedAddress(), false); QCOMPARE(mChan->supportsIPv6SocketsOnLocalhost(), false); QCOMPARE(mChan->supportsIPv6SocketsWithSpecifiedAddress(), false); QCOMPARE(mChan->supportsUnixSocketsOnLocalhost(), true); QCOMPARE(mChan->supportsUnixSocketsWithCredentials(), false); QCOMPARE(mChan->supportsAbstractUnixSocketsOnLocalhost(), false); QCOMPARE(mChan->supportsAbstractUnixSocketsWithCredentials(), false); QCOMPARE(mChan->connections().isEmpty(), true); QCOMPARE(mChan->addressType(), SocketAddressTypeUnix); QCOMPARE(mChan->ipAddress().first.isNull(), true); QCOMPARE(mChan->localAddress(), QString()); /* incoming tube */ createTubeChannel(false, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(IncomingStreamTubeChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingStreamTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(StreamTubeChannel::FeatureConnectionMonitoring), false); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); QCOMPARE(mChan->parameters().isEmpty(), false); QCOMPARE(mChan->parameters().size(), 1); QCOMPARE(mChan->parameters().contains(QLatin1String("badger")), true); QCOMPARE(mChan->parameters().value(QLatin1String("badger")), QVariant(42)); QCOMPARE(mChan->service(), QLatin1String("test-service")); QCOMPARE(mChan->supportsIPv4SocketsOnLocalhost(), false); QCOMPARE(mChan->supportsIPv4SocketsWithSpecifiedAddress(), false); QCOMPARE(mChan->supportsIPv6SocketsOnLocalhost(), false); QCOMPARE(mChan->supportsIPv6SocketsWithSpecifiedAddress(), false); QCOMPARE(mChan->supportsUnixSocketsOnLocalhost(), true); QCOMPARE(mChan->supportsUnixSocketsWithCredentials(), false); QCOMPARE(mChan->supportsAbstractUnixSocketsOnLocalhost(), false); QCOMPARE(mChan->supportsAbstractUnixSocketsWithCredentials(), false); QCOMPARE(mChan->connections().isEmpty(), true); QCOMPARE(mChan->addressType(), SocketAddressTypeUnix); QCOMPARE(mChan->ipAddress().first.isNull(), true); QCOMPARE(mChan->localAddress(), QString()); } void TestStreamTubeChan::testAcceptTwice() { /* incoming tube */ createTubeChannel(false, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(IncomingStreamTubeChannel::FeatureCore | StreamTubeChannel::FeatureConnectionMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingStreamTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(StreamTubeChannel::FeatureConnectionMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); IncomingStreamTubeChannelPtr chan = IncomingStreamTubeChannelPtr::qObjectCast(mChan); QVERIFY(connect(chan->acceptTubeAsUnixSocket(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->state(), TubeChannelStateOpen); /* try to re-accept the tube */ QVERIFY(connect(chan->acceptTubeAsUnixSocket(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->state(), TubeChannelStateOpen); } void TestStreamTubeChan::testAcceptSuccess() { /* incoming tube */ for (int i = 0; contexts[i].addressType != NUM_TP_SOCKET_ADDRESS_TYPES; i++) { /* as we run several tests here, let's init/cleanup properly */ init(); qDebug() << "Testing context:" << i; mCurrentContext = i; createTubeChannel(false, contexts[i].addressType, contexts[i].accessControl, contexts[i].withContact); QVERIFY(connect(mChan->becomeReady(IncomingStreamTubeChannel::FeatureCore | StreamTubeChannel::FeatureConnectionMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingStreamTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(StreamTubeChannel::FeatureConnectionMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); mLocalConnectionId = -1; mGotLocalConnection = false; QVERIFY(connect(mChan.data(), SIGNAL(newConnection(uint)), SLOT(onNewLocalConnection(uint)))); bool requiresCredentials = ((contexts[i].accessControl == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) ? true : false); GSocket *gSocket = 0; QHostAddress addr; quint16 port = 0; IncomingStreamTubeChannelPtr chan = IncomingStreamTubeChannelPtr::qObjectCast(mChan); if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { QVERIFY(connect(chan->acceptTubeAsUnixSocket(requiresCredentials), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectPendingTubeConnectionFinished(Tp::PendingOperation *)))); } else { if (contexts[i].accessControl == TP_SOCKET_ACCESS_CONTROL_PORT) { gSocket = createTcpClientGSocket(contexts[i].addressType); // There is no way to bind a QTcpSocket and using // QAbstractSocket::setSocketDescriptor does not work either, so using glib sockets // for this test. See http://bugreports.qt.nokia.com/browse/QTBUG-121 GSocketAddress *localAddr; localAddr = g_socket_get_local_address(gSocket, NULL); QVERIFY(localAddr != NULL); addr = QHostAddress(QLatin1String(g_inet_address_to_string( g_inet_socket_address_get_address(G_INET_SOCKET_ADDRESS(localAddr))))); port = g_inet_socket_address_get_port(G_INET_SOCKET_ADDRESS(localAddr)); g_object_unref(localAddr); } else { addr = QHostAddress::Any; port = 0; } QVERIFY(connect(chan->acceptTubeAsTcpSocket(addr, port), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectPendingTubeConnectionFinished(Tp::PendingOperation *)))); } QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->state(), TubeChannelStateOpen); QCOMPARE(mRequiresCredentials, requiresCredentials); if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { qDebug() << "Connecting to host" << mChan->localAddress(); QLocalSocket *socket = new QLocalSocket(this); socket->connectToServer(mChan->localAddress()); if (requiresCredentials) { qDebug() << "Sending credential byte" << mCredentialByte; socket->write(reinterpret_cast(&mCredentialByte), 1); } QCOMPARE(mLoop->exec(), 0); QCOMPARE(mGotLocalConnection, true); qDebug() << "Connected to host"; delete socket; } else { qDebug().nospace() << "Connecting to host " << mChan->ipAddress().first << ":" << mChan->ipAddress().second; QTcpSocket *socket = 0; if (contexts[i].accessControl == TP_SOCKET_ACCESS_CONTROL_PORT) { GSocketAddress *remoteAddr = (GSocketAddress*) g_inet_socket_address_new( g_inet_address_new_from_string( mChan->ipAddress().first.toString().toLatin1().constData()), mChan->ipAddress().second); g_socket_connect(gSocket, remoteAddr, NULL, NULL); } else { socket = new QTcpSocket(); socket->connectToHost(mChan->ipAddress().first, mChan->ipAddress().second); } QCOMPARE(mLoop->exec(), 0); QCOMPARE(mGotLocalConnection, true); qDebug() << "Connected to host"; if (gSocket) { tp_clear_object(&gSocket); } delete socket; } mGotConnectionClosed = false; QVERIFY(connect(mChan.data(), SIGNAL(connectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString)))); tp_tests_stream_tube_channel_last_connection_disconnected(mChanService, TP_ERROR_STR_DISCONNECTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mGotConnectionClosed, true); /* as we run several tests here, let's init/cleanup properly */ cleanup(); } } void TestStreamTubeChan::testAcceptFail() { /* incoming tube */ createTubeChannel(false, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, false); QVERIFY(connect(mChan->becomeReady(IncomingStreamTubeChannel::FeatureCore | StreamTubeChannel::FeatureConnectionMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(IncomingStreamTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(StreamTubeChannel::FeatureConnectionMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateLocalPending); /* when accept is called the channel will be closed service side */ tp_tests_stream_tube_channel_set_close_on_accept (mChanService, TRUE); /* calling accept should fail */ IncomingStreamTubeChannelPtr chan = IncomingStreamTubeChannelPtr::qObjectCast(mChan); QVERIFY(connect(chan->acceptTubeAsUnixSocket(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isValid(), false); /* trying to accept again should fail immediately */ QVERIFY(connect(chan->acceptTubeAsUnixSocket(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); } void TestStreamTubeChan::testOfferSuccess() { /* incoming tube */ for (int i = 0; contexts[i].addressType != NUM_TP_SOCKET_ADDRESS_TYPES; i++) { /* as we run several tests here, let's init/cleanup properly */ init(); qDebug() << "Testing context:" << i; mCurrentContext = i; createTubeChannel(true, contexts[i].addressType, contexts[i].accessControl, contexts[i].withContact); QVERIFY(connect(mChan->becomeReady(OutgoingStreamTubeChannel::FeatureCore | StreamTubeChannel::FeatureConnectionMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(OutgoingStreamTubeChannel::FeatureCore), true); QCOMPARE(mChan->isReady(StreamTubeChannel::FeatureConnectionMonitoring), true); QCOMPARE(mChan->state(), TubeChannelStateNotOffered); QCOMPARE(mChan->parameters().isEmpty(), true); mRemoteConnectionId = -1; mGotRemoteConnection = false; QVERIFY(connect(mChan.data(), SIGNAL(newConnection(uint)), SLOT(onNewRemoteConnection(uint)))); bool requiresCredentials = ((contexts[i].accessControl == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) ? true : false); mExpectedAddress = QHostAddress(); mExpectedPort = -1; mExpectedHandle = -1; mExpectedId = QString(); mOfferFinished = false; mGotSocketConnection = false; QLocalServer *localServer = 0; QTcpServer *tcpServer = 0; OutgoingStreamTubeChannelPtr chan = OutgoingStreamTubeChannelPtr::qObjectCast(mChan); QVariantMap offerParameters; offerParameters.insert(QLatin1String("mushroom"), 44); if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { localServer = new QLocalServer(this); localServer->listen(QLatin1String(tmpnam(NULL))); connect(localServer, SIGNAL(newConnection()), SLOT(onNewSocketConnection())); QVERIFY(connect(chan->offerUnixSocket(localServer, offerParameters, requiresCredentials), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); } else { tcpServer = new QTcpServer(this); tcpServer->listen(QHostAddress::Any, 0); connect(tcpServer, SIGNAL(newConnection()), SLOT(onNewSocketConnection())); QVERIFY(connect(chan->offerTcpSocket(tcpServer, offerParameters), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); } while (mChan->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } QCOMPARE(mGotSocketConnection, false); // A client now connects to the tube QLocalSocket *localSocket = 0; QTcpSocket *tcpSocket = 0; if (contexts[i].addressType == TP_SOCKET_ADDRESS_TYPE_UNIX) { qDebug() << "Connecting to host" << localServer->fullServerName(); localSocket = new QLocalSocket(this); localSocket->connectToServer(localServer->fullServerName()); } else { qDebug().nospace() << "Connecting to host" << tcpServer->serverAddress() << ":" << tcpServer->serverPort(); tcpSocket = new QTcpSocket(this); tcpSocket->connectToHost(tcpServer->serverAddress(), tcpServer->serverPort()); } QCOMPARE(mGotSocketConnection, false); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mGotSocketConnection, true); if (tcpSocket) { mExpectedAddress = tcpSocket->localAddress(); mExpectedPort = tcpSocket->localPort(); } /* simulate CM when peer connects */ GValue *connParam = 0; mCredentialByte = 0; switch (contexts[i].accessControl) { case TP_SOCKET_ACCESS_CONTROL_LOCALHOST: connParam = tp_g_value_slice_new_static_string(""); break; case TP_SOCKET_ACCESS_CONTROL_CREDENTIALS: { mCredentialByte = g_random_int_range(0, G_MAXUINT8); localSocket->write(reinterpret_cast(&mCredentialByte), 1); connParam = tp_g_value_slice_new_byte(mCredentialByte); } break; case TP_SOCKET_ACCESS_CONTROL_PORT: { connParam = tp_g_value_slice_new_take_boxed( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4, dbus_g_type_specialized_construct(TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)); dbus_g_type_struct_set(connParam, 0, tcpSocket->localAddress().toString().toLatin1().constData(), 1, tcpSocket->localPort(), G_MAXUINT); } break; default: Q_ASSERT(false); } TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle bobHandle = tp_handle_ensure(contactRepo, "bob", NULL, NULL); tp_tests_stream_tube_channel_peer_connected_no_stream(mChanService, connParam, bobHandle); tp_g_value_slice_free(connParam); mExpectedHandle = bobHandle; mExpectedId = QLatin1String("bob"); QCOMPARE(mChan->state(), TubeChannelStateRemotePending); while (!mOfferFinished) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mChan->state(), TubeChannelStateOpen); QCOMPARE(mChan->parameters().isEmpty(), false); QCOMPARE(mChan->parameters().size(), 1); QCOMPARE(mChan->parameters().contains(QLatin1String("mushroom")), true); QCOMPARE(mChan->parameters().value(QLatin1String("mushroom")), QVariant(44)); if (!mGotRemoteConnection) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mGotRemoteConnection, true); qDebug() << "Connected to host"; mGotConnectionClosed = false; QVERIFY(connect(mChan.data(), SIGNAL(connectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString)))); tp_tests_stream_tube_channel_last_connection_disconnected(mChanService, TP_ERROR_STR_DISCONNECTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mGotConnectionClosed, true); /* let the internal OutgoingStreamTubeChannel::onConnectionClosed slot be called before * checking the data for that connection */ mLoop->processEvents(); QCOMPARE(chan->contactsForConnections().isEmpty(), true); QCOMPARE(chan->connectionsForSourceAddresses().isEmpty(), true); QCOMPARE(chan->connectionsForCredentials().isEmpty(), true); delete localServer; delete localSocket; delete tcpServer; delete tcpSocket; /* as we run several tests here, let's init/cleanup properly */ cleanup(); } } void TestStreamTubeChan::testOutgoingConnectionMonitoring() { mCurrentContext = 3; // should point to the room, IPv4, AC port one createTubeChannel(true, TP_SOCKET_ADDRESS_TYPE_IPV4, TP_SOCKET_ACCESS_CONTROL_PORT, false); QVERIFY(connect(mChan->becomeReady(OutgoingStreamTubeChannel::FeatureCore | StreamTubeChannel::FeatureConnectionMonitoring), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mChan.data(), SIGNAL(newConnection(uint)), SLOT(onNewRemoteConnection(uint)))); QVERIFY(connect(mChan.data(), SIGNAL(connectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString)))); OutgoingStreamTubeChannelPtr chan = OutgoingStreamTubeChannelPtr::qObjectCast(mChan); QVERIFY(connect(chan->offerTcpSocket(QHostAddress(QHostAddress::LocalHost), 9), // DISCARD SIGNAL(finished(Tp::PendingOperation *)), SLOT(onOfferFinished(Tp::PendingOperation *)))); while (mChan->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } /* simulate CM when peer connects */ GValue *connParam = tp_g_value_slice_new_take_boxed( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4, dbus_g_type_specialized_construct(TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)); mExpectedAddress.setAddress(QLatin1String("127.0.0.1")); mExpectedPort = 12345; dbus_g_type_struct_set(connParam, 0, mExpectedAddress.toString().toLatin1().constData(), 1, static_cast(mExpectedPort), G_MAXUINT); // Simulate a peer connection from someone we don't have a prebuilt contact for yet, and // immediately drop it TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle handle = tp_handle_ensure(contactRepo, "YouHaventSeenMeYet", NULL, NULL); mExpectedHandle = handle; mExpectedId = QLatin1String("youhaventseenmeyet"); tp_tests_stream_tube_channel_peer_connected_no_stream(mChanService, connParam, handle); tp_tests_stream_tube_channel_last_connection_disconnected(mChanService, TP_ERROR_STR_DISCONNECTED); tp_g_value_slice_free(connParam); // Test that we get newConnection first and only then connectionClosed, unlike how the code has // been for a long time, queueing newConnection events and emitting connectionClosed directly while (!mOfferFinished || !mGotRemoteConnection) { QVERIFY(!mGotConnectionClosed || !mOfferFinished); QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mChan->connections().size(), 1); // The connectionClosed emission should finally exit the main loop QCOMPARE(mLoop->exec(), 0); QVERIFY(mGotConnectionClosed); QCOMPARE(mChan->connections().size(), 0); } void TestStreamTubeChan::cleanup() { cleanupImpl(); if (mChan && mChan->isValid()) { qDebug() << "waiting for the channel to become invalidated"; QVERIFY(connect(mChan.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), mLoop, SLOT(quit()))); tp_base_channel_close(TP_BASE_CHANNEL(mChanService)); QCOMPARE(mLoop->exec(), 0); } mChan.reset(); if (mChanService != 0) { g_object_unref(mChanService); mChanService = 0; } mLoop->processEvents(); } void TestStreamTubeChan::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestStreamTubeChan) #include "_gen/stream-tube-chan.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contact-messenger.cpp0000644000175100017520000005351112530423576024153 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; class TestContactMessenger; class CDMessagesAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages1") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: CDMessagesAdaptor(const QDBusConnection &bus, TestContactMessenger *test, QObject *parent) : QDBusAbstractAdaptor(parent), test(test), mBus(bus) { } virtual ~CDMessagesAdaptor() { } void setSimulatedSendError(const QString &error) { mSimulatedSendError = error; } public Q_SLOTS: // Methods QString SendMessage(const QDBusObjectPath &account, const QString &targetID, const Tp::MessagePartList &message, uint flags); private: TestContactMessenger *test; QDBusConnection mBus; QString mSimulatedSendError; }; class AccountAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Account") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Connection READ Connection) Q_PROPERTY(QStringList Interfaces READ Interfaces) public: AccountAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), mConnection(QLatin1String("/")) { } virtual ~AccountAdaptor() { } void setConnection(QString conn) { if (conn.isEmpty()) { conn = QLatin1String("/"); } mConnection = QDBusObjectPath(conn); QVariantMap props; props.insert(QLatin1String("Connection"), QVariant::fromValue(mConnection)); Q_EMIT AccountPropertyChanged(props); } public: // Properties inline QDBusObjectPath Connection() const { return mConnection; } inline QStringList Interfaces() const { return QStringList(); } Q_SIGNALS: // Signals void AccountPropertyChanged(const QVariantMap &properties); private: QDBusObjectPath mConnection; }; class Dispatcher : public QObject, public QDBusContext { Q_OBJECT; public: Dispatcher(QObject *parent) : QObject(parent) { } ~Dispatcher() { } }; class TestContactMessenger : public Test { Q_OBJECT public: TestContactMessenger(QObject *parent = 0) : Test(parent), mCDMessagesAdaptor(0), mAccountAdaptor(0), // service side (telepathy-glib) mConnService(0), mBaseConnService(0), mContactRepo(0), mSendFinished(false), mGotMessageSent(false) { } protected Q_SLOTS: void expectPendingContactsFinished(Tp::PendingOperation *op); void onSendFinished(Tp::PendingOperation *); void onMessageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel); void onMessageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel); private Q_SLOTS: void initTestCase(); void init(); void testNoSupport(); void testObserverRegistration(); void testSimpleSend(); void testReceived(); void testReceivedFromContact(); void cleanup(); void cleanupTestCase(); private: friend class CDMessagesAdaptor; QList ourObservers(); CDMessagesAdaptor *mCDMessagesAdaptor; AccountAdaptor *mAccountAdaptor; QString mAccountBusName, mAccountPath; AccountManagerPtr mAM; AccountPtr mAccount; ConnectionPtr mConn; TextChannelPtr mChan; TpTestsContactsConnection *mConnService; TpBaseConnection *mBaseConnService; TpHandleRepoIface *mContactRepo; ExampleEcho2Channel *mMessagesChanService; QString mConnName; QString mConnPath; QString mMessagesChanPath; bool mSendFinished, mGotMessageSent, mGotMessageReceived; QString mSendError, mSendToken, mMessageSentText, mMessageSentToken, mMessageSentChannel; QString mMessageReceivedText; ChannelPtr mMessageReceivedChan; QList mContacts; }; QString CDMessagesAdaptor::SendMessage(const QDBusObjectPath &account, const QString &targetID, const MessagePartList &message, uint flags) { if (!mSimulatedSendError.isEmpty()) { dynamic_cast(QObject::parent())->sendErrorReply(mSimulatedSendError, QLatin1String("Let's pretend this interface and method don't exist, shall we?")); return QString(); } /* * Sadly, the QDBus local-loop "optimization" prevents us from correctly waiting for the * ObserveChannels call to return, and consequently prevents us from knowing when we can call * Send, knowing that the observer has connected to the message sent signal. * * The real MC doesn't have this limitation because it actually really calls and waits our * ObserveChannels method to finish, unlike dear QDBus here. */ QList observers = test->ourObservers(); Q_FOREACH(ClientObserverInterface *iface, observers) { ChannelDetails chan = { QDBusObjectPath(test->mChan->objectPath()), test->mChan->immutableProperties() }; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(iface->ObserveChannels( QDBusObjectPath(test->mAccount->objectPath()), QDBusObjectPath(test->mChan->connection()->objectPath()), ChannelDetailsList() << chan, QDBusObjectPath(QLatin1String("/")), Tp::ObjectPathList(), QVariantMap())); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), test->mLoop, SLOT(quit())); test->mLoop->exec(); QDBusPendingReply reply = *watcher; qDebug() << reply.error(); // Always gives out "local-loop messages can't have delayed replies" delete watcher; } qDebug() << "Calling send"; // And this is always called before the observer manages to connect to messageSent. Bummer. PendingSendMessage *msg = test->mChan->send(message, static_cast(flags)); connect(msg, SIGNAL(finished(Tp::PendingOperation*)), test, SLOT(expectSuccessfulCall(Tp::PendingOperation*))); test->mLoop->exec(); return msg->sentMessageToken(); } void TestContactMessenger::expectPendingContactsFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingContacts *pending = qobject_cast(op); mContacts = pending->contacts(); mLoop->exit(0); } void TestContactMessenger::onSendFinished(Tp::PendingOperation *op) { PendingSendMessage *msg = qobject_cast(op); QVERIFY(msg != NULL); if (msg->isValid()) { qDebug() << "Send succeeded, got token" << msg->sentMessageToken(); mSendToken = msg->sentMessageToken(); } else { qDebug() << "Send failed, got error" << msg->errorName(); mSendError = msg->errorName(); } mSendFinished = true; } void TestContactMessenger::onMessageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel) { qDebug() << "Got ContactMessenger::messageSent()"; mGotMessageSent = true; mMessageSentToken = sentMessageToken; mMessageSentText = message.text(); } void TestContactMessenger::onMessageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel) { qDebug() << "Got ContactMessenger::messageReceived()"; mGotMessageReceived = true; mMessageReceivedText = message.text(); mMessageReceivedChan = channel; } void TestContactMessenger::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contact-messenger"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); QDBusConnection bus = QDBusConnection::sessionBus(); QString channelDispatcherBusName = TP_QT_IFACE_CHANNEL_DISPATCHER; QString channelDispatcherPath = QLatin1String("/org/freedesktop/Telepathy/ChannelDispatcher"); Dispatcher *dispatcher = new Dispatcher(this); mCDMessagesAdaptor = new CDMessagesAdaptor(bus, this, dispatcher); QVERIFY(bus.registerService(channelDispatcherBusName)); QVERIFY(bus.registerObject(channelDispatcherPath, dispatcher)); mAccountBusName = TP_QT_IFACE_ACCOUNT_MANAGER; mAccountPath = QLatin1String("/org/freedesktop/Telepathy/Account/simple/simple/account"); QObject *acc = new QObject(this); mAccountAdaptor = new AccountAdaptor(acc); QVERIFY(bus.registerService(mAccountBusName)); QVERIFY(bus.registerObject(mAccountPath, acc)); mAccount = Account::create(mAccountBusName, mAccountPath); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAccount->isReady(), true); QCOMPARE(mAccount->supportsRequestHints(), false); QCOMPARE(mAccount->requestsSucceedWithChannel(), false); mConnService = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "example", NULL)); QVERIFY(mConnService != 0); mBaseConnService = TP_BASE_CONNECTION(mConnService); QVERIFY(mBaseConnService != 0); gchar *name, *connPath; GError *error = NULL; QVERIFY(tp_base_connection_register(mBaseConnService, "example", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); mAccountAdaptor->setConnection(mConnPath); mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); QVERIFY(connect(mConn->lowlevel()->requestConnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusConnected)); mContactRepo = tp_base_connection_get_handles(mBaseConnService, TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(mContactRepo, "Ann", 0, 0); mMessagesChanPath = mConnPath + QLatin1String("/MessagesChannel"); QByteArray chanPath = mMessagesChanPath.toLatin1(); mMessagesChanService = EXAMPLE_ECHO_2_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_2_CHANNEL, "connection", mConnService, "object-path", chanPath.data(), "handle", handle, NULL)); QVariantMap immutableProperties; immutableProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), QLatin1String("ann")); mChan = TextChannel::create(mConn, mMessagesChanPath, immutableProperties); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); } void TestContactMessenger::init() { initImpl(); mSendFinished = false; mGotMessageSent = false; mGotMessageReceived = false; mCDMessagesAdaptor->setSimulatedSendError(QString()); } void TestContactMessenger::testNoSupport() { // We should give a descriptive error message if the CD doesn't actually support sending // messages using the new API. NotImplemented should probably be documented for the // sendMessage() methods as an indication that the CD implementation needs to be upgraded. ContactMessengerPtr messenger = ContactMessenger::create(mAccount, QLatin1String("Ann")); QVERIFY(!messenger.isNull()); mCDMessagesAdaptor->setSimulatedSendError(TP_QT_DBUS_ERROR_UNKNOWN_METHOD); PendingSendMessage *pendingSend = messenger->sendMessage(QLatin1String("Hi!")); QVERIFY(pendingSend != NULL); QVERIFY(connect(pendingSend, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pendingSend->isFinished()); QVERIFY(!pendingSend->isValid()); QCOMPARE(pendingSend->errorName(), TP_QT_ERROR_NOT_IMPLEMENTED); // Let's try using the other sendMessage overload similarly as well Message m(ChannelTextMessageTypeAction, QLatin1String("is testing!")); pendingSend = messenger->sendMessage(m.parts()); QVERIFY(pendingSend != NULL); QVERIFY(connect(pendingSend, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pendingSend->isFinished()); QVERIFY(!pendingSend->isValid()); QCOMPARE(pendingSend->errorName(), TP_QT_ERROR_NOT_IMPLEMENTED); } void TestContactMessenger::testObserverRegistration() { ContactMessengerPtr messenger = ContactMessenger::create(mAccount, QLatin1String("Ann")); // At this point, there should be a registered observer for the relevant channel class on our // unique name QList observers = ourObservers(); QVERIFY(!observers.empty()); Q_FOREACH(ClientObserverInterface *observer, observers) { // It shouldn't have recover == true, as it shouldn't be activatable at all, and hence recovery // doesn't make sense for it bool recover; QVERIFY(waitForProperty(observer->requestPropertyRecover(), &recover)); QCOMPARE(recover, true); } // If we destroy our messenger (which is the last/only one for that ID), the observers should go // away, at least in a few mainloop iterations messenger.reset(); QVERIFY(ourObservers().empty()); } void TestContactMessenger::testSimpleSend() { ContactMessengerPtr messenger = ContactMessenger::create(mAccount, QLatin1String("Ann")); QVERIFY(connect(messenger->sendMessage(QLatin1String("Hi!")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onSendFinished(Tp::PendingOperation*)))); while (!mSendFinished) { mLoop->processEvents(); } QVERIFY(mSendError.isEmpty()); } void TestContactMessenger::testReceived() { ContactMessengerPtr messenger = ContactMessenger::create(mAccount, QLatin1String("Ann")); QVERIFY(connect(messenger.data(), SIGNAL(messageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr)), SLOT(onMessageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr)))); QList observers = ourObservers(); Q_FOREACH(ClientObserverInterface *iface, observers) { ChannelDetails chan = { QDBusObjectPath(mChan->objectPath()), mChan->immutableProperties() }; iface->ObserveChannels( QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mChan->connection()->objectPath()), ChannelDetailsList() << chan, QDBusObjectPath(QLatin1String("/")), Tp::ObjectPathList(), QVariantMap()); } guint handle = tp_handle_ensure(mContactRepo, "Ann", 0, 0); TpMessage *msg = tp_cm_message_new_text(mBaseConnService, handle, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, "Hi!"); tp_message_mixin_take_received(G_OBJECT(mMessagesChanService), msg); while (!mGotMessageReceived) { mLoop->processEvents(); } QCOMPARE(mMessageReceivedText, QString::fromLatin1("Hi!")); QCOMPARE(mMessageReceivedChan->objectPath(), mChan->objectPath()); } void TestContactMessenger::testReceivedFromContact() { QVERIFY(connect(mAccount->connection()->contactManager()->contactsForIdentifiers( QStringList() << QLatin1String("Ann")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); ContactPtr ann = mContacts.first(); ContactMessengerPtr messenger = ContactMessenger::create(mAccount, ann); QVERIFY(connect(messenger.data(), SIGNAL(messageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr)), SLOT(onMessageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr)))); QList observers = ourObservers(); Q_FOREACH(ClientObserverInterface *iface, observers) { ChannelDetails chan = { QDBusObjectPath(mChan->objectPath()), mChan->immutableProperties() }; iface->ObserveChannels( QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mChan->connection()->objectPath()), ChannelDetailsList() << chan, QDBusObjectPath(QLatin1String("/")), Tp::ObjectPathList(), QVariantMap()); } guint handle = tp_handle_ensure(mContactRepo, "Ann", 0, 0); TpMessage *msg = tp_cm_message_new_text(mBaseConnService, handle, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, "Hi!"); tp_message_mixin_take_received(G_OBJECT(mMessagesChanService), msg); while (!mGotMessageReceived) { mLoop->processEvents(); } QCOMPARE(mMessageReceivedText, QString::fromLatin1("Hi!")); QCOMPARE(mMessageReceivedChan->objectPath(), mChan->objectPath()); } void TestContactMessenger::cleanup() { mMessageReceivedChan.reset(); cleanupImpl(); } void TestContactMessenger::cleanupTestCase() { if (mConn) { // Disconnect and wait for the readiness change QVERIFY(connect(mConn->lowlevel()->requestDisconnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); if (mConn->isValid()) { QVERIFY(connect(mConn.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), mLoop, SLOT(quit()))); QCOMPARE(mLoop->exec(), 0); } } mChan.reset(); if (mMessagesChanService != 0) { g_object_unref(mMessagesChanService); mMessagesChanService = 0; } if (mConnService != 0) { mBaseConnService = 0; g_object_unref(mConnService); mConnService = 0; } cleanupTestCaseImpl(); } QList TestContactMessenger::ourObservers() { QStringList registeredNames = QDBusConnection::sessionBus().interface()->registeredServiceNames(); QList observers; Q_FOREACH (QString name, registeredNames) { if (!name.startsWith(QLatin1String("org.freedesktop.Telepathy.Client."))) { continue; } if (QDBusConnection::sessionBus().interface()->serviceOwner(name).value() != QDBusConnection::sessionBus().baseService()) { continue; } QString path = QLatin1Char('/') + name; path.replace(QLatin1Char('.'), QLatin1Char('/')); ClientInterface client(name, path); QStringList ifaces; if (!waitForProperty(client.requestPropertyInterfaces(), &ifaces)) { continue; } if (!ifaces.contains(TP_QT_IFACE_CLIENT_OBSERVER)) { continue; } ClientObserverInterface *observer = new ClientObserverInterface(name, path, this); ChannelClassList filter; if (!waitForProperty(observer->requestPropertyObserverChannelFilter(), &filter)) { continue; } Q_FOREACH (ChannelClassSpec spec, filter) { if (spec.isSubsetOf(ChannelClassSpec::textChat())) { observers.push_back(observer); qDebug() << "Found our observer" << name << '\n'; break; } } } return observers; } QTEST_MAIN(TestContactMessenger) #include "_gen/contact-messenger.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/chan-conference.cpp0000644000175100017520000002337012530423576023550 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include using namespace Tp; class TestConferenceChan : public Test { Q_OBJECT public: TestConferenceChan(QObject *parent = 0) : Test(parent), mConn(0), mContactRepo(0), mTextChan1Service(0), mTextChan2Service(0), mConferenceChanService(0) { } protected Q_SLOTS: void onConferenceChannelMerged(const Tp::ChannelPtr &); void onConferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details); private Q_SLOTS: void initTestCase(); void init(); void testConference(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; TpHandleRepoIface *mContactRepo; ChannelPtr mChan; QString mTextChan1Path; ExampleEchoChannel *mTextChan1Service; QString mTextChan2Path; ExampleEchoChannel *mTextChan2Service; QString mTextChan3Path; ExampleEchoChannel *mTextChan3Service; QString mConferenceChanPath; TpTestsConferenceChannel *mConferenceChanService; ChannelPtr mChannelMerged; ChannelPtr mChannelRemovedDetailed; Channel::GroupMemberChangeDetails mChannelRemovedDetailedDetails; }; void TestConferenceChan::onConferenceChannelMerged(const Tp::ChannelPtr &channel) { mChannelMerged = channel; mLoop->exit(0); } void TestConferenceChan::onConferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details) { mChannelRemovedDetailed = channel; mChannelRemovedDetailedDetails = details; mLoop->exit(0); } void TestConferenceChan::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("chan-conference"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); // create a Channel by magic, rather than doing D-Bus round-trips for it mContactRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); guint handle1 = tp_handle_ensure(mContactRepo, "someone1@localhost", 0, 0); guint handle2 = tp_handle_ensure(mContactRepo, "someone2@localhost", 0, 0); guint handle3 = tp_handle_ensure(mContactRepo, "someone3@localhost", 0, 0); QByteArray chanPath; GPtrArray *initialChannels = g_ptr_array_new(); mTextChan1Path = mConn->objectPath() + QLatin1String("/TextChannel/1"); chanPath = mTextChan1Path.toLatin1(); mTextChan1Service = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle1, NULL)); g_ptr_array_add(initialChannels, g_strdup(chanPath.data())); mTextChan2Path = mConn->objectPath() + QLatin1String("/TextChannel/2"); chanPath = mTextChan2Path.toLatin1(); mTextChan2Service = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle2, NULL)); g_ptr_array_add(initialChannels, g_strdup(chanPath.data())); // let's not add this one to initial channels mTextChan3Path = mConn->objectPath() + QLatin1String("/TextChannel/3"); chanPath = mTextChan3Path.toLatin1(); mTextChan3Service = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle3, NULL)); mConferenceChanPath = mConn->objectPath() + QLatin1String("/ConferenceChannel"); chanPath = mConferenceChanPath.toLatin1(); mConferenceChanService = TP_TESTS_CONFERENCE_CHANNEL(g_object_new( TP_TESTS_TYPE_CONFERENCE_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "initial-channels", initialChannels, NULL)); g_ptr_array_foreach(initialChannels, (GFunc) g_free, NULL); g_ptr_array_free(initialChannels, TRUE); } void TestConferenceChan::init() { initImpl(); } void TestConferenceChan::testConference() { mChan = Channel::create(mConn->client(), mConferenceChanPath, QVariantMap()); QCOMPARE(mChan->isConference(), false); QVERIFY(mChan->conferenceInitialInviteeContacts().isEmpty()); QVERIFY(mChan->conferenceChannels().isEmpty()); QVERIFY(mChan->conferenceInitialChannels().isEmpty()); QVERIFY(mChan->conferenceOriginalChannels().isEmpty()); QCOMPARE(mChan->supportsConferenceMerging(), false); QCOMPARE(mChan->supportsConferenceSplitting(), false); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); QStringList expectedObjectPaths; expectedObjectPaths << mTextChan1Path << mTextChan2Path; QStringList objectPaths; Q_FOREACH (const ChannelPtr &channel, mChan->conferenceInitialChannels()) { objectPaths << channel->objectPath(); } QCOMPARE(expectedObjectPaths, objectPaths); objectPaths.clear(); Q_FOREACH (const ChannelPtr &channel, mChan->conferenceChannels()) { objectPaths << channel->objectPath(); } QCOMPARE(expectedObjectPaths, objectPaths); /* // TODO - Properly check for initial invitee contacts if/when a test CM supports it QVERIFY(!mChan->isReady(Channel::FeatureConferenceInitialInviteeContacts)); QCOMPARE(mChan->conferenceInitialInviteeContacts(), Contacts()); QVERIFY(connect(mChan->becomeReady(Channel::FeatureConferenceInitialInviteeContacts), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(Channel::FeatureConferenceInitialInviteeContacts), true); QCOMPARE(mChan->conferenceInitialInviteeContacts(), Contacts()); */ QCOMPARE(mChan->supportsConferenceMerging(), true); QCOMPARE(mChan->supportsConferenceSplitting(), false); QVERIFY(connect(mChan->conferenceSplitChannel(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED); QVERIFY(!mLastErrorMessage.isEmpty()); ChannelPtr otherChannel = Channel::create(mConn->client(), mTextChan3Path, QVariantMap()); QVERIFY(connect(mChan.data(), SIGNAL(conferenceChannelMerged(const Tp::ChannelPtr &)), SLOT(onConferenceChannelMerged(const Tp::ChannelPtr &)))); QVERIFY(connect(mChan->conferenceMergeChannel(otherChannel), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); while (!mChannelMerged) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mChannelMerged->objectPath(), otherChannel->objectPath()); expectedObjectPaths << mTextChan3Path; objectPaths.clear(); Q_FOREACH (const ChannelPtr &channel, mChan->conferenceChannels()) { objectPaths << channel->objectPath(); } QCOMPARE(expectedObjectPaths, objectPaths); QVERIFY(connect(mChan.data(), SIGNAL(conferenceChannelRemoved(const Tp::ChannelPtr &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onConferenceChannelRemoved(const Tp::ChannelPtr &, const Tp::Channel::GroupMemberChangeDetails &)))); tp_tests_conference_channel_remove_channel (mConferenceChanService, mChannelMerged->objectPath().toLatin1().data()); while (!mChannelRemovedDetailed) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mChannelRemovedDetailed, mChannelMerged); QCOMPARE(mChannelRemovedDetailedDetails.allDetails().isEmpty(), false); QCOMPARE(qdbus_cast(mChannelRemovedDetailedDetails.allDetails().value( QLatin1String("domain-specific-detail-uint"))), 3); QCOMPARE(mChannelRemovedDetailedDetails.hasActor(), true); QCOMPARE(mChannelRemovedDetailedDetails.actor(), mChan->groupSelfContact()); expectedObjectPaths.clear(); expectedObjectPaths << mTextChan1Path << mTextChan2Path; objectPaths.clear(); Q_FOREACH (const ChannelPtr &channel, mChan->conferenceChannels()) { objectPaths << channel->objectPath(); } QCOMPARE(expectedObjectPaths, objectPaths); mChan.reset(); mChannelMerged.reset(); } void TestConferenceChan::cleanup() { cleanupImpl(); } void TestConferenceChan::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; if (mTextChan1Service != 0) { g_object_unref(mTextChan1Service); mTextChan1Service = 0; } if (mTextChan2Service != 0) { g_object_unref(mTextChan2Service); mTextChan2Service = 0; } if (mConferenceChanService != 0) { g_object_unref(mConferenceChanService); mConferenceChanService = 0; } cleanupTestCaseImpl(); } QTEST_MAIN(TestConferenceChan) #include "_gen/chan-conference.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/text-chan.cpp0000644000175100017520000005063112530423576022425 0ustar00kaffeinekaffeine00000000000000// We need to use the deprecated TpTextMixin here to test compatibility functionality #define _TP_IGNORE_DEPRECATIONS #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; struct SentMessageDetails { SentMessageDetails(const Message &message, const Tp::MessageSendingFlags flags, const QString &token) : message(message), flags(flags), token(token) { } Message message; Tp::MessageSendingFlags flags; QString token; }; class TestTextChan : public Test { Q_OBJECT public: TestTextChan(QObject *parent = 0) : Test(parent), mConn(0), mContactRepo(0), mTextChanService(0), mMessagesChanService(0), mGotChatStateChanged(false), mChatStateChangedState((ChannelChatState) -1) { } protected Q_SLOTS: void onMessageReceived(const Tp::ReceivedMessage &); void onMessageRemoved(const Tp::ReceivedMessage &); void onMessageSent(const Tp::Message &, Tp::MessageSendingFlags, const QString &); void onChatStateChanged(const Tp::ContactPtr &contact, Tp::ChannelChatState state); private Q_SLOTS: void initTestCase(); void init(); void testMessages(); void testLegacyText(); void cleanup(); void cleanupTestCase(); private: void commonTest(bool withMessages); void sendText(const char *text); TestConnHelper *mConn; TpHandleRepoIface *mContactRepo; ContactPtr mContact; TextChannelPtr mChan; ExampleEchoChannel *mTextChanService; QString mTextChanPath; ExampleEcho2Channel *mMessagesChanService; QString mMessagesChanPath; QList sent; QList received; QList removed; bool mGotChatStateChanged; ContactPtr mChatStateChangedContact; ChannelChatState mChatStateChangedState; }; void TestTextChan::onMessageReceived(const ReceivedMessage &message) { qDebug() << "message received"; received << message; mLoop->exit(0); } void TestTextChan::onMessageRemoved(const ReceivedMessage &message) { qDebug() << "message removed"; removed << message; } void TestTextChan::onMessageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &token) { qDebug() << "message sent"; sent << SentMessageDetails(message, flags, token); } void TestTextChan::onChatStateChanged(const Tp::ContactPtr &contact, Tp::ChannelChatState state) { mGotChatStateChanged = true; mChatStateChangedContact = contact; mChatStateChangedState = state; } void TestTextChan::sendText(const char *text) { qDebug() << "sending message:" << text; QVERIFY(connect(mChan->send(QLatin1String(text), Tp::ChannelTextMessageTypeNormal), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); qDebug() << "message send mainloop finished"; } void TestTextChan::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("text-chan"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); mContactRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(mContactRepo, "someone@localhost", 0, 0); mContact = mConn->contacts(UIntList() << handle).first(); QVERIFY(mContact); // create a Channel by magic, rather than doing D-Bus round-trips for it mTextChanPath = mConn->objectPath() + QLatin1String("/TextChannel"); QByteArray chanPath(mTextChanPath.toLatin1()); mTextChanService = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); mMessagesChanPath = mConn->objectPath() + QLatin1String("/MessagesChannel"); chanPath = mMessagesChanPath.toLatin1(); mMessagesChanService = EXAMPLE_ECHO_2_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_2_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); } void TestTextChan::init() { initImpl(); mChan.reset(); mGotChatStateChanged = false; mChatStateChangedState = (ChannelChatState) -1; } void TestTextChan::commonTest(bool withMessages) { Q_ASSERT(mChan); ChannelPtr asChannel = ChannelPtr(dynamic_cast(mChan.data())); QVERIFY(connect(asChannel->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(asChannel->isReady()); QVERIFY(mChan->isReady()); // hasChatStateInterface requires FeatureCore only if (withMessages) { QVERIFY(mChan->hasChatStateInterface()); } else { QVERIFY(!mChan->hasChatStateInterface()); } QVERIFY(!mChan->isReady(TextChannel::FeatureChatState)); QCOMPARE(mChan->chatState(mContact), ChannelChatStateInactive); QCOMPARE(mChan->chatState(ContactPtr()), ChannelChatStateInactive); QVERIFY(connect(asChannel->becomeReady(TextChannel::FeatureChatState), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(TextChannel::FeatureChatState)); if (withMessages) { QVERIFY(mChan->hasChatStateInterface()); } else { QVERIFY(!mChan->hasChatStateInterface()); } QCOMPARE(mChan->chatState(mContact), ChannelChatStateInactive); QCOMPARE(mChan->chatState(ContactPtr()), ChannelChatStateInactive); QCOMPARE(mChan->chatState(mChan->groupSelfContact()), ChannelChatStateInactive); QVERIFY(connect(mChan.data(), SIGNAL(chatStateChanged(Tp::ContactPtr,Tp::ChannelChatState)), SLOT(onChatStateChanged(Tp::ContactPtr,Tp::ChannelChatState)))); if (withMessages) { QVERIFY(connect(mChan->requestChatState(ChannelChatStateActive), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); while (!mGotChatStateChanged) { mLoop->processEvents(); } QCOMPARE(mChatStateChangedContact, mChan->groupSelfContact()); QCOMPARE(mChatStateChangedState, mChan->chatState(mChan->groupSelfContact())); QCOMPARE(mChatStateChangedState, ChannelChatStateActive); } else { QVERIFY(connect(mChan->requestChatState(ChannelChatStateActive), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED); QVERIFY(!mLastErrorMessage.isEmpty()); } QVERIFY(!mChan->canInviteContacts()); Features features = Features() << TextChannel::FeatureMessageQueue; QVERIFY(!mChan->isReady(features)); // Implementation detail: in legacy text channels, capabilities arrive // early, so don't assert about that QVERIFY(!mChan->isReady(features)); QVERIFY(connect(mChan.data(), SIGNAL(messageReceived(const Tp::ReceivedMessage &)), SLOT(onMessageReceived(const Tp::ReceivedMessage &)))); QCOMPARE(received.size(), 0); QVERIFY(connect(mChan.data(), SIGNAL(pendingMessageRemoved(const Tp::ReceivedMessage &)), SLOT(onMessageRemoved(const Tp::ReceivedMessage &)))); QCOMPARE(removed.size(), 0); QVERIFY(connect(mChan.data(), SIGNAL(messageSent(const Tp::Message &, Tp::MessageSendingFlags, const QString &)), SLOT(onMessageSent(const Tp::Message &, Tp::MessageSendingFlags, const QString &)))); QCOMPARE(sent.size(), 0); sendText("One"); // Flush the D-Bus queue to make sure we've got the Sent signal the service will send, even if // we are scheduled to execute between the time it calls return_from_send and emit_sent processDBusQueue(mChan.data()); qDebug() << "making the Sent signal ready"; // Make the Sent signal become ready features = Features() << TextChannel::FeatureMessageSentSignal; QVERIFY(connect(mChan->becomeReady(features), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(asChannel->isReady()); QVERIFY(mChan->isReady()); features = Features() << TextChannel::FeatureMessageSentSignal; QVERIFY(mChan->isReady(features)); features = Features() << TextChannel::FeatureMessageQueue; QVERIFY(!mChan->isReady(features)); qDebug() << "the Sent signal is ready"; sendText("Two"); // Flush the D-Bus queue to make sure we've got the Sent signal the service will send, even if // we are scheduled to execute between the time it calls return_from_send and emit_sent processDBusQueue(mChan.data()); // We should have received "Two", but not "One" QCOMPARE(sent.size(), 1); QCOMPARE(static_cast(sent.at(0).flags), 0U); QCOMPARE(sent.at(0).token, QLatin1String("")); Message m(sent.at(0).message); QCOMPARE(static_cast(m.messageType()), static_cast(Tp::ChannelTextMessageTypeNormal)); QVERIFY(!m.isTruncated()); QVERIFY(!m.hasNonTextContent()); QCOMPARE(m.messageToken(), QLatin1String("")); QVERIFY(!m.isSpecificToDBusInterface()); QCOMPARE(m.dbusInterface(), QLatin1String("")); QCOMPARE(m.size(), 2); QCOMPARE(m.header().value(QLatin1String("message-type")).variant().toUInt(), 0U); QCOMPARE(m.part(1).value(QLatin1String("content-type")).variant().toString(), QLatin1String("text/plain")); QCOMPARE(m.text(), QLatin1String("Two")); // Make capabilities become ready features = Features() << TextChannel::FeatureMessageCapabilities; QVERIFY(connect(mChan->becomeReady(features), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(asChannel->isReady()); QVERIFY(mChan->isReady()); features = Features() << TextChannel::FeatureMessageCapabilities; QVERIFY(mChan->isReady(features)); features = Features() << TextChannel::FeatureMessageQueue; QVERIFY(!mChan->isReady(features)); if (withMessages) { QCOMPARE(mChan->supportedContentTypes(), QStringList() << QLatin1String("*/*")); QCOMPARE(static_cast(mChan->messagePartSupport()), static_cast(Tp::MessagePartSupportFlagOneAttachment | Tp::MessagePartSupportFlagMultipleAttachments)); QCOMPARE(mChan->deliveryReportingSupport(), DeliveryReportingSupportFlagReceiveFailures); QCOMPARE(mChan->supportedMessageTypes().size(), 3); // Supports normal, action, notice QVERIFY(mChan->supportsMessageType(Tp::ChannelTextMessageTypeNormal)); QVERIFY(mChan->supportsMessageType(Tp::ChannelTextMessageTypeAction)); QVERIFY(mChan->supportsMessageType(Tp::ChannelTextMessageTypeNotice)); QVERIFY(!mChan->supportsMessageType(Tp::ChannelTextMessageTypeAutoReply)); QVERIFY(!mChan->supportsMessageType(Tp::ChannelTextMessageTypeDeliveryReport)); } else { QCOMPARE(mChan->supportedContentTypes(), QStringList() << QLatin1String("text/plain")); QCOMPARE(static_cast(mChan->messagePartSupport()), 0U); QCOMPARE(static_cast(mChan->deliveryReportingSupport()), 0U); } // Make the message queue become ready too QCOMPARE(received.size(), 0); QCOMPARE(mChan->messageQueue().size(), 0); features = Features() << TextChannel::FeatureMessageQueue; QVERIFY(connect(mChan->becomeReady(features), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(asChannel->isReady()); QVERIFY(mChan->isReady()); features = Features() << TextChannel::FeatureMessageQueue << TextChannel::FeatureMessageCapabilities; QVERIFY(mChan->isReady(features)); // Assert that both our sent messages were echoed by the remote contact while (received.size() != 2) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(received.size(), 2); QCOMPARE(mChan->messageQueue().size(), 2); QVERIFY(mChan->messageQueue().at(0) == received.at(0)); QVERIFY(mChan->messageQueue().at(1) == received.at(1)); QVERIFY(received.at(0) != received.at(1)); ReceivedMessage r(received.at(0)); QVERIFY(r == received.at(0)); QCOMPARE(static_cast(r.messageType()), static_cast(Tp::ChannelTextMessageTypeNormal)); QVERIFY(!r.isTruncated()); QVERIFY(!r.hasNonTextContent()); if (withMessages) { QCOMPARE(r.messageToken(), QLatin1String("0000")); QCOMPARE(r.supersededToken(), QLatin1String("1234")); } else { QCOMPARE(r.messageToken(), QLatin1String("")); QCOMPARE(r.supersededToken(), QString()); } QVERIFY(!r.isSpecificToDBusInterface()); QCOMPARE(r.dbusInterface(), QLatin1String("")); QCOMPARE(r.size(), 2); QCOMPARE(r.header().value(QLatin1String("message-type")).variant().toUInt(), 0U); QCOMPARE(r.part(1).value(QLatin1String("content-type")).variant().toString(), QLatin1String("text/plain")); QCOMPARE(r.sender()->id(), QLatin1String("someone@localhost")); QCOMPARE(r.senderNickname(), QLatin1String("someone@localhost")); if (withMessages) { QVERIFY(r.isScrollback()); } else { QVERIFY(!r.isScrollback()); } QVERIFY(!r.isRescued()); QVERIFY(!r.isDeliveryReport()); // one "echo" implementation echoes the message literally, the other edits // it slightly if (withMessages) { QCOMPARE(r.text(), QLatin1String("One")); } else { QCOMPARE(r.text(), QLatin1String("You said: One")); } r = received.at(1); QCOMPARE(static_cast(r.messageType()), static_cast(Tp::ChannelTextMessageTypeNormal)); QVERIFY(!r.isTruncated()); QVERIFY(!r.hasNonTextContent()); if (withMessages) { QCOMPARE(r.messageToken(), QLatin1String("0000")); QCOMPARE(r.supersededToken(), QLatin1String("1234")); } else { QCOMPARE(r.messageToken(), QLatin1String("")); QCOMPARE(r.supersededToken(), QString()); } QVERIFY(!r.isSpecificToDBusInterface()); QCOMPARE(r.dbusInterface(), QLatin1String("")); QCOMPARE(r.size(), 2); QCOMPARE(r.header().value(QLatin1String("message-type")).variant().toUInt(), 0U); QCOMPARE(r.part(1).value(QLatin1String("content-type")).variant().toString(), QLatin1String("text/plain")); QCOMPARE(r.sender()->id(), QLatin1String("someone@localhost")); QVERIFY(!r.isScrollback()); QVERIFY(!r.isRescued()); if (withMessages) { QCOMPARE(r.text(), QLatin1String("Two")); } else { QCOMPARE(r.text(), QLatin1String("You said: Two")); } // go behind the TextChannel's back to acknowledge the first message: // this emulates another client doing so QVERIFY(connect(mChan.data(), SIGNAL(pendingMessageRemoved(Tp::ReceivedMessage)), mLoop, SLOT(quit()))); mChan->acknowledge(QList< ReceivedMessage >() << received.at(0)); QCOMPARE(mLoop->exec(), 0); QVERIFY(disconnect(mChan.data(), SIGNAL(pendingMessageRemoved(Tp::ReceivedMessage)), mLoop, SLOT(quit()))); QCOMPARE(mChan->messageQueue().size(), 1); QVERIFY(mChan->messageQueue().at(0) == received.at(1)); QCOMPARE(removed.size(), 1); QVERIFY(removed.at(0) == received.at(0)); // In the Messages case this will ack one message, successfully. In the // Text case it will fail to ack two messages, fall back to one call // per message, and fail one while succeeding with the other. mChan->acknowledge(mChan->messageQueue()); if (withMessages) { sendText("Three (fail)"); // Flush the D-Bus queue to make sure we've got the Sent signal the service will send, even if // we are scheduled to execute between the time it calls return_from_send and emit_sent processDBusQueue(mChan.data()); // Assert that both our sent messages were echoed by the remote contact while (received.size() != 3) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(received.size(), 3); QCOMPARE(mChan->messageQueue().size(), 1); QVERIFY(mChan->messageQueue().at(0) == received.at(2)); r = received.at(2); QVERIFY(r == received.at(2)); QCOMPARE(r.messageType(), Tp::ChannelTextMessageTypeDeliveryReport); QVERIFY(!r.isTruncated()); QVERIFY(r.hasNonTextContent()); QCOMPARE(r.messageToken(), QLatin1String("")); QVERIFY(!r.isSpecificToDBusInterface()); QCOMPARE(r.dbusInterface(), QLatin1String("")); QCOMPARE(r.size(), 1); QCOMPARE(r.header().value(QLatin1String("message-type")).variant().toUInt(), static_cast(Tp::ChannelTextMessageTypeDeliveryReport)); QCOMPARE(r.sender()->id(), QLatin1String("someone@localhost")); QCOMPARE(r.senderNickname(), QLatin1String("someone@localhost")); QVERIFY(!r.isScrollback()); QVERIFY(!r.isRescued()); QCOMPARE(r.supersededToken(), QString()); QVERIFY(r.isDeliveryReport()); QVERIFY(r.deliveryDetails().isValid()); QVERIFY(r.deliveryDetails().hasOriginalToken()); QCOMPARE(r.deliveryDetails().originalToken(), QLatin1String("1111")); QCOMPARE(r.deliveryDetails().status(), Tp::DeliveryStatusPermanentlyFailed); QVERIFY(r.deliveryDetails().isError()); QCOMPARE(r.deliveryDetails().error(), Tp::ChannelTextSendErrorPermissionDenied); QVERIFY(r.deliveryDetails().hasDebugMessage()); QCOMPARE(r.deliveryDetails().debugMessage(), QLatin1String("You asked for it")); QCOMPARE(r.deliveryDetails().dbusError(), TP_QT_ERROR_PERMISSION_DENIED); QVERIFY(r.deliveryDetails().hasEchoedMessage()); QCOMPARE(r.deliveryDetails().echoedMessage().text(), QLatin1String("Three (fail)")); mChan->acknowledge(QList() << received.at(2)); } // wait for everything to settle down while (tp_text_mixin_has_pending_messages( G_OBJECT(mTextChanService), 0) || tp_message_mixin_has_pending_messages( G_OBJECT(mMessagesChanService), 0)) { QTest::qWait(1); } QVERIFY(!tp_text_mixin_has_pending_messages( G_OBJECT(mTextChanService), 0)); QVERIFY(!tp_message_mixin_has_pending_messages( G_OBJECT(mMessagesChanService), 0)); } void TestTextChan::testMessages() { mChan = TextChannel::create(mConn->client(), mMessagesChanPath, QVariantMap()); commonTest(true); } void TestTextChan::testLegacyText() { mChan = TextChannel::create(mConn->client(), mTextChanPath, QVariantMap()); commonTest(false); } void TestTextChan::cleanup() { received.clear(); removed.clear(); sent.clear(); cleanupImpl(); } void TestTextChan::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; if (mTextChanService != 0) { g_object_unref(mTextChanService); mTextChanService = 0; } if (mMessagesChanService != 0) { g_object_unref(mMessagesChanService); mMessagesChanService = 0; } cleanupTestCaseImpl(); } QTEST_MAIN(TestTextChan) #include "_gen/text-chan.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/stateful-proxy.cpp0000644000175100017520000002327212530423576023541 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include "tests/lib/test.h" using namespace Tp; using namespace Tp; using Tp::Client::DBus::IntrospectableInterface; // expose protected functions for testing class MyStatefulDBusProxy : public StatefulDBusProxy { public: MyStatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath) : StatefulDBusProxy(dbusConnection, busName, objectPath, Feature()) { } using StatefulDBusProxy::invalidate; }; class ObjectAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "com.example.Foo") public: ObjectAdaptor(Test *test) : QDBusAbstractAdaptor(test) { } }; class TestStatefulProxy : public Test { Q_OBJECT public: TestStatefulProxy(QObject *parent = 0); private Q_SLOTS: void initTestCase(); void init(); void testBasics(); void testNameOwnerChanged(); void cleanup(); void cleanupTestCase(); protected Q_SLOTS: // these would be public, but then QtTest would think they were tests void expectInvalidated(Tp::DBusProxy *, const QString &, const QString &); // anything other than 0 or 1 is OK # define EXPECT_INVALIDATED_SUCCESS 111 private: MyStatefulDBusProxy *mProxy; ObjectAdaptor *mAdaptor; int mInvalidated; QString mSignalledInvalidationReason; QString mSignalledInvalidationMessage; static QString wellKnownName(); static QString objectPath(); static QString uniqueName(); }; QString TestStatefulProxy::wellKnownName() { return QLatin1String("org.freedesktop.Telepathy.Qt.TestStatefulProxy"); } QString TestStatefulProxy::objectPath() { return QLatin1String("/org/freedesktop/Telepathy/Qt/TestStatefulProxy/Object"); } TestStatefulProxy::TestStatefulProxy(QObject *parent) : Test(parent), mProxy(0), mAdaptor(new ObjectAdaptor(this)) { } QString TestStatefulProxy::uniqueName() { return QDBusConnection::sessionBus().baseService(); } void TestStatefulProxy::initTestCase() { initTestCaseImpl(); QVERIFY(QDBusConnection::sessionBus().registerService(wellKnownName())); QDBusConnection::sessionBus().registerObject(objectPath(), this); } void TestStatefulProxy::init() { initImpl(); mInvalidated = 0; } void TestStatefulProxy::testBasics() { mProxy = new MyStatefulDBusProxy(QDBusConnection::sessionBus(), wellKnownName(), objectPath()); IntrospectableInterface ifaceFromProxy(mProxy); IntrospectableInterface ifaceFromWellKnown(wellKnownName(), objectPath()); IntrospectableInterface ifaceFromUnique(uniqueName(), objectPath()); QVERIFY(mProxy); QCOMPARE(mProxy->dbusConnection().baseService(), uniqueName()); QCOMPARE(mProxy->busName(), uniqueName()); QCOMPARE(mProxy->objectPath(), objectPath()); QVERIFY(mProxy->isValid()); QCOMPARE(mProxy->invalidationReason(), QString()); QCOMPARE(mProxy->invalidationMessage(), QString()); QDBusPendingReply reply; QDBusPendingCallWatcher *watcher; reply = ifaceFromUnique.Introspect(); if (!reply.isValid()) { watcher = new QDBusPendingCallWatcher(reply); QVERIFY(connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher *)), this, SLOT(expectSuccessfulCall(QDBusPendingCallWatcher *)))); QCOMPARE(mLoop->exec(), 0); delete watcher; } reply = ifaceFromWellKnown.Introspect(); if (!reply.isValid()) { watcher = new QDBusPendingCallWatcher(reply); QVERIFY(connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher *)), this, SLOT(expectSuccessfulCall(QDBusPendingCallWatcher *)))); QCOMPARE(mLoop->exec(), 0); delete watcher; } reply = ifaceFromProxy.Introspect(); if (!reply.isValid()) { watcher = new QDBusPendingCallWatcher(reply); QVERIFY(connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher *)), this, SLOT(expectSuccessfulCall(QDBusPendingCallWatcher *)))); QCOMPARE(mLoop->exec(), 0); delete watcher; } QVERIFY(connect(mProxy, SIGNAL(invalidated( Tp::DBusProxy *, const QString &, const QString &)), this, SLOT(expectInvalidated( Tp::DBusProxy *, const QString &, const QString &)))); mProxy->invalidate(QLatin1String("com.example.DomainSpecificError"), QLatin1String("Because I said so")); QVERIFY(!mProxy->isValid()); QCOMPARE(mProxy->invalidationReason(), QLatin1String("com.example.DomainSpecificError")); QCOMPARE(mProxy->invalidationMessage(), QLatin1String("Because I said so")); // FIXME: ideally, the method call would already fail synchronously at // this point - after all, the proxy already knows it's dead reply = ifaceFromProxy.Introspect(); if (reply.isValid()) { qWarning() << "reply is valid"; } else if (reply.isError()) { qDebug() << "reply is error" << reply.error().name() << reply.error().message(); } else { qWarning() << "no reply yet"; } // the signal doesn't arrive instantly QCOMPARE(mLoop->exec(), EXPECT_INVALIDATED_SUCCESS); QVERIFY(disconnect(mProxy, SIGNAL(invalidated( Tp::DBusProxy *, const QString &, const QString &)), this, SLOT(expectInvalidated( Tp::DBusProxy *, const QString &, const QString &)))); QCOMPARE(mInvalidated, 1); QCOMPARE(mSignalledInvalidationReason, QLatin1String("com.example.DomainSpecificError")); QCOMPARE(mSignalledInvalidationMessage, QLatin1String("Because I said so")); // low-level proxies with no knowledge of the high-level DBusProxy are // unaffected reply = ifaceFromUnique.Introspect(); if (!reply.isValid()) { watcher = new QDBusPendingCallWatcher(reply); QVERIFY(connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher *)), this, SLOT(expectSuccessfulCall(QDBusPendingCallWatcher *)))); QCOMPARE(mLoop->exec(), 0); delete watcher; } reply = ifaceFromWellKnown.Introspect(); if (!reply.isValid()) { watcher = new QDBusPendingCallWatcher(reply); QVERIFY(connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher *)), this, SLOT(expectSuccessfulCall(QDBusPendingCallWatcher *)))); QCOMPARE(mLoop->exec(), 0); delete watcher; } } void TestStatefulProxy::expectInvalidated(DBusProxy *proxy, const QString &reason, const QString &message) { mInvalidated++; mSignalledInvalidationReason = reason; mSignalledInvalidationMessage = message; mLoop->exit(EXPECT_INVALIDATED_SUCCESS); } void TestStatefulProxy::testNameOwnerChanged() { QString otherUniqueName = QDBusConnection::connectToBus( QDBusConnection::SessionBus, QLatin1String("another unique name")).baseService(); mProxy = new MyStatefulDBusProxy(QDBusConnection::sessionBus(), otherUniqueName, objectPath()); QVERIFY(mProxy->isValid()); QCOMPARE(mProxy->invalidationReason(), QString()); QCOMPARE(mProxy->invalidationMessage(), QString()); QVERIFY(connect(mProxy, SIGNAL(invalidated( Tp::DBusProxy *, const QString &, const QString &)), this, SLOT(expectInvalidated( Tp::DBusProxy *, const QString &, const QString &)))); QDBusConnection::disconnectFromBus(QLatin1String("another unique name")); QCOMPARE(mLoop->exec(), EXPECT_INVALIDATED_SUCCESS); QVERIFY(disconnect(mProxy, SIGNAL(invalidated( Tp::DBusProxy *, const QString &, const QString &)), this, SLOT(expectInvalidated( Tp::DBusProxy *, const QString &, const QString &)))); QCOMPARE(mInvalidated, 1); QVERIFY(!mProxy->isValid()); QCOMPARE(mProxy->invalidationReason(), TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER); QCOMPARE(mSignalledInvalidationReason, TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER); QVERIFY(!mProxy->invalidationMessage().isEmpty()); QCOMPARE(mProxy->invalidationMessage(), mSignalledInvalidationMessage); } void TestStatefulProxy::cleanup() { if (mProxy) { delete mProxy; mProxy = 0; } cleanupImpl(); } void TestStatefulProxy::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestStatefulProxy) #include "_gen/stateful-proxy.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/CMakeLists.txt0000644000175100017520000001446712530423576022575 0ustar00kaffeinekaffeine00000000000000file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen") tpqt_setup_dbus_test_environment() if(HAVE_TEST_PYTHON) tpqt_add_dbus_unit_test(DBusProperties dbus-properties "") endif(HAVE_TEST_PYTHON) if(ENABLE_TP_GLIB_TESTS) include_directories(${CMAKE_SOURCE_DIR}/tests/lib/glib ${TELEPATHY_GLIB_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${DBUS_INCLUDE_DIR}) add_definitions(-DQT_NO_KEYWORDS) if (${QT_VERSION_MAJOR} EQUAL 4) if (NOT ${QT_VERSION_MINOR} EQUAL 6) # >= qt 4.7 # FIXME - Re-enable racy tests once https://bugs.freedesktop.org/show_bug.cgi?id=43356 is # fixed SET(ENABLE_TESTS_WITH_RACES_IN_QT_4_6 TRUE) SET(ENABLE_TESTS_WITH_ISSUES_IN_QT_5 TRUE) endif (NOT ${QT_VERSION_MINOR} EQUAL 6) else (${QT_VERSION_MAJOR} EQUAL 4) # Currently none - this variable is here in case some issues arise SET(ENABLE_TESTS_WITH_ISSUES_IN_QT_5 FALSE) SET(ENABLE_TESTS_WITH_RACES_IN_QT_4_6 TRUE) endif (${QT_VERSION_MAJOR} EQUAL 4) if(HAVE_TEST_PYTHON) tpqt_add_dbus_unit_test(AccountBasics account-basics tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(AccountSet account-set tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(AccountChannelDispatcher account-channel-dispatcher tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(Client client tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ClientFactories client-factories tp-glib-tests) endif(HAVE_TEST_PYTHON) tpqt_add_dbus_unit_test(AccountConnectionFactory account-connection-factory tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(CallChannel call-channel tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(CaptchaAuthentication captcha-authentication tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ChannelBasics chan-basics tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ChannelConference chan-conference tp-glib-tests future-example-cm-conference tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ChannelGroup chan-group tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ConnectionManagerBasics cm-basics tp-glib-tests) tpqt_add_dbus_unit_test(ConnectionAddressing conn-addressing tp-glib-tests future-example-conn-addressing tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ConnectionBasics conn-basics tp-glib-tests) tpqt_add_dbus_unit_test(ConnectionCapabilities conn-capabilities tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ConnectionIntrospectCornercases conn-introspect-cornercases tp-glib-tests) tpqt_add_dbus_unit_test(ConnectionRequests conn-requests tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ConnectionRosterLegacy conn-roster-legacy tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ConnectionRoster conn-roster example-cm-contactlist2 tp-qt-tests-glib-helpers ${GLIB2_LIBRARIES} ${GOBJECT_LIBRARIES} ${DBUS_GLIB_LIBRARIES} ${TELEPATHY_GLIB_LIBRARIES}) tpqt_add_dbus_unit_test(ConnectionRosterGroupsLegacy conn-roster-groups-legacy tp-glib-tests) tpqt_add_dbus_unit_test(ConnectionRosterGroups conn-roster-groups example-cm-contactlist2 ${GLIB2_LIBRARIES} ${GOBJECT_LIBRARIES} ${DBUS_GLIB_LIBRARIES} ${TELEPATHY_GLIB_LIBRARIES}) tpqt_add_dbus_unit_test(ContactFactory contact-factory tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ContactMessenger contact-messenger tp-glib-tests) tpqt_add_dbus_unit_test(ContactSearchChannel contact-search-chan tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(Contacts contacts tp-glib-tests) tpqt_add_dbus_unit_test(ContactsAvatar contacts-avatar tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ContactsCapabilities contacts-capabilities tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ContactsClientTypes contacts-client-types tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ContactsInfo contacts-info tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(ContactsLocation contacts-location tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(DBusProxyFactory dbus-proxy-factory tp-glib-tests telepathy-qt-test-backdoors) tpqt_add_dbus_unit_test(Handles handles tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(Properties properties tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(SimpleObserver simple-observer tp-glib-tests) tpqt_add_dbus_unit_test(StatefulProxy stateful-proxy tp-glib-tests) tpqt_add_dbus_unit_test(StreamedMediaChannel streamed-media-chan tp-glib-tests tp-qt-tests-glib-helpers) if (ENABLE_TESTS_WITH_RACES_IN_QT_4_6) tpqt_add_dbus_unit_test(TextChannel text-chan tp-glib-tests tp-qt-tests-glib-helpers) tpqt_add_dbus_unit_test(StreamTubeHandlers stream-tube-handlers tp-glib-tests tp-qt-tests-glib-helpers) if(ENABLE_TP_GLIB_GIO_TESTS) tpqt_add_dbus_unit_test(StreamTubeChannel stream-tube-chan tp-glib-tests tp-qt-tests-glib-helpers) endif(ENABLE_TP_GLIB_GIO_TESTS) endif (ENABLE_TESTS_WITH_RACES_IN_QT_4_6) if(NOT (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 8)) message(STATUS "Enabling Qt 4.8+ tests") tpqt_add_dbus_unit_test(DBusTubeChannel dbus-tube-chan tp-glib-tests tp-qt-tests-glib-helpers) endif(NOT (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 8)) endif(ENABLE_TP_GLIB_TESTS) tpqt_add_dbus_unit_test(CmProtocol cm-protocol) tpqt_add_dbus_unit_test(ProfileManager profile-manager) tpqt_add_dbus_unit_test(Types types) if(ENABLE_SERVICE_SUPPORT) tpqt_add_dbus_unit_test(BaseConnectionManager base-cm telepathy-qt${QT_VERSION_MAJOR}-service) tpqt_add_dbus_unit_test(BaseProtocol base-protocol telepathy-qt${QT_VERSION_MAJOR}-service) endif(ENABLE_SERVICE_SUPPORT) # Make check target. In case of check, output on failure and put it into a log # This target has to stay here for catching all of the tests add_custom_target(check ctest --output-on-failure -O test.log WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests) add_dependencies(check check-local ${_telepathy_qt_test_cases}) telepathy-qt-0.9.6.1/tests/dbus/dbus-properties.cpp0000644000175100017520000001212612530423576023656 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestDBusProperties : public Test { Q_OBJECT public: TestDBusProperties(QObject *parent = 0) : Test(parent), mAccountsCount(0) { } protected Q_SLOTS: void onNewAccount(const Tp::AccountPtr &); void expectSuccessfulAllProperties(Tp::PendingOperation *op); private Q_SLOTS: void initTestCase(); void init(); void testDBusProperties(); void cleanup(); void cleanupTestCase(); private: AccountManagerPtr mAM; int mAccountsCount; bool mCreatingAccount; QVariantMap mAllProperties; }; void TestDBusProperties::onNewAccount(const Tp::AccountPtr &acc) { Q_UNUSED(acc); mAccountsCount++; if (!mCreatingAccount) { mLoop->exit(0); } } void TestDBusProperties::expectSuccessfulAllProperties(PendingOperation *op) { if (op->isError()) { qWarning().nospace() << op->errorName() << ": " << op->errorMessage(); mAllProperties = QVariantMap(); mLoop->exit(1); } else { Tp::PendingVariantMap *pvm = qobject_cast(op); mAllProperties = pvm->result(); mLoop->exit(0); } } void TestDBusProperties::initTestCase() { initTestCaseImpl(); mAM = AccountManager::create(AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore | Account::FeatureCapabilities)); QCOMPARE(mAM->isReady(), false); } void TestDBusProperties::init() { mCreatingAccount = false; initImpl(); } void TestDBusProperties::testDBusProperties() { QVERIFY(connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAM->isReady(), true); QVERIFY(connect(mAM.data(), SIGNAL(newAccount(const Tp::AccountPtr &)), SLOT(onNewAccount(const Tp::AccountPtr &)))); QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); PendingAccount *pacc = mAM->createAccount(QLatin1String("foo"), QLatin1String("bar"), QLatin1String("foobar"), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); mCreatingAccount = true; QCOMPARE(mLoop->exec(), 0); mCreatingAccount = false; QVERIFY(pacc->account()); while (mAccountsCount != 1) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mAM->interfaces(), QStringList()); AccountPtr acc = Account::create(mAM->busName(), QLatin1String("/org/freedesktop/Telepathy/Account/foo/bar/Account0")); QVERIFY(connect(acc->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); while (!acc->isReady()) { mLoop->processEvents(); } QCOMPARE(mLoop->exec(), 0); const QString oldDisplayName = QLatin1String("foobar (account 0)"); QCOMPARE(acc->displayName(), oldDisplayName); Client::AccountInterface *cliAccount = acc->interface(); QString currDisplayName; QVERIFY(waitForProperty(cliAccount->requestPropertyDisplayName(), &currDisplayName)); QCOMPARE(currDisplayName, oldDisplayName); QVERIFY(connect(cliAccount->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulAllProperties(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAllProperties[QLatin1String("DisplayName")].value(), oldDisplayName); QVERIFY(mAllProperties[QLatin1String("Interfaces")].value().contains( TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR)); const QString newDisplayName = QLatin1String("Foo bar account"); QVERIFY(connect(cliAccount->setPropertyDisplayName(newDisplayName), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(waitForProperty(cliAccount->requestPropertyDisplayName(), &currDisplayName)); QCOMPARE(currDisplayName, newDisplayName); QVERIFY(connect(cliAccount->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulAllProperties(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAllProperties[QLatin1String("DisplayName")].value(), newDisplayName); } void TestDBusProperties::cleanup() { cleanupImpl(); } void TestDBusProperties::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestDBusProperties) #include "_gen/dbus-properties.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/simple-observer.cpp0000644000175100017520000007122212530423576023647 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; class TestSimpleObserver; namespace { QList channels(const QList &channels) { QList ret; Q_FOREACH (const TextChannelPtr &channel, channels) { ret << channel; } return ret; } QList channels(const QList &channels) { QList ret; Q_FOREACH (const StreamedMediaChannelPtr &channel, channels) { ret << channel; } return ret; } } class AccountAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Account") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Connection READ Connection) Q_PROPERTY(QStringList Interfaces READ Interfaces) public: AccountAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), mConnection(QLatin1String("/")) { } virtual ~AccountAdaptor() { } void setConnection(QString conn) { if (conn.isEmpty()) { conn = QLatin1String("/"); } mConnection = QDBusObjectPath(conn); QVariantMap props; props.insert(QLatin1String("Connection"), QVariant::fromValue(mConnection)); Q_EMIT AccountPropertyChanged(props); } public: // Properties inline QDBusObjectPath Connection() const { return mConnection; } inline QStringList Interfaces() const { return QStringList(); } Q_SIGNALS: // Signals void AccountPropertyChanged(const QVariantMap &properties); private: QDBusObjectPath mConnection; }; class Dispatcher : public QObject, public QDBusContext { Q_OBJECT; public: Dispatcher(QObject *parent) : QObject(parent) { } ~Dispatcher() { } }; class TestSimpleObserver : public Test { Q_OBJECT public: TestSimpleObserver(QObject *parent = 0) : Test(parent), mChannelsCount(0), mSMChannelsCount(0) { std::memset(mMessagesChanServices, 0, sizeof(mMessagesChanServices) / sizeof(ExampleEcho2Channel*)); std::memset(mCallableChanServices, 0, sizeof(mCallableChanServices) / sizeof(ExampleCallableMediaChannel*)); } protected Q_SLOTS: void onObserverNewChannels(const QList &channels); void onObserverChannelInvalidated(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); void onObserverStreamedMediaCallStarted( const Tp::StreamedMediaChannelPtr &channel); void onObserverStreamedMediaCallEnded( const Tp::StreamedMediaChannelPtr &channel, const QString &errorMessage, const QString &errorName); private Q_SLOTS: void initTestCase(); void init(); void testObserverRegistration(); void testCrossTalk(); void cleanup(); void cleanupTestCase(); private: QMap ourObservers(); AccountPtr mAccounts[2]; struct ConnInfo { ConnInfo() : connService(0), baseConnService(0), contactRepo(0) { } TpTestsContactsConnection *connService; TpBaseConnection *baseConnService; ConnectionPtr conn; TpHandleRepoIface *contactRepo; }; ConnInfo mConns[2]; QStringList mContacts; ExampleEcho2Channel *mMessagesChanServices[2]; TextChannelPtr mTextChans[2]; ExampleCallableMediaChannel *mCallableChanServices[2]; StreamedMediaChannelPtr mSMChans[2]; int mChannelsCount; int mSMChannelsCount; }; void TestSimpleObserver::onObserverNewChannels(const QList &channels) { QVERIFY(channels.size() == 1); mChannelsCount += channels.size(); } void TestSimpleObserver::onObserverChannelInvalidated(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage) { QVERIFY(!channel.isNull()); mChannelsCount -= 1; } void TestSimpleObserver::onObserverStreamedMediaCallStarted( const Tp::StreamedMediaChannelPtr &channel) { QVERIFY(!channel.isNull()); mSMChannelsCount++; } void TestSimpleObserver::onObserverStreamedMediaCallEnded(const Tp::StreamedMediaChannelPtr &channel, const QString &errorMessage, const QString &errorName) { QVERIFY(!channel.isNull()); mSMChannelsCount--; } void TestSimpleObserver::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("simple-observer"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); QDBusConnection bus = QDBusConnection::sessionBus(); QString channelDispatcherBusName = TP_QT_IFACE_CHANNEL_DISPATCHER; QString channelDispatcherPath = QLatin1String("/org/freedesktop/Telepathy/ChannelDispatcher"); Dispatcher *dispatcher = new Dispatcher(this); QVERIFY(bus.registerService(channelDispatcherBusName)); QVERIFY(bus.registerObject(channelDispatcherPath, dispatcher)); mContacts << QLatin1String("alice") << QLatin1String("bob"); // Create 2 accounts to be used by the tests: // - each account contains a connection, a text channel and a SM channel setup: // - the channels for the first account have alice as target and; // - the channels for the second account have bob as target for (int i = 0; i < 2; ++i) { // setup account QString accountBusName = TP_QT_IFACE_ACCOUNT_MANAGER; QString accountPath = QLatin1String("/org/freedesktop/Telepathy/Account/simple/account/") + QString::number(i); QObject *adaptorObject = new QObject(this); AccountAdaptor *accountAdaptor = new AccountAdaptor(adaptorObject); QVERIFY(bus.registerService(accountBusName)); QVERIFY(bus.registerObject(accountPath, adaptorObject)); AccountPtr acc = Account::create(accountBusName, accountPath); QVERIFY(connect(acc->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(acc->isReady(), true); QCOMPARE(acc->supportsRequestHints(), false); QCOMPARE(acc->requestsSucceedWithChannel(), false); mAccounts[i] = acc; // setup conn TpTestsContactsConnection *connService = TP_TESTS_CONTACTS_CONNECTION( g_object_new(TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "example", NULL)); QVERIFY(connService != 0); TpBaseConnection *baseConnService = TP_BASE_CONNECTION(connService); QVERIFY(baseConnService != 0); gchar *connName, *connPath; GError *error = NULL; QString name(QLatin1String("example") + QString::number(i)); QVERIFY(tp_base_connection_register(baseConnService, name.toLatin1().constData(), &connName, &connPath, &error)); QVERIFY(error == 0); QVERIFY(connName != 0); QVERIFY(connPath != 0); ConnectionPtr conn = Connection::create(QLatin1String(connName), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(conn->isReady(), false); accountAdaptor->setConnection(QLatin1String(connPath)); QVERIFY(connect(conn->lowlevel()->requestConnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(conn->isReady(), true); QCOMPARE(conn->status(), ConnectionStatusConnected); TpHandleRepoIface *contactRepo = tp_base_connection_get_handles(baseConnService, TP_HANDLE_TYPE_CONTACT); mConns[i].connService = connService; mConns[i].baseConnService = baseConnService; mConns[i].conn = conn; mConns[i].contactRepo = contactRepo; // setup channels guint handle = tp_handle_ensure(contactRepo, mContacts[i].toLatin1().constData(), 0, 0); QString messagesChanPath = QLatin1String(connPath) + QLatin1String("/MessagesChannel/") + QString::number(i); mMessagesChanServices[i] = EXAMPLE_ECHO_2_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_2_CHANNEL, "connection", connService, "object-path", messagesChanPath.toLatin1().constData(), "handle", handle, NULL)); QVariantMap immutableProperties; immutableProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), mContacts[i]); mTextChans[i] = TextChannel::create(conn, messagesChanPath, immutableProperties); QVERIFY(connect(mTextChans[i]->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QString callableChanPath = QLatin1String(connPath) + QLatin1String("/CallableChannel/") + QString::number(i); mCallableChanServices[i] = EXAMPLE_CALLABLE_MEDIA_CHANNEL(g_object_new( EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, "connection", connService, "object-path", callableChanPath.toLatin1().constData(), "handle", handle, NULL)); immutableProperties.clear(); immutableProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), mContacts[i]); mSMChans[i] = StreamedMediaChannel::create(conn, callableChanPath, immutableProperties); QVERIFY(connect(mSMChans[i]->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); g_free(connName); g_free(connPath); } } void TestSimpleObserver::init() { initImpl(); } void TestSimpleObserver::testObserverRegistration() { QVERIFY(ourObservers().isEmpty()); QList observers; QList textObservers; QList callObservers; int numRegisteredObservers = 0; // Observers should be shared by bus and channel class, meaning that // the following code should register only 4 observers: // - one for text chat rooms // - one for text chats // - one for incoming/outgoing calls // - one for incoming calls (incoming) // // The Simple*Observer instances are added to the lists observers/textObservers/callObservers, // so they don't get deleted (refcount == 0) when out of scope for (int i = 0; i < 2; ++i) { AccountPtr acc = mAccounts[i]; for (int j = 0; j < 2; ++j) { QString contact = mContacts[j]; if (i == 0 && j == 0) { numRegisteredObservers = 1; } // on first run the following code should register an observer for text chat rooms, // on consecutive runs it should use the already registered observer for text chat rooms SimpleObserverPtr observer = SimpleObserver::create(acc, ChannelClassSpec::textChatroom(), contact); QCOMPARE(observer->account(), acc); QVERIFY(observer->channelFilter().size() == 1); QVERIFY(observer->channelFilter().contains(ChannelClassSpec::textChatroom())); QCOMPARE(observer->contactIdentifier(), contact); QVERIFY(observer->extraChannelFeatures().isEmpty()); QVERIFY(observer->channels().isEmpty()); observers.append(observer); QCOMPARE(ourObservers().size(), numRegisteredObservers); // the following code should always reuse the observer for text chat rooms already // created. QList extraChannelFeatures; extraChannelFeatures.append(QPair( ChannelClassSpec::textChatroom(), Channel::FeatureCore)); observer = SimpleObserver::create(acc, ChannelClassSpec::textChatroom(), contact, extraChannelFeatures); QCOMPARE(observer->account(), acc); QVERIFY(observer->channelFilter().size() == 1); QVERIFY(observer->channelFilter().contains(ChannelClassSpec::textChatroom())); QCOMPARE(observer->contactIdentifier(), contact); QCOMPARE(observer->extraChannelFeatures(), extraChannelFeatures); QVERIFY(observer->channels().isEmpty()); observers.append(observer); QCOMPARE(ourObservers().size(), numRegisteredObservers); if (i == 0 && j == 0) { numRegisteredObservers = 2; } // on first run the following code should register an observer for text chats, // on consecutive runs it should use the already registered observer for text chats SimpleTextObserverPtr textObserver = SimpleTextObserver::create(acc, contact); QCOMPARE(textObserver->account(), acc); QCOMPARE(textObserver->contactIdentifier(), contact); QVERIFY(textObserver->textChats().isEmpty()); textObservers.append(textObserver); QCOMPARE(ourObservers().size(), numRegisteredObservers); // the following code should always reuse the observer for text chats already // created. textObserver = SimpleTextObserver::create(acc, contact); QCOMPARE(textObserver->account(), acc); QCOMPARE(textObserver->contactIdentifier(), contact); QVERIFY(textObserver->textChats().isEmpty()); textObservers.append(textObserver); QCOMPARE(ourObservers().size(), numRegisteredObservers); if (i == 0 && j == 0) { numRegisteredObservers = 3; } // on first run the following code should register an observer for incoming/outgoing // calls, on consecutive runs it should use the already registered observer for // incoming/outgoing calls SimpleCallObserverPtr callObserver = SimpleCallObserver::create(acc, contact); QCOMPARE(callObserver->account(), acc); QCOMPARE(callObserver->contactIdentifier(), contact); QCOMPARE(callObserver->direction(), SimpleCallObserver::CallDirectionBoth); QVERIFY(callObserver->streamedMediaCalls().isEmpty()); callObservers.append(callObserver); QCOMPARE(ourObservers().size(), numRegisteredObservers); if (i == 0 && j == 0) { numRegisteredObservers = 4; } // on first run the following code should register an observer for incoming calls, // on consecutive runs it should use the already registered observer for incoming calls callObserver = SimpleCallObserver::create(acc, contact, SimpleCallObserver::CallDirectionIncoming); QCOMPARE(callObserver->account(), acc); QCOMPARE(callObserver->contactIdentifier(), contact); QCOMPARE(callObserver->direction(), SimpleCallObserver::CallDirectionIncoming); QVERIFY(callObserver->streamedMediaCalls().isEmpty()); callObservers.append(callObserver); QCOMPARE(ourObservers().size(), numRegisteredObservers); } } // deleting all SimpleObserver instances (text chat room) should unregister 1 observer observers.clear(); QCOMPARE(ourObservers().size(), 3); // deleting all SimpleTextObserver instances should unregister 1 observer textObservers.clear(); QCOMPARE(ourObservers().size(), 2); // deleting all SimpleCallObserver instances should unregister 2 observers callObservers.clear(); QVERIFY(ourObservers().isEmpty()); } void TestSimpleObserver::testCrossTalk() { SimpleObserverPtr observers[2]; SimpleTextObserverPtr textObservers[2]; SimpleTextObserverPtr textObserversNoContact[2]; SimpleCallObserverPtr callObservers[2]; SimpleCallObserverPtr callObserversNoContact[2]; for (int i = 0; i < 2; ++i) { AccountPtr acc = mAccounts[i]; observers[i] = SimpleObserver::create(acc, ChannelClassSpec::textChat(), mContacts[i]); QVERIFY(connect(observers[i].data(), SIGNAL(newChannels(QList)), SLOT(onObserverNewChannels(QList)))); QVERIFY(connect(observers[i].data(), SIGNAL(channelInvalidated(Tp::ChannelPtr,QString,QString)), SLOT(onObserverChannelInvalidated(Tp::ChannelPtr,QString,QString)))); // SimpleTextObserver::messageSent/Received is already tested in contact-messenger test textObservers[i] = SimpleTextObserver::create(acc, mContacts[i]); textObserversNoContact[i] = SimpleTextObserver::create(acc); callObservers[i] = SimpleCallObserver::create(acc, mContacts[i]); QVERIFY(connect(callObservers[i].data(), SIGNAL(streamedMediaCallStarted(Tp::StreamedMediaChannelPtr)), SLOT(onObserverStreamedMediaCallStarted(Tp::StreamedMediaChannelPtr)))); QVERIFY(connect(callObservers[i].data(), SIGNAL(streamedMediaCallEnded(Tp::StreamedMediaChannelPtr,QString,QString)), SLOT(onObserverStreamedMediaCallEnded(Tp::StreamedMediaChannelPtr,QString,QString)))); callObserversNoContact[i] = SimpleCallObserver::create(acc); } QMap ourObserversMap = ourObservers(); QMap::const_iterator it = ourObserversMap.constBegin(); QMap::const_iterator end = ourObserversMap.constEnd(); for (; it != end; ++it) { ClientObserverInterface *observerIface = new ClientObserverInterface( it.key(), it.value(), this); ChannelClassList observerFilter; if (!waitForProperty(observerIface->requestPropertyObserverChannelFilter(), &observerFilter)) { continue; } for (int i = 0; i < 2; ++i) { Q_FOREACH (const ChannelClassSpec &spec, observerFilter) { // only call ObserveChannels for text chat channels on observers that support text // chat if (spec.isSubsetOf(ChannelClassSpec::textChat())) { ChannelDetails textChan = { QDBusObjectPath(mTextChans[i]->objectPath()), mTextChans[i]->immutableProperties() }; observerIface->ObserveChannels( QDBusObjectPath(mAccounts[i]->objectPath()), QDBusObjectPath(mTextChans[i]->connection()->objectPath()), ChannelDetailsList() << textChan, QDBusObjectPath(QLatin1String("/")), Tp::ObjectPathList(), QVariantMap()); break; } } Q_FOREACH (const ChannelClassSpec &spec, observerFilter) { // only call ObserveChannels for SM channels on observers that support SM channels if (spec.isSubsetOf(ChannelClassSpec::streamedMediaCall())) { ChannelDetails smChan = { QDBusObjectPath(mSMChans[i]->objectPath()), mSMChans[i]->immutableProperties() }; observerIface->ObserveChannels( QDBusObjectPath(mAccounts[i]->objectPath()), QDBusObjectPath(mSMChans[i]->connection()->objectPath()), ChannelDetailsList() << smChan, QDBusObjectPath(QLatin1String("/")), Tp::ObjectPathList(), QVariantMap()); break; } } } } // due to QtDBus limitation, we cannot wait for ObserveChannels to finish properly before // proceeding, so we have to wait till all observers receive the channels while (observers[0]->channels().isEmpty() || observers[1]->channels().isEmpty() || textObservers[0]->textChats().isEmpty() || textObservers[1]->textChats().isEmpty() || textObserversNoContact[0]->textChats().isEmpty() || textObserversNoContact[1]->textChats().isEmpty() || callObservers[0]->streamedMediaCalls().isEmpty() || callObservers[1]->streamedMediaCalls().isEmpty() || callObserversNoContact[0]->streamedMediaCalls().isEmpty() || callObserversNoContact[1]->streamedMediaCalls().isEmpty()) { mLoop->processEvents(); } QCOMPARE(mChannelsCount, 2); QCOMPARE(mSMChannelsCount, 2); QCOMPARE(observers[0]->channels().size(), 1); QCOMPARE(textObservers[0]->textChats().size(), 1); QCOMPARE(textObserversNoContact[0]->textChats().size(), 1); QCOMPARE(callObservers[0]->streamedMediaCalls().size(), 1); QCOMPARE(callObserversNoContact[0]->streamedMediaCalls().size(), 1); QCOMPARE(observers[1]->channels().size(), 1); QCOMPARE(textObservers[1]->textChats().size(), 1); QCOMPARE(textObserversNoContact[1]->textChats().size(), 1); QCOMPARE(callObservers[1]->streamedMediaCalls().size(), 1); QCOMPARE(callObserversNoContact[1]->streamedMediaCalls().size(), 1); QVERIFY(textObservers[0]->textChats() != textObservers[1]->textChats()); QVERIFY(textObserversNoContact[0]->textChats() != textObserversNoContact[1]->textChats()); QCOMPARE(textObservers[0]->textChats(), textObserversNoContact[0]->textChats()); QCOMPARE(textObservers[1]->textChats(), textObserversNoContact[1]->textChats()); QVERIFY(callObservers[0]->streamedMediaCalls() != callObservers[1]->streamedMediaCalls()); QVERIFY(callObservers[0]->streamedMediaCalls() != callObserversNoContact[1]->streamedMediaCalls()); QCOMPARE(callObservers[0]->streamedMediaCalls(), callObserversNoContact[0]->streamedMediaCalls()); QCOMPARE(callObservers[1]->streamedMediaCalls(), callObserversNoContact[1]->streamedMediaCalls()); QCOMPARE(observers[0]->channels(), channels(textObservers[0]->textChats())); QVERIFY(observers[0]->channels() != channels(textObservers[1]->textChats())); QVERIFY(observers[0]->channels() != channels(callObservers[0]->streamedMediaCalls())); QVERIFY(observers[0]->channels() != channels(callObservers[1]->streamedMediaCalls())); QVERIFY(observers[1]->channels() != channels(textObservers[0]->textChats())); QCOMPARE(observers[1]->channels(), channels(textObservers[1]->textChats())); QVERIFY(observers[1]->channels() != channels(callObservers[0]->streamedMediaCalls())); QVERIFY(observers[1]->channels() != channels(callObservers[1]->streamedMediaCalls())); QVERIFY(channels(callObservers[0]->streamedMediaCalls()) != channels(textObservers[0]->textChats())); QVERIFY(channels(callObservers[0]->streamedMediaCalls()) != channels(textObservers[1]->textChats())); QVERIFY(channels(callObservers[1]->streamedMediaCalls()) != channels(textObservers[0]->textChats())); QVERIFY(channels(callObservers[1]->streamedMediaCalls()) != channels(textObservers[1]->textChats())); QCOMPARE(observers[0]->channels().first()->objectPath(), mTextChans[0]->objectPath()); QCOMPARE(observers[1]->channels().first()->objectPath(), mTextChans[1]->objectPath()); QCOMPARE(textObservers[0]->textChats().first()->objectPath(), mTextChans[0]->objectPath()); QCOMPARE(textObservers[1]->textChats().first()->objectPath(), mTextChans[1]->objectPath()); QCOMPARE(textObserversNoContact[0]->textChats().first()->objectPath(), mTextChans[0]->objectPath()); QCOMPARE(textObserversNoContact[1]->textChats().first()->objectPath(), mTextChans[1]->objectPath()); QCOMPARE(callObservers[0]->streamedMediaCalls().first()->objectPath(), mSMChans[0]->objectPath()); QCOMPARE(callObservers[1]->streamedMediaCalls().first()->objectPath(), mSMChans[1]->objectPath()); // invalidate channels for (int i = 0; i < 2; ++i) { if (mMessagesChanServices[i] != 0) { g_object_unref(mMessagesChanServices[i]); mMessagesChanServices[i] = 0; } if (mCallableChanServices[i] != 0) { g_object_unref(mCallableChanServices[i]); mCallableChanServices[i] = 0; } } while (!observers[0]->channels().isEmpty() || !observers[1]->channels().isEmpty() || !textObservers[0]->textChats().isEmpty() || !textObservers[1]->textChats().isEmpty() || !textObserversNoContact[0]->textChats().isEmpty() || !textObserversNoContact[1]->textChats().isEmpty() || !callObservers[0]->streamedMediaCalls().isEmpty() || !callObservers[1]->streamedMediaCalls().isEmpty() || !callObserversNoContact[0]->streamedMediaCalls().isEmpty() || !callObserversNoContact[1]->streamedMediaCalls().isEmpty()) { mLoop->processEvents(); } QCOMPARE(mChannelsCount, 0); QCOMPARE(mSMChannelsCount, 0); } void TestSimpleObserver::cleanup() { cleanupImpl(); } void TestSimpleObserver::cleanupTestCase() { for (int i = 0; i < 2; ++i) { if (!mConns[i].conn) { continue; } if (mConns[i].conn->requestedFeatures().contains(Connection::FeatureCore)) { QVERIFY(mConns[i].connService != NULL); if (TP_BASE_CONNECTION(mConns[i].connService)->status != TP_CONNECTION_STATUS_DISCONNECTED) { tp_base_connection_change_status(TP_BASE_CONNECTION(mConns[i].connService), TP_CONNECTION_STATUS_DISCONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); } while (mConns[i].conn->isValid()) { mLoop->processEvents(); } } mConns[i].conn.reset(); mTextChans[i].reset(); mSMChans[i].reset(); if (mMessagesChanServices[i] != 0) { g_object_unref(mMessagesChanServices[i]); mMessagesChanServices[i] = 0; } if (mCallableChanServices[i] != 0) { g_object_unref(mCallableChanServices[i]); mCallableChanServices[i] = 0; } if (mConns[i].connService != 0) { mConns[i].baseConnService = 0; g_object_unref(mConns[i].connService); mConns[i].connService = 0; } } cleanupTestCaseImpl(); } QMap TestSimpleObserver::ourObservers() { QStringList registeredNames = QDBusConnection::sessionBus().interface()->registeredServiceNames(); QMap observers; Q_FOREACH (QString name, registeredNames) { if (!name.startsWith(QLatin1String("org.freedesktop.Telepathy.Client.TpQtSO"))) { continue; } if (QDBusConnection::sessionBus().interface()->serviceOwner(name).value() != QDBusConnection::sessionBus().baseService()) { continue; } QString path = QLatin1Char('/') + name; path.replace(QLatin1Char('.'), QLatin1Char('/')); ClientInterface client(name, path); QStringList ifaces; if (!waitForProperty(client.requestPropertyInterfaces(), &ifaces)) { continue; } if (!ifaces.contains(TP_QT_IFACE_CLIENT_OBSERVER)) { continue; } observers.insert(name, path); } return observers; } QTEST_MAIN(TestSimpleObserver) #include "_gen/simple-observer.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contacts-location.cpp0000644000175100017520000000764312530423576024163 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include using namespace Tp; class TestContactsLocation : public Test { Q_OBJECT public: TestContactsLocation(QObject *parent = 0) : Test(parent), mConn(0), mContactsLocationUpdated(0) { } protected Q_SLOTS: void onLocationInfoUpdated(const Tp::LocationInfo &location); private Q_SLOTS: void initTestCase(); void init(); void testLocation(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; int mContactsLocationUpdated; }; void TestContactsLocation::onLocationInfoUpdated(const Tp::LocationInfo &location) { Q_UNUSED(location); mContactsLocationUpdated++; mLoop->exit(0); } void TestContactsLocation::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contacts-location"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "foo", NULL); QCOMPARE(mConn->connect(), true); } void TestContactsLocation::init() { initImpl(); mContactsLocationUpdated = 0; } void TestContactsLocation::testLocation() { ContactManagerPtr contactManager = mConn->client()->contactManager(); QVERIFY(contactManager->supportedFeatures().contains(Contact::FeatureLocation)); QStringList validIDs = QStringList() << QLatin1String("foo") << QLatin1String("bar"); QList contacts = mConn->contacts(validIDs, Contact::FeatureLocation); QCOMPARE(contacts.size(), validIDs.size()); for (int i = 0; i < contacts.size(); i++) { ContactPtr contact = contacts[i]; QCOMPARE(contact->requestedFeatures().contains(Contact::FeatureLocation), true); QCOMPARE(contact->actualFeatures().contains(Contact::FeatureLocation), true); QVERIFY(connect(contact.data(), SIGNAL(locationUpdated(const Tp::LocationInfo &)), SLOT(onLocationInfoUpdated(const Tp::LocationInfo &)))); } GHashTable *location_1 = tp_asv_new( "country", G_TYPE_STRING, "United-kingdoms", "lat", G_TYPE_DOUBLE, 20.0, NULL); GHashTable *location_2 = tp_asv_new( "country", G_TYPE_STRING, "Atlantis", "lat", G_TYPE_DOUBLE, 10.0, NULL); GHashTable *locations[] = { location_1, location_2 }; TpHandle handles[] = { 0, 0 }; TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); for (unsigned i = 0; i < 2; i++) { handles[i] = tp_handle_ensure(serviceRepo, qPrintable(validIDs[i]), NULL, NULL); } tp_tests_contacts_connection_change_locations(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), 2, handles, locations); while (mContactsLocationUpdated != 2) { QCOMPARE(mLoop->exec(), 0); } for (int i = 0; i < contacts.size(); i++) { ContactPtr contact = contacts[i]; QCOMPARE(contact->location().country(), QLatin1String(tp_asv_get_string(locations[i], "country"))); QCOMPARE(contact->location().latitude(), tp_asv_get_double(locations[i], "lat", NULL)); } g_hash_table_unref(location_1); g_hash_table_unref(location_2); } void TestContactsLocation::cleanup() { cleanupImpl(); } void TestContactsLocation::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestContactsLocation) #include "_gen/contacts-location.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/types.cpp0000644000175100017520000001000512530423576021665 0ustar00kaffeinekaffeine00000000000000#include #include #include #include using namespace Tp; /* We need a interface returning a QVariantMap property where we will insert the various * combinations we are testing, so let's use Channel.Tube for that as we already have the * autogenerated interface for it */ class TubeAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Channel.Interface.Tube") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" "") Q_PROPERTY(QVariantMap Parameters READ Parameters) public: TubeAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) {} ~TubeAdaptor() {} public: // Properties inline QVariantMap Parameters() const { QVariantMap ret; SUSocketAddress su; su.address = QLatin1String("1.1.1.1"); su.port = 1111; SocketAddressIPv4 saIPv4; saIPv4.address = QLatin1String("2.2.2.2"); saIPv4.port = 2222; SocketAddressIPv6 saIPv6; saIPv6.address = QLatin1String("3.3.3.3"); saIPv6.port = 3333; ret.insert(QLatin1String("SU"), qVariantFromValue(su)); ret.insert(QLatin1String("saIPv4"), qVariantFromValue(saIPv4)); ret.insert(QLatin1String("saIPv6"), qVariantFromValue(saIPv6)); return ret; } }; class TestTypes : public Test { Q_OBJECT public: TestTypes(QObject *parent = 0) : Test(parent) { } protected Q_SLOTS: private Q_SLOTS: void initTestCase(); void init(); void testParameters(); void cleanup(); void cleanupTestCase(); private: QVariantMap mParameters; }; void TestTypes::initTestCase() { initTestCaseImpl(); QDBusConnection bus = QDBusConnection::sessionBus(); // setup adaptor QString tubeBusName = QLatin1String("org.freedesktop.Telepathy.Test.Types"); QString tubePath = QLatin1String("/org/freedesktop/Telepathy/Test/Types"); QObject *adaptorObject = new QObject(this); (void) new TubeAdaptor(adaptorObject); QVERIFY(bus.registerService(tubeBusName)); QVERIFY(bus.registerObject(tubePath, adaptorObject)); Client::ChannelInterfaceTubeInterface *tubeIface = new Client::ChannelInterfaceTubeInterface( bus, tubeBusName, tubePath, this); QVERIFY(waitForProperty(tubeIface->requestPropertyParameters(), &mParameters)); } void TestTypes::init() { initImpl(); } void TestTypes::testParameters() { SUSocketAddress su; SocketAddressIPv4 saIPv4; SocketAddressIPv6 saIPv6; // SUSocketAddress should properly convert to SUSocketAddress itself and // SocketAddressIPv4/IPv6 su = qdbus_cast(mParameters.value(QLatin1String("SU"))); QCOMPARE(su.address, QLatin1String("1.1.1.1")); QCOMPARE(su.port, static_cast(1111)); saIPv4 = qdbus_cast(mParameters.value(QLatin1String("SU"))); QCOMPARE(saIPv4.address, QLatin1String("1.1.1.1")); QCOMPARE(saIPv4.port, static_cast(1111)); saIPv6 = qdbus_cast(mParameters.value(QLatin1String("SU"))); QCOMPARE(saIPv6.address, QLatin1String("1.1.1.1")); QCOMPARE(saIPv6.port, static_cast(1111)); // SocketAddressIPv4->SocketAddressIPv4 saIPv4 = qdbus_cast(mParameters.value(QLatin1String("saIPv4"))); QCOMPARE(saIPv4.address, QLatin1String("2.2.2.2")); QCOMPARE(saIPv4.port, static_cast(2222)); // SocketAddressIPv6->SocketAddressIPv6 saIPv6 = qdbus_cast(mParameters.value(QLatin1String("saIPv6"))); QCOMPARE(saIPv6.address, QLatin1String("3.3.3.3")); QCOMPARE(saIPv6.port, static_cast(3333)); } void TestTypes::cleanup() { cleanupImpl(); } void TestTypes::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestTypes) #include "_gen/types.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/dbus-proxy-factory.cpp0000644000175100017520000002542412530423576024315 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestDBusProxyFactory : public Test { Q_OBJECT public: TestDBusProxyFactory(QObject *parent = 0) : Test(parent), mConnService1(0), mConnService2(0) { } protected Q_SLOTS: void expectFinished(); private Q_SLOTS: void initTestCase(); void init(); void testCaching(); void testDropRefs(); void testInvalidate(); void testBogusService(); void cleanup(); void cleanupTestCase(); private: TpTestsContactsConnection *mConnService1, *mConnService2; QString mConnPath1, mConnPath2; QString mConnName1, mConnName2; ConnectionFactoryPtr mFactory; uint mNumFinished; }; void TestDBusProxyFactory::expectFinished() { mNumFinished++; } void TestDBusProxyFactory::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("dbus-proxy-factory"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); gchar *name; gchar *connPath; GError *error = 0; mConnService1 = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me1@example.com", "protocol", "simple", NULL)); QVERIFY(mConnService1 != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService1), "contacts", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName1 = QLatin1String(name); mConnPath1 = QLatin1String(connPath); g_free(name); g_free(connPath); mConnService2 = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me2@example.com", "protocol", "simple", NULL)); QVERIFY(mConnService2 != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService2), "contacts", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName2 = QLatin1String(name); mConnPath2 = QLatin1String(connPath); g_free(name); g_free(connPath); } void TestDBusProxyFactory::init() { initImpl(); mFactory = ConnectionFactory::create(QDBusConnection::sessionBus(), Connection::FeatureCore); mNumFinished = 0; } void TestDBusProxyFactory::testCaching() { PendingReady *first = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(first != NULL); QVERIFY(!first->proxy().isNull()); PendingReady *same = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(same != NULL); QVERIFY(!same->proxy().isNull()); QCOMPARE(same->proxy().data(), first->proxy().data()); PendingReady *different = mFactory->proxy(mConnName2, mConnPath2, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(different != NULL); QVERIFY(!different->proxy().isNull()); QVERIFY(different->proxy() != first->proxy()); ConnectionPtr firstProxy = ConnectionPtr::qObjectCast(first->proxy()); QVERIFY(!first->isFinished() && !same->isFinished() && !different->isFinished()); QVERIFY(connect(first, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFinished()))); QVERIFY(connect(same, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFinished()))); QVERIFY(connect(different, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFinished()))); QVERIFY(!first->isFinished() && !same->isFinished() && !different->isFinished()); while (mNumFinished < 3) { mLoop->processEvents(); } QCOMPARE(mNumFinished, 3U); PendingReady *another = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(another != NULL); QVERIFY(!another->proxy().isNull()); // Should still be the same even if all the initial requests already finished QCOMPARE(another->proxy().data(), firstProxy.data()); QVERIFY(connect(another, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestDBusProxyFactory::testDropRefs() { PendingReady *first = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(first != NULL); QVERIFY(!first->proxy().isNull()); ConnectionPtr firstProxy = ConnectionPtr::qObjectCast(first->proxy()); QVERIFY(firstProxy->isValid()); QVERIFY(connect(first, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); PendingReady *same = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(same != NULL); QVERIFY(!same->proxy().isNull()); // The first one is in scope so we should've got it again QCOMPARE(same->proxy().data(), firstProxy.data()); QVERIFY(connect(same, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Flush the delete event for the PendingReady, which drops the PendingReady ref to the proxy mLoop->processEvents(); // Make the Conn go out of scope Connection *firstPtr = firstProxy.data(); firstProxy.reset(); // Hopefully this prevents getting the new proxy instantiated on the very same address QScopedPointer > hole(new char[sizeof(Connection)]); PendingReady *different = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(different != NULL); QVERIFY(!different->proxy().isNull()); // The first one has gone out of scope and deleted so we should've got a different one QVERIFY(different->proxy().data() != firstPtr); } void TestDBusProxyFactory::testInvalidate() { PendingReady *first = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(first != NULL); QVERIFY(!first->proxy().isNull()); ConnectionPtr firstProxy = ConnectionPtr::qObjectCast(first->proxy()); QVERIFY(firstProxy->isValid()); QVERIFY(connect(first, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); PendingReady *same = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(same != NULL); QVERIFY(!same->proxy().isNull()); // The first one is in scope and valid so we should've got it again QCOMPARE(same->proxy().data(), firstProxy.data()); QVERIFY(connect(same, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Flush the delete event for the PendingReady, which drops the PendingReady ref to the proxy mLoop->processEvents(); // Synthesize an invalidation for the proxy QVERIFY(connect(firstProxy.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), mLoop, SLOT(quit()))); TestBackdoors::invalidateProxy(firstProxy.data(), QLatin1String("im.bonghits.Errors.Synthetic"), QLatin1String("")); QCOMPARE(mLoop->exec(), 0); QVERIFY(!firstProxy->isValid()); PendingReady *different = mFactory->proxy(mConnName1, mConnPath1, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(different != NULL); ConnectionPtr differentProxy = ConnectionPtr::qObjectCast(different->proxy()); QVERIFY(!differentProxy.isNull()); // The first one is invalid so we should've got a different one QVERIFY(differentProxy.data() != firstProxy.data()); QVERIFY(differentProxy->isValid()); QVERIFY(!differentProxy->isReady()); QVERIFY(connect(different, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(differentProxy->isValid()); QVERIFY(differentProxy->isReady()); } void TestDBusProxyFactory::testBogusService() { PendingReady *bogus = mFactory->proxy(QLatin1String("org.bogus.Totally"), QLatin1String("/org/bogus/Totally"), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(bogus != NULL); QVERIFY(!bogus->proxy().isNull()); QVERIFY(!ConnectionPtr::qObjectCast(bogus->proxy())->isValid()); PendingReady *another = mFactory->proxy(QLatin1String("org.bogus.Totally"), QLatin1String("/org/bogus/Totally"), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(another != NULL); QVERIFY(!another->proxy().isNull()); QVERIFY(!ConnectionPtr::qObjectCast(another->proxy())->isValid()); // We shouldn't get the same proxy twice ie. a proxy should not be cached if not present on bus // and invalidated because of that, otherwise we'll return an invalid instance from the cache // even if after the service appears on the bus QVERIFY(another->proxy() != bogus->proxy()); // The PendingReady itself should finish with failure QVERIFY(connect(another, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestDBusProxyFactory::cleanup() { mFactory.reset(); cleanupImpl(); } void TestDBusProxyFactory::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestDBusProxyFactory) #include "_gen/dbus-proxy-factory.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/captcha-authentication.cpp0000644000175100017520000002471212530423576025153 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestCaptchaAuthentication : public Test { Q_OBJECT public: TestCaptchaAuthentication(QObject *parent = 0) : Test(parent), mConn(0), mChanService(0) { } private Q_SLOTS: void initTestCase(); void init(); void testCreation(); void testCaptchaSuccessful(); void testCaptchaRetry(); void testCaptchaCancel(); void testNoCaptcha(); void cleanup(); void cleanupTestCase(); private: void createCaptchaChannel(bool canRetry = false); TestConnHelper *mConn; TpTestsCaptchaChannel *mChanService; ServerAuthenticationChannelPtr mChan; CaptchaAuthenticationPtr mCaptcha; }; void TestCaptchaAuthentication::createCaptchaChannel(bool canRetry) { mChan.reset(); mLoop->processEvents(); tp_clear_object(&mChanService); /* Create service-side tube channel object */ QString chanPath = QString(QLatin1String("%1/Channel")).arg(mConn->objectPath()); mChanService = TP_TESTS_CAPTCHA_CHANNEL(g_object_new( TP_TESTS_TYPE_CAPTCHA_CHANNEL, "connection", mConn->service(), "requested", FALSE, "object-path", chanPath.toLatin1().constData(), "can-retry-captcha", canRetry, NULL)); /* Create client-side tube channel object */ mChan = ServerAuthenticationChannel::create(mConn->client(), chanPath, QVariantMap()); // Verify features shouldn't be Ready QVERIFY(mChan->captchaAuthentication().isNull()); QVERIFY(!mChan->hasCaptchaInterface()); //QVERIFY(!mChan->hasSaslInterface()); QVERIFY(connect(mChan->becomeReady(ServerAuthenticationChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(ServerAuthenticationChannel::FeatureCore)); QVERIFY(mChan->hasCaptchaInterface()); //QVERIFY(!mChan->hasSaslInterface()); mCaptcha = mChan->captchaAuthentication(); QCOMPARE(mCaptcha.isNull(), false); } void TestCaptchaAuthentication::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("captcha-authentication"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); } void TestCaptchaAuthentication::init() { initImpl(); } void TestCaptchaAuthentication::testCreation() { createCaptchaChannel(); QCOMPARE(mCaptcha->status(), Tp::CaptchaStatusLocalPending); QCOMPARE(mCaptcha->canRetry(), false); QVERIFY(mCaptcha->error().isEmpty()); QVERIFY(mCaptcha->errorDetails().allDetails().isEmpty()); } void TestCaptchaAuthentication::testCaptchaSuccessful() { createCaptchaChannel(); QSignalSpy spy(mCaptcha.data(), SIGNAL(statusChanged(Tp::CaptchaStatus))); PendingCaptchas *pendingCaptchas = mCaptcha->requestCaptchas(QStringList() << QLatin1String("image/png")); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pendingCaptchas->requiresMultipleCaptchas(), false); QCOMPARE(pendingCaptchas->captchaList().size(), 1); Captcha captchaData = pendingCaptchas->captcha(); QCOMPARE(captchaData.mimeType(), QLatin1String("image/png")); QCOMPARE(captchaData.label(), QLatin1String("Enter the text displayed")); QCOMPARE(captchaData.data(), QByteArray("This is a fake payload")); QCOMPARE(captchaData.type(), CaptchaAuthentication::OCRChallenge); QCOMPARE(captchaData.id(), (uint)42); QVERIFY(connect(mCaptcha->answer(42, QLatin1String("This is the right answer")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(spy.size(), 2); QCOMPARE(mCaptcha->status(), CaptchaStatusSucceeded); } void TestCaptchaAuthentication::testCaptchaRetry() { createCaptchaChannel(true); QSignalSpy spy(mCaptcha.data(), SIGNAL(statusChanged(Tp::CaptchaStatus))); PendingCaptchas *pendingCaptchas = mCaptcha->requestCaptchas(QStringList() << QLatin1String("image/png")); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mCaptcha->answer(42, QLatin1String("What is this I don't even")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCaptcha->status(), CaptchaStatusTryAgain); pendingCaptchas = mCaptcha->requestCaptchas(QStringList() << QLatin1String("image/png")); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pendingCaptchas->requiresMultipleCaptchas(), false); QCOMPARE(pendingCaptchas->captchaList().size(), 1); Captcha captchaData = pendingCaptchas->captcha(); QCOMPARE(captchaData.mimeType(), QLatin1String("image/png")); QCOMPARE(captchaData.label(), QLatin1String("Enter the text displayed")); QCOMPARE(captchaData.data(), QByteArray("This is a reloaded payload")); QCOMPARE(captchaData.type(), CaptchaAuthentication::OCRChallenge); QCOMPARE(captchaData.id(), (uint)42); QVERIFY(connect(mCaptcha->answer(42, QLatin1String("This is the right answer")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCaptcha->status(), CaptchaStatusSucceeded); // Check signals now QCOMPARE(spy.size(), 5); } void TestCaptchaAuthentication::testCaptchaCancel() { createCaptchaChannel(); PendingCaptchas *pendingCaptchas = mCaptcha->requestCaptchas(QStringList() << QLatin1String("image/png")); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); // Check that the result is not still available QCOMPARE(pendingCaptchas->captchaList().size(), 0); QCOMPARE(pendingCaptchas->captcha().id(), (uint)0); QCOMPARE(mLoop->exec(), 0); // Cancel now QVERIFY(connect(mCaptcha->cancel(CaptchaCancelReasonUserCancelled), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCaptcha->status(), CaptchaStatusFailed); // Now try performing random actions which should fail QVERIFY(connect(mCaptcha->answer(42, QLatin1String("This is the right answer")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mCaptcha->answer(CaptchaAnswers()), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mCaptcha->requestCaptchas(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); } void TestCaptchaAuthentication::testNoCaptcha() { createCaptchaChannel(); PendingCaptchas *pendingCaptchas = mCaptcha->requestCaptchas(QStringList(), CaptchaAuthentication::AudioRecognitionChallenge); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); pendingCaptchas = mCaptcha->requestCaptchas(QStringList() << QLatin1String("nosuchtype"), CaptchaAuthentication::SpeechRecognitionChallenge | CaptchaAuthentication::SpeechQuestionChallenge); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); // Get the qa one pendingCaptchas = mCaptcha->requestCaptchas(QStringList(), CaptchaAuthentication::TextQuestionChallenge); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); Captcha data = pendingCaptchas->captcha(); Captcha data2(pendingCaptchas->captcha()); QCOMPARE(data.id(), pendingCaptchas->captcha().id()); QCOMPARE(data.id(), data2.id()); // Get the video one to fail utterly pendingCaptchas = mCaptcha->requestCaptchas(QStringList(), CaptchaAuthentication::VideoRecognitionChallenge); QVERIFY(connect(pendingCaptchas, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); } void TestCaptchaAuthentication::cleanup() { cleanupImpl(); if (mChan && mChan->isValid()) { qDebug() << "waiting for the channel to become invalidated"; QVERIFY(connect(mChan.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), mLoop, SLOT(quit()))); tp_base_channel_close(TP_BASE_CHANNEL(mChanService)); QCOMPARE(mLoop->exec(), 0); } mChan.reset(); if (mChanService != 0) { g_object_unref(mChanService); mChanService = 0; } mLoop->processEvents(); } void TestCaptchaAuthentication::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestCaptchaAuthentication) #include "_gen/captcha-authentication.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/base-protocol.cpp0000644000175100017520000006536512530423576023315 0ustar00kaffeinekaffeine00000000000000#include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include using namespace Tp; class TestBaseProtocolCM; typedef SharedPtr TestBaseProtocolCMPtr; class TestBaseProtocolCM : public BaseConnectionManager { public: TestBaseProtocolCM(const QDBusConnection &conn, const QString & name) : BaseConnectionManager(conn, name) { } static void createCM(TestBaseProtocolCMPtr &cm); private: static BaseConnectionPtr createConnectionCb(const QVariantMap ¶meters, Tp::DBusError *error); static QString identifyAccountCb(const QVariantMap ¶meters, Tp::DBusError *error); static QString normalizeContactCb(const QString &contactId, Tp::DBusError *error); static QString normalizeVCardAddressCb(const QString &vcardField, const QString &vcardAddress, Tp::DBusError *error); static QString normalizeContactUriCb(const QString &uri, Tp::DBusError *error); }; class TestBaseProtocol : public Test { Q_OBJECT public: TestBaseProtocol(QObject *parent = 0) : Test(parent) { } private: static void protocolObjectSvcSideCb(TestBaseProtocolCMPtr &cm); static void addressingIfaceSvcSideCb(TestBaseProtocolCMPtr &cm); static void avatarsIfaceSvcSideCb(TestBaseProtocolCMPtr &cm); static void presenceIfaceSvcSideCb(TestBaseProtocolCMPtr &cm); private Q_SLOTS: void initTestCase(); void init(); void protocolObjectSvcSide(); void protocolObjectClientSide(); void addressingIfaceSvcSide(); void addressingIfaceClientSide(); void avatarsIfaceSvcSide(); void avatarsIfaceClientSide(); void presenceIfaceSvcSide(); void presenceIfaceClientSide(); void cleanup(); void cleanupTestCase(); private: TestThreadHelper *mThreadHelper; }; void TestBaseProtocolCM::createCM(TestBaseProtocolCMPtr &cm) { cm = BaseConnectionManager::create(QLatin1String("testcm")); BaseProtocolPtr protocol = BaseProtocol::create(QLatin1String("example")); protocol->setConnectionInterfaces(QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST); protocol->setParameters(ProtocolParameterList() << ProtocolParameter(QLatin1String("account"), QDBusSignature("s"), Tp::ConnMgrParamFlagRequired | Tp::ConnMgrParamFlagRegister)); protocol->setRequestableChannelClasses(RequestableChannelClassSpec::textChat()); protocol->setVCardField(QLatin1String("x-telepathy-example")); protocol->setEnglishName(QLatin1String("Test CM")); protocol->setIconName(QLatin1String("im-icq")); protocol->setAuthenticationTypes(QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION); protocol->setCreateConnectionCallback(ptrFun(&TestBaseProtocolCM::createConnectionCb)); protocol->setIdentifyAccountCallback(ptrFun(&TestBaseProtocolCM::identifyAccountCb)); protocol->setNormalizeContactCallback(ptrFun(&TestBaseProtocolCM::normalizeContactCb)); BaseProtocolAddressingInterfacePtr addressingIface = BaseProtocolAddressingInterface::create(); addressingIface->setAddressableUriSchemes(QStringList() << QLatin1String("xmpp") << QLatin1String("tel")); addressingIface->setAddressableVCardFields(QStringList() << QLatin1String("x-jabber") << QLatin1String("tel")); addressingIface->setNormalizeVCardAddressCallback( ptrFun(&TestBaseProtocolCM::normalizeVCardAddressCb)); addressingIface->setNormalizeContactUriCallback( ptrFun(&TestBaseProtocolCM::normalizeContactUriCb)); QVERIFY(protocol->plugInterface(addressingIface)); BaseProtocolAvatarsInterfacePtr avatarsIface = BaseProtocolAvatarsInterface::create(); avatarsIface->setAvatarDetails( AvatarSpec(QStringList() << QLatin1String("image/png") << QLatin1String("image/jpeg") << QLatin1String("image/gif"), 32, 96, 64, 32, 96, 64, 37748736)); QVERIFY(protocol->plugInterface(avatarsIface)); BaseProtocolPresenceInterfacePtr presenceIface = BaseProtocolPresenceInterface::create(); presenceIface->setStatuses(PresenceSpecList() << PresenceSpec::available() << PresenceSpec::away() << PresenceSpec::busy() << PresenceSpec::offline()); QVERIFY(protocol->plugInterface(presenceIface)); QVERIFY(cm->addProtocol(protocol)); Tp::DBusError err; QVERIFY(cm->registerObject(&err)); QVERIFY(!err.isValid()); QVERIFY(cm->isRegistered()); } BaseConnectionPtr TestBaseProtocolCM::createConnectionCb(const QVariantMap ¶meters, Tp::DBusError *error) { if (parameters.contains(QLatin1String("account"))) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, parameters.value(QLatin1String("account")).toString()); } else { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("This test doesn't create connections")); } return BaseConnectionPtr(); } QString TestBaseProtocolCM::identifyAccountCb(const QVariantMap ¶meters, Tp::DBusError *error) { QString account = parameters.value(QLatin1String("account")).toString(); if (account.isEmpty()) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("'account' parameter not given")); } return account; } QString TestBaseProtocolCM::normalizeContactCb(const QString &contactId, Tp::DBusError *error) { if (contactId.isEmpty()) { error->set(TP_QT_ERROR_INVALID_HANDLE, QLatin1String("ID must not be empty")); return QString(); } return contactId.toLower(); } QString TestBaseProtocolCM::normalizeVCardAddressCb(const QString &vcardField, const QString &vcardAddress, Tp::DBusError *error) { if (vcardField == QLatin1String("x-jabber")) { return vcardAddress.toLower() + QLatin1String("@wonderland"); } else { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Invalid VCard field")); return QString(); } } QString TestBaseProtocolCM::normalizeContactUriCb(const QString &uri, Tp::DBusError *error) { if (uri.startsWith(QLatin1String("xmpp:"))) { if (uri.contains(QLatin1Char('/'))) { return uri.left(uri.indexOf(QLatin1Char('/'))); } else { return uri; } } else { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid URI")); return QString(); } } void TestBaseProtocol::initTestCase() { initTestCaseImpl(); } void TestBaseProtocol::init() { initImpl(); mThreadHelper = new TestThreadHelper(); TEST_THREAD_HELPER_EXECUTE(mThreadHelper, &TestBaseProtocolCM::createCM); } void TestBaseProtocol::protocolObjectSvcSideCb(TestBaseProtocolCMPtr &cm) { QCOMPARE(cm->name(), QLatin1String("testcm")); QVERIFY(cm->hasProtocol(QLatin1String("example"))); QCOMPARE(cm->protocols().size(), 1); BaseProtocolPtr protocol = cm->protocols().at(0); QVERIFY(protocol); //basic properties QCOMPARE(protocol->name(), QLatin1String("example")); QCOMPARE(protocol->vcardField(), QLatin1String("x-telepathy-example")); QCOMPARE(protocol->englishName(), QLatin1String("Test CM")); QCOMPARE(protocol->iconName(), QLatin1String("im-icq")); QCOMPARE(protocol->connectionInterfaces(), QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST); QCOMPARE(protocol->authenticationTypes(), QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION); QCOMPARE(protocol->requestableChannelClasses().size(), 1); QCOMPARE(protocol->requestableChannelClasses().at(0), RequestableChannelClassSpec::textChat()); //parameters QCOMPARE(protocol->parameters().size(), 1); QCOMPARE(protocol->parameters().at(0).name(), QLatin1String("account")); QCOMPARE(protocol->parameters().at(0).dbusSignature(), QDBusSignature("s")); QVERIFY(protocol->parameters().at(0).isRequired()); QVERIFY(protocol->parameters().at(0).isRequiredForRegistration()); QVERIFY(!protocol->parameters().at(0).isSecret()); //interfaces QCOMPARE(protocol->interfaces().size(), 3); //immutable props QVariantMap props = protocol->immutableProperties(); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".Interfaces"))); QStringList sl = props.value( TP_QT_IFACE_PROTOCOL + QLatin1String(".Interfaces")).toStringList(); QVERIFY(sl.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING)); QVERIFY(sl.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS)); QVERIFY(sl.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE)); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".Parameters"))); ParamSpecList params = qvariant_cast(props.value( TP_QT_IFACE_PROTOCOL + QLatin1String(".Parameters"))); QCOMPARE(params.size(), 1); QCOMPARE(params.at(0).name, QLatin1String("account")); QCOMPARE(params.at(0).signature, QLatin1String("s")); QCOMPARE(params.at(0).flags, uint(ConnMgrParamFlagRequired | ConnMgrParamFlagRegister)); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".VCardField"))); QCOMPARE(props.value(TP_QT_IFACE_PROTOCOL + QLatin1String(".VCardField")).toString(), QLatin1String("x-telepathy-example")); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".EnglishName"))); QCOMPARE(props.value(TP_QT_IFACE_PROTOCOL + QLatin1String(".EnglishName")).toString(), QLatin1String("Test CM")); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".Icon"))); QCOMPARE(props.value(TP_QT_IFACE_PROTOCOL + QLatin1String(".Icon")).toString(), QLatin1String("im-icq")); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses"))); RequestableChannelClassList rcc = qvariant_cast(props.value( TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses"))); QCOMPARE(rcc.size(), 1); QCOMPARE(RequestableChannelClassSpec(rcc.at(0)), RequestableChannelClassSpec::textChat()); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".ConnectionInterfaces"))); sl = props.value(TP_QT_IFACE_PROTOCOL + QLatin1String(".ConnectionInterfaces")).toStringList(); QCOMPARE(sl, QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".AuthenticationTypes"))); sl = props.value(TP_QT_IFACE_PROTOCOL + QLatin1String(".AuthenticationTypes")).toStringList(); QCOMPARE(sl, QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION); //interface immutable properties should also be here //test only one - the rest later QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight")).toInt(), 32); //methods { Tp::DBusError err; QString normalizedContact = protocol->normalizeContact(QLatin1String("BoB"), &err); QVERIFY(!err.isValid()); QCOMPARE(normalizedContact, QLatin1String("bob")); } { Tp::DBusError err; QString account = protocol->identifyAccount(QVariantMap(), &err); QVERIFY(err.isValid()); QVERIFY(account.isEmpty()); QCOMPARE(err.name(), TP_QT_ERROR_INVALID_ARGUMENT); QCOMPARE(err.message(), QLatin1String("'account' parameter not given")); } { Tp::DBusError err; BaseConnectionPtr conn = protocol->createConnection(QVariantMap(), &err); QVERIFY(err.isValid()); QVERIFY(conn.isNull()); QCOMPARE(err.name(), TP_QT_ERROR_NOT_IMPLEMENTED); QCOMPARE(err.message(), QLatin1String("This test doesn't create connections")); } } void TestBaseProtocol::protocolObjectSvcSide() { TEST_THREAD_HELPER_EXECUTE(mThreadHelper, &TestBaseProtocol::protocolObjectSvcSideCb); } void TestBaseProtocol::protocolObjectClientSide() { ConnectionManagerPtr cliCM = ConnectionManager::create(QLatin1String("testcm")); PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cliCM->supportedProtocols().size(), 1); QVERIFY(cliCM->hasProtocol(QLatin1String("example"))); ProtocolInfo protocol = cliCM->protocol(QLatin1String("example")); QVERIFY(protocol.isValid()); Tp::Client::ProtocolInterface protocolIface(cliCM->busName(), cliCM->objectPath() + QLatin1String("/example")); //basic properties QCOMPARE(protocol.vcardField(), QLatin1String("x-telepathy-example")); QCOMPARE(protocol.englishName(), QLatin1String("Test CM")); QCOMPARE(protocol.iconName(), QLatin1String("im-icq")); QCOMPARE(protocol.capabilities().allClassSpecs().size(), 1); QVERIFY(protocol.capabilities().textChats()); PendingVariant *pv = protocolIface.requestPropertyConnectionInterfaces(); connect(pv, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pv->result().toStringList(), QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST); pv = protocolIface.requestPropertyAuthenticationTypes(); connect(pv, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pv->result().toStringList(), QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION); //parameters QVERIFY(protocol.hasParameter(QLatin1String("account"))); ProtocolParameterList params = protocol.parameters(); QCOMPARE(params.size(), 1); QCOMPARE(params.at(0).name(), QLatin1String("account")); QCOMPARE(params.at(0).dbusSignature(), QDBusSignature("s")); QVERIFY(params.at(0).isRequired()); QVERIFY(params.at(0).isRequiredForRegistration()); QVERIFY(!params.at(0).isSecret()); //methods { QDBusPendingReply reply = protocolIface.NormalizeContact(QLatin1String("ALiCe")); reply.waitForFinished(); QVERIFY(!reply.isError()); QCOMPARE(reply.value(), QLatin1String("alice")); } QVariantMap map; map.insert(QLatin1String("account"), QLatin1String("example@nowhere.com")); { QDBusPendingReply reply = protocolIface.IdentifyAccount(map); reply.waitForFinished(); QVERIFY(!reply.isError()); QCOMPARE(reply.value(), QLatin1String("example@nowhere.com")); } PendingConnection *pc = cliCM->lowlevel()->requestConnection(QLatin1String("example"), map); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED); QCOMPARE(mLastErrorMessage, QLatin1String("example@nowhere.com")); } void TestBaseProtocol::addressingIfaceSvcSideCb(TestBaseProtocolCMPtr &cm) { QCOMPARE(cm->name(), QLatin1String("testcm")); QVERIFY(cm->hasProtocol(QLatin1String("example"))); QCOMPARE(cm->protocols().size(), 1); Tp::BaseProtocolPtr protocol = cm->protocols().at(0); QVERIFY(protocol); Tp::BaseProtocolAddressingInterfacePtr iface = Tp::BaseProtocolAddressingInterfacePtr::qObjectCast( protocol->interface(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING)); QVERIFY(iface); //properties QStringList uriSchemes = iface->addressableUriSchemes(); QCOMPARE(uriSchemes.size(), 2); QVERIFY(uriSchemes.contains(QLatin1String("xmpp"))); QVERIFY(uriSchemes.contains(QLatin1String("tel"))); QStringList vcardFields = iface->addressableVCardFields(); QCOMPARE(vcardFields.size(), 2); QVERIFY(vcardFields.contains(QLatin1String("x-jabber"))); QVERIFY(vcardFields.contains(QLatin1String("tel"))); //no immutable properties QVERIFY(iface->immutableProperties().isEmpty()); //methods { Tp::DBusError err; QString result = iface->normalizeVCardAddress(QLatin1String("x-msn"), QLatin1String("Alice"), &err); QVERIFY(err.isValid()); QVERIFY(result.isEmpty()); QCOMPARE(err.name(), TP_QT_ERROR_NOT_IMPLEMENTED); QCOMPARE(err.message(), QLatin1String("Invalid VCard field")); } { Tp::DBusError err; QString result = iface->normalizeContactUri( QLatin1String("xmpp:alice@wonderland/Mobile"), &err); QVERIFY(!err.isValid()); QCOMPARE(result, QLatin1String("xmpp:alice@wonderland")); } } void TestBaseProtocol::addressingIfaceSvcSide() { TEST_THREAD_HELPER_EXECUTE(mThreadHelper, &TestBaseProtocol::addressingIfaceSvcSideCb); } void TestBaseProtocol::addressingIfaceClientSide() { ConnectionManagerPtr cliCM = ConnectionManager::create(QLatin1String("testcm")); PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cliCM->supportedProtocols().size(), 1); QVERIFY(cliCM->hasProtocol(QLatin1String("example"))); ProtocolInfo protocol = cliCM->protocol(QLatin1String("example")); QVERIFY(protocol.isValid()); //properties QStringList uriSchemes = protocol.addressableUriSchemes(); QCOMPARE(uriSchemes.size(), 2); QVERIFY(uriSchemes.contains(QLatin1String("xmpp"))); QVERIFY(uriSchemes.contains(QLatin1String("tel"))); QStringList vcardFields = protocol.addressableVCardFields(); QCOMPARE(vcardFields.size(), 2); QVERIFY(vcardFields.contains(QLatin1String("x-jabber"))); QVERIFY(vcardFields.contains(QLatin1String("tel"))); //methods PendingString *str = protocol.normalizeVCardAddress(QLatin1String("x-jabber"), QLatin1String("Alice")); connect(str, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(str->result(), QLatin1String("alice@wonderland")); str = protocol.normalizeContactUri(QLatin1String("invalid")); connect(str, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_INVALID_ARGUMENT); QCOMPARE(mLastErrorMessage, QLatin1String("Invalid URI")); } void TestBaseProtocol::avatarsIfaceSvcSideCb(TestBaseProtocolCMPtr &cm) { QCOMPARE(cm->name(), QLatin1String("testcm")); QVERIFY(cm->hasProtocol(QLatin1String("example"))); QCOMPARE(cm->protocols().size(), 1); Tp::BaseProtocolPtr protocol = cm->protocols().at(0); QVERIFY(protocol); Tp::BaseProtocolAvatarsInterfacePtr iface = Tp::BaseProtocolAvatarsInterfacePtr::qObjectCast( protocol->interface(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS)); QVERIFY(iface); //avatar details property AvatarSpec avatarSpec = iface->avatarDetails(); QVERIFY(avatarSpec.isValid()); QStringList mimeTypes = avatarSpec.supportedMimeTypes(); QCOMPARE(mimeTypes.size(), 3); QVERIFY(mimeTypes.contains(QLatin1String("image/png"))); QVERIFY(mimeTypes.contains(QLatin1String("image/jpeg"))); QVERIFY(mimeTypes.contains(QLatin1String("image/gif"))); QCOMPARE(avatarSpec.minimumWidth(), 32U); QCOMPARE(avatarSpec.maximumWidth(), 96U); QCOMPARE(avatarSpec.recommendedWidth(), 64U); QCOMPARE(avatarSpec.minimumHeight(), 32U); QCOMPARE(avatarSpec.maximumHeight(), 96U); QCOMPARE(avatarSpec.recommendedHeight(), 64U); QCOMPARE(avatarSpec.maximumBytes(), 37748736U); //immutable properties QVariantMap props = protocol->immutableProperties(); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".SupportedAvatarMIMETypes"))); mimeTypes = props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".SupportedAvatarMIMETypes")) .toStringList(); QCOMPARE(mimeTypes.size(), 3); QVERIFY(mimeTypes.contains(QLatin1String("image/png"))); QVERIFY(mimeTypes.contains(QLatin1String("image/jpeg"))); QVERIFY(mimeTypes.contains(QLatin1String("image/gif"))); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight")).toInt(), 32); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarWidth"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarWidth")).toInt(), 32); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarHeight"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarHeight")).toInt(), 64); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarWidth"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarWidth")).toInt(), 64); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarHeight"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarHeight")).toInt(), 96); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarWidth"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarWidth")).toInt(), 96); QVERIFY(props.contains( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarBytes"))); QCOMPARE(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarBytes")).toInt(), 37748736); } void TestBaseProtocol::avatarsIfaceSvcSide() { TEST_THREAD_HELPER_EXECUTE(mThreadHelper, &TestBaseProtocol::avatarsIfaceSvcSideCb); } void TestBaseProtocol::avatarsIfaceClientSide() { ConnectionManagerPtr cliCM = ConnectionManager::create(QLatin1String("testcm")); PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cliCM->supportedProtocols().size(), 1); QVERIFY(cliCM->hasProtocol(QLatin1String("example"))); ProtocolInfo protocol = cliCM->protocol(QLatin1String("example")); QVERIFY(protocol.isValid()); //avatar iface AvatarSpec avatarSpec = protocol.avatarRequirements(); QVERIFY(avatarSpec.isValid()); QStringList mimeTypes = avatarSpec.supportedMimeTypes(); QCOMPARE(mimeTypes.size(), 3); QVERIFY(mimeTypes.contains(QLatin1String("image/png"))); QVERIFY(mimeTypes.contains(QLatin1String("image/jpeg"))); QVERIFY(mimeTypes.contains(QLatin1String("image/gif"))); QCOMPARE(avatarSpec.minimumWidth(), 32U); QCOMPARE(avatarSpec.maximumWidth(), 96U); QCOMPARE(avatarSpec.recommendedWidth(), 64U); QCOMPARE(avatarSpec.minimumHeight(), 32U); QCOMPARE(avatarSpec.maximumHeight(), 96U); QCOMPARE(avatarSpec.recommendedHeight(), 64U); QCOMPARE(avatarSpec.maximumBytes(), 37748736U); } void TestBaseProtocol::presenceIfaceSvcSideCb(TestBaseProtocolCMPtr &cm) { QCOMPARE(cm->name(), QLatin1String("testcm")); QVERIFY(cm->hasProtocol(QLatin1String("example"))); QCOMPARE(cm->protocols().size(), 1); Tp::BaseProtocolPtr protocol = cm->protocols().at(0); QVERIFY(protocol); Tp::BaseProtocolPresenceInterfacePtr iface = Tp::BaseProtocolPresenceInterfacePtr::qObjectCast( protocol->interface(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE)); QVERIFY(iface); //presence interface PresenceSpecList statuses = iface->statuses(); QCOMPARE(statuses.size(), 4); QVERIFY(statuses.contains(PresenceSpec::available())); QVERIFY(statuses.contains(PresenceSpec::away())); QVERIFY(statuses.contains(PresenceSpec::busy())); QVERIFY(statuses.contains(PresenceSpec::offline())); QVERIFY(!statuses.contains(PresenceSpec::xa())); //immutable properties QVariantMap props = protocol->immutableProperties(); QVERIFY(props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE + QLatin1String(".Statuses"))); statuses = PresenceSpecList(qvariant_cast(props.value( TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE + QLatin1String(".Statuses")))); QCOMPARE(statuses.size(), 4); QVERIFY(statuses.contains(PresenceSpec::available())); QVERIFY(statuses.contains(PresenceSpec::away())); QVERIFY(statuses.contains(PresenceSpec::busy())); QVERIFY(statuses.contains(PresenceSpec::offline())); QVERIFY(!statuses.contains(PresenceSpec::xa())); } void TestBaseProtocol::presenceIfaceSvcSide() { TEST_THREAD_HELPER_EXECUTE(mThreadHelper, &TestBaseProtocol::presenceIfaceSvcSideCb); } void TestBaseProtocol::presenceIfaceClientSide() { ConnectionManagerPtr cliCM = ConnectionManager::create(QLatin1String("testcm")); PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cliCM->supportedProtocols().size(), 1); QVERIFY(cliCM->hasProtocol(QLatin1String("example"))); ProtocolInfo protocol = cliCM->protocol(QLatin1String("example")); QVERIFY(protocol.isValid()); //presence interface PresenceSpecList statuses = protocol.allowedPresenceStatuses(); QCOMPARE(statuses.size(), 4); QVERIFY(statuses.contains(PresenceSpec::available())); QVERIFY(statuses.contains(PresenceSpec::away())); QVERIFY(statuses.contains(PresenceSpec::busy())); QVERIFY(statuses.contains(PresenceSpec::offline())); QVERIFY(!statuses.contains(PresenceSpec::xa())); } void TestBaseProtocol::cleanup() { delete mThreadHelper; cleanupImpl(); } void TestBaseProtocol::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestBaseProtocol) #include "_gen/base-protocol.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contacts-client-types.cpp0000644000175100017520000001371612530423576024771 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include using namespace Tp; class TestContactsClientTypes : public Test { Q_OBJECT public: TestContactsClientTypes(QObject *parent = 0) : Test(parent), mConn(0), mClientTypesUpdated(0) { } protected Q_SLOTS: void onClientTypesChanged(const QStringList &clientTypes); void onRequestClientTypesFinished(Tp::PendingOperation *op); private Q_SLOTS: void initTestCase(); void init(); void testClientTypes(); void testClientTypesAttributes(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; int mClientTypesUpdated; QStringList mClientTypes; }; void TestContactsClientTypes::onClientTypesChanged(const QStringList &clientTypes) { mClientTypesUpdated++; mClientTypes = clientTypes; } void TestContactsClientTypes::onRequestClientTypesFinished(PendingOperation *op) { if (op->isError()) { mLastError = op->errorName(); mLastErrorMessage = op->errorMessage(); mLoop->exit(1); } else { PendingStringList *psl = qobject_cast(op); mClientTypes = psl->result(); mLoop->exit(0); } } void TestContactsClientTypes::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contacts-client-types"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "foo", NULL); QCOMPARE(mConn->connect(), true); } void TestContactsClientTypes::init() { initImpl(); mClientTypesUpdated = 0; } void TestContactsClientTypes::testClientTypes() { ContactManagerPtr contactManager = mConn->client()->contactManager(); QVERIFY(contactManager->supportedFeatures().contains(Contact::FeatureClientTypes)); QStringList validIDs = QStringList() << QLatin1String("foo") << QLatin1String("bar"); QList contacts = mConn->contacts(validIDs, Contact::FeatureClientTypes); QCOMPARE(contacts.size(), validIDs.size()); for (int i = 0; i < contacts.size(); i++) { ContactPtr contact = contacts[i]; QCOMPARE(contact->requestedFeatures().contains(Contact::FeatureClientTypes), true); QCOMPARE(contact->actualFeatures().contains(Contact::FeatureClientTypes), true); QVERIFY(contact->clientTypes().isEmpty()); QVERIFY(connect(contact.data(), SIGNAL(clientTypesChanged(QStringList)), SLOT(onClientTypesChanged(QStringList)))); } ContactPtr contactFoo = contacts[0]; ContactPtr contactBar = contacts[1]; const gchar *clientTypes1[] = { "phone", "pc", NULL }; const gchar *clientTypes2[] = { "web", NULL }; tp_tests_contacts_connection_change_client_types(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), contactFoo->handle()[0], g_strdupv((gchar**) clientTypes1)); while (mClientTypesUpdated != 1) { mLoop->processEvents(); } QCOMPARE(mClientTypesUpdated, 1); QCOMPARE(mClientTypes, QStringList() << QLatin1String("phone") << QLatin1String("pc")); QCOMPARE(contactFoo->clientTypes(), QStringList() << QLatin1String("phone") << QLatin1String("pc")); mClientTypes.clear(); tp_tests_contacts_connection_change_client_types(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), contactBar->handle()[0], g_strdupv((gchar**) clientTypes2)); while (mClientTypesUpdated != 2) { mLoop->processEvents(); } QCOMPARE(mClientTypesUpdated, 2); QCOMPARE(mClientTypes, QStringList() << QLatin1String("web")); QCOMPARE(contactBar->clientTypes(), QStringList() << QLatin1String("web")); mClientTypesUpdated = 0; mClientTypes.clear(); connect(contactFoo->requestClientTypes(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestClientTypesFinished(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientTypes, QStringList() << QLatin1String("phone") << QLatin1String("pc")); mClientTypes.clear(); connect(contactBar->requestClientTypes(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestClientTypesFinished(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientTypes, QStringList() << QLatin1String("web")); } void TestContactsClientTypes::testClientTypesAttributes() { ContactManagerPtr contactManager = mConn->client()->contactManager(); QVERIFY(contactManager->supportedFeatures().contains(Contact::FeatureClientTypes)); const gchar *clientTypes[] = { "pc", "phone", NULL }; tp_tests_contacts_connection_change_client_types(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), 2, g_strdupv((gchar**) clientTypes)); QStringList validIDs = QStringList() << QLatin1String("foo"); QList contacts = mConn->contacts(validIDs, Contact::FeatureClientTypes); QCOMPARE(contacts.size(), 1); ContactPtr contact = contacts[0]; QCOMPARE(contact->handle()[0], uint(2)); QCOMPARE(contact->requestedFeatures().contains(Contact::FeatureClientTypes), true); QCOMPARE(contact->actualFeatures().contains(Contact::FeatureClientTypes), true); QCOMPARE(contact->clientTypes(), QStringList() << QLatin1String("pc") << QLatin1String("phone")); } void TestContactsClientTypes::cleanup() { cleanupImpl(); } void TestContactsClientTypes::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestContactsClientTypes) #include "_gen/contacts-client-types.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/stream-tube-handlers.cpp0000644000175100017520000022233112530423576024556 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; namespace { class ChannelRequestAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelRequest") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Account READ Account) Q_PROPERTY(qulonglong UserActionTime READ UserActionTime) Q_PROPERTY(QString PreferredHandler READ PreferredHandler) Q_PROPERTY(QualifiedPropertyValueMapList Requests READ Requests) Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(QVariantMap Hints READ Hints) public: ChannelRequestAdaptor(QDBusObjectPath account, qulonglong userActionTime, QString preferredHandler, QualifiedPropertyValueMapList requests, QStringList interfaces, bool shouldFail, bool proceedNoop, QVariantMap hints, QObject *parent) : QDBusAbstractAdaptor(parent), mAccount(account), mUserActionTime(userActionTime), mPreferredHandler(preferredHandler), mRequests(requests), mInterfaces(interfaces), mShouldFail(shouldFail), mProceedNoop(proceedNoop), mHints(hints) { } virtual ~ChannelRequestAdaptor() { } void setChan(const QString &connPath, const QVariantMap &connProps, const QString &chanPath, const QVariantMap &chanProps) { mConnPath = connPath; mConnProps = connProps; mChanPath = chanPath; mChanProps = chanProps; } public: // Properties inline QDBusObjectPath Account() const { return mAccount; } inline qulonglong UserActionTime() const { return mUserActionTime; } inline QString PreferredHandler() const { return mPreferredHandler; } inline QualifiedPropertyValueMapList Requests() const { return mRequests; } inline QStringList Interfaces() const { return mInterfaces; } inline QVariantMap Hints() const { return mHints; } public Q_SLOTS: // Methods void Proceed() { if (mProceedNoop) { return; } if (mShouldFail) { QTimer::singleShot(0, this, SLOT(fail())); } else { QTimer::singleShot(0, this, SLOT(succeed())); } } void Cancel() { Q_EMIT Failed(QLatin1String(TP_QT_ERROR_CANCELLED), QLatin1String("Cancelled")); } Q_SIGNALS: // Signals void Failed(const QString &error, const QString &message); void Succeeded(); void SucceededWithChannel(const QDBusObjectPath &connPath, const QVariantMap &connProps, const QDBusObjectPath &chanPath, const QVariantMap &chanProps); private Q_SLOTS: void fail() { Q_EMIT Failed(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Not available")); } void succeed() { if (!mConnPath.isEmpty() && !mChanPath.isEmpty()) { Q_EMIT SucceededWithChannel(QDBusObjectPath(mConnPath), mConnProps, QDBusObjectPath(mChanPath), mChanProps); } Q_EMIT Succeeded(); } private: QDBusObjectPath mAccount; qulonglong mUserActionTime; QString mPreferredHandler; QualifiedPropertyValueMapList mRequests; QStringList mInterfaces; bool mShouldFail; bool mProceedNoop; QVariantMap mHints; QString mConnPath, mChanPath; QVariantMap mConnProps, mChanProps; }; void destroySocketControlList(gpointer data) { g_array_free(reinterpret_cast(data), TRUE); } GHashTable *createSupportedSocketTypesHash(bool supportMonitoring, bool unixOnly) { GHashTable *ret; GArray *tab; TpSocketAccessControl ac; ret = g_hash_table_new_full(NULL, NULL, NULL, destroySocketControlList); // Named UNIX tab = g_array_sized_new(FALSE, FALSE, sizeof(TpSocketAccessControl), 1); ac = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; g_array_append_val(tab, ac); if (supportMonitoring) { ac = TP_SOCKET_ACCESS_CONTROL_CREDENTIALS; g_array_append_val(tab, ac); } g_hash_table_insert(ret, GUINT_TO_POINTER(TP_SOCKET_ADDRESS_TYPE_UNIX), tab); // Abstract UNIX tab = g_array_sized_new(FALSE, FALSE, sizeof(TpSocketAccessControl), 1); ac = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; g_array_append_val(tab, ac); if (supportMonitoring) { ac = TP_SOCKET_ACCESS_CONTROL_CREDENTIALS; g_array_append_val(tab, ac); } g_hash_table_insert(ret, GUINT_TO_POINTER(TP_SOCKET_ADDRESS_TYPE_ABSTRACT_UNIX), tab); if (unixOnly) { return ret; } // IPv4 tab = g_array_sized_new(FALSE, FALSE, sizeof(TpSocketAccessControl), 1); ac = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; g_array_append_val(tab, ac); if (supportMonitoring) { ac = TP_SOCKET_ACCESS_CONTROL_PORT; g_array_append_val(tab, ac); } g_hash_table_insert(ret, GUINT_TO_POINTER(TP_SOCKET_ADDRESS_TYPE_IPV4), tab); // IPv6 tab = g_array_sized_new(FALSE, FALSE, sizeof(TpSocketAccessControl), 1); ac = TP_SOCKET_ACCESS_CONTROL_LOCALHOST; g_array_append_val(tab, ac); if (supportMonitoring) { ac = TP_SOCKET_ACCESS_CONTROL_PORT; g_array_append_val(tab, ac); } g_hash_table_insert(ret, GUINT_TO_POINTER(TP_SOCKET_ADDRESS_TYPE_IPV6), tab); return ret; } } class TestStreamTubeHandlers : public Test { Q_OBJECT public: TestStreamTubeHandlers(QObject *parent = 0) : Test(parent) { } protected Q_SLOTS: void onTubeRequested(const Tp::AccountPtr &, const Tp::OutgoingStreamTubeChannelPtr &, const QDateTime &, const Tp::ChannelRequestHints &); void onServerTubeClosed(const Tp::AccountPtr &, const Tp::OutgoingStreamTubeChannelPtr &, const QString &, const QString &); void onNewServerConnection(const QHostAddress &, quint16, const Tp::AccountPtr &, const Tp::ContactPtr &, const Tp::OutgoingStreamTubeChannelPtr &); void onServerConnectionClosed(const QHostAddress &, quint16, const Tp::AccountPtr &, const Tp::ContactPtr &, const QString &, const QString &, const Tp::OutgoingStreamTubeChannelPtr &); void onTubeOffered(const Tp::AccountPtr &, const Tp::IncomingStreamTubeChannelPtr &); void onClientTubeClosed(const Tp::AccountPtr &, const Tp::IncomingStreamTubeChannelPtr &, const QString &, const QString &); void onClientAcceptedAsTcp(const QHostAddress &, quint16, const QHostAddress &, quint16, const Tp::AccountPtr &, const Tp::IncomingStreamTubeChannelPtr &); void onClientAcceptedAsUnix(const QString &, bool reqsCreds, uchar credByte, const Tp::AccountPtr &, const Tp::IncomingStreamTubeChannelPtr &); void onNewClientConnection(const Tp::AccountPtr &, const Tp::IncomingStreamTubeChannelPtr &, uint connectionId); void onClientConnectionClosed(const Tp::AccountPtr &, const Tp::IncomingStreamTubeChannelPtr &, uint, const QString &, const QString &); private Q_SLOTS: void initTestCase(); void init(); void testRegistration(); void testBasicTcpExport(); void testFailedExport(); void testServerConnMonitoring(); void testSSTHErrorPaths(); void testClientBasicTcp(); void testClientTcpGeneratorIgnore(); void testClientTcpUnsupported(); void testClientBasicUnix(); void testClientUnixCredsIgnore(); // the unix AF unsupported codepaths are the same, so no need to test separately void testClientConnMonitoring(); void cleanup(); void cleanupTestCase(); private: QMap ourHandlers(); QPair createTubeChannel(bool requested, HandleType type, bool supportMonitoring, bool unixOnly = false); AccountManagerPtr mAM; AccountPtr mAcc; TestConnHelper *mConn; QList mChanServices; OutgoingStreamTubeChannelPtr mRequestedTube; QDateTime mRequestTime; ChannelRequestHints mRequestHints; OutgoingStreamTubeChannelPtr mServerClosedTube; QString mServerCloseError, mServerCloseMessage; QHostAddress mNewServerConnectionAddress, mClosedServerConnectionAddress; quint16 mNewServerConnectionPort, mClosedServerConnectionPort; ContactPtr mNewServerConnectionContact, mClosedServerConnectionContact; OutgoingStreamTubeChannelPtr mNewServerConnectionTube, mServerConnectionCloseTube; QString mServerConnectionCloseError, mServerConnectionCloseMessage; IncomingStreamTubeChannelPtr mOfferedTube; IncomingStreamTubeChannelPtr mClientClosedTube; QString mClientCloseError, mClientCloseMessage; QHostAddress mClientTcpAcceptAddr, mClientTcpAcceptSrcAddr; quint16 mClientTcpAcceptPort, mClientTcpAcceptSrcPort; IncomingStreamTubeChannelPtr mClientTcpAcceptTube; QString mClientUnixAcceptAddr; bool mClientUnixReqsCreds; IncomingStreamTubeChannelPtr mClientUnixAcceptTube; IncomingStreamTubeChannelPtr mNewClientConnectionTube, mClosedClientConnectionTube; uint mNewClientConnectionId, mClosedClientConnectionId; QString mClientConnectionCloseError, mClientConnectionCloseMessage; }; QPair TestStreamTubeHandlers::createTubeChannel(bool requested, HandleType handleType, bool supportMonitoring, bool unixOnly) { mLoop->processEvents(); /* Create service-side tube channel object */ QString chanPath = QString(QLatin1String("%1/Channel%2%3%4")) .arg(mConn->objectPath()) .arg(requested) .arg(static_cast(handleType)) .arg(supportMonitoring); QVariantMap chanProps; chanProps.insert(TP_QT_IFACE_CHANNEL + QString::fromLatin1(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE); chanProps.insert(TP_QT_IFACE_CHANNEL + QString::fromLatin1(".Requested"), requested); chanProps.insert(TP_QT_IFACE_CHANNEL + QString::fromLatin1(".TargetHandleType"), static_cast(handleType)); TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandleRepoIface *roomRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_ROOM); TpHandle handle; GType type; if (handleType == HandleTypeContact) { handle = tp_handle_ensure(contactRepo, "bob", NULL, NULL); type = TP_TESTS_TYPE_CONTACT_STREAM_TUBE_CHANNEL; chanProps.insert(TP_QT_IFACE_CHANNEL + QString::fromLatin1(".TargetID"), QString::fromLatin1("bob")); } else { handle = tp_handle_ensure(roomRepo, "#test", NULL, NULL); type = TP_TESTS_TYPE_ROOM_STREAM_TUBE_CHANNEL; chanProps.insert(TP_QT_IFACE_CHANNEL + QString::fromLatin1(".TargetID"), QString::fromLatin1("#test")); } chanProps.insert(TP_QT_IFACE_CHANNEL + QString::fromLatin1(".TargetHandle"), handle); TpHandle alfHandle = tp_handle_ensure(contactRepo, "alf", NULL, NULL); GHashTable *sockets = createSupportedSocketTypesHash(supportMonitoring, unixOnly); mChanServices.push_back( TP_TESTS_STREAM_TUBE_CHANNEL(g_object_new( type, "connection", mConn->service(), "handle", handle, "requested", requested, "object-path", chanPath.toLatin1().constData(), "supported-socket-types", sockets, "initiator-handle", alfHandle, NULL))); return qMakePair(chanPath, chanProps); } QMap TestStreamTubeHandlers::ourHandlers() { QStringList registeredNames = QDBusConnection::sessionBus().interface()->registeredServiceNames(); QMap handlers; Q_FOREACH (QString name, registeredNames) { if (!name.startsWith(QLatin1String("org.freedesktop.Telepathy.Client."))) { continue; } if (QDBusConnection::sessionBus().interface()->serviceOwner(name).value() != QDBusConnection::sessionBus().baseService()) { continue; } QString path = QLatin1Char('/') + name; path.replace(QLatin1Char('.'), QLatin1Char('/')); ClientInterface client(name, path); QStringList ifaces; if (!waitForProperty(client.requestPropertyInterfaces(), &ifaces)) { continue; } if (!ifaces.contains(TP_QT_IFACE_CLIENT_HANDLER)) { continue; } handlers.insert(name.mid(std::strlen("org.freedesktop.Telepathy.Client.")), new ClientHandlerInterface(name, path, this)); } return handlers; } void TestStreamTubeHandlers::onTubeRequested( const Tp::AccountPtr &acc, const Tp::OutgoingStreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints) { qDebug() << "tube" << tube->objectPath() << "requested on account" << acc->objectPath(); // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } // We always set the user action time in the past, so if that's carried over correctly, it won't // be any more recent than the current time if (mRequestTime >= QDateTime::currentDateTime()) { qWarning() << "user action time later than expected"; mLoop->exit(2); return; } mRequestedTube = tube; mRequestTime = userActionTime; mRequestHints = hints; mLoop->exit(0); } void TestStreamTubeHandlers::onServerTubeClosed( const Tp::AccountPtr &acc, const Tp::OutgoingStreamTubeChannelPtr &tube, const QString &error, const QString &message) { qDebug() << "tube" << tube->objectPath() << "closed on account" << acc->objectPath(); qDebug() << "with error" << error << ':' << message; // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mServerClosedTube = tube; mServerCloseError = error; mServerCloseMessage = message; mLoop->exit(0); } void TestStreamTubeHandlers::onClientTubeClosed( const Tp::AccountPtr &acc, const Tp::IncomingStreamTubeChannelPtr &tube, const QString &error, const QString &message) { qDebug() << "tube" << tube->objectPath() << "closed on account" << acc->objectPath(); qDebug() << "with error" << error << ':' << message; // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mClientClosedTube = tube; mClientCloseError = error; mClientCloseMessage = message; mLoop->exit(0); } void TestStreamTubeHandlers::onNewServerConnection( const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &acc, const Tp::ContactPtr &contact, const Tp::OutgoingStreamTubeChannelPtr &tube) { qDebug() << "new conn" << qMakePair(sourceAddress, sourcePort) << "on tube" << tube->objectPath(); qDebug() << "from contact" << contact->id(); // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } if (!tube->connectionsForSourceAddresses().contains(qMakePair(sourceAddress, sourcePort))) { qWarning() << "the signaled tube doesn't report having that particular connection"; mLoop->exit(2); return; } mNewServerConnectionAddress = sourceAddress; mNewServerConnectionPort = sourcePort; mNewServerConnectionContact = contact; mNewServerConnectionTube = tube; mLoop->exit(0); } void TestStreamTubeHandlers::onServerConnectionClosed( const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &acc, const Tp::ContactPtr &contact, const QString &error, const QString &message, const Tp::OutgoingStreamTubeChannelPtr &tube) { qDebug() << "conn" << qMakePair(sourceAddress, sourcePort) << "closed on tube" << tube->objectPath(); qDebug() << "with error" << error << ':' << message; // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mClosedServerConnectionAddress = sourceAddress; mClosedServerConnectionPort = sourcePort; mClosedServerConnectionContact = contact; mServerConnectionCloseError = error; mServerConnectionCloseMessage = message; mServerConnectionCloseTube = tube; mLoop->exit(0); } void TestStreamTubeHandlers::onTubeOffered( const Tp::AccountPtr &acc, const Tp::IncomingStreamTubeChannelPtr &tube) { qDebug() << "tube" << tube->objectPath() << "offered to account" << acc->objectPath(); // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mOfferedTube = tube; mLoop->exit(0); } void TestStreamTubeHandlers::onClientAcceptedAsTcp( const QHostAddress &listenAddress, quint16 listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &acc, const Tp::IncomingStreamTubeChannelPtr &tube) { qDebug() << "tube" << tube->objectPath() << "accepted at" << qMakePair(listenAddress, listenPort); // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mClientTcpAcceptAddr = listenAddress; mClientTcpAcceptPort = listenPort; mClientTcpAcceptSrcAddr = sourceAddress; mClientTcpAcceptSrcPort = sourcePort; mClientTcpAcceptTube = tube; mLoop->exit(0); } void TestStreamTubeHandlers::onClientAcceptedAsUnix( const QString &listenAddress, bool reqsCreds, uchar credByte, const Tp::AccountPtr &acc, const Tp::IncomingStreamTubeChannelPtr &tube) { qDebug() << "tube" << tube->objectPath() << "accepted at" << listenAddress; qDebug() << "reqs creds:" << reqsCreds << "cred byte:" << credByte; // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mClientUnixAcceptAddr = listenAddress; mClientUnixReqsCreds = reqsCreds; mClientUnixAcceptTube = tube; mLoop->exit(0); } void TestStreamTubeHandlers::onNewClientConnection( const Tp::AccountPtr &acc, const Tp::IncomingStreamTubeChannelPtr &tube, uint id) { qDebug() << "new conn" << id << "on tube" << tube->objectPath(); // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mNewClientConnectionTube = tube; mNewClientConnectionId = id; mLoop->exit(0); } void TestStreamTubeHandlers::onClientConnectionClosed( const Tp::AccountPtr &acc, const Tp::IncomingStreamTubeChannelPtr &tube, uint id, const QString &error, const QString &message) { qDebug() << "conn" << id << "closed on tube" << tube->objectPath(); qDebug() << "with error" << error << ':' << message; // We don't use a shared factory here so the proxies will be different, but the object path // should be the same if (acc->objectPath() != mAcc->objectPath()) { qWarning() << "account" << acc->objectPath() << "is not the expected" << mAcc->objectPath(); mLoop->exit(1); return; } mClosedClientConnectionTube = tube; mClosedClientConnectionId = id; mClientConnectionCloseError = error; mClientConnectionCloseMessage = message; mLoop->exit(0); } void TestStreamTubeHandlers::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("stream-tube-handlers"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mAM = AccountManager::create(); QVERIFY(connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAM->isReady(), true); QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); PendingAccount *pacc = mAM->createAccount(QLatin1String("foo"), QLatin1String("bar"), QLatin1String("foobar"), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pacc->account()); mAcc= pacc->account(); mConn = new TestConnHelper(this, TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); } void TestStreamTubeHandlers::init() { initImpl(); } void TestStreamTubeHandlers::testRegistration() { StreamTubeServerPtr httpServer = StreamTubeServer::create(QStringList() << QLatin1String("http"), QStringList()); StreamTubeServerPtr whiteboardServer = StreamTubeServer::create(QStringList() << QLatin1String("sketch"), QStringList() << QLatin1String("sketch"), QString(), true); StreamTubeServerPtr activatedServer = StreamTubeServer::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("vsftpd")); StreamTubeServerPtr preferredHandlerServer = StreamTubeServer::create(QStringList()); StreamTubeClientPtr browser = StreamTubeClient::create(QStringList() << QLatin1String("http"), QStringList(), QLatin1String("Debian.Iceweasel")); StreamTubeClientPtr collaborationTool = StreamTubeClient::create(QStringList() << QLatin1String("sketch") << QLatin1String("ftp"), QStringList() << QLatin1String("sketch"), QString(), false, true); StreamTubeClientPtr invalidBecauseNoServicesClient = StreamTubeClient::create(QStringList()); QVERIFY(!httpServer.isNull()); QVERIFY(!whiteboardServer.isNull()); QVERIFY(!activatedServer.isNull()); QVERIFY(!preferredHandlerServer.isNull()); QVERIFY(!browser.isNull()); QVERIFY(!collaborationTool.isNull()); QVERIFY(invalidBecauseNoServicesClient.isNull()); QCOMPARE(activatedServer->clientName(), QLatin1String("vsftpd")); QCOMPARE(browser->clientName(), QLatin1String("Debian.Iceweasel")); class CookieGenerator : public StreamTubeServer::ParametersGenerator { public: CookieGenerator() : serial(0) {} QVariantMap nextParameters(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &tube, const ChannelRequestHints &hints) { QVariantMap params; params.insert(QLatin1String("cookie-y"), QString(QLatin1String("e982mrh2mr2h+%1")).arg(serial++)); return params; } private: uint serial; } httpGenerator; QVariantMap whiteboardParams; whiteboardParams.insert(QLatin1String("password"), QString::fromLatin1("s3kr1t")); QTcpServer server; server.listen(); httpServer->exportTcpSocket(QHostAddress::LocalHost, 80, &httpGenerator); whiteboardServer->exportTcpSocket(QHostAddress::LocalHost, 31552, whiteboardParams); activatedServer->exportTcpSocket(&server); QCOMPARE(activatedServer->exportedParameters(), QVariantMap()); preferredHandlerServer->exportTcpSocket(QHostAddress::LocalHost, 6681); browser->setToAcceptAsTcp(); collaborationTool->setToAcceptAsUnix(true); QVERIFY(httpServer->isRegistered()); QVERIFY(whiteboardServer->isRegistered()); QVERIFY(activatedServer->isRegistered()); QVERIFY(preferredHandlerServer->isRegistered()); QVERIFY(browser->isRegistered()); QVERIFY(collaborationTool->isRegistered()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); QVERIFY(handlers.contains(httpServer->clientName())); QVERIFY(handlers.contains(whiteboardServer->clientName())); QVERIFY(handlers.contains(QLatin1String("vsftpd"))); QVERIFY(handlers.contains(preferredHandlerServer->clientName())); QVERIFY(handlers.contains(QLatin1String("Debian.Iceweasel"))); QVERIFY(handlers.contains(collaborationTool->clientName())); QCOMPARE(handlers.size(), 6); // The only-to-be-used-through-preferredHandler server should have an empty filter, but still be // registered and introspectable ChannelClassList filter; QVERIFY(waitForProperty(handlers.value(preferredHandlerServer->clientName())-> requestPropertyHandlerChannelFilter(), &filter)); QVERIFY(filter.isEmpty()); // We didn't specify bypassApproval = true, so it should be false. for all we know we could be // sent some fairly NSFW stuff on a HTTP tube :> bool bypass; QVERIFY(waitForProperty(handlers.value(browser->clientName())->requestPropertyBypassApproval(), &bypass)); QVERIFY(!bypass); // here we did, though, because we want our coworkers to be able to save our ass by launching a // brainstorming UI on top of our again rather NSFW browsing habits while we're having a cup QVERIFY(waitForProperty(handlers.value(collaborationTool->clientName())-> requestPropertyBypassApproval(), &bypass)); QVERIFY(bypass); } void TestStreamTubeHandlers::testBasicTcpExport() { StreamTubeServerPtr server = StreamTubeServer::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("vsftpd")); QVariantMap params; params.insert(QLatin1String("username"), QString::fromLatin1("user")); params.insert(QLatin1String("password"), QString::fromLatin1("pass")); server->exportTcpSocket(QHostAddress::LocalHost, 22, params); QVERIFY(server->isRegistered()); QCOMPARE(server->exportedTcpSocketAddress(), qMakePair(QHostAddress(QHostAddress::LocalHost), quint16(22))); QCOMPARE(server->exportedParameters(), params); QVERIFY(!server->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(server->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::outgoingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(true, HandleTypeContact, false); QVERIFY(connect(server.data(), SIGNAL(tubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)), SLOT(onTubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)))); QDateTime userActionTime = QDateTime::currentDateTime().addDays(-1); userActionTime = userActionTime.addMSecs(-userActionTime.time().msec()); QVariantMap hints; hints.insert(QLatin1String("tp-qt-test-request-hint-herring-color-rgba"), uint(0xff000000)); QObject *request = new QObject(this); QString requestPath = QLatin1String("/org/freedesktop/Telepathy/ChannelRequest/RequestForSimpleTcpExport"); QDBusConnection bus = server->registrar()->dbusConnection(); new ChannelRequestAdaptor(QDBusObjectPath(mAcc->objectPath()), userActionTime.toTime_t(), QString(), QualifiedPropertyValueMapList(), QStringList(), false, false, hints, request); QVERIFY(bus.registerService(TP_QT_CHANNEL_DISPATCHER_BUS_NAME)); QVERIFY(bus.registerObject(requestPath, request)); // Invoke the handler, verifying that we're notified when that happens with the correct tube // details ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList() << QDBusObjectPath(requestPath), userActionTime.toTime_t(), QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mRequestedTube.isNull()); QCOMPARE(mRequestedTube->objectPath(), chan.first); QCOMPARE(mRequestTime, userActionTime); QCOMPARE(mRequestHints.allHints(), hints); // Verify that the state recovery accessors return sensible values at this point QList serverTubes = server->tubes(); QCOMPARE(serverTubes.size(), 1); QCOMPARE(serverTubes.first().account()->objectPath(), mAcc->objectPath()); QCOMPARE(serverTubes.first().channel(), mRequestedTube); QVERIFY(server->tcpConnections().isEmpty()); // Let's run until the tube has been offered while (mRequestedTube->isValid() && mRequestedTube->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } QVERIFY(mRequestedTube->isValid()); // Simulate a peer connecting (makes the tube Open up) GValue *connParam = tp_g_value_slice_new_static_string("ignored"); tp_tests_stream_tube_channel_peer_connected_no_stream(mChanServices.back(), connParam, tp_base_channel_get_target_handle(TP_BASE_CHANNEL(mChanServices.back()))); tp_g_value_slice_free(connParam); // The params are set once the tube is open (we've picked up the first peer connection) while (mRequestedTube->isValid() && mRequestedTube->state() != TubeChannelStateOpen) { mLoop->processEvents(); } // Verify the params QVERIFY(mRequestedTube->isValid()); QCOMPARE(mRequestedTube->parameters(), params); // Now, close the tube and verify we're signaled about that QVERIFY(connect(server.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QString,QString)), SLOT(onServerTubeClosed(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QString,QString)))); mRequestedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mServerClosedTube, mRequestedTube); QCOMPARE(mServerCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::testFailedExport() { StreamTubeServerPtr server = StreamTubeServer::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("vsftpd")); server->exportTcpSocket(QHostAddress::LocalHost, 22); QVERIFY(server->isRegistered()); QVERIFY(connect(server.data(), SIGNAL(tubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)), SLOT(onTubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)))); QVERIFY(connect(server.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QString,QString)), SLOT(onServerTubeClosed(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QString,QString)))); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(server->clientName()); QVERIFY(handler != 0); // To trigger the Offer error codepath, give it a channel which only supports Unix sockets // although we're exporting a TCP one - which is always supported in real CMs QPair chan = createTubeChannel(true, HandleTypeContact, false, true); ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; // We should initially get tubeRequested just fine handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mRequestedTube.isNull()); QCOMPARE(mRequestedTube->objectPath(), chan.first); // THEN we should get a tube close because the offer fails QCOMPARE(mLoop->exec(), 0); QCOMPARE(mServerClosedTube, mRequestedTube); QCOMPARE(mServerCloseError, QString(TP_QT_ERROR_NOT_IMPLEMENTED)); // == AF unsupported by "CM" } void TestStreamTubeHandlers::testServerConnMonitoring() { StreamTubeServerPtr server = StreamTubeServer::create(QStringList(), QStringList() << QLatin1String("multiftp"), QLatin1String("warezd"), true); server->exportTcpSocket(QHostAddress::LocalHost, 22); QVERIFY(server->isRegistered()); QVERIFY(server->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(server->clientName()); QVERIFY(handler != 0); QPair chan = createTubeChannel(true, HandleTypeRoom, true); QVERIFY(connect(server.data(), SIGNAL(tubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)), SLOT(onTubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)))); QVERIFY(connect(server.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QString,QString)), SLOT(onServerTubeClosed(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QString,QString)))); ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mRequestedTube.isNull()); QCOMPARE(mRequestedTube->objectPath(), chan.first); // There are no connections at this point QVERIFY(server->tcpConnections().isEmpty()); // Let's run until the tube has been offered while (mRequestedTube->isValid() && mRequestedTube->state() != TubeChannelStateRemotePending) { mLoop->processEvents(); } QVERIFY(mRequestedTube->isValid()); // Still no connections QVERIFY(server->tcpConnections().isEmpty()); // Now, some connections actually start popping up QVERIFY(connect(server.data(), SIGNAL(newTcpConnection(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,Tp::OutgoingStreamTubeChannelPtr)), SLOT(onNewServerConnection(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,Tp::OutgoingStreamTubeChannelPtr)))); QVERIFY(connect(server.data(), SIGNAL(tcpConnectionClosed(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,QString,QString,Tp::OutgoingStreamTubeChannelPtr)), SLOT(onServerConnectionClosed(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,QString,QString,Tp::OutgoingStreamTubeChannelPtr)))); // Simulate the first peer connecting (makes the tube Open up) GValue *connParam = tp_g_value_slice_new_take_boxed( TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4, dbus_g_type_specialized_construct(TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)); QHostAddress expectedAddress = QHostAddress::LocalHost; quint16 expectedPort = 1; dbus_g_type_struct_set(connParam, 0, expectedAddress.toString().toLatin1().constData(), 1, expectedPort, G_MAXUINT); TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle handle = tp_handle_ensure(contactRepo, "first", NULL, NULL); tp_tests_stream_tube_channel_peer_connected_no_stream(mChanServices.back(), connParam, handle); // We should get a newTcpConnection signal now and tcpConnections() should include this new conn QCOMPARE(mLoop->exec(), 0); QCOMPARE(mNewServerConnectionAddress, expectedAddress); QCOMPARE(mNewServerConnectionPort, expectedPort); QCOMPARE(mNewServerConnectionContact->handle()[0], handle); QCOMPARE(mNewServerConnectionContact->id(), QLatin1String("first")); QCOMPARE(mNewServerConnectionTube, mRequestedTube); QHash, StreamTubeServer::RemoteContact > conns = server->tcpConnections(); QCOMPARE(conns.size(), 1); QVERIFY(conns.contains(qMakePair(expectedAddress, expectedPort))); QCOMPARE(conns.value(qMakePair(expectedAddress, expectedPort)).account()->objectPath(), mAcc->objectPath()); QCOMPARE(conns.value(qMakePair(expectedAddress, expectedPort)).contact(), mNewServerConnectionContact); // Now, close the first connection tp_tests_stream_tube_channel_last_connection_disconnected(mChanServices.back(), TP_ERROR_STR_DISCONNECTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClosedServerConnectionAddress, expectedAddress); QCOMPARE(mClosedServerConnectionPort, expectedPort); QCOMPARE(mClosedServerConnectionContact, mNewServerConnectionContact); QCOMPARE(mServerConnectionCloseError, QString(TP_QT_ERROR_DISCONNECTED)); QVERIFY(server->tcpConnections().isEmpty()); // Fire up two new connections handle = tp_handle_ensure(contactRepo, "second", NULL, NULL); expectedPort = 2; dbus_g_type_struct_set(connParam, 1, expectedPort, G_MAXUINT); tp_tests_stream_tube_channel_peer_connected_no_stream(mChanServices.back(), connParam, handle); handle = tp_handle_ensure(contactRepo, "third", NULL, NULL); expectedPort = 3; dbus_g_type_struct_set(connParam, 1, expectedPort, G_MAXUINT); tp_tests_stream_tube_channel_peer_connected_no_stream(mChanServices.back(), connParam, handle); // We should get two newTcpConnection signals now and tcpConnections() should include these // connections QCOMPARE(mLoop->exec(), 0); QCOMPARE(mNewServerConnectionAddress, expectedAddress); QCOMPARE(mNewServerConnectionPort, quint16(2)); QCOMPARE(mNewServerConnectionContact->id(), QLatin1String("second")); QCOMPARE(mNewServerConnectionTube, mRequestedTube); QCOMPARE(server->tcpConnections().size(), 1); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mNewServerConnectionAddress, expectedAddress); QCOMPARE(mNewServerConnectionPort, quint16(3)); QCOMPARE(mNewServerConnectionContact->id(), QLatin1String("third")); QCOMPARE(mNewServerConnectionTube, mRequestedTube); QCOMPARE(server->tcpConnections().size(), 2); // Close one of them, and check that we receive the signal for it tp_tests_stream_tube_channel_last_connection_disconnected(mChanServices.back(), TP_ERROR_STR_DISCONNECTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClosedServerConnectionAddress, expectedAddress); QCOMPARE(mClosedServerConnectionPort, quint16(3)); QCOMPARE(mClosedServerConnectionContact, mNewServerConnectionContact); QCOMPARE(mServerConnectionCloseError, QString(TP_QT_ERROR_DISCONNECTED)); QCOMPARE(server->tcpConnections().size(), 1); // Now, close the tube and verify we're signaled about that QVERIFY(mServerClosedTube.isNull()); QCOMPARE(server->tubes().size(), 1); mClosedServerConnectionContact.reset(); mRequestedTube->requestClose(); while (mClosedServerConnectionContact.isNull() || mServerClosedTube.isNull()) { QVERIFY(mServerClosedTube.isNull()); // we should get the conn close first, only then tube close QCOMPARE(mLoop->exec(), 0); } QVERIFY(server->tubes().isEmpty()); QVERIFY(server->tcpConnections().isEmpty()); QCOMPARE(mClosedServerConnectionAddress, expectedAddress); QCOMPARE(mClosedServerConnectionPort, quint16(2)); QCOMPARE(mClosedServerConnectionContact->id(), QLatin1String("second")); QCOMPARE(mServerConnectionCloseError, TP_QT_ERROR_ORPHANED); // parent tube died QCOMPARE(mServerClosedTube, mRequestedTube); QCOMPARE(mServerCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::testSSTHErrorPaths() { // Create and look up a handler with an incorrectly set up channel factory ChannelFactoryPtr chanFactory = ChannelFactory::create(QDBusConnection::sessionBus()); chanFactory->setSubclassForIncomingStreamTubes(); StreamTubeServerPtr server = StreamTubeServer::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("vsftpd"), false, AccountFactory::create(QDBusConnection::sessionBus()), ConnectionFactory::create(QDBusConnection::sessionBus()), chanFactory); server->exportTcpSocket(QHostAddress::LocalHost, 22); QVERIFY(server->isRegistered()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(server->clientName()); QVERIFY(handler != 0); // Pass it a text channel, and with no satisfied requests QString textChanPath = mConn->objectPath() + QLatin1String("/TextChannel"); QByteArray chanPath(textChanPath.toLatin1()); ExampleEchoChannel *textChanService = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", TpHandle(1), NULL)); ChannelDetails details = { QDBusObjectPath(textChanPath), ChannelClassSpec::textChat().allProperties() }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); processDBusQueue(mConn->client().data()); // Now pass it an incoming stream tube chan, which will trigger the error paths for constructing // wrong subclasses for tubes QPair tubeChan = createTubeChannel(false, HandleTypeContact, false); details.channel = QDBusObjectPath(tubeChan.first); details.properties = tubeChan.second; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); processDBusQueue(mConn->client().data()); // Now pass it an outgoing stream tube chan (which we didn't set an incorrect subclass for), but // which doesn't actually exist so introspection fails details.channel = QDBusObjectPath(QString::fromLatin1("/does/not/exist")); details.properties = ChannelClassSpec::outgoingStreamTube(QLatin1String("ftp")).allProperties(); handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); processDBusQueue(mConn->client().data()); // Now pass an actual outgoing tube chan and verify it's still signaled correctly after all // these incorrect invocations of the handler QVERIFY(connect(server.data(), SIGNAL(tubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)), SLOT(onTubeRequested(Tp::AccountPtr,Tp::OutgoingStreamTubeChannelPtr,QDateTime,Tp::ChannelRequestHints)))); tubeChan = createTubeChannel(true, HandleTypeContact, false); details.channel = QDBusObjectPath(tubeChan.first); details.properties = tubeChan.second; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); processDBusQueue(mConn->client().data()); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mRequestedTube->objectPath(), tubeChan.first); // TODO: if/when the QDBus bug about not being able to wait for local loop replies even with a // main loop is fixed, wait for the HandleChannels invocations to return properly. For now just // run 100 pings to the service, during which the codepaths get run almost certainly. for (int i = 0; i < 100; i++) { processDBusQueue(mConn->client().data()); } g_object_unref(textChanService); } void TestStreamTubeHandlers::testClientBasicTcp() { StreamTubeClientPtr client = StreamTubeClient::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("ncftp")); class FakeGenerator : public StreamTubeClient::TcpSourceAddressGenerator { public: FakeGenerator() : port(0) {} QPair nextSourceAddress(const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube) { return qMakePair(QHostAddress(QHostAddress::LocalHost), ++port); } quint16 port; } gen; client->setToAcceptAsTcp(&gen); QVERIFY(client->isRegistered()); QCOMPARE(client->registrar()->registeredClients().size(), 1); QVERIFY(client->acceptsAsTcp()); QVERIFY(!client->acceptsAsUnix()); QCOMPARE(client->tcpGenerator(), static_cast(&gen)); QVERIFY(!client->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(client->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::incomingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(false, HandleTypeContact, true); QVERIFY(connect(client.data(), SIGNAL(tubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); QVERIFY(connect(client.data(), SIGNAL(tubeAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onClientAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); // Invoke the handler, verifying that we're notified when that happens with the correct tube // details ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), 0, // not an user action QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mOfferedTube.isNull()); QCOMPARE(mOfferedTube->objectPath(), chan.first); // Verify that the state recovery accessors return sensible values at this point QList clientTubes = client->tubes(); QCOMPARE(clientTubes.size(), 1); QCOMPARE(clientTubes.first().account()->objectPath(), mAcc->objectPath()); QCOMPARE(clientTubes.first().channel(), mOfferedTube); QVERIFY(client->connections().isEmpty()); // Let's run until we've accepted the tube QCOMPARE(mLoop->exec(), 0); QVERIFY(mOfferedTube->isValid()); QCOMPARE(mClientTcpAcceptAddr, QHostAddress(QHostAddress::LocalHost)); QVERIFY(mClientTcpAcceptPort != 0); QCOMPARE(mClientTcpAcceptSrcAddr, QHostAddress(QHostAddress::LocalHost)); QCOMPARE(mClientTcpAcceptSrcPort, gen.port); QCOMPARE(mClientTcpAcceptTube, mOfferedTube); // Now, close the tube and verify we're signaled about that QVERIFY(connect(client.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)), SLOT(onClientTubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)))); mOfferedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientClosedTube, mOfferedTube); QCOMPARE(mClientCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::testClientTcpGeneratorIgnore() { StreamTubeClientPtr client = StreamTubeClient::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("ncftp")); class FakeGenerator : public StreamTubeClient::TcpSourceAddressGenerator { public: QPair nextSourceAddress(const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube) { return qMakePair(QHostAddress(QHostAddress::LocalHost), quint16(1111)); } } gen; client->setToAcceptAsTcp(&gen); QVERIFY(client->isRegistered()); QVERIFY(client->acceptsAsTcp()); QVERIFY(!client->acceptsAsUnix()); QCOMPARE(client->tcpGenerator(), static_cast(&gen)); QVERIFY(!client->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(client->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::incomingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(false, HandleTypeContact, false); QVERIFY(connect(client.data(), SIGNAL(tubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); QVERIFY(connect(client.data(), SIGNAL(tubeAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onClientAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); // Invoke the handler, verifying that we're notified when that happens with the correct tube // details ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), 0, // not an user action QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mOfferedTube.isNull()); QCOMPARE(mOfferedTube->objectPath(), chan.first); // Verify that the state recovery accessors return sensible values at this point QList clientTubes = client->tubes(); QCOMPARE(clientTubes.size(), 1); QCOMPARE(clientTubes.first().account()->objectPath(), mAcc->objectPath()); QCOMPARE(clientTubes.first().channel(), mOfferedTube); QVERIFY(client->connections().isEmpty()); // Let's run until we've accepted the tube QCOMPARE(mLoop->exec(), 0); QVERIFY(mOfferedTube->isValid()); QCOMPARE(mClientTcpAcceptAddr, QHostAddress(QHostAddress::LocalHost)); QVERIFY(mClientTcpAcceptPort != 0); QCOMPARE(mClientTcpAcceptSrcAddr, QHostAddress(QHostAddress::Any)); QCOMPARE(mClientTcpAcceptSrcPort, quint16(0)); QCOMPARE(mClientTcpAcceptTube, mOfferedTube); // Now, close the tube and verify we're signaled about that QVERIFY(connect(client.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)), SLOT(onClientTubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)))); mOfferedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientClosedTube, mOfferedTube); QCOMPARE(mClientCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::testClientTcpUnsupported() { StreamTubeClientPtr client = StreamTubeClient::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("ncftp")); client->setToAcceptAsTcp(); QVERIFY(client->isRegistered()); QVERIFY(client->acceptsAsTcp()); QVERIFY(!client->acceptsAsUnix()); QVERIFY(!client->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(client->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::incomingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(false, HandleTypeContact, false, true); QVERIFY(connect(client.data(), SIGNAL(tubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); QVERIFY(connect(client.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)), SLOT(onClientTubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)))); // Invoke the handler, verifying that we're notified when that happens with the correct tube // details ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), 0, // not an user action QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mOfferedTube.isNull()); QCOMPARE(mOfferedTube->objectPath(), chan.first); // Now, run until Accept fails (because TCP is not supported by the fake service here) and // consequently the tube is closed QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientClosedTube, mOfferedTube); QCOMPARE(mClientCloseError, QString(TP_QT_ERROR_NOT_IMPLEMENTED)); // == AF unsupported } void TestStreamTubeHandlers::testClientBasicUnix() { StreamTubeClientPtr client = StreamTubeClient::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("ncftp")); client->setToAcceptAsUnix(true); QVERIFY(client->isRegistered()); QCOMPARE(client->registrar()->registeredClients().size(), 1); QVERIFY(!client->acceptsAsTcp()); QVERIFY(client->acceptsAsUnix()); QCOMPARE(client->tcpGenerator(), static_cast(0)); QVERIFY(!client->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(client->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::incomingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(false, HandleTypeContact, true); QVERIFY(connect(client.data(), SIGNAL(tubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); QVERIFY(connect(client.data(), SIGNAL(tubeAcceptedAsUnix(QString,bool,uchar, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onClientAcceptedAsUnix(QString,bool,uchar, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); // Invoke the handler, verifying that we're notified when that happens with the correct tube // details ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), 0, // not an user action QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mOfferedTube.isNull()); QCOMPARE(mOfferedTube->objectPath(), chan.first); // Verify that the state recovery accessors return sensible values at this point QList clientTubes = client->tubes(); QCOMPARE(clientTubes.size(), 1); QCOMPARE(clientTubes.first().account()->objectPath(), mAcc->objectPath()); QCOMPARE(clientTubes.first().channel(), mOfferedTube); QVERIFY(client->connections().isEmpty()); // Let's run until we've accepted the tube QCOMPARE(mLoop->exec(), 0); QVERIFY(mOfferedTube->isValid()); QVERIFY(!mClientUnixAcceptAddr.isNull()); QVERIFY(mClientUnixReqsCreds); QCOMPARE(mClientUnixAcceptTube, mOfferedTube); QCOMPARE(mOfferedTube->addressType(), SocketAddressTypeUnix); // Now, close the tube and verify we're signaled about that QVERIFY(connect(client.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)), SLOT(onClientTubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)))); mOfferedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientClosedTube, mOfferedTube); QCOMPARE(mClientCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::testClientUnixCredsIgnore() { StreamTubeClientPtr client = StreamTubeClient::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("ncftp")); client->setToAcceptAsUnix(true); QVERIFY(client->isRegistered()); QVERIFY(!client->acceptsAsTcp()); QVERIFY(client->acceptsAsUnix()); QCOMPARE(client->tcpGenerator(), static_cast(0)); QVERIFY(!client->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(client->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::incomingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(false, HandleTypeContact, false); QVERIFY(connect(client.data(), SIGNAL(tubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); QVERIFY(connect(client.data(), SIGNAL(tubeAcceptedAsUnix(QString,bool,uchar, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onClientAcceptedAsUnix(QString,bool,uchar, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); // Invoke the handler, verifying that we're notified when that happens with the correct tube // details ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), 0, // not an user action QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mOfferedTube.isNull()); QCOMPARE(mOfferedTube->objectPath(), chan.first); // Verify that the state recovery accessors return sensible values at this point QList clientTubes = client->tubes(); QCOMPARE(clientTubes.size(), 1); QCOMPARE(clientTubes.first().account()->objectPath(), mAcc->objectPath()); QCOMPARE(clientTubes.first().channel(), mOfferedTube); QVERIFY(client->connections().isEmpty()); // Let's run until we've accepted the tube QCOMPARE(mLoop->exec(), 0); QVERIFY(mOfferedTube->isValid()); QVERIFY(!mClientUnixAcceptAddr.isNull()); QVERIFY(!mClientUnixReqsCreds); QCOMPARE(mClientUnixAcceptTube, mOfferedTube); QCOMPARE(mOfferedTube->addressType(), SocketAddressTypeUnix); // Now, close the tube and verify we're signaled about that QVERIFY(connect(client.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)), SLOT(onClientTubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)))); mOfferedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClientClosedTube, mOfferedTube); QCOMPARE(mClientCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::testClientConnMonitoring() { StreamTubeClientPtr client = StreamTubeClient::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("ncftp"), true); client->setToAcceptAsTcp(); QVERIFY(client->isRegistered()); QVERIFY(client->acceptsAsTcp()); QVERIFY(client->monitorsConnections()); QMap handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); ClientHandlerInterface *handler = handlers.value(client->clientName()); QVERIFY(handler != 0); ChannelClassList filter; QVERIFY(waitForProperty(handler->requestPropertyHandlerChannelFilter(), &filter)); QCOMPARE(filter.size(), 1); QVERIFY(ChannelClassSpec(filter.first()) == ChannelClassSpec::incomingStreamTube(QLatin1String("ftp"))); QPair chan = createTubeChannel(false, HandleTypeContact, true); QVERIFY(connect(client.data(), SIGNAL(tubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeOffered(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); QVERIFY(connect(client.data(), SIGNAL(tubeAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onClientAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16, Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)))); ChannelDetails details = { QDBusObjectPath(chan.first), chan.second }; handler->HandleChannels( QDBusObjectPath(mAcc->objectPath()), QDBusObjectPath(mConn->objectPath()), ChannelDetailsList() << details, ObjectPathList(), QDateTime::currentDateTime().toTime_t(), QVariantMap()); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mOfferedTube.isNull()); QCOMPARE(mOfferedTube->objectPath(), chan.first); // There are no connections at this point QVERIFY(client->connections().isEmpty()); // Let's run until we've accepted the tube QCOMPARE(mLoop->exec(), 0); QVERIFY(mOfferedTube->isValid()); QCOMPARE(mClientTcpAcceptAddr, QHostAddress(QHostAddress::LocalHost)); QVERIFY(mClientTcpAcceptPort != 0); QCOMPARE(mClientTcpAcceptSrcAddr, QHostAddress(QHostAddress::Any)); QCOMPARE(mClientTcpAcceptSrcPort, quint16(0)); QCOMPARE(mClientTcpAcceptTube, mOfferedTube); // Still no connections QVERIFY(client->connections().isEmpty()); // Now, some connections actually start popping up QVERIFY(connect(client.data(), SIGNAL(newConnection(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,uint)), SLOT(onNewClientConnection(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,uint)))); QVERIFY(connect(client.data(), SIGNAL(connectionClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,uint,QString,QString)), SLOT(onClientConnectionClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,uint,QString,QString)))); QTcpSocket first; first.connectToHost(mClientTcpAcceptAddr, mClientTcpAcceptPort); first.waitForConnected(); QVERIFY(first.isValid()); QCOMPARE(first.state(), QAbstractSocket::ConnectedState); // We should get a newConnection signal now and connections() should include this new conn QCOMPARE(mLoop->exec(), 0); QCOMPARE(mNewClientConnectionTube, mOfferedTube); QHash > conns = client->connections(); QCOMPARE(conns.size(), 1); QCOMPARE(conns.values().first().size(), 1); QVERIFY(conns.values().first().contains(mNewClientConnectionId)); uint firstId = mNewClientConnectionId; // Now, close the first connection tp_tests_stream_tube_channel_last_connection_disconnected(mChanServices.back(), TP_ERROR_STR_DISCONNECTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClosedClientConnectionId, firstId); QCOMPARE(mClientConnectionCloseError, QString(TP_QT_ERROR_DISCONNECTED)); QVERIFY(client->connections().isEmpty()); // Fire up two new connections QTcpSocket second; second.connectToHost(mClientTcpAcceptAddr, mClientTcpAcceptPort); second.waitForConnected(); QVERIFY(second.isValid()); QCOMPARE(second.state(), QAbstractSocket::ConnectedState); QTcpSocket third; third.connectToHost(mClientTcpAcceptAddr, mClientTcpAcceptPort); third.waitForConnected(); QVERIFY(third.isValid()); QCOMPARE(third.state(), QAbstractSocket::ConnectedState); // We should get two newConnection signals now and connections() should include these // connections QCOMPARE(mLoop->exec(), 0); QCOMPARE(mNewClientConnectionTube, mOfferedTube); QCOMPARE(client->connections().size(), 1); uint secondId = mNewClientConnectionId; QCOMPARE(mLoop->exec(), 0); QCOMPARE(mNewClientConnectionTube, mOfferedTube); QCOMPARE(client->connections().size(), 1); uint thirdId = mNewClientConnectionId; conns = client->connections(); QCOMPARE(conns.size(), 1); QCOMPARE(conns.values().first().size(), 2); QVERIFY(conns.values().first().contains(secondId)); QVERIFY(conns.values().first().contains(thirdId)); // Close one of them, and check that we receive the signal for it tp_tests_stream_tube_channel_last_connection_disconnected(mChanServices.back(), TP_ERROR_STR_DISCONNECTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mClosedClientConnectionId, thirdId); QCOMPARE(mClientConnectionCloseError, QString(TP_QT_ERROR_DISCONNECTED)); QCOMPARE(mClosedServerConnectionContact, mNewServerConnectionContact); conns = client->connections(); QCOMPARE(conns.size(), 1); QVERIFY(!conns.values().first().contains(thirdId)); QVERIFY(conns.values().first().contains(secondId)); QCOMPARE(conns.values().first().size(), 1); // Now, close the tube and verify we're signaled about that QVERIFY(connect(client.data(), SIGNAL(tubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)), SLOT(onClientTubeClosed(Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr,QString,QString)))); mClosedClientConnectionId = 0xdeadbeefU; QVERIFY(mClientClosedTube.isNull()); QCOMPARE(client->tubes().size(), 1); mOfferedTube->requestClose(); while (mClosedClientConnectionId == 0xdeadbeefU || mClientClosedTube.isNull()) { QVERIFY(mClientClosedTube.isNull()); // we should get first conn close, then tube close QCOMPARE(mLoop->exec(), 0); } QVERIFY(client->tubes().isEmpty()); QVERIFY(client->connections().isEmpty()); QCOMPARE(mClosedClientConnectionId, secondId); QCOMPARE(mClientConnectionCloseError, TP_QT_ERROR_ORPHANED); // parent tube died QCOMPARE(mClientClosedTube, mOfferedTube); QCOMPARE(mClientCloseError, QString(TP_QT_ERROR_CANCELLED)); // == local close request } void TestStreamTubeHandlers::cleanup() { cleanupImpl(); mRequestHints = ChannelRequestHints(); if (mRequestedTube && mRequestedTube->isValid()) { qDebug() << "waiting for the reqd tube to become invalidated"; QVERIFY(connect(mRequestedTube.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), mLoop, SLOT(quit()))); mRequestedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); } mRequestedTube.reset(); mServerClosedTube.reset(); mNewServerConnectionContact.reset(); mClosedServerConnectionContact.reset(); mNewServerConnectionTube.reset(); mServerConnectionCloseTube.reset(); if (mOfferedTube && mOfferedTube->isValid()) { qDebug() << "waiting for the ofrd tube to become invalidated"; QVERIFY(connect(mOfferedTube.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), mLoop, SLOT(quit()))); mOfferedTube->requestClose(); QCOMPARE(mLoop->exec(), 0); } mOfferedTube.reset(); mClientClosedTube.reset(); mClientTcpAcceptTube.reset(); mClientUnixAcceptTube.reset(); mNewClientConnectionTube.reset(); mClosedClientConnectionTube.reset(); while (!mChanServices.empty()) { g_object_unref(mChanServices.back()); mChanServices.pop_back(); } mLoop->processEvents(); } void TestStreamTubeHandlers::cleanupTestCase() { mAM.reset(); mAcc.reset(); QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestStreamTubeHandlers) #include "_gen/stream-tube-handlers.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/cm-protocol.cpp0000644000175100017520000006044212530423576022771 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; namespace { PresenceSpec getPresenceSpec(const PresenceSpecList &specs, const QString &status) { Q_FOREACH (const PresenceSpec &spec, specs) { if (spec.presence().status() == status) { return spec; } } return PresenceSpec(); } } class ConnectionManagerAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ConnectionManager") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(Tp::ProtocolPropertiesMap Protocols READ Protocols) public: ConnectionManagerAdaptor(ProtocolPropertiesMap &protocols, QObject *parent) : QDBusAbstractAdaptor(parent), mProtocols(protocols) { } virtual ~ConnectionManagerAdaptor() { } public: // Properties inline QStringList Interfaces() const { return QStringList(); } inline ProtocolPropertiesMap Protocols() const { return mProtocols; } private: ProtocolPropertiesMap mProtocols; ParamSpecList mParameters; }; class ProtocolAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(Tp::ParamSpecList Parameters READ Parameters) Q_PROPERTY(QStringList ConnectionInterfaces READ ConnectionInterfaces) Q_PROPERTY(Tp::RequestableChannelClassList RequestableChannelClasses READ RequestableChannelClasses) Q_PROPERTY(QString VCardField READ VCardField) Q_PROPERTY(QString EnglishName READ EnglishName) Q_PROPERTY(QString Icon READ Icon) public: ProtocolAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), introspectionCalled(0) { mInterfaces << TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING << TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS << TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE; mConnInterfaces << TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS; mRCCs.append(RequestableChannelClassSpec::textChatroom().bareClass()); mVCardField = QLatin1String("x-adaptor"); mEnglishName = QLatin1String("Adaptor"); mIcon = QLatin1String("icon-adaptor"); } virtual ~ProtocolAdaptor() { } inline QVariantMap immutableProperties() const { QVariantMap ret; ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".Interfaces"), mInterfaces); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".Parameters"), qVariantFromValue(mParameters)); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".ConnectionInterfaces"), mConnInterfaces); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses"), qVariantFromValue(mRCCs)); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".VCardField"), mVCardField); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".EnglishName"), mEnglishName); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".Icon"), mIcon); return ret; } public: // Properties inline QStringList Interfaces() const { // if we request all properties we are going to get here, so marking as // introspectionCalled; introspectionCalled++; return mInterfaces; } inline Tp::ParamSpecList Parameters() const { return mParameters; } inline QStringList ConnectionInterfaces() const { return mConnInterfaces; } inline Tp::RequestableChannelClassList RequestableChannelClasses() const { return mRCCs; } inline QString VCardField() const { return mVCardField; } inline QString EnglishName() const { return mEnglishName; } inline QString Icon() const { return mIcon; } mutable int introspectionCalled; private: QStringList mInterfaces; ParamSpecList mParameters; QStringList mConnInterfaces; RequestableChannelClassList mRCCs; QString mVCardField; QString mEnglishName; QString mIcon; }; class ProtocolAddressingAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol.Interface.Addressing") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QStringList AddressableVCardFields READ AddressableVCardFields) Q_PROPERTY(QStringList AddressableURISchemes READ AddressableURISchemes) public: ProtocolAddressingAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), introspectionCalled(0) { mVCardFields << QLatin1String("x-adaptor"); mUris << QLatin1String("adaptor"); } virtual ~ProtocolAddressingAdaptor() { } inline QVariantMap immutableProperties() const { QVariantMap ret; ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING + QLatin1String(".AddressableVCardFields"), mVCardFields); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING + QLatin1String(".AddressableURISchemes"), mUris); return ret; } public: // Properties inline QStringList AddressableVCardFields() const { // if we request all properties we are going to get here, so marking as // introspectionCalled; introspectionCalled++; return mVCardFields; } inline QStringList AddressableURISchemes() const { return mUris; } mutable int introspectionCalled; private: QStringList mVCardFields; QStringList mUris; }; class ProtocolAvatarsAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol.Interface.Avatars") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QStringList SupportedAvatarMIMETypes READ SupportedAvatarMIMETypes) Q_PROPERTY(uint MinimumAvatarHeight READ MinimumAvatarHeight) Q_PROPERTY(uint MinimumAvatarWidth READ MinimumAvatarWidth) Q_PROPERTY(uint RecommendedAvatarHeight READ RecommendedAvatarHeight) Q_PROPERTY(uint RecommendedAvatarWidth READ RecommendedAvatarWidth) Q_PROPERTY(uint MaximumAvatarHeight READ MaximumAvatarHeight) Q_PROPERTY(uint MaximumAvatarWidth READ MaximumAvatarWidth) Q_PROPERTY(uint MaximumAvatarBytes READ MaximumAvatarBytes) public: ProtocolAvatarsAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), introspectionCalled(0) { mMimeTypes << QLatin1String("image/png"); mMinimumAvatarHeight = 16; mMinimumAvatarWidth = 16; mRecommendedAvatarHeight = 32; mRecommendedAvatarWidth = 32; mMaximumAvatarHeight = 64; mMaximumAvatarWidth = 64; mMaximumAvatarBytes = 4096; } virtual ~ProtocolAvatarsAdaptor() { } inline QVariantMap immutableProperties() const { QVariantMap ret; ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".SupportedAvatarMIMETypes"), mMimeTypes); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight"), mMinimumAvatarHeight); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarWidth"), mMinimumAvatarWidth); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarHeight"), mMaximumAvatarHeight); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarWidth"), mMaximumAvatarWidth); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarHeight"), mRecommendedAvatarHeight); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarWidth"), mRecommendedAvatarWidth); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarBytes"), mMaximumAvatarBytes); return ret; } public: // Properties inline QStringList SupportedAvatarMIMETypes() const { // if we request all properties we are going to get here, so marking as // introspectionCalled; introspectionCalled++; return mMimeTypes; } inline uint MinimumAvatarHeight() const { return mMinimumAvatarHeight; } inline uint MinimumAvatarWidth() const { return mMinimumAvatarWidth; } inline uint RecommendedAvatarHeight() const { return mRecommendedAvatarHeight; } inline uint RecommendedAvatarWidth() const { return mRecommendedAvatarWidth; } inline uint MaximumAvatarHeight() const { return mMaximumAvatarHeight; } inline uint MaximumAvatarWidth() const { return mMaximumAvatarWidth; } inline uint MaximumAvatarBytes() const { return mMaximumAvatarBytes; } mutable int introspectionCalled; private: QStringList mMimeTypes; uint mMinimumAvatarHeight; uint mMinimumAvatarWidth; uint mRecommendedAvatarHeight; uint mRecommendedAvatarWidth; uint mMaximumAvatarHeight; uint mMaximumAvatarWidth; uint mMaximumAvatarBytes; }; class ProtocolPresenceAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Protocol.Interface.Presence") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(Tp::SimpleStatusSpecMap Statuses READ Statuses) public: ProtocolPresenceAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent), introspectionCalled(0) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeAvailable; spec.maySetOnSelf = true; spec.canHaveMessage = false; mStatuses.insert(QLatin1String("available"), spec); } virtual ~ProtocolPresenceAdaptor() { } inline QVariantMap immutableProperties() const { QVariantMap ret; ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE + QLatin1String(".Statuses"), qVariantFromValue(mStatuses)); return ret; } public: // Properties inline SimpleStatusSpecMap Statuses() const { // if we request all properties we are going to get here, so marking as // introspectionCalled; introspectionCalled++; return mStatuses; } mutable int introspectionCalled; private: SimpleStatusSpecMap mStatuses; }; struct CMHelper { CMHelper(const QString &cmName, bool withProtocolProps = false, bool withProtocolAddressingProps = false, bool withProtocolAvatarsProps = false, bool withProtocolPresenceProps = false) { QDBusConnection bus = QDBusConnection::sessionBus(); QString cmBusNameBase = TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE; QString cmPathBase = TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE; protocolObject = new QObject(); protocolAdaptor = new ProtocolAdaptor(protocolObject); protocolAddressingAdaptor = new ProtocolAddressingAdaptor(protocolObject); protocolAvatarsAdaptor = new ProtocolAvatarsAdaptor(protocolObject); protocolPresenceAdaptor = new ProtocolPresenceAdaptor(protocolObject); QVERIFY(bus.registerService(cmBusNameBase + cmName)); QVERIFY(bus.registerObject(cmPathBase + cmName + QLatin1String("/") + cmName, protocolObject)); ProtocolPropertiesMap protocols; QVariantMap immutableProperties; if (withProtocolProps) { immutableProperties.unite(protocolAdaptor->immutableProperties()); } if (withProtocolAddressingProps) { immutableProperties.unite(protocolAddressingAdaptor->immutableProperties()); } if (withProtocolAvatarsProps) { immutableProperties.unite(protocolAvatarsAdaptor->immutableProperties()); } if (withProtocolPresenceProps) { immutableProperties.unite(protocolPresenceAdaptor->immutableProperties()); } protocols.insert(cmName, immutableProperties); cmObject = new QObject(); cmAdaptor = new ConnectionManagerAdaptor(protocols, cmObject); QVERIFY(bus.registerService(cmBusNameBase + cmName)); QVERIFY(bus.registerObject(cmPathBase + cmName, cmObject)); cm = ConnectionManager::create(bus, cmName); } ~CMHelper() { delete cmObject; delete protocolObject; } ConnectionManagerPtr cm; QObject *cmObject; QObject *protocolObject; ConnectionManagerAdaptor *cmAdaptor; ProtocolAdaptor *protocolAdaptor; ProtocolAddressingAdaptor *protocolAddressingAdaptor; ProtocolAvatarsAdaptor *protocolAvatarsAdaptor; ProtocolPresenceAdaptor *protocolPresenceAdaptor; }; class TestCmProtocol : public Test { Q_OBJECT public: TestCmProtocol(QObject *parent = 0) : Test(parent), mCM(0) { } private Q_SLOTS: void initTestCase(); void init(); void testIntrospection(); void testIntrospectionWithManager(); void testIntrospectionWithProperties(); void testIntrospectionWithSomeProperties(); void cleanup(); void cleanupTestCase(); private: void testIntrospectionWithAdaptorCommon(const ConnectionManagerPtr &cm); CMHelper *mCM; }; void TestCmProtocol::initTestCase() { initTestCaseImpl(); } void TestCmProtocol::init() { initImpl(); } void TestCmProtocol::testIntrospection() { mCM = new CMHelper(QLatin1String("protocolnomanager"), false); ConnectionManagerPtr cm = mCM->cm; QVERIFY(connect(cm->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cm->isReady(), true); testIntrospectionWithAdaptorCommon(cm); QVERIFY(mCM->protocolAdaptor->introspectionCalled > 0); QVERIFY(mCM->protocolAddressingAdaptor->introspectionCalled > 0); QVERIFY(mCM->protocolAvatarsAdaptor->introspectionCalled > 0); QVERIFY(mCM->protocolPresenceAdaptor->introspectionCalled > 0); } void TestCmProtocol::testIntrospectionWithManager() { mCM = new CMHelper(QLatin1String("protocol"), false); ConnectionManagerPtr cm = mCM->cm; QVERIFY(connect(cm->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cm->isReady(), true); QCOMPARE(cm->interfaces(), QStringList()); QCOMPARE(cm->supportedProtocols(), QStringList() << QLatin1String("protocol")); QVERIFY(cm->hasProtocol(QLatin1String("protocol"))); QVERIFY(!cm->hasProtocol(QLatin1String("not-there"))); ProtocolInfo info = cm->protocol(QLatin1String("protocol")); QVERIFY(info.isValid()); QCOMPARE(info.cmName(), QLatin1String("protocol")); QCOMPARE(info.name(), QLatin1String("protocol")); QCOMPARE(info.parameters().size(), 1); ProtocolParameter param = info.parameters().at(0); QCOMPARE(param.name(), QLatin1String("account")); QCOMPARE(static_cast(param.type()), static_cast(QVariant::String)); QCOMPARE(param.defaultValue().isNull(), true); QCOMPARE(param.dbusSignature().signature(), QLatin1String("s")); QCOMPARE(param.isRequired(), true); QCOMPARE(param.isRequiredForRegistration(), true); // though it can't register! QCOMPARE(param.isSecret(), false); QVERIFY(!info.canRegister()); QVERIFY(!info.capabilities().isSpecificToContact()); QVERIFY(!info.capabilities().textChatrooms()); QVERIFY(info.capabilities().textChats()); QCOMPARE(info.vcardField(), QLatin1String("x-telepathy-protocol")); QCOMPARE(info.englishName(), QLatin1String("Telepathy Protocol")); QCOMPARE(info.iconName(), QLatin1String("im-protocol")); QStringList addressableVCardFields = info.addressableVCardFields(); QCOMPARE(addressableVCardFields, QStringList() << QLatin1String("x-protocol")); QStringList addressableUriSchemes = info.addressableUriSchemes(); QCOMPARE(addressableUriSchemes, QStringList() << QLatin1String("protocol")); AvatarSpec avatarReqs = info.avatarRequirements(); QStringList supportedMimeTypes = avatarReqs.supportedMimeTypes(); QCOMPARE(supportedMimeTypes, QStringList() << QLatin1String("image/jpeg")); QCOMPARE(avatarReqs.minimumHeight(), (uint) 32); QCOMPARE(avatarReqs.maximumHeight(), (uint) 96); QCOMPARE(avatarReqs.recommendedHeight(), (uint) 64); QCOMPARE(avatarReqs.minimumWidth(), (uint) 32); QCOMPARE(avatarReqs.maximumWidth(), (uint) 96); QCOMPARE(avatarReqs.recommendedWidth(), (uint) 64); QCOMPARE(avatarReqs.maximumBytes(), (uint) 37748736); PresenceSpecList statuses = info.allowedPresenceStatuses(); QCOMPARE(statuses.size(), 2); PresenceSpec spec = getPresenceSpec(statuses, QLatin1String("available")); QVERIFY(spec.isValid()); QVERIFY(spec.presence().type() == ConnectionPresenceTypeAvailable); QVERIFY(spec.maySetOnSelf()); QVERIFY(spec.canHaveStatusMessage()); spec = getPresenceSpec(statuses, QLatin1String("offline")); QVERIFY(spec.isValid()); QVERIFY(spec.presence().type() == ConnectionPresenceTypeOffline); QVERIFY(!spec.maySetOnSelf()); QVERIFY(!spec.canHaveStatusMessage()); QCOMPARE(mCM->protocolAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolAddressingAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolAvatarsAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolPresenceAdaptor->introspectionCalled, 0); } void TestCmProtocol::testIntrospectionWithProperties() { mCM = new CMHelper(QLatin1String("protocolwithprops"), true, true, true, true); ConnectionManagerPtr cm = mCM->cm; QVERIFY(connect(cm->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cm->isReady(), true); testIntrospectionWithAdaptorCommon(cm); QCOMPARE(mCM->protocolAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolAddressingAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolAvatarsAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolPresenceAdaptor->introspectionCalled, 0); } void TestCmProtocol::testIntrospectionWithSomeProperties() { mCM = new CMHelper(QLatin1String("protocolwithsomeprops"), false, false, true, true); ConnectionManagerPtr cm = mCM->cm; QVERIFY(connect(cm->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cm->isReady(), true); testIntrospectionWithAdaptorCommon(cm); QVERIFY(mCM->protocolAdaptor->introspectionCalled > 0); QVERIFY(mCM->protocolAddressingAdaptor->introspectionCalled > 0); QCOMPARE(mCM->protocolAvatarsAdaptor->introspectionCalled, 0); QCOMPARE(mCM->protocolPresenceAdaptor->introspectionCalled, 0); } void TestCmProtocol::testIntrospectionWithAdaptorCommon(const ConnectionManagerPtr &cm) { QCOMPARE(cm->interfaces(), QStringList()); QCOMPARE(cm->supportedProtocols(), QStringList() << cm->name()); QVERIFY(cm->hasProtocol(cm->name())); QVERIFY(!cm->hasProtocol(QLatin1String("not-there"))); ProtocolInfo info = cm->protocol(cm->name()); QVERIFY(info.isValid()); QCOMPARE(info.cmName(), cm->name()); QCOMPARE(info.name(), cm->name()); QCOMPARE(info.parameters().size(), 0); QVERIFY(!info.canRegister()); QVERIFY(!info.capabilities().isSpecificToContact()); QVERIFY(info.capabilities().textChatrooms()); QVERIFY(!info.capabilities().textChats()); QCOMPARE(info.vcardField(), QLatin1String("x-adaptor")); QCOMPARE(info.englishName(), QLatin1String("Adaptor")); QCOMPARE(info.iconName(), QLatin1String("icon-adaptor")); QStringList addressableVCardFields = info.addressableVCardFields(); QCOMPARE(addressableVCardFields, QStringList() << QLatin1String("x-adaptor")); QStringList addressableUriSchemes = info.addressableUriSchemes(); QCOMPARE(addressableUriSchemes, QStringList() << QLatin1String("adaptor")); AvatarSpec avatarReqs = info.avatarRequirements(); QStringList supportedMimeTypes = avatarReqs.supportedMimeTypes(); QCOMPARE(supportedMimeTypes, QStringList() << QLatin1String("image/png")); QCOMPARE(avatarReqs.minimumHeight(), (uint) 16); QCOMPARE(avatarReqs.maximumHeight(), (uint) 64); QCOMPARE(avatarReqs.recommendedHeight(), (uint) 32); QCOMPARE(avatarReqs.minimumWidth(), (uint) 16); QCOMPARE(avatarReqs.maximumWidth(), (uint) 64); QCOMPARE(avatarReqs.recommendedWidth(), (uint) 32); QCOMPARE(avatarReqs.maximumBytes(), (uint) 4096); PresenceSpecList statuses = info.allowedPresenceStatuses(); QCOMPARE(statuses.size(), 1); PresenceSpec spec = getPresenceSpec(statuses, QLatin1String("available")); QVERIFY(spec.isValid()); QVERIFY(spec.presence().type() == ConnectionPresenceTypeAvailable); QVERIFY(spec.maySetOnSelf()); QVERIFY(!spec.canHaveStatusMessage()); spec = getPresenceSpec(statuses, QLatin1String("offline")); QVERIFY(!spec.isValid()); } void TestCmProtocol::cleanup() { cleanupImpl(); } void TestCmProtocol::cleanupTestCase() { delete mCM; cleanupTestCaseImpl(); } QTEST_MAIN(TestCmProtocol) #include "_gen/cm-protocol.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/do-nothing.cpp0000644000175100017520000000173612530423576022602 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include class TestDoNothing : public Test { Q_OBJECT public: TestDoNothing(QObject *parent = 0) : Test(parent) { } private Q_SLOTS: void initTestCase(); void init(); void doNothing(); void doNothing2(); void cleanup(); void cleanupTestCase(); }; void TestDoNothing::initTestCase() { initTestCaseImpl(); } void TestDoNothing::init() { initImpl(); } void TestDoNothing::doNothing() { QTimer::singleShot(0, mLoop, SLOT(quit())); QCOMPARE(mLoop->exec(), 0); } void TestDoNothing::doNothing2() { QTimer::singleShot(0, mLoop, SLOT(quit())); QCOMPARE(mLoop->exec(), 0); } void TestDoNothing::cleanup() { cleanupImpl(); } void TestDoNothing::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestDoNothing) #include "_gen/do-nothing.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/account-channel-dispatcher.cpp0000644000175100017520000013742412530423576025726 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; class ChannelRequestAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelRequest") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Account READ Account) Q_PROPERTY(qulonglong UserActionTime READ UserActionTime) Q_PROPERTY(QString PreferredHandler READ PreferredHandler) Q_PROPERTY(QualifiedPropertyValueMapList Requests READ Requests) Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(QVariantMap Hints READ Hints) public: ChannelRequestAdaptor(QDBusObjectPath account, qulonglong userActionTime, QString preferredHandler, QualifiedPropertyValueMapList requests, QStringList interfaces, bool shouldFail, bool proceedNoop, QVariantMap hints, QObject *parent) : QDBusAbstractAdaptor(parent), mAccount(account), mUserActionTime(userActionTime), mPreferredHandler(preferredHandler), mRequests(requests), mInterfaces(interfaces), mShouldFail(shouldFail), mProceedNoop(proceedNoop), mHints(hints) { } virtual ~ChannelRequestAdaptor() { } void setChan(const QString &connPath, const QVariantMap &connProps, const QString &chanPath, const QVariantMap &chanProps) { mConnPath = connPath; mConnProps = connProps; mChanPath = chanPath; mChanProps = chanProps; } public: // Properties inline QDBusObjectPath Account() const { return mAccount; } inline qulonglong UserActionTime() const { return mUserActionTime; } inline QString PreferredHandler() const { return mPreferredHandler; } inline QualifiedPropertyValueMapList Requests() const { return mRequests; } inline QStringList Interfaces() const { return mInterfaces; } inline QVariantMap Hints() const { return mHints; } public Q_SLOTS: // Methods void Proceed() { if (mProceedNoop) { return; } if (mShouldFail) { QTimer::singleShot(0, this, SLOT(fail())); } else { QTimer::singleShot(0, this, SLOT(succeed())); } } void Cancel() { Q_EMIT Failed(QLatin1String(TP_QT_ERROR_CANCELLED), QLatin1String("Cancelled")); } Q_SIGNALS: // Signals void Failed(const QString &error, const QString &message); void Succeeded(); void SucceededWithChannel(const QDBusObjectPath &connPath, const QVariantMap &connProps, const QDBusObjectPath &chanPath, const QVariantMap &chanProps); private Q_SLOTS: void fail() { Q_EMIT Failed(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Not available")); } void succeed() { if (!mConnPath.isEmpty() && !mChanPath.isEmpty()) { Q_EMIT SucceededWithChannel(QDBusObjectPath(mConnPath), mConnProps, QDBusObjectPath(mChanPath), mChanProps); } Q_EMIT Succeeded(); } private: QDBusObjectPath mAccount; qulonglong mUserActionTime; QString mPreferredHandler; QualifiedPropertyValueMapList mRequests; QStringList mInterfaces; bool mShouldFail; bool mProceedNoop; QVariantMap mHints; QString mConnPath, mChanPath; QVariantMap mConnProps, mChanProps; }; class ChannelDispatcherAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelDispatcher") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(bool SupportsRequestHints READ SupportsRequestHints) public: enum MethodCall { CC = 0, // CreateChannel/WithHints EC, // EnsureChannel/WithHints }; ChannelDispatcherAdaptor(const QDBusConnection &bus, QObject *parent) : QDBusAbstractAdaptor(parent), mBus(bus), mRequests(0), mCurRequest(0), mInvokeHandler(false), mChannelRequestShouldFail(false), mChannelRequestProceedNoop(false) { } virtual ~ChannelDispatcherAdaptor() { } void setChan(const QString &connPath, const QVariantMap &connProps, const QString &chanPath, const QVariantMap &chanProps) { mConnPath = connPath; mConnProps = connProps; mChanPath = chanPath; mChanProps = chanProps; } void clearChan() { mConnPath = QString(); mConnProps.clear(); mChanPath = QString(); mChanProps.clear(); } public: // Properties inline QStringList Interfaces() const { return QStringList(); } inline bool SupportsRequestHints() const { return true; } public Q_SLOTS: // Methods QDBusObjectPath CreateChannel(const QDBusObjectPath& account, const QVariantMap& requestedProperties, qlonglong userActionTime, const QString& preferredHandler) { lastCall = CC; return createChannel(account, requestedProperties, userActionTime, preferredHandler); } QDBusObjectPath EnsureChannel(const QDBusObjectPath& account, const QVariantMap& requestedProperties, qlonglong userActionTime, const QString& preferredHandler) { lastCall = EC; return createChannel(account, requestedProperties, userActionTime, preferredHandler); } QDBusObjectPath CreateChannelWithHints(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints) { lastCall = CC; return createChannel(account, requestedProperties, userActionTime, preferredHandler, hints); } QDBusObjectPath EnsureChannelWithHints(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints) { lastCall = EC; return createChannel(account, requestedProperties, userActionTime, preferredHandler, hints); } private: friend class TestAccountChannelDispatcher; QDBusObjectPath createChannel(const QDBusObjectPath &account, const QVariantMap &requestedProperties, qlonglong userActionTime, const QString &preferredHandler, const QVariantMap &hints = QVariantMap()) { QObject *request = new QObject(this); mCurRequest = new ChannelRequestAdaptor( account, userActionTime, preferredHandler, QualifiedPropertyValueMapList(), QStringList(), mChannelRequestShouldFail, mChannelRequestProceedNoop, hints, request); mCurRequest->setChan(mConnPath, mConnProps, mChanPath, mChanProps); mCurRequestPath = QString(QLatin1String("/org/freedesktop/Telepathy/ChannelRequest/_%1")) .arg(mRequests++); mBus.registerService(QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher")); mBus.registerObject(mCurRequestPath, request); mCurPreferredHandler = preferredHandler; if (mInvokeHandler && !mConnPath.isEmpty() && !mChanPath.isEmpty()) { invokeHandler(userActionTime); } return QDBusObjectPath(mCurRequestPath); } void invokeHandler(const qulonglong &userActionTime) { QString channelHandlerPath = QString(QLatin1String("/%1")).arg(mCurPreferredHandler); channelHandlerPath.replace(QLatin1Char('.'), QLatin1Char('/')); Client::ClientHandlerInterface *clientHandlerInterface = new Client::ClientHandlerInterface(mBus, mCurPreferredHandler, channelHandlerPath, this); ChannelDetails channelDetails = { QDBusObjectPath(mChanPath), mChanProps }; ObjectImmutablePropertiesMap channelRequestProperties; QVariantMap currentChannelRequestProperties; currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Account"), QVariant::fromValue(mCurRequest->Account())); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".UserActionTime"), mCurRequest->UserActionTime()); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".PreferredHandler"), mCurRequest->PreferredHandler()); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Requests"), QVariant::fromValue(mCurRequest->Requests())); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interfaces"), QVariant::fromValue(mCurRequest->Interfaces())); channelRequestProperties[QDBusObjectPath(mCurRequestPath)] = currentChannelRequestProperties; QVariantMap handlerInfo; handlerInfo.insert(QLatin1String("request-properties"), QVariant::fromValue(channelRequestProperties)); clientHandlerInterface->HandleChannels(mCurRequest->Account(), QDBusObjectPath(mConnPath), ChannelDetailsList() << channelDetails, ObjectPathList() << QDBusObjectPath(mCurRequestPath), userActionTime, handlerInfo); } QDBusConnection mBus; uint mRequests; ChannelRequestAdaptor *mCurRequest; QString mCurRequestPath; QString mCurPreferredHandler; bool mInvokeHandler; bool mChannelRequestShouldFail; bool mChannelRequestProceedNoop; QString mConnPath, mChanPath; QVariantMap mConnProps, mChanProps; static MethodCall lastCall; }; ChannelDispatcherAdaptor::MethodCall ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; class TestAccountChannelDispatcher : public Test { Q_OBJECT public: TestAccountChannelDispatcher(QObject *parent = 0) : Test(parent), mChannelDispatcherAdaptor(0), mChannelRequestFinished(false), mChannelRequestFinishedWithError(false) { mHints = ChannelRequestHints(); mHints.setHint(QLatin1String("uk.co.willthompson"), QLatin1String("MomOrDad"), QString::fromLatin1("Mommy")); } protected Q_SLOTS: void onPendingChannelRequestFinished(Tp::PendingOperation *op); void onPendingChannelFinished(Tp::PendingOperation *op); void onChannelHandledAgain(const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints); private Q_SLOTS: void initTestCase(); void init(); void testEnsureTextChat(); void testEnsureTextChatFail(); void testEnsureTextChatCancel(); void testEnsureTextChatroom(); void testEnsureTextChatroomFail(); void testEnsureTextChatroomCancel(); void testEnsureMediaCall(); void testEnsureMediaCallFail(); void testEnsureMediaCallCancel(); void testCreateChannel(); void testCreateChannelFail(); void testCreateChannelCancel(); void testEnsureChannel(); void testEnsureChannelFail(); void testEnsureChannelCancel(); void testCreateFileTransferChannel(); void testCreateFileTransferChannelFail(); void testCreateFileTransferChannelCancel(); void testCreateFileTransferChannelInvalidParameters(); void testCreateAndHandleChannel(); void testCreateAndHandleChannelNotYours(); void testCreateAndHandleChannelFail(); void testCreateAndHandleChannelHandledAgain(); void testCreateAndHandleChannelHandledChannels(); void testCreateAndHandleFileTransferChannel(); void testCreateAndHandleFileTransferChannelFail(); void testCreateAndHandleFileTransferChannelInvalidParameters(); void cleanup(); void cleanupTestCase(); private: void testPCR(PendingChannelRequest *pcr); void testPC(PendingChannel *pc, PendingChannel **pcOut = 0, ChannelPtr *channelOut = 0); QList ourHandlers(); QStringList ourHandledChannels(); void checkHandlerHandledChannels(ClientHandlerInterface *handler, const QStringList &toCompare); AccountManagerPtr mAM; AccountPtr mAccount; ChannelDispatcherAdaptor *mChannelDispatcherAdaptor; TestConnHelper *mConn; ContactPtr mContact; QDateTime mUserActionTime; ChannelRequestPtr mChannelRequest; bool mChannelRequestFinished; bool mChannelRequestFinishedWithError; QString mChannelRequestFinishedErrorName; bool mChannelRequestAndHandleFinished; bool mChannelRequestAndHandleFinishedWithError; QString mChannelRequestAndHandleFinishedErrorName; QDateTime mChannelHandledAgainActionTime; ChannelRequestHints mHints; QString mChanPath; QVariantMap mConnProps, mChanProps; QString mFilePath; }; void TestAccountChannelDispatcher::onPendingChannelRequestFinished( Tp::PendingOperation *op) { mChannelRequestFinished = true; mChannelRequestFinishedWithError = op->isError(); mChannelRequestFinishedErrorName = op->errorName(); mLoop->exit(0); } void TestAccountChannelDispatcher::onPendingChannelFinished( Tp::PendingOperation *op) { mChannelRequestAndHandleFinished = true; mChannelRequestAndHandleFinishedWithError = op->isError(); mChannelRequestAndHandleFinishedErrorName = op->errorName(); mLoop->exit(0); } void TestAccountChannelDispatcher::onChannelHandledAgain(const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints) { mChannelHandledAgainActionTime = userActionTime; mLoop->exit(0); } void TestAccountChannelDispatcher::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("account-channel-dispatcher"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); // Create the CD first, because Accounts try to introspect it QDBusConnection bus = QDBusConnection::sessionBus(); QString channelDispatcherBusName = TP_QT_IFACE_CHANNEL_DISPATCHER; QString channelDispatcherPath = QLatin1String("/org/freedesktop/Telepathy/ChannelDispatcher"); QObject *dispatcher = new QObject(this); mChannelDispatcherAdaptor = new ChannelDispatcherAdaptor(bus, dispatcher); QVERIFY(bus.registerService(channelDispatcherBusName)); QVERIFY(bus.registerObject(channelDispatcherPath, dispatcher)); mAM = AccountManager::create(); QVERIFY(connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAM->isReady(), true); QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); PendingAccount *pacc = mAM->createAccount(QLatin1String("foo"), QLatin1String("bar"), QLatin1String("foobar"), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pacc->account()); mAccount = pacc->account(); QVERIFY(connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAccount->isReady(), true); QCOMPARE(mAccount->supportsRequestHints(), true); QCOMPARE(mAccount->requestsSucceedWithChannel(), true); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", "me@example.com", "protocol", "contacts", NULL); QCOMPARE(mConn->connect(), true); mContact = mConn->contacts(QStringList() << QLatin1String("foo@bar"))[0]; QVERIFY(mContact); } void TestAccountChannelDispatcher::init() { initImpl(); mChannelRequest.reset(); mChannelRequestFinished = false; mChannelRequestFinishedWithError = false; mChannelRequestFinishedErrorName = QString(); mChannelRequestAndHandleFinished = false; mChannelRequestAndHandleFinishedWithError = false; mChannelRequestAndHandleFinishedErrorName = QString(); mChannelHandledAgainActionTime = QDateTime(); QDateTime mUserActionTime = QDateTime::currentDateTime(); mChanPath.clear(); mChanProps.clear(); mFilePath = QCoreApplication::applicationFilePath(); } void TestAccountChannelDispatcher::testPCR(PendingChannelRequest *pcr) { QVERIFY(connect(pcr, SIGNAL(finished(Tp::PendingOperation *)), SLOT(onPendingChannelRequestFinished(Tp::PendingOperation *)))); mLoop->exec(0); mChannelRequest = pcr->channelRequest(); if (!mChanPath.isEmpty()) { QVERIFY(!mChannelRequest->channel().isNull()); QCOMPARE(mChannelRequest->channel()->connection()->objectPath(), mConn->objectPath()); QCOMPARE(mChannelRequest->channel()->objectPath(), mChanPath); QCOMPARE(mChannelRequest->channel()->immutableProperties(), mChanProps); } else { QVERIFY(mChannelRequest.isNull() || mChannelRequest->channel().isNull()); } if (!mChannelRequest.isNull()) { QVERIFY(connect(mChannelRequest->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); mLoop->exec(0); QCOMPARE(mChannelRequest->userActionTime(), mUserActionTime); QCOMPARE(mChannelRequest->account().data(), mAccount.data()); QVERIFY(mChannelRequest->hints().isValid()); QCOMPARE(mChannelRequest->hints().allHints(), mHints.allHints()); } } void TestAccountChannelDispatcher::testPC(PendingChannel *pc, PendingChannel **pcOut, ChannelPtr *channelOut) { if (pcOut) { *pcOut = pc; } QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(onPendingChannelFinished(Tp::PendingOperation *)))); mLoop->exec(0); ChannelPtr channel = pc->channel(); if (channelOut) { *channelOut = channel; } if (mChannelDispatcherAdaptor->mInvokeHandler && !mChanPath.isEmpty()) { QVERIFY(!channel.isNull()); QCOMPARE(channel->connection()->objectPath(), mConn->objectPath()); QCOMPARE(channel->objectPath(), mChanPath); QCOMPARE(channel->immutableProperties(), mChanProps); } else { QVERIFY(channel.isNull()); } } QList TestAccountChannelDispatcher::ourHandlers() { QList handlers; QDBusConnection bus = QDBusConnection::sessionBus(); QStringList registeredNames = bus.interface()->registeredServiceNames(); Q_FOREACH (QString name, registeredNames) { if (!name.startsWith(QLatin1String("org.freedesktop.Telepathy.Client."))) { continue; } if (QDBusConnection::sessionBus().interface()->serviceOwner(name).value() != QDBusConnection::sessionBus().baseService()) { continue; } QString path = QLatin1Char('/') + name; path.replace(QLatin1Char('.'), QLatin1Char('/')); ClientInterface client(name, path); QStringList ifaces; if (!waitForProperty(client.requestPropertyInterfaces(), &ifaces)) { continue; } if (!ifaces.contains(TP_QT_IFACE_CLIENT_HANDLER)) { continue; } ClientHandlerInterface *handler = new ClientHandlerInterface(name, path, this); handlers.append(handler); } return handlers; } QStringList TestAccountChannelDispatcher::ourHandledChannels() { ObjectPathList handledChannels; QDBusConnection bus = QDBusConnection::sessionBus(); QStringList registeredNames = bus.interface()->registeredServiceNames(); Q_FOREACH (QString name, registeredNames) { if (!name.startsWith(QLatin1String("org.freedesktop.Telepathy.Client."))) { continue; } if (QDBusConnection::sessionBus().interface()->serviceOwner(name).value() != QDBusConnection::sessionBus().baseService()) { continue; } QString path = QLatin1Char('/') + name; path.replace(QLatin1Char('.'), QLatin1Char('/')); ClientInterface client(name, path); QStringList ifaces; if (!waitForProperty(client.requestPropertyInterfaces(), &ifaces)) { continue; } if (!ifaces.contains(TP_QT_IFACE_CLIENT_HANDLER)) { continue; } ClientHandlerInterface *handler = new ClientHandlerInterface(bus, name, path, this); handledChannels.clear(); if (waitForProperty(handler->requestPropertyHandledChannels(), &handledChannels)) { break; } } QStringList ret; Q_FOREACH (const QDBusObjectPath &objectPath, handledChannels) { ret << objectPath.path(); } return ret; } void TestAccountChannelDispatcher::checkHandlerHandledChannels(ClientHandlerInterface *handler, const QStringList &toCompare) { ObjectPathList handledChannels; QVERIFY(waitForProperty(handler->requestPropertyHandledChannels(), &handledChannels)); QStringList sortedHandledChannels; Q_FOREACH (const QDBusObjectPath &objectPath, handledChannels) { sortedHandledChannels << objectPath.path(); } sortedHandledChannels.sort(); QCOMPARE(sortedHandledChannels, toCompare); } #define TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(method_name, shouldFail, proceedNoop, expectedError) \ { \ ChannelRequestHints savedHints = mHints; \ TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_EXTENDED(method_name, QLatin1String("foo@bar"), \ ChannelRequestHints(), shouldFail, proceedNoop, expectedError) \ TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_EXTENDED(method_name, QLatin1String("foo@bar"), \ savedHints, shouldFail, proceedNoop, expectedError) \ mHints = savedHints; \ } #define TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(method_name, shouldFail, proceedNoop, expectedError) \ { \ ChannelRequestHints savedHints = mHints; \ TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_EXTENDED(method_name, mContact, \ ChannelRequestHints(), shouldFail, proceedNoop, expectedError) \ TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_EXTENDED(method_name, mContact, \ savedHints, shouldFail, proceedNoop, expectedError) \ mHints = savedHints; \ } #define TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_EXTENDED(method_name, contact, hints, shouldFail, proceedNoop, expectedError) \ { \ mHints = hints; \ mChannelDispatcherAdaptor->mInvokeHandler = false; \ mChannelDispatcherAdaptor->mChannelRequestShouldFail = shouldFail; \ mChannelDispatcherAdaptor->mChannelRequestProceedNoop = proceedNoop; \ if (!mChanPath.isEmpty()) { \ mChannelDispatcherAdaptor->setChan(mConn->objectPath(), mConnProps, mChanPath, mChanProps); \ } else { \ mChannelDispatcherAdaptor->clearChan(); \ } \ PendingChannelRequest *pcr; \ if (mHints.isValid()) { \ pcr = mAccount->method_name(contact, mUserActionTime, QString(), mHints); \ } else { \ pcr = mAccount->method_name(contact, mUserActionTime, QString()); \ } \ if (shouldFail && proceedNoop) { \ pcr->cancel(); \ } \ testPCR(pcr); \ QCOMPARE(mChannelRequestFinishedWithError, shouldFail); \ if (shouldFail) {\ QCOMPARE(mChannelRequestFinishedErrorName, QString(QLatin1String(expectedError))); \ } \ } #define TEST_CREATE_ENSURE_CHANNEL(method_name, shouldFail, proceedNoop, expectedError) \ { \ ChannelRequestHints savedHints = mHints; \ TEST_CREATE_ENSURE_CHANNEL_EXTENDED(method_name, \ ChannelRequestHints(), shouldFail, proceedNoop, expectedError) \ TEST_CREATE_ENSURE_CHANNEL_EXTENDED(method_name, \ savedHints, shouldFail, proceedNoop, expectedError) \ mHints = savedHints; \ } #define TEST_CREATE_ENSURE_CHANNEL_EXTENDED(method_name, hints, shouldFail, proceedNoop, expectedError) \ { \ mHints = hints; \ QVariantMap request; \ request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), \ TP_QT_IFACE_CHANNEL_TYPE_TEXT); \ request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), \ (uint) Tp::HandleTypeContact); \ request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), \ QLatin1String("foo@bar")); \ mChannelDispatcherAdaptor->mInvokeHandler = false; \ mChannelDispatcherAdaptor->mChannelRequestShouldFail = shouldFail; \ mChannelDispatcherAdaptor->mChannelRequestProceedNoop = proceedNoop; \ if (!mChanPath.isEmpty()) { \ mChannelDispatcherAdaptor->setChan(mConn->objectPath(), mConnProps, mChanPath, mChanProps); \ } else { \ mChannelDispatcherAdaptor->clearChan(); \ } \ PendingChannelRequest *pcr; \ if (mHints.isValid()) { \ pcr = mAccount->method_name(request, mUserActionTime, QString(), mHints); \ } else { \ pcr = mAccount->method_name(request, mUserActionTime, QString()); \ } \ if (shouldFail && proceedNoop) { \ pcr->cancel(); \ } \ testPCR(pcr); \ QCOMPARE(mChannelRequestFinishedWithError, shouldFail); \ if (shouldFail) {\ QCOMPARE(mChannelRequestFinishedErrorName, QString(QLatin1String(expectedError))); \ } \ } void TestAccountChannelDispatcher::testEnsureTextChat() { TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureTextChat, false, false, ""); TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureTextChat, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureTextChatFail() { TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureTextChat, true, false, TP_QT_ERROR_NOT_AVAILABLE); TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureTextChat, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureTextChatCancel() { TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureTextChat, true, true, TP_QT_ERROR_CANCELLED); TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureTextChat, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureTextChatroom() { TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureTextChatroom, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureTextChatroomFail() { TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureTextChatroom, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureTextChatroomCancel() { TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureTextChatroom, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureMediaCall() { mChanPath = mConn->objectPath() + QLatin1String("/channel"); mChanProps = ChannelClassSpec::streamedMediaCall().allProperties(); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureStreamedMediaCall, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureStreamedMediaCall, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureStreamedMediaAudioCall, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureStreamedMediaAudioCall, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureMediaCallFail() { ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureStreamedMediaCall, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureStreamedMediaCall, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureStreamedMediaAudioCall, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureStreamedMediaAudioCall, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureMediaCallCancel() { ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureStreamedMediaCall, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureStreamedMediaCall, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC(ensureStreamedMediaAudioCall, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); ChannelDispatcherAdaptor::lastCall = (ChannelDispatcherAdaptor::MethodCall) -1; TEST_CREATE_ENSURE_CHANNEL_SPECIFIC_WITH_CONTACT(ensureStreamedMediaAudioCall, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } #define TEST_CREATE_FILE_TRANSFER_CHANNEL(shouldFail, proceedNoop, invalidProps, expectedError) \ { \ ChannelRequestHints savedHints = mHints; \ TEST_CREATE_FILE_TRANSFER_CHANNEL_EXTENDED(QLatin1String("foo@bar"), \ ChannelRequestHints(), shouldFail, proceedNoop, invalidProps, expectedError) \ TEST_CREATE_FILE_TRANSFER_CHANNEL_EXTENDED(QLatin1String("foo@bar"), \ savedHints, shouldFail, proceedNoop, invalidProps, expectedError) \ TEST_CREATE_FILE_TRANSFER_CHANNEL_EXTENDED(mContact, \ ChannelRequestHints(), shouldFail, proceedNoop, invalidProps, expectedError) \ TEST_CREATE_FILE_TRANSFER_CHANNEL_EXTENDED(mContact, \ savedHints, shouldFail, proceedNoop, invalidProps, expectedError) \ mHints = savedHints; \ } #define TEST_CREATE_FILE_TRANSFER_CHANNEL_EXTENDED(contact, hints, shouldFail, proceedNoop, invalidProps, expectedError) \ { \ mHints = hints; \ mChannelDispatcherAdaptor->mInvokeHandler = false; \ mChannelDispatcherAdaptor->mChannelRequestShouldFail = shouldFail; \ mChannelDispatcherAdaptor->mChannelRequestProceedNoop = proceedNoop; \ if (!mChanPath.isEmpty()) { \ mChannelDispatcherAdaptor->setChan(mConn->objectPath(), mConnProps, mChanPath, mChanProps); \ } else { \ mChannelDispatcherAdaptor->clearChan(); \ } \ \ PendingChannelRequest *pcr; \ FileTransferChannelCreationProperties ftprops; \ if (!invalidProps) { \ QFileInfo fileInfo(mFilePath); \ ftprops = FileTransferChannelCreationProperties(fileInfo.fileName(), \ QLatin1String("application/octet-stream"), fileInfo.size()); \ } \ \ if (mHints.isValid()) { \ pcr = mAccount->createFileTransfer(contact, \ ftprops, mUserActionTime, QString(), mHints); \ } else { \ pcr = mAccount->createFileTransfer(contact, \ ftprops, mUserActionTime, QString()); \ } \ \ if (shouldFail && proceedNoop) { \ pcr->cancel(); \ } \ testPCR(pcr); \ QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); \ QCOMPARE(mChannelRequestFinishedWithError, shouldFail); \ if (shouldFail) {\ QCOMPARE(mChannelRequestFinishedErrorName, QString(QLatin1String(expectedError))); \ } \ } void TestAccountChannelDispatcher::testCreateFileTransferChannel() { mChanPath.clear(); mChanProps = ChannelClassSpec::outgoingFileTransfer().allProperties(); TEST_CREATE_FILE_TRANSFER_CHANNEL(false, false, false, ""); } void TestAccountChannelDispatcher::testCreateFileTransferChannelFail() { TEST_CREATE_FILE_TRANSFER_CHANNEL(true, false, false, TP_QT_ERROR_NOT_AVAILABLE); } void TestAccountChannelDispatcher::testCreateFileTransferChannelCancel() { TEST_CREATE_FILE_TRANSFER_CHANNEL(true, true, false, TP_QT_ERROR_CANCELLED); } void TestAccountChannelDispatcher::testCreateFileTransferChannelInvalidParameters() { TEST_CREATE_FILE_TRANSFER_CHANNEL(true, false, true, TP_QT_ERROR_INVALID_ARGUMENT); } void TestAccountChannelDispatcher::testCreateChannel() { TEST_CREATE_ENSURE_CHANNEL(createChannel, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); } void TestAccountChannelDispatcher::testCreateChannelFail() { TEST_CREATE_ENSURE_CHANNEL(createChannel, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); } void TestAccountChannelDispatcher::testCreateChannelCancel() { TEST_CREATE_ENSURE_CHANNEL(createChannel, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); } void TestAccountChannelDispatcher::testEnsureChannel() { TEST_CREATE_ENSURE_CHANNEL(ensureChannel, false, false, ""); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureChannelFail() { TEST_CREATE_ENSURE_CHANNEL(ensureChannel, true, false, TP_QT_ERROR_NOT_AVAILABLE); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testEnsureChannelCancel() { TEST_CREATE_ENSURE_CHANNEL(ensureChannel, true, true, TP_QT_ERROR_CANCELLED); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } #define TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(method_name, channelRequestShouldFail, shouldFail, invokeHandler, expectedError, channelOut, pcOut) \ { \ QVariantMap request; \ request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), \ TP_QT_IFACE_CHANNEL_TYPE_TEXT); \ request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), \ (uint) Tp::HandleTypeContact); \ request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), \ QLatin1String("foo@bar")); \ mChannelDispatcherAdaptor->mInvokeHandler = invokeHandler; \ mChannelDispatcherAdaptor->mChannelRequestShouldFail = channelRequestShouldFail; \ mChannelDispatcherAdaptor->mChannelRequestProceedNoop = false; \ if (!mChanPath.isEmpty()) { \ mChannelDispatcherAdaptor->setChan(mConn->objectPath(), mConnProps, mChanPath, mChanProps); \ } else { \ mChannelDispatcherAdaptor->clearChan(); \ } \ PendingChannel *pc = mAccount->method_name(request, mUserActionTime); \ testPC(pc, pcOut, channelOut); \ QCOMPARE(mChannelRequestAndHandleFinishedWithError, shouldFail); \ if (shouldFail) {\ QCOMPARE(mChannelRequestAndHandleFinishedErrorName, QString(QLatin1String(expectedError))); \ } \ } void TestAccountChannelDispatcher::testCreateAndHandleChannel() { mChanPath = mConn->objectPath() + QLatin1String("/channel"); mChanProps = ChannelClassSpec::textChat().allProperties(); TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(createAndHandleChannel, false, false, true, "", 0, 0); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); } void TestAccountChannelDispatcher::testCreateAndHandleChannelNotYours() { TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(ensureAndHandleChannel, false, true, false, TP_QT_ERROR_NOT_YOURS, 0, 0); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::EC); } void TestAccountChannelDispatcher::testCreateAndHandleChannelFail() { TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(createAndHandleChannel, true, true, false, TP_QT_ERROR_NOT_AVAILABLE, 0, 0); QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); } void TestAccountChannelDispatcher::testCreateAndHandleChannelHandledAgain() { // create a Channel by magic, rather than doing D-Bus round-trips for it TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(contactRepo, "someone@localhost", 0, 0); mChanPath = mConn->objectPath() + QLatin1String("/TextChannel"); QByteArray chanPath(mChanPath.toLatin1()); ExampleEcho2Channel *textChanService = EXAMPLE_ECHO_2_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_2_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); PendingChannel *pcOut = 0; TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(createAndHandleChannel, false, false, true, "", 0, &pcOut); HandledChannelNotifier *notifier = pcOut->handledChannelNotifier(); connect(notifier, SIGNAL(handledAgain(QDateTime,Tp::ChannelRequestHints)), SLOT(onChannelHandledAgain(QDateTime,Tp::ChannelRequestHints))); QDateTime timestamp(QDate::currentDate()); mChannelDispatcherAdaptor->invokeHandler(timestamp.toTime_t()); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChannelHandledAgainActionTime, timestamp); if (textChanService != 0) { g_object_unref(textChanService); textChanService = 0; } } void TestAccountChannelDispatcher::testCreateAndHandleChannelHandledChannels() { mChanPath = mConn->objectPath() + QLatin1String("/channel"); mChanProps = ChannelClassSpec::textChat().allProperties(); QVERIFY(ourHandledChannels().isEmpty()); QVERIFY(ourHandlers().isEmpty()); ChannelPtr channel; TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(createAndHandleChannel, false, false, true, "", &channel, 0); // check that the channel appears in the HandledChannels property of the first handler QVERIFY(!ourHandledChannels().isEmpty()); QCOMPARE(ourHandledChannels().size(), 1); QVERIFY(ourHandledChannels().contains(mChanPath)); QVERIFY(!ourHandlers().isEmpty()); QCOMPARE(ourHandlers().size(), 1); channel.reset(); // reseting the channel should unregister the handler while (!ourHandlers().isEmpty()) { mLoop->processEvents(); } QVERIFY(ourHandledChannels().isEmpty()); ChannelPtr channel1; TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(createAndHandleChannel, false, false, true, "", &channel1, 0); // check that the channel appears in the HandledChannels property of the first handler QVERIFY(!ourHandledChannels().isEmpty()); QCOMPARE(ourHandledChannels().size(), 1); QVERIFY(ourHandledChannels().contains(mChanPath)); QVERIFY(!ourHandlers().isEmpty()); QCOMPARE(ourHandlers().size(), 1); mChanPath = mConn->objectPath() + QLatin1String("/channelother"); mChanProps = ChannelClassSpec::textChat().allProperties(); ChannelPtr channel2; TEST_CREATE_ENSURE_AND_HANDLE_CHANNEL(createAndHandleChannel, false, false, true, "", &channel2, 0); // check that the channel appears in the HandledChannels property of some handler QVERIFY(!ourHandledChannels().isEmpty()); QCOMPARE(ourHandledChannels().size(), 2); QVERIFY(ourHandledChannels().contains(mChanPath)); QVERIFY(!ourHandlers().isEmpty()); // only one handler will stay alive to properly report HandledChannels QCOMPARE(ourHandlers().size(), 1); QStringList sortedOurHandledChannels = ourHandledChannels(); sortedOurHandledChannels.sort(); Q_FOREACH (ClientHandlerInterface *handler, ourHandlers()) { checkHandlerHandledChannels(handler, sortedOurHandledChannels); } channel1.reset(); while (ourHandledChannels().size() > 1) { mLoop->processEvents(); } QVERIFY(!ourHandledChannels().isEmpty()); QCOMPARE(ourHandledChannels().size(), 1); QVERIFY(ourHandledChannels().contains(mChanPath)); channel2.reset(); while (!ourHandlers().isEmpty()) { mLoop->processEvents(); } QVERIFY(ourHandledChannels().isEmpty()); } #define TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL(channelRequestShouldFail, shouldFail, \ invalidProps, invokeHandler, expectedError, channelOut, pcOut) \ TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL_EXTENDED(QLatin1String("foo@bar"), \ channelRequestShouldFail, shouldFail, invalidProps, invokeHandler, \ expectedError, channelOut, pcOut) \ TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL_EXTENDED(mContact, \ channelRequestShouldFail, shouldFail, invalidProps, invokeHandler, \ expectedError, channelOut, pcOut) #define TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL_EXTENDED(contact, channelRequestShouldFail, \ shouldFail, invalidProps, invokeHandler, expectedError, channelOut, pcOut) \ { \ mChannelDispatcherAdaptor->mInvokeHandler = invokeHandler; \ mChannelDispatcherAdaptor->mChannelRequestShouldFail = channelRequestShouldFail; \ mChannelDispatcherAdaptor->mChannelRequestProceedNoop = false; \ if (!mChanPath.isEmpty()) { \ mChannelDispatcherAdaptor->setChan(mConn->objectPath(), mConnProps, mChanPath, mChanProps); \ } else { \ mChannelDispatcherAdaptor->clearChan(); \ } \ PendingChannel *pc; \ if (!invalidProps) { \ QFileInfo fileInfo(mFilePath); \ FileTransferChannelCreationProperties ftprops(fileInfo.fileName(), \ QLatin1String("application/octet-stream"), fileInfo.size()); \ pc = mAccount->createAndHandleFileTransfer(contact, \ ftprops, mUserActionTime); \ } else { \ FileTransferChannelCreationProperties ftprops; \ pc = mAccount->createAndHandleFileTransfer(contact, \ ftprops, mUserActionTime); \ } \ testPC(pc, pcOut, channelOut); \ QCOMPARE(ChannelDispatcherAdaptor::lastCall, ChannelDispatcherAdaptor::CC); \ QCOMPARE(mChannelRequestAndHandleFinishedWithError, shouldFail); \ if (shouldFail) { \ QCOMPARE(mChannelRequestAndHandleFinishedErrorName, QString(QLatin1String(expectedError))); \ } \ } void TestAccountChannelDispatcher::testCreateAndHandleFileTransferChannel() { mChanPath = mConn->objectPath() + QLatin1String("/channel"); mChanProps = ChannelClassSpec::incomingFileTransfer().allProperties(); TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL(false, false, false, true, "", 0, 0); } void TestAccountChannelDispatcher::testCreateAndHandleFileTransferChannelFail() { TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL(true, true, false, true, TP_QT_ERROR_NOT_AVAILABLE, 0, 0); } void TestAccountChannelDispatcher::testCreateAndHandleFileTransferChannelInvalidParameters() { TEST_CREATE_AND_HANDLE_FILE_TRANSFER_CHANNEL(true, true, true, true, TP_QT_ERROR_INVALID_ARGUMENT, 0, 0); } void TestAccountChannelDispatcher::cleanup() { cleanupImpl(); } void TestAccountChannelDispatcher::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestAccountChannelDispatcher) #include "_gen/account-channel-dispatcher.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-introspect-cornercases.cpp0000644000175100017520000004064212530423576026165 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestConnIntrospectCornercases : public Test { Q_OBJECT public: TestConnIntrospectCornercases(QObject *parent = 0) : Test(parent), mConnService(0), mNumSelfHandleChanged(0) { } protected Q_SLOTS: void expectConnInvalidated(); void onSelfHandleChanged(uint); private Q_SLOTS: void initTestCase(); void init(); void testSelfHandleChangeBeforeConnecting(); void testSelfHandleChangeWhileBuilding(); void testSlowpath(); void testStatusChange(); void testNoRoster(); void cleanup(); void cleanupTestCase(); private: TpBaseConnection *mConnService; ConnectionPtr mConn; QList mStatuses; int mNumSelfHandleChanged; }; void TestConnIntrospectCornercases::expectConnInvalidated() { qDebug() << "conn invalidated"; mLoop->exit(0); } void TestConnIntrospectCornercases::onSelfHandleChanged(uint handle) { qDebug() << "got new self handle" << handle; mNumSelfHandleChanged++; } void TestConnIntrospectCornercases::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-introspect-cornercases"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); } void TestConnIntrospectCornercases::init() { initImpl(); QVERIFY(mConn.isNull()); QVERIFY(mConnService == 0); QVERIFY(mStatuses.empty()); QCOMPARE(mNumSelfHandleChanged, 0); // don't create the client- or service-side connection objects here, as it's expected that many // different types of service connections with different initial states need to be used } void TestConnIntrospectCornercases::testSelfHandleChangeBeforeConnecting() { gchar *name; gchar *connPath; GError *error = 0; TpTestsSimpleConnection *simpleConnService = TP_TESTS_SIMPLE_CONNECTION( g_object_new( TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL)); QVERIFY(simpleConnService != 0); mConnService = TP_BASE_CONNECTION(simpleConnService); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(mConnService, "simple", &name, &connPath, &error)); QVERIFY(error == 0); mConn = Connection::create(QLatin1String(name), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); g_free(name); name = 0; g_free(connPath); connPath = 0; // Set the initial self handle (we're not using the conn service normally, so it doesn't do this // by itself) tp_tests_simple_connection_set_identifier(simpleConnService, "me@example.com"); // Make the conn Connecting, and with FeatureCore ready tp_base_connection_change_status(mConnService, TP_CONNECTION_STATUS_CONNECTING, TP_CONNECTION_STATUS_REASON_REQUESTED); PendingOperation *op = mConn->becomeReady(); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(op->isFinished()); QVERIFY(mConn->isValid()); QVERIFY(op->isValid()); QCOMPARE(static_cast(mConn->status()), static_cast(Tp::ConnectionStatusConnecting)); // Start introspecting the SelfContact feature op = mConn->becomeReady(Connection::FeatureSelfContact | Connection::FeatureConnected); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); // Change the self handle, before the connection is Connected tp_tests_simple_connection_set_identifier(simpleConnService, "myself@example.com"); // Now change it to Connected tp_base_connection_change_status(mConnService, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); // Try to finish the SelfContact operation, running the mainloop for a while QCOMPARE(mLoop->exec(), 0); QCOMPARE(op->isFinished(), true); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QCOMPARE(mConn->isReady(Connection::FeatureSelfContact), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusConnected)); } void TestConnIntrospectCornercases::testSelfHandleChangeWhileBuilding() { gchar *name; gchar *connPath; GError *error = 0; TpTestsSimpleConnection *simpleConnService = TP_TESTS_SIMPLE_CONNECTION( g_object_new( TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL)); QVERIFY(simpleConnService != 0); mConnService = TP_BASE_CONNECTION(simpleConnService); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(mConnService, "simple", &name, &connPath, &error)); QVERIFY(error == 0); mConn = Connection::create(QLatin1String(name), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); g_free(name); name = 0; g_free(connPath); connPath = 0; // Make the conn Connected, and with FeatureCore ready PendingOperation *op = mConn->lowlevel()->requestConnect(); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(op->isFinished()); QVERIFY(mConn->isValid()); QVERIFY(op->isValid()); QCOMPARE(static_cast(mConn->status()), static_cast(Tp::ConnectionStatusConnected)); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QVERIFY(mConn->selfHandle() != 0); // Start introspecting the SelfContact feature op = mConn->becomeReady(Connection::FeatureSelfContact); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); // Run one mainloop iteration, so ReadinessHelper calls introspectSelfContact mLoop->processEvents(); // Change the self handle, so a rebuild has to be done after the first build finishes tp_tests_simple_connection_set_identifier(simpleConnService, "myself@example.com"); // Try to finish the SelfContact operation, running the mainloop for a while QCOMPARE(mLoop->exec(), 0); QCOMPARE(op->isFinished(), true); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QCOMPARE(mConn->isReady(Connection::FeatureSelfContact), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusConnected)); QCOMPARE(mConn->selfContact()->id(), QString::fromLatin1("me@example.com")); // We should shortly also receive a self contact change to the rebuilt contact QVERIFY(connect(mConn.data(), SIGNAL(selfContactChanged()), mLoop, SLOT(quit()))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->selfContact()->id(), QString::fromLatin1("myself@example.com")); QCOMPARE(mConn->selfContact()->handle()[0], mConn->selfHandle()); // Change the self handle yet again, which should cause a self handle and self contact change to be signalled // (in that order) QVERIFY(connect(mConn.data(), SIGNAL(selfHandleChanged(uint)), SLOT(onSelfHandleChanged(uint)))); tp_tests_simple_connection_set_identifier(simpleConnService, "irene@example.com"); QCOMPARE(mLoop->exec(), 0); QVERIFY(mConn->isValid()); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QCOMPARE(mConn->isReady(Connection::FeatureSelfContact), true); // We should've received a single self handle change and the self contact should've changed // (exiting the mainloop) QCOMPARE(mNumSelfHandleChanged, 1); QCOMPARE(mConn->selfContact()->id(), QString::fromLatin1("irene@example.com")); QCOMPARE(mConn->selfContact()->handle()[0], mConn->selfHandle()); // Last but not least, try two consequtive changes tp_tests_simple_connection_set_identifier(simpleConnService, "me@example.com"); tp_tests_simple_connection_set_identifier(simpleConnService, "myself@example.com"); // We should receive two more self handle changes in total, and one self contact change for // each mainloop run QCOMPARE(mLoop->exec(), 0); QVERIFY(mConn->isValid()); QCOMPARE(mConn->selfContact()->id(), QString::fromLatin1("me@example.com")); QCOMPARE(mLoop->exec(), 0); QVERIFY(mConn->isValid()); QCOMPARE(mConn->selfContact()->id(), QString::fromLatin1("myself@example.com")); QCOMPARE(mNumSelfHandleChanged, 3); } void TestConnIntrospectCornercases::testSlowpath() { gchar *name; gchar *connPath; GError *error = 0; TpTestsBug16307Connection *bugConnService = TP_TESTS_BUG16307_CONNECTION( g_object_new( TP_TESTS_TYPE_BUG16307_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL)); QVERIFY(bugConnService != 0); mConnService = TP_BASE_CONNECTION(bugConnService); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(mConnService, "simple", &name, &connPath, &error)); QVERIFY(error == 0); mConn = Connection::create(QLatin1String(name), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); g_free(name); name = 0; g_free(connPath); connPath = 0; PendingOperation *op = mConn->becomeReady(); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); tp_tests_bug16307_connection_inject_get_status_return(bugConnService); QCOMPARE(mLoop->exec(), 0); QCOMPARE(op->isFinished(), true); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusConnected)); } void TestConnIntrospectCornercases::testStatusChange() { gchar *name; gchar *connPath; GError *error = 0; TpTestsSimpleConnection *simpleConnService = TP_TESTS_SIMPLE_CONNECTION( g_object_new( TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL)); QVERIFY(simpleConnService != 0); mConnService = TP_BASE_CONNECTION(simpleConnService); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(mConnService, "simple", &name, &connPath, &error)); QVERIFY(error == 0); mConn = Connection::create(QLatin1String(name), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); g_free(name); name = 0; g_free(connPath); connPath = 0; // Make core ready first, because Connection has internal handling for the status changing // during core introspection, and we rather want to test the more general ReadinessHelper // mechanism PendingOperation *op = mConn->becomeReady(); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(op->isFinished(), true); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusDisconnected)); // Now, begin making Connected ready op = mConn->becomeReady(Connection::FeatureConnected); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); mLoop->processEvents(); // But disturb it by changing the status! TpHandleRepoIface *contact_repo = tp_base_connection_get_handles(mConnService, TP_HANDLE_TYPE_CONTACT); mConnService->self_handle = tp_handle_ensure(contact_repo, "me@example.com", NULL, NULL); tp_base_connection_change_status(mConnService, TP_CONNECTION_STATUS_CONNECTING, TP_CONNECTION_STATUS_REASON_REQUESTED); // Do that again! (The earlier op stil hasn't finished by definition) mConn->becomeReady(Features() << Connection::FeatureConnected); tp_base_connection_change_status(mConnService, TP_CONNECTION_STATUS_CONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); QCOMPARE(mLoop->exec(), 0); QCOMPARE(op->isFinished(), true); QCOMPARE(mConn->isReady(Connection::FeatureCore), true); QCOMPARE(mConn->isReady(Connection::FeatureConnected), true); QCOMPARE(static_cast(mConn->status()), static_cast(ConnectionStatusConnected)); } void TestConnIntrospectCornercases::testNoRoster() { gchar *name; gchar *connPath; GError *error = 0; TpTestsContactsNorosterConnection *connService = TP_TESTS_CONTACTS_NOROSTER_CONNECTION( g_object_new( TP_TESTS_TYPE_CONTACTS_NOROSTER_CONNECTION, "account", "me@example.com", "protocol", "contacts-noroster", NULL)); QVERIFY(connService != 0); mConnService = TP_BASE_CONNECTION(connService); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(mConnService, "simple", &name, &connPath, &error)); QVERIFY(error == 0); mConn = Connection::create(QLatin1String(name), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); g_free(name); name = 0; g_free(connPath); connPath = 0; PendingOperation *op = mConn->lowlevel()->requestConnect(); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->status(), Tp::ConnectionStatusConnected); op = mConn->becomeReady(Connection::FeatureRoster); QVERIFY(connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(op->isFinished()); QVERIFY(mConn->isReady(Connection::FeatureRoster)); QVERIFY(!mConn->actualFeatures().contains(Connection::FeatureRoster)); } void TestConnIntrospectCornercases::cleanup() { if (mConn) { QVERIFY(mConnService != 0); // Disconnect and wait for invalidation tp_base_connection_change_status( mConnService, TP_CONNECTION_STATUS_DISCONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); QVERIFY(connect(mConn.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(expectConnInvalidated()))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mConn->isValid()); processDBusQueue(mConn.data()); mConn.reset(); } if (mConnService != 0) { g_object_unref(mConnService); mConnService = 0; } mStatuses.clear(); mNumSelfHandleChanged = 0; cleanupImpl(); } void TestConnIntrospectCornercases::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestConnIntrospectCornercases) #include "_gen/conn-introspect-cornercases.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/chan-group.cpp0000644000175100017520000004421212530423576022573 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestChanGroup : public Test { Q_OBJECT public: TestChanGroup(QObject *parent = 0) : Test(parent), mConn(0), mChanService(0), mGotGroupFlagsChanged(false), mGroupFlags((ChannelGroupFlags) 0), mGroupFlagsAdded((ChannelGroupFlags) 0), mGroupFlagsRemoved((ChannelGroupFlags) 0) { } protected Q_SLOTS: void onGroupMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void onGroupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed); private Q_SLOTS: void initTestCase(); void init(); void testCreateChannel(); void testMCDGroup(); void testPropertylessGroup(); void testLeave(); void testLeaveWithFallback(); void testGroupFlagsChange(); void cleanup(); void cleanupTestCase(); private: void debugContacts(); void commonTest(gboolean properties); TestConnHelper *mConn; TpTestsTextChannelGroup *mChanService; ChannelPtr mChan; QString mChanObjectPath; QList mContacts; Contacts mChangedCurrent; Contacts mChangedLP; Contacts mChangedRP; Contacts mChangedRemoved; Channel::GroupMemberChangeDetails mDetails; UIntList mInitialMembers; bool mGotGroupFlagsChanged; ChannelGroupFlags mGroupFlags; ChannelGroupFlags mGroupFlagsAdded; ChannelGroupFlags mGroupFlagsRemoved; }; void TestChanGroup::onGroupMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { qDebug() << "group members changed"; mChangedCurrent = groupMembersAdded; mChangedLP = groupLocalPendingMembersAdded; mChangedRP = groupRemotePendingMembersAdded; mChangedRemoved = groupMembersRemoved; mDetails = details; debugContacts(); mLoop->exit(0); } void TestChanGroup::onGroupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed) { qDebug() << "group flags changed"; mGotGroupFlagsChanged = true; mGroupFlags = flags; mGroupFlagsAdded = added; mGroupFlagsRemoved = removed; } void TestChanGroup::debugContacts() { qDebug() << "contacts on group:"; Q_FOREACH (const ContactPtr &contact, mChan->groupContacts()) { qDebug() << " " << contact->id(); } qDebug() << "local pending contacts on group:"; Q_FOREACH (const ContactPtr &contact, mChan->groupLocalPendingContacts()) { qDebug() << " " << contact->id(); } qDebug() << "remote pending contacts on group:"; Q_FOREACH (const ContactPtr &contact, mChan->groupRemotePendingContacts()) { qDebug() << " " << contact->id(); } } void TestChanGroup::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("chan-group"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", "me@example.com", "protocol", "example-contact-list", "simulation-delay", 1, NULL); QCOMPARE(mConn->connect(Connection::FeatureSelfContact), true); QStringList ids; ids << QLatin1String("sjoerd@example.com"); // Check that the contact is properly built mContacts = mConn->contacts(ids); QCOMPARE(mContacts.size(), 1); QVERIFY(!mContacts.first().isNull()); } void TestChanGroup::init() { initImpl(); mChangedCurrent.clear(); mChangedLP.clear(); mChangedRP.clear(); mChangedRemoved.clear(); mDetails = Channel::GroupMemberChangeDetails(); mGotGroupFlagsChanged = false; mGroupFlags = (ChannelGroupFlags) 0; mGroupFlagsAdded = (ChannelGroupFlags) 0; mGroupFlagsRemoved = (ChannelGroupFlags) 0; } void TestChanGroup::testCreateChannel() { mChan = mConn->ensureChannel(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST, Tp::HandleTypeGroup, QLatin1String("Cambridge")); QVERIFY(mChan); mChanObjectPath = mChan->objectPath(); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); QCOMPARE(static_cast(mChan->targetHandleType()), static_cast(Tp::HandleTypeGroup)); QVERIFY(mChan->targetContact().isNull()); QCOMPARE(mChan->isRequested(), false); QVERIFY(mChan->groupContacts().contains(mContacts.first())); Q_FOREACH (ContactPtr contact, mChan->groupContacts()) mInitialMembers.push_back(contact->handle()[0]); QCOMPARE(mChan->groupFlags(), ChannelGroupFlagCanAdd | ChannelGroupFlagCanRemove | ChannelGroupFlagProperties | ChannelGroupFlagMembersChangedDetailed); QCOMPARE(mChan->groupCanAddContacts(), true); QCOMPARE(mChan->groupCanAddContactsWithMessage(), false); QCOMPARE(mChan->groupCanAcceptContactsWithMessage(), false); QCOMPARE(mChan->groupCanRescindContacts(), false); QCOMPARE(mChan->groupCanRescindContactsWithMessage(), false); QCOMPARE(mChan->groupCanRemoveContacts(), true); QCOMPARE(mChan->groupCanRemoveContactsWithMessage(), false); QCOMPARE(mChan->groupCanRejectContactsWithMessage(), false); QCOMPARE(mChan->groupCanDepartWithMessage(), false); QCOMPARE(mChan->groupIsSelfContactTracked(), true); debugContacts(); QCOMPARE(mChan->groupContacts().count(), 4); QVERIFY(connect(mChan.data(), SIGNAL(groupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)))); QList toRemove; toRemove.append(mContacts[0]); connect(mChan->groupRemoveContacts(toRemove, QLatin1String("I want to remove some of them")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *))); QCOMPARE(mLoop->exec(), 0); while (mChangedRemoved.isEmpty()) { QCOMPARE(mLoop->exec(), 0); } QVERIFY(mChangedRemoved.contains(mContacts[0])); QCOMPARE(mChan->groupContacts().count(), 3); } void TestChanGroup::testMCDGroup() { commonTest(true); } void TestChanGroup::testPropertylessGroup() { commonTest(false); } void TestChanGroup::commonTest(gboolean properties) { mChanObjectPath = QString(QLatin1String("%1/ChannelForTpQtMCDTest%2")) .arg(mConn->objectPath()) .arg(QLatin1String(properties ? "props" : "")); QByteArray chanPathLatin1(mChanObjectPath.toLatin1()); mChanService = TP_TESTS_TEXT_CHANNEL_GROUP(g_object_new( TP_TESTS_TYPE_TEXT_CHANNEL_GROUP, "connection", mConn->service(), "object-path", chanPathLatin1.data(), "detailed", TRUE, "properties", properties, NULL)); QVERIFY(mChanService != 0); TpIntSet *members = tp_intset_sized_new(mInitialMembers.length()); Q_FOREACH (uint handle, mInitialMembers) tp_intset_add(members, handle); QVERIFY(tp_group_mixin_change_members(G_OBJECT(mChanService), "be there or be []", members, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE)); tp_intset_destroy(members); mChan = Channel::create(mConn->client(), mChanObjectPath, QVariantMap()); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); QCOMPARE(mChan->isRequested(), true); QVERIFY(mChan->groupContacts().contains(mContacts.first())); Q_FOREACH (ContactPtr contact, mChan->groupContacts()) mInitialMembers.push_back(contact->handle()[0]); QCOMPARE(mChan->groupCanAddContacts(), false); QCOMPARE(mChan->groupCanRemoveContacts(), false); debugContacts(); QCOMPARE(mChan->groupContacts().count(), 4); QVERIFY(connect(mChan.data(), SIGNAL(groupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)))); TpIntSet *remove = tp_intset_new_containing(mContacts[0]->handle()[0]); QVERIFY(tp_group_mixin_change_members(G_OBJECT(mChanService), "be a []", NULL, remove, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE)); tp_intset_destroy(remove); while (mChangedRemoved.isEmpty()) { QCOMPARE(mLoop->exec(), 0); } QVERIFY(mChangedRemoved.contains(mContacts[0])); QCOMPARE(mChan->groupContacts().count(), 3); } void TestChanGroup::testLeave() { mChan = mConn->ensureChannel(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST, Tp::HandleTypeGroup, QLatin1String("Cambridge")); QVERIFY(mChan); mChanObjectPath = mChan->objectPath(); // channel is not ready yet, it should fail QVERIFY(connect(mChan->groupAddContacts(QList() << mConn->client()->selfContact()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_AVAILABLE); QVERIFY(!mLastErrorMessage.isEmpty()); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); // passing no contact should also fail QVERIFY(connect(mChan->groupAddContacts(QList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_INVALID_ARGUMENT); QVERIFY(!mLastErrorMessage.isEmpty()); // passing an invalid contact too QVERIFY(connect(mChan->groupAddContacts(QList() << ContactPtr()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_INVALID_ARGUMENT); QVERIFY(!mLastErrorMessage.isEmpty()); // now it should work QVERIFY(connect(mChan->groupAddContacts(QList() << mConn->client()->selfContact()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); QString leaveMessage(QLatin1String("I'm sick of this lot")); QVERIFY(connect(mChan->requestLeave(leaveMessage), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mChan->groupContacts().contains(mConn->client()->selfContact())); // We left gracefully, which we have details for. // Unfortunately, the test CM used here ignores the message and the reason specified, so can't // verify those. When the leave code was originally written however, it was able to carry out // the almost-impossible mission of delivering the message and reason to the CM admirably, as // verified by dbus-monitor. QVERIFY(mChan->groupSelfContactRemoveInfo().isValid()); QVERIFY(mChan->groupSelfContactRemoveInfo().hasActor()); QVERIFY(mChan->groupSelfContactRemoveInfo().actor() == mConn->client()->selfContact()); // Another leave should no-op succeed, because we aren't a member QVERIFY(connect(mChan->requestLeave(leaveMessage), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestChanGroup::testLeaveWithFallback() { mChanObjectPath = QString(QLatin1String("%1/ChannelForTpQtLeaveTestFallback")) .arg(mConn->objectPath()); QByteArray chanPathLatin1(mChanObjectPath.toLatin1()); // The text channel doesn't support removing, so will trigger the fallback mChanService = TP_TESTS_TEXT_CHANNEL_GROUP(g_object_new( TP_TESTS_TYPE_TEXT_CHANNEL_GROUP, "connection", mConn->service(), "object-path", chanPathLatin1.data(), "detailed", TRUE, "properties", TRUE, NULL)); QVERIFY(mChanService != 0); TpIntSet *members = tp_intset_sized_new(1); tp_intset_add(members, mConn->client()->selfHandle()); QVERIFY(tp_group_mixin_change_members(G_OBJECT(mChanService), "be there or be []", members, NULL, NULL, NULL, 0, TP_CHANNEL_GROUP_CHANGE_REASON_NONE)); tp_intset_destroy(members); mChan = Channel::create(mConn->client(), mChanObjectPath, QVariantMap()); QVERIFY(mChan); // Should fail, because not ready (and thus we can't know how to leave) QVERIFY(connect(mChan->requestLeave(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); // Should now work QString leaveMessage(QLatin1String("I'm sick of this lot")); QVERIFY(connect(mChan->requestLeave(leaveMessage), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // The Close fallback was triggered, so we weren't removed gracefully and the details were // lost QVERIFY(!mChan->groupSelfContactRemoveInfo().hasMessage()); } void TestChanGroup::testGroupFlagsChange() { TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(contactRepo, "someone@localhost", 0, 0); QString textChanPath = mConn->objectPath() + QLatin1String("/Channel"); QByteArray chanPath(textChanPath.toLatin1()); TpTestsPropsGroupTextChannel *textChanService = TP_TESTS_PROPS_GROUP_TEXT_CHANNEL(g_object_new( TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); TextChannelPtr textChan = TextChannel::create(mConn->client(), textChanPath, QVariantMap()); QVERIFY(connect(textChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(textChan->isReady(), true); QVERIFY(textChan->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)); QVERIFY(!(textChan->groupFlags() & ChannelGroupFlagCanAdd)); QVERIFY(!textChan->canInviteContacts()); QVERIFY(connect(textChan.data(), SIGNAL(groupFlagsChanged(Tp::ChannelGroupFlags,Tp::ChannelGroupFlags,Tp::ChannelGroupFlags)), SLOT(onGroupFlagsChanged(Tp::ChannelGroupFlags,Tp::ChannelGroupFlags,Tp::ChannelGroupFlags)))); tp_group_mixin_change_flags(G_OBJECT(textChanService), TP_CHANNEL_GROUP_FLAG_CAN_ADD, (TpChannelGroupFlags) 0); processDBusQueue(mConn->client().data()); while (!mGotGroupFlagsChanged) { mLoop->processEvents(); } QCOMPARE(textChan->groupFlags(), mGroupFlags); QVERIFY(textChan->groupFlags() & ChannelGroupFlagCanAdd); QVERIFY(textChan->canInviteContacts()); QCOMPARE(mGroupFlagsAdded, ChannelGroupFlagCanAdd); QCOMPARE(mGroupFlagsRemoved, (ChannelGroupFlags) 0); } void TestChanGroup::cleanup() { if (mChanService) { g_object_unref(mChanService); mChanService = 0; } // Avoid D-Bus event leak from one test case to another - I've seen this with the // testCreateChannel groupMembersChanged leaking at least processDBusQueue(mConn->client().data()); mChan.reset(); cleanupImpl(); } void TestChanGroup::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestChanGroup) #include "_gen/chan-group.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/chan-basics.cpp0000644000175100017520000002274512530423576022712 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestChanBasics : public Test { Q_OBJECT public: TestChanBasics(QObject *parent = 0) : Test(parent), mConn(0), mHandle(0) { } protected Q_SLOTS: void expectInvalidated(); void expectPendingHandleFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testRequestHandle(); void testCreateChannel(); void testEnsureChannel(); void testFallback(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; ChannelPtr mChan; QString mChanObjectPath; uint mHandle; }; void TestChanBasics::expectInvalidated() { mLoop->exit(0); } void TestChanBasics::expectPendingHandleFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingHandles *pending = qobject_cast(op); mHandle = pending->handles().at(0); mLoop->exit(0); } void TestChanBasics::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("chan-basics"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", "me@example.com", "protocol", "contacts", NULL); QCOMPARE(mConn->connect(), true); QCOMPARE(mConn->enableFeatures(Connection::FeatureSelfContact), true); } void TestChanBasics::init() { initImpl(); mChan.reset(); } void TestChanBasics::testRequestHandle() { // Test identifiers QStringList ids = QStringList() << QLatin1String("alice"); // Request handles for the identifiers and wait for the request to process PendingHandles *pending = mConn->client()->lowlevel()->requestHandles(Tp::HandleTypeContact, ids); QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingHandleFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(disconnect(pending, SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(expectPendingHandleFinished(Tp::PendingOperation*)))); QVERIFY(mHandle != 0); } void TestChanBasics::testCreateChannel() { mChan = mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_TEXT, Tp::HandleTypeContact, mHandle); QVERIFY(mChan); mChanObjectPath = mChan->objectPath(); QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); QCOMPARE(mChan->isRequested(), true); QCOMPARE(mChan->channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QCOMPARE(mChan->groupCanAddContacts(), false); QCOMPARE(mChan->groupCanRemoveContacts(), false); QCOMPARE(mChan->initiatorContact()->id(), QString(QLatin1String("me@example.com"))); QCOMPARE(mChan->groupSelfContact()->id(), QString(QLatin1String("me@example.com"))); QCOMPARE(mChan->groupSelfContact(), mConn->client()->selfContact()); QCOMPARE(mChan->targetId(), QString::fromLatin1("alice")); QVERIFY(!mChan->targetContact().isNull()); QCOMPARE(mChan->targetContact()->id(), QString::fromLatin1("alice")); QStringList ids; Q_FOREACH (const ContactPtr &contact, mChan->groupContacts()) { ids << contact->id(); QVERIFY(contact == mChan->groupSelfContact() || contact == mChan->targetContact()); } ids.sort(); QStringList toCheck = QStringList() << QLatin1String("me@example.com") << QLatin1String("alice"); toCheck.sort(); QCOMPARE(ids, toCheck); ChannelPtr chan = Channel::create(mConn->client(), mChan->objectPath(), mChan->immutableProperties()); QVERIFY(chan); QVERIFY(chan->isValid()); QVERIFY(connect(chan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(chan->isReady(), true); QCOMPARE(chan->channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); // create an invalid connection to use as the channel connection ConnectionPtr conn = Connection::create(QLatin1String(""), QLatin1String("/"), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(conn); QVERIFY(!conn->isValid()); chan = Channel::create(conn, mChan->objectPath(), mChan->immutableProperties()); QVERIFY(chan); QVERIFY(!chan->isValid()); QVERIFY(connect(chan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, chan->invalidationReason()); QCOMPARE(mLastErrorMessage, chan->invalidationMessage()); QCOMPARE(chan->channelType(), QString()); } void TestChanBasics::testEnsureChannel() { ChannelPtr chan = mConn->ensureChannel(TP_QT_IFACE_CHANNEL_TYPE_TEXT, Tp::HandleTypeContact, mHandle); QVERIFY(chan); QCOMPARE(chan->objectPath(), mChanObjectPath); mChan = chan; QVERIFY(connect(mChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isReady(), true); QCOMPARE(mChan->isRequested(), true); QCOMPARE(mChan->groupCanAddContacts(), false); QCOMPARE(mChan->groupCanRemoveContacts(), false); QCOMPARE(mChan->initiatorContact()->id(), QString(QLatin1String("me@example.com"))); QCOMPARE(mChan->groupSelfContact()->id(), QString(QLatin1String("me@example.com"))); QCOMPARE(mChan->groupSelfContact(), mConn->client()->selfContact()); QStringList ids; Q_FOREACH (const ContactPtr &contact, mChan->groupContacts()) { ids << contact->id(); } ids.sort(); QStringList toCheck = QStringList() << QLatin1String("me@example.com") << QLatin1String("alice"); toCheck.sort(); QCOMPARE(ids, toCheck); QVERIFY(connect(mChan->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isValid(), false); // calling requestClose again should be no-op QVERIFY(connect(mChan->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->isValid(), false); } void TestChanBasics::testFallback() { TpHandleRepoIface *contactRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(contactRepo, "someone@localhost", 0, 0); QString textChanPath = mConn->objectPath() + QLatin1String("/Channel"); QByteArray chanPath(textChanPath.toLatin1()); TpTestsTextChannelNull *textChanService = TP_TESTS_TEXT_CHANNEL_NULL (g_object_new ( TP_TESTS_TYPE_TEXT_CHANNEL_NULL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); TextChannelPtr textChan = TextChannel::create(mConn->client(), textChanPath, QVariantMap()); QVERIFY(connect(textChan->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(textChan->isReady(), true); QCOMPARE(textChanService->get_channel_type_called, static_cast(1)); QCOMPARE(textChanService->get_interfaces_called, static_cast(1)); QCOMPARE(textChanService->get_handle_called, static_cast(1)); QCOMPARE(textChan->channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QVERIFY(textChan->interfaces().isEmpty()); QCOMPARE(textChan->targetHandleType(), Tp::HandleTypeContact); QCOMPARE(textChan->targetHandle(), handle); // we have no Group support, groupAddContacts should fail QVERIFY(connect(textChan->groupAddContacts(QList() << mConn->client()->selfContact()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED); QVERIFY(!mLastErrorMessage.isEmpty()); } void TestChanBasics::cleanup() { cleanupImpl(); } void TestChanBasics::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; if (mChan) { QVERIFY(!mChan->isValid()); QVERIFY(mChan->invalidationReason() == TP_QT_ERROR_CANCELLED || mChan->invalidationReason() == TP_QT_ERROR_ORPHANED); } cleanupTestCaseImpl(); } QTEST_MAIN(TestChanBasics) #include "_gen/chan-basics.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-roster-groups-legacy.cpp0000644000175100017520000010055112530423576025557 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestConnRosterGroupsLegacy : public Test { Q_OBJECT public: TestConnRosterGroupsLegacy(QObject *parent = 0) : Test(parent), mConnService(0), mContactsAddedToGroup(0), mContactsRemovedFromGroup(0) { } protected Q_SLOTS: void onGroupAdded(const QString &group); void onGroupRemoved(const QString &group); void onContactAddedToGroup(const QString &group); void onContactRemovedFromGroup(const QString &group); void expectConnInvalidated(); void expectContact(Tp::PendingOperation*); void exitOnStateSuccess(Tp::ContactListState); private Q_SLOTS: void initTestCase(); void init(); void testGroupsAfterStateChange(); void testIntrospectAfterStateChange(); void testRosterGroups(); void testNotADeathTrap(); void cleanup(); void cleanupTestCase(); private: QString mConnName, mConnPath; ExampleContactListConnection *mConnService; ConnectionPtr mConn; ContactPtr mContact; QString mGroupAdded; QString mGroupRemoved; int mContactsAddedToGroup; int mContactsRemovedFromGroup; bool mConnInvalidated; }; void TestConnRosterGroupsLegacy::onGroupAdded(const QString &group) { mGroupAdded = group; mLoop->exit(0); } void TestConnRosterGroupsLegacy::onGroupRemoved(const QString &group) { mGroupRemoved = group; mLoop->exit(0); } void TestConnRosterGroupsLegacy::onContactAddedToGroup(const QString &group) { mContactsAddedToGroup++; mLoop->exit(0); } void TestConnRosterGroupsLegacy::onContactRemovedFromGroup(const QString &group) { mContactsRemovedFromGroup++; mLoop->exit(0); } void TestConnRosterGroupsLegacy::expectConnInvalidated() { mConnInvalidated = true; mLoop->exit(0); } void TestConnRosterGroupsLegacy::expectContact(Tp::PendingOperation *op) { PendingContacts *contacts = qobject_cast(op); QVERIFY(contacts != 0); QVERIFY(contacts->isValid()); QCOMPARE(contacts->contacts().length(), 1); mContact = contacts->contacts()[0]; mLoop->exit(0); } void TestConnRosterGroupsLegacy::exitOnStateSuccess(Tp::ContactListState state) { qDebug() << "got contact list state" << state; if (state == ContactListStateSuccess) { mLoop->exit(0); } } void TestConnRosterGroupsLegacy::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-roster-groups"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); } void TestConnRosterGroupsLegacy::init() { gchar *name; gchar *connPath; GError *error = 0; mConnService = EXAMPLE_CONTACT_LIST_CONNECTION(g_object_new( EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", "me@example.com", "simulation-delay", 0, "protocol", "example-contact-list", NULL)); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService), "foo", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); initImpl(); mConnInvalidated = false; } void TestConnRosterGroupsLegacy::testGroupsAfterStateChange() { // Create a conn and make the roster groups related features ready mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); ContactManagerPtr contactManager = mConn->contactManager(); Features features = Features() << Connection::FeatureRoster << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), true); // Now start connecting it, and wait for the ContactManager state to turn to Success QVERIFY(connect(contactManager.data(), SIGNAL(stateChanged(Tp::ContactListState)), SLOT(exitOnStateSuccess(Tp::ContactListState)))); mConn->lowlevel()->requestConnect(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(contactManager->state()), static_cast(ContactListStateSuccess)); // The conn should be valid and have the roster groups features ready when it emits Success QVERIFY(mConn->isValid()); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), true); // We should have all the group data downloaded now, check for that QStringList expectedGroups; expectedGroups << QLatin1String("Cambridge") << QLatin1String("Francophones") << QLatin1String("Montreal"); expectedGroups.sort(); QStringList groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); // Cambridge { QStringList expectedContacts; expectedContacts << QLatin1String("geraldine@example.com") << QLatin1String("helen@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("sjoerd@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Cambridge"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } // Francophones { QStringList expectedContacts; expectedContacts << QLatin1String("olivier@example.com") << QLatin1String("geraldine@example.com") << QLatin1String("guillaume@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Francophones"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } // Montreal { QStringList expectedContacts; expectedContacts << QLatin1String("olivier@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Montreal"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } } void TestConnRosterGroupsLegacy::testIntrospectAfterStateChange() { // Create a conn and make the roster feature ready mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); ContactManagerPtr contactManager = mConn->contactManager(); Features features = Features() << Connection::FeatureRoster; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), false); // Now start connecting it, and wait for the ContactManager state to turn to Success QVERIFY(connect(contactManager.data(), SIGNAL(stateChanged(Tp::ContactListState)), SLOT(exitOnStateSuccess(Tp::ContactListState)))); mConn->lowlevel()->requestConnect(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(contactManager->state()), static_cast(ContactListStateSuccess)); // The conn should be valid and have the roster feature ready when it emits Success, but not // RosterGroups because we didn't request it QVERIFY(mConn->isValid()); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), false); // We should have roster contacts now, but no groups QVERIFY(!contactManager->allKnownContacts().isEmpty()); QVERIFY(contactManager->allKnownGroups().isEmpty()); // Make RosterGroups ready too features = Features() << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), true); // We should still have the contacts, and the state should be success QVERIFY(!contactManager->allKnownContacts().isEmpty()); QCOMPARE(static_cast(contactManager->state()), static_cast(ContactListStateSuccess)); // We should have all the group data downloaded now, check for that QStringList expectedGroups; expectedGroups << QLatin1String("Cambridge") << QLatin1String("Francophones") << QLatin1String("Montreal"); expectedGroups.sort(); QStringList groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); // Cambridge { QStringList expectedContacts; expectedContacts << QLatin1String("geraldine@example.com") << QLatin1String("helen@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("sjoerd@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Cambridge"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } } void TestConnRosterGroupsLegacy::testRosterGroups() { mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(connect(mConn->lowlevel()->requestConnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(), true); QCOMPARE(mConn->status(), ConnectionStatusConnected); Features features = Features() << Connection::FeatureRoster << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); ContactManagerPtr contactManager = mConn->contactManager(); QStringList expectedGroups; expectedGroups << QLatin1String("Cambridge") << QLatin1String("Francophones") << QLatin1String("Montreal"); expectedGroups.sort(); QStringList groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); // Cambridge { QStringList expectedContacts; expectedContacts << QLatin1String("geraldine@example.com") << QLatin1String("helen@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("sjoerd@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Cambridge"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } // Francophones { QStringList expectedContacts; expectedContacts << QLatin1String("olivier@example.com") << QLatin1String("geraldine@example.com") << QLatin1String("guillaume@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Francophones"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } // Montreal { QStringList expectedContacts; expectedContacts << QLatin1String("olivier@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Montreal"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } QString group(QLatin1String("foo")); QVERIFY(contactManager->groupContacts(group).isEmpty()); // add group foo QVERIFY(connect(contactManager.data(), SIGNAL(groupAdded(const QString&)), SLOT(onGroupAdded(const QString&)))); QVERIFY(connect(contactManager->addGroup(group), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mGroupAdded.isEmpty()) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mGroupAdded, group); expectedGroups << group; expectedGroups.sort(); groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); // add Montreal contacts to group foo Contacts contacts = contactManager->groupContacts(QLatin1String("Montreal")); Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(connect(contact.data(), SIGNAL(addedToGroup(const QString&)), SLOT(onContactAddedToGroup(const QString&)))); } QVERIFY(connect(contactManager->addContactsToGroup(group, contacts.toList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mContactsAddedToGroup != contacts.size()) { QCOMPARE(mLoop->exec(), 0); } Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(contact->groups().contains(group)); } // remove all contacts from group foo contacts = contactManager->groupContacts(group); Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(connect(contact.data(), SIGNAL(removedFromGroup(const QString&)), SLOT(onContactRemovedFromGroup(const QString&)))); } QVERIFY(connect(contactManager->removeContactsFromGroup(group, contacts.toList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mContactsRemovedFromGroup != contacts.size()) { QCOMPARE(mLoop->exec(), 0); } Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(!contact->groups().contains(group)); } // add group foo QVERIFY(connect(contactManager.data(), SIGNAL(groupRemoved(const QString&)), SLOT(onGroupRemoved(const QString&)))); QVERIFY(connect(contactManager->removeGroup(group), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mGroupRemoved.isEmpty()) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mGroupRemoved, group); expectedGroups.removeOne(group); expectedGroups.sort(); groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); } /** * Verify that ContactManager isn't a death-trap. * * Background: Connection::contactManager() used to unpredictably waver between NULL and the real * manager when the connection was in the process of being disconnected / otherwise invalidated, * which led to a great many segfaults, which was especially unfortunate considering the * ContactManager methods didn't do much any checks at all. */ void TestConnRosterGroupsLegacy::testNotADeathTrap() { mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); // Check that the contact manager doesn't crash, but returns an error (because the conn isn't // ready) QVERIFY(!mConn->contactManager().isNull()); QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->lowlevel()->requestConnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(), true); QCOMPARE(mConn->status(), ConnectionStatusConnected); // As the conn is now ready, the contact building functions shouldn't return an error now QVERIFY(!mConn->contactManager().isNull()); QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->contactsForHandles(UIntList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->upgradeContacts(QList(), Features()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // In fact, let's build a contact for future use QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers( QStringList() << QLatin1String("friendorfoe@example.com")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectContact(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mContact->id() == QLatin1String("friendorfoe@example.com")); // Roster operations SHOULD still fail though, as FeatureRoster isn't ready QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->blockContacts(QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Now, make Roster ready Features features = Features() << Connection::FeatureRoster; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); // The roster functions should work now QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mContact->subscriptionState() != Contact::PresenceStateNo); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mContact->subscriptionState(), Contact::PresenceStateNo); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // The test CM doesn't support block, so it will never be successful // ... but still not the RosterGroup ones QVERIFY(connect(mConn->contactManager()->addGroup(QLatin1String("Those who failed")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeGroup(QLatin1String("Those who failed")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->addContactsToGroup(QLatin1String("Those who failed"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeContactsFromGroup(QLatin1String("Those who failed"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Make RosterGroups ready too features = Features() << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); // Now that Core, Roster and RosterGroups are all ready, everything should work QVERIFY(!mConn->contactManager().isNull()); QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->contactsForHandles(UIntList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->upgradeContacts(QList(), Features()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mContact->subscriptionState() != Contact::PresenceStateNo); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mContact->subscriptionState(), Contact::PresenceStateNo); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // The test CM doesn't support block, so it will never be successful QVERIFY(connect(mConn->contactManager()->addGroup(QLatin1String("My successful entourage")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); qDebug() << "waiting for group to be added"; // FIXME: Remove this once fd.o #29728 is fixed while (!mConn->contactManager()->allKnownGroups().contains(QLatin1String("My successful entourage"))) { mLoop->processEvents(); } qDebug() << "group has been added"; QVERIFY(connect(mConn->contactManager()->addContactsToGroup(QLatin1String("My successful entourage"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeContactsFromGroup(QLatin1String("My successful entourage"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeGroup(QLatin1String("My successful entourage")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Now, invalidate the connection by disconnecting it QVERIFY(connect(mConn.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(expectConnInvalidated()))); mConn->lowlevel()->requestDisconnect(); // Check that contactManager doesn't go NULL in the process of the connection going invalidated do { QVERIFY(!mConn->contactManager().isNull()); mLoop->processEvents(); } while (!mConnInvalidated); QVERIFY(!mConn->isValid()); QCOMPARE(mConn->status(), ConnectionStatusDisconnected); // Now that the conn is invalidated NOTHING should work anymore QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->contactsForHandles(UIntList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->upgradeContacts(QList(), Features()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->blockContacts(QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->addGroup(QLatin1String("Future failures")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeGroup(QLatin1String("Future failures")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->addContactsToGroup(QLatin1String("Future failures"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeContactsFromGroup(QLatin1String("Future failures"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestConnRosterGroupsLegacy::cleanup() { mContact.reset(); if (mConn && mConn->requestedFeatures().contains(Connection::FeatureCore)) { QVERIFY(mConnService != NULL); if (TP_BASE_CONNECTION(mConnService)->status != TP_CONNECTION_STATUS_DISCONNECTED) { tp_base_connection_change_status(TP_BASE_CONNECTION(mConnService), TP_CONNECTION_STATUS_DISCONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); } while (mConn->isValid()) { mLoop->processEvents(); } } mConn.reset(); if (mConnService != 0) { g_object_unref(mConnService); mConnService = 0; } cleanupImpl(); } void TestConnRosterGroupsLegacy::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestConnRosterGroupsLegacy) #include "_gen/conn-roster-groups-legacy.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/account-set.cpp0000644000175100017520000003702512530423576022761 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestAccountSet : public Test { Q_OBJECT public: TestAccountSet(QObject *parent = 0) : Test(parent), mConn(0) { } protected Q_SLOTS: void onAccountAdded(const Tp::AccountPtr &); void onAccountRemoved(const Tp::AccountPtr &); void onCreateAccountFinished(Tp::PendingOperation *op); private Q_SLOTS: void initTestCase(); void init(); void testBasics(); void testFilters(); void cleanup(); void cleanupTestCase(); private: void createAccount(const char *cmName, const char *protocolName, const char *displayName, const QVariantMap ¶meters); void removeAccount(const AccountPtr &acc); QStringList pathsForAccounts(const QList &list); QStringList pathsForAccounts(const Tp::AccountSetPtr &set); AccountManagerPtr mAM; TestConnHelper *mConn; AccountPtr mAccountCreated; AccountPtr mAccountAdded; AccountPtr mAccountRemoved; }; void TestAccountSet::onAccountAdded(const Tp::AccountPtr &acc) { Q_UNUSED(acc); mAccountAdded = acc; qDebug() << "ACCOUNT ADDED:" << acc->objectPath(); } void TestAccountSet::onAccountRemoved(const Tp::AccountPtr &acc) { Q_UNUSED(acc); mAccountRemoved = acc; qDebug() << "ACCOUNT REMOVED:" << acc->objectPath(); } void TestAccountSet::onCreateAccountFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingAccount *pa = qobject_cast(op); mAccountCreated = pa->account(); // the account should appear in the valid accounts set first, so mAccountAdded must be non-null QVERIFY(mAccountAdded); QVERIFY(mAccountCreated); qDebug() << "ACCOUNT CREATED:" << mAccountAdded->objectPath(); mLoop->exit(0); } void TestAccountSet::createAccount(const char *cmName, const char *protocolName, const char *displayName, const QVariantMap ¶meters) { AccountSetPtr accounts = mAM->validAccounts(); // AccountSet listen to AM::newAccount to check for accounts matching its filter. // // PendingAccount calls AM.CreateAccount and waits for the call to finish. // Once the call is finished, if everything is fine, it checks if the account was already added // to the AM or waits till it gets added by connecting to AM::newAccount. // Once the newly created account appears in the AM, it signals PendingAccount::finished. // // So the signal ordering depends on whether the PendingAccount was created before the // AccountSet or not. // // In this case where we are creating the AccountSet before calling Am::createAccount, // the account will first appear in the set via AccountSet::accountAdded and after that the // PendingAccount operation will finish. mAccountCreated.reset(); mAccountAdded.reset(); QVERIFY(connect(accounts.data(), SIGNAL(accountAdded(Tp::AccountPtr)), SLOT(onAccountAdded(Tp::AccountPtr)))); PendingAccount *pacc = mAM->createAccount(QLatin1String(cmName), QLatin1String(protocolName), QLatin1String(displayName), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(onCreateAccountFinished(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); // check that the added account is the same one that was created QCOMPARE(mAccountAdded, mAccountCreated); } void TestAccountSet::removeAccount(const AccountPtr &acc) { QCOMPARE(acc->isValid(), true); AccountSetPtr accounts = mAM->validAccounts(); QVERIFY(accounts->accounts().contains(acc)); int oldAccountsCount = accounts->accounts().size(); QVERIFY(connect(accounts.data(), SIGNAL(accountRemoved(Tp::AccountPtr)), SLOT(onAccountRemoved(Tp::AccountPtr)))); QVERIFY(connect(acc->remove(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); // wait the account to disappear from the set while (accounts->accounts().size() != oldAccountsCount - 1) { processDBusQueue(mConn->client().data()); QCOMPARE(mLoop->exec(), 0); } QCOMPARE(acc->isValid(), false); QCOMPARE(acc->invalidationReason(), TP_QT_ERROR_OBJECT_REMOVED); } QStringList TestAccountSet::pathsForAccounts(const QList &list) { QStringList ret; Q_FOREACH (const AccountPtr &account, list) { ret << account->objectPath(); } return ret; } QStringList TestAccountSet::pathsForAccounts(const Tp::AccountSetPtr &set) { QStringList ret; Q_FOREACH (const AccountPtr &account, set->accounts()) { ret << account->objectPath(); } return ret; } void TestAccountSet::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("account-set"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mAM = AccountManager::create(AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore | Account::FeatureCapabilities)); QCOMPARE(mAM->isReady(), false); QVERIFY(connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAM->isReady(), true); QCOMPARE(mAM->allAccounts().isEmpty(), true); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", "me@example.com", "protocol", "echo2", NULL); QCOMPARE(mConn->connect(), true); } void TestAccountSet::init() { mAccountAdded.reset(); mAccountRemoved.reset(); initImpl(); } void TestAccountSet::testBasics() { AccountSetPtr validAccounts = mAM->validAccounts(); // create and remove the same account twice to check whether AccountSet::accountAdded/Removed is // properly emitted and the account becomes invalid after being removed for (int i = 0; i < 2; ++i) { // create the account QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); createAccount("foo", "bar", "foobar", parameters); // check that the account is properly created and added to the set of valid accounts QCOMPARE(validAccounts->accounts().size(), 1); QStringList paths = QStringList() << QLatin1String("/org/freedesktop/Telepathy/Account/foo/bar/Account0"); QCOMPARE(pathsForAccounts(validAccounts), paths); QCOMPARE(pathsForAccounts(mAM->invalidAccounts()), QStringList()); QCOMPARE(pathsForAccounts(mAM->allAccounts()), paths); QCOMPARE(mAM->allAccounts(), validAccounts->accounts()); // remove the account AccountPtr acc = validAccounts->accounts().first(); QVERIFY(acc); removeAccount(acc); // check that the account is properly invalidated and removed from the set QCOMPARE(validAccounts->accounts().size(), 0); QCOMPARE(pathsForAccounts(validAccounts), QStringList()); QCOMPARE(pathsForAccounts(mAM->invalidAccounts()), QStringList()); QCOMPARE(pathsForAccounts(mAM->allAccounts()), QStringList()); QCOMPARE(mAM->allAccounts(), validAccounts->accounts()); } } void TestAccountSet::testFilters() { QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); createAccount("foo", "bar", "foobar", parameters); QCOMPARE(mAM->allAccounts().size(), 1); QCOMPARE(mAM->validAccounts()->accounts().size(), 1); AccountPtr fooAcc = mAM->allAccounts()[0]; parameters.clear(); parameters[QLatin1String("account")] = QLatin1String("spuriousnormal"); createAccount("spurious", "normal", "spuriousnormal", parameters); QCOMPARE(mAM->allAccounts().size(), 2); QCOMPARE(mAM->validAccounts()->accounts().size(), 2); AccountPtr spuriousAcc = *(mAM->allAccounts().toSet() -= fooAcc).begin(); Tp::AccountSetPtr filteredAccountSet; { QVariantMap filter; filter.insert(QLatin1String("protocolName"), QLatin1String("bar")); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, filter)); QCOMPARE(filteredAccountSet->accounts().size(), 1); QVERIFY(filteredAccountSet->accounts().contains(fooAcc)); filter.clear(); filter.insert(QLatin1String("protocolName"), QLatin1String("normal")); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, filter)); QCOMPARE(filteredAccountSet->accounts().size(), 1); QVERIFY(filteredAccountSet->accounts().contains(spuriousAcc)); } { QList filterChain; AccountPropertyFilterPtr cmNameFilter0 = AccountPropertyFilter::create(); cmNameFilter0->addProperty(QLatin1String("cmName"), QLatin1String("foo")); AccountPropertyFilterPtr cmNameFilter1 = AccountPropertyFilter::create(); cmNameFilter1->addProperty(QLatin1String("cmName"), QLatin1String("spurious")); filterChain.append(cmNameFilter0); filterChain.append(cmNameFilter1); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, OrFilter::create(filterChain))); QCOMPARE(filteredAccountSet->accounts().size(), 2); QVERIFY(filteredAccountSet->accounts().contains(fooAcc)); QVERIFY(filteredAccountSet->accounts().contains(spuriousAcc)); } { QList filterChain; AccountPropertyFilterPtr cmNameFilter = AccountPropertyFilter::create(); cmNameFilter->addProperty(QLatin1String("cmName"), QLatin1String("foo")); AccountCapabilityFilterPtr capsFilter = AccountCapabilityFilter::create(); capsFilter->addRequestableChannelClassSubset(RequestableChannelClassSpec::textChat()); filterChain.append(cmNameFilter); filterChain.append(capsFilter); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, AndFilter::create(filterChain))); QCOMPARE(filteredAccountSet->accounts().size(), 0); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, OrFilter::create(filterChain))); QCOMPARE(filteredAccountSet->accounts().size(), 2); QVERIFY(filteredAccountSet->accounts().contains(fooAcc)); QVERIFY(filteredAccountSet->accounts().contains(spuriousAcc)); filterChain.clear(); cmNameFilter = AccountPropertyFilter::create(); cmNameFilter->addProperty(QLatin1String("cmName"), QLatin1String("spurious")); capsFilter = AccountCapabilityFilter::create(); capsFilter->setRequestableChannelClassesSubset( RequestableChannelClassSpecList() << RequestableChannelClassSpec::textChat()); filterChain.append(cmNameFilter); filterChain.append(capsFilter); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, AndFilter::create(filterChain))); QCOMPARE(filteredAccountSet->accounts().size(), 1); QVERIFY(filteredAccountSet->accounts().contains(spuriousAcc)); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, NotFilter::create(AndFilter::create(filterChain)))); QCOMPARE(filteredAccountSet->accounts().size(), 1); QVERIFY(filteredAccountSet->accounts().contains(fooAcc)); } { // should not match as allowedProperties has TargetFoo that is not allowed RequestableChannelClassList rccs; RequestableChannelClass rcc; rcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetFoo")); rccs.append(rcc); filteredAccountSet = AccountSetPtr(new AccountSet(mAM, AccountCapabilityFilter::create(rccs))); QCOMPARE(filteredAccountSet->accounts().isEmpty(), true); } { // let's change a property and see AccountSetPtr enabledAccounts = mAM->enabledAccounts(); QVERIFY(connect(enabledAccounts.data(), SIGNAL(accountRemoved(Tp::AccountPtr)), SLOT(onAccountRemoved(Tp::AccountPtr)))); AccountSetPtr disabledAccounts = mAM->disabledAccounts(); QVERIFY(connect(disabledAccounts.data(), SIGNAL(accountAdded(Tp::AccountPtr)), SLOT(onAccountAdded(Tp::AccountPtr)))); QCOMPARE(enabledAccounts->accounts().size(), 2); QCOMPARE(disabledAccounts->accounts().size(), 0); QVERIFY(connect(fooAcc->setEnabled(false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (fooAcc->isEnabled() != false) { mLoop->processEvents(); } processDBusQueue(mConn->client().data()); QVERIFY(mAccountAdded); QVERIFY(mAccountRemoved); QCOMPARE(mAccountAdded, mAccountRemoved); QCOMPARE(enabledAccounts->accounts().size(), 1); QVERIFY(enabledAccounts->accounts().contains(spuriousAcc)); QCOMPARE(disabledAccounts->accounts().size(), 1); QVERIFY(disabledAccounts->accounts().contains(fooAcc)); } { QCOMPARE(mAM->invalidAccounts()->accounts().size(), 0); QCOMPARE(mAM->onlineAccounts()->accounts().size(), 0); QCOMPARE(mAM->offlineAccounts()->accounts().size(), 2); QCOMPARE(mAM->textChatAccounts()->accounts().size(), 1); QVERIFY(mAM->textChatAccounts()->accounts().contains(spuriousAcc)); QCOMPARE(mAM->textChatroomAccounts()->accounts().size(), 0); QCOMPARE(mAM->streamedMediaCallAccounts()->accounts().size(), 0); QCOMPARE(mAM->streamedMediaAudioCallAccounts()->accounts().size(), 0); QCOMPARE(mAM->streamedMediaVideoCallAccounts()->accounts().size(), 0); QCOMPARE(mAM->streamedMediaVideoCallWithAudioAccounts()->accounts().size(), 0); QCOMPARE(mAM->fileTransferAccounts()->accounts().size(), 0); QCOMPARE(mAM->accountsByProtocol(QLatin1String("bar"))->accounts().size(), 1); QVERIFY(mAM->accountsByProtocol(QLatin1String("bar"))->accounts().contains(fooAcc)); QCOMPARE(mAM->accountsByProtocol(QLatin1String("normal"))->accounts().size(), 1); QVERIFY(mAM->accountsByProtocol(QLatin1String("normal"))->accounts().contains(spuriousAcc)); QCOMPARE(mAM->accountsByProtocol(QLatin1String("noname"))->accounts().size(), 0); } } void TestAccountSet::cleanup() { cleanupImpl(); } void TestAccountSet::cleanupTestCase() { if (mConn) { QCOMPARE(mConn->disconnect(), true); delete mConn; } cleanupTestCaseImpl(); } QTEST_MAIN(TestAccountSet) #include "_gen/account-set.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-roster-legacy.cpp0000644000175100017520000004343512530423576024251 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include using namespace Tp; class TestConnRosterLegacy : public Test { Q_OBJECT public: TestConnRosterLegacy(QObject *parent = 0) : Test(parent), mConn(0), mBlockingContactsFinished(false), mHowManyKnownContacts(0), mGotPresenceStateChanged(false) { } protected Q_SLOTS: void expectBlockingContactsFinished(Tp::PendingOperation *op); void expectBlockStatusChanged(bool blocked); void expectBlockedContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed, const Tp::Channel::GroupMemberChangeDetails &details); void expectPresenceStateChanged(Tp::Contact::PresenceState); void expectAllKnownContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed, const Tp::Channel::GroupMemberChangeDetails &details); private Q_SLOTS: void initTestCase(); void init(); void testRoster(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; QSet mContactsExpectingBlockStatusChange; bool mBlockingContactsFinished; int mHowManyKnownContacts; bool mGotPresenceStateChanged; }; void TestConnRosterLegacy::expectBlockingContactsFinished(Tp::PendingOperation *op) { TEST_VERIFY_OP(op); qDebug() << "blocking contacts finished"; mBlockingContactsFinished = true; if (mContactsExpectingBlockStatusChange.isEmpty()) { mLoop->exit(0); } } void TestConnRosterLegacy::expectBlockStatusChanged(bool blocked) { Q_UNUSED(blocked); Contact *c = qobject_cast(sender()); QVERIFY(c); ContactPtr contact(c); mContactsExpectingBlockStatusChange.remove(contact->id()); if (mContactsExpectingBlockStatusChange.isEmpty() && mBlockingContactsFinished) { mLoop->exit(0); } } // This connects to allKnownContactsChanged() but it is only used in the last contact blocking test void TestConnRosterLegacy::expectBlockedContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed, const Tp::Channel::GroupMemberChangeDetails &details) { Q_UNUSED(details); Q_FOREACH(const ContactPtr &contact, added) { mContactsExpectingBlockStatusChange.remove(contact->id()); } Q_FOREACH(const ContactPtr &contact, removed) { mContactsExpectingBlockStatusChange.remove(contact->id()); } if (mContactsExpectingBlockStatusChange.isEmpty() && mBlockingContactsFinished) { mLoop->exit(0); } } void TestConnRosterLegacy::expectAllKnownContactsChanged(const Tp::Contacts& added, const Tp::Contacts& removed, const Tp::Channel::GroupMemberChangeDetails &details) { qDebug() << added.size() << " contacts added, " << removed.size() << " contacts removed"; mHowManyKnownContacts += added.size(); mHowManyKnownContacts -= removed.size(); if (details.hasMessage()) { QCOMPARE(details.message(), QLatin1String("add me now")); } if (mConn->client()->contactManager()->allKnownContacts().size() != mHowManyKnownContacts) { qWarning() << "Contacts number mismatch! Watched value: " << mHowManyKnownContacts << "allKnownContacts(): " << mConn->client()->contactManager()->allKnownContacts().size(); mLoop->exit(1); } else { mLoop->exit(0); } } void TestConnRosterLegacy::expectPresenceStateChanged(Contact::PresenceState state) { mGotPresenceStateChanged = true; } void TestConnRosterLegacy::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-roster-legacy"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", "me@example.com", "protocol", "contactlist", "simulation-delay", 1, NULL); QCOMPARE(mConn->connect(), true); } void TestConnRosterLegacy::init() { initImpl(); } void TestConnRosterLegacy::testRoster() { Features features = Features() << Connection::FeatureRoster; QCOMPARE(mConn->enableFeatures(features), true); ContactManagerPtr contactManager = mConn->client()->contactManager(); QCOMPARE(contactManager->state(), ContactListStateSuccess); QStringList toCheck = QStringList() << QLatin1String("sjoerd@example.com") << QLatin1String("travis@example.com") << QLatin1String("wim@example.com") << QLatin1String("olivier@example.com") << QLatin1String("helen@example.com") << QLatin1String("geraldine@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("christian@example.com") << QLatin1String("bill@example.com") << QLatin1String("steve@example.com"); QStringList ids; QList pendingSubscription; QList pendingPublish; Q_FOREACH (const ContactPtr &contact, contactManager->allKnownContacts()) { qDebug() << " contact:" << contact->id() << "- subscription:" << contact->subscriptionState() << "- publish:" << contact->publishState(); ids << contact->id(); if (contact->subscriptionState() == Contact::PresenceStateAsk) { pendingSubscription.append(contact); } else if (contact->publishState() == Contact::PresenceStateAsk) { pendingPublish.append(contact); } } ids.sort(); toCheck.sort(); QCOMPARE(ids, toCheck); QCOMPARE(pendingSubscription.size(), 2); QCOMPARE(pendingPublish.size(), 2); // Wait for the contacts to be built ids = QStringList() << QString(QLatin1String("john@example.com")) << QString(QLatin1String("mary@example.com")); QList contacts = mConn->contacts(ids); QCOMPARE(contacts.size(), ids.size()); int i = 0; Q_FOREACH (const ContactPtr &contact, contacts) { mGotPresenceStateChanged = false; QVERIFY(connect(contact.data(), SIGNAL(subscriptionStateChanged(Tp::Contact::PresenceState)), SLOT(expectPresenceStateChanged(Tp::Contact::PresenceState)))); QVERIFY(connect(contact.data(), SIGNAL(publishStateChanged(Tp::Contact::PresenceState, QString)), SLOT(expectPresenceStateChanged(Tp::Contact::PresenceState)))); if ((i % 2) == 0) { contact->requestPresenceSubscription(QLatin1String("please add me")); } else { contact->requestPresenceSubscription(QLatin1String("add me now")); } while (!mGotPresenceStateChanged) { mLoop->processEvents(); } if ((i % 2) == 0) { // I asked to see his presence - he might have already accepted it, though QVERIFY(contact->subscriptionState() == Contact::PresenceStateAsk || contact->subscriptionState() == Contact::PresenceStateYes); // if he accepted it already, one iteration won't be enough as the // first iteration will just flush the subscription -> Yes event while (contact->publishState() != Contact::PresenceStateAsk) { mLoop->processEvents(); } contact->authorizePresencePublication(); while (contact->publishState() != Contact::PresenceStateYes) { mLoop->processEvents(); } // I authorized him to see my presence QCOMPARE(static_cast(contact->publishState()), static_cast(Contact::PresenceStateYes)); // He replied the presence request QCOMPARE(static_cast(contact->subscriptionState()), static_cast(Contact::PresenceStateYes)); contact->removePresenceSubscription(); while (contact->subscriptionState() != Contact::PresenceStateNo) { mLoop->processEvents(); } } else { // I asked to see her presence - she might have already rejected it, though QVERIFY(contact->subscriptionState() == Contact::PresenceStateAsk || contact->subscriptionState() == Contact::PresenceStateNo); // If she didn't already reject it, wait until she does while (contact->subscriptionState() != Contact::PresenceStateNo) { mLoop->processEvents(); } } ++i; // Disconnect the signals so the contacts doing something won't early-exit future mainloop // iterations (the simulation CM does things like - after a delay since we removed them, try // to re-add us - and such, which mess up the test if the simulated network event happens // before we've finished with the next contact) QVERIFY(contact->disconnect(this)); // TODO: The roster API, frankly speaking, seems rather error/race prone, as evidenced by // this test. Should we perhaps change its semantics? Then again, this test also simulates // the remote user accepting/rejecting the request with a quite unpredictable timer delay, // while real-world applications don't do any such assumptions about the timing of the // remote user actions, so most of the problems won't be applicable there. } i = 0; Contact::PresenceState expectedPresenceState; Q_FOREACH (const ContactPtr &contact, pendingPublish) { mGotPresenceStateChanged = false; QVERIFY(connect(contact.data(), SIGNAL(publishStateChanged(Tp::Contact::PresenceState, QString)), SLOT(expectPresenceStateChanged(Tp::Contact::PresenceState)))); if ((i++ % 2) == 0) { expectedPresenceState = Contact::PresenceStateYes; contact->authorizePresencePublication(); } else { expectedPresenceState = Contact::PresenceStateNo; contact->removePresencePublication(); } while (!mGotPresenceStateChanged) { mLoop->processEvents(); } QCOMPARE(static_cast(contact->publishState()), static_cast(expectedPresenceState)); } // Test allKnownContactsChanged. // In this test, everytime a subscription is requested or rejected, allKnownContacts changes // Cache the current value mHowManyKnownContacts = contactManager->allKnownContacts().size(); // Watch for contacts changed QVERIFY(connect(contactManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), SLOT(expectAllKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)))); // Wait for the contacts to be built ids = QStringList() << QString(QLatin1String("kctest1@example.com")) << QString(QLatin1String("kctest2@example.com")); contacts = mConn->contacts(ids); QCOMPARE(contacts.size(), ids.size()); Q_FOREACH (const ContactPtr &contact, contacts) { contact->requestPresenceSubscription(QLatin1String("add me now")); // allKnownContacts is supposed to change here. QCOMPARE(mLoop->exec(), 0); } QVERIFY(disconnect(contactManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), this, SLOT(expectAllKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)))); // verify that the CM supports contact blocking QVERIFY(contactManager->canBlockContacts()); // check if the initially blocked contacts are there ids.clear(); toCheck = QStringList() << QLatin1String("bill@example.com") << QLatin1String("steve@example.com"); Q_FOREACH (const ContactPtr &contact, contactManager->allKnownContacts()) { if (contact->isBlocked()) { qDebug() << "blocked contact:" << contact->id(); ids << contact->id(); } } ids.sort(); toCheck.sort(); QCOMPARE(ids, toCheck); // block all contacts QList contactsList = contactManager->allKnownContacts().toList(); QSet contactIdsList; Q_FOREACH (const ContactPtr &contact, contactsList) { QVERIFY(connect(contact.data(), SIGNAL(blockStatusChanged(bool)), SLOT(expectBlockStatusChanged(bool)))); contactIdsList.insert(contact->id()); } mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = contactIdsList; // those are already blocked; do not expect their status to change mContactsExpectingBlockStatusChange.remove(QLatin1String("bill@example.com")); mContactsExpectingBlockStatusChange.remove(QLatin1String("steve@example.com")); QVERIFY(connect(contactManager->blockContacts(contactsList), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // verify all contacts have been blocked Q_FOREACH (const ContactPtr &contact, contactsList) { QCOMPARE(contact->isBlocked(), true); QVERIFY(contactManager->allKnownContacts().contains(contact)); } // now remove kctest1 from the server ContactPtr kctest1; Q_FOREACH (const ContactPtr &contact, contactsList) { if (contact->id() == QLatin1String("kctest1@example.com")) { kctest1 = contact; } } QVERIFY(!kctest1.isNull()); QVERIFY(connect(contactManager->removeContacts(QList() << kctest1), SIGNAL(finished(Tp::PendingOperation*)), mLoop, SLOT(quit()))); QCOMPARE(mLoop->exec(), 0); // allKnownContacts must still contain kctest1, since it is in the deny list QVERIFY(contactManager->allKnownContacts().contains(kctest1)); kctest1.reset(); //no longer needed // unblock all contacts mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = contactIdsList; QVERIFY(connect(contactManager->unblockContacts(contactsList), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // verify all contacts have been unblocked Q_FOREACH (const ContactPtr &contact, contactsList) { QCOMPARE(contact->isBlocked(), false); // ...and that bill, steve and kctest1 have also been removed from allKnownContacts() // note: allKnownContacts() changes here because bill, steve and kctest, // which were only in the deny list, do not exist in any other list, so // they are removed as soon as they get unblocked. if (contact->id() == QLatin1String("bill@example.com") || contact->id() == QLatin1String("steve@example.com") || contact->id() == QLatin1String("kctest1@example.com")) { QVERIFY(!contactManager->allKnownContacts().contains(contact)); } else { QVERIFY(contactManager->allKnownContacts().contains(contact)); } } // block some contacts that are not already known ids = QStringList() << QLatin1String("blocktest1@example.com") << QLatin1String("blocktest2@example.com"); contacts = mConn->contacts(ids); // Watch changes in allKnownContacts() instead of watching the Contacts' block status // as we want to destroy the Contact objects and verify that they are being re-created correctly QVERIFY(connect(contactManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), SLOT(expectBlockedContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)))); mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = ids.toSet(); QVERIFY(connect(contactManager->blockContacts(contacts), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); // destroy the Contact objects to let them be re-created when the block operation finishes contacts.clear(); QCOMPARE(mLoop->exec(), 0); // construct the same contacts again and verify that they are blocked contacts = mConn->contacts(ids); Q_FOREACH (const ContactPtr &contact, contacts) { QCOMPARE(contact->isBlocked(), true); QVERIFY(contactManager->allKnownContacts().contains(contact)); } // now unblock them again mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = ids.toSet(); QVERIFY(connect(contactManager->unblockContacts(contacts), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); // note: allKnownContacts() is expected to change again, so we expect // to quit from expectBlockedContactsChanged() QCOMPARE(mLoop->exec(), 0); // and verify that they are not in allKnownContacts() Q_FOREACH (const ContactPtr &contact, contacts) { QCOMPARE(contact->isBlocked(), false); QVERIFY(!contactManager->allKnownContacts().contains(contact)); } } void TestConnRosterLegacy::cleanup() { cleanupImpl(); } void TestConnRosterLegacy::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestConnRosterLegacy) #include "_gen/conn-roster-legacy.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-roster.cpp0000644000175100017520000004511312530423576023002 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestConnRoster : public Test { Q_OBJECT public: TestConnRoster(QObject *parent = 0) : Test(parent), mConn(0), mBlockingContactsFinished(false), mHowManyKnownContacts(0), mGotPresenceStateChanged(false), mGotPPR(false) { } protected Q_SLOTS: void expectBlockingContactsFinished(Tp::PendingOperation *op); void expectBlockStatusChanged(bool blocked); void expectBlockedContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed, const Tp::Channel::GroupMemberChangeDetails &details); void expectPresencePublicationRequested(const Tp::Contacts &); void expectPresenceStateChanged(Tp::Contact::PresenceState); void expectAllKnownContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed, const Tp::Channel::GroupMemberChangeDetails &details); private Q_SLOTS: void initTestCase(); void init(); void testRoster(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; QSet mContactsExpectingBlockStatusChange; bool mBlockingContactsFinished; int mHowManyKnownContacts; bool mGotPresenceStateChanged; bool mGotPPR; }; void TestConnRoster::expectBlockingContactsFinished(Tp::PendingOperation *op) { TEST_VERIFY_OP(op); qDebug() << "blocking contacts finished"; mBlockingContactsFinished = true; if (mContactsExpectingBlockStatusChange.isEmpty()) { mLoop->exit(0); } } void TestConnRoster::expectBlockStatusChanged(bool blocked) { Q_UNUSED(blocked); Contact *c = qobject_cast(sender()); QVERIFY(c); ContactPtr contact(c); mContactsExpectingBlockStatusChange.remove(contact->id()); if (mContactsExpectingBlockStatusChange.isEmpty() && mBlockingContactsFinished) { mLoop->exit(0); } } // This connects to allKnownContactsChanged() but it is only used in the last contact blocking test void TestConnRoster::expectBlockedContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed, const Tp::Channel::GroupMemberChangeDetails &details) { Q_UNUSED(details); Q_FOREACH(const ContactPtr &contact, added) { mContactsExpectingBlockStatusChange.remove(contact->id()); } Q_FOREACH(const ContactPtr &contact, removed) { mContactsExpectingBlockStatusChange.remove(contact->id()); } if (mContactsExpectingBlockStatusChange.isEmpty() && mBlockingContactsFinished) { mLoop->exit(0); } } void TestConnRoster::expectAllKnownContactsChanged(const Tp::Contacts& added, const Tp::Contacts& removed, const Tp::Channel::GroupMemberChangeDetails &details) { qDebug() << added.size() << " contacts added, " << removed.size() << " contacts removed"; mHowManyKnownContacts += added.size(); mHowManyKnownContacts -= removed.size(); if (details.hasMessage()) { QCOMPARE(details.message(), QLatin1String("add me now")); } if (mConn->client()->contactManager()->allKnownContacts().size() != mHowManyKnownContacts) { qWarning() << "Contacts number mismatch! Watched value: " << mHowManyKnownContacts << "allKnownContacts(): " << mConn->client()->contactManager()->allKnownContacts().size(); mLoop->exit(1); } else { mLoop->exit(0); } } void TestConnRoster::expectPresencePublicationRequested(const Tp::Contacts &contacts) { Q_FOREACH(Tp::ContactPtr contact, contacts) { QCOMPARE(static_cast(contact->publishState()), static_cast(Contact::PresenceStateAsk)); } mGotPPR = true; } void TestConnRoster::expectPresenceStateChanged(Contact::PresenceState state) { mGotPresenceStateChanged = true; } void TestConnRoster::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-roster"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create(Contact::FeatureAlias), EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", "me@example.com", "protocol", "contactlist", "simulation-delay", 1, NULL); QCOMPARE(mConn->connect(), true); } void TestConnRoster::init() { initImpl(); } void TestConnRoster::testRoster() { Features features = Features() << Connection::FeatureRoster; QCOMPARE(mConn->enableFeatures(features), true); ContactManagerPtr contactManager = mConn->client()->contactManager(); QCOMPARE(contactManager->state(), ContactListStateSuccess); QStringList toCheck = QStringList() << QLatin1String("sjoerd@example.com") << QLatin1String("travis@example.com") << QLatin1String("wim@example.com") << QLatin1String("olivier@example.com") << QLatin1String("helen@example.com") << QLatin1String("geraldine@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("christian@example.com") << QLatin1String("bill@example.com") << QLatin1String("steve@example.com"); QStringList ids; QList pendingSubscription; QList pendingPublish; Q_FOREACH (const ContactPtr &contact, contactManager->allKnownContacts()) { QVERIFY(contact->requestedFeatures().contains(Contact::FeatureAlias)); qDebug() << " contact:" << contact->id() << "- subscription:" << contact->subscriptionState() << "- publish:" << contact->publishState(); ids << contact->id(); if (contact->subscriptionState() == Contact::PresenceStateAsk) { pendingSubscription.append(contact); } else if (contact->publishState() == Contact::PresenceStateAsk) { pendingPublish.append(contact); } } ids.sort(); toCheck.sort(); QCOMPARE(ids, toCheck); QCOMPARE(pendingSubscription.size(), 2); QCOMPARE(pendingPublish.size(), 2); // Wait for the contacts to be built ids = QStringList() << QString(QLatin1String("john@example.com")) << QString(QLatin1String("mary@example.com")); QList contacts = mConn->contacts(ids); QCOMPARE(contacts.size(), ids.size()); QVERIFY(connect(contactManager.data(), SIGNAL(presencePublicationRequested(Tp::Contacts)), SLOT(expectPresencePublicationRequested(Tp::Contacts)))); int i = 0; Q_FOREACH (const ContactPtr &contact, contacts) { mGotPresenceStateChanged = false; mGotPPR = false; QVERIFY(connect(contact.data(), SIGNAL(subscriptionStateChanged(Tp::Contact::PresenceState)), SLOT(expectPresenceStateChanged(Tp::Contact::PresenceState)))); QVERIFY(connect(contact.data(), SIGNAL(publishStateChanged(Tp::Contact::PresenceState, QString)), SLOT(expectPresenceStateChanged(Tp::Contact::PresenceState)))); if ((i % 2) == 0) { contact->requestPresenceSubscription(QLatin1String("please add me")); } else { contact->requestPresenceSubscription(QLatin1String("add me now")); } while (!mGotPresenceStateChanged && !mGotPPR) { mLoop->processEvents(); } if ((i % 2) == 0) { // I asked to see his presence - he might have already accepted it, though QVERIFY(contact->subscriptionState() == Contact::PresenceStateAsk || contact->subscriptionState() == Contact::PresenceStateYes); // if he accepted it already, one iteration won't be enough as the // first iteration will just flush the subscription -> Yes event while (contact->publishState() != Contact::PresenceStateAsk) { mLoop->processEvents(); } contact->authorizePresencePublication(); while (contact->publishState() != Contact::PresenceStateYes) { mLoop->processEvents(); } // I authorized him to see my presence QCOMPARE(static_cast(contact->publishState()), static_cast(Contact::PresenceStateYes)); // He replied the presence request QCOMPARE(static_cast(contact->subscriptionState()), static_cast(Contact::PresenceStateYes)); contact->removePresenceSubscription(); while (contact->subscriptionState() != Contact::PresenceStateNo) { mLoop->processEvents(); } } else { // I asked to see her presence - she might have already rejected it, though QVERIFY(contact->subscriptionState() == Contact::PresenceStateAsk || contact->subscriptionState() == Contact::PresenceStateNo); // If she didn't already reject it, wait until she does while (contact->subscriptionState() != Contact::PresenceStateNo) { mLoop->processEvents(); } } ++i; // Disconnect the signals so the contacts doing something won't early-exit future mainloop // iterations (the simulation CM does things like - after a delay since we removed them, try // to re-add us - and such, which mess up the test if the simulated network event happens // before we've finished with the next contact) QVERIFY(contact->disconnect(this)); // TODO: The roster API, frankly speaking, seems rather error/race prone, as evidenced by // this test. Should we perhaps change its semantics? Then again, this test also simulates // the remote user accepting/rejecting the request with a quite unpredictable timer delay, // while real-world applications don't do any such assumptions about the timing of the // remote user actions, so most of the problems won't be applicable there. } i = 0; Contact::PresenceState expectedPresenceState; Q_FOREACH (const ContactPtr &contact, pendingPublish) { mGotPresenceStateChanged = false; QVERIFY(connect(contact.data(), SIGNAL(publishStateChanged(Tp::Contact::PresenceState, QString)), SLOT(expectPresenceStateChanged(Tp::Contact::PresenceState)))); if ((i++ % 2) == 0) { expectedPresenceState = Contact::PresenceStateYes; contact->authorizePresencePublication(); } else { expectedPresenceState = Contact::PresenceStateNo; contact->removePresencePublication(); } while (!mGotPresenceStateChanged) { mLoop->processEvents(); } QCOMPARE(static_cast(contact->publishState()), static_cast(expectedPresenceState)); } // Test allKnownContactsChanged. // In this test, everytime a subscription is requested or rejected, allKnownContacts changes // Cache the current value mHowManyKnownContacts = contactManager->allKnownContacts().size(); // Watch for contacts changed QVERIFY(connect(contactManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), SLOT(expectAllKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)))); // Wait for the contacts to be built ids = QStringList() << QString(QLatin1String("kctest1@example.com")) << QString(QLatin1String("kctest2@example.com")); contacts = mConn->contacts(ids); QCOMPARE(contacts.size(), ids.size()); Q_FOREACH (const ContactPtr &contact, contacts) { contact->requestPresenceSubscription(QLatin1String("add me now")); // allKnownContacts is supposed to change here. QCOMPARE(mLoop->exec(), 0); } QVERIFY(disconnect(contactManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), this, SLOT(expectAllKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)))); // verify that the CM supports contact blocking QVERIFY(contactManager->canBlockContacts()); // check if the initially blocked contacts are there ids.clear(); toCheck = QStringList() << QLatin1String("bill@example.com") << QLatin1String("steve@example.com"); Q_FOREACH (const ContactPtr &contact, contactManager->allKnownContacts()) { if (contact->isBlocked()) { qDebug() << "blocked contact:" << contact->id(); ids << contact->id(); } } ids.sort(); toCheck.sort(); QCOMPARE(ids, toCheck); // block all contacts QList contactsList = contactManager->allKnownContacts().toList(); QSet contactIdsList; Q_FOREACH (const ContactPtr &contact, contactsList) { QVERIFY(connect(contact.data(), SIGNAL(blockStatusChanged(bool)), SLOT(expectBlockStatusChanged(bool)))); contactIdsList.insert(contact->id()); } mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = contactIdsList; // those are already blocked; do not expect their status to change mContactsExpectingBlockStatusChange.remove(QLatin1String("bill@example.com")); mContactsExpectingBlockStatusChange.remove(QLatin1String("steve@example.com")); QVERIFY(connect(contactManager->blockContacts(contactsList), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // verify all contacts have been blocked Q_FOREACH (const ContactPtr &contact, contactsList) { QCOMPARE(contact->isBlocked(), true); QVERIFY(contactManager->allKnownContacts().contains(contact)); } // now remove kctest1 from the server ContactPtr kctest1; Q_FOREACH (const ContactPtr &contact, contactsList) { if (contact->id() == QLatin1String("kctest1@example.com")) { kctest1 = contact; } } QVERIFY(!kctest1.isNull()); QVERIFY(connect(contactManager->removeContacts(QList() << kctest1), SIGNAL(finished(Tp::PendingOperation*)), mLoop, SLOT(quit()))); QCOMPARE(mLoop->exec(), 0); // allKnownContacts must still contain kctest1, since it is in the deny list QVERIFY(contactManager->allKnownContacts().contains(kctest1)); kctest1.reset(); //no longer needed // unblock all contacts mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = contactIdsList; QVERIFY(connect(contactManager->unblockContacts(contactsList), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // verify all contacts have been unblocked Q_FOREACH (const ContactPtr &contact, contactsList) { QCOMPARE(contact->isBlocked(), false); // ...and that bill, steve and kctest1 have also been removed from allKnownContacts() // note: allKnownContacts() changes here because bill, steve and kctest, // which were only in the deny list, do not exist in any other list, so // they are removed as soon as they get unblocked. if (contact->id() == QLatin1String("bill@example.com") || contact->id() == QLatin1String("steve@example.com") || contact->id() == QLatin1String("kctest1@example.com")) { QVERIFY(!contactManager->allKnownContacts().contains(contact)); } else { QVERIFY(contactManager->allKnownContacts().contains(contact)); } } // block some contacts that are not already known ids = QStringList() << QLatin1String("blocktest1@example.com") << QLatin1String("blocktest2@example.com"); contacts = mConn->contacts(ids); // Watch changes in allKnownContacts() instead of watching the Contacts' block status // as we want to destroy the Contact objects and verify that they are being re-created correctly QVERIFY(connect(contactManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), SLOT(expectBlockedContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)))); mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = ids.toSet(); QVERIFY(connect(contactManager->blockContacts(contacts), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); // destroy the Contact objects to let them be re-created when the block operation finishes contacts.clear(); QCOMPARE(mLoop->exec(), 0); // construct the same contacts again and verify that they are blocked contacts = mConn->contacts(ids); Q_FOREACH (const ContactPtr &contact, contacts) { QCOMPARE(contact->isBlocked(), true); QVERIFY(contactManager->allKnownContacts().contains(contact)); } // now unblock them again mBlockingContactsFinished = false; mContactsExpectingBlockStatusChange = ids.toSet(); QVERIFY(connect(contactManager->unblockContacts(contacts), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBlockingContactsFinished(Tp::PendingOperation*)))); // note: allKnownContacts() is expected to change again, so we expect // to quit from expectBlockedContactsChanged() QCOMPARE(mLoop->exec(), 0); // and verify that they are not in allKnownContacts() Q_FOREACH (const ContactPtr &contact, contacts) { QCOMPARE(contact->isBlocked(), false); QVERIFY(!contactManager->allKnownContacts().contains(contact)); } } void TestConnRoster::cleanup() { cleanupImpl(); } void TestConnRoster::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestConnRoster) #include "_gen/conn-roster.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/cm-basics.cpp0000644000175100017520000003053612530423576022375 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include #include using namespace Tp; namespace { PresenceSpec getPresenceSpec(const PresenceSpecList &specs, const QString &status) { Q_FOREACH (const PresenceSpec &spec, specs) { if (spec.presence().status() == status) { return spec; } } return PresenceSpec(); } } class TestCmBasics : public Test { Q_OBJECT public: TestCmBasics(QObject *parent = 0) : Test(parent), mCMService(0) { } protected Q_SLOTS: void expectListNamesFinished(Tp::PendingOperation *); void expectPendingStringFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testBasics(); void testLegacy(); void testListNames(); void cleanup(); void cleanupTestCase(); private: TpBaseConnectionManager *mCMService; Tp::ConnectionManagerPtr mCM; TpBaseConnectionManager *mCMServiceLegacy; Tp::ConnectionManagerPtr mCMLegacy; QStringList mCMNames; QString mPendingStringResult; }; void TestCmBasics::expectListNamesFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingStringList *ps = qobject_cast(op); mCMNames = ps->result(); mLoop->exit(0); } void TestCmBasics::expectPendingStringFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingString *ps = qobject_cast(op); mPendingStringResult = ps->result(); mLoop->exit(0); } void TestCmBasics::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("cm-basics"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mCMService = TP_BASE_CONNECTION_MANAGER(g_object_new( EXAMPLE_TYPE_ECHO_2_CONNECTION_MANAGER, NULL)); QVERIFY(mCMService != 0); mCMServiceLegacy = TP_BASE_CONNECTION_MANAGER(g_object_new( TP_TESTS_TYPE_SIMPLE_CONNECTION_MANAGER, NULL)); QVERIFY(mCMServiceLegacy != 0); QVERIFY(tp_base_connection_manager_register(mCMService)); QVERIFY(tp_base_connection_manager_register(mCMServiceLegacy)); } void TestCmBasics::init() { initImpl(); } void TestCmBasics::testBasics() { mCM = ConnectionManager::create(QLatin1String("example_echo_2")); QCOMPARE(mCM->isReady(), false); QVERIFY(connect(mCM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCM->isReady(), true); // calling becomeReady() twice is a no-op QVERIFY(connect(mCM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCM->isReady(), true); QCOMPARE(mCM->interfaces(), QStringList()); QCOMPARE(mCM->supportedProtocols(), QStringList() << QLatin1String("example")); QVERIFY(mCM->hasProtocol(QLatin1String("example"))); QVERIFY(!mCM->hasProtocol(QLatin1String("not-there"))); ProtocolInfo info = mCM->protocol(QLatin1String("example")); QVERIFY(info.isValid()); QCOMPARE(info.cmName(), QLatin1String("example_echo_2")); QCOMPARE(info.name(), QLatin1String("example")); QCOMPARE(info.hasParameter(QLatin1String("account")), true); QCOMPARE(info.hasParameter(QLatin1String("not-there")), false); QCOMPARE(info.parameters().size(), 1); ProtocolParameter param = info.parameters().at(0); QCOMPARE(param.name(), QLatin1String("account")); QCOMPARE(static_cast(param.type()), static_cast(QVariant::String)); QCOMPARE(param.defaultValue().isNull(), true); QCOMPARE(param.dbusSignature().signature(), QLatin1String("s")); QCOMPARE(param.isRequired(), true); QCOMPARE(param.isRequiredForRegistration(), true); // though it can't register! QCOMPARE(param.isSecret(), false); QVERIFY(param == QLatin1String("account")); ProtocolParameter otherParam = info.parameters().value(1); QVERIFY(!otherParam.isValid()); QCOMPARE(otherParam.name(), QString()); QCOMPARE(otherParam.dbusSignature(), QDBusSignature()); QCOMPARE(otherParam.type(), QVariant::Invalid); QCOMPARE(otherParam.defaultValue(), QVariant()); QCOMPARE(otherParam.isRequired(), false); QCOMPARE(otherParam.isSecret(), false); QCOMPARE(otherParam.isRequiredForRegistration(), false); QCOMPARE(info.canRegister(), false); QCOMPARE(info.capabilities().isSpecificToContact(), false); QCOMPARE(info.capabilities().textChatrooms(), false); QCOMPARE(info.capabilities().textChats(), true); QCOMPARE(info.capabilities().streamedMediaCalls(), false); QCOMPARE(info.capabilities().streamedMediaAudioCalls(), false); QCOMPARE(info.capabilities().streamedMediaVideoCalls(), false); QCOMPARE(info.capabilities().streamedMediaVideoCallsWithAudio(), false); QCOMPARE(info.capabilities().upgradingStreamedMediaCalls(), false); QCOMPARE(info.vcardField(), QLatin1String("x-telepathy-example")); QCOMPARE(info.englishName(), QLatin1String("Echo II example")); QCOMPARE(info.iconName(), QLatin1String("im-icq")); PresenceSpecList statuses = info.allowedPresenceStatuses(); QCOMPARE(statuses.size(), 3); PresenceSpec spec; spec = getPresenceSpec(statuses, QLatin1String("offline")); QCOMPARE(spec.isValid(), true); QVERIFY(spec.presence().type() == ConnectionPresenceTypeOffline); QCOMPARE(spec.maySetOnSelf(), false); QCOMPARE(spec.canHaveStatusMessage(), false); spec = getPresenceSpec(statuses, QLatin1String("dnd")); QCOMPARE(spec.isValid(), true); QVERIFY(spec.presence().type() == ConnectionPresenceTypeBusy); QCOMPARE(spec.maySetOnSelf(), true); QCOMPARE(spec.canHaveStatusMessage(), false); spec = getPresenceSpec(statuses, QLatin1String("available")); QCOMPARE(spec.isValid(), true); QVERIFY(spec.presence().type() == ConnectionPresenceTypeAvailable); QCOMPARE(spec.maySetOnSelf(), true); QCOMPARE(spec.canHaveStatusMessage(), true); AvatarSpec avatarReqs = info.avatarRequirements(); QStringList supportedMimeTypes = avatarReqs.supportedMimeTypes(); supportedMimeTypes.sort(); QCOMPARE(supportedMimeTypes, QStringList() << QLatin1String("image/gif") << QLatin1String("image/jpeg") << QLatin1String("image/png")); QCOMPARE(avatarReqs.minimumHeight(), (uint) 32); QCOMPARE(avatarReqs.maximumHeight(), (uint) 96); QCOMPARE(avatarReqs.recommendedHeight(), (uint) 64); QCOMPARE(avatarReqs.minimumWidth(), (uint) 32); QCOMPARE(avatarReqs.maximumWidth(), (uint) 96); QCOMPARE(avatarReqs.recommendedWidth(), (uint) 64); QCOMPARE(avatarReqs.maximumBytes(), (uint) 37748736); QStringList addressableVCardFields = info.addressableVCardFields(); QCOMPARE(addressableVCardFields, QStringList() << QLatin1String("x-echo2")); QStringList addressableUriSchemes = info.addressableUriSchemes(); QCOMPARE(addressableUriSchemes, QStringList() << QLatin1String("echo2")); mPendingStringResult = QString(); QVERIFY(connect(info.normalizeVCardAddress(QLatin1String("x-EcHo2"), QLatin1String("EcHo2")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectPendingStringFinished(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mPendingStringResult, QLatin1String("echo2")); mPendingStringResult = QString(); QVERIFY(connect(info.normalizeVCardAddress(QLatin1String("x-unsupported"), QLatin1String("EcHo2")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); mPendingStringResult = QString(); QVERIFY(connect(info.normalizeContactUri(QLatin1String("eCho2:FooBaR")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectPendingStringFinished(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mPendingStringResult, QLatin1String("echo2:foobar")); mPendingStringResult = QString(); QVERIFY(connect(info.normalizeContactUri(QLatin1String("unsupported:echo2")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectFailure(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCM->supportedProtocols(), QStringList() << QLatin1String("example")); } // Test for a CM which doesn't implement Protocol objects void TestCmBasics::testLegacy() { mCMLegacy = ConnectionManager::create(QLatin1String("simple")); QCOMPARE(mCMLegacy->isReady(), false); QVERIFY(connect(mCMLegacy->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCMLegacy->isReady(), true); QCOMPARE(mCMLegacy->interfaces(), QStringList()); QCOMPARE(mCMLegacy->supportedProtocols(), QStringList() << QLatin1String("simple")); QVERIFY(mCMLegacy->hasProtocol(QLatin1String("simple"))); QVERIFY(!mCMLegacy->hasProtocol(QLatin1String("not-there"))); ProtocolInfo info = mCMLegacy->protocol(QLatin1String("simple")); QVERIFY(info.isValid()); QCOMPARE(info.cmName(), QLatin1String("simple")); QCOMPARE(info.name(), QLatin1String("simple")); QCOMPARE(info.hasParameter(QLatin1String("account")), true); QCOMPARE(info.hasParameter(QLatin1String("not-there")), false); QCOMPARE(info.parameters().size(), 1); ProtocolParameter param = info.parameters().at(0); QCOMPARE(param.name(), QLatin1String("account")); QCOMPARE(static_cast(param.type()), static_cast(QVariant::String)); QCOMPARE(param.defaultValue().isNull(), true); QCOMPARE(param.dbusSignature().signature(), QLatin1String("s")); QCOMPARE(param.isRequired(), true); QCOMPARE(param.isRequiredForRegistration(), true); QCOMPARE(param.isSecret(), false); QVERIFY(param == QLatin1String("account")); QCOMPARE(info.canRegister(), false); // Protocol capabilities semantics is "an actual connection supports whatever I claim, or // less", so for a service with no actual Protocol implementation everything should be // assumed to be possible at this point QCOMPARE(info.capabilities().isSpecificToContact(), false); QCOMPARE(info.capabilities().textChatrooms(), true); QCOMPARE(info.capabilities().textChats(), true); QCOMPARE(info.capabilities().streamedMediaCalls(), true); QCOMPARE(info.capabilities().streamedMediaAudioCalls(), true); QCOMPARE(info.capabilities().streamedMediaVideoCalls(), true); QCOMPARE(info.capabilities().streamedMediaVideoCallsWithAudio(), true); QCOMPARE(info.capabilities().upgradingStreamedMediaCalls(), true); QCOMPARE(info.vcardField(), QLatin1String("")); QCOMPARE(info.englishName(), QLatin1String("Simple")); QCOMPARE(info.iconName(), QLatin1String("im-simple")); QCOMPARE(mCMLegacy->supportedProtocols(), QStringList() << QLatin1String("simple")); } // TODO add a test for the case of getting the information from a .manager file, and if possible, // also for using the fallbacks for the CM::Protocols property not being present. void TestCmBasics::testListNames() { QVERIFY(connect(ConnectionManager::listNames(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectListNamesFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mCMNames.size(), 3); QVERIFY(mCMNames.contains(QLatin1String("simple"))); QVERIFY(mCMNames.contains(QLatin1String("example_echo_2"))); QVERIFY(mCMNames.contains(QLatin1String("spurious"))); } void TestCmBasics::cleanup() { mCM.reset(); mCMLegacy.reset(); cleanupImpl(); } void TestCmBasics::cleanupTestCase() { if (mCMService) { g_object_unref(mCMService); mCMService = 0; } if (mCMServiceLegacy) { g_object_unref(mCMServiceLegacy); mCMServiceLegacy = 0; } cleanupTestCaseImpl(); } QTEST_MAIN(TestCmBasics) #include "_gen/cm-basics.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/client.cpp0000644000175100017520000010102612530423576022003 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; using namespace Tp::Client; class ChannelRequestAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelRequest") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " " " \n" "") Q_PROPERTY(QDBusObjectPath Account READ Account) Q_PROPERTY(qulonglong UserActionTime READ UserActionTime) Q_PROPERTY(QString PreferredHandler READ PreferredHandler) Q_PROPERTY(Tp::QualifiedPropertyValueMapList Requests READ Requests) Q_PROPERTY(QStringList Interfaces READ Interfaces) public: ChannelRequestAdaptor(QDBusObjectPath account, qulonglong userActionTime, QString preferredHandler, QualifiedPropertyValueMapList requests, QStringList interfaces, QObject *parent) : QDBusAbstractAdaptor(parent), mAccount(account), mUserActionTime(userActionTime), mPreferredHandler(preferredHandler), mRequests(requests), mInterfaces(interfaces) { } virtual ~ChannelRequestAdaptor() { } public: // Properties inline QDBusObjectPath Account() const { return mAccount; } inline qulonglong UserActionTime() const { return mUserActionTime; } inline QString PreferredHandler() const { return mPreferredHandler; } inline QualifiedPropertyValueMapList Requests() const { return mRequests; } inline QStringList Interfaces() const { return mInterfaces; } public Q_SLOTS: // Methods void Proceed() { } void Cancel() { } Q_SIGNALS: // Signals void Failed(const QString &error, const QString &message); void Succeeded(); private: QDBusObjectPath mAccount; qulonglong mUserActionTime; QString mPreferredHandler; QualifiedPropertyValueMapList mRequests; QStringList mInterfaces; }; // Totally incomplete mini version of ChannelDispatchOperation class ChannelDispatchOperationAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.ChannelDispatchOperation") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(QDBusObjectPath Account READ Account) Q_PROPERTY(QDBusObjectPath Connection READ Connection) Q_PROPERTY(Tp::ChannelDetailsList Channels READ Channels) Q_PROPERTY(QStringList Interfaces READ Interfaces) Q_PROPERTY(QStringList PossibleHandlers READ PossibleHandlers) public: ChannelDispatchOperationAdaptor(const QDBusObjectPath &acc, const QDBusObjectPath &conn, const ChannelDetailsList &channels, const QStringList &possibleHandlers, QObject *parent) : QDBusAbstractAdaptor(parent), mAccount(acc), mConn(conn), mChannels(channels), mPossibleHandlers(possibleHandlers) { } virtual ~ChannelDispatchOperationAdaptor() { } public: // Properties inline QDBusObjectPath Account() const { return mAccount; } inline QDBusObjectPath Connection() const { return mConn; } inline ChannelDetailsList Channels() const { return mChannels; } inline QStringList Interfaces() const { return mInterfaces; } inline QStringList PossibleHandlers() const { return mPossibleHandlers; } public Q_SLOTS: inline void Claim() { // do nothing = no fail } private: QDBusObjectPath mAccount, mConn; ChannelDetailsList mChannels; QStringList mInterfaces; QStringList mPossibleHandlers; }; class MyClient : public QObject, public AbstractClientObserver, public AbstractClientApprover, public AbstractClientHandler { Q_OBJECT public: static AbstractClientPtr create(const ChannelClassSpecList &channelFilter, const AbstractClientHandler::Capabilities &capabilities, bool bypassApproval = false, bool wantsRequestNotification = false) { return AbstractClientPtr::dynamicCast(SharedPtr( new MyClient(channelFilter, capabilities, bypassApproval, wantsRequestNotification))); } MyClient(const ChannelClassSpecList &channelFilter, const AbstractClientHandler::Capabilities &capabilities, bool bypassApproval = false, bool wantsRequestNotification = false) : AbstractClientObserver(channelFilter), AbstractClientApprover(channelFilter), AbstractClientHandler(channelFilter, capabilities, wantsRequestNotification), mBypassApproval(bypassApproval) { } ~MyClient() { } void observeChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList &requestsSatisfied, const AbstractClientObserver::ObserverInfo &observerInfo) { mObserveChannelsAccount = account; mObserveChannelsConnection = connection; mObserveChannelsChannels = channels; mObserveChannelsDispatchOperation = dispatchOperation; mObserveChannelsRequestsSatisfied = requestsSatisfied; mObserveChannelsObserverInfo = observerInfo; context->setFinished(); QTimer::singleShot(0, this, SIGNAL(observeChannelsFinished())); } void addDispatchOperation(const MethodInvocationContextPtr<> &context, const ChannelDispatchOperationPtr &dispatchOperation) { mAddDispatchOperationChannels = dispatchOperation->channels(); mAddDispatchOperationDispatchOperation = dispatchOperation; QVERIFY(connect(dispatchOperation->claim(AbstractClientHandlerPtr(this)), SIGNAL(finished(Tp::PendingOperation*)), SIGNAL(claimFinished()))); context->setFinished(); QTimer::singleShot(0, this, SIGNAL(addDispatchOperationFinished())); } bool bypassApproval() const { return mBypassApproval; } void handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const AbstractClientHandler::HandlerInfo &handlerInfo) { mHandleChannelsAccount = account; mHandleChannelsConnection = connection; mHandleChannelsChannels = channels; mHandleChannelsRequestsSatisfied = requestsSatisfied; mHandleChannelsUserActionTime = userActionTime; mHandleChannelsHandlerInfo = handlerInfo; Q_FOREACH (const ChannelPtr &channel, channels) { connect(channel.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SIGNAL(channelClosed())); } context->setFinished(); QTimer::singleShot(0, this, SIGNAL(handleChannelsFinished())); } void addRequest(const ChannelRequestPtr &request) { mAddRequestRequest = request; Q_EMIT requestAdded(request); } void removeRequest(const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage) { mRemoveRequestRequest = request; mRemoveRequestErrorName = errorName; mRemoveRequestErrorMessage = errorMessage; Q_EMIT requestRemoved(request, errorName, errorMessage); } AccountPtr mObserveChannelsAccount; ConnectionPtr mObserveChannelsConnection; QList mObserveChannelsChannels; ChannelDispatchOperationPtr mObserveChannelsDispatchOperation; QList mObserveChannelsRequestsSatisfied; AbstractClientObserver::ObserverInfo mObserveChannelsObserverInfo; QList mAddDispatchOperationChannels; ChannelDispatchOperationPtr mAddDispatchOperationDispatchOperation; bool mBypassApproval; AccountPtr mHandleChannelsAccount; ConnectionPtr mHandleChannelsConnection; QList mHandleChannelsChannels; QList mHandleChannelsRequestsSatisfied; QDateTime mHandleChannelsUserActionTime; AbstractClientHandler::HandlerInfo mHandleChannelsHandlerInfo; ChannelRequestPtr mAddRequestRequest; ChannelRequestPtr mRemoveRequestRequest; QString mRemoveRequestErrorName; QString mRemoveRequestErrorMessage; Q_SIGNALS: void observeChannelsFinished(); void addDispatchOperationFinished(); void handleChannelsFinished(); void claimFinished(); void requestAdded(const Tp::ChannelRequestPtr &request); void requestRemoved(const Tp::ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage); void channelClosed(); }; class TestClient : public Test { Q_OBJECT public: TestClient(QObject *parent = 0) : Test(parent), mConn(0), mContactRepo(0), mText1ChanService(0), mText2ChanService(0), mCDO(0), mClaimFinished(false) { } void testObserveChannelsCommon(const AbstractClientPtr &clientObject, const QString &clientBusName, const QString &clientObjectPath); protected Q_SLOTS: void expectSignalEmission(); void onClaimFinished(); private Q_SLOTS: void initTestCase(); void init(); void testRegister(); void testCapabilities(); void testObserveChannels(); void testAddDispatchOperation(); void testRequests(); void testHandleChannels(); void cleanup(); void cleanupTestCase(); private: AccountManagerPtr mAM; AccountPtr mAccount; TestConnHelper *mConn; TpHandleRepoIface *mContactRepo; ExampleEchoChannel *mText1ChanService; ExampleEchoChannel *mText2ChanService; QString mText1ChanPath; QString mText2ChanPath; ClientRegistrarPtr mClientRegistrar; QString mChannelDispatcherBusName; QString mChannelRequestPath; QVariantMap mHandlerInfo; ChannelDispatchOperationAdaptor *mCDO; QString mCDOPath; AbstractClientHandler::Capabilities mClientCapabilities; AbstractClientPtr mClientObject1; QString mClientObject1BusName; QString mClientObject1Path; AbstractClientPtr mClientObject2; QString mClientObject2BusName; QString mClientObject2Path; uint mUserActionTime; bool mClaimFinished; }; void TestClient::expectSignalEmission() { mLoop->exit(0); } void TestClient::onClaimFinished() { mClaimFinished = true; } void TestClient::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("client"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mAM = AccountManager::create(); QVERIFY(connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mAM->isReady(), true); QVariantMap parameters; parameters[QLatin1String("account")] = QLatin1String("foobar"); PendingAccount *pacc = mAM->createAccount(QLatin1String("foo"), QLatin1String("bar"), QLatin1String("foobar"), parameters); QVERIFY(connect(pacc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(expectSuccessfulCall(Tp::PendingOperation *)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pacc->account()); mAccount = pacc->account(); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); mContactRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); guint handle = tp_handle_ensure(mContactRepo, "someone@localhost", 0, 0); // create a Channel by magic, rather than doing D-Bus round-trips for it mText1ChanPath = mConn->objectPath() + QLatin1String("/TextChannel1"); QByteArray chanPath(mText1ChanPath.toLatin1()); mText1ChanService = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); mText2ChanPath = mConn->objectPath() + QLatin1String("/TextChannel2"); chanPath = mText2ChanPath.toLatin1(); mText2ChanService = EXAMPLE_ECHO_CHANNEL(g_object_new( EXAMPLE_TYPE_ECHO_CHANNEL, "connection", mConn->service(), "object-path", chanPath.data(), "handle", handle, NULL)); mClientRegistrar = ClientRegistrar::create(); QDBusConnection bus = mClientRegistrar->dbusConnection(); // Fake ChannelRequest mChannelDispatcherBusName = TP_QT_IFACE_CHANNEL_DISPATCHER; mChannelRequestPath = QLatin1String("/org/freedesktop/Telepathy/ChannelRequest/Request1"); QObject *request = new QObject(this); mUserActionTime = QDateTime::currentDateTime().toTime_t(); ChannelRequestAdaptor *channelRequest = new ChannelRequestAdaptor(QDBusObjectPath(mAccount->objectPath()), mUserActionTime, QString(), QualifiedPropertyValueMapList(), QStringList(), request); QVERIFY(bus.registerService(mChannelDispatcherBusName)); QVERIFY(bus.registerObject(mChannelRequestPath, request)); ObjectImmutablePropertiesMap channelRequestProperties; QVariantMap currentChannelRequestProperties; currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Account"), QVariant::fromValue(channelRequest->Account())); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".UserActionTime"), channelRequest->UserActionTime()); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".PreferredHandler"), channelRequest->PreferredHandler()); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Requests"), QVariant::fromValue(channelRequest->Requests())); currentChannelRequestProperties.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interfaces"), QVariant::fromValue(channelRequest->Interfaces())); channelRequestProperties[QDBusObjectPath(mChannelRequestPath)] = currentChannelRequestProperties; mHandlerInfo.insert(QLatin1String("request-properties"), QVariant::fromValue(channelRequestProperties)); // Fake ChannelDispatchOperation mCDOPath = QLatin1String("/org/freedesktop/Telepathy/ChannelDispatchOperation/Operation1"); QObject *cdo = new QObject(this); // Initialize this here so we can actually set it in possibleHandlers mClientObject1BusName = QLatin1String("org.freedesktop.Telepathy.Client.foo"); ChannelDetailsList channelDetailsList; ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), QVariantMap() }; channelDetailsList.append(channelDetails); mCDO = new ChannelDispatchOperationAdaptor(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, QStringList() << mClientObject1BusName, cdo); QVERIFY(bus.registerObject(mCDOPath, cdo)); } void TestClient::init() { initImpl(); mClaimFinished = false; } void TestClient::testRegister() { // invalid client QVERIFY(!mClientRegistrar->registerClient(AbstractClientPtr(), QLatin1String("foo"))); mClientCapabilities.setICEUDPNATTraversalToken(); mClientCapabilities.setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/audio/speex=true")); ChannelClassSpecList filters; filters.append(ChannelClassSpec::textChat()); mClientObject1 = MyClient::create(filters, mClientCapabilities, false, true); MyClient *client = dynamic_cast(mClientObject1.data()); QVERIFY(!client->isRegistered()); QVERIFY(mClientRegistrar->registerClient(mClientObject1, QLatin1String("foo"))); QVERIFY(client->isRegistered()); QVERIFY(mClientRegistrar->registeredClients().contains(mClientObject1)); AbstractClientPtr clientObjectRedundant = MyClient::create( filters, mClientCapabilities, false, true); client = dynamic_cast(clientObjectRedundant.data()); QVERIFY(!client->isRegistered()); // try to register using a name already registered and a different object, it should fail // and not report isRegistered QVERIFY(!mClientRegistrar->registerClient(clientObjectRedundant, QLatin1String("foo"))); QVERIFY(!client->isRegistered()); QVERIFY(!mClientRegistrar->registeredClients().contains(clientObjectRedundant)); client = dynamic_cast(mClientObject1.data()); // no op - client already registered with same object and name QVERIFY(mClientRegistrar->registerClient(mClientObject1, QLatin1String("foo"))); // unregister client QVERIFY(mClientRegistrar->unregisterClient(mClientObject1)); QVERIFY(!client->isRegistered()); // register again QVERIFY(mClientRegistrar->registerClient(mClientObject1, QLatin1String("foo"))); QVERIFY(client->isRegistered()); filters.clear(); filters.append(ChannelClassSpec::streamedMediaCall()); mClientObject2 = MyClient::create(filters, mClientCapabilities, true, true); QVERIFY(mClientRegistrar->registerClient(mClientObject2, QLatin1String("foo"), true)); QVERIFY(mClientRegistrar->registeredClients().contains(mClientObject2)); // no op - client already registered QVERIFY(mClientRegistrar->registerClient(mClientObject2, QLatin1String("foo"), true)); QDBusConnection bus = mClientRegistrar->dbusConnection(); QDBusConnectionInterface *busIface = bus.interface(); QStringList registeredServicesNames = busIface->registeredServiceNames(); QVERIFY(registeredServicesNames.filter( QRegExp(QLatin1String("^" "org.freedesktop.Telepathy.Client.foo" ".([_A-Za-z][_A-Za-z0-9]*)"))).size() == 1); mClientObject1BusName = QLatin1String("org.freedesktop.Telepathy.Client.foo"); mClientObject1Path = QLatin1String("/org/freedesktop/Telepathy/Client/foo"); mClientObject2BusName = registeredServicesNames.filter( QRegExp(QLatin1String("org.freedesktop.Telepathy.Client.foo._*"))).first(); mClientObject2Path = QString(QLatin1String("/%1")).arg(mClientObject2BusName); mClientObject2Path.replace(QLatin1String("."), QLatin1String("/")); } void TestClient::testCapabilities() { QDBusConnection bus = mClientRegistrar->dbusConnection(); QStringList normalizedClientCaps = mClientCapabilities.allTokens(); normalizedClientCaps.sort(); QStringList normalizedHandlerCaps; // object 1 ClientHandlerInterface *handler1Iface = new ClientHandlerInterface(bus, mClientObject1BusName, mClientObject1Path, this); QVERIFY(waitForProperty(handler1Iface->requestPropertyCapabilities(), &normalizedHandlerCaps)); normalizedHandlerCaps.sort(); QCOMPARE(normalizedHandlerCaps, normalizedClientCaps); // object 2 ClientHandlerInterface *handler2Iface = new ClientHandlerInterface(bus, mClientObject2BusName, mClientObject2Path, this); QVERIFY(waitForProperty(handler2Iface->requestPropertyCapabilities(), &normalizedHandlerCaps)); normalizedHandlerCaps.sort(); QCOMPARE(normalizedHandlerCaps, normalizedClientCaps); } void TestClient::testRequests() { QDBusConnection bus = mClientRegistrar->dbusConnection(); ClientInterfaceRequestsInterface *handlerRequestsIface = new ClientInterfaceRequestsInterface(bus, mClientObject1BusName, mClientObject1Path, this); MyClient *client = dynamic_cast(mClientObject1.data()); connect(client, SIGNAL(requestAdded(const Tp::ChannelRequestPtr &)), SLOT(expectSignalEmission())); handlerRequestsIface->AddRequest(QDBusObjectPath(mChannelRequestPath), QVariantMap()); if (!client->mAddRequestRequest) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(client->mAddRequestRequest->objectPath(), mChannelRequestPath); connect(client, SIGNAL(requestRemoved(const Tp::ChannelRequestPtr &, const QString &, const QString &)), SLOT(expectSignalEmission())); handlerRequestsIface->RemoveRequest(QDBusObjectPath(mChannelRequestPath), QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Not available")); if (!client->mRemoveRequestRequest) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(client->mRemoveRequestRequest->objectPath(), mChannelRequestPath); QCOMPARE(client->mRemoveRequestErrorName, QString(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE))); QCOMPARE(client->mRemoveRequestErrorMessage, QString(QLatin1String("Not available"))); } void TestClient::testObserveChannelsCommon(const AbstractClientPtr &clientObject, const QString &clientBusName, const QString &clientObjectPath) { QDBusConnection bus = mClientRegistrar->dbusConnection(); ClientObserverInterface *observeIface = new ClientObserverInterface(bus, clientBusName, clientObjectPath, this); MyClient *client = dynamic_cast(clientObject.data()); connect(client, SIGNAL(observeChannelsFinished()), SLOT(expectSignalEmission())); ChannelDetailsList channelDetailsList; ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), QVariantMap() }; channelDetailsList.append(channelDetails); QVariantMap observerInfo; ObjectImmutablePropertiesMap reqPropsMap; QVariantMap channelReqImmutableProps; channelReqImmutableProps.insert( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interface.DomainSpecific.IntegerProp"), 3); channelReqImmutableProps.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Account"), qVariantFromValue(QDBusObjectPath(mAccount->objectPath()))); reqPropsMap.insert(QDBusObjectPath(mChannelRequestPath), channelReqImmutableProps); observerInfo.insert(QLatin1String("request-properties"), qVariantFromValue(reqPropsMap)); observeIface->ObserveChannels(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, QDBusObjectPath("/"), ObjectPathList() << QDBusObjectPath(mChannelRequestPath), observerInfo); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client->mObserveChannelsAccount->objectPath(), mAccount->objectPath()); QCOMPARE(client->mObserveChannelsConnection->objectPath(), mConn->objectPath()); QCOMPARE(client->mObserveChannelsChannels.first()->objectPath(), mText1ChanPath); QVERIFY(client->mObserveChannelsDispatchOperation.isNull()); QCOMPARE(client->mObserveChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath); QCOMPARE(client->mObserveChannelsRequestsSatisfied.first()->immutableProperties().contains( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interface.DomainSpecific.IntegerProp")), true); QCOMPARE(qdbus_cast(client->mObserveChannelsRequestsSatisfied.first()->immutableProperties().value( TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interface.DomainSpecific.IntegerProp"))), 3); } void TestClient::testObserveChannels() { testObserveChannelsCommon(mClientObject1, mClientObject1BusName, mClientObject1Path); testObserveChannelsCommon(mClientObject2, mClientObject2BusName, mClientObject2Path); } void TestClient::testAddDispatchOperation() { QDBusConnection bus = mClientRegistrar->dbusConnection(); ClientApproverInterface *approverIface = new ClientApproverInterface(bus, mClientObject1BusName, mClientObject1Path, this); ClientHandlerInterface *handler1Iface = new ClientHandlerInterface(bus, mClientObject1BusName, mClientObject1Path, this); MyClient *client = dynamic_cast(mClientObject1.data()); connect(client, SIGNAL(addDispatchOperationFinished()), SLOT(expectSignalEmission())); connect(client, SIGNAL(claimFinished()), SLOT(onClaimFinished())); QVariantMap dispatchOperationProperties; dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Connection"), QVariant::fromValue(QDBusObjectPath(mConn->objectPath()))); dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Account"), QVariant::fromValue(QDBusObjectPath(mAccount->objectPath()))); dispatchOperationProperties.insert( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".PossibleHandlers"), QVariant::fromValue(ObjectPathList() << QDBusObjectPath(mClientObject1Path) << QDBusObjectPath(mClientObject2Path))); // Handler.HandledChannels should be empty here, CDO::claim(handler) will populate it on // success Tp::ObjectPathList handledChannels; QVERIFY(waitForProperty(handler1Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.isEmpty()); approverIface->AddDispatchOperation(mCDO->Channels(), QDBusObjectPath(mCDOPath), dispatchOperationProperties); QCOMPARE(mLoop->exec(), 0); while (!mClaimFinished) { mLoop->processEvents(); } QCOMPARE(client->mAddDispatchOperationChannels.first()->objectPath(), mText1ChanPath); QCOMPARE(client->mAddDispatchOperationDispatchOperation->objectPath(), mCDOPath); // Claim finished, Handler.HandledChannels should be populated now handledChannels.clear(); QVERIFY(waitForProperty(handler1Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(!handledChannels.isEmpty()); qSort(handledChannels); Tp::ObjectPathList expectedHandledChannels; Q_FOREACH (const ChannelDetails &details, mCDO->Channels()) { expectedHandledChannels << details.channel; } qSort(expectedHandledChannels); QCOMPARE(handledChannels, expectedHandledChannels); } void TestClient::testHandleChannels() { QDBusConnection bus = mClientRegistrar->dbusConnection(); // object 1 ClientHandlerInterface *handler1Iface = new ClientHandlerInterface(bus, mClientObject1BusName, mClientObject1Path, this); MyClient *client1 = dynamic_cast(mClientObject1.data()); connect(client1, SIGNAL(handleChannelsFinished()), SLOT(expectSignalEmission())); ChannelDetailsList channelDetailsList; ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), QVariantMap() }; channelDetailsList.append(channelDetails); handler1Iface->HandleChannels(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, ObjectPathList() << QDBusObjectPath(mChannelRequestPath), mUserActionTime, mHandlerInfo); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client1->mHandleChannelsAccount->objectPath(), mAccount->objectPath()); QCOMPARE(client1->mHandleChannelsConnection->objectPath(), mConn->objectPath()); QCOMPARE(client1->mHandleChannelsChannels.first()->objectPath(), mText1ChanPath); QCOMPARE(client1->mHandleChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath); QCOMPARE(client1->mHandleChannelsUserActionTime.toTime_t(), mUserActionTime); Tp::ObjectPathList handledChannels; QVERIFY(waitForProperty(handler1Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText1ChanPath))); // object 2 ClientHandlerInterface *handler2Iface = new ClientHandlerInterface(bus, mClientObject2BusName, mClientObject2Path, this); MyClient *client2 = dynamic_cast(mClientObject2.data()); connect(client2, SIGNAL(handleChannelsFinished()), SLOT(expectSignalEmission())); channelDetailsList.clear(); channelDetails.channel = QDBusObjectPath(mText2ChanPath); channelDetailsList.append(channelDetails); handler2Iface->HandleChannels(QDBusObjectPath(mAccount->objectPath()), QDBusObjectPath(mConn->objectPath()), channelDetailsList, ObjectPathList() << QDBusObjectPath(mChannelRequestPath), mUserActionTime, mHandlerInfo); QCOMPARE(mLoop->exec(), 0); QCOMPARE(client2->mHandleChannelsAccount->objectPath(), mAccount->objectPath()); QCOMPARE(client2->mHandleChannelsConnection->objectPath(), mConn->objectPath()); QCOMPARE(client2->mHandleChannelsChannels.first()->objectPath(), mText2ChanPath); QCOMPARE(client2->mHandleChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath); QCOMPARE(client2->mHandleChannelsUserActionTime.toTime_t(), mUserActionTime); QVERIFY(waitForProperty(handler1Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText1ChanPath))); QVERIFY(handledChannels.contains(QDBusObjectPath(mText2ChanPath))); QVERIFY(waitForProperty(handler2Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText1ChanPath))); QVERIFY(handledChannels.contains(QDBusObjectPath(mText2ChanPath))); // Handler.HandledChannels will now return all channels that are not invalidated/destroyed // even if the handler for such channels was already unregistered g_object_unref(mText1ChanService); connect(client1, SIGNAL(channelClosed()), SLOT(expectSignalEmission())); QCOMPARE(mLoop->exec(), 0); mClientRegistrar->unregisterClient(mClientObject1); QVERIFY(waitForProperty(handler2Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.contains(QDBusObjectPath(mText2ChanPath))); g_object_unref(mText2ChanService); connect(client2, SIGNAL(channelClosed()), SLOT(expectSignalEmission())); QCOMPARE(mLoop->exec(), 0); QVERIFY(waitForProperty(handler2Iface->requestPropertyHandledChannels(), &handledChannels)); QVERIFY(handledChannels.isEmpty()); } void TestClient::cleanup() { cleanupImpl(); } void TestClient::cleanupTestCase() { if (mConn) { QCOMPARE(mConn->disconnect(), true); delete mConn; } cleanupTestCaseImpl(); } QTEST_MAIN(TestClient) #include "_gen/client.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-roster-groups.cpp0000644000175100017520000007774612530423576024340 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestConnRosterGroups : public Test { Q_OBJECT public: TestConnRosterGroups(QObject *parent = 0) : Test(parent), mConnService(0), mContactsAddedToGroup(0), mContactsRemovedFromGroup(0) { } private: void causeCongestion(const ConnectionPtr &conn, const ContactPtr &contact); protected Q_SLOTS: void onGroupAdded(const QString &group); void onGroupRemoved(const QString &group); void onContactAddedToGroup(const QString &group); void onContactRemovedFromGroup(const QString &group); void expectConnInvalidated(); void expectContact(Tp::PendingOperation*); void exitOnStateSuccess(Tp::ContactListState); private Q_SLOTS: void initTestCase(); void init(); void testGroupsAfterStateChange(); void testIntrospectAfterStateChange(); void testRosterGroups(); void testNotADeathTrap(); void cleanup(); void cleanupTestCase(); private: QString mConnName, mConnPath; ExampleContactListConnection *mConnService; ConnectionPtr mConn; ContactPtr mContact; QString mGroupAdded; QString mGroupRemoved; int mContactsAddedToGroup; int mContactsRemovedFromGroup; bool mConnInvalidated; }; void TestConnRosterGroups::causeCongestion(const ConnectionPtr &conn, const ContactPtr &contact) { // Cause some congestion in the roster events queue so we can check that it doesn't cause // inconsistent event reordering for (int i = 0; i < 5; i++) { QString name = QString(QLatin1String("Rush%1")).arg(i); conn->contactManager()->addGroup(name); conn->contactManager()->addContactsToGroup(name, QList() << contact); contact->requestPresenceSubscription(); contact->removePresenceSubscription(); conn->contactManager()->removeGroup(name); } } void TestConnRosterGroups::onGroupAdded(const QString &group) { if (group.startsWith(QLatin1String("Rush"))) { return; } mGroupAdded = group; } void TestConnRosterGroups::onGroupRemoved(const QString &group) { if (group.startsWith(QLatin1String("Rush"))) { return; } mGroupRemoved = group; } void TestConnRosterGroups::onContactAddedToGroup(const QString &group) { if (group.startsWith(QLatin1String("Rush"))) { return; } mContactsAddedToGroup++; } void TestConnRosterGroups::onContactRemovedFromGroup(const QString &group) { if (group.startsWith(QLatin1String("Rush"))) { return; } mContactsRemovedFromGroup++; } void TestConnRosterGroups::expectConnInvalidated() { mConnInvalidated = true; mLoop->exit(0); } void TestConnRosterGroups::expectContact(Tp::PendingOperation *op) { PendingContacts *contacts = qobject_cast(op); QVERIFY(contacts != 0); QVERIFY(contacts->isValid()); QCOMPARE(contacts->contacts().length(), 1); mContact = contacts->contacts()[0]; mLoop->exit(0); } void TestConnRosterGroups::exitOnStateSuccess(Tp::ContactListState state) { qDebug() << "got contact list state" << state; if (state == ContactListStateSuccess) { mLoop->exit(0); } } void TestConnRosterGroups::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-roster-groups"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); } void TestConnRosterGroups::init() { gchar *name; gchar *connPath; GError *error = 0; mConnService = EXAMPLE_CONTACT_LIST_CONNECTION(g_object_new( EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, "account", "me@example.com", "simulation-delay", 0, "protocol", "example-contact-list", NULL)); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService), "foo", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); initImpl(); mConnInvalidated = false; } void TestConnRosterGroups::testGroupsAfterStateChange() { // Create a conn and make the roster groups related features ready mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); ContactManagerPtr contactManager = mConn->contactManager(); Features features = Features() << Connection::FeatureRoster << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), true); // Now start connecting it, and wait for the ContactManager state to turn to Success QVERIFY(connect(contactManager.data(), SIGNAL(stateChanged(Tp::ContactListState)), SLOT(exitOnStateSuccess(Tp::ContactListState)))); mConn->lowlevel()->requestConnect(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(contactManager->state()), static_cast(ContactListStateSuccess)); // The conn should be valid and have the roster groups features ready when it emits Success QVERIFY(mConn->isValid()); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), true); // We should have all the group data downloaded now, check for that QStringList expectedGroups; expectedGroups << QLatin1String("Cambridge") << QLatin1String("Francophones") << QLatin1String("Montreal"); expectedGroups.sort(); QStringList groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); // Cambridge { QStringList expectedContacts; expectedContacts << QLatin1String("geraldine@example.com") << QLatin1String("helen@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("sjoerd@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Cambridge"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } // Francophones { QStringList expectedContacts; expectedContacts << QLatin1String("olivier@example.com") << QLatin1String("geraldine@example.com") << QLatin1String("guillaume@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Francophones"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } // Montreal { QStringList expectedContacts; expectedContacts << QLatin1String("olivier@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Montreal"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } } void TestConnRosterGroups::testIntrospectAfterStateChange() { // Create a conn and make the roster feature ready mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); ContactManagerPtr contactManager = mConn->contactManager(); Features features = Features() << Connection::FeatureRoster; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), false); // Now start connecting it, and wait for the ContactManager state to turn to Success QVERIFY(connect(contactManager.data(), SIGNAL(stateChanged(Tp::ContactListState)), SLOT(exitOnStateSuccess(Tp::ContactListState)))); mConn->lowlevel()->requestConnect(); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(contactManager->state()), static_cast(ContactListStateSuccess)); // The conn should be valid and have the roster feature ready when it emits Success, but not // RosterGroups because we didn't request it QVERIFY(mConn->isValid()); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), false); // We should have roster contacts now, but no groups QVERIFY(!contactManager->allKnownContacts().isEmpty()); QVERIFY(contactManager->allKnownGroups().isEmpty()); // Make RosterGroups ready too features = Features() << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(Connection::FeatureRoster), true); QCOMPARE(mConn->isReady(Connection::FeatureRosterGroups), true); // We should still have the contacts, and the state should be success QVERIFY(!contactManager->allKnownContacts().isEmpty()); QCOMPARE(static_cast(contactManager->state()), static_cast(ContactListStateSuccess)); // We should have all the group data downloaded now, check for that QStringList expectedGroups; expectedGroups << QLatin1String("Cambridge") << QLatin1String("Francophones") << QLatin1String("Montreal"); expectedGroups.sort(); QStringList groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); // Cambridge { QStringList expectedContacts; expectedContacts << QLatin1String("geraldine@example.com") << QLatin1String("helen@example.com") << QLatin1String("guillaume@example.com") << QLatin1String("sjoerd@example.com"); expectedContacts.sort(); QStringList contacts; Q_FOREACH (const ContactPtr &contact, contactManager->groupContacts(QLatin1String("Cambridge"))) { contacts << contact->id(); } contacts.sort(); QCOMPARE(contacts, expectedContacts); } } void TestConnRosterGroups::testRosterGroups() { mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QVERIFY(connect(mConn->lowlevel()->requestConnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(), true); QCOMPARE(mConn->status(), ConnectionStatusConnected); Features features = Features() << Connection::FeatureRoster << Connection::FeatureRosterGroups << Connection::FeatureSelfContact; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); QCOMPARE(static_cast(mConn->contactManager()->state()), static_cast(ContactListStateSuccess)); ContactManagerPtr contactManager = mConn->contactManager(); QStringList expectedGroups; expectedGroups << QLatin1String("Cambridge") << QLatin1String("Francophones") << QLatin1String("Montreal"); expectedGroups.sort(); QStringList groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); QString group(QLatin1String("foo")); QVERIFY(contactManager->groupContacts(group).isEmpty()); causeCongestion(mConn, mConn->selfContact()); // add group foo QVERIFY(connect(contactManager.data(), SIGNAL(groupAdded(const QString&)), SLOT(onGroupAdded(const QString&)))); causeCongestion(mConn, mConn->selfContact()); QVERIFY(connect(contactManager->addGroup(group), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mGroupAdded.isEmpty()); QCOMPARE(mGroupAdded, group); expectedGroups << group; expectedGroups.sort(); groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); causeCongestion(mConn, mConn->selfContact()); // add Montreal contacts to group foo Contacts contacts = contactManager->groupContacts(QLatin1String("Montreal")); Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(connect(contact.data(), SIGNAL(addedToGroup(const QString&)), SLOT(onContactAddedToGroup(const QString&)))); } causeCongestion(mConn, mConn->selfContact()); QVERIFY(connect(contactManager->addContactsToGroup(group, contacts.toList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mContactsAddedToGroup, contacts.size()); Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(contact->groups().contains(group)); } causeCongestion(mConn, mConn->selfContact()); // remove all contacts from group foo contacts = contactManager->groupContacts(group); Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(connect(contact.data(), SIGNAL(removedFromGroup(const QString&)), SLOT(onContactRemovedFromGroup(const QString&)))); } causeCongestion(mConn, mConn->selfContact()); QVERIFY(connect(contactManager->removeContactsFromGroup(group, contacts.toList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mContactsRemovedFromGroup, contacts.size()); Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(!contact->groups().contains(group)); } causeCongestion(mConn, mConn->selfContact()); // remove group foo QVERIFY(connect(contactManager.data(), SIGNAL(groupRemoved(const QString&)), SLOT(onGroupRemoved(const QString&)))); causeCongestion(mConn, mConn->selfContact()); QVERIFY(connect(contactManager->removeGroup(group), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mGroupRemoved.isEmpty()); QCOMPARE(mGroupRemoved, group); expectedGroups.removeOne(group); expectedGroups.sort(); groups = contactManager->allKnownGroups(); groups.sort(); QCOMPARE(groups, expectedGroups); } /** * Verify that ContactManager isn't a death-trap. * * Background: Connection::contactManager() used to unpredictably waver between NULL and the real * manager when the connection was in the process of being disconnected / otherwise invalidated, * which led to a great many segfaults, which was especially unfortunate considering the * ContactManager methods didn't do much any checks at all. */ void TestConnRosterGroups::testNotADeathTrap() { mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); // Check that the contact manager doesn't crash, but returns an error (because the conn isn't // ready) QVERIFY(!mConn->contactManager().isNull()); QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->lowlevel()->requestConnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(), true); QCOMPARE(mConn->status(), ConnectionStatusConnected); // As the conn is now ready, the contact building functions shouldn't return an error now QVERIFY(!mConn->contactManager().isNull()); QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->contactsForHandles(UIntList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->upgradeContacts(QList(), Features()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // In fact, let's build a contact for future use QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers( QStringList() << QLatin1String("friendorfoe@example.com")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectContact(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mContact->id() == QLatin1String("friendorfoe@example.com")); // Roster operations SHOULD still fail though, as FeatureRoster isn't ready QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication( QList() << mContact, QLatin1String("I just want to see you fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Now, make Roster ready Features features = Features() << Connection::FeatureRoster; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); causeCongestion(mConn, mContact); // The roster functions should work now QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mContact->subscriptionState() != Contact::PresenceStateNo); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mContact->subscriptionState(), Contact::PresenceStateNo); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->removePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // ... but still not the RosterGroup ones QVERIFY(connect(mConn->contactManager()->addGroup(QLatin1String("Those who failed")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeGroup(QLatin1String("Those who failed")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->addContactsToGroup(QLatin1String("Those who failed"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeContactsFromGroup(QLatin1String("Those who failed"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Make RosterGroups ready too features = Features() << Connection::FeatureRosterGroups; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); // Now that Core, Roster and RosterGroups are all ready, everything should work QVERIFY(!mConn->contactManager().isNull()); QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->contactsForHandles(UIntList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->upgradeContacts(QList(), Features()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mContact->subscriptionState() != Contact::PresenceStateNo); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mContact->subscriptionState(), Contact::PresenceStateNo); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication( QList() << mContact, QLatin1String("Please don't fail")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->addGroup(QLatin1String("My successful entourage")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mConn->contactManager()->allKnownGroups().contains(QLatin1String("My successful entourage"))); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->addContactsToGroup(QLatin1String("My successful entourage"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mConn->contactManager()-> groupContacts(QLatin1String("My successful entourage")).contains(mContact)); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->removeContactsFromGroup(QLatin1String("My successful entourage"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mConn->contactManager()-> groupContacts(QLatin1String("My successful entourage")).contains(mContact)); causeCongestion(mConn, mContact); QVERIFY(connect(mConn->contactManager()->removeGroup(QLatin1String("My successful entourage")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mConn->contactManager()->allKnownGroups().contains(QLatin1String("My successful entourage"))); // Now, invalidate the connection by disconnecting it QVERIFY(connect(mConn.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(expectConnInvalidated()))); mConn->lowlevel()->requestDisconnect(); // Check that contactManager doesn't go NULL in the process of the connection going invalidated do { QVERIFY(!mConn->contactManager().isNull()); mLoop->processEvents(); } while (!mConnInvalidated); QVERIFY(!mConn->isValid()); QCOMPARE(mConn->status(), ConnectionStatusDisconnected); // Now that the conn is invalidated NOTHING should work anymore QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->contactsForHandles(UIntList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->upgradeContacts(QList(), Features()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->requestPresenceSubscription(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresenceSubscription(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->authorizePresencePublication(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removePresencePublication(QList(), QLatin1String("You fail at life")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->addGroup(QLatin1String("Future failures")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeGroup(QLatin1String("Future failures")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->addContactsToGroup(QLatin1String("Future failures"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(connect(mConn->contactManager()->removeContactsFromGroup(QLatin1String("Future failures"), QList() << mContact), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestConnRosterGroups::cleanup() { mContact.reset(); if (mConn && mConn->requestedFeatures().contains(Connection::FeatureCore)) { QVERIFY(mConnService != NULL); if (TP_BASE_CONNECTION(mConnService)->status != TP_CONNECTION_STATUS_DISCONNECTED) { tp_base_connection_change_status(TP_BASE_CONNECTION(mConnService), TP_CONNECTION_STATUS_DISCONNECTED, TP_CONNECTION_STATUS_REASON_REQUESTED); } while (mConn->isValid()) { mLoop->processEvents(); } } mConn.reset(); if (mConnService != 0) { g_object_unref(mConnService); mConnService = 0; } cleanupImpl(); } void TestConnRosterGroups::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestConnRosterGroups) #include "_gen/conn-roster-groups.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contacts-avatar.cpp0000644000175100017520000002444612530423576023631 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include using namespace Tp; class SmartDir : public QDir { public: SmartDir(const QString &path) : QDir(path) { } bool rmdir() { return QDir().rmdir(path()); } bool removeDirectory(); }; bool SmartDir::removeDirectory() { bool ret = true; QFileInfoList list = entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); Q_FOREACH (QFileInfo info, list) { if (info.isDir()) { SmartDir subDir(info.filePath()); if (!subDir.removeDirectory()) { ret = false; } } else { qDebug() << "deleting" << info.filePath(); if (!QFile(info.filePath()).remove()) { ret = false; } } } if (ret) { qDebug() << "deleting" << path(); ret = rmdir(); } return ret; } class TestContactsAvatar : public Test { Q_OBJECT public: TestContactsAvatar(QObject *parent = 0) : Test(parent), mConn(0), mGotAvatarRetrieved(false), mAvatarDatasChanged(0) { } protected Q_SLOTS: void onAvatarRetrieved(uint, const QString &, const QByteArray &, const QString &); void onAvatarDataChanged(const Tp::AvatarData &); void createContactWithFakeAvatar(const char *); private Q_SLOTS: void initTestCase(); void init(); void testAvatar(); void testRequestAvatars(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; QList mContacts; bool mGotAvatarRetrieved; int mAvatarDatasChanged; }; void TestContactsAvatar::onAvatarRetrieved(uint handle, const QString &token, const QByteArray &data, const QString &mimeType) { Q_UNUSED(handle); Q_UNUSED(token); Q_UNUSED(data); Q_UNUSED(mimeType); mGotAvatarRetrieved = true; } void TestContactsAvatar::onAvatarDataChanged(const AvatarData &avatar) { Q_UNUSED(avatar); mAvatarDatasChanged++; mLoop->exit(0); } void TestContactsAvatar::createContactWithFakeAvatar(const char *id) { TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); const gchar avatarData[] = "fake-avatar-data"; const gchar avatarToken[] = "fake-avatar-token"; const gchar avatarMimeType[] = "fake-avatar-mime-type"; TpHandle handle; GArray *array; handle = tp_handle_ensure(serviceRepo, id, NULL, NULL); array = g_array_new(FALSE, FALSE, sizeof(gchar)); g_array_append_vals(array, avatarData, strlen(avatarData)); tp_tests_contacts_connection_change_avatar_data( TP_TESTS_CONTACTS_CONNECTION(mConn->service()), handle, array, avatarMimeType, avatarToken, true); g_array_unref(array); Tp::UIntList handles = Tp::UIntList() << handle; Features features = Features() << Contact::FeatureAvatarToken << Contact::FeatureAvatarData; mContacts = mConn->contacts(handles, features); QCOMPARE(mContacts.size(), handles.size()); if (mContacts[0]->avatarData().fileName.isEmpty()) { QVERIFY(connect(mContacts[0].data(), SIGNAL(avatarDataChanged(const Tp::AvatarData &)), SLOT(onAvatarDataChanged(const Tp::AvatarData &)))); QCOMPARE(mLoop->exec(), 0); } AvatarData avatar = mContacts[0]->avatarData(); qDebug() << "Contact created:"; qDebug() << "Avatar token:" << mContacts[0]->avatarToken(); qDebug() << "Avatar file:" << avatar.fileName; qDebug() << "Avatar MimeType:" << avatar.mimeType; QFile file(avatar.fileName); file.open(QIODevice::ReadOnly); QByteArray data(file.readAll()); file.close(); QCOMPARE(mContacts[0]->avatarToken(), QString(QLatin1String(avatarToken))); QCOMPARE(data, QByteArray(avatarData)); QCOMPARE(avatar.mimeType, QString(QLatin1String(avatarMimeType))); } void TestContactsAvatar::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contacts-avatar"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "foo", NULL); QCOMPARE(mConn->connect(), true); } void TestContactsAvatar::init() { initImpl(); mGotAvatarRetrieved = false; mAvatarDatasChanged = 0; } void TestContactsAvatar::testAvatar() { QVERIFY(mConn->client()->contactManager()->supportedFeatures().contains( Contact::FeatureAvatarData)); /* Make sure our tests does not mess up user's avatar cache */ qsrand(time(0)); static const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; static const int DirNameLength = 6; QString dirName; for (int i = 0; i < DirNameLength; ++i) { dirName += QLatin1Char(letters[qrand() % qstrlen(letters)]); } QString tmpDir = QString(QLatin1String("%1/%2")).arg(QDir::tempPath()).arg(dirName); QByteArray a = tmpDir.toLatin1(); setenv ("XDG_CACHE_HOME", a.constData(), true); Client::ConnectionInterfaceAvatarsInterface *connAvatarsInterface = mConn->client()->optionalInterface(); /* Check if AvatarRetrieved gets called */ connect(connAvatarsInterface, SIGNAL(AvatarRetrieved(uint, const QString &, const QByteArray &, const QString &)), SLOT(onAvatarRetrieved(uint, const QString &, const QByteArray &, const QString &))); /* First time we create a contact, avatar should not be in cache, so * AvatarRetrieved should be called */ mGotAvatarRetrieved = false; createContactWithFakeAvatar("foo"); QVERIFY(mGotAvatarRetrieved); /* Second time we create a contact, avatar should be in cache now, so * AvatarRetrieved should NOT be called */ mGotAvatarRetrieved = false; createContactWithFakeAvatar("bar"); QVERIFY(!mGotAvatarRetrieved); QVERIFY(SmartDir(tmpDir).removeDirectory()); } void TestContactsAvatar::testRequestAvatars() { TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); const gchar avatarData[] = "fake-avatar-data"; const gchar avatarToken[] = "fake-avatar-token"; const gchar avatarMimeType[] = "fake-avatar-mime-type"; TpHandle handle; GArray *array; array = g_array_new(FALSE, FALSE, sizeof(gchar)); g_array_append_vals(array, avatarData, strlen(avatarData)); // First let's create the contacts Tp::UIntList handles; for (int i = 0; i < 100; ++i) { QString contactId = QLatin1String("contact") + QString::number(i); handle = tp_handle_ensure(serviceRepo, contactId.toLatin1().constData(), NULL, NULL); handles << handle; } Features features = Features() << Contact::FeatureAvatarToken << Contact::FeatureAvatarData; QList contacts = mConn->contacts(handles, features); QCOMPARE(contacts.size(), handles.size()); // now let's update the avatar for half of them so we can later check that requestContactAvatars // actually worked for all contacts. mAvatarDatasChanged = 0; for (int i = 0; i < contacts.size(); ++i) { ContactPtr contact = contacts[i]; QVERIFY(contact->avatarData().fileName.isEmpty()); QString contactAvatarToken = QLatin1String(avatarToken) + QString::number(i); QVERIFY(connect(contact.data(), SIGNAL(avatarDataChanged(const Tp::AvatarData &)), SLOT(onAvatarDataChanged(const Tp::AvatarData &)))); tp_tests_contacts_connection_change_avatar_data( TP_TESTS_CONTACTS_CONNECTION(mConn->service()), contact->handle()[0], array, avatarMimeType, contactAvatarToken.toLatin1().constData(), (i % 2)); } processDBusQueue(mConn->client().data()); while (mAvatarDatasChanged < contacts.size() / 2) { mLoop->processEvents(); } // check the only half got the updates QCOMPARE(mAvatarDatasChanged, contacts.size() / 2); for (int i = 0; i < contacts.size(); ++i) { ContactPtr contact = contacts[i]; if (i % 2) { QVERIFY(!contact->avatarData().fileName.isEmpty()); QCOMPARE(contact->avatarData().mimeType, QLatin1String(avatarMimeType)); QString contactAvatarToken = QLatin1String(avatarToken) + QString::number(i); QCOMPARE(contact->avatarToken(), contactAvatarToken); } else { QVERIFY(contact->avatarData().fileName.isEmpty()); } } // let's call ContactManager::requestContactAvatars now, it should update all contacts mAvatarDatasChanged = 0; mConn->client()->contactManager()->requestContactAvatars(contacts); processDBusQueue(mConn->client().data()); // the other half will now receive the avatar while (mAvatarDatasChanged < contacts.size() / 2) { mLoop->processEvents(); } // check the only half got the updates QCOMPARE(mAvatarDatasChanged, contacts.size() / 2); for (int i = 0; i < contacts.size(); ++i) { ContactPtr contact = contacts[i]; QVERIFY(!contact->avatarData().fileName.isEmpty()); QCOMPARE(contact->avatarData().mimeType, QLatin1String(avatarMimeType)); QString contactAvatarToken = QLatin1String(avatarToken) + QString::number(i); QCOMPARE(contact->avatarToken(), contactAvatarToken); } mAvatarDatasChanged = 0; // empty D-DBus queue processDBusQueue(mConn->client().data()); // it should silently work, no crash mConn->client()->contactManager()->requestContactAvatars(QList()); // let the mainloop run processDBusQueue(mConn->client().data()); QCOMPARE(mAvatarDatasChanged, 0); } void TestContactsAvatar::cleanup() { cleanupImpl(); } void TestContactsAvatar::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestContactsAvatar) #include "_gen/contacts-avatar.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-requests.cpp0000644000175100017520000001113712530423576023336 0ustar00kaffeinekaffeine00000000000000#include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include using namespace Tp; class TestConnRequests : public Test { Q_OBJECT public: TestConnRequests(QObject *parent = 0) : Test(parent), mConn(0), mHandle(0) { } protected Q_SLOTS: void expectPendingHandleFinished(Tp::PendingOperation*); void expectCreateChannelFinished(Tp::PendingOperation *); void expectEnsureChannelFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testRequestHandle(); void testCreateChannel(); void testEnsureChannel(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; QString mChanObjectPath; uint mHandle; }; void TestConnRequests::expectPendingHandleFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingHandles *pending = qobject_cast(op); mHandle = pending->handles().at(0); mLoop->exit(0); } void TestConnRequests::expectCreateChannelFinished(PendingOperation* op) { TEST_VERIFY_OP(op); PendingChannel *pc = qobject_cast(op); ChannelPtr chan = pc->channel(); mChanObjectPath = chan->objectPath(); mLoop->exit(0); } void TestConnRequests::expectEnsureChannelFinished(PendingOperation* op) { TEST_VERIFY_OP(op); PendingChannel *pc = qobject_cast(op); ChannelPtr chan = pc->channel(); QCOMPARE(pc->yours(), false); QCOMPARE(chan->objectPath(), mChanObjectPath); mLoop->exit(0); } void TestConnRequests::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-requests"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_2_CONNECTION, "account", "me@example.com", "protocol", "contacts", NULL); QCOMPARE(mConn->connect(), true); } void TestConnRequests::init() { initImpl(); } void TestConnRequests::testRequestHandle() { // Test identifiers QStringList ids = QStringList() << QLatin1String("alice"); // Request handles for the identifiers and wait for the request to process PendingHandles *pending = mConn->client()->lowlevel()->requestHandles(Tp::HandleTypeContact, ids); QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingHandleFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(disconnect(pending, SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(expectPendingHandleFinished(Tp::PendingOperation*)))); QVERIFY(mHandle != 0); } void TestConnRequests::testCreateChannel() { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), mHandle); QVERIFY(connect(mConn->client()->lowlevel()->createChannel(request), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectCreateChannelFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestConnRequests::testEnsureChannel() { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), mHandle); QVERIFY(connect(mConn->client()->lowlevel()->ensureChannel(request), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectEnsureChannelFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); } void TestConnRequests::cleanup() { cleanupImpl(); } void TestConnRequests::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestConnRequests) #include "_gen/conn-requests.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/streamed-media-chan.cpp0000644000175100017520000016343412530423576024330 0ustar00kaffeinekaffeine00000000000000#include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include using namespace Tp; class TestStreamedMediaChan : public Test { Q_OBJECT public: TestStreamedMediaChan(QObject *parent = 0) : Test(parent), mConn(0) { } protected Q_SLOTS: void expectRequestStreamsFinished(Tp::PendingOperation *); void expectBusyRequestStreamsFinished(Tp::PendingOperation *); // Special event handlers for the OutgoingCall state-machine void expectOutgoingRequestStreamsFinished(Tp::PendingOperation *); void onOutgoingGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &); void onGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &); void onStreamRemoved(const Tp::StreamedMediaStreamPtr &); void onStreamDirectionChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamDirection, Tp::MediaStreamPendingSend); void onLSSChanged(Tp::StreamedMediaStream::SendingState); void onRSSChanged(Tp::StreamedMediaStream::SendingState); void onStreamStateChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamState); void onChanInvalidated(Tp::DBusProxy *, const QString &, const QString &); // Special event handlers for the OutgoingCallTerminate state-machine void expectTerminateRequestStreamsFinished(Tp::PendingOperation *); void onTerminateGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &); void onTerminateChanInvalidated(Tp::DBusProxy *, const QString &, const QString &); void onNewChannels(const Tp::ChannelDetailsList &); void onLocalHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason); private Q_SLOTS: void initTestCase(); void init(); void testOutgoingCall(); void testOutgoingCallBusy(); void testOutgoingCallNoAnswer(); void testOutgoingCallTerminate(); void testIncomingCall(); void testHold(); void testHoldNoUnhold(); void testHoldInabilityUnhold(); void testDTMF(); void testDTMFNoContinuousTone(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; StreamedMediaChannelPtr mChan; QList mContacts; StreamedMediaStreams mRequestStreamsReturn; Contacts mChangedCurrent; Contacts mChangedLP; Contacts mChangedRP; Contacts mChangedRemoved; Channel::GroupMemberChangeDetails mDetails; StreamedMediaStreamPtr mStreamRemovedReturn; StreamedMediaStreamPtr mSDCStreamReturn; Tp::MediaStreamDirection mSDCDirectionReturn; Tp::MediaStreamPendingSend mSDCPendingReturn; StreamedMediaStreamPtr mSSCStreamReturn; Tp::StreamedMediaStream::SendingState mChangedLSS; Tp::StreamedMediaStream::SendingState mChangedRSS; Tp::MediaStreamState mSSCStateReturn; QQueue mLocalHoldStates; QQueue mLocalHoldStateReasons; // state machine for the OutgoingCall test-case enum { OutgoingStateInitial, OutgoingStateRequested, OutgoingStateRinging, OutgoingStateDone } mOutgoingState; bool mOutgoingGotRequestStreamsFinished; bool mOutgoingAudioDone; // state machine for the OutgoingCallTerminate test-case enum { TerminateStateInitial, TerminateStateRequested, TerminateStateRinging, TerminateStateAnswered, TerminateStateTerminated } mTerminateState; }; void TestStreamedMediaChan::expectRequestStreamsFinished(PendingOperation *op) { mRequestStreamsReturn.clear(); TEST_VERIFY_OP(op); qDebug() << "request streams finished successfully"; PendingStreamedMediaStreams *pms = qobject_cast(op); mRequestStreamsReturn = pms->streams(); mLoop->exit(0); } void TestStreamedMediaChan::expectBusyRequestStreamsFinished(PendingOperation *op) { if (!op->isFinished()) { qWarning() << "unfinished"; mLoop->exit(1); return; } if (op->isError()) { // The service signaled busy even before tp-qt finished introspection. // FIXME: should the error be something else, actually? Such as, perchance, // org.freedesktop.Telepathy.Error.Busy? (fd.o #29757). QCOMPARE(op->errorName(), QLatin1String("org.freedesktop.Telepathy.Error.Cancelled")); qDebug() << "request streams finished already busy"; mLoop->exit(0); return; } qDebug() << "request streams finished successfully"; PendingStreamedMediaStreams *pms = qobject_cast(op); mRequestStreamsReturn = pms->streams(); mLoop->exit(0); } void TestStreamedMediaChan::expectOutgoingRequestStreamsFinished(PendingOperation *op) { QVERIFY(op->isFinished()); QVERIFY(!op->isError()); QVERIFY(op->isValid()); PendingStreamedMediaStreams *pms = qobject_cast(op); mRequestStreamsReturn = pms->streams(); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); QCOMPARE(mContacts.size(), 1); StreamedMediaStreamPtr stream = mRequestStreamsReturn.first(); QCOMPARE(stream->contact(), otherContact); QCOMPARE(stream->type(), Tp::MediaStreamTypeAudio); // These checks can't work reliably, unless we add some complex backdoors to the test service, // to only start changing state / direction when we explicitly tell it so (not automatically // when we have requested the stream) // QCOMPARE(stream->state(), Tp::MediaStreamStateDisconnected); // QCOMPARE(stream->direction(), Tp::MediaStreamDirectionBidirectional); QCOMPARE(mChan->streams().size(), 1); QVERIFY(mChan->streams().contains(stream)); qDebug() << "stream requested successfully"; // Only advance to Requested if the remote moving to RP hasn't already advanced it to Ringing or // even Answered - tbf it seems the StreamedMediaChannel semantics are quite hard for // application code to get right because the events can happen in whichever order. Should this // be considered a bug by itself? It'd probably be pretty hard to fix so I hope not :D if (mOutgoingState == OutgoingStateInitial) { mOutgoingState = OutgoingStateRequested; } if (mOutgoingState == OutgoingStateDone) { // finished later than the membersChanged() - exit mainloop now mLoop->exit(0); } else { // finished earlier than membersChanged() - it will exit mOutgoingGotRequestStreamsFinished = true; } } void TestStreamedMediaChan::onOutgoingGroupMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { // At this point, mContacts should still contain the contact we requested the // stream for ContactPtr otherContact = mContacts.first(); if (mOutgoingState == OutgoingStateInitial || mOutgoingState == OutgoingStateRequested) { // The target should have become remote pending now QVERIFY(groupMembersAdded.isEmpty()); QVERIFY(groupLocalPendingMembersAdded.isEmpty()); QCOMPARE(groupRemotePendingMembersAdded.size(), 1); QVERIFY(groupMembersRemoved.isEmpty()); QVERIFY(mChan->groupRemotePendingContacts().contains(otherContact)); QCOMPARE(mChan->awaitingRemoteAnswer(), true); qDebug() << "call now ringing"; mOutgoingState = OutgoingStateRinging; } else if (mOutgoingState == OutgoingStateRinging) { QCOMPARE(groupMembersAdded.size(), 1); QVERIFY(groupLocalPendingMembersAdded.isEmpty()); QVERIFY(groupRemotePendingMembersAdded.isEmpty()); QVERIFY(groupMembersRemoved.isEmpty()); QCOMPARE(mChan->groupContacts().size(), 2); QVERIFY(mChan->groupContacts().contains(otherContact)); QCOMPARE(mChan->awaitingRemoteAnswer(), false); qDebug() << "call now answered"; mOutgoingState = OutgoingStateDone; mOutgoingAudioDone = true; // Exit if we already got finished() from requestStreams() - otherwise the finish callback // will exit if (mOutgoingGotRequestStreamsFinished) { mLoop->exit(0); } } qDebug() << "group members changed"; mChangedCurrent = groupMembersAdded; mChangedLP = groupLocalPendingMembersAdded; mChangedRP = groupRemotePendingMembersAdded; mChangedRemoved = groupMembersRemoved; mDetails = details; } void TestStreamedMediaChan::onGroupMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { qDebug() << "group members changed"; mChangedCurrent = groupMembersAdded; mChangedLP = groupLocalPendingMembersAdded; mChangedRP = groupRemotePendingMembersAdded; mChangedRemoved = groupMembersRemoved; mDetails = details; } void TestStreamedMediaChan::onStreamRemoved(const StreamedMediaStreamPtr &stream) { qDebug() << "stream" << stream.data() << "removed"; mStreamRemovedReturn = stream; mLoop->exit(0); } void TestStreamedMediaChan::onStreamDirectionChanged(const StreamedMediaStreamPtr &stream, Tp::MediaStreamDirection direction, Tp::MediaStreamPendingSend pendingSend) { qDebug() << "stream" << stream.data() << "direction changed to" << direction; mSDCStreamReturn = stream; mSDCDirectionReturn = direction; mSDCPendingReturn = pendingSend; mLoop->exit(0); } void TestStreamedMediaChan::onLSSChanged(Tp::StreamedMediaStream::SendingState state) { qDebug() << "onLSSChanged: " << static_cast(state); mChangedLSS = state; mLoop->exit(0); } void TestStreamedMediaChan::onRSSChanged(Tp::StreamedMediaStream::SendingState state) { qDebug() << "onRSSChanged: " << static_cast(state); mChangedRSS = state; mLoop->exit(0); } void TestStreamedMediaChan::onStreamStateChanged(const StreamedMediaStreamPtr &stream, Tp::MediaStreamState state) { qDebug() << "stream" << stream.data() << "state changed to" << state; mSSCStreamReturn = stream; mSSCStateReturn = state; mLoop->exit(0); } void TestStreamedMediaChan::onChanInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { qDebug() << "chan invalidated:" << errorName << "-" << errorMessage; mLoop->exit(0); } void TestStreamedMediaChan::expectTerminateRequestStreamsFinished(PendingOperation *op) { QVERIFY(op->isFinished()); if (op->isError()) { // FIXME: should the error be something else, actually? Such as, perchance, // org.freedesktop.Telepathy.Error.Terminated? (fd.o #29757). QCOMPARE(op->errorName(), QLatin1String("org.freedesktop.Telepathy.Error.Cancelled")); qDebug() << "The remote hung up before we even got to take a look at the stream!"; mTerminateState = TerminateStateTerminated; mLoop->exit(0); return; } QVERIFY(op->isValid()); PendingStreamedMediaStreams *pms = qobject_cast(op); mRequestStreamsReturn = pms->streams(); qDebug() << "stream requested successfully"; // Only advance to Requested if the remote moving to RP hasn't already advanced it to Ringing or // even Answered - tbf it seems the StreamedMediaChannel semantics are quite hard for // application code to get right because the events can happen in whichever order. Should this // be considered a bug by itself? It'd probably be pretty hard to fix so I hope not :D if (mTerminateState == TerminateStateInitial) { mTerminateState = TerminateStateRequested; } } void TestStreamedMediaChan::onTerminateGroupMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { // At this point, mContacts should still contain the contact we requested the // stream for ContactPtr otherContact = mContacts.first(); if (mTerminateState == TerminateStateInitial || mTerminateState == TerminateStateRequested) { // The target should have become remote pending now QVERIFY(groupMembersAdded.isEmpty()); QVERIFY(groupLocalPendingMembersAdded.isEmpty()); QCOMPARE(groupRemotePendingMembersAdded.size(), 1); QVERIFY(groupMembersRemoved.isEmpty()); QVERIFY(mChan->groupRemotePendingContacts().contains(otherContact)); QCOMPARE(mChan->awaitingRemoteAnswer(), true); qDebug() << "call now ringing"; mTerminateState = TerminateStateRinging; } else if (mTerminateState == TerminateStateRinging) { QCOMPARE(groupMembersAdded.size(), 1); QVERIFY(groupLocalPendingMembersAdded.isEmpty()); QVERIFY(groupRemotePendingMembersAdded.isEmpty()); QVERIFY(groupMembersRemoved.isEmpty()); QCOMPARE(mChan->groupContacts().size(), 2); QVERIFY(mChan->groupContacts().contains(otherContact)); QCOMPARE(mChan->awaitingRemoteAnswer(), false); qDebug() << "call now answered"; mTerminateState = TerminateStateAnswered; } else if (mTerminateState == TerminateStateAnswered) { // It might be actually that currently this won't happen before invalidated() is emitted, so // we'll never reach this due to having exited the mainloop already - but it's entirely // valid for the library to signal either the invalidation or removing the members first, so // let's verify the member change in case it does that first. qDebug() << "membersChanged() after the call was answered - the remote probably hung up"; QVERIFY(groupMembersAdded.isEmpty()); QVERIFY(groupLocalPendingMembersAdded.isEmpty()); QVERIFY(groupRemotePendingMembersAdded.isEmpty()); QVERIFY(groupMembersRemoved.contains(otherContact) || groupMembersRemoved.contains(mChan->groupSelfContact())); // can be either, or both // the invalidated handler will change state due to the fact that we might get 0-2 of these, // but always exactly one invalidated() } qDebug() << "group members changed"; mChangedCurrent = groupMembersAdded; mChangedLP = groupLocalPendingMembersAdded; mChangedRP = groupRemotePendingMembersAdded; mChangedRemoved = groupMembersRemoved; mDetails = details; } void TestStreamedMediaChan::onTerminateChanInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { qDebug() << "chan invalidated:" << errorName << "-" << errorMessage; mTerminateState = TerminateStateTerminated; mLoop->exit(0); } void TestStreamedMediaChan::onNewChannels(const Tp::ChannelDetailsList &channels) { qDebug() << "new channels"; Q_FOREACH (const Tp::ChannelDetails &details, channels) { QString channelType = details.properties.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); bool requested = details.properties.value(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")).toBool(); qDebug() << " channelType:" << channelType; qDebug() << " requested :" << requested; if (channelType == TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA && !requested) { mChan = StreamedMediaChannel::create(mConn->client(), details.channel.path(), details.properties); mLoop->exit(0); } } } void TestStreamedMediaChan::onLocalHoldStateChanged(Tp::LocalHoldState localHoldState, Tp::LocalHoldStateReason localHoldStateReason) { qDebug() << "local hold state changed:" << localHoldState << localHoldStateReason; mLocalHoldStates.append(localHoldState); mLocalHoldStateReasons.append(localHoldStateReason); mLoop->exit(0); } void TestStreamedMediaChan::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("streamed-media-chan"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_CALLABLE_CONNECTION, "account", "me@example.com", "protocol", "example", "simulation-delay", 1, NULL); QCOMPARE(mConn->connect(Connection::FeatureSelfContact), true); } void TestStreamedMediaChan::init() { initImpl(); mContacts.clear(); mRequestStreamsReturn.clear(); mChangedCurrent.clear(); mChangedLP.clear(); mChangedRP.clear(); mChangedRemoved.clear(); mStreamRemovedReturn.reset(); mSDCStreamReturn.reset(); mSDCDirectionReturn = (Tp::MediaStreamDirection) -1; mSDCPendingReturn = (Tp::MediaStreamPendingSend) -1; mSSCStateReturn = (Tp::MediaStreamState) -1; mChangedLSS = (Tp::StreamedMediaStream::SendingState) -1; mChangedRSS = (Tp::StreamedMediaStream::SendingState) -1; mSSCStreamReturn.reset(); mLocalHoldStates.clear(); mLocalHoldStateReasons.clear(); } void TestStreamedMediaChan::testOutgoingCall() { mContacts = mConn->contacts(QStringList() << QLatin1String("alice")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); QCOMPARE(mChan->streams().size(), 0); QCOMPARE(mChan->groupContacts().size(), 1); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->awaitingLocalAnswer(), false); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); QVERIFY(connect(mChan.data(), SIGNAL(groupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)))); // RequestStreams with bad type must fail QVERIFY(connect(mChan->requestStream(otherContact, (Tp::MediaStreamType) -1), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 2); QCOMPARE(mRequestStreamsReturn.size(), 0); // Request audio stream, and wait for: // - the request to finish // - the contact to appear on RP // - the contact to accept the call mOutgoingState = OutgoingStateInitial; mOutgoingAudioDone = false; mOutgoingGotRequestStreamsFinished = false; QVERIFY(connect(mChan.data(), SIGNAL(groupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onOutgoingGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)))); qDebug() << "requesting audio stream"; QVERIFY(connect(mChan->requestStreams(otherContact, QList() << Tp::MediaStreamTypeAudio), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectOutgoingRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(mOutgoingState), static_cast(OutgoingStateDone)); QCOMPARE(mOutgoingAudioDone, true); qDebug() << "requesting video stream"; // Request video stream QVERIFY(connect(mChan->requestStream(otherContact, Tp::MediaStreamTypeVideo), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mRequestStreamsReturn.size(), 1); StreamedMediaStreamPtr stream = mRequestStreamsReturn.first(); QCOMPARE(stream->contact(), otherContact); QCOMPARE(stream->type(), Tp::MediaStreamTypeVideo); // These checks can't work reliably, unless we add some complex backdoors to the test service, // to only start changing state / direction when we explicitly tell it so (not automatically // when we have requested the stream) // QCOMPARE(stream->state(), Tp::MediaStreamStateDisconnected); // QCOMPARE(stream->direction(), Tp::MediaStreamDirectionBidirectional); QCOMPARE(mChan->streams().size(), 2); QVERIFY(mChan->streams().contains(stream)); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeAudio).size(), 1); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeVideo).size(), 1); // test stream removal stream = mChan->streamsForType(Tp::MediaStreamTypeAudio).first(); QVERIFY(stream); qDebug() << "removing audio stream"; QVERIFY(connect(mChan.data(), SIGNAL(streamRemoved(const Tp::StreamedMediaStreamPtr &)), SLOT(onStreamRemoved(const Tp::StreamedMediaStreamPtr &)))); QVERIFY(connect(mChan->removeStream(stream), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); if (mChan->streams().size() == 2) { qDebug() << "re-entering mainloop to wait for stream removal being signaled"; // wait stream removed signal QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mStreamRemovedReturn, stream); QCOMPARE(mChan->streams().size(), 1); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeAudio).size(), 0); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeVideo).size(), 1); // test stream direction/state changed stream = mChan->streamsForType(Tp::MediaStreamTypeVideo).first(); QVERIFY(stream); qDebug() << "changing stream direction, currently" << stream->direction(); qDebug() << "state currently" << stream->state(); if (stream->state() != Tp::MediaStreamStateConnected) { QVERIFY(connect(mChan.data(), SIGNAL(streamStateChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamState)), SLOT(onStreamStateChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamState)))); } else { // Pretend that we saw the SSC to Connected (although it might have happened even before the // stream request finished, in which case we have no change of catching it, because we don't // have the stream yet) mSSCStreamReturn = stream; mSSCStateReturn = Tp::MediaStreamStateConnected; } QCOMPARE(stream->localSendingRequested(), false); QCOMPARE(stream->remoteSendingRequested(), false); QCOMPARE(stream->sending(), true); QCOMPARE(stream->receiving(), true); /* request only receiving now */ QVERIFY(connect(mChan.data(), SIGNAL(streamDirectionChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamDirection, Tp::MediaStreamPendingSend)), SLOT(onStreamDirectionChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamDirection, Tp::MediaStreamPendingSend)))); QVERIFY(connect(stream.data(), SIGNAL(localSendingStateChanged(Tp::StreamedMediaStream::SendingState)), SLOT(onLSSChanged(Tp::StreamedMediaStream::SendingState)))); QVERIFY(connect(stream.data(), SIGNAL(remoteSendingStateChanged(Tp::StreamedMediaStream::SendingState)), SLOT(onRSSChanged(Tp::StreamedMediaStream::SendingState)))); QVERIFY(connect(stream->requestDirection(Tp::MediaStreamDirectionReceive), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (!mSDCStreamReturn || !mSSCStreamReturn || (static_cast(mChangedLSS) == -1)) { qDebug() << "re-entering mainloop to wait for stream direction change and state change"; // wait direction and state changed signal QCOMPARE(mLoop->exec(), 0); } // If this fails, we also got a remote state change signal, although we shouldn't have QCOMPARE(static_cast(mChangedRSS), -1); QCOMPARE(mSDCStreamReturn, stream); QVERIFY(mSDCDirectionReturn & Tp::MediaStreamDirectionReceive); QVERIFY(stream->direction() & Tp::MediaStreamDirectionReceive); QCOMPARE(stream->pendingSend(), mSDCPendingReturn); QCOMPARE(mSSCStreamReturn, stream); QCOMPARE(mSSCStateReturn, Tp::MediaStreamStateConnected); QCOMPARE(stream->sending(), false); QCOMPARE(stream->receiving(), true); } void TestStreamedMediaChan::testOutgoingCallBusy() { // This identifier contains the magic string (busy), which means the example // will simulate rejection of the call as busy rather than accepting it. mContacts = mConn->contacts(QStringList() << QLatin1String("alice (busy)")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); QCOMPARE(mChan->streams().size(), 0); QCOMPARE(mChan->groupContacts().size(), 1); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->awaitingLocalAnswer(), false); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); // Request audio stream QVERIFY(connect(mChan->requestStreams(otherContact, QList() << Tp::MediaStreamTypeAudio), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectBusyRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); if (mChan->isValid()) { qDebug() << "waiting for the channel to become invalidated"; QVERIFY(connect(mChan.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(onChanInvalidated(Tp::DBusProxy *, const QString &, const QString &)))); QCOMPARE(mLoop->exec(), 0); } else { qDebug() << "not waiting for the channel to become invalidated, it has been invalidated" << "already"; } QCOMPARE(mChan->groupContacts().size(), 0); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->streams().size(), 0); } void TestStreamedMediaChan::testOutgoingCallNoAnswer() { // This identifier contains the magic string (no answer), which means the example // will never answer. mContacts = mConn->contacts(QStringList() << QLatin1String("alice (no answer)")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); QCOMPARE(mChan->streams().size(), 0); QCOMPARE(mChan->groupContacts().size(), 1); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->awaitingLocalAnswer(), false); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); // Request audio stream QVERIFY(connect(mChan->requestStreams(otherContact, QList() << Tp::MediaStreamTypeAudio), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); /* After the initial flurry of D-Bus messages, alice still hasn't answered */ processDBusQueue(mConn->client().data()); QVERIFY(connect(mChan.data(), SIGNAL(groupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)))); // wait the contact to appear on RP while (mChan->groupRemotePendingContacts().size() == 0) { mLoop->processEvents(); } QVERIFY(mChan->groupRemotePendingContacts().contains(otherContact)); QCOMPARE(mChan->awaitingRemoteAnswer(), true); QCOMPARE(mChan->groupRemotePendingContacts().size(), 1); /* assume we're never going to get an answer, and hang up */ mChan->requestClose(); QVERIFY(connect(mChan.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(onChanInvalidated(Tp::DBusProxy *, const QString &, const QString &)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->groupContacts().size(), 0); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->streams().size(), 0); } void TestStreamedMediaChan::testOutgoingCallTerminate() { // This identifier contains the magic string (terminate), which means the example // will simulate answering the call but then terminating it. mContacts = mConn->contacts(QStringList() << QLatin1String("alice (terminate)")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); QCOMPARE(mChan->streams().size(), 0); QCOMPARE(mChan->groupContacts().size(), 1); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->awaitingLocalAnswer(), false); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); // Request audio stream, and verify that following doing so, we get events for: // [0-2].5) the stream request finishing (sadly this can happen before, or between, any of the // following) - is this a bug? // 1) the remote appearing on the RP contacts -> should be awaitingRemoteAnswer() // 2) the remote answering the call -> should not be awaitingRemoteAnswer(), should have us and // them as the current members // 3) the channel being invalidated (due to the remote having terminated the call) -> exits the // mainloop // // Previously, this test used to spin the mainloop until each of the events had seemingly // happened, only checking for the events between the iterations. This is race-prone however, // as multiple events can happen in one mainloop iteration if the test executes slowly compared // with the simulated network events from the service (eg. in valgrind or under high system // load). mTerminateState = TerminateStateInitial; QVERIFY(connect(mChan.data(), SIGNAL(groupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)), SLOT(onTerminateGroupMembersChanged( const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Channel::GroupMemberChangeDetails &)))); QVERIFY(connect(mChan.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(onTerminateChanInvalidated(Tp::DBusProxy *, const QString &, const QString &)))); qDebug() << "calling, hope somebody answers and doesn't immediately hang up!"; QVERIFY(connect(mChan->requestStreams(otherContact, QList() << Tp::MediaStreamTypeAudio), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectTerminateRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(static_cast(mTerminateState), static_cast(TerminateStateTerminated)); qDebug() << "oh crap, nobody wants to talk to me"; } void TestStreamedMediaChan::testIncomingCall() { mConn->client()->lowlevel()->setSelfPresence(QLatin1String("away"), QLatin1String("preparing for a test")); Client::ConnectionInterfaceRequestsInterface *connRequestsInterface = mConn->client()->optionalInterface(); QVERIFY(connect(connRequestsInterface, SIGNAL(NewChannels(const Tp::ChannelDetailsList&)), SLOT(onNewChannels(const Tp::ChannelDetailsList&)))); mConn->client()->lowlevel()->setSelfPresence(QLatin1String("available"), QLatin1String("call me?")); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan); QCOMPARE(mChan->streams().size(), 0); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); QCOMPARE(mChan->streams().size(), 1); QCOMPARE(mChan->groupContacts().size(), 1); QCOMPARE(mChan->groupLocalPendingContacts().size(), 1); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->awaitingLocalAnswer(), true); QCOMPARE(mChan->awaitingRemoteAnswer(), false); QVERIFY(mChan->groupLocalPendingContacts().contains(mConn->client()->selfContact())); ContactPtr otherContact = *mChan->groupContacts().begin(); QCOMPARE(otherContact, mChan->initiatorContact()); QVERIFY(connect(mChan->acceptCall(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan->groupContacts().size(), 2); QCOMPARE(mChan->groupLocalPendingContacts().size(), 0); QCOMPARE(mChan->groupRemotePendingContacts().size(), 0); QCOMPARE(mChan->awaitingLocalAnswer(), false); QVERIFY(mChan->groupContacts().contains(mConn->client()->selfContact())); QCOMPARE(mChan->streams().size(), 1); StreamedMediaStreamPtr stream = mChan->streams().first(); QCOMPARE(stream->channel(), mChan); QCOMPARE(stream->type(), Tp::MediaStreamTypeAudio); qDebug() << "requesting a stream with a bad type"; // RequestStreams with bad type must fail QVERIFY(connect(mChan->requestStream(otherContact, (Tp::MediaStreamType) -1), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 2); QCOMPARE(mRequestStreamsReturn.size(), 0); qDebug() << "requesting a video stream"; // Request video stream QVERIFY(connect(mChan->requestStream(otherContact, Tp::MediaStreamTypeVideo), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mRequestStreamsReturn.size(), 1); stream = mRequestStreamsReturn.first(); QCOMPARE(stream->contact(), otherContact); QCOMPARE(stream->type(), Tp::MediaStreamTypeVideo); // These checks can't work reliably, unless we add some complex backdoors to the test service, // to only start changing state / direction when we explicitly tell it so (not automatically // when we have requested the stream) // QCOMPARE(stream->state(), Tp::MediaStreamStateDisconnected); // QCOMPARE(stream->direction(), Tp::MediaStreamDirectionBidirectional); QCOMPARE(mChan->streams().size(), 2); QVERIFY(mChan->streams().contains(stream)); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeAudio).size(), 1); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeVideo).size(), 1); // test stream removal stream = mChan->streamsForType(Tp::MediaStreamTypeAudio).first(); QVERIFY(stream); qDebug() << "removing the audio stream"; QVERIFY(connect(mChan.data(), SIGNAL(streamRemoved(const Tp::StreamedMediaStreamPtr &)), SLOT(onStreamRemoved(const Tp::StreamedMediaStreamPtr &)))); QVERIFY(connect(mChan->removeStreams(StreamedMediaStreams() << stream), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); if (mChan->streams().size() == 2) { // wait stream removed signal QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mStreamRemovedReturn, stream); QCOMPARE(mChan->streams().size(), 1); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeAudio).size(), 0); QCOMPARE(mChan->streamsForType(Tp::MediaStreamTypeVideo).size(), 1); // test stream direction/state changed stream = mChan->streamsForType(Tp::MediaStreamTypeVideo).first(); QVERIFY(stream); qDebug() << "requesting direction (false, true) - currently" << stream->direction(); qDebug() << "current stream state" << stream->state(); if (stream->state() != Tp::MediaStreamStateConnected) { QVERIFY(connect(mChan.data(), SIGNAL(streamStateChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamState)), SLOT(onStreamStateChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamState)))); } else { // Pretend that we saw the SSC to Connected (although it might have happened even before the // stream request finished, in which case we have no change of catching it, because we don't // have the stream yet) mSSCStreamReturn = stream; mSSCStateReturn = Tp::MediaStreamStateConnected; } QVERIFY(connect(mChan.data(), SIGNAL(streamDirectionChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamDirection, Tp::MediaStreamPendingSend)), SLOT(onStreamDirectionChanged(const Tp::StreamedMediaStreamPtr &, Tp::MediaStreamDirection, Tp::MediaStreamPendingSend)))); QVERIFY(connect(stream.data(), SIGNAL(localSendingStateChanged(Tp::StreamedMediaStream::SendingState)), SLOT(onLSSChanged(Tp::StreamedMediaStream::SendingState)))); QVERIFY(connect(stream.data(), SIGNAL(remoteSendingStateChanged(Tp::StreamedMediaStream::SendingState)), SLOT(onRSSChanged(Tp::StreamedMediaStream::SendingState)))); QVERIFY(connect(stream->requestDirection(false, true), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (!mSDCStreamReturn || !mSSCStreamReturn || (static_cast(mChangedLSS) == -1)) { // wait direction and state changed signal qDebug() << "re-entering mainloop to wait for stream direction change and state change"; QCOMPARE(mLoop->exec(), 0); } // If this fails, we also got a remote state change signal, although we shouldn't have QCOMPARE(static_cast(mChangedRSS), -1); QCOMPARE(mSDCStreamReturn, stream); QVERIFY(mSDCDirectionReturn & Tp::MediaStreamDirectionReceive); QVERIFY(stream->direction() & Tp::MediaStreamDirectionReceive); QCOMPARE(stream->pendingSend(), mSDCPendingReturn); QCOMPARE(mSSCStreamReturn, stream); QCOMPARE(mSSCStateReturn, Tp::MediaStreamStateConnected); } void TestStreamedMediaChan::testHold() { mContacts = mConn->contacts(QStringList() << QLatin1String("bob")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureLocalHoldState), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureLocalHoldState)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateUnheld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonNone)); QVERIFY(connect(mChan.data(), SIGNAL(localHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)), SLOT(onLocalHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)))); // Request hold QVERIFY(connect(mChan->requestHold(true), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLocalHoldStates.size() != 2) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLocalHoldStates.first(), static_cast(LocalHoldStatePendingHold)); QCOMPARE(mLocalHoldStateReasons.first(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(mLocalHoldStates.last(), static_cast(LocalHoldStateHeld)); QCOMPARE(mLocalHoldStateReasons.last(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateHeld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonRequested)); mLocalHoldStates.clear(); mLocalHoldStateReasons.clear(); // Request unhold QVERIFY(connect(mChan->requestHold(false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLocalHoldStates.size() != 2) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLocalHoldStates.first(), static_cast(LocalHoldStatePendingUnhold)); QCOMPARE(mLocalHoldStateReasons.first(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(mLocalHoldStates.last(), static_cast(LocalHoldStateUnheld)); QCOMPARE(mLocalHoldStateReasons.last(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateUnheld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonRequested)); } void TestStreamedMediaChan::testHoldNoUnhold() { mContacts = mConn->contacts(QStringList() << QLatin1String("bob (no unhold)")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureLocalHoldState), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureLocalHoldState)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateUnheld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonNone)); QVERIFY(connect(mChan.data(), SIGNAL(localHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)), SLOT(onLocalHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)))); // Request hold QPointer holdOp = mChan->requestHold(true); while (mLocalHoldStates.size() != 2 || (holdOp && !holdOp.data()->isFinished())) { mLoop->processEvents(); } QCOMPARE(!holdOp || holdOp.data()->isValid(), true); QCOMPARE(mLocalHoldStates.first(), static_cast(LocalHoldStatePendingHold)); QCOMPARE(mLocalHoldStateReasons.first(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(mLocalHoldStates.last(), static_cast(LocalHoldStateHeld)); QCOMPARE(mLocalHoldStateReasons.last(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateHeld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonRequested)); mLocalHoldStates.clear(); mLocalHoldStateReasons.clear(); qDebug() << "requesting failing unhold"; // Request unhold (fail) QVERIFY(connect(mChan->requestHold(false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 1); QCOMPARE(mLocalHoldStates.size(), 0); QCOMPARE(mLocalHoldStateReasons.size(), 0); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateHeld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonRequested)); } void TestStreamedMediaChan::testHoldInabilityUnhold() { mContacts = mConn->contacts( QStringList() << QLatin1String("bob (inability to unhold)")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureLocalHoldState), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureLocalHoldState)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateUnheld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonNone)); QVERIFY(connect(mChan.data(), SIGNAL(localHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)), SLOT(onLocalHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)))); // Request hold QVERIFY(connect(mChan->requestHold(true), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLocalHoldStates.size() != 2) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mLocalHoldStates.first(), static_cast(LocalHoldStatePendingHold)); QCOMPARE(mLocalHoldStateReasons.first(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(mLocalHoldStates.last(), static_cast(LocalHoldStateHeld)); QCOMPARE(mLocalHoldStateReasons.last(), static_cast(LocalHoldStateReasonRequested)); QCOMPARE(static_cast(mChan->localHoldState()), static_cast(LocalHoldStateHeld)); QCOMPARE(static_cast(mChan->localHoldStateReason()), static_cast(LocalHoldStateReasonRequested)); mLocalHoldStates.clear(); mLocalHoldStateReasons.clear(); // Request unhold (fail - back to hold) QVERIFY(connect(mChan->requestHold(false), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); while (mLocalHoldStates.size() != 3) { QCOMPARE(mLoop->exec(), 0); } LocalHoldState state = static_cast(mLocalHoldStates.dequeue()); LocalHoldStateReason stateReason = static_cast(mLocalHoldStateReasons.dequeue()); QCOMPARE(state, LocalHoldStatePendingUnhold); QCOMPARE(stateReason, LocalHoldStateReasonRequested); state = static_cast(mLocalHoldStates.dequeue()); stateReason = static_cast(mLocalHoldStateReasons.dequeue()); QCOMPARE(state, LocalHoldStatePendingHold); QCOMPARE(stateReason, LocalHoldStateReasonRequested); state = static_cast(mLocalHoldStates.dequeue()); stateReason = static_cast(mLocalHoldStateReasons.dequeue()); QCOMPARE(state, LocalHoldStateHeld); QCOMPARE(stateReason, LocalHoldStateReasonRequested); QCOMPARE(mChan->localHoldState(), LocalHoldStateHeld); QCOMPARE(mChan->localHoldStateReason(), LocalHoldStateReasonRequested); } void TestStreamedMediaChan::testDTMF() { mContacts = mConn->contacts(QStringList() << QLatin1String("john")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); // Request audio stream QVERIFY(connect(mChan->requestStreams(otherContact, QList() << Tp::MediaStreamTypeAudio), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mRequestStreamsReturn.size(), 1); StreamedMediaStreamPtr stream = mRequestStreamsReturn.first(); QCOMPARE(stream->contact(), otherContact); QCOMPARE(stream->type(), Tp::MediaStreamTypeAudio); QCOMPARE(mChan->streams().size(), 1); QVERIFY(mChan->streams().contains(stream)); // start dtmf QVERIFY(connect(stream->startDTMFTone(DTMFEventDigit0), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // stop dtmf QVERIFY(connect(stream->stopDTMFTone(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // stop dtmf again (should succeed) QVERIFY(connect(stream->stopDTMFTone(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Request video stream QVERIFY(connect(mChan->requestStream(otherContact, Tp::MediaStreamTypeVideo), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mRequestStreamsReturn.size(), 1); stream = mRequestStreamsReturn.first(); QCOMPARE(stream->contact(), otherContact); QCOMPARE(stream->type(), Tp::MediaStreamTypeVideo); QCOMPARE(mChan->streams().size(), 2); QVERIFY(mChan->streams().contains(stream)); // start dtmf (must fail) QVERIFY(connect(stream->startDTMFTone(DTMFEventDigit0), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 1); // stop dtmf (must fail) QVERIFY(connect(stream->stopDTMFTone(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 1); } void TestStreamedMediaChan::testDTMFNoContinuousTone() { mContacts = mConn->contacts( QStringList() << QLatin1String("john (no continuous tone)")); QCOMPARE(mContacts.size(), 1); ContactPtr otherContact = mContacts.first(); QVERIFY(otherContact); mChan = StreamedMediaChannelPtr::qObjectCast( mConn->createChannel(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, otherContact)); QVERIFY(mChan); QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureStreams), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureStreams)); // Request audio stream QVERIFY(connect(mChan->requestStreams(otherContact, QList() << Tp::MediaStreamTypeAudio), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectRequestStreamsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mRequestStreamsReturn.size(), 1); StreamedMediaStreamPtr stream = mRequestStreamsReturn.first(); QCOMPARE(stream->contact(), otherContact); QCOMPARE(stream->type(), Tp::MediaStreamTypeAudio); QCOMPARE(mChan->streams().size(), 1); QVERIFY(mChan->streams().contains(stream)); // start dtmf QVERIFY(connect(stream->startDTMFTone(DTMFEventDigit0), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // stop dtmf (must fail) QVERIFY(connect(stream->stopDTMFTone(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 1); } void TestStreamedMediaChan::cleanup() { mChan.reset(); mContacts.clear(); mRequestStreamsReturn.clear(); mStreamRemovedReturn.reset(); mChangedCurrent.clear(); mChangedLP.clear(); mChangedRP.clear(); mChangedRemoved.clear(); mDetails = Channel::GroupMemberChangeDetails(); mSDCStreamReturn.reset(); mSSCStreamReturn.reset(); cleanupImpl(); } void TestStreamedMediaChan::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestStreamedMediaChan) #include "_gen/streamed-media-chan.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-addressing.cpp0000644000175100017520000003270212530423576023607 0ustar00kaffeinekaffeine00000000000000#include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include using namespace Tp; class TestConnAddressing : public Test { Q_OBJECT public: TestConnAddressing(QObject *parent = 0) : Test(parent) { } protected Q_SLOTS: void expectPendingContactsFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testSupport(); void testRequest(); void testRequestNoFeatures(); void testRequestEmpty(); void cleanup(); void cleanupTestCase(); private: void commonTestRequest(bool withFeatures); TestConnHelper *mConn; QList mContacts; Tp::UIntList mInvalidHandles; QStringList mValidIds; QHash > mInvalidIds; QStringList mValidVCardAddresses; QStringList mInvalidVCardAddresses; QStringList mValidUris; QStringList mInvalidUris; }; void TestConnAddressing::expectPendingContactsFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingContacts *pc = qobject_cast(op); mContacts = pc->contacts(); mInvalidHandles = pc->invalidHandles(); mValidIds = pc->validIdentifiers(); mInvalidIds = pc->invalidIdentifiers(); mValidVCardAddresses = pc->validVCardAddresses(); mInvalidVCardAddresses = pc->invalidVCardAddresses(); mValidUris = pc->validUris(); mInvalidUris = pc->invalidUris(); mLoop->exit(0); } void TestConnAddressing::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-addressing"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_ADDRESSING_CONNECTION, "account", "me@example.com", "protocol", "addressing", NULL); QVERIFY(mConn->connect()); } void TestConnAddressing::init() { initImpl(); mContacts.clear(); mInvalidHandles.clear(); mValidIds.clear(); mInvalidIds.clear(); mValidVCardAddresses.clear(); mInvalidVCardAddresses.clear(); mValidUris.clear(); mInvalidUris.clear(); } void TestConnAddressing::testSupport() { ConnectionPtr conn = mConn->client(); QVERIFY(!conn->lowlevel()->contactAttributeInterfaces().isEmpty()); QVERIFY(conn->lowlevel()->contactAttributeInterfaces().contains( TP_QT_IFACE_CONNECTION)); QVERIFY(conn->lowlevel()->contactAttributeInterfaces().contains( TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING)); Features supportedFeatures = conn->contactManager()->supportedFeatures(); QVERIFY(!supportedFeatures.isEmpty()); QVERIFY(supportedFeatures.contains(Contact::FeatureAddresses)); } void TestConnAddressing::commonTestRequest(bool withFeatures) { ConnectionPtr conn = mConn->client(); Features features; if (withFeatures) { features << Contact::FeatureInfo << Contact::FeatureAddresses; } QStringList validUris; validUris << QLatin1String("addr:foo"); QStringList invalidUris; invalidUris << QLatin1String("invalid_uri:bar"); QStringList uris(validUris); uris.append(invalidUris); PendingContacts *pc = conn->contactManager()->contactsForUris(uris, features); // Test the closure accessors QCOMPARE(pc->manager(), conn->contactManager()); QCOMPARE(pc->features(), features); QVERIFY(pc->isForUris()); QCOMPARE(pc->uris(), uris); QVERIFY(!pc->isForHandles()); QVERIFY(pc->handles().isEmpty()); QVERIFY(!pc->isForIdentifiers()); QVERIFY(pc->identifiers().isEmpty()); QVERIFY(!pc->isForVCardAddresses()); QVERIFY(pc->vcardField().isEmpty()); QVERIFY(pc->vcardAddresses().isEmpty()); QVERIFY(!pc->isUpgrade()); QVERIFY(pc->contactsToUpgrade().isEmpty()); // Wait for the contacts to be built QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // There should be 1 resulting contact ("foo") and 1 uri found to be invalid QCOMPARE(mContacts.size(), 1); QCOMPARE(mContacts[0]->id(), QLatin1String("foo")); if (withFeatures) { QVERIFY(!mContacts[0]->actualFeatures().contains(Contact::FeatureLocation)); QVERIFY(mContacts[0]->actualFeatures().contains(Contact::FeatureInfo)); QVERIFY(mContacts[0]->actualFeatures().contains(Contact::FeatureAddresses)); QMap vcardAddresses; vcardAddresses.insert(QLatin1String("x-addr"), QLatin1String("foo")); QStringList uris; uris.append(QLatin1String("addr:foo")); QCOMPARE(mContacts[0]->vcardAddresses(), vcardAddresses); QCOMPARE(mContacts[0]->uris(), uris); } else { QVERIFY(!mContacts[0]->actualFeatures().contains(Contact::FeatureLocation)); QVERIFY(!mContacts[0]->actualFeatures().contains(Contact::FeatureInfo)); // FeatureAddresses will be enabled even if not requested when // ContactManager::contactsForUris/VCardAddresses is used, // but we don't want to guarantee that, implementation detail } QCOMPARE(mValidUris, validUris); QCOMPARE(mInvalidUris, invalidUris); QVERIFY(mInvalidHandles.isEmpty()); QVERIFY(mValidIds.isEmpty()); QVERIFY(mInvalidIds.isEmpty()); QVERIFY(mValidVCardAddresses.isEmpty()); QVERIFY(mInvalidVCardAddresses.isEmpty()); QStringList ids; ids << QLatin1String("foo"); QList contacts = mConn->contacts(ids); QCOMPARE(contacts.size(), 1); QCOMPARE(mContacts[0], contacts[0]); // let's test for vCard now QString vcardField(QLatin1String("x-addr")); QStringList vcardAddresses; vcardAddresses << QLatin1String("foo") << QLatin1String("bar"); vcardAddresses.sort(); pc = conn->contactManager()->contactsForVCardAddresses(vcardField, vcardAddresses, features); // Test the closure accessors QCOMPARE(pc->manager(), conn->contactManager()); QCOMPARE(pc->features(), features); QVERIFY(pc->isForVCardAddresses()); QCOMPARE(pc->vcardField(), vcardField); QCOMPARE(pc->vcardAddresses(), vcardAddresses); QVERIFY(!pc->isForHandles()); QVERIFY(pc->handles().isEmpty()); QVERIFY(!pc->isForIdentifiers()); QVERIFY(pc->identifiers().isEmpty()); QVERIFY(!pc->isForUris()); QVERIFY(pc->uris().isEmpty()); QVERIFY(!pc->isUpgrade()); QVERIFY(pc->contactsToUpgrade().isEmpty()); // Wait for the contacts to be built QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // There should be 1 resulting contact ("foo") and 1 uri found to be invalid QCOMPARE(mContacts.size(), 2); if (withFeatures) { QVERIFY(!mContacts[0]->actualFeatures().contains(Contact::FeatureLocation)); QVERIFY(mContacts[0]->actualFeatures().contains(Contact::FeatureInfo)); QVERIFY(mContacts[0]->actualFeatures().contains(Contact::FeatureAddresses)); QVERIFY(!mContacts[1]->actualFeatures().contains(Contact::FeatureLocation)); QVERIFY(mContacts[1]->actualFeatures().contains(Contact::FeatureInfo)); QVERIFY(mContacts[1]->actualFeatures().contains(Contact::FeatureAddresses)); } else { QVERIFY(!mContacts[0]->actualFeatures().contains(Contact::FeatureLocation)); QVERIFY(!mContacts[0]->actualFeatures().contains(Contact::FeatureInfo)); QVERIFY(!mContacts[1]->actualFeatures().contains(Contact::FeatureLocation)); QVERIFY(!mContacts[1]->actualFeatures().contains(Contact::FeatureInfo)); // FeatureAddresses will be enabled even if not requested when // ContactManager::contactsForUris/VCardAddresses is used, // but we don't want to guarantee that, implementation detail } mValidVCardAddresses.sort(); QCOMPARE(mValidVCardAddresses, vcardAddresses); QVERIFY(mInvalidVCardAddresses.isEmpty()); QVERIFY(mInvalidHandles.isEmpty()); QVERIFY(mValidIds.isEmpty()); QVERIFY(mInvalidIds.isEmpty()); QVERIFY(mValidUris.isEmpty()); QVERIFY(mInvalidUris.isEmpty()); // contact "foo" should be one of the returned contacts QVERIFY(mContacts[0] != mContacts[1]); QVERIFY(mContacts.contains(contacts[0])); contacts.clear(); ids.clear(); ids << QLatin1String("foo") << QLatin1String("bar"); contacts = mConn->contacts(ids); QCOMPARE(contacts.size(), 2); QVERIFY(contacts.contains(mContacts[0])); QVERIFY(contacts.contains(mContacts[1])); } void TestConnAddressing::testRequest() { commonTestRequest(true); } void TestConnAddressing::testRequestNoFeatures() { commonTestRequest(false); } void TestConnAddressing::testRequestEmpty() { ConnectionPtr conn = mConn->client(); PendingContacts *pc = conn->contactManager()->contactsForHandles(UIntList()); QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pc->isForHandles()); QVERIFY(pc->handles().isEmpty()); QVERIFY(!pc->isForIdentifiers()); QVERIFY(pc->identifiers().isEmpty()); QVERIFY(!pc->isForUris()); QVERIFY(pc->uris().isEmpty()); QVERIFY(!pc->isForVCardAddresses()); QVERIFY(pc->vcardField().isEmpty()); QVERIFY(pc->vcardAddresses().isEmpty()); QVERIFY(!pc->isUpgrade()); QVERIFY(pc->contactsToUpgrade().isEmpty()); QVERIFY(pc->contacts().isEmpty()); QVERIFY(mInvalidHandles.isEmpty()); QVERIFY(mValidIds.isEmpty()); QVERIFY(mInvalidIds.isEmpty()); QVERIFY(mValidUris.isEmpty()); QVERIFY(mInvalidUris.isEmpty()); QVERIFY(mValidVCardAddresses.isEmpty()); QVERIFY(mInvalidVCardAddresses.isEmpty()); pc = conn->contactManager()->contactsForUris(QStringList()); QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pc->isForUris()); QVERIFY(pc->uris().isEmpty()); QVERIFY(!pc->isForHandles()); QVERIFY(pc->handles().isEmpty()); QVERIFY(!pc->isForIdentifiers()); QVERIFY(pc->identifiers().isEmpty()); QVERIFY(!pc->isForVCardAddresses()); QVERIFY(pc->vcardField().isEmpty()); QVERIFY(pc->vcardAddresses().isEmpty()); QVERIFY(!pc->isUpgrade()); QVERIFY(pc->contactsToUpgrade().isEmpty()); QVERIFY(pc->contacts().isEmpty()); QVERIFY(mValidUris.isEmpty()); QVERIFY(mInvalidUris.isEmpty()); QVERIFY(mInvalidHandles.isEmpty()); QVERIFY(mValidIds.isEmpty()); QVERIFY(mInvalidIds.isEmpty()); QVERIFY(mValidVCardAddresses.isEmpty()); QVERIFY(mInvalidVCardAddresses.isEmpty()); pc = conn->contactManager()->contactsForVCardAddresses(QString(), QStringList()); QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pc->isForVCardAddresses()); QVERIFY(pc->vcardField().isEmpty()); QVERIFY(pc->vcardAddresses().isEmpty()); QVERIFY(!pc->isForHandles()); QVERIFY(pc->handles().isEmpty()); QVERIFY(!pc->isForIdentifiers()); QVERIFY(pc->identifiers().isEmpty()); QVERIFY(!pc->isForUris()); QVERIFY(pc->uris().isEmpty()); QVERIFY(!pc->isUpgrade()); QVERIFY(pc->contactsToUpgrade().isEmpty()); QVERIFY(pc->contacts().isEmpty()); QVERIFY(mValidVCardAddresses.isEmpty()); QVERIFY(mInvalidVCardAddresses.isEmpty()); QVERIFY(mInvalidHandles.isEmpty()); QVERIFY(mValidIds.isEmpty()); QVERIFY(mInvalidIds.isEmpty()); QVERIFY(mValidUris.isEmpty()); QVERIFY(mInvalidUris.isEmpty()); pc = conn->contactManager()->contactsForVCardAddresses(QLatin1String("x-unsupported"), QStringList()); QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(pc->isForVCardAddresses()); QCOMPARE(pc->vcardField(), QLatin1String("x-unsupported")); QVERIFY(pc->vcardAddresses().isEmpty()); QVERIFY(!pc->isForHandles()); QVERIFY(pc->handles().isEmpty()); QVERIFY(!pc->isForIdentifiers()); QVERIFY(pc->identifiers().isEmpty()); QVERIFY(!pc->isForUris()); QVERIFY(pc->uris().isEmpty()); QVERIFY(!pc->isUpgrade()); QVERIFY(pc->contactsToUpgrade().isEmpty()); QVERIFY(pc->contacts().isEmpty()); QVERIFY(mValidVCardAddresses.isEmpty()); QVERIFY(mInvalidVCardAddresses.isEmpty()); QVERIFY(mInvalidHandles.isEmpty()); QVERIFY(mValidIds.isEmpty()); QVERIFY(mInvalidIds.isEmpty()); QVERIFY(mValidUris.isEmpty()); QVERIFY(mInvalidUris.isEmpty()); } void TestConnAddressing::cleanup() { cleanupImpl(); } void TestConnAddressing::cleanupTestCase() { if (!mContacts.isEmpty()) { mContacts.clear(); } if (mConn) { QVERIFY(mConn->disconnect()); delete mConn; } cleanupTestCaseImpl(); } QTEST_MAIN(TestConnAddressing) #include "_gen/conn-addressing.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contacts-info.cpp0000644000175100017520000001741612530423576023305 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include using namespace Tp; class TestContactsInfo : public Test { Q_OBJECT public: TestContactsInfo(QObject *parent = 0) : Test(parent), mConn(0), mContactsInfoFieldsUpdated(0), mRefreshInfoFinished(0) { } protected Q_SLOTS: void onContactInfoFieldsChanged(const Tp::Contact::InfoFields &); void onRefreshInfoFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testInfo(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; int mContactsInfoFieldsUpdated; int mRefreshInfoFinished; }; void TestContactsInfo::onContactInfoFieldsChanged(const Tp::Contact::InfoFields &info) { Q_UNUSED(info); mContactsInfoFieldsUpdated++; } void TestContactsInfo::onRefreshInfoFinished(PendingOperation *op) { if (op->isError()) { mLoop->exit(1); return; } mRefreshInfoFinished++; mLoop->exit(0); } void TestContactsInfo::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contacts-info"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "foo", NULL); QCOMPARE(mConn->connect(), true); } void TestContactsInfo::init() { initImpl(); mContactsInfoFieldsUpdated = 0; mRefreshInfoFinished = 0; } void TestContactsInfo::testInfo() { ContactManagerPtr contactManager = mConn->client()->contactManager(); QVERIFY(contactManager->supportedFeatures().contains(Contact::FeatureInfo)); QStringList validIDs = QStringList() << QLatin1String("foo") << QLatin1String("bar"); QList contacts = mConn->contacts(validIDs, Contact::FeatureInfo); QCOMPARE(contacts.size(), validIDs.size()); for (int i = 0; i < contacts.size(); i++) { ContactPtr contact = contacts[i]; QCOMPARE(contact->requestedFeatures().contains(Contact::FeatureInfo), true); QCOMPARE(contact->actualFeatures().contains(Contact::FeatureInfo), true); QVERIFY(contact->infoFields().allFields().isEmpty()); QVERIFY(connect(contact.data(), SIGNAL(infoFieldsChanged(const Tp::Contact::InfoFields &)), SLOT(onContactInfoFieldsChanged(const Tp::Contact::InfoFields &)))); } GPtrArray *info_default = (GPtrArray *) dbus_g_type_specialized_construct ( TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST); { const gchar * const field_values[2] = { "FooBar", NULL }; g_ptr_array_add (info_default, tp_value_array_build (3, G_TYPE_STRING, "n", G_TYPE_STRV, NULL, G_TYPE_STRV, field_values, G_TYPE_INVALID)); } tp_tests_contacts_connection_set_default_contact_info(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), info_default); GPtrArray *info_1 = (GPtrArray *) dbus_g_type_specialized_construct ( TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST); { const gchar * const field_values[2] = { "Foo", NULL }; g_ptr_array_add (info_1, tp_value_array_build (3, G_TYPE_STRING, "n", G_TYPE_STRV, NULL, G_TYPE_STRV, field_values, G_TYPE_INVALID)); } GPtrArray *info_2 = (GPtrArray *) dbus_g_type_specialized_construct ( TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST); { const gchar * const field_values[2] = { "Bar", NULL }; g_ptr_array_add (info_2, tp_value_array_build (3, G_TYPE_STRING, "n", G_TYPE_STRV, NULL, G_TYPE_STRV, field_values, G_TYPE_INVALID)); } TpHandle handles[] = { 0, 0 }; TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles( TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); for (unsigned i = 0; i < 2; i++) { handles[i] = tp_handle_ensure(serviceRepo, qPrintable(validIDs[i]), NULL, NULL); } tp_tests_contacts_connection_change_contact_info(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), handles[0], info_1); tp_tests_contacts_connection_change_contact_info(TP_TESTS_CONTACTS_CONNECTION(mConn->service()), handles[1], info_2); while (mContactsInfoFieldsUpdated != 2) { mLoop->processEvents(); } QCOMPARE(mContactsInfoFieldsUpdated, 2); mContactsInfoFieldsUpdated = 0; ContactPtr contactFoo = contacts[0]; ContactPtr contactBar = contacts[1]; QCOMPARE(contactFoo->infoFields().isValid(), true); QCOMPARE(contactFoo->infoFields().allFields().size(), 1); QCOMPARE(contactFoo->infoFields().allFields()[0].fieldName, QLatin1String("n")); QCOMPARE(contactFoo->infoFields().allFields()[0].fieldValue[0], QLatin1String("Foo")); QCOMPARE(contactBar->infoFields().isValid(), true); QCOMPARE(contactBar->infoFields().allFields().size(), 1); QCOMPARE(contactBar->infoFields().allFields()[0].fieldName, QLatin1String("n")); QCOMPARE(contactBar->infoFields().allFields()[0].fieldValue[0], QLatin1String("Bar")); TpTestsContactsConnection *serviceConn = TP_TESTS_CONTACTS_CONNECTION(mConn->service()); QCOMPARE(serviceConn->refresh_contact_info_called, static_cast(0)); mContactsInfoFieldsUpdated = 0; mRefreshInfoFinished = 0; Q_FOREACH (const ContactPtr &contact, contacts) { QVERIFY(connect(contact->refreshInfo(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRefreshInfoFinished(Tp::PendingOperation*)))); } while (mRefreshInfoFinished != contacts.size()) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mRefreshInfoFinished, contacts.size()); while (mContactsInfoFieldsUpdated != contacts.size()) { mLoop->processEvents(); } QCOMPARE(mContactsInfoFieldsUpdated, contacts.size()); QCOMPARE(serviceConn->refresh_contact_info_called, static_cast(1)); for (int i = 0; i < contacts.size(); i++) { ContactPtr contact = contacts[i]; QVERIFY(disconnect(contact.data(), SIGNAL(infoFieldsChanged(const Tp::Contact::InfoFields &)), this, SLOT(onContactInfoFieldsChanged(const Tp::Contact::InfoFields &)))); } PendingContactInfo *pci = contactFoo->requestInfo(); QVERIFY(connect(pci, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); while (!pci->isFinished()) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(pci->infoFields().isValid(), true); QCOMPARE(pci->infoFields().allFields().size(), 1); QCOMPARE(pci->infoFields().allFields()[0].fieldName, QLatin1String("n")); QCOMPARE(pci->infoFields().allFields()[0].fieldValue[0], QLatin1String("FooBar")); g_boxed_free(TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST, info_default); g_boxed_free(TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST, info_1); g_boxed_free(TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST, info_2); } void TestContactsInfo::cleanup() { cleanupImpl(); } void TestContactsInfo::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestContactsInfo) #include "_gen/contacts-info.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contact-search-chan.cpp0000644000175100017520000002564012530423576024341 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include using namespace Tp; class TestContactSearchChan : public Test { Q_OBJECT public: TestContactSearchChan(QObject *parent = 0) : Test(parent), mConn(0), mChan1Service(0), mChan2Service(0), mSearchReturned(false) { } protected Q_SLOTS: void onSearchStateChanged(Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details); void onSearchResultReceived(const Tp::ContactSearchChannel::SearchResult &result); void onSearchReturned(Tp::PendingOperation *op); private Q_SLOTS: void initTestCase(); void init(); void testContactSearch(); void testContactSearchEmptyResult(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; TpHandleRepoIface *mContactRepo; ContactSearchChannelPtr mChan; ContactSearchChannelPtr mChan1; ContactSearchChannelPtr mChan2; QString mChan1Path; TpTestsContactSearchChannel *mChan1Service; QString mChan2Path; TpTestsContactSearchChannel *mChan2Service; ContactSearchChannel::SearchResult mSearchResult; bool mSearchReturned; struct SearchStateChangeInfo { SearchStateChangeInfo(ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details) : state(state), errorName(errorName), details(details) { } ChannelContactSearchState state; QString errorName; ContactSearchChannel::SearchStateChangeDetails details; }; QList mSearchStateChangeInfoList; }; void TestContactSearchChan::onSearchStateChanged(Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details) { mSearchStateChangeInfoList.append(SearchStateChangeInfo(state, errorName, details)); mLoop->exit(0); } void TestContactSearchChan::onSearchResultReceived( const Tp::ContactSearchChannel::SearchResult &result) { QCOMPARE(mChan->searchState(), ChannelContactSearchStateInProgress); mSearchResult = result; mLoop->exit(0); } void TestContactSearchChan::onSearchReturned(Tp::PendingOperation *op) { TEST_VERIFY_OP(op); QVERIFY(mChan->searchState() != ChannelContactSearchStateNotStarted); mSearchReturned = true; mLoop->exit(0); } void TestContactSearchChan::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contact-search-chan"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, EXAMPLE_TYPE_ECHO_CONNECTION, "account", "me@example.com", "protocol", "example", NULL); QCOMPARE(mConn->connect(), true); QByteArray chan1Path; mChan1Path = mConn->objectPath() + QLatin1String("/ContactSearchChannel/1"); chan1Path = mChan1Path.toLatin1(); mChan1Service = TP_TESTS_CONTACT_SEARCH_CHANNEL(g_object_new( TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL, "connection", mConn->service(), "object-path", chan1Path.data(), NULL)); QByteArray chan2Path; mChan2Path = mConn->objectPath() + QLatin1String("/ContactSearchChannel/2"); chan2Path = mChan2Path.toLatin1(); mChan2Service = TP_TESTS_CONTACT_SEARCH_CHANNEL(g_object_new( TP_TESTS_TYPE_CONTACT_SEARCH_CHANNEL, "connection", mConn->service(), "object-path", chan2Path.data(), NULL)); } void TestContactSearchChan::init() { initImpl(); mSearchResult.clear(); mSearchStateChangeInfoList.clear(); mSearchReturned = false; } void TestContactSearchChan::testContactSearch() { mChan1 = ContactSearchChannel::create(mConn->client(), mChan1Path, QVariantMap()); mChan = mChan1; // becomeReady with no args should implicitly enable ContactSearchChannel::FeatureCore QVERIFY(connect(mChan1->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan1->isReady(ContactSearchChannel::FeatureCore), true); QCOMPARE(mChan1->searchState(), ChannelContactSearchStateNotStarted); QCOMPARE(mChan1->limit(), static_cast(0)); QCOMPARE(mChan1->availableSearchKeys().isEmpty(), false); QCOMPARE(mChan1->availableSearchKeys().count(), 1); QCOMPARE(mChan1->availableSearchKeys().first(), QLatin1String("employer")); QCOMPARE(mChan1->server(), QLatin1String("characters.shakespeare.lit")); QVERIFY(connect(mChan1.data(), SIGNAL(searchStateChanged(Tp::ChannelContactSearchState, const QString &, const Tp::ContactSearchChannel::SearchStateChangeDetails &)), SLOT(onSearchStateChanged(Tp::ChannelContactSearchState, const QString &, const Tp::ContactSearchChannel::SearchStateChangeDetails &)))); QVERIFY(connect(mChan1.data(), SIGNAL(searchResultReceived(const Tp::ContactSearchChannel::SearchResult &)), SLOT(onSearchResultReceived(const Tp::ContactSearchChannel::SearchResult &)))); QVERIFY(connect(mChan1->search(QLatin1String("employer"), QLatin1String("Collabora")), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onSearchReturned(Tp::PendingOperation *)))); while (!mSearchReturned) { QCOMPARE(mLoop->exec(), 0); } while (mChan1->searchState() != ChannelContactSearchStateCompleted) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mSearchReturned, true); QCOMPARE(mSearchStateChangeInfoList.count(), 2); SearchStateChangeInfo info = mSearchStateChangeInfoList.at(0); QCOMPARE(info.state, ChannelContactSearchStateInProgress); QCOMPARE(info.errorName, QLatin1String("")); QCOMPARE(info.details.hasDebugMessage(), true); QCOMPARE(info.details.debugMessage(), QLatin1String("in progress")); info = mSearchStateChangeInfoList.at(1); QCOMPARE(info.state, ChannelContactSearchStateCompleted); QCOMPARE(info.errorName, QLatin1String("")); QCOMPARE(info.details.hasDebugMessage(), true); QCOMPARE(info.details.debugMessage(), QLatin1String("completed")); QCOMPARE(mSearchResult.isEmpty(), false); QCOMPARE(mSearchResult.size(), 3); QStringList expectedIds; expectedIds << QLatin1String("oggis") << QLatin1String("andrunko") << QLatin1String("wjt"); expectedIds.sort(); QStringList expectedFns; expectedFns << QLatin1String("Olli Salli") << QLatin1String("Andre Moreira Magalhaes") << QLatin1String("Will Thompson"); expectedFns.sort(); QStringList ids; QStringList fns; for (ContactSearchChannel::SearchResult::const_iterator it = mSearchResult.constBegin(); it != mSearchResult.constEnd(); ++it) { QCOMPARE(it.key().isNull(), false); ids << it.key()->id(); QCOMPARE(it.value().isValid(), true); QCOMPARE(it.value().allFields().isEmpty(), false); Q_FOREACH (const ContactInfoField &contactInfo, it.value().allFields()) { QCOMPARE(contactInfo.fieldName, QLatin1String("fn")); fns.append(contactInfo.fieldValue.first()); } } ids.sort(); QCOMPARE(ids, expectedIds); fns.sort(); QCOMPARE(fns, expectedFns); mChan1.reset(); } void TestContactSearchChan::testContactSearchEmptyResult() { mChan2 = ContactSearchChannel::create(mConn->client(), mChan2Path, QVariantMap()); mChan = mChan2; QVERIFY(connect(mChan2->becomeReady(ContactSearchChannel::FeatureCore), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mChan2->isReady(), true); QCOMPARE(mChan2->searchState(), ChannelContactSearchStateNotStarted); QCOMPARE(mChan2->limit(), static_cast(0)); QCOMPARE(mChan2->availableSearchKeys().isEmpty(), false); QCOMPARE(mChan2->availableSearchKeys().count(), 1); QCOMPARE(mChan2->availableSearchKeys().first(), QLatin1String("employer")); QCOMPARE(mChan2->server(), QLatin1String("characters.shakespeare.lit")); QVERIFY(connect(mChan2.data(), SIGNAL(searchStateChanged(Tp::ChannelContactSearchState, const QString &, const Tp::ContactSearchChannel::SearchStateChangeDetails &)), SLOT(onSearchStateChanged(Tp::ChannelContactSearchState, const QString &, const Tp::ContactSearchChannel::SearchStateChangeDetails &)))); QVERIFY(connect(mChan2.data(), SIGNAL(searchResultReceived(const Tp::ContactSearchChannel::SearchResult &)), SLOT(onSearchResultReceived(const Tp::ContactSearchChannel::SearchResult &)))); ContactSearchMap searchTerms; searchTerms.insert(QLatin1String("employer"), QLatin1String("FooBar")); QVERIFY(connect(mChan2->search(searchTerms), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onSearchReturned(Tp::PendingOperation *)))); while (!mSearchReturned) { QCOMPARE(mLoop->exec(), 0); } while (mChan2->searchState() != ChannelContactSearchStateCompleted) { QCOMPARE(mLoop->exec(), 0); } QCOMPARE(mSearchReturned, true); QCOMPARE(mSearchResult.isEmpty(), true); QCOMPARE(mSearchStateChangeInfoList.count(), 2); SearchStateChangeInfo info = mSearchStateChangeInfoList.at(0); QCOMPARE(info.state, ChannelContactSearchStateInProgress); QCOMPARE(info.errorName, QLatin1String("")); QCOMPARE(info.details.hasDebugMessage(), true); QCOMPARE(info.details.debugMessage(), QLatin1String("in progress")); info = mSearchStateChangeInfoList.at(1); QCOMPARE(info.state, ChannelContactSearchStateCompleted); QCOMPARE(info.errorName, QLatin1String("")); QCOMPARE(info.details.hasDebugMessage(), true); QCOMPARE(info.details.debugMessage(), QLatin1String("completed")); mChan2.reset(); } void TestContactSearchChan::cleanup() { cleanupImpl(); } void TestContactSearchChan::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; if (mChan1Service != 0) { g_object_unref(mChan1Service); mChan1Service = 0; } if (mChan2Service != 0) { g_object_unref(mChan2Service); mChan2Service = 0; } cleanupTestCaseImpl(); } QTEST_MAIN(TestContactSearchChan) #include "_gen/contact-search-chan.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/base-cm.cpp0000644000175100017520000001205712530423576022041 0ustar00kaffeinekaffeine00000000000000#include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include using namespace Tp; class TestBaseCM : public Test { Q_OBJECT public: TestBaseCM(QObject *parent = 0) : Test(parent) { } private Q_SLOTS: void initTestCase(); void init(); void testNoProtocols(); void testProtocols(); void cleanup(); void cleanupTestCase(); private: static void testNoProtocolsCreateCM(BaseConnectionManagerPtr &cm); static void testProtocolsCreateCM(BaseConnectionManagerPtr &cm); }; void TestBaseCM::initTestCase() { initTestCaseImpl(); } void TestBaseCM::init() { initImpl(); } void TestBaseCM::testNoProtocolsCreateCM(BaseConnectionManagerPtr &cm) { cm = BaseConnectionManager::create(QLatin1String("testcm")); Tp::DBusError err; QVERIFY(cm->registerObject(&err)); QVERIFY(!err.isValid()); QCOMPARE(cm->protocols().size(), 0); } void TestBaseCM::testNoProtocols() { qDebug() << "Introspecting non-existing CM"; ConnectionManagerPtr cliCM = ConnectionManager::create( QLatin1String("testcm")); PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); qDebug() << "Creating CM"; TestThreadHelper helper; TEST_THREAD_HELPER_EXECUTE(&helper, &testNoProtocolsCreateCM); qDebug() << "Introspecting new CM"; cliCM = ConnectionManager::create(QLatin1String("testcm")); pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cliCM->supportedProtocols().size(), 0); qDebug() << "Requesting connection"; PendingConnection *pc = cliCM->lowlevel()->requestConnection( QLatin1String("jabber"), QVariantMap()); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED); } void TestBaseCM::testProtocolsCreateCM(BaseConnectionManagerPtr &cm) { cm = BaseConnectionManager::create(QLatin1String("testcm")); BaseProtocolPtr protocol = BaseProtocol::create(QLatin1String("myprotocol")); QVERIFY(!protocol.isNull()); QVERIFY(cm->addProtocol(protocol)); QVERIFY(cm->hasProtocol(QLatin1String("myprotocol"))); QCOMPARE(cm->protocol(QLatin1String("myprotocol")), protocol); QCOMPARE(cm->protocols().size(), 1); QVERIFY(!cm->hasProtocol(QLatin1String("otherprotocol"))); QVERIFY(cm->protocol(QLatin1String("otherprotocol")).isNull()); //can't add the same protocol twice QVERIFY(!cm->addProtocol(protocol)); Tp::DBusError err; QVERIFY(cm->registerObject(&err)); QVERIFY(!err.isValid()); //can't add another protocol after registerObject() protocol = BaseProtocol::create(QLatin1String("otherprotocol")); QVERIFY(!protocol.isNull()); QVERIFY(!cm->addProtocol(protocol)); QCOMPARE(cm->protocols().size(), 1); protocol.reset(); QVariantMap props = cm->immutableProperties(); QVERIFY(props.contains(TP_QT_IFACE_CONNECTION_MANAGER + QLatin1String(".Protocols"))); ProtocolPropertiesMap protocols = qvariant_cast( props[TP_QT_IFACE_CONNECTION_MANAGER + QLatin1String(".Protocols")]); QVERIFY(protocols.contains(QLatin1String("myprotocol"))); QVERIFY(!protocols.contains(QLatin1String("otherprotocol"))); } void TestBaseCM::testProtocols() { qDebug() << "Creating CM"; TestThreadHelper helper; TEST_THREAD_HELPER_EXECUTE(&helper, &testProtocolsCreateCM); qDebug() << "Introspecting CM"; ConnectionManagerPtr cliCM = ConnectionManager::create( QLatin1String("testcm")); PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore); connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(cliCM->supportedProtocols().size(), 1); QVERIFY(cliCM->hasProtocol(QLatin1String("myprotocol"))); PendingConnection *pc = cliCM->lowlevel()->requestConnection( QLatin1String("myprotocol"), QVariantMap()); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectFailure(Tp::PendingOperation*))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED); } void TestBaseCM::cleanup() { cleanupImpl(); } void TestBaseCM::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestBaseCM) #include "_gen/base-cm.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/conn-basics.cpp0000644000175100017520000002141612530423576022730 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestConnBasics : public Test { Q_OBJECT public: TestConnBasics(QObject *parent = 0) : Test(parent), mConnService(0) { } protected Q_SLOTS: void expectConnReady(Tp::ConnectionStatus); void expectConnInvalidated(); void expectPresenceAvailable(const Tp::SimplePresence &); void onRequestConnectFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testBasics(); void testSimplePresence(); void cleanup(); void cleanupTestCase(); private: QString mConnName, mConnPath; TpTestsContactsConnection *mConnService; ConnectionPtr mConn; QList mStatuses; }; void TestConnBasics::expectConnReady(Tp::ConnectionStatus newStatus) { qDebug() << "connection changed to status" << newStatus; switch (newStatus) { case ConnectionStatusDisconnected: qWarning() << "Disconnected"; break; case ConnectionStatusConnecting: QCOMPARE(mConn->isReady(Connection::FeatureConnected), false); mStatuses << newStatus; qDebug() << "Connecting"; break; case ConnectionStatusConnected: QCOMPARE(mConn->isReady(Connection::FeatureConnected), true); mStatuses << newStatus; qDebug() << "Connected"; break; default: qWarning().nospace() << "What sort of status is " << newStatus << "?!"; break; } } void TestConnBasics::expectConnInvalidated() { qDebug() << "conn invalidated"; mLoop->exit(0); } void TestConnBasics::expectPresenceAvailable(const Tp::SimplePresence &presence) { if (presence.type == Tp::ConnectionPresenceTypeAvailable) { mLoop->exit(0); return; } mLoop->exit(1); } void TestConnBasics::onRequestConnectFinished(Tp::PendingOperation *op) { QCOMPARE(mConn->status(), ConnectionStatusConnected); QVERIFY(mStatuses.contains(ConnectionStatusConnected)); mLoop->exit(0); } void TestConnBasics::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("conn-basics"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); } void TestConnBasics::init() { initImpl(); gchar *name; gchar *connPath; GError *error = 0; mConnService = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "contacts", NULL)); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService), "contacts", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); QVERIFY(connect(mConn.data(), SIGNAL(statusChanged(Tp::ConnectionStatus)), SLOT(expectConnReady(Tp::ConnectionStatus)))); qDebug() << "waiting connection to become connected"; PendingOperation *pr = mConn->becomeReady(Connection::FeatureConnected); QVERIFY(connect(pr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); PendingOperation *pc = mConn->lowlevel()->requestConnect(); QVERIFY(connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestConnectFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pr->isFinished(), true); QCOMPARE(mLoop->exec(), 0); QCOMPARE(pc->isFinished(), true); QCOMPARE(mConn->isReady(Connection::FeatureConnected), true); qDebug() << "connection is now ready"; QVERIFY(disconnect(mConn.data(), SIGNAL(statusChanged(Tp::ConnectionStatus)), this, SLOT(expectConnReady(Tp::ConnectionStatus)))); } void TestConnBasics::testBasics() { QCOMPARE(static_cast(mConn->statusReason()), static_cast(ConnectionStatusReasonRequested)); } void TestConnBasics::testSimplePresence() { qDebug() << "Making SimplePresence ready"; Features features = Features() << Connection::FeatureSimplePresence; QCOMPARE(mConn->isReady(features), false); QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); qDebug() << "SimplePresence ready"; qDebug() << "mConn->status:" << mConn->status(); const QStringList canSetNames = QStringList() << QLatin1String("available") << QLatin1String("busy") << QLatin1String("away"); const QStringList cantSetNames = QStringList() << QLatin1String("offline") << QLatin1String("unknown") << QLatin1String("error"); const QStringList expectedNames = canSetNames + cantSetNames; const ConnectionPresenceType expectedTypes[] = { ConnectionPresenceTypeAvailable, ConnectionPresenceTypeBusy, ConnectionPresenceTypeAway, ConnectionPresenceTypeOffline, ConnectionPresenceTypeUnknown, ConnectionPresenceTypeError }; SimpleStatusSpecMap statuses = mConn->lowlevel()->allowedPresenceStatuses(); Q_FOREACH (QString name, statuses.keys()) { QVERIFY(expectedNames.contains(name)); if (canSetNames.contains(name)) { QVERIFY(statuses[name].maySetOnSelf); QVERIFY(statuses[name].canHaveMessage); } else { QVERIFY(cantSetNames.contains(name)); QVERIFY(!statuses[name].maySetOnSelf); QVERIFY(!statuses[name].canHaveMessage); } QCOMPARE(statuses[name].type, static_cast(expectedTypes[expectedNames.indexOf(name)])); } QCOMPARE(mConn->lowlevel()->maxPresenceStatusMessageLength(), (uint) 512); } void TestConnBasics::cleanup() { if (mConn) { QVERIFY(mConn->isValid()); GHashTable *details = tp_asv_new( "debug-message", G_TYPE_STRING, "woo i'm going doooooown", "x-tpqt-test-rgba-herring-color", G_TYPE_UINT, 0xff0000ffU, NULL ); // Disconnect and wait for invalidation tp_base_connection_disconnect_with_dbus_error(TP_BASE_CONNECTION(mConnService), TP_QT_ERROR_CANCELLED.latin1(), details, TP_CONNECTION_STATUS_REASON_REQUESTED); g_hash_table_destroy(details); QVERIFY(connect(mConn.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), SLOT(expectConnInvalidated()))); QCOMPARE(mLoop->exec(), 0); QVERIFY(!mConn->isValid()); // Check that we got the connection error details QCOMPARE(static_cast(mConn->statusReason()), static_cast(ConnectionStatusReasonRequested)); QVERIFY(mConn->errorDetails().isValid()); QVERIFY(mConn->errorDetails().hasDebugMessage()); QCOMPARE(mConn->errorDetails().debugMessage(), QLatin1String("woo i'm going doooooown")); #if 0 // Not yet there QVERIFY(!mConn->errorDetails().hasExpectedHostname()); QVERIFY(!mConn->errorDetails().hasCertificateHostname()); #endif QVERIFY(mConn->errorDetails().allDetails().contains( QLatin1String("x-tpqt-test-rgba-herring-color"))); QCOMPARE(qdbus_cast(mConn->errorDetails().allDetails().value( QLatin1String("x-tpqt-test-rgba-herring-color"))), 0xff0000ffU); processDBusQueue(mConn.data()); mConn.reset(); } if (mConnService != 0) { g_object_unref(mConnService); mConnService = 0; } cleanupImpl(); } void TestConnBasics::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestConnBasics) #include "_gen/conn-basics.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contacts-capabilities.cpp0000644000175100017520000001120512530423576024771 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include #include using namespace Tp; class TestContactsCapabilities : public Test { Q_OBJECT public: TestContactsCapabilities(QObject *parent = 0) : Test(parent), mConn(0) { } private Q_SLOTS: void initTestCase(); void init(); void testCapabilities(); void cleanup(); void cleanupTestCase(); private: TestConnHelper *mConn; }; void TestContactsCapabilities::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contacts-capabilities"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); mConn = new TestConnHelper(this, TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "foo", NULL); QCOMPARE(mConn->connect(), true); } void TestContactsCapabilities::init() { initImpl(); } static void freeRccList(GPtrArray *rccs) { g_boxed_free(TP_ARRAY_TYPE_REQUESTABLE_CHANNEL_CLASS_LIST, rccs); } static void addTextChatClass(GPtrArray *classes, TpHandleType handle_type) { GHashTable *fixed = tp_asv_new( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, handle_type, NULL); const gchar * const allowed[] = { NULL }; GValueArray *arr = tp_value_array_build(2, TP_HASH_TYPE_STRING_VARIANT_MAP, fixed, G_TYPE_STRV, allowed, G_TYPE_INVALID); g_hash_table_unref(fixed); g_ptr_array_add(classes, arr); } static GHashTable *createContactCapabilities(TpHandle *handles) { GHashTable *capabilities = g_hash_table_new_full(NULL, NULL, NULL, (GDestroyNotify) freeRccList); /* Support private text chats */ GPtrArray *caps1 = g_ptr_array_sized_new(2); addTextChatClass(caps1, TP_HANDLE_TYPE_CONTACT); g_hash_table_insert(capabilities, GUINT_TO_POINTER(handles[0]), caps1); /* Support text chatrooms */ GPtrArray *caps2 = g_ptr_array_sized_new(1); g_hash_table_insert(capabilities, GUINT_TO_POINTER(handles[1]), caps2); /* Don't support anything */ GPtrArray *caps3 = g_ptr_array_sized_new(0); g_hash_table_insert(capabilities, GUINT_TO_POINTER(handles[2]), caps3); return capabilities; } void TestContactsCapabilities::testCapabilities() { ContactManagerPtr contactManager = mConn->client()->contactManager(); QVERIFY(contactManager->supportedFeatures().contains(Contact::FeatureCapabilities)); QStringList ids = QStringList() << QLatin1String("alice") << QLatin1String("bob") << QLatin1String("chris"); gboolean supportTextChat[] = { TRUE, FALSE, FALSE }; TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConn->service()), TP_HANDLE_TYPE_CONTACT); TpHandle handles[] = { 0, 0, 0 }; for (int i = 0; i < 3; i++) { handles[i] = tp_handle_ensure(serviceRepo, ids[i].toLatin1().constData(), NULL, NULL); } GHashTable *capabilities = createContactCapabilities(handles); tp_tests_contacts_connection_change_capabilities( TP_TESTS_CONTACTS_CONNECTION(mConn->service()), capabilities); g_hash_table_destroy(capabilities); QList contacts = mConn->contacts(ids, Contact::FeatureCapabilities); QCOMPARE(contacts.size(), ids.size()); for (int i = 0; i < contacts.size(); i++) { ContactPtr contact = contacts[i]; QCOMPARE(contact->requestedFeatures().contains(Contact::FeatureCapabilities), true); QCOMPARE(contact->actualFeatures().contains(Contact::FeatureCapabilities), true); QCOMPARE(contact->capabilities().textChats(), supportTextChat[i]); QCOMPARE(contact->capabilities().streamedMediaCalls(), false); QCOMPARE(contact->capabilities().streamedMediaAudioCalls(), false); QCOMPARE(contact->capabilities().streamedMediaVideoCalls(), false); QCOMPARE(contact->capabilities().streamedMediaVideoCallsWithAudio(), false); QCOMPARE(contact->capabilities().upgradingStreamedMediaCalls(), false); } } void TestContactsCapabilities::cleanup() { cleanupImpl(); } void TestContactsCapabilities::cleanupTestCase() { QCOMPARE(mConn->disconnect(), true); delete mConn; cleanupTestCaseImpl(); } QTEST_MAIN(TestContactsCapabilities) #include "_gen/contacts-capabilities.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/contacts.cpp0000644000175100017520000007366712530423576022366 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; class TestContacts : public Test { Q_OBJECT public: TestContacts(QObject *parent = 0) : Test(parent), mConnService(0) { } protected Q_SLOTS: void expectConnReady(Tp::ConnectionStatus, Tp::ConnectionStatusReason); void expectConnInvalidated(); void expectPendingContactsFinished(Tp::PendingOperation *); private Q_SLOTS: void initTestCase(); void init(); void testSupport(); void testSelfContact(); void testForHandles(); void testForIdentifiers(); void testFeatures(); void testFeaturesNotRequested(); void testUpgrade(); void testSelfContactFallback(); void cleanup(); void cleanupTestCase(); private: QString mConnName, mConnPath; TpTestsContactsConnection *mConnService; ConnectionPtr mConn; QList mContacts; Tp::UIntList mInvalidHandles; }; void TestContacts::expectConnReady(Tp::ConnectionStatus newStatus, Tp::ConnectionStatusReason newStatusReason) { switch (newStatus) { case ConnectionStatusDisconnected: qWarning() << "Disconnected"; mLoop->exit(1); break; case ConnectionStatusConnecting: /* do nothing */ break; case ConnectionStatusConnected: qDebug() << "Ready"; mLoop->exit(0); break; default: qWarning().nospace() << "What sort of status is " << newStatus << "?!"; mLoop->exit(2); break; } } void TestContacts::expectConnInvalidated() { mLoop->exit(0); } void TestContacts::expectPendingContactsFinished(PendingOperation *op) { TEST_VERIFY_OP(op); PendingContacts *pending = qobject_cast(op); mContacts = pending->contacts(); if (pending->isForHandles()) { mInvalidHandles = pending->invalidHandles(); } mLoop->exit(0); } void TestContacts::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("contacts"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); gchar *name; gchar *connPath; GError *error = 0; mConnService = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL)); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService), "contacts", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); mConn = Connection::create(mConnName, mConnPath, ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); QCOMPARE(mConn->isReady(), false); mConn->lowlevel()->requestConnect(); Features features = Features() << Connection::FeatureSelfContact; QVERIFY(connect(mConn->becomeReady(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(mConn->isReady(features), true); if (mConn->status() != ConnectionStatusConnected) { QVERIFY(connect(mConn.data(), SIGNAL(statusChanged(Tp::ConnectionStatus, Tp::ConnectionStatusReason)), SLOT(expectConnReady(Tp::ConnectionStatus, Tp::ConnectionStatusReason)))); QCOMPARE(mLoop->exec(), 0); QVERIFY(disconnect(mConn.data(), SIGNAL(statusChanged(Tp::ConnectionStatus, Tp::ConnectionStatusReason)), this, SLOT(expectConnReady(Tp::ConnectionStatus, Tp::ConnectionStatusReason)))); QCOMPARE(mConn->status(), ConnectionStatusConnected); } } void TestContacts::init() { initImpl(); } void TestContacts::testSupport() { QCOMPARE(mConn->contactManager()->connection(), mConn); QVERIFY(!mConn->lowlevel()->contactAttributeInterfaces().isEmpty()); QVERIFY(mConn->lowlevel()->contactAttributeInterfaces().contains( TP_QT_IFACE_CONNECTION)); QVERIFY(mConn->lowlevel()->contactAttributeInterfaces().contains( TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING)); QVERIFY(mConn->lowlevel()->contactAttributeInterfaces().contains( TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS)); QVERIFY(mConn->lowlevel()->contactAttributeInterfaces().contains( TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE)); QVERIFY(!mConn->lowlevel()->contactAttributeInterfaces().contains( QLatin1String("org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT"))); Features supportedFeatures = mConn->contactManager()->supportedFeatures(); QVERIFY(!supportedFeatures.isEmpty()); QVERIFY(supportedFeatures.contains(Contact::FeatureAlias)); QVERIFY(supportedFeatures.contains(Contact::FeatureAvatarToken)); QVERIFY(supportedFeatures.contains(Contact::FeatureSimplePresence)); QVERIFY(!supportedFeatures.contains(Contact::FeatureAddresses)); } void TestContacts::testSelfContact() { ContactPtr selfContact = mConn->selfContact(); QVERIFY(selfContact != 0); QCOMPARE(selfContact->handle()[0], mConn->selfHandle()); QCOMPARE(selfContact->id(), QString(QLatin1String("me@example.com"))); Features features = Features() << Contact::FeatureAlias << Contact::FeatureAvatarToken << Contact::FeatureSimplePresence; QVERIFY(connect(selfContact->manager()->upgradeContacts( QList() << selfContact, features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(selfContact->alias(), QString(QLatin1String("me@example.com"))); QVERIFY(!selfContact->isAvatarTokenKnown()); QCOMPARE(selfContact->presence().status(), QString(QLatin1String("available"))); QCOMPARE(selfContact->presence().type(), Tp::ConnectionPresenceTypeAvailable); QCOMPARE(selfContact->presence().statusMessage(), QString(QLatin1String(""))); features << Contact::FeatureInfo; QVERIFY(connect(selfContact->manager()->upgradeContacts( QList() << selfContact, features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(selfContact->alias(), QString(QLatin1String("me@example.com"))); QVERIFY(!selfContact->isAvatarTokenKnown()); QCOMPARE(selfContact->presence().status(), QString(QLatin1String("available"))); QCOMPARE(selfContact->presence().type(), Tp::ConnectionPresenceTypeAvailable); QCOMPARE(selfContact->presence().statusMessage(), QString(QLatin1String(""))); } void TestContacts::testForHandles() { Tp::UIntList handles; TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConnService), TP_HANDLE_TYPE_CONTACT); // Set up a few valid handles handles << tp_handle_ensure(serviceRepo, "alice", NULL, NULL); QVERIFY(handles[0] != 0); handles << tp_handle_ensure(serviceRepo, "bob", NULL, NULL); QVERIFY(handles[1] != 0); // Put one probably invalid one in between handles << 31337; QVERIFY(!tp_handle_is_valid(serviceRepo, handles[2], NULL)); // Then another valid one handles << tp_handle_ensure(serviceRepo, "chris", NULL, NULL); QVERIFY(handles[3] != 0); // And yet another invalid one handles << 12345; QVERIFY(!tp_handle_is_valid(serviceRepo, handles[4], NULL)); // Get contacts for the mixture of valid and invalid handles PendingContacts *pending = mConn->contactManager()->contactsForHandles(handles); // Test the closure accessors QCOMPARE(pending->manager(), mConn->contactManager()); QCOMPARE(pending->features(), Features()); QVERIFY(pending->isForHandles()); QVERIFY(!pending->isForIdentifiers()); QVERIFY(!pending->isUpgrade()); QCOMPARE(pending->handles(), handles); // Wait for the contacts to be built QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // There should be 3 resulting contacts and 2 handles found to be invalid QCOMPARE(mContacts.size(), 3); QCOMPARE(mInvalidHandles.size(), 2); QCOMPARE(mInvalidHandles[0], handles[2]); QCOMPARE(mInvalidHandles[1], handles[4]); // Check the contact contents for (int i = 0; i < 3; i++) { QVERIFY(mContacts[i] != NULL); QCOMPARE(mContacts[i]->manager(), mConn->contactManager()); QCOMPARE(mContacts[i]->requestedFeatures(), Features()); QCOMPARE(mContacts[i]->actualFeatures(), Features()); } QCOMPARE(mContacts[0]->handle()[0], handles[0]); QCOMPARE(mContacts[1]->handle()[0], handles[1]); QCOMPARE(mContacts[2]->handle()[0], handles[3]); QCOMPARE(mContacts[0]->id(), QString(QLatin1String("alice"))); QCOMPARE(mContacts[1]->id(), QString(QLatin1String("bob"))); QCOMPARE(mContacts[2]->id(), QString(QLatin1String("chris"))); // Save the contacts, and make a new request, replacing one of the invalid handles with a valid // one QList saveContacts = mContacts; handles[2] = tp_handle_ensure(serviceRepo, "dora", NULL, NULL); QVERIFY(handles[2] != 0); pending = mConn->contactManager()->contactsForHandles(handles); QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Check that we got the correct number of contacts back QCOMPARE(mContacts.size(), 4); QCOMPARE(mInvalidHandles.size(), 1); // Check that the contacts we already had were returned for the initial three QCOMPARE(saveContacts[0], mContacts[0]); QCOMPARE(saveContacts[1], mContacts[1]); QCOMPARE(saveContacts[2], mContacts[3]); // Check that the new contact is OK too QCOMPARE(mContacts[2]->handle()[0], handles[2]); QCOMPARE(mContacts[2]->id(), QString(QLatin1String("dora"))); // Make the contacts go out of scope, starting releasing their handles, and finish that saveContacts.clear(); mContacts.clear(); mLoop->processEvents(); processDBusQueue(mConn.data()); } void TestContacts::testForIdentifiers() { QStringList validIDs = QStringList() << QLatin1String("Alice") << QLatin1String("Bob") << QLatin1String("Chris"); QStringList invalidIDs = QStringList() << QLatin1String("Not valid") << QLatin1String("Not valid either"); TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConnService), TP_HANDLE_TYPE_CONTACT); QStringList toCheck; // Check that a request with just the invalid IDs fails PendingContacts *fails = mConn->contactManager()->contactsForIdentifiers(invalidIDs); QVERIFY(connect(fails, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); toCheck = fails->invalidIdentifiers().keys(); toCheck.sort(); invalidIDs.sort(); QCOMPARE(toCheck, invalidIDs); // A request with both valid and invalid IDs should succeed fails = mConn->contactManager()->contactsForIdentifiers(invalidIDs + validIDs + invalidIDs); QVERIFY(connect(fails, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(fails->validIdentifiers(), validIDs); toCheck = fails->invalidIdentifiers().keys(); toCheck.sort(); invalidIDs.sort(); QCOMPARE(toCheck, invalidIDs); // Go on to the meat: valid IDs PendingContacts *pending = mConn->contactManager()->contactsForIdentifiers(validIDs); // Test the closure accessors QCOMPARE(pending->manager(), mConn->contactManager()); QCOMPARE(pending->features(), Features()); QVERIFY(!pending->isForHandles()); QVERIFY(pending->isForIdentifiers()); QVERIFY(!pending->isUpgrade()); QCOMPARE(pending->identifiers(), validIDs); // Finish it QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Check that there are 3 contacts consistent with the request QCOMPARE(mContacts.size(), 3); for (int i = 0; i < mContacts.size(); i++) { QVERIFY(mContacts[i] != NULL); QCOMPARE(mContacts[i]->manager(), mConn->contactManager()); QVERIFY(tp_handle_is_valid(serviceRepo, mContacts[i]->handle()[0], NULL)); QCOMPARE(mContacts[i]->requestedFeatures(), Features()); QCOMPARE(mContacts[i]->actualFeatures(), Features()); } QCOMPARE(mContacts[0]->id(), QString(QLatin1String("alice"))); QCOMPARE(mContacts[1]->id(), QString(QLatin1String("bob"))); QCOMPARE(mContacts[2]->id(), QString(QLatin1String("chris"))); // Make the contacts go out of scope, starting releasing their handles, and finish that (but // save their handles first) Tp::UIntList saveHandles = Tp::UIntList() << mContacts[0]->handle()[0] << mContacts[1]->handle()[0] << mContacts[2]->handle()[0]; mContacts.clear(); mLoop->processEvents(); processDBusQueue(mConn.data()); } void TestContacts::testFeatures() { QStringList ids = QStringList() << QLatin1String("alice") << QLatin1String("bob") << QLatin1String("chris"); const char *initialAliases[] = { "Alice in Wonderland", "Bob the Builder", "Chris Sawyer" }; const char *latterAliases[] = { "Alice Through the Looking Glass", "Bob the Pensioner" }; const char *initialTokens[] = { "bbbbb", "ccccc" }; const char *latterTokens[] = { "AAAA", "BBBB" }; static TpTestsContactsConnectionPresenceStatusIndex initialStatuses[] = { TP_TESTS_CONTACTS_CONNECTION_STATUS_AVAILABLE, TP_TESTS_CONTACTS_CONNECTION_STATUS_BUSY, TP_TESTS_CONTACTS_CONNECTION_STATUS_AWAY }; static TpTestsContactsConnectionPresenceStatusIndex latterStatuses[] = { TP_TESTS_CONTACTS_CONNECTION_STATUS_AWAY, TP_TESTS_CONTACTS_CONNECTION_STATUS_AVAILABLE, }; const char *initialMessages[] = { "", "Fixing it", "GON OUT BACKSON" }; const char *latterMessages[] = { "Having some carrots", "Done building for life, yay", }; Features features = Features() << Contact::FeatureAlias << Contact::FeatureAvatarToken << Contact::FeatureSimplePresence; TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConnService), TP_HANDLE_TYPE_CONTACT); // Get test handles Tp::UIntList handles; for (int i = 0; i < 3; i++) { handles.push_back(tp_handle_ensure(serviceRepo, ids[i].toLatin1().constData(), NULL, NULL)); QVERIFY(handles[i] != 0); } // Set the initial attributes tp_tests_contacts_connection_change_aliases(mConnService, 3, handles.toVector().constData(), initialAliases); tp_tests_contacts_connection_change_avatar_tokens(mConnService, 2, handles.toVector().constData() + 1, initialTokens); tp_tests_contacts_connection_change_presences(mConnService, 3, handles.toVector().constData(), initialStatuses, initialMessages); // Build contacts PendingContacts *pending = mConn->contactManager()->contactsForHandles(handles, features); QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Check the contact contents QCOMPARE(mContacts.size(), 3); for (int i = 0; i < 3; i++) { QCOMPARE(mContacts[i]->handle()[0], handles[i]); QCOMPARE(mContacts[i]->id(), ids[i]); QVERIFY((features - mContacts[i]->requestedFeatures()).isEmpty()); QVERIFY((mContacts[i]->actualFeatures() - mContacts[i]->requestedFeatures()).isEmpty()); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureAlias)); QCOMPARE(mContacts[i]->alias(), QString(QLatin1String(initialAliases[i]))); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureAvatarToken)); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureSimplePresence)); QCOMPARE(mContacts[i]->presence().statusMessage(), QString(QLatin1String(initialMessages[i]))); } // Check that there's no known avatar token for the first contact, but that there is for the // two others QVERIFY(!mContacts[0]->isAvatarTokenKnown()); QVERIFY(mContacts[1]->isAvatarTokenKnown()); QVERIFY(mContacts[2]->isAvatarTokenKnown()); QCOMPARE(mContacts[0]->avatarToken(), QString(QLatin1String(""))); QCOMPARE(mContacts[1]->avatarToken(), QString(QLatin1String(initialTokens[0]))); QCOMPARE(mContacts[2]->avatarToken(), QString(QLatin1String(initialTokens[1]))); QCOMPARE(mContacts[0]->presence().status(), QString(QLatin1String("available"))); QCOMPARE(mContacts[1]->presence().status(), QString(QLatin1String("busy"))); QCOMPARE(mContacts[2]->presence().status(), QString(QLatin1String("away"))); QCOMPARE(mContacts[0]->presence().type(), Tp::ConnectionPresenceTypeAvailable); QCOMPARE(mContacts[1]->presence().type(), Tp::ConnectionPresenceTypeBusy); QCOMPARE(mContacts[2]->presence().type(), Tp::ConnectionPresenceTypeAway); // Change some of the contacts to a new set of attributes tp_tests_contacts_connection_change_aliases(mConnService, 2, handles.toVector().constData(), latterAliases); tp_tests_contacts_connection_change_avatar_tokens(mConnService, 2, handles.toVector().constData(), latterTokens); tp_tests_contacts_connection_change_presences(mConnService, 2, handles.toVector().constData(), latterStatuses, latterMessages); mLoop->processEvents(); processDBusQueue(mConn.data()); // Check that the attributes were updated in the Contact objects for (int i = 0; i < 3; i++) { QCOMPARE(mContacts[i]->handle()[0], handles[i]); QCOMPARE(mContacts[i]->id(), ids[i]); QVERIFY((features - mContacts[i]->requestedFeatures()).isEmpty()); QVERIFY((mContacts[i]->actualFeatures() - mContacts[i]->requestedFeatures()).isEmpty()); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureAlias)); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureAvatarToken)); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureSimplePresence)); QVERIFY(mContacts[i]->isAvatarTokenKnown()); } QCOMPARE(mContacts[0]->alias(), QString(QLatin1String(latterAliases[0]))); QCOMPARE(mContacts[1]->alias(), QString(QLatin1String(latterAliases[1]))); QCOMPARE(mContacts[2]->alias(), QString(QLatin1String(initialAliases[2]))); QCOMPARE(mContacts[0]->avatarToken(), QString(QLatin1String(latterTokens[0]))); QCOMPARE(mContacts[1]->avatarToken(), QString(QLatin1String(latterTokens[1]))); QCOMPARE(mContacts[2]->avatarToken(), QString(QLatin1String(initialTokens[1]))); QCOMPARE(mContacts[0]->presence().status(), QString(QLatin1String("away"))); QCOMPARE(mContacts[1]->presence().status(), QString(QLatin1String("available"))); QCOMPARE(mContacts[2]->presence().status(), QString(QLatin1String("away"))); QCOMPARE(mContacts[0]->presence().type(), Tp::ConnectionPresenceTypeAway); QCOMPARE(mContacts[1]->presence().type(), Tp::ConnectionPresenceTypeAvailable); QCOMPARE(mContacts[2]->presence().type(), Tp::ConnectionPresenceTypeAway); QCOMPARE(mContacts[0]->presence().statusMessage(), QString(QLatin1String(latterMessages[0]))); QCOMPARE(mContacts[1]->presence().statusMessage(), QString(QLatin1String(latterMessages[1]))); QCOMPARE(mContacts[2]->presence().statusMessage(), QString(QLatin1String(initialMessages[2]))); // Make the contacts go out of scope, starting releasing their handles, and finish that mContacts.clear(); mLoop->processEvents(); processDBusQueue(mConn.data()); } void TestContacts::testFeaturesNotRequested() { // Test ids and corresponding handles QStringList ids = QStringList() << QLatin1String("alice") << QLatin1String("bob") << QLatin1String("chris"); TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConnService), TP_HANDLE_TYPE_CONTACT); Tp::UIntList handles; for (int i = 0; i < 3; i++) { handles.push_back(tp_handle_ensure(serviceRepo, ids[i].toLatin1().constData(), NULL, NULL)); QVERIFY(handles[i] != 0); } // Build contacts (note: no features) PendingContacts *pending = mConn->contactManager()->contactsForHandles(handles); QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Check that the feature accessors return sensible fallback values (note: the warnings are // intentional - however, I'm not quite sure if they should be just debug (like in tp-glib)) QCOMPARE(mContacts.size(), 3); for (int i = 0; i < 3; i++) { ContactPtr contact = mContacts[i]; QVERIFY(contact->requestedFeatures().isEmpty()); QVERIFY(contact->actualFeatures().isEmpty()); QCOMPARE(contact->alias(), contact->id()); QVERIFY(!contact->isAvatarTokenKnown()); QCOMPARE(contact->avatarToken(), QString(QLatin1String(""))); QCOMPARE(contact->presence().isValid(), false); } // Make the contacts go out of scope, starting releasing their handles, and finish that mContacts.clear(); mLoop->processEvents(); processDBusQueue(mConn.data()); } void TestContacts::testUpgrade() { QStringList ids = QStringList() << QLatin1String("alice") << QLatin1String("bob") << QLatin1String("chris"); const char *aliases[] = { "Alice in Wonderland", "Bob The Builder", "Chris Sawyer" }; const char *tokens[] = { "aaaaa", "bbbbb", "ccccc" }; static TpTestsContactsConnectionPresenceStatusIndex statuses[] = { TP_TESTS_CONTACTS_CONNECTION_STATUS_AVAILABLE, TP_TESTS_CONTACTS_CONNECTION_STATUS_BUSY, TP_TESTS_CONTACTS_CONNECTION_STATUS_AWAY }; const char *messages[] = { "", "Fixing it", "GON OUT BACKSON" }; TpHandleRepoIface *serviceRepo = tp_base_connection_get_handles(TP_BASE_CONNECTION(mConnService), TP_HANDLE_TYPE_CONTACT); Tp::UIntList handles; for (int i = 0; i < 3; i++) { handles.push_back(tp_handle_ensure(serviceRepo, ids[i].toLatin1().constData(), NULL, NULL)); QVERIFY(handles[i] != 0); } tp_tests_contacts_connection_change_aliases(mConnService, 3, handles.toVector().constData(), aliases); tp_tests_contacts_connection_change_avatar_tokens(mConnService, 3, handles.toVector().constData(), tokens); tp_tests_contacts_connection_change_presences(mConnService, 3, handles.toVector().constData(), statuses, messages); PendingContacts *pending = mConn->contactManager()->contactsForHandles(handles); // Wait for the contacts to be built QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // There should be 3 resulting contacts - save them for future reference QCOMPARE(mContacts.size(), 3); QList saveContacts = mContacts; // Upgrade them Features features = Features() << Contact::FeatureAlias << Contact::FeatureAvatarToken << Contact::FeatureSimplePresence; pending = mConn->contactManager()->upgradeContacts(saveContacts, features); // Test the closure accessors QCOMPARE(pending->manager(), mConn->contactManager()); QCOMPARE(pending->features(), features); QVERIFY(!pending->isForHandles()); QVERIFY(!pending->isForIdentifiers()); QVERIFY(pending->isUpgrade()); QCOMPARE(pending->contactsToUpgrade(), saveContacts); // Wait for the contacts to be built QVERIFY(connect(pending, SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectPendingContactsFinished(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); // Check that we got the correct contacts back QCOMPARE(mContacts, saveContacts); // Check the contact contents for (int i = 0; i < 3; i++) { QCOMPARE(mContacts[i]->handle()[0], handles[i]); QCOMPARE(mContacts[i]->id(), ids[i]); QVERIFY((features - mContacts[i]->requestedFeatures()).isEmpty()); QVERIFY((mContacts[i]->actualFeatures() - mContacts[i]->requestedFeatures()).isEmpty()); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureAlias)); QCOMPARE(mContacts[i]->alias(), QString(QLatin1String(aliases[i]))); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureAvatarToken)); QVERIFY(mContacts[i]->isAvatarTokenKnown()); QCOMPARE(mContacts[i]->avatarToken(), QString(QLatin1String(tokens[i]))); QVERIFY(mContacts[i]->actualFeatures().contains(Contact::FeatureSimplePresence)); QCOMPARE(mContacts[i]->presence().statusMessage(), QString(QLatin1String(messages[i]))); } QCOMPARE(mContacts[0]->presence().status(), QString(QLatin1String("available"))); QCOMPARE(mContacts[1]->presence().status(), QString(QLatin1String("busy"))); QCOMPARE(mContacts[2]->presence().status(), QString(QLatin1String("away"))); QCOMPARE(mContacts[0]->presence().type(), Tp::ConnectionPresenceTypeAvailable); QCOMPARE(mContacts[1]->presence().type(), Tp::ConnectionPresenceTypeBusy); QCOMPARE(mContacts[2]->presence().type(), Tp::ConnectionPresenceTypeAway); // Make the contacts go out of scope, starting releasing their handles, and finish that saveContacts.clear(); mContacts.clear(); mLoop->processEvents(); processDBusQueue(mConn.data()); } void TestContacts::testSelfContactFallback() { gchar *name; gchar *connPath; GError *error = 0; TpTestsSimpleConnection *connService; connService = TP_TESTS_SIMPLE_CONNECTION(g_object_new( TP_TESTS_TYPE_SIMPLE_CONNECTION, "account", "me@example.com", "protocol", "simple", NULL)); QVERIFY(connService != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(connService), "simple", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); ConnectionPtr conn = Connection::create(QLatin1String(name), QLatin1String(connPath), ChannelFactory::create(QDBusConnection::sessionBus()), ContactFactory::create()); g_free(name); g_free(connPath); QCOMPARE(conn->isReady(), false); Features features = Features() << Connection::FeatureSelfContact; QVERIFY(connect(conn->lowlevel()->requestConnect(features), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); QCOMPARE(conn->isReady(features), true); ContactPtr selfContact = conn->selfContact(); QVERIFY(selfContact != 0); QCOMPARE(selfContact->handle()[0], conn->selfHandle()); QCOMPARE(selfContact->id(), QString(QLatin1String("me@example.com"))); QCOMPARE(selfContact->alias(), QString(QLatin1String("me@example.com"))); QVERIFY(!selfContact->isAvatarTokenKnown()); QCOMPARE(selfContact->presence().isValid(), false); tp_tests_simple_connection_inject_disconnect(connService); if (conn->isValid()) { QVERIFY(connect(conn.data(), SIGNAL(invalidated(Tp::DBusProxy *, const QString &, const QString &)), mLoop, SLOT(quit()))); QCOMPARE(mLoop->exec(), 0); } g_object_unref(connService); } void TestContacts::cleanup() { cleanupImpl(); } void TestContacts::cleanupTestCase() { if (!mContacts.isEmpty()) { mContacts.clear(); } if (!mInvalidHandles.isEmpty()) { mInvalidHandles.clear(); } if (mConn) { // Disconnect and wait for the readiness change QVERIFY(connect(mConn->lowlevel()->requestDisconnect(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(expectSuccessfulCall(Tp::PendingOperation*)))); QCOMPARE(mLoop->exec(), 0); if (mConn->isValid()) { QVERIFY(connect(mConn.data(), SIGNAL(invalidated(Tp::DBusProxy *, QString, QString)), SLOT(expectConnInvalidated()))); QCOMPARE(mLoop->exec(), 0); } } if (mConnService != 0) { g_object_unref(mConnService); mConnService = 0; } cleanupTestCaseImpl(); } QTEST_MAIN(TestContacts) #include "_gen/contacts.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/dbus/properties.cpp0000644000175100017520000000675412530423576022735 0ustar00kaffeinekaffeine00000000000000#include #include #include #define TP_QT_ENABLE_LOWLEVEL_API #include #include #include #include #include #include #include using namespace Tp; class TestProperties : public Test { Q_OBJECT public: TestProperties(QObject *parent = 0) : Test(parent), mConnService(0) { } private Q_SLOTS: void initTestCase(); void init(); void testPropertiesMonitoring(); void cleanup(); void cleanupTestCase(); private: QString mConnName, mConnPath; TpTestsContactsConnection *mConnService; Client::ConnectionInterface *mConn; }; void TestProperties::initTestCase() { initTestCaseImpl(); g_type_init(); g_set_prgname("properties"); tp_debug_set_flags("all"); dbus_g_bus_get(DBUS_BUS_STARTER, 0); } void TestProperties::init() { initImpl(); gchar *name; gchar *connPath; GError *error = 0; mConnService = TP_TESTS_CONTACTS_CONNECTION(g_object_new( TP_TESTS_TYPE_CONTACTS_CONNECTION, "account", "me@example.com", "protocol", "contacts", NULL)); QVERIFY(mConnService != 0); QVERIFY(tp_base_connection_register(TP_BASE_CONNECTION(mConnService), "contacts", &name, &connPath, &error)); QVERIFY(error == 0); QVERIFY(name != 0); QVERIFY(connPath != 0); mConnName = QLatin1String(name); mConnPath = QLatin1String(connPath); g_free(name); g_free(connPath); mConn = new Client::ConnectionInterface(mConnName, mConnPath, this); QVERIFY(mConn->isValid()); } void TestProperties::testPropertiesMonitoring() { QCOMPARE(mConn->isMonitoringProperties(), false); mConn->setMonitorProperties(true); QSignalSpy spy(mConn, SIGNAL(propertiesChanged(QVariantMap,QStringList))); connect(mConn, SIGNAL(propertiesChanged(QVariantMap,QStringList)), mLoop, SLOT(quit())); GHashTable *changed = tp_asv_new( "test-prop", G_TYPE_STRING, "I am actually different than I used to be.", "test-again", G_TYPE_UINT, 0xff0000ffU, NULL ); tp_svc_dbus_properties_emit_properties_changed (mConnService, "a.random.interface", changed, NULL); tp_svc_dbus_properties_emit_properties_changed (mConnService, mConn->interface().toLatin1().data(), changed, NULL); QCOMPARE(spy.count(), 0); mLoop->exec(); QCOMPARE(spy.count(), 1); QList arguments = spy.takeFirst(); QVERIFY(arguments.at(0).type() == QVariant::Map); QVERIFY(arguments.at(1).type() == QVariant::StringList); QVariantMap resultMap = arguments.at(0).toMap(); QCOMPARE(resultMap.size(), 2); QCOMPARE(resultMap[QLatin1String("test-prop")].toString(), QLatin1String("I am actually different than I used to be.")); QCOMPARE(resultMap[QLatin1String("test-again")].toUInt(), 0xff0000ffU); QCOMPARE(spy.count(), 0); g_hash_table_destroy (changed); } void TestProperties::cleanup() { if (mConn) { mConn->deleteLater(); mConn = 0; } if (mConnService != 0) { g_object_unref(mConnService); mConnService = 0; } cleanupImpl(); } void TestProperties::cleanupTestCase() { cleanupTestCaseImpl(); } QTEST_MAIN(TestProperties) #include "_gen/properties.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/test-key-file-format-error.ini0000644000175100017520000000002712530423576024663 0ustar00kaffeinekaffeine00000000000000a 1 b=2 [test group 1 telepathy-qt-0.9.6.1/tests/README0000644000175100017520000000065012530423576017745 0ustar00kaffeinekaffeine00000000000000Tests should be divided up by the environment they require in order to operate correctly. Where to put new tests: * /tests/ if they're simple regression tests in pure C++ that don't access D-Bus (these are likely to be rare) * /tests/dbus/ if they touch the session bus (a temporary session bus will be used) /tests/lib/ contains support code, some of it taken from the telepathy-glib examples and regression tests. telepathy-qt-0.9.6.1/tests/rccspec.cpp0000644000175100017520000001650412530423576021220 0ustar00kaffeinekaffeine00000000000000#include #include using namespace Tp; class TestRCCSpec : public QObject { Q_OBJECT private Q_SLOTS: void testRCCSpec(); }; void TestRCCSpec::testRCCSpec() { RequestableChannelClassSpec spec; spec = RequestableChannelClassSpec::textChat(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QCOMPARE(spec.targetHandleType(), HandleTypeContact); QCOMPARE(spec.fixedProperties().size(), 2); QCOMPARE(spec.allowedProperties().isEmpty(), true); spec = RequestableChannelClassSpec::textChatroom(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QCOMPARE(spec.targetHandleType(), HandleTypeRoom); QCOMPARE(spec.fixedProperties().size(), 2); QCOMPARE(spec.allowedProperties().isEmpty(), true); spec = RequestableChannelClassSpec::streamedMediaCall(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); QCOMPARE(spec.targetHandleType(), HandleTypeContact); QCOMPARE(spec.fixedProperties().size(), 2); QCOMPARE(spec.allowedProperties().isEmpty(), true); spec = RequestableChannelClassSpec::streamedMediaAudioCall(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); QCOMPARE(spec.targetHandleType(), HandleTypeContact); QCOMPARE(spec.fixedProperties().size(), 2); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")), true); spec = RequestableChannelClassSpec::streamedMediaVideoCall(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); QCOMPARE(spec.targetHandleType(), HandleTypeContact); QCOMPARE(spec.fixedProperties().size(), 2); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")), true); spec = RequestableChannelClassSpec::streamedMediaVideoCallWithAudio(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); QCOMPARE(spec.targetHandleType(), HandleTypeContact); QCOMPARE(spec.fixedProperties().size(), 2); QCOMPARE(spec.allowedProperties().size(), 2); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")), true); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")), true); spec = RequestableChannelClassSpec::conferenceTextChat(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QVERIFY(!spec.hasTargetHandleType()); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")), true); spec = RequestableChannelClassSpec::conferenceTextChatWithInvitees(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QVERIFY(!spec.hasTargetHandleType()); QCOMPARE(spec.allowedProperties().size(), 2); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")), true); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles")), true); spec = RequestableChannelClassSpec::conferenceTextChatroom(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QCOMPARE(spec.targetHandleType(), HandleTypeRoom); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")), true); spec = RequestableChannelClassSpec::conferenceTextChatroomWithInvitees(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_TEXT); QCOMPARE(spec.targetHandleType(), HandleTypeRoom); QCOMPARE(spec.allowedProperties().size(), 2); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")), true); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles")), true); spec = RequestableChannelClassSpec::conferenceStreamedMediaCall(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); QVERIFY(!spec.hasTargetHandleType()); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")), true); spec = RequestableChannelClassSpec::conferenceStreamedMediaCallWithInvitees(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); QVERIFY(!spec.hasTargetHandleType()); QCOMPARE(spec.allowedProperties().size(), 2); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")), true); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles")), true); spec = RequestableChannelClassSpec::contactSearch(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); QCOMPARE(spec.fixedProperties().size(), 1); QCOMPARE(spec.allowedProperties().isEmpty(), true); spec = RequestableChannelClassSpec::contactSearchWithSpecificServer(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); QCOMPARE(spec.fixedProperties().size(), 1); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Server")), true); spec = RequestableChannelClassSpec::contactSearchWithLimit(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); QCOMPARE(spec.fixedProperties().size(), 1); QCOMPARE(spec.allowedProperties().size(), 1); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Limit")), true); spec = RequestableChannelClassSpec::contactSearchWithSpecificServerAndLimit(); QCOMPARE(spec.channelType(), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); QCOMPARE(spec.fixedProperties().size(), 1); QCOMPARE(spec.allowedProperties().size(), 2); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Server")), true); QCOMPARE(spec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Limit")), true); QCOMPARE(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio().supports( RequestableChannelClassSpec::streamedMediaVideoCall()), true); QCOMPARE(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio().supports( RequestableChannelClassSpec::streamedMediaAudioCall()), true); QCOMPARE(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio().supports( RequestableChannelClassSpec::streamedMediaCall()), true); QCOMPARE(RequestableChannelClassSpec::textChat() == RequestableChannelClassSpec::textChatroom(), false); RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); spec = RequestableChannelClassSpec(rcc); QCOMPARE(RequestableChannelClassSpec::textChat() == spec, true); } QTEST_MAIN(TestRCCSpec) #include "_gen/rccspec.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/key-file.cpp0000644000175100017520000001315312530423576021300 0ustar00kaffeinekaffeine00000000000000#include #include "TelepathyQt/key-file.h" using namespace Tp; class TestKeyFile : public QObject { Q_OBJECT private Q_SLOTS: void testKeyFile(); }; void TestKeyFile::testKeyFile() { QString top_srcdir = QString::fromLocal8Bit(::getenv("abs_top_srcdir")); if (!top_srcdir.isEmpty()) { QDir::setCurrent(top_srcdir + QLatin1String("/tests")); } KeyFile defaultKeyFile; QCOMPARE(defaultKeyFile.status(), KeyFile::None); KeyFile notFoundkeyFile(QLatin1String("test-key-file-not-found.ini")); QCOMPARE(notFoundkeyFile.status(), KeyFile::NotFoundError); KeyFile formatErrorkeyFile(QLatin1String("test-key-file-format-error.ini")); QCOMPARE(formatErrorkeyFile.status(), KeyFile::FormatError); KeyFile keyFile(QLatin1String("test-key-file.ini")); QCOMPARE(keyFile.status(), KeyFile::NoError); QStringList allGroups = keyFile.allGroups(); allGroups.sort(); QCOMPARE(allGroups, QStringList() << QString() << QLatin1String("test group 1") << QLatin1String("test group 2")); QStringList allKeys = keyFile.allKeys(); allKeys.sort(); QCOMPARE(allKeys, QStringList() << QLatin1String("a") << QLatin1String("b") << QLatin1String("c") << QLatin1String("d") << QLatin1String("e")); keyFile.setGroup(QLatin1String("test group 1")); QCOMPARE(keyFile.contains(QLatin1String("f")), false); QCOMPARE(keyFile.value(QLatin1String("c")).length(), 5); keyFile.setGroup(QLatin1String("test group 2")); QCOMPARE(keyFile.contains(QLatin1String("e")), true); QCOMPARE(keyFile.value(QLatin1String("e")), QString(QLatin1String("space"))); keyFile.setFileName(QLatin1String("telepathy/managers/test-manager-file.manager")); QCOMPARE(keyFile.status(), KeyFile::NoError); keyFile.setGroup(QLatin1String("Protocol somewhat-pathological")); QCOMPARE(keyFile.value(QLatin1String("param-foo")), QString(QLatin1String("s required"))); QCOMPARE(keyFile.value(QLatin1String("default-foo")), QString(QLatin1String("hello world"))); QCOMPARE(keyFile.value(QLatin1String("param-semicolons")), QString(QLatin1String("s secret"))); QCOMPARE(keyFile.value(QLatin1String("default-semicolons")), QString(QLatin1String("list;of;misc;"))); QCOMPARE(keyFile.value(QLatin1String("param-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-list")), QString(QLatin1String("list;of;misc;"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-list")), QStringList() << QLatin1String("list") << QLatin1String("of") << QLatin1String("misc")); QCOMPARE(keyFile.value(QLatin1String("param-unterminated-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-unterminated-list")), QString(QLatin1String("list;of;misc"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-unterminated-list")), QStringList() << QLatin1String("list") << QLatin1String("of") << QLatin1String("misc")); QCOMPARE(keyFile.value(QLatin1String("param-spaces-in-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-spaces-in-list")), QString(QLatin1String("list; of; misc ;"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-spaces-in-list")), QStringList() << QLatin1String("list") << QLatin1String(" of") << QLatin1String(" misc ")); QCOMPARE(keyFile.value(QLatin1String("param-escaped-semicolon-in-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-escaped-semicolon-in-list")), QString(QLatin1String("list;of;misc;"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-escaped-semicolon-in-list")), QStringList() << QLatin1String("list;of") << QLatin1String("misc")); QCOMPARE(keyFile.value(QLatin1String("param-doubly-escaped-semicolon-in-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-doubly-escaped-semicolon-in-list")), QString(QLatin1String("list\\;of;misc;"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-doubly-escaped-semicolon-in-list")), QStringList() << QLatin1String("list\\") << QLatin1String("of") << QLatin1String("misc")); QCOMPARE(keyFile.value(QLatin1String("param-triply-escaped-semicolon-in-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-triply-escaped-semicolon-in-list")), QString(QLatin1String("list\\;of;misc;"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-triply-escaped-semicolon-in-list")), QStringList() << QLatin1String("list\\;of") << QLatin1String("misc")); QCOMPARE(keyFile.value(QLatin1String("param-empty-list")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-empty-list")), QString(QLatin1String(""))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-empty-list")), QStringList()); QCOMPARE(keyFile.value(QLatin1String("param-list-of-empty-string")), QString(QLatin1String("as"))); QCOMPARE(keyFile.value(QLatin1String("default-list-of-empty-string")), QString(QLatin1String(";"))); QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-list-of-empty-string")), QStringList() << QString()); QCOMPARE(keyFile.value(QLatin1String("param-escaped-semicolon")), QString(QLatin1String("s"))); QCOMPARE(keyFile.value(QLatin1String("default-escaped-semicolon")), QString(QLatin1String("foo;bar"))); } QTEST_MAIN(TestKeyFile) #include "_gen/key-file.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/CMakeLists.txt0000644000175100017520000000424612530423576021632 0ustar00kaffeinekaffeine00000000000000find_program(SH sh) set(test_environment " export abs_top_builddir=${CMAKE_BINARY_DIR} export abs_top_srcdir=${CMAKE_SOURCE_DIR} export XDG_DATA_HOME=${CMAKE_SOURCE_DIR}/tests export XDG_DATA_DIRS=${CMAKE_BINARY_DIR}/tests ") # Add targets for callgrind and valgrind tests add_custom_target(check-valgrind) add_custom_target(check-callgrind) # Add targets for lcov reports add_custom_target(lcov-reset lcov --directory ${CMAKE_BINARY_DIR} --zerocounters COMMAND find ${CMAKE_BINARY_DIR} -name '*.gcda' -exec rm -f '{}' ';' || true COMMENT "Cleaning lcov files") add_custom_target(lcov-check make test || true COMMAND lcov --directory ${CMAKE_BINARY_DIR} --capture --output-file ${CMAKE_BINARY_DIR}/lcov.info && mkdir ${CMAKE_BINARY_DIR}/lcov.html || true && genhtml --title ${PACKAGE_NAME} --output-directory ${CMAKE_BINARY_DIR}/lcov.html ${CMAKE_BINARY_DIR}/lcov.info COMMENT "Generating lcov report in file://${CMAKE_BINARY_DIR}/lcov.html/index.html" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests) add_dependencies(lcov-check lcov-reset) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/runGenericTest.sh "${test_environment} $@") file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/_gen) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILER_COVERAGE_FLAGS}") tpqt_add_generic_unit_test(Capabilities capabilities telepathy-qt-test-backdoors) tpqt_add_generic_unit_test(Callbacks callbacks) tpqt_add_generic_unit_test(ChannelClassSpec channel-class-spec) tpqt_add_generic_unit_test(Features features) tpqt_add_generic_unit_test(KeyFile key-file telepathy-qt-test-backdoors) tpqt_add_generic_unit_test(ManagerFile manager-file telepathy-qt-test-backdoors) tpqt_add_generic_unit_test(Presence presence) tpqt_add_generic_unit_test(Profile profile) tpqt_add_generic_unit_test(Ptr ptr) tpqt_add_generic_unit_test(RCCSpec rccspec) tpqt_add_generic_unit_test(FileTransferChannelCreationProperties file-transfer-channel-creation-properties) add_subdirectory(dbus-1) add_subdirectory(dbus) add_subdirectory(lib) telepathy-qt-0.9.6.1/tests/dbus-1/0000755000175100017520000000000012530423576020157 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/dbus-1/CMakeLists.txt0000644000175100017520000000021712530423576022717 0ustar00kaffeinekaffeine00000000000000set(abs_top_builddir ${CMAKE_BINARY_DIR}) configure_file(session.conf.in ${CMAKE_CURRENT_BINARY_DIR}/session.conf) add_subdirectory(services) telepathy-qt-0.9.6.1/tests/dbus-1/services/0000755000175100017520000000000012530423576022002 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/dbus-1/services/spurious.service.in0000644000175100017520000000013212530423576025656 0ustar00kaffeinekaffeine00000000000000[D-BUS Service] Name=org.freedesktop.Telepathy.ConnectionManager.spurious Exec=/bin/false telepathy-qt-0.9.6.1/tests/dbus-1/services/CMakeLists.txt0000644000175100017520000000037612530423576024550 0ustar00kaffeinekaffeine00000000000000set(TEST_PYTHON ${PYTHON_EXECUTABLE}) set(abs_top_srcdir ${CMAKE_SOURCE_DIR}) configure_file(account-manager.service.in ${CMAKE_CURRENT_BINARY_DIR}/account-manager.service) configure_file(spurious.service.in ${CMAKE_CURRENT_BINARY_DIR}/spurious.service) telepathy-qt-0.9.6.1/tests/dbus-1/services/account-manager.service.in0000644000175100017520000000020612530423576027033 0ustar00kaffeinekaffeine00000000000000[D-BUS Service] Name=org.freedesktop.Telepathy.AccountManager Exec=@TEST_PYTHON@ @abs_top_srcdir@/tests/lib/python/account-manager.py telepathy-qt-0.9.6.1/tests/dbus-1/session.conf.in0000644000175100017520000000176212530423576023124 0ustar00kaffeinekaffeine00000000000000 session unix:tmpdir=/tmp @abs_top_builddir@/tests/dbus-1/services/ telepathy-qt-0.9.6.1/tests/manager-file.cpp0000644000175100017520000002345012530423576022123 0ustar00kaffeinekaffeine00000000000000#include #include #include #include "TelepathyQt/manager-file.h" using namespace Tp; namespace { bool containsParam(const ParamSpecList ¶ms, const char *name) { Q_FOREACH (const ParamSpec ¶m, params) { if (param.name == QLatin1String(name)) { return true; } } return false; } const ParamSpec *getParam(const ParamSpecList ¶ms, const QString &name) { Q_FOREACH (const ParamSpec ¶m, params) { if (param.name == name) { return ¶m; } } return NULL; } PresenceSpec getPresenceSpec(const PresenceSpecList &specs, const QString &status) { foreach (const PresenceSpec &spec, specs) { if (spec.presence().status() == status) { return spec; } } return PresenceSpec(); } } class TestManagerFile : public QObject { Q_OBJECT public: TestManagerFile(QObject *parent = 0); private Q_SLOTS: void testManagerFile(); }; TestManagerFile::TestManagerFile(QObject *parent) : QObject(parent) { Tp::enableDebug(true); Tp::enableWarnings(true); } void TestManagerFile::testManagerFile() { ManagerFile notFoundManagerFile(QLatin1String("test-manager-file-not-found")); QCOMPARE(notFoundManagerFile.isValid(), false); ManagerFile invalidManagerFile(QLatin1String("test-manager-file-malformed-keyfile")); QCOMPARE(invalidManagerFile.isValid(), false); ManagerFile invalidManagerFile2(QLatin1String("test-manager-file-invalid-signature")); QCOMPARE(invalidManagerFile2.isValid(), false); ManagerFile managerFile(QLatin1String("test-manager-file")); QCOMPARE(managerFile.isValid(), true); QStringList protocols = managerFile.protocols(); protocols.sort(); QCOMPARE(protocols, QStringList() << QLatin1String("bar") << QLatin1String("foo") << QLatin1String("somewhat-pathological")); ParamSpecList params = managerFile.parameters(QLatin1String("foo")); QCOMPARE(containsParam(params, "account"), true); QCOMPARE(containsParam(params, "encryption-key"), true); QCOMPARE(containsParam(params, "password"), true); QCOMPARE(containsParam(params, "port"), true); QCOMPARE(containsParam(params, "register"), true); QCOMPARE(containsParam(params, "server-list"), true); QCOMPARE(containsParam(params, "non-existant"), false); QCOMPARE(QLatin1String("x-foo"), managerFile.vcardField(QLatin1String("foo"))); QCOMPARE(QLatin1String("Foo"), managerFile.englishName(QLatin1String("foo"))); QCOMPARE(QLatin1String("im-foo"), managerFile.iconName(QLatin1String("foo"))); QStringList addressableVCardFields = managerFile.addressableVCardFields(QLatin1String("foo")); QCOMPARE(addressableVCardFields, QStringList() << QLatin1String("x-foo")); QStringList addressableUriSchemes = managerFile.addressableUriSchemes(QLatin1String("foo")); QCOMPARE(addressableUriSchemes, QStringList() << QLatin1String("foo")); RequestableChannelClass ftRcc; ftRcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER); ftRcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), HandleTypeContact); ftRcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentHashType"), FileHashTypeMD5); ftRcc.allowedProperties.append( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")); ftRcc.allowedProperties.append( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")); RequestableChannelClass fooTextRcc; fooTextRcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); fooTextRcc.fixedProperties.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), HandleTypeContact); fooTextRcc.allowedProperties.append( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")); fooTextRcc.allowedProperties.append( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")); RequestableChannelClassList expectedRccs; expectedRccs.append(ftRcc); expectedRccs.append(fooTextRcc); QCOMPARE(expectedRccs.size(), managerFile.requestableChannelClasses(QLatin1String("foo")).size()); qDebug() << managerFile.requestableChannelClasses(QLatin1String("foo"))[0].fixedProperties; qDebug() << managerFile.requestableChannelClasses(QLatin1String("foo"))[1].fixedProperties; QCOMPARE(ftRcc, managerFile.requestableChannelClasses(QLatin1String("foo"))[0]); QCOMPARE(fooTextRcc, managerFile.requestableChannelClasses(QLatin1String("foo"))[1]); const ParamSpec *param; param = getParam(params, QLatin1String("account")); QCOMPARE(param->flags, (uint) ConnMgrParamFlagRequired | ConnMgrParamFlagHasDefault); QCOMPARE(param->signature, QString(QLatin1String("s"))); param = getParam(params, QLatin1String("password")); QCOMPARE(param->flags, (uint) ConnMgrParamFlagRequired | ConnMgrParamFlagSecret); QCOMPARE(param->signature, QString(QLatin1String("s"))); param = getParam(params, QLatin1String("encryption-key")); QCOMPARE(param->flags, (uint) ConnMgrParamFlagSecret); QCOMPARE(param->signature, QString(QLatin1String("s"))); PresenceSpecList statuses = managerFile.allowedPresenceStatuses(QLatin1String("foo")); QCOMPARE(statuses.size(), 3); PresenceSpec spec; spec = getPresenceSpec(statuses, QLatin1String("offline")); QCOMPARE(spec.isValid(), true); QVERIFY(spec.presence().type() == ConnectionPresenceTypeOffline); QCOMPARE(spec.maySetOnSelf(), false); QCOMPARE(spec.canHaveStatusMessage(), false); spec = getPresenceSpec(statuses, QLatin1String("dnd")); QCOMPARE(spec.isValid(), true); QVERIFY(spec.presence().type() == ConnectionPresenceTypeBusy); QCOMPARE(spec.maySetOnSelf(), true); QCOMPARE(spec.canHaveStatusMessage(), false); spec = getPresenceSpec(statuses, QLatin1String("available")); QCOMPARE(spec.isValid(), true); QVERIFY(spec.presence().type() == ConnectionPresenceTypeAvailable); QCOMPARE(spec.maySetOnSelf(), true); QCOMPARE(spec.canHaveStatusMessage(), true); AvatarSpec avatarReqs = managerFile.avatarRequirements(QLatin1String("foo")); QStringList supportedMimeTypes = avatarReqs.supportedMimeTypes(); supportedMimeTypes.sort(); QCOMPARE(supportedMimeTypes, QStringList() << QLatin1String("image/gif") << QLatin1String("image/jpeg") << QLatin1String("image/png")); QCOMPARE(avatarReqs.minimumHeight(), (uint) 32); QCOMPARE(avatarReqs.maximumHeight(), (uint) 96); QCOMPARE(avatarReqs.recommendedHeight(), (uint) 64); QCOMPARE(avatarReqs.minimumWidth(), (uint) 32); QCOMPARE(avatarReqs.maximumWidth(), (uint) 96); QCOMPARE(avatarReqs.recommendedWidth(), (uint) 64); QCOMPARE(avatarReqs.maximumBytes(), (uint) 8192); params = managerFile.parameters(QLatin1String("somewhat-pathological")); QCOMPARE(containsParam(params, "foo"), true); QCOMPARE(containsParam(params, "semicolons"), true); QCOMPARE(containsParam(params, "list"), true); QCOMPARE(containsParam(params, "unterminated-list"), true); QCOMPARE(containsParam(params, "spaces-in-list"), true); QCOMPARE(containsParam(params, "escaped-semicolon-in-list"), true); QCOMPARE(containsParam(params, "doubly-escaped-semicolon-in-list"), true); QCOMPARE(containsParam(params, "triply-escaped-semicolon-in-list"), true); QCOMPARE(containsParam(params, "empty-list"), true); QCOMPARE(containsParam(params, "escaped-semicolon"), true); QCOMPARE(containsParam(params, "object"), true); QCOMPARE(containsParam(params, "non-existant"), false); param = getParam(params, QLatin1String("foo")); QCOMPARE(param->flags, (uint) ConnMgrParamFlagRequired | ConnMgrParamFlagHasDefault); QCOMPARE(param->signature, QString(QLatin1String("s"))); param = getParam(params, QLatin1String("semicolons")); QCOMPARE(param->flags, (uint) ConnMgrParamFlagSecret | ConnMgrParamFlagHasDefault); QCOMPARE(param->signature, QString(QLatin1String("s"))); param = getParam(params, QLatin1String("list")); QCOMPARE(param->signature, QString(QLatin1String("as"))); QCOMPARE(param->defaultValue.variant().toStringList(), QStringList() << QLatin1String("list") << QLatin1String("of") << QLatin1String("misc")); param = getParam(params, QLatin1String("escaped-semicolon-in-list")); QCOMPARE(param->signature, QString(QLatin1String("as"))); QCOMPARE(param->defaultValue.variant().toStringList(), QStringList() << QLatin1String("list;of") << QLatin1String("misc")); param = getParam(params, QLatin1String("doubly-escaped-semicolon-in-list")); QCOMPARE(param->signature, QString(QLatin1String("as"))); QCOMPARE(param->defaultValue.variant().toStringList(), QStringList() << QLatin1String("list\\") << QLatin1String("of") << QLatin1String("misc")); param = getParam(params, QLatin1String("triply-escaped-semicolon-in-list")); QCOMPARE(param->signature, QString(QLatin1String("as"))); QCOMPARE(param->defaultValue.variant().toStringList(), QStringList() << QLatin1String("list\\;of") << QLatin1String("misc")); param = getParam(params, QLatin1String("empty-list")); QCOMPARE(param->signature, QString(QLatin1String("as"))); QCOMPARE(param->defaultValue.variant().toStringList(), QStringList()); param = getParam(params, QLatin1String("list-of-empty-string")); QCOMPARE(param->signature, QString(QLatin1String("as"))); QCOMPARE(param->defaultValue.variant().toStringList(), QStringList() << QString()); } QTEST_MAIN(TestManagerFile) #include "_gen/manager-file.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/profile.cpp0000644000175100017520000001242212530423576021231 0ustar00kaffeinekaffeine00000000000000#include #include #include using namespace Tp; class TestProfile : public QObject { Q_OBJECT public: TestProfile(QObject *parent = 0); private Q_SLOTS: void testProfile(); }; TestProfile::TestProfile(QObject *parent) : QObject(parent) { Tp::enableDebug(true); Tp::enableWarnings(true); } void TestProfile::testProfile() { QString top_srcdir = QString::fromLocal8Bit(::getenv("abs_top_srcdir")); if (!top_srcdir.isEmpty()) { QDir::setCurrent(top_srcdir + QLatin1String("/tests")); } ProfilePtr profile = Profile::createForServiceName(QLatin1String("test-profile-file-not-found")); QCOMPARE(profile->isValid(), false); profile = Profile::createForServiceName(QLatin1String("test-profile-malformed")); QCOMPARE(profile->isValid(), false); profile = Profile::createForServiceName(QLatin1String("test-profile-invalid-service-id")); QCOMPARE(profile->isValid(), false); profile = Profile::createForServiceName(QLatin1String("test-profile-non-im-type")); QCOMPARE(profile->isValid(), false); profile = Profile::createForFileName(QLatin1String("telepathy/profiles/test-profile-non-im-type.profile")); QCOMPARE(profile->isValid(), true); profile = Profile::createForServiceName(QLatin1String("test-profile")); QCOMPARE(profile->isValid(), true); QCOMPARE(profile->serviceName(), QLatin1String("test-profile")); QCOMPARE(profile->type(), QLatin1String("IM")); QCOMPARE(profile->provider(), QLatin1String("TestProfileProvider")); QCOMPARE(profile->name(), QLatin1String("TestProfile")); QCOMPARE(profile->cmName(), QLatin1String("testprofilecm")); QCOMPARE(profile->protocolName(), QLatin1String("testprofileproto")); QCOMPARE(profile->parameters().isEmpty(), false); QCOMPARE(profile->parameters().count(), 2); QCOMPARE(profile->hasParameter(QLatin1String("foo")), false); QCOMPARE(profile->hasParameter(QLatin1String("server")), true); Profile::Parameter param = profile->parameter(QLatin1String("server")); QCOMPARE(param.name(), QLatin1String("server")); QCOMPARE(param.dbusSignature(), QDBusSignature(QLatin1String("s"))); QCOMPARE(param.type(), QVariant::String); QCOMPARE(param.value(), QVariant(QLatin1String("profile.com"))); QCOMPARE(param.label(), QString()); QCOMPARE(param.isMandatory(), true); QCOMPARE(profile->hasParameter(QLatin1String("port")), true); param = profile->parameter(QLatin1String("port")); QCOMPARE(param.name(), QLatin1String("port")); QCOMPARE(param.dbusSignature(), QDBusSignature(QLatin1String("u"))); QCOMPARE(param.type(), QVariant::UInt); QCOMPARE(param.value(), QVariant(QLatin1String("1111"))); QCOMPARE(param.label(), QString()); QCOMPARE(param.isMandatory(), true); QCOMPARE(profile->presences().isEmpty(), false); QCOMPARE(profile->presences().count(), 5); QCOMPARE(profile->hasPresence(QLatin1String("foo")), false); QCOMPARE(profile->hasPresence(QLatin1String("available")), true); Profile::Presence presence = profile->presence(QLatin1String("available")); QCOMPARE(presence.id(), QLatin1String("available")); QCOMPARE(presence.label(), QLatin1String("Online")); QCOMPARE(presence.iconName(), QLatin1String("online")); QCOMPARE(presence.isDisabled(), false); QCOMPARE(profile->hasPresence(QLatin1String("offline")), true); presence = profile->presence(QLatin1String("offline")); QCOMPARE(presence.id(), QLatin1String("offline")); QCOMPARE(presence.label(), QLatin1String("Offline")); QCOMPARE(presence.iconName(), QString()); QCOMPARE(presence.isDisabled(), false); QCOMPARE(profile->hasPresence(QLatin1String("away")), true); presence = profile->presence(QLatin1String("away")); QCOMPARE(presence.id(), QLatin1String("away")); QCOMPARE(presence.label(), QLatin1String("Gone")); QCOMPARE(presence.iconName(), QString()); QCOMPARE(presence.isDisabled(), false); QCOMPARE(profile->hasPresence(QLatin1String("hidden")), true); presence = profile->presence(QLatin1String("hidden")); QCOMPARE(presence.id(), QLatin1String("hidden")); QCOMPARE(presence.label(), QString()); QCOMPARE(presence.iconName(), QString()); QCOMPARE(presence.isDisabled(), true); QCOMPARE(profile->unsupportedChannelClassSpecs().isEmpty(), false); QCOMPARE(profile->unsupportedChannelClassSpecs().count(), 2); RequestableChannelClassSpec rccSpec = profile->unsupportedChannelClassSpecs().first(); QCOMPARE(rccSpec.hasTargetHandleType(), true); QCOMPARE(rccSpec.targetHandleType(), HandleTypeContact); QCOMPARE(rccSpec.channelType(), QLatin1String("org.freedesktop.Telepathy.Channel.Type.Text")); profile = Profile::createForServiceName(QLatin1String("test-profile-no-icon-and-provider")); QCOMPARE(profile->isValid(), true); QCOMPARE(profile->serviceName(), QLatin1String("test-profile-no-icon-and-provider")); QCOMPARE(profile->type(), QLatin1String("IM")); QCOMPARE(profile->provider().isEmpty(), true); QCOMPARE(profile->cmName(), QLatin1String("testprofilecm")); QCOMPARE(profile->protocolName(), QLatin1String("testprofileproto")); QCOMPARE(profile->iconName().isEmpty(), true); } QTEST_MAIN(TestProfile) #include "_gen/profile.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/test-key-file.ini0000644000175100017520000000011612530423576022245 0ustar00kaffeinekaffeine00000000000000a=1 b=2 [test group 1] c=\s\t\n\r\\ d=true [test group 2] e = space telepathy-qt-0.9.6.1/tests/callbacks.cpp0000644000175100017520000001634412530423576021517 0ustar00kaffeinekaffeine00000000000000#include #include using namespace Tp; class TestCallbacks : public QObject { Q_OBJECT private Q_SLOTS: void testMemFun(); void testPtrFun(); }; struct MyCallbacks { MyCallbacks() { reset(); } void testVV() { mVVCalled++; } void testVI1(int a1) { QCOMPARE(a1, 1); mVI1Called++; } void testVI2(int a1, int a2) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); mVI2Called++; } void testVI3(int a1, int a2, int a3) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); mVI3Called++; } void testVI4(int a1, int a2, int a3, int a4) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); mVI4Called++; } void testVI5(int a1, int a2, int a3, int a4, int a5) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); QCOMPARE(a5, 5); mVI5Called++; } void testVI6(int a1, int a2, int a3, int a4, int a5, int a6) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); QCOMPARE(a5, 5); QCOMPARE(a6, 6); mVI6Called++; } void testVI7(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); QCOMPARE(a5, 5); QCOMPARE(a6, 6); QCOMPARE(a7, 7); mVI7Called++; } void reset() { mVVCalled = false; mVI1Called = false; mVI2Called = false; mVI3Called = false; mVI4Called = false; mVI5Called = false; mVI6Called = false; mVI7Called = false; } void verifyCalled(bool vv, bool vi1, bool vi2, bool vi3, bool vi4, bool vi5, bool vi6, bool vi7) { QCOMPARE(mVVCalled, vv); QCOMPARE(mVI1Called, vi1); QCOMPARE(mVI2Called, vi2); QCOMPARE(mVI3Called, vi3); QCOMPARE(mVI4Called, vi4); QCOMPARE(mVI5Called, vi5); QCOMPARE(mVI6Called, vi6); QCOMPARE(mVI7Called, vi7); } bool mVVCalled; bool mVI1Called; bool mVI2Called; bool mVI3Called; bool mVI4Called; bool mVI5Called; bool mVI6Called; bool mVI7Called; }; namespace { bool mVVCalled; bool mVI1Called; bool mVI2Called; bool mVI3Called; bool mVI4Called; bool mVI5Called; bool mVI6Called; bool mVI7Called; void testVV() { mVVCalled++; } void testVI1(int a1) { QCOMPARE(a1, 1); mVI1Called++; } void testVI2(int a1, int a2) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); mVI2Called++; } void testVI3(int a1, int a2, int a3) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); mVI3Called++; } void testVI4(int a1, int a2, int a3, int a4) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); mVI4Called++; } void testVI5(int a1, int a2, int a3, int a4, int a5) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); QCOMPARE(a5, 5); mVI5Called++; } void testVI6(int a1, int a2, int a3, int a4, int a5, int a6) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); QCOMPARE(a5, 5); QCOMPARE(a6, 6); mVI6Called++; } void testVI7(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { QCOMPARE(a1, 1); QCOMPARE(a2, 2); QCOMPARE(a3, 3); QCOMPARE(a4, 4); QCOMPARE(a5, 5); QCOMPARE(a6, 6); QCOMPARE(a7, 7); mVI7Called++; } void reset() { mVVCalled = false; mVI1Called = false; mVI2Called = false; mVI3Called = false; mVI4Called = false; mVI5Called = false; mVI6Called = false; mVI7Called = false; } void verifyCalled(bool vv, bool vi1, bool vi2, bool vi3, bool vi4, bool vi5, bool vi6, bool vi7) { QCOMPARE(mVVCalled, vv); QCOMPARE(mVI1Called, vi1); QCOMPARE(mVI2Called, vi2); QCOMPARE(mVI3Called, vi3); QCOMPARE(mVI4Called, vi4); QCOMPARE(mVI5Called, vi5); QCOMPARE(mVI6Called, vi6); QCOMPARE(mVI7Called, vi7); } } void TestCallbacks::testMemFun() { MyCallbacks cbs; Callback0 cbVV = memFun(&cbs, &MyCallbacks::testVV); cbVV(); cbs.verifyCalled(true, false, false, false, false, false, false, false); cbs.reset(); Callback1 cbVI1 = memFun(&cbs, &MyCallbacks::testVI1); cbVI1(1); cbs.verifyCalled(false, true, false, false, false, false, false, false); cbs.reset(); Callback2 cbVI2 = memFun(&cbs, &MyCallbacks::testVI2); cbVI2(1, 2); cbs.verifyCalled(false, false, true, false, false, false, false, false); cbs.reset(); Callback3 cbVI3 = memFun(&cbs, &MyCallbacks::testVI3); cbVI3(1, 2, 3); cbs.verifyCalled(false, false, false, true, false, false, false, false); cbs.reset(); Callback4 cbVI4 = memFun(&cbs, &MyCallbacks::testVI4); cbVI4(1, 2, 3, 4); cbs.verifyCalled(false, false, false, false, true, false, false, false); cbs.reset(); Callback5 cbVI5 = memFun(&cbs, &MyCallbacks::testVI5); cbVI5(1, 2, 3, 4, 5); cbs.verifyCalled(false, false, false, false, false, true, false, false); cbs.reset(); Callback6 cbVI6 = memFun(&cbs, &MyCallbacks::testVI6); cbVI6(1, 2, 3, 4, 5, 6); cbs.verifyCalled(false, false, false, false, false, false, true, false); cbs.reset(); Callback7 cbVI7 = memFun(&cbs, &MyCallbacks::testVI7); cbVI7(1, 2, 3, 4, 5, 6, 7); cbs.verifyCalled(false, false, false, false, false, false, false, true); cbs.reset(); } void TestCallbacks::testPtrFun() { reset(); Callback0 cbVV = ptrFun(&testVV); cbVV(); verifyCalled(true, false, false, false, false, false, false, false); reset(); Callback1 cbVI1 = ptrFun(&testVI1); cbVI1(1); verifyCalled(false, true, false, false, false, false, false, false); reset(); Callback2 cbVI2 = ptrFun(&testVI2); cbVI2(1, 2); verifyCalled(false, false, true, false, false, false, false, false); reset(); Callback3 cbVI3 = ptrFun(&testVI3); cbVI3(1, 2, 3); verifyCalled(false, false, false, true, false, false, false, false); reset(); Callback4 cbVI4 = ptrFun(&testVI4); cbVI4(1, 2, 3, 4); verifyCalled(false, false, false, false, true, false, false, false); reset(); Callback5 cbVI5 = ptrFun(&testVI5); cbVI5(1, 2, 3, 4, 5); verifyCalled(false, false, false, false, false, true, false, false); reset(); Callback6 cbVI6 = ptrFun(&testVI6); cbVI6(1, 2, 3, 4, 5, 6); verifyCalled(false, false, false, false, false, false, true, false); reset(); Callback7 cbVI7 = ptrFun(&testVI7); cbVI7(1, 2, 3, 4, 5, 6, 7); verifyCalled(false, false, false, false, false, false, false, true); reset(); } QTEST_MAIN(TestCallbacks) #include "_gen/callbacks.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/channel-class-spec.cpp0000644000175100017520000001160312530423576023234 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include using namespace Tp; namespace { ChannelClassSpecList reverse(const ChannelClassSpecList &list) { ChannelClassSpecList ret(list); for (int k = 0; k < (list.size() / 2); k++) { ret.swap(k, list.size() - (1 + k)); } return ret; } }; class TestChannelClassSpec : public QObject { Q_OBJECT public: TestChannelClassSpec(QObject *parent = 0); private Q_SLOTS: void testChannelClassSpecHash(); void testServiceLeaks(); }; TestChannelClassSpec::TestChannelClassSpec(QObject *parent) : QObject(parent) { Tp::enableDebug(true); Tp::enableWarnings(true); } void TestChannelClassSpec::testChannelClassSpecHash() { ChannelClassSpec st1 = ChannelClassSpec::textChat(); ChannelClassSpec st2 = ChannelClassSpec::textChat(); ChannelClassSpec ssm1 = ChannelClassSpec::streamedMediaCall(); ChannelClassSpec ssm2 = ChannelClassSpec::streamedMediaCall(); QCOMPARE(qHash(st1), qHash(st2)); QCOMPARE(qHash(ssm1), qHash(ssm2)); QVERIFY(qHash(st1) != qHash(ssm1)); // hash of list with duplicated elements should be the same as hash of the list of same items // but with no duplicates ChannelClassSpecList sl1; sl1 << st1 << st2; ChannelClassSpecList sl2; sl2 << st1; QCOMPARE(qHash(sl1), qHash(sl2)); // hash of list with same elements but different order should be the same sl1.clear(); sl2.clear(); sl1 << st1 << ssm1; sl2 << ssm1 << st1; QCOMPARE(qHash(sl1), qHash(sl2)); // still the same but with duplicated elements sl2 << ssm2 << st2; QCOMPARE(qHash(sl1), qHash(sl2)); sl1 << st2; QCOMPARE(qHash(sl1), qHash(sl2)); // now sl2 is different from sl1, hash should be different sl2 << ChannelClassSpec::unnamedTextChat(); QVERIFY(qHash(sl1) != qHash(sl2)); // same again sl1.prepend(ChannelClassSpec::unnamedTextChat()); QCOMPARE(qHash(sl1), qHash(sl2)); sl1.clear(); sl2.clear(); for (int i = 0; i < 100; ++i) { sl1 << ChannelClassSpec::textChat() << ChannelClassSpec::streamedMediaCall() << ChannelClassSpec::unnamedTextChat(); } ChannelClassSpec specs[3] = { ChannelClassSpec::textChat(), ChannelClassSpec::streamedMediaCall(), ChannelClassSpec::unnamedTextChat() }; for (int i = 0; i < 3; ++i) { ChannelClassSpec spec = specs[i]; for (int j = 0; j < 100; ++j) { sl2 << spec; } } QCOMPARE(qHash(sl1), qHash(ChannelClassSpecList() << ChannelClassSpec::unnamedTextChat() << ChannelClassSpec::streamedMediaCall() << ChannelClassSpec::textChat())); for (int i = 0; i < 1000; ++i) { ChannelClassSpec spec = ChannelClassSpec::outgoingStreamTube(QString::number(i)); sl1 << spec; sl2.prepend(spec); } QCOMPARE(qHash(sl1), qHash(sl2)); sl1 = reverse(sl1); sl2 = reverse(sl2); QCOMPARE(qHash(sl1), qHash(sl2)); sl2 << ChannelClassSpec::outgoingFileTransfer(); QVERIFY(qHash(sl1) != qHash(sl2)); } void TestChannelClassSpec::testServiceLeaks() { ChannelClassSpec bareTube = ChannelClassSpec::outgoingStreamTube(); QVERIFY(!bareTube.allProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service"))); ChannelClassSpec ftpTube = ChannelClassSpec::outgoingStreamTube(QLatin1String("ftp")); QVERIFY(ftpTube.allProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service"))); QCOMPARE(ftpTube.allProperties().value(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service")).toString(), QString::fromLatin1("ftp")); QVERIFY(!bareTube.allProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service"))); ChannelClassSpec httpTube = ChannelClassSpec::outgoingStreamTube(QLatin1String("http")); QVERIFY(httpTube.allProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service"))); QVERIFY(ftpTube.allProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service"))); QCOMPARE(httpTube.allProperties().value(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service")).toString(), QString::fromLatin1("http")); QCOMPARE(ftpTube.allProperties().value(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service")).toString(), QString::fromLatin1("ftp")); QVERIFY(!bareTube.allProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QString::fromLatin1(".Service"))); } QTEST_MAIN(TestChannelClassSpec) #include "_gen/channel-class-spec.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/telepathy/0000755000175100017520000000000012530423576021063 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/telepathy/managers/0000755000175100017520000000000012530423576022660 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/telepathy/managers/test-manager-file.manager0000644000175100017520000000622212530423576027522 0ustar00kaffeinekaffeine00000000000000[Protocol foo] param-account = s required param-password = s required param-encryption-key = s secret param-port = q param-register = b param-server-list = as default-account = foo@default default-port = 1234 default-server-list = foo;bar; status-offline=1 status-dnd=6 settable status-available=2 settable message SupportedAvatarMIMETypes=image/png;image/jpeg;image/gif; MinimumAvatarHeight=32 RecommendedAvatarHeight=64 MaximumAvatarHeight=96 MinimumAvatarWidth=32 RecommendedAvatarWidth=64 MaximumAvatarWidth=96 MaximumAvatarBytes=8192 VCardField=x-foo EnglishName=Foo Icon=im-foo RequestableChannelClasses=ft;foo text; AddressableVCardFields=x-foo; AddressableURISchemes=foo; [ft] org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.FileTransfer org.freedesktop.Telepathy.Channel.TargetHandleType u=1 org.freedesktop.Telepathy.Channel.Type.FileTransfer.ContentHashType u=1 allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID; [foo text] 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; [Protocol bar] param-account = s required param-encryption-key = s required secret param-password = s required param-port = q param-register = b param-server-list = as default-account = bar@default default-port = 4321 default-server-list = bar;foo; [Protocol somewhat-pathological] # the value is "hello world" param-foo = s required default-foo = hello world # the value is "list;of;misc;" (it's not parsed as a list) param-semicolons=s secret default-semicolons=list;of;misc; # the values is a list ["list", "of", "misc"] param-list = as default-list = list;of;misc; # the spec says this is invalid but we should probably be permissive param-unterminated-list = as default-unterminated-list = list;of;misc # the value is a list ["list", " of", " misc "] (spaces significant) param-spaces-in-list = as default-spaces-in-list = list; of; misc ; # the value is a list ["list;of", "misc"] param-escaped-semicolon-in-list = as default-escaped-semicolon-in-list = list\;of;misc; # the value is a list ["list\", "of", "misc"] param-doubly-escaped-semicolon-in-list = as default-doubly-escaped-semicolon-in-list = list\\;of;misc; # the value is a list ["list\;of", "misc"] param-triply-escaped-semicolon-in-list = as default-triply-escaped-semicolon-in-list = list\\\;of;misc; # the value is an empty list param-empty-list = as default-empty-list = # the value is a list of empty string param-list-of-empty-string = as default-list-of-empty-string = ; # this is probably technically a Desktop Entry spec violation? # we should be permissive, interpreting this as either "foo\;bar" or "foo;bar" # seems reasonable param-escaped-semicolon = s default-escaped-semicolon = foo\;bar # all the other types param-object = o default-object = /misc param-q = q default-q = 42 param-u = u default-u = 42 param-t = t default-t = 42 param-n = n default-n = -42 param-i = i default-i = -42 param-x = x default-x = -42 param-d = d default-d = 42.0 telepathy-qt-0.9.6.1/tests/telepathy/managers/protocol.manager0000644000175100017520000000203112530423576026051 0ustar00kaffeinekaffeine00000000000000[ConnectionManager] Interfaces= [Protocol protocol] Interfaces=org.freedesktop.Telepathy.Protocol.Interface.Addressing;org.freedesktop.Telepathy.Protocol.Interface.Avatars;org.freedesktop.Telepathy.Protocol.Interface.Presence; param-account=s required register ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Contacts; RequestableChannelClasses=1-1-text; VCardField=x-telepathy-protocol EnglishName=Telepathy Protocol Icon=im-protocol status-offline=1 status-available=2 settable message SupportedAvatarMIMETypes=image/jpeg; MinimumAvatarHeight=32 RecommendedAvatarHeight=64 MaximumAvatarHeight=96 MinimumAvatarWidth=32 RecommendedAvatarWidth=64 MaximumAvatarWidth=96 MaximumAvatarBytes=37748736 AddressableVCardFields=x-protocol; AddressableURISchemes=protocol; [1-1-text] 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; telepathy-qt-0.9.6.1/tests/telepathy/managers/test-manager-file-invalid-signature.manager0000644000175100017520000000421312530423576033143 0ustar00kaffeinekaffeine00000000000000[Protocol foo] param-account = s required param-password = s required param-encryption-key = s secret param-port = q param-register = b param-server-list = as default-account = foo@default default-port = 1234 default-server-list = foo;bar; [Protocol bar] param-account = s required param-encryption-key = s required secret param-password = s required param-port = q param-register = b param-server-list = as default-account = bar@default default-port = 4321 default-server-list = bar;foo; [Protocol somewhat-pathological] # the value is "hello world" param-foo = s required default-foo = hello world # the value is "list;of;misc;" (it's not parsed as a list) param-semicolons=s secret default-semicolons=list;of;misc; # the values is a list ["list", "of", "misc"] param-list = as default-list = list;of;misc; # the spec says this is invalid but we should probably be permissive param-unterminated-list = as default-unterminated-list = list;of;misc # the value is a list ["list", " of", " misc "] (spaces significant) param-spaces-in-list = as default-spaces-in-list = list; of; misc ; # the value is a list ["list;of", "misc"] param-escaped-semicolon-in-list = as default-escaped-semicolon-in-list = list\;of;misc; # the value is a list ["list\", "of", "misc"] param-doubly-escaped-semicolon-in-list = as default-doubly-escaped-semicolon-in-list = list\\;of;misc; # the value is a list ["list\;of", "misc"] param-triply-escaped-semicolon-in-list = as default-triply-escaped-semicolon-in-list = list\\\;of;misc; # the value is an empty list param-empty-list = as default-empty-list = # the value is a list of empty string param-list-of-empty-string = as default-list-of-empty-string = ; # this is probably technically a Desktop Entry spec violation? # we should be permissive, interpreting this as either "foo\;bar" or "foo;bar" # seems reasonable param-escaped-semicolon = s default-escaped-semicolon = foo\;bar # all the other types param-object = o default-object = /misc param-q = q default-q = 42 param-u = u default-u = 42 param-t = t default-t = 42 param-n = n default-n = -42 param-i = i default-i = -42 param-x = x default-x = -42 param-d = 42.0 default-d = 42.0 telepathy-qt-0.9.6.1/tests/telepathy/managers/test-manager-file-malformed-keyfile.manager0000644000175100017520000000007412530423576033113 0ustar00kaffeinekaffeine00000000000000[Protocol foo [Protocol bar param-account = s required = = telepathy-qt-0.9.6.1/tests/telepathy/managers/spurious.manager0000644000175100017520000000120312530423576026101 0ustar00kaffeinekaffeine00000000000000[ConnectionManager] [Protocol normal] param-account=s required register param-password=s required register secret param-register=b default-register=true RequestableChannelClasses=text status-available=2 settable message status-offline=1 settable status-away=3 settable status-xa=4 [text] 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; [Protocol weird] param-com.example.Bork.Bork.Bork=u dbus-property default-com.example.Bork.Bork.Bork=42 telepathy-qt-0.9.6.1/tests/telepathy/profiles/0000755000175100017520000000000012530423576022706 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tests/telepathy/profiles/test-profile-no-icon-and-provider.profile0000644000175100017520000000034012530423576032632 0ustar00kaffeinekaffeine00000000000000 telepathy-qt-0.9.6.1/tests/telepathy/profiles/test-profile.profile0000644000175100017520000000301512530423576026704 0ustar00kaffeinekaffeine00000000000000 TestProfile profile.com 1111 1 org.freedesktop.Telepathy.Channel.Type.Text 3 org.freedesktop.Telepathy.Channel.Type.Text telepathy-qt-0.9.6.1/tests/telepathy/profiles/test-profile-malformed.profile0000644000175100017520000000017312530423576030652 0ustar00kaffeinekaffeine00000000000000 TestProfile profile.com 1111 3 org.freedesktop.Telepathy.Channel.Type.Text telepathy-qt-0.9.6.1/tests/telepathy/profiles/test-profile-non-im-type.profile0000644000175100017520000000050612530423576031060 0ustar00kaffeinekaffeine00000000000000 TestProfile telepathy-qt-0.9.6.1/tests/features.cpp0000644000175100017520000000271712530423576021415 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include using namespace Tp; namespace { QList reverse(const QList &list) { QList ret(list); for (int k = 0; k < (list.size() / 2); k++) { ret.swap(k, list.size() - (1 + k)); } return ret; } }; class TestFeatures : public QObject { Q_OBJECT public: TestFeatures(QObject *parent = 0); private Q_SLOTS: void testFeaturesHash(); }; TestFeatures::TestFeatures(QObject *parent) : QObject(parent) { Tp::enableDebug(true); Tp::enableWarnings(true); } void TestFeatures::testFeaturesHash() { QList fs1; QList fs2; for (int i = 0; i < 100; ++i) { fs1 << Feature(QString::number(i), i); fs2 << Feature(QString::number(i), i); } QCOMPARE(qHash(fs1.toSet()), qHash(fs2.toSet())); fs2.clear(); for (int i = 0; i < 5; ++i) { for (int j = 0; j < 100; ++j) { fs2 << Feature(QString::number(j), j); } } QCOMPARE(qHash(fs1.toSet()), qHash(fs2.toSet())); fs1 = reverse(fs1); QCOMPARE(qHash(fs1.toSet()), qHash(fs2.toSet())); fs2 = reverse(fs2); QCOMPARE(qHash(fs1.toSet()), qHash(fs2.toSet())); fs2 << Feature(QLatin1String("100"), 100); QVERIFY(qHash(fs1.toSet()) != qHash(fs2.toSet())); } QTEST_MAIN(TestFeatures) #include "_gen/features.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/file-transfer-channel-creation-properties.cpp0000644000175100017520000001343412530423576027740 0ustar00kaffeinekaffeine00000000000000#include #include using namespace Tp; class TestFileTransferCreationProperties : public QObject { Q_OBJECT private Q_SLOTS: void testFileTransferCreationPropertiesDefaultConstructor(); void testFileTransferCreationPropertiesDefaultByMandatoryProperties(); void testFileTransferCreationPropertiesDefaultByPath(); void testFileTransferCreationPropertiesDefaultByPathFail(); }; void TestFileTransferCreationProperties::testFileTransferCreationPropertiesDefaultConstructor() { FileTransferChannelCreationProperties ftprops; QVERIFY(!ftprops.isValid()); QVERIFY(ftprops.suggestedFileName().isEmpty()); QVERIFY(ftprops.contentType().isEmpty()); QCOMPARE(ftprops.size(), (qulonglong)0); QVERIFY(!ftprops.hasContentHash()); QCOMPARE(ftprops.contentHashType(), FileHashTypeNone); QVERIFY(ftprops.contentHash().isEmpty()); ftprops.setContentHash(FileHashTypeMD5, QLatin1String("ffffffffffffffff")); QVERIFY(!ftprops.isValid()); QVERIFY(!ftprops.hasContentHash()); QCOMPARE(ftprops.contentHashType(), FileHashTypeNone); QVERIFY(ftprops.contentHash().isEmpty()); QVERIFY(!ftprops.hasDescription()); QVERIFY(ftprops.description().isEmpty()); ftprops.setDescription(QLatin1String("description")); QVERIFY(!ftprops.isValid()); QVERIFY(!ftprops.hasDescription()); QVERIFY(ftprops.description().isEmpty()); QVERIFY(!ftprops.hasLastModificationTime()); QVERIFY(!ftprops.lastModificationTime().isValid()); ftprops.setLastModificationTime(QDateTime::currentDateTime()); QVERIFY(!ftprops.isValid()); QVERIFY(!ftprops.hasLastModificationTime()); QVERIFY(!ftprops.lastModificationTime().isValid()); QVERIFY(!ftprops.hasUri()); QVERIFY(ftprops.uri().isEmpty()); ftprops.setUri(QLatin1String("file:///path/filename")); QVERIFY(!ftprops.isValid()); QVERIFY(!ftprops.hasUri()); QVERIFY(ftprops.uri().isEmpty()); } void TestFileTransferCreationProperties::testFileTransferCreationPropertiesDefaultByMandatoryProperties() { FileTransferChannelCreationProperties ftprops(QLatin1String("suggestedFileName"), QLatin1String("application/octet-stream"), (qulonglong)10000); QCOMPARE(ftprops.isValid(), true); QCOMPARE(ftprops.suggestedFileName(), QLatin1String("suggestedFileName")); QCOMPARE(ftprops.contentType(), QLatin1String("application/octet-stream")); QCOMPARE(ftprops.size(), (qulonglong)10000); QVERIFY(!ftprops.hasContentHash()); QCOMPARE(ftprops.contentHashType(), FileHashTypeNone); QVERIFY(ftprops.contentHash().isEmpty()); ftprops.setContentHash(FileHashTypeMD5, QLatin1String("ffffffffffffffff")); QVERIFY(ftprops.isValid()); QVERIFY(ftprops.hasContentHash()); QCOMPARE(ftprops.contentHashType(), FileHashTypeMD5); QCOMPARE(ftprops.contentHash(), QLatin1String("ffffffffffffffff")); QVERIFY(!ftprops.hasDescription()); QVERIFY(ftprops.description().isEmpty()); ftprops.setDescription(QLatin1String("description")); QVERIFY(ftprops.isValid()); QVERIFY(ftprops.hasDescription()); QCOMPARE(ftprops.description(), QLatin1String("description")); QVERIFY(!ftprops.hasLastModificationTime()); QVERIFY(!ftprops.lastModificationTime().isValid()); QDateTime now = QDateTime::currentDateTime(); ftprops.setLastModificationTime(now); QVERIFY(ftprops.hasLastModificationTime()); QCOMPARE(ftprops.lastModificationTime(), now); QVERIFY(!ftprops.hasUri()); QVERIFY(ftprops.uri().isEmpty()); ftprops.setUri(QLatin1String("file:///path/filename")); QVERIFY(ftprops.isValid()); QVERIFY(ftprops.hasUri()); QCOMPARE(ftprops.uri(), QLatin1String("file:///path/filename")); } void TestFileTransferCreationProperties::testFileTransferCreationPropertiesDefaultByPath() { // Test constructor by local file path with existing file QString filePath = QCoreApplication::applicationFilePath(); QFileInfo fileInfo(filePath); QUrl fileUri = QUrl::fromLocalFile(filePath); FileTransferChannelCreationProperties ftprops(filePath, QLatin1String("application/octet-stream")); QVERIFY(ftprops.isValid()); QCOMPARE(ftprops.suggestedFileName(), fileInfo.fileName()); QCOMPARE(ftprops.contentType(), QLatin1String("application/octet-stream")); QCOMPARE(ftprops.size(), (quint64)fileInfo.size()); QVERIFY(!ftprops.hasContentHash()); QCOMPARE(ftprops.contentHashType(), FileHashTypeNone); QVERIFY(ftprops.contentHash().isEmpty()); QVERIFY(!ftprops.hasDescription()); QVERIFY(ftprops.description().isEmpty()); QVERIFY(ftprops.hasLastModificationTime()); QCOMPARE(ftprops.lastModificationTime(), fileInfo.lastModified()); QVERIFY(ftprops.hasUri()); QCOMPARE(ftprops.uri(), fileUri.toString()); } void TestFileTransferCreationProperties::testFileTransferCreationPropertiesDefaultByPathFail() { // Test constructor by local file path with non-existing file FileTransferChannelCreationProperties ftprops(QLatin1String("/non-existent-path/non-existent-filename"), QLatin1String("application/octet-stream")); QVERIFY(!ftprops.isValid()); QVERIFY(ftprops.suggestedFileName().isEmpty()); QVERIFY(ftprops.contentType().isEmpty()); QCOMPARE(ftprops.size(), (qulonglong)0); QVERIFY(!ftprops.hasContentHash()); QCOMPARE(ftprops.contentHashType(), FileHashTypeNone); QVERIFY(ftprops.contentHash().isEmpty()); QVERIFY(!ftprops.hasDescription()); QVERIFY(ftprops.description().isEmpty()); QVERIFY(!ftprops.hasLastModificationTime()); QVERIFY(!ftprops.lastModificationTime().isValid()); QVERIFY(!ftprops.hasUri()); QVERIFY(ftprops.uri().isEmpty()); } QTEST_MAIN(TestFileTransferCreationProperties) #include "_gen/file-transfer-channel-creation-properties.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/capabilities.cpp0000644000175100017520000004051312530423576022224 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include #include using namespace Tp; class TestCapabilities : public QObject { Q_OBJECT public: TestCapabilities(QObject *parent = 0); private Q_SLOTS: void testConnCapabilities(); void testContactCapabilities(); }; TestCapabilities::TestCapabilities(QObject *parent) : QObject(parent) { Tp::enableDebug(true); Tp::enableWarnings(true); } void TestCapabilities::testConnCapabilities() { ConnectionCapabilities connCaps; // capabilities base QVERIFY(!connCaps.isSpecificToContact()); QVERIFY(!connCaps.textChats()); QVERIFY(!connCaps.streamedMediaCalls()); QVERIFY(!connCaps.streamedMediaAudioCalls()); QVERIFY(!connCaps.streamedMediaVideoCalls()); QVERIFY(!connCaps.streamedMediaVideoCallsWithAudio()); QVERIFY(!connCaps.upgradingStreamedMediaCalls()); QVERIFY(!connCaps.fileTransfers()); // conn caps specific QVERIFY(!connCaps.textChatrooms()); QVERIFY(!connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); QVERIFY(!connCaps.conferenceTextChats()); QVERIFY(!connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); QVERIFY(!connCaps.contactSearches()); QVERIFY(!connCaps.contactSearchesWithSpecificServer()); QVERIFY(!connCaps.contactSearchesWithLimit()); QVERIFY(!connCaps.streamTubes()); RequestableChannelClassSpecList rccSpecs; rccSpecs.append(RequestableChannelClassSpec::textChat()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaCall()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaAudioCall()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaVideoCall()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio()); rccSpecs.append(RequestableChannelClassSpec::fileTransfer()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(!connCaps.isSpecificToContact()); QVERIFY(connCaps.textChats()); QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(connCaps.streamedMediaVideoCalls()); QVERIFY(connCaps.streamedMediaVideoCallsWithAudio()); QVERIFY(connCaps.fileTransfers()); // conn caps specific QVERIFY(!connCaps.textChatrooms()); QVERIFY(!connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); QVERIFY(!connCaps.conferenceTextChats()); QVERIFY(!connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); QVERIFY(!connCaps.contactSearches()); QVERIFY(!connCaps.contactSearchesWithSpecificServer()); QVERIFY(!connCaps.contactSearchesWithLimit()); QVERIFY(!connCaps.streamTubes()); QCOMPARE(connCaps.allClassSpecs(), rccSpecs); rccSpecs.append(RequestableChannelClassSpec::textChatroom()); rccSpecs.append(RequestableChannelClassSpec::conferenceStreamedMediaCall()); rccSpecs.append(RequestableChannelClassSpec::conferenceStreamedMediaCallWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChat()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChatWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChatroom()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChatroomWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::contactSearch()); rccSpecs.append(RequestableChannelClassSpec::contactSearchWithSpecificServer()); rccSpecs.append(RequestableChannelClassSpec::contactSearchWithLimit()); rccSpecs.append(RequestableChannelClassSpec::contactSearchWithSpecificServerAndLimit()); rccSpecs.append(RequestableChannelClassSpec::streamTube()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(!connCaps.isSpecificToContact()); QVERIFY(connCaps.textChats()); QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(connCaps.streamedMediaVideoCalls()); QVERIFY(connCaps.streamedMediaVideoCallsWithAudio()); QVERIFY(connCaps.fileTransfers()); // conn caps specific QVERIFY(connCaps.textChatrooms()); QVERIFY(connCaps.conferenceStreamedMediaCalls()); QVERIFY(connCaps.conferenceStreamedMediaCallsWithInvitees()); QVERIFY(connCaps.conferenceTextChats()); QVERIFY(connCaps.conferenceTextChatsWithInvitees()); QVERIFY(connCaps.conferenceTextChatrooms()); QVERIFY(connCaps.conferenceTextChatroomsWithInvitees()); QVERIFY(connCaps.contactSearches()); QVERIFY(connCaps.contactSearchesWithSpecificServer()); QVERIFY(connCaps.contactSearchesWithLimit()); QCOMPARE(connCaps.allClassSpecs(), rccSpecs); // start over rccSpecs.clear(); rccSpecs.append(RequestableChannelClassSpec::streamedMediaCall()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(!connCaps.streamedMediaAudioCalls()); QVERIFY(!connCaps.streamedMediaVideoCalls()); QVERIFY(!connCaps.streamedMediaVideoCallsWithAudio()); // conn caps specific QVERIFY(!connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaAudioCall()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(!connCaps.streamedMediaVideoCalls()); QVERIFY(!connCaps.streamedMediaVideoCallsWithAudio()); // conn caps specific QVERIFY(!connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaVideoCall()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(connCaps.streamedMediaVideoCalls()); QVERIFY(!connCaps.streamedMediaVideoCallsWithAudio()); // conn caps specific QVERIFY(!connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(connCaps.streamedMediaVideoCalls()); QVERIFY(connCaps.streamedMediaVideoCallsWithAudio()); // conn caps specific QVERIFY(!connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceStreamedMediaCall()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(connCaps.streamedMediaVideoCalls()); QVERIFY(connCaps.streamedMediaVideoCallsWithAudio()); // conn caps specific QVERIFY(connCaps.conferenceStreamedMediaCalls()); QVERIFY(!connCaps.conferenceStreamedMediaCallsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceStreamedMediaCallWithInvitees()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.streamedMediaCalls()); QVERIFY(connCaps.streamedMediaAudioCalls()); QVERIFY(connCaps.streamedMediaVideoCalls()); QVERIFY(connCaps.streamedMediaVideoCallsWithAudio()); // conn caps specific QVERIFY(connCaps.conferenceStreamedMediaCalls()); QVERIFY(connCaps.conferenceStreamedMediaCallsWithInvitees()); // capabilities base QVERIFY(!connCaps.textChats()); QVERIFY(!connCaps.fileTransfers()); // conn caps specific QVERIFY(!connCaps.textChatrooms()); QVERIFY(!connCaps.conferenceTextChats()); QVERIFY(!connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); QVERIFY(!connCaps.contactSearches()); QVERIFY(!connCaps.contactSearchesWithSpecificServer()); QVERIFY(!connCaps.contactSearchesWithLimit()); QVERIFY(!connCaps.streamTubes()); rccSpecs.append(RequestableChannelClassSpec::textChat()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.textChats()); // conn caps specific QVERIFY(!connCaps.textChatrooms()); QVERIFY(!connCaps.conferenceTextChats()); QVERIFY(!connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::textChatroom()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.textChats()); // conn caps specific QVERIFY(connCaps.textChatrooms()); QVERIFY(!connCaps.conferenceTextChats()); QVERIFY(!connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChat()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.textChats()); // conn caps specific QVERIFY(connCaps.textChatrooms()); QVERIFY(connCaps.conferenceTextChats()); QVERIFY(!connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChatWithInvitees()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.textChats()); // conn caps specific QVERIFY(connCaps.textChatrooms()); QVERIFY(connCaps.conferenceTextChats()); QVERIFY(connCaps.conferenceTextChatsWithInvitees()); QVERIFY(!connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChatroom()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.textChats()); // conn caps specific QVERIFY(connCaps.textChatrooms()); QVERIFY(connCaps.conferenceTextChats()); QVERIFY(connCaps.conferenceTextChatsWithInvitees()); QVERIFY(connCaps.conferenceTextChatrooms()); QVERIFY(!connCaps.conferenceTextChatroomsWithInvitees()); rccSpecs.append(RequestableChannelClassSpec::conferenceTextChatroomWithInvitees()); connCaps = TestBackdoors::createConnectionCapabilities(rccSpecs); // capabilities base QVERIFY(connCaps.textChats()); // conn caps specific QVERIFY(connCaps.textChatrooms()); QVERIFY(connCaps.conferenceTextChats()); QVERIFY(connCaps.conferenceTextChatsWithInvitees()); QVERIFY(connCaps.conferenceTextChatrooms()); QVERIFY(connCaps.conferenceTextChatroomsWithInvitees()); // capabilities base QVERIFY(!connCaps.fileTransfers()); // conn caps specific QVERIFY(!connCaps.contactSearches()); QVERIFY(!connCaps.contactSearchesWithSpecificServer()); QVERIFY(!connCaps.contactSearchesWithLimit()); QVERIFY(!connCaps.streamTubes()); } void TestCapabilities::testContactCapabilities() { ContactCapabilities contactCaps; // capabilities base QVERIFY(!contactCaps.isSpecificToContact()); QVERIFY(!contactCaps.textChats()); QVERIFY(!contactCaps.streamedMediaCalls()); QVERIFY(!contactCaps.streamedMediaAudioCalls()); QVERIFY(!contactCaps.streamedMediaVideoCalls()); QVERIFY(!contactCaps.streamedMediaVideoCallsWithAudio()); QVERIFY(!contactCaps.upgradingStreamedMediaCalls()); QVERIFY(!contactCaps.fileTransfers()); // contact caps specific QVERIFY(!contactCaps.streamTubes(QLatin1String("foobar"))); QVERIFY(!contactCaps.streamTubes(QLatin1String("service-foo"))); QVERIFY(!contactCaps.streamTubes(QLatin1String("service-bar"))); QVERIFY(contactCaps.streamTubeServices().isEmpty()); RequestableChannelClassSpecList rccSpecs; rccSpecs.append(RequestableChannelClassSpec::textChat()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaCall()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaAudioCall()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaVideoCall()); rccSpecs.append(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio()); rccSpecs.append(RequestableChannelClassSpec::fileTransfer()); contactCaps = TestBackdoors::createContactCapabilities(rccSpecs, true); // capabilities base QVERIFY(contactCaps.isSpecificToContact()); QVERIFY(contactCaps.textChats()); QVERIFY(contactCaps.streamedMediaCalls()); QVERIFY(contactCaps.streamedMediaAudioCalls()); QVERIFY(contactCaps.streamedMediaVideoCalls()); QVERIFY(contactCaps.streamedMediaVideoCallsWithAudio()); QVERIFY(contactCaps.fileTransfers()); // contact caps specific QVERIFY(!contactCaps.streamTubes(QLatin1String("foobar"))); QVERIFY(!contactCaps.streamTubes(QLatin1String("service-foo"))); QVERIFY(!contactCaps.streamTubes(QLatin1String("service-bar"))); QVERIFY(contactCaps.streamTubeServices().isEmpty()); QCOMPARE(contactCaps.allClassSpecs(), rccSpecs); rccSpecs.append(RequestableChannelClassSpec::streamTube(QLatin1String("service-foo"))); rccSpecs.append(RequestableChannelClassSpec::streamTube(QLatin1String("service-bar"))); contactCaps = TestBackdoors::createContactCapabilities(rccSpecs, true); // capabilities base QVERIFY(contactCaps.isSpecificToContact()); QVERIFY(contactCaps.textChats()); QVERIFY(contactCaps.streamedMediaCalls()); QVERIFY(contactCaps.streamedMediaAudioCalls()); QVERIFY(contactCaps.streamedMediaVideoCalls()); QVERIFY(contactCaps.streamedMediaVideoCallsWithAudio()); QVERIFY(contactCaps.fileTransfers()); // contact caps specific QVERIFY(!contactCaps.streamTubes(QLatin1String("foobar"))); QVERIFY(contactCaps.streamTubes(QLatin1String("service-foo"))); QVERIFY(contactCaps.streamTubes(QLatin1String("service-bar"))); QStringList stubeServices = contactCaps.streamTubeServices(); stubeServices.sort(); QStringList expectedSTubeServices; expectedSTubeServices << QLatin1String("service-foo") << QLatin1String("service-bar"); expectedSTubeServices.sort(); QCOMPARE(stubeServices, expectedSTubeServices); QCOMPARE(contactCaps.allClassSpecs(), rccSpecs); rccSpecs.clear(); rccSpecs.append(RequestableChannelClassSpec::streamTube(QLatin1String("service-foo"))); contactCaps = TestBackdoors::createContactCapabilities(rccSpecs, true); QVERIFY(!contactCaps.streamTubes(QLatin1String("foobar"))); QVERIFY(contactCaps.streamTubes(QLatin1String("service-foo"))); QVERIFY(!contactCaps.streamTubes(QLatin1String("service-bar"))); QCOMPARE(contactCaps.streamTubeServices(), QStringList() << QLatin1String("service-foo")); rccSpecs.append(RequestableChannelClassSpec::streamTube(QLatin1String("service-bar"))); contactCaps = TestBackdoors::createContactCapabilities(rccSpecs, true); QVERIFY(!contactCaps.streamTubes(QLatin1String("foobar"))); QVERIFY(contactCaps.streamTubes(QLatin1String("service-foo"))); QVERIFY(contactCaps.streamTubes(QLatin1String("service-bar"))); stubeServices = contactCaps.streamTubeServices(); stubeServices.sort(); expectedSTubeServices.clear(); expectedSTubeServices << QLatin1String("service-foo") << QLatin1String("service-bar"); expectedSTubeServices.sort(); QCOMPARE(stubeServices, expectedSTubeServices); } QTEST_MAIN(TestCapabilities) #include "_gen/capabilities.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/presence.cpp0000644000175100017520000001665012530423576021404 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include using namespace Tp; class TestPresence : public QObject { Q_OBJECT public: TestPresence(QObject *parent = 0); private Q_SLOTS: void testPresence(); void testPresenceSpec(); }; TestPresence::TestPresence(QObject *parent) : QObject(parent) { Tp::enableDebug(true); Tp::enableWarnings(true); } #define TEST_PRESENCE(pr, prValid, prType, prStatus, prStatusMessage) \ { \ QVERIFY(pr.isValid() == prValid); \ QCOMPARE(pr.type(), prType); \ QCOMPARE(pr.status(), prStatus); \ QCOMPARE(pr.statusMessage(), prStatusMessage); \ } void TestPresence::testPresence() { Presence pr; TEST_PRESENCE(pr, false, ConnectionPresenceTypeUnknown, QString(), QString()); pr.setStatus(ConnectionPresenceTypeAvailable, QLatin1String("available"), QLatin1String("I am available")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAvailable, QLatin1String("available"), QLatin1String("I am available")); pr = Presence::available(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAvailable, QLatin1String("available"), QString()); pr = Presence::available(QLatin1String("I am available")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAvailable, QLatin1String("available"), QLatin1String("I am available")); pr = Presence::chat(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAvailable, QLatin1String("chat"), QString()); pr = Presence::chat(QLatin1String("I am chat")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAvailable, QLatin1String("chat"), QLatin1String("I am chat")); pr = Presence::away(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAway, QLatin1String("away"), QString()); pr = Presence::away(QLatin1String("I am away")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAway, QLatin1String("away"), QLatin1String("I am away")); pr = Presence::brb(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAway, QLatin1String("brb"), QString()); pr = Presence::brb(QLatin1String("I am brb")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeAway, QLatin1String("brb"), QLatin1String("I am brb")); pr = Presence::busy(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeBusy, QLatin1String("busy"), QString()); pr = Presence::busy(QLatin1String("I am busy")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeBusy, QLatin1String("busy"), QLatin1String("I am busy")); pr = Presence::dnd(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeBusy, QLatin1String("dnd"), QString()); pr = Presence::dnd(QLatin1String("I am dnd")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeBusy, QLatin1String("dnd"), QLatin1String("I am dnd")); pr = Presence::xa(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeExtendedAway, QLatin1String("xa"), QString()); pr = Presence::xa(QLatin1String("I am xa")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeExtendedAway, QLatin1String("xa"), QLatin1String("I am xa")); pr = Presence::hidden(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeHidden, QLatin1String("hidden"), QString()); pr = Presence::hidden(QLatin1String("I am hidden")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeHidden, QLatin1String("hidden"), QLatin1String("I am hidden")); pr = Presence::offline(); TEST_PRESENCE(pr, true, ConnectionPresenceTypeOffline, QLatin1String("offline"), QString()); pr = Presence::offline(QLatin1String("I am offline")); TEST_PRESENCE(pr, true, ConnectionPresenceTypeOffline, QLatin1String("offline"), QLatin1String("I am offline")); } #define TEST_PRESENCE_SPEC_FULL(specStatus, specType, specMaySetOnSelf, specCanHaveMessage) \ { \ SimpleStatusSpec bareSpec; \ bareSpec.type = specType; \ bareSpec.maySetOnSelf = specMaySetOnSelf; \ bareSpec.canHaveMessage = specCanHaveMessage; \ \ PresenceSpec spec(specStatus, bareSpec); \ TEST_PRESENCE_SPEC(spec, true, specStatus, specType, specMaySetOnSelf, specCanHaveMessage); \ } #define TEST_PRESENCE_SPEC(spec, specValid, specStatus, specType, specMaySetOnSelf, specCanHaveMessage) \ { \ QVERIFY(spec.isValid() == specValid); \ if (specValid) { \ QCOMPARE(spec.presence(), Presence(specType, specStatus, QString())); \ TEST_PRESENCE(spec.presence(), true, specType, specStatus, QString()); \ QCOMPARE(spec.presence(QLatin1String("test message")), Presence(specType, specStatus, QLatin1String("test message"))); \ TEST_PRESENCE(spec.presence(QLatin1String("test message")), true, specType, specStatus, QLatin1String("test message")); \ } else { \ QVERIFY(!spec.presence().isValid()); \ } \ QCOMPARE(spec.maySetOnSelf(), specMaySetOnSelf); \ QCOMPARE(spec.canHaveStatusMessage(), specCanHaveMessage); \ \ if (specValid) { \ SimpleStatusSpec bareSpec; \ bareSpec.type = specType; \ bareSpec.maySetOnSelf = specMaySetOnSelf; \ bareSpec.canHaveMessage = specCanHaveMessage; \ QCOMPARE(spec.bareSpec(), bareSpec); \ } else { \ QCOMPARE(spec.bareSpec(), SimpleStatusSpec()); \ } \ } void TestPresence::testPresenceSpec() { PresenceSpec spec; TEST_PRESENCE_SPEC(spec, false, QString(), ConnectionPresenceTypeUnknown, false, false); TEST_PRESENCE_SPEC_FULL(QLatin1String("available"), ConnectionPresenceTypeAvailable, true, true); TEST_PRESENCE_SPEC_FULL(QLatin1String("brb"), ConnectionPresenceTypeAway, true, true); TEST_PRESENCE_SPEC_FULL(QLatin1String("away"), ConnectionPresenceTypeAway, true, true); TEST_PRESENCE_SPEC_FULL(QLatin1String("xa"), ConnectionPresenceTypeExtendedAway, false, false); TEST_PRESENCE_SPEC_FULL(QLatin1String("offline"), ConnectionPresenceTypeOffline, true, false); spec = PresenceSpec::available(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("available"), ConnectionPresenceTypeAvailable, true, true); spec = PresenceSpec::chat(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("chat"), ConnectionPresenceTypeAvailable, true, true); spec = PresenceSpec::pstn(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("pstn"), ConnectionPresenceTypeAvailable, false, true); spec = PresenceSpec::away(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("away"), ConnectionPresenceTypeAway, true, true); spec = PresenceSpec::brb(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("brb"), ConnectionPresenceTypeAway, true, true); spec = PresenceSpec::busy(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("busy"), ConnectionPresenceTypeBusy, true, true); spec = PresenceSpec::dnd(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("dnd"), ConnectionPresenceTypeBusy, true, true); spec = PresenceSpec::xa(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("xa"), ConnectionPresenceTypeExtendedAway, true, true); spec = PresenceSpec::hidden(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("hidden"), ConnectionPresenceTypeHidden, true, true); spec = PresenceSpec::offline(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("offline"), ConnectionPresenceTypeOffline, false, true); spec = PresenceSpec::unknown(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("unknown"), ConnectionPresenceTypeUnknown, false, true); spec = PresenceSpec::error(); TEST_PRESENCE_SPEC(spec, true, QLatin1String("error"), ConnectionPresenceTypeError, false, true); } QTEST_MAIN(TestPresence) #include "_gen/presence.cpp.moc.hpp" telepathy-qt-0.9.6.1/tests/utils.cpp0000644000175100017520000000127712530423576020737 0ustar00kaffeinekaffeine00000000000000#include #include using namespace Tp; class TestUtils : public QObject { Q_OBJECT private Q_SLOTS: void testUtils(); }; void TestUtils::testUtils() { QString res; res = escapeAsIdentifier(QString::fromLatin1("")); QCOMPARE(res, QString::fromLatin1("_")); res = escapeAsIdentifier(QString::fromLatin1("badger")); QCOMPARE(res, QString::fromLatin1("badger")); res = escapeAsIdentifier(QString::fromLatin1("0123abc_xyz")); QCOMPARE(res, QString::fromLatin1("_30123abc_5fxyz")); res = escapeAsIdentifier(QString::fromUtf8("©")); QCOMPARE(res, QString::fromLatin1("_c2_a9")); } QTEST_MAIN(TestUtils) #include "_gen/utils.cpp.moc.hpp" telepathy-qt-0.9.6.1/tools/0000755000175100017520000000000012530423576017062 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/tools/libqtcodegen.py0000644000175100017520000004126612530423576022105 0ustar00kaffeinekaffeine00000000000000"""Library code for Qt D-Bus-related code generation. The master copy of this library is in the telepathy-qt repository - please make any changes there. """ # Copyright (C) 2008 Collabora Limited # Copyright (C) 2008 Nokia Corporation # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from sys import maxint, stderr import re from libtpcodegen import get_by_path, get_descendant_text, NS_TP, xml_escape class Xzibit(Exception): def __init__(self, parent, child): self.parent = parent self.child = child def __str__(self): print """ Nested <%s>s are forbidden. Parent: %s... Child: %s... """ % (self.parent.nodeName, self.parent.toxml()[:100], self.child.toxml()[:100]) class _QtTypeBinding: def __init__(self, val, inarg, outarg, array_val, custom_type, array_of, array_depth=None): self.val = val self.inarg = inarg self.outarg = outarg self.array_val = array_val self.custom_type = custom_type self.array_of = array_of self.array_depth = array_depth if array_depth is None: self.array_depth = int(bool(array_val)) elif array_depth >= 1: assert array_val else: assert not array_val class RefTarget(object): KIND_INTERFACE, KIND_METHOD, KIND_SIGNAL, KIND_PROPERTY = 'node', 'method', 'signal', 'property' def __init__(self, el): self.kind = el.localName assert self.kind in (self.KIND_INTERFACE, self.KIND_METHOD, self.KIND_SIGNAL, self.KIND_PROPERTY) if self.kind == self.KIND_INTERFACE: self.dbus_text = el.getAttribute('name').lstrip('/').replace('_', '') + 'Interface' else: self.member_text = el.getAttribute('name') assert el.parentNode.parentNode.localName == self.KIND_INTERFACE host_class = el.parentNode.parentNode.getAttribute('name').lstrip('/').replace('_', '') + 'Interface' if self.kind == self.KIND_PROPERTY: self.member_link = 'requestProperty%s()' % (self.member_text) self.dbus_link = '%s::%s' % (host_class, self.member_link) else: self.member_text = '%s()' % self.member_text self.dbus_text = '%s::%s' % (host_class, self.member_text) class RefRegistry(object): def __init__(self, spec): self.targets = {} for node in spec.getElementsByTagName('node'): iface, = get_by_path(node, 'interface') iface_name = iface.getAttribute('name') self.targets[iface_name] = RefTarget(node) for method in iface.getElementsByTagName(RefTarget.KIND_METHOD): self.targets[iface_name + '.' + method.getAttribute('name')] = RefTarget(method) for signal in iface.getElementsByTagName(RefTarget.KIND_SIGNAL): self.targets[iface_name + '.' + signal.getAttribute('name')] = RefTarget(signal) for prop in iface.getElementsByTagName(RefTarget.KIND_PROPERTY): self.targets[iface_name + '.' + prop.getAttribute('name')] = RefTarget(prop) def process(self, ref): assert ref.namespaceURI == NS_TP def get_closest_parent(el, needle): node = el while node is not None and node.localName != needle: node = node.parentNode return node local = get_descendant_text(ref).strip() if ref.localName == 'member-ref': ns = get_closest_parent(ref, 'interface').getAttribute('name') path = ns + '.' + local.strip() else: if ref.hasAttribute('namespace'): ns = ref.getAttribute('namespace').replace('ofdT', 'org.freedesktop.Telepathy') path = ns + '.' + local.strip() else: path = local target = self.targets.get(path) if target is None: parent = get_closest_parent(ref, 'interface') or get_closest_parent(ref, 'error') parent_name = parent.getAttribute('name') if (path + parent_name).find('.DRAFT') == -1 and (path + parent_name).find('.FUTURE') == -1: print >> stderr, 'WARNING: Failed to resolve %s to "%s" in "%s"' % ( ref.localName, path, parent_name) return path if ref.localName == 'member-ref': if target.kind == target.KIND_PROPERTY: return '\\link %s %s \\endlink' % (target.member_link, target.member_text) else: return target.member_text else: if target.kind == target.KIND_PROPERTY: return '\\link %s %s \\endlink' % (target.dbus_link, target.dbus_text) else: return target.dbus_text def binding_from_usage(sig, tptype, custom_lists, external=False, explicit_own_ns=None): # 'signature' : ('qt-type', 'pass-by-reference', 'array-type') natives = { 'y' : ('uchar', False, None), 'b' : ('bool', False, 'BoolList'), 'n' : ('short', False, 'ShortList'), 'q' : ('ushort', False, 'UShortList'), 'i' : ('int', False, 'IntList'), 'u' : ('uint', False, 'UIntList'), 'x' : ('qlonglong', False, 'LongLongList'), 't' : ('qulonglong', False, 'ULongLongList'), 'd' : ('double', False, 'DoubleList'), 's' : ('QString', True, None), 'v' : ('QDBusVariant', True, None), 'o' : ('QDBusObjectPath', True, 'ObjectPathList'), 'g' : ('QDBusSignature', True, 'SignatureList'), 'as' : ('QStringList', True, "StringListList"), 'ay' : ('QByteArray', True, "ByteArrayList"), 'av' : ('QVariantList', True, "VariantListList"), 'a{sv}' : ('QVariantMap', True, None) } val, inarg = None, None custom_type = False array_of = None if natives.has_key(sig): typename, pass_by_ref, array_name = natives[sig] val = typename inarg = (pass_by_ref and ('const %s&' % val)) or val elif sig[0] == 'a' and natives.has_key(sig[1:]) and natives[sig[1:]][2]: val = natives[sig[1:]][2] if explicit_own_ns: val = explicit_own_ns + '::' + val inarg = 'const %s&' % val array_of = natives[sig[1:]][0] elif tptype: tptype = tptype.replace('_', '') custom_type = True if external: tptype = 'Tp::' + tptype elif explicit_own_ns: tptype = explicit_own_ns + '::' + tptype if tptype.endswith('[]'): tptype = tptype[:-2] extra_list_nesting = 0 while tptype.endswith('[]'): extra_list_nesting += 1 tptype = tptype[:-2] assert custom_lists.has_key(tptype), ('No array version of custom type %s in the spec, but array version used' % tptype) val = custom_lists[tptype] + 'List' * extra_list_nesting else: val = tptype inarg = 'const %s&' % val else: assert False, 'Don\'t know how to map type (%s, %s)' % (sig, tptype) outarg = val + '&' return _QtTypeBinding(val, inarg, outarg, None, custom_type, array_of) def binding_from_decl(name, array_name, array_depth=None, external=False, explicit_own_ns=''): val = name.replace('_', '') if external: val = 'Tp::' + val elif explicit_own_ns: val = explicit_own_ns + '::' + val inarg = 'const %s&' % val outarg = '%s&' % val return _QtTypeBinding(val, inarg, outarg, array_name.replace('_', ''), True, None, array_depth) def extract_arg_or_member_info(els, custom_lists, externals, typesns, refs, docstring_indent=' * ', docstring_brackets=None, docstring_maxwidth=80): names = [] docstrings = [] bindings = [] for el in els: names.append(get_qt_name(el)) docstrings.append(format_docstring(el, refs, docstring_indent, docstring_brackets, docstring_maxwidth)) sig = el.getAttribute('type') tptype = el.getAttributeNS(NS_TP, 'type') bindings.append(binding_from_usage(sig, tptype, custom_lists, (sig, tptype) in externals, typesns)) return names, docstrings, bindings def format_docstring(el, refs, indent=' * ', brackets=None, maxwidth=80): docstring_el = None for x in el.childNodes: if x.namespaceURI == NS_TP and x.localName == 'docstring': docstring_el = x if not docstring_el: return '' lines = [] # escape backslashes, so they won't be interpreted starting doxygen commands and we can later # insert doxygen commands we actually want def escape_slashes(x): if x.nodeType == x.TEXT_NODE: x.data = x.data.replace('\\', '\\\\') elif x.nodeType == x.ELEMENT_NODE: for y in x.childNodes: escape_slashes(y) else: return escape_slashes(docstring_el) doc = docstring_el.ownerDocument for n in docstring_el.getElementsByTagNameNS(NS_TP, 'rationale'): nested = n.getElementsByTagNameNS(NS_TP, 'rationale') if nested: raise Xzibit(n, nested[0]) div = doc.createElement('div') div.setAttribute('class', 'rationale') for rationale_body in n.childNodes: div.appendChild(rationale_body.cloneNode(True)) n.parentNode.replaceChild(div, n) if docstring_el.getAttribute('xmlns') == 'http://www.w3.org/1999/xhtml': for ref in docstring_el.getElementsByTagNameNS(NS_TP, 'member-ref') + docstring_el.getElementsByTagNameNS(NS_TP, 'dbus-ref'): nested = ref.getElementsByTagNameNS(NS_TP, 'member-ref') + ref.getElementsByTagNameNS(NS_TP, 'dbus-ref') if nested: raise Xzibit(n, nested[0]) text = doc.createTextNode(' \\endhtmlonly ') text.data += refs.process(ref) text.data += ' \\htmlonly ' ref.parentNode.replaceChild(text, ref) splitted = ''.join([el.toxml() for el in docstring_el.childNodes]).strip(' ').strip('\n').split('\n') level = min([not match and maxint or match.end() - 1 for match in [re.match('^ *[^ ]', line) for line in splitted]]) assert level != maxint lines = ['\\htmlonly'] + [line[level:] for line in splitted] + ['\\endhtmlonly'] else: content = xml_escape(get_descendant_text(docstring_el).replace('\n', ' ').strip()) while content.find(' ') != -1: content = content.replace(' ', ' ') left = maxwidth - len(indent) - 1 line = '' while content: step = (content.find(' ') + 1) or len(content) if step > left: lines.append(line) line = '' left = maxwidth - len(indent) - 1 left = left - step line = line + content[:step] content = content[step:] if line: lines.append(line) output = [] if lines: if brackets: output.append(brackets[0]) else: output.append(indent) output.append('\n') for line in lines: output.append(indent) output.append(line) output.append('\n') if lines and brackets: output.append(brackets[1]) output.append('\n') return ''.join(output) def gather_externals(spec): externals = [] for ext in spec.getElementsByTagNameNS(NS_TP, 'external-type'): sig = ext.getAttribute('type') tptype = ext.getAttribute('name') externals.append((sig, tptype)) return externals def gather_custom_lists(spec, typesns): custom_lists = {} structs = [(provider, typesns) for provider in spec.getElementsByTagNameNS(NS_TP, 'struct')] mappings = [(provider, typesns) for provider in spec.getElementsByTagNameNS(NS_TP, 'mapping')] exts = [(provider, 'Telepathy') for provider in spec.getElementsByTagNameNS(NS_TP, 'external-type')] for (provider, ns) in structs + mappings + exts: tptype = provider.getAttribute('name').replace('_', '') array_val = provider.getAttribute('array-name').replace('_', '') array_depth = provider.getAttribute('array-depth') if array_depth: array_depth = int(array_depth) else: array_depth = None if array_val: custom_lists[tptype] = array_val custom_lists[ns + '::' + tptype] = ns + '::' + array_val if array_depth >= 2: for i in xrange(array_depth): custom_lists[tptype + ('[]' * (i+1))] = ( array_val + ('List' * i)) custom_lists[ns + '::' + tptype + ('[]' * (i+1))] = ( ns + '::' + array_val + ('List' * i)) return custom_lists def get_headerfile_cmd(realinclude, prettyinclude, indent=' * '): prettyinclude = prettyinclude or realinclude if realinclude: if prettyinclude: return indent + ('\\headerfile %s <%s>\n' % (realinclude, prettyinclude)) else: return indent + ('\\headerfile %s <%s>\n' % (realinclude)) else: return '' def get_qt_name(el): name = el.getAttribute('name') if el.localName in ('method', 'signal', 'property'): bname = el.getAttributeNS(NS_TP, 'name-for-bindings') if bname: name = bname if not name: return None if name[0].isupper() and name[1].islower(): name = name[0].lower() + name[1:] return qt_identifier_escape(name.replace('_', '')) def qt_identifier_escape(str): built = (str[0].isdigit() and ['_']) or [] for c in str: if c.isalnum(): built.append(c) else: built.append('_') str = ''.join(built) # List of reserved identifiers # Initial list from http://cs.smu.ca/~porter/csc/ref/cpp_keywords.html # Keywords inherited from C90 reserved = ['auto', 'const', 'double', 'float', 'int', 'short', 'struct', 'unsigned', 'break', 'continue', 'else', 'for', 'long', 'signed', 'switch', 'void', 'case', 'default', 'enum', 'goto', 'register', 'sizeof', 'typedef', 'volatile', 'char', 'do', 'extern', 'if', 'return', 'static', 'union', 'while', # C++-only keywords 'asm', 'dynamic_cast', 'namespace', 'reinterpret_cast', 'try', 'bool', 'explicit', 'new', 'static_cast', 'typeid', 'catch', 'false', 'operator', 'template', 'typename', 'class', 'friend', 'private', 'this', 'using', 'const_cast', 'inline', 'public', 'throw', 'virtual', 'delete', 'mutable', 'protected', 'true', 'wchar_t', # Operator replacements 'and', 'bitand', 'compl', 'not_eq', 'or_eq', 'xor_eq', 'and_eq', 'bitor', 'not', 'or', 'xor', # Predefined identifiers 'INT_MIN', 'INT_MAX', 'MAX_RAND', 'NULL', # Qt 'SIGNAL', 'SLOT', 'signals', 'slots'] while str in reserved: str = str + '_' return str telepathy-qt-0.9.6.1/tools/xincludator.py0000644000175100017520000000241312530423576021770 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python from sys import argv, stdout, stderr import codecs, locale import os import xml.dom.minidom stdout = codecs.getwriter('utf-8')(stdout) NS_XI = 'http://www.w3.org/2001/XInclude' def xincludate(dom, base, dropns = []): remove_attrs = [] for i in xrange(dom.documentElement.attributes.length): attr = dom.documentElement.attributes.item(i) if attr.prefix == 'xmlns': if attr.localName in dropns: remove_attrs.append(attr) else: dropns.append(attr.localName) for attr in remove_attrs: dom.documentElement.removeAttributeNode(attr) for include in dom.getElementsByTagNameNS(NS_XI, 'include'): href = include.getAttribute('href') # FIXME: assumes Unixy paths filename = os.path.join(os.path.dirname(base), href) subdom = xml.dom.minidom.parse(filename) xincludate(subdom, filename, dropns) if './' in href: subdom.documentElement.setAttribute('xml:base', href) include.parentNode.replaceChild(subdom.documentElement, include) if __name__ == '__main__': argv = argv[1:] dom = xml.dom.minidom.parse(argv[0]) xincludate(dom, argv[0]) xml = dom.toxml() stdout.write(xml) stdout.write('\n') telepathy-qt-0.9.6.1/tools/check-misc.sh0000644000175100017520000000036012530423576021423 0ustar00kaffeinekaffeine00000000000000#!/bin/sh fail=0 ( . "${tools_dir}"/check-whitespace.sh ) || fail=$? if egrep '(Free\s*Software\s*Foundation.*02139|02111-1307)' "$@" then echo "^^^ The above files contain the FSF's old address in GPL headers" fail=1 fi exit $fail telepathy-qt-0.9.6.1/tools/tp-qt-tests.supp0000644000175100017520000000266312530423576022207 0ustar00kaffeinekaffeine00000000000000# QDBus doesn't call dbus_shutdown, so some D-Bus internal data structures are leaked. # We never call any low-level dbus message creation functions ourselves - if there are leaks, # they're either caused by not calling dbus_shutdown, QDBus bugs or libdbus bugs - neither of which # are our problem. { Initial session bus registration message Memcheck:Leak fun:malloc fun:dbus_message_new_empty_header } # The conference test CM channel object leaks some crazy GValue boxed data which I don't have the # energy to investigate how to properly free now - it's not production code anyway. { Conference test CM channel boxed GValue data Memcheck:Leak ... fun:g_boxed_copy ... fun:_ZN18TestConferenceChan12initTestCaseEv } # Reported as https://bugs.freedesktop.org/show_bug.cgi?id=32116 { TpBaseConnectionManager legacy protocol objects Memcheck:Leak ... fun:g_object_new ... fun:tp_base_connection_manager_register } # O(number of error domains) leak from dbus_g_method_return_error { dbus_g_method_return_error error domain enum class Memcheck:Leak ... fun:g_type_class_ref ... fun:dbus_g_method_return_error } # O(1) leak from tp_base_connection_manager installing the param spec for the dbus-daemon param { tp_base_connection_manager dbus-daemon param spec Memcheck:Leak ... fun:g_param_spec_object fun:tp_base_connection_manager_class_intern_init } telepathy-qt-0.9.6.1/tools/qt-constants-gen.py0000644000175100017520000002121112530423576022636 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # # Copyright (C) 2008 Collabora Limited # Copyright (C) 2008 Nokia Corporation # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from sys import argv, stdout, stderr import codecs import xml.dom.minidom from getopt import gnu_getopt from libtpcodegen import NS_TP, get_descendant_text, get_by_path from libqtcodegen import format_docstring, RefRegistry class Generator(object): def __init__(self, opts): try: self.namespace = opts['--namespace'] self.must_define = opts.get('--must-define', None) dom = xml.dom.minidom.parse(opts['--specxml']) except KeyError, k: assert False, 'Missing required parameter %s' % k.args[0] self.define_prefix = None if '--define-prefix' in opts: self.define_prefix = opts['--define-prefix'] self.old_prefix = None if '--str-constant-prefix' in opts: self.old_prefix = opts['--str-constant-prefix'] self.spec = get_by_path(dom, "spec")[0] self.out = codecs.getwriter('utf-8')(stdout) self.refs = RefRegistry(self.spec) def h(self, code): self.out.write(code) def __call__(self): # Header self.h('/* Generated from ') self.h(get_descendant_text(get_by_path(self.spec, 'title'))) version = get_by_path(self.spec, "version") if version: self.h(', version ' + get_descendant_text(version)) self.h(""" */ """) if self.must_define: self.h(""" #ifndef %s #error %s #endif """ % (self.must_define, self.must_define)) self.h(""" #include /** * \\addtogroup typesconstants Types and constants * * Enumerated, flag, structure, list and mapping types and utility constants. */ /** * \\defgroup flagtypeconsts Flag type constants * \\ingroup typesconstants * * Types generated from the specification representing bit flag constants and * combinations of them (bitfields). */ /** * \\defgroup enumtypeconsts Enumerated type constants * \\ingroup typesconstants * * Types generated from the specification representing enumerated types ie. * types the values of which are mutually exclusive integral constants. */ /** * \\defgroup ifacestrconsts Interface string constants * \\ingroup typesconstants * * D-Bus interface names of the interfaces in the specification. */ /** * \\defgroup errorstrconsts Error string constants * \\ingroup typesconstants * * Names of the D-Bus errors in the specification. */ """) # Begin namespace self.h(""" namespace %s { """ % self.namespace) # Flags for flags in self.spec.getElementsByTagNameNS(NS_TP, 'flags'): self.do_flags(flags) # Enums for enum in self.spec.getElementsByTagNameNS(NS_TP, 'enum'): self.do_enum(enum) # End namespace self.h("""\ } """) # Interface names for iface in self.spec.getElementsByTagName('interface'): if self.old_prefix: self.h("""\ /** * \\ingroup ifacestrconsts * * The interface name "%(name)s". */ #define %(DEFINE)s "%(name)s" """ % {'name' : iface.getAttribute('name'), 'DEFINE' : self.old_prefix + 'INTERFACE_' + get_by_path(iface, '../@name').upper().replace('/', '')}) if self.define_prefix: self.h("""\ /** * \\ingroup ifacestrconsts * * The interface name "%(name)s" as a QLatin1String, usable in QString requiring contexts even when * building with Q_NO_CAST_FROM_ASCII defined. */ #define %(DEFINE)s (QLatin1String("%(name)s")) """ % {'name' : iface.getAttribute('name'), 'DEFINE' : self.define_prefix + 'IFACE_' + get_by_path(iface, '../@name').upper().replace('/', '')}) # Error names for error in get_by_path(self.spec, 'errors/error'): name = error.getAttribute('name') fullname = get_by_path(error, '../@namespace') + '.' + name.replace(' ', '') if self.old_prefix: define = self.old_prefix + 'ERROR_' + name.replace(' ', '_').replace('.', '_').upper() self.h("""\ /** * \\ingroup errorstrconsts * * The error name "%(fullname)s". %(docstring)s\ */ #define %(DEFINE)s "%(fullname)s" """ % {'fullname' : fullname, 'docstring': format_docstring(error, self.refs), 'DEFINE' : define}) if self.define_prefix: define = self.define_prefix + 'ERROR_' + name.replace(' ', '_').replace('.', '_').upper() self.h("""\ /** * \\ingroup errorstrconsts * * The error name "%(fullname)s" as a QLatin1String, usable in QString requiring contexts even when * building with Q_NO_CAST_FROM_ASCII defined. %(docstring)s\ */ #define %(DEFINE)s QLatin1String("%(fullname)s") """ % {'fullname' : fullname, 'docstring': format_docstring(error, self.refs), 'DEFINE' : define}) def do_flags(self, flags): singular = flags.getAttribute('singular') or \ flags.getAttribute('value-prefix') using_name = False if not singular: using_name = True singular = flags.getAttribute('name') if singular.endswith('lags'): singular = singular[:-1] if using_name and singular.endswith('s'): singular = singular[:-1] singular = singular.replace('_', '') plural = (flags.getAttribute('plural') or flags.getAttribute('name') or singular + 's').replace('_', '') self.h("""\ /** * \\ingroup flagtypeconsts * * Flag type generated from the specification. */ enum %(singular)s { """ % {'singular' : singular}) flagvalues = get_by_path(flags, 'flag') for flag in flagvalues: self.do_val(flag, singular, flag == flagvalues[-1]) self.h("""\ %s = 0xffffffffU """ % ("_" + singular + "Padding")) self.h("""\ }; /** * \\typedef QFlags<%(singular)s> %(plural)s * \\ingroup flagtypeconsts * * Type representing combinations of #%(singular)s values. %(docstring)s\ */ typedef QFlags<%(singular)s> %(plural)s; Q_DECLARE_OPERATORS_FOR_FLAGS(%(plural)s) """ % {'singular' : singular, 'plural' : plural, 'docstring' : format_docstring(flags, self.refs)}) def do_enum(self, enum): singular = enum.getAttribute('singular') or \ enum.getAttribute('name') value_prefix = enum.getAttribute('singular') or \ enum.getAttribute('value-prefix') or \ enum.getAttribute('name') if singular.endswith('lags'): singular = singular[:-1] plural = enum.getAttribute('plural') or singular + 's' singular = singular.replace('_', '') value_prefix = value_prefix.replace('_', '') vals = get_by_path(enum, 'enumvalue') self.h("""\ /** * \\enum %(singular)s * \\ingroup enumtypeconsts * * Enumerated type generated from the specification. %(docstring)s\ */ enum %(singular)s { """ % {'singular' : singular, 'docstring' : format_docstring(enum, self.refs)}) for val in vals: self.do_val(val, value_prefix, val == vals[-1]) self.h("""\ %s = 0xffffffffU }; """ % ("_" + singular + "Padding")) self.h("""\ /** * \\ingroup enumtypeconsts * * 1 higher than the highest valid value of %(singular)s. */ const int NUM_%(upper-plural)s = (%(last-val)s+1); """ % {'singular' : singular, 'upper-plural' : plural.upper(), 'last-val' : vals[-1].getAttribute('value')}) def do_val(self, val, prefix, last): name = (val.getAttribute('suffix') or val.getAttribute('name')).replace('_', '') self.h("""\ %s\ %s = %s, """ % (format_docstring(val, self.refs, indent=' * ', brackets=(' /**', ' */')), prefix + name, val.getAttribute('value'))) if __name__ == '__main__': options, argv = gnu_getopt(argv[1:], '', ['namespace=', 'str-constant-prefix=', 'define-prefix=', 'must-define=', 'specxml=']) Generator(dict(options))() telepathy-qt-0.9.6.1/tools/qt-svc-gen.py0000644000175100017520000005636312530423576021435 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # # Copyright (C) 2012 Collabora Limited # Copyright (C) 2012 Nokia Corporation # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from sys import argv import xml.dom.minidom import codecs from getopt import gnu_getopt from libtpcodegen import NS_TP, get_descendant_text, get_by_path from libqtcodegen import binding_from_usage, extract_arg_or_member_info, format_docstring, gather_externals, gather_custom_lists, get_headerfile_cmd, get_qt_name, qt_identifier_escape, RefRegistry # TODO generate docstrings def to_lower_camel_case(s): if len(s) <= 1: return s.lower() i = 0 for c in s: if c == '_': break i += 1 ret = s if i == len(s): return s.lower() else: ret = s[0:i].lower() + s[i:] ret = ret.replace('_', '') return ret class Generator(object): def __init__(self, opts): try: self.group = opts.get('--group', '') self.headerfile = opts['--headerfile'] self.implfile = opts['--implfile'] self.namespace = opts['--namespace'] self.typesnamespace = opts['--typesnamespace'] self.realinclude = opts.get('--realinclude', None) self.mocinclude = opts.get('--mocinclude', None) self.prettyinclude = opts.get('--prettyinclude') self.extraincludes = opts.get('--extraincludes', None) self.must_define = opts.get('--must-define', None) self.visibility = opts.get('--visibility', '') ifacedom = xml.dom.minidom.parse(opts['--ifacexml']) specdom = xml.dom.minidom.parse(opts['--specxml']) except KeyError, k: assert False, 'Missing required parameter %s' % k.args[0] if not self.realinclude: self.realinclude = self.headerfile self.hs = [] self.bs = [] self.ifacenodes = ifacedom.getElementsByTagName('node') self.spec, = get_by_path(specdom, "spec") self.custom_lists = gather_custom_lists(self.spec, self.typesnamespace) self.externals = gather_externals(self.spec) self.refs = RefRegistry(self.spec) def __call__(self): # Output info header and includes self.h("""\ /* * This file contains D-Bus adaptor classes generated by qt-svc-gen.py. * * This file can be distributed under the same terms as the specification from * which it was generated. */ """) if self.must_define: self.h('\n') self.h('#ifndef %s\n' % self.must_define) self.h('#error %s\n' % self.must_define) self.h('#endif\n') self.h('\n') if self.extraincludes: for include in self.extraincludes.split(','): self.h('#include %s\n' % include) self.h("""\ #include #include #include #include #include """) if self.must_define: self.b("""#define %s\n""" % (self.must_define)) self.b("""#include "%s" """ % self.realinclude) if self.mocinclude: self.b("""#include "%s" """ % self.mocinclude) self.b("""\ #include #include """) # Begin namespace for ns in self.namespace.split('::'): self.hb("""\ namespace %s { """ % ns) # Output interface proxies def ifacenodecmp(x, y): xname, yname = [self.namespace + '::' + node.getAttribute('name').replace('/', '').replace('_', '') + 'Adaptor' for node in x, y] return cmp(xname, yname) self.ifacenodes.sort(cmp=ifacenodecmp) for ifacenode in self.ifacenodes: self.do_ifacenode(ifacenode) # End namespace self.hb(''.join(['\n}' for ns in self.namespace.split('::')])) # Write output to files (codecs.getwriter('utf-8')(open(self.headerfile, 'w'))).write(''.join(self.hs)) (codecs.getwriter('utf-8')(open(self.implfile, 'w'))).write(''.join(self.bs)) def do_ifacenode(self, ifacenode): # Extract info name = ifacenode.getAttribute('name').replace('/', '').replace('_', '') + 'Adaptor' iface, = get_by_path(ifacenode, 'interface') dbusname = iface.getAttribute('name') props = get_by_path(iface, 'property') methods = get_by_path(iface, 'method') signals = get_by_path(iface, 'signal') # Begin class, constructors self.h(""" /** * \\class %(name)s %(headercmd)s\ %(groupcmd)s\ * * Adaptor class providing a 1:1 mapping of the D-Bus interface "%(dbusname)s". */ class %(visibility)s %(name)s : public Tp::AbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "%(dbusname)s") Q_CLASSINFO("D-Bus Introspection", "" " \\n" """ % {'name': name, 'headercmd': get_headerfile_cmd(self.realinclude, self.prettyinclude), 'groupcmd': self.group and (' * \\ingroup %s\n' % self.group), 'dbusname': dbusname, 'visibility': self.visibility, }) self.do_introspection(props, methods, signals) self.h("""\ " \\n" "") """) self.do_qprops(props) self.h(""" public: %(name)s(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent); virtual ~%(name)s(); """ % {'name': name}) self.do_mic_typedefs(methods) self.b(""" %(name)s::%(name)s(const QDBusConnection& bus, QObject* adaptee, QObject* parent) : Tp::AbstractAdaptor(bus, adaptee, parent) { """ % {'name': name}) self.do_signals_connect(signals) self.b("""\ } %(name)s::~%(name)s() { } """ % {'name': name}) # Properties has_props = False if props: self.h(""" public: // PROPERTIES """) for prop in props: # Skip tp:properties if not prop.namespaceURI: self.do_prop(name, prop) has_props = True # Methods if methods: self.h(""" public Q_SLOTS: // METHODS """) for method in methods: self.do_method(name, method) # Signals if signals: self.h(""" Q_SIGNALS: // SIGNALS """) for signal in signals: self.do_signal(signal) # Close class self.h("""\ }; """) def do_introspection(self, props, methods, signals): self.do_prop_introspection(props) self.do_method_introspection(methods) self.do_signal_introspection(signals) def do_prop_introspection(self, props): for prop in props: if prop.namespaceURI: continue name = prop.getAttribute('name') access = prop.getAttribute('access') sig = prop.getAttribute('type') tptype = prop.getAttributeNS(NS_TP, 'type') binding = binding_from_usage(sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace) if not binding.custom_type: self.h("""\ " \\n" """ % {'access': access, 'sig': sig, 'name': name, }) else: self.h("""\ " \\n" " \\n" " \\n" """ % {'access': access, 'sig': sig, 'name': name, 'type': binding.val, }) def do_method_introspection(self, methods): for method in methods: name = method.getAttribute('name') args = get_by_path(method, 'arg') argnames, argdocstrings, argbindings = extract_arg_or_member_info(args, self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') if not argnames: self.h("""\ " \\n" """ % {'name': name}) else: self.h("""\ " \\n" """ % {'name': name}) outindex = 0 inindex = 0 for i in xrange(len(argnames)): assert argnames[i] != None, 'Name missing from argument at index %d for signal %s' % (i, name) argbinding = argbindings[i] argname = argnames[i] argsig = args[i].getAttribute('type') argdirection = args[i].getAttribute('direction') # QtDBus requires annotating a{sv} if argsig == 'a{sv}': argbinding.custom_type = True if not argbinding.custom_type: self.h("""\ " \\n" """ % {'direction': argdirection, 'sig': argsig, 'name': argname}) else: self.h("""\ " \\n" " \\n" " \\n" """ % {'direction': argdirection, 'sig': argsig, 'name': argname, 'type': argbinding.val, 'index': 'In' + str(inindex) if argdirection == 'in' else 'Out' + str(outindex), }) if argdirection == 'out': outindex += 1 else: inindex += 1 self.h("""\ " \\n" """) def do_signal_introspection(self, signals): for signal in signals: name = signal.getAttribute('name') args = get_by_path(signal, 'arg') argnames, argdocstrings, argbindings = extract_arg_or_member_info(args, self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') if not argnames: self.h("""\ " \\n" """ % {'name': name}) else: self.h("""\ " \\n" """ % {'name': name}) for i in xrange(len(argnames)): assert argnames[i] != None, 'Name missing from argument at index %d for signal %s' % (i, name) argbinding = argbindings[i] argname = argnames[i] argsig = args[i].getAttribute('type') if not argbinding.custom_type: self.h("""\ " \\n" """ % {'sig': argsig, 'name': argname}) else: self.h("""\ " \\n" " \\n" " \\n" """ % {'sig': argsig, 'name': argname, 'type': argbinding.val, 'index': i, }) self.h("""\ " \\n" """) def do_mic_typedefs(self, methods): for method in methods: name = method.getAttribute('name') args = get_by_path(method, 'arg') argnames, argdocstrings, argbindings = extract_arg_or_member_info(args, self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') outargs = [] for i in xrange(len(args)): if args[i].getAttribute('direction') == 'out': outargs.append(i) if outargs: outargtypes = ', '.join([argbindings[i].val for i in outargs]) else: outargtypes = '' self.h("""\ typedef Tp::MethodInvocationContextPtr< %(outargtypes)s > %(name)sContextPtr; """ % {'name': name, 'outargtypes': outargtypes, }) def do_qprops(self, props): for prop in props: # Skip tp:properties if not prop.namespaceURI: self.do_qprop(prop) def do_qprop(self, prop): name = prop.getAttribute('name') access = prop.getAttribute('access') gettername = name settername = None if 'write' in access: settername = 'Set' + name sig = prop.getAttribute('type') tptype = prop.getAttributeNS(NS_TP, 'type') binding = binding_from_usage(sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace) self.h("""\ Q_PROPERTY(%(type)s %(name)s %(getter)s %(setter)s) """ % {'type': binding.val, 'name': name, 'getter': 'READ ' + gettername if ('read' in access) else '', 'setter': 'WRITE ' + settername if ('write' in access) else '', }) def do_prop(self, ifacename, prop): name = prop.getAttribute('name') adaptee_name = to_lower_camel_case(prop.getAttribute('tp:name-for-bindings')) access = prop.getAttribute('access') gettername = name settername = None if 'write' in access: settername = 'Set' + name docstring = format_docstring(prop, self.refs, ' * ').replace('*/', '*/') sig = prop.getAttribute('type') tptype = prop.getAttributeNS(NS_TP, 'type') binding = binding_from_usage(sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace) if 'read' in access: self.h("""\ /** * Return the value of the exported D-Bus object property \\c %(name)s of type \\c %(type)s. * * Adaptees should export this property as a Qt property named * '%(adaptee_name)s' with type %(type)s. * %(docstring)s\ * * \\return The value of exported property \\c %(name)s. */ %(type)s %(gettername)s() const; """ % {'name': name, 'adaptee_name': adaptee_name, 'docstring': docstring, 'type': binding.val, 'gettername': gettername, }) self.b(""" %(type)s %(ifacename)s::%(gettername)s() const { return qvariant_cast< %(type)s >(adaptee()->property("%(adaptee_name)s")); } """ % {'type': binding.val, 'ifacename': ifacename, 'gettername': gettername, 'adaptee_name': adaptee_name, }) if 'write' in access: self.h("""\ /** * Set the value of the exported D-Bus object property \\c %(name)s of type \\c %(type)s. * * Adaptees should export this property as a writable Qt property named * '%(adaptee_name)s' with type %(type)s. * %(docstring)s\ */ void %(settername)s(const %(type)s &newValue); """ % {'name': name, 'adaptee_name': adaptee_name, 'docstring': docstring, 'settername': settername, 'type': binding.val, }) self.b(""" void %(ifacename)s::%(settername)s(const %(type)s &newValue) { adaptee()->setProperty("%(adaptee_name)s", qVariantFromValue(newValue)); } """ % {'ifacename': ifacename, 'settername': settername, 'type': binding.val, 'adaptee_name': adaptee_name, }) def do_method(self, ifacename, method): name = method.getAttribute('name') adaptee_name = to_lower_camel_case(method.getAttribute('tp:name-for-bindings')) args = get_by_path(method, 'arg') argnames, argdocstrings, argbindings = extract_arg_or_member_info(args, self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') docstring = format_docstring(method, self.refs, ' * ').replace('*/', '*/') inargs = [] outargs = [] for i in xrange(len(args)): if args[i].getAttribute('direction') == 'out': outargs.append(i) else: inargs.append(i) assert argnames[i] != None, 'No argument name for input argument at index %d for method %s' % (i, name) if outargs: rettype = argbindings[outargs[0]].val else: rettype = 'void' params = [argbindings[i].inarg + ' ' + argnames[i] for i in inargs] params.append('const QDBusMessage& dbusMessage') params += [argbindings[i].outarg + ' ' + argnames[i] for i in outargs[1:]] params = ', '.join(params) if outargs: outargtypes = ', '.join([argbindings[i].val for i in outargs]) else: outargtypes = '' invokemethodargs = ', '.join(['Q_ARG(' + argbindings[i].val + ', ' + argnames[i] + ')' for i in inargs]) inparams = [argbindings[i].val for i in inargs] inparams.append("%s::%s::%sContextPtr" % (self.namespace, ifacename, name)) normalized_adaptee_params = ','.join(inparams) adaptee_params = [argbindings[i].inarg + ' ' + argnames[i] for i in inargs] adaptee_params.append('const %(namespace)s::%(ifacename)s::%(name)sContextPtr &context' % {'namespace': self.namespace, 'ifacename': ifacename, 'name': name}) adaptee_params = ', '.join(adaptee_params) self.h("""\ /** * Begins a call to the exported D-Bus method \\c %(name)s on this object. * * Adaptees should export this method as a Qt slot with the following signature: * void %(adaptee_name)s(%(adaptee_params)s); * * Implementations should call MethodInvocationContext::setFinished (or setFinishedWithError * accordingly) on the received \\a context object once the method has finished processing. * %(docstring)s\ * """ % {'name': name, 'adaptee_name': adaptee_name, 'adaptee_params': adaptee_params, 'rettype': rettype, 'docstring': docstring }) for i in inargs: if argdocstrings[i]: self.h("""\ * \\param %s %s\ """ % (argnames[i], argdocstrings[i])) for i in outargs[1:]: if argdocstrings[i]: self.h("""\ * \\param %s Output parameter %s\ """ % (argnames[i], argdocstrings[i])) if outargs: self.h("""\ * \\return %s\ """ % argdocstrings[outargs[0]]) self.h("""\ */ %(rettype)s %(name)s(%(params)s); """ % {'rettype': rettype, 'name': name, 'params': params }) self.b(""" %(rettype)s %(ifacename)s::%(name)s(%(params)s) { if (adaptee()->metaObject()->indexOfMethod("%(adaptee_name)s(%(normalized_adaptee_params)s)") < 0) { dbusConnection().send(dbusMessage.createErrorReply(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented"))); """ % {'rettype': rettype, 'ifacename': ifacename, 'name': name, 'adaptee_name': adaptee_name, 'normalized_adaptee_params': normalized_adaptee_params, 'params': params, }) if rettype != 'void': self.b("""\ return %(rettype)s(); """ % {'rettype': rettype}) else: self.b("""\ return; """) self.b("""\ } %(name)sContextPtr ctx = %(name)sContextPtr( new Tp::MethodInvocationContext< %(outargtypes)s >(dbusConnection(), dbusMessage)); """ % {'name': name, 'outargtypes': outargtypes, }) if invokemethodargs: self.b("""\ QMetaObject::invokeMethod(adaptee(), "%(adaptee_name)s", %(invokemethodargs)s, Q_ARG(%(namespace)s::%(ifacename)s::%(name)sContextPtr, ctx)); """ % {'namespace': self.namespace, 'ifacename': ifacename, 'name': name, 'adaptee_name': adaptee_name, 'invokemethodargs': invokemethodargs, }) else: self.b("""\ QMetaObject::invokeMethod(adaptee(), "%(lname)s", Q_ARG(%(namespace)s::%(ifacename)s::%(name)sContextPtr, ctx)); """ % {'namespace': self.namespace, 'ifacename': ifacename, 'name': name, 'lname': (name[0].lower() + name[1:]), }) if rettype != 'void': self.b("""\ return %(rettype)s(); """ % {'rettype': rettype}) self.b("}\n") def do_signal(self, signal): name = signal.getAttribute('name') adaptee_name = to_lower_camel_case(signal.getAttribute('tp:name-for-bindings')) argnames, argdocstrings, argbindings = extract_arg_or_member_info(get_by_path(signal, 'arg'), self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') params = ', '.join(['%s %s' % (binding.inarg, param_name) for binding, param_name in zip(argbindings, argnames)]) for i in xrange(len(argnames)): assert argnames[i] != None, 'Name missing from argument at index %d for signal %s' % (i, name) self.h("""\ /** * Represents the exported D-Bus signal \\c %(name)s on this object. * * Adaptees should export this signal as a Qt signal with the following signature: * void %(adaptee_name)s(%(params)s); * * The adaptee signal will be automatically relayed as a D-Bus signal once emitted. * """ % {'name': name, 'adaptee_name': adaptee_name, 'params': params }) for i in xrange(len(argnames)): assert argnames[i] != None, 'Name missing from argument at index %d for signal %s' % (i, name) if argdocstrings[i]: self.h("""\ * \\param %s %s\ """ % (argnames[i], argdocstrings[i])) self.h("""\ */ void %(name)s(%(params)s); """ % {'name': name, 'params': params }) def do_signals_connect(self, signals): for signal in signals: name = signal.getAttribute('name') adaptee_name = to_lower_camel_case(signal.getAttribute('tp:name-for-bindings')) _, _, argbindings = extract_arg_or_member_info(get_by_path(signal, 'arg'), self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') self.b("""\ connect(adaptee, SIGNAL(%(adaptee_name)s(%(params)s)), SIGNAL(%(name)s(%(params)s))); """ % {'name': name, 'adaptee_name': adaptee_name, 'params': ', '.join([binding.inarg for binding in argbindings]) }) def h(self, str): self.hs.append(str) def b(self, str): self.bs.append(str) def hb(self, str): self.h(str) self.b(str) if __name__ == '__main__': options, argv = gnu_getopt(argv[1:], '', ['group=', 'headerfile=', 'implfile=', 'namespace=', 'typesnamespace=', 'realinclude=', 'mocinclude=', 'prettyinclude=', 'extraincludes=', 'must-define=', 'visibility=', 'ifacexml=', 'specxml=']) Generator(dict(options))() telepathy-qt-0.9.6.1/tools/check-whitespace.sh0000644000175100017520000000032312530423576022623 0ustar00kaffeinekaffeine00000000000000#!/bin/sh fail=0 if grep -n ' $' "$@" then echo "^^^ The above files contain unwanted trailing spaces" fail=1 fi if grep -n ' ' "$@" then echo "^^^ The above files contain tabs" fail=1 fi exit $fail telepathy-qt-0.9.6.1/tools/CMakeLists.txt0000644000175100017520000001127112530423576021624 0ustar00kaffeinekaffeine00000000000000# Some useful commands add_custom_command(OUTPUT FIXME.out COMMAND egrep ARGS -A 5 '[F]IXME|[T]ODO|[X]XX' ${CMAKE_SOURCE_DIR}/TelepathyQt/*.[ch]* ${CMAKE_SOURCE_DIR}/TelepathyQt/*.[ch]* > FIXME.out || true) add_custom_target(check-local DEPENDS FIXME.out) execute_process(COMMAND ${SH} tools/git-which-branch.sh misc | tr -d '\n' | tr -C "[:alnum:]" _ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_BRANCH_CURRENT) if (GIT_BRANCH_CURRENT) string(LENGTH ${GIT_BRANCH_CURRENT} HAVE_GIT_BRANCH) if (HAVE_GIT_BRANCH) string(REPLACE "\n" "" GIT_BRANCH_CURRENT ${GIT_BRANCH_CURRENT}) set(UPLOAD_BRANCH_TO people.freedesktop.org:public_html/telepathy-qt) add_custom_target(upload-branch-docs rsync -rtzvPp --chmod=a+rX doc/html/ ${UPLOAD_BRANCH_TO}-${GIT_BRANCH_CURRENT} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) add_dependencies(upload-branch-docs doxygen-doc) endif (HAVE_GIT_BRANCH) endif (GIT_BRANCH_CURRENT) if (PERL_FOUND) add_custom_target(maintainer-fix-qt-links-in-docs ${PERL_EXECUTABLE} doc/html/installdox -l qt.tags@http://doc.qt.nokia.com/latest/ doc/html/*.html WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) add_dependencies(maintainer-fix-qt-links-in-docs doxygen-doc _maintainer-upload-release-check) endif (PERL_FOUND) add_custom_target(maintainer-upload-release-docs rsync -rtOvzPp --chmod=Dg+s,ug+rwX,o=rX doc/html/ telepathy.freedesktop.org:/srv/telepathy.freedesktop.org/www/doc/telepathy-qt/ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) if (PERL_FOUND) add_dependencies(maintainer-upload-release-docs maintainer-fix-qt-links-in-docs) else (PERL_FOUND) add_dependencies(maintainer-upload-release-docs doxygen-doc _maintainer-upload-release-check) endif (PERL_FOUND) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/maintainer-upload-release-check.sh " #!/bin/sh case ${PACKAGE_VERSION} in (*.*.*.*) echo \"${PACKAGE_VERSION} is not a release\" >&2; exit 2; ;; esac test -f ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz if ! test -f ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz.asc; then gpg --detach-sign -a ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz; fi; gpg --verify ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz.asc ") add_custom_target(_maintainer-upload-release-check ${SH} ${CMAKE_CURRENT_BINARY_DIR}/maintainer-upload-release-check.sh) add_custom_target(maintainer-upload-release rsync -vzP ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz telepathy.freedesktop.org:/srv/telepathy.freedesktop.org/www/releases/${PACKAGE_NAME}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz COMMAND rsync -vzP ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz.asc telepathy.freedesktop.org:/srv/telepathy.freedesktop.org/www/releases/${PACKAGE_NAME}/${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.gz.asc WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) add_dependencies(maintainer-upload-release _maintainer-upload-release-check maintainer-upload-release-docs) set(toolchain_files c-constants-gen.py check-misc.sh check-whitespace.sh git-which-branch.sh glib-ginterface-gen.py glib-gtypes-generator.py glib-interfaces-gen.py glib-signals-marshal-gen.py libtpcodegen.py libglibcodegen.py libqtcodegen.py qt-client-gen.py qt-constants-gen.py qt-types-gen.py manager-file.py with-session-bus.sh xincludator.py ) string(REPLACE "." " " sh_toolchain_files ${toolchain_files}) set(TELEPATHY_SPEC_SRCDIR ${CMAKE_SOURCE_DIR}/../telepathy-spec) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/maintainer-update-from-telepathy-spec.sh " #!/bin/sh set -e cd ${CMAKE_SOURCE_DIR} for x in ${sh_toolchain_files}; do if test -f ${TELEPATHY_SPEC_SRCDIR}/tools/$$x; then cp ${TELEPATHY_SPEC_SRCDIR}/tools/$$x $$x; fi; done ") add_custom_target(maintainer-update-from-telepathy-spec ${SH} ${CMAKE_CURRENT_BINARY_DIR}/maintainer-update-from-telepathy-spec.sh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) set(TELEPATHY_GLIB_SRCDIR ${CMAKE_SOURCE_DIR}/../telepathy-glib) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/maintainer-update-from-telepathy-glib.sh " #!/bin/sh set -e cd ${CMAKE_SOURCE_DIR} for x in ${sh_toolchain_files}; do if test -f ${TELEPATHY_GLIB_SRCDIR}/tools/$$x; then cp ${TELEPATHY_GLIB_SRCDIR}/tools/$$x $$x; fi; done ") add_custom_target(maintainer-update-from-telepathy-glib ${SH} ${CMAKE_CURRENT_BINARY_DIR}/maintainer-update-from-telepathy-glib.sh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) telepathy-qt-0.9.6.1/tools/qt-types-gen.py0000644000175100017520000004120312530423576021771 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # # Copyright (C) 2008 Collabora Limited # Copyright (C) 2008 Nokia Corporation # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import sys import xml.dom.minidom from getopt import gnu_getopt from libtpcodegen import NS_TP, get_descendant_text, get_by_path from libqtcodegen import binding_from_usage, binding_from_decl, extract_arg_or_member_info, format_docstring, gather_externals, gather_custom_lists, get_qt_name, get_headerfile_cmd, RefRegistry class BrokenSpecException(Exception): pass class MissingTypes(BrokenSpecException): def __init__(self, types): super(MissingTypes, self).__init__(self) self.types = types def __str__(self): typelist = ''.join([' %s' % t for t in self.types]) return "The following types were used, but not provided by the spec " \ "or by declarations in all.xml:\n%s" % typelist class UnresolvedDependency(BrokenSpecException): def __init__(self, child, parent): super(UnresolvedDependency, self).__init__(self) self.child = child self.parent = parent def __str__(self): return 'Type %s has unresolved dependency on %s' % ( self.child, self.parent) class EmptyStruct(BrokenSpecException): def __init__(self, struct_name): super(EmptyStruct, self).__init__(self) self.struct_name = struct_name def __str__(self): return 'tp:struct %s should have some members' % self.struct_name class MalformedMapping(BrokenSpecException): def __init__(self, mapping_name, members): super(MalformedMapping, self).__init__(self) self.mapping_name = mapping_name self.members = members def __str__(self): return 'tp:mapping %s should have 2 members, not %u' % ( self.mapping_name, self.members) class WTF(BrokenSpecException): def __init__(self, element_name): super(BrokenSpecException, self).__init__(self) self.element_name = element_name def __str__(self): return 'What the hell is a tp:%s?' % self.element_name class DepInfo: def __init__(self, el, externals, custom_lists): self.el = el name = get_by_path(el, '@name') array_name = get_by_path(el, '@array-name') array_depth = get_by_path(el, '@array-depth') if array_depth: array_depth = int(array_depth) else: array_depth = None self.binding = binding_from_decl(name, array_name, array_depth) self.deps = [] for member in get_by_path(el, 'member'): sig = member.getAttribute('type') tptype = member.getAttributeNS(NS_TP, 'type') if (sig, tptype) in externals: continue if tptype.endswith('[]'): tptype = tptype[:-2] binding = binding_from_usage(sig, tptype, custom_lists) if binding.custom_type: self.deps.append(binding.val) self.revdeps = [] class Generator(object): def __init__(self, opts): try: self.namespace = opts['--namespace'] self.declfile = opts['--declfile'] self.implfile = opts['--implfile'] self.realinclude = opts['--realinclude'] self.prettyinclude = opts.get('--prettyinclude', self.realinclude) self.extraincludes = opts.get('--extraincludes', None) self.must_define = opts.get('--must-define', None) self.visibility = opts.get('--visibility', '') dom = xml.dom.minidom.parse(opts['--specxml']) except KeyError, k: assert False, 'Missing required parameter %s' % k.args[0] self.decls = [] self.impls = [] self.spec = get_by_path(dom, "spec")[0] self.externals = gather_externals(self.spec) self.custom_lists = gather_custom_lists(self.spec, self.namespace) self.required_custom = [] self.required_arrays = [] self.to_declare = [] self.depinfos = {} self.refs = RefRegistry(self.spec) def __call__(self): # Emit comment header self.both('/* Generated from ') self.both(get_descendant_text(get_by_path(self.spec, 'title'))) version = get_by_path(self.spec, "version") if version: self.both(', version ' + get_descendant_text(version)) self.both(' */\n') # Gather info on available and required types self.gather_required() if self.must_define: self.decl('\n') self.decl('#ifndef %s\n' % self.must_define) self.decl('#error %s\n' % self.must_define) self.decl('#endif') self.decl('\n') if self.extraincludes: for include in self.extraincludes.split(','): self.decl('#include %s\n' % include) self.decl(""" #include #include #include #include #include #include #include #include #include #include #include #include /** * \\addtogroup typesconstants Types and constants * * Enumerated, flag, structure, list and mapping types and utility constants. */ /** * \\defgroup struct Structure types * \\ingroup typesconstants * * Structure types generated from the specification. */ /** * \\defgroup list List types * \\ingroup typesconstants * * List types generated from the specification. */ /** * \\defgroup mapping Mapping types * \\ingroup typesconstants * * Mapping types generated from the specification. */ """) if self.must_define: self.impl(""" #define %s""" % self.must_define) self.impl(""" #include "%s" """ % self.realinclude) self.both(""" namespace %s { """ % self.namespace) # Emit type definitions for types provided in the spec self.provide_all() # Emit type registration function self.decl(""" } // namespace %s """ % self.namespace) self.impl("""\ TP_QT_NO_EXPORT void _registerTypes() { static bool registered = false; if (registered) return; registered = true; """) # Emit Qt metatype declarations self.to_declare.sort() for metatype in self.to_declare: self.decl('Q_DECLARE_METATYPE(%s)\n' % metatype) self.impl(' qDBusRegisterMetaType<%s>();\n' % ((metatype.endswith('>') and metatype + ' ') or metatype)) self.impl("""\ } } // namespace %s """ % self.namespace) # Write output to files open(self.declfile, 'w').write(''.join(self.decls).encode("utf-8")) open(self.implfile, 'w').write(''.join(self.impls).encode("utf-8")) def decl(self, str): self.decls.append(str) def impl(self, str): self.impls.append(str) def both(self, str): self.decl(str) self.impl(str) def gather_required(self): members = self.spec.getElementsByTagNameNS(NS_TP, 'member') args = self.spec.getElementsByTagName('arg') props = self.spec.getElementsByTagName('property') tp_props = self.spec.getElementsByTagNameNS(NS_TP, 'property') for requirer in members + args + props + tp_props: sig = requirer.getAttribute('type') tptype = requirer.getAttributeNS(NS_TP, 'type') external = (sig, tptype) in self.externals binding = binding_from_usage(sig, tptype, self.custom_lists, external) if binding.custom_type and binding.val not in self.required_custom: self.required_custom.append(binding.val) if not binding.custom_type and binding.array_of and (binding.val, binding.array_of) not in self.required_arrays: self.required_arrays.append((binding.val, binding.array_of)) def provide_all(self): self.required_arrays.sort() for (val, array_of) in self.required_arrays: real = 'QList<%s>' % array_of self.decl("""\ /** * \\struct %s * \\ingroup list %s\ * * Generic list type with %s elements. Convertible with * %s, but needed to have a discrete type in the Qt type system. */ """ % (val, get_headerfile_cmd(self.realinclude, self.prettyinclude), array_of, real)) self.decl(self.faketype(val, real)) self.to_declare.append(self.namespace + '::' + val) structs = self.spec.getElementsByTagNameNS(NS_TP, 'struct') mappings = self.spec.getElementsByTagNameNS(NS_TP, 'mapping') exts = self.spec.getElementsByTagNameNS(NS_TP, 'external-type') for deptype in structs + mappings: info = DepInfo(deptype, self.externals, self.custom_lists) self.depinfos[info.binding.val] = info leaves = [] next_leaves = [] for val, depinfo in self.depinfos.iteritems(): leaf = True for dep in depinfo.deps: if not self.depinfos.has_key(dep): raise UnresolvedDependency(val, dep) leaf = False self.depinfos[dep].revdeps.append(val) if leaf: next_leaves.append(val) while leaves or next_leaves: if not leaves: leaves = next_leaves leaves.sort() next_leaves = [] val = leaves.pop(0) depinfo = self.depinfos[val] self.output_by_depinfo(depinfo) for revdep in depinfo.revdeps: revdepinfo = self.depinfos[revdep] revdepinfo.deps.remove(val) if not revdepinfo.deps: next_leaves.append(revdep) del self.depinfos[val] for provider in structs + mappings + exts: name = get_by_path(provider, '@name') array_name = get_by_path(provider, '@array-name') array_depth = get_by_path(provider, '@array-depth') if array_depth: array_depth = int(array_depth) else: array_depth = None sig = provider.getAttribute('type') tptype = provider.getAttribute('name') external = (sig, tptype) in self.externals binding = binding_from_decl(name, array_name, array_depth, external) self.provide(binding.val) if binding.array_val: self.provide(binding.array_val) d = binding.array_depth while d > 1: d -= 1 self.provide(binding.array_val + ('List' * d)) if self.required_custom: raise MissingTypes(self.required_custom) def provide(self, type): if type in self.required_custom: self.required_custom.remove(type) def output_by_depinfo(self, depinfo): names, docstrings, bindings = extract_arg_or_member_info(get_by_path(depinfo.el, 'member'), self.custom_lists, self.externals, None, self.refs, ' * ', (' /**', ' */')) members = len(names) if depinfo.el.localName == 'struct': if members == 0: raise EmptyStruct(depinfo.binding.val) self.decl("""\ /** * \\struct %(name)s * \\ingroup struct %(headercmd)s\ * * Structure type generated from the specification. %(docstring)s\ */ struct %(visibility)s %(name)s { """ % { 'name' : depinfo.binding.val, 'headercmd': get_headerfile_cmd(self.realinclude, self.prettyinclude), 'docstring' : format_docstring(depinfo.el, self.refs), 'visibility': self.visibility, }) for i in xrange(members): self.decl("""\ %s\ %s %s; """ % (docstrings[i], bindings[i].val, names[i])) self.decl("""\ }; """) self.both('%s bool operator==(%s v1, %s v2)' % (self.visibility, depinfo.binding.inarg, depinfo.binding.inarg)) self.decl(';\n') self.impl(""" {""") if (bindings[0].val != 'QDBusVariant'): self.impl(""" return ((v1.%s == v2.%s)""" % (names[0], names[0])) else: self.impl(""" return ((v1.%s.variant() == v2.%s.variant())""" % (names[0], names[0])) for i in xrange(1, members): if (bindings[i].val != 'QDBusVariant'): self.impl(""" && (v1.%s == v2.%s)""" % (names[i], names[i])) else: self.impl(""" && (v1.%s.variant() == v2.%s.variant())""" % (names[i], names[i])) self.impl(""" ); } """) self.decl('inline bool operator!=(%s v1, %s v2)' % (depinfo.binding.inarg, depinfo.binding.inarg)) self.decl(""" { return !operator==(v1, v2); } """) self.both('%s QDBusArgument& operator<<(QDBusArgument& arg, %s val)' % (self.visibility, depinfo.binding.inarg)) self.decl(';\n') self.impl(""" { arg.beginStructure(); arg << %s; arg.endStructure(); return arg; } """ % ' << '.join(['val.' + name for name in names])) self.both('%s const QDBusArgument& operator>>(const QDBusArgument& arg, %s val)' % (self.visibility, depinfo.binding.outarg)) self.decl(';\n\n') self.impl(""" { arg.beginStructure(); arg >> %s; arg.endStructure(); return arg; } """ % ' >> '.join(['val.' + name for name in names])) elif depinfo.el.localName == 'mapping': if members != 2: raise MalformedMapping(depinfo.binding.val, members) realtype = 'QMap<%s, %s>' % (bindings[0].val, (bindings[1].val.endswith('>') and bindings[1].val + ' ') or bindings[1].val) self.decl("""\ /** * \\struct %s * \\ingroup mapping %s\ * * Mapping type generated from the specification. Convertible with * %s, but needed to have a discrete type in the Qt type system. %s\ */ """ % (depinfo.binding.val, get_headerfile_cmd(self.realinclude, self.prettyinclude), realtype, format_docstring(depinfo.el, self.refs))) self.decl(self.faketype(depinfo.binding.val, realtype)) else: raise WTF(depinfo.el.localName) self.to_declare.append(self.namespace + '::' + depinfo.binding.val) if depinfo.binding.array_val: self.to_declare.append('%s::%s' % (self.namespace, depinfo.binding.array_val)) self.decl("""\ /** * \\ingroup list %s\ * * Array of %s values. */ typedef %s %s; """ % (get_headerfile_cmd(self.realinclude, self.prettyinclude), depinfo.binding.val, 'QList<%s>' % depinfo.binding.val, depinfo.binding.array_val)) i = depinfo.binding.array_depth while i > 1: i -= 1 self.to_declare.append('%s::%s%s' % (self.namespace, depinfo.binding.array_val, ('List' * i))) list_of = depinfo.binding.array_val + ('List' * (i-1)) self.decl("""\ /** * \\ingroup list %s\ * * Array of %s values. */ typedef QList<%s> %sList; """ % (get_headerfile_cmd(self.realinclude, self.prettyinclude), list_of, list_of, list_of)) def faketype(self, fake, real): return """\ struct %(visibility)s %(fake)s : public %(real)s { inline %(fake)s() : %(real)s() {} inline %(fake)s(const %(real)s& a) : %(real)s(a) {} inline %(fake)s& operator=(const %(real)s& a) { *(static_cast<%(real)s*>(this)) = a; return *this; } }; """ % {'fake' : fake, 'real' : real, 'visibility': self.visibility} if __name__ == '__main__': options, argv = gnu_getopt(sys.argv[1:], '', ['declfile=', 'implfile=', 'realinclude=', 'prettyinclude=', 'extraincludes=', 'must-define=', 'namespace=', 'specxml=', 'visibility=', ]) try: Generator(dict(options))() except BrokenSpecException as e: print >> sys.stderr, 'Your spec is broken, dear developer! %s' % e sys.exit(42) telepathy-qt-0.9.6.1/tools/libtpcodegen.py0000644000175100017520000001472212530423576022101 0ustar00kaffeinekaffeine00000000000000"""Library code for language-independent D-Bus-related code generation. The master copy of this library is in the telepathy-glib repository - please make any changes there. """ # Copyright (C) 2006-2008 Collabora Limited # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from string import ascii_letters, digits NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" _ASCII_ALNUM = ascii_letters + digits def cmp_by_name(node1, node2): return cmp(node1.getAttributeNode("name").nodeValue, node2.getAttributeNode("name").nodeValue) def escape_as_identifier(identifier): """Escape the given string to be a valid D-Bus object path or service name component, using a reversible encoding to ensure uniqueness. The reversible encoding is as follows: * The empty string becomes '_' * Otherwise, each non-alphanumeric character is replaced by '_' plus two lower-case hex digits; the same replacement is carried out on the first character, if it's a digit """ # '' -> '_' if not identifier: return '_' # A bit of a fast path for strings which are already OK. # We deliberately omit '_' because, for reversibility, that must also # be escaped. if (identifier.strip(_ASCII_ALNUM) == '' and identifier[0] in ascii_letters): return identifier # The first character may not be a digit if identifier[0] not in ascii_letters: ret = ['_%02x' % ord(identifier[0])] else: ret = [identifier[0]] # Subsequent characters may be digits or ASCII letters for c in identifier[1:]: if c in _ASCII_ALNUM: ret.append(c) else: ret.append('_%02x' % ord(c)) return ''.join(ret) def get_by_path(element, path): branches = path.split('/') branch = branches[0] # Is the current branch an attribute, if so, return the attribute value if branch[0] == '@': return element.getAttribute(branch[1:]) # Find matching children for the branch children = [] if branch == '..': children.append(element.parentNode) else: for x in element.childNodes: if x.localName == branch: children.append(x) ret = [] # If this is not the last path element, recursively gather results from # children if len(branches) > 1: for x in children: add = get_by_path(x, '/'.join(branches[1:])) if isinstance(add, list): ret += add else: return add else: ret = children return ret def get_docstring(element): docstring = None for x in element.childNodes: if x.namespaceURI == NS_TP and x.localName == 'docstring': docstring = x if docstring is not None: docstring = docstring.toxml().replace('\n', ' ').strip() if docstring.startswith(''): docstring = docstring[14:].lstrip() if docstring.endswith(''): docstring = docstring[:-15].rstrip() if docstring in ('', ''): docstring = '' return docstring def get_deprecated(element): text = [] for x in element.childNodes: if hasattr(x, 'data'): text.append(x.data.replace('\n', ' ').strip()) else: # This caters for tp:dbus-ref elements, but little else. if x.childNodes and hasattr(x.childNodes[0], 'data'): text.append(x.childNodes[0].data.replace('\n', ' ').strip()) return ' '.join(text) def get_descendant_text(element_or_elements): if not element_or_elements: return '' if isinstance(element_or_elements, list): return ''.join(map(get_descendant_text, element_or_elements)) parts = [] for x in element_or_elements.childNodes: if x.nodeType == x.TEXT_NODE: parts.append(x.nodeValue) elif x.nodeType == x.ELEMENT_NODE: parts.append(get_descendant_text(x)) else: pass return ''.join(parts) class _SignatureIter: """Iterator over a D-Bus signature. Copied from dbus-python 0.71 so we can run genginterface in a limited environment with only Python (like Scratchbox). """ def __init__(self, string): self.remaining = string def next(self): if self.remaining == '': raise StopIteration signature = self.remaining block_depth = 0 block_type = None end = len(signature) for marker in range(0, end): cur_sig = signature[marker] if cur_sig == 'a': pass elif cur_sig == '{' or cur_sig == '(': if block_type == None: block_type = cur_sig if block_type == cur_sig: block_depth = block_depth + 1 elif cur_sig == '}': if block_type == '{': block_depth = block_depth - 1 if block_depth == 0: end = marker break elif cur_sig == ')': if block_type == '(': block_depth = block_depth - 1 if block_depth == 0: end = marker break else: if block_depth == 0: end = marker break end = end + 1 self.remaining = signature[end:] return Signature(signature[0:end]) class Signature(str): """A string, iteration over which is by D-Bus single complete types rather than characters. """ def __iter__(self): return _SignatureIter(self) def xml_escape(s): s = s.replace('&', '&').replace("'", ''').replace('"', '"') return s.replace('<', '<').replace('>', '>') telepathy-qt-0.9.6.1/tools/telepathy-glib.supp0000644000175100017520000001451312530423576022711 0ustar00kaffeinekaffeine00000000000000# Valgrind error suppression file # ============================= libc ================================== { ld.so initialization + selinux Memcheck:Leak ... fun:_dl_init obj:/lib/ld-*.so } { dlopen initialization, triggered by handle-leak-debug code Memcheck:Leak ... fun:__libc_dlopen_mode fun:init fun:backtrace fun:handle_leak_debug_bt fun:dynamic_ensure_handle fun:tp_handle_ensure } # default.supp has these for 2.10, but they're too specific { Debian libc6 (2.10.x, 2.11.x) stripped dynamic linker Memcheck:Cond fun:index fun:expand_dynamic_string_token fun:_dl_map_object fun:map_doit fun:_dl_catch_error fun:do_preload fun:dl_main fun:_dl_sysdep_start fun:_dl_start obj:/lib/ld-*.so } { Debian libc6 (2.9.x - 2.11.x) stripped dynamic linker Memcheck:Cond fun:_dl_relocate_object fun:dl_main fun:_dl_sysdep_start fun:_dl_start obj:/lib/ld-*.so } { ld.so initialization on glibc 2.9 Memcheck:Cond fun:strlen fun:_dl_init_paths fun:dl_main fun:_dl_sysdep_start fun:_dl_start obj:/lib/ld-2.9.so } # ======================= libselinux on Debian amd64 ===================== { I have no idea what SELinux is doing but it's not my problem Memcheck:Cond ... obj:/lib/libselinux.so.1 obj:/lib/libselinux.so.1 obj:/lib/libselinux.so.1 } { I have no idea what SELinux is doing but it's not my problem Memcheck:Value8 ... obj:/lib/libselinux.so.1 obj:/lib/libselinux.so.1 obj:/lib/libselinux.so.1 } { I have no idea what SELinux is doing but it's not my problem Memcheck:Leak ... obj:/lib/libselinux.so.1 obj:/lib/libselinux.so.1 obj:/lib/libselinux.so.1 } # ============================= GLib ================================== { g_set_prgname copies its argument Memcheck:Leak ... fun:g_set_prgname } { one g_get_charset per child^Wprocess Memcheck:Leak ... fun:g_get_charset } { one g_get_home_dir per process Memcheck:Leak ... fun:g_get_home_dir } { GQuarks can't be freed Memcheck:Leak ... fun:g_quark_from_static_string } { GQuarks can't be freed Memcheck:Leak ... fun:g_quark_from_string } { interned strings can't be freed Memcheck:Leak ... fun:g_intern_string } { interned strings can't be freed Memcheck:Leak ... fun:g_intern_static_string } { shared global default g_main_context Memcheck:Leak ... fun:g_main_context_new fun:g_main_context_default } { GTest initialization Memcheck:Leak ... fun:g_test_init fun:main } { GTest admin Memcheck:Leak ... fun:g_test_add_vtable } { GTest pseudorandomness Memcheck:Leak ... fun:g_rand_new_with_seed_array fun:test_run_seed ... fun:g_test_run } { GSLice initialization Memcheck:Leak ... fun:g_malloc0 fun:g_slice_init_nomessage fun:g_slice_alloc } # ============================= GObject =============================== { g_type_init Memcheck:Leak ... fun:g_type_init } { g_type_init_with_debug_flags Memcheck:Leak ... fun:g_type_init_with_debug_flags } { g_type_register_static Memcheck:Leak ... fun:g_type_register_static } { g_type_add_interface_static Memcheck:Leak ... fun:g_type_add_interface_static } { initialization of interfaces Memcheck:Leak ... fun:type_iface_vtable_base_init_Wm fun:g_type_class_ref } # ============================= GIO =================================== { GIO init Memcheck:Leak ... fun:g_inet_address_class_intern_init } { g_simple_async_result class Memcheck:Leak ... fun:g_type_class_ref ... fun:g_simple_async_result_new } # ============================= dbus-glib ============================= { registering marshallers is permanent Memcheck:Leak ... fun:dbus_g_object_register_marshaller_array fun:dbus_g_object_register_marshaller } { dbus-glib specialized GTypes are permanent Memcheck:Leak ... fun:dbus_g_type_specialized_init } { libdbus shared connection Memcheck:Leak ... fun:dbus_g_bus_get } { dbus-gobject registrations aren't freed unless we fall off the bus Memcheck:Leak ... fun:g_slist_append fun:dbus_g_connection_register_g_object } { DBusGProxy slots aren't freed unless we fall off the bus Memcheck:Leak ... fun:dbus_connection_allocate_data_slot ... fun:dbus_g_proxy_constructor } { error registrations are for life, not just for Christmas Memcheck:Leak ... fun:dbus_g_error_domain_register } { DBusGProxy class init Memcheck:Leak ... fun:dbus_g_proxy_class_init } # ============================= telepathy-glib ======================== { tp_dbus_daemon_constructor @daemons once per DBusConnection Memcheck:Leak ... fun:g_slice_alloc fun:tp_dbus_daemon_constructor } { tp_proxy_subclass_add_error_mapping refs the enum Memcheck:Leak ... fun:g_type_class_ref fun:tp_proxy_subclass_add_error_mapping } { tp_proxy_or_subclass_hook_on_interface_add never frees its list Memcheck:Leak ... fun:tp_proxy_or_subclass_hook_on_interface_add } { tp_dbus_daemon_constructor filter not freed til we fall off the bus Memcheck:Leak ... fun:dbus_connection_add_filter fun:tp_dbus_daemon_constructor } { tp_g_socket_address_from_variant reffing GNIO types Memcheck:Leak ... fun:g_type_class_ref ... fun:tp_g_socket_address_from_variant } { creating classes for DBusGProxy Memcheck:Leak ... fun:g_type_class_ref ... fun:g_object_new ... fun:tp_proxy_borrow_interface_by_id } { creating classes for tp_dbus_daemon_new Memcheck:Leak ... fun:g_type_class_ref ... fun:g_object_new ... fun:tp_dbus_daemon_new } { creating classes for TpCHannel Memcheck:Leak ... fun:g_type_class_ref ... fun:g_object_new ... fun:tp_channel_new } { creating a boxed type to use in TpCapabilities Memcheck:Leak ... fun:g_type_class_ref ... fun:g_param_spec_boxed fun:tp_capabilities_class_intern_init } # ============================= questionable ========================== { creating classes for instances (this is a pretty big hammer) Memcheck:Leak ... fun:g_type_class_ref ... fun:g_type_create_instance ... fun:g_param_spec_string } telepathy-qt-0.9.6.1/tools/git-which-branch.sh0000644000175100017520000000125312530423576022535 0ustar00kaffeinekaffeine00000000000000#!/bin/sh # git-which-branch.sh - output the name of the current git branch # # The canonical location of this program is the telepathy-spec tools/ # directory, please synchronize any changes with that copy. # # Copyright (C) 2008 Collabora Ltd. # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. default="$1" if { ref="`git symbolic-ref HEAD 2>/dev/null`"; }; then echo ${ref#refs/heads/} exit 0 fi if test -n "$default"; then echo "$default" >/dev/null exit 0 fi echo "no git branch found" >&2 exit 1 telepathy-qt-0.9.6.1/tools/c-constants-gen.py0000644000175100017520000001120012530423576022431 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python from sys import argv, stdout, stderr import xml.dom.minidom from libglibcodegen import NS_TP, get_docstring, \ get_descendant_text, get_by_path class Generator(object): def __init__(self, prefix, dom): self.prefix = prefix + '_' self.spec = get_by_path(dom, "spec")[0] def __call__(self): self.do_header() self.do_body() self.do_footer() def write(self, code): stdout.write(code.encode('utf-8')) # Header def do_header(self): self.write('/* Generated from ') self.write(get_descendant_text(get_by_path(self.spec, 'title'))) version = get_by_path(self.spec, "version") if version: self.write(', version ' + get_descendant_text(version)) self.write('\n\n') for copyright in get_by_path(self.spec, 'copyright'): self.write(get_descendant_text(copyright)) self.write('\n') self.write(get_descendant_text(get_by_path(self.spec, 'license'))) self.write('\n') self.write(get_descendant_text(get_by_path(self.spec, 'docstring'))) self.write(""" */ #ifdef __cplusplus extern "C" { #endif \n""") # Body def do_body(self): for elem in self.spec.getElementsByTagNameNS(NS_TP, '*'): if elem.localName == 'flags': self.do_flags(elem) elif elem.localName == 'enum': self.do_enum(elem) def do_flags(self, flags): name = flags.getAttribute('plural') or flags.getAttribute('name') value_prefix = flags.getAttribute('singular') or \ flags.getAttribute('value-prefix') or \ flags.getAttribute('name') self.write("""\ /** * %s: """ % (self.prefix + name).replace('_', '')) for flag in get_by_path(flags, 'flag'): self.do_gtkdoc(flag, value_prefix) self.write(' *\n') docstrings = get_by_path(flags, 'docstring') if docstrings: self.write("""\ * * """ % get_descendant_text(docstrings).replace('\n', ' ')) self.write("""\ * Bitfield/set of flags generated from the Telepathy specification. */ typedef enum { """) for flag in get_by_path(flags, 'flag'): self.do_val(flag, value_prefix) self.write("""\ } %s; """ % (self.prefix + name).replace('_', '')) def do_enum(self, enum): name = enum.getAttribute('singular') or enum.getAttribute('name') value_prefix = enum.getAttribute('singular') or \ enum.getAttribute('value-prefix') or \ enum.getAttribute('name') name_plural = enum.getAttribute('plural') or \ enum.getAttribute('name') + 's' self.write("""\ /** * %s: """ % (self.prefix + name).replace('_', '')) vals = get_by_path(enum, 'enumvalue') for val in vals: self.do_gtkdoc(val, value_prefix) self.write(' *\n') docstrings = get_by_path(enum, 'docstring') if docstrings: self.write("""\ * * """ % get_descendant_text(docstrings).replace('\n', ' ')) self.write("""\ * Bitfield/set of flags generated from the Telepathy specification. */ typedef enum { """) for val in vals: self.do_val(val, value_prefix) self.write("""\ } %(mixed-name)s; /** * NUM_%(upper-plural)s: * * 1 higher than the highest valid value of #%(mixed-name)s. */ #define NUM_%(upper-plural)s (%(last-val)s+1) """ % {'mixed-name' : (self.prefix + name).replace('_', ''), 'upper-plural' : (self.prefix + name_plural).upper(), 'last-val' : vals[-1].getAttribute('value')}) def do_val(self, val, value_prefix): name = val.getAttribute('name') suffix = val.getAttribute('suffix') use_name = (self.prefix + value_prefix + '_' + \ (suffix or name)).upper() assert not (name and suffix) or name == suffix, \ 'Flag/enumvalue name %s != suffix %s' % (name, suffix) self.write(' %s = %s,\n' % (use_name, val.getAttribute('value'))) def do_gtkdoc(self, node, value_prefix): self.write(' * @') self.write((self.prefix + value_prefix + '_' + node.getAttribute('suffix')).upper()) self.write(': \n') # Footer def do_footer(self): self.write(""" #ifdef __cplusplus } #endif """) if __name__ == '__main__': argv = argv[1:] Generator(argv[0], xml.dom.minidom.parse(argv[1]))() telepathy-qt-0.9.6.1/tools/libglibcodegen.py0000644000175100017520000001456312530423576022376 0ustar00kaffeinekaffeine00000000000000"""Library code for GLib/D-Bus-related code generation. The master copy of this library is in the telepathy-glib repository - please make any changes there. """ # Copyright (C) 2006-2008 Collabora Limited # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from libtpcodegen import NS_TP, \ Signature, \ cmp_by_name, \ escape_as_identifier, \ get_by_path, \ get_descendant_text, \ get_docstring, \ xml_escape, \ get_deprecated def dbus_gutils_wincaps_to_uscore(s): """Bug-for-bug compatible Python port of _dbus_gutils_wincaps_to_uscore which gets sequences of capital letters wrong in the same way. (e.g. in Telepathy, SendDTMF -> send_dt_mf) """ ret = '' for c in s: if c >= 'A' and c <= 'Z': length = len(ret) if length > 0 and (length < 2 or ret[length-2] != '_'): ret += '_' ret += c.lower() else: ret += c return ret def signal_to_marshal_type(signal): """ return a list of strings indicating the marshalling type for this signal. """ mtype=[] for i in signal.getElementsByTagName("arg"): name =i.getAttribute("name") type = i.getAttribute("type") mtype.append(type_to_gtype(type)[2]) return mtype _glib_marshallers = ['VOID', 'BOOLEAN', 'CHAR', 'UCHAR', 'INT', 'STRING', 'UINT', 'LONG', 'ULONG', 'ENUM', 'FLAGS', 'FLOAT', 'DOUBLE', 'STRING', 'PARAM', 'BOXED', 'POINTER', 'OBJECT', 'UINT_POINTER'] def signal_to_marshal_name(signal, prefix): mtype = signal_to_marshal_type(signal) if len(mtype): name = '_'.join(mtype) else: name = 'VOID' if name in _glib_marshallers: return 'g_cclosure_marshal_VOID__' + name else: return prefix + '_marshal_VOID__' + name def method_to_glue_marshal_name(method, prefix): mtype = [] for i in method.getElementsByTagName("arg"): if i.getAttribute("direction") != "out": type = i.getAttribute("type") mtype.append(type_to_gtype(type)[2]) mtype.append('POINTER') name = '_'.join(mtype) if name in _glib_marshallers: return 'g_cclosure_marshal_VOID__' + name else: return prefix + '_marshal_VOID__' + name def type_to_gtype(s): if s == 'y': #byte return ("guchar ", "G_TYPE_UCHAR","UCHAR", False) elif s == 'b': #boolean return ("gboolean ", "G_TYPE_BOOLEAN","BOOLEAN", False) elif s == 'n': #int16 return ("gint ", "G_TYPE_INT","INT", False) elif s == 'q': #uint16 return ("guint ", "G_TYPE_UINT","UINT", False) elif s == 'i': #int32 return ("gint ", "G_TYPE_INT","INT", False) elif s == 'u': #uint32 return ("guint ", "G_TYPE_UINT","UINT", False) elif s == 'x': #int64 return ("gint64 ", "G_TYPE_INT64","INT64", False) elif s == 't': #uint64 return ("guint64 ", "G_TYPE_UINT64","UINT64", False) elif s == 'd': #double return ("gdouble ", "G_TYPE_DOUBLE","DOUBLE", False) elif s == 's': #string return ("gchar *", "G_TYPE_STRING", "STRING", True) elif s == 'g': #signature - FIXME return ("gchar *", "DBUS_TYPE_G_SIGNATURE", "STRING", True) elif s == 'o': #object path return ("gchar *", "DBUS_TYPE_G_OBJECT_PATH", "BOXED", True) elif s == 'v': #variant return ("GValue *", "G_TYPE_VALUE", "BOXED", True) elif s == 'as': #array of strings return ("gchar **", "G_TYPE_STRV", "BOXED", True) elif s == 'ay': #byte array return ("GArray *", "dbus_g_type_get_collection (\"GArray\", G_TYPE_UCHAR)", "BOXED", True) elif s == 'au': #uint array return ("GArray *", "DBUS_TYPE_G_UINT_ARRAY", "BOXED", True) elif s == 'ai': #int array return ("GArray *", "DBUS_TYPE_G_INT_ARRAY", "BOXED", True) elif s == 'ax': #int64 array return ("GArray *", "DBUS_TYPE_G_INT64_ARRAY", "BOXED", True) elif s == 'at': #uint64 array return ("GArray *", "DBUS_TYPE_G_UINT64_ARRAY", "BOXED", True) elif s == 'ad': #double array return ("GArray *", "DBUS_TYPE_G_DOUBLE_ARRAY", "BOXED", True) elif s == 'ab': #boolean array return ("GArray *", "DBUS_TYPE_G_BOOLEAN_ARRAY", "BOXED", True) elif s == 'ao': #object path array return ("GPtrArray *", 'dbus_g_type_get_collection ("GPtrArray",' ' DBUS_TYPE_G_OBJECT_PATH)', "BOXED", True) elif s == 'a{ss}': #hash table of string to string return ("GHashTable *", "DBUS_TYPE_G_STRING_STRING_HASHTABLE", "BOXED", False) elif s[:2] == 'a{': #some arbitrary hash tables if s[2] not in ('y', 'b', 'n', 'q', 'i', 'u', 's', 'o', 'g'): raise Exception, "can't index a hashtable off non-basic type " + s first = type_to_gtype(s[2]) second = type_to_gtype(s[3:-1]) return ("GHashTable *", "(dbus_g_type_get_map (\"GHashTable\", " + first[1] + ", " + second[1] + "))", "BOXED", False) elif s[:2] in ('a(', 'aa'): # array of structs or arrays, recurse gtype = type_to_gtype(s[1:])[1] return ("GPtrArray *", "(dbus_g_type_get_collection (\"GPtrArray\", "+gtype+"))", "BOXED", True) elif s[:1] == '(': #struct gtype = "(dbus_g_type_get_struct (\"GValueArray\", " for subsig in Signature(s[1:-1]): gtype = gtype + type_to_gtype(subsig)[1] + ", " gtype = gtype + "G_TYPE_INVALID))" return ("GValueArray *", gtype, "BOXED", True) # we just don't know .. raise Exception, "don't know the GType for " + s telepathy-qt-0.9.6.1/tools/glib-interfaces-gen.py0000644000175100017520000000636612530423576023254 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python from sys import argv, stdout, stderr import xml.dom.minidom from libglibcodegen import NS_TP, get_docstring, \ get_descendant_text, get_by_path class Generator(object): def __init__(self, prefix, implfile, declfile, dom): self.prefix = prefix + '_' self.impls = open(implfile, 'w') self.decls = open(declfile, 'w') self.spec = get_by_path(dom, "spec")[0] def h(self, code): self.decls.write(code.encode('utf-8')) def c(self, code): self.impls.write(code.encode('utf-8')) def __call__(self): for f in self.h, self.c: self.do_header(f) self.do_body() # Header def do_header(self, f): f('/* Generated from: ') f(get_descendant_text(get_by_path(self.spec, 'title'))) version = get_by_path(self.spec, "version") if version: f(' version ' + get_descendant_text(version)) f('\n\n') for copyright in get_by_path(self.spec, 'copyright'): f(get_descendant_text(copyright)) f('\n') f('\n') f(get_descendant_text(get_by_path(self.spec, 'license'))) f(get_descendant_text(get_by_path(self.spec, 'docstring'))) f(""" */ """) # Body def do_body(self): for iface in self.spec.getElementsByTagName('interface'): self.do_iface(iface) def do_iface(self, iface): parent_name = get_by_path(iface, '../@name') self.h("""\ /** * %(IFACE_DEFINE)s: * * The interface name "%(name)s" */ #define %(IFACE_DEFINE)s \\ "%(name)s" """ % {'IFACE_DEFINE' : (self.prefix + 'IFACE_' + \ parent_name).upper().replace('/', ''), 'name' : iface.getAttribute('name')}) self.h(""" /** * %(IFACE_QUARK_DEFINE)s: * * Expands to a call to a function that returns a quark for the interface \ name "%(name)s" */ #define %(IFACE_QUARK_DEFINE)s \\ (%(iface_quark_func)s ()) GQuark %(iface_quark_func)s (void); """ % {'IFACE_QUARK_DEFINE' : (self.prefix + 'IFACE_QUARK_' + \ parent_name).upper().replace('/', ''), 'iface_quark_func' : (self.prefix + 'iface_quark_' + \ parent_name).lower().replace('/', ''), 'name' : iface.getAttribute('name')}) self.c("""\ GQuark %(iface_quark_func)s (void) { static GQuark quark = 0; if (G_UNLIKELY (quark == 0)) { quark = g_quark_from_static_string ("%(name)s"); } return quark; } """ % {'iface_quark_func' : (self.prefix + 'iface_quark_' + \ parent_name).lower().replace('/', ''), 'name' : iface.getAttribute('name')}) for prop in iface.getElementsByTagNameNS(None, 'property'): self.decls.write(""" /** * %(IFACE_PREFIX)s_%(PROP_UC)s: * * The fully-qualified property name "%(name)s.%(prop)s" */ #define %(IFACE_PREFIX)s_%(PROP_UC)s \\ "%(name)s.%(prop)s" """ % {'IFACE_PREFIX' : (self.prefix + 'PROP_' + \ parent_name).upper().replace('/', ''), 'PROP_UC': prop.getAttributeNS(NS_TP, "name-for-bindings").upper(), 'name' : iface.getAttribute('name'), 'prop' : prop.getAttribute('name'), }) if __name__ == '__main__': argv = argv[1:] Generator(argv[0], argv[1], argv[2], xml.dom.minidom.parse(argv[3]))() telepathy-qt-0.9.6.1/tools/repeat-tests.sh0000755000175100017520000000070412530423576022042 0ustar00kaffeinekaffeine00000000000000#!/bin/sh if [ $# -ne 2 ] then echo "usage: $0 " echo "example: $0 \"make check-valgrind\" 100" echo " or: $0 \"make -j4 check\" 100" exit 1 fi for i in `seq 1 $2` do echo -n "Running test iteration ${i}... " log="test-round-${i}.log" $1 > ${log} 2>&1 if grep -q "FAIL" $log then echo "FAILED (log in $log)" else echo "PASSED" rm ${log} fi done telepathy-qt-0.9.6.1/tools/glib-ginterface-gen.py0000644000175100017520000007250112530423576023232 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # glib-ginterface-gen.py: service-side interface generator # # Generate dbus-glib 0.x service GInterfaces from the Telepathy specification. # The master copy of this program is in the telepathy-glib repository - # please make any changes there. # # Copyright (C) 2006, 2007 Collabora Limited # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import sys import os.path import xml.dom.minidom from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \ NS_TP, dbus_gutils_wincaps_to_uscore, \ signal_to_marshal_name, method_to_glue_marshal_name NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" class Generator(object): def __init__(self, dom, prefix, basename, signal_marshal_prefix, headers, end_headers, not_implemented_func, allow_havoc): self.dom = dom self.__header = [] self.__body = [] assert prefix.endswith('_') assert not signal_marshal_prefix.endswith('_') # The main_prefix, sub_prefix thing is to get: # FOO_ -> (FOO_, _) # FOO_SVC_ -> (FOO_, _SVC_) # but # FOO_BAR/ -> (FOO_BAR_, _) # FOO_BAR/SVC_ -> (FOO_BAR_, _SVC_) if '/' in prefix: main_prefix, sub_prefix = prefix.upper().split('/', 1) prefix = prefix.replace('/', '_') else: main_prefix, sub_prefix = prefix.upper().split('_', 1) self.MAIN_PREFIX_ = main_prefix + '_' self._SUB_PREFIX_ = '_' + sub_prefix self.Prefix_ = prefix self.Prefix = prefix.replace('_', '') self.prefix_ = prefix.lower() self.PREFIX_ = prefix.upper() self.basename = basename self.signal_marshal_prefix = signal_marshal_prefix self.headers = headers self.end_headers = end_headers self.not_implemented_func = not_implemented_func self.allow_havoc = allow_havoc def h(self, s): self.__header.append(s) def b(self, s): self.__body.append(s) def do_node(self, node): node_name = node.getAttribute('name').replace('/', '') node_name_mixed = self.node_name_mixed = node_name.replace('_', '') node_name_lc = self.node_name_lc = node_name.lower() node_name_uc = self.node_name_uc = node_name.upper() interfaces = node.getElementsByTagName('interface') assert len(interfaces) == 1, interfaces interface = interfaces[0] self.iface_name = interface.getAttribute('name') tmp = interface.getAttribute('tp:implement-service') if tmp == "no": return tmp = interface.getAttribute('tp:causes-havoc') if tmp and not self.allow_havoc: raise AssertionError('%s is %s' % (self.iface_name, tmp)) self.b('static const DBusGObjectInfo _%s%s_object_info;' % (self.prefix_, node_name_lc)) self.b('') methods = interface.getElementsByTagName('method') signals = interface.getElementsByTagName('signal') properties = interface.getElementsByTagName('property') # Don't put properties in dbus-glib glue glue_properties = [] self.b('struct _%s%sClass {' % (self.Prefix, node_name_mixed)) self.b(' GTypeInterface parent_class;') for method in methods: self.b(' %s %s;' % self.get_method_impl_names(method)) self.b('};') self.b('') if signals: self.b('enum {') for signal in signals: self.b(' %s,' % self.get_signal_const_entry(signal)) self.b(' N_%s_SIGNALS' % node_name_uc) self.b('};') self.b('static guint %s_signals[N_%s_SIGNALS] = {0};' % (node_name_lc, node_name_uc)) self.b('') self.b('static void %s%s_base_init (gpointer klass);' % (self.prefix_, node_name_lc)) self.b('') self.b('GType') self.b('%s%s_get_type (void)' % (self.prefix_, node_name_lc)) self.b('{') self.b(' static GType type = 0;') self.b('') self.b(' if (G_UNLIKELY (type == 0))') self.b(' {') self.b(' static const GTypeInfo info = {') self.b(' sizeof (%s%sClass),' % (self.Prefix, node_name_mixed)) self.b(' %s%s_base_init, /* base_init */' % (self.prefix_, node_name_lc)) self.b(' NULL, /* base_finalize */') self.b(' NULL, /* class_init */') self.b(' NULL, /* class_finalize */') self.b(' NULL, /* class_data */') self.b(' 0,') self.b(' 0, /* n_preallocs */') self.b(' NULL /* instance_init */') self.b(' };') self.b('') self.b(' type = g_type_register_static (G_TYPE_INTERFACE,') self.b(' "%s%s", &info, 0);' % (self.Prefix, node_name_mixed)) self.b(' }') self.b('') self.b(' return type;') self.b('}') self.b('') self.h('/**') self.h(' * %s%s:' % (self.Prefix, node_name_mixed)) self.h(' *') self.h(' * Dummy typedef representing any implementation of this ' 'interface.') self.h(' */') self.h('typedef struct _%s%s %s%s;' % (self.Prefix, node_name_mixed, self.Prefix, node_name_mixed)) self.h('') self.h('/**') self.h(' * %s%sClass:' % (self.Prefix, node_name_mixed)) self.h(' *') self.h(' * The class of %s%s.' % (self.Prefix, node_name_mixed)) if methods: self.h(' *') self.h(' * In a full implementation of this interface (i.e. all') self.h(' * methods implemented), the interface initialization') self.h(' * function used in G_IMPLEMENT_INTERFACE() would') self.h(' * typically look like this:') self.h(' *') self.h(' * ') self.h(' * static void') self.h(' * implement_%s (gpointer klass,' % self.node_name_lc) self.h(' * gpointer unused G_GNUC_UNUSED)') self.h(' * {') # "#" is special to gtkdoc under some circumstances; it appears # that escaping "##" as "##" or "##" doesn't work, # but adding an extra hash symbol does. Thanks, gtkdoc :-( self.h(' * #define IMPLEMENT(x) %s%s_implement_###x (\\' % (self.prefix_, self.node_name_lc)) self.h(' * klass, my_object_###x)') for method in methods: class_member_name = method.getAttribute('tp:name-for-bindings') class_member_name = class_member_name.lower() self.h(' * IMPLEMENT (%s);' % class_member_name) self.h(' * #undef IMPLEMENT') self.h(' * }') self.h(' * ') else: self.h(' * This interface has no D-Bus methods, so an') self.h(' * implementation can typically pass %NULL to') self.h(' * G_IMPLEMENT_INTERFACE() as the interface') self.h(' * initialization function.') self.h(' */') self.h('typedef struct _%s%sClass %s%sClass;' % (self.Prefix, node_name_mixed, self.Prefix, node_name_mixed)) self.h('') self.h('GType %s%s_get_type (void);' % (self.prefix_, node_name_lc)) gtype = self.current_gtype = \ self.MAIN_PREFIX_ + 'TYPE' + self._SUB_PREFIX_ + node_name_uc classname = self.Prefix + node_name_mixed self.h('#define %s \\\n (%s%s_get_type ())' % (gtype, self.prefix_, node_name_lc)) self.h('#define %s%s(obj) \\\n' ' (G_TYPE_CHECK_INSTANCE_CAST((obj), %s, %s))' % (self.PREFIX_, node_name_uc, gtype, classname)) self.h('#define %sIS%s%s(obj) \\\n' ' (G_TYPE_CHECK_INSTANCE_TYPE((obj), %s))' % (self.MAIN_PREFIX_, self._SUB_PREFIX_, node_name_uc, gtype)) self.h('#define %s%s_GET_CLASS(obj) \\\n' ' (G_TYPE_INSTANCE_GET_INTERFACE((obj), %s, %sClass))' % (self.PREFIX_, node_name_uc, gtype, classname)) self.h('') self.h('') base_init_code = [] for method in methods: self.do_method(method) for signal in signals: base_init_code.extend(self.do_signal(signal)) self.b('static inline void') self.b('%s%s_base_init_once (gpointer klass G_GNUC_UNUSED)' % (self.prefix_, node_name_lc)) self.b('{') if properties: self.b(' static TpDBusPropertiesMixinPropInfo properties[%d] = {' % (len(properties) + 1)) for m in properties: access = m.getAttribute('access') assert access in ('read', 'write', 'readwrite') if access == 'read': flags = 'TP_DBUS_PROPERTIES_MIXIN_FLAG_READ' elif access == 'write': flags = 'TP_DBUS_PROPERTIES_MIXIN_FLAG_WRITE' else: flags = ('TP_DBUS_PROPERTIES_MIXIN_FLAG_READ | ' 'TP_DBUS_PROPERTIES_MIXIN_FLAG_WRITE') self.b(' { 0, %s, "%s", 0, NULL, NULL }, /* %s */' % (flags, m.getAttribute('type'), m.getAttribute('name'))) self.b(' { 0, 0, NULL, 0, NULL, NULL }') self.b(' };') self.b(' static TpDBusPropertiesMixinIfaceInfo interface =') self.b(' { 0, properties, NULL, NULL };') self.b('') self.b(' dbus_g_object_type_install_info (%s%s_get_type (),' % (self.prefix_, node_name_lc)) self.b(' &_%s%s_object_info);' % (self.prefix_, node_name_lc)) self.b('') if properties: self.b(' interface.dbus_interface = g_quark_from_static_string ' '("%s");' % self.iface_name) for i, m in enumerate(properties): self.b(' properties[%d].name = g_quark_from_static_string ("%s");' % (i, m.getAttribute('name'))) self.b(' properties[%d].type = %s;' % (i, type_to_gtype(m.getAttribute('type'))[1])) self.b(' tp_svc_interface_set_dbus_properties_info (%s, &interface);' % self.current_gtype) self.b('') for s in base_init_code: self.b(s) self.b('}') self.b('static void') self.b('%s%s_base_init (gpointer klass)' % (self.prefix_, node_name_lc)) self.b('{') self.b(' static gboolean initialized = FALSE;') self.b('') self.b(' if (!initialized)') self.b(' {') self.b(' initialized = TRUE;') self.b(' %s%s_base_init_once (klass);' % (self.prefix_, node_name_lc)) self.b(' }') # insert anything we need to do per implementation here self.b('}') self.h('') self.b('static const DBusGMethodInfo _%s%s_methods[] = {' % (self.prefix_, node_name_lc)) method_blob, offsets = self.get_method_glue(methods) for method, offset in zip(methods, offsets): self.do_method_glue(method, offset) if len(methods) == 0: # empty arrays are a gcc extension, so put in a dummy member self.b(" { NULL, NULL, 0 }") self.b('};') self.b('') self.b('static const DBusGObjectInfo _%s%s_object_info = {' % (self.prefix_, node_name_lc)) self.b(' 0,') # version self.b(' _%s%s_methods,' % (self.prefix_, node_name_lc)) self.b(' %d,' % len(methods)) self.b('"' + method_blob.replace('\0', '\\0') + '",') self.b('"' + self.get_signal_glue(signals).replace('\0', '\\0') + '",') self.b('"' + self.get_property_glue(glue_properties).replace('\0', '\\0') + '",') self.b('};') self.b('') self.node_name_mixed = None self.node_name_lc = None self.node_name_uc = None def get_method_glue(self, methods): info = [] offsets = [] for method in methods: offsets.append(len(''.join(info))) info.append(self.iface_name + '\0') info.append(method.getAttribute('name') + '\0') info.append('A\0') # async counter = 0 for arg in method.getElementsByTagName('arg'): out = arg.getAttribute('direction') == 'out' name = arg.getAttribute('name') if not name: assert out name = 'arg%u' % counter counter += 1 info.append(name + '\0') if out: info.append('O\0') else: info.append('I\0') if out: info.append('F\0') # not const info.append('N\0') # not error or return info.append(arg.getAttribute('type') + '\0') info.append('\0') return ''.join(info) + '\0', offsets def do_method_glue(self, method, offset): lc_name = method.getAttribute('tp:name-for-bindings') if method.getAttribute('name') != lc_name.replace('_', ''): raise AssertionError('Method %s tp:name-for-bindings (%s) does ' 'not match' % (method.getAttribute('name'), lc_name)) lc_name = lc_name.lower() marshaller = method_to_glue_marshal_name(method, self.signal_marshal_prefix) wrapper = self.prefix_ + self.node_name_lc + '_' + lc_name self.b(" { (GCallback) %s, %s, %d }," % (wrapper, marshaller, offset)) def get_signal_glue(self, signals): info = [] for signal in signals: info.append(self.iface_name) info.append(signal.getAttribute('name')) return '\0'.join(info) + '\0\0' # the implementation can be the same get_property_glue = get_signal_glue def get_method_impl_names(self, method): dbus_method_name = method.getAttribute('name') class_member_name = method.getAttribute('tp:name-for-bindings') if dbus_method_name != class_member_name.replace('_', ''): raise AssertionError('Method %s tp:name-for-bindings (%s) does ' 'not match' % (dbus_method_name, class_member_name)) class_member_name = class_member_name.lower() stub_name = (self.prefix_ + self.node_name_lc + '_' + class_member_name) return (stub_name + '_impl', class_member_name) def do_method(self, method): assert self.node_name_mixed is not None in_class = [] # Examples refer to Thing.DoStuff (su) -> ii # DoStuff dbus_method_name = method.getAttribute('name') # do_stuff class_member_name = method.getAttribute('tp:name-for-bindings') if dbus_method_name != class_member_name.replace('_', ''): raise AssertionError('Method %s tp:name-for-bindings (%s) does ' 'not match' % (dbus_method_name, class_member_name)) class_member_name = class_member_name.lower() # void tp_svc_thing_do_stuff (TpSvcThing *, const char *, guint, # DBusGMethodInvocation *); stub_name = (self.prefix_ + self.node_name_lc + '_' + class_member_name) # typedef void (*tp_svc_thing_do_stuff_impl) (TpSvcThing *, # const char *, guint, DBusGMethodInvocation); impl_name = stub_name + '_impl' # void tp_svc_thing_return_from_do_stuff (DBusGMethodInvocation *, # gint, gint); ret_name = (self.prefix_ + self.node_name_lc + '_return_from_' + class_member_name) # Gather arguments in_args = [] out_args = [] for i in method.getElementsByTagName('arg'): name = i.getAttribute('name') direction = i.getAttribute('direction') or 'in' dtype = i.getAttribute('type') assert direction in ('in', 'out') if name: name = direction + '_' + name elif direction == 'in': name = direction + str(len(in_args)) else: name = direction + str(len(out_args)) ctype, gtype, marshaller, pointer = type_to_gtype(dtype) if pointer: ctype = 'const ' + ctype struct = (ctype, name) if direction == 'in': in_args.append(struct) else: out_args.append(struct) # Implementation type declaration (in header, docs in body) self.b('/**') self.b(' * %s:' % impl_name) self.b(' * @self: The object implementing this interface') for (ctype, name) in in_args: self.b(' * @%s: %s (FIXME, generate documentation)' % (name, ctype)) self.b(' * @context: Used to return values or throw an error') self.b(' *') self.b(' * The signature of an implementation of the D-Bus method') self.b(' * %s on interface %s.' % (dbus_method_name, self.iface_name)) self.b(' */') self.h('typedef void (*%s) (%s%s *self,' % (impl_name, self.Prefix, self.node_name_mixed)) for (ctype, name) in in_args: self.h(' %s%s,' % (ctype, name)) self.h(' DBusGMethodInvocation *context);') # Class member (in class definition) in_class.append(' %s %s;' % (impl_name, class_member_name)) # Stub definition (in body only - it's static) self.b('static void') self.b('%s (%s%s *self,' % (stub_name, self.Prefix, self.node_name_mixed)) for (ctype, name) in in_args: self.b(' %s%s,' % (ctype, name)) self.b(' DBusGMethodInvocation *context)') self.b('{') self.b(' %s impl = (%s%s_GET_CLASS (self)->%s);' % (impl_name, self.PREFIX_, self.node_name_uc, class_member_name)) self.b('') self.b(' if (impl != NULL)') tmp = ['self'] + [name for (ctype, name) in in_args] + ['context'] self.b(' {') self.b(' (impl) (%s);' % ',\n '.join(tmp)) self.b(' }') self.b(' else') self.b(' {') if self.not_implemented_func: self.b(' %s (context);' % self.not_implemented_func) else: self.b(' GError e = { DBUS_GERROR, ') self.b(' DBUS_GERROR_UNKNOWN_METHOD,') self.b(' "Method not implemented" };') self.b('') self.b(' dbus_g_method_return_error (context, &e);') self.b(' }') self.b('}') self.b('') # Implementation registration (in both header and body) self.h('void %s%s_implement_%s (%s%sClass *klass, %s impl);' % (self.prefix_, self.node_name_lc, class_member_name, self.Prefix, self.node_name_mixed, impl_name)) self.b('/**') self.b(' * %s%s_implement_%s:' % (self.prefix_, self.node_name_lc, class_member_name)) self.b(' * @klass: A class whose instances implement this interface') self.b(' * @impl: A callback used to implement the %s D-Bus method' % dbus_method_name) self.b(' *') self.b(' * Register an implementation for the %s method in the vtable' % dbus_method_name) self.b(' * of an implementation of this interface. To be called from') self.b(' * the interface init function.') self.b(' */') self.b('void') self.b('%s%s_implement_%s (%s%sClass *klass, %s impl)' % (self.prefix_, self.node_name_lc, class_member_name, self.Prefix, self.node_name_mixed, impl_name)) self.b('{') self.b(' klass->%s = impl;' % class_member_name) self.b('}') self.b('') # Return convenience function (static inline, in header) self.h('/**') self.h(' * %s:' % ret_name) self.h(' * @context: The D-Bus method invocation context') for (ctype, name) in out_args: self.h(' * @%s: %s (FIXME, generate documentation)' % (name, ctype)) self.h(' *') self.h(' * Return successfully by calling dbus_g_method_return().') self.h(' * This inline function exists only to provide type-safety.') self.h(' */') tmp = (['DBusGMethodInvocation *context'] + [ctype + name for (ctype, name) in out_args]) self.h('static inline') self.h('/* this comment is to stop gtkdoc realising this is static */') self.h(('void %s (' % ret_name) + (',\n '.join(tmp)) + ');') self.h('static inline void') self.h(('%s (' % ret_name) + (',\n '.join(tmp)) + ')') self.h('{') tmp = ['context'] + [name for (ctype, name) in out_args] self.h(' dbus_g_method_return (' + ',\n '.join(tmp) + ');') self.h('}') self.h('') return in_class def get_signal_const_entry(self, signal): assert self.node_name_uc is not None return ('SIGNAL_%s_%s' % (self.node_name_uc, signal.getAttribute('name'))) def do_signal(self, signal): assert self.node_name_mixed is not None in_base_init = [] # for signal: Thing::StuffHappened (s, u) # we want to emit: # void tp_svc_thing_emit_stuff_happened (gpointer instance, # const char *arg0, guint arg1); dbus_name = signal.getAttribute('name') ugly_name = signal.getAttribute('tp:name-for-bindings') if dbus_name != ugly_name.replace('_', ''): raise AssertionError('Signal %s tp:name-for-bindings (%s) does ' 'not match' % (dbus_name, ugly_name)) stub_name = (self.prefix_ + self.node_name_lc + '_emit_' + ugly_name.lower()) const_name = self.get_signal_const_entry(signal) # Gather arguments args = [] for i in signal.getElementsByTagName('arg'): name = i.getAttribute('name') dtype = i.getAttribute('type') tp_type = i.getAttribute('tp:type') if name: name = 'arg_' + name else: name = 'arg' + str(len(args)) ctype, gtype, marshaller, pointer = type_to_gtype(dtype) if pointer: ctype = 'const ' + ctype struct = (ctype, name, gtype) args.append(struct) tmp = (['gpointer instance'] + [ctype + name for (ctype, name, gtype) in args]) self.h(('void %s (' % stub_name) + (',\n '.join(tmp)) + ');') # FIXME: emit docs self.b('/**') self.b(' * %s:' % stub_name) self.b(' * @instance: The object implementing this interface') for (ctype, name, gtype) in args: self.b(' * @%s: %s (FIXME, generate documentation)' % (name, ctype)) self.b(' *') self.b(' * Type-safe wrapper around g_signal_emit to emit the') self.b(' * %s signal on interface %s.' % (dbus_name, self.iface_name)) self.b(' */') self.b('void') self.b(('%s (' % stub_name) + (',\n '.join(tmp)) + ')') self.b('{') self.b(' g_assert (instance != NULL);') self.b(' g_assert (G_TYPE_CHECK_INSTANCE_TYPE (instance, %s));' % (self.current_gtype)) tmp = (['instance', '%s_signals[%s]' % (self.node_name_lc, const_name), '0'] + [name for (ctype, name, gtype) in args]) self.b(' g_signal_emit (' + ',\n '.join(tmp) + ');') self.b('}') self.b('') signal_name = dbus_gutils_wincaps_to_uscore(dbus_name).replace('_', '-') in_base_init.append(' /**') in_base_init.append(' * %s%s::%s:' % (self.Prefix, self.node_name_mixed, signal_name)) for (ctype, name, gtype) in args: in_base_init.append(' * @%s: %s (FIXME, generate documentation)' % (name, ctype)) in_base_init.append(' *') in_base_init.append(' * The %s D-Bus signal is emitted whenever ' 'this GObject signal is.' % dbus_name) in_base_init.append(' */') in_base_init.append(' %s_signals[%s] =' % (self.node_name_lc, const_name)) in_base_init.append(' g_signal_new ("%s",' % signal_name) in_base_init.append(' G_OBJECT_CLASS_TYPE (klass),') in_base_init.append(' G_SIGNAL_RUN_LAST|G_SIGNAL_DETAILED,') in_base_init.append(' 0,') in_base_init.append(' NULL, NULL,') in_base_init.append(' %s,' % signal_to_marshal_name(signal, self.signal_marshal_prefix)) in_base_init.append(' G_TYPE_NONE,') tmp = ['%d' % len(args)] + [gtype for (ctype, name, gtype) in args] in_base_init.append(' %s);' % ',\n '.join(tmp)) in_base_init.append('') return in_base_init def have_properties(self, nodes): for node in nodes: interface = node.getElementsByTagName('interface')[0] if interface.getElementsByTagName('property'): return True return False def __call__(self): nodes = self.dom.getElementsByTagName('node') nodes.sort(cmp_by_name) self.h('#include ') self.h('#include ') if self.have_properties(nodes): self.h('#include ') self.h('') self.h('G_BEGIN_DECLS') self.h('') self.b('#include "%s.h"' % self.basename) self.b('') for header in self.headers: self.b('#include %s' % header) self.b('') for node in nodes: self.do_node(node) self.h('') self.h('G_END_DECLS') self.b('') for header in self.end_headers: self.b('#include %s' % header) self.h('') self.b('') open(self.basename + '.h', 'w').write('\n'.join(self.__header)) open(self.basename + '.c', 'w').write('\n'.join(self.__body)) def cmdline_error(): print """\ usage: gen-ginterface [OPTIONS] xmlfile Prefix_ options: --include='' (may be repeated) --include='"header.h"' (ditto) --include-end='"header.h"' (ditto) Include extra headers in the generated .c file --signal-marshal-prefix='prefix' Use the given prefix on generated signal marshallers (default is prefix.lower()). --filename='BASENAME' Set the basename for the output files (default is prefix.lower() + 'ginterfaces') --not-implemented-func='symbol' Set action when methods not implemented in the interface vtable are called. symbol must have signature void symbol (DBusGMethodInvocation *context) and return some sort of "not implemented" error via dbus_g_method_return_error (context, ...) """ sys.exit(1) if __name__ == '__main__': from getopt import gnu_getopt options, argv = gnu_getopt(sys.argv[1:], '', ['filename=', 'signal-marshal-prefix=', 'include=', 'include-end=', 'allow-unstable', 'not-implemented-func=']) try: prefix = argv[1] except IndexError: cmdline_error() basename = prefix.lower() + 'ginterfaces' signal_marshal_prefix = prefix.lower().rstrip('_') headers = [] end_headers = [] not_implemented_func = '' allow_havoc = False for option, value in options: if option == '--filename': basename = value elif option == '--signal-marshal-prefix': signal_marshal_prefix = value elif option == '--include': if value[0] not in '<"': value = '"%s"' % value headers.append(value) elif option == '--include-end': if value[0] not in '<"': value = '"%s"' % value end_headers.append(value) elif option == '--not-implemented-func': not_implemented_func = value elif option == '--allow-unstable': allow_havoc = True try: dom = xml.dom.minidom.parse(argv[0]) except IndexError: cmdline_error() Generator(dom, prefix, basename, signal_marshal_prefix, headers, end_headers, not_implemented_func, allow_havoc)() telepathy-qt-0.9.6.1/tools/manager-file.py0000644000175100017520000001361612530423576021772 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # manager-file.py: generate .manager files and TpCMParamSpec arrays from the # same data (should be suitable for all connection managers that don't have # plugins) # # The master copy of this program is in the telepathy-glib repository - # please make any changes there. # # Copyright (c) Collabora Ltd. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import re import sys import os _NOT_C_STR = re.compile(r'[^A-Za-z0-9_-]') def c_string(x): # whitelist-based brute force and ignorance - escape nearly all punctuation return '"' + _NOT_C_STR.sub(lambda c: r'\x%02x' % ord(c), x) + '"' def desktop_string(x): return x.replace(' ', r'\s').replace('\n', r'\n').replace('\r', r'\r').replace('\t', r'\t') supported = list('sbuiqn') fdefaultencoders = { 's': desktop_string, 'b': (lambda b: b and '1' or '0'), 'u': (lambda n: '%u' % n), 'i': (lambda n: '%d' % n), 'q': (lambda n: '%u' % n), 'n': (lambda n: '%d' % n), } for x in supported: assert x in fdefaultencoders gtypes = { 's': 'G_TYPE_STRING', 'b': 'G_TYPE_BOOLEAN', 'u': 'G_TYPE_UINT', 'i': 'G_TYPE_INT', 'q': 'G_TYPE_UINT', 'n': 'G_TYPE_INT', } for x in supported: assert x in gtypes gdefaultencoders = { 's': c_string, 'b': (lambda b: b and 'GINT_TO_POINTER (TRUE)' or 'GINT_TO_POINTER (FALSE)'), 'u': (lambda n: 'GUINT_TO_POINTER (%u)' % n), 'i': (lambda n: 'GINT_TO_POINTER (%d)' % n), 'q': (lambda n: 'GUINT_TO_POINTER (%u)' % n), 'n': (lambda n: 'GINT_TO_POINTER (%d)' % n), } for x in supported: assert x in gdefaultencoders gdefaultdefaults = { 's': 'NULL', 'b': 'GINT_TO_POINTER (FALSE)', 'u': 'GUINT_TO_POINTER (0)', 'i': 'GINT_TO_POINTER (0)', 'q': 'GUINT_TO_POINTER (0)', 'n': 'GINT_TO_POINTER (0)', } for x in supported: assert x in gdefaultdefaults gflags = { 'has-default': 'TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT', 'register': 'TP_CONN_MGR_PARAM_FLAG_REGISTER', 'required': 'TP_CONN_MGR_PARAM_FLAG_REQUIRED', 'secret': 'TP_CONN_MGR_PARAM_FLAG_SECRET', 'dbus-property': 'TP_CONN_MGR_PARAM_FLAG_DBUS_PROPERTY', } def write_manager(f, manager, protos): # pointless backwards compat section print >> f, '[ConnectionManager]' print >> f, 'BusName=org.freedesktop.Telepathy.ConnectionManager.' + manager print >> f, 'ObjectPath=/org/freedesktop/Telepathy/ConnectionManager/' + manager # protocols for proto, params in protos.iteritems(): print >> f print >> f, '[Protocol %s]' % proto defaults = {} for param, info in params.iteritems(): dtype = info['dtype'] flags = info.get('flags', '').split() struct_field = info.get('struct_field', param.replace('-', '_')) filter = info.get('filter', 'NULL') filter_data = info.get('filter_data', 'NULL') setter_data = 'NULL' if 'default' in info: default = fdefaultencoders[dtype](info['default']) defaults[param] = default if flags: flags = ' ' + ' '.join(flags) else: flags = '' print >> f, 'param-%s=%s%s' % (param, desktop_string(dtype), flags) for param, default in defaults.iteritems(): print >> f, 'default-%s=%s' % (param, default) def write_c_params(f, manager, proto, struct, params): print >> f, "static const TpCMParamSpec %s_%s_params[] = {" % (manager, proto) for param, info in params.iteritems(): dtype = info['dtype'] flags = info.get('flags', '').split() struct_field = info.get('struct_field', param.replace('-', '_')) filter = info.get('filter', 'NULL') filter_data = info.get('filter_data', 'NULL') setter_data = 'NULL' if 'default' in info: default = gdefaultencoders[dtype](info['default']) else: default = gdefaultdefaults[dtype] if flags: flags = ' | '.join([gflags[flag] for flag in flags]) else: flags = '0' if struct is None or struct_field is None: struct_offset = '0' else: struct_offset = 'G_STRUCT_OFFSET (%s, %s)' % (struct, struct_field) print >> f, (''' { %s, %s, %s, %s, %s, /* default */ %s, /* struct offset */ %s, /* filter */ %s, /* filter data */ %s /* setter data */ },''' % (c_string(param), c_string(dtype), gtypes[dtype], flags, default, struct_offset, filter, filter_data, setter_data)) print >> f, " { NULL }" print >> f, "};" if __name__ == '__main__': environment = {} execfile(sys.argv[1], environment) f = open('%s/%s.manager' % (sys.argv[2], environment['MANAGER']), 'w') write_manager(f, environment['MANAGER'], environment['PARAMS']) f.close() f = open('%s/param-spec-struct.h' % sys.argv[2], 'w') for protocol in environment['PARAMS']: write_c_params(f, environment['MANAGER'], protocol, environment['STRUCTS'][protocol], environment['PARAMS'][protocol]) f.close() telepathy-qt-0.9.6.1/tools/with-session-bus.sh0000644000175100017520000000427412530423576022650 0ustar00kaffeinekaffeine00000000000000#!/bin/sh # with-session-bus.sh - run a program with a temporary D-Bus session daemon # # The canonical location of this program is the telepathy-glib tools/ # directory, please synchronize any changes with that copy. # # Copyright (C) 2007-2008 Collabora Ltd. # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. set -e me=with-session-bus dbus_daemon_args="--print-address=5 --print-pid=6 --fork" sleep=0 usage () { echo "usage: $me [options] -- program [program_options]" >&2 echo "Requires write access to the current directory." >&2 echo "" >&2 echo "If \$WITH_SESSION_BUS_FORK_DBUS_MONITOR is set, fork dbus-monitor" >&2 echo "with the arguments in \$WITH_SESSION_BUS_FORK_DBUS_MONITOR_OPT." >&2 echo "The output of dbus-monitor is saved in $me-.dbus-monitor-logs" >&2 exit 2 } while test "z$1" != "z--"; do case "$1" in --sleep=*) sleep="$1" sleep="${sleep#--sleep=}" shift ;; --session) dbus_daemon_args="$dbus_daemon_args --session" shift ;; --config-file=*) # FIXME: assumes config file doesn't contain any special characters dbus_daemon_args="$dbus_daemon_args $1" shift ;; *) usage ;; esac done shift if test "z$1" = "z"; then usage; fi exec 5> $me-$$.address exec 6> $me-$$.pid cleanup () { pid=`head -n1 $me-$$.pid` if test -n "$pid" ; then echo "Killing temporary bus daemon: $pid" >&2 kill -INT "$pid" fi rm -f $me-$$.address rm -f $me-$$.pid } trap cleanup INT HUP TERM dbus-daemon $dbus_daemon_args { echo -n "Temporary bus daemon is "; cat $me-$$.address; } >&2 { echo -n "Temporary bus daemon PID is "; head -n1 $me-$$.pid; } >&2 e=0 DBUS_SESSION_BUS_ADDRESS="`cat $me-$$.address`" export DBUS_SESSION_BUS_ADDRESS if [ -n "$WITH_SESSION_BUS_FORK_DBUS_MONITOR" ] ; then echo -n "Forking dbus-monitor $WITH_SESSION_BUS_FORK_DBUS_MONITOR_OPT" >&2 dbus-monitor $WITH_SESSION_BUS_FORK_DBUS_MONITOR_OPT \ > $me-$$.dbus-monitor-logs 2>&1 & fi "$@" || e=$? if test $sleep != 0; then sleep $sleep fi trap - INT HUP TERM cleanup exit $e telepathy-qt-0.9.6.1/tools/glib-signals-marshal-gen.py0000644000175100017520000000254112530423576024205 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python import sys import xml.dom.minidom from string import ascii_letters, digits from libglibcodegen import signal_to_marshal_name, method_to_glue_marshal_name class Generator(object): def __init__(self, dom): self.dom = dom self.marshallers = {} def do_method(self, method): marshaller = method_to_glue_marshal_name(method, 'PREFIX') assert '__' in marshaller rhs = marshaller.split('__', 1)[1].split('_') self.marshallers[marshaller] = rhs def do_signal(self, signal): marshaller = signal_to_marshal_name(signal, 'PREFIX') assert '__' in marshaller rhs = marshaller.split('__', 1)[1].split('_') self.marshallers[marshaller] = rhs def __call__(self): methods = self.dom.getElementsByTagName('method') for method in methods: self.do_method(method) signals = self.dom.getElementsByTagName('signal') for signal in signals: self.do_signal(signal) all = self.marshallers.keys() all.sort() for marshaller in all: rhs = self.marshallers[marshaller] if not marshaller.startswith('g_cclosure'): print 'VOID:' + ','.join(rhs) if __name__ == '__main__': argv = sys.argv[1:] dom = xml.dom.minidom.parse(argv[0]) Generator(dom)() telepathy-qt-0.9.6.1/tools/glib-gtypes-generator.py0000644000175100017520000003013312530423576023646 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # Generate GLib GInterfaces from the Telepathy specification. # The master copy of this program is in the telepathy-glib repository - # please make any changes there. # # Copyright (C) 2006, 2007 Collabora Limited # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import sys import xml.dom.minidom from libglibcodegen import escape_as_identifier, \ get_docstring, \ NS_TP, \ Signature, \ type_to_gtype, \ xml_escape def types_to_gtypes(types): return [type_to_gtype(t)[1] for t in types] class GTypesGenerator(object): def __init__(self, dom, output, mixed_case_prefix): self.dom = dom self.Prefix = mixed_case_prefix self.PREFIX_ = self.Prefix.upper() + '_' self.prefix_ = self.Prefix.lower() + '_' self.header = open(output + '.h', 'w') self.body = open(output + '-body.h', 'w') for f in (self.header, self.body): f.write('/* Auto-generated, do not edit.\n *\n' ' * This file may be distributed under the same terms\n' ' * as the specification from which it was generated.\n' ' */\n\n') # keys are e.g. 'sv', values are the key escaped self.need_mappings = {} # keys are the contents of the struct (e.g. 'sssu'), values are the # key escaped self.need_structs = {} # keys are the contents of the struct (e.g. 'sssu'), values are the # key escaped self.need_struct_arrays = {} # keys are the contents of the array (unlike need_struct_arrays!), # values are the key escaped self.need_other_arrays = {} def h(self, code): self.header.write(code.encode("utf-8")) def c(self, code): self.body.write(code.encode("utf-8")) def do_mapping_header(self, mapping): members = mapping.getElementsByTagNameNS(NS_TP, 'member') assert len(members) == 2 impl_sig = ''.join([elt.getAttribute('type') for elt in members]) esc_impl_sig = escape_as_identifier(impl_sig) name = (self.PREFIX_ + 'HASH_TYPE_' + mapping.getAttribute('name').upper()) impl = self.prefix_ + 'type_dbus_hash_' + esc_impl_sig docstring = get_docstring(mapping) or '(Undocumented)' self.h('/**\n * %s:\n *\n' % name) self.h(' * %s\n' % xml_escape(docstring)) self.h(' *\n') self.h(' * This macro expands to a call to a function\n') self.h(' * that returns the #GType of a #GHashTable\n') self.h(' * appropriate for representing a D-Bus\n') self.h(' * dictionary of signature\n') self.h(' * a{%s}.\n' % impl_sig) self.h(' *\n') key, value = members self.h(' * Keys (D-Bus type %s,\n' % key.getAttribute('type')) tp_type = key.getAttributeNS(NS_TP, 'type') if tp_type: self.h(' * type %s,\n' % tp_type) self.h(' * named %s):\n' % key.getAttribute('name')) docstring = get_docstring(key) or '(Undocumented)' self.h(' * %s\n' % xml_escape(docstring)) self.h(' *\n') self.h(' * Values (D-Bus type %s,\n' % value.getAttribute('type')) tp_type = value.getAttributeNS(NS_TP, 'type') if tp_type: self.h(' * type %s,\n' % tp_type) self.h(' * named %s):\n' % value.getAttribute('name')) docstring = get_docstring(value) or '(Undocumented)' self.h(' * %s\n' % xml_escape(docstring)) self.h(' *\n') self.h(' */\n') self.h('#define %s (%s ())\n\n' % (name, impl)) self.need_mappings[impl_sig] = esc_impl_sig array_name = mapping.getAttribute('array-name') if array_name: gtype_name = self.PREFIX_ + 'ARRAY_TYPE_' + array_name.upper() contents_sig = 'a{' + impl_sig + '}' esc_contents_sig = escape_as_identifier(contents_sig) impl = self.prefix_ + 'type_dbus_array_of_' + esc_contents_sig self.h('/**\n * %s:\n\n' % gtype_name) self.h(' * Expands to a call to a function\n') self.h(' * that returns the #GType of a #GPtrArray\n') self.h(' * of #%s.\n' % name) self.h(' */\n') self.h('#define %s (%s ())\n\n' % (gtype_name, impl)) self.need_other_arrays[contents_sig] = esc_contents_sig def do_struct_header(self, struct): members = struct.getElementsByTagNameNS(NS_TP, 'member') impl_sig = ''.join([elt.getAttribute('type') for elt in members]) esc_impl_sig = escape_as_identifier(impl_sig) name = (self.PREFIX_ + 'STRUCT_TYPE_' + struct.getAttribute('name').upper()) impl = self.prefix_ + 'type_dbus_struct_' + esc_impl_sig docstring = struct.getElementsByTagNameNS(NS_TP, 'docstring') if docstring: docstring = docstring[0].toprettyxml() if docstring.startswith(''): docstring = docstring[14:] if docstring.endswith('\n'): docstring = docstring[:-16] if docstring.strip() in ('', ''): docstring = '(Undocumented)' else: docstring = '(Undocumented)' self.h('/**\n * %s:\n\n' % name) self.h(' * %s\n' % xml_escape(docstring)) self.h(' *\n') self.h(' * This macro expands to a call to a function\n') self.h(' * that returns the #GType of a #GValueArray\n') self.h(' * appropriate for representing a D-Bus struct\n') self.h(' * with signature (%s).\n' % impl_sig) self.h(' *\n') for i, member in enumerate(members): self.h(' * Member %d (D-Bus type ' '%s,\n' % (i, member.getAttribute('type'))) tp_type = member.getAttributeNS(NS_TP, 'type') if tp_type: self.h(' * type %s,\n' % tp_type) self.h(' * named %s):\n' % member.getAttribute('name')) docstring = get_docstring(member) or '(Undocumented)' self.h(' * %s\n' % xml_escape(docstring)) self.h(' *\n') self.h(' */\n') self.h('#define %s (%s ())\n\n' % (name, impl)) array_name = struct.getAttribute('array-name') if array_name != '': array_name = (self.PREFIX_ + 'ARRAY_TYPE_' + array_name.upper()) impl = self.prefix_ + 'type_dbus_array_' + esc_impl_sig self.h('/**\n * %s:\n\n' % array_name) self.h(' * Expands to a call to a function\n') self.h(' * that returns the #GType of a #GPtrArray\n') self.h(' * of #%s.\n' % name) self.h(' */\n') self.h('#define %s (%s ())\n\n' % (array_name, impl)) self.need_struct_arrays[impl_sig] = esc_impl_sig self.need_structs[impl_sig] = esc_impl_sig def __call__(self): mappings = self.dom.getElementsByTagNameNS(NS_TP, 'mapping') structs = self.dom.getElementsByTagNameNS(NS_TP, 'struct') for mapping in mappings: self.do_mapping_header(mapping) for sig in self.need_mappings: self.h('GType %stype_dbus_hash_%s (void);\n\n' % (self.prefix_, self.need_mappings[sig])) self.c('GType\n%stype_dbus_hash_%s (void)\n{\n' % (self.prefix_, self.need_mappings[sig])) self.c(' static GType t = 0;\n\n') self.c(' if (G_UNLIKELY (t == 0))\n') # FIXME: translate sig into two GTypes items = tuple(Signature(sig)) gtypes = types_to_gtypes(items) self.c(' t = dbus_g_type_get_map ("GHashTable", ' '%s, %s);\n' % (gtypes[0], gtypes[1])) self.c(' return t;\n') self.c('}\n\n') for struct in structs: self.do_struct_header(struct) for sig in self.need_structs: self.h('GType %stype_dbus_struct_%s (void);\n\n' % (self.prefix_, self.need_structs[sig])) self.c('GType\n%stype_dbus_struct_%s (void)\n{\n' % (self.prefix_, self.need_structs[sig])) self.c(' static GType t = 0;\n\n') self.c(' if (G_UNLIKELY (t == 0))\n') self.c(' t = dbus_g_type_get_struct ("GValueArray",\n') items = tuple(Signature(sig)) gtypes = types_to_gtypes(items) for gtype in gtypes: self.c(' %s,\n' % gtype) self.c(' G_TYPE_INVALID);\n') self.c(' return t;\n') self.c('}\n\n') for sig in self.need_struct_arrays: self.h('GType %stype_dbus_array_%s (void);\n\n' % (self.prefix_, self.need_struct_arrays[sig])) self.c('GType\n%stype_dbus_array_%s (void)\n{\n' % (self.prefix_, self.need_struct_arrays[sig])) self.c(' static GType t = 0;\n\n') self.c(' if (G_UNLIKELY (t == 0))\n') self.c(' t = dbus_g_type_get_collection ("GPtrArray", ' '%stype_dbus_struct_%s ());\n' % (self.prefix_, self.need_struct_arrays[sig])) self.c(' return t;\n') self.c('}\n\n') for sig in self.need_other_arrays: self.h('GType %stype_dbus_array_of_%s (void);\n\n' % (self.prefix_, self.need_other_arrays[sig])) self.c('GType\n%stype_dbus_array_of_%s (void)\n{\n' % (self.prefix_, self.need_other_arrays[sig])) self.c(' static GType t = 0;\n\n') self.c(' if (G_UNLIKELY (t == 0))\n') if sig[:2] == 'a{' and sig[-1:] == '}': # array of mappings self.c(' t = dbus_g_type_get_collection (' '"GPtrArray", ' '%stype_dbus_hash_%s ());\n' % (self.prefix_, escape_as_identifier(sig[2:-1]))) elif sig[:2] == 'a(' and sig[-1:] == ')': # array of arrays of struct self.c(' t = dbus_g_type_get_collection (' '"GPtrArray", ' '%stype_dbus_array_%s ());\n' % (self.prefix_, escape_as_identifier(sig[2:-1]))) elif sig[:1] == 'a': # array of arrays of non-struct self.c(' t = dbus_g_type_get_collection (' '"GPtrArray", ' '%stype_dbus_array_of_%s ());\n' % (self.prefix_, escape_as_identifier(sig[1:]))) else: raise AssertionError("array of '%s' not supported" % sig) self.c(' return t;\n') self.c('}\n\n') if __name__ == '__main__': argv = sys.argv[1:] dom = xml.dom.minidom.parse(argv[0]) GTypesGenerator(dom, argv[1], argv[2])() telepathy-qt-0.9.6.1/tools/qt-client-gen.py0000644000175100017520000004205412530423576022110 0ustar00kaffeinekaffeine00000000000000#!/usr/bin/python # # Copyright (C) 2008 Collabora Limited # Copyright (C) 2008 Nokia Corporation # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from sys import argv import xml.dom.minidom import codecs from getopt import gnu_getopt from libtpcodegen import NS_TP, get_descendant_text, get_by_path from libqtcodegen import binding_from_usage, extract_arg_or_member_info, format_docstring, gather_externals, gather_custom_lists, get_headerfile_cmd, get_qt_name, qt_identifier_escape, RefRegistry class Generator(object): def __init__(self, opts): try: self.group = opts.get('--group', '') self.headerfile = opts['--headerfile'] self.implfile = opts['--implfile'] self.namespace = opts['--namespace'] self.typesnamespace = opts['--typesnamespace'] self.realinclude = opts['--realinclude'] self.prettyinclude = opts.get('--prettyinclude') self.extraincludes = opts.get('--extraincludes', None) self.mainiface = opts.get('--mainiface', None) self.must_define = opts.get('--must-define', None) self.dbus_proxy = opts.get('--dbus-proxy', 'Tp::DBusProxy') self.visibility = opts.get('--visibility', '') ifacedom = xml.dom.minidom.parse(opts['--ifacexml']) specdom = xml.dom.minidom.parse(opts['--specxml']) except KeyError, k: assert False, 'Missing required parameter %s' % k.args[0] self.hs = [] self.bs = [] self.ifacenodes = ifacedom.getElementsByTagName('node') self.spec, = get_by_path(specdom, "spec") self.custom_lists = gather_custom_lists(self.spec, self.typesnamespace) self.externals = gather_externals(self.spec) self.refs = RefRegistry(self.spec) def __call__(self): # Output info header and includes self.h("""\ /* * This file contains D-Bus client proxy classes generated by qt-client-gen.py. * * This file can be distributed under the same terms as the specification from * which it was generated. */ """) if self.must_define: self.h('\n') self.h('#ifndef %s\n' % self.must_define) self.h('#error %s\n' % self.must_define) self.h('#endif\n') self.h('\n') if self.extraincludes: for include in self.extraincludes.split(','): self.h('#include %s\n' % include) self.h(""" #include #include #include #include #include #include #include #include namespace Tp { class PendingVariant; class PendingOperation; } """) if self.must_define: self.b("""#define %s\n""" % (self.must_define)) self.b("""#include "%s" """ % self.realinclude) # Begin namespace for ns in self.namespace.split('::'): self.hb("""\ namespace %s { """ % ns) # Output interface proxies def ifacenodecmp(x, y): xname, yname = [self.namespace + '::' + node.getAttribute('name').replace('/', '').replace('_', '') + 'Interface' for node in x, y] if xname == self.mainiface: return -1 elif yname == self.mainiface: return 1 else: return cmp(xname, yname) self.ifacenodes.sort(cmp=ifacenodecmp) for ifacenode in self.ifacenodes: self.do_ifacenode(ifacenode) # End namespace self.hb(''.join(['}\n' for ns in self.namespace.split('::')])) # Add metatype declaration - otherwise QTBUG #2151 might be triggered for ifacenode in self.ifacenodes: classname = ifacenode.getAttribute('name').replace('/', '').replace('_', '') + 'Interface' self.h("Q_DECLARE_METATYPE(" + self.namespace + "::" + classname + "*)\n") # Write output to files (codecs.getwriter('utf-8')(open(self.headerfile, 'w'))).write(''.join(self.hs)) (codecs.getwriter('utf-8')(open(self.implfile, 'w'))).write(''.join(self.bs)) def do_ifacenode(self, ifacenode): # Extract info name = ifacenode.getAttribute('name').replace('/', '').replace('_', '') + 'Interface' iface, = get_by_path(ifacenode, 'interface') dbusname = iface.getAttribute('name') # Begin class, constructors self.h(""" /** * \\class %(name)s %(headercmd)s\ %(groupcmd)s\ * * Proxy class providing a 1:1 mapping of the D-Bus interface "%(dbusname)s". */ class %(visibility)s %(name)s : public Tp::AbstractInterface { Q_OBJECT public: /** * Returns the name of the interface "%(dbusname)s", which this class * represents. * * \\return The D-Bus interface name. */ static inline QLatin1String staticInterfaceName() { return QLatin1String("%(dbusname)s"); } /** * Creates a %(name)s associated with the given object on the session bus. * * \\param busName Name of the service the object is on. * \\param objectPath Path to the object on the service. * \\param parent Passed to the parent class constructor. */ %(name)s( const QString& busName, const QString& objectPath, QObject* parent = 0 ); /** * Creates a %(name)s associated with the given object on the given bus. * * \\param connection The bus via which the object can be reached. * \\param busName Name of the service the object is on. * \\param objectPath Path to the object on the service. * \\param parent Passed to the parent class constructor. */ %(name)s( const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject* parent = 0 ); """ % {'name' : name, 'headercmd' : get_headerfile_cmd(self.realinclude, self.prettyinclude), 'groupcmd' : self.group and (' * \\ingroup %s\n' % self.group), 'dbusname' : dbusname, 'visibility': self.visibility, }) self.b(""" %(name)s::%(name)s(const QString& busName, const QString& objectPath, QObject *parent) : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), QDBusConnection::sessionBus(), parent) { } %(name)s::%(name)s(const QDBusConnection& connection, const QString& busName, const QString& objectPath, QObject *parent) : Tp::AbstractInterface(busName, objectPath, staticInterfaceName(), connection, parent) { } """ % {'name' : name}) # Construct from DBusProxy subclass self.h(""" /** * Creates a %(name)s associated with the same object as the given proxy. * * \\param proxy The proxy to use. It will also be the QObject::parent() * for this object. */ %(name)s(%(dbus_proxy)s *proxy); """ % {'name' : name, 'dbus_proxy' : self.dbus_proxy}) self.b(""" %(name)s::%(name)s(%(dbus_proxy)s *proxy) : Tp::AbstractInterface(proxy, staticInterfaceName()) { } """ % {'name' : name, 'dbus_proxy' : self.dbus_proxy}) # Main interface mainiface = self.mainiface or 'Tp::AbstractInterface' if mainiface != self.namespace + '::' + name: self.h(""" /** * Creates a %(name)s associated with the same object as the given proxy. * Additionally, the created proxy will have the same parent as the given * proxy. * * \\param mainInterface The proxy to use. */ explicit %(name)s(const %(mainiface)s& mainInterface); /** * Creates a %(name)s associated with the same object as the given proxy. * However, a different parent object can be specified. * * \\param mainInterface The proxy to use. * \\param parent Passed to the parent class constructor. */ %(name)s(const %(mainiface)s& mainInterface, QObject* parent); """ % {'name' : name, 'mainiface' : mainiface}) self.b(""" %(name)s::%(name)s(const %(mainiface)s& mainInterface) : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), mainInterface.parent()) { } %(name)s::%(name)s(const %(mainiface)s& mainInterface, QObject *parent) : Tp::AbstractInterface(mainInterface.service(), mainInterface.path(), staticInterfaceName(), mainInterface.connection(), parent) { } """ % {'name' : name, 'mainiface' : mainiface}) # Properties has_props = False for prop in get_by_path(iface, 'property'): # Skip tp:properties if not prop.namespaceURI: self.do_prop(prop) has_props = True self.h(""" /** * Request all of the DBus properties on the interface. * * \\return A pending variant map which will emit finished when the properties have * been retrieved. */ Tp::PendingVariantMap *requestAllProperties() const { return internalRequestAllProperties(); } """) # Methods methods = get_by_path(iface, 'method') if methods: self.h(""" public Q_SLOTS:\ """) for method in methods: self.do_method(method) # Signals signals = get_by_path(iface, 'signal') if signals: self.h(""" Q_SIGNALS:\ """) for signal in signals: self.do_signal(signal) # invalidated handler (already a slot in the superclass) # we can't just use disconnect(this, NULL, NULL, NULL) because # (a) that would disconnect QObject::destroyed() and other non-D-Bus # signals, and (b) QtDBus doesn't support that usage anyway (it needs # specific signals in order to remove its signal match rules) self.h(""" protected: virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &); """) self.b(""" void %(name)s::invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message) { """ % {'name' : name}) for signal in signals: self.do_signal_disconnect(signal) self.b(""" Tp::AbstractInterface::invalidate(proxy, error, message); } """) # Close class self.h("""\ }; """) def do_prop(self, prop): name = prop.getAttribute('name') access = prop.getAttribute('access') gettername = name settername = None docstring = format_docstring(prop, self.refs, ' * ').replace('*/', '*/') sig = prop.getAttribute('type') tptype = prop.getAttributeNS(NS_TP, 'type') binding = binding_from_usage(sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace) if 'write' in access: settername = 'set' + name if 'read' in access: self.h(""" /** * Asynchronous getter for the remote object property \\c %(name)s of type \\c %(val)s. * %(docstring)s\ * * \\return A pending variant which will emit finished when the property has been * retrieved. */ inline Tp::PendingVariant *%(gettername)s() const { return internalRequestProperty(QLatin1String("%(name)s")); } """ % {'name' : name, 'docstring' : docstring, 'val' : binding.val, 'gettername' : 'requestProperty' + name}) if 'write' in access: self.h(""" /** * Asynchronous setter for the remote object property \\c %(name)s of type \\c %(type)s. * %(docstring)s\ * * \\return A pending operation which will emit finished when the property has been * set. */ inline Tp::PendingOperation *%(settername)s(%(type)s newValue) { return internalSetProperty(QLatin1String("%(name)s"), QVariant::fromValue(newValue)); } """ % {'name' : name, 'docstring' : docstring, 'type' : binding.val, 'name' : name, 'settername' : 'setProperty' + name}) def do_method(self, method): name = method.getAttribute('name') args = get_by_path(method, 'arg') argnames, argdocstrings, argbindings = extract_arg_or_member_info(args, self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') inargs = [] outargs = [] for i in xrange(len(args)): if args[i].getAttribute('direction') == 'out': outargs.append(i) else: inargs.append(i) assert argnames[i] != None, 'No argument name for input argument at index %d for method %s' % (i, name) rettypes = ', '.join([argbindings[i].val for i in outargs]) params = ', '.join([argbindings[i].inarg + ' ' + argnames[i] for i in inargs]) if params: params += ', int timeout = -1' else: params = 'int timeout = -1' self.h(""" /** * Begins a call to the D-Bus method \\c %s on the remote object. %s\ * * Note that \\a timeout is ignored as of now. It will be used once * http://bugreports.qt.nokia.com/browse/QTBUG-11775 is fixed. * """ % (name, format_docstring(method, self.refs, ' * '))) for i in inargs: if argdocstrings[i]: self.h("""\ * * \\param %s %s\ """ % (argnames[i], argdocstrings[i])) self.h("""\ * \\param timeout The timeout in milliseconds. """) for i in outargs: if argdocstrings[i]: self.h("""\ * * \\return %s\ """ % argdocstrings[i]) self.h("""\ */ inline QDBusPendingReply<%(rettypes)s> %(name)s(%(params)s) { if (!invalidationReason().isEmpty()) { return QDBusPendingReply<%(rettypes)s>(QDBusMessage::createError( invalidationReason(), invalidationMessage() )); } """ % {'rettypes' : rettypes, 'name' : name, 'params' : params}) if inargs: self.h(""" QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(), this->staticInterfaceName(), QLatin1String("%s")); callMessage << %s; return this->connection().asyncCall(callMessage, timeout); } """ % (name, ' << '.join(['QVariant::fromValue(%s)' % argnames[i] for i in inargs]))) else: self.h(""" QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(), this->staticInterfaceName(), QLatin1String("%s")); return this->connection().asyncCall(callMessage, timeout); } """ % name) def do_signal(self, signal): name = signal.getAttribute('name') argnames, argdocstrings, argbindings = extract_arg_or_member_info(get_by_path(signal, 'arg'), self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') self.h(""" /** * Represents the signal \\c %s on the remote object. %s\ """ % (name, format_docstring(signal, self.refs, ' * '))) for i in xrange(len(argnames)): assert argnames[i] != None, 'Name missing from argument at index %d for signal %s' % (i, name) if argdocstrings[i]: self.h("""\ * * \\param %s %s\ """ % (argnames[i], argdocstrings[i])) self.h("""\ */ void %s(%s); """ % (name, ', '.join(['%s %s' % (binding.inarg, name) for binding, name in zip(argbindings, argnames)]))) def do_signal_disconnect(self, signal): name = signal.getAttribute('name') _, _, argbindings = extract_arg_or_member_info(get_by_path(signal, 'arg'), self.custom_lists, self.externals, self.typesnamespace, self.refs, ' * ') self.b("""\ disconnect(this, SIGNAL(%s(%s)), NULL, NULL); """ % (name, ', '.join([binding.inarg for binding in argbindings]))) def h(self, str): self.hs.append(str) def b(self, str): self.bs.append(str) def hb(self, str): self.h(str) self.b(str) if __name__ == '__main__': options, argv = gnu_getopt(argv[1:], '', ['group=', 'namespace=', 'typesnamespace=', 'headerfile=', 'implfile=', 'ifacexml=', 'specxml=', 'realinclude=', 'prettyinclude=', 'extraincludes=', 'mainiface=', 'must-define=', 'dbus-proxy=', 'visibility=']) Generator(dict(options))() telepathy-qt-0.9.6.1/README0000644000175100017520000001137612530423576016612 0ustar00kaffeinekaffeine00000000000000============= telepathy-qt ============= This is a library for Qt-based Telepathy clients. Telepathy is a D-Bus framework for unifying real time communication, including instant messaging, voice calls and video calls. It abstracts differences between protocols to provide a unified interface for applications. See the Telepathy website for more information: http://telepathy.freedesktop.org/ Telepathy specification ======================= The copy of the Telepathy specification in the spec/ directory indicates the specification that this library claims to implement. The HTML documentation for the latest version of the specification can be viewed at: http://telepathy.freedesktop.org/spec/ Requirements ============ Building telepathy-qt requires: Qt, QtDBus, QtNetwork and QtXml (QtGui and QtWidgets are required for some examples) GNU make pkg-config libxslt, xsltproc Python For the full set of regression tests to run, you'll also need: telepathy-glib For building the Farsight convenience library, you'll need: telepathy-glib telepathy-farsight GStreamer and to build the Farstream convenience library, you'll need: telepathy-glib telepathy-farstream farstream GStreamer See CMakeLists.txt for full details, including versions required. Of the packages listed above, only Qt libraries are required at runtime. Building also requires the cmake build system. Qt 5 alpha release contains some build issues that should be addressed in order to build telepathy-qt against it: - When running 'configure' in Qt 5 alpha, the pkg-config files are properly generated, but when 'make' is executed, these files are replaced with empty ones. So, to build telepathy-qt against it one must either backup the pkg-config files generated during the 'configure' phase before running 'make' and replace them afterwards, or re-run 'configure' with the same parameters after building it. - If Qt 5 alpha is built with -reduce-relocations enabled, one must add the keyword "reduce_relocations" to qtbase/lib/pkgconfig/QtCore.pc in the qt_config section, so that telepathy-qt knows when to use -fPIC/PIE at linking stage accordingly. Both issues were reported and should be fixed when beta is out. Bugs, feature requests and to-do list ===================================== Report all bugs, feature requests and "to-do" items here: Running "make check" will produce FIXME.out, which lists all the mentions of FIXME, TODO or XXX in the source code. Ideally, all of these should be in Bugzilla, but sometimes they're not. API stability policy ==================== We use an "odd/even" versioning scheme where the minor version (the y in x.y.z) determines stability - stable branches have y even, development branches have y odd. In a stable (even) branch, we will not make incompatible API or ABI changes between one release tarball and the next. In a development (odd) branch, if we make incompatible ABI changes between one release tarball and the next, we will change the SONAME of the library; we will attempt to avoid incompatible API or ABI changes. Unreleased builds straight from git identify themselves as version "x.y.z.1". We DO NOT make any API guarantees about unreleased builds: any binary relying on new functionality from an unreleased build is not guaranteed to work with any subsequent release or unreleased build, and on platforms with versioned symbols (mainly Linux) it definitely won't work with subsequent releases (you'll have to at least relink the binary). We do not increment SONAMEs on the basis of unreleased changes. Unreleased builds are compiled with -Werror, so they might stop working if your gcc version issues more warnings than ours. If this is a problem for you, use a release tarball. Contact info ============ This library is maintained by the Telepathy project: Telepathy development is supported by Collabora Ltd. . Hacking ======= See HACKING for version control, coding style and patch submission information. telepathy-qt-0.9.6.1/doxygen-footer.html0000644000175100017520000000051012530423576021555 0ustar00kaffeinekaffeine00000000000000


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt $projectnumber
telepathy-qt-0.9.6.1/doxygen.css0000644000175100017520000001317012530423576020113 0ustar00kaffeinekaffeine00000000000000body, table, div, p, dl { font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; font-size: 12px; } /* @group Heading Levels */ h1 { text-align: center; font-size: 150%; } h2 { font-size: 110%; font-weight: bold; } h3 { font-size: 100%; } h3.version { font-size: 100%; text-align: center; } /* @end */ caption { font-weight: bold; } div.title{ font-size: 150%; text-align: center; margin: 2px; padding: 2px; } div.qindex, div.navtab{ background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; } div.qindex, div.navpath { width: 100%; line-height: 140%; } div.navtab { margin-right: 15px; } /* @group Link Styling */ a { color: #153788; font-weight: normal; text-decoration: none; } .contents a:visited { color: #1b77c5; } a:hover { text-decoration: underline; } a.qindex { font-weight: bold; } a.qindexHL { font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } .contents a.qindexHL:visited { color: #ffffff; } a.el { } a.elRef { } a.code { } a.codeRef { } /* @end */ dl.el { margin-left: -1cm; } .fragment { font-family: monospace, fixed; font-size: 100%; } pre.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; padding: 4px 6px; margin: 4px 8px 4px 2px; } div.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } div.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } div.groupText { margin-left: 16px; font-style: italic; } body { background: white; color: black; margin-right: 20px; margin-left: 20px; } td.indexkey { background-color: #e8eef2; font-weight: bold; border: 1px solid #CCCCCC; margin: 2px 0px 2px 0; padding: 2px 10px; } td.indexvalue { background-color: #e8eef2; border: 1px solid #CCCCCC; padding: 2px 10px; margin: 2px 0px; } tr.memlist { background-color: #f0f0f0; } p.formulaDsp { text-align: center; } img.formulaDsp { } img.formulaInl { vertical-align: middle; } /* @group Code Colorization */ span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } span.vhdldigit { color: #ff00ff } span.vhdlchar { color: #000000 } span.vhdlkeyword { color: #700070 } span.vhdllogic { color: #ff0000 } /* @end */ .search { color: #003399; font-weight: bold; } form.search { margin-bottom: 0px; margin-top: 0px; } input.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } td.tiny { font-size: 75%; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #84b0c7; } th.dirtab { background: #e8eef2; font-weight: bold; } hr { height: 0; border: none; border-top: 1px solid #666; } /* @group Member Descriptions */ .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: #FAFAFA; border: none; margin: 4px; padding: 1px 0 0 8px; } .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; color: #555; } .memItemLeft, .memItemRight, .memTemplParams { border-top: 1px solid #ccc; } .memTemplParams { color: #606060; } /* @end */ /* @group Member Details */ /* Styles for detailed member documentation */ .memtemplate { font-size: 80%; color: #606060; font-weight: normal; margin-left: 3px; } .memnav { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .memitem { padding: 0; } .memname { white-space: nowrap; font-weight: bold; } .memproto { padding: 0; background-color: #d5e1e8; font-weight: bold; border: 1px solid #84b0c7; } .memdoc { padding: 2px 5px; border-top-width: 0; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; white-space: nowrap; } .paramname em { font-style: normal; } /* @end */ /* @group Directory (tree) */ /* for the tree view */ .ftvtree { font-family: sans-serif; margin: 0.5em; } /* these are for tree view when used as main index */ .directory { font-size: 9pt; font-weight: bold; } .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } /* The following two styles can be used to replace the root node title with an image of your choice. Simply uncomment the next two styles, specify the name of your image and be sure to set 'height' to the proper pixel height of your image. */ /* .directory h3.swap { height: 61px; background-repeat: no-repeat; background-image: url("yourimage.gif"); } .directory h3.swap span { display: none; } */ .directory > h3 { margin-top: 0; } .directory p { margin: 0px; white-space: nowrap; } .directory div { display: none; margin: 0px; } .directory img { vertical-align: -30%; } /* these are for tree view when not used as main index */ .directory-alt { font-size: 100%; font-weight: bold; } .directory-alt h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } .directory-alt > h3 { margin-top: 0; } .directory-alt p { margin: 0px; white-space: nowrap; } .directory-alt div { display: none; margin: 0px; } .directory-alt img { vertical-align: -30%; } /* @end */ address { font-style: normal; color: #333; } div.rationale:before { content: "Rationale:"; display: block; font-weight: bold; font-size: 0.85em; } div.rationale { font-style: italic; border-left: 0.25em solid #808080; padding-left: 0.5em; } div.rationale p { font-size: 0.85em; } telepathy-qt-0.9.6.1/CMakeLists.txt0000644000175100017520000002711312530423576020466 0ustar00kaffeinekaffeine00000000000000project(TelepathyQt) cmake_minimum_required(VERSION 2.6) # CMake policies are used for backwards compatibilty. Setting a policy to a behavior lets newer # CMake versions where some behaviors changed behave in a way or another. In our specific case, # From CMake's documentation: # # In CMake 2.6.2 and below, CMake Policy settings in scripts loaded by # the include() and find_package() commands would affect the includer. # Explicit invocations of cmake_policy(PUSH) and cmake_policy(POP) were # required to isolate policy changes and protect the includer. While # some scripts intend to affect the policies of their includer, most do # not. In CMake 2.6.3 and above, include() and find_package() by # default PUSH and POP an entry on the policy stack around an included # script, but provide a NO_POLICY_SCOPE option to disable it. This # policy determines whether or not to imply NO_POLICY_SCOPE for # compatibility. The OLD behavior for this policy is to imply # NO_POLICY_SCOPE for include() and find_package() commands. The NEW # behavior for this policy is to allow the commands to do their default # cmake_policy PUSH and POP. # # This policy was introduced in CMake version 2.6.3. CMake version # 2.8.2 warns when the policy is not set and uses OLD behavior. Use the # cmake_policy command to set it to OLD or NEW explicitly. # # Whenever our cmake_minimum_required version bumps up to 2.7 or 2.6.3, this policy setting can # hence be removed. if(POLICY CMP0011) cmake_policy(SET CMP0011 NEW) endif(POLICY CMP0011) # Making releases: # set the new version number: # odd minor -> development series # even minor -> stable series # increment micro for each release within a series # set nano_version to 0 # make the release, tag it # set nano_version to 1 set(TP_QT_MAJOR_VERSION 0) set(TP_QT_MINOR_VERSION 9) set(TP_QT_MICRO_VERSION 6) set(TP_QT_NANO_VERSION 1) set(PACKAGE_NAME telepathy-qt) if (${TP_QT_NANO_VERSION} EQUAL 0) set(PACKAGE_VERSION ${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION}) else (${TP_QT_NANO_VERSION} EQUAL 0) set(PACKAGE_VERSION ${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION}.${TP_QT_NANO_VERSION}) endif (${TP_QT_NANO_VERSION} EQUAL 0) # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is # checked set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") # Default build type is RelWithDebInfo for release versions and Debug for developement # versions if(NOT CMAKE_BUILD_TYPE) if(TP_QT_NANO_VERSION EQUAL 0) set(CMAKE_BUILD_TYPE RelWithDebInfo) else(TP_QT_NANO_VERSION EQUAL 0) set(CMAKE_BUILD_TYPE Debug) endif(TP_QT_NANO_VERSION EQUAL 0) endif(NOT CMAKE_BUILD_TYPE) # This file contains all the needed initialization macros include(TelepathyDefaults) # This file contains all the tpqt macros used in the buildsystem include(TpQtMacros) include(MacroLogFeature) # external dependencies # Required dependencies # Find qt4 version >= 4.6 or qt5 >= 5.0.0 set(QT4_MIN_VERSION "4.6.0") set(QT4_MAX_VERSION "5.0.0") set(QT5_MIN_VERSION "5.0.0") set(QT5_MAX_VERSION "6.0.0") find_package(Qt REQUIRED) IF(QT_VERSION_MAJOR MATCHES 5) # It is QtCore for Qt4 but Qt5Core for Qt5 in pkg-config SET(QT_VERSION_PC 5) ENDIF(QT_VERSION_MAJOR MATCHES 5) foreach(flag ${QT_CONFIG_FLAGS}) if (${flag} MATCHES "reduce_relocations") set(TP_QT_EXECUTABLE_LINKER_FLAGS "-fPIE") set(TP_QT_LIBRARY_LINKER_FLAGS "-fPIC") endif (${flag} MATCHES "reduce_relocations") endforeach(flag ${QT_CONFIG_FLAGS}) # This value contains the library's SOVERSION. This value is to be increased everytime an API/ABI break # occurs, and will be used for the SOVERSION of the generated shared libraries. if (${QT_VERSION_MAJOR} EQUAL 4) set(TP_QT_ABI_VERSION 2) else (${QT_VERSION_MAJOR} EQUAL 4) set(TP_QT_ABI_VERSION 0) endif (${QT_VERSION_MAJOR} EQUAL 4) # This variable is used for the library's long version. It is generated dynamically, so don't change its # value! Change TP_QT_ABI_VERSION and TP_QT_*_VERSION instead. if (${TP_QT_NANO_VERSION} EQUAL 0) set(TP_QT_LIBRARY_VERSION ${TP_QT_ABI_VERSION}.${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION}) else (${TP_QT_NANO_VERSION} EQUAL 0) set(TP_QT_LIBRARY_VERSION ${TP_QT_ABI_VERSION}.${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION}.${TP_QT_NANO_VERSION}) endif (${TP_QT_NANO_VERSION} EQUAL 0) # Add an option for compiling tp-qt-service option(ENABLE_SERVICE_SUPPORT "Enable compilation of service side bindings for Telepathy-Qt" TRUE) # Add an option for compiling examples option(ENABLE_EXAMPLES "Enable compilation of examples for Telepathy-Qt" TRUE) # Add an option for compiling Farstream option(ENABLE_FARSTREAM "Enable compilation of Farstream bindings" TRUE) # Add an option for building tests option(ENABLE_TESTS "Enable compilation of automated tests" TRUE) # The doxygen macro requires Qt to have been looked up to enable crosslinking include(Doxygen) include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${QT_INCLUDES}) add_definitions(-DQT_NO_CAST_FROM_ASCII) set(ENABLE_DEBUG_OUTPUT ON CACHE BOOL "If activated, compiles support for printing debug output to stderr") if (ENABLE_DEBUG_OUTPUT) add_definitions(-DENABLE_DEBUG) endif (ENABLE_DEBUG_OUTPUT) # Check for Qt Glib support include(CheckCXXSourceCompiles) set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES}) set(CMAKE_REQUIRED_DEFINITIONS "") # set the flags (-fPIE) here so that CHECK_CXX_SOURCE_COMPILES works properly if qt5 was built with # -reduce-locations set(CMAKE_REQUIRED_FLAGS "${TP_QT_EXECUTABLE_LINKER_FLAGS}") CHECK_CXX_SOURCE_COMPILES(" #include int main() { #if defined(QT_NO_GLIB) #error \"Qt was compiled with Glib disabled\" #endif return 0; }" QT_GLIB_SUPPORT) macro_log_feature(QT_GLIB_SUPPORT "Qt Glib Support" "QtCore library using Glib's main event loop" "http://qt.nokia.com/" FALSE "" "Needed, together with Telepathy-Glib, to build most of the unit tests") # reset flags set(CMAKE_REQUIRED_FLAGS "") # Find python version >= 2.5 find_package(PythonLibrary REQUIRED) set(REQUIRED_PY 2.5) if(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY}) message(STATUS "Python ${PYTHON_SHORT_VERSION} found") else(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY}) message(SEND_ERROR "Python >= ${REQUIRED_PY} is required") endif(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY}) # Check for dbus-python execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import dbus.mainloop.glib" RESULT_VARIABLE PYTHON_DBUS_RESULT) if(PYTHON_DBUS_RESULT EQUAL 0) set(HAVE_TEST_PYTHON 1) else(PYTHON_DBUS_RESULT EQUAL 0) set(HAVE_TEST_PYTHON 0) endif(PYTHON_DBUS_RESULT EQUAL 0) macro_log_feature(HAVE_TEST_PYTHON "dbus-python" "GLib-based Python DBus support" "http://www.python.org/" FALSE "" "Needed to build some additional unit tests") if(ENABLE_TESTS OR ENABLE_FARSTREAM) # Find telepathy-glib set(TELEPATHY_GLIB_MIN_VERSION 0.18.0) find_package(TelepathyGlib) macro_log_feature(TELEPATHYGLIB_FOUND "Telepathy-glib" "Glib bindings for Telepathy" "http://telepathy.freedesktop.org/" FALSE ${TELEPATHY_GLIB_MIN_VERSION} "Needed, together with Qt Glib integration, to build most of the unit tests") find_program(GLIB_GENMARSHAL glib-genmarshal) # Find GLib2, GObject, DBus and LibXml2 # Those are needed for the insane include dir dependency hell find_package(GLIB2) find_package(GObject) find_package(GIO) find_package(GIOUnix) find_package(DBus) find_package(DBusGLib) find_package(LibXml2) endif() if(ENABLE_FARSTREAM) # Find tp-farstream set(FARSTREAM_MIN_VERSION "0.2.0") find_package(Farstream) macro_log_feature(FARSTREAM_FOUND "Farstream" "A Framework for dealing with audio/video conferencing protocols" "http://www.freedesktop.org/wiki/Software/Farstream" FALSE "${FARSTREAM_MIN_VERSION}" "Needed, together with GStreamer and Telepathy-Farstream, to build telepathy-qt-farstream") # Find tp-farstream set(TELEPATHY_FARSTREAM_MIN_VERSION "0.6.0") find_package(TelepathyFarstream) macro_log_feature(TELEPATHYFARSTREAM_FOUND "Telepathy-Farstream" "A Framework for dealing with audio/video conferencing protocols" "http://telepathy.freedesktop.org/wiki/" FALSE "${TELEPATHY_FARSTREAM_MIN_VERSION}" "Needed, together with GStreamer and Farstream, to build telepathy-qt-farstream") endif() if(ENABLE_FARSTREAM) # Find GStreamer find_package(GStreamer) macro_log_feature(GSTREAMER_FOUND "GStreamer" "An open source multimedia framework" "Needed, together with Tp-Farstream, to build telepathy-qt-farstream and some additional examples" "http://www.gstreamer.net/" FALSE) endif() # Build TelepathyQt-Farstream only if GStreamer, TelepathyFarstream and all of their dependencies were found if (TELEPATHYFARSTREAM_FOUND AND FARSTREAM_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSTREAM) set (FARSTREAM_COMPONENTS_FOUND 1) else (TELEPATHYFARSTREAM_FOUND AND FARSTREAM_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSTREAM) set (FARSTREAM_COMPONENTS_FOUND 0) endif (TELEPATHYFARSTREAM_FOUND AND FARSTREAM_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSTREAM) if (ENABLE_TESTS) # Enable glib-based tests only if Qt has GLib support and Telepathy-glib was found if(QT_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND) # Disable GLib deprecation warnings for now; GValueArray is deprecated but we # need it for telepathy-glib. add_definitions(-DGLIB_DISABLE_DEPRECATION_WARNINGS) set(ENABLE_TP_GLIB_TESTS 1) if(GIO_FOUND AND GIOUNIX_FOUND) set(ENABLE_TP_GLIB_GIO_TESTS 1) else(GIO_FOUND AND GIOUNIX_FOUND) set(ENABLE_TP_GLIB_GIO_TESTS 0) endif(GIO_FOUND AND GIOUNIX_FOUND) else(QT_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND) set(ENABLE_TP_GLIB_TESTS 0) set(ENABLE_TP_GLIB_GIO_TESTS 0) endif(QT_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND) endif(ENABLE_TESTS) # Add the source subdirectories add_subdirectory(TelepathyQt) if(ENABLE_EXAMPLES) add_subdirectory(examples) endif() if(ENABLE_TESTS) add_subdirectory(tests) endif() add_subdirectory(tools) # Generate config.h and config-version.h configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h) configure_file(${CMAKE_SOURCE_DIR}/config-version.h.in ${CMAKE_BINARY_DIR}/config-version.h) # Create the uninstall target configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") # Display the feature log macro_display_feature_log() # Always keep it last: CPack definitions file include(TelepathyDist) telepathy-qt-0.9.6.1/.gitignore0000644000175100017520000000042112530423576017707 0ustar00kaffeinekaffeine00000000000000# For a project mostly in C, the following would be a good set of # Lines that start with '#' are comments. # exclude patterns (uncomment them if you want to use them): # git-ls-files --others --exclude-from=.git/info/exclude *.directory *.py[co] *~ .*.sw[p,o] /build tags telepathy-qt-0.9.6.1/HACKING0000644000175100017520000001136412530423576016716 0ustar00kaffeinekaffeine00000000000000Contents: • Version control • Coding style... › ...for C++ code › ...for C and Python code • Submitting patches =============================================================================== Version control =============================================================================== The current development version of telepathy-qt is available from the 'master' branch in the git repository: (for committers) (cgit) Stable branches are available from branches with names like 'telepathy-qt-0.2' in the same repository. =============================================================================== Coding style =============================================================================== For C++ code: ------------- TelepathyQt uses the standard Qt coding style for the Qt/C++ code, as also followed by eg. KDELibs. The coding style is described in more detail in the KDE TechBase at ; in short, it amounts to: * 4 spaces for indentation (no tabs, anywhere) * javaCase for variables and functions (incl. members), FullCamelCase for types * No abbreviations, except for 100% standard ones like regex, refcount, etc. * Type &var and Type *var, not Type& var and Type* var for pointers and refs * Use only one empty line to separate both groups of related statements AND function & class bodies * Use a space after each keyword but none after opening parens (if (true)) * No spaces between the function name and the parens for the parameter list * Surround binary operators with spaces, but don't put spaces between a unary operator and their operand * For function bodies, put the opening curly brace on its own line. For everything else, put the opening curly brace in the same line as the statement (if, for, etc.) associated with it. * Use curly braces even for single-line bodies of conditional statements and loops * Prefer static_cast, const_cast etc over C-style casts * Wrap long lines to 100 characters at most * Use foreach, emit instead of Q_FOREACH/Q_EMIT * Don't write long (> ~5 lines) inline methods unless they are needed because of eg. template * Don't use references to QObjects * Destroy transient objects such as method call watchers as soon as possible rather than accumulating them to long-lived parent objects * Documentation should be in the source file instead of the header file * Public xxxInterface methods' definitions should be added to the end of the public methods declaration. * Always add friend struct Private declaration on classes that have Private structure. * Always add Q_DISABLE_COPY(xxx) to classes that cannot be copied. * Q_DISABLE_COPY(xxx) declaration must be placed on the top of the class definition, before the public keyword. * Methods should be ordered as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private * friend class xxx definitions must be placed right below the private keyword. * All exported classes should use TP_QT_EXPORT macro as following: class TP_QT_EXPORT xxx { ... }; * Every issue in APIs which can (or will) only be fixed later should be marked with a doxygen \todo and have a corresponding fd.o bug filed and mentioned in the \todo annotation For C and Python code: ---------------------- Parts of the regression tests — namely, those parts in tests/lib/glib/ — are taken from telepathy-glib, and are written in C; the majority of the code generation tools — in tools/ — are written in Python. Please follow for these. =============================================================================== Submitting patches =============================================================================== Patches should be made as (preferably) git branches or (last resort) -uNr diffs against upstream git master, as found at: git://anongit.freedesktop.org/telepathy/telepathy-qt ssh://git.freedesktop.org/git/telepathy/telepathy-qt (for committers) http://cgit.freedesktop.org/telepathy/telepathy-qt/ (cgit) Patches can be announced at the freedesktop.org bugzilla, using the product "Telepathy" and component "tp-qt": https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy&component=tp-qt If submitting a Git branch, please set the URL field of the bug to point to your Git branch. Regardless of whether you are referring to a Git branch or attaching patches, please specify the "patch" keyword on the bug. For details on the code review procedure, see: http://telepathy.freedesktop.org/wiki/Review%20Procedure telepathy-qt-0.9.6.1/doxygen.cfg.in0000644000175100017520000017246512530423576020504 0ustar00kaffeinekaffeine00000000000000# This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = ${PROJECT_NAME} # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = ${PACKAGE_VERSION} # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = ${abs_top_builddir}/doc # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, # and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = "The \$name class" \ "The \$name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = YES # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = ${abs_top_srcdir} # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = $abs_top_srcdir} ${abs_top_builddir} # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = YES # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen to replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = YES # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = YES # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = NO # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = NO # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = NO # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 0 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = NO # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = NO # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "\$file:\$line: \$text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = doxygen.log #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ${abs_top_srcdir}/TelepathyQt ${abs_top_builddir}/TelepathyQt # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.cpp \ *.cc \ *.cxx \ *.h \ *.hh \ *.hxx \ *.hpp \ *.dox # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = */.svn/* \ */.git/* \ */cmake/* \ *.moc.* \ */tests/* \ *-internal.* \ future* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = ${abs_top_srcdir}/examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = * # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = YES # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = ${GENERATE_HTML} # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = @abs_top_srcdir@/doxygen-header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = @abs_top_srcdir@/doxygen-footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = @abs_top_srcdir@/doxygen.css # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = NO # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = ${GENERATE_CHM} # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = ../${PROJECT}.chm # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = ${HHC_PATH} # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = ${GENERATE_CHI} # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = YES # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to FRAME, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. Other possible values # for this tag are: HIERARCHIES, which will generate the Groups, Directories, # and Class Hiererachy pages using a tree view instead of an ordered list; # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which # disables this behavior completely. For backwards compatibility with previous # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE # respectively. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = ${GENERATE_LATEX} # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = ${PAPER_SIZE} # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = YES # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = ${GENERATE_RTF} # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = ${GENERATE_MAN} # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .1 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = ${GENERATE_XML} # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = ${abs_top_srcdir} ${abs_top_builddir} # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = * # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. # FIXME: for some reason, doxygen doesn't seem to emit a doxygen= attribute at all # in the element if there is no location, in which case there is nothing for # installdox to rewrite. TAGFILES = ${QT_TAGS_FILE}=/you/forgot/to/run/installdox # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = ${abs_top_builddir}/doc/html/${PACKAGE_NAME}.tags # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = ${PERL_PATH} #--------------------------------------------------------------------------- # Configuration options related to the dot tool # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = NO # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = ${HAVE_DOT} # By default doxygen will write a font called FreeSans.ttf to the output # directory and reference it in all dot files that doxygen generates. This # font does not include all possible unicode characters however, so when you need # these (or just want a differently looking font) you can specify the font name # using DOT_FONTNAME. You need need to make sure dot is able to find the font, # which can be done by putting it in a standard location or by setting the # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # containing the font. DOT_FONTNAME = FreeSans # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a # different font using DOT_FONTNAME you can set the path where dot # can find it using this tag. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = NO # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = ${DOT_PATH} # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is enabled by default, which results in a transparent # background. Warning: Depending on the platform used, enabling this option # may lead to badly anti-aliased labels on the edges of a graph (i.e. they # become hard to read). DOT_TRANSPARENT = YES # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO GENERATE_QHP = ${GENERATE_QHP} QHP_NAMESPACE = "org.freedesktop.Telepathy.Qt" QHP_VIRTUAL_FOLDER = "${PROJECT_NAME}-${PACKAGE_VERSION}" QCH_FILE = ${abs_top_builddir}/doc/help/telepathy-qt.qch QHG_LOCATION = ${QHELPGENERATOR_EXECUTABLE} ### TelepathyQt Settings ALIASES = \ "intern=\parInternal use only." \ "reimp=\parReimplemented from superclass." \ "obsolete=@deprecated" \ "feature=\xrefitem features \"Feature(s)\" \"Features\"" \ "maintainer=\xrefitem maintainers \"Maintainer(s)\" \"Maintainers\"" \ "unmaintained=\xrefitem unmaintained \"Unmaintained\" \"Unmaintained\"" \ "requirement=\xrefitem requirements \"Requirement(s)\" \"Requirements\"" \ "faq=\xrefitem FAQ \"F.A.Q.\" \"F.A.Q.\"" \ "authors=\xrefitem authors \"Author(s)\" \"Authors\"" \ "maintainers=\xrefitem maintainers \"Maintainer(s)\" \"Maintainers\"" \ "glossary=\xrefitem glossary \"TelepathyQt Glossary\" \"TelepathyQt Glossary\"" \ "acronym=\b "\ "licenses=\xrefitem licenses \"License(s)\" \"Licenses\"" \ "short=@brief "\ "FIXME=\xrefitem fixme \"Fixme\" \"Fixme\"" \ "bc=\xrefitem bc \"Binary Compatible\" \"Binary Compatible\"" \ "telepathy=Telepathy" \ "telepathy_spec=Telepathy specification" \ "dbus=D-Bus" \ "artistic=Artistic" \ "bsd=BSD" \ "x11=X11" \ "gpl=GPL" \ "lgpl=LGPL" \ "qpl=QPL" PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS \ TP_QT_EXPORT="" \ TP_QT_NO_EXPORT="" \ Q_SLOTS="slots" \ Q_SIGNALS="signals" telepathy-qt-0.9.6.1/TelepathyQt/0000755000175100017520000000000012530423576020166 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/TelepathyQt/channel-factory.cpp0000644000175100017520000005763212530423576023764 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/channel-factory.moc.hpp" #include "TelepathyQt/_gen/future-constants.h" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ChannelFactory::Private { Private(); QList features; typedef QPair CtorPair; QList ctors; }; ChannelFactory::Private::Private() { } /** * \class ChannelFactory * \ingroup utils * \headerfile TelepathyQt/channel-factory.h * * \brief The ChannelFactory class is responsible for constructing Channel * objects according to application-defined settings. */ /** * Create a new ChannelFactory object. * * The returned factory will construct channel subclasses provided by TelepathyQt as appropriate * for the channel immutable properties, but not make any features ready. * * \param bus The QDBusConnection the proxies constructed using this factory should use. * \return An ChannelFactoryPtr pointing to the newly created factory. */ ChannelFactoryPtr ChannelFactory::create(const QDBusConnection &bus) { return ChannelFactoryPtr(new ChannelFactory(bus)); } /** * Construct a new ChannelFactory object. * * The constructed factory will construct channel subclasses provided by TelepathyQt as appropriate * for the channel immutable properties, but not make any features ready. * * \param bus The QDBusConnection the proxies constructed using this factory should use. */ ChannelFactory::ChannelFactory(const QDBusConnection &bus) : DBusProxyFactory(bus), mPriv(new Private) { setSubclassForTextChats(); setSubclassForTextChatrooms(); setSubclassForCalls(); setSubclassForStreamedMediaCalls(); setSubclassForRoomLists(); setSubclassForIncomingDBusTubes(); setSubclassForOutgoingDBusTubes(); setSubclassForIncomingRoomDBusTubes(); setSubclassForOutgoingRoomDBusTubes(); setSubclassForIncomingFileTransfers(); setSubclassForOutgoingFileTransfers(); setSubclassForIncomingStreamTubes(); setSubclassForOutgoingStreamTubes(); setSubclassForIncomingRoomStreamTubes(); setSubclassForOutgoingRoomStreamTubes(); setSubclassForContactSearches(); setSubclassForServerAuthentication(); setFallbackSubclass(); } /** * Class destructor. */ ChannelFactory::~ChannelFactory() { delete mPriv; } Features ChannelFactory::featuresForTextChats(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::textChat(additionalProps)); } void ChannelFactory::addFeaturesForTextChats(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::textChat(additionalProps), features); addFeaturesFor(ChannelClassSpec::unnamedTextChat(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForTextChats( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::textChat(additionalProps)); } void ChannelFactory::setConstructorForTextChats(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::textChat(additionalProps), ctor); setConstructorFor(ChannelClassSpec::unnamedTextChat(additionalProps), ctor); } Features ChannelFactory::featuresForTextChatrooms(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::textChatroom(additionalProps)); } void ChannelFactory::addFeaturesForTextChatrooms(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::textChatroom(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForTextChatrooms( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::textChatroom(additionalProps)); } void ChannelFactory::setConstructorForTextChatrooms(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::textChatroom(additionalProps), ctor); } Features ChannelFactory::featuresForCalls(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::audioCall(additionalProps)); } void ChannelFactory::addFeaturesForCalls(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::audioCall(additionalProps), features); addFeaturesFor(ChannelClassSpec::videoCall(additionalProps), features); } void ChannelFactory::setConstructorForCalls(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::audioCall(additionalProps), ctor); setConstructorFor(ChannelClassSpec::videoCall(additionalProps), ctor); } Features ChannelFactory::featuresForStreamedMediaCalls(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::streamedMediaCall(additionalProps)); } void ChannelFactory::addFeaturesForStreamedMediaCalls(const Features &features, const QVariantMap &additionalProps) { ChannelClassSpec smSpec = ChannelClassSpec::streamedMediaCall(additionalProps); ChannelClassSpec unnamedSMSpec = ChannelClassSpec::unnamedStreamedMediaCall(additionalProps); addFeaturesFor(smSpec, features); addFeaturesFor(unnamedSMSpec, features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForStreamedMediaCalls( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::streamedMediaCall(additionalProps)); } void ChannelFactory::setConstructorForStreamedMediaCalls(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { ChannelClassSpec smSpec = ChannelClassSpec::streamedMediaCall(additionalProps); ChannelClassSpec unnamedSMSpec = ChannelClassSpec::unnamedStreamedMediaCall(additionalProps); setConstructorFor(smSpec, ctor); setConstructorFor(unnamedSMSpec, ctor); } Features ChannelFactory::featuresForRoomLists(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::roomList(additionalProps)); } void ChannelFactory::addFeaturesForRoomLists(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::roomList(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForRoomLists( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::roomList(additionalProps)); } void ChannelFactory::setConstructorForRoomLists(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::roomList(additionalProps), ctor); } Features ChannelFactory::featuresForOutgoingFileTransfers(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::outgoingFileTransfer(additionalProps)); } void ChannelFactory::addFeaturesForOutgoingFileTransfers(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::outgoingFileTransfer(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingFileTransfers( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::outgoingFileTransfer(additionalProps)); } void ChannelFactory::setConstructorForOutgoingFileTransfers(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::outgoingFileTransfer(additionalProps), ctor); } Features ChannelFactory::featuresForIncomingFileTransfers(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::incomingFileTransfer(additionalProps)); } void ChannelFactory::addFeaturesForIncomingFileTransfers(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::incomingFileTransfer(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingFileTransfers( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::incomingFileTransfer(additionalProps)); } void ChannelFactory::setConstructorForIncomingFileTransfers(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::incomingFileTransfer(additionalProps), ctor); } Features ChannelFactory::featuresForOutgoingStreamTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::outgoingStreamTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForOutgoingStreamTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::outgoingStreamTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingStreamTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::outgoingStreamTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForOutgoingStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::outgoingStreamTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForIncomingStreamTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::incomingStreamTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForIncomingStreamTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::incomingStreamTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingStreamTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::incomingStreamTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForIncomingStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::incomingStreamTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForOutgoingRoomStreamTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::outgoingRoomStreamTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForOutgoingRoomStreamTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::outgoingRoomStreamTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingRoomStreamTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::outgoingRoomStreamTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForOutgoingRoomStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::outgoingRoomStreamTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForIncomingRoomStreamTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::incomingRoomStreamTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForIncomingRoomStreamTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::incomingRoomStreamTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingRoomStreamTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::incomingRoomStreamTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForIncomingRoomStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::incomingRoomStreamTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForOutgoingDBusTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForOutgoingDBusTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingDBusTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForOutgoingDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForIncomingDBusTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForIncomingDBusTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingDBusTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForIncomingDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForOutgoingRoomDBusTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForOutgoingRoomDBusTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingRoomDBusTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForOutgoingRoomDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForIncomingRoomDBusTubes(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps)); } void ChannelFactory::addFeaturesForIncomingRoomDBusTubes(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingRoomDBusTubes( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps)); } void ChannelFactory::setConstructorForIncomingRoomDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps), ctor); } Features ChannelFactory::featuresForContactSearches(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::contactSearch(additionalProps)); } void ChannelFactory::addFeaturesForContactSearches(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::contactSearch(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForContactSearches( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::contactSearch(additionalProps)); } void ChannelFactory::setConstructorForContactSearches(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::contactSearch(additionalProps), ctor); } Features ChannelFactory::featuresForServerAuthentication(const QVariantMap &additionalProps) const { return featuresFor(ChannelClassSpec::serverAuthentication(additionalProps)); } void ChannelFactory::addFeaturesForServerAuthentication(const Features &features, const QVariantMap &additionalProps) { addFeaturesFor(ChannelClassSpec::serverAuthentication(additionalProps), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForServerAuthentication( const QVariantMap &additionalProps) const { return constructorFor(ChannelClassSpec::serverAuthentication(additionalProps)); } void ChannelFactory::setConstructorForServerAuthentication(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps) { setConstructorFor(ChannelClassSpec::serverAuthentication(additionalProps), ctor); } Features ChannelFactory::commonFeatures() const { return featuresFor(ChannelClassSpec()); } void ChannelFactory::addCommonFeatures(const Features &features) { addFeaturesFor(ChannelClassSpec(), features); } ChannelFactory::ConstructorConstPtr ChannelFactory::fallbackConstructor() const { return constructorFor(ChannelClassSpec()); } void ChannelFactory::setFallbackConstructor(const ConstructorConstPtr &ctor) { setConstructorFor(ChannelClassSpec(), ctor); } Features ChannelFactory::featuresFor(const ChannelClassSpec &channelClass) const { Features features; foreach (const ChannelClassFeatures &pair, mPriv->features) { if (pair.first.isSubsetOf(channelClass)) { features.unite(pair.second); } } return features; } void ChannelFactory::addFeaturesFor(const ChannelClassSpec &channelClass, const Features &features) { QList::iterator i; for (i = mPriv->features.begin(); i != mPriv->features.end(); ++i) { if (channelClass.allProperties().size() > i->first.allProperties().size()) { break; } if (i->first == channelClass) { i->second.unite(features); return; } } // We ran out of feature specifications (for the given size/specificity of a channel class) // before finding a matching one, so let's create a new entry mPriv->features.insert(i, qMakePair(channelClass, features)); } ChannelFactory::ConstructorConstPtr ChannelFactory::constructorFor(const ChannelClassSpec &cc) const { QList::iterator i; for (i = mPriv->ctors.begin(); i != mPriv->ctors.end(); ++i) { if (i->first.isSubsetOf(cc)) { return i->second; } } // If this is reached, we didn't have a proper fallback constructor Q_ASSERT(false); return ConstructorConstPtr(); } void ChannelFactory::setConstructorFor(const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor) { if (ctor.isNull()) { warning().nospace() << "Tried to set a NULL ctor for ChannelClass(" << channelClass.channelType() << ", " << channelClass.targetHandleType() << ", " << channelClass.allProperties().size() << "props in total)"; return; } QList::iterator i; for (i = mPriv->ctors.begin(); i != mPriv->ctors.end(); ++i) { if (channelClass.allProperties().size() > i->first.allProperties().size()) { break; } if (i->first == channelClass) { i->second = ctor; return; } } // We ran out of constructors (for the given size/specificity of a channel class) // before finding a matching one, so let's create a new entry mPriv->ctors.insert(i, qMakePair(channelClass, ctor)); } /** * Constructs a Channel proxy and begins making it ready. * * If a valid proxy already exists in the factory cache for the given combination of \a busName and * \a objectPath, it is returned instead. All newly created proxies are automatically cached until * they're either DBusProxy::invalidated() or the last reference to them outside the factory has * been dropped. * * The proxy can be accessed immediately after this function returns using PendingReady::proxy(). * * \param connection Proxy for the owning connection of the channel. * \param channelPath The object path of the channel. * \param immutableProperties The immutable properties of the channel. * \return A PendingReady operation with the proxy in PendingReady::proxy(). */ PendingReady *ChannelFactory::proxy(const ConnectionPtr &connection, const QString &channelPath, const QVariantMap &immutableProperties) const { DBusProxyPtr proxy = cachedProxy(connection->busName(), channelPath); if (proxy.isNull()) { proxy = constructorFor(ChannelClassSpec(immutableProperties))->construct(connection, channelPath, immutableProperties); } return nowHaveProxy(proxy); } /** * Transforms well-known names to the corresponding unique names, as is appropriate for Channel * * \param uniqueOrWellKnown The name to transform. * \return The unique name corresponding to \a uniqueOrWellKnown (which may be it itself). */ QString ChannelFactory::finalBusNameFrom(const QString &uniqueOrWellKnown) const { return StatefulDBusProxy::uniqueNameFrom(dbusConnection(), uniqueOrWellKnown); } /** * Return features as configured for the channel class given by the Channel::immutableProperties() * of \a proxy. * * \param proxy The Channel proxy to determine the features for. * \return A list of Feature objects. */ Features ChannelFactory::featuresFor(const DBusProxyPtr &proxy) const { ChannelPtr chan = ChannelPtr::qObjectCast(proxy); Q_ASSERT(!chan.isNull()); return featuresFor(ChannelClassSpec(chan->immutableProperties())); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/profile-manager.cpp0000644000175100017520000002600412530423576023744 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/profile-manager.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ProfileManager::Private { Private(ProfileManager *parent, const QDBusConnection &bus); static void introspectMain(Private *self); static void introspectFakeProfiles(Private *self); ProfileManager *parent; ReadinessHelper *readinessHelper; QDBusConnection bus; QHash profiles; QList cms; }; ProfileManager::Private::Private(ProfileManager *parent, const QDBusConnection &bus) : parent(parent), readinessHelper(parent->readinessHelper()), bus(bus) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; ReadinessHelper::Introspectable introspectableFakeProfiles( QSet() << 0, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectFakeProfiles, this); introspectables[FeatureFakeProfiles] = introspectableFakeProfiles; readinessHelper->addIntrospectables(introspectables); } void ProfileManager::Private::introspectMain(ProfileManager::Private *self) { QStringList searchDirs = Profile::searchDirs(); foreach (const QString searchDir, searchDirs) { QDir dir(searchDir); dir.setFilter(QDir::Files); QFileInfoList list = dir.entryInfoList(); for (int i = 0; i < list.size(); ++i) { QFileInfo fi = list.at(i); if (fi.completeSuffix() != QLatin1String("profile")) { continue; } QString fileName = fi.absoluteFilePath(); QString serviceName = fi.baseName(); if (self->profiles.contains(serviceName)) { debug() << "Profile for service" << serviceName << "already " "exists. Ignoring profile file:" << fileName; continue; } ProfilePtr profile = Profile::createForFileName(fileName); if (!profile->isValid()) { continue; } if (profile->type() != QLatin1String("IM")) { debug() << "Ignoring profile for service" << serviceName << ": type != IM. Profile file:" << fileName; continue; } debug() << "Found profile for service" << serviceName << "- profile file:" << fileName; self->profiles.insert(serviceName, profile); } } self->readinessHelper->setIntrospectCompleted(FeatureCore, true); } void ProfileManager::Private::introspectFakeProfiles(ProfileManager::Private *self) { PendingStringList *pendingCmNames = ConnectionManager::listNames(self->bus); self->parent->connect(pendingCmNames, SIGNAL(finished(Tp::PendingOperation *)), SLOT(onCmNamesRetrieved(Tp::PendingOperation *))); } /** * \class ProfileManager * \headerfile TelepathyQt/profile-manager.h * * \brief The ProfileManager class provides helper methods to retrieve Profile * objects. */ /** * Feature representing the core that needs to become ready to make the ProfileManager * object usable. * * Note that this feature must be enabled in order to use all ProfileManager methods. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature ProfileManager::FeatureCore = Feature(QLatin1String(ProfileManager::staticMetaObject.className()), 0, true); /** * Enabling this feature will make ProfileManager create fake Profile objects to all protocols * supported on the installed connection managers, even if they don't have .profile files installed * making use of them. * * Fake profiles are identified by Profile::isFake() returning \c true. * * The fake profile will contain the following info: * - Profile::type() will return "IM" * - Profile::provider() will return an empty string * - Profile::serviceName() will return cmName-protocolName * - Profile::name() and Profile::protocolName() will return protocolName * - Profile::iconName() will return "im-protocolName" * - Profile::cmName() will return cmName * - Profile::parameters() will return a list matching CM default parameters for protocol with name * protocolName. * - Profile::presences() will return an empty list and * Profile::allowOtherPresences() will return \c true, meaning that CM * presences should be used * - Profile::unsupportedChannelClassSpecs() will return an empty list * * Where cmName and protocolName are the name of the connection manager and the name of the protocol * for which this fake Profile is created, respectively. */ const Feature ProfileManager::FeatureFakeProfiles = Feature(QLatin1String(ProfileManager::staticMetaObject.className()), 1); /** * Create a new ProfileManager object. */ ProfileManagerPtr ProfileManager::create(const QDBusConnection &bus) { return ProfileManagerPtr(new ProfileManager(bus)); } /** * Construct a new ProfileManager object. */ ProfileManager::ProfileManager(const QDBusConnection &bus) : Object(), ReadyObject(this, FeatureCore), mPriv(new Private(this, bus)) { } /** * Class destructor. */ ProfileManager::~ProfileManager() { delete mPriv; } /** * Return a list of all available profiles. * * \return A list of all available profiles. */ QList ProfileManager::profiles() const { return mPriv->profiles.values(); } /** * Return a list of all available profiles for a given connection manager. * * \param cmName Connection manager name. * \return A list of all available profiles for a given connection manager. */ QList ProfileManager::profilesForCM(const QString &cmName) const { QList ret; foreach (const ProfilePtr &profile, mPriv->profiles) { if (profile->cmName() == cmName) { ret << profile; } } return ret; } /** * Return a list of all available profiles for a given \a protocol. * * \param protocolName Protocol name. * \return A list of all available profiles for a given \a protocol. */ QList ProfileManager::profilesForProtocol( const QString &protocolName) const { QList ret; foreach (const ProfilePtr &profile, mPriv->profiles) { if (profile->protocolName() == protocolName) { ret << profile; } } return ret; } /** * Return the profile for a given \a service. * * \param serviceName Service name. * \return The profile for \a service. */ ProfilePtr ProfileManager::profileForService(const QString &serviceName) const { return mPriv->profiles.value(serviceName); } void ProfileManager::onCmNamesRetrieved(Tp::PendingOperation *op) { if (op->isError()) { warning().nospace() << "Getting available CMs failed with " << op->errorName() << ":" << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureFakeProfiles, false, op->errorName(), op->errorMessage()); return; } PendingStringList *pendingCmNames = qobject_cast(op); QStringList cmNames(pendingCmNames->result()); if (cmNames.isEmpty()) { mPriv->readinessHelper->setIntrospectCompleted(FeatureFakeProfiles, true); return; } QList ops; foreach (const QString &cmName, cmNames) { ConnectionManagerPtr cm = ConnectionManager::create(mPriv->bus, cmName); mPriv->cms.append(cm); ops.append(cm->becomeReady()); } PendingComposite *pc = new PendingComposite(ops, false, ProfileManagerPtr(this)); connect(pc, SIGNAL(finished(Tp::PendingOperation *)), SLOT(onCMsReady(Tp::PendingOperation *))); } void ProfileManager::onCMsReady(Tp::PendingOperation *op) { if (op->isError()) { warning() << "Failed introspecting all CMs, trying to create fake profiles anyway"; } ProfilePtr profile; foreach (const ConnectionManagerPtr &cm, mPriv->cms) { if (!cm->isReady()) { continue; } foreach (const QString &protocolName, cm->supportedProtocols()) { /* check if there is a profile whose service name is protocolName, and if found, * check if the profile is for cm, if not check if there is a profile whose service * name is cm-protocolName, and if not found create one named cm-protocolName. */ profile = profileForService(protocolName); if (profile && profile->cmName() == cm->name()) { continue; } QString serviceName = QString(QLatin1String("%1-%2")).arg(cm->name()).arg(protocolName); profile = profileForService(serviceName); if (profile) { continue; } profile = ProfilePtr(new Profile( serviceName, cm->name(), protocolName, cm->protocol(protocolName))); mPriv->profiles.insert(serviceName, profile); } } mPriv->readinessHelper->setIntrospectCompleted(FeatureFakeProfiles, true); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/pending-contacts.h0000644000175100017520000001057212530423576023604 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2011 Collabora Ltd. * @copyright Copyright (C) 2008-2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_contacts_h_HEADER_GUARD_ #define _TelepathyQt_pending_contacts_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include namespace Tp { class ContactManager; class TP_QT_EXPORT PendingContacts : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingContacts); public: ~PendingContacts(); ContactManagerPtr manager() const; Features features() const; bool isForHandles() const; UIntList handles() const; bool isForIdentifiers() const; QStringList identifiers() const; bool isForVCardAddresses() const; QString vcardField() const; QStringList vcardAddresses() const; bool isForUris() const; QStringList uris() const; bool isUpgrade() const; QList contactsToUpgrade() const; QList contacts() const; UIntList invalidHandles() const; QStringList validIdentifiers() const; QHash > invalidIdentifiers() const; QStringList validVCardAddresses() const; QStringList invalidVCardAddresses() const; QStringList validUris() const; QStringList invalidUris() const; private Q_SLOTS: TP_QT_NO_EXPORT void onAttributesFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onRequestHandlesFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onAddressingGetContactsFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onReferenceHandlesFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onNestedFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onInspectHandlesFinished(QDBusPendingCallWatcher *); private: friend class ContactManager; enum RequestType { ForHandles, ForIdentifiers, ForVCardAddresses, ForUris, Upgrade }; // If errorName is non-empty, these will fail instantly TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const UIntList &handles, const Features &features, const Features &missingFeatures, const QStringList &interfaces, const QMap &satisfyingContacts, const QSet &otherContacts, const QString &errorName = QString(), const QString &errorMessage = QString()); TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const QStringList &list, RequestType requestType, const Features &features, const QStringList &interfaces, const QString &errorName = QString(), const QString &errorMessage = QString()); TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const QString &vcardField, const QStringList &vcardAddresses, const Features &features, const QStringList &interfaces, const QString &errorName = QString(), const QString &errorMessage = QString()); TP_QT_NO_EXPORT PendingContacts(const ContactManagerPtr &manager, const QList &contacts, const Features &features, const QString &errorName = QString(), const QString &errorMessage = QString()); TP_QT_NO_EXPORT void allAttributesFetched(); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/DBus0000644000175100017520000000033212530423576020744 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBus_HEADER_GUARD_ #define _TelepathyQt_DBus_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-factory.cpp0000644000175100017520000001371112530423576024501 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include namespace Tp { /** * \class ConnectionFactory * \ingroup utils * \headerfile TelepathyQt/connection-factory.h * * \brief The ConnectionFactory class is responsible for constructing Connection * objects according to application-defined settings. * * The class is used by Account and other classes which construct Connection proxy * instances to enable sharing instances of application-defined Connection * subclasses with certain features always ready. */ /** * Create a new ConnectionFactory object. * * Optionally, the \a features to make ready on all constructed proxies can be specified. The * default is to make no features ready. It should be noted that unlike Connection::becomeReady(), * FeatureCore isn't assumed. If no features are specified, which is the default behavior, no * Connection::becomeReady() call is made at all and the proxy won't be Connection::isReady(). * * \param bus The QDBusConnection for proxies constructed using this factory to use. * \param features The features to make ready on constructed Connections. * \return A ConnectionFactoryPtr object pointing to the newly created * ConnectionFactory object. */ ConnectionFactoryPtr ConnectionFactory::create(const QDBusConnection &bus, const Features &features) { return ConnectionFactoryPtr(new ConnectionFactory(bus, features)); } /** * Construct a new ConnectionFactory object. * * As in create(), it should be noted that unlike Connection::becomeReady(), FeatureCore isn't * assumed. If no \a features are specified, no Connection::becomeReady() call is made at all and * the proxy won't be Connection::isReady(). * * \param bus The QDBusConnection for proxies constructed using this factory to use. * \param features The features to make ready on constructed Connections. */ ConnectionFactory::ConnectionFactory(const QDBusConnection &bus, const Features &features) : FixedFeatureFactory(bus) { addFeatures(features); } /** * Class destructor. */ ConnectionFactory::~ConnectionFactory() { } /** * Constructs a Connection proxy and begins making it ready. * * If a valid proxy already exists in the factory cache for the given combination of \a busName and * \a objectPath, it is returned instead. All newly created proxies are automatically cached until * they're either DBusProxy::invalidated() or the last reference to them outside the factory has * been dropped. * * The proxy can be accessed immediately after this function returns using PendingReady::proxy(). * The ready operation only finishes, however, when the features specified by features(), if any, * are made ready as much as possible. If the service doesn't support a given feature, they won't * obviously be ready even if the operation finished successfully, as is the case for * Connection::becomeReady(). * * \param busName The bus/service name of the D-Bus connection object the proxy is constructed for. * \param objectPath The object path of the connection. * \param chanFactory The channel factory to use for the Connection. * \param contactFactory The channel factory to use for the Connection. * \return A PendingReady operation with the proxy in PendingReady::proxy(). */ PendingReady *ConnectionFactory::proxy(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const { DBusProxyPtr proxy = cachedProxy(busName, objectPath); if (proxy.isNull()) { proxy = construct(busName, objectPath, chanFactory, contactFactory); } return nowHaveProxy(proxy); } /** * Can be used by subclasses to override the Connection subclass constructed by the factory. * * This is automatically called by proxy() to construct proxy instances if no valid cached proxy is * found. * * The default implementation constructs Tp::Connection objects. * * \param busName The bus/service name of the D-Bus Connection object the proxy is constructed for. * \param objectPath The object path of the connection. * \param chanFactory The channel factory to use for the Connection. * \param contactFactory The channel factory to use for the Connection. * \return A pointer to the constructed Connection object. */ ConnectionPtr ConnectionFactory::construct(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const { return Connection::create(dbusConnection(), busName, objectPath, chanFactory, contactFactory); } /** * Transforms well-known names to the corresponding unique names, as is appropriate for Connection * * \param uniqueOrWellKnown The name to transform. * \return The unique name corresponding to \a uniqueOrWellKnown (which may be it itself). */ QString ConnectionFactory::finalBusNameFrom(const QString &uniqueOrWellKnown) const { return StatefulDBusProxy::uniqueNameFrom(dbusConnection(), uniqueOrWellKnown); } } telepathy-qt-0.9.6.1/TelepathyQt/StreamedMediaStream0000644000175100017520000000041212530423576023766 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StreamedMediaStream_HEADER_GUARD_ #define _TelepathyQt_StreamedMediaStream_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/presence.h0000644000175100017520000001326512530423576022152 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_presence_h_HEADER_GUARD_ #define _TelepathyQt_presence_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT Presence { public: Presence(); Presence(const SimplePresence &sp); Presence(ConnectionPresenceType type, const QString &status, const QString &statusMessage); Presence(const Presence &other); ~Presence(); static Presence available(const QString &statusMessage = QString()); static Presence chat(const QString &statusMessage = QString()); static Presence away(const QString &statusMessage = QString()); static Presence brb(const QString &statusMessage = QString()); static Presence busy(const QString &statusMessage = QString()); static Presence dnd(const QString &statusMessage = QString()); static Presence xa(const QString &statusMessage = QString()); static Presence hidden(const QString &statusMessage = QString()); static Presence offline(const QString &statusMessage = QString()); bool isValid() const { return mPriv.constData() != 0; } Presence &operator=(const Presence &other); bool operator==(const Presence &other) const; bool operator!=(const Presence &other) const; ConnectionPresenceType type() const; QString status() const; QString statusMessage() const; void setStatus(const SimplePresence &value); void setStatus(ConnectionPresenceType type, const QString &status, const QString &statusMessage); void setStatusMessage(const QString &statusMessage); SimplePresence barePresence() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT PresenceSpec { public: enum SimpleStatusFlag { NoFlags = 0, MaySetOnSelf = 0x1, CanHaveStatusMessage = 0x2, AllFlags = MaySetOnSelf | CanHaveStatusMessage }; Q_DECLARE_FLAGS(SimpleStatusFlags, SimpleStatusFlag); PresenceSpec(); PresenceSpec(const QString &status, const SimpleStatusSpec &spec); PresenceSpec(const PresenceSpec &other); ~PresenceSpec(); static PresenceSpec available(SimpleStatusFlags flags = AllFlags); static PresenceSpec chat(SimpleStatusFlags flags = AllFlags); static PresenceSpec pstn(SimpleStatusFlags flags = CanHaveStatusMessage); static PresenceSpec away(SimpleStatusFlags flags = AllFlags); static PresenceSpec brb(SimpleStatusFlags flags = AllFlags); static PresenceSpec dnd(SimpleStatusFlags flags = AllFlags); static PresenceSpec busy(SimpleStatusFlags flags = AllFlags); static PresenceSpec xa(SimpleStatusFlags flags = AllFlags); static PresenceSpec hidden(SimpleStatusFlags flags = AllFlags); static PresenceSpec offline(SimpleStatusFlags flags = CanHaveStatusMessage); static PresenceSpec unknown(SimpleStatusFlags flags = CanHaveStatusMessage); static PresenceSpec error(SimpleStatusFlags flags = CanHaveStatusMessage); bool isValid() const { return mPriv.constData() != 0; } PresenceSpec &operator=(const PresenceSpec &other); bool operator==(const PresenceSpec &other) const; bool operator!=(const PresenceSpec &other) const; bool operator<(const PresenceSpec &other) const; Presence presence(const QString &statusMessage = QString()) const; bool maySetOnSelf() const; bool canHaveStatusMessage() const; SimpleStatusSpec bareSpec() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT PresenceSpecList : public QList { public: PresenceSpecList() { } PresenceSpecList(const SimpleStatusSpecMap &specMap) { SimpleStatusSpecMap::const_iterator i = specMap.constBegin(); SimpleStatusSpecMap::const_iterator end = specMap.end(); for (; i != end; ++i) { QString status = i.key(); SimpleStatusSpec spec = i.value(); append(PresenceSpec(status, spec)); } } PresenceSpecList(const QList &other) : QList(other) { } QMap toMap() const { QMap ret; Q_FOREACH (const PresenceSpec &spec, *this) { ret.insert(spec.presence().status(), spec); } return ret; } SimpleStatusSpecMap bareSpecs() const { SimpleStatusSpecMap ret; Q_FOREACH (const PresenceSpec &spec, *this) { ret.insert(spec.presence().status(), spec.bareSpec()); } return ret; } }; Q_DECLARE_OPERATORS_FOR_FLAGS(PresenceSpec::SimpleStatusFlags) } // Tp Q_DECLARE_METATYPE(Tp::Presence); Q_DECLARE_METATYPE(Tp::PresenceSpec); Q_DECLARE_METATYPE(Tp::PresenceSpecList); #endif telepathy-qt-0.9.6.1/TelepathyQt/CallContentInterfaceAudioControlInterface0000644000175100017520000000045412530423576030307 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentInterfaceAudioControlInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentInterfaceAudioControlInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelDispatcher0000644000175100017520000000040212530423576023464 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelDispatcher_HEADER_GUARD_ #define _TelepathyQt_ChannelDispatcher_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelDispatcherInterface0000644000175100017520000000042412530423576025311 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelDispatcherInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelDispatcherInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-ready.cpp0000644000175100017520000001041312530423576023417 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-ready.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT PendingReady::Private { Private(const DBusProxyPtr &proxy, const Features &requestedFeatures) : proxy(proxy), requestedFeatures(requestedFeatures) { } DBusProxyPtr proxy; Features requestedFeatures; }; /** * \class PendingReady * \ingroup utils * \headerfile TelepathyQt/pending-ready.h * * \brief The PendingReady class represents the features requested and the reply * to a request for an object to become ready. * * Instances of this class cannot be constructed directly; the only way to get * one is via ReadyObject::becomeReady() or a DBusProxyFactory subclass. * * See \ref async_model */ /** * Construct a new PendingReady object. * * \todo Actually make it do the prepare ops. Currently they aren't taken into account in any way. * * \param object The object that will become ready. * \param requestedFeatures Features to be made ready on the object. */ PendingReady::PendingReady(const SharedPtr &object, const Features &requestedFeatures) : PendingOperation(object), mPriv(new Private(DBusProxyPtr(dynamic_cast((DBusProxy*) object.data())), requestedFeatures)) { // This is a PendingReady created by ReadinessHelper, and will be set ready by it - so should // not do anything ourselves here. } /** * Construct a new PendingReady object. * * \todo Actually make it do the prepare ops. Currently they aren't taken into account in any way. * * \param factory The factory the request was made with. * \param proxy The proxy that will become ready. * \param requestedFeatures Features to be made ready on the object. */ PendingReady::PendingReady(const SharedPtr &factory, const DBusProxyPtr &proxy, const Features &requestedFeatures) : PendingOperation(factory), mPriv(new Private(proxy, requestedFeatures)) { if (requestedFeatures.isEmpty()) { setFinished(); return; } connect(proxy->becomeReady(requestedFeatures), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onNestedFinished(Tp::PendingOperation*))); } /** * Class destructor. */ PendingReady::~PendingReady() { delete mPriv; } /** * Return the proxy that should become ready. * * \return A pointer to the DBusProxy object if the operation was * created by a proxy object or a DBusProxyFactory, * otherwise a null DBusProxyPtr. */ DBusProxyPtr PendingReady::proxy() const { return mPriv->proxy; } /** * Return the features that were requested to become ready on the * object. * * \return The requested features as a set of Feature objects. */ Features PendingReady::requestedFeatures() const { return mPriv->requestedFeatures; } void PendingReady::onNestedFinished(Tp::PendingOperation *nested) { Q_ASSERT(nested->isFinished()); if (nested->isValid()) { setFinished(); } else { warning() << "Nested PendingReady for" << object() << "failed with" << nested->errorName() << ":" << nested->errorMessage(); setFinishedWithError(nested->errorName(), nested->errorMessage()); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/AbstractClientObserver0000644000175100017520000000041112530423576024517 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractClientObserver_HEADER_GUARD_ #define _TelepathyQt_AbstractClientObserver_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Client0000644000175100017520000000034012530423576021324 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Client_HEADER_GUARD_ #define _TelepathyQt_Client_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Constants0000644000175100017520000000035112530423576022064 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Constants_HEADER_GUARD_ #define _TelepathyQt_Constants_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceContactCapabilitiesInterface0000644000175100017520000000046612530423576031506 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceContactCapabilitiesInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceContactCapabilitiesInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/abstract-interface.h0000644000175100017520000000517412530423576024107 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_abstract_interface_h_HEADER_GUARD_ #define _TelepathyQt_abstract_interface_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class DBusProxy; class PendingVariant; class PendingOperation; class PendingVariantMap; class TP_QT_EXPORT AbstractInterface : public QDBusAbstractInterface { Q_OBJECT Q_DISABLE_COPY(AbstractInterface) public: virtual ~AbstractInterface(); bool isValid() const; QString invalidationReason() const; QString invalidationMessage() const; void setMonitorProperties(bool monitorProperties); bool isMonitoringProperties() const; Q_SIGNALS: void propertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties); protected Q_SLOTS: virtual void invalidate(Tp::DBusProxy *proxy, const QString &error, const QString &message); protected: AbstractInterface(DBusProxy *proxy, const QLatin1String &interface); AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &connection, QObject *parent); PendingVariant *internalRequestProperty(const QString &name) const; PendingOperation *internalSetProperty(const QString &name, const QVariant &newValue); PendingVariantMap *internalRequestAllProperties() const; private Q_SLOTS: TP_QT_NO_EXPORT void onPropertiesChanged(const QString &interface, const QVariantMap &changedProperties, const QStringList &invalidatedProperties); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/media-session-handler.cpp0000644000175100017520000000212312530423576025043 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-media-session-handler-body.hpp" #include "TelepathyQt/_gen/cli-media-session-handler.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/AbstractDBusServiceInterface0000644000175100017520000000042212530423576025572 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractDBusServiceInterface_HEADER_GUARD_ #define _TelepathyQt_AbstractDBusServiceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/media-session-handler.xml0000644000175100017520000000036112530423576025063 0ustar00kaffeinekaffeine00000000000000 Media session handler telepathy-qt-0.9.6.1/TelepathyQt/types-internal.h0000644000175100017520000001240112530423576023313 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_types_internal_h_HEADER_GUARD_ #define _TelepathyQt_types_internal_h_HEADER_GUARD_ #include #include #include namespace Tp { /** * Private structure used to circumvent QtDBus' strict demarshalling */ struct TP_QT_EXPORT SUSocketAddress { /** * A dotted-quad IPv4 address literal: four ASCII decimal numbers, each * between 0 and 255 inclusive, e.g. "192.168.0.1". */ QString address; /** * The TCP or UDP port number. */ uint port; }; TP_QT_EXPORT bool operator==(const SUSocketAddress& v1, const SUSocketAddress& v2); TP_QT_EXPORT inline bool operator!=(const SUSocketAddress& v1, const SUSocketAddress& v2) { return !operator==(v1, v2); } TP_QT_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SUSocketAddress& val); TP_QT_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SUSocketAddress& val); } // Tp // specialise for Tp::SocketAddressIPv4, allowing it to be used in place of QDBusVariant template<> inline Tp::SocketAddressIPv4 qdbus_cast(const QDBusArgument &arg, Tp::SocketAddressIPv4 *) { if (arg.currentSignature() == QLatin1String("(su)")) { // Use Tp::SUSocketAddress Tp::SUSocketAddress saddr = qdbus_cast(arg); Tp::SocketAddressIPv4 addr; addr.address = saddr.address; addr.port = saddr.port; return addr; } else if (arg.currentSignature() == QLatin1String("(sq)")) { // Keep it standard Tp::SocketAddressIPv4 item; arg >> item; return item; } else { // This should never happen... return Tp::SocketAddressIPv4(); } } template<> inline Tp::SocketAddressIPv4 qdbus_cast(const QVariant &v, Tp::SocketAddressIPv4 *) { int id = v.userType(); if (id == qMetaTypeId()) { QDBusArgument arg = qvariant_cast(v); if (arg.currentSignature() == QLatin1String("(su)")) { // Use Tp::SUSocketAddress Tp::SUSocketAddress saddr = qdbus_cast(arg); Tp::SocketAddressIPv4 addr; addr.address = saddr.address; addr.port = saddr.port; return addr; } else if (arg.currentSignature() == QLatin1String("(sq)")) { // Keep it standard Tp::SocketAddressIPv4 item; arg >> item; return item; } else { // This should never happen... return Tp::SocketAddressIPv4(); } } else return qvariant_cast(v); } // specialise for Tp::SocketAddressIPv6, allowing it to be used in place of QDBusVariant template<> inline Tp::SocketAddressIPv6 qdbus_cast(const QDBusArgument &arg, Tp::SocketAddressIPv6 *) { if (arg.currentSignature() == QLatin1String("(su)")) { // Use Tp::SUSocketAddress Tp::SUSocketAddress saddr = qdbus_cast(arg); Tp::SocketAddressIPv6 addr; addr.address = saddr.address; addr.port = saddr.port; return addr; } else if (arg.currentSignature() == QLatin1String("(sq)")) { // Keep it standard Tp::SocketAddressIPv6 item; arg >> item; return item; } else { // This should never happen... return Tp::SocketAddressIPv6(); } } template<> inline Tp::SocketAddressIPv6 qdbus_cast(const QVariant &v, Tp::SocketAddressIPv6 *) { int id = v.userType(); if (id == qMetaTypeId()) { QDBusArgument arg = qvariant_cast(v); if (arg.currentSignature() == QLatin1String("(su)")) { // Use Tp::SUSocketAddress Tp::SUSocketAddress saddr = qdbus_cast(arg); Tp::SocketAddressIPv6 addr; addr.address = saddr.address; addr.port = saddr.port; return addr; } else if (arg.currentSignature() == QLatin1String("(sq)")) { // Keep it standard Tp::SocketAddressIPv6 item; arg >> item; return item; } else { // This should never happen... return Tp::SocketAddressIPv6(); } } else return qvariant_cast(v); } Q_DECLARE_METATYPE(Tp::SUSocketAddress) #endif telepathy-qt-0.9.6.1/TelepathyQt/debug.h0000644000175100017520000000275412530423576021435 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_debug_h_HEADER_GUARD_ #define _TelepathyQt_debug_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { TP_QT_EXPORT void enableDebug(bool enable); TP_QT_EXPORT void enableWarnings(bool enable); typedef void (*DebugCallback)(const QString &libraryName, const QString &libraryVersion, QtMsgType type, const QString &msg); TP_QT_EXPORT void setDebugCallback(DebugCallback cb); } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/constants.h0000644000175100017520000001346612530423576022365 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_constants_h_HEADER_GUARD_ #define _TelepathyQt_constants_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif /** * \addtogroup typesconstants Types and constants * * Enumerated, flag, structure, list and mapping types and utility constants. */ /** * \defgroup utilityconsts Utility string constants * \ingroup typesconstants * * Utility constants which aren't generated from the specification but are * useful for working with the Telepathy protocol. * @{ */ /** * The prefix for a connection manager's bus name, to which the CM's name (e.g. * "gabble") should be appended. */ #define TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE QLatin1String("org.freedesktop.Telepathy.ConnectionManager.") /** * The prefix for a connection manager's object path, to which the CM's name * (e.g. "gabble") should be appended. */ #define TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE QLatin1String("/org/freedesktop/Telepathy/ConnectionManager/") /** * The prefix for a connection's bus name, to which the CM's name (e.g. * "gabble"), the protocol (e.g. "jabber") and an element * representing the account should be appended. */ #define TP_QT_CONNECTION_BUS_NAME_BASE QLatin1String("org.freedesktop.Telepathy.Connection.") /** * The prefix for a connection's object path, to which the CM's name (e.g. * "gabble"), the protocol (e.g. "jabber") and an element * representing the account should be appended. */ #define TP_QT_CONNECTION_OBJECT_PATH_BASE QLatin1String("/org/freedesktop/Telepathy/Connection/") /** * The well-known bus name of the Account Manager. * * \see Tp::AccountManager */ #define TP_QT_ACCOUNT_MANAGER_BUS_NAME \ (QLatin1String("org.freedesktop.Telepathy.AccountManager")) /** * The object path of the Account Manager object. * * \see Tp::AccountManager */ #define TP_QT_ACCOUNT_MANAGER_OBJECT_PATH \ (QLatin1String("/org/freedesktop/Telepathy/AccountManager")) /** * The well-known bus name of the Channel Dispatcher. */ #define TP_QT_CHANNEL_DISPATCHER_BUS_NAME \ (QLatin1String("org.freedesktop.Telepathy.ChannelDispatcher")) /** * The object path of the Channel Dispatcherr object. */ #define TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH \ (QLatin1String("/org/freedesktop/Telepathy/ChannelDispatcher")) /** * The prefix for an Account's object path, to which the CM's name (e.g. * "gabble"), the protocol (e.g. "jabber") and an element * identifying the particular account should be appended. * * \see Tp::Account */ #define TP_QT_ACCOUNT_OBJECT_PATH_BASE \ (QLatin1String("/org/freedesktop/Telepathy/Account")) /** * The object path of the Debug object of various services. */ #define TP_QT_DEBUG_OBJECT_PATH \ (QLatin1String("/org/freedesktop/Telepathy/debug")) /** * @} */ #include /** * \ingroup errorstrconsts * * The error name "org.freedesktop.DBus.Error.NameHasNoOwner" as a QLatin1String. * * Raised by the D-Bus daemon when looking up the owner of a well-known name, * if no process owns that name. * * Also used by DBusProxy to indicate that the owner of a well-known name * has disappeared (usually indicating that the process owning that name * exited or crashed). */ #define TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER \ (QLatin1String("org.freedesktop.DBus.Error.NameHasNoOwner")) /** * \ingroup errorstrconsts * * The error name "org.freedesktop.DBus.Error.UnknownInterface" as a QLatin1String. */ #define TP_QT_DBUS_ERROR_UNKNOWN_INTERFACE \ (QLatin1String("org.freedesktop.DBus.Error.UnknownInterface")) /** * \ingroup errorstrconsts * * The error name "org.freedesktop.DBus.Error.UnknownMethod" as a QLatin1String. * * Raised by the D-Bus daemon when the method name invoked isn't * known by the object you invoked it on. */ #define TP_QT_DBUS_ERROR_UNKNOWN_METHOD \ (QLatin1String("org.freedesktop.DBus.Error.UnknownMethod")) /** * \ingroup errorstrconsts * * The error name "org.freedesktop.Telepathy.Qt.Error.ObjectRemoved" as a QLatin1String. */ #define TP_QT_ERROR_OBJECT_REMOVED \ (QLatin1String("org.freedesktop.Telepathy.Qt.Error.ObjectRemoved")) /** * \ingroup errorstrconsts * * The error name "org.freedesktop.Telepathy.Qt.Error.Inconsistent" as a QLatin1String. */ #define TP_QT_ERROR_INCONSISTENT \ (QLatin1String("org.freedesktop.Telepathy.Qt.Error.Inconsistent")) /** * \ingroup errorstrconsts * * The error name "org.freedesktop.Telepathy.Qt.Error.Orphaned" as a QLatin1String. * * This error is used when the "parent" proxy of an object gets invalidated. For example, a Channel * whose corresponding Connection is invalidated invalidates itself with this error, as do leftover * StreamTube connections when their parent StreamTubeChannel is invalidated. The invalidation * reason of the parent proxy might provide more information on the cause of the error. */ #define TP_QT_ERROR_ORPHANED \ (QLatin1String("org.freedesktop.Telepathy.Qt.Error.Orphaned")) #endif telepathy-qt-0.9.6.1/TelepathyQt/ProtocolInterfaceAddressingInterface0000644000175100017520000000045012530423576027357 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolInterfaceAddressingInterface_HEADER_GUARD_ #define _TelepathyQt_ProtocolInterfaceAddressingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/generic-capability-filter.h0000644000175100017520000000752612530423576025367 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_generic_capability_filter_h_HEADER_GUARD_ #define _TelepathyQt_generic_capability_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { template class GenericCapabilityFilter : public Filter { public: static SharedPtr > create( const RequestableChannelClassSpecList &rccSpecs = RequestableChannelClassSpecList()) { return SharedPtr >(new GenericCapabilityFilter( rccSpecs)); } inline virtual ~GenericCapabilityFilter() { } inline virtual bool isValid() const { return true; } inline virtual bool matches(const SharedPtr &t) const { bool supportedRcc; RequestableChannelClassSpecList objectRccSpecs = t->capabilities().allClassSpecs(); Q_FOREACH (const RequestableChannelClassSpec &filterRccSpec, mFilter) { supportedRcc = false; Q_FOREACH (const RequestableChannelClassSpec &objectRccSpec, objectRccSpecs) { /* check if fixed properties match */ if (filterRccSpec.fixedProperties() == objectRccSpec.fixedProperties()) { supportedRcc = true; /* check if all allowed properties in the filter RCC * are in the object RCC allowed properties */ Q_FOREACH (const QString &value, filterRccSpec.allowedProperties()) { if (!objectRccSpec.allowsProperty(value)) { /* one of the properties in the filter RCC * allowed properties is not in the object RCC * allowed properties */ supportedRcc = false; break; } } /* this RCC is supported, no need to check anymore */ if (supportedRcc) { break; } } } /* one of the filter RCC is not supported, this object * won't match filter */ if (!supportedRcc) { return false; } } return true; } inline RequestableChannelClassSpecList filter() const { return mFilter; } inline void addRequestableChannelClassSubset(const RequestableChannelClassSpec &rccSpec) { mFilter.append(rccSpec.bareClass()); } inline void setRequestableChannelClassesSubset(const RequestableChannelClassSpecList &rccSpecs) { mFilter = rccSpecs.bareClasses(); } private: GenericCapabilityFilter(const RequestableChannelClassSpecList &rccSpecs) : Filter(), mFilter(rccSpecs) { } RequestableChannelClassSpecList mFilter; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-string.cpp0000644000175100017520000000531512530423576023626 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-string.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT PendingString::Private { QString result; }; /** * \class PendingString * \ingroup utils * \headerfile TelepathyQt/pending-string.h * * \brief The PendingString class is a generic subclass of PendingOperation * representing a pending D-Bus method call that returns a string. * * See \ref async_model */ PendingString::PendingString(QDBusPendingCall call, const SharedPtr &object) : PendingOperation(object), mPriv(new Private) { connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(watcherFinished(QDBusPendingCallWatcher*))); } PendingString::PendingString(const QString &errorName, const QString &errorMessage) : PendingOperation(SharedPtr()), mPriv(new Private) { setFinishedWithError(errorName, errorMessage); } /** * Class destructor. */ PendingString::~PendingString() { delete mPriv; } QString PendingString::result() const { return mPriv->result; } void PendingString::setResult(const QString &result) { mPriv->result = result; } void PendingString::watcherFinished(QDBusPendingCallWatcher* watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got reply to PendingString call"; setResult(reply.value()); setFinished(); } else { debug().nospace() << "PendingString call failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/key-file.h0000644000175100017520000000445712530423576022056 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_key_file_h_HEADER_GUARD_ #define _TelepathyQt_key_file_h_HEADER_GUARD_ #include #include #include class QString; class QStringList; #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Tp { class TP_QT_NO_EXPORT KeyFile { public: enum Status { None = 0, NoError, NotFoundError, AccessError, FormatError, }; KeyFile(); KeyFile(const KeyFile &other); KeyFile(const QString &fileName); ~KeyFile(); KeyFile &operator=(const KeyFile &other); void setFileName(const QString &fileName); QString fileName() const; Status status() const; void setGroup(const QString &group); QString group() const; QStringList allGroups() const; QStringList allKeys() const; QStringList keys() const; bool contains(const QString &key) const; QString rawValue(const QString &key) const; QString value(const QString &key) const; QStringList valueAsStringList(const QString &key) const; static bool unescapeString(const QByteArray &data, int from, int to, QString &result); static bool unescapeStringList(const QByteArray &data, int from, int to, QStringList &result); private: struct Private; friend struct Private; Private *mPriv; }; } Q_DECLARE_METATYPE(Tp::KeyFile); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-contact-attributes.h0000644000175100017520000000433212530423576025602 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_contact_attributes_h_HEADER_GUARD_ #define _TelepathyQt_pending_contact_attributes_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include namespace Tp { class ReferencedHandles; class TP_QT_EXPORT PendingContactAttributes : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingContactAttributes) public: ~PendingContactAttributes(); ConnectionPtr connection() const; const UIntList &contactsRequested() const; const QStringList &interfacesRequested() const; bool shouldReference() const; ReferencedHandles validHandles() const; UIntList invalidHandles() const; ContactAttributesMap attributes() const; private Q_SLOTS: TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher); private: friend class ConnectionLowlevel; TP_QT_NO_EXPORT PendingContactAttributes(const ConnectionPtr &connection, const UIntList &handles, const QStringList &interfaces, bool reference); TP_QT_NO_EXPORT void failImmediately(const QString &error, const QString &errorMessage); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/media-stream-handler.cpp0000644000175100017520000000212012530423576024650 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-media-stream-handler-body.hpp" #include "TelepathyQt/_gen/cli-media-stream-handler.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/media-stream-handler.xml0000644000175100017520000000035712530423576024700 0ustar00kaffeinekaffeine00000000000000 Media stream handler telepathy-qt-0.9.6.1/TelepathyQt/svc-connection-manager.xml0000644000175100017520000000073012530423576025250 0ustar00kaffeinekaffeine00000000000000 Connection Manager interfaces telepathy-qt-0.9.6.1/TelepathyQt/AvatarData0000644000175100017520000000035012530423576022117 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AvatarData_HEADER_GUARD_ #define _TelepathyQt_AvatarData_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AvatarSpec0000644000175100017520000000035012530423576022140 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AvatarSpec_HEADER_GUARD_ #define _TelepathyQt_AvatarSpec_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Filter0000644000175100017520000000034012530423576021333 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Filter_HEADER_GUARD_ #define _TelepathyQt_Filter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/base-call.cpp0000644000175100017520000003402112530423576022515 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2013 Matthias Gehre * @copyright Copyright 2013 Canonical Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/base-call-internal.h" #include "TelepathyQt/_gen/base-call.moc.hpp" #include "TelepathyQt/_gen/base-call-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { /** * \class AbstractCallContentInterface * \ingroup servicecm * \headerfile TelepathyQt/base-call.h * * \brief Base class for all the CallContent object interface implementations. */ AbstractCallContentInterface::AbstractCallContentInterface(const QString &interfaceName) : AbstractDBusServiceInterface(interfaceName) { } AbstractCallContentInterface::~AbstractCallContentInterface() { } BaseCallContent::Adaptee::Adaptee(const QDBusConnection &dbusConnection, BaseCallContent *content) : QObject(content), mContent(content) { debug() << "Creating service::CallContentAdaptor for " << content->dbusObject(); mAdaptor = new Service::CallContentAdaptor(dbusConnection, this, content->dbusObject()); } QStringList BaseCallContent::Adaptee::interfaces() const { QStringList ret; foreach(const AbstractCallContentInterfacePtr & iface, mContent->interfaces()) { ret << iface->interfaceName(); } ret << TP_QT_IFACE_PROPERTIES; return ret; } BaseCallContent::Adaptee::~Adaptee() { } void BaseCallContent::Adaptee::remove(const Tp::Service::CallContentAdaptor::RemoveContextPtr &context) { context->setFinished(); } struct TP_QT_NO_EXPORT BaseCallContent::Private { Private(BaseCallContent *parent, const QDBusConnection &dbusConnection, BaseChannel* channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) : parent(parent), channel(channel), name(name), type(type), disposition(Tp::CallContentDispositionNone), direction(direction), adaptee(new BaseCallContent::Adaptee(dbusConnection, parent)) { } BaseCallContent *parent; BaseChannel *channel; QString name; Tp::MediaStreamType type; Tp::CallContentDisposition disposition; Tp::ObjectPathList streams; Tp::MediaStreamDirection direction; QHash interfaces; BaseCallContent::Adaptee *adaptee; }; BaseCallContent::BaseCallContent(const QDBusConnection &dbusConnection, BaseChannel* channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) : DBusService(dbusConnection), mPriv(new Private(this, dbusConnection, channel, name, type, direction)) { } BaseCallContent::~BaseCallContent() { delete mPriv; } QVariantMap BaseCallContent::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CALL_CONTENT + QLatin1String(".Interfaces"), QVariant::fromValue(mPriv->adaptee->interfaces())); map.insert(TP_QT_IFACE_CALL_CONTENT + QLatin1String(".Name"), QVariant::fromValue(mPriv->adaptee->name())); map.insert(TP_QT_IFACE_CALL_CONTENT + QLatin1String(".Type"), QVariant::fromValue((uint)mPriv->adaptee->type())); map.insert(TP_QT_IFACE_CALL_CONTENT + QLatin1String(".Disposition"), QVariant::fromValue((uint)mPriv->adaptee->disposition())); return map; } QString BaseCallContent::name() const { return mPriv->name; } Tp::MediaStreamType BaseCallContent::type() const { return mPriv->type; } Tp::CallContentDisposition BaseCallContent::disposition() const { return mPriv->disposition; } Tp::ObjectPathList BaseCallContent::streams() const { return mPriv->streams; } QString BaseCallContent::uniqueName() const { return QString(QLatin1String("_%1")).arg((quintptr) this, 0, 16); } bool BaseCallContent::registerObject(DBusError *error) { if (isRegistered()) { return true; } QString name = mPriv->name; QString busName = mPriv->channel->busName(); QString objectPath = QString(QLatin1String("%1/%2")) .arg(mPriv->channel->objectPath(), name); debug() << "Registering Content: busName: " << busName << " objectName: " << objectPath; DBusError _error; debug() << "CallContent: registering interfaces at " << dbusObject(); foreach(const AbstractCallContentInterfacePtr & iface, mPriv->interfaces) { if (!iface->registerInterface(dbusObject())) { // lets not fail if an optional interface fails registering, lets warn only warning() << "Unable to register interface" << iface->interfaceName(); } } bool ret = registerObject(busName, objectPath, &_error); if (!ret && error) { error->set(_error.name(), _error.message()); } return ret; } /** * Reimplemented from DBusService. */ bool BaseCallContent::registerObject(const QString &busName, const QString &objectPath, DBusError *error) { return DBusService::registerObject(busName, objectPath, error); } QList BaseCallContent::interfaces() const { return mPriv->interfaces.values(); } bool BaseCallContent::plugInterface(const AbstractCallContentInterfacePtr &interface) { if (isRegistered()) { warning() << "Unable to plug protocol interface " << interface->interfaceName() << "- protocol already registered"; return false; } if (interface->isRegistered()) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- interface already registered"; return false; } if (mPriv->interfaces.contains(interface->interfaceName())) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- another interface with same name already plugged"; return false; } debug() << "Interface" << interface->interfaceName() << "plugged"; mPriv->interfaces.insert(interface->interfaceName(), interface); return true; } // Call.I.Mute BaseCallMuteInterface::Adaptee::Adaptee(BaseCallMuteInterface *interface) : QObject(interface), mInterface(interface) { } BaseCallMuteInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseCallMuteInterface::Private { Private(BaseCallMuteInterface *parent, Tp::LocalMuteState state) : state(state), adaptee(new BaseCallMuteInterface::Adaptee(parent)) { } SetMuteStateCallback setMuteStateCB; Tp::LocalMuteState state; BaseCallMuteInterface::Adaptee *adaptee; }; void BaseCallMuteInterface::Adaptee::requestMuted(bool mute, const Tp::Service::CallInterfaceMuteAdaptor::RequestMutedContextPtr &context) { if (!mInterface->mPriv->setMuteStateCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } Tp::LocalMuteState state = Tp::LocalMuteStateUnmuted; if (mute) { state = Tp::LocalMuteStateMuted; } DBusError error; mInterface->mPriv->setMuteStateCB(state, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseCallMuteInterface * \ingroup servicecm * \headerfile TelepathyQt/base-call.h * * \brief Base class for implementations of Call.Interface.Mute * */ /** * Class constructor. */ BaseCallMuteInterface::BaseCallMuteInterface() : AbstractChannelInterface(TP_QT_IFACE_CALL_INTERFACE_MUTE), mPriv(new Private(this, Tp::LocalMuteStateUnmuted)) { } Tp::LocalMuteState BaseCallMuteInterface::localMuteState() const { return mPriv->state; } void BaseCallMuteInterface::setMuteState(const Tp::LocalMuteState &state) { if (mPriv->state != state) { mPriv->state = state; QMetaObject::invokeMethod(mPriv->adaptee, "muteStateChanged", Q_ARG(uint, state)); } } void BaseCallMuteInterface::setSetMuteStateCallback(const SetMuteStateCallback &cb) { mPriv->setMuteStateCB = cb; } /** * Class destructor. */ BaseCallMuteInterface::~BaseCallMuteInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseCallMuteInterface::immutableProperties() const { QVariantMap map; return map; } void BaseCallMuteInterface::createAdaptor() { (void) new Service::CallInterfaceMuteAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Call.Content.Interface.DTMF BaseCallContentDTMFInterface::Adaptee::Adaptee(BaseCallContentDTMFInterface *interface) : QObject(interface), mInterface(interface) { } BaseCallContentDTMFInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseCallContentDTMFInterface::Private { Private(BaseCallContentDTMFInterface *parent) : currentlySendingTones(false), adaptee(new BaseCallContentDTMFInterface::Adaptee(parent)) { } StartToneCallback startToneCB; StopToneCallback stopToneCB; MultipleTonesCallback multipleTonesCB; bool currentlySendingTones; QString deferredTones; BaseCallContentDTMFInterface::Adaptee *adaptee; }; void BaseCallContentDTMFInterface::Adaptee::startTone(uchar event, const Tp::Service::CallContentInterfaceDTMFAdaptor::StartToneContextPtr &context) { if (!mInterface->mPriv->startToneCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->startToneCB(event, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseCallContentDTMFInterface::Adaptee::stopTone(const Tp::Service::CallContentInterfaceDTMFAdaptor::StopToneContextPtr &context) { if (!mInterface->mPriv->stopToneCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->stopToneCB(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseCallContentDTMFInterface::Adaptee::multipleTones(const QString& tones, const Tp::Service::CallContentInterfaceDTMFAdaptor::MultipleTonesContextPtr &context) { if (!mInterface->mPriv->multipleTonesCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->multipleTonesCB(tones, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseCallContentDTMFInterface * \ingroup servicecm * \headerfile TelepathyQt/base-call.h * * \brief Base class for implementations of Call.Content.Interface.DTMF * */ /** * Class constructor. */ BaseCallContentDTMFInterface::BaseCallContentDTMFInterface() : AbstractCallContentInterface(TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF), mPriv(new Private(this)) { } bool BaseCallContentDTMFInterface::currentlySendingTones() const { return mPriv->currentlySendingTones; } void BaseCallContentDTMFInterface::setCurrentlySendingTones(bool sending) { mPriv->currentlySendingTones = sending; } QString BaseCallContentDTMFInterface::deferredTones() const { return mPriv->deferredTones; } void BaseCallContentDTMFInterface::setDeferredTones(const QString &tones) { mPriv->deferredTones = tones; } void BaseCallContentDTMFInterface::setStartToneCallback(const StartToneCallback &cb) { mPriv->startToneCB = cb; } void BaseCallContentDTMFInterface::setStopToneCallback(const StopToneCallback &cb) { mPriv->stopToneCB = cb; } void BaseCallContentDTMFInterface::setMultipleTonesCallback(const MultipleTonesCallback &cb) { mPriv->multipleTonesCB = cb; } /** * Class destructor. */ BaseCallContentDTMFInterface::~BaseCallContentDTMFInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseCallContentDTMFInterface::immutableProperties() const { QVariantMap map; return map; } void BaseCallContentDTMFInterface::createAdaptor() { (void) new Service::CallContentInterfaceDTMFAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } } telepathy-qt-0.9.6.1/TelepathyQt/channel-class-features.h0000644000175100017520000000253212530423576024670 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_class_features_h_HEADER_GUARD_ #define _TelepathyQt_channel_class_features_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include namespace Tp { typedef QPair ChannelClassFeatures; } // Tp Q_DECLARE_METATYPE(Tp::ChannelClassFeatures); #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-dbus-tube-connection.cpp0000644000175100017520000001513712530423576026352 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-dbus-tube-connection.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingDBusTubeConnection::Private { Private(PendingDBusTubeConnection *parent); // Public object PendingDBusTubeConnection *parent; DBusTubeChannelPtr tube; bool allowOtherUsers; QVariantMap parameters; }; PendingDBusTubeConnection::Private::Private(PendingDBusTubeConnection *parent) : parent(parent), allowOtherUsers(false) { } /** * \class PendingDBusTubeConnection * \ingroup clientchannel * \headerfile TelepathyQt/pending-dbus-tube-connection.h * * A pending operation for accepting or offering a DBus tube * * This class represents an asynchronous operation for accepting or offering a DBus tube. * Upon completion, the address of the opened tube is returned as a QString. */ PendingDBusTubeConnection::PendingDBusTubeConnection( PendingString* string, bool allowOtherUsers, const QVariantMap& parameters, const DBusTubeChannelPtr& object) : PendingOperation(object) , mPriv(new Private(this)) { mPriv->tube = object; mPriv->allowOtherUsers = allowOtherUsers; mPriv->parameters = parameters; connect(mPriv->tube.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), this, SLOT(onChannelInvalidated(Tp::DBusProxy*,QString,QString))); if (string->isFinished()) { onConnectionFinished(string); } else { // Connect the pending void connect(string, SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(onConnectionFinished(Tp::PendingOperation*))); } } PendingDBusTubeConnection::PendingDBusTubeConnection( const QString &errorName, const QString &errorMessage, const DBusTubeChannelPtr &object) : PendingOperation(object) , mPriv(new PendingDBusTubeConnection::Private(this)) { setFinishedWithError(errorName, errorMessage); } /** * Class destructor */ PendingDBusTubeConnection::~PendingDBusTubeConnection() { delete mPriv; } /** * When the operation has been completed successfully, returns the address of the opened DBus connection. * * Please note this function will return a meaningful value only if the operation has already * been completed successfully: in case of failure or non-completion, an empty QString will be * returned. * * \note If you plan to use QtDBus for the DBus connection, please note you should always use * QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. * The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use * of DBus Tubes through QtDBus. * * \returns The address of the opened DBus connection. */ QString PendingDBusTubeConnection::address() const { return mPriv->tube->address(); } /** * Return whether this tube allows other users more than the current one to connect to the * private bus created by the tube. * * Note that even if the tube was accepted or offered specifying not to allow other users, this * method might still return true if one of the ends did not support such a restriction. * * In fact, if one of the ends does not support current user restriction, * the tube will be offered regardless, falling back to allowing any connection. If your * application requires strictly this condition to be enforced, you should check * DBusTubeChannel::supportsRestrictingToCurrentUser before offering the tube, * and take action from there. * * This function, however, is guaranteed to return the same value of the given allowOtherUsers * parameter when accepting or offering a tube if supportsRestrictingToCurrentUser is true. * * \return \c true if any user is allow to connect, \c false otherwise. */ bool PendingDBusTubeConnection::allowsOtherUsers() const { return mPriv->allowOtherUsers; } void PendingDBusTubeConnection::onConnectionFinished(PendingOperation *op) { if (isFinished()) { // The operation has already failed return; } if (op->isError()) { // Fail setFinishedWithError(op->errorName(), op->errorMessage()); return; } debug() << "Accept/Offer tube finished successfully"; // Now get the address and set it PendingString *ps = qobject_cast(op); debug() << "Got address " << ps->result(); mPriv->tube->setAddress(ps->result()); // It might have been already opened - check if (mPriv->tube->state() == TubeChannelStateOpen) { onStateChanged(mPriv->tube->state()); } else { // Wait until the tube gets opened on the other side connect(mPriv->tube.data(), SIGNAL(stateChanged(Tp::TubeChannelState)), this, SLOT(onStateChanged(Tp::TubeChannelState))); } } void PendingDBusTubeConnection::onStateChanged(TubeChannelState state) { debug() << "Tube state changed to " << state; if (state == TubeChannelStateOpen) { if (!mPriv->parameters.isEmpty()) { // Inject the parameters into the tube mPriv->tube->setParameters(mPriv->parameters); } // The tube is ready: mark the operation as finished setFinished(); } } void PendingDBusTubeConnection::onChannelInvalidated(DBusProxy* proxy, const QString& errorName, const QString& errorMessage) { Q_UNUSED(proxy); if (isFinished()) { // The operation has already finished return; } setFinishedWithError(errorName, errorMessage); } } telepathy-qt-0.9.6.1/TelepathyQt/text-channel.h0000644000175100017520000001120512530423576022730 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_text_channel_h_HEADER_GUARD_ #define _TelepathyQt_text_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class Message; class ReceivedMessage; class TP_QT_EXPORT TextChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(TextChannel) public: static const Feature FeatureCore; static const Feature FeatureMessageQueue; static const Feature FeatureMessageCapabilities; static const Feature FeatureMessageSentSignal; static const Feature FeatureChatState; static TextChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~TextChannel(); bool hasMessagesInterface() const; bool hasChatStateInterface() const; bool canInviteContacts() const; // requires FeatureMessageCapabilities bool supportsMessageType(ChannelTextMessageType messageType) const; QList supportedMessageTypes() const; QStringList supportedContentTypes() const; MessagePartSupportFlags messagePartSupport() const; DeliveryReportingSupportFlags deliveryReportingSupport() const; // requires FeatureMessageQueue QList messageQueue() const; // requires FeatureChatState ChannelChatState chatState(const ContactPtr &contact) const; public Q_SLOTS: void acknowledge(const QList &messages); void forget(const QList &messages); PendingSendMessage *send(const QString &text, ChannelTextMessageType type = ChannelTextMessageTypeNormal, MessageSendingFlags flags = 0); PendingSendMessage *send(const MessagePartList &parts, MessageSendingFlags flags = 0); inline PendingOperation *inviteContacts( const QList &contacts, const QString &message = QString()) { return groupAddContacts(contacts, message); } PendingOperation *requestChatState(ChannelChatState state); Q_SIGNALS: // FeatureMessageSentSignal void messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken); // FeatureMessageQueue void messageReceived(const Tp::ReceivedMessage &message); void pendingMessageRemoved( const Tp::ReceivedMessage &message); // FeatureChatState void chatStateChanged(const Tp::ContactPtr &contact, Tp::ChannelChatState state); protected: TextChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = TextChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void onContactsFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onAcknowledgePendingMessagesReply(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onMessageSent(const Tp::MessagePartList &, uint, const QString &); TP_QT_NO_EXPORT void onMessageReceived(const Tp::MessagePartList &); TP_QT_NO_EXPORT void onPendingMessagesRemoved(const Tp::UIntList &); TP_QT_NO_EXPORT void onTextSent(uint, uint, const QString &); TP_QT_NO_EXPORT void onTextReceived(uint, uint, uint, uint, uint, const QString &); TP_QT_NO_EXPORT void onTextSendError(uint, uint, uint, const QString &); TP_QT_NO_EXPORT void gotProperties(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void gotPendingMessages(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onChatStateChanged(uint, uint); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/call-content-media-description.h0000644000175100017520000000226312530423576026323 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_call_content_media_description_h_HEADER_GUARD_ #define _TelepathyQt_call_content_media_description_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #endif telepathy-qt-0.9.6.1/TelepathyQt/outgoing-dbus-tube-channel.cpp0000644000175100017520000001646212530423576026034 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/outgoing-dbus-tube-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT OutgoingDBusTubeChannel::Private { Private(OutgoingDBusTubeChannel *parent); // Public object OutgoingDBusTubeChannel *parent; }; OutgoingDBusTubeChannel::Private::Private(OutgoingDBusTubeChannel *parent) : parent(parent) { } /** * \class OutgoingDBusTubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/outgoing-dbus-tube-channel.h * * \brief The OutgoingDBusTubeChannel class represents an outgoing Telepathy channel * of type DBusTube. * * Outgoing (locally initiated/requested) tubes are initially in the #TubeChannelStateNotOffered state. * When offerTube is called, the connection manager takes care of instantiating a new DBus server, * at which point the tube state becomes #TubeChannelStateRemotePending. * * If the target accepts the connection request, the state goes #TubeChannelStateOpen and both sides * can start using the new private bus, the address of which can be retrieved from the completed * PendingDBusTubeConnection or from this class. * * \note If you plan to use QtDBus for the DBus connection, please note you should always use * QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. * The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use * of DBus Tubes through QtDBus. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Create a new OutgoingDBusTubeChannel channel. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. * \return A OutgoingDBusTubeChannelPtr object pointing to the newly created * OutgoingDBusTubeChannel object. */ OutgoingDBusTubeChannelPtr OutgoingDBusTubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return OutgoingDBusTubeChannelPtr(new OutgoingDBusTubeChannel(connection, objectPath, immutableProperties)); } /** * Construct a new OutgoingDBusTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. */ OutgoingDBusTubeChannel::OutgoingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) : DBusTubeChannel(connection, objectPath, immutableProperties), mPriv(new Private(this)) { } /** * Class destructor. */ OutgoingDBusTubeChannel::~OutgoingDBusTubeChannel() { delete mPriv; } /** * Offer the tube * * This method sets up a private DBus connection to the channel target(s), and offers it through the tube. * * The %PendingDBusTubeConnection returned by this method will be completed as soon as the tube is * opened and ready to be used. * * This method requires DBusTubeChannel::FeatureCore to be enabled. * * \param parameters A dictionary of arbitrary Parameters to send with the tube offer. * The other end will receive this QVariantMap in the parameters() method * of the corresponding IncomingDBusTubeChannel. * \param allowOtherUsers Whether the server should allow other users to connect to this tube more * than just the current one. If your application has no specific needs, it is * advisable not to modify the default value of this argument. * * \note If allowOtherUsers == false, but one of the ends does not support current user restriction, * the tube will be offered regardless, falling back to allowing any connection. If your * application requires strictly this condition to be enforced, you should check * DBusTubeChannel::supportsRestrictingToCurrentUser before offering the tube, * and take action from there. * The tube is guaranteed either to be offered with the desired * restriction or to fail the accept phase if supportsRestrictingToCurrentUser is true * and allowOtherUsers is false. * * \returns A %PendingDBusTubeConnection which will finish as soon as the tube is ready to be used * (hence in the Open state) */ PendingDBusTubeConnection *OutgoingDBusTubeChannel::offerTube(const QVariantMap ¶meters, bool allowOtherUsers) { SocketAccessControl accessControl = allowOtherUsers ? SocketAccessControlLocalhost : SocketAccessControlCredentials; if (!isReady(DBusTubeChannel::FeatureCore)) { warning() << "DBusTubeChannel::FeatureCore must be ready before " "calling offerTube"; return new PendingDBusTubeConnection(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Channel not ready"), OutgoingDBusTubeChannelPtr(this)); } // The tube must be not offered if (state() != TubeChannelStateNotOffered) { warning() << "You can not expose more than a bus for each DBus Tube"; return new PendingDBusTubeConnection(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Channel busy"), OutgoingDBusTubeChannelPtr(this)); } // Let's offer the tube if (!allowOtherUsers && !supportsRestrictingToCurrentUser()) { warning() << "Current user restriction is not available for this tube, " "falling back to allowing any connection"; accessControl = SocketAccessControlLocalhost; } PendingString *ps = new PendingString( interface()->Offer( parameters, accessControl), OutgoingDBusTubeChannelPtr(this)); PendingDBusTubeConnection *op = new PendingDBusTubeConnection(ps, accessControl == SocketAccessControlLocalhost, parameters, OutgoingDBusTubeChannelPtr(this)); return op; } } telepathy-qt-0.9.6.1/TelepathyQt/dbus-peer.xml0000644000175100017520000000063512530423576022602 0ustar00kaffeinekaffeine00000000000000 D-Bus peer telepathy-qt-0.9.6.1/TelepathyQt/ClientHandlerInterface0000644000175100017520000000040012530423576024440 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ClientHandlerInterface_HEADER_GUARD_ #define _TelepathyQt_ClientHandlerInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/tube-channel.h0000644000175100017520000000401512530423576022704 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class TP_QT_EXPORT TubeChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(TubeChannel) public: static const Feature FeatureCore; static TubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~TubeChannel(); TubeChannelState state() const; QVariantMap parameters() const; Q_SIGNALS: void stateChanged(Tp::TubeChannelState state); protected: TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = TubeChannel::FeatureCore); void setParameters(const QVariantMap ¶meters); private Q_SLOTS: TP_QT_NO_EXPORT void onTubeChannelStateChanged(uint newstate); TP_QT_NO_EXPORT void gotTubeProperties(Tp::PendingOperation *op); private: struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/Global0000644000175100017520000000034012530423576021306 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Global_HEADER_GUARD_ #define _TelepathyQt_Global_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-send-message.cpp0000644000175100017520000001052612530423576024673 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-send-message.moc.hpp" #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingSendMessage::Private { Private(const Message &message) : message(message) { } QString token; Message message; }; /** * \class PendingSendMessage * \ingroup clientchannel * \headerfile TelepathyQt/pending-send-message.h * * \brief The PendingSendMessage class represents the parameters of and the * reply to an asynchronous message send request. * * See \ref async_model */ PendingSendMessage::PendingSendMessage(const TextChannelPtr &channel, const Message &message) : PendingOperation(channel), mPriv(new Private(message)) { } PendingSendMessage::PendingSendMessage(const ContactMessengerPtr &messenger, const Message &message) : PendingOperation(messenger), mPriv(new Private(message)) { } PendingSendMessage::~PendingSendMessage() { delete mPriv; } /** * Return the channel used to send the message if this instance was created using * TextChannel. If it was created using ContactMessenger, return a null TextChannelPtr. * * \return A pointer to the TextChannel object, or a null TextChannelPtr if created using * ContactMessenger. */ TextChannelPtr PendingSendMessage::channel() const { return TextChannelPtr(qobject_cast((TextChannel*) object().data())); } /** * Return the contact messenger used to send the message if this instance was created using * ContactMessenger. If it was created using TextChannel, return a null ContactMessengerPtr. * * \return A pointer to the ContactMessenger object, or a null ContactMessengerPtr if created using * TextChannel. */ ContactMessengerPtr PendingSendMessage::messenger() const { return ContactMessengerPtr(qobject_cast((ContactMessenger*) object().data())); } QString PendingSendMessage::sentMessageToken() const { return mPriv->token; } Message PendingSendMessage::message() const { return mPriv->message; } void PendingSendMessage::onTextSent(QDBusPendingCallWatcher *watcher) { QDBusPendingReply<> reply = *watcher; if (reply.isError()) { setFinishedWithError(reply.error()); } else { setFinished(); } watcher->deleteLater(); } void PendingSendMessage::onMessageSent(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { setFinishedWithError(reply.error()); } else { mPriv->token = reply.value(); setFinished(); } watcher->deleteLater(); } void PendingSendMessage::onCDMessageSent(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { QDBusError error = reply.error(); if (error.name() == TP_QT_DBUS_ERROR_UNKNOWN_METHOD || error.name() == TP_QT_DBUS_ERROR_UNKNOWN_INTERFACE) { setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Channel Dispatcher implementation (e.g. mission-control), " "does not support interface CD.I.Messages")); } else { setFinishedWithError(error); } } else { mPriv->token = reply.value(); setFinished(); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/pending-connection.cpp0000644000175100017520000001242112530423576024453 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-connection.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingConnection::Private { ConnectionPtr connection; }; /** * \class PendingConnection * \ingroup clientconn * \headerfile TelepathyQt/pending-connection.h * * \brief The PendingConnection class represents the parameters of and the reply * to an asynchronous connection request. * * Instances of this class cannot be constructed directly; the only way to get * one is via ConnectionManager. * * See \ref async_model */ /** * Construct a new PendingConnection object. * * \param manager ConnectionManager to use. * \param protocol Name of the protocol to create the connection for. * \param parameters Connection parameters. */ PendingConnection::PendingConnection(const ConnectionManagerPtr &manager, const QString &protocol, const QVariantMap ¶meters) : PendingOperation(manager), mPriv(new Private) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( manager->baseInterface()->RequestConnection(protocol, parameters), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onCallFinished(QDBusPendingCallWatcher*))); } /** * Construct a new PendingConnection object that will fail immediately. * * \param error Name of the error to fail with. * \param errorMessage Detail message for the error. */ PendingConnection::PendingConnection(const QString &error, const QString &errorMessage) : PendingOperation(ConnectionManagerPtr()), mPriv(new Private) { setFinishedWithError(error, errorMessage); } /** * Class destructor. */ PendingConnection::~PendingConnection() { delete mPriv; } /** * Return the connection manager through which the request was made. * * \return A pointer to the ConnectionManager object. */ ConnectionManagerPtr PendingConnection::manager() const { return ConnectionManagerPtr(qobject_cast((ConnectionManager*) object().data())); } /** * Return the connection resulting from the connection request. * * \return A pointer to the Connection object. */ ConnectionPtr PendingConnection::connection() const { if (!isFinished()) { warning() << "PendingConnection::connection called before finished, returning 0"; return ConnectionPtr(); } else if (!isValid()) { warning() << "PendingConnection::connection called when not valid, returning 0"; return ConnectionPtr(); } return mPriv->connection; } void PendingConnection::onCallFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QString busName = reply.argumentAt<0>(); QString objectPath = reply.argumentAt<1>().path(); debug() << "Got reply to ConnectionManager.CreateConnection - bus name:" << busName << "- object path:" << objectPath; PendingReady *readyOp = manager()->connectionFactory()->proxy(busName, objectPath, manager()->channelFactory(), manager()->contactFactory()); mPriv->connection = ConnectionPtr::qObjectCast(readyOp->proxy()); connect(readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onConnectionBuilt(Tp::PendingOperation*))); } else { debug().nospace() << "CreateConnection failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } void PendingConnection::onConnectionBuilt(Tp::PendingOperation *op) { Q_ASSERT(op->isFinished()); if (op->isError()) { warning() << "Making connection ready using the factory failed:" << op->errorName() << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); } else { setFinished(); debug() << "New connection" << mPriv->connection->objectPath() << "built"; } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/or-filter.h0000644000175100017520000000444312530423576022247 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_or_filter_h_HEADER_GUARD_ #define _TelepathyQt_or_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { template class OrFilter : public Filter { public: static SharedPtr > create( const QList > > &filters = QList > >()) { return SharedPtr >(new OrFilter(filters)); } inline virtual ~OrFilter() { } inline virtual bool isValid() const { Q_FOREACH (const SharedPtr > &filter, mFilters) { if (!filter || !filter->isValid()) { return false; } } return true; } inline virtual bool matches(const SharedPtr &t) const { if (!isValid()) { return false; } Q_FOREACH (const SharedPtr > &filter, mFilters) { if (filter->matches(t)) { return true; } } return false; } inline QList > > filters() const { return mFilters; } private: OrFilter(const QList > > &filters) : Filter(), mFilters(filters) { } QList > > mFilters; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/contact-factory.cpp0000644000175100017520000001017112530423576023772 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include namespace Tp { struct TP_QT_NO_EXPORT ContactFactory::Private { Features features; }; /** * \class ContactFactory * \ingroup utils * \headerfile TelepathyQt/contact-factory.h * * \brief The ContactFactory class is responsible for constructing Contact * objects according to application-defined settings. */ /** * Creates a new ContactFactory. * * \param features The features to make ready on constructed contacts. * \returns A pointer to the created factory. */ ContactFactoryPtr ContactFactory::create(const Features &features) { return ContactFactoryPtr(new ContactFactory(features)); } /** * Class constructor. * * \param features The features to make ready on constructed contacts. */ ContactFactory::ContactFactory(const Features &features) : mPriv(new Private) { addFeatures(features); } /** * Class destructor. */ ContactFactory::~ContactFactory() { delete mPriv; } /** * Gets the features this factory will make ready on constructed contacts. * * \return The set of features. */ Features ContactFactory::features() const { Features features = mPriv->features; // FeatureAvatarData depends on FeatureAvatarToken if (features.contains(Contact::FeatureAvatarData) && !features.contains(Contact::FeatureAvatarToken)) { features.insert(Contact::FeatureAvatarToken); } return features; } /** * Adds a single feature this factory will make ready on further constructed contacts. * * No feature removal is provided, to guard against uncooperative modules removing features other * modules have set and depend on. * * \param feature The feature to add. */ void ContactFactory::addFeature(const Feature &feature) { addFeatures(Features(feature)); } /** * Adds a set of features this factory will make ready on further constructed contacts. * * No feature removal is provided, to guard against uncooperative modules removing features other * modules have set and depend on. * * \param features The features to add. */ void ContactFactory::addFeatures(const Features &features) { mPriv->features.unite(features); } /** * Can be used by subclasses to override the Contact subclass constructed by the factory. * * The default implementation constructs Tp::Contact objects. * * \param manager The contact manager this contact belongs. * \param handle The contact handle. * \param features The desired contact features. * \param attributes The desired contact attributes. * \return A pointer to the constructed contact. */ ContactPtr ContactFactory::construct(Tp::ContactManager *manager, const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes) const { ContactPtr contact = ContactPtr(new Contact(manager, handle, features, attributes)); return contact; } /** * Can be used by subclasses to do arbitrary manipulation on constructed Contact objects. * * The default implementation does nothing. * * \param contact The contact to be prepared. * \return A PendingOperation used to prepare the contact or NULL if there is nothing to prepare. */ PendingOperation *ContactFactory::prepare(const ContactPtr &contact) const { return NULL; } } telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceHoldInterface0000644000175100017520000000041712530423576025734 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceHoldInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceHoldInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/fixed-feature-factory.h0000644000175100017520000000342212530423576024535 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_fixed_feature_factory_h_HEADER_GUARD_ #define _TelepathyQt_fixed_feature_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include class QDBusConnection; namespace Tp { class Feature; class Features; class TP_QT_EXPORT FixedFeatureFactory : public DBusProxyFactory { Q_OBJECT Q_DISABLE_COPY(FixedFeatureFactory) public: virtual ~FixedFeatureFactory(); Features features() const; void addFeature(const Feature &feature); void addFeatures(const Features &features); protected: FixedFeatureFactory(const QDBusConnection &bus); virtual Features featuresFor(const DBusProxyPtr &proxy) const; private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Debug0000644000175100017520000000033512530423576021140 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Debug_HEADER_GUARD_ #define _TelepathyQt_Debug_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-debug-message-list.cpp0000644000175100017520000000372012530423576025777 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011-2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-debug-message-list.moc.hpp" #include namespace Tp { struct TP_QT_NO_EXPORT PendingDebugMessageList::Private { DebugMessageList result; }; PendingDebugMessageList::PendingDebugMessageList(const QDBusPendingCall &call, const SharedPtr &object) : PendingOperation(object), mPriv(new Private) { connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(watcherFinished(QDBusPendingCallWatcher*))); } PendingDebugMessageList::~PendingDebugMessageList() { delete mPriv; } DebugMessageList PendingDebugMessageList::result() const { return mPriv->result; } void PendingDebugMessageList::watcherFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { setFinishedWithError(reply.error()); } else { mPriv->result = reply.value(); setFinished(); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/CallContentMediaDescriptionInterface0000644000175100017520000000046412530423576027310 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentMediaDescriptionInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentMediaDescriptionInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/capabilities-base.cpp0000644000175100017520000003200312530423576024231 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include namespace Tp { struct TP_QT_NO_EXPORT CapabilitiesBase::Private : public QSharedData { Private(bool specificToContact); Private(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact); RequestableChannelClassSpecList rccSpecs; bool specificToContact; }; CapabilitiesBase::Private::Private(bool specificToContact) : specificToContact(specificToContact) { } CapabilitiesBase::Private::Private(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact) : rccSpecs(rccSpecs), specificToContact(specificToContact) { } /** * \class CapabilitiesBase * \ingroup clientconn * \headerfile TelepathyQt/capabilities-base.h * * \brief The CapabilitiesBase class represents the capabilities a Connection * or a Contact supports. */ /** * Construct a new CapabilitiesBase object. */ CapabilitiesBase::CapabilitiesBase() : mPriv(new Private(false)) { } /** * Construct a new CapabilitiesBase object. * * \param specificToContact Whether this object describes the capabilities of a * particular contact. */ CapabilitiesBase::CapabilitiesBase(bool specificToContact) : mPriv(new Private(specificToContact)) { } /** * Construct a new CapabilitiesBase object using the given \a rccs. * * \param rccs RequestableChannelClassList representing the capabilities of a * connection or contact. * \param specificToContact Whether this object describes the capabilities of a * particular contact. */ CapabilitiesBase::CapabilitiesBase(const RequestableChannelClassList &rccs, bool specificToContact) : mPriv(new Private(RequestableChannelClassSpecList(rccs), specificToContact)) { } /** * Construct a new CapabilitiesBase object using the given \a rccSpecs. * * \param rccSpecs RequestableChannelClassSpecList representing the capabilities of a * connection or contact. * \param specificToContact Whether this object describes the capabilities of a * particular contact. */ CapabilitiesBase::CapabilitiesBase(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact) : mPriv(new Private(rccSpecs, specificToContact)) { } CapabilitiesBase::CapabilitiesBase(const CapabilitiesBase &other) : mPriv(other.mPriv) { } /** * Class destructor. */ CapabilitiesBase::~CapabilitiesBase() { } CapabilitiesBase &CapabilitiesBase::operator=(const CapabilitiesBase &other) { this->mPriv = other.mPriv; return *this; } /** * Return the list of requestable channel class spec representing the requests that can succeed. * * This can be used by advanced clients to determine whether an unusually * complex request would succeed. See the \telepathy_spec * for details of how to interpret the returned list. * * The higher-level methods like textChats() are likely to be more * useful to the majority of clients. * * \return A RequestableChannelClassSpecList indicating the parameters to * Account::createChannel, Account::ensureChannel, * Connection::createChannel and Connection::ensureChannel * that can be expected to work. */ RequestableChannelClassSpecList CapabilitiesBase::allClassSpecs() const { return mPriv->rccSpecs; } void CapabilitiesBase::updateRequestableChannelClasses( const RequestableChannelClassList &rccs) { mPriv->rccSpecs = RequestableChannelClassSpecList(rccs); } /** * Return whether this object accurately describes the capabilities of a * particular contact, or if it's only a guess based on the * capabilities of the underlying connection. * * In protocols like XMPP where each contact advertises their capabilities * to others, Contact::capabilities() will generally return an object where * this method returns true. * * In protocols like SIP where contacts' capabilities are not known, * Contact::capabilities() will return an object where this method returns * false, whose methods textChats() etc. are based on what the * underlying connection supports. * * This reflects the fact that the best assumption an application can make is * that every contact supports every channel type supported by the connection, * while indicating that requests to communicate might fail if the contact * does not actually have the necessary functionality. * * \return \c true if this object describes the capabilities of a particular * contact, \c false otherwise. */ bool CapabilitiesBase::isSpecificToContact() const { return mPriv->specificToContact; } /** * Return whether private text channels can be established by providing * a contact identifier. * * If the protocol is such that text chats can be established, but only via * a more elaborate D-Bus API than normal (because more information is needed), * then this method will return false. * * \return \c true if Account::ensureTextChat() can be expected to work, * \c false otherwise. */ bool CapabilitiesBase::textChats() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::textChat())) { return true; } } return false; } bool CapabilitiesBase::audioCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::audioCall())) { return true; } } return false; } bool CapabilitiesBase::videoCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::videoCall())) { return true; } } return false; } bool CapabilitiesBase::videoCallsWithAudio() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::videoCallWithAudioAllowed()) || rccSpec.supports(RequestableChannelClassSpec::audioCallWithVideoAllowed())) { return true; } } return false; } bool CapabilitiesBase::upgradingCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.channelType() == TP_QT_IFACE_CHANNEL_TYPE_CALL && rccSpec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".MutableContents"))) { return true; } } return false; } /** * Return whether private audio and/or video calls can be established by * providing a contact identifier. * * If the protocol is such that these calls can be established, but only via * a more elaborate D-Bus API than normal (because more information is needed), * then this method will return false. * * \return \c true if Account::ensureStreamedMediaCall() can be expected to work, * \c false otherwise. * \sa streamedMediaAudioCalls(), streamedMediaVideoCalls(), * streamedMediaVideoCallsWithAudio() */ bool CapabilitiesBase::streamedMediaCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::streamedMediaCall())) { return true; } } return false; } /** * Return whether private audio calls can be established by providing a * contact identifier. * * Call upgradingCalls() to determine whether such calls are * likely to be upgradable to have a video stream later. * * If the protocol is such that these calls can be established, but only via * a more elaborate D-Bus API than normal (because more information is needed), * then this method will return false. * * In some older connection managers, streamedMediaAudioCalls() and * streamedMediaVideoCalls() might both return false, even though streamedMediaCalls() returns * true. This indicates that only an older API is supported - clients of these connection managers * must call Account::ensureStreamedMediaCall() to get an empty call, then add audio and/or * video streams to it. * * \return \c true if Account::ensureStreamedMediaAudioCall() can be expected to work, * \c false otherwise. * \sa streamedMediaCalls(), streamedMediaVideoCalls(), streamedMediaVideoCallsWithAudio() */ bool CapabilitiesBase::streamedMediaAudioCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::streamedMediaAudioCall())) { return true; } } return false; } /** * Return whether private video calls can be established by providing a * contact identifier. * * The same comments as for streamedMediaAudioCalls() apply to this method. * * \return \c true if Account::ensureStreamedMediaVideoCall() can be expected to work, * if given \c false as \a withAudio parameter, \c false otherwise. * \sa streamedMediaCalls(), streamedMediaAudioCalls(), streamedMediaVideoCallsWithAudio() */ bool CapabilitiesBase::streamedMediaVideoCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::streamedMediaVideoCall())) { return true; } } return false; } /** * Return whether private video calls with audio can be established by providing a * contact identifier. * * The same comments as for streamedMediaAudioCalls() apply to this method. * * \return \c true if Account::ensureStreamedMediaVideoCall() can be expected to work, * if given \c true as \a withAudio parameter, \c false otherwise. * \sa streamedMediaCalls(), streamedMediaAudioCalls(), streamedMediaVideoCalls() */ bool CapabilitiesBase::streamedMediaVideoCallsWithAudio() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::streamedMediaVideoCallWithAudio())) { return true; } } return false; } /** * Return whether the protocol supports adding streams of a different type * to ongoing media calls. * * In some protocols and clients (such as XMPP Jingle), all calls potentially * support both audio and video. This is indicated by returning true. * * In other protocols and clients (such as MSN, and the variant of XMPP Jingle * used by Google clients), the streams are fixed at the time the call is * started, so if you will ever want video, you have to ask for it at the * beginning, for instance with ensureStreamedMediaVideoCall(). This is indicated by * returning false. * * User interfaces can use this method as a UI hint. If it returns false, * then a UI wishing to support both audio and video calls will have to * provide separate "audio call" and "video call" buttons or menu items; * if it returns true, a single button that makes an audio call is sufficient, * because video can be added later. * * (The underlying Telepathy feature is the ImmutableStreams property; if this * method returns true, then ImmutableStreams is false, and vice versa). * * \return \c true if audio calls can be upgraded to audio + video, * \c false otherwise. */ bool CapabilitiesBase::upgradingStreamedMediaCalls() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.channelType() == TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA && !rccSpec.allowsProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".ImmutableStreams"))) { // TODO should we test all classes that have channelType // StreamedMedia or just one is fine? return true; } } return false; } /** * Return whether file transfer can be established by providing a contact identifier * * \return \c true if file transfers can be expected to work, * \c false otherwise. */ bool CapabilitiesBase::fileTransfers() const { foreach (const RequestableChannelClassSpec &rccSpec, mPriv->rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::fileTransfer())) { return true; } } return false; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/call-channel.h0000644000175100017520000001242612530423576022665 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_call_channel_h_HEADER_GUARD_ #define _TelepathyQt_call_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT CallChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(CallChannel) public: static const Feature FeatureCore; static const Feature FeatureCallState; static const Feature FeatureCallMembers; static const Feature FeatureContents; static const Feature FeatureLocalHoldState; static CallChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~CallChannel(); bool handlerStreamingRequired() const; StreamTransportType initialTransportType() const; bool hasInitialAudio() const; bool hasInitialVideo() const; QString initialAudioName() const; QString initialVideoName() const; bool hasMutableContents() const; PendingOperation *setRinging(); PendingOperation *setQueued(); PendingOperation *accept(); PendingOperation *hangup(CallStateChangeReason reason = CallStateChangeReasonUserRequested, const QString &detailedReason = QString(), const QString &message = QString()); // FeatureCallState CallState callState() const; CallFlags callFlags() const; CallStateReason callStateReason() const; QVariantMap callStateDetails() const; // FeatureCallMembers Contacts remoteMembers() const; CallMemberFlags remoteMemberFlags(const ContactPtr &member) const; // FeatureContents CallContents contents() const; CallContents contentsForType(MediaStreamType type) const; CallContentPtr contentByName(const QString &contentName) const; PendingCallContent *requestContent(const QString &name, MediaStreamType type, MediaStreamDirection direction); // FeatureLocalHoldState LocalHoldState localHoldState() const; LocalHoldStateReason localHoldStateReason() const; PendingOperation *requestHold(bool hold); Q_SIGNALS: // FeatureCallState void callStateChanged(Tp::CallState state); void callFlagsChanged(Tp::CallFlags flags); // FeatureCallMembers void remoteMemberFlagsChanged( const QHash &remoteMemberFlags, const Tp::CallStateReason &reason); void remoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason); // FeatureContents void contentAdded(const Tp::CallContentPtr &content); void contentRemoved(const Tp::CallContentPtr &content, const Tp::CallStateReason &reason); // FeatureLocalHoldState void localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason); protected: CallChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = CallChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotCallState(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onCallStateChanged(uint state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &stateDetails); TP_QT_NO_EXPORT void gotCallMembers(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotCallMembersContacts(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onCallMembersChanged(const Tp::CallMemberMap &updates, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason); TP_QT_NO_EXPORT void gotContents(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onContentAdded(const QDBusObjectPath &contentPath); TP_QT_NO_EXPORT void onContentRemoved(const QDBusObjectPath &contentPath, const Tp::CallStateReason &reason); TP_QT_NO_EXPORT void onContentReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotLocalHoldState(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onLocalHoldStateChanged(uint, uint); private: friend class PendingCallContent; TP_QT_NO_EXPORT CallContentPtr addContent(const QDBusObjectPath &contentPath); TP_QT_NO_EXPORT CallContentPtr lookupContent(const QDBusObjectPath &contentPath) const; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/abstract-interface.cpp0000644000175100017520000001631312530423576024437 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/abstract-interface.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT AbstractInterface::Private { Private(); QString mError; QString mMessage; bool monitorProperties; }; AbstractInterface::Private::Private() : monitorProperties(false) { } /** * \class AbstractInterface * \ingroup clientsideproxies * \headerfile TelepathyQt/abstract-interface.h * * \brief The AbstractInterface class is the base class for all client side * D-Bus interfaces, allowing access to remote methods/properties/signals. */ AbstractInterface::AbstractInterface(const QString &busName, const QString &path, const QLatin1String &interface, const QDBusConnection &dbusConnection, QObject *parent) : QDBusAbstractInterface(busName, path, interface.latin1(), dbusConnection, parent), mPriv(new Private) { } AbstractInterface::AbstractInterface(DBusProxy *parent, const QLatin1String &interface) : QDBusAbstractInterface(parent->busName(), parent->objectPath(), interface.latin1(), parent->dbusConnection(), parent), mPriv(new Private) { connect(parent, SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), this, SLOT(invalidate(Tp::DBusProxy*,QString,QString))); } AbstractInterface::~AbstractInterface() { delete mPriv; } bool AbstractInterface::isValid() const { return QDBusAbstractInterface::isValid() && mPriv->mError.isEmpty(); } QString AbstractInterface::invalidationReason() const { return mPriv->mError; } QString AbstractInterface::invalidationMessage() const { return mPriv->mMessage; } void AbstractInterface::invalidate(DBusProxy *proxy, const QString &error, const QString &message) { Q_ASSERT(!error.isEmpty()); if (mPriv->mError.isEmpty()) { mPriv->mError = error; mPriv->mMessage = message; } } PendingVariant *AbstractInterface::internalRequestProperty(const QString &name) const { QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), TP_QT_IFACE_PROPERTIES, QLatin1String("Get")); msg << interface() << name; QDBusPendingCall pendingCall = connection().asyncCall(msg); DBusProxy *proxy = qobject_cast(parent()); return new PendingVariant(pendingCall, DBusProxyPtr(proxy)); } PendingOperation *AbstractInterface::internalSetProperty(const QString &name, const QVariant &newValue) { QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), TP_QT_IFACE_PROPERTIES, QLatin1String("Set")); msg << interface() << name << QVariant::fromValue(QDBusVariant(newValue)); QDBusPendingCall pendingCall = connection().asyncCall(msg); DBusProxy *proxy = qobject_cast(parent()); return new PendingVoid(pendingCall, DBusProxyPtr(proxy)); } PendingVariantMap *AbstractInterface::internalRequestAllProperties() const { QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), TP_QT_IFACE_PROPERTIES, QLatin1String("GetAll")); msg << interface(); QDBusPendingCall pendingCall = connection().asyncCall(msg); DBusProxy *proxy = qobject_cast(parent()); return new PendingVariantMap(pendingCall, DBusProxyPtr(proxy)); } /** * Sets whether this abstract interface will be monitoring properties or not. If it's set to monitor, * the signal propertiesChanged will be emitted whenever a property on this interface will * change. * * By default, AbstractInterface does not monitor properties: you need to call this method * for this to happen. * * \param monitorProperties Whether this interface should monitor property changes or not. * \sa isMonitoringProperties * propertiesChanged() */ void AbstractInterface::setMonitorProperties(bool monitorProperties) { if (monitorProperties == mPriv->monitorProperties) { return; } QStringList argumentMatch; argumentMatch << interface(); bool success; if (monitorProperties) { success = connection().connect(service(), path(), TP_QT_IFACE_PROPERTIES, QLatin1String("PropertiesChanged"), argumentMatch, QString(), this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList))); } else { success = connection().disconnect(service(), path(), TP_QT_IFACE_PROPERTIES, QLatin1String("PropertiesChanged"), argumentMatch, QString(), this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList))); } if (!success) { warning() << "Connection or disconnection to " << TP_QT_IFACE_PROPERTIES << ".PropertiesChanged failed."; } } /** * Return whether this abstract interface is monitoring properties or not. If it's monitoring, * the signal propertiesChanged will be emitted whenever a property on this interface will * change. * * By default, AbstractInterface does not monitor properties: you need to call setMonitorProperties * for this to happen. * * \return \c true if the interface is monitoring for property changes, \c false otherwise. * \sa setMonitorProperties * propertiesChanged() */ bool AbstractInterface::isMonitoringProperties() const { return mPriv->monitorProperties; } void AbstractInterface::onPropertiesChanged(const QString &interface, const QVariantMap &changedProperties, const QStringList &invalidatedProperties) { emit propertiesChanged(changedProperties, invalidatedProperties); } /** * \fn void AbstractInterface::propertiesChanged(const QVariantMap &changedProperties, * const QStringList &invalidatedProperties) * * Emitted when one or more properties on this interface change or become invalidated. * This signal will be emitted only if the interface is monitoring properties. * * \param changedProperties A map of the changed properties with their new value, if any. * \param invalidatedProperties A list of the invalidated properties, if any. * \sa isMonitoringProperties() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/base-protocol-internal.h0000644000175100017520000001137412530423576024730 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/_gen/svc-connection-manager.h" #include #include #include #include #include #include #include namespace Tp { class TP_QT_NO_EXPORT BaseProtocol::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList interfaces READ interfaces) Q_PROPERTY(Tp::ParamSpecList parameters READ parameters) Q_PROPERTY(QStringList connectionInterfaces READ connectionInterfaces) Q_PROPERTY(Tp::RequestableChannelClassList requestableChannelClasses READ requestableChannelClasses) Q_PROPERTY(QString vcardField READ vcardField) Q_PROPERTY(QString englishName READ englishName) Q_PROPERTY(QString icon READ icon) Q_PROPERTY(QStringList authenticationTypes READ authenticationTypes) public: Adaptee(const QDBusConnection &dbusConnection, BaseProtocol *protocol); ~Adaptee(); QStringList interfaces() const; QStringList connectionInterfaces() const; ParamSpecList parameters() const; RequestableChannelClassList requestableChannelClasses() const; QString vcardField() const; QString englishName() const; QString icon() const; QStringList authenticationTypes() const; private Q_SLOTS: void identifyAccount(const QVariantMap ¶meters, const Tp::Service::ProtocolAdaptor::IdentifyAccountContextPtr &context); void normalizeContact(const QString &contactId, const Tp::Service::ProtocolAdaptor::NormalizeContactContextPtr &context); public: BaseProtocol *mProtocol; }; class TP_QT_NO_EXPORT BaseProtocolAddressingInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList addressableVCardFields READ addressableVCardFields) Q_PROPERTY(QStringList addressableURISchemes READ addressableURISchemes) public: Adaptee(BaseProtocolAddressingInterface *interface); ~Adaptee(); QStringList addressableVCardFields() const; QStringList addressableURISchemes() const; private Q_SLOTS: void normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress, const Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeVCardAddressContextPtr &context); void normalizeContactURI(const QString &uri, const Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeContactURIContextPtr &context); public: BaseProtocolAddressingInterface *mInterface; }; class TP_QT_NO_EXPORT BaseProtocolAvatarsInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList supportedAvatarMIMETypes READ supportedAvatarMIMETypes) Q_PROPERTY(uint minimumAvatarHeight READ minimumAvatarHeight) Q_PROPERTY(uint minimumAvatarWidth READ minimumAvatarWidth) Q_PROPERTY(uint recommendedAvatarHeight READ recommendedAvatarHeight) Q_PROPERTY(uint recommendedAvatarWidth READ recommendedAvatarWidth) Q_PROPERTY(uint maximumAvatarHeight READ maximumAvatarHeight) Q_PROPERTY(uint maximumAvatarWidth READ maximumAvatarWidth) Q_PROPERTY(uint maximumAvatarBytes READ maximumAvatarBytes) public: Adaptee(BaseProtocolAvatarsInterface *interface); ~Adaptee(); QStringList supportedAvatarMIMETypes() const; uint minimumAvatarHeight() const; uint minimumAvatarWidth() const; uint recommendedAvatarHeight() const; uint recommendedAvatarWidth() const; uint maximumAvatarHeight() const; uint maximumAvatarWidth() const; uint maximumAvatarBytes() const; public: BaseProtocolAvatarsInterface *mInterface; }; class TP_QT_NO_EXPORT BaseProtocolPresenceInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(Tp::SimpleStatusSpecMap statuses READ statuses) public: Adaptee(BaseProtocolPresenceInterface *interface); ~Adaptee(); SimpleStatusSpecMap statuses() const; public: BaseProtocolPresenceInterface *mInterface; }; } telepathy-qt-0.9.6.1/TelepathyQt/groups.dox0000644000175100017520000000765412530423576022235 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \defgroup clientsideproxies Client-side proxies * * Proxy objects representing remote service objects accessed via D-Bus. * * In addition to providing direct access to methods, signals and properties * exported by the remote objects, some of these proxies offer features like * automatic inspection of remote object capabilities, property tracking, * backwards compatibility helpers for older services and other utilities. */ /** * \defgroup clientaccount Account proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy account objects and their * optional interfaces. */ /** * \defgroup clientam Account manager proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy account manager objects and their * optional interfaces. */ /** * \defgroup clientchannel Channel proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy Channel objects and their * optional interfaces. */ /** * \defgroup clientchanneldispatcher ChannelDispatcher proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy ChannelDispatcher objects and * their optional interfaces. */ /** * \defgroup clientchanneldispatchoperation ChannelDispatchOperation proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy ChannelDispatchOperation objects * and their optional interfaces. */ /** * \defgroup clientchannelrequest ChannelRequest proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy ChannelRequest objects and their * optional interfaces. */ /** * \defgroup clientclient Client proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy Client objects (approvers, * handlers and observers) and their optional interfaces. */ /** * \defgroup clientcm Connection manager proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy ConnectionManager objects and * their optional interfaces. */ /** * \defgroup clientconn Connection proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy Connection objects and their * optional interfaces. */ /** * \defgroup servicesideimpl Service-side implementation * * Classes to implement service D-Bus objects. */ /** * \defgroup servicechannel Channel service implementation * \ingroup servicesideimpl * * Classes to implement Telepathy Channel objects and their * optional interfaces. */ /** * \defgroup servicecm Connection manager service implementation * \ingroup servicesideimpl * * Classes to implement Telepathy ConnectionManager objects and their * optional interfaces. */ /** * \defgroup serviceconn Connection service implementation * \ingroup servicesideimpl * * Classes to implement Telepathy Connection objects and their * optional interfaces. */ /** * \defgroup wrappers Wrapper classes * * Wrapper classes representing a Telepathy type. */ /** * \defgroup utils Utililty classes * * Utility classes. */ telepathy-qt-0.9.6.1/TelepathyQt/LocationInfo0000644000175100017520000000036312530423576022477 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_LocationInfo_HEADER_GUARD_ #define _TelepathyQt_LocationInfo_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/channel-request.h0000644000175100017520000001124412530423576023437 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_request_h_HEADER_GUARD_ #define _TelepathyQt_channel_request_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class ChannelRequestHints; class PendingOperation; class TP_QT_EXPORT ChannelRequest : public StatefulDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(ChannelRequest) public: static const Feature FeatureCore; static ChannelRequestPtr create(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); static ChannelRequestPtr create(const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~ChannelRequest(); AccountPtr account() const; QDateTime userActionTime() const; QString preferredHandler() const; QualifiedPropertyValueMapList requests() const; ChannelRequestHints hints() const; QVariantMap immutableProperties() const; PendingOperation *cancel(); ChannelPtr channel() const; Q_SIGNALS: void failed(const QString &errorName, const QString &errorMessage); void succeeded(const Tp::ChannelPtr &channel); protected: ChannelRequest(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); ChannelRequest(const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties); Client::ChannelRequestInterface *baseInterface() const; private Q_SLOTS: TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onAccountReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onLegacySucceeded(); TP_QT_NO_EXPORT void onSucceededWithChannel(const QDBusObjectPath &connPath, const QVariantMap &connProps, const QDBusObjectPath &chanPath, const QVariantMap &chanProps); TP_QT_NO_EXPORT void onChanBuilt(Tp::PendingOperation *op); private: friend class PendingChannelRequest; PendingOperation *proceed(); struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT ChannelRequestHints { public: ChannelRequestHints(); ChannelRequestHints(const QVariantMap &hints); ChannelRequestHints(const ChannelRequestHints &other); ~ChannelRequestHints(); ChannelRequestHints &operator=(const ChannelRequestHints &other); bool isValid() const; bool hasHint(const QString &reversedDomain, const QString &localName) const; QVariant hint(const QString &reversedDomain, const QString &localName) const; void setHint(const QString &reversedDomain, const QString &localName, const QVariant &value); QVariantMap allHints() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::ChannelRequestHints); #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-operation.h0000644000175100017520000000425312530423576023765 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_operation_h_HEADER_GUARD_ #define _TelepathyQt_pending_operation_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include class QDBusError; class QDBusPendingCall; class QDBusPendingCallWatcher; namespace Tp { class ReadinessHelper; class TP_QT_EXPORT PendingOperation : public QObject { Q_OBJECT Q_DISABLE_COPY(PendingOperation) public: virtual ~PendingOperation(); bool isFinished() const; bool isValid() const; bool isError() const; QString errorName() const; QString errorMessage() const; Q_SIGNALS: void finished(Tp::PendingOperation *operation); protected: PendingOperation(const SharedPtr &object); SharedPtr object() const; protected Q_SLOTS: void setFinished(); void setFinishedWithError(const QString &name, const QString &message); void setFinishedWithError(const QDBusError &error); private Q_SLOTS: TP_QT_NO_EXPORT void emitFinished(); private: friend class ContactManager; friend class ReadinessHelper; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-string.h0000644000175100017520000000340012530423576023264 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_string_h_HEADER_GUARD_ #define _TelepathyQt_pending_string_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT PendingString : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingString); public: PendingString(QDBusPendingCall call, const SharedPtr &object); ~PendingString(); QString result() const; protected: void setResult(const QString &result); private Q_SLOTS: TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher *watcher); private: friend class ProtocolInfo; TP_QT_NO_EXPORT PendingString(const QString &errorName, const QString &errorMessage); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceAnonymityInterface0000644000175100017520000000044212530423576027562 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceAnonymityInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceAnonymityInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ServiceTypes0000644000175100017520000000036312530423576022540 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ServiceTypes_HEADER_GUARD_ #define _TelepathyQt_ServiceTypes_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-channel.cpp0000644000175100017520000004722212530423576023733 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/fake-handler-manager-internal.h" #include "TelepathyQt/request-temporary-handler-internal.h" #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingChannel::Private { class FakeAccountFactory; ConnectionPtr connection; bool create; bool yours; QString channelType; uint handleType; uint handle; QVariantMap immutableProperties; ChannelPtr channel; ClientRegistrarPtr cr; SharedPtr handler; HandledChannelNotifier *notifier; static uint numHandlers; }; uint PendingChannel::Private::numHandlers = 0; class TP_QT_NO_EXPORT PendingChannel::Private::FakeAccountFactory : public AccountFactory { public: static AccountFactoryPtr create(const AccountPtr &account) { return AccountFactoryPtr(new FakeAccountFactory(account)); } ~FakeAccountFactory() { } AccountPtr account() const { return mAccount; } protected: AccountPtr construct(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const { if (mAccount->objectPath() != objectPath) { warning() << "Account received by the fake factory is different from original account"; } return mAccount; } private: FakeAccountFactory(const AccountPtr &account) : AccountFactory(account->dbusConnection(), Features()), mAccount(account) { } AccountPtr mAccount; }; /** * \class PendingChannel * \ingroup clientchannel * \headerfile TelepathyQt/pending-channel.h * * \brief The PendingChannel class represents the parameters of and the reply to * an asynchronous channel request. * * Instances of this class cannot be constructed directly; the only way to get * one is trough Connection or Account. * * See \ref async_model */ /** * Construct a new PendingChannel object that will fail immediately. * * \param connection Connection to use. * \param errorName The error name. * \param errorMessage The error message. */ PendingChannel::PendingChannel(const ConnectionPtr &connection, const QString &errorName, const QString &errorMessage) : PendingOperation(connection), mPriv(new Private) { mPriv->connection = connection; mPriv->yours = false; mPriv->handleType = 0; mPriv->handle = 0; mPriv->notifier = 0; mPriv->create = false; setFinishedWithError(errorName, errorMessage); } /** * Construct a new PendingChannel object. * * \param connection Connection to use. * \param request A dictionary containing the desirable properties. * \param create Whether createChannel or ensureChannel should be called. */ PendingChannel::PendingChannel(const ConnectionPtr &connection, const QVariantMap &request, bool create, int timeout) : PendingOperation(connection), mPriv(new Private) { mPriv->connection = connection; mPriv->yours = create; mPriv->channelType = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); mPriv->handleType = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")).toUInt(); mPriv->handle = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")).toUInt(); mPriv->notifier = 0; mPriv->create = create; Client::ConnectionInterfaceRequestsInterface *requestsInterface = connection->interface(); if (create) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( requestsInterface->CreateChannel(request, timeout), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onConnectionCreateChannelFinished(QDBusPendingCallWatcher*))); } else { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( requestsInterface->EnsureChannel(request, timeout), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onConnectionEnsureChannelFinished(QDBusPendingCallWatcher*))); } } PendingChannel::PendingChannel(const AccountPtr &account, const QVariantMap &request, const QDateTime &userActionTime, bool create) : PendingOperation(account), mPriv(new Private) { mPriv->yours = true; mPriv->channelType = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); mPriv->handleType = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")).toUInt(); mPriv->handle = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")).toUInt(); mPriv->cr = ClientRegistrar::create( Private::FakeAccountFactory::create(account), account->connectionFactory(), account->channelFactory(), account->contactFactory()); mPriv->handler = RequestTemporaryHandler::create(account); mPriv->notifier = 0; mPriv->create = create; QString handlerName = QString(QLatin1String("TpQtRaH_%1_%2")) .arg(account->dbusConnection().baseService() .replace(QLatin1String(":"), QLatin1String("_")) .replace(QLatin1String("."), QLatin1String("_"))) .arg(Private::numHandlers++); if (!mPriv->cr->registerClient(mPriv->handler, handlerName, false)) { warning() << "Unable to register handler" << handlerName; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Unable to register handler")); return; } connect(mPriv->handler.data(), SIGNAL(error(QString,QString)), SLOT(onHandlerError(QString,QString))); connect(mPriv->handler.data(), SIGNAL(channelReceived(Tp::ChannelPtr,QDateTime,Tp::ChannelRequestHints)), SLOT(onHandlerChannelReceived(Tp::ChannelPtr))); handlerName = QString(QLatin1String("org.freedesktop.Telepathy.Client.%1")).arg(handlerName); debug() << "Requesting channel through account using handler" << handlerName; PendingChannelRequest *pcr; if (create) { pcr = account->createChannel(request, userActionTime, handlerName, ChannelRequestHints()); } else { pcr = account->ensureChannel(request, userActionTime, handlerName, ChannelRequestHints()); } connect(pcr, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAccountCreateChannelFinished(Tp::PendingOperation*))); } /** * Construct a new PendingChannel object that will fail immediately. * * \param errorName The name of a D-Bus error. * \param errorMessage The error message. */ PendingChannel::PendingChannel(const QString &errorName, const QString &errorMessage) : PendingOperation(ConnectionPtr()), mPriv(new Private) { setFinishedWithError(errorName, errorMessage); } /** * Class destructor. */ PendingChannel::~PendingChannel() { delete mPriv; } /** * Return the connection through which the channel request was made. * * Note that if this channel request was created through Account, a null ConnectionPtr will be * returned. * * \return A pointer to the Connection object. */ ConnectionPtr PendingChannel::connection() const { return mPriv->connection; } /** * Return whether this channel belongs to this process. * * If \c false, the caller must assume that some other process is * handling this channel; if \c true, the caller should handle it * themselves or delegate it to another client. * * \return \c true if it belongs, \c false otherwise. */ bool PendingChannel::yours() const { if (!isFinished()) { warning() << "PendingChannel::yours called before finished, returning undefined value"; } else if (!isValid()) { warning() << "PendingChannel::yours called when not valid, returning undefined value"; } return mPriv->yours; } /** * Return the channel type specified in the channel request. * * \return The D-Bus interface name for the type of the channel. */ const QString &PendingChannel::channelType() const { return mPriv->channelType; } /** * If the channel request has finished, return the handle type of the resulting * channel. Otherwise, return the handle type that was requested. * * (One example of a request producing a different target handle type is that * on protocols like MSN, one-to-one conversations don't really exist, and if * you request a text channel with handle type HandleTypeContact, what you * will actually get is a text channel with handle type HandleTypeNone, with * the requested contact as a member.) * * \return The target handle type as #HandleType. * \sa targetHandle() */ uint PendingChannel::targetHandleType() const { return mPriv->handleType; } /** * If the channel request has finished, return the target handle of the * resulting channel. Otherwise, return the target handle that was requested * (which might be different in some situations - see targetHandleType()). * * \return An integer representing the target handle, which is of the type * targetHandleType() indicates. * \sa targetHandleType() */ uint PendingChannel::targetHandle() const { return mPriv->handle; } /** * If this channel request has finished, return the immutable properties of * the resulting channel. Otherwise, return an empty map. * * The keys and values in this map are defined by the \telepathy_spec, * or by third-party extensions to that specification. * These are the properties that cannot change over the lifetime of the * channel; they're announced in the result of the request, for efficiency. * This map should be passed to the constructor of Channel or its subclasses * (such as TextChannel). * * These properties can also be used to process channels in a way that does * not require the creation of a Channel object - for instance, a * ChannelDispatcher implementation should be able to classify and process * channels based on their immutable properties, without needing to create * Channel objects. * * \return The immutable properties as QVariantMap. */ QVariantMap PendingChannel::immutableProperties() const { QVariantMap props = mPriv->immutableProperties; // This is a reasonable guess - if it's Yours it's guaranteedly Requested by us, and if it's not // it could be either Requested by somebody else but also an incoming channel just as well. if (!props.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"))) { debug() << "CM didn't provide Requested in channel immutable props, guessing" << mPriv->yours; props[TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")] = mPriv->yours; } // Also, the spec says that if the channel was Requested by the local user, InitiatorHandle must // be the Connection's self handle if (!props.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"))) { if (qdbus_cast(props.value(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")))) { if (connection() && connection()->isReady(Connection::FeatureCore)) { debug() << "CM didn't provide InitiatorHandle in channel immutable props, but we " "know it's the conn's self handle (and have it)"; props[TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle")] = connection()->selfHandle(); } } } return props; } /** * Return the channel resulting from the channel request. * * \return A pointer to the Channel object. */ ChannelPtr PendingChannel::channel() const { if (!isFinished()) { warning() << "PendingChannel::channel called before finished, returning 0"; return ChannelPtr(); } else if (!isValid()) { warning() << "PendingChannel::channel called when not valid, returning 0"; return ChannelPtr(); } return mPriv->channel; } /** * If this channel request has finished and was created through Account, * return a HandledChannelNotifier object that will keep track of channel() being re-requested. * * \return A HandledChannelNotifier instance, or 0 if an error occurred. */ HandledChannelNotifier *PendingChannel::handledChannelNotifier() const { if (!isFinished()) { warning() << "PendingChannel::handledChannelNotifier called before finished, returning 0"; return 0; } else if (!isValid()) { warning() << "PendingChannel::handledChannelNotifier called when not valid, returning 0"; return 0; } if (mPriv->cr && !mPriv->notifier) { mPriv->notifier = new HandledChannelNotifier(mPriv->cr, mPriv->handler); } return mPriv->notifier; } void PendingChannel::onConnectionCreateChannelFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QString objectPath = reply.argumentAt<0>().path(); QVariantMap map = reply.argumentAt<1>(); debug() << "Got reply to Connection.CreateChannel - object path:" << objectPath; PendingReady *channelReady = connection()->channelFactory()->proxy(connection(), objectPath, map); mPriv->channel = ChannelPtr::qObjectCast(channelReady->proxy()); mPriv->immutableProperties = map; mPriv->channelType = map.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); mPriv->handleType = map.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")).toUInt(); mPriv->handle = map.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")).toUInt(); connect(channelReady, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onChannelReady(Tp::PendingOperation*))); } else { debug().nospace() << "CreateChannel failed:" << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } void PendingChannel::onConnectionEnsureChannelFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { mPriv->yours = reply.argumentAt<0>(); QString objectPath = reply.argumentAt<1>().path(); QVariantMap map = reply.argumentAt<2>(); debug() << "Got reply to Connection.EnsureChannel - object path:" << objectPath; PendingReady *channelReady = connection()->channelFactory()->proxy(connection(), objectPath, map); mPriv->channel = ChannelPtr::qObjectCast(channelReady->proxy()); mPriv->immutableProperties = map; mPriv->channelType = map.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); mPriv->handleType = map.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")).toUInt(); mPriv->handle = map.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")).toUInt(); connect(channelReady, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onChannelReady(Tp::PendingOperation*))); } else { debug().nospace() << "EnsureChannel failed:" << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } void PendingChannel::onChannelReady(PendingOperation *op) { if (!op->isError()) { setFinished(); } else { debug() << "Making the channel ready for" << this << "failed with" << op->errorName() << ":" << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); } } void PendingChannel::onHandlerError(const QString &errorName, const QString &errorMessage) { if (isFinished()) { return; } warning() << "Creating/ensuring channel failed with" << errorName << ":" << errorMessage; setFinishedWithError(errorName, errorMessage); } void PendingChannel::onHandlerChannelReceived(const ChannelPtr &channel) { if (isFinished()) { warning() << "Handler received the channel but this operation already finished due " "to failure in the channel request"; return; } mPriv->handleType = channel->targetHandleType(); mPriv->handle = channel->targetHandle(); mPriv->immutableProperties = channel->immutableProperties(); mPriv->channel = channel; // register the CR in FakeHandlerManager so that at least one handler per bus stays alive // until all channels requested using R&H gets invalidated/destroyed. // This is important in case Mission Control happens to restart while // the channel is still in use, since it will close each channel it // doesn't find a handler for it. FakeHandlerManager::instance()->registerClientRegistrar(mPriv->cr); setFinished(); } void PendingChannel::onAccountCreateChannelFinished(PendingOperation *op) { if (isFinished()) { if (isError()) { warning() << "Creating/ensuring channel finished with a failure after the internal " "handler already got a channel, ignoring"; } return; } if (op->isError()) { warning() << "Creating/ensuring channel failed with" << op->errorName() << ":" << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); return; } if (!mPriv->handler->isDBusHandlerInvoked()) { // Our handler hasn't be called but the channel request is complete. // That means another handler handled the channels so we don't own it. if (mPriv->create) { warning() << "Creating/ensuring channel failed with" << TP_QT_ERROR_SERVICE_CONFUSED << ":" << QLatin1String("CD.CreateChannel/WithHints returned successfully and " "the handler didn't receive the channel yet"); setFinishedWithError(TP_QT_ERROR_SERVICE_CONFUSED, QLatin1String("CD.CreateChannel/WithHints returned successfully and " "the handler didn't receive the channel yet")); } else { warning() << "Creating/ensuring channel failed with" << TP_QT_ERROR_NOT_YOURS << ":" << QLatin1String("Another handler is handling this channel"); setFinishedWithError(TP_QT_ERROR_NOT_YOURS, QLatin1String("Another handler is handling this channel")); } return; } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/Types0000644000175100017520000000033512530423576021216 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Types_HEADER_GUARD_ #define _TelepathyQt_Types_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Utils0000644000175100017520000000033512530423576021212 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Utils_HEADER_GUARD_ #define _TelepathyQt_Utils_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/SharedPtr0000644000175100017520000000035212530423576022005 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_SharedPtr_HEADER_GUARD_ #define _TelepathyQt_SharedPtr_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingStreamedMediaStreams0000644000175100017520000000043212530423576025460 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingStreamedMediaStreams_HEADER_GUARD_ #define _TelepathyQt_PendingStreamedMediaStreams_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/abstract-adaptor.h0000644000175100017520000000307412530423576023576 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_abstract_adaptor_h_HEADER_GUARD_ #define _TelepathyQt_abstract_adaptor_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include class QDBusConnection; namespace Tp { class TP_QT_EXPORT AbstractAdaptor : public QDBusAbstractAdaptor { Q_OBJECT public: AbstractAdaptor(const QDBusConnection &connection, QObject *adaptee, QObject *parent); ~AbstractAdaptor(); QDBusConnection dbusConnection() const; QObject *adaptee() const; private: struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus-proxy-factory-internal.h0000644000175100017520000000312312530423576025731 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef BUILDING_TP_QT #error "This file is a TpQt internal header not to be included by applications" #endif #include #include #include #include namespace Tp { class DBusProxy; class TP_QT_NO_EXPORT DBusProxyFactory::Cache : public QObject { Q_OBJECT public: typedef QPair Key; Cache(); ~Cache(); DBusProxyPtr get(const Key &key) const; void put(const DBusProxyPtr &proxy); private Q_SLOTS: void onProxyInvalidated(Tp::DBusProxy *proxy); // The error itself is not interesting private: QHash > proxies; }; } telepathy-qt-0.9.6.1/TelepathyQt/tube-channel.cpp0000644000175100017520000001767112530423576023253 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/tube-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT TubeChannel::Private { Private(TubeChannel *parent); static void introspectTube(TubeChannel::Private *self); void extractTubeProperties(const QVariantMap &props); // Public object TubeChannel *parent; ReadinessHelper *readinessHelper; // Introspection TubeChannelState state; QVariantMap parameters; }; TubeChannel::Private::Private(TubeChannel *parent) : parent(parent), readinessHelper(parent->readinessHelper()), state((TubeChannelState) -1) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableTube( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_TUBE, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &TubeChannel::Private::introspectTube, this); introspectables[TubeChannel::FeatureCore] = introspectableTube; readinessHelper->addIntrospectables(introspectables); } void TubeChannel::Private::introspectTube(TubeChannel::Private *self) { TubeChannel *parent = self->parent; debug() << "Introspecting tube properties"; Client::ChannelInterfaceTubeInterface *tubeInterface = parent->interface(); parent->connect(tubeInterface, SIGNAL(TubeChannelStateChanged(uint)), SLOT(onTubeChannelStateChanged(uint))); PendingVariantMap *pvm = tubeInterface->requestAllProperties(); parent->connect(pvm, SIGNAL(finished(Tp::PendingOperation *)), SLOT(gotTubeProperties(Tp::PendingOperation *))); } void TubeChannel::Private::extractTubeProperties(const QVariantMap &props) { state = (Tp::TubeChannelState) qdbus_cast(props[QLatin1String("State")]); parameters = qdbus_cast(props[QLatin1String("Parameters")]); } /** * \class TubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/tube-channel.h * * \brief The TubeChannel class is a base class for all tube types. * * A tube is a mechanism for arbitrary data transfer between two or more IM users, * used to allow applications on the users' systems to communicate without having * to establish network connections themselves. * * Note that TubeChannel should never be instantiated directly, instead one of its * subclasses (e.g. IncomingStreamTubeChannel or OutgoingStreamTubeChannel) should be used. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * TubeChannel object usable. * * Note that this feature must be enabled in order to use most * TubeChannel methods. * See specific methods documentation for more details. */ const Feature TubeChannel::FeatureCore = Feature(QLatin1String(TubeChannel::staticMetaObject.className()), 0); /** * Create a new TubeChannel channel. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A TubeChannelPtr object pointing to the newly created * TubeChannel object. */ TubeChannelPtr TubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return TubeChannelPtr(new TubeChannel(connection, objectPath, immutableProperties)); } /** * Construct a new TubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on TubeChannel::FeatureCore. */ TubeChannel::TubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ TubeChannel::~TubeChannel() { delete mPriv; } /** * Return the parameters associated with this tube, if any. * * The parameters are populated when an outgoing tube is offered, but they are most useful in the * receiving end, where the parameters passed to the offer can be extracted for the tube's entire * lifetime to bootstrap legacy protocols. All parameters are passed unchanged. * * This method requires TubeChannel::FeatureCore to be ready. * * \return The parameters as QVariantMap. */ QVariantMap TubeChannel::parameters() const { if (!isReady(FeatureCore)) { warning() << "TubeChannel::parameters() used with FeatureCore not ready"; return QVariantMap(); } return mPriv->parameters; } /** * Return the state of this tube. * * Change notification is via the stateChanged() signal. * * This method requires TubeChannel::FeatureCore to be ready. * * \return The state as #TubeChannelState. * \sa stateChanged() */ TubeChannelState TubeChannel::state() const { if (!isReady(FeatureCore)) { warning() << "TubeChannel::state() used with FeatureCore not ready"; return TubeChannelStateNotOffered; } return mPriv->state; } void TubeChannel::setParameters(const QVariantMap ¶meters) { mPriv->parameters = parameters; } void TubeChannel::onTubeChannelStateChanged(uint newState) { if (newState == mPriv->state) { return; } uint oldState = mPriv->state; debug() << "Tube state changed to" << newState; mPriv->state = (Tp::TubeChannelState) newState; /* only emit stateChanged if we already received the state from initial introspection */ if (oldState != (uint) -1) { emit stateChanged((Tp::TubeChannelState) newState); } } void TubeChannel::gotTubeProperties(PendingOperation *op) { if (!op->isError()) { PendingVariantMap *pvm = qobject_cast(op); mPriv->extractTubeProperties(pvm->result()); debug() << "Got reply to Properties::GetAll(TubeChannel)"; mPriv->readinessHelper->setIntrospectCompleted(TubeChannel::FeatureCore, true); } else { warning().nospace() << "Properties::GetAll(TubeChannel) failed " "with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(TubeChannel::FeatureCore, false, op->errorName(), op->errorMessage()); } } /** * \fn void TubeChannel::stateChanged(Tp::TubeChannelState state) * * Emitted when the value of state() changes. * * \sa state The new state of this tube. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/base-protocol.h0000644000175100017520000002064412530423576023116 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_base_protocol_h_HEADER_GUARD_ #define _TelepathyQt_base_protocol_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include class QString; class QStringList; namespace Tp { class TP_QT_EXPORT BaseProtocol : public DBusService { Q_OBJECT Q_DISABLE_COPY(BaseProtocol) public: static BaseProtocolPtr create(const QString &name) { return BaseProtocolPtr(new BaseProtocol(QDBusConnection::sessionBus(), name)); } template static SharedPtr create(const QString &name) { return SharedPtr(new BaseProtocolSubclass( QDBusConnection::sessionBus(), name)); } static BaseProtocolPtr create(const QDBusConnection &dbusConnection, const QString &name) { return BaseProtocolPtr(new BaseProtocol(dbusConnection, name)); } template static SharedPtr create(const QDBusConnection &dbusConnection, const QString &name) { return SharedPtr(new BaseProtocolSubclass(dbusConnection, name)); } virtual ~BaseProtocol(); QString name() const; QVariantMap immutableProperties() const; // Proto QStringList connectionInterfaces() const; void setConnectionInterfaces(const QStringList &connInterfaces); ProtocolParameterList parameters() const; void setParameters(const ProtocolParameterList ¶meters); RequestableChannelClassSpecList requestableChannelClasses() const; void setRequestableChannelClasses(const RequestableChannelClassSpecList &rccSpecs); QString vcardField() const; void setVCardField(const QString &vcardField); QString englishName() const; void setEnglishName(const QString &englishName); QString iconName() const; void setIconName(const QString &iconName); QStringList authenticationTypes() const; void setAuthenticationTypes(const QStringList &authenticationTypes); typedef Callback2 CreateConnectionCallback; void setCreateConnectionCallback(const CreateConnectionCallback &cb); Tp::BaseConnectionPtr createConnection(const QVariantMap ¶meters, DBusError *error); typedef Callback2 IdentifyAccountCallback; void setIdentifyAccountCallback(const IdentifyAccountCallback &cb); QString identifyAccount(const QVariantMap ¶meters, DBusError *error); typedef Callback2 NormalizeContactCallback; void setNormalizeContactCallback(const NormalizeContactCallback &cb); QString normalizeContact(const QString &contactId, DBusError *error); QList interfaces() const; AbstractProtocolInterfacePtr interface(const QString & interfaceName) const; bool plugInterface(const AbstractProtocolInterfacePtr &interface); protected: BaseProtocol(const QDBusConnection &dbusConnection, const QString &name); virtual bool registerObject(const QString &busName, const QString &objectPath, DBusError *error); private: friend class BaseConnectionManager; class Adaptee; friend class Adaptee; class Private; friend class Private; Private *mPriv; }; class TP_QT_EXPORT AbstractProtocolInterface : public AbstractDBusServiceInterface { Q_OBJECT Q_DISABLE_COPY(AbstractProtocolInterface) public: AbstractProtocolInterface(const QString &interfaceName); virtual ~AbstractProtocolInterface(); private: friend class BaseProtocol; class Private; friend class Private; Private *mPriv; }; class TP_QT_EXPORT BaseProtocolAddressingInterface : public AbstractProtocolInterface { Q_OBJECT Q_DISABLE_COPY(BaseProtocolAddressingInterface) public: static BaseProtocolAddressingInterfacePtr create() { return BaseProtocolAddressingInterfacePtr(new BaseProtocolAddressingInterface()); } template static SharedPtr create() { return SharedPtr( new BaseProtocolAddressingInterfaceSubclass()); } virtual ~BaseProtocolAddressingInterface(); QVariantMap immutableProperties() const; QStringList addressableVCardFields() const; void setAddressableVCardFields(const QStringList &vcardFields); QStringList addressableUriSchemes() const; void setAddressableUriSchemes(const QStringList &uriSchemes); typedef Callback3 NormalizeVCardAddressCallback; void setNormalizeVCardAddressCallback(const NormalizeVCardAddressCallback &cb); QString normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress, DBusError *error); typedef Callback2 NormalizeContactUriCallback; void setNormalizeContactUriCallback(const NormalizeContactUriCallback &cb); QString normalizeContactUri(const QString &uri, DBusError *error); protected: BaseProtocolAddressingInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseProtocolAvatarsInterface : public AbstractProtocolInterface { Q_OBJECT Q_DISABLE_COPY(BaseProtocolAvatarsInterface) public: static BaseProtocolAvatarsInterfacePtr create() { return BaseProtocolAvatarsInterfacePtr(new BaseProtocolAvatarsInterface()); } template static SharedPtr create() { return SharedPtr( new BaseProtocolAvatarsInterfaceSubclass()); } virtual ~BaseProtocolAvatarsInterface(); QVariantMap immutableProperties() const; AvatarSpec avatarDetails() const; void setAvatarDetails(const AvatarSpec &spec); protected: BaseProtocolAvatarsInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseProtocolPresenceInterface : public AbstractProtocolInterface { Q_OBJECT Q_DISABLE_COPY(BaseProtocolPresenceInterface) public: static BaseProtocolPresenceInterfacePtr create() { return BaseProtocolPresenceInterfacePtr(new BaseProtocolPresenceInterface()); } template static SharedPtr create() { return SharedPtr( new BaseProtocolPresenceInterfaceSubclass()); } virtual ~BaseProtocolPresenceInterface(); QVariantMap immutableProperties() const; PresenceSpecList statuses() const; void setStatuses(const PresenceSpecList &statuses); protected: BaseProtocolPresenceInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/future-internal.h0000644000175100017520000000256212530423576023470 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_future_internal_h_HEADER_GUARD_ #define _TelepathyQt_future_internal_h_HEADER_GUARD_ #include "TelepathyQt/_gen/future-constants.h" #include "TelepathyQt/_gen/future-types.h" #include "TelepathyQt/Channel" #include "TelepathyQt/ChannelDispatcher" #include "TelepathyQt/Connection" #include "TelepathyQt/_gen/future-channel.h" #include "TelepathyQt/_gen/future-channel-dispatcher.h" #include "TelepathyQt/_gen/future-misc.h" #endif telepathy-qt-0.9.6.1/TelepathyQt/call-channel.cpp0000644000175100017520000013034412530423576023220 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/call-channel.moc.hpp" #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT CallChannel::Private { Private(CallChannel *parent); ~Private(); static void introspectCore(Private *self); static void introspectCallState(Private *self); static void introspectCallMembers(Private *self); static void introspectContents(Private *self); static void introspectLocalHoldState(Private *self); void processCallMembersChanged(); struct CallMembersChangedInfo; // Public object CallChannel *parent; // Mandatory proxies Client::ChannelTypeCallInterface *callInterface; ReadinessHelper *readinessHelper; // Introspection uint state; uint flags; CallStateReason stateReason; QVariantMap stateDetails; CallMemberMap callMembers; QHash callMembersContacts; QQueue< QSharedPointer > callMembersChangedQueue; QSharedPointer currentCallMembersChangedInfo; bool hardwareStreaming; uint initialTransportType; bool initialAudio; bool initialVideo; QString initialAudioName; QString initialVideoName; bool mutableContents; CallContents contents; CallContents incompleteContents; uint localHoldState; uint localHoldStateReason; }; struct TP_QT_NO_EXPORT CallChannel::Private::CallMembersChangedInfo { CallMembersChangedInfo(const CallMemberMap &updates, const HandleIdentifierMap &identifiers, const UIntList &removed, const CallStateReason &reason) : updates(updates), identifiers(identifiers), removed(removed), reason(reason) { } static QSharedPointer create( const CallMemberMap &updates, const HandleIdentifierMap &identifiers, const UIntList &removed, const CallStateReason &reason) { CallMembersChangedInfo *info = new CallMembersChangedInfo( updates, identifiers, removed, reason); return QSharedPointer(info); } CallMemberMap updates; HandleIdentifierMap identifiers; UIntList removed; CallStateReason reason; }; CallChannel::Private::Private(CallChannel *parent) : parent(parent), callInterface(parent->interface()), readinessHelper(parent->readinessHelper()), state(CallStateUnknown), flags((uint) -1), hardwareStreaming(false), initialTransportType(StreamTransportTypeUnknown), initialAudio(false), initialVideo(false), mutableContents(false), localHoldState(LocalHoldStateUnheld), localHoldStateReason(LocalHoldStateReasonNone) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectCore, this); introspectables[FeatureCore] = introspectableCore; ReadinessHelper::Introspectable introspectableCallState( QSet() << 0, // makesSenseForStatuses Features() << CallChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectCallState, this); introspectables[FeatureCallState] = introspectableCallState; ReadinessHelper::Introspectable introspectableCallMembers( QSet() << 0, // makesSenseForStatuses Features() << CallChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectCallMembers, this); introspectables[FeatureCallMembers] = introspectableCallMembers; ReadinessHelper::Introspectable introspectableContents( QSet() << 0, // makesSenseForStatuses Features() << CallChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectContents, this); introspectables[FeatureContents] = introspectableContents; ReadinessHelper::Introspectable introspectableLocalHoldState( QSet() << 0, // makesSenseForStatuses Features() << CallChannel::FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_HOLD, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectLocalHoldState, this); introspectables[FeatureLocalHoldState] = introspectableLocalHoldState; readinessHelper->addIntrospectables(introspectables); } CallChannel::Private::~Private() { } void CallChannel::Private::introspectCore(CallChannel::Private *self) { const static QString qualifiedNames[] = { TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".HardwareStreaming"), TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialTransport"), TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName"), TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName"), TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".MutableContents") }; CallChannel *parent = self->parent; QVariantMap immutableProperties = parent->immutableProperties(); bool needIntrospectMainProps = false; for (unsigned i = 0; i < sizeof(qualifiedNames)/sizeof(QString); ++i) { const QString &qualified = qualifiedNames[i]; if (!immutableProperties.contains(qualified)) { needIntrospectMainProps = true; break; } } if (needIntrospectMainProps) { debug() << "Introspecting immutable properties of CallChannel"; parent->connect(self->callInterface->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotMainProperties(Tp::PendingOperation*))); } else { self->hardwareStreaming = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".HardwareStreaming")]); self->initialTransportType = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialTransport")]); self->initialAudio = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio")]); self->initialVideo = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo")]); self->initialAudioName = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName")]); self->initialVideoName = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName")]); self->mutableContents = qdbus_cast(immutableProperties[ TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".MutableContents")]); self->readinessHelper->setIntrospectCompleted(FeatureCore, true); } } void CallChannel::Private::introspectCallState(CallChannel::Private *self) { CallChannel *parent = self->parent; parent->connect(self->callInterface, SIGNAL(CallStateChanged(uint,uint,Tp::CallStateReason,QVariantMap)), SLOT(onCallStateChanged(uint,uint,Tp::CallStateReason,QVariantMap))); parent->connect(self->callInterface->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotCallState(Tp::PendingOperation*))); } void CallChannel::Private::introspectCallMembers(CallChannel::Private *self) { CallChannel *parent = self->parent; parent->connect(self->callInterface, SIGNAL(CallMembersChanged(Tp::CallMemberMap,Tp::HandleIdentifierMap,Tp::UIntList,Tp::CallStateReason)), SLOT(onCallMembersChanged(Tp::CallMemberMap,Tp::HandleIdentifierMap,Tp::UIntList,Tp::CallStateReason))); parent->connect(self->callInterface->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotCallMembers(Tp::PendingOperation*))); } void CallChannel::Private::introspectContents(CallChannel::Private *self) { CallChannel *parent = self->parent; parent->connect(self->callInterface, SIGNAL(ContentAdded(QDBusObjectPath)), SLOT(onContentAdded(QDBusObjectPath))); parent->connect(self->callInterface, SIGNAL(ContentRemoved(QDBusObjectPath,Tp::CallStateReason)), SLOT(onContentRemoved(QDBusObjectPath,Tp::CallStateReason))); parent->connect(self->callInterface->requestPropertyContents(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContents(Tp::PendingOperation*))); } void CallChannel::Private::introspectLocalHoldState(CallChannel::Private *self) { CallChannel *parent = self->parent; Client::ChannelInterfaceHoldInterface *holdInterface = parent->interface(); parent->connect(holdInterface, SIGNAL(HoldStateChanged(uint,uint)), SLOT(onLocalHoldStateChanged(uint,uint))); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( holdInterface->GetHoldState(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotLocalHoldState(QDBusPendingCallWatcher*))); } void CallChannel::Private::processCallMembersChanged() { if (currentCallMembersChangedInfo) { // currently building contacts return; } if (callMembersChangedQueue.isEmpty()) { if (!parent->isReady(FeatureCallMembers)) { readinessHelper->setIntrospectCompleted(FeatureCallMembers, true); } return; } currentCallMembersChangedInfo = callMembersChangedQueue.dequeue(); QSet pendingCallMembers; for (ContactSendingStateMap::const_iterator i = currentCallMembersChangedInfo->updates.constBegin(); i != currentCallMembersChangedInfo->updates.constEnd(); ++i) { pendingCallMembers.insert(i.key()); } foreach(uint i, currentCallMembersChangedInfo->removed) { pendingCallMembers.insert(i); } if (!pendingCallMembers.isEmpty()) { ConnectionPtr connection = parent->connection(); connection->lowlevel()->injectContactIds(currentCallMembersChangedInfo->identifiers); ContactManagerPtr contactManager = connection->contactManager(); PendingContacts *contacts = contactManager->contactsForHandles( pendingCallMembers.toList()); parent->connect(contacts, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotCallMembersContacts(Tp::PendingOperation*))); } else { currentCallMembersChangedInfo.clear(); processCallMembersChanged(); } } /** * \class CallChannel * \ingroup clientchannel * \headerfile TelepathyQt/call-channel.h * * \brief The CallChannel class provides an object representing a * Telepathy channel of type Call. */ /** * Feature representing the core that needs to become ready to make the * CallChannel object usable. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature CallChannel::FeatureCore = Feature(QLatin1String(CallChannel::staticMetaObject.className()), 0, true); /** * Feature used in order to access call state specific methods. * * See call state specific methods' documentation for more details. */ const Feature CallChannel::FeatureCallState = Feature(QLatin1String(CallChannel::staticMetaObject.className()), 1); /** * Feature used in order to access members specific methods. * * See local members specific methods' documentation for more details. */ const Feature CallChannel::FeatureCallMembers = Feature(QLatin1String(CallChannel::staticMetaObject.className()), 2); /** * Feature used in order to access content specific methods. * * See media content specific methods' documentation for more details. */ const Feature CallChannel::FeatureContents = Feature(QLatin1String(CallChannel::staticMetaObject.className()), 3); /** * Feature used in order to access local hold state info. * * See local hold state specific methods' documentation for more details. */ const Feature CallChannel::FeatureLocalHoldState = Feature(QLatin1String(CallChannel::staticMetaObject.className()), 4); /** * Create a new CallChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. * \return A CallChannelPtr object pointing to the newly created * CallChannel object. */ CallChannelPtr CallChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return CallChannelPtr(new CallChannel(connection, objectPath, immutableProperties)); } /** * Construct a new CallChannel associated with the given object on the same * service as the given connection. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. * \param coreFeature The core feature of the channel type. The corresponding introspectable * should depend on Channel::FeatureCore. */ CallChannel::CallChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ CallChannel::~CallChannel() { delete mPriv; } /** * Return the current high-level state of this call. * * This function requires CallChannel::FeatureCallState to be enabled. * * \return The current high-level state of this call. * \sa callStateChanged() */ CallState CallChannel::callState() const { if (!isReady(FeatureCallState)) { warning() << "CallChannel::callState() used with FeatureCallState not ready"; } return (CallState) mPriv->state; } /** * Return the flags representing the status of this call as a whole, providing more specific * information than callState(). * * This function requires CallChannel::FeatureCallState to be enabled. * * \return The flags representing the status of this call. * \sa callFlagsChanged() */ CallFlags CallChannel::callFlags() const { if (!isReady(FeatureCallState)) { warning() << "CallChannel::callFlags() used with FeatureCallState not ready"; } return (CallFlags) mPriv->flags; } /** * Return the reason for the last change to the callState() and/or callFlags(). * * This function requires CallChannel::FeatureCallState to be enabled. * * \return The reason for the last change to the callState() and/or callFlags(). * \sa callStateChanged(), callFlagsChanged() */ CallStateReason CallChannel::callStateReason() const { if (!isReady(FeatureCallState)) { warning() << "CallChannel::callStateReason() used with FeatureCallState not ready"; } return mPriv->stateReason; } /** * Return optional extensible details for the callState(), * callFlags() and/or callStateReason(). * * This function requires CallChannel::FeatureCallState to be enabled. * * \return The optional extensible details for the callState(), * callFlags() and/or callStateReason(). * \sa callStateChanged(), callFlagsChanged() */ QVariantMap CallChannel::callStateDetails() const { if (!isReady(FeatureCallState)) { warning() << "CallChannel::callStateDetails() used with FeatureCallState not ready"; } return mPriv->stateDetails; } /** * Return the remote members of this call. * * This function requires CallChannel::FeatureCallMembers to be enabled. * * \return The remote members of this call. * \sa remoteMemberFlags(), remoteMemberFlagsChanged(), remoteMembersRemoved() */ Contacts CallChannel::remoteMembers() const { if (!isReady(FeatureCallMembers)) { warning() << "CallChannel::remoteMembers() used with FeatureCallMembers not ready"; return Contacts(); } return mPriv->callMembersContacts.values().toSet(); } /** * Return the flags that describe the status of a given \a member of this call. * * This function requires CallChannel::FeatureCallMembers to be enabled. * * \param member The member of interest. * \return The flags that describe the status of the requested member. * \sa remoteMemberFlagsChanged(), remoteMembers(), remoteMembersRemoved() */ CallMemberFlags CallChannel::remoteMemberFlags(const ContactPtr &member) const { if (!isReady(FeatureCallMembers)) { warning() << "CallChannel::remoteMemberFlags() used with FeatureCallMembers not ready"; return (CallMemberFlags) 0; } if (!member) { return (CallMemberFlags) 0; } for (CallMemberMap::const_iterator i = mPriv->callMembers.constBegin(); i != mPriv->callMembers.constEnd(); ++i) { uint handle = i.key(); CallMemberFlags sendingState = (CallMemberFlags) i.value(); if (handle == member->handle()[0]) { return sendingState; } } return (CallMemberFlags) 0; } /** * Check whether media streaming by the handler is required for this channel. * * If \c false, all of the media streaming is done by some mechanism outside the scope * of Telepathy, otherwise the handler is responsible for doing the actual media streaming. * * \return \c true if required, \c false otherwise. */ bool CallChannel::handlerStreamingRequired() const { return !mPriv->hardwareStreaming; } /** * Return the initial transport type used for this call if set on a requested channel. * * Where not applicable, this property is defined to be #StreamTransportTypeUnknown, in * particular, on CMs with hardware streaming. * * \return The initial transport type used for this call. */ StreamTransportType CallChannel::initialTransportType() const { return (StreamTransportType) mPriv->initialTransportType; } /** * Return whether an audio content was requested at the channel's creation time. * * \return \c true if an audio content was requested, \c false otherwise. */ bool CallChannel::hasInitialAudio() const { return mPriv->initialAudio; } /** * Return whether a video content was requested at the channel's creation time. * * \return \c true if an video content was requested, \c false otherwise. */ bool CallChannel::hasInitialVideo() const { return mPriv->initialVideo; } /** * Return the name of the initial audio content if hasInitialAudio() returns \c true. * * \return The name of the initial audio content. */ QString CallChannel::initialAudioName() const { return mPriv->initialAudioName; } /** * Return the name of the initial video content if hasInitialVideo() returns \c true. * * \return The name of the initial video content. */ QString CallChannel::initialVideoName() const { return mPriv->initialVideoName; } /** * Return whether new contents can be added on the call after the Channel has * been requested. * * \return \c true if a new content can be added after the Channel has been * requested, \c false otherwise. * \sa requestContent() */ bool CallChannel::hasMutableContents() const { return mPriv->mutableContents; } /** * Indicate that the local user has been alerted about the incoming call. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *CallChannel::setRinging() { return new PendingVoid(mPriv->callInterface->SetRinging(), CallChannelPtr(this)); } /** * Notify the CM that the local user is already in a call, so this * call has been put in a call-waiting style queue. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *CallChannel::setQueued() { return new PendingVoid(mPriv->callInterface->SetQueued(), CallChannelPtr(this)); } /** * Accept an incoming call, or begin calling the remote contact on an outgoing call. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *CallChannel::accept() { return new PendingVoid(mPriv->callInterface->Accept(), CallChannelPtr(this)); } /** * Request that the call is ended. * * \param reason A generic hangup reason. * \param detailedReason A more specific reason for the call hangup, if one is * available, or an empty string otherwise. * \param message A human-readable message to be sent to the remote contact(s). * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *CallChannel::hangup(CallStateChangeReason reason, const QString &detailedReason, const QString &message) { return new PendingVoid(mPriv->callInterface->Hangup(reason, detailedReason, message), CallChannelPtr(this)); } /** * Return a list of media contents in this channel. * * This methods requires CallChannel::FeatureContents to be enabled. * * \return The contents in this channel. * \sa contentAdded(), contentRemoved(), contentsForType(), contentByName(), requestContent() */ CallContents CallChannel::contents() const { if (!isReady(FeatureContents)) { warning() << "CallChannel::contents() used with FeatureContents not ready"; return CallContents(); } return mPriv->contents; } /** * Return a list of media contents in this channel for the given type \a type. * * This methods requires CallChannel::FeatureContents to be enabled. * * \param type The interested type. * \return A list of media contents in this channel for the given type \a type. * \sa contentAdded(), contentRemoved(), contents(), contentByName(), requestContent() */ CallContents CallChannel::contentsForType(MediaStreamType type) const { if (!isReady(FeatureContents)) { warning() << "CallChannel::contents() used with FeatureContents not ready"; return CallContents(); } CallContents contents; foreach (const CallContentPtr &content, mPriv->contents) { if (content->type() == type) { contents.append(content); } } return contents; } /** * Return the media content in this channel that has the specified \a name. * * This methods requires CallChannel::FeatureContents to be enabled. * * \param name The interested name. * \return The media content in this channel that has the specified \a name. * \sa contentAdded(), contentRemoved(), contents(), contentsForType(), requestContent() */ CallContentPtr CallChannel::contentByName(const QString &contentName) const { if (!isReady(FeatureContents)) { warning() << "CallChannel::contentByName() used with FeatureContents not ready"; return CallContentPtr(); } foreach (const CallContentPtr &content, mPriv->contents) { if (content->name() == contentName) { return content; } } return CallContentPtr(); } /** * Request a new media content to be created to exchange the given type \a type * of media. * * This methods requires CallChannel::FeatureContents to be enabled. * * \return A PendingCallContent which will emit PendingCallContent::finished * when the call has finished. * \sa contentAdded(), contents(), contentsForType(), contentByName() */ PendingCallContent *CallChannel::requestContent(const QString &name, MediaStreamType type, MediaStreamDirection direction) { return new PendingCallContent(CallChannelPtr(this), name, type, direction); } /** * Return whether the local user has placed this channel on hold. * * This method requires CallChannel::FeatureHoldState to be enabled. * * \return The channel's local hold state. * \sa requestHold(), localHoldStateChanged() */ LocalHoldState CallChannel::localHoldState() const { if (!isReady(FeatureLocalHoldState)) { warning() << "CallChannel::localHoldState() used with FeatureLocalHoldState not ready"; } else if (!hasInterface(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD)) { warning() << "CallChannel::localHoldStateReason() used with no hold interface"; } return (LocalHoldState) mPriv->localHoldState; } /** * Return the reason why localHoldState() changed to its current value. * * This method requires CallChannel::FeatureLocalHoldState to be enabled. * * \return The channel local hold state reason. * \sa requestHold(), localHoldStateChanged() */ LocalHoldStateReason CallChannel::localHoldStateReason() const { if (!isReady(FeatureLocalHoldState)) { warning() << "CallChannel::localHoldStateReason() used with FeatureLocalHoldState not ready"; } else if (!hasInterface(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD)) { warning() << "CallChannel::localHoldStateReason() used with no hold interface"; } return (LocalHoldStateReason) mPriv->localHoldStateReason; } /** * Request that the channel be put on hold (be instructed not to send any media * streams to you) or be taken off hold. * * If the connection manager can immediately tell that the requested state * change could not possibly succeed, the resulting PendingOperation will fail * with error code #TP_QT_ERROR_NOT_AVAILABLE. * If the requested state is the same as the current state, the resulting * PendingOperation will finish successfully. * * Otherwise, the channel's local hold state will change to * Tp::LocalHoldStatePendingHold or Tp::LocalHoldStatePendingUnhold (as * appropriate), then the resulting PendingOperation will finish successfully. * * The eventual success or failure of the request is indicated by a subsequent * localHoldStateChanged() signal, changing the local hold state to * Tp::LocalHoldStateHeld or Tp::LocalHoldStateUnheld. * * If the channel has multiple streams, and the connection manager succeeds in * changing the hold state of one stream but fails to change the hold state of * another, it will attempt to revert all streams to their previous hold * states. * * If the channel does not support the #TP_QT_IFACE_CHANNEL_INTERFACE_HOLD * interface, the PendingOperation will fail with error code * #TP_QT_ERROR_NOT_IMPLEMENTED. * * \param hold A boolean indicating whether or not the channel should be on hold * \return A PendingOperation, which will emit PendingOperation::finished * when the request finishes. * \sa localHoldState(), localHoldStateReason(), localHoldStateChanged() */ PendingOperation *CallChannel::requestHold(bool hold) { if (!hasInterface(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD)) { warning() << "CallChannel::requestHold() used with no hold interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("CallChannel does not support hold interface"), CallChannelPtr(this)); } Client::ChannelInterfaceHoldInterface *holdInterface = interface(); return new PendingVoid(holdInterface->RequestHold(hold), CallChannelPtr(this)); } void CallChannel::gotMainProperties(PendingOperation *op) { if (op->isError()) { warning().nospace() << "CallInterface::requestAllProperties() failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); return; } debug() << "Got reply to CallInterface::requestAllProperties()"; PendingVariantMap *pvm = qobject_cast(op); Q_ASSERT(pvm); QVariantMap props = pvm->result(); mPriv->hardwareStreaming = qdbus_cast(props[QLatin1String("HardwareStreaming")]); mPriv->initialTransportType = qdbus_cast(props[QLatin1String("InitialTransport")]); mPriv->initialAudio = qdbus_cast(props[QLatin1String("InitialAudio")]); mPriv->initialVideo = qdbus_cast(props[QLatin1String("InitialVideo")]); mPriv->initialAudioName = qdbus_cast(props[QLatin1String("InitialAudioName")]); mPriv->initialVideoName = qdbus_cast(props[QLatin1String("InitialVideoName")]); mPriv->mutableContents = qdbus_cast(props[QLatin1String("MutableContents")]); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } void CallChannel::gotCallState(PendingOperation *op) { if (op->isError()) { warning().nospace() << "CallInterface::requestAllProperties() failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCallState, false, op->errorName(), op->errorMessage()); return; } debug() << "Got reply to CallInterface::requestAllProperties()"; PendingVariantMap *pvm = qobject_cast(op); Q_ASSERT(pvm); QVariantMap props = pvm->result(); mPriv->state = qdbus_cast(props[QLatin1String("CallState")]); mPriv->flags = qdbus_cast(props[QLatin1String("CallFlags")]); mPriv->stateReason = qdbus_cast(props[QLatin1String("CallStateReason")]); mPriv->stateDetails = qdbus_cast(props[QLatin1String("CallStateDetails")]); mPriv->readinessHelper->setIntrospectCompleted(FeatureCallState, true); } void CallChannel::onCallStateChanged(uint state, uint flags, const CallStateReason &stateReason, const QVariantMap &stateDetails) { if (mPriv->state == state && mPriv->flags == flags && mPriv->stateReason == stateReason && mPriv->stateDetails == stateDetails) { // nothing changed return; } uint oldState = mPriv->state; uint oldFlags = mPriv->flags; mPriv->state = state; mPriv->flags = flags; mPriv->stateReason = stateReason; mPriv->stateDetails = stateDetails; if (oldState != state) { emit callStateChanged((CallState) state); } if (oldFlags != flags) { emit callFlagsChanged((CallFlags) flags); } } void CallChannel::gotCallMembers(PendingOperation *op) { if (op->isError()) { warning().nospace() << "CallInterface::requestAllProperties() failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCallMembers, false, op->errorName(), op->errorMessage()); return; } debug() << "Got reply to CallInterface::requestAllProperties()"; PendingVariantMap *pvm = qobject_cast(op); Q_ASSERT(pvm); QVariantMap props = pvm->result(); HandleIdentifierMap ids = qdbus_cast(props[QLatin1String("MemberIdentifiers")]); CallMemberMap callMembers = qdbus_cast(props[QLatin1String("CallMembers")]); mPriv->callMembersChangedQueue.enqueue(Private::CallMembersChangedInfo::create( callMembers, ids, UIntList(), CallStateReason())); mPriv->processCallMembersChanged(); } void CallChannel::gotCallMembersContacts(PendingOperation *op) { PendingContacts *pc = qobject_cast(op); if (!pc->isValid()) { warning().nospace() << "Getting contacts failed with " << pc->errorName() << ":" << pc->errorMessage() << ", ignoring"; mPriv->currentCallMembersChangedInfo.clear(); mPriv->processCallMembersChanged(); return; } QHash removed; for (ContactSendingStateMap::const_iterator i = mPriv->currentCallMembersChangedInfo->updates.constBegin(); i != mPriv->currentCallMembersChangedInfo->updates.constEnd(); ++i) { mPriv->callMembers.insert(i.key(), i.value()); } foreach (const ContactPtr &contact, pc->contacts()) { mPriv->callMembersContacts.insert(contact->handle()[0], contact); } foreach (uint handle, mPriv->currentCallMembersChangedInfo->removed) { mPriv->callMembers.remove(handle); if (isReady(FeatureCallMembers) && mPriv->callMembersContacts.contains(handle)) { removed.insert(handle, mPriv->callMembersContacts[handle]); // make sure we don't have updates for removed contacts mPriv->currentCallMembersChangedInfo->updates.remove(handle); } mPriv->callMembersContacts.remove(handle); } foreach (uint handle, pc->invalidHandles()) { mPriv->callMembers.remove(handle); if (isReady(FeatureCallMembers) && mPriv->callMembersContacts.contains(handle)) { removed.insert(handle, mPriv->callMembersContacts[handle]); // make sure we don't have updates for invalid handles mPriv->currentCallMembersChangedInfo->updates.remove(handle); } mPriv->callMembersContacts.remove(handle); } if (isReady(FeatureCallMembers)) { QHash remoteMemberFlags; for (CallMemberMap::const_iterator i = mPriv->currentCallMembersChangedInfo->updates.constBegin(); i != mPriv->currentCallMembersChangedInfo->updates.constEnd(); ++i) { uint handle = i.key(); CallMemberFlags flags = (CallMemberFlags) i.value(); Q_ASSERT(mPriv->callMembersContacts.contains(handle)); remoteMemberFlags.insert(mPriv->callMembersContacts[handle], flags); mPriv->callMembers.insert(i.key(), i.value()); } if (!remoteMemberFlags.isEmpty()) { emit remoteMemberFlagsChanged(remoteMemberFlags, mPriv->currentCallMembersChangedInfo->reason); } if (!removed.isEmpty()) { emit remoteMembersRemoved(removed.values().toSet(), mPriv->currentCallMembersChangedInfo->reason); } } mPriv->currentCallMembersChangedInfo.clear(); mPriv->processCallMembersChanged(); } void CallChannel::onCallMembersChanged(const CallMemberMap &updates, const HandleIdentifierMap &identifiers, const UIntList &removed, const CallStateReason &reason) { if (updates.isEmpty() && removed.isEmpty()) { debug() << "Received Call::CallMembersChanged with 0 removals and updates, skipping it"; return; } debug() << "Received Call::CallMembersChanged with" << updates.size() << "updated and" << removed.size() << "removed"; mPriv->callMembersChangedQueue.enqueue( Private::CallMembersChangedInfo::create(updates, identifiers, removed, reason)); mPriv->processCallMembersChanged(); } void CallChannel::gotContents(PendingOperation *op) { if (op->isError()) { warning().nospace() << "CallInterface::requestPropertyContents() failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureContents, false, op->errorName(), op->errorMessage()); return; } debug() << "Got reply to CallInterface::requestPropertyContents()"; PendingVariant *pv = qobject_cast(op); Q_ASSERT(pv); ObjectPathList contentsPaths = qdbus_cast(pv->result()); if (contentsPaths.size() > 0) { foreach (const QDBusObjectPath &contentPath, contentsPaths) { CallContentPtr content = lookupContent(contentPath); if (!content) { addContent(contentPath); } } } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureContents, true); } } void CallChannel::onContentAdded(const QDBusObjectPath &contentPath) { debug() << "Received Call::ContentAdded for content" << contentPath.path(); if (lookupContent(contentPath)) { debug() << "Content already exists, ignoring"; return; } addContent(contentPath); } void CallChannel::onContentRemoved(const QDBusObjectPath &contentPath, const CallStateReason &reason) { debug() << "Received Call::ContentRemoved for content" << contentPath.path(); CallContentPtr content = lookupContent(contentPath); if (!content) { debug() << "Content does not exist, ignoring"; return; } bool incomplete = mPriv->incompleteContents.contains(content); if (incomplete) { mPriv->incompleteContents.removeOne(content); } else { mPriv->contents.removeOne(content); } if (isReady(FeatureContents) && !incomplete) { emit contentRemoved(content, reason); } // the content was added/removed before become ready if (!isReady(FeatureContents) && mPriv->contents.size() == 0 && mPriv->incompleteContents.size() == 0) { mPriv->readinessHelper->setIntrospectCompleted(FeatureContents, true); } } void CallChannel::onContentReady(PendingOperation *op) { PendingReady *pr = qobject_cast(op); CallContentPtr content = CallContentPtr::qObjectCast(pr->proxy()); if (op->isError()) { mPriv->incompleteContents.removeOne(content); if (!isReady(FeatureContents) && mPriv->incompleteContents.size() == 0) { // let's not fail because a content could not become ready mPriv->readinessHelper->setIntrospectCompleted(FeatureContents, true); } return; } // the content was removed before become ready if (!mPriv->incompleteContents.contains(content)) { if (!isReady(FeatureContents) && mPriv->incompleteContents.size() == 0) { mPriv->readinessHelper->setIntrospectCompleted(FeatureContents, true); } return; } mPriv->incompleteContents.removeOne(content); mPriv->contents.append(content); if (isReady(FeatureContents)) { emit contentAdded(content); } if (!isReady(FeatureContents) && mPriv->incompleteContents.size() == 0) { mPriv->readinessHelper->setIntrospectCompleted(FeatureContents, true); } } void CallChannel::gotLocalHoldState(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Call::Hold::GetHoldState() failed with " << reply.error().name() << ": " << reply.error().message(); debug() << "Ignoring error getting hold state and assuming we're not on hold"; onLocalHoldStateChanged(mPriv->localHoldState, mPriv->localHoldStateReason); watcher->deleteLater(); return; } debug() << "Got reply to Call::Hold::GetHoldState()"; onLocalHoldStateChanged(reply.argumentAt<0>(), reply.argumentAt<1>()); watcher->deleteLater(); } void CallChannel::onLocalHoldStateChanged(uint localHoldState, uint localHoldStateReason) { bool changed = false; if (mPriv->localHoldState != localHoldState || mPriv->localHoldStateReason != localHoldStateReason) { changed = true; } mPriv->localHoldState = localHoldState; mPriv->localHoldStateReason = localHoldStateReason; if (!isReady(FeatureLocalHoldState)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureLocalHoldState, true); } else { if (changed) { emit localHoldStateChanged((LocalHoldState) mPriv->localHoldState, (LocalHoldStateReason) mPriv->localHoldStateReason); } } } CallContentPtr CallChannel::addContent(const QDBusObjectPath &contentPath) { CallContentPtr content = CallContentPtr( new CallContent(CallChannelPtr(this), contentPath)); mPriv->incompleteContents.append(content); connect(content->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContentReady(Tp::PendingOperation*))); return content; } CallContentPtr CallChannel::lookupContent(const QDBusObjectPath &contentPath) const { foreach (const CallContentPtr &content, mPriv->contents) { if (content->objectPath() == contentPath.path()) { return content; } } foreach (const CallContentPtr &content, mPriv->incompleteContents) { if (content->objectPath() == contentPath.path()) { return content; } } return CallContentPtr(); } /** * \fn void CallChannel::callStateChanged(Tp::CallState state); * * This signal is emitted when the value of callState() changes. * * \param state The new state. */ /** * \fn void CallChannel::callFlagsChanged(Tp::CallFlags flags); * * This signal is emitted when the value of callFlags() changes. * * \param flags The new flags. */ /** * \fn void CallChannel::remoteMemberFlagsChanged(const QHash &remoteMemberFlags, const Tp::CallStateReason &reason); * * This signal is emitted when the flags of members of the call change, * or when new members are added in the call. * * \param remoteMemberFlags A maping of all the call members whose flags were * changed to their new flags, and of all the new members of the call to their initial flags. * \param reason The reason for this change. */ /** * \fn void CallChannel::remoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason); * * This signal is emitted when remote members are removed from the call. * * \param remoteMembers The members that were removed. * \param reason The reason for this removal. */ /** * \fn void CallChannel::contentAdded(const Tp::CallContentPtr &content); * * This signal is emitted when a media content is added to this channel. * * \param content The media content that was added. * \sa contents(), contentsForType() */ /** * \fn void CallChannel::contentRemoved(const Tp::CallContentPtr &content, const Tp::CallStateReason &reason); * * This signal is emitted when a media content is removed from this channel. * * \param content The media content that was removed. * \param reason The reason for this removal. * \sa contents(), contentsForType() */ /** * \fn void CallChannel::localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason); * * This signal is emitted when the local hold state of this channel changes. * * \param state The new local hold state of this channel. * \param reason The reason why the change occurred. * \sa localHoldState(), localHoldStateReason() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/future-channel-dispatcher.xml0000644000175100017520000000032212530423576025751 0ustar00kaffeinekaffeine00000000000000 Channel Dispatcher extensions from the future telepathy-qt-0.9.6.1/TelepathyQt/generic-capability-filter.dox0000644000175100017520000000274112530423576025724 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::GenericCapabilityFilter * \ingroup utils * \headerfile TelepathyQt/generic-capability-filter.h * * \brief The GenericCapabilityFilter class provides a generic filter object to * be used to filter objects by capabilities. * * The objects used in conjunction with this filter must implement a method * called capabilities() returning a CapabilitiesBase (or a subclass of it) * instance. * Specialized classes such as AccountCapabilityFilter are also provided and * should be used where appropriate. */ telepathy-qt-0.9.6.1/TelepathyQt/pending-connection.h0000644000175100017520000000403012530423576024115 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_connection_h_HEADER_GUARD_ #define _TelepathyQt_pending_connection_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include class QDBusPendingCallWatcher; namespace Tp { class ConnectionManager; class TP_QT_EXPORT PendingConnection : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingConnection); public: ~PendingConnection(); ConnectionManagerPtr manager() const; ConnectionPtr connection() const; private Q_SLOTS: TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onConnectionBuilt(Tp::PendingOperation *op); private: friend class ConnectionManagerLowlevel; TP_QT_NO_EXPORT PendingConnection(const ConnectionManagerPtr &manager, const QString &protocol, const QVariantMap ¶meters); TP_QT_NO_EXPORT PendingConnection(const QString &error, const QString &errorMessage); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/not-filter.dox0000644000175100017520000000233412530423576022767 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::NotFilter * \ingroup utils * \headerfile TelepathyQt/not-filter.h * * \brief The NotFilter class provides a generic filter object to be used * in conjunction of other filters. * * The NotFilter will match if its given filter does not match its criteria. */ telepathy-qt-0.9.6.1/TelepathyQt/WeakPtr0000644000175100017520000000034612530423576021471 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_WeakPtr_HEADER_GUARD_ #define _TelepathyQt_WeakPtr_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallStreamInterface0000644000175100017520000000037712530423576023770 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallStreamInterface_HEADER_GUARD_ #define _TelepathyQt_CallStreamInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/channel-class-spec.h0000644000175100017520000002651612530423576024014 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_class_spec_h_HEADER_GUARD_ #define _TelepathyQt_channel_class_spec_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include namespace Tp { class TP_QT_EXPORT ChannelClassSpec { public: ChannelClassSpec(); ChannelClassSpec(const ChannelClass &cc); ChannelClassSpec(const QVariantMap &props); ChannelClassSpec(const QString &channelType, HandleType targetHandleType, const QVariantMap &otherProperties = QVariantMap()); ChannelClassSpec(const QString &channelType, HandleType targetHandleType, bool requested, const QVariantMap &otherProperties = QVariantMap()); ChannelClassSpec(const ChannelClassSpec &other, const QVariantMap &additionalProperties = QVariantMap()); ~ChannelClassSpec(); bool isValid() const; ChannelClassSpec &operator=(const ChannelClassSpec &other); bool operator==(const ChannelClassSpec &other) const { return this->allProperties() == other.allProperties(); } bool isSubsetOf(const ChannelClassSpec &other) const; bool matches(const QVariantMap &immutableProperties) const; QString channelType() const { return qdbus_cast( property(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))); } void setChannelType(const QString &type) { setProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), QVariant::fromValue(type)); } HandleType targetHandleType() const { return (HandleType) qdbus_cast( property( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"))); } void setTargetHandleType(HandleType type) { setProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), QVariant::fromValue((uint) type)); } bool hasRequested() const { return hasProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")); } bool isRequested() const { return qdbus_cast( property(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"))); } void setRequested(bool requested) { setProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"), QVariant::fromValue(requested)); } void unsetRequested() { unsetProperty(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested")); } bool hasCallInitialAudioFlag() const { return qdbus_cast( property(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"))); } void setCallInitialAudioFlag() { setProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), QVariant::fromValue(true)); } void unsetCallInitialAudioFlag() { unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio")); } bool hasCallInitialVideoFlag() const { return qdbus_cast( property(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"))); } void setCallInitialVideoFlag() { setProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), QVariant::fromValue(true)); } void unsetCallInitialVideoFlag() { unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo")); } TP_QT_DEPRECATED bool hasStreamedMediaInitialAudioFlag() const { return qdbus_cast( property(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"))); } TP_QT_DEPRECATED void setStreamedMediaInitialAudioFlag() { setProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"), QVariant::fromValue(true)); } TP_QT_DEPRECATED void unsetStreamedMediaInitialAudioFlag() { unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")); } TP_QT_DEPRECATED bool hasStreamedMediaInitialVideoFlag() const { return qdbus_cast( property(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"))); } TP_QT_DEPRECATED void setStreamedMediaInitialVideoFlag() { setProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"), QVariant::fromValue(true)); } TP_QT_DEPRECATED void unsetStreamedMediaInitialVideoFlag() { unsetProperty(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")); } bool hasProperty(const QString &qualifiedName) const; QVariant property(const QString &qualifiedName) const; void setProperty(const QString &qualifiedName, const QVariant &value); void unsetProperty(const QString &qualifiedName); QVariantMap allProperties() const; ChannelClass bareClass() const; static ChannelClassSpec textChat(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec textChatroom(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec unnamedTextChat(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec mediaCall(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec audioCall(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec videoCall(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec videoCallWithAudio(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec streamedMediaCall(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec streamedMediaAudioCall(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec streamedMediaVideoCall(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec streamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaCall(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaAudioCall(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaVideoCall(const QVariantMap &additionalProperties = QVariantMap()); TP_QT_DEPRECATED static ChannelClassSpec unnamedStreamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec serverAuthentication(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec roomList(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec outgoingFileTransfer(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec incomingFileTransfer(const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec outgoingStreamTube(const QString &service = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec incomingStreamTube(const QString &service = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec outgoingRoomStreamTube(const QString &service = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec incomingRoomStreamTube(const QString &service = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec outgoingDBusTube(const QString &serviceName = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec incomingDBusTube(const QString &serviceName = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec outgoingRoomDBusTube(const QString &serviceName = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec incomingRoomDBusTube(const QString &serviceName = QString(), const QVariantMap &additionalProperties = QVariantMap()); static ChannelClassSpec contactSearch(const QVariantMap &additionalProperties = QVariantMap()); private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT ChannelClassSpecList : public QList { public: ChannelClassSpecList() { } ChannelClassSpecList(const ChannelClassSpec &spec) { append(spec); } ChannelClassSpecList(const QList &other) : QList(other) { } ChannelClassSpecList(const ChannelClassList &classes) { // Why doesn't Qt have range constructors like STL... stupid, so stupid. Q_FOREACH (const ChannelClass &cc, classes) { append(cc); } } ChannelClassList bareClasses() const { ChannelClassList list; Q_FOREACH (const ChannelClassSpec &spec, *this) { list.append(spec.bareClass()); } return list; } }; inline uint qHash(const ChannelClassSpec &spec) { uint ret = 0; QVariantMap::const_iterator it = spec.allProperties().constBegin(); QVariantMap::const_iterator end = spec.allProperties().constEnd(); int i = spec.allProperties().size() + 1; for (; it != end; ++it) { // all D-Bus types should be convertible to QString QPair p(it.key(), it.value().toString()); int h = qHash(p); ret ^= ((h << (2 << i)) | (h >> (2 >> i))); i--; } return ret; } inline uint qHash(const QSet &specSet) { int ret = 0; Q_FOREACH (const ChannelClassSpec &spec, specSet) { int h = qHash(spec); ret ^= h; } return ret; } inline uint qHash(const ChannelClassSpecList &specList) { // Make it unique by converting to QSet QSet uniqueSet = specList.toSet(); return qHash(uniqueSet); } } // Tp Q_DECLARE_METATYPE(Tp::ChannelClassSpec); Q_DECLARE_METATYPE(Tp::ChannelClassSpecList); #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceMessagesInterface0000644000175100017520000000042712530423576026616 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceMessagesInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceMessagesInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/avatar.h0000644000175100017520000000451712530423576021624 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @copyright Copyright (C) 2010-2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_avatar_h_HEADER_GUARD_ #define _TelepathyQt_avatar_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include namespace Tp { struct TP_QT_EXPORT AvatarData { public: inline AvatarData(const QString &fileName, const QString &mimeType) : fileName(fileName), mimeType(mimeType) {} inline AvatarData() {} QString fileName; QString mimeType; }; class TP_QT_EXPORT AvatarSpec { public: AvatarSpec(); AvatarSpec(const QStringList &supportedMimeTypes, uint minHeight, uint maxHeight, uint recommendedHeight, uint minWidth, uint maxWidth, uint recommendedWidth, uint maxBytes); AvatarSpec(const AvatarSpec &other); ~AvatarSpec(); bool isValid() const { return mPriv.constData() != 0; } AvatarSpec &operator=(const AvatarSpec &other); QStringList supportedMimeTypes() const; uint minimumHeight() const; uint maximumHeight() const; uint recommendedHeight() const; uint minimumWidth() const; uint maximumWidth() const; uint recommendedWidth() const; uint maximumBytes() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::AvatarData); Q_DECLARE_METATYPE(Tp::AvatarSpec); #endif telepathy-qt-0.9.6.1/TelepathyQt/account-manager.h0000644000175100017520000001315212530423576023405 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_manager_h_HEADER_GUARD_ #define _TelepathyQt_account_manager_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class PendingAccount; class TP_QT_EXPORT AccountManager : public StatelessDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(AccountManager) public: static const Feature FeatureCore; static AccountManagerPtr create(const QDBusConnection &bus); static AccountManagerPtr create( const AccountFactoryConstPtr &accountFactory = AccountFactory::create(QDBusConnection::sessionBus(), Account::FeatureCore), const ConnectionFactoryConstPtr &connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); static AccountManagerPtr create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); virtual ~AccountManager(); AccountFactoryConstPtr accountFactory() const; ConnectionFactoryConstPtr connectionFactory() const; ChannelFactoryConstPtr channelFactory() const; ContactFactoryConstPtr contactFactory() const; QList allAccounts() const; AccountSetPtr validAccounts() const; AccountSetPtr invalidAccounts() const; AccountSetPtr enabledAccounts() const; AccountSetPtr disabledAccounts() const; AccountSetPtr onlineAccounts() const; AccountSetPtr offlineAccounts() const; AccountSetPtr textChatAccounts() const; AccountSetPtr textChatroomAccounts() const; AccountSetPtr audioCallAccounts() const; AccountSetPtr videoCallAccounts() const; TP_QT_DEPRECATED AccountSetPtr streamedMediaCallAccounts() const; TP_QT_DEPRECATED AccountSetPtr streamedMediaAudioCallAccounts() const; TP_QT_DEPRECATED AccountSetPtr streamedMediaVideoCallAccounts() const; TP_QT_DEPRECATED AccountSetPtr streamedMediaVideoCallWithAudioAccounts() const; AccountSetPtr fileTransferAccounts() const; AccountSetPtr accountsByProtocol(const QString &protocolName) const; AccountSetPtr filterAccounts(const AccountFilterConstPtr &filter) const; AccountSetPtr filterAccounts(const QVariantMap &filter) const; AccountPtr accountForObjectPath(const QString &path) const; TP_QT_DEPRECATED AccountPtr accountForPath(const QString &path) const; QList accountsForObjectPaths(const QStringList &paths) const; TP_QT_DEPRECATED QList accountsForPaths(const QStringList &paths) const; QStringList supportedAccountProperties() const; PendingAccount *createAccount(const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap ¶meters, const QVariantMap &properties = QVariantMap()); Q_SIGNALS: void newAccount(const Tp::AccountPtr &account); protected: AccountManager(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature); Client::AccountManagerInterface *baseInterface() const; private Q_SLOTS: TP_QT_NO_EXPORT void introspectMain(); TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onAccountReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onAccountValidityChanged(const QDBusObjectPath &objectPath, bool valid); TP_QT_NO_EXPORT void onAccountRemoved(const QDBusObjectPath &objectPath); private: friend class PendingAccount; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ContactCapabilities0000644000175100017520000000041012530423576024011 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ContactCapabilities_HEADER_GUARD_ #define _TelepathyQt_ContactCapabilities_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ProtocolInterfaceAvatarsInterface0000644000175100017520000000044212530423576026676 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolInterfaceAvatarsInterface_HEADER_GUARD_ #define _TelepathyQt_ProtocolInterfaceAvatarsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/tls-certificate.h0000644000175100017520000000212312530423576023417 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_tls_certificate_h_HEADER_GUARD_ #define _TelepathyQt_tls_certificate_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #endif telepathy-qt-0.9.6.1/TelepathyQt/outgoing-stream-tube-channel.h0000644000175100017520000000613712530423576026035 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_outgoing_stream_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_outgoing_stream_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include class QHostAddress; class QTcpServer; class QLocalServer; namespace Tp { class TP_QT_EXPORT OutgoingStreamTubeChannel : public StreamTubeChannel { Q_OBJECT Q_DISABLE_COPY(OutgoingStreamTubeChannel) public: static const Feature FeatureCore; static OutgoingStreamTubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~OutgoingStreamTubeChannel(); PendingOperation *offerTcpSocket(const QHostAddress &address, quint16 port, const QVariantMap ¶meters = QVariantMap()); PendingOperation *offerTcpSocket(const QTcpServer *server, const QVariantMap ¶meters = QVariantMap()); PendingOperation *offerUnixSocket(const QString &socketAddress, const QVariantMap ¶meters = QVariantMap(), bool requireCredentials = false); PendingOperation *offerUnixSocket(const QLocalServer *server, const QVariantMap ¶meters = QVariantMap(), bool requireCredentials = false); QHash contactsForConnections() const; QHash, uint> connectionsForSourceAddresses() const; QHash connectionsForCredentials() const; protected: OutgoingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = OutgoingStreamTubeChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void onNewRemoteConnection(uint contactId, const QDBusVariant ¶meter, uint connectionId); TP_QT_NO_EXPORT void onContactsRetrieved(const QUuid &uuid, const QList &contacts); TP_QT_NO_EXPORT void onConnectionClosed(uint connectionId, const QString &errorName, const QString &errorMessage); private: struct Private; friend struct PendingOpenTube; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/account.cpp0000644000175100017520000061757112530423576022347 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2012 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/account.moc.hpp" #include "TelepathyQt/_gen/cli-account.moc.hpp" #include "TelepathyQt/_gen/cli-account-body.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/connection-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { namespace { struct PresenceStatusInfo { QString name; Tp::SimpleStatusSpec spec; }; Tp::ConnectionPresenceType presenceTypeForStatus(const QString &status, bool &maySetOnSelf) { static PresenceStatusInfo statuses[] = { { QLatin1String("available"), { Tp::ConnectionPresenceTypeAvailable, true, true } }, { QLatin1String("chat"), { Tp::ConnectionPresenceTypeAvailable, true, true } }, { QLatin1String("chatty"), { Tp::ConnectionPresenceTypeAvailable, true, true } }, { QLatin1String("away"), { Tp::ConnectionPresenceTypeAway, true, true } }, { QLatin1String("brb"), { Tp::ConnectionPresenceTypeAway, true, true } }, { QLatin1String("out-to-lunch"), { Tp::ConnectionPresenceTypeAway, true, true } }, { QLatin1String("xa"), { Tp::ConnectionPresenceTypeExtendedAway, true, true } }, { QLatin1String("hidden"), { Tp::ConnectionPresenceTypeHidden, true, true } }, { QLatin1String("invisible"), { Tp::ConnectionPresenceTypeHidden, true, true } }, { QLatin1String("offline"), { Tp::ConnectionPresenceTypeOffline, true, false } }, { QLatin1String("unknown"), { Tp::ConnectionPresenceTypeUnknown, false, false } }, { QLatin1String("error"), { Tp::ConnectionPresenceTypeError, false, false } } }; for (uint i = 0; i < sizeof(statuses) / sizeof(PresenceStatusInfo); ++i) { if (status == statuses[i].name) { maySetOnSelf = statuses[i].spec.maySetOnSelf; return (Tp::ConnectionPresenceType) statuses[i].spec.type; } } // fallback to type away if we don't know status maySetOnSelf = true; return Tp::ConnectionPresenceTypeAway; } Tp::PresenceSpec presenceSpecForStatus(const QString &status, bool canHaveStatusMessage) { Tp::SimpleStatusSpec spec; spec.type = presenceTypeForStatus(status, spec.maySetOnSelf); spec.canHaveMessage = canHaveStatusMessage; return Tp::PresenceSpec(status, spec); } QVariantMap textChatCommonRequest() { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); return request; } QVariantMap textChatRequest(const QString &contactIdentifier) { QVariantMap request = textChatCommonRequest(); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap textChatRequest(const Tp::ContactPtr &contact) { QVariantMap request = textChatCommonRequest(); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap textChatroomRequest(const QString &roomName) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeRoom); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), roomName); return request; } QVariantMap callCommonRequest(bool withAudio, const QString &audioName, bool withVideo, const QString &videoName) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); if (withAudio) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), true); if (!audioName.isEmpty()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName"), audioName); } } if (withVideo) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), true); if (!videoName.isEmpty()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName"), videoName); } } return request; } QVariantMap audioCallRequest(const QString &contactIdentifier, const QString &contentName) { QVariantMap request = callCommonRequest(true, contentName, false, QString()); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap audioCallRequest(const Tp::ContactPtr &contact, const QString &contentName) { QVariantMap request = callCommonRequest(true, contentName, false, QString()); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap videoCallRequest(const QString &contactIdentifier, const QString &contentName) { QVariantMap request = callCommonRequest(false, QString(), true, contentName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap videoCallRequest(const Tp::ContactPtr &contact, const QString &contentName) { QVariantMap request = callCommonRequest(false, QString(), true, contentName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap audioVideoCallRequest(const QString &contactIdentifier, const QString &audioName, const QString &videoName) { QVariantMap request = callCommonRequest(true, audioName, true, videoName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap audioVideoCallRequest(const Tp::ContactPtr &contact, const QString &audioName, const QString &videoName) { QVariantMap request = callCommonRequest(true, audioName, true, videoName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap streamedMediaCallCommonRequest() { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); return request; } QVariantMap streamedMediaCallRequest(const QString &contactIdentifier) { QVariantMap request = streamedMediaCallCommonRequest(); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap streamedMediaCallRequest(const Tp::ContactPtr &contact) { QVariantMap request = streamedMediaCallCommonRequest(); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap streamedMediaAudioCallRequest(const QString &contactIdentifier) { QVariantMap request = streamedMediaCallRequest(contactIdentifier); request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"), true); return request; } QVariantMap streamedMediaAudioCallRequest(const Tp::ContactPtr &contact) { QVariantMap request = streamedMediaCallRequest(contact); request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"), true); return request; } QVariantMap streamedMediaVideoCallRequest(const QString &contactIdentifier, bool withAudio) { QVariantMap request = streamedMediaCallRequest(contactIdentifier); request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"), true); if (withAudio) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"), true); } return request; } QVariantMap streamedMediaVideoCallRequest(const Tp::ContactPtr &contact, bool withAudio) { QVariantMap request = streamedMediaCallRequest(contact); request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"), true); if (withAudio) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"), true); } return request; } QVariantMap fileTransferCommonRequest(const Tp::FileTransferChannelCreationProperties &properties) { if (!properties.isValid()) { warning() << "Invalid file transfer creation properties"; return QVariantMap(); } QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Filename"), properties.suggestedFileName()); request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentType"), properties.contentType()); request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Size"), properties.size()); if (properties.hasContentHash()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentHashType"), (uint) properties.contentHashType()); request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentHash"), properties.contentHash()); } if (properties.hasDescription()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Description"), properties.description()); } if (properties.hasLastModificationTime()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Date"), (qulonglong) properties.lastModificationTime().toTime_t()); } if (properties.hasUri()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".URI"), properties.uri()); } return request; } QVariantMap fileTransferRequest(const QString &contactIdentifier, const Tp::FileTransferChannelCreationProperties &properties) { QVariantMap request = fileTransferCommonRequest(properties); if (!request.isEmpty()) { request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); } return request; } QVariantMap fileTransferRequest(const Tp::ContactPtr &contact, const Tp::FileTransferChannelCreationProperties &properties) { QVariantMap request = fileTransferCommonRequest(properties); if (!request.isEmpty()) { request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); } return request; } QVariantMap streamTubeCommonRequest(const QString &service) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"), service); return request; } QVariantMap streamTubeRequest(const QString &contactIdentifier, const QString &service) { QVariantMap request = streamTubeCommonRequest(service); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap streamTubeRequest(const Tp::ContactPtr &contact, const QString &service) { QVariantMap request = streamTubeCommonRequest(service); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap dbusTubeCommonRequest(const QString &serviceName) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeContact); request.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); return request; } QVariantMap dbusTubeRequest(const QString &contactIdentifier, const QString &serviceName) { QVariantMap request = dbusTubeCommonRequest(serviceName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), contactIdentifier); return request; } QVariantMap dbusTubeRequest(const Tp::ContactPtr &contact, const QString &serviceName) { QVariantMap request = dbusTubeCommonRequest(serviceName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), contact ? contact->handle().at(0) : (uint) 0); return request; } QVariantMap dbusTubeRoomRequest(const QString &roomName, const QString &serviceName) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeRoom); request.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), roomName); return request; } QVariantMap conferenceCommonRequest(const QString &channelType, Tp::HandleType targetHandleType, const QList &channels) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), channelType); if (targetHandleType != Tp::HandleTypeNone) { request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) targetHandleType); } Tp::ObjectPathList objectPaths; foreach (const Tp::ChannelPtr &channel, channels) { objectPaths << QDBusObjectPath(channel->objectPath()); } request.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels"), qVariantFromValue(objectPaths)); return request; } QVariantMap conferenceRequest(const QString &channelType, Tp::HandleType targetHandleType, const QList &channels, const QStringList &initialInviteeContactsIdentifiers) { QVariantMap request = conferenceCommonRequest(channelType, targetHandleType, channels); if (!initialInviteeContactsIdentifiers.isEmpty()) { request.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeIDs"), initialInviteeContactsIdentifiers); } return request; } QVariantMap conferenceRequest(const QString &channelType, Tp::HandleType targetHandleType, const QList &channels, const QList &initialInviteeContacts) { QVariantMap request = conferenceCommonRequest(channelType, targetHandleType, channels); if (!initialInviteeContacts.isEmpty()) { Tp::UIntList handles; foreach (const Tp::ContactPtr &contact, initialInviteeContacts) { if (!contact) { continue; } handles << contact->handle()[0]; } if (!handles.isEmpty()) { request.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles"), qVariantFromValue(handles)); } } return request; } QVariantMap conferenceTextChatRequest(const QList &channels, const QStringList &initialInviteeContactsIdentifiers) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT, Tp::HandleTypeNone, channels, initialInviteeContactsIdentifiers); return request; } QVariantMap conferenceTextChatRequest(const QList &channels, const QList &initialInviteeContacts) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT, Tp::HandleTypeNone, channels, initialInviteeContacts); return request; } QVariantMap conferenceTextChatroomRequest(const QString &roomName, const QList &channels, const QStringList &initialInviteeContactsIdentifiers) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT, Tp::HandleTypeRoom, channels, initialInviteeContactsIdentifiers); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), roomName); return request; } QVariantMap conferenceTextChatroomRequest(const QString &roomName, const QList &channels, const QList &initialInviteeContacts) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT, Tp::HandleTypeRoom, channels, initialInviteeContacts); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), roomName); return request; } QVariantMap conferenceStreamedMediaCallRequest(const QList &channels, const QStringList &initialInviteeContactsIdentifiers) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, Tp::HandleTypeNone, channels, initialInviteeContactsIdentifiers); return request; } QVariantMap conferenceStreamedMediaCallRequest(const QList &channels, const QList &initialInviteeContacts) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, Tp::HandleTypeNone, channels, initialInviteeContacts); return request; } QVariantMap conferenceCallRequest(const QList &channels, const QStringList &initialInviteeContactsIdentifiers) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_CALL, Tp::HandleTypeNone, channels, initialInviteeContactsIdentifiers); return request; } QVariantMap conferenceCallRequest(const QList &channels, const QList &initialInviteeContacts) { QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_CALL, Tp::HandleTypeNone, channels, initialInviteeContacts); return request; } QVariantMap contactSearchRequest(const ConnectionCapabilities &capabilities, const QString &server, uint limit) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); if (capabilities.contactSearchesWithSpecificServer()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Server"), server); } else if (!server.isEmpty()) { warning() << "Ignoring Server parameter for contact search, since the protocol does not support it."; } if (capabilities.contactSearchesWithLimit()) { request.insert(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Limit"), limit); } else if (limit > 0) { warning() << "Ignoring Limit parameter for contact search, since the protocol does not support it."; } return request; } } // anonymous namespace struct TP_QT_NO_EXPORT Account::Private { Private(Account *parent, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory); ~Private(); void init(); static void introspectMain(Private *self); static void introspectAvatar(Private *self); static void introspectProtocolInfo(Private *self); static void introspectCapabilities(Private *self); void updateProperties(const QVariantMap &props); void retrieveAvatar(); bool processConnQueue(); bool checkCapabilitiesChanged(bool profileChanged); QString connectionObjectPath() const; // Public object Account *parent; // Factories ConnectionFactoryConstPtr connFactory; ChannelFactoryConstPtr chanFactory; ContactFactoryConstPtr contactFactory; // Instance of generated interface class Client::AccountInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; // Introspection QVariantMap parameters; bool valid; bool enabled; bool connectsAutomatically; bool hasBeenOnline; bool changingPresence; QString cmName; QString protocolName; QString serviceName; ProfilePtr profile; QString displayName; QString nickname; QString iconName; QQueue connObjPathQueue; ConnectionPtr connection; bool mayFinishCore, coreFinished; QString normalizedName; Avatar avatar; ConnectionManagerPtr cm; ConnectionStatus connectionStatus; ConnectionStatusReason connectionStatusReason; QString connectionError; Connection::ErrorDetails connectionErrorDetails; Presence automaticPresence; Presence currentPresence; Presence requestedPresence; bool usingConnectionCaps; ConnectionCapabilities customCaps; // The contexts should never be removed from the map, to guarantee O(1) CD introspections per bus struct DispatcherContext; static QHash > dispatcherContexts; QSharedPointer dispatcherContext; }; struct Account::Private::DispatcherContext { DispatcherContext(const QDBusConnection &bus) : iface(new Client::ChannelDispatcherInterface(bus, TP_QT_CHANNEL_DISPATCHER_BUS_NAME, TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH)), introspected(false), supportsHints(false) { } ~DispatcherContext() { delete iface; } Client::ChannelDispatcherInterface *iface; bool introspected, supportsHints; QPointer introspectOp; private: DispatcherContext(const DispatcherContext &); void operator=(const DispatcherContext &); }; Account::Private::Private(Account *parent, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) : parent(parent), connFactory(connFactory), chanFactory(chanFactory), contactFactory(contactFactory), baseInterface(new Client::AccountInterface(parent)), properties(parent->interface()), readinessHelper(parent->readinessHelper()), valid(false), enabled(false), connectsAutomatically(false), hasBeenOnline(false), changingPresence(false), mayFinishCore(false), coreFinished(false), connectionStatus(ConnectionStatusDisconnected), connectionStatusReason(ConnectionStatusReasonNoneSpecified), usingConnectionCaps(false), dispatcherContext(dispatcherContexts.value(parent->dbusConnection().name())) { // FIXME: QRegExp probably isn't the most efficient possible way to parse // this :-) QRegExp rx(QLatin1String("^") + TP_QT_ACCOUNT_OBJECT_PATH_BASE + QLatin1String("/([_A-Za-z][_A-Za-z0-9]*)" // cap(1) is the CM "/([_A-Za-z][_A-Za-z0-9]*)" // cap(2) is the protocol "/([_A-Za-z][_A-Za-z0-9]*)" // account-specific part )); if (rx.exactMatch(parent->objectPath())) { cmName = rx.cap(1); protocolName = rx.cap(2).replace(QLatin1Char('_'), QLatin1Char('-')); } else { warning() << "Account object path is not spec-compliant, " "trying again with a different account-specific part check"; rx = QRegExp(QLatin1String("^") + TP_QT_ACCOUNT_OBJECT_PATH_BASE + QLatin1String("/([_A-Za-z][_A-Za-z0-9]*)" // cap(1) is the CM "/([_A-Za-z][_A-Za-z0-9]*)" // cap(2) is the protocol "/([_A-Za-z0-9]*)" // account-specific part )); if (rx.exactMatch(parent->objectPath())) { cmName = rx.cap(1); protocolName = rx.cap(2).replace(QLatin1Char('_'), QLatin1Char('-')); } else { warning() << "Not a valid Account object path:" << parent->objectPath(); } } ReadinessHelper::Introspectables introspectables; // As Account does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; ReadinessHelper::Introspectable introspectableAvatar( QSet() << 0, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectAvatar, this); introspectables[FeatureAvatar] = introspectableAvatar; ReadinessHelper::Introspectable introspectableProtocolInfo( QSet() << 0, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectProtocolInfo, this); introspectables[FeatureProtocolInfo] = introspectableProtocolInfo; ReadinessHelper::Introspectable introspectableCapabilities( QSet() << 0, // makesSenseForStatuses Features() << FeatureCore << FeatureProtocolInfo << FeatureProfile, // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectCapabilities, this); introspectables[FeatureCapabilities] = introspectableCapabilities; readinessHelper->addIntrospectables(introspectables); if (connFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the conn factory is not the proxy connection for" << parent->objectPath(); } if (chanFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection for" << parent->objectPath(); } if (!dispatcherContext) { dispatcherContext = QSharedPointer(new DispatcherContext(parent->dbusConnection())); dispatcherContexts.insert(parent->dbusConnection().name(), dispatcherContext); } init(); } Account::Private::~Private() { } bool Account::Private::checkCapabilitiesChanged(bool profileChanged) { /* when the capabilities changed: * * - We were using the connection caps and now we don't have connection or * the connection we have is not connected (changed to CM caps) * - We were using the CM caps and now we have a connected connection * (changed to new connection caps) */ bool changed = false; if (usingConnectionCaps && (parent->connection().isNull() || connection->status() != ConnectionStatusConnected)) { usingConnectionCaps = false; changed = true; } else if (!usingConnectionCaps && !parent->connection().isNull() && connection->status() == ConnectionStatusConnected) { usingConnectionCaps = true; changed = true; } else if (!usingConnectionCaps && profileChanged) { changed = true; } if (changed && parent->isReady(FeatureCapabilities)) { emit parent->capabilitiesChanged(parent->capabilities()); } return changed; } QString Account::Private::connectionObjectPath() const { return !connection.isNull() ? connection->objectPath() : QString(); } QHash > Account::Private::dispatcherContexts; /** * \class Account * \ingroup clientaccount * \headerfile TelepathyQt/account.h * * \brief The Account class represents a Telepathy account. * * The remote object accessor functions on this object (isValidAccount(), * isEnabled(), and so on) don't make any D-Bus calls; instead, they return/use * values cached from a previous introspection run. The introspection process * populates their values in the most efficient way possible based on what the * service implements. * * To avoid unnecessary D-Bus traffic, some accessors only return valid * information after specific features have been enabled. * For instance, to retrieve the account protocol information, it is necessary to * enable the feature Account::FeatureProtocolInfo. * See the individual methods descriptions for more details. * * Account features can be enabled by constructing an AccountFactory and enabling * the desired features, and passing it to AccountManager or ClientRegistrar * when creating them as appropriate. However, if a particular * feature is only ever used in a specific circumstance, such as an user opening * some settings dialog separate from the general view of the application, * features can be later enabled as needed by calling becomeReady() with the additional * features, and waiting for the resulting PendingOperation to finish. * * As an addition to accessors, signals are emitted to indicate that properties have * changed, for example displayNameChanged(), iconNameChanged(), etc. * * Convenience methods to create channels using the channel dispatcher such as * ensureTextChat(), createFileTransfer() are also provided. * * If the account is deleted from the AccountManager, this object * will not be deleted automatically; however, it will emit invalidated() * with error code #TP_QT_ERROR_OBJECT_REMOVED and will cease to * be useful. * * \section account_usage_sec Usage * * \subsection account_create_sec Creating an account object * * The easiest way to create account objects is through AccountManager. One can * just use the AccountManager convenience methods such as * AccountManager::validAccounts() to get a list of account objects representing * valid accounts. * * If you already know the object path, you can just call create(). * For example: * * \code AccountPtr acc = Account::create(busName, objectPath); \endcode * * An AccountPtr object is returned, which will automatically keep * track of object lifetime. * * You can also provide a D-Bus connection as a QDBusConnection: * * \code * * AccountPtr acc = Account::create(QDBusConnection::sessionBus(), * busName, objectPath); * * \endcode * * \subsection account_ready_sec Making account ready to use * * An Account object needs to become ready before usage, meaning that the * introspection process finished and the object accessors can be used. * * To make the object ready, use becomeReady() and wait for the * PendingOperation::finished() signal to be emitted. * * \code * * class MyClass : public QObject * { * QOBJECT * * public: * MyClass(QObject *parent = 0); * ~MyClass() { } * * private Q_SLOTS: * void onAccountReady(Tp::PendingOperation*); * * private: * AccountPtr acc; * }; * * MyClass::MyClass(const QString &busName, const QString &objectPath, * QObject *parent) * : QObject(parent) * acc(Account::create(busName, objectPath)) * { * connect(acc->becomeReady(), * SIGNAL(finished(Tp::PendingOperation*)), * SLOT(onAccountReady(Tp::PendingOperation*))); * } * * void MyClass::onAccountReady(Tp::PendingOperation *op) * { * if (op->isError()) { * qWarning() << "Account cannot become ready:" << * op->errorName() << "-" << op->errorMessage(); * return; * } * * // Account is now ready * qDebug() << "Display name:" << acc->displayName(); * } * * \endcode * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the Account * object usable. * * Note that this feature must be enabled in order to use most Account methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature Account::FeatureCore = Feature(QLatin1String(Account::staticMetaObject.className()), 0, true); /** * Feature used in order to access account avatar info. * * See avatar specific methods' documentation for more details. * * \sa avatar(), avatarChanged() */ const Feature Account::FeatureAvatar = Feature(QLatin1String(Account::staticMetaObject.className()), 1); /** * Feature used in order to access account protocol info. * * See protocol info specific methods' documentation for more details. * * \sa protocolInfo() */ const Feature Account::FeatureProtocolInfo = Feature(QLatin1String(Account::staticMetaObject.className()), 2); /** * Feature used in order to access account capabilities. * * Enabling this feature will also enable FeatureProtocolInfo and FeatureProfile. * * See capabilities specific methods' documentation for more details. * * \sa capabilities(), capabilitiesChanged() */ const Feature Account::FeatureCapabilities = Feature(QLatin1String(Account::staticMetaObject.className()), 3); /** * Feature used in order to access account profile info. * * See profile specific methods' documentation for more details. * * \sa profile(), profileChanged() */ const Feature Account::FeatureProfile = FeatureProtocolInfo; // FeatureProfile is the same as FeatureProtocolInfo for now, as it only needs // the protocol info, cm name and protocol name to build a fake profile. Make it // a full-featured feature if needed later. /** * Create a new Account object using QDBusConnection::sessionBus() and the given factories. * * A warning is printed if the factories are not for QDBusConnection::sessionBus(). * * \param busName The account well-known bus name (sometimes called a "service * name"). This is usually the same as the account manager * bus name #TP_QT_ACCOUNT_MANAGER_BUS_NAME. * \param objectPath The account object path. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return An AccountPtr object pointing to the newly created Account object. */ AccountPtr Account::create(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return AccountPtr(new Account(QDBusConnection::sessionBus(), busName, objectPath, connectionFactory, channelFactory, contactFactory, Account::FeatureCore)); } /** * Create a new Account object using the given \a bus and the given factories. * * A warning is printed if the factories are not for \a bus. * * \param bus QDBusConnection to use. * \param busName The account well-known bus name (sometimes called a "service * name"). This is usually the same as the account manager * bus name #TP_QT_ACCOUNT_MANAGER_BUS_NAME. * \param objectPath The account object path. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return An AccountPtr object pointing to the newly created Account object. */ AccountPtr Account::create(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return AccountPtr(new Account(bus, busName, objectPath, connectionFactory, channelFactory, contactFactory, Account::FeatureCore)); } /** * Construct a new Account object using the given \a bus and the given factories. * * A warning is printed if the factories are not for \a bus. * * \param bus QDBusConnection to use. * \param busName The account well-known bus name (sometimes called a "service * name"). This is usually the same as the account manager * bus name #TP_QT_ACCOUNT_MANAGER_BUS_NAME. * \param objectPath The account object path. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \param coreFeature The core feature of the Account subclass. The corresponding introspectable * should depend on Account::FeatureCore. */ Account::Account(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature) : StatelessDBusProxy(bus, busName, objectPath, coreFeature), OptionalInterfaceFactory(this), mPriv(new Private(this, connectionFactory, channelFactory, contactFactory)) { } /** * Class destructor. */ Account::~Account() { delete mPriv; } /** * Return the connection factory used by this account. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the account would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ConnectionFactory object. */ ConnectionFactoryConstPtr Account::connectionFactory() const { return mPriv->connFactory; } /** * Return the channel factory used by this account. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the account would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ChannelFactory object. */ ChannelFactoryConstPtr Account::channelFactory() const { return mPriv->chanFactory; } /** * Return the contact factory used by this account. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the account would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ContactFactory object. */ ContactFactoryConstPtr Account::contactFactory() const { return mPriv->contactFactory; } /** * Return whether this account is valid. * * If \c true, this account is considered by the account manager to be complete * and usable. If \c false, user action is required to make it usable, and it will * never attempt to connect. For instance, this might be caused by the absence * or misconfiguration of a required parameter, in which case updateParameters() * may be used to properly set the parameters values. * * Change notification is via the validityChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return \c true if valid, \c false otherwise. * \sa validityChanged(), updateParameters() */ bool Account::isValidAccount() const { return mPriv->valid; } /** * Return whether this account is enabled. * * Change notification is via the stateChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return \c true if enabled, \c false otherwise. * \sa stateChanged(), setEnabled() */ bool Account::isEnabled() const { return mPriv->enabled; } /** * Set whether this account should be enabled or disabled. * * This gives users the possibility to prevent an account from * being used. * * Note that changing this property won't change the validity of the account. * * \param value Whether this account should be enabled or disabled. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa stateChanged(), isEnabled() */ PendingOperation *Account::setEnabled(bool value) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("Enabled"), QDBusVariant(value)), AccountPtr(this)); } /** * Return the connection manager name of this account. * * \return The connection manager name. */ QString Account::cmName() const { return mPriv->cmName; } /** * Return the protocol name of this account. * * \return The protocol name. */ QString Account::protocolName() const { return mPriv->protocolName; } /** * Return the service name of this account. * * Note that this method will fallback to protocolName() if service name * is not known. * * Change notification is via the serviceNameChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The service name. * \sa serviceNameChanged(), setServiceName(), protocolName() */ QString Account::serviceName() const { if (mPriv->serviceName.isEmpty()) { return mPriv->protocolName; } return mPriv->serviceName; } /** * Set the service name of this account. * * Some protocols, like XMPP and SIP, are used by various different user-recognised brands, * such as Google Talk. On accounts for such services, this method can be used * to set the name describing the service, which must consist only of ASCII letters, numbers and * hyphen/minus signs, and start with a letter. * For the jabber protocol, one of the following service names should be used if possible: * * google-talk (for Google's IM service) * facebook (for Facebook's IM service) * lj-talk (for LiveJournal's IM service) * * The service name may also be set, if appropriate, when creating the account. See * AccountManager::createAccount() for more details. * * Note that changing this property may also change the profile() used by this account, * in which case profileChanged() will be emitted in addition to serviceNameChanged(), if * Account::FeatureProfile is enabled. * * \param value The service name of this account. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa serviceNameChanged(), serviceName() */ PendingOperation *Account::setServiceName(const QString &value) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("Service"), QDBusVariant(value)), AccountPtr(this)); } /** * Return the profile used by this account. * * Profiles are intended to describe variants of the basic protocols supported by Telepathy * connection managers. * An example of this would be Google Talk vs Facebook chat vs Jabber/XMPP. Google Talk is a * specific case of XMPP with well-known capabilities, quirks and settings, and Facebook chat is * a subset of the standard XMPP offering. * * This method will return the profile for this account based on the service used by it. * * Note that if a profile for serviceName() is not available, a fake profile * (Profile::isFake() is \c true) will be returned in case protocolInfo() is valid. * * The fake profile will contain the following info: * - Profile::type() will return "IM" * - Profile::provider() will return an empty string * - Profile::serviceName() will return "cmName()-serviceName()" * - Profile::name() and Profile::protocolName() will return protocolName() * - Profile::iconName() will return "im-protocolName()" * - Profile::cmName() will return cmName() * - Profile::parameters() will return a list matching CM default parameters for protocol with name * protocolName() * - Profile::presences() will return an empty list and * Profile::allowOtherPresences() will return \c true, meaning that CM * presences should be used * - Profile::unsupportedChannelClassSpecs() will return an empty list * * Change notification is via the profileChanged() signal. * * This method requires Account::FeatureProfile to be ready. * * \return A pointer to the Profile object. * \sa profileChanged(), serviceName() */ ProfilePtr Account::profile() const { if (!isReady(FeatureProfile)) { warning() << "Account::profile() requires Account::FeatureProfile to be ready"; return ProfilePtr(); } if (!mPriv->profile) { mPriv->profile = Profile::createForServiceName(serviceName()); if (!mPriv->profile->isValid()) { if (protocolInfo().isValid()) { mPriv->profile = ProfilePtr(new Profile( QString(QLatin1String("%1-%2")).arg(mPriv->cmName).arg(serviceName()), mPriv->cmName, mPriv->protocolName, protocolInfo())); } else { warning() << "Cannot create profile as neither a .profile is installed for service" << serviceName() << "nor protocol info can be retrieved"; } } } return mPriv->profile; } /** * Return the display name of this account. * * Change notification is via the displayNameChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The display name. * \sa displayNameChanged(), setDisplayName() */ QString Account::displayName() const { return mPriv->displayName; } /** * Set the display name of this account. * * The display name is the user-visible name of this account. * This is usually chosen by the user at account creation time. * See AccountManager::createAccount() for more details. * * \param value The display name of this account. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa displayNameChanged(), displayName() */ PendingOperation *Account::setDisplayName(const QString &value) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("DisplayName"), QDBusVariant(value)), AccountPtr(this)); } /** * Return the icon name of this account. * * If the account has no icon, and Account::FeatureProfile is enabled, the icon from the result of * profile() will be used. * * If neither the account nor the profile has an icon, and Account::FeatureProtocolInfo is * enabled, the icon from protocolInfo() will be used if set. * * As a last resort, "im-" + protocolName() will be returned. * * This matches the fallbacks recommended by the \telepathy_spec. * * Change notification is via the iconNameChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The icon name. * \sa iconNameChanged(), setIconName() */ QString Account::iconName() const { if (mPriv->iconName.isEmpty()) { if (isReady(FeatureProfile)) { ProfilePtr pr = profile(); if (pr && pr->isValid()) { QString iconName = pr->iconName(); if (!iconName.isEmpty()) { return iconName; } } } if (isReady(FeatureProtocolInfo) && protocolInfo().isValid()) { return protocolInfo().iconName(); } return QString(QLatin1String("im-%1")).arg(protocolName()); } return mPriv->iconName; } /** * Set the icon name of this account. * * \param value The icon name of this account. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa iconNameChanged(), iconName() */ PendingOperation *Account::setIconName(const QString &value) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("Icon"), QDBusVariant(value)), AccountPtr(this)); } /** * Return the nickname of this account. * * Change notification is via the nicknameChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The nickname. * \sa nicknameChanged(), setNickname() */ QString Account::nickname() const { return mPriv->nickname; } /** * Set the nickname of this account as seen to other contacts. * * \param value The nickname of this account. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa nicknameChanged(), nickname() */ PendingOperation *Account::setNickname(const QString &value) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("Nickname"), QDBusVariant(value)), AccountPtr(this)); } /** * Return the avatar requirements (size limits, supported MIME types, etc) * for avatars passed to setAvatar() on this account. * * For now this method will only return the avatar requirements found in protocolInfo() if * Account::FeatureProtocolInfo is ready, otherwise an invalid AvatarSpec instance is returned. * * \return The requirements as an AvatarSpec object. * \sa avatar(), setAvatar() */ AvatarSpec Account::avatarRequirements() const { // TODO Once connection has support for avatar requirements use it if the connection is usable ProtocolInfo pi = protocolInfo(); if (pi.isValid()) { return pi.avatarRequirements(); } return AvatarSpec(); } /** * Return the avatar of this account. * * Change notification is via the avatarChanged() signal. * * This method requires Account::FeatureAvatar to be ready. * * \return The avatar as an Avatar object. * \sa avatarChanged(), setAvatar() */ const Avatar &Account::avatar() const { if (!isReady(Features() << FeatureAvatar)) { warning() << "Trying to retrieve avatar from account, but " "avatar is not supported or was not requested. " "Use becomeReady(FeatureAvatar)"; } return mPriv->avatar; } /** * Set avatar of this account as seen to other contacts. * * Note that \a avatar must match the requirements as returned by avatarRequirements(). * * \param avatar The avatar of this account. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa avatarChanged(), avatar(), avatarRequirements() */ PendingOperation *Account::setAvatar(const Avatar &avatar) { if (!interfaces().contains(TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR)) { return new PendingFailure( TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Account does not support Avatar"), AccountPtr(this)); } return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR, QLatin1String("Avatar"), QDBusVariant(QVariant::fromValue(avatar))), AccountPtr(this)); } /** * Return the parameters of this account. * * The account parameters are represented as a map from connection manager parameter names * to their values. * * Change notification is via the parametersChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The parameters as QVariantMap. * \sa parametersChanged(), updateParameters() */ QVariantMap Account::parameters() const { return mPriv->parameters; } /** * Update this account parameters. * * On success, the PendingOperation returned by this method will produce a * list of strings, which are the names of parameters whose changes will not * take effect until the account is disconnected and reconnected (for instance * by calling reconnect()). * * \param set Parameters to set. * \param unset Parameters to unset. * \return A PendingStringList which will emit PendingStringList::finished * when the request has been made * \sa parametersChanged(), parameters(), reconnect() */ PendingStringList *Account::updateParameters(const QVariantMap &set, const QStringList &unset) { return new PendingStringList( baseInterface()->UpdateParameters(set, unset), AccountPtr(this)); } /** * Return the protocol info of this account protocol. * * This method requires Account::FeatureProtocolInfo to be ready. * * \return The protocol info as a ProtocolInfo object. */ ProtocolInfo Account::protocolInfo() const { if (!isReady(Features() << FeatureProtocolInfo)) { warning() << "Trying to retrieve protocol info from account, but " "protocol info is not supported or was not requested. " "Use becomeReady(FeatureProtocolInfo)"; return ProtocolInfo(); } return mPriv->cm->protocol(mPriv->protocolName); } /** * Return the capabilities for this account. * * Note that this method will return the connection() capabilities if the * account is online and ready. If the account is disconnected, it will fallback * to return the subtraction of the protocolInfo() capabilities and the profile() unsupported * capabilities. * * Change notification is via the capabilitiesChanged() signal. * * This method requires Account::FeatureCapabilities to be ready. * * \return The capabilities as a ConnectionCapabilities object. * \sa capabilitiesChanged(), protocolInfo(), profile() */ ConnectionCapabilities Account::capabilities() const { if (!isReady(FeatureCapabilities)) { warning() << "Trying to retrieve capabilities from account, but " "FeatureCapabilities was not requested. " "Use becomeReady(FeatureCapabilities)"; return ConnectionCapabilities(); } // if the connection is online and ready use its caps if (mPriv->connection && mPriv->connection->status() == ConnectionStatusConnected) { return mPriv->connection->capabilities(); } // if we are here it means FeatureProtocolInfo and FeatureProfile are ready, as // FeatureCapabilities depend on them, so let's use the subtraction of protocol info caps rccs // and profile unsupported rccs. // // However, if we failed to introspect the CM (eg. this is a test), then let's not try to use // the protocolInfo because it'll be NULL! Profile may also be NULL in case a .profile for // serviceName() is not present and protocolInfo is NULL. ProtocolInfo pi = protocolInfo(); if (!pi.isValid()) { return ConnectionCapabilities(); } ProfilePtr pr; if (isReady(FeatureProfile)) { pr = profile(); } if (!pr || !pr->isValid()) { return pi.capabilities(); } RequestableChannelClassSpecList piClassSpecs = pi.capabilities().allClassSpecs(); RequestableChannelClassSpecList prUnsupportedClassSpecs = pr->unsupportedChannelClassSpecs(); RequestableChannelClassSpecList classSpecs; bool unsupported; foreach (const RequestableChannelClassSpec &piClassSpec, piClassSpecs) { unsupported = false; foreach (const RequestableChannelClassSpec &prUnsuportedClassSpec, prUnsupportedClassSpecs) { // Here we check the following: // - If the unsupported spec has no allowed property it means it does not support any // class whose fixed properties match. // E.g: Doesn't support any media calls, be it audio or video. // - If the unsupported spec has allowed properties it means it does not support a // specific class whose fixed properties and allowed properties should match. // E.g: Doesn't support video calls but does support audio calls. if (prUnsuportedClassSpec.allowedProperties().isEmpty()) { if (piClassSpec.fixedProperties() == prUnsuportedClassSpec.fixedProperties()) { unsupported = true; break; } } else { if (piClassSpec == prUnsuportedClassSpec) { unsupported = true; break; } } } if (!unsupported) { classSpecs.append(piClassSpec); } } mPriv->customCaps = ConnectionCapabilities(classSpecs); return mPriv->customCaps; } /** * Return whether this account should be put online automatically whenever * possible. * * Change notification is via the connectsAutomaticallyPropertyChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return \c true if it should try to connect automatically, \c false * otherwise. * \sa connectsAutomaticallyPropertyChanged(), setConnectsAutomatically() */ bool Account::connectsAutomatically() const { return mPriv->connectsAutomatically; } /** * Set whether this account should be put online automatically whenever * possible. * * \param value Value indicating if this account should be put online whenever * possible. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa connectsAutomaticallyPropertyChanged(), connectsAutomatically() */ PendingOperation *Account::setConnectsAutomatically(bool value) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("ConnectAutomatically"), QDBusVariant(value)), AccountPtr(this)); } /** * Return whether this account has ever been put online successfully. * * This property cannot change from \c true to \c false, only from \c false to \c true. * When the account successfully goes online for the first time, or when it * is detected that this has already happened, the firstOnline() signal is * emitted. * * This method requires Account::FeatureCore to be ready. * * \return \c true if ever been online, \c false otherwise. */ bool Account::hasBeenOnline() const { return mPriv->hasBeenOnline; } /** * Return the status of this account connection. * * Note that this method may return a different value from the one returned by Connection::status() * on this account connection. This happens because this value will change whenever the connection * status of this account connection changes and won't consider the Connection introspection * process. The same rationale also applies to connectionStatusReason() and * connectionErrorDetails(). * * A valid use case for this is for account creation UIs that wish to display the accounts * connection status and nothing else on the connections (e.g. retrieve the contact list). * * Change notification is via the connectionStatusChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The connection status as #ConnectionStatus. * \sa connectionStatusChanged(), connectionStatusReason(), connectionError(), * connectionErrorDetails() */ ConnectionStatus Account::connectionStatus() const { return mPriv->connectionStatus; } /** * Return the reason for this account connection status. * * This represents the reason for the last change to connectionStatus(). * * Note that this method may return a different value from the one returned by * Connection::statusReason() on this account connection. * See connectionStatus() for more details. * * This method requires Account::FeatureCore to be ready. * * \return The connection status reason as #ConnectionStatusReason. * \sa connectionStatusChanged(), connectionStatus(), connectionError(), connectionErrorDetails() */ ConnectionStatusReason Account::connectionStatusReason() const { return mPriv->connectionStatusReason; } /** * Return the D-Bus error name for the last disconnection or connection failure, * (in particular, #TP_QT_ERROR_CANCELLED if it was disconnected by user * request), or an empty string if the account is connected. * * This method requires Account::FeatureCore to be ready. * * \return The D-Bus error name for the last disconnection or connection failure. * \sa connectionErrorDetails(), connectionStatus(), connectionStatusReason(), * connectionStatusChanged() */ QString Account::connectionError() const { return mPriv->connectionError; } /** * Return detailed information related to connectionError(). * * Note that this method may return a different value from the one returned by * Connection::errorDetails() on this account connection. * See connectionStatus() for more details. * * This method requires Account::FeatureCore to be ready. * * \return The connection error details as a Connection::ErrorDetails object. * \sa connectionError(), connectionStatus(), connectionStatusReason(), connectionStatusChanged(), * Connection::ErrorDetails. */ Connection::ErrorDetails Account::connectionErrorDetails() const { return mPriv->connectionErrorDetails; } /** * Return the object representing the connection of this account. * * Note that the Connection object returned by this method will have the * features set in the connectionFactory() used by this account ready. * * Change notification is via the connectionChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return A pointer to the Connection object, or a null ConnectionPtr if * there is no connection currently or if an error occurred. * \sa connectionChanged() */ ConnectionPtr Account::connection() const { return mPriv->connection; } /** * Return whether this account connection is changing presence. * * Change notification is via the changingPresence() signal. * * This method requires Account::FeatureCore to be ready. * * \return \c true if changing presence, \c false otherwise. * \sa changingPresence(), currentPresenceChanged(), setRequestedPresence() */ bool Account::isChangingPresence() const { return mPriv->changingPresence; } /** * Return a list of presences allowed by a connection to this account. * * In particular, for the statuses reported here it can be assumed that setting them as the * requested presence via setRequestedPresence() will eventually result in currentPresence() * changing to exactly said presence. Other statuses are only guaranteed to be matched as closely as * possible. * * The statuses can be also used for the automatic presence, as set by setAutomaticPresence(), with * the exception of any status specifications for which Presence::type() is * Tp::ConnectionPresenceTypeOffline for the Presence returned by PresenceSpec::presence(). * * However, the optional parameter can be used to allow reporting also other possible presence * statuses on this protocol besides the others that can be set on yourself. These are purely * informatory, for e.g. adjusting an UI to allow all possible remote contact statuses to be * displayed. * * An offline presence status is always included, because it's always valid to make an account * offline by setting the requested presence to an offline status. * * Full functionality requires Account::FeatureProtocolInfo and Account::FeatureProfile to be ready * as well as connection with Connection::FeatureSimplePresence enabled. If the connection is online * and Connection::FeatureSimplePresence is enabled, it will return the connection allowed statuses, * otherwise it will return a list os statuses based on profile() and protocolInfo() information * if the corresponding features are enabled. * * If there's a mismatch between the presence status info provided in the .profile file and/or the * .manager file and what an online Connection actually reports (for example, the said data files * are missing or too old to include presence information), the returned value can change, in * particular when connectionChanged() is emitted with a connection for which Connection::status() * is Tp::ConnectionStatusConnected. * * This method requires Account::FeatureCore to be ready. * * \param includeAllStatuses Whether the returned list will include all statuses or just the ones * that can be settable using setRequestedPresence(). * \return The allowed statuses as a list of PresenceSpec objects. */ PresenceSpecList Account::allowedPresenceStatuses(bool includeAllStatuses) const { QHash specMap; // if the connection is online and ready use it if (mPriv->connection && mPriv->connection->status() == ConnectionStatusConnected && mPriv->connection->actualFeatures().contains(Connection::FeatureSimplePresence)) { SimpleStatusSpecMap connectionAllowedPresences = mPriv->connection->lowlevel()->allowedPresenceStatuses(); SimpleStatusSpecMap::const_iterator i = connectionAllowedPresences.constBegin(); SimpleStatusSpecMap::const_iterator end = connectionAllowedPresences.constEnd(); for (; i != end; ++i) { PresenceSpec presence = PresenceSpec(i.key(), i.value()); specMap.insert(i.key(), presence); } } else { ProtocolInfo pi = protocolInfo(); if (pi.isValid()) { // add all ProtocolInfo presences to the returned map foreach (const PresenceSpec &piPresence, pi.allowedPresenceStatuses()) { QString piStatus = piPresence.presence().status(); specMap.insert(piStatus, piPresence); } } ProfilePtr pr; if (isReady(FeatureProfile)) { pr = profile(); } if (pr && pr->isValid()) { // add all Profile presences to the returned map foreach (const Profile::Presence &prPresence, pr->presences()) { QString prStatus = prPresence.id(); if (specMap.contains(prStatus)) { // we already got the presence from ProtocolInfo, just update // canHaveStatusMessage if needed PresenceSpec presence = specMap.value(prStatus); if (presence.canHaveStatusMessage() != prPresence.canHaveStatusMessage()) { SimpleStatusSpec spec; spec.type = presence.presence().type(); spec.maySetOnSelf = presence.maySetOnSelf(); spec.canHaveMessage = prPresence.canHaveStatusMessage(); specMap.insert(prStatus, PresenceSpec(prStatus, spec)); } } else { // presence not found in ProtocolInfo, adding it specMap.insert(prStatus, presenceSpecForStatus(prStatus, prPresence.canHaveStatusMessage())); } } // now remove all presences that are not in the Profile, if it does // not allow other presences, and the ones that are disabled QHash::iterator i = specMap.begin(); QHash::iterator end = specMap.end(); while (i != end) { PresenceSpec presence = i.value(); QString status = presence.presence().status(); bool hasPresence = pr->hasPresence(status); Profile::Presence prPresence = pr->presence(status); if ((!hasPresence && !pr->allowOtherPresences()) || (hasPresence && prPresence.isDisabled())) { i = specMap.erase(i); } else { ++i; } } } } // filter out presences that may not be set on self if includeAllStatuses is false if (!includeAllStatuses) { QHash::iterator i = specMap.begin(); QHash::iterator end = specMap.end(); while (i != end) { PresenceSpec presence = i.value(); if (!presence.maySetOnSelf()) { i = specMap.erase(i); } else { ++i; } } } if (!specMap.size()) { // If we didn't discover any statuses, either the protocol doesn't really support presence, // or we lack information (e.g. features not enabled or info not provided in the .manager or // .profile files). "available" - just the fact that you're online in the first place, is at // least a valid option for any protocol, so we'll include it as a fallback. specMap.insert(QLatin1String("available"), presenceSpecForStatus(QLatin1String("available"), false)); } // We'll always include "offline". It is always valid to make an account offline via // setRequestedPresence(). if (!specMap.contains(QLatin1String("offline"))) { specMap.insert(QLatin1String("offline"), presenceSpecForStatus(QLatin1String("offline"), false)); } return specMap.values(); } /** * Return the maximum length for a presence status message. * * If a status message set using setRequestedPresence() (or setAutomaticPresence()) is longer than * the maximum length allowed, the message will be truncated and * currentPresenceChanged() will be emitted (if setting the presence worked) * with the truncated message. * * Full functionality requires Connection with Connection::FeatureSimplePresence * enabled. If the connection is online and Connection::FeatureSimplePresence is * enabled, it will return the connection maximum status message length, * otherwise it will return 0. * * This method requires Account::FeatureCore to be ready. * * \return The maximum length, or 0 if there is no limit. */ uint Account::maxPresenceStatusMessageLength() const { // if the connection is online and ready use it if (mPriv->connection && mPriv->connection->status() == ConnectionStatusConnected && mPriv->connection->actualFeatures().contains(Connection::FeatureSimplePresence)) { return mPriv->connection->lowlevel()->maxPresenceStatusMessageLength(); } return 0; } /** * Return the presence status that this account will have set on it by the * account manager if it brings it online automatically. * * Change notification is via the automaticPresenceChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The automatic presence as a Presence object. * \sa automaticPresenceChanged(), setAutomaticPresence() */ Presence Account::automaticPresence() const { return mPriv->automaticPresence; } /** * Set the presence status that this account should have if it is brought * online automatically by the account manager. * * Note that changing this property won't actually change the account's status * until the next time it is (re)connected for some reason. * * The value of this property must be one that would be acceptable for setRequestedPresence(), * as returned by allowedPresenceStatuses(), with the additional restriction that the offline * presence cannot be used. * * \param presence The presence to set when this account is brought * online automatically by the account manager. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa automaticPresenceChanged(), automaticPresence(), setRequestedPresence() */ PendingOperation *Account::setAutomaticPresence(const Presence &presence) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("AutomaticPresence"), QDBusVariant(QVariant::fromValue(presence.barePresence()))), AccountPtr(this)); } /** * Return the actual presence of this account. * * Change notification is via the currentPresenceChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The current presence as a Presence object. * \sa currentPresenceChanged(), setRequestedPresence(), requestedPresence(), automaticPresence() */ Presence Account::currentPresence() const { return mPriv->currentPresence; } /** * Return the requested presence of this account. * * Change notification is via the requestedPresenceChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return The requested presence as a Presence object. * \sa requestedPresenceChanged(), setRequestedPresence(), currentPresence(), automaticPresence() */ Presence Account::requestedPresence() const { return mPriv->requestedPresence; } /** * Set the requested presence of this account. * * When the requested presence is changed, the account manager will attempt to * manipulate the connection to make currentPresence() match requestedPresence() * as closely as possible. * * \param presence The requested presence. * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa requestedPresenceChanged(), currentPresence(), automaticPresence(), setAutomaticPresence() */ PendingOperation *Account::setRequestedPresence(const Presence &presence) { return new PendingVoid( mPriv->properties->Set( TP_QT_IFACE_ACCOUNT, QLatin1String("RequestedPresence"), QDBusVariant(QVariant::fromValue(presence.barePresence()))), AccountPtr(this)); } /** * Return whether this account is online. * * Change notification is via the onlinenessChanged() signal. * * This method requires Account::FeatureCore to be ready. * * \return \c true if online, otherwise \c false. * \sa onlinenessChanged() */ bool Account::isOnline() const { return mPriv->currentPresence.type() != ConnectionPresenceTypeOffline; } /** * Return the unique identifier of this account. * * \return The unique identifier. */ QString Account::uniqueIdentifier() const { QString path = objectPath(); return path.right(path.length() - strlen("/org/freedesktop/Telepathy/Account/")); } /** * Return the normalized user ID of the local user of this account. * * It is unspecified whether this user ID is globally unique. * * As currently implemented, IRC user IDs are only unique within the same * IRCnet. On some saner protocols, the user ID includes a DNS name which * provides global uniqueness. * * If this value is not known yet (which will always be the case for accounts * that have never been online), it will be an empty string. * * It is possible that this value will change if the connection manager's * normalization algorithm changes. * * This method requires Account::FeatureCore to be ready. * * \return The normalized user ID of the local user. * \sa normalizedNameChanged() */ QString Account::normalizedName() const { return mPriv->normalizedName; } /** * If this account is currently connected, disconnect and reconnect it. If it * is currently trying to connect, cancel the attempt to connect and start * another. If it is currently disconnected, do nothing. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. */ PendingOperation *Account::reconnect() { return new PendingVoid(baseInterface()->Reconnect(), AccountPtr(this)); } /** * Delete this account. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa removed() */ PendingOperation *Account::remove() { return new PendingVoid(baseInterface()->Remove(), AccountPtr(this)); } /** * Return whether passing hints on channel requests on this account is known to be supported. * * This method requires Account::FeatureCore to be ready. * * \return \c true if supported, \c false otherwise. */ bool Account::supportsRequestHints() const { return mPriv->dispatcherContext->supportsHints; } /** * Return whether the ChannelRequest::succeeded(const Tp::ChannelPtr &channel) signal is expected to * be emitted with a non-NULL channel parameter for requests made using this account. * * This can be used as a run-time check for the Channel Dispatcher implementation being new enough. * In particular, similarly old Channel Dispatchers don't support request hints either, so the * return value for this function and Account::supportsRequestHints() will bet he same. * * This method requires Account::FeatureCore to be ready. * * \return \c true if supported, \c false otherwise. */ bool Account::requestsSucceedWithChannel() const { return supportsRequestHints(); } /** * Start a request to ensure that a text channel with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contactIdentifier The identifier of the contact to chat with. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureTextChat( const QString &contactIdentifier, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = textChatRequest(contactIdentifier); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a text channel with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contact The contact to chat with. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureTextChat( const ContactPtr &contact, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = textChatRequest(contact); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a text chat room with the given * room name \a roomName exists, creating it if necessary. * * See ensureChannel() for more details. * * \param roomName The name of the chat room. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureTextChatroom( const QString &roomName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = textChatroomRequest(roomName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that an audio call channel with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contactIdentifier The identifier of the contact to call. * \param initialAudioContentName The name of the initial CallContent that will * be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureAudioCall( const QString &contactIdentifier, const QString &initialAudioContentName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = audioCallRequest(contactIdentifier, initialAudioContentName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that an audio call channel with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contact The contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest* Account::ensureAudioCall( const ContactPtr &contact, const QString &initialAudioContentName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = audioCallRequest(contact, initialAudioContentName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a video call channel with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contactIdentifier The identifier of the contact to call. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureVideoCall( const QString &contactIdentifier, const QString &initialVideoContentName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = videoCallRequest(contactIdentifier, initialVideoContentName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a video call channel with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contact The contact to call. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureVideoCall( const ContactPtr &contact, const QString &initialVideoContentName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = videoCallRequest(contact, initialVideoContentName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that an audio/video call channel with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contactIdentifier The identifier of the contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureAudioVideoCall( const QString &contactIdentifier, const QString &initialAudioContentName, const QString &initialVideoContentName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = audioVideoCallRequest(contactIdentifier, initialAudioContentName, initialVideoContentName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that an audio/video call channel with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contact The contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureAudioVideoCall( const ContactPtr &contact, const QString &initialAudioContentName, const QString &initialVideoContentName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = audioVideoCallRequest(contact, initialAudioContentName, initialVideoContentName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a media channel with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contactIdentifier The identifier of the contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureStreamedMediaCall( const QString &contactIdentifier, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamedMediaCallRequest(contactIdentifier); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a media channel with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * \param contact The contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureStreamedMediaCall( const ContactPtr &contact, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamedMediaCallRequest(contact); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that an audio call with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contactIdentifier The identifier of the contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureStreamedMediaAudioCall( const QString &contactIdentifier, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamedMediaAudioCallRequest(contactIdentifier); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that an audio call with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contact The contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureStreamedMediaAudioCall( const ContactPtr &contact, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamedMediaAudioCallRequest(contact); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a video call with the given * contact \a contactIdentifier exists, creating it if necessary. * * See ensureChannel() for more details. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contactIdentifier The identifier of the contact to call. * \param withAudio true if both audio and video are required, false for a * video-only call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureStreamedMediaVideoCall( const QString &contactIdentifier, bool withAudio, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamedMediaVideoCallRequest(contactIdentifier, withAudio); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to ensure that a video call with the given * contact \a contact exists, creating it if necessary. * * See ensureChannel() for more details. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contact The contact to call. * \param withAudio true if both audio and video are required, false for a * video-only call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::ensureStreamedMediaVideoCall( const ContactPtr &contact, bool withAudio, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamedMediaVideoCallRequest(contact, withAudio); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to create a file transfer channel with the given * contact \a contact. * * \param contactIdentifier The identifier of the contact to send a file. * \param properties The desired properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createFileTransfer( const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = fileTransferRequest(contactIdentifier, properties); if (request.isEmpty()) { return new PendingChannelRequest(AccountPtr(this), TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Cannot create a file transfer with invalid parameters")); } return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a file transfer channel with the given * contact \a contact. * * \param contact The contact to send a file. * \param properties The desired properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createFileTransfer( const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = fileTransferRequest(contact, properties); if (request.isEmpty()) { return new PendingChannelRequest(AccountPtr(this), TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Cannot create a file transfer with invalid parameters")); } return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a stream tube channel with the given * contact identifier \a contactIdentifier. * * \param contactIdentifier The identifier of the contact to open a stream tube with. * \param service The stream tube service. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createStreamTube( const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamTubeRequest(contactIdentifier, service); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a stream tube channel with the given * contact \a contact. * * \param contact The contact to open a stream tube with. * \param service The stream tube service. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createStreamTube( const ContactPtr &contact, const QString &service, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = streamTubeRequest(contact, service); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a DBus tube channel with the given * contact \a contactIdentifier. * * \param contactIdentifier The contact identifier of the contact to open a DBus tube with. * \param serviceName the service name that will be used over the * tube. It should be a well-known D-Bus service name, of the form * \c com.example.ServiceName * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the call has finished. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createDBusTube( const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = dbusTubeRequest(contactIdentifier, serviceName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a DBus tube channel with the given * contact \a contact. * * \param contact The contact to open a DBus tube with. * \param serviceName the service name that will be used over the * tube. It should be a well-known D-Bus service name, of the form * \c com.example.ServiceName * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the call has finished. * \sa ensureChannel(), createChannel() */ PendingChannelRequest* Account::createDBusTube( const Tp::ContactPtr& contact, const QString& serviceName, const QDateTime& userActionTime, const QString& preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = dbusTubeRequest(contact, serviceName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } PendingChannelRequest* Account::createDBusTubeRoom( const QString &room, const QString &serviceName, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = dbusTubeRoomRequest(room, serviceName); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference media call with the given * channels \a channels. * * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceStreamedMediaCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceStreamedMediaCallRequest(channels, initialInviteeContactsIdentifiers); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference media call with the given * channels \a channels. * * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceStreamedMediaCall( const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceStreamedMediaCallRequest(channels, initialInviteeContacts); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference call with the given * channels \a channels. * * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceCallRequest(channels, initialInviteeContactsIdentifiers); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference call with the given * channels \a channels. * * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceCall( const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceCallRequest(channels, initialInviteeContacts); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference text chat with the given * channels \a channels. * * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceTextChat( const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceTextChatRequest(channels, initialInviteeContactsIdentifiers); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference text chat with the given * channels \a channels. * * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceTextChat( const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceTextChatRequest(channels, initialInviteeContacts); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference text chat room with the given * channels \a channels and room name \a roomName. * * \param roomName The room name. * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceTextChatroom( const QString &roomName, const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceTextChatroomRequest(roomName, channels, initialInviteeContactsIdentifiers); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference text chat room with the given * channels \a channels and room name \a roomName. * * \param roomName The room name. * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa ensureChannel(), createChannel() */ PendingChannelRequest *Account::createConferenceTextChatroom( const QString &roomName, const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = conferenceTextChatroomRequest(roomName, channels, initialInviteeContacts); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to create a conference call with the given * channels \a channels. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime) { QVariantMap request = conferenceCallRequest(channels, initialInviteeContactsIdentifiers); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference call with the given * channels \a channels. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceCall( const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime) { QVariantMap request = conferenceCallRequest(channels, initialInviteeContacts); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a contact search channel with the given * server \a server and limit \a limit. * * \param server For protocols which support searching for contacts on multiple servers with * different DNS names (like XMPP), the DNS name of the server to be searched, * e.g. "characters.shakespeare.lit". Otherwise, an empty string. * \param limit The desired maximum number of results that should be returned by a doing a search. * If the protocol does not support specifying a limit for the number of results * returned at a time, this will be ignored. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa createChannel() */ PendingChannelRequest *Account::createContactSearch( const QString &server, uint limit, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { QVariantMap request = contactSearchRequest(capabilities(), server, limit); return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to ensure that a text channel with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to chat with. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleTextChat( const QString &contactIdentifier, const QDateTime &userActionTime) { QVariantMap request = textChatRequest(contactIdentifier); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a text channel with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to chat with. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleTextChat( const ContactPtr &contact, const QDateTime &userActionTime) { QVariantMap request = textChatRequest(contact); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a text chat room with the given * room name \a roomName exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param roomName The name of the chat room. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleTextChatroom( const QString &roomName, const QDateTime &userActionTime) { QVariantMap request = textChatroomRequest(roomName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that an audio call channel with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleAudioCall( const QString &contactIdentifier, const QString &initialAudioContentName, const QDateTime &userActionTime) { QVariantMap request = audioCallRequest(contactIdentifier, initialAudioContentName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that an audio call channel with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleAudioCall( const ContactPtr &contact, const QString &initialAudioContentName, const QDateTime &userActionTime) { QVariantMap request = audioCallRequest(contact, initialAudioContentName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a video call channel with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to call. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleVideoCall( const QString &contactIdentifier, const QString &initialVideoContentName, const QDateTime &userActionTime) { QVariantMap request = videoCallRequest(contactIdentifier, initialVideoContentName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a video call channel with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to call. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleVideoCall( const ContactPtr &contact, const QString &initialVideoContentName, const QDateTime &userActionTime) { QVariantMap request = videoCallRequest(contact, initialVideoContentName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that an audio/video call channel with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleAudioVideoCall( const QString &contactIdentifier, const QString &initialAudioContentName, const QString &initialVideoContentName, const QDateTime &userActionTime) { QVariantMap request = audioVideoCallRequest(contactIdentifier, initialAudioContentName, initialVideoContentName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that an audio/video call channel with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to call. * \param initialAudioContentName The name of the initial audio CallContent that * will be automatically added on the channel. * \param initialVideoContentName The name of the initial video CallContent that * will be automatically added on the channel. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleAudioVideoCall( const ContactPtr &contact, const QString &initialAudioContentName, const QString &initialVideoContentName, const QDateTime &userActionTime) { QVariantMap request = audioVideoCallRequest(contact, initialAudioContentName, initialVideoContentName); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a media channel with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleStreamedMediaCall( const QString &contactIdentifier, const QDateTime &userActionTime) { QVariantMap request = streamedMediaCallRequest(contactIdentifier); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a media channel with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleStreamedMediaCall( const ContactPtr &contact, const QDateTime &userActionTime) { QVariantMap request = streamedMediaCallRequest(contact); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that an audio call with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contactIdentifier The identifier of the contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleStreamedMediaAudioCall( const QString &contactIdentifier, const QDateTime &userActionTime) { QVariantMap request = streamedMediaAudioCallRequest(contactIdentifier); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that an audio call with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contact The contact to call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleStreamedMediaAudioCall( const ContactPtr &contact, const QDateTime &userActionTime) { QVariantMap request = streamedMediaAudioCallRequest(contact); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a video call with the given * contact \a contactIdentifier exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contactIdentifier The identifier of the contact to call. * \param withAudio true if both audio and video are required, false for a * video-only call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleStreamedMediaVideoCall( const QString &contactIdentifier, bool withAudio, const QDateTime &userActionTime) { QVariantMap request = streamedMediaVideoCallRequest(contactIdentifier, withAudio); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to ensure that a video call with the given * contact \a contact exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * This will only work on relatively modern connection managers, * like telepathy-gabble 0.9.0 or later. * * \param contact The contact to call. * \param withAudio true if both audio and video are required, false for a * video-only call. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleStreamedMediaVideoCall( const ContactPtr &contact, bool withAudio, const QDateTime &userActionTime) { QVariantMap request = streamedMediaVideoCallRequest(contact, withAudio); return ensureAndHandleChannel(request, userActionTime); } /** * Start a request to create a file transfer channel with the given * contact \a contactIdentifier. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to send a file. * \param properties The desired properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleFileTransfer( const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime) { QVariantMap request = fileTransferRequest(contactIdentifier, properties); if (request.isEmpty()) { return new PendingChannel(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Cannot create a file transfer with invalid parameters")); } return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a file transfer channel with the given * contact \a contact. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to send a file. * \param properties The desired properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleFileTransfer( const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime) { QVariantMap request = fileTransferRequest(contact, properties); if (request.isEmpty()) { return new PendingChannel(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Cannot create a file transfer with invalid parameters")); } return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a stream tube channel with the given * contact identifier \a contactIdentifier. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to open a stream tube with. * \param service The stream tube service. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleStreamTube( const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime) { QVariantMap request = streamTubeRequest(contactIdentifier, service); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a stream tube channel with the given * contact \a contact. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to open a stream tube with. * \param service The stream tube service. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleStreamTube( const ContactPtr &contact, const QString &service, const QDateTime &userActionTime) { QVariantMap request = streamTubeRequest(contact, service); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a DBus tube channel with the given * contact identifier \a contactIdentifier. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contactIdentifier The identifier of the contact to open a DBus tube with. * \param serviceName The DBus tube service name. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleDBusTube( const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime) { QVariantMap request = dbusTubeRequest(contactIdentifier, serviceName); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a DBus tube channel with the given * contact \a contact. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param contact The contact to open a DBus tube with. * \param serviceName The DBus tube service name. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleDBusTube( const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime) { QVariantMap request = dbusTubeRequest(contact, serviceName); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference text chat with the given * channels \a channels. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceTextChat( const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime) { QVariantMap request = conferenceTextChatRequest(channels, initialInviteeContactsIdentifiers); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference text chat with the given * channels \a channels. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceTextChat( const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime) { QVariantMap request = conferenceTextChatRequest(channels, initialInviteeContacts); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference text chat room with the given * channels \a channels and room name \a roomName. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param roomName The room name. * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceTextChatroom( const QString &roomName, const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime) { QVariantMap request = conferenceTextChatroomRequest(roomName, channels, initialInviteeContactsIdentifiers); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference text chat room with the given * channels \a channels and room name \a roomName. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param roomName The room name. * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceTextChatroom( const QString &roomName, const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime) { QVariantMap request = conferenceTextChatroomRequest(roomName, channels, initialInviteeContacts); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference media call with the given * channels \a channels. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param channels The conference channels. * \param initialInviteeContactsIdentifiers A list of additional contacts * identifiers to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceStreamedMediaCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers, const QDateTime &userActionTime) { QVariantMap request = conferenceStreamedMediaCallRequest(channels, initialInviteeContactsIdentifiers); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a conference media call with the given * channels \a channels. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param channels The conference channels. * \param initialInviteeContacts A list of additional contacts * to be invited to this * conference when it is created. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleConferenceStreamedMediaCall( const QList &channels, const QList &initialInviteeContacts, const QDateTime &userActionTime) { QVariantMap request = conferenceStreamedMediaCallRequest(channels, initialInviteeContacts); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a contact search channel with the given * server \a server and limit \a limit. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * \param server For protocols which support searching for contacts on multiple servers with * different DNS names (like XMPP), the DNS name of the server to be searched, * e.g. "characters.shakespeare.lit". Otherwise, an empty string. * If the protocol does not support specifying a search server, this will be ignored. * \param limit The desired maximum number of results that should be returned by a doing a search. * If the protocol does not support specifying a limit for the number of results * returned at a time, this will be ignored. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel(), createAndHandleChannel() */ PendingChannel *Account::createAndHandleContactSearch( const QString &server, uint limit, const QDateTime &userActionTime) { QVariantMap request = contactSearchRequest(capabilities(), server, limit); return createAndHandleChannel(request, userActionTime); } /** * Start a request to create a channel. * This initially just creates a PendingChannelRequest object, * which can be used to track the success or failure of the request, * or to cancel it. * * Helper methods for text chat, text chat room, media call and conference are * provided and should be used if appropriate. * * \param request A dictionary containing desirable properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa createChannel() */ PendingChannelRequest *Account::createChannel( const QVariantMap &request, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, true, hints); } /** * Start a request to ensure that a channel exists, creating it if necessary. * This initially just creates a PendingChannelRequest object, * which can be used to track the success or failure of the request, * or to cancel it. * * Helper methods for text chat, text chat room, media call and conference are * provided and should be used if appropriate. * * \param request A dictionary containing desirable properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param hints Arbitrary metadata which will be relayed to the handler if supported, * as indicated by supportsRequestHints(). * \return A PendingChannelRequest which will emit PendingChannelRequest::finished * when the request has been made. * \sa createChannel() */ PendingChannelRequest *Account::ensureChannel( const QVariantMap &request, const QDateTime &userActionTime, const QString &preferredHandler, const ChannelRequestHints &hints) { return new PendingChannelRequest(AccountPtr(this), request, userActionTime, preferredHandler, false, hints); } /** * Start a request to create channel. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * Helper methods for text chat, text chat room, media call and conference are * provided and should be used if appropriate. * * The caller is responsible for closing the channel with * Channel::requestClose() or Channel::requestLeave() when it has finished handling it. * * A possible error returned by this method is #TP_QT_ERROR_NOT_AVAILABLE, in case a conflicting * channel that matches \a request already exists. * * \param request A dictionary containing desirable properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa ensureAndHandleChannel() */ PendingChannel *Account::createAndHandleChannel( const QVariantMap &request, const QDateTime &userActionTime) { return new PendingChannel(AccountPtr(this), request, userActionTime, true); } /** * Start a request to ensure that a channel exists, creating it if necessary. * This initially just creates a PendingChannel object, * which can be used to track the success or failure of the request. * * Helper methods for text chat, text chat room, media call and conference are * provided and should be used if appropriate. * * The caller is responsible for closing the channel with * Channel::requestClose() or Channel::requestLeave() when it has finished handling it. * * A possible error returned by this method is #TP_QT_ERROR_NOT_YOURS, in case somebody else is * already handling a channel that matches \a request. * * \param request A dictionary containing desirable properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \return A PendingChannel which will emit PendingChannel::finished * successfully, when the Channel is available for handling using * PendingChannel::channel(), or with an error if one has been encountered. * \sa createAndHandleChannel() */ PendingChannel *Account::ensureAndHandleChannel( const QVariantMap &request, const QDateTime &userActionTime) { return new PendingChannel(AccountPtr(this), request, userActionTime, false); } /** * Return the Client::AccountInterface interface proxy object for this account. * This method is protected since the convenience methods provided by this * class should generally be used instead of calling D-Bus methods * directly. * * \return A pointer to the existing Client::AccountInterface object for this * Account object. */ Client::AccountInterface *Account::baseInterface() const { return mPriv->baseInterface; } /** * Return the Client::ChannelDispatcherInterface interface proxy object to use for requesting * channels on this account. * * This method is protected since the convenience methods provided by this * class should generally be used instead of calling D-Bus methods * directly. * * \return A pointer to the existing Client::ChannelDispatcherInterface object for this * Account object. */ Client::ChannelDispatcherInterface *Account::dispatcherInterface() const { return mPriv->dispatcherContext->iface; } /**** Private ****/ void Account::Private::init() { if (!parent->isValid()) { return; } parent->connect(baseInterface, SIGNAL(Removed()), SLOT(onRemoved())); parent->connect(baseInterface, SIGNAL(AccountPropertyChanged(QVariantMap)), SLOT(onPropertyChanged(QVariantMap))); } void Account::Private::introspectMain(Account::Private *self) { if (self->dispatcherContext->introspected) { self->parent->onDispatcherIntrospected(0); return; } if (!self->dispatcherContext->introspectOp) { debug() << "Discovering if the Channel Dispatcher supports request hints"; self->dispatcherContext->introspectOp = self->dispatcherContext->iface->requestPropertySupportsRequestHints(); } connect(self->dispatcherContext->introspectOp.data(), SIGNAL(finished(Tp::PendingOperation*)), self->parent, SLOT(onDispatcherIntrospected(Tp::PendingOperation*))); } void Account::Private::introspectAvatar(Account::Private *self) { debug() << "Calling GetAvatar(Account)"; // we already checked if avatar interface exists, so bypass avatar interface // checking Client::AccountInterfaceAvatarInterface *iface = self->parent->interface(); // If we are here it means the user cares about avatar, so // connect to avatar changed signal, so we update the avatar // when it changes. self->parent->connect(iface, SIGNAL(AvatarChanged()), SLOT(onAvatarChanged())); self->retrieveAvatar(); } void Account::Private::introspectProtocolInfo(Account::Private *self) { Q_ASSERT(!self->cm); self->cm = ConnectionManager::create( self->parent->dbusConnection(), self->cmName, self->connFactory, self->chanFactory, self->contactFactory); self->parent->connect(self->cm->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onConnectionManagerReady(Tp::PendingOperation*))); } void Account::Private::introspectCapabilities(Account::Private *self) { if (!self->connection) { // there is no connection, just make capabilities ready self->readinessHelper->setIntrospectCompleted(FeatureCapabilities, true); return; } self->parent->connect(self->connection->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onConnectionReady(Tp::PendingOperation*))); } void Account::Private::updateProperties(const QVariantMap &props) { debug() << "Account::updateProperties: changed:"; if (props.contains(QLatin1String("Interfaces"))) { parent->setInterfaces(qdbus_cast(props[QLatin1String("Interfaces")])); debug() << " Interfaces:" << parent->interfaces(); } QString oldIconName = parent->iconName(); bool serviceNameChanged = false; bool profileChanged = false; if (props.contains(QLatin1String("Service")) && serviceName != qdbus_cast(props[QLatin1String("Service")])) { serviceNameChanged = true; serviceName = qdbus_cast(props[QLatin1String("Service")]); debug() << " Service Name:" << parent->serviceName(); /* use parent->serviceName() here as if the service name is empty we are going to use the * protocol name */ emit parent->serviceNameChanged(parent->serviceName()); parent->notify("serviceName"); /* if we had a profile and the service changed, it means the profile also changed */ if (parent->isReady(Account::FeatureProfile)) { /* service name changed, let's recreate profile */ profileChanged = true; profile.reset(); emit parent->profileChanged(parent->profile()); parent->notify("profile"); } } if (props.contains(QLatin1String("DisplayName")) && displayName != qdbus_cast(props[QLatin1String("DisplayName")])) { displayName = qdbus_cast(props[QLatin1String("DisplayName")]); debug() << " Display Name:" << displayName; emit parent->displayNameChanged(displayName); parent->notify("displayName"); } if ((props.contains(QLatin1String("Icon")) && oldIconName != qdbus_cast(props[QLatin1String("Icon")])) || serviceNameChanged) { if (props.contains(QLatin1String("Icon"))) { iconName = qdbus_cast(props[QLatin1String("Icon")]); } QString newIconName = parent->iconName(); if (oldIconName != newIconName) { debug() << " Icon:" << newIconName; emit parent->iconNameChanged(newIconName); parent->notify("iconName"); } } if (props.contains(QLatin1String("Nickname")) && nickname != qdbus_cast(props[QLatin1String("Nickname")])) { nickname = qdbus_cast(props[QLatin1String("Nickname")]); debug() << " Nickname:" << nickname; emit parent->nicknameChanged(nickname); parent->notify("nickname"); } if (props.contains(QLatin1String("NormalizedName")) && normalizedName != qdbus_cast(props[QLatin1String("NormalizedName")])) { normalizedName = qdbus_cast(props[QLatin1String("NormalizedName")]); debug() << " Normalized Name:" << normalizedName; emit parent->normalizedNameChanged(normalizedName); parent->notify("normalizedName"); } if (props.contains(QLatin1String("Valid")) && valid != qdbus_cast(props[QLatin1String("Valid")])) { valid = qdbus_cast(props[QLatin1String("Valid")]); debug() << " Valid:" << (valid ? "true" : "false"); emit parent->validityChanged(valid); parent->notify("valid"); } if (props.contains(QLatin1String("Enabled")) && enabled != qdbus_cast(props[QLatin1String("Enabled")])) { enabled = qdbus_cast(props[QLatin1String("Enabled")]); debug() << " Enabled:" << (enabled ? "true" : "false"); emit parent->stateChanged(enabled); parent->notify("enabled"); } if (props.contains(QLatin1String("ConnectAutomatically")) && connectsAutomatically != qdbus_cast(props[QLatin1String("ConnectAutomatically")])) { connectsAutomatically = qdbus_cast(props[QLatin1String("ConnectAutomatically")]); debug() << " Connects Automatically:" << (connectsAutomatically ? "true" : "false"); emit parent->connectsAutomaticallyPropertyChanged(connectsAutomatically); parent->notify("connectsAutomatically"); } if (props.contains(QLatin1String("HasBeenOnline")) && !hasBeenOnline && qdbus_cast(props[QLatin1String("HasBeenOnline")])) { hasBeenOnline = true; debug() << " HasBeenOnline changed to true"; // don't emit firstOnline unless we're already ready, that would be // misleading - we'd emit it just before any already-used account // became ready if (parent->isReady(Account::FeatureCore)) { emit parent->firstOnline(); } parent->notify("hasBeenOnline"); } if (props.contains(QLatin1String("Parameters")) && parameters != qdbus_cast(props[QLatin1String("Parameters")])) { parameters = qdbus_cast(props[QLatin1String("Parameters")]); emit parent->parametersChanged(parameters); parent->notify("parameters"); } if (props.contains(QLatin1String("AutomaticPresence")) && automaticPresence.barePresence() != qdbus_cast( props[QLatin1String("AutomaticPresence")])) { automaticPresence = Presence(qdbus_cast( props[QLatin1String("AutomaticPresence")])); debug() << " Automatic Presence:" << automaticPresence.type() << "-" << automaticPresence.status(); emit parent->automaticPresenceChanged(automaticPresence); parent->notify("automaticPresence"); } if (props.contains(QLatin1String("CurrentPresence")) && currentPresence.barePresence() != qdbus_cast( props[QLatin1String("CurrentPresence")])) { currentPresence = Presence(qdbus_cast( props[QLatin1String("CurrentPresence")])); debug() << " Current Presence:" << currentPresence.type() << "-" << currentPresence.status(); emit parent->currentPresenceChanged(currentPresence); parent->notify("currentPresence"); emit parent->onlinenessChanged(parent->isOnline()); parent->notify("online"); } if (props.contains(QLatin1String("RequestedPresence")) && requestedPresence.barePresence() != qdbus_cast( props[QLatin1String("RequestedPresence")])) { requestedPresence = Presence(qdbus_cast( props[QLatin1String("RequestedPresence")])); debug() << " Requested Presence:" << requestedPresence.type() << "-" << requestedPresence.status(); emit parent->requestedPresenceChanged(requestedPresence); parent->notify("requestedPresence"); } if (props.contains(QLatin1String("ChangingPresence")) && changingPresence != qdbus_cast( props[QLatin1String("ChangingPresence")])) { changingPresence = qdbus_cast( props[QLatin1String("ChangingPresence")]); debug() << " Changing Presence:" << changingPresence; emit parent->changingPresence(changingPresence); parent->notify("changingPresence"); } if (props.contains(QLatin1String("Connection"))) { QString path = qdbus_cast(props[QLatin1String("Connection")]).path(); if (path.isEmpty()) { debug() << " The map contains \"Connection\" but it's empty as a QDBusObjectPath!"; debug() << " Trying QString (known bug in some MC/dbus-glib versions)"; path = qdbus_cast(props[QLatin1String("Connection")]); } debug() << " Connection Object Path:" << path; if (path == QLatin1String("/")) { path = QString(); } connObjPathQueue.enqueue(path); if (connObjPathQueue.size() == 1) { processConnQueue(); } // onConnectionBuilt for a previous path will make sure the path we enqueued is processed if // the queue wasn't empty (so is now size() > 1) } bool connectionStatusChanged = false; if (props.contains(QLatin1String("ConnectionStatus")) || props.contains(QLatin1String("ConnectionStatusReason")) || props.contains(QLatin1String("ConnectionError")) || props.contains(QLatin1String("ConnectionErrorDetails"))) { ConnectionStatus oldConnectionStatus = connectionStatus; if (props.contains(QLatin1String("ConnectionStatus")) && connectionStatus != ConnectionStatus( qdbus_cast(props[QLatin1String("ConnectionStatus")]))) { connectionStatus = ConnectionStatus( qdbus_cast(props[QLatin1String("ConnectionStatus")])); debug() << " Connection Status:" << connectionStatus; connectionStatusChanged = true; } if (props.contains(QLatin1String("ConnectionStatusReason")) && connectionStatusReason != ConnectionStatusReason( qdbus_cast(props[QLatin1String("ConnectionStatusReason")]))) { connectionStatusReason = ConnectionStatusReason( qdbus_cast(props[QLatin1String("ConnectionStatusReason")])); debug() << " Connection StatusReason:" << connectionStatusReason; connectionStatusChanged = true; } if (connectionStatusChanged) { parent->notify("connectionStatus"); parent->notify("connectionStatusReason"); } if (props.contains(QLatin1String("ConnectionError")) && connectionError != qdbus_cast( props[QLatin1String("ConnectionError")])) { connectionError = qdbus_cast( props[QLatin1String("ConnectionError")]); debug() << " Connection Error:" << connectionError; connectionStatusChanged = true; } if (props.contains(QLatin1String("ConnectionErrorDetails")) && connectionErrorDetails.allDetails() != qdbus_cast( props[QLatin1String("ConnectionErrorDetails")])) { connectionErrorDetails = Connection::ErrorDetails(qdbus_cast( props[QLatin1String("ConnectionErrorDetails")])); debug() << " Connection Error Details:" << connectionErrorDetails.allDetails(); connectionStatusChanged = true; } if (connectionStatusChanged) { /* Something other than status changed, let's not emit connectionStatusChanged * and keep the error/errorDetails, for the next interaction. * It may happen if ConnectionError changes and in another property * change the status changes to Disconnected, so we use the error * previously signalled. If the status changes to something other * than Disconnected later, the error is cleared. */ if (oldConnectionStatus != connectionStatus) { /* We don't signal error for status other than Disconnected */ if (connectionStatus != ConnectionStatusDisconnected) { connectionError = QString(); connectionErrorDetails = Connection::ErrorDetails(); } else if (connectionError.isEmpty()) { connectionError = ConnectionHelper::statusReasonToErrorName( connectionStatusReason, oldConnectionStatus); } checkCapabilitiesChanged(profileChanged); emit parent->connectionStatusChanged(connectionStatus); parent->notify("connectionError"); parent->notify("connectionErrorDetails"); } else { connectionStatusChanged = false; } } } if (!connectionStatusChanged && profileChanged) { checkCapabilitiesChanged(profileChanged); } } void Account::Private::retrieveAvatar() { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( parent->mPriv->properties->Get( TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR, QLatin1String("Avatar")), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotAvatar(QDBusPendingCallWatcher*))); } bool Account::Private::processConnQueue() { while (!connObjPathQueue.isEmpty()) { QString path = connObjPathQueue.head(); if (path.isEmpty()) { if (!connection.isNull()) { debug() << "Dropping connection for account" << parent->objectPath(); connection.reset(); emit parent->connectionChanged(connection); parent->notify("connection"); parent->notify("connectionObjectPath"); } connObjPathQueue.dequeue(); } else { debug() << "Building connection" << path << "for account" << parent->objectPath(); if (connection && connection->objectPath() == path) { debug() << " Connection already built"; connObjPathQueue.dequeue(); continue; } QString busName = path.mid(1).replace(QLatin1String("/"), QLatin1String(".")); parent->connect(connFactory->proxy(busName, path, chanFactory, contactFactory), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onConnectionBuilt(Tp::PendingOperation*))); // No dequeue here, but only in onConnectionBuilt, so we will queue future changes return false; // Only move on to the next paths when that build finishes } } return true; } void Account::onDispatcherIntrospected(Tp::PendingOperation *op) { if (!mPriv->dispatcherContext->introspected) { Tp::PendingVariant *pv = static_cast(op); Q_ASSERT(pv != NULL); // Only the first Account for a given dispatcher will enter this branch, and will // immediately make further created accounts skip the whole waiting for CD to get // introspected part entirely mPriv->dispatcherContext->introspected = true; if (pv->isValid()) { mPriv->dispatcherContext->supportsHints = qdbus_cast(pv->result()); debug() << "Discovered channel dispatcher support for request hints: " << mPriv->dispatcherContext->supportsHints; } else { if (pv->errorName() == TP_QT_ERROR_NOT_IMPLEMENTED) { debug() << "Channel Dispatcher does not implement support for request hints"; } else { warning() << "(Too old?) Channel Dispatcher failed to tell us whether" << "it supports request hints, assuming it doesn't:" << pv->errorName() << ':' << pv->errorMessage(); } mPriv->dispatcherContext->supportsHints = false; } } debug() << "Calling Properties::GetAll(Account) on " << objectPath(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( mPriv->properties->GetAll( TP_QT_IFACE_ACCOUNT), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotMainProperties(QDBusPendingCallWatcher*))); } void Account::gotMainProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got reply to Properties.GetAll(Account) for" << objectPath(); mPriv->updateProperties(reply.value()); mPriv->readinessHelper->setInterfaces(interfaces()); mPriv->mayFinishCore = true; if (mPriv->connObjPathQueue.isEmpty()) { debug() << "Account basic functionality is ready"; mPriv->coreFinished = true; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { debug() << "Deferring finishing Account::FeatureCore until the connection is built"; } } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); warning().nospace() << "GetAll(Account) failed: " << reply.error().name() << ": " << reply.error().message(); } watcher->deleteLater(); } void Account::gotAvatar(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got reply to GetAvatar(Account)"; mPriv->avatar = qdbus_cast(reply); // It could be in either of actual or missing from the first time in corner cases like the // object going away, so let's be prepared for both (only checking for actualFeatures here // actually used to trigger a rare bug) // // Anyway, the idea is to not do setIntrospectCompleted twice if (!mPriv->readinessHelper->actualFeatures().contains(FeatureAvatar) && !mPriv->readinessHelper->missingFeatures().contains(FeatureAvatar)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureAvatar, true); } emit avatarChanged(mPriv->avatar); notify("avatar"); } else { // check if the feature is already there, and for some reason retrieveAvatar // failed when called the second time if (!mPriv->readinessHelper->actualFeatures().contains(FeatureAvatar) && !mPriv->readinessHelper->missingFeatures().contains(FeatureAvatar)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureAvatar, false, reply.error()); } warning().nospace() << "GetAvatar(Account) failed: " << reply.error().name() << ": " << reply.error().message(); } watcher->deleteLater(); } void Account::onAvatarChanged() { debug() << "Avatar changed, retrieving it"; mPriv->retrieveAvatar(); } void Account::onConnectionManagerReady(PendingOperation *operation) { bool error = operation->isError(); if (!error) { error = !mPriv->cm->hasProtocol(mPriv->protocolName); } if (!error) { mPriv->readinessHelper->setIntrospectCompleted(FeatureProtocolInfo, true); } else { warning() << "Failed to find the protocol in the CM protocols for account" << objectPath(); mPriv->readinessHelper->setIntrospectCompleted(FeatureProtocolInfo, false, operation->errorName(), operation->errorMessage()); } } void Account::onConnectionReady(PendingOperation *op) { mPriv->checkCapabilitiesChanged(false); /* let's not fail if connection can't become ready, the caps will still * work, but return the CM caps instead. Also no need to call * setIntrospectCompleted if the feature was already set to complete once, * since this method will be called whenever the account connection * changes */ if (!isReady(FeatureCapabilities)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureCapabilities, true); } } void Account::onPropertyChanged(const QVariantMap &delta) { mPriv->updateProperties(delta); } void Account::onRemoved() { mPriv->valid = false; mPriv->enabled = false; invalidate(TP_QT_ERROR_OBJECT_REMOVED, QLatin1String("Account removed from AccountManager")); emit removed(); } void Account::onConnectionBuilt(PendingOperation *op) { PendingReady *readyOp = qobject_cast(op); Q_ASSERT(readyOp != NULL); if (op->isError()) { warning() << "Building connection" << mPriv->connObjPathQueue.head() << "failed with" << op->errorName() << "-" << op->errorMessage(); if (!mPriv->connection.isNull()) { mPriv->connection.reset(); emit connectionChanged(mPriv->connection); notify("connection"); notify("connectionObjectPath"); } } else { ConnectionPtr prevConn = mPriv->connection; QString prevConnPath = mPriv->connectionObjectPath(); mPriv->connection = ConnectionPtr::qObjectCast(readyOp->proxy()); Q_ASSERT(mPriv->connection); debug() << "Connection" << mPriv->connectionObjectPath() << "built for" << objectPath(); if (prevConn != mPriv->connection) { notify("connection"); emit connectionChanged(mPriv->connection); } if (prevConnPath != mPriv->connectionObjectPath()) { notify("connectionObjectPath"); } } mPriv->connObjPathQueue.dequeue(); if (mPriv->processConnQueue() && !mPriv->coreFinished && mPriv->mayFinishCore) { debug() << "Account" << objectPath() << "basic functionality is ready (connections built)"; mPriv->coreFinished = true; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } } /** * \fn void Account::removed() * * Emitted when this account is removed from the account manager it belonged. * * \sa remove(). */ /** * \fn void Account::validityChanged(bool validity) * * Emitted when the value of isValidAccount() changes. * * \param validity The new validity of this account. * \sa isValidAccount() */ /** * \fn void Account::stateChanged(bool state) * * Emitted when the value of isEnabled() changes. * * \param state The new state of this account. * \sa isEnabled() */ /** * \fn void Account::serviceNameChanged(const QString &serviceName) * * Emitted when the value of serviceName() changes. * * \param serviceName The new service name of this account. * \sa serviceName(), setServiceName() */ /** * \fn void Account::profileChanged(const Tp::ProfilePtr &profile) * * Emitted when the value of profile() changes. * * \param profile The new profile of this account. * \sa profile() */ /** * \fn void Account::displayNameChanged(const QString &displayName) * * Emitted when the value of displayName() changes. * * \param displayName The new display name of this account. * \sa displayName(), setDisplayName() */ /** * \fn void Account::iconNameChanged(const QString &iconName) * * Emitted when the value of iconName() changes. * * \param iconName The new icon name of this account. * \sa iconName(), setIconName() */ /** * \fn void Account::nicknameChanged(const QString &nickname) * * Emitted when the value of nickname() changes. * * \param nickname The new nickname of this account. * \sa nickname(), setNickname() */ /** * \fn void Account::normalizedNameChanged(const QString &normalizedName) * * Emitted when the value of normalizedName() changes. * * \param normalizedName The new normalized name of this account. * \sa normalizedName() */ /** * \fn void Account::capabilitiesChanged(const Tp::ConnectionCapabilities &capabilities) * * Emitted when the value of capabilities() changes. * * \param capabilities The new capabilities of this account. * \sa capabilities() */ /** * \fn void Account::connectsAutomaticallyPropertyChanged(bool connectsAutomatically) * * Emitted when the value of connectsAutomatically() changes. * * \param connectsAutomatically The new value of connects automatically property * of this account. * \sa isEnabled() */ /** * \fn void Account::firstOnline() * * Emitted when this account is first put online. * * \sa hasBeenOnline() */ /** * \fn void Account::parametersChanged(const QVariantMap ¶meters) * * Emitted when the value of parameters() changes. * * \param parameters The new parameters of this account. * \sa parameters() */ /** * \fn void Account::changingPresence(bool value) * * Emitted when the value of isChangingPresence() changes. * * \param value Whether this account's connection is changing presence. * \sa isChangingPresence() */ /** * \fn void Account::automaticPresenceChanged(const Tp::Presence &automaticPresence) * * Emitted when the value of automaticPresence() changes. * * \param automaticPresence The new value of automatic presence property of this * account. * \sa automaticPresence(), currentPresenceChanged() */ /** * \fn void Account::currentPresenceChanged(const Tp::Presence ¤tPresence) * * Emitted when the value of currentPresence() changes. * * \param currentPresence The new value of the current presence property of this * account. * \sa currentPresence() */ /** * \fn void Account::requestedPresenceChanged(const Tp::Presence &requestedPresence) * * Emitted when the value of requestedPresence() changes. * * \param requestedPresence The new value of the requested presence property of this * account. * \sa requestedPresence(), currentPresenceChanged() */ /** * \fn void Account::onlinenessChanged(bool online) * * Emitted when the value of isOnline() changes. * * \param online Whether this account is online. * \sa isOnline(), currentPresence() */ /** * \fn void Account::avatarChanged(const Tp::Avatar &avatar) * * Emitted when the value of avatar() changes. * * \param avatar The new avatar of this account. * \sa avatar() */ /** * \fn void Account::connectionStatusChanged(Tp::ConnectionStatus status) * * Emitted when the connection status changes. * * \param status The new status of this account connection. * \sa connectionStatus(), connectionStatusReason(), connectionError(), connectionErrorDetails(), * Connection::ErrorDetails */ /** * \fn void Account::connectionChanged(const Tp::ConnectionPtr &connection) * * Emitted when the value of connection() changes. * * The \a connection will have the features set in the ConnectionFactory used by this account ready * and the same channel and contact factories used by this account. * * \param connection A ConnectionPtr pointing to the new Connection object or a null ConnectionPtr * if there is no connection. * \sa connection() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/account.xml0000644000175100017520000000062412530423576022346 0ustar00kaffeinekaffeine00000000000000 Account interfaces telepathy-qt-0.9.6.1/TelepathyQt/message.cpp0000644000175100017520000005665112530423576022333 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/debug-internal.h" #include #include #include namespace Tp { namespace { QVariant valueFromPart(const MessagePartList &parts, uint index, const char *key) { return parts.at(index).value(QLatin1String(key)).variant(); } uint uintOrZeroFromPart(const MessagePartList &parts, uint index, const char *key) { return valueFromPart(parts, index, key).toUInt(); } QString stringOrEmptyFromPart(const MessagePartList &parts, uint index, const char *key) { QString s = valueFromPart(parts, index, key).toString(); if (s.isNull()) { s = QLatin1String(""); } return s; } bool booleanFromPart(const MessagePartList &parts, uint index, const char *key, bool assumeIfAbsent) { QVariant v = valueFromPart(parts, index, key); if (v.isValid() && v.type() == QVariant::Bool) { return v.toBool(); } return assumeIfAbsent; } MessagePartList partsFromPart(const MessagePartList &parts, uint index, const char *key) { return qdbus_cast(valueFromPart(parts, index, key)); } bool partContains(const MessagePartList &parts, uint index, const char *key) { return parts.at(index).contains(QLatin1String(key)); } } struct TP_QT_NO_EXPORT Message::Private : public QSharedData { Private(const MessagePartList &parts); ~Private(); uint senderHandle() const; QString senderId() const; uint pendingId() const; void clearSenderHandle(); MessagePartList parts; // if the Text interface says "non-text" we still only have the text, // because the interface can't tell us anything else... bool forceNonText; // for received messages only WeakPtr textChannel; ContactPtr sender; }; Message::Private::Private(const MessagePartList &parts) : parts(parts), forceNonText(false), sender(0) { } Message::Private::~Private() { } inline uint Message::Private::senderHandle() const { return uintOrZeroFromPart(parts, 0, "message-sender"); } inline QString Message::Private::senderId() const { return stringOrEmptyFromPart(parts, 0, "message-sender-id"); } inline uint Message::Private::pendingId() const { return uintOrZeroFromPart(parts, 0, "pending-message-id"); } void Message::Private::clearSenderHandle() { parts[0].remove(QLatin1String("message-sender")); } /** * \class Message * \ingroup clientchannel * \headerfile TelepathyQt/message.h * * \brief The Message class represents a Telepathy message in a TextChannel. * * This class is implicitly shared, like QString. */ /** * \internal Default constructor. */ Message::Message() : mPriv(new Private(MessagePartList())) { } /** * Construct a new Message object. * * \param parts The parts of a message as defined by the \telepathy_spec. * This list must have length at least 1. */ Message::Message(const MessagePartList &parts) : mPriv(new Private(parts)) { Q_ASSERT(parts.size() > 0); } /** * Construct a new Message object. * * \param timestamp The time the message was sent. * \param type The message type. * \param text The message body. */ Message::Message(uint timestamp, uint type, const QString &text) : mPriv(new Private(MessagePartList() << MessagePart() << MessagePart())) { mPriv->parts[0].insert(QLatin1String("message-sent"), QDBusVariant(static_cast(timestamp))); mPriv->parts[0].insert(QLatin1String("message-type"), QDBusVariant(type)); mPriv->parts[1].insert(QLatin1String("content-type"), QDBusVariant(QLatin1String("text/plain"))); mPriv->parts[1].insert(QLatin1String("content"), QDBusVariant(text)); } /** * Construct a new Message object. * * \param type The message type. * \param text The message body. */ Message::Message(ChannelTextMessageType type, const QString &text) : mPriv(new Private(MessagePartList() << MessagePart() << MessagePart())) { mPriv->parts[0].insert(QLatin1String("message-type"), QDBusVariant(static_cast(type))); mPriv->parts[1].insert(QLatin1String("content-type"), QDBusVariant(QLatin1String("text/plain"))); mPriv->parts[1].insert(QLatin1String("content"), QDBusVariant(text)); } /** * Copy constructor. */ Message::Message(const Message &other) : mPriv(other.mPriv) { } /** * Assignment operator. */ Message &Message::operator=(const Message &other) { if (this != &other) { mPriv = other.mPriv; } return *this; } /** * Equality operator. */ bool Message::operator==(const Message &other) const { return this->mPriv == other.mPriv; } /** * Class destructor. */ Message::~Message() { } /** * Return the time the message was sent, or QDateTime() if that time is * unknown. * * \return The timestamp as QDateTime. */ QDateTime Message::sent() const { // FIXME See http://bugs.freedesktop.org/show_bug.cgi?id=21690 uint stamp = valueFromPart(mPriv->parts, 0, "message-sent").toUInt(); if (stamp != 0) { return QDateTime::fromTime_t(stamp); } else { return QDateTime(); } } /** * Return the type of this message, or #ChannelTextMessageTypeNormal * if the type is not recognised. * * \return The type as #ChannelTextMessageType. */ ChannelTextMessageType Message::messageType() const { uint raw = valueFromPart(mPriv->parts, 0, "message-type").toUInt(); if (raw < static_cast(NUM_CHANNEL_TEXT_MESSAGE_TYPES)) { return ChannelTextMessageType(raw); } else { return ChannelTextMessageTypeNormal; } } /** * Return whether this message was truncated during delivery. * * \return \c true if truncated, \c false otherwise. */ bool Message::isTruncated() const { for (int i = 1; i < size(); i++) { if (booleanFromPart(mPriv->parts, i, "truncated", false)) { return true; } } return false; } /** * Return whether this message contains parts not representable as plain * text. * * \return \c true if it cannot completely be represented as plain text, \c false * otherwise. */ bool Message::hasNonTextContent() const { if (mPriv->forceNonText || size() <= 1 || isSpecificToDBusInterface()) { return true; } QSet texts; QSet textNeeded; for (int i = 1; i < size(); i++) { QString altGroup = stringOrEmptyFromPart(mPriv->parts, i, "alternative"); QString contentType = stringOrEmptyFromPart(mPriv->parts, i, "content-type"); if (contentType == QLatin1String("text/plain")) { if (!altGroup.isEmpty()) { // we can use this as an alternative for a non-text part // with the same altGroup texts << altGroup; } } else { QString alt = stringOrEmptyFromPart(mPriv->parts, i, "alternative"); if (altGroup.isEmpty()) { // we can't possibly rescue this part by using a text/plain // alternative, because it's not in any alternative group return true; } else { // maybe we'll find a text/plain alternative for this textNeeded << altGroup; } } } textNeeded -= texts; return !textNeeded.isEmpty(); } /** * Return the unique token identifying this message (e.g. the id attribute * for XMPP messages), or an empty string if there is no suitable token. * * \return The non-empty message identifier, or an empty string if none. */ QString Message::messageToken() const { return stringOrEmptyFromPart(mPriv->parts, 0, "message-token"); } /** * Return whether this message is specific to a D-Bus interface. This is * \c false in almost all cases. * * If this function returns \c true, the message is specific to the interface * indicated by dbusInterface(). Clients that don't understand that interface * should not display the message. However, if the client would acknowledge * an ordinary message, it must also acknowledge this interface-specific * message. * * \return \c true if dbusInterface() would return a non-empty string, \c false otherwise. * \sa dbusInterface() */ bool Message::isSpecificToDBusInterface() const { return !dbusInterface().isEmpty(); } /** * Return the D-Bus interface to which this message is specific, or an * empty string for normal messages. * * \return The D-Bus interface name, or an empty string. * \sa isSpecificToDBusInterface() */ QString Message::dbusInterface() const { return stringOrEmptyFromPart(mPriv->parts, 0, "interface"); } /** * Return the message body containing all "text/plain" parts. * * \return The body text. */ QString Message::text() const { // Alternative-groups for which we've already emitted an alternative QSet altGroupsUsed; QString text; for (int i = 1; i < size(); i++) { QString altGroup = stringOrEmptyFromPart(mPriv->parts, i, "alternative"); QString contentType = stringOrEmptyFromPart(mPriv->parts, i, "content-type"); if (contentType == QLatin1String("text/plain")) { if (!altGroup.isEmpty()) { if (altGroupsUsed.contains(altGroup)) { continue; } else { altGroupsUsed << altGroup; } } QVariant content = valueFromPart(mPriv->parts, i, "content"); if (content.type() == QVariant::String) { text += content.toString(); } else { // O RLY? debug() << "allegedly text/plain part wasn't"; } } } return text; } /** * Return the message's header part, as defined by the \telepathy_spec. * * This is provided for advanced clients that need to access * additional information not available through the normal Message API. * * \return The header as a MessagePart object. The same thing as part(0). */ MessagePart Message::header() const { return part(0); } /** * Return the number of parts in this message. * * \return 1 greater than the largest valid argument to part(). * \sa part(), parts() */ int Message::size() const { return mPriv->parts.size(); } /** * Return the message's part for \a index, as defined by the \telepathy_spec. * * This is provided for advanced clients that need to access * additional information not available through the normal Message API. * * \param index The part to access, which must be strictly less than size(); * part number 0 is the header, parts numbered 1 or greater * are the body of the message. * \return A MessagePart object. */ MessagePart Message::part(uint index) const { return mPriv->parts.at(index); } /** * Return the list of message parts forming this message. * * \return The list of MessagePart objects. */ MessagePartList Message::parts() const { return mPriv->parts; } /** * \class ReceivedMessage * \ingroup clientchannel * \headerfile TelepathyQt/message.h * * \brief The ReceivedMessage class is a subclass of Message, representing a * received message only. * * It contains additional information that's generally only * available on received messages. */ /** * \class ReceivedMessage::DeliveryDetails * \ingroup clientchannel * \headerfile TelepathyQt/message.h * * \brief The ReceivedMessage::DeliveryDetails class represents the details of a delivery report. */ struct TP_QT_NO_EXPORT ReceivedMessage::DeliveryDetails::Private : public QSharedData { Private(const MessagePartList &parts) : parts(parts) { } MessagePartList parts; }; /** * Default constructor. */ ReceivedMessage::DeliveryDetails::DeliveryDetails() { } /** * Copy constructor. */ ReceivedMessage::DeliveryDetails::DeliveryDetails(const DeliveryDetails &other) : mPriv(other.mPriv) { } /** * Construct a new ReceivedMessage::DeliveryDetails object. * * \param The message parts. */ ReceivedMessage::DeliveryDetails::DeliveryDetails(const MessagePartList &parts) : mPriv(new Private(parts)) { } /** * Class destructor. */ ReceivedMessage::DeliveryDetails::~DeliveryDetails() { } /** * Assignment operator. */ ReceivedMessage::DeliveryDetails &ReceivedMessage::DeliveryDetails::operator=( const DeliveryDetails &other) { this->mPriv = other.mPriv; return *this; } /** * Return the delivery status of a message. * * \return The delivery status as #DeliveryStatus. */ DeliveryStatus ReceivedMessage::DeliveryDetails::status() const { if (!isValid()) { return DeliveryStatusUnknown; } return static_cast(uintOrZeroFromPart(mPriv->parts, 0, "delivery-status")); } /** * Return whether this delivery report contains an identifier for the message to which it * refers. * * \return \c true if an original message token is known, \c false otherwise. * \sa originalToken() */ bool ReceivedMessage::DeliveryDetails::hasOriginalToken() const { if (!isValid()) { return false; } return partContains(mPriv->parts, 0, "delivery-token"); } /** * Return an identifier for the message to which this delivery report refers, or an empty string if * hasOriginalToken() returns \c false. * * Clients may match this against the token produced by the TextChannel::send() method and * TextChannel::messageSent() signal. A status report with no token could match any sent message, * and a sent message with an empty token could match any status report. * If multiple sent messages match, clients should use some reasonable heuristic. * * \return The message token if hasOriginalToken() returns \c true, an empty string otherwise. * \sa hasOriginalToken(). */ QString ReceivedMessage::DeliveryDetails::originalToken() const { if (!isValid()) { return QString(); } return stringOrEmptyFromPart(mPriv->parts, 0, "delivery-token"); } /** * Return whether the delivery of the message this delivery report refers to, failed. * * \return \c true if the message delivery failed, \c false otherwise. * \sa error() */ bool ReceivedMessage::DeliveryDetails::isError() const { if (!isValid()) { return false; } DeliveryStatus st(status()); return st == DeliveryStatusTemporarilyFailed || st == DeliveryStatusPermanentlyFailed; } /** * Return the reason for the delivery failure if known. * * \return The reason as #ChannelTextSendError. * \sa isError() */ ChannelTextSendError ReceivedMessage::DeliveryDetails::error() const { if (!isValid()) { return ChannelTextSendErrorUnknown; } return static_cast(uintOrZeroFromPart(mPriv->parts, 0, "delivery-error")); } /** * Return whether this delivery report contains a debugging information on why the message it refers * to could not be delivered. * * \return \c true if a debugging information is provided, \c false otherwise. * \sa debugMessage() */ bool ReceivedMessage::DeliveryDetails::hasDebugMessage() const { if (!isValid()) { return false; } return partContains(mPriv->parts, 0, "delivery-error-message"); } /** * Return the debugging information on why the message this delivery report refers to could not be * delivered. * * \return The debug string. * \sa hasDebugMessage() */ QString ReceivedMessage::DeliveryDetails::debugMessage() const { if (!isValid()) { return QString(); } return stringOrEmptyFromPart(mPriv->parts, 0, "delivery-error-message"); } /** * Return the reason for the delivery failure if known, specified as a * (possibly implementation-specific) D-Bus error. * * \return The D-Bus error string representing the error. */ QString ReceivedMessage::DeliveryDetails::dbusError() const { if (!isValid()) { return QString(); } QString ret = stringOrEmptyFromPart(mPriv->parts, 0, "delivery-dbus-error"); if (ret.isEmpty()) { switch (error()) { case ChannelTextSendErrorOffline: ret = TP_QT_ERROR_OFFLINE; break; case ChannelTextSendErrorInvalidContact: ret = TP_QT_ERROR_DOES_NOT_EXIST; break; case ChannelTextSendErrorPermissionDenied: ret = TP_QT_ERROR_PERMISSION_DENIED; break; case ChannelTextSendErrorTooLong: ret = TP_QT_ERROR_INVALID_ARGUMENT; break; case ChannelTextSendErrorNotImplemented: ret = TP_QT_ERROR_NOT_IMPLEMENTED; break; default: ret = TP_QT_ERROR_NOT_AVAILABLE; } } return ret; } /** * Return whether the message content for the message this delivery report refers to is known. * * \return \c true if the original message content is known, \c false otherwise. * \sa echoedMessage() */ bool ReceivedMessage::DeliveryDetails::hasEchoedMessage() const { if (!isValid()) { return false; } return partContains(mPriv->parts, 0, "delivery-echo"); } /** * Return the Message object for the message this delivery report refers to, omitted if the message * is unknown. * *
*
Rationale:
*
* Some protocols, like XMPP, echo the failing message back to the sender. This is sometimes the * only way to match it against the sent message, so we include it here. *
*
* * \return The Message object, or an empty Message object if hasEchoedMessage() * returns \c false. * \sa hasEchoedMessage() */ Message ReceivedMessage::DeliveryDetails::echoedMessage() const { if (!isValid()) { return Message(); } return Message(partsFromPart(mPriv->parts, 0, "delivery-echo")); } /** * \internal Default constructor. */ ReceivedMessage::ReceivedMessage() { } /** * Construct a new ReceivedMessage object. * * \param parts The parts of a message as defined by the \telepathy_spec. * This list must have length at least 1. * \param channel The channel owning this message. */ ReceivedMessage::ReceivedMessage(const MessagePartList &parts, const TextChannelPtr &channel) : Message(parts) { if (!mPriv->parts[0].contains(QLatin1String("message-received"))) { mPriv->parts[0].insert(QLatin1String("message-received"), QDBusVariant(static_cast( QDateTime::currentDateTime().toTime_t()))); } mPriv->textChannel = channel; } /** * Copy constructor. */ ReceivedMessage::ReceivedMessage(const ReceivedMessage &other) : Message(other) { } /** * Assignment operator. */ ReceivedMessage &ReceivedMessage::operator=(const ReceivedMessage &other) { if (this != &other) { mPriv = other.mPriv; } return *this; } /** * Class destructor. */ ReceivedMessage::~ReceivedMessage() { } /** * Return the time the message was received. * * \return The timestamp as QDateTime, or QDateTime() if unknown. */ QDateTime ReceivedMessage::received() const { // FIXME See http://bugs.freedesktop.org/show_bug.cgi?id=21690 uint stamp = valueFromPart(mPriv->parts, 0, "message-received").toUInt(); if (stamp != 0) { return QDateTime::fromTime_t(stamp); } else { return QDateTime(); } } /** * Return the contact who sent the message. * * \return A pointer to the Contact object. * \sa senderNickname() */ ContactPtr ReceivedMessage::sender() const { return mPriv->sender; } /** * Return the nickname chosen by the sender of the message, which can be different for each * message in a conversation. * * \return The nickname. * \sa sender() */ QString ReceivedMessage::senderNickname() const { QString ret = stringOrEmptyFromPart(mPriv->parts, 0, "sender-nickname"); if (ret.isEmpty() && mPriv->sender) { ret = mPriv->sender->alias(); } return ret; } /** * If this message replaces a previous message, return the value of * messageToken() for that previous message. Otherwise, return an empty string. * * For instance, a user interface could replace the superseded * message with this message, or grey out the superseded message. * * \return The message token of the superseded message or an empty string if none. */ QString ReceivedMessage::supersededToken() const { return stringOrEmptyFromPart(mPriv->parts, 0, "supersedes"); } /** * Return whether the incoming message was part of a replay of message * history. * * If \c true, loggers can use this to improve their heuristics for elimination * of duplicate messages (a simple, correct implementation would be to avoid * logging any message that has this flag). * * \return \c true if the scrollback flag is set, \c false otherwise. */ bool ReceivedMessage::isScrollback() const { return booleanFromPart(mPriv->parts, 0, "scrollback", false); } /** * Return whether the incoming message was seen in a previous channel during * the lifetime of the connection, but was not acknowledged before that * channel closed, causing the channel in which it now appears to open. * * If \c true, loggers should not log this message again. * * \return \c true if the rescued flag is set, \c false otherwise. */ bool ReceivedMessage::isRescued() const { return booleanFromPart(mPriv->parts, 0, "rescued", false); } /** * Return whether the incoming message is a delivery report. * * \return \c true if a delivery report, \c false otherwise. * \sa deliveryDetails() */ bool ReceivedMessage::isDeliveryReport() const { return messageType() == ChannelTextMessageTypeDeliveryReport; } /** * Return the details of a delivery report. * * This method should only be used if isDeliveryReport() returns \c true. * * \return The delivery report as a ReceivedMessage::DeliveryDetails object. * \sa isDeliveryReport() */ ReceivedMessage::DeliveryDetails ReceivedMessage::deliveryDetails() const { return DeliveryDetails(parts()); } /** * Return whether this message is from \a channel. * * \return \c true if the message is from \a channel, \c false otherwise. */ bool ReceivedMessage::isFromChannel(const TextChannelPtr &channel) const { return TextChannelPtr(mPriv->textChannel) == channel; } uint ReceivedMessage::pendingId() const { return mPriv->pendingId(); } uint ReceivedMessage::senderHandle() const { return mPriv->senderHandle(); } QString ReceivedMessage::senderId() const { return mPriv->senderId(); } void ReceivedMessage::setForceNonText() { mPriv->forceNonText = true; } void ReceivedMessage::clearSenderHandle() { mPriv->clearSenderHandle(); } void ReceivedMessage::setSender(const ContactPtr &sender) { mPriv->sender = sender; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/media-stream-handler.h0000644000175100017520000000337412530423576024331 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_media_stream_handler_h_HEADER_GUARD_ #define _TelepathyQt_media_stream_handler_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif /** * \addtogroup clientsideproxies Client-side proxies * * Proxy objects representing remote service objects accessed via D-Bus. * * In addition to providing direct access to methods, signals and properties * exported by the remote objects, some of these proxies offer features like * automatic inspection of remote object capabilities, property tracking, * backwards compatibility helpers for older services and other utilities. */ /** * \defgroup clientmstrh Media stream handler proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy MediaStreamHandler objects. */ #include #endif telepathy-qt-0.9.6.1/TelepathyQt/message-content-part.cpp0000644000175100017520000000462112530423576024735 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { struct TP_QT_NO_EXPORT MessageContentPart::Private : public QSharedData { Private(const MessagePart &mp) : mp(mp) {} MessagePart mp; }; /** * \class MessageContentPart * \ingroup wrappers * \headerfile TelepathyQt/message-content-part.h * * \brief The MessageContentPart class represents a Telepathy message part. */ MessageContentPart::MessageContentPart() { } MessageContentPart::MessageContentPart(const MessagePart &mp) : mPriv(new Private(mp)) { } MessageContentPart::MessageContentPart(const MessageContentPart &other) : mPriv(other.mPriv) { } MessageContentPart::~MessageContentPart() { } MessageContentPart &MessageContentPart::operator=(const MessageContentPart &other) { this->mPriv = other.mPriv; return *this; } bool MessageContentPart::operator==(const MessageContentPart &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return true; } return false; } return mPriv->mp == other.mPriv->mp; } MessagePart MessageContentPart::barePart() const { return isValid() ? mPriv->mp : MessagePart(); } /** * \class MessageContentPartList * \ingroup wrappers * \headerfile TelepathyQt/message-content-part.h * * \brief The MessageContentPartList class represents a list of * MessageContentPart. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceClientTypesInterface0000644000175100017520000000044612530423576030042 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceClientTypesInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceClientTypesInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingStringList0000644000175100017520000000040312530423576023515 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingStringList_HEADER_GUARD_ #define _TelepathyQt_PendingStringList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelClassFeatures0000644000175100017520000000041412530423576024145 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelClassFeatures_HEADER_GUARD_ #define _TelepathyQt_ChannelClassFeatures_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/client-registrar-internal.h0000644000175100017520000002724212530423576025436 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_client_registrar_internal_h_HEADER_GUARD_ #define _TelepathyQt_client_registrar_internal_h_HEADER_GUARD_ #include #include #include #include #include #include #include "TelepathyQt/fake-handler-manager-internal.h" namespace Tp { class PendingOperation; class TP_QT_NO_EXPORT ClientAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Client") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" "") Q_PROPERTY(QStringList Interfaces READ Interfaces) public: ClientAdaptor(ClientRegistrar *registrar, const QStringList &interfaces, QObject *parent); virtual ~ClientAdaptor(); inline const ClientRegistrar *registrar() const { return mRegistrar; } public: // Properties inline QStringList Interfaces() const { return mInterfaces; } private: ClientRegistrar *mRegistrar; QStringList mInterfaces; }; class TP_QT_NO_EXPORT ClientObserverAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Client.Observer") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(Tp::ChannelClassList ObserverChannelFilter READ ObserverChannelFilter) Q_PROPERTY(bool Recover READ Recover) public: ClientObserverAdaptor(ClientRegistrar *registrar, AbstractClientObserver *client, QObject *parent); virtual ~ClientObserverAdaptor(); inline const ClientRegistrar *registrar() const { return mRegistrar; } public: // Properties inline Tp::ChannelClassList ObserverChannelFilter() const { return mClient->observerFilter().bareClasses(); } inline bool Recover() const { return mClient->shouldRecover(); } public Q_SLOTS: // Methods void ObserveChannels(const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const Tp::ObjectPathList &requestsSatisfied, const QVariantMap &observerInfo, const QDBusMessage &message); private Q_SLOTS: void onReadyOpFinished(Tp::PendingOperation *); private: struct InvocationData : RefCounted { InvocationData() : readyOp(0) {} PendingOperation *readyOp; QString error, message; MethodInvocationContextPtr<> ctx; AccountPtr acc; ConnectionPtr conn; QList chans; ChannelDispatchOperationPtr dispatchOp; QList chanReqs; AbstractClientObserver::ObserverInfo observerInfo; }; QLinkedList > mInvocations; ClientRegistrar *mRegistrar; QDBusConnection mBus; AbstractClientObserver *mClient; }; class TP_QT_NO_EXPORT ClientApproverAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Client.Approver") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(Tp::ChannelClassList ApproverChannelFilter READ ApproverChannelFilter) public: ClientApproverAdaptor(ClientRegistrar *registrar, AbstractClientApprover *client, QObject *parent); virtual ~ClientApproverAdaptor(); inline const ClientRegistrar *registrar() const { return mRegistrar; } public: // Properties inline Tp::ChannelClassList ApproverChannelFilter() const { return mClient->approverFilter().bareClasses(); } public Q_SLOTS: // Methods void AddDispatchOperation(const Tp::ChannelDetailsList &channels, const QDBusObjectPath &dispatchOperation, const QVariantMap &properties, const QDBusMessage &message); private Q_SLOTS: void onReadyOpFinished(Tp::PendingOperation *); private: struct InvocationData : RefCounted { InvocationData() : readyOp(0) {} PendingOperation *readyOp; QString error, message; MethodInvocationContextPtr<> ctx; QList chans; ChannelDispatchOperationPtr dispatchOp; }; QLinkedList > mInvocations; private: ClientRegistrar *mRegistrar; QDBusConnection mBus; AbstractClientApprover *mClient; }; class TP_QT_NO_EXPORT ClientHandlerAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Client.Handler") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") Q_PROPERTY(Tp::ChannelClassList HandlerChannelFilter READ HandlerChannelFilter) Q_PROPERTY(bool BypassApproval READ BypassApproval) Q_PROPERTY(QStringList Capabilities READ Capabilities) Q_PROPERTY(Tp::ObjectPathList HandledChannels READ HandledChannels) public: ClientHandlerAdaptor(ClientRegistrar *registrar, AbstractClientHandler *client, QObject *parent); virtual ~ClientHandlerAdaptor(); inline const ClientRegistrar *registrar() const { return mRegistrar; } public: // Properties inline Tp::ChannelClassList HandlerChannelFilter() const { return mClient->handlerFilter().bareClasses(); } inline bool BypassApproval() const { return mClient->bypassApproval(); } inline QStringList Capabilities() const { return mClient->handlerCapabilities().allTokens(); } inline Tp::ObjectPathList HandledChannels() const { return FakeHandlerManager::instance()->handledChannels(mBus); } public Q_SLOTS: // Methods void HandleChannels(const QDBusObjectPath &account, const QDBusObjectPath &connection, const Tp::ChannelDetailsList &channels, const Tp::ObjectPathList &requestsSatisfied, qulonglong userActionTime, const QVariantMap &handlerInfo, const QDBusMessage &message); private Q_SLOTS: void onReadyOpFinished(Tp::PendingOperation *); private: struct InvocationData : RefCounted { InvocationData() : readyOp(0) {} PendingOperation *readyOp; QString error, message; MethodInvocationContextPtr<> ctx; AccountPtr acc; ConnectionPtr conn; QList chans; QList chanReqs; QDateTime time; AbstractClientHandler::HandlerInfo handlerInfo; }; QLinkedList > mInvocations; private: static void onContextFinished(const MethodInvocationContextPtr<> &context, const QList &channels, ClientHandlerAdaptor *self); ClientRegistrar *mRegistrar; QDBusConnection mBus; AbstractClientHandler *mClient; static QHash, QList > mAdaptorsForConnection; }; class TP_QT_NO_EXPORT ClientHandlerRequestsAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Telepathy.Client.Interface.Requests") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: ClientHandlerRequestsAdaptor(ClientRegistrar *registrar, AbstractClientHandler *client, QObject *parent); virtual ~ClientHandlerRequestsAdaptor(); inline const ClientRegistrar *registrar() const { return mRegistrar; } public Q_SLOTS: // Methods void AddRequest(const QDBusObjectPath &request, const QVariantMap &requestProperties, const QDBusMessage &message); void RemoveRequest(const QDBusObjectPath &request, const QString &errorName, const QString &errorMessage, const QDBusMessage &message); private: ClientRegistrar *mRegistrar; QDBusConnection mBus; AbstractClientHandler *mClient; }; } // Tp Q_DECLARE_METATYPE(Tp::ClientAdaptor*) Q_DECLARE_METATYPE(Tp::ClientApproverAdaptor*) Q_DECLARE_METATYPE(Tp::ClientHandlerAdaptor*) Q_DECLARE_METATYPE(Tp::ClientHandlerRequestsAdaptor*) Q_DECLARE_METATYPE(Tp::ClientObserverAdaptor*) #endif telepathy-qt-0.9.6.1/TelepathyQt/AbstractClient0000644000175100017520000000037112530423576023014 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractClient_HEADER_GUARD_ #define _TelepathyQt_AbstractClient_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceChatStateInterface0000644000175100017520000000043112530423576026722 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceChatStateInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceChatStateInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceFileTransferMetadataInterface0000644000175100017520000000045712530423576031077 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceFileTransferMetadataInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceFileTransferMetadataInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Object0000644000175100017520000000034012530423576021314 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Object_HEADER_GUARD_ #define _TelepathyQt_Object_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeContactSearchInterface0000644000175100017520000000042712530423576026611 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeContactSearchInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeContactSearchInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/avatar.cpp0000644000175100017520000000733712530423576022162 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include namespace Tp { /** * \class AvatarData * \ingroup wrappers * \headerfile TelepathyQt/avatar.h * * \brief The AvatarData class represents a Telepathy avatar. */ struct TP_QT_NO_EXPORT AvatarSpec::Private : public QSharedData { Private(const QStringList &supportedMimeTypes, uint minHeight, uint maxHeight, uint recommendedHeight, uint minWidth, uint maxWidth, uint recommendedWidth, uint maxBytes) : supportedMimeTypes(supportedMimeTypes), minHeight(minHeight), maxHeight(maxHeight), recommendedHeight(recommendedHeight), minWidth(minWidth), maxWidth(maxWidth), recommendedWidth(recommendedWidth), maxBytes(maxBytes) { } QStringList supportedMimeTypes; uint minHeight; uint maxHeight; uint recommendedHeight; uint minWidth; uint maxWidth; uint recommendedWidth; uint maxBytes; }; /** * \class AvatarSpec * \ingroup wrappers * \headerfile TelepathyQt/avatar.h * * \brief The AvatarSpec class represents a Telepathy avatar information * supported by a protocol. */ AvatarSpec::AvatarSpec() { } AvatarSpec::AvatarSpec(const QStringList &supportedMimeTypes, uint minHeight, uint maxHeight, uint recommendedHeight, uint minWidth, uint maxWidth, uint recommendedWidth, uint maxBytes) : mPriv(new Private(supportedMimeTypes, minHeight, maxHeight, recommendedHeight, minWidth, maxWidth, recommendedWidth, maxBytes)) { } AvatarSpec::AvatarSpec(const AvatarSpec &other) : mPriv(other.mPriv) { } AvatarSpec::~AvatarSpec() { } AvatarSpec &AvatarSpec::operator=(const AvatarSpec &other) { this->mPriv = other.mPriv; return *this; } QStringList AvatarSpec::supportedMimeTypes() const { if (!isValid()) { return QStringList(); } return mPriv->supportedMimeTypes; } uint AvatarSpec::minimumHeight() const { if (!isValid()) { return 0; } return mPriv->minHeight; } uint AvatarSpec::maximumHeight() const { if (!isValid()) { return 0; } return mPriv->maxHeight; } uint AvatarSpec::recommendedHeight() const { if (!isValid()) { return 0; } return mPriv->recommendedHeight; } uint AvatarSpec::minimumWidth() const { if (!isValid()) { return 0; } return mPriv->minWidth; } uint AvatarSpec::maximumWidth() const { if (!isValid()) { return 0; } return mPriv->maxWidth; } uint AvatarSpec::recommendedWidth() const { if (!isValid()) { return 0; } return mPriv->recommendedWidth; } uint AvatarSpec::maximumBytes() const { if (!isValid()) { return 0; } return mPriv->maxBytes; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/PendingVoid0000644000175100017520000000037512530423576022324 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingVoid_HEADER_GUARD_ #define _TelepathyQt_PendingVoid_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-captchas.cpp0000644000175100017520000003232012530423576024102 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/_gen/pending-captchas.moc.hpp" #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingCaptchas::Private { Private(PendingCaptchas *parent); ~Private(); CaptchaAuthentication::ChallengeType stringToChallengeType(const QString &string) const; void appendCaptchaResult(const QString &mimeType, const QString &label, const QByteArray &data, CaptchaAuthentication::ChallengeType type, uint id); // Public object PendingCaptchas *parent; CaptchaAuthentication::ChallengeTypes preferredTypes; QStringList preferredMimeTypes; bool multipleRequired; QList captchas; int captchasLeft; CaptchaAuthenticationPtr captchaAuthentication; ChannelPtr channel; }; PendingCaptchas::Private::Private(PendingCaptchas *parent) : parent(parent) { } PendingCaptchas::Private::~Private() { } CaptchaAuthentication::ChallengeType PendingCaptchas::Private::stringToChallengeType(const QString &string) const { if (string == QLatin1String("audio_recog")) { return CaptchaAuthentication::AudioRecognitionChallenge; } else if (string == QLatin1String("ocr")) { return CaptchaAuthentication::OCRChallenge; } else if (string == QLatin1String("picture_q")) { return CaptchaAuthentication::PictureQuestionChallenge; } else if (string == QLatin1String("picture_recog")) { return CaptchaAuthentication::PictureRecognitionChallenge; } else if (string == QLatin1String("qa")) { return CaptchaAuthentication::TextQuestionChallenge; } else if (string == QLatin1String("speech_q")) { return CaptchaAuthentication::SpeechQuestionChallenge; } else if (string == QLatin1String("speech_recog")) { return CaptchaAuthentication::SpeechRecognitionChallenge; } else if (string == QLatin1String("video_q")) { return CaptchaAuthentication::VideoQuestionChallenge; } else if (string == QLatin1String("video_recog")) { return CaptchaAuthentication::VideoRecognitionChallenge; } // Not really making sense... return CaptchaAuthentication::UnknownChallenge; } void PendingCaptchas::Private::appendCaptchaResult(const QString &mimeType, const QString &label, const QByteArray &data, CaptchaAuthentication::ChallengeType type, uint id) { // Add to the list Captcha captchaItem(mimeType, label, data, type, id); captchas.append(captchaItem); --captchasLeft; if (!captchasLeft) { parent->setFinished(); } } /** * \class PendingCaptchas * \ingroup client * \headerfile TelepathyQt/pending-captchas.h * * \brief The PendingCaptchas class represents an asynchronous * operation for retrieving a captcha challenge from a connection manager. * * See \ref async_model */ PendingCaptchas::PendingCaptchas( const QDBusPendingCall &call, const QStringList &preferredMimeTypes, CaptchaAuthentication::ChallengeTypes preferredTypes, const CaptchaAuthenticationPtr &captchaAuthentication) : PendingOperation(captchaAuthentication), mPriv(new Private(this)) { mPriv->captchaAuthentication = captchaAuthentication; mPriv->channel = captchaAuthentication->channel(); mPriv->preferredMimeTypes = preferredMimeTypes; mPriv->preferredTypes = preferredTypes; /* keep track of channel invalidation */ connect(mPriv->channel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated(Tp::DBusProxy*,QString,QString))); connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(onGetCaptchasWatcherFinished(QDBusPendingCallWatcher*))); } PendingCaptchas::PendingCaptchas( const QString& errorName, const QString& errorMessage, const CaptchaAuthenticationPtr &captchaAuthentication) : PendingOperation(captchaAuthentication), mPriv(new PendingCaptchas::Private(this)) { warning() << "PendingCaptchas created with instant failure"; setFinishedWithError(errorName, errorMessage); } /** * Class destructor. */ PendingCaptchas::~PendingCaptchas() { delete mPriv; } void PendingCaptchas::onChannelInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { Q_UNUSED(proxy); if (isFinished()) { return; } warning().nospace() << "PendingCaptchas failed because channel was invalidated with " << errorName << ": " << errorMessage; setFinishedWithError(errorName, errorMessage); } void PendingCaptchas::onGetCaptchasWatcherFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { debug().nospace() << "PendingDBusCall failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); watcher->deleteLater(); return; } debug() << "Got reply to PendingDBusCall"; Tp::CaptchaInfoList list = qdbus_cast(reply.argumentAt(0)); int howManyRequired = reply.argumentAt(1).toUInt(); // Compute which captchas are required QList > finalList; foreach (const Tp::CaptchaInfo &info, list) { // First of all, mimetype check QString mimeType; if (info.availableMIMETypes.isEmpty()) { // If it's one of the types which might not have a payload, go for it CaptchaAuthentication::ChallengeTypes noPayloadChallenges( CaptchaAuthentication::TextQuestionChallenge | CaptchaAuthentication::UnknownChallenge); if (mPriv->stringToChallengeType(info.type) & noPayloadChallenges) { // Ok, move on } else { // In this case, there's something wrong warning() << "Got a captcha with type " << info.type << " which does not " "expose any available mimetype for its payload. Something might be " "wrong with the connection manager."; continue; } } else if (mPriv->preferredMimeTypes.isEmpty()) { // No preference, let's take the first of the list mimeType = info.availableMIMETypes.first(); } else { QSet supportedMimeTypes = info.availableMIMETypes.toSet().intersect( mPriv->preferredMimeTypes.toSet()); if (supportedMimeTypes.isEmpty()) { // Apparently our handler does not support any of this captcha's mimetypes, skip continue; } // Ok, use the first one mimeType = *supportedMimeTypes.constBegin(); } // If it's required, easy if (info.flags & CaptchaFlagRequired) { finalList.append(qMakePair(info, mimeType)); continue; } // Otherwise, let's see if the mimetype matches if (mPriv->preferredTypes & mPriv->stringToChallengeType(info.type)) { finalList.append(qMakePair(info, mimeType)); } if (finalList.size() == howManyRequired) { break; } } if (finalList.size() != howManyRequired) { warning() << "No captchas available matching the specified preferences"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("No captchas matching the handler's request")); return; } // Now, get the infos for all the required captchas in our final list. mPriv->captchasLeft = finalList.size(); mPriv->multipleRequired = howManyRequired > 1 ? true : false; for (QList >::const_iterator i = finalList.constBegin(); i != finalList.constEnd(); ++i) { QString mimeType = (*i).second; Tp::CaptchaInfo captchaInfo = (*i).first; // If the captcha does not have a mimetype, we can add it straight if (mimeType.isEmpty()) { mPriv->appendCaptchaResult(mimeType, captchaInfo.label, QByteArray(), mPriv->stringToChallengeType(captchaInfo.type), captchaInfo.ID); continue; } QDBusPendingCall call = mPriv->channel->interface()->GetCaptchaData( captchaInfo.ID, mimeType); QDBusPendingCallWatcher *dataWatcher = new QDBusPendingCallWatcher(call); dataWatcher->setProperty("__Tp_Qt_CaptchaID", captchaInfo.ID); dataWatcher->setProperty("__Tp_Qt_CaptchaMimeType", mimeType); dataWatcher->setProperty("__Tp_Qt_CaptchaLabel", captchaInfo.label); dataWatcher->setProperty("__Tp_Qt_CaptchaType", mPriv->stringToChallengeType(captchaInfo.type)); connect(dataWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(onGetCaptchaDataWatcherFinished(QDBusPendingCallWatcher*))); } watcher->deleteLater(); } void PendingCaptchas::onGetCaptchaDataWatcherFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { debug().nospace() << "PendingDBusCall failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); watcher->deleteLater(); return; } debug() << "Got reply to PendingDBusCall"; // Add to the list mPriv->appendCaptchaResult(watcher->property("__Tp_Qt_CaptchaMimeType").toString(), watcher->property("__Tp_Qt_CaptchaLabel").toString(), reply.value(), static_cast( watcher->property("__Tp_Qt_CaptchaType").toUInt()), watcher->property("__Tp_Qt_CaptchaID").toUInt()); watcher->deleteLater(); } /** * Return the main captcha of the request. This captcha is guaranteed to be compatible * with any constraint specified in CaptchaAuthentication::requestCaptchas(). * * This is a convenience method which should be used when requiresMultipleCaptchas() * is false - otherwise, you should use captchaList. * * The returned Captcha can be answered through CaptchaAuthentication::answer() by * using its id. * * This method will return a meaningful value only if the operation was completed * successfully. * * \return The main captcha for the pending request. * \sa captchaList() * CaptchaAuthentication::requestCaptchas() * requiresMultipleCaptchas() * CaptchaAuthentication::answer() */ Captcha PendingCaptchas::captcha() const { if (!isFinished()) { return Captcha(); } return mPriv->captchas.first(); } /** * Return all the captchas of the request. These captchas are guaranteed to be compatible * with any constraint specified in CaptchaAuthentication::requestCaptchas(). * * If requiresMultipleCaptchas() is false, you probably want to use the convenience method * captcha() instead. * * The returned Captchas can be answered through CaptchaAuthentication::answer() by * using their ids. * * This method will return a meaningful value only if the operation was completed * successfully. * * \return All the captchas for the pending request. * \sa captcha() * CaptchaAuthentication::requestCaptchas() * requiresMultipleCaptchas() * CaptchaAuthentication::answer() */ QList PendingCaptchas::captchaList() const { if (!isFinished()) { return QList(); } return mPriv->captchas; } /** * Return whether this request requires more than one captcha to be answered or not. * * This method should always be checked before answering to find out what the * connection manager expects. Depending on the result, you might want to use the * result from captcha() if just a single answer is required, or from captchaList() * otherwise. * * This method will return a meaningful value only if the operation was completed * successfully. * * \return The main captcha for the pending request. * \sa captcha() * captchaList() */ bool PendingCaptchas::requiresMultipleCaptchas() const { return mPriv->multipleRequired; } } telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatcher.h0000644000175100017520000000221712530423576024075 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_dispatcher_h_HEADER_GUARD_ #define _TelepathyQt_channel_dispatcher_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceAnonymityInterface0000644000175100017520000000043112530423576027031 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceAnonymityInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceAnonymityInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeServerAuthenticationInterface0000644000175100017520000000044512530423576030236 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeServerAuthenticationInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeServerAuthenticationInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ReadyObject0000644000175100017520000000036012530423576022303 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ReadyObject_HEADER_GUARD_ #define _TelepathyQt_ReadyObject_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-string-list.h0000644000175100017520000000334712530423576024247 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_string_list_h_HEADER_GUARD_ #define _TelepathyQt_pending_string_list_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT PendingStringList : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingStringList); public: PendingStringList(const SharedPtr &object); PendingStringList(QDBusPendingCall call, const SharedPtr &object); ~PendingStringList(); QStringList result() const; protected: void setResult(const QStringList &result); private Q_SLOTS: TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher *watcher); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-handles.cpp0000644000175100017520000003761412530423576023745 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-handles.moc.hpp" #include #include #include "TelepathyQt/debug-internal.h" namespace Tp { struct TP_QT_NO_EXPORT PendingHandles::Private { HandleType handleType; bool isRequest; QStringList namesRequested; UIntList handlesToReference; ReferencedHandles handles; ReferencedHandles alreadyHeld; UIntList invalidHandles; QStringList validNames; QHash > invalidNames; // one to one requests (ids) QHash handlesForWatchers; QHash idsForWatchers; QHash handlesForIds; int requestsFinished; }; /** * \class PendingHandles * \ingroup clientconn * \headerfile TelepathyQt/pending-handles.h * * \brief The PendingHandles class represents the parameters of and the reply to * an asynchronous handle request/hold. * * Instances of this class cannot be constructed directly; the only way to get * one is to use Connection::requestHandles() or Connection::referenceHandles(). * * See \ref async_model */ PendingHandles::PendingHandles(const ConnectionPtr &connection, HandleType handleType, const QStringList &names) : PendingOperation(connection), mPriv(new Private) { debug() << "PendingHandles(request)"; mPriv->handleType = handleType; mPriv->isRequest = true; mPriv->namesRequested = names; mPriv->requestsFinished = 0; // try to request all handles at once QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( connection->baseInterface()->RequestHandles(mPriv->handleType, names), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onRequestHandlesFinished(QDBusPendingCallWatcher*))); } PendingHandles::PendingHandles(const ConnectionPtr &connection, HandleType handleType, const UIntList &handles, const UIntList &alreadyHeld, const UIntList ¬YetHeld) : PendingOperation(connection), mPriv(new Private) { debug() << "PendingHandles(reference)"; mPriv->handleType = handleType; mPriv->isRequest = false; mPriv->handlesToReference = handles; mPriv->alreadyHeld = ReferencedHandles(connection, mPriv->handleType, alreadyHeld); mPriv->requestsFinished = 0; if (notYetHeld.isEmpty()) { debug() << " All handles already held, finishing up instantly"; mPriv->handles = mPriv->alreadyHeld; setFinished(); } else { debug() << " Calling HoldHandles"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( connection->baseInterface()->HoldHandles(mPriv->handleType, notYetHeld), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onHoldHandlesFinished(QDBusPendingCallWatcher*))); } } PendingHandles::PendingHandles(const QString &errorName, const QString &errorMessage) : PendingOperation(ConnectionPtr()), mPriv(new Private) { setFinishedWithError(errorName, errorMessage); } /** * Class destructor. */ PendingHandles::~PendingHandles() { delete mPriv; } /** * Return the connection through which the operation was made. * * \return A pointer to the Connection object. */ ConnectionPtr PendingHandles::connection() const { return ConnectionPtr(qobject_cast((Connection*) object().data())); } /** * Return the handle type specified in the operation. * * \return The target handle type as #HandleType. */ HandleType PendingHandles::handleType() const { return mPriv->handleType; } /** * Return whether the operation was a handle request (as opposed to a * reference of existing handles). * * \return \c true if the operation was a request (== !isReference()), \c false otherwise. * \sa isReference() */ bool PendingHandles::isRequest() const { return mPriv->isRequest; } /** * Return whether the operation was a handle reference (as opposed to a * request for new handles). * * \return \c true if the operation was a reference (== !isRequest()), \c false otherwise. * \sa isRequest() */ bool PendingHandles::isReference() const { return !mPriv->isRequest; } /** * If the operation was a request (as returned by isRequest()), returns the * names of the entities for which handles were requested for. Otherwise, * returns an empty list. * * \return Reference to a list of the names of the entities. */ const QStringList &PendingHandles::namesRequested() const { return mPriv->namesRequested; } QStringList PendingHandles::validNames() const { if (!isFinished()) { warning() << "PendingHandles::validNames called before finished"; return QStringList(); } else if (!isValid()) { warning() << "PendingHandles::validNames called when not valid"; return QStringList(); } return mPriv->validNames; } QHash > PendingHandles::invalidNames() const { if (!isFinished()) { warning() << "PendingHandles::invalidNames called before finished"; return QHash >(); } return mPriv->invalidNames; } /** * If the operation was a reference (as returned by isReference()), returns * the handles which were to be referenced. Otherwise, returns an empty * list. * * \return Reference to a list of the handles specified to be referenced. */ const UIntList &PendingHandles::handlesToReference() const { return mPriv->handlesToReference; } /** * Return the now-referenced handles resulting from the operation. If the * operation has not (yet) finished successfully (isFinished() returns * false), the return value is undefined. * * For requests of new handles, handles()[i] will be the handle * corresponding to the entity name namesToRequest()[i]. For * references of existing handles, handles()[i] == * handlesToReference()[i] will be true for any i. * * \return ReferencedHandles object containing the handles. */ ReferencedHandles PendingHandles::handles() const { if (!isFinished()) { warning() << "PendingHandles::handles() called before finished"; return ReferencedHandles(); } else if (!isValid()) { warning() << "PendingHandles::handles() called when not valid"; return ReferencedHandles(); } return mPriv->handles; } UIntList PendingHandles::invalidHandles() const { if (!isFinished()) { warning() << "PendingHandles::invalidHandles called before finished"; } return mPriv->invalidHandles; } void PendingHandles::onRequestHandlesFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { QDBusError error = reply.error(); if (error.name() != TP_QT_ERROR_INVALID_HANDLE && error.name() != TP_QT_ERROR_INVALID_ARGUMENT && error.name() != TP_QT_ERROR_NOT_AVAILABLE) { // do not fallback foreach (const QString &name, mPriv->namesRequested) { mPriv->invalidNames.insert(name, QPair(error.name(), error.message())); } setFinishedWithError(error); connection()->handleRequestLanded(mPriv->handleType); watcher->deleteLater(); return; } if (mPriv->namesRequested.size() == 1) { debug().nospace() << " Failure: error " << reply.error().name() << ": " << reply.error().message(); mPriv->invalidNames.insert(mPriv->namesRequested.first(), QPair(error.name(), error.message())); setFinished(); connection()->handleRequestLanded(mPriv->handleType); watcher->deleteLater(); return; } // try to request one handles at a time foreach (const QString &name, mPriv->namesRequested) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( connection()->baseInterface()->RequestHandles( mPriv->handleType, QStringList() << name), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onRequestHandlesFallbackFinished(QDBusPendingCallWatcher*))); mPriv->idsForWatchers.insert(watcher, name); } } else { debug() << "Received reply to RequestHandles"; mPriv->handles = ReferencedHandles(connection(), mPriv->handleType, reply.value()); mPriv->validNames.append(mPriv->namesRequested); setFinished(); connection()->handleRequestLanded(mPriv->handleType); } } void PendingHandles::onHoldHandlesFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; debug() << "Received reply to HoldHandles"; if (reply.isError()) { debug().nospace() << " Failure: error " << reply.error().name() << ": " << reply.error().message(); QDBusError error = reply.error(); if (error.name() != TP_QT_ERROR_INVALID_HANDLE && error.name() != TP_QT_ERROR_INVALID_ARGUMENT && error.name() != TP_QT_ERROR_NOT_AVAILABLE) { // do not fallback mPriv->invalidHandles = mPriv->handlesToReference; setFinishedWithError(error); watcher->deleteLater(); return; } if (mPriv->handlesToReference.size() == 1) { debug().nospace() << " Failure: error " << reply.error().name() << ": " << reply.error().message(); mPriv->invalidHandles = mPriv->handlesToReference; setFinished(); watcher->deleteLater(); return; } // try to request one handles at a time foreach (uint handle, mPriv->handlesToReference) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( connection()->baseInterface()->HoldHandles( mPriv->handleType, UIntList() << handle), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onHoldHandlesFallbackFinished(QDBusPendingCallWatcher*))); mPriv->handlesForWatchers.insert(watcher, handle); } } else { mPriv->handles = ReferencedHandles(connection(), mPriv->handleType, mPriv->handlesToReference); setFinished(); } watcher->deleteLater(); } void PendingHandles::onRequestHandlesFallbackFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; Q_ASSERT(mPriv->idsForWatchers.contains(watcher)); QString id = mPriv->idsForWatchers.value(watcher); debug() << "Received reply to RequestHandles(" << id << ")"; if (reply.isError()) { debug().nospace() << " Failure: error " << reply.error().name() << ": " << reply.error().message(); // if the error is disconnected for example, fail immediately QDBusError error = reply.error(); if (error.name() != TP_QT_ERROR_INVALID_HANDLE && error.name() != TP_QT_ERROR_INVALID_ARGUMENT && error.name() != TP_QT_ERROR_NOT_AVAILABLE) { foreach (const QString &name, mPriv->namesRequested) { mPriv->invalidNames.insert(name, QPair(error.name(), error.message())); } setFinishedWithError(error); connection()->handleRequestLanded(mPriv->handleType); watcher->deleteLater(); return; } mPriv->invalidNames.insert(id, QPair(reply.error().name(), reply.error().message())); } else { Q_ASSERT(reply.value().size() == 1); uint handle = reply.value().first(); mPriv->handlesForIds.insert(id, handle); } if (++mPriv->requestsFinished == mPriv->namesRequested.size()) { if (mPriv->handlesForIds.size() == 0) { // all requests failed setFinished(); } else { // all requests either failed or finished successfully // we need to return the handles in the same order as requested UIntList handles; foreach (const QString &name, mPriv->namesRequested) { if (!mPriv->invalidNames.contains(name)) { Q_ASSERT(mPriv->handlesForIds.contains(name)); handles.append(mPriv->handlesForIds.value(name)); mPriv->validNames.append(name); } } mPriv->handles = ReferencedHandles(connection(), mPriv->handleType, handles); setFinished(); } debug() << " namesRequested:" << mPriv->namesRequested; debug() << " invalidNames :" << mPriv->invalidNames; debug() << " validNames :" << mPriv->validNames; connection()->handleRequestLanded(mPriv->handleType); } watcher->deleteLater(); } void PendingHandles::onHoldHandlesFallbackFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; Q_ASSERT(mPriv->handlesForWatchers.contains(watcher)); uint handle = mPriv->handlesForWatchers.value(watcher); debug() << "Received reply to HoldHandles(" << handle << ")"; if (reply.isError()) { debug().nospace() << " Failure: error " << reply.error().name() << ": " << reply.error().message(); // if the error is disconnected for example, fail immediately QDBusError error = reply.error(); if (error.name() != TP_QT_ERROR_INVALID_HANDLE && error.name() != TP_QT_ERROR_INVALID_ARGUMENT && error.name() != TP_QT_ERROR_NOT_AVAILABLE) { mPriv->invalidHandles = mPriv->handlesToReference; setFinishedWithError(error); watcher->deleteLater(); return; } mPriv->invalidHandles.append(handle); } if (++mPriv->requestsFinished == mPriv->namesRequested.size()) { // we need to return the handles in the same order as requested UIntList handles; foreach (uint handle, mPriv->handlesToReference) { if (!mPriv->invalidHandles.contains(handle)) { handles.append(handle); } } if (handles.size() != 0) { mPriv->handles = ReferencedHandles(connection(), mPriv->handleType, handles); } setFinished(); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/contact-messenger.cpp0000644000175100017520000002136012530423576024315 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/contact-messenger.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/future-internal.h" #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ContactMessenger::Private { Private(ContactMessenger *parent, const AccountPtr &account, const QString &contactIdentifier) : parent(parent), account(account), contactIdentifier(contactIdentifier), cdMessagesInterface(0) { } PendingSendMessage *sendMessage(const Message &message, MessageSendingFlags flags); ContactMessenger *parent; AccountPtr account; QString contactIdentifier; SimpleTextObserverPtr observer; Tp::Client::ChannelDispatcherInterfaceMessages1Interface *cdMessagesInterface; }; PendingSendMessage *ContactMessenger::Private::sendMessage(const Message &message, MessageSendingFlags flags) { if (!cdMessagesInterface) { cdMessagesInterface = new Tp::Client::ChannelDispatcherInterfaceMessages1Interface( account->dbusConnection(), TP_QT_CHANNEL_DISPATCHER_BUS_NAME, TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH, parent); } PendingSendMessage *op = new PendingSendMessage(ContactMessengerPtr(parent), message); Tp::MessagePartList parts; foreach (const Tp::MessagePart &part, message.parts()) { parts << static_cast >(part); } connect(new QDBusPendingCallWatcher( cdMessagesInterface->SendMessage(QDBusObjectPath(account->objectPath()), contactIdentifier, parts, (uint) flags)), SIGNAL(finished(QDBusPendingCallWatcher*)), op, SLOT(onCDMessageSent(QDBusPendingCallWatcher*))); return op; } /** * \class ContactMessenger * \ingroup clientaccount * \headerfile TelepathyQt/contact-messenger.h * * \brief The ContactMessenger class provides an easy way to send text messages to a contact * and also track sent/receive text messages from the same contact. */ /** * Create a new ContactMessenger object. * * \param account The account this messenger is communicating with. * \param contact The contact this messenger is communicating with. * \return An ContactMessengerPtr object pointing to the newly created ContactMessenger object, * or a null ContactMessengerPtr if \a contact is null. */ ContactMessengerPtr ContactMessenger::create(const AccountPtr &account, const ContactPtr &contact) { if (!contact) { warning() << "Contact used to create a ContactMessenger object must be " "valid"; return ContactMessengerPtr(); } return ContactMessengerPtr(new ContactMessenger(account, contact->id())); } /** * Create a new ContactMessenger object. * * \param account The account this messenger is communicating with. * \param contactIdentifier The identifier of the contact this messenger is communicating with. * \return An ContactMessengerPtr object pointing to the newly created ContactMessenger object, * or a null ContactMessengerPtr if \a contact is null. */ ContactMessengerPtr ContactMessenger::create(const AccountPtr &account, const QString &contactIdentifier) { if (contactIdentifier.isEmpty()) { warning() << "Contact identifier used to create a ContactMessenger object must be " "non-empty"; return ContactMessengerPtr(); } return ContactMessengerPtr(new ContactMessenger(account, contactIdentifier)); } /** * Construct a new ContactMessenger object. * * \param account The account this messenger is communicating with. * \param contactIdentifier The identifier of the contact this messenger is communicating with. */ ContactMessenger::ContactMessenger(const AccountPtr &account, const QString &contactIdentifier) : mPriv(new Private(this, account, contactIdentifier)) { mPriv->observer = SimpleTextObserver::create(account, contactIdentifier); connect(mPriv->observer.data(), SIGNAL(messageSent(Tp::Message,Tp::MessageSendingFlags,QString,Tp::TextChannelPtr)), SIGNAL(messageSent(Tp::Message,Tp::MessageSendingFlags,QString,Tp::TextChannelPtr))); connect(mPriv->observer.data(), SIGNAL(messageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr)), SIGNAL(messageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr))); } /** * Class destructor. */ ContactMessenger::~ContactMessenger() { delete mPriv; } /** * Return the account this messenger is communicating with. * * \return A pointer to the Account object. */ AccountPtr ContactMessenger::account() const { return mPriv->account; } /** * Return the identifier of the contact this messenger is communicating with. * * \return The identifier of the contact. */ QString ContactMessenger::contactIdentifier() const { return mPriv->contactIdentifier; } /** * Return the list of text chats currently being observed. * * \return A list of pointers to TextChannel objects. */ QList ContactMessenger::textChats() const { return mPriv->observer->textChats(); } /** * Send a message to the contact identified by contactIdentifier() using account(). * * Note that the return from this method isn't ordered in any sane way, meaning that * messageSent() can be signalled either before or after the returned PendingSendMessage object * finishes. * * \param text The message text. * \param type The message type. * \param flags The message flags. * \return A PendingSendMessage which will emit PendingSendMessage::finished * once the reply is received and that can be used to check whether sending the * message succeeded or not. */ PendingSendMessage *ContactMessenger::sendMessage(const QString &text, ChannelTextMessageType type, MessageSendingFlags flags) { Message message(type, text); return mPriv->sendMessage(message, flags); } /** * Send a message to the contact identified by contactIdentifier() using account(). * * Note that the return from this method isn't ordered in any sane way, meaning that * messageSent() can be signalled either before or after the returned PendingSendMessage object * finishes. * * \param parts The message parts. * \param flags The message flags. * \return A PendingSendMessage which will emit PendingSendMessage::finished * once the reply is received and that can be used to check whether sending the * message succeeded or not. */ PendingSendMessage *ContactMessenger::sendMessage(const MessageContentPartList &parts, MessageSendingFlags flags) { Message message(parts.bareParts()); return mPriv->sendMessage(message, flags); } /** * \fn void ContactMessenger::messageSent(const Tp::Message &message, * Tp::MessageSendingFlags flags, const QString &sentMessageToken, * const Tp::TextChannelPtr &channel); * * Emitted whenever a text message on account() is sent to the contact * identified by contactIdentifier(). * * \param message The message sent. * \param flags The flags of the message that was sent. * \param sentMessageToken The token of the message that was sent. * \param channel The channel from which the message was sent. */ /** * \fn void ContactMessenger::messageReceived(const Tp::ReceivedMessage &message, * const Tp::TextChannelPtr &channel); * * Emitted whenever a text message on account() is received from the contact * identified by contactIdentifier(). * * \param message The message received. * \param channel The channel from which the message was received. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/dbus-proxy.h0000644000175100017520000000654012530423576022460 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_proxy_h_HEADER_GUARD_ #define _TelepathyQt_dbus_proxy_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include class QDBusConnection; class QDBusError; namespace Tp { class TestBackdoors; class TP_QT_EXPORT DBusProxy : public Object, public ReadyObject { Q_OBJECT Q_DISABLE_COPY(DBusProxy) public: DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore); virtual ~DBusProxy(); QDBusConnection dbusConnection() const; QString busName() const; QString objectPath() const; bool isValid() const; QString invalidationReason() const; QString invalidationMessage() const; Q_SIGNALS: void invalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); protected: void setBusName(const QString &busName); void invalidate(const QString &reason, const QString &message); void invalidate(const QDBusError &error); private Q_SLOTS: TP_QT_NO_EXPORT void emitInvalidated(); private: friend class TestBackdoors; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT StatelessDBusProxy : public DBusProxy { Q_OBJECT Q_DISABLE_COPY(StatelessDBusProxy) public: StatelessDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore); virtual ~StatelessDBusProxy(); private: struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT StatefulDBusProxy : public DBusProxy { Q_OBJECT Q_DISABLE_COPY(StatefulDBusProxy) public: StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore); virtual ~StatefulDBusProxy(); static QString uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique); static QString uniqueNameFrom(const QDBusConnection &bus, const QString &wellKnownOrUnique, QString &error, QString &message); private Q_SLOTS: TP_QT_NO_EXPORT void onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelRequestHints0000644000175100017520000000040312530423576024035 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelRequestHints_HEADER_GUARD_ #define _TelepathyQt_ChannelRequestHints_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/simple-call-observer.h0000644000175100017520000000662512530423576024377 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_simple_call_observer_h_HEADER_GUARD_ #define _TelepathyQt_simple_call_observer_h_HEADER_GUARD_ #include #include #include namespace Tp { class PendingOperation; class TP_QT_EXPORT SimpleCallObserver : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(SimpleCallObserver) Q_FLAGS(CallDirection CallDirections) public: enum CallDirection { CallDirectionIncoming = 0x01, CallDirectionOutgoing = 0x02, CallDirectionBoth = CallDirectionIncoming | CallDirectionOutgoing }; Q_DECLARE_FLAGS(CallDirections, CallDirection) static SimpleCallObserverPtr create(const AccountPtr &account, CallDirection direction = CallDirectionBoth); static SimpleCallObserverPtr create(const AccountPtr &account, const ContactPtr &contact, CallDirection direction = CallDirectionBoth); static SimpleCallObserverPtr create(const AccountPtr &account, const QString &contactIdentifier, CallDirection direction = CallDirectionBoth); virtual ~SimpleCallObserver(); AccountPtr account() const; QString contactIdentifier() const; CallDirection direction() const; QList calls() const; TP_QT_DEPRECATED QList streamedMediaCalls() const; Q_SIGNALS: void callStarted(const Tp::CallChannelPtr &channel); void callEnded(const Tp::CallChannelPtr &channel, const QString &errorName, const QString &errorMessage); void streamedMediaCallStarted(const Tp::StreamedMediaChannelPtr &channel); void streamedMediaCallEnded(const Tp::StreamedMediaChannelPtr &channel, const QString &errorName, const QString &errorMessage); private Q_SLOTS: TP_QT_NO_EXPORT void onNewChannels(const QList &channels); TP_QT_NO_EXPORT void onChannelInvalidated(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); private: TP_QT_NO_EXPORT static SimpleCallObserverPtr create( const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization, CallDirection direction); TP_QT_NO_EXPORT SimpleCallObserver(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization, CallDirection direction); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/MediaSessionHandlerInterface0000644000175100017520000000043312530423576025613 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MediaSessionHandlerInterface_HEADER_GUARD_ #define _TelepathyQt_MediaSessionHandlerInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Captcha0000644000175100017520000000034312530423576021454 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Captcha_HEADER_GUARD_ #define _TelepathyQt_Captcha_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/requestable-channel-class-spec.cpp0000644000175100017520000004775612530423576026672 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include namespace Tp { struct TP_QT_NO_EXPORT RequestableChannelClassSpec::Private : public QSharedData { Private(const RequestableChannelClass &rcc) : rcc(rcc) {} RequestableChannelClass rcc; }; /** * \class RequestableChannelClassSpec * \ingroup wrappers * \headerfile TelepathyQt/requestable-channel-class-spec.h * * \brief The RequestableChannelClassSpec class represents a Telepathy * requestable channel class. */ RequestableChannelClassSpec::RequestableChannelClassSpec(const RequestableChannelClass &rcc) : mPriv(new Private(rcc)) { } RequestableChannelClassSpec::RequestableChannelClassSpec() { } RequestableChannelClassSpec::RequestableChannelClassSpec(const RequestableChannelClassSpec &other) : mPriv(other.mPriv) { } RequestableChannelClassSpec::~RequestableChannelClassSpec() { } RequestableChannelClassSpec RequestableChannelClassSpec::textChat() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::textChatroom() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeRoom); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::audioCall() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), true); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::audioCallWithVideoAllowed() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), true); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName")); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo")); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::videoCall() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), true); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::videoCallWithAudioAllowed() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CALL); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), true); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName")); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio")); rcc.allowedProperties.append(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::streamedMediaCall() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::streamedMediaAudioCall() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::streamedMediaVideoCall() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::streamedMediaVideoCallWithAudio() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::fileTransfer() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::conferenceTextChat() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::conferenceTextChatWithInvitees() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::conferenceTextChatroom() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeRoom); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::conferenceTextChatroomWithInvitees() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeRoom); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::conferenceStreamedMediaCall() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::conferenceStreamedMediaCallWithInvitees() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels")); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeHandles")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::contactSearch() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::contactSearchWithSpecificServer() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Server")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::contactSearchWithLimit() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Limit")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::contactSearchWithSpecificServerAndLimit() { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Server")); rcc.allowedProperties.append( TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Limit")); spec = RequestableChannelClassSpec(rcc); } return spec; } RequestableChannelClassSpec RequestableChannelClassSpec::dbusTube(const QString &serviceName) { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); spec = RequestableChannelClassSpec(rcc); } if (serviceName.isEmpty()) { return spec; } RequestableChannelClass rcc = spec.bareClass(); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); return RequestableChannelClassSpec(rcc); } RequestableChannelClassSpec RequestableChannelClassSpec::streamTube(const QString &service) { static RequestableChannelClassSpec spec; if (!spec.isValid()) { RequestableChannelClass rcc; rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeContact); spec = RequestableChannelClassSpec(rcc); } if (service.isEmpty()) { return spec; } RequestableChannelClass rcc = spec.bareClass(); rcc.fixedProperties.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"), service); return RequestableChannelClassSpec(rcc); } RequestableChannelClassSpec &RequestableChannelClassSpec::operator=(const RequestableChannelClassSpec &other) { this->mPriv = other.mPriv; return *this; } bool RequestableChannelClassSpec::operator==(const RequestableChannelClassSpec &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return true; } return false; } return mPriv->rcc == other.mPriv->rcc; } bool RequestableChannelClassSpec::supports(const RequestableChannelClassSpec &other) const { if (!isValid()) { return false; } if (mPriv->rcc.fixedProperties == other.fixedProperties()) { foreach (const QString &prop, other.allowedProperties()) { if (!mPriv->rcc.allowedProperties.contains(prop)) { return false; } } return true; } return false; } QString RequestableChannelClassSpec::channelType() const { if (!isValid()) { return QString(); } return qdbus_cast(mPriv->rcc.fixedProperties.value( TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))); } bool RequestableChannelClassSpec::hasTargetHandleType() const { if (!isValid()) { return false; } return mPriv->rcc.fixedProperties.contains( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")); } HandleType RequestableChannelClassSpec::targetHandleType() const { if (!hasTargetHandleType()) { return (HandleType) -1; } return (HandleType) qdbus_cast(mPriv->rcc.fixedProperties.value( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"))); } bool RequestableChannelClassSpec::hasFixedProperty(const QString &name) const { if (!isValid()) { return false; } return mPriv->rcc.fixedProperties.contains(name); } QVariant RequestableChannelClassSpec::fixedProperty(const QString &name) const { if (!isValid()) { return QVariant(); } return mPriv->rcc.fixedProperties.value(name); } QVariantMap RequestableChannelClassSpec::fixedProperties() const { if (!isValid()) { return QVariantMap(); } return mPriv->rcc.fixedProperties; } bool RequestableChannelClassSpec::allowsProperty(const QString &name) const { if (!isValid()) { return false; } return mPriv->rcc.allowedProperties.contains(name); } QStringList RequestableChannelClassSpec::allowedProperties() const { if (!isValid()) { return QStringList(); } return mPriv->rcc.allowedProperties; } RequestableChannelClass RequestableChannelClassSpec::bareClass() const { return isValid() ? mPriv->rcc : RequestableChannelClass(); } /** * \class RequestableChannelClassSpecList * \ingroup wrappers * \headerfile TelepathyQt/requestable-channel-class-spec.h * * \brief The RequestableChannelClassSpecList class represents a list of * RequestableChannelClassSpec. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/AccountInterfaceAddressingInterface0000644000175100017520000000043312530423576027153 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountInterfaceAddressingInterface_HEADER_GUARD_ #define _TelepathyQt_AccountInterfaceAddressingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelClassSpec0000644000175100017520000000040012530423576023254 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelClassSpec_HEADER_GUARD_ #define _TelepathyQt_ChannelClassSpec_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatch-operation.cpp0000644000175100017520000006040512530423576026102 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/channel-dispatch-operation-internal.h" #include "TelepathyQt/_gen/cli-channel-dispatch-operation-body.hpp" #include "TelepathyQt/_gen/cli-channel-dispatch-operation.moc.hpp" #include "TelepathyQt/_gen/channel-dispatch-operation.moc.hpp" #include "TelepathyQt/_gen/channel-dispatch-operation-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/fake-handler-manager-internal.h" #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ChannelDispatchOperation::Private { Private(ChannelDispatchOperation *parent); ~Private(); static void introspectMain(Private *self); void extractMainProps(const QVariantMap &props, bool immutableProperties); // Public object ChannelDispatchOperation *parent; // Context AccountFactoryConstPtr accFactory; ConnectionFactoryConstPtr connFactory; ChannelFactoryConstPtr chanFactory; ContactFactoryConstPtr contactFactory; // Instance of generated interface class Client::ChannelDispatchOperationInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; // Introspection QVariantMap immutableProperties; ConnectionPtr connection; AccountPtr account; QList channels; QStringList possibleHandlers; bool gotPossibleHandlers; }; ChannelDispatchOperation::Private::Private(ChannelDispatchOperation *parent) : parent(parent), baseInterface(new Client::ChannelDispatchOperationInterface(parent)), properties(parent->interface()), readinessHelper(parent->readinessHelper()), gotPossibleHandlers(false) { debug() << "Creating new ChannelDispatchOperation:" << parent->objectPath(); parent->connect(baseInterface, SIGNAL(Finished()), SLOT(onFinished())); parent->connect(baseInterface, SIGNAL(ChannelLost(QDBusObjectPath,QString,QString)), SLOT(onChannelLost(QDBusObjectPath,QString,QString))); ReadinessHelper::Introspectables introspectables; // As ChannelDispatchOperation does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); } ChannelDispatchOperation::Private::~Private() { } void ChannelDispatchOperation::Private::introspectMain(ChannelDispatchOperation::Private *self) { QVariantMap mainProps; foreach (QString key, self->immutableProperties.keys()) { if (key.startsWith(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String("."))) { QVariant value = self->immutableProperties.value(key); mainProps.insert( key.remove(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".")), value); } } if (!self->channels.isEmpty() && mainProps.contains(QLatin1String("Account")) && mainProps.contains(QLatin1String("Connection")) && mainProps.contains(QLatin1String("Interfaces")) && mainProps.contains(QLatin1String("PossibleHandlers"))) { debug() << "Supplied properties were sufficient, not introspecting" << self->parent->objectPath(); self->extractMainProps(mainProps, true); return; } debug() << "Calling Properties::GetAll(ChannelDispatchOperation)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotMainProperties(QDBusPendingCallWatcher*))); } void ChannelDispatchOperation::Private::extractMainProps(const QVariantMap &props, bool immutableProperties) { parent->setInterfaces(qdbus_cast(props.value(QLatin1String("Interfaces")))); QList readyOps; if (!connection && props.contains(QLatin1String("Connection"))) { QDBusObjectPath connectionObjectPath = qdbus_cast(props.value(QLatin1String("Connection"))); QString connectionBusName = connectionObjectPath.path().mid(1).replace(QLatin1String("/"), QLatin1String(".")); PendingReady *readyOp = connFactory->proxy(connectionBusName, connectionObjectPath.path(), chanFactory, contactFactory); connection = ConnectionPtr::qObjectCast(readyOp->proxy()); readyOps.append(readyOp); } if (!account && props.contains(QLatin1String("Account"))) { QDBusObjectPath accountObjectPath = qdbus_cast(props.value(QLatin1String("Account"))); PendingReady *readyOp = accFactory->proxy(TP_QT_ACCOUNT_MANAGER_BUS_NAME, accountObjectPath.path(), connFactory, chanFactory, contactFactory); account = AccountPtr::qObjectCast(readyOp->proxy()); readyOps.append(readyOp); } if (!immutableProperties) { // If we're here, it means we had to introspect the object, and now for sure have the // correct channels list, so let's overwrite the initial channels - but keep the refs around // for a while as an optimization enabling the factory to still return the same ones instead // of constructing everything anew. Note that this is not done at all in the case the // immutable props and initial channels etc were sufficient. QList saveChannels = channels; channels.clear(); ChannelDetailsList channelDetailsList = qdbus_cast(props.value(QLatin1String("Channels"))); ChannelPtr channel; foreach (const ChannelDetails &channelDetails, channelDetailsList) { PendingReady *readyOp = chanFactory->proxy(connection, channelDetails.channel.path(), channelDetails.properties); channels.append(ChannelPtr::qObjectCast(readyOp->proxy())); readyOps.append(readyOp); } // saveChannels goes out of scope now, so any initial channels which don't exist anymore are // freed } if (props.contains(QLatin1String("PossibleHandlers"))) { possibleHandlers = qdbus_cast(props.value(QLatin1String("PossibleHandlers"))); gotPossibleHandlers = true; } if (readyOps.isEmpty()) { debug() << "No proxies to prepare for CDO" << parent->objectPath(); readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { parent->connect(new PendingComposite(readyOps, ChannelDispatchOperationPtr(parent)), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onProxiesPrepared(Tp::PendingOperation*))); } } ChannelDispatchOperation::PendingClaim::PendingClaim(const ChannelDispatchOperationPtr &op, const AbstractClientHandlerPtr &handler) : PendingOperation(op), mDispatchOp(op), mHandler(handler) { debug() << "Invoking CDO.Claim"; connect(new PendingVoid(op->baseInterface()->Claim(), op), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onClaimFinished(Tp::PendingOperation*))); } ChannelDispatchOperation::PendingClaim::~PendingClaim() { } void ChannelDispatchOperation::PendingClaim::onClaimFinished( PendingOperation *op) { if (!op->isError()) { debug() << "CDO.Claim returned successfully, updating HandledChannels"; if (mHandler) { // register the channels in HandledChannels FakeHandlerManager::instance()->registerChannels( mDispatchOp->channels()); } setFinished(); } else { warning() << "CDO.Claim failed with" << op->errorName() << "-" << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); } } /** * \class ChannelDispatchOperation * \ingroup clientchanneldispatchoperation * \headerfile TelepathyQt/channel-dispatch-operation.h * * \brief The ChannelDispatchOperation class represents a Telepathy channel * dispatch operation. * * One of the channel dispatcher's functions is to offer incoming channels to * Approver clients for approval. An approver should generally ask the user * whether they want to participate in the requested communication channels * (join the chat or chatroom, answer the call, accept the file transfer, or * whatever is appropriate). A collection of channels offered in this way * is represented by a ChannelDispatchOperation object. * * If the user wishes to accept the communication channels, the approver * should call handleWith() to indicate the user's or approver's preferred * handler for the channels (the empty string indicates no particular * preference, and will cause any suitable handler to be used). * * If the user wishes to reject the communication channels, or if the user * accepts the channels and the approver will handle them itself, the approver * should call claim(). If the resulting PendingOperation succeeds, the approver * immediately has control over the channels as their primary handler, * and may do anything with them (in particular, it may close them in whatever * way seems most appropriate). * * There are various situations in which the channel dispatch operation will * be closed, causing the DBusProxy::invalidated() signal to be emitted. If this * happens, the approver should stop prompting the user. * * Because all approvers are launched simultaneously, the user might respond * to another approver; if this happens, the invalidated signal will be * emitted with the error code #TP_QT_ERROR_OBJECT_REMOVED. * * If a channel closes, the signal channelLost() is emitted. If all channels * close, there is nothing more to dispatch, so the invalidated signal will be * emitted with the error code #TP_QT_ERROR_OBJECT_REMOVED. * * If the channel dispatcher crashes or exits, the invalidated * signal will be emitted with the error code * #TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER. In a high-quality implementation, * the dispatcher should be restarted, at which point it will create new * channel dispatch operations for any undispatched channels, and the approver * will be notified again. */ /** * Feature representing the core that needs to become ready to make the * ChannelDispatchOperation object usable. * * Note that this feature must be enabled in order to use most * ChannelDispatchOperation methods. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature ChannelDispatchOperation::FeatureCore = Feature(QLatin1String(ChannelDispatchOperation::staticMetaObject.className()), 0, true); /** * Create a new channel dispatch operation object using the given \a bus, the given factories and * the given initial channels. * * \param bus QDBusConnection to use. * \param objectPath The channel dispatch operation object path. * \param immutableProperties The channel dispatch operation immutable properties. * \param initialChannels The channels this CDO has initially (further tracking is done internally). * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ChannelDispatchOperationPtr object pointing to the newly created * ChannelDispatchOperation object. */ ChannelDispatchOperationPtr ChannelDispatchOperation::create(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ChannelDispatchOperationPtr(new ChannelDispatchOperation( bus, objectPath, immutableProperties, initialChannels, accountFactory, connectionFactory, channelFactory, contactFactory)); } /** * Construct a new channel dispatch operation object using the given \a bus, the given factories and * the given initial channels. * * \param bus QDBusConnection to use * \param objectPath The channel dispatch operation object path. * \param immutableProperties The channel dispatch operation immutable properties. * \param initialChannels The channels this CDO has initially (further tracking is done internally). * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. */ ChannelDispatchOperation::ChannelDispatchOperation(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) : StatefulDBusProxy(bus, TP_QT_IFACE_CHANNEL_DISPATCHER, objectPath, FeatureCore), OptionalInterfaceFactory(this), mPriv(new Private(this)) { if (accountFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the account factory is not the proxy connection"; } if (connectionFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the connection factory is not the proxy connection"; } if (channelFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection"; } mPriv->channels = initialChannels; mPriv->accFactory = accountFactory; mPriv->connFactory = connectionFactory; mPriv->chanFactory = channelFactory; mPriv->contactFactory = contactFactory; mPriv->immutableProperties = immutableProperties; } /** * Class destructor. */ ChannelDispatchOperation::~ChannelDispatchOperation() { delete mPriv; } /** * Return the connection with which the channels for this dispatch * operation are associated. * * This method requires ChannelDispatchOperation::FeatureCore to be ready. * * \return A pointer to the Connection object. */ ConnectionPtr ChannelDispatchOperation::connection() const { return mPriv->connection; } /** * Return the account with which the connection and channels for this dispatch * operation are associated. * * This method requires ChannelDispatchOperation::FeatureCore to be ready. * * \return A pointer to the Account object. */ AccountPtr ChannelDispatchOperation::account() const { return mPriv->account; } /** * Return the channels to be dispatched. * * This method requires ChannelDispatchOperation::FeatureCore to be ready. * * \return A list of pointers to Channel objects. */ QList ChannelDispatchOperation::channels() const { if (!isReady()) { warning() << "ChannelDispatchOperation::channels called with channel " "not ready"; } return mPriv->channels; } /** * Return the well known bus names (starting with * org.freedesktop.Telepathy.Client.) of the possible Handlers for this * dispatch operation channels with the preferred handlers first. * * As a result, approvers should use the first handler by default, unless they * have a reason to do otherwise. * * This method requires ChannelDispatchOperation::FeatureCore to be ready. * * \return List of possible handlers names. */ QStringList ChannelDispatchOperation::possibleHandlers() const { return mPriv->possibleHandlers; } /** * Called by an approver to accept a channel bundle and request that the given * handler be used to handle it. * * If successful, this method will cause the ChannelDispatchOperation object to * disappear, emitting invalidated with error * #TP_QT_ERROR_OBJECT_REMOVED. * * However, this method may fail because the dispatch has already been completed * and the object has already gone. If this occurs, it indicates that another * approver has asked for the bundle to be handled by a particular handler. The * approver must not attempt to interact with the channels further in this case, * unless it is separately invoked as the handler. * * Approvers which are also channel handlers should use claim() instead of * this method to request that they can handle a channel bundle themselves. * * \param handler The well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the channel handler that * should handle the channel, or an empty string if * the client has no preferred channel handler. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *ChannelDispatchOperation::handleWith(const QString &handler) { return new PendingVoid( mPriv->baseInterface->HandleWith(handler), ChannelDispatchOperationPtr(this)); } /** * Called by an approver to claim channels for closing them. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *ChannelDispatchOperation::claim() { return new PendingClaim(ChannelDispatchOperationPtr(this)); } /** * Called by an approver to claim channels for handling internally. If this * method is called successfully, the \a handler becomes the * handler for the channel, but does not have the * AbstractClientHandler::handleChannels() method called on it. * * Approvers wishing to reject channels must call this method to claim ownership * of them, and must not call requestClose() on the channels unless/until this * method returns successfully. * * The channel dispatcher can't know how best to close arbitrary channel types, * so it leaves it up to the approver to do so. For instance, for text channels * it is necessary to acknowledge any messages that have already been displayed * to the user first - ideally, the approver would display and then acknowledge * the messages - or to call Channel::requestClose() if the destructive * behaviour of that method is desired. * * Similarly, an approver for streamed media channels can close the channel with * a reason (e.g. "busy") if desired. The channel dispatcher, which is designed * to have no specific knowledge of particular channel types, can't do that. * * If successful, this method will cause the ChannelDispatchOperation object to * disappear, emitting Finished, in the same way as for handleWith(). * * This method may fail because the dispatch operation has already been * completed. Again, see handleWith() for more details. The approver must not * attempt to interact with the channels further in this case. * * \param handler The channel handler, that should remain registered during the * lifetime of channels(), otherwise dispatching will fail if the * channel dispatcher restarts. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa claim(), handleWith() */ PendingOperation *ChannelDispatchOperation::claim(const AbstractClientHandlerPtr &handler) { if (!handler->isRegistered()) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Handler must be registered for using claim(handler)"), ChannelDispatchOperationPtr(this)); } return new PendingClaim(ChannelDispatchOperationPtr(this), handler); } /** * \fn void ChannelDispatchOperation::channelLost(const ChannelPtr &channel, * const QString &errorName, const QString &errorMessage); * * Emitted when a channel has closed before it could be claimed or handled. If this is * emitted for the last remaining channel in a channel dispatch operation, it * will immediately be followed by invalidated() with error * #TP_QT_ERROR_OBJECT_REMOVED. * * \param channel The channel that was closed. * \param error The name of a D-Bus error indicating why the channel closed. * \param errorMessage The error message. */ /** * Return the ChannelDispatchOperationInterface for this ChannelDispatchOperation * class. This method is protected since the convenience methods provided by * this class should always be used instead of the interface by users of the * class. * * \return A pointer to the existing Client::ChannelDispatchOperationInterface object for this * ChannelDispatchOperation object. */ Client::ChannelDispatchOperationInterface *ChannelDispatchOperation::baseInterface() const { return mPriv->baseInterface; } void ChannelDispatchOperation::onFinished() { debug() << "ChannelDispatchOperation finished and was removed"; invalidate(TP_QT_ERROR_OBJECT_REMOVED, QLatin1String("ChannelDispatchOperation finished and was removed")); } void ChannelDispatchOperation::gotMainProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; // Watcher is NULL if we didn't have to introspect at all if (!reply.isError()) { debug() << "Got reply to Properties::GetAll(ChannelDispatchOperation)"; mPriv->extractMainProps(reply.value(), false); } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); warning().nospace() << "Properties::GetAll(ChannelDispatchOperation) failed with " << reply.error().name() << ": " << reply.error().message(); } } void ChannelDispatchOperation::onChannelLost( const QDBusObjectPath &channelObjectPath, const QString &errorName, const QString &errorMessage) { foreach (const ChannelPtr &channel, mPriv->channels) { if (channel->objectPath() == channelObjectPath.path()) { emit channelLost(channel, errorName, errorMessage); mPriv->channels.removeOne(channel); return; } } } void ChannelDispatchOperation::onProxiesPrepared(Tp::PendingOperation *op) { if (op->isError()) { warning() << "Preparing proxies for CDO" << objectPath() << "failed with" << op->errorName() << ":" << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false); } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatch-operation.xml0000644000175100017520000000040512530423576026112 0ustar00kaffeinekaffeine00000000000000 Channel Dispatch Operation interface telepathy-qt-0.9.6.1/TelepathyQt/simple-text-observer-internal.h0000644000175100017520000000442312530423576026254 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT SimpleTextObserver::Private { Private(SimpleTextObserver *parent, const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization); ~Private(); class TextChannelWrapper; SimpleTextObserver *parent; AccountPtr account; QString contactIdentifier; SimpleObserverPtr observer; QHash channels; }; class TP_QT_NO_EXPORT SimpleTextObserver::Private::TextChannelWrapper : public QObject { Q_OBJECT Q_DISABLE_COPY(TextChannelWrapper) public: TextChannelWrapper(const Tp::TextChannelPtr &channel); ~TextChannelWrapper() { } Q_SIGNALS: void channelMessageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel); void channelMessageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel); private Q_SLOTS: void onChannelMessageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken); void onChannelMessageReceived(const Tp::ReceivedMessage &message); private: TextChannelPtr mChannel; }; } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionFactory0000644000175100017520000000040212530423576023534 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionFactory_HEADER_GUARD_ #define _TelepathyQt_ConnectionFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/IntrospectableInterface0000644000175100017520000000040012530423576024702 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_IntrospectableInterface_HEADER_GUARD_ #define _TelepathyQt_IntrospectableInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/contact-search-channel.h0000644000175100017520000000742612530423576024654 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_search_channel_h_HEADER_GUARD_ #define _TelepathyQt_contact_search_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class TP_QT_EXPORT ContactSearchChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(ContactSearchChannel) public: static const Feature FeatureCore; class SearchStateChangeDetails { public: SearchStateChangeDetails(); SearchStateChangeDetails(const SearchStateChangeDetails &other); ~SearchStateChangeDetails(); bool isValid() const { return mPriv.constData() != 0; } SearchStateChangeDetails &operator=(const SearchStateChangeDetails &other); bool hasDebugMessage() const { return allDetails().contains(QLatin1String("debug-message")); } QString debugMessage() const { return qdbus_cast(allDetails().value(QLatin1String("debug-message"))); } QVariantMap allDetails() const; private: friend class ContactSearchChannel; TP_QT_NO_EXPORT SearchStateChangeDetails(const QVariantMap &details); struct Private; friend struct Private; QSharedDataPointer mPriv; }; typedef QHash SearchResult; static ContactSearchChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~ContactSearchChannel(); ChannelContactSearchState searchState() const; uint limit() const; QStringList availableSearchKeys() const; QString server() const; PendingOperation *search(const QString &searchKey, const QString &searchTerm); PendingOperation *search(const ContactSearchMap &searchTerms); void continueSearch(); void stopSearch(); Q_SIGNALS: void searchStateChanged(Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details); void searchResultReceived(const Tp::ContactSearchChannel::SearchResult &result); protected: ContactSearchChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature); private Q_SLOTS: TP_QT_NO_EXPORT void gotProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotSearchState(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onSearchStateChanged(uint state, const QString &error, const QVariantMap &details); TP_QT_NO_EXPORT void onSearchResultReceived(const Tp::ContactSearchResultMap &result); TP_QT_NO_EXPORT void gotSearchResultContacts(Tp::PendingOperation *op); private: class PendingSearch; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/simple-text-observer.cpp0000644000175100017520000002476112530423576025004 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/simple-text-observer-internal.h" #include "TelepathyQt/_gen/simple-text-observer.moc.hpp" #include "TelepathyQt/_gen/simple-text-observer-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include namespace Tp { SimpleTextObserver::Private::Private(SimpleTextObserver *parent, const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization) : parent(parent), account(account), contactIdentifier(contactIdentifier) { debug() << "Creating a new SimpleTextObserver"; ChannelClassSpec channelFilter = ChannelClassSpec::textChat(); observer = SimpleObserver::create(account, ChannelClassSpecList() << channelFilter, contactIdentifier, requiresNormalization, QList() << ChannelClassFeatures(channelFilter, TextChannel::FeatureMessageQueue | TextChannel::FeatureMessageSentSignal)); parent->connect(observer.data(), SIGNAL(newChannels(QList)), SLOT(onNewChannels(QList))); parent->connect(observer.data(), SIGNAL(channelInvalidated(Tp::ChannelPtr,QString,QString)), SLOT(onChannelInvalidated(Tp::ChannelPtr))); } SimpleTextObserver::Private::~Private() { foreach (TextChannelWrapper *wrapper, channels) { delete wrapper; } } SimpleTextObserver::Private::TextChannelWrapper::TextChannelWrapper(const TextChannelPtr &channel) : mChannel(channel) { connect(mChannel.data(), SIGNAL(messageSent(Tp::Message,Tp::MessageSendingFlags,QString)), SLOT(onChannelMessageSent(Tp::Message,Tp::MessageSendingFlags,QString))); connect(mChannel.data(), SIGNAL(messageReceived(Tp::ReceivedMessage)), SLOT(onChannelMessageReceived(Tp::ReceivedMessage))); } void SimpleTextObserver::Private::TextChannelWrapper::onChannelMessageSent( const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken) { emit channelMessageSent(message, flags, sentMessageToken, mChannel); } void SimpleTextObserver::Private::TextChannelWrapper::onChannelMessageReceived( const Tp::ReceivedMessage &message) { emit channelMessageReceived(message, mChannel); } /** * \class SimpleTextObserver * \ingroup utils * \headerfile TelepathyQt/simple-text-observer.h * * \brief The SimpleTextObserver class provides an easy way to track sent/received text messages * in an account and can be optionally filtered by a contact. */ /** * Create a new SimpleTextObserver object. * * Events will be signalled for all messages sent/received by all contacts in \a account. * * \param account The account used to listen to events. * \return An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object. */ SimpleTextObserverPtr SimpleTextObserver::create(const AccountPtr &account) { return create(account, QString(), false); } /** * Create a new SimpleTextObserver object. * * If \a contact is not null, events will be signalled for all messages sent/received by \a * contact, otherwise this method works the same as create(const Tp::AccountPtr &). * * \param account The account used to listen to events. * \param contact The contact used to filter events. * \return An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object. */ SimpleTextObserverPtr SimpleTextObserver::create(const AccountPtr &account, const ContactPtr &contact) { if (contact) { return create(account, contact->id(), false); } return create(account, QString(), false); } /** * Create a new SimpleTextObserver object. * * If \a contactIdentifier is non-empty, events will be signalled for all messages sent/received * by a contact identified by \a contactIdentifier, otherwise this method works the same as * create(const Tp::AccountPtr &). * * \param account The account used to listen to events. * \param contactIdentifier The identifier of the contact used to filter events. * \return An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object. */ SimpleTextObserverPtr SimpleTextObserver::create(const AccountPtr &account, const QString &contactIdentifier) { return create(account, contactIdentifier, true); } SimpleTextObserverPtr SimpleTextObserver::create(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization) { return SimpleTextObserverPtr( new SimpleTextObserver(account, contactIdentifier, requiresNormalization)); } /** * Construct a new SimpleTextObserver object. * * \param account The account used to listen to events. * \param contactIdentifier The identifier of the contact used to filter events. * \param requiresNormalization Whether \a contactIdentifier needs to be normalized. * \return An SimpleTextObserverPtr object pointing to the newly created SimpleTextObserver object. */ SimpleTextObserver::SimpleTextObserver(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization) : mPriv(new Private(this, account, contactIdentifier, requiresNormalization)) { if (!mPriv->observer->channels().isEmpty()) { onNewChannels(mPriv->observer->channels()); } } /** * Class destructor. */ SimpleTextObserver::~SimpleTextObserver() { delete mPriv; } /** * Return the account used to listen to events. * * \return A pointer to the Account object. */ AccountPtr SimpleTextObserver::account() const { return mPriv->account; } /** * Return the identifier of the contact used to filter events, or an empty string if none was * provided at construction. * * \return The identifier of the contact. */ QString SimpleTextObserver::contactIdentifier() const { return mPriv->contactIdentifier; } /** * Return the list of text chats currently being observed. * * \return A list of pointers to TextChannel objects. */ QList SimpleTextObserver::textChats() const { QList ret; foreach (const ChannelPtr &channel, mPriv->observer->channels()) { TextChannelPtr textChannel = TextChannelPtr::qObjectCast(channel); if (textChannel) { ret << textChannel; } } return ret; } void SimpleTextObserver::onNewChannels(const QList &channels) { foreach (const ChannelPtr &channel, channels) { TextChannelPtr textChannel = TextChannelPtr::qObjectCast(channel); if (!textChannel) { if (channel->channelType() != TP_QT_IFACE_CHANNEL_TYPE_TEXT) { warning() << "Channel received to observe is not of type Text, service confused. " "Ignoring channel"; } else { warning() << "Channel received to observe is not a subclass of TextChannel. " "ChannelFactory set on this observer's account must construct TextChannel " "subclasses for channels of type Text. Ignoring channel"; } continue; } if (mPriv->channels.contains(channel)) { // we are already observing this channel continue; } Private::TextChannelWrapper *wrapper = new Private::TextChannelWrapper(textChannel); mPriv->channels.insert(channel, wrapper); connect(wrapper, SIGNAL(channelMessageSent(Tp::Message,Tp::MessageSendingFlags,QString,Tp::TextChannelPtr)), SIGNAL(messageSent(Tp::Message,Tp::MessageSendingFlags,QString,Tp::TextChannelPtr))); connect(wrapper, SIGNAL(channelMessageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr)), SIGNAL(messageReceived(Tp::ReceivedMessage,Tp::TextChannelPtr))); foreach (const ReceivedMessage &message, textChannel->messageQueue()) { emit messageReceived(message, textChannel); } } } void SimpleTextObserver::onChannelInvalidated(const ChannelPtr &channel) { // it may happen that the channel received in onNewChannels is not a text channel somehow, thus // the channel won't be added to mPriv->channels if (mPriv->channels.contains(channel)) { delete mPriv->channels.take(channel); } } /** * \fn void SimpleTextObserver::messageSent(const Tp::Message &message, * Tp::MessageSendingFlags flags, const QString &sentMessageToken, * const Tp::TextChannelPtr &channel); * * Emitted whenever a text message on account() is sent. * If contactIdentifier() is non-empty, only messages sent to the contact identified by it will * be signalled. * * \param message The message sent. * \param flags The message flags, * \param sentMessageToken The message token. * \param channel The channel which received the message. */ /** * \fn void SimpleTextObserver::messageReceived(const Tp::ReceivedMessage &message, * const Tp::TextChannelPtr &channel); * * Emitted whenever a text message on account() is received. * If contactIdentifier() is non-empty, only messages received by the contact identified by it will * be signalled. * * \param message The message received. * \param channel The channel which received the message. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeTextInterface0000644000175100017520000000040512530423576025010 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeTextInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeTextInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-channel-request.cpp0000644000175100017520000002354012530423576025416 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/pending-channel-request-internal.h" #include "TelepathyQt/_gen/pending-channel-request.moc.hpp" #include "TelepathyQt/_gen/pending-channel-request-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingChannelRequest::Private { Private(const QDBusConnection &dbusConnection) : dbusConnection(dbusConnection), cancelOperation(0) { } QDBusConnection dbusConnection; ChannelRequestPtr channelRequest; PendingChannelRequestCancelOperation *cancelOperation; }; /** * \class PendingChannelRequest * \ingroup clientchannelrequest * \headerfile TelepathyQt/pending-channel-request.h * * \brief The PendingChannelRequest class represents the parameters of and * the reply to an asynchronous ChannelRequest request. * * Instances of this class cannot be constructed directly; the only way to get * one is through Account. * * See \ref async_model */ /** * Construct a new PendingChannelRequest object. * * \param account Account to use. * \param requestedProperties A dictionary containing the desirable properties. * \param userActionTime The time at which user action occurred, or QDateTime() * if this channel request is for some reason not * involving user action. * \param preferredHandler Either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred * handler for this channel, or an empty string to * indicate that any handler would be acceptable. * \param create Whether createChannel or ensureChannel should be called. * \param account The account the request was made through. */ PendingChannelRequest::PendingChannelRequest(const AccountPtr &account, const QVariantMap &requestedProperties, const QDateTime &userActionTime, const QString &preferredHandler, bool create, const ChannelRequestHints &hints) : PendingOperation(account), mPriv(new Private(account->dbusConnection())) { QString channelDispatcherObjectPath = QString(QLatin1String("/%1")).arg(TP_QT_IFACE_CHANNEL_DISPATCHER); channelDispatcherObjectPath.replace(QLatin1String("."), QLatin1String("/")); Client::ChannelDispatcherInterface *channelDispatcherInterface = account->dispatcherInterface(); QDBusPendingCallWatcher *watcher = 0; if (create) { if (hints.isValid()) { if (account->supportsRequestHints()) { watcher = new QDBusPendingCallWatcher( channelDispatcherInterface->CreateChannelWithHints( QDBusObjectPath(account->objectPath()), requestedProperties, userActionTime.isNull() ? 0 : userActionTime.toTime_t(), preferredHandler, hints.allHints()), this); } else { warning() << "Hints passed to channel request won't have an effect" << "because the Channel Dispatcher service in use is too old"; } } if (!watcher) { watcher = new QDBusPendingCallWatcher( channelDispatcherInterface->CreateChannel( QDBusObjectPath(account->objectPath()), requestedProperties, userActionTime.isNull() ? 0 : userActionTime.toTime_t(), preferredHandler), this); } } else { if (hints.isValid()) { if (account->supportsRequestHints()) { watcher = new QDBusPendingCallWatcher( channelDispatcherInterface->EnsureChannelWithHints( QDBusObjectPath(account->objectPath()), requestedProperties, userActionTime.isNull() ? 0 : userActionTime.toTime_t(), preferredHandler, hints.allHints()), this); } else { warning() << "Hints passed to channel request won't have an effect" << "because the Channel Dispatcher service in use is too old"; } } if (!watcher) { watcher = new QDBusPendingCallWatcher( channelDispatcherInterface->EnsureChannel( QDBusObjectPath(account->objectPath()), requestedProperties, userActionTime.isNull() ? 0 : userActionTime.toTime_t(), preferredHandler), this); } } // TODO: This is a Qt bug fixed upstream, should be in the next Qt release. // We should not need to check watcher->isFinished() here, remove the // check when we depend on the fixed Qt version. if (watcher->isFinished()) { onWatcherFinished(watcher); } else { connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onWatcherFinished(QDBusPendingCallWatcher*))); } } /** * Construct a new PendingChannelRequest object that always fails. * * \param account Account to use. * \param errorName The name of a D-Bus error. * \param errorMessage The error message. */ PendingChannelRequest::PendingChannelRequest(const AccountPtr &account, const QString &errorName, const QString &errorMessage) : PendingOperation(ConnectionPtr()), mPriv(new Private(account->dbusConnection())) { setFinishedWithError(errorName, errorMessage); } /** * Class destructor. */ PendingChannelRequest::~PendingChannelRequest() { delete mPriv; } /** * Return the account through which the request was made. * * \return A pointer to the Account object. */ AccountPtr PendingChannelRequest::account() const { return AccountPtr(qobject_cast((Account*) object().data())); } ChannelRequestPtr PendingChannelRequest::channelRequest() const { return mPriv->channelRequest; } PendingOperation *PendingChannelRequest::cancel() { if (isFinished()) { // CR has already succeeded or failed, so let's just fail here return new PendingFailure(TP_QT_DBUS_ERROR_UNKNOWN_METHOD, QLatin1String("ChannnelRequest already finished"), object()); } if (!mPriv->cancelOperation) { mPriv->cancelOperation = new PendingChannelRequestCancelOperation(); connect(mPriv->cancelOperation, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onCancelOperationFinished(Tp::PendingOperation*))); if (mPriv->channelRequest) { mPriv->cancelOperation->go(mPriv->channelRequest); } } return mPriv->cancelOperation; } void PendingChannelRequest::onWatcherFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QDBusObjectPath objectPath = reply.argumentAt<0>(); debug() << "Got reply to ChannelDispatcher.Ensure/CreateChannel " "- object path:" << objectPath.path(); if (!account().isNull()) { mPriv->channelRequest = ChannelRequest::create(account(), objectPath.path(), QVariantMap()); } if (mPriv->cancelOperation) { mPriv->cancelOperation->go(mPriv->channelRequest); } else { emit channelRequestCreated(mPriv->channelRequest); connect(mPriv->channelRequest.data(), SIGNAL(failed(QString,QString)), SLOT(setFinishedWithError(QString,QString))); connect(mPriv->channelRequest.data(), SIGNAL(succeeded(Tp::ChannelPtr)), SLOT(setFinished())); connect(mPriv->channelRequest->proceed(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onProceedOperationFinished(Tp::PendingOperation*))); } } else { debug().nospace() << "Ensure/CreateChannel failed:" << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } void PendingChannelRequest::onProceedOperationFinished(PendingOperation *op) { if (op->isError()) { setFinishedWithError(op->errorName(), op->errorMessage()); } } void PendingChannelRequest::onCancelOperationFinished(PendingOperation *op) { mPriv->cancelOperation = 0; if (!isFinished()) { setFinishedWithError(TP_QT_ERROR_CANCELLED, QLatin1String("ChannelRequest cancelled")); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/IncomingFileTransferChannel0000644000175100017520000000044212530423576025452 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_IncomingFileTransferChannel_HEADER_GUARD_ #define _TelepathyQt_IncomingFileTransferChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionLowlevel0000644000175100017520000000040312530423576023717 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionLowlevel_HEADER_GUARD #define _TelepathyQt_ConnectionLowlevel_HEADER_GUARD #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/StatefulDBusProxy0000644000175100017520000000037212530423576023522 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StatefulDBusProxy_HEADER_GUARD_ #define _TelepathyQt_StatefulDBusProxy_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallContentInterfaceMediaInterface0000644000175100017520000000043612530423576026724 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentInterfaceMediaInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentInterfaceMediaInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ReceivedMessage0000644000175100017520000000036312530423576023146 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ReceivedMessage_HEADER_GUARD_ #define _TelepathyQt_ReceivedMessage_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PropertiesInterfaceInterface0000644000175100017520000000042012530423576025703 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PropertiesInterfaceInterface_HEADER_GUARD_ #define _TelepathyQt_PropertiesInterfaceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/svc-connection.xml0000644000175100017520000000272412530423576023645 0ustar00kaffeinekaffeine00000000000000 Connection interfaces telepathy-qt-0.9.6.1/TelepathyQt/AndFilter0000644000175100017520000000035212530423576021761 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AndFilter_HEADER_GUARD_ #define _TelepathyQt_AndFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ReferencedHandlesIterator0000644000175100017520000000025712530423576025170 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ReferencedHandlesIterator_HEADER_GUARD_ #define _TelepathyQt_ReferencedHandlesIterator_HEADER_GUARD_ #include #endif telepathy-qt-0.9.6.1/TelepathyQt/call-content.h0000644000175100017520000000641012530423576022723 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_call_content_h_HEADER_GUARD_ #define _TelepathyQt_call_content_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { typedef QList CallContents; class TP_QT_EXPORT CallContent : public StatefulDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(CallContent) public: ~CallContent(); CallChannelPtr channel() const; QString name() const; MediaStreamType type() const; CallContentDisposition disposition() const; CallStreams streams() const; PendingOperation *remove(); bool supportsDTMF() const; PendingOperation *startDTMFTone(DTMFEvent event); PendingOperation *stopDTMFTone(); Q_SIGNALS: void streamAdded(const Tp::CallStreamPtr &stream); void streamRemoved(const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason); private Q_SLOTS: TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onStreamsAdded(const Tp::ObjectPathList &streamPath); TP_QT_NO_EXPORT void onStreamsRemoved(const Tp::ObjectPathList &streamPath, const Tp::CallStateReason &reason); TP_QT_NO_EXPORT void onStreamReady(Tp::PendingOperation *op); private: friend class CallChannel; friend class PendingCallContent; TP_QT_NO_EXPORT static const Feature FeatureCore; TP_QT_NO_EXPORT CallContent(const CallChannelPtr &channel, const QDBusObjectPath &contentPath); struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT PendingCallContent : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingCallContent) public: ~PendingCallContent(); CallContentPtr content() const; private Q_SLOTS: TP_QT_NO_EXPORT void gotContent(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onContentReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onContentRemoved(const Tp::CallContentPtr &content); private: friend class CallChannel; TP_QT_NO_EXPORT PendingCallContent(const CallChannelPtr &channel, const QString &contentName, MediaStreamType type, MediaStreamDirection direction); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/AbstractClientHandler0000644000175100017520000000040712530423576024312 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractClientHandler_HEADER_GUARD_ #define _TelepathyQt_AbstractClientHandler_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionManager0000644000175100017520000000040212530423576023477 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionManager_HEADER_GUARD_ #define _TelepathyQt_ConnectionManager_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeDBusTubeInterface0000644000175100017520000000041512530423576025542 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeDBusTubeInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeDBusTubeInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallStreamEndpoint0000644000175100017520000000040612530423576023641 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallStreamEndpoint_HEADER_GUARD_ #define _TelepathyQt_CallStreamEndpoint_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-server-internal.h0000644000175100017520000000355712530423576025717 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { class TP_QT_NO_EXPORT StreamTubeServer::TubeWrapper : public QObject { Q_OBJECT Q_DISABLE_COPY(TubeWrapper) public: TubeWrapper(const AccountPtr &acc, const OutgoingStreamTubeChannelPtr &tube, const QHostAddress &exportedAddr, quint16 exportedPort, const QVariantMap ¶ms, StreamTubeServer *parent); ~TubeWrapper() { } AccountPtr mAcc; OutgoingStreamTubeChannelPtr mTube; Q_SIGNALS: void offerFinished(TubeWrapper *wrapper, Tp::PendingOperation *op); void newConnection(TubeWrapper *wrapper, uint conn); void connectionClosed(TubeWrapper *wrapper, uint conn, const QString &error, const QString &message); private Q_SLOTS: void onTubeOffered(Tp::PendingOperation *); void onNewConnection(uint); void onConnectionClosed(uint, const QString &, const QString &); }; } // Tp telepathy-qt-0.9.6.1/TelepathyQt/key-file.cpp0000644000175100017520000003554412530423576022412 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/key-file.h" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT KeyFile::Private { Private(); Private(const QString &fName); void setFileName(const QString &fName); void setError(KeyFile::Status status, const QString &reason); bool read(); bool validateKey(const QByteArray &data, int from, int to, QString &result); QStringList allGroups() const; QStringList allKeys() const; QStringList keys() const; bool contains(const QString &key) const; QString rawValue(const QString &key) const; QString value(const QString &key) const; QStringList valueAsStringList(const QString &key) const; QString fileName; KeyFile::Status status; QHash > groups; QString currentGroup; }; KeyFile::Private::Private() : status(KeyFile::None) { } KeyFile::Private::Private(const QString &fName) : fileName(fName), status(KeyFile::NoError) { read(); } void KeyFile::Private::setFileName(const QString &fName) { fileName = fName; status = KeyFile::NoError; currentGroup = QString(); groups.clear(); read(); } void KeyFile::Private::setError(KeyFile::Status st, const QString &reason) { warning() << QString(QLatin1String("ERROR: filename(%1) reason(%2)")) .arg(fileName).arg(reason); status = st; groups.clear(); } bool KeyFile::Private::read() { QFile file(fileName); if (!file.exists()) { setError(KeyFile::NotFoundError, QLatin1String("file does not exist")); return false; } if (!file.open(QFile::ReadOnly)) { setError(KeyFile::AccessError, QLatin1String("cannot open file for readonly access")); return false; } QByteArray data; QByteArray group; QString currentGroup; QHash groupMap; QByteArray rawValue; int line = 0; int idx; while (!file.atEnd()) { data = file.readLine().trimmed(); line++; if (data.size() == 0) { // skip empty lines continue; } char ch = data.at(0); if (ch == '#') { // skip comments continue; } else if (ch == '[') { if (groupMap.size()) { groups[currentGroup] = groupMap; groupMap.clear(); } idx = data.indexOf(']'); if (idx == -1) { // line starts with [ and it's not a group setError(KeyFile::FormatError, QString(QLatin1String("invalid group at line %2 - missing ']'")) .arg(line)); return false; } group = data.mid(1, idx - 1).trimmed(); if (groups.contains(QLatin1String(group))) { setError(KeyFile::FormatError, QString(QLatin1String("duplicated group '%1' at line %2")) .arg(QLatin1String(group)).arg(line)); return false; } currentGroup = QLatin1String(""); if (!unescapeString(group, 0, group.size(), currentGroup)) { setError(KeyFile::FormatError, QString(QLatin1String("invalid group '%1' at line %2")) .arg(currentGroup).arg(line)); return false; } } else { idx = data.indexOf('='); if (idx == -1) { setError(KeyFile::FormatError, QString(QLatin1String("format error at line %1 - missing '='")) .arg(line)); return false; } // remove trailing spaces char ch; int idxKeyEnd = idx; while ((ch = data.at(idxKeyEnd - 1)) == ' ' || ch == '\t') { --idxKeyEnd; } QString key; if (!validateKey(data, 0, idxKeyEnd, key)) { setError(KeyFile::FormatError, QString(QLatin1String("invalid key '%1' at line %2")) .arg(key).arg(line)); return false; } if (groupMap.contains(key)) { setError(KeyFile::FormatError, QString(QLatin1String("duplicated key '%1' on group '%2' at line %3")) .arg(key).arg(currentGroup).arg(line)); return false; } data = data.mid(idx + 1).trimmed(); rawValue = data.mid(0, data.size()); groupMap[key] = rawValue; } } if (groupMap.size()) { groups[currentGroup] = groupMap; groupMap.clear(); } return true; } bool KeyFile::Private::validateKey(const QByteArray &data, int from, int to, QString &result) { int i = from; bool ret = true; while (i < to) { uint ch = data.at(i++); // as an extension to the Desktop Entry spec, we allow " ", "_", "." and "@" // as valid key characters - "_" and "." are needed for keys that are // D-Bus property names, and GKeyFile and KConfigIniBackend also accept // all four of those characters. if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || (ch == ' ') || (ch == '-') || (ch == '_') || (ch == '.') || (ch == '@'))) { ret = false; } result += ch; } return ret; } QStringList KeyFile::Private::allGroups() const { return groups.keys(); } QStringList KeyFile::Private::allKeys() const { QStringList keys; QHash >::const_iterator itrGroups = groups.begin(); while (itrGroups != groups.end()) { keys << itrGroups.value().keys(); ++itrGroups; } return keys; } QStringList KeyFile::Private::keys() const { QHash groupMap = groups[currentGroup]; return groupMap.keys(); } bool KeyFile::Private::contains(const QString &key) const { QHash groupMap = groups[currentGroup]; return groupMap.contains(key); } QString KeyFile::Private::rawValue(const QString &key) const { QHash groupMap = groups[currentGroup]; QByteArray rawValue = groupMap.value(key); return QLatin1String(rawValue); } QString KeyFile::Private::value(const QString &key) const { QHash groupMap = groups[currentGroup]; QString result; QByteArray rawValue = groupMap.value(key); if (unescapeString(rawValue, 0, rawValue.size(), result)) { return result; } return QString(); } QStringList KeyFile::Private::valueAsStringList(const QString &key) const { QHash groupMap = groups[currentGroup]; QStringList result; QByteArray rawValue = groupMap.value(key); if (unescapeStringList(rawValue, 0, rawValue.size(), result)) { return result; } return QStringList(); } /** * \class KeyFile * \ingroup utils * \headerfile TelepathyQt/key-file.h * * \brief The KeyFile class provides an easy way to read key-pair files such as * INI style files and .desktop files. * * It follows the rules regarding string escaping as defined in * http://standards.freedesktop.org/desktop-entry-spec/latest/index.html */ /** * Create a KeyFile object used to read (key-pair) compliant files. * * The status will be KeyFile::None * \sa setFileName() */ KeyFile::KeyFile() : mPriv(new Private()) { } /** * Create a KeyFile object used to read (key-pair) compliant files. * * \param fileName Name of the file to be read. */ KeyFile::KeyFile(const QString &fileName) : mPriv(new Private(fileName)) { } /** * Create a KeyFile object used to read (key-pair) compliant files. */ KeyFile::KeyFile(const KeyFile &other) : mPriv(new Private()) { mPriv->fileName = other.mPriv->fileName; mPriv->status = other.mPriv->status; mPriv->groups = other.mPriv->groups; mPriv->currentGroup = other.mPriv->currentGroup; } /** * Class destructor. */ KeyFile::~KeyFile() { delete mPriv; } KeyFile &KeyFile::operator=(const KeyFile &other) { mPriv->fileName = other.mPriv->fileName; mPriv->status = other.mPriv->status; mPriv->groups = other.mPriv->groups; mPriv->currentGroup = other.mPriv->currentGroup; return *this; } /** * Set the name of the file to be read. * * \param fileName Name of the file to be read. */ void KeyFile::setFileName(const QString &fileName) { mPriv->setFileName(fileName); } /** * Return the name of the file associated with this object. * * \return Name of the file associated with this object. */ QString KeyFile::fileName() const { return mPriv->fileName; } /** * Return a status code indicating the first error that was met by #KeyFile, * or KeyFile::NoError if no error occurred. * * Make sure to use this method if you set the filename to be read using * setFileName(). * * \return Status code. * \sa setFileName() */ KeyFile::Status KeyFile::status() const { return mPriv->status; } /** * Set the current group to be used while reading keys. * * Query functions such as keys(), contains() and value() are based on this * group. * * By default a empty group is used as the group for global * keys and is used as the default group if none is set. * * \param group Name of the group to be used. * \sa group() */ void KeyFile::setGroup(const QString &group) { mPriv->currentGroup = group; } /** * Return the current group. * * \return Name of the current group. * \sa setGroup() */ QString KeyFile::group() const { return mPriv->currentGroup; } /** * Return all groups in the desktop file. * * Global keys will be added to a empty group. * * \return List of all groups in the desktop file. */ QStringList KeyFile::allGroups() const { return mPriv->allGroups(); } /** * Return all keys described in the desktop file. * * \return List of all keys in the desktop file. */ QStringList KeyFile::allKeys() const { return mPriv->allKeys(); } /** * Return a list of keys in the current group. * * \return List of all keys in the current group. * \sa group(), setGroup() */ QStringList KeyFile::keys() const { return mPriv->keys(); } /** * Check if the current group contains a key named \a key. * * \return true if \a key exists, false otherwise. * \sa group(), setGroup() */ bool KeyFile::contains(const QString &key) const { return mPriv->contains(key); } /** * Get the raw value for the key in the current group named \a key. * * The raw value is the value as is in the key file. * * \return Value of \a key, empty string if not found. * \sa group(), setGroup() */ QString KeyFile::rawValue(const QString &key) const { return mPriv->rawValue(key); } /** * Get the value for the key in the current group named \a key. * * Escape sequences in the value are interpreted as defined in: * http://standards.freedesktop.org/desktop-entry-spec/latest/ * * \return Value of \a key, empty string if not found or an error occurred. * \sa group(), setGroup() */ QString KeyFile::value(const QString &key) const { return mPriv->value(key); } /** * Get the value for the key in the current group named \a key as a list. * * Return a list containing all strings on this key separated by ';'. * Escape sequences in the value are interpreted as defined in: * http://standards.freedesktop.org/desktop-entry-spec/latest/ * * \return Value of \a key as a list, empty string list if not found or an error occurred. * \sa group(), setGroup() */ QStringList KeyFile::valueAsStringList(const QString &key) const { return mPriv->valueAsStringList(key); } bool KeyFile::unescapeString(const QByteArray &data, int from, int to, QString &result) { int i = from; while (i < to) { uint ch = data.at(i++); if (ch == '\\') { if (i == to) { result += QLatin1String("\\"); return true; } char nextCh = data.at(i++); switch (nextCh) { case 's': result += QLatin1String(" "); break; case 'n': result += QLatin1String("\n"); break; case 't': result += QLatin1String("\t"); break; case 'r': result += QLatin1String("\r"); break; case ';': result += QLatin1String(";"); break; case '\\': result += QLatin1String("\\"); break; default: return false; } } else { result += ch; } } return true; } bool KeyFile::unescapeStringList(const QByteArray &data, int from, int to, QStringList &result) { QByteArray value; QList valueList; int i = from; char ch; while (i < to) { ch = data.at(i++); if (ch == '\\') { value += ch; if (i < to) { value += data.at(i++); continue; } else { valueList << value; break; } } else if (ch == ';') { valueList << value; value = ""; } else { value += ch; if (i == to) { valueList << value; } } } foreach (value, valueList) { QString str; if (!unescapeString(value, 0, value.size(), str)) { return false; } result << str; } return true; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/OrFilter0000644000175100017520000000034712530423576021643 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_OrFilter_HEADER_GUARD_ #define _TelepathyQt_OrFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceSecurableInterface0000644000175100017520000000043112530423576026747 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceSecurableInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceSecurableInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-variant.cpp0000644000175100017520000000474612530423576023773 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-variant.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingVariant::Private { QVariant result; }; /** * \class PendingVariant * \ingroup utils * \headerfile TelepathyQt/pending-variant.h * * \brief The PendingVariant class is a generic subclass of PendingOperation * representing a pending D-Bus method call that returns a variant. * * See \ref async_model */ PendingVariant::PendingVariant(QDBusPendingCall call, const SharedPtr &object) : PendingOperation(object), mPriv(new Private) { connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(watcherFinished(QDBusPendingCallWatcher*))); } /** * Class destructor. */ PendingVariant::~PendingVariant() { delete mPriv; } QVariant PendingVariant::result() const { return mPriv->result; } void PendingVariant::watcherFinished(QDBusPendingCallWatcher* watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got reply to PendingVariant call"; mPriv->result = reply.value().variant(); setFinished(); } else { debug().nospace() << "PendingVariant call failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/handled-channel-notifier.cpp0000644000175100017520000000673712530423576025531 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/handled-channel-notifier.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/request-temporary-handler-internal.h" #include #include namespace Tp { struct TP_QT_NO_EXPORT HandledChannelNotifier::Private { Private(const ClientRegistrarPtr &cr, const SharedPtr &handler) : cr(cr), handler(handler), channel(handler->channel()) { } ClientRegistrarPtr cr; SharedPtr handler; ChannelPtr channel; // needed to keep channel alive, since RTH maintains only a weak ref }; /** * \class HandledChannelNotifier * \ingroup clientchannel * \headerfile TelepathyQt/handled-channel-notifier.h * * \brief The HandledChannelNotifier class can be used to keep track of * channel() being re-requested. * * Instances of this class cannot be constructed directly; the only way to get * one is trough PendingChannel. */ HandledChannelNotifier::HandledChannelNotifier(const ClientRegistrarPtr &cr, const SharedPtr &handler) : mPriv(new Private(cr, handler)) { connect(mPriv->channel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated())); connect(handler.data(), SIGNAL(channelReceived(Tp::ChannelPtr,QDateTime,Tp::ChannelRequestHints)), SLOT(onChannelReceived(Tp::ChannelPtr,QDateTime,Tp::ChannelRequestHints))); } HandledChannelNotifier::~HandledChannelNotifier() { delete mPriv; } ChannelPtr HandledChannelNotifier::channel() const { return mPriv->channel; } void HandledChannelNotifier::onChannelReceived(const Tp::ChannelPtr &channel, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints) { emit handledAgain(userActionTime, requestHints); } void HandledChannelNotifier::onChannelInvalidated() { deleteLater(); } #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) void HandledChannelNotifier::connectNotify(const QMetaMethod &signal) { if (signal == QMetaMethod::fromSignal(&HandledChannelNotifier::handledAgain)) { mPriv->handler->setQueueChannelReceived(false); } } #else void HandledChannelNotifier::connectNotify(const char *signalName) { if (qstrcmp(signalName, SIGNAL(handledAgain(QDateTime,Tp::ChannelRequestHints))) == 0) { mPriv->handler->setQueueChannelReceived(false); } } #endif } // Tp telepathy-qt-0.9.6.1/TelepathyQt/pending-stream-tube-connection.cpp0000644000175100017520000002047512530423576026711 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-stream-tube-connection.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include "TelepathyQt/types-internal.h" namespace Tp { struct TP_QT_NO_EXPORT PendingStreamTubeConnection::Private { Private(PendingStreamTubeConnection *parent); ~Private(); // Public object PendingStreamTubeConnection *parent; IncomingStreamTubeChannelPtr tube; SocketAddressType type; QHostAddress hostAddress; quint16 port; QString socketPath; bool requiresCredentials; uchar credentialByte; }; PendingStreamTubeConnection::Private::Private(PendingStreamTubeConnection *parent) : parent(parent), requiresCredentials(false), credentialByte(0) { } PendingStreamTubeConnection::Private::~Private() { } /** * \class PendingStreamTubeConnection * \ingroup clientchannel * \headerfile TelepathyQt/incoming-stream-tube-channel.h * * \brief The PendingStreamTubeConnection class represents an asynchronous * operation for accepting an incoming stream tube. * * See \ref async_model */ PendingStreamTubeConnection::PendingStreamTubeConnection( PendingVariant *acceptOperation, SocketAddressType type, bool requiresCredentials, uchar credentialByte, const IncomingStreamTubeChannelPtr &channel) : PendingOperation(channel), mPriv(new Private(this)) { mPriv->tube = channel; mPriv->type = type; mPriv->requiresCredentials = requiresCredentials; mPriv->credentialByte = credentialByte; /* keep track of channel invalidation */ connect(channel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated(Tp::DBusProxy*,QString,QString))); debug() << "Calling StreamTube.Accept"; if (acceptOperation->isFinished()) { onAcceptFinished(acceptOperation); } else { connect(acceptOperation, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAcceptFinished(Tp::PendingOperation*))); } } PendingStreamTubeConnection::PendingStreamTubeConnection( const QString& errorName, const QString& errorMessage, const IncomingStreamTubeChannelPtr &channel) : PendingOperation(channel), mPriv(new PendingStreamTubeConnection::Private(this)) { setFinishedWithError(errorName, errorMessage); } /** * Class destructor. */ PendingStreamTubeConnection::~PendingStreamTubeConnection() { delete mPriv; } /** * Return the type of the opened stream tube socket. * * \return The socket type as #SocketAddressType. * \see localAddress(), ipAddress() */ SocketAddressType PendingStreamTubeConnection::addressType() const { return mPriv->tube->addressType(); } /** * Return the local address of the opened stream tube socket. * * This method will return a meaningful value only if the incoming stream tube * was accepted as an Unix socket. * * \return Unix socket address if using an Unix socket, * or an undefined value otherwise. * \see addressType(), ipAddress() */ QString PendingStreamTubeConnection::localAddress() const { return mPriv->tube->localAddress(); } /** * Return the IP address/port combination of the opened stream tube socket. * * This method will return a meaningful value only if the incoming stream tube * was accepted as a TCP socket. * * \return Pair of IP address as QHostAddress and port if using a TCP socket, * or an undefined value otherwise. * \see addressType(), localAddress() */ QPair PendingStreamTubeConnection::ipAddress() const { return mPriv->tube->ipAddress(); } /** * Return whether sending a credential byte once connecting to the socket is required. * * Note that if this method returns \c true, one should send a SCM_CREDS or SCM_CREDENTIALS * and the credentialByte() once connected. If SCM_CREDS or SCM_CREDENTIALS cannot be sent, * the credentialByte() should still be sent. * * \return \c true if sending credentials is required, \c false otherwise. * \sa credentialByte() */ bool PendingStreamTubeConnection::requiresCredentials() const { return mPriv->requiresCredentials; } /** * Return the credential byte to send once connecting to the socket if requiresCredentials() is \c * true. * * \return The credential byte. * \sa requiresCredentials() */ uchar PendingStreamTubeConnection::credentialByte() const { return mPriv->credentialByte; } void PendingStreamTubeConnection::onChannelInvalidated(DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { Q_UNUSED(proxy); if (isFinished()) { return; } warning().nospace() << "StreamTube.Accept failed because channel was invalidated with " << errorName << ": " << errorMessage; setFinishedWithError(errorName, errorMessage); } void PendingStreamTubeConnection::onAcceptFinished(PendingOperation *op) { if (isFinished()) { return; } if (op->isError()) { warning().nospace() << "StreamTube.Accept failed with " << op->errorName() << ": " << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); return; } debug() << "StreamTube.Accept returned successfully"; PendingVariant *pv = qobject_cast(op); // Build the address if (mPriv->type == SocketAddressTypeIPv4) { SocketAddressIPv4 addr = qdbus_cast(pv->result()); debug().nospace() << "Got address " << addr.address << ":" << addr.port; mPriv->hostAddress = QHostAddress(addr.address); mPriv->port = addr.port; } else if (mPriv->type == SocketAddressTypeIPv6) { SocketAddressIPv6 addr = qdbus_cast(pv->result()); debug().nospace() << "Got address " << addr.address << ":" << addr.port; mPriv->hostAddress = QHostAddress(addr.address); mPriv->port = addr.port; } else { // Unix socket mPriv->socketPath = QLatin1String(qdbus_cast(pv->result())); debug() << "Got socket " << mPriv->socketPath; } // It might have been already opened - check if (mPriv->tube->state() == TubeChannelStateOpen) { onTubeStateChanged(mPriv->tube->state()); } else { // Wait until the tube gets opened on the other side connect(mPriv->tube.data(), SIGNAL(stateChanged(Tp::TubeChannelState)), this, SLOT(onTubeStateChanged(Tp::TubeChannelState))); } } void PendingStreamTubeConnection::onTubeStateChanged(TubeChannelState state) { debug() << "Tube state changed to " << state; if (state == TubeChannelStateOpen) { // The tube is ready, populate its properties if (mPriv->type == SocketAddressTypeIPv4 || mPriv->type == SocketAddressTypeIPv6) { mPriv->tube->setIpAddress(qMakePair(mPriv->hostAddress, mPriv->port)); } else { // Unix socket mPriv->tube->setLocalAddress(mPriv->socketPath); } // Mark the operation as finished setFinished(); } else if (state != TubeChannelStateLocalPending) { // Something happened setFinishedWithError(QLatin1String("Connection refused"), QLatin1String("The connection to this tube was refused")); } } } telepathy-qt-0.9.6.1/TelepathyQt/readiness-helper.h0000644000175100017520000000756112530423576023602 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_readiness_helper_h_HEADER_GUARD_ #define _TelepathyQt_readiness_helper_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include class QDBusError; namespace Tp { class DBusProxy; class PendingOperation; class PendingReady; class RefCounted; class TP_QT_EXPORT ReadinessHelper : public QObject { Q_OBJECT Q_DISABLE_COPY(ReadinessHelper) public: typedef void (*IntrospectFunc)(void *data); struct Introspectable { public: Introspectable(); Introspectable(const QSet &makesSenseForStatuses, const Features &dependsOnFeatures, const QStringList &dependsOnInterfaces, IntrospectFunc introspectFunc, void *introspectFuncData, bool critical = false); Introspectable(const Introspectable &other); ~Introspectable(); Introspectable &operator=(const Introspectable &other); private: friend class ReadinessHelper; struct Private; friend struct Private; QSharedDataPointer mPriv; }; typedef QMap Introspectables; ReadinessHelper(RefCounted *object, uint currentStatus = 0, const Introspectables &introspectables = Introspectables(), QObject *parent = 0); ReadinessHelper(DBusProxy *proxy, uint currentStatus = 0, const Introspectables &introspectables = Introspectables(), QObject *parent = 0); ~ReadinessHelper(); void addIntrospectables(const Introspectables &introspectables); uint currentStatus() const; void setCurrentStatus(uint currentStatus); void forceCurrentStatus(uint currentStatus); QStringList interfaces() const; void setInterfaces(const QStringList &interfaces); Features requestedFeatures() const; Features actualFeatures() const; Features missingFeatures() const; bool isReady(const Feature &feature, QString *errorName = 0, QString *errorMessage = 0) const; bool isReady(const Features &features, QString *errorName = 0, QString *errorMessage = 0) const; PendingReady *becomeReady(const Features &requestedFeatures); void setIntrospectCompleted(const Feature &feature, bool success, const QString &errorName = QString(), const QString &errorMessage = QString()); void setIntrospectCompleted(const Feature &feature, bool success, const QDBusError &error); Q_SIGNALS: void statusReady(uint status); private Q_SLOTS: TP_QT_NO_EXPORT void iterateIntrospection(); TP_QT_NO_EXPORT void onProxyInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/file-transfer-channel.cpp0000644000175100017520000005260312530423576025047 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/file-transfer-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include namespace Tp { struct TP_QT_NO_EXPORT FileTransferChannel::Private { Private(FileTransferChannel *parent); ~Private(); static void introspectProperties(Private *self); void extractProperties(const QVariantMap &props); // Public object FileTransferChannel *parent; Client::ChannelTypeFileTransferInterface *fileTransferInterface; Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; // Introspection uint pendingState; uint pendingStateReason; uint state; uint stateReason; QString contentType; QString fileName; QString uri; QString contentHash; QString description; QDateTime lastModificationTime; FileHashType contentHashType; qulonglong initialOffset; qulonglong size; qulonglong transferredBytes; SupportedSocketMap availableSocketTypes; bool connected; bool finished; }; FileTransferChannel::Private::Private(FileTransferChannel *parent) : parent(parent), fileTransferInterface(parent->interface()), properties(parent->interface()), readinessHelper(parent->readinessHelper()), pendingState(FileTransferStateNone), pendingStateReason(FileTransferStateChangeReasonNone), state(pendingState), stateReason(pendingStateReason), contentHashType(FileHashTypeNone), initialOffset(0), size(0), transferredBytes(0), connected(false), finished(false) { parent->connect(fileTransferInterface, SIGNAL(InitialOffsetDefined(qulonglong)), SLOT(onInitialOffsetDefined(qulonglong))); parent->connect(fileTransferInterface, SIGNAL(FileTransferStateChanged(uint,uint)), SLOT(onStateChanged(uint,uint))); parent->connect(fileTransferInterface, SIGNAL(TransferredBytesChanged(qulonglong)), SLOT(onTransferredBytesChanged(qulonglong))); ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectProperties, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); } FileTransferChannel::Private::~Private() { } void FileTransferChannel::Private::introspectProperties( FileTransferChannel::Private *self) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll( TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotProperties(QDBusPendingCallWatcher*))); } void FileTransferChannel::Private::extractProperties(const QVariantMap &props) { pendingState = state = qdbus_cast(props[QLatin1String("State")]); contentType = qdbus_cast(props[QLatin1String("ContentType")]); fileName = qdbus_cast(props[QLatin1String("Filename")]); uri = qdbus_cast(props[QLatin1String("URI")]); contentHash = qdbus_cast(props[QLatin1String("ContentHash")]); description = qdbus_cast(props[QLatin1String("Description")]); lastModificationTime.setTime_t((uint) qdbus_cast(props[QLatin1String("Date")])); contentHashType = (FileHashType) qdbus_cast(props[QLatin1String("ContentHashType")]); initialOffset = qdbus_cast(props[QLatin1String("InitialOffset")]); size = qdbus_cast(props[QLatin1String("Size")]); transferredBytes = qdbus_cast(props[QLatin1String("TransferredBytes")]); availableSocketTypes = qdbus_cast(props[QLatin1String("AvailableSocketTypes")]); } /** * \class FileTransferChannel * \ingroup clientchannel * \headerfile TelepathyQt/file-transfer-channel.h * * \brief The FileTransferChannel class represents a Telepathy channel of type * FileTransfer. * * For more specialized file transfer classes, please refer to * OutgoingFileTransferChannel and IncomingFileTransferChannel. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * FileTransferChannel object usable. * * Note that this feature must be enabled in order to use most * FileTransferChannel methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature FileTransferChannel::FeatureCore = Feature(QLatin1String(FileTransferChannel::staticMetaObject.className()), 0); /** * Create a new FileTransferChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A FileTransferChannelPtr object pointing to the newly created * FileTransferChannel object. */ FileTransferChannelPtr FileTransferChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return FileTransferChannelPtr(new FileTransferChannel(connection, objectPath, immutableProperties, FileTransferChannel::FeatureCore)); } /** * Construct a new FileTransferChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on FileTransferChannel::FeatureCore. */ FileTransferChannel::FileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ FileTransferChannel::~FileTransferChannel() { delete mPriv; } /** * Return the state of the file transfer as described by #FileTransferState. * * Change notification is via the stateChanged() signal. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The state as #FileTransferState. * \sa stateReason() */ FileTransferState FileTransferChannel::state() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling state"; } return (FileTransferState) mPriv->state; } /** * Return the reason for the state change as described by the #FileTransferStateChangeReason. * * Change notification is via the stateChanged() signal. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The state reason as #FileTransferStateChangeReason. * \sa state() */ FileTransferStateChangeReason FileTransferChannel::stateReason() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling stateReason"; } return (FileTransferStateChangeReason) mPriv->stateReason; } /** * Return the name of the file on the sender's side. This is given as * a suggested filename for the receiver. * * This property should be the basename of the file being sent. For example, if * the sender sends the file /home/user/monkey.pdf then this property should be * set to monkey.pdf. * * This property cannot change once the channel has been created. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The suggested filename for the receiver. */ QString FileTransferChannel::fileName() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling fileName"; } return mPriv->fileName; } /** * Return the file's MIME type. * * This property cannot change once the channel has been created. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The file's MIME type. */ QString FileTransferChannel::contentType() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling contentType"; } return mPriv->contentType; } /** * Return the size of the file. * * Note that the size is not guaranteed to be exactly right for * incoming files. This is merely a hint and should not be used to know when the * transfer finished. * * For unknown sizes the return value can be UINT64_MAX. * * This property cannot change once the channel has been created. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The file size. */ qulonglong FileTransferChannel::size() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling size"; } return mPriv->size; } /** * Return the URI of the file. * * On outgoing file transfers, this property cannot change after the channel * is requested. For incoming file transfers, this property may be set by the * channel handler before calling AcceptFile to inform observers where the * incoming file will be saved. When the URI property is set, the signal * IncomingFileTransferChannel::uriDefined() is emitted. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The file uri. * \sa IncomingFileTransferChannel::uriDefined() */ QString FileTransferChannel::uri() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling uri"; } return mPriv->uri; } /** * Return the type of the contentHash(). * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The content hash type as #FileHashType. * \sa contentHash() */ FileHashType FileTransferChannel::contentHashType() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling contentHashType"; } return mPriv->contentHashType; } /** * Return the hash of the contents of the file transfer, of type described in * the value of the contentHashType(). * * Its value MUST correspond to the appropriate type of the contentHashType(). * If the contentHashType() is set to #FileHashTypeNone, then the * returned value is an empty string. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The hash of the contents. * \sa contentHashType() */ QString FileTransferChannel::contentHash() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling contentHash"; } if (mPriv->contentHashType == FileHashTypeNone) { return QString(); } return mPriv->contentHash; } /** * Return the description of the file transfer. * * This property cannot change once the channel has been created. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The description. */ QString FileTransferChannel::description() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling description"; } return mPriv->description; } /** * Return the last modification time of the file being transferred. This cannot * change once the channel has been created. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The file modification time as QDateTime. */ QDateTime FileTransferChannel::lastModificationTime() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling lastModificationTime"; } return mPriv->lastModificationTime; } /** * Return the offset in bytes from which the file will be sent. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The offset in bytes. * \sa initialOffsetDefined() */ qulonglong FileTransferChannel::initialOffset() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling initialOffset"; } return mPriv->initialOffset; } /** * Return the number of bytes that have been transferred. * * Change notification is via the transferredBytesChanged() signal. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The number of bytes. * \sa transferredBytesChanged() */ qulonglong FileTransferChannel::transferredBytes() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling transferredBytes"; } return mPriv->transferredBytes; } /** * Return a mapping from address types (members of #SocketAddressType) to arrays * of access-control type (members of #SocketAccessControl) that the CM * supports for sockets with that address type. * * For simplicity, if a CM supports offering a particular type of file transfer, * it is assumed to support accepting it. All CMs support at least * SocketAddressTypeIPv4. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \return The available socket types as a map from address types to arrays of access-control type. */ SupportedSocketMap FileTransferChannel::availableSocketTypes() const { if (!isReady(FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling availableSocketTypes"; } return mPriv->availableSocketTypes; } /** * Cancel a file transfer. * * \return A PendingOperation object which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *FileTransferChannel::cancel() { return requestClose(); } /** * Protected virtual method called when the state becomes * #FileTransferStateOpen. * * Specialized classes should reimplement this method and call setConnected() * when the connection is established. * * \sa setConnected() */ void FileTransferChannel::connectToHost() { // do nothing } /** * Return whether a connection has been established. * * \return \c true if the connections has been established, \c false otherwise. * \sa setConnected() */ bool FileTransferChannel::isConnected() const { return mPriv->connected; } /** * Indicate whether a connection has been established. * * Specialized classes that reimplement connectToHost() must call this method * once the connection has been established or setFinished() if an error * occurred. * * \sa isConnected(), connectToHost(), setFinished() */ void FileTransferChannel::setConnected() { mPriv->connected = true; } /** * Return whether sending/receiving has finished. * * \return \c true if sending/receiving has finished, \c false otherwise. */ bool FileTransferChannel::isFinished() const { return mPriv->finished; } /** * Protected virtual method called when an error occurred and the transfer * should finish. * * Specialized classes should reimplement this method and close the IO devices * and do all the needed cleanup. * * Note that for specialized classes that reimplement connectToHost() and set * isConnected() to true, the state will not change to * #FileTransferStateCompleted once the state change is received. * * When finished sending/receiving the specialized class MUST call this method * and then the state will change to the latest pending state. */ void FileTransferChannel::setFinished() { mPriv->finished = true; // do the actual state change, in case we are in // FileTransferStateCompleted pendingState changeState(); } void FileTransferChannel::gotProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QVariantMap props = reply.value(); mPriv->extractProperties(props); debug() << "Got reply to Properties::GetAll(FileTransferChannel)"; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { warning().nospace() << "Properties::GetAll(FileTransferChannel) failed " "with " << reply.error().name() << ": " << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); } } void FileTransferChannel::changeState() { if (mPriv->state == mPriv->pendingState) { return; } mPriv->state = mPriv->pendingState; mPriv->stateReason = mPriv->pendingStateReason; emit stateChanged((FileTransferState) mPriv->state, (FileTransferStateChangeReason) mPriv->stateReason); } void FileTransferChannel::onStateChanged(uint state, uint stateReason) { if (state == (uint) mPriv->pendingState) { return; } debug() << "File transfer state changed to" << state << "with reason" << stateReason; mPriv->pendingState = (FileTransferState) state; mPriv->pendingStateReason = (FileTransferStateChangeReason) stateReason; switch (state) { case FileTransferStateOpen: // try to connect to host, for handlers this // connect to host, as the user called Accept/ProvideFile // and have the host addr, for observers this will do nothing and // everything will keep working connectToHost(); changeState(); break; case FileTransferStateCompleted: //iIf already finished sending/receiving, just change the state, // if not completed will only be set when: // IncomingChannel: // - The input socket closes // OutgoingChannel: // - Input EOF is reached or the output socket is closed // // we also check for connected as observers will never be connected // and finished will never be set, but we need to work anyway. if (mPriv->finished || !mPriv->connected) { changeState(); } break; case FileTransferStateCancelled: // if already finished sending/receiving, just change the state, // if not finish now and change the state if (!mPriv->finished) { setFinished(); } else { changeState(); } break; default: changeState(); break; } } void FileTransferChannel::onInitialOffsetDefined(qulonglong initialOffset) { mPriv->initialOffset = initialOffset; emit initialOffsetDefined(initialOffset); } void FileTransferChannel::onTransferredBytesChanged(qulonglong count) { mPriv->transferredBytes = count; emit transferredBytesChanged(count); } void FileTransferChannel::onUriDefined(const QString &uri) { mPriv->uri = uri; // Signal is emitted only by IncomingFileTransferChannels } /** * \fn void FileTransferChannel::stateChanged(Tp::FileTransferState state, * Tp::FileTransferStateChangeReason reason) * * Emitted when the value of state() changes. * * \param state The new state of this file transfer channel. * \param reason The reason for the change of state. * \sa state() */ /** * \fn void FileTransferChannel::initialOffsetDefined(qulonglong initialOffset) * * Emitted when the initial offset for the file transfer is * defined. * * \param initialOffset The new initial offset for the file transfer. * \sa initialOffset() */ /** * \fn void FileTransferChannel::transferredBytesChanged(qulonglong count); * * Emitted when the value of transferredBytes() changes. * * \param count The new number of bytes transferred. * \sa transferredBytes() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeFileTransferInterface0000644000175100017520000000042512530423576026452 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeFileTransferInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeFileTransferInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-contacts.cpp0000644000175100017520000005740512530423576024145 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2011 Collabora Ltd. * @copyright Copyright (C) 2008-2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/pending-contacts-internal.h" #include "TelepathyQt/_gen/pending-contacts.moc.hpp" #include "TelepathyQt/_gen/pending-contacts-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include // FIXME: Refactor PendingContacts code to make it more readable/maintainable and reuse common code // when appropriate. namespace Tp { struct TP_QT_NO_EXPORT PendingContacts::Private { Private(PendingContacts *parent, const ContactManagerPtr &manager, const UIntList &handles, const Features &features, const Features &missingFeatures, const QMap &satisfyingContacts) : parent(parent), manager(manager), features(features), missingFeatures(missingFeatures), satisfyingContacts(satisfyingContacts), requestType(PendingContacts::ForHandles), handles(handles), nested(0) { } Private(PendingContacts *parent, const ContactManagerPtr &manager, const QStringList &list, PendingContacts::RequestType type, const Features &features) : parent(parent), manager(manager), features(features), missingFeatures(features), requestType(type), addresses(list), nested(0) { if (type != PendingContacts::ForIdentifiers && type != PendingContacts::ForUris) { Q_ASSERT(false); } } Private(PendingContacts *parent, const ContactManagerPtr &manager, const QString &vcardField, const QStringList &vcardAddresses, const Features &features) : parent(parent), manager(manager), features(features), missingFeatures(features), requestType(PendingContacts::ForVCardAddresses), addresses(vcardAddresses), vcardField(vcardField), nested(0) { } Private(PendingContacts *parent, const ContactManagerPtr &manager, const QList &contactsToUpgrade, const Features &features) : parent(parent), manager(manager), features(features), requestType(PendingContacts::Upgrade), contactsToUpgrade(contactsToUpgrade), nested(0) { } void setFinished(); bool checkRequestTypeAndState(const char *methodName, const char *debug, RequestType type); // Public object PendingContacts *parent; // Generic parameters ContactManagerPtr manager; Features features; Features missingFeatures; QMap satisfyingContacts; // Request type specific parameters RequestType requestType; UIntList handles; QStringList addresses; QString vcardField; QList contactsToUpgrade; PendingContacts *nested; // Results QList contacts; UIntList invalidHandles; QStringList validIds; QHash > invalidIds; QStringList validAddresses; QStringList invalidAddresses; ReferencedHandles handlesToInspect; }; void PendingContacts::Private::setFinished() { ConnectionLowlevelPtr connLowlevel = manager->connection()->lowlevel(); UIntList handles = invalidHandles; foreach (uint handle, handles) { if (connLowlevel->hasContactId(handle)) { satisfyingContacts.insert(handle, manager->ensureContact(handle, connLowlevel->contactId(handle), missingFeatures)); invalidHandles.removeOne(handle); } } parent->setFinished(); } bool PendingContacts::Private::checkRequestTypeAndState(const char *methodName, const char *debug, RequestType type) { if (!parent->isFinished()) { warning().nospace() << "PendingContacts::" << methodName << "() called before finished"; return false; } else if (parent->isError()) { warning().nospace() << "PendingContacts::" << methodName << "() called when errored"; return false; } else if (requestType != type) { warning().nospace() << "PendingContacts::" << methodName << "() called for" << this << "which is not for " << debug; return false; } return true; } /** * \class PendingContacts * \ingroup clientconn * \headerfile TelepathyQt/pending-contacts.h * * \brief The PendingContacts class is used by ContactManager when * creating/updating Contact objects. * * See \ref async_model */ PendingContacts::PendingContacts(const ContactManagerPtr &manager, const UIntList &handles, const Features &features, const Features &missingFeatures, const QStringList &interfaces, const QMap &satisfyingContacts, const QSet &otherContacts, const QString &errorName, const QString &errorMessage) : PendingOperation(manager->connection()), mPriv(new Private(this, manager, handles, features, missingFeatures, satisfyingContacts)) { if (!errorName.isEmpty()) { setFinishedWithError(errorName, errorMessage); return; } if (!otherContacts.isEmpty()) { ConnectionPtr conn = manager->connection(); if (conn->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS)) { PendingContactAttributes *attributes = conn->lowlevel()->contactAttributes(otherContacts.toList(), interfaces, true); connect(attributes, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAttributesFinished(Tp::PendingOperation*))); } else { // fallback to just create the contacts PendingHandles *handles = conn->lowlevel()->referenceHandles(HandleTypeContact, otherContacts.toList()); connect(handles, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onReferenceHandlesFinished(Tp::PendingOperation*))); } } else { allAttributesFetched(); } } PendingContacts::PendingContacts(const ContactManagerPtr &manager, const QStringList &list, RequestType type, const Features &features, const QStringList &interfaces, const QString &errorName, const QString &errorMessage) : PendingOperation(manager->connection()), mPriv(new Private(this, manager, list, type, features)) { if (!errorName.isEmpty()) { setFinishedWithError(errorName, errorMessage); return; } ConnectionPtr conn = manager->connection(); if (type == ForIdentifiers) { Q_ASSERT(interfaces.isEmpty()); PendingHandles *handles = conn->lowlevel()->requestHandles(HandleTypeContact, list); connect(handles, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestHandlesFinished(Tp::PendingOperation*))); } else if (type == ForUris) { Client::ConnectionInterfaceAddressingInterface *connAddressingIface = conn->optionalInterface( OptionalInterfaceFactory::CheckInterfaceSupported); if (!connAddressingIface) { setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Connection does not support Addressing interface")); return; } PendingAddressingGetContacts *pa = new PendingAddressingGetContacts(conn, list, interfaces); connect(pa, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAddressingGetContactsFinished(Tp::PendingOperation*))); } } PendingContacts::PendingContacts(const ContactManagerPtr &manager, const QString &vcardField, const QStringList &vcardAddresses, const Features &features, const QStringList &interfaces, const QString &errorName, const QString &errorMessage) : PendingOperation(manager->connection()), mPriv(new Private(this, manager, vcardField, vcardAddresses, features)) { if (!errorName.isEmpty()) { setFinishedWithError(errorName, errorMessage); return; } ConnectionPtr conn = manager->connection(); Client::ConnectionInterfaceAddressingInterface *connAddressingIface = conn->optionalInterface( OptionalInterfaceFactory::CheckInterfaceSupported); if (!connAddressingIface) { setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Connection does not support Addressing interface")); return; } PendingAddressingGetContacts *pa = new PendingAddressingGetContacts(conn, vcardField, vcardAddresses, interfaces); connect(pa, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAddressingGetContactsFinished(Tp::PendingOperation*))); } PendingContacts::PendingContacts(const ContactManagerPtr &manager, const QList &contacts, const Features &features, const QString &errorName, const QString &errorMessage) : PendingOperation(manager->connection()), mPriv(new Private(this, manager, contacts, features)) { if (!errorName.isEmpty()) { setFinishedWithError(errorName, errorMessage); return; } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles.push_back(contact->handle()[0]); } mPriv->nested = manager->contactsForHandles(handles, features); connect(mPriv->nested, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onNestedFinished(Tp::PendingOperation*))); } /** * Class destructor. */ PendingContacts::~PendingContacts() { delete mPriv; } ContactManagerPtr PendingContacts::manager() const { return mPriv->manager; } Features PendingContacts::features() const { return mPriv->features; } bool PendingContacts::isForHandles() const { return mPriv->requestType == ForHandles; } UIntList PendingContacts::handles() const { if (!isForHandles()) { warning() << "Tried to get handles from" << this << "which is not for handles!"; } return mPriv->handles; } bool PendingContacts::isForIdentifiers() const { return mPriv->requestType == ForIdentifiers; } QStringList PendingContacts::identifiers() const { if (!isForIdentifiers()) { warning() << "Tried to get identifiers from" << this << "which is not for identifiers!"; return QStringList(); } return mPriv->addresses; } bool PendingContacts::isForVCardAddresses() const { return mPriv->requestType == ForVCardAddresses; } QString PendingContacts::vcardField() const { if (!isForVCardAddresses()) { warning() << "Tried to get vcard field from" << this << "which is not for vcard addresses!"; } return mPriv->vcardField; } QStringList PendingContacts::vcardAddresses() const { if (!isForVCardAddresses()) { warning() << "Tried to get vcard addresses from" << this << "which is not for vcard addresses!"; return QStringList(); } return mPriv->addresses; } bool PendingContacts::isForUris() const { return mPriv->requestType == ForUris; } QStringList PendingContacts::uris() const { if (!isForUris()) { warning() << "Tried to get uris from" << this << "which is not for uris!"; return QStringList(); } return mPriv->addresses; } bool PendingContacts::isUpgrade() const { return mPriv->requestType == Upgrade; } QList PendingContacts::contactsToUpgrade() const { if (!isUpgrade()) { warning() << "Tried to get contacts to upgrade from" << this << "which is not an upgrade!"; } return mPriv->contactsToUpgrade; } QList PendingContacts::contacts() const { if (!isFinished()) { warning() << "PendingContacts::contacts() called before finished"; } else if (isError()) { warning() << "PendingContacts::contacts() called when errored"; } return mPriv->contacts; } UIntList PendingContacts::invalidHandles() const { if (!mPriv->checkRequestTypeAndState("invalidHandles", "handles", ForHandles)) { return UIntList(); } return mPriv->invalidHandles; } QStringList PendingContacts::validIdentifiers() const { if (!mPriv->checkRequestTypeAndState("validIdentifiers", "IDs", ForIdentifiers)) { return QStringList(); } return mPriv->validIds; } QHash > PendingContacts::invalidIdentifiers() const { if (!mPriv->checkRequestTypeAndState("invalidIdentifiers", "IDs", ForIdentifiers)) { return QHash >(); } return mPriv->invalidIds; } QStringList PendingContacts::validVCardAddresses() const { if (!mPriv->checkRequestTypeAndState("validVCardAddresses", "vcard addresses", ForVCardAddresses)) { return QStringList(); } return mPriv->validAddresses; } QStringList PendingContacts::invalidVCardAddresses() const { if (!mPriv->checkRequestTypeAndState("invalidVCardAddresses", "vcard addresses", ForVCardAddresses)) { return QStringList(); } return mPriv->invalidAddresses; } QStringList PendingContacts::validUris() const { if (!mPriv->checkRequestTypeAndState("validUris", "URIS", ForUris)) { return QStringList(); } return mPriv->validAddresses; } QStringList PendingContacts::invalidUris() const { if (!mPriv->checkRequestTypeAndState("invalidUris", "URIS", ForUris)) { return QStringList(); } return mPriv->invalidAddresses; } void PendingContacts::onAttributesFinished(PendingOperation *operation) { PendingContactAttributes *pendingAttributes = qobject_cast(operation); if (pendingAttributes->isError()) { debug() << "PendingAttrs error" << pendingAttributes->errorName() << "message" << pendingAttributes->errorMessage(); setFinishedWithError(pendingAttributes->errorName(), pendingAttributes->errorMessage()); return; } ReferencedHandles validHandles = pendingAttributes->validHandles(); ContactAttributesMap attributes = pendingAttributes->attributes(); foreach (uint handle, mPriv->handles) { if (!mPriv->satisfyingContacts.contains(handle)) { int indexInValid = validHandles.indexOf(handle); if (indexInValid >= 0) { ReferencedHandles referencedHandle = validHandles.mid(indexInValid, 1); QVariantMap handleAttributes = attributes[handle]; mPriv->satisfyingContacts.insert(handle, manager()->ensureContact(referencedHandle, mPriv->missingFeatures, handleAttributes)); } else { mPriv->invalidHandles.push_back(handle); } } } allAttributesFetched(); } void PendingContacts::onRequestHandlesFinished(PendingOperation *operation) { PendingHandles *pendingHandles = qobject_cast(operation); mPriv->validIds = pendingHandles->validNames(); mPriv->invalidIds = pendingHandles->invalidNames(); if (pendingHandles->isError()) { debug() << "RequestHandles error" << operation->errorName() << "message" << operation->errorMessage(); setFinishedWithError(operation->errorName(), operation->errorMessage()); return; } mPriv->nested = manager()->contactsForHandles(pendingHandles->handles(), features()); connect(mPriv->nested, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onNestedFinished(Tp::PendingOperation*))); } void PendingContacts::onAddressingGetContactsFinished(PendingOperation *operation) { PendingAddressingGetContacts *pa = qobject_cast(operation); Q_ASSERT(pa->isForUris() || pa->isForVCardAddresses()); mPriv->validAddresses = pa->validAddresses(); mPriv->invalidAddresses = pa->invalidAddresses(); if (pa->isError()) { setFinishedWithError(operation->errorName(), operation->errorMessage()); return; } ConnectionPtr conn = mPriv->manager->connection(); ContactAttributesMap attributes = pa->attributes(); UIntList handles = attributes.keys(); ReferencedHandles referencedHandles(conn, HandleTypeContact, handles); foreach (uint handle, handles) { int indexInValid = referencedHandles.indexOf(handle); Q_ASSERT(indexInValid >= 0); ReferencedHandles referencedHandle = referencedHandles.mid(indexInValid, 1); QVariantMap handleAttributes = attributes[handle]; ContactPtr contact = mPriv->manager->ensureContact(referencedHandle, mPriv->missingFeatures, handleAttributes); mPriv->contacts.push_back(contact); } setFinished(); } void PendingContacts::onReferenceHandlesFinished(PendingOperation *operation) { PendingHandles *pendingHandles = qobject_cast(operation); if (pendingHandles->isError()) { debug() << "ReferenceHandles error" << operation->errorName() << "message" << operation->errorMessage(); setFinishedWithError(operation->errorName(), operation->errorMessage()); return; } ReferencedHandles validHandles = pendingHandles->handles(); UIntList invalidHandles = pendingHandles->invalidHandles(); ConnectionPtr conn = mPriv->manager->connection(); mPriv->handlesToInspect = ReferencedHandles(conn, HandleTypeContact, UIntList()); foreach (uint handle, mPriv->handles) { if (!mPriv->satisfyingContacts.contains(handle)) { int indexInValid = validHandles.indexOf(handle); if (indexInValid >= 0) { ReferencedHandles referencedHandle = validHandles.mid(indexInValid, 1); mPriv->handlesToInspect.append(referencedHandle); } else { mPriv->invalidHandles.push_back(handle); } } } QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( conn->baseInterface()->InspectHandles(HandleTypeContact, mPriv->handlesToInspect.toList()), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onInspectHandlesFinished(QDBusPendingCallWatcher*))); } void PendingContacts::onNestedFinished(PendingOperation *operation) { Q_ASSERT(operation == mPriv->nested); if (operation->isError()) { debug() << " error" << operation->errorName() << "message" << operation->errorMessage(); setFinishedWithError(operation->errorName(), operation->errorMessage()); return; } mPriv->contacts = mPriv->nested->contacts(); mPriv->nested = 0; mPriv->setFinished(); } void PendingContacts::onInspectHandlesFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { debug().nospace() << "InspectHandles: error " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); return; } QStringList names = reply.value(); int i = 0; ConnectionPtr conn = mPriv->manager->connection(); foreach (uint handle, mPriv->handlesToInspect) { QVariantMap handleAttributes; handleAttributes.insert(TP_QT_IFACE_CONNECTION + QLatin1String("/contact-id"), names[i++]); ReferencedHandles referencedHandle(conn, HandleTypeContact, UIntList() << handle); mPriv->satisfyingContacts.insert(handle, manager()->ensureContact(referencedHandle, mPriv->missingFeatures, handleAttributes)); } allAttributesFetched(); watcher->deleteLater(); } void PendingContacts::allAttributesFetched() { foreach (uint handle, mPriv->handles) { if (mPriv->satisfyingContacts.contains(handle)) { mPriv->contacts.push_back(mPriv->satisfyingContacts[handle]); } } mPriv->setFinished(); } PendingAddressingGetContacts::PendingAddressingGetContacts(const ConnectionPtr &connection, const QString &vcardField, const QStringList &vcardAddresses, const QStringList &interfaces) : PendingOperation(connection), mConnection(connection), mRequestType(ForVCardAddresses), mVCardField(vcardField), mAddresses(vcardAddresses) { // no check for the interface here again, we expect this interface to be used only when // Conn.I.Addressing is available Client::ConnectionInterfaceAddressingInterface *connAddressingIface = connection->optionalInterface( OptionalInterfaceFactory::BypassInterfaceCheck); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( connAddressingIface->GetContactsByVCardField(vcardField, vcardAddresses, interfaces)); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onGetContactsFinished(QDBusPendingCallWatcher*))); } PendingAddressingGetContacts::PendingAddressingGetContacts(const ConnectionPtr &connection, const QStringList &uris, const QStringList &interfaces) : PendingOperation(connection), mConnection(connection), mRequestType(ForUris), mAddresses(uris) { // no check for the interface here again, we expect this interface to be used only when // Conn.I.Addressing is available Client::ConnectionInterfaceAddressingInterface *connAddressingIface = connection->optionalInterface( OptionalInterfaceFactory::BypassInterfaceCheck); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( connAddressingIface->GetContactsByURI(uris, interfaces)); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onGetContactsFinished(QDBusPendingCallWatcher*))); } PendingAddressingGetContacts::~PendingAddressingGetContacts() { } void PendingAddressingGetContacts::onGetContactsFinished(QDBusPendingCallWatcher* watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { AddressingNormalizationMap requested = reply.argumentAt<0>(); mValidHandles = requested.values(); mValidAddresses = requested.keys(); mInvalidAddresses = mAddresses.toSet().subtract(mValidAddresses.toSet()).toList(); mAttributes = reply.argumentAt<1>(); setFinished(); } else { debug().nospace() << "GetContactsBy* failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/channel.h0000644000175100017520000002327112530423576021754 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_h_HEADER_GUARD_ #define _TelepathyQt_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class Connection; class PendingOperation; class PendingReady; class TP_QT_EXPORT Channel : public StatefulDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(Channel) public: static const Feature FeatureCore; static const Feature FeatureConferenceInitialInviteeContacts; static ChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~Channel(); ConnectionPtr connection() const; QVariantMap immutableProperties() const; QString channelType() const; HandleType targetHandleType() const; uint targetHandle() const; QString targetId() const; ContactPtr targetContact() const; bool isRequested() const; ContactPtr initiatorContact() const; PendingOperation *requestClose(); PendingOperation *requestLeave(const QString &message = QString(), ChannelGroupChangeReason reason = ChannelGroupChangeReasonNone); ChannelGroupFlags groupFlags() const; bool groupCanAddContacts() const; bool groupCanAddContactsWithMessage() const; bool groupCanAcceptContactsWithMessage() const; PendingOperation *groupAddContacts(const QList &contacts, const QString &message = QString()); bool groupCanRescindContacts() const; bool groupCanRescindContactsWithMessage() const; bool groupCanRemoveContacts() const; bool groupCanRemoveContactsWithMessage() const; bool groupCanRejectContactsWithMessage() const; bool groupCanDepartWithMessage() const; PendingOperation *groupRemoveContacts(const QList &contacts, const QString &message = QString(), ChannelGroupChangeReason reason = ChannelGroupChangeReasonNone); Contacts groupContacts(bool includeSelfContact = true) const; Contacts groupLocalPendingContacts(bool includeSelfContact = true) const; Contacts groupRemotePendingContacts(bool includeSelfContact = true) const; class GroupMemberChangeDetails { public: GroupMemberChangeDetails(); GroupMemberChangeDetails(const GroupMemberChangeDetails &other); ~GroupMemberChangeDetails(); GroupMemberChangeDetails &operator=(const GroupMemberChangeDetails &other); bool isValid() const { return mPriv.constData() != 0; } bool hasActor() const; ContactPtr actor() const; bool hasReason() const { return allDetails().contains(QLatin1String("change-reason")); } ChannelGroupChangeReason reason() const { return (ChannelGroupChangeReason) qdbus_cast(allDetails().value(QLatin1String("change-reason"))); } bool hasMessage() const { return allDetails().contains(QLatin1String("message")); } QString message () const { return qdbus_cast(allDetails().value(QLatin1String("message"))); } bool hasError() const { return allDetails().contains(QLatin1String("error")); } QString error() const { return qdbus_cast(allDetails().value(QLatin1String("error"))); } bool hasDebugMessage() const { return allDetails().contains(QLatin1String("debug-message")); } QString debugMessage() const { return qdbus_cast(allDetails().value(QLatin1String("debug-message"))); } QVariantMap allDetails() const; private: friend class Channel; friend class Contact; friend class ContactManager; TP_QT_NO_EXPORT GroupMemberChangeDetails(const ContactPtr &actor, const QVariantMap &details); struct Private; friend struct Private; QSharedDataPointer mPriv; }; GroupMemberChangeDetails groupLocalPendingContactChangeInfo(const ContactPtr &contact) const; GroupMemberChangeDetails groupSelfContactRemoveInfo() const; bool groupAreHandleOwnersAvailable() const; HandleOwnerMap groupHandleOwners() const; bool groupIsSelfContactTracked() const; ContactPtr groupSelfContact() const; bool isConference() const; Contacts conferenceInitialInviteeContacts() const; QList conferenceChannels() const; QList conferenceInitialChannels() const; QHash conferenceOriginalChannels() const; bool supportsConferenceMerging() const; PendingOperation *conferenceMergeChannel(const ChannelPtr &channel); bool supportsConferenceSplitting() const; PendingOperation *conferenceSplitChannel(); Q_SIGNALS: void groupFlagsChanged(Tp::ChannelGroupFlags flags, Tp::ChannelGroupFlags added, Tp::ChannelGroupFlags removed); void groupCanAddContactsChanged(bool canAddContacts); void groupCanRemoveContactsChanged(bool canRemoveContacts); void groupCanRescindContactsChanged(bool canRescindContacts); void groupMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void groupHandleOwnersChanged(const Tp::HandleOwnerMap &owners, const Tp::UIntList &added, const Tp::UIntList &removed); void groupSelfContactChanged(); void conferenceChannelMerged(const Tp::ChannelPtr &channel); void conferenceChannelRemoved(const Tp::ChannelPtr &channel, const Tp::Channel::GroupMemberChangeDetails &details); protected: Channel(const ConnectionPtr &connection,const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature); Client::ChannelInterface *baseInterface() const; bool groupSelfHandleIsLocalPending() const; protected Q_SLOTS: PendingOperation *groupAddSelfHandle(); private Q_SLOTS: TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotChannelType(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotHandle(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotInterfaces(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onClosed(); TP_QT_NO_EXPORT void onConnectionReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onConnectionInvalidated(); TP_QT_NO_EXPORT void gotGroupProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotGroupFlags(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotAllMembers(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotLocalPendingMembersWithInfo(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotSelfHandle(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotContacts(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onGroupFlagsChanged(uint added, uint removed); TP_QT_NO_EXPORT void onMembersChanged(const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason); TP_QT_NO_EXPORT void onMembersChangedDetailed( const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details); TP_QT_NO_EXPORT void onHandleOwnersChanged(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed); TP_QT_NO_EXPORT void onSelfHandleChanged(uint selfHandle); TP_QT_NO_EXPORT void gotConferenceProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotConferenceInitialInviteeContacts(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onConferenceChannelMerged(const QDBusObjectPath &channel, uint channelSpecificHandle, const QVariantMap &properties); TP_QT_NO_EXPORT void onConferenceChannelMerged(const QDBusObjectPath &channel); TP_QT_NO_EXPORT void onConferenceChannelRemoved(const QDBusObjectPath &channel, const QVariantMap &details); TP_QT_NO_EXPORT void onConferenceChannelRemoved(const QDBusObjectPath &channel); TP_QT_NO_EXPORT void gotConferenceChannelRemovedActorContact(Tp::PendingOperation *op); private: class PendingLeave; friend class PendingLeave; struct Private; friend struct Private; Private *mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::Channel::GroupMemberChangeDetails); #endif telepathy-qt-0.9.6.1/TelepathyQt/account-filter.h0000644000175100017520000000226112530423576023257 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_filter_h_HEADER_GUARD_ #define _TelepathyQt_account_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { typedef Filter AccountFilter; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/contact-capabilities.cpp0000644000175100017520000001201312530423576024751 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { /** * \class ContactCapabilities * \ingroup clientconn * \headerfile TelepathyQt/contact-capabilities.h * * \brief The ContactCapabilities class represents the capabilities of a * Contact. */ /** * Construct a new ContactCapabilities object. */ ContactCapabilities::ContactCapabilities() : CapabilitiesBase() { } /** * Construct a new ContactCapabilities object. */ ContactCapabilities::ContactCapabilities(bool specificToContact) : CapabilitiesBase(specificToContact) { } /** * Construct a new ContactCapabilities object using the give \a rccs. * * \param rccs RequestableChannelClassList representing the capabilities of a * contact. */ ContactCapabilities::ContactCapabilities(const RequestableChannelClassList &rccs, bool specificToContact) : CapabilitiesBase(rccs, specificToContact) { } /** * Construct a new ContactCapabilities object using the give \a rccSpecs. * * \param rccSpecs RequestableChannelClassList representing the capabilities of a * contact. */ ContactCapabilities::ContactCapabilities(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact) : CapabilitiesBase(rccSpecs, specificToContact) { } /** * Class destructor. */ ContactCapabilities::~ContactCapabilities() { } /** * Returns whether creating a DBusTube channel with the given service targeting this contact is * expected to succeed. * * \return \c true if supported, \c false otherwise. */ bool ContactCapabilities::dbusTubes(const QString &serviceName) const { RequestableChannelClassSpec dbusTubeSpec = RequestableChannelClassSpec::dbusTube(serviceName); RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(dbusTubeSpec)) { return true; } } return false; } /** * Return the supported DBusTube services. * * \return A list of supported DBusTube services. */ QStringList ContactCapabilities::dbusTubeServices() const { QSet ret; RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.channelType() == TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE && rccSpec.targetHandleType() == HandleTypeContact && rccSpec.hasFixedProperty( TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"))) { ret << rccSpec.fixedProperty( TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName")).toString(); } } return ret.toList(); } /** * Return whether creating a StreamTube channel, using the given \a service, by providing a * contact identifier is supported. * * \return \c true if supported, \c false otherwise. */ bool ContactCapabilities::streamTubes(const QString &service) const { RequestableChannelClassSpec streamTubeSpec = RequestableChannelClassSpec::streamTube(service); RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(streamTubeSpec)) { return true; } } return false; } /** * Return the supported StreamTube services. * * \return A list of supported StreamTube services. */ QStringList ContactCapabilities::streamTubeServices() const { QSet ret; RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.channelType() == TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE && rccSpec.targetHandleType() == HandleTypeContact && rccSpec.hasFixedProperty( TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"))) { ret << rccSpec.fixedProperty( TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service")).toString(); } } return ret.toList(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/debug.cpp0000644000175100017520000001055712530423576021770 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define IN_TP_QT_HEADER #include "debug.h" #include "debug-internal.h" #include "config-version.h" /** * \defgroup debug Common debug support * * TelepathyQt has an internal mechanism for displaying debugging output. It * uses the Qt debugging subsystem, so if you want to redirect the messages, * use qInstallMsgHandler() from <QtGlobal>. * * Debugging output is divided into two categories: normal debug output and * warning messages. Normal debug output results in the normal operation of the * library, warning messages are output only when something goes wrong. Each * category can be invidually enabled. */ namespace Tp { /** * \fn void enableDebug(bool enable) * \ingroup debug * * Enable or disable normal debug output from the library. If the library is not * compiled with debug support enabled, this has no effect; no output is * produced in any case. * * The default is false ie. no debug output. * * \param enable Whether debug output should be enabled or not. */ /** * \fn void enableWarnings(bool enable) * \ingroup debug * * Enable or disable warning output from the library. If the library is not * compiled with debug support enabled, this has no effect; no output is * produced in any case. * * The default is true ie. warning output enabled. * * \param enable Whether warnings should be enabled or not. */ /** * \typedef DebugCallback * \ingroup debug * * \code * typedef QDebug (*DebugCallback)(const QString &libraryName, * const QString &libraryVersion, * QtMsgType type, * const QString &msg) * \endcode */ /** * \fn void setDebugCallback(DebugCallback cb) * \ingroup debug * * Set the callback method that will handle the debug output. * * If \p cb is NULL this method will set the defaultDebugCallback instead. * The default callback function will print the output using default Qt debug * system. * * \param cb A function pointer to the callback method or NULL. * \sa DebugCallback */ #ifdef ENABLE_DEBUG namespace { bool debugEnabled = false; bool warningsEnabled = true; DebugCallback debugCallback = NULL; } void enableDebug(bool enable) { debugEnabled = enable; } void enableWarnings(bool enable) { warningsEnabled = enable; } void setDebugCallback(DebugCallback cb) { debugCallback = cb; } Debug enabledDebug() { if (debugEnabled) { return Debug(QtDebugMsg); } else { return Debug(); } } Debug enabledWarning() { if (warningsEnabled) { return Debug(QtWarningMsg); } else { return Debug(); } } void Debug::invokeDebugCallback() { if (debugCallback) { debugCallback(QLatin1String("tp-qt"), QLatin1String(PACKAGE_VERSION), type, msg); } else { switch (type) { case QtDebugMsg: qDebug() << "tp-qt " PACKAGE_VERSION " DEBUG:" << qPrintable(msg); break; case QtWarningMsg: qWarning() << "tp-qt " PACKAGE_VERSION " WARN:" << qPrintable(msg); break; default: break; } } } #else /* !defined(ENABLE_DEBUG) */ void enableDebug(bool enable) { } void enableWarnings(bool enable) { } void setDebugCallback(DebugCallback cb) { } Debug enabledDebug() { return Debug(); } Debug enabledWarning() { return Debug(); } void Debug::invokeDebugCallback() { } #endif /* !defined(ENABLE_DEBUG) */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/Callbacks0000644000175100017520000000035112530423576021767 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Callbacks_HEADER_GUARD_ #define _TelepathyQt_Callbacks_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/feature.h0000644000175100017520000000454312530423576022000 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_feature_h_HEADER_GUARD_ #define _TelepathyQt_feature_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { class TP_QT_EXPORT Feature : public QPair { public: Feature(); Feature(const QString &className, uint id, bool critical = false); Feature(const Feature &other); ~Feature(); bool isValid() const { return mPriv.constData() != 0; } Feature &operator=(const Feature &other); bool isCritical() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT Features : public QSet { public: Features() { } Features(const Feature &feature) { insert(feature); } Features(const QSet &s) : QSet(s) { } }; inline Features operator|(const Feature &feature1, const Feature &feature2) { return Features() << feature1 << feature2; } inline Features operator|(const Features &features, const Feature &feature) { return Features(features) << feature; } inline uint qHash(const Features &features) { int ret = 0; Q_FOREACH (const Feature &feature, features) { int h = qHash(feature); ret ^= h; } return ret; } } // Tp Q_DECLARE_METATYPE(Tp::Feature); Q_DECLARE_METATYPE(Tp::Features); #endif telepathy-qt-0.9.6.1/TelepathyQt/streamed-media-channel.h0000644000175100017520000001613312530423576024632 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_streamed_media_channel_h_HEADER_GUARD_ #define _TelepathyQt_streamed_media_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include namespace Tp { class StreamedMediaChannel; typedef QList StreamedMediaStreams; class TP_QT_EXPORT_DEPRECATED PendingStreamedMediaStreams : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingStreamedMediaStreams) public: ~PendingStreamedMediaStreams(); StreamedMediaChannelPtr channel() const; StreamedMediaStreams streams() const; private Q_SLOTS: TP_QT_NO_EXPORT void gotStreams(QDBusPendingCallWatcher *op); TP_QT_NO_EXPORT void onStreamRemoved(const Tp::StreamedMediaStreamPtr &stream); TP_QT_NO_EXPORT void onStreamReady(Tp::PendingOperation *op); private: friend class StreamedMediaChannel; TP_QT_NO_EXPORT PendingStreamedMediaStreams(const StreamedMediaChannelPtr &channel, const ContactPtr &contact, const QList &types); struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT_DEPRECATED StreamedMediaStream : public Object, private ReadyObject { Q_OBJECT Q_DISABLE_COPY(StreamedMediaStream) public: enum SendingState { SendingStateNone = 0, SendingStatePendingSend = 1, SendingStateSending = 2 }; ~StreamedMediaStream(); StreamedMediaChannelPtr channel() const; uint id() const; ContactPtr contact() const; MediaStreamState state() const; MediaStreamType type() const; SendingState localSendingState() const; SendingState remoteSendingState() const; bool sending() const; bool receiving() const; bool localSendingRequested() const; bool remoteSendingRequested() const; MediaStreamDirection direction() const; MediaStreamPendingSend pendingSend() const; PendingOperation *requestSending(bool send); PendingOperation *requestReceiving(bool receive); PendingOperation *requestDirection(MediaStreamDirection direction); PendingOperation *requestDirection(bool send, bool receive); PendingOperation *startDTMFTone(DTMFEvent event); PendingOperation *stopDTMFTone(); Q_SIGNALS: void localSendingStateChanged(Tp::StreamedMediaStream::SendingState localSendingState); void remoteSendingStateChanged(Tp::StreamedMediaStream::SendingState remoteSendingState); private Q_SLOTS: TP_QT_NO_EXPORT void gotContact(Tp::PendingOperation *op); private: friend class PendingStreamedMediaStreams; friend class StreamedMediaChannel; static const Feature FeatureCore; TP_QT_NO_EXPORT StreamedMediaStream(const StreamedMediaChannelPtr &channel, const MediaStreamInfo &info); TP_QT_NO_EXPORT void gotDirection(uint direction, uint pendingSend); TP_QT_NO_EXPORT void gotStreamState(uint state); struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT_DEPRECATED StreamedMediaChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(StreamedMediaChannel) Q_ENUMS(StateChangeReason) public: static const Feature FeatureCore; static const Feature FeatureStreams; static const Feature FeatureLocalHoldState; enum StateChangeReason { StateChangeReasonUnknown = 0, StateChangeReasonUserRequested = 1 }; static StreamedMediaChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~StreamedMediaChannel(); bool awaitingLocalAnswer() const; bool awaitingRemoteAnswer() const; PendingOperation *acceptCall(); PendingOperation *hangupCall(); StreamedMediaStreams streams() const; StreamedMediaStreams streamsForType(MediaStreamType type) const; PendingStreamedMediaStreams *requestStream(const ContactPtr &contact, MediaStreamType type); PendingStreamedMediaStreams *requestStreams(const ContactPtr &contact, QList types); PendingOperation *removeStream(const StreamedMediaStreamPtr &stream); PendingOperation *removeStreams(const StreamedMediaStreams &streams); bool handlerStreamingRequired() const; LocalHoldState localHoldState() const; LocalHoldStateReason localHoldStateReason() const; PendingOperation *requestHold(bool hold); Q_SIGNALS: void streamAdded(const Tp::StreamedMediaStreamPtr &stream); void streamRemoved(const Tp::StreamedMediaStreamPtr &stream); void streamDirectionChanged(const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamDirection direction, Tp::MediaStreamPendingSend pendingSend); void streamStateChanged(const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamState state); void streamError(const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamError errorCode, const QString &errorMessage); void localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason); protected: StreamedMediaChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = StreamedMediaChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void onStreamReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotStreams(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onStreamAdded(uint, uint, uint); TP_QT_NO_EXPORT void onStreamRemoved(uint); TP_QT_NO_EXPORT void onStreamDirectionChanged(uint, uint, uint); TP_QT_NO_EXPORT void onStreamStateChanged(uint streamId, uint streamState); TP_QT_NO_EXPORT void onStreamError(uint, uint, const QString &); TP_QT_NO_EXPORT void gotLocalHoldState(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onLocalHoldStateChanged(uint, uint); private: friend class PendingStreamedMediaStreams; StreamedMediaStreamPtr addStream(const MediaStreamInfo &streamInfo); StreamedMediaStreamPtr lookupStreamById(uint streamId); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Channel0000644000175100017520000000034312530423576021461 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Channel_HEADER_GUARD_ #define _TelepathyQt_Channel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/account-property-filter.cpp0000644000175100017520000000526012530423576025476 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT AccountPropertyFilter::Private { Private() { if (supportedAccountProperties.isEmpty()) { const QMetaObject metaObject = Account::staticMetaObject; for (int i = metaObject.propertyOffset(); i < metaObject.propertyCount(); ++i) { supportedAccountProperties << QLatin1String(metaObject.property(i).name()); } } } static QStringList supportedAccountProperties; }; QStringList AccountPropertyFilter::Private::supportedAccountProperties; /** * \class Tp::AccountPropertyFilter * \ingroup utils * \headerfile TelepathyQt/account-property-filter.h * * \brief The AccountPropertyFilter class provides a filter object to be used * to filter accounts by properties. */ AccountPropertyFilter::AccountPropertyFilter() : GenericPropertyFilter(), mPriv(new Private()) { } AccountPropertyFilter::~AccountPropertyFilter() { delete mPriv; } bool AccountPropertyFilter::isValid() const { QVariantMap mFilter = filter(); if (mFilter.isEmpty()) { return false; } QVariantMap::const_iterator i = mFilter.constBegin(); QVariantMap::const_iterator end = mFilter.constEnd(); while (i != end) { QString propertyName = i.key(); if (!mPriv->supportedAccountProperties.contains(propertyName)) { warning() << "Invalid filter key" << propertyName << "while filtering account by properties"; return false; } ++i; } return true; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/contact-capabilities.h0000644000175100017520000000402712530423576024424 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_capabilities_h_HEADER_GUARD_ #define _TelepathyQt_contact_capabilities_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TestBackdoors; class TP_QT_EXPORT ContactCapabilities : public CapabilitiesBase { public: ContactCapabilities(); virtual ~ContactCapabilities(); bool dbusTubes(const QString &serviceName) const; QStringList dbusTubeServices() const; bool streamTubes(const QString &service) const; QStringList streamTubeServices() const; // later: // bool dbusTubes(const QString &service) const; // QStringList dbusTubeServices() const; protected: friend class Contact; friend class TestBackdoors; ContactCapabilities(bool specificToContact); ContactCapabilities(const RequestableChannelClassList &rccs, bool specificToContact); ContactCapabilities(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact); }; } // Tp Q_DECLARE_METATYPE(Tp::ContactCapabilities); #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus-error.cpp0000644000175100017520000000747112530423576022767 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { struct TP_QT_NO_EXPORT DBusError::Private { Private(const QString &name, const QString &message) : name(name), message(message) { } QString name; QString message; }; /** * \class DBusError * \ingroup servicesideimpl * \headerfile TelepathyQt/dbus-error.h * * \brief Small container class, containing a D-Bus error */ /** * Construct an empty DBusError */ DBusError::DBusError() : mPriv(0) { } /** * Construct a DBusError with the given error \a name and \a message. * * \param name The D-Bus error name. * \param message A human-readable description of the error. */ DBusError::DBusError(const QString &name, const QString &message) : mPriv(new Private(name, message)) { } /** * Class destructor. */ DBusError::~DBusError() { } /** * Compare this error with another one. * * \param other The other error to compare to. * \return \c true if the two errors have the same name and message * or \c false otherwise. */ bool DBusError::operator==(const DBusError &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return true; } return false; } return mPriv->name == other.mPriv->name && mPriv->message == other.mPriv->message; } /** * Compare this error with another one. * * \param other The other error to compare to. * \return \c false if the two errors have the same name and message * or \c true otherwise. */ bool DBusError::operator!=(const DBusError &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return false; } return true; } return mPriv->name != other.mPriv->name || mPriv->message != other.mPriv->message; } /** * Return the D-Bus name of this error. * * \return The D-Bus name of this error. */ QString DBusError::name() const { if (!isValid()) { return QString(); } return mPriv->name; } /** * Return the human-readable description of the error. * * \return The human-readable description of the error. */ QString DBusError::message() const { if (!isValid()) { return QString(); } return mPriv->message; } /** * Set this DBusError to contain the given error \a name and \a message. * * \param name The D-Bus error name to set. * \param message The description of the error to set. */ void DBusError::set(const QString &name, const QString &message) { if (!isValid()) { mPriv = new Private(name, message); return; } mPriv->name = name; mPriv->message = message; } /** * \fn bool DBusError::isValid() const * * Return whether this DBusError is set to contain an error or not. * * \return \c true if the error name and message have been set, * or \c false otherwise. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/PendingContactInfo0000644000175100017520000000040612530423576023625 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingContactInfo_HEADER_GUARD_ #define _TelepathyQt_PendingContactInfo_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/OptionalInterfaceFactory0000644000175100017520000000043012530423576025044 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_OptionalInterfaceFactory_HEADER_GUARD_ #define _TelepathyQt_OptionalInterfaceFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-manager.h0000644000175100017520000001056712530423576024117 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_manager_h_HEADER_GUARD_ #define _TelepathyQt_connection_manager_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class ConnectionManagerLowlevel; class PendingConnection; class PendingStringList; class TP_QT_EXPORT ConnectionManager : public StatelessDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(ConnectionManager) Q_PROPERTY(QString name READ name) Q_PROPERTY(QStringList supportedProtocols READ supportedProtocols) Q_PROPERTY(ProtocolInfoList protocols READ protocols) public: static const Feature FeatureCore; static ConnectionManagerPtr create(const QDBusConnection &bus, const QString &name); static ConnectionManagerPtr create(const QString &name, const ConnectionFactoryConstPtr &connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); static ConnectionManagerPtr create(const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); virtual ~ConnectionManager(); QString name() const; ConnectionFactoryConstPtr connectionFactory() const; ChannelFactoryConstPtr channelFactory() const; ContactFactoryConstPtr contactFactory() const; QStringList supportedProtocols() const; const ProtocolInfoList &protocols() const; bool hasProtocol(const QString &protocolName) const; ProtocolInfo protocol(const QString &protocolName) const; static PendingStringList *listNames( const QDBusConnection &bus = QDBusConnection::sessionBus()); #if defined(BUILDING_TP_QT) || defined(TP_QT_ENABLE_LOWLEVEL_API) ConnectionManagerLowlevelPtr lowlevel(); ConnectionManagerLowlevelConstPtr lowlevel() const; #endif protected: ConnectionManager(const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); Client::ConnectionManagerInterface *baseInterface() const; private Q_SLOTS: TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotProtocolsLegacy(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotParametersLegacy(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onProtocolReady(Tp::PendingOperation *watcher); private: friend class PendingConnection; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceCallStateInterface0000644000175100017520000000043112530423576026716 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceCallStateInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceCallStateInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-account.cpp0000644000175100017520000001371612530423576023760 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-account.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingAccount::Private { AccountPtr account; }; /** * \class PendingAccount * \ingroup clientaccount * \headerfile TelepathyQt/pending-account.h * * \brief The PendingAccount class represents the parameters of and the reply to * an asynchronous account request. * * Instances of this class cannot be constructed directly; the only way to get * one is via AccountManager. * * See \ref async_model */ /** * Construct a new PendingAccount object. * * \param manager AccountManager to use. * \param connectionManager Name of the connection manager to create the account * for. * \param protocol Name of the protocol to create the account for. * \param displayName Account display name. * \param parameters Account parameters. * \param properties An optional map from fully qualified D-Bus property * names such as "org.freedesktop.Telepathy.Account.Enabled" * to their values. */ PendingAccount::PendingAccount(const AccountManagerPtr &manager, const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap ¶meters, const QVariantMap &properties) : PendingOperation(manager), mPriv(new Private) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( manager->baseInterface()->CreateAccount(connectionManager, protocol, displayName, parameters, properties), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onCallFinished(QDBusPendingCallWatcher*))); } /** * Class destructor. */ PendingAccount::~PendingAccount() { delete mPriv; } /** * Return the account manager through which the request was made. * * \return A pointer to the AccountManager object. */ AccountManagerPtr PendingAccount::manager() const { return AccountManagerPtr(qobject_cast((AccountManager*) object().data())); } /** * Return the newly created account. * * \return A pointer to an Account object, or a null AccountPtr if an error occurred. */ AccountPtr PendingAccount::account() const { if (!isFinished()) { warning() << "PendingAccount::account called before finished, returning 0"; return AccountPtr(); } else if (!isValid()) { warning() << "PendingAccount::account called when not valid, returning 0"; return AccountPtr(); } return mPriv->account; } void PendingAccount::onCallFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QString objectPath = reply.value().path(); debug() << "Got reply to AccountManager.CreateAccount - object path:" << objectPath; PendingReady *readyOp = manager()->accountFactory()->proxy(manager()->busName(), objectPath, manager()->connectionFactory(), manager()->channelFactory(), manager()->contactFactory()); mPriv->account = AccountPtr::qObjectCast(readyOp->proxy()); connect(readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAccountBuilt(Tp::PendingOperation*))); } else { debug().nospace() << "CreateAccount failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } void PendingAccount::onAccountBuilt(Tp::PendingOperation *op) { Q_ASSERT(op->isFinished()); if (op->isError()) { warning() << "Making account ready using the factory failed:" << op->errorName() << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); } else { // AM is stateless, so the only way for it to become invalid is in the introspection phase, // and a PendingAccount should never be created if AM introspection hasn't succeeded Q_ASSERT(!manager().isNull() && manager()->isValid()); if (manager()->allAccounts().contains(mPriv->account)) { setFinished(); debug() << "New account" << mPriv->account->objectPath() << "built"; } else { // Have to wait for the AM to pick up the change and signal it so the world can be // assumed to be ~round when we finish connect(manager().data(), SIGNAL(newAccount(Tp::AccountPtr)), SLOT(onNewAccount(Tp::AccountPtr))); } } } void PendingAccount::onNewAccount(const AccountPtr &account) { if (account != mPriv->account) { return; } debug() << "Account" << account->objectPath() << "added to AM, finishing PendingAccount"; setFinished(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceContactGroupsInterface0000644000175100017520000000045212530423576030367 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceContactGroupsInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceContactGroupsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceLocationInterface0000644000175100017520000000044012530423576027341 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceLocationInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceLocationInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallContentInterfaceDTMFInterface0000644000175100017520000000043412530423576026435 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentInterfaceDTMFInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentInterfaceDTMFInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus.cpp0000644000175100017520000000204212530423576021625 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-dbus-body.hpp" #include "TelepathyQt/_gen/cli-dbus.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/dbus.xml0000644000175100017520000000052312530423576021645 0ustar00kaffeinekaffeine00000000000000 D-Bus interfaces telepathy-qt-0.9.6.1/TelepathyQt/future-channel.xml0000644000175100017520000000064512530423576023635 0ustar00kaffeinekaffeine00000000000000 Channel extensions from the future telepathy-qt-0.9.6.1/TelepathyQt/PendingConnection0000644000175100017520000000040212530423576023511 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingConnection_HEADER_GUARD_ #define _TelepathyQt_PendingConnection_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/MessageContentPartList0000644000175100017520000000041612530423576024514 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MessageContentPartList_HEADER_GUARD_ #define _TelepathyQt_MessageContentPartList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/stable-interfaces.xml0000644000175100017520000000220612530423576024303 0ustar00kaffeinekaffeine00000000000000 Telepathy D-Bus Interface Specification, TelepathyQt copy 0.17.7 telepathy-qt-0.9.6.1/TelepathyQt/call-interfaces.xml0000644000175100017520000000036512530423576023750 0ustar00kaffeinekaffeine00000000000000 Call interfaces, version 1 telepathy-qt-0.9.6.1/TelepathyQt/CMakeLists.txt0000644000175100017520000011236412530423576022735 0ustar00kaffeinekaffeine00000000000000file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen") # Set the required flags found in TelepathyDefaults set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VISIBILITY_HIDDEN_FLAGS} ${COMPILER_COVERAGE_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}") set(LD_FLAGS "${LD_FLAGS} ${VISIBILITY_HIDDEN_FLAGS} ${COMPILER_COVERAGE_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}") # We are building Telepathy-Qt add_definitions(-DBUILDING_TP_QT) configure_file(global.h.in ${CMAKE_CURRENT_BINARY_DIR}/global.h) # Sources for Tp-Qt set(telepathy_qt_SRCS abstract-client.cpp abstract-interface.cpp account.cpp account-factory.cpp account-manager.cpp account-property-filter.cpp account-set.cpp account-set-internal.h avatar.cpp call-channel.cpp call-content.cpp call-stream.cpp capabilities-base.cpp call-content.cpp call-content-media-description.cpp call-stream.cpp call-stream-endpoint.cpp captcha.cpp captcha-authentication.cpp channel.cpp channel-class-spec.cpp channel-dispatcher.cpp channel-dispatch-operation.cpp channel-factory.cpp channel-internal.h channel-request.cpp client.cpp client-registrar.cpp client-registrar-internal.h connection.cpp connection-capabilities.cpp connection-factory.cpp connection-internal.h connection-manager.cpp connection-manager-internal.h contact.cpp contact-capabilities.cpp contact-factory.cpp contact-manager.cpp contact-manager-roster.cpp contact-messenger.cpp contact-search-channel.cpp dbus.cpp dbus-proxy.cpp dbus-proxy-factory.cpp dbus-proxy-factory-internal.h dbus-tube-channel.cpp debug.cpp debug-receiver.cpp debug-internal.h fake-handler-manager-internal.cpp fake-handler-manager-internal.h feature.cpp file-transfer-channel.cpp file-transfer-channel-creation-properties.cpp fixed-feature-factory.cpp future.cpp future-internal.h handled-channel-notifier.cpp incoming-dbus-tube-channel.cpp incoming-file-transfer-channel.cpp incoming-stream-tube-channel.cpp key-file.cpp key-file.h location-info.cpp manager-file.cpp manager-file.h media-session-handler.cpp media-stream-handler.cpp message.cpp message-content-part.cpp object.cpp optional-interface-factory.cpp outgoing-dbus-tube-channel.cpp outgoing-file-transfer-channel.cpp outgoing-stream-tube-channel.cpp pending-account.cpp pending-captchas.cpp pending-channel.cpp pending-channel-request.cpp pending-channel-request-internal.h pending-connection.cpp pending-contact-attributes.cpp pending-contact-info.cpp pending-contacts.cpp pending-dbus-tube-connection.cpp pending-debug-message-list.cpp pending-handles.cpp pending-operation.cpp pending-ready.cpp pending-send-message.cpp pending-string.cpp pending-string-list.cpp pending-stream-tube-connection.cpp pending-variant.cpp presence.cpp pending-variant-map.cpp profile.cpp profile-manager.cpp properties.cpp protocol-info.cpp protocol-parameter.cpp readiness-helper.cpp requestable-channel-class-spec.cpp ready-object.cpp referenced-handles.cpp request-temporary-handler-internal.cpp request-temporary-handler-internal.h room-list-channel.cpp server-authentication-channel.cpp simple-call-observer.cpp simple-observer.cpp simple-observer-internal.h simple-stream-tube-handler.cpp simple-text-observer.cpp simple-text-observer-internal.h stream-tube-channel.cpp stream-tube-client.cpp stream-tube-client-internal.h stream-tube-server.cpp stream-tube-server-internal.h streamed-media-channel.cpp text-channel.cpp tls-certificate.cpp tube-channel.cpp types.cpp types-internal.h utils.cpp) # Exported headers for Tp-Qt set(telepathy_qt_HEADERS AbstractClient AbstractClientApprover abstract-client.h AbstractClientHandler AbstractClientObserver AbstractInterface abstract-interface.h Account account.h AccountCapabilityFilter account-capability-filter.h AccountFactory account-factory.h AccountFilter account-filter.h AccountInterface AccountInterfaceAddressingInterface AccountInterfaceAvatarInterface AccountInterfaceStorageInterface AccountManager account-manager.h AccountManagerInterface account-property-filter.h AccountPropertyFilter AccountSet account-set.h AndFilter and-filter.h AuthenticationTLSCertificateInterface AvatarData AvatarSpec avatar.h CallChannel call-channel.h Callbacks callbacks.h CallContent CallContentInterface CallContentInterfaceAudioControlInterface CallContentInterfaceDTMFInterface CallContentInterfaceMediaInterface CallContentInterfaceVideoControlInterface call-content.h CallContentMediaDescription CallContentMediaDescriptionInterface CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface CallContentMediaDescriptionInterfaceRTCPFeedbackInterface CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface call-content-media-description.h CallStream CallStreamInterface CallStreamInterfaceMediaInterface call-stream.h CallStreamEndpoint CallStreamEndpoint CallStreamEndpointInterface call-stream-endpoint.h CapabilitiesBase capabilities-base.h Captcha captcha.h CaptchaAuthentication captcha-authentication.h Channel channel.h ChannelClassFeatures channel-class-features.h ChannelClassSpec ChannelClassSpecList channel-class-spec.h ChannelDispatcher ChannelDispatcherInterface channel-dispatcher.h ChannelDispatchOperation channel-dispatch-operation.h ChannelDispatchOperationInterface ChannelFactory channel-factory.h ChannelInterface ChannelInterfaceAnonymityInterface ChannelInterfaceCaptchaAuthenticationInterface ChannelInterfaceCallStateInterface ChannelInterfaceChatStateInterface ChannelInterfaceConferenceInterface ChannelInterfaceDestroyableInterface ChannelInterfaceDTMFInterface ChannelInterfaceFileTransferMetadataInterface ChannelInterfaceGroupInterface ChannelInterfaceHoldInterface ChannelInterfaceMediaSignallingInterface ChannelInterfaceMessagesInterface ChannelInterfacePasswordInterface ChannelInterfaceRoomInterface ChannelInterfaceRoomConfigInterface ChannelInterfaceSASLAuthenticationInterface ChannelInterfaceSecurableInterface ChannelInterfaceServicePointInterface ChannelInterfaceSMSInterface ChannelInterfaceSubjectInterface ChannelInterfaceTubeInterface ChannelRequest ChannelRequestHints channel-request.h ChannelRequestInterface ChannelTypeCallInterface ChannelTypeContactListInterface ChannelTypeContactSearchInterface ChannelTypeDBusTubeInterface ChannelTypeFileTransferInterface ChannelTypeRoomListInterface ChannelTypeServerAuthenticationInterface ChannelTypeServerTLSConnectionInterface ChannelTypeStreamedMediaInterface ChannelTypeStreamTubeInterface ChannelTypeTextInterface ChannelTypeTubeInterface ChannelTypeTubesInterface Client ClientApproverInterface client.h ClientHandlerInterface ClientInterface ClientInterfaceRequestsInterface ClientObserverInterface ClientRegistrar client-registrar.h Connection ConnectionCapabilities connection-capabilities.h connection.h ConnectionFactory connection-factory.h connection-lowlevel.h ConnectionInterface ConnectionInterfaceAddressingInterface ConnectionInterfaceAliasingInterface ConnectionInterfaceAnonymityInterface ConnectionInterfaceAvatarsInterface ConnectionInterfaceBalanceInterface ConnectionInterfaceCapabilitiesInterface ConnectionInterfaceCellularInterface ConnectionInterfaceContactBlockingInterface ConnectionInterfaceClientTypesInterface ConnectionInterfaceContactCapabilitiesInterface ConnectionInterfaceContactGroupsInterface ConnectionInterfaceContactInfoInterface ConnectionInterfaceContactListInterface ConnectionInterfaceContactsInterface ConnectionInterfaceLocationInterface ConnectionInterfaceMailNotificationInterface ConnectionInterfacePowerSavingInterface ConnectionInterfacePresenceInterface ConnectionInterfaceRequestsInterface ConnectionInterfaceServicePointInterface ConnectionInterfaceSimplePresenceInterface ConnectionLowlevel ConnectionManager connection-manager.h connection-manager-lowlevel.h ConnectionManagerInterface ConnectionManagerLowlevel Constants constants.h Contact contact.h ContactCapabilities contact-capabilities.h ContactFactory contact-factory.h ContactManager contact-manager.h ContactMessenger contact-messenger.h ContactSearchChannel contact-search-channel.h DBus DBusDaemonInterface dbus.h DBusProxy dbus-proxy.h DBusProxyFactory dbus-proxy-factory.h DBusTubeChannel dbus-tube-channel.h Debug debug.h DebugReceiver debug-receiver.h Feature Features feature.h FileTransferChannel FileTransferChannelCreationProperties file-transfer-channel-creation-properties.h file-transfer-channel.h Filter filter.h FixedFeatureFactory fixed-feature-factory.h Functors functors.h GenericCapabilityFilter generic-capability-filter.h GenericPropertyFilter generic-property-filter.h Global ${CMAKE_CURRENT_BINARY_DIR}/global.h HandledChannelNotifier handled-channel-notifier.h IncomingDBusTubeChannel incoming-dbus-tube-channel.h IncomingFileTransferChannel incoming-file-transfer-channel.h IncomingStreamTubeChannel incoming-stream-tube-channel.h IntrospectableInterface LocationInfo location-info.h MediaSessionHandler media-session-handler.h MediaSessionHandlerInterface MediaStreamHandler media-stream-handler.h MediaStreamHandlerInterface Message message.h MessageContentPart MessageContentPartList message-content-part.h MethodInvocationContext method-invocation-context.h NotFilter not-filter.h Object object.h OptionalInterfaceFactory optional-interface-factory.h OrFilter or-filter.h OutgoingDBusTubeChannel outgoing-dbus-tube-channel.h OutgoingFileTransferChannel outgoing-file-transfer-channel.h OutgoingStreamTubeChannel outgoing-stream-tube-channel.h PeerInterface PendingAccount pending-account.h PendingCallContent PendingCaptchas pending-captchas.h PendingChannel pending-channel.h PendingChannelRequest pending-channel-request.h PendingComposite PendingConnection pending-connection.h PendingContactAttributes pending-contact-attributes.h PendingContactInfo pending-contact-info.h PendingContacts pending-contacts.h PendingDBusTubeConnection pending-dbus-tube-connection.h PendingDebugMessageList pending-debug-message-list.h PendingFailure PendingHandles pending-handles.h PendingOperation pending-operation.h PendingReady pending-ready.h PendingSendMessage pending-send-message.h PendingStreamedMediaStreams PendingStreamTubeConnection pending-stream-tube-connection.h PendingString pending-string.h PendingStringList pending-string-list.h PendingSuccess PendingVariant pending-variant.h PendingVariantMap pending-variant-map.h PendingVoid Presence presence.h PresenceSpec PresenceSpecList Profile profile.h ProfileManager profile-manager.h Properties properties.h PropertiesInterface PropertiesInterfaceInterface ProtocolInfo ProtocolInfoList protocol-info.h ProtocolInterface ProtocolInterfaceAddressingInterface ProtocolInterfaceAvatarsInterface ProtocolInterfacePresenceInterface ProtocolParameter ProtocolParameterList protocol-parameter.h ReadinessHelper readiness-helper.h ReadyObject ready-object.h ReceivedMessage RefCounted ReferencedHandles referenced-handles.h ReferencedHandlesIterator requestable-channel-class-spec.h RequestableChannelClassSpec RequestableChannelClassSpecList RoomListChannel room-list-channel.h ServerAuthenticationChannel server-authentication-channel.h SharedPtr shared-ptr.h SimpleCallObserver simple-call-observer.h SimpleObserver simple-observer.h simple-pending-operations.h SimpleTextObserver simple-text-observer.h StatefulDBusProxy StatelessDBusProxy StreamTubeChannel StreamTubeClient StreamTubeServer stream-tube-channel.h stream-tube-client.h stream-tube-server.h StreamedMediaChannel streamed-media-channel.h StreamedMediaStream TextChannel text-channel.h tls-certificate.h TubeChannel tube-channel.h Types types.h Utils utils.h SharedPtr) # Generated headers which will be installed and exported set(telepathy_qt_gen_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-account.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-account-manager.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-content.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-content-media-description.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-stream.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-stream-endpoint.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-dispatcher.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-dispatch-operation.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-request.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-client.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection-manager.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-dbus.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-debug-receiver.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-media-session-handler.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-media-stream-handler.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-properties.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-tls-certificate.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h) # Headers file moc will be run on set(telepathy_qt_MOC_SRCS abstract-interface.h account.h account-factory.h account-manager.h account-set.h account-set-internal.h call-channel.h call-content.h call-stream.h captcha-authentication.h captcha-authentication-internal.h channel.h channel-dispatch-operation.h channel-dispatch-operation-internal.h channel-factory.h channel-internal.h channel-request.h client-registrar.h client-registrar-internal.h connection.h connection-internal.h connection-lowlevel.h connection-manager.h connection-manager-internal.h connection-manager-lowlevel.h contact.h contact-manager.h contact-manager-internal.h contact-messenger.h contact-search-channel.h contact-search-channel-internal.h dbus-proxy.h dbus-proxy-factory.h dbus-proxy-factory-internal.h debug-receiver.h dbus-tube-channel.h fake-handler-manager-internal.h file-transfer-channel.h fixed-feature-factory.h handled-channel-notifier.h incoming-dbus-tube-channel.h incoming-file-transfer-channel.h incoming-stream-tube-channel.h object.h outgoing-dbus-tube-channel.h outgoing-file-transfer-channel.h outgoing-stream-tube-channel.h outgoing-stream-tube-channel-internal.h pending-account.h pending-captchas.h pending-channel.h pending-channel-request.h pending-channel-request-internal.h pending-connection.h pending-contact-attributes.h pending-contact-info.h pending-contacts.h pending-contacts-internal.h pending-dbus-tube-connection.h pending-debug-message-list.h pending-handles.h pending-operation.h pending-ready.h pending-send-message.h pending-stream-tube-connection.h pending-string.h pending-string-list.h pending-variant.h pending-variant-map.h profile-manager.h readiness-helper.h request-temporary-handler-internal.h room-list-channel.h server-authentication-channel.h simple-call-observer.h simple-pending-operations.h simple-observer.h simple-observer-internal.h simple-stream-tube-handler.h simple-text-observer.h simple-text-observer-internal.h stream-tube-channel.h stream-tube-client.h stream-tube-client-internal.h stream-tube-server.h stream-tube-server-internal.h streamed-media-channel.h text-channel.h tube-channel.h) # Sources for test library, used by tests to test some unexported functionality set(telepathy_qt_test_backdoors_SRCS key-file.cpp manager-file.cpp test-backdoors.cpp utils.cpp) # Generate the spec files for both stable and future spec set(gen_stable_spec_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/stable-spec.xml) set(gen_future_spec_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-spec.xml) tpqt_xincludator(stable-ifaces-includator ${CMAKE_CURRENT_SOURCE_DIR}/stable-interfaces.xml ${gen_stable_spec_xml}) tpqt_xincludator(future-ifaces-includator ${CMAKE_CURRENT_SOURCE_DIR}/future-interfaces.xml ${gen_future_spec_xml}) add_custom_target(all-generated-sources) tpqt_constants_gen(stable-constants ${gen_stable_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h --namespace=Tp --define-prefix=TP_QT_ --must-define=IN_TP_QT_HEADER DEPENDS stable-ifaces-includator) tpqt_constants_gen(future-constants ${gen_future_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-constants.h --namespace=TpFuture --define-prefix=TP_QT_FUTURE_ DEPENDS future-ifaces-includator) tpqt_types_gen(stable-typesgen ${gen_stable_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp Tp TelepathyQt/types.h TelepathyQt/Types --must-define=IN_TP_QT_HEADER --visibility=TP_QT_EXPORT DEPENDS stable-constants) tpqt_types_gen(future-typesgen ${gen_future_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types-body.hpp TpFuture TelepathyQt/future-internal.h TelepathyQt/future-internal.h DEPENDS future-constants) # Add the generated types to the library's sources list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-constants.h) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types.h) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types-body.hpp) # For each spec, both stable and future, generate a cli file and add it to the sources (including mocs). set(SPECS account account-manager call-content call-content-media-description call-stream call-stream-endpoint channel channel-dispatcher channel-dispatch-operation channel-request client connection connection-manager dbus debug-receiver media-session-handler media-stream-handler properties tls-certificate) foreach(spec ${SPECS}) tpqt_xincludator(${spec}-spec-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml DEPENDS stable-typesgen) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}-body.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.moc.hpp) list(APPEND telepathy_qt_SRCS ${NEW_FILES}) list(APPEND telepathy_qt_generated_specs_mocs "moc-cli-${spec}.moc.hpp") set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) endforeach(spec ${SPECS}) set(FUTURE_SPECS channel channel-dispatcher misc) foreach(spec ${FUTURE_SPECS}) tpqt_xincludator(${spec}-future-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/future-${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.xml DEPENDS stable-typesgen future-typesgen) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}-body.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.moc.hpp) list(APPEND telepathy_qt_SRCS ${NEW_FILES}) list(APPEND telepathy_qt_generated_specs_mocs "moc-future-${spec}.moc.hpp") set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) endforeach(spec ${FUTURE_SPECS}) # The escape character in MSVC is ^ if(MSVC) set(TYPES_INCLUDE ^ ) else(MSVC) set(TYPES_INCLUDE '' ) endif(MSVC) # Use the client generator for generating headers out of specs tpqt_client_generator(account clientaccount AccountManager Tp::Client --mainiface=Tp::Client::AccountInterface DEPENDS account-spec-xincludator) tpqt_client_generator(account-manager clientam AccountManager Tp::Client --mainiface=Tp::Client::AccountManagerInterface DEPENDS account-manager-spec-xincludator) tpqt_client_generator(call-content clientcall CallContent Tp::Client --mainiface=Tp::Client::CallContentInterface DEPENDS call-content-spec-xincludator) tpqt_client_generator(call-content-media-description clientcall CallContentMediaDescriptionInterface Tp::Client --mainiface=Tp::Client::CallContentMediaDescriptionInterface DEPENDS call-content-media-description-spec-xincludator) tpqt_client_generator(call-stream clientcall CallStream Tp::Client --mainiface=Tp::Client::CallStreamInterface DEPENDS call-stream-spec-xincludator) tpqt_client_generator(call-stream-endpoint clientcall CallStreamEndpoint Tp::Client --mainiface=Tp::Client::CallStreamEndpointInterface DEPENDS call-stream-endpoint-spec-xincludator) tpqt_client_generator(channel clientchannel Channel Tp::Client --mainiface=Tp::Client::ChannelInterface DEPENDS channel-spec-xincludator) tpqt_client_generator(channel-dispatcher clientchanneldispatcher ChannelDispatcher Tp::Client --mainiface=Tp::Client::ChannelDispatcherInterface DEPENDS channel-dispatcher-spec-xincludator) tpqt_client_generator(channel-dispatch-operation clientchanneldispatchoperation ChannelDispatchOperation Tp::Client --mainiface=Tp::Client::ChannelDispatchOperationInterface DEPENDS channel-dispatch-operation-spec-xincludator) tpqt_client_generator(channel-request clientchannelrequest ChannelRequest Tp::Client --mainiface=Tp::Client::ChannelRequestInterface DEPENDS channel-request-spec-xincludator) tpqt_client_generator(client clientclient Client Tp::Client --mainiface=Tp::Client::ClientInterface DEPENDS client-spec-xincludator) tpqt_client_generator(connection clientconn Connection Tp::Client --mainiface=Tp::Client::ConnectionInterface DEPENDS connection-spec-xincludator) tpqt_client_generator(connection-manager clientcm ConnectionManager Tp::Client --mainiface=Tp::Client::ConnectionManagerInterface DEPENDS connection-manager-spec-xincludator) tpqt_client_generator(dbus clientdbus DBus Tp::Client::DBus DEPENDS dbus-spec-xincludator) tpqt_client_generator(debug-receiver clientdebug DebugReceiver Tp::Client --mainiface=Tp::Client::DebugInterface DEPENDS debug-receiver-spec-xincludator) tpqt_client_generator(media-session-handler clientmsesh MediaSessionHandler Tp::Client --mainiface=Tp::Client::MediaSessionHandlerInterface DEPENDS media-session-handler-spec-xincludator) tpqt_client_generator(media-stream-handler clientmstrh MediaStreamHandler Tp::Client --mainiface=Tp::Client::MediaStreamHandlerInterface DEPENDS media-stream-handler-spec-xincludator) tpqt_client_generator(properties clientprops Properties Tp::Client DEPENDS properties-spec-xincludator) tpqt_client_generator(tls-certificate clienttls TLSCertificate Tp::Client DEPENDS tls-certificate-spec-xincludator) tpqt_future_client_generator(channel TpFuture::Client --mainiface=Tp::Client::ChannelInterface DEPENDS channel-future-xincludator) tpqt_future_client_generator(channel-dispatcher TpFuture::Client --mainiface=Tp::Client::ChannelDispatcherInterface DEPENDS channel-dispatcher-future-xincludator) tpqt_future_client_generator(misc TpFuture::Client DEPENDS misc-future-xincludator) if (TARGET doxygen-doc) add_dependencies(doxygen-doc all-generated-sources) endif (TARGET doxygen-doc) # Create the library if (ENABLE_COMPILER_COVERAGE) add_library(telepathy-qt${QT_VERSION_MAJOR} STATIC ${telepathy_qt_SRCS}) else (ENABLE_COMPILER_COVERAGE) add_library(telepathy-qt${QT_VERSION_MAJOR} SHARED ${telepathy_qt_SRCS}) endif (ENABLE_COMPILER_COVERAGE) # Library used by tests to test some unexported functionality add_library(telepathy-qt-test-backdoors STATIC ${telepathy_qt_test_backdoors_SRCS}) add_dependencies(telepathy-qt-test-backdoors stable-constants) add_dependencies(telepathy-qt-test-backdoors stable-typesgen) # generate client moc files foreach(moc_src ${telepathy_qt_MOC_SRCS}) set(generated_file _gen/${moc_src}) string(REPLACE ".h" ".moc.hpp" generated_file ${generated_file}) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} ${telepathy_qt_generated_specs_mocs}) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}) string(REPLACE ".h" ".moc.hpp" moc_src ${moc_src}) add_dependencies(telepathy-qt${QT_VERSION_MAJOR} "moc-${moc_src}") endforeach(moc_src ${telepathy_qt_MOC_SRCS}) # Link target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${TP_QT_LIBRARY_LINKER_FLAGS}) target_include_directories(telepathy-qt${QT_VERSION_MAJOR} PUBLIC "$") # Link - Library used by tests to test some unexported functionality target_link_libraries(telepathy-qt-test-backdoors ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${TP_QT_LIBRARY_LINKER_FLAGS}) if (ENABLE_COMPILER_COVERAGE) target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} gcov) target_link_libraries(telepathy-qt-test-backdoors gcov) endif (ENABLE_COMPILER_COVERAGE) # Set the correct version number set_target_properties(telepathy-qt${QT_VERSION_MAJOR} PROPERTIES SOVERSION ${TP_QT_ABI_VERSION} VERSION ${TP_QT_LIBRARY_VERSION}) # Install header files install(FILES ${telepathy_qt_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt COMPONENT headers) install(FILES ${telepathy_qt_gen_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/_gen COMPONENT headers) # Install the library - watch out for the correct components if (WIN32) install(TARGETS telepathy-qt${QT_VERSION_MAJOR} EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT mainlibrary ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT libs) else (WIN32) install(TARGETS telepathy-qt${QT_VERSION_MAJOR} EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT mainlibrary ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT libs) endif (WIN32) # pkg-config files, only if we are not using windows if (NOT WIN32) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}.pc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQt-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}-uninstalled.pc) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig) endif (NOT WIN32) # CMake Version and config files include(MacroWriteBasicCMakeVersionFile) # all the following variables are put into TelepathyQt*Config.cmake, so # they are usable by projects using TelepathyQt. make_install_path_absolute(TELEPATHY_QT_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}) make_install_path_absolute(TELEPATHY_QT_LIB_DIR ${LIB_INSTALL_DIR}) make_install_path_absolute(TELEPATHY_QT_DATA_DIR ${DATA_INSTALL_DIR}) # Configure the actual Config file configure_file(TelepathyQtConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Config.cmake" @ONLY) # this file is used by to check if the installed version can be used. macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ConfigVersion.cmake ${PACKAGE_VERSION}) # Find out the correct installation directory if (USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_TelepathyQtConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}) else (USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_TelepathyQtConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}/cmake) endif (USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) install(EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets DESTINATION ${_TelepathyQtConfig_INSTALL_DIR} COMPONENT headers) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Config.cmake DESTINATION ${_TelepathyQtConfig_INSTALL_DIR} COMPONENT headers) add_subdirectory(Farstream) if(ENABLE_SERVICE_SUPPORT) # lets build tp-qt service side support as a separate library until we can guarantee API/ABI # stability set(telepathy_qt_service_SRCS base-call.cpp base-connection-manager.cpp base-connection.cpp base-channel.cpp base-protocol.cpp dbus-error.cpp dbus-object.cpp dbus-service.cpp abstract-adaptor.cpp) set(telepathy_qt_service_HEADERS AbstractAdaptor abstract-adaptor.h AbstractDBusServiceInterface AbstractProtocolInterface BaseCall base-call.h BaseConnectionManager base-connection-manager.h BaseConnection base-connection.h BaseChannel base-channel.h BaseProtocol BaseProtocolAddressingInterface BaseProtocolAvatarsInterface BaseProtocolPresenceInterface base-protocol.h DBusError dbus-error.h DBusObject dbus-object.h DBusService dbus-service.h ServiceTypes service-types.h) # Generated headers which will be installed and exported set(telepathy_qt_service_gen_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-channel.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-call.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection-manager.h) # Headers file moc will be run on set(telepathy_qt_service_MOC_SRCS abstract-adaptor.h base-call.h base-call-internal.h base-connection-manager.h base-connection-manager-internal.h base-channel.h base-channel-internal.h base-connection.h base-connection-internal.h base-protocol.h base-protocol-internal.h dbus-object.h dbus-service.h) add_custom_target(all-generated-service-sources) set(SPECS svc-channel svc-call svc-connection svc-connection-manager) foreach(spec ${SPECS}) tpqt_xincludator(${spec}-spec-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml DEPENDS stable-typesgen) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.moc.hpp) list(APPEND telepathy_qt_service_SRCS ${NEW_FILES}) list(APPEND telepathy_qt_service_generated_specs_mocs "moc-${spec}.moc.hpp") set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) endforeach(spec ${SPECS}) tpqt_service_generator(svc-channel servicechannel Channel Tp::Service DEPENDS svc-channel-spec-xincludator) tpqt_service_generator(svc-call servicecall Channel Tp::Service DEPENDS svc-call-spec-xincludator) tpqt_service_generator(svc-connection serviceconn Connection Tp::Service DEPENDS svc-connection-spec-xincludator) tpqt_service_generator(svc-connection-manager servicecm ConnectionManager Tp::Service DEPENDS svc-connection-manager-spec-xincludator) if (TARGET doxygen-doc) add_dependencies(doxygen-doc all-generated-service-sources) endif (TARGET doxygen-doc) # Create the library #if (ENABLE_COMPILER_COVERAGE) # add_library(telepathy-qt${QT_VERSION_MAJOR}-service STATIC ${telepathy_qt_service_SRCS}) #else (ENABLE_COMPILER_COVERAGE) # add_library(telepathy-qt${QT_VERSION_MAJOR}-service SHARED ${telepathy_qt_service_SRCS}) #endif (ENABLE_COMPILER_COVERAGE) # lets build a static only library until we have a stable API/ABI add_library(telepathy-qt${QT_VERSION_MAJOR}-service STATIC ${telepathy_qt_service_SRCS}) # generate service moc files foreach(moc_src ${telepathy_qt_service_MOC_SRCS}) set(generated_file _gen/${moc_src}) string(REPLACE ".h" ".moc.hpp" generated_file ${generated_file}) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} ${telepathy_qt_service_generated_specs_mocs}) list(APPEND telepathy_qt_service_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}) string(REPLACE ".h" ".moc.hpp" moc_src ${moc_src}) add_dependencies(telepathy-qt${QT_VERSION_MAJOR}-service "moc-${moc_src}") endforeach(moc_src ${telepathy_qt_service_MOC_SRCS}) # Link target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-service ${QT_QTDBUS_LIBRARY} ${QT_QTCORE_LIBRARY} ${TP_QT_LIBRARY_LINKER_FLAGS}) # Set the correct version number set_target_properties(telepathy-qt${QT_VERSION_MAJOR}-service PROPERTIES SOVERSION ${TP_QT_ABI_VERSION} VERSION ${TP_QT_LIBRARY_VERSION}) # Install the library - watch out for the correct components if (WIN32) install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-service EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT service ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT service_libs) else (WIN32) install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-service EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT service ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT service_libs) endif (WIN32) # Install headers install(FILES ${telepathy_qt_service_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt COMPONENT service_headers) install(FILES ${telepathy_qt_service_gen_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/_gen COMPONENT service_headers) # pkg-config files, only if not on windows if (NOT WIN32) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtService.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service.pc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtService-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service-uninstalled.pc) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig) endif (NOT WIN32) # Configure the actual Config file configure_file(TelepathyQtServiceConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfig.cmake" @ONLY) # this file is used by to check if the installed version can be used. macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfigVersion.cmake ${PACKAGE_VERSION}) if(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_TelepathyQtServiceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}Service) else(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_TelepathyQtServiceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service/cmake) endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfig.cmake DESTINATION ${_TelepathyQtServiceConfig_INSTALL_DIR} COMPONENT headers) endif(ENABLE_SERVICE_SUPPORT) telepathy-qt-0.9.6.1/TelepathyQt/PendingChannelRequest0000644000175100017520000000041712530423576024341 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingChannelRequest_HEADER_GUARD_ #define _TelepathyQt_PendingChannelRequest_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-proxy.cpp0000644000175100017520000002650212530423576023013 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #include #include "TelepathyQt/_gen/dbus-proxy.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include namespace Tp { // ==== DBusProxy ====================================================== // Features in TpProxy but not here: // * tracking which interfaces we have (in tpqt, subclasses do that) // * being Introspectable, a Peer and a Properties implementation // * disconnecting from signals when invalidated (probably has to be in the // generated code) // * making methods always raise an error when called after invalidated // (has to be in the generated code) struct TP_QT_NO_EXPORT DBusProxy::Private { Private(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath); QDBusConnection dbusConnection; QString busName; QString objectPath; QString invalidationReason; QString invalidationMessage; }; DBusProxy::Private::Private(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath) : dbusConnection(dbusConnection), busName(busName), objectPath(objectPath) { debug() << "Creating new DBusProxy"; } /** * \class DBusProxy * \ingroup clientproxies * \headerfile TelepathyQt/dbus-proxy.h * * \brief The DBusProxy class is a base class representing a remote object available over D-Bus. * * All Telepathy-Qt client convenience classes that wrap Telepathy interfaces * inherit from this class in order to provide basic D-Bus interface * information. */ /** * Construct a new DBusProxy object. * * \param dbusConnection QDBusConnection to use. * \param busName D-Bus bus name of the service that provides the remote object. * \param objectPath The object path. * \param featureCore The object core feature. */ DBusProxy::DBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore) : Object(), ReadyObject(this, featureCore), mPriv(new Private(dbusConnection, busName, objectPath)) { if (!dbusConnection.isConnected()) { invalidate(TP_QT_ERROR_DISCONNECTED, QLatin1String("DBus connection disconnected")); } } /** * Class destructor. */ DBusProxy::~DBusProxy() { delete mPriv; } /** * Return the D-Bus connection through which the remote object is * accessed. * * \return A QDBusConnection object. */ QDBusConnection DBusProxy::dbusConnection() const { return mPriv->dbusConnection; } /** * Return the D-Bus object path of the remote object within the service. * * \return The D-Bus object path. */ QString DBusProxy::objectPath() const { return mPriv->objectPath; } /** * Return the D-Bus bus name (either a unique name or a well-known * name) of the service that provides the remote object. * * \return The D-Bus bus name. */ QString DBusProxy::busName() const { return mPriv->busName; } /** * Sets the D-Bus bus name. This is used by subclasses after converting * well-known names to unique names. * * \param busName The D-Bus bus name to set. */ void DBusProxy::setBusName(const QString &busName) { mPriv->busName = busName; } /** * Return whether this proxy is still valid (has not emitted invalidated()). * * \return \c true if still valid, \c false otherwise. */ bool DBusProxy::isValid() const { return mPriv->invalidationReason.isEmpty(); } /** * Return the error name indicating the reason this proxy became invalid. * * \return A D-Bus error name, or QString() if this object is still valid. */ QString DBusProxy::invalidationReason() const { return mPriv->invalidationReason; } /** * Return a debugging message indicating the reason this proxy became invalid. * * \return A debugging message, or QString() if this object is still valid. */ QString DBusProxy::invalidationMessage() const { return mPriv->invalidationMessage; } /** * Called by subclasses when the DBusProxy should become invalid. * * This method takes care of setting the invalidationReason, * invalidationMessage, and emitting the invalidated signal. * * \param reason A D-Bus error name (a string in a subset of ASCII, * prefixed with a reversed domain name) * \param message A debugging message associated with the error */ void DBusProxy::invalidate(const QString &reason, const QString &message) { if (!isValid()) { debug().nospace() << "Already invalidated by " << mPriv->invalidationReason << ", not replacing with " << reason << " \"" << message << "\""; return; } Q_ASSERT(!reason.isEmpty()); debug().nospace() << "proxy invalidated: " << reason << ": " << message; mPriv->invalidationReason = reason; mPriv->invalidationMessage = message; Q_ASSERT(!isValid()); // Defer emitting the invalidated signal until we next // return to the mainloop. QTimer::singleShot(0, this, SLOT(emitInvalidated())); } void DBusProxy::invalidate(const QDBusError &error) { invalidate(error.name(), error.message()); } void DBusProxy::emitInvalidated() { Q_ASSERT(!isValid()); emit invalidated(this, mPriv->invalidationReason, mPriv->invalidationMessage); } /** * \fn void DBusProxy::invalidated(Tp::DBusProxy *proxy, * const QString &errorName, const QString &errorMessage) * * Emitted when this object is no longer usable. * * After this signal is emitted, any D-Bus method calls on the object * will fail, but it may be possible to retrieve information that has * already been retrieved and cached. * * \param proxy This proxy. * \param errorName The name of a D-Bus error describing the reason for the invalidation. * \param errorMessage A debugging message associated with the error. */ // ==== StatefulDBusProxy ============================================== struct TP_QT_NO_EXPORT StatefulDBusProxy::Private { Private(const QString &originalName) : originalName(originalName) {} QString originalName; }; /** * \class StatefulDBusProxy * \ingroup clientproxies * \headerfile TelepathyQt/dbus-proxy.h * * \brief The StatefulDBusProxy class is a base class representing a remote object whose API is * stateful. * * These objects do not remain useful if the service providing them exits or * crashes, so they emit invalidated() if this happens. * * Examples include the Connection and Channel classes. */ /** * Construct a new StatefulDBusProxy object. * * \param dbusConnection QDBusConnection to use. * \param busName D-Bus bus name of the service that provides the remote object. * \param objectPath The object path. * \param featureCore The object core feature. */ StatefulDBusProxy::StatefulDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore) : DBusProxy(dbusConnection, busName, objectPath, featureCore), mPriv(new Private(busName)) { QDBusServiceWatcher *serviceWatcher = new QDBusServiceWatcher(busName, dbusConnection, QDBusServiceWatcher::WatchForUnregistration, this); connect(serviceWatcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)), SLOT(onServiceOwnerChanged(QString,QString,QString))); QString error, message; QString uniqueName = uniqueNameFrom(dbusConnection, busName, error, message); if (uniqueName.isEmpty()) { invalidate(error, message); return; } setBusName(uniqueName); } /** * Class destructor. */ StatefulDBusProxy::~StatefulDBusProxy() { delete mPriv; } QString StatefulDBusProxy::uniqueNameFrom(const QDBusConnection &bus, const QString &name) { QString error, message; QString uniqueName = uniqueNameFrom(bus, name, error, message); if (uniqueName.isEmpty()) { warning() << "StatefulDBusProxy::uniqueNameFrom(): Failed to get unique name of" << name; warning() << " error:" << error << "message:" << message; } return uniqueName; } QString StatefulDBusProxy::uniqueNameFrom(const QDBusConnection &bus, const QString &name, QString &error, QString &message) { if (name.startsWith(QLatin1String(":"))) { return name; } // For a stateful interface, it makes no sense to follow name-owner // changes, so we want to bind to the unique name. QDBusReply reply = bus.interface()->serviceOwner(name); if (reply.isValid()) { return reply.value(); } else { error = reply.error().name(); message = reply.error().message(); return QString(); } } void StatefulDBusProxy::onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner) { // We only want to invalidate this object if it is not already invalidated, // and its (not any other object's) name owner changed signal is emitted. if (isValid() && name == mPriv->originalName && newOwner.isEmpty()) { invalidate(TP_QT_DBUS_ERROR_NAME_HAS_NO_OWNER, QLatin1String("Name owner lost (service crashed?)")); } } // ==== StatelessDBusProxy ============================================= /** * \class StatelessDBusProxy * \ingroup clientproxies * \headerfile TelepathyQt/dbus-proxy.h * * \brief The StatelessDBusProxy class is a base class representing a remote object whose API is * basically stateless. * * These objects can remain valid even if the service providing them exits * and is restarted. * * Examples include the AccountManager, Account and ConnectionManager. */ /** * Construct a new StatelessDBusProxy object. * * \param dbusConnection QDBusConnection to use. * \param busName D-Bus bus name of the service that provides the remote object. * \param objectPath The object path. * \param featureCore The object core feature. */ StatelessDBusProxy::StatelessDBusProxy(const QDBusConnection &dbusConnection, const QString &busName, const QString &objectPath, const Feature &featureCore) : DBusProxy(dbusConnection, busName, objectPath, featureCore), mPriv(0) { if (busName.startsWith(QLatin1String(":"))) { warning() << "Using StatelessDBusProxy for a unique name does not make sense"; } } /** * Class destructor. */ StatelessDBusProxy::~StatelessDBusProxy() { } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceRoomConfigInterface0000644000175100017520000000043312530423576027106 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceRoomConfigInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceRoomConfigInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/account-set-internal.h0000644000175100017520000000522312530423576024400 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include namespace Tp { class ConnectionCapabilities; struct TP_QT_NO_EXPORT AccountSet::Private { class AccountWrapper; Private(AccountSet *parent, const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter); Private(AccountSet *parent, const AccountManagerPtr &accountManager, const QVariantMap &filter); void init(); void connectSignals(); void insertAccounts(); void insertAccount(const AccountPtr &account); void removeAccount(const AccountPtr &account); void wrapAccount(const AccountPtr &account); void filterAccount(const AccountPtr &account); bool accountMatchFilter(AccountWrapper *account); AccountSet *parent; AccountManagerPtr accountManager; AccountFilterConstPtr filter; QHash wrappers; QHash accounts; bool ready; }; class TP_QT_NO_EXPORT AccountSet::Private::AccountWrapper : public QObject { Q_OBJECT public: AccountWrapper(const AccountPtr &account, QObject *parent = 0); ~AccountWrapper(); AccountPtr account() const { return mAccount; } Q_SIGNALS: void accountRemoved(const Tp::AccountPtr &account); void accountPropertyChanged(const Tp::AccountPtr &account, const QString &propertyName); void accountCapabilitiesChanged(const Tp::AccountPtr &account, const Tp::ConnectionCapabilities &capabilities); private Q_SLOTS: TP_QT_NO_EXPORT void onAccountRemoved(); TP_QT_NO_EXPORT void onAccountPropertyChanged(const QString &propertyName); TP_QT_NO_EXPORT void onAccountCapalitiesChanged(const Tp::ConnectionCapabilities &capabilities); private: AccountPtr mAccount; }; } // Tp telepathy-qt-0.9.6.1/TelepathyQt/client-registrar.cpp0000644000175100017520000011535212530423576024157 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/client-registrar-internal.h" #include "TelepathyQt/_gen/client-registrar.moc.hpp" #include "TelepathyQt/_gen/client-registrar-internal.moc.hpp" #include "TelepathyQt/channel-factory.h" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/request-temporary-handler-internal.h" #include #include #include #include #include #include #include #include #include namespace Tp { class HandleChannelsInvocationContext : public MethodInvocationContext<> { Q_DISABLE_COPY(HandleChannelsInvocationContext) public: typedef void (*FinishedCb)(const MethodInvocationContextPtr<> &context, const QList &channels, void *data); static MethodInvocationContextPtr<> create(const QDBusConnection &bus, const QDBusMessage &message, const QList &channels, FinishedCb finishedCb, void *finishedCbData) { return SharedPtr >( new HandleChannelsInvocationContext(bus, message, channels, finishedCb, finishedCbData)); } private: HandleChannelsInvocationContext(const QDBusConnection &connection, const QDBusMessage &message, const QList &channels, FinishedCb finishedCb, void *finishedCbData) : MethodInvocationContext<>(connection, message), mChannels(channels), mFinishedCb(finishedCb), mFinishedCbData(finishedCbData) { } void onFinished() { if (mFinishedCb) { mFinishedCb(MethodInvocationContextPtr<>(this), mChannels, mFinishedCbData); } } QList mChannels; FinishedCb mFinishedCb; void *mFinishedCbData; }; ClientAdaptor::ClientAdaptor(ClientRegistrar *registrar, const QStringList &interfaces, QObject *parent) : QDBusAbstractAdaptor(parent), mRegistrar(registrar), mInterfaces(interfaces) { } ClientAdaptor::~ClientAdaptor() { } ClientObserverAdaptor::ClientObserverAdaptor(ClientRegistrar *registrar, AbstractClientObserver *client, QObject *parent) : QDBusAbstractAdaptor(parent), mRegistrar(registrar), mBus(registrar->dbusConnection()), mClient(client) { } ClientObserverAdaptor::~ClientObserverAdaptor() { } void ClientObserverAdaptor::ObserveChannels(const QDBusObjectPath &accountPath, const QDBusObjectPath &connectionPath, const Tp::ChannelDetailsList &channelDetailsList, const QDBusObjectPath &dispatchOperationPath, const Tp::ObjectPathList &requestsSatisfied, const QVariantMap &observerInfo, const QDBusMessage &message) { debug() << "ObserveChannels: account:" << accountPath.path() << ", connection:" << connectionPath.path(); AccountFactoryConstPtr accFactory = mRegistrar->accountFactory(); ConnectionFactoryConstPtr connFactory = mRegistrar->connectionFactory(); ChannelFactoryConstPtr chanFactory = mRegistrar->channelFactory(); ContactFactoryConstPtr contactFactory = mRegistrar->contactFactory(); SharedPtr invocation(new InvocationData()); QList readyOps; PendingReady *accReady = accFactory->proxy(TP_QT_ACCOUNT_MANAGER_BUS_NAME, accountPath.path(), connFactory, chanFactory, contactFactory); invocation->acc = AccountPtr::qObjectCast(accReady->proxy()); readyOps.append(accReady); QString connectionBusName = connectionPath.path().mid(1).replace( QLatin1String("/"), QLatin1String(".")); PendingReady *connReady = connFactory->proxy(connectionBusName, connectionPath.path(), chanFactory, contactFactory); invocation->conn = ConnectionPtr::qObjectCast(connReady->proxy()); readyOps.append(connReady); foreach (const ChannelDetails &channelDetails, channelDetailsList) { PendingReady *chanReady = chanFactory->proxy(invocation->conn, channelDetails.channel.path(), channelDetails.properties); ChannelPtr channel = ChannelPtr::qObjectCast(chanReady->proxy()); invocation->chans.append(channel); readyOps.append(chanReady); } // Yes, we don't give the choice of making CDO and CR ready or not - however, readifying them is // 0-1 D-Bus calls each, for CR mostly 0 - and their constructors start making them ready // automatically, so we wouldn't save any D-Bus traffic anyway if (!dispatchOperationPath.path().isEmpty() && dispatchOperationPath.path() != QLatin1String("/")) { QVariantMap props; // TODO: push to tp spec having all of the CDO immutable props be contained in observerInfo // so we don't have to introspect the CDO either - then we can pretty much do: // // props = qdbus_cast( // observerInfo.value(QLatin1String("dispatch-operation-properties"))); // // Currently something like the following can be used for testing the CDO "we've got // everything we need" codepath: // // props.insert(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Account"), // QVariant::fromValue(QDBusObjectPath(accountPath.path()))); // props.insert(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Connection"), // QVariant::fromValue(QDBusObjectPath(connectionPath.path()))); // props.insert(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Interfaces"), // QVariant::fromValue(QStringList())); // props.insert(TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".PossibleHandlers"), // QVariant::fromValue(QStringList())); invocation->dispatchOp = ChannelDispatchOperation::create(mBus, dispatchOperationPath.path(), props, invocation->chans, accFactory, connFactory, chanFactory, contactFactory); readyOps.append(invocation->dispatchOp->becomeReady()); } invocation->observerInfo = AbstractClientObserver::ObserverInfo(observerInfo); ObjectImmutablePropertiesMap reqPropsMap = qdbus_cast( observerInfo.value(QLatin1String("request-properties"))); foreach (const QDBusObjectPath &reqPath, requestsSatisfied) { //don't load the channelRequest objects in requestsSatisfied if the properties are not supplied with the handler info //as the channelRequest is probably invalid //this works around https://bugs.freedesktop.org/show_bug.cgi?id=77986 if (reqPropsMap.value(reqPath).isEmpty()) { continue; } ChannelRequestPtr channelRequest = ChannelRequest::create(invocation->acc, reqPath.path(), reqPropsMap.value(reqPath)); invocation->chanReqs.append(channelRequest); readyOps.append(channelRequest->becomeReady()); } invocation->ctx = MethodInvocationContextPtr<>(new MethodInvocationContext<>(mBus, message)); invocation->readyOp = new PendingComposite(readyOps, invocation->ctx); connect(invocation->readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onReadyOpFinished(Tp::PendingOperation*))); mInvocations.append(invocation); debug() << "Preparing proxies for ObserveChannels of" << channelDetailsList.size() << "channels" << "for client" << mClient; } void ClientObserverAdaptor::onReadyOpFinished(Tp::PendingOperation *op) { Q_ASSERT(!mInvocations.isEmpty()); Q_ASSERT(op->isFinished()); for (QLinkedList >::iterator i = mInvocations.begin(); i != mInvocations.end(); ++i) { if ((*i)->readyOp != op) { continue; } (*i)->readyOp = 0; if (op->isError()) { warning() << "Preparing proxies for ObserveChannels failed with" << op->errorName() << op->errorMessage(); (*i)->error = op->errorName(); (*i)->message = op->errorMessage(); } break; } while (!mInvocations.isEmpty() && !mInvocations.first()->readyOp) { SharedPtr invocation = mInvocations.takeFirst(); if (!invocation->error.isEmpty()) { // We guarantee that the proxies were ready - so we can't invoke the client if they // weren't made ready successfully. Fix the introspection code if this happens :) invocation->ctx->setFinishedWithError(invocation->error, invocation->message); continue; } debug() << "Invoking application observeChannels with" << invocation->chans.size() << "channels on" << mClient; mClient->observeChannels(invocation->ctx, invocation->acc, invocation->conn, invocation->chans, invocation->dispatchOp, invocation->chanReqs, invocation->observerInfo); } } ClientApproverAdaptor::ClientApproverAdaptor(ClientRegistrar *registrar, AbstractClientApprover *client, QObject *parent) : QDBusAbstractAdaptor(parent), mRegistrar(registrar), mBus(registrar->dbusConnection()), mClient(client) { } ClientApproverAdaptor::~ClientApproverAdaptor() { } void ClientApproverAdaptor::AddDispatchOperation(const Tp::ChannelDetailsList &channelDetailsList, const QDBusObjectPath &dispatchOperationPath, const QVariantMap &properties, const QDBusMessage &message) { AccountFactoryConstPtr accFactory = mRegistrar->accountFactory(); ConnectionFactoryConstPtr connFactory = mRegistrar->connectionFactory(); ChannelFactoryConstPtr chanFactory = mRegistrar->channelFactory(); ContactFactoryConstPtr contactFactory = mRegistrar->contactFactory(); QList readyOps; QDBusObjectPath connectionPath = qdbus_cast( properties.value( TP_QT_IFACE_CHANNEL_DISPATCH_OPERATION + QLatin1String(".Connection"))); debug() << "addDispatchOperation: connection:" << connectionPath.path(); QString connectionBusName = connectionPath.path().mid(1).replace( QLatin1String("/"), QLatin1String(".")); PendingReady *connReady = connFactory->proxy(connectionBusName, connectionPath.path(), chanFactory, contactFactory); ConnectionPtr connection = ConnectionPtr::qObjectCast(connReady->proxy()); readyOps.append(connReady); SharedPtr invocation(new InvocationData); foreach (const ChannelDetails &channelDetails, channelDetailsList) { PendingReady *chanReady = chanFactory->proxy(connection, channelDetails.channel.path(), channelDetails.properties); invocation->chans.append(ChannelPtr::qObjectCast(chanReady->proxy())); readyOps.append(chanReady); } invocation->dispatchOp = ChannelDispatchOperation::create(mBus, dispatchOperationPath.path(), properties, invocation->chans, accFactory, connFactory, chanFactory, contactFactory); readyOps.append(invocation->dispatchOp->becomeReady()); invocation->ctx = MethodInvocationContextPtr<>(new MethodInvocationContext<>(mBus, message)); invocation->readyOp = new PendingComposite(readyOps, invocation->ctx); connect(invocation->readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onReadyOpFinished(Tp::PendingOperation*))); mInvocations.append(invocation); } void ClientApproverAdaptor::onReadyOpFinished(Tp::PendingOperation *op) { Q_ASSERT(!mInvocations.isEmpty()); Q_ASSERT(op->isFinished()); for (QLinkedList >::iterator i = mInvocations.begin(); i != mInvocations.end(); ++i) { if ((*i)->readyOp != op) { continue; } (*i)->readyOp = 0; if (op->isError()) { warning() << "Preparing proxies for AddDispatchOperation failed with" << op->errorName() << op->errorMessage(); (*i)->error = op->errorName(); (*i)->message = op->errorMessage(); } break; } while (!mInvocations.isEmpty() && !mInvocations.first()->readyOp) { SharedPtr invocation = mInvocations.takeFirst(); if (!invocation->error.isEmpty()) { // We guarantee that the proxies were ready - so we can't invoke the client if they // weren't made ready successfully. Fix the introspection code if this happens :) invocation->ctx->setFinishedWithError(invocation->error, invocation->message); continue; } debug() << "Invoking application addDispatchOperation with CDO" << invocation->dispatchOp->objectPath() << "on" << mClient; mClient->addDispatchOperation(invocation->ctx, invocation->dispatchOp); } } QHash, QList > ClientHandlerAdaptor::mAdaptorsForConnection; ClientHandlerAdaptor::ClientHandlerAdaptor(ClientRegistrar *registrar, AbstractClientHandler *client, QObject *parent) : QDBusAbstractAdaptor(parent), mRegistrar(registrar), mBus(registrar->dbusConnection()), mClient(client) { QList &handlerAdaptors = mAdaptorsForConnection[qMakePair(mBus.name(), mBus.baseService())]; handlerAdaptors.append(this); } ClientHandlerAdaptor::~ClientHandlerAdaptor() { QPair busId = qMakePair(mBus.name(), mBus.baseService()); QList &handlerAdaptors = mAdaptorsForConnection[busId]; handlerAdaptors.removeOne(this); if (handlerAdaptors.isEmpty()) { mAdaptorsForConnection.remove(busId); } } void ClientHandlerAdaptor::HandleChannels(const QDBusObjectPath &accountPath, const QDBusObjectPath &connectionPath, const Tp::ChannelDetailsList &channelDetailsList, const Tp::ObjectPathList &requestsSatisfied, qulonglong userActionTime_t, const QVariantMap &handlerInfo, const QDBusMessage &message) { debug() << "HandleChannels: account:" << accountPath.path() << ", connection:" << connectionPath.path(); AccountFactoryConstPtr accFactory = mRegistrar->accountFactory(); ConnectionFactoryConstPtr connFactory = mRegistrar->connectionFactory(); ChannelFactoryConstPtr chanFactory = mRegistrar->channelFactory(); ContactFactoryConstPtr contactFactory = mRegistrar->contactFactory(); SharedPtr invocation(new InvocationData()); QList readyOps; RequestTemporaryHandler *tempHandler = dynamic_cast(mClient); if (tempHandler) { debug() << " This is a temporary handler for the Request & Handle API," << "giving an early signal of the invocation"; tempHandler->setDBusHandlerInvoked(); } PendingReady *accReady = accFactory->proxy(TP_QT_ACCOUNT_MANAGER_BUS_NAME, accountPath.path(), connFactory, chanFactory, contactFactory); invocation->acc = AccountPtr::qObjectCast(accReady->proxy()); readyOps.append(accReady); QString connectionBusName = connectionPath.path().mid(1).replace( QLatin1String("/"), QLatin1String(".")); PendingReady *connReady = connFactory->proxy(connectionBusName, connectionPath.path(), chanFactory, contactFactory); invocation->conn = ConnectionPtr::qObjectCast(connReady->proxy()); readyOps.append(connReady); foreach (const ChannelDetails &channelDetails, channelDetailsList) { PendingReady *chanReady = chanFactory->proxy(invocation->conn, channelDetails.channel.path(), channelDetails.properties); ChannelPtr channel = ChannelPtr::qObjectCast(chanReady->proxy()); invocation->chans.append(channel); readyOps.append(chanReady); } invocation->handlerInfo = AbstractClientHandler::HandlerInfo(handlerInfo); ObjectImmutablePropertiesMap reqPropsMap = qdbus_cast( handlerInfo.value(QLatin1String("request-properties"))); foreach (const QDBusObjectPath &reqPath, requestsSatisfied) { //don't load the channelRequest objects in requestsSatisfied if the properties are not supplied with the handler info //as the channelRequest is probably invalid //this works around https://bugs.freedesktop.org/show_bug.cgi?id=77986 if (reqPropsMap.value(reqPath).isEmpty()) { continue; } ChannelRequestPtr channelRequest = ChannelRequest::create(invocation->acc, reqPath.path(), reqPropsMap.value(reqPath)); invocation->chanReqs.append(channelRequest); readyOps.append(channelRequest->becomeReady()); } // FIXME See http://bugs.freedesktop.org/show_bug.cgi?id=21690 if (userActionTime_t != 0) { invocation->time = QDateTime::fromTime_t((uint) userActionTime_t); } invocation->ctx = HandleChannelsInvocationContext::create(mBus, message, invocation->chans, reinterpret_cast( &ClientHandlerAdaptor::onContextFinished), this); invocation->readyOp = new PendingComposite(readyOps, invocation->ctx); connect(invocation->readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onReadyOpFinished(Tp::PendingOperation*))); mInvocations.append(invocation); debug() << "Preparing proxies for HandleChannels of" << channelDetailsList.size() << "channels" << "for client" << mClient; } void ClientHandlerAdaptor::onReadyOpFinished(Tp::PendingOperation *op) { Q_ASSERT(!mInvocations.isEmpty()); Q_ASSERT(op->isFinished()); for (QLinkedList >::iterator i = mInvocations.begin(); i != mInvocations.end(); ++i) { if ((*i)->readyOp != op) { continue; } (*i)->readyOp = 0; if (op->isError()) { warning() << "Preparing proxies for HandleChannels failed with" << op->errorName() << op->errorMessage(); (*i)->error = op->errorName(); (*i)->message = op->errorMessage(); } break; } while (!mInvocations.isEmpty() && !mInvocations.first()->readyOp) { SharedPtr invocation = mInvocations.takeFirst(); if (!invocation->error.isEmpty()) { RequestTemporaryHandler *tempHandler = dynamic_cast(mClient); if (tempHandler) { debug() << " This is a temporary handler for the Request & Handle API, indicating failure"; tempHandler->setDBusHandlerErrored(invocation->error, invocation->message); } // We guarantee that the proxies were ready - so we can't invoke the client if they // weren't made ready successfully. Fix the introspection code if this happens :) invocation->ctx->setFinishedWithError(invocation->error, invocation->message); continue; } debug() << "Invoking application handleChannels with" << invocation->chans.size() << "channels on" << mClient; mClient->handleChannels(invocation->ctx, invocation->acc, invocation->conn, invocation->chans, invocation->chanReqs, invocation->time, invocation->handlerInfo); } } void ClientHandlerAdaptor::onContextFinished( const MethodInvocationContextPtr<> &context, const QList &channels, ClientHandlerAdaptor *self) { if (!context->isError()) { debug() << "HandleChannels context finished successfully, " "updating handled channels"; // register the channels in FakeHandlerManager so we report HandledChannels correctly FakeHandlerManager::instance()->registerChannels(channels); } } ClientHandlerRequestsAdaptor::ClientHandlerRequestsAdaptor( ClientRegistrar *registrar, AbstractClientHandler *client, QObject *parent) : QDBusAbstractAdaptor(parent), mRegistrar(registrar), mBus(registrar->dbusConnection()), mClient(client) { } ClientHandlerRequestsAdaptor::~ClientHandlerRequestsAdaptor() { } void ClientHandlerRequestsAdaptor::AddRequest( const QDBusObjectPath &request, const QVariantMap &requestProperties, const QDBusMessage &message) { debug() << "AddRequest:" << request.path(); message.setDelayedReply(true); mBus.send(message.createReply()); mClient->addRequest(ChannelRequest::create(mBus, request.path(), requestProperties, mRegistrar->accountFactory(), mRegistrar->connectionFactory(), mRegistrar->channelFactory(), mRegistrar->contactFactory())); } void ClientHandlerRequestsAdaptor::RemoveRequest( const QDBusObjectPath &request, const QString &errorName, const QString &errorMessage, const QDBusMessage &message) { debug() << "RemoveRequest:" << request.path() << "-" << errorName << "-" << errorMessage; message.setDelayedReply(true); mBus.send(message.createReply()); mClient->removeRequest(ChannelRequest::create(mBus, request.path(), QVariantMap(), mRegistrar->accountFactory(), mRegistrar->connectionFactory(), mRegistrar->channelFactory(), mRegistrar->contactFactory()), errorName, errorMessage); } struct TP_QT_NO_EXPORT ClientRegistrar::Private { Private(const QDBusConnection &bus, const AccountFactoryConstPtr &accFactory, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) : bus(bus), accFactory(accFactory), connFactory(connFactory), chanFactory(chanFactory), contactFactory(contactFactory) { if (accFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the account factory is not the proxy connection"; } if (connFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the connection factory is not the proxy connection"; } if (chanFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection"; } } QDBusConnection bus; AccountFactoryConstPtr accFactory; ConnectionFactoryConstPtr connFactory; ChannelFactoryConstPtr chanFactory; ContactFactoryConstPtr contactFactory; QHash clients; QHash clientObjects; QSet services; }; /** * \class ClientRegistrar * \ingroup serverclient * \headerfile TelepathyQt/client-registrar.h * * \brief The ClientRegistrar class is responsible for registering Telepathy * clients (Observer, Approver, Handler). * * Clients should inherit AbstractClientObserver, AbstractClientApprover, * AbstractClientHandler or some combination of these, by using multiple * inheritance, and register themselves using registerClient(). * * See the individual classes descriptions for more details. * * \section cr_usage_sec Usage * * \subsection cr_create_sec Creating a client registrar object * * One way to create a ClientRegistrar object is to just call the create method. * For example: * * \code ClientRegistrarPtr cr = ClientRegistrar::create(); \endcode * * You can also provide a D-Bus connection as a QDBusConnection: * * \code ClientRegistrarPtr cr = ClientRegistrar::create(QDBusConnection::systemBus()); \endcode * * \subsection cr_registering_sec Registering a client * * To register a client, just call registerClient() with a given AbstractClientPtr * pointing to a valid AbstractClient instance. * * \code * * class MyClient : public AbstractClientObserver, public AbstractClientHandler * { * ... * }; * * ... * * ClientRegistrarPtr cr = ClientRegistrar::create(); * SharedPtr client = SharedPtr(new MyClient(...)); * cr->registerClient(AbstractClientPtr::dynamicCast(client), "myclient"); * * \endcode * * \sa AbstractClientObserver, AbstractClientApprover, AbstractClientHandler * * See \ref async_model, \ref shared_ptr */ /** * Create a new client registrar object using the given \a bus. * * The instance will use an account factory creating Tp::Account objects with no features * ready, a connection factory creating Tp::Connection objects with no features ready, and a channel * factory creating stock Telepathy-Qt channel subclasses, as appropriate, with no features ready. * * \param bus QDBusConnection to use. * \return A ClientRegistrarPtr object pointing to the newly created ClientRegistrar object. */ ClientRegistrarPtr ClientRegistrar::create(const QDBusConnection &bus) { return create(bus, AccountFactory::create(bus), ConnectionFactory::create(bus), ChannelFactory::create(bus), ContactFactory::create()); } /** * Create a new client registrar object using QDBusConnection::sessionBus() and the given factories. * * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ClientRegistrarPtr object pointing to the newly created ClientRegistrar object. */ ClientRegistrarPtr ClientRegistrar::create( const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return create(QDBusConnection::sessionBus(), accountFactory, connectionFactory, channelFactory, contactFactory); } /** * Create a new client registrar object using the given \a bus and the given factories. * * \param bus QDBusConnection to use. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ClientRegistrarPtr object pointing to the newly created ClientRegistrar object. */ ClientRegistrarPtr ClientRegistrar::create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ClientRegistrarPtr(new ClientRegistrar(bus, accountFactory, connectionFactory, channelFactory, contactFactory)); } /** * Create a new client registrar object using the bus and factories of the given Account \a manager. * * Using this create method will enable (like any other way of passing the same factories to an AM * and a registrar) getting the same Account/Connection etc. proxy instances from both * AccountManager and AbstractClient implementations. * * \param manager The AccountManager the bus and factories of which should be used. * \return A ClientRegistrarPtr object pointing to the newly ClientRegistrar object. */ ClientRegistrarPtr ClientRegistrar::create(const AccountManagerPtr &manager) { if (!manager) { return ClientRegistrarPtr(); } return create(manager->dbusConnection(), manager->accountFactory(), manager->connectionFactory(), manager->channelFactory(), manager->contactFactory()); } /** * Construct a new client registrar object using the given \a bus and the given factories. * * \param bus QDBusConnection to use. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. */ ClientRegistrar::ClientRegistrar(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) : Object(), mPriv(new Private(bus, accountFactory, connectionFactory, channelFactory, contactFactory)) { } /** * Class destructor. */ ClientRegistrar::~ClientRegistrar() { unregisterClients(); delete mPriv; } /** * Return the D-Bus connection being used by this client registrar. * * \return A QDBusConnection object. */ QDBusConnection ClientRegistrar::dbusConnection() const { return mPriv->bus; } /** * Get the account factory used by this client registrar. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the registrar would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the AccountFactory object. */ AccountFactoryConstPtr ClientRegistrar::accountFactory() const { return mPriv->accFactory; } /** * Get the connection factory used by this client registrar. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the registrar would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ConnectionFactory object. */ ConnectionFactoryConstPtr ClientRegistrar::connectionFactory() const { return mPriv->connFactory; } /** * Get the channel factory used by this client registrar. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the registrar would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ChannelFactory object. */ ChannelFactoryConstPtr ClientRegistrar::channelFactory() const { return mPriv->chanFactory; } /** * Get the contact factory used by this client registrar. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the registrar would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ContactFactory object. */ ContactFactoryConstPtr ClientRegistrar::contactFactory() const { return mPriv->contactFactory; } /** * Return the list of clients registered using registerClient() on this client * registrar. * * \return A list of pointers to AbstractClient objects. * \sa registerClient(), unregisterClient() */ QList ClientRegistrar::registeredClients() const { return mPriv->clients.keys(); } /** * Register a client on D-Bus. * * The client registrar will export the appropriate D-Bus interfaces, * based on the abstract classes subclassed by \param client. * * If each of a client instance should be able to manipulate channels * separately, set unique to true. * * The client name MUST be a non-empty string of ASCII digits, letters, dots * and/or underscores, starting with a letter, and without sets of * two consecutive dots or a dot followed by a digit. * * This method will do nothing if the client is already registered, and \c true * will be returned. * * To unregister a client use unregisterClient(). * * \param client The client to register. * \param clientName The client name used to register. * \param unique Whether each of a client instance is able to manipulate * channels separately. * \return \c true if \a client was successfully registered, \c false otherwise. * \sa registeredClients(), unregisterClient() */ bool ClientRegistrar::registerClient(const AbstractClientPtr &client, const QString &clientName, bool unique) { if (!client) { warning() << "Unable to register a null client"; return false; } if (mPriv->clients.contains(client)) { debug() << "Client already registered"; return true; } QString busName = QLatin1String("org.freedesktop.Telepathy.Client."); busName.append(clientName); if (unique) { // o.f.T.Client.clientName._ should be enough to identify // an unique identifier busName.append(QString(QLatin1String(".%1_%2")) .arg(mPriv->bus.baseService() .replace(QLatin1String(":"), QLatin1String("_")) .replace(QLatin1String("."), QLatin1String("_"))) .arg((quintptr) client.data(), 0, 16)); } if (mPriv->services.contains(busName) || !mPriv->bus.registerService(busName)) { warning() << "Unable to register client: busName" << busName << "already registered"; return false; } QObject *object = new QObject(this); QStringList interfaces; AbstractClientHandler *handler = dynamic_cast(client.data()); if (handler) { // export o.f.T.Client.Handler new ClientHandlerAdaptor(this, handler, object); interfaces.append( QLatin1String("org.freedesktop.Telepathy.Client.Handler")); if (handler->wantsRequestNotification()) { // export o.f.T.Client.Interface.Requests new ClientHandlerRequestsAdaptor(this, handler, object); interfaces.append( QLatin1String( "org.freedesktop.Telepathy.Client.Interface.Requests")); } } AbstractClientObserver *observer = dynamic_cast(client.data()); if (observer) { // export o.f.T.Client.Observer new ClientObserverAdaptor(this, observer, object); interfaces.append( QLatin1String("org.freedesktop.Telepathy.Client.Observer")); } AbstractClientApprover *approver = dynamic_cast(client.data()); if (approver) { // export o.f.T.Client.Approver new ClientApproverAdaptor(this, approver, object); interfaces.append( QLatin1String("org.freedesktop.Telepathy.Client.Approver")); } if (interfaces.isEmpty()) { warning() << "Client does not implement any known interface"; // cleanup mPriv->bus.unregisterService(busName); return false; } // export o.f.T.Client interface new ClientAdaptor(this, interfaces, object); QString objectPath = QString(QLatin1String("/%1")).arg(busName); objectPath.replace(QLatin1String("."), QLatin1String("/")); if (!mPriv->bus.registerObject(objectPath, object)) { // this shouldn't happen, but let's make sure warning() << "Unable to register client: objectPath" << objectPath << "already registered"; // cleanup delete object; mPriv->bus.unregisterService(busName); return false; } if (handler) { handler->setRegistered(true); } debug() << "Client registered - busName:" << busName << "objectPath:" << objectPath << "interfaces:" << interfaces; mPriv->services.insert(busName); mPriv->clients.insert(client, objectPath); mPriv->clientObjects.insert(client, object); return true; } /** * Unregister a client registered using registerClient() on this client * registrar. * * If \a client was not registered previously, \c false will be returned. * * \param client The client to unregister. * \return \c true if \a client was successfully unregistered, \c false otherwise. * \sa registeredClients(), registerClient() */ bool ClientRegistrar::unregisterClient(const AbstractClientPtr &client) { if (!mPriv->clients.contains(client)) { warning() << "Trying to unregister an unregistered client"; return false; } AbstractClientHandler *handler = dynamic_cast(client.data()); if (handler) { handler->setRegistered(false); } QString objectPath = mPriv->clients.value(client); mPriv->bus.unregisterObject(objectPath); mPriv->clients.remove(client); QObject *object = mPriv->clientObjects.value(client); // delete object here and it's children (adaptors), to make sure if adaptor // is keeping a static list of adaptors per connection, the list is updated. delete object; mPriv->clientObjects.remove(client); QString busName = objectPath.mid(1).replace(QLatin1String("/"), QLatin1String(".")); mPriv->bus.unregisterService(busName); mPriv->services.remove(busName); debug() << "Client unregistered - busName:" << busName << "objectPath:" << objectPath; return true; } /** * Unregister all clients registered using registerClient() on this client * registrar. * * \sa registeredClients(), registerClient(), unregisterClient() */ void ClientRegistrar::unregisterClients() { // copy the hash as it will be modified QHash clients = mPriv->clients; QHash::const_iterator end = clients.constEnd(); QHash::const_iterator it = clients.constBegin(); while (it != end) { unregisterClient(it.key()); ++it; } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/shared-ptr.h0000644000175100017520000001665012530423576022420 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @copyright Copyright (C) 2009-2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_shared_ptr_h_HEADER_GUARD_ #define _TelepathyQt_shared_ptr_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class RefCounted; template class SharedPtr; template class WeakPtr; class TP_QT_EXPORT RefCounted { Q_DISABLE_COPY(RefCounted) class SharedCount { Q_DISABLE_COPY(SharedCount) public: SharedCount(RefCounted *d) : d(d), strongref(0), weakref(0) { } private: template friend class SharedPtr; template friend class WeakPtr; friend class RefCounted; RefCounted *d; mutable QAtomicInt strongref; mutable QAtomicInt weakref; }; public: inline RefCounted() : sc(new SharedCount(this)) { sc->weakref.ref(); } inline virtual ~RefCounted() { sc->d = 0; if (!sc->weakref.deref()) { delete sc; } } private: template friend class SharedPtr; template friend class WeakPtr; // TODO: Remove when Conn.I.ContactList, etc becomes mandatory. This is required to circumvent // a reference cycle when using contact list channels, due to the fact that Channels hold // strong references to their parent Connection, but not needed when using // Conn.I.ContactList and friends. friend class ContactManager; inline void ref() const { sc->strongref.ref(); } inline bool deref() const { return sc->strongref.deref(); } SharedCount *sc; }; template class SharedPtr { typedef bool (SharedPtr::*UnspecifiedBoolType)() const; public: inline SharedPtr() : d(0) { } explicit inline SharedPtr(T *d) : d(d) { if (d) { d->ref(); } } template inline SharedPtr(const SharedPtr &o) : d(o.data()) { if (d) { d->ref(); } } inline SharedPtr(const SharedPtr &o) : d(o.d) { if (d) { d->ref(); } } explicit inline SharedPtr(const WeakPtr &o) { RefCounted::SharedCount *sc = o.sc; if (sc) { // increase the strongref, but never up from zero // or less (negative is used on untracked objects) register int tmp = sc->strongref.fetchAndAddOrdered(0); while (tmp > 0) { // try to increment from "tmp" to "tmp + 1" if (sc->strongref.testAndSetRelaxed(tmp, tmp + 1)) { // succeeded break; } // failed, try again tmp = sc->strongref.fetchAndAddOrdered(0); } if (tmp > 0) { d = dynamic_cast(sc->d); Q_ASSERT(d != NULL); } else { d = 0; } } else { d = 0; } } inline ~SharedPtr() { if (d && !d->deref()) { T *saved = d; d = 0; delete saved; } } inline void reset() { SharedPtr().swap(*this); } inline T *data() const { return d; } inline const T *constData() const { return d; } inline T *operator->() { return d; } inline T *operator->() const { return d; } inline bool isNull() const { return !d; } inline bool operator!() const { return isNull(); } operator UnspecifiedBoolType() const { return !isNull() ? &SharedPtr::operator! : 0; } inline bool operator==(const SharedPtr &o) const { return d == o.d; } inline bool operator!=(const SharedPtr &o) const { return d != o.d; } inline bool operator==(const T *ptr) const { return d == ptr; } inline bool operator!=(const T *ptr) const { return d != ptr; } inline SharedPtr &operator=(const SharedPtr &o) { SharedPtr(o).swap(*this); return *this; } inline void swap(SharedPtr &o) { T *tmp = d; d = o.d; o.d = tmp; } template static inline SharedPtr staticCast(const SharedPtr &src) { return SharedPtr(static_cast(src.data())); } template static inline SharedPtr dynamicCast(const SharedPtr &src) { return SharedPtr(dynamic_cast(src.data())); } template static inline SharedPtr constCast(const SharedPtr &src) { return SharedPtr(const_cast(src.data())); } template static inline SharedPtr qObjectCast(const SharedPtr &src) { return SharedPtr(qobject_cast(src.data())); } private: friend class WeakPtr; T *d; }; template inline uint qHash(const SharedPtr &ptr) { return QT_PREPEND_NAMESPACE(qHash(ptr.data())); } template inline uint qHash(const WeakPtr &ptr); template class WeakPtr { typedef bool (WeakPtr::*UnspecifiedBoolType)() const; public: inline WeakPtr() : sc(0) { } explicit inline WeakPtr(T *d) { if (d) { sc = d->sc; sc->weakref.ref(); } else { sc = 0; } } inline WeakPtr(const WeakPtr &o) : sc(o.sc) { if (sc) { sc->weakref.ref(); } } inline WeakPtr(const SharedPtr &o) { if (o.d) { sc = o.d->sc; sc->weakref.ref(); } else { sc = 0; } } inline ~WeakPtr() { if (sc && !sc->weakref.deref()) { delete sc; } } inline bool isNull() const { return !sc || sc->strongref.fetchAndAddOrdered(0) <= 0; } inline bool operator!() const { return isNull(); } operator UnspecifiedBoolType() const { return !isNull() ? &WeakPtr::operator! : 0; } inline WeakPtr &operator=(const WeakPtr &o) { WeakPtr(o).swap(*this); return *this; } inline WeakPtr &operator=(const SharedPtr &o) { WeakPtr(o).swap(*this); return *this; } inline void swap(WeakPtr &o) { RefCounted::SharedCount *tmp = sc; sc = o.sc; o.sc = tmp; } SharedPtr toStrongRef() const { return SharedPtr(*this); } private: friend class SharedPtr; friend uint qHash(const WeakPtr &ptr); RefCounted::SharedCount *sc; }; template inline uint qHash(const WeakPtr &ptr) { T *actualPtr = ptr.sc ? ptr.sc.d : 0; return QT_PREPEND_NAMESPACE(qHash(actualPtr)); } } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/PendingFailure0000644000175100017520000000040312530423576023002 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingFailure_HEADER_GUARD_ #define _TelepathyQt_PendingFailure_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/contact-messenger.h0000644000175100017520000000473012530423576023764 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_messenger_h_HEADER_GUARD_ #define _TelepathyQt_contact_messenger_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class PendingSendMessage; class MessageContentPartList; class TP_QT_EXPORT ContactMessenger : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(ContactMessenger) public: static ContactMessengerPtr create(const AccountPtr &account, const ContactPtr &contact); static ContactMessengerPtr create(const AccountPtr &account, const QString &contactIdentifier); virtual ~ContactMessenger(); AccountPtr account() const; QString contactIdentifier() const; QList textChats() const; PendingSendMessage *sendMessage(const QString &text, ChannelTextMessageType type = ChannelTextMessageTypeNormal, MessageSendingFlags flags = 0); PendingSendMessage *sendMessage(const MessageContentPartList &parts, MessageSendingFlags flags = 0); Q_SIGNALS: void messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel); void messageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel); private: TP_QT_NO_EXPORT ContactMessenger(const AccountPtr &account, const QString &contactIdentifier); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Profile0000644000175100017520000000034312530423576021511 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Profile_HEADER_GUARD_ #define _TelepathyQt_Profile_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/captcha-authentication.h0000644000175100017520000000605612530423576024766 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_captcha_authentication_h_HEADER_GUARD_ #define _TelepathyQt_captcha_authentication_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include namespace Tp { class PendingCaptchaAnswer; class PendingCaptchaCancel; class PendingCaptchas; class TP_QT_EXPORT CaptchaAuthentication : public Tp::Object { Q_OBJECT Q_DISABLE_COPY(CaptchaAuthentication) public: enum ChallengeType { NoChallenge = 0, OCRChallenge = 1, AudioRecognitionChallenge = 2, PictureQuestionChallenge = 4, PictureRecognitionChallenge = 8, TextQuestionChallenge = 16, SpeechQuestionChallenge = 32, SpeechRecognitionChallenge = 64, VideoQuestionChallenge = 128, VideoRecognitionChallenge = 256, UnknownChallenge = 32768 }; Q_DECLARE_FLAGS(ChallengeTypes, ChallengeType) virtual ~CaptchaAuthentication(); ChannelPtr channel() const; bool canRetry() const; Tp::CaptchaStatus status() const; QString error() const; Connection::ErrorDetails errorDetails() const; Tp::PendingCaptchas *requestCaptchas(const QStringList &preferredMimeTypes = QStringList(), ChallengeTypes preferredTypes = ~ChallengeTypes(NoChallenge)); Tp::PendingOperation *answer(uint id, const QString &answer); Tp::PendingOperation *answer(const Tp::CaptchaAnswers &response); Q_SIGNALS: void statusChanged(Tp::CaptchaStatus status); public Q_SLOTS: Tp::PendingOperation *cancel(Tp::CaptchaCancelReason reason, const QString &message = QString()); private Q_SLOTS: TP_QT_NO_EXPORT void onPropertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties); private: TP_QT_NO_EXPORT CaptchaAuthentication(const ChannelPtr &parent); friend class ServerAuthenticationChannel; struct Private; friend struct Private; Private *mPriv; }; } // namespace Tp Q_DECLARE_OPERATORS_FOR_FLAGS(Tp::CaptchaAuthentication::ChallengeTypes) #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus-properties.xml0000644000175100017520000000152312530423576024040 0ustar00kaffeinekaffeine00000000000000 D-Bus Properties telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceMediaSignallingInterface0000644000175100017520000000044512530423576030076 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceMediaSignallingInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceMediaSignallingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-channel.h0000644000175100017520000000601212530423576023370 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_channel_h_HEADER_GUARD_ #define _TelepathyQt_pending_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include namespace Tp { class Connection; class HandledChannelNotifier; class TP_QT_EXPORT PendingChannel : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingChannel) public: ~PendingChannel(); ConnectionPtr connection() const; bool yours() const; const QString &channelType() const; uint targetHandleType() const; uint targetHandle() const; QVariantMap immutableProperties() const; ChannelPtr channel() const; HandledChannelNotifier *handledChannelNotifier() const; private Q_SLOTS: TP_QT_NO_EXPORT void onConnectionCreateChannelFinished( QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onConnectionEnsureChannelFinished( QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onChannelReady(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onHandlerError(const QString &errorName, const QString &errorMessage); TP_QT_NO_EXPORT void onHandlerChannelReceived( const Tp::ChannelPtr &channel); TP_QT_NO_EXPORT void onAccountCreateChannelFinished( Tp::PendingOperation *op); private: friend class Account; friend class ConnectionLowlevel; TP_QT_NO_EXPORT PendingChannel(const ConnectionPtr &connection, const QString &errorName, const QString &errorMessage); TP_QT_NO_EXPORT PendingChannel(const ConnectionPtr &connection, const QVariantMap &request, bool create, int timeout = -1); TP_QT_NO_EXPORT PendingChannel(const AccountPtr &account, const QVariantMap &request, const QDateTime &userActionTime, bool create); TP_QT_NO_EXPORT PendingChannel(const QString &errorName, const QString &errorMessage); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/simple-observer.cpp0000644000175100017520000005537312530423576024025 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/simple-observer-internal.h" #include "TelepathyQt/_gen/simple-observer.moc.hpp" #include "TelepathyQt/_gen/simple-observer-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include namespace Tp { QHash >, WeakPtr > SimpleObserver::Private::observers; uint SimpleObserver::Private::numObservers = 0; SimpleObserver::Private::Private(SimpleObserver *parent, const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, bool requiresNormalization, const QList &extraChannelFeatures) : parent(parent), account(account), channelFilter(channelFilter), contactIdentifier(contactIdentifier), extraChannelFeatures(extraChannelFeatures) { QSet normalizedChannelFilter = channelFilter.toSet(); QPair > observerUniqueId( account->dbusConnection().baseService(), normalizedChannelFilter); observer = SharedPtr(observers.value(observerUniqueId)); if (!observer) { SharedPtr fakeAccountFactory = FakeAccountFactory::create( account->dbusConnection()); cr = ClientRegistrar::create( AccountFactoryPtr::qObjectCast(fakeAccountFactory), account->connectionFactory(), account->channelFactory(), account->contactFactory()); QString observerName = QString(QLatin1String("TpQtSO_%1_%2")) .arg(account->dbusConnection().baseService() .replace(QLatin1String(":"), QLatin1String("_")) .replace(QLatin1String("."), QLatin1String("_"))) .arg(numObservers++); observer = SharedPtr(new Observer(cr, fakeAccountFactory, normalizedChannelFilter.toList(), observerName)); if (!cr->registerClient(observer, observerName, false)) { warning() << "Unable to register observer" << observerName; observer.reset(); cr.reset(); return; } debug() << "Observer" << observerName << "registered"; observers.insert(observerUniqueId, observer); } else { debug() << "Observer" << observer->observerName() << "already registered and matches filter, using it"; cr = ClientRegistrarPtr(observer->clientRegistrar()); } observer->registerExtraChannelFeatures(extraChannelFeatures); observer->registerAccount(account); if (contactIdentifier.isEmpty() || !requiresNormalization) { normalizedContactIdentifier = contactIdentifier; } else { parent->connect(account.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), SLOT(onAccountConnectionChanged(Tp::ConnectionPtr))); } parent->connect(observer.data(), SIGNAL(newChannels(Tp::AccountPtr,QList)), SLOT(onNewChannels(Tp::AccountPtr,QList))); parent->connect(observer.data(), SIGNAL(channelInvalidated(Tp::AccountPtr,Tp::ChannelPtr,QString,QString)), SLOT(onChannelInvalidated(Tp::AccountPtr,Tp::ChannelPtr,QString,QString))); } bool SimpleObserver::Private::filterChannel(const AccountPtr &channelAccount, const ChannelPtr &channel) { if (channelAccount != account) { return false; } if (contactIdentifier.isEmpty()) { return true; } QString targetId = channel->immutableProperties().value( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")).toString(); if (targetId != normalizedContactIdentifier) { // we didn't filter per contact, let's filter here return false; } return true; } void SimpleObserver::Private::insertChannels(const AccountPtr &channelsAccount, const QList &newChannels) { QSet match; foreach (const ChannelPtr &channel, newChannels) { if (!channels.contains(channel) && filterChannel(channelsAccount, channel)) { match.insert(channel); } } if (match.isEmpty()) { return; } channels.unite(match); emit parent->newChannels(match.toList()); } void SimpleObserver::Private::removeChannel(const AccountPtr &channelAccount, const ChannelPtr &channel, const QString &errorName, const QString &errorMessage) { if (!channels.contains(channel) || !filterChannel(channelAccount, channel)) { return; } channels.remove(channel); emit parent->channelInvalidated(channel, errorName, errorMessage); } void SimpleObserver::Private::processChannelsQueue() { if (channelsQueue.isEmpty()) { return; } while (!channelsQueue.isEmpty()) { (this->*(channelsQueue.dequeue()))(); } } void SimpleObserver::Private::processNewChannelsQueue() { NewChannelsInfo info = newChannelsQueue.dequeue(); insertChannels(info.channelsAccount, info.channels); } void SimpleObserver::Private::processChannelsInvalidationQueue() { ChannelInvalidationInfo info = channelsInvalidationQueue.dequeue(); removeChannel(info.channelAccount, info.channel, info.errorName, info.errorMessage); } SimpleObserver::Private::Observer::Observer(const WeakPtr &cr, const SharedPtr &fakeAccountFactory, const ChannelClassSpecList &channelFilter, const QString &observerName) : AbstractClient(), QObject(), AbstractClientObserver(channelFilter, true), mCr(cr), mFakeAccountFactory(fakeAccountFactory), mObserverName(observerName) { } SimpleObserver::Private::Observer::~Observer() { // no need to delete channel wrappers here as they have 'this' as parent // no need to delete context infos here as this observer will never be deleted before all // PendingComposites finish (hold reference to this), which will properly delete them // no need to unregister this observer here as the client registrar destructor will // unregister it } void SimpleObserver::Private::Observer::observeChannels( const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList &requestsSatisfied, const ObserverInfo &observerInfo) { if (!mAccounts.contains(account)) { context->setFinished(); return; } QList readyOps; QList newChannels; foreach (const ChannelPtr &channel, channels) { if (mIncompleteChannels.contains(channel) || mChannels.contains(channel)) { // we are already observing this channel continue; } // this shouldn't happen, but in any case if (!channel->isValid()) { warning() << "Channel received to observe is invalid. " "Ignoring channel"; continue; } SimpleObserver::Private::ChannelWrapper *wrapper = new SimpleObserver::Private::ChannelWrapper(account, channel, featuresFor(ChannelClassSpec(channel->immutableProperties())), this); mIncompleteChannels.insert(channel, wrapper); connect(wrapper, SIGNAL(channelInvalidated(Tp::AccountPtr,Tp::ChannelPtr,QString,QString)), SLOT(onChannelInvalidated(Tp::AccountPtr,Tp::ChannelPtr,QString,QString))); newChannels.append(channel); readyOps.append(wrapper->becomeReady()); } if (readyOps.isEmpty()) { context->setFinished(); return; } PendingComposite *pc = new PendingComposite(readyOps, false /* failOnFirstError */, SharedPtr(this)); mObserveChannelsInfo.insert(pc, new ContextInfo(context, account, newChannels)); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onChannelsReady(Tp::PendingOperation*))); } void SimpleObserver::Private::Observer::onChannelInvalidated(const AccountPtr &channelAccount, const ChannelPtr &channel, const QString &errorName, const QString &errorMessage) { if (mIncompleteChannels.contains(channel)) { // we are still handling the channel, wait for onChannelsReady that will properly remove // it from mChannels return; } emit channelInvalidated(channelAccount, channel, errorName, errorMessage); Q_ASSERT(mChannels.contains(channel)); delete mChannels.take(channel); } void SimpleObserver::Private::Observer::onChannelsReady(PendingOperation *op) { ContextInfo *info = mObserveChannelsInfo.value(op); foreach (const ChannelPtr &channel, info->channels) { Q_ASSERT(mIncompleteChannels.contains(channel)); ChannelWrapper *wrapper = mIncompleteChannels.take(channel); mChannels.insert(channel, wrapper); } emit newChannels(info->account, info->channels); foreach (const ChannelPtr &channel, info->channels) { ChannelWrapper *wrapper = mChannels.value(channel); if (!channel->isValid()) { mChannels.remove(channel); emit channelInvalidated(info->account, channel, channel->invalidationReason(), channel->invalidationMessage()); delete wrapper; } } mObserveChannelsInfo.remove(op); info->context->setFinished(); delete info; } Features SimpleObserver::Private::Observer::featuresFor( const ChannelClassSpec &channelClass) const { Features features; foreach (const ChannelClassFeatures &spec, mExtraChannelFeatures) { if (spec.first.isSubsetOf(channelClass)) { features.unite(spec.second); } } return features; } SimpleObserver::Private::ChannelWrapper::ChannelWrapper(const AccountPtr &channelAccount, const ChannelPtr &channel, const Features &extraChannelFeatures, QObject *parent) : QObject(parent), mChannelAccount(channelAccount), mChannel(channel), mExtraChannelFeatures(extraChannelFeatures) { connect(channel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated(Tp::DBusProxy*,QString,QString))); } PendingOperation *SimpleObserver::Private::ChannelWrapper::becomeReady() { PendingOperation *op; if (!mChannel->isReady(mExtraChannelFeatures)) { // The channel factory passed to the Account used by SimpleObserver does // not contain the extra features, request them op = mChannel->becomeReady(mExtraChannelFeatures); } else { op = new PendingSuccess(mChannel); } return op; } void SimpleObserver::Private::ChannelWrapper::onChannelInvalidated(DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { Q_ASSERT(proxy == mChannel.data()); emit channelInvalidated(mChannelAccount, mChannel, errorName, errorMessage); } /** * \class SimpleObserver * \ingroup utils * \headerfile TelepathyQt/simple-observer.h * * \brief The SimpleObserver class provides an easy way to track channels * in an account and can be optionally filtered by a contact. */ /** * Create a new SimpleObserver object. * * Events will be signalled for all channels in \a account that match * \a channelFilter for all contacts. * * \param channelFilter A specification of the channels in which this observer * is interested. * \param account The account used to listen to events. * \param extraChannelFeatures Extra channel features to be enabled. All channels emitted in * newChannels() will have the extra features that match their * immutable properties enabled. * \return An SimpleObserverPtr object pointing to the newly created SimpleObserver object. */ SimpleObserverPtr SimpleObserver::create( const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QList &extraChannelFeatures) { return create(account, channelFilter, QString(), false, extraChannelFeatures); } /** * Create a new SimpleObserver object. * * Events will be signalled for all channels in \a account established with * \a contact, if not null, and that match \a channelFilter. * * \param channelFilter A specification of the channels in which this observer * is interested. * \param account The account used to listen to events. * \param contact The contact used to filter events. * \param extraChannelFeatures Extra channel features to be enabled. All channels emitted in * newChannels() will have the extra features that match their * immutable properties enabled. * \return An SimpleObserverPtr object pointing to the newly created SimpleObserver object. */ SimpleObserverPtr SimpleObserver::create( const AccountPtr &account, const ChannelClassSpecList &channelFilter, const ContactPtr &contact, const QList &extraChannelFeatures) { if (contact) { return create(account, channelFilter, contact->id(), false, extraChannelFeatures); } return create(account, channelFilter, QString(), false, extraChannelFeatures); } /** * Create a new SimpleObserver object. * * Events will be signalled for all channels in \a account established * with a contact identified by \a contactIdentifier, if non-empty, and that match * \a channelFilter. * * \param channelFilter A specification of the channels in which this observer * is interested. * \param account The account used to listen to events. * \param contactIdentifier The identifier of the contact used to filter events. * \param extraChannelFeatures Extra channel features to be enabled. All channels emitted in * newChannels() will have the extra features that match their * immutable properties enabled. * \return An SimpleObserverPtr object pointing to the newly created SimpleObserver object. */ SimpleObserverPtr SimpleObserver::create( const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, const QList &extraChannelFeatures) { return create(account, channelFilter, contactIdentifier, true, extraChannelFeatures); } SimpleObserverPtr SimpleObserver::create( const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, bool requiresNormalization, const QList &extraChannelFeatures) { return SimpleObserverPtr(new SimpleObserver(account, channelFilter, contactIdentifier, requiresNormalization, extraChannelFeatures)); } /** * Construct a new SimpleObserver object. * * \param cr The ClientRegistrar used to register this observer. * \param channelFilter The channel filter used by this observer. * \param account The account used to listen to events. * \param extraChannelFeatures Extra channel features to be enabled. All channels emitted in * newChannels() will have the extra features that match their * immutable properties enabled. * \return An SimpleObserverPtr object pointing to the newly created SimpleObserver object. */ SimpleObserver::SimpleObserver(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, bool requiresNormalization, const QList &extraChannelFeatures) : mPriv(new Private(this, account, channelFilter, contactIdentifier, requiresNormalization, extraChannelFeatures)) { if (mPriv->observer) { // populate our channels list with current observer channels QHash > channels; foreach (const Private::ChannelWrapper *wrapper, mPriv->observer->channels()) { channels[wrapper->channelAccount()].append(wrapper->channel()); } QHash >::const_iterator it = channels.constBegin(); QHash >::const_iterator end = channels.constEnd(); for (; it != end; ++it) { onNewChannels(it.key(), it.value()); } if (requiresNormalization) { debug() << "Contact id requires normalization. " "Queueing events until it is normalized"; onAccountConnectionChanged(account->connection()); } } } /** * Class destructor. */ SimpleObserver::~SimpleObserver() { delete mPriv; } /** * Return the account used to listen to events. * * \return A pointer to the Account object. */ AccountPtr SimpleObserver::account() const { return mPriv->account; } /** * Return a specification of the channels that this observer is interested. * * \return The specification of the channels as a list of ChannelClassSpec objects. */ ChannelClassSpecList SimpleObserver::channelFilter() const { return mPriv->channelFilter; } /** * Return the extra channel features to be enabled based on the channels immutable properties. * * \return The features as a list of ChannelClassFeatures objects. */ QList SimpleObserver::extraChannelFeatures() const { return mPriv->extraChannelFeatures; } /** * Return the channels being observed. * * \return A list of pointers to Channel objects. */ QList SimpleObserver::channels() const { return mPriv->channels.toList(); } /** * Return the identifier of the contact used to filter events, or an empty string if none was * provided at construction. * * \return The identifier of the contact. */ QString SimpleObserver::contactIdentifier() const { return mPriv->contactIdentifier; } void SimpleObserver::onAccountConnectionChanged(const Tp::ConnectionPtr &connection) { if (connection) { connect(connection->becomeReady(Connection::FeatureConnected), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAccountConnectionConnected())); } } void SimpleObserver::onAccountConnectionConnected() { ConnectionPtr conn = mPriv->account->connection(); // check here again as the account connection may have changed and the op failed if (!conn || conn->status() != ConnectionStatusConnected) { return; } debug() << "Normalizing contact id" << mPriv->contactIdentifier; ContactManagerPtr contactManager = conn->contactManager(); connect(contactManager->contactsForIdentifiers(QStringList() << mPriv->contactIdentifier), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactConstructed(Tp::PendingOperation*))); } void SimpleObserver::onContactConstructed(Tp::PendingOperation *op) { if (op->isError()) { // what should we do here? retry? wait for a new connection? warning() << "Normalizing contact id failed with" << op->errorName() << " : " << op->errorMessage(); return; } PendingContacts *pc = qobject_cast(op); Q_ASSERT((pc->contacts().size() + pc->invalidIdentifiers().size()) == 1); if (!pc->invalidIdentifiers().isEmpty()) { warning() << "Normalizing contact id failed with invalid id" << mPriv->contactIdentifier; return; } ContactPtr contact = pc->contacts().first(); debug() << "Contact id" << mPriv->contactIdentifier << "normalized to" << contact->id(); mPriv->normalizedContactIdentifier = contact->id(); mPriv->processChannelsQueue(); // disconnect all account signals we are handling disconnect(mPriv->account.data(), 0, this, 0); } void SimpleObserver::onNewChannels(const AccountPtr &channelsAccount, const QList &channels) { if (!mPriv->contactIdentifier.isEmpty() && mPriv->normalizedContactIdentifier.isEmpty()) { mPriv->newChannelsQueue.append(Private::NewChannelsInfo(channelsAccount, channels)); mPriv->channelsQueue.append(&SimpleObserver::Private::processNewChannelsQueue); return; } mPriv->insertChannels(channelsAccount, channels); } void SimpleObserver::onChannelInvalidated(const AccountPtr &channelAccount, const ChannelPtr &channel, const QString &errorName, const QString &errorMessage) { if (!mPriv->contactIdentifier.isEmpty() && mPriv->normalizedContactIdentifier.isEmpty()) { mPriv->channelsInvalidationQueue.append(Private::ChannelInvalidationInfo(channelAccount, channel, errorName, errorMessage)); mPriv->channelsQueue.append(&SimpleObserver::Private::processChannelsInvalidationQueue); return; } mPriv->removeChannel(channelAccount, channel, errorName, errorMessage); } /** * \fn void SimpleObserver::newChannels(const QList &channels) * * Emitted whenever new channels that match this observer's criteria are created. * * \param channels The new channels. */ /** * \fn void SimpleObserver::channelInvalidated(const Tp::ChannelPtr &channel, * const QString &errorName, const QString &errorMessage) * * Emitted whenever a channel that is being observed is invalidated. * * \param channel The channel that was invalidated. * \param errorName A D-Bus error name (a string in a subset * of ASCII, prefixed with a reversed domain name). * \param errorMessage A debugging message associated with the error. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeTubesInterface0000644000175100017520000000040712530423576025150 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeTubesInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeTubesInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/contact-manager-internal.h0000644000175100017520000003233512530423576025222 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_manager_internal_h_HEADER_GUARD_ #define _TelepathyQt_contact_manager_internal_h_HEADER_GUARD_ #include #include #include #include #include #include #include #include #include namespace Tp { class TP_QT_NO_EXPORT ContactManager::Roster : public QObject { Q_OBJECT public: Roster(ContactManager *manager); virtual ~Roster(); ContactListState state() const; PendingOperation *introspect(); PendingOperation *introspectGroups(); void reset(); Contacts allKnownContacts() const; QStringList allKnownGroups() const; PendingOperation *addGroup(const QString &group); PendingOperation *removeGroup(const QString &group); Contacts groupContacts(const QString &group) const; PendingOperation *addContactsToGroup(const QString &group, const QList &contacts); PendingOperation *removeContactsFromGroup(const QString &group, const QList &contacts); bool canRequestPresenceSubscription() const; bool subscriptionRequestHasMessage() const; PendingOperation *requestPresenceSubscription( const QList &contacts, const QString &message); bool canRemovePresenceSubscription() const; bool subscriptionRemovalHasMessage() const; bool canRescindPresenceSubscriptionRequest() const; bool subscriptionRescindingHasMessage() const; PendingOperation *removePresenceSubscription( const QList &contacts, const QString &message); bool canAuthorizePresencePublication() const; bool publicationAuthorizationHasMessage() const; PendingOperation *authorizePresencePublication( const QList &contacts, const QString &message); bool publicationRejectionHasMessage() const; bool canRemovePresencePublication() const; bool publicationRemovalHasMessage() const; PendingOperation *removePresencePublication( const QList &contacts, const QString &message); PendingOperation *removeContacts( const QList &contacts, const QString &message); bool canBlockContacts() const; bool canReportAbuse() const; PendingOperation *blockContacts(const QList &contacts, bool value, bool reportAbuse); private Q_SLOTS: void gotContactBlockingCapabilities(Tp::PendingOperation *op); void gotContactBlockingBlockedContacts(QDBusPendingCallWatcher *watcher); void onContactBlockingBlockedContactsChanged( const Tp::HandleIdentifierMap &added, const Tp::HandleIdentifierMap &removed); void gotContactListProperties(Tp::PendingOperation *op); void gotContactListContacts(QDBusPendingCallWatcher *watcher); void setStateSuccess(); void onContactListStateChanged(uint state); void onContactListContactsChangedWithId(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &ids, const Tp::HandleIdentifierMap &removals); void onContactListContactsChanged(const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals); void onContactListBlockedContactsConstructed(Tp::PendingOperation *op); void onContactListNewContactsConstructed(Tp::PendingOperation *op); void onContactListGroupsChanged(const Tp::UIntList &contacts, const QStringList &added, const QStringList &removed); void onContactListGroupsCreated(const QStringList &names); void onContactListGroupRenamed(const QString &oldName, const QString &newName); void onContactListGroupsRemoved(const QStringList &names); void onModifyFinished(Tp::PendingOperation *op); void onModifyFinishSignaled(); void gotContactListChannelHandle(Tp::PendingOperation *op); void gotContactListChannel(Tp::PendingOperation *op); void onContactListChannelReady(); void gotContactListGroupsProperties(Tp::PendingOperation *op); void onContactListContactsUpgraded(Tp::PendingOperation *op); void onNewChannels(const Tp::ChannelDetailsList &channelDetailsList); void onContactListGroupChannelReady(Tp::PendingOperation *op); void gotChannels(QDBusPendingCallWatcher *watcher); void onStoredChannelMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void onSubscribeChannelMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void onPublishChannelMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void onDenyChannelMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void onContactListGroupMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void onContactListGroupRemoved(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); private: struct ChannelInfo; struct BlockedContactsChangedInfo; struct UpdateInfo; struct GroupsUpdateInfo; struct GroupRenamedInfo; class ModifyFinishOp; class RemoveGroupOp; void introspectContactBlocking(); void introspectContactBlockingBlockedContacts(); void introspectContactList(); void introspectContactListContacts(); void processContactListChanges(); void processContactListBlockedContactsChanged(); void processContactListUpdates(); void processContactListGroupsUpdates(); void processContactListGroupsCreated(); void processContactListGroupRenamed(); void processContactListGroupsRemoved(); void processFinishedModify(); PendingOperation *queuedFinishVoid(const QDBusPendingCall &call); void setContactListChannelsReady(); void updateContactsBlockState(); void updateContactsPresenceState(); void computeKnownContactsChanges(const Contacts &added, const Contacts &pendingAdded, const Contacts &remotePendingAdded, const Contacts &removed, const Channel::GroupMemberChangeDetails &details); void checkContactListGroupsReady(); void setContactListGroupChannelsReady(); QString addContactListGroupChannel(const ChannelPtr &contactListGroupChannel); ContactManager *contactManager; Contacts cachedAllKnownContacts; bool usingFallbackContactList; bool hasContactBlockingInterface; PendingOperation *introspectPendingOp; PendingOperation *introspectGroupsPendingOp; uint pendingContactListState; uint contactListState; bool canReportAbusive; bool gotContactBlockingInitialBlockedContacts; bool canChangeContactList; bool contactListRequestUsesMessage; bool gotContactListInitialContacts; bool gotContactListContactsChangedWithId; bool groupsReintrospectionRequired; QSet cachedAllKnownGroups; bool contactListGroupPropertiesReceived; QQueue contactListChangesQueue; QQueue contactListBlockedContactsChangedQueue; QQueue contactListUpdatesQueue; QQueue contactListGroupsUpdatesQueue; QQueue contactListGroupsCreatedQueue; QQueue contactListGroupRenamedQueue; QQueue contactListGroupsRemovedQueue; bool processingContactListChanges; QHash returnedModifyOps; QQueue modifyFinishQueue; // old roster API uint contactListChannelsReady; QHash contactListChannels; ChannelPtr subscribeChannel; ChannelPtr publishChannel; ChannelPtr storedChannel; ChannelPtr denyChannel; // Number of things left to do before the Groups feature is ready // 1 for Get("Channels") + 1 per channel not ready uint featureContactListGroupsTodo; QList pendingContactListGroupChannels; QHash contactListGroupChannels; QList removedContactListGroupChannels; // If RosterGroups introspection completing should advance the ContactManager state to Success bool groupsSetSuccess; // Contact list contacts using the Conn.I.ContactList API Contacts contactListContacts; // Blocked contacts using the new ContactBlocking API Contacts blockedContacts; }; struct TP_QT_NO_EXPORT ContactManager::Roster::ChannelInfo { enum Type { TypeSubscribe = 0, TypePublish, TypeStored, TypeDeny, LastType }; ChannelInfo() : type((Type) -1) { } ChannelInfo(Type type) : type(type) { } static QString identifierForType(Type type); static uint typeForIdentifier(const QString &identifier); Type type; ReferencedHandles handle; ChannelPtr channel; }; struct TP_QT_NO_EXPORT ContactManager::Roster::BlockedContactsChangedInfo { BlockedContactsChangedInfo(const HandleIdentifierMap &added, const HandleIdentifierMap &removed, bool continueIntrospectionWhenFinished = false) : added(added), removed(removed), continueIntrospectionWhenFinished(continueIntrospectionWhenFinished) { } HandleIdentifierMap added; HandleIdentifierMap removed; bool continueIntrospectionWhenFinished; }; struct TP_QT_NO_EXPORT ContactManager::Roster::UpdateInfo { UpdateInfo(const ContactSubscriptionMap &changes, const HandleIdentifierMap &ids, const HandleIdentifierMap &removals) : changes(changes), ids(ids), removals(removals) { } ContactSubscriptionMap changes; HandleIdentifierMap ids; HandleIdentifierMap removals; }; struct TP_QT_NO_EXPORT ContactManager::Roster::GroupsUpdateInfo { GroupsUpdateInfo(const UIntList &contacts, const QStringList &groupsAdded, const QStringList &groupsRemoved) : contacts(contacts), groupsAdded(groupsAdded), groupsRemoved(groupsRemoved) { } UIntList contacts; QStringList groupsAdded; QStringList groupsRemoved; }; struct TP_QT_NO_EXPORT ContactManager::Roster::GroupRenamedInfo { GroupRenamedInfo(const QString &oldName, const QString &newName) : oldName(oldName), newName(newName) { } QString oldName; QString newName; }; class TP_QT_NO_EXPORT ContactManager::Roster::ModifyFinishOp : public PendingOperation { Q_OBJECT public: ModifyFinishOp(const ConnectionPtr &conn); ~ModifyFinishOp() {}; void setError(const QString &errorName, const QString &errorMessage); void finish(); private: QString errorName, errorMessage; }; class TP_QT_NO_EXPORT ContactManager::Roster::RemoveGroupOp : public PendingOperation { Q_OBJECT public: RemoveGroupOp(const ChannelPtr &channel); ~RemoveGroupOp() {}; private Q_SLOTS: void onContactsRemoved(Tp::PendingOperation *); void onChannelClosed(Tp::PendingOperation *); }; class TP_QT_NO_EXPORT ContactManager::PendingRefreshContactInfo : public PendingOperation { Q_OBJECT public: PendingRefreshContactInfo(const ConnectionPtr &conn); ~PendingRefreshContactInfo(); void addContact(Contact *contact); void refreshInfo(); private Q_SLOTS: void onRefreshInfoFinished(Tp::PendingOperation *op); private: ConnectionPtr mConn; QSet mToRequest; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/feature.cpp0000644000175100017520000000404212530423576022325 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include namespace Tp { struct TP_QT_NO_EXPORT Feature::Private : public QSharedData { Private(bool critical) : critical(critical) {} bool critical; }; /** * \class Feature * \ingroup utils * \headerfile TelepathyQt/feature.h * * \brief The Feature class represents a feature that can be enabled * on demand. */ Feature::Feature() : QPair() { } Feature::Feature(const QString &className, uint id, bool critical) : QPair(className, id), mPriv(new Private(critical)) { } Feature::Feature(const Feature &other) : QPair(other.first, other.second), mPriv(other.mPriv) { } Feature::~Feature() { } Feature &Feature::operator=(const Feature &other) { *this = other; this->mPriv = other.mPriv; return *this; } bool Feature::isCritical() const { if (!isValid()) { return false; } return mPriv->critical; } /** * \class Features * \ingroup utils * \headerfile TelepathyQt/feature.h * * \brief The Features class represents a list of Feature. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/TelepathyQtServiceConfig.cmake.in0000644000175100017520000000236212530423576026513 0ustar00kaffeinekaffeine00000000000000# TelepathyQt@QT_VERSION_MAJOR@ServiceConfig.cmake is generated by CMake from TelepathyQt/TelepathyQtServiceConfig.cmake.in. # Any changed value in this file will be overwritten by CMake. # set the version number set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_MAJOR @TP_QT_MAJOR_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_MINOR @TP_QT_MINOR_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_MICRO @TP_QT_MICRO_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_NANO @TP_QT_NANO_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION @PACKAGE_VERSION@) # set the directories if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INSTALL_DIR) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@") endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INSTALL_DIR) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@") set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_LIB_DIR "@TELEPATHY_QT_LIB_DIR@") set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@") find_package(TelepathyQt@QT_VERSION_MAJOR@ REQUIRED) set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@-service) telepathy-qt-0.9.6.1/TelepathyQt/types.cpp0000644000175100017520000000404412530423576022040 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/_gen/types-body.hpp" #include "TelepathyQt/future-internal.h" #include "TelepathyQt/_gen/future-types-body.hpp" namespace Tp { /** * \\ingroup types * \headerfile TelepathyQt/types.h * * Register the types used by the library with the QtDBus type system. * * Call this function to register the types used before using anything else in * the library. */ void registerTypes() { qDBusRegisterMetaType(); Tp::_registerTypes(); TpFuture::_registerTypes(); } bool operator==(const SUSocketAddress& v1, const SUSocketAddress& v2) { return ((v1.address == v2.address) && (v1.port == v2.port) ); } QDBusArgument& operator<<(QDBusArgument& arg, const SUSocketAddress& val) { arg.beginStructure(); arg << val.address << val.port; arg.endStructure(); return arg; } const QDBusArgument& operator>>(const QDBusArgument& arg, SUSocketAddress& val) { arg.beginStructure(); arg >> val.address >> val.port; arg.endStructure(); return arg; } } telepathy-qt-0.9.6.1/TelepathyQt/captcha.h0000644000175100017520000000346512530423576021752 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_captcha_h_HEADER_GUARD_ #define _TelepathyQt_captcha_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class PendingCaptchas; class TP_QT_EXPORT Captcha { public: Captcha(); Captcha(const Captcha &other); ~Captcha(); bool isValid() const { return mPriv.constData() != 0; } Captcha &operator=(const Captcha &rhs); QString mimeType() const; QString label() const; QByteArray data() const; CaptchaAuthentication::ChallengeType type() const; uint id() const; private: struct Private; friend struct Private; friend class PendingCaptchas; Captcha(const QString &mimeType, const QString &label, const QByteArray &data, CaptchaAuthentication::ChallengeType type, uint id); QSharedDataPointer mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/simple-observer-internal.h0000644000175100017520000002115212530423576025270 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT SimpleObserver::Private { Private(SimpleObserver *parent, const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, bool requiresNormalization, const QList &extraChannelFeatures); bool filterChannel(const AccountPtr &channelAccount, const ChannelPtr &channel); void insertChannels(const AccountPtr &channelsAccount, const QList &channels); void removeChannel(const AccountPtr &channelAccount, const ChannelPtr &channel, const QString &errorName, const QString &errorMessage); void processChannelsQueue(); void processNewChannelsQueue(); void processChannelsInvalidationQueue(); class FakeAccountFactory; class Observer; class ChannelWrapper; struct NewChannelsInfo; struct ChannelInvalidationInfo; SimpleObserver *parent; AccountPtr account; ChannelClassSpecList channelFilter; QString contactIdentifier; QString normalizedContactIdentifier; QList extraChannelFeatures; ClientRegistrarPtr cr; SharedPtr observer; QSet channels; QQueue channelsQueue; QQueue channelsInvalidationQueue; QQueue newChannelsQueue; static QHash >, WeakPtr > observers; static uint numObservers; }; class TP_QT_NO_EXPORT SimpleObserver::Private::FakeAccountFactory : public AccountFactory { Q_OBJECT public: static SharedPtr create(const QDBusConnection &bus) { return SharedPtr(new FakeAccountFactory(bus)); } ~FakeAccountFactory() { } private: friend class Observer; FakeAccountFactory(const QDBusConnection &bus) : AccountFactory(bus, Features()) { } AccountPtr construct(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const { if (mAccounts.contains(objectPath)) { return mAccounts.value(objectPath); } return AccountFactory::construct(busName, objectPath, connFactory, chanFactory, contactFactory); } QHash accounts() const { return mAccounts; } void registerAccount(const AccountPtr &account) { mAccounts.insert(account->objectPath(), account); } QHash mAccounts; }; class TP_QT_NO_EXPORT SimpleObserver::Private::Observer : public QObject, public AbstractClientObserver { Q_OBJECT Q_DISABLE_COPY(Observer) public: struct ContextInfo { ContextInfo() {} ContextInfo(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const QList &channels) : context(context), account(account), channels(channels) { } MethodInvocationContextPtr<> context; AccountPtr account; QList channels; }; Observer(const WeakPtr &cr, const SharedPtr &fakeAccountFactory, const ChannelClassSpecList &channelFilter, const QString &observerName); ~Observer(); WeakPtr clientRegistrar() const { return mCr; } SharedPtr fakeAccountFactory() const { return mFakeAccountFactory; } QString observerName() const { return mObserverName; } QSet extraChannelFeatures() const { return mExtraChannelFeatures; } void registerExtraChannelFeatures(const QList &features) { mExtraChannelFeatures.unite(features.toSet()); } QSet accounts() const { return mAccounts; } void registerAccount(const AccountPtr &account) { mAccounts.insert(account); mFakeAccountFactory->registerAccount(account); } QHash channels() const { return mChannels; } void observeChannels( const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList &requestsSatisfied, const ObserverInfo &observerInfo); Q_SIGNALS: void newChannels(const Tp::AccountPtr &channelsAccount, const QList &channels); void channelInvalidated(const Tp::AccountPtr &channelAccount, const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); private Q_SLOTS: void onChannelInvalidated(const Tp::AccountPtr &channelAccount, const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); void onChannelsReady(Tp::PendingOperation *op); private: Features featuresFor(const ChannelClassSpec &channelClass) const; WeakPtr mCr; SharedPtr mFakeAccountFactory; QString mObserverName; QSet mExtraChannelFeatures; QSet mAccounts; QHash mChannels; QHash mIncompleteChannels; QHash mObserveChannelsInfo; }; class TP_QT_NO_EXPORT SimpleObserver::Private::ChannelWrapper : public QObject { Q_OBJECT Q_DISABLE_COPY(ChannelWrapper) public: ChannelWrapper(const AccountPtr &channelAccount, const ChannelPtr &channel, const Features &extraChannelFeatures, QObject *parent); ~ChannelWrapper() { } AccountPtr channelAccount() const { return mChannelAccount; } ChannelPtr channel() const { return mChannel; } Features extraChannelFeatures() const { return mExtraChannelFeatures; } PendingOperation *becomeReady(); Q_SIGNALS: void channelInvalidated(const Tp::AccountPtr &channelAccount, const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); private Q_SLOTS: void onChannelInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); private: AccountPtr mChannelAccount; ChannelPtr mChannel; Features mExtraChannelFeatures; }; struct TP_QT_NO_EXPORT SimpleObserver::Private::NewChannelsInfo { NewChannelsInfo(); NewChannelsInfo(const AccountPtr &channelsAccount, const QList &channels) : channelsAccount(channelsAccount), channels(channels) { } AccountPtr channelsAccount; QList channels; }; struct TP_QT_NO_EXPORT SimpleObserver::Private::ChannelInvalidationInfo { ChannelInvalidationInfo(); ChannelInvalidationInfo(const AccountPtr &channelAccount, const ChannelPtr &channel, const QString &errorName, const QString &errorMessage) : channelAccount(channelAccount), channel(channel), errorName(errorName), errorMessage(errorMessage) { } AccountPtr channelAccount; ChannelPtr channel; QString errorName; QString errorMessage; }; } // Tp telepathy-qt-0.9.6.1/TelepathyQt/AccountFilter0000644000175100017520000000036612530423576022660 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountFilter_HEADER_GUARD_ #define _TelepathyQt_AccountFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/OutgoingStreamTubeChannel0000644000175100017520000000043412530423576025172 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_OutgoingStreamTubeChannel_HEADER_GUARD_ #define _TelepathyQt_OutgoingStreamTubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/TelepathyQtService-uninstalled.pc.in0000644000175100017520000000121212530423576027220 0ustar00kaffeinekaffeine00000000000000prefix=/nonexistent exec_prefix=/nonexistent abs_top_builddir=${CMAKE_BINARY_DIR} abs_top_srcdir=${CMAKE_SOURCE_DIR} Name: TelepathyQt${QT_VERSION_MAJOR}Service (uninstalled copy) Description: Qt Telepathy Service side bindings Version: ${PACKAGE_VERSION} Requires.private: Qt${QT_VERSION_PC}Core >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Core < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}DBus >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}DBus < ${QT_MAX_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION} Libs: ${CMAKE_BINARY_DIR}/TelepathyQt/Farsight/libtelepathy-qt${QT_VERSION_MAJOR}-service.so Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR} telepathy-qt-0.9.6.1/TelepathyQt/main.dox0000644000175100017520000001076712530423576021641 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \mainpage Telepathy-Qt * * \section Introduction * * Telepathy-Qt is a Qt high-level binding for \telepathy. * * \telepathy is a \dbus framework for unifying real time communication, including instant * messaging, voice calls and video calls. It abstracts differences between protocols to * provide a unified interface for applications. * * Releases can be found here. * * Development is done in the git repository found here. * * \li All Classes * * \section getting_started Getting Started * \li \subpage installation * * \section examples Examples * * This is the list of examples in Telepathy-Qt's examples directory. * The examples demonstrate Telepathy-Qt features in small, self-contained * programs. They are not all designed to be impressive when you run them, * but their source code is carefully written to show good Telepathy-Qt * programming practices. * * \li \subpage accounts_example * \li \subpage contact_messenger_example * \li \subpage protocols_example * \li \subpage roster_example * * \section developer_resources Further Information * \li \subpage bugreport * \li \subpage mailing_lists * \li \subpage async_model * \li \subpage shared_ptr */ /** * \page installation Installation * * \section installation_from_source Installing from source on Linux * * \subsection installation_from_source_requirements Requirements * * Building Telepathy-Qt requires: * \li Qt, including QtDBus * \li GNU make * \li pkg-config * \li libxslt, xsltproc * \li Python * * For the full set of regression tests to run, you'll also need: * \li telepathy-glib * * and to build the example VoIP call UI (examples/call), you'll need: * \li telepathy-glib * \li telepathy-farstream * * \li GStreamer \n * * Building also requires the cmake build system. * * \subsection installation_from_source_building Building * * After installing all dependencies, run: * * \verbatim $ mkdir build; cd build $ cmake .. $ make $ make install \endverbatim */ /** * \page bugreport How to report a bug * * Before reporting a bug, please check the * Bug Tracker to see if the issue is already known. * * Always include the following information in your bug report: * \li The version of Telepathy-Qt you are using * * Please submit the bug report, feature request or "to-do" item * * here. */ /** * \page mailing_lists Mailing Lists * * General * discussion list\n * This list should be used for general discussion about \telepathy usage, * development. * * * Commits list\n * Subscribe to this list to follow the commits. * * * Bugs list\n * Subscribe to this list to follow the bug reports. */ telepathy-qt-0.9.6.1/TelepathyQt/TubeChannel0000644000175100017520000000036012530423576022300 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_TubeChannel_HEADER_GUARD_ #define _TelepathyQt_TubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Features0000644000175100017520000000034512530423576021671 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Features_HEADER_GUARD_ #define _TelepathyQt_Features_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/call-stream-endpoint.cpp0000644000175100017520000000212012530423576024707 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt4 * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-call-stream-endpoint-body.hpp" #include "TelepathyQt/_gen/cli-call-stream-endpoint.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/call-stream-endpoint.xml0000644000175100017520000000037312530423576024735 0ustar00kaffeinekaffeine00000000000000 Call misc interfaces, version 1 telepathy-qt-0.9.6.1/TelepathyQt/dbus-proxy-factory.cpp0000644000175100017520000002507412530423576024463 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/dbus-proxy-factory-internal.h" #include "TelepathyQt/_gen/dbus-proxy-factory.moc.hpp" #include "TelepathyQt/_gen/dbus-proxy-factory-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT DBusProxyFactory::Private { Private(const QDBusConnection &bus) : bus(bus), cache(new Cache) { } ~Private() { delete cache; } QDBusConnection bus; Cache *cache; }; /** * \class DBusProxyFactory * \ingroup utils * \headerfile TelepathyQt/dbus-proxy-factory.h * * \brief The DBusProxyFactory class is a base class for all D-Bus proxy factory * classes. Handles proxy caching and making them ready as appropriate. */ /** * Construct a new DBusProxyFactory object. * * The intention for storing the bus here is that it generally doesn't make sense to construct * proxies for multiple buses in the same context. Allowing that would lead to more complex keying * needs in the cache, as well. * * \param bus The D-Bus bus connection for the objects constructed using this factory. */ DBusProxyFactory::DBusProxyFactory(const QDBusConnection &bus) : mPriv(new Private(bus)) { } /** * Class destructor. */ DBusProxyFactory::~DBusProxyFactory() { delete mPriv; } /** * Return the D-Bus connection all of the proxies from this factory communicate with. * * \return A QDBusConnection object. */ const QDBusConnection &DBusProxyFactory::dbusConnection() const { return mPriv->bus; } /** * Return a cached proxy with the given \a busName and \a objectPath. * * If a proxy has not been previously put into the cache by nowHaveProxy for those identifying * attributes, or a previously cached proxy has since been invalidated and/or destroyed, a \c Null * shared pointer is returned instead. * * \param busName Bus name of the proxy to return. * \param objectPath Object path of the proxy to return. * \return A pointer to the DBusProxy object, if any. */ DBusProxyPtr DBusProxyFactory::cachedProxy(const QString &busName, const QString &objectPath) const { QString finalName = finalBusNameFrom(busName); return mPriv->cache->get(Cache::Key(finalName, objectPath)); } /** * Should be called by subclasses when they have a proxy, be it a newly-constructed one or one from * the cache. * * This function will then do the rest of the factory work, including caching the proxy if it's not * cached already, doing any initialPrepare()/readyPrepare() work if appropriate, and making the * features from featuresFor() ready if they aren't already. * * The returned PendingReady only finishes when the initialPrepare() and readyPrepare() operations * for the proxy has completed, and the requested features have all been made ready (or found unable * to be made ready). Note that this might have happened already before calling this function, if * the proxy was not a newly created one, but was looked up from the cache. DBusProxyFactory handles * the necessary subleties for this to work. * * Access to the proxy instance is allowed as soon as this method returns through * PendingReady::proxy(), if the proxy is needed in a context where it's not required to be ready. * * \param proxy The proxy which the factory should now make sure is prepared and made ready. * \return A PendingReady operation which will emit PendingReady::finished * when the proxy is usable. */ PendingReady *DBusProxyFactory::nowHaveProxy(const DBusProxyPtr &proxy) const { Q_ASSERT(!proxy.isNull()); mPriv->cache->put(proxy); return new PendingReady(SharedPtr((DBusProxyFactory*) this), proxy, featuresFor(proxy)); } /** * \fn QString DBusProxyFactory::finalBusNameFrom(const QString &uniqueOrWellKnown) const * * "Normalize" a bus name according to the rules for the proxy class to construct. * * Should be implemented by subclasses to transform the application-specified name \a * uniqueOrWellKnown to whatever the proxy constructed for that name would have in its * DBusProxy::busName() in the end. * * For StatelessDBusProxy sub-classes this should mostly be an identity transform, while for * StatefulDBusProxy sub-classes StatefulDBusProxy::uniqueNameFrom() or an equivalent thereof should * be used in most cases. * * If this is not implemented correctly, caching won't work properly. * * \param uniqueOrWellKnown Any valid D-Bus service name, either unique or well-known. * \return Whatever that name would turn to, when a proxy is constructed for it. */ /** * Allows subclasses to do arbitrary manipulation on the proxy before it is attempted to be made * ready. * * If a non-\c NULL operation is returned, the completion of that operation is waited for before * starting to make the object ready whenever nowHaveProxy() is called the first time around for a * given proxy. * * \todo FIXME actually implement this... :) Currently just a vtable placeholder. * \param proxy The just-constructed proxy to be prepared. * \return \c NULL ie. nothing to do. */ PendingOperation *DBusProxyFactory::initialPrepare(const DBusProxyPtr &proxy) const { // Nothing we could think about needs doing return NULL; } /** * Allows subclasses to do arbitrary manipulation on the proxy after it has been made ready. * * If a non-\c NULL operation is returned, the completion of that operation is waited for before * signaling that the object is ready for use after ReadyObject::becomeReady() for it has finished * whenever nowHaveProxy() is called the first time around for a given proxy. * * \todo FIXME actually implement this... :) Currently just a vtable placeholder. * \param proxy The just-readified proxy to be prepared. * \return \c NULL ie. nothing to do. */ PendingOperation *DBusProxyFactory::readyPrepare(const DBusProxyPtr &proxy) const { // Nothing we could think about needs doing return NULL; } /** * \fn Features DBusProxyFactory::featuresFor(const SharedPtr &proxy) const * * Return the features which should be made ready on a given proxy. * * This can be used to implement instance-specific features based on arbitrary criteria. * FixedFeatureFactory implements this as a fixed set of features independent of the instance, * however. * * It should be noted that if an empty set of features is returned, ReadyObject::becomeReady() is * not called at all. In other words, any "core feature" is not automatically added to the requested * features. This is to enable setting a factory to not make proxies ready at all, which is useful * eg. in the case of account editing UIs which aren't interested in the state of Connection objects * for the Account objects they're editing. * * \param proxy The proxy on which the returned features will be made ready. * \return A list of Feature objects. */ DBusProxyFactory::Cache::Cache() { } DBusProxyFactory::Cache::~Cache() { } DBusProxyPtr DBusProxyFactory::Cache::get(const Key &key) const { DBusProxyPtr proxy(proxies.value(key)); if (proxy.isNull() || !proxy->isValid()) { // Weak pointer invalidated or proxy invalidated during this mainloop iteration and we still // haven't got the invalidated() signal for it return DBusProxyPtr(); } return proxy; } void DBusProxyFactory::Cache::put(const DBusProxyPtr &proxy) { if (proxy->busName().isEmpty()) { debug() << "Not inserting proxy" << proxy.data() << "with no bus name to factory cache"; return; } else if (!proxy->isValid()) { debug() << "Not inserting to factory cache invalid proxy - proxy is for" << proxy->busName() << ',' << proxy->objectPath(); return; } Key key(proxy->busName(), proxy->objectPath()); DBusProxyPtr existingProxy(proxies.value(key)); if (!existingProxy || existingProxy != proxy) { // Disconnect the invalidated signal from the proxy we're replacing, so it won't uselessly // cause the new (hopefully valid) proxy to be dropped from the cache if it arrives late. // // The window in which this makes a difference is very slim but existent; namely, somebody // must request a proxy from the factory in the same mainloop iteration as an otherwise // matching proxy has invalidated itself. The invalidation signal would be delivered and // processed only during the next mainloop iteration. if (existingProxy) { Q_ASSERT(!existingProxy->isValid()); existingProxy->disconnect( SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), this, SLOT(onProxyInvalidated(Tp::DBusProxy*))); debug() << "Replacing invalidated proxy" << existingProxy.data() << "in cache for name" << existingProxy->busName() << ',' << existingProxy->objectPath(); } connect(proxy.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onProxyInvalidated(Tp::DBusProxy*))); debug() << "Inserting to factory cache proxy for" << key; proxies.insert(key, proxy); } } void DBusProxyFactory::Cache::onProxyInvalidated(Tp::DBusProxy *proxy) { Key key(proxy->busName(), proxy->objectPath()); // Not having it would indicate invalidated() signaled twice for the same proxy, or us having // connected to two proxies with the same key, neither of which should happen Q_ASSERT(proxies.contains(key)); debug() << "Removing from factory cache invalidated proxy for" << key; proxies.remove(key); } } telepathy-qt-0.9.6.1/TelepathyQt/PropertiesInterface0000644000175100017520000000037012530423576024066 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PropertiesInterface_HEADER_GUARD_ #define _TelepathyQt_PropertiesInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ready-object.h0000644000175100017520000000360512530423576022713 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_ready_object_h_HEADER_GUARD_ #define _TelepathyQt_ready_object_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class DBusProxy; class PendingReady; class ReadinessHelper; class RefCounted; class TP_QT_EXPORT ReadyObject { Q_DISABLE_COPY(ReadyObject) public: ReadyObject(RefCounted *object, const Feature &featureCore); ReadyObject(DBusProxy *proxy, const Feature &featureCore); virtual ~ReadyObject(); virtual bool isReady(const Features &features = Features()) const; virtual PendingReady *becomeReady(const Features &requestedFeatures = Features()); virtual Features requestedFeatures() const; virtual Features actualFeatures() const; virtual Features missingFeatures() const; protected: ReadinessHelper *readinessHelper() const; private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/captcha-authentication.cpp0000644000175100017520000003732112530423576025320 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/_gen/captcha-authentication.moc.hpp" #include "TelepathyQt/_gen/captcha-authentication-internal.moc.hpp" #include #include #include #include #include namespace Tp { // --- PendingCaptchaAnswer::PendingCaptchaAnswer(const QDBusPendingCall &call, const CaptchaAuthenticationPtr &object) : PendingOperation(object), mWatcher(new QDBusPendingCallWatcher(call, this)), mCaptcha(object), mChannel(mCaptcha->channel()) { debug() << "Calling Captcha.Answer"; if (mWatcher->isFinished()) { onAnswerFinished(); } else { // Connect the pending void connect(mWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(onAnswerFinished())); } } PendingCaptchaAnswer::~PendingCaptchaAnswer() { } void PendingCaptchaAnswer::onAnswerFinished() { QDBusReply reply = mWatcher->reply(); if (!reply.isValid()) { warning().nospace() << "Captcha.Answer failed with " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); return; } debug() << "Captcha.Answer returned successfully"; // It might have been already opened - check if (mCaptcha->status() == CaptchaStatusLocalPending || mCaptcha->status() == CaptchaStatusRemotePending) { debug() << "Awaiting captcha to be answered from server"; // Wait until status becomes relevant connect(mCaptcha.data(), SIGNAL(statusChanged(Tp::CaptchaStatus)), SLOT(onCaptchaStatusChanged(Tp::CaptchaStatus))); } else { onCaptchaStatusChanged(mCaptcha->status()); } } void PendingCaptchaAnswer::onCaptchaStatusChanged(Tp::CaptchaStatus status) { if (status == CaptchaStatusSucceeded) { // Perfect. Close the channel now. connect(mChannel->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestCloseFinished(Tp::PendingOperation*))); } else if (status == CaptchaStatusFailed || status == CaptchaStatusTryAgain) { warning() << "Captcha status changed to" << status << ", failing"; setFinishedWithError(mCaptcha->error(), mCaptcha->errorDetails().debugMessage()); } } void PendingCaptchaAnswer::onRequestCloseFinished(Tp::PendingOperation *operation) { if (operation->isError()) { // We cannot really fail just because the channel didn't close. Throw a warning instead. warning() << "Could not close the channel after a successful captcha answer!!" << operation->errorMessage(); } setFinished(); } PendingCaptchaCancel::PendingCaptchaCancel(const QDBusPendingCall &call, const CaptchaAuthenticationPtr &object) : PendingOperation(object), mWatcher(new QDBusPendingCallWatcher(call, this)), mCaptcha(object), mChannel(mCaptcha->channel()) { debug() << "Calling Captcha.Cancel"; if (mWatcher->isFinished()) { onCancelFinished(); } else { // Connect the pending void connect(mWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(onCancelFinished())); } } PendingCaptchaCancel::~PendingCaptchaCancel() { } void PendingCaptchaCancel::onCancelFinished() { QDBusReply reply = mWatcher->reply(); if (!reply.isValid()) { warning().nospace() << "Captcha.Answer failed with " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); return; } debug() << "Captcha.Cancel returned successfully"; // Perfect. Close the channel now. connect(mChannel->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestCloseFinished(Tp::PendingOperation*))); } void PendingCaptchaCancel::onRequestCloseFinished(Tp::PendingOperation *operation) { if (operation->isError()) { // We cannot really fail just because the channel didn't close. Throw a warning instead. warning() << "Could not close the channel after a successful captcha cancel!!" << operation->errorMessage(); } setFinished(); } // -- CaptchaAuthentication::Private::Private(CaptchaAuthentication *parent) : parent(parent) { } void CaptchaAuthentication::Private::extractCaptchaAuthenticationProperties(const QVariantMap &props) { canRetry = qdbus_cast(props[QLatin1String("CanRetryCaptcha")]); status = static_cast(qdbus_cast(props[QLatin1String("Status")])); } /** * \class CaptchaAuthentication * \ingroup clientchannel * \headerfile TelepathyQt/captcha-authentication.h * * \brief The CaptchaAuthentication class exposes CaptchaAuthentication's features for channels implementing it. * * A ServerAuthentication channel can implement a CaptchaAuthentication interface: this class exposes all the features * this interface provides in a high-level fashion. It is a mechanism for retrieving a captcha challenge from * a connection manager and answering it. * * This class is meant to be used just during authentication phase. It is useful just for platform-level handlers * which are meant to handle authentication - if you are implementing a client which is meant to live in a * Telepathy-aware platform, you probably won't need to handle this unless you have very special needs. * * Note that CaptchaAuthentication cannot be instantiated directly, instead the accessor method from * ServerAuthenticationChannel (ServerAuthenticationChannel::captchaAuthentication) should be used. * * See \ref async_model, \ref shared_ptr */ CaptchaAuthentication::CaptchaAuthentication(const ChannelPtr &channel) : Object(), mPriv(new Private(this)) { mPriv->channel = channel; } /** * Class destructor. */ CaptchaAuthentication::~CaptchaAuthentication() { delete mPriv; } /** * Return the channel associated with this captcha. * * CaptchaAuthentication is just a representation of an interface which can be implemented by * a ServerAuthentication channel. This function will return the channel implementing the interface * represented by this instance. * * Note that it is currently guaranteed the ChannelPtr returned by this function will be a ServerAuthenticationChannel. * * \return The channel implementing the CaptchaAuthentication interface represented by this instance. */ Tp::ChannelPtr CaptchaAuthentication::channel() const { return ChannelPtr(mPriv->channel); } /** * Return whether this channel supports updating its captchas or not. * * Some protocols allow their captchas to be reloaded providing new data to the user; for example, in case * the image provided is not easily readable. This function checks if this instance supports such a feature. * * Note that in case this function returns \c true, requestCaptchas can be called safely after a failed answer attempt. * * \return \c true if a new captcha can be fetched from this channel, \c false otherwise. */ bool CaptchaAuthentication::canRetry() const { return mPriv->canRetry; } /** * Return the current status of the captcha. * * \return The current status of the captcha. */ Tp::CaptchaStatus CaptchaAuthentication::status() const { return mPriv->status; } /** * Return the code of the last error happened on the interface. * * \return An error code describing the last error occurred. * \sa errorDetails */ QString CaptchaAuthentication::error() const { return mPriv->error; } /** * Return the details of the last error happened on the interface. * * \return Further details describing the last error occurred. * \sa error */ Connection::ErrorDetails CaptchaAuthentication::errorDetails() const { return Connection::ErrorDetails(mPriv->errorDetails); } /** * Request captcha challenges from the connection manager. * * Even if most protocols usually provide a single captcha challenge (OCR), for a variety * of reasons some of them could provide a number of different challenge types, requiring * one or more of them to be answered. * * This method initiates a request to the connection manager for obtaining the most compatible captcha * challenges available. It allows to supply a number of supported mimetypes and types, so that the * request will fail if the CM is unable to provide a challenge compatible with what the handler supports, * or will provide the best one available otherwise. * * Please note that all the challenges returned by this request must be answered in order for the authentication * to succeed. * * Note that if the CM supports retrying the captcha, this function can also be used to load a new set of captchas. * In general, if canRetry returns true, one can expect this function to always return a different set * of challenges which invalidates any other obtained previously. * * \param preferredMimeTypes A list of mimetypes supported by the handler, or an empty list if every * mimetype can be supported. * \param preferredTypes A list of challenge types supported by the handler. * \return A PendingCaptchas which will emit PendingCaptchas::finished when the request has been completed and all the payloads * have been downloaded. * \sa canRetry * \sa cancel * \sa answer */ PendingCaptchas *CaptchaAuthentication::requestCaptchas(const QStringList &preferredMimeTypes, ChallengeTypes preferredTypes) { // The captcha should be either LocalPending or TryAgain if (status() != CaptchaStatusLocalPending && status() != CaptchaStatusTryAgain) { warning() << "Status must be local pending or try again"; return new PendingCaptchas(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel busy"), CaptchaAuthenticationPtr(this)); } ChannelPtr serverAuthChannel = ChannelPtr(mPriv->channel); return new PendingCaptchas( serverAuthChannel->interface()->GetCaptchas(), preferredMimeTypes, preferredTypes, CaptchaAuthenticationPtr(this)); } /** * Overloaded function. Convenience method when just a single captcha requires to be answered. * * Note that you need to answer only the last set of challenges returned, in case requestCaptchas * was invoked multiple times. * * Please note that if this operation succeeds, the channel will be closed right after. * * \param id The id of the challenge being answered. * \param response The answer of this challenge. * \return A PendingOperation which will emit PendingOperation::finished upon the outcome of the answer procedure. * Upon success, the operation will complete once the channel is closed. * \sa requestCaptchas * \sa answer */ Tp::PendingOperation *CaptchaAuthentication::answer(uint id, const QString &response) { QMap answers; answers.insert(id, response); return answer(answers); } /** * Answer a set of challenges. * * Challenges obtained with requestCaptchas should be answered using this method. Note that * every challenge returned by the last invocation of requestCaptchas must be answered * in order for the operation to succeed. * * Usually, most protocols will require just a single challenge to be answered: if that is the * case, you can use the convenience overload. * * Note that you need to answer only the last set of challenges returned, in case requestCaptchas * was invoked multiple times. * * Please note that if this operation succeeds, the channel will be closed right after. * * \param response A set of answers mapped by their id to the challenges obtained previously * \return A PendingOperation which will emit PendingOperation::finished upon the outcome of the answer procedure. * Upon success, the operation will complete once the channel is closed. * \sa requestCaptchas * \sa answer */ Tp::PendingOperation *CaptchaAuthentication::answer(const Tp::CaptchaAnswers &response) { // The captcha should be LocalPending or TryAgain if (status() != CaptchaStatusLocalPending) { warning() << "Status must be local pending"; return new PendingCaptchas(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel busy"), CaptchaAuthenticationPtr(this)); } ChannelPtr serverAuthChannel = ChannelPtr(mPriv->channel); return new PendingCaptchaAnswer(serverAuthChannel->interface()->AnswerCaptchas(response), CaptchaAuthenticationPtr(this)); } /** * Cancel the current challenge. * * Please note that if this operation succeeds, the channel will be closed right after. * * Note that this function has not the same semantics as retry. The status of the CaptchaAuthentication * will change to Failed even if the channel supports retrying. This function should be called * only if the user refuses to answer any challenge. Instead, if the user wishes to retry, * you should just call requestCaptchas one more time. * * \param reason The reason why the challenge has been cancelled. * \param message A message detailing the cancel reason. * \return A PendingOperation which will emit PendingOperation::finished upon the outcome of the cancel procedure. * Upon success, the operation will complete once the channel is closed. * \sa requestCaptchas */ Tp::PendingOperation *CaptchaAuthentication::cancel(CaptchaCancelReason reason, const QString &message) { ChannelPtr serverAuthChannel = ChannelPtr(mPriv->channel); return new PendingCaptchaCancel(serverAuthChannel->interface()->CancelCaptcha( reason, message), CaptchaAuthenticationPtr(this)); } void CaptchaAuthentication::onPropertiesChanged(const QVariantMap &changedProperties, const QStringList &invalidatedProperties) { Q_UNUSED(invalidatedProperties); if (changedProperties.contains(QLatin1String("CaptchaStatus"))) { mPriv->status = static_cast(changedProperties.value(QLatin1String("CaptchaStatus")).value()); emit statusChanged(mPriv->status); } if (changedProperties.contains(QLatin1String("CaptchaErrorDetails"))) { mPriv->errorDetails = changedProperties.value(QLatin1String("CaptchaErrorDetails")).toMap(); } if (changedProperties.contains(QLatin1String("CaptchaError"))) { mPriv->error = changedProperties.value(QLatin1String("CaptchaError")).toString(); } } /** * \fn void CaptchaAuthentication::statusChanged(Tp::CaptchaStatus status) * * Emitted when the value of status() changes. * * \sa status The new status of this CaptchaAuthentication. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/IncomingStreamTubeChannel0000644000175100017520000000043412530423576025142 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_IncomingStreamTubeChannel_HEADER_GUARD_ #define _TelepathyQt_IncomingStreamTubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountCapabilityFilter0000644000175100017520000000042512530423576024656 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountCapabilityFilter_HEADER_GUARD_ #define _TelepathyQt_AccountCapabilityFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Presence0000644000175100017520000000034612530423576021660 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Presence_HEADER_GUARD_ #define _TelepathyQt_Presence_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-ready.h0000644000175100017520000000377212530423576023076 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_ready_h_HEADER_GUARD_ #define _TelepathyQt_pending_ready_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include namespace Tp { class TP_QT_EXPORT PendingReady: public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingReady); public: ~PendingReady(); DBusProxyPtr proxy() const; Features requestedFeatures() const; private Q_SLOTS: TP_QT_NO_EXPORT void onNestedFinished(Tp::PendingOperation *); private: friend class Connection; friend class DBusProxyFactory; friend class ReadinessHelper; TP_QT_NO_EXPORT PendingReady(const SharedPtr &object, const Features &requestedFeatures); TP_QT_NO_EXPORT PendingReady(const SharedPtr &factory, const DBusProxyPtr &proxy, const Features &requestedFeatures); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-captchas.h0000644000175100017520000000452512530423576023555 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_captcha_h_HEADER_GUARD_ #define _TelepathyQt_pending_captcha_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class Captcha; class TP_QT_EXPORT PendingCaptchas : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingCaptchas) public: virtual ~PendingCaptchas(); Captcha captcha() const; QList captchaList() const; bool requiresMultipleCaptchas() const; private Q_SLOTS: TP_QT_NO_EXPORT void onChannelInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); TP_QT_NO_EXPORT void onGetCaptchasWatcherFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onGetCaptchaDataWatcherFinished(QDBusPendingCallWatcher *watcher); private: TP_QT_NO_EXPORT PendingCaptchas(const QDBusPendingCall &call, const QStringList &preferredMimeTypes, CaptchaAuthentication::ChallengeTypes preferredTypes, const CaptchaAuthenticationPtr &channel); TP_QT_NO_EXPORT PendingCaptchas( const QString &errorName, const QString &errorMessage, const CaptchaAuthenticationPtr &channel); struct Private; friend class CaptchaAuthentication; friend struct Private; Private *mPriv; }; } #endif // TP_PENDING_CAPTCHA_H telepathy-qt-0.9.6.1/TelepathyQt/ChannelRequestInterface0000644000175100017520000000041312530423576024651 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelRequestInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelRequestInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceDTMFInterface0000644000175100017520000000041712530423576025600 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceDTMFInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceDTMFInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingComposite0000644000175100017520000000040712530423576023361 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingComposite_HEADER_GUARD_ #define _TelepathyQt_PendingComposite_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountInterfaceStorageInterface0000644000175100017520000000042512530423576026475 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountInterfaceStorageInterface_HEADER_GUARD_ #define _TelepathyQt_AccountInterfaceStorageInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/outgoing-stream-tube-channel-internal.h0000644000175100017520000000650512530423576027646 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_outgoing_stream_tube_channel_internal_h_HEADER_GUARD_ #define _TelepathyQt_outgoing_stream_tube_channel_internal_h_HEADER_GUARD_ #include #include namespace Tp { class PendingVoid; class TP_QT_NO_EXPORT PendingOpenTube : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingOpenTube) public: PendingOpenTube(PendingVoid *offerOperation, const QVariantMap ¶meters, const OutgoingStreamTubeChannelPtr &object); ~PendingOpenTube(); private Q_SLOTS: void onTubeStateChanged(Tp::TubeChannelState state); void onOfferFinished(Tp::PendingOperation *operation); private: struct Private; friend struct Private; Private *mPriv; }; class TP_QT_NO_EXPORT QueuedContactFactory : public QObject { Q_OBJECT Q_DISABLE_COPY(QueuedContactFactory) public: QueuedContactFactory(ContactManagerPtr contactManager, QObject* parent = 0); ~QueuedContactFactory(); QUuid appendNewRequest(const UIntList &handles); Q_SIGNALS: void contactsRetrieved(QUuid uuid, QList contacts); void queueCompleted(); private Q_SLOTS: void onPendingContactsFinished(Tp::PendingOperation *operation); void processNextRequest(); private: struct Entry { QUuid uuid; UIntList handles; }; bool m_isProcessing; ContactManagerPtr m_manager; QQueue m_queue; }; struct TP_QT_NO_EXPORT PendingOpenTube::Private { Private(const QVariantMap ¶meters, PendingOpenTube *parent); // Public object PendingOpenTube *parent; OutgoingStreamTubeChannelPtr tube; QVariantMap parameters; }; struct TP_QT_NO_EXPORT OutgoingStreamTubeChannel::Private { Private(OutgoingStreamTubeChannel *parent); OutgoingStreamTubeChannel *parent; QHash contactsForConnections; QHash, uint> connectionsForSourceAddresses; QHash connectionsForCredentials; QHash > pendingNewConnections; struct ClosedConnection { uint id; QString error, message; ClosedConnection() : id(~0U) {} ClosedConnection(uint id, const QString &error, const QString &message) : id(id), error(error), message(message) {} }; QHash pendingClosedConnections; QueuedContactFactory *queuedContactFactory; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/debug-receiver.h0000644000175100017520000000420212530423576023225 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011-2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_debug_receiver_h_HEADER_GUARD_ #define _TelepathyQt_debug_receiver_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include namespace Tp { class PendingDebugMessageList; class TP_QT_EXPORT DebugReceiver : public StatefulDBusProxy { Q_OBJECT Q_DISABLE_COPY(DebugReceiver) public: static const Feature FeatureCore; static DebugReceiverPtr create(const QString &busName, const QDBusConnection &bus = QDBusConnection::sessionBus()); virtual ~DebugReceiver(); PendingDebugMessageList *fetchMessages(); PendingOperation *setMonitoringEnabled(bool enabled); Q_SIGNALS: void newDebugMessage(const Tp::DebugMessage & message); protected: DebugReceiver(const QDBusConnection &bus, const QString &busName); private Q_SLOTS: TP_QT_NO_EXPORT void onRequestAllPropertiesFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onNewDebugMessage(double time, const QString &domain, uint level, const QString &message); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/outgoing-file-transfer-channel.h0000644000175100017520000000462112530423576026342 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_outgoing_file_transfer_channel_h_HEADER_GUARD_ #define _TelepathyQt_outgoing_file_transfer_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT OutgoingFileTransferChannel : public FileTransferChannel { Q_OBJECT Q_DISABLE_COPY(OutgoingFileTransferChannel) public: static const Feature FeatureCore; static OutgoingFileTransferChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~OutgoingFileTransferChannel(); PendingOperation *provideFile(QIODevice *input); protected: OutgoingFileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = OutgoingFileTransferChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void onProvideFileFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onSocketConnected(); TP_QT_NO_EXPORT void onSocketDisconnected(); TP_QT_NO_EXPORT void onSocketError(QAbstractSocket::SocketError error); TP_QT_NO_EXPORT void onInputAboutToClose(); TP_QT_NO_EXPORT void doTransfer(); private: TP_QT_NO_EXPORT void connectToHost(); TP_QT_NO_EXPORT void setFinished(); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/account-capability-filter.h0000644000175100017520000000236312530423576025401 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_capability_filter_h_HEADER_GUARD_ #define _TelepathyQt_account_capability_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { typedef GenericCapabilityFilter AccountCapabilityFilter; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Contact0000644000175100017520000000034312530423576021504 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Contact_HEADER_GUARD_ #define _TelepathyQt_Contact_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/filter.h0000644000175100017520000000303612530423576021626 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_filter_h_HEADER_GUARD_ #define _TelepathyQt_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { template class Filter : public RefCounted { Q_DISABLE_COPY(Filter) public: virtual ~Filter() {} virtual bool isValid() const { return false; } virtual bool matches(const SharedPtr &t) const { Q_UNUSED(t); return false; } protected: Filter() {} private: struct Private; Private *mPriv; // Just a placeholder really }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeStreamedMediaInterface0000644000175100017520000000042712530423576026574 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeStreamedMediaInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeStreamedMediaInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/request-temporary-handler-internal.h0000644000175100017520000000617412530423576027304 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_request_temporary_handler_internal_h_HEADER_GUARD_ #define _TelepathyQt_request_temporary_handler_internal_h_HEADER_GUARD_ #include #include #include namespace Tp { class TP_QT_NO_EXPORT RequestTemporaryHandler : public QObject, public AbstractClientHandler { Q_OBJECT public: static SharedPtr create(const AccountPtr &account); ~RequestTemporaryHandler(); AccountPtr account() const { return mAccount; } ChannelPtr channel() const { return ChannelPtr(mChannel); } /** * Handlers we request ourselves never go through the approvers but this * handler shouldn't get any channels we didn't request - hence let's make * this always false to leave slightly less room for the CD to get confused and * give some channel we didn't request to us, without even asking an approver * first. Though if the CD isn't confused it shouldn't really matter - our filter * is empty anyway. */ bool bypassApproval() const { return false; } void handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo); void setQueueChannelReceived(bool queue); void setDBusHandlerInvoked(); void setDBusHandlerErrored(const QString &errorName, const QString &errorMessage); bool isDBusHandlerInvoked() const { return dbusHandlerInvoked; } Q_SIGNALS: void error(const QString &errorName, const QString &errorMessage); void channelReceived(const Tp::ChannelPtr &channel, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints); private: RequestTemporaryHandler(const AccountPtr &account); void processChannelReceivedQueue(); AccountPtr mAccount; WeakPtr mChannel; bool mQueueChannelReceived; QQueue > mChannelReceivedQueue; bool dbusHandlerInvoked; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ContactSearchChannel0000644000175100017520000000041412530423576024122 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ContactSearchChannel_HEADER_GUARD_ #define _TelepathyQt_ContactSearchChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-channel-request.h0000644000175100017520000000470212530423576025062 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_channel_request_h_HEADER_GUARD_ #define _TelepathyQt_pending_channel_request_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include class QDBusPendingCallWatcher; namespace Tp { class Account; class ChannelRequestHints; class TP_QT_EXPORT PendingChannelRequest : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingChannelRequest) public: ~PendingChannelRequest(); AccountPtr account() const; ChannelRequestPtr channelRequest() const; PendingOperation *cancel(); Q_SIGNALS: void channelRequestCreated(const Tp::ChannelRequestPtr &channelRequest); private Q_SLOTS: TP_QT_NO_EXPORT void onWatcherFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onProceedOperationFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onCancelOperationFinished(Tp::PendingOperation *op); private: friend class Account; TP_QT_NO_EXPORT PendingChannelRequest(const AccountPtr &account, const QVariantMap &requestedProperties, const QDateTime &userActionTime, const QString &preferredHandler, bool create, const ChannelRequestHints &hints); TP_QT_NO_EXPORT PendingChannelRequest(const AccountPtr &account, const QString &errorName, const QString &errorMessage); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterface0000644000175100017520000000036512530423576023306 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/incoming-file-transfer-channel.h0000644000175100017520000000473212530423576026315 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_incoming_file_transfer_channel_h_HEADER_GUARD_ #define _TelepathyQt_incoming_file_transfer_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT IncomingFileTransferChannel : public FileTransferChannel { Q_OBJECT Q_DISABLE_COPY(IncomingFileTransferChannel) public: static const Feature FeatureCore; static IncomingFileTransferChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~IncomingFileTransferChannel(); PendingOperation *setUri(const QString& uri); PendingOperation *acceptFile(qulonglong offset, QIODevice *output); Q_SIGNALS: void uriDefined(const QString &uri); protected: IncomingFileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = IncomingFileTransferChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void onAcceptFileFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onSocketConnected(); TP_QT_NO_EXPORT void onSocketDisconnected(); TP_QT_NO_EXPORT void onSocketError(QAbstractSocket::SocketError error); TP_QT_NO_EXPORT void doTransfer(); private: TP_QT_NO_EXPORT void connectToHost(); TP_QT_NO_EXPORT void setFinished(); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeContactListInterface0000644000175100017520000000042312530423576026313 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeContactListInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeContactListInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountPropertyFilter0000644000175100017520000000041712530423576024422 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountPropertyFilter_HEADER_GUARD_ #define _TelepathyQt_AccountPropertyFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/contact.h0000644000175100017520000001776312530423576022010 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_h_HEADER_GUARD_ #define _TelepathyQt_contact_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { struct AvatarData; class ContactCapabilities; class LocationInfo; class ContactManager; class PendingContactInfo; class PendingOperation; class PendingStringList; class Presence; class ReferencedHandles; class TP_QT_EXPORT Contact : public Object { Q_OBJECT Q_DISABLE_COPY(Contact) public: static const Feature FeatureAlias; static const Feature FeatureAvatarData; static const Feature FeatureAvatarToken; static const Feature FeatureCapabilities; static const Feature FeatureInfo; static const Feature FeatureLocation; static const Feature FeatureSimplePresence; static const Feature FeatureAddresses; static const Feature FeatureClientTypes; enum PresenceState { PresenceStateNo, PresenceStateAsk, PresenceStateYes }; class InfoFields { public: InfoFields(); InfoFields(const ContactInfoFieldList &fields); InfoFields(const InfoFields &other); ~InfoFields(); bool isValid() const { return mPriv.constData() != 0; } InfoFields &operator=(const InfoFields &other); ContactInfoFieldList fields(const QString &name) const; ContactInfoFieldList allFields() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; ~Contact(); ContactManagerPtr manager() const; ReferencedHandles handle() const; // TODO filter: exact, prefix, substring match QString id() const; Features requestedFeatures() const; Features actualFeatures() const; // TODO filter: exact, prefix, substring match QString alias() const; QMap vcardAddresses() const; QStringList uris() const; bool isAvatarTokenKnown() const; QString avatarToken() const; AvatarData avatarData() const; void requestAvatarData(); /* * TODO filter: * - exact match of presence().type(), presence().status() * - ANY 1 of a number of presence types/statuses * - presence().type() greater or less than a set value * - have/don't have presence().message() AND exact/prefix/substring */ Presence presence() const; // TODO filter: the same as Account filtering by caps ContactCapabilities capabilities() const; // TODO filter: is it available, how accurate, are they near me LocationInfo location() const; // TODO filter: having a specific field, having ANY field, // (field: exact, contents: exact/prefix/substring) bool isContactInfoKnown() const; InfoFields infoFields() const; PendingOperation *refreshInfo(); PendingContactInfo *requestInfo(); /* * Filters on exact values of these, but also the "in your contact list at all or not" usecase */ bool isSubscriptionStateKnown() const; bool isSubscriptionRejected() const; PresenceState subscriptionState() const; bool isPublishStateKnown() const; bool isPublishCancelled() const; PresenceState publishState() const; QString publishStateMessage() const; PendingOperation *requestPresenceSubscription(const QString &message = QString()); PendingOperation *removePresenceSubscription(const QString &message = QString()); PendingOperation *authorizePresencePublication(const QString &message = QString()); PendingOperation *removePresencePublication(const QString &message = QString()); /* * Filter on being blocked or not */ bool isBlocked() const; PendingOperation *block(); PendingOperation *blockAndReportAbuse(); PendingOperation *unblock(); /* * Filter on the groups they're in - to show a specific group only * * Also prefix/substring match on ANY of the groups of the contact */ QStringList groups() const; PendingOperation *addToGroup(const QString &group); PendingOperation *removeFromGroup(const QString &group); QStringList clientTypes() const; PendingStringList *requestClientTypes(); Q_SIGNALS: void aliasChanged(const QString &alias); void avatarTokenChanged(const QString &avatarToken); void avatarDataChanged(const Tp::AvatarData &avatarData); void presenceChanged(const Tp::Presence &presence); void capabilitiesChanged(const Tp::ContactCapabilities &caps); void locationUpdated(const Tp::LocationInfo &location); void infoFieldsChanged(const Tp::Contact::InfoFields &infoFields); void subscriptionStateChanged(Tp::Contact::PresenceState state); void publishStateChanged(Tp::Contact::PresenceState state, const QString &message); void blockStatusChanged(bool blocked); void addedToGroup(const QString &group); void removedFromGroup(const QString &group); void clientTypesChanged(const QStringList &clientTypes); // TODO: consider how the Renaming interface should work and map to Contacts // I guess it would be something like: // void renamedTo(Tp::ContactPtr) // with that contact getting the same features requested as the current one. Or would we rather // want to signal that change right away with a handle? protected: Contact(ContactManager *manager, const ReferencedHandles &handle, const Features &requestedFeatures, const QVariantMap &attributes); virtual void augment(const Features &requestedFeatures, const QVariantMap &attributes); private: static const Feature FeatureRosterGroups; TP_QT_NO_EXPORT void receiveAlias(const QString &alias); TP_QT_NO_EXPORT void receiveAvatarToken(const QString &avatarToken); TP_QT_NO_EXPORT void setAvatarToken(const QString &token); TP_QT_NO_EXPORT void receiveAvatarData(const AvatarData &); TP_QT_NO_EXPORT void receiveSimplePresence(const SimplePresence &presence); TP_QT_NO_EXPORT void receiveCapabilities(const RequestableChannelClassList &caps); TP_QT_NO_EXPORT void receiveLocation(const QVariantMap &location); TP_QT_NO_EXPORT void receiveInfo(const ContactInfoFieldList &info); TP_QT_NO_EXPORT void receiveAddresses(const QMap &addresses, const QStringList &uris); TP_QT_NO_EXPORT void receiveClientTypes(const QStringList &clientTypes); TP_QT_NO_EXPORT static PresenceState subscriptionStateToPresenceState(uint subscriptionState); TP_QT_NO_EXPORT void setSubscriptionState(SubscriptionState state); TP_QT_NO_EXPORT void setPublishState(SubscriptionState state, const QString &message = QString()); TP_QT_NO_EXPORT void setBlocked(bool value); TP_QT_NO_EXPORT void setAddedToGroup(const QString &group); TP_QT_NO_EXPORT void setRemovedFromGroup(const QString &group); struct Private; friend class Connection; friend class ContactFactory; friend class ContactManager; friend struct Private; Private *mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::Contact::InfoFields); #endif telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatcher.cpp0000644000175100017520000000211312530423576024423 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-channel-dispatcher-body.hpp" #include "TelepathyQt/_gen/cli-channel-dispatcher.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/functors.h0000644000175100017520000002513312530423576022206 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_functors_h_HEADER_GUARD_ #define _TelepathyQt_functors_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { struct TP_QT_EXPORT BaseFunctor { }; template struct PtrFunctor0 : public BaseFunctor { typedef R (*FunctionType)(); typedef R ResultType; PtrFunctor0(FunctionType fn) : fn(fn) {} ResultType operator()() const { return fn(); } FunctionType fn; }; template struct MemberFunctor0 : public BaseFunctor { typedef R (T::*FunctionType)(); typedef R ResultType; MemberFunctor0(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()() const { return (object->*(fn))(); } T *object; FunctionType fn; }; template struct PtrFunctor1 : public BaseFunctor { typedef R (*FunctionType)(Arg1); typedef R ResultType; PtrFunctor1(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1) const { return fn(a1); } FunctionType fn; }; template struct MemberFunctor1 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1); typedef R ResultType; MemberFunctor1(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1) const { return (object->*(fn))(a1); } T *object; FunctionType fn; }; template struct PtrFunctor2 : public BaseFunctor { typedef R (*FunctionType)(Arg1, Arg2); typedef R ResultType; PtrFunctor2(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2) const { return fn(a1, a2); } FunctionType fn; }; template struct MemberFunctor2 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1, Arg2); typedef R ResultType; MemberFunctor2(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2) const { return (object->*(fn))(a1, a2); } T *object; FunctionType fn; }; template struct PtrFunctor3 : public BaseFunctor { typedef R (*FunctionType)(Arg1, Arg2, Arg3); typedef R ResultType; PtrFunctor3(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const { return fn(a1, a2, a3); } FunctionType fn; }; template struct MemberFunctor3 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1, Arg2, Arg3); typedef R ResultType; MemberFunctor3(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const { return (object->*(fn))(a1, a2, a3); } T *object; FunctionType fn; }; template struct PtrFunctor4 : public BaseFunctor { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4); typedef R ResultType; PtrFunctor4(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const { return fn(a1, a2, a3, a4); } FunctionType fn; }; template struct MemberFunctor4 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4); typedef R ResultType; MemberFunctor4(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const { return (object->*(fn))(a1, a2, a3, a4); } T *object; FunctionType fn; }; template struct PtrFunctor5 : public BaseFunctor { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5); typedef R ResultType; PtrFunctor5(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const { return fn(a1, a2, a3, a4, a5); } FunctionType fn; }; template struct MemberFunctor5 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5); typedef R ResultType; MemberFunctor5(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const { return (object->*(fn))(a1, a2, a3, a4, a5); } T *object; FunctionType fn; }; template struct PtrFunctor6 : public BaseFunctor { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6); typedef R ResultType; PtrFunctor6(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const { return fn(a1, a2, a3, a4, a5, a6); } FunctionType fn; }; template struct MemberFunctor6 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6); typedef R ResultType; MemberFunctor6(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const { return (object->*(fn))(a1, a2, a3, a4, a5, a6); } T *object; FunctionType fn; }; template struct PtrFunctor7 : public BaseFunctor { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7); typedef R ResultType; PtrFunctor7(FunctionType fn) : fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const { return fn(a1, a2, a3, a4, a5, a6, a7); } FunctionType fn; }; template struct MemberFunctor7 : public BaseFunctor { typedef R (T::*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7); typedef R ResultType; MemberFunctor7(T *object, FunctionType fn) : object(object), fn(fn) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const { return (object->*(fn))(a1, a2, a3, a4, a5, a6, a7); } T *object; FunctionType fn; }; // convenience methods // ptrFun template inline PtrFunctor0 ptrFun(R (*fn)() ) { return PtrFunctor0(fn); } template inline PtrFunctor1 ptrFun(R (*fn)(Arg1) ) { return PtrFunctor1(fn); } template inline PtrFunctor2 ptrFun(R (*fn)(Arg1, Arg2) ) { return PtrFunctor2(fn); } template inline PtrFunctor3 ptrFun(R (*fn)(Arg1, Arg2, Arg3) ) { return PtrFunctor3(fn); } template inline PtrFunctor4 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4) ) { return PtrFunctor4(fn); } template inline PtrFunctor5 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4, Arg5) ) { return PtrFunctor5(fn); } template inline PtrFunctor6 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) ) { return PtrFunctor6(fn); } template inline PtrFunctor7 ptrFun(R (*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) ) { return PtrFunctor7(fn); } // memFun template inline MemberFunctor0 memFun(/**/ T *obj, R (T::*fn)() ) { return MemberFunctor0(obj, fn); } template inline MemberFunctor1 memFun(/**/ T *obj, R (T::*fn)(Arg1) ) { return MemberFunctor1(obj, fn); } template inline MemberFunctor2 memFun(/**/ T *obj, R (T::*fn)(Arg1, Arg2) ) { return MemberFunctor2(obj, fn); } template inline MemberFunctor3 memFun(/**/ T *obj, R (T::*fn)(Arg1, Arg2, Arg3) ) { return MemberFunctor3(obj, fn); } template inline MemberFunctor4 memFun(/**/ T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4) ) { return MemberFunctor4(obj, fn); } template inline MemberFunctor5 memFun(/**/ T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5) ) { return MemberFunctor5(obj, fn); } template inline MemberFunctor6 memFun(/**/ T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) ) { return MemberFunctor6(obj, fn); } template inline MemberFunctor7 memFun(/**/ T *obj, R (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) ) { return MemberFunctor7(obj, fn); } } #endif telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatcher.xml0000644000175100017520000000130312530423576024441 0ustar00kaffeinekaffeine00000000000000 Channel Dispatcher interface telepathy-qt-0.9.6.1/TelepathyQt/PresenceSpec0000644000175100017520000000035612530423576022474 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PresenceSpec_HEADER_GUARD_ #define _TelepathyQt_PresenceSpec_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CaptchaAuthentication0000644000175100017520000000041612530423576024355 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CaptchaAuthentication_HEADER_GUARD_ #define _TelepathyQt_CaptchaAuthentication_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/RoomListChannel0000644000175100017520000000037512530423576023157 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_RoomListChannel_HEADER_GUARD_ #define _TelepathyQt_RoomListChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/OutgoingDBusTubeChannel0000644000175100017520000000042612530423576024575 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_OutgoingDBusTubeChannel_HEADER_GUARD_ #define _TelepathyQt_OutgoingDBusTubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/test-backdoors.h0000644000175100017520000000370412530423576023267 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_test_backdoors_h_HEADER_GUARD_ #define _TelepathyQt_test_backdoors_h_HEADER_GUARD_ #ifdef IN_TP_QT_HEADER #error "This file is an internal header and should never be included by a public one" #endif #include #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Tp { class DBusProxy; // Exported so the tests can use it even if they link dynamically // The header is not installed though, so this should be considered private API struct TP_QT_EXPORT TestBackdoors { static void invalidateProxy(DBusProxy *proxy, const QString &reason, const QString &message); static ConnectionCapabilities createConnectionCapabilities( const RequestableChannelClassSpecList &rccSpecs); static ContactCapabilities createContactCapabilities( const RequestableChannelClassSpecList &rccSpecs, bool specificToContact); }; } // Tp #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #endif telepathy-qt-0.9.6.1/TelepathyQt/base-protocol.cpp0000644000175100017520000011705512530423576023454 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/base-protocol-internal.h" #include "TelepathyQt/_gen/base-protocol.moc.hpp" #include "TelepathyQt/_gen/base-protocol-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT BaseProtocol::Private { Private(BaseProtocol *parent, const QDBusConnection &dbusConnection, const QString &name) : parent(parent), name(name), adaptee(new BaseProtocol::Adaptee(dbusConnection, parent)) { } BaseProtocol *parent; QString name; BaseProtocol::Adaptee *adaptee; QHash interfaces; QStringList connInterfaces; ProtocolParameterList parameters; RequestableChannelClassSpecList rccSpecs; QString vcardField; QString englishName; QString iconName; QStringList authTypes; CreateConnectionCallback createConnectionCb; IdentifyAccountCallback identifyAccountCb; NormalizeContactCallback normalizeContactCb; }; BaseProtocol::Adaptee::Adaptee(const QDBusConnection &dbusConnection, BaseProtocol *protocol) : QObject(protocol), mProtocol(protocol) { (void) new Service::ProtocolAdaptor(dbusConnection, this, protocol->dbusObject()); } BaseProtocol::Adaptee::~Adaptee() { } QStringList BaseProtocol::Adaptee::interfaces() const { QStringList ret; foreach (const AbstractProtocolInterfacePtr &iface, mProtocol->interfaces()) { ret << iface->interfaceName(); } return ret; } QStringList BaseProtocol::Adaptee::connectionInterfaces() const { return mProtocol->connectionInterfaces(); } ParamSpecList BaseProtocol::Adaptee::parameters() const { ParamSpecList ret; foreach (const ProtocolParameter ¶m, mProtocol->parameters()) { ParamSpec paramSpec = param.bareParameter(); if (!(paramSpec.flags & ConnMgrParamFlagHasDefault)) { // we cannot pass QVariant::Invalid over D-Bus, lets build a dummy value // that should be ignored according to the spec paramSpec.defaultValue = QDBusVariant( parseValueWithDBusSignature(QString(), paramSpec.signature)); } ret << paramSpec; } return ret; } RequestableChannelClassList BaseProtocol::Adaptee::requestableChannelClasses() const { return mProtocol->requestableChannelClasses().bareClasses(); } QString BaseProtocol::Adaptee::vcardField() const { return mProtocol->vcardField(); } QString BaseProtocol::Adaptee::englishName() const { return mProtocol->englishName(); } QString BaseProtocol::Adaptee::icon() const { return mProtocol->iconName(); } QStringList BaseProtocol::Adaptee::authenticationTypes() const { return mProtocol->authenticationTypes(); } void BaseProtocol::Adaptee::identifyAccount(const QVariantMap ¶meters, const Tp::Service::ProtocolAdaptor::IdentifyAccountContextPtr &context) { DBusError error; QString accountId; accountId = mProtocol->identifyAccount(parameters, &error); if (accountId.isEmpty()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(accountId); } void BaseProtocol::Adaptee::normalizeContact(const QString &contactId, const Tp::Service::ProtocolAdaptor::NormalizeContactContextPtr &context) { DBusError error; QString normalizedContactId; normalizedContactId = mProtocol->normalizeContact(contactId, &error); if (normalizedContactId.isEmpty()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(normalizedContactId); } /** * \class BaseProtocol * \ingroup servicecm * \headerfile TelepathyQt/base-protocol.h * * \brief Base class for protocol implementations. * * A Protocol is a D-Bus object that implements an IM protocol (for instance, jabber or msn). * The BaseProtocol class provides an easy way to implement a Protocol D-Bus object, * by providing the basic functionality itself and allowing you to extend it by setting * the appropriate properties and callbacks. * * A BaseProtocol instance cannot be registered by itself on the bus. You should add it * to a BaseConnectionManager instance using BaseConnectionManager::addProtocol(). When * the BaseConnectionManager is registered on the bus, all the BaseProtocol instances * will also be registered. */ /** * Constructs a new BaseProtocol object. * * \param dbusConnection The D-Bus connection to use. * \param name The name of this protocol. */ BaseProtocol::BaseProtocol(const QDBusConnection &dbusConnection, const QString &name) : DBusService(dbusConnection), mPriv(new Private(this, dbusConnection, name)) { } /** * Class destructor. */ BaseProtocol::~BaseProtocol() { delete mPriv; } /** * Return the protocol's name, as given on the constructor. * * \return The protocol's name. */ QString BaseProtocol::name() const { return mPriv->name; } /** * Return the immutable properties of this protocol object. * * Immutable properties cannot change after the object has been registered * on the bus with registerObject(). * * \return The immutable properties of this protocol object. */ QVariantMap BaseProtocol::immutableProperties() const { QVariantMap ret; foreach (const AbstractProtocolInterfacePtr &iface, mPriv->interfaces) { ret.unite(iface->immutableProperties()); } ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".Interfaces"), QVariant::fromValue(mPriv->adaptee->interfaces())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".Parameters"), QVariant::fromValue(mPriv->adaptee->parameters())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".ConnectionInterfaces"), QVariant::fromValue(mPriv->adaptee->connectionInterfaces())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses"), QVariant::fromValue(mPriv->adaptee->requestableChannelClasses())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".VCardField"), QVariant::fromValue(mPriv->adaptee->vcardField())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".EnglishName"), QVariant::fromValue(mPriv->adaptee->englishName())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".Icon"), QVariant::fromValue(mPriv->adaptee->icon())); ret.insert(TP_QT_IFACE_PROTOCOL + QLatin1String(".AuthenticationTypes"), QVariant::fromValue(mPriv->adaptee->authenticationTypes())); return ret; } /** * Return the list of interface names that have been set with * setConnectionInterfaces(). * * This list is exposed as the ConnectionInterfaces property of * this Protocol object on the bus and represents interface names * that might be in the Interfaces property of a Connection to this protocol. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return The list of interface names that have been set with * setConnectionInterfaces(). * \sa setConnectionInterfaces() */ QStringList BaseProtocol::connectionInterfaces() const { return mPriv->connInterfaces; } /** * Set the interface names that may appear on Connection objects of * this protocol. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param connInterfaces The list of interface names to set. * \sa connectionInterfaces() */ void BaseProtocol::setConnectionInterfaces(const QStringList &connInterfaces) { if (isRegistered()) { warning() << "BaseProtocol::setConnectionInterfaces: cannot change property after " "registration, immutable property"; return; } mPriv->connInterfaces = connInterfaces; } /** * Return the list of parameters that have been set with setParameters(). * * This list is exposed as the Parameters property of this Protocol object * on the bus and represents the parameters which may be specified in the * Parameters property of an Account for this protocol. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return The list of parameters that have been set with setParameters(). * \sa setParameters() */ ProtocolParameterList BaseProtocol::parameters() const { return mPriv->parameters; } /** * Set the parameters that may be specified in the Parameters property * of an Account for this protocol. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param parameters The list of parameters to set. * \sa parameters() */ void BaseProtocol::setParameters(const ProtocolParameterList ¶meters) { if (isRegistered()) { warning() << "BaseProtocol::setParameters: cannot change property after " "registration, immutable property"; return; } mPriv->parameters = parameters; } /** * Return the list of requestable channel classes that have been set * with setRequestableChannelClasses(). * * This list is exposed as the RequestableChannelClasses property of * this Protocol object on the bus and represents the channel classes * which might be requestable from a Connection to this protocol. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \returns The list of requestable channel classes that have been set * with setRequestableChannelClasses() * \sa setRequestableChannelClasses() */ RequestableChannelClassSpecList BaseProtocol::requestableChannelClasses() const { return mPriv->rccSpecs; } /** * Set the channel classes which might be requestable from a Connection * to this protocol. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param rccSpecs The list of requestable channel classes to set. * \sa requestableChannelClasses() */ void BaseProtocol::setRequestableChannelClasses(const RequestableChannelClassSpecList &rccSpecs) { if (isRegistered()) { warning() << "BaseProtocol::setRequestableChannelClasses: cannot change property after " "registration, immutable property"; return; } mPriv->rccSpecs = rccSpecs; } /** * Return the name of the vcard field that has been set with setVCardField(). * * This is exposed as the VCardField property of this Protocol object on * the bus and represents the name of the most common vcard field used for * this protocol's contact identifiers, normalized to lower case. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return The name of the vcard field that has been set with setVCardField(). * \sa setVCardField() */ QString BaseProtocol::vcardField() const { return mPriv->vcardField; } /** * Set the name of the most common vcard field used for * this protocol's contact identifiers, normalized to lower case. * * For example, this would be x-jabber for Jabber/XMPP * (including Google Talk), or tel for the PSTN. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param vcardField The name of the vcard field to set. * \sa vcardField() */ void BaseProtocol::setVCardField(const QString &vcardField) { if (isRegistered()) { warning() << "BaseProtocol::setVCardField: cannot change property after " "registration, immutable property"; return; } mPriv->vcardField = vcardField; } /** * Return the name that has been set with setEnglishName(). * * This is exposed as the EnglishName property of this Protocol object on * the bus and represents the name of the protocol in a form suitable * for display to users, such as "AIM" or "Yahoo!". * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return The name that has been set with setEnglishName(). * \sa setEnglishName() */ QString BaseProtocol::englishName() const { return mPriv->englishName; } /** * Set the name of the protocol in a form suitable for display to users, * such as "AIM" or "Yahoo!". * * This string should be in the C (english) locale. Clients are expected * to lookup a translation on their own translation catalogs and fall back * to this name if they have no translation for it. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param englishName The name to set. * \sa englishName() */ void BaseProtocol::setEnglishName(const QString &englishName) { if (isRegistered()) { warning() << "BaseProtocol::setEnglishName: cannot change property after " "registration, immutable property"; return; } mPriv->englishName = englishName; } /** * Return the icon name that has been set with setIconName(). * * This is exposed as the Icon property of this Protocol object on * the bus and represents the name of an icon in the system's icon * theme suitable for this protocol, such as "im-msn". * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return The icon name set with setIconName(). * \sa setIconName() */ QString BaseProtocol::iconName() const { return mPriv->iconName; } /** * Set the name of an icon in the system's icon theme suitable * for this protocol, such as "im-msn". * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param iconName The icon name to set. * \sa iconName() */ void BaseProtocol::setIconName(const QString &iconName) { if (isRegistered()) { warning() << "BaseProtocol::setIconName: cannot change property after " "registration, immutable property"; return; } mPriv->iconName = iconName; } /** * Return the list of interfaces that have been set with setAuthenticationTypes(). * * This is exposed as the AuthenticationTypes property of this Protocol object * on the bus and represents 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. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return The list of authentication types that have been * set with setAuthenticationTypes(). * \sa setAuthenticationTypes() */ QStringList BaseProtocol::authenticationTypes() const { return mPriv->authTypes; } /** * Set 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. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param authenticationTypes The list of interfaces to set. * \sa authenticationTypes() */ void BaseProtocol::setAuthenticationTypes(const QStringList &authenticationTypes) { if (isRegistered()) { warning() << "BaseProtocol::setAuthenticationTypes: cannot change property after " "registration, immutable property"; return; } mPriv->authTypes = authenticationTypes; } /** * Set a callback that will be called to create a new connection, when this * has been requested by a client. * * \param cb The callback to set. * \sa createConnection() */ void BaseProtocol::setCreateConnectionCallback(const CreateConnectionCallback &cb) { mPriv->createConnectionCb = cb; } /** * Create a new connection object by calling the callback that has been set * with setCreateConnectionCallback(). * * \param parameters The connection parameters. * \param error A pointer to a DBusError instance where any possible error * will be stored. * \return A pointer to the new connection, or a null BaseConnectionPtr if * no connection could be created, in which case \a error will contain an * appropriate error. * \sa setCreateConnectionCallback() */ BaseConnectionPtr BaseProtocol::createConnection(const QVariantMap ¶meters, Tp::DBusError *error) { if (!mPriv->createConnectionCb.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return BaseConnectionPtr(); } return mPriv->createConnectionCb(parameters, error); } /** * Set a callback that will be called from a client to identify an account. * * This callback will be called when the IdentifyAccount method on the Protocol * D-Bus object has been called. * * \param cb The callback to set. * \sa identifyAccount() */ void BaseProtocol::setIdentifyAccountCallback(const IdentifyAccountCallback &cb) { mPriv->identifyAccountCb = cb; } /** * Return a string which uniquely identifies the account to which * the given parameters would connect, by calling the callback that * has been set with setIdentifyAccountCallback(). * * \param parameters The connection parameters, as they would * be provided to createConnection(). * \param error A pointer to a DBusError instance where any possible error * will be stored. * \return A string which uniquely identifies the account to which * the given parameters would connect, or an empty string if no callback * to create this string has been set with setIdentifyAccountCallback(). * \sa setIdentifyAccountCallback() */ QString BaseProtocol::identifyAccount(const QVariantMap ¶meters, Tp::DBusError *error) { if (!mPriv->identifyAccountCb.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QString(); } return mPriv->identifyAccountCb(parameters, error); } /** * Set a callback that will be called from a client to normalize a contact id. * * \param cb The callback to set. * \sa normalizeContact() */ void BaseProtocol::setNormalizeContactCallback(const NormalizeContactCallback &cb) { mPriv->normalizeContactCb = cb; } /** * Return a normalized version of the given \a contactId, by calling the callback * that has been set with setNormalizeContactCallback(). * * \param contactId The contact ID to normalize. * \param error A pointer to a DBusError instance where any possible error * will be stored. * \return A normalized version of the given \a contactId, or an empty string * if no callback to do the normalization has been set with setNormalizeContactCallback(). * \sa setNormalizeContactCallback() */ QString BaseProtocol::normalizeContact(const QString &contactId, Tp::DBusError *error) { if (!mPriv->normalizeContactCb.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QString(); } return mPriv->normalizeContactCb(contactId, error); } /** * Return a list of interfaces that have been plugged into this Protocol * D-Bus object with plugInterface(). * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return A list containing all the Protocol interface implementation objects. * \sa plugInterface(), interface() */ QList BaseProtocol::interfaces() const { return mPriv->interfaces.values(); } /** * Return a pointer to the interface with the given name. * * \param interfaceName The D-Bus name of the interface, * ex. TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING. * \return A pointer to the AbstractProtocolInterface object that implements * the D-Bus interface with the given name, or a null pointer if such an interface * has not been plugged into this object. * \sa plugInterface(), interfaces() */ AbstractProtocolInterfacePtr BaseProtocol::interface(const QString &interfaceName) const { return mPriv->interfaces.value(interfaceName); } /** * Plug a new interface into this Protocol D-Bus object. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param interface An AbstractProtocolInterface instance that implements * the interface that is to be plugged. * \return \c true on success or \c false otherwise * \sa interfaces(), interface() */ bool BaseProtocol::plugInterface(const AbstractProtocolInterfacePtr &interface) { if (isRegistered()) { warning() << "Unable to plug protocol interface " << interface->interfaceName() << "- protocol already registered"; return false; } if (interface->isRegistered()) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- interface already registered"; return false; } if (mPriv->interfaces.contains(interface->interfaceName())) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- another interface with same name already plugged"; return false; } debug() << "Interface" << interface->interfaceName() << "plugged"; mPriv->interfaces.insert(interface->interfaceName(), interface); return true; } /** * Reimplemented from DBusService. */ bool BaseProtocol::registerObject(const QString &busName, const QString &objectPath, DBusError *error) { if (isRegistered()) { return true; } foreach (const AbstractProtocolInterfacePtr &iface, mPriv->interfaces) { if (!iface->registerInterface(dbusObject())) { // lets not fail if an optional interface fails registering, lets warn only warning() << "Unable to register interface" << iface->interfaceName() << "for protocol" << mPriv->name; } } return DBusService::registerObject(busName, objectPath, error); } /** * \class AbstractProtocolInterface * \ingroup servicecm * \headerfile TelepathyQt/base-protocol.h * * \brief Base class for all the Protocol object interface implementations. */ // AbstractProtocolInterface AbstractProtocolInterface::AbstractProtocolInterface(const QString &interfaceName) : AbstractDBusServiceInterface(interfaceName) { } AbstractProtocolInterface::~AbstractProtocolInterface() { } // Proto.I.Addressing BaseProtocolAddressingInterface::Adaptee::Adaptee(BaseProtocolAddressingInterface *interface) : QObject(interface), mInterface(interface) { } BaseProtocolAddressingInterface::Adaptee::~Adaptee() { } QStringList BaseProtocolAddressingInterface::Adaptee::addressableVCardFields() const { return mInterface->addressableVCardFields(); } QStringList BaseProtocolAddressingInterface::Adaptee::addressableURISchemes() const { return mInterface->addressableUriSchemes(); } void BaseProtocolAddressingInterface::Adaptee::normalizeVCardAddress(const QString& vcardField, const QString& vcardAddress, const Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeVCardAddressContextPtr &context) { DBusError error; QString normalizedAddress; normalizedAddress = mInterface->normalizeVCardAddress(vcardField, vcardAddress, &error); if (normalizedAddress.isEmpty()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(normalizedAddress); } void BaseProtocolAddressingInterface::Adaptee::normalizeContactURI(const QString& uri, const Tp::Service::ProtocolInterfaceAddressingAdaptor::NormalizeContactURIContextPtr &context) { DBusError error; QString normalizedUri; normalizedUri = mInterface->normalizeContactUri(uri, &error); if (normalizedUri.isEmpty()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(normalizedUri); } struct TP_QT_NO_EXPORT BaseProtocolAddressingInterface::Private { Private(BaseProtocolAddressingInterface *parent) : adaptee(new BaseProtocolAddressingInterface::Adaptee(parent)) { } BaseProtocolAddressingInterface::Adaptee *adaptee; QStringList addressableVCardFields; QStringList addressableUriSchemes; NormalizeVCardAddressCallback normalizeVCardAddressCb; NormalizeContactUriCallback normalizeContactUriCb; }; /** * \class BaseProtocolAddressingInterface * \ingroup servicecm * \headerfile TelepathyQt/base-protocol.h * * \brief Base class for implementations of Protocol.Interface.Addressing */ /** * Class constructor. */ BaseProtocolAddressingInterface::BaseProtocolAddressingInterface() : AbstractProtocolInterface(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING), mPriv(new Private(this)) { } /** * Class destructor. */ BaseProtocolAddressingInterface::~BaseProtocolAddressingInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseProtocolAddressingInterface::immutableProperties() const { // no immutable property return QVariantMap(); } /** * Return the list of addressable vcard fields that have been set with * setAddressableVCardFields(). * * This list is exposed as the AddressableVCardFields property of this * interface on the bus and represents the vcard fields that can be used * to request a contact for this protocol, normalized to lower case. * * \return The list of addressable vcard fields that have been set with * setAddressableVCardFields(). * \sa setAddressableVCardFields() */ QStringList BaseProtocolAddressingInterface::addressableVCardFields() const { return mPriv->addressableVCardFields; } /** * Set the list of vcard fields that can be used to request a contact for this protocol. * * All the field names should be normalized to lower case. * * \param vcardFields The list of vcard fields to set. * \sa addressableVCardFields() */ void BaseProtocolAddressingInterface::setAddressableVCardFields(const QStringList &vcardFields) { mPriv->addressableVCardFields = vcardFields; } /** * Return the list of URI schemes that have been set with * setAddressableUriSchemes(). * * This list is exposed as the AddressableURISchemes property of this interface * on the bus and represents the URI schemes that are supported by this * protocol, like "tel" or "sip". * * \return The list of addressable URI schemes that have been set with * setAddressableUriSchemes(). * \sa setAddressableUriSchemes() */ QStringList BaseProtocolAddressingInterface::addressableUriSchemes() const { return mPriv->addressableUriSchemes; } /** * Set the list of URI schemes that are supported by this protocol. * * \param uriSchemes The list of URI schemes to set. * \sa addressableUriSchemes() */ void BaseProtocolAddressingInterface::setAddressableUriSchemes(const QStringList &uriSchemes) { mPriv->addressableUriSchemes = uriSchemes; } /** * Set a callback that will be called from a client to normalize a given * vcard address. * * This callback will be called when the NormalizeVCardAddress method * on the Protocol.Interface.Addressing D-Bus interface has been called. * * \param cb The callback to set. * \sa normalizeVCardAddress() */ void BaseProtocolAddressingInterface::setNormalizeVCardAddressCallback( const NormalizeVCardAddressCallback &cb) { mPriv->normalizeVCardAddressCb = cb; } /** * Return a normalized version of the given \a vcardAddress, which corresponds * to the given \a vcardField, by calling the callback that has been set * with setNormalizeVCardAddressCallback(). * * \param vcardField The vcard field of the address we are normalizing. * \param vcardAddress The address to normalize, which is assumed to belong to a contact. * \param error A pointer to a DBusError instance where any possible error * will be stored. * \return A normalized version of the given \a vcardAddress, or an empty * string if no callback to do the normalization has been set with * setNormalizeVCardAddressCallback(). * \sa setNormalizeVCardAddressCallback() */ QString BaseProtocolAddressingInterface::normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress, DBusError *error) { if (!mPriv->normalizeVCardAddressCb.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QString(); } return mPriv->normalizeVCardAddressCb(vcardField, vcardAddress, error); } /** * Set a callback that will be called from a client to normalize a given contact URI. * * This callback will be called when the NormalizeContactURI method * on the Protocol.Interface.Addressing D-Bus interface has been called. * * \param cb The callback to set. * \sa normalizeContactUri() */ void BaseProtocolAddressingInterface::setNormalizeContactUriCallback( const NormalizeContactUriCallback &cb) { mPriv->normalizeContactUriCb = cb; } /** * Return a normalized version of the given contact URI, \a uri, by calling * the callback that has been set with setNormalizeContactUriCallback(). * * \param uri The contact URI to normalize. * \param error A pointer to a DBusError instance where any possible error * will be stored. * \return A normalized version of the given \a uri, or an empty string if no * callback to do the normalization has been set with setNormalizeContactUriCallback(). * \sa setNormalizeContactUriCallback() */ QString BaseProtocolAddressingInterface::normalizeContactUri(const QString &uri, DBusError *error) { if (!mPriv->normalizeContactUriCb.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QString(); } return mPriv->normalizeContactUriCb(uri, error); } void BaseProtocolAddressingInterface::createAdaptor() { (void) new Service::ProtocolInterfaceAddressingAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Proto.I.Avatars BaseProtocolAvatarsInterface::Adaptee::Adaptee(BaseProtocolAvatarsInterface *interface) : QObject(interface), mInterface(interface) { } BaseProtocolAvatarsInterface::Adaptee::~Adaptee() { } QStringList BaseProtocolAvatarsInterface::Adaptee::supportedAvatarMIMETypes() const { return mInterface->avatarDetails().supportedMimeTypes(); } uint BaseProtocolAvatarsInterface::Adaptee::minimumAvatarHeight() const { return mInterface->avatarDetails().minimumHeight(); } uint BaseProtocolAvatarsInterface::Adaptee::minimumAvatarWidth() const { return mInterface->avatarDetails().minimumWidth(); } uint BaseProtocolAvatarsInterface::Adaptee::recommendedAvatarHeight() const { return mInterface->avatarDetails().recommendedHeight(); } uint BaseProtocolAvatarsInterface::Adaptee::recommendedAvatarWidth() const { return mInterface->avatarDetails().recommendedWidth(); } uint BaseProtocolAvatarsInterface::Adaptee::maximumAvatarHeight() const { return mInterface->avatarDetails().maximumHeight(); } uint BaseProtocolAvatarsInterface::Adaptee::maximumAvatarWidth() const { return mInterface->avatarDetails().maximumWidth(); } uint BaseProtocolAvatarsInterface::Adaptee::maximumAvatarBytes() const { return mInterface->avatarDetails().maximumBytes(); } struct TP_QT_NO_EXPORT BaseProtocolAvatarsInterface::Private { Private(BaseProtocolAvatarsInterface *parent) : adaptee(new BaseProtocolAvatarsInterface::Adaptee(parent)) { } BaseProtocolAvatarsInterface::Adaptee *adaptee; AvatarSpec avatarDetails; }; /** * \class BaseProtocolAvatarsInterface * \ingroup servicecm * \headerfile TelepathyQt/base-protocol.h * * \brief Base class for implementations of Protocol.Interface.Avatars */ /** * Class constructor. */ BaseProtocolAvatarsInterface::BaseProtocolAvatarsInterface() : AbstractProtocolInterface(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS), mPriv(new Private(this)) { } /** * Class destructor. */ BaseProtocolAvatarsInterface::~BaseProtocolAvatarsInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseProtocolAvatarsInterface::immutableProperties() const { QVariantMap ret; ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".SupportedAvatarMIMETypes"), QVariant::fromValue(mPriv->adaptee->supportedAvatarMIMETypes())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight"), QVariant::fromValue(mPriv->adaptee->minimumAvatarHeight())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarWidth"), QVariant::fromValue(mPriv->adaptee->minimumAvatarWidth())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarHeight"), QVariant::fromValue(mPriv->adaptee->recommendedAvatarHeight())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarWidth"), QVariant::fromValue(mPriv->adaptee->recommendedAvatarWidth())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarHeight"), QVariant::fromValue(mPriv->adaptee->maximumAvatarHeight())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarWidth"), QVariant::fromValue(mPriv->adaptee->maximumAvatarWidth())); ret.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarBytes"), QVariant::fromValue(mPriv->adaptee->maximumAvatarBytes())); return ret; } /** * Return the AvatarSpec that has been set with setAvatarDetails(). * * The contents of this AvatarSpec are exposed as the various properties * of this interface on the bus and represent the expected values of the * Connection.Interface.Avatars properties on connections of this protocol. * * This property is immutable and cannot change after this interface * has been registered on an object on the bus with registerInterface(). * * \return The AvatarSpec that has been set with setAvatarDetails(). * \sa setAvatarDetails() */ AvatarSpec BaseProtocolAvatarsInterface::avatarDetails() const { return mPriv->avatarDetails; } /** * Set the avatar details that will be exposed on the properties of this * interface on the bus. * * This property is immutable and cannot change after this interface * has been registered on an object on the bus with registerInterface(). * * \param details The details to set. * \sa avatarDetails() */ void BaseProtocolAvatarsInterface::setAvatarDetails(const AvatarSpec &details) { if (isRegistered()) { warning() << "BaseProtocolAvatarsInterface::setAvatarDetails: cannot change property after " "registration, immutable property"; return; } mPriv->avatarDetails = details; } void BaseProtocolAvatarsInterface::createAdaptor() { (void) new Service::ProtocolInterfaceAvatarsAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Proto.I.Presence BaseProtocolPresenceInterface::Adaptee::Adaptee(BaseProtocolPresenceInterface *interface) : QObject(interface), mInterface(interface) { } BaseProtocolPresenceInterface::Adaptee::~Adaptee() { } SimpleStatusSpecMap BaseProtocolPresenceInterface::Adaptee::statuses() const { return mInterface->statuses().bareSpecs(); } struct TP_QT_NO_EXPORT BaseProtocolPresenceInterface::Private { Private(BaseProtocolPresenceInterface *parent) : adaptee(new BaseProtocolPresenceInterface::Adaptee(parent)) { } BaseProtocolPresenceInterface::Adaptee *adaptee; PresenceSpecList statuses; }; /** * \class BaseProtocolPresenceInterface * \ingroup servicecm * \headerfile TelepathyQt/base-protocol.h * * \brief Base class for implementations of Protocol.Interface.Presence */ /** * Class constructor. */ BaseProtocolPresenceInterface::BaseProtocolPresenceInterface() : AbstractProtocolInterface(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE), mPriv(new Private(this)) { } /** * Class destructor. */ BaseProtocolPresenceInterface::~BaseProtocolPresenceInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseProtocolPresenceInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE + QLatin1String(".Statuses"), QVariant::fromValue(mPriv->adaptee->statuses())); return map; } /** * Return the list of presence statuses that have been set with setStatuses(). * * This list is exposed as the Statuses property of this interface on the bus * and represents the statuses that might appear in the * Connection.Interface.SimplePresence.Statuses property on a connection to * this protocol that supports SimplePresence. * * This property is immutable and cannot change after this interface * has been registered on an object on the bus with registerInterface(). * * \return The list of presence statuses that have been set with setStatuses(). * \sa setStatuses() */ PresenceSpecList BaseProtocolPresenceInterface::statuses() const { return mPriv->statuses; } /** * Set the list of statuses that might appear in the * Connection.Interface.SimplePresence.Statuses property on a connection to * this protocol that supports SimplePresence. * * This property is immutable and cannot change after this interface * has been registered on an object on the bus with registerInterface(). * * \param statuses The statuses list to set. * \sa statuses() */ void BaseProtocolPresenceInterface::setStatuses(const PresenceSpecList &statuses) { if (isRegistered()) { warning() << "BaseProtocolPresenceInterface::setStatuses: cannot change property after " "registration, immutable property"; return; } mPriv->statuses = statuses; } void BaseProtocolPresenceInterface::createAdaptor() { (void) new Service::ProtocolInterfacePresenceAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } } telepathy-qt-0.9.6.1/TelepathyQt/base-connection.cpp0000644000175100017520000022774712530423576023764 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/base-connection-internal.h" #include "TelepathyQt/_gen/base-connection.moc.hpp" #include "TelepathyQt/_gen/base-connection-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT BaseConnection::Private { Private(BaseConnection *connection, const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap ¶meters) : connection(connection), cmName(cmName), protocolName(protocolName), parameters(parameters), selfHandle(0), status(Tp::ConnectionStatusDisconnected), adaptee(new BaseConnection::Adaptee(dbusConnection, connection)) { } BaseConnection *connection; QString cmName; QString protocolName; QVariantMap parameters; QHash interfaces; QSet channels; uint selfHandle; QString selfID; uint status; CreateChannelCallback createChannelCB; ConnectCallback connectCB; InspectHandlesCallback inspectHandlesCB; RequestHandlesCallback requestHandlesCB; BaseConnection::Adaptee *adaptee; }; BaseConnection::Adaptee::Adaptee(const QDBusConnection &dbusConnection, BaseConnection *connection) : QObject(connection), mConnection(connection) { mAdaptor = new Service::ConnectionAdaptor(dbusConnection, this, connection->dbusObject()); } BaseConnection::Adaptee::~Adaptee() { } QStringList BaseConnection::Adaptee::interfaces() const { QStringList ret; foreach(const AbstractConnectionInterfacePtr &iface, mConnection->interfaces()) { ret << iface->interfaceName(); } return ret; } uint BaseConnection::Adaptee::selfHandle() const { return mConnection->selfHandle(); } QString BaseConnection::Adaptee::selfID() const { return mConnection->selfID(); } uint BaseConnection::Adaptee::status() const { return mConnection->status(); } bool BaseConnection::Adaptee::hasImmortalHandles() const { /* True if handles last for the whole lifetime of the Connection. * This SHOULD be the case in all connection managers, but connection managers * MUST interoperate with older clients (which reference-count handles). */ return true; } void BaseConnection::Adaptee::connect(const Tp::Service::ConnectionAdaptor::ConnectContextPtr &context) { if (!mConnection->mPriv->connectCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mConnection->mPriv->connectCB(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnection::Adaptee::disconnect(const Tp::Service::ConnectionAdaptor::DisconnectContextPtr &context) { debug() << "BaseConnection::Adaptee::disconnect"; /* This will remove the connection from the connection manager * and destroy this object. */ emit mConnection->disconnected(); context->setFinished(); } void BaseConnection::Adaptee::getInterfaces(const Service::ConnectionAdaptor::GetInterfacesContextPtr &context) { context->setFinished(interfaces()); } void BaseConnection::Adaptee::getProtocol(const Service::ConnectionAdaptor::GetProtocolContextPtr &context) { context->setFinished(mConnection->protocolName()); } void BaseConnection::Adaptee::getSelfHandle(const Service::ConnectionAdaptor::GetSelfHandleContextPtr &context) { context->setFinished(mConnection->selfHandle()); } void BaseConnection::Adaptee::getStatus(const Tp::Service::ConnectionAdaptor::GetStatusContextPtr &context) { context->setFinished(mConnection->status()); } void BaseConnection::Adaptee::holdHandles(uint handleType, const UIntList &handles, const Service::ConnectionAdaptor::HoldHandlesContextPtr &context) { // This method no does anything since 0.21.6 Q_UNUSED(handleType) Q_UNUSED(handles) context->setFinished(); } void BaseConnection::Adaptee::inspectHandles(uint handleType, const Tp::UIntList &handles, const Tp::Service::ConnectionAdaptor::InspectHandlesContextPtr &context) { DBusError error; QStringList identifiers = mConnection->inspectHandles(handleType, handles, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(identifiers); } void BaseConnection::Adaptee::listChannels(const Service::ConnectionAdaptor::ListChannelsContextPtr &context) { context->setFinished(mConnection->channelsInfo()); } void BaseConnection::Adaptee::requestChannel(const QString &type, uint handleType, uint handle, bool suppressHandler, const Tp::Service::ConnectionAdaptor::RequestChannelContextPtr &context) { debug() << "BaseConnection::Adaptee::requestChannel (deprecated)"; DBusError error; QVariantMap request; request[TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")] = type; request[TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")] = handleType; request[TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")] = handle; bool yours; BaseChannelPtr channel = mConnection->ensureChannel(request, yours, suppressHandler, &error); if (error.isValid() || !channel) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(QDBusObjectPath(channel->objectPath())); } void BaseConnection::Adaptee::releaseHandles(uint handleType, const UIntList &handles, const Service::ConnectionAdaptor::ReleaseHandlesContextPtr &context) { // This method no does anything since 0.21.6 Q_UNUSED(handleType) Q_UNUSED(handles) context->setFinished(); } void BaseConnection::Adaptee::requestHandles(uint handleType, const QStringList &identifiers, const Tp::Service::ConnectionAdaptor::RequestHandlesContextPtr &context) { DBusError error; Tp::UIntList handles = mConnection->requestHandles(handleType, identifiers, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(handles); } /** * \class BaseConnection * \ingroup serviceconn * \headerfile TelepathyQt/base-connection.h * * \brief Base class for Connection implementations. */ /** * Construct a BaseConnection. * * \param dbusConnection The D-Bus connection that will be used by this object. * \param cmName The name of the connection manager associated with this connection. * \param protocolName The name of the protocol associated with this connection. * \param parameters The parameters of this connection. */ BaseConnection::BaseConnection(const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap ¶meters) : DBusService(dbusConnection), mPriv(new Private(this, dbusConnection, cmName, protocolName, parameters)) { } /** * Class destructor. */ BaseConnection::~BaseConnection() { foreach (BaseChannelPtr channel, mPriv->channels) { channel->close(); } delete mPriv; } /** * Return the name of the connection manager associated with this connection. * * \return The name of the connection manager associated with this connection. */ QString BaseConnection::cmName() const { return mPriv->cmName; } /** * Return the name of the protocol associated with this connection. * * \return The name of the protocol associated with this connection. */ QString BaseConnection::protocolName() const { return mPriv->protocolName; } /** * Return the parameters of this connection. * * \return The parameters of this connection. */ QVariantMap BaseConnection::parameters() const { return mPriv->parameters; } /** * Return the immutable properties of this connection object. * * Immutable properties cannot change after the object has been registered * on the bus with registerObject(). * * \return The immutable properties of this connection object. */ QVariantMap BaseConnection::immutableProperties() const { // There is no immutable properties. return QVariantMap(); } uint BaseConnection::selfHandle() const { return mPriv->selfHandle; } void BaseConnection::setSelfHandle(uint selfHandle) { if (selfHandle == mPriv->selfHandle) { return; } mPriv->selfHandle = selfHandle; QMetaObject::invokeMethod(mPriv->adaptee, "selfHandleChanged", Q_ARG(uint, mPriv->selfHandle)); //Can simply use emit in Qt5 QMetaObject::invokeMethod(mPriv->adaptee, "selfContactChanged", Q_ARG(uint, mPriv->selfHandle), Q_ARG(QString, mPriv->selfID)); //Can simply use emit in Qt5 } QString BaseConnection::selfID() const { return mPriv->selfID; } void BaseConnection::setSelfID(const QString &selfID) { if (selfID == mPriv->selfID) { return; } mPriv->selfID = selfID; QMetaObject::invokeMethod(mPriv->adaptee, "selfContactChanged", Q_ARG(uint, mPriv->selfHandle), Q_ARG(QString, mPriv->selfID)); //Can simply use emit in Qt5 } void BaseConnection::setSelfContact(uint selfHandle, const QString &selfID) { if ((selfHandle == mPriv->selfHandle) && (selfID == mPriv->selfID)) { return; } if (selfHandle != mPriv->selfHandle) { QMetaObject::invokeMethod(mPriv->adaptee, "selfHandleChanged", Q_ARG(uint, mPriv->selfHandle)); //Can simply use emit in Qt5 mPriv->selfHandle = selfHandle; } mPriv->selfID = selfID; QMetaObject::invokeMethod(mPriv->adaptee, "selfContactChanged", Q_ARG(uint, mPriv->selfHandle), Q_ARG(QString, mPriv->selfID)); //Can simply use emit in Qt5 } uint BaseConnection::status() const { debug() << "BaseConnection::status = " << mPriv->status << " " << this; return mPriv->status; } void BaseConnection::setStatus(uint newStatus, uint reason) { debug() << "BaseConnection::setStatus " << newStatus << " " << reason << " " << this; bool changed = (newStatus != mPriv->status); mPriv->status = newStatus; if (changed) QMetaObject::invokeMethod(mPriv->adaptee, "statusChanged", Q_ARG(uint, newStatus), Q_ARG(uint, reason)); //Can simply use emit in Qt5 } void BaseConnection::setCreateChannelCallback(const CreateChannelCallback &cb) { mPriv->createChannelCB = cb; } Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, bool suppressHandler, DBusError *error) { if (!mPriv->createChannelCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return BaseChannelPtr(); } if (!mPriv->inspectHandlesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return BaseChannelPtr(); } BaseChannelPtr channel = mPriv->createChannelCB(request, error); if (error->isValid()) return BaseChannelPtr(); QString targetID; if (channel->targetHandle() != 0) { QStringList list = mPriv->inspectHandlesCB(channel->targetHandleType(), UIntList() << channel->targetHandle(), error); if (error->isValid()) { debug() << "BaseConnection::createChannel: could not resolve handle " << channel->targetHandle(); return BaseChannelPtr(); } else { debug() << "BaseConnection::createChannel: found targetID " << *list.begin(); targetID = *list.begin(); } } if (request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"))) { channel->setInitiatorHandle(request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle")).toUInt()); } QString initiatorID; if (channel->initiatorHandle() != 0) { QStringList list = mPriv->inspectHandlesCB(HandleTypeContact, UIntList() << channel->initiatorHandle(), error); if (error->isValid()) { debug() << "BaseConnection::createChannel: could not resolve handle " << channel->initiatorHandle(); return BaseChannelPtr(); } else { debug() << "BaseConnection::createChannel: found initiatorID " << *list.begin(); initiatorID = *list.begin(); } } channel->setInitiatorID(initiatorID); channel->setTargetID(targetID); channel->setRequested(request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"), suppressHandler).toBool()); channel->registerObject(error); if (error->isValid()) return BaseChannelPtr(); addChannel(channel, suppressHandler); return channel; } void BaseConnection::setConnectCallback(const ConnectCallback &cb) { mPriv->connectCB = cb; } void BaseConnection::setInspectHandlesCallback(const InspectHandlesCallback &cb) { mPriv->inspectHandlesCB = cb; } QStringList BaseConnection::inspectHandles(uint handleType, const Tp::UIntList &handles, DBusError *error) { if (!mPriv->inspectHandlesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QStringList(); } return mPriv->inspectHandlesCB(handleType, handles, error); } void BaseConnection::setRequestHandlesCallback(const RequestHandlesCallback &cb) { mPriv->requestHandlesCB = cb; } Tp::UIntList BaseConnection::requestHandles(uint handleType, const QStringList &identifiers, DBusError *error) { if (!mPriv->requestHandlesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::UIntList(); } return mPriv->requestHandlesCB(handleType, identifiers, error); } Tp::ChannelInfoList BaseConnection::channelsInfo() { qDebug() << "BaseConnection::channelsInfo:"; Tp::ChannelInfoList list; foreach(const BaseChannelPtr & c, mPriv->channels) { Tp::ChannelInfo info; info.channel = QDBusObjectPath(c->objectPath()); info.channelType = c->channelType(); info.handle = c->targetHandle(); info.handleType = c->targetHandleType(); qDebug() << "BaseConnection::channelsInfo " << info.channel.path(); list << info; } return list; } Tp::ChannelDetailsList BaseConnection::channelsDetails() { Tp::ChannelDetailsList list; foreach(const BaseChannelPtr & c, mPriv->channels) list << c->details(); return list; } /** * \fn Tp::BaseChannelPtr BaseConnection::ensureChannel(const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error) * * Return a new or exists channel, satisfying the given \a request. * * This method iterate over exist channels to find the one satisfying the \a request. If there is no * suitable channel, then new channel with given request details will be created. * This method uses the matchChannel() method to check whether there exists a channel which confirms with the \a request. * * If \a error is passed, any error that may occur will be stored there. * * \param request A dictionary containing the desirable properties. * \param yours A returning argument. \c true if returned channel is a new one and \c false otherwise. * \param suppressHandler An option to suppress handler in case of a new channel creation. * \param error A pointer to an empty DBusError where any possible error will be stored. * \return A pointer to a channel, satisfying the given \a request. * \sa matchChannel() */ Tp::BaseChannelPtr BaseConnection::ensureChannel(const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error) { if (!request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Missing parameters")); return Tp::BaseChannelPtr(); } const QString channelType = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); foreach(const BaseChannelPtr &channel, mPriv->channels) { if (channel->channelType() != channelType) { continue; } bool match = matchChannel(channel, request, error); if (error->isValid()) { return BaseChannelPtr(); } if (match) { yours = false; return channel; } } yours = true; return createChannel(request, suppressHandler, error); } void BaseConnection::addChannel(BaseChannelPtr channel, bool suppressHandler) { if (mPriv->channels.contains(channel)) { qDebug() << "BaseConnection::addChannel: Channel already added."; return; } mPriv->channels.insert(channel); BaseConnectionRequestsInterfacePtr reqIface = BaseConnectionRequestsInterfacePtr::dynamicCast(interface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS)); if (!reqIface.isNull()) { //emit after return QMetaObject::invokeMethod(reqIface.data(), "newChannels", Qt::QueuedConnection, Q_ARG(Tp::ChannelDetailsList, ChannelDetailsList() << channel->details())); } //emit after return QMetaObject::invokeMethod(mPriv->adaptee, "newChannel", Qt::QueuedConnection, Q_ARG(QDBusObjectPath, QDBusObjectPath(channel->objectPath())), Q_ARG(QString, channel->channelType()), Q_ARG(uint, channel->targetHandleType()), Q_ARG(uint, channel->targetHandle()), Q_ARG(bool, suppressHandler)); QObject::connect(channel.data(), SIGNAL(closed()), SLOT(removeChannel())); } void BaseConnection::removeChannel() { BaseChannelPtr channel = BaseChannelPtr( qobject_cast(sender())); Q_ASSERT(channel); Q_ASSERT(mPriv->channels.contains(channel)); BaseConnectionRequestsInterfacePtr reqIface = BaseConnectionRequestsInterfacePtr::dynamicCast(interface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS)); if (!reqIface.isNull()) { reqIface->channelClosed(QDBusObjectPath(channel->objectPath())); } mPriv->channels.remove(channel); } /** * Return a list of interfaces that have been plugged into this Protocol * D-Bus object with plugInterface(). * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \return A list containing all the Protocol interface implementation objects. * \sa plugInterface(), interface() */ QList BaseConnection::interfaces() const { return mPriv->interfaces.values(); } /** * Return a pointer to the interface with the given name. * * \param interfaceName The D-Bus name of the interface, * ex. TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING. * \return A pointer to the AbstractConnectionInterface object that implements * the D-Bus interface with the given name, or a null pointer if such an interface * has not been plugged into this object. * \sa plugInterface(), interfaces() */ AbstractConnectionInterfacePtr BaseConnection::interface(const QString &interfaceName) const { return mPriv->interfaces.value(interfaceName); } /** * Plug a new interface into this Connection D-Bus object. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param interface An AbstractConnectionInterface instance that implements * the interface that is to be plugged. * \return \c true on success or \c false otherwise * \sa interfaces(), interface() */ bool BaseConnection::plugInterface(const AbstractConnectionInterfacePtr &interface) { if (isRegistered()) { warning() << "Unable to plug protocol interface " << interface->interfaceName() << "- protocol already registered"; return false; } if (interface->isRegistered()) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- interface already registered"; return false; } if (mPriv->interfaces.contains(interface->interfaceName())) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- another interface with same name already plugged"; return false; } debug() << "Interface" << interface->interfaceName() << "plugged"; mPriv->interfaces.insert(interface->interfaceName(), interface); return true; } /** * Register this connection object on the bus. * * If \a error is passed, any D-Bus error that may occur will * be stored there. * * \param error A pointer to an empty DBusError where any * possible D-Bus error will be stored. * \return \c true on success and \c false if there was an error * or this connection object is already registered. * \sa isRegistered() */ bool BaseConnection::registerObject(DBusError *error) { if (isRegistered()) { return true; } if (!checkValidProtocolName(mPriv->protocolName)) { if (error) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, mPriv->protocolName + QLatin1String("is not a valid protocol name")); } debug() << "Unable to register connection - invalid protocol name"; return false; } QString escapedProtocolName = mPriv->protocolName; escapedProtocolName.replace(QLatin1Char('-'), QLatin1Char('_')); QString name = uniqueName(); debug() << "cmName: " << mPriv->cmName << " escapedProtocolName: " << escapedProtocolName << " name:" << name; QString busName = QString(QLatin1String("%1%2.%3.%4")) .arg(TP_QT_CONNECTION_BUS_NAME_BASE, mPriv->cmName, escapedProtocolName, name); QString objectPath = QString(QLatin1String("%1%2/%3/%4")) .arg(TP_QT_CONNECTION_OBJECT_PATH_BASE, mPriv->cmName, escapedProtocolName, name); debug() << "busName: " << busName << " objectName: " << objectPath; DBusError _error; debug() << "Connection: registering interfaces at " << dbusObject(); foreach(const AbstractConnectionInterfacePtr & iface, mPriv->interfaces) { if (!iface->registerInterface(dbusObject())) { // lets not fail if an optional interface fails registering, lets warn only warning() << "Unable to register interface" << iface->interfaceName(); } } bool ret = registerObject(busName, objectPath, &_error); if (!ret && error) { error->set(_error.name(), _error.message()); } return ret; } /** * Return a unique name for this connection. * * \return A unique name for this connection. */ QString BaseConnection::uniqueName() const { return QString(QLatin1String("connection_%1")).arg((quintptr) this, 0, 16); } /** * Reimplemented from DBusService. */ bool BaseConnection::registerObject(const QString &busName, const QString &objectPath, DBusError *error) { return DBusService::registerObject(busName, objectPath, error); } /** * \fn bool BaseConnection::matchChannel(const BaseChannelPtr &channel, const QVariantMap &request, DBusError *error) * * Check \a channel on conformity with \a request. * * This virtual method is used to check if a \a channel satisfying the given request. * It is warranted, that the type of the channel meets the requested type. * * The default implementation compares TargetHandleType and TargetHandle/TargetID. * If \a error is passed, any error that may occur will be stored there. * * \param channel A pointer to a channel to be checked. * \param request A dictionary containing the desirable properties. * \param error A pointer to an empty DBusError where any * possible error will be stored. * \return \c true if channel match the request and \c false otherwise. * \sa ensureChannel() */ bool BaseConnection::matchChannel(const BaseChannelPtr &channel, const QVariantMap &request, DBusError *error) { Q_UNUSED(error); if (request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"))) { uint targetHandleType = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")).toUInt(); if (channel->targetHandleType() != targetHandleType) { return false; } if (request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"))) { uint targetHandle = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")).toUInt(); return channel->targetHandle() == targetHandle; } else if (request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"))) { const QString targetID = request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")).toString(); return channel->targetID() == targetID; } else { // Request is not valid return false; } } // Unknown request return false; } /** * \fn void BaseConnection::disconnected() * * Emitted when this connection has been disconnected. */ /** * \class AbstractConnectionInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for all the Connection object interface implementations. */ AbstractConnectionInterface::AbstractConnectionInterface(const QString &interfaceName) : AbstractDBusServiceInterface(interfaceName) { } AbstractConnectionInterface::~AbstractConnectionInterface() { } // Conn.I.Requests BaseConnectionRequestsInterface::Adaptee::Adaptee(BaseConnectionRequestsInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionRequestsInterface::Adaptee::~Adaptee() { } void BaseConnectionRequestsInterface::Adaptee::ensureChannel(const QVariantMap &request, const Tp::Service::ConnectionInterfaceRequestsAdaptor::EnsureChannelContextPtr &context) { DBusError error; bool yours; QDBusObjectPath channel; QVariantMap details; mInterface->ensureChannel(request, yours, channel, details, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(yours, channel, details); } void BaseConnectionRequestsInterface::Adaptee::createChannel(const QVariantMap &request, const Tp::Service::ConnectionInterfaceRequestsAdaptor::CreateChannelContextPtr &context) { DBusError error; QDBusObjectPath channel; QVariantMap details; mInterface->createChannel(request, channel, details, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(channel, details); } struct TP_QT_NO_EXPORT BaseConnectionRequestsInterface::Private { Private(BaseConnectionRequestsInterface *parent, BaseConnection *connection_) : connection(connection_), adaptee(new BaseConnectionRequestsInterface::Adaptee(parent)) { } BaseConnection *connection; BaseConnectionRequestsInterface::Adaptee *adaptee; }; /** * \class BaseConnectionRequestsInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.Requests */ /** * Class constructor. */ BaseConnectionRequestsInterface::BaseConnectionRequestsInterface(BaseConnection *connection) : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS), mPriv(new Private(this, connection)) { } /** * Class destructor. */ BaseConnectionRequestsInterface::~BaseConnectionRequestsInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionRequestsInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS + QLatin1String(".RequestableChannelClasses"), QVariant::fromValue(mPriv->adaptee->requestableChannelClasses())); return map; } void BaseConnectionRequestsInterface::createAdaptor() { (void) new Service::ConnectionInterfaceRequestsAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } Tp::ChannelDetailsList BaseConnectionRequestsInterface::Adaptee::channels() const { return mInterface->mPriv->connection->channelsDetails(); } void BaseConnectionRequestsInterface::newChannels(const Tp::ChannelDetailsList &channels) { QMetaObject::invokeMethod(mPriv->adaptee,"newChannels", Q_ARG(Tp::ChannelDetailsList,channels)); //Can replace by a direct call in Qt5 } void BaseConnectionRequestsInterface::channelClosed(const QDBusObjectPath &removed) { QMetaObject::invokeMethod(mPriv->adaptee,"channelClosed", Q_ARG(QDBusObjectPath, removed)); //Can replace by a direct call in Qt5 } void BaseConnectionRequestsInterface::ensureChannel(const QVariantMap &request, bool &yours, QDBusObjectPath &objectPath, QVariantMap &details, DBusError *error) { BaseChannelPtr channel = mPriv->connection->ensureChannel(request, yours, /* suppressHandler */ true, error); if (error->isValid()) return; objectPath = QDBusObjectPath(channel->objectPath()); details = channel->details().properties; } void BaseConnectionRequestsInterface::createChannel(const QVariantMap &request, QDBusObjectPath &objectPath, QVariantMap &details, DBusError *error) { if (!request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Missing parameters")); return; } BaseChannelPtr channel = mPriv->connection->createChannel(request, /* yours */ false, error); if (error->isValid()) return; objectPath = QDBusObjectPath(channel->objectPath()); details = channel->details().properties; } // Conn.I.Contacts BaseConnectionContactsInterface::Adaptee::Adaptee(BaseConnectionContactsInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionContactsInterface::Adaptee::~Adaptee() { } void BaseConnectionContactsInterface::Adaptee::getContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, bool /*hold*/, const Tp::Service::ConnectionInterfaceContactsAdaptor::GetContactAttributesContextPtr &context) { DBusError error; ContactAttributesMap contactAttributes = mInterface->getContactAttributes(handles, interfaces, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(contactAttributes); } struct TP_QT_NO_EXPORT BaseConnectionContactsInterface::Private { Private(BaseConnectionContactsInterface *parent) : adaptee(new BaseConnectionContactsInterface::Adaptee(parent)) { } QStringList contactAttributeInterfaces; GetContactAttributesCallback getContactAttributesCallback; BaseConnectionContactsInterface::Adaptee *adaptee; }; QStringList BaseConnectionContactsInterface::Adaptee::contactAttributeInterfaces() const { return mInterface->mPriv->contactAttributeInterfaces; } /** * \class BaseConnectionContactsInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.Contacts */ /** * Class constructor. */ BaseConnectionContactsInterface::BaseConnectionContactsInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionContactsInterface::~BaseConnectionContactsInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionContactsInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS + QLatin1String(".ContactAttributeInterfaces"), QVariant::fromValue(mPriv->adaptee->contactAttributeInterfaces())); return map; } void BaseConnectionContactsInterface::createAdaptor() { (void) new Service::ConnectionInterfaceContactsAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionContactsInterface::setContactAttributeInterfaces(const QStringList &contactAttributeInterfaces) { mPriv->contactAttributeInterfaces = contactAttributeInterfaces; } void BaseConnectionContactsInterface::setGetContactAttributesCallback(const GetContactAttributesCallback &cb) { mPriv->getContactAttributesCallback = cb; } ContactAttributesMap BaseConnectionContactsInterface::getContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, DBusError *error) { if (!mPriv->getContactAttributesCallback.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return ContactAttributesMap(); } return mPriv->getContactAttributesCallback(handles, interfaces, error); } // Conn.I.SimplePresence BaseConnectionSimplePresenceInterface::Adaptee::Adaptee(BaseConnectionSimplePresenceInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionSimplePresenceInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseConnectionSimplePresenceInterface::Private { Private(BaseConnectionSimplePresenceInterface *parent) : maximumStatusMessageLength(0), adaptee(new BaseConnectionSimplePresenceInterface::Adaptee(parent)) { } SetPresenceCallback setPresenceCB; SimpleStatusSpecMap statuses; uint maximumStatusMessageLength; /* The current presences */ SimpleContactPresences presences; BaseConnectionSimplePresenceInterface::Adaptee *adaptee; }; /** * \class BaseConnectionSimplePresenceInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.SimplePresence */ /** * Class constructor. */ BaseConnectionSimplePresenceInterface::BaseConnectionSimplePresenceInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionSimplePresenceInterface::~BaseConnectionSimplePresenceInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionSimplePresenceInterface::immutableProperties() const { QVariantMap map; //FIXME return map; } void BaseConnectionSimplePresenceInterface::createAdaptor() { (void) new Service::ConnectionInterfaceSimplePresenceAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionSimplePresenceInterface::setPresences(const Tp::SimpleContactPresences &presences) { foreach(uint handle, presences.keys()) { mPriv->presences[handle] = presences[handle]; } QMetaObject::invokeMethod(mPriv->adaptee, "presencesChanged", Q_ARG(Tp::SimpleContactPresences, presences)); //Can simply use emit in Qt5 } void BaseConnectionSimplePresenceInterface::setSetPresenceCallback(const SetPresenceCallback &cb) { mPriv->setPresenceCB = cb; } SimpleContactPresences BaseConnectionSimplePresenceInterface::getPresences(const UIntList &contacts) { Tp::SimpleContactPresences presences; foreach(uint handle, contacts) { static const Tp::SimplePresence unknownPresence = { /* type */ ConnectionPresenceTypeUnknown, /* status */ QLatin1String("unknown") }; presences[handle] = mPriv->presences.value(handle, unknownPresence); } return presences; } Tp::SimpleStatusSpecMap BaseConnectionSimplePresenceInterface::statuses() const { return mPriv->statuses; } void BaseConnectionSimplePresenceInterface::setStatuses(const SimpleStatusSpecMap &statuses) { mPriv->statuses = statuses; } uint BaseConnectionSimplePresenceInterface::maximumStatusMessageLength() const { return mPriv->maximumStatusMessageLength; } void BaseConnectionSimplePresenceInterface::setMaximumStatusMessageLength(uint maximumStatusMessageLength) { mPriv->maximumStatusMessageLength = maximumStatusMessageLength; } Tp::SimpleStatusSpecMap BaseConnectionSimplePresenceInterface::Adaptee::statuses() const { return mInterface->mPriv->statuses; } int BaseConnectionSimplePresenceInterface::Adaptee::maximumStatusMessageLength() const { return mInterface->mPriv->maximumStatusMessageLength; } void BaseConnectionSimplePresenceInterface::Adaptee::setPresence(const QString &status, const QString &statusMessage_, const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::SetPresenceContextPtr &context) { if (!mInterface->mPriv->setPresenceCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } SimpleStatusSpecMap::Iterator i = mInterface->mPriv->statuses.find(status); if (i == mInterface->mPriv->statuses.end()) { warning() << "BaseConnectionSimplePresenceInterface::Adaptee::setPresence: status is not in statuses"; context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("status not in statuses")); return; } QString statusMessage = statusMessage_; if ((uint)statusMessage.length() > mInterface->mPriv->maximumStatusMessageLength) { debug() << "BaseConnectionSimplePresenceInterface::Adaptee::setPresence: " << "truncating status to " << mInterface->mPriv->maximumStatusMessageLength; statusMessage = statusMessage.left(mInterface->mPriv->maximumStatusMessageLength); } DBusError error; uint selfHandle = mInterface->mPriv->setPresenceCB(status, statusMessage, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } Tp::SimplePresence presence; presence.type = i->type; presence.status = status; presence.statusMessage = statusMessage; mInterface->mPriv->presences[selfHandle] = presence; /* Emit PresencesChanged */ SimpleContactPresences presences; presences[selfHandle] = presence; //emit after return QMetaObject::invokeMethod(mInterface->mPriv->adaptee, "presencesChanged", Qt::QueuedConnection, Q_ARG(Tp::SimpleContactPresences, presences)); context->setFinished(); } void BaseConnectionSimplePresenceInterface::Adaptee::getPresences(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::GetPresencesContextPtr &context) { context->setFinished(mInterface->getPresences(contacts)); } // Conn.I.ContactList struct TP_QT_NO_EXPORT BaseConnectionContactListInterface::Private { Private(BaseConnectionContactListInterface *parent) : contactListState(ContactListStateNone), contactListPersists(false), canChangeContactList(true), requestUsesMessage(false), downloadAtConnection(false), adaptee(new BaseConnectionContactListInterface::Adaptee(parent)) { } uint contactListState; bool contactListPersists; bool canChangeContactList; bool requestUsesMessage; bool downloadAtConnection; GetContactListAttributesCallback getContactListAttributesCB; RequestSubscriptionCallback requestSubscriptionCB; AuthorizePublicationCallback authorizePublicationCB; RemoveContactsCallback removeContactsCB; UnsubscribeCallback unsubscribeCB; UnpublishCallback unpublishCB; DownloadCallback downloadCB; BaseConnectionContactListInterface::Adaptee *adaptee; }; BaseConnectionContactListInterface::Adaptee::Adaptee(BaseConnectionContactListInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionContactListInterface::Adaptee::~Adaptee() { } uint BaseConnectionContactListInterface::Adaptee::contactListState() const { return mInterface->contactListState(); } bool BaseConnectionContactListInterface::Adaptee::contactListPersists() const { return mInterface->contactListPersists(); } bool BaseConnectionContactListInterface::Adaptee::canChangeContactList() const { return mInterface->canChangeContactList(); } bool BaseConnectionContactListInterface::Adaptee::requestUsesMessage() const { return mInterface->requestUsesMessage(); } bool BaseConnectionContactListInterface::Adaptee::downloadAtConnection() const { return mInterface->downloadAtConnection(); } void BaseConnectionContactListInterface::Adaptee::getContactListAttributes(const QStringList &interfaces, bool hold, const Tp::Service::ConnectionInterfaceContactListAdaptor::GetContactListAttributesContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::getContactListAttributes"; DBusError error; Tp::ContactAttributesMap attributes = mInterface->getContactListAttributes(interfaces, hold, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(attributes); } void BaseConnectionContactListInterface::Adaptee::requestSubscription(const Tp::UIntList &contacts, const QString &message, const Tp::Service::ConnectionInterfaceContactListAdaptor::RequestSubscriptionContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::requestSubscription"; DBusError error; mInterface->requestSubscription(contacts, message, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionContactListInterface::Adaptee::authorizePublication(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::AuthorizePublicationContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::authorizePublication"; DBusError error; mInterface->authorizePublication(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionContactListInterface::Adaptee::removeContacts(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::RemoveContactsContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::removeContacts"; DBusError error; mInterface->removeContacts(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionContactListInterface::Adaptee::unsubscribe(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::UnsubscribeContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::unsubscribe"; DBusError error; mInterface->unsubscribe(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionContactListInterface::Adaptee::unpublish(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::UnpublishContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::unpublish"; DBusError error; mInterface->unpublish(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionContactListInterface::Adaptee::download( const Tp::Service::ConnectionInterfaceContactListAdaptor::DownloadContextPtr &context) { qDebug() << "BaseConnectionContactListInterface::Adaptee::download"; DBusError error; mInterface->download(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseConnectionContactListInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.ContactList */ /** * Class constructor. */ BaseConnectionContactListInterface::BaseConnectionContactListInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionContactListInterface::~BaseConnectionContactListInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionContactListInterface::immutableProperties() const { QVariantMap map; return map; } uint BaseConnectionContactListInterface::contactListState() const { return mPriv->contactListState; } void BaseConnectionContactListInterface::setContactListState(uint contactListState) { if (mPriv->contactListState == contactListState) { return; } mPriv->contactListState = contactListState; QMetaObject::invokeMethod(mPriv->adaptee, "contactListStateChanged", Q_ARG(uint, contactListState)); //Can simply use emit in Qt5 } bool BaseConnectionContactListInterface::contactListPersists() const { return mPriv->contactListPersists; } void BaseConnectionContactListInterface::setContactListPersists(bool contactListPersists) { mPriv->contactListPersists = contactListPersists; } bool BaseConnectionContactListInterface::canChangeContactList() const { return mPriv->canChangeContactList; } void BaseConnectionContactListInterface::setCanChangeContactList(bool canChangeContactList) { mPriv->canChangeContactList = canChangeContactList; } bool BaseConnectionContactListInterface::requestUsesMessage() const { return mPriv->requestUsesMessage; } void BaseConnectionContactListInterface::setRequestUsesMessage(bool requestUsesMessage) { mPriv->requestUsesMessage = requestUsesMessage; } bool BaseConnectionContactListInterface::downloadAtConnection() const { return mPriv->downloadAtConnection; } void BaseConnectionContactListInterface::setDownloadAtConnection(bool downloadAtConnection) { mPriv->downloadAtConnection = downloadAtConnection; } void BaseConnectionContactListInterface::createAdaptor() { (void) new Service::ConnectionInterfaceContactListAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionContactListInterface::setGetContactListAttributesCallback(const BaseConnectionContactListInterface::GetContactListAttributesCallback &cb) { mPriv->getContactListAttributesCB = cb; } Tp::ContactAttributesMap BaseConnectionContactListInterface::getContactListAttributes(const QStringList &interfaces, bool hold, DBusError *error) { if (!mPriv->getContactListAttributesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::ContactAttributesMap(); } return mPriv->getContactListAttributesCB(interfaces, hold, error); } void BaseConnectionContactListInterface::setRequestSubscriptionCallback(const BaseConnectionContactListInterface::RequestSubscriptionCallback &cb) { mPriv->requestSubscriptionCB = cb; } void BaseConnectionContactListInterface::requestSubscription(const Tp::UIntList &contacts, const QString &message, DBusError *error) { if (!mPriv->requestSubscriptionCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->requestSubscriptionCB(contacts, message, error); } void BaseConnectionContactListInterface::setAuthorizePublicationCallback(const BaseConnectionContactListInterface::AuthorizePublicationCallback &cb) { mPriv->authorizePublicationCB = cb; } void BaseConnectionContactListInterface::authorizePublication(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->authorizePublicationCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->authorizePublicationCB(contacts, error); } void BaseConnectionContactListInterface::setRemoveContactsCallback(const BaseConnectionContactListInterface::RemoveContactsCallback &cb) { mPriv->removeContactsCB = cb; } void BaseConnectionContactListInterface::removeContacts(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->removeContactsCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->removeContactsCB(contacts, error); } void BaseConnectionContactListInterface::setUnsubscribeCallback(const BaseConnectionContactListInterface::UnsubscribeCallback &cb) { mPriv->unsubscribeCB = cb; } void BaseConnectionContactListInterface::unsubscribe(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->unsubscribeCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->unsubscribeCB(contacts, error); } void BaseConnectionContactListInterface::setUnpublishCallback(const BaseConnectionContactListInterface::UnpublishCallback &cb) { mPriv->unpublishCB = cb; } void BaseConnectionContactListInterface::unpublish(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->unpublishCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->unpublishCB(contacts, error); } void BaseConnectionContactListInterface::setDownloadCallback(const BaseConnectionContactListInterface::DownloadCallback &cb) { mPriv->downloadCB = cb; } void BaseConnectionContactListInterface::download(DBusError *error) { if (!mPriv->downloadCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->downloadCB(error); } void BaseConnectionContactListInterface::contactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals) { QMetaObject::invokeMethod(mPriv->adaptee, "contactsChangedWithID", Q_ARG(Tp::ContactSubscriptionMap, changes), Q_ARG(Tp::HandleIdentifierMap, identifiers), Q_ARG(Tp::HandleIdentifierMap, removals)); //Can simply use emit in Qt5 } // Conn.I.ContactInfo struct TP_QT_NO_EXPORT BaseConnectionContactInfoInterface::Private { Private(BaseConnectionContactInfoInterface *parent) : adaptee(new BaseConnectionContactInfoInterface::Adaptee(parent)) { } Tp::ContactInfoFlags contactInfoFlags; Tp::FieldSpecs supportedFields; GetContactInfoCallback getContactInfoCB; RefreshContactInfoCallback refreshContactInfoCB; RequestContactInfoCallback requestContactInfoCB; SetContactInfoCallback setContactInfoCB; BaseConnectionContactInfoInterface::Adaptee *adaptee; }; BaseConnectionContactInfoInterface::Adaptee::Adaptee(BaseConnectionContactInfoInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionContactInfoInterface::Adaptee::~Adaptee() { } uint BaseConnectionContactInfoInterface::Adaptee::contactInfoFlags() const { return mInterface->contactInfoFlags(); } Tp::FieldSpecs BaseConnectionContactInfoInterface::Adaptee::supportedFields() const { return mInterface->supportedFields(); } void BaseConnectionContactInfoInterface::Adaptee::getContactInfo(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::GetContactInfoContextPtr &context) { qDebug() << "BaseConnectionContactInfoInterface::Adaptee::getContactInfo"; DBusError error; Tp::ContactInfoMap contactInfo = mInterface->getContactInfo(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(contactInfo); } void BaseConnectionContactInfoInterface::Adaptee::refreshContactInfo(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::RefreshContactInfoContextPtr &context) { qDebug() << "BaseConnectionContactInfoInterface::Adaptee::refreshContactInfo"; DBusError error; mInterface->refreshContactInfo(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionContactInfoInterface::Adaptee::requestContactInfo(uint contact, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::RequestContactInfoContextPtr &context) { qDebug() << "BaseConnectionContactInfoInterface::Adaptee::requestContactInfo"; DBusError error; Tp::ContactInfoFieldList contactInfo = mInterface->requestContactInfo(contact, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(contactInfo); } void BaseConnectionContactInfoInterface::Adaptee::setContactInfo(const Tp::ContactInfoFieldList &contactInfo, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::SetContactInfoContextPtr &context) { qDebug() << "BaseConnectionContactInfoInterface::Adaptee::setContactInfo"; DBusError error; mInterface->setContactInfo(contactInfo, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseConnectionContactInfoInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.Contact.Info */ /** * Class constructor. */ BaseConnectionContactInfoInterface::BaseConnectionContactInfoInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionContactInfoInterface::~BaseConnectionContactInfoInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionContactInfoInterface::immutableProperties() const { QVariantMap map; return map; } Tp::ContactInfoFlags BaseConnectionContactInfoInterface::contactInfoFlags() const { return mPriv->contactInfoFlags; } void BaseConnectionContactInfoInterface::setContactInfoFlags(const Tp::ContactInfoFlags &contactInfoFlags) { mPriv->contactInfoFlags = contactInfoFlags; } Tp::FieldSpecs BaseConnectionContactInfoInterface::supportedFields() const { return mPriv->supportedFields; } void BaseConnectionContactInfoInterface::setSupportedFields(const Tp::FieldSpecs &supportedFields) { mPriv->supportedFields = supportedFields; } void BaseConnectionContactInfoInterface::createAdaptor() { (void) new Service::ConnectionInterfaceContactInfoAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionContactInfoInterface::setGetContactInfoCallback(const BaseConnectionContactInfoInterface::GetContactInfoCallback &cb) { mPriv->getContactInfoCB = cb; } Tp::ContactInfoMap BaseConnectionContactInfoInterface::getContactInfo(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->getContactInfoCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::ContactInfoMap(); } return mPriv->getContactInfoCB(contacts, error); } void BaseConnectionContactInfoInterface::setRefreshContactInfoCallback(const BaseConnectionContactInfoInterface::RefreshContactInfoCallback &cb) { mPriv->refreshContactInfoCB = cb; } void BaseConnectionContactInfoInterface::refreshContactInfo(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->refreshContactInfoCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->refreshContactInfoCB(contacts, error); } void BaseConnectionContactInfoInterface::setRequestContactInfoCallback(const BaseConnectionContactInfoInterface::RequestContactInfoCallback &cb) { mPriv->requestContactInfoCB = cb; } Tp::ContactInfoFieldList BaseConnectionContactInfoInterface::requestContactInfo(uint contact, DBusError *error) { if (!mPriv->requestContactInfoCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::ContactInfoFieldList(); } return mPriv->requestContactInfoCB(contact, error); } void BaseConnectionContactInfoInterface::setSetContactInfoCallback(const BaseConnectionContactInfoInterface::SetContactInfoCallback &cb) { mPriv->setContactInfoCB = cb; } void BaseConnectionContactInfoInterface::setContactInfo(const Tp::ContactInfoFieldList &contactInfo, DBusError *error) { if (!mPriv->setContactInfoCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->setContactInfoCB(contactInfo, error); } void BaseConnectionContactInfoInterface::contactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo) { QMetaObject::invokeMethod(mPriv->adaptee, "contactInfoChanged", Q_ARG(uint, contact), Q_ARG(Tp::ContactInfoFieldList, contactInfo)); //Can simply use emit in Qt5 } // Conn.I.Addressing BaseConnectionAddressingInterface::Adaptee::Adaptee(BaseConnectionAddressingInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionAddressingInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseConnectionAddressingInterface::Private { Private(BaseConnectionAddressingInterface *parent) : adaptee(new BaseConnectionAddressingInterface::Adaptee(parent)) { } GetContactsByVCardFieldCallback getContactsByVCardFieldCB; GetContactsByURICallback getContactsByURICB; BaseConnectionAddressingInterface::Adaptee *adaptee; }; /** * \class BaseConnectionAddressingInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.Addressing */ /** * Class constructor. */ BaseConnectionAddressingInterface::BaseConnectionAddressingInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionAddressingInterface::~BaseConnectionAddressingInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionAddressingInterface::immutableProperties() const { QVariantMap map; return map; } void BaseConnectionAddressingInterface::createAdaptor() { (void) new Service::ConnectionInterfaceAddressingAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionAddressingInterface::setGetContactsByVCardFieldCallback(const GetContactsByVCardFieldCallback &cb) { mPriv->getContactsByVCardFieldCB = cb; } void BaseConnectionAddressingInterface::setGetContactsByURICallback(const GetContactsByURICallback &cb) { mPriv->getContactsByURICB = cb; } void BaseConnectionAddressingInterface::Adaptee::getContactsByVCardField(const QString &field, const QStringList &addresses, const QStringList &interfaces, const Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByVCardFieldContextPtr &context) { if (!mInterface->mPriv->getContactsByVCardFieldCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } Tp::AddressingNormalizationMap addressingNormalizationMap; Tp::ContactAttributesMap contactAttributesMap; DBusError error; mInterface->mPriv->getContactsByVCardFieldCB(field, addresses, interfaces, addressingNormalizationMap, contactAttributesMap, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(addressingNormalizationMap, contactAttributesMap); } void BaseConnectionAddressingInterface::Adaptee::getContactsByURI(const QStringList &URIs, const QStringList &interfaces, const Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByURIContextPtr &context) { if (!mInterface->mPriv->getContactsByURICB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } Tp::AddressingNormalizationMap addressingNormalizationMap; Tp::ContactAttributesMap contactAttributesMap; DBusError error; mInterface->mPriv->getContactsByURICB(URIs, interfaces, addressingNormalizationMap, contactAttributesMap, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(addressingNormalizationMap, contactAttributesMap); } // Conn.I.Aliasing struct TP_QT_NO_EXPORT BaseConnectionAliasingInterface::Private { Private(BaseConnectionAliasingInterface *parent) : adaptee(new BaseConnectionAliasingInterface::Adaptee(parent)) { } GetAliasFlagsCallback getAliasFlagsCB; RequestAliasesCallback requestAliasesCB; GetAliasesCallback getAliasesCB; SetAliasesCallback setAliasesCB; BaseConnectionAliasingInterface::Adaptee *adaptee; }; BaseConnectionAliasingInterface::Adaptee::Adaptee(BaseConnectionAliasingInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionAliasingInterface::Adaptee::~Adaptee() { } void BaseConnectionAliasingInterface::Adaptee::getAliasFlags( const Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasFlagsContextPtr &context) { qDebug() << "BaseConnectionAliasingInterface::Adaptee::getAliasFlags"; DBusError error; Tp::ConnectionAliasFlags aliasFlags = mInterface->getAliasFlags(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(aliasFlags); } void BaseConnectionAliasingInterface::Adaptee::requestAliases(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAliasingAdaptor::RequestAliasesContextPtr &context) { qDebug() << "BaseConnectionAliasingInterface::Adaptee::requestAliases"; DBusError error; QStringList aliases = mInterface->requestAliases(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(aliases); } void BaseConnectionAliasingInterface::Adaptee::getAliases(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasesContextPtr &context) { qDebug() << "BaseConnectionAliasingInterface::Adaptee::getAliases"; DBusError error; Tp::AliasMap aliases = mInterface->getAliases(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(aliases); } void BaseConnectionAliasingInterface::Adaptee::setAliases(const Tp::AliasMap &aliases, const Tp::Service::ConnectionInterfaceAliasingAdaptor::SetAliasesContextPtr &context) { qDebug() << "BaseConnectionAliasingInterface::Adaptee::setAliases"; DBusError error; mInterface->setAliases(aliases, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseConnectionAliasingInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.Aliasing */ /** * Class constructor. */ BaseConnectionAliasingInterface::BaseConnectionAliasingInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionAliasingInterface::~BaseConnectionAliasingInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionAliasingInterface::immutableProperties() const { QVariantMap map; return map; } void BaseConnectionAliasingInterface::createAdaptor() { (void) new Service::ConnectionInterfaceAliasingAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionAliasingInterface::setGetAliasFlagsCallback(const BaseConnectionAliasingInterface::GetAliasFlagsCallback &cb) { mPriv->getAliasFlagsCB = cb; } Tp::ConnectionAliasFlags BaseConnectionAliasingInterface::getAliasFlags(DBusError *error) { if (!mPriv->getAliasFlagsCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::ConnectionAliasFlags(); } return mPriv->getAliasFlagsCB(error); } void BaseConnectionAliasingInterface::setRequestAliasesCallback(const BaseConnectionAliasingInterface::RequestAliasesCallback &cb) { mPriv->requestAliasesCB = cb; } QStringList BaseConnectionAliasingInterface::requestAliases(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->requestAliasesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QStringList(); } return mPriv->requestAliasesCB(contacts, error); } void BaseConnectionAliasingInterface::setGetAliasesCallback(const BaseConnectionAliasingInterface::GetAliasesCallback &cb) { mPriv->getAliasesCB = cb; } Tp::AliasMap BaseConnectionAliasingInterface::getAliases(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->getAliasesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::AliasMap(); } return mPriv->getAliasesCB(contacts, error); } void BaseConnectionAliasingInterface::setSetAliasesCallback(const BaseConnectionAliasingInterface::SetAliasesCallback &cb) { mPriv->setAliasesCB = cb; } void BaseConnectionAliasingInterface::setAliases(const Tp::AliasMap &aliases, DBusError *error) { if (!mPriv->setAliasesCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->setAliasesCB(aliases, error); } void BaseConnectionAliasingInterface::aliasesChanged(const Tp::AliasPairList &aliases) { QMetaObject::invokeMethod(mPriv->adaptee, "aliasesChanged", Q_ARG(Tp::AliasPairList, aliases)); //Can simply use emit in Qt5 } // Conn.I.Avatars struct TP_QT_NO_EXPORT BaseConnectionAvatarsInterface::Private { Private(BaseConnectionAvatarsInterface *parent) : adaptee(new BaseConnectionAvatarsInterface::Adaptee(parent)) { } AvatarSpec avatarDetails; GetKnownAvatarTokensCallback getKnownAvatarTokensCB; RequestAvatarsCallback requestAvatarsCB; SetAvatarCallback setAvatarCB; ClearAvatarCallback clearAvatarCB; BaseConnectionAvatarsInterface::Adaptee *adaptee; friend class BaseConnectionAvatarsInterface::Adaptee; }; BaseConnectionAvatarsInterface::Adaptee::Adaptee(BaseConnectionAvatarsInterface *interface) : QObject(interface), mInterface(interface) { } BaseConnectionAvatarsInterface::Adaptee::~Adaptee() { } QStringList BaseConnectionAvatarsInterface::Adaptee::supportedAvatarMimeTypes() const { return mInterface->mPriv->avatarDetails.supportedMimeTypes(); } uint BaseConnectionAvatarsInterface::Adaptee::minimumAvatarHeight() const { return mInterface->mPriv->avatarDetails.minimumHeight(); } uint BaseConnectionAvatarsInterface::Adaptee::minimumAvatarWidth() const { return mInterface->mPriv->avatarDetails.minimumWidth(); } uint BaseConnectionAvatarsInterface::Adaptee::recommendedAvatarHeight() const { return mInterface->mPriv->avatarDetails.recommendedHeight(); } uint BaseConnectionAvatarsInterface::Adaptee::recommendedAvatarWidth() const { return mInterface->mPriv->avatarDetails.recommendedWidth(); } uint BaseConnectionAvatarsInterface::Adaptee::maximumAvatarHeight() const { return mInterface->mPriv->avatarDetails.maximumHeight(); } uint BaseConnectionAvatarsInterface::Adaptee::maximumAvatarWidth() const { return mInterface->mPriv->avatarDetails.maximumWidth(); } uint BaseConnectionAvatarsInterface::Adaptee::maximumAvatarBytes() const { return mInterface->mPriv->avatarDetails.maximumBytes(); } void BaseConnectionAvatarsInterface::Adaptee::getKnownAvatarTokens(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetKnownAvatarTokensContextPtr &context) { qDebug() << "BaseConnectionAvatarsInterface::Adaptee::getKnownAvatarTokens"; DBusError error; Tp::AvatarTokenMap tokens = mInterface->getKnownAvatarTokens(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(tokens); } void BaseConnectionAvatarsInterface::Adaptee::requestAvatars(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::RequestAvatarsContextPtr &context) { qDebug() << "BaseConnectionAvatarsInterface::Adaptee::requestAvatars"; DBusError error; mInterface->requestAvatars(contacts, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseConnectionAvatarsInterface::Adaptee::setAvatar(const QByteArray &avatar, const QString &mimeType, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::SetAvatarContextPtr &context) { qDebug() << "BaseConnectionAvatarsInterface::Adaptee::setAvatar"; DBusError error; QString token = mInterface->setAvatar(avatar, mimeType, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(token); } void BaseConnectionAvatarsInterface::Adaptee::clearAvatar( const Tp::Service::ConnectionInterfaceAvatarsAdaptor::ClearAvatarContextPtr &context) { qDebug() << "BaseConnectionAvatarsInterface::Adaptee::clearAvatar"; DBusError error; mInterface->clearAvatar(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseConnectionAvatarsInterface * \ingroup servicecm * \headerfile TelepathyQt/base-connection.h * * \brief Base class for implementations of Connection.Interface.Avatars */ /** * Class constructor. */ BaseConnectionAvatarsInterface::BaseConnectionAvatarsInterface() : AbstractConnectionInterface(TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS), mPriv(new Private(this)) { } /** * Class destructor. */ BaseConnectionAvatarsInterface::~BaseConnectionAvatarsInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseConnectionAvatarsInterface::immutableProperties() const { QVariantMap map; return map; } AvatarSpec BaseConnectionAvatarsInterface::avatarDetails() const { return mPriv->avatarDetails; } void BaseConnectionAvatarsInterface::setAvatarDetails(const AvatarSpec &spec) { mPriv->avatarDetails = spec; } void BaseConnectionAvatarsInterface::createAdaptor() { (void) new Service::ConnectionInterfaceAvatarsAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseConnectionAvatarsInterface::setGetKnownAvatarTokensCallback(const BaseConnectionAvatarsInterface::GetKnownAvatarTokensCallback &cb) { mPriv->getKnownAvatarTokensCB = cb; } Tp::AvatarTokenMap BaseConnectionAvatarsInterface::getKnownAvatarTokens(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->getKnownAvatarTokensCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return Tp::AvatarTokenMap(); } return mPriv->getKnownAvatarTokensCB(contacts, error); } void BaseConnectionAvatarsInterface::setRequestAvatarsCallback(const BaseConnectionAvatarsInterface::RequestAvatarsCallback &cb) { mPriv->requestAvatarsCB = cb; } void BaseConnectionAvatarsInterface::requestAvatars(const Tp::UIntList &contacts, DBusError *error) { if (!mPriv->requestAvatarsCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->requestAvatarsCB(contacts, error); } void BaseConnectionAvatarsInterface::setSetAvatarCallback(const BaseConnectionAvatarsInterface::SetAvatarCallback &cb) { mPriv->setAvatarCB = cb; } QString BaseConnectionAvatarsInterface::setAvatar(const QByteArray &avatar, const QString &mimeType, DBusError *error) { if (!mPriv->setAvatarCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QString(); } return mPriv->setAvatarCB(avatar, mimeType, error); } void BaseConnectionAvatarsInterface::setClearAvatarCallback(const BaseConnectionAvatarsInterface::ClearAvatarCallback &cb) { mPriv->clearAvatarCB = cb; } void BaseConnectionAvatarsInterface::clearAvatar(DBusError *error) { if (!mPriv->clearAvatarCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->clearAvatarCB(error); } void BaseConnectionAvatarsInterface::avatarUpdated(uint contact, const QString &newAvatarToken) { QMetaObject::invokeMethod(mPriv->adaptee, "avatarUpdated", Q_ARG(uint, contact), Q_ARG(QString, newAvatarToken)); //Can simply use emit in Qt5 } void BaseConnectionAvatarsInterface::avatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type) { QMetaObject::invokeMethod(mPriv->adaptee, "avatarRetrieved", Q_ARG(uint, contact), Q_ARG(QString, token), Q_ARG(QByteArray, avatar), Q_ARG(QString, type)); //Can simply use emit in Qt5 } } telepathy-qt-0.9.6.1/TelepathyQt/handled-channel-notifier.h0000644000175100017520000000426212530423576025165 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_handled_channel_notifier_h_HEADER_GUARD_ #define _TelepathyQt_handled_channel_notifier_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class ChannelRequestHints; class RequestTemporaryHandler; class TP_QT_EXPORT HandledChannelNotifier : public QObject { Q_OBJECT Q_DISABLE_COPY(HandledChannelNotifier) public: ~HandledChannelNotifier(); ChannelPtr channel() const; Q_SIGNALS: void handledAgain(const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints); protected: #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) void connectNotify(const QMetaMethod &signal); #else void connectNotify(const char *signal); #endif private Q_SLOTS: TP_QT_NO_EXPORT void onChannelReceived(const Tp::ChannelPtr &channel, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints); TP_QT_NO_EXPORT void onChannelInvalidated(); private: friend class PendingChannel; HandledChannelNotifier(const ClientRegistrarPtr &cr, const SharedPtr &handler); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Connection0000644000175100017520000000035412530423576022212 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Connection_HEADER_GUARD_ #define _TelepathyQt_Connection_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-channel-request-internal.h0000644000175100017520000000416712530423576026701 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_channel_request_internal_h_HEADER_GUARD_ #define _TelepathyQt_pending_channel_request_internal_h_HEADER_GUARD_ #include #include #include namespace Tp { class TP_QT_NO_EXPORT PendingChannelRequestCancelOperation : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingChannelRequestCancelOperation) public: PendingChannelRequestCancelOperation() : PendingOperation(SharedPtr()) { } ~PendingChannelRequestCancelOperation() { } void go(const ChannelRequestPtr &channelRequest) { Q_ASSERT(mChannelRequest.isNull()); mChannelRequest = channelRequest; connect(mChannelRequest->cancel(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onCancelOperationFinished(Tp::PendingOperation*))); } private Q_SLOTS: void onCancelOperationFinished(Tp::PendingOperation *op) { if (op->isError()) { setFinishedWithError(op->errorName(), op->errorMessage()); return; } setFinished(); } private: ChannelRequestPtr mChannelRequest; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus-tube-channel.h0000644000175100017520000000512212530423576023637 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_dbus_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class TP_QT_EXPORT DBusTubeChannel : public TubeChannel { Q_OBJECT Q_DISABLE_COPY(DBusTubeChannel) public: static const Feature FeatureCore; static const Feature FeatureBusNameMonitoring; static DBusTubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~DBusTubeChannel(); QString serviceName() const; bool supportsRestrictingToCurrentUser() const; QHash contactsForBusNames() const; QString address() const; protected: DBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); Q_SIGNALS: void busNameAdded(const QString &busName, const Tp::ContactPtr &contact); void busNameRemoved(const QString &busName, const Tp::ContactPtr &contact); private Q_SLOTS: TP_QT_NO_EXPORT void onRequestAllPropertiesFinished(Tp::PendingOperation*); TP_QT_NO_EXPORT void onRequestPropertyDBusNamesFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onDBusNamesChanged(const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed); TP_QT_NO_EXPORT void onContactsRetrieved(const QUuid &uuid, const QList &contacts); TP_QT_NO_EXPORT void onQueueCompleted(); private: TP_QT_NO_EXPORT void setAddress(const QString &address); struct Private; friend struct PendingDBusTubeConnection; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/contact-search-channel-internal.h0000644000175100017520000000324212530423576026456 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_search_channel_internal_h_HEADER_GUARD_ #define _TelepathyQt_contact_search_channel_internal_h_HEADER_GUARD_ #include #include namespace Tp { class TP_QT_NO_EXPORT ContactSearchChannel::PendingSearch : public PendingOperation { Q_OBJECT public: PendingSearch(const ContactSearchChannelPtr &chan, QDBusPendingCall call); private Q_SLOTS: TP_QT_NO_EXPORT void onSearchStateChanged(Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details); TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*); private: bool mFinished; QDBusError mError; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceCapabilitiesInterface0000644000175100017520000000045012530423576030163 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceCapabilitiesInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceCapabilitiesInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/simple-pending-operations.h0000644000175100017520000000547712530423576025450 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_operations_h_HEADER_GUARD_ #define _TelepathyQt_pending_operations_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT PendingSuccess : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingSuccess) public: PendingSuccess(const SharedPtr &object) : PendingOperation(object) { setFinished(); } }; class TP_QT_EXPORT PendingFailure : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingFailure) public: PendingFailure(const QString &name, const QString &message, const SharedPtr &object) : PendingOperation(object) { setFinishedWithError(name, message); } PendingFailure(const QDBusError &error, const SharedPtr &object) : PendingOperation(object) { setFinishedWithError(error); } }; class TP_QT_EXPORT PendingVoid : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingVoid) public: PendingVoid(QDBusPendingCall call, const SharedPtr &object); private Q_SLOTS: TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*); private: struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT PendingComposite : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingComposite) public: PendingComposite(const QList &operations, const SharedPtr &object); PendingComposite(const QList &operations, bool failOnFirstError, const SharedPtr &object); ~PendingComposite(); private Q_SLOTS: TP_QT_NO_EXPORT void onOperationFinished(Tp::PendingOperation *); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/object.cpp0000644000175100017520000000320312530423576022136 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/object.moc.hpp" namespace Tp { /** * \class Object * \ingroup clientobject * \headerfile TelepathyQt/object.h * * \brief The Object class provides an object with property notification. */ /** * Construct a new Object object. */ Object::Object() : QObject() { } /** * Class destructor. */ Object::~Object() { } /** * Notify that a property named \a propertyName changed. * * This method will emit propertyChanged() for \a propertyName. * * \todo Use for more classes beyond Account. Most importantly Contact. */ void Object::notify(const char *propertyName) { emit propertyChanged(QLatin1String(propertyName)); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfacePresenceInterface0000644000175100017520000000044012530423576027335 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfacePresenceInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfacePresenceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceSMSInterface0000644000175100017520000000041512530423576025506 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceSMSInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceSMSInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/base-connection-manager-internal.h0000644000175100017520000000435212530423576026634 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/_gen/svc-connection-manager.h" #include #include #include #include #include #include #include namespace Tp { class TP_QT_NO_EXPORT BaseConnectionManager::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList interfaces READ interfaces) Q_PROPERTY(Tp::ProtocolPropertiesMap protocols READ protocols) public: Adaptee(const QDBusConnection &dbusConnection, BaseConnectionManager *cm); ~Adaptee(); QStringList interfaces() const; Tp::ProtocolPropertiesMap protocols() const; Q_SIGNALS: void newConnection(const QString &busName, const QDBusObjectPath &objectPath, const QString &protocolName); private Q_SLOTS: void getParameters(const QString &protocolName, const Tp::Service::ConnectionManagerAdaptor::GetParametersContextPtr &context); void listProtocols( const Tp::Service::ConnectionManagerAdaptor::ListProtocolsContextPtr &context); void requestConnection(const QString &protocolName, const QVariantMap ¶meters, const Tp::Service::ConnectionManagerAdaptor::RequestConnectionContextPtr &context); public: BaseConnectionManager *mCM; Service::ConnectionManagerAdaptor *mAdaptor; }; } telepathy-qt-0.9.6.1/TelepathyQt/generic-property-filter.h0000644000175100017520000000426612530423576025130 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_generic_property_filter_h_HEADER_GUARD_ #define _TelepathyQt_generic_property_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { template class GenericPropertyFilter : public Filter { public: inline virtual ~GenericPropertyFilter() { } inline virtual bool isValid() const { return true; } inline virtual bool matches(const SharedPtr &t) const { for (QVariantMap::const_iterator i = mFilter.constBegin(); i != mFilter.constEnd(); ++i) { QString propertyName = i.key(); QVariant propertyValue = i.value(); if (t->property(propertyName.toLatin1().constData()) != propertyValue) { return false; } } return true; } inline QVariantMap filter() const { return mFilter; } inline void addProperty(const QString &propertyName, const QVariant &propertyValue) { mFilter.insert(propertyName, propertyValue); } inline void setProperties(const QVariantMap &filter) { mFilter = filter; } protected: inline GenericPropertyFilter() : Filter() { } private: QVariantMap mFilter; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/DBusService0000644000175100017520000000036012530423576022266 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusService_HEADER_GUARD_ #define _TelepathyQt_DBusService_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-variant.h0000644000175100017520000000315412530423576023430 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_variant_h_HEADER_GUARD_ #define _TelepathyQt_pending_variant_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class TP_QT_EXPORT PendingVariant : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingVariant); public: PendingVariant(QDBusPendingCall call, const SharedPtr &object); ~PendingVariant(); QVariant result() const; private Q_SLOTS: TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/async-model.dox0000644000175100017520000000555512530423576023127 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \page async_model Asynchronous Object Model * * \section async_model_overview Overview * * Telepathy-Qt uses \dbus to communicate with applications implementing the \telepathy_spec. * * When dealing with D-Bus, method calls can take some time to return, * and in this case is not desirable to make synchronous calls, * which could turn into applications hanging waiting for method returns. * In order to avoid this issue, all Telepathy-Qt high-level methods requiring * D-Bus method calls will return a \link Tp::PendingOperation \endlink which will * emit the signal \link Tp::PendingOperation::finished() \endlink when the operation * has ended. See individual methods' documentation for more details. * * Additionally Telepathy-Qt introduces a concept in which object features need * to be enabled before usage. Information corresponding to enabled features can be inspected * synchronously with no need for asynchronous D-Bus method calls and the associated * programming complexity. * * To avoid the complexity of doing asynchronous calls when making object features ready * Telepathy-Qt also provides so called factories for the main objects. * These object features can be enabled by constructing a corresponding factory and enabling the * desired features, and passing these factories to the objects responsible for creating * the objects whose features are required. * Doing that, applications are guaranteed that the specified features are ready in objects * signaled to them by the library. * * However, if a particular feature is only ever used in a specific circumstance, such as an user * opening some settings dialog separate from the general view of the application, * features can be later enabled as needed by calling becomeReady(), or in the * \link Tp::Contact \endlink case by calling \link Tp::ContactManager::upgradeContacts() \endlink, * with the additional features on the object, and waiting for the resulting PendingOperation to * finish. */ telepathy-qt-0.9.6.1/TelepathyQt/base-channel.h0000644000175100017520000011202112530423576022654 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2013 Matthias Gehre * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_base_channel_h_HEADER_GUARD_ #define _TelepathyQt_base_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include class QString; namespace Tp { class TP_QT_EXPORT BaseChannel : public DBusService { Q_OBJECT Q_DISABLE_COPY(BaseChannel) public: static BaseChannelPtr create(BaseConnection *connection, const QString &channelType, Tp::HandleType targetHandleType = Tp::HandleTypeNone, uint targetHandle = 0) { return BaseChannelPtr(new BaseChannel(QDBusConnection::sessionBus(), connection, channelType, targetHandleType, targetHandle)); } virtual ~BaseChannel(); QVariantMap immutableProperties() const; bool registerObject(DBusError *error = NULL); virtual QString uniqueName() const; QString channelType() const; QList interfaces() const; AbstractChannelInterfacePtr interface(const QString &interfaceName) const; uint targetHandle() const; QString targetID() const; uint targetHandleType() const; bool requested() const; uint initiatorHandle() const; QString initiatorID() const; Tp::ChannelDetails details() const; void setInitiatorHandle(uint initiatorHandle); void setInitiatorID(const QString &initiatorID); void setTargetID(const QString &targetID); void setRequested(bool requested); void close(); bool plugInterface(const AbstractChannelInterfacePtr &interface); Q_SIGNALS: void closed(); protected: BaseChannel(const QDBusConnection &dbusConnection, BaseConnection *connection, const QString &channelType, uint targetHandleType, uint targetHandle); virtual bool registerObject(const QString &busName, const QString &objectPath, DBusError *error); private: class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT AbstractChannelInterface : public AbstractDBusServiceInterface { Q_OBJECT Q_DISABLE_COPY(AbstractChannelInterface) public: AbstractChannelInterface(const QString &interfaceName); virtual ~AbstractChannelInterface(); private: friend class BaseChannel; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelTextType : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelTextType) public: static BaseChannelTextTypePtr create(BaseChannel* channel) { return BaseChannelTextTypePtr(new BaseChannelTextType(channel)); } template static SharedPtr create(BaseChannel* channel) { return SharedPtr( new BaseChannelTextTypeSubclass(channel)); } typedef Callback2 CreateChannelCallback; CreateChannelCallback createChannel; typedef Callback2 EnsureChannelCallback; EnsureChannelCallback ensureChannel; virtual ~BaseChannelTextType(); QVariantMap immutableProperties() const; Tp::RequestableChannelClassList requestableChannelClasses; typedef Callback1 MessageAcknowledgedCallback; void setMessageAcknowledgedCallback(const MessageAcknowledgedCallback &cb); Tp::MessagePartListList pendingMessages(); /* Convenience function */ void addReceivedMessage(const Tp::MessagePartList &message); private Q_SLOTS: void sent(uint timestamp, uint type, QString text); protected: BaseChannelTextType(BaseChannel* channel); void acknowledgePendingMessages(const Tp::UIntList &IDs, DBusError* error); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelMessagesInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelMessagesInterface) public: static BaseChannelMessagesInterfacePtr create(BaseChannelTextType* textTypeInterface, QStringList supportedContentTypes, UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport) { return BaseChannelMessagesInterfacePtr(new BaseChannelMessagesInterface(textTypeInterface, supportedContentTypes, messageTypes, messagePartSupportFlags, deliveryReportingSupport)); } template static SharedPtr create() { return SharedPtr( new BaseChannelMessagesInterfaceSubclass()); } virtual ~BaseChannelMessagesInterface(); QVariantMap immutableProperties() const; QStringList supportedContentTypes(); Tp::UIntList messageTypes(); uint messagePartSupportFlags(); uint deliveryReportingSupport(); Tp::MessagePartListList pendingMessages(); void messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken); typedef Callback3 SendMessageCallback; void setSendMessageCallback(const SendMessageCallback &cb); protected: QString sendMessage(const Tp::MessagePartList &message, uint flags, DBusError* error); private Q_SLOTS: void pendingMessagesRemoved(const Tp::UIntList &messageIDs); void messageReceived(const Tp::MessagePartList &message); private: BaseChannelMessagesInterface(BaseChannelTextType* textType, QStringList supportedContentTypes, Tp::UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelRoomListType : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelRoomListType) public: static BaseChannelRoomListTypePtr create(const QString &server = QString()) { return BaseChannelRoomListTypePtr(new BaseChannelRoomListType(server)); } template static SharedPtr create(const QString &server = QString()) { return SharedPtr( new BaseChannelRoomListTypeSubclass(server)); } virtual ~BaseChannelRoomListType(); QVariantMap immutableProperties() const; QString server() const; bool getListingRooms(); void setListingRooms(bool listing); typedef Callback1 ListRoomsCallback; void setListRoomsCallback(const ListRoomsCallback &cb); void listRooms(DBusError *error); typedef Callback1 StopListingCallback; void setStopListingCallback(const StopListingCallback &cb); void stopListing(DBusError *error); void gotRooms(const Tp::RoomInfoList &rooms); protected: BaseChannelRoomListType(const QString &server); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelServerAuthenticationType : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelServerAuthenticationType) public: static BaseChannelServerAuthenticationTypePtr create(const QString &authenticationMethod) { return BaseChannelServerAuthenticationTypePtr(new BaseChannelServerAuthenticationType(authenticationMethod)); } template static SharedPtr create(const QString &authenticationMethod) { return SharedPtr( new BaseChannelServerAuthenticationTypeSubclass(authenticationMethod)); } virtual ~BaseChannelServerAuthenticationType(); QVariantMap immutableProperties() const; private Q_SLOTS: private: BaseChannelServerAuthenticationType(const QString &authenticationMethod); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelCaptchaAuthenticationInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelCaptchaAuthenticationInterface) public: static BaseChannelCaptchaAuthenticationInterfacePtr create(bool canRetryCaptcha) { return BaseChannelCaptchaAuthenticationInterfacePtr(new BaseChannelCaptchaAuthenticationInterface(canRetryCaptcha)); } template static SharedPtr create(bool canRetryCaptcha) { return SharedPtr( new BaseChannelCaptchaAuthenticationInterfaceSubclass(canRetryCaptcha)); } virtual ~BaseChannelCaptchaAuthenticationInterface(); QVariantMap immutableProperties() const; typedef Callback4 GetCaptchasCallback; void setGetCaptchasCallback(const GetCaptchasCallback &cb); typedef Callback3 GetCaptchaDataCallback; void setGetCaptchaDataCallback(const GetCaptchaDataCallback &cb); typedef Callback2 AnswerCaptchasCallback; void setAnswerCaptchasCallback(const AnswerCaptchasCallback &cb); typedef Callback3 CancelCaptchaCallback; void setCancelCaptchaCallback(const CancelCaptchaCallback &cb); void setCaptchaStatus(uint status); void setCaptchaError(const QString &busName); void setCaptchaErrorDetails(const QVariantMap &error); private Q_SLOTS: private: BaseChannelCaptchaAuthenticationInterface(bool canRetryCaptcha); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelSASLAuthenticationInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelSASLAuthenticationInterface) public: static BaseChannelSASLAuthenticationInterfacePtr create(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) { return BaseChannelSASLAuthenticationInterfacePtr(new BaseChannelSASLAuthenticationInterface(availableMechanisms, hasInitialData, canTryAgain, authorizationIdentity, defaultUsername, defaultRealm, maySaveResponse)); } template static SharedPtr create(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) { return SharedPtr( new BaseChannelSASLAuthenticationInterfaceSubclass(availableMechanisms, hasInitialData, canTryAgain, authorizationIdentity, defaultUsername, defaultRealm, maySaveResponse)); } virtual ~BaseChannelSASLAuthenticationInterface(); QVariantMap immutableProperties() const; QStringList availableMechanisms() const; bool hasInitialData() const; bool canTryAgain() const; QString authorizationIdentity() const; QString defaultUsername() const; QString defaultRealm() const; bool maySaveResponse() const; uint saslStatus() const; void setSaslStatus(uint status, const QString &reason, const QVariantMap &details); QString saslError() const; void setSaslError(const QString &saslError); QVariantMap saslErrorDetails() const; void setSaslErrorDetails(const QVariantMap &saslErrorDetails); typedef Callback2 StartMechanismCallback; void setStartMechanismCallback(const StartMechanismCallback &cb); void startMechanism(const QString &mechanism, DBusError *error); typedef Callback3 StartMechanismWithDataCallback; void setStartMechanismWithDataCallback(const StartMechanismWithDataCallback &cb); void startMechanismWithData(const QString &mechanism, const QByteArray &initialData, DBusError *error); typedef Callback2 RespondCallback; void setRespondCallback(const RespondCallback &cb); void respond(const QByteArray &responseData, DBusError *error); typedef Callback1 AcceptSASLCallback; void setAcceptSaslCallback(const AcceptSASLCallback &cb); void acceptSasl(DBusError *error); typedef Callback3 AbortSASLCallback; void setAbortSaslCallback(const AbortSASLCallback &cb); void abortSasl(uint reason, const QString &debugMessage, DBusError *error); void newChallenge(const QByteArray &challengeData); protected: BaseChannelSASLAuthenticationInterface(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelSecurableInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelSecurableInterface) public: static BaseChannelSecurableInterfacePtr create() { return BaseChannelSecurableInterfacePtr(new BaseChannelSecurableInterface()); } template static SharedPtr create() { return SharedPtr( new BaseChannelSecurableInterfaceSubclass()); } virtual ~BaseChannelSecurableInterface(); QVariantMap immutableProperties() const; bool encrypted() const; void setEncrypted(bool encrypted); bool verified() const; void setVerified(bool verified); protected: BaseChannelSecurableInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelChatStateInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelChatStateInterface) public: static BaseChannelChatStateInterfacePtr create() { return BaseChannelChatStateInterfacePtr(new BaseChannelChatStateInterface()); } template static SharedPtr create() { return SharedPtr( new BaseChannelChatStateInterfaceSubclass()); } virtual ~BaseChannelChatStateInterface(); QVariantMap immutableProperties() const; Tp::ChatStateMap chatStates() const; void setChatStates(const Tp::ChatStateMap &chatStates); typedef Callback2 SetChatStateCallback; void setSetChatStateCallback(const SetChatStateCallback &cb); void setChatState(uint state, DBusError *error); void chatStateChanged(uint contact, uint state); protected: BaseChannelChatStateInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelGroupInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelGroupInterface) public: static BaseChannelGroupInterfacePtr create(ChannelGroupFlags initialFlags, uint selfHandle) { return BaseChannelGroupInterfacePtr(new BaseChannelGroupInterface(initialFlags, selfHandle)); } template static SharedPtr create(ChannelGroupFlags initialFlags, uint selfHandle) { return SharedPtr( new BaseChannelGroupInterfaceSubclass(initialFlags, selfHandle)); } virtual ~BaseChannelGroupInterface(); QVariantMap immutableProperties() const; typedef Callback3 RemoveMembersCallback; void setRemoveMembersCallback(const RemoveMembersCallback &cb); typedef Callback3 AddMembersCallback; void setAddMembersCallback(const AddMembersCallback &cb); /* Adds a contact to this group. No-op if already in this group */ void addMembers(const Tp::UIntList &handles, const QStringList &identifiers); void removeMembers(const Tp::UIntList &handles); private Q_SLOTS: private: BaseChannelGroupInterface(ChannelGroupFlags initialFlags, uint selfHandle); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelRoomInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelRoomInterface) public: static BaseChannelRoomInterfacePtr create(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) { return BaseChannelRoomInterfacePtr(new BaseChannelRoomInterface(roomName, server, creator, creatorHandle, creationTimestamp)); } template static SharedPtr create(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) { return SharedPtr( new BaseChannelRoomInterfaceSubclass(roomName, server, creator, creatorHandle, creationTimestamp)); } virtual ~BaseChannelRoomInterface(); QVariantMap immutableProperties() const; QString roomName() const; QString server() const; QString creator() const; uint creatorHandle() const; QDateTime creationTimestamp() const; protected: BaseChannelRoomInterface(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelRoomConfigInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelRoomConfigInterface) public: static BaseChannelRoomConfigInterfacePtr create() { return BaseChannelRoomConfigInterfacePtr(new BaseChannelRoomConfigInterface()); } template static SharedPtr create() { return SharedPtr( new BaseChannelRoomConfigInterfaceSubclass()); } virtual ~BaseChannelRoomConfigInterface(); QVariantMap immutableProperties() const; bool anonymous() const; void setAnonymous(bool anonymous); bool inviteOnly() const; void setInviteOnly(bool inviteOnly); uint limit() const; void setLimit(uint limit); bool moderated() const; void setModerated(bool moderated); QString title() const; void setTitle(const QString &title); QString description() const; void setDescription(const QString &description); bool persistent() const; void setPersistent(bool persistent); bool isPrivate() const; void setPrivate(bool newPrivate); bool passwordProtected() const; void setPasswordProtected(bool passwordProtected); QString password() const; void setPassword(const QString &password); QString passwordHint() const; void setPasswordHint(const QString &passwordHint); bool canUpdateConfiguration() const; void setCanUpdateConfiguration(bool canUpdateConfiguration); QStringList mutableProperties() const; void setMutableProperties(const QStringList &mutableProperties); bool configurationRetrieved() const; void setConfigurationRetrieved(bool configurationRetrieved); typedef Callback2 UpdateConfigurationCallback; void setUpdateConfigurationCallback(const UpdateConfigurationCallback &cb); void updateConfiguration(const QVariantMap &properties, DBusError *error); protected: BaseChannelRoomConfigInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelCallType : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelCallType) public: static BaseChannelCallTypePtr create(BaseChannel* channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents = false) { return BaseChannelCallTypePtr(new BaseChannelCallType(channel, hardwareStreaming, initialTransport, initialAudio, initialVideo, initialAudioName, initialVideoName, mutableContents)); } template static SharedPtr create(BaseChannel* channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents = false) { return SharedPtr( new BaseChannelCallTypeSubclass(channel, hardwareStreaming, initialTransport, initialAudio, initialVideo, initialAudioName, initialVideoName, mutableContents)); } typedef Callback2 CreateChannelCallback; CreateChannelCallback createChannel; typedef Callback2 EnsureChannelCallback; EnsureChannelCallback ensureChannel; virtual ~BaseChannelCallType(); QVariantMap immutableProperties() const; Tp::ObjectPathList contents(); QVariantMap callStateDetails(); uint callState(); uint callFlags(); Tp::CallStateReason callStateReason(); bool hardwareStreaming(); Tp::CallMemberMap callMembers(); Tp::HandleIdentifierMap memberIdentifiers(); uint initialTransport(); bool initialAudio(); bool initialVideo(); QString initialAudioName(); QString initialVideoName(); bool mutableContents(); typedef Callback1 AcceptCallback; void setAcceptCallback(const AcceptCallback &cb); typedef Callback4 HangupCallback; void setHangupCallback(const HangupCallback &cb); typedef Callback1 SetRingingCallback; void setSetRingingCallback(const SetRingingCallback &cb); typedef Callback1 SetQueuedCallback; void setSetQueuedCallback(const SetQueuedCallback &cb); typedef Callback4 AddContentCallback; void setAddContentCallback(const AddContentCallback &cb); void setCallState(const Tp::CallState &state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails); void setMembersFlags(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason); BaseCallContentPtr addContent(const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction); void addContent(BaseCallContentPtr content); Tp::RequestableChannelClassList requestableChannelClasses; protected: BaseChannelCallType(BaseChannel* channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents = false); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelHoldInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelHoldInterface) public: static BaseChannelHoldInterfacePtr create() { return BaseChannelHoldInterfacePtr(new BaseChannelHoldInterface()); } template static SharedPtr create() { return SharedPtr( new BaseChannelHoldInterfaceSubclass()); } virtual ~BaseChannelHoldInterface(); QVariantMap immutableProperties() const; Tp::LocalHoldState getHoldState() const; Tp::LocalHoldStateReason getHoldReason() const; void setHoldState(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason); typedef Callback3 SetHoldStateCallback; void setSetHoldStateCallback(const SetHoldStateCallback &cb); Q_SIGNALS: void holdStateChanged(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason); private: BaseChannelHoldInterface(); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelMergeableConferenceInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelMergeableConferenceInterface) public: static BaseChannelMergeableConferenceInterfacePtr create() { return BaseChannelMergeableConferenceInterfacePtr(new BaseChannelMergeableConferenceInterface()); } template static SharedPtr create() { return SharedPtr( new BaseChannelMergeableConferenceInterfaceSubclass()); } virtual ~BaseChannelMergeableConferenceInterface(); QVariantMap immutableProperties() const; void merge(const QDBusObjectPath &channel); typedef Callback2 MergeCallback; void setMergeCallback(const MergeCallback &cb); private: BaseChannelMergeableConferenceInterface(); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelSplittableInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelSplittableInterface) public: static BaseChannelSplittableInterfacePtr create() { return BaseChannelSplittableInterfacePtr(new BaseChannelSplittableInterface()); } template static SharedPtr create() { return SharedPtr( new BaseChannelSplittableInterfaceSubclass()); } virtual ~BaseChannelSplittableInterface(); QVariantMap immutableProperties() const; void split(); typedef Callback1 SplitCallback; void setSplitCallback(const SplitCallback &cb); private: BaseChannelSplittableInterface(); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelConferenceInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelConferenceInterface) public: static BaseChannelConferenceInterfacePtr create(Tp::ObjectPathList initialChannels = Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles = Tp::UIntList(), QStringList initialInviteeIDs = QStringList(), QString invitationMessage = QString(), ChannelOriginatorMap originalChannels = ChannelOriginatorMap()) { return BaseChannelConferenceInterfacePtr(new BaseChannelConferenceInterface(initialChannels, initialInviteeHandles, initialInviteeIDs, invitationMessage, originalChannels)); } template static SharedPtr create(Tp::ObjectPathList initialChannels = Tp::ObjectPathList(), Tp::UIntList initialInviteeHandles = Tp::UIntList(), QStringList initialInviteeIDs = QStringList(), QString invitationMessage = QString(), ChannelOriginatorMap originalChannels = ChannelOriginatorMap()) { return SharedPtr( new BaseChannelConferenceInterfaceSubclass(initialChannels, initialInviteeHandles, initialInviteeIDs, invitationMessage, originalChannels)); } virtual ~BaseChannelConferenceInterface(); QVariantMap immutableProperties() const; Tp::ObjectPathList channels() const; Tp::ObjectPathList initialChannels() const; Tp::UIntList initialInviteeHandles() const; QStringList initialInviteeIDs() const; QString invitationMessage() const; ChannelOriginatorMap originalChannels() const; void mergeChannel(const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties); void removeChannel(const QDBusObjectPath &channel, const QVariantMap &details); private: BaseChannelConferenceInterface(Tp::ObjectPathList initialChannels, Tp::UIntList initialInviteeHandles, QStringList initialInviteeIDs, QString invitationMessage, ChannelOriginatorMap originalChannels); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseChannelSMSInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseChannelSMSInterface) public: static BaseChannelSMSInterfacePtr create(bool flash, bool smsChannel) { return BaseChannelSMSInterfacePtr(new BaseChannelSMSInterface(flash, smsChannel)); } template static SharedPtr create(bool flash, bool smsChannel) { return SharedPtr( new BaseChannelSMSInterfaceSubclass(flash, smsChannel)); } virtual ~BaseChannelSMSInterface(); QVariantMap immutableProperties() const; typedef Callback2 GetSMSLengthCallback; void setGetSMSLengthCallback(const GetSMSLengthCallback &cb); bool flash() const; bool smsChannel() const; Q_SIGNALS: void smsChannelChanged(bool smsChannel); private: BaseChannelSMSInterface(bool flash, bool smsChannel); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/Properties0000644000175100017520000000035412530423576022247 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Properties_HEADER_GUARD_ #define _TelepathyQt_Properties_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-dbus-tube-connection.h0000644000175100017520000000441712530423576026016 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_dbus_tube_connection_h_HEADER_GUARD_ #define _TelepathyQt_pending_dbus_tube_connection_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class PendingString; class TP_QT_EXPORT PendingDBusTubeConnection : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingDBusTubeConnection) public: virtual ~PendingDBusTubeConnection(); QString address() const; bool allowsOtherUsers() const; private Q_SLOTS: TP_QT_NO_EXPORT void onConnectionFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onStateChanged(Tp::TubeChannelState state); TP_QT_NO_EXPORT void onChannelInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); private: TP_QT_NO_EXPORT PendingDBusTubeConnection(PendingString *string, bool allowOtherUsers, const QVariantMap ¶meters, const DBusTubeChannelPtr &object); TP_QT_NO_EXPORT PendingDBusTubeConnection(const QString &errorName, const QString &errorMessage, const DBusTubeChannelPtr &object); struct Private; friend class OutgoingDBusTubeChannel; friend class IncomingDBusTubeChannel; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/method-invocation-context.dox0000644000175100017520000000345312530423576026020 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::MethodInvocationContext * \ingroup utils * \headerfile TelepathyQt/method-invocation-context.h * * \brief The MethodInvocationContext class provides a way for the service implementation to * respond to method calls. * * The methods setFinished() and setFinishedWithError() can be used to indicate * whether the method call succeeded or failed. * * If neither setFinished() nor setFinishedWithError() is called explicitly, * the method call will be considered to have failed. * " In case an asynchronous operation needs to be performed when implementing a method call * receiving a MethodInvocationContextPtr object, a reference to this object may be kept around * until all asynchronous operations finish, and the appropriate finish method * should be called to indicate whether the method call succeeded or failed later. */ telepathy-qt-0.9.6.1/TelepathyQt/optional-interface-factory.cpp0000644000175100017520000001201312530423576026117 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/debug-internal.h" #include #include namespace Tp { #ifndef DOXYGEN_SHOULD_SKIP_THIS struct TP_QT_NO_EXPORT OptionalInterfaceCache::Private { QObject *proxy; QHash interfaces; Private(QObject *proxy); }; OptionalInterfaceCache::Private::Private(QObject *proxy) : proxy(proxy) { } /** * Class constructor. */ OptionalInterfaceCache::OptionalInterfaceCache(QObject *proxy) : mPriv(new Private(proxy)) { } /** * Class destructor. * * Frees all interface instances constructed by this factory. */ OptionalInterfaceCache::~OptionalInterfaceCache() { delete mPriv; } QObject *OptionalInterfaceCache::proxy() const { return mPriv->proxy; } AbstractInterface *OptionalInterfaceCache::getCached(const QString &name) const { if (mPriv->interfaces.contains(name)) { return mPriv->interfaces.value(name); } else { return 0; } } void OptionalInterfaceCache::cache(AbstractInterface *interface) const { QString name = interface->interface(); Q_ASSERT(!mPriv->interfaces.contains(name)); mPriv->interfaces[name] = interface; } #endif /* ifndef DOXYGEN_SHOULD_SKIP_THIS */ /** * \class OptionalInterfaceFactory * \ingroup clientsideproxies * \headerfile TelepathyQt/optional-interface-factory.h * * \brief The OptionalInterfaceFactory class is a helper class for * high-level D-Bus proxy classes willing to offer access to shared * instances of interface proxies for optional interfaces. * * To use this helper in a subclass of DBusProxy (say, ExampleObject), * ExampleObject should inherit from * OptionalInterfaceFactory, and call * OptionalInterfaceFactory(this) in its constructor's initialization list. * * \tparam DBusProxySubclass A subclass of DBusProxy */ /** * \enum OptionalInterfaceFactory::InterfaceSupportedChecking * * Specifies if the interface being supported by the remote object should be * checked by optionalInterface() and the convenience functions for it. * * \sa optionalInterface() */ /** * \var OptionalInterfaceFactory::InterfaceSupportedChecking OptionalInterfaceFactory::CheckInterfaceSupported * * Don't return an interface instance unless it can be guaranteed that the * remote object actually implements the interface. */ /** * \var OptionalInterfaceFactory::InterfaceSupportedChecking OptionalInterfaceFactory::BypassInterfaceCheck * * Return an interface instance even if it can't be verified that the remote * object supports the interface. */ /** * \fn OptionalInterfaceFactory::OptionalInterfaceFactory(DBusProxySubclass *this_) * * Class constructor. * * \param this_ The class to which this OptionalInterfaceFactory is * attached */ /** * \fn OptionalInterfaceFactory::~OptionalInterfaceFactory() * * Class destructor. * * Frees all interface instances constructed by this factory. */ /** * \fn OptionalInterfaceFactory::interfaces() const; * * Return a list of interfaces supported by this object. * * \return List of supported interfaces. */ /** * \fn template inline Interface *OptionalInterfaceFactory::interface() const * * Return a pointer to a valid instance of a interface class, associated * with the same remote object as the given main interface instance. The * given main interface must be of the class the optional interface is * generated for (for eg. ChannelInterfaceGroupInterface this means * ChannelInterface) or a subclass. * * First invocation of this method for a particular optional interface * class will construct the instance; subsequent calls will return a * pointer to the same instance. * * The returned instance is freed when the factory is destroyed; using * it after destroying the factory will likely produce a crash. As the * instance is shared, it should not be freed directly. * * \tparam Interface Class of the interface instance to get. * \return A pointer to an optional interface instance. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/capabilities-base.h0000644000175100017520000000522712530423576023706 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_capabilities_base_h_HEADER_GUARD_ #define _TelepathyQt_capabilities_base_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT CapabilitiesBase { public: CapabilitiesBase(); CapabilitiesBase(const CapabilitiesBase &other); virtual ~CapabilitiesBase(); CapabilitiesBase &operator=(const CapabilitiesBase &other); RequestableChannelClassSpecList allClassSpecs() const; bool isSpecificToContact() const; bool textChats() const; bool audioCalls() const; bool videoCalls() const; bool videoCallsWithAudio() const; bool upgradingCalls() const; TP_QT_DEPRECATED bool streamedMediaCalls() const; TP_QT_DEPRECATED bool streamedMediaAudioCalls() const; TP_QT_DEPRECATED bool streamedMediaVideoCalls() const; TP_QT_DEPRECATED bool streamedMediaVideoCallsWithAudio() const; TP_QT_DEPRECATED bool upgradingStreamedMediaCalls() const; bool fileTransfers() const; // later: FIXME TODO why not now? // QList fileTransfersRequireHash() const; protected: CapabilitiesBase(bool specificToContact); CapabilitiesBase(const RequestableChannelClassList &rccs, bool specificToContact); CapabilitiesBase(const RequestableChannelClassSpecList &rccSpecs, bool specificToContact); virtual void updateRequestableChannelClasses( const RequestableChannelClassList &rccs); private: friend class Connection; friend class Contact; struct Private; friend struct Private; QSharedDataPointer mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::CapabilitiesBase); #endif telepathy-qt-0.9.6.1/TelepathyQt/TelepathyQt.pc.in0000644000175100017520000000152412530423576023365 0ustar00kaffeinekaffeine00000000000000prefix=${CMAKE_INSTALL_PREFIX} exec_prefix=${CMAKE_INSTALL_PREFIX} libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR} Name: TelepathyQt${QT_VERSION_MAJOR} Description: Qt utility library for the Telepathy framework Version: ${PACKAGE_VERSION} Requires.private: Qt${QT_VERSION_PC}Core >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Core < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}DBus >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}DBus < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}Network >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Network < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}Xml >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Xml < ${QT_MAX_VERSION} Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR} Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR} telepathy-qt-0.9.6.1/TelepathyQt/account-property-filter.h0000644000175100017520000000314712530423576025145 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_property_filter_h_HEADER_GUARD_ #define _TelepathyQt_account_property_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class TP_QT_EXPORT AccountPropertyFilter : public GenericPropertyFilter { public: static AccountPropertyFilterPtr create() { return AccountPropertyFilterPtr(new AccountPropertyFilter); } ~AccountPropertyFilter(); bool isValid() const; private: AccountPropertyFilter(); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/OutgoingFileTransferChannel0000644000175100017520000000044212530423576025502 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_OutgoingFileTransferChannel_HEADER_GUARD_ #define _TelepathyQt_OutgoingFileTransferChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/BaseConnectionManager0000644000175100017520000000041712530423576024300 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseConnectionManager_HEADER_GUARD_ #define _TelepathyQt_BaseConnectionManager_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-proxy-factory.h0000644000175100017520000000472512530423576024130 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_proxy_factory_h_HEADER_GUARD_ #define _TelepathyQt_dbus_proxy_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include // For Q_DISABLE_COPY #include #include class QDBusConnection; namespace Tp { class Features; class PendingReady; class PendingOperation; class TP_QT_EXPORT DBusProxyFactory : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(DBusProxyFactory) public: virtual ~DBusProxyFactory(); const QDBusConnection &dbusConnection() const; protected: DBusProxyFactory(const QDBusConnection &bus); DBusProxyPtr cachedProxy(const QString &busName, const QString &objectPath) const; PendingReady *nowHaveProxy(const DBusProxyPtr &proxy) const; // I don't want this to be non-pure virtual, because I want ALL subclasses to have to think // about whether or not they need to uniquefy the name or not. If a subclass doesn't implement // this while it should, matching with the cache for future requests and invalidation breaks. virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const = 0; virtual PendingOperation *initialPrepare(const DBusProxyPtr &proxy) const; virtual PendingOperation *readyPrepare(const DBusProxyPtr &proxy) const; virtual Features featuresFor(const DBusProxyPtr &proxy) const = 0; private: class Cache; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface0000644000175100017520000000055412530423576034710 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelRequest0000644000175100017520000000037112530423576023033 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelRequest_HEADER_GUARD_ #define _TelepathyQt_ChannelRequest_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/account.h0000644000175100017520000007123412530423576022002 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_h_HEADER_GUARD_ #define _TelepathyQt_account_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class Account; class Connection; class PendingChannel; class PendingChannelRequest; class PendingConnection; class PendingOperation; class PendingReady; class PendingStringList; class TP_QT_EXPORT Account : public StatelessDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(Account) Q_PROPERTY(bool valid READ isValidAccount NOTIFY validityChanged) Q_PROPERTY(bool enabled READ isEnabled NOTIFY stateChanged) Q_PROPERTY(QString cmName READ cmName) Q_PROPERTY(QString protocolName READ protocolName) Q_PROPERTY(QString serviceName READ serviceName NOTIFY serviceNameChanged) Q_PROPERTY(ProfilePtr profile READ profile NOTIFY profileChanged) Q_PROPERTY(QString displayName READ displayName NOTIFY displayNameChanged) Q_PROPERTY(QString iconName READ iconName NOTIFY iconNameChanged) Q_PROPERTY(QString nickname READ nickname NOTIFY nicknameChanged) Q_PROPERTY(AvatarSpec avatarRequirements READ avatarRequirements) Q_PROPERTY(Avatar avatar READ avatar NOTIFY avatarChanged) Q_PROPERTY(QVariantMap parameters READ parameters NOTIFY parametersChanged) Q_PROPERTY(ProtocolInfo protocolInfo READ protocolInfo) Q_PROPERTY(ConnectionCapabilities capabilities READ capabilities NOTIFY capabilitiesChanged) Q_PROPERTY(bool hasBeenOnline READ hasBeenOnline) Q_PROPERTY(bool connectsAutomatically READ connectsAutomatically NOTIFY connectsAutomaticallyPropertyChanged) Q_PROPERTY(ConnectionStatus connectionStatus READ connectionStatus NOTIFY connectionStatusChanged) Q_PROPERTY(ConnectionStatusReason connectionStatusReason READ connectionStatusReason) Q_PROPERTY(QString connectionError READ connectionError) Q_PROPERTY(Tp::Connection::ErrorDetails connectionErrorDetails READ connectionErrorDetails) Q_PROPERTY(ConnectionPtr connection READ connection NOTIFY connectionChanged) Q_PROPERTY(bool changingPresence READ isChangingPresence NOTIFY changingPresence) Q_PROPERTY(Presence automaticPresence READ automaticPresence NOTIFY automaticPresenceChanged) Q_PROPERTY(Presence currentPresence READ currentPresence NOTIFY currentPresenceChanged) Q_PROPERTY(Presence requestedPresence READ requestedPresence NOTIFY requestedPresenceChanged) Q_PROPERTY(bool online READ isOnline NOTIFY onlinenessChanged) Q_PROPERTY(QString uniqueIdentifier READ uniqueIdentifier) Q_PROPERTY(QString normalizedName READ normalizedName NOTIFY normalizedNameChanged) public: static const Feature FeatureCore; static const Feature FeatureAvatar; static const Feature FeatureProtocolInfo; static const Feature FeatureCapabilities; static const Feature FeatureProfile; static AccountPtr create(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); static AccountPtr create(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); virtual ~Account(); ConnectionFactoryConstPtr connectionFactory() const; ChannelFactoryConstPtr channelFactory() const; ContactFactoryConstPtr contactFactory() const; bool isValidAccount() const; bool isEnabled() const; PendingOperation *setEnabled(bool value); QString cmName() const; QString protocolName() const; QString serviceName() const; PendingOperation *setServiceName(const QString &value); ProfilePtr profile() const; QString displayName() const; PendingOperation *setDisplayName(const QString &value); QString iconName() const; PendingOperation *setIconName(const QString &value); QString nickname() const; PendingOperation *setNickname(const QString &value); AvatarSpec avatarRequirements() const; // TODO: We probably want to expose the avatar file name once we have the avatar token and MC // starts sharing the cache used by tp-qt and tp-glib and use Tp::AvatarData to represent // it as used in Tp::Contact const Avatar &avatar() const; PendingOperation *setAvatar(const Avatar &avatar); QVariantMap parameters() const; PendingStringList *updateParameters(const QVariantMap &set, const QStringList &unset); ProtocolInfo protocolInfo() const; ConnectionCapabilities capabilities() const; bool connectsAutomatically() const; PendingOperation *setConnectsAutomatically(bool value); bool hasBeenOnline() const; ConnectionStatus connectionStatus() const; ConnectionStatusReason connectionStatusReason() const; QString connectionError() const; Connection::ErrorDetails connectionErrorDetails() const; ConnectionPtr connection() const; bool isChangingPresence() const; PresenceSpecList allowedPresenceStatuses(bool includeAllStatuses = false) const; uint maxPresenceStatusMessageLength() const; // TODO: Add overload methods to set presence from a Profile::Presence // TODO: Add usablePresences() that would return a list of presences that could be set on the // account Presence automaticPresence() const; PendingOperation *setAutomaticPresence(const Presence &presence); Presence currentPresence() const; Presence requestedPresence() const; PendingOperation *setRequestedPresence(const Presence &presence); bool isOnline() const; QString uniqueIdentifier() const; QString normalizedName() const; PendingOperation *reconnect(); PendingOperation *remove(); bool supportsRequestHints() const; bool requestsSucceedWithChannel() const; PendingChannelRequest *ensureTextChat( const QString &contactIdentifier, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureTextChat( const ContactPtr &contact, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureTextChatroom( const QString &roomName, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureAudioCall( const QString &contactIdentifier, const QString &initialAudioContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureAudioCall( const ContactPtr &contact, const QString &initialAudioContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureVideoCall( const QString &contactIdentifier, const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureVideoCall( const ContactPtr &contact, const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureAudioVideoCall( const QString &contactIdentifier, const QString &initialAudioContentName = QString(), const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureAudioVideoCall( const ContactPtr &contact, const QString &initialAudioContentName = QString(), const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaCall( const QString &contactIdentifier, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaCall( const ContactPtr &contact, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaAudioCall( const QString &contactIdentifier, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaAudioCall( const ContactPtr &contact, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaVideoCall( const QString &contactIdentifier, bool withAudio = true, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *ensureStreamedMediaVideoCall( const ContactPtr &contact, bool withAudio = false, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createFileTransfer( const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createFileTransfer( const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createStreamTube( const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createStreamTube( const ContactPtr &contact, const QString &service, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createDBusTube( const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createDBusTube( const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createDBusTubeRoom( const QString &room, const QString &serviceName, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *createConferenceStreamedMediaCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); TP_QT_DEPRECATED PendingChannelRequest *createConferenceStreamedMediaCall( const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createConferenceCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createConferenceCall( const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createConferenceTextChat( const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createConferenceTextChat( const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createConferenceTextChatroom( const QString &roomName, const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *createConferenceTextChatroom( const QString &roomName, const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannel *createAndHandleConferenceCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleConferenceCall( const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannelRequest *createContactSearch( const QString &server, uint limit = 0, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannel *ensureAndHandleTextChat( const QString &contactIdentifier, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleTextChat( const ContactPtr &contact, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleTextChatroom( const QString &roomName, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleAudioCall( const QString &contactIdentifier, const QString &initialAudioContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleAudioCall( const ContactPtr &contact, const QString &initialAudioContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleVideoCall( const QString &contactIdentifier, const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleVideoCall( const ContactPtr &contact, const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleAudioVideoCall( const QString &contactIdentifier, const QString &initialAudioContentName = QString(), const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *ensureAndHandleAudioVideoCall( const ContactPtr &contact, const QString &initialAudioContentName = QString(), const QString &initialVideoContentName = QString(), const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaCall( const QString &contactIdentifier, const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaCall( const ContactPtr &contact, const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaAudioCall( const QString &contactIdentifier, const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaAudioCall( const ContactPtr &contact, const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaVideoCall( const QString &contactIdentifier, bool withAudio = true, const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *ensureAndHandleStreamedMediaVideoCall( const ContactPtr &contact, bool withAudio = true, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleFileTransfer( const QString &contactIdentifier, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleFileTransfer( const ContactPtr &contact, const FileTransferChannelCreationProperties &properties, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleStreamTube( const QString &contactIdentifier, const QString &service, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleStreamTube( const ContactPtr &contact, const QString &service, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleDBusTube( const QString &contactIdentifier, const QString &serviceName, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleDBusTube( const ContactPtr &contact, const QString &serviceName, const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleConferenceTextChat( const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleConferenceTextChat( const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleConferenceTextChatroom( const QString &roomName, const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleConferenceTextChatroom( const QString &roomName, const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *createAndHandleConferenceStreamedMediaCall( const QList &channels, const QStringList &initialInviteeContactsIdentifiers = QStringList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); TP_QT_DEPRECATED PendingChannel *createAndHandleConferenceStreamedMediaCall( const QList &channels, const QList &initialInviteeContacts = QList(), const QDateTime &userActionTime = QDateTime::currentDateTime()); PendingChannel *createAndHandleContactSearch( const QString &server = QString(), uint limit = 0, const QDateTime &userActionTime = QDateTime::currentDateTime()); // advanced PendingChannelRequest *createChannel( const QVariantMap &requestedProperties, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannelRequest *ensureChannel( const QVariantMap &requestedProperties, const QDateTime &userActionTime = QDateTime::currentDateTime(), const QString &preferredHandler = QString(), const ChannelRequestHints &hints = ChannelRequestHints()); PendingChannel *createAndHandleChannel( const QVariantMap &requestedProperties, const QDateTime &userActionTime); PendingChannel *ensureAndHandleChannel( const QVariantMap &requestedProperties, const QDateTime &userActionTime); Q_SIGNALS: void removed(); void serviceNameChanged(const QString &serviceName); void profileChanged(const Tp::ProfilePtr &profile); void displayNameChanged(const QString &displayName); void iconNameChanged(const QString &iconName); void nicknameChanged(const QString &nickname); void normalizedNameChanged(const QString &normalizedName); void validityChanged(bool validity); void stateChanged(bool state); void capabilitiesChanged(const Tp::ConnectionCapabilities &capabilities); void connectsAutomaticallyPropertyChanged(bool connectsAutomatically); void firstOnline(); void parametersChanged(const QVariantMap ¶meters); void changingPresence(bool value); void automaticPresenceChanged(const Tp::Presence &automaticPresence); void currentPresenceChanged(const Tp::Presence ¤tPresence); void requestedPresenceChanged(const Tp::Presence &requestedPresence); void onlinenessChanged(bool online); void avatarChanged(const Tp::Avatar &avatar); void connectionStatusChanged(Tp::ConnectionStatus status); void connectionChanged(const Tp::ConnectionPtr &connection); protected: friend class PendingChannelRequest; // to access dispatcherInterface() Account(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature); Client::AccountInterface *baseInterface() const; Client::ChannelDispatcherInterface *dispatcherInterface() const; private Q_SLOTS: TP_QT_NO_EXPORT void onDispatcherIntrospected(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void gotAvatar(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onAvatarChanged(); TP_QT_NO_EXPORT void onConnectionManagerReady(Tp::PendingOperation *); TP_QT_NO_EXPORT void onConnectionReady(Tp::PendingOperation *); TP_QT_NO_EXPORT void onPropertyChanged(const QVariantMap &delta); TP_QT_NO_EXPORT void onRemoved(); TP_QT_NO_EXPORT void onConnectionBuilt(Tp::PendingOperation *); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus.h0000644000175100017520000000372312530423576021301 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_h_HEADER_GUARD_ #define _TelepathyQt_dbus_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif /** * \addtogroup clientsideproxies Client-side proxies * * Proxy objects representing remote service objects accessed via D-Bus. * * In addition to providing direct access to methods, signals and properties * exported by the remote objects, some of these proxies offer features like * automatic inspection of remote object capabilities, property tracking, * backwards compatibility helpers for older services and other utilities. */ /** * \defgroup clientdbus Generic D-Bus proxies * \ingroup clientsideproxies * * Proxy objects representing well-known generic D-Bus interfaces on remote * objects. Note that QDBus already has QDBusConnectionInterface for accessing * the bus daemon, so in the parts where there is an overlap in the * functionality, using the QDBus proxy should be given consideration instead * of blindly using the proxy provided here. */ #include #endif telepathy-qt-0.9.6.1/TelepathyQt/ClientInterfaceRequestsInterface0000644000175100017520000000042412530423576026525 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ClientInterfaceRequestsInterface_HEADER_GUARD_ #define _TelepathyQt_ClientInterfaceRequestsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/TelepathyQtConfig.cmake.in0000644000175100017520000000323412530423576025171 0ustar00kaffeinekaffeine00000000000000# TelepathyQt@QT_VERSION_MAJOR@Config.cmake is generated by CMake from TelepathyQt/TelepathyQtConfig.cmake.in. # Any changed value in this file will be overwritten by CMake. if(NOT TelepathyQt@QT_VERSION_MAJOR@_FOUND) # set the version number set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_MAJOR @TP_QT_MAJOR_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_MINOR @TP_QT_MINOR_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_MICRO @TP_QT_MICRO_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_NANO @TP_QT_NANO_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION @PACKAGE_VERSION@) # set the directories if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_INSTALL_DIR) set(TELEPATHY_QT@QT_VERSION_MAJOR@_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@") endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_INSTALL_DIR) set(TELEPATHY_QT@QT_VERSION_MAJOR@_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@") set(TELEPATHY_QT@QT_VERSION_MAJOR@_LIB_DIR "@TELEPATHY_QT_LIB_DIR@") set(TELEPATHY_QT@QT_VERSION_MAJOR@_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@") # attempt to find the generated TelepathyQt4Targets.cmake in the same directory get_filename_component(_TPQT@QT_VERSION_MAJOR@_CONFIG_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) find_file(_TPQT@QT_VERSION_MAJOR@_TARGETS_FILE TelepathyQt@QT_VERSION_MAJOR@Targets.cmake PATHS ${_TPQT@QT_VERSION_MAJOR@_CONFIG_DIR} NO_DEFAULT_PATH) # set the TELEPATHY_QT@QT_VERSION_MAJOR@_LIBRARIES variable include(${_TPQT@QT_VERSION_MAJOR@_TARGETS_FILE}) set(TELEPATHY_QT@QT_VERSION_MAJOR@_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@) endif(NOT TelepathyQt@QT_VERSION_MAJOR@_FOUND) telepathy-qt-0.9.6.1/TelepathyQt/location-info.cpp0000644000175100017520000001206212530423576023434 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { struct TP_QT_NO_EXPORT LocationInfo::Private : public QSharedData { QVariantMap location; }; /** * \class LocationInfo * \ingroup clientconn * \headerfile TelepathyQt/location-info.h * * \brief The LocationInfo class represents the location of a * Telepathy Contact. */ /** * Construct a new LocationInfo object. */ LocationInfo::LocationInfo() : mPriv(new Private) { } LocationInfo::LocationInfo(const QVariantMap &location) : mPriv(new Private) { mPriv->location = location; } LocationInfo::LocationInfo(const LocationInfo &other) : mPriv(other.mPriv) { } /** * Class destructor. */ LocationInfo::~LocationInfo() { } LocationInfo &LocationInfo::operator=(const LocationInfo &other) { this->mPriv = other.mPriv; return *this; } QString LocationInfo::countryCode() const { return qdbus_cast(mPriv->location.value( QLatin1String("countrycode"))); } QString LocationInfo::country() const { return qdbus_cast(mPriv->location.value( QLatin1String("country"))); } QString LocationInfo::region() const { return qdbus_cast(mPriv->location.value( QLatin1String("region"))); } QString LocationInfo::locality() const { return qdbus_cast(mPriv->location.value( QLatin1String("locality"))); } QString LocationInfo::area() const { return qdbus_cast(mPriv->location.value( QLatin1String("area"))); } QString LocationInfo::postalCode() const { return qdbus_cast(mPriv->location.value( QLatin1String("postalcode"))); } QString LocationInfo::street() const { return qdbus_cast(mPriv->location.value( QLatin1String("street"))); } QString LocationInfo::building() const { return qdbus_cast(mPriv->location.value( QLatin1String("building"))); } QString LocationInfo::floor() const { return qdbus_cast(mPriv->location.value( QLatin1String("floor"))); } QString LocationInfo::room() const { return qdbus_cast(mPriv->location.value( QLatin1String("room"))); } QString LocationInfo::text() const { return qdbus_cast(mPriv->location.value( QLatin1String("text"))); } QString LocationInfo::description() const { return qdbus_cast(mPriv->location.value( QLatin1String("description"))); } QString LocationInfo::uri() const { return qdbus_cast(mPriv->location.value( QLatin1String("uri"))); } QString LocationInfo::language() const { return qdbus_cast(mPriv->location.value( QLatin1String("language"))); } double LocationInfo::latitude() const { return qdbus_cast(mPriv->location.value( QLatin1String("lat"))); } double LocationInfo::longitude() const { return qdbus_cast(mPriv->location.value( QLatin1String("lon"))); } double LocationInfo::altitude() const { return qdbus_cast(mPriv->location.value( QLatin1String("alt"))); } double LocationInfo::accuracy() const { return qdbus_cast(mPriv->location.value( QLatin1String("accuracy"))); } double LocationInfo::speed() const { return qdbus_cast(mPriv->location.value( QLatin1String("speed"))); } double LocationInfo::bearing() const { return qdbus_cast(mPriv->location.value( QLatin1String("bearing"))); } QDateTime LocationInfo::timestamp() const { // FIXME See http://bugs.freedesktop.org/show_bug.cgi?id=21690 qlonglong t = qdbus_cast(mPriv->location.value( QLatin1String("timestamp"))); if (t != 0) { return QDateTime::fromTime_t((uint) t); } return QDateTime(); } QVariantMap LocationInfo::allDetails() const { return mPriv->location; } void LocationInfo::updateData(const QVariantMap &location) { if (!isValid()) { mPriv = new Private; } mPriv->location = location; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceSubjectInterface0000644000175100017520000000042512530423576026444 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceSubjectInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceSubjectInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingSuccess0000644000175100017520000000040312530423576023023 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingSuccess_HEADER_GUARD_ #define _TelepathyQt_PendingSuccess_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountManagerInterface0000644000175100017520000000041312530423576024617 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountManagerInterface_HEADER_GUARD_ #define _TelepathyQt_AccountManagerInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/and-filter.h0000644000175100017520000000445412530423576022373 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_and_filter_h_HEADER_GUARD_ #define _TelepathyQt_and_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { template class AndFilter : public Filter { public: static SharedPtr > create( const QList > > &filters = QList > >()) { return SharedPtr >(new AndFilter(filters)); } inline virtual ~AndFilter() { } inline virtual bool isValid() const { Q_FOREACH (const SharedPtr > &filter, mFilters) { if (!filter || !filter->isValid()) { return false; } } return true; } inline virtual bool matches(const SharedPtr &t) const { if (!isValid()) { return false; } Q_FOREACH (const SharedPtr > &filter, mFilters) { if (!filter->matches(t)) { return false; } } return true; } inline QList > > filters() const { return mFilters; } private: AndFilter(const QList > > &filters) : Filter(), mFilters(filters) { } QList > > mFilters; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/account-manager.cpp0000644000175100017520000012234012530423576023740 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/account-manager.moc.hpp" #include "TelepathyQt/_gen/cli-account-manager.moc.hpp" #include "TelepathyQt/_gen/cli-account-manager-body.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT AccountManager::Private { Private(AccountManager *parent, const AccountFactoryConstPtr &accFactory, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory); ~Private(); void init(); static void introspectMain(Private *self); void checkIntrospectionCompleted(); QSet getAccountPathsFromProp(const QVariant &prop); QSet getAccountPathsFromProps(const QVariantMap &props); void addAccountForPath(const QString &accountObjectPath); // Public object AccountManager *parent; // Instance of generated interface class Client::AccountManagerInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; AccountFactoryConstPtr accFactory; ConnectionFactoryConstPtr connFactory; ChannelFactoryConstPtr chanFactory; ContactFactoryConstPtr contactFactory; // Introspection int reintrospectionRetries; bool gotInitialAccounts; QHash incompleteAccounts; QHash accounts; QStringList supportedAccountProperties; }; static const int maxReintrospectionRetries = 5; static const int reintrospectionRetryInterval = 3; AccountManager::Private::Private(AccountManager *parent, const AccountFactoryConstPtr &accFactory, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) : parent(parent), baseInterface(new Client::AccountManagerInterface(parent)), properties(parent->interface()), readinessHelper(parent->readinessHelper()), accFactory(accFactory), connFactory(connFactory), chanFactory(chanFactory), contactFactory(contactFactory), reintrospectionRetries(0), gotInitialAccounts(false) { debug() << "Creating new AccountManager:" << parent->busName(); if (accFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the account factory is not the proxy connection"; } if (connFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the connection factory is not the proxy connection"; } if (chanFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection"; } ReadinessHelper::Introspectables introspectables; // As AccountManager does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); readinessHelper->becomeReady(Features() << FeatureCore); init(); } AccountManager::Private::~Private() { delete baseInterface; } void AccountManager::Private::init() { if (!parent->isValid()) { return; } parent->connect(baseInterface, SIGNAL(AccountValidityChanged(QDBusObjectPath,bool)), SLOT(onAccountValidityChanged(QDBusObjectPath,bool))); parent->connect(baseInterface, SIGNAL(AccountRemoved(QDBusObjectPath)), SLOT(onAccountRemoved(QDBusObjectPath))); } void AccountManager::Private::introspectMain(AccountManager::Private *self) { debug() << "Calling Properties::GetAll(AccountManager)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll( TP_QT_IFACE_ACCOUNT_MANAGER), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotMainProperties(QDBusPendingCallWatcher*))); } void AccountManager::Private::checkIntrospectionCompleted() { if (!parent->isReady(FeatureCore) && incompleteAccounts.size() == 0) { readinessHelper->setIntrospectCompleted(FeatureCore, true); } } QSet AccountManager::Private::getAccountPathsFromProp( const QVariant &prop) { QSet set; ObjectPathList paths = qdbus_cast(prop); if (paths.size() == 0) { /* maybe the AccountManager is buggy, like Mission Control * 5.0.beta45, and returns an array of strings rather than * an array of object paths? */ QStringList wronglyTypedPaths = qdbus_cast(prop); if (wronglyTypedPaths.size() > 0) { warning() << "AccountManager returned wrong type for" "Valid/InvalidAccounts (expected 'ao', got 'as'); " "working around it"; foreach (QString path, wronglyTypedPaths) { set << path; } } } else { foreach (const QDBusObjectPath &path, paths) { set << path.path(); } } return set; } QSet AccountManager::Private::getAccountPathsFromProps( const QVariantMap &props) { return getAccountPathsFromProp(props[QLatin1String("ValidAccounts")]).unite( getAccountPathsFromProp(props[QLatin1String("InvalidAccounts")])); } void AccountManager::Private::addAccountForPath(const QString &path) { // Also check incompleteAccounts, because otherwise we end up introspecting an account twice // when getting an AccountValidityChanged signal for a new account before we get the initial // introspection accounts list from the GetAll return (the GetAll return function // unconditionally calls addAccountForPath if (accounts.contains(path) || incompleteAccounts.contains(path)) { return; } PendingReady *readyOp = accFactory->proxy(parent->busName(), path, connFactory, chanFactory, contactFactory); AccountPtr account(AccountPtr::qObjectCast(readyOp->proxy())); Q_ASSERT(!account.isNull()); parent->connect(readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAccountReady(Tp::PendingOperation*))); incompleteAccounts.insert(path, account); } /** * \class AccountManager * \ingroup clientam * \headerfile TelepathyQt/account-manager.h * * \brief The AccountManager class represents a Telepathy account manager. * * The remote object accessor functions on this object (allAccounts(), * validAccounts(), and so on) don't make any D-Bus calls; instead, they return/use * values cached from a previous introspection run. The introspection process * populates their values in the most efficient way possible based on what the * service implements. * * To avoid unnecessary D-Bus traffic, some accessors only return valid * information after AccountManager::FeatureCore has been enabled. * See the individual methods descriptions for more details. * * AccountManager features can be enabled by calling becomeReady() * with the desired set of features as an argument (currently only AccountManager::FeatureCore is * supported), and waiting for the resulting PendingOperation to finish. * * All accounts returned by AccountManager are guaranteed to have the features set in the * AccountFactory used by it ready. * * A signal is emitted to indicate that accounts are added. See newCreated() for more details. * * \section am_usage_sec Usage * * \subsection am_create_sec Creating an AccountManager object * * One way to create an AccountManager object is to just call the create method. * For example: * * \code AccountManagerPtr am = AccountManager::create(); \endcode * * An AccountManagerPtr object is returned, which will automatically keep * track of object lifetime. * * You can also provide a D-Bus connection as a QDBusConnection: * * \code AccountManagerPtr am = AccountManager::create(QDBusConnection::sessionBus()); \endcode * * \subsection am_ready_sec Making AccountManager ready to use * * An AccountManager object needs to become ready before usage, meaning that the * introspection process finished and the object accessors can be used. * * To make the object ready, use becomeReady() and wait for the * PendingOperation::finished() signal to be emitted. * * \code * * class MyClass : public QObject * { * QOBJECT * * public: * MyClass(QObject *parent = 0); * ~MyClass() { } * * private Q_SLOTS: * void onAccountManagerReady(Tp::PendingOperation*); * * private: * AccountManagerPtr mAM; * }; * * MyClass::MyClass(QObject *parent) * : QObject(parent) * mAM(AccountManager::create()) * { * connect(mAM->becomeReady(), * SIGNAL(finished(Tp::PendingOperation*)), * SLOT(onAccountManagerReady(Tp::PendingOperation*))); * } * * void MyClass::onAccountManagerReady(Tp::PendingOperation *op) * { * if (op->isError()) { * qWarning() << "Account manager cannot become ready:" << * op->errorName() << "-" << op->errorMessage(); * return; * } * * // AccountManager is now ready * qDebug() << "All accounts:"; * foreach (const Tp::AccountPtr &acc, mAM->allAccounts()) { * qDebug() << " path:" << acc->objectPath(); * } * } * * \endcode * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * AccountManager object usable. * * Note that this feature must be enabled in order to use most AccountManager * methods. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature AccountManager::FeatureCore = Feature(QLatin1String(AccountManager::staticMetaObject.className()), 0, true); /** * Create a new AccountManager object using the given \a bus. * * The instance will use an account factory creating Tp::Account objects with Account::FeatureCore * ready, a connection factory creating Tp::Connection objects with no features ready, a channel * factory creating stock Tp::Channel subclasses, as appropriate, with no features ready, and a * contact factory creating Tp::Contact objects with no features ready. * * \param bus QDBusConnection to use. * \return An AccountManagerPtr object pointing to the newly created * AccountManager object. */ AccountManagerPtr AccountManager::create(const QDBusConnection &bus) { return AccountManagerPtr(new AccountManager(bus, AccountFactory::create(bus, Account::FeatureCore), ConnectionFactory::create(bus), ChannelFactory::create(bus), ContactFactory::create(), AccountManager::FeatureCore)); } /** * Create a new AccountManager using QDBusConnection::sessionBus() and the given factories. * * The connection, channel and contact factories are passed to any Account objects created by this * account manager object. In fact, they're not used directly by AccountManager at all. * * A warning is printed if the factories are for a bus different from QDBusConnection::sessionBus(). * * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return An AccountManagerPtr object pointing to the newly created * AccountManager object. */ AccountManagerPtr AccountManager::create(const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return AccountManagerPtr(new AccountManager(QDBusConnection::sessionBus(), accountFactory, connectionFactory, channelFactory, contactFactory, AccountManager::FeatureCore)); } /** * Create a new AccountManager using the given \a bus and the given factories. * * The connection, channel and contact factories are passed to any Account objects created by this * account manager object. In fact, they're not used directly by AccountManager at all. * * A warning is printed if the factories are not for \a bus. * * \param bus QDBusConnection to use. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return An AccountManagerPtr object pointing to the newly created * AccountManager object. */ AccountManagerPtr AccountManager::create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return AccountManagerPtr(new AccountManager(bus, accountFactory, connectionFactory, channelFactory, contactFactory, AccountManager::FeatureCore)); } /** * Construct a new AccountManager object using the given \a bus and the given factories. * * The connection, channel and contact factories are passed to any Account objects created by this * account manager object. In fact, they're not used directly by AccountManager at all. * * A warning is printed if the factories are not for \a bus. * * \param bus QDBusConnection to use. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \param coreFeature The core feature of the Account subclass. The corresponding introspectable * should depend on AccountManager::FeatureCore. */ AccountManager::AccountManager(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature) : StatelessDBusProxy(bus, TP_QT_ACCOUNT_MANAGER_BUS_NAME, TP_QT_ACCOUNT_MANAGER_OBJECT_PATH, coreFeature), OptionalInterfaceFactory(this), mPriv(new Private(this, accountFactory, connectionFactory, channelFactory, contactFactory)) { } /** * Class destructor. */ AccountManager::~AccountManager() { delete mPriv; } /** * Return the account factory used by this account manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the AccountFactory object. */ AccountFactoryConstPtr AccountManager::accountFactory() const { return mPriv->accFactory; } /** * Return the connection factory used by this account manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ConnectionFactory object. */ ConnectionFactoryConstPtr AccountManager::connectionFactory() const { return mPriv->connFactory; } /** * Return the channel factory used by this account manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ChannelFactory object. */ ChannelFactoryConstPtr AccountManager::channelFactory() const { return mPriv->chanFactory; } /** * Return the contact factory used by this account manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ContactFactory object. */ ContactFactoryConstPtr AccountManager::contactFactory() const { return mPriv->contactFactory; } /** * Return a list containing all accounts. * * Newly accounts added and/or discovered are signaled via newAccount(). * * This method requires AccountManager::FeatureCore to be ready. * * \return A list of pointers to Account objects. */ QList AccountManager::allAccounts() const { QList ret; foreach (const AccountPtr &account, mPriv->accounts) { ret << account; } return ret; } /** * Return a set of accounts containing all valid accounts. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::validAccounts() const { QVariantMap filter; filter.insert(QLatin1String("valid"), true); return filterAccounts(filter); } /** * Return a set of accounts containing all invalid accounts. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::invalidAccounts() const { QVariantMap filter; filter.insert(QLatin1String("valid"), false); return filterAccounts(filter); } /** * Return a set of accounts containing all enabled accounts. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::enabledAccounts() const { QVariantMap filter; filter.insert(QLatin1String("enabled"), true); return filterAccounts(filter); } /** * Return a set of accounts containing all disabled accounts. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::disabledAccounts() const { QVariantMap filter; filter.insert(QLatin1String("enabled"), false); return filterAccounts(filter); } /** * Return a set of accounts containing all online accounts. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::onlineAccounts() const { QVariantMap filter; filter.insert(QLatin1String("online"), true); return filterAccounts(filter); } /** * Return a set of accounts containing all offline accounts. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::offlineAccounts() const { QVariantMap filter; filter.insert(QLatin1String("online"), false); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support text chats by * providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::textChatAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::textChat()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support text chat * rooms. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::textChatroomAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::textChatroom()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support audio calls (using the * Call interface) by providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::audioCallAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::audioCall()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support video calls (using the * Call interface) by providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::videoCallAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::videoCall()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support media calls (using the * StreamedMedia interface) by providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::streamedMediaCallAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::streamedMediaCall()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support audio calls (using the * StreamedMedia interface) by providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::streamedMediaAudioCallAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::streamedMediaAudioCall()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support video calls (using the * StreamedMedia interface) by providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::streamedMediaVideoCallAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::streamedMediaVideoCall()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support video calls with audio (using the * StreamedMedia interface) by providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::streamedMediaVideoCallWithAudioAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset( RequestableChannelClassSpec::streamedMediaVideoCallWithAudio()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that support file transfers by * providing a contact identifier. * * For this method to work, you must use an AccountFactory which makes Account::FeatureCapabilities * ready. * * This method requires AccountManager::FeatureCore to be ready. * * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::fileTransferAccounts() const { if (!accountFactory()->features().contains(Account::FeatureCapabilities)) { warning() << "Account filtering by capabilities can only be used with an AccountFactory" << "which makes Account::FeatureCapabilities ready"; return filterAccounts(AccountFilterConstPtr()); } AccountCapabilityFilterPtr filter = AccountCapabilityFilter::create(); filter->addRequestableChannelClassSubset(RequestableChannelClassSpec::fileTransfer()); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts for the given \a * protocolName. * * This method requires AccountManager::FeatureCore to be ready. * * \param protocolName The name of the protocol used to filter accounts. * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::accountsByProtocol( const QString &protocolName) const { if (!isReady(FeatureCore)) { warning() << "Account filtering requires AccountManager to be ready"; return filterAccounts(AccountFilterConstPtr()); } QVariantMap filter; filter.insert(QLatin1String("protocolName"), protocolName); return filterAccounts(filter); } /** * Return a set of accounts containing all accounts that match the given \a * filter criteria. * * For AccountCapabilityFilter filtering, an AccountFactory which makes * Account::FeatureCapabilities ready must be used. * * See AccountSet documentation for more details. * * This method requires AccountManager::FeatureCore to be ready. * * \param filter The desired filter. * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::filterAccounts(const AccountFilterConstPtr &filter) const { if (!isReady(FeatureCore)) { warning() << "Account filtering requires AccountManager to be ready"; return AccountSetPtr(new AccountSet(AccountManagerPtr( (AccountManager *) this), AccountFilterConstPtr())); } return AccountSetPtr(new AccountSet(AccountManagerPtr( (AccountManager *) this), filter)); } /** * Return a set of accounts containing all accounts that match the given \a * filter criteria. * * The \a filter is composed by Account property names and values as map items. * * The following example will return all jabber accounts that are enabled: * * \code * * void MyClass::init() * { * mAM = AccountManager::create(); * connect(mAM->becomeReady(), * SIGNAL(finished(Tp::PendingOperation*)), * SLOT(onAccountManagerReady(Tp::PendingOperation*))); * } * * void MyClass::onAccountManagerReady(Tp::PendingOperation *op) * { * if (op->isError()) { * qWarning() << "Account manager cannot become ready:" << * op->errorName() << "-" << op->errorMessage(); * return; * } * * QVariantMap filter; * filter.insert(QLatin1String("protocolName"), QLatin1String("jabber")); * filter.insert(QLatin1String("enabled"), true); * filteredAccountSet = mAM->filterAccounts(filter); * // connect to AccountSet::accountAdded/accountRemoved signals * QList accounts = filteredAccountSet->accounts(); * // do something with accounts * } * * \endcode * * See AccountSet documentation for more details. * * This method requires AccountManager::FeatureCore to be ready. * * \param filter The desired filter. * \return A pointer to an AccountSet object containing the matching accounts. */ AccountSetPtr AccountManager::filterAccounts(const QVariantMap &filter) const { if (!isReady(FeatureCore)) { warning() << "Account filtering requires AccountManager to be ready"; return AccountSetPtr(new AccountSet(AccountManagerPtr( (AccountManager *) this), QVariantMap())); } return AccountSetPtr(new AccountSet(AccountManagerPtr( (AccountManager *) this), filter)); } /** * Return the account for the given \a path. * * This method requires AccountManager::FeatureCore to be ready. * * \param path The account object path. * \return A pointer to an AccountSet object containing the matching accounts. * \sa allAccounts(), accountsForObjectPaths() */ AccountPtr AccountManager::accountForObjectPath(const QString &path) const { if (!isReady(FeatureCore)) { return AccountPtr(); } return mPriv->accounts.value(path); } /** * \deprecated See accountForObjectPath() */ AccountPtr AccountManager::accountForPath(const QString &path) const { return accountForObjectPath(path); } /** * Return a list of accounts for the given \a paths. * * The returned list will have one AccountPtr object for each given path. If * a given path is invalid the returned AccountPtr object will point to 0. * AccountPtr::isNull() will return true. * * This method requires AccountManager::FeatureCore to be ready. * * \param paths List of accounts object paths. * \return A list of pointers to Account objects for the given * \a paths. Null AccountPtr objects will be used as list elements for each invalid path. * \sa allAccounts(), accountForObjectPath() */ QList AccountManager::accountsForObjectPaths(const QStringList &paths) const { if (!isReady(FeatureCore)) { return QList(); } QList result; foreach (const QString &path, paths) { result << accountForObjectPath(path); } return result; } /** * \deprecated See accountsForObjectPaths() */ QList AccountManager::accountsForPaths(const QStringList &paths) const { return accountsForObjectPaths(paths); } /** * Return a list of the fully qualified names of properties that can be set * when calling createAccount(). * * \return A list of fully qualified D-Bus property names, * such as "org.freedesktop.Telepathy.Account.Enabled". * \sa createAccount() */ QStringList AccountManager::supportedAccountProperties() const { return mPriv->supportedAccountProperties; } /** * Create an account with the given parameters. * * The optional \a properties argument can be used to set any property listed in * supportedAccountProperties() at the time the account is created. * * \param connectionManager The name of the connection manager to create the account * for. * \param protocol The name of the protocol to create the account for. * \param displayName The account display name. * \param parameters The account parameters. * \param properties An optional map from fully qualified D-Bus property * names such as "org.freedesktop.Telepathy.Account.Enabled" * to their values. * \return A PendingAccount object which will emit PendingAccount::finished * when the account has been created of failed its creation process. * \sa supportedAccountProperties() */ PendingAccount *AccountManager::createAccount(const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap ¶meters, const QVariantMap &properties) { return new PendingAccount(AccountManagerPtr(this), connectionManager, protocol, displayName, parameters, properties); } /** * Return the Client::AccountManagerInterface interface proxy object for this * account manager. This method is protected since the convenience methods * provided by this class should generally be used instead of calling D-Bus * methods directly. * * \return A pointer to the existing Client::AccountManagerInterface object for * this AccountManager object. */ Client::AccountManagerInterface *AccountManager::baseInterface() const { return mPriv->baseInterface; } void AccountManager::introspectMain() { mPriv->introspectMain(mPriv); } void AccountManager::gotMainProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QVariantMap props; if (!reply.isError()) { mPriv->gotInitialAccounts = true; debug() << "Got reply to Properties.GetAll(AccountManager)"; props = reply.value(); if (props.contains(QLatin1String("Interfaces"))) { setInterfaces(qdbus_cast(props[QLatin1String("Interfaces")])); mPriv->readinessHelper->setInterfaces(interfaces()); } if (props.contains(QLatin1String("SupportedAccountProperties"))) { mPriv->supportedAccountProperties = qdbus_cast(props[QLatin1String("SupportedAccountProperties")]); } QSet paths = mPriv->getAccountPathsFromProps(props); foreach (const QString &path, paths) { mPriv->addAccountForPath(path); } mPriv->checkIntrospectionCompleted(); } else { if (mPriv->reintrospectionRetries++ < maxReintrospectionRetries) { int retryInterval = reintrospectionRetryInterval; if (reply.error().type() == QDBusError::TimedOut) { retryInterval = 0; } QTimer::singleShot(retryInterval, this, SLOT(introspectMain())); } else { warning() << "GetAll(AccountManager) failed with" << reply.error().name() << ":" << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); } } watcher->deleteLater(); } void AccountManager::onAccountReady(Tp::PendingOperation *op) { PendingReady *pr = qobject_cast(op); AccountPtr account(AccountPtr::qObjectCast(pr->proxy())); QString path = account->objectPath(); /* Some error occurred or the account was removed before become ready */ if (op->isError() || !mPriv->incompleteAccounts.contains(path)) { mPriv->incompleteAccounts.remove(path); mPriv->checkIntrospectionCompleted(); return; } mPriv->incompleteAccounts.remove(path); // We shouldn't end up here twice for the same account - that would also mean newAccount being // emitted twice for an account, and AccountSets getting confused as a result Q_ASSERT(!mPriv->accounts.contains(path)); mPriv->accounts.insert(path, account); if (isReady(FeatureCore)) { emit newAccount(account); } mPriv->checkIntrospectionCompleted(); } void AccountManager::onAccountValidityChanged(const QDBusObjectPath &objectPath, bool valid) { if (!mPriv->gotInitialAccounts) { return; } QString path = objectPath.path(); if (!mPriv->incompleteAccounts.contains(path) && !mPriv->accounts.contains(path)) { debug() << "New account" << path; mPriv->addAccountForPath(path); } } void AccountManager::onAccountRemoved(const QDBusObjectPath &objectPath) { if (!mPriv->gotInitialAccounts) { return; } QString path = objectPath.path(); /* the account is either in mPriv->incompleteAccounts or mPriv->accounts */ if (mPriv->accounts.contains(path)) { mPriv->accounts.remove(path); if (isReady(FeatureCore)) { debug() << "Account" << path << "removed"; } else { debug() << "Account" << path << "removed while the AM " "was not completely introspected"; } } else if (mPriv->incompleteAccounts.contains(path)) { mPriv->incompleteAccounts.remove(path); debug() << "Account" << path << "was removed, but it was " "not completely introspected, ignoring"; } else { debug() << "Got AccountRemoved for unknown account" << path << ", ignoring"; } } /** * \fn void AccountManager::newAccount(const Tp::AccountPtr &account) * * Emitted when a new account is created. * * The new \a account will have the features set in the AccountFactory used by this * account manager ready and the same connection, channel and contact factories as used by this * account manager. * * \param account The newly created account. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/account-manager.xml0000644000175100017520000000036012530423576023753 0ustar00kaffeinekaffeine00000000000000 Account Manager interfaces telepathy-qt-0.9.6.1/TelepathyQt/DebugReceiver0000644000175100017520000000036612530423576022631 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DebugReceiver_HEADER_GUARD_ #define _TelepathyQt_DebugReceiver_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/abstract-client.cpp0000644000175100017520000010424012530423576023752 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT AbstractClient::Private { Private() : registered(false) { } bool registered; }; /** * \class AbstractClient * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClient class represents a Telepathy client. * * Clients are programs used to process channels, approving, handling or * observing them. User interface processes are the obvious example of clients, * but they can provide other functionality, such as address-book * synchronization, message logging, etc. * * Each client is either an observer, an approver, a handler, or some * combination of these. * * Clients can be activatable services (those with a D-Bus .service file) * so that they can run in response to channel creation, or non-activatable * services (those that do not register a D-Bus .service file * for their well-known name, but do request it at runtime) so * that they can process channels, but only if they are already * running - for instance, a full-screen media center application might do this. * * As an optimization, service-activatable clients should install a file * $XDG_DATA_DIRS/telepathy/clients/clientname.client containing a cached version * of their immutable properties. The syntax of these files is documented in the * Telepathy specification. * * Non-activatable clients may install a .client file, but there's not much * point in them doing so. * * This is a base class and should not be used directly, use the * specialized classes AbstractClientObserver, AbstractClientApprover and * AbstractClientHandler instead. * * If the same process wants to be either a mix of observer, approver and * handler, or a combination of those it can multiple inherit the specialized * abstract classes. * * \sa AbstractClientObserver, AbstractClientApprover, AbstractClientHandler */ /** * Construct a new AbstractClient object. * * Note that this is a base class and should not be used directly, use the * specialized classes AbstractClientObserver, AbstractClientApprover and * AbstractClientHandler instead. */ AbstractClient::AbstractClient() : mPriv(new Private()) { } /** * Class destructor. */ AbstractClient::~AbstractClient() { delete mPriv; } /** * Return whether this client is registered. * * \return \c true if registered, \c false otherwise. */ bool AbstractClient::isRegistered() const { return mPriv->registered; } void AbstractClient::setRegistered(bool registered) { mPriv->registered = registered; } struct TP_QT_NO_EXPORT AbstractClientObserver::Private { Private(const ChannelClassList &channelFilter, bool shouldRecover) : channelFilter(channelFilter), shouldRecover(shouldRecover) { } ChannelClassList channelFilter; bool shouldRecover; }; /** * \class AbstractClientObserver * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClientObserver class represents a Telepathy observer. * * Observers are clients that monitor the creation of new channels. * This functionality can be used for things like message logging. * * Observers should not modify the state of a channel except via user * interaction. * * Observers must not carry out actions that exactly one process must take * responsibility for (e.g. acknowledging text messages, or carrying out * the actual file transfer), since arbitrarily many observers can be * activated for each channel. The handler is responsible for such tasks. * * Handlers may, of course, delegate responsibility for these tasks to other * clients (including those run as observers), but this must be done * explicitly via a request from the handler to the observer. * * Whenever a collection of new channels is signalled, the channel dispatcher * will notify all running or activatable observers whose filter indicates that * they are interested in some of the channels. * * Observers are activated for all channels in which they have registered an * interest - incoming, outgoing or automatically created - although of course * the filter property can be set to filter specific channels. * * To become an observer one should inherit AbstractClientObserver and * implement the pure virtual observeChannels() method. After that the object * representing the observer must be registered using * ClientRegistrar::registerClient(). * * When new channels in which the observer has registered an interest are * announced, the method observeChannels() is invoked. All observers are * notified simultaneously. * * \section observer_usage_sec Usage * * \subsection observer_create_sec Implementing an observer * * \code * * class MyObserver : public AbstractClientObserver * { * public: * MyObserver(const ChannelClassSpecList &channelFilter); * ~MyObserver() { } * * void observeChannels(const MethodInvocationContextPtr<> &context, * const AccountPtr &account, * const ConnectionPtr &connection, * const QList &channels, * const ChannelDispatchOperationPtr &dispatchOperation, * const QList &requestsSatisfied, * const AbstractClientObserver::ObserverInfo &observerInfo); * }; * * MyObserver::MyObserver(const ChannelClassSpecList &channelFilter) * : AbstractClientObserver(channelFilter) * { * } * * void MyObserver::observeChannels(const MethodInvocationContextPtr<> &context, * const AccountPtr &account, * const ConnectionPtr &connection, * const QList &channels, * const ChannelDispatchOperationPtr &dispatchOperation, * const QList &requestsSatisfied, * const AbstractClientObserver::ObserverInfo &observerInfo) * { * // do something, log messages, ... * * context->setFinished(); * } * * \endcode * * \subsection observer_register_sec Registering an observer * * \code * * ClientRegistrar registrar = ClientRegistrar::create(); * AbstractClientPtr observer = AbstractClientPtr::dynamicCast( * SharedPtr(new MyObserver( * ChannelClassSpecList() << ChannelClassSpec::textChat()))); * registrar->registerClient(observer, "myobserver"); * * \endcode * * \sa AbstractClient */ /** * \class AbstractClientObserver::ObserverInfo * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClientObserver::ObserverInfo class provides a wrapper * around the additional info about the channels passed to observeChannels(). * * \sa AbstractClientObserver */ struct TP_QT_NO_EXPORT AbstractClientObserver::ObserverInfo::Private : public QSharedData { Private(const QVariantMap &info) : info(info) {} QVariantMap info; }; AbstractClientObserver::ObserverInfo::ObserverInfo(const QVariantMap &info) : mPriv(new Private(info)) { } AbstractClientObserver::ObserverInfo::ObserverInfo(const ObserverInfo &other) : mPriv(other.mPriv) { } AbstractClientObserver::ObserverInfo::~ObserverInfo() { } AbstractClientObserver::ObserverInfo &AbstractClientObserver::ObserverInfo::operator=( const ObserverInfo &other) { if (this == &other) { return *this; } mPriv = other.mPriv; return *this; } QVariantMap AbstractClientObserver::ObserverInfo::allInfo() const { return mPriv->info; } /** * Construct a new AbstractClientObserver object. * * \param channelFilter A specification of the channels in which this observer * is interested. * \param shouldRecover Whether upon the startup of this observer, * observeChannels() will be called for every already * existing channel matching its observerChannelFilter(). */ AbstractClientObserver::AbstractClientObserver( const ChannelClassSpecList &channelFilter, bool shouldRecover) : mPriv(new Private(channelFilter.bareClasses(), shouldRecover)) // The channel filter is converted here to the low-level class so that any warnings are // emitted immediately rather than only when the CD introspects this Client { } /** * Class destructor. */ AbstractClientObserver::~AbstractClientObserver() { delete mPriv; } /** * Return the property containing a specification of the channels that this * channel observer is interested. The observeChannels() method should be called * by the channel dispatcher whenever any of the newly created channels match * this description. * * See * the Telepathy specification for documentation about the allowed * types and how to define filters. * * This property never changes while the observer process owns its client bus * name. If an observer wants to add extra channels to its list of interests at * runtime, it can register an additional client bus name using * ClientRegistrar::registerClient(). * To remove those filters, it can release the bus name using * ClientRegistrar::unregisterClient(). * * The same principle is applied to approvers and handlers. * * \return A specification of the channels that this channel observer is * interested as a list of ChannelClassSpec objects. * \sa observeChannels() */ ChannelClassSpecList AbstractClientObserver::observerFilter() const { return ChannelClassSpecList(mPriv->channelFilter); } /** * Return whether upon the startup of this observer, observeChannels() * will be called for every already existing channel matching its * observerChannelFilter(). * * \param \c true if this observer observerChannels() will be called for every * already existing channel matching its observerChannelFilter(), * \c false otherwise. */ bool AbstractClientObserver::shouldRecover() const { return mPriv->shouldRecover; } /** * \fn void AbstractClientObserver::observeChannels( * const MethodInvocationContextPtr<> &context, * const AccountPtr &account, * const ConnectionPtr &connection, * const QList &channels, * const ChannelDispatchOperationPtr &dispatchOperation, * const QList &requestsSatisfied, * const ObserverInfo &observerInfo); * * Called by the channel dispatcher when channels in which the observer has * registered an interest are announced. * * If the announced channels contains channels that match the * observerChannelFilter(), and some that do not, then only a subset of the * channels (those that do match the filter) are passed to this method. * * If the channel dispatcher will split up the channels from a single * announcement and dispatch them separately (for instance because no * installed handler can handle all of them), it will call this method * several times. * * The observer must not call MethodInvocationContext::setFinished() until it * is ready for a handler for the channel to run (which may change the * channel's state). For instance the received \a context object should be * stored until this method is finished processing and then * MethodInvocationContext::setFinished() or * MethodInvocationContext::setFinishedWithError() should be called on the * received \a context object. * * Specialized observers must reimplement this method. * * \param context A MethodInvocationContextPtr object that must be used to * indicate whether this method finished processing. * \param account The account with which the channels are associated. * \param connection The connection with which the channels are associated. * \param channels The channels to be observed. * \param dispatchOperation The dispatch operation for these channels. * The object will be invalid (DBusProxy::isValid() * will be false) if there is no dispatch * operation in place (because the channels were * requested, not incoming). * If the Observer calls * ChannelDispatchOperation::claim() or * ChannelDispatchOperation::handleWith() on this * object, it must be careful to avoid deadlock, since * these methods cannot return until the observer has * returned from observeChannels(). * \param requestsSatisfied The requests satisfied by these channels. * \param observerInfo Additional information about these channels. */ struct TP_QT_NO_EXPORT AbstractClientApprover::Private { Private(const ChannelClassList &channelFilter) : channelFilter(channelFilter) { } ChannelClassList channelFilter; }; /** * \class AbstractClientApprover * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClientApprover class represents a Telepathy approver. * * Approvers are clients that notify the user that new channels have been * created, and allow the user to accept or reject those channels. * * Approvers can also select which channel handler will be used for the channel, * for instance by offering the user a list of possible handlers rather than * just an accept/reject choice. However, the channel dispatcher must be able to * prioritize possible handlers on its own using some reasonable heuristic, * probably based on user configuration. * * It is possible (and useful) to have an approver and a channel handler in the * same process; this is particularly useful if a channel handler wants to claim * responsibility for particular channels itself. * * All approvers are notified simultaneously. For instance, in a desktop system, * there might be one approver that displays a notification-area icon, one that * is part of a contact list window and highlights contacts there, and one that * is part of a full-screen media player. * * Any approver can approve the handling of a channel dispatch operation with a * particular channel handler by calling the * ChannelDispatchOperation::handleWith() method. Approvers can also attempt to * claim channels by calling ChannelDispatchOperation::claim(). If this * succeeds, the approver may handle the channels itself (if it is also a * handler), or close the channels in order to reject them. * * Approvers wishing to reject channels should call the * ChannelDispatchOperation::claim() method, then (if it succeeds) close the * channels in any way they see fit. * * The first approver to reply gets its decision acted on; any other approvers * that reply at approximately the same time will get an error, indicating that * the channel has already been dealt with. * * Approvers should usually prompt the user and ask for confirmation, rather * than dispatching the channel to a handler straight away. * * To become an approver one should inherit AbstractClientApprover and * implement the pure virtual addDispatchOperation() method. After that the * object representing the approver must be registered using * ClientRegistrar::registerClient(). * * When new channels in which the approver has registered an interest are * ready to be dispatched, the method addDispatchOperation() is invoked. * The new channels are represented by a ChannelDispatchOperation object, which * is passed to the addDispatchOperation() method. * All approvers are notified simultaneously. * * \section approver_usage_sec Usage * * \subsection approver_create_sec Implementing an approver * * \code * * class MyApprover : public AbstractClientApprover * { * public: * MyApprover(const ChannelClassSpecSpecList &channelFilter); * ~MyApprover() { } * * void addDispatchOperation(const MethodInvocationContextPtr<> &context, * const ChannelDispatchOperationPtr &dispatchOperation); * }; * * MyApprover::MyApprover(const ChannelClassSpecList &channelFilter) * : AbstractClientApprover(channelFilter) * { * } * * void MyApprover::addDispatchOperation( * const MethodInvocationContextPtr<> &context, * const ChannelDispatchOperationPtr &dispatchOperation) * { * // do something with dispatchOperation * * context->setFinished(); * } * * \endcode * * \subsection approver_register_sec Registering an approver * * \code * * ClientRegistrar registrar = ClientRegistrar::create(); * AbstractClientPtr approver = AbstractClientPtr::dynamicCast( * SharedPtr(new MyApprover( * ChannelClassSpecList() << ChannelClassSpec::textChat()))); * registrar->registerClient(approver, "myapprover"); * * \endcode * * \sa AbstractClient */ /** * Construct a new AbstractClientApprover object. * * \param channelFilter A specification of the channels in which this approver * is interested. */ AbstractClientApprover::AbstractClientApprover( const ChannelClassSpecList &channelFilter) : mPriv(new Private(channelFilter.bareClasses())) { } /** * Class destructor. */ AbstractClientApprover::~AbstractClientApprover() { delete mPriv; } /** * Return the property containing a specification of the channels that this * channel approver is interested. The addDispatchOperation() method should be * called by the channel dispatcher whenever at least one of the channels in * a channel dispatch operation matches this description. * * This method works in exactly the same way as the * AbstractClientObserver::observerChannelFilter() method. In particular, the * returned value cannot change while the handler process continues to own the * corresponding client bus name. * * In the .client file, represented in the same way as observer channel * filter, the group is #TP_QT_IFACE_CLIENT_APPROVER followed by * ApproverChannelFilter instead. * * \return A specification of the channels that this channel approver is * interested as a list of ChannelClassSpec objects. * \sa addDispatchOperation() */ ChannelClassSpecList AbstractClientApprover::approverFilter() const { return ChannelClassSpecList(mPriv->channelFilter); } /** * \fn void AbstractClientApprover::addDispatchOperation( * const MethodInvocationContextPtr<> &context, * const ChannelDispatchOperationPtr &dispatchOperation); * * Called by the channel dispatcher when a dispatch operation in which the * approver has registered an interest is created, or when the approver starts * up while such channel dispatch operations already exist. * * The received \a context object should be stored until this * method is finished processing and then MethodInvocationContext::setFinished() * or MethodInvocationContext::setFinishedWithError() should be called on the * received \a context object. * * Specialized approvers must reimplement this method. * * \param context A MethodInvocationContextPtr object that must be used to * indicate whether this method finished processing. * \param dispatchOperation The dispatch operation to be processed. */ struct TP_QT_NO_EXPORT AbstractClientHandler::Private { Private(const ChannelClassList &channelFilter, const Capabilities &capabilities, bool wantsRequestNotification) : channelFilter(channelFilter), capabilities(capabilities), wantsRequestNotification(wantsRequestNotification) { } ChannelClassList channelFilter; Capabilities capabilities; bool wantsRequestNotification; }; /** * \class AbstractClientHandler * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClientHandler class represents a Telepathy handler. * * Handlers are the user interface for a channel. They turn an abstract * channel into something the user wants to see, like a text message * stream or an audio and/or video call. * * For its entire lifetime, each channel on a connection known to the channel * dispatcher is either being processed by the channel dispatcher, or being * handled by precisely one handler. * * Because each channel is only handled by one handler, handlers may perform * actions that only make sense to do once, such as acknowledging text messages, * transferring the file, etc. * * When a new incoming channel is offered to approvers by the channel * dispatcher, it also offers the approvers a list of all the running or * activatable handlers whose filter indicates that they are able to handle * the channel. The approvers can choose one of those channel handlers to * handle the channel. * * When a new outgoing channel appears, the channel dispatcher passes it to * an appropriate channel handler automatically. * * To become an handler one should inherit AbstractClientHandler and * implement the pure virtual bypassApproval() and handleChannels() methods. * After that the object representing the handler must be registered using * ClientRegistrar::registerClient(). * * When new channels in which the approver has registered an interest are * ready to be handled, the method handleChannels() is invoked. * * \section handler_usage_sec Usage * * \subsection handler_create_sec Implementing a handler * * \code * * class MyHandler : public AbstractClientHandler * { * public: * MyHandler(const ChannelClassSpecList &channelFilter); * ~MyHandler() { } * * void bypassApproval() const; * * void handleChannels(const MethodInvocationContextPtr<> &context, * const AccountPtr &account, * const ConnectionPtr &connection, * const QList &channels, * const QList &requestsSatisfied, * const QDateTime &userActionTime, * const AbstractClientHandler::HandlerInfo &handlerInfo); * }; * * MyHandler::MyHandler(const ChannelClassSpecList &channelFilter) * : AbstractClientHandler(channelFilter) * { * } * * void MyHandler::bypassApproval() const * { * return false; * } * * void MyHandler::handleChannels(const MethodInvocationContextPtr<> &context, * const AccountPtr &account, * const ConnectionPtr &connection, * const QList &channels, * const QList &requestsSatisfied, * const QDateTime &userActionTime, * const AbstractClientHandler::HandlerInfo &handlerInfo) * { * // do something * * context->setFinished(); * } * * \endcode * * \subsection handler_register_sec Registering a handler * * \code * * ClientRegistrar registrar = ClientRegistrar::create(); * AbstractClientPtr handler = AbstractClientPtr::dynamicCast( * SharedPtr(new MyHandler( * ChannelClassSpecList() << ChannelClassSpec::textChat()))); * registrar->registerClient(handler, "myhandler"); * * \endcode * * \sa AbstractClient */ /** * \class AbstractClientHandler::Capabilities * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClientHandler::Capabilities class provides a wrapper * around the capabilities of a handler. * * \sa AbstractClientHandler */ /** * \class AbstractClientHandler::HandlerInfo * \ingroup clientclient * \headerfile TelepathyQt/abstract-client.h * * \brief The AbstractClientHandler::HandlerInfo class provides a wrapper * around the additional info about the channels passed to handleChannels(). * * \sa AbstractClientHandler */ struct TP_QT_NO_EXPORT AbstractClientHandler::Capabilities::Private : public QSharedData { Private(const QStringList &tokens) : tokens(QSet::fromList(tokens)) {} QSet tokens; }; AbstractClientHandler::Capabilities::Capabilities(const QStringList &tokens) : mPriv(new Private(tokens)) { } AbstractClientHandler::Capabilities::Capabilities(const Capabilities &other) : mPriv(other.mPriv) { } AbstractClientHandler::Capabilities::~Capabilities() { } AbstractClientHandler::Capabilities &AbstractClientHandler::Capabilities::operator=( const Capabilities &other) { if (this == &other) { return *this; } mPriv = other.mPriv; return *this; } bool AbstractClientHandler::Capabilities::hasToken(const QString &token) const { return mPriv->tokens.contains(token); } void AbstractClientHandler::Capabilities::setToken(const QString &token) { mPriv->tokens.insert(token); } void AbstractClientHandler::Capabilities::unsetToken(const QString &token) { mPriv->tokens.remove(token); } QStringList AbstractClientHandler::Capabilities::allTokens() const { return mPriv->tokens.toList(); } struct TP_QT_NO_EXPORT AbstractClientHandler::HandlerInfo::Private : public QSharedData { Private(const QVariantMap &info) : info(info) {} QVariantMap info; }; AbstractClientHandler::HandlerInfo::HandlerInfo(const QVariantMap &info) : mPriv(new Private(info)) { } AbstractClientHandler::HandlerInfo::HandlerInfo(const HandlerInfo &other) : mPriv(other.mPriv) { } AbstractClientHandler::HandlerInfo::~HandlerInfo() { } AbstractClientHandler::HandlerInfo &AbstractClientHandler::HandlerInfo::operator=( const HandlerInfo &other) { if (this == &other) { return *this; } mPriv = other.mPriv; return *this; } QVariantMap AbstractClientHandler::HandlerInfo::allInfo() const { return mPriv->info; } /** * Construct a new AbstractClientHandler object. * * \param channelFilter A specification of the channels in which this observer * is interested. * \param wantsRequestNotification Whether this handler wants to receive channel * requests notification via addRequest() and * removeRequest(). * \param capabilities The set of additional capabilities supported by this * handler. */ AbstractClientHandler::AbstractClientHandler(const ChannelClassSpecList &channelFilter, const Capabilities &capabilities, bool wantsRequestNotification) : mPriv(new Private(channelFilter.bareClasses(), capabilities, wantsRequestNotification)) { } /** * Class destructor. */ AbstractClientHandler::~AbstractClientHandler() { delete mPriv; } /** * Return the property containing a specification of the channels that this * channel handler can deal with. It will be offered to approvers as a potential * channel handler for bundles that contain only suitable channels, or for * suitable channels that must be handled separately. * * This method works in exactly the same way as the * AbstractClientObserver::observerChannelFilter() method. In particular, the * returned value cannot change while the handler process continues to own the * corresponding client bus name. * * In the .client file, represented in the same way as observer channel * filter, the group is #TP_QT_IFACE_CLIENT_HANDLER suffixed * by HandlerChannelFilter instead. * * \return A specification of the channels that this channel handler can deal * with as a list of ChannelClassSpec objects. */ ChannelClassSpecList AbstractClientHandler::handlerFilter() const { return ChannelClassSpecList(mPriv->channelFilter); } /** * Return the set of additional capabilities supported by this handler. * * \return The capabilities as an AbstractClientHandler::Capabilities object. */ AbstractClientHandler::Capabilities AbstractClientHandler::handlerCapabilities() const { return mPriv->capabilities; } /** * \fn bool AbstractClientHandler::bypassApproval() const; * * Return whether channels destined for this handler are automatically * handled, without invoking approvers. * * \return \c true if automatically handled, \c false otherwise. */ /** * \fn void AbstractClientHandler::handleChannels( * const MethodInvocationContextPtr<> &context, * const AccountPtr &account, * const ConnectionPtr &connection, * const QList &channels, * const QList &requestsSatisfied, * const QDateTime &userActionTime, * const HandlerInfo &handlerInfo); * * Called by the channel dispatcher when this handler should handle these * channels, or when this handler should present channels that it is already * handling to the user (e.g. bring them into the foreground). * * Clients are expected to know what channels they're already handling, and * which channel object corresponds to which window or tab. * * After handleChannels() replies successfully by calling * MethodInvocationContext::setFinished(), the client process is considered * to be responsible for the channel until it its unique name disappears from * the bus. * * If a process has multiple client bus names - some temporary and some * long-lived - and drops one of the temporary bus names in order to reduce the * set of channels that it will handle, any channels that it is already handling * will remain unaffected. * * The received \a context object should be stored until this * method is finished processing and then MethodInvocationContext::setFinished() * or MethodInvocationContext::setFinishedWithError() should be called on the * received \a context object. * * Specialized handlers must reimplement this method. * * \param context A MethodInvocationContextPtr object that must be used to * indicate whether this method finished processing. * \param account The account with which the channels are associated. * \param connection The connection with which the channels are associated. * \param channels The channels to be handled. * \param requestsSatisfied The requests satisfied by these channels. * \param userActionTime The time at which user action occurred, or 0 if this * channel is to be handled for some reason not involving * user action. Handlers should use this for * focus-stealing prevention, if applicable. * \param handlerInfo Additional information about these channels. */ /** * Return whether this handler wants to receive notification of channel requests * via addRequest() and removeRequest(). * * This property is set by the constructor and cannot be changed after that. * * \return \c true if receiving channel requests notification is desired, * \c false otherwise. */ bool AbstractClientHandler::wantsRequestNotification() const { return mPriv->wantsRequestNotification; } /** * Called by the channel dispatcher to indicate that channels have been * requested, and that if the request is successful, they will probably be * handled by this handler. * * This allows the UI to start preparing to handle the channels in advance * (e.g. render a window with an "in progress" message), improving perceived * responsiveness. * * If the request succeeds and is given to the expected handler, the * requestsSatisfied parameter to handleChannels() can be used to match the * channel to a previous addRequest() call. * * This lets the UI direct the channels to the window that it already opened. * * If the request fails, the expected handler is notified by the channel * dispatcher calling its removeRequest() method. * * This lets the UI close the window or display the error. * * The channel dispatcher will attempt to ensure that handleChannels() is called * on the same handler that received addRequest(). If that isn't possible, * removeRequest() will be called on the handler that previously received * addRequest(), with the special error #TP_QT_ERROR_NOT_YOURS, which * indicates that some other handler received the channel instead. * * Expected handling is for the UI to close the window it previously opened. * * Specialized handlers that want to be notified of newly requested channel * should reimplement this method. * * \param channelRequest The newly created channel request. * \sa removeRequest() */ void AbstractClientHandler::addRequest( const ChannelRequestPtr &channelRequest) { // do nothing, subclasses that want to listen requests should reimplement // this method } /** * Called by the ChannelDispatcher to indicate that a request previously passed * to addRequest() has failed and should be disregarded. * * Specialized handlers that want to be notified of removed channel requests * should reimplement this method. * * \param channelRequest The channel request that failed. * \param errorName The name of the D-Bus error with which the request failed. * If this is #TP_QT_ERROR_NOT_YOURS, this indicates that * the request succeeded, but all the resulting channels were * given to some other handler. * \param errorMessage Any message supplied with the D-Bus error. */ void AbstractClientHandler::removeRequest( const ChannelRequestPtr &channelRequest, const QString &errorName, const QString &errorMessage) { // do nothing, subclasses that want to listen requests should reimplement // this method } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-server.cpp0000644000175100017520000012460612530423576024437 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/stream-tube-server-internal.h" #include "TelepathyQt/_gen/stream-tube-server.moc.hpp" #include "TelepathyQt/_gen/stream-tube-server-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/simple-stream-tube-handler.h" #include #include #include #include #include #include #include namespace Tp { /** * \class StreamTubeServer::ParametersGenerator * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-server.h * * \brief The StreamTubeServer::ParametersGenerator abstract interface allows sending a different * set of parameters with each tube offer. * * %Tube parameters are arbitrary data sent with the tube offer, which can be retrieved in the * receiving end with IncomingStreamTubeChannel::parameters(). They can be used to transfer * e.g. session identification information, authentication credentials or alike, for bootstrapping * the protocol used for communicating over the tube. * * For usecases where the parameters don't need to change between each tube, just passing a fixed * set of parameters to a suitable StreamTubeServer::exportTcpSocket() overload is usually more * convenient than implementing a ParametersGenerator. Note that StreamTubeServer::exportTcpSocket() * can be called multiple times to change the parameters for future tubes when e.g. configuration * settings have been changed, so a ParametersGenerator only needs to be implemented if each and * every tube must have a different set of parameters. */ /** * \fn QVariantMap StreamTubeServer::ParametersGenerator::nextParameters(const AccountPtr &, const * OutgoingStreamTubeChannelPtr &, const ChannelRequestHints &) * * Return the parameters to send when offering the given \a tube. * * \param account The account from which the tube originates. * \param tube The tube channel which is going to be offered by the StreamTubeServer. * \param hints The hints associated with the request that led to the creation of this tube, if any. * * \return Parameters to send with the offer, or an empty QVariantMap if none are needed for this * tube. */ /** * \fn StreamTubeServer::ParametersGenerator::~ParametersGenerator * * Class destructor. Protected, because StreamTubeServer never deletes a ParametersGenerator passed * to it. */ class TP_QT_NO_EXPORT FixedParametersGenerator : public StreamTubeServer::ParametersGenerator { public: FixedParametersGenerator(const QVariantMap ¶ms) : mParams(params) {} QVariantMap nextParameters(const AccountPtr &, const OutgoingStreamTubeChannelPtr &, const ChannelRequestHints &) { return mParams; } private: QVariantMap mParams; }; struct TP_QT_NO_EXPORT StreamTubeServer::RemoteContact::Private : public QSharedData { // empty placeholder for now }; /** * \class StreamTubeServer::RemoteContact * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-server.h * * \brief The StreamTubeServer::RemoteContact class represents a contact from which a socket * connection to our exported socket originates. */ /** * Constructs a new invalid RemoteContact instance. */ StreamTubeServer::RemoteContact::RemoteContact() { // invalid instance } /** * Constructs a new RemoteContact for the given \a contact object from the given \a account. * * \param account A pointer to the account which this contact can be reached through. * \param contact A pointer to the contact object. */ StreamTubeServer::RemoteContact::RemoteContact( const AccountPtr &account, const ContactPtr &contact) : QPair(account, contact), mPriv(new Private) { } /** * Copy constructor. */ StreamTubeServer::RemoteContact::RemoteContact( const RemoteContact &other) : QPair(other.account(), other.contact()), mPriv(other.mPriv) { } /** * Class destructor. */ StreamTubeServer::RemoteContact::~RemoteContact() { // mPriv deleted automatically } /** * Assignment operator. */ StreamTubeServer::RemoteContact &StreamTubeServer::RemoteContact::operator=( const RemoteContact &other) { if (&other == this) { return *this; } first = other.account(); second = other.contact(); mPriv = other.mPriv; return *this; } /** * \fn bool StreamTubeServer::RemoteContact::isValid() const * * Return whether or not the contact is valid or is just the null object created using the default * constructor. * * \return \c true if valid, \c false otherwise. */ /** * \fn AccountPtr StreamTubeServer::RemoteContact::account() const * * Return the account through which the contact can be reached. * * \return A pointer to the account object. */ /** * \fn ContactPtr StreamTubeServer::RemoteContact::contact() const * * Return the actual contact object. * * \return A pointer to the object. */ struct TP_QT_NO_EXPORT StreamTubeServer::Tube::Private : public QSharedData { // empty placeholder for now }; /** * \class StreamTubeServer::Tube * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-server.h * * \brief The StreamTubeServer::Tube class represents a tube being handled by the server. */ /** * Constructs a new invalid Tube instance. */ StreamTubeServer::Tube::Tube() { // invalid instance } /** * Constructs a Tube instance for the given tube \a channel originating from the given \a account. * * \param account A pointer to the account object. * \param channel A pointer to the tube channel object. */ StreamTubeServer::Tube::Tube( const AccountPtr &account, const OutgoingStreamTubeChannelPtr &channel) : QPair(account, channel), mPriv(new Private) { } /** * Copy constructor. */ StreamTubeServer::Tube::Tube( const Tube &other) : QPair(other.account(), other.channel()), mPriv(other.mPriv) { } /** * Class destructor. */ StreamTubeServer::Tube::~Tube() { // mPriv deleted automatically } /** * Assignment operator. */ StreamTubeServer::Tube &StreamTubeServer::Tube::operator=( const Tube &other) { if (&other == this) { return *this; } first = other.account(); second = other.channel(); mPriv = other.mPriv; return *this; } /** * \fn bool StreamTubeServer::Tube::isValid() const * * Return whether or not the tube is valid or is just the null object created using the default * constructor. * * \return \c true if valid, \c false otherwise. */ /** * \fn AccountPtr StreamTubeServer::Tube::account() const * * Return the account from which the tube originates. * * \return A pointer to the account object. */ /** * \fn OutgoingStreamTubeChannelPtr StreamTubeServer::Tube::channel() const * * Return the actual tube channel. * * \return A pointer to the channel. */ struct StreamTubeServer::Private { Private(const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &maybeClientName, bool monitorConnections) : registrar(registrar), handler(SimpleStreamTubeHandler::create(p2pServices, roomServices, true, monitorConnections)), clientName(maybeClientName), isRegistered(false), exportedPort(0), generator(0) { if (clientName.isEmpty()) { clientName = QString::fromLatin1("TpQtSTubeServer_%1_%2") .arg(registrar->dbusConnection().baseService() .replace(QLatin1Char(':'), QLatin1Char('_')) .replace(QLatin1Char('.'), QLatin1Char('_'))) .arg((quintptr) this, 0, 16); } } void ensureRegistered() { if (isRegistered) { return; } debug() << "Register StreamTubeServer with name " << clientName; if (registrar->registerClient(handler, clientName)) { isRegistered = true; } else { warning() << "StreamTubeServer" << clientName << "registration failed"; } } ClientRegistrarPtr registrar; SharedPtr handler; QString clientName; bool isRegistered; QHostAddress exportedAddr; quint16 exportedPort; ParametersGenerator *generator; QScopedPointer fixedGenerator; QHash tubes; }; StreamTubeServer::TubeWrapper::TubeWrapper(const AccountPtr &acc, const OutgoingStreamTubeChannelPtr &tube, const QHostAddress &exportedAddr, quint16 exportedPort, const QVariantMap ¶ms, StreamTubeServer *parent) : QObject(parent), mAcc(acc), mTube(tube) { connect(tube->offerTcpSocket(exportedAddr, exportedPort, params), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onTubeOffered(Tp::PendingOperation*))); connect(tube.data(), SIGNAL(newConnection(uint)), SLOT(onNewConnection(uint))); connect(tube.data(), SIGNAL(connectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString))); } void StreamTubeServer::TubeWrapper::onTubeOffered(Tp::PendingOperation *op) { emit offerFinished(this, op); } void StreamTubeServer::TubeWrapper::onNewConnection(uint conn) { emit newConnection(this, conn); } void StreamTubeServer::TubeWrapper::onConnectionClosed(uint conn, const QString &error, const QString &message) { emit connectionClosed(this, conn, error, message); } /** * \class StreamTubeServer * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-server.h * * \brief The StreamTubeServer class is a Handler implementation for outgoing %Stream %Tube channels, * allowing an application to easily export a TCP network server over Telepathy Tubes without * worrying about the channel dispatching details. * * Telepathy Tubes is a technology for connecting arbitrary applications together through the IM * network (and sometimes with direct peer-to-peer connections), such that issues like firewall/NAT * traversal are automatically handled. Stream Tubes in particular offer properties similar to * SOCK_STREAM sockets. The StreamTubeServer class exports such a bytestream socket \b server over * the tubes it \em handles as a Telepathy Handler %Client; the StreamTubeClient class is the * counterpart, enabling TCP/UNIX socket clients to connect to services from such exported servers * offered to them via tubes. * * Both peer-to-peer (\c TargetHandleType == \ref HandleTypeContact) and group (\c TargetHandleType * == \ref HandleTypeRoom) channels are supported, and it's possible to specify the tube services to * handle for each separately. It is also possible to not advertise handling capability for ANY tube * service; instead just using the StreamTubeServer to handle tubes on an one-off basis by passing * its corresponding %Client service name as the \a preferredHandler when requesting tubes via the * Account::createStreamTube() methods (or equivalent). * * %Connection monitoring allows associating incoming connections on the exported server socket with * the corresponding remote contacts. This allows an application to show the details of and/or * initiate further communication with the remote contacts, without considering the actual tube * channels the connections are being made through at all (in particular, their * Channel::targetContact() accessor for peer-to-peer and the * OutgoingStreamTubeChannel::connectionsForSourceAddresses() accessor for group tubes). * * Enabling connection monitoring adds a small overhead and latency to handling each incoming tube * and signaling each new incoming connection over them, though, so use it only when needed. * Additionally, some protocol backends or environments they're running in might not support the * ::SocketAccessControlPort mechanism, in which case the source address won't be reported for * connections through them. Even in this case, the remote contacts can be associated by accepting * one incoming socket connection at a time, and waiting for the corresponding contact to be * signaled (although its source address will be invalid, it's the only possibility given its the * only accepted connection). However, it's not necessary to do this e.g. with the Gabble XMPP * backend, because it fully supports the required mechanism. * * A service activated Handler can be implemented using StreamTubeServer by passing a predefined \a * clientName manually to the chosen create() method, and installing Telepathy \c .client and D-Bus * \c .service files declaring the implemented tube services as channel classes and a path to the * executable. If this is not needed, the \a clientName can be omitted, in which case a random * unique client name is generated and used instead. * * StreamTubeServer shares Account, Connection and Channel proxies and Contact objects with the * rest of the application as long as a reference to the AccountManager, ClientRegistrar, or the * factories used elsewhere is passed to the create() method. A stand-alone tube service Handler can * get away without passing these however, or just passing select factories to make the desired * features prepared and subclasses employed for these objects for their own convenience. * * Whichever method is used, the ChannelFactory (perhaps indirectly) given must construct * OutgoingStreamTubeChannel instances or subclasses thereof for all channel classes corresponding * to the tube services to handle. This is the default; overriding it without obeying these * constraints using ChannelFactory::setSubclassForOutgoingStreamTubes() or the related methods * for room tubes prevents StreamTubeServer from operating correctly. * * \todo Coin up a small Python script or alike to easily generate the .client and .service files. * (fd.o #41614) * \todo Support exporting Unix sockets as well. (fd.o #41615) */ /** * Create a new StreamTubeServer, which will register itself on the session bus using an internal * ClientRegistrar and use the given factories. * * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. */ StreamTubeServerPtr StreamTubeServer::create( const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return create( QDBusConnection::sessionBus(), accountFactory, connectionFactory, channelFactory, contactFactory, p2pServices, roomServices, clientName, monitorConnections); } /** * Create a new StreamTubeServer, which will register itself on the given \a bus using an internal * ClientRegistrar and use the given factories. * * The factories must all be created for the given \a bus. * * \param bus Connection to the bus to register on. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. */ StreamTubeServerPtr StreamTubeServer::create( const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections) { return create( ClientRegistrar::create( bus, accountFactory, connectionFactory, channelFactory, contactFactory), p2pServices, roomServices, clientName, monitorConnections); } /** * Create a new StreamTubeServer, which will register itself on the bus of and share objects with * the given \a accountManager, creating an internal ClientRegistrar. * * \param accountManager A pointer to the account manager to link up with. * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. */ StreamTubeServerPtr StreamTubeServer::create( const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections) { return create( accountManager->dbusConnection(), accountManager->accountFactory(), accountManager->connectionFactory(), accountManager->channelFactory(), accountManager->contactFactory(), p2pServices, roomServices, clientName, monitorConnections); } /** * Create a new StreamTubeServer, which will register itself on the bus of and using the given * client \a registrar, and share objects with it. * * \param registrar The client registrar to use. * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. */ StreamTubeServerPtr StreamTubeServer::create( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections) { return StreamTubeServerPtr( new StreamTubeServer(registrar, p2pServices, roomServices, clientName, monitorConnections)); } StreamTubeServer::StreamTubeServer( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections) : mPriv(new Private(registrar, p2pServices, roomServices, clientName, monitorConnections)) { connect(mPriv->handler.data(), SIGNAL(invokedForTube( Tp::AccountPtr, Tp::StreamTubeChannelPtr, QDateTime, Tp::ChannelRequestHints)), SLOT(onInvokedForTube( Tp::AccountPtr, Tp::StreamTubeChannelPtr, QDateTime, Tp::ChannelRequestHints))); } /** * Class destructor. */ StreamTubeServer::~StreamTubeServer() { if (isRegistered()) { mPriv->registrar->unregisterClient(mPriv->handler); } delete mPriv; } /** * Return the client registrar used by the server to register itself as a Handler client. * * This is the registrar originally passed to * create(const ClientRegistrarPtr &, const QStringList &, const QStringList &, const QString &, bool) * if that was used, and an internally constructed one otherwise. In any case, it can be used to * e.g. register further clients like any other ClientRegistrar. * * \return A pointer to the registrar. */ ClientRegistrarPtr StreamTubeServer::registrar() const { return mPriv->registrar; } /** * Return the Telepathy %Client name of the server. * * \return The name, without the \c org.freedesktop.Telepathy.Client. prefix of the full D-Bus service name. */ QString StreamTubeServer::clientName() const { return mPriv->clientName; } /** * Return whether the server has been successfully registered or not. * * Registration is attempted, at the latest, when a socket is first exported using exportTcpSocket(). * It can fail e.g. because the connection to the bus has failed, or a predefined \a clientName has * been passed to create(), and a %Client with the same name is already registered. Typically, failure * registering would be a fatal error for a stand-alone tube handler, but only a warning event for * an application serving other purposes. In any case, a high-quality user of the API will check the * return value of this accessor after exporting their socket. * * \return \c true if the server has been successfully registered, \c false if not. */ bool StreamTubeServer::isRegistered() const { return mPriv->isRegistered; } /** * Return whether connection monitoring is enabled on this server. * * For technical reasons, connection monitoring can't be enabled when the server is already running, * so there is no corresponding setter method. It has to be enabled by passing \c true as the \a * monitorConnections parameter to the create() method. * * If connection monitoring isn't enabled, newTcpConnection() and tcpConnectionClosed() won't be * emitted and tcpConnections() won't be populated. * * \return \c true if monitoring is enabled, \c false if not. */ bool StreamTubeServer::monitorsConnections() const { return mPriv->handler->monitorsConnections(); } /** * Return the host address and port of the currently exported TCP socket, if any. * * QHostAddress::Null is reported as the address and 0 as the port if no TCP socket has yet been * successfully exported. * * \return The host address and port values in a pair structure. */ QPair StreamTubeServer::exportedTcpSocketAddress() const { return qMakePair(mPriv->exportedAddr, mPriv->exportedPort); } /** * Return the fixed parameters, if any, which are sent along when offering the exported socket on * all handled tubes. * * To prevent accidentally leaving the current parameters to be sent when offering a different * socket, or vice versa, the parameters can only be set together with the socket using * exportTcpSocket(). Parameters often contain sensitive information such as session identifiers or * authentication credentials, which could then be used to maliciously access the service listening * on the other socket. * * If a custom dynamic ParametersGenerator was passed to exportTcpSocket() instead of a set of fixed * parameters, an empty set of parameters is returned. * * \return The parameters in a string-variant map. */ QVariantMap StreamTubeServer::exportedParameters() const { if (!mPriv->generator) { return QVariantMap(); } FixedParametersGenerator *generator = dynamic_cast(mPriv->generator); if (generator) { return generator->nextParameters(AccountPtr(), OutgoingStreamTubeChannelPtr(), ChannelRequestHints()); } else { return QVariantMap(); } } /** * Set the server to offer the socket listening at the given (\a address, \a port) combination as the * local endpoint of tubes handled in the future. * * A fixed set of protocol bootstrapping \a parameters can optionally be set to be sent along with all * tube offers until the next call to exportTcpSocket(). See the ParametersGenerator documentation * for an in-depth description of the parameter transfer mechanism, and a more flexible way to vary * the parameters between each handled tube. * * The handler is registered on the bus at the latest when this method or another exportTcpSocket() * overload is called for the first time, so one should check the return value of isRegistered() at * that point to verify that was successful. * * \param address The listen address of the socket. * \param port The port of the socket. * \param parameters The bootstrapping parameters in a string-value map. */ void StreamTubeServer::exportTcpSocket( const QHostAddress &address, quint16 port, const QVariantMap ¶meters) { if (address.isNull() || port == 0) { warning() << "Attempted to export null TCP socket address or zero port, ignoring"; return; } mPriv->exportedAddr = address; mPriv->exportedPort = port; mPriv->generator = 0; if (!parameters.isEmpty()) { mPriv->fixedGenerator.reset(new FixedParametersGenerator(parameters)); mPriv->generator = mPriv->fixedGenerator.data(); } mPriv->ensureRegistered(); } /** * Set the StreamTubeServer to offer the already listening TCP \a server as the local endpoint of tubes * handled in the future. * * This is just a convenience wrapper around * exportTcpSocket(const QHostAddress &, quint16, const QVariantMap &) to be used when the TCP * server code is implemented using the QtNetwork facilities. * * A fixed set of protocol bootstrapping \a parameters can optionally be set to be sent along with all * tube offers until the next call to exportTcpSocket(). See the ParametersGenerator documentation * for an in-depth description of the parameter transfer mechanism, and a more flexible way to vary * the parameters between each handled tube. * * \param server A pointer to the TCP server. * \param parameters The bootstrapping parameters in a string-value map. */ void StreamTubeServer::exportTcpSocket( const QTcpServer *server, const QVariantMap ¶meters) { if (!server->isListening()) { warning() << "Attempted to export non-listening QTcpServer, ignoring"; return; } if (server->serverAddress() == QHostAddress::Any #if QT_VERSION >= 0x050000 || server->serverAddress() == QHostAddress::AnyIPv4 #endif ) { return exportTcpSocket(QHostAddress::LocalHost, server->serverPort(), parameters); } else if (server->serverAddress() == QHostAddress::AnyIPv6) { return exportTcpSocket(QHostAddress::LocalHostIPv6, server->serverPort(), parameters); } else { return exportTcpSocket(server->serverAddress(), server->serverPort(), parameters); } } /** * Set the server to offer the socket listening at the given \a address - \a port combination as the * local endpoint of tubes handled in the future, sending the parameters from the given \a generator * along with the offers. * * The handler is registered on the bus at the latest when this method or another exportTcpSocket() * overload is called for the first time, so one should check the return value of isRegistered() at * that point to verify that was successful. * * \param address The listen address of the socket. * \param port The port of the socket. * \param generator A pointer to the bootstrapping parameters generator. */ void StreamTubeServer::exportTcpSocket( const QHostAddress &address, quint16 port, ParametersGenerator *generator) { if (address.isNull() || port == 0) { warning() << "Attempted to export null TCP socket address or zero port, ignoring"; return; } mPriv->exportedAddr = address; mPriv->exportedPort = port; mPriv->generator = generator; mPriv->ensureRegistered(); } /** * Set the server to offer the already listening TCP \a server as the local endpoint of tubes * handled in the future, sending the parameters from the given \a generator along with the offers. * * This is just a convenience wrapper around * exportTcpSocket(const QHostAddress &, quint16, ParametersGenerator *) to be used when the TCP * server code is implemented using the QtNetwork facilities. * * \param server A pointer to the TCP server. * \param generator A pointer to the bootstrapping parameters generator. */ void StreamTubeServer::exportTcpSocket( const QTcpServer *server, ParametersGenerator *generator) { if (!server->isListening()) { warning() << "Attempted to export non-listening QTcpServer, ignoring"; return; } if (server->serverAddress() == QHostAddress::Any #if QT_VERSION >= 0x050000 || server->serverAddress() == QHostAddress::AnyIPv4 #endif ) { return exportTcpSocket(QHostAddress::LocalHost, server->serverPort(), generator); } else if (server->serverAddress() == QHostAddress::AnyIPv6) { return exportTcpSocket(QHostAddress::LocalHostIPv6, server->serverPort(), generator); } else { return exportTcpSocket(server->serverAddress(), server->serverPort(), generator); } } /** * Return the tubes currently handled by the server. * * \return A list of Tube structures containing pointers to the account and tube channel for each * tube. */ QList StreamTubeServer::tubes() const { QList tubes; foreach (TubeWrapper *wrapper, mPriv->tubes.values()) { tubes.push_back(Tube(wrapper->mAcc, wrapper->mTube)); } return tubes; } /** * Return the ongoing TCP connections over tubes handled by this server. * * The returned mapping has the connection source addresses as keys and the contacts along with the * accounts which can be used to reach them as values. Connections through protocol backends which * don't support SocketAccessControlPort will be included as the potentially many values for the * null source address key, the pair (\c QHostAddress::Null, 0). * * This is effectively a state recovery accessor corresponding to the change notification signals * newTcpConnection() and tcpConnectionClosed(). * * The mapping is only populated if connection monitoring was requested when creating the server (so * monitorsConnections() returns \c true). * * \return The connections in a mapping with pairs of their source host addresses and ports as keys * and structures containing pointers to the account and remote contacts they're from as values. */ QHash, StreamTubeServer::RemoteContact> StreamTubeServer::tcpConnections() const { QHash, RemoteContact> conns; if (!monitorsConnections()) { warning() << "StreamTubeServer::tcpConnections() used, but connection monitoring is disabled"; return conns; } foreach (const Tube &tube, tubes()) { // Ignore invalid and non-Open tubes to prevent a few useless warnings in corner cases where // a tube is still being opened, or has been invalidated but we haven't processed that event // yet. if (!tube.channel()->isValid() || tube.channel()->state() != TubeChannelStateOpen) { continue; } if (tube.channel()->addressType() != SocketAddressTypeIPv4 && tube.channel()->addressType() != SocketAddressTypeIPv6) { continue; } QHash, uint> srcAddrConns = tube.channel()->connectionsForSourceAddresses(); QHash connContacts = tube.channel()->contactsForConnections(); QPair srcAddr; foreach (srcAddr, srcAddrConns.keys()) { ContactPtr contact = connContacts.take(srcAddrConns.value(srcAddr)); conns.insert(srcAddr, RemoteContact(tube.account(), contact)); } // The remaining values in our copy of connContacts are those which didn't have a // corresponding source address, probably because the service doesn't properly implement // Port AC foreach (const ContactPtr &contact, connContacts.values()) { // Insert them with an invalid source address as the key conns.insertMulti(qMakePair(QHostAddress(QHostAddress::Null), quint16(0)), RemoteContact(tube.account(), contact)); } } return conns; } void StreamTubeServer::onInvokedForTube( const AccountPtr &acc, const StreamTubeChannelPtr &tube, const QDateTime &time, const ChannelRequestHints &hints) { Q_ASSERT(isRegistered()); // our SSTH shouldn't be receiving any channels unless it's registered Q_ASSERT(tube->isRequested()); Q_ASSERT(tube->isValid()); // SSTH won't emit invalid tubes OutgoingStreamTubeChannelPtr outgoing = OutgoingStreamTubeChannelPtr::qObjectCast(tube); if (outgoing) { emit tubeRequested(acc, outgoing, time, hints); } else { warning() << "The ChannelFactory used by StreamTubeServer must construct" << "OutgoingStreamTubeChannel subclasses for Requested=true StreamTubes"; tube->requestClose(); return; } if (!mPriv->tubes.contains(tube)) { debug().nospace() << "Offering socket " << mPriv->exportedAddr << ":" << mPriv->exportedPort << " on tube " << tube->objectPath(); QVariantMap params; if (mPriv->generator) { params = mPriv->generator->nextParameters(acc, outgoing, hints); } Q_ASSERT(!mPriv->exportedAddr.isNull() && mPriv->exportedPort != 0); TubeWrapper *wrapper = new TubeWrapper(acc, outgoing, mPriv->exportedAddr, mPriv->exportedPort, params, this); connect(wrapper, SIGNAL(offerFinished(TubeWrapper*,Tp::PendingOperation*)), SLOT(onOfferFinished(TubeWrapper*,Tp::PendingOperation*))); connect(tube.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onTubeInvalidated(Tp::DBusProxy*,QString,QString))); if (monitorsConnections()) { connect(wrapper, SIGNAL(newConnection(TubeWrapper*,uint)), SLOT(onNewConnection(TubeWrapper*,uint))); connect(wrapper, SIGNAL(connectionClosed(TubeWrapper*,uint,QString,QString)), SLOT(onConnectionClosed(TubeWrapper*,uint,QString,QString))); } mPriv->tubes.insert(outgoing, wrapper); } } void StreamTubeServer::onOfferFinished( TubeWrapper *wrapper, Tp::PendingOperation *op) { OutgoingStreamTubeChannelPtr tube = wrapper->mTube; if (op->isError()) { warning() << "Offer() failed, closing tube" << tube->objectPath() << '-' << op->errorName() << ':' << op->errorMessage(); if (wrapper->mTube->isValid()) { wrapper->mTube->requestClose(); } wrapper->mTube->disconnect(this); emit tubeClosed(wrapper->mAcc, wrapper->mTube, op->errorName(), op->errorMessage()); mPriv->tubes.remove(wrapper->mTube); wrapper->deleteLater(); } else { debug() << "Tube" << tube->objectPath() << "offered successfully"; } } void StreamTubeServer::onTubeInvalidated( Tp::DBusProxy *proxy, const QString &error, const QString &message) { OutgoingStreamTubeChannelPtr tube(qobject_cast(proxy)); Q_ASSERT(!tube.isNull()); TubeWrapper *wrapper = mPriv->tubes.value(tube); if (!wrapper) { // Offer finish with error already removed it return; } debug() << "Tube" << tube->objectPath() << "invalidated with" << error << ':' << message; emit tubeClosed(wrapper->mAcc, wrapper->mTube, error, message); mPriv->tubes.remove(tube); delete wrapper; } void StreamTubeServer::onNewConnection( TubeWrapper *wrapper, uint conn) { Q_ASSERT(monitorsConnections()); if (wrapper->mTube->addressType() == SocketAddressTypeIPv4 || wrapper->mTube->addressType() == SocketAddressTypeIPv6) { QHash, uint> srcAddrConns = wrapper->mTube->connectionsForSourceAddresses(); QHash connContacts = wrapper->mTube->contactsForConnections(); QPair srcAddr = srcAddrConns.key(conn); emit newTcpConnection(srcAddr.first, srcAddr.second, wrapper->mAcc, connContacts.value(conn), wrapper->mTube); } else { // No UNIX socket should ever have been offered yet Q_ASSERT(false); } } void StreamTubeServer::onConnectionClosed( TubeWrapper *wrapper, uint conn, const QString &error, const QString &message) { Q_ASSERT(monitorsConnections()); if (wrapper->mTube->addressType() == SocketAddressTypeIPv4 || wrapper->mTube->addressType() == SocketAddressTypeIPv6) { QHash, uint> srcAddrConns = wrapper->mTube->connectionsForSourceAddresses(); QHash connContacts = wrapper->mTube->contactsForConnections(); QPair srcAddr = srcAddrConns.key(conn); emit tcpConnectionClosed(srcAddr.first, srcAddr.second, wrapper->mAcc, connContacts.value(conn), error, message, wrapper->mTube); } else { // No UNIX socket should ever have been offered yet Q_ASSERT(false); } } /** * \fn void StreamTubeServer::tubeRequested(const AccountPtr &account, const * OutgoingStreamTubeChannelPtr &tube, const QDateTime &userActionTime, const ChannelRequestHints * &hints) * * Emitted when a tube has been requested for one of our services, and we've began handling it. * * This is emitted before invoking the ParametersGenerator, if any, for the tube. * * \param account A pointer to the account from which the tube was requested from. * \param tube A pointer to the actual tube channel. * \param userActionTime The time the request occurred at, if it was an user action. Should be used * for focus stealing prevention. * \param hints The hints passed to the request, if any. */ /** * \fn void StreamTubeServer::tubeClosed(const AccountPtr &account, const * OutgoingStreamTubeChannelPtr &tube, const QString &error, const QString &message) * * Emitted when a tube we've been handling (previously announced with tubeRequested()) has * encountered an error or has otherwise been closed from further communication. * * \param account A pointer to the account from which the tube was requested from. * \param tube A pointer to the actual tube channel. * \param error The D-Bus error name corresponding to the reason for the closure. * \param message A freeform debug message associated with the error. */ /** * \fn void StreamTubeServer::newTcpConnection(const QHostAddress &sourceAddress, quint16 * sourcePort, const AccountPtr &account, const ContactPtr &contact, const * OutgoingStreamTubeChannelPtr &tube) * * Emitted when we have picked up a new TCP connection to the (current or previous) exported server * socket. This can be used to associate connections the protocol backend relays to the exported * socket with the remote contact who originally initiated them in the other end of the tube. * * This is only emitted if connection monitoring was enabled when creating the StreamTubeServer. * Additionally, if the protocol backend the connection is from doesn't support the * ::SocketAccessControlPort mechanism, the source address and port will always be invalid. * * \param sourceAddress The source address of the connection, or QHostAddress::Null if it can't be * resolved. * \param sourcePort The source port of the connection, or 0 if it can't be resolved. * \param account A pointer to the account through which the remote contact can be reached. * \param contact A pointer to the remote contact object. * \param tube A pointer to the tube channel through which the connection has been made. */ /** * \fn void StreamTubeServer::tcpConnectionClosed(const QHostAddress &sourceAddress, quint16 * sourcePort, const AccountPtr &account, const ContactPtr &contact, conts QString &error, const * QString &message, const OutgoingStreamTubeChannelPtr &tube) * * Emitted when a TCP connection (previously announced with newTcpConnection()) through one of our * handled tubes has been closed due to an error or by a graceful disconnect (in which case the * error is ::TP_QT_ERROR_DISCONNECTED). * * This is only emitted if connection monitoring was enabled when creating the StreamTubeServer. * Additionally, if the protocol backend the connection is from doesn't support the * ::SocketAccessControlPort mechanism, the source address and port will always be invalid. * * \param sourceAddress The source address of the connection, or QHostAddress::Null if it couldn't * be resolved. * \param sourcePort The source port of the connection, or 0 if it couldn't be resolved. * \param account A pointer to the account through which the remote contact can be reached. * \param contact A pointer to the remote contact object. * \param error The D-Bus error name corresponding to the reason for the closure. * \param message A freeform debug message associated with the error. * \param tube A pointer to the tube channel through which the connection has been made. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/incoming-file-transfer-channel.cpp0000644000175100017520000003263112530423576026647 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/incoming-file-transfer-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT IncomingFileTransferChannel::Private { Private(IncomingFileTransferChannel *parent); ~Private(); // Public object IncomingFileTransferChannel *parent; Client::ChannelTypeFileTransferInterface *fileTransferInterface; QIODevice *output; QTcpSocket *socket; SocketAddressIPv4 addr; qulonglong requestedOffset; qint64 pos; }; IncomingFileTransferChannel::Private::Private(IncomingFileTransferChannel *parent) : parent(parent), fileTransferInterface(parent->interface()), output(0), socket(0), requestedOffset(0), pos(0) { parent->connect(fileTransferInterface, SIGNAL(URIDefined(QString)), SLOT(onUriDefined(QString))); parent->connect(fileTransferInterface, SIGNAL(URIDefined(QString)), SIGNAL(uriDefined(QString))); } IncomingFileTransferChannel::Private::~Private() { } /** * \class IncomingFileTransferChannel * \ingroup clientchannel * \headerfile TelepathyQt/incoming-file-transfer-channel.h * * \brief The IncomingFileTransferChannel class represents a Telepathy channel * of type FileTransfer for incoming file transfers. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * IncomingFileTransferChannel object usable. * * This is currently the same as FileTransferChannel::FeatureCore, but may change to include more. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature IncomingFileTransferChannel::FeatureCore = Feature(QLatin1String(FileTransferChannel::staticMetaObject.className()), 0); // FT::FeatureCore /** * Create a new IncomingFileTransferChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A IncomingFileTransferChannelPtr object pointing to the newly created * IncomingFileTransfer object. */ IncomingFileTransferChannelPtr IncomingFileTransferChannel::create( const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return IncomingFileTransferChannelPtr(new IncomingFileTransferChannel( connection, objectPath, immutableProperties, IncomingFileTransferChannel::FeatureCore)); } /** * Construct a new IncomingFileTransferChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on IncomingFileTransferChannel::FeatureCore. */ IncomingFileTransferChannel::IncomingFileTransferChannel( const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : FileTransferChannel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ IncomingFileTransferChannel::~IncomingFileTransferChannel() { delete mPriv; } /** * Set the URI where the file will be saved. * * This property may be set by the channel handler before calling AcceptFile to inform observers * where the incoming file will be saved. When the URI property is set, the signal * uriDefined() is emitted. * * This method requires IncomingFileTransferChannel::FeatureCore to be ready. * * \param uri The URI where the file will be saved. * \return A PendingOperation object which will emit PendingOperation::finished * when the call has finished. * \sa FileTransferChannel::uri(), uriDefined() */ PendingOperation *IncomingFileTransferChannel::setUri(const QString& uri) { if (!isReady(FileTransferChannel::FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling setUri"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), IncomingFileTransferChannelPtr(this)); } if (state() != FileTransferStatePending) { warning() << "setUri must be called before calling acceptFile"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Cannot set URI after calling acceptFile"), IncomingFileTransferChannelPtr(this)); } return mPriv->fileTransferInterface->setPropertyURI(uri); } /** * Accept a file transfer that's in the #FileTransferStatePending state(). * * The state will change to #FileTransferStateOpen as soon as the transfer * starts. * The given output device should not be closed/destroyed until the state() * changes to #FileTransferStateCompleted or #FileTransferStateCancelled. * * Only the primary handler of a file transfer channel may call this method. * * This method requires IncomingFileTransferChannel::FeatureCore to be ready. * * \param offset The desired offset in bytes where the file transfer should * start. The offset is taken from the beginning of the file. * Specifying an offset of zero will start the transfer from the * beginning of the file. The offset that is actually given in the * initialOffset() method can differ from this argument where the * requested offset is not supported. (For example, some * protocols do not support offsets at all so the initialOffset() * will always be 0.). * \param output A QIODevice object where the data will be written to. The * device should be ready to use when the state() changes to * #FileTransferStateCompleted. * If the transfer is cancelled, state() becomes * #FileTransferStateCancelled, the data in \a output should be * ignored * \return A PendingOperation object which will emit PendingOperation::finished * when the call has finished. * \sa FileTransferChannel::stateChanged(), FileTransferChannel::state(), * FileTransferChannel::stateReason(), FileTransferChannel::initialOffset() */ PendingOperation *IncomingFileTransferChannel::acceptFile(qulonglong offset, QIODevice *output) { if (!isReady(FileTransferChannel::FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling acceptFile"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), IncomingFileTransferChannelPtr(this)); } // let's fail here direclty as we may only have one device to handle if (mPriv->output) { warning() << "File transfer can only be started once in the same " "channel"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("File transfer can only be started once in the same channel"), IncomingFileTransferChannelPtr(this)); } if ((!output->isOpen() && !output->open(QIODevice::WriteOnly)) && (!output->isWritable())) { warning() << "Unable to open IO device for writing"; return new PendingFailure(TP_QT_ERROR_PERMISSION_DENIED, QLatin1String("Unable to open IO device for writing"), IncomingFileTransferChannelPtr(this)); } mPriv->output = output; mPriv->requestedOffset = offset; PendingVariant *pv = new PendingVariant( mPriv->fileTransferInterface->AcceptFile(SocketAddressTypeIPv4, SocketAccessControlLocalhost, QDBusVariant(QVariant(QString())), offset), IncomingFileTransferChannelPtr(this)); connect(pv, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAcceptFileFinished(Tp::PendingOperation*))); return pv; } void IncomingFileTransferChannel::onAcceptFileFinished(PendingOperation *op) { if (op->isError()) { warning() << "Error accepting file transfer " << op->errorName() << ":" << op->errorMessage(); invalidate(op->errorName(), op->errorMessage()); return; } PendingVariant *pv = qobject_cast(op); mPriv->addr = qdbus_cast(pv->result()); debug().nospace() << "Got address " << mPriv->addr.address << ":" << mPriv->addr.port; if (state() == FileTransferStateOpen) { // now we have the address and we are already opened, // connect to host connectToHost(); } } void IncomingFileTransferChannel::connectToHost() { if (isConnected() || mPriv->addr.address.isNull()) { return; } // we already have initialOffsetDefined, called before State became Open, so // let's make sure everything is ok. if (initialOffset() > mPriv->requestedOffset) { // either the CM or the sender is doing something really wrong here, // cancel the transfer. warning() << "InitialOffset bigger than requested offset, " "cancelling the transfer"; cancel(); invalidate(TP_QT_ERROR_INCONSISTENT, QLatin1String("Initial offset bigger than requested offset")); return; } mPriv->pos = initialOffset(); mPriv->socket = new QTcpSocket(this); connect(mPriv->socket, SIGNAL(connected()), SLOT(onSocketConnected())); connect(mPriv->socket, SIGNAL(disconnected()), SLOT(onSocketDisconnected())); connect(mPriv->socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(onSocketError(QAbstractSocket::SocketError))); connect(mPriv->socket, SIGNAL(readyRead()), SLOT(doTransfer())); debug().nospace() << "Connecting to host " << mPriv->addr.address << ":" << mPriv->addr.port << "..."; mPriv->socket->connectToHost(mPriv->addr.address, mPriv->addr.port); } void IncomingFileTransferChannel::onSocketConnected() { debug() << "Connected to host"; setConnected(); doTransfer(); } void IncomingFileTransferChannel::onSocketDisconnected() { debug() << "Disconnected from host"; setFinished(); } void IncomingFileTransferChannel::onSocketError(QAbstractSocket::SocketError error) { setFinished(); } void IncomingFileTransferChannel::doTransfer() { QByteArray data; while (mPriv->socket->bytesAvailable()) { data = mPriv->socket->readAll(); // skip until we reach requetedOffset and start writing from there if ((qulonglong) mPriv->pos < mPriv->requestedOffset) { if ((qulonglong) data.length() <= (mPriv->requestedOffset - mPriv->pos)) { break; } data = data.mid(mPriv->requestedOffset - mPriv->pos); } mPriv->output->write(data); // never fails } mPriv->pos += data.length(); } void IncomingFileTransferChannel::setFinished() { if (isFinished()) { // it shouldn't happen but let's make sure return; } if (mPriv->socket) { disconnect(mPriv->socket, SIGNAL(connected()), this, SLOT(onSocketConnected())); disconnect(mPriv->socket, SIGNAL(disconnected()), this, SLOT(onSocketDisconnected())); disconnect(mPriv->socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onSocketError(QAbstractSocket::SocketError))); disconnect(mPriv->socket, SIGNAL(readyRead()), this, SLOT(doTransfer())); mPriv->socket->close(); } if (mPriv->output) { mPriv->output->close(); } FileTransferChannel::setFinished(); } /** * \fn void IncomingFileTransferChannel::uriDefined(const QString &uri) * * Emitted when the value of uri() changes. * * \param uri The new URI of this file transfer channel. * \sa FileTransferChannel::uri(), setUri() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/manager-file.cpp0000644000175100017520000004512612530423576023231 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/manager-file.h" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/key-file.h" #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ManagerFile::Private { Private(); Private(const QString &cnName); void init(); bool parse(const QString &fileName); bool isValid() const; bool hasParameter(const QString &protocol, const QString ¶mName) const; ParamSpec *getParameter(const QString &protocol, const QString ¶mName); QStringList protocols() const; ParamSpecList parameters(const QString &protocol) const; QVariant valueForKey(const QString ¶m, const QString &dbusSignature); struct ProtocolInfo { ProtocolInfo() {} ProtocolInfo(const ParamSpecList ¶ms, const PresenceSpecList &statuses) : params(params), statuses(statuses) { } ParamSpecList params; QString vcardField; QString englishName; QString iconName; RequestableChannelClassList rccs; PresenceSpecList statuses; AvatarSpec avatarRequirements; QStringList addressableVCardFields; QStringList addressableUriSchemes; }; QString cmName; KeyFile keyFile; QHash protocolsMap; bool valid; }; ManagerFile::Private::Private() : valid(false) { } ManagerFile::Private::Private(const QString &cmName) : cmName(cmName), valid(false) { init(); } void ManagerFile::Private::init() { // TODO: should we cache the configDirs anywhere? QStringList configDirs; QString xdgDataHome = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")); if (xdgDataHome.isEmpty()) { configDirs << QDir::homePath() + QLatin1String("/.local/share/data/telepathy/managers/"); } else { configDirs << xdgDataHome + QLatin1String("/telepathy/managers/"); } QString xdgDataDirsEnv = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")); if (xdgDataDirsEnv.isEmpty()) { configDirs << QLatin1String("/usr/local/share/telepathy/managers/"); configDirs << QLatin1String("/usr/share/telepathy/managers/"); } else { QStringList xdgDataDirs = xdgDataDirsEnv.split(QLatin1Char(':')); foreach (const QString xdgDataDir, xdgDataDirs) { configDirs << xdgDataDir + QLatin1String("/telepathy/managers/"); } } foreach (const QString configDir, configDirs) { QString fileName = configDir + cmName + QLatin1String(".manager"); if (QFile::exists(fileName)) { debug() << "parsing manager file" << fileName; protocolsMap.clear(); if (!parse(fileName)) { warning() << "error parsing manager file" << fileName; continue; } valid = true; return; } } } bool ManagerFile::Private::parse(const QString &fileName) { keyFile.setFileName(fileName); if (keyFile.status() != KeyFile::NoError) { return false; } /* read supported protocols and parameters */ QString protocol; QStringList groups = keyFile.allGroups(); foreach (const QString group, groups) { if (group.startsWith(QLatin1String("Protocol "))) { protocol = group.right(group.length() - 9); keyFile.setGroup(group); ParamSpecList paramSpecList; SimpleStatusSpecMap statuses; QString param; QStringList params = keyFile.keys(); foreach (param, params) { ParamSpec spec; SimpleStatusSpec status; spec.flags = 0; QStringList values = keyFile.value(param).split(QLatin1String(" ")); if (param.startsWith(QLatin1String("param-"))) { spec.name = param.right(param.length() - 6); if (values.length() == 0) { warning() << "param" << spec.name << "set but no signature defined"; return false; } if (spec.name.endsWith(QLatin1String("password"))) { spec.flags |= ConnMgrParamFlagSecret; } spec.signature = values[0]; if (values.contains(QLatin1String("secret"))) { spec.flags |= ConnMgrParamFlagSecret; } if (values.contains(QLatin1String("dbus-property"))) { spec.flags |= ConnMgrParamFlagDBusProperty; } if (values.contains(QLatin1String("required"))) { spec.flags |= ConnMgrParamFlagRequired; } if (values.contains(QLatin1String("register"))) { spec.flags |= ConnMgrParamFlagRegister; } paramSpecList.append(spec); } else if (param.startsWith(QLatin1String("status-"))) { QString statusName = param.right(param.length() - 7); if (values.length() == 0) { warning() << "status" << statusName << "set but no type defined"; return false; } bool ok; status.type = values[0].toUInt(&ok); if (!ok) { warning() << "status" << statusName << "set but type is not an uint"; return false; } if (values.contains(QLatin1String("settable"))) { status.maySetOnSelf = true; } else { status.maySetOnSelf = false; } if (values.contains(QLatin1String("message"))) { status.canHaveMessage = true; } else { status.canHaveMessage = false; } if (statuses.contains(statusName)) { warning() << "status" << statusName << "defined more than once, " "replacing it"; } statuses.insert(statusName, status); } } protocolsMap.insert(protocol, ProtocolInfo(paramSpecList, PresenceSpecList(statuses))); /* now that we have all param-* created, let's find their default values */ foreach (param, params) { if (param.startsWith(QLatin1String("default-"))) { QString paramName = param.right(param.length() - 8); if (!hasParameter(protocol, paramName)) { warning() << "param" << paramName << "has default value set, but not a definition"; continue; } ParamSpec *spec = getParameter(protocol, paramName); spec->flags |= ConnMgrParamFlagHasDefault; /* map based on the param dbus signature, otherwise use * QString */ QVariant value = valueForKey(param, spec->signature); if (value.type() == QVariant::Invalid) { warning() << "param" << paramName << "has invalid signature"; protocolsMap.clear(); return false; } spec->defaultValue = QDBusVariant(value); } } ProtocolInfo &info = protocolsMap[protocol]; info.vcardField = keyFile.value(QLatin1String("VCardField")); info.englishName = keyFile.value(QLatin1String("EnglishName")); if (info.englishName.isEmpty()) { QStringList words = protocol.split(QLatin1Char('-')); for (int i = 0; i < words.size(); ++i) { words[i][0] = words[i].at(0).toUpper(); } info.englishName = words.join(QLatin1String(" ")); } info.iconName = keyFile.value(QLatin1String("Icon")); if (info.iconName.isEmpty()) { info.iconName = QString(QLatin1String("im-%1")).arg(protocol); } QStringList supportedMimeTypes = keyFile.valueAsStringList( QLatin1String("SupportedAvatarMIMETypes")); uint minHeight = keyFile.value(QLatin1String("MinimumAvatarHeight")).toUInt(); uint maxHeight = keyFile.value(QLatin1String("MaximumAvatarHeight")).toUInt(); uint recommendedHeight = keyFile.value( QLatin1String("RecommendedAvatarHeight")).toUInt(); uint minWidth = keyFile.value(QLatin1String("MinimumAvatarWidth")).toUInt(); uint maxWidth = keyFile.value(QLatin1String("MaximumAvatarWidth")).toUInt(); uint recommendedWidth = keyFile.value( QLatin1String("RecommendedAvatarWidth")).toUInt(); uint maxBytes = keyFile.value(QLatin1String("MaximumAvatarBytes")).toUInt(); info.avatarRequirements = AvatarSpec(supportedMimeTypes, minHeight, maxHeight, recommendedHeight, minWidth, maxWidth, recommendedWidth, maxBytes); info.addressableVCardFields = keyFile.valueAsStringList( QLatin1String("AddressableVCardFields")); info.addressableUriSchemes = keyFile.valueAsStringList( QLatin1String("AddressableURISchemes")); QStringList rccGroups = keyFile.valueAsStringList( QLatin1String("RequestableChannelClasses")); RequestableChannelClass rcc; foreach (const QString &rccGroup, rccGroups) { keyFile.setGroup(rccGroup); foreach (const QString &key, keyFile.keys()) { int spaceIdx = key.indexOf(QLatin1String(" ")); if (spaceIdx == -1) { continue; } QString propertyName = key.mid(0, spaceIdx); QString signature = key.mid(spaceIdx + 1); QString param = keyFile.value(key); QVariant value = valueForKey(key, signature); rcc.fixedProperties.insert(propertyName, value); } rcc.allowedProperties = keyFile.valueAsStringList( QLatin1String("allowed")); info.rccs.append(rcc); rcc.fixedProperties.clear(); rcc.allowedProperties.clear(); } } } return true; } bool ManagerFile::Private::isValid() const { return ((keyFile.status() == KeyFile::NoError) && (valid)); } bool ManagerFile::Private::hasParameter(const QString &protocol, const QString ¶mName) const { ParamSpecList paramSpecList = protocolsMap[protocol].params; foreach (const ParamSpec ¶mSpec, paramSpecList) { if (paramSpec.name == paramName) { return true; } } return false; } ParamSpec *ManagerFile::Private::getParameter(const QString &protocol, const QString ¶mName) { ParamSpecList ¶mSpecList = protocolsMap[protocol].params; for (int i = 0; i < paramSpecList.size(); ++i) { ParamSpec ¶mSpec = paramSpecList[i]; if (paramSpec.name == paramName) { return ¶mSpec; } } return NULL; } QStringList ManagerFile::Private::protocols() const { return protocolsMap.keys(); } ParamSpecList ManagerFile::Private::parameters(const QString &protocol) const { return protocolsMap.value(protocol).params; } QVariant ManagerFile::Private::valueForKey(const QString ¶m, const QString &dbusSignature) { QString value = keyFile.rawValue(param); return parseValueWithDBusSignature(value, dbusSignature); } /** * \class ManagerFile * \ingroup utils * \headerfile TelepathyQt/manager-file.h * * \brief The ManagerFile class provides an easy way to read Telepathy manager * files according to the \telepathy_spec. */ /** * Create a ManagerFile object used to read .manager compliant files. */ ManagerFile::ManagerFile() : mPriv(new Private()) { } /** * Create a ManagerFile object used to read .manager compliant files. * * \param cmName Name of the connection manager to read the file for. */ ManagerFile::ManagerFile(const QString &cmName) : mPriv(new Private(cmName)) { } /** * Create a ManagerFile object used to read .manager compliant files. */ ManagerFile::ManagerFile(const ManagerFile &other) : mPriv(new Private()) { mPriv->cmName = other.mPriv->cmName; mPriv->keyFile = other.mPriv->keyFile; mPriv->protocolsMap = other.mPriv->protocolsMap; mPriv->valid = other.mPriv->valid; } /** * Class destructor. */ ManagerFile::~ManagerFile() { delete mPriv; } ManagerFile &ManagerFile::operator=(const ManagerFile &other) { mPriv->cmName = other.mPriv->cmName; mPriv->keyFile = other.mPriv->keyFile; mPriv->protocolsMap = other.mPriv->protocolsMap; mPriv->valid = other.mPriv->valid; return *this; } /** * Check whether or not a ManagerFile object is valid. If the file for the * specified connection manager cannot be found it will be considered invalid. * * \return true if valid, false otherwise. */ bool ManagerFile::isValid() const { return mPriv->isValid(); } /** * Return a list of all protocols defined in the manager file. * * \return List of all protocols defined in the file. */ QStringList ManagerFile::protocols() const { return mPriv->protocols(); } /** * Return a list of parameters for the given \a protocol. * * \param protocol Name of the protocol to look for. * \return List of ParamSpec of a specific protocol defined in the file, or an * empty list if the protocol is not defined. */ ParamSpecList ManagerFile::parameters(const QString &protocol) const { return mPriv->parameters(protocol); } /** * Return the name of the most common vcard field used for the given \a protocol's * contact identifiers, normalized to lower case. * * \param protocol Name of the protocol to look for. * \return The most common vcard field used for the given protocol's contact * identifiers, or an empty string if there is no such field or the * protocol is not defined. */ QString ManagerFile::vcardField(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).vcardField; } QStringList ManagerFile::addressableVCardFields(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).addressableVCardFields; } QStringList ManagerFile::addressableUriSchemes(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).addressableUriSchemes; } /** * Return the English-language name of the given \a protocol, such as "AIM" or "Yahoo!". * * The name can be used as a fallback if an application doesn't have a localized name for the * protocol. * * If the manager file doesn't specify the english name, it is inferred from the protocol name, such * that for example "google-talk" becomes "Google Talk", but "local-xmpp" becomes "Local Xmpp". * * \param protocol Name of the protocol to look for. * \return An English-language name for the given \a protocol. */ QString ManagerFile::englishName(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).englishName; } /** * Return the name of an icon for the given \a protocol in the system's icon * theme, such as "im-msn". * * If the manager file doesn't specify the icon name, "im-" is assumed. * * \param protocol Name of the protocol to look for. * \return The likely name of an icon for the given \a protocol. */ QString ManagerFile::iconName(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).iconName; } /** * Return a list of channel classes which might be requestable from a connection * to the given \a protocol. * * \param protocol Name of the protocol to look for. * \return A list of channel classes which might be requestable from a * connection to the given \a protocol or a default constructed * RequestableChannelClassList instance if the protocol is not defined. */ RequestableChannelClassList ManagerFile::requestableChannelClasses( const QString &protocol) const { return mPriv->protocolsMap.value(protocol).rccs; } /** * Return a list of PresenceSpec representing the possible presence statuses * from a connection to the given \a protocol. * * \param protocol Name of the protocol to look for. * \return A list of PresenceSpec representing the possible presence statuses * from a connection to the given \a protocol or an empty list * if the protocol is not defined. */ PresenceSpecList ManagerFile::allowedPresenceStatuses(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).statuses; } /** * Return the requirements (size limits, supported MIME types, etc) * for avatars used on the given \a protocol. * * \param protocol Name of the protocol to look for. * \return The requirements for avatars used on the given \a protocol or an invalid * AvatarSpec if the protocol is not defined. */ AvatarSpec ManagerFile::avatarRequirements(const QString &protocol) const { return mPriv->protocolsMap.value(protocol).avatarRequirements; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/GenericPropertyFilter0000644000175100017520000000041712530423576024402 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_GenericPropertyFilter_HEADER_GUARD_ #define _TelepathyQt_GenericPropertyFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingDebugMessageList0000644000175100017520000000042612530423576024607 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingDebugMessageList_HEADER_GUARD_ #define _TelepathyQt_PendingDebugMessageList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-client-internal.h0000644000175100017520000000417312530423576025662 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include namespace Tp { class TP_QT_NO_EXPORT StreamTubeClient::TubeWrapper : public QObject { Q_OBJECT Q_DISABLE_COPY(TubeWrapper) public: TubeWrapper(const AccountPtr &acc, const IncomingStreamTubeChannelPtr &tube, const QHostAddress &sourceAddress, quint16 sourcePort, StreamTubeClient *parent); TubeWrapper(const AccountPtr &acc, const IncomingStreamTubeChannelPtr &tube, bool requireCredentials, StreamTubeClient *parent); ~TubeWrapper() { } AccountPtr mAcc; IncomingStreamTubeChannelPtr mTube; QHostAddress mSourceAddress; quint16 mSourcePort; Q_SIGNALS: void acceptFinished(TubeWrapper *wrapper, Tp::PendingStreamTubeConnection *conn); void newConnection(TubeWrapper *wrapper, uint conn); void connectionClosed(TubeWrapper *wrapper, uint conn, const QString &error, const QString &message); private Q_SLOTS: void onTubeAccepted(Tp::PendingOperation *); void onNewConnection(uint); void onConnectionClosed(uint, const QString &, const QString &); }; } // Tp telepathy-qt-0.9.6.1/TelepathyQt/AbstractAdaptor0000644000175100017520000000037412530423576023173 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractAdaptor_HEADER_GUARD_ #define _TelepathyQt_AbstractAdaptor_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ready-object.cpp0000644000175100017520000001076112530423576023247 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" #include #include namespace Tp { struct TP_QT_NO_EXPORT ReadyObject::Private { Private(ReadyObject *parent, RefCounted *object, Feature featureCore); Private(ReadyObject *parent, DBusProxy *proxy, Feature featureCore); ~Private(); ReadyObject *parent; const Features coreFeatures; ReadinessHelper *readinessHelper; }; ReadyObject::Private::Private(ReadyObject *parent, RefCounted *object, Feature featureCore) : parent(parent), coreFeatures(Features() << featureCore), readinessHelper(new ReadinessHelper(object)) { } ReadyObject::Private::Private(ReadyObject *parent, DBusProxy *proxy, Feature featureCore) : parent(parent), coreFeatures(Features() << featureCore), readinessHelper(new ReadinessHelper(proxy)) { } ReadyObject::Private::~Private() { delete readinessHelper; } /** * \class ReadyObject * \ingroup clientreadiness * \headerfile TelepathyQt/ready-object.h> */ /** * Construct a new ReadyObject object. * * \param object The RefCounted the object refers to. * \param featureCore The core feature of the object. */ ReadyObject::ReadyObject(RefCounted *object, const Feature &featureCore) : mPriv(new Private(this, object, featureCore)) { } /** * Construct a new ReadyObject object. * * \param proxy The DBusProxy the object refers to. * \param featureCore The core feature of the object. */ ReadyObject::ReadyObject(DBusProxy *proxy, const Feature &featureCore) : mPriv(new Private(this, proxy, featureCore)) { } /** * Class destructor. */ ReadyObject::~ReadyObject() { delete mPriv; } /** * Return whether this object has finished its initial setup. * * This is mostly useful as a sanity check, in code that shouldn't be run * until the object is ready. To wait for the object to be ready, call * becomeReady() and connect to the finished signal on the result. * * \param features The features which should be tested * \return \c true if the object has finished its initial setup for basic * functionality plus the given features */ bool ReadyObject::isReady(const Features &features) const { if (features.isEmpty()) { return mPriv->readinessHelper->isReady(mPriv->coreFeatures); } return mPriv->readinessHelper->isReady(features); } /** * Return a pending operation which will succeed when this object finishes * its initial setup, or will fail if a fatal error occurs during this * initial setup. * * If an empty set is used FeatureCore will be considered as the requested * feature. * * \param requestedFeatures The features which should be enabled * \return A PendingReady object which will emit finished * when this object has finished or failed initial setup for basic * functionality plus the given features */ PendingReady *ReadyObject::becomeReady(const Features &requestedFeatures) { if (requestedFeatures.isEmpty()) { return mPriv->readinessHelper->becomeReady(mPriv->coreFeatures); } return mPriv->readinessHelper->becomeReady(requestedFeatures); } Features ReadyObject::requestedFeatures() const { return mPriv->readinessHelper->requestedFeatures(); } Features ReadyObject::actualFeatures() const { return mPriv->readinessHelper->actualFeatures(); } Features ReadyObject::missingFeatures() const { return mPriv->readinessHelper->missingFeatures(); } ReadinessHelper *ReadyObject::readinessHelper() const { return mPriv->readinessHelper; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatch-operation.h0000644000175100017520000000727312530423576025553 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_dispatch_operation_h_HEADER_GUARD_ #define _TelepathyQt_channel_dispatch_operation_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class PendingOperation; class TP_QT_EXPORT ChannelDispatchOperation : public StatefulDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(ChannelDispatchOperation) public: static const Feature FeatureCore; static ChannelDispatchOperationPtr create(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); virtual ~ChannelDispatchOperation(); ConnectionPtr connection() const; AccountPtr account() const; QList channels() const; QStringList possibleHandlers() const; PendingOperation *handleWith(const QString &handler); PendingOperation *claim(); PendingOperation *claim(const AbstractClientHandlerPtr &handler); Q_SIGNALS: void channelLost(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); protected: ChannelDispatchOperation(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const QList &initialChannels, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); Client::ChannelDispatchOperationInterface *baseInterface() const; private Q_SLOTS: TP_QT_NO_EXPORT void onFinished(); TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onChannelLost(const QDBusObjectPath &channelObjectPath, const QString &errorName, const QString &errorMessage); TP_QT_NO_EXPORT void onProxiesPrepared(Tp::PendingOperation *op); private: class PendingClaim; friend class PendingClaim; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/DBusError0000644000175100017520000000035212530423576021760 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusError_HEADER_GUARD_ #define _TelepathyQt_DBusError_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/HandledChannelNotifier0000644000175100017520000000042212530423576024437 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_HandledChannelNotifier_HEADER_GUARD_ #define _TelepathyQt_HandledChannelNotifier_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/svc-call.xml0000644000175100017520000000052512530423576022416 0ustar00kaffeinekaffeine00000000000000 Call interfaces telepathy-qt-0.9.6.1/TelepathyQt/future-interfaces.xml0000644000175100017520000000062712530423576024350 0ustar00kaffeinekaffeine00000000000000 Extensions from the future telepathy-qt-0.9.6.1/TelepathyQt/incoming-dbus-tube-channel.h0000644000175100017520000000342712530423576025446 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_incoming_dbus_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_incoming_dbus_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class PendingDBusTubeConnection; class TP_QT_EXPORT IncomingDBusTubeChannel : public DBusTubeChannel { Q_OBJECT Q_DISABLE_COPY(IncomingDBusTubeChannel) public: static IncomingDBusTubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~IncomingDBusTubeChannel(); PendingDBusTubeConnection *acceptTube(bool allowOtherUsers = false); protected: IncomingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); private: struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceCaptchaAuthenticationInterface0000644000175100017520000000046112530423576031310 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceCaptchaAuthenticationInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceCaptchaAuthenticationInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ClientRegistrar0000644000175100017520000000037412530423576023216 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ClientRegistrar_HEADER_GUARD_ #define _TelepathyQt_ClientRegistrar_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/callbacks.h0000644000175100017520000003456612530423576022274 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_callbacks_h_HEADER_GUARD_ #define _TelepathyQt_callbacks_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { struct TP_QT_EXPORT AbstractFunctorCaller { typedef void *(*HookType)(void*); AbstractFunctorCaller(HookType invokeMethodHook) : invokeMethodHook(invokeMethodHook) {} virtual ~AbstractFunctorCaller() {} virtual AbstractFunctorCaller *clone() const = 0; HookType invokeMethodHook; private: AbstractFunctorCaller(const AbstractFunctorCaller &other); AbstractFunctorCaller &operator=(const AbstractFunctorCaller &other); }; template struct BaseFunctorCaller : public AbstractFunctorCaller { BaseFunctorCaller(const Functor &functor, AbstractFunctorCaller::HookType invokeMethodHook) : AbstractFunctorCaller(invokeMethodHook), functor(functor) {} virtual ~BaseFunctorCaller() {} virtual AbstractFunctorCaller *clone() const { return new T(functor); } Functor functor; }; struct TP_QT_EXPORT BaseCallback { BaseCallback() : caller(0) {} /* takes ownership of caller */ BaseCallback(AbstractFunctorCaller *caller) : caller(caller) {} BaseCallback(const BaseCallback &other) : caller(other.caller->clone()) {} virtual ~BaseCallback() { delete caller; } bool isValid() const { return caller != 0; } BaseCallback &operator=(const BaseCallback &other) { if (caller == other.caller) return *this; delete caller; caller = other.caller->clone(); return *this; } protected: /* may be null */ AbstractFunctorCaller *caller; }; template struct FunctorCaller0 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* ); explicit FunctorCaller0(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller0::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call ) { typedef FunctorCaller0 Type; Type *typed = static_cast(call); return (typed->functor)(); } }; template struct Callback0 : public BaseCallback { typedef R (*FunctionType)(); typedef R ResultType; Callback0() {} template Callback0(const Functor &functor) : BaseCallback(new FunctorCaller0(functor)) {} ResultType operator()() const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* ); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller ); } return ResultType(); } }; template struct FunctorCaller1 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1); explicit FunctorCaller1(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller1::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1) { typedef FunctorCaller1 Type; Type *typed = static_cast(call); return (typed->functor)(a1); } }; template struct Callback1 : public BaseCallback { typedef R (*FunctionType)(Arg1); typedef R ResultType; Callback1() {} template Callback1(const Functor &functor) : BaseCallback(new FunctorCaller1(functor)) {} ResultType operator()(Arg1 a1) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1); } return ResultType(); } }; template struct FunctorCaller2 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2); explicit FunctorCaller2(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller2::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2) { typedef FunctorCaller2 Type; Type *typed = static_cast(call); return (typed->functor)(a1, a2); } }; template struct Callback2 : public BaseCallback { typedef R (*FunctionType)(Arg1, Arg2); typedef R ResultType; Callback2() {} template Callback2(const Functor &functor) : BaseCallback(new FunctorCaller2(functor)) {} ResultType operator()(Arg1 a1, Arg2 a2) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1, a2); } return ResultType(); } }; template struct FunctorCaller3 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3); explicit FunctorCaller3(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller3::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3) { typedef FunctorCaller3 Type; Type *typed = static_cast(call); return (typed->functor)(a1, a2, a3); } }; template struct Callback3 : public BaseCallback { typedef R (*FunctionType)(Arg1, Arg2, Arg3); typedef R ResultType; Callback3() {} template Callback3(const Functor &functor) : BaseCallback(new FunctorCaller3(functor)) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1, a2, a3); } return ResultType(); } }; template struct FunctorCaller4 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4); explicit FunctorCaller4(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller4::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) { typedef FunctorCaller4 Type; Type *typed = static_cast(call); return (typed->functor)(a1, a2, a3, a4); } }; template struct Callback4 : public BaseCallback { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4); typedef R ResultType; Callback4() {} template Callback4(const Functor &functor) : BaseCallback(new FunctorCaller4(functor)) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1, a2, a3, a4); } return ResultType(); } }; template struct FunctorCaller5 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5); explicit FunctorCaller5(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller5::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) { typedef FunctorCaller5 Type; Type *typed = static_cast(call); return (typed->functor)(a1, a2, a3, a4, a5); } }; template struct Callback5 : public BaseCallback { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5); typedef R ResultType; Callback5() {} template Callback5(const Functor &functor) : BaseCallback(new FunctorCaller5(functor)) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1, a2, a3, a4, a5); } return ResultType(); } }; template struct FunctorCaller6 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6); explicit FunctorCaller6(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller6::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) { typedef FunctorCaller6 Type; Type *typed = static_cast(call); return (typed->functor)(a1, a2, a3, a4, a5, a6); } }; template struct Callback6 : public BaseCallback { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6); typedef R ResultType; Callback6() {} template Callback6(const Functor &functor) : BaseCallback(new FunctorCaller6(functor)) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1, a2, a3, a4, a5, a6); } return ResultType(); } }; template struct FunctorCaller7 : public BaseFunctorCaller, Functor> { typedef R ResultType; typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7); explicit FunctorCaller7(const Functor &functor) : BaseFunctorCaller(functor, reinterpret_cast(&FunctorCaller7::invoke)) {} static ResultType invoke(AbstractFunctorCaller *call , Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) { typedef FunctorCaller7 Type; Type *typed = static_cast(call); return (typed->functor)(a1, a2, a3, a4, a5, a6, a7); } }; template struct Callback7 : public BaseCallback { typedef R (*FunctionType)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7); typedef R ResultType; Callback7() {} template Callback7(const Functor &functor) : BaseCallback(new FunctorCaller7(functor)) {} ResultType operator()(Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4, Arg5 a5, Arg6 a6, Arg7 a7) const { if (caller) { typedef R (*InvokeType)(AbstractFunctorCaller* , Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7); InvokeType invokeMethod = reinterpret_cast(caller->invokeMethodHook); return invokeMethod(caller , a1, a2, a3, a4, a5, a6, a7); } return ResultType(); } }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/ClientInterface0000644000175100017520000000036212530423576023151 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ClientInterface_HEADER_GUARD_ #define _TelepathyQt_ClientInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/DBusProxy0000644000175100017520000000035212530423576022010 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusProxy_HEADER_GUARD_ #define _TelepathyQt_DBusProxy_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-account.h0000644000175100017520000000413412530423576023417 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_account_h_HEADER_GUARD_ #define _TelepathyQt_pending_account_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include class QDBusPendingCallWatcher; namespace Tp { class AccountManager; class TP_QT_EXPORT PendingAccount : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingAccount); public: ~PendingAccount(); AccountManagerPtr manager() const; AccountPtr account() const; private Q_SLOTS: TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onAccountBuilt(Tp::PendingOperation *readyOp); TP_QT_NO_EXPORT void onNewAccount(const Tp::AccountPtr &account); private: friend class AccountManager; TP_QT_NO_EXPORT PendingAccount(const AccountManagerPtr &manager, const QString &connectionManager, const QString &protocol, const QString &displayName, const QVariantMap ¶meters, const QVariantMap &properties = QVariantMap()); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionCapabilities0000644000175100017520000000042112530423576024517 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionCapabilities_HEADER_GUARD_ #define _TelepathyQt_ConnectionCapabilities_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceSimplePresenceInterface0000644000175100017520000000045412530423576030514 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceSimplePresenceInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceSimplePresenceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/properties.h0000644000175100017520000000334712530423576022542 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_properties_h_HEADER_GUARD_ #define _TelepathyQt_properties_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif /** * \addtogroup clientsideproxies Client-side proxies * * Proxy objects representing remote service objects accessed via D-Bus. * * In addition to providing direct access to methods, signals and properties * exported by the remote objects, some of these proxies offer features like * automatic inspection of remote object capabilities, property tracking, * backwards compatibility helpers for older services and other utilities. */ /** * \defgroup clientprops Telepathy Properties proxy * \ingroup clientsideproxies * * Proxy object representing the Telepathy Properties interface on remote * objects. */ #include #endif telepathy-qt-0.9.6.1/TelepathyQt/BaseProtocolAvatarsInterface0000644000175100017520000000042312530423576025647 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseProtocolAvatarsInterface_HEADER_GUARD_ #define _TelepathyQt_BaseProtocolAvatarsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/StreamTubeClient0000644000175100017520000000040012530423576023315 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StreamTubeClient_HEADER_GUARD_ #define _TelepathyQt_StreamTubeClient_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/debug-internal.h0000644000175100017520000000633612530423576023247 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_debug_HEADER_GUARD_ #define _TelepathyQt_debug_HEADER_GUARD_ #include #include namespace Tp { class TP_QT_EXPORT Debug { public: inline Debug() : debug(0) { } inline Debug(QtMsgType type) : type(type), debug(new QDebug(&msg)) { } inline Debug(const Debug &a) : type(a.type), debug(a.debug ? new QDebug(&msg) : 0) { if (debug) { (*debug) << qPrintable(a.msg); } } inline Debug &operator=(const Debug &a) { if (this != &a) { type = a.type; delete debug; debug = 0; if (a.debug) { debug = new QDebug(&msg); (*debug) << qPrintable(a.msg); } } return *this; } inline ~Debug() { if (!msg.isEmpty()) { invokeDebugCallback(); } delete debug; } inline Debug &space() { if (debug) { debug->space(); } return *this; } inline Debug &nospace() { if (debug) { debug->nospace(); } return *this; } inline Debug &maybeSpace() { if (debug) { debug->maybeSpace(); } return *this; } template inline Debug &operator<<(T a) { if (debug) { (*debug) << a; } return *this; } private: QString msg; QtMsgType type; QDebug *debug; void invokeDebugCallback(); }; // The telepathy-farsight Qt 4 binding links to these - they're not API outside // this source tarball, but they *are* ABI TP_QT_EXPORT Debug enabledDebug(); TP_QT_EXPORT Debug enabledWarning(); #ifdef ENABLE_DEBUG inline Debug debug() { return enabledDebug(); } inline Debug warning() { return enabledWarning(); } #else /* #ifdef ENABLE_DEBUG */ struct NoDebug { template NoDebug& operator<<(const T&) { return *this; } NoDebug& space() { return *this; } NoDebug& nospace() { return *this; } NoDebug& maybeSpace() { return *this; } }; inline NoDebug debug() { return NoDebug(); } inline NoDebug warning() { return NoDebug(); } #endif /* #ifdef ENABLE_DEBUG */ } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/call-stream.h0000644000175100017520000000616512530423576022553 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_call_stream_h_HEADER_GUARD_ #define _TelepathyQt_call_stream_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include namespace Tp { typedef QList CallStreams; class TP_QT_EXPORT CallStream : public StatefulDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(CallStream) public: ~CallStream(); CallContentPtr content() const; Contacts remoteMembers() const; bool canRequestReceiving() const; SendingState localSendingState() const; SendingState remoteSendingState(const ContactPtr &contact) const; PendingOperation *requestSending(bool send); PendingOperation *requestReceiving(const ContactPtr &contact, bool receive); Q_SIGNALS: void localSendingStateChanged(Tp::SendingState localSendingState, const Tp::CallStateReason &reason); void remoteSendingStateChanged( const QHash &remoteSendingStates, const Tp::CallStateReason &reason); void remoteMembersRemoved(const Tp::Contacts &remoteMembers, const Tp::CallStateReason &reason); private Q_SLOTS: TP_QT_NO_EXPORT void gotMainProperties(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotRemoteMembersContacts(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onRemoteMembersChanged(const Tp::ContactSendingStateMap &updates, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason); TP_QT_NO_EXPORT void onLocalSendingStateChanged(uint, const Tp::CallStateReason &reason); private: friend class CallChannel; friend class CallContent; TP_QT_NO_EXPORT static const Feature FeatureCore; TP_QT_NO_EXPORT CallStream(const CallContentPtr &content, const QDBusObjectPath &streamPath); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ReferencedHandles0000644000175100017520000000035712530423576023457 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ReferencedHandles_HEADER_GUARD_ #define _TelepathyQt_ReferencedHandles_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif telepathy-qt-0.9.6.1/TelepathyQt/AuthenticationTLSCertificateInterface0000644000175100017520000000044712530423576027444 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AuthenticationTLSCertificateInterface_HEADER_GUARD_ #define _TelepathyQt_AuthenticationTLSCertificateInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/or-filter.dox0000644000175100017520000000234512530423576022611 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::OrFilter * \ingroup utils * \headerfile TelepathyQt/or-filter.h * * \brief The OrFilter class provides a generic filter object to be used * in conjunction of other filters. * * The OrFilter will match if any of its given list of filters matches * their criteria. */ telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceContactListInterface0000644000175100017520000000044612530423576030026 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceContactListInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceContactListInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/profile.cpp0000644000175100017520000010236012530423576022334 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/manager-file.h" #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT Profile::Private { Private(); void setServiceName(const QString &serviceName); void setFileName(const QString &fileName); void lookupProfile(); bool parse(QFile *file); void invalidate(); struct Data { Data(); void clear(); QString type; QString provider; QString name; QString iconName; QString cmName; QString protocolName; Profile::ParameterList parameters; bool allowOtherPresences; Profile::PresenceList presences; RequestableChannelClassSpecList unsupportedChannelClassSpecs; }; class XmlHandler; QString serviceName; bool valid; bool fake; bool allowNonIMType; Data data; }; Profile::Private::Data::Data() : allowOtherPresences(false) { } void Profile::Private::Data::clear() { type = QString(); provider = QString(); name = QString(); iconName = QString(); protocolName = QString(); parameters = Profile::ParameterList(); allowOtherPresences = false; presences = Profile::PresenceList(); unsupportedChannelClassSpecs = RequestableChannelClassSpecList(); } class TP_QT_NO_EXPORT Profile::Private::XmlHandler : public QXmlDefaultHandler { public: XmlHandler(const QString &serviceName, bool allowNonIMType, Profile::Private::Data *outputData); bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes); bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName); bool characters(const QString &str); bool fatalError(const QXmlParseException &exception); QString errorString() const; private: bool attributeValueAsBoolean(const QXmlAttributes &attributes, const QString &qName); QString mServiceName; bool allowNonIMType; Profile::Private::Data *mData; QStack mElements; QString mCurrentText; Profile::Parameter mCurrentParameter; RequestableChannelClass mCurrentCC; QString mCurrentPropertyName; QString mCurrentPropertyType; QString mErrorString; bool mMetServiceTag; static const QString xmlNs; static const QString elemService; static const QString elemName; static const QString elemParams; static const QString elemParam; static const QString elemPresences; static const QString elemPresence; static const QString elemUnsupportedCCs; static const QString elemCC; static const QString elemProperty; static const QString elemAttrId; static const QString elemAttrName; static const QString elemAttrType; static const QString elemAttrProvider; static const QString elemAttrManager; static const QString elemAttrProtocol; static const QString elemAttrIcon; static const QString elemAttrLabel; static const QString elemAttrMandatory; static const QString elemAttrAllowOthers; static const QString elemAttrMessage; static const QString elemAttrDisabled; }; const QString Profile::Private::XmlHandler::xmlNs = QLatin1String("http://telepathy.freedesktop.org/wiki/service-profile-v1"); const QString Profile::Private::XmlHandler::elemService = QLatin1String("service"); const QString Profile::Private::XmlHandler::elemName = QLatin1String("name"); const QString Profile::Private::XmlHandler::elemParams = QLatin1String("parameters"); const QString Profile::Private::XmlHandler::elemParam = QLatin1String("parameter"); const QString Profile::Private::XmlHandler::elemPresences = QLatin1String("presences"); const QString Profile::Private::XmlHandler::elemPresence = QLatin1String("presence"); const QString Profile::Private::XmlHandler::elemUnsupportedCCs = QLatin1String("unsupported-channel-classes"); const QString Profile::Private::XmlHandler::elemCC = QLatin1String("channel-class"); const QString Profile::Private::XmlHandler::elemProperty = QLatin1String("property"); const QString Profile::Private::XmlHandler::elemAttrId = QLatin1String("id"); const QString Profile::Private::XmlHandler::elemAttrName = QLatin1String("name"); const QString Profile::Private::XmlHandler::elemAttrType = QLatin1String("type"); const QString Profile::Private::XmlHandler::elemAttrProvider = QLatin1String("provider"); const QString Profile::Private::XmlHandler::elemAttrManager = QLatin1String("manager"); const QString Profile::Private::XmlHandler::elemAttrProtocol = QLatin1String("protocol"); const QString Profile::Private::XmlHandler::elemAttrLabel = QLatin1String("label"); const QString Profile::Private::XmlHandler::elemAttrMandatory = QLatin1String("mandatory"); const QString Profile::Private::XmlHandler::elemAttrAllowOthers = QLatin1String("allow-others"); const QString Profile::Private::XmlHandler::elemAttrIcon = QLatin1String("icon"); const QString Profile::Private::XmlHandler::elemAttrMessage = QLatin1String("message"); const QString Profile::Private::XmlHandler::elemAttrDisabled = QLatin1String("disabled"); Profile::Private::XmlHandler::XmlHandler(const QString &serviceName, bool allowNonIMType, Profile::Private::Data *outputData) : mServiceName(serviceName), allowNonIMType(allowNonIMType), mData(outputData), mMetServiceTag(false) { } bool Profile::Private::XmlHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes) { if (!mMetServiceTag && qName != elemService) { mErrorString = QLatin1String("the file is not a profile file"); return false; } if (namespaceURI != xmlNs) { // ignore all elements with unknown xmlns debug() << "Ignoring unknown xmlns" << namespaceURI; return true; } #define CHECK_ELEMENT_IS_CHILD_OF(parentElement) \ if (mElements.top() != parentElement) { \ mErrorString = QString(QLatin1String("element '%1' is not a " \ "child of element '%2'")) \ .arg(qName) \ .arg(parentElement); \ return false; \ } #define CHECK_ELEMENT_ATTRIBUTES_COUNT(value) \ if (attributes.count() != value) { \ mErrorString = QString(QLatin1String("element '%1' contains more " \ "than %2 attributes")) \ .arg(qName) \ .arg(value); \ return false; \ } #define CHECK_ELEMENT_HAS_ATTRIBUTE(attribute) \ if (attributes.index(attribute) == -1) { \ mErrorString = QString(QLatin1String("mandatory attribute '%1' " \ "missing on element '%2'")) \ .arg(attribute) \ .arg(qName); \ return false; \ } #define CHECK_ELEMENT_ATTRIBUTES(allowedAttrs) \ for (int i = 0; i < attributes.count(); ++i) { \ bool valid = false; \ QString attrName = attributes.qName(i); \ foreach (const QString &allowedAttr, allowedAttrs) { \ if (attrName == allowedAttr) { \ valid = true; \ break; \ } \ } \ if (!valid) { \ mErrorString = QString(QLatin1String("invalid attribute '%1' on " \ "element '%2'")) \ .arg(attrName) \ .arg(qName); \ return false; \ } \ } if (qName == elemService) { CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrId); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrType); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrManager); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrProtocol); QStringList allowedAttrs = QStringList() << elemAttrId << elemAttrType << elemAttrManager << elemAttrProtocol << elemAttrProvider << elemAttrIcon; CHECK_ELEMENT_ATTRIBUTES(allowedAttrs); if (attributes.value(elemAttrId) != mServiceName) { mErrorString = QString(QLatin1String("the '%1' attribute of the " "element '%2' does not match the file name")) .arg(elemAttrId) .arg(elemService); return false; } mMetServiceTag = true; mData->type = attributes.value(elemAttrType); if (mData->type != QLatin1String("IM") && !allowNonIMType) { mErrorString = QString(QLatin1String("unknown value of element " "'type': %1")) .arg(mCurrentText); return false; } mData->provider = attributes.value(elemAttrProvider); mData->cmName = attributes.value(elemAttrManager); mData->protocolName = attributes.value(elemAttrProtocol); mData->iconName = attributes.value(elemAttrIcon); } else if (qName == elemParams) { CHECK_ELEMENT_IS_CHILD_OF(elemService); CHECK_ELEMENT_ATTRIBUTES_COUNT(0); } else if (qName == elemParam) { CHECK_ELEMENT_IS_CHILD_OF(elemParams); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrName); QStringList allowedAttrs = QStringList() << elemAttrName << elemAttrType << elemAttrMandatory << elemAttrLabel; CHECK_ELEMENT_ATTRIBUTES(allowedAttrs); QString paramType = attributes.value(elemAttrType); if (paramType.isEmpty()) { paramType = QLatin1String("s"); } mCurrentParameter.setName(attributes.value(elemAttrName)); mCurrentParameter.setDBusSignature(QDBusSignature(paramType)); mCurrentParameter.setLabel(attributes.value(elemAttrLabel)); mCurrentParameter.setMandatory(attributeValueAsBoolean(attributes, elemAttrMandatory)); } else if (qName == elemPresences) { CHECK_ELEMENT_IS_CHILD_OF(elemService); QStringList allowedAttrs = QStringList() << elemAttrAllowOthers; CHECK_ELEMENT_ATTRIBUTES(allowedAttrs); mData->allowOtherPresences = attributeValueAsBoolean(attributes, elemAttrAllowOthers); } else if (qName == elemPresence) { CHECK_ELEMENT_IS_CHILD_OF(elemPresences); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrId); QStringList allowedAttrs = QStringList() << elemAttrId << elemAttrLabel << elemAttrIcon << elemAttrMessage << elemAttrDisabled; CHECK_ELEMENT_ATTRIBUTES(allowedAttrs); mData->presences.append(Profile::Presence( attributes.value(elemAttrId), attributes.value(elemAttrLabel), attributes.value(elemAttrIcon), attributes.value(elemAttrMessage), attributeValueAsBoolean(attributes, elemAttrDisabled))); } else if (qName == elemUnsupportedCCs) { CHECK_ELEMENT_IS_CHILD_OF(elemService); CHECK_ELEMENT_ATTRIBUTES_COUNT(0); } else if (qName == elemCC) { CHECK_ELEMENT_IS_CHILD_OF(elemUnsupportedCCs); CHECK_ELEMENT_ATTRIBUTES_COUNT(0); } else if (qName == elemProperty) { CHECK_ELEMENT_IS_CHILD_OF(elemCC); CHECK_ELEMENT_ATTRIBUTES_COUNT(2); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrName); CHECK_ELEMENT_HAS_ATTRIBUTE(elemAttrType); mCurrentPropertyName = attributes.value(elemAttrName); mCurrentPropertyType = attributes.value(elemAttrType); } else { if (qName != elemName) { Tp::warning() << "Ignoring unknown element" << qName; } else { // check if we are inside CHECK_ELEMENT_IS_CHILD_OF(elemService); // no element here supports attributes CHECK_ELEMENT_ATTRIBUTES_COUNT(0); } } #undef CHECK_ELEMENT_IS_CHILD_OF #undef CHECK_ELEMENT_ATTRIBUTES_COUNT #undef CHECK_ELEMENT_HAS_ATTRIBUTE #undef CHECK_ELEMENT_ATTRIBUTES mElements.push(qName); mCurrentText.clear(); return true; } bool Profile::Private::XmlHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName) { if (namespaceURI != xmlNs) { // ignore all elements with unknown xmlns debug() << "Ignoring unknown xmlns" << namespaceURI; return true; } else if (qName == elemName) { mData->name = mCurrentText; } else if (qName == elemParam) { mCurrentParameter.setValue(parseValueWithDBusSignature(mCurrentText, mCurrentParameter.dbusSignature().signature())); mData->parameters.append(Profile::Parameter(mCurrentParameter)); } else if (qName == elemCC) { mData->unsupportedChannelClassSpecs.append(RequestableChannelClassSpec(mCurrentCC)); mCurrentCC.fixedProperties.clear(); } else if (qName == elemProperty) { mCurrentCC.fixedProperties[mCurrentPropertyName] = parseValueWithDBusSignature(mCurrentText, mCurrentPropertyType); } mElements.pop(); return true; } bool Profile::Private::XmlHandler::characters(const QString &str) { mCurrentText += str; return true; } bool Profile::Private::XmlHandler::fatalError( const QXmlParseException &exception) { mErrorString = QString(QLatin1String("parse error at line %1, column %2: " "%3")) .arg(exception.lineNumber()) .arg(exception.columnNumber()) .arg(exception.message()); return false; } QString Profile::Private::XmlHandler::errorString() const { return mErrorString; } bool Profile::Private::XmlHandler::attributeValueAsBoolean( const QXmlAttributes &attributes, const QString &qName) { QString tmpStr = attributes.value(qName); if (tmpStr == QLatin1String("1") || tmpStr == QLatin1String("true")) { return true; } else { return false; } } Profile::Private::Private() : valid(false), fake(false), allowNonIMType(false) { } void Profile::Private::setServiceName(const QString &serviceName_) { invalidate(); allowNonIMType = false; serviceName = serviceName_; lookupProfile(); } void Profile::Private::setFileName(const QString &fileName) { invalidate(); allowNonIMType = true; QFileInfo fi(fileName); serviceName = fi.baseName(); debug() << "Loading profile file" << fileName; QFile file(fileName); if (!file.exists()) { warning() << QString(QLatin1String("Error parsing profile file %1: file does not exist")) .arg(file.fileName()); return; } if (!file.open(QFile::ReadOnly)) { warning() << QString(QLatin1String("Error parsing profile file %1: " "cannot open file for readonly access")) .arg(file.fileName()); return; } if (parse(&file)) { debug() << "Profile file" << fileName << "loaded successfully"; } } void Profile::Private::lookupProfile() { debug() << "Searching profile for service" << serviceName; QStringList searchDirs = Profile::searchDirs(); bool found = false; foreach (const QString searchDir, searchDirs) { QString fileName = searchDir + serviceName + QLatin1String(".profile"); QFile file(fileName); if (!file.exists()) { continue; } if (!file.open(QFile::ReadOnly)) { continue; } if (parse(&file)) { debug() << "Profile for service" << serviceName << "found:" << fileName; found = true; break; } } if (!found) { debug() << "Cannot find valid profile for service" << serviceName; } } bool Profile::Private::parse(QFile *file) { invalidate(); fake = false; QFileInfo fi(file->fileName()); XmlHandler xmlHandler(serviceName, allowNonIMType, &data); QXmlSimpleReader xmlReader; xmlReader.setContentHandler(&xmlHandler); xmlReader.setErrorHandler(&xmlHandler); QXmlInputSource xmlInputSource(file); if (!xmlReader.parse(xmlInputSource)) { warning() << QString(QLatin1String("Error parsing profile file %1: %2")) .arg(file->fileName()) .arg(xmlHandler.errorString()); invalidate(); return false; } valid = true; return true; } void Profile::Private::invalidate() { valid = false; data.clear(); } /** * \class Profile * \ingroup utils * \headerfile TelepathyQt/profile.h * * \brief The Profile class provides an easy way to read Telepathy profile * files according to http://telepathy.freedesktop.org/wiki/service-profile-v1. * * Note that profiles with xml element \ different than "IM" are considered * invalid. */ /** * Create a new Profile object used to read .profiles compliant files. * * \param serviceName The profile service name. * \return A ProfilePtr object pointing to the newly created Profile object. */ ProfilePtr Profile::createForServiceName(const QString &serviceName) { ProfilePtr profile = ProfilePtr(new Profile()); profile->setServiceName(serviceName); return profile; } /** * Create a new Profile object used to read .profiles compliant files. * * \param fileName The profile file name. * \return A ProfilePtr object pointing to the newly created Profile object. */ ProfilePtr Profile::createForFileName(const QString &fileName) { ProfilePtr profile = ProfilePtr(new Profile()); profile->setFileName(fileName); return profile; } /** * Construct a new Profile object used to read .profiles compliant files. * * \param serviceName The profile service name. */ Profile::Profile() : mPriv(new Private()) { } /** * Construct a fake profile using the given \a serviceName, \a cmName, * \a protocolName and \a protocolInfo. * * - isFake() will return \c true * - type() will return "IM" * - provider() will return an empty string * - serviceName() will return \a serviceName * - name() and protocolName() will return \a protocolName * - iconName() will return "im-\a protocolName" * - cmName() will return \a cmName * - parameters() will return a list matching CM default parameters * - presences() will return an empty list and allowOtherPresences will return * \c true, meaning that CM presences should be used * - unsupportedChannelClassSpecs() will return an empty list * * \param serviceName The service name. * \param cmName The connection manager name. * \param protocolName The protocol name. * \param protocolInfo The protocol info for the protocol \a protocolName. */ Profile::Profile(const QString &serviceName, const QString &cmName, const QString &protocolName, const ProtocolInfo &protocolInfo) : mPriv(new Private()) { mPriv->serviceName = serviceName; mPriv->data.type = QString(QLatin1String("IM")); // provider is empty mPriv->data.name = protocolName; mPriv->data.iconName = QString(QLatin1String("im-%1")).arg(protocolName); mPriv->data.cmName = cmName; mPriv->data.protocolName = protocolName; foreach (const ProtocolParameter &protocolParam, protocolInfo.parameters()) { if (!protocolParam.defaultValue().isNull()) { mPriv->data.parameters.append(Profile::Parameter( protocolParam.name(), protocolParam.dbusSignature(), protocolParam.defaultValue(), QString(), // label false)); // mandatory } } // parameters will be the same as CM parameters // set allow others to true meaning that the standard CM presences are // supported mPriv->data.allowOtherPresences = true; // presences will be the same as CM presences // unsupported channel classes is empty mPriv->valid = true; mPriv->fake = true; } /** * Class destructor. */ Profile::~Profile() { delete mPriv; } /** * Return the unique name of the service to which this profile applies. * * \return The unique name of the service. */ QString Profile::serviceName() const { return mPriv->serviceName; } /** * Return whether this profile is valid. * * \return \c true if valid, otherwise \c false. */ bool Profile::isValid() const { return mPriv->valid; } /** * Return whether this profile is fake. * * Fake profiles are profiles created for services not providing a .profile * file. * * \return \c true if fake, otherwise \c false. */ bool Profile::isFake() const { return mPriv->fake; } /** * Return the type of the service to which this profile applies. * * In general, services of interest of Telepathy should be of type 'IM'. * Other service types exist but are unlikely to affect Telepathy in any way. * * \return The type of the service. */ QString Profile::type() const { return mPriv->data.type; } /** * Return the name of the vendor/organisation/provider who actually runs the * service to which this profile applies. * * \return The provider of the service. */ QString Profile::provider() const { return mPriv->data.provider; } /** * Return the human-readable name for the service to which this profile applies. * * \return The Human-readable name of the service. */ QString Profile::name() const { return mPriv->data.name; } /** * Return the base name of the icon for the service to which this profile * applies. * * \return The base name of the icon for the service. */ QString Profile::iconName() const { return mPriv->data.iconName; } /** * Return the connection manager name for the service to which this profile * applies. * * \return The connection manager name for the service. */ QString Profile::cmName() const { return mPriv->data.cmName; } /** * Return the protocol name for the service to which this profile applies. * * \return The protocol name for the service. */ QString Profile::protocolName() const { return mPriv->data.protocolName; } /** * Return a list of parameters defined for the service to which this profile * applies. * * \return A list of Profile::Parameter. */ Profile::ParameterList Profile::parameters() const { return mPriv->data.parameters; } /** * Return whether this profile defines the parameter named \a name. * * \return \c true if parameter is defined, otherwise \c false. */ bool Profile::hasParameter(const QString &name) const { foreach (const Parameter ¶meter, mPriv->data.parameters) { if (parameter.name() == name) { return true; } } return false; } /** * Return the parameter for a given \a name. * * \return A Profile::Parameter. */ Profile::Parameter Profile::parameter(const QString &name) const { foreach (const Parameter ¶meter, mPriv->data.parameters) { if (parameter.name() == name) { return parameter; } } return Profile::Parameter(); } /** * Return whether the standard CM presences not defined in presences() are * supported. * * \return \c true if standard CM presences are supported, otherwise \c false. */ bool Profile::allowOtherPresences() const { return mPriv->data.allowOtherPresences; } /** * Return a list of presences defined for the service to which this profile * applies. * * \return A list of Profile::Presence. */ Profile::PresenceList Profile::presences() const { return mPriv->data.presences; } /** * Return whether this profile defines the presence with id \a id. * * \return \c true if presence is defined, otherwise \c false. */ bool Profile::hasPresence(const QString &id) const { foreach (const Presence &presence, mPriv->data.presences) { if (presence.id() == id) { return true; } } return false; } /** * Return the presence for a given \a id. * * \return A Profile::Presence. */ Profile::Presence Profile::presence(const QString &id) const { foreach (const Presence &presence, mPriv->data.presences) { if (presence.id() == id) { return presence; } } return Profile::Presence(); } /** * A list of channel classes not supported by the service to which this profile * applies. * * \return A list of RequestableChannelClassSpec. */ RequestableChannelClassSpecList Profile::unsupportedChannelClassSpecs() const { return mPriv->data.unsupportedChannelClassSpecs; } void Profile::setServiceName(const QString &serviceName) { mPriv->setServiceName(serviceName); } void Profile::setFileName(const QString &fileName) { mPriv->setFileName(fileName); } QStringList Profile::searchDirs() { QStringList ret; QString xdgDataHome = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")); if (xdgDataHome.isEmpty()) { ret << QDir::homePath() + QLatin1String("/.local/share/data/telepathy/profiles/"); } else { ret << xdgDataHome + QLatin1String("/telepathy/profiles/"); } QString xdgDataDirsEnv = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")); if (xdgDataDirsEnv.isEmpty()) { ret << QLatin1String("/usr/local/share/telepathy/profiles/"); ret << QLatin1String("/usr/share/telepathy/profiles/"); } else { QStringList xdgDataDirs = xdgDataDirsEnv.split(QLatin1Char(':')); foreach (const QString xdgDataDir, xdgDataDirs) { ret << xdgDataDir + QLatin1String("/telepathy/profiles/"); } } return ret; } struct TP_QT_NO_EXPORT Profile::Parameter::Private { QString name; QDBusSignature dbusSignature; QVariant value; QString label; bool mandatory; }; /** * \class Profile::Parameter * \ingroup utils * \headerfile TelepathyQt/profile.h * * \brief The Profile::Parameter class represents a parameter defined in * .profile files. */ /** * Construct a new Profile::Parameter object. */ Profile::Parameter::Parameter() : mPriv(new Private) { mPriv->mandatory = false; } /** * Construct a new Profile::Parameter object that is a copy of \a other. */ Profile::Parameter::Parameter(const Parameter &other) : mPriv(new Private) { mPriv->name = other.mPriv->name; mPriv->dbusSignature = other.mPriv->dbusSignature; mPriv->value = other.mPriv->value; mPriv->label = other.mPriv->label; mPriv->mandatory = other.mPriv->mandatory; } /** * Construct a new Profile::Parameter object. * * \param name The parameter name. * \param dbusSignature The parameter D-Bus signature. * \param value The parameter value. * \param label The parameter label. * \param mandatory Whether this parameter is mandatory. */ Profile::Parameter::Parameter(const QString &name, const QDBusSignature &dbusSignature, const QVariant &value, const QString &label, bool mandatory) : mPriv(new Private) { mPriv->name = name; mPriv->dbusSignature = dbusSignature; mPriv->value = value; mPriv->label = label; mPriv->mandatory = mandatory; } /** * Class destructor. */ Profile::Parameter::~Parameter() { delete mPriv; } /** * Return the name of this parameter. * * \return The name of this parameter. */ QString Profile::Parameter::name() const { return mPriv->name; } void Profile::Parameter::setName(const QString &name) { mPriv->name = name; } /** * Return the D-Bus signature of this parameter. * * \return The D-Bus signature of this parameter. */ QDBusSignature Profile::Parameter::dbusSignature() const { return mPriv->dbusSignature; } void Profile::Parameter::setDBusSignature(const QDBusSignature &dbusSignature) { mPriv->dbusSignature = dbusSignature; } /** * Return the QVariant::Type of this parameter, constructed using * dbusSignature(). * * \return The QVariant::Type of this parameter. */ QVariant::Type Profile::Parameter::type() const { return variantTypeFromDBusSignature(mPriv->dbusSignature.signature()); } /** * Return the value of this parameter. * * If mandatory() returns \c true, the value must not be modified and should be * used as is when creating accounts for this profile. * * \return The value of this parameter. */ QVariant Profile::Parameter::value() const { return mPriv->value; } void Profile::Parameter::setValue(const QVariant &value) { mPriv->value = value; } /** * Return the human-readable label of this parameter. * * \return The human-readable label of this parameter. */ QString Profile::Parameter::label() const { return mPriv->label; } void Profile::Parameter::setLabel(const QString &label) { mPriv->label = label; } /** * Return whether this parameter is mandatory, or whether the value returned by * value() should be used as is when creating accounts for this profile. * * \return \c true if mandatory, otherwise \c false. */ bool Profile::Parameter::isMandatory() const { return mPriv->mandatory; } void Profile::Parameter::setMandatory(bool mandatory) { mPriv->mandatory = mandatory; } Profile::Parameter &Profile::Parameter::operator=(const Profile::Parameter &other) { mPriv->name = other.mPriv->name; mPriv->dbusSignature = other.mPriv->dbusSignature; mPriv->value = other.mPriv->value; mPriv->label = other.mPriv->label; mPriv->mandatory = other.mPriv->mandatory; return *this; } struct TP_QT_NO_EXPORT Profile::Presence::Private { QString id; QString label; QString iconName; QString message; bool disabled; }; /** * \class Profile::Presence * \ingroup utils * \headerfile TelepathyQt/profile.h * * \brief The Profile::Presence class represents a presence defined in * .profile files. */ /** * Construct a new Profile::Presence object. */ Profile::Presence::Presence() : mPriv(new Private) { mPriv->disabled = false; } /** * Construct a new Profile::Presence object that is a copy of \a other. */ Profile::Presence::Presence(const Presence &other) : mPriv(new Private) { mPriv->id = other.mPriv->id; mPriv->label = other.mPriv->label; mPriv->iconName = other.mPriv->iconName; mPriv->message = other.mPriv->message; mPriv->disabled = other.mPriv->disabled; } /** * Construct a new Profile::Presence object. * * \param id The presence id. * \param label The presence label. * \param iconName The presence icon name. * \param message The presence message. * \param disabled Whether this presence is supported. */ Profile::Presence::Presence(const QString &id, const QString &label, const QString &iconName, const QString &message, bool disabled) : mPriv(new Private) { mPriv->id = id; mPriv->label = label; mPriv->iconName = iconName; mPriv->message = message; mPriv->disabled = disabled; } /** * Class destructor. */ Profile::Presence::~Presence() { delete mPriv; } /** * Return the Telepathy presence id for this presence. * * \return The Telepathy presence id for this presence. */ QString Profile::Presence::id() const { return mPriv->id; } void Profile::Presence::setId(const QString &id) { mPriv->id = id; } /** * Return the label that should be used for this presence. * * \return The label for this presence. */ QString Profile::Presence::label() const { return mPriv->label; } void Profile::Presence::setLabel(const QString &label) { mPriv->label = label; } /** * Return the icon name of this presence. * * \return The icon name of this presence. */ QString Profile::Presence::iconName() const { return mPriv->iconName; } void Profile::Presence::setIconName(const QString &iconName) { mPriv->iconName = iconName; } /** * Return whether user-defined text-message can be attached to this presence. * * \return \c true if user-defined text-message can be attached to this presence, \c false * otherwise. */ bool Profile::Presence::canHaveStatusMessage() const { if (mPriv->message == QLatin1String("1") || mPriv->message == QLatin1String("true")) { return true; } return false; } void Profile::Presence::setMessage(const QString &message) { mPriv->message = message; } /** * Return whether this presence is supported for the service to which this * profile applies. * * \return \c true if supported, otherwise \c false. */ bool Profile::Presence::isDisabled() const { return mPriv->disabled; } void Profile::Presence::setDisabled(bool disabled) { mPriv->disabled = disabled; } Profile::Presence &Profile::Presence::operator=(const Profile::Presence &other) { mPriv->id = other.mPriv->id; mPriv->label = other.mPriv->label; mPriv->iconName = other.mPriv->iconName; mPriv->message = other.mPriv->message; mPriv->disabled = other.mPriv->disabled; return *this; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/NotFilter0000644000175100017520000000035212530423576022017 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_NotFilter_HEADER_GUARD_ #define _TelepathyQt_NotFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-contact-info.h0000644000175100017520000000336112530423576024350 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_contact_info_h_HEADER_GUARD_ #define _TelepathyQt_pending_contact_info_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include class QDBusPendingCallWatcher; namespace Tp { class TP_QT_EXPORT PendingContactInfo : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingContactInfo); public: ~PendingContactInfo(); ContactPtr contact() const; Contact::InfoFields infoFields() const; private Q_SLOTS: TP_QT_NO_EXPORT void onCallFinished(QDBusPendingCallWatcher *watcher); private: friend class Contact; TP_QT_NO_EXPORT PendingContactInfo(const ContactPtr &contact); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/CallStreamEndpointInterface0000644000175100017520000000043012530423576025457 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallStreamEndpointInterface_HEADER_GUARD_ #define _TelepathyQt_CallStreamEndpointInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-service.h0000644000175100017520000000516012530423576022734 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_service_h_HEADER_GUARD_ #define _TelepathyQt_dbus_service_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include class QDBusConnection; class QString; namespace Tp { class DBusObject; class TP_QT_EXPORT DBusService : public Object { Q_OBJECT Q_DISABLE_COPY(DBusService) public: DBusService(const QDBusConnection &dbusConnection); virtual ~DBusService(); virtual QVariantMap immutableProperties() const = 0; QDBusConnection dbusConnection() const; QString busName() const; QString objectPath() const; DBusObject *dbusObject() const; bool isRegistered() const; protected: virtual bool registerObject(const QString &busName, const QString &objectPath, DBusError *error); private: class Private; friend class Private; Private *mPriv; }; class TP_QT_EXPORT AbstractDBusServiceInterface : public Object { Q_OBJECT Q_DISABLE_COPY(AbstractDBusServiceInterface) public: AbstractDBusServiceInterface(const QString &interfaceName); virtual ~AbstractDBusServiceInterface(); QString interfaceName() const; virtual QVariantMap immutableProperties() const = 0; DBusObject *dbusObject() const; bool isRegistered() const; protected: virtual bool registerInterface(DBusObject *dbusObject); virtual void createAdaptor() = 0; public: bool notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue); private: class Private; friend class Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/MediaStreamHandler0000644000175100017520000000040612530423576023602 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MediaStreamHandler_HEADER_GUARD_ #define _TelepathyQt_MediaStreamHandler_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/SimpleObserver0000644000175100017520000000037112530423576023053 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_SimpleObserver_HEADER_GUARD_ #define _TelepathyQt_SimpleObserver_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/requestable-channel-class-spec.h0000644000175100017520000001174712530423576026326 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_requestable_channel_class_spec_h_HEADER_GUARD_ #define _TelepathyQt_requestable_channel_class_spec_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT RequestableChannelClassSpec { public: RequestableChannelClassSpec(); RequestableChannelClassSpec(const RequestableChannelClass &rcc); RequestableChannelClassSpec(const RequestableChannelClassSpec &other); ~RequestableChannelClassSpec(); static RequestableChannelClassSpec textChat(); static RequestableChannelClassSpec textChatroom(); static RequestableChannelClassSpec audioCall(); static RequestableChannelClassSpec audioCallWithVideoAllowed(); static RequestableChannelClassSpec videoCall(); static RequestableChannelClassSpec videoCallWithAudioAllowed(); TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaCall(); TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaAudioCall(); TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaVideoCall(); TP_QT_DEPRECATED static RequestableChannelClassSpec streamedMediaVideoCallWithAudio(); static RequestableChannelClassSpec fileTransfer(); static RequestableChannelClassSpec conferenceTextChat(); static RequestableChannelClassSpec conferenceTextChatWithInvitees(); static RequestableChannelClassSpec conferenceTextChatroom(); static RequestableChannelClassSpec conferenceTextChatroomWithInvitees(); TP_QT_DEPRECATED static RequestableChannelClassSpec conferenceStreamedMediaCall(); TP_QT_DEPRECATED static RequestableChannelClassSpec conferenceStreamedMediaCallWithInvitees(); static RequestableChannelClassSpec contactSearch(); static RequestableChannelClassSpec contactSearchWithSpecificServer(); static RequestableChannelClassSpec contactSearchWithLimit(); static RequestableChannelClassSpec contactSearchWithSpecificServerAndLimit(); static RequestableChannelClassSpec dbusTube(const QString &serviceName = QString()); static RequestableChannelClassSpec streamTube(const QString &service = QString()); bool isValid() const { return mPriv.constData() != 0; } RequestableChannelClassSpec &operator=(const RequestableChannelClassSpec &other); bool operator==(const RequestableChannelClassSpec &other) const; bool supports(const RequestableChannelClassSpec &spec) const; QString channelType() const; bool hasTargetHandleType() const; HandleType targetHandleType() const; bool hasFixedProperty(const QString &name) const; QVariant fixedProperty(const QString &name) const; QVariantMap fixedProperties() const; bool allowsProperty(const QString &name) const; QStringList allowedProperties() const; RequestableChannelClass bareClass() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT RequestableChannelClassSpecList : public QList { public: RequestableChannelClassSpecList() { } RequestableChannelClassSpecList(const RequestableChannelClass &rcc) { append(RequestableChannelClassSpec(rcc)); } RequestableChannelClassSpecList(const RequestableChannelClassList &rccs) { Q_FOREACH (const RequestableChannelClass &rcc, rccs) { append(RequestableChannelClassSpec(rcc)); } } RequestableChannelClassSpecList(const RequestableChannelClassSpec &rccSpec) { append(rccSpec); } RequestableChannelClassSpecList(const QList &other) : QList(other) { } RequestableChannelClassList bareClasses() const { RequestableChannelClassList list; Q_FOREACH (const RequestableChannelClassSpec &rccSpec, *this) { list.append(rccSpec.bareClass()); } return list; } }; } // Tp Q_DECLARE_METATYPE(Tp::RequestableChannelClassSpec); Q_DECLARE_METATYPE(Tp::RequestableChannelClassSpecList); #endif telepathy-qt-0.9.6.1/TelepathyQt/text-channel.cpp0000644000175100017520000013347512530423576023301 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/text-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT TextChannel::Private { Private(TextChannel *parent); ~Private(); static void introspectMessageQueue(Private *self); static void introspectMessageCapabilities(Private *self); static void introspectMessageSentSignal(Private *self); static void enableChatStateNotifications(Private *self); void updateInitialMessages(); void updateCapabilities(); void processMessageQueue(); void processChatStateQueue(); void contactLost(uint handle); void contactFound(ContactPtr contact); // Public object TextChannel *parent; Client::ChannelTypeTextInterface *textInterface; Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; // FeatureMessageCapabilities and FeatureMessageQueue QVariantMap props; bool getAllInFlight; bool gotProperties; // requires FeatureMessageCapabilities QList supportedMessageTypes; QStringList supportedContentTypes; MessagePartSupportFlags messagePartSupport; DeliveryReportingSupportFlags deliveryReportingSupport; // FeatureMessageQueue bool initialMessagesReceived; struct MessageEvent { MessageEvent(const ReceivedMessage &message) : isMessage(true), message(message), removed(0) { } MessageEvent(uint removed) : isMessage(false), message(), removed(removed) { } bool isMessage; ReceivedMessage message; uint removed; }; QList messages; QList incompleteMessages; QHash acknowledgeBatches; // FeatureChatState struct ChatStateEvent { ChatStateEvent(uint contactHandle, uint state) : contactHandle(contactHandle), state(state) { } ContactPtr contact; uint contactHandle; uint state; }; QList chatStateQueue; QHash chatStates; QSet awaitingContacts; }; TextChannel::Private::Private(TextChannel *parent) : parent(parent), textInterface(parent->interface()), properties(parent->interface()), readinessHelper(parent->readinessHelper()), getAllInFlight(false), gotProperties(false), messagePartSupport(0), deliveryReportingSupport(0), initialMessagesReceived(false) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableMessageQueue( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMessageQueue, this); introspectables[FeatureMessageQueue] = introspectableMessageQueue; ReadinessHelper::Introspectable introspectableMessageCapabilities( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMessageCapabilities, this); introspectables[FeatureMessageCapabilities] = introspectableMessageCapabilities; ReadinessHelper::Introspectable introspectableMessageSentSignal( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMessageSentSignal, this); introspectables[FeatureMessageSentSignal] = introspectableMessageSentSignal; ReadinessHelper::Introspectable introspectableChatState( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::enableChatStateNotifications, this); introspectables[FeatureChatState] = introspectableChatState; readinessHelper->addIntrospectables(introspectables); } TextChannel::Private::~Private() { foreach (MessageEvent *e, incompleteMessages) { delete e; } foreach (ChatStateEvent *e, chatStateQueue) { delete e; } } void TextChannel::Private::introspectMessageQueue( TextChannel::Private *self) { TextChannel *parent = self->parent; if (parent->hasMessagesInterface()) { Client::ChannelInterfaceMessagesInterface *messagesInterface = parent->interface(); // FeatureMessageQueue needs signal connections + Get (but we // might as well do GetAll and reduce the number of code paths) parent->connect(messagesInterface, SIGNAL(MessageReceived(Tp::MessagePartList)), SLOT(onMessageReceived(Tp::MessagePartList))); parent->connect(messagesInterface, SIGNAL(PendingMessagesRemoved(Tp::UIntList)), SLOT(onPendingMessagesRemoved(Tp::UIntList))); if (!self->gotProperties && !self->getAllInFlight) { self->getAllInFlight = true; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll( TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotProperties(QDBusPendingCallWatcher*))); } else if (self->gotProperties) { self->updateInitialMessages(); } } else { // FeatureMessageQueue needs signal connections + ListPendingMessages parent->connect(self->textInterface, SIGNAL(Received(uint,uint,uint,uint,uint,QString)), SLOT(onTextReceived(uint,uint,uint,uint,uint,const QString))); // we present SendError signals as if they were incoming // messages, to be consistent with Messages parent->connect(self->textInterface, SIGNAL(SendError(uint,uint,uint,QString)), SLOT(onTextSendError(uint,uint,uint,QString))); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->textInterface->ListPendingMessages(false), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotPendingMessages(QDBusPendingCallWatcher*))); } } void TextChannel::Private::introspectMessageCapabilities( TextChannel::Private *self) { TextChannel *parent = self->parent; if (parent->hasMessagesInterface()) { if (!self->gotProperties && !self->getAllInFlight) { self->getAllInFlight = true; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll( TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotProperties(QDBusPendingCallWatcher*))); } else if (self->gotProperties) { self->updateCapabilities(); } } else { self->supportedContentTypes = (QStringList(QLatin1String("text/plain"))); parent->readinessHelper()->setIntrospectCompleted( FeatureMessageCapabilities, true); } } void TextChannel::Private::introspectMessageSentSignal( TextChannel::Private *self) { TextChannel *parent = self->parent; if (parent->hasMessagesInterface()) { Client::ChannelInterfaceMessagesInterface *messagesInterface = parent->interface(); parent->connect(messagesInterface, SIGNAL(MessageSent(Tp::MessagePartList,uint,QString)), SLOT(onMessageSent(Tp::MessagePartList,uint,QString))); } else { parent->connect(self->textInterface, SIGNAL(Sent(uint,uint,QString)), SLOT(onTextSent(uint,uint,QString))); } self->readinessHelper->setIntrospectCompleted(FeatureMessageSentSignal, true); } void TextChannel::Private::enableChatStateNotifications( TextChannel::Private *self) { TextChannel *parent = self->parent; Client::ChannelInterfaceChatStateInterface *chatStateInterface = parent->interface(); parent->connect(chatStateInterface, SIGNAL(ChatStateChanged(uint,uint)), SLOT(onChatStateChanged(uint,uint))); // FIXME fd.o#24882 - Download contacts' initial chat states self->readinessHelper->setIntrospectCompleted(FeatureChatState, true); } void TextChannel::Private::updateInitialMessages() { if (!readinessHelper->requestedFeatures().contains(FeatureMessageQueue) || readinessHelper->isReady(Features() << FeatureMessageQueue)) { return; } Q_ASSERT(!initialMessagesReceived); initialMessagesReceived = true; MessagePartListList messages = qdbus_cast( props[QLatin1String("PendingMessages")]); if (messages.isEmpty()) { debug() << "Message queue empty: FeatureMessageQueue is now ready"; readinessHelper->setIntrospectCompleted(FeatureMessageQueue, true); } else { foreach (const MessagePartList &message, messages) { parent->onMessageReceived(message); } } } void TextChannel::Private::updateCapabilities() { if (!readinessHelper->requestedFeatures().contains(FeatureMessageCapabilities) || readinessHelper->isReady(Features() << FeatureMessageCapabilities)) { return; } UIntList messageTypesAsUIntList = qdbus_cast(props[QLatin1String("MessageTypes")]); // Populate the list with the correct variable type supportedMessageTypes.clear(); foreach (uint messageType, messageTypesAsUIntList) { supportedMessageTypes.append(static_cast(messageType)); } supportedContentTypes = qdbus_cast( props[QLatin1String("SupportedContentTypes")]); if (supportedContentTypes.isEmpty()) { supportedContentTypes << QLatin1String("text/plain"); } messagePartSupport = MessagePartSupportFlags(qdbus_cast( props[QLatin1String("MessagePartSupportFlags")])); deliveryReportingSupport = DeliveryReportingSupportFlags( qdbus_cast(props[QLatin1String("DeliveryReportingSupport")])); readinessHelper->setIntrospectCompleted(FeatureMessageCapabilities, true); } void TextChannel::Private::processMessageQueue() { // Proceed as far as we can with the processing of incoming messages // and message-removal events; message IDs aren't necessarily globally // unique, so we need to process them in the correct order relative // to incoming messages while (!incompleteMessages.isEmpty()) { const MessageEvent *e = incompleteMessages.first(); debug() << "MessageEvent:" << reinterpret_cast(e); if (e->isMessage) { if (e->message.senderHandle() != 0 && !e->message.sender()) { // the message doesn't have a sender Contact, but needs one. // We'll have to stop processing here, and come back to it // when we have more Contact objects break; } // if we reach here, the message is ready debug() << "Message is usable, copying to main queue"; messages << e->message; emit parent->messageReceived(e->message); } else { // forget about the message(s) with ID e->removed (there should be // at most one under normal circumstances) int i = 0; while (i < messages.size()) { if (messages.at(i).pendingId() == e->removed) { ReceivedMessage removedMessage = messages.at(i); messages.removeAt(i); emit parent->pendingMessageRemoved(removedMessage); } else { i++; } } } debug() << "Dropping first event"; delete incompleteMessages.takeFirst(); } if (incompleteMessages.isEmpty()) { if (readinessHelper->requestedFeatures().contains(FeatureMessageQueue) && !readinessHelper->isReady(Features() << FeatureMessageQueue)) { debug() << "incompleteMessages empty for the first time: " "FeatureMessageQueue is now ready"; readinessHelper->setIntrospectCompleted(FeatureMessageQueue, true); } return; } // What Contact objects do we need in order to proceed, ignoring those // for which we've already sent a request? HandleIdentifierMap contactsRequired; foreach (const MessageEvent *e, incompleteMessages) { if (e->isMessage) { uint handle = e->message.senderHandle(); if (handle != 0 && !e->message.sender() && !awaitingContacts.contains(handle)) { contactsRequired.insert(handle, e->message.senderId()); } } } if (contactsRequired.isEmpty()) { return; } ConnectionPtr conn = parent->connection(); conn->lowlevel()->injectContactIds(contactsRequired); parent->connect(conn->contactManager()->contactsForHandles( contactsRequired.keys()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactsFinished(Tp::PendingOperation*))); awaitingContacts |= contactsRequired.keys().toSet(); } void TextChannel::Private::processChatStateQueue() { while (!chatStateQueue.isEmpty()) { const ChatStateEvent *e = chatStateQueue.first(); debug() << "ChatStateEvent:" << reinterpret_cast(e); if (e->contact.isNull()) { // the chat state Contact object wasn't retrieved yet, but needs // one. We'll have to stop processing here, and come back to it // when we have more Contact objects break; } chatStates.insert(e->contact, (ChannelChatState) e->state); // if we reach here, the Contact object is ready emit parent->chatStateChanged(e->contact, (ChannelChatState) e->state); debug() << "Dropping first event"; delete chatStateQueue.takeFirst(); } // What Contact objects do we need in order to proceed, ignoring those // for which we've already sent a request? QSet contactsRequired; foreach (const ChatStateEvent *e, chatStateQueue) { if (!e->contact && !awaitingContacts.contains(e->contactHandle)) { contactsRequired << e->contactHandle; } } if (contactsRequired.isEmpty()) { return; } // TODO: pass id hints to ContactManager if we ever gain support to retrieve contact ids // from ChatState. parent->connect(parent->connection()->contactManager()->contactsForHandles( contactsRequired.toList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactsFinished(Tp::PendingOperation*))); awaitingContacts |= contactsRequired; } void TextChannel::Private::contactLost(uint handle) { // we're not going to get a Contact object for this handle, so mark the // messages from that handle as "unknown sender" foreach (MessageEvent *e, incompleteMessages) { if (e->isMessage && e->message.senderHandle() == handle && !e->message.sender()) { e->message.clearSenderHandle(); } } // there is no point in sending chat state notifications for unknown // contacts, removing chat state events from queue that refer to this handle foreach (ChatStateEvent *e, chatStateQueue) { if (e->contactHandle == handle) { chatStateQueue.removeOne(e); delete e; } } } void TextChannel::Private::contactFound(ContactPtr contact) { uint handle = contact->handle().at(0); foreach (MessageEvent *e, incompleteMessages) { if (e->isMessage && e->message.senderHandle() == handle && !e->message.sender()) { e->message.setSender(contact); } } foreach (ChatStateEvent *e, chatStateQueue) { if (e->contactHandle == handle) { e->contact = contact; } } } /** * \class TextChannel * \ingroup clientchannel * \headerfile TelepathyQt/text-channel.h * * \brief The TextChannel class represents a Telepathy channel of type Text. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * TextChannel object usable. * * This is currently the same as Channel::FeatureCore, but may change to include more. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature TextChannel::FeatureCore = Feature(QLatin1String(Channel::staticMetaObject.className()), 0, true); /** * Feature used in order to access the message queue info. * * See message queue methods' documentation for more details. * * \sa messageQueue(), messageReceived(), pendingMessageRemoved(), forget(), acknowledge() */ const Feature TextChannel::FeatureMessageQueue = Feature(QLatin1String(TextChannel::staticMetaObject.className()), 0); /** * Feature used in order to access message capabilities info. * * See message capabilities methods' documentation for more details. * * \sa supportedContentTypes(), messagePartSupport(), deliveryReportingSupport() */ const Feature TextChannel::FeatureMessageCapabilities = Feature(QLatin1String(TextChannel::staticMetaObject.className()), 1); /** * Feature used in order to receive notification when a message is sent. * * \sa messageSent() */ const Feature TextChannel::FeatureMessageSentSignal = Feature(QLatin1String(TextChannel::staticMetaObject.className()), 2); /** * Feature used in order to keep track of chat state changes. * * See chat state methods' documentation for more details. * * \sa chatState(), chatStateChanged() */ const Feature TextChannel::FeatureChatState = Feature(QLatin1String(TextChannel::staticMetaObject.className()), 3); /** * \fn void TextChannel::messageSent(const Tp::Message &message, * Tp::MessageSendingFlags flags, * const QString &sentMessageToken) * * Emitted when a message is sent, if the TextChannel::FeatureMessageSentSignal * has been enabled. * * This signal is emitted regardless of whether the message is sent by this * client, or another client using the same channel via D-Bus. * * \param message A message. This may differ slightly from what the client * requested to send, for instance if it has been altered due * to limitations of the instant messaging protocol used. * \param flags #MessageSendingFlags that were in effect when the message was * sent. Clients can use these in conjunction with * deliveryReportingSupport() to determine whether delivery * reporting can be expected. * \param sentMessageToken Either an empty QString, or an opaque token used * to match the message to any delivery reports. */ /** * \fn void TextChannel::messageReceived(const Tp::ReceivedMessage &message) * * Emitted when a message is added to messageQueue(), if the * TextChannel::FeatureMessageQueue Feature has been enabled. * * This occurs slightly later than the message being received over D-Bus; * see messageQueue() for details. * * \param message The message received. * \sa messageQueue(), acknowledge(), forget() */ /** * \fn void TextChannel::pendingMessageRemoved( * const Tp::ReceivedMessage &message) * * Emitted when a message is removed from messageQueue(), if the * TextChannel::FeatureMessageQueue Feature has been enabled. See messageQueue() for the * circumstances in which this happens. * * \param message The message removed. * \sa messageQueue(), acknowledge(), forget() */ /** * \fn void TextChannel::chatStateChanged(const Tp::ContactPtr &contact, * ChannelChatState state) * * Emitted when the state of a member of the channel has changed, if the * TextChannel::FeatureChatState feature has been enabled. * * Local state changes are also emitted here. * * \param contact The contact whose chat state changed. * \param state The new chat state for \a contact. * \sa chatState() */ /** * Create a new TextChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A TextChannelPtr object pointing to the newly created * TextChannel object. */ TextChannelPtr TextChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return TextChannelPtr(new TextChannel(connection, objectPath, immutableProperties, TextChannel::FeatureCore)); } /** * Construct a new TextChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on TextChannel::FeatureCore. */ TextChannel::TextChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ TextChannel::~TextChannel() { delete mPriv; } /** * Return whether this channel supports the Messages interface. * * If the interface is not supported, some advanced functionality will be unavailable. * * This method requires TextChannel::FeatureCore to be ready. * * \return \c true if the Messages interface is supported, \c false otherwise. */ bool TextChannel::hasMessagesInterface() const { return interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES); } /** * Return whether this channel supports the ChatState interface. * * If the interface is not supported, requestChatState() will fail and all contacts' chat states * will appear to be #ChannelChatStateInactive. * * This method requires TextChannel::FeatureCore to be ready. * * \return \c true if the ChatState interface is supported, \c false otherwise. * \sa requestChatState(), chatStateChanged() */ bool TextChannel::hasChatStateInterface() const { return interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE); } /** * Return whether contacts can be invited into this channel using * inviteContacts() (which is equivalent to Channel::groupAddContacts()). * * Whether this is the case depends on the underlying protocol, the type of channel, * and the user's privileges (in some chatrooms, only a privileged user * can invite other contacts). * * This is an alias for Channel::groupCanAddContacts(), to indicate its meaning more * clearly for Text channels. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if contacts can be invited, \c false otherwise. * \sa inviteContacts(), Channel::groupCanAddContacts(), Channel::groupAddContacts() */ bool TextChannel::canInviteContacts() const { return groupCanAddContacts(); } /* in the block below is used to escape the star-slash sequence */ /** * Return a list of supported MIME content types for messages on this channel. * * For a simple text channel this will be a list containing one item, * "text/plain". * * This list may contain the special value "*/*", which * indicates that any content type is supported. * * This method requires TextChannel::FeatureMessageCapabilities to be ready. * * \return The list of MIME content types. */ QStringList TextChannel::supportedContentTypes() const { return mPriv->supportedContentTypes; } /** * Return the message types supported by this channel. * * This method requires TextChannel::FeatureMessageCapabilities to be ready. * * \return The list of supported message types */ QList TextChannel::supportedMessageTypes() const { if (!isReady(FeatureMessageCapabilities)) { warning() << "TextChannel::supportedMessageTypes() used with " "FeatureMessageCapabilities not ready"; } return mPriv->supportedMessageTypes; } /** * Return whether the provided message type is supported. * * This method requires TextChannel::FeatureMessageCapabilities to be ready. * * \param messageType The message type to check. * \return \c true if supported, \c false otherwise */ bool TextChannel::supportsMessageType(ChannelTextMessageType messageType) const { if (!isReady(FeatureMessageCapabilities)) { warning() << "TextChannel::supportsMessageType() used with " "FeatureMessageCapabilities not ready"; } return mPriv->supportedMessageTypes.contains(messageType); } /** * Return a set of flags indicating support for multi-part messages on this * channel. * * This is zero on simple text channels, or greater than zero if * there is partial or full support for multi-part messages. * * This method requires TextChannel::FeatureMessageCapabilities to be ready. * * \return The flags as #MessagePartSupportFlags. */ MessagePartSupportFlags TextChannel::messagePartSupport() const { return mPriv->messagePartSupport; } /** * Return a set of flags indicating support for delivery reporting on this * channel. * * This is zero if there are no particular guarantees, or greater * than zero if delivery reports can be expected under certain circumstances. * * This method requires TextChannel::FeatureMessageCapabilities to be ready. * * \return The flags as #DeliveryReportingSupportFlags. */ DeliveryReportingSupportFlags TextChannel::deliveryReportingSupport() const { return mPriv->deliveryReportingSupport; } /** * Return a list of messages received in this channel. * * Messages are added to this list when they are received from the instant * messaging service; the messageReceived() signal is emitted. * * There is a small delay between the message being received over D-Bus and * becoming available to users of this C++ API, since a small amount of * additional information needs to be fetched. However, the relative ordering * of all the messages in a channel is preserved. * * Messages are removed from this list when they are acknowledged with the * acknowledge() or forget() methods. On channels where hasMessagesInterface() * returns \c true, they will also be removed when acknowledged by a different * client. In either case, the pendingMessageRemoved() signal is emitted. * * This method requires TextChannel::FeatureMessageQueue to be ready. * * \return A list of ReceivedMessage objects. * \sa messageReceived() */ QList TextChannel::messageQueue() const { return mPriv->messages; } /** * Return the current chat state for \a contact. * * If hasChatStateInterface() returns \c false, this method will always return * #ChannelChatStateInactive. * * This method requires TextChannel::FeatureChatState to be ready. * * \return The contact chat state as #ChannelChatState. */ ChannelChatState TextChannel::chatState(const ContactPtr &contact) const { if (!isReady(FeatureChatState)) { warning() << "TextChannel::chatState() used with " "FeatureChatState not ready"; return ChannelChatStateInactive; } if (mPriv->chatStates.contains(contact)) { return mPriv->chatStates.value(contact); } return ChannelChatStateInactive; } void TextChannel::onAcknowledgePendingMessagesReply( QDBusPendingCallWatcher *watcher) { UIntList ids = mPriv->acknowledgeBatches.value(watcher); QDBusPendingReply<> reply = *watcher; if (reply.isError()) { // One of the IDs was bad, and we can't know which one. Recover by // doing as much as possible, and hope for the best... debug() << "Recovering from AcknowledgePendingMessages failure for: " << ids; foreach (uint id, ids) { mPriv->textInterface->AcknowledgePendingMessages(UIntList() << id); } } mPriv->acknowledgeBatches.remove(watcher); watcher->deleteLater(); } /** * Acknowledge that received messages have been displayed to the user. * * Note that this method should only be called by the main handler of a channel, usually * meaning the user interface process that displays the channel to the user * (when a channel dispatcher is used, the handler must acknowledge messages, * and other approvers or observers must not acknowledge messages). * * Processes other than the main handler of a channel can free memory used * by the library by calling forget() instead. * * This method requires TextChannel::FeatureMessageQueue to be ready. * * \param messages A list of received messages that have now been displayed. * \sa forget(), messageQueue(), messageReceived(), pendingMessageRemoved() */ void TextChannel::acknowledge(const QList &messages) { UIntList ids; foreach (const ReceivedMessage &m, messages) { if (m.isFromChannel(TextChannelPtr(this))) { ids << m.pendingId(); } else { warning() << "message did not come from this channel, ignoring"; } } if (ids.isEmpty()) { return; } // we're going to acknowledge these messages (or as many as possible, if // we lose a race with another acknowledging process), so let's remove // them from the list immediately forget(messages); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( mPriv->textInterface->AcknowledgePendingMessages(ids), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onAcknowledgePendingMessagesReply(QDBusPendingCallWatcher*))); mPriv->acknowledgeBatches[watcher] = ids; } /** * Remove messages from the message queue without acknowledging them. * * Note that this method frees memory used by the library, but * does not free the corresponding memory in the CM process. * It should be used by clients that are not the main handler for a channel; * the main handler for a channel should use acknowledge() instead. * * This method requires TextChannel::FeatureMessageQueue to be ready. * * \param messages A list of received messages that have now been processed. * \sa acknowledge(), messageQueue(), messageReceived(), pendingMessageRemoved() */ void TextChannel::forget(const QList &messages) { foreach (const ReceivedMessage &m, messages) { if (!m.isFromChannel(TextChannelPtr(this))) { warning() << "message did not come from this channel, ignoring"; } else if (mPriv->messages.removeOne(m)) { emit pendingMessageRemoved(m); } } } /** * Request that a message be sent on this channel. * * When the message has been submitted for delivery, * this method will return and the messageSent() signal will be emitted. * * If the message cannot be submitted for delivery, the returned pending operation will fail and no * signal is emitted. * * This method requires TextChannel::FeatureCore to be ready. * * \param text The message body. * \param type The message type. * \param flags Flags affecting how the message is sent. * Note that the channel may ignore some or all flags, depending on * deliveryReportingSupport(); the flags that were handled by the CM are provided in * messageSent(). * \return A PendingOperation which will emit PendingOperation::finished * when the message has been submitted for delivery. * \sa messageSent() */ PendingSendMessage *TextChannel::send(const QString &text, ChannelTextMessageType type, MessageSendingFlags flags) { Message m(type, text); PendingSendMessage *op = new PendingSendMessage(TextChannelPtr(this), m); if (hasMessagesInterface()) { Client::ChannelInterfaceMessagesInterface *messagesInterface = interface(); connect(new QDBusPendingCallWatcher( messagesInterface->SendMessage(m.parts(), (uint) flags)), SIGNAL(finished(QDBusPendingCallWatcher*)), op, SLOT(onMessageSent(QDBusPendingCallWatcher*))); } else { connect(new QDBusPendingCallWatcher(mPriv->textInterface->Send(type, text)), SIGNAL(finished(QDBusPendingCallWatcher*)), op, SLOT(onTextSent(QDBusPendingCallWatcher*))); } return op; } /** * Request that a message be sent on this channel. * * When the message has been submitted for delivery, * this method will return and the messageSent() signal will be emitted. * * If the message cannot be submitted for delivery, the returned pending operation will fail and no * signal is emitted. * * This method requires TextChannel::FeatureCore to be ready. * * \param parts The message parts. * \param flags Flags affecting how the message is sent. * Note that the channel may ignore some or all flags, depending on * deliveryReportingSupport(); the flags that were handled by the CM are provided in * messageSent(). * \return A PendingOperation which will emit PendingOperation::finished * when the message has been submitted for delivery. * \sa messageSent() */ PendingSendMessage *TextChannel::send(const MessagePartList &parts, MessageSendingFlags flags) { Message m(parts); PendingSendMessage *op = new PendingSendMessage(TextChannelPtr(this), m); if (hasMessagesInterface()) { Client::ChannelInterfaceMessagesInterface *messagesInterface = interface(); connect(new QDBusPendingCallWatcher( messagesInterface->SendMessage(m.parts(), (uint) flags)), SIGNAL(finished(QDBusPendingCallWatcher*)), op, SLOT(onMessageSent(QDBusPendingCallWatcher*))); } else { connect(new QDBusPendingCallWatcher(mPriv->textInterface->Send( m.messageType(), m.text())), SIGNAL(finished(QDBusPendingCallWatcher*)), op, SLOT(onTextSent(QDBusPendingCallWatcher*))); } return op; } /** * Set the local chat state and notify other members of the channel that it has * changed. * * Note that only the primary handler of the channel should set its chat * state. * * This method requires TextChannel::FeatureCore to be ready. * * \param state The new state. * \sa chatStateChanged() */ PendingOperation *TextChannel::requestChatState(ChannelChatState state) { if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE)) { warning() << "TextChannel::requestChatState() used with no chat " "state interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("TextChannel does not support chat state interface"), TextChannelPtr(this)); } Client::ChannelInterfaceChatStateInterface *chatStateInterface = interface(); return new PendingVoid(chatStateInterface->SetChatState( (uint) state), TextChannelPtr(this)); } void TextChannel::onMessageSent(const MessagePartList &parts, uint flags, const QString &sentMessageToken) { emit messageSent(Message(parts), MessageSendingFlag(flags), sentMessageToken); } void TextChannel::onContactsFinished(PendingOperation *op) { PendingContacts *pc = qobject_cast(op); UIntList failed; Q_ASSERT(pc->isForHandles()); foreach (uint handle, pc->handles()) { mPriv->awaitingContacts -= handle; } if (pc->isError()) { warning().nospace() << "Gathering contacts failed: " << pc->errorName() << ": " << pc->errorMessage(); foreach (uint handle, pc->handles()) { mPriv->contactLost(handle); } } else { foreach (const ContactPtr &contact, pc->contacts()) { mPriv->contactFound(contact); } foreach (uint handle, pc->invalidHandles()) { mPriv->contactLost(handle); } } // all contacts for messages and chat state events we were asking about // should now be ready mPriv->processMessageQueue(); mPriv->processChatStateQueue(); } void TextChannel::onMessageReceived(const MessagePartList &parts) { if (!mPriv->initialMessagesReceived) { return; } mPriv->incompleteMessages << new Private::MessageEvent( ReceivedMessage(parts, TextChannelPtr(this))); mPriv->processMessageQueue(); } void TextChannel::onPendingMessagesRemoved(const UIntList &ids) { if (!mPriv->initialMessagesReceived) { return; } foreach (uint id, ids) { mPriv->incompleteMessages << new Private::MessageEvent(id); } mPriv->processMessageQueue(); } void TextChannel::onTextSent(uint timestamp, uint type, const QString &text) { emit messageSent(Message(timestamp, type, text), 0, QLatin1String("")); } void TextChannel::onTextReceived(uint id, uint timestamp, uint sender, uint type, uint flags, const QString &text) { if (!mPriv->initialMessagesReceived) { return; } MessagePart header; if (timestamp == 0) { timestamp = QDateTime::currentDateTime().toTime_t(); } header.insert(QLatin1String("message-received"), QDBusVariant(static_cast(timestamp))); header.insert(QLatin1String("pending-message-id"), QDBusVariant(id)); header.insert(QLatin1String("message-sender"), QDBusVariant(sender)); header.insert(QLatin1String("message-type"), QDBusVariant(type)); if (flags & ChannelTextMessageFlagScrollback) { header.insert(QLatin1String("scrollback"), QDBusVariant(true)); } if (flags & ChannelTextMessageFlagRescued) { header.insert(QLatin1String("rescued"), QDBusVariant(true)); } MessagePart body; body.insert(QLatin1String("content-type"), QDBusVariant(QLatin1String("text/plain"))); body.insert(QLatin1String("content"), QDBusVariant(text)); if (flags & ChannelTextMessageFlagTruncated) { header.insert(QLatin1String("truncated"), QDBusVariant(true)); } MessagePartList parts; parts << header; parts << body; ReceivedMessage m(parts, TextChannelPtr(this)); if (flags & ChannelTextMessageFlagNonTextContent) { // set the "you are not expected to understand this" flag m.setForceNonText(); } mPriv->incompleteMessages << new Private::MessageEvent(m); mPriv->processMessageQueue(); } void TextChannel::onTextSendError(uint error, uint timestamp, uint type, const QString &text) { if (!mPriv->initialMessagesReceived) { return; } MessagePart header; header.insert(QLatin1String("message-received"), QDBusVariant(static_cast( QDateTime::currentDateTime().toTime_t()))); header.insert(QLatin1String("message-type"), QDBusVariant(static_cast( ChannelTextMessageTypeDeliveryReport))); // we can't tell whether it's a temporary or permanent failure here, // so guess based on the delivery-error uint deliveryStatus; switch (error) { case ChannelTextSendErrorOffline: case ChannelTextSendErrorPermissionDenied: deliveryStatus = DeliveryStatusTemporarilyFailed; break; case ChannelTextSendErrorInvalidContact: case ChannelTextSendErrorTooLong: case ChannelTextSendErrorNotImplemented: deliveryStatus = DeliveryStatusPermanentlyFailed; break; case ChannelTextSendErrorUnknown: default: deliveryStatus = DeliveryStatusTemporarilyFailed; break; } header.insert(QLatin1String("delivery-status"), QDBusVariant(deliveryStatus)); header.insert(QLatin1String("delivery-error"), QDBusVariant(error)); MessagePart echoHeader; echoHeader.insert(QLatin1String("message-sent"), QDBusVariant(timestamp)); echoHeader.insert(QLatin1String("message-type"), QDBusVariant(type)); MessagePart echoBody; echoBody.insert(QLatin1String("content-type"), QDBusVariant(QLatin1String("text/plain"))); echoBody.insert(QLatin1String("content"), QDBusVariant(text)); MessagePartList echo; echo << echoHeader; echo << echoBody; header.insert(QLatin1String("delivery-echo"), QDBusVariant(QVariant::fromValue(echo))); MessagePartList parts; parts << header; } void TextChannel::gotProperties(QDBusPendingCallWatcher *watcher) { Q_ASSERT(mPriv->getAllInFlight); mPriv->getAllInFlight = false; mPriv->gotProperties = true; QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Properties::GetAll(Channel.Interface.Messages)" " failed with " << reply.error().name() << ": " << reply.error().message(); ReadinessHelper *readinessHelper = mPriv->readinessHelper; if (readinessHelper->requestedFeatures().contains(FeatureMessageQueue) && !readinessHelper->isReady(Features() << FeatureMessageQueue)) { readinessHelper->setIntrospectCompleted(FeatureMessageQueue, false, reply.error()); } if (readinessHelper->requestedFeatures().contains(FeatureMessageCapabilities) && !readinessHelper->isReady(Features() << FeatureMessageCapabilities)) { readinessHelper->setIntrospectCompleted(FeatureMessageCapabilities, false, reply.error()); } return; } debug() << "Properties::GetAll(Channel.Interface.Messages) returned"; mPriv->props = reply.value(); mPriv->updateInitialMessages(); mPriv->updateCapabilities(); watcher->deleteLater(); } void TextChannel::gotPendingMessages(QDBusPendingCallWatcher *watcher) { Q_ASSERT(!mPriv->initialMessagesReceived); mPriv->initialMessagesReceived = true; QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Properties::GetAll(Channel.Interface.Messages)" " failed with " << reply.error().name() << ": " << reply.error().message(); // TODO should we fail here? mPriv->readinessHelper->setIntrospectCompleted(FeatureMessageQueue, false, reply.error()); return; } debug() << "Text::ListPendingMessages returned"; PendingTextMessageList list = reply.value(); if (!list.isEmpty()) { foreach (const PendingTextMessage &message, list) { onTextReceived(message.identifier, message.unixTimestamp, message.sender, message.messageType, message.flags, message.text); } // processMessageQueue sets FeatureMessageQueue ready when the queue is empty for the first // time } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureMessageQueue, true); } watcher->deleteLater(); } void TextChannel::onChatStateChanged(uint contactHandle, uint state) { mPriv->chatStateQueue.append(new Private::ChatStateEvent( contactHandle, state)); mPriv->processChatStateQueue(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/DBusProxyFactory0000644000175100017520000000040012530423576023332 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusProxyFactory_HEADER_GUARD_ #define _TelepathyQt_DBusProxyFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingCallContent0000644000175100017520000000037612530423576023632 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingCallContent_HEADER_GUARD_ #define _TelepathyQt_PendingCallContent_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/filter.dox0000644000175100017520000000224712530423576022174 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::Filter * \ingroup utils * \headerfile TelepathyQt/filter.h * * \brief The Filter class provides a base class to be used by specialized * filters such as GenericCapabilityFilter, GenericPropertyFilter, etc. */ telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-client.cpp0000644000175100017520000012461112530423576024403 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/stream-tube-client-internal.h" #include "TelepathyQt/_gen/stream-tube-client.moc.hpp" #include "TelepathyQt/_gen/stream-tube-client-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/simple-stream-tube-handler.h" #include #include #include #include #include #include #include namespace Tp { /** * \class StreamTubeClient::TcpSourceAddressGenerator * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-client.h * * \brief The StreamTubeClient::TcpSourceAddressGenerator abstract interface allows using socket * source address/port based access control for connecting to tubes accepted as TCP sockets. * * By default, every application on the local computer is allowed to connect to the socket created * by the protocol backend as the local endpoint of the tube. This is not always desirable, as that * includes even other users. * * Note that since every TCP connection must have an unique source address, only one simultaneous * connection can be made through each tube for which this type of access control has been used. */ /** * \fn QPair StreamTubeClient::TcpSourceAddressGenerator::nextSourceAddress(const AccountPtr &, const * IncomingStreamTubeChannelPtr &) * * Return the source address from which connections will be allowed to the given \a tube once it has * been accepted. * * Returning the pair (QHostAddress::Any, 0) (or alternatively (QHostAddress::AnyIPv4, 0) in Qt5) * makes the protocol backend allow connections from any address on the local computer. * This can be used on a tube-by-tube basis if for some tubes its known that multiple connections * need to be made, so a single source address doesn't suffice. * * The \a account and \a tube parameters can be inspected to make the decision; typically by looking * at the tube's service type, parameters and/or initiator contact. * * The general pattern for implementing this method is: *
    *
  1. Determine whether \a tube needs to allow multiple connections, and if so, skip source address * access control completely
  2. *
  3. Otherwise, create a socket and bind it to a free address
  4. *
  5. Return this socket's address
  6. *
  7. Keep the socket bound so that no other process can (accidentally or maliciously) take the * address until it's used to connect to the tube when StreamTubeClient::tubeAcceptedAsTcp() is * emitted for the tube
  8. *
* * \param account The account from which the tube originates. * \param tube The tube channel which is going to be accepted by the StreamTubeClient. * * \return A pair containing the host address and port allowed to connect. */ /** * \fn StreamTubeClient::TcpSourceAddressGenerator::~TcpSourceAddressGenerator * * Class destructor. Protected, because StreamTubeClient never deletes a TcpSourceAddressGenerator passed * to it. */ struct TP_QT_NO_EXPORT StreamTubeClient::Tube::Private : public QSharedData { // empty placeholder for now }; /** * \class StreamTubeClient::Tube * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-client.h * * \brief The StreamTubeClient::Tube class represents a tube being handled by the client. */ /** * Constructs a new invalid Tube instance. */ StreamTubeClient::Tube::Tube() { // invalid instance } /** * Constructs a Tube instance for the given tube \a channel from the given \a account. * * \param account A pointer to the account the online connection of which the tube originates from. * \param channel A pointer to the tube channel object. */ StreamTubeClient::Tube::Tube( const AccountPtr &account, const IncomingStreamTubeChannelPtr &channel) : QPair(account, channel), mPriv(new Private) { } /** * Copy constructor. */ StreamTubeClient::Tube::Tube( const Tube &other) : QPair(other.account(), other.channel()), mPriv(other.mPriv) { } /** * Class destructor. */ StreamTubeClient::Tube::~Tube() { // mPriv deleted automatically } /** * Assignment operator. */ StreamTubeClient::Tube &StreamTubeClient::Tube::operator=( const Tube &other) { if (&other == this) { return *this; } first = other.account(); second = other.channel(); mPriv = other.mPriv; return *this; } /** * \fn bool StreamTubeClient::Tube::isValid() const * * Return whether or not the tube is valid or is just the null object created using the default * constructor. * * \return \c true if valid, \c false otherwise. */ /** * \fn AccountPtr StreamTubeClient::Tube::account() const * * Return the account from which the tube originates. * * \return A pointer to the account object. */ /** * \fn IncomingStreamTubeChannelPtr StreamTubeClient::Tube::channel() const * * Return the actual tube channel. * * \return A pointer to the channel. */ struct TP_QT_NO_EXPORT StreamTubeClient::Private { Private(const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &maybeClientName, bool monitorConnections, bool bypassApproval) : registrar(registrar), handler(SimpleStreamTubeHandler::create( p2pServices, roomServices, false, monitorConnections, bypassApproval)), clientName(maybeClientName), isRegistered(false), acceptsAsTcp(false), acceptsAsUnix(false), tcpGenerator(0), requireCredentials(false) { if (clientName.isEmpty()) { clientName = QString::fromLatin1("TpQtSTubeClient_%1_%2") .arg(registrar->dbusConnection().baseService() .replace(QLatin1Char(':'), QLatin1Char('_')) .replace(QLatin1Char('.'), QLatin1Char('_'))) .arg((quintptr) this, 0, 16); } } void ensureRegistered() { if (isRegistered) { return; } debug() << "Register StreamTubeClient with name " << clientName; if (registrar->registerClient(handler, clientName)) { isRegistered = true; } else { warning() << "StreamTubeClient" << clientName << "registration failed"; } } ClientRegistrarPtr registrar; SharedPtr handler; QString clientName; bool isRegistered; bool acceptsAsTcp, acceptsAsUnix; TcpSourceAddressGenerator *tcpGenerator; bool requireCredentials; QHash tubes; }; StreamTubeClient::TubeWrapper::TubeWrapper( const AccountPtr &acc, const IncomingStreamTubeChannelPtr &tube, const QHostAddress &sourceAddress, quint16 sourcePort, StreamTubeClient *parent) : QObject(parent), mAcc(acc), mTube(tube), mSourceAddress(sourceAddress), mSourcePort(sourcePort) { QHostAddress hostAddress = sourceAddress; if (sourcePort != 0) { #if QT_VERSION >= 0x050000 if (hostAddress == QHostAddress::Any || hostAddress == QHostAddress::LocalHost) { hostAddress = QHostAddress::AnyIPv4; } #endif if ((hostAddress.protocol() == QAbstractSocket::IPv4Protocol && !tube->supportsIPv4SocketsWithSpecifiedAddress()) || (hostAddress.protocol() == QAbstractSocket::IPv6Protocol && !tube->supportsIPv6SocketsWithSpecifiedAddress())) { debug() << "StreamTubeClient falling back to Localhost AC for tube" << tube->objectPath(); mSourceAddress = sourceAddress.protocol() == QAbstractSocket::IPv4Protocol ? QHostAddress::Any : QHostAddress::AnyIPv6; mSourcePort = 0; } } connect(tube->acceptTubeAsTcpSocket(mSourceAddress, mSourcePort), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onTubeAccepted(Tp::PendingOperation*))); connect(tube.data(), SIGNAL(newConnection(uint)), SLOT(onNewConnection(uint))); connect(tube.data(), SIGNAL(connectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString))); } StreamTubeClient::TubeWrapper::TubeWrapper( const AccountPtr &acc, const IncomingStreamTubeChannelPtr &tube, bool requireCredentials, StreamTubeClient *parent) : QObject(parent), mAcc(acc), mTube(tube), mSourcePort(0) { if (requireCredentials && !tube->supportsUnixSocketsWithCredentials()) { debug() << "StreamTubeClient falling back to Localhost AC for tube" << tube->objectPath(); requireCredentials = false; } connect(tube->acceptTubeAsUnixSocket(requireCredentials), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onTubeAccepted(Tp::PendingOperation*))); connect(tube.data(), SIGNAL(newConnection(uint)), SLOT(onNewConnection(uint))); connect(tube.data(), SIGNAL(connectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString))); } void StreamTubeClient::TubeWrapper::onTubeAccepted(Tp::PendingOperation *op) { emit acceptFinished(this, qobject_cast(op)); } void StreamTubeClient::TubeWrapper::onNewConnection(uint conn) { emit newConnection(this, conn); } void StreamTubeClient::TubeWrapper::onConnectionClosed(uint conn, const QString &error, const QString &message) { emit connectionClosed(this, conn, error, message); } /** * \class StreamTubeClient * \ingroup serverclient * \headerfile TelepathyQt/stream-tube-client.h * * \brief The StreamTubeClient class is a Handler implementation for incoming %Stream %Tube channels, * allowing an application to easily get notified about services they can connect to offered to them * over Telepathy Tubes without worrying about the channel dispatching details. * * Telepathy Tubes is a technology for connecting arbitrary applications together through the IM * network (and sometimes with direct peer-to-peer connections), such that issues like firewall/NAT * traversal are automatically handled. Stream Tubes in particular offer properties similar to * SOCK_STREAM sockets. The StreamTubeClient class negotiates tubes offered to us so that an * application can connect such bytestream sockets of theirs to them. The StreamTubeServer class is * the counterpart, offering services from a bytestream socket server to tubes requested to be * initiated. * * Both peer-to-peer (\c TargetHandleType == \ref HandleTypeContact) and group (\c TargetHandleType * == \ref HandleTypeRoom) channels are supported, and it's possible to specify the tube services to * handle for each separately. There must be at least one service in total declared, as it never * makes sense to handle stream tubes without considering the protocol of the service offered * through them. * * %Connection monitoring allows fine-grained error reporting for connections made through tubes, * and observing connections being made and broken even if the application code running * StreamTubeClient can't easily get this information from the code actually connecting through it. * Such a setting might occur e.g. when a wrapper application is developed to connect some existing * "black box" networked application through TCP tubes by launching it with the appropriate command * line arguments or alike for accepted tubes. * * Enabling connection monitoring adds a small overhead and latency to handling each incoming tube * and signaling each new incoming connection over them, though, so use it only when needed. * * A service activated Handler can be implemented using StreamTubeClient by passing a predefined \a * clientName manually to the chosen create() method, and installing Telepathy \c .client and D-Bus * \c .service files declaring the implemented tube services as channel classes and a path to the * executable. If this is not needed, the \a clientName can be omitted, in which case a random * unique client name is generated and used instead. However, then the tube client application must * already be running for remote contacts to be able to offer services to us over tubes. * * Whether the Handler application implemented using StreamTubeClient is service activatable or not, * incoming channels will typically first be given to an Approver, if there is one for tube services * corresponding to the tube in question. Only if the Approver decides that the tube communication * should be allowed (usually by asking the user), or if there is no matching Approver at all, is * the channel given to the actual Handler tube client. This can be overridden by setting \a * bypassApproval to \c true, which skips approval for the given services completely and directs * them straight to the Handler. * * StreamTubeClient shares Account, Connection and Channel proxies and Contact objects with the * rest of the application as long as a reference to the AccountManager, ClientRegistrar, or the * factories used elsewhere is passed to the create() method. A stand-alone tube client Handler can * get away without passing these however, or just passing select factories to make the desired * features prepared and subclasses employed for these objects for their own convenience. * * Whichever method is used, the ChannelFactory (perhaps indirectly) given must construct * IncomingStreamTubeChannel instances or subclasses thereof for all channel classes corresponding * to the tube services the client should be able to connect to. This is the default; overriding it * without obeying these constraints using ChannelFactory::setSubclassForIncomingStreamTubes() or * the related methods for room tubes prevents StreamTubeClient from operating correctly. * * \todo Coin up a small Python script or alike to easily generate the .client and .service files. * (fd.o #41614) */ /** * Create a new StreamTubeClient, which will register itself on the session bus using an internal * ClientRegistrar and use the given factories. * * \param p2pServices Names of the tube services to accept on peer-to-peer tube channels. * \param roomServices Names of the tube services to accept on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. * \param bypassApproval \c true to skip approval, \c false to invoke an Approver for incoming * channels if there is one. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. */ StreamTubeClientPtr StreamTubeClient::create( const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, bool bypassApproval, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return create( QDBusConnection::sessionBus(), accountFactory, connectionFactory, channelFactory, contactFactory, p2pServices, roomServices, clientName, monitorConnections, bypassApproval); } /** * Create a new StreamTubeClient, which will register itself on the given \a bus using an internal * ClientRegistrar and use the given factories. * * The factories must all be created for the given \a bus. * * \param bus Connection to the bus to register on. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. * \param bypassApproval \c true to skip approval, \c false to invoke an Approver for incoming * channels if there is one. */ StreamTubeClientPtr StreamTubeClient::create( const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, bool bypassApproval) { return create( ClientRegistrar::create( bus, accountFactory, connectionFactory, channelFactory, contactFactory), p2pServices, roomServices, clientName, monitorConnections, bypassApproval); } /** * Create a new StreamTubeClient, which will register itself on the bus of and share objects with * the given \a accountManager, creating an internal ClientRegistrar. * * \param accountManager A pointer to the account manager to link up with. * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. * \param bypassApproval \c true to skip approval, \c false to invoke an Approver for incoming * channels if there is one. */ StreamTubeClientPtr StreamTubeClient::create( const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, bool bypassApproval) { return create( accountManager->dbusConnection(), accountManager->accountFactory(), accountManager->connectionFactory(), accountManager->channelFactory(), accountManager->contactFactory(), p2pServices, roomServices, clientName, monitorConnections, bypassApproval); } /** * Create a new StreamTubeClient, which will register itself on the bus of and using the given * client \a registrar, and share objects with it. * * \param registrar The client registrar to use. * \param p2pServices Names of the tube services to handle on peer-to-peer tube channels. * \param roomServices Names of the tube services to handle on room/group tube channels. * \param clientName The client name (without the \c org.freedesktop.Telepathy.Client. prefix). * \param monitorConnections Whether to enable connection monitoring or not. * \param bypassApproval \c true to skip approval, \c false to invoke an Approver for incoming * channels if there is one. */ StreamTubeClientPtr StreamTubeClient::create( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, bool bypassApproval) { if (p2pServices.isEmpty() && roomServices.isEmpty()) { warning() << "Tried to create a StreamTubeClient with no services, returning NULL"; return StreamTubeClientPtr(); } return StreamTubeClientPtr( new StreamTubeClient(registrar, p2pServices, roomServices, clientName, monitorConnections, bypassApproval)); } StreamTubeClient::StreamTubeClient( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, bool bypassApproval) : mPriv(new Private(registrar, p2pServices, roomServices, clientName, monitorConnections, bypassApproval)) { connect(mPriv->handler.data(), SIGNAL(invokedForTube( Tp::AccountPtr, Tp::StreamTubeChannelPtr, QDateTime, Tp::ChannelRequestHints)), SLOT(onInvokedForTube( Tp::AccountPtr, Tp::StreamTubeChannelPtr, QDateTime, Tp::ChannelRequestHints))); } /** * Class destructor. */ StreamTubeClient::~StreamTubeClient() { if (isRegistered()) { mPriv->registrar->unregisterClient(mPriv->handler); } delete mPriv; } /** * Return the client registrar used by the client to register itself as a Telepathy channel Handler * %Client. * * This is the registrar originally passed to * create(const ClientRegistrarPtr &, const QStringList &, const QStringList &, const QString &, bool, bool) * if that was used, and an internally constructed one otherwise. In any case, it can be used to * e.g. register further clients, just like any other ClientRegistrar. * * \return A pointer to the registrar. */ ClientRegistrarPtr StreamTubeClient::registrar() const { return mPriv->registrar; } /** * Return the Telepathy %Client name of the client. * * \return The name, without the \c org.freedesktop.Telepathy.Client. prefix of the full D-Bus service name. */ QString StreamTubeClient::clientName() const { return mPriv->clientName; } /** * Return whether the client has been successfully registered or not. * * Registration is attempted, at the latest, when the client is first set to accept incoming tubes, * either as TCP sockets (setToAcceptAsTcp()) or Unix ones (setToAcceptAsUnix()). It can fail e.g. * because the connection to the bus has failed, or a predefined \a clientName has been passed to * create(), and a %Client with the same name is already registered. Typically, failure registering * would be a fatal error for a stand-alone tube handler, but only a warning event for an * application serving other purposes. In any case, a high-quality user of the API will check the * return value of this accessor after choosing the desired address family. * * \return \c true if the client has been successfully registered, \c false if not. */ bool StreamTubeClient::isRegistered() const { return mPriv->isRegistered; } /** * Return whether connection monitoring is enabled on this client. * * For technical reasons, connection monitoring can't be enabled when the client is already running, * so there is no corresponding setter method. It has to be enabled by passing \c true as the \a * monitorConnections parameter to the create() method. * * If connection monitoring isn't enabled, newConnection() and connectionClosed() won't be * emitted and connections() won't be populated. * * \return \c true if monitoring is enabled, \c false if not. */ bool StreamTubeClient::monitorsConnections() const { return mPriv->handler->monitorsConnections(); } /** * Return whether the client is currently set to accept incoming tubes as TCP sockets. * * \return \c true if the client will accept tubes as TCP sockets, \c false if it will accept them * as Unix ones or hasn't been set to accept at all yet. */ bool StreamTubeClient::acceptsAsTcp() const { return mPriv->acceptsAsTcp; } /** * Return the TCP source address generator, if any, set by setToAcceptAsTcp() previously. * * \return A pointer to the generator instance. */ StreamTubeClient::TcpSourceAddressGenerator *StreamTubeClient::tcpGenerator() const { if (!acceptsAsTcp()) { warning() << "StreamTubeClient::tcpGenerator() used, but not accepting as TCP, returning 0"; return 0; } return mPriv->tcpGenerator; } /** * Return whether the client is currently set to accept incoming tubes as Unix sockets. * * \return \c true if the client will accept tubes as Unix sockets, \c false if it will accept them * as TCP ones or hasn't been set to accept at all yet. */ bool StreamTubeClient::acceptsAsUnix() const { return mPriv->acceptsAsUnix; } /** * Set the client to accept tubes received to handle in the future in a fashion which will yield a * TCP socket as the local endpoint to connect to. * * A source address generator can optionally be set. If non-null, it will be invoked for each new * tube received to handle and an attempt is made to restrict connections to the tube's local socket * endpoint to those from that source address. * * However, if the protocol backend doesn't actually support source address based access control, * tubeAcceptedAsTcp() will be emitted with QHostAddress::Any * as the allowed source address to signal that it doesn't matter where we connect from, but more * importantly, that anybody else on the same host could have, and can, connect to the tube. * The tube can be closed at this point if this would be unacceptable security-wise. * To totally prevent the tube from being accepted in the first place, one can close it already when * tubeOffered() is emitted for it - support for the needed security mechanism can be queried using * its supportsIPv4SocketsWithSpecifiedAddress() accessor. * * The handler is registered on the bus at the latest when this method or setToAcceptAsUnix() is * called for the first time, so one should check the return value of isRegistered() at that point * to verify that was successful. * * \param generator A pointer to the source address generator to use, or 0 to allow all * connections from the local host. * * \todo Make it possible to set the tube client to auto-close tubes if the desired access control * level is not achieved, as an alternative to the current best-effort behavior. */ void StreamTubeClient::setToAcceptAsTcp(TcpSourceAddressGenerator *generator) { mPriv->tcpGenerator = generator; mPriv->acceptsAsTcp = true; mPriv->acceptsAsUnix = false; mPriv->ensureRegistered(); } /** * Set the client to accept tubes received to handle in the future in a fashion which will yield a * Unix socket as the local endpoint to connect to. * * If that doesn't cause problems for the payload protocol, it's possible to increase security by * restricting the processes allowed to connect to the local endpoint socket to those from the same * user ID as the protocol backend is running as by setting \a requireCredentials to \c true. This * requires transmitting a single byte, signaled as the \a credentialByte parameter to the * tubeAcceptedAsUnix() signal, in a \c SCM_CREDS or SCM_CREDENTIALS message, whichever is supported * by the platform, as the first thing after having connected to the socket. Even if the platform * doesn't implement either concept, the byte must still be sent. * * However, not all protocol backends support the credential passing based access control on all the * platforms they can run on. If a tube is offered through such a backend, tubeAcceptedAsUnix() will * be emitted with \a requiresCredentials set to \c false, to signal that a credential byte should * NOT be sent for that tube, and that any local process can or could have connected to the tube * already. The tube can be closed at this point if this would be unacceptable security-wise. To * totally prevent the tube from being accepted in the first place, one can close it already when * tubeOffered() is emitted for it - support for the needed security mechanism can be queried using * its supportsIPv4SocketsWithSpecifiedAddress() * accessor. * * The handler is registered on the bus at the latest when this method or setToAcceptAsTcp() is * called for the first time, so one should check the return value of isRegistered() at that point * to verify that was successful. * * \param requireCredentials \c true to try and restrict connecting by UID, \c false to allow all * connections. * * \todo Make it possible to set the tube client to auto-close tubes if the desired access control * level is not achieved, as an alternative to the current best-effort behavior. */ void StreamTubeClient::setToAcceptAsUnix(bool requireCredentials) { mPriv->tcpGenerator = 0; mPriv->acceptsAsTcp = false; mPriv->acceptsAsUnix = true; mPriv->requireCredentials = requireCredentials; mPriv->ensureRegistered(); } /** * Return the tubes currently handled by the client. * * \return A list of Tube structures containing pointers to the account and tube channel for each * tube. */ QList StreamTubeClient::tubes() const { QList tubes; foreach (TubeWrapper *wrapper, mPriv->tubes.values()) { tubes.push_back(Tube(wrapper->mAcc, wrapper->mTube)); } return tubes; } /** * Return the ongoing connections established through tubes signaled by this client. * * The returned mapping has for each Tube a structure containing pointers to the account and tube * channel objects as keys, with the integer identifiers for the current connections on them as the * values. The IDs are unique amongst the connections active on a single tube at any given time, but * not globally. * * This is effectively a state recovery accessor corresponding to the change notification signals * newConnection() and connectionClosed(). * * The mapping is only populated if connection monitoring was requested when creating the client (so * monitorsConnections() returns \c true). * * \return The connections in a mapping with Tube structures containing pointers to the account and * channel objects for each tube as keys, and the sets of numerical IDs as values. */ QHash > StreamTubeClient::connections() const { QHash > conns; if (!monitorsConnections()) { warning() << "StreamTubeClient::connections() used, but connection monitoring is disabled"; return conns; } foreach (const Tube &tube, tubes()) { if (!tube.channel()->isValid()) { // The tube has been invalidated, so skip it to avoid warnings // We're going to get rid of the wrapper in the next mainloop iteration when we get the // invalidation signal continue; } QSet tubeConns = tube.channel()->connections(); if (!tubeConns.empty()) { conns.insert(tube, tubeConns); } } return conns; } void StreamTubeClient::onInvokedForTube( const AccountPtr &acc, const StreamTubeChannelPtr &tube, const QDateTime &time, const ChannelRequestHints &hints) { Q_ASSERT(isRegistered()); // our SSTH shouldn't be receiving any channels unless it's registered Q_ASSERT(!tube->isRequested()); Q_ASSERT(tube->isValid()); // SSTH won't emit invalid tubes if (mPriv->tubes.contains(tube)) { debug() << "Ignoring StreamTubeClient reinvocation for tube" << tube->objectPath(); return; } IncomingStreamTubeChannelPtr incoming = IncomingStreamTubeChannelPtr::qObjectCast(tube); if (!incoming) { warning() << "The ChannelFactory used by StreamTubeClient must construct" << "IncomingStreamTubeChannel subclasses for Requested=false StreamTubes"; tube->requestClose(); return; } TubeWrapper *wrapper = 0; if (mPriv->acceptsAsTcp) { QPair srcAddr = qMakePair(QHostAddress(QHostAddress::Any), quint16(0)); if (mPriv->tcpGenerator) { srcAddr = mPriv->tcpGenerator->nextSourceAddress(acc, incoming); } wrapper = new TubeWrapper(acc, incoming, srcAddr.first, srcAddr.second, this); } else { Q_ASSERT(mPriv->acceptsAsUnix); // we should only be registered when we're set to accept as either TCP or Unix wrapper = new TubeWrapper(acc, incoming, mPriv->requireCredentials, this); } connect(wrapper, SIGNAL(acceptFinished(TubeWrapper*,Tp::PendingStreamTubeConnection*)), SLOT(onAcceptFinished(TubeWrapper*,Tp::PendingStreamTubeConnection*))); connect(tube.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onTubeInvalidated(Tp::DBusProxy*,QString,QString))); if (monitorsConnections()) { connect(wrapper, SIGNAL(newConnection(TubeWrapper*,uint)), SLOT(onNewConnection(TubeWrapper*,uint))); connect(wrapper, SIGNAL(connectionClosed(TubeWrapper*,uint,QString,QString)), SLOT(onConnectionClosed(TubeWrapper*,uint,QString,QString))); } mPriv->tubes.insert(tube, wrapper); emit tubeOffered(acc, incoming); } void StreamTubeClient::onAcceptFinished(TubeWrapper *wrapper, PendingStreamTubeConnection *conn) { Q_ASSERT(wrapper != NULL); Q_ASSERT(conn != NULL); if (!mPriv->tubes.contains(wrapper->mTube)) { debug() << "StreamTubeClient ignoring Accept result for invalidated tube" << wrapper->mTube->objectPath(); return; } if (conn->isError()) { warning() << "StreamTubeClient couldn't accept tube" << wrapper->mTube->objectPath() << '-' << conn->errorName() << ':' << conn->errorMessage(); if (wrapper->mTube->isValid()) { wrapper->mTube->requestClose(); } wrapper->mTube->disconnect(this); emit tubeClosed(wrapper->mAcc, wrapper->mTube, conn->errorName(), conn->errorMessage()); mPriv->tubes.remove(wrapper->mTube); wrapper->deleteLater(); return; } debug() << "StreamTubeClient accepted tube" << wrapper->mTube->objectPath(); if (conn->addressType() == SocketAddressTypeIPv4 || conn->addressType() == SocketAddressTypeIPv6) { QPair addr = conn->ipAddress(); emit tubeAcceptedAsTcp(addr.first, addr.second, wrapper->mSourceAddress, wrapper->mSourcePort, wrapper->mAcc, wrapper->mTube); } else { emit tubeAcceptedAsUnix(conn->localAddress(), conn->requiresCredentials(), conn->credentialByte(), wrapper->mAcc, wrapper->mTube); } } void StreamTubeClient::onTubeInvalidated(Tp::DBusProxy *proxy, const QString &error, const QString &message) { StreamTubeChannelPtr tube(qobject_cast(proxy)); Q_ASSERT(!tube.isNull()); TubeWrapper *wrapper = mPriv->tubes.value(tube); if (!wrapper) { // Accept finish with error already removed it return; } debug() << "Client StreamTube" << tube->objectPath() << "invalidated - " << error << ':' << message; emit tubeClosed(wrapper->mAcc, wrapper->mTube, error, message); mPriv->tubes.remove(tube); delete wrapper; } void StreamTubeClient::onNewConnection( TubeWrapper *wrapper, uint conn) { Q_ASSERT(monitorsConnections()); emit newConnection(wrapper->mAcc, wrapper->mTube, conn); } void StreamTubeClient::onConnectionClosed( TubeWrapper *wrapper, uint conn, const QString &error, const QString &message) { Q_ASSERT(monitorsConnections()); emit connectionClosed(wrapper->mAcc, wrapper->mTube, conn, error, message); } /** * \fn void StreamTubeClient::tubeOffered(const AccountPtr &account, const * IncomingStreamTubeChannelPtr &tube) * * Emitted when one of the services we're interested in connecting to has been offered by us as a * tube, which we've began handling. * * This is emitted before invoking the TcpSourceAddressGenerator, if any, for the tube. * * \param account A pointer to the account through which the tube was offered. * \param tube A pointer to the actual tube channel. */ /** * \fn void StreamTubeClient::tubeAcceptedAsTcp(const QHostAddress &listenAddress, quint16 * listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const AccountPtr &account, * const IncomingStreamTubeChannelPtr &tube) * * Emitted when a tube offered to us (previously announced with tubeOffered()) has been successfully * accepted and a TCP socket established as the local endpoint, as specified by setToAcceptAsTcp(). * * The allowed source address and port are signaled here if there was a TcpSourceAddressGenerator set * at the time of accepting this tube, it yielded a non-zero address, and the protocol backend * supports source address based access control. This enables the application to use the correct one * of the sockets it currently has bound to the generated addresses. * * \param listenAddress The listen address of the local endpoint socket. * \param listenPort The listen port of the local endpoint socket. * \param sourceAddress The host address allowed to connect to the tube, or QHostAddress::Any * if source address based access control is not in use. * \param sourcePort The port from which connections are allowed to the tube, or 0 if source address * based access control is not in use. * \param account A pointer to the account object through which the tube was offered. * \param tube A pointer to the actual tube channel object. */ // Explicitly specifying Tp:: for this signal's argument types works around a doxygen bug causing it // to confuse the doc here being for StreamTubeServer::tubeClosed :/ /** * \fn void StreamTubeClient::tubeClosed(const Tp::AccountPtr &account, const * Tp::IncomingStreamTubeChannelPtr &tube, const QString &error, const QString &message) * * Emitted when a tube we've been handling (previously announced with tubeOffered()) has * encountered an error or has otherwise been closed from further communication. * * \param account A pointer to the account through which the tube was offered. * \param tube A pointer to the actual tube channel. * \param error The D-Bus error name corresponding to the reason for the closure. * \param message A freeform debug message associated with the error. */ /** * \fn void StreamTubeClient::tubeAcceptedAsUnix(const QHostAddress &listenAddress, quint16 * listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const AccountPtr &account, * const IncomingStreamTubeChannelPtr &tube) * * Emitted when a tube offered to us (previously announced with tubeOffered()) has been successfully * accepted and a Unix socket established as the local endpoint, as specified by setToAcceptAsUnix(). * * The credential byte which should be sent after connecting to the tube (in a SCM_CREDENTIALS or * SCM_CREDS message if supported by the platform) will be signaled here if the client was set to * attempt requiring credentials at the time of accepting this tube, and the protocol backend * supports credential passing based access control. Otherwise, \a requiresCredentials will be false * and no byte or associated out-of-band credentials metadata should be sent. * * \param listenAddress The listen address of the local endpoint socket. * \param requiresCredentials \c true if \a credentialByte should be sent after connecting to the * socket, \c false if not. * \param credentialByte The byte to send if \a requiresCredentials is \c true. * \param account A pointer to the account object through which the tube was offered. * \param tube A pointer to the actual tube channel object. */ /** * \fn void StreamTubeClient::newConnection(const AccountPtr &account, const * IncomingStreamTubeChannelPtr &tube, uint connectionId) * * Emitted when a new connection has been made to the local endpoint socket for \a tube. * * This can be used to later associate connection errors reported by connectionClosed() with the * corresponding application sockets. However, establishing the association generally requires * connecting only one socket at a time, waiting for newConnection() to be emitted, and only then * proceeding, as there is no identification for the connections unlike the incoming connections in * StreamTubeServer. * * Note that the connection IDs are only unique within a given tube, so identification of the tube * channel must also be recorded together with the ID to establish global uniqueness. Even then, the * a connection ID can be reused after the previous connection identified by it having been * signaled as closed with connectionClosed(). * * This is only emitted if connection monitoring was enabled when creating the StreamTubeClient. * * \param account A pointer to the account through which the tube was offered. * \param tube A pointer to the tube channel through which the connection has been made. * \param connectionId The integer ID of the new connection. */ /** * \fn void StreamTubeClient::connectionClosed(const AccountPtr &account, const * IncomingStreamTubeChannelPtr &tube, uint connectionId, const QString &error, const * QString &message) * * Emitted when a connection (previously announced with newConnection()) through one of our * handled tubes has been closed due to an error or by a graceful disconnect (in which case the * error is ::TP_QT_ERROR_CANCELLED). * * This is only emitted if connection monitoring was enabled when creating the StreamTubeClient. * * \param account A pointer to the account through which the tube was offered. * \param tube A pointer to the tube channel through which the connection had been made. * \param connectionId The integer ID of the connection closed. * \param error The D-Bus error name corresponding to the reason for the closure. * \param message A freeform debug message associated with the error. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/examples.dox0000644000175100017520000001026012530423576022517 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \page accounts_example Accounts Example * * \li \subpage accounts_example_account_item_cpp * \li \subpage accounts_example_account_item_h * \li \subpage accounts_example_accounts_window_cpp * \li \subpage accounts_example_accounts_window_h * \li \subpage accounts_example_main */ /** * \page accounts_example_account_item_cpp accounts/account-item.cpp * \include examples/accounts/account-item.cpp */ /** * \page accounts_example_account_item_h accounts/account-item.h * \include examples/accounts/account-item.h */ /** * \page accounts_example_accounts_window_cpp accounts/accounts-window.cpp * \include examples/accounts/accounts-window.cpp */ /** * \page accounts_example_accounts_window_h accounts/accounts-window.h * \include examples/accounts/accounts-window.h */ /** * \page accounts_example_main accounts/main.cpp * \include examples/accounts/main.cpp */ /** * \page contact_messenger_example Contact Messenger Example * * \li \subpage contact_messenger_example_sender_cpp * \li \subpage contact_messenger_example_sender_h */ /** * \page contact_messenger_example_sender_cpp contact-messenger/sender.cpp * \include examples/contact-messenger/sender.cpp */ /** * \page contact_messenger_example_sender_h contact-messenger/sender.h * \include examples/contact-messenger/sender.h */ /** * \page protocols_example Protocols Example * * \li \subpage protocols_example_main * \li \subpage protocols_example_cm_wrapper_cpp * \li \subpage protocols_example_cm_wrapper_h * \li \subpage protocols_example_protocols_cpp * \li \subpage protocols_example_protocols_h */ /** * \page protocols_example_main protocols/main.cpp * \include examples/protocols/main.cpp */ /** * \page protocols_example_cm_wrapper_cpp protocols/cm-wrapper.cpp * \include examples/protocols/cm-wrapper.cpp */ /** * \page protocols_example_cm_wrapper_h protocols/cm-wrapper.h * \include examples/protocols/cm-wrapper.h */ /** * \page protocols_example_protocols_cpp protocols/protocols.cpp * \include examples/protocols/protocols.cpp */ /** * \page protocols_example_protocols_h protocols/protocols.h * \include examples/protocols/protocols.h */ /** * \page roster_example Roster Example * * \li \subpage roster_example_main * \li \subpage roster_example_roster_item_cpp * \li \subpage roster_example_roster_item_h * \li \subpage roster_example_roster_widget_cpp * \li \subpage roster_example_roster_widget_h * \li \subpage roster_example_roster_window_cpp * \li \subpage roster_example_roster_window_h */ /** * \page roster_example_main roster/main.cpp * \include examples/roster/main.cpp */ /** * \page roster_example_roster_item_cpp roster/roster-item.cpp * \include examples/roster/roster-item.cpp */ /** * \page roster_example_roster_item_h roster/roster-item.h * \include examples/roster/roster-item.h */ /** * \page roster_example_roster_widget_cpp roster/roster-widget.cpp * \include examples/roster/roster-widget.cpp */ /** * \page roster_example_roster_widget_h roster/roster-widget.h * \include examples/roster/roster-widget.h */ /** * \page roster_example_roster_window_cpp roster/roster-window.cpp * \include examples/roster/roster-window.cpp */ /** * \page roster_example_roster_window_h roster/roster-window.h * \include examples/roster/roster-window.h */ telepathy-qt-0.9.6.1/TelepathyQt/SimpleCallObserver0000644000175100017520000000040612530423576023646 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_SimpleCallObserver_HEADER_GUARD_ #define _TelepathyQt_SimpleCallObserver_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/simple-call-observer.cpp0000644000175100017520000003212612530423576024725 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/simple-call-observer.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT SimpleCallObserver::Private { Private(SimpleCallObserver *parent, const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization, CallDirection direction); SimpleCallObserver *parent; AccountPtr account; QString contactIdentifier; CallDirection direction; SimpleObserverPtr observer; }; SimpleCallObserver::Private::Private(SimpleCallObserver *parent, const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization, CallDirection direction) : parent(parent), account(account), contactIdentifier(contactIdentifier), direction(direction) { debug() << "Creating a new SimpleCallObserver"; ChannelClassSpec channelFilterSMC = ChannelClassSpec::streamedMediaCall(); ChannelClassSpec channelFilterCall = ChannelClassSpec::mediaCall(); if (direction == CallDirectionIncoming) { channelFilterSMC.setRequested(false); channelFilterCall.setRequested(false); } else if (direction == CallDirectionOutgoing) { channelFilterSMC.setRequested(true); channelFilterCall.setRequested(true); } observer = SimpleObserver::create(account, ChannelClassSpecList() << channelFilterSMC << channelFilterCall, contactIdentifier, requiresNormalization, QList()); parent->connect(observer.data(), SIGNAL(newChannels(QList)), SLOT(onNewChannels(QList))); parent->connect(observer.data(), SIGNAL(channelInvalidated(Tp::ChannelPtr,QString,QString)), SLOT(onChannelInvalidated(Tp::ChannelPtr,QString,QString))); } /** * \class SimpleCallObserver * \ingroup utils * \headerfile TelepathyQt/simple-call-observer.h * * \brief The SimpleCallObserver class provides an easy way to track calls * in an account and can be optionally filtered by a contact and/or * call direction. */ /** * Create a new SimpleCallObserver object. * * Events will be signalled for all calls in \a account that respect \a direction. * * \param account The account used to listen to events. * \param direction The direction of the calls used to filter events. * \return An SimpleCallObserverPtr object pointing to the newly created * SimpleCallObserver object. */ SimpleCallObserverPtr SimpleCallObserver::create(const AccountPtr &account, CallDirection direction) { return create(account, QString(), false, direction); } /** * Create a new SimpleCallObserver object. * * Events will be signalled for all calls in \a account established with \a contact and * that respect \a direction. * * \param account The account used to listen to events. * \param contact The contact used to filter events. * \param direction The direction of the calls used to filter events. * \return An SimpleCallObserverPtr object pointing to the newly created * SimpleCallObserver object. */ SimpleCallObserverPtr SimpleCallObserver::create(const AccountPtr &account, const ContactPtr &contact, CallDirection direction) { if (contact) { return create(account, contact->id(), false, direction); } return create(account, QString(), false, direction); } /** * Create a new SimpleCallObserver object. * * Events will be signalled for all calls in \a account established with a contact identified by \a * contactIdentifier and that respect \a direction. * * \param account The account used to listen to events. * \param contactIdentifier The identifier of the contact used to filter events. * \param direction The direction of the calls used to filter events. * \return An SimpleCallObserverPtr object pointing to the newly created * SimpleCallObserver object. */ SimpleCallObserverPtr SimpleCallObserver::create(const AccountPtr &account, const QString &contactIdentifier, CallDirection direction) { return create(account, contactIdentifier, true, direction); } SimpleCallObserverPtr SimpleCallObserver::create(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization, CallDirection direction) { return SimpleCallObserverPtr( new SimpleCallObserver(account, contactIdentifier, requiresNormalization, direction)); } /** * Construct a new SimpleCallObserver object. * * \param account The account used to listen to events. * \param contactIdentifier The identifier of the contact used to filter events. * \param requiresNormalization Whether \a contactIdentifier needs to be * normalized. * \param direction The direction of the calls used to filter events. * \return An SimpleCallObserverPtr object pointing to the newly created * SimpleCallObserver object. */ SimpleCallObserver::SimpleCallObserver(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization, CallDirection direction) : mPriv(new Private(this, account, contactIdentifier, requiresNormalization, direction)) { } /** * Class destructor. */ SimpleCallObserver::~SimpleCallObserver() { delete mPriv; } /** * Return the account used to listen to events. * * \return A pointer to the Account object. */ AccountPtr SimpleCallObserver::account() const { return mPriv->account; } /** * Return the identifier of the contact used to filter events, or an empty string if none was * provided at construction. * * \return The identifier of the contact. */ QString SimpleCallObserver::contactIdentifier() const { return mPriv->contactIdentifier; } /** * Return the direction of the calls used to filter events. * * \return The direction of the calls as SimpleCallObserver::CallDirection. */ SimpleCallObserver::CallDirection SimpleCallObserver::direction() const { return mPriv->direction; } /** * Return the list of calls currently being observed. * * \return A list of pointers to CallChannel objects. */ QList SimpleCallObserver::calls() const { QList ret; foreach (const ChannelPtr &channel, mPriv->observer->channels()) { CallChannelPtr callChannel = CallChannelPtr::qObjectCast(channel); if (callChannel) { ret << callChannel; } } return ret; } /** * Return the list of streamed media calls currently being observed. * * \deprecated Use calls() instead. Modern clients shouldn't use StreamedMedia channels. * \return A list of pointers to StreamedMediaChannel objects. */ QList SimpleCallObserver::streamedMediaCalls() const { QList ret; foreach (const ChannelPtr &channel, mPriv->observer->channels()) { StreamedMediaChannelPtr smChannel = StreamedMediaChannelPtr::qObjectCast(channel); if (smChannel) { ret << smChannel; } } return ret; } void SimpleCallObserver::onNewChannels(const QList &channels) { foreach (const ChannelPtr &channel, channels) { if (channel->channelType() == TP_QT_IFACE_CHANNEL_TYPE_CALL) { CallChannelPtr callChannel = CallChannelPtr::qObjectCast(channel); if (!callChannel) { warning() << "Channel received to observe is not a subclass of " "CallChannel. ChannelFactory set on this observer's account must " "construct CallChannel subclasses for channels of type Call. " "Ignoring channel"; continue; } emit callStarted(callChannel); } else if (channel->channelType() == TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA) { StreamedMediaChannelPtr smChannel = StreamedMediaChannelPtr::qObjectCast(channel); if (!smChannel) { warning() << "Channel received to observe is not a subclass of " "StreamedMediaChannel. ChannelFactory set on this observer's account must " "construct StreamedMediaChannel subclasses for channels of type StreamedMedia. " "Ignoring channel"; continue; } emit streamedMediaCallStarted(smChannel); } else { warning() << "Channel received to observe is not of type Call or StreamedMedia, " "service confused. Ignoring channel"; continue; } } } void SimpleCallObserver::onChannelInvalidated(const ChannelPtr &channel, const QString &errorName, const QString &errorMessage) { if (channel->channelType() == TP_QT_IFACE_CHANNEL_TYPE_CALL) { CallChannelPtr callChannel = CallChannelPtr::qObjectCast(channel); if (!callChannel) { warning() << "Channel received to observe is not a subclass of " "CallChannel. ChannelFactory set on this observer's account must " "construct CallChannel subclasses for channels of type Call. " "Ignoring channel"; return; } emit callEnded(callChannel, errorName, errorMessage); } else if (channel->channelType() == TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA) { StreamedMediaChannelPtr smChannel = StreamedMediaChannelPtr::qObjectCast(channel); if (!smChannel) { warning() << "Channel received to observe is not a subclass of " "StreamedMediaChannel. ChannelFactory set on this observer's account must " "construct StreamedMediaChannel subclasses for channels of type StreamedMedia. " "Ignoring channel"; return; } emit streamedMediaCallEnded(smChannel, errorName, errorMessage); } else { warning() << "Channel received to observe is not of type Call or StreamedMedia, " "service confused. Ignoring channel"; } } /** * \fn void SimpleCallObserver::callStarted(const Tp::CallChannelPtr &channel) * * Emitted whenever a call that matches this observer's criteria is started. * * \param channel The channel representing the call that started. */ /** * \fn void SimpleCallObserver::callEnded(const Tp::CallChannelPtr &channel, * const QString &errorName, const QString &errorMessage) * * Emitted whenever a call that matches this observer's criteria has ended. * * \param channel The channel representing the call that ended. * \param errorName A D-Bus error name (a string in a subset * of ASCII, prefixed with a reversed domain name). * \param errorMessage A debugging message associated with the error. */ /** * \fn void SimpleCallObserver::streamedMediaCallStarted(const Tp::StreamedMediaChannelPtr &channel) * * Emitted whenever a streamed media call that matches this observer's criteria is * started. * * \param channel The channel representing the streamed media call that started. * \deprecated Use callStarted() instead. Modern clients shouldn't use StreamedMedia channels. */ /** * \fn void SimpleCallObserver::streamedMediaCallEnded(const Tp::StreamedMediaChannelPtr &channel, * const QString &errorName, const QString &errorMessage) * * Emitted whenever a streamed media call that matches this observer's criteria has * ended. * * \param channel The channel representing the streamed media call that ended. * \param errorName A D-Bus error name (a string in a subset * of ASCII, prefixed with a reversed domain name). * \param errorMessage A debugging message associated with the error. * \deprecated Use callEnded() instead. Modern clients shouldn't use StreamedMedia channels. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/protocol-info.h0000644000175100017520000000651012530423576023133 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_protocol_info_h_HEADER_GUARD_ #define _TelepathyQt_protocol_info_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include namespace Tp { class ConnectionCapabilities; class PendingString; class TP_QT_EXPORT ProtocolInfo { public: ProtocolInfo(); ProtocolInfo(const ProtocolInfo &other); ~ProtocolInfo(); bool isValid() const { return mPriv.constData() != 0; } ProtocolInfo &operator=(const ProtocolInfo &other); QString cmName() const; QString name() const; ProtocolParameterList parameters() const; bool hasParameter(const QString &name) const; bool canRegister() const; ConnectionCapabilities capabilities() const; QString vcardField() const; QString englishName() const; QString iconName() const; PresenceSpecList allowedPresenceStatuses() const; AvatarSpec avatarRequirements() const; QStringList addressableVCardFields() const; QStringList addressableUriSchemes() const; PendingString *normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress); PendingString *normalizeContactUri(const QString &uri); private: friend class ConnectionManager; TP_QT_NO_EXPORT ProtocolInfo(const ConnectionManagerPtr &cm, const QString &name); TP_QT_NO_EXPORT void addParameter(const ParamSpec &spec); TP_QT_NO_EXPORT void setVCardField(const QString &vcardField); TP_QT_NO_EXPORT void setEnglishName(const QString &englishName); TP_QT_NO_EXPORT void setIconName(const QString &iconName); TP_QT_NO_EXPORT void setRequestableChannelClasses(const RequestableChannelClassList &caps); TP_QT_NO_EXPORT void setAllowedPresenceStatuses(const PresenceSpecList &statuses); TP_QT_NO_EXPORT void setAvatarRequirements(const AvatarSpec &avatarRequirements); TP_QT_NO_EXPORT void setAddressableVCardFields(const QStringList &vcardFields); TP_QT_NO_EXPORT void setAddressableUriSchemes(const QStringList &uriSchemes); struct Private; friend struct Private; QSharedDataPointer mPriv; }; typedef QList ProtocolInfoList; } // Tp Q_DECLARE_METATYPE(Tp::ProtocolInfo); Q_DECLARE_METATYPE(Tp::ProtocolInfoList); #endif telepathy-qt-0.9.6.1/TelepathyQt/ContactMessenger0000644000175100017520000000037712530423576023364 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ContactMessenger_HEADER_GUARD_ #define _TelepathyQt_ContactMessenger_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/incoming-dbus-tube-channel.cpp0000644000175100017520000001650312530423576026000 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/incoming-dbus-tube-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT IncomingDBusTubeChannel::Private { public: Private(IncomingDBusTubeChannel *parent); // Public object IncomingDBusTubeChannel *parent; }; IncomingDBusTubeChannel::Private::Private(IncomingDBusTubeChannel *parent) : parent(parent) { } /** * \class IncomingDBusTubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/incoming-dbus-tube-channel.h * * \brief The IncomingStreamTubeChannel class represents an incoming Telepathy channel * of type StreamTube. * * In particular, this class is meant to be used as a comfortable way for * accepting incoming DBus tubes. Unless a different behavior is specified, tubes * will be always accepted allowing connections just from the current user, unless this * or one of the other ends do not support that. Unless your application has specific needs, * you usually want to keep this behavior. * * Once a tube is successfully accepted and open (the PendingDBusTubeConnection returned from the * accepting methods has finished), the application can connect to the DBus server, the address of which * can be retrieved from PendingDBusTubeConnection::address(). * * \note If you plan to use QtDBus for the DBus connection, please note you should always use * QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. * The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use * of DBus Tubes through QtDBus. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Create a new IncomingDBusTubeChannel channel. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. * \return A IncomingDBusTubeChannelPtr object pointing to the newly created * IncomingDBusTubeChannel object. */ IncomingDBusTubeChannelPtr IncomingDBusTubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return IncomingDBusTubeChannelPtr(new IncomingDBusTubeChannel(connection, objectPath, immutableProperties)); } /** * Construct a new IncomingDBusTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. */ IncomingDBusTubeChannel::IncomingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) : DBusTubeChannel(connection, objectPath, immutableProperties), mPriv(new Private(this)) { } /** * Class destructor. */ IncomingDBusTubeChannel::~IncomingDBusTubeChannel() { delete mPriv; } /** * Accepts an incoming DBus tube. * * This method accepts an incoming connection request for a DBus tube. It can be called * only if the tube is in the \c LocalPending state. * * Once called, this method will try opening the tube, and will create a new private DBus connection * which can be used to communicate with the other end. You can then * retrieve the address either from \c PendingDBusTubeConnection or from %address(). * * This method requires DBusTubeChannel::FeatureCore to be enabled. * * \param allowOtherUsers Whether the server should allow other users to connect to this tube more * than just the current one. If your application has no specific needs, it is * advisable not to modify the default value of this argument. * * \note If allowOtherUsers == false, but one of the ends does not support current user restriction, * the tube will be offered regardless, falling back to allowing any connection. If your * application requires strictly this condition to be enforced, you should check * DBusTubeChannel::supportsRestrictingToCurrentUser before accepting the tube, * and take action from there. * The tube is guaranteed either to be accepted with the desired * restriction or to fail the accept phase if supportsRestrictingToCurrentUser is true * and allowOtherUsers is false. * * \return A %PendingDBusTubeConnection which will finish as soon as the tube is ready to be used * (hence in the Open state) */ PendingDBusTubeConnection *IncomingDBusTubeChannel::acceptTube(bool allowOtherUsers) { SocketAccessControl accessControl = allowOtherUsers ? SocketAccessControlLocalhost : SocketAccessControlCredentials; if (!isReady(DBusTubeChannel::FeatureCore)) { warning() << "DBusTubeChannel::FeatureCore must be ready before " "calling acceptTube"; return new PendingDBusTubeConnection(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Channel not ready"), IncomingDBusTubeChannelPtr(this)); } // The tube must be in local pending state if (state() != TubeChannelStateLocalPending) { warning() << "You can accept tubes only when they are in LocalPending state"; return new PendingDBusTubeConnection(QLatin1String(TP_QT_ERROR_NOT_AVAILABLE), QLatin1String("Channel busy"), IncomingDBusTubeChannelPtr(this)); } // Let's accept the tube if (!allowOtherUsers && !supportsRestrictingToCurrentUser()) { warning() << "Current user restriction is not available for this tube, " "falling back to allowing any connection"; accessControl = SocketAccessControlLocalhost; } PendingString *ps = new PendingString( interface()->Accept( accessControl), IncomingDBusTubeChannelPtr(this)); PendingDBusTubeConnection *op = new PendingDBusTubeConnection(ps, accessControl == SocketAccessControlLocalhost, QVariantMap(), IncomingDBusTubeChannelPtr(this)); return op; } } telepathy-qt-0.9.6.1/TelepathyQt/StreamedMediaChannel0000644000175100017520000000041412530423576024105 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StreamedMediaChannel_HEADER_GUARD_ #define _TelepathyQt_StreamedMediaChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-error.h0000644000175100017520000000320212530423576022420 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_error_h_HEADER_GUARD_ #define _TelepathyQt_dbus_error_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class TP_QT_EXPORT DBusError { Q_DISABLE_COPY(DBusError) public: DBusError(); DBusError(const QString &name, const QString &message); ~DBusError(); bool isValid() const { return mPriv != 0; } bool operator==(const DBusError &other) const; bool operator!=(const DBusError &other) const; QString name() const; QString message() const; void set(const QString &name, const QString &message); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/optional-interface-factory.h0000644000175100017520000000775212530423576025602 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_optional_interface_factory_h_HEADER_GUARD_ #define _TelepathyQt_optional_interface_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include namespace Tp { class AbstractInterface; #ifndef DOXYGEN_SHOULD_SKIP_THIS class TP_QT_EXPORT OptionalInterfaceCache { Q_DISABLE_COPY(OptionalInterfaceCache) public: explicit OptionalInterfaceCache(QObject *proxy); ~OptionalInterfaceCache(); protected: AbstractInterface *getCached(const QString &name) const; void cache(AbstractInterface *interface) const; QObject *proxy() const; private: struct Private; friend struct Private; Private *mPriv; }; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ template class OptionalInterfaceFactory #ifndef DOXYGEN_SHOULD_SKIP_THIS : private OptionalInterfaceCache #endif { Q_DISABLE_COPY(OptionalInterfaceFactory) public: enum InterfaceSupportedChecking { CheckInterfaceSupported, BypassInterfaceCheck }; inline OptionalInterfaceFactory(DBusProxySubclass *this_) : OptionalInterfaceCache(this_) { } inline ~OptionalInterfaceFactory() { } inline QStringList interfaces() const { return mInterfaces; } inline bool hasInterface(const QString &name) const { return mInterfaces.contains(name); } template inline Interface *optionalInterface( InterfaceSupportedChecking check = CheckInterfaceSupported) const { // Check for the remote object supporting the interface // Note that extra whitespace on "name" declaration is significant to avoid // vexing-parse QString name( (QLatin1String(Interface::staticInterfaceName())) ); if (check == CheckInterfaceSupported && !mInterfaces.contains(name)) { return 0; } // If present or forced, delegate to OptionalInterfaceFactory return interface(); } template inline Interface *interface() const { AbstractInterface* interfaceMustBeASubclassOfAbstractInterface = static_cast(NULL); Q_UNUSED(interfaceMustBeASubclassOfAbstractInterface); // If there is a interface cached already, return it // Note that extra whitespace on "name" declaration is significant to avoid // vexing-parse QString name( (QLatin1String(Interface::staticInterfaceName())) ); AbstractInterface *cached = getCached(name); if (cached) return static_cast(cached); // Otherwise, cache and return a newly constructed proxy Interface *interface = new Interface( static_cast(proxy())); cache(interface); return interface; } protected: inline void setInterfaces(const QStringList &interfaces) { mInterfaces = interfaces; } private: QStringList mInterfaces; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeTubeInterface0000644000175100017520000000042312530423576024763 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Client_ChannelTypeTubeInterface_HEADER_GUARD_ #define _TelepathyQt_Client_ChannelTypeTubeInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/channel-internal.h0000644000175100017520000000327312530423576023566 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_internal_h_HEADER_GUARD_ #define _TelepathyQt_channel_internal_h_HEADER_GUARD_ #include #include namespace Tp { class TP_QT_NO_EXPORT Channel::PendingLeave : public PendingOperation { Q_OBJECT public: PendingLeave(const ChannelPtr &channel, const QString &message, ChannelGroupChangeReason reason); private Q_SLOTS: TP_QT_NO_EXPORT void onChanInvalidated(Tp::DBusProxy *proxy); TP_QT_NO_EXPORT void onRemoveFinished(Tp::PendingOperation *); TP_QT_NO_EXPORT void onMembersChanged(const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &); TP_QT_NO_EXPORT void onCloseFinished(Tp::PendingOperation *); }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceContactInfoInterface0000644000175100017520000000044612530423576030006 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceContactInfoInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceContactInfoInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/file-transfer-channel-creation-properties.h0000644000175100017520000000613712530423576030511 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_file_transfer_channel_creation_properties_h_HEADER_GUARD_ #define _TelepathyQt_file_transfer_channel_creation_properties_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { class TP_QT_EXPORT FileTransferChannelCreationProperties { public: FileTransferChannelCreationProperties(); FileTransferChannelCreationProperties(const QString &suggestedFileName, const QString &contentType, qulonglong size); FileTransferChannelCreationProperties(const QString &path, const QString &contentType); FileTransferChannelCreationProperties( const FileTransferChannelCreationProperties &other); ~FileTransferChannelCreationProperties(); bool isValid() const { return mPriv.constData() != 0; } FileTransferChannelCreationProperties &operator=( const FileTransferChannelCreationProperties &other); bool operator==(const FileTransferChannelCreationProperties &other) const; FileTransferChannelCreationProperties &setContentHash( FileHashType contentHashType, const QString &contentHash); FileTransferChannelCreationProperties &setDescription( const QString &description); FileTransferChannelCreationProperties &setLastModificationTime( const QDateTime &lastModificationTime); FileTransferChannelCreationProperties &setUri(const QString &uri); /* mandatory parameters */ QString suggestedFileName() const; QString contentType() const; qulonglong size() const; /* optional parameters */ bool hasContentHash() const; FileHashType contentHashType() const; QString contentHash() const; bool hasDescription() const; QString description() const; bool hasLastModificationTime() const; QDateTime lastModificationTime() const; bool hasUri() const; QString uri() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::FileTransferChannelCreationProperties); #endif telepathy-qt-0.9.6.1/TelepathyQt/account-set.cpp0000644000175100017520000002745012530423576023127 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/account-set-internal.h" #include "TelepathyQt/_gen/account-set.moc.hpp" #include "TelepathyQt/_gen/account-set-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { AccountSet::Private::Private(AccountSet *parent, const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter) : parent(parent), accountManager(accountManager), filter(filter), ready(false) { init(); } AccountSet::Private::Private(AccountSet *parent, const AccountManagerPtr &accountManager, const QVariantMap &filterMap) : parent(parent), accountManager(accountManager), ready(false) { AccountPropertyFilterPtr propertyFilter = AccountPropertyFilter::create(); for (QVariantMap::const_iterator i = filterMap.constBegin(); i != filterMap.constEnd(); ++i) { propertyFilter->addProperty(i.key(), i.value()); } filter = AccountFilterPtr::dynamicCast(propertyFilter); init(); } void AccountSet::Private::init() { if (filter->isValid()) { connectSignals(); insertAccounts(); ready = true; } } void AccountSet::Private::connectSignals() { parent->connect(accountManager.data(), SIGNAL(newAccount(Tp::AccountPtr)), SLOT(onNewAccount(Tp::AccountPtr))); } void AccountSet::Private::insertAccounts() { foreach (const Tp::AccountPtr &account, accountManager->allAccounts()) { insertAccount(account); } } void AccountSet::Private::insertAccount(const Tp::AccountPtr &account) { QString accountPath = account->objectPath(); Q_ASSERT(!wrappers.contains(accountPath)); wrapAccount(account); filterAccount(account); } void AccountSet::Private::removeAccount(const Tp::AccountPtr &account) { QString accountPath = account->objectPath(); Q_ASSERT(wrappers.contains(accountPath)); accounts.remove(accountPath); AccountWrapper *wrapper = wrappers.take(accountPath); Q_ASSERT(wrapper->disconnect(parent)); wrapper->deleteLater(); emit parent->accountRemoved(account); } void AccountSet::Private::wrapAccount(const AccountPtr &account) { AccountWrapper *wrapper = new AccountWrapper(account, parent); parent->connect(wrapper, SIGNAL(accountRemoved(Tp::AccountPtr)), SLOT(onAccountRemoved(Tp::AccountPtr))); parent->connect(wrapper, SIGNAL(accountPropertyChanged(Tp::AccountPtr,QString)), SLOT(onAccountChanged(Tp::AccountPtr))); parent->connect(wrapper, SIGNAL(accountCapabilitiesChanged(Tp::AccountPtr,Tp::ConnectionCapabilities)), SLOT(onAccountChanged(Tp::AccountPtr))); wrappers.insert(account->objectPath(), wrapper); } void AccountSet::Private::filterAccount(const AccountPtr &account) { QString accountPath = account->objectPath(); Q_ASSERT(wrappers.contains(accountPath)); AccountWrapper *wrapper = wrappers[accountPath]; /* account changed, let's check if it matches filter */ if (accountMatchFilter(wrapper)) { if (!accounts.contains(account->objectPath())) { accounts.insert(account->objectPath(), account); if (ready) { emit parent->accountAdded(account); } } } else { if (accounts.contains(account->objectPath())) { accounts.remove(account->objectPath()); if (ready) { emit parent->accountRemoved(account); } } } } bool AccountSet::Private::accountMatchFilter(AccountWrapper *wrapper) { if (!filter) { return true; } return filter->matches(wrapper->account()); } AccountSet::Private::AccountWrapper::AccountWrapper( const AccountPtr &account, QObject *parent) : QObject(parent), mAccount(account) { connect(account.data(), SIGNAL(removed()), SLOT(onAccountRemoved())); connect(account.data(), SIGNAL(propertyChanged(QString)), SLOT(onAccountPropertyChanged(QString))); connect(account.data(), SIGNAL(capabilitiesChanged(Tp::ConnectionCapabilities)), SLOT(onAccountCapalitiesChanged(Tp::ConnectionCapabilities))); } AccountSet::Private::AccountWrapper::~AccountWrapper() { } void AccountSet::Private::AccountWrapper::onAccountRemoved() { emit accountRemoved(mAccount); } void AccountSet::Private::AccountWrapper::onAccountPropertyChanged( const QString &propertyName) { emit accountPropertyChanged(mAccount, propertyName); } void AccountSet::Private::AccountWrapper::onAccountCapalitiesChanged( const ConnectionCapabilities &caps) { emit accountCapabilitiesChanged(mAccount, caps); } /** * \class AccountSet * \ingroup clientaccount * \headerfile TelepathyQt/account-set.h * * \brief The AccountSet class represents a set of Telepathy accounts * filtered by a given criteria. * * AccountSet is automatically updated whenever accounts that match the given * criteria are added, removed or updated. * * \section account_set_usage_sec Usage * * \subsection account_set_create_sec Creating an AccountSet object * * The easiest way to create AccountSet objects is through AccountManager. One * can just use the AccountManager convenience methods such as * AccountManager::validAccounts() to get a set of account objects * representing valid accounts. * * For example: * * \code * * class MyClass : public QObject * { * QOBJECT * * public: * MyClass(QObject *parent = 0); * ~MyClass() { } * * private Q_SLOTS: * void onAccountManagerReady(Tp::PendingOperation *); * void onValidAccountAdded(const Tp::AccountPtr &); * void onValidAccountRemoved(const Tp::AccountPtr &); * * private: * AccountManagerPtr am; * AccountSetPtr validAccountsSet; * }; * * MyClass::MyClass(QObject *parent) * : QObject(parent) * am(AccountManager::create()) * { * connect(am->becomeReady(), * SIGNAL(finished(Tp::PendingOperation*)), * SLOT(onAccountManagerReady(Tp::PendingOperation*))); * } * * void MyClass::onAccountManagerReady(Tp::PendingOperation *op) * { * if (op->isError()) { * qWarning() << "Account manager cannot become ready:" << * op->errorName() << "-" << op->errorMessage(); * return; * } * * validAccountsSet = am->validAccounts(); * connect(validAccountsSet.data(), * SIGNAL(accountAdded(const Tp::AccountPtr &)), * SLOT(onValidAccountAdded(const Tp::AccountPtr &))); * connect(validAccountsSet.data(), * SIGNAL(accountRemoved(const Tp::AccountPtr &)), * SLOT(onValidAccountRemoved(const Tp::AccountPtr &))); * * QList accounts = validAccountsSet->accounts(); * // do something with accounts * } * * void MyClass::onValidAccountAdded(const Tp::AccountPtr &account) * { * // do something with account * } * * void MyClass::onValidAccountRemoved(const Tp::AccountPtr &account) * { * // do something with account * } * * \endcode * * You can also define your own filter using AccountManager::filterAccounts: * * \code * * void MyClass::onAccountManagerReady(Tp::PendingOperation *op) * { * ... * * AccountPropertyFilterPtr filter = AccountPropertyFilter::create(); * filter->addProperty(QLatin1String("protocolName"), QLatin1String("jabber")); * filter->addProperty(QLatin1String("enabled"), true); * * AccountSetPtr filteredAccountSet = am->filterAccounts(filter); * // connect to AccountSet::accountAdded/accountRemoved signals * QList accounts = filteredAccountSet->accounts(); * // do something with accounts * * .... * } * * \endcode * * Note that for AccountSet to property work with AccountCapabilityFilter * objects, the feature Account::FeatureCapabilities need to be enabled in all * accounts return by the AccountManager passed as param in the constructor. * The easiest way to do this is to enable AccountManager feature * AccountManager::FeatureFilterByCapabilities. * * AccountSet can also be instantiated directly, but when doing it, * the AccountManager object passed as param in the constructor must be ready * for AccountSet properly work. */ /** * Construct a new AccountSet object. * * \param accountManager An account manager object used to filter accounts. * The account manager object must be ready. * \param filter The desired filter. */ AccountSet::AccountSet(const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter) : Object(), mPriv(new Private(this, accountManager, filter)) { } /** * Construct a new AccountSet object. * * The \a filter must contain Account property names and values as map items. * * \param accountManager An account manager object used to filter accounts. * The account manager object must be ready. * \param filter The desired filter. */ AccountSet::AccountSet(const AccountManagerPtr &accountManager, const QVariantMap &filter) : Object(), mPriv(new Private(this, accountManager, filter)) { } /** * Class destructor. */ AccountSet::~AccountSet() { delete mPriv; } /** * Return the account manager object used to filter accounts. * * \return A pointer to the AccountManager object. */ AccountManagerPtr AccountSet::accountManager() const { return mPriv->accountManager; } /** * Return the filter used to filter accounts. * * \return A read-only pointer the AccountFilter object. */ AccountFilterConstPtr AccountSet::filter() const { return mPriv->filter; } /** * Return a list of account objects that match filter. * * Change notification is via the accountAdded() and accountRemoved() signals. * * \return A list of pointers to Account objects. * \sa accountAdded(), accountRemoved() */ QList AccountSet::accounts() const { return mPriv->accounts.values(); } /** * \fn void AccountSet::accountAdded(const Tp::AccountPtr &account) * * Emitted whenever an account that matches filter is added to * this set. * * \param account The account that was added to this set. * \sa accounts() */ /** * \fn void AccountSet::accountRemoved(const Tp::AccountPtr &account) * * Emitted whenever an account that matches filter is removed * from this set. * * \param account The account that was removed from this set. * \sa accounts() */ void AccountSet::onNewAccount(const AccountPtr &account) { mPriv->insertAccount(account); } void AccountSet::onAccountRemoved(const AccountPtr &account) { mPriv->removeAccount(account); } void AccountSet::onAccountChanged(const AccountPtr &account) { mPriv->filterAccount(account); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/file-transfer-channel.h0000644000175100017520000000614412530423576024513 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_file_transfer_channel_h_HEADER_GUARD_ #define _TelepathyQt_file_transfer_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class TP_QT_EXPORT FileTransferChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(FileTransferChannel) public: static const Feature FeatureCore; static FileTransferChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~FileTransferChannel(); FileTransferState state() const; FileTransferStateChangeReason stateReason() const; QString fileName() const; QString contentType() const; qulonglong size() const; QString uri() const; FileHashType contentHashType() const; QString contentHash() const; QString description() const; QDateTime lastModificationTime() const; qulonglong initialOffset() const; qulonglong transferredBytes() const; PendingOperation *cancel(); Q_SIGNALS: void stateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason reason); void initialOffsetDefined(qulonglong initialOffset); void transferredBytesChanged(qulonglong count); protected: FileTransferChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = FileTransferChannel::FeatureCore); SupportedSocketMap availableSocketTypes() const; virtual void connectToHost(); bool isConnected() const; void setConnected(); bool isFinished() const; virtual void setFinished(); private Q_SLOTS: TP_QT_NO_EXPORT void gotProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void changeState(); TP_QT_NO_EXPORT void onStateChanged(uint state, uint stateReason); TP_QT_NO_EXPORT void onInitialOffsetDefined(qulonglong initialOffset); TP_QT_NO_EXPORT void onTransferredBytesChanged(qulonglong count); protected Q_SLOTS: TP_QT_NO_EXPORT void onUriDefined(const QString &uri); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/base-connection-internal.h0000644000175100017520000003245112530423576025225 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/_gen/svc-connection.h" #include #include #include #include "TelepathyQt/debug-internal.h" namespace Tp { class TP_QT_NO_EXPORT BaseConnection::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList interfaces READ interfaces) Q_PROPERTY(uint selfHandle READ selfHandle) Q_PROPERTY(QString selfID READ selfID) Q_PROPERTY(uint status READ status) Q_PROPERTY(bool hasImmortalHandles READ hasImmortalHandles) public: Adaptee(const QDBusConnection &dbusConnection, BaseConnection *connection); ~Adaptee(); QStringList interfaces() const; uint selfHandle() const; QString selfID() const; uint status() const; bool hasImmortalHandles() const; private Q_SLOTS: void connect( const Tp::Service::ConnectionAdaptor::ConnectContextPtr &context); void disconnect( const Tp::Service::ConnectionAdaptor::DisconnectContextPtr &context); void getInterfaces( const Tp::Service::ConnectionAdaptor::GetInterfacesContextPtr &context); void getProtocol( const Tp::Service::ConnectionAdaptor::GetProtocolContextPtr &context); void getSelfHandle( const Tp::Service::ConnectionAdaptor::GetSelfHandleContextPtr &context); void getStatus( const Tp::Service::ConnectionAdaptor::GetStatusContextPtr &context); void holdHandles(uint handleType, const Tp::UIntList &handles, const Tp::Service::ConnectionAdaptor::HoldHandlesContextPtr &context); void inspectHandles(uint handleType, const Tp::UIntList &handles, const Tp::Service::ConnectionAdaptor::InspectHandlesContextPtr &context); void listChannels( const Tp::Service::ConnectionAdaptor::ListChannelsContextPtr &context); void requestChannel(const QString &type, uint handleType, uint handle, bool suppressHandler, const Tp::Service::ConnectionAdaptor::RequestChannelContextPtr &context); void releaseHandles(uint handleType, const Tp::UIntList &handles, const Tp::Service::ConnectionAdaptor::ReleaseHandlesContextPtr &context); void requestHandles(uint handleType, const QStringList &identifiers, const Tp::Service::ConnectionAdaptor::RequestHandlesContextPtr &context); //void addClientInterest(const QStringList &tokens, const Tp::Service::ConnectionAdaptor::AddClientInterestContextPtr &context); //void removeClientInterest(const QStringList &tokens, const Tp::Service::ConnectionAdaptor::RemoveClientInterestContextPtr &context); Q_SIGNALS: void selfHandleChanged(uint selfHandle); void newChannel(const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler); void selfContactChanged(uint selfHandle, const QString &selfID); void connectionError(const QString &error, const QVariantMap &details); void statusChanged(uint status, uint reason); private: BaseConnection *mConnection; Service::ConnectionAdaptor *mAdaptor; }; class TP_QT_NO_EXPORT BaseConnectionRequestsInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(Tp::ChannelDetailsList channels READ channels) Q_PROPERTY(Tp::RequestableChannelClassList requestableChannelClasses READ requestableChannelClasses) public: Adaptee(BaseConnectionRequestsInterface *interface); ~Adaptee(); Tp::ChannelDetailsList channels() const; Tp::RequestableChannelClassList requestableChannelClasses() const { debug() << "BaseConnectionRequestsInterface::requestableChannelClasses"; return mInterface->requestableChannelClasses; } private Q_SLOTS: void createChannel(const QVariantMap &request, const Tp::Service::ConnectionInterfaceRequestsAdaptor::CreateChannelContextPtr &context); void ensureChannel(const QVariantMap &request, const Tp::Service::ConnectionInterfaceRequestsAdaptor::EnsureChannelContextPtr &context); Q_SIGNALS: void newChannels(const Tp::ChannelDetailsList &channels); void channelClosed(const QDBusObjectPath &removed); public: BaseConnectionRequestsInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionContactsInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList contactAttributeInterfaces READ contactAttributeInterfaces) public: Adaptee(BaseConnectionContactsInterface *interface); ~Adaptee(); QStringList contactAttributeInterfaces() const; private Q_SLOTS: void getContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, bool hold, const Tp::Service::ConnectionInterfaceContactsAdaptor::GetContactAttributesContextPtr &context); public: BaseConnectionContactsInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionSimplePresenceInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(Tp::SimpleStatusSpecMap statuses READ statuses) Q_PROPERTY(uint maximumStatusMessageLength READ maximumStatusMessageLength) public: Adaptee(BaseConnectionSimplePresenceInterface *interface); ~Adaptee(); Tp::SimpleStatusSpecMap statuses() const; int maximumStatusMessageLength() const; private Q_SLOTS: void setPresence(const QString &status, const QString &statusMessage, const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::SetPresenceContextPtr &context); void getPresences(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceSimplePresenceAdaptor::GetPresencesContextPtr &context); Q_SIGNALS: void presencesChanged(const Tp::SimpleContactPresences &presence); public: BaseConnectionSimplePresenceInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionContactListInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(uint contactListState READ contactListState) Q_PROPERTY(bool contactListPersists READ contactListPersists) Q_PROPERTY(bool canChangeContactList READ canChangeContactList) Q_PROPERTY(bool requestUsesMessage READ requestUsesMessage) Q_PROPERTY(bool downloadAtConnection READ downloadAtConnection) public: Adaptee(BaseConnectionContactListInterface *interface); ~Adaptee(); uint contactListState() const; bool contactListPersists() const; bool canChangeContactList() const; bool requestUsesMessage() const; bool downloadAtConnection() const; private Q_SLOTS: void getContactListAttributes(const QStringList &interfaces, bool hold, const Tp::Service::ConnectionInterfaceContactListAdaptor::GetContactListAttributesContextPtr &context); void requestSubscription(const Tp::UIntList &contacts, const QString &message, const Tp::Service::ConnectionInterfaceContactListAdaptor::RequestSubscriptionContextPtr &context); void authorizePublication(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::AuthorizePublicationContextPtr &context); void removeContacts(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::RemoveContactsContextPtr &context); void unsubscribe(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::UnsubscribeContextPtr &context); void unpublish(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactListAdaptor::UnpublishContextPtr &context); void download( const Tp::Service::ConnectionInterfaceContactListAdaptor::DownloadContextPtr &context); Q_SIGNALS: void contactListStateChanged(uint contactListState); void contactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals); private: BaseConnectionContactListInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionContactInfoInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(uint contactInfoFlags READ contactInfoFlags) Q_PROPERTY(Tp::FieldSpecs supportedFields READ supportedFields) public: Adaptee(BaseConnectionContactInfoInterface *interface); ~Adaptee(); uint contactInfoFlags() const; Tp::FieldSpecs supportedFields() const; private Q_SLOTS: void getContactInfo(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::GetContactInfoContextPtr &context); void refreshContactInfo(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::RefreshContactInfoContextPtr &context); void requestContactInfo(uint contact, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::RequestContactInfoContextPtr &context); void setContactInfo(const Tp::ContactInfoFieldList &contactInfo, const Tp::Service::ConnectionInterfaceContactInfoAdaptor::SetContactInfoContextPtr &context); signals: void contactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo); private: BaseConnectionContactInfoInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionAddressingInterface::Adaptee : public QObject { Q_OBJECT public: Adaptee(BaseConnectionAddressingInterface *interface); ~Adaptee(); private Q_SLOTS: void getContactsByVCardField(const QString &field, const QStringList &addresses, const QStringList &interfaces, const Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByVCardFieldContextPtr &context); void getContactsByURI(const QStringList &URIs, const QStringList &interfaces, const Tp::Service::ConnectionInterfaceAddressingAdaptor::GetContactsByURIContextPtr &context); Q_SIGNALS: public: BaseConnectionAddressingInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionAliasingInterface::Adaptee : public QObject { Q_OBJECT public: Adaptee(BaseConnectionAliasingInterface *interface); ~Adaptee(); private Q_SLOTS: void getAliasFlags( const Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasFlagsContextPtr &context); void requestAliases(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAliasingAdaptor::RequestAliasesContextPtr &context); void getAliases(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAliasingAdaptor::GetAliasesContextPtr &context); void setAliases(const Tp::AliasMap &aliases, const Tp::Service::ConnectionInterfaceAliasingAdaptor::SetAliasesContextPtr &context); Q_SIGNALS: void aliasesChanged(const Tp::AliasPairList &aliases); private: BaseConnectionAliasingInterface *mInterface; }; class TP_QT_NO_EXPORT BaseConnectionAvatarsInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList supportedAvatarMimeTypes READ supportedAvatarMimeTypes) Q_PROPERTY(uint minimumAvatarHeight READ minimumAvatarHeight) Q_PROPERTY(uint minimumAvatarWidth READ minimumAvatarWidth) Q_PROPERTY(uint recommendedAvatarHeight READ recommendedAvatarHeight) Q_PROPERTY(uint recommendedAvatarWidth READ recommendedAvatarWidth) Q_PROPERTY(uint maximumAvatarHeight READ maximumAvatarHeight) Q_PROPERTY(uint maximumAvatarWidth READ maximumAvatarWidth) Q_PROPERTY(uint maximumAvatarBytes READ maximumAvatarBytes) public: Adaptee(BaseConnectionAvatarsInterface *interface); ~Adaptee(); QStringList supportedAvatarMimeTypes() const; uint minimumAvatarHeight() const; uint minimumAvatarWidth() const; uint recommendedAvatarHeight() const; uint recommendedAvatarWidth() const; uint maximumAvatarHeight() const; uint maximumAvatarWidth() const; uint maximumAvatarBytes() const; private Q_SLOTS: void getKnownAvatarTokens(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::GetKnownAvatarTokensContextPtr &context); void requestAvatars(const Tp::UIntList &contacts, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::RequestAvatarsContextPtr &context); void setAvatar(const QByteArray &avatar, const QString &mimeType, const Tp::Service::ConnectionInterfaceAvatarsAdaptor::SetAvatarContextPtr &context); void clearAvatar( const Tp::Service::ConnectionInterfaceAvatarsAdaptor::ClearAvatarContextPtr &context); Q_SIGNALS: void avatarUpdated(uint contact, const QString &newAvatarToken); void avatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type); private: BaseConnectionAvatarsInterface *mInterface; }; } telepathy-qt-0.9.6.1/TelepathyQt/BaseCall0000644000175100017520000000034712530423576021563 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseCall_HEADER_GUARD_ #define _TelepathyQt_BaseCall_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/protocol-parameter.cpp0000644000175100017520000001357112530423576024520 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT ProtocolParameter::Private : public QSharedData { Private(const ParamSpec &sp) : spec(sp), type(variantTypeFromDBusSignature(spec.signature)) { init(); } Private(const QString &name, const QString &dbusSignature, ConnMgrParamFlags flags, const QVariant &defaultValue) : type(variantTypeFromDBusSignature(dbusSignature)) { spec.name = name; spec.flags = flags; spec.signature = dbusSignature; spec.defaultValue = QDBusVariant(defaultValue); init(); } void init() { if (spec.flags & ConnMgrParamFlagHasDefault) { if (spec.defaultValue.variant() == QVariant::Invalid) { // flags contains HasDefault but no default value is passed, // lets warn and build a default value from signature warning() << "Building ProtocolParameter with flags containing ConnMgrParamFlagHasDefault" " and no default value, generating a dummy one from signature"; spec.defaultValue = QDBusVariant( parseValueWithDBusSignature(QString(), spec.signature)); } } else { if (spec.defaultValue.variant() != QVariant::Invalid) { // flags does not contain HasDefault but a default value is passed, // lets add HasDefault to flags debug() << "Building ProtocolParameter with flags not containing ConnMgrParamFlagHasDefault" " and a default value, updating flags to contain ConnMgrParamFlagHasDefault"; spec.flags |= ConnMgrParamFlagHasDefault; } } } ParamSpec spec; QVariant::Type type; }; /** * \class ProtocolParameter * \ingroup clientcm * \headerfile TelepathyQt/protocol-parameter.h * * \brief The ProtocolParameter class represents a Telepathy protocol parameter. */ ProtocolParameter::ProtocolParameter() { } ProtocolParameter::ProtocolParameter(const ParamSpec &spec) : mPriv(new Private(spec)) { } ProtocolParameter::ProtocolParameter(const QString &name, const QDBusSignature &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue) : mPriv(new Private(name, dbusSignature.signature(), flags, defaultValue)) { } ProtocolParameter::ProtocolParameter(const QString &name, const QString &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue) : mPriv(new Private(name, dbusSignature, flags, defaultValue)) { } ProtocolParameter::ProtocolParameter(const ProtocolParameter &other) : mPriv(other.mPriv) { } ProtocolParameter::~ProtocolParameter() { } ProtocolParameter &ProtocolParameter::operator=(const ProtocolParameter &other) { this->mPriv = other.mPriv; return *this; } bool ProtocolParameter::operator==(const ProtocolParameter &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return true; } return false; } return (mPriv->spec.name == other.name()); } bool ProtocolParameter::operator==(const QString &name) const { if (!isValid()) { return false; } return (mPriv->spec.name == name); } bool ProtocolParameter::operator<(const Tp::ProtocolParameter& other) const { return mPriv->spec.name < other.name(); } QString ProtocolParameter::name() const { if (!isValid()) { return QString(); } return mPriv->spec.name; } QDBusSignature ProtocolParameter::dbusSignature() const { if (!isValid()) { return QDBusSignature(); } return QDBusSignature(mPriv->spec.signature); } QVariant::Type ProtocolParameter::type() const { if (!isValid()) { return QVariant::Invalid; } return mPriv->type; } QVariant ProtocolParameter::defaultValue() const { if (!isValid()) { return QVariant(); } return mPriv->spec.defaultValue.variant(); } bool ProtocolParameter::isRequired() const { if (!isValid()) { return false; } return mPriv->spec.flags & ConnMgrParamFlagRequired; } bool ProtocolParameter::isSecret() const { if (!isValid()) { return false; } return mPriv->spec.flags & ConnMgrParamFlagSecret; } bool ProtocolParameter::isRequiredForRegistration() const { if (!isValid()) { return false; } return mPriv->spec.flags & ConnMgrParamFlagRegister; } ParamSpec ProtocolParameter::bareParameter() const { if (!isValid()) { return ParamSpec(); } return mPriv->spec; } uint qHash(const ProtocolParameter& parameter) { return qHash(parameter.name()); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/SimpleTextObserver0000644000175100017520000000040612530423576023717 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_SimpleTextObserver_HEADER_GUARD_ #define _TelepathyQt_SimpleTextObserver_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/method-invocation-context.h0000644000175100017520000001277312530423576025462 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_method_invocation_context_h_HEADER_GUARD_ #define _TelepathyQt_method_invocation_context_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace MethodInvocationContextTypes { struct Nil { }; template struct Select { typedef Select Next; typedef typename Next::Type Type; }; template struct Select<0, T1, T2, T3, T4, T5, T6, T7, T8> { typedef T1 Type; }; template struct ForEach { typedef ForEach Next; enum { Total = Next::Total + 1 }; }; template<> struct ForEach { enum { Total = 0 }; }; } #endif /* DOXYGEN_SHOULD_SKIP_THIS */ template class MethodInvocationContext : public RefCounted { #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct Select : MethodInvocationContextTypes::Select { }; typedef MethodInvocationContextTypes::ForEach ForEach; enum { Count = ForEach::Total }; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: MethodInvocationContext(const QDBusConnection &bus, const QDBusMessage &message) : mBus(bus), mMessage(message), mFinished(false) { mMessage.setDelayedReply(true); } virtual ~MethodInvocationContext() { if (!mFinished) { setFinishedWithError(QString(), QString()); } } bool isFinished() const { return mFinished; } bool isError() const { return !mErrorName.isEmpty(); } QString errorName() const { return mErrorName; } QString errorMessage() const { return mErrorMessage; } void setFinished(const T1 &t1 = T1(), const T2 &t2 = T2(), const T3 &t3 = T3(), const T4 &t4 = T4(), const T5 &t5 = T5(), const T6 &t6 = T6(), const T7 &t7 = T7(), const T8 &t8 = T8()) { if (mFinished) { return; } mFinished = true; setReplyValue(0, qVariantFromValue(t1)); setReplyValue(1, qVariantFromValue(t2)); setReplyValue(2, qVariantFromValue(t3)); setReplyValue(3, qVariantFromValue(t4)); setReplyValue(4, qVariantFromValue(t5)); setReplyValue(5, qVariantFromValue(t6)); setReplyValue(6, qVariantFromValue(t7)); setReplyValue(7, qVariantFromValue(t8)); if (mReply.isEmpty()) { mBus.send(mMessage.createReply()); } else { mBus.send(mMessage.createReply(mReply)); } onFinished(); } void setFinishedWithError(const QString &errorName, const QString &errorMessage) { if (mFinished) { return; } mFinished = true; if (errorName.isEmpty()) { mErrorName = QLatin1String("org.freedesktop.Telepathy.Qt.ErrorHandlingError"); } else { mErrorName = errorName; } mErrorMessage = errorMessage; mBus.send(mMessage.createErrorReply(mErrorName, mErrorMessage)); onFinished(); } template inline typename Select::Type argumentAt() const { Q_ASSERT(Index >= 0 && Index < Count); return qdbus_cast::Type>(mReply.value(Index)); } protected: virtual void onFinished() {} private: Q_DISABLE_COPY(MethodInvocationContext) void setReplyValue(int index, const QVariant &value) { if (index >= Count) { return; } mReply.insert(index, value); } QDBusConnection mBus; QDBusMessage mMessage; bool mFinished; QList mReply; QString mErrorName; QString mErrorMessage; }; } // Tp Q_DECLARE_METATYPE(Tp::MethodInvocationContextTypes::Nil) #endif telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-server.h0000644000175100017520000001762212530423576024103 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_stream_tube_server_h_HEADER_GUARD_ #define _TelepathyQt_stream_tube_server_h_HEADER_GUARD_ #include #include #include #include #include #include #include #include class QHostAddress; class QTcpServer; namespace Tp { class TP_QT_EXPORT StreamTubeServer : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(StreamTubeServer) class TubeWrapper; public: class ParametersGenerator { public: virtual QVariantMap nextParameters(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &tube, const ChannelRequestHints &hints) = 0; protected: virtual ~ParametersGenerator() {} }; class RemoteContact : public QPair { public: RemoteContact(); RemoteContact(const AccountPtr &account, const ContactPtr &contact); RemoteContact(const RemoteContact &other); ~RemoteContact(); bool isValid() const { return mPriv.constData() != 0; } RemoteContact &operator=(const RemoteContact &other); const AccountPtr &account() const { return first; } const ContactPtr &contact() const { return second; } private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class Tube : public QPair { public: Tube(); Tube(const AccountPtr &account, const OutgoingStreamTubeChannelPtr &channel); Tube(const Tube &other); ~Tube(); bool isValid() const { return mPriv.constData() != 0; } Tube &operator=(const Tube &other); const AccountPtr &account() const { return first; } const OutgoingStreamTubeChannelPtr &channel() const { return second; } private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; static StreamTubeServerPtr create( const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false, const AccountFactoryConstPtr &accountFactory = AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); static StreamTubeServerPtr create( const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false); static StreamTubeServerPtr create( const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false); static StreamTubeServerPtr create( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false); virtual ~StreamTubeServer(); ClientRegistrarPtr registrar() const; QString clientName() const; bool isRegistered() const; bool monitorsConnections() const; QPair exportedTcpSocketAddress() const; QVariantMap exportedParameters() const; void exportTcpSocket( const QHostAddress &address, quint16 port, const QVariantMap ¶meters = QVariantMap()); void exportTcpSocket( const QTcpServer *server, const QVariantMap ¶meters = QVariantMap()); void exportTcpSocket( const QHostAddress &address, quint16 port, ParametersGenerator *generator); void exportTcpSocket( const QTcpServer *server, ParametersGenerator *generator); QList tubes() const; QHash, RemoteContact> tcpConnections() const; Q_SIGNALS: void tubeRequested( const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &hints); void tubeClosed( const Tp::AccountPtr &account, const Tp::OutgoingStreamTubeChannelPtr &tube, const QString &error, const QString &message); void newTcpConnection( const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const Tp::OutgoingStreamTubeChannelPtr &tube); void tcpConnectionClosed( const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const QString &error, const QString &message, const Tp::OutgoingStreamTubeChannelPtr &tube); private Q_SLOTS: TP_QT_NO_EXPORT void onInvokedForTube( const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints); TP_QT_NO_EXPORT void onOfferFinished( TubeWrapper *wrapper, Tp::PendingOperation *op); TP_QT_NO_EXPORT void onTubeInvalidated( Tp::DBusProxy *proxy, const QString &error, const QString &message); TP_QT_NO_EXPORT void onNewConnection( TubeWrapper *wrapper, uint conn); TP_QT_NO_EXPORT void onConnectionClosed( TubeWrapper *wrapper, uint conn, const QString &error, const QString &message); private: TP_QT_NO_EXPORT StreamTubeServer( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections); struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/PendingAccount0000644000175100017520000000037112530423576023013 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingAccount_HEADER_GUARD_ #define _TelepathyQt_PendingAccount_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/BaseProtocol0000644000175100017520000000036312530423576022507 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseProtocol_HEADER_GUARD_ #define _TelepathyQt_BaseProtocol_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingHandles0000644000175100017520000000037112530423576022775 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingHandles_HEADER_GUARD_ #define _TelepathyQt_PendingHandles_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-contact-attributes.cpp0000644000175100017520000001576612530423576026152 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-contact-attributes.moc.hpp" #include #include #include "TelepathyQt/debug-internal.h" namespace Tp { /** * \class PendingContactAttributes * \ingroup clientconn * \headerfile TelepathyQt/pending-contact-attributes.h * * \brief The PendingContactAttributes class represents the parameters of and * the reply to an asynchronous request for raw contact attributes, as used in * the ConnectionLowlevel::contactAttributes() low-level convenience method wrapping the * Client::ConnectionInterfaceContactsInterface::GetContactAttributes() D-Bus * method. * * See \ref async_model */ struct TP_QT_NO_EXPORT PendingContactAttributes::Private { UIntList contactsRequested; QStringList interfacesRequested; bool shouldReference; ReferencedHandles validHandles; UIntList invalidHandles; ContactAttributesMap attributes; }; PendingContactAttributes::PendingContactAttributes(const ConnectionPtr &connection, const UIntList &handles, const QStringList &interfaces, bool reference) : PendingOperation(connection), mPriv(new Private) { mPriv->contactsRequested = handles; mPriv->interfacesRequested = interfaces; mPriv->shouldReference = reference; } /** * Class destructor. */ PendingContactAttributes::~PendingContactAttributes() { delete mPriv; } /** * Return the connection through which the request was made. * * \return A pointer to the Connection object. */ ConnectionPtr PendingContactAttributes::connection() const { return ConnectionPtr(qobject_cast((Connection*) object().data())); } /** * Return the contacts for which attributes were requested. * * \return Reference to a list with the handles of the contacts. */ const UIntList &PendingContactAttributes::contactsRequested() const { return mPriv->contactsRequested; } /** * Return the interfaces the corresponding attributes of which were requested. * * \return Reference to a list of D-Bus interface names. */ const QStringList &PendingContactAttributes::interfacesRequested() const { return mPriv->interfacesRequested; } /** * Return whether it was requested that the contact handles should be referenced in addition to * fetching their attributes. This corresponds to the reference argument to * Connection::contactAttributes(). * * \return Whether the handles should be referenced or not. */ bool PendingContactAttributes::shouldReference() const { return mPriv->shouldReference; } /** * If referencing the handles was requested (as indicated by shouldReference()), returns the * now-referenced handles resulting from the operation. If the operation has not (yet) finished * successfully (isFinished() returns false), or referencing was not requested, the * return value is undefined. * * Even if referencing was requested, the list will not always contain all of the handles in * contactsRequested(), only the ones which were valid. The valid handles will be in the same order * as in contactsRequested(), though. * * \return ReferencedHandles instance containing the handles. */ ReferencedHandles PendingContactAttributes::validHandles() const { if (!isFinished()) { warning() << "PendingContactAttributes::validHandles() called before finished"; } else if (isError()) { warning() << "PendingContactAttributes::validHandles() called when errored"; } else if (!shouldReference()) { warning() << "PendingContactAttributes::validHandles() called but weren't asked to" << "reference handles"; } return mPriv->validHandles; } /** * Return the handles which were found to be invalid while processing the operation. If the * operation has not (yet) finished successfully (isFinished() returns false), the * return value is undefined. * * \return A list with the invalid handles. */ UIntList PendingContactAttributes::invalidHandles() const { if (!isFinished()) { warning() << "PendingContactAttributes::validHandles() called before finished"; } else if (isError()) { warning() << "PendingContactAttributes::validHandles() called when errored"; } return mPriv->invalidHandles; } /** * Return a dictionary mapping the valid contact handles in contactsRequested() (when also * referencing, this means the contents of validHandles()) to contact attributes. If the operation * has not (yet) finished successfully (isFinished() returns false), the return value * is undefined. * * \return Mapping from handles to variant maps containing the attributes. */ ContactAttributesMap PendingContactAttributes::attributes() const { if (!isFinished()) { warning() << "PendingContactAttributes::validHandles() called before finished"; } else if (isError()) { warning() << "PendingContactAttributes::validHandles() called when errored"; } return mPriv->attributes; } void PendingContactAttributes::onCallFinished(QDBusPendingCallWatcher* watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { debug().nospace() << "GetCAs: error " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } else { mPriv->attributes = reply.value(); UIntList validHandles; foreach (uint contact, mPriv->contactsRequested) { if (mPriv->attributes.contains(contact)) { validHandles << contact; } else { mPriv->invalidHandles << contact; } } if (shouldReference()) { mPriv->validHandles = ReferencedHandles(connection(), HandleTypeContact, validHandles); } setFinished(); } connection()->handleRequestLanded(HandleTypeContact); watcher->deleteLater(); } void PendingContactAttributes::failImmediately(const QString &error, const QString &errorMessage) { setFinishedWithError(error, errorMessage); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceMailNotificationInterface0000644000175100017520000000046012530423576031024 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceMailNotificationInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceMailNotificationInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/simple-stream-tube-handler.cpp0000644000175100017520000002066112530423576026031 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/simple-stream-tube-handler.h" #include "TelepathyQt/_gen/simple-stream-tube-handler.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { namespace { ChannelClassSpecList buildFilter(const QStringList &p2pServices, const QStringList &roomServices, bool requested) { ChannelClassSpecList filter; // Convert to QSet to weed out duplicates foreach (const QString &service, p2pServices.toSet()) { filter.append(requested ? ChannelClassSpec::outgoingStreamTube(service) : ChannelClassSpec::incomingStreamTube(service)); } // Convert to QSet to weed out duplicates foreach (const QString &service, roomServices.toSet()) { filter.append(requested ? ChannelClassSpec::outgoingRoomStreamTube(service) : ChannelClassSpec::incomingRoomStreamTube(service)); } return filter; } } SharedPtr SimpleStreamTubeHandler::create( const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval) { return SharedPtr( new SimpleStreamTubeHandler( p2pServices, roomServices, requested, monitorConnections, bypassApproval)); } SimpleStreamTubeHandler::SimpleStreamTubeHandler( const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval) : AbstractClient(), AbstractClientHandler(buildFilter(p2pServices, roomServices, requested)), mMonitorConnections(monitorConnections), mBypassApproval(bypassApproval) { } SimpleStreamTubeHandler::~SimpleStreamTubeHandler() { if (!mTubes.empty()) { debug() << "~SSTubeHandler(): Closing" << mTubes.size() << "leftover tubes"; foreach (const StreamTubeChannelPtr &tube, mTubes.keys()) { tube->requestClose(); } } } void SimpleStreamTubeHandler::handleChannels( const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo) { debug() << "SimpleStreamTubeHandler::handleChannels() invoked for " << channels.size() << "channels on account" << account->objectPath(); SharedPtr invocation(new InvocationData()); QList readyOps; foreach (const ChannelPtr &chan, channels) { StreamTubeChannelPtr tube = StreamTubeChannelPtr::qObjectCast(chan); if (!tube) { // TODO: if Channel ever starts utilizing its immutable props for the immutable // accessors, use Channel::channelType() here const QString channelType = chan->immutableProperties()[TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")].toString(); if (channelType != TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE) { debug() << "We got a non-StreamTube channel" << chan->objectPath() << "of type" << channelType << ", ignoring"; } else { warning() << "The channel factory used for a simple StreamTube handler must" << "construct StreamTubeChannel subclasses for stream tubes"; } continue; } Features features = StreamTubeChannel::FeatureCore; if (mMonitorConnections) { features.insert(StreamTubeChannel::FeatureConnectionMonitoring); } readyOps.append(tube->becomeReady(features)); invocation->tubes.append(tube); } invocation->ctx = context; invocation->acc = account; invocation->time = userActionTime; if (!requestsSatisfied.isEmpty()) { invocation->hints = requestsSatisfied.first()->hints(); } mInvocations.append(invocation); if (invocation->tubes.isEmpty()) { warning() << "SSTH::HandleChannels got no suitable channels, admitting we're Confused"; invocation->readyOp = 0; invocation->error = TP_QT_ERROR_CONFUSED; invocation->message = QLatin1String("Got no suitable channels"); onReadyOpFinished(0); } else { invocation->readyOp = new PendingComposite(readyOps, SharedPtr(this)); connect(invocation->readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onReadyOpFinished(Tp::PendingOperation*))); } } void SimpleStreamTubeHandler::onReadyOpFinished(Tp::PendingOperation *op) { Q_ASSERT(!mInvocations.isEmpty()); Q_ASSERT(!op || op->isFinished()); for (QLinkedList >::iterator i = mInvocations.begin(); op != 0 && i != mInvocations.end(); ++i) { if ((*i)->readyOp != op) { continue; } (*i)->readyOp = 0; if (op->isError()) { warning() << "Preparing proxies for SSTubeHandler failed with" << op->errorName() << op->errorMessage(); (*i)->error = op->errorName(); (*i)->message = op->errorMessage(); } break; } while (!mInvocations.isEmpty() && !mInvocations.first()->readyOp) { SharedPtr invocation = mInvocations.takeFirst(); if (!invocation->error.isEmpty()) { // We guarantee that the proxies were ready - so we can't invoke the client if they // weren't made ready successfully. Fix the introspection code if this happens :) invocation->ctx->setFinishedWithError(invocation->error, invocation->message); continue; } debug() << "Emitting SSTubeHandler::invokedForTube for" << invocation->tubes.size() << "tubes"; foreach (const StreamTubeChannelPtr &tube, invocation->tubes) { if (!tube->isValid()) { debug() << "Skipping already invalidated tube" << tube->objectPath(); continue; } if (!mTubes.contains(tube)) { connect(tube.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onTubeInvalidated(Tp::DBusProxy*,QString,QString))); mTubes.insert(tube, invocation->acc); } emit invokedForTube( invocation->acc, tube, invocation->time, invocation->hints); } invocation->ctx->setFinished(); } } void SimpleStreamTubeHandler::onTubeInvalidated(DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { StreamTubeChannelPtr tube(qobject_cast(proxy)); Q_ASSERT(!tube.isNull()); Q_ASSERT(mTubes.contains(tube)); debug() << "Tube" << tube->objectPath() << "invalidated - " << errorName << ':' << errorMessage; AccountPtr acc = mTubes.value(tube); mTubes.remove(tube); emit tubeInvalidated( acc, tube, errorName, errorMessage); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/referenced-handles.cpp0000644000175100017520000002105512530423576024413 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" #include #include namespace Tp { struct TP_QT_NO_EXPORT ReferencedHandles::Private : public QSharedData { WeakPtr connection; HandleType handleType; UIntList handles; Private() { handleType = HandleTypeNone; } Private(const ConnectionPtr &conn, HandleType handleType, const UIntList &handles) : connection(conn), handleType(handleType), handles(handles) { Q_ASSERT(!conn.isNull()); Q_ASSERT(handleType != 0); foreach (uint handle, handles) { conn->refHandle(handleType, handle); } } Private(const Private &a) : QSharedData(a), connection(a.connection), handleType(a.handleType), handles(a.handles) { if (!handles.isEmpty()) { ConnectionPtr conn(connection); if (!conn) { debug() << " Destroyed after Connection, so the Connection " "has already released the handles"; return; } for (const_iterator i = handles.constBegin(); i != handles.constEnd(); ++i) { conn->refHandle(handleType, *i); } } } ~Private() { if (!handles.isEmpty()) { ConnectionPtr conn(connection); if (!conn) { debug() << " Destroyed after Connection, so the Connection " "has already released the handles"; return; } for (const_iterator i = handles.constBegin(); i != handles.constEnd(); ++i) { conn->unrefHandle(handleType, *i); } } } private: void operator=(const Private&); }; /** * \class ReferencedHandles * \ingroup clientconn * \headerfile TelepathyQt/referenced-handles.h * * \brief Helper container for safe management of handle lifetimes. Every handle * in a ReferencedHandles container is guaranteed to be valid (and stay valid, * as long it's in at least one ReferencedHandles container). * * The class offers a QList-style API. However, from the mutable operations, * only the operations for which the validity guarantees can be preserved are * provided. This means no functions which can add an arbitrary handle to the * container are included - the only way to add handles to the container is to * reference them using Connection::referenceHandles() and appending the * resulting ReferenceHandles instance. * * ReferencedHandles is a implicitly shared class. */ ReferencedHandles::ReferencedHandles() : mPriv(new Private) { } ReferencedHandles::ReferencedHandles(const ReferencedHandles &other) : mPriv(other.mPriv) { } ReferencedHandles::~ReferencedHandles() { } ConnectionPtr ReferencedHandles::connection() const { return ConnectionPtr(mPriv->connection); } HandleType ReferencedHandles::handleType() const { return mPriv->handleType; } uint ReferencedHandles::at(int i) const { return mPriv->handles[i]; } uint ReferencedHandles::value(int i, uint defaultValue) const { return mPriv->handles.value(i, defaultValue); } ReferencedHandles::const_iterator ReferencedHandles::begin() const { return mPriv->handles.begin(); } ReferencedHandles::const_iterator ReferencedHandles::end() const { return mPriv->handles.end(); } bool ReferencedHandles::contains(uint handle) const { return mPriv->handles.contains(handle); } int ReferencedHandles::count(uint handle) const { return mPriv->handles.count(handle); } int ReferencedHandles::indexOf(uint handle, int from) const { return mPriv->handles.indexOf(handle, from); } bool ReferencedHandles::isEmpty() const { return mPriv->handles.isEmpty(); } int ReferencedHandles::lastIndexOf(uint handle, int from) const { return mPriv->handles.lastIndexOf(handle, from); } ReferencedHandles ReferencedHandles::mid(int pos, int length) const { return ReferencedHandles(connection(), handleType(), mPriv->handles.mid(pos, length)); } int ReferencedHandles::size() const { return mPriv->handles.size(); } void ReferencedHandles::clear() { if (!mPriv->handles.empty()) { ConnectionPtr conn(mPriv->connection); if (conn) { foreach (uint handle, mPriv->handles) { conn->unrefHandle(handleType(), handle); } } else { warning() << "Connection already destroyed in " "ReferencedHandles::clear() so can't unref!"; } } mPriv->handles.clear(); } void ReferencedHandles::move(int from, int to) { mPriv->handles.move(from, to); } int ReferencedHandles::removeAll(uint handle) { int count = mPriv->handles.removeAll(handle); if (count > 0) { ConnectionPtr conn(mPriv->connection); if (conn) { for (int i = 0; i < count; ++i) { conn->unrefHandle(handleType(), handle); } } else { warning() << "Connection already destroyed in " "ReferencedHandles::removeAll() with handle ==" << handle << "so can't unref!"; } } return count; } void ReferencedHandles::removeAt(int i) { ConnectionPtr conn(mPriv->connection); if (conn) { conn->unrefHandle(handleType(), at(i)); } else { warning() << "Connection already destroyed in " "ReferencedHandles::removeAt() with i ==" << i << "so can't unref!"; } mPriv->handles.removeAt(i); } bool ReferencedHandles::removeOne(uint handle) { bool wasThere = mPriv->handles.removeOne(handle); if (wasThere) { ConnectionPtr conn(mPriv->connection); if (conn) { conn->unrefHandle(handleType(), handle); } else { warning() << "Connection already destroyed in " "ReferencedHandles::removeOne() with handle ==" << handle << "so can't unref!"; } } return wasThere; } void ReferencedHandles::swap(int i, int j) { mPriv->handles.swap(i, j); } uint ReferencedHandles::takeAt(int i) { ConnectionPtr conn(mPriv->connection); if (conn) { conn->unrefHandle(handleType(), at(i)); } else { warning() << "Connection already destroyed in " "ReferencedHandles::takeAt() with i ==" << i << "so can't unref!"; } return mPriv->handles.takeAt(i); } ReferencedHandles ReferencedHandles::operator+(const ReferencedHandles &another) const { if (connection() != another.connection() || handleType() != another.handleType()) { warning() << "Tried to concatenate ReferencedHandles instances " "with different connection and/or handle type"; return *this; } return ReferencedHandles(connection(), handleType(), mPriv->handles + another.mPriv->handles); } ReferencedHandles &ReferencedHandles::operator=( const ReferencedHandles &another) { mPriv = another.mPriv; return *this; } bool ReferencedHandles::operator==(const ReferencedHandles &another) const { return connection() == another.connection() && handleType() == another.handleType() && mPriv->handles == another.mPriv->handles; } bool ReferencedHandles::operator==(const UIntList &list) const { return mPriv->handles == list; } UIntList ReferencedHandles::toList() const { return mPriv->handles; } ReferencedHandles::ReferencedHandles(const ConnectionPtr &connection, HandleType handleType, const UIntList &handles) : mPriv(new Private(connection, handleType, handles)) { } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/DBusObject0000644000175100017520000000035512530423576022100 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusObject_HEADER_GUARD_ #define _TelepathyQt_DBusObject_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-tube-channel.cpp0000644000175100017520000004460312530423576024201 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/dbus-tube-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/outgoing-stream-tube-channel-internal.h" #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT DBusTubeChannel::Private { Private(DBusTubeChannel *parent); void extractProperties(const QVariantMap &props); void extractParticipants(const Tp::DBusTubeParticipants &participants); static void introspectDBusTube(Private *self); static void introspectBusNamesMonitoring(Private *self); ReadinessHelper *readinessHelper; // Public object DBusTubeChannel *parent; // Properties UIntList accessControls; QString serviceName; QHash contactsForBusNames; QString address; QHash pendingNewBusNamesToAdd; QList pendingNewBusNamesToRemove; QueuedContactFactory *queuedContactFactory; }; DBusTubeChannel::Private::Private(DBusTubeChannel *parent) : parent(parent), queuedContactFactory(new QueuedContactFactory(parent->connection()->contactManager(), parent)) { parent->connect(queuedContactFactory, SIGNAL(contactsRetrieved(QUuid,QList)), SLOT(onContactsRetrieved(QUuid,QList))); // Initialize readinessHelper + introspectables here readinessHelper = parent->readinessHelper(); ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableDBusTube( QSet() << 0, // makesSenseForStatuses Features() << TubeChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectDBusTube, this); introspectables[DBusTubeChannel::FeatureCore] = introspectableDBusTube; ReadinessHelper::Introspectable introspectableBusNamesMonitoring( QSet() << 0, // makesSenseForStatuses Features() << DBusTubeChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectBusNamesMonitoring, this); introspectables[DBusTubeChannel::FeatureBusNameMonitoring] = introspectableBusNamesMonitoring; readinessHelper->addIntrospectables(introspectables); } void DBusTubeChannel::Private::extractProperties(const QVariantMap &props) { serviceName = qdbus_cast(props[TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName")]); accessControls = qdbus_cast(props[TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".SupportedAccessControls")]); } void DBusTubeChannel::Private::extractParticipants(const Tp::DBusTubeParticipants &participants) { contactsForBusNames.clear(); for (DBusTubeParticipants::const_iterator i = participants.constBegin(); i != participants.constEnd(); ++i) { QUuid uuid = queuedContactFactory->appendNewRequest(UIntList() << i.key()); pendingNewBusNamesToAdd.insert(uuid, i.value()); } } void DBusTubeChannel::Private::introspectBusNamesMonitoring(DBusTubeChannel::Private *self) { DBusTubeChannel *parent = self->parent; Client::ChannelTypeDBusTubeInterface *dbusTubeInterface = parent->interface(); // It must be present Q_ASSERT(dbusTubeInterface); // It makes sense only if this is a room, if that's not the case just spit a warning if (parent->targetHandleType() == static_cast(Tp::HandleTypeRoom)) { parent->connect(dbusTubeInterface, SIGNAL(DBusNamesChanged(Tp::DBusTubeParticipants,Tp::UIntList)), parent, SLOT(onDBusNamesChanged(Tp::DBusTubeParticipants,Tp::UIntList))); // Request the current DBusNames property connect(dbusTubeInterface->requestPropertyDBusNames(), SIGNAL(finished(Tp::PendingOperation*)), parent, SLOT(onRequestPropertyDBusNamesFinished(Tp::PendingOperation*))); } else { debug() << "FeatureBusNameMonitoring does not make sense in a P2P context"; self->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureBusNameMonitoring, false); } } void DBusTubeChannel::Private::introspectDBusTube(DBusTubeChannel::Private *self) { DBusTubeChannel *parent = self->parent; debug() << "Introspect dbus tube properties"; if (parent->immutableProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName")) && parent->immutableProperties().contains(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".SupportedAccessControls"))) { self->extractProperties(parent->immutableProperties()); self->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureCore, true); } else { Client::ChannelTypeDBusTubeInterface *dbusTubeInterface = parent->interface(); parent->connect(dbusTubeInterface->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), parent, SLOT(onRequestAllPropertiesFinished(Tp::PendingOperation*))); } } /** * \class DBusTubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/dbus-tube-channel.h * * \brief The DBusTubeChannel class represents a Telepathy channel of type DBusTube. * * It provides a private bus which can be used as a peer-to-peer connection in case of a * Contact Channel, or as a full-fledged bus in case of a Room Channel. * * DBusTubeChannel is an intermediate base class; OutgoingDBusTubeChannel and * IncomingDBusTubeChannel are the specialized classes used for locally and remotely initiated * tubes respectively. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ // Features declaration and documentation /** * Feature representing the core that needs to become ready to make the * DBusTubeChannel object usable. * * Note that this feature must be enabled in order to use most * DBusTubeChannel methods. * See specific methods documentation for more details. */ const Feature DBusTubeChannel::FeatureCore = Feature(QLatin1String(DBusTubeChannel::staticMetaObject.className()), 0); /** * Feature used in order to monitor bus names in this DBus tube. * * See bus name monitoring specific methods' documentation for more details. * * \sa busNameAdded(), busNameRemoved() */ const Feature DBusTubeChannel::FeatureBusNameMonitoring = Feature(QLatin1String(DBusTubeChannel::staticMetaObject.className()), 1); /** * Create a new DBusTubeChannel channel. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. * \return A DBusTubeChannelPtr object pointing to the newly created * DBusTubeChannel object. */ DBusTubeChannelPtr DBusTubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return DBusTubeChannelPtr(new DBusTubeChannel(connection, objectPath, immutableProperties)); } /** * Construct a new DBusTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The object path of this channel. * \param immutableProperties The immutable properties of this channel. */ DBusTubeChannel::DBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) : TubeChannel(connection, objectPath, immutableProperties), mPriv(new Private(this)) { } /** * Class destructor. */ DBusTubeChannel::~DBusTubeChannel() { delete mPriv; } /** * Returns the service name which will be used over the tube. This should be a * well-known and valid DBus service name, in the form "org.my.service". * * This method requires DBusTubeChannel::FeatureCore to be enabled. * * \return the service name that will be used over the tube */ QString DBusTubeChannel::serviceName() const { if (!isReady(FeatureCore)) { warning() << "DBusTubeChannel::serviceName() used with " "FeatureCore not ready"; return QString(); } return mPriv->serviceName; } /** * Checks if this tube is capable to accept or offer a private bus which * will allow connections only from the current user * * This method is useful only if your appliance is really security-sensitive: * in general, this restriction is always enabled by default on all tubes offered * or accepted from Telepathy-Qt, falling back to a general connection allowance * if this feature is not available. * * If your application does not have specific needs regarding DBus credentials, * you can trust Telepathy-Qt to do the right thing - in any case, the most secure * method available will be used by default. * * This method requires DBusTubeChannel::FeatureCore to be enabled. * * \return Whether this DBus tube is capable to accept or offer a private bus * restricting access to it to the current user only. * * \sa IncomingDBusTubeChannel::acceptTube * \sa OutgoingDBusTubeChannel::offerTube */ bool DBusTubeChannel::supportsRestrictingToCurrentUser() const { if (!isReady(FeatureCore)) { warning() << "DBusTubeChannel::supportsRestrictingToCurrentUser() used with " "FeatureCore not ready"; return false; } return mPriv->accessControls.contains(static_cast(Tp::SocketAccessControlCredentials)); } /** * If the tube has been opened, this function returns the private bus address you should be connecting * to for using this tube. * * Please note this function will return a meaningful value only if the tube has already * been opened successfully: in case of failure or the tube being still pending, an empty QString will be * returned. * * \note If you plan to use QtDBus for the DBus connection, please note you should always use * QDBusConnection::connectToPeer(), regardless of the fact this tube is a p2p or a group one. * The above function has been introduced in Qt 4.8, previous versions of Qt do not allow the use * of DBus Tubes through QtDBus. * * \returns The address of the private bus opened by this tube */ QString DBusTubeChannel::address() const { if (state() != TubeChannelStateOpen) { warning() << "DBusTubeChannel::address() can be called only if " "the tube has already been opened"; return QString(); } return mPriv->address; } /** * This function returns all the known active bus names in this tube. It requires * FeatureBusNameMonitoring to be activated; however, even a late activation of the * feature will make this function return a full list of all the connected bus * names, including the ones which appeared before the activation of the feature * itself. * * This function will always return an empty hash in case the tube is p2p, even if * FeatureBusNameMonitoring has been activated. * * This method requires FeatureBusNameMonitoring to be enabled. * * \returns A list of active connection ids known to this tube */ QHash DBusTubeChannel::contactsForBusNames() const { if (!isReady(FeatureBusNameMonitoring)) { warning() << "DBusTubeChannel::contactsForBusNames() used with " "FeatureBusNameMonitoring not ready"; return QHash(); } return mPriv->contactsForBusNames; } void DBusTubeChannel::onRequestAllPropertiesFinished(PendingOperation *op) { if (!op->isError()) { debug() << "RequestAllProperties succeeded"; PendingVariantMap *result = qobject_cast(op); QVariantMap map = result->result(); QVariantMap qualifiedMap; for (QVariantMap::const_iterator i = map.constBegin(); i != map.constEnd(); ++i) { qualifiedMap.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1Char('.') + i.key(), i.value()); } mPriv->extractProperties(qualifiedMap); mPriv->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureCore, true); } else { warning().nospace() << "RequestAllProperties failed " "with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureCore, false); } } void DBusTubeChannel::onRequestPropertyDBusNamesFinished(PendingOperation *op) { if (!op->isError()) { debug() << "RequestPropertyDBusNames succeeded"; PendingVariant *result = qobject_cast(op); DBusTubeParticipants participants = qdbus_cast(result->result()); if (participants.isEmpty()) { // Nothing to do actually, simply mark the feature as ready. mPriv->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureBusNameMonitoring, true); } else { // Wait for the queue to complete connect(mPriv->queuedContactFactory, SIGNAL(queueCompleted()), this, SLOT(onQueueCompleted())); // Extract the participants, populating the QueuedContactFactory mPriv->extractParticipants(participants); } } else { warning().nospace() << "RequestPropertyDBusNames failed " "with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureBusNameMonitoring, false); } } void DBusTubeChannel::onQueueCompleted() { debug() << "Queue was completed"; // Set the feature as completed, and disconnect the signal as it's no longer useful mPriv->readinessHelper->setIntrospectCompleted(DBusTubeChannel::FeatureBusNameMonitoring, true); disconnect(mPriv->queuedContactFactory, SIGNAL(queueCompleted()), this, SLOT(onQueueCompleted())); } void DBusTubeChannel::onDBusNamesChanged(const Tp::DBusTubeParticipants &added, const Tp::UIntList &removed) { for (DBusTubeParticipants::const_iterator i = added.constBegin(); i != added.constEnd(); ++i) { QUuid uuid = mPriv->queuedContactFactory->appendNewRequest(UIntList() << i.key()); // Add it to our hash as well mPriv->pendingNewBusNamesToAdd.insert(uuid, i.value()); } foreach (uint handle, removed) { QUuid uuid = mPriv->queuedContactFactory->appendNewRequest(UIntList() << handle); // Add it to pending removed as well mPriv->pendingNewBusNamesToRemove << uuid; } } void DBusTubeChannel::onContactsRetrieved(const QUuid &uuid, const QList &contacts) { // Retrieve our hash if (mPriv->pendingNewBusNamesToAdd.contains(uuid)) { QString busName = mPriv->pendingNewBusNamesToAdd.take(uuid); // Add it to our connections hash foreach (const Tp::ContactPtr &contact, contacts) { mPriv->contactsForBusNames.insert(busName, contact); // Time for us to emit the signal - if the feature is ready if (isReady(FeatureBusNameMonitoring)) { emit busNameAdded(busName, contact); } } } else if (mPriv->pendingNewBusNamesToRemove.contains(uuid)) { mPriv->pendingNewBusNamesToRemove.removeOne(uuid); // Remove it from our connections hash foreach (const Tp::ContactPtr &contact, contacts) { if (mPriv->contactsForBusNames.values().contains(contact)) { QString busName = mPriv->contactsForBusNames.key(contact); mPriv->contactsForBusNames.remove(busName); // Time for us to emit the signal - if the feature is ready if (isReady(FeatureBusNameMonitoring)) { emit busNameRemoved(busName, contact); } } else { warning() << "Trying to remove a bus name for contact " << contact->id() << " which has not been retrieved previously!"; } } } else { warning() << "Contacts retrieved but no pending bus names were found"; return; } } void DBusTubeChannel::setAddress(const QString& address) { mPriv->address = address; } // Signals documentation /** * \fn void DBusTubeChannel::busNameAdded(const QString &busName, const Tp::ContactPtr &contact) * * Emitted when a new participant joins this tube. * * This signal will be emitted only if the tube is a group tube (not p2p), and if the * FeatureBusNameMonitoring feature has been enabled. * * \param busName The bus name of the new participant * \param contact The ContactPtr identifying the participant */ /** * \fn void DBusTubeChannel::busNameRemoved(const QString &busName, const Tp::ContactPtr &contact) * * Emitted when a participant leaves this tube. * * This signal will be emitted only if the tube is a group tube (not p2p), and if the * FeatureBusNameMonitoring feature has been enabled. * * \param busName The bus name of the participant leaving * \param contact The ContactPtr identifying the participant */ } telepathy-qt-0.9.6.1/TelepathyQt/base-channel.cpp0000644000175100017520000031433712530423576023225 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2013 Matthias Gehre * @copyright Copyright 2013 Canonical Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/base-channel-internal.h" #include "TelepathyQt/_gen/base-channel.moc.hpp" #include "TelepathyQt/_gen/base-channel-internal.moc.hpp" #include "TelepathyQt/future-internal.h" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT BaseChannel::Private { Private(BaseChannel *parent, const QDBusConnection &dbusConnection, BaseConnection *connection, const QString &channelType, uint targetHandleType, uint targetHandle) : parent(parent), connection(connection), channelType(channelType), targetHandleType(targetHandleType), targetHandle(targetHandle), requested(true), initiatorHandle(0), adaptee(new BaseChannel::Adaptee(dbusConnection, parent)) { static uint s_channelIncrementalId = 0; QString baseName; static const QString s_channelTypePrefix = TP_QT_IFACE_CHANNEL + QLatin1String(".Type."); if ((channelType == TP_QT_IFACE_CHANNEL_TYPE_TEXT) && (targetHandleType == Tp::HandleTypeRoom)) { baseName = QLatin1String("Muc"); } else if (channelType.startsWith(s_channelTypePrefix)) { baseName = channelType.mid(s_channelTypePrefix.length()); } uniqueName = baseName + QLatin1String("Channel") + QString::number(s_channelIncrementalId); ++s_channelIncrementalId; } BaseChannel *parent; BaseConnection* connection; QString channelType; QHash interfaces; QString uniqueName; uint targetHandleType; uint targetHandle; QString targetID; bool requested; uint initiatorHandle; QString initiatorID; BaseChannel::Adaptee *adaptee; }; BaseChannel::Adaptee::Adaptee(const QDBusConnection &dbusConnection, BaseChannel *channel) : QObject(channel), mChannel(channel) { debug() << "Creating service::channelAdaptor for " << channel->dbusObject(); mAdaptor = new Service::ChannelAdaptor(dbusConnection, this, channel->dbusObject()); } BaseChannel::Adaptee::~Adaptee() { } QStringList BaseChannel::Adaptee::interfaces() const { QStringList ret; foreach(const AbstractChannelInterfacePtr & iface, mChannel->interfaces()) { if (iface->interfaceName().contains(QLatin1String(".Type."))) continue; //Do not include "Type" ret << iface->interfaceName(); } return ret; } void BaseChannel::Adaptee::close(const Tp::Service::ChannelAdaptor::CloseContextPtr &context) { mChannel->close(); context->setFinished(); } /** * \class BaseChannel * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for channel implementations. * */ BaseChannel::BaseChannel(const QDBusConnection &dbusConnection, BaseConnection *connection, const QString &channelType, uint targetHandleType, uint targetHandle) : DBusService(dbusConnection), mPriv(new Private(this, dbusConnection, connection, channelType, targetHandleType, targetHandle)) { } /** * Class destructor. */ BaseChannel::~BaseChannel() { delete mPriv; } /** * Return a unique name for this channel. * * \return A unique name for this channel. */ QString BaseChannel::uniqueName() const { return mPriv->uniqueName; } bool BaseChannel::registerObject(DBusError *error) { if (isRegistered()) { return true; } QString name = uniqueName(); QString busName = mPriv->connection->busName(); //QString busName = QString(QLatin1String("%1.%2")) // .arg(mPriv->connection->busName(),name); QString objectPath = QString(QLatin1String("%1/%2")) .arg(mPriv->connection->objectPath(), name); debug() << "Registering channel: busName: " << busName << " objectName: " << objectPath; DBusError _error; debug() << "Channel: registering interfaces at " << dbusObject(); foreach(const AbstractChannelInterfacePtr & iface, mPriv->interfaces) { if (!iface->registerInterface(dbusObject())) { // lets not fail if an optional interface fails registering, lets warn only warning() << "Unable to register interface" << iface->interfaceName(); } } bool ret = registerObject(busName, objectPath, &_error); if (!ret && error) { error->set(_error.name(), _error.message()); } return ret; } /** * Reimplemented from DBusService. */ bool BaseChannel::registerObject(const QString &busName, const QString &objectPath, DBusError *error) { return DBusService::registerObject(busName, objectPath, error); } QString BaseChannel::channelType() const { return mPriv->channelType; } QList BaseChannel::interfaces() const { return mPriv->interfaces.values(); } uint BaseChannel::targetHandle() const { return mPriv->targetHandle; } QString BaseChannel::targetID() const { return mPriv->targetID; } uint BaseChannel::targetHandleType() const { return mPriv->targetHandleType; } bool BaseChannel::requested() const { return mPriv->requested; } uint BaseChannel::initiatorHandle() const { return mPriv->initiatorHandle; } QString BaseChannel::initiatorID() const { return mPriv->initiatorID; } void BaseChannel::setInitiatorHandle(uint initiatorHandle) { mPriv->initiatorHandle = initiatorHandle; } void BaseChannel::setInitiatorID(const QString &initiatorID) { mPriv->initiatorID = initiatorID; } void BaseChannel::setTargetID(const QString &targetID) { mPriv->targetID = targetID; } void BaseChannel::setRequested(bool requested) { mPriv->requested = requested; } void BaseChannel::close() { // Method is used in destructor, so (to be sure that adaptee is exists) we should use DirectConnection QMetaObject::invokeMethod(mPriv->adaptee, "closed", Qt::DirectConnection); emit closed(); } /** * Return the immutable properties of this channel object. * * Immutable properties cannot change after the object has been registered * on the bus with registerObject(). * * \return The immutable properties of this channel object. */ QVariantMap BaseChannel::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), QVariant::fromValue(mPriv->adaptee->channelType())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), QVariant::fromValue(mPriv->adaptee->targetHandle())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".Interfaces"), QVariant::fromValue(mPriv->adaptee->interfaces())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), QVariant::fromValue(mPriv->adaptee->targetID())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), QVariant::fromValue(mPriv->adaptee->targetHandleType())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"), QVariant::fromValue(mPriv->adaptee->requested())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"), QVariant::fromValue(mPriv->adaptee->initiatorHandle())); map.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorID"), QVariant::fromValue(mPriv->adaptee->initiatorID())); return map; } Tp::ChannelDetails BaseChannel::details() const { Tp::ChannelDetails details; details.channel = QDBusObjectPath(objectPath()); details.properties.unite(immutableProperties()); foreach(const AbstractChannelInterfacePtr & iface, mPriv->interfaces) { details.properties.unite(iface->immutableProperties()); } return details; } /** * Return a pointer to the interface with the given name. * * \param interfaceName The D-Bus name of the interface, * ex. TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING. * \return A pointer to the AbstractProtocolInterface object that implements * the D-Bus interface with the given name, or a null pointer if such an interface * has not been plugged into this object. * \sa plugInterface(), interfaces() */ AbstractChannelInterfacePtr BaseChannel::interface(const QString &interfaceName) const { return mPriv->interfaces.value(interfaceName); } /** * Plug a new interface into this Protocol D-Bus object. * * This property is immutable and cannot change after this Protocol * object has been registered on the bus with registerObject(). * * \param interface An AbstractProtocolInterface instance that implements * the interface that is to be plugged. * \return \c true on success or \c false otherwise * \sa interfaces(), interface() */ bool BaseChannel::plugInterface(const AbstractChannelInterfacePtr &interface) { if (isRegistered()) { warning() << "Unable to plug protocol interface " << interface->interfaceName() << "- protocol already registered"; return false; } if (interface->isRegistered()) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- interface already registered"; return false; } if (mPriv->interfaces.contains(interface->interfaceName())) { warning() << "Unable to plug protocol interface" << interface->interfaceName() << "- another interface with same name already plugged"; return false; } debug() << "Interface" << interface->interfaceName() << "plugged"; mPriv->interfaces.insert(interface->interfaceName(), interface); return true; } /** * \class AbstractChannelInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for all the Channel object interface implementations. */ AbstractChannelInterface::AbstractChannelInterface(const QString &interfaceName) : AbstractDBusServiceInterface(interfaceName) { } AbstractChannelInterface::~AbstractChannelInterface() { } // Chan.T.Text BaseChannelTextType::Adaptee::Adaptee(BaseChannelTextType *interface) : QObject(interface), mInterface(interface) { } BaseChannelTextType::Adaptee::~Adaptee() { } void BaseChannelTextType::Adaptee::acknowledgePendingMessages(const Tp::UIntList &IDs, const Tp::Service::ChannelTypeTextAdaptor::AcknowledgePendingMessagesContextPtr &context) { qDebug() << "BaseConnectionContactsInterface::acknowledgePendingMessages " << IDs; DBusError error; mInterface->acknowledgePendingMessages(IDs, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } struct TP_QT_NO_EXPORT BaseChannelTextType::Private { Private(BaseChannelTextType *parent, BaseChannel* channel) : channel(channel), pendingMessagesId(0), adaptee(new BaseChannelTextType::Adaptee(parent)) { } BaseChannel* channel; /* maps pending-message-id to message part list */ QMap pendingMessages; /* increasing unique id of pending messages */ uint pendingMessagesId; MessageAcknowledgedCallback messageAcknowledgedCB; BaseChannelTextType::Adaptee *adaptee; }; /** * \class BaseChannelTextType * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Type.Text * */ /** * Class constructor. */ BaseChannelTextType::BaseChannelTextType(BaseChannel* channel) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_TYPE_TEXT), mPriv(new Private(this, channel)) { } /** * Class destructor. */ BaseChannelTextType::~BaseChannelTextType() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelTextType::immutableProperties() const { return QVariantMap(); } void BaseChannelTextType::createAdaptor() { (void) new Service::ChannelTypeTextAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelTextType::addReceivedMessage(const Tp::MessagePartList &msg) { MessagePartList message = msg; if (msg.empty()) { warning() << "empty message: not sent"; return; } MessagePart &header = message.front(); if (header.count(QLatin1String("pending-message-id"))) warning() << "pending-message-id will be overwritten"; /* Add pending-message-id to header */ uint pendingMessageId = mPriv->pendingMessagesId++; header[QLatin1String("pending-message-id")] = QDBusVariant(pendingMessageId); mPriv->pendingMessages[pendingMessageId] = message; uint timestamp = 0; if (header.count(QLatin1String("message-received"))) timestamp = header[QLatin1String("message-received")].variant().toUInt(); uint handle = 0; if (header.count(QLatin1String("message-sender"))) handle = header[QLatin1String("message-sender")].variant().toUInt(); uint type = ChannelTextMessageTypeNormal; if (header.count(QLatin1String("message-type"))) type = header[QLatin1String("message-type")].variant().toUInt(); //FIXME: flags are not parsed uint flags = 0; QString content; for (MessagePartList::Iterator i = message.begin() + 1; i != message.end(); ++i) if (i->count(QLatin1String("content-type")) && i->value(QLatin1String("content-type")).variant().toString() == QLatin1String("text/plain") && i->count(QLatin1String("content"))) { content = i->value(QLatin1String("content")).variant().toString(); break; } if (content.length() > 0) QMetaObject::invokeMethod(mPriv->adaptee, "received", Qt::QueuedConnection, Q_ARG(uint, pendingMessageId), Q_ARG(uint, timestamp), Q_ARG(uint, handle), Q_ARG(uint, type), Q_ARG(uint, flags), Q_ARG(QString, content)); /* Signal on ChannelMessagesInterface */ BaseChannelMessagesInterfacePtr messagesIface = BaseChannelMessagesInterfacePtr::dynamicCast( mPriv->channel->interface(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES)); if (messagesIface) QMetaObject::invokeMethod(messagesIface.data(), "messageReceived", Qt::QueuedConnection, Q_ARG(Tp::MessagePartList, message)); } Tp::MessagePartListList BaseChannelTextType::pendingMessages() { return mPriv->pendingMessages.values(); } /* * Will be called with the value of the message-token field after a received message has been acknowledged, * if the message-token field existed in the header. */ void BaseChannelTextType::setMessageAcknowledgedCallback(const MessageAcknowledgedCallback &cb) { mPriv->messageAcknowledgedCB = cb; } void BaseChannelTextType::acknowledgePendingMessages(const Tp::UIntList &IDs, DBusError* error) { foreach(uint id, IDs) { QMap::Iterator i = mPriv->pendingMessages.find(id); if (i == mPriv->pendingMessages.end()) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("id not found")); return; } MessagePart &header = i->front(); if (header.count(QLatin1String("message-token")) && mPriv->messageAcknowledgedCB.isValid()) mPriv->messageAcknowledgedCB(header[QLatin1String("message-token")].variant().toString()); mPriv->pendingMessages.erase(i); } /* Signal on ChannelMessagesInterface */ BaseChannelMessagesInterfacePtr messagesIface = BaseChannelMessagesInterfacePtr::dynamicCast( mPriv->channel->interface(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES)); if (messagesIface) //emit after return QMetaObject::invokeMethod(messagesIface.data(), "pendingMessagesRemoved", Qt::QueuedConnection, Q_ARG(Tp::UIntList, IDs)); } void BaseChannelTextType::sent(uint timestamp, uint type, QString text) { QMetaObject::invokeMethod(mPriv->adaptee,"sent",Q_ARG(uint, timestamp), Q_ARG(uint, type), Q_ARG(QString, text)); //Can simply use emit in Qt5 } // Chan.I.Messages BaseChannelMessagesInterface::Adaptee::Adaptee(BaseChannelMessagesInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelMessagesInterface::Adaptee::~Adaptee() { } void BaseChannelMessagesInterface::Adaptee::sendMessage(const Tp::MessagePartList &message, uint flags, const Tp::Service::ChannelInterfaceMessagesAdaptor::SendMessageContextPtr &context) { DBusError error; QString token = mInterface->sendMessage(message, flags, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(token); } struct TP_QT_NO_EXPORT BaseChannelMessagesInterface::Private { Private(BaseChannelMessagesInterface *parent, BaseChannelTextType* textTypeInterface, QStringList supportedContentTypes, Tp::UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport) : textTypeInterface(textTypeInterface), supportedContentTypes(supportedContentTypes), messageTypes(messageTypes), messagePartSupportFlags(messagePartSupportFlags), deliveryReportingSupport(deliveryReportingSupport), adaptee(new BaseChannelMessagesInterface::Adaptee(parent)) { } BaseChannelTextType* textTypeInterface; QStringList supportedContentTypes; Tp::UIntList messageTypes; uint messagePartSupportFlags; uint deliveryReportingSupport; SendMessageCallback sendMessageCB; BaseChannelMessagesInterface::Adaptee *adaptee; }; /** * \class BaseChannelMessagesInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Messages * */ /** * Class constructor. */ BaseChannelMessagesInterface::BaseChannelMessagesInterface(BaseChannelTextType *textType, QStringList supportedContentTypes, UIntList messageTypes, uint messagePartSupportFlags, uint deliveryReportingSupport) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES), mPriv(new Private(this, textType, supportedContentTypes, messageTypes, messagePartSupportFlags, deliveryReportingSupport)) { } /** * Class destructor. */ BaseChannelMessagesInterface::~BaseChannelMessagesInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelMessagesInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES + QLatin1String(".SupportedContentTypes"), QVariant::fromValue(mPriv->adaptee->supportedContentTypes())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES + QLatin1String(".MessageTypes"), QVariant::fromValue(mPriv->adaptee->messageTypes())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES + QLatin1String(".MessagePartSupportFlags"), QVariant::fromValue(mPriv->adaptee->messagePartSupportFlags())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_MESSAGES + QLatin1String(".DeliveryReportingSupport"), QVariant::fromValue(mPriv->adaptee->deliveryReportingSupport())); return map; } void BaseChannelMessagesInterface::createAdaptor() { (void) new Service::ChannelInterfaceMessagesAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } QStringList BaseChannelMessagesInterface::supportedContentTypes() { return mPriv->supportedContentTypes; } Tp::UIntList BaseChannelMessagesInterface::messageTypes() { return mPriv->messageTypes; } uint BaseChannelMessagesInterface::messagePartSupportFlags() { return mPriv->messagePartSupportFlags; } uint BaseChannelMessagesInterface::deliveryReportingSupport() { return mPriv->deliveryReportingSupport; } Tp::MessagePartListList BaseChannelMessagesInterface::pendingMessages() { return mPriv->textTypeInterface->pendingMessages(); } void BaseChannelMessagesInterface::messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken) { QMetaObject::invokeMethod(mPriv->adaptee, "messageSent", Q_ARG(Tp::MessagePartList, content), Q_ARG(uint, flags), Q_ARG(QString, messageToken)); //Can simply use emit in Qt5 } void BaseChannelMessagesInterface::pendingMessagesRemoved(const Tp::UIntList &messageIDs) { QMetaObject::invokeMethod(mPriv->adaptee, "pendingMessagesRemoved", Q_ARG(Tp::UIntList, messageIDs)); //Can simply use emit in Qt5 } void BaseChannelMessagesInterface::messageReceived(const Tp::MessagePartList &message) { QMetaObject::invokeMethod(mPriv->adaptee, "messageReceived", Q_ARG(Tp::MessagePartList, message)); //Can simply use emit in Qt5 } void BaseChannelMessagesInterface::setSendMessageCallback(const SendMessageCallback &cb) { mPriv->sendMessageCB = cb; } QString BaseChannelMessagesInterface::sendMessage(const Tp::MessagePartList &message, uint flags, DBusError* error) { if (!mPriv->sendMessageCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return QString(); } const QString token = mPriv->sendMessageCB(message, flags, error); Tp::MessagePartList fixedMessage = message; MessagePart header = fixedMessage.front(); uint timestamp = 0; if (header.count(QLatin1String("message-sent"))) { timestamp = header[QLatin1String("message-sent")].variant().toUInt(); } else { timestamp = QDateTime::currentMSecsSinceEpoch() / 1000; header[QLatin1String("message-sent")] = QDBusVariant(timestamp); } fixedMessage.replace(0, header); //emit after return QMetaObject::invokeMethod(mPriv->adaptee, "messageSent", Qt::QueuedConnection, Q_ARG(Tp::MessagePartList, fixedMessage), Q_ARG(uint, flags), Q_ARG(QString, token)); if (message.empty()) { warning() << "Sending empty message"; return token; } uint type = ChannelTextMessageTypeNormal; if (header.count(QLatin1String("message-type"))) type = header[QLatin1String("message-type")].variant().toUInt(); QString content; for (MessagePartList::const_iterator i = message.begin() + 1; i != message.end(); ++i) if (i->count(QLatin1String("content-type")) && i->value(QLatin1String("content-type")).variant().toString() == QLatin1String("text/plain") && i->count(QLatin1String("content"))) { content = i->value(QLatin1String("content")).variant().toString(); break; } //emit after return QMetaObject::invokeMethod(mPriv->textTypeInterface, "sent", Qt::QueuedConnection, Q_ARG(uint, timestamp), Q_ARG(uint, type), Q_ARG(QString, content)); return token; } // Chan.T.RoomList // The BaseChannelRoomListType code is fully or partially generated by the TelepathyQt-Generator. struct TP_QT_NO_EXPORT BaseChannelRoomListType::Private { Private(BaseChannelRoomListType *parent, const QString &server) : server(server), listingRooms(false), adaptee(new BaseChannelRoomListType::Adaptee(parent)) { } QString server; bool listingRooms; ListRoomsCallback listRoomsCB; StopListingCallback stopListingCB; BaseChannelRoomListType::Adaptee *adaptee; }; BaseChannelRoomListType::Adaptee::Adaptee(BaseChannelRoomListType *interface) : QObject(interface), mInterface(interface) { } BaseChannelRoomListType::Adaptee::~Adaptee() { } QString BaseChannelRoomListType::Adaptee::server() const { return mInterface->server(); } void BaseChannelRoomListType::Adaptee::getListingRooms( const Tp::Service::ChannelTypeRoomListAdaptor::GetListingRoomsContextPtr &context) { context->setFinished(mInterface->getListingRooms()); } void BaseChannelRoomListType::Adaptee::listRooms( const Tp::Service::ChannelTypeRoomListAdaptor::ListRoomsContextPtr &context) { qDebug() << "BaseChannelRoomListType::Adaptee::listRooms"; DBusError error; mInterface->listRooms(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelRoomListType::Adaptee::stopListing( const Tp::Service::ChannelTypeRoomListAdaptor::StopListingContextPtr &context) { qDebug() << "BaseChannelRoomListType::Adaptee::stopListing"; DBusError error; mInterface->stopListing(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelRoomListType * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Type.RoomList */ /** * Class constructor. */ BaseChannelRoomListType::BaseChannelRoomListType(const QString &server) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST), mPriv(new Private(this, server)) { } /** * Class destructor. */ BaseChannelRoomListType::~BaseChannelRoomListType() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelRoomListType::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST + QLatin1String(".Server"), QVariant::fromValue(mPriv->adaptee->server())); return map; } QString BaseChannelRoomListType::server() const { return mPriv->server; } void BaseChannelRoomListType::createAdaptor() { (void) new Tp::Service::ChannelTypeRoomListAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } bool BaseChannelRoomListType::getListingRooms() { return mPriv->listingRooms; } void BaseChannelRoomListType::setListingRooms(bool listing) { if (mPriv->listingRooms == listing) { return; } mPriv->listingRooms = listing; QMetaObject::invokeMethod(mPriv->adaptee, "listingRooms", Q_ARG(bool, listing)); //Can simply use emit in Qt5 } void BaseChannelRoomListType::setListRoomsCallback(const ListRoomsCallback &cb) { mPriv->listRoomsCB = cb; } void BaseChannelRoomListType::listRooms(DBusError *error) { if (!mPriv->listRoomsCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->listRoomsCB(error); } void BaseChannelRoomListType::setStopListingCallback(const StopListingCallback &cb) { mPriv->stopListingCB = cb; } void BaseChannelRoomListType::stopListing(DBusError *error) { if (!mPriv->stopListingCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->stopListingCB(error); } void BaseChannelRoomListType::gotRooms(const Tp::RoomInfoList &rooms) { QMetaObject::invokeMethod(mPriv->adaptee, "gotRooms", Q_ARG(Tp::RoomInfoList, rooms)); //Can simply use emit in Qt5 } //Chan.T.ServerAuthentication BaseChannelServerAuthenticationType::Adaptee::Adaptee(BaseChannelServerAuthenticationType *interface) : QObject(interface), mInterface(interface) { } BaseChannelServerAuthenticationType::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelServerAuthenticationType::Private { Private(BaseChannelServerAuthenticationType *parent, const QString& authenticationMethod) : authenticationMethod(authenticationMethod), adaptee(new BaseChannelServerAuthenticationType::Adaptee(parent)) { } QString authenticationMethod; BaseChannelServerAuthenticationType::Adaptee *adaptee; }; QString BaseChannelServerAuthenticationType::Adaptee::authenticationMethod() const { return mInterface->mPriv->authenticationMethod; } /** * \class BaseChannelServerAuthenticationType * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Type.ServerAuthentifcation * */ /** * Class constructor. */ BaseChannelServerAuthenticationType::BaseChannelServerAuthenticationType(const QString& authenticationMethod) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION), mPriv(new Private(this, authenticationMethod)) { } /** * Class destructor. */ BaseChannelServerAuthenticationType::~BaseChannelServerAuthenticationType() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelServerAuthenticationType::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION + QLatin1String(".AuthenticationMethod"), QVariant::fromValue(mPriv->adaptee->authenticationMethod())); return map; } void BaseChannelServerAuthenticationType::createAdaptor() { (void) new Service::ChannelTypeServerAuthenticationAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } //Chan.I.CaptchaAuthentication BaseChannelCaptchaAuthenticationInterface::Adaptee::Adaptee(BaseChannelCaptchaAuthenticationInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelCaptchaAuthenticationInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelCaptchaAuthenticationInterface::Private { Private(BaseChannelCaptchaAuthenticationInterface *parent, bool canRetryCaptcha) : canRetryCaptcha(canRetryCaptcha), captchaStatus(CaptchaStatusLocalPending), adaptee(new BaseChannelCaptchaAuthenticationInterface::Adaptee(parent)) { } bool canRetryCaptcha; bool captchaStatus; QString captchaError; QVariantMap captchaErrorDetails; GetCaptchasCallback getCaptchasCB; GetCaptchaDataCallback getCaptchaDataCB; AnswerCaptchasCallback answerCaptchasCB; CancelCaptchaCallback cancelCaptchaCB; BaseChannelCaptchaAuthenticationInterface::Adaptee *adaptee; }; bool BaseChannelCaptchaAuthenticationInterface::Adaptee::canRetryCaptcha() const { return mInterface->mPriv->canRetryCaptcha; } uint BaseChannelCaptchaAuthenticationInterface::Adaptee::captchaStatus() const { return mInterface->mPriv->captchaStatus; } QString BaseChannelCaptchaAuthenticationInterface::Adaptee::captchaError() const { return mInterface->mPriv->captchaError; } QVariantMap BaseChannelCaptchaAuthenticationInterface::Adaptee::captchaErrorDetails() const { return mInterface->mPriv->captchaErrorDetails; } void BaseChannelCaptchaAuthenticationInterface::Adaptee::getCaptchas(const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchasContextPtr &context) { qDebug() << "BaseChannelCaptchaAuthenticationInterface::Adaptee::getCaptchas"; DBusError error; Tp::CaptchaInfoList captchaInfo; uint numberRequired; QString language; mInterface->mPriv->getCaptchasCB(captchaInfo, numberRequired, language, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(captchaInfo, numberRequired, language); } void BaseChannelCaptchaAuthenticationInterface::Adaptee::getCaptchaData(uint ID, const QString& mimeType, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchaDataContextPtr &context) { qDebug() << "BaseChannelCaptchaAuthenticationInterface::Adaptee::getCaptchaData " << ID << mimeType; DBusError error; QByteArray captchaData = mInterface->mPriv->getCaptchaDataCB(ID, mimeType, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(captchaData); } void BaseChannelCaptchaAuthenticationInterface::Adaptee::answerCaptchas(const Tp::CaptchaAnswers& answers, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::AnswerCaptchasContextPtr &context) { qDebug() << "BaseChannelCaptchaAuthenticationInterface::Adaptee::answerCaptchas"; DBusError error; mInterface->mPriv->answerCaptchasCB(answers, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelCaptchaAuthenticationInterface::Adaptee::cancelCaptcha(uint reason, const QString& debugMessage, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CancelCaptchaContextPtr &context) { qDebug() << "BaseChannelCaptchaAuthenticationInterface::Adaptee::cancelCaptcha " << reason << " " << debugMessage; DBusError error; mInterface->mPriv->cancelCaptchaCB(reason, debugMessage, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelCaptchaAuthenticationInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.CaptchaAuthentication * */ /** * Class constructor. */ BaseChannelCaptchaAuthenticationInterface::BaseChannelCaptchaAuthenticationInterface(bool canRetryCaptcha) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION), mPriv(new Private(this, canRetryCaptcha)) { } /** * Class destructor. */ BaseChannelCaptchaAuthenticationInterface::~BaseChannelCaptchaAuthenticationInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelCaptchaAuthenticationInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION + QLatin1String(".CanRetryCaptcha"), QVariant::fromValue(mPriv->adaptee->canRetryCaptcha())); return map; } void BaseChannelCaptchaAuthenticationInterface::createAdaptor() { (void) new Service::ChannelInterfaceCaptchaAuthenticationAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelCaptchaAuthenticationInterface::setGetCaptchasCallback(const GetCaptchasCallback &cb) { mPriv->getCaptchasCB = cb; } void BaseChannelCaptchaAuthenticationInterface::setGetCaptchaDataCallback(const GetCaptchaDataCallback &cb) { mPriv->getCaptchaDataCB = cb; } void BaseChannelCaptchaAuthenticationInterface::setAnswerCaptchasCallback(const AnswerCaptchasCallback &cb) { mPriv->answerCaptchasCB = cb; } void BaseChannelCaptchaAuthenticationInterface::setCancelCaptchaCallback(const CancelCaptchaCallback &cb) { mPriv->cancelCaptchaCB = cb; } void BaseChannelCaptchaAuthenticationInterface::setCaptchaStatus(uint status) { mPriv->captchaStatus = status; notifyPropertyChanged(QLatin1String("CaptchaStatus"), QVariant::fromValue(status)); } void BaseChannelCaptchaAuthenticationInterface::setCaptchaError(const QString& busName) { mPriv->captchaError = busName; notifyPropertyChanged(QLatin1String("CaptchaError"), QVariant::fromValue(busName)); } void BaseChannelCaptchaAuthenticationInterface::setCaptchaErrorDetails(const QVariantMap& error) { mPriv->captchaErrorDetails = error; notifyPropertyChanged(QLatin1String("CaptchaErrorDetails"), QVariant::fromValue(error)); } // Chan.I.SASLAuthentication // The BaseChannelSASLAuthenticationInterface code is fully or partially generated by the TelepathyQt-Generator. struct TP_QT_NO_EXPORT BaseChannelSASLAuthenticationInterface::Private { Private(BaseChannelSASLAuthenticationInterface *parent, const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) : availableMechanisms(availableMechanisms), hasInitialData(hasInitialData), canTryAgain(canTryAgain), saslStatus(0), authorizationIdentity(authorizationIdentity), defaultUsername(defaultUsername), defaultRealm(defaultRealm), maySaveResponse(maySaveResponse), adaptee(new BaseChannelSASLAuthenticationInterface::Adaptee(parent)) { } QStringList availableMechanisms; bool hasInitialData; bool canTryAgain; uint saslStatus; QString saslError; QVariantMap saslErrorDetails; QString authorizationIdentity; QString defaultUsername; QString defaultRealm; bool maySaveResponse; StartMechanismCallback startMechanismCB; StartMechanismWithDataCallback startMechanismWithDataCB; RespondCallback respondCB; AcceptSASLCallback acceptSaslCB; AbortSASLCallback abortSaslCB; BaseChannelSASLAuthenticationInterface::Adaptee *adaptee; }; BaseChannelSASLAuthenticationInterface::Adaptee::Adaptee(BaseChannelSASLAuthenticationInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelSASLAuthenticationInterface::Adaptee::~Adaptee() { } QStringList BaseChannelSASLAuthenticationInterface::Adaptee::availableMechanisms() const { return mInterface->availableMechanisms(); } bool BaseChannelSASLAuthenticationInterface::Adaptee::hasInitialData() const { return mInterface->hasInitialData(); } bool BaseChannelSASLAuthenticationInterface::Adaptee::canTryAgain() const { return mInterface->canTryAgain(); } uint BaseChannelSASLAuthenticationInterface::Adaptee::saslStatus() const { return mInterface->saslStatus(); } QString BaseChannelSASLAuthenticationInterface::Adaptee::saslError() const { return mInterface->saslError(); } QVariantMap BaseChannelSASLAuthenticationInterface::Adaptee::saslErrorDetails() const { return mInterface->saslErrorDetails(); } QString BaseChannelSASLAuthenticationInterface::Adaptee::authorizationIdentity() const { return mInterface->authorizationIdentity(); } QString BaseChannelSASLAuthenticationInterface::Adaptee::defaultUsername() const { return mInterface->defaultUsername(); } QString BaseChannelSASLAuthenticationInterface::Adaptee::defaultRealm() const { return mInterface->defaultRealm(); } bool BaseChannelSASLAuthenticationInterface::Adaptee::maySaveResponse() const { return mInterface->maySaveResponse(); } void BaseChannelSASLAuthenticationInterface::Adaptee::startMechanism(const QString &mechanism, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismContextPtr &context) { qDebug() << "BaseChannelSASLAuthenticationInterface::Adaptee::startMechanism"; DBusError error; mInterface->startMechanism(mechanism, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelSASLAuthenticationInterface::Adaptee::startMechanismWithData(const QString &mechanism, const QByteArray &initialData, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismWithDataContextPtr &context) { qDebug() << "BaseChannelSASLAuthenticationInterface::Adaptee::startMechanismWithData"; DBusError error; mInterface->startMechanismWithData(mechanism, initialData, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelSASLAuthenticationInterface::Adaptee::respond(const QByteArray &responseData, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::RespondContextPtr &context) { qDebug() << "BaseChannelSASLAuthenticationInterface::Adaptee::respond"; DBusError error; mInterface->respond(responseData, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelSASLAuthenticationInterface::Adaptee::acceptSasl( const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AcceptSASLContextPtr &context) { qDebug() << "BaseChannelSASLAuthenticationInterface::Adaptee::acceptSasl"; DBusError error; mInterface->acceptSasl(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelSASLAuthenticationInterface::Adaptee::abortSasl(uint reason, const QString &debugMessage, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AbortSASLContextPtr &context) { qDebug() << "BaseChannelSASLAuthenticationInterface::Adaptee::abortSasl"; DBusError error; mInterface->abortSasl(reason, debugMessage, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelSASLAuthenticationInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.SASLAuthentication */ /** * Class constructor. */ BaseChannelSASLAuthenticationInterface::BaseChannelSASLAuthenticationInterface(const QStringList &availableMechanisms, bool hasInitialData, bool canTryAgain, const QString &authorizationIdentity, const QString &defaultUsername, const QString &defaultRealm, bool maySaveResponse) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION), mPriv(new Private(this, availableMechanisms, hasInitialData, canTryAgain, authorizationIdentity, defaultUsername, defaultRealm, maySaveResponse)) { } /** * Class destructor. */ BaseChannelSASLAuthenticationInterface::~BaseChannelSASLAuthenticationInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelSASLAuthenticationInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".AvailableMechanisms"), QVariant::fromValue(mPriv->adaptee->availableMechanisms())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".HasInitialData"), QVariant::fromValue(mPriv->adaptee->hasInitialData())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".CanTryAgain"), QVariant::fromValue(mPriv->adaptee->canTryAgain())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".AuthorizationIdentity"), QVariant::fromValue(mPriv->adaptee->authorizationIdentity())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".DefaultUsername"), QVariant::fromValue(mPriv->adaptee->defaultUsername())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".DefaultRealm"), QVariant::fromValue(mPriv->adaptee->defaultRealm())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION + QLatin1String(".MaySaveResponse"), QVariant::fromValue(mPriv->adaptee->maySaveResponse())); return map; } QStringList BaseChannelSASLAuthenticationInterface::availableMechanisms() const { return mPriv->availableMechanisms; } bool BaseChannelSASLAuthenticationInterface::hasInitialData() const { return mPriv->hasInitialData; } bool BaseChannelSASLAuthenticationInterface::canTryAgain() const { return mPriv->canTryAgain; } uint BaseChannelSASLAuthenticationInterface::saslStatus() const { return mPriv->saslStatus; } void BaseChannelSASLAuthenticationInterface::setSaslStatus(uint status, const QString &reason, const QVariantMap &details) { mPriv->saslStatus = status; mPriv->saslError = reason; mPriv->saslErrorDetails = details; QMetaObject::invokeMethod(mPriv->adaptee, "saslStatusChanged", Q_ARG(uint, status), Q_ARG(QString, reason), Q_ARG(QVariantMap, details)); //Can simply use emit in Qt5 } QString BaseChannelSASLAuthenticationInterface::saslError() const { return mPriv->saslError; } void BaseChannelSASLAuthenticationInterface::setSaslError(const QString &saslError) { mPriv->saslError = saslError; } QVariantMap BaseChannelSASLAuthenticationInterface::saslErrorDetails() const { return mPriv->saslErrorDetails; } void BaseChannelSASLAuthenticationInterface::setSaslErrorDetails(const QVariantMap &saslErrorDetails) { mPriv->saslErrorDetails = saslErrorDetails; } QString BaseChannelSASLAuthenticationInterface::authorizationIdentity() const { return mPriv->authorizationIdentity; } QString BaseChannelSASLAuthenticationInterface::defaultUsername() const { return mPriv->defaultUsername; } QString BaseChannelSASLAuthenticationInterface::defaultRealm() const { return mPriv->defaultRealm; } bool BaseChannelSASLAuthenticationInterface::maySaveResponse() const { return mPriv->maySaveResponse; } void BaseChannelSASLAuthenticationInterface::createAdaptor() { (void) new Service::ChannelInterfaceSASLAuthenticationAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelSASLAuthenticationInterface::setStartMechanismCallback(const BaseChannelSASLAuthenticationInterface::StartMechanismCallback &cb) { mPriv->startMechanismCB = cb; } void BaseChannelSASLAuthenticationInterface::startMechanism(const QString &mechanism, DBusError *error) { if (!mPriv->startMechanismCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->startMechanismCB(mechanism, error); } void BaseChannelSASLAuthenticationInterface::setStartMechanismWithDataCallback(const BaseChannelSASLAuthenticationInterface::StartMechanismWithDataCallback &cb) { mPriv->startMechanismWithDataCB = cb; } void BaseChannelSASLAuthenticationInterface::startMechanismWithData(const QString &mechanism, const QByteArray &initialData, DBusError *error) { if (!mPriv->startMechanismWithDataCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->startMechanismWithDataCB(mechanism, initialData, error); } void BaseChannelSASLAuthenticationInterface::setRespondCallback(const BaseChannelSASLAuthenticationInterface::RespondCallback &cb) { mPriv->respondCB = cb; } void BaseChannelSASLAuthenticationInterface::respond(const QByteArray &responseData, DBusError *error) { if (!mPriv->respondCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->respondCB(responseData, error); } void BaseChannelSASLAuthenticationInterface::setAcceptSaslCallback(const BaseChannelSASLAuthenticationInterface::AcceptSASLCallback &cb) { mPriv->acceptSaslCB = cb; } void BaseChannelSASLAuthenticationInterface::acceptSasl(DBusError *error) { if (!mPriv->acceptSaslCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->acceptSaslCB(error); } void BaseChannelSASLAuthenticationInterface::setAbortSaslCallback(const BaseChannelSASLAuthenticationInterface::AbortSASLCallback &cb) { mPriv->abortSaslCB = cb; } void BaseChannelSASLAuthenticationInterface::abortSasl(uint reason, const QString &debugMessage, DBusError *error) { if (!mPriv->abortSaslCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->abortSaslCB(reason, debugMessage, error); } void BaseChannelSASLAuthenticationInterface::newChallenge(const QByteArray &challengeData) { QMetaObject::invokeMethod(mPriv->adaptee, "newChallenge", Q_ARG(QByteArray, challengeData)); //Can simply use emit in Qt5 } // Chan.I.Securable struct TP_QT_NO_EXPORT BaseChannelSecurableInterface::Private { Private(BaseChannelSecurableInterface *parent) : encrypted(false), verified(false), adaptee(new BaseChannelSecurableInterface::Adaptee(parent)) { } bool encrypted; bool verified; BaseChannelSecurableInterface::Adaptee *adaptee; }; BaseChannelSecurableInterface::Adaptee::Adaptee(BaseChannelSecurableInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelSecurableInterface::Adaptee::~Adaptee() { } bool BaseChannelSecurableInterface::Adaptee::encrypted() const { return mInterface->encrypted(); } bool BaseChannelSecurableInterface::Adaptee::verified() const { return mInterface->verified(); } /** * \class BaseChannelSecurableInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Securable */ /** * Class constructor. */ BaseChannelSecurableInterface::BaseChannelSecurableInterface() : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_SECURABLE), mPriv(new Private(this)) { } /** * Class destructor. */ BaseChannelSecurableInterface::~BaseChannelSecurableInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelSecurableInterface::immutableProperties() const { QVariantMap map; return map; } bool BaseChannelSecurableInterface::encrypted() const { return mPriv->encrypted; } void BaseChannelSecurableInterface::setEncrypted(bool encrypted) { mPriv->encrypted = encrypted; } bool BaseChannelSecurableInterface::verified() const { return mPriv->verified; } void BaseChannelSecurableInterface::setVerified(bool verified) { mPriv->verified = verified; } void BaseChannelSecurableInterface::createAdaptor() { (void) new Service::ChannelInterfaceSecurableAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Chan.I.ChatState struct TP_QT_NO_EXPORT BaseChannelChatStateInterface::Private { Private(BaseChannelChatStateInterface *parent) : adaptee(new BaseChannelChatStateInterface::Adaptee(parent)) { } Tp::ChatStateMap chatStates; SetChatStateCallback setChatStateCB; BaseChannelChatStateInterface::Adaptee *adaptee; }; BaseChannelChatStateInterface::Adaptee::Adaptee(BaseChannelChatStateInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelChatStateInterface::Adaptee::~Adaptee() { } Tp::ChatStateMap BaseChannelChatStateInterface::Adaptee::chatStates() const { return mInterface->chatStates(); } void BaseChannelChatStateInterface::Adaptee::setChatState(uint state, const Tp::Service::ChannelInterfaceChatStateAdaptor::SetChatStateContextPtr &context) { qDebug() << "BaseChannelChatStateInterface::Adaptee::setChatState"; DBusError error; mInterface->setChatState(state, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelChatStateInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Chat.State */ /** * Class constructor. */ BaseChannelChatStateInterface::BaseChannelChatStateInterface() : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_CHAT_STATE), mPriv(new Private(this)) { } /** * Class destructor. */ BaseChannelChatStateInterface::~BaseChannelChatStateInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelChatStateInterface::immutableProperties() const { QVariantMap map; return map; } Tp::ChatStateMap BaseChannelChatStateInterface::chatStates() const { return mPriv->chatStates; } void BaseChannelChatStateInterface::setChatStates(const Tp::ChatStateMap &chatStates) { mPriv->chatStates = chatStates; } void BaseChannelChatStateInterface::createAdaptor() { (void) new Service::ChannelInterfaceChatStateAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelChatStateInterface::setSetChatStateCallback(const BaseChannelChatStateInterface::SetChatStateCallback &cb) { mPriv->setChatStateCB = cb; } void BaseChannelChatStateInterface::setChatState(uint state, DBusError *error) { if (!mPriv->setChatStateCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->setChatStateCB(state, error); } void BaseChannelChatStateInterface::chatStateChanged(uint contact, uint state) { QMetaObject::invokeMethod(mPriv->adaptee, "chatStateChanged", Q_ARG(uint, contact), Q_ARG(uint, state)); //Can simply use emit in Qt5 } //Chan.I.Group BaseChannelGroupInterface::Adaptee::Adaptee(BaseChannelGroupInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelGroupInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelGroupInterface::Private { Private(BaseChannelGroupInterface *parent, ChannelGroupFlags initialFlags, uint selfHandle) : flags(initialFlags), selfHandle(selfHandle), adaptee(new BaseChannelGroupInterface::Adaptee(parent)) { } ChannelGroupFlags flags; Tp::HandleOwnerMap handleOwners; Tp::LocalPendingInfoList localPendingMembers; Tp::UIntList members; Tp::UIntList remotePendingMembers; uint selfHandle; Tp::HandleIdentifierMap memberIdentifiers; RemoveMembersCallback removeMembersCB; AddMembersCallback addMembersCB; Tp::UIntList getLocalPendingMembers() const { Tp::UIntList ret; foreach(const LocalPendingInfo & info, localPendingMembers) ret << info.toBeAdded; return ret; } BaseChannelGroupInterface::Adaptee *adaptee; }; uint BaseChannelGroupInterface::Adaptee::groupFlags() const { return mInterface->mPriv->flags; } Tp::HandleOwnerMap BaseChannelGroupInterface::Adaptee::handleOwners() const { return mInterface->mPriv->handleOwners; } Tp::LocalPendingInfoList BaseChannelGroupInterface::Adaptee::localPendingMembers() const { return mInterface->mPriv->localPendingMembers; } Tp::UIntList BaseChannelGroupInterface::Adaptee::members() const { return mInterface->mPriv->members; } Tp::UIntList BaseChannelGroupInterface::Adaptee::remotePendingMembers() const { return mInterface->mPriv->remotePendingMembers; } uint BaseChannelGroupInterface::Adaptee::selfHandle() const { return mInterface->mPriv->selfHandle; } Tp::HandleIdentifierMap BaseChannelGroupInterface::Adaptee::memberIdentifiers() const { return mInterface->mPriv->memberIdentifiers; } void BaseChannelGroupInterface::Adaptee::addMembers(const Tp::UIntList& contacts, const QString& message, const Tp::Service::ChannelInterfaceGroupAdaptor::AddMembersContextPtr &context) { debug() << "BaseChannelGroupInterface::Adaptee::addMembers"; if (!mInterface->mPriv->addMembersCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->addMembersCB(contacts, message, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelGroupInterface::Adaptee::removeMembers(const Tp::UIntList& contacts, const QString& message, const Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersContextPtr &context) { debug() << "BaseChannelGroupInterface::Adaptee::removeMembers"; if (!mInterface->mPriv->removeMembersCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->removeMembersCB(contacts, message, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelGroupInterface::Adaptee::removeMembersWithReason(const Tp::UIntList& contacts, const QString& message, uint reason, const Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersWithReasonContextPtr &context) { debug() << "BaseChannelGroupInterface::Adaptee::removeMembersWithReason"; removeMembers(contacts, message, context); } void BaseChannelGroupInterface::Adaptee::getAllMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetAllMembersContextPtr &context) { context->setFinished(mInterface->mPriv->members, mInterface->mPriv->getLocalPendingMembers(), mInterface->mPriv->remotePendingMembers); } void BaseChannelGroupInterface::Adaptee::getGroupFlags(const Tp::Service::ChannelInterfaceGroupAdaptor::GetGroupFlagsContextPtr &context) { context->setFinished(mInterface->mPriv->flags); } void BaseChannelGroupInterface::Adaptee::getHandleOwners(const Tp::UIntList& handles, const Tp::Service::ChannelInterfaceGroupAdaptor::GetHandleOwnersContextPtr &context) { Tp::UIntList ret; foreach(uint handle, handles) ret.append(mInterface->mPriv->handleOwners.contains(handle) ? mInterface->mPriv->handleOwners[handle] : 0); context->setFinished(ret); } void BaseChannelGroupInterface::Adaptee::getLocalPendingMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersContextPtr &context) { context->setFinished(mInterface->mPriv->getLocalPendingMembers()); } void BaseChannelGroupInterface::Adaptee::getLocalPendingMembersWithInfo(const Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersWithInfoContextPtr &context) { context->setFinished(mInterface->mPriv->localPendingMembers); } void BaseChannelGroupInterface::Adaptee::getMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetMembersContextPtr &context) { context->setFinished(mInterface->mPriv->members); } void BaseChannelGroupInterface::Adaptee::getRemotePendingMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetRemotePendingMembersContextPtr &context) { context->setFinished(mInterface->mPriv->remotePendingMembers); } void BaseChannelGroupInterface::Adaptee::getSelfHandle(const Tp::Service::ChannelInterfaceGroupAdaptor::GetSelfHandleContextPtr &context) { context->setFinished(mInterface->mPriv->selfHandle); } /** * \class BaseChannelGroupInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Group * */ /** * Class constructor. */ BaseChannelGroupInterface::BaseChannelGroupInterface(ChannelGroupFlags initialFlags, uint selfHandle) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP), mPriv(new Private(this, initialFlags, selfHandle)) { } /** * Class destructor. */ BaseChannelGroupInterface::~BaseChannelGroupInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelGroupInterface::immutableProperties() const { QVariantMap map; return map; } void BaseChannelGroupInterface::createAdaptor() { (void) new Service::ChannelInterfaceGroupAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelGroupInterface::setRemoveMembersCallback(const RemoveMembersCallback &cb) { mPriv->removeMembersCB = cb; } void BaseChannelGroupInterface::setAddMembersCallback(const AddMembersCallback &cb) { mPriv->addMembersCB = cb; } void BaseChannelGroupInterface::addMembers(const Tp::UIntList& handles, const QStringList& identifiers) { if (handles.size() != identifiers.size()) { debug() << "BaseChannelGroupInterface::addMembers: handles.size() != identifiers.size()"; return; } Tp::UIntList added; for (int i = 0; i < handles.size(); ++i) { uint handle = handles[i]; if (mPriv->members.contains(handle)) continue; mPriv->memberIdentifiers[handle] = identifiers[i]; mPriv->members.append(handle); added.append(handle); } if (!added.isEmpty()) QMetaObject::invokeMethod(mPriv->adaptee,"membersChanged",Q_ARG(QString, QString()), Q_ARG(Tp::UIntList, added), Q_ARG(Tp::UIntList, Tp::UIntList()), Q_ARG(Tp::UIntList, Tp::UIntList()), Q_ARG(Tp::UIntList, Tp::UIntList()), Q_ARG(uint, 0), Q_ARG(uint, ChannelGroupChangeReasonNone)); //Can simply use emit in Qt5 } void BaseChannelGroupInterface::removeMembers(const Tp::UIntList& handles) { Tp::UIntList removed; foreach(uint handle, handles) { if (mPriv->members.contains(handle)) continue; mPriv->memberIdentifiers.remove(handle); mPriv->members.removeAll(handle); removed.append(handle); } if (!removed.isEmpty()) QMetaObject::invokeMethod(mPriv->adaptee,"membersChanged",Q_ARG(QString, QString()), Q_ARG(Tp::UIntList, Tp::UIntList()), Q_ARG(Tp::UIntList, removed), Q_ARG(Tp::UIntList, Tp::UIntList()), Q_ARG(Tp::UIntList, Tp::UIntList()), Q_ARG(uint, 0), Q_ARG(uint,ChannelGroupChangeReasonNone)); //Can simply use emit in Qt5 //Can simply use emit in Qt5 } // Chan.I.Room2 // The BaseChannelRoomInterface code is fully or partially generated by the TelepathyQt-Generator. struct TP_QT_NO_EXPORT BaseChannelRoomInterface::Private { Private(BaseChannelRoomInterface *parent, const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) : roomName(roomName), server(server), creator(creator), creatorHandle(creatorHandle), creationTimestamp(creationTimestamp), adaptee(new BaseChannelRoomInterface::Adaptee(parent)) { } QString roomName; QString server; QString creator; uint creatorHandle; QDateTime creationTimestamp; BaseChannelRoomInterface::Adaptee *adaptee; }; BaseChannelRoomInterface::Adaptee::Adaptee(BaseChannelRoomInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelRoomInterface::Adaptee::~Adaptee() { } QString BaseChannelRoomInterface::Adaptee::roomName() const { return mInterface->roomName(); } QString BaseChannelRoomInterface::Adaptee::server() const { return mInterface->server(); } QString BaseChannelRoomInterface::Adaptee::creator() const { return mInterface->creator(); } uint BaseChannelRoomInterface::Adaptee::creatorHandle() const { return mInterface->creatorHandle(); } QDateTime BaseChannelRoomInterface::Adaptee::creationTimestamp() const { return mInterface->creationTimestamp(); } /** * \class BaseChannelRoomInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Room2 */ /** * Class constructor. */ BaseChannelRoomInterface::BaseChannelRoomInterface(const QString &roomName, const QString &server, const QString &creator, uint creatorHandle, const QDateTime &creationTimestamp) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM), mPriv(new Private(this, roomName, server, creator, creatorHandle, creationTimestamp)) { } /** * Class destructor. */ BaseChannelRoomInterface::~BaseChannelRoomInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelRoomInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM + QLatin1String(".RoomName"), QVariant::fromValue(mPriv->adaptee->roomName())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM + QLatin1String(".Server"), QVariant::fromValue(mPriv->adaptee->server())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM + QLatin1String(".Creator"), QVariant::fromValue(mPriv->adaptee->creator())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM + QLatin1String(".CreatorHandle"), QVariant::fromValue(mPriv->adaptee->creatorHandle())); map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM + QLatin1String(".CreationTimestamp"), QVariant::fromValue(mPriv->adaptee->creationTimestamp())); return map; } QString BaseChannelRoomInterface::roomName() const { return mPriv->roomName; } QString BaseChannelRoomInterface::server() const { return mPriv->server; } QString BaseChannelRoomInterface::creator() const { return mPriv->creator; } uint BaseChannelRoomInterface::creatorHandle() const { return mPriv->creatorHandle; } QDateTime BaseChannelRoomInterface::creationTimestamp() const { return mPriv->creationTimestamp; } void BaseChannelRoomInterface::createAdaptor() { (void) new Service::ChannelInterfaceRoomAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Chan.I.RoomConfig1 // The BaseChannelRoomConfigInterface code is fully or partially generated by the TelepathyQt-Generator. struct TP_QT_NO_EXPORT BaseChannelRoomConfigInterface::Private { Private(BaseChannelRoomConfigInterface *parent) : anonymous(false), inviteOnly(false), limit(0), moderated(false), persistent(false), isPrivate(false), passwordProtected(false), canUpdateConfiguration(false), configurationRetrieved(false), adaptee(new BaseChannelRoomConfigInterface::Adaptee(parent)) { } bool anonymous; bool inviteOnly; uint limit; bool moderated; QString title; QString description; bool persistent; bool isPrivate; bool passwordProtected; QString password; QString passwordHint; bool canUpdateConfiguration; QStringList mutableProperties; bool configurationRetrieved; UpdateConfigurationCallback updateConfigurationCB; BaseChannelRoomConfigInterface::Adaptee *adaptee; }; BaseChannelRoomConfigInterface::Adaptee::Adaptee(BaseChannelRoomConfigInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelRoomConfigInterface::Adaptee::~Adaptee() { } bool BaseChannelRoomConfigInterface::Adaptee::anonymous() const { return mInterface->anonymous(); } bool BaseChannelRoomConfigInterface::Adaptee::inviteOnly() const { return mInterface->inviteOnly(); } uint BaseChannelRoomConfigInterface::Adaptee::limit() const { return mInterface->limit(); } bool BaseChannelRoomConfigInterface::Adaptee::moderated() const { return mInterface->moderated(); } QString BaseChannelRoomConfigInterface::Adaptee::title() const { return mInterface->title(); } QString BaseChannelRoomConfigInterface::Adaptee::description() const { return mInterface->description(); } bool BaseChannelRoomConfigInterface::Adaptee::persistent() const { return mInterface->persistent(); } bool BaseChannelRoomConfigInterface::Adaptee::isPrivate() const { return mInterface->isPrivate(); } bool BaseChannelRoomConfigInterface::Adaptee::passwordProtected() const { return mInterface->passwordProtected(); } QString BaseChannelRoomConfigInterface::Adaptee::password() const { return mInterface->password(); } QString BaseChannelRoomConfigInterface::Adaptee::passwordHint() const { return mInterface->passwordHint(); } bool BaseChannelRoomConfigInterface::Adaptee::canUpdateConfiguration() const { return mInterface->canUpdateConfiguration(); } QStringList BaseChannelRoomConfigInterface::Adaptee::mutableProperties() const { return mInterface->mutableProperties(); } bool BaseChannelRoomConfigInterface::Adaptee::configurationRetrieved() const { return mInterface->configurationRetrieved(); } void BaseChannelRoomConfigInterface::Adaptee::updateConfiguration(const QVariantMap &properties, const Tp::Service::ChannelInterfaceRoomConfigAdaptor::UpdateConfigurationContextPtr &context) { qDebug() << "BaseChannelRoomConfigInterface::Adaptee::updateConfiguration"; DBusError error; mInterface->updateConfiguration(properties, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelRoomConfigInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.RoomConfig1 */ /** * Class constructor. */ BaseChannelRoomConfigInterface::BaseChannelRoomConfigInterface() : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG), mPriv(new Private(this)) { } /** * Class destructor. */ BaseChannelRoomConfigInterface::~BaseChannelRoomConfigInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelRoomConfigInterface::immutableProperties() const { QVariantMap map; return map; } bool BaseChannelRoomConfigInterface::anonymous() const { return mPriv->anonymous; } void BaseChannelRoomConfigInterface::setAnonymous(bool anonymous) { mPriv->anonymous = anonymous; notifyPropertyChanged(QLatin1String("Anonymous"), QVariant::fromValue(anonymous)); } bool BaseChannelRoomConfigInterface::inviteOnly() const { return mPriv->inviteOnly; } void BaseChannelRoomConfigInterface::setInviteOnly(bool inviteOnly) { mPriv->inviteOnly = inviteOnly; notifyPropertyChanged(QLatin1String("InviteOnly"), QVariant::fromValue(inviteOnly)); } uint BaseChannelRoomConfigInterface::limit() const { return mPriv->limit; } void BaseChannelRoomConfigInterface::setLimit(uint limit) { mPriv->limit = limit; notifyPropertyChanged(QLatin1String("Limit"), QVariant::fromValue(limit)); } bool BaseChannelRoomConfigInterface::moderated() const { return mPriv->moderated; } void BaseChannelRoomConfigInterface::setModerated(bool moderated) { mPriv->moderated = moderated; notifyPropertyChanged(QLatin1String("Moderated"), QVariant::fromValue(moderated)); } QString BaseChannelRoomConfigInterface::title() const { return mPriv->title; } void BaseChannelRoomConfigInterface::setTitle(const QString &title) { mPriv->title = title; notifyPropertyChanged(QLatin1String("Title"), QVariant::fromValue(title)); } QString BaseChannelRoomConfigInterface::description() const { return mPriv->description; } void BaseChannelRoomConfigInterface::setDescription(const QString &description) { mPriv->description = description; notifyPropertyChanged(QLatin1String("Description"), QVariant::fromValue(description)); } bool BaseChannelRoomConfigInterface::persistent() const { return mPriv->persistent; } void BaseChannelRoomConfigInterface::setPersistent(bool persistent) { mPriv->persistent = persistent; notifyPropertyChanged(QLatin1String("Persistent"), QVariant::fromValue(persistent)); } bool BaseChannelRoomConfigInterface::isPrivate() const { return mPriv->isPrivate; } void BaseChannelRoomConfigInterface::setPrivate(bool newPrivate) { mPriv->isPrivate = newPrivate; notifyPropertyChanged(QLatin1String("Private"), QVariant::fromValue(newPrivate)); } bool BaseChannelRoomConfigInterface::passwordProtected() const { return mPriv->passwordProtected; } void BaseChannelRoomConfigInterface::setPasswordProtected(bool passwordProtected) { mPriv->passwordProtected = passwordProtected; notifyPropertyChanged(QLatin1String("PasswordProtected"), QVariant::fromValue(passwordProtected)); } QString BaseChannelRoomConfigInterface::password() const { return mPriv->password; } void BaseChannelRoomConfigInterface::setPassword(const QString &password) { mPriv->password = password; notifyPropertyChanged(QLatin1String("Password"), QVariant::fromValue(password)); } QString BaseChannelRoomConfigInterface::passwordHint() const { return mPriv->passwordHint; } void BaseChannelRoomConfigInterface::setPasswordHint(const QString &passwordHint) { mPriv->passwordHint = passwordHint; notifyPropertyChanged(QLatin1String("PasswordHint"), QVariant::fromValue(passwordHint)); } bool BaseChannelRoomConfigInterface::canUpdateConfiguration() const { return mPriv->canUpdateConfiguration; } void BaseChannelRoomConfigInterface::setCanUpdateConfiguration(bool canUpdateConfiguration) { mPriv->canUpdateConfiguration = canUpdateConfiguration; notifyPropertyChanged(QLatin1String("CanUpdateConfiguration"), QVariant::fromValue(canUpdateConfiguration)); } QStringList BaseChannelRoomConfigInterface::mutableProperties() const { return mPriv->mutableProperties; } void BaseChannelRoomConfigInterface::setMutableProperties(const QStringList &mutableProperties) { mPriv->mutableProperties = mutableProperties; notifyPropertyChanged(QLatin1String("MutableProperties"), QVariant::fromValue(mutableProperties)); } bool BaseChannelRoomConfigInterface::configurationRetrieved() const { return mPriv->configurationRetrieved; } void BaseChannelRoomConfigInterface::setConfigurationRetrieved(bool configurationRetrieved) { mPriv->configurationRetrieved = configurationRetrieved; notifyPropertyChanged(QLatin1String("ConfigurationRetrieved"), QVariant::fromValue(configurationRetrieved)); } void BaseChannelRoomConfigInterface::createAdaptor() { (void) new Service::ChannelInterfaceRoomConfigAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelRoomConfigInterface::setUpdateConfigurationCallback(const UpdateConfigurationCallback &cb) { mPriv->updateConfigurationCB = cb; } void BaseChannelRoomConfigInterface::updateConfiguration(const QVariantMap &properties, DBusError *error) { if (!mPriv->updateConfigurationCB.isValid()) { error->set(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } return mPriv->updateConfigurationCB(properties, error); } // Chan.T.Call BaseChannelCallType::Adaptee::Adaptee(BaseChannelCallType *interface) : QObject(interface), mInterface(interface) { } BaseChannelCallType::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelCallType::Private { Private(BaseChannelCallType *parent, BaseChannel* channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents) : hardwareStreaming(hardwareStreaming), initialTransport(initialTransport), initialAudio(initialAudio), initialVideo(initialVideo), initialAudioName(initialAudioName), initialVideoName(initialVideoName), mutableContents(mutableContents), channel(channel), adaptee(new BaseChannelCallType::Adaptee(parent)) { } Tp::ObjectPathList contents; QVariantMap callStateDetails; uint callState; uint callFlags; Tp::CallStateReason callStateReason; bool hardwareStreaming; Tp::CallMemberMap callMembers; Tp::HandleIdentifierMap memberIdentifiers; uint initialTransport; bool initialAudio; bool initialVideo; QString initialAudioName; QString initialVideoName; bool mutableContents; QList mCallContents; AcceptCallback acceptCB; HangupCallback hangupCB; SetQueuedCallback setQueuedCB; SetRingingCallback setRingingCB; AddContentCallback addContentCB; BaseChannel *channel; BaseChannelCallType::Adaptee *adaptee; }; void BaseChannelCallType::Adaptee::setRinging(const Tp::Service::ChannelTypeCallAdaptor::SetRingingContextPtr &context) { if (!mInterface->mPriv->setRingingCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->setRingingCB(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelCallType::Adaptee::setQueued(const Tp::Service::ChannelTypeCallAdaptor::SetQueuedContextPtr &context) { if (!mInterface->mPriv->setQueuedCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->setQueuedCB(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelCallType::Adaptee::accept(const Tp::Service::ChannelTypeCallAdaptor::AcceptContextPtr &context) { if (!mInterface->mPriv->acceptCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->acceptCB(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelCallType::Adaptee::hangup(uint reason, const QString &detailedHangupReason, const QString &message, const Tp::Service::ChannelTypeCallAdaptor::HangupContextPtr &context) { if (!mInterface->mPriv->hangupCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->hangupCB(reason, detailedHangupReason, message, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } void BaseChannelCallType::Adaptee::addContent(const QString &contentName, const Tp::MediaStreamType &contentType, const Tp::MediaStreamDirection &initialDirection, const Tp::Service::ChannelTypeCallAdaptor::AddContentContextPtr &context) { if (!mInterface->mPriv->addContentCB.isValid()) { Tp::BaseCallContentPtr ptr = mInterface->addContent(contentName, contentType, initialDirection); QDBusObjectPath objPath; objPath.setPath(ptr->objectPath()); context->setFinished(objPath); return; } DBusError error; QDBusObjectPath objPath = mInterface->mPriv->addContentCB(contentName, contentType, initialDirection, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(objPath); } /** * \class BaseChannelCallType * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Type.Call * */ /** * Class constructor. */ BaseChannelCallType::BaseChannelCallType(BaseChannel* channel, bool hardwareStreaming, uint initialTransport, bool initialAudio, bool initialVideo, QString initialAudioName, QString initialVideoName, bool mutableContents) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_TYPE_CALL), mPriv(new Private(this, channel, hardwareStreaming, initialTransport, initialAudio, initialVideo, initialAudioName, initialVideoName, mutableContents)) { } Tp::ObjectPathList BaseChannelCallType::contents() { return mPriv->contents; } QVariantMap BaseChannelCallType::callStateDetails() { return mPriv->callStateDetails; } uint BaseChannelCallType::callState() { return mPriv->callState; } uint BaseChannelCallType::callFlags() { return mPriv->callFlags; } Tp::CallStateReason BaseChannelCallType::callStateReason() { return mPriv->callStateReason; } bool BaseChannelCallType::hardwareStreaming() { return mPriv->hardwareStreaming; } Tp::CallMemberMap BaseChannelCallType::callMembers() { return mPriv->callMembers; } Tp::HandleIdentifierMap BaseChannelCallType::memberIdentifiers() { return mPriv->memberIdentifiers; } uint BaseChannelCallType::initialTransport() { return mPriv->initialTransport; } bool BaseChannelCallType::initialAudio() { return mPriv->initialAudio; } bool BaseChannelCallType::initialVideo() { return mPriv->initialVideo; } QString BaseChannelCallType::initialVideoName() { return mPriv->initialVideoName; } QString BaseChannelCallType::initialAudioName() { return mPriv->initialAudioName; } bool BaseChannelCallType::mutableContents() { return mPriv->mutableContents; } /** * Class destructor. */ BaseChannelCallType::~BaseChannelCallType() { delete mPriv; } QVariantMap BaseChannelCallType::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".HardwareStreaming"), QVariant::fromValue(mPriv->adaptee->hardwareStreaming())); map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialTransport"), QVariant::fromValue(mPriv->adaptee->initialTransport())); map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"), QVariant::fromValue(mPriv->adaptee->initialAudio())); map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"), QVariant::fromValue(mPriv->adaptee->initialVideo())); map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName"), QVariant::fromValue(mPriv->adaptee->initialAudioName())); map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName"), QVariant::fromValue(mPriv->adaptee->initialVideoName())); map.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".MutableContents"), QVariant::fromValue(mPriv->adaptee->mutableContents())); return map; } void BaseChannelCallType::createAdaptor() { (void) new Service::ChannelTypeCallAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } void BaseChannelCallType::setCallState(const Tp::CallState &state, uint flags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails) { mPriv->callState = state; mPriv->callFlags = flags; mPriv->callStateReason = stateReason; mPriv->callStateDetails = callStateDetails; QMetaObject::invokeMethod(mPriv->adaptee, "callStateChanged", Q_ARG(uint, state), Q_ARG(uint, flags), Q_ARG(Tp::CallStateReason, stateReason), Q_ARG(QVariantMap, callStateDetails)); } void BaseChannelCallType::setAcceptCallback(const AcceptCallback &cb) { mPriv->acceptCB = cb; } void BaseChannelCallType::setHangupCallback(const HangupCallback &cb) { mPriv->hangupCB = cb; } void BaseChannelCallType::setSetRingingCallback(const SetRingingCallback &cb) { mPriv->setRingingCB = cb; } void BaseChannelCallType::setSetQueuedCallback(const SetQueuedCallback &cb) { mPriv->setQueuedCB = cb; } void BaseChannelCallType::setAddContentCallback(const AddContentCallback &cb) { mPriv->addContentCB = cb; } void BaseChannelCallType::setMembersFlags(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason) { mPriv->callMembers = flagsChanged; mPriv->memberIdentifiers = identifiers; QMetaObject::invokeMethod(mPriv->adaptee, "callMembersChanged", Q_ARG(Tp::CallMemberMap, flagsChanged), Q_ARG(Tp::HandleIdentifierMap, identifiers), Q_ARG(Tp::UIntList, removed), Q_ARG(Tp::CallStateReason, reason)); } BaseCallContentPtr BaseChannelCallType::addContent(const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) { BaseCallContentPtr ptr = BaseCallContent::create(mPriv->channel->dbusConnection(), mPriv->channel, name, type, direction); DBusError error; ptr->registerObject(&error); QDBusObjectPath objpath; objpath.setPath(ptr->objectPath()); mPriv->contents.append(objpath); QMetaObject::invokeMethod(mPriv->adaptee, "contentAdded", Q_ARG(QDBusObjectPath, objpath)); return ptr; } void BaseChannelCallType::addContent(BaseCallContentPtr content) { DBusError error; content->registerObject(&error); QDBusObjectPath objpath; objpath.setPath(content->objectPath()); mPriv->contents.append(objpath); QMetaObject::invokeMethod(mPriv->adaptee, "contentAdded", Q_ARG(QDBusObjectPath, objpath)); } // Chan.I.Hold BaseChannelHoldInterface::Adaptee::Adaptee(BaseChannelHoldInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelHoldInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelHoldInterface::Private { Private(BaseChannelHoldInterface *parent, Tp::LocalHoldState state) : state(state), reason(Tp::LocalHoldStateReasonNone), adaptee(new BaseChannelHoldInterface::Adaptee(parent)) { } SetHoldStateCallback setHoldStateCB; Tp::LocalHoldState state; Tp::LocalHoldStateReason reason; BaseChannelHoldInterface::Adaptee *adaptee; }; void BaseChannelHoldInterface::Adaptee::getHoldState(const Tp::Service::ChannelInterfaceHoldAdaptor::GetHoldStateContextPtr &context) { context->setFinished(mInterface->getHoldState(), mInterface->getHoldReason()); } void BaseChannelHoldInterface::Adaptee::requestHold(bool hold, const Tp::Service::ChannelInterfaceHoldAdaptor::RequestHoldContextPtr &context) { if (!mInterface->mPriv->setHoldStateCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } Tp::LocalHoldState state = hold ? Tp::LocalHoldStateHeld : Tp::LocalHoldStateUnheld; DBusError error; mInterface->mPriv->setHoldStateCB(state, Tp::LocalHoldStateReasonRequested, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelHoldInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Hold * */ /** * Class constructor. */ BaseChannelHoldInterface::BaseChannelHoldInterface() : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD), mPriv(new Private(this, Tp::LocalHoldStateUnheld)) { } Tp::LocalHoldState BaseChannelHoldInterface::getHoldState() const { return mPriv->state; } Tp::LocalHoldStateReason BaseChannelHoldInterface::getHoldReason() const { return mPriv->reason; } void BaseChannelHoldInterface::setSetHoldStateCallback(const SetHoldStateCallback &cb) { mPriv->setHoldStateCB = cb; } void BaseChannelHoldInterface::setHoldState(const Tp::LocalHoldState &state, const Tp::LocalHoldStateReason &reason) { if (mPriv->state != state) { mPriv->state = state; mPriv->reason = reason; QMetaObject::invokeMethod(mPriv->adaptee, "holdStateChanged", Q_ARG(uint, state), Q_ARG(uint, reason)); } } /** * Class destructor. */ BaseChannelHoldInterface::~BaseChannelHoldInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelHoldInterface::immutableProperties() const { QVariantMap map; return map; } void BaseChannelHoldInterface::createAdaptor() { (void) new Service::ChannelInterfaceHoldAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Chan.I.MergeableConference BaseChannelMergeableConferenceInterface::Adaptee::Adaptee(BaseChannelMergeableConferenceInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelMergeableConferenceInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelMergeableConferenceInterface::Private { Private(BaseChannelMergeableConferenceInterface *parent) :adaptee(new BaseChannelMergeableConferenceInterface::Adaptee(parent)) { } MergeCallback mergeCB; BaseChannelMergeableConferenceInterface::Adaptee *adaptee; }; void BaseChannelMergeableConferenceInterface::Adaptee::merge(const QDBusObjectPath &channelPath, const Tp::Service::ChannelInterfaceMergeableConferenceAdaptor::MergeContextPtr &context) { if (!mInterface->mPriv->mergeCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->mergeCB(channelPath, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelMergeableConferenceInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.MergeableConference * */ /** * Class constructor. */ BaseChannelMergeableConferenceInterface::BaseChannelMergeableConferenceInterface() : AbstractChannelInterface(TP_QT_FUTURE_IFACE_CHANNEL_INTERFACE_MERGEABLE_CONFERENCE), mPriv(new Private(this)) { } void BaseChannelMergeableConferenceInterface::setMergeCallback(const MergeCallback &cb) { mPriv->mergeCB = cb; } /** * Class destructor. */ BaseChannelMergeableConferenceInterface::~BaseChannelMergeableConferenceInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelMergeableConferenceInterface::immutableProperties() const { QVariantMap map; return map; } void BaseChannelMergeableConferenceInterface::createAdaptor() { (void) new Service::ChannelInterfaceMergeableConferenceAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Chan.I.Splittable BaseChannelSplittableInterface::Adaptee::Adaptee(BaseChannelSplittableInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelSplittableInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelSplittableInterface::Private { Private(BaseChannelSplittableInterface *parent) :adaptee(new BaseChannelSplittableInterface::Adaptee(parent)) { } SplitCallback splitCB; BaseChannelSplittableInterface::Adaptee *adaptee; }; void BaseChannelSplittableInterface::Adaptee::split(const Tp::Service::ChannelInterfaceSplittableAdaptor::SplitContextPtr &context) { if (!mInterface->mPriv->splitCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->splitCB(&error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } context->setFinished(); } /** * \class BaseChannelSplittableInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Splittable * */ /** * Class constructor. */ BaseChannelSplittableInterface::BaseChannelSplittableInterface() : AbstractChannelInterface(TP_QT_FUTURE_IFACE_CHANNEL_INTERFACE_SPLITTABLE), mPriv(new Private(this)) { } void BaseChannelSplittableInterface::setSplitCallback(const SplitCallback &cb) { mPriv->splitCB = cb; } /** * Class destructor. */ BaseChannelSplittableInterface::~BaseChannelSplittableInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelSplittableInterface::immutableProperties() const { QVariantMap map; return map; } void BaseChannelSplittableInterface::createAdaptor() { (void) new Service::ChannelInterfaceSplittableAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Chan.I.Conference BaseChannelConferenceInterface::Adaptee::Adaptee(BaseChannelConferenceInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelConferenceInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelConferenceInterface::Private { Private(BaseChannelConferenceInterface *parent, Tp::ObjectPathList initialChannels, Tp::UIntList initialInviteeHandles, QStringList initialInviteeIDs, QString invitationMessage, ChannelOriginatorMap originalChannels) : channels(initialChannels), initialChannels(initialChannels), initialInviteeHandles(initialInviteeHandles), initialInviteeIDs(initialInviteeIDs), invitationMessage(invitationMessage), originalChannels(originalChannels), adaptee(new BaseChannelConferenceInterface::Adaptee(parent)) { } Tp::ObjectPathList channels; Tp::ObjectPathList initialChannels; Tp::UIntList initialInviteeHandles; QStringList initialInviteeIDs; QString invitationMessage; ChannelOriginatorMap originalChannels; BaseChannelConferenceInterface::Adaptee *adaptee; }; /** * \class BaseChannelConferenceInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.Conference * */ /** * Class constructor. */ BaseChannelConferenceInterface::BaseChannelConferenceInterface(Tp::ObjectPathList initialChannels, Tp::UIntList initialInviteeHandles, QStringList initialInviteeIDs, QString invitationMessage, ChannelOriginatorMap originalChannels) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE), mPriv(new Private(this, initialChannels, initialInviteeHandles, initialInviteeIDs, invitationMessage, originalChannels)) { } Tp::ObjectPathList BaseChannelConferenceInterface::channels() const { return mPriv->channels; } Tp::ObjectPathList BaseChannelConferenceInterface::initialChannels() const { return mPriv->initialChannels; } Tp::UIntList BaseChannelConferenceInterface::initialInviteeHandles() const { return mPriv->initialInviteeHandles; } QStringList BaseChannelConferenceInterface::initialInviteeIDs() const { return mPriv->initialInviteeIDs; } QString BaseChannelConferenceInterface::invitationMessage() const { return mPriv->invitationMessage; } void BaseChannelConferenceInterface::mergeChannel(const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties) { mPriv->channels.append(channel); if (channelHandle != 0) { mPriv->originalChannels[channelHandle] = channel; } QMetaObject::invokeMethod(mPriv->adaptee, "channelMerged", Q_ARG(QDBusObjectPath, channel), Q_ARG(uint, channelHandle), Q_ARG(QVariantMap, properties)); } void BaseChannelConferenceInterface::removeChannel(const QDBusObjectPath &channel, const QVariantMap& details) { mPriv->channels.removeAll(channel); if (mPriv->originalChannels.values().contains(channel)) { mPriv->originalChannels.remove(mPriv->originalChannels.key(channel)); } QMetaObject::invokeMethod(mPriv->adaptee, "channelRemoved", Q_ARG(QDBusObjectPath, channel), Q_ARG(QVariantMap, details)); } ChannelOriginatorMap BaseChannelConferenceInterface::originalChannels() const { return mPriv->originalChannels; } /** * Class destructor. */ BaseChannelConferenceInterface::~BaseChannelConferenceInterface() { delete mPriv; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelConferenceInterface::immutableProperties() const { QVariantMap map; return map; } void BaseChannelConferenceInterface::createAdaptor() { (void) new Service::ChannelInterfaceConferenceAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } // Chan.I.SMS BaseChannelSMSInterface::Adaptee::Adaptee(BaseChannelSMSInterface *interface) : QObject(interface), mInterface(interface) { } BaseChannelSMSInterface::Adaptee::~Adaptee() { } struct TP_QT_NO_EXPORT BaseChannelSMSInterface::Private { Private(BaseChannelSMSInterface *parent, bool flash, bool smsChannel) : flash(flash), smsChannel(smsChannel), adaptee(new BaseChannelSMSInterface::Adaptee(parent)) { } bool flash; bool smsChannel; GetSMSLengthCallback getSMSLengthCB; BaseChannelSMSInterface::Adaptee *adaptee; }; void BaseChannelSMSInterface::Adaptee::getSMSLength(const Tp::MessagePartList & messages, const Tp::Service::ChannelInterfaceSMSAdaptor::GetSMSLengthContextPtr &context) { if (!mInterface->mPriv->getSMSLengthCB.isValid()) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")); return; } DBusError error; mInterface->mPriv->getSMSLengthCB(messages, &error); if (error.isValid()) { context->setFinishedWithError(error.name(), error.message()); return; } // TODO: implement context->setFinished(0,0,0); } /** * \class BaseChannelSMSInterface * \ingroup servicecm * \headerfile TelepathyQt/base-channel.h * * \brief Base class for implementations of Channel.Interface.SMS * */ /** * Class constructor. */ BaseChannelSMSInterface::BaseChannelSMSInterface(bool flash, bool smsChannel) : AbstractChannelInterface(TP_QT_IFACE_CHANNEL_INTERFACE_SMS), mPriv(new Private(this, flash, smsChannel)) { } void BaseChannelSMSInterface::setGetSMSLengthCallback(const GetSMSLengthCallback &cb) { mPriv->getSMSLengthCB = cb; } /** * Class destructor. */ BaseChannelSMSInterface::~BaseChannelSMSInterface() { delete mPriv; } bool BaseChannelSMSInterface::flash() const { return mPriv->flash; } bool BaseChannelSMSInterface::smsChannel() const { return mPriv->smsChannel; } /** * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ QVariantMap BaseChannelSMSInterface::immutableProperties() const { QVariantMap map; map.insert(TP_QT_IFACE_CHANNEL_INTERFACE_SMS + QLatin1String(".Flash"), QVariant::fromValue(mPriv->adaptee->flash())); return map; } void BaseChannelSMSInterface::createAdaptor() { (void) new Service::ChannelInterfaceSMSAdaptor(dbusObject()->dbusConnection(), mPriv->adaptee, dbusObject()); } } telepathy-qt-0.9.6.1/TelepathyQt/referenced-handles.h0000644000175100017520000001303712530423576024061 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_referenced_handles_h_HEADER_GUARD_ #define _TelepathyQt_referenced_handles_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #ifndef QT_NO_STL # include #endif #include #include #include #include namespace Tp { class Connection; class TP_QT_EXPORT ReferencedHandles { public: typedef UIntList::const_iterator const_iterator; typedef UIntList::ConstIterator ConstIterator; typedef UIntList::const_pointer const_pointer; typedef UIntList::const_reference const_reference; typedef UIntList::difference_type difference_type; typedef UIntList::pointer pointer; typedef UIntList::reference reference; typedef UIntList::size_type size_type; typedef UIntList::value_type value_type; ReferencedHandles(); ReferencedHandles(const ReferencedHandles &other); ~ReferencedHandles(); ConnectionPtr connection() const; HandleType handleType() const; uint at(int i) const; inline uint back() const { return last(); } inline uint first() const { return at(0); } inline uint front() const { return first(); } inline uint last() const { return at(size() - 1); } uint value(int i, uint defaultValue = 0) const; const_iterator begin() const; inline const_iterator constBegin() const { return begin(); } inline const_iterator constEnd() const { return end(); } const_iterator end() const; bool contains(uint handle) const; int count(uint handle) const; inline int count() const { return size(); } inline bool empty() const { return isEmpty(); } inline bool endsWith(uint handle) const { return !isEmpty() && last() == handle; } int indexOf(uint handle, int from = 0) const; bool isEmpty() const; int lastIndexOf(uint handle, int from = -1) const; inline int length() const { return count(); } ReferencedHandles mid(int pos, int length = -1) const; int size() const; inline bool startsWith(uint handle) const { return !isEmpty() && first() == handle; } inline void append(const ReferencedHandles& another) { *this = *this + another; } void clear(); void move(int from, int to); inline void pop_back() { return removeLast(); } inline void pop_front() { return removeFirst(); } int removeAll(uint handle); void removeAt(int i); inline void removeFirst() { return removeAt(0); } inline void removeLast() { return removeAt(size() - 1); } bool removeOne(uint handle); void swap(int i, int j); uint takeAt(int i); inline uint takeFirst() { return takeAt(0); } inline uint takeLast() { return takeAt(size() - 1); } bool operator!=(const ReferencedHandles& another) const { return !(*this == another); } bool operator!=(const UIntList& another) const { return !(*this == another); } ReferencedHandles operator+(const ReferencedHandles& another) const; inline ReferencedHandles& operator+=(const ReferencedHandles& another) { return *this = (*this + another); } ReferencedHandles& operator<<(const ReferencedHandles& another) { return *this += another; } ReferencedHandles& operator=(const ReferencedHandles& another); bool operator==(const ReferencedHandles& another) const; bool operator==(const UIntList& list) const; inline uint operator[](int i) const { return at(i); } UIntList toList() const; inline QSet toSet() const { return toList().toSet(); } #ifndef QT_NO_STL inline std::list toStdList() const { return toList().toStdList(); } #endif inline QVector toVector() const { return toList().toVector(); } private: // For access to the "prime" constructor friend class ContactManager; friend class PendingContactAttributes; friend class PendingContacts; friend class PendingHandles; TP_QT_NO_EXPORT ReferencedHandles(const ConnectionPtr &connection, HandleType handleType, const UIntList& handles); struct Private; friend struct Private; QSharedDataPointer mPriv; }; typedef QListIterator ReferencedHandlesIterator; } // Tp Q_DECLARE_METATYPE(Tp::ReferencedHandles); #endif telepathy-qt-0.9.6.1/TelepathyQt/callbacks.dox0000644000175100017520000001114012530423576022616 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \page callbacks Callbacks Usage * * \section callbacks_overview Overview * * Callbacks are used in Telepathy-Qt by the service side high-level APIs * to expose methods that may/should be overriden in implementations. * * Ideally we would use virtual methods for this, but as new methods * can be added freely (when interfaces change), we would not be able * to guarantee a stable API/ABI. Other options, such as virtual padding, * virtual_hook and Qt slots also have their own drawbacks. * * There are 8 Callback classes, Tp::Callback0 to Tp::Callback7, which * define a callback with 0 to 7 arguments respectively. The first template * argument is always the return value type and the rest template arguments * are the types of the callback arguments in the order that they are passed * to the callback. * * Callback classes can be constructed from a functor. To make it easy to * use function pointers as functors, Telepathy-Qt also provides two helper * functions, Tp::memFun and Tp::ptrFun. * * Here is an example of their usage: * \code * // assuming a member function QString MyImpl::myFunc(const QString & s, int i); * Tp::Callback2 cb = Tp::memFun(myObj, &MyImpl::myFunc); * * // assuming a non-member or static member function QString myFunc(const QString & s, int i); * Tp::Callback2 cb = Tp::ptrFun(&myFunc); * * // assuming Tp::BaseConnectionPtr MyProtocolImpl::createConnection(const QVariantMap ¶meters, DBusError *error); * myBaseProtocol->setCreateConnectionCallback(Tp::memFun(myProtocolImpl, &MyProtocolImpl::createConnection)); * \endcode * * You are also free to use any other mechanism for constructing functors, * such as boost::bind, C++11's module or even C++11 lambda functions. */ /** * \class Tp::BaseCallback * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Base class for all the callback classes * * See \ref callbacks */ /** * \fn bool Tp::BaseCallback::isValid() const * * Return whether this callback object has a valid functor assigned to it * or if it's a default-constructed dummy callback object. * * \return \c false if this is a default-constructed callback or * \c true if this callback was constructed from a functor. */ /** * \class Tp::Callback0 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 0 arguments * * See \ref callbacks */ /** * \class Tp::Callback1 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 1 argument * * See \ref callbacks */ /** * \class Tp::Callback2 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 2 arguments * * See \ref callbacks */ /** * \class Tp::Callback3 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 3 arguments * * See \ref callbacks */ /** * \class Tp::Callback4 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 4 arguments * * See \ref callbacks */ /** * \class Tp::Callback5 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 5 arguments * * See \ref callbacks */ /** * \class Tp::Callback6 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 6 arguments * * See \ref callbacks */ /** * \class Tp::Callback7 * \ingroup utils * \headerfile TelepathyQt/callbacks.h * * \brief Callback with 7 arguments * * See \ref callbacks */ telepathy-qt-0.9.6.1/TelepathyQt/connection-manager-lowlevel.h0000644000175100017520000000344312530423576025741 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_manager_lowlevel_h_HEADER_GUARD_ #define _TelepathyQt_connection_manager_lowlevel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class PendingConnection; class TP_QT_EXPORT ConnectionManagerLowlevel : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(ConnectionManagerLowlevel) public: ~ConnectionManagerLowlevel(); bool isValid() const; ConnectionManagerPtr connectionManager() const; PendingConnection *requestConnection(const QString &protocolName, const QVariantMap ¶meters); private: friend class ConnectionManager; TP_QT_NO_EXPORT ConnectionManagerLowlevel(ConnectionManager *parent); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/PeerInterface0000644000175100017520000000035412530423576022627 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PeerInterface_HEADER_GUARD_ #define _TelepathyQt_PeerInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/contact-manager-roster.cpp0000644000175100017520000023031212530423576025252 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/contact-manager-internal.h" #include "TelepathyQt/_gen/contact-manager-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include #include namespace Tp { ContactManager::Roster::Roster(ContactManager *contactManager) : QObject(), contactManager(contactManager), usingFallbackContactList(false), hasContactBlockingInterface(false), introspectPendingOp(0), introspectGroupsPendingOp(0), pendingContactListState((uint) -1), contactListState((uint) -1), canReportAbusive(false), gotContactBlockingInitialBlockedContacts(false), canChangeContactList(false), contactListRequestUsesMessage(false), gotContactListInitialContacts(false), gotContactListContactsChangedWithId(false), groupsReintrospectionRequired(false), contactListGroupPropertiesReceived(false), processingContactListChanges(false), contactListChannelsReady(0), featureContactListGroupsTodo(0), groupsSetSuccess(false) { } ContactManager::Roster::~Roster() { } ContactListState ContactManager::Roster::state() const { return (Tp::ContactListState) contactListState; } PendingOperation *ContactManager::Roster::introspect() { ConnectionPtr conn(contactManager->connection()); if (conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST)) { debug() << "Connection.ContactList found, using it"; usingFallbackContactList = false; if (conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING)) { debug() << "Connection.ContactBlocking found. using it"; hasContactBlockingInterface = true; introspectContactBlocking(); } else { debug() << "Connection.ContactBlocking not found, falling back " "to contact list deny channel"; debug() << "Requesting handle for deny channel"; contactListChannels.insert(ChannelInfo::TypeDeny, ChannelInfo(ChannelInfo::TypeDeny)); PendingHandles *ph = conn->lowlevel()->requestHandles(HandleTypeList, QStringList() << ChannelInfo::identifierForType( ChannelInfo::TypeDeny)); connect(ph, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContactListChannelHandle(Tp::PendingOperation*))); } } else { debug() << "Connection.ContactList not found, falling back to contact list channels"; usingFallbackContactList = true; for (uint i = 0; i < ChannelInfo::LastType; ++i) { QString channelId = ChannelInfo::identifierForType( (ChannelInfo::Type) i); debug() << "Requesting handle for" << channelId << "channel"; contactListChannels.insert(i, ChannelInfo((ChannelInfo::Type) i)); PendingHandles *ph = conn->lowlevel()->requestHandles(HandleTypeList, QStringList() << channelId); connect(ph, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContactListChannelHandle(Tp::PendingOperation*))); } } Q_ASSERT(!introspectPendingOp); introspectPendingOp = new PendingOperation(conn); return introspectPendingOp; } PendingOperation *ContactManager::Roster::introspectGroups() { ConnectionPtr conn(contactManager->connection()); Q_ASSERT(!introspectGroupsPendingOp); if (conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST)) { if (!conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS)) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Roster groups not supported"), conn); } debug() << "Connection.ContactGroups found, using it"; if (!gotContactListInitialContacts) { debug() << "Initial ContactList contacts not retrieved. Postponing introspection"; groupsReintrospectionRequired = true; return new PendingSuccess(conn); } Client::ConnectionInterfaceContactGroupsInterface *iface = conn->interface(); connect(iface, SIGNAL(GroupsChanged(Tp::UIntList,QStringList,QStringList)), SLOT(onContactListGroupsChanged(Tp::UIntList,QStringList,QStringList))); connect(iface, SIGNAL(GroupsCreated(QStringList)), SLOT(onContactListGroupsCreated(QStringList))); connect(iface, SIGNAL(GroupRenamed(QString,QString)), SLOT(onContactListGroupRenamed(QString,QString))); connect(iface, SIGNAL(GroupsRemoved(QStringList)), SLOT(onContactListGroupsRemoved(QStringList))); PendingVariantMap *pvm = iface->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContactListGroupsProperties(Tp::PendingOperation*))); } else { debug() << "Connection.ContactGroups not found, falling back to contact list group channels"; ++featureContactListGroupsTodo; // decremented in gotChannels // we already checked if requests interface exists, so bypass requests // interface checking Client::ConnectionInterfaceRequestsInterface *iface = conn->interface(); debug() << "Connecting to Requests.NewChannels"; connect(iface, SIGNAL(NewChannels(Tp::ChannelDetailsList)), SLOT(onNewChannels(Tp::ChannelDetailsList))); debug() << "Retrieving channels"; Client::DBus::PropertiesInterface *properties = contactManager->connection()->interface(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( properties->Get( TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS, QLatin1String("Channels")), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotChannels(QDBusPendingCallWatcher*))); } if (groupsReintrospectionRequired) { return NULL; } Q_ASSERT(!introspectGroupsPendingOp); introspectGroupsPendingOp = new PendingOperation(conn); return introspectGroupsPendingOp; } void ContactManager::Roster::reset() { contactListChannels.clear(); subscribeChannel.reset(); publishChannel.reset(); storedChannel.reset(); denyChannel.reset(); contactListGroupChannels.clear(); removedContactListGroupChannels.clear(); } Contacts ContactManager::Roster::allKnownContacts() const { return cachedAllKnownContacts; } QStringList ContactManager::Roster::allKnownGroups() const { if (usingFallbackContactList) { return contactListGroupChannels.keys(); } return cachedAllKnownGroups.toList(); } PendingOperation *ContactManager::Roster::addGroup(const QString &group) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) Tp::HandleTypeGroup); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), group); return conn->lowlevel()->ensureChannel(request); } if (!conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS)) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented"), conn); } Client::ConnectionInterfaceContactGroupsInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->AddToGroup(group, UIntList())); } PendingOperation *ContactManager::Roster::removeGroup(const QString &group) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!contactListGroupChannels.contains(group)) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid group"), conn); } ChannelPtr channel = contactListGroupChannels[group]; return new RemoveGroupOp(channel); } if (!conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS)) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented"), conn); } Client::ConnectionInterfaceContactGroupsInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->RemoveGroup(group)); } Contacts ContactManager::Roster::groupContacts(const QString &group) const { if (usingFallbackContactList) { if (!contactListGroupChannels.contains(group)) { return Contacts(); } ChannelPtr channel = contactListGroupChannels[group]; return channel->groupContacts(); } Contacts ret; foreach (const ContactPtr &contact, allKnownContacts()) { if (contact->groups().contains(group)) ret << contact; } return ret; } PendingOperation *ContactManager::Roster::addContactsToGroup(const QString &group, const QList &contacts) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!contactListGroupChannels.contains(group)) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid group"), conn); } ChannelPtr channel = contactListGroupChannels[group]; return channel->groupAddContacts(contacts); } if (!conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS)) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented"), conn); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactGroupsInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->AddToGroup(group, handles)); } PendingOperation *ContactManager::Roster::removeContactsFromGroup(const QString &group, const QList &contacts) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!contactListGroupChannels.contains(group)) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid group"), conn); } ChannelPtr channel = contactListGroupChannels[group]; return channel->groupRemoveContacts(contacts); } if (!conn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS)) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented"), conn); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactGroupsInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->RemoveFromGroup(group, handles)); } bool ContactManager::Roster::canRequestPresenceSubscription() const { if (usingFallbackContactList) { return subscribeChannel && subscribeChannel->groupCanAddContacts(); } return canChangeContactList; } bool ContactManager::Roster::subscriptionRequestHasMessage() const { if (usingFallbackContactList) { return subscribeChannel && (subscribeChannel->groupFlags() & ChannelGroupFlagMessageAdd); } return contactListRequestUsesMessage; } PendingOperation *ContactManager::Roster::requestPresenceSubscription( const QList &contacts, const QString &message) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!subscribeChannel) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Cannot subscribe to contacts' presence on this protocol"), conn); } return subscribeChannel->groupAddContacts(contacts, message); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->RequestSubscription(handles, message)); } bool ContactManager::Roster::canRemovePresenceSubscription() const { if (usingFallbackContactList) { return subscribeChannel && subscribeChannel->groupCanRemoveContacts(); } return canChangeContactList; } bool ContactManager::Roster::subscriptionRemovalHasMessage() const { if (usingFallbackContactList) { return subscribeChannel && (subscribeChannel->groupFlags() & ChannelGroupFlagMessageRemove); } return false; } bool ContactManager::Roster::canRescindPresenceSubscriptionRequest() const { if (usingFallbackContactList) { return subscribeChannel && subscribeChannel->groupCanRescindContacts(); } return canChangeContactList; } bool ContactManager::Roster::subscriptionRescindingHasMessage() const { if (usingFallbackContactList) { return subscribeChannel && (subscribeChannel->groupFlags() & ChannelGroupFlagMessageRescind); } return false; } PendingOperation *ContactManager::Roster::removePresenceSubscription( const QList &contacts, const QString &message) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!subscribeChannel) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Cannot subscribe to contacts' presence on this protocol"), conn); } return subscribeChannel->groupRemoveContacts(contacts, message); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->Unsubscribe(handles)); } bool ContactManager::Roster::canAuthorizePresencePublication() const { if (usingFallbackContactList) { // do not check for Channel::groupCanAddContacts as all contacts in local // pending can be added, even if the Channel::groupFlags() does not contain // the flag CanAdd return (bool) publishChannel; } return canChangeContactList; } bool ContactManager::Roster::publicationAuthorizationHasMessage() const { if (usingFallbackContactList) { return subscribeChannel && (subscribeChannel->groupFlags() & ChannelGroupFlagMessageAccept); } return false; } PendingOperation *ContactManager::Roster::authorizePresencePublication( const QList &contacts, const QString &message) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!publishChannel) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Cannot control publication of presence on this protocol"), conn); } return publishChannel->groupAddContacts(contacts, message); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->AuthorizePublication(handles)); } bool ContactManager::Roster::publicationRejectionHasMessage() const { if (usingFallbackContactList) { return subscribeChannel && (subscribeChannel->groupFlags() & ChannelGroupFlagMessageReject); } return false; } bool ContactManager::Roster::canRemovePresencePublication() const { if (usingFallbackContactList) { return publishChannel && publishChannel->groupCanRemoveContacts(); } return canChangeContactList; } bool ContactManager::Roster::publicationRemovalHasMessage() const { if (usingFallbackContactList) { return subscribeChannel && (subscribeChannel->groupFlags() & ChannelGroupFlagMessageRemove); } return false; } PendingOperation *ContactManager::Roster::removePresencePublication( const QList &contacts, const QString &message) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { if (!publishChannel) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Cannot control publication of presence on this protocol"), conn); } return publishChannel->groupRemoveContacts(contacts, message); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->Unpublish(handles)); } PendingOperation *ContactManager::Roster::removeContacts( const QList &contacts, const QString &message) { ConnectionPtr conn(contactManager->connection()); if (usingFallbackContactList) { /* If the CM implements stored channel correctly, it should have the * wanted behaviour. Otherwise we have to to remove from publish * and subscribe channels. */ if (storedChannel && storedChannel->groupCanRemoveContacts()) { debug() << "Removing contacts from stored list"; return storedChannel->groupRemoveContacts(contacts, message); } QList operations; if (canRemovePresenceSubscription()) { debug() << "Removing contacts from subscribe list"; operations << removePresenceSubscription(contacts, message); } if (canRemovePresencePublication()) { debug() << "Removing contacts from publish list"; operations << removePresencePublication(contacts, message); } if (operations.isEmpty()) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Cannot remove contacts on this protocol"), conn); } return new PendingComposite(operations, conn); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); Q_ASSERT(iface); return queuedFinishVoid(iface->RemoveContacts(handles)); } bool ContactManager::Roster::canBlockContacts() const { if (!usingFallbackContactList && hasContactBlockingInterface) { return true; } else { return (bool) denyChannel; } } bool ContactManager::Roster::canReportAbuse() const { return canReportAbusive; } PendingOperation *ContactManager::Roster::blockContacts( const QList &contacts, bool value, bool reportAbuse) { if (!contactManager->connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), contactManager->connection()); } else if (!contactManager->connection()->isReady(Connection::FeatureRoster)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRoster is not ready"), contactManager->connection()); } if (!usingFallbackContactList && hasContactBlockingInterface) { ConnectionPtr conn(contactManager->connection()); Client::ConnectionInterfaceContactBlockingInterface *iface = conn->interface(); UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } Q_ASSERT(iface); if(value) { return queuedFinishVoid(iface->BlockContacts(handles, reportAbuse)); } else { return queuedFinishVoid(iface->UnblockContacts(handles)); } } else { ConnectionPtr conn(contactManager->connection()); if (!denyChannel) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Cannot block contacts on this protocol"), conn); } if (value) { return denyChannel->groupAddContacts(contacts); } else { return denyChannel->groupRemoveContacts(contacts); } } } void ContactManager::Roster::gotContactBlockingCapabilities(PendingOperation *op) { if (op->isError()) { warning() << "Getting ContactBlockingCapabilities property failed with" << op->errorName() << ":" << op->errorMessage(); introspectContactList(); return; } debug() << "Got ContactBlockingCapabilities property"; PendingVariant *pv = qobject_cast(op); uint contactBlockingCaps = pv->result().toUInt(); canReportAbusive = contactBlockingCaps & ContactBlockingCapabilityCanReportAbusive; introspectContactBlockingBlockedContacts(); } void ContactManager::Roster::gotContactBlockingBlockedContacts( QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (watcher->isError()) { warning() << "Getting initial ContactBlocking blocked " "contacts failed with" << watcher->error().name() << ":" << watcher->error().message(); introspectContactList(); return; } debug() << "Got initial ContactBlocking blocked contacts"; gotContactBlockingInitialBlockedContacts = true; ConnectionPtr conn(contactManager->connection()); HandleIdentifierMap contactIds = reply.value(); if (!contactIds.isEmpty()) { conn->lowlevel()->injectContactIds(contactIds); //fake change event where all the contacts are added contactListBlockedContactsChangedQueue.enqueue( BlockedContactsChangedInfo(contactIds, HandleIdentifierMap(), true)); contactListChangesQueue.enqueue( &ContactManager::Roster::processContactListBlockedContactsChanged); processContactListChanges(); } else { introspectContactList(); } } void ContactManager::Roster::onContactBlockingBlockedContactsChanged( const HandleIdentifierMap &added, const HandleIdentifierMap &removed) { if (!gotContactBlockingInitialBlockedContacts) { return; } ConnectionPtr conn(contactManager->connection()); conn->lowlevel()->injectContactIds(added); conn->lowlevel()->injectContactIds(removed); contactListBlockedContactsChangedQueue.enqueue( BlockedContactsChangedInfo(added, removed)); contactListChangesQueue.enqueue( &ContactManager::Roster::processContactListBlockedContactsChanged); processContactListChanges(); } void ContactManager::Roster::gotContactListProperties(PendingOperation *op) { if (op->isError()) { // We may have been in state Failure and then Success, and FeatureRoster is already ready if (introspectPendingOp) { introspectPendingOp->setFinishedWithError( op->errorName(), op->errorMessage()); introspectPendingOp = 0; } return; } debug() << "Got ContactList properties"; PendingVariantMap *pvm = qobject_cast(op); QVariantMap props = pvm->result(); canChangeContactList = qdbus_cast(props[QLatin1String("CanChangeContactList")]); contactListRequestUsesMessage = qdbus_cast(props[QLatin1String("RequestUsesMessage")]); // only update the status if we did not get it from ContactListStateChanged if (pendingContactListState == (uint) -1) { uint state = qdbus_cast(props[QLatin1String("ContactListState")]); onContactListStateChanged(state); } } void ContactManager::Roster::gotContactListContacts(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (watcher->isError()) { warning() << "Failed introspecting ContactList contacts"; contactListState = ContactListStateFailure; debug() << "Setting state to failure"; emit contactManager->stateChanged((Tp::ContactListState) contactListState); // We may have been in state Failure and then Success, and FeatureRoster is already ready if (introspectPendingOp) { introspectPendingOp->setFinishedWithError( reply.error()); introspectPendingOp = 0; } return; } debug() << "Got initial ContactList contacts"; gotContactListInitialContacts = true; ConnectionPtr conn(contactManager->connection()); ContactAttributesMap attrsMap = reply.value(); ContactAttributesMap::const_iterator begin = attrsMap.constBegin(); ContactAttributesMap::const_iterator end = attrsMap.constEnd(); for (ContactAttributesMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); QVariantMap attrs = i.value(); ContactPtr contact = contactManager->ensureContact(ReferencedHandles(conn, HandleTypeContact, UIntList() << bareHandle), conn->contactFactory()->features(), attrs); cachedAllKnownContacts.insert(contact); contactListContacts.insert(contact); } if (contactManager->connection()->requestedFeatures().contains( Connection::FeatureRosterGroups)) { groupsSetSuccess = true; } // We may have been in state Failure and then Success, and FeatureRoster is already ready // In any case, if we're going to reintrospect Groups, we only advance to state success once // that is finished. We connect to the op finishing already here to catch all the failure finish // cases as well. if (introspectPendingOp) { if (!groupsSetSuccess) { // Will emit stateChanged() signal when the op is finished in idle // callback. This is to ensure FeatureRoster (and Groups) is marked ready. connect(introspectPendingOp, SIGNAL(finished(Tp::PendingOperation *)), SLOT(setStateSuccess())); } introspectPendingOp->setFinished(); introspectPendingOp = 0; } else if (!groupsSetSuccess) { setStateSuccess(); } else { // Verify that Groups is actually going to set the state // As far as I can see, this will always be the case. Q_ASSERT(groupsReintrospectionRequired); } if (groupsReintrospectionRequired) { introspectGroups(); } } void ContactManager::Roster::setStateSuccess() { if (contactManager->connection()->isValid()) { debug() << "State is now success"; contactListState = ContactListStateSuccess; emit contactManager->stateChanged((Tp::ContactListState) contactListState); } } void ContactManager::Roster::onContactListStateChanged(uint state) { if (pendingContactListState == state) { // ignore redundant state changes return; } pendingContactListState = state; if (state == ContactListStateSuccess) { introspectContactListContacts(); return; } contactListState = state; if (state == ContactListStateFailure) { debug() << "State changed to failure, finishing roster introspection"; } emit contactManager->stateChanged((Tp::ContactListState) state); if (state == ContactListStateFailure) { // Consider it done here as the state may go from Failure to Success afterwards, in which // case the contacts will appear. Q_ASSERT(introspectPendingOp); introspectPendingOp->setFinished(); introspectPendingOp = 0; } } void ContactManager::Roster::onContactListContactsChangedWithId(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &ids, const Tp::HandleIdentifierMap &removals) { debug() << "Got ContactList.ContactsChangedWithID with" << changes.size() << "changes and" << removals.size() << "removals"; gotContactListContactsChangedWithId = true; if (!gotContactListInitialContacts) { debug() << "Ignoring ContactList changes until initial contacts are retrieved"; return; } ConnectionPtr conn(contactManager->connection()); conn->lowlevel()->injectContactIds(ids); contactListUpdatesQueue.enqueue(UpdateInfo(changes, ids, removals)); contactListChangesQueue.enqueue(&ContactManager::Roster::processContactListUpdates); processContactListChanges(); } void ContactManager::Roster::onContactListContactsChanged(const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals) { if (gotContactListContactsChangedWithId) { return; } debug() << "Got ContactList.ContactsChanged with" << changes.size() << "changes and" << removals.size() << "removals"; if (!gotContactListInitialContacts) { debug() << "Ignoring ContactList changes until initial contacts are retrieved"; return; } HandleIdentifierMap removalsMap; foreach (uint handle, removals) { removalsMap.insert(handle, QString()); } contactListUpdatesQueue.enqueue(UpdateInfo(changes, HandleIdentifierMap(), removalsMap)); contactListChangesQueue.enqueue(&ContactManager::Roster::processContactListUpdates); processContactListChanges(); } void ContactManager::Roster::onContactListBlockedContactsConstructed(Tp::PendingOperation *op) { BlockedContactsChangedInfo info = contactListBlockedContactsChangedQueue.dequeue(); if (op->isError()) { if (info.continueIntrospectionWhenFinished) { introspectContactList(); } processingContactListChanges = false; processContactListChanges(); return; } Contacts newBlockedContacts; Contacts unblockedContacts; HandleIdentifierMap::const_iterator begin = info.added.constBegin(); HandleIdentifierMap::const_iterator end = info.added.constEnd(); for (HandleIdentifierMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); ContactPtr contact = contactManager->lookupContactByHandle(bareHandle); if (!contact) { warning() << "Unable to construct contact for handle" << bareHandle; continue; } debug() << "Contact" << contact->id() << "is now blocked"; blockedContacts.insert(contact); newBlockedContacts.insert(contact); contact->setBlocked(true); } begin = info.removed.constBegin(); end = info.removed.constEnd(); for (HandleIdentifierMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); ContactPtr contact = contactManager->lookupContactByHandle(bareHandle); if (!contact) { warning() << "Unable to construct contact for handle" << bareHandle; continue; } debug() << "Contact" << contact->id() << "is now unblocked"; blockedContacts.remove(contact); unblockedContacts.insert(contact); contact->setBlocked(false); } // Perform the needed computation for allKnownContactsChanged computeKnownContactsChanges(newBlockedContacts, Contacts(), Contacts(), unblockedContacts, Channel::GroupMemberChangeDetails()); if (info.continueIntrospectionWhenFinished) { introspectContactList(); } processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::onContactListNewContactsConstructed(Tp::PendingOperation *op) { if (op->isError()) { contactListUpdatesQueue.dequeue(); processingContactListChanges = false; processContactListChanges(); return; } UpdateInfo info = contactListUpdatesQueue.dequeue(); Tp::Contacts added; Tp::Contacts removed; Tp::Contacts publishRequested; ContactSubscriptionMap::const_iterator begin = info.changes.constBegin(); ContactSubscriptionMap::const_iterator end = info.changes.constEnd(); for (ContactSubscriptionMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); ContactSubscriptions subscriptions = i.value(); ContactPtr contact = contactManager->lookupContactByHandle(bareHandle); if (!contact) { warning() << "Unable to construct contact for handle" << bareHandle; continue; } contactListContacts.insert(contact); added << contact; Contact::PresenceState oldContactPublishState = contact->publishState(); QString oldContactPublishStateMessage = contact->publishStateMessage(); contact->setSubscriptionState((SubscriptionState) subscriptions.subscribe); contact->setPublishState((SubscriptionState) subscriptions.publish, subscriptions.publishRequest); if (subscriptions.publish == SubscriptionStateAsk && (oldContactPublishState != Contact::PresenceStateAsk || oldContactPublishStateMessage != contact->publishStateMessage())) { Channel::GroupMemberChangeDetails publishRequestDetails; QVariantMap detailsMap; detailsMap.insert(QLatin1String("message"), subscriptions.publishRequest); publishRequestDetails = Channel::GroupMemberChangeDetails(ContactPtr(), detailsMap); publishRequested.insert(contact); } } if (!publishRequested.empty()) { emit contactManager->presencePublicationRequested(publishRequested); } foreach (uint bareHandle, info.removals.keys()) { ContactPtr contact = contactManager->lookupContactByHandle(bareHandle); if (!contact) { warning() << "Unable to find removed contact with handle" << bareHandle; continue; } if (!contactListContacts.contains(contact)) { warning() << "Contact" << contact->id() << "removed from ContactList " "but it wasn't present, ignoring."; continue; } contactListContacts.remove(contact); removed << contact; } computeKnownContactsChanges(added, Contacts(), Contacts(), removed, Channel::GroupMemberChangeDetails()); foreach (const Tp::ContactPtr &contact, removed) { contact->setSubscriptionState(SubscriptionStateNo); contact->setPublishState(SubscriptionStateNo); } processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::onContactListGroupsChanged(const Tp::UIntList &contacts, const QStringList &added, const QStringList &removed) { Q_ASSERT(usingFallbackContactList == false); if (!contactListGroupPropertiesReceived) { return; } contactListGroupsUpdatesQueue.enqueue(GroupsUpdateInfo(contacts, added, removed)); contactListChangesQueue.enqueue(&ContactManager::Roster::processContactListGroupsUpdates); processContactListChanges(); } void ContactManager::Roster::onContactListGroupsCreated(const QStringList &names) { Q_ASSERT(usingFallbackContactList == false); if (!contactListGroupPropertiesReceived) { return; } contactListGroupsCreatedQueue.enqueue(names); contactListChangesQueue.enqueue(&ContactManager::Roster::processContactListGroupsCreated); processContactListChanges(); } void ContactManager::Roster::onContactListGroupRenamed(const QString &oldName, const QString &newName) { Q_ASSERT(usingFallbackContactList == false); if (!contactListGroupPropertiesReceived) { return; } contactListGroupRenamedQueue.enqueue(GroupRenamedInfo(oldName, newName)); contactListChangesQueue.enqueue(&ContactManager::Roster::processContactListGroupRenamed); processContactListChanges(); } void ContactManager::Roster::onContactListGroupsRemoved(const QStringList &names) { Q_ASSERT(usingFallbackContactList == false); if (!contactListGroupPropertiesReceived) { return; } contactListGroupsRemovedQueue.enqueue(names); contactListChangesQueue.enqueue(&ContactManager::Roster::processContactListGroupsRemoved); processContactListChanges(); } void ContactManager::Roster::onModifyFinished(Tp::PendingOperation *op) { ModifyFinishOp *returned = returnedModifyOps.take(op); // Finished twice, or we didn't add the returned op at all? Q_ASSERT(returned); if (op->isError()) { returned->setError(op->errorName(), op->errorMessage()); } modifyFinishQueue.enqueue(returned); contactListChangesQueue.enqueue(&ContactManager::Roster::processFinishedModify); processContactListChanges(); } void ContactManager::Roster::gotContactListChannelHandle(PendingOperation *op) { PendingHandles *ph = qobject_cast(op); Q_ASSERT(ph->namesRequested().size() == 1); QString channelId = ph->namesRequested().first(); uint type = ChannelInfo::typeForIdentifier(channelId); if (op->isError()) { // let's not fail, because the contact lists are not supported debug() << "Unable to retrieve handle for" << channelId << "channel, ignoring"; contactListChannels.remove(type); onContactListChannelReady(); return; } if (ph->invalidNames().size() == 1) { // let's not fail, because the contact lists are not supported debug() << "Unable to retrieve handle for" << channelId << "channel, ignoring"; contactListChannels.remove(type); onContactListChannelReady(); return; } Q_ASSERT(ph->handles().size() == 1); debug() << "Got handle for" << channelId << "channel"; if (!usingFallbackContactList) { Q_ASSERT(type == ChannelInfo::TypeDeny); } else { Q_ASSERT(type != (uint) -1 && type < ChannelInfo::LastType); } ReferencedHandles handle = ph->handles(); contactListChannels[type].handle = handle; debug() << "Requesting channel for" << channelId << "channel"; QVariantMap request; request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), (uint) HandleTypeList); request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), handle[0]); ConnectionPtr conn(contactManager->connection()); /* Request the channel passing INT_MAX as timeout (meaning no timeout), as * some CMs may take too long to return from ensureChannel when still * loading the contact list */ connect(conn->lowlevel()->ensureChannel(request, INT_MAX), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContactListChannel(Tp::PendingOperation*))); } void ContactManager::Roster::gotContactListChannel(PendingOperation *op) { if (op->isError()) { debug() << "Unable to create channel, ignoring"; onContactListChannelReady(); return; } PendingChannel *pc = qobject_cast(op); ChannelPtr channel = pc->channel(); Q_ASSERT(channel); uint handle = pc->targetHandle(); Q_ASSERT(handle); for (uint i = 0; i < ChannelInfo::LastType; ++i) { if (contactListChannels.contains(i) && contactListChannels[i].handle.size() > 0 && contactListChannels[i].handle[0] == handle) { Q_ASSERT(!contactListChannels[i].channel); contactListChannels[i].channel = channel; // deref connection refcount here as connection will keep a ref to channel and we don't // want a contact list channel keeping a ref of connection, otherwise connection will // leak, thus the channels. channel->connection()->deref(); connect(channel->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactListChannelReady())); } } } void ContactManager::Roster::onContactListChannelReady() { if (!usingFallbackContactList) { setContactListChannelsReady(); updateContactsBlockState(); if (denyChannel) { cachedAllKnownContacts.unite(denyChannel->groupContacts()); } introspectContactList(); } else if (++contactListChannelsReady == ChannelInfo::LastType) { if (contactListChannels.isEmpty()) { contactListState = ContactListStateFailure; debug() << "State is failure, roster not supported"; emit contactManager->stateChanged((Tp::ContactListState) contactListState); Q_ASSERT(introspectPendingOp); introspectPendingOp->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Roster not supported")); introspectPendingOp = 0; return; } setContactListChannelsReady(); updateContactsBlockState(); // Refresh the cache for the current known contacts foreach (const ChannelInfo &contactListChannel, contactListChannels) { ChannelPtr channel = contactListChannel.channel; if (!channel) { continue; } cachedAllKnownContacts.unite(channel->groupContacts()); cachedAllKnownContacts.unite(channel->groupLocalPendingContacts()); cachedAllKnownContacts.unite(channel->groupRemotePendingContacts()); } updateContactsPresenceState(); Q_ASSERT(introspectPendingOp); if (!contactManager->connection()->requestedFeatures().contains( Connection::FeatureRosterGroups)) { // Will emit stateChanged() signal when the op is finished in idle // callback. This is to ensure FeatureRoster is marked ready. connect(introspectPendingOp, SIGNAL(finished(Tp::PendingOperation *)), SLOT(setStateSuccess())); } else { Q_ASSERT(!groupsSetSuccess); groupsSetSuccess = true; } introspectPendingOp->setFinished(); introspectPendingOp = 0; } } void ContactManager::Roster::gotContactListGroupsProperties(PendingOperation *op) { Q_ASSERT(introspectGroupsPendingOp != NULL); if (groupsSetSuccess) { // Connect here, so we catch the following and the other failure cases connect(introspectGroupsPendingOp, SIGNAL(finished(Tp::PendingOperation *)), SLOT(setStateSuccess())); } if (op->isError()) { warning() << "Getting contact list groups properties failed:" << op->errorName() << '-' << op->errorMessage(); introspectGroupsPendingOp->setFinishedWithError( op->errorName(), op->errorMessage()); introspectGroupsPendingOp = 0; return; } debug() << "Got contact list groups properties"; PendingVariantMap *pvm = qobject_cast(op); QVariantMap props = pvm->result(); cachedAllKnownGroups = qdbus_cast(props[QLatin1String("Groups")]).toSet(); contactListGroupPropertiesReceived = true; processingContactListChanges = true; PendingContacts *pc = contactManager->upgradeContacts( contactManager->allKnownContacts().toList(), Contact::FeatureRosterGroups); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactListContactsUpgraded(Tp::PendingOperation*))); } void ContactManager::Roster::onContactListContactsUpgraded(PendingOperation *op) { Q_ASSERT(processingContactListChanges); processingContactListChanges = false; Q_ASSERT(introspectGroupsPendingOp != NULL); if (op->isError()) { warning() << "Upgrading contacts with group membership failed:" << op->errorName() << '-' << op->errorMessage(); introspectGroupsPendingOp->setFinishedWithError( op->errorName(), op->errorMessage()); introspectGroupsPendingOp = 0; processContactListChanges(); return; } introspectGroupsPendingOp->setFinished(); introspectGroupsPendingOp = 0; processContactListChanges(); } void ContactManager::Roster::onNewChannels(const Tp::ChannelDetailsList &channelDetailsList) { ConnectionPtr conn(contactManager->connection()); QString channelType; uint handleType; foreach (const ChannelDetails &channelDetails, channelDetailsList) { channelType = channelDetails.properties.value( TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")).toString(); if (channelType != TP_QT_IFACE_CHANNEL_TYPE_CONTACT_LIST) { continue; } handleType = channelDetails.properties.value( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")).toUInt(); if (handleType != Tp::HandleTypeGroup) { continue; } ++featureContactListGroupsTodo; // decremented in onContactListGroupChannelReady ChannelPtr channel = Channel::create(conn, channelDetails.channel.path(), channelDetails.properties); pendingContactListGroupChannels.append(channel); // deref connection refcount here as connection will keep a ref to channel and we don't // want a contact list group channel keeping a ref of connection, otherwise connection will // leak, thus the channels. channel->connection()->deref(); connect(channel->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactListGroupChannelReady(Tp::PendingOperation*))); } } void ContactManager::Roster::onContactListGroupChannelReady(PendingOperation *op) { --featureContactListGroupsTodo; // incremented in onNewChannels ConnectionPtr conn(contactManager->connection()); if (introspectGroupsPendingOp) { checkContactListGroupsReady(); } else { PendingReady *pr = qobject_cast(op); ChannelPtr channel = ChannelPtr::qObjectCast(pr->proxy()); QString id = addContactListGroupChannel(channel); emit contactManager->groupAdded(id); pendingContactListGroupChannels.removeOne(channel); } } void ContactManager::Roster::gotChannels(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got channels"; onNewChannels(qdbus_cast(reply.value())); } else { warning().nospace() << "Getting channels failed with " << reply.error().name() << ":" << reply.error().message(); } --featureContactListGroupsTodo; // incremented in introspectRosterGroups checkContactListGroupsReady(); watcher->deleteLater(); } void ContactManager::Roster::onStoredChannelMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { if (!groupLocalPendingMembersAdded.isEmpty()) { warning() << "Found local pending contacts on stored list"; } if (!groupRemotePendingMembersAdded.isEmpty()) { warning() << "Found remote pending contacts on stored list"; } foreach (ContactPtr contact, groupMembersAdded) { debug() << "Contact" << contact->id() << "on stored list"; } foreach (ContactPtr contact, groupMembersRemoved) { debug() << "Contact" << contact->id() << "removed from stored list"; } // Perform the needed computation for allKnownContactsChanged computeKnownContactsChanges(groupMembersAdded, groupLocalPendingMembersAdded, groupRemotePendingMembersAdded, groupMembersRemoved, details); } void ContactManager::Roster::onSubscribeChannelMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { if (!groupLocalPendingMembersAdded.isEmpty()) { warning() << "Found local pending contacts on subscribe list"; } foreach (ContactPtr contact, groupMembersAdded) { debug() << "Contact" << contact->id() << "on subscribe list"; contact->setSubscriptionState(SubscriptionStateYes); } foreach (ContactPtr contact, groupRemotePendingMembersAdded) { debug() << "Contact" << contact->id() << "added to subscribe list"; contact->setSubscriptionState(SubscriptionStateAsk); } foreach (ContactPtr contact, groupMembersRemoved) { debug() << "Contact" << contact->id() << "removed from subscribe list"; contact->setSubscriptionState(SubscriptionStateNo); } // Perform the needed computation for allKnownContactsChanged computeKnownContactsChanges(groupMembersAdded, groupLocalPendingMembersAdded, groupRemotePendingMembersAdded, groupMembersRemoved, details); } void ContactManager::Roster::onPublishChannelMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { if (!groupRemotePendingMembersAdded.isEmpty()) { warning() << "Found remote pending contacts on publish list"; } foreach (ContactPtr contact, groupMembersAdded) { debug() << "Contact" << contact->id() << "on publish list"; contact->setPublishState(SubscriptionStateYes); } foreach (ContactPtr contact, groupLocalPendingMembersAdded) { debug() << "Contact" << contact->id() << "added to publish list"; contact->setPublishState(SubscriptionStateAsk, details.message()); } foreach (ContactPtr contact, groupMembersRemoved) { debug() << "Contact" << contact->id() << "removed from publish list"; contact->setPublishState(SubscriptionStateNo); } if (!groupLocalPendingMembersAdded.isEmpty()) { emit contactManager->presencePublicationRequested(groupLocalPendingMembersAdded); } // Perform the needed computation for allKnownContactsChanged computeKnownContactsChanges(groupMembersAdded, groupLocalPendingMembersAdded, groupRemotePendingMembersAdded, groupMembersRemoved, details); } void ContactManager::Roster::onDenyChannelMembersChanged( const Contacts &groupMembersAdded, const Contacts &groupLocalPendingMembersAdded, const Contacts &groupRemotePendingMembersAdded, const Contacts &groupMembersRemoved, const Channel::GroupMemberChangeDetails &details) { if (!groupLocalPendingMembersAdded.isEmpty()) { warning() << "Found local pending contacts on deny list"; } if (!groupRemotePendingMembersAdded.isEmpty()) { warning() << "Found remote pending contacts on deny list"; } foreach (ContactPtr contact, groupMembersAdded) { debug() << "Contact" << contact->id() << "added to deny list"; contact->setBlocked(true); } foreach (ContactPtr contact, groupMembersRemoved) { debug() << "Contact" << contact->id() << "removed from deny list"; contact->setBlocked(false); } // Perform the needed computation for allKnownContactsChanged computeKnownContactsChanges(groupMembersAdded, Contacts(), Contacts(), groupMembersRemoved, details); } void ContactManager::Roster::onContactListGroupMembersChanged( const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details) { ChannelPtr contactListGroupChannel = ChannelPtr( qobject_cast(sender())); QString id = contactListGroupChannel->immutableProperties().value( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")).toString(); foreach (const ContactPtr &contact, groupMembersAdded) { contact->setAddedToGroup(id); } foreach (const ContactPtr &contact, groupMembersRemoved) { contact->setRemovedFromGroup(id); } emit contactManager->groupMembersChanged(id, groupMembersAdded, groupMembersRemoved, details); } void ContactManager::Roster::onContactListGroupRemoved(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { Q_UNUSED(errorName); Q_UNUSED(errorMessage); // Is it correct to assume that if an user-defined contact list // gets invalidated it means it was removed? Spec states that if a // user-defined contact list gets closed it was removed, and Channel // invalidates itself when it gets closed. ChannelPtr contactListGroupChannel = ChannelPtr(qobject_cast(proxy)); QString id = contactListGroupChannel->immutableProperties().value( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")).toString(); contactListGroupChannels.remove(id); removedContactListGroupChannels.append(contactListGroupChannel); disconnect(contactListGroupChannel.data(), 0, 0, 0); emit contactManager->groupRemoved(id); } void ContactManager::Roster::introspectContactBlocking() { debug() << "Requesting ContactBlockingCapabilities property"; ConnectionPtr conn(contactManager->connection()); Client::ConnectionInterfaceContactBlockingInterface *iface = conn->interface(); PendingVariant *pv = iface->requestPropertyContactBlockingCapabilities(); connect(pv, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContactBlockingCapabilities(Tp::PendingOperation*))); } void ContactManager::Roster::introspectContactBlockingBlockedContacts() { ConnectionPtr conn(contactManager->connection()); Client::ConnectionInterfaceContactBlockingInterface *iface = conn->interface(); Q_ASSERT(iface); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( iface->RequestBlockedContacts(), contactManager); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotContactBlockingBlockedContacts(QDBusPendingCallWatcher*))); connect(iface, SIGNAL(BlockedContactsChanged(Tp::HandleIdentifierMap,Tp::HandleIdentifierMap)), SLOT(onContactBlockingBlockedContactsChanged(Tp::HandleIdentifierMap,Tp::HandleIdentifierMap))); } void ContactManager::Roster::introspectContactList() { debug() << "Requesting ContactList properties"; ConnectionPtr conn(contactManager->connection()); Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); connect(iface, SIGNAL(ContactListStateChanged(uint)), SLOT(onContactListStateChanged(uint))); connect(iface, SIGNAL(ContactsChangedWithID(Tp::ContactSubscriptionMap,Tp::HandleIdentifierMap,Tp::HandleIdentifierMap)), SLOT(onContactListContactsChangedWithId(Tp::ContactSubscriptionMap,Tp::HandleIdentifierMap,Tp::HandleIdentifierMap))); connect(iface, SIGNAL(ContactsChanged(Tp::ContactSubscriptionMap,Tp::UIntList)), SLOT(onContactListContactsChanged(Tp::ContactSubscriptionMap,Tp::UIntList))); PendingVariantMap *pvm = iface->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContactListProperties(Tp::PendingOperation*))); } void ContactManager::Roster::introspectContactListContacts() { ConnectionPtr conn(contactManager->connection()); Client::ConnectionInterfaceContactListInterface *iface = conn->interface(); Features features(conn->contactFactory()->features()); Features supportedFeatures(contactManager->supportedFeatures()); QSet interfaces; foreach (const Feature &feature, features) { contactManager->ensureTracking(feature); if (supportedFeatures.contains(feature)) { // Only query interfaces which are reported as supported to not get an error interfaces.insert(contactManager->featureToInterface(feature)); } } interfaces.insert(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( iface->GetContactListAttributes(interfaces.toList(), true), contactManager); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotContactListContacts(QDBusPendingCallWatcher*))); } void ContactManager::Roster::processContactListChanges() { if (processingContactListChanges || contactListChangesQueue.isEmpty()) { return; } processingContactListChanges = true; (this->*(contactListChangesQueue.dequeue()))(); } void ContactManager::Roster::processContactListBlockedContactsChanged() { BlockedContactsChangedInfo info = contactListBlockedContactsChangedQueue.head(); UIntList contacts; HandleIdentifierMap::const_iterator begin = info.added.constBegin(); HandleIdentifierMap::const_iterator end = info.added.constEnd(); for (HandleIdentifierMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); contacts << bareHandle; } begin = info.removed.constBegin(); end = info.removed.constEnd(); for (HandleIdentifierMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); contacts << bareHandle; } Features features; if (contactManager->connection()->isReady(Connection::FeatureRosterGroups)) { features << Contact::FeatureRosterGroups; } PendingContacts *pc = contactManager->contactsForHandles(contacts, features); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactListBlockedContactsConstructed(Tp::PendingOperation*))); } void ContactManager::Roster::processContactListUpdates() { UpdateInfo info = contactListUpdatesQueue.head(); // construct Contact objects for all contacts in added to the contact list UIntList contacts; ContactSubscriptionMap::const_iterator begin = info.changes.constBegin(); ContactSubscriptionMap::const_iterator end = info.changes.constEnd(); for (ContactSubscriptionMap::const_iterator i = begin; i != end; ++i) { uint bareHandle = i.key(); contacts << bareHandle; } Features features; if (contactManager->connection()->isReady(Connection::FeatureRosterGroups)) { features << Contact::FeatureRosterGroups; } PendingContacts *pc = contactManager->contactsForHandles(contacts, features); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactListNewContactsConstructed(Tp::PendingOperation*))); } void ContactManager::Roster::processContactListGroupsUpdates() { GroupsUpdateInfo info = contactListGroupsUpdatesQueue.dequeue(); foreach (const QString &group, info.groupsAdded) { Contacts contacts; foreach (uint bareHandle, info.contacts) { ContactPtr contact = contactManager->lookupContactByHandle(bareHandle); if (!contact) { warning() << "contact with handle" << bareHandle << "was added to a group but " "never added to the contact list, ignoring"; continue; } contacts << contact; contact->setAddedToGroup(group); } emit contactManager->groupMembersChanged(group, contacts, Contacts(), Channel::GroupMemberChangeDetails()); } foreach (const QString &group, info.groupsRemoved) { Contacts contacts; foreach (uint bareHandle, info.contacts) { ContactPtr contact = contactManager->lookupContactByHandle(bareHandle); if (!contact) { warning() << "contact with handle" << bareHandle << "was removed from a group but " "never added to the contact list, ignoring"; continue; } contacts << contact; contact->setRemovedFromGroup(group); } emit contactManager->groupMembersChanged(group, Contacts(), contacts, Channel::GroupMemberChangeDetails()); } processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::processContactListGroupsCreated() { QStringList names = contactListGroupsCreatedQueue.dequeue(); foreach (const QString &name, names) { cachedAllKnownGroups.insert(name); emit contactManager->groupAdded(name); } processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::processContactListGroupRenamed() { GroupRenamedInfo info = contactListGroupRenamedQueue.dequeue(); cachedAllKnownGroups.remove(info.oldName); cachedAllKnownGroups.insert(info.newName); emit contactManager->groupRenamed(info.oldName, info.newName); processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::processContactListGroupsRemoved() { QStringList names = contactListGroupsRemovedQueue.dequeue(); foreach (const QString &name, names) { cachedAllKnownGroups.remove(name); emit contactManager->groupRemoved(name); } processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::processFinishedModify() { ModifyFinishOp *op = modifyFinishQueue.dequeue(); // Only continue processing changes (and thus, emitting change signals) when the op has signaled // finish (it'll only do this after we've returned to the mainloop) connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onModifyFinishSignaled())); op->finish(); } PendingOperation *ContactManager::Roster::queuedFinishVoid(const QDBusPendingCall &call) { PendingOperation *actual = new PendingVoid(call, contactManager->connection()); connect(actual, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onModifyFinished(Tp::PendingOperation*))); ModifyFinishOp *toReturn = new ModifyFinishOp(contactManager->connection()); returnedModifyOps.insert(actual, toReturn); return toReturn; } void ContactManager::Roster::onModifyFinishSignaled() { processingContactListChanges = false; processContactListChanges(); } void ContactManager::Roster::setContactListChannelsReady() { if (!usingFallbackContactList) { Q_ASSERT(!contactListChannels.contains(ChannelInfo::TypeSubscribe)); Q_ASSERT(!contactListChannels.contains(ChannelInfo::TypePublish)); Q_ASSERT(!contactListChannels.contains(ChannelInfo::TypeStored)); } if (contactListChannels.contains(ChannelInfo::TypeSubscribe)) { subscribeChannel = contactListChannels[ChannelInfo::TypeSubscribe].channel; } if (contactListChannels.contains(ChannelInfo::TypePublish)) { publishChannel = contactListChannels[ChannelInfo::TypePublish].channel; } if (contactListChannels.contains(ChannelInfo::TypeStored)) { storedChannel = contactListChannels[ChannelInfo::TypeStored].channel; } if (contactListChannels.contains(ChannelInfo::TypeDeny)) { denyChannel = contactListChannels[ChannelInfo::TypeDeny].channel; } uint type; ChannelPtr channel; const char *method; for (QHash::const_iterator i = contactListChannels.constBegin(); i != contactListChannels.constEnd(); ++i) { type = i.key(); channel = i.value().channel; if (!channel) { continue; } if (type == ChannelInfo::TypeStored) { method = SLOT(onStoredChannelMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)); } else if (type == ChannelInfo::TypeSubscribe) { method = SLOT(onSubscribeChannelMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)); } else if (type == ChannelInfo::TypePublish) { method = SLOT(onPublishChannelMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)); } else if (type == ChannelInfo::TypeDeny) { method = SLOT(onDenyChannelMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)); } else { continue; } connect(channel.data(), SIGNAL(groupMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), method); } } void ContactManager::Roster::updateContactsBlockState() { Q_ASSERT(!hasContactBlockingInterface); if (!denyChannel) { return; } Contacts denyContacts = denyChannel->groupContacts(); foreach (const ContactPtr &contact, denyContacts) { contact->setBlocked(true); } } void ContactManager::Roster::updateContactsPresenceState() { if (!subscribeChannel && !publishChannel) { return; } Contacts subscribeContacts; Contacts subscribeContactsRP; if (subscribeChannel) { subscribeContacts = subscribeChannel->groupContacts(); subscribeContactsRP = subscribeChannel->groupRemotePendingContacts(); } Contacts publishContacts; Contacts publishContactsLP; if (publishChannel) { publishContacts = publishChannel->groupContacts(); publishContactsLP = publishChannel->groupLocalPendingContacts(); } Contacts contacts = cachedAllKnownContacts; foreach (ContactPtr contact, contacts) { if (subscribeChannel) { // not in "subscribe" -> No, in "subscribe" lp -> Ask, in "subscribe" current -> Yes if (subscribeContacts.contains(contact)) { contact->setSubscriptionState(SubscriptionStateYes); } else if (subscribeContactsRP.contains(contact)) { contact->setSubscriptionState(SubscriptionStateAsk); } else { contact->setSubscriptionState(SubscriptionStateNo); } } if (publishChannel) { // not in "publish" -> No, in "subscribe" rp -> Ask, in "publish" current -> Yes if (publishContacts.contains(contact)) { contact->setPublishState(SubscriptionStateYes); } else if (publishContactsLP.contains(contact)) { contact->setPublishState(SubscriptionStateAsk, publishChannel->groupLocalPendingContactChangeInfo(contact).message()); } else { contact->setPublishState(SubscriptionStateNo); } } } } void ContactManager::Roster::computeKnownContactsChanges(const Tp::Contacts& added, const Tp::Contacts& pendingAdded, const Tp::Contacts& remotePendingAdded, const Tp::Contacts& removed, const Channel::GroupMemberChangeDetails &details) { // First of all, compute the real additions/removals based upon our cache Tp::Contacts realAdded; realAdded.unite(added); realAdded.unite(pendingAdded); realAdded.unite(remotePendingAdded); realAdded.subtract(cachedAllKnownContacts); Tp::Contacts realRemoved = removed; realRemoved.intersect(cachedAllKnownContacts); // Check if realRemoved have been _really_ removed from all lists foreach (const ChannelInfo &contactListChannel, contactListChannels) { ChannelPtr channel = contactListChannel.channel; if (!channel) { continue; } realRemoved.subtract(channel->groupContacts()); realRemoved.subtract(channel->groupLocalPendingContacts()); realRemoved.subtract(channel->groupRemotePendingContacts()); } // ...and from the Conn.I.ContactList / Conn.I.ContactBlocking contacts realRemoved.subtract(contactListContacts); realRemoved.subtract(blockedContacts); // Are there any real changes? if (!realAdded.isEmpty() || !realRemoved.isEmpty()) { // Yes, update our "cache" and emit the signal cachedAllKnownContacts.unite(realAdded); cachedAllKnownContacts.subtract(realRemoved); emit contactManager->allKnownContactsChanged(realAdded, realRemoved, details); } } void ContactManager::Roster::checkContactListGroupsReady() { if (featureContactListGroupsTodo != 0) { return; } if (groupsSetSuccess) { Q_ASSERT(contactManager->state() != ContactListStateSuccess); if (introspectGroupsPendingOp) { // Will emit stateChanged() signal when the op is finished in idle // callback. This is to ensure FeatureRosterGroups is marked ready. connect(introspectGroupsPendingOp, SIGNAL(finished(Tp::PendingOperation *)), SLOT(setStateSuccess())); } else { setStateSuccess(); } groupsSetSuccess = false; } setContactListGroupChannelsReady(); if (introspectGroupsPendingOp) { introspectGroupsPendingOp->setFinished(); introspectGroupsPendingOp = 0; } pendingContactListGroupChannels.clear(); } void ContactManager::Roster::setContactListGroupChannelsReady() { Q_ASSERT(usingFallbackContactList == true); Q_ASSERT(contactListGroupChannels.isEmpty()); foreach (const ChannelPtr &contactListGroupChannel, pendingContactListGroupChannels) { addContactListGroupChannel(contactListGroupChannel); } } QString ContactManager::Roster::addContactListGroupChannel(const ChannelPtr &contactListGroupChannel) { QString id = contactListGroupChannel->immutableProperties().value( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")).toString(); contactListGroupChannels.insert(id, contactListGroupChannel); connect(contactListGroupChannel.data(), SIGNAL(groupMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), SLOT(onContactListGroupMembersChanged( Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Contacts, Tp::Channel::GroupMemberChangeDetails))); connect(contactListGroupChannel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onContactListGroupRemoved(Tp::DBusProxy*,QString,QString))); foreach (const ContactPtr &contact, contactListGroupChannel->groupContacts()) { contact->setAddedToGroup(id); } return id; } /**** ContactManager::Roster::ChannelInfo ****/ QString ContactManager::Roster::ChannelInfo::identifierForType(Type type) { static QString identifiers[LastType] = { QLatin1String("subscribe"), QLatin1String("publish"), QLatin1String("stored"), QLatin1String("deny"), }; return identifiers[type]; } uint ContactManager::Roster::ChannelInfo::typeForIdentifier(const QString &identifier) { static QHash types; if (types.isEmpty()) { types.insert(QLatin1String("subscribe"), TypeSubscribe); types.insert(QLatin1String("publish"), TypePublish); types.insert(QLatin1String("stored"), TypeStored); types.insert(QLatin1String("deny"), TypeDeny); } if (types.contains(identifier)) { return types[identifier]; } return (uint) -1; } /**** ContactManager::Roster::ModifyFinishOp ****/ ContactManager::Roster::ModifyFinishOp::ModifyFinishOp(const ConnectionPtr &conn) : PendingOperation(conn) { } void ContactManager::Roster::ModifyFinishOp::setError(const QString &errorName, const QString &errorMessage) { Q_ASSERT(this->errorName.isEmpty()); Q_ASSERT(this->errorMessage.isEmpty()); Q_ASSERT(!errorName.isEmpty()); this->errorName = errorName; this->errorMessage = errorMessage; } void ContactManager::Roster::ModifyFinishOp::finish() { if (errorName.isEmpty()) { setFinished(); } else { setFinishedWithError(errorName, errorMessage); } } /**** ContactManager::Roster::RemoveGroupOp ****/ ContactManager::Roster::RemoveGroupOp::RemoveGroupOp(const ChannelPtr &channel) : PendingOperation(channel) { Contacts contacts = channel->groupContacts(); if (!contacts.isEmpty()) { connect(channel->groupRemoveContacts(contacts.toList()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContactsRemoved(Tp::PendingOperation*))); } else { connect(channel->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onChannelClosed(Tp::PendingOperation*))); } } void ContactManager::Roster::RemoveGroupOp::onContactsRemoved(PendingOperation *op) { if (op->isError()) { setFinishedWithError(op->errorName(), op->errorMessage()); return; } // Let's ignore possible errors and try to remove the group ChannelPtr channel = ChannelPtr(qobject_cast((Channel *) object().data())); connect(channel->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onChannelClosed(Tp::PendingOperation*))); } void ContactManager::Roster::RemoveGroupOp::onChannelClosed(PendingOperation *op) { if (!op->isError()) { setFinished(); } else { setFinishedWithError(op->errorName(), op->errorMessage()); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelFactory0000644000175100017520000000037112530423576023012 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelFactory_HEADER_GUARD_ #define _TelepathyQt_ChannelFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-manager.cpp0000644000175100017520000012426112530423576024447 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/connection-manager-internal.h" #include "TelepathyQt/_gen/cli-connection-manager-body.hpp" #include "TelepathyQt/_gen/cli-connection-manager.moc.hpp" #include "TelepathyQt/_gen/connection-manager.moc.hpp" #include "TelepathyQt/_gen/connection-manager-internal.moc.hpp" #include "TelepathyQt/_gen/connection-manager-lowlevel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/manager-file.h" #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { ConnectionManager::Private::PendingNames::PendingNames(const QDBusConnection &bus) : PendingStringList(SharedPtr()), mBus(bus) { mMethodsQueue.enqueue(QLatin1String("ListNames")); mMethodsQueue.enqueue(QLatin1String("ListActivatableNames")); QTimer::singleShot(0, this, SLOT(continueProcessing())); } void ConnectionManager::Private::PendingNames::onCallFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { parseResult(reply.value()); continueProcessing(); } else { warning() << "Failure: error " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } void ConnectionManager::Private::PendingNames::continueProcessing() { if (!mMethodsQueue.isEmpty()) { QLatin1String method = mMethodsQueue.dequeue(); invokeMethod(method); } else { debug() << "Success: list" << mResult; setResult(mResult.toList()); setFinished(); } } void ConnectionManager::Private::PendingNames::invokeMethod(const QLatin1String &method) { QDBusPendingCall call = mBus.interface()->asyncCallWithArgumentList( method, QList()); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onCallFinished(QDBusPendingCallWatcher*))); } void ConnectionManager::Private::PendingNames::parseResult(const QStringList &names) { foreach (const QString name, names) { if (name.startsWith(TP_QT_IFACE_CONNECTION_MANAGER + QLatin1String("."))) { mResult << name.right(name.length() - 44); } } } const Feature ConnectionManager::Private::ProtocolWrapper::FeatureCore = Feature(QLatin1String(ConnectionManager::Private::ProtocolWrapper::staticMetaObject.className()), 0, true); ConnectionManager::Private::ProtocolWrapper::ProtocolWrapper( const ConnectionManagerPtr &cm, const QString &objectPath, const QString &name, const QVariantMap &props) : StatelessDBusProxy(cm->dbusConnection(), cm->busName(), objectPath, FeatureCore), OptionalInterfaceFactory(this), mReadinessHelper(readinessHelper()), mInfo(ProtocolInfo(cm, name)), mImmutableProps(props), mHasMainProps(false), mHasAvatarsProps(false), mHasPresenceProps(false), mHasAddressingProps(false) { fillRCCs(); ReadinessHelper::Introspectables introspectables; // As Protocol does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &ProtocolWrapper::introspectMain, this); introspectables[FeatureCore] = introspectableCore; mReadinessHelper->addIntrospectables(introspectables); } ConnectionManager::Private::ProtocolWrapper::~ProtocolWrapper() { } void ConnectionManager::Private::ProtocolWrapper::introspectMain( ConnectionManager::Private::ProtocolWrapper *self) { if (self->extractImmutableProperties()) { debug() << "Got everything we want from the immutable props for" << self->info().name(); self->continueIntrospection(); return; } if (!self->mHasMainProps) { self->introspectQueue.enqueue(&ProtocolWrapper::introspectMainProperties); } else { self->introspectInterfaces(); } self->continueIntrospection(); } void ConnectionManager::Private::ProtocolWrapper::introspectMainProperties() { Client::ProtocolInterface *protocol = baseInterface(); Q_ASSERT(protocol != 0); debug() << "Calling Properties::GetAll(Protocol) for" << info().name(); PendingVariantMap *pvm = protocol->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotMainProperties(Tp::PendingOperation*))); } void ConnectionManager::Private::ProtocolWrapper::introspectInterfaces() { if (!mHasAvatarsProps) { if (hasInterface(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS)) { introspectQueue.enqueue(&ProtocolWrapper::introspectAvatars); } else { debug() << "Full functionality requires CM support for the Protocol.Avatars interface"; } } if (!mHasPresenceProps) { if (hasInterface(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE)) { introspectQueue.enqueue(&ProtocolWrapper::introspectPresence); } else { debug() << "Full functionality requires CM support for the Protocol.Presence interface"; } } if (!mHasAddressingProps) { if (hasInterface(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING)) { introspectQueue.enqueue(&ProtocolWrapper::introspectAddressing); } else { debug() << "Full functionality requires CM support for the Protocol.Addressing interface"; } } } void ConnectionManager::Private::ProtocolWrapper::introspectAvatars() { Client::ProtocolInterfaceAvatarsInterface *avatars = avatarsInterface(); Q_ASSERT(avatars != 0); debug() << "Calling Properties::GetAll(Protocol.Avatars) for" << info().name(); PendingVariantMap *pvm = avatars->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotAvatarsProperties(Tp::PendingOperation*))); } void ConnectionManager::Private::ProtocolWrapper::introspectPresence() { Client::ProtocolInterfacePresenceInterface *presence = presenceInterface(); Q_ASSERT(presence != 0); debug() << "Calling Properties::GetAll(Protocol.Presence) for" << info().name(); PendingVariantMap *pvm = presence->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotPresenceProperties(Tp::PendingOperation*))); } void ConnectionManager::Private::ProtocolWrapper::introspectAddressing() { Client::ProtocolInterfaceAddressingInterface *addressing = addressingInterface(); Q_ASSERT(addressing != 0); debug() << "Calling Properties::GetAll(Protocol.Addressing) for" << info().name(); PendingVariantMap *pvm = addressing->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotAddressingProperties(Tp::PendingOperation*))); } void ConnectionManager::Private::ProtocolWrapper::continueIntrospection() { if (introspectQueue.isEmpty()) { mReadinessHelper->setIntrospectCompleted(FeatureCore, true); } else { (this->*(introspectQueue.dequeue()))(); } } void ConnectionManager::Private::ProtocolWrapper::gotMainProperties( Tp::PendingOperation *op) { if (!op->isError()) { debug() << "Got reply to Properties.GetAll(Protocol)"; PendingVariantMap *pvm = qobject_cast(op); QVariantMap unqualifiedProps = pvm->result(); extractMainProperties(qualifyProperties(TP_QT_IFACE_PROTOCOL, unqualifiedProps)); introspectInterfaces(); } else { warning().nospace() << "Properties.GetAll(Protocol) failed: " << op->errorName() << ": " << op->errorMessage(); warning() << " Full functionality requires CM support for the Protocol interface"; } continueIntrospection(); } void ConnectionManager::Private::ProtocolWrapper::gotAvatarsProperties( Tp::PendingOperation *op) { if (!op->isError()) { debug() << "Got reply to Properties.GetAll(Protocol.Avatars)"; PendingVariantMap *pvm = qobject_cast(op); QVariantMap unqualifiedProps = pvm->result(); extractAvatarsProperties(qualifyProperties(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS, unqualifiedProps)); } else { warning().nospace() << "Properties.GetAll(Protocol.Avatars) failed: " << op->errorName() << ": " << op->errorMessage(); warning() << " Full functionality requires CM support for the Protocol.Avatars interface"; } continueIntrospection(); } void ConnectionManager::Private::ProtocolWrapper::gotPresenceProperties( Tp::PendingOperation *op) { if (!op->isError()) { debug() << "Got reply to Properties.GetAll(Protocol.Presence)"; PendingVariantMap *pvm = qobject_cast(op); QVariantMap unqualifiedProps = pvm->result(); extractPresenceProperties(qualifyProperties(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE, unqualifiedProps)); } else { warning().nospace() << "Properties.GetAll(Protocol.Presence) failed: " << op->errorName() << ": " << op->errorMessage(); warning() << " Full functionality requires CM support for the Protocol.Presence interface"; } continueIntrospection(); } void ConnectionManager::Private::ProtocolWrapper::gotAddressingProperties( Tp::PendingOperation *op) { QVariantMap unqualifiedProps; if (!op->isError()) { debug() << "Got reply to Properties.GetAll(Protocol.Addressing)"; PendingVariantMap *pvm = qobject_cast(op); QVariantMap unqualifiedProps = pvm->result(); extractAddressingProperties(qualifyProperties(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING, unqualifiedProps)); } else { warning().nospace() << "Properties.GetAll(Protocol.Addressing) failed: " << op->errorName() << ": " << op->errorMessage(); warning() << " Full functionality requires CM support for the Protocol.Addressing interface"; } continueIntrospection(); } QVariantMap ConnectionManager::Private::ProtocolWrapper::qualifyProperties( const QString &ifaceName, const QVariantMap &unqualifiedProps) { QVariantMap qualifiedProps; foreach (const QString &unqualifiedProp, unqualifiedProps.keys()) { qualifiedProps.insert( QString(QLatin1String("%1.%2")). arg(ifaceName). arg(unqualifiedProp), unqualifiedProps.value(unqualifiedProp)); } return qualifiedProps; } void ConnectionManager::Private::ProtocolWrapper::fillRCCs() { RequestableChannelClassList classes; QVariantMap fixedProps; QStringList allowedProps; // Text chatrooms fixedProps.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL_TYPE_TEXT); fixedProps.insert( TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), static_cast(HandleTypeRoom)); RequestableChannelClass textChatroom = {fixedProps, allowedProps}; classes.append(textChatroom); // 1-1 text chats fixedProps[TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")] = static_cast(HandleTypeContact); RequestableChannelClass text = {fixedProps, allowedProps}; classes.append(text); // Media calls fixedProps[TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")] = TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA; RequestableChannelClass media = {fixedProps, allowedProps}; classes.append(media); // Initially audio-only calls allowedProps.push_back( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")); RequestableChannelClass initialAudio = {fixedProps, allowedProps}; classes.append(initialAudio); // Initially AV calls allowedProps.push_back( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo")); RequestableChannelClass initialAV = {fixedProps, allowedProps}; classes.append(initialAV); // Initially video-only calls allowedProps.removeAll( TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio")); RequestableChannelClass initialVideo = {fixedProps, allowedProps}; classes.append(initialVideo); // That also settles upgrading calls, because the media classes don't have ImmutableStreams mInfo.setRequestableChannelClasses(classes); } bool ConnectionManager::Private::ProtocolWrapper::extractImmutableProperties() { extractMainProperties(mImmutableProps); extractAvatarsProperties(mImmutableProps); extractPresenceProperties(mImmutableProps); extractAddressingProperties(mImmutableProps); return mHasMainProps && mHasAvatarsProps && mHasPresenceProps && mHasAddressingProps; } void ConnectionManager::Private::ProtocolWrapper::extractMainProperties(const QVariantMap &props) { mHasMainProps = props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".Interfaces")) && props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".Parameters")) && props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".ConnectionInterfaces")) && props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses")) && props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".VCardField")) && props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".EnglishName")) && props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".Icon")); setInterfaces(qdbus_cast( props[TP_QT_IFACE_PROTOCOL + QLatin1String(".Interfaces")])); mReadinessHelper->setInterfaces(interfaces()); ParamSpecList parameters = qdbus_cast( props[TP_QT_IFACE_PROTOCOL + QLatin1String(".Parameters")]); foreach (const ParamSpec &spec, parameters) { mInfo.addParameter(spec); } mInfo.setVCardField(qdbus_cast( props[TP_QT_IFACE_PROTOCOL + QLatin1String(".VCardField")])); QString englishName = qdbus_cast( props[TP_QT_IFACE_PROTOCOL + QLatin1String(".EnglishName")]); if (englishName.isEmpty()) { QStringList words = mInfo.name().split(QLatin1Char('-')); for (int i = 0; i < words.size(); ++i) { words[i][0] = words[i].at(0).toUpper(); } englishName = words.join(QLatin1String(" ")); } mInfo.setEnglishName(englishName); QString iconName = qdbus_cast( props[TP_QT_IFACE_PROTOCOL + QLatin1String(".Icon")]); if (iconName.isEmpty()) { iconName = QString(QLatin1String("im-%1")).arg(mInfo.name()); } mInfo.setIconName(iconName); // Don't overwrite the everything-is-possible RCCs with an empty list if there is no RCCs key if (props.contains(TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses"))) { mInfo.setRequestableChannelClasses(qdbus_cast( props[TP_QT_IFACE_PROTOCOL + QLatin1String(".RequestableChannelClasses")])); } } void ConnectionManager::Private::ProtocolWrapper::extractAvatarsProperties(const QVariantMap &props) { mHasAvatarsProps = props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".SupportedAvatarMIMETypes")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarHeight")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarHeight")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarWidth")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarWidth")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarWidth")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarBytes")); QStringList supportedMimeTypes = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".SupportedAvatarMIMETypes")]); uint minHeight = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarHeight")]); uint maxHeight = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarHeight")]); uint recommendedHeight = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarHeight")]); uint minWidth = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MinimumAvatarWidth")]); uint maxWidth = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarWidth")]); uint recommendedWidth = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".RecommendedAvatarWidth")]); uint maxBytes = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_AVATARS + QLatin1String(".MaximumAvatarBytes")]); mInfo.setAvatarRequirements(AvatarSpec(supportedMimeTypes, minHeight, maxHeight, recommendedHeight, minWidth, maxWidth, recommendedWidth, maxBytes)); } void ConnectionManager::Private::ProtocolWrapper::extractPresenceProperties(const QVariantMap &props) { mHasPresenceProps = props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE + QLatin1String(".Statuses")); mInfo.setAllowedPresenceStatuses(PresenceSpecList(qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_PRESENCE + QLatin1String(".Statuses")]))); } void ConnectionManager::Private::ProtocolWrapper::extractAddressingProperties(const QVariantMap &props) { mHasAddressingProps = props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING + QLatin1String(".AddressableVCardFields")) && props.contains(TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING + QLatin1String(".AddressableURISchemes")); QStringList vcardFields = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING + QLatin1String(".AddressableVCardFields")]); QStringList uriSchemes = qdbus_cast( props[TP_QT_IFACE_PROTOCOL_INTERFACE_ADDRESSING + QLatin1String(".AddressableURISchemes")]); mInfo.setAddressableVCardFields(vcardFields); mInfo.setAddressableUriSchemes(uriSchemes); } ConnectionManager::Private::Private(ConnectionManager *parent, const QString &name, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) : parent(parent), lowlevel(ConnectionManagerLowlevelPtr(new ConnectionManagerLowlevel(parent))), name(name), baseInterface(new Client::ConnectionManagerInterface(parent)), properties(parent->interface()), readinessHelper(parent->readinessHelper()), connFactory(connFactory), chanFactory(chanFactory), contactFactory(contactFactory) { debug() << "Creating new ConnectionManager:" << parent->busName(); if (connFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the connection factory is not the proxy connection"; } if (chanFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection"; } ReadinessHelper::Introspectables introspectables; // As ConnectionManager does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); } ConnectionManager::Private::~Private() { delete baseInterface; } bool ConnectionManager::Private::parseConfigFile() { ManagerFile f(name); if (!f.isValid()) { return false; } foreach (const QString &protocol, f.protocols()) { ProtocolInfo info(ConnectionManagerPtr(parent), protocol); foreach (const ParamSpec &spec, f.parameters(protocol)) { info.addParameter(spec); } info.setRequestableChannelClasses( f.requestableChannelClasses(protocol)); info.setVCardField(f.vcardField(protocol)); info.setEnglishName(f.englishName(protocol)); info.setIconName(f.iconName(protocol)); info.setAllowedPresenceStatuses(f.allowedPresenceStatuses(protocol)); info.setAvatarRequirements(f.avatarRequirements(protocol)); info.setAddressableVCardFields(f.addressableVCardFields(protocol)); info.setAddressableUriSchemes(f.addressableUriSchemes(protocol)); protocols.append(info); } return true; } void ConnectionManager::Private::introspectMain(ConnectionManager::Private *self) { if (self->parseConfigFile()) { self->readinessHelper->setIntrospectCompleted(FeatureCore, true); return; } warning() << "Error parsing config file for connection manager" << self->name << "- introspecting"; debug() << "Calling Properties::GetAll(ConnectionManager)"; PendingVariantMap *pvm = self->baseInterface->requestAllProperties(); self->parent->connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotMainProperties(Tp::PendingOperation*))); } void ConnectionManager::Private::introspectProtocolsLegacy() { debug() << "Calling ConnectionManager::ListProtocols"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( baseInterface->ListProtocols(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotProtocolsLegacy(QDBusPendingCallWatcher*))); } void ConnectionManager::Private::introspectParametersLegacy() { foreach (const QString &protocolName, parametersQueue) { debug() << "Calling ConnectionManager::GetParameters(" << protocolName << ")"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( baseInterface->GetParameters(protocolName), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotParametersLegacy(QDBusPendingCallWatcher*))); } } QString ConnectionManager::Private::makeBusName(const QString &name) { return QString(TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE).append(name); } QString ConnectionManager::Private::makeObjectPath(const QString &name) { return QString(TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE).append(name); } /** * \class ConnectionManagerLowlevel * \ingroup clientcm * \headerfile TelepathyQt/connection-manager-lowlevel.h * * \brief The ConnectionManagerLowlevel class extends ConnectionManager with * support to low-level features. */ ConnectionManagerLowlevel::ConnectionManagerLowlevel(ConnectionManager *cm) : mPriv(new Private(cm)) { } ConnectionManagerLowlevel::~ConnectionManagerLowlevel() { delete mPriv; } bool ConnectionManagerLowlevel::isValid() const { return !(connectionManager().isNull()); } ConnectionManagerPtr ConnectionManagerLowlevel::connectionManager() const { return ConnectionManagerPtr(mPriv->cm); } /** * \class ConnectionManager * \ingroup clientcm * \headerfile TelepathyQt/connection-manager.h * * \brief The ConnectionManager class represents a Telepathy connection manager. * * Connection managers allow connections to be made on one or more protocols. * * Most client applications should use this functionality via the * AccountManager, to allow connections to be shared between client * applications. */ /** * Feature representing the core that needs to become ready to make the * ConnectionManager object usable. * * Note that this feature must be enabled in order to use most ConnectionManager * methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature ConnectionManager::FeatureCore = Feature(QLatin1String(ConnectionManager::staticMetaObject.className()), 0, true); /** * Create a new ConnectionManager object. * * The instance will use a connection factory creating Tp::Connection objects with no features * ready, and a channel factory creating stock Telepathy-Qt channel subclasses, as appropriate, * with no features ready. * * \param bus QDBusConnection to use. * \param name Name of the connection manager. * \return A ConnectionManagerPtr object pointing to the newly created * ConnectionManager object. */ ConnectionManagerPtr ConnectionManager::create(const QDBusConnection &bus, const QString &name) { return ConnectionManagerPtr(new ConnectionManager(QDBusConnection::sessionBus(), name, ConnectionFactory::create(bus), ChannelFactory::create(bus), ContactFactory::create())); } /** * Create a new ConnectionManager using QDBusConnection::sessionBus() and the given factories. * * The channel factory is passed to any Connection objects created by this manager * object. In fact, they're not used directly by ConnectionManager at all. * * A warning is printed if the factories are for a bus different from QDBusConnection::sessionBus(). * * \param name Name of the connection manager. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ConnectionManagerPtr object pointing to the newly created * ConnectionManager object. */ ConnectionManagerPtr ConnectionManager::create(const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ConnectionManagerPtr(new ConnectionManager(QDBusConnection::sessionBus(), name, connectionFactory, channelFactory, contactFactory)); } /** * Create a new ConnectionManager using the given \a bus and the given factories. * * The channel factory is passed to any Connection objects created by this manager * object. In fact, they're not used directly by ConnectionManager at all. * * A warning is printed if the factories are for a bus different from QDBusConnection::sessionBus(). * * \param bus QDBusConnection to use. * \param name Name of the connection manager. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ConnectionManagerPtr object pointing to the newly created * ConnectionManager object. */ ConnectionManagerPtr ConnectionManager::create(const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ConnectionManagerPtr(new ConnectionManager(bus, name, connectionFactory, channelFactory, contactFactory)); } /** * Construct a new ConnectionManager object using the given \a bus. * * \param bus QDBusConnection to use. * \param name Name of the connection manager. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. */ ConnectionManager::ConnectionManager(const QDBusConnection &bus, const QString &name, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) : StatelessDBusProxy(bus, Private::makeBusName(name), Private::makeObjectPath(name), FeatureCore), OptionalInterfaceFactory(this), mPriv(new Private(this, name, connectionFactory, channelFactory, contactFactory)) { } /** * Class destructor. */ ConnectionManager::~ConnectionManager() { delete mPriv; } /** * Return the short name of the connection manager (e.g. "gabble"). * * \return The name of the connection manager. */ QString ConnectionManager::name() const { return mPriv->name; } /** * Return the connection factory used by this manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ConnectionFactory object. */ ConnectionFactoryConstPtr ConnectionManager::connectionFactory() const { return mPriv->connFactory; } /** * Return the channel factory used by this manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ChannelFactory object. */ ChannelFactoryConstPtr ConnectionManager::channelFactory() const { return mPriv->chanFactory; } /** * Return the contact factory used by this manager. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the manager would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ContactFactory object. */ ContactFactoryConstPtr ConnectionManager::contactFactory() const { return mPriv->contactFactory; } /** * Return a list of strings identifying the protocols supported by this * connection manager, as described in the \telepathy_spec (e.g. "jabber"). * * These identifiers are not intended to be displayed to users directly; user * interfaces are responsible for mapping them to localized strings. * * This method requires ConnectionManager::FeatureCore to be ready. * * \return A list of supported protocols. */ QStringList ConnectionManager::supportedProtocols() const { QStringList protocols; foreach (const ProtocolInfo &info, mPriv->protocols) { protocols.append(info.name()); } return protocols; } /** * Return a list of protocols info for this connection manager. * * Note that the returned ProtocolInfoList contents should not be freed. * * This method requires ConnectionManager::FeatureCore to be ready. * * \return A list of á¹”rotocolInfo. */ const ProtocolInfoList &ConnectionManager::protocols() const { return mPriv->protocols; } /** * Return whether this connection manager implements the protocol specified by * \a protocolName. * * This method requires ConnectionManager::FeatureCore to be ready. * * \return \c true if the protocol is supported, \c false otherwise. * \sa protocol(), protocols() */ bool ConnectionManager::hasProtocol(const QString &protocolName) const { foreach (const ProtocolInfo &info, mPriv->protocols) { if (info.name() == protocolName) { return true; } } return false; } /** * Return the ProtocolInfo object for the protocol specified by * \a protocolName. * * This method requires ConnectionManager::FeatureCore to be ready. * * \param protocolName The name of the protocol. * \return A ProtocolInfo object which will return \c for ProtocolInfo::isValid() if the protocol * specified by \a protocolName is not supported. * \sa hasProtocol() */ ProtocolInfo ConnectionManager::protocol(const QString &protocolName) const { foreach (const ProtocolInfo &info, mPriv->protocols) { if (info.name() == protocolName) { return info; } } return ProtocolInfo(); } /** * Request a Connection object representing a given account on a given protocol * with the given parameters. * * Return a pending operation representing the Connection object which will * succeed when the connection has been created or fail if an error occurred. * * \param protocol Name of the protocol to create the account for. * \param parameters Account parameters. * \return A PendingOperation which will emit PendingConnection::finished when * the account has been created of failed its creation process. */ PendingConnection *ConnectionManagerLowlevel::requestConnection(const QString &protocol, const QVariantMap ¶meters) { if (!isValid()) { return new PendingConnection(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection manager has been destroyed already")); } return new PendingConnection(connectionManager(), protocol, parameters); } /** * Return a pending operation from which a list of all installed connection * manager short names (such as "gabble" or "haze") can be retrieved if it * succeeds. * * \return A PendingStringList which will emit PendingStringList::finished * when this object has finished or failed getting the connection * manager names. */ PendingStringList *ConnectionManager::listNames(const QDBusConnection &bus) { return new ConnectionManager::Private::PendingNames(bus); } ConnectionManagerLowlevelPtr ConnectionManager::lowlevel() { return mPriv->lowlevel; } ConnectionManagerLowlevelConstPtr ConnectionManager::lowlevel() const { return mPriv->lowlevel; } /** * Return the Client::ConnectionManagerInterface for this ConnectionManager. * This method is protected since the convenience methods provided by this * class should generally be used instead of calling D-Bus methods * directly. * * \return A pointer to the existing Client::ConnectionManagerInterface for this * ConnectionManager object. */ Client::ConnectionManagerInterface *ConnectionManager::baseInterface() const { return mPriv->baseInterface; } /**** Private ****/ void ConnectionManager::gotMainProperties(Tp::PendingOperation *op) { QVariantMap props; if (!op->isError()) { debug() << "Got reply to Properties.GetAll(ConnectionManager)"; PendingVariantMap *pvm = qobject_cast(op); props = pvm->result(); // If Interfaces is not supported, the spec says to assume it's // empty, so keep the empty list mPriv was initialized with if (props.contains(QLatin1String("Interfaces"))) { setInterfaces(qdbus_cast(props[QLatin1String("Interfaces")])); mPriv->readinessHelper->setInterfaces(interfaces()); } } else { warning().nospace() << "Properties.GetAll(ConnectionManager) failed: " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); return; } ProtocolPropertiesMap protocolsMap = qdbus_cast(props[QLatin1String("Protocols")]); if (!protocolsMap.isEmpty()) { ProtocolPropertiesMap::const_iterator i = protocolsMap.constBegin(); ProtocolPropertiesMap::const_iterator end = protocolsMap.constEnd(); while (i != end) { QString protocolName = i.key(); if (!checkValidProtocolName(protocolName)) { warning() << "Protocol has an invalid name" << protocolName << "- ignoring"; continue; } QString escapedProtocolName = protocolName; escapedProtocolName.replace(QLatin1Char('-'), QLatin1Char('_')); QString protocolPath = QString( QLatin1String("%1/%2")).arg(objectPath()).arg(escapedProtocolName); SharedPtr wrapper = SharedPtr( new Private::ProtocolWrapper(ConnectionManagerPtr(this), protocolPath, protocolName, i.value())); connect(wrapper->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onProtocolReady(Tp::PendingOperation*))); mPriv->wrappers.insert(wrapper); ++i; } } else { mPriv->introspectProtocolsLegacy(); } } void ConnectionManager::gotProtocolsLegacy(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QStringList protocolsNames; if (!reply.isError()) { debug() << "Got reply to ConnectionManager.ListProtocols"; protocolsNames = reply.value(); if (!protocolsNames.isEmpty()) { foreach (const QString &protocolName, protocolsNames) { mPriv->protocols.append(ProtocolInfo(ConnectionManagerPtr(this), protocolName)); mPriv->parametersQueue.enqueue(protocolName); } mPriv->introspectParametersLegacy(); } else { //no protocols - introspection finished mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); warning().nospace() << "ConnectionManager.ListProtocols failed: " << reply.error().name() << ": " << reply.error().message(); // FIXME shouldn't this invalidate the CM? } watcher->deleteLater(); } void ConnectionManager::gotParametersLegacy(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QString protocolName = mPriv->parametersQueue.dequeue(); bool found = false; int pos = 0; foreach (const ProtocolInfo &info, mPriv->protocols) { if (info.name() == protocolName) { found = true; break; } ++pos; } Q_ASSERT(found); Q_UNUSED(found); if (!reply.isError()) { debug() << QString(QLatin1String("Got reply to ConnectionManager.GetParameters(%1)")).arg(protocolName); ParamSpecList parameters = reply.value(); ProtocolInfo &info = mPriv->protocols[pos]; foreach (const ParamSpec &spec, parameters) { debug() << "Parameter" << spec.name << "has flags" << spec.flags << "and signature" << spec.signature; info.addParameter(spec); } } else { // let's remove this protocol as we can't get the params mPriv->protocols.removeAt(pos); warning().nospace() << QString(QLatin1String("ConnectionManager.GetParameters(%1) failed: ")).arg(protocolName) << reply.error().name() << ": " << reply.error().message(); } if (mPriv->parametersQueue.isEmpty()) { if (!mPriv->protocols.isEmpty()) { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { // we could not retrieve the params for any protocol, fail core. mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); } } watcher->deleteLater(); } void ConnectionManager::onProtocolReady(Tp::PendingOperation *op) { PendingReady *pr = qobject_cast(op); SharedPtr wrapper = SharedPtr::qObjectCast(pr->proxy()); ProtocolInfo info = wrapper->info(); mPriv->wrappers.remove(wrapper); if (!op->isError()) { mPriv->protocols.append(info); } else { warning().nospace() << "Protocol(" << info.name() << ")::becomeReady " "failed: " << op->errorName() << ": " << op->errorMessage(); } if (mPriv->wrappers.isEmpty()) { if (!mPriv->protocols.isEmpty()) { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { // we could not make any Protocol objects ready, fail core. mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); } } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/PendingStreamTubeConnection0000644000175100017520000000044212530423576025511 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingStreamTubeConnection_HEADER_GUARD_ #define _TelepathyQt_PendingStreamTubeConnection_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-manager.xml0000644000175100017520000000073012530423576024457 0ustar00kaffeinekaffeine00000000000000 Connection Manager interfaces telepathy-qt-0.9.6.1/TelepathyQt/ConnectionManagerInterface0000644000175100017520000000042412530423576025324 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionManagerInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionManagerInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceConferenceInterface0000644000175100017520000000043312530423576027113 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceConferenceInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceConferenceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallContentMediaDescription0000644000175100017520000000044212530423576025463 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentMediaDescription_HEADER_GUARD_ #define _TelepathyQt_CallContentMediaDescription_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingContactAttributes0000644000175100017520000000043012530423576025055 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingContactAttributes_HEADER_GUARD_ #define _TelepathyQt_PendingContactAttributes_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ContactFactory0000644000175100017520000000037112530423576023035 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ContactFactory_HEADER_GUARD_ #define _TelepathyQt_ContactFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/MessageContentPart0000644000175100017520000000040612530423576023657 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MessageContentPart_HEADER_GUARD_ #define _TelepathyQt_MessageContentPart_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/media-session-handler.h0000644000175100017520000000340112530423576024510 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_media_session_handler_h_HEADER_GUARD_ #define _TelepathyQt_media_session_handler_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif /** * \addtogroup clientsideproxies Client-side proxies * * Proxy objects representing remote service objects accessed via D-Bus. * * In addition to providing direct access to methods, signals and properties * exported by the remote objects, some of these proxies offer features like * automatic inspection of remote object capabilities, property tracking, * backwards compatibility helpers for older services and other utilities. */ /** * \defgroup clientmsesh Media session handler proxies * \ingroup clientsideproxies * * Proxy objects representing remote Telepathy MediaSessionHandler objects. */ #include #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-variant-map.h0000644000175100017520000000321512530423576024201 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_variant_map_h_HEADER_GUARD_ #define _TelepathyQt_pending_variant_map_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { class TP_QT_EXPORT PendingVariantMap : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingVariantMap); public: PendingVariantMap(QDBusPendingCall call, const SharedPtr &object); ~PendingVariantMap(); QVariantMap result() const; private Q_SLOTS: TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/profile-manager.h0000644000175100017520000000423112530423576023407 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_profile_manager_h_HEADER_GUARD_ #define _TelepathyQt_profile_manager_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { class PendingOperation; class TP_QT_EXPORT ProfileManager : public Object, public ReadyObject { Q_OBJECT Q_DISABLE_COPY(ProfileManager); public: static const Feature FeatureCore; static const Feature FeatureFakeProfiles; static ProfileManagerPtr create(const QDBusConnection &bus = QDBusConnection::sessionBus()); ~ProfileManager(); QList profiles() const; QList profilesForCM(const QString &cmName) const; QList profilesForProtocol(const QString &protocolName) const; ProfilePtr profileForService(const QString &serviceName) const; private Q_SLOTS: TP_QT_NO_EXPORT void onCmNamesRetrieved(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onCMsReady(Tp::PendingOperation *op); private: ProfileManager(const QDBusConnection &bus); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/RefCounted0000644000175100017520000000035412530423576022151 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_RefCounted_HEADER_GUARD_ #define _TelepathyQt_RefCounted_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/types.h0000644000175100017520000001723412530423576021512 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2012 Collabora Ltd. * @copyright Copyright (C) 2008-2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_types_h_HEADER_GUARD_ #define _TelepathyQt_types_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include namespace Tp { TP_QT_EXPORT void registerTypes(); template class Filter; template class GenericCapabilityFilter; template class GenericPropertyFilter; class AbstractClient; class AbstractClientApprover; class AbstractClientHandler; class AbstractClientObserver; class Account; typedef GenericCapabilityFilter AccountCapabilityFilter; class AccountFactory; typedef Filter AccountFilter; class AccountManager; class AccountPropertyFilter; class AccountSet; class CallChannel; class CallContent; class CallStream; class CaptchaAuthentication; class Channel; class ChannelDispatchOperation; class ChannelFactory; class ChannelRequest; class ClientObject; class ClientRegistrar; class Connection; class ConnectionFactory; class ConnectionLowlevel; class ConnectionManager; class ConnectionManagerLowlevel; class Contact; class ContactFactory; class ContactManager; class ContactMessenger; class ContactSearchChannel; class DBusProxy; class DebugReceiver; class DBusTubeChannel; class FileTransferChannel; class IncomingDBusTubeChannel; class IncomingFileTransferChannel; class IncomingStreamTubeChannel; class OutgoingDBusTubeChannel; class OutgoingFileTransferChannel; class OutgoingStreamTubeChannel; class Profile; class ProfileManager; class RoomListChannel; class ServerAuthenticationChannel; class SimpleObserver; class SimpleCallObserver; class SimpleTextObserver; class StreamedMediaChannel; class StreamedMediaStream; class StreamTubeChannel; class StreamTubeClient; class StreamTubeServer; class TextChannel; class TubeChannel; #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef SharedPtr AbstractClientPtr; typedef SharedPtr AbstractClientApproverPtr; typedef SharedPtr AbstractClientHandlerPtr; typedef SharedPtr AbstractClientObserverPtr; typedef SharedPtr AccountPtr; typedef SharedPtr AccountCapabilityFilterPtr; typedef SharedPtr AccountCapabilityFilterConstPtr; typedef SharedPtr AccountFactoryPtr; typedef SharedPtr AccountFactoryConstPtr; typedef SharedPtr AccountFilterPtr; typedef SharedPtr AccountFilterConstPtr; typedef SharedPtr AccountManagerPtr; typedef SharedPtr AccountPropertyFilterPtr; typedef SharedPtr AccountPropertyFilterConstPtr; typedef SharedPtr AccountSetPtr; typedef SharedPtr CallChannelPtr; typedef SharedPtr CallContentPtr; typedef SharedPtr CallStreamPtr; typedef SharedPtr CaptchaAuthenticationPtr; typedef SharedPtr ChannelPtr; typedef SharedPtr ChannelDispatchOperationPtr; typedef SharedPtr ChannelFactoryPtr; typedef SharedPtr ChannelFactoryConstPtr; typedef SharedPtr ChannelRequestPtr; typedef SharedPtr ClientObjectPtr; typedef SharedPtr ClientRegistrarPtr; typedef SharedPtr ConnectionPtr; typedef SharedPtr ConnectionFactoryPtr; typedef SharedPtr ConnectionFactoryConstPtr; typedef SharedPtr ConnectionLowlevelPtr; typedef SharedPtr ConnectionLowlevelConstPtr; typedef SharedPtr ConnectionManagerPtr; typedef SharedPtr ConnectionManagerLowlevelPtr; typedef SharedPtr ConnectionManagerLowlevelConstPtr; typedef SharedPtr ContactPtr; typedef QSet Contacts; typedef SharedPtr ContactFactoryPtr; typedef SharedPtr ContactFactoryConstPtr; typedef SharedPtr ContactManagerPtr; typedef SharedPtr ContactMessengerPtr; typedef SharedPtr ContactSearchChannelPtr; typedef SharedPtr DBusProxyPtr; typedef SharedPtr DBusTubeChannelPtr; typedef SharedPtr DebugReceiverPtr; typedef SharedPtr FileTransferChannelPtr; typedef SharedPtr IncomingDBusTubeChannelPtr; typedef SharedPtr IncomingFileTransferChannelPtr; typedef SharedPtr IncomingStreamTubeChannelPtr; typedef SharedPtr OutgoingDBusTubeChannelPtr; typedef SharedPtr OutgoingFileTransferChannelPtr; typedef SharedPtr OutgoingStreamTubeChannelPtr; typedef SharedPtr ProfilePtr; typedef SharedPtr ProfileManagerPtr; typedef SharedPtr RoomListChannelPtr; typedef SharedPtr ServerAuthenticationChannelPtr; typedef SharedPtr SimpleObserverPtr; typedef SharedPtr SimpleCallObserverPtr; typedef SharedPtr SimpleTextObserverPtr; typedef TP_QT_DEPRECATED SharedPtr StreamedMediaChannelPtr; typedef TP_QT_DEPRECATED SharedPtr StreamedMediaStreamPtr; typedef SharedPtr StreamTubeChannelPtr; typedef SharedPtr StreamTubeClientPtr; typedef SharedPtr StreamTubeServerPtr; typedef SharedPtr TextChannelPtr; typedef SharedPtr TubeChannelPtr; template class MethodInvocationContextPtr : public SharedPtr > { public: inline MethodInvocationContextPtr() { } explicit inline MethodInvocationContextPtr(MethodInvocationContext *d) : SharedPtr >(d) { } inline MethodInvocationContextPtr(const SharedPtr > &o) : SharedPtr >(o) { } }; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/future.cpp0000644000175100017520000000243312530423576022206 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/future-internal.h" #include "TelepathyQt/_gen/future-channel-body.hpp" #include "TelepathyQt/_gen/future-channel.moc.hpp" #include "TelepathyQt/_gen/future-channel-dispatcher-body.hpp" #include "TelepathyQt/_gen/future-channel-dispatcher.moc.hpp" #include "TelepathyQt/_gen/future-misc-body.hpp" #include "TelepathyQt/_gen/future-misc.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/PendingVariant0000644000175100017520000000037112530423576023023 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingVariant_HEADER_GUARD_ #define _TelepathyQt_PendingVariant_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/captcha-authentication-internal.h0000644000175100017520000000531712530423576026577 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_captcha_authentication_internal_h_HEADER_GUARD_ #define _TelepathyQt_captcha_authentication_internal_h_HEADER_GUARD_ #include #include namespace Tp { class PendingVoid; class TP_QT_NO_EXPORT PendingCaptchaAnswer : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingCaptchaAnswer) public: PendingCaptchaAnswer(const QDBusPendingCall &call, const CaptchaAuthenticationPtr &object); ~PendingCaptchaAnswer(); private Q_SLOTS: void onCaptchaStatusChanged(Tp::CaptchaStatus status); void onAnswerFinished(); void onRequestCloseFinished(Tp::PendingOperation *operation); private: // Public object PendingCaptchaAnswer *mParent; QDBusPendingCallWatcher *mWatcher; CaptchaAuthenticationPtr mCaptcha; ChannelPtr mChannel; }; class TP_QT_NO_EXPORT PendingCaptchaCancel : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingCaptchaCancel) public: PendingCaptchaCancel(const QDBusPendingCall &call, const CaptchaAuthenticationPtr &object); ~PendingCaptchaCancel(); private Q_SLOTS: void onCancelFinished(); void onRequestCloseFinished(Tp::PendingOperation *operation); private: // Public object PendingCaptchaCancel *mParent; QDBusPendingCallWatcher *mWatcher; CaptchaAuthenticationPtr mCaptcha; ChannelPtr mChannel; }; struct TP_QT_NO_EXPORT CaptchaAuthentication::Private { Private(CaptchaAuthentication *parent); void extractCaptchaAuthenticationProperties(const QVariantMap &props); // Public object CaptchaAuthentication *parent; WeakPtr channel; // Introspection bool canRetry; CaptchaStatus status; QString error; QVariantMap errorDetails; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/contact-factory.h0000644000175100017520000000411012530423576023433 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_factory_h_HEADER_GUARD_ #define _TelepathyQt_contact_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { class ContactManager; class ReferencedHandles; class TP_QT_EXPORT ContactFactory : public RefCounted { Q_DISABLE_COPY(ContactFactory) public: static ContactFactoryPtr create(const Features &features = Features()); virtual ~ContactFactory(); Features features() const; void addFeature(const Feature &feature); void addFeatures(const Features &features); protected: ContactFactory(const Features &features); virtual ContactPtr construct(ContactManager *manager, const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes) const; virtual PendingOperation *prepare(const ContactPtr &contact) const; private: friend class ContactManager; friend class PendingContacts; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/streamed-media-channel.cpp0000644000175100017520000014464412530423576025176 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/streamed-media-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { /* ====== PendingStreamedMediaStreams ====== */ struct TP_QT_NO_EXPORT PendingStreamedMediaStreams::Private { StreamedMediaStreams streams; uint numStreams; uint streamsReady; }; /** * \class PendingStreamedMediaStreams * \ingroup clientchannel * \headerfile TelepathyQt/streamed-media-channel.h * * \brief Class containing the result of an asynchronous streamed media stream creation * request. * * Instances of this class cannot be constructed directly; the only way to get * one is via StreamedMediaChannel. * * See \ref async_model */ /** * Construct a new PendingStreamedMediaStreams object. * * \param channel StreamedMediaChannel to use. * \param contact The contact who the media stream is with. * \param types A list of stream types to request. */ PendingStreamedMediaStreams::PendingStreamedMediaStreams(const StreamedMediaChannelPtr &channel, const ContactPtr &contact, const QList &types) : PendingOperation(channel), mPriv(new Private) { mPriv->numStreams = types.size(); mPriv->streamsReady = 0; UIntList l; foreach (MediaStreamType type, types) { l << type; } Client::ChannelTypeStreamedMediaInterface *streamedMediaInterface = channel->interface(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( streamedMediaInterface->RequestStreams( contact->handle()[0], l), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotStreams(QDBusPendingCallWatcher*))); } /** * Class destructor. */ PendingStreamedMediaStreams::~PendingStreamedMediaStreams() { delete mPriv; } /** * Return the channel through which the request was made. * * \return A pointer to the StreamedMediaChannel object. */ StreamedMediaChannelPtr PendingStreamedMediaStreams::channel() const { return StreamedMediaChannelPtr(qobject_cast( (StreamedMediaChannel*) object().data())); } /** * Return a list of the newly created StreamedMediaStreamPtr objects. * * \return A list of pointers to StreamedMediaStream objects, or an empty list if an error occurred. */ StreamedMediaStreams PendingStreamedMediaStreams::streams() const { if (!isFinished()) { warning() << "PendingStreamedMediaStreams::streams called before finished, " "returning empty list"; return StreamedMediaStreams(); } else if (!isValid()) { warning() << "PendingStreamedMediaStreams::streams called when not valid, " "returning empty list"; return StreamedMediaStreams(); } return mPriv->streams; } void PendingStreamedMediaStreams::gotStreams(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "StreamedMedia::RequestStreams()" " failed with " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); watcher->deleteLater(); return; } debug() << "Got reply to StreamedMedia::RequestStreams()"; MediaStreamInfoList list = reply.value(); foreach (const MediaStreamInfo &streamInfo, list) { StreamedMediaStreamPtr stream = channel()->lookupStreamById( streamInfo.identifier); if (!stream) { stream = channel()->addStream(streamInfo); } else { channel()->onStreamDirectionChanged(streamInfo.identifier, streamInfo.direction, streamInfo.pendingSendFlags); channel()->onStreamStateChanged(streamInfo.identifier, streamInfo.state); } mPriv->streams.append(stream); connect(channel().data(), SIGNAL(streamRemoved(Tp::StreamedMediaStreamPtr)), SLOT(onStreamRemoved(Tp::StreamedMediaStreamPtr))); connect(stream->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onStreamReady(Tp::PendingOperation*))); } watcher->deleteLater(); } void PendingStreamedMediaStreams::onStreamRemoved(const StreamedMediaStreamPtr &stream) { if (isFinished()) { return; } if (mPriv->streams.contains(stream)) { // the stream was removed before becoming ready setFinishedWithError(TP_QT_ERROR_CANCELLED, QLatin1String("Stream removed before ready")); } } void PendingStreamedMediaStreams::onStreamReady(PendingOperation *op) { if (isFinished()) { return; } if (op->isError()) { setFinishedWithError(op->errorName(), op->errorMessage()); return; } mPriv->streamsReady++; debug() << "PendingStreamedMediaStreams:"; debug() << " Streams count:" << mPriv->numStreams; debug() << " Streams ready:" << mPriv->streamsReady; if (mPriv->streamsReady == mPriv->numStreams) { debug() << "All streams are ready"; setFinished(); } } /* ====== StreamedMediaStream ====== */ struct TP_QT_NO_EXPORT StreamedMediaStream::Private { Private(StreamedMediaStream *parent, const StreamedMediaChannelPtr &channel, const MediaStreamInfo &info); static void introspectContact(Private *self); PendingOperation *updateDirection(bool send, bool receive); SendingState localSendingStateFromDirection(); SendingState remoteSendingStateFromDirection(); StreamedMediaStream *parent; WeakPtr channel; ReadinessHelper *readinessHelper; uint id; uint type; uint contactHandle; ContactPtr contact; uint direction; uint pendingSend; uint state; }; StreamedMediaStream::Private::Private(StreamedMediaStream *parent, const StreamedMediaChannelPtr &channel, const MediaStreamInfo &streamInfo) : parent(parent), channel(channel), readinessHelper(parent->readinessHelper()), id(streamInfo.identifier), type(streamInfo.type), contactHandle(streamInfo.contact), direction(MediaStreamDirectionNone), pendingSend(0), state(MediaStreamStateDisconnected) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectContact, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); } void StreamedMediaStream::Private::introspectContact(StreamedMediaStream::Private *self) { debug() << "Introspecting stream"; if (self->contactHandle == 0) { debug() << "Stream ready"; self->readinessHelper->setIntrospectCompleted(FeatureCore, true); return; } debug() << "Introspecting stream contact"; ContactManagerPtr contactManager = self->parent->channel()->connection()->contactManager(); debug() << "contact manager" << contactManager; // TODO: pass id hints to ContactManager if we ever gain support to retrieve contact ids // from MediaStreamInfo or something similar. self->parent->connect(contactManager->contactsForHandles( UIntList() << self->contactHandle), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContact(Tp::PendingOperation*))); } PendingOperation *StreamedMediaStream::Private::updateDirection( bool send, bool receive) { uint newDirection = 0; if (send) { newDirection |= MediaStreamDirectionSend; } if (receive) { newDirection |= MediaStreamDirectionReceive; } Client::ChannelTypeStreamedMediaInterface *streamedMediaInterface = parent->channel()->interface(); return new PendingVoid( streamedMediaInterface->RequestStreamDirection( id, newDirection), StreamedMediaStreamPtr(parent)); } StreamedMediaStream::SendingState StreamedMediaStream::Private::localSendingStateFromDirection() { if (pendingSend & MediaStreamPendingLocalSend) { return SendingStatePendingSend; } if (direction & MediaStreamDirectionSend) { return SendingStateSending; } return SendingStateNone; } StreamedMediaStream::SendingState StreamedMediaStream::Private::remoteSendingStateFromDirection() { if (pendingSend & MediaStreamPendingRemoteSend) { return SendingStatePendingSend; } if (direction & MediaStreamDirectionReceive) { return SendingStateSending; } return SendingStateNone; } /** * \class StreamedMediaStream * \ingroup clientchannel * \headerfile TelepathyQt/streamed-media-channel.h * * \brief The StreamedMediaStream class represents a Telepathy streamed media * stream. * * Instances of this class cannot be constructed directly; the only way to get * one is via StreamedMediaChannel. */ /** * Feature representing the core that needs to become ready to make the * StreamedMediaStream object usable. * * Note that this feature must be enabled in order to use most StreamedMediaStream * methods. See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature StreamedMediaStream::FeatureCore = Feature(QLatin1String(StreamedMediaStream::staticMetaObject.className()), 0); /** * Construct a new StreamedMediaStream object. * * \param channel The channel ownding this media stream. * \param streamInfo The stream info of this media stream. */ StreamedMediaStream::StreamedMediaStream(const StreamedMediaChannelPtr &channel, const MediaStreamInfo &streamInfo) : Object(), ReadyObject(this, FeatureCore), mPriv(new Private(this, channel, streamInfo)) { gotDirection(streamInfo.direction, streamInfo.pendingSendFlags); gotStreamState(streamInfo.state); } /** * Class destructor. */ StreamedMediaStream::~StreamedMediaStream() { delete mPriv; } /** * Return the channel owning this media stream. * * \return A pointer to the StreamedMediaChannel object. */ StreamedMediaChannelPtr StreamedMediaStream::channel() const { return StreamedMediaChannelPtr(mPriv->channel); } /** * Return the id of this media stream. * * \return An integer representing the media stream id. */ uint StreamedMediaStream::id() const { return mPriv->id; } /** * Return the contact who this media stream is with. * * \return A pointer to the Contact object. */ ContactPtr StreamedMediaStream::contact() const { return mPriv->contact; } /** * Return the state of this media stream. * * \return The state as #MediaStreamState. */ MediaStreamState StreamedMediaStream::state() const { return (MediaStreamState) mPriv->state; } /** * Return the type of this media stream. * * \return The type as #MediaStreamType. */ MediaStreamType StreamedMediaStream::type() const { return (MediaStreamType) mPriv->type; } /** * Return whether media is being sent on this media stream. * * \return \c true if media is being sent, \c false otherwise. * \sa localSendingStateChanged() */ bool StreamedMediaStream::sending() const { return mPriv->direction & MediaStreamDirectionSend; } /** * Return whether media is being received on this media stream. * * \return \c true if media is being received, \c false otherwise. * \sa remoteSendingStateChanged() */ bool StreamedMediaStream::receiving() const { return mPriv->direction & MediaStreamDirectionReceive; } /** * Return whether the local user has been asked to send media by the * remote user on this media stream. * * \return \c true if the local user has been asked to send media by the * remote user, \c false otherwise. * \sa localSendingStateChanged() */ bool StreamedMediaStream::localSendingRequested() const { return mPriv->pendingSend & MediaStreamPendingLocalSend; } /** * Return whether the remote user has been asked to send media by the local * user on this media stream. * * \return \c true if the remote user has been asked to send media by the * local user, \c false otherwise. * \sa remoteSendingStateChanged() */ bool StreamedMediaStream::remoteSendingRequested() const { return mPriv->pendingSend & MediaStreamPendingRemoteSend; } /** * Return the direction of this media stream. * * \return The direction as #MediaStreamDirection. * \sa localSendingState(), remoteSendingState(), * localSendingStateChanged(), remoteSendingStateChanged(), * sending(), receiving() */ MediaStreamDirection StreamedMediaStream::direction() const { return (MediaStreamDirection) mPriv->direction; } /** * Return the pending send flags of this media stream. * * \return The pending send flags as #MediaStreamPendingSend. * \sa localSendingStateChanged() */ MediaStreamPendingSend StreamedMediaStream::pendingSend() const { return (MediaStreamPendingSend) mPriv->pendingSend; } /** * Request a change in the direction of this media stream. In particular, this * might be useful to stop sending media of a particular type, or inform the * peer that you are no longer using media that is being sent to you. * * \param direction The new direction. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa localSendingStateChanged(), remoteSendingStateChanged() */ PendingOperation *StreamedMediaStream::requestDirection( MediaStreamDirection direction) { StreamedMediaChannelPtr chan(channel()); Client::ChannelTypeStreamedMediaInterface *streamedMediaInterface = chan->interface(); return new PendingVoid( streamedMediaInterface->RequestStreamDirection( mPriv->id, direction), StreamedMediaStreamPtr(this)); } /** * Start sending a DTMF tone on this media stream. * * Where possible, the tone will continue until stopDTMFTone() is called. * On certain protocols, it may only be possible to send events with a predetermined * length. In this case, the implementation may emit a fixed-length tone, * and the stopDTMFTone() method call should return #TP_QT_ERROR_NOT_AVAILABLE. * * If the channel() does not support the #TP_QT_IFACE_CHANNEL_INTERFACE_DTMF * interface, the resulting PendingOperation will fail with error code * #TP_QT_ERROR_NOT_IMPLEMENTED. * \param event A numeric event code from the #DTMFEvent enum. * \return A PendingOperation which will emit PendingOperation::finished * when the request finishes. * \sa stopDTMFTone() */ PendingOperation *StreamedMediaStream::startDTMFTone(DTMFEvent event) { StreamedMediaChannelPtr chan(channel()); if (!chan->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_DTMF)) { warning() << "StreamedMediaStream::startDTMFTone() used with no dtmf interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("StreamedMediaChannel does not support dtmf interface"), StreamedMediaStreamPtr(this)); } Client::ChannelInterfaceDTMFInterface *dtmfInterface = chan->interface(); return new PendingVoid( dtmfInterface->StartTone(mPriv->id, event), StreamedMediaStreamPtr(this)); } /** * Stop sending any DTMF tone which has been started using the startDTMFTone() * method. * * If there is no current tone, the resulting PendingOperation will * finish successfully. * * If continuous tones are not supported by this media stream, the resulting * PendingOperation will fail with error code #TP_QT_ERROR_NOT_AVAILABLE. * * If the channel() does not support the #TP_QT_IFACE_CHANNEL_INTERFACE_DTMF * interface, the resulting PendingOperation will fail with error code * #TP_QT_ERROR_NOT_IMPLEMENTED. * * \return A PendingOperation which will emit PendingOperation::finished * when the request finishes. * \sa startDTMFTone() */ PendingOperation *StreamedMediaStream::stopDTMFTone() { StreamedMediaChannelPtr chan(channel()); if (!chan->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_DTMF)) { warning() << "StreamedMediaStream::stopDTMFTone() used with no dtmf interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("StreamedMediaChannel does not support dtmf interface"), StreamedMediaStreamPtr(this)); } Client::ChannelInterfaceDTMFInterface *dtmfInterface = chan->interface(); return new PendingVoid( dtmfInterface->StopTone(mPriv->id), StreamedMediaStreamPtr(this)); } /** * Request a change in the direction of this media stream. * * In particular, this might be useful to stop sending media of a particular type, * or inform the peer that you are no longer using media that is being sent to you. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa requestDirection(Tp::MediaStreamDirection direction), * localSendingStateChanged(), remoteSendingStateChanged() */ PendingOperation *StreamedMediaStream::requestDirection(bool send, bool receive) { uint dir = MediaStreamDirectionNone; if (send) { dir |= MediaStreamDirectionSend; } if (receive) { dir |= MediaStreamDirectionReceive; } return requestDirection((MediaStreamDirection) dir); } /** * Return the media stream local sending state. * * \return The local sending state as StreamedMediaStream::SendingState. * \sa localSendingStateChanged() */ StreamedMediaStream::SendingState StreamedMediaStream::localSendingState() const { return mPriv->localSendingStateFromDirection(); } /** * Return the media stream remote sending state. * * \return The remote sending state as StreamedMediaStream::SendingState. * \sa remoteSendingStateChanged() */ StreamedMediaStream::SendingState StreamedMediaStream::remoteSendingState() const { return mPriv->remoteSendingStateFromDirection(); } /** * Request that media starts or stops being sent on this media stream. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa localSendingStateChanged(), requestDirection() */ PendingOperation *StreamedMediaStream::requestSending(bool send) { return mPriv->updateDirection( send, mPriv->direction & MediaStreamDirectionReceive); } /** * Request that the remote contact stops or starts sending on this media stream. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa remoteSendingStateChanged(), requestDirection() */ PendingOperation *StreamedMediaStream::requestReceiving(bool receive) { return mPriv->updateDirection( mPriv->direction & MediaStreamDirectionSend, receive); } /** * \fn void StreamedMediaStream::localSendingStateChanged( * Tp::StreamedMediaStream::SendingState localSendingState) * * Emitted when the local sending state of this media stream changes. * * \param localSendingState The new local sending state of this media stream. * \sa localSendingState() */ /** * \fn void MediaStream::remoteSendingStateChanged( * Tp::MediaStream::SendingState &remoteSendingState) * * Emitted when the remote sending state of this media stream changes. * * \param remoteSendingState The new remote sending state of this media stream. * \sa remoteSendingState() */ void StreamedMediaStream::gotContact(PendingOperation *op) { PendingContacts *pc = qobject_cast(op); Q_ASSERT(pc->isForHandles()); if (op->isError()) { warning().nospace() << "Gathering media stream contact failed: " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); return; } QList contacts = pc->contacts(); UIntList invalidHandles = pc->invalidHandles(); if (contacts.size()) { Q_ASSERT(contacts.size() == 1); Q_ASSERT(invalidHandles.size() == 0); mPriv->contact = contacts.first(); debug() << "Got stream contact"; debug() << "Stream ready"; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { Q_ASSERT(invalidHandles.size() == 1); warning().nospace() << "Error retrieving media stream contact (invalid handle)"; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid contact handle")); } } void StreamedMediaStream::gotDirection(uint direction, uint pendingSend) { if (direction == mPriv->direction && pendingSend == mPriv->pendingSend) { return; } SendingState oldLocalState = mPriv->localSendingStateFromDirection(); SendingState oldRemoteState = mPriv->remoteSendingStateFromDirection(); mPriv->direction = direction; mPriv->pendingSend = pendingSend; if (!isReady()) { return; } SendingState localSendingState = mPriv->localSendingStateFromDirection(); if (localSendingState != oldLocalState) { emit localSendingStateChanged(localSendingState); } SendingState remoteSendingState = mPriv->remoteSendingStateFromDirection(); if (remoteSendingState != oldRemoteState) { emit remoteSendingStateChanged(remoteSendingState); } } void StreamedMediaStream::gotStreamState(uint state) { if (state == mPriv->state) { return; } mPriv->state = state; } /* ====== StreamedMediaChannel ====== */ struct TP_QT_NO_EXPORT StreamedMediaChannel::Private { Private(StreamedMediaChannel *parent); ~Private(); static void introspectStreams(Private *self); static void introspectLocalHoldState(Private *self); // Public object StreamedMediaChannel *parent; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; // Introspection StreamedMediaStreams incompleteStreams; StreamedMediaStreams streams; LocalHoldState localHoldState; LocalHoldStateReason localHoldStateReason; }; StreamedMediaChannel::Private::Private(StreamedMediaChannel *parent) : parent(parent), properties(parent->interface()), readinessHelper(parent->readinessHelper()), localHoldState(LocalHoldStateUnheld), localHoldStateReason(LocalHoldStateReasonNone) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableStreams( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectStreams, this); introspectables[FeatureStreams] = introspectableStreams; ReadinessHelper::Introspectable introspectableLocalHoldState( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_HOLD, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectLocalHoldState, this); introspectables[FeatureLocalHoldState] = introspectableLocalHoldState; readinessHelper->addIntrospectables(introspectables); } StreamedMediaChannel::Private::~Private() { } void StreamedMediaChannel::Private::introspectStreams(StreamedMediaChannel::Private *self) { StreamedMediaChannel *parent = self->parent; Client::ChannelTypeStreamedMediaInterface *streamedMediaInterface = parent->interface(); parent->connect(streamedMediaInterface, SIGNAL(StreamAdded(uint,uint,uint)), SLOT(onStreamAdded(uint,uint,uint))); parent->connect(streamedMediaInterface, SIGNAL(StreamRemoved(uint)), SLOT(onStreamRemoved(uint))); parent->connect(streamedMediaInterface, SIGNAL(StreamDirectionChanged(uint,uint,uint)), SLOT(onStreamDirectionChanged(uint,uint,uint))); parent->connect(streamedMediaInterface, SIGNAL(StreamStateChanged(uint,uint)), SLOT(onStreamStateChanged(uint,uint))); parent->connect(streamedMediaInterface, SIGNAL(StreamError(uint,uint,QString)), SLOT(onStreamError(uint,uint,QString))); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( streamedMediaInterface->ListStreams(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher *)), SLOT(gotStreams(QDBusPendingCallWatcher *))); } void StreamedMediaChannel::Private::introspectLocalHoldState(StreamedMediaChannel::Private *self) { StreamedMediaChannel *parent = self->parent; Client::ChannelInterfaceHoldInterface *holdInterface = parent->interface(); parent->connect(holdInterface, SIGNAL(HoldStateChanged(uint,uint)), SLOT(onLocalHoldStateChanged(uint,uint))); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( holdInterface->GetHoldState(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotLocalHoldState(QDBusPendingCallWatcher*))); } /** * \class StreamedMediaChannel * \ingroup clientchannel * \headerfile TelepathyQt/streamed-media-channel.h * * \brief The StreamedMediaChannel class represents a Telepathy channel of type StreamedMedia. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * StreamedMediaChannel object usable. * * This is currently the same as Channel::FeatureCore, but may change to include more. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. * \sa awaitingLocalAnswer(), awaitingRemoteAnswer(), acceptCall(), hangupCall(), handlerStreamingRequired() */ const Feature StreamedMediaChannel::FeatureCore = Feature(QLatin1String(Channel::staticMetaObject.className()), 0, true); /** * Feature used in order to access media stream specific methods. * * See media stream specific methods' documentation for more details. * \sa streams(), streamsForType(), * requestStream(), requestStreams(), streamAdded() * removeStream(), removeStreams(), streamRemoved(), * streamDirectionChanged(), streamStateChanged(), streamError() */ const Feature StreamedMediaChannel::FeatureStreams = Feature(QLatin1String(StreamedMediaChannel::staticMetaObject.className()), 0); /** * Feature used in order to access local hold state info. * * See local hold state specific methods' documentation for more details. * \sa localHoldState(), localHoldStateReason(), requestHold(), localHoldStateChanged() */ const Feature StreamedMediaChannel::FeatureLocalHoldState = Feature(QLatin1String(StreamedMediaChannel::staticMetaObject.className()), 1); /** * Create a new StreamedMediaChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A StreamedMediaChannelPtr object pointing to the newly created * StreamedMediaChannel object. */ StreamedMediaChannelPtr StreamedMediaChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return StreamedMediaChannelPtr(new StreamedMediaChannel(connection, objectPath, immutableProperties, StreamedMediaChannel::FeatureCore)); } /** * Construct a new StreamedMediaChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on StreamedMediaChannel::FeatureCore. */ StreamedMediaChannel::StreamedMediaChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ StreamedMediaChannel::~StreamedMediaChannel() { delete mPriv; } /** * Return a list of media streams in this channel. * * This methods requires StreamedMediaChannel::FeatureStreams to be ready. * * \return A list of pointers to StreamedMediaStream objects. * \sa streamAdded(), streamRemoved(), streamsForType(), requestStreams() */ StreamedMediaStreams StreamedMediaChannel::streams() const { return mPriv->streams; } /** * Return a list of media streams in this channel for the given type \a type. * * This methods requires StreamedMediaChannel::FeatureStreams to be ready. * * \param type The interested type. * \return A list of pointers to StreamedMediaStream objects. * \sa streamAdded(), streamRemoved(), streams(), requestStreams() */ StreamedMediaStreams StreamedMediaChannel::streamsForType(MediaStreamType type) const { StreamedMediaStreams ret; foreach (const StreamedMediaStreamPtr &stream, mPriv->streams) { if (stream->type() == type) { ret << stream; } } return ret; } /** * Return whether this channel is awaiting local answer. * * This method requires StreamedMediaChannel::FeatureCore to be ready. * * \return \c true if awaiting local answer, \c false otherwise. * \sa awaitingRemoteAnswer(), acceptCall() */ bool StreamedMediaChannel::awaitingLocalAnswer() const { return groupSelfHandleIsLocalPending(); } /** * Return whether this channel is awaiting remote answer. * * This method requires StreamedMediaChannel::FeatureCore to be ready. * * \return \c true if awaiting remote answer, \c false otherwise. * \sa awaitingLocalAnswer() */ bool StreamedMediaChannel::awaitingRemoteAnswer() const { return !groupRemotePendingContacts().isEmpty(); } /** * Accept an incoming call. * * This method requires StreamedMediaChannel::FeatureCore to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa awaitingLocalAnswer(), hangupCall() */ PendingOperation *StreamedMediaChannel::acceptCall() { return groupAddSelfHandle(); } /** * Remove the specified media stream from this channel. * * This methods requires StreamedMediaChannel::FeatureStreams to be ready. * * \param stream Media stream to remove. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa streamRemoved(), streams(), streamsForType() */ PendingOperation *StreamedMediaChannel::removeStream(const StreamedMediaStreamPtr &stream) { if (!stream) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Unable to remove a null stream"), StreamedMediaChannelPtr(this)); } // StreamedMedia.RemoveStreams will trigger StreamedMedia.StreamRemoved // that will proper remove the stream Client::ChannelTypeStreamedMediaInterface *streamedMediaInterface = interface(); return new PendingVoid( streamedMediaInterface->RemoveStreams( UIntList() << stream->id()), StreamedMediaChannelPtr(this)); } /** * Remove the specified media streams from this channel. * * This methods requires StreamedMediaChannel::FeatureStreams to be ready. * * \param streams List of media streams to remove. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa streamRemoved(), streams(), streamsForType() */ PendingOperation *StreamedMediaChannel::removeStreams(const StreamedMediaStreams &streams) { UIntList ids; foreach (const StreamedMediaStreamPtr &stream, streams) { if (!stream) { continue; } ids << stream->id(); } if (ids.isEmpty()) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Unable to remove invalid streams"), StreamedMediaChannelPtr(this)); } Client::ChannelTypeStreamedMediaInterface *streamedMediaInterface = interface(); return new PendingVoid( streamedMediaInterface->RemoveStreams(ids), StreamedMediaChannelPtr(this)); } /** * Request that media streams be established to exchange the given type \a type * of media with the given contact \a contact. * * This methods requires StreamedMediaChannel::FeatureStreams to be ready. * * \return A PendingStreamedMediaStreams which will emit PendingStreamedMediaStreams::finished * when the call has finished. * \sa streamAdded(), streams(), streamsForType() */ PendingStreamedMediaStreams *StreamedMediaChannel::requestStream( const ContactPtr &contact, MediaStreamType type) { return new PendingStreamedMediaStreams(StreamedMediaChannelPtr(this), contact, QList() << type); } /** * Request that media streams be established to exchange the given types \a * types of media with the given contact \a contact. * * This methods requires StreamedMediaChannel::FeatureStreams to be ready. * * \return A PendingStreamedMediaStreams which will emit PendingStreamedMediaStreams::finished * when the call has finished. * \sa streamAdded(), streams(), streamsForType() */ PendingStreamedMediaStreams *StreamedMediaChannel::requestStreams( const ContactPtr &contact, QList types) { return new PendingStreamedMediaStreams(StreamedMediaChannelPtr(this), contact, types); } /** * Request that the call is ended. * * This method requires StreamedMediaChannel::FeatureCore to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *StreamedMediaChannel::hangupCall() { return requestLeave(); } /** * Check whether media streaming by the handler is required for this channel. * * For channels with the #TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING interface, * the main handler of the channel is responsible for doing the actual streaming, for instance by * calling createFarsightChannel(channel) from TelepathyQt-Farsight library * and using the telepathy-farsight API on the resulting TfChannel. * * This method requires StreamedMediaChannel::FeatureCore to be ready. * * \return \c true if required, \c false otherwise. */ bool StreamedMediaChannel::handlerStreamingRequired() const { return interfaces().contains( TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING); } /** * Return the local hold state for this channel. * * Whether the local user has placed this channel on hold. * * This method requires StreamedMediaChannel::FeatureHoldState to be ready. * * \return The local hold state as #LocalHoldState. * \sa requestHold(), localHoldStateChanged() */ LocalHoldState StreamedMediaChannel::localHoldState() const { if (!isReady(FeatureLocalHoldState)) { warning() << "StreamedMediaChannel::localHoldState() used with FeatureLocalHoldState not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD)) { warning() << "StreamedMediaChannel::localHoldStateReason() used with no hold interface"; } return mPriv->localHoldState; } /** * Return the reason why localHoldState() changed to its current value. * * This method requires StreamedMediaChannel::FeatureLocalHoldState to be ready. * * \return The local hold state reason as #LocalHoldStateReason. * \sa requestHold(), localHoldStateChanged() */ LocalHoldStateReason StreamedMediaChannel::localHoldStateReason() const { if (!isReady(FeatureLocalHoldState)) { warning() << "StreamedMediaChannel::localHoldStateReason() used with FeatureLocalHoldState not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD)) { warning() << "StreamedMediaChannel::localHoldStateReason() used with no hold interface"; } return mPriv->localHoldStateReason; } /** * Request that the channel be put on hold (be instructed not to send any media * streams to you) or be taken off hold. * * If the CM can immediately tell that the requested state * change could not possibly succeed, the resulting PendingOperation will fail * with error code #TP_QT_ERROR_NOT_AVAILABLE. * If the requested state is the same as the current state, the resulting * PendingOperation will finish successfully. * * Otherwise, the channel's local hold state will change to * #LocalHoldStatePendingHold or #LocalHoldStatePendingUnhold (as * appropriate), then the resulting PendingOperation will finish successfully. * * The eventual success or failure of the request is indicated by a subsequent * localHoldStateChanged() signal, changing the local hold state to * #LocalHoldStateHeld or #LocalHoldStateUnheld. * * If the channel has multiple streams, and the connection manager succeeds in * changing the hold state of one stream but fails to change the hold state of * another, it will attempt to revert all streams to their previous hold * states. * * If the channel does not support the #TP_QT_IFACE_CHANNEL_INTERFACE_HOLD * interface, the PendingOperation will fail with error code * #TP_QT_ERROR_NOT_IMPLEMENTED. * * \param hold A boolean indicating whether or not the channel should be on hold * \return A PendingOperation which will emit PendingOperation::finished * when the request finishes. * \sa localHoldState(), localHoldStateReason(), localHoldStateChanged() */ PendingOperation *StreamedMediaChannel::requestHold(bool hold) { if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_HOLD)) { warning() << "StreamedMediaChannel::requestHold() used with no hold interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("StreamedMediaChannel does not support hold interface"), StreamedMediaChannelPtr(this)); } Client::ChannelInterfaceHoldInterface *holdInterface = interface(); return new PendingVoid(holdInterface->RequestHold(hold), StreamedMediaChannelPtr(this)); } /** * \fn void StreamedMediaChannel::streamAdded(const Tp::StreamedMediaStreamPtr &stream) * * Emitted when a media stream is added to this channel. * * \param stream The media stream that was added. * \sa streams(), streamsForType(), streamRemoved() */ /** * \fn void StreamedMediaChannel::streamRemoved(const Tp::StreamedMediaStreamPtr &stream) * * Emitted when a media stream is removed from this channel. * * \param stream The media stream that was removed. * \sa streams(), streamsForType(), streamAdded() */ /** * \fn void StreamedMediaChannel::streamDirectionChanged( * const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamDirection direction, * Tp::MediaStreamPendingSend pendingSend) * * Emitted when a media stream direction changes. * * \param stream The media stream which the direction changed. * \param direction The new direction of the stream that changed. * \param pendingSend The new pending send flags of the stream that changed. * \sa StreamedMediaStream::direction() */ /** * \fn void StreamedMediaChannel::streamStateChanged( * const Tp::StreamedMediaStreamPtr &stream, Tp::MediaStreamState state) * * Emitted when a media stream state changes. * * \param stream The media stream which the state changed. * \param state The new state of the stream that changed. * \sa StreamedMediaStream::state() */ /** * \fn void StreamedMediaChannel::streamError( * const Tp::StreamedMediaStreamPtr &stream, * Tp::StreamedMediaStreamError errorCode, const QString &errorMessage) * * Emitted when an error occurs on a media stream. * * \param stream The media stream which the error occurred. * \param errorCode The error code. * \param errorMessage The error message. */ /** * \fn void StreamedMediaChannel::localHoldStateChanged(Tp::LocalHoldState state, Tp::LocalHoldStateReason reason); * * Emitted when the local hold state of this channel changes. * * \param state The new local hold state of this channel. * \param reason The reason why the change occurred. * \sa localHoldState(), localHoldStateReason() */ void StreamedMediaChannel::onStreamReady(PendingOperation *op) { PendingReady *pr = qobject_cast(op); StreamedMediaStreamPtr stream = StreamedMediaStreamPtr::qObjectCast(pr->proxy()); if (op->isError()) { mPriv->incompleteStreams.removeOne(stream); if (!isReady(FeatureStreams) && mPriv->incompleteStreams.size() == 0) { // let's not fail because a stream could not become ready mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true); } return; } // the stream was removed before become ready if (!mPriv->incompleteStreams.contains(stream)) { if (!isReady(FeatureStreams) && mPriv->incompleteStreams.size() == 0) { mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true); } return; } mPriv->incompleteStreams.removeOne(stream); mPriv->streams.append(stream); if (isReady(FeatureStreams)) { emit streamAdded(stream); } if (!isReady(FeatureStreams) && mPriv->incompleteStreams.size() == 0) { mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true); } } void StreamedMediaChannel::gotStreams(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "StreamedMedia.ListStreams failed with" << reply.error().name() << ": " << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, false, reply.error()); watcher->deleteLater(); return; } debug() << "Got reply to StreamedMedia::ListStreams()"; MediaStreamInfoList streamInfoList = reply.value(); if (streamInfoList.size() > 0) { foreach (const MediaStreamInfo &streamInfo, streamInfoList) { StreamedMediaStreamPtr stream = lookupStreamById( streamInfo.identifier); if (!stream) { addStream(streamInfo); } else { onStreamDirectionChanged(streamInfo.identifier, streamInfo.direction, streamInfo.pendingSendFlags); onStreamStateChanged(streamInfo.identifier, streamInfo.state); } } } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true); } watcher->deleteLater(); } void StreamedMediaChannel::onStreamAdded(uint streamId, uint contactHandle, uint streamType) { if (lookupStreamById(streamId)) { debug() << "Received StreamedMedia.StreamAdded for an existing " "stream, ignoring"; return; } MediaStreamInfo streamInfo = { streamId, contactHandle, streamType, MediaStreamStateDisconnected, MediaStreamDirectionReceive, MediaStreamPendingLocalSend }; addStream(streamInfo); } void StreamedMediaChannel::onStreamRemoved(uint streamId) { debug() << "Received StreamedMedia.StreamRemoved for stream" << streamId; StreamedMediaStreamPtr stream = lookupStreamById(streamId); if (!stream) { return; } bool incomplete = mPriv->incompleteStreams.contains(stream); if (incomplete) { mPriv->incompleteStreams.removeOne(stream); } else { mPriv->streams.removeOne(stream); } if (isReady(FeatureStreams) && !incomplete) { emit streamRemoved(stream); } // the stream was added/removed before become ready if (!isReady(FeatureStreams) && mPriv->streams.size() == 0 && mPriv->incompleteStreams.size() == 0) { mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true); } } void StreamedMediaChannel::onStreamDirectionChanged(uint streamId, uint streamDirection, uint streamPendingFlags) { debug() << "Received StreamedMedia.StreamDirectionChanged for stream" << streamId << "with direction changed to" << streamDirection; StreamedMediaStreamPtr stream = lookupStreamById(streamId); if (!stream) { return; } uint oldDirection = stream->direction(); uint oldPendingFlags = stream->pendingSend(); stream->gotDirection(streamDirection, streamPendingFlags); if (oldDirection != streamDirection || oldPendingFlags != streamPendingFlags) { emit streamDirectionChanged(stream, (MediaStreamDirection) streamDirection, (MediaStreamPendingSend) streamPendingFlags); } } void StreamedMediaChannel::onStreamStateChanged(uint streamId, uint streamState) { debug() << "Received StreamedMedia.StreamStateChanged for stream" << streamId << "with state changed to" << streamState; StreamedMediaStreamPtr stream = lookupStreamById(streamId); if (!stream) { return; } uint oldState = stream->state(); stream->gotStreamState(streamState); if (oldState != streamState) { emit streamStateChanged(stream, (MediaStreamState) streamState); } } void StreamedMediaChannel::onStreamError(uint streamId, uint errorCode, const QString &errorMessage) { debug() << "Received StreamedMedia.StreamError for stream" << streamId << "with error code" << errorCode << "and message:" << errorMessage; StreamedMediaStreamPtr stream = lookupStreamById(streamId); if (!stream) { return; } emit streamError(stream, (MediaStreamError) errorCode, errorMessage); } void StreamedMediaChannel::gotLocalHoldState(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "StreamedMedia::Hold::GetHoldState()" " failed with " << reply.error().name() << ": " << reply.error().message(); debug() << "Ignoring error getting hold state and assuming we're not " "on hold"; onLocalHoldStateChanged(mPriv->localHoldState, mPriv->localHoldStateReason); watcher->deleteLater(); return; } debug() << "Got reply to StreamedMedia::Hold::GetHoldState()"; onLocalHoldStateChanged(reply.argumentAt<0>(), reply.argumentAt<1>()); watcher->deleteLater(); } void StreamedMediaChannel::onLocalHoldStateChanged(uint localHoldState, uint localHoldStateReason) { bool changed = false; if (mPriv->localHoldState != static_cast(localHoldState) || mPriv->localHoldStateReason != static_cast(localHoldStateReason)) { changed = true; } mPriv->localHoldState = static_cast(localHoldState); mPriv->localHoldStateReason = static_cast(localHoldStateReason); if (!isReady(FeatureLocalHoldState)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureLocalHoldState, true); } else { if (changed) { emit localHoldStateChanged(mPriv->localHoldState, mPriv->localHoldStateReason); } } } StreamedMediaStreamPtr StreamedMediaChannel::addStream(const MediaStreamInfo &streamInfo) { StreamedMediaStreamPtr stream = StreamedMediaStreamPtr( new StreamedMediaStream(StreamedMediaChannelPtr(this), streamInfo)); mPriv->incompleteStreams.append(stream); connect(stream->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onStreamReady(Tp::PendingOperation*))); return stream; } StreamedMediaStreamPtr StreamedMediaChannel::lookupStreamById(uint streamId) { foreach (const StreamedMediaStreamPtr &stream, mPriv->streams) { if (stream->id() == streamId) { return stream; } } foreach (const StreamedMediaStreamPtr &stream, mPriv->incompleteStreams) { if (stream->id() == streamId) { return stream; } } return StreamedMediaStreamPtr(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/client.cpp0000644000175100017520000000205012530423576022145 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-client-body.hpp" #include "TelepathyQt/_gen/cli-client.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/client.xml0000644000175100017520000000065412530423576022173 0ustar00kaffeinekaffeine00000000000000 Client interfaces telepathy-qt-0.9.6.1/TelepathyQt/channel-class-spec.cpp0000644000175100017520000005002512530423576024337 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/future-constants.h" #include "TelepathyQt/debug-internal.h" namespace Tp { struct TP_QT_NO_EXPORT ChannelClassSpec::Private : public QSharedData { QVariantMap props; }; /** * \class ChannelClassSpec * \ingroup wrappers * \headerfile TelepathyQt/channel-class-spec.h * * \brief The ChannelClassSpec class represents a Telepathy channel class. */ ChannelClassSpec::ChannelClassSpec() { } ChannelClassSpec::ChannelClassSpec(const ChannelClass &cc) : mPriv(new Private) { foreach (QString key, cc.keys()) { setProperty(key, cc.value(key).variant()); } } ChannelClassSpec::ChannelClassSpec(const QVariantMap &props) : mPriv(new Private) { setChannelType(qdbus_cast( props.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")))); setTargetHandleType((HandleType) qdbus_cast( props.value(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")))); foreach (QString propName, props.keys()) { setProperty(propName, props.value(propName)); } } ChannelClassSpec::ChannelClassSpec(const QString &channelType, HandleType targetHandleType, const QVariantMap &otherProperties) : mPriv(new Private) { setChannelType(channelType); setTargetHandleType(targetHandleType); foreach (QString key, otherProperties.keys()) { setProperty(key, otherProperties.value(key)); } } ChannelClassSpec::ChannelClassSpec(const QString &channelType, HandleType targetHandleType, bool requested, const QVariantMap &otherProperties) : mPriv(new Private) { setChannelType(channelType); setTargetHandleType(targetHandleType); setRequested(requested); foreach (QString key, otherProperties.keys()) { setProperty(key, otherProperties.value(key)); } } ChannelClassSpec::ChannelClassSpec(const ChannelClassSpec &other, const QVariantMap &additionalProperties) : mPriv(other.mPriv) { if (!additionalProperties.isEmpty()) { foreach (QString key, additionalProperties.keys()) { setProperty(key, additionalProperties.value(key)); } } } ChannelClassSpec::~ChannelClassSpec() { } bool ChannelClassSpec::isValid() const { return mPriv.constData() != 0 && !(qdbus_cast( mPriv->props.value(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))) .isEmpty()) && mPriv->props.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")); } ChannelClassSpec &ChannelClassSpec::operator=(const ChannelClassSpec &other) { if (this == &other) { return *this; } this->mPriv = other.mPriv; return *this; } bool ChannelClassSpec::isSubsetOf(const ChannelClassSpec &other) const { if (!mPriv) { // Invalid instances have no properties - hence they're subset of anything return true; } foreach (QString propName, mPriv->props.keys()) { if (!other.hasProperty(propName)) { return false; } else if (property(propName) != other.property(propName)) { return false; } } // other had all of the properties we have and they all had the same values return true; } bool ChannelClassSpec::matches(const QVariantMap &immutableProperties) const { // We construct a ChannelClassSpec for comparison so the StreamedMedia props are normalized // consistently etc return this->isSubsetOf(ChannelClassSpec(immutableProperties)); } bool ChannelClassSpec::hasProperty(const QString &qualifiedName) const { return mPriv.constData() != 0 ? mPriv->props.contains(qualifiedName) : false; } QVariant ChannelClassSpec::property(const QString &qualifiedName) const { return mPriv.constData() != 0 ? mPriv->props.value(qualifiedName) : QVariant(); } void ChannelClassSpec::setProperty(const QString &qualifiedName, const QVariant &value) { if (mPriv.constData() == 0) { mPriv = new Private; } mPriv->props.insert(qualifiedName, value); } void ChannelClassSpec::unsetProperty(const QString &qualifiedName) { if (mPriv.constData() == 0) { // No properties set for sure, so don't have to unset any return; } mPriv->props.remove(qualifiedName); } QVariantMap ChannelClassSpec::allProperties() const { return mPriv.constData() != 0 ? mPriv->props : QVariantMap(); } ChannelClass ChannelClassSpec::bareClass() const { ChannelClass cc; if (!isValid()) { warning() << "Tried to convert an invalid ChannelClassSpec to a ChannelClass"; return ChannelClass(); } QVariantMap props = mPriv->props; foreach (QString propName, props.keys()) { QVariant value = props.value(propName); cc.insert(propName, QDBusVariant(value)); } return cc; } ChannelClassSpec ChannelClassSpec::textChat(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_TEXT, HandleTypeContact); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::textChatroom(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_TEXT, HandleTypeRoom); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::unnamedTextChat(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_TEXT, HandleTypeNone); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::mediaCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.isValid()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_CALL, HandleTypeContact); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::audioCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.isValid()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_CALL, HandleTypeContact); spec.setCallInitialAudioFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::videoCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.isValid()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_CALL, HandleTypeContact); spec.setCallInitialVideoFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::videoCallWithAudio(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.isValid()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_CALL, HandleTypeContact); spec.setCallInitialAudioFlag(); spec.setCallInitialVideoFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::streamedMediaCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeContact); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::streamedMediaAudioCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeContact); spec.setStreamedMediaInitialAudioFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::streamedMediaVideoCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeContact); spec.setStreamedMediaInitialVideoFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::streamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeContact); spec.setStreamedMediaInitialAudioFlag(); spec.setStreamedMediaInitialVideoFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::unnamedStreamedMediaCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeNone); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::unnamedStreamedMediaAudioCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeNone); spec.setStreamedMediaInitialAudioFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::unnamedStreamedMediaVideoCall(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeNone); spec.setStreamedMediaInitialVideoFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::unnamedStreamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, HandleTypeNone); spec.setStreamedMediaInitialAudioFlag(); spec.setStreamedMediaInitialVideoFlag(); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } Tp::ChannelClassSpec ChannelClassSpec::serverAuthentication(const QVariantMap &additionalProperties) { static Tp::ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION, HandleTypeNone); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::roomList(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST, HandleTypeNone); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::outgoingFileTransfer(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER, HandleTypeContact, true); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::incomingFileTransfer(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER, HandleTypeContact, false); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::outgoingStreamTube(const QString &service, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE, HandleTypeContact, true); } QVariantMap props = additionalProperties; if (!service.isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"), service); } if (props.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, props); } } ChannelClassSpec ChannelClassSpec::incomingStreamTube(const QString &service, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE, HandleTypeContact, false); } QVariantMap props = additionalProperties; if (!service.isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"), service); } if (props.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, props); } } ChannelClassSpec ChannelClassSpec::outgoingRoomStreamTube(const QString &service, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE, HandleTypeRoom, true); } QVariantMap props = additionalProperties; if (!service.isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"), service); } if (props.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, props); } } ChannelClassSpec ChannelClassSpec::incomingRoomStreamTube(const QString &service, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE, HandleTypeRoom, false); } QVariantMap props = additionalProperties; if (!service.isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"), service); } if (props.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, props); } } ChannelClassSpec ChannelClassSpec::outgoingDBusTube(const QString &serviceName, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.isValid()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE, HandleTypeContact, true); } if (!serviceName.isEmpty()) { spec.setProperty(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::incomingDBusTube(const QString &serviceName, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.isValid()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE, HandleTypeContact, false); } if (!serviceName.isEmpty()) { spec.setProperty(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } ChannelClassSpec ChannelClassSpec::outgoingRoomDBusTube(const QString &serviceName, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE, HandleTypeRoom, true); } QVariantMap props = additionalProperties; if (!serviceName.isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); } if (props.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, props); } } ChannelClassSpec ChannelClassSpec::incomingRoomDBusTube(const QString &serviceName, const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE, HandleTypeRoom, false); } QVariantMap props = additionalProperties; if (!serviceName.isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"), serviceName); } if (props.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, props); } } ChannelClassSpec ChannelClassSpec::contactSearch(const QVariantMap &additionalProperties) { static ChannelClassSpec spec; if (!spec.mPriv.constData()) { spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, HandleTypeNone); } if (additionalProperties.isEmpty()) { return spec; } else { return ChannelClassSpec(spec, additionalProperties); } } /** * \class ChannelClassSpecList * \ingroup wrappers * \headerfile TelepathyQt/channel-class-spec.h * * \brief The ChannelClassSpecList class represents a list of ChannelClassSpec. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelClassSpecList0000644000175100017520000000041012530423576024111 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelClassSpecList_HEADER_GUARD_ #define _TelepathyQt_ChannelClassSpecList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Feature0000644000175100017520000000034312530423576021504 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Feature_HEADER_GUARD_ #define _TelepathyQt_Feature_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-manager-internal.h0000644000175100017520000001254112530423576025723 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_manager_internal_h_HEADER_GUARD_ #define _TelepathyQt_connection_manager_internal_h_HEADER_GUARD_ #include #include #include #include #include #include namespace Tp { class ConnectionManager; class ReadinessHelper; struct TP_QT_NO_EXPORT ConnectionManager::Private { Private(ConnectionManager *parent, const QString &name, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory); ~Private(); bool parseConfigFile(); static void introspectMain(Private *self); void introspectProtocolsLegacy(); void introspectParametersLegacy(); static QString makeBusName(const QString &name); static QString makeObjectPath(const QString &name); class PendingNames; class ProtocolWrapper; // Public object ConnectionManager *parent; ConnectionManagerLowlevelPtr lowlevel; QString name; // Instance of generated interface class Client::ConnectionManagerInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; ConnectionFactoryConstPtr connFactory; ChannelFactoryConstPtr chanFactory; ContactFactoryConstPtr contactFactory; // Introspection QQueue parametersQueue; ProtocolInfoList protocols; QSet > wrappers; }; struct TP_QT_NO_EXPORT ConnectionManagerLowlevel::Private { Private(ConnectionManager *cm) : cm(cm) { } WeakPtr cm; }; class TP_QT_NO_EXPORT ConnectionManager::Private::PendingNames : public PendingStringList { Q_OBJECT public: PendingNames(const QDBusConnection &bus); ~PendingNames() {}; private Q_SLOTS: void onCallFinished(QDBusPendingCallWatcher *); void continueProcessing(); private: void invokeMethod(const QLatin1String &method); void parseResult(const QStringList &names); QQueue mMethodsQueue; QSet mResult; QDBusConnection mBus; }; class TP_QT_NO_EXPORT ConnectionManager::Private::ProtocolWrapper : public StatelessDBusProxy, public OptionalInterfaceFactory { Q_OBJECT public: static const Feature FeatureCore; ProtocolWrapper(const ConnectionManagerPtr &cm, const QString &objectPath, const QString &name, const QVariantMap &props); ~ProtocolWrapper(); ProtocolInfo info() const { return mInfo; } inline Client::ProtocolInterface *baseInterface() const { return interface(); } inline Client::ProtocolInterfaceAvatarsInterface *avatarsInterface() const { return interface(); } inline Client::ProtocolInterfacePresenceInterface *presenceInterface() const { return interface(); } inline Client::ProtocolInterfaceAddressingInterface *addressingInterface() const { return interface(); } private Q_SLOTS: void gotMainProperties(Tp::PendingOperation *op); void gotAvatarsProperties(Tp::PendingOperation *op); void gotPresenceProperties(Tp::PendingOperation *op); void gotAddressingProperties(Tp::PendingOperation *op); private: static void introspectMain(ProtocolWrapper *self); void introspectMainProperties(); void introspectInterfaces(); void introspectAvatars(); void introspectPresence(); void introspectAddressing(); void continueIntrospection(); QVariantMap qualifyProperties(const QString &ifaceName, const QVariantMap &unqualifiedProps); void fillRCCs(); bool extractImmutableProperties(); void extractMainProperties(const QVariantMap &props); void extractAvatarsProperties(const QVariantMap &props); void extractPresenceProperties(const QVariantMap &props); void extractAddressingProperties(const QVariantMap &props); ReadinessHelper *mReadinessHelper; ProtocolInfo mInfo; QVariantMap mImmutableProps; bool mHasMainProps; bool mHasAvatarsProps; bool mHasPresenceProps; bool mHasAddressingProps; QQueue introspectQueue; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ContactManager0000644000175100017520000000037112530423576023000 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ContactManager_HEADER_GUARD_ #define _TelepathyQt_ContactManager_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface0000644000175100017520000000055412530423576034662 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/DBusDaemonInterface0000644000175100017520000000037012530423576023713 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusDaemonInterface_HEADER_GUARD_ #define _TelepathyQt_DBusDaemonInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/incoming-stream-tube-channel.h0000644000175100017520000000446212530423576026004 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_incoming_stream_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_incoming_stream_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include class QIODevice; namespace Tp { class PendingStreamTubeConnection; class TP_QT_EXPORT IncomingStreamTubeChannel : public StreamTubeChannel { Q_OBJECT Q_DISABLE_COPY(IncomingStreamTubeChannel) public: static const Feature FeatureCore; static IncomingStreamTubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~IncomingStreamTubeChannel(); PendingStreamTubeConnection *acceptTubeAsTcpSocket(); PendingStreamTubeConnection *acceptTubeAsTcpSocket(const QHostAddress &allowedAddress, quint16 allowedPort); PendingStreamTubeConnection *acceptTubeAsUnixSocket(bool requireCredentials = false); protected: IncomingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = IncomingStreamTubeChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void onNewLocalConnection(uint connectionId); private: struct Private; friend class PendingStreamTubeConnection; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionManagerLowlevel0000644000175100017520000000043112530423576025213 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionManagerLowlevel_HEADER_GUARD #define _TelepathyQt_ConnectionManagerLowlevel_HEADER_GUARD #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountFactory0000644000175100017520000000037112530423576023036 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountFactory_HEADER_GUARD_ #define _TelepathyQt_AccountFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceGroupInterface0000644000175100017520000000042112530423576026135 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceGroupInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceGroupInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AbstractClientApprover0000644000175100017520000000041112530423576024526 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractClientApprover_HEADER_GUARD_ #define _TelepathyQt_AbstractClientApprover_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PresenceSpecList0000644000175100017520000000036612530423576023331 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PresenceSpecList_HEADER_GUARD_ #define _TelepathyQt_PresenceSpecList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountInterfaceAvatarInterface0000644000175100017520000000042312530423576026305 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountInterfaceAvatarInterface_HEADER_GUARD_ #define _TelepathyQt_AccountInterfaceAvatarInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/base-connection-manager.cpp0000644000175100017520000003256312530423576025362 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/base-connection-manager-internal.h" #include "TelepathyQt/_gen/base-connection-manager.moc.hpp" #include "TelepathyQt/_gen/base-connection-manager-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT BaseConnectionManager::Private { Private(BaseConnectionManager *parent, const QDBusConnection &dbusConnection, const QString &name) : parent(parent), name(name), adaptee(new BaseConnectionManager::Adaptee(dbusConnection, parent)) { } BaseConnectionManager *parent; QString name; BaseConnectionManager::Adaptee *adaptee; QHash protocols; QSet connections; }; BaseConnectionManager::Adaptee::Adaptee(const QDBusConnection &dbusConnection, BaseConnectionManager *cm) : QObject(cm), mCM(cm) { mAdaptor = new Service::ConnectionManagerAdaptor(dbusConnection, this, cm->dbusObject()); } BaseConnectionManager::Adaptee::~Adaptee() { } QStringList BaseConnectionManager::Adaptee::interfaces() const { // No interfaces suitable for listing in this property are currently defined; // it's provided as a hook for possible future functionality. return QStringList(); } ProtocolPropertiesMap BaseConnectionManager::Adaptee::protocols() const { ProtocolPropertiesMap ret; foreach (const BaseProtocolPtr &protocol, mCM->protocols()) { ret.insert(protocol->name(), protocol->immutableProperties()); } return ret; } void BaseConnectionManager::Adaptee::getParameters(const QString &protocolName, const Tp::Service::ConnectionManagerAdaptor::GetParametersContextPtr &context) { if (!checkValidProtocolName(protocolName)) { context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, protocolName + QLatin1String(" is not a valid protocol name")); return; } if (!mCM->hasProtocol(protocolName)) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("unknown protocol ") + protocolName); return; } BaseProtocolPtr protocol = mCM->protocol(protocolName); ParamSpecList ret; foreach (const ProtocolParameter ¶m, protocol->parameters()) { ParamSpec paramSpec = param.bareParameter(); if (!(paramSpec.flags & ConnMgrParamFlagHasDefault)) { // we cannot pass QVariant::Invalid over D-Bus, lets build a dummy value // that should be ignored according to the spec paramSpec.defaultValue = QDBusVariant( parseValueWithDBusSignature(QString(), paramSpec.signature)); } ret << paramSpec; } context->setFinished(ret); } void BaseConnectionManager::Adaptee::listProtocols( const Tp::Service::ConnectionManagerAdaptor::ListProtocolsContextPtr &context) { QStringList ret; QList protocols = mCM->protocols(); foreach (const BaseProtocolPtr &protocol, protocols) { ret << protocol->name(); } context->setFinished(ret); } void BaseConnectionManager::Adaptee::requestConnection(const QString &protocolName, const QVariantMap ¶meters, const Tp::Service::ConnectionManagerAdaptor::RequestConnectionContextPtr &context) { if (!checkValidProtocolName(protocolName)) { context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, protocolName + QLatin1String(" is not a valid protocol name")); return; } if (!mCM->hasProtocol(protocolName)) { context->setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("unknown protocol ") + protocolName); return; } BaseProtocolPtr protocol = mCM->protocol(protocolName); DBusError error; BaseConnectionPtr connection; connection = protocol->createConnection(parameters, &error); if (!connection) { context->setFinishedWithError(error.name(), error.message()); return; } if (!connection->registerObject(&error)) { context->setFinishedWithError(error.name(), error.message()); return; } mCM->addConnection(connection); emit newConnection(connection->busName(), QDBusObjectPath(connection->objectPath()), protocol->name()); context->setFinished(connection->busName(), QDBusObjectPath(connection->objectPath())); } /** * \class BaseConnectionManager * \ingroup servicecm * \headerfile TelepathyQt/base-connection-manager.h * * \brief Base class for connection manager implementations. */ /** * Constructs a new BaseConnectionManager object that implements a connection manager * on the given \a dbusConnection and has the given \a name. * * \param dbusConnection The QDBusConnection to use. * \param name The name of the connection manager. */ BaseConnectionManager::BaseConnectionManager(const QDBusConnection &dbusConnection, const QString &name) : DBusService(dbusConnection), mPriv(new Private(this, dbusConnection, name)) { } /** * Class destructor. */ BaseConnectionManager::~BaseConnectionManager() { delete mPriv; } /** * Return the connection manager's name, as given on the constructor. * * \return The connection manager's name. */ QString BaseConnectionManager::name() const { return mPriv->name; } /** * Return the immutable properties of this connection manager object. * * Immutable properties cannot change after the object has been registered * on the bus with registerObject(). * * \return The immutable properties of this connection manager object. */ QVariantMap BaseConnectionManager::immutableProperties() const { QVariantMap ret; ret.insert(TP_QT_IFACE_CONNECTION_MANAGER + QLatin1String(".Protocols"), QVariant::fromValue(mPriv->adaptee->protocols())); return ret; } /** * Return a list of all protocols that this connection manager implements. * * This property is immutable and cannot change after the connection manager * has been registered on the bus with registerObject(). * * \return A list of all protocols that this connection manager implements. * \sa addProtocol(), hasProtocol(), protocol() */ QList BaseConnectionManager::protocols() const { return mPriv->protocols.values(); } /** * Return a pointer to the BaseProtocol instance that implements the protocol * with the given \a protocolName, or a null BaseProtocolPtr if no such * protocol has been added to the connection manager. * * \param protocolName The name of the protocol in interest. * \return The BaseProtocol instance that implements the protocol with * the given \a protocolName. * \sa hasProtocol(), protocols(), addProtocol() */ BaseProtocolPtr BaseConnectionManager::protocol(const QString &protocolName) const { return mPriv->protocols.value(protocolName); } /** * Return whether a protocol with the given \a protocolName has been * added to the connection manager. * * \param protocolName The name of the protocol in interest. * \return \c true if a protocol with the given \a protocolName has been * added to the connection manager, or \c false otherwise. * \sa addProtocol(), protocol(), protocols() */ bool BaseConnectionManager::hasProtocol(const QString &protocolName) const { return mPriv->protocols.contains(protocolName); } /** * Add a new \a protocol to the list of protocols that this connection * manager implements. * * Note that you cannot add new protocols after the connection manager * has been registered on the bus with registerObject(). In addition, * you cannot add two protocols with the same name. If any of these * conditions is not met, this function will return false and print * a suitable warning. * * \param protocol The protocol to add. * \return \c true on success or \c false otherwise. */ bool BaseConnectionManager::addProtocol(const BaseProtocolPtr &protocol) { if (isRegistered()) { warning() << "Unable to add protocol" << protocol->name() << "- CM already registered"; return false; } if (protocol->dbusConnection().name() != dbusConnection().name()) { warning() << "Unable to add protocol" << protocol->name() << "- protocol must have the same D-Bus connection as the owning CM"; return false; } if (protocol->isRegistered()) { warning() << "Unable to add protocol" << protocol->name() << "- protocol already registered"; return false; } if (mPriv->protocols.contains(protocol->name())) { warning() << "Unable to add protocol" << protocol->name() << "- another protocol with same name already added"; return false; } debug() << "Protocol" << protocol->name() << "added to CM"; mPriv->protocols.insert(protocol->name(), protocol); return true; } /** * Register this connection manager on the bus. * * A connection manager can only be registered once, and it * should be registered only after all the protocols it implements * have been added with addProtocol(). * * If \a error is passed, any D-Bus error that may occur will * be stored there. * * \param error A pointer to an empty DBusError where any * possible D-Bus error will be stored. * \return \c true on success and \c false if there was an error * or this connection manager is already registered. * \sa isRegistered() */ bool BaseConnectionManager::registerObject(DBusError *error) { if (isRegistered()) { return true; } QString busName = TP_QT_CONNECTION_MANAGER_BUS_NAME_BASE; busName.append(mPriv->name); QString objectPath = TP_QT_CONNECTION_MANAGER_OBJECT_PATH_BASE; objectPath.append(mPriv->name); DBusError _error; bool ret = registerObject(busName, objectPath, &_error); if (!ret && error) { error->set(_error.name(), _error.message()); } return ret; } /** * Reimplemented from DBusService. */ bool BaseConnectionManager::registerObject(const QString &busName, const QString &objectPath, DBusError *error) { if (isRegistered()) { return true; } // register protocols foreach (const BaseProtocolPtr &protocol, protocols()) { QString escapedProtocolName = protocol->name(); escapedProtocolName.replace(QLatin1Char('-'), QLatin1Char('_')); QString protoObjectPath = QString( QLatin1String("%1/%2")).arg(objectPath).arg(escapedProtocolName); debug() << "Registering protocol" << protocol->name() << "at path" << protoObjectPath << "for CM" << objectPath << "at bus name" << busName; if (!protocol->registerObject(busName, protoObjectPath, error)) { return false; } } debug() << "Registering CM" << objectPath << "at bus name" << busName; // Only call DBusService::registerObject after registering the protocols as we don't want to // advertise isRegistered if some protocol cannot be registered if (!DBusService::registerObject(busName, objectPath, error)) { return false; } return true; } /** * Return a list of all connections that have currently been made. * * \return A list of all connections that have currently been made. */ QList BaseConnectionManager::connections() const { return mPriv->connections.toList(); } void BaseConnectionManager::addConnection(const BaseConnectionPtr &connection) { Q_ASSERT(!mPriv->connections.contains(connection)); mPriv->connections.insert(connection); connect(connection.data(), SIGNAL(disconnected()), SLOT(removeConnection())); emit newConnection(connection); } void BaseConnectionManager::removeConnection() { BaseConnectionPtr connection = BaseConnectionPtr( qobject_cast(sender())); Q_ASSERT(connection); Q_ASSERT(mPriv->connections.contains(connection)); mPriv->connections.remove(connection); } /** * \fn void newConnection(const BaseConnectionPtr &connection) * * Emitted when a new connection has been requested by a client and * the connection object has been constructed. * * To handle the connection request before a connection has been created, * use BaseProtocol::setCreateConnectionCallback(). * * \param connection The newly created connection */ } telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceSASLAuthenticationInterface0000644000175100017520000000045312530423576030510 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceSASLAuthenticationInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceSASLAuthenticationInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/object.h0000644000175100017520000000304412530423576021606 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_object_h_HEADER_GUARD_ #define _TelepathyQt_object_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include namespace Tp { class TP_QT_EXPORT Object : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(Object) public: virtual ~Object(); Q_SIGNALS: void propertyChanged(const QString &propertyName); protected: Object(); void notify(const char *propertyName); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/TelepathyQt-uninstalled.pc.in0000644000175100017520000000137712530423576025713 0ustar00kaffeinekaffeine00000000000000prefix=/nonexistent exec_prefix=/nonexistent abs_top_builddir=${CMAKE_BINARY_DIR} abs_top_srcdir=${CMAKE_SOURCE_DIR} Name: TelepathyQt${QT_VERSION_MAJOR} (uninstalled copy) Description: Qt utility library for the Telepathy framework Version: ${PACKAGE_VERSION} Requires.private: Qt${QT_VERSION_PC}Core >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Core < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}DBus >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}DBus < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}Network >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Network < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}Xml >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Xml < ${QT_MAX_VERSION} Libs: ${CMAKE_BINARY_DIR}/TelepathyQt/libtelepathy-qt${QT_VERSION_MAJOR}.so Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR} telepathy-qt-0.9.6.1/TelepathyQt/RequestableChannelClassSpec0000644000175100017520000000044212530423576025457 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_RequestableChannelClassSpec_HEADER_GUARD_ #define _TelepathyQt_RequestableChannelClassSpec_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceContactsInterface0000644000175100017520000000044012530423576027347 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceContactsInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceContactsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountManager0000644000175100017520000000037112530423576023001 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountManager_HEADER_GUARD_ #define _TelepathyQt_AccountManager_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-capabilities.cpp0000644000175100017520000002251512530423576025465 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include namespace Tp { /** * \class ConnectionCapabilities * \ingroup clientconn * \headerfile TelepathyQt/connection-capabilities.h * * \brief The ConnectionCapabilities class represents the capabilities of a * Connection. */ /** * Construct a new ConnectionCapabilities object. */ ConnectionCapabilities::ConnectionCapabilities() : CapabilitiesBase() { } /** * Construct a new ConnectionCapabilities object using the give \a rccs. * * \param rccs RequestableChannelClassList representing the capabilities of a * Connection. */ ConnectionCapabilities::ConnectionCapabilities(const RequestableChannelClassList &rccs) : CapabilitiesBase(rccs, false) { } /** * Construct a new ConnectionCapabilities object using the give \a rccSpecs. * * \param rccSpecs RequestableChannelClassSpecList representing the capabilities of a * Connection. */ ConnectionCapabilities::ConnectionCapabilities(const RequestableChannelClassSpecList &rccSpecs) : CapabilitiesBase(rccSpecs, false) { } /** * Class destructor. */ ConnectionCapabilities::~ConnectionCapabilities() { } /** * Return true if named text chatrooms can be joined by providing a * chatroom identifier. * * If the protocol is such that chatrooms can be joined, but only via * a more elaborate D-Bus API than normal (because more information is needed), * then this method will return false. * * \return \c true if Account::ensureTextChatroom() can be expected to work. */ bool ConnectionCapabilities::textChatrooms() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::textChatroom())) { return true; } } return false; } /** * Return whether creating conference media calls is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::conferenceStreamedMediaCalls() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::conferenceStreamedMediaCall())) { return true; } } return false; } /** * Return whether creating conference media calls is supported. * * This method will also check whether inviting new contacts when creating a conference media call * channel by providing additional members to initial invitees (as opposed to merging several * channels into one new conference channel) is supported. * * If providing additional members is supported, it is also possible to request conference media * calls with fewer than two (even zero) already established media calls. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::conferenceStreamedMediaCallsWithInvitees() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::conferenceStreamedMediaCallWithInvitees())) { return true; } } return false; } /** * Return whether creating conference text chats is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::conferenceTextChats() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::conferenceTextChat())) { return true; } } return false; } /** * Return whether creating conference text chats is supported. * * This method will also check whether inviting new contacts when creating a conference text chat * channel by providing additional members to initial invitees (as opposed to merging several * channels into one new conference channel) is supported. * * If providing additional members is supported, it is also possible to request conference text * chats with fewer than two (even zero) already established text chats. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::conferenceTextChatsWithInvitees() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::conferenceTextChatWithInvitees())) { return true; } } return false; } /** * Return whether creating conference text chat rooms is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::conferenceTextChatrooms() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::conferenceTextChatroom())) { return true; } } return false; } /** * Return whether creating conference text chat rooms is supported. * * This method will also check whether inviting new contacts when creating a conference text chat * room channel by providing additional members to initial invitees (as opposed to merging several * channels into one new conference channel) is supported. * * If providing additional members is supported, it is also possible to request conference text * chat rooms with fewer than two (even zero) already established text chat rooms. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::conferenceTextChatroomsWithInvitees() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::conferenceTextChatroomWithInvitees())) { return true; } } return false; } /** * Return whether creating a ContactSearch channel is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::contactSearches() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::contactSearch())) { return true; } } return false; } /** * Return whether creating a ContactSearch channel specifying a server is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::contactSearchesWithSpecificServer() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::contactSearchWithSpecificServer())) { return true; } } return false; } /** * Return whether creating a ContactSearch channel specifying a limit is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::contactSearchesWithLimit() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::contactSearchWithLimit())) { return true; } } return false; } /** * Return whether creating a DBusTube channel by providing a contact identifier is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::dbusTubes() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::dbusTube())) { return true; } } return false; } /** * Return whether creating a StreamTube channel by providing a contact identifier is supported. * * \return \c true if supported, \c false otherwise. */ bool ConnectionCapabilities::streamTubes() const { RequestableChannelClassSpecList rccSpecs = allClassSpecs(); foreach (const RequestableChannelClassSpec &rccSpec, rccSpecs) { if (rccSpec.supports(RequestableChannelClassSpec::streamTube())) { return true; } } return false; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/Message0000644000175100017520000000034312530423576021475 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Message_HEADER_GUARD_ #define _TelepathyQt_Message_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-channel.h0000644000175100017520000000637312530423576024206 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_stream_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_stream_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include class QHostAddress; namespace Tp { class TP_QT_EXPORT StreamTubeChannel : public TubeChannel { Q_OBJECT Q_DISABLE_COPY(StreamTubeChannel) public: static const Feature FeatureCore; static const Feature FeatureConnectionMonitoring; static StreamTubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~StreamTubeChannel(); QString service() const; bool supportsIPv4SocketsOnLocalhost() const; bool supportsIPv4SocketsWithSpecifiedAddress() const; bool supportsIPv6SocketsOnLocalhost() const; bool supportsIPv6SocketsWithSpecifiedAddress() const; bool supportsUnixSocketsOnLocalhost() const; bool supportsUnixSocketsWithCredentials() const; bool supportsAbstractUnixSocketsOnLocalhost() const; bool supportsAbstractUnixSocketsWithCredentials() const; QSet connections() const; SocketAddressType addressType() const; QPair< QHostAddress, quint16 > ipAddress() const; QString localAddress() const; Q_SIGNALS: void newConnection(uint connectionId); void connectionClosed(uint connectionId, const QString &errorName, const QString &errorMessage); protected: StreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = StreamTubeChannel::FeatureCore); void addConnection(uint connection); void removeConnection(uint connection, const QString &error, const QString &message); void setAddressType(SocketAddressType type); SocketAccessControl accessControl() const; void setAccessControl(SocketAccessControl accessControl); void setIpAddress(const QPair &address); void setLocalAddress(const QString &address); bool isDroppingConnections() const; private Q_SLOTS: TP_QT_NO_EXPORT void gotStreamTubeProperties(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onConnectionClosed(uint, const QString &, const QString &); TP_QT_NO_EXPORT void dropConnections(); private: struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/CallContentMediaDescriptionInterfaceRTCPFeedbackInterface0000644000175100017520000000053612530423576033227 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentMediaDescriptionInterfaceRTCPFeedbackInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentMediaDescriptionInterfaceRTCPFeedbackInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-debug-message-list.h0000644000175100017520000000327012530423576025444 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011-2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_debug_message_list_h_HEADER_GUARD_ #define _TelepathyQt_pending_debug_message_list_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT PendingDebugMessageList : public Tp::PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingDebugMessageList) public: virtual ~PendingDebugMessageList(); DebugMessageList result() const; private Q_SLOTS: TP_QT_NO_EXPORT void watcherFinished(QDBusPendingCallWatcher*); private: friend class DebugReceiver; TP_QT_NO_EXPORT PendingDebugMessageList(const QDBusPendingCall &call, const SharedPtr &object); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/contact-manager.cpp0000644000175100017520000016534312530423576023751 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/contact-manager-internal.h" #include "TelepathyQt/_gen/contact-manager.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/future-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ContactManager::Private { Private(ContactManager *parent, Connection *connection); ~Private(); // avatar specific methods bool buildAvatarFileName(QString token, bool createDir, QString &avatarFileName, QString &mimeTypeFileName); Features realFeatures(const Features &features); QSet interfacesForFeatures(const Features &features); ContactManager *parent; WeakPtr connection; ContactManager::Roster *roster; QHash > contacts; QHash tracking; Features supportedFeatures; // avatar QSet requestAvatarsQueue; bool requestAvatarsIdle; // contact info PendingRefreshContactInfo *refreshInfoOp; }; ContactManager::Private::Private(ContactManager *parent, Connection *connection) : parent(parent), connection(connection), roster(new ContactManager::Roster(parent)), requestAvatarsIdle(false), refreshInfoOp(0) { } ContactManager::Private::~Private() { delete refreshInfoOp; delete roster; } bool ContactManager::Private::buildAvatarFileName(QString token, bool createDir, QString &avatarFileName, QString &mimeTypeFileName) { QString cacheDir = QString(QLatin1String(qgetenv("XDG_CACHE_HOME"))); if (cacheDir.isEmpty()) { cacheDir = QString(QLatin1String("%1/.cache")).arg(QLatin1String(qgetenv("HOME"))); } ConnectionPtr conn(parent->connection()); QString path = QString(QLatin1String("%1/telepathy/avatars/%2/%3")). arg(cacheDir).arg(conn->cmName()).arg(conn->protocolName()); if (createDir && !QDir().mkpath(path)) { return false; } avatarFileName = QString(QLatin1String("%1/%2")).arg(path).arg(escapeAsIdentifier(token)); mimeTypeFileName = QString(QLatin1String("%1.mime")).arg(avatarFileName); return true; } Features ContactManager::Private::realFeatures(const Features &features) { Features ret(features); ret.unite(parent->connection()->contactFactory()->features()); // FeatureAvatarData depends on FeatureAvatarToken if (ret.contains(Contact::FeatureAvatarData) && !ret.contains(Contact::FeatureAvatarToken)) { ret.insert(Contact::FeatureAvatarToken); } return ret; } QSet ContactManager::Private::interfacesForFeatures(const Features &features) { Features supported = parent->supportedFeatures(); QSet ret; foreach (const Feature &feature, features) { parent->ensureTracking(feature); if (supported.contains(feature)) { // Only query interfaces which are reported as supported to not get an error ret.insert(parent->featureToInterface(feature)); } } return ret; } ContactManager::PendingRefreshContactInfo::PendingRefreshContactInfo(const ConnectionPtr &conn) : PendingOperation(conn), mConn(conn) { } ContactManager::PendingRefreshContactInfo::~PendingRefreshContactInfo() { } void ContactManager::PendingRefreshContactInfo::addContact(Contact *contact) { mToRequest.insert(contact->handle()[0]); } void ContactManager::PendingRefreshContactInfo::refreshInfo() { Q_ASSERT(!mToRequest.isEmpty()); if (!mConn->isValid()) { setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid")); return; } if (!mConn->hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO)) { setFinishedWithError(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Connection does not support ContactInfo interface")); return; } debug() << "Calling ContactInfo.RefreshContactInfo for" << mToRequest.size() << "handles"; Client::ConnectionInterfaceContactInfoInterface *contactInfoInterface = mConn->interface(); Q_ASSERT(contactInfoInterface); PendingVoid *nested = new PendingVoid( contactInfoInterface->RefreshContactInfo(mToRequest.toList()), mConn); connect(nested, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRefreshInfoFinished(Tp::PendingOperation*))); } void ContactManager::PendingRefreshContactInfo::onRefreshInfoFinished(PendingOperation *op) { if (op->isError()) { warning() << "ContactInfo.RefreshContactInfo failed with" << op->errorName() << "-" << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); } else { debug() << "Got reply to ContactInfo.RefreshContactInfo"; setFinished(); } } /** * \class ContactManager * \ingroup clientconn * \headerfile TelepathyQt/contact-manager.h * * \brief The ContactManager class is responsible for managing contacts. * * See \ref async_model, \ref shared_ptr */ /** * Construct a new ContactManager object. * * \param connection The connection owning this ContactManager. */ ContactManager::ContactManager(Connection *connection) : Object(), mPriv(new Private(this, connection)) { } /** * Class destructor. */ ContactManager::~ContactManager() { delete mPriv; } /** * Return the connection owning this ContactManager. * * \return A pointer to the Connection object. */ ConnectionPtr ContactManager::connection() const { return ConnectionPtr(mPriv->connection); } /** * Return the features that are expected to work on contacts on this ContactManager connection. * * This method requires Connection::FeatureCore to be ready. * * \return The supported features as a set of Feature objects. */ Features ContactManager::supportedFeatures() const { if (mPriv->supportedFeatures.isEmpty() && connection()->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS)) { Features allFeatures = Features() << Contact::FeatureAlias << Contact::FeatureAvatarToken << Contact::FeatureAvatarData << Contact::FeatureSimplePresence << Contact::FeatureCapabilities << Contact::FeatureLocation << Contact::FeatureInfo << Contact::FeatureRosterGroups << Contact::FeatureAddresses << Contact::FeatureClientTypes; QStringList interfaces = connection()->lowlevel()->contactAttributeInterfaces(); foreach (const Feature &feature, allFeatures) { if (interfaces.contains(featureToInterface(feature))) { mPriv->supportedFeatures.insert(feature); } } debug() << mPriv->supportedFeatures.size() << "contact features supported using" << this; } return mPriv->supportedFeatures; } /** * Return the progress made in retrieving the contact list. * * Change notification is via the stateChanged() signal. * * This method requires Connection::FeatureRoster to be ready. * * \return The contact list state as #ContactListState. * \sa stateChanged() */ ContactListState ContactManager::state() const { return mPriv->roster->state(); } /** * Return a list of relevant contacts (a reasonable guess as to what should * be displayed as "the contact list"). * * This may include any or all of: contacts whose presence the user receives, * contacts who are allowed to see the user's presence, contacts stored in * some persistent contact list on the server, contacts who the user * has blocked from communicating with them, or contacts who are relevant * in some other way. * * User interfaces displaying a contact list will probably want to filter this * list and display some suitable subset of it. * * On protocols where there is no concept of presence or a centrally-stored * contact list (like IRC), this method may return an empty list. * * Change notification is via the allKnownContactsChanged() signal. * * This method requires Connection::FeatureRoster to be ready. * * \return A set of pointers to the Contact objects. * \sa allKnownContactsChanged() */ Contacts ContactManager::allKnownContacts() const { if (!connection()->isReady(Connection::FeatureRoster)) { warning() << "Calling allKnownContacts() before FeatureRoster is ready"; return Contacts(); } return mPriv->roster->allKnownContacts(); } /** * Return a list of user-defined contact list groups' names. * * Change notification is via the groupAdded(), groupRemoved() and groupRenamed() signals. * * This method requires Connection::FeatureRosterGroups to be ready. * * \return The list of user-defined contact list groups names. * \sa groupMembersChanged(), groupAdded(), groupRemoved(), groupRenamed() */ QStringList ContactManager::allKnownGroups() const { if (!connection()->isReady(Connection::FeatureRosterGroups)) { return QStringList(); } return mPriv->roster->allKnownGroups(); } /** * Attempt to add an user-defined contact list group named \a group. * * On some protocols (e.g. XMPP) empty groups are not represented on the server, * so disconnecting from the server and reconnecting might cause empty groups to * vanish. * * The returned pending operation will finish successfully if the group already * exists. * * Change notification is via the groupAdded() signal. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to add an user-defined contact list group. * \sa allKnownGroups(), groupAdded(), addContactsToGroup() */ PendingOperation *ContactManager::addGroup(const QString &group) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRosterGroups)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRosterGroups is not ready"), connection()); } return mPriv->roster->addGroup(group); } /** * Attempt to remove an user-defined contact list group named \a group. * * Change notification is via the groupRemoved() signal. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \return A PendingOperation which will emit PendingOperation::finished() * when an attempt has been made to remove an user-defined contact list group. * \sa allKnownGroups(), groupRemoved(), removeContactsFromGroup() */ PendingOperation *ContactManager::removeGroup(const QString &group) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRosterGroups)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRosterGroups is not ready"), connection()); } return mPriv->roster->removeGroup(group); } /** * Return the contacts in the given user-defined contact list group * named \a group. * * Change notification is via the groupMembersChanged() signal. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \return A set of pointers to the Contact objects, or an empty set if the group does not exist. * \sa allKnownGroups(), groupMembersChanged() */ Contacts ContactManager::groupContacts(const QString &group) const { if (!connection()->isReady(Connection::FeatureRosterGroups)) { return Contacts(); } return mPriv->roster->groupContacts(group); } /** * Attempt to add the given \a contacts to the user-defined contact list * group named \a group. * * Change notification is via the groupMembersChanged() signal. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \param contacts Contacts to add. * \return A PendingOperation which will emit PendingOperation::finished() * when an attempt has been made to add the contacts to the user-defined * contact list group. * \sa groupMembersChanged(), groupContacts() */ PendingOperation *ContactManager::addContactsToGroup(const QString &group, const QList &contacts) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRosterGroups)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRosterGroups is not ready"), connection()); } return mPriv->roster->addContactsToGroup(group, contacts); } /** * Attempt to remove the given \a contacts from the user-defined contact list * group named \a group. * * Change notification is via the groupMembersChanged() signal. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \param contacts Contacts to remove. * \return A PendingOperation which will PendingOperation::finished * when an attempt has been made to remove the contacts from the user-defined * contact list group. * \sa groupMembersChanged(), groupContacts() */ PendingOperation *ContactManager::removeContactsFromGroup(const QString &group, const QList &contacts) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRosterGroups)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRosterGroups is not ready"), connection()); } return mPriv->roster->removeContactsFromGroup(group, contacts); } /** * Return whether subscribing to additional contacts' presence is supported. * * In some protocols, the list of contacts whose presence can be seen is * fixed, so we can't subscribe to the presence of additional contacts. * * Notably, in link-local XMPP, you can see the presence of everyone on the * local network, and trying to add more subscriptions would be meaningless. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if Contact::requestPresenceSubscription() and * requestPresenceSubscription() are likely to succeed, \c false otherwise. * \sa requestPresenceSubscription(), subscriptionRequestHasMessage() */ bool ContactManager::canRequestPresenceSubscription() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canRequestPresenceSubscription(); } /** * Return whether a message can be sent when subscribing to contacts' * presence. * * If no message will actually be sent, user interfaces should avoid prompting * the user for a message, and use an empty string for the message argument. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if the message argument to Contact::requestPresenceSubscription() and * requestPresenceSubscription() is actually used, \c false otherwise. * \sa canRemovePresenceSubscription(), requestPresenceSubscription() */ bool ContactManager::subscriptionRequestHasMessage() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->subscriptionRequestHasMessage(); } /** * Attempt to subscribe to the presence of the given contacts. * * This operation is sometimes called "adding contacts to the buddy * list" or "requesting authorization". * * On most protocols, the contacts will need to give permission * before the user will be able to receive their presence: if so, they will * be in presence state Contact::PresenceStateAsk until they authorize * or deny the request. * * The returned PendingOperation will return successfully when a request to * subscribe to the contacts' presence has been submitted, or fail if this * cannot happen. In particular, it does not wait for the contacts to give * permission for the presence subscription. * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts whose presence is desired * \param message A message from the user which is either transmitted to the * contacts, or ignored, depending on the protocol * \return A PendingOperation which will PendingOperation::finished() * when an attempt has been made to subscribe to the contacts' presence. * \sa canRequestPresenceSubscription(), subscriptionRequestHasMessage() */ PendingOperation *ContactManager::requestPresenceSubscription( const QList &contacts, const QString &message) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRoster)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRoster is not ready"), connection()); } return mPriv->roster->requestPresenceSubscription(contacts, message); } /** * Return whether the user can stop receiving the presence of a contact * whose presence they have subscribed to. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if Contact::removePresenceSubscription() and * removePresenceSubscription() are likely to succeed * for contacts with subscription state Contact::PresenceStateYes, * \c false otherwise. * \sa removePresenceSubscription(), subscriptionRemovalHasMessage() */ bool ContactManager::canRemovePresenceSubscription() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canRemovePresenceSubscription(); } /** * Return whether a message can be sent when removing an existing subscription * to the presence of a contact. * * If no message will actually be sent, user interfaces should avoid prompting * the user for a message, and use an empty string for the message argument. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if the message argument to Contact::removePresenceSubscription() and * removePresenceSubscription() is actually used, * for contacts with subscription state Contact::PresenceStateYes, * \c false otherwise. * \sa canRemovePresencePublication(), removePresenceSubscription() */ bool ContactManager::subscriptionRemovalHasMessage() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->subscriptionRemovalHasMessage(); } /** * Return whether the user can cancel a request to subscribe to a contact's * presence before that contact has responded. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if Contact::removePresenceSubscription() and * removePresenceSubscription() are likely to succeed * for contacts with subscription state Contact::PresenceStateAsk, * \c false otherwise. * \sa removePresenceSubscription(), subscriptionRescindingHasMessage() */ bool ContactManager::canRescindPresenceSubscriptionRequest() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canRescindPresenceSubscriptionRequest(); } /** * Return whether a message can be sent when cancelling a request to * subscribe to the presence of a contact. * * If no message will actually be sent, user interfaces should avoid prompting * the user for a message, and use an empty string for the message argument. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if the message argument to Contact::removePresenceSubscription() and * removePresenceSubscription() is actually used, * for contacts with subscription state Contact::PresenceStateAsk, * \c false otherwise. * \sa canRescindPresenceSubscriptionRequest(), removePresenceSubscription() */ bool ContactManager::subscriptionRescindingHasMessage() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->subscriptionRescindingHasMessage(); } /** * Attempt to stop receiving the presence of the given contacts, or cancel * a request to subscribe to their presence that was previously sent. * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts whose presence is no longer required * \message A message from the user which is either transmitted to the * contacts, or ignored, depending on the protocol * \return A PendingOperation which will PendingOperation::finished() * when an attempt has been made to remove any subscription to the contacts' presence. * \sa canRemovePresenceSubscription(), canRescindPresenceSubscriptionRequest(), * subscriptionRemovalHasMessage(), subscriptionRescindingHasMessage() */ PendingOperation *ContactManager::removePresenceSubscription( const QList &contacts, const QString &message) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRoster)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRoster is not ready"), connection()); } return mPriv->roster->removePresenceSubscription(contacts, message); } /** * Return true if the publication of the user's presence to contacts can be * authorized. * * This is always true, unless the protocol has no concept of authorizing * publication (in which case contacts' publication status can never be * Contact::PresenceStateAsk). * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if Contact::authorizePresencePublication() and * authorizePresencePublication() are likely to succeed * for contacts with subscription state Contact::PresenceStateAsk, * \c false otherwise. * \sa publicationAuthorizationHasMessage(), authorizePresencePublication() */ bool ContactManager::canAuthorizePresencePublication() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canAuthorizePresencePublication(); } /** * Return whether a message can be sent when authorizing a request from a * contact that the user's presence is published to them. * * If no message will actually be sent, user interfaces should avoid prompting * the user for a message, and use an empty string for the message argument. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if the message argument to Contact::authorizePresencePublication() and * authorizePresencePublication() is actually used, * for contacts with subscription state Contact::PresenceStateAsk, * \c false otherwise. * \sa canAuthorizePresencePublication(), authorizePresencePublication() */ bool ContactManager::publicationAuthorizationHasMessage() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->publicationAuthorizationHasMessage(); } /** * If the given contacts have asked the user to publish presence to them, * grant permission for this publication to take place. * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts who should be allowed to receive the user's * presence * \message A message from the user which is either transmitted to the * contacts, or ignored, depending on the protocol * \return A PendingOperation which will emit PendingOperation::fininshed * when an attempt has been made to authorize publication of the user's presence * to the contacts. * \sa canAuthorizePresencePublication(), publicationAuthorizationHasMessage() */ PendingOperation *ContactManager::authorizePresencePublication( const QList &contacts, const QString &message) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRoster)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRoster is not ready"), connection()); } return mPriv->roster->authorizePresencePublication(contacts, message); } /** * Return whether a message can be sent when rejecting a request from a * contact that the user's presence is published to them. * * If no message will actually be sent, user interfaces should avoid prompting * the user for a message, and use an empty string for the message argument. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if the message argument to Contact::removePresencePublication() and * removePresencePublication() is actually used, * for contacts with subscription state Contact::PresenceStateAsk, * \c false otherwise. * \sa canRemovePresencePublication(), removePresencePublication() */ bool ContactManager::publicationRejectionHasMessage() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->publicationRejectionHasMessage(); } /** * Return true if the publication of the user's presence to contacts can be * removed, even after permission has been given. * * (Rejecting requests for presence to be published is always allowed.) * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if Contact::removePresencePublication() and * removePresencePublication() are likely to succeed * for contacts with subscription state Contact::PresenceStateYes, * \c false otherwise. * \sa publicationRemovalHasMessage(), removePresencePublication() */ bool ContactManager::canRemovePresencePublication() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canRemovePresencePublication(); } /** * Return whether a message can be sent when revoking earlier permission * that the user's presence is published to a contact. * * If no message will actually be sent, user interfaces should avoid prompting * the user for a message, and use an empty string for the message argument. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if the message argument to Contact::removePresencePublication and * removePresencePublication() is actually used, * for contacts with subscription state Contact::PresenceStateYes, * \c false otherwise. * \sa canRemovePresencePublication(), removePresencePublication() */ bool ContactManager::publicationRemovalHasMessage() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->publicationRemovalHasMessage(); } /** * If the given contacts have asked the user to publish presence to them, * deny this request (this should always succeed, unless a network error * occurs). * * If the given contacts already have permission to receive * the user's presence, attempt to revoke that permission (this might not * be supported by the protocol - canRemovePresencePublication * indicates whether it is likely to succeed). * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts who should no longer be allowed to receive the * user's presence * \message A message from the user which is either transmitted to the * contacts, or ignored, depending on the protocol * \return A PendingOperation which will emit PendingOperation::finished() * when an attempt has been made to remove any publication of the user's presence to the * contacts. * \sa canRemovePresencePublication(), publicationRejectionHasMessage(), * publicationRemovalHasMessage() */ PendingOperation *ContactManager::removePresencePublication( const QList &contacts, const QString &message) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRoster)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRoster is not ready"), connection()); } return mPriv->roster->removePresencePublication(contacts, message); } /** * Remove completely contacts from the server. It has the same effect than * calling removePresencePublication() and removePresenceSubscription(), * but also remove from 'stored' list if it exists. * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts who should be removed * \message A message from the user which is either transmitted to the * contacts, or ignored, depending on the protocol * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to remove any publication of the user's presence to * the contacts. */ PendingOperation *ContactManager::removeContacts( const QList &contacts, const QString &message) { if (!connection()->isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid"), connection()); } else if (!connection()->isReady(Connection::FeatureRoster)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureRoster is not ready"), connection()); } return mPriv->roster->removeContacts(contacts, message); } /** * Return whether this protocol has a list of blocked contacts. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if blockContacts() is likely to succeed, \c false otherwise. */ bool ContactManager::canBlockContacts() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canBlockContacts(); } /** * Return whether this protocol can report abusive contacts. * * This method requires Connection::FeatureRoster to be ready. * * \return \c true if reporting abuse when blocking contacts is supported, \c false otherwise. */ bool ContactManager::canReportAbuse() const { if (!connection()->isReady(Connection::FeatureRoster)) { return false; } return mPriv->roster->canReportAbuse(); } /** * Block the given contacts. Blocked contacts cannot send messages * to the user; depending on the protocol, blocking a contact may * have other effects. * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts that should be blocked. * \return A PendingOperation which will emit PendingOperation::finished() * when an attempt has been made to take the requested action. * \sa canBlockContacts(), unblockContacts(), blockContactsAndReportAbuse() */ PendingOperation *ContactManager::blockContacts(const QList &contacts) { return mPriv->roster->blockContacts(contacts, true, false); } /** * Block the given contacts and additionally report abusive behaviour * to the server. * * If reporting abusive behaviour is not supported by the protocol, * this method has the same effect as blockContacts(). * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts who should be added to the list of blocked contacts. * \return A PendingOperation which will emit PendingOperation::finished() * when an attempt has been made to take the requested action. * \sa canBlockContacts(), canReportAbuse(), blockContacts() */ PendingOperation *ContactManager::blockContactsAndReportAbuse( const QList &contacts) { return mPriv->roster->blockContacts(contacts, true, true); } /** * Unblock the given contacts. * * This method requires Connection::FeatureRoster to be ready. * * \param contacts Contacts that should be unblocked. * \return A PendingOperation which will emit PendingOperation::finished() * when an attempt has been made to take the requested action. * \sa canBlockContacts(), blockContacts(), blockContactsAndReportAbuse() */ PendingOperation *ContactManager::unblockContacts(const QList &contacts) { return mPriv->roster->blockContacts(contacts, false, false); } PendingContacts *ContactManager::contactsForHandles(const UIntList &handles, const Features &features) { QMap satisfyingContacts; QSet otherContacts; Features missingFeatures; if (!connection()->isValid()) { return new PendingContacts(ContactManagerPtr(this), handles, features, Features(), QStringList(), satisfyingContacts, otherContacts, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid")); } else if (!connection()->isReady(Connection::FeatureCore)) { return new PendingContacts(ContactManagerPtr(this), handles, features, Features(), QStringList(), satisfyingContacts, otherContacts, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureCore is not ready")); } Features realFeatures = mPriv->realFeatures(features); ConnectionLowlevelPtr connLowlevel = connection()->lowlevel(); if (connLowlevel->hasImmortalHandles() && realFeatures.isEmpty()) { // try to avoid a roundtrip if all handles have an id set and no feature was requested foreach (uint handle, handles) { if (connLowlevel->hasContactId(handle)) { ContactPtr contact = ensureContact(handle, connLowlevel->contactId(handle), realFeatures); satisfyingContacts.insert(handle, contact); } } } foreach (uint handle, handles) { ContactPtr contact = lookupContactByHandle(handle); if (contact) { if ((realFeatures - contact->requestedFeatures()).isEmpty()) { // Contact exists and has all the requested features satisfyingContacts.insert(handle, contact); } else { // Contact exists but is missing features otherContacts.insert(handle); missingFeatures.unite(realFeatures - contact->requestedFeatures()); } } else { // Contact doesn't exist - we need to get all of the features (same as unite(features)) missingFeatures = realFeatures; otherContacts.insert(handle); } } QSet interfaces = mPriv->interfacesForFeatures(missingFeatures); PendingContacts *contacts = new PendingContacts(ContactManagerPtr(this), handles, features, missingFeatures, interfaces.toList(), satisfyingContacts, otherContacts); return contacts; } PendingContacts *ContactManager::contactsForHandles(const ReferencedHandles &handles, const Features &features) { return contactsForHandles(handles.toList(), features); } PendingContacts *ContactManager::contactsForHandles(const HandleIdentifierMap &handles, const Features &features) { connection()->lowlevel()->injectContactIds(handles); return contactsForHandles(handles.keys(), features); } PendingContacts *ContactManager::contactsForIdentifiers(const QStringList &identifiers, const Features &features) { if (!connection()->isValid()) { return new PendingContacts(ContactManagerPtr(this), identifiers, PendingContacts::ForIdentifiers, features, QStringList(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid")); } else if (!connection()->isReady(Connection::FeatureCore)) { return new PendingContacts(ContactManagerPtr(this), identifiers, PendingContacts::ForIdentifiers, features, QStringList(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureCore is not ready")); } Features realFeatures = mPriv->realFeatures(features); PendingContacts *contacts = new PendingContacts(ContactManagerPtr(this), identifiers, PendingContacts::ForIdentifiers, realFeatures, QStringList()); return contacts; } /** * Request contacts and enable their \a features using a given field in their vcards. * * This method requires Connection::FeatureCore to be ready. * * \param vcardField The vcard field of the addresses we are requesting. * Supported fields can be found in ProtocolInfo::addressableVCardFields(). * \param vcardAddresses The addresses to get contacts for. The address types must match * the given vcard field. * \param features The Contact features to enable. * \return A PendingContacts, which will emit PendingContacts::finished * when the contacts are retrieved or an error occurred. * \sa contactsForHandles(), contactsForIdentifiers(), contactsForUris(), * ProtocolInfo::normalizeVCardAddress() */ PendingContacts *ContactManager::contactsForVCardAddresses(const QString &vcardField, const QStringList &vcardAddresses, const Features &features) { if (!connection()->isValid()) { return new PendingContacts(ContactManagerPtr(this), vcardField, vcardAddresses, features, QStringList(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid")); } else if (!connection()->isReady(Connection::FeatureCore)) { return new PendingContacts(ContactManagerPtr(this), vcardField, vcardAddresses, features, QStringList(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureCore is not ready")); } Features realFeatures = mPriv->realFeatures(features); QSet interfaces = mPriv->interfacesForFeatures(realFeatures); PendingContacts *contacts = new PendingContacts(ContactManagerPtr(this), vcardField, vcardAddresses, realFeatures, interfaces.toList()); return contacts; } /** * Request contacts and enable their \a features using the given URI addresses. * * This method requires Connection::FeatureCore to be ready. * * \param uris The URI addresses to get contacts for. * Supported schemes can be found in ProtocolInfo::addressableUriSchemes(). * \param features The Contact features to enable. * \return A PendingContacts, which will emit PendingContacts::finished * when the contacts are retrieved or an error occurred. * \sa contactsForHandles(), contactsForIdentifiers(), contactsForVCardAddresses(), * ProtocolInfo::normalizeContactUri() */ PendingContacts *ContactManager::contactsForUris(const QStringList &uris, const Features &features) { if (!connection()->isValid()) { return new PendingContacts(ContactManagerPtr(this), uris, PendingContacts::ForUris, features, QStringList(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid")); } else if (!connection()->isReady(Connection::FeatureCore)) { return new PendingContacts(ContactManagerPtr(this), uris, PendingContacts::ForUris, features, QStringList(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureCore is not ready")); } Features realFeatures = mPriv->realFeatures(features); QSet interfaces = mPriv->interfacesForFeatures(realFeatures); PendingContacts *contacts = new PendingContacts(ContactManagerPtr(this), uris, PendingContacts::ForUris, realFeatures, interfaces.toList()); return contacts; } PendingContacts *ContactManager::upgradeContacts(const QList &contacts, const Features &features) { if (!connection()->isValid()) { return new PendingContacts(ContactManagerPtr(this), contacts, features, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection is invalid")); } else if (!connection()->isReady(Connection::FeatureCore)) { return new PendingContacts(ContactManagerPtr(this), contacts, features, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection::FeatureCore is not ready")); } return new PendingContacts(ContactManagerPtr(this), contacts, features); } ContactPtr ContactManager::lookupContactByHandle(uint handle) { ContactPtr contact; if (mPriv->contacts.contains(handle)) { contact = ContactPtr(mPriv->contacts.value(handle)); if (!contact) { // Dangling weak pointer, remove it mPriv->contacts.remove(handle); } } return contact; } /** * Start a request to retrieve the avatar for the given \a contacts. * * Force the request of the avatar data. This method returns directly, emitting * Contact::avatarTokenChanged() and Contact::avatarDataChanged() signals once the token * and data are fetched from the server. * * This is only useful if the avatar token is unknown; see Contact::isAvatarTokenKnown(). * It happens in the case of offline XMPP contacts, because the server does not * send the token for them and an explicit request of the avatar data is needed. * * This method requires Contact::FeatureAvatarData to be ready. * * \sa Contact::avatarData(), Contact::avatarDataChanged(), * Contact::avatarToken(), Contact::avatarTokenChanged() */ void ContactManager::requestContactAvatars(const QList &contacts) { if (contacts.isEmpty()) { return; } if (!mPriv->requestAvatarsIdle) { mPriv->requestAvatarsIdle = true; QTimer::singleShot(0, this, SLOT(doRequestAvatars())); } mPriv->requestAvatarsQueue.unite(contacts.toSet()); } /** * Refresh information for the given contact. * * Once the information is retrieved infoFieldsChanged() will be emitted. * * This method requires Contact::FeatureInfo to be ready. * * \return A PendingOperation, which will emit PendingOperation::finished * when the call has finished. * \sa infoFieldsChanged() */ PendingOperation *ContactManager::refreshContactInfo(const QList &contacts) { if (!mPriv->refreshInfoOp) { mPriv->refreshInfoOp = new PendingRefreshContactInfo(connection()); QTimer::singleShot(0, this, SLOT(doRefreshInfo())); } foreach (const ContactPtr &contact, contacts) { mPriv->refreshInfoOp->addContact(contact.data()); } return mPriv->refreshInfoOp; } void ContactManager::onAliasesChanged(const AliasPairList &aliases) { debug() << "Got AliasesChanged for" << aliases.size() << "contacts"; foreach (AliasPair pair, aliases) { ContactPtr contact = lookupContactByHandle(pair.handle); if (contact) { contact->receiveAlias(pair.alias); } } } void ContactManager::doRequestAvatars() { Q_ASSERT(mPriv->requestAvatarsIdle); QSet contacts = mPriv->requestAvatarsQueue; Q_ASSERT(contacts.size() > 0); mPriv->requestAvatarsQueue.clear(); mPriv->requestAvatarsIdle = false; int found = 0; UIntList notFound; foreach (const ContactPtr &contact, contacts) { if (!contact) { continue; } QString avatarFileName; QString mimeTypeFileName; bool success = (contact->isAvatarTokenKnown() && mPriv->buildAvatarFileName(contact->avatarToken(), false, avatarFileName, mimeTypeFileName)); /* Check if the avatar is already in the cache */ if (success && QFile::exists(avatarFileName)) { QFile mimeTypeFile(mimeTypeFileName); mimeTypeFile.open(QIODevice::ReadOnly); QString mimeType = QString(QLatin1String(mimeTypeFile.readAll())); mimeTypeFile.close(); found++; contact->receiveAvatarData(AvatarData(avatarFileName, mimeType)); continue; } notFound << contact->handle()[0]; } if (found > 0) { debug() << "Avatar(s) found in cache for" << found << "contact(s)"; } if (found == contacts.size()) { return; } debug() << "Requesting avatar(s) for" << contacts.size() - found << "contact(s)"; Client::ConnectionInterfaceAvatarsInterface *avatarsInterface = connection()->interface(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( avatarsInterface->RequestAvatars(notFound), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, SLOT(deleteLater())); } void ContactManager::onAvatarUpdated(uint handle, const QString &token) { debug() << "Got AvatarUpdate for contact with handle" << handle; ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->receiveAvatarToken(token); } } void ContactManager::onAvatarRetrieved(uint handle, const QString &token, const QByteArray &data, const QString &mimeType) { QString avatarFileName; QString mimeTypeFileName; debug() << "Got AvatarRetrieved for contact with handle" << handle; bool success = mPriv->buildAvatarFileName(token, true, avatarFileName, mimeTypeFileName); if (success) { debug() << "Write avatar in cache for handle" << handle; debug() << "Filename:" << avatarFileName; debug() << "MimeType:" << mimeType; if (!QFile::exists(mimeTypeFileName)) { QTemporaryFile mimeTypeFile(mimeTypeFileName); if (mimeTypeFile.open()) { mimeTypeFile.write(mimeType.toLatin1()); mimeTypeFile.setAutoRemove(false); if (!mimeTypeFile.rename(mimeTypeFileName)) { mimeTypeFile.remove(); } } } if (!QFile::exists(avatarFileName)) { QTemporaryFile avatarFile(avatarFileName); if (avatarFile.open()) { avatarFile.write(data); avatarFile.setAutoRemove(false); if (!avatarFile.rename(avatarFileName)) { avatarFile.remove(); } } } } ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->setAvatarToken(token); contact->receiveAvatarData(AvatarData(avatarFileName, mimeType)); } } void ContactManager::onPresencesChanged(const SimpleContactPresences &presences) { debug() << "Got PresencesChanged for" << presences.size() << "contacts"; foreach (uint handle, presences.keys()) { ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->receiveSimplePresence(presences[handle]); } } } void ContactManager::onCapabilitiesChanged(const ContactCapabilitiesMap &caps) { debug() << "Got ContactCapabilitiesChanged for" << caps.size() << "contacts"; foreach (uint handle, caps.keys()) { ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->receiveCapabilities(caps[handle]); } } } void ContactManager::onLocationUpdated(uint handle, const QVariantMap &location) { debug() << "Got LocationUpdated for contact with handle" << handle; ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->receiveLocation(location); } } void ContactManager::onContactInfoChanged(uint handle, const Tp::ContactInfoFieldList &info) { debug() << "Got ContactInfoChanged for contact with handle" << handle; ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->receiveInfo(info); } } void ContactManager::onClientTypesUpdated(uint handle, const QStringList &clientTypes) { debug() << "Got ClientTypesUpdated for contact with handle" << handle; ContactPtr contact = lookupContactByHandle(handle); if (contact) { contact->receiveClientTypes(clientTypes); } } void ContactManager::doRefreshInfo() { PendingRefreshContactInfo *op = mPriv->refreshInfoOp; Q_ASSERT(op); mPriv->refreshInfoOp = 0; op->refreshInfo(); } ContactPtr ContactManager::ensureContact(const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes) { uint bareHandle = handle[0]; ContactPtr contact = lookupContactByHandle(bareHandle); if (!contact) { contact = connection()->contactFactory()->construct(this, handle, features, attributes); mPriv->contacts.insert(bareHandle, contact); } contact->augment(features, attributes); return contact; } ContactPtr ContactManager::ensureContact(uint bareHandle, const QString &id, const Features &features) { ContactPtr contact = lookupContactByHandle(bareHandle); if (!contact) { QVariantMap attributes; attributes.insert(TP_QT_IFACE_CONNECTION + QLatin1String("/contact-id"), id); contact = connection()->contactFactory()->construct(this, ReferencedHandles(connection(), HandleTypeContact, UIntList() << bareHandle), features, attributes); mPriv->contacts.insert(bareHandle, contact); // do not call augment here as this is a fake contact } return contact; } QString ContactManager::featureToInterface(const Feature &feature) { if (feature == Contact::FeatureAlias) { return TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING; } else if (feature == Contact::FeatureAvatarToken) { return TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS; } else if (feature == Contact::FeatureAvatarData) { return TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS; } else if (feature == Contact::FeatureSimplePresence) { return TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE; } else if (feature == Contact::FeatureCapabilities) { return TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES; } else if (feature == Contact::FeatureLocation) { return TP_QT_IFACE_CONNECTION_INTERFACE_LOCATION; } else if (feature == Contact::FeatureInfo) { return TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO; } else if (feature == Contact::FeatureRosterGroups) { return TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS; } else if (feature == Contact::FeatureAddresses) { return TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING; } else if (feature == Contact::FeatureClientTypes) { return TP_QT_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES; } else { warning() << "ContactManager doesn't know which interface corresponds to feature" << feature; return QString(); } } void ContactManager::ensureTracking(const Feature &feature) { if (mPriv->tracking[feature]) { return; } ConnectionPtr conn(connection()); if (feature == Contact::FeatureAlias) { Client::ConnectionInterfaceAliasingInterface *aliasingInterface = conn->interface(); connect(aliasingInterface, SIGNAL(AliasesChanged(Tp::AliasPairList)), SLOT(onAliasesChanged(Tp::AliasPairList))); } else if (feature == Contact::FeatureAvatarData) { Client::ConnectionInterfaceAvatarsInterface *avatarsInterface = conn->interface(); connect(avatarsInterface, SIGNAL(AvatarRetrieved(uint,QString,QByteArray,QString)), SLOT(onAvatarRetrieved(uint,QString,QByteArray,QString))); } else if (feature == Contact::FeatureAvatarToken) { Client::ConnectionInterfaceAvatarsInterface *avatarsInterface = conn->interface(); connect(avatarsInterface, SIGNAL(AvatarUpdated(uint,QString)), SLOT(onAvatarUpdated(uint,QString))); } else if (feature == Contact::FeatureCapabilities) { Client::ConnectionInterfaceContactCapabilitiesInterface *contactCapabilitiesInterface = conn->interface(); connect(contactCapabilitiesInterface, SIGNAL(ContactCapabilitiesChanged(Tp::ContactCapabilitiesMap)), SLOT(onCapabilitiesChanged(Tp::ContactCapabilitiesMap))); } else if (feature == Contact::FeatureInfo) { Client::ConnectionInterfaceContactInfoInterface *contactInfoInterface = conn->interface(); connect(contactInfoInterface, SIGNAL(ContactInfoChanged(uint,Tp::ContactInfoFieldList)), SLOT(onContactInfoChanged(uint,Tp::ContactInfoFieldList))); } else if (feature == Contact::FeatureLocation) { Client::ConnectionInterfaceLocationInterface *locationInterface = conn->interface(); connect(locationInterface, SIGNAL(LocationUpdated(uint,QVariantMap)), SLOT(onLocationUpdated(uint,QVariantMap))); } else if (feature == Contact::FeatureSimplePresence) { Client::ConnectionInterfaceSimplePresenceInterface *simplePresenceInterface = conn->interface(); connect(simplePresenceInterface, SIGNAL(PresencesChanged(Tp::SimpleContactPresences)), SLOT(onPresencesChanged(Tp::SimpleContactPresences))); } else if (feature == Contact::FeatureClientTypes) { Client::ConnectionInterfaceClientTypesInterface *clientTypesInterface = conn->interface(); connect(clientTypesInterface, SIGNAL(ClientTypesUpdated(uint,QStringList)), SLOT(onClientTypesUpdated(uint,QStringList))); } else if (feature == Contact::FeatureRosterGroups || feature == Contact::FeatureAddresses) { // nothing to do here, but we don't want to warn ; } else { warning() << " Unknown feature" << feature << "when trying to figure out how to connect change notification!"; } mPriv->tracking[feature] = true; } PendingOperation *ContactManager::introspectRoster() { return mPriv->roster->introspect(); } PendingOperation *ContactManager::introspectRosterGroups() { return mPriv->roster->introspectGroups(); } void ContactManager::resetRoster() { mPriv->roster->reset(); } /** * \fn void ContactManager::presencePublicationRequested(const Tp::Contacts &contacts) * * Emitted whenever some contacts request for presence publication. * * \param contacts A set of contacts which requested presence publication. */ /** * \fn void ContactManager::groupAdded(const QString &group) * * Emitted when a new contact list group is created. * * \param group The group name. * \sa allKnownGroups() */ /** * \fn void ContactManager::groupRenamed(const QString &oldGroup, const QString &newGroup) * * Emitted when a new contact list group is renamed. * * \param oldGroup The old group name. * \param newGroup The new group name. * \sa allKnownGroups() */ /** * \fn void ContactManager::groupRemoved(const QString &group) * * Emitted when a contact list group is removed. * * \param group The group name. * \sa allKnownGroups() */ /** * \fn void ContactManager::groupMembersChanged(const QString &group, * const Tp::Contacts &groupMembersAdded, * const Tp::Contacts &groupMembersRemoved, * const Tp::Channel::GroupMemberChangeDetails &details) * * Emitted whenever some contacts got removed or added from * a group. * * \param group The name of the group that changed. * \param groupMembersAdded A set of contacts which were added to the group \a group. * \param groupMembersRemoved A set of contacts which were removed from the group \a group. * \param details The change details. * \sa groupContacts() */ /** * \fn void ContactManager::allKnownContactsChanged(const Tp::Contacts &contactsAdded, * const Tp::Contacts &contactsRemoved, * const Tp::Channel::GroupMemberChangeDetails &details) * * Emitted whenever some contacts got removed or added from * ContactManager's known contact list. It is useful for monitoring which contacts * are currently known by ContactManager. * * Note that, in some protocols, this signal could stream newly added contacts * with both presence subscription and publication state set to No. Be sure to watch * over publication and/or subscription state changes if that is the case. * * \param contactsAdded A set of contacts which were added to the known contact list. * \param contactsRemoved A set of contacts which were removed from the known contact list. * \param details The change details. * \sa allKnownContacts() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterface0000644000175100017520000000037612530423576024037 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingDBusTubeConnection0000644000175100017520000000043412530423576025114 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingDBusTubeConnection_HEADER_GUARD_ #define _TelepathyQt_PendingDBusTubeConnection_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/fake-handler-manager-internal.h0000644000175100017520000000470712530423576026112 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_fake_handler_manager_internal_h_HEADER_GUARD_ #define _TelepathyQt_fake_handler_manager_internal_h_HEADER_GUARD_ #include #include #include namespace Tp { #ifndef DOXYGEN_SHOULD_SKIP_THIS class FakeHandler : public QObject { Q_OBJECT Q_DISABLE_COPY(FakeHandler) public: FakeHandler(const QDBusConnection &bus); ~FakeHandler(); QDBusConnection dbusConnection() const { return mBus; } ObjectPathList handledChannels() const; void registerChannel(const ChannelPtr &channel); Q_SIGNALS: void invalidated(Tp::FakeHandler *self); private Q_SLOTS: void onChannelInvalidated(Tp::DBusProxy *channel); void onChannelDestroyed(QObject *channel); private: QDBusConnection mBus; QSet mChannels; }; class FakeHandlerManager : public QObject { Q_OBJECT Q_DISABLE_COPY(FakeHandlerManager) public: static FakeHandlerManager *instance(); ~FakeHandlerManager(); ObjectPathList handledChannels(const QDBusConnection &bus) const; void registerClientRegistrar(const ClientRegistrarPtr &cr); void registerChannels(const QList &channels); private Q_SLOTS: void onFakeHandlerInvalidated(Tp::FakeHandler *fakeHandler); private: FakeHandlerManager(); static FakeHandlerManager *mInstance; QHash, ClientRegistrarPtr> mClientRegistrars; QHash, FakeHandler *> mFakeHandlers; }; #endif // DOXYGEN_SHOULD_SKIP_THIS } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/MethodInvocationContext0000644000175100017520000000042512530423576024731 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MethodInvocationContext_HEADER_GUARD_ #define _TelepathyQt_MethodInvocationContext_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallContentInterface0000644000175100017520000000040212530423576024134 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ProfileManager0000644000175100017520000000037112530423576023005 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProfileManager_HEADER_GUARD_ #define _TelepathyQt_ProfileManager_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/utils.h0000644000175100017520000000275412530423576021507 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_utils_h_HEADER_GUARD_ #define _TelepathyQt_utils_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include namespace Tp { TP_QT_EXPORT QString escapeAsIdentifier(const QString &string); TP_QT_EXPORT bool checkValidProtocolName(const QString &protocolName); TP_QT_EXPORT QVariant::Type variantTypeFromDBusSignature(const QString &signature); TP_QT_EXPORT QVariant parseValueWithDBusSignature(const QString &value, const QString &dbusSignature); } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfacePowerSavingInterface0000644000175100017520000000044612530423576030043 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfacePowerSavingInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfacePowerSavingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallContentInterfaceVideoControlInterface0000644000175100017520000000045412530423576030314 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContentInterfaceVideoControlInterface_HEADER_GUARD_ #define _TelepathyQt_CallContentInterfaceVideoControlInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/StreamTubeServer0000644000175100017520000000040012530423576023345 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StreamTubeServer_HEADER_GUARD_ #define _TelepathyQt_StreamTubeServer_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-handles.h0000644000175100017520000000541112530423576023400 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_handles_h_HEADER_GUARD_ #define _TelepathyQt_pending_handles_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include namespace Tp { class PendingHandles; class ReferencedHandles; class TP_QT_EXPORT PendingHandles : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingHandles) public: ~PendingHandles(); ConnectionPtr connection() const; HandleType handleType() const; bool isRequest() const; bool isReference() const; const QStringList &namesRequested() const; QStringList validNames() const; QHash > invalidNames() const; const UIntList &handlesToReference() const; ReferencedHandles handles() const; UIntList invalidHandles() const; private Q_SLOTS: TP_QT_NO_EXPORT void onRequestHandlesFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onHoldHandlesFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onRequestHandlesFallbackFinished(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onHoldHandlesFallbackFinished(QDBusPendingCallWatcher *watcher); private: friend class ConnectionLowlevel; TP_QT_NO_EXPORT PendingHandles(const ConnectionPtr &connection, HandleType handleType, const QStringList &names); TP_QT_NO_EXPORT PendingHandles(const ConnectionPtr &connection, HandleType handleType, const UIntList &handles, const UIntList &alreadyHeld, const UIntList ¬YetHeld); TP_QT_NO_EXPORT PendingHandles(const QString &errorName, const QString &errorMessage); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/PendingOperation0000644000175100017520000000037712530423576023365 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingOperation_HEADER_GUARD_ #define _TelepathyQt_PendingOperation_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/profile.h0000644000175100017520000001154312530423576022003 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_profile_h_HEADER_GUARD_ #define _TelepathyQt_profile_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { class ProtocolInfo; class TP_QT_EXPORT Profile : public RefCounted { Q_DISABLE_COPY(Profile); public: static ProfilePtr createForServiceName(const QString &serviceName); static ProfilePtr createForFileName(const QString &fileName); ~Profile(); QString serviceName() const; bool isValid() const; bool isFake() const; QString type() const; QString provider() const; QString name() const; QString iconName() const; QString cmName() const; QString protocolName() const; class Parameter { public: Parameter(); Parameter(const Parameter &other); Parameter(const QString &name, const QDBusSignature &dbusSignature, const QVariant &value, const QString &label, bool mandatory); ~Parameter(); QString name() const; QDBusSignature dbusSignature() const; QVariant::Type type() const; QVariant value() const; QString label() const; bool isMandatory() const; // TODO Add matches(Tp::Presence) method Parameter &operator=(const Parameter &other); private: friend class Profile; TP_QT_NO_EXPORT void setName(const QString &name); TP_QT_NO_EXPORT void setDBusSignature(const QDBusSignature &dbusSignature); TP_QT_NO_EXPORT void setValue(const QVariant &value); TP_QT_NO_EXPORT void setLabel(const QString &label); TP_QT_NO_EXPORT void setMandatory(bool mandatory); struct Private; friend struct Private; Private *mPriv; }; typedef QList ParameterList; ParameterList parameters() const; bool hasParameter(const QString &name) const; Parameter parameter(const QString &name) const; class Presence { public: Presence(); Presence(const Presence &other); Presence(const QString &id, const QString &label, const QString &iconName, const QString &message, bool disabled); ~Presence(); QString id() const; QString label() const; QString iconName() const; bool canHaveStatusMessage() const; bool isDisabled() const; Presence &operator=(const Presence &other); private: friend class Profile; TP_QT_NO_EXPORT void setId(const QString &id); TP_QT_NO_EXPORT void setLabel(const QString &label); TP_QT_NO_EXPORT void setIconName(const QString &iconName); TP_QT_NO_EXPORT void setMessage(const QString &message); TP_QT_NO_EXPORT void setDisabled(bool disabled); struct Private; friend struct Private; Private *mPriv; }; typedef QList PresenceList; bool allowOtherPresences() const; PresenceList presences() const; bool hasPresence(const QString &id) const; Presence presence(const QString &id) const; RequestableChannelClassSpecList unsupportedChannelClassSpecs() const; private: friend class Account; friend class ProfileManager; TP_QT_NO_EXPORT Profile(); TP_QT_NO_EXPORT Profile(const QString &serviceName, const QString &cmName, const QString &protocolName, const ProtocolInfo &protocolInfo); TP_QT_NO_EXPORT void setServiceName(const QString &serviceName); TP_QT_NO_EXPORT void setFileName(const QString &fileName); TP_QT_NO_EXPORT static QStringList searchDirs(); struct Private; friend struct Private; Private *mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::Profile::Parameter); Q_DECLARE_METATYPE(Tp::Profile::Presence); #endif telepathy-qt-0.9.6.1/TelepathyQt/simple-stream-tube-handler.h0000644000175100017520000000710612530423576025475 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_simple_stream_tube_handler_h_HEADER_GUARD_ #define _TelepathyQt_simple_stream_tube_handler_h_HEADER_GUARD_ #include #include #include #include #include #include #include #include #include namespace Tp { class PendingOperation; class TP_QT_NO_EXPORT SimpleStreamTubeHandler : public QObject, public AbstractClientHandler { Q_OBJECT Q_DISABLE_COPY(SimpleStreamTubeHandler) public: static SharedPtr create( const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval = false); ~SimpleStreamTubeHandler(); bool monitorsConnections() const { return mMonitorConnections; } bool bypassApproval() const { return mBypassApproval; } void handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo); Q_SIGNALS: void invokedForTube( const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints); void tubeInvalidated( const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QString &errorName, const QString &errorMessage); private Q_SLOTS: void onReadyOpFinished(Tp::PendingOperation *); void onTubeInvalidated(Tp::DBusProxy *, const QString &, const QString &); private: SimpleStreamTubeHandler( const QStringList &p2pServices, const QStringList &roomServices, bool requested, bool monitorConnections, bool bypassApproval); bool mMonitorConnections; struct InvocationData : RefCounted { InvocationData() : readyOp(0) {} PendingOperation *readyOp; QString error, message; MethodInvocationContextPtr<> ctx; AccountPtr acc; QList tubes; QDateTime time; ChannelRequestHints hints; }; QLinkedList > mInvocations; QHash mTubes; bool mBypassApproval; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/outgoing-stream-tube-channel.cpp0000644000175100017520000010366712530423576026376 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/outgoing-stream-tube-channel-internal.h" #include "TelepathyQt/_gen/outgoing-stream-tube-channel.moc.hpp" #include "TelepathyQt/_gen/outgoing-stream-tube-channel-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/types-internal.h" #include #include #include #include #include #include #include #include namespace Tp { PendingOpenTube::Private::Private(const QVariantMap ¶meters, PendingOpenTube *parent) : parent(parent), parameters(parameters) { } PendingOpenTube::PendingOpenTube( PendingVoid *offerOperation, const QVariantMap ¶meters, const OutgoingStreamTubeChannelPtr &object) : PendingOperation(object), mPriv(new Private(parameters, this)) { mPriv->tube = object; // FIXME: connect to channel invalidation here also debug() << "Calling StreamTube.Offer"; if (offerOperation->isFinished()) { onOfferFinished(offerOperation); } else { // Connect the pending void connect(offerOperation, SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(onOfferFinished(Tp::PendingOperation*))); } } PendingOpenTube::~PendingOpenTube() { delete mPriv; } void PendingOpenTube::onOfferFinished(PendingOperation *op) { if (op->isError()) { warning().nospace() << "StreamTube.Offer failed with " << op->errorName() << ": " << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); return; } debug() << "StreamTube.Offer returned successfully"; // It might have been already opened - check if (mPriv->tube->state() != TubeChannelStateOpen) { debug() << "Awaiting tube to be opened"; // Wait until the tube gets opened on the other side connect(mPriv->tube.data(), SIGNAL(stateChanged(Tp::TubeChannelState)), SLOT(onTubeStateChanged(Tp::TubeChannelState))); } onTubeStateChanged(mPriv->tube->state()); } void PendingOpenTube::onTubeStateChanged(TubeChannelState state) { if (state == TubeChannelStateOpen) { debug() << "Tube is now opened"; // Inject the parameters into the tube mPriv->tube->setParameters(mPriv->parameters); // The tube is ready: let's notify setFinished(); } else { if (state != TubeChannelStateRemotePending) { warning() << "Offering tube failed with" << TP_QT_ERROR_CONNECTION_REFUSED; // Something happened setFinishedWithError(TP_QT_ERROR_CONNECTION_REFUSED, QLatin1String("The connection to this tube was refused")); } else { debug() << "Awaiting remote to accept the tube"; } } } QueuedContactFactory::QueuedContactFactory(Tp::ContactManagerPtr contactManager, QObject* parent) : QObject(parent), m_isProcessing(false), m_manager(contactManager) { } QueuedContactFactory::~QueuedContactFactory() { } void QueuedContactFactory::processNextRequest() { if (m_isProcessing) { // Return, nothing to do return; } if (m_queue.isEmpty()) { // Queue completed, notify and return emit queueCompleted(); return; } m_isProcessing = true; Entry entry = m_queue.dequeue(); // TODO: pass id hints to ContactManager if we ever gain support to retrieve contact ids // from NewRemoteConnection. PendingContacts *pc = m_manager->contactsForHandles(entry.handles); pc->setProperty("__TpQt__QueuedContactFactoryUuid", entry.uuid.toString()); connect(pc, SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(onPendingContactsFinished(Tp::PendingOperation*))); } QUuid QueuedContactFactory::appendNewRequest(const Tp::UIntList &handles) { // Create a new entry Entry entry; entry.uuid = QUuid::createUuid(); entry.handles = handles; m_queue.enqueue(entry); // Enqueue a process request in the event loop QTimer::singleShot(0, this, SLOT(processNextRequest())); // Return the UUID return entry.uuid; } void QueuedContactFactory::onPendingContactsFinished(PendingOperation *op) { PendingContacts *pc = qobject_cast(op); QUuid uuid = QUuid(pc->property("__TpQt__QueuedContactFactoryUuid").toString()); emit contactsRetrieved(uuid, pc->contacts()); // No longer processing m_isProcessing = false; // Go for next one processNextRequest(); } OutgoingStreamTubeChannel::Private::Private(OutgoingStreamTubeChannel *parent) : parent(parent), queuedContactFactory(new QueuedContactFactory(parent->connection()->contactManager(), parent)) { } /** * \class OutgoingStreamTubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/outgoing-stream-tube-channel.h * * \brief The OutgoingStreamTubeChannel class represents an outgoing Telepathy channel * of type StreamTube. * * Outgoing (locally initiated/requested) tubes are initially in the #TubeChannelStateNotOffered state. The * various offer methods in this class can be used to offer a local listening TCP or Unix socket for * the tube's target to connect to, at which point the tube becomes #TubeChannelStateRemotePending. * If the target accepts the connection request, the state goes #TubeChannelStateOpen and the * connection manager will start tunneling any incoming connections from the recipient side to the * local service. */ /** * Feature representing the core that needs to become ready to make the * OutgoingStreamTubeChannel object usable. * * This is currently the same as StreamTubeChannel::FeatureCore, but may change to include more. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature OutgoingStreamTubeChannel::FeatureCore = Feature(QLatin1String(StreamTubeChannel::staticMetaObject.className()), 0); // ST::FeatureCore /** * Create a new OutgoingStreamTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A OutgoingStreamTubeChannelPtr object pointing to the newly created * OutgoingStreamTubeChannel object. */ OutgoingStreamTubeChannelPtr OutgoingStreamTubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return OutgoingStreamTubeChannelPtr(new OutgoingStreamTubeChannel(connection, objectPath, immutableProperties, OutgoingStreamTubeChannel::FeatureCore)); } /** * Construct a new OutgoingStreamTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on OutgoingStreamTubeChannel::FeatureCore. */ OutgoingStreamTubeChannel::OutgoingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : StreamTubeChannel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { connect(mPriv->queuedContactFactory, SIGNAL(contactsRetrieved(QUuid,QList)), this, SLOT(onContactsRetrieved(QUuid,QList))); } /** * Class destructor. */ OutgoingStreamTubeChannel::~OutgoingStreamTubeChannel() { delete mPriv; } /** * Offer a TCP socket over this stream tube. * * This method offers a TCP socket over this tube. The socket's address is given as * a QHostAddress and a numerical port in native byte order. * * If your application uses QTcpServer as the local TCP server implementation, you can use the * offerTcpSocket(const QTcpServer *, const QVariantMap &) overload instead to more easily pass the * server's listen address. * * It is guaranteed that when the PendingOperation returned by this method will be completed, * the tube will be opened and ready to be used. * * Connection managers adhering to the \telepathy_spec should always support offering IPv4 TCP * sockets. IPv6 sockets are only supported if supportsIPv6SocketsOnLocalhost() is \c true. * * Note that the library will try to use #SocketAccessControlPort access control whenever possible, * as it allows to map connections to users based on their source addresses. If * supportsIPv4SocketsWithSpecifiedAddress() or supportsIPv6SocketsWithSpecifiedAddress() for IPv4 * and IPv6 sockets respectively is \c false, this feature is not available, and the * connectionsForSourceAddresses() map won't contain useful distinct keys. * * Arbitrary parameters can be associated with the offer to bootstrap legacy protocols; these will * in particular be available as IncomingStreamTubeChannel::parameters() for a tube receiver * implemented using TelepathyQt in the other end. * * This method requires OutgoingStreamTubeChannel::FeatureCore to be ready. * * \param address A valid IPv4 or IPv6 address pointing to an existing socket. * \param port The port the socket is listening for connections to. * \param parameters A dictionary of arbitrary parameters to send with the tube offer. * \return A PendingOperation which will emit PendingOperation::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). */ PendingOperation *OutgoingStreamTubeChannel::offerTcpSocket( const QHostAddress &address, quint16 port, const QVariantMap ¶meters) { if (!isReady(OutgoingStreamTubeChannel::FeatureCore)) { warning() << "OutgoingStreamTubeChannel::FeatureCore must be ready before " "calling offerTube"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), OutgoingStreamTubeChannelPtr(this)); } // The tube must be not offered if (state() != TubeChannelStateNotOffered) { warning() << "You can not expose more than a socket for each Stream Tube"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel busy"), OutgoingStreamTubeChannelPtr(this)); } SocketAccessControl accessControl = SocketAccessControlLocalhost; // Check if port is supported QHostAddress hostAddress = address; #if QT_VERSION >= 0x050000 if (hostAddress == QHostAddress::Any) { hostAddress = QHostAddress::AnyIPv4; } #endif // In this specific overload, we're handling an IPv4/IPv6 socket if (hostAddress.protocol() == QAbstractSocket::IPv4Protocol) { // IPv4 case SocketAccessControl accessControl; // Do some heuristics to find out the best access control.We always prefer port for tracking // connections and source addresses. if (supportsIPv4SocketsWithSpecifiedAddress()) { accessControl = SocketAccessControlPort; } else if (supportsIPv4SocketsOnLocalhost()) { accessControl = SocketAccessControlLocalhost; } else { // There are no combinations supported for this socket warning() << "You requested an address type/access control combination " "not supported by this channel"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The requested address type/access control " "combination is not supported"), OutgoingStreamTubeChannelPtr(this)); } setAddressType(SocketAddressTypeIPv4); setAccessControl(accessControl); setIpAddress(qMakePair(hostAddress, port)); SocketAddressIPv4 addr; addr.address = hostAddress.toString(); addr.port = port; PendingVoid *pv = new PendingVoid( interface()->Offer( SocketAddressTypeIPv4, QDBusVariant(QVariant::fromValue(addr)), accessControl, parameters), OutgoingStreamTubeChannelPtr(this)); PendingOpenTube *op = new PendingOpenTube(pv, parameters, OutgoingStreamTubeChannelPtr(this)); return op; } else if (hostAddress.protocol() == QAbstractSocket::IPv6Protocol) { // IPv6 case // Do some heuristics to find out the best access control.We always prefer port for tracking // connections and source addresses. if (supportsIPv6SocketsWithSpecifiedAddress()) { accessControl = SocketAccessControlPort; } else if (supportsIPv6SocketsOnLocalhost()) { accessControl = SocketAccessControlLocalhost; } else { // There are no combinations supported for this socket warning() << "You requested an address type/access control combination " "not supported by this channel"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The requested address type/access control " "combination is not supported"), OutgoingStreamTubeChannelPtr(this)); } setAddressType(SocketAddressTypeIPv6); setAccessControl(accessControl); setIpAddress(qMakePair(hostAddress, port)); SocketAddressIPv6 addr; addr.address = hostAddress.toString(); addr.port = port; PendingVoid *pv = new PendingVoid( interface()->Offer( SocketAddressTypeIPv6, QDBusVariant(QVariant::fromValue(addr)), accessControl, parameters), OutgoingStreamTubeChannelPtr(this)); PendingOpenTube *op = new PendingOpenTube(pv, parameters, OutgoingStreamTubeChannelPtr(this)); return op; } else { // We're handling an IPv4/IPv6 socket only warning() << "offerTube can be called only with a QHostAddress representing " "an IPv4 or IPv6 address"; return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid host given"), OutgoingStreamTubeChannelPtr(this)); } } /** * Offer a TCP socket over this stream tube. * * Otherwise identical to offerTcpSocket(const QHostAddress &, quint16, const QVariantMap &), but * allows passing the local service's address in an already listening QTcpServer. * * \param server A valid QTcpServer, which should be already listening for incoming connections. * \param parameters A dictionary of arbitrary parameters to send with the tube offer. * \return A PendingOperation which will emit PendingOperation::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). */ PendingOperation *OutgoingStreamTubeChannel::offerTcpSocket( const QTcpServer *server, const QVariantMap ¶meters) { // In this overload, we're handling a superset of QHostAddress. // Let's redirect the call to QHostAddress's overload return offerTcpSocket(server->serverAddress(), server->serverPort(), parameters); } /** * Offer an Unix socket over this stream tube. * * This method offers an Unix socket over this stream tube. The socket address is given as a * a QString, which should contain the path to the socket. Abstract Unix sockets are also supported, * and are given as addresses prefixed with a \c NUL byte. * * If your application uses QLocalServer as the local Unix server implementation, you can use the * offerUnixSocket(const QLocalServer *, const QVariantMap &, bool) overload instead to more easily * pass the server's listen address. * * Note that only connection managers for which supportsUnixSocketsOnLocalhost() or * supportsAbstractUnixSocketsOnLocalhost() is \c true support exporting Unix sockets. * * If supportsUnixSocketsWithCredentials() or supportsAbstractUnixSocketsWithCredentials(), as * appropriate, returns \c true, the \c requireCredentials parameter can be set to \c true to make * the connection manager pass an SCM_CREDS or SCM_CREDENTIALS message as supported by the platform * when making a new connection. This enables preventing other local users from connecting to the * service, but might not be possible to use with all protocols as the message is in-band in the * data stream. * * Arbitrary parameters can be associated with the offer to bootstrap legacy protocols; these will * in particular be available as IncomingStreamTubeChannel::parameters() for a tube receiver * implemented using TelepathyQt in the other end. * * This method requires OutgoingStreamTubeChannel::FeatureCore to be ready. * * \param socketAddress A valid path to an existing Unix socket or abstract Unix socket. * \param parameters A dictionary of arbitrary parameters to send with the tube offer. * \param requireCredentials Whether the server requires a SCM_CREDS or SCM_CREDENTIALS message * upon connection. * \return A PendingOperation which will emit PendingOperation::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). */ PendingOperation *OutgoingStreamTubeChannel::offerUnixSocket( const QString &socketAddress, const QVariantMap ¶meters, bool requireCredentials) { SocketAccessControl accessControl = requireCredentials ? SocketAccessControlCredentials : SocketAccessControlLocalhost; if (!isReady(OutgoingStreamTubeChannel::FeatureCore)) { warning() << "OutgoingStreamTubeChannel::FeatureCore must be ready before " "calling offerTube"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), OutgoingStreamTubeChannelPtr(this)); } // The tube must be not offered if (state() != TubeChannelStateNotOffered) { warning() << "You can not expose more than a socket for each Stream Tube"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel busy"), OutgoingStreamTubeChannelPtr(this)); } // In this specific overload, we're handling an Unix/AbstractUnix socket if (socketAddress.startsWith(QLatin1Char('\0'))) { // Abstract Unix socket case // Check if the combination type/access control is supported if ((accessControl == SocketAccessControlLocalhost && !supportsAbstractUnixSocketsOnLocalhost()) || (accessControl == SocketAccessControlCredentials && !supportsAbstractUnixSocketsWithCredentials()) ) { warning() << "You requested an address type/access control combination " "not supported by this channel"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The requested address type/access control " "combination is not supported"), OutgoingStreamTubeChannelPtr(this)); } setAddressType(SocketAddressTypeAbstractUnix); setAccessControl(accessControl); setLocalAddress(socketAddress); PendingVoid *pv = new PendingVoid( interface()->Offer( SocketAddressTypeAbstractUnix, QDBusVariant(QVariant(socketAddress.toLatin1())), accessControl, parameters), OutgoingStreamTubeChannelPtr(this)); PendingOpenTube *op = new PendingOpenTube(pv, parameters, OutgoingStreamTubeChannelPtr(this)); return op; } else { // Unix socket case // Check if the combination type/access control is supported if ((accessControl == SocketAccessControlLocalhost && !supportsUnixSocketsOnLocalhost()) || (accessControl == SocketAccessControlCredentials && !supportsUnixSocketsWithCredentials()) || (accessControl != SocketAccessControlLocalhost && accessControl != SocketAccessControlCredentials) ) { warning() << "You requested an address type/access control combination " "not supported by this channel"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The requested address type/access control " "combination is not supported"), OutgoingStreamTubeChannelPtr(this)); } setAddressType(SocketAddressTypeUnix); setAccessControl(accessControl); setLocalAddress(socketAddress); PendingVoid *pv = new PendingVoid( interface()->Offer( SocketAddressTypeUnix, QDBusVariant(QVariant(socketAddress.toLatin1())), accessControl, parameters), OutgoingStreamTubeChannelPtr(this)); PendingOpenTube *op = new PendingOpenTube(pv, parameters, OutgoingStreamTubeChannelPtr(this)); return op; } } /** * Offer an Unix socket over the tube. * * Otherwise identical to offerUnixSocket(const QString &, const QVariantMap &, bool), but allows * passing the local service's address as an already listening QLocalServer. * * This method requires OutgoingStreamTubeChannel::FeatureCore to be ready. * * \param server A valid QLocalServer, which should be already listening for incoming connections. * \param parameters A dictionary of arbitrary parameters to send with the tube offer. * \param requireCredentials Whether the server should require a SCM_CRED or SCM_CREDENTIALS message * upon connection. * \return A PendingOperation which will emit PendingOperation::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). * \sa StreamTubeChannel::supportsUnixSocketsOnLocalhost(), * StreamTubeChannel::supportsUnixSocketsWithCredentials(), * StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost(), * StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials() */ PendingOperation *OutgoingStreamTubeChannel::offerUnixSocket( const QLocalServer *server, const QVariantMap ¶meters, bool requireCredentials) { // In this overload, we're handling a superset of a local socket // Let's redirect the call to QString's overload return offerUnixSocket(server->fullServerName(), parameters, requireCredentials); } /** * Return a map from a source address to the corresponding connections ids. * * The connection ids retrieved here can be used to map a source address * which connected to your socket to a connection ID (for error reporting) and further, to a contact * (by using contactsForConnections()). * * This method is only useful if a TCP socket was offered on this tube and the connection manager * supports #SocketAccessControlPort, which can be discovered using * supportsIPv4SocketsWithSpecifiedAddress() and supportsIPv6SocketsWithSpecifiedAddress() for IPv4 * and IPv6 sockets respectively. * * Note that this function will only return valid data after the tube has been opened. * * This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready. * * \return The map from source addresses as (QHostAddress, port in native byte order) pairs to the * corresponding connection ids. * \sa connectionsForCredentials() */ QHash, uint> OutgoingStreamTubeChannel::connectionsForSourceAddresses() const { if (addressType() != SocketAddressTypeIPv4 && addressType() != SocketAddressTypeIPv6) { warning() << "OutgoingStreamTubeChannel::connectionsForSourceAddresses() makes sense " "just when offering a TCP socket"; return QHash, uint>(); } if (isValid() || !isDroppingConnections() || !requestedFeatures().contains(StreamTubeChannel::FeatureConnectionMonitoring)) { if (!isReady(StreamTubeChannel::FeatureConnectionMonitoring)) { warning() << "StreamTubeChannel::FeatureConnectionMonitoring must be ready before " " calling connectionsForSourceAddresses"; return QHash, uint>(); } if (state() != TubeChannelStateOpen) { warning() << "OutgoingStreamTubeChannel::connectionsForSourceAddresses() makes sense " "just when the tube is open"; return QHash, uint>(); } } return mPriv->connectionsForSourceAddresses; } /** * Return a map from a credential byte to the corresponding connections ids. * * The connection ids retrieved here can be used to map a source address * which connected to your socket to a connection ID (for error reporting) and further, to a contact * (by using contactsForConnections()). * * This method is only useful if this tube was offered using an Unix socket and passing credential * bytes was enabled (\c requireCredentials == true). * * Note that this function will only return valid data after the tube has been opened. * * This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready. * * \return The map from credential bytes to the corresponding connection ids. * \sa connectionsForSourceAddresses() */ QHash OutgoingStreamTubeChannel::connectionsForCredentials() const { if (addressType() != SocketAddressTypeUnix && addressType() != SocketAddressTypeAbstractUnix) { warning() << "OutgoingStreamTubeChannel::connectionsForCredentials() makes sense " "just when offering an Unix socket"; return QHash(); } if (accessControl() != SocketAccessControlCredentials) { warning() << "OutgoingStreamTubeChannel::connectionsForCredentials() makes sense " "just when offering an Unix socket requiring credentials"; return QHash(); } if (isValid() || !isDroppingConnections() || !requestedFeatures().contains(StreamTubeChannel::FeatureConnectionMonitoring)) { if (!isReady(StreamTubeChannel::FeatureConnectionMonitoring)) { warning() << "StreamTubeChannel::FeatureConnectionMonitoring must be ready before " "calling OutgoingStreamTubeChannel::connectionsForCredentials()"; return QHash(); } if (state() != TubeChannelStateOpen) { warning() << "OutgoingStreamTubeChannel::connectionsForCredentials() makes sense " "just when the tube is opened"; return QHash(); } } return mPriv->connectionsForCredentials; } /** * Return a map from connection ids to the associated contact. * * Note that this function will only return valid data after the tube has been opened. * * This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready. * \return The map from connection ids to pointer to Contact objects. * \sa connectionsForSourceAddresses(), connectionsForCredentials(), * StreamTubeChannel::addressType() */ QHash OutgoingStreamTubeChannel::contactsForConnections() const { if (isValid() || !isDroppingConnections() || !requestedFeatures().contains(StreamTubeChannel::FeatureConnectionMonitoring)) { if (!isReady(StreamTubeChannel::FeatureConnectionMonitoring)) { warning() << "StreamTubeChannel::FeatureConnectionMonitoring must be ready before " "calling contactsForConnections"; return QHash(); } if (state() != TubeChannelStateOpen) { warning() << "OutgoingStreamTubeChannel::contactsForConnections() makes sense " "just when the tube is open"; return QHash(); } } return mPriv->contactsForConnections; } void OutgoingStreamTubeChannel::onNewRemoteConnection( uint contactId, const QDBusVariant ¶meter, uint connectionId) { // Request the handles from our queued contact factory QUuid uuid = mPriv->queuedContactFactory->appendNewRequest(UIntList() << contactId); // Add a pending connection mPriv->pendingNewConnections.insert(uuid, qMakePair(connectionId, parameter)); } void OutgoingStreamTubeChannel::onContactsRetrieved( const QUuid &uuid, const QList &contacts) { if (!isValid()) { debug() << "Invalidated OutgoingStreamTubeChannel not emitting queued connection event"; return; } if (!mPriv->pendingNewConnections.contains(uuid)) { if (mPriv->pendingClosedConnections.contains(uuid)) { // closed connection Private::ClosedConnection conn = mPriv->pendingClosedConnections.take(uuid); // First, do removeConnection() so connectionClosed is emitted, and anybody connected to it // (like StreamTubeServer) has a chance to recover the source address / contact removeConnection(conn.id, conn.error, conn.message); // Remove stuff from our hashes mPriv->contactsForConnections.remove(conn.id); QHash, uint>::iterator srcAddrIter = mPriv->connectionsForSourceAddresses.begin(); while (srcAddrIter != mPriv->connectionsForSourceAddresses.end()) { if (srcAddrIter.value() == conn.id) { srcAddrIter = mPriv->connectionsForSourceAddresses.erase(srcAddrIter); } else { ++srcAddrIter; } } QHash::iterator credIter = mPriv->connectionsForCredentials.begin(); while (credIter != mPriv->connectionsForCredentials.end()) { if (credIter.value() == conn.id) { credIter = mPriv->connectionsForCredentials.erase(credIter); } else { ++credIter; } } } else { warning() << "No pending connections found in OSTC" << objectPath() << "for contacts" << contacts; } return; } // new connection QPair connectionProperties = mPriv->pendingNewConnections.take(uuid); // Add it to our connections hash foreach (const Tp::ContactPtr &contact, contacts) { mPriv->contactsForConnections.insert(connectionProperties.first, contact); } QPair address; address.first = QHostAddress::Null; // Now let's try to track the parameter if (addressType() == SocketAddressTypeIPv4) { // Try a qdbus_cast to our address struct: we're shielded from crashes // thanks to our specification SocketAddressIPv4 addr = qdbus_cast(connectionProperties.second.variant()); address.first = QHostAddress(addr.address); address.second = addr.port; } else if (addressType() == SocketAddressTypeIPv6) { SocketAddressIPv6 addr = qdbus_cast(connectionProperties.second.variant()); address.first = QHostAddress(addr.address); address.second = addr.port; } else if (addressType() == SocketAddressTypeUnix || addressType() == SocketAddressTypeAbstractUnix) { if (accessControl() == SocketAccessControlCredentials) { uchar credentialByte = qdbus_cast(connectionProperties.second.variant()); mPriv->connectionsForCredentials.insertMulti(credentialByte, connectionProperties.first); } } if (address.first != QHostAddress::Null) { // We can map it to a source address as well mPriv->connectionsForSourceAddresses.insertMulti(address, connectionProperties.first); } // Time for us to emit the signal addConnection(connectionProperties.first); } // This replaces the base class onConnectionClosed() slot, but unlike a virtual function, is ABI // compatible void OutgoingStreamTubeChannel::onConnectionClosed(uint connectionId, const QString &errorName, const QString &errorMessage) { // Insert a fake request to our queued contact factory to make the close events properly ordered // with new connection events QUuid uuid = mPriv->queuedContactFactory->appendNewRequest(UIntList()); // Add a pending connection close mPriv->pendingClosedConnections.insert(uuid, Private::ClosedConnection(connectionId, errorName, errorMessage)); } } telepathy-qt-0.9.6.1/TelepathyQt/not-filter.h0000644000175100017520000000371512530423576022430 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_not_filter_h_HEADER_GUARD_ #define _TelepathyQt_not_filter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { template class NotFilter : public Filter { public: static SharedPtr > create( const SharedPtr > &filter = SharedPtr >()) { return SharedPtr >(new NotFilter(filter)); } inline virtual ~NotFilter() { } inline virtual bool isValid() const { return mFilter && mFilter->isValid(); } inline virtual bool matches(const SharedPtr &t) const { if (!isValid()) { return false; } return !mFilter->matches(t); } inline SharedPtr > filter() const { return mFilter; } private: NotFilter(const SharedPtr > &filter) : Filter(), mFilter(filter) { } SharedPtr > mFilter; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceAvatarsInterface0000644000175100017520000000043612530423576027177 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceAvatarsInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceAvatarsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ReadinessHelper0000644000175100017520000000037412530423576023172 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ReadinessHelper_HEADER_GUARD_ #define _TelepathyQt_ReadinessHelper_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallStream0000644000175100017520000000035512530423576022143 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallStream_HEADER_GUARD_ #define _TelepathyQt_CallStream_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/incoming-stream-tube-channel.cpp0000644000175100017520000004263512530423576026343 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/incoming-stream-tube-channel.moc.hpp" #include "TelepathyQt/types-internal.h" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT IncomingStreamTubeChannel::Private { Private(IncomingStreamTubeChannel *parent); // Public object IncomingStreamTubeChannel *parent; static bool initRandom; }; bool IncomingStreamTubeChannel::Private::initRandom = true; IncomingStreamTubeChannel::Private::Private(IncomingStreamTubeChannel *parent) : parent(parent) { } /** * \class IncomingStreamTubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/incoming-stream-tube-channel.h * * \brief The IncomingStreamTubeChannel class represents an incoming Telepathy channel * of type StreamTube. * * In particular, this class is meant to be used as a comfortable way for * accepting incoming stream tubes. Tubes can be accepted as TCP and/or Unix sockets with various * access control methods depending on what the service supports using the various overloads of * acceptTubeAsTcpSocket() and acceptTubeAsUnixSocket(). * * Once a tube is successfully accepted and open (the PendingStreamTubeConnection returned from the * accepting methods has finished), the application can connect to the socket the address of which * can be retrieved from PendingStreamTubeConnection::ipAddress() and/or * PendingStreamTubeConnection::localAddress() depending on which accepting method was used. * Connecting to this socket will open a tunneled connection to the service listening at the * offering end of the tube. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * IncomingStreamTubeChannel object usable. * * This is currently the same as StreamTubeChannel::FeatureCore, but may change to include more. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature IncomingStreamTubeChannel::FeatureCore = Feature(QLatin1String(StreamTubeChannel::staticMetaObject.className()), 0); // ST::FeatureCore /** * Create a new IncomingStreamTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A IncomingStreamTubeChannelPtr object pointing to the newly created * IncomingStreamTubeChannel object. */ IncomingStreamTubeChannelPtr IncomingStreamTubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return IncomingStreamTubeChannelPtr(new IncomingStreamTubeChannel(connection, objectPath, immutableProperties, IncomingStreamTubeChannel::FeatureCore)); } /** * Construct a new IncomingStreamTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on IncomingStreamTubeChannel::FeatureCore. */ IncomingStreamTubeChannel::IncomingStreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : StreamTubeChannel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ IncomingStreamTubeChannel::~IncomingStreamTubeChannel() { delete mPriv; } /** * Accept an incoming stream tube as a TCP socket. * * This method accepts an incoming connection request for a stream tube. It can be called * only if the tube is in the #TubeStateLocalPending state. * * The connection manager will open a TCP socket for the application to connect to. The address of * the socket will be returned in PendingStreamTubeConnection::ipAddress() once the operation has * finished successfully. * * This overload lets you specify an allowed address/port combination for connecting to the CM * socket. Connections with other source addresses won't be accepted. The accessors * supportsIPv4SocketsWithSpecifiedAddress() and supportsIPv6SocketsWithSpecifiedAddress() can be * used to verify that the connection manager supports this kind of access control; otherwise, this * method will always fail unless QHostAddress::Any (or QHostAddress::AnyIPv4 in Qt5) or * QHostAddress::AnyIPv6 is passed, in which case the behavior is identical to the always supported * acceptTubeAsTcpSocket() overload. * * Note that when using QHostAddress::Any (or QHostAddress::AnyIPv4 in Qt5) or * QHostAddress::AnyIPv6, \a allowedPort is ignored. * * This method requires IncomingStreamTubeChannel::FeatureCore to be ready. * * \param allowedAddress An allowed address for connecting to the socket. * \param allowedPort An allowed port for connecting to the socket. * \return A PendingStreamTubeConnection which will emit PendingStreamTubeConnection::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). */ PendingStreamTubeConnection *IncomingStreamTubeChannel::acceptTubeAsTcpSocket( const QHostAddress &allowedAddress, quint16 allowedPort) { if (!isReady(IncomingStreamTubeChannel::FeatureCore)) { warning() << "IncomingStreamTubeChannel::FeatureCore must be ready before " "calling acceptTubeAsTcpSocket"; return new PendingStreamTubeConnection(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), IncomingStreamTubeChannelPtr(this)); } // The tube must be in local pending state if (state() != TubeChannelStateLocalPending) { warning() << "You can accept tubes only when they are in LocalPending state"; return new PendingStreamTubeConnection(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), IncomingStreamTubeChannelPtr(this)); } QVariant controlParameter; SocketAccessControl accessControl; QHostAddress hostAddress = allowedAddress; #if QT_VERSION >= 0x050000 if (hostAddress == QHostAddress::Any) { hostAddress = QHostAddress::AnyIPv4; } #endif // Now, let's check what we need to do with accessControl. There is just one special case, Port. if (hostAddress != QHostAddress::Any && #if QT_VERSION >= 0x050000 hostAddress != QHostAddress::AnyIPv4 && #endif hostAddress != QHostAddress::AnyIPv6) { // We need to have a valid QHostAddress AND Port. if (hostAddress.isNull() || allowedPort == 0) { warning() << "You have to set a valid allowed address+port to use Port access control"; return new PendingStreamTubeConnection(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("The supplied allowed address and/or port was invalid"), IncomingStreamTubeChannelPtr(this)); } accessControl = SocketAccessControlPort; // IPv4 or IPv6? if (hostAddress.protocol() == QAbstractSocket::IPv4Protocol) { // IPv4 case SocketAddressIPv4 addr; addr.address = hostAddress.toString(); addr.port = allowedPort; controlParameter = QVariant::fromValue(addr); } else if (hostAddress.protocol() == QAbstractSocket::IPv6Protocol) { // IPv6 case SocketAddressIPv6 addr; addr.address = hostAddress.toString(); addr.port = allowedPort; controlParameter = QVariant::fromValue(addr); } else { // We're handling an IPv4/IPv6 socket only warning() << "acceptTubeAsTcpSocket can be called only with a QHostAddress " "representing an IPv4 or IPv6 address"; return new PendingStreamTubeConnection(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid host given"), IncomingStreamTubeChannelPtr(this)); } } else { // We have to do no special stuff here accessControl = SocketAccessControlLocalhost; // Since QDBusMarshaller does not like null variants, just add an empty string. controlParameter = QVariant(QString()); } // Set the correct address type and access control setAddressType(hostAddress.protocol() == QAbstractSocket::IPv4Protocol ? SocketAddressTypeIPv4 : SocketAddressTypeIPv6); setAccessControl(accessControl); // Fail early if the combination is not supported if ((accessControl == SocketAccessControlLocalhost && addressType() == SocketAddressTypeIPv4 && !supportsIPv4SocketsOnLocalhost()) || (accessControl == SocketAccessControlPort && addressType() == SocketAddressTypeIPv4 && !supportsIPv4SocketsWithSpecifiedAddress()) || (accessControl == SocketAccessControlLocalhost && addressType() == SocketAddressTypeIPv6 && !supportsIPv6SocketsOnLocalhost()) || (accessControl == SocketAccessControlPort && addressType() == SocketAddressTypeIPv6 && !supportsIPv6SocketsWithSpecifiedAddress())) { warning() << "You requested an address type/access control combination " "not supported by this channel"; return new PendingStreamTubeConnection(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The requested address type/access control " "combination is not supported"), IncomingStreamTubeChannelPtr(this)); } // Perform the actual call PendingVariant *pv = new PendingVariant( interface()->Accept( addressType(), accessControl, QDBusVariant(controlParameter)), IncomingStreamTubeChannelPtr(this)); PendingStreamTubeConnection *op = new PendingStreamTubeConnection(pv, addressType(), false, 0, IncomingStreamTubeChannelPtr(this)); return op; } /** * Accept an incoming stream tube as a TCP socket. * * This method accepts an incoming connection request for a stream tube. It can be called * only if the tube is in the #TubeStateLocalPending state. * * The connection manager will open a TCP socket for the application to connect to. The address of * the socket will be returned in PendingStreamTubeConnection::ipAddress() once the operation has * finished successfully. * * Using this overload, the connection manager will accept every incoming connection from localhost. * * This accept method must be supported by all connection managers adhering to the \telepathy_spec. * * This method requires IncomingStreamTubeChannel::FeatureCore to be ready. * * \return A PendingStreamTubeConnection which will emit PendingStreamTubeConnection::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). */ PendingStreamTubeConnection *IncomingStreamTubeChannel::acceptTubeAsTcpSocket() { return acceptTubeAsTcpSocket(QHostAddress::Any, 0); } /** * Accept an incoming stream tube as a Unix socket. * * This method accepts an incoming connection request for a stream tube. It can be called * only if the tube is in the #TubeStateLocalPending state. * * An Unix socket (can be used with QLocalSocket or alike) will be opened by the connection manager * as the local tube endpoint. This is only supported if supportsUnixSocketsOnLocalhost() is \c * true. * * You can also specify whether the CM should require an SCM_CREDS or SCM_CREDENTIALS message * upon connection instead of accepting every incoming connection from localhost. This provides * additional security, but requires sending the byte retrieved from * PendingStreamTubeConnection::credentialByte() in-line in the socket byte stream (in a credentials * message if available on the platform), which might not be compatible with all protocols or * libraries. Also, only connection managers for which supportsUnixSocketsWithCredentials() is \c * true support this type of access control. * * This method requires IncomingStreamTubeChannel::FeatureCore to be ready. * * \param requireCredentials Whether the CM should require an SCM_CREDS or SCM_CREDENTIALS message * upon connection. * \return A PendingStreamTubeConnection which will emit PendingStreamTubeConnection::finished * when the stream tube is ready to be used * (hence in the #TubeStateOpen state). * \sa StreamTubeChannel::supportsUnixSocketsOnLocalhost(), * StreamTubeChannel::supportsUnixSocketsWithCredentials(), * StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost(), * StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials() */ PendingStreamTubeConnection *IncomingStreamTubeChannel::acceptTubeAsUnixSocket( bool requireCredentials) { if (!isReady(IncomingStreamTubeChannel::FeatureCore)) { warning() << "IncomingStreamTubeChannel::FeatureCore must be ready before " "calling acceptTubeAsUnixSocket"; return new PendingStreamTubeConnection(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), IncomingStreamTubeChannelPtr(this)); } // The tube must be in local pending state if (state() != TubeChannelStateLocalPending) { warning() << "You can accept tubes only when they are in LocalPending state"; return new PendingStreamTubeConnection(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), IncomingStreamTubeChannelPtr(this)); } SocketAccessControl accessControl = requireCredentials ? SocketAccessControlCredentials : SocketAccessControlLocalhost; setAddressType(SocketAddressTypeUnix); setAccessControl(accessControl); // Fail early if the combination is not supported if ((accessControl == SocketAccessControlLocalhost && addressType() == SocketAddressTypeUnix && !supportsUnixSocketsOnLocalhost()) || (accessControl == SocketAccessControlCredentials && addressType() == SocketAddressTypeUnix && !supportsUnixSocketsWithCredentials()) || (accessControl == SocketAccessControlLocalhost && addressType() == SocketAddressTypeAbstractUnix && !supportsAbstractUnixSocketsOnLocalhost()) || (accessControl == SocketAccessControlCredentials && addressType() == SocketAddressTypeAbstractUnix && !supportsAbstractUnixSocketsWithCredentials())) { warning() << "You requested an address type/access control combination " "not supported by this channel"; return new PendingStreamTubeConnection(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The requested address type/access control " "combination is not supported"), IncomingStreamTubeChannelPtr(this)); } QDBusVariant accessControlParam; uchar credentialByte = 0; if (accessControl == SocketAccessControlLocalhost) { accessControlParam.setVariant(qVariantFromValue(static_cast(0))); } else if (accessControl == SocketAccessControlCredentials) { if (mPriv->initRandom) { qsrand(QTime::currentTime().msec()); mPriv->initRandom = false; } credentialByte = static_cast(qrand()); accessControlParam.setVariant(qVariantFromValue(credentialByte)); } else { Q_ASSERT(false); } // Perform the actual call PendingVariant *pv = new PendingVariant( interface()->Accept( addressType(), accessControl, accessControlParam), IncomingStreamTubeChannelPtr(this)); PendingStreamTubeConnection *op = new PendingStreamTubeConnection(pv, addressType(), requireCredentials, credentialByte, IncomingStreamTubeChannelPtr(this)); return op; } void IncomingStreamTubeChannel::onNewLocalConnection(uint connectionId) { addConnection(connectionId); } } telepathy-qt-0.9.6.1/TelepathyQt/base-channel-internal.h0000644000175100017520000005554412530423576024506 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2013 Matthias Gehre * @copyright Copyright 2013 Canonical Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/_gen/svc-channel.h" #include #include #include #include "TelepathyQt/debug-internal.h" namespace Tp { class TP_QT_NO_EXPORT BaseChannel::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QString channelType READ channelType) Q_PROPERTY(QStringList interfaces READ interfaces) Q_PROPERTY(uint targetHandle READ targetHandle) Q_PROPERTY(QString targetID READ targetID) Q_PROPERTY(uint targetHandleType READ targetHandleType) Q_PROPERTY(bool requested READ requested) Q_PROPERTY(uint initiatorHandle READ initiatorHandle) Q_PROPERTY(QString initiatorID READ initiatorID) public: Adaptee(const QDBusConnection &dbusConnection, BaseChannel *cm); ~Adaptee(); QString channelType() const { return mChannel->channelType(); } QStringList interfaces() const; uint targetHandle() const { return mChannel->targetHandle(); } QString targetID() const { return mChannel->targetID(); } uint targetHandleType() const { return mChannel->targetHandleType(); } bool requested() const { return mChannel->requested(); } uint initiatorHandle() const { return mChannel->initiatorHandle(); } QString initiatorID() const { return mChannel->initiatorID(); } private Q_SLOTS: void close(const Tp::Service::ChannelAdaptor::CloseContextPtr &context); void getChannelType(const Tp::Service::ChannelAdaptor::GetChannelTypeContextPtr &context) { context->setFinished(channelType()); } void getHandle(const Tp::Service::ChannelAdaptor::GetHandleContextPtr &context) { context->setFinished(targetHandleType(), targetHandle()); } void getInterfaces(const Tp::Service::ChannelAdaptor::GetInterfacesContextPtr &context) { context->setFinished(interfaces()); } public: BaseChannel *mChannel; Service::ChannelAdaptor *mAdaptor; signals: void closed(); }; class TP_QT_NO_EXPORT BaseChannelTextType::Adaptee : public QObject { Q_OBJECT public: Adaptee(BaseChannelTextType *interface); ~Adaptee(); public slots: void acknowledgePendingMessages(const Tp::UIntList &IDs, const Tp::Service::ChannelTypeTextAdaptor::AcknowledgePendingMessagesContextPtr &context); //deprecated: //void getMessageTypes(const Tp::Service::ChannelTypeTextAdaptor::GetMessageTypesContextPtr &context); //void listPendingMessages(bool clear, const Tp::Service::ChannelTypeTextAdaptor::ListPendingMessagesContextPtr &context); //void send(uint type, const QString &text, const Tp::Service::ChannelTypeTextAdaptor::SendContextPtr &context); signals: void lostMessage(); void received(uint ID, uint timestamp, uint sender, uint type, uint flags, const QString &text); void sendError(uint error, uint timestamp, uint type, const QString &text); void sent(uint timestamp, uint type, const QString &text); public: BaseChannelTextType *mInterface; }; class TP_QT_NO_EXPORT BaseChannelMessagesInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList supportedContentTypes READ supportedContentTypes) Q_PROPERTY(Tp::UIntList messageTypes READ messageTypes) Q_PROPERTY(uint messagePartSupportFlags READ messagePartSupportFlags) Q_PROPERTY(Tp::MessagePartListList pendingMessages READ pendingMessages) Q_PROPERTY(uint deliveryReportingSupport READ deliveryReportingSupport) public: Adaptee(BaseChannelMessagesInterface *interface); ~Adaptee(); QStringList supportedContentTypes() { return mInterface->supportedContentTypes(); } Tp::UIntList messageTypes() { return mInterface->messageTypes(); } uint messagePartSupportFlags() { return mInterface->messagePartSupportFlags(); } uint deliveryReportingSupport() { return mInterface->deliveryReportingSupport(); } Tp::MessagePartListList pendingMessages() { return mInterface->pendingMessages(); } public slots: void sendMessage(const Tp::MessagePartList &message, uint flags, const Tp::Service::ChannelInterfaceMessagesAdaptor::SendMessageContextPtr &context); //deprecated, never implemented: //void getPendingMessageContent(uint messageID, const Tp::UIntList &parts, const Tp::Service::ChannelInterfaceMessagesAdaptor::GetPendingMessageContentContextPtr &context); signals: void messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken); void pendingMessagesRemoved(const Tp::UIntList &messageIDs); void messageReceived(const Tp::MessagePartList &message); public: BaseChannelMessagesInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelRoomListType::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QString server READ server) public: Adaptee(BaseChannelRoomListType *interface); ~Adaptee(); QString server() const; private Q_SLOTS: void getListingRooms( const Tp::Service::ChannelTypeRoomListAdaptor::GetListingRoomsContextPtr &context); void listRooms( const Tp::Service::ChannelTypeRoomListAdaptor::ListRoomsContextPtr &context); void stopListing( const Tp::Service::ChannelTypeRoomListAdaptor::StopListingContextPtr &context); Q_SIGNALS: void gotRooms(const Tp::RoomInfoList &rooms); void listingRooms(bool listing); private: BaseChannelRoomListType *mInterface; }; class TP_QT_NO_EXPORT BaseChannelServerAuthenticationType::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QString authenticationMethod READ authenticationMethod) public: Adaptee(BaseChannelServerAuthenticationType *interface); ~Adaptee(); QString authenticationMethod() const; public: BaseChannelServerAuthenticationType *mInterface; }; class TP_QT_NO_EXPORT BaseChannelCaptchaAuthenticationInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(bool canRetryCaptcha READ canRetryCaptcha) Q_PROPERTY(uint captchaStatus READ captchaStatus) Q_PROPERTY(QString captchaError READ captchaError) Q_PROPERTY(QVariantMap captchaErrorDetails READ captchaErrorDetails) public: Adaptee(BaseChannelCaptchaAuthenticationInterface *interface); ~Adaptee(); bool canRetryCaptcha() const; uint captchaStatus() const; QString captchaError() const; QVariantMap captchaErrorDetails() const; public slots: void getCaptchas(const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchasContextPtr &context); void getCaptchaData(uint ID, const QString &mimeType, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::GetCaptchaDataContextPtr &context); void answerCaptchas(const Tp::CaptchaAnswers &answers, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::AnswerCaptchasContextPtr &context); void cancelCaptcha(uint reason, const QString &debugMessage, const Tp::Service::ChannelInterfaceCaptchaAuthenticationAdaptor::CancelCaptchaContextPtr &context); public: BaseChannelCaptchaAuthenticationInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelSASLAuthenticationInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QStringList availableMechanisms READ availableMechanisms) Q_PROPERTY(bool hasInitialData READ hasInitialData) Q_PROPERTY(bool canTryAgain READ canTryAgain) Q_PROPERTY(uint saslStatus READ saslStatus) Q_PROPERTY(QString saslError READ saslError) Q_PROPERTY(QVariantMap saslErrorDetails READ saslErrorDetails) Q_PROPERTY(QString authorizationIdentity READ authorizationIdentity) Q_PROPERTY(QString defaultUsername READ defaultUsername) Q_PROPERTY(QString defaultRealm READ defaultRealm) Q_PROPERTY(bool maySaveResponse READ maySaveResponse) public: Adaptee(BaseChannelSASLAuthenticationInterface *interface); ~Adaptee(); QStringList availableMechanisms() const; bool hasInitialData() const; bool canTryAgain() const; uint saslStatus() const; QString saslError() const; QVariantMap saslErrorDetails() const; QString authorizationIdentity() const; QString defaultUsername() const; QString defaultRealm() const; bool maySaveResponse() const; private Q_SLOTS: void startMechanism(const QString &mechanism, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismContextPtr &context); void startMechanismWithData(const QString &mechanism, const QByteArray &initialData, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::StartMechanismWithDataContextPtr &context); void respond(const QByteArray &responseData, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::RespondContextPtr &context); void acceptSasl( const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AcceptSASLContextPtr &context); void abortSasl(uint reason, const QString &debugMessage, const Tp::Service::ChannelInterfaceSASLAuthenticationAdaptor::AbortSASLContextPtr &context); signals: void saslStatusChanged(uint status, const QString &reason, const QVariantMap &details); void newChallenge(const QByteArray &challengeData); private: BaseChannelSASLAuthenticationInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelSecurableInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(bool encrypted READ encrypted) Q_PROPERTY(bool verified READ verified) public: Adaptee(BaseChannelSecurableInterface *interface); ~Adaptee(); bool encrypted() const; bool verified() const; private: BaseChannelSecurableInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelChatStateInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(Tp::ChatStateMap chatStates READ chatStates) public: Adaptee(BaseChannelChatStateInterface *interface); ~Adaptee(); Tp::ChatStateMap chatStates() const; private Q_SLOTS: void setChatState(uint state, const Tp::Service::ChannelInterfaceChatStateAdaptor::SetChatStateContextPtr &context); signals: void chatStateChanged(uint contact, uint state); private: BaseChannelChatStateInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelGroupInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(uint groupFlags READ groupFlags) Q_PROPERTY(Tp::HandleOwnerMap handleOwners READ handleOwners) Q_PROPERTY(Tp::LocalPendingInfoList localPendingMembers READ localPendingMembers) Q_PROPERTY(Tp::UIntList members READ members) Q_PROPERTY(Tp::UIntList remotePendingMembers READ remotePendingMembers) Q_PROPERTY(uint selfHandle READ selfHandle) Q_PROPERTY(Tp::HandleIdentifierMap memberIdentifiers READ memberIdentifiers) public: Adaptee(BaseChannelGroupInterface *interface); ~Adaptee(); uint groupFlags() const; Tp::HandleOwnerMap handleOwners() const; Tp::LocalPendingInfoList localPendingMembers() const; Tp::UIntList members() const; Tp::UIntList remotePendingMembers() const; uint selfHandle() const; Tp::HandleIdentifierMap memberIdentifiers() const; public slots: void addMembers(const Tp::UIntList &contacts, const QString &message, const Tp::Service::ChannelInterfaceGroupAdaptor::AddMembersContextPtr &context); void getAllMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetAllMembersContextPtr &context); void getGroupFlags(const Tp::Service::ChannelInterfaceGroupAdaptor::GetGroupFlagsContextPtr &context); void getHandleOwners(const Tp::UIntList &handles, const Tp::Service::ChannelInterfaceGroupAdaptor::GetHandleOwnersContextPtr &context); void getLocalPendingMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersContextPtr &context); void getLocalPendingMembersWithInfo(const Tp::Service::ChannelInterfaceGroupAdaptor::GetLocalPendingMembersWithInfoContextPtr &context); void getMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetMembersContextPtr &context); void getRemotePendingMembers(const Tp::Service::ChannelInterfaceGroupAdaptor::GetRemotePendingMembersContextPtr &context); void getSelfHandle(const Tp::Service::ChannelInterfaceGroupAdaptor::GetSelfHandleContextPtr &context); void removeMembers(const Tp::UIntList &contacts, const QString &message, const Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersContextPtr &context); void removeMembersWithReason(const Tp::UIntList &contacts, const QString &message, uint reason, const Tp::Service::ChannelInterfaceGroupAdaptor::RemoveMembersWithReasonContextPtr &context); signals: void handleOwnersChangedDetailed(const Tp::HandleOwnerMap &added, const Tp::UIntList &removed, const Tp::HandleIdentifierMap &identifiers); void selfContactChanged(uint selfHandle, const QString &selfID); void groupFlagsChanged(uint added, uint removed); void membersChanged(const QString &message, const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, uint actor, uint reason); void membersChangedDetailed(const Tp::UIntList &added, const Tp::UIntList &removed, const Tp::UIntList &localPending, const Tp::UIntList &remotePending, const QVariantMap &details); //All other signals are deprecated public: BaseChannelGroupInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelRoomInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QString roomName READ roomName) Q_PROPERTY(QString server READ server) Q_PROPERTY(QString creator READ creator) Q_PROPERTY(uint creatorHandle READ creatorHandle) Q_PROPERTY(QDateTime creationTimestamp READ creationTimestamp) public: Adaptee(BaseChannelRoomInterface *interface); ~Adaptee(); QString roomName() const; QString server() const; QString creator() const; uint creatorHandle() const; QDateTime creationTimestamp() const; private: BaseChannelRoomInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelRoomConfigInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(bool anonymous READ anonymous) Q_PROPERTY(bool inviteOnly READ inviteOnly) Q_PROPERTY(uint limit READ limit) Q_PROPERTY(bool moderated READ moderated) Q_PROPERTY(QString title READ title) Q_PROPERTY(QString description READ description) Q_PROPERTY(bool persistent READ persistent) Q_PROPERTY(bool private READ isPrivate) Q_PROPERTY(bool passwordProtected READ passwordProtected) Q_PROPERTY(QString password READ password) Q_PROPERTY(QString passwordHint READ passwordHint) Q_PROPERTY(bool canUpdateConfiguration READ canUpdateConfiguration) Q_PROPERTY(QStringList mutableProperties READ mutableProperties) Q_PROPERTY(bool configurationRetrieved READ configurationRetrieved) public: Adaptee(BaseChannelRoomConfigInterface *interface); ~Adaptee(); bool anonymous() const; bool inviteOnly() const; uint limit() const; bool moderated() const; QString title() const; QString description() const; bool persistent() const; bool isPrivate() const; bool passwordProtected() const; QString password() const; QString passwordHint() const; bool canUpdateConfiguration() const; QStringList mutableProperties() const; bool configurationRetrieved() const; private Q_SLOTS: void updateConfiguration(const QVariantMap &properties, const Tp::Service::ChannelInterfaceRoomConfigAdaptor::UpdateConfigurationContextPtr &context); private: BaseChannelRoomConfigInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelCallType::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(Tp::ObjectPathList contents READ contents) Q_PROPERTY(QVariantMap callStateDetails READ callStateDetails) Q_PROPERTY(uint callState READ callState) Q_PROPERTY(uint callFlags READ callFlags) Q_PROPERTY(Tp::CallStateReason callStateReason READ callStateReason) Q_PROPERTY(bool hardwareStreaming READ hardwareStreaming) Q_PROPERTY(Tp::CallMemberMap callMembers READ callMembers) Q_PROPERTY(Tp::HandleIdentifierMap memberIdentifiers READ memberIdentifiers) Q_PROPERTY(uint initialTransport READ initialTransport) Q_PROPERTY(bool initialAudio READ initialAudio) Q_PROPERTY(bool initialVideo READ initialVideo) Q_PROPERTY(QString initialVideoName READ initialVideoName) Q_PROPERTY(QString initialAudioName READ initialAudioName) Q_PROPERTY(bool mutableContents READ mutableContents) public: Adaptee(BaseChannelCallType *interface); ~Adaptee(); Tp::ObjectPathList contents() const { return mInterface->contents(); } QVariantMap callStateDetails() const { return mInterface->callStateDetails(); } uint callState() const { return mInterface->callState(); } uint callFlags() const { return mInterface->callFlags(); } Tp::CallStateReason callStateReason() const { return mInterface->callStateReason(); } bool hardwareStreaming() const { return mInterface->hardwareStreaming(); } Tp::CallMemberMap callMembers() const { return mInterface->callMembers(); } Tp::HandleIdentifierMap memberIdentifiers() const { return mInterface->memberIdentifiers(); } uint initialTransport() const { return mInterface->initialTransport(); } bool initialAudio() const { return mInterface->initialAudio(); } bool initialVideo() const { return mInterface->initialVideo(); } QString initialVideoName() const { return mInterface->initialVideoName(); } QString initialAudioName() const { return mInterface->initialAudioName(); } bool mutableContents() const { return mInterface->mutableContents(); } public slots: void setRinging(const Tp::Service::ChannelTypeCallAdaptor::SetRingingContextPtr &context); void setQueued(const Tp::Service::ChannelTypeCallAdaptor::SetQueuedContextPtr &context); void accept(const Tp::Service::ChannelTypeCallAdaptor::AcceptContextPtr &context); void hangup(uint reason, const QString &detailedHangupReason, const QString &message, const Tp::Service::ChannelTypeCallAdaptor::HangupContextPtr &context); void addContent(const QString &contentName, const Tp::MediaStreamType &contentType, const Tp::MediaStreamDirection &initialDirection, const Tp::Service::ChannelTypeCallAdaptor::AddContentContextPtr &context); signals: void contentAdded(const QDBusObjectPath &content); void contentRemoved(const QDBusObjectPath &content, const Tp::CallStateReason &reason); void callStateChanged(uint callState, uint callFlags, const Tp::CallStateReason &stateReason, const QVariantMap &callStateDetails); void callMembersChanged(const Tp::CallMemberMap &flagsChanged, const Tp::HandleIdentifierMap &identifiers, const Tp::UIntList &removed, const Tp::CallStateReason &reason); public: BaseChannelCallType *mInterface; }; class TP_QT_NO_EXPORT BaseChannelSMSInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(bool flash READ flash) Q_PROPERTY(bool smsChannel READ smsChannel) public: Adaptee(BaseChannelSMSInterface *interface); ~Adaptee(); bool flash() { return mInterface->flash(); } bool smsChannel() { return mInterface->smsChannel(); } public slots: void getSMSLength(const Tp::MessagePartList &messages, const Tp::Service::ChannelInterfaceSMSAdaptor::GetSMSLengthContextPtr &context); signals: void smsChannelChanged(bool smsChannel); public: BaseChannelSMSInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelHoldInterface::Adaptee : public QObject { Q_OBJECT public: Adaptee(BaseChannelHoldInterface *interface); ~Adaptee(); public slots: void getHoldState(const Tp::Service::ChannelInterfaceHoldAdaptor::GetHoldStateContextPtr &context); void requestHold(bool hold, const Tp::Service::ChannelInterfaceHoldAdaptor::RequestHoldContextPtr &context); signals: void holdStateChanged(uint holdState, uint reason); public: BaseChannelHoldInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelConferenceInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(Tp::ObjectPathList channels READ channels) Q_PROPERTY(Tp::ObjectPathList initialChannels READ initialChannels) Q_PROPERTY(Tp::UIntList initialInviteeHandles READ initialInviteeHandles) Q_PROPERTY(QStringList initialInviteeIDs READ initialInviteeIDs) Q_PROPERTY(QString invitationMessage READ invitationMessage) Q_PROPERTY(ChannelOriginatorMap originalChannels READ originalChannels) public: Adaptee(BaseChannelConferenceInterface *interface); ~Adaptee(); Tp::ObjectPathList channels() const { return mInterface->channels(); } Tp::ObjectPathList initialChannels() const { return mInterface->initialChannels(); } Tp::UIntList initialInviteeHandles() const { return mInterface->initialInviteeHandles(); } QStringList initialInviteeIDs() const { return mInterface->initialInviteeIDs(); } QString invitationMessage() const { return mInterface->invitationMessage(); } ChannelOriginatorMap originalChannels() const { return mInterface->originalChannels(); } signals: void channelMerged(const QDBusObjectPath &channel, uint channelHandle, const QVariantMap &properties); void channelRemoved(const QDBusObjectPath &channel, const QVariantMap& details); public: BaseChannelConferenceInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelMergeableConferenceInterface::Adaptee : public QObject { Q_OBJECT public: Adaptee(BaseChannelMergeableConferenceInterface *interface); ~Adaptee(); public slots: void merge(const QDBusObjectPath &channel, const Tp::Service::ChannelInterfaceMergeableConferenceAdaptor::MergeContextPtr &context); public: BaseChannelMergeableConferenceInterface *mInterface; }; class TP_QT_NO_EXPORT BaseChannelSplittableInterface::Adaptee : public QObject { Q_OBJECT public: Adaptee(BaseChannelSplittableInterface *interface); ~Adaptee(); public slots: void split(const Tp::Service::ChannelInterfaceSplittableAdaptor::SplitContextPtr &context); public: BaseChannelSplittableInterface *mInterface; }; } telepathy-qt-0.9.6.1/TelepathyQt/client-registrar.h0000644000175100017520000000666212530423576023627 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_client_registrar_h_HEADER_GUARD_ #define _TelepathyQt_client_registrar_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include namespace Tp { class TP_QT_EXPORT ClientRegistrar : public Object { Q_OBJECT Q_DISABLE_COPY(ClientRegistrar) public: static ClientRegistrarPtr create(const QDBusConnection &bus); static ClientRegistrarPtr create( const AccountFactoryConstPtr &accountFactory = AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); static ClientRegistrarPtr create(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); static ClientRegistrarPtr create(const AccountManagerPtr &accountManager); ~ClientRegistrar(); QDBusConnection dbusConnection() const; AccountFactoryConstPtr accountFactory() const; ConnectionFactoryConstPtr connectionFactory() const; ChannelFactoryConstPtr channelFactory() const; ContactFactoryConstPtr contactFactory() const; QList registeredClients() const; bool registerClient(const AbstractClientPtr &client, const QString &clientName, bool unique = false); bool unregisterClient(const AbstractClientPtr &client); void unregisterClients(); private: ClientRegistrar(const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); struct Private; friend struct Private; Private *mPriv; static QHash, ClientRegistrar *> registrarForConnection; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/base-connection.h0000644000175100017520000005017412530423576023415 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_base_connection_h_HEADER_GUARD_ #define _TelepathyQt_base_connection_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include class QString; namespace Tp { class TP_QT_EXPORT BaseConnection : public DBusService { Q_OBJECT Q_DISABLE_COPY(BaseConnection) public: static BaseConnectionPtr create(const QString &cmName, const QString &protocolName, const QVariantMap ¶meters, const QDBusConnection &dbusConnection = QDBusConnection::sessionBus()) { return BaseConnectionPtr(new BaseConnection( dbusConnection, cmName, protocolName, parameters)); } template static SharedPtr create(const QString &cmName, const QString &protocolName, const QVariantMap ¶meters, const QDBusConnection &dbusConnection = QDBusConnection::sessionBus()) { return SharedPtr(new BaseConnectionSubclass( dbusConnection, cmName, protocolName, parameters)); } virtual ~BaseConnection(); QString cmName() const; QString protocolName() const; QVariantMap parameters() const; QVariantMap immutableProperties() const; uint selfHandle() const; void setSelfHandle(uint selfHandle); QString selfID() const; void setSelfID(const QString &selfID); void setSelfContact(uint selfHandle, const QString &selfID); uint status() const; void setStatus(uint newStatus, uint reason); typedef Callback2 CreateChannelCallback; void setCreateChannelCallback(const CreateChannelCallback &cb); BaseChannelPtr createChannel(const QVariantMap &request, bool suppressHandler, DBusError *error); typedef Callback1 ConnectCallback; void setConnectCallback(const ConnectCallback &cb); typedef Callback3 InspectHandlesCallback; void setInspectHandlesCallback(const InspectHandlesCallback &cb); QStringList inspectHandles(uint handleType, const Tp::UIntList &handles, DBusError *error); typedef Callback3 RequestHandlesCallback; void setRequestHandlesCallback(const RequestHandlesCallback &cb); Tp::UIntList requestHandles(uint handleType, const QStringList &identifiers, DBusError *error); Tp::ChannelInfoList channelsInfo(); Tp::ChannelDetailsList channelsDetails(); BaseChannelPtr ensureChannel(const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error); void addChannel(BaseChannelPtr channel, bool suppressHandler = false); QList interfaces() const; AbstractConnectionInterfacePtr interface(const QString &interfaceName) const; bool plugInterface(const AbstractConnectionInterfacePtr &interface); bool registerObject(DBusError *error = NULL); virtual QString uniqueName() const; Q_SIGNALS: void disconnected(); private Q_SLOTS: TP_QT_NO_EXPORT void removeChannel(); protected: BaseConnection(const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap ¶meters); virtual bool registerObject(const QString &busName, const QString &objectPath, DBusError *error); virtual bool matchChannel(const Tp::BaseChannelPtr &channel, const QVariantMap &request, Tp::DBusError *error); private: class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT AbstractConnectionInterface : public AbstractDBusServiceInterface { Q_OBJECT Q_DISABLE_COPY(AbstractConnectionInterface) public: AbstractConnectionInterface(const QString &interfaceName); virtual ~AbstractConnectionInterface(); private: friend class BaseConnection; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionRequestsInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionRequestsInterface) public: static BaseConnectionRequestsInterfacePtr create(BaseConnection* connection) { return BaseConnectionRequestsInterfacePtr(new BaseConnectionRequestsInterface(connection)); } template static SharedPtr create(BaseConnection* connection) { return SharedPtr( new BaseConnectionRequestsInterfaceSubclass(connection)); } virtual ~BaseConnectionRequestsInterface(); QVariantMap immutableProperties() const; Tp::RequestableChannelClassList requestableChannelClasses; void ensureChannel(const QVariantMap &request, bool &yours, QDBusObjectPath &channel, QVariantMap &details, DBusError* error); void createChannel(const QVariantMap &request, QDBusObjectPath &channel, QVariantMap &details, DBusError* error); public Q_SLOTS: void newChannels(const Tp::ChannelDetailsList &channels); void channelClosed(const QDBusObjectPath &removed); protected: BaseConnectionRequestsInterface(BaseConnection* connection); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionContactsInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionContactsInterface) public: static BaseConnectionContactsInterfacePtr create() { return BaseConnectionContactsInterfacePtr(new BaseConnectionContactsInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionContactsInterfaceSubclass()); } virtual ~BaseConnectionContactsInterface(); QVariantMap immutableProperties() const; typedef Callback3 GetContactAttributesCallback; void setGetContactAttributesCallback(const GetContactAttributesCallback &cb); ContactAttributesMap getContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, DBusError *error); void setContactAttributeInterfaces(const QStringList &contactAttributeInterfaces); protected: BaseConnectionContactsInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionSimplePresenceInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionSimplePresenceInterface) public: static BaseConnectionSimplePresenceInterfacePtr create() { return BaseConnectionSimplePresenceInterfacePtr(new BaseConnectionSimplePresenceInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionSimplePresenceInterfaceSubclass()); } virtual ~BaseConnectionSimplePresenceInterface(); QVariantMap immutableProperties() const; Tp::SimpleStatusSpecMap statuses() const; void setStatuses(const Tp::SimpleStatusSpecMap &statuses); uint maximumStatusMessageLength() const; void setMaximumStatusMessageLength(uint maximumStatusMessageLength); typedef Callback3 SetPresenceCallback; void setSetPresenceCallback(const SetPresenceCallback &cb); void setPresences(const Tp::SimpleContactPresences &presences); Tp::SimpleContactPresences getPresences(const Tp::UIntList &contacts); protected: BaseConnectionSimplePresenceInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionContactListInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionContactListInterface) public: static BaseConnectionContactListInterfacePtr create() { return BaseConnectionContactListInterfacePtr(new BaseConnectionContactListInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionContactListInterfaceSubclass()); } virtual ~BaseConnectionContactListInterface(); QVariantMap immutableProperties() const; uint contactListState() const; void setContactListState(uint contactListState); bool contactListPersists() const; void setContactListPersists(bool contactListPersists); bool canChangeContactList() const; void setCanChangeContactList(bool canChangeContactList); bool requestUsesMessage() const; void setRequestUsesMessage(bool requestUsesMessage); bool downloadAtConnection() const; void setDownloadAtConnection(bool downloadAtConnection); typedef Callback3 GetContactListAttributesCallback; void setGetContactListAttributesCallback(const GetContactListAttributesCallback &cb); Tp::ContactAttributesMap getContactListAttributes(const QStringList &interfaces, bool hold, DBusError *error); typedef Callback3 RequestSubscriptionCallback; void setRequestSubscriptionCallback(const RequestSubscriptionCallback &cb); void requestSubscription(const Tp::UIntList &contacts, const QString &message, DBusError *error); typedef Callback2 AuthorizePublicationCallback; void setAuthorizePublicationCallback(const AuthorizePublicationCallback &cb); void authorizePublication(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 RemoveContactsCallback; void setRemoveContactsCallback(const RemoveContactsCallback &cb); void removeContacts(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 UnsubscribeCallback; void setUnsubscribeCallback(const UnsubscribeCallback &cb); void unsubscribe(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 UnpublishCallback; void setUnpublishCallback(const UnpublishCallback &cb); void unpublish(const Tp::UIntList &contacts, DBusError *error); typedef Callback1 DownloadCallback; void setDownloadCallback(const DownloadCallback &cb); void download(DBusError *error); void contactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals); protected: BaseConnectionContactListInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionContactInfoInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionContactInfoInterface) public: static BaseConnectionContactInfoInterfacePtr create() { return BaseConnectionContactInfoInterfacePtr(new BaseConnectionContactInfoInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionContactInfoInterfaceSubclass()); } virtual ~BaseConnectionContactInfoInterface(); QVariantMap immutableProperties() const; Tp::ContactInfoFlags contactInfoFlags() const; void setContactInfoFlags(const Tp::ContactInfoFlags &contactInfoFlags); Tp::FieldSpecs supportedFields() const; void setSupportedFields(const Tp::FieldSpecs &supportedFields); typedef Callback2 GetContactInfoCallback; void setGetContactInfoCallback(const GetContactInfoCallback &cb); Tp::ContactInfoMap getContactInfo(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 RefreshContactInfoCallback; void setRefreshContactInfoCallback(const RefreshContactInfoCallback &cb); void refreshContactInfo(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 RequestContactInfoCallback; void setRequestContactInfoCallback(const RequestContactInfoCallback &cb); Tp::ContactInfoFieldList requestContactInfo(uint contact, DBusError *error); typedef Callback2 SetContactInfoCallback; void setSetContactInfoCallback(const SetContactInfoCallback &cb); void setContactInfo(const Tp::ContactInfoFieldList &contactInfo, DBusError *error); void contactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo); protected: BaseConnectionContactInfoInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionAddressingInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionAddressingInterface) public: static BaseConnectionAddressingInterfacePtr create() { return BaseConnectionAddressingInterfacePtr(new BaseConnectionAddressingInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionAddressingInterfaceSubclass()); } virtual ~BaseConnectionAddressingInterface(); QVariantMap immutableProperties() const; typedef Callback6 < void, const QString&, const QStringList&, const QStringList&, Tp::AddressingNormalizationMap&, Tp::ContactAttributesMap&, DBusError* > GetContactsByVCardFieldCallback; void setGetContactsByVCardFieldCallback(const GetContactsByVCardFieldCallback &cb); typedef Callback5 < void, const QStringList&, const QStringList&, Tp::AddressingNormalizationMap&, Tp::ContactAttributesMap&, DBusError* > GetContactsByURICallback; void setGetContactsByURICallback(const GetContactsByURICallback &cb); protected: BaseConnectionAddressingInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionAliasingInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionAliasingInterface) public: static BaseConnectionAliasingInterfacePtr create() { return BaseConnectionAliasingInterfacePtr(new BaseConnectionAliasingInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionAliasingInterfaceSubclass()); } virtual ~BaseConnectionAliasingInterface(); QVariantMap immutableProperties() const; typedef Callback1 GetAliasFlagsCallback; void setGetAliasFlagsCallback(const GetAliasFlagsCallback &cb); Tp::ConnectionAliasFlags getAliasFlags(DBusError *error); typedef Callback2 RequestAliasesCallback; void setRequestAliasesCallback(const RequestAliasesCallback &cb); QStringList requestAliases(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 GetAliasesCallback; void setGetAliasesCallback(const GetAliasesCallback &cb); Tp::AliasMap getAliases(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 SetAliasesCallback; void setSetAliasesCallback(const SetAliasesCallback &cb); void setAliases(const Tp::AliasMap &aliases, DBusError *error); void aliasesChanged(const Tp::AliasPairList &aliases); protected: BaseConnectionAliasingInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseConnectionAvatarsInterface : public AbstractConnectionInterface { Q_OBJECT Q_DISABLE_COPY(BaseConnectionAvatarsInterface) public: static BaseConnectionAvatarsInterfacePtr create() { return BaseConnectionAvatarsInterfacePtr(new BaseConnectionAvatarsInterface()); } template static SharedPtr create() { return SharedPtr( new BaseConnectionAvatarsInterfaceSubclass()); } virtual ~BaseConnectionAvatarsInterface(); QVariantMap immutableProperties() const; AvatarSpec avatarDetails() const; void setAvatarDetails(const AvatarSpec &spec); typedef Callback2 GetKnownAvatarTokensCallback; void setGetKnownAvatarTokensCallback(const GetKnownAvatarTokensCallback &cb); Tp::AvatarTokenMap getKnownAvatarTokens(const Tp::UIntList &contacts, DBusError *error); typedef Callback2 RequestAvatarsCallback; void setRequestAvatarsCallback(const RequestAvatarsCallback &cb); void requestAvatars(const Tp::UIntList &contacts, DBusError *error); typedef Callback3 SetAvatarCallback; void setSetAvatarCallback(const SetAvatarCallback &cb); QString setAvatar(const QByteArray &avatar, const QString &mimeType, DBusError *error); typedef Callback1 ClearAvatarCallback; void setClearAvatarCallback(const ClearAvatarCallback &cb); void clearAvatar(DBusError *error); void avatarUpdated(uint contact, const QString &newAvatarToken); void avatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type); protected: BaseConnectionAvatarsInterface(); private: void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/TelepathyQtService.pc.in0000644000175100017520000000132612530423576024706 0ustar00kaffeinekaffeine00000000000000prefix=${CMAKE_INSTALL_PREFIX} exec_prefix=${CMAKE_INSTALL_PREFIX} libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR} Name: TelepathyQt${QT_VERSION_MAJOR}Service Description: Qt Telepathy Service side bindings Version: ${PACKAGE_VERSION} Requires.private: Qt${QT_VERSION_PC}Core >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Core < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}DBus >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}DBus < ${QT_MAX_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION} Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR}-service Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR} telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceContactBlockingInterface0000644000175100017520000000045612530423576030644 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceContactBlockingInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceContactBlockingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/BaseProtocolAddressingInterface0000644000175100017520000000043112530423576026330 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseProtocolAddressingInterface_HEADER_GUARD_ #define _TelepathyQt_BaseProtocolAddressingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallChannel0000644000175100017520000000036012530423576022254 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallChannel_HEADER_GUARD_ #define _TelepathyQt_CallChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/channel-factory.h0000644000175100017520000004013412530423576023416 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_factory_h_HEADER_GUARD_ #define _TelepathyQt_channel_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include // For Q_DISABLE_COPY #include #include #include class QDBusConnection; namespace Tp { class ChannelClassSpec; class TP_QT_EXPORT ChannelFactory : public DBusProxyFactory { Q_OBJECT Q_DISABLE_COPY(ChannelFactory) public: #ifndef DOXYGEN_SHOULD_SKIP_THIS struct TP_QT_EXPORT Constructor : public RefCounted { virtual ~Constructor() {} virtual ChannelPtr construct(const ConnectionPtr &conn, const QString &objectPath, const QVariantMap &immutableProperties) const = 0; }; typedef SharedPtr ConstructorPtr; typedef SharedPtr ConstructorConstPtr; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ static ChannelFactoryPtr create(const QDBusConnection &bus); virtual ~ChannelFactory(); Features featuresForTextChats(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForTextChats(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForTextChats( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForTextChats(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForTextChats(SubclassCtor::create(), additionalProps); } void setConstructorForTextChats(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForTextChatrooms(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForTextChatrooms(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForTextChatrooms( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForTextChatrooms(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForTextChatrooms(SubclassCtor::create(), additionalProps); } void setConstructorForTextChatrooms(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForCalls(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForCalls(const Features &features, const QVariantMap &additionalProps = QVariantMap()); template void setSubclassForCalls(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForCalls(SubclassCtor::create(), additionalProps); } void setConstructorForCalls(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); TP_QT_DEPRECATED Features featuresForStreamedMediaCalls(const QVariantMap &additionalProps = QVariantMap()) const; TP_QT_DEPRECATED void addFeaturesForStreamedMediaCalls(const Features &features, const QVariantMap &additionalProps = QVariantMap()); TP_QT_DEPRECATED ConstructorConstPtr constructorForStreamedMediaCalls( const QVariantMap &additionalProps = QVariantMap()) const; template TP_QT_DEPRECATED void setSubclassForStreamedMediaCalls(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForStreamedMediaCalls(SubclassCtor::create(), additionalProps); } TP_QT_DEPRECATED void setConstructorForStreamedMediaCalls(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForRoomLists(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForRoomLists(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForRoomLists( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForRoomLists(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForRoomLists(SubclassCtor::create(), additionalProps); } void setConstructorForRoomLists(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForOutgoingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForOutgoingFileTransfers(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForOutgoingFileTransfers( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForOutgoingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForOutgoingFileTransfers(SubclassCtor::create(), additionalProps); } void setConstructorForOutgoingFileTransfers(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForIncomingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForIncomingFileTransfers(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForIncomingFileTransfers( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForIncomingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForIncomingFileTransfers(SubclassCtor::create(), additionalProps); } void setConstructorForIncomingFileTransfers(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForOutgoingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForOutgoingStreamTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForOutgoingStreamTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForOutgoingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForOutgoingStreamTubes(SubclassCtor::create(), additionalProps); } void setConstructorForOutgoingStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForIncomingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForIncomingStreamTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForIncomingStreamTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForIncomingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForIncomingStreamTubes(SubclassCtor::create(), additionalProps); } void setConstructorForIncomingStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForOutgoingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForOutgoingRoomStreamTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForOutgoingRoomStreamTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForOutgoingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForOutgoingRoomStreamTubes(SubclassCtor::create(), additionalProps); } void setConstructorForOutgoingRoomStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForIncomingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForIncomingRoomStreamTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForIncomingRoomStreamTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForIncomingRoomStreamTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForIncomingRoomStreamTubes(SubclassCtor::create(), additionalProps); } void setConstructorForIncomingRoomStreamTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForOutgoingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForOutgoingDBusTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForOutgoingDBusTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForOutgoingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForOutgoingDBusTubes(SubclassCtor::create(), additionalProps); } void setConstructorForOutgoingDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForIncomingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForIncomingDBusTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForIncomingDBusTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForIncomingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForIncomingDBusTubes(SubclassCtor::create(), additionalProps); } void setConstructorForIncomingDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForOutgoingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForOutgoingRoomDBusTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForOutgoingRoomDBusTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForOutgoingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForOutgoingRoomDBusTubes(SubclassCtor::create(), additionalProps); } void setConstructorForOutgoingRoomDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForIncomingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForIncomingRoomDBusTubes(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForIncomingRoomDBusTubes( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForIncomingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForIncomingRoomDBusTubes(SubclassCtor::create(), additionalProps); } void setConstructorForIncomingRoomDBusTubes(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForContactSearches(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForContactSearches(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForContactSearches( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForContactSearches(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForContactSearches(SubclassCtor::create(), additionalProps); } void setConstructorForContactSearches(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features featuresForServerAuthentication(const QVariantMap &additionalProps = QVariantMap()) const; void addFeaturesForServerAuthentication(const Features &features, const QVariantMap &additionalProps = QVariantMap()); ConstructorConstPtr constructorForServerAuthentication( const QVariantMap &additionalProps = QVariantMap()) const; template void setSubclassForServerAuthentication(const QVariantMap &additionalProps = QVariantMap()) { setConstructorForServerAuthentication(SubclassCtor::create(), additionalProps); } void setConstructorForServerAuthentication(const ConstructorConstPtr &ctor, const QVariantMap &additionalProps = QVariantMap()); Features commonFeatures() const; void addCommonFeatures(const Features &features); ConstructorConstPtr fallbackConstructor() const; template void setFallbackSubclass() { setFallbackConstructor(SubclassCtor::create()); } void setFallbackConstructor(const ConstructorConstPtr &ctor); Features featuresFor(const ChannelClassSpec &channelClass) const; void addFeaturesFor(const ChannelClassSpec &channelClass, const Features &features); template void setSubclassFor(const ChannelClassSpec &channelClass) { setConstructorFor(channelClass, SubclassCtor::create()); } ConstructorConstPtr constructorFor(const ChannelClassSpec &channelClass) const; void setConstructorFor(const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor); PendingReady *proxy(const ConnectionPtr &connection, const QString &channelPath, const QVariantMap &immutableProperties) const; protected: ChannelFactory(const QDBusConnection &bus); #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct SubclassCtor : public Constructor { static ConstructorPtr create() { return ConstructorPtr(new SubclassCtor()); } virtual ~SubclassCtor() {} ChannelPtr construct(const ConnectionPtr &conn, const QString &objectPath, const QVariantMap &immutableProperties) const { return Subclass::create(conn, objectPath, immutableProperties); } }; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const; // Nothing we'd like to prepare() virtual Features featuresFor(const DBusProxyPtr &proxy) const; private: struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-send-message.h0000644000175100017520000000421212530423576024333 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_send_message_h_HEADER_GUARD_ #define _TelepathyQt_pending_send_message_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include class QDBusPendingCallWatcher; class QString; namespace Tp { class Message; class TP_QT_EXPORT PendingSendMessage : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingSendMessage) public: ~PendingSendMessage(); TextChannelPtr channel() const; ContactMessengerPtr messenger() const; QString sentMessageToken() const; Message message() const; private Q_SLOTS: TP_QT_NO_EXPORT void onTextSent(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onMessageSent(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onCDMessageSent(QDBusPendingCallWatcher *watcher); private: friend class TextChannel; friend class ContactMessenger; TP_QT_NO_EXPORT PendingSendMessage(const TextChannelPtr &channel, const Message &message); TP_QT_NO_EXPORT PendingSendMessage(const ContactMessengerPtr &messenger, const Message &message); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/AccountInterface0000644000175100017520000000036512530423576023332 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountInterface_HEADER_GUARD_ #define _TelepathyQt_AccountInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/StreamTubeChannel0000644000175100017520000000040312530423576023452 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StreamTubeChannel_HEADER_GUARD_ #define _TelepathyQt_StreamTubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/call-content.cpp0000644000175100017520000004061112530423576023257 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/call-content.moc.hpp" #include "TelepathyQt/_gen/cli-call-content-body.hpp" #include "TelepathyQt/_gen/cli-call-content.moc.hpp" #include #include #include #include #include #include #include namespace Tp { /* ====== CallContent ====== */ struct TP_QT_NO_EXPORT CallContent::Private { Private(CallContent *parent, const CallChannelPtr &channel); static void introspectMainProperties(Private *self); void checkIntrospectionCompleted(); CallStreamPtr addStream(const QDBusObjectPath &streamPath); CallStreamPtr lookupStream(const QDBusObjectPath &streamPath); // Public object CallContent *parent; WeakPtr channel; // Mandatory proxies Client::CallContentInterface *contentInterface; ReadinessHelper *readinessHelper; // Introspection QString name; uint type; uint disposition; CallStreams streams; CallStreams incompleteStreams; }; CallContent::Private::Private(CallContent *parent, const CallChannelPtr &channel) : parent(parent), channel(channel.data()), contentInterface(parent->interface()), readinessHelper(parent->readinessHelper()) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMainProperties, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); readinessHelper->becomeReady(FeatureCore); } void CallContent::Private::introspectMainProperties(CallContent::Private *self) { CallContent *parent = self->parent; CallChannelPtr channel = parent->channel(); parent->connect(self->contentInterface, SIGNAL(StreamsAdded(Tp::ObjectPathList)), SLOT(onStreamsAdded(Tp::ObjectPathList))); parent->connect(self->contentInterface, SIGNAL(StreamsRemoved(Tp::ObjectPathList,Tp::CallStateReason)), SLOT(onStreamsRemoved(Tp::ObjectPathList,Tp::CallStateReason))); parent->connect(self->contentInterface->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotMainProperties(Tp::PendingOperation*))); } void CallContent::Private::checkIntrospectionCompleted() { if (!parent->isReady(FeatureCore) && incompleteStreams.size() == 0) { readinessHelper->setIntrospectCompleted(FeatureCore, true); } } CallStreamPtr CallContent::Private::addStream(const QDBusObjectPath &streamPath) { CallStreamPtr stream = CallStreamPtr( new CallStream(CallContentPtr(parent), streamPath)); incompleteStreams.append(stream); parent->connect(stream->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onStreamReady(Tp::PendingOperation*))); return stream; } CallStreamPtr CallContent::Private::lookupStream(const QDBusObjectPath &streamPath) { foreach (const CallStreamPtr &stream, streams) { if (stream->objectPath() == streamPath.path()) { return stream; } } foreach (const CallStreamPtr &stream, incompleteStreams) { if (stream->objectPath() == streamPath.path()) { return stream; } } return CallStreamPtr(); } /** * \class CallContent * \ingroup clientchannel * \headerfile TelepathyQt/call-content.h * * \brief The CallContent class provides an object representing a Telepathy * Call.Content. * * Instances of this class cannot be constructed directly; the only way to get * one is via CallChannel. * * See \ref async_model */ /** * Feature representing the core that needs to become ready to make the * CallContent object usable. * * Note that this feature must be enabled in order to use most CallContent * methods. See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature CallContent::FeatureCore = Feature(QLatin1String(CallContent::staticMetaObject.className()), 0); /** * Construct a new CallContent object. * * \param channel The channel owning this media content. * \param name The object path of this media content. */ CallContent::CallContent(const CallChannelPtr &channel, const QDBusObjectPath &objectPath) : StatefulDBusProxy(channel->dbusConnection(), channel->busName(), objectPath.path(), FeatureCore), OptionalInterfaceFactory(this), mPriv(new Private(this, channel)) { } /** * Class destructor. */ CallContent::~CallContent() { delete mPriv; } /** * Return the channel owning this media content. * * \return The channel owning this media content. */ CallChannelPtr CallContent::channel() const { return CallChannelPtr(mPriv->channel); } /** * Return the name of this media content. * * \return The name of this media content. */ QString CallContent::name() const { return mPriv->name; } /** * Return the type of this media content. * * \return The type of this media content. */ MediaStreamType CallContent::type() const { return (MediaStreamType) mPriv->type; } /** * Return the disposition of this media content. * * \return The disposition of this media content. */ CallContentDisposition CallContent::disposition() const { return (CallContentDisposition) mPriv->disposition; } /** * Return the media streams of this media content. * * \return A list of media streams of this media content. * \sa streamAdded(), streamRemoved() */ CallStreams CallContent::streams() const { return mPriv->streams; } /** * Removes this media content from the call. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *CallContent::remove() { return new PendingVoid(mPriv->contentInterface->Remove(), CallContentPtr(this)); } /** * Return whether sending DTMF events is supported on this content. * DTMF is only supported on audio contents that implement the * #TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. * * \returns \c true if DTMF is supported, or \c false otherwise. */ bool CallContent::supportsDTMF() const { return hasInterface(TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF); } /** * Start sending a DTMF tone on this media stream. * * Where possible, the tone will continue until stopDTMFTone() is called. * On certain protocols, it may only be possible to send events with a predetermined * length. In this case, the implementation may emit a fixed-length tone, * and the stopDTMFTone() method call should return #TP_QT_ERROR_NOT_AVAILABLE. * * If this content does not support the #TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF * interface, the resulting PendingOperation will fail with error code * #TP_QT_ERROR_NOT_IMPLEMENTED. * * \param event A numeric event code from the #DTMFEvent enum. * \return A PendingOperation which will emit PendingOperation::finished * when the request finishes. * \sa stopDTMFTone(), supportsDTMF() */ PendingOperation *CallContent::startDTMFTone(DTMFEvent event) { if (!supportsDTMF()) { warning() << "CallContent::startDTMFTone() used with no dtmf interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("This CallContent does not support the dtmf interface"), CallContentPtr(this)); } Client::CallContentInterfaceDTMFInterface *dtmfInterface = interface(); return new PendingVoid(dtmfInterface->StartTone(event), CallContentPtr(this)); } /** * Stop sending any DTMF tone which has been started using the startDTMFTone() * method. * * If there is no current tone, the resulting PendingOperation will * finish successfully. * * If this content does not support the #TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF * interface, the resulting PendingOperation will fail with error code * #TP_QT_ERROR_NOT_IMPLEMENTED. * * \return A PendingOperation which will emit PendingOperation::finished * when the request finishes. * \sa startDTMFTone(), supportsDTMF() */ PendingOperation *CallContent::stopDTMFTone() { if (!supportsDTMF()) { warning() << "CallContent::stopDTMFTone() used with no dtmf interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("This CallContent does not support the dtmf interface"), CallContentPtr(this)); } Client::CallContentInterfaceDTMFInterface *dtmfInterface = interface(); return new PendingVoid(dtmfInterface->StopTone(), CallContentPtr(this)); } void CallContent::gotMainProperties(PendingOperation *op) { if (op->isError()) { warning().nospace() << "CallContentInterface::requestAllProperties() failed with" << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); return; } debug() << "Got reply to CallContentInterface::requestAllProperties()"; PendingVariantMap *pvm = qobject_cast(op); Q_ASSERT(pvm); QVariantMap props = pvm->result(); mPriv->name = qdbus_cast(props[QLatin1String("Name")]); mPriv->type = qdbus_cast(props[QLatin1String("Type")]); mPriv->disposition = qdbus_cast(props[QLatin1String("Disposition")]); setInterfaces(qdbus_cast(props[QLatin1String("Interfaces")])); ObjectPathList streamsPaths = qdbus_cast(props[QLatin1String("Streams")]); if (streamsPaths.size() != 0) { foreach (const QDBusObjectPath &streamPath, streamsPaths) { CallStreamPtr stream = mPriv->lookupStream(streamPath); if (!stream) { mPriv->addStream(streamPath); } } } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } } void CallContent::onStreamsAdded(const ObjectPathList &streamsPaths) { foreach (const QDBusObjectPath &streamPath, streamsPaths) { debug() << "Received Call::Content::StreamAdded for stream" << streamPath.path(); if (mPriv->lookupStream(streamPath)) { debug() << "Stream already exists, ignoring"; return; } mPriv->addStream(streamPath); } } void CallContent::onStreamsRemoved(const ObjectPathList &streamsPaths, const CallStateReason &reason) { foreach (const QDBusObjectPath &streamPath, streamsPaths) { debug() << "Received Call::Content::StreamRemoved for stream" << streamPath.path(); CallStreamPtr stream = mPriv->lookupStream(streamPath); if (!stream) { debug() << "Stream does not exist, ignoring"; return; } bool incomplete = mPriv->incompleteStreams.contains(stream); if (incomplete) { mPriv->incompleteStreams.removeOne(stream); } else { mPriv->streams.removeOne(stream); } if (isReady(FeatureCore) && !incomplete) { emit streamRemoved(stream, reason); } mPriv->checkIntrospectionCompleted(); } } void CallContent::onStreamReady(PendingOperation *op) { PendingReady *pr = qobject_cast(op); CallStreamPtr stream = CallStreamPtr::qObjectCast(pr->proxy()); if (op->isError() || !mPriv->incompleteStreams.contains(stream)) { mPriv->incompleteStreams.removeOne(stream); mPriv->checkIntrospectionCompleted(); return; } mPriv->incompleteStreams.removeOne(stream); mPriv->streams.append(stream); if (isReady(FeatureCore)) { emit streamAdded(stream); } mPriv->checkIntrospectionCompleted(); } /** * \fn void CallContent::streamAdded(const Tp::CallStreamPtr &stream); * * This signal is emitted when a new media stream is added to this media * content. * * \param stream The media stream that was added. * \sa streams() */ /** * \fn void CallContent::streamRemoved(const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason); * * This signal is emitted when a new media stream is removed from this media * content. * * \param stream The media stream that was removed. * \param reason The reason for this removal. * \sa streams() */ /* ====== PendingCallContent ====== */ struct TP_QT_NO_EXPORT PendingCallContent::Private { Private(PendingCallContent *parent, const CallChannelPtr &channel) : parent(parent), channel(channel) { } PendingCallContent *parent; CallChannelPtr channel; CallContentPtr content; }; PendingCallContent::PendingCallContent(const CallChannelPtr &channel, const QString &name, MediaStreamType type, MediaStreamDirection direction) : PendingOperation(channel), mPriv(new Private(this, channel)) { Client::ChannelTypeCallInterface *callInterface = channel->interface(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( callInterface->AddContent(name, type, direction), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotContent(QDBusPendingCallWatcher*))); } PendingCallContent::~PendingCallContent() { delete mPriv; } CallContentPtr PendingCallContent::content() const { if (!isFinished() || !isValid()) { return CallContentPtr(); } return mPriv->content; } void PendingCallContent::gotContent(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Call::AddContent failed with " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); watcher->deleteLater(); return; } QDBusObjectPath contentPath = reply.value(); CallChannelPtr channel(mPriv->channel); CallContentPtr content = channel->lookupContent(contentPath); if (!content) { content = channel->addContent(contentPath); } connect(content->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onContentReady(Tp::PendingOperation*))); connect(channel.data(), SIGNAL(contentRemoved(Tp::CallContentPtr,Tp::CallStateReason)), SLOT(onContentRemoved(Tp::CallContentPtr))); mPriv->content = content; watcher->deleteLater(); } void PendingCallContent::onContentReady(PendingOperation *op) { if (op->isError()) { setFinishedWithError(op->errorName(), op->errorMessage()); return; } setFinished(); } void PendingCallContent::onContentRemoved(const CallContentPtr &content) { if (isFinished()) { return; } if (mPriv->content == content) { // the content was removed before becoming ready setFinishedWithError(TP_QT_ERROR_CANCELLED, QLatin1String("Content removed before ready")); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/call-content.xml0000644000175100017520000000100112530423576023263 0ustar00kaffeinekaffeine00000000000000 Call Content interfaces, version 1 telepathy-qt-0.9.6.1/TelepathyQt/protocol-info.cpp0000644000175100017520000003455212530423576023475 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ProtocolInfo::Private : public QSharedData { Private() : dbusConnection(QDBusConnection::sessionBus()), // make the compiler happy addressingIface(0) { } Private(const ConnectionManagerPtr &cm, const QString &name) : dbusConnection(cm->dbusConnection()), busName(cm->busName()), cmName(cm->name()), name(name), iconName(QString(QLatin1String("im-%1")).arg(name)), addressingIface(0) { QString escapedProtocolName = name; escapedProtocolName.replace(QLatin1Char('-'), QLatin1Char('_')); objectPath = QString(QLatin1String("%1/%2")).arg(cm->objectPath()).arg(escapedProtocolName); } ~Private() { delete addressingIface; } Client::ProtocolInterfaceAddressingInterface *addressingInterface() { if (!addressingIface) { addressingIface = new Client::ProtocolInterfaceAddressingInterface( dbusConnection, busName, objectPath); } return addressingIface; } QDBusConnection dbusConnection; QString busName; QString objectPath; QString cmName; QString name; ProtocolParameterList params; ConnectionCapabilities caps; QString vcardField; QString englishName; QString iconName; PresenceSpecList statuses; AvatarSpec avatarRequirements; QStringList addressableVCardFields; QStringList addressableUriSchemes; Client::ProtocolInterfaceAddressingInterface *addressingIface; }; /** * \class ProtocolInfo * \ingroup clientcm * \headerfile TelepathyQt/protocol-info.h * * \brief The ProtocolInfo class represents a Telepathy Protocol. */ ProtocolInfo::ProtocolInfo() { } /** * Construct a new ProtocolInfo object. * * \param cm Connection manager owning this ProtocolInfo. * \param name Protocol name. */ ProtocolInfo::ProtocolInfo(const ConnectionManagerPtr &cm, const QString &name) : mPriv(new Private(cm, name)) { } ProtocolInfo::ProtocolInfo(const ProtocolInfo &other) : mPriv(other.mPriv) { } /** * Class destructor. */ ProtocolInfo::~ProtocolInfo() { } ProtocolInfo &ProtocolInfo::operator=(const ProtocolInfo &other) { this->mPriv = other.mPriv; return *this; } /** * Return the short name of the connection manager (e.g. "gabble") for this protocol. * * \return The name of the connection manager for this protocol. */ QString ProtocolInfo::cmName() const { if (!isValid()) { return QString(); } return mPriv->cmName; } /** * Return the string identifying this protocol as described in the \telepathy_spec * (e.g. "jabber"). * * This identifier is not intended to be displayed to users directly; user * interfaces are responsible for mapping them to localized strings. * * \return A string identifying this protocol. */ QString ProtocolInfo::name() const { if (!isValid()) { return QString(); } return mPriv->name; } /** * Return all supported parameters for this protocol. The parameters' names * may either be the well-known strings specified by the \telepathy_spec * (e.g. "account" and "password"), or implementation-specific strings. * * \return A list of parameters for this protocol. */ ProtocolParameterList ProtocolInfo::parameters() const { if (!isValid()) { return ProtocolParameterList(); } return mPriv->params; } /** * Return whether a given parameter can be passed to the connection * manager when creating a connection to this protocol. * * \param name The name of a parameter. * \return true if the given parameter exists. */ bool ProtocolInfo::hasParameter(const QString &name) const { if (!isValid()) { return false; } foreach (const ProtocolParameter ¶m, mPriv->params) { if (param.name() == name) { return true; } } return false; } /** * Return whether it might be possible to register new accounts on this * protocol, by setting the special parameter named * register to true. * * \return The same thing as hasParameter("register"). * \sa hasParameter() */ bool ProtocolInfo::canRegister() const { if (!isValid()) { return false; } return hasParameter(QLatin1String("register")); } /** * Return the capabilities that are expected to be available from a connection * to this protocol, i.e. those for which Connection::createChannel() can * reasonably be expected to succeed. * User interfaces can use this information to show or hide UI components. * * @return An object representing the capabilities expected to be available from * a connection to this protocol. */ ConnectionCapabilities ProtocolInfo::capabilities() const { if (!isValid()) { return ConnectionCapabilities(); } return mPriv->caps; } /** * Return the name of the most common vcard field used for this protocol's * contact identifiers, normalized to lower case. * * 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. * 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. * * \return The most common vcard field used for this protocol's contact * identifiers, or an empty string if there is no such field. */ QString ProtocolInfo::vcardField() const { if (!isValid()) { return QString(); } return mPriv->vcardField; } /** * Return the English-language name of this protocol, such as "AIM" or "Yahoo!". * * The name can be used as a fallback if an application doesn't have a localized name for this * protocol. * * If the manager file or the CM service doesn't specify the english name, it is inferred from this * protocol name, such that for example "google-talk" becomes "Google Talk", but "local-xmpp" * becomes "Local Xmpp". * * \return An English-language name for this protocol. */ QString ProtocolInfo::englishName() const { if (!isValid()) { return QString(); } return mPriv->englishName; } /** * Return the name of an icon for this protocol in the system's icon theme, such as "im-msn". * * If the manager file or the CM service doesn't specify the icon name, "im-" is * assumed. * * \return The likely name of an icon for this protocol. */ QString ProtocolInfo::iconName() const { if (!isValid()) { return QString(); } return mPriv->iconName; } /** * Return a list of PresenceSpec representing the possible presence statuses * from a connection to this protocol. * * \return A list of PresenceSpec representing the possible presence statuses * from a connection to this protocol. */ PresenceSpecList ProtocolInfo::allowedPresenceStatuses() const { if (!isValid()) { return PresenceSpecList(); } return mPriv->statuses; } /** * Return the requirements (size limits, supported MIME types, etc) * for avatars used on to this protocol. * * \return The requirements for avatars used on this protocol. */ AvatarSpec ProtocolInfo::avatarRequirements() const { if (!isValid()) { return AvatarSpec(); } return mPriv->avatarRequirements; } /** * Return the vcard fields that can be used to request a contact with on this protocol, * normalized to lower case. * * \return The vcard fields normalized to lower case. * \sa addressableUriSchemes() */ QStringList ProtocolInfo::addressableVCardFields() const { if (!isValid()) { return QStringList(); } return mPriv->addressableVCardFields; } /** * Return the URI schemes that are supported by this protocol. * * \return The URI schemes. * \sa addressableVCardFields() */ QStringList ProtocolInfo::addressableUriSchemes() const { if (!isValid()) { return QStringList(); } return mPriv->addressableUriSchemes; } /** * Attempt to normalize the given \a vcardAddress. * * For example, a vcard TEL field formatted as +1 (206) 555 1234, * could be normalized to +12065551234. * * If a vcard address X would be normalized to Y, a successful ContactManager * contact request using ContactManager::contactsForVCardAddresses() for * vcard address X would result in a contact with Y reported as an * address that can identify it in Contact::vcardAddresses(). * * \param vcardField The vcard field the \a vcardAddress belongs to. * \param vcardAddress The address to normalize. * \return A PendingString which will emit PendingString::finished * when the address has been normalized or an error occurred. * \sa normalizeContactUri() */ PendingString *ProtocolInfo::normalizeVCardAddress(const QString &vcardField, const QString &vcardAddress) { if (!isValid()) { return new PendingString(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Protocol object is invalid")); } Client::ProtocolInterfaceAddressingInterface *iface = mPriv->addressingInterface(); if (!iface->isValid()) { // cm is still valid but no Protocol object found return new PendingString(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("ConnectionManager does not support Protocol.I.Addressing")); } return new PendingString(iface->NormalizeVCardAddress(vcardField, vcardAddress), SharedPtr()); } /** * Attempt to normalize the given contact \a uri. * * If the URI has extra information beyond what's necessary to identify a particular contact, such * as an XMPP resource or an action to carry out, this extra information wil be removed. * * An example would be xmpp:romeo@Example.Com/Empathy?message;body=Hello, which would be normalized * to xmpp:romeo@example.com. * * If a URI address X would be normalized to Y, a successful ContactManager * contact request using ContactManager::contactsForUris() for * URI address X would result in a contact with Y reported as an * address that can identify it in Contact::uris(). * * \param uri The URI to normalize. * \return A PendingString which will emit PendingString::finished * when the \a uri has been normalized or an error occurred. * \sa normalizeVCardAddress() */ PendingString *ProtocolInfo::normalizeContactUri(const QString &uri) { if (!isValid()) { return new PendingString(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Protocol object is invalid")); } Client::ProtocolInterfaceAddressingInterface *iface = mPriv->addressingInterface(); if (!iface->isValid()) { // cm is still valid but no Protocol object found return new PendingString(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("ConnectionManager does not support Protocol.I.Addressing")); } return new PendingString(iface->NormalizeContactURI(uri), SharedPtr()); } void ProtocolInfo::addParameter(const ParamSpec &spec) { if (!isValid()) { mPriv = new Private; } QVariant defaultValue; if (spec.flags & ConnMgrParamFlagHasDefault) { defaultValue = spec.defaultValue.variant(); } uint flags = spec.flags; if (spec.name.endsWith(QLatin1String("password"))) { flags |= ConnMgrParamFlagSecret; } ProtocolParameter param(spec.name, QDBusSignature(spec.signature), (ConnMgrParamFlag) flags, defaultValue); mPriv->params.append(param); } void ProtocolInfo::setVCardField(const QString &vcardField) { if (!isValid()) { mPriv = new Private; } mPriv->vcardField = vcardField; } void ProtocolInfo::setEnglishName(const QString &englishName) { if (!isValid()) { mPriv = new Private; } mPriv->englishName = englishName; } void ProtocolInfo::setIconName(const QString &iconName) { if (!isValid()) { mPriv = new Private; } mPriv->iconName = iconName; } void ProtocolInfo::setRequestableChannelClasses( const RequestableChannelClassList &caps) { if (!isValid()) { mPriv = new Private; } mPriv->caps.updateRequestableChannelClasses(caps); } void ProtocolInfo::setAllowedPresenceStatuses(const PresenceSpecList &statuses) { if (!isValid()) { mPriv = new Private; } mPriv->statuses = statuses; } void ProtocolInfo::setAvatarRequirements(const AvatarSpec &avatarRequirements) { if (!isValid()) { mPriv = new Private; } mPriv->avatarRequirements = avatarRequirements; } void ProtocolInfo::setAddressableVCardFields(const QStringList &vcardFields) { if (!isValid()) { mPriv = new Private; } mPriv->addressableVCardFields = vcardFields; } void ProtocolInfo::setAddressableUriSchemes(const QStringList &uriSchemes) { if (!isValid()) { mPriv = new Private; } mPriv->addressableUriSchemes = uriSchemes; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/PendingCaptchas0000644000175100017520000000037412530423576023150 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingCaptchas_HEADER_GUARD_ #define _TelepathyQt_PendingCaptchas_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingContacts0000644000175100017520000000037412530423576023200 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingContacts_HEADER_GUARD_ #define _TelepathyQt_PendingContacts_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/message-content-part.h0000644000175100017520000000515112530423576024401 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_message_content_part_h_HEADER_GUARD_ #define _TelepathyQt_message_content_part_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TP_QT_EXPORT MessageContentPart { public: MessageContentPart(); MessageContentPart(const MessagePart &mp); MessageContentPart(const MessageContentPart &other); ~MessageContentPart(); bool isValid() const { return mPriv.constData() != 0; } MessageContentPart &operator=(const MessageContentPart &other); bool operator==(const MessageContentPart &other) const; MessagePart barePart() const; private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT MessageContentPartList : public QList { public: MessageContentPartList() { } MessageContentPartList(const MessagePart &mp) { append(MessageContentPart(mp)); } MessageContentPartList(const MessagePartList &mps) { Q_FOREACH (const MessagePart &mp, mps) { append(MessageContentPart(mp)); } } MessageContentPartList(const MessageContentPart &mcp) { append(mcp); } MessageContentPartList(const QList &other) : QList(other) { } MessagePartList bareParts() const { MessagePartList list; Q_FOREACH (const MessageContentPart &mcp, *this) { list.append(mcp.barePart()); } return list; } }; } // Tp Q_DECLARE_METATYPE(Tp::MessageContentPart); Q_DECLARE_METATYPE(Tp::MessageContentPartList); #endif telepathy-qt-0.9.6.1/TelepathyQt/fixed-feature-factory.cpp0000644000175100017520000000625112530423576025073 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/fixed-feature-factory.moc.hpp" #include namespace Tp { struct TP_QT_NO_EXPORT FixedFeatureFactory::Private { Features features; }; /** * \class FixedFeatureFactory * \ingroup utils * \headerfile TelepathyQt/fixed-feature-factory.h * * \brief The FixedFeatureFactory class is a base class for all D-Bus proxy * factories which want the same set of features for all constructed proxies. */ /** * Class constructor. * * The intention for storing the bus here is that it generally doesn't make sense to construct * proxies for multiple buses in the same context. Allowing that would lead to more complex keying * needs in the cache, as well. * * \param bus The D-Bus bus connection for the objects constructed using this factory. */ FixedFeatureFactory::FixedFeatureFactory(const QDBusConnection &bus) : DBusProxyFactory(bus), mPriv(new Private) { } /** * Class destructor. */ FixedFeatureFactory::~FixedFeatureFactory() { delete mPriv; } /** * Gets the features this factory will make ready on constructed proxies. * * \return The set of features. */ Features FixedFeatureFactory::features() const { return mPriv->features; } /** * Adds a single feature this factory will make ready on further constructed proxies. * * No feature removal is provided, to guard against uncooperative modules removing features other * modules have set and depend on. * * \param feature The feature to add. */ void FixedFeatureFactory::addFeature(const Feature &feature) { addFeatures(Features(feature)); } /** * Adds a set of features this factory will make ready on further constructed proxies. * * No feature removal is provided, to guard against uncooperative modules removing features other * modules have set and depend on. * * \param features The features to add. */ void FixedFeatureFactory::addFeatures(const Features &features) { mPriv->features.unite(features); } /** * Fixed implementation of the per-proxy feature getter. * * \return features(), irrespective of the actual \a proxy. */ Features FixedFeatureFactory::featuresFor(const DBusProxyPtr &proxy) const { Q_UNUSED(proxy); return features(); } } telepathy-qt-0.9.6.1/TelepathyQt/IncomingDBusTubeChannel0000644000175100017520000000042612530423576024545 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_IncomingDBusTubeChannel_HEADER_GUARD_ #define _TelepathyQt_IncomingDBusTubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/account-set.h0000644000175100017520000000446512530423576022575 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_set_h_HEADER_GUARD_ #define _TelepathyQt_account_set_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include namespace Tp { class TP_QT_EXPORT AccountSet : public Object { Q_OBJECT Q_DISABLE_COPY(AccountSet) Q_PROPERTY(AccountManagerPtr accountManager READ accountManager) Q_PROPERTY(AccountFilterConstPtr filter READ filter) Q_PROPERTY(QList accounts READ accounts) public: AccountSet(const AccountManagerPtr &accountManager, const AccountFilterConstPtr &filter); AccountSet(const AccountManagerPtr &accountManager, const QVariantMap &filter); virtual ~AccountSet(); AccountManagerPtr accountManager() const; AccountFilterConstPtr filter() const; QList accounts() const; Q_SIGNALS: void accountAdded(const Tp::AccountPtr &account); void accountRemoved(const Tp::AccountPtr &account); private Q_SLOTS: TP_QT_NO_EXPORT void onNewAccount(const Tp::AccountPtr &account); TP_QT_NO_EXPORT void onAccountRemoved(const Tp::AccountPtr &account); TP_QT_NO_EXPORT void onAccountChanged(const Tp::AccountPtr &account); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/connection-capabilities.h0000644000175100017520000000434212530423576025130 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_capabilities_h_HEADER_GUARD_ #define _TelepathyQt_connection_capabilities_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class TestBackdoors; class TP_QT_EXPORT ConnectionCapabilities : public CapabilitiesBase { public: ConnectionCapabilities(); virtual ~ConnectionCapabilities(); bool textChatrooms() const; TP_QT_DEPRECATED bool conferenceStreamedMediaCalls() const; TP_QT_DEPRECATED bool conferenceStreamedMediaCallsWithInvitees() const; bool conferenceTextChats() const; bool conferenceTextChatsWithInvitees() const; bool conferenceTextChatrooms() const; bool conferenceTextChatroomsWithInvitees() const; bool contactSearches() const; bool contactSearchesWithSpecificServer() const; bool contactSearchesWithLimit() const; bool dbusTubes() const; bool streamTubes() const; protected: friend class Account; friend class Connection; friend class ProtocolInfo; friend class TestBackdoors; ConnectionCapabilities(const RequestableChannelClassList &rccs); ConnectionCapabilities(const RequestableChannelClassSpecList &rccSpecs); }; } // Tp Q_DECLARE_METATYPE(Tp::ConnectionCapabilities); #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-contact-info.cpp0000644000175100017520000000725512530423576024711 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-contact-info.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingContactInfo::Private { Contact::InfoFields info; }; /** * \class PendingContactInfo * \ingroup clientconn * \headerfile TelepathyQt/pending-contact-info.h * * \brief The PendingContactInfo class represents the parameters of and the * reply to an asynchronous contact info request. * * Instances of this class cannot be constructed directly; the only way to get * one is via Contact. * * See \ref async_model */ /** * Construct a new PendingContactInfo object. * * \param contact Contact to use. */ PendingContactInfo::PendingContactInfo(const ContactPtr &contact) : PendingOperation(contact), mPriv(new Private) { ConnectionPtr connection = contact->manager()->connection(); Client::ConnectionInterfaceContactInfoInterface *contactInfoInterface = connection->interface(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( contactInfoInterface->RequestContactInfo( contact->handle()[0]), this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onCallFinished(QDBusPendingCallWatcher*))); } /** * Class destructor. */ PendingContactInfo::~PendingContactInfo() { delete mPriv; } /** * Return the contact through which the request was made. * * \return A pointer to the Contact object. */ ContactPtr PendingContactInfo::contact() const { return ContactPtr(qobject_cast((Contact*) object().data())); } /** * Return the information for contact(). * * \return The contact infor as a Contact::InfoFields object. */ Contact::InfoFields PendingContactInfo::infoFields() const { if (!isFinished()) { warning() << "PendingContactInfo::info called before finished"; } else if (!isValid()) { warning() << "PendingContactInfo::info called when not valid"; } return mPriv->info; } void PendingContactInfo::onCallFinished(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { mPriv->info = Contact::InfoFields(reply.value()); debug() << "Got reply to ContactInfo.RequestContactInfo"; setFinished(); } else { debug().nospace() << "ContactInfo.RequestContactInfo failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/svc-channel.xml0000644000175100017520000000422312530423576023112 0ustar00kaffeinekaffeine00000000000000 Channel interfaces telepathy-qt-0.9.6.1/TelepathyQt/fake-handler-manager-internal.cpp0000644000175100017520000001205612530423576026441 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/fake-handler-manager-internal.h" #include "TelepathyQt/_gen/fake-handler-manager-internal.moc.hpp" #include namespace Tp { FakeHandler::FakeHandler(const QDBusConnection &bus) : QObject(), mBus(bus) { } FakeHandler::~FakeHandler() { } ObjectPathList FakeHandler::handledChannels() const { ObjectPathList ret; foreach (const Channel *channel, mChannels) { ret << QDBusObjectPath(channel->objectPath()); } return ret; } void FakeHandler::registerChannel(const ChannelPtr &channel) { if (mChannels.contains(channel.data())) { return; } mChannels.insert(channel.data()); connect(channel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated(Tp::DBusProxy*))); connect(channel.data(), SIGNAL(destroyed(QObject*)), SLOT(onChannelDestroyed(QObject*))); } void FakeHandler::onChannelInvalidated(DBusProxy *channel) { disconnect(channel, SIGNAL(destroyed(QObject*)), this, SLOT(onChannelDestroyed(QObject*))); onChannelDestroyed(channel); } void FakeHandler::onChannelDestroyed(QObject *obj) { Channel *channel = reinterpret_cast(obj); Q_ASSERT(mChannels.contains(channel)); mChannels.remove(channel); if (mChannels.isEmpty()) { // emit invalidated here instead of relying on QObject::destroyed as FakeHandlerManager // may reuse this fake handler if FakeHandlerManager::registerChannel is called before the // slot from QObject::destroyed is invoked (deleteLater()). emit invalidated(this); deleteLater(); } } FakeHandlerManager *FakeHandlerManager::mInstance = 0; FakeHandlerManager *FakeHandlerManager::instance() { if (!mInstance) { mInstance = new FakeHandlerManager(); } return mInstance; } FakeHandlerManager::FakeHandlerManager() : QObject() { } FakeHandlerManager::~FakeHandlerManager() { mInstance = 0; } ObjectPathList FakeHandlerManager::handledChannels(const QDBusConnection &bus) const { QPair busUniqueId(bus.name(), bus.baseService()); if (mFakeHandlers.contains(busUniqueId)) { FakeHandler *fakeHandler = mFakeHandlers.value(busUniqueId); return fakeHandler->handledChannels(); } return ObjectPathList(); } void FakeHandlerManager::registerClientRegistrar(const ClientRegistrarPtr &cr) { QDBusConnection bus(cr->dbusConnection()); QPair busUniqueId(bus.name(), bus.baseService()); // keep one registrar around per bus so at least the handlers registered by it will be // around until all channels on that bus gets invalidated/destroyed if (!mClientRegistrars.contains(busUniqueId)) { mClientRegistrars.insert(busUniqueId, cr); } } void FakeHandlerManager::registerChannels(const QList &channels) { foreach (const ChannelPtr &channel, channels) { QDBusConnection bus(channel->dbusConnection()); QPair busUniqueId(bus.name(), bus.baseService()); FakeHandler *fakeHandler = mFakeHandlers.value(busUniqueId); if (!fakeHandler) { fakeHandler = new FakeHandler(bus); mFakeHandlers.insert(busUniqueId, fakeHandler); connect(fakeHandler, SIGNAL(invalidated(Tp::FakeHandler*)), SLOT(onFakeHandlerInvalidated(Tp::FakeHandler*))); } fakeHandler->registerChannel(channel); } } void FakeHandlerManager::onFakeHandlerInvalidated(FakeHandler *fakeHandler) { QDBusConnection bus(fakeHandler->dbusConnection()); QPair busUniqueId(bus.name(), bus.baseService()); mFakeHandlers.remove(busUniqueId); // all channels for the bus represented by busUniqueId were already destroyed/invalidated, // we can now free the CR (thus the handlers registered by it) registered for that bus mClientRegistrars.remove(busUniqueId); if (mFakeHandlers.isEmpty()) { // set mInstance to 0 here as we don't want instance() to return a already // deleted instance mInstance = 0; deleteLater(); } } } telepathy-qt-0.9.6.1/TelepathyQt/location-info.h0000644000175100017520000000460512530423576023105 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_location_info_h_HEADER_GUARD_ #define _TelepathyQt_location_info_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include namespace Tp { class TP_QT_EXPORT LocationInfo { public: LocationInfo(); LocationInfo(const QVariantMap &location); LocationInfo(const LocationInfo &other); virtual ~LocationInfo(); bool isValid() const { return mPriv.constData() != 0; } LocationInfo &operator=(const LocationInfo &other); QString countryCode() const; QString country() const; QString region() const; QString locality() const; QString area() const; QString postalCode() const; QString street() const; QString building() const; QString floor() const; QString room() const; QString text() const; QString description() const; QString uri() const; QString language() const; double latitude() const; double longitude() const; double altitude() const; double accuracy() const; double speed() const; double bearing() const; QDateTime timestamp() const; QVariantMap allDetails() const; private: friend class Contact; TP_QT_NO_EXPORT void updateData(const QVariantMap &location); struct Private; friend struct Private; QSharedDataPointer mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::LocationInfo); #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeRoomListInterface0000644000175100017520000000041512530423576025635 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeRoomListInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeRoomListInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/simple-observer.h0000644000175100017520000000746412530423576023470 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_simple_observer_h_HEADER_GUARD_ #define _TelepathyQt_simple_observer_h_HEADER_GUARD_ #include #include #include #include namespace Tp { class PendingOperation; class TP_QT_EXPORT SimpleObserver : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(SimpleObserver) public: static SimpleObserverPtr create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QList &extraChannelFeatures = QList()); static SimpleObserverPtr create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const ContactPtr &contact, const QList &extraChannelFeatures = QList()); static SimpleObserverPtr create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, const QList &extraChannelFeatures = QList()); virtual ~SimpleObserver(); AccountPtr account() const; ChannelClassSpecList channelFilter() const; QString contactIdentifier() const; QList extraChannelFeatures() const; QList channels() const; Q_SIGNALS: void newChannels(const QList &channels); void channelInvalidated(const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); private Q_SLOTS: TP_QT_NO_EXPORT void onAccountConnectionChanged(const Tp::ConnectionPtr &connection); TP_QT_NO_EXPORT void onAccountConnectionConnected(); TP_QT_NO_EXPORT void onContactConstructed(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onNewChannels(const Tp::AccountPtr &channelsAccount, const QList &channels); TP_QT_NO_EXPORT void onChannelInvalidated(const Tp::AccountPtr &channelAccount, const Tp::ChannelPtr &channel, const QString &errorName, const QString &errorMessage); private: friend class SimpleCallObserver; friend class SimpleTextObserver; TP_QT_NO_EXPORT static SimpleObserverPtr create(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, bool requiresNormalization, const QList &extraChannelFeatures); TP_QT_NO_EXPORT SimpleObserver(const AccountPtr &account, const ChannelClassSpecList &channelFilter, const QString &contactIdentifier, bool requiresNormalization, const QList &extraChannelFeatures); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/channel-dispatch-operation-internal.h0000644000175100017520000000317212530423576027357 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_channel_dispatch_operation_internal_h_HEADER_GUARD_ #define _TelepathyQt_channel_dispatch_operation_internal_h_HEADER_GUARD_ #include #include namespace Tp { class TP_QT_NO_EXPORT ChannelDispatchOperation::PendingClaim : public PendingOperation { Q_OBJECT public: PendingClaim(const ChannelDispatchOperationPtr &op, const AbstractClientHandlerPtr &handler = AbstractClientHandlerPtr()); ~PendingClaim(); private Q_SLOTS: TP_QT_NO_EXPORT void onClaimFinished(Tp::PendingOperation *op); private: ChannelDispatchOperationPtr mDispatchOp; AbstractClientHandlerPtr mHandler; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/test-backdoors.cpp0000644000175100017520000000315012530423576023615 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { void TestBackdoors::invalidateProxy(DBusProxy *proxy, const QString &reason, const QString &message) { Q_ASSERT(proxy != 0); Q_ASSERT(proxy->isValid()); proxy->invalidate(reason, message); } ConnectionCapabilities TestBackdoors::createConnectionCapabilities( const RequestableChannelClassSpecList &rccSpecs) { return ConnectionCapabilities(rccSpecs); } ContactCapabilities TestBackdoors::createContactCapabilities( const RequestableChannelClassSpecList &rccSpecs, bool specificToContact) { return ContactCapabilities(rccSpecs, specificToContact); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/MediaStreamHandlerInterface0000644000175100017520000000043012530423576025420 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MediaStreamHandlerInterface_HEADER_GUARD_ #define _TelepathyQt_MediaStreamHandlerInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/RequestableChannelClassSpecList0000644000175100017520000000045212530423576026314 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_RequestableChannelClassSpecList_HEADER_GUARD_ #define _TelepathyQt_RequestableChannelClassSpecList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-variant-map.cpp0000644000175100017520000000503612530423576024537 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-variant-map.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingVariantMap::Private { QVariantMap result; }; /** * \class PendingVariantMap * \ingroup utils * \headerfile TelepathyQt/pending-variant-map.h * * \brief The PendingVariantMap class is a generic subclass of PendingOperation * representing a pending D-Bus method call that returns a variant map. * * See \ref async_model */ PendingVariantMap::PendingVariantMap(QDBusPendingCall call, const SharedPtr &object) : PendingOperation(object), mPriv(new Private) { connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(watcherFinished(QDBusPendingCallWatcher*))); } /** * Class destructor. */ PendingVariantMap::~PendingVariantMap() { delete mPriv; } QVariantMap PendingVariantMap::result() const { return mPriv->result; } void PendingVariantMap::watcherFinished(QDBusPendingCallWatcher* watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got reply to PendingVariantMap call"; mPriv->result = reply.value(); setFinished(); } else { debug().nospace() << "PendingVariantMap call failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/connection-lowlevel.h0000644000175100017520000000602512530423576024330 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_lowlevel_h_HEADER_GUARD_ #define _TelepathyQt_connection_lowlevel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include namespace Tp { class Connection; class PendingChannel; class PendingContactAttributes; class PendingHandles; class PendingOperation; class PendingReady; class TP_QT_EXPORT ConnectionLowlevel : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(ConnectionLowlevel) public: ~ConnectionLowlevel(); bool isValid() const; ConnectionPtr connection() const; PendingReady *requestConnect(const Features &requestedFeatures = Features()); PendingOperation *requestDisconnect(); SimpleStatusSpecMap allowedPresenceStatuses() const; uint maxPresenceStatusMessageLength() const; PendingOperation *setSelfPresence(const QString &status, const QString &statusMessage); PendingChannel *createChannel(const QVariantMap &request); PendingChannel *createChannel(const QVariantMap &request, int timeout); PendingChannel *ensureChannel(const QVariantMap &request); PendingChannel *ensureChannel(const QVariantMap &request, int timeout); PendingHandles *requestHandles(HandleType handleType, const QStringList &names); PendingHandles *referenceHandles(HandleType handleType, const UIntList &handles); PendingContactAttributes *contactAttributes(const UIntList &handles, const QStringList &interfaces, bool reference = true); QStringList contactAttributeInterfaces() const; void injectContactIds(const HandleIdentifierMap &contactIds); void injectContactId(uint handle, const QString &contactId); private: friend class Connection; friend class ContactManager; friend class PendingContacts; TP_QT_NO_EXPORT ConnectionLowlevel(Connection *parent); TP_QT_NO_EXPORT bool hasImmortalHandles() const; TP_QT_NO_EXPORT bool hasContactId(uint handle) const; TP_QT_NO_EXPORT QString contactId(uint handle) const; struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/server-authentication-channel.h0000644000175100017520000000442312530423576026273 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_server_authentication_channel_h_HEADER_GUARD_ #define _TelepathyQt_server_authentication_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class TP_QT_EXPORT ServerAuthenticationChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(ServerAuthenticationChannel) public: static const Feature FeatureCore; static ServerAuthenticationChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~ServerAuthenticationChannel(); CaptchaAuthenticationPtr captchaAuthentication() const; // TODO: Add something for SASL here as well bool hasCaptchaInterface() const; // TODO: Enable when SASL high-level support is in // bool hasSaslInterface() const; protected: ServerAuthenticationChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = ServerAuthenticationChannel::FeatureCore); private Q_SLOTS: TP_QT_NO_EXPORT void gotCaptchaAuthenticationProperties(Tp::PendingOperation *op); TP_QT_NO_EXPORT void gotServerAuthenticationProperties(Tp::PendingOperation *op); private: struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/StatelessDBusProxy0000644000175100017520000000037412530423576023704 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_StatelessDBusProxy_HEADER_GUARD_ #define _TelepathyQt_StatelessDBusProxy_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/message.h0000644000175100017520000001031512530423576021763 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_message_h_HEADER_GUARD_ #define _TelepathyQt_message_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include class QDateTime; namespace Tp { class Contact; class TextChannel; class TP_QT_EXPORT Message { public: Message(ChannelTextMessageType, const QString &); Message(const Message &other); ~Message(); Message &operator=(const Message &other); bool operator==(const Message &other) const; inline bool operator!=(const Message &other) const { return !(*this == other); } // Convenient access to headers QDateTime sent() const; ChannelTextMessageType messageType() const; bool isTruncated() const; bool hasNonTextContent() const; QString messageToken() const; bool isSpecificToDBusInterface() const; QString dbusInterface() const; QString text() const; // Direct access to the whole message (header and body) MessagePart header() const; int size() const; MessagePart part(uint index) const; MessagePartList parts() const; private: friend class ContactMessenger; friend class ReceivedMessage; friend class TextChannel; TP_QT_NO_EXPORT Message(); TP_QT_NO_EXPORT Message(const MessagePartList &parts); TP_QT_NO_EXPORT Message(uint, uint, const QString &); struct Private; friend struct Private; QSharedDataPointer mPriv; }; class TP_QT_EXPORT ReceivedMessage : public Message { public: class DeliveryDetails { public: DeliveryDetails(); DeliveryDetails(const DeliveryDetails &other); ~DeliveryDetails(); DeliveryDetails &operator=(const DeliveryDetails &other); bool isValid() const { return mPriv.constData() != 0; } DeliveryStatus status() const; bool hasOriginalToken() const; QString originalToken() const; bool isError() const; ChannelTextSendError error() const; bool hasDebugMessage() const; QString debugMessage() const; QString dbusError() const; bool hasEchoedMessage() const; Message echoedMessage() const; private: friend class ReceivedMessage; TP_QT_NO_EXPORT DeliveryDetails(const MessagePartList &parts); struct Private; friend struct Private; QSharedDataPointer mPriv; }; ReceivedMessage(const ReceivedMessage &other); ReceivedMessage &operator=(const ReceivedMessage &other); ~ReceivedMessage(); QDateTime received() const; ContactPtr sender() const; QString senderNickname() const; QString supersededToken() const; bool isScrollback() const; bool isRescued() const; bool isDeliveryReport() const; DeliveryDetails deliveryDetails() const; bool isFromChannel(const TextChannelPtr &channel) const; protected: friend class TextChannel; ReceivedMessage(const MessagePartList &parts, const TextChannelPtr &channel); ReceivedMessage(); uint senderHandle() const; QString senderId() const; uint pendingId() const; void setForceNonText(); void clearSenderHandle(); void setSender(const ContactPtr &sender); }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/request-temporary-handler-internal.cpp0000644000175100017520000001056112530423576027632 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/request-temporary-handler-internal.h" #include "TelepathyQt/_gen/request-temporary-handler-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { SharedPtr RequestTemporaryHandler::create(const AccountPtr &account) { return SharedPtr(new RequestTemporaryHandler(account)); } RequestTemporaryHandler::RequestTemporaryHandler(const AccountPtr &account) : AbstractClient(), QObject(), AbstractClientHandler(ChannelClassSpecList(), AbstractClientHandler::Capabilities(), false), mAccount(account), mQueueChannelReceived(true), dbusHandlerInvoked(false) { } RequestTemporaryHandler::~RequestTemporaryHandler() { } void RequestTemporaryHandler::handleChannels( const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo) { Q_ASSERT(dbusHandlerInvoked); QString errorMessage; ChannelPtr oldChannel = channel(); if (channels.size() != 1 || requestsSatisfied.size() != 1) { errorMessage = QLatin1String("Only one channel and one channel request should be given " "to HandleChannels"); } else if (account != mAccount) { errorMessage = QLatin1String("Account received is not the same as the account which made " "the request"); } else if (oldChannel && oldChannel != channels.first()) { errorMessage = QLatin1String("Received a channel that is not the same as the first " "one received"); } if (!errorMessage.isEmpty()) { warning() << "Handling channel failed with" << TP_QT_ERROR_SERVICE_CONFUSED << ":" << errorMessage; // Only emit error if we didn't receive any channel yet. if (!oldChannel) { emit error(TP_QT_ERROR_SERVICE_CONFUSED, errorMessage); } context->setFinishedWithError(TP_QT_ERROR_SERVICE_CONFUSED, errorMessage); return; } ChannelRequestPtr channelRequest = requestsSatisfied.first(); if (!oldChannel) { mChannel = WeakPtr(channels.first()); emit channelReceived(channel(), userActionTime, channelRequest->hints()); } else { if (mQueueChannelReceived) { mChannelReceivedQueue.enqueue(qMakePair(userActionTime, channelRequest->hints())); } else { emit channelReceived(oldChannel, userActionTime, channelRequest->hints()); } } context->setFinished(); } void RequestTemporaryHandler::setQueueChannelReceived(bool queue) { mQueueChannelReceived = queue; if (!queue) { processChannelReceivedQueue(); } } void RequestTemporaryHandler::setDBusHandlerInvoked() { dbusHandlerInvoked = true; } void RequestTemporaryHandler::setDBusHandlerErrored(const QString &errorName, const QString &errorMessage) { Q_ASSERT(dbusHandlerInvoked); if (!channel()) { emit error(errorName, errorMessage); } } void RequestTemporaryHandler::processChannelReceivedQueue() { while (!mChannelReceivedQueue.isEmpty()) { QPair info = mChannelReceivedQueue.dequeue(); emit channelReceived(channel(), info.first, info.second); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-client.h0000644000175100017520000001617512530423576024055 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_stream_tube_client_h_HEADER_GUARD_ #define _TelepathyQt_stream_tube_client_h_HEADER_GUARD_ #include #include #include #include #include #include class QHostAddress; namespace Tp { class PendingStreamTubeConnection; class TP_QT_EXPORT StreamTubeClient : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(StreamTubeClient) class TubeWrapper; public: class TcpSourceAddressGenerator { public: virtual QPair nextSourceAddress(const AccountPtr &account, const IncomingStreamTubeChannelPtr &tube) = 0; protected: virtual ~TcpSourceAddressGenerator() {} }; class Tube : public QPair { public: Tube(); Tube(const AccountPtr &account, const IncomingStreamTubeChannelPtr &channel); Tube(const Tube &other); ~Tube(); bool isValid() const { return mPriv.constData() != 0; } Tube &operator=(const Tube &other); const AccountPtr &account() const { return first; } const IncomingStreamTubeChannelPtr &channel() const { return second; } private: struct Private; friend struct Private; QSharedDataPointer mPriv; }; static StreamTubeClientPtr create( const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false, bool bypassApproval = false, const AccountFactoryConstPtr &accountFactory = AccountFactory::create(QDBusConnection::sessionBus()), const ConnectionFactoryConstPtr &connectionFactory = ConnectionFactory::create(QDBusConnection::sessionBus()), const ChannelFactoryConstPtr &channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()), const ContactFactoryConstPtr &contactFactory = ContactFactory::create()); static StreamTubeClientPtr create( const QDBusConnection &bus, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false, bool bypassApproval = false); static StreamTubeClientPtr create( const AccountManagerPtr &accountManager, const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false, bool bypassApproval = false); static StreamTubeClientPtr create( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices = QStringList(), const QString &clientName = QString(), bool monitorConnections = false, bool bypassApproval = false); virtual ~StreamTubeClient(); ClientRegistrarPtr registrar() const; QString clientName() const; bool isRegistered() const; bool monitorsConnections() const; bool acceptsAsTcp() const; TcpSourceAddressGenerator *tcpGenerator() const; bool acceptsAsUnix() const; void setToAcceptAsTcp(TcpSourceAddressGenerator *generator = 0); void setToAcceptAsUnix(bool requireCredentials = false); QList tubes() const; QHash > connections() const; Q_SIGNALS: void tubeOffered( const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube); void tubeClosed( const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, const QString &error, const QString &message); void tubeAcceptedAsTcp( const QHostAddress &listenAddress, quint16 listenPort, const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube); void tubeAcceptedAsUnix( const QString &listenAddress, bool requiresCredentials, uchar credentialByte, const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube); void newConnection( const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId); void connectionClosed( const Tp::AccountPtr &account, const Tp::IncomingStreamTubeChannelPtr &tube, uint connectionId, const QString &error, const QString &message); private Q_SLOTS: TP_QT_NO_EXPORT void onInvokedForTube( const Tp::AccountPtr &account, const Tp::StreamTubeChannelPtr &tube, const QDateTime &userActionTime, const Tp::ChannelRequestHints &requestHints); TP_QT_NO_EXPORT void onAcceptFinished(TubeWrapper *, Tp::PendingStreamTubeConnection *); TP_QT_NO_EXPORT void onTubeInvalidated(Tp::DBusProxy *, const QString &, const QString &); TP_QT_NO_EXPORT void onNewConnection( TubeWrapper *wrapper, uint conn); TP_QT_NO_EXPORT void onConnectionClosed( TubeWrapper *wrapper, uint conn, const QString &error, const QString &message); private: TP_QT_NO_EXPORT StreamTubeClient( const ClientRegistrarPtr ®istrar, const QStringList &p2pServices, const QStringList &roomServices, const QString &clientName, bool monitorConnections, bool bypassApproval); struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/tls-certificate.cpp0000644000175100017520000000205212530423576023753 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define IN_TP_QT_HEADER #include #include "TelepathyQt/_gen/cli-tls-certificate-body.hpp" #include "TelepathyQt/_gen/cli-tls-certificate.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/tls-certificate.xml0000644000175100017520000000036312530423576023774 0ustar00kaffeinekaffeine00000000000000 TLSCertificate telepathy-qt-0.9.6.1/TelepathyQt/Functors0000644000175100017520000000034612530423576021717 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Functors_HEADER_GUARD_ #define _TelepathyQt_Functors_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/call-stream-endpoint.h0000644000175100017520000000222512530423576024362 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_call_stream_endpoint_h_HEADER_GUARD_ #define _TelepathyQt_call_stream_endpoint_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #endif telepathy-qt-0.9.6.1/TelepathyQt/future-misc.xml0000644000175100017520000000031412530423576023151 0ustar00kaffeinekaffeine00000000000000 Miscellaneous extensions from the future telepathy-qt-0.9.6.1/TelepathyQt/ChannelDispatchOperation0000644000175100017520000000043012530423576025017 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelDispatchOperation_HEADER_GUARD_ #define _TelepathyQt_ChannelDispatchOperation_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CallStreamInterfaceMediaInterface0000644000175100017520000000043312530423576026542 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallStreamInterfaceMediaInterface_HEADER_GUARD_ #define _TelepathyQt_CallStreamInterfaceMediaInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceAliasingInterface0000644000175100017520000000044012530423576027320 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceAliasingInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceAliasingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/account-factory.h0000644000175100017520000000466712530423576023455 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_account_factory_h_HEADER_GUARD_ #define _TelepathyQt_account_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include class QDBusConnection; namespace Tp { class PendingReady; class TP_QT_EXPORT AccountFactory : public FixedFeatureFactory { Q_OBJECT Q_DISABLE_COPY(AccountFactory) public: static AccountFactoryPtr create(const QDBusConnection &bus, const Features &features = Features()); virtual ~AccountFactory(); PendingReady *proxy(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const; protected: AccountFactory(const QDBusConnection &bus, const Features &features); virtual AccountPtr construct(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const; virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const; // Nothing we'd like to prepare() // Fixed features private: struct Private; Private *mPriv; // Currently unused, just for future-proofing }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/abstract-adaptor.cpp0000644000175100017520000000601612530423576024130 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/abstract-adaptor.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT AbstractAdaptor::Private { Private(const QDBusConnection &dbusConnection, QObject *adaptee) : dbusConnection(dbusConnection), adaptee(adaptee) { } QDBusConnection dbusConnection; QObject *adaptee; }; /** * \class AbstractAdaptor * \ingroup servicesideimpl * \headerfile TelepathyQt/abstract-adaptor.h * * \brief Base class for all the low-level service-side adaptors. * * This class serves as the parent for all the generated low-level service-side * adaptors. Adaptors provide the interface of an object on the bus. * * The implementation of this interface should be provided in a special object * called the adaptee. The adaptee is meant to provide properties, signals * and slots that are connected automatically with the adaptor using Qt's meta-object * system. */ /** * Construct a new AbstractAdaptor that operates on the given * \a dbusConnection and redirects calls to the given \a adaptee. * * \param dbusConnection The D-Bus connection to use. * \param adaptee The class the provides the implementation of the calls. * \param parent The QObject parent of this adaptor. */ AbstractAdaptor::AbstractAdaptor(const QDBusConnection &dbusConnection, QObject *adaptee, QObject *parent) : QDBusAbstractAdaptor(parent), mPriv(new Private(dbusConnection, adaptee)) { setAutoRelaySignals(false); } /** * Class destructor. */ AbstractAdaptor::~AbstractAdaptor() { delete mPriv; } /** * Return the D-Bus connection associated with this adaptor. * * \return The D-Bus connection associated with this adaptor. */ QDBusConnection AbstractAdaptor::dbusConnection() const { return mPriv->dbusConnection; } /** * Return the adaptee object, i.e. the object that provides the implementation * of this adaptor. * * \return The adaptee object. */ QObject *AbstractAdaptor::adaptee() const { return mPriv->adaptee; } } telepathy-qt-0.9.6.1/TelepathyQt/account-factory.cpp0000644000175100017520000001406712530423576024003 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/account-factory.moc.hpp" #include namespace Tp { /** * \class AccountFactory * \ingroup utils * \headerfile TelepathyQt/account-factory.h * * \brief The AccountFactory class is responsible for constructing Account * objects according to application-defined settings. * * The class is used by AccountManager and other classes which construct Account * proxy instances to enable sharing instances of application-defined Account * subclasses with certain features always ready. */ /** * Create a new AccountFactory object. * * Optionally, the \a features to make ready on all constructed proxies can be specified. The * default is to make no features ready. It should be noted that unlike Account::becomeReady(), * FeatureCore isn't assumed. If no features are specified, which is the default behavior, no * Account::becomeReady() call is made at all and the proxy won't be Account::isReady(). * * \param bus The QDBusConnection for proxies constructed using this factory to use. * \param features The features to make ready on constructed Accounts. * \return An AccountFactoryPtr object pointing to the newly created * AccountFactory object. */ AccountFactoryPtr AccountFactory::create(const QDBusConnection &bus, const Features &features) { return AccountFactoryPtr(new AccountFactory(bus, features)); } /** * Construct a new AccountFactory object. * * As in create(), it should be noted that unlike Account::becomeReady(), FeatureCore isn't assumed. * If no \a features are specified, no Account::becomeReady() call is made at all and the proxy * won't be Account::isReady(). * * \param bus The QDBusConnection for proxies constructed using this factory to use. * \param features The features to make ready on constructed Accounts. */ AccountFactory::AccountFactory(const QDBusConnection &bus, const Features &features) : FixedFeatureFactory(bus) { addFeatures(features); } /** * Class destructor. */ AccountFactory::~AccountFactory() { } /** * Constructs an Account proxy and begins making it ready. * * If a valid proxy already exists in the factory cache for the given combination of \a busName and * \a objectPath, it is returned instead. All newly created proxies are automatically cached until * they're either DBusProxy::invalidated() or the last reference to them outside the factory has * been dropped. * * The proxy can be accessed immediately after this function returns using PendingReady::proxy(). * The ready operation only finishes, however, when the features specified by features(), if any, * are made ready as much as possible. If the service doesn't support a given feature, they won't * obviously be ready even if the operation finished successfully, as is the case for * Account::becomeReady(). * * \param busName The bus/service name of the D-Bus account object the proxy is constructed for. * (Usually #TP_QT_ACCOUNT_MANAGER_BUS_NAME). * \param objectPath The object path of the account. * \param connFactory The connection factory to use for the Account. * \param chanFactory The channel factory to use for the Account. * \param contactFactory The channel factory to use for the Account. * \return A PendingReady operation with the proxy in PendingReady::proxy(). */ PendingReady *AccountFactory::proxy(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const { DBusProxyPtr proxy = cachedProxy(busName, objectPath); if (proxy.isNull()) { proxy = construct(busName, objectPath, connFactory, chanFactory, contactFactory); } return nowHaveProxy(proxy); } /** * Can be used by subclasses to override the Account subclass constructed by the factory. * * This is automatically called by proxy() to construct proxy instances if no valid cached proxy is * found. * * The default implementation constructs Tp::Account objects. * * \param busName The bus/service name of the D-Bus account object the proxy is constructed for. * (Usually #TP_QT_ACCOUNT_MANAGER_BUS_NAME). * \param objectPath The object path of the account. * \param connFactory The connection factory to use for the Account. * \param chanFactory The channel factory to use for the Account. * \param contactFactory The channel factory to use for the Account. * \return A pointer to the constructed Account object. */ AccountPtr AccountFactory::construct(const QString &busName, const QString &objectPath, const ConnectionFactoryConstPtr &connFactory, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const { return Account::create(dbusConnection(), busName, objectPath, connFactory, chanFactory, contactFactory); } /** * Identity transform, as is appropriate for Account objects. * * \param uniqueOrWellKnown The name to transform. * \return \a uniqueOrWellKnown */ QString AccountFactory::finalBusNameFrom(const QString &uniqueOrWellKnown) const { return uniqueOrWellKnown; } } telepathy-qt-0.9.6.1/TelepathyQt/call-stream.cpp0000644000175100017520000004202012530423576023074 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/call-stream.moc.hpp" #include "TelepathyQt/_gen/cli-call-stream-body.hpp" #include "TelepathyQt/_gen/cli-call-stream.moc.hpp" #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT CallStream::Private { Private(CallStream *parent, const CallContentPtr &content); static void introspectMainProperties(Private *self); void processRemoteMembersChanged(); struct RemoteMembersChangedInfo; // Public object CallStream *parent; WeakPtr content; // Mandatory proxies Client::CallStreamInterface *streamInterface; ReadinessHelper *readinessHelper; // Introspection uint localSendingState; ContactSendingStateMap remoteMembers; QHash remoteMembersContacts; bool canRequestReceiving; QQueue< QSharedPointer > remoteMembersChangedQueue; QSharedPointer currentRemoteMembersChangedInfo; }; struct TP_QT_NO_EXPORT CallStream::Private::RemoteMembersChangedInfo { RemoteMembersChangedInfo(const ContactSendingStateMap &updates, const HandleIdentifierMap &identifiers, const UIntList &removed, const CallStateReason &reason) : updates(updates), identifiers(identifiers), removed(removed), reason(reason) { } static QSharedPointer create( const ContactSendingStateMap &updates, const HandleIdentifierMap &identifiers, const UIntList &removed, const CallStateReason &reason) { RemoteMembersChangedInfo *info = new RemoteMembersChangedInfo( updates, identifiers, removed, reason); return QSharedPointer(info); } ContactSendingStateMap updates; HandleIdentifierMap identifiers; UIntList removed; CallStateReason reason; }; CallStream::Private::Private(CallStream *parent, const CallContentPtr &content) : parent(parent), content(content.data()), streamInterface(parent->interface()), readinessHelper(parent->readinessHelper()), localSendingState(SendingStateNone), canRequestReceiving(true) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMainProperties, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); readinessHelper->becomeReady(FeatureCore); } void CallStream::Private::introspectMainProperties(CallStream::Private *self) { CallStream *parent = self->parent; parent->connect(self->streamInterface, SIGNAL(LocalSendingStateChanged(uint,Tp::CallStateReason)), SLOT(onLocalSendingStateChanged(uint,Tp::CallStateReason))); parent->connect(self->streamInterface, SIGNAL(RemoteMembersChanged(Tp::ContactSendingStateMap,Tp::HandleIdentifierMap,Tp::UIntList,Tp::CallStateReason)), SLOT(onRemoteMembersChanged(Tp::ContactSendingStateMap,Tp::HandleIdentifierMap,Tp::UIntList,Tp::CallStateReason))); parent->connect(self->streamInterface->requestAllProperties(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotMainProperties(Tp::PendingOperation*))); } void CallStream::Private::processRemoteMembersChanged() { if (currentRemoteMembersChangedInfo) { // currently building contacts return; } if (remoteMembersChangedQueue.isEmpty()) { if (!parent->isReady(FeatureCore)) { readinessHelper->setIntrospectCompleted(FeatureCore, true); } return; } currentRemoteMembersChangedInfo = remoteMembersChangedQueue.dequeue(); QSet pendingRemoteMembers; for (ContactSendingStateMap::const_iterator i = currentRemoteMembersChangedInfo->updates.constBegin(); i != currentRemoteMembersChangedInfo->updates.constEnd(); ++i) { pendingRemoteMembers.insert(i.key()); } foreach(uint i, currentRemoteMembersChangedInfo->removed) { pendingRemoteMembers.insert(i); } if (!pendingRemoteMembers.isEmpty()) { ConnectionPtr connection = parent->content()->channel()->connection(); connection->lowlevel()->injectContactIds(currentRemoteMembersChangedInfo->identifiers); ContactManagerPtr contactManager = connection->contactManager(); PendingContacts *contacts = contactManager->contactsForHandles( pendingRemoteMembers.toList()); parent->connect(contacts, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotRemoteMembersContacts(Tp::PendingOperation*))); } else { currentRemoteMembersChangedInfo.clear(); processRemoteMembersChanged(); } } /** * \class CallStream * \ingroup clientchannel * \headerfile TelepathyQt/call-stream.h * * \brief The CallStream class provides an object representing a Telepathy * Call.Stream. * * Instances of this class cannot be constructed directly; the only way to get * one is via CallContent. * * See \ref async_model */ /** * Feature representing the core that needs to become ready to make the * CallStream object usable. * * Note that this feature must be enabled in order to use most CallStream * methods. See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature CallStream::FeatureCore = Feature(QLatin1String(CallStream::staticMetaObject.className()), 0); /** * Construct a new CallStream object. * * \param content The content owning this call stream. * \param objectPath The object path of this call stream. */ CallStream::CallStream(const CallContentPtr &content, const QDBusObjectPath &objectPath) : StatefulDBusProxy(content->dbusConnection(), content->busName(), objectPath.path(), FeatureCore), OptionalInterfaceFactory(this), mPriv(new Private(this, content)) { } /** * Class destructor. */ CallStream::~CallStream() { delete mPriv; } /** * Return the content owning this call stream. * * \return The content owning this call stream. */ CallContentPtr CallStream::content() const { return CallContentPtr(mPriv->content); } /** * Returns whether the user can request that a remote contact starts * sending on this stream. Not all protocols allow the user to ask * the other side to start sending media. * * \return true if the user can request that a remote contact starts * sending on this stream, or false otherwise. * \sa requestReceiving() */ bool CallStream::canRequestReceiving() const { return mPriv->canRequestReceiving; } /** * Return the contacts whose the call stream is with. * * \return The contacts whose the call stream is with. * \sa remoteMembersRemoved() */ Contacts CallStream::remoteMembers() const { return mPriv->remoteMembersContacts.values().toSet(); } /** * Return the call stream local sending state. * * \return The call stream local sending state. * \sa localSendingStateChanged() */ SendingState CallStream::localSendingState() const { return (SendingState) mPriv->localSendingState; } /** * Return the call stream remote sending state for a given \a contact. * * \return The call stream remote sending state for a contact. * \sa remoteSendingStateChanged() */ SendingState CallStream::remoteSendingState(const ContactPtr &contact) const { if (!contact) { return SendingStateNone; } for (ContactSendingStateMap::const_iterator i = mPriv->remoteMembers.constBegin(); i != mPriv->remoteMembers.constEnd(); ++i) { uint handle = i.key(); SendingState sendingState = (SendingState) i.value(); if (handle == contact->handle()[0]) { return sendingState; } } return SendingStateNone; } /** * Request that media starts or stops being sent on this call stream. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa localSendingStateChanged() */ PendingOperation *CallStream::requestSending(bool send) { return new PendingVoid(mPriv->streamInterface->SetSending(send), CallStreamPtr(this)); } /** * Request that a remote \a contact stops or starts sending on this call stream. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa remoteSendingStateChanged() */ PendingOperation *CallStream::requestReceiving(const ContactPtr &contact, bool receive) { if (!contact) { return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid contact"), CallStreamPtr(this)); } else if (!mPriv->canRequestReceiving && receive) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Requesting the other side to start sending media " "is not allowed by this protocol"), CallStreamPtr(this)); } return new PendingVoid(mPriv->streamInterface->RequestReceiving(contact->handle()[0], receive), CallStreamPtr(this)); } void CallStream::gotMainProperties(PendingOperation *op) { if (op->isError()) { warning().nospace() << "CallStreamInterface::requestAllProperties() failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); return; } debug() << "Got reply to CallStreamInterface::requestAllProperties()"; PendingVariantMap *pvm = qobject_cast(op); Q_ASSERT(pvm); QVariantMap props = pvm->result(); mPriv->canRequestReceiving = qdbus_cast(props[QLatin1String("CanRequestReceiving")]); mPriv->localSendingState = qdbus_cast(props[QLatin1String("LocalSendingState")]); ContactSendingStateMap remoteMembers = qdbus_cast(props[QLatin1String("RemoteMembers")]); HandleIdentifierMap remoteMemberIdentifiers = qdbus_cast(props[QLatin1String("RemoteMemberIdentifiers")]); mPriv->remoteMembersChangedQueue.enqueue(Private::RemoteMembersChangedInfo::create( remoteMembers, remoteMemberIdentifiers, UIntList(), CallStateReason())); mPriv->processRemoteMembersChanged(); } void CallStream::gotRemoteMembersContacts(PendingOperation *op) { PendingContacts *pc = qobject_cast(op); if (!pc->isValid()) { warning().nospace() << "Getting contacts failed with " << pc->errorName() << ":" << pc->errorMessage() << ", ignoring"; mPriv->currentRemoteMembersChangedInfo.clear(); mPriv->processRemoteMembersChanged(); return; } QMap removed; for (ContactSendingStateMap::const_iterator i = mPriv->currentRemoteMembersChangedInfo->updates.constBegin(); i != mPriv->currentRemoteMembersChangedInfo->updates.constEnd(); ++i) { mPriv->remoteMembers.insert(i.key(), i.value()); } foreach (const ContactPtr &contact, pc->contacts()) { mPriv->remoteMembersContacts.insert(contact->handle()[0], contact); } foreach (uint handle, mPriv->currentRemoteMembersChangedInfo->removed) { mPriv->remoteMembers.remove(handle); if (isReady(FeatureCore) && mPriv->remoteMembersContacts.contains(handle)) { removed.insert(handle, mPriv->remoteMembersContacts[handle]); // make sure we don't have updates for removed contacts mPriv->currentRemoteMembersChangedInfo->updates.remove(handle); } mPriv->remoteMembersContacts.remove(handle); } foreach (uint handle, pc->invalidHandles()) { mPriv->remoteMembers.remove(handle); if (isReady(FeatureCore) && mPriv->remoteMembersContacts.contains(handle)) { removed.insert(handle, mPriv->remoteMembersContacts[handle]); // make sure we don't have updates for invalid handles mPriv->currentRemoteMembersChangedInfo->updates.remove(handle); } mPriv->remoteMembersContacts.remove(handle); } if (isReady(FeatureCore)) { CallChannelPtr channel(content()->channel()); QHash remoteSendingStates; for (ContactSendingStateMap::const_iterator i = mPriv->currentRemoteMembersChangedInfo->updates.constBegin(); i != mPriv->currentRemoteMembersChangedInfo->updates.constEnd(); ++i) { uint handle = i.key(); SendingState sendingState = (SendingState) i.value(); Q_ASSERT(mPriv->remoteMembersContacts.contains(handle)); remoteSendingStates.insert(mPriv->remoteMembersContacts[handle], sendingState); mPriv->remoteMembers.insert(i.key(), i.value()); } if (!remoteSendingStates.isEmpty()) { emit remoteSendingStateChanged(remoteSendingStates, mPriv->currentRemoteMembersChangedInfo->reason); } if (!removed.isEmpty()) { emit remoteMembersRemoved(removed.values().toSet(), mPriv->currentRemoteMembersChangedInfo->reason); } } mPriv->currentRemoteMembersChangedInfo.clear(); mPriv->processRemoteMembersChanged(); } void CallStream::onLocalSendingStateChanged(uint state, const CallStateReason &reason) { mPriv->localSendingState = state; emit localSendingStateChanged((SendingState) state, reason); } void CallStream::onRemoteMembersChanged(const ContactSendingStateMap &updates, const HandleIdentifierMap &identifiers, const UIntList &removed, const CallStateReason &reason) { if (updates.isEmpty() && removed.isEmpty()) { debug() << "Received Call::Stream::RemoteMembersChanged with 0 removals and " "updates, skipping it"; return; } debug() << "Received Call::Stream::RemoteMembersChanged with" << updates.size() << "updated and" << removed.size() << "removed"; mPriv->remoteMembersChangedQueue.enqueue( Private::RemoteMembersChangedInfo::create(updates, identifiers, removed, reason)); mPriv->processRemoteMembersChanged(); } /** * \fn void CallStream::localSendingStateChanged(Tp::SendingState localSendingState, const Tp::CallStateReason &reason); * * This signal is emitted when the local sending state of this call stream * changes. * * \param localSendingState The new local sending state of this call stream. * \param reason The reason that caused this change * \sa localSendingState() */ /** * \fn void CallStream::remoteSendingStateChanged(const QHash &remoteSendingStates, const Tp::CallStateReason &reason); * * This signal is emitted when any remote sending state of this call stream * changes. * * \param remoteSendingStates The new remote sending states of this call stream. * \param reason The reason that caused these changes * \sa remoteSendingState() */ /** * \fn void CallStream::remoteMembersRemoved(const Tp::Contacts &members, const Tp::CallStateReason &reason); * * This signal is emitted when one or more members of this stream are removed. * * \param members The members that were removed from this call stream. * \param reason The reason for that caused these removals * \sa remoteMembers() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/call-stream.xml0000644000175100017520000000046212530423576023116 0ustar00kaffeinekaffeine00000000000000 Call Stream interfaces, version 1 telepathy-qt-0.9.6.1/TelepathyQt/file-transfer-channel-creation-properties.cpp0000644000175100017520000002704612530423576031046 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/debug-internal.h" #include #include #include namespace Tp { struct TP_QT_NO_EXPORT FileTransferChannelCreationProperties::Private : public QSharedData { Private(const QString &suggestedFileName, const QString &contentType, qulonglong size) : contentType(contentType), size(size), contentHashType(FileHashTypeNone) { QFileInfo fileInfo(suggestedFileName); this->suggestedFileName = fileInfo.fileName(); } Private(const QString &path, const QString &contentType) : contentType(contentType), contentHashType(FileHashTypeNone) { QFileInfo fileInfo(path); if (fileInfo.exists()) { // Set mandatory parameters suggestedFileName = fileInfo.fileName(); size = fileInfo.size(); QUrl fileUri = QUrl::fromLocalFile(fileInfo.canonicalFilePath()); uri = fileUri.toString(); // Set optional parameters lastModificationTime = fileInfo.lastModified(); } else { warning() << path << "is not a local file."; } } /* mandatory parameters */ QString suggestedFileName; QString contentType; qulonglong size; /* optional parameters */ FileHashType contentHashType; QString contentHash; QString description; QDateTime lastModificationTime; QString uri; }; /** * \class FileTransferChannelCreationProperties * \ingroup clientchannel * \headerfile TelepathyQt/file-transfer-channel-creation-properties.h * * \brief The FileTransferChannelCreationProperties class represents the * properties of a file transfer channel request. */ /** * Create an invalid FileTransferChannelCreationProperties. */ FileTransferChannelCreationProperties::FileTransferChannelCreationProperties() { } /** * Create a FileTransferChannelCreationProperties. * * If \a suggestedFileName or \a contentType are empty or if \a size is equal to * zero, the channel request will fail. * \a suggestedFileName will be cleaned of any path. * * \param suggestedFileName The name of the file on the sender's side. This is * therefore given as a suggested filename for the * receiver. * \param contentType The content type (MIME) of the file. * \param size The size of the content of the file. * \sa setUri() */ FileTransferChannelCreationProperties::FileTransferChannelCreationProperties( const QString &suggestedFileName, const QString &contentType, qulonglong size) : mPriv(new Private(suggestedFileName, contentType, size)) { } /** * Create a FileTransferChannelCreationProperties. * * This constructor accepts the path to a local file and sets the properties * that can be deducted from the file. * If \a path is not a local file the FileTransferChannelCreationProperties * will be invalid. * * \param path The path to the local file to be sent. */ FileTransferChannelCreationProperties::FileTransferChannelCreationProperties( const QString &path, const QString &contentType) : mPriv(new Private(path, contentType)) { if (mPriv->suggestedFileName.isEmpty()) { mPriv = QSharedDataPointer(NULL); } } /** * Copy constructor. */ FileTransferChannelCreationProperties::FileTransferChannelCreationProperties( const FileTransferChannelCreationProperties &other) : mPriv(other.mPriv) { } /** * Class destructor. */ FileTransferChannelCreationProperties::~FileTransferChannelCreationProperties() { } FileTransferChannelCreationProperties &FileTransferChannelCreationProperties::operator=( const FileTransferChannelCreationProperties &other) { this->mPriv = other.mPriv; return *this; } bool FileTransferChannelCreationProperties::operator==( const FileTransferChannelCreationProperties &other) const { return mPriv == other.mPriv; } /** * Set the content hash of the file and its type for the request. * * \param contentHashType The type of content hash. * \param contentHash The hash of the file, of type \a contentHashType. * \return This FileTransferChannelCreationProperties. * \sa hasContentHash(), contentHash(), contentHashType() */ FileTransferChannelCreationProperties &FileTransferChannelCreationProperties::setContentHash( FileHashType contentHashType, const QString &contentHash) { if (!isValid()) { // there is no point in updating content hash if not valid, as we miss filename, content // type and size return *this; } mPriv->contentHashType = contentHashType; mPriv->contentHash = contentHash; return *this; } /** * Set a description of the file for the request. * * \param description The description of the file. * \return This FileTransferChannelCreationProperties. * \sa hasDescription(), description() */ FileTransferChannelCreationProperties &FileTransferChannelCreationProperties::setDescription( const QString &description) { if (!isValid()) { // there is no point in updating description if not valid, as we miss filename, content // type and size return *this; } mPriv->description = description; return *this; } /** * Set the last modification time of the file for the request. * * \param lastModificationTime The last modification time of the file. * \return This FileTransferChannelCreationProperties. * \sa hasLastModificationTime(), lastModificationTime() */ FileTransferChannelCreationProperties &FileTransferChannelCreationProperties::setLastModificationTime( const QDateTime &lastModificationTime) { if (!isValid()) { // there is no point in updating last modification time if not valid, as we miss filename, // content type and size return *this; } mPriv->lastModificationTime = lastModificationTime; return *this; } /** * Set the URI of the file for the request. * * \param uri The URI of the file. * \return This FileTransferChannelCreationProperties. * \sa uri() */ FileTransferChannelCreationProperties &FileTransferChannelCreationProperties::setUri( const QString &uri) { if (!isValid()) { // there is no point in updating uri if not valid, as we miss filename, content // type and size return *this; } mPriv->uri = uri; return *this; } /** * Return the suggested file name for the request. * If the suggested file name is empty, the channel request will fail. * * \return The suggested file name for the request. */ QString FileTransferChannelCreationProperties::suggestedFileName() const { if (!isValid()) { return QString(); } return mPriv->suggestedFileName; } /** * Return the content type (MIME) of the file for the request. * If the content type is empty, the channel request will fail. * * \return The content type of the file. */ QString FileTransferChannelCreationProperties::contentType() const { if (!isValid()) { return QString(); } return mPriv->contentType; } /** * Return the size of the contents of the file for the request. * If size is zero, the channel request will fail. * * \return The size of the contents of file. */ qulonglong FileTransferChannelCreationProperties::size() const { if (!isValid()) { return 0; } return mPriv->size; } /** * Return whether the request will have a content hash. * * \return \c true whether it will have a content hash, \c false otherwise. * \sa contentHash(), contentHashType(), setContentHash() */ bool FileTransferChannelCreationProperties::hasContentHash() const { if (!isValid()) { return false; } return (mPriv->contentHashType != FileHashTypeNone); } /** * Return the type of the content hash for the request. * * \return The type of the content hash. * \sa hasContentHash(), contentHash(), setContentHash() */ FileHashType FileTransferChannelCreationProperties::contentHashType() const { if (!isValid()) { return FileHashTypeNone; } return mPriv->contentHashType; } /** * Return the content hash of the file for the request. * * \return The hash of the contents of the file transfer, of type returned by * contentHashType(). * \sa hasContentHash(), contentHashType(), setContentHash() */ QString FileTransferChannelCreationProperties::contentHash() const { if (!isValid()) { return QString(); } return mPriv->contentHash; } /** * Return whether the request will have a descriprion. * * \return \c true whether it will have description, \c false otherwise. * \sa description(), setDescription() */ bool FileTransferChannelCreationProperties::hasDescription() const { if (!isValid()) { return false; } return (!mPriv->description.isEmpty()); } /** * Return the description of the file for the request. * * \return The description of the file. * \sa hasDescription(), setDescription() */ QString FileTransferChannelCreationProperties::description() const { if (!isValid()) { return QString(); } return mPriv->description; } /** * Return whether the request will have a last modification time. * * \return \c true whether it will have a last modification time, \c false * otherwise. * \sa lastModificationTime(), setLastModificationTime() */ bool FileTransferChannelCreationProperties::hasLastModificationTime() const { if (!isValid()) { return false; } return (mPriv->lastModificationTime.isValid()); } /** * Return the last modification time of the file for the request. * * \return The last modification time of the file. * \sa hasLastModificationTime(), setLastModificationTime() */ QDateTime FileTransferChannelCreationProperties::lastModificationTime() const { if (!isValid()) { return QDateTime(); } return mPriv->lastModificationTime; } /** * Return whether the request will have an URI. * * \return \c true whether it will have URI, \c false otherwise. * \sa uri(), setUri() */ bool FileTransferChannelCreationProperties::hasUri() const { if (!isValid()) { return false; } return (!mPriv->uri.isEmpty()); } /** * Return the URI of the file for the request. * If the URI property is empty and the file transfer is handled by an handler * that is not this process, then it won't be able to initiate the file * transfer. * * \return The URI of the file. * \sa setUri() */ QString FileTransferChannelCreationProperties::uri() const { if (!isValid()) { return QString(); } return mPriv->uri; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/PendingVariantMap0000644000175100017520000000040312530423576023455 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingVariantMap_HEADER_GUARD_ #define _TelepathyQt_PendingVariantMap_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelDispatchOperationInterface0000644000175100017520000000045212530423576026644 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelDispatchOperationInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelDispatchOperationInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/global.h.in0000644000175100017520000001226212530423576022207 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_global_h_HEADER_GUARD_ #define _TelepathyQt_global_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #define TP_QT_MAJOR_VERSION @TP_QT_MAJOR_VERSION@ #define TP_QT_MINOR_VERSION @TP_QT_MINOR_VERSION@ #define TP_QT_MICRO_VERSION @TP_QT_MICRO_VERSION@ #define TP_QT_VERSION ((TP_QT_MAJOR_VERSION<<16)|(TP_QT_MINOR_VERSION<<8)|(TP_QT_MICRO_VERSION)) /** * @def TP_QT_VERSION_CHECK * @ingroup macros * * The TP_QT_VERSION_CHECK macro can be used to do condition compilation * in TelepathyQt-based applications and libraries. * * \code * #if (TP_QT_VERSION >= TP_QT_VERSION_CHECK(0, 9, 6)) * Tp::BaseConnectionAvatarsInterfacePtr avatarsIface; * #endif * \endcode */ #define TP_QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) #ifdef BUILDING_TP_QT # define TP_QT_EXPORT Q_DECL_EXPORT #else # define TP_QT_EXPORT Q_DECL_IMPORT #endif #if !defined(Q_OS_WIN) && defined(QT_VISIBILITY_AVAILABLE) # define TP_QT_NO_EXPORT __attribute__((visibility("hidden"))) #endif #ifndef TP_QT_NO_EXPORT # define TP_QT_NO_EXPORT #endif /** * @def TP_QT_DEPRECATED * @ingroup macros * * The TP_QT_DEPRECATED macro can be used to trigger compile-time * warnings with newer compilers when deprecated functions are used. * * For non-inline functions, the macro gets inserted at front of the * function declaration, right before the return type: * * \code * TP_QT_DEPRECATED void deprecatedFunctionA(); * TP_QT_DEPRECATED int deprecatedFunctionB() const; * \endcode * * For functions which are implemented inline, * the TP_QT_DEPRECATED macro is inserted at the front, right before the * return type, but after "static", "inline" or "virtual": * * \code * TP_QT_DEPRECATED void deprecatedInlineFunctionA() { .. } * virtual TP_QT_DEPRECATED int deprecatedInlineFunctionB() { .. } * static TP_QT_DEPRECATED bool deprecatedInlineFunctionC() { .. } * inline TP_QT_DEPRECATED bool deprecatedInlineFunctionD() { .. } * \endcode * * You can also mark whole structs or classes as deprecated, by inserting the * TP_QT_DEPRECATED macro after the struct/class keyword, but before the * name of the struct/class: * * \code * class TP_QT_DEPRECATED DeprecatedClass { }; * struct TP_QT_DEPRECATED DeprecatedStruct { }; * \endcode * * \note If the class you want to deprecate is a QObject and needs to be exported, * you should use TP_QT_EXPORT_DEPRECATED instead. * * \note * It does not make much sense to use the TP_QT_DEPRECATED keyword for a * Qt signal; this is because usually get called by the class which they belong * to, and one would assume that a class author does not use deprecated methods * of his own class. The only exception to this are signals which are connected * to other signals; they get invoked from moc-generated code. In any case, * printing a warning message in either case is not useful. * For slots, it can make sense (since slots can be invoked directly) but be * aware that if the slots get triggered by a signal, they will get called from * moc code as well and thus the warnings are useless. * * \note * TP_QT_DEPRECATED cannot be used for constructors. */ #ifndef TP_QT_DEPRECATED # ifdef TP_QT_DEPRECATED_WARNINGS # ifdef BUILDING_TP_QT # define TP_QT_DEPRECATED # else # define TP_QT_DEPRECATED Q_DECL_DEPRECATED # endif # else # define TP_QT_DEPRECATED # endif #endif /** * @def TP_QT_EXPORT_DEPRECATED * @ingroup macros * * The TP_QT_EXPORT_DEPRECATED macro can be used to trigger compile-time * warnings with newer compilers when deprecated functions are used, and * export the symbol. * * This macro simply expands to TP_QT_DEPRECATED TP_QT_EXPORT, and needs * to be used only when you need to deprecate a class which is a QObject * and needs to be exported. This is because the following: * * \code * class TP_QT_DEPRECATED TP_QT_EXPORT Class : public QObject * \endcode * * Wouldn't be recognized from moc to be a valid QObject class, and hence * would be skipped. Instead, you should do: * * \code * class TP_QT_EXPORT_DEPRECATED Class : public QObject * \endcode * * For any other use, please use TP_QT_DEPRECATED instead. */ #ifndef TP_QT_EXPORT_DEPRECATED # define TP_QT_EXPORT_DEPRECATED TP_QT_DEPRECATED TP_QT_EXPORT #endif #endif telepathy-qt-0.9.6.1/TelepathyQt/connection-internal.h0000644000175100017520000000356112530423576024315 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_internal_h_HEADER_GUARD_ #define _TelepathyQt_connection_internal_h_HEADER_GUARD_ #include #include #include namespace Tp { class TP_QT_NO_EXPORT Connection::PendingConnect : public PendingReady { Q_OBJECT public: PendingConnect(const ConnectionPtr &connection, const Features &requestedFeatures); private Q_SLOTS: TP_QT_NO_EXPORT void onConnectReply(QDBusPendingCallWatcher *); TP_QT_NO_EXPORT void onStatusChanged(Tp::ConnectionStatus newStatus); TP_QT_NO_EXPORT void onBecomeReadyReply(Tp::PendingOperation *); TP_QT_NO_EXPORT void onConnInvalidated(Tp::DBusProxy *proxy, const QString &error, const QString &message); private: friend class ConnectionLowlevel; }; class ConnectionHelper { public: static QString statusReasonToErrorName(Tp::ConnectionStatusReason reason, Tp::ConnectionStatus oldStatus); }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeCallInterface0000644000175100017520000000040512530423576024737 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeCallInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeCallInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection.h0000644000175100017520000001775312530423576022513 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_h_HEADER_GUARD_ #define _TelepathyQt_connection_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class Channel; class ConnectionCapabilities; class ConnectionLowlevel; class Contact; class ContactManager; class PendingChannel; class PendingContactAttributes; class PendingHandles; class PendingOperation; class PendingReady; class TP_QT_EXPORT Connection : public StatefulDBusProxy, public OptionalInterfaceFactory { Q_OBJECT Q_DISABLE_COPY(Connection) public: static const Feature FeatureCore; static const Feature FeatureSelfContact; static const Feature FeatureSimplePresence; static const Feature FeatureRoster; static const Feature FeatureRosterGroups; static const Feature FeatureAccountBalance; // TODO unit tests for this static const Feature FeatureConnected; static ConnectionPtr create(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); static ConnectionPtr create(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory); virtual ~Connection(); ChannelFactoryConstPtr channelFactory() const; ContactFactoryConstPtr contactFactory() const; QString cmName() const; QString protocolName() const; ConnectionStatus status() const; ConnectionStatusReason statusReason() const; class ErrorDetails { public: ErrorDetails(); ErrorDetails(const QVariantMap &details); ErrorDetails(const ErrorDetails &other); ~ErrorDetails(); ErrorDetails &operator=(const ErrorDetails &other); bool isValid() const { return mPriv.constData() != 0; } bool hasDebugMessage() const { return allDetails().contains(QLatin1String("debug-message")); } QString debugMessage() const { return qdbus_cast(allDetails().value(QLatin1String("debug-message"))); } bool hasServerMessage() const { return allDetails().contains(QLatin1String("server-message")); } QString serverMessage() const { return qdbus_cast(allDetails().value(QLatin1String("server-message"))); } bool hasUserRequested() const { return allDetails().contains(QLatin1String("user-requested")); } bool userRequested() const { return qdbus_cast(allDetails().value(QLatin1String("user-requested"))); } bool hasExpectedHostname() const { return allDetails().contains(QLatin1String("expected-hostname")); } QString expectedHostname() const { return qdbus_cast(allDetails().value(QLatin1String("expected-hostname"))); } bool hasCertificateHostname() const { return allDetails().contains(QLatin1String("certificate-hostname")); } QString certificateHostname() const { return qdbus_cast(allDetails().value(QLatin1String("certificate-hostname"))); } QVariantMap allDetails() const; private: friend class Connection; struct Private; friend struct Private; QSharedDataPointer mPriv; }; const ErrorDetails &errorDetails() const; uint selfHandle() const; ContactPtr selfContact() const; CurrencyAmount accountBalance() const; ConnectionCapabilities capabilities() const; ContactManagerPtr contactManager() const; #if defined(BUILDING_TP_QT) || defined(TP_QT_ENABLE_LOWLEVEL_API) ConnectionLowlevelPtr lowlevel(); ConnectionLowlevelConstPtr lowlevel() const; #endif Q_SIGNALS: void statusChanged(Tp::ConnectionStatus newStatus); void selfHandleChanged(uint newHandle); // FIXME: might not need this when Renaming is fixed and mapped to Contacts void selfContactChanged(); void accountBalanceChanged(const Tp::CurrencyAmount &accountBalance); protected: Connection(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature); Client::ConnectionInterface *baseInterface() const; private Q_SLOTS: TP_QT_NO_EXPORT void onStatusReady(uint status); TP_QT_NO_EXPORT void onStatusChanged(uint status, uint reason); TP_QT_NO_EXPORT void onConnectionError(const QString &error, const QVariantMap &details); TP_QT_NO_EXPORT void gotMainProperties(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotStatus(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotInterfaces(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotSelfHandle(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotCapabilities(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotContactAttributeInterfaces(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotSimpleStatuses(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void gotSelfContact(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onIntrospectRosterFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onIntrospectRosterGroupsFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void doReleaseSweep(uint handleType); TP_QT_NO_EXPORT void onSelfHandleChanged(uint); TP_QT_NO_EXPORT void gotBalance(QDBusPendingCallWatcher *watcher); TP_QT_NO_EXPORT void onBalanceChanged(const Tp::CurrencyAmount &); private: class PendingConnect; friend class ConnectionLowlevel; friend class PendingChannel; friend class PendingConnect; friend class PendingContactAttributes; friend class PendingContacts; friend class PendingHandles; friend class ReferencedHandles; TP_QT_NO_EXPORT void refHandle(HandleType handleType, uint handle); TP_QT_NO_EXPORT void unrefHandle(HandleType handleType, uint handle); TP_QT_NO_EXPORT void handleRequestLanded(HandleType handleType); struct Private; friend struct Private; Private *mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::Connection::ErrorDetails); #endif telepathy-qt-0.9.6.1/TelepathyQt/CallContent0000644000175100017520000000036012530423576022316 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CallContent_HEADER_GUARD_ #define _TelepathyQt_CallContent_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/simple-text-observer.h0000644000175100017520000000512012530423576024435 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_simple_text_observer_h_HEADER_GUARD_ #define _TelepathyQt_simple_text_observer_h_HEADER_GUARD_ #include #include #include namespace Tp { class Message; class PendingOperation; class ReceivedMessage; class TP_QT_EXPORT SimpleTextObserver : public QObject, public RefCounted { Q_OBJECT Q_DISABLE_COPY(SimpleTextObserver) public: static SimpleTextObserverPtr create(const AccountPtr &account); static SimpleTextObserverPtr create(const AccountPtr &account, const ContactPtr &contact); static SimpleTextObserverPtr create(const AccountPtr &account, const QString &contactIdentifier); virtual ~SimpleTextObserver(); AccountPtr account() const; QString contactIdentifier() const; QList textChats() const; Q_SIGNALS: void messageSent(const Tp::Message &message, Tp::MessageSendingFlags flags, const QString &sentMessageToken, const Tp::TextChannelPtr &channel); void messageReceived(const Tp::ReceivedMessage &message, const Tp::TextChannelPtr &channel); private Q_SLOTS: TP_QT_NO_EXPORT void onNewChannels(const QList &channels); TP_QT_NO_EXPORT void onChannelInvalidated(const Tp::ChannelPtr &channel); private: TP_QT_NO_EXPORT static SimpleTextObserverPtr create(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization); TP_QT_NO_EXPORT SimpleTextObserver(const AccountPtr &account, const QString &contactIdentifier, bool requiresNormalization); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceCellularInterface0000644000175100017520000000044012530423576027334 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceCellularInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceCellularInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ProtocolInterfacePresenceInterface0000644000175100017520000000044412530423576027043 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolInterfacePresenceInterface_HEADER_GUARD_ #define _TelepathyQt_ProtocolInterfacePresenceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ProtocolParameter0000644000175100017520000000040212530423576023547 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolParameter_HEADER_GUARD_ #define _TelepathyQt_ProtocolParameter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ClientApproverInterface0000644000175100017520000000040212530423576024663 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ClientApproverInterface_HEADER_GUARD_ #define _TelepathyQt_ClientApproverInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/pending-contacts-internal.h0000644000175100017520000000521412530423576025413 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_contacts_internal_h_HEADER_GUARD_ #define _TelepathyQt_pending_contacts_internal_h_HEADER_GUARD_ #include #include namespace Tp { class TP_QT_NO_EXPORT PendingAddressingGetContacts : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingAddressingGetContacts) public: PendingAddressingGetContacts(const ConnectionPtr &connection, const QString &vcardField, const QStringList &vcardAddresses, const QStringList &interfaces); PendingAddressingGetContacts(const ConnectionPtr &connection, const QStringList &uris, const QStringList &interfaces); ~PendingAddressingGetContacts(); UIntList validHandles() const { return mValidHandles; } bool isForVCardAddresses() const { return mRequestType == ForVCardAddresses; } QString vcardField() const { return mVCardField; } QStringList vcardAddresses() const { return mAddresses; } bool isForUris() const { return mRequestType == ForUris; } QStringList uris() const { return mAddresses; } QStringList validAddresses() const { return mValidAddresses; } QStringList invalidAddresses() const { return mInvalidAddresses; } ContactAttributesMap attributes() const { return mAttributes; } private Q_SLOTS: void onGetContactsFinished(QDBusPendingCallWatcher* watcher); private: enum RequestType { ForVCardAddresses, ForUris }; ConnectionPtr mConnection; RequestType mRequestType; UIntList mValidHandles; QString mVCardField; QStringList mAddresses; QStringList mValidAddresses; QStringList mInvalidAddresses; ContactAttributesMap mAttributes; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/debug-receiver.cpp0000644000175100017520000001504412530423576023566 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011-2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/debug-receiver.moc.hpp" #include "TelepathyQt/_gen/cli-debug-receiver-body.hpp" #include "TelepathyQt/_gen/cli-debug-receiver.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT DebugReceiver::Private { Private(DebugReceiver *parent); static void introspectCore(Private *self); DebugReceiver *parent; Client::DebugInterface *baseInterface; }; DebugReceiver::Private::Private(DebugReceiver *parent) : parent(parent), baseInterface(new Client::DebugInterface(parent)) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &DebugReceiver::Private::introspectCore, this); introspectables[DebugReceiver::FeatureCore] = introspectableCore; parent->readinessHelper()->addIntrospectables(introspectables); } void DebugReceiver::Private::introspectCore(DebugReceiver::Private *self) { // this is done only to verify that the object exists... PendingVariantMap *op = self->baseInterface->requestAllProperties(); self->parent->connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onRequestAllPropertiesFinished(Tp::PendingOperation*))); } /** * \class DebugReceiver * \ingroup clientsideproxies * \headerfile TelepathyQt/debug-receiver.h * * \brief The DebugReceiver class provides a D-Bus proxy for a Telepathy * Debug object. * * A Debug object provides debugging messages from services. */ /** * Feature representing the core that needs to become ready to make the DebugReceiver * object usable. * * Note that this feature must be enabled in order to use most DebugReceiver methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature DebugReceiver::FeatureCore = Feature(QLatin1String(DebugReceiver::staticMetaObject.className()), 0, true); DebugReceiverPtr DebugReceiver::create(const QString &busName, const QDBusConnection &bus) { return DebugReceiverPtr(new DebugReceiver(bus, busName)); } DebugReceiver::DebugReceiver(const QDBusConnection &bus, const QString &busName) : StatefulDBusProxy(bus, busName, TP_QT_DEBUG_OBJECT_PATH, DebugReceiver::FeatureCore), mPriv(new Private(this)) { } DebugReceiver::~DebugReceiver() { delete mPriv; } /** * Retrieves buffered debug messages. * * This method returns a list of buffered debug messages. Depending on the service side * implementation, this may not be the entire list of all messages received during the * service's lifetime. Use monitoring instead for getting all the messages being streamed * in realtime. * * \return A pending operation returning a list of buffered debug messages when finished. * * \sa setMonitoringEnabled */ PendingDebugMessageList *DebugReceiver::fetchMessages() { return new PendingDebugMessageList(mPriv->baseInterface->GetMessages(), DebugReceiverPtr(this)); } /** * Enables or disables the emission of newDebugMessage. * * This function either enables or disables the emission of newDebugMessage. If monitoring is * enabled, everytime a message will be received, newDebugMessage will be emitted carrying the * new message. * * Monitoring should be disabled when not needed, as it generates a high amount of traffic on * the bus. It is always disabled by default. * * This method requires FeatureCore to be enabled. * * \param enabled Whether to enable or disable monitoring. * * \return A pending operation returning whether the operation succeeded or not. * * \sa newDebugMessage */ PendingOperation *DebugReceiver::setMonitoringEnabled(bool enabled) { if (!isReady()) { warning() << "DebugReceiver::setMonitoringEnabled called without DebugReceiver being ready"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("FeatureCore is not ready"), DebugReceiverPtr(this)); } return mPriv->baseInterface->setPropertyEnabled(enabled); } void DebugReceiver::onRequestAllPropertiesFinished(Tp::PendingOperation *op) { if (op->isError()) { readinessHelper()->setIntrospectCompleted( FeatureCore, false, op->errorName(), op->errorMessage()); } else { connect(mPriv->baseInterface, SIGNAL(NewDebugMessage(double,QString,uint,QString)), SLOT(onNewDebugMessage(double,QString,uint,QString))); readinessHelper()->setIntrospectCompleted(FeatureCore, true); } } void DebugReceiver::onNewDebugMessage(double time, const QString &domain, uint level, const QString &message) { DebugMessage msg; msg.timestamp = time; msg.domain = domain; msg.level = level; msg.message = message; emit newDebugMessage(msg); } /** * \fn void DebugReceiver::newDebugMessage(const Tp::DebugMessage &msg) * * Emitted whenever a new debug message is available. This will be emitted only if * monitoring has been previously enabled. * * \param msg The new debug message. * * \sa setMonitoringEnabled */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/debug-receiver.xml0000644000175100017520000000033312530423576023577 0ustar00kaffeinekaffeine00000000000000 Debug interface telepathy-qt-0.9.6.1/TelepathyQt/manager-file.h0000644000175100017520000000443512530423576022674 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_manager_file_h_HEADER_GUARD_ #define _TelepathyQt_manager_file_h_HEADER_GUARD_ #include #include #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Tp { class TP_QT_NO_EXPORT ManagerFile { public: ManagerFile(); ManagerFile(const ManagerFile &other); ManagerFile(const QString &cmName); ~ManagerFile(); ManagerFile &operator=(const ManagerFile &other); QString cmName() const; bool isValid() const; QStringList protocols() const; ParamSpecList parameters(const QString &protocol) const; QString vcardField(const QString &protocol) const; QString englishName(const QString &protocol) const; QString iconName(const QString &protocol) const; RequestableChannelClassList requestableChannelClasses( const QString &protocol) const; PresenceSpecList allowedPresenceStatuses(const QString &protocol) const; AvatarSpec avatarRequirements(const QString &protocol) const; QStringList addressableVCardFields(const QString &protocol) const; QStringList addressableUriSchemes(const QString &protocol) const; private: struct Private; friend struct Private; Private *mPriv; }; } Q_DECLARE_METATYPE(Tp::ManagerFile); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus-object.cpp0000644000175100017520000000437712530423576023106 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/dbus-object.moc.hpp" #include namespace Tp { struct TP_QT_NO_EXPORT DBusObject::Private { Private(const QDBusConnection &dbusConnection) : dbusConnection(dbusConnection) { } QDBusConnection dbusConnection; QString objectPath; }; /** * \class DBusObject * \ingroup servicesideimpl * \headerfile TelepathyQt/dbus-object.h * * \brief A QObject on which low-level D-Bus adaptors are plugged to provide a D-Bus object. */ /** * Construct a DBusObject that operates on the given \a dbusConnection. * * \param dbusConnection The D-Bus connection to use. * \param parent The QObject parent of this instance. */ DBusObject::DBusObject(const QDBusConnection &dbusConnection, QObject *parent) : QObject(parent), mPriv(new Private(dbusConnection)) { } /** * Class destructor. */ DBusObject::~DBusObject() { delete mPriv; } void DBusObject::setObjectPath(const QString &path) { mPriv->objectPath = path; } QString DBusObject::objectPath() const { return mPriv->objectPath; } /** * Return the D-Bus connection associated with this object. * * \return The D-Bus connection associated with this object. */ QDBusConnection DBusObject::dbusConnection() const { return mPriv->dbusConnection; } } telepathy-qt-0.9.6.1/TelepathyQt/base-connection-manager.h0000644000175100017520000000656412530423576025031 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_base_connection_manager_h_HEADER_GUARD_ #define _TelepathyQt_base_connection_manager_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include class QString; namespace Tp { class TP_QT_EXPORT BaseConnectionManager : public DBusService { Q_OBJECT Q_DISABLE_COPY(BaseConnectionManager) public: static BaseConnectionManagerPtr create(const QString &name) { return BaseConnectionManagerPtr(new BaseConnectionManager( QDBusConnection::sessionBus(), name)); } template static SharedPtr create(const QString &name) { return SharedPtr(new BaseConnectionManagerSubclass( QDBusConnection::sessionBus(), name)); } static BaseConnectionManagerPtr create(const QDBusConnection &dbusConnection, const QString &name) { return BaseConnectionManagerPtr(new BaseConnectionManager(dbusConnection, name)); } template static SharedPtr create(const QDBusConnection &dbusConnection, const QString &name) { return SharedPtr(new BaseConnectionManagerSubclass( dbusConnection, name)); } virtual ~BaseConnectionManager(); QString name() const; QVariantMap immutableProperties() const; QList protocols() const; BaseProtocolPtr protocol(const QString &protocolName) const; bool hasProtocol(const QString &protocolName) const; bool addProtocol(const BaseProtocolPtr &protocol); bool registerObject(DBusError *error = NULL); QList connections() const; Q_SIGNALS: void newConnection(const BaseConnectionPtr &connection); protected: BaseConnectionManager(const QDBusConnection &dbusConnection, const QString &name); virtual bool registerObject(const QString &busName, const QString &objectPath, DBusError *error); private Q_SLOTS: TP_QT_NO_EXPORT void removeConnection(); private: TP_QT_NO_EXPORT void addConnection(const BaseConnectionPtr &connection); class Adaptee; friend class Adaptee; class Private; friend class Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceServicePointInterface0000644000175100017520000000043712530423576027462 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceServicePointInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceServicePointInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/BaseConnection0000644000175100017520000000037112530423576023004 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseConnection_HEADER_GUARD_ #define _TelepathyQt_BaseConnection_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AbstractInterface0000644000175100017520000000040212530423576023471 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractInterface_HEADER_GUARD_ #define _TelepathyQt_AbstractInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/AccountSet0000644000175100017520000000035512530423576022164 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AccountSet_HEADER_GUARD_ #define _TelepathyQt_AccountSet_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceAddressingInterface0000644000175100017520000000044412530423576027660 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceAddressingInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceAddressingInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/contact.cpp0000644000175100017520000013242012530423576022327 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/contact.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/future-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT Contact::Private { Private(Contact *parent, ContactManager *manager, const ReferencedHandles &handle) : parent(parent), manager(ContactManagerPtr(manager)), handle(handle), caps(manager->supportedFeatures().contains(Contact::FeatureCapabilities) ? ContactCapabilities(true) : ContactCapabilities( manager->connection()->capabilities().allClassSpecs(), false)), isContactInfoKnown(false), isAvatarTokenKnown(false), subscriptionState(SubscriptionStateUnknown), publishState(SubscriptionStateUnknown), blocked(false) { } void updateAvatarData(); Contact *parent; WeakPtr manager; ReferencedHandles handle; QString id; Features requestedFeatures; Features actualFeatures; QString alias; QMap vcardAddresses; QStringList uris; Presence presence; ContactCapabilities caps; LocationInfo location; bool isContactInfoKnown; InfoFields info; bool isAvatarTokenKnown; QString avatarToken; AvatarData avatarData; SubscriptionState subscriptionState; SubscriptionState publishState; QString publishStateMessage; bool blocked; QSet groups; QStringList clientTypes; }; void Contact::Private::updateAvatarData() { /* If token is NULL, it means that CM doesn't know the token. In that case we * have to request the avatar data to get the token. This happens with XMPP * for offline contacts. We don't want to bypass the avatar cache, so we won't * update avatar. */ if (avatarToken.isNull()) { return; } /* If token is empty (""), it means the contact has no avatar. */ if (avatarToken.isEmpty()) { debug() << "Contact" << parent->id() << "has no avatar"; avatarData = AvatarData(); emit parent->avatarDataChanged(avatarData); return; } parent->manager()->requestContactAvatars(QList() << ContactPtr(parent)); } struct TP_QT_NO_EXPORT Contact::InfoFields::Private : public QSharedData { Private(const ContactInfoFieldList &allFields) : allFields(allFields) {} ContactInfoFieldList allFields; }; /** * \class Contact::InfoFields * \ingroup clientconn * \headerfile TelepathyQt/contact.h * * \brief The Contact::InfoFields class represents the information of a * Telepathy contact. */ /** * Construct a info fields instance with the given fields. The instance will indicate that * it is valid. */ Contact::InfoFields::InfoFields(const ContactInfoFieldList &allFields) : mPriv(new Private(allFields)) { } /** * Constructs a new invalid InfoFields instance. */ Contact::InfoFields::InfoFields() { } /** * Copy constructor. */ Contact::InfoFields::InfoFields(const Contact::InfoFields &other) : mPriv(other.mPriv) { } /** * Class destructor. */ Contact::InfoFields::~InfoFields() { } /** * Assignment operator. */ Contact::InfoFields &Contact::InfoFields::operator=(const Contact::InfoFields &other) { this->mPriv = other.mPriv; return *this; } /** * Return a list containing all fields whose name are \a name. * * \param name The name used to match the fields. * \return A list of ContactInfoField objects. */ ContactInfoFieldList Contact::InfoFields::fields(const QString &name) const { if (!isValid()) { return ContactInfoFieldList(); } ContactInfoFieldList ret; foreach (const ContactInfoField &field, mPriv->allFields) { if (field.fieldName == name) { ret.append(field); } } return ret; } /** * Return a list containing all fields describing the contact information. * * \return The contact information as a list of ContactInfoField objects. */ ContactInfoFieldList Contact::InfoFields::allFields() const { return isValid() ? mPriv->allFields : ContactInfoFieldList(); } /** * \class Contact * \ingroup clientconn * \headerfile TelepathyQt/contact.h * * \brief The Contact class represents a Telepathy contact. * * The accessor functions on this object (id(), alias(), and so on) don't make any D-Bus calls; * instead, they return/use values cached from a previous introspection run. * The introspection process populates their values in the most efficient way possible based on what * the service implements. * * To avoid unnecessary D-Bus traffic, some accessors only return valid * information after specific features have been enabled. * For instance, to retrieve the contact avatar token, it is necessary to * enable the feature Contact::FeatureAvatarToken. * See the individual methods descriptions for more details. * * Contact features can be enabled by constructing a ContactFactory and enabling * the desired features, and passing it to AccountManager, Account or ClientRegistrar * when creating them as appropriate. However, if a particular * feature is only ever used in a specific circumstance, such as an user opening * some settings dialog separate from the general view of the application, * features can be later enabled as needed by calling ContactManager::upgradeContacts() with the * additional features, and waiting for the resulting PendingOperation to finish. * * As an addition to accessors, signals are emitted to indicate that properties have * changed, for example aliasChanged(), avatarTokenChanged(), etc. * * See \ref async_model, \ref shared_ptr */ /** * Feature used in order to access contact alias info. * * \sa alias(), aliasChanged() */ const Feature Contact::FeatureAlias = Feature(QLatin1String(Contact::staticMetaObject.className()), 0, false); /** * Feature used in order to access contact avatar data info. * * Enabling this feature will also enable FeatureAvatarToken. * * \sa avatarData(), avatarDataChanged() */ const Feature Contact::FeatureAvatarData = Feature(QLatin1String(Contact::staticMetaObject.className()), 1, false); /** * Feature used in order to access contact avatar token info. * * \sa isAvatarTokenKnown(), avatarToken(), avatarTokenChanged() */ const Feature Contact::FeatureAvatarToken = Feature(QLatin1String(Contact::staticMetaObject.className()), 2, false); /** * Feature used in order to access contact capabilities info. * * \sa capabilities(), capabilitiesChanged() */ const Feature Contact::FeatureCapabilities = Feature(QLatin1String(Contact::staticMetaObject.className()), 3, false); /** * Feature used in order to access contact info fields. * * \sa infoFields(), infoFieldsChanged() */ const Feature Contact::FeatureInfo = Feature(QLatin1String(Contact::staticMetaObject.className()), 4, false); /** * Feature used in order to access contact location info. * * \sa location(), locationUpdated() */ const Feature Contact::FeatureLocation = Feature(QLatin1String(Contact::staticMetaObject.className()), 5, false); /** * Feature used in order to access contact presence info. * * \sa presence(), presenceChanged() */ const Feature Contact::FeatureSimplePresence = Feature(QLatin1String(Contact::staticMetaObject.className()), 6, false); /** * Feature used in order to access contact roster groups. * * \sa groups(), addedToGroup(), removedFromGroup() */ const Feature Contact::FeatureRosterGroups = Feature(QLatin1String(Contact::staticMetaObject.className()), 7, false); /** * Feature used in order to access contact addressable addresses info. * * \sa vcardAddresses(), uris() */ const Feature Contact::FeatureAddresses = Feature(QLatin1String(Contact::staticMetaObject.className()), 8, false); /** * Feature used in order to access contact client types info. * * \sa clientTypes(), requestClientTypes(), clientTypesChanged() */ const Feature Contact::FeatureClientTypes = Feature(QLatin1String(Contact::staticMetaObject.className()), 9, false); /** * Construct a new Contact object. * * \param manager ContactManager owning this contact. * \param handle The contact handle. * \param requestedFeatures The contact requested features. * \param attributes The contact attributes. */ Contact::Contact(ContactManager *manager, const ReferencedHandles &handle, const Features &requestedFeatures, const QVariantMap &attributes) : Object(), mPriv(new Private(this, manager, handle)) { mPriv->requestedFeatures.unite(requestedFeatures); mPriv->id = qdbus_cast(attributes[ TP_QT_IFACE_CONNECTION + QLatin1String("/contact-id")]); } /** * Class destructor. */ Contact::~Contact() { debug() << "Contact" << id() << "destroyed"; delete mPriv; } /** * Return the contact nanager owning this contact. * * \return A pointer to the ContactManager object. */ ContactManagerPtr Contact::manager() const { return ContactManagerPtr(mPriv->manager); } /** * Return the handle of this contact. * * \return The handle as a ReferencedHandles object. */ ReferencedHandles Contact::handle() const { return mPriv->handle; } /** * Return the identifier of this contact. * * \return The identifier. */ QString Contact::id() const { return mPriv->id; } /** * Return the features requested on this contact. * * \return The requested features as a set of Feature objects. */ Features Contact::requestedFeatures() const { return mPriv->requestedFeatures; } /** * Return the features that are actually enabled on this contact. * * \return The actual features as a set of Feature objects. */ Features Contact::actualFeatures() const { return mPriv->actualFeatures; } /** * Return the alias of this contact. * * Change notification is via the aliasChanged() signal. * * This method requires Contact::FeatureAlias to be ready. * * \return The alias. */ QString Contact::alias() const { if (!mPriv->requestedFeatures.contains(FeatureAlias)) { warning() << "Contact::alias() used on" << this << "for which FeatureAlias hasn't been requested - returning id"; return id(); } return mPriv->alias; } /** * Return the various vcard addresses that identify this contact. * * This method requires Contact::FeatureAddresses to be ready. * * \return The vcard addresses identifying this contact. * \sa ContactManager::contactsForVCardAddresses(), uris() */ QMap Contact::vcardAddresses() const { return mPriv->vcardAddresses; } /** * Return the various URI addresses that identify this contact. * * This method requires Contact::FeatureAddresses to be ready. * * \return The URI addresses identifying this contact. * \sa ContactManager::contactsForUris(), vcardAddresses() */ QStringList Contact::uris() const { return mPriv->uris; } /** * Return whether the avatar token of this contact is known. * * This method requires Contact::FeatureAvatarToken to be ready. * * \return \c true if the avatar token is known, \c false otherwise. * \sa avatarToken() */ bool Contact::isAvatarTokenKnown() const { if (!mPriv->requestedFeatures.contains(FeatureAvatarToken)) { warning() << "Contact::isAvatarTokenKnown() used on" << this << "for which FeatureAvatarToken hasn't been requested - returning false"; return false; } return mPriv->isAvatarTokenKnown; } /** * Return the avatar token for this contact. * * Change notification is via the avatarTokenChanged() signal. * * This method requires Contact::FeatureAvatarToken to be ready. * * \return The avatar token. * \sa isAvatarTokenKnown(), avatarTokenChanged(), avatarData() */ QString Contact::avatarToken() const { if (!mPriv->requestedFeatures.contains(FeatureAvatarToken)) { warning() << "Contact::avatarToken() used on" << this << "for which FeatureAvatarToken hasn't been requested - returning \"\""; return QString(); } else if (!isAvatarTokenKnown()) { warning() << "Contact::avatarToken() used on" << this << "for which the avatar token is not (yet) known - returning \"\""; return QString(); } return mPriv->avatarToken; } /** * Return the actual avatar for this contact. * * Change notification is via the avatarDataChanged() signal. * * This method requires Contact::FeatureAvatarData to be ready. * * \return The avatar as an AvatarData object. * \sa avatarDataChanged(), avatarToken() */ AvatarData Contact::avatarData() const { if (!mPriv->requestedFeatures.contains(FeatureAvatarData)) { warning() << "Contact::avatarData() used on" << this << "for which FeatureAvatarData hasn't been requested - returning \"\""; return AvatarData(); } return mPriv->avatarData; } /** * Start a request to retrieve the avatar for this contact. * * Force the request of the avatar data. This method returns directly, emitting * avatarTokenChanged() and avatarDataChanged() signals once the token and data are * fetched from the server. * * This is only useful if the avatar token is unknown; see isAvatarTokenKnown(). * It happens in the case of offline XMPP contacts, because the server does not * send the token for them and an explicit request of the avatar data is needed. * * This method requires Contact::FeatureAvatarData to be ready. * * \sa avatarData(), avatarDataChanged(), avatarToken(), avatarTokenChanged() */ void Contact::requestAvatarData() { if (!mPriv->requestedFeatures.contains(FeatureAvatarData)) { warning() << "Contact::requestAvatarData() used on" << this << "for which FeatureAvatarData hasn't been requested - returning \"\""; return; } return manager()->requestContactAvatars(QList() << ContactPtr(this)); } /** * Return the actual presence of this contact. * * Change notification is via the presenceChanged() signal. * * This method requires Contact::FeatureSimplePresence to be ready. * * \return The presence as a Presence object. */ Presence Contact::presence() const { if (!mPriv->requestedFeatures.contains(FeatureSimplePresence)) { warning() << "Contact::presence() used on" << this << "for which FeatureSimplePresence hasn't been requested - returning Unknown"; return Presence(); } return mPriv->presence; } /** * Return the capabilities for this contact. * * User interfaces can use this information to show or hide UI components. * * If ContactManager::supportedFeatures() contains Contact::FeatureCapabilities, * the returned object will be a ContactCapabilities object, where * CapabilitiesBase::isSpecificToContact() will be \c true; if that feature * isn't present, this returned object is the subset of * Contact::manager()::connection()::capabilities() * and CapabilitiesBase::isSpecificToContact() will be \c false. * * Change notification is via the capabilitiesChanged() signal. * * This method requires Contact::FeatureCapabilities to be ready. * * @return An object representing the contact capabilities. */ ContactCapabilities Contact::capabilities() const { if (!mPriv->requestedFeatures.contains(FeatureCapabilities)) { warning() << "Contact::capabilities() used on" << this << "for which FeatureCapabilities hasn't been requested - returning 0"; return ContactCapabilities(false); } return mPriv->caps; } /** * Return the location for this contact. * * Change notification is via the locationUpdated() signal. * * This method requires Contact::FeatureLocation to be ready. * * \return The contact location as a LocationInfo object. */ LocationInfo Contact::location() const { if (!mPriv->requestedFeatures.contains(FeatureLocation)) { warning() << "Contact::location() used on" << this << "for which FeatureLocation hasn't been requested - returning 0"; return LocationInfo(); } return mPriv->location; } /** * Return whether the info card for this contact has been received. * * With some protocols (notably XMPP) information is not pushed from the server * and must be requested explicitely using refreshInfo() or requestInfo(). This * method can be used to know if the information is received from the server * or if an explicit request is needed. * * This method requires Contacat::FeatureInfo to be ready. * * \return \c true if the information is known; \c false otherwise. */ bool Contact::isContactInfoKnown() const { if (!mPriv->requestedFeatures.contains(FeatureInfo)) { warning() << "Contact::isContactInfoKnown() used on" << this << "for which FeatureInfo hasn't been requested - returning false"; return false; } return mPriv->isContactInfoKnown; } /** * Return the information for this contact. * * Note that this method only return cached information. In order to refresh the * information use refreshInfo(). * * Change notification is via the infoFieldsChanged() signal. * * This method requires Contact::FeatureInfo to be ready. * * \return The contact info as a Contact::InfoFields object. */ Contact::InfoFields Contact::infoFields() const { if (!mPriv->requestedFeatures.contains(FeatureInfo)) { warning() << "Contact::infoFields() used on" << this << "for which FeatureInfo hasn't been requested - returning empty " "InfoFields"; return InfoFields(); } return mPriv->info; } /** * Refresh information for the given contact. * * Once the information is retrieved infoFieldsChanged() will be emitted. * * This method requires Contact::FeatureInfo to be ready. * * \return A PendingOperation, which will emit PendingOperation::finished * when the call has finished. * \sa infoFieldsChanged() */ PendingOperation *Contact::refreshInfo() { ConnectionPtr conn = manager()->connection(); if (!mPriv->requestedFeatures.contains(FeatureInfo)) { warning() << "Contact::refreshInfo() used on" << this << "for which FeatureInfo hasn't been requested - failing"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("FeatureInfo needs to be ready in order to " "use this method"), ContactPtr(this)); } return manager()->refreshContactInfo(QList() << ContactPtr(this)); } /** * Start a request to retrieve the information for this contact. * * This method is useful for UIs that don't care about notification of changes * in the contact information but want to show the contact information * (e.g. right-click on a contact and show the contact info). * * \return A PendingContactInfo, which will emit PendingContactInfo::finished * when the information has been retrieved or an error occurred. */ PendingContactInfo *Contact::requestInfo() { return new PendingContactInfo(ContactPtr(this)); } /** * Return whether the presence subscription state of this contact is known. * * \return \c true if the presence subscription state is known, \c false otherwise. * \sa subscriptionState(), isSubscriptionRejected() */ bool Contact::isSubscriptionStateKnown() const { return mPriv->subscriptionState != SubscriptionStateUnknown; } /** * Return whether a request to see this contact's presence was denied. * * \return \c if the a request to see the presence subscription was denied, \c false otherwise. * \sa isSubscriptionStateKnown(), subscriptionState() */ bool Contact::isSubscriptionRejected() const { return mPriv->subscriptionState == SubscriptionStateRemovedRemotely; } /** * Return the presence subscription state of this contact (i.e. whether the local user can retrieve * information about this contact's presence). * * \return The presence subscription state as Contact::PresenceState. * \sa isSubscriptionStateKnown(), isSubscriptionRejected() */ Contact::PresenceState Contact::subscriptionState() const { return subscriptionStateToPresenceState(mPriv->subscriptionState); } /** * Return whether the presence publish state of this contact is known. * * \return \c true if the presence publish state is known, \c false otherwise. * \sa publishState(), isPublishCancelled() */ bool Contact::isPublishStateKnown() const { return mPriv->publishState != SubscriptionStateUnknown; } /** * Return whether a request to publish presence information to this contact was cancelled. * * \return \c true if a request to publish presence information was cancelled, * \c false otherwise. * \sa isPublishStateKnown(), publishState() */ bool Contact::isPublishCancelled() const { return mPriv->publishState == SubscriptionStateRemovedRemotely; } /** * Return the presence publish state of this contact (i.e. whether this contact can retrieve * information about the local user's presence). * * \return The presence publish state as Contact::PresenceState. * \sa isSubscriptionStateKnown(), isSubscriptionRejected() */ Contact::PresenceState Contact::publishState() const { return subscriptionStateToPresenceState(mPriv->publishState); } /** * If the publishState() is Contact::PresenceStateAsk, return an optional message that was sent * by the contact asking to receive the local user's presence; omitted if none was given. * * \return The message that was sent by the contact asking to receive the local user's presence. * \sa publishState() */ QString Contact::publishStateMessage() const { return mPriv->publishStateMessage; } /** * Start a request that this contact allow the local user to subscribe to their presence (i.e. that * this contact's subscribe attribute becomes Contact::PresenceStateYes) * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa subscriptionState(), removePresenceSubscription() */ PendingOperation *Contact::requestPresenceSubscription(const QString &message) { return manager()->requestPresenceSubscription(QList() << ContactPtr(this), message); } /** * Start a request for the local user to stop receiving presence from this contact. * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa subscriptionState(), requestPresenceSubscription() */ PendingOperation *Contact::removePresenceSubscription(const QString &message) { return manager()->removePresenceSubscription(QList() << ContactPtr(this), message); } /** * Start a request to authorize this contact's request to see the local user presence * (i.e. that this contact publish attribute becomes Contact::PresenceStateYes). * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa publishState(), removePresencePublication() */ PendingOperation *Contact::authorizePresencePublication(const QString &message) { return manager()->authorizePresencePublication(QList() << ContactPtr(this), message); } /** * Start a request for the local user to stop sending presence to this contact. * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. * \sa publishState(), authorizePresencePublication() */ PendingOperation *Contact::removePresencePublication(const QString &message) { return manager()->removePresencePublication(QList() << ContactPtr(this), message); } /** * Return whether this contact is blocked. * * Change notification is via the blockStatusChanged() signal. * * \return \c true if blocked, \c false otherwise. * \sa block() */ bool Contact::isBlocked() const { return mPriv->blocked; } /** * Block this contact. Blocked contacts cannot send messages to the user; * depending on the protocol, blocking a contact may have other effects. * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to take the requested action. * \sa blockAndReportAbuse(), unblock() */ PendingOperation *Contact::block() { return manager()->blockContacts(QList() << ContactPtr(this)); } /** * Block this contact and additionally report abusive behaviour * to the server. * * If reporting abusive behaviour is not supported by the protocol, * this method has the same effect as block(). * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to take the requested action. * \sa ContactManager::canReportAbuse(), block(), unblock() */ PendingOperation *Contact::blockAndReportAbuse() { return manager()->blockContactsAndReportAbuse(QList() << ContactPtr(this)); } /** * Unblock this contact. * * This method requires Connection::FeatureRoster to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to take the requested action. * \sa block(), blockAndReportAbuse() */ PendingOperation *Contact::unblock() { return manager()->unblockContacts(QList() << ContactPtr(this)); } /** * Return the names of the user-defined roster groups to which the contact * belongs. * * Change notification is via the addedToGroup() and removedFromGroup() signals. * * This method requires Connection::FeatureRosterGroups to be ready. * * \return A list of user-defined contact list groups names. * \sa addToGroup(), removedFromGroup() */ QStringList Contact::groups() const { return mPriv->groups.toList(); } /** * Attempt to add the contact to the user-defined contact list * group named \a group. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to to add the contact to the user-defined contact * list group. * \sa groups(), removeFromGroup() */ PendingOperation *Contact::addToGroup(const QString &group) { return manager()->addContactsToGroup(group, QList() << ContactPtr(this)); } /** * Attempt to remove the contact from the user-defined contact list * group named \a group. * * This method requires Connection::FeatureRosterGroups to be ready. * * \param group The group name. * \return A PendingOperation which will emit PendingOperation::finished * when an attempt has been made to to remote the contact to the user-defined contact * list group. * \sa groups(), addToGroup() */ PendingOperation *Contact::removeFromGroup(const QString &group) { return manager()->removeContactsFromGroup(group, QList() << ContactPtr(this)); } /** * Return the client types of this contact, if known. * * Client types are represented using the values documented by the XMPP registrar, * with some additional types. A contact can set one or more client types, or can simply * advertise itself as unknown - in this case, an empty list is returned. * * This method returns cached information and is more appropriate for "lazy" * client type finding, for instance displaying the client types (if available) * of everyone in your contact list. For getting latest up-to-date information from * the server you should use requestClientTypes() instead. * * This method requires FeatureClientTypes to be ready. * * \return A list of the client types advertised by this contact. * \sa requestClientTypes(), clientTypesChanged() */ QStringList Contact::clientTypes() const { if (!mPriv->requestedFeatures.contains(FeatureClientTypes)) { warning() << "Contact::clientTypes() used on" << this << "for which FeatureClientTypes hasn't been requested - returning an empty list"; return QStringList(); } return mPriv->clientTypes; } /** * Return the current client types of the given contact. * * If necessary, this method will make a request to the server for up-to-date * information and wait for a reply. Therefore, this method is more appropriate * for use in a "Contact Information..." dialog; it can be used to show progress * information (while waiting for the method to return), and can distinguish * between various error conditions. * * This method requires FeatureClientTypes to be ready. * * \return A list of the client types advertised by this contact. * \sa clientTypes(), clientTypesChanged() */ PendingStringList *Contact::requestClientTypes() { if (!mPriv->requestedFeatures.contains(FeatureClientTypes)) { warning() << "Contact::requestClientTypes() used on" << this << "for which FeatureClientTypes hasn't been requested - the operation will fail"; } Client::ConnectionInterfaceClientTypesInterface *clientTypesInterface = manager()->connection()->interface(); return new PendingStringList( clientTypesInterface->RequestClientTypes(mPriv->handle.at(0)), ContactPtr(this)); } void Contact::augment(const Features &requestedFeatures, const QVariantMap &attributes) { mPriv->requestedFeatures.unite(requestedFeatures); mPriv->id = qdbus_cast(attributes[ TP_QT_IFACE_CONNECTION + QLatin1String("/contact-id")]); if (attributes.contains(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST + QLatin1String("/subscribe"))) { uint subscriptionState = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST + QLatin1String("/subscribe"))); setSubscriptionState((SubscriptionState) subscriptionState); } if (attributes.contains(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST + QLatin1String("/publish"))) { uint publishState = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST + QLatin1String("/publish"))); QString publishRequest = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST + QLatin1String("/publish-request"))); setPublishState((SubscriptionState) publishState, publishRequest); } foreach (const Feature &feature, requestedFeatures) { QString maybeAlias; SimplePresence maybePresence; RequestableChannelClassList maybeCaps; QVariantMap maybeLocation; ContactInfoFieldList maybeInfo; if (feature == FeatureAlias) { maybeAlias = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING + QLatin1String("/alias"))); if (!maybeAlias.isEmpty()) { receiveAlias(maybeAlias); } else if (mPriv->alias.isEmpty()) { mPriv->alias = mPriv->id; } } else if (feature == FeatureAvatarData) { if (manager()->supportedFeatures().contains(FeatureAvatarData)) { mPriv->actualFeatures.insert(FeatureAvatarData); mPriv->updateAvatarData(); } } else if (feature == FeatureAvatarToken) { if (attributes.contains( TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS + QLatin1String("/token"))) { receiveAvatarToken(qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS + QLatin1String("/token")))); } else { if (manager()->supportedFeatures().contains(FeatureAvatarToken)) { // AvatarToken being supported but not included in the mapping indicates // that the avatar token is not known - however, the feature is working fine mPriv->actualFeatures.insert(FeatureAvatarToken); } // In either case, the avatar token can't be known mPriv->isAvatarTokenKnown = false; mPriv->avatarToken = QLatin1String(""); } } else if (feature == FeatureCapabilities) { maybeCaps = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES + QLatin1String("/capabilities"))); if (!maybeCaps.isEmpty()) { receiveCapabilities(maybeCaps); } else { if (manager()->supportedFeatures().contains(FeatureCapabilities) && mPriv->requestedFeatures.contains(FeatureCapabilities)) { // Capabilities being supported but not updated in the // mapping indicates that the capabilities is not known - // however, the feature is working fine. mPriv->actualFeatures.insert(FeatureCapabilities); } } } else if (feature == FeatureInfo) { maybeInfo = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_INFO + QLatin1String("/info"))); if (!maybeInfo.isEmpty()) { receiveInfo(maybeInfo); } else { if (manager()->supportedFeatures().contains(FeatureInfo) && mPriv->requestedFeatures.contains(FeatureInfo)) { // Info being supported but not updated in the // mapping indicates that the info is not known - // however, the feature is working fine mPriv->actualFeatures.insert(FeatureInfo); } } } else if (feature == FeatureLocation) { maybeLocation = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_LOCATION + QLatin1String("/location"))); if (!maybeLocation.isEmpty()) { receiveLocation(maybeLocation); } else { if (manager()->supportedFeatures().contains(FeatureLocation) && mPriv->requestedFeatures.contains(FeatureLocation)) { // Location being supported but not updated in the // mapping indicates that the location is not known - // however, the feature is working fine mPriv->actualFeatures.insert(FeatureLocation); } } } else if (feature == FeatureSimplePresence) { maybePresence = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE + QLatin1String("/presence"))); if (!maybePresence.status.isEmpty()) { receiveSimplePresence(maybePresence); } else { mPriv->presence.setStatus(ConnectionPresenceTypeUnknown, QLatin1String("unknown"), QLatin1String("")); } } else if (feature == FeatureRosterGroups) { QStringList groups = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_GROUPS + QLatin1String("/groups"))); mPriv->groups = groups.toSet(); } else if (feature == FeatureAddresses) { VCardFieldAddressMap addresses = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING + QLatin1String("/addresses"))); QStringList uris = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_ADDRESSING + QLatin1String("/uris"))); receiveAddresses(addresses, uris); } else if (feature == FeatureClientTypes) { QStringList maybeClientTypes = qdbus_cast(attributes.value( TP_QT_IFACE_CONNECTION_INTERFACE_CLIENT_TYPES + QLatin1String("/client-types"))); if (!maybeClientTypes.isEmpty()) { receiveClientTypes(maybeClientTypes); } else { if (manager()->supportedFeatures().contains(FeatureClientTypes) && mPriv->requestedFeatures.contains(FeatureClientTypes)) { // ClientTypes being supported but not updated in the // mapping indicates that the info is not known - // however, the feature is working fine mPriv->actualFeatures.insert(FeatureClientTypes); } } } else { warning() << "Unknown feature" << feature << "encountered when augmenting Contact"; } } } void Contact::receiveAlias(const QString &alias) { if (!mPriv->requestedFeatures.contains(FeatureAlias)) { return; } mPriv->actualFeatures.insert(FeatureAlias); if (mPriv->alias != alias) { mPriv->alias = alias; emit aliasChanged(alias); } } void Contact::receiveAvatarToken(const QString &token) { setAvatarToken(token); if (mPriv->actualFeatures.contains(FeatureAvatarData)) { mPriv->updateAvatarData(); } } void Contact::setAvatarToken(const QString &token) { if (!mPriv->requestedFeatures.contains(FeatureAvatarToken)) { return; } mPriv->actualFeatures.insert(FeatureAvatarToken); if (!mPriv->isAvatarTokenKnown || mPriv->avatarToken != token) { mPriv->isAvatarTokenKnown = true; mPriv->avatarToken = token; emit avatarTokenChanged(mPriv->avatarToken); } } void Contact::receiveAvatarData(const AvatarData &avatar) { if (mPriv->avatarData.fileName != avatar.fileName) { mPriv->avatarData = avatar; emit avatarDataChanged(mPriv->avatarData); } } void Contact::receiveSimplePresence(const SimplePresence &presence) { if (!mPriv->requestedFeatures.contains(FeatureSimplePresence)) { return; } mPriv->actualFeatures.insert(FeatureSimplePresence); if (mPriv->presence.status() != presence.status || mPriv->presence.statusMessage() != presence.statusMessage) { mPriv->presence.setStatus(presence); emit presenceChanged(mPriv->presence); } } void Contact::receiveCapabilities(const RequestableChannelClassList &caps) { if (!mPriv->requestedFeatures.contains(FeatureCapabilities)) { return; } mPriv->actualFeatures.insert(FeatureCapabilities); if (mPriv->caps.allClassSpecs().bareClasses() != caps) { mPriv->caps.updateRequestableChannelClasses(caps); emit capabilitiesChanged(mPriv->caps); } } void Contact::receiveLocation(const QVariantMap &location) { if (!mPriv->requestedFeatures.contains(FeatureLocation)) { return; } mPriv->actualFeatures.insert(FeatureLocation); if (mPriv->location.allDetails() != location) { mPriv->location.updateData(location); emit locationUpdated(mPriv->location); } } void Contact::receiveInfo(const ContactInfoFieldList &info) { if (!mPriv->requestedFeatures.contains(FeatureInfo)) { return; } mPriv->actualFeatures.insert(FeatureInfo); mPriv->isContactInfoKnown = true; if (mPriv->info.allFields() != info) { mPriv->info = InfoFields(info); emit infoFieldsChanged(mPriv->info); } } void Contact::receiveAddresses(const QMap &addresses, const QStringList &uris) { if (!mPriv->requestedFeatures.contains(FeatureAddresses)) { return; } mPriv->actualFeatures.insert(FeatureAddresses); mPriv->vcardAddresses = addresses; mPriv->uris = uris; } void Contact::receiveClientTypes(const QStringList &clientTypes) { if (!mPriv->requestedFeatures.contains(FeatureClientTypes)) { return; } mPriv->actualFeatures.insert(FeatureClientTypes); if (mPriv->clientTypes != clientTypes) { mPriv->clientTypes = clientTypes; emit clientTypesChanged(mPriv->clientTypes); } } Contact::PresenceState Contact::subscriptionStateToPresenceState(uint subscriptionState) { switch (subscriptionState) { case SubscriptionStateAsk: return PresenceStateAsk; case SubscriptionStateYes: return PresenceStateYes; default: return PresenceStateNo; } } void Contact::setSubscriptionState(SubscriptionState state) { if (mPriv->subscriptionState == state) { return; } mPriv->subscriptionState = state; emit subscriptionStateChanged(subscriptionStateToPresenceState(state)); } void Contact::setPublishState(SubscriptionState state, const QString &message) { if (mPriv->publishState == state && mPriv->publishStateMessage == message) { return; } mPriv->publishState = state; mPriv->publishStateMessage = message; emit publishStateChanged(subscriptionStateToPresenceState(state), message); } void Contact::setBlocked(bool value) { if (mPriv->blocked == value) { return; } mPriv->blocked = value; emit blockStatusChanged(value); } void Contact::setAddedToGroup(const QString &group) { if (!mPriv->groups.contains(group)) { mPriv->groups.insert(group); emit addedToGroup(group); } } void Contact::setRemovedFromGroup(const QString &group) { if (mPriv->groups.remove(group)) { emit removedFromGroup(group); } } /** * \fn void Contact::aliasChanged(const QString &alias) * * Emitted when the value of alias() changes. * * \param alias The new alias of this contact. * \sa alias() */ /** * \fn void Contact::avatarTokenChanged(const QString &avatarToken) * * Emitted when the value of avatarToken() changes. * * \param avatarToken The new avatar token of this contact. * \sa avatarToken() */ /** * \fn void Contact::avatarDataChanged(const QString &avatarToken) * * Emitted when the value of avatarData() changes. * * \param avatarData The new avatar of this contact. * \sa avatarData() */ /** * \fn void Contact::presenceChanged(const Tp::Presence &presence) * * Emitted when the value of presence() changes. * * \param presence The new presence of this contact. * \sa presence() */ /** * \fn void Contact::capabilitiesChanged(const Tp::ContactCapabilities &caps) * * Emitted when the value of capabilities() changes. * * \param caps The new capabilities of this contact. * \sa capabilities() */ /** * \fn void Contact::locationUpdated(const Tp::LocationInfo &location) * * Emitted when the value of location() changes. * * \param location The new location of this contact. * \sa location() */ /** * \fn void Contact::infoFieldsChanged(const Tp::Contact::InfoFields &infoFields) * * Emitted when the value of infoFields() changes. * * \param infoFields The new info of this contact. * \sa infoFields() */ /** * \fn void Contact::subscriptionStateChanged(Tp::Contact::PresenceState state) * * Emitted when the value of subscriptionState() changes. * * \param state The new subscription state of this contact. * \sa subscriptionState() */ /** * \fn void Contact::publishStateChanged(Tp::Contact::PresenceState state, const QString &message) * * Emitted when the value of publishState() changes. * * \param state The new publish state of this contact. * \param message The new user-defined status message of this contact. * \sa publishState() */ /** * \fn void Contact::blockStatusChanged(bool blocked) * * Emitted when the value of isBlocked() changes. * * \param blocked The new block status of this contact. * \sa isBlocked() */ /** * \fn void Contact::addedToGroup(const QString &group) * * Emitted when this contact is added to \a group of the contact list. * * \param group The group name. * \sa groups(), removedFromGroup() */ /** * \fn void Contact::removedFromGroup(const QString &group) * * Emitted when this contact is removed from \a group of the contact list. * * \param group The group name. * \sa groups(), addedToGroup() */ /** * \fn void Contact::clientTypesChanged(const QStringList &clientTypes) * * Emitted when the client types of this contact change or become known. * * \param clientTypes The contact's client types * \sa clientTypes(), requestClientTypes() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/PendingSendMessage0000644000175100017520000000040612530423576023614 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingSendMessage_HEADER_GUARD_ #define _TelepathyQt_PendingSendMessage_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/outgoing-file-transfer-channel.cpp0000644000175100017520000002740712530423576026704 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/outgoing-file-transfer-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { static const int FT_BLOCK_SIZE = 16 * 1024; struct TP_QT_NO_EXPORT OutgoingFileTransferChannel::Private { Private(OutgoingFileTransferChannel *parent); ~Private(); // Public object OutgoingFileTransferChannel *parent; Client::ChannelTypeFileTransferInterface *fileTransferInterface; // Introspection QIODevice *input; QTcpSocket *socket; SocketAddressIPv4 addr; qint64 pos; }; OutgoingFileTransferChannel::Private::Private(OutgoingFileTransferChannel *parent) : parent(parent), fileTransferInterface(parent->interface()), input(0), socket(0), pos(0) { } OutgoingFileTransferChannel::Private::~Private() { } /** * \class OutgoingFileTransferChannel * \ingroup clientchannel * \headerfile TelepathyQt/outgoing-file-transfer-channel.h * * \brief The OutgoingFileTransferChannel class represents a Telepathy channel * of type FileTransfer for outgoing file transfers. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * OutgoingFileTransferChannel object usable. * * This is currently the same as FileTransferChannel::FeatureCore, but may change to include more. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature OutgoingFileTransferChannel::FeatureCore = Feature(QLatin1String(FileTransferChannel::staticMetaObject.className()), 0); // FT::FeatureCore /** * Create a new OutgoingFileTransferChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return An OutgoingFileTransferChannelPtr object pointing to the newly created * OutgoingFileTransferChannel object. */ OutgoingFileTransferChannelPtr OutgoingFileTransferChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return OutgoingFileTransferChannelPtr(new OutgoingFileTransferChannel( connection, objectPath, immutableProperties, OutgoingFileTransferChannel::FeatureCore)); } /** * Construct a new OutgoingFileTransferChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on OutgoingFileTransferChannel::FeatureCore. */ OutgoingFileTransferChannel::OutgoingFileTransferChannel( const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : FileTransferChannel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ OutgoingFileTransferChannel::~OutgoingFileTransferChannel() { delete mPriv; } /** * Provide the file for an outgoing file transfer which has been offered. * * The state will change to #FileTransferStateOpen as soon as the transfer * starts. * The given input device should not be destroyed until the state() * changes to #FileTransferStateCompleted or #FileTransferStateCancelled. * If input is a sequential device QIODevice::isSequential(), it should be * closed when no more data is available, so that it's known when to stop reading. * * Only the primary handler of a file transfer channel may call this method. * * This method requires FileTransferChannel::FeatureCore to be ready. * * \param input A QIODevice object where the data will be read from. * \return A PendingOperation object which will emit PendingOperation::finished * when the call has finished. * \sa stateChanged(), state(), stateReason() */ PendingOperation *OutgoingFileTransferChannel::provideFile(QIODevice *input) { if (!isReady(FileTransferChannel::FeatureCore)) { warning() << "FileTransferChannel::FeatureCore must be ready before " "calling provideFile"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), OutgoingFileTransferChannelPtr(this)); } // let's fail here direclty as we may only have one device to handle if (mPriv->input) { warning() << "File transfer can only be started once in the same " "channel"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("File transfer can only be started once in the same channel"), OutgoingFileTransferChannelPtr(this)); } if ((!input->isOpen() && !input->open(QIODevice::ReadOnly)) && !input->isReadable()) { warning() << "Unable to open IO device for reading"; return new PendingFailure(TP_QT_ERROR_PERMISSION_DENIED, QLatin1String("Unable to open IO device for reading"), OutgoingFileTransferChannelPtr(this)); } mPriv->input = input; connect(input, SIGNAL(aboutToClose()), SLOT(onInputAboutToClose())); PendingVariant *pv = new PendingVariant( mPriv->fileTransferInterface->ProvideFile( SocketAddressTypeIPv4, SocketAccessControlLocalhost, QDBusVariant(QVariant(QString()))), OutgoingFileTransferChannelPtr(this)); connect(pv, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onProvideFileFinished(Tp::PendingOperation*))); return pv; } void OutgoingFileTransferChannel::onProvideFileFinished(PendingOperation *op) { if (op->isError()) { warning() << "Error providing file transfer " << op->errorName() << ":" << op->errorMessage(); invalidate(op->errorName(), op->errorMessage()); return; } PendingVariant *pv = qobject_cast(op); mPriv->addr = qdbus_cast(pv->result()); debug().nospace() << "Got address " << mPriv->addr.address << ":" << mPriv->addr.port; if (state() == FileTransferStateOpen) { connectToHost(); } } void OutgoingFileTransferChannel::connectToHost() { if (isConnected() || mPriv->addr.address.isNull()) { return; } mPriv->socket = new QTcpSocket(this); connect(mPriv->socket, SIGNAL(connected()), SLOT(onSocketConnected())); connect(mPriv->socket, SIGNAL(disconnected()), SLOT(onSocketDisconnected())); connect(mPriv->socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(onSocketError(QAbstractSocket::SocketError))); connect(mPriv->socket, SIGNAL(bytesWritten(qint64)), SLOT(doTransfer())); debug().nospace() << "Connecting to host " << mPriv->addr.address << ":" << mPriv->addr.port << "..."; mPriv->socket->connectToHost(mPriv->addr.address, mPriv->addr.port); } void OutgoingFileTransferChannel::onSocketConnected() { debug() << "Connected to host"; setConnected(); connect(mPriv->input, SIGNAL(readyRead()), SLOT(doTransfer())); // for non sequential devices, let's seek to the initialOffset if (!mPriv->input->isSequential()) { if (mPriv->input->seek(initialOffset())) { mPriv->pos = initialOffset(); } } debug() << "Starting transfer..."; doTransfer(); } void OutgoingFileTransferChannel::onSocketDisconnected() { debug() << "Disconnected from host"; setFinished(); } void OutgoingFileTransferChannel::onSocketError(QAbstractSocket::SocketError error) { debug() << "Socket error" << error; setFinished(); } void OutgoingFileTransferChannel::onInputAboutToClose() { debug() << "Input closed"; // read all remaining data from input device and write to output device if (isConnected()) { QByteArray data; data = mPriv->input->readAll(); mPriv->socket->write(data); // never fails } setFinished(); } void OutgoingFileTransferChannel::doTransfer() { // read FT_BLOCK_SIZE each time, as input can be a QFile, we don't want to // block reading the whole file char buffer[FT_BLOCK_SIZE]; char *p = buffer; memset(buffer, 0, sizeof(buffer)); qint64 len = mPriv->input->read(buffer, sizeof(buffer)); bool scheduleTransfer = false; if (((qulonglong) mPriv->pos < initialOffset()) && (len > 0)) { qint64 skip = (qint64) qMin(initialOffset() - mPriv->pos, (qulonglong) len); debug() << "skipping" << skip << "bytes"; if (skip == len) { // nothing to write, all data read was skipped // schedule a transfer, as readyRead may never be called and // bytesWriiten will not scheduleTransfer = true; goto end; } p += skip; len -= skip; } if (len > 0) { mPriv->socket->write(p, len); // never fails } end: if (len == -1 || (!mPriv->input->isSequential() && mPriv->input->atEnd())) { // error or EOF setFinished(); return; } mPriv->pos += len; if (scheduleTransfer) { QMetaObject::invokeMethod(this, SLOT(doTransfer()), Qt::QueuedConnection); } } void OutgoingFileTransferChannel::setFinished() { if (isFinished()) { // it shouldn't happen but let's make sure return; } if (mPriv->socket) { disconnect(mPriv->socket, SIGNAL(connected()), this, SLOT(onSocketConnected())); disconnect(mPriv->socket, SIGNAL(disconnected()), this, SLOT(onSocketDisconnected())); disconnect(mPriv->socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onSocketError(QAbstractSocket::SocketError))); disconnect(mPriv->socket, SIGNAL(bytesWritten(qint64)), this, SLOT(doTransfer())); mPriv->socket->close(); } if (mPriv->input) { disconnect(mPriv->input, SIGNAL(aboutToClose()), this, SLOT(onInputAboutToClose())); disconnect(mPriv->input, SIGNAL(readyRead()), this, SLOT(doTransfer())); mPriv->input->close(); } FileTransferChannel::setFinished(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/channel-request.cpp0000644000175100017520000006722212530423576024001 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-channel-request-body.hpp" #include "TelepathyQt/_gen/cli-channel-request.moc.hpp" #include "TelepathyQt/_gen/channel-request.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ChannelRequest::Private { Private(ChannelRequest *parent, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &, const ConnectionFactoryConstPtr &, const ChannelFactoryConstPtr &, const ContactFactoryConstPtr &); ~Private(); static void introspectMain(Private *self); // \param lastCall Is this the last call to extractMainProps ie. should actions that only must // be done once be done in this call void extractMainProps(const QVariantMap &props, bool lastCall); // Public object ChannelRequest *parent; // Context AccountFactoryConstPtr accFact; ConnectionFactoryConstPtr connFact; ChannelFactoryConstPtr chanFact; ContactFactoryConstPtr contactFact; // Instance of generated interface class Client::ChannelRequestInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; QVariantMap immutableProperties; ReadinessHelper *readinessHelper; // Introspection AccountPtr account; QDateTime userActionTime; QString preferredHandler; QualifiedPropertyValueMapList requests; ChannelRequestHints hints; bool propertiesDone; bool gotSWC; ChannelPtr chan; }; ChannelRequest::Private::Private(ChannelRequest *parent, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accFact, const ConnectionFactoryConstPtr &connFact, const ChannelFactoryConstPtr &chanFact, const ContactFactoryConstPtr &contactFact) : parent(parent), accFact(accFact), connFact(connFact), chanFact(chanFact), contactFact(contactFact), baseInterface(new Client::ChannelRequestInterface(parent)), properties(parent->interface()), immutableProperties(immutableProperties), readinessHelper(parent->readinessHelper()), propertiesDone(false), gotSWC(false) { debug() << "Creating new ChannelRequest:" << parent->objectPath(); parent->connect(baseInterface, SIGNAL(Failed(QString,QString)), SIGNAL(failed(QString,QString))); parent->connect(baseInterface, SIGNAL(Succeeded()), SLOT(onLegacySucceeded())); parent->connect(baseInterface, SIGNAL(SucceededWithChannel(QDBusObjectPath,QVariantMap,QDBusObjectPath,QVariantMap)), SLOT(onSucceededWithChannel(QDBusObjectPath,QVariantMap,QDBusObjectPath,QVariantMap))); ReadinessHelper::Introspectables introspectables; // As ChannelRequest does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); // For early access to the immutable properties through the friendly getters - will be called // again with lastCall = true eventually, if/when becomeReady is called, though QVariantMap mainProps; foreach (QString key, immutableProperties.keys()) { // The key.count thing is so that we don't match "org.fdo.Tp.CR.OptionalInterface.Prop" too if (key.startsWith(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".")) && key.count(QLatin1Char('.')) == QString(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".")).count(QLatin1Char('.'))) { QVariant value = immutableProperties.value(key); mainProps.insert(key.remove(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".")), value); } } extractMainProps(mainProps, false); } ChannelRequest::Private::~Private() { } void ChannelRequest::Private::introspectMain(ChannelRequest::Private *self) { QVariantMap props; QString key; bool needIntrospectMainProps = false; const char *propertiesNames[] = { "Account", "UserActionTime", "PreferredHandler", "Requests", "Interfaces", NULL }; for (unsigned i = 0; propertiesNames[i] != NULL; ++i) { key = TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String("."); key += QLatin1String(propertiesNames[i]); if (!self->immutableProperties.contains(key)) { needIntrospectMainProps = true; break; } props.insert(QLatin1String(propertiesNames[i]), self->immutableProperties[key]); } if (needIntrospectMainProps) { debug() << "Calling Properties::GetAll(ChannelRequest)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll(TP_QT_IFACE_CHANNEL_REQUEST), self->parent); // FIXME: This is a Qt bug fixed upstream, should be in the next Qt release. // We should not need to check watcher->isFinished() here, remove the // check when a fixed Qt version is released. if (watcher->isFinished()) { self->parent->gotMainProperties(watcher); } else { self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotMainProperties(QDBusPendingCallWatcher*))); } } else { self->extractMainProps(props, true); } } void ChannelRequest::Private::extractMainProps(const QVariantMap &props, bool lastCall) { PendingReady *readyOp = 0; if (props.contains(QLatin1String("Account"))) { QDBusObjectPath accountObjectPath = qdbus_cast(props.value(QLatin1String("Account"))); if (!account.isNull()) { if (accountObjectPath.path() == account->objectPath()) { // Most often a no-op, but we want this to guarantee the old behavior in all cases readyOp = account->becomeReady(); } else { warning() << "The account" << accountObjectPath.path() << "was not the expected" << account->objectPath() << "for CR" << parent->objectPath(); // Construct a new one instead account.reset(); } } // We need to check again because we might have dropped the expected account just a sec ago if (account.isNull() && !accountObjectPath.path().isEmpty()) { if (!accFact.isNull()) { readyOp = accFact->proxy( TP_QT_ACCOUNT_MANAGER_BUS_NAME, accountObjectPath.path(), connFact, chanFact, contactFact); account = AccountPtr::qObjectCast(readyOp->proxy()); } else { account = Account::create( TP_QT_ACCOUNT_MANAGER_BUS_NAME, accountObjectPath.path(), connFact, chanFact, contactFact); readyOp = account->becomeReady(); } } } // FIXME See http://bugs.freedesktop.org/show_bug.cgi?id=21690 uint stamp = (uint) qdbus_cast(props.value(QLatin1String("UserActionTime"))); if (stamp != 0) { userActionTime = QDateTime::fromTime_t(stamp); } preferredHandler = qdbus_cast(props.value(QLatin1String("PreferredHandler"))); requests = qdbus_cast(props.value(QLatin1String("Requests"))); parent->setInterfaces(qdbus_cast(props[QLatin1String("Interfaces")])); readinessHelper->setInterfaces(parent->interfaces()); if (props.contains(QLatin1String("Hints"))) { hints = qdbus_cast(props.value(QLatin1String("Hints"))); } if (lastCall) { propertiesDone = true; } if (account) { parent->connect(readyOp, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAccountReady(Tp::PendingOperation*))); } else if (lastCall) { warning() << "No account for ChannelRequest" << parent->objectPath(); readinessHelper->setIntrospectCompleted(FeatureCore, true); } } /** * \class ChannelRequest * \ingroup clientchannelrequest * \headerfile TelepathyQt/channel-request.h * * \brief The ChannelRequest class represents a Telepathy channel request. * * A channel request is an object in the channel dispatcher representing an * ongoing request for some channels to be created or found. There can be any * number of channel request objects at the same time. * * A channel request can be cancelled by any client (not just the one that * requested it). This means that the channel dispatcher will close the * resulting channel, or refrain from requesting it at all, rather than * dispatching it to a handler. * * See \ref async_model */ /** * Feature representing the core that needs to become ready to make the * ChannelRequest object usable. * * Note that this feature must be enabled in order to use most * ChannelRequest methods. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature ChannelRequest::FeatureCore = Feature(QLatin1String(ChannelRequest::staticMetaObject.className()), 0, true); /** * Create a new channel request object using the given \a bus and the given factories. * * \param bus QDBusConnection to use. * \param objectPath The channel request object path. * \param immutableProperties The channel request immutable properties. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ChannelRequestPtr object pointing to the newly created ChannelRequest object. */ ChannelRequestPtr ChannelRequest::create(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ChannelRequestPtr(new ChannelRequest(bus, objectPath, immutableProperties, accountFactory, connectionFactory, channelFactory, contactFactory)); } /** * Create a new channel request object for the given \a account. * * The returned instance will use factories from the account. * * \param account The account that the request was made through. * \param objectPath The channel request object path. * \param immutableProperties The channel request immutable properties. * \return A ChannelRequestPtr object pointing to the newly created ChannelRequest object. */ ChannelRequestPtr ChannelRequest::create(const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties) { return ChannelRequestPtr(new ChannelRequest(account, objectPath, immutableProperties)); } /** * Construct a new channel request object using the given \a bus and the given factories. * * \param bus QDBusConnection to use. * \param objectPath The channel request object path. * \param accountFactory The account factory to use. * \param connectionFactory The connection factory to use. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \param immutableProperties The immutable properties of the channel request. * \return A ChannelRequestPtr object pointing to the newly created ChannelRequest. */ ChannelRequest::ChannelRequest(const QDBusConnection &bus, const QString &objectPath, const QVariantMap &immutableProperties, const AccountFactoryConstPtr &accountFactory, const ConnectionFactoryConstPtr &connectionFactory, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) : StatefulDBusProxy(bus, TP_QT_IFACE_CHANNEL_DISPATCHER, objectPath, FeatureCore), OptionalInterfaceFactory(this), mPriv(new Private(this, immutableProperties, accountFactory, connectionFactory, channelFactory, contactFactory)) { if (accountFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the account factory is not the proxy connection"; } if (connectionFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the connection factory is not the proxy connection"; } if (channelFactory->dbusConnection().name() != bus.name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection"; } } /** * Construct a new channel request object using the given \a account. * * The constructed instance will use the factories from the account. * * \param account Account to use. * \param objectPath The channel request object path. * \param immutableProperties The immutable properties of the channel request. * \return A ChannelRequestPtr object pointing to the newly created ChannelRequest. */ ChannelRequest::ChannelRequest(const AccountPtr &account, const QString &objectPath, const QVariantMap &immutableProperties) : StatefulDBusProxy(account->dbusConnection(), TP_QT_IFACE_CHANNEL_DISPATCHER, objectPath, FeatureCore), OptionalInterfaceFactory(this), mPriv(new Private(this, immutableProperties, AccountFactoryPtr(), account->connectionFactory(), account->channelFactory(), account->contactFactory())) { mPriv->account = account; } /** * Class destructor. */ ChannelRequest::~ChannelRequest() { delete mPriv; } /** * Return the account on which this request was made. * * This method can be used even before the ChannelRequest is ready, in which case the account object * corresponding to the immutable properties is returned. In this case, the Account object is not * necessarily ready either. This is useful for eg. matching ChannelRequests from * ClientHandlerInterface::addRequest() with existing accounts in the application: either by object * path, or if account factories are in use, even by object identity. * * If the account is not provided in the immutable properties, this will only return a non-\c NULL * AccountPtr once ChannelRequest::FeatureCore is ready on this object. * * \return A pointer to the Account object. */ AccountPtr ChannelRequest::account() const { return mPriv->account; } /** * Return the time at which the user action occurred, or 0 if this channel * request is for some reason not involving user action. * * Unix developers: this corresponds to the _NET_WM_USER_TIME property in EWMH. * * This property is set when the channel request is created, and can never * change. * * This method can be used even before the ChannelRequest is ready: in this case, the user action * time from the immutable properties, if any, is returned. * * \return The time at which the user action occurred as QDateTime. */ QDateTime ChannelRequest::userActionTime() const { return mPriv->userActionTime; } /** * Return either the well-known bus name (starting with * org.freedesktop.Telepathy.Client.) of the preferred handler for this channel, * or an empty string to indicate that any handler would be acceptable. * * This property is set when the channel request is created, and can never * change. * * This method can be used even before the ChannelRequest is ready: in this case, the preferred * handler from the immutable properties, if any, is returned. * * \return The preferred handler, or an empty string if any handler would be * acceptable. */ QString ChannelRequest::preferredHandler() const { return mPriv->preferredHandler; } /** * Return the desirable properties for the channel or channels to be created, as specified when * placing the request in the first place. * * This property is set when the channel request is created, and can never * change. * * This method can be used even before the ChannelRequest is ready: in this case, the requested * channel properties from the immutable properties, if any, are returned. This is useful for e.g. * matching ChannelRequests from ClientHandlerInterface::addRequest() with existing requests in the * application (by the target ID or handle, most likely). * * \return The requested desirable channel properties as a list of * QualifiedPropertyValueMap objects. */ QualifiedPropertyValueMapList ChannelRequest::requests() const { return mPriv->requests; } /** * Return the dictionary of metadata provided by the channel requester when requesting the channel. * * This property is set when the channel request is created, and can never change. * * This method can be used even before the ChannelRequest is ready: in this case, the requested * channel properties from the immutable properties, if any, are returned. This is useful for e.g. * matching ChannelRequests from ClientHandlerInterface::addRequest() with existing requests in the * application (by the target ID or handle, most likely). * * \sa Account::supportsRequestHints() * \return The hints in the request as a ChannelRequestHints object, if any. */ ChannelRequestHints ChannelRequest::hints() const { return mPriv->hints; } /** * Return all of the immutable properties passed to this object when created. * * This is useful for e.g. getting to domain-specific properties of channel requests. * * \return The immutable properties as QVariantMap. */ QVariantMap ChannelRequest::immutableProperties() const { QVariantMap props = mPriv->immutableProperties; if (!account().isNull()) { props.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Account"), QVariant::fromValue(QDBusObjectPath(account()->objectPath()))); } if (userActionTime().isValid()) { props.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".UserActionTime"), QVariant::fromValue(userActionTime().toTime_t())); } if (!preferredHandler().isNull()) { props.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".PreferredHandler"), preferredHandler()); } if (!requests().isEmpty()) { props.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Requests"), QVariant::fromValue(requests())); } props.insert(TP_QT_IFACE_CHANNEL_REQUEST + QLatin1String(".Interfaces"), QVariant::fromValue(interfaces())); return props; } /** * Cancel the channel request. * * If failed() is emitted in response to this method, the error will be * #TP_QT_ERROR_CANCELLED. * * If the channel has already been dispatched to a handler, then it's too late * to call this method, and the channel request will no longer exist. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *ChannelRequest::cancel() { return new PendingVoid(mPriv->baseInterface->Cancel(), ChannelRequestPtr(this)); } /** * Return the Channel which this request succeeded with, if any. * * This will only ever be populated if Account::requestsSucceedWithChannel() is \c true, and * succeeded() has already been emitted on this ChannelRequest. Note that a PendingChannelRequest * being successfully finished already implies succeeded() has been emitted. * * \return A pointer to the Channel object, or a null ChannelPtr if there isn't any. */ ChannelPtr ChannelRequest::channel() const { return mPriv->chan; } /** * Proceed with the channel request. * * The client that created this object calls this method when it has connected * signal handlers for succeeded() and failed(). Note that this is done * automatically when using PendingChannelRequest. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *ChannelRequest::proceed() { return new PendingVoid(mPriv->baseInterface->Proceed(), ChannelRequestPtr(this)); } /** * Return the ChannelRequestInterface for this ChannelRequest class. This method is * protected since the convenience methods provided by this class should * always be used instead of the interface by users of the class. * * \return A pointer to the existing Client::ChannelRequestInterface object for this * ChannelRequest object. */ Client::ChannelRequestInterface *ChannelRequest::baseInterface() const { return mPriv->baseInterface; } void ChannelRequest::gotMainProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QVariantMap props; if (!reply.isError()) { debug() << "Got reply to Properties::GetAll(ChannelRequest)"; props = reply.value(); mPriv->extractMainProps(props, true); } else { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); warning().nospace() << "Properties::GetAll(ChannelRequest) failed with " << reply.error().name() << ": " << reply.error().message(); } watcher->deleteLater(); } void ChannelRequest::onAccountReady(PendingOperation *op) { if (op->isError()) { warning() << "Unable to make ChannelRequest.Account ready"; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, op->errorName(), op->errorMessage()); return; } if (mPriv->propertiesDone && !isReady()) { mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } } void ChannelRequest::onLegacySucceeded() { if (mPriv->gotSWC) { return; } emit succeeded(ChannelPtr()); } void ChannelRequest::onSucceededWithChannel( const QDBusObjectPath &connPath, const QVariantMap &connProps, const QDBusObjectPath &chanPath, const QVariantMap &chanProps) { if (mPriv->gotSWC) { warning().nospace() << "Got SucceededWithChannel again for CR(" << objectPath() << ")!"; return; } mPriv->gotSWC = true; QList readyOps; QString connBusName = connPath.path().mid(1).replace( QLatin1String("/"), QLatin1String(".")); PendingReady *connReady = mPriv->connFact->proxy(connBusName, connPath.path(), mPriv->chanFact, mPriv->contactFact); ConnectionPtr conn = ConnectionPtr::qObjectCast(connReady->proxy()); readyOps.append(connReady); PendingReady *chanReady = mPriv->chanFact->proxy(conn, chanPath.path(), chanProps); mPriv->chan = ChannelPtr::qObjectCast(chanReady->proxy()); readyOps.append(chanReady); connect(new PendingComposite(readyOps, ChannelRequestPtr(this)), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onChanBuilt(Tp::PendingOperation*))); } void ChannelRequest::onChanBuilt(Tp::PendingOperation *op) { if (op->isError()) { warning() << "Failed to build Channel which the ChannelRequest succeeded with," << "succeeding with NULL channel:" << op->errorName() << ',' << op->errorMessage(); mPriv->chan.reset(); } emit succeeded(mPriv->chan); } /** * \fn void ChannelRequest::failed(const QString &errorName, * const QString &errorMessage) * * Emitted when the channel request has failed. No further * methods must not be called on it. * * \param errorName The name of a D-Bus error. * \param errorMessage The error message. * \sa succeeded() */ /** * \fn void ChannelRequest::succeeded(const Tp::ChannelPtr &channel) * * Emitted when the channel request has succeeded. No further * methods must not be called on it. * * The \a channel parameter can be used to observe the channel resulting from the request (e.g. for * it getting closed). The pointer may be NULL if the Channel Dispatcher implementation is too old. * Whether a non-NULL channel can be expected can be checked with * Account::requestsSucceedWithChannel(). * * If there is a channel, it will be of the subclass determined by and made ready (or not) according * to the settings of the ChannelFactory on the Account the request was made through. * * \param channel Pointer to a proxy for the resulting channel, if the Channel Dispatcher reported it. * \sa failed() */ /** * \class ChannelRequestHints * \ingroup clientchannelrequest * \headerfile TelepathyQt/channel-request.h * * \brief The ChannelRequestHints class represents a dictionary of metadata * provided by the channel requester when requesting a channel. */ struct TP_QT_NO_EXPORT ChannelRequestHints::Private : public QSharedData { Private() {} Private(const QVariantMap &hints) : hints(hints) {} QVariantMap hints; }; ChannelRequestHints::ChannelRequestHints() { } ChannelRequestHints::ChannelRequestHints(const QVariantMap &hints) : mPriv(new Private(hints)) { } ChannelRequestHints::ChannelRequestHints(const ChannelRequestHints &crh) : mPriv(crh.mPriv) { } ChannelRequestHints::~ChannelRequestHints() { } ChannelRequestHints &ChannelRequestHints::operator=(const ChannelRequestHints &other) { if (this == &other) { return *this; } this->mPriv = other.mPriv; return *this; } bool ChannelRequestHints::isValid() const { return mPriv.constData() != 0; } bool ChannelRequestHints::hasHint(const QString &reversedDomain, const QString &localName) const { if (!isValid()) { return false; } const QString qualifiedName = reversedDomain + QLatin1Char('.') + localName; return mPriv->hints.contains(qualifiedName); } QVariant ChannelRequestHints::hint(const QString &reversedDomain, const QString &localName) const { if (!isValid()) { return QVariant(); } const QString qualifiedName = reversedDomain + QLatin1Char('.') + localName; return mPriv->hints.value(qualifiedName); } void ChannelRequestHints::setHint(const QString &reversedDomain, const QString &localName, const QVariant &value) { const QString qualifiedName = reversedDomain + QLatin1Char('.') + localName; if (!isValid()) { mPriv = new Private(); } mPriv->hints.insert(qualifiedName, value); } QVariantMap ChannelRequestHints::allHints() const { return isValid() ? mPriv->hints : QVariantMap(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/channel-request.xml0000644000175100017520000000035712530423576024013 0ustar00kaffeinekaffeine00000000000000 Channel Request interface telepathy-qt-0.9.6.1/TelepathyQt/account-capability-filter.dox0000644000175100017520000000230012530423576025733 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::AccountCapabilityFilter * \ingroup utils * \headerfile TelepathyQt/account-capability-filter.h * * \brief The AccountCapabilityFilter class provides a filter object to be used * to filter accounts by capabilities. */ telepathy-qt-0.9.6.1/TelepathyQt/dbus-daemon.xml0000644000175100017520000000515312530423576023112 0ustar00kaffeinekaffeine00000000000000 D-Bus Daemon telepathy-qt-0.9.6.1/TelepathyQt/room-list-channel.cpp0000644000175100017520000000624412530423576024233 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/room-list-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT RoomListChannel::Private { inline Private(); inline ~Private(); }; RoomListChannel::Private::Private() { } RoomListChannel::Private::~Private() { } /** * \class RoomListChannel * \ingroup clientchannel * \headerfile TelepathyQt/room-list-channel.h * * \brief The RoomListChannel class represents a Telepathy Channel of type RoomList. * * Note that this subclass of Channel will eventually provide a high-level API for the * RoomList interface. Until then, it's just a Channel. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Create a new RoomListChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A RoomListChannelPtr object pointing to the newly created * RoomListChannel object. */ RoomListChannelPtr RoomListChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return RoomListChannelPtr(new RoomListChannel(connection, objectPath, immutableProperties)); } /** * Construct a new RoomListChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * should depend on Channel::FeatureCore. */ RoomListChannel::RoomListChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private()) { } /** * Class destructor. */ RoomListChannel::~RoomListChannel() { delete mPriv; } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/abstract-client.h0000644000175100017520000002265012530423576023423 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2010 Collabora Ltd. * @copyright Copyright (C) 2009-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_abstract_client_h_HEADER_GUARD_ #define _TelepathyQt_abstract_client_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include namespace Tp { class ClientRegistrar; class ChannelClassSpecList; class TP_QT_EXPORT AbstractClient : public RefCounted { Q_DISABLE_COPY(AbstractClient) public: AbstractClient(); virtual ~AbstractClient(); bool isRegistered() const; private: friend class ClientRegistrar; void setRegistered(bool registered); struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT AbstractClientObserver : public virtual AbstractClient { Q_DISABLE_COPY(AbstractClientObserver) public: class ObserverInfo { public: ObserverInfo(const QVariantMap &info = QVariantMap()); ObserverInfo(const ObserverInfo &other); ~ObserverInfo(); ObserverInfo &operator=(const ObserverInfo &other); bool isRecovering() const { return qdbus_cast(allInfo().value(QLatin1String("recovering"))); } QVariantMap allInfo() const; private: struct Private; QSharedDataPointer mPriv; }; virtual ~AbstractClientObserver(); ChannelClassSpecList observerFilter() const; bool shouldRecover() const; virtual void observeChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const ChannelDispatchOperationPtr &dispatchOperation, const QList &requestsSatisfied, const ObserverInfo &observerInfo) = 0; protected: AbstractClientObserver(const ChannelClassSpecList &channelFilter, bool shouldRecover = false); private: struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT AbstractClientApprover : public virtual AbstractClient { Q_DISABLE_COPY(AbstractClientApprover) public: virtual ~AbstractClientApprover(); ChannelClassSpecList approverFilter() const; virtual void addDispatchOperation(const MethodInvocationContextPtr<> &context, const ChannelDispatchOperationPtr &dispatchOperation) = 0; protected: AbstractClientApprover(const ChannelClassSpecList &channelFilter); private: struct Private; friend struct Private; Private *mPriv; }; /* * TODO: use case specific subclasses: * - StreamTubeHandler(QString(List) protocol(s)) * - handleTube(DBusTubeChannelPtr, userActionTime) * - DBusTubeHandler(QString(List) serviceName(s)) * - handleTube(DBusTubeChannelPtr, userActionTime) */ class TP_QT_EXPORT AbstractClientHandler : public virtual AbstractClient { Q_DISABLE_COPY(AbstractClientHandler) public: class Capabilities { public: Capabilities(const QStringList &tokens = QStringList()); Capabilities(const Capabilities &other); ~Capabilities(); Capabilities &operator=(const Capabilities &other); bool hasGTalkP2PNATTraversalToken() const { return hasToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/gtalk-p2p")); } void setGTalkP2PNATTraversalToken() { setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/gtalk-p2p")); } void unsetGTalkP2PNATTraversalToken() { unsetToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/gtalk-p2p")); } bool hasICEUDPNATTraversalToken() const { return hasToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/ice-udp")); } void setICEUDPNATTraversalToken() { setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/ice-udp")); } void unsetICEUDPNATTraversalToken() { unsetToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/ice-udp")); } bool hasWLM85NATTraversalToken() const { return hasToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/wlm-8.5")); } void setWLM85NATTraversalToken() { setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/wlm-8.5")); } void unsetWLM85NATTraversalToken() { unsetToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/wlm-8.5")); } bool hasWLM2009NATTraversalToken() const { return hasToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/wlm-2009")); } void setWLM2009NATTraversalToken() { setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/wlm-2009")); } void unsetWLM2009NATTraversalToken() { unsetToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/wlm-2009")); } bool hasAudioCodecToken(const QString &mimeSubType) const { return hasToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/audio/") + mimeSubType.toLower()); } void setAudioCodecToken(const QString &mimeSubType) { setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/audio/") + mimeSubType.toLower()); } void unsetAudioCodecToken(const QString &mimeSubType) { unsetToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/audio/") + mimeSubType.toLower()); } bool hasVideoCodecToken(const QString &mimeSubType) const { return hasToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/video/") + mimeSubType.toLower()); } void setVideoCodecToken(const QString &mimeSubType) { setToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/video/") + mimeSubType.toLower()); } void unsetVideoCodecToken(const QString &mimeSubType) { unsetToken(TP_QT_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING + QLatin1String("/video/") + mimeSubType.toLower()); } bool hasToken(const QString &token) const; void setToken(const QString &token); void unsetToken(const QString &token); QStringList allTokens() const; private: struct Private; QSharedDataPointer mPriv; }; class HandlerInfo { public: HandlerInfo(const QVariantMap &info = QVariantMap()); HandlerInfo(const HandlerInfo &other); ~HandlerInfo(); HandlerInfo &operator=(const HandlerInfo &other); QVariantMap allInfo() const; private: struct Private; QSharedDataPointer mPriv; }; virtual ~AbstractClientHandler(); ChannelClassSpecList handlerFilter() const; Capabilities handlerCapabilities() const; virtual bool bypassApproval() const = 0; virtual void handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo) = 0; bool wantsRequestNotification() const; virtual void addRequest(const ChannelRequestPtr &request); virtual void removeRequest(const ChannelRequestPtr &request, const QString &errorName, const QString &errorMessage); protected: AbstractClientHandler(const ChannelClassSpecList &channelFilter, const Capabilities &capabilities = Capabilities(), bool wantsRequestNotification = false); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp Q_DECLARE_METATYPE(Tp::AbstractClientObserver::ObserverInfo); Q_DECLARE_METATYPE(Tp::AbstractClientHandler::Capabilities); Q_DECLARE_METATYPE(Tp::AbstractClientHandler::HandlerInfo); #endif telepathy-qt-0.9.6.1/TelepathyQt/ProtocolInterface0000644000175100017520000000040212530423576023527 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolInterface_HEADER_GUARD_ #define _TelepathyQt_ProtocolInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/BaseChannel0000644000175100017520000000036012530423576022253 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseChannel_HEADER_GUARD_ #define _TelepathyQt_BaseChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Account0000644000175100017520000000034312530423576021505 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Account_HEADER_GUARD_ #define _TelepathyQt_Account_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/presence.cpp0000644000175100017520000002720012530423576022477 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/debug-internal.h" namespace Tp { struct TP_QT_NO_EXPORT Presence::Private : public QSharedData { Private(const SimplePresence &sp) : sp(sp) { } Private(ConnectionPresenceType type, const QString &status, const QString &statusMessage) { sp.type = type; sp.status = status; sp.statusMessage = statusMessage; } SimplePresence sp; }; /** * \class Presence * \ingroup wrappers * \headerfile TelepathyQt/presence.h * * \brief The Presence class represents a Telepathy simple presence. */ Presence::Presence() { } Presence::Presence(const SimplePresence &sp) : mPriv(new Private(sp)) { } Presence::Presence(ConnectionPresenceType type, const QString &status, const QString &statusMessage) : mPriv(new Private(type, status, statusMessage)) { } Presence::Presence(const Presence &other) : mPriv(other.mPriv) { } Presence::~Presence() { } Presence Presence::available(const QString &statusMessage) { return Presence(ConnectionPresenceTypeAvailable, QLatin1String("available"), statusMessage); } Presence Presence::chat(const QString &statusMessage) { return Presence(ConnectionPresenceTypeAvailable, QLatin1String("chat"), statusMessage); } Presence Presence::away(const QString &statusMessage) { return Presence(ConnectionPresenceTypeAway, QLatin1String("away"), statusMessage); } Presence Presence::brb(const QString &statusMessage) { return Presence(ConnectionPresenceTypeAway, QLatin1String("brb"), statusMessage); } Presence Presence::busy(const QString &statusMessage) { return Presence(ConnectionPresenceTypeBusy, QLatin1String("busy"), statusMessage); } Presence Presence::dnd(const QString &statusMessage) { return Presence(ConnectionPresenceTypeBusy, QLatin1String("dnd"), statusMessage); } Presence Presence::xa(const QString &statusMessage) { return Presence(ConnectionPresenceTypeExtendedAway, QLatin1String("xa"), statusMessage); } Presence Presence::hidden(const QString &statusMessage) { return Presence(ConnectionPresenceTypeHidden, QLatin1String("hidden"), statusMessage); } Presence Presence::offline(const QString &statusMessage) { return Presence(ConnectionPresenceTypeOffline, QLatin1String("offline"), statusMessage); } Presence &Presence::operator=(const Presence &other) { this->mPriv = other.mPriv; return *this; } bool Presence::operator==(const Presence &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return true; } return false; } return mPriv->sp == other.mPriv->sp; } bool Presence::operator!=(const Presence &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return false; } return true; } return mPriv->sp != other.mPriv->sp; } ConnectionPresenceType Presence::type() const { if (!isValid()) { return ConnectionPresenceTypeUnknown; } return (ConnectionPresenceType) mPriv->sp.type; } QString Presence::status() const { if (!isValid()) { return QString(); } return mPriv->sp.status; } QString Presence::statusMessage() const { if (!isValid()) { return QString(); } return mPriv->sp.statusMessage; } // Sets all fields void Presence::setStatus(const SimplePresence &value) { if (!isValid()) { mPriv = new Private(value); return; } mPriv->sp = value; } // TODO: explain in proper docs that we don't have setStatusType and setStatus(QString status) // separately, because: // 1) type and status are tightly related with each other // 2) all statuses can't have status message so changing the status alone might make the presence // illegal if a message was left around void Presence::setStatus(ConnectionPresenceType type, const QString &status, const QString &statusMessage) { if (!isValid()) { mPriv = new Private(type, status, statusMessage); return; } mPriv->sp.type = type; mPriv->sp.status = status; mPriv->sp.statusMessage = statusMessage; } void Presence::setStatusMessage(const QString &statusMessage) { if (!isValid()) { return; } mPriv->sp.statusMessage = statusMessage; } SimplePresence Presence::barePresence() const { if (!isValid()) { return SimplePresence(); } return mPriv->sp; } struct TP_QT_NO_EXPORT PresenceSpec::Private : public QSharedData { Private(const QString &status, const SimpleStatusSpec &spec) : status(status), spec(spec) { } QString status; SimpleStatusSpec spec; }; /** * \class PresenceSpec * \ingroup wrappers * \headerfile TelepathyQt/presence.h * * \brief The PresenceSpec class represents a Telepathy presence information * supported by a protocol. */ PresenceSpec::PresenceSpec() { } PresenceSpec::PresenceSpec(const QString &status, const SimpleStatusSpec &spec) : mPriv(new Private(status, spec)) { } PresenceSpec::PresenceSpec(const PresenceSpec &other) : mPriv(other.mPriv) { } PresenceSpec::~PresenceSpec() { } PresenceSpec PresenceSpec::available(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeAvailable; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("available"), spec); } PresenceSpec PresenceSpec::chat(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeAvailable; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("chat"), spec); } PresenceSpec PresenceSpec::pstn(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeAvailable; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("pstn"), spec); } PresenceSpec PresenceSpec::away(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeAway; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("away"), spec); } PresenceSpec PresenceSpec::brb(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeAway; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("brb"), spec); } PresenceSpec PresenceSpec::busy(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeBusy; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("busy"), spec); } PresenceSpec PresenceSpec::dnd(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeBusy; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("dnd"), spec); } PresenceSpec PresenceSpec::xa(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeExtendedAway; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("xa"), spec); } PresenceSpec PresenceSpec::hidden(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeHidden; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("hidden"), spec); } PresenceSpec PresenceSpec::offline(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeOffline; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("offline"), spec); } PresenceSpec PresenceSpec::unknown(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeUnknown; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("unknown"), spec); } PresenceSpec PresenceSpec::error(PresenceSpec::SimpleStatusFlags flags) { SimpleStatusSpec spec; spec.type = ConnectionPresenceTypeError; spec.maySetOnSelf = flags & MaySetOnSelf; spec.canHaveMessage = flags & CanHaveStatusMessage; return PresenceSpec(QLatin1String("error"), spec); } PresenceSpec &PresenceSpec::operator=(const PresenceSpec &other) { this->mPriv = other.mPriv; return *this; } bool PresenceSpec::operator==(const PresenceSpec &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return true; } return false; } return (mPriv->status == other.mPriv->status) && (mPriv->spec == other.mPriv->spec); } bool PresenceSpec::operator!=(const PresenceSpec &other) const { if (!isValid() || !other.isValid()) { if (!isValid() && !other.isValid()) { return false; } return true; } return (mPriv->status != other.mPriv->status) && (mPriv->spec != other.mPriv->spec); } bool PresenceSpec::operator<(const PresenceSpec &other) const { if (!isValid()) { return false; } if (!other.isValid()) { return true; } return (mPriv->status < other.mPriv->status); } Presence PresenceSpec::presence(const QString &statusMessage) const { if (!isValid()) { return Presence(); } if (!canHaveStatusMessage() && !statusMessage.isEmpty()) { warning() << "Passing a status message to PresenceSpec with " "canHaveStatusMessage() being false"; } return Presence((ConnectionPresenceType) mPriv->spec.type, mPriv->status, statusMessage); } bool PresenceSpec::maySetOnSelf() const { if (!isValid()) { return false; } return mPriv->spec.maySetOnSelf; } bool PresenceSpec::canHaveStatusMessage() const { if (!isValid()) { return false; } return mPriv->spec.canHaveMessage; } SimpleStatusSpec PresenceSpec::bareSpec() const { if (!isValid()) { return SimpleStatusSpec(); } return mPriv->spec; } /** * \class PresenceSpecList * \ingroup wrappers * \headerfile TelepathyQt/presence.h * * \brief The PresenceSpecList class represents a list of PresenceSpec. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceBalanceInterface0000644000175100017520000000043612530423576027123 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceBalanceInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceBalanceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceRoomInterface0000644000175100017520000000041712530423576025762 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceRoomInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceRoomInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/service-types.h0000644000175100017520000001321112530423576023137 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_service_types_h_HEADER_GUARD_ #define _TelepathyQt_service_types_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class AbstractProtocolInterface; class AbstractCallContentInterface; class AbstractConnectionInterface; class AbstractChannelInterface; class BaseCallContent; class BaseCallMuteInterface; class BaseCallContentDTMFInterface; class BaseConnection; class BaseConnectionRequestsInterface; class BaseConnectionContactsInterface; class BaseConnectionSimplePresenceInterface; class BaseConnectionContactListInterface; class BaseConnectionContactInfoInterface; class BaseConnectionAddressingInterface; class BaseConnectionAliasingInterface; class BaseConnectionAvatarsInterface; class BaseConnectionManager; class BaseProtocol; class BaseProtocolAddressingInterface; class BaseProtocolAvatarsInterface; class BaseProtocolPresenceInterface; class BaseChannel; class BaseChannelTextType; class BaseChannelCallType; class BaseChannelMessagesInterface; class BaseChannelRoomListType; class BaseChannelServerAuthenticationType; class BaseChannelSASLAuthenticationInterface; class BaseChannelCaptchaAuthenticationInterface; class BaseChannelSecurableInterface; class BaseChannelChatStateInterface; class BaseChannelGroupInterface; class BaseChannelRoomInterface; class BaseChannelRoomConfigInterface; class BaseChannelHoldInterface; class BaseChannelMergeableConferenceInterface; class BaseChannelSplittableInterface; class BaseChannelSMSInterface; class BaseChannelConferenceInterface; class DBusService; #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef SharedPtr AbstractProtocolInterfacePtr; typedef SharedPtr AbstractCallContentInterfacePtr; typedef SharedPtr AbstractConnectionInterfacePtr; typedef SharedPtr AbstractChannelInterfacePtr; typedef SharedPtr BaseCallContentPtr; typedef SharedPtr BaseCallContentDTMFInterfacePtr; typedef SharedPtr BaseCallMuteInterfacePtr; typedef SharedPtr BaseConnectionPtr; typedef SharedPtr BaseConnectionRequestsInterfacePtr; typedef SharedPtr BaseConnectionContactsInterfacePtr; typedef SharedPtr BaseConnectionSimplePresenceInterfacePtr; typedef SharedPtr BaseConnectionContactListInterfacePtr; typedef SharedPtr BaseConnectionContactInfoInterfacePtr; typedef SharedPtr BaseConnectionAddressingInterfacePtr; typedef SharedPtr BaseConnectionAliasingInterfacePtr; typedef SharedPtr BaseConnectionAvatarsInterfacePtr; typedef SharedPtr BaseConnectionManagerPtr; typedef SharedPtr BaseProtocolPtr; typedef SharedPtr BaseProtocolAddressingInterfacePtr; typedef SharedPtr BaseProtocolAvatarsInterfacePtr; typedef SharedPtr BaseProtocolPresenceInterfacePtr; typedef SharedPtr BaseChannelPtr; typedef SharedPtr BaseChannelCallTypePtr; typedef SharedPtr BaseChannelTextTypePtr; typedef SharedPtr BaseChannelMessagesInterfacePtr; typedef SharedPtr BaseChannelRoomListTypePtr; typedef SharedPtr BaseChannelServerAuthenticationTypePtr; typedef SharedPtr BaseChannelSASLAuthenticationInterfacePtr; typedef SharedPtr BaseChannelCaptchaAuthenticationInterfacePtr; typedef SharedPtr BaseChannelSecurableInterfacePtr; typedef SharedPtr BaseChannelChatStateInterfacePtr; typedef SharedPtr BaseChannelGroupInterfacePtr; typedef SharedPtr BaseChannelRoomInterfacePtr; typedef SharedPtr BaseChannelRoomConfigInterfacePtr; typedef SharedPtr BaseChannelHoldInterfacePtr; typedef SharedPtr BaseChannelMergeableConferenceInterfacePtr; typedef SharedPtr BaseChannelSplittableInterfacePtr; typedef SharedPtr BaseChannelSMSInterfacePtr; typedef SharedPtr BaseChannelConferenceInterfacePtr; typedef SharedPtr DBusServicePtr; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfacePasswordInterface0000644000175100017520000000042712530423576026651 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfacePasswordInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfacePasswordInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/call-content-media-description.cpp0000644000175100017520000000215512530423576026656 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt4 * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-call-content-media-description-body.hpp" #include "TelepathyQt/_gen/cli-call-content-media-description.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/call-content-media-description.xml0000644000175100017520000000104012530423576026664 0ustar00kaffeinekaffeine00000000000000 Call misc interfaces, version 1 telepathy-qt-0.9.6.1/TelepathyQt/FixedFeatureFactory0000644000175100017520000000041112530423576024010 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_FixedFeatureFactory_HEADER_GUARD_ #define _TelepathyQt_FixedFeatureFactory_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/outgoing-dbus-tube-channel.h0000644000175100017520000000346412530423576025477 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_outgoing_dbus_tube_channel_h_HEADER_GUARD_ #define _TelepathyQt_outgoing_dbus_tube_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class PendingDBusTubeConnection; class TP_QT_EXPORT OutgoingDBusTubeChannel : public DBusTubeChannel { Q_OBJECT Q_DISABLE_COPY(OutgoingDBusTubeChannel) public: static OutgoingDBusTubeChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~OutgoingDBusTubeChannel(); PendingDBusTubeConnection *offerTube(const QVariantMap ¶meters, bool allowOtherUsers = false); protected: OutgoingDBusTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); private: struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/dbus-introspectable.xml0000644000175100017520000000056612530423576024670 0ustar00kaffeinekaffeine00000000000000 D-Bus introspectable object telepathy-qt-0.9.6.1/TelepathyQt/pending-string-list.cpp0000644000175100017520000000532612530423576024601 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/pending-string-list.moc.hpp" #include "TelepathyQt/debug-internal.h" #include namespace Tp { struct TP_QT_NO_EXPORT PendingStringList::Private { QStringList result; }; /** * \class PendingStringList * \ingroup utils * \headerfile TelepathyQt/pending-string-list.h * * \brief The PendingStringList class is a generic subclass of PendingOperation * representing a pending D-Bus method call that returns a string list. * * See \ref async_model */ PendingStringList::PendingStringList(const SharedPtr &object) : PendingOperation(object), mPriv(new Private) { } PendingStringList::PendingStringList(QDBusPendingCall call, const SharedPtr &object) : PendingOperation(object), mPriv(new Private) { connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(watcherFinished(QDBusPendingCallWatcher*))); } /** * Class destructor. */ PendingStringList::~PendingStringList() { delete mPriv; } QStringList PendingStringList::result() const { return mPriv->result; } void PendingStringList::setResult(const QStringList &result) { mPriv->result = result; } void PendingStringList::watcherFinished(QDBusPendingCallWatcher* watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got reply to PendingStringList call"; setResult(reply.value()); setFinished(); } else { debug().nospace() << "PendingStringList call failed: " << reply.error().name() << ": " << reply.error().message(); setFinishedWithError(reply.error()); } watcher->deleteLater(); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/FileTransferChannel0000644000175100017520000000041112530423576023762 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_FileTransferChannel_HEADER_GUARD_ #define _TelepathyQt_FileTransferChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-service.cpp0000644000175100017520000002320612530423576023270 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/dbus-service.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT DBusService::Private { Private(DBusService *parent, const QDBusConnection &dbusConnection) : parent(parent), dbusObject(new DBusObject(dbusConnection, parent)), registered(false) { } DBusService *parent; QString busName; DBusObject *dbusObject; bool registered; }; /** * \class DBusService * \ingroup servicesideimpl * \headerfile TelepathyQt/dbus-service.h * * \brief Base class for D-Bus services. * * This class serves as a base for all the classes that are used to implement * D-Bus services. */ /** * Construct a DBusService that uses the given \a dbusConnection. * * \param dbusConnection The D-Bus connection that will be used by this service. */ DBusService::DBusService(const QDBusConnection &dbusConnection) : mPriv(new Private(this, dbusConnection)) { } /** * Class destructor. */ DBusService::~DBusService() { delete mPriv; } /** * Return the D-Bus connection associated with this service. * * \return the D-Bus connection associated with this service. */ QDBusConnection DBusService::dbusConnection() const { return mPriv->dbusObject->dbusConnection(); } /** * Return the D-Bus service name of this service. * * This is only valid after this service has been registered * on the bus using registerObject(). * * \return the D-Bus service name of this service. */ QString DBusService::busName() const { return mPriv->busName; } /** * Return the D-Bus object path of this service. * * This is only valid after this service has been registered * on the bus using registerObject(). * * \return the D-Bus object path of this service. */ QString DBusService::objectPath() const { return mPriv->dbusObject->objectPath(); } /** * Return the DBusObject that is used for registering this service on the bus. * * The DBusObject is the object on which all the interface adaptors * for this service are plugged. * * \return a pointer to the DBusObject that is used for registering * this service on the bus. */ DBusObject *DBusService::dbusObject() const { return mPriv->dbusObject; } /** * Return whether this D-Bus service has been registered on the bus or not. * * \return \c true if the service has been registered, or \c false otherwise. */ bool DBusService::isRegistered() const { return mPriv->registered; } /** * Register this service object on the bus with the given \a busName and \a objectPath. * * \a error needs to be a valid pointer to a DBusError instance, where any * possible D-Bus error will be stored. * * A service may only be registered once in its lifetime. * Use isRegistered() to find out if it has already been registered or not. * * You normally don't need to use this method directly. * Subclasses should provide a simplified version of it. * * \param busName The D-Bus service name of this object. * \param objectPath The D-Bus object path of this object. * \param error A pointer to a valid DBusError instance, where any * possible D-Bus error will be stored. * \return \c true on success or \c false otherwise. */ bool DBusService::registerObject(const QString &busName, const QString &objectPath, DBusError *error) { if (mPriv->registered) { return true; } if (!mPriv->dbusObject->dbusConnection().registerService(busName)) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QString(QLatin1String("Name %1 already in use by another process")) .arg(busName)); warning() << "Unable to register service" << busName << "- name already registered by another process"; return false; } if (!mPriv->dbusObject->dbusConnection().registerObject(objectPath, mPriv->dbusObject)) { error->set(TP_QT_ERROR_INVALID_ARGUMENT, QString(QLatin1String("Object at path %1 already registered")) .arg(objectPath)); warning() << "Unable to register object" << objectPath << "- path already registered"; return false; } debug() << "Registered object" << objectPath << "at bus name" << busName; mPriv->busName = busName; mPriv->dbusObject->setObjectPath(objectPath); mPriv->registered = true; return true; } /** * \fn QVariantMap DBusService::immutableProperties() const * * Return the immutable properties of this D-Bus service object. * * Immutable properties cannot change after the object has been registered * on the bus with registerObject(). * * \return The immutable properties of this D-Bus service object. */ struct AbstractDBusServiceInterface::Private { Private(const QString &interfaceName) : interfaceName(interfaceName), dbusObject(0), registered(false) { } QString interfaceName; DBusObject *dbusObject; bool registered; }; /** * \class AbstractDBusServiceInterface * \ingroup servicesideimpl * \headerfile TelepathyQt/dbus-service.h * * \brief Base class for D-Bus service interfaces. * * This class serves as a base for all the classes that are used to implement * interfaces that sit on top of D-Bus services. */ /** * Construct an AbstractDBusServiceInterface that implements * the interface with the given \a interfaceName. * * \param interfaceName The name of the interface that this class implements. */ AbstractDBusServiceInterface::AbstractDBusServiceInterface(const QString &interfaceName) : mPriv(new Private(interfaceName)) { } /** * Class destructor. */ AbstractDBusServiceInterface::~AbstractDBusServiceInterface() { delete mPriv; } /** * Return the name of the interface that this class implements, * as given on the constructor. * * \return The name of the interface that this class implements. */ QString AbstractDBusServiceInterface::interfaceName() const { return mPriv->interfaceName; } /** * Return the DBusObject on which the adaptor of this interface is plugged. * * This is only accessible after the interface has been registered * with registerInterface(). * * \return a pointer to the DBusObject on which the adaptor * of this interface is plugged. * \sa DBusService::dbusObject() */ DBusObject *AbstractDBusServiceInterface::dbusObject() const { return mPriv->dbusObject; } /** * Return whether this interface has been registered. * * \return \c true if the service has been registered, or \c false otherwise. * \sa registerInterface() */ bool AbstractDBusServiceInterface::isRegistered() const { return mPriv->registered; } /** * Emit PropertiesChanged signal on object org.freedesktop.DBus.Properties interface * with the property \a propertyName. * * \param propertyName The name of the changed property. * \param propertyValue The actual value of the changed property. * \return \c false if the signal can not be emmited or \a true otherwise. */ bool AbstractDBusServiceInterface::notifyPropertyChanged(const QString &propertyName, const QVariant &propertyValue) { if (!isRegistered()) { return false; } QDBusMessage signal = QDBusMessage::createSignal(dbusObject()->objectPath(), TP_QT_IFACE_PROPERTIES, QLatin1String("PropertiesChanged")); QVariantMap changedProperties; changedProperties.insert(propertyName, propertyValue); signal << interfaceName(); signal << changedProperties; signal << QStringList(); return dbusObject()->dbusConnection().send(signal); } /** * Registers this interface by plugging its adaptor * on the given \a dbusObject. * * \param dbusObject The object on which to plug the adaptor. * \return \c false if the interface has already been registered, * or \a true otherwise. * \sa isRegistered() */ bool AbstractDBusServiceInterface::registerInterface(DBusObject *dbusObject) { if (mPriv->registered) { return true; } mPriv->dbusObject = dbusObject; createAdaptor(); mPriv->registered = true; return true; } /** * \fn QVariantMap AbstractDBusServiceInterface::immutableProperties() const * * Return the immutable properties of this interface. * * Immutable properties cannot change after the interface has been registered * on a service on the bus with registerInterface(). * * \return The immutable properties of this interface. */ /** * \fn void AbstractDBusServiceInterface::createAdaptor() * * Create the adaptor for this interface. * * Subclasses should reimplement this appropriately. */ } telepathy-qt-0.9.6.1/TelepathyQt/pending-stream-tube-connection.h0000644000175100017520000000477212530423576026360 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_pending_stream_tube_connection_h_HEADER_GUARD_ #define _TelepathyQt_pending_stream_tube_connection_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include class QHostAddress; namespace Tp { class PendingVariant; class IncomingStreamTubeChannel; class TP_QT_EXPORT PendingStreamTubeConnection : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingStreamTubeConnection) public: virtual ~PendingStreamTubeConnection(); SocketAddressType addressType() const; QPair ipAddress() const; QString localAddress() const; bool requiresCredentials() const; uchar credentialByte() const; private Q_SLOTS: TP_QT_NO_EXPORT void onChannelInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); TP_QT_NO_EXPORT void onAcceptFinished(Tp::PendingOperation *op); TP_QT_NO_EXPORT void onTubeStateChanged(Tp::TubeChannelState state); private: TP_QT_NO_EXPORT PendingStreamTubeConnection(PendingVariant *acceptOperation, SocketAddressType type, bool requiresCredentials, uchar credentialByte, const IncomingStreamTubeChannelPtr &channel); TP_QT_NO_EXPORT PendingStreamTubeConnection( const QString &errorName, const QString &errorMessage, const IncomingStreamTubeChannelPtr &channel); struct Private; friend class IncomingStreamTubeChannel; friend struct Private; Private *mPriv; }; } #endif // TP_PENDING_STREAM_TUBE_CONNECTION_H telepathy-qt-0.9.6.1/TelepathyQt/TextChannel0000644000175100017520000000036012530423576022325 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_TextChannel_HEADER_GUARD_ #define _TelepathyQt_TextChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/generic-property-filter.dox0000644000175100017520000000246012530423576025465 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::GenericPropertyFilter * \ingroup utils * \headerfile TelepathyQt/generic-property-filter.h * * \brief The GenericPropertyFilter class provides a generic filter object * to be used to filter objects by properties. * * Specialized classes such as AccountPropertyFilter are also provided and * should be used where appropriate. */ telepathy-qt-0.9.6.1/TelepathyQt/AbstractProtocolInterface0000644000175100017520000000041512530423576025217 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_AbstractProtocolInterface_HEADER_GUARD_ #define _TelepathyQt_AbstractProtocolInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingString0000644000175100017520000000036612530423576022671 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingString_HEADER_GUARD_ #define _TelepathyQt_PendingString_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceDestroyableInterface0000644000175100017520000000043512530423576027323 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceDestroyableInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceDestroyableInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/server-authentication-channel.cpp0000644000175100017520000002574312530423576026636 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/server-authentication-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ServerAuthenticationChannel::Private { Private(ServerAuthenticationChannel *parent); static void introspectMain(ServerAuthenticationChannel::Private *self); void extractServerAuthenticationProperties(const QVariantMap &props); // Public object ServerAuthenticationChannel *parent; ReadinessHelper *readinessHelper; // Introspection QString authMethod; CaptchaAuthenticationPtr captchaAuthentication; }; ServerAuthenticationChannel::Private::Private(ServerAuthenticationChannel *parent) : parent(parent), readinessHelper(parent->readinessHelper()) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableServerAuthentication( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &ServerAuthenticationChannel::Private::introspectMain, this); introspectables[ServerAuthenticationChannel::FeatureCore] = introspectableServerAuthentication; readinessHelper->addIntrospectables(introspectables); } void ServerAuthenticationChannel::Private::introspectMain(ServerAuthenticationChannel::Private *self) { ServerAuthenticationChannel *parent = self->parent; Client::ChannelTypeServerAuthenticationInterface *serverAuthenticationInterface = parent->interface(); PendingVariantMap *pvm = serverAuthenticationInterface->requestAllProperties(); parent->connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotServerAuthenticationProperties(Tp::PendingOperation*))); } /** * \class ServerAuthenticationChannel * \ingroup clientchannel * \headerfile TelepathyQt/server-authentication-channel.h * * \brief The ServerAuthenticationChannel class is a base class for all ServerAuthentication types. * * A ServerAuthentication is a mechanism for a connection to perform an authentication operation. * Such an authentication can happen in several ways (at the moment, only Captcha is supported) - this * channel will expose a high-level object representing the requested method, allowing a handler to carry on * the authentication procedure. * * Note that when an authentication procedure succeeds, you can expect this channel to be closed automatically. * Please refer to the methods' implementation docs for more details about this. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * ServerAuthenticationChannel object usable. * * Note that this feature must be enabled in order to use most * ServerAuthenticationChannel methods. * See specific methods documentation for more details. */ const Feature ServerAuthenticationChannel::FeatureCore = Feature(QLatin1String(ServerAuthenticationChannel::staticMetaObject.className()), 0); /** * Create a new ServerAuthenticationChannel channel. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A ServerAuthenticationChannelPtr object pointing to the newly created * ServerAuthenticationChannel object. */ ServerAuthenticationChannelPtr ServerAuthenticationChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return ServerAuthenticationChannelPtr(new ServerAuthenticationChannel(connection, objectPath, immutableProperties)); } /** * Construct a new ServerAuthenticationChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on ServerAuthenticationChannel::FeatureCore. */ ServerAuthenticationChannel::ServerAuthenticationChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ ServerAuthenticationChannel::~ServerAuthenticationChannel() { delete mPriv; } /** * Return whether this ServerAuthenticationChannel implements Captcha as its authentication mechanism. * Should this be true, captchaAuthentication() can be safely accessed. * * This method requires ServerAuthenticationChannel::FeatureCore to be ready. * * \return \c true if this channel implements the Captcha interface, \c false otherwise. * \sa captchaAuthentication */ bool ServerAuthenticationChannel::hasCaptchaInterface() const { if (!isReady(ServerAuthenticationChannel::FeatureCore)) { warning() << "ServerAuthenticationChannel::hasCaptchaInterface() used with FeatureCore not ready"; return false; } return mPriv->authMethod == TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION; } /* * Return whether this ServerAuthenticationChannel implements Sasl as its authentication mechanism. * * This method requires ServerAuthenticationChannel::FeatureCore to be ready. * * \return \c true if this channel implements the Sasl interface, \c false otherwise. * * TODO: Enable when high-level SASL Support will be in place bool ServerAuthenticationChannel::hasSaslInterface() const { if (!isReady(ServerAuthenticationChannel::FeatureCore)) { warning() << "ServerAuthenticationChannel::hasSaslInterface() used with FeatureCore not ready"; return false; } return mPriv->authMethod == TP_QT_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION; }*/ /** * Return the CaptchaAuthentication object for this channel, if the channel implements * the CaptchaAuthentication interface and is a ServerAuthentication Channel. * * Note that this method will return a meaningful value only if hasCaptchaInterface() * returns \c true. * * This method requires ServerAuthenticationChannel::FeatureCore to be ready. * * \return A shared pointer to the object representing the CaptchaAuthentication interface, * or a null shared pointer if the feature is not ready yet or the channel does not * implement Captcha interface. * \sa hasCaptchaInterface */ CaptchaAuthenticationPtr ServerAuthenticationChannel::captchaAuthentication() const { if (!isReady(ServerAuthenticationChannel::FeatureCore)) { warning() << "ServerAuthenticationChannel::captchaAuthentication() used with FeatureCore not ready"; return CaptchaAuthenticationPtr(); } return mPriv->captchaAuthentication; } void ServerAuthenticationChannel::gotCaptchaAuthenticationProperties(Tp::PendingOperation *op) { if (!op->isError()) { PendingVariantMap *pvm = qobject_cast(op); mPriv->captchaAuthentication->mPriv->extractCaptchaAuthenticationProperties(pvm->result()); debug() << "Got reply to Properties::GetAll(CaptchaAuthentication)"; mPriv->readinessHelper->setIntrospectCompleted(ServerAuthenticationChannel::FeatureCore, true); } else { warning().nospace() << "Properties::GetAll(CaptchaAuthentication) failed " "with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(ServerAuthenticationChannel::FeatureCore, false, op->errorName(), op->errorMessage()); } } void ServerAuthenticationChannel::gotServerAuthenticationProperties(Tp::PendingOperation *op) { if (!op->isError()) { PendingVariantMap *pvm = qobject_cast(op); debug() << "Got reply to Properties::GetAll(ServerAuthentication)"; mPriv->authMethod = qdbus_cast(pvm->result()[QLatin1String("AuthenticationMethod")]); if (mPriv->authMethod == TP_QT_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION) { mPriv->captchaAuthentication = CaptchaAuthenticationPtr(new CaptchaAuthentication(ChannelPtr(this))); Client::ChannelInterfaceCaptchaAuthenticationInterface *captchaAuthenticationInterface = interface(); captchaAuthenticationInterface->setMonitorProperties(true); QObject::connect(captchaAuthenticationInterface, SIGNAL(propertiesChanged(QVariantMap,QStringList)), mPriv->captchaAuthentication.data(), SLOT(onPropertiesChanged(QVariantMap,QStringList))); PendingVariantMap *pvm = captchaAuthenticationInterface->requestAllProperties(); connect(pvm, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotCaptchaAuthenticationProperties(Tp::PendingOperation*))); } else { // We have nothing else to do here at the moment mPriv->readinessHelper->setIntrospectCompleted(ServerAuthenticationChannel::FeatureCore, true); } } else { warning().nospace() << "Properties::GetAll(ServerAuthentication) failed " "with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(ServerAuthenticationChannel::FeatureCore, false, op->errorName(), op->errorMessage()); } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/base-call-internal.h0000644000175100017520000000767412530423576024012 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2013 Matthias Gehre * @copyright Copyright 2013 Canonical Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "TelepathyQt/_gen/svc-call.h" #include #include #include #include #include "TelepathyQt/debug-internal.h" namespace Tp { class TP_QT_NO_EXPORT BaseCallContent::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(QString name READ name) Q_PROPERTY(uint type READ type) Q_PROPERTY(uint disposition READ disposition) Q_PROPERTY(Tp::ObjectPathList streams READ streams) Q_PROPERTY(QStringList interfaces READ interfaces) public: Adaptee(const QDBusConnection &dbusConnection, BaseCallContent *content); ~Adaptee(); QStringList interfaces() const; QString name() const { return mContent->name(); } uint type() const { return mContent->type(); } uint disposition() const { return mContent->disposition(); } Tp::ObjectPathList streams() const { return mContent->streams(); } public Q_SLOTS: void remove(const Tp::Service::CallContentAdaptor::RemoveContextPtr &context); Q_SIGNALS: void streamsAdded(const Tp::ObjectPathList &streams); void streamsRemoved(const Tp::ObjectPathList &streams, const Tp::CallStateReason &reason); private: BaseCallContent *mContent; Service::CallContentAdaptor *mAdaptor; }; class TP_QT_NO_EXPORT BaseCallMuteInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(uint localMuteState READ localMuteState) public: Adaptee(BaseCallMuteInterface *content); ~Adaptee(); QStringList interfaces() const; uint localMuteState() const { return mInterface->localMuteState(); } public Q_SLOTS: void requestMuted(bool muted, const Tp::Service::CallInterfaceMuteAdaptor::RequestMutedContextPtr &context); Q_SIGNALS: void muteStateChanged(uint muteState); public: BaseCallMuteInterface *mInterface; Service::CallInterfaceMuteAdaptor *mAdaptor; }; class TP_QT_NO_EXPORT BaseCallContentDTMFInterface::Adaptee : public QObject { Q_OBJECT Q_PROPERTY(bool currentlySendingTones READ currentlySendingTones) Q_PROPERTY(QString deferredTones READ deferredTones) public: Adaptee(BaseCallContentDTMFInterface *interface); ~Adaptee(); QStringList interfaces() const; bool currentlySendingTones() const { return mInterface->currentlySendingTones(); } QString deferredTones() const { return mInterface->deferredTones(); } public Q_SLOTS: void multipleTones(const QString& tones, const Tp::Service::CallContentInterfaceDTMFAdaptor::MultipleTonesContextPtr &context); void startTone(uchar event, const Tp::Service::CallContentInterfaceDTMFAdaptor::StartToneContextPtr &context); void stopTone(const Tp::Service::CallContentInterfaceDTMFAdaptor::StopToneContextPtr &context); Q_SIGNALS: void tonesDeferred(const QString& tones); void sendingTones(const QString& tones); void stoppedTones(bool cancelled); public: BaseCallContentDTMFInterface *mInterface; Service::CallContentInterfaceDTMFAdaptor *mAdaptor; }; } telepathy-qt-0.9.6.1/TelepathyQt/DBusTubeChannel0000644000175100017520000000037512530423576023064 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_DBusTubeChannel_HEADER_GUARD_ #define _TelepathyQt_DBusTubeChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ClientObserverInterface0000644000175100017520000000040212530423576024654 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ClientObserverInterface_HEADER_GUARD_ #define _TelepathyQt_ClientObserverInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/stream-tube-channel.cpp0000644000175100017520000006715312530423576024544 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/stream-tube-channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT StreamTubeChannel::Private { Private(StreamTubeChannel *parent); static void introspectStreamTube(Private *self); static void introspectConnectionMonitoring(Private *self); void extractStreamTubeProperties(const QVariantMap &props); // Public object StreamTubeChannel *parent; ReadinessHelper *readinessHelper; // Introspection SupportedSocketMap socketTypes; QString serviceName; QSet connections; QPair ipAddress; QString unixAddress; SocketAddressType addressType; SocketAccessControl accessControl; bool droppingConnections; }; StreamTubeChannel::Private::Private(StreamTubeChannel *parent) : parent(parent), readinessHelper(parent->readinessHelper()), addressType(SocketAddressTypeUnix), accessControl(SocketAccessControlLocalhost), droppingConnections(false) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableStreamTube( QSet() << 0, // makesSenseForStatuses Features() << TubeChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &StreamTubeChannel::Private::introspectStreamTube, this); introspectables[StreamTubeChannel::FeatureCore] = introspectableStreamTube; ReadinessHelper::Introspectable introspectableConnectionMonitoring( QSet() << 0, // makesSenseForStatuses Features() << StreamTubeChannel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &StreamTubeChannel::Private::introspectConnectionMonitoring, this); introspectables[StreamTubeChannel::FeatureConnectionMonitoring] = introspectableConnectionMonitoring; parent->connect( parent, SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(dropConnections())); readinessHelper->addIntrospectables(introspectables); } void StreamTubeChannel::Private::introspectStreamTube( StreamTubeChannel::Private *self) { StreamTubeChannel *parent = self->parent; debug() << "Introspecting stream tube properties"; Client::ChannelTypeStreamTubeInterface *streamTubeInterface = parent->interface(); PendingVariantMap *pvm = streamTubeInterface->requestAllProperties(); parent->connect(pvm, SIGNAL(finished(Tp::PendingOperation *)), SLOT(gotStreamTubeProperties(Tp::PendingOperation *))); } void StreamTubeChannel::Private::introspectConnectionMonitoring( StreamTubeChannel::Private *self) { StreamTubeChannel *parent = self->parent; Client::ChannelTypeStreamTubeInterface *streamTubeInterface = parent->interface(); parent->connect(streamTubeInterface, SIGNAL(ConnectionClosed(uint,QString,QString)), SLOT(onConnectionClosed(uint,QString,QString))); if (parent->isRequested()) { parent->connect(streamTubeInterface, SIGNAL(NewRemoteConnection(uint,QDBusVariant,uint)), SLOT(onNewRemoteConnection(uint,QDBusVariant,uint))); } else { parent->connect(streamTubeInterface, SIGNAL(NewLocalConnection(uint)), SLOT(onNewLocalConnection(uint))); } self->readinessHelper->setIntrospectCompleted( StreamTubeChannel::FeatureConnectionMonitoring, true); } void StreamTubeChannel::Private::extractStreamTubeProperties(const QVariantMap &props) { serviceName = qdbus_cast(props[QLatin1String("Service")]); socketTypes = qdbus_cast(props[QLatin1String("SupportedSocketTypes")]); } /** * \class StreamTubeChannel * \ingroup clientchannel * \headerfile TelepathyQt/stream-tube-channel.h * * \brief The StreamTubeChannel class represents a Telepathy channel of type StreamTube. * * It provides a transport for reliable and ordered data transfer, similar to SOCK_STREAM sockets. * * StreamTubeChannel is an intermediate base class; OutgoingStreamTubeChannel and * IncomingStreamTubeChannel are the specialized classes used for locally and remotely initiated * tubes respectively. * * For more details, please refer to \telepathy_spec. * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * StreamTubeChannel object usable. * * Note that this feature must be enabled in order to use most * StreamTubeChannel methods. * See specific methods documentation for more details. */ const Feature StreamTubeChannel::FeatureCore = Feature(QLatin1String(StreamTubeChannel::staticMetaObject.className()), 0); /** * Feature used in order to monitor connections to this stream tube. * * See connection monitoring specific methods' documentation for more details. * * \sa newConnection(), connectionClosed() */ const Feature StreamTubeChannel::FeatureConnectionMonitoring = Feature(QLatin1String(StreamTubeChannel::staticMetaObject.className()), 1); /** * Create a new StreamTubeChannel channel. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A StreamTubeChannelPtr object pointing to the newly created * StreamTubeChannel object. */ StreamTubeChannelPtr StreamTubeChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return StreamTubeChannelPtr(new StreamTubeChannel(connection, objectPath, immutableProperties, StreamTubeChannel::FeatureCore)); } /** * Construct a new StreamTubeChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on StreamTubeChannel::FeatureCore. */ StreamTubeChannel::StreamTubeChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : TubeChannel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this)) { } /** * Class destructor. */ StreamTubeChannel::~StreamTubeChannel() { delete mPriv; } /** * Return the service name which will be used over this stream tube. This should be a * well-known TCP service name, for instance "rsync" or "daap". * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return The service name. */ QString StreamTubeChannel::service() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::service() used with " "FeatureCore not ready"; return QString(); } return mPriv->serviceName; } /** * Return whether this stream tube is capable to accept or offer an IPv4 socket accepting all * incoming connections coming from localhost. * * Note that the \telepathy_spec implies that any connection manager, if capable of providing * stream tubes, must at least support IPv4 sockets with localhost access control. * For this reason, this method should always return \c true. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept or offer an IPv4 socket * accepting all incoming connections coming from localhost, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), * OutgoingStreamTubeChannel::offerTcpSocket(), * supportsIPv4SocketsWithSpecifiedAddress() */ bool StreamTubeChannel::supportsIPv4SocketsOnLocalhost() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsIPv4SocketsOnLocalhost() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes.value(SocketAddressTypeIPv4).contains(SocketAccessControlLocalhost); } /** * Return whether this stream tube is capable to accept an IPv4 socket accepting all * incoming connections coming from a specific address for incoming tubes or whether * this stream tube is capable of mapping connections to the socket's source address for outgoing * tubes. * * For incoming tubes, when this capability is available, the stream tube can be accepted specifying * an IPv4 address. Every connection coming from any other address than the specified one will be * rejected. * * For outgoing tubes, when this capability is available, one can keep track of incoming connections * by enabling StreamTubeChannel::FeatureConnectionMonitoring (possibly before * opening the stream tube itself), and checking OutgoingStreamTubeChannel::contactsForConnections() * or OutgoingStreamTubeChannel::connectionsForSourceAddresses(). * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsTcpSocket() or * OutgoingStreamTubeChannel::offerTcpSocket() with a specified address to prevent failures, * as the spec implies this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept an IPv4 socket accepting all * incoming connections coming from a specific address for incoming tubes or * the stream tube is capable of mapping connections to the socket's source address for * outgoing tubes, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), * OutgoingStreamTubeChannel::offerTcpSocket(), * OutgoingStreamTubeChannel::connectionsForSourceAddresses(), * OutgoingStreamTubeChannel::contactsForConnections(), * supportsIPv4SocketsOnLocalhost() */ bool StreamTubeChannel::supportsIPv4SocketsWithSpecifiedAddress() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsIPv4SocketsWithSpecifiedAddress() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes.value(SocketAddressTypeIPv4).contains(SocketAccessControlPort); } /** * Return whether this stream tube is capable to accept or offer an IPv6 socket accepting all * incoming connections coming from localhost. * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsTcpSocket() or * OutgoingStreamTubeChannel::offerTcpSocket() with a specified address to prevent failures, * as the spec implies this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept or offer an IPv6 socket * accepting all incoming connections coming from localhost, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), * OutgoingStreamTubeChannel::offerTcpSocket(), * supportsIPv6SocketsWithSpecifiedAddress() */ bool StreamTubeChannel::supportsIPv6SocketsOnLocalhost() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsIPv6SocketsOnLocalhost() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes.value(SocketAddressTypeIPv6).contains(SocketAccessControlLocalhost); } /** * Return whether this stream tube is capable to accept an IPv6 socket accepting all * incoming connections coming from a specific address for incoming tubes or whether * this stream tube is capable of mapping connections to the socket's source address for outgoing * tubes. * * For incoming tubes, when this capability is available, the stream tube can be accepted specifying * an IPv6 address. Every connection coming from any other address than the specified one will be * rejected. * * For outgoing tubes, when this capability is available, one can keep track of incoming connections * by enabling StreamTubeChannel::FeatureConnectionMonitoring (possibly before * opening the stream tube itself), and checking OutgoingStreamTubeChannel::contactsForConnections() * or OutgoingStreamTubeChannel::connectionsForSourceAddresses(). * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsTcpSocket() or * OutgoingStreamTubeChannel::offerTcpSocket() with a specified address to prevent failures, * as the spec implies this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept an IPv6 socket accepting all * incoming connections coming from a specific address for incoming tubes or * the stream tube is capable of mapping connections to the socket's source address for * outgoing tubes, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsTcpSocket(), * OutgoingStreamTubeChannel::offerTcpSocket(), * OutgoingStreamTubeChannel::connectionsForSourceAddresses(), * OutgoingStreamTubeChannel::contactsForConnections(), * supportsIPv6SocketsOnLocalhost() */ bool StreamTubeChannel::supportsIPv6SocketsWithSpecifiedAddress() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsIPv6SocketsWithSpecifiedAddress() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes.value(SocketAddressTypeIPv6).contains(SocketAccessControlPort); } /** * Return whether this stream tube is capable to accept or offer an Unix socket accepting all * incoming connections coming from localhost. * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or * OutgoingStreamTubeChannel::offerUnixSocket() without credentials enabled, as the spec implies * this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept or offer an Unix socket * accepting all incoming connections coming from localhost, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), * OutgoingStreamTubeChannel::offerUnixSocket(), * supportsUnixSocketsWithCredentials() * supportsAbstractUnixSocketsOnLocalhost(), * supportsAbstractUnixSocketsWithCredentials(), */ bool StreamTubeChannel::supportsUnixSocketsOnLocalhost() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsUnixSocketsOnLocalhost() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes.value(SocketAddressTypeUnix).contains(SocketAccessControlLocalhost); } /** * Return whether this stream tube is capable to accept or offer an Unix socket which will require * credentials upon connection. * * When this capability is available and enabled, the connecting process must send a byte when * it first connects, which is not considered to be part of the data stream. * If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass * credentials over sockets, the connecting process must do so if possible; * if not, it must still send the byte. * * The listening process will disconnect the connection unless it can determine * by OS-specific means that the connecting process has the same user ID as the listening process. * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or * OutgoingStreamTubeChannel::offerUnixSocket() with credentials enabled, as the spec implies * this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept or offer an Unix socket * which will require credentials upon connection, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), * OutgoingStreamTubeChannel::offerUnixSocket(), * supportsUnixSocketsOnLocalhost(), * supportsAbstractUnixSocketsOnLocalhost(), * supportsAbstractUnixSocketsWithCredentials(), */ bool StreamTubeChannel::supportsUnixSocketsWithCredentials() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsUnixSocketsWithCredentials() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes[SocketAddressTypeUnix].contains(SocketAccessControlCredentials); } /** * Return whether this stream tube is capable to accept or offer an abstract Unix socket accepting * all incoming connections coming from localhost. * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or * OutgoingStreamTubeChannel::offerUnixSocket() without credentials enabled, as the spec implies * this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept or offer an abstract Unix socket * accepting all incoming connections coming from localhost, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), * OutgoingStreamTubeChannel::offerUnixSocket(), * supportsUnixSocketsOnLocalhost(), * supportsUnixSocketsWithCredentials(), * supportsAbstractUnixSocketsWithCredentials() */ bool StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsAbstractUnixSocketsOnLocalhost() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes[SocketAddressTypeAbstractUnix].contains(SocketAccessControlLocalhost); } /** * Return whether this stream tube is capable to accept or offer an abstract Unix socket which will * require credentials upon connection. * * When this capability is available and enabled, the connecting process must send a byte when * it first connects, which is not considered to be part of the data stream. * If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass * credentials over sockets, the connecting process must do so if possible; * if not, it must still send the byte. * * The listening process will disconnect the connection unless it can determine * by OS-specific means that the connecting process has the same user ID as the listening process. * * Note that it is strongly advised to call this method before attempting to call * IncomingStreamTubeChannel::acceptTubeAsUnixSocket() or * OutgoingStreamTubeChannel::offerUnixSocket() with credentials enabled, as the spec implies * this feature is not compulsory for connection managers. * * This method requires StreamTubeChannel::FeatureCore to be ready. * * \return \c true if the stream tube is capable to accept or offer an abstract Unix socket * which will require credentials upon connection, \c false otherwise. * \sa IncomingStreamTubeChannel::acceptTubeAsUnixSocket(), * OutgoingStreamTubeChannel::offerUnixSocket(), * supportsUnixSocketsOnLocalhost(), * supportsUnixSocketsWithCredentials(), * supportsAbstractUnixSocketsOnLocalhost() */ bool StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials() const { if (!isReady(FeatureCore)) { warning() << "StreamTubeChannel::supportsAbstractUnixSocketsWithCredentials() used with " "FeatureCore not ready"; return false; } return mPriv->socketTypes[SocketAddressTypeAbstractUnix].contains(SocketAccessControlCredentials); } /** * Return all the known active connections since StreamTubeChannel::FeatureConnectionMonitoring has * been enabled. * * For this method to return all known connections, you need to make * StreamTubeChannel::FeatureConnectionMonitoring ready before accepting or offering the stream * tube. * * This method requires StreamTubeChannel::FeatureConnectionMonitoring to be ready. * * \return The list of active connection ids. * \sa newConnection(), connectionClosed() */ QSet StreamTubeChannel::connections() const { if (!isReady(FeatureConnectionMonitoring)) { warning() << "StreamTubeChannel::connections() used with " "FeatureConnectionMonitoring not ready"; return QSet(); } return mPriv->connections; } /** * Return the type of the tube's local endpoint socket. * * Note that this function will return a valid value only after state() has gone #TubeStateOpen. * * \return The socket type as #SocketAddressType. * \sa localAddress(), ipAddress() */ SocketAddressType StreamTubeChannel::addressType() const { return mPriv->addressType; } /** * Return the access control used by this stream tube. * * Note that this function will only return a valid value after state() has gone #TubeStateOpen. * * \return The access control as #SocketAccessControl. * \sa addressType() */ SocketAccessControl StreamTubeChannel::accessControl() const { return mPriv->accessControl; } /** * Return the IP address/port combination used by this stream tube. * * This method will return a meaningful value only if the local endpoint socket for the tube is a * TCP socket, i.e. addressType() is #SocketAddressTypeIPv4 or #SocketAddressTypeIPv6. * * Note that this function will return a valid value only after state() has gone #TubeStateOpen. * * \return Pair of IP address as QHostAddress and port if using a TCP socket, * or an undefined value otherwise. * \sa localAddress() */ QPair StreamTubeChannel::ipAddress() const { if (state() != TubeChannelStateOpen) { warning() << "Tube not open, returning invalid IP address"; return qMakePair(QHostAddress::Null, 0); } return mPriv->ipAddress; } /** * Return the local address used by this stream tube. * * This method will return a meaningful value only if the local endpoint socket for the tube is an * UNIX socket, i.e. addressType() is #SocketAddressTypeUnix or #SocketAddressTypeAbstractUnix. * * Note that this function will return a valid value only after state() has gone #TubeStateOpen. * * \return Unix socket address if using an Unix socket, * or an undefined value otherwise. * \sa ipAddress() */ QString StreamTubeChannel::localAddress() const { if (state() != TubeChannelStateOpen) { warning() << "Tube not open, returning invalid local socket address"; return QString(); } return mPriv->unixAddress; } void StreamTubeChannel::addConnection(uint connection) { if (!mPriv->connections.contains(connection)) { mPriv->connections.insert(connection); emit newConnection(connection); } else { warning() << "Tried to add connection" << connection << "on StreamTube" << objectPath() << "but it already was there"; } } void StreamTubeChannel::removeConnection(uint connection, const QString &error, const QString &message) { if (mPriv->connections.contains(connection)) { mPriv->connections.remove(connection); emit connectionClosed(connection, error, message); } else { warning() << "Tried to remove connection" << connection << "from StreamTube" << objectPath() << "but it wasn't there"; } } void StreamTubeChannel::setAddressType(SocketAddressType type) { mPriv->addressType = type; } void StreamTubeChannel::setAccessControl(SocketAccessControl accessControl) { mPriv->accessControl = accessControl; } void StreamTubeChannel::setIpAddress(const QPair &address) { mPriv->ipAddress = address; } void StreamTubeChannel::setLocalAddress(const QString &address) { mPriv->unixAddress = address; } bool StreamTubeChannel::isDroppingConnections() const { return mPriv->droppingConnections; } void StreamTubeChannel::gotStreamTubeProperties(PendingOperation *op) { if (!op->isError()) { PendingVariantMap *pvm = qobject_cast(op); mPriv->extractStreamTubeProperties(pvm->result()); debug() << "Got reply to Properties::GetAll(StreamTubeChannel)"; mPriv->readinessHelper->setIntrospectCompleted(StreamTubeChannel::FeatureCore, true); } else { warning().nospace() << "Properties::GetAll(StreamTubeChannel) failed " "with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(StreamTubeChannel::FeatureCore, false, op->errorName(), op->errorMessage()); } } void StreamTubeChannel::onConnectionClosed(uint connId, const QString &error, const QString &message) { removeConnection(connId, error, message); } void StreamTubeChannel::dropConnections() { if (!mPriv->connections.isEmpty()) { debug() << "StreamTubeChannel invalidated with" << mPriv->connections.size() << "connections remaining, synthesizing close events"; mPriv->droppingConnections = true; foreach (uint connId, mPriv->connections) { removeConnection(connId, TP_QT_ERROR_ORPHANED, QLatin1String("parent tube invalidated, streams closing")); } mPriv->droppingConnections = false; } } /** * \fn void StreamTubeChannel::connectionClosed(uint connectionId, * const QString &errorName, const QString &errorMessage) * * Emitted when a connection on this stream tube has been closed. * * \param connectionId The unique ID associated with the connection that was closed. * \param errorName The name of a D-Bus error describing the error that occurred. * \param errorMessage A debugging message associated with the error. * \sa newConnection(), connections() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/base-call.h0000644000175100017520000001344712530423576022173 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2013 Matthias Gehre * @copyright Copyright 2013 Canonical Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_base_call_h_HEADER_GUARD_ #define _TelepathyQt_base_call_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include class QString; namespace Tp { class TP_QT_EXPORT AbstractCallContentInterface : public AbstractDBusServiceInterface { Q_OBJECT Q_DISABLE_COPY(AbstractCallContentInterface) public: AbstractCallContentInterface(const QString &interfaceName); virtual ~AbstractCallContentInterface(); private: friend class BaseCallContent; class Private; friend class Private; Private *mPriv; }; class TP_QT_EXPORT BaseCallContent : public DBusService { Q_OBJECT Q_DISABLE_COPY(BaseCallContent) public: static BaseCallContentPtr create(const QDBusConnection &dbusConnection, BaseChannel* channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction) { return BaseCallContentPtr(new BaseCallContent(dbusConnection, channel, name, type, direction)); } virtual ~BaseCallContent(); QVariantMap immutableProperties() const; bool registerObject(DBusError *error = NULL); virtual QString uniqueName() const; QList interfaces() const; AbstractCallContentInterfacePtr interface(const QString &interfaceName) const; bool plugInterface(const AbstractCallContentInterfacePtr &interface); QString name() const; Tp::MediaStreamType type() const; Tp::CallContentDisposition disposition() const; Tp::ObjectPathList streams() const; protected: BaseCallContent(const QDBusConnection &dbusConnection, BaseChannel* channel, const QString &name, const Tp::MediaStreamType &type, const Tp::MediaStreamDirection &direction); virtual bool registerObject(const QString &busName, const QString &objectPath, DBusError *error); void remove(); private: class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseCallMuteInterface : public AbstractChannelInterface { Q_OBJECT Q_DISABLE_COPY(BaseCallMuteInterface) public: static BaseCallMuteInterfacePtr create() { return BaseCallMuteInterfacePtr(new BaseCallMuteInterface()); } template static SharedPtr create() { return SharedPtr( new BaseCallMuteInterfaceSubclass()); } virtual ~BaseCallMuteInterface(); QVariantMap immutableProperties() const; Tp::LocalMuteState localMuteState() const; void setMuteState(const Tp::LocalMuteState &state); typedef Callback2 SetMuteStateCallback; void setSetMuteStateCallback(const SetMuteStateCallback &cb); Q_SIGNALS: void muteStateChanged(const Tp::LocalMuteState &state); private: BaseCallMuteInterface(); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; class TP_QT_EXPORT BaseCallContentDTMFInterface : public AbstractCallContentInterface { Q_OBJECT Q_DISABLE_COPY(BaseCallContentDTMFInterface) public: static BaseCallContentDTMFInterfacePtr create() { return BaseCallContentDTMFInterfacePtr(new BaseCallContentDTMFInterface()); } template static SharedPtr create() { return SharedPtr( new BaseCallContentDTMFInterfaceSubclass()); } virtual ~BaseCallContentDTMFInterface(); QVariantMap immutableProperties() const; bool currentlySendingTones() const; void setCurrentlySendingTones(bool sendingTones); QString deferredTones() const; void setDeferredTones(const QString &deferredTones); typedef Callback2 StartToneCallback; void setStartToneCallback(const StartToneCallback &cb); typedef Callback1 StopToneCallback; void setStopToneCallback(const StopToneCallback &cb); typedef Callback2 MultipleTonesCallback; void setMultipleTonesCallback(const MultipleTonesCallback &cb); Q_SIGNALS: private: BaseCallContentDTMFInterface(); void createAdaptor(); class Adaptee; friend class Adaptee; struct Private; friend struct Private; Private *mPriv; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/PendingChannel0000644000175100017520000000037112530423576022767 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingChannel_HEADER_GUARD_ #define _TelepathyQt_PendingChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceServicePointInterface0000644000175100017520000000045012530423576030204 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceServicePointInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceServicePointInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ServerAuthenticationChannel0000644000175100017520000000044112530423576025547 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ServerAuthenticationChannel_HEADER_GUARD_ #define _TelepathyQt_ServerAuthenticationChannel_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/connection-factory.h0000644000175100017520000000450712530423576024151 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_connection_factory_h_HEADER_GUARD_ #define _TelepathyQt_connection_factory_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include // For Q_DISABLE_COPY #include #include class QDBusConnection; namespace Tp { class PendingReady; class TP_QT_EXPORT ConnectionFactory : public FixedFeatureFactory { public: static ConnectionFactoryPtr create(const QDBusConnection &bus, const Features &features = Features()); virtual ~ConnectionFactory(); PendingReady *proxy(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const; protected: ConnectionFactory(const QDBusConnection &bus, const Features &features); virtual ConnectionPtr construct(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) const; virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const; // Nothing we'd like to prepare() // Fixed features private: struct Private; Private *mPriv; // Currently unused, just for future-proofing }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Farstream/0000755000175100017520000000000012530423576022112 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/TelepathyQt/Farstream/Global0000644000175100017520000000043412530423576023236 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Farstream_Global_HEADER_GUARD_ #define _TelepathyQt_Farstream_Global_HEADER_GUARD_ #ifndef IN_TP_QT_FARSTREAM_HEADER #define IN_TP_QT_FARSTREAM_HEADER #endif #include #undef IN_TP_QT_FARSTREAM_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Farstream/channel.h0000644000175100017520000000351312530423576023675 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * Copyright (C) 2009-2012 Collabora Ltd. * Copyright (C) 2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_Farstream_channel_h_HEADER_GUARD_ #define _TelepathyQt_Farstream_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_FARSTREAM_HEADER #error IN_TP_QT_FARSTREAM_HEADER #endif #include #include #include #include typedef struct _TfChannel TfChannel; namespace Tp { namespace Farstream { class TP_QT_FS_EXPORT PendingChannel : public Tp::PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingChannel) public: ~PendingChannel(); TfChannel *tfChannel() const; CallChannelPtr callChannel() const; private: TP_QT_FS_NO_EXPORT PendingChannel(const CallChannelPtr &channel); friend PendingChannel *createChannel(const CallChannelPtr &channel); struct Private; friend struct Private; Private *mPriv; }; TP_QT_FS_EXPORT PendingChannel *createChannel(const CallChannelPtr &channel); } // Farstream } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/Farstream/Channel0000644000175100017520000000043712530423576023411 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Farstream_Channel_HEADER_GUARD_ #define _TelepathyQt_Farstream_Channel_HEADER_GUARD_ #ifndef IN_TP_QT_FARSTREAM_HEADER #define IN_TP_QT_FARSTREAM_HEADER #endif #include #undef IN_TP_QT_FARSTREAM_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Farstream/CMakeLists.txt0000644000175100017520000001142012530423576024650 0ustar00kaffeinekaffeine00000000000000if(FARSTREAM_COMPONENTS_FOUND) include_directories(${TELEPATHY_FARSTREAM_INCLUDE_DIR} ${TELEPATHY_GLIB_INCLUDE_DIR} ${FARSTREAM_INCLUDE_DIR} ${GSTREAMER_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR} ${DBUS_INCLUDE_DIR}) # It gets inherited from the previous directory, hence it has to be removed explicitely remove_definitions(-DBUILDING_TP_QT) # We are building Telepathy-Qt-Farstream add_definitions(-DBUILDING_TP_QT_FARSTREAM -DQT_NO_KEYWORDS) set(telepathy_qt_farstream_SRCS channel.cpp) set(telepathy_qt_farstream_HEADERS Channel channel.h Global global.h PendingChannel) set(telepathy_qt_farstream_MOC_SRCS channel.h) # generate client moc files tpqt_generate_mocs(${telepathy_qt_farstream_MOC_SRCS}) # Create the library if (ENABLE_COMPILER_COVERAGE) add_library(telepathy-qt${QT_VERSION_MAJOR}-farstream STATIC ${telepathy_qt_farstream_SRCS} ${telepathy_qt_farstream_MOC_SRCS}) else (ENABLE_COMPILER_COVERAGE) add_library(telepathy-qt${QT_VERSION_MAJOR}-farstream SHARED ${telepathy_qt_farstream_SRCS} ${telepathy_qt_farstream_MOC_SRCS}) endif (ENABLE_COMPILER_COVERAGE) # Link target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-farstream ${QT_QTDBUS_LIBRARY} ${QT_QTCORE_LIBRARY} ${GOBJECT_LIBRARIES} ${TELEPATHY_FARSTREAM_LIBRARIES} ${TELEPATHY_GLIB_LIBRARIES} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_LIBRARY_LINKER_FLAGS}) if (ENABLE_COMPILER_COVERAGE) target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-farstream gcov) endif (ENABLE_COMPILER_COVERAGE) # Set the correct version number set_target_properties(telepathy-qt${QT_VERSION_MAJOR}-farstream PROPERTIES SOVERSION ${TP_QT_ABI_VERSION} VERSION ${TP_QT_LIBRARY_VERSION}) # Install the library - watch out for the correct components if (WIN32) install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-farstream EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream_libs) else (WIN32) install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-farstream EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream_libs) endif (WIN32) # Install headers install(FILES ${telepathy_qt_farstream_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/Farstream COMPONENT farstream_headers) # pkg-config files, only if not on windows if (NOT WIN32) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtFarstream.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream.pc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtFarstream-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream-uninstalled.pc) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig) endif (NOT WIN32) # Configure the actual Config file configure_file(TelepathyQtFarstreamConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfig.cmake" @ONLY) # this file is used by to check if the installed version can be used. macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfigVersion.cmake ${PACKAGE_VERSION}) if(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_TelepathyQtFarstreamConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}Farstream) else(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_TelepathyQtFarstreamConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream/cmake) endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfig.cmake DESTINATION ${_TelepathyQtFarstreamConfig_INSTALL_DIR} COMPONENT headers) endif(FARSTREAM_COMPONENTS_FOUND) telepathy-qt-0.9.6.1/TelepathyQt/Farstream/global.h0000644000175100017520000000263412530423576023530 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * Copyright (C) 2009-2012 Collabora Ltd. * Copyright (C) 2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_Farstream_global_h_HEADER_GUARD_ #define _TelepathyQt_Farstream_global_h_HEADER_GUARD_ #ifndef IN_TP_QT_FARSTREAM_HEADER #error IN_TP_QT_FARSTREAM_HEADER #endif #include #ifdef BUILDING_TP_QT_FARSTREAM # define TP_QT_FS_EXPORT Q_DECL_EXPORT #else # define TP_QT_FS_EXPORT Q_DECL_IMPORT #endif #if !defined(Q_OS_WIN) && defined(QT_VISIBILITY_AVAILABLE) # define TP_QT_FS_NO_EXPORT __attribute__((visibility("hidden"))) #endif #ifndef TP_QT_FS_NO_EXPORT # define TP_QT_FS_NO_EXPORT #endif #endif telepathy-qt-0.9.6.1/TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in0000644000175100017520000000145612530423576031502 0ustar00kaffeinekaffeine00000000000000prefix=/nonexistent exec_prefix=/nonexistent abs_top_builddir=${CMAKE_BINARY_DIR} abs_top_srcdir=${CMAKE_SOURCE_DIR} Name: TelepathyQt${QT_VERSION_MAJOR}Farstream (uninstalled copy) Description: Qt Telepathy Farstream utility library for the Telepathy framework Version: ${PACKAGE_VERSION} Requires.private: Qt${QT_VERSION_PC}Core >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Core < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}DBus >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}DBus < ${QT_MAX_VERSION}, telepathy-glib >= ${TELEPATHY_GLIB_MIN_VERSION}, telepathy-farstream >= ${TELEPATHY_FARSTREAM_MIN_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION} Libs: ${CMAKE_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}/Farstream/libtelepathy-qt${QT_VERSION_MAJOR}-farstream.so Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR} telepathy-qt-0.9.6.1/TelepathyQt/Farstream/TelepathyQtFarstreamConfig.cmake.in0000644000175100017520000000266612530423576030772 0ustar00kaffeinekaffeine00000000000000# TelepathyQt@QT_VERSION_MAJOR@FarstreamConfig.cmake is generated by CMake from TelepathyQt/TelepathyQtFarstreamConfig.cmake.in. # Any changed value in this file will be overwritten by CMake. if(NOT TelepathyQt@QT_VERSION_MAJOR@Farstream_FOUND) # set the version number set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_MAJOR @TP_QT_MAJOR_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_MINOR @TP_QT_MINOR_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_MICRO @TP_QT_MICRO_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_NANO @TP_QT_NANO_VERSION@) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION @PACKAGE_VERSION@) # set the directories if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INSTALL_DIR) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@") endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INSTALL_DIR) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@") set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_LIB_DIR "@TELEPATHY_QT_LIB_DIR@") set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@") find_package(TelepathyQt@QT_VERSION_MAJOR@ REQUIRED) set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@-farstream) endif(NOT TelepathyQt@QT_VERSION_MAJOR@Farstream_FOUND) telepathy-qt-0.9.6.1/TelepathyQt/Farstream/TelepathyQtFarstream.pc.in0000644000175100017520000000154612530423576027162 0ustar00kaffeinekaffeine00000000000000prefix=${CMAKE_INSTALL_PREFIX} exec_prefix=${CMAKE_INSTALL_PREFIX} libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR} Name: TelepathyQt${QT_VERSION_MAJOR}Farstream Description: Qt Telepathy Farstream utility library for the Telepathy framework Version: ${PACKAGE_VERSION} Requires.private: Qt${QT_VERSION_PC}Core >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}Core < ${QT_MAX_VERSION}, Qt${QT_VERSION_PC}DBus >= ${QT_MIN_VERSION}, Qt${QT_VERSION_PC}DBus < ${QT_MAX_VERSION}, telepathy-glib >= ${TELEPATHY_GLIB_MIN_VERSION}, telepathy-farstream >= ${TELEPATHY_FARSTREAM_MIN_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION} Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR}-farstream Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR} telepathy-qt-0.9.6.1/TelepathyQt/Farstream/PendingChannel0000644000175100017520000000045512530423576024716 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_Farstream_PendingChannel_HEADER_GUARD_ #define _TelepathyQt_Farstream_PendingChannel_HEADER_GUARD_ #ifndef IN_TP_QT_FARSTREAM_HEADER #define IN_TP_QT_FARSTREAM_HEADER #endif #include #undef IN_TP_QT_FARSTREAM_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/Farstream/channel.cpp0000644000175100017520000001211012530423576024221 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * Copyright © 2009-2012 Collabora Ltd. * Copyright © 2009 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/Farstream/_gen/channel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include namespace Tp { namespace Farstream { struct TP_QT_FS_NO_EXPORT PendingChannel::Private { Private() : mTfChannel(0) { } static void onTfChannelNewFinish(GObject *sourceObject, GAsyncResult *res, gpointer userData); TfChannel *mTfChannel; }; PendingChannel::PendingChannel(const CallChannelPtr &channel) : Tp::PendingOperation(channel), mPriv(new PendingChannel::Private) { if (!channel->handlerStreamingRequired()) { warning() << "Handler streaming not required"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Handler streaming not required")); return; } TpDBusDaemon *dbus = tp_dbus_daemon_dup(0); if (!dbus) { warning() << "Unable to connect to D-Bus"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Unable to connect to D-Bus")); return; } Tp::ConnectionPtr connection = channel->connection(); if (connection.isNull()) { warning() << "Connection not available"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection not available")); g_object_unref(dbus); return; } TpSimpleClientFactory *factory = (TpSimpleClientFactory *) tp_automatic_client_factory_new (dbus); if (!factory) { warning() << "Unable to construct TpAutomaticClientFactory"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Unable to construct TpAutomaticClientFactory")); g_object_unref(dbus); return; } TpConnection *gconnection = tp_simple_client_factory_ensure_connection (factory, connection->objectPath().toLatin1(), NULL, 0); if (!gconnection) { warning() << "Unable to construct TpConnection"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Unable to construct TpConnection")); g_object_unref(factory); g_object_unref(dbus); return; } TpChannel *gchannel = (TpChannel*) g_object_new(TP_TYPE_CALL_CHANNEL, "bus-name", connection->busName().toLatin1().constData(), "connection", gconnection, "dbus-daemon", dbus, "object-path", channel->objectPath().toLatin1().constData(), NULL); g_object_unref(factory); factory = 0; g_object_unref(dbus); dbus = 0; g_object_unref(gconnection); gconnection = 0; if (!gchannel) { warning() << "Unable to construct TpChannel"; setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Unable to construct TpChannel")); return; } tf_channel_new_async(gchannel, PendingChannel::Private::onTfChannelNewFinish, this); g_object_unref(gchannel); } PendingChannel::~PendingChannel() { delete mPriv; } void PendingChannel::Private::onTfChannelNewFinish(GObject *sourceObject, GAsyncResult *res, gpointer userData) { PendingChannel *self = reinterpret_cast(userData); GError *error = NULL; TfChannel *ret = tf_channel_new_finish(sourceObject, res, &error); if (error) { warning() << "Fs::PendingChannel::Private::onTfChannelNewFinish: error " << error->message; self->setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String(error->message)); g_clear_error(&error); return; } self->mPriv->mTfChannel = ret; self->setFinished(); } TfChannel *PendingChannel::tfChannel() const { return mPriv->mTfChannel; } CallChannelPtr PendingChannel::callChannel() const { return CallChannelPtr::staticCast(object()); } PendingChannel *createChannel(const CallChannelPtr &channel) { PendingChannel *ptf = new PendingChannel(channel); return ptf; } } // Farstream } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ChannelInterfaceTubeInterface0000644000175100017520000000041712530423576025745 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelInterfaceTubeInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelInterfaceTubeInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/FileTransferChannelCreationProperties0000644000175100017520000000050112530423576027524 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_FileTransferChannelCreationProperties_HEADER_GUARD_ #define _TelepathyQt_FileTransferChannelCreationProperties_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/MediaSessionHandler0000644000175100017520000000041112530423576023766 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_MediaSessionHandler_HEADER_GUARD_ #define _TelepathyQt_MediaSessionHandler_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/readiness-helper.cpp0000644000175100017520000005473312530423576024140 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/readiness-helper.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ReadinessHelper::Introspectable::Private : public QSharedData { Private(const QSet &makesSenseForStatuses, const Features &dependsOnFeatures, const QStringList &dependsOnInterfaces, IntrospectFunc introspectFunc, void *introspectFuncData, bool critical) : makesSenseForStatuses(makesSenseForStatuses), dependsOnFeatures(dependsOnFeatures), dependsOnInterfaces(dependsOnInterfaces), introspectFunc(introspectFunc), introspectFuncData(introspectFuncData), critical(critical) {} QSet makesSenseForStatuses; Features dependsOnFeatures; QStringList dependsOnInterfaces; IntrospectFunc introspectFunc; void *introspectFuncData; bool critical; }; ReadinessHelper::Introspectable::Introspectable() : mPriv(new Private(QSet(), Features(), QStringList(), 0, 0, false)) { } ReadinessHelper::Introspectable::Introspectable(const QSet &makesSenseForStatuses, const Features &dependsOnFeatures, const QStringList &dependsOnInterfaces, IntrospectFunc introspectFunc, void *introspectFuncData, bool critical) : mPriv(new Private(makesSenseForStatuses, dependsOnFeatures, dependsOnInterfaces, introspectFunc, introspectFuncData, critical)) { } ReadinessHelper::Introspectable::Introspectable(const Introspectable &other) : mPriv(other.mPriv) { } ReadinessHelper::Introspectable::~Introspectable() { } ReadinessHelper::Introspectable &ReadinessHelper::Introspectable::operator=( const Introspectable &other) { mPriv = other.mPriv; return *this; } struct TP_QT_NO_EXPORT ReadinessHelper::Private { Private(ReadinessHelper *parent, RefCounted *object, uint currentStatus, const Introspectables &introspectables); Private(ReadinessHelper *parent, DBusProxy *proxy, uint currentStatus, const Introspectables &introspectables); ~Private(); void setCurrentStatus(uint newStatus); void setIntrospectCompleted(const Feature &feature, bool success, const QString &errorName = QString(), const QString &errorMessage = QString()); void iterateIntrospection(); Features depsFor(const Feature &feature); // Recursive dependencies for a feature void abortOperations(const QString &errorName, const QString &errorMessage); ReadinessHelper *parent; RefCounted *object; DBusProxy *proxy; uint currentStatus; QStringList interfaces; Introspectables introspectables; QSet supportedStatuses; Features supportedFeatures; Features satisfiedFeatures; Features requestedFeatures; Features missingFeatures; Features pendingFeatures; Features inFlightFeatures; QHash > missingFeaturesErrors; QList pendingOperations; bool pendingStatusChange; uint pendingStatus; }; ReadinessHelper::Private::Private( ReadinessHelper *parent, RefCounted *object, uint currentStatus, const Introspectables &introspectables) : parent(parent), object(object), proxy(0), currentStatus(currentStatus), introspectables(introspectables), pendingStatusChange(false), pendingStatus(-1) { for (Introspectables::const_iterator i = introspectables.constBegin(); i != introspectables.constEnd(); ++i) { Feature feature = i.key(); Introspectable introspectable = i.value(); Q_ASSERT(introspectable.mPriv->introspectFunc != 0); supportedStatuses += introspectable.mPriv->makesSenseForStatuses; supportedFeatures += feature; } } ReadinessHelper::Private::Private( ReadinessHelper *parent, DBusProxy *proxy, uint currentStatus, const Introspectables &introspectables) : parent(parent), object(proxy), proxy(proxy), currentStatus(currentStatus), introspectables(introspectables), pendingStatusChange(false), pendingStatus(-1) { Q_ASSERT(proxy != 0); for (Introspectables::const_iterator i = introspectables.constBegin(); i != introspectables.constEnd(); ++i) { Feature feature = i.key(); Introspectable introspectable = i.value(); Q_ASSERT(introspectable.mPriv->introspectFunc != 0); supportedStatuses += introspectable.mPriv->makesSenseForStatuses; supportedFeatures += feature; } } ReadinessHelper::Private::~Private() { const static QString messageDestroyed(QLatin1String("Destroyed")); abortOperations(TP_QT_ERROR_CANCELLED, messageDestroyed); } void ReadinessHelper::Private::setCurrentStatus(uint newStatus) { if (currentStatus == newStatus) { return; } if (inFlightFeatures.isEmpty()) { currentStatus = newStatus; satisfiedFeatures.clear(); missingFeatures.clear(); // Make all features that were requested for the new status pending again pendingFeatures = requestedFeatures; // becomeReady ensures that the recursive dependencies of the requested features are already // in the requested set, so we don't have to re-add them here if (supportedStatuses.contains(currentStatus)) { QTimer::singleShot(0, parent, SLOT(iterateIntrospection())); } else { emit parent->statusReady(currentStatus); } } else { debug() << "status changed while introspection process was running"; pendingStatusChange = true; pendingStatus = newStatus; } } void ReadinessHelper::Private::setIntrospectCompleted(const Feature &feature, bool success, const QString &errorName, const QString &errorMessage) { debug() << "ReadinessHelper::setIntrospectCompleted: feature:" << feature << "- success:" << success; if (pendingStatusChange) { debug() << "ReadinessHelper::setIntrospectCompleted called while there is " "a pending status change - ignoring"; inFlightFeatures.remove(feature); // ignore all introspection completed as the state changed if (!inFlightFeatures.isEmpty()) { return; } pendingStatusChange = false; setCurrentStatus(pendingStatus); return; } Q_ASSERT(pendingFeatures.contains(feature)); Q_ASSERT(inFlightFeatures.contains(feature)); if (success) { satisfiedFeatures.insert(feature); } else { missingFeatures.insert(feature); missingFeaturesErrors.insert(feature, QPair(errorName, errorMessage)); if (errorName.isEmpty()) { warning() << "ReadinessHelper::setIntrospectCompleted: Feature" << feature << "introspection failed but no error message was given"; } } pendingFeatures.remove(feature); inFlightFeatures.remove(feature); QTimer::singleShot(0, parent, SLOT(iterateIntrospection())); } void ReadinessHelper::Private::iterateIntrospection() { if (proxy && !proxy->isValid()) { debug() << "ReadinessHelper: not iterating as the proxy is invalidated"; return; } // When there's a pending status change, we MUST NOT // - finish PendingReadys (as they'd not be finished in the new status) // - claim a status as being ready (because the new one isn't) // and SHOULD NOT // - fire new introspection jobs (as that would just delay the pending status change even more) // and NEED NOT // - flag features as missing (as the completed features will be cleared anyway when starting // introspection for the new status) // // So we can safely skip the rest of this function here. if (pendingStatusChange) { debug() << "ReadinessHelper: not iterating as a status change is pending"; return; } // Flag the currently pending reverse dependencies of any previously discovered missing features // as missing foreach (const Feature &feature, pendingFeatures) { if (!depsFor(feature).intersect(missingFeatures).isEmpty()) { missingFeatures.insert(feature); missingFeaturesErrors.insert(feature, QPair(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Feature depends on other features that are not available"))); } } const Features completedFeatures = satisfiedFeatures + missingFeatures; // check if any pending operations for becomeReady should finish now // based on their requested features having nothing more than what // satisfiedFeatures + missingFeatures has QString errorName; QString errorMessage; foreach (PendingReady *operation, pendingOperations) { if ((operation->requestedFeatures() - completedFeatures).isEmpty()) { if (parent->isReady(operation->requestedFeatures(), &errorName, &errorMessage)) { operation->setFinished(); } else { operation->setFinishedWithError(errorName, errorMessage); } // Remove the operation from tracking, so we don't double-finish it // // Qt foreach makes a copy of the container, which will be detached at this point, so // this is perfectly safe pendingOperations.removeOne(operation); } } if ((requestedFeatures - completedFeatures).isEmpty()) { // Otherwise, we'd emit statusReady with currentStatus although we are supposed to be // introspecting the pendingStatus and only when that is complete, emit statusReady Q_ASSERT(!pendingStatusChange); // all requested features satisfied or missing emit parent->statusReady(currentStatus); return; } // update pendingFeatures with the difference of requested and // satisfied + missing pendingFeatures -= completedFeatures; // find out which features don't have dependencies that are still pending Features readyToIntrospect; foreach (const Feature &feature, pendingFeatures) { // missing doesn't have to be considered here anymore if ((introspectables[feature].mPriv->dependsOnFeatures - satisfiedFeatures).isEmpty()) { readyToIntrospect.insert(feature); } } // now readyToIntrospect should contain all the features which have // all their feature dependencies satisfied foreach (const Feature &feature, readyToIntrospect) { if (inFlightFeatures.contains(feature)) { continue; } inFlightFeatures.insert(feature); Introspectable introspectable = introspectables[feature]; if (!introspectable.mPriv->makesSenseForStatuses.contains(currentStatus)) { // No-op satisfy features for which nothing has to be done in // the current state setIntrospectCompleted(feature, true); return; // will be called with a single-shot soon again } foreach (const QString &interface, introspectable.mPriv->dependsOnInterfaces) { if (!interfaces.contains(interface)) { // If a feature is ready to introspect and depends on a interface // that is not present the feature can't possibly be satisfied debug() << "feature" << feature << "depends on interfaces" << introspectable.mPriv->dependsOnInterfaces << ", but interface" << interface << "is not present"; setIntrospectCompleted(feature, false, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Feature depend on interfaces that are not available")); return; // will be called with a single-shot soon again } } // yes, with the dependency info, we can even parallelize // introspection of several features at once, reducing total round trip // time considerably with many independent features! (*(introspectable.mPriv->introspectFunc))(introspectable.mPriv->introspectFuncData); } } Features ReadinessHelper::Private::depsFor(const Feature &feature) { Features deps; foreach (Feature dep, introspectables[feature].mPriv->dependsOnFeatures) { deps += dep; deps += depsFor(dep); } return deps; } void ReadinessHelper::Private::abortOperations(const QString &errorName, const QString &errorMessage) { foreach (PendingReady *operation, pendingOperations) { operation->setFinishedWithError(errorName, errorMessage); } pendingOperations.clear(); } /** * \class ReadinessHelper * \ingroup utils * \headerfile TelepathyQt/readiness-helper.h * * \brief The ReadinessHelper class is a helper class used by the introspection * process. */ /** * \class ReadinessHelper::Introspectable * \ingroup utils * \headerfile TelepathyQt/readiness-helper.h * * \brief The ReadinessHelper::Introspectable class represents a introspectable * used by ReadinessHelper. */ ReadinessHelper::ReadinessHelper(RefCounted *object, uint currentStatus, const Introspectables &introspectables, QObject *parent) : QObject(parent), mPriv(new Private(this, object, currentStatus, introspectables)) { } ReadinessHelper::ReadinessHelper(DBusProxy *proxy, uint currentStatus, const Introspectables &introspectables, QObject *parent) : QObject(parent), mPriv(new Private(this, proxy, currentStatus, introspectables)) { } ReadinessHelper::~ReadinessHelper() { delete mPriv; } void ReadinessHelper::addIntrospectables(const Introspectables &introspectables) { // QMap::unite will create multiple items if the key is already in the map // so let's make sure we don't duplicate keys for (Introspectables::const_iterator i = introspectables.constBegin(); i != introspectables.constEnd(); ++i) { Feature feature = i.key(); if (mPriv->introspectables.contains(feature)) { warning() << "ReadinessHelper::addIntrospectables: trying to add an " "introspectable for feature" << feature << "but introspectable " "for this feature already exists"; } else { Introspectable introspectable = i.value(); mPriv->introspectables.insert(feature, introspectable); mPriv->supportedStatuses += introspectable.mPriv->makesSenseForStatuses; mPriv->supportedFeatures += feature; } } debug() << "ReadinessHelper: new supportedStatuses =" << mPriv->supportedStatuses; debug() << "ReadinessHelper: new supportedFeatures =" << mPriv->supportedFeatures; } uint ReadinessHelper::currentStatus() const { return mPriv->currentStatus; } void ReadinessHelper::setCurrentStatus(uint currentStatus) { mPriv->setCurrentStatus(currentStatus); } /** * Force the current internal status to \a currentStatus. * * Note that this method will not start a new introspection or restart the * current one in case one is running. * * This is useful for example when the status is unknown initially but it will * become known in the first introspection run and there is no need to re-run * the introspection. * * \param currentStatus The status to set. */ void ReadinessHelper::forceCurrentStatus(uint currentStatus) { mPriv->currentStatus = currentStatus; } QStringList ReadinessHelper::interfaces() const { return mPriv->interfaces; } void ReadinessHelper::setInterfaces(const QStringList &interfaces) { mPriv->interfaces = interfaces; } Features ReadinessHelper::requestedFeatures() const { return mPriv->requestedFeatures; } Features ReadinessHelper::actualFeatures() const { return mPriv->satisfiedFeatures; } Features ReadinessHelper::missingFeatures() const { return mPriv->missingFeatures; } bool ReadinessHelper::isReady(const Feature &feature, QString *errorName, QString *errorMessage) const { if (mPriv->proxy && !mPriv->proxy->isValid()) { if (errorName) { *errorName = mPriv->proxy->invalidationReason(); } if (errorMessage) { *errorMessage = mPriv->proxy->invalidationMessage(); } return false; } if (!mPriv->supportedFeatures.contains(feature)) { if (errorName) { *errorName = TP_QT_ERROR_INVALID_ARGUMENT; } if (errorMessage) { *errorMessage = QLatin1String("Unsupported feature"); } return false; } bool ret = true; if (feature.isCritical()) { if (!mPriv->satisfiedFeatures.contains(feature)) { ret = false; } } else { if (!mPriv->satisfiedFeatures.contains(feature) && !mPriv->missingFeatures.contains(feature)) { ret = false; } } if (!ret) { QPair error = mPriv->missingFeaturesErrors[feature]; if (errorName) { *errorName = error.first; } if (errorMessage) { *errorMessage = error.second; } } return ret; } bool ReadinessHelper::isReady(const Features &features, QString *errorName, QString *errorMessage) const { if (mPriv->proxy && !mPriv->proxy->isValid()) { if (errorName) { *errorName = mPriv->proxy->invalidationReason(); } if (errorMessage) { *errorMessage = mPriv->proxy->invalidationMessage(); } return false; } Q_ASSERT(!features.isEmpty()); foreach (const Feature &feature, features) { if (!isReady(feature, errorName, errorMessage)) { return false; } } return true; } PendingReady *ReadinessHelper::becomeReady(const Features &requestedFeatures) { Q_ASSERT(!requestedFeatures.isEmpty()); if (mPriv->proxy) { connect(mPriv->proxy, SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), this, SLOT(onProxyInvalidated(Tp::DBusProxy*,QString,QString)), Qt::UniqueConnection); if (!mPriv->proxy->isValid()) { PendingReady *operation = new PendingReady(SharedPtr(mPriv->object), requestedFeatures); operation->setFinishedWithError(mPriv->proxy->invalidationReason(), mPriv->proxy->invalidationMessage()); return operation; } } Features supportedFeatures = mPriv->supportedFeatures; if (supportedFeatures.intersect(requestedFeatures) != requestedFeatures) { warning() << "ReadinessHelper::becomeReady called with invalid features: requestedFeatures =" << requestedFeatures << "- supportedFeatures =" << mPriv->supportedFeatures; PendingReady *operation = new PendingReady(SharedPtr(mPriv->object), requestedFeatures); operation->setFinishedWithError( TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Requested features contains unsupported feature")); return operation; } if (mPriv->proxy && !mPriv->proxy->isValid()) { PendingReady *operation = new PendingReady(SharedPtr(mPriv->object), requestedFeatures); operation->setFinishedWithError(mPriv->proxy->invalidationReason(), mPriv->proxy->invalidationMessage()); return operation; } PendingReady *operation; foreach (operation, mPriv->pendingOperations) { if (operation->requestedFeatures() == requestedFeatures) { return operation; } } // Insert the dependencies of the requested features too Features requestedWithDeps = requestedFeatures; foreach (const Feature &feature, requestedFeatures) { requestedWithDeps.unite(mPriv->depsFor(feature)); } mPriv->requestedFeatures += requestedWithDeps; mPriv->pendingFeatures += requestedWithDeps; // will be updated in iterateIntrospection operation = new PendingReady(SharedPtr(mPriv->object), requestedFeatures); mPriv->pendingOperations.append(operation); // Only we finish these PendingReadys, so we don't need destroyed or finished handling for them // - we already know when that happens, as we caused it! QTimer::singleShot(0, this, SLOT(iterateIntrospection())); return operation; } void ReadinessHelper::setIntrospectCompleted(const Feature &feature, bool success, const QString &errorName, const QString &errorMessage) { if (mPriv->proxy && !mPriv->proxy->isValid()) { // proxy became invalid, ignore here return; } mPriv->setIntrospectCompleted(feature, success, errorName, errorMessage); } void ReadinessHelper::setIntrospectCompleted(const Feature &feature, bool success, const QDBusError &error) { setIntrospectCompleted(feature, success, error.name(), error.message()); } void ReadinessHelper::iterateIntrospection() { mPriv->iterateIntrospection(); } void ReadinessHelper::onProxyInvalidated(DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { // clear satisfied and missing features as we have public methods to get them mPriv->satisfiedFeatures.clear(); mPriv->missingFeatures.clear(); mPriv->abortOperations(errorName, errorMessage); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/ProtocolParameterList0000644000175100017520000000041212530423576024404 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolParameterList_HEADER_GUARD_ #define _TelepathyQt_ProtocolParameterList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/client.h0000644000175100017520000000215312530423576021616 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_client_h_HEADER_GUARD_ #define _TelepathyQt_client_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #endif telepathy-qt-0.9.6.1/TelepathyQt/contact-manager.h0000644000175100017520000001632212530423576023406 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_contact_manager_h_HEADER_GUARD_ #define _TelepathyQt_contact_manager_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include #include #include #include #include namespace Tp { class Connection; class PendingContacts; class PendingOperation; class TP_QT_EXPORT ContactManager : public Object { Q_OBJECT Q_DISABLE_COPY(ContactManager) public: virtual ~ContactManager(); ConnectionPtr connection() const; Features supportedFeatures() const; ContactListState state() const; Contacts allKnownContacts() const; QStringList allKnownGroups() const; PendingOperation *addGroup(const QString &group); PendingOperation *removeGroup(const QString &group); Contacts groupContacts(const QString &group) const; PendingOperation *addContactsToGroup(const QString &group, const QList &contacts); PendingOperation *removeContactsFromGroup(const QString &group, const QList &contacts); bool canRequestPresenceSubscription() const; bool subscriptionRequestHasMessage() const; PendingOperation *requestPresenceSubscription( const QList &contacts, const QString &message = QString()); bool canRemovePresenceSubscription() const; bool subscriptionRemovalHasMessage() const; bool canRescindPresenceSubscriptionRequest() const; bool subscriptionRescindingHasMessage() const; PendingOperation *removePresenceSubscription( const QList &contacts, const QString &message = QString()); bool canAuthorizePresencePublication() const; bool publicationAuthorizationHasMessage() const; PendingOperation *authorizePresencePublication( const QList &contacts, const QString &message = QString()); bool publicationRejectionHasMessage() const; bool canRemovePresencePublication() const; bool publicationRemovalHasMessage() const; PendingOperation *removePresencePublication( const QList &contacts, const QString &message = QString()); PendingOperation *removeContacts( const QList &contacts, const QString &message = QString()); bool canBlockContacts() const; bool canReportAbuse() const; PendingOperation *blockContacts(const QList &contacts); PendingOperation *blockContactsAndReportAbuse(const QList &contacts); PendingOperation *unblockContacts(const QList &contacts); PendingContacts *contactsForHandles(const UIntList &handles, const Features &features = Features()); PendingContacts *contactsForHandles(const ReferencedHandles &handles, const Features &features = Features()); PendingContacts *contactsForHandles(const HandleIdentifierMap &handles, const Features &features = Features()); PendingContacts *contactsForIdentifiers(const QStringList &identifiers, const Features &features = Features()); PendingContacts *contactsForVCardAddresses(const QString &vcardField, const QStringList &vcardAddresses, const Features &features = Features()); PendingContacts *contactsForUris(const QStringList &uris, const Features &features = Features()); PendingContacts *upgradeContacts(const QList &contacts, const Features &features); void requestContactAvatars(const QList &contacts); PendingOperation *refreshContactInfo(const QList &contact); Q_SIGNALS: void stateChanged(Tp::ContactListState state); void presencePublicationRequested(const Tp::Contacts &contacts); void groupAdded(const QString &group); void groupRenamed(const QString &oldGroup, const QString &newGroup); void groupRemoved(const QString &group); void groupMembersChanged(const QString &group, const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details); void allKnownContactsChanged(const Tp::Contacts &contactsAdded, const Tp::Contacts &contactsRemoved, const Tp::Channel::GroupMemberChangeDetails &details); private Q_SLOTS: TP_QT_NO_EXPORT void onAliasesChanged(const Tp::AliasPairList &); TP_QT_NO_EXPORT void doRequestAvatars(); TP_QT_NO_EXPORT void onAvatarUpdated(uint, const QString &); TP_QT_NO_EXPORT void onAvatarRetrieved(uint, const QString &, const QByteArray &, const QString &); TP_QT_NO_EXPORT void onPresencesChanged(const Tp::SimpleContactPresences &); TP_QT_NO_EXPORT void onCapabilitiesChanged(const Tp::ContactCapabilitiesMap &); TP_QT_NO_EXPORT void onLocationUpdated(uint, const QVariantMap &); TP_QT_NO_EXPORT void onContactInfoChanged(uint, const Tp::ContactInfoFieldList &); TP_QT_NO_EXPORT void onClientTypesUpdated(uint, const QStringList &); TP_QT_NO_EXPORT void doRefreshInfo(); private: class PendingRefreshContactInfo; class Roster; friend class Channel; friend class Connection; friend class PendingContacts; friend class PendingRefreshContactInfo; friend class Roster; TP_QT_NO_EXPORT ContactManager(Connection *parent); TP_QT_NO_EXPORT ContactPtr lookupContactByHandle(uint handle); TP_QT_NO_EXPORT ContactPtr ensureContact(const ReferencedHandles &handle, const Features &features, const QVariantMap &attributes); TP_QT_NO_EXPORT ContactPtr ensureContact(uint bareHandle, const QString &id, const Features &features); TP_QT_NO_EXPORT static QString featureToInterface(const Feature &feature); TP_QT_NO_EXPORT void ensureTracking(const Feature &feature); TP_QT_NO_EXPORT PendingOperation *introspectRoster(); TP_QT_NO_EXPORT PendingOperation *introspectRosterGroups(); TP_QT_NO_EXPORT void resetRoster(); TP_QT_NO_EXPORT PendingOperation *refreshContactInfo(Contact *contact); struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/connection.cpp0000644000175100017520000026670112530423576023045 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2010 Collabora Ltd. * @copyright Copyright (C) 2008-2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "TelepathyQt/connection-internal.h" #include "TelepathyQt/_gen/cli-connection.moc.hpp" #include "TelepathyQt/_gen/cli-connection-body.hpp" #include "TelepathyQt/_gen/connection.moc.hpp" #include "TelepathyQt/_gen/connection-internal.moc.hpp" #include "TelepathyQt/_gen/connection-lowlevel.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT Connection::Private { Private(Connection *parent, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory); ~Private(); void init(); static void introspectMain(Private *self); void introspectMainFallbackStatus(); void introspectMainFallbackInterfaces(); void introspectMainFallbackSelfHandle(); void introspectCapabilities(); void introspectContactAttributeInterfaces(); static void introspectSelfContact(Private *self); static void introspectSimplePresence(Private *self); static void introspectRoster(Private *self); static void introspectRosterGroups(Private *self); static void introspectBalance(Private *self); static void introspectConnected(Private *self); void continueMainIntrospection(); void setCurrentStatus(uint status); void forceCurrentStatus(uint status); void setInterfaces(const QStringList &interfaces); // Should always be used instead of directly using baseclass invalidate() void invalidateResetCaps(const QString &errorName, const QString &errorMessage); struct HandleContext; // Public object Connection *parent; ConnectionLowlevelPtr lowlevel; // Factories ChannelFactoryConstPtr chanFactory; ContactFactoryConstPtr contactFactory; // Instance of generated interface class Client::ConnectionInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; // Optional interface proxies Client::ConnectionInterfaceSimplePresenceInterface *simplePresence; ReadinessHelper *readinessHelper; // Introspection QQueue introspectMainQueue; // FeatureCore // keep pendingStatus and pendingStatusReason until we emit statusChanged // so Connection::status() and Connection::statusReason() are consistent bool introspectingConnected; uint pendingStatus; uint pendingStatusReason; uint status; uint statusReason; ErrorDetails errorDetails; uint selfHandle; bool immortalHandles; ConnectionCapabilities caps; ContactManagerPtr contactManager; // FeatureSelfContact bool introspectingSelfContact; bool reintrospectSelfContactRequired; ContactPtr selfContact; QStringList contactAttributeInterfaces; // FeatureSimplePresence SimpleStatusSpecMap simplePresenceStatuses; uint maxPresenceStatusMessageLength; // FeatureAccountBalance CurrencyAmount accountBalance; // misc // (Bus connection name, service name) -> HandleContext static QHash, HandleContext *> handleContexts; static QMutex handleContextsLock; HandleContext *handleContext; QString cmName; QString protocolName; }; struct TP_QT_NO_EXPORT ConnectionLowlevel::Private { Private(Connection *conn) : conn(conn) { } WeakPtr conn; HandleIdentifierMap contactsIds; }; // Handle tracking struct TP_QT_NO_EXPORT Connection::Private::HandleContext { struct Type { QHash refcounts; QSet toRelease; uint requestsInFlight; bool releaseScheduled; Type() : requestsInFlight(0), releaseScheduled(false) { } }; HandleContext() : refcount(0) { } int refcount; QMutex lock; QHash types; }; Connection::Private::Private(Connection *parent, const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory) : parent(parent), lowlevel(ConnectionLowlevelPtr(new ConnectionLowlevel(parent))), chanFactory(chanFactory), contactFactory(contactFactory), baseInterface(new Client::ConnectionInterface(parent)), properties(parent->interface()), simplePresence(0), readinessHelper(parent->readinessHelper()), introspectingConnected(false), pendingStatus((uint) -1), pendingStatusReason(ConnectionStatusReasonNoneSpecified), status((uint) -1), statusReason(ConnectionStatusReasonNoneSpecified), selfHandle(0), immortalHandles(false), contactManager(ContactManagerPtr(new ContactManager(parent))), introspectingSelfContact(false), reintrospectSelfContactRequired(false), maxPresenceStatusMessageLength(0), handleContext(0) { accountBalance.amount = 0; accountBalance.scale = 0; Q_ASSERT(properties != 0); if (chanFactory->dbusConnection().name() != parent->dbusConnection().name()) { warning() << " The D-Bus connection in the channel factory is not the proxy connection"; } init(); ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << (uint) -1 << ConnectionStatusDisconnected << ConnectionStatusConnected, // makesSenseForStatuses Features(), // dependsOnFeatures (none) QStringList(), // dependsOnInterfaces (none) (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; ReadinessHelper::Introspectable introspectableSelfContact( QSet() << ConnectionStatusConnected, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectSelfContact, this); introspectables[FeatureSelfContact] = introspectableSelfContact; ReadinessHelper::Introspectable introspectableSimplePresence( QSet() << ConnectionStatusDisconnected << ConnectionStatusConnected, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectSimplePresence, this); introspectables[FeatureSimplePresence] = introspectableSimplePresence; ReadinessHelper::Introspectable introspectableRoster( QSet() << ConnectionStatusConnected, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectRoster, this); introspectables[FeatureRoster] = introspectableRoster; ReadinessHelper::Introspectable introspectableRosterGroups( QSet() << ConnectionStatusConnected, // makesSenseForStatuses Features() << FeatureRoster, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectRosterGroups, this); introspectables[FeatureRosterGroups] = introspectableRosterGroups; ReadinessHelper::Introspectable introspectableBalance( QSet() << ConnectionStatusConnected, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (core) QStringList() << TP_QT_IFACE_CONNECTION_INTERFACE_BALANCE, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectBalance, this); introspectables[FeatureAccountBalance] = introspectableBalance; ReadinessHelper::Introspectable introspectableConnected( QSet() << (uint) -1 << ConnectionStatusDisconnected << ConnectionStatusConnecting << ConnectionStatusConnected, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures (none) QStringList(), // dependsOnInterfaces (none) (ReadinessHelper::IntrospectFunc) &Private::introspectConnected, this); introspectables[FeatureConnected] = introspectableConnected; readinessHelper->addIntrospectables(introspectables); readinessHelper->setCurrentStatus(status); parent->connect(readinessHelper, SIGNAL(statusReady(uint)), SLOT(onStatusReady(uint))); // FIXME: QRegExp probably isn't the most efficient possible way to parse // this :-) QRegExp rx(QLatin1String("^") + TP_QT_CONNECTION_OBJECT_PATH_BASE + QLatin1String( "([_A-Za-z][_A-Za-z0-9]*)" // cap(1) is the CM "/([_A-Za-z][_A-Za-z0-9]*)" // cap(2) is the protocol "/([_A-Za-z][_A-Za-z0-9]*)" // account-specific part )); if (rx.exactMatch(parent->objectPath())) { cmName = rx.cap(1); protocolName = rx.cap(2); } else { warning() << "Connection object path is not spec-compliant, " "trying again with a different account-specific part check"; rx = QRegExp(QLatin1String("^") + TP_QT_CONNECTION_OBJECT_PATH_BASE + QLatin1String( "([_A-Za-z][_A-Za-z0-9]*)" // cap(1) is the CM "/([_A-Za-z][_A-Za-z0-9]*)" // cap(2) is the protocol "/([_A-Za-z0-9]*)" // account-specific part )); if (rx.exactMatch(parent->objectPath())) { cmName = rx.cap(1); protocolName = rx.cap(2); } else { warning() << "Not a valid Connection object path:" << parent->objectPath(); } } } Connection::Private::~Private() { contactManager->resetRoster(); // Clear selfContact so its handle will be released cleanly before the // handleContext selfContact.reset(); QMutexLocker locker(&handleContextsLock); // All handle contexts locked, so safe if (!--handleContext->refcount) { if (!immortalHandles) { debug() << "Destroying HandleContext"; foreach (uint handleType, handleContext->types.keys()) { HandleContext::Type type = handleContext->types[handleType]; if (!type.refcounts.empty()) { debug() << " Still had references to" << type.refcounts.size() << "handles, releasing now"; baseInterface->ReleaseHandles(handleType, type.refcounts.keys()); } if (!type.toRelease.empty()) { debug() << " Was going to release" << type.toRelease.size() << "handles, doing that now"; baseInterface->ReleaseHandles(handleType, type.toRelease.toList()); } } } handleContexts.remove(qMakePair(baseInterface->connection().name(), parent->objectPath())); delete handleContext; } else { Q_ASSERT(handleContext->refcount > 0); } } void Connection::Private::init() { debug() << "Connecting to ConnectionError()"; parent->connect(baseInterface, SIGNAL(ConnectionError(QString,QVariantMap)), SLOT(onConnectionError(QString,QVariantMap))); debug() << "Connecting to StatusChanged()"; parent->connect(baseInterface, SIGNAL(StatusChanged(uint,uint)), SLOT(onStatusChanged(uint,uint))); debug() << "Connecting to SelfHandleChanged()"; parent->connect(baseInterface, SIGNAL(SelfHandleChanged(uint)), SLOT(onSelfHandleChanged(uint))); QMutexLocker locker(&handleContextsLock); QString busConnectionName = baseInterface->connection().name(); if (handleContexts.contains(qMakePair(busConnectionName, parent->objectPath()))) { debug() << "Reusing existing HandleContext for" << parent->objectPath(); handleContext = handleContexts[ qMakePair(busConnectionName, parent->objectPath())]; } else { debug() << "Creating new HandleContext for" << parent->objectPath(); handleContext = new HandleContext; handleContexts[ qMakePair(busConnectionName, parent->objectPath())] = handleContext; } // All handle contexts locked, so safe ++handleContext->refcount; } void Connection::Private::introspectMain(Connection::Private *self) { debug() << "Calling Properties::GetAll(Connection)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll(TP_QT_IFACE_CONNECTION), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotMainProperties(QDBusPendingCallWatcher*))); } void Connection::Private::introspectMainFallbackStatus() { debug() << "Calling GetStatus()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(baseInterface->GetStatus(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotStatus(QDBusPendingCallWatcher*))); } void Connection::Private::introspectMainFallbackInterfaces() { debug() << "Calling GetInterfaces()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(baseInterface->GetInterfaces(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotInterfaces(QDBusPendingCallWatcher*))); } void Connection::Private::introspectMainFallbackSelfHandle() { debug() << "Calling GetSelfHandle()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(baseInterface->GetSelfHandle(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotSelfHandle(QDBusPendingCallWatcher*))); } void Connection::Private::introspectCapabilities() { debug() << "Retrieving capabilities"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( properties->Get( TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS, QLatin1String("RequestableChannelClasses")), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotCapabilities(QDBusPendingCallWatcher*))); } void Connection::Private::introspectContactAttributeInterfaces() { debug() << "Retrieving contact attribute interfaces"; QDBusPendingCall call = properties->Get( TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS, QLatin1String("ContactAttributeInterfaces")); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotContactAttributeInterfaces(QDBusPendingCallWatcher*))); } void Connection::Private::introspectSelfContact(Connection::Private *self) { debug() << "Building self contact"; Q_ASSERT(!self->introspectingSelfContact); self->introspectingSelfContact = true; self->reintrospectSelfContactRequired = false; PendingContacts *contacts = self->contactManager->contactsForHandles( UIntList() << self->selfHandle); self->parent->connect(contacts, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotSelfContact(Tp::PendingOperation*))); } void Connection::Private::introspectSimplePresence(Connection::Private *self) { Q_ASSERT(self->properties != 0); debug() << "Calling Properties::Get(" "Connection.I.SimplePresence.Statuses)"; QDBusPendingCall call = self->properties->GetAll( TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotSimpleStatuses(QDBusPendingCallWatcher*))); } void Connection::Private::introspectRoster(Connection::Private *self) { debug() << "Introspecting roster"; PendingOperation *op = self->contactManager->introspectRoster(); self->parent->connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onIntrospectRosterFinished(Tp::PendingOperation*))); } void Connection::Private::introspectRosterGroups(Connection::Private *self) { debug() << "Introspecting roster groups"; PendingOperation *op = self->contactManager->introspectRosterGroups(); self->parent->connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onIntrospectRosterGroupsFinished(Tp::PendingOperation*))); } void Connection::Private::introspectBalance(Connection::Private *self) { debug() << "Introspecting balance"; // we already checked if balance interface exists, so bypass requests // interface checking Client::ConnectionInterfaceBalanceInterface *iface = self->parent->interface(); debug() << "Connecting to Balance.BalanceChanged"; self->parent->connect(iface, SIGNAL(BalanceChanged(Tp::CurrencyAmount)), SLOT(onBalanceChanged(Tp::CurrencyAmount))); debug() << "Retrieving balance"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->Get( TP_QT_IFACE_CONNECTION_INTERFACE_BALANCE, QLatin1String("AccountBalance")), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotBalance(QDBusPendingCallWatcher*))); } void Connection::Private::introspectConnected(Connection::Private *self) { Q_ASSERT(!self->introspectingConnected); self->introspectingConnected = true; if (self->pendingStatus == ConnectionStatusConnected) { self->readinessHelper->setIntrospectCompleted(FeatureConnected, true); self->introspectingConnected = false; } } void Connection::Private::continueMainIntrospection() { if (!parent->isValid()) { debug() << parent << "stopping main introspection, as it has been invalidated"; return; } if (introspectMainQueue.isEmpty()) { readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { (this->*(introspectMainQueue.dequeue()))(); } } void Connection::Private::setCurrentStatus(uint status) { // ReadinessHelper waits for all in-flight introspection ops to finish for the current status // before proceeding to a new one. // // Therefore we don't need any safeguarding here to prevent finishing introspection when there // is a pending status change. However, we can speed up the process slightly by canceling any // pending introspect ops from our local introspection queue when it's waiting for us. introspectMainQueue.clear(); if (introspectingConnected) { // On the other hand, we have to finish the Connected introspection for now, as // ReadinessHelper would otherwise wait indefinitely for it to land debug() << "Finishing FeatureConnected for status" << this->status << "to allow ReadinessHelper to introspect new status" << status; readinessHelper->setIntrospectCompleted(FeatureConnected, true); introspectingConnected = false; } readinessHelper->setCurrentStatus(status); } void Connection::Private::forceCurrentStatus(uint status) { // only update the status if we did not get it from StatusChanged if (pendingStatus == (uint) -1) { debug() << "Got status:" << status; pendingStatus = status; // No need to re-run introspection as we just received the status. Let // the introspection continue normally but update readinessHelper with // the correct status. readinessHelper->forceCurrentStatus(status); } } void Connection::Private::setInterfaces(const QStringList &interfaces) { debug() << "Got interfaces:" << interfaces; parent->setInterfaces(interfaces); readinessHelper->setInterfaces(interfaces); } void Connection::Private::invalidateResetCaps(const QString &error, const QString &message) { caps.updateRequestableChannelClasses(RequestableChannelClassList()); parent->invalidate(error, message); } /** * \class ConnectionLowlevel * \ingroup clientconn * \headerfile TelepathyQt/connection-lowlevel.h * * \brief The ConnectionLowlevel class extends Connection with support to * low-level features. */ ConnectionLowlevel::ConnectionLowlevel(Connection *conn) : mPriv(new Private(conn)) { } ConnectionLowlevel::~ConnectionLowlevel() { delete mPriv; } bool ConnectionLowlevel::isValid() const { return !(connection().isNull()); } ConnectionPtr ConnectionLowlevel::connection() const { return ConnectionPtr(mPriv->conn); } Connection::PendingConnect::PendingConnect(const ConnectionPtr &connection, const Features &requestedFeatures) : PendingReady(connection, requestedFeatures) { if (!connection) { // Called when the connection had already been destroyed return; } QDBusPendingCall call = connection->baseInterface()->Connect(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); connect(connection.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), this, SLOT(onConnInvalidated(Tp::DBusProxy*,QString,QString))); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(onConnectReply(QDBusPendingCallWatcher*))); } void Connection::PendingConnect::onConnectReply(QDBusPendingCallWatcher *watcher) { ConnectionPtr connection = ConnectionPtr::qObjectCast(proxy()); if (watcher->isError()) { debug() << "Connect failed with" << watcher->error().name() << ": " << watcher->error().message(); setFinishedWithError(watcher->error()); connection->disconnect( this, SLOT(onConnInvalidated(Tp::DBusProxy*,QString,QString))); } else { if (connection->status() == ConnectionStatusConnected) { onStatusChanged(ConnectionStatusConnected); } else { // Wait for statusChanged()! Connect returning just means that the connection has // started to connect - spec quoted for truth: // // Connect () -> nothing // Request that the connection be established. This will be done asynchronously and // errors will be returned by emitting StatusChanged signals. // // Which should actually say progress and/or errors IMO, but anyway... connect(connection.data(), SIGNAL(statusChanged(Tp::ConnectionStatus)), SLOT(onStatusChanged(Tp::ConnectionStatus))); } } watcher->deleteLater(); } void Connection::PendingConnect::onStatusChanged(ConnectionStatus newStatus) { ConnectionPtr connection = ConnectionPtr::qObjectCast(proxy()); if (newStatus == ConnectionStatusDisconnected) { debug() << "Connection became disconnected while a PendingConnect was underway"; setFinishedWithError(connection->invalidationReason(), connection->invalidationMessage()); connection->disconnect(this, SLOT(onConnInvalidated(Tp::DBusProxy*,QString,QString))); return; } if (newStatus == ConnectionStatusConnected) { // OK, the connection is Connected now - finally, we'll get down to business connect(connection->becomeReady(requestedFeatures()), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onBecomeReadyReply(Tp::PendingOperation*))); } } void Connection::PendingConnect::onBecomeReadyReply(Tp::PendingOperation *op) { ConnectionPtr connection = ConnectionPtr::qObjectCast(proxy()); // We don't care about future disconnects even if they happen before we are destroyed // (which happens two mainloop iterations from now) connection->disconnect(this, SLOT(onStatusChanged(Tp::ConnectionStatus))); connection->disconnect(this, SLOT(onConnInvalidated(Tp::DBusProxy*,QString,QString))); if (op->isError()) { debug() << "Connection->becomeReady failed with" << op->errorName() << ": " << op->errorMessage(); setFinishedWithError(op->errorName(), op->errorMessage()); } else { debug() << "Connected"; if (connection->isValid()) { setFinished(); } else { debug() << " ... but the Connection was immediately invalidated!"; setFinishedWithError(connection->invalidationReason(), connection->invalidationMessage()); } } } void Connection::PendingConnect::onConnInvalidated(Tp::DBusProxy *proxy, const QString &error, const QString &message) { ConnectionPtr connection = ConnectionPtr::qObjectCast(this->proxy()); Q_ASSERT(proxy == connection.data()); if (!isFinished()) { debug() << "Unable to connect. Connection invalidated"; setFinishedWithError(error, message); } connection->disconnect(this, SLOT(onStatusChanged(Tp::ConnectionStatus))); } QHash, Connection::Private::HandleContext*> Connection::Private::handleContexts; QMutex Connection::Private::handleContextsLock; /** * \class Connection * \ingroup clientconn * \headerfile TelepathyQt/connection.h * * \brief The Connection class represents a Telepathy connection. * * This models a connection to a single user account on a communication service. * * Contacts, and server-stored lists (such as subscribed contacts, * block lists, or allow lists) on a service are all represented using the * ContactManager object on the connection, which is valid only for the lifetime * of the connection object. * * The remote object accessor functions on this object (status(), * statusReason(), and so on) don't make any D-Bus calls; instead, they return/use * values cached from a previous introspection run. The introspection process * populates their values in the most efficient way possible based on what the * service implements. * * To avoid unnecessary D-Bus traffic, some accessors only return valid * information after specific features have been enabled. * For instance, to retrieve the connection self contact, it is necessary to * enable the feature Connection::FeatureSelfContact. * See the individual methods descriptions for more details. * * Connection features can be enabled by constructing a ConnectionFactory and enabling * the desired features, and passing it to AccountManager, Account or ClientRegistrar * when creating them as appropriate. However, if a particular * feature is only ever used in a specific circumstance, such as an user opening * some settings dialog separate from the general view of the application, * features can be later enabled as needed by calling becomeReady() with the additional * features, and waiting for the resulting PendingOperation to finish. * * As an addition to accessors, signals are emitted to indicate that properties have changed, * for example statusChanged()(), selfContactChanged(), etc. * * \section conn_usage_sec Usage * * \subsection conn_create_sec Creating a connection object * * The easiest way to create connection objects is through Account. One can * just use the Account::connection method to get an account active connection. * * If you already know the object path, you can just call create(). * For example: * * \code ConnectionPtr conn = Connection::create(busName, objectPath); \endcode * * A ConnectionPtr object is returned, which will automatically keep * track of object lifetime. * * You can also provide a D-Bus connection as a QDBusConnection: * * \code * * ConnectionPtr conn = Connection::create(QDBusConnection::sessionBus(), * busName, objectPath); * * \endcode * * \subsection conn_ready_sec Making connection ready to use * * A Connection object needs to become ready before usage, meaning that the * introspection process finished and the object accessors can be used. * * To make the object ready, use becomeReady() and wait for the * PendingOperation::finished() signal to be emitted. * * \code * * class MyClass : public QObject * { * QOBJECT * * public: * MyClass(QObject *parent = 0); * ~MyClass() { } * * private Q_SLOTS: * void onConnectionReady(Tp::PendingOperation*); * * private: * ConnectionPtr conn; * }; * * MyClass::MyClass(const QString &busName, const QString &objectPath, * QObject *parent) * : QObject(parent) * conn(Connection::create(busName, objectPath)) * { * // connect and become ready * connect(conn->requestConnect(), * SIGNAL(finished(Tp::PendingOperation*)), * SLOT(onConnectionReady(Tp::PendingOperation*))); * } * * void MyClass::onConnectionReady(Tp::PendingOperation *op) * { * if (op->isError()) { * qWarning() << "Account cannot become ready:" << * op->errorName() << "-" << op->errorMessage(); * return; * } * * // Connection is now ready * } * * \endcode * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the * Connection object usable. * * Note that this feature must be enabled in order to use most Connection * methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature Connection::FeatureCore = Feature(QLatin1String(Connection::staticMetaObject.className()), 0, true); /** * Feature used to retrieve the connection self contact. * * See self contact specific methods' documentation for more details. * * \sa selfContact(), selfContactChanged() */ const Feature Connection::FeatureSelfContact = Feature(QLatin1String(Connection::staticMetaObject.className()), 1); /** * Feature used to retrieve/keep track of the connection self presence. * * See simple presence specific methods' documentation for more details. */ const Feature Connection::FeatureSimplePresence = Feature(QLatin1String(Connection::staticMetaObject.className()), 2); /** * Feature used to enable roster support on Connection::contactManager. * * See ContactManager roster specific methods' documentation for more details. * * \sa ContactManager::allKnownContacts() */ const Feature Connection::FeatureRoster = Feature(QLatin1String(Connection::staticMetaObject.className()), 4); /** * Feature used to enable roster groups support on Connection::contactManager. * * See ContactManager roster groups specific methods' documentation for more * details. * * \sa ContactManager::allKnownGroups() */ const Feature Connection::FeatureRosterGroups = Feature(QLatin1String(Connection::staticMetaObject.className()), 5); /** * Feature used to retrieve/keep track of the connection account balance. * * See account balance specific methods' documentation for more details. * * \sa accountBalance(), accountBalanceChanged() */ const Feature Connection::FeatureAccountBalance = Feature(QLatin1String(Connection::staticMetaObject.className()), 6); /** * When this feature is prepared, it means that the connection status() is * ConnectionStatusConnected. * * Note that if ConnectionFactory is being used with FeatureConnected set, Connection objects will * only be signalled by the library when the corresponding connection is in status() * ConnectionStatusConnected. */ const Feature Connection::FeatureConnected = Feature(QLatin1String(Connection::staticMetaObject.className()), 7); /** * Create a new connection object using QDBusConnection::sessionBus(). * * A warning is printed if the factories are not for QDBusConnection::sessionBus(). * * \param busName The connection well-known bus name (sometimes called a * "service name"). * \param objectPath The connection object path. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ConnectionPtr object pointing to the newly created Connection object. */ ConnectionPtr Connection::create(const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ConnectionPtr(new Connection(QDBusConnection::sessionBus(), busName, objectPath, channelFactory, contactFactory, Connection::FeatureCore)); } /** * Create a new connection object using the given \a bus. * * A warning is printed if the factories are not for \a bus. * * \param bus QDBusConnection to use. * \param busName The connection well-known bus name (sometimes called a * "service name"). * \param objectPath The connection object path. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \return A ConnectionPtr object pointing to the newly created Connection object. */ ConnectionPtr Connection::create(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory) { return ConnectionPtr(new Connection(bus, busName, objectPath, channelFactory, contactFactory, Connection::FeatureCore)); } /** * Construct a new connection object using the given \a bus. * * A warning is printed if the factories are not for \a bus. * * \param bus QDBusConnection to use. * \param busName The connection's well-known bus name (sometimes called a * "service name"). * \param objectPath The connection object path. * \param channelFactory The channel factory to use. * \param contactFactory The contact factory to use. * \param coreFeature The core feature of the Connection subclass. The corresponding introspectable * should depend on Connection::FeatureCore. */ Connection::Connection(const QDBusConnection &bus, const QString &busName, const QString &objectPath, const ChannelFactoryConstPtr &channelFactory, const ContactFactoryConstPtr &contactFactory, const Feature &coreFeature) : StatefulDBusProxy(bus, busName, objectPath, coreFeature), OptionalInterfaceFactory(this), mPriv(new Private(this, channelFactory, contactFactory)) { } /** * Class destructor. */ Connection::~Connection() { delete mPriv; } /** * Return the channel factory used by this connection. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the account would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ChannelFactory object. */ ChannelFactoryConstPtr Connection::channelFactory() const { return mPriv->chanFactory; } /** * Return the contact factory used by this connection. * * Only read access is provided. This allows constructing object instances and examining the object * construction settings, but not changing settings. Allowing changes would lead to tricky * situations where objects constructed at different times by the account would have unpredictably * different construction settings (eg. subclass). * * \return A read-only pointer to the ContactFactory object. */ ContactFactoryConstPtr Connection::contactFactory() const { return mPriv->contactFactory; } /** * Return the connection manager name of this connection. * * \return The connection manager name. */ QString Connection::cmName() const { return mPriv->cmName; } /** * Return the protocol name of this connection. * * \return The protocol name. */ QString Connection::protocolName() const { return mPriv->protocolName; } /** * Return the status of this connection. * * Change notification is via the statusChanged() signal. * * This method requires Connection::FeatureCore to be ready. * * \return The status as #ConnectionStatus. * \sa statusChanged(), statusReason(), errorDetails() */ ConnectionStatus Connection::status() const { return (ConnectionStatus) mPriv->status; } /** * Return the reason for this connection status. * * The validity and change rules are the same as for status(). * * The status reason should be only used as a fallback in error handling when the application * doesn't understand an error name given as the invalidation reason, which may in some cases be * domain/UI-specific. * * This method requires Connection::FeatureCore to be ready. * * \return The status reason as #ConnectionStatusReason. * \sa invalidated(), invalidationReason() */ ConnectionStatusReason Connection::statusReason() const { return (ConnectionStatusReason) mPriv->statusReason; } struct TP_QT_NO_EXPORT Connection::ErrorDetails::Private : public QSharedData { Private(const QVariantMap &details) : details(details) {} QVariantMap details; }; /** * \class Connection::ErrorDetails * \ingroup clientconn * \headerfile TelepathyQt/connection.h * * \brief The Connection::ErrorDetails class represents the details of a connection error. * * It contains detailed information about the reason for the connection going invalidated(). * * Some services may provide additional error information in the ConnectionError D-Bus signal, when * a Connection is disconnected / has become unusable. If the service didn't provide any, or has not * been invalidated yet, the instance will be invalid, as returned by isValid(). * * The information provided by invalidationReason() and this class should always be used in error * handling in preference to statusReason(). The status reason can be used as a fallback, however, * if the client doesn't understand what a particular value returned by invalidationReason() means, * as it may be domain-specific with some services. * * Connection::errorDetails() can be used to return the instance containing the details for * invalidating that connection after invalidated() has been emitted. */ /** * Constructs a new invalid ErrorDetails instance. */ Connection::ErrorDetails::ErrorDetails() : mPriv(0) { } /** * Construct a error details instance with the given details. The instance will indicate that * it is valid. */ Connection::ErrorDetails::ErrorDetails(const QVariantMap &details) : mPriv(new Private(details)) { } /** * Copy constructor. */ Connection::ErrorDetails::ErrorDetails(const ErrorDetails &other) : mPriv(other.mPriv) { } /** * Class destructor. */ Connection::ErrorDetails::~ErrorDetails() { } /** * Assigns all information (validity, details) from other to this. */ Connection::ErrorDetails &Connection::ErrorDetails::operator=( const ErrorDetails &other) { if (this->mPriv.constData() != other.mPriv.constData()) this->mPriv = other.mPriv; return *this; } /** * \fn bool Connection::ErrorDetails::isValid() const * * Return whether or not the details are valid (have actually been received from the service). * * \return \c true if valid, \c false otherwise. */ /** * \fn bool Connection::ErrorDetails::hasDebugMessage() const * * Return whether or not the details specify a debug message. * * If present, the debug message will likely be the same string as the one returned by * invalidationMessage(). * * The debug message is purely informational, offered for display for bug reporting purposes, and * should not be attempted to be parsed. * * \return \c true if debug message is present, \c false otherwise. * \sa debugMessage() */ /** * \fn QString Connection::ErrorDetails::debugMessage() const * * Return the debug message specified by the details, if any. * * If present, the debug message will likely be the same string as the one returned by * invalidationMessage(). * * The debug message is purely informational, offered for display for bug reporting purposes, and * should not be attempted to be parsed. * * \return The debug message, or an empty string if there is none. * \sa hasDebugMessage() */ /** * Return a map containing all details given in the low-level ConnectionError signal. * * This is useful for accessing domain-specific additional details. * * \return The details of the connection error as QVariantMap. */ QVariantMap Connection::ErrorDetails::allDetails() const { return isValid() ? mPriv->details : QVariantMap(); } /** * Return detailed information about the reason for the connection going invalidated(). * * Some services may provide additional error information in the ConnectionError D-Bus signal, when * a Connection is disconnected / has become unusable. If the service didn't provide any, or has not * been invalidated yet, an invalid instance is returned. * * The information provided by invalidationReason() and this method should always be used in error * handling in preference to statusReason(). The status reason can be used as a fallback, however, * if the client doesn't understand what a particular value returned by invalidationReason() means, * as it may be domain-specific with some services. * * \return The error details as a Connection::ErrorDetails object. * \sa status(), statusReason(), invalidationReason() */ const Connection::ErrorDetails &Connection::errorDetails() const { if (isValid()) { warning() << "Connection::errorDetails() used on" << objectPath() << "which is valid"; } return mPriv->errorDetails; } /** * Return the handle representing the user on this connection. * * Note that if the connection is not yet in the ConnectionStatusConnected state, * the value of this property may be zero. * * Change notification is via the selfHandleChanged() signal. * * This method requires Connection::FeatureCore to be ready. * * \return The user handle. * \sa selfHandleChanged(), selfContact() */ uint Connection::selfHandle() const { return mPriv->selfHandle; } /** * Return a dictionary of presence statuses valid for use in this connection. * * The value may have changed arbitrarily during the time the * Connection spends in status ConnectionStatusConnecting, * again staying fixed for the entire time in ConnectionStatusConnected. * * This method requires Connection::FeatureSimplePresence to be ready. * * \return The allowed statuses as a map from string identifiers to SimpleStatusSpec objects. */ SimpleStatusSpecMap ConnectionLowlevel::allowedPresenceStatuses() const { if (!isValid()) { warning() << "ConnectionLowlevel::selfHandle() " "called for a connection which is already destroyed"; return SimpleStatusSpecMap(); } ConnectionPtr conn(connection()); if (!conn->isReady(Connection::FeatureSimplePresence)) { warning() << "Trying to retrieve allowed presence statuses from connection, but " "simple presence is not supported or was not requested. " "Enable FeatureSimplePresence in this connection"; } return conn->mPriv->simplePresenceStatuses; } /** * Return the maximum length for a presence status message. * * The value may have changed arbitrarily during the time the * Connection spends in status ConnectionStatusConnecting, * again staying fixed for the entire time in ConnectionStatusConnected. * * This method requires Connection::FeatureSimplePresence to be ready. * * \return The maximum length, or 0 if there is no limit. */ uint ConnectionLowlevel::maxPresenceStatusMessageLength() const { if (!isValid()) { warning() << "ConnectionLowlevel::maxPresenceStatusMessageLength() " "called for a connection which is already destroyed"; return 0; } ConnectionPtr conn(connection()); if (!conn->isReady(Connection::FeatureSimplePresence)) { warning() << "Trying to retrieve max presence status message length connection, but " "simple presence is not supported or was not requested. " "Enable FeatureSimplePresence in this connection"; } return conn->mPriv->maxPresenceStatusMessageLength; } /** * Set the self presence status. * * This should generally only be called by an Account Manager. In typical usage, * Account::setRequestedPresence() should be used instead. * * \a status must be one of the allowed statuses returned by * allowedPresenceStatuses(). * * Note that clients SHOULD set the status message for the local user to the * empty string, unless the user has actually provided a specific message (i.e. * one that conveys more information than the ConnectionStatus). * * \param status The desired status. * \param statusMessage The desired status message. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa allowedPresenceStatuses() */ PendingOperation *ConnectionLowlevel::setSelfPresence(const QString &status, const QString &statusMessage) { if (!isValid()) { warning() << "ConnectionLowlevel::selfHandle() called for a connection which is already destroyed"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection already destroyed"), ConnectionPtr()); } ConnectionPtr conn(connection()); if (!conn->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE)) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Connection does not support SimplePresence"), conn); } Client::ConnectionInterfaceSimplePresenceInterface *simplePresenceInterface = conn->interface(); return new PendingVoid( simplePresenceInterface->SetPresence(status, statusMessage), conn); } /** * Return the object representing the user on this connection. * * Note that if the connection is not yet in the ConnectionStatusConnected state, the value of this * property may be null. * * Change notification is via the selfContactChanged() signal. * * This method requires Connection::FeatureSelfContact to be ready. * * \return A pointer to the Contact object, or a null ContactPtr if unknown. * \sa selfContactChanged(), selfHandle() */ ContactPtr Connection::selfContact() const { if (!isReady(FeatureSelfContact)) { warning() << "Connection::selfContact() used, but becomeReady(FeatureSelfContact) " "hasn't been completed!"; } return mPriv->selfContact; } /** * Return the user's balance on the account corresponding to this connection. * * A negative amount may be possible on some services, and indicates that the user * owes money to the service provider. * * Change notification is via the accountBalanceChanged() signal. * * This method requires Connection::FeatureAccountBalance to be ready. * * \return The account balance as #CurrencyAmount. * \sa accountBalanceChanged() */ CurrencyAmount Connection::accountBalance() const { if (!isReady(FeatureAccountBalance)) { warning() << "Connection::accountBalance() used before connection " "FeatureAccountBalance is ready"; } return mPriv->accountBalance; } /** * Return the capabilities for this connection. * * User interfaces can use this information to show or hide UI components. * * This property cannot change after the connection has gone to state * ConnectionStatusConnected, so there is no change notification. * * This method requires Connection::FeatureCore to be ready. * * @return The capabilities of this connection. */ ConnectionCapabilities Connection::capabilities() const { if (!isReady(Connection::FeatureCore)) { warning() << "Connection::capabilities() used before connection " "FeatureCore is ready"; } return mPriv->caps; } void Connection::onStatusReady(uint status) { Q_ASSERT(status == mPriv->pendingStatus); if (mPriv->status == status) { return; } mPriv->status = status; mPriv->statusReason = mPriv->pendingStatusReason; if (isValid()) { emit statusChanged((ConnectionStatus) mPriv->status); } else { debug() << this << " not emitting statusChanged because it has been invalidated"; } } void Connection::onStatusChanged(uint status, uint reason) { debug() << "StatusChanged from" << mPriv->pendingStatus << "to" << status << "with reason" << reason; if (mPriv->pendingStatus == status) { warning() << "New status was the same as the old status! Ignoring" "redundant StatusChanged"; return; } uint oldStatus = mPriv->pendingStatus; mPriv->pendingStatus = status; mPriv->pendingStatusReason = reason; switch (status) { case ConnectionStatusConnected: debug() << "Performing introspection for the Connected status"; mPriv->setCurrentStatus(status); break; case ConnectionStatusConnecting: mPriv->setCurrentStatus(status); break; case ConnectionStatusDisconnected: { QString errorName = ConnectionHelper::statusReasonToErrorName( (ConnectionStatusReason) reason, (ConnectionStatus) oldStatus); // TODO should we signal statusChanged to Disconnected here or just // invalidate? // Also none of the pendingOperations will finish. The // user should just consider them to fail as the connection // is invalid onStatusReady(ConnectionStatusDisconnected); mPriv->invalidateResetCaps(errorName, QString(QLatin1String("ConnectionStatusReason = %1")).arg(uint(reason))); } break; default: warning() << "Unknown connection status" << status; break; } } void Connection::onConnectionError(const QString &error, const QVariantMap &details) { debug().nospace() << "Connection(" << objectPath() << ") got ConnectionError(" << error << ") with " << details.size() << " details"; mPriv->errorDetails = details; mPriv->invalidateResetCaps(error, details.value(QLatin1String("debug-message")).toString()); } void Connection::gotMainProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QVariantMap props; if (!reply.isError()) { props = reply.value(); } else { warning().nospace() << "Properties::GetAll(Connection) failed with " << reply.error().name() << ": " << reply.error().message(); // let's try to fallback first before failing } uint status = static_cast(-1); if (props.contains(QLatin1String("Status")) && ((status = qdbus_cast(props[QLatin1String("Status")])) <= ConnectionStatusDisconnected)) { mPriv->forceCurrentStatus(status); } else { // only introspect status if we did not got it from StatusChanged if (mPriv->pendingStatus == (uint) -1) { mPriv->introspectMainQueue.enqueue( &Private::introspectMainFallbackStatus); } } if (props.contains(QLatin1String("Interfaces"))) { mPriv->setInterfaces(qdbus_cast( props[QLatin1String("Interfaces")])); } else { mPriv->introspectMainQueue.enqueue( &Private::introspectMainFallbackInterfaces); } if (props.contains(QLatin1String("SelfHandle"))) { mPriv->selfHandle = qdbus_cast( props[QLatin1String("SelfHandle")]); } else { mPriv->introspectMainQueue.enqueue( &Private::introspectMainFallbackSelfHandle); } if (props.contains(QLatin1String("HasImmortalHandles"))) { mPriv->immortalHandles = qdbus_cast(props[QLatin1String("HasImmortalHandles")]); } if (hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS)) { mPriv->introspectMainQueue.enqueue( &Private::introspectCapabilities); } if (hasInterface(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS)) { mPriv->introspectMainQueue.enqueue( &Private::introspectContactAttributeInterfaces); } mPriv->continueMainIntrospection(); watcher->deleteLater(); } void Connection::gotStatus(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { mPriv->forceCurrentStatus(reply.value()); mPriv->continueMainIntrospection(); } else { warning().nospace() << "GetStatus() failed with " << reply.error().name() << ": " << reply.error().message(); mPriv->invalidateResetCaps(reply.error().name(), reply.error().message()); } watcher->deleteLater(); } void Connection::gotInterfaces(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { mPriv->setInterfaces(reply.value()); } else { warning().nospace() << "GetInterfaces() failed with " << reply.error().name() << ": " << reply.error().message() << " - assuming no new interfaces"; // let's not fail if GetInterfaces fail } mPriv->continueMainIntrospection(); watcher->deleteLater(); } void Connection::gotSelfHandle(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { mPriv->selfHandle = reply.value(); debug() << "Got self handle:" << mPriv->selfHandle; mPriv->continueMainIntrospection(); } else { warning().nospace() << "GetSelfHandle() failed with " << reply.error().name() << ": " << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); } watcher->deleteLater(); } void Connection::gotCapabilities(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got capabilities"; mPriv->caps.updateRequestableChannelClasses( qdbus_cast(reply.value().variant())); } else { warning().nospace() << "Getting capabilities failed with " << reply.error().name() << ": " << reply.error().message(); // let's not fail if retrieving capabilities fail } mPriv->continueMainIntrospection(); watcher->deleteLater(); } void Connection::gotContactAttributeInterfaces(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got contact attribute interfaces"; mPriv->contactAttributeInterfaces = qdbus_cast(reply.value().variant()); } else { warning().nospace() << "Getting contact attribute interfaces failed with " << reply.error().name() << ": " << reply.error().message(); // let's not fail if retrieving contact attribute interfaces fail // TODO should we remove Contacts interface from interfaces? } mPriv->continueMainIntrospection(); watcher->deleteLater(); } void Connection::gotSimpleStatuses(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QVariantMap props = reply.value(); mPriv->simplePresenceStatuses = qdbus_cast( props[QLatin1String("Statuses")]); mPriv->maxPresenceStatusMessageLength = qdbus_cast( props[QLatin1String("MaximumStatusMessageLength")]); debug() << "Got" << mPriv->simplePresenceStatuses.size() << "simple presence statuses - max status message length is" << mPriv->maxPresenceStatusMessageLength; mPriv->readinessHelper->setIntrospectCompleted(FeatureSimplePresence, true); } else { warning().nospace() << "Getting simple presence statuses failed with " << reply.error().name() << ":" << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureSimplePresence, false, reply.error()); } watcher->deleteLater(); } void Connection::gotSelfContact(PendingOperation *op) { PendingContacts *pending = qobject_cast(op); if (pending->isValid()) { Q_ASSERT(pending->contacts().size() == 1); ContactPtr contact = pending->contacts()[0]; if (mPriv->selfContact != contact) { mPriv->selfContact = contact; if (!isReady(FeatureSelfContact)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureSelfContact, true); } emit selfContactChanged(); } } else { warning().nospace() << "Getting self contact failed with " << pending->errorName() << ":" << pending->errorMessage(); // check if the feature is already there, and for some reason introspectSelfContact // failed when called the second time if (!isReady(FeatureSelfContact)) { mPriv->readinessHelper->setIntrospectCompleted(FeatureSelfContact, false, op->errorName(), op->errorMessage()); } if (mPriv->selfContact) { mPriv->selfContact.reset(); emit selfContactChanged(); } } mPriv->introspectingSelfContact = false; if (mPriv->reintrospectSelfContactRequired) { mPriv->introspectSelfContact(mPriv); } } void Connection::onIntrospectRosterFinished(PendingOperation *op) { if (op->isError()) { warning().nospace() << "Introspecting roster failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureRoster, false, op->errorName(), op->errorMessage()); return; } debug() << "Introspecting roster finished"; mPriv->readinessHelper->setIntrospectCompleted(FeatureRoster, true); } void Connection::onIntrospectRosterGroupsFinished(PendingOperation *op) { if (op->isError()) { warning().nospace() << "Introspecting roster groups failed with " << op->errorName() << ": " << op->errorMessage(); mPriv->readinessHelper->setIntrospectCompleted(FeatureRosterGroups, false, op->errorName(), op->errorMessage()); return; } debug() << "Introspecting roster groups finished"; mPriv->readinessHelper->setIntrospectCompleted(FeatureRosterGroups, true); } void Connection::gotBalance(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { debug() << "Got balance"; mPriv->accountBalance = qdbus_cast(reply.value()); mPriv->readinessHelper->setIntrospectCompleted(FeatureAccountBalance, true); } else { warning().nospace() << "Getting balance failed with " << reply.error().name() << ":" << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureAccountBalance, false, reply.error().name(), reply.error().message()); } watcher->deleteLater(); } /** * Return the Client::ConnectionInterface interface proxy object for this connection. * This method is protected since the convenience methods provided by this * class should generally be used instead of calling D-Bus methods * directly. * * \return A pointer to the existing Client::ConnectionInterface object for this * Connection object. */ Client::ConnectionInterface *Connection::baseInterface() const { return mPriv->baseInterface; } /** * Same as \c createChannel(request, -1) */ PendingChannel *ConnectionLowlevel::createChannel(const QVariantMap &request) { return createChannel(request, -1); } /** * Asynchronously creates a channel satisfying the given request. * * In typical usage, only the Channel Dispatcher should call this. Ordinary * applications should use the Account::createChannel() family of methods * (which invoke the Channel Dispatcher's services). * * The request MUST contain the following keys: * org.freedesktop.Telepathy.Channel.ChannelType * org.freedesktop.Telepathy.Channel.TargetHandleType * * Upon completion, the reply to the request can be retrieved through the * returned PendingChannel object. The object also provides access to the * parameters with which the call was made and a signal to connect to get * notification of the request finishing processing. See the documentation * for that class for more info. * * \param request A dictionary containing the desirable properties. * \param timeout The D-Bus timeout in milliseconds used for the method call. * If timeout is -1, a default implementation-defined value that * is suitable for inter-process communications (generally, * 25 seconds) will be used. * \return A PendingChannel which will emit PendingChannel::finished * when the channel has been created, or an error occurred. * \sa PendingChannel, ensureChannel(), * Account::createChannel(), Account::createAndHandleChannel(), * Account::ensureChannel(), Account::ensureAndHandleChannel() */ PendingChannel *ConnectionLowlevel::createChannel(const QVariantMap &request, int timeout) { if (!isValid()) { return new PendingChannel(ConnectionPtr(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed")); } ConnectionPtr conn(connection()); if (conn->mPriv->pendingStatus != ConnectionStatusConnected) { warning() << "Calling createChannel with connection not yet connected"; return new PendingChannel(conn, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection not yet connected")); } if (!conn->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS)) { warning() << "Requests interface is not support by this connection"; return new PendingChannel(conn, TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Connection does not support Requests Interface")); } if (!request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))) { return new PendingChannel(conn, TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid 'request' argument")); } debug() << "Creating a Channel"; PendingChannel *channel = new PendingChannel(conn, request, true, timeout); return channel; } /** * Same as \c ensureChannel(request, -1) */ PendingChannel *ConnectionLowlevel::ensureChannel(const QVariantMap &request) { return ensureChannel(request, -1); } /** * Asynchronously ensures a channel exists satisfying the given request. * * In typical usage, only the Channel Dispatcher should call this. Ordinary * applications should use the Account::ensureChannel() family of methods * (which invoke the Channel Dispatcher's services). * * The request MUST contain the following keys: * org.freedesktop.Telepathy.Channel.ChannelType * org.freedesktop.Telepathy.Channel.TargetHandleType * * Upon completion, the reply to the request can be retrieved through the * returned PendingChannel object. The object also provides access to the * parameters with which the call was made and a signal to connect to get * notification of the request finishing processing. See the documentation * for that class for more info. * * \param request A dictionary containing the desirable properties. * \param timeout The D-Bus timeout in milliseconds used for the method call. * If timeout is -1, a default implementation-defined value that * is suitable for inter-process communications (generally, * 25 seconds) will be used. * \return A PendingChannel which will emit PendingChannel::finished * when the channel is ensured to exist, or an error occurred. * \sa PendingChannel, createChannel(), * Account::createChannel(), Account::createAndHandleChannel(), * Account::ensureChannel(), Account::ensureAndHandleChannel() */ PendingChannel *ConnectionLowlevel::ensureChannel(const QVariantMap &request, int timeout) { if (!isValid()) { return new PendingChannel(ConnectionPtr(), TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed")); } ConnectionPtr conn(connection()); if (conn->mPriv->pendingStatus != ConnectionStatusConnected) { warning() << "Calling ensureChannel with connection not yet connected"; return new PendingChannel(conn, TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Connection not yet connected")); } if (!conn->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS)) { warning() << "Requests interface is not support by this connection"; return new PendingChannel(conn, TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Connection does not support Requests Interface")); } if (!request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"))) { return new PendingChannel(conn, TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid 'request' argument")); } debug() << "Creating a Channel"; PendingChannel *channel = new PendingChannel(conn, request, false, timeout); return channel; } /** * Request handles of the given type for the given entities (contacts, * rooms, lists, etc.). * * Typically one doesn't need to request and use handles directly; instead, string identifiers * and/or Contact objects are used in most APIs. File a bug for APIs in which there is no * alternative to using handles. In particular however using low-level DBus interfaces for which * there is no corresponding high-level (or one is implementing that abstraction) functionality does * and will always require using bare handles. * * Upon completion, the reply to the request can be retrieved through the * returned PendingHandles object. The object also provides access to the * parameters with which the call was made and a signal to connect to to get * notification of the request finishing processing. See the documentation * for that class for more info. * * The returned PendingHandles object should be freed using * its QObject::deleteLater() method after it is no longer used. However, * all PendingHandles objects resulting from requests to a particular * Connection will be freed when the Connection itself is freed. Conversely, * this means that the PendingHandles object should not be used after the * Connection is destroyed. * * \param handleType Type for the handles to request, as specified in * #HandleType. * \param names Names of the entities to request handles for. * \return A PendingHandles which will emit PendingHandles::finished * when the handles have been requested, or an error occurred. * \sa PendingHandles */ PendingHandles *ConnectionLowlevel::requestHandles(HandleType handleType, const QStringList &names) { debug() << "Request for" << names.length() << "handles of type" << handleType; if (!isValid()) { return new PendingHandles(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed")); } ConnectionPtr conn(connection()); if (!hasImmortalHandles()) { Connection::Private::HandleContext *handleContext = conn->mPriv->handleContext; QMutexLocker locker(&handleContext->lock); handleContext->types[handleType].requestsInFlight++; } PendingHandles *pending = new PendingHandles(conn, handleType, names); return pending; } /** * Request a reference to the given handles. Handles not explicitly * requested (via requestHandles()) but eg. observed in a signal need to be * referenced to guarantee them staying valid. * * Typically one doesn't need to reference and use handles directly; instead, string identifiers * and/or Contact objects are used in most APIs. File a bug for APIs in which there is no * alternative to using handles. In particular however using low-level DBus interfaces for which * there is no corresponding high-level (or one is implementing that abstraction) functionality does * and will always require using bare handles. * * Upon completion, the reply to the operation can be retrieved through the * returned PendingHandles object. The object also provides access to the * parameters with which the call was made and a signal to connect to to get * notification of the request finishing processing. See the documentation * for that class for more info. * * The returned PendingHandles object should be freed using * its QObject::deleteLater() method after it is no longer used. However, * all PendingHandles objects resulting from requests to a particular * Connection will be freed when the Connection itself is freed. Conversely, * this means that the PendingHandles object should not be used after the * Connection is destroyed. * * \sa PendingHandles * * \param handleType Type of the handles given, as specified in #HandleType. * \param handles Handles to request a reference to. * \return A PendingHandles which will emit PendingHandles::finished * when the handles have been referenced, or an error occurred. */ PendingHandles *ConnectionLowlevel::referenceHandles(HandleType handleType, const UIntList &handles) { debug() << "Reference of" << handles.length() << "handles of type" << handleType; if (!isValid()) { return new PendingHandles(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed")); } ConnectionPtr conn(connection()); UIntList alreadyHeld; UIntList notYetHeld; if (!hasImmortalHandles()) { Connection::Private::HandleContext *handleContext = conn->mPriv->handleContext; QMutexLocker locker(&handleContext->lock); foreach (uint handle, handles) { if (handleContext->types[handleType].refcounts.contains(handle) || handleContext->types[handleType].toRelease.contains(handle)) { alreadyHeld.push_back(handle); } else { notYetHeld.push_back(handle); } } debug() << " Already holding" << alreadyHeld.size() << "of the handles -" << notYetHeld.size() << "to go"; } else { alreadyHeld = handles; } PendingHandles *pending = new PendingHandles(conn, handleType, handles, alreadyHeld, notYetHeld); return pending; } /** * Start an asynchronous request that the connection be connected. * * When using a full-fledged Telepathy setup with an Account Manager service, the Account methods * Account::setRequestedPresence() and Account::reconnect() must be used instead. * * The returned PendingOperation will finish successfully when the connection * has reached ConnectionStatusConnected and the requested \a features are all ready, or * finish with an error if a fatal error occurs during that process. * * \param requestedFeatures The features which should be enabled * \return A PendingReady which will emit PendingReady::finished * when the Connection has reached #ConnectionStatusConnected, and initial setup * for basic functionality, plus the given features, has succeeded or * failed. */ PendingReady *ConnectionLowlevel::requestConnect(const Features &requestedFeatures) { if (!isValid()) { Connection::PendingConnect *pending = new Connection::PendingConnect(ConnectionPtr(), requestedFeatures); pending->setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed")); return pending; } return new Connection::PendingConnect(connection(), requestedFeatures); } /** * Start an asynchronous request that the connection be disconnected. * The returned PendingOperation object will signal the success or failure * of this request; under normal circumstances, it can be expected to * succeed. * * When using a full-fledged Telepathy setup with an Account Manager service, * Account::setRequestedPresence() with Presence::offline() as an argument should generally be used * instead. * * \return A PendingOperation which will emit PendingOperation::finished * when the request has been made. */ PendingOperation *ConnectionLowlevel::requestDisconnect() { if (!isValid()) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed"), ConnectionPtr()); } ConnectionPtr conn(connection()); return new PendingVoid(conn->baseInterface()->Disconnect(), conn); } /** * Requests attributes for contacts. Optionally, the handles of the contacts * will be referenced automatically. Essentially, this method wraps * ConnectionInterfaceContactsInterface::GetContactAttributes(), integrating it * with the rest of the handle-referencing machinery. * * This is very low-level API the Contact/ContactManager API provides a higher level of abstraction * for the same functionality. * * Upon completion, the reply to the request can be retrieved through the * returned PendingContactAttributes object. The object also provides access to * the parameters with which the call was made and a signal to connect to to get * notification of the request finishing processing. See the documentation for * that class for more info. * * If the remote object doesn't support the Contacts interface (as signified by * the list returned by interfaces() not containing * #TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS), the returned * PendingContactAttributes instance will fail instantly with the error * #TP_QT_ERROR_NOT_IMPLEMENTED. * * Similarly, if the connection isn't both connected and ready * (status() == ConnectionStatusConnected && isReady(Connection::FeatureCore)), * the returned PendingContactAttributes instance will fail instantly with the * error #TP_QT_ERROR_NOT_AVAILABLE. * * This method requires Connection::FeatureCore to be ready. * * \sa PendingContactAttributes * * \param handles A list of handles of type HandleTypeContact * \param interfaces D-Bus interfaces for which the client requires information * \param reference Whether the handles should additionally be referenced. * \return A PendingContactAttributes which will emit PendingContactAttributes::fininshed * when the contact attributes have been retrieved, or an error occurred. */ PendingContactAttributes *ConnectionLowlevel::contactAttributes(const UIntList &handles, const QStringList &interfaces, bool reference) { debug() << "Request for attributes for" << handles.size() << "contacts"; if (!isValid()) { PendingContactAttributes *pending = new PendingContactAttributes(ConnectionPtr(), handles, interfaces, reference); pending->failImmediately(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection has been destroyed")); return pending; } ConnectionPtr conn(connection()); PendingContactAttributes *pending = new PendingContactAttributes(conn, handles, interfaces, reference); if (!conn->isReady(Connection::FeatureCore)) { warning() << "ConnectionLowlevel::contactAttributes() used when not ready"; pending->failImmediately(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection isn't ready")); return pending; } else if (conn->mPriv->pendingStatus != ConnectionStatusConnected) { warning() << "ConnectionLowlevel::contactAttributes() used with status" << conn->status() << "!= ConnectionStatusConnected"; pending->failImmediately(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("The connection isn't Connected")); return pending; } else if (!conn->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS)) { warning() << "ConnectionLowlevel::contactAttributes() used without the remote object supporting" << "the Contacts interface"; pending->failImmediately(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("The connection doesn't support the Contacts interface")); return pending; } if (!hasImmortalHandles()) { Connection::Private::HandleContext *handleContext = conn->mPriv->handleContext; QMutexLocker locker(&handleContext->lock); handleContext->types[HandleTypeContact].requestsInFlight++; } Client::ConnectionInterfaceContactsInterface *contactsInterface = conn->interface(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(contactsInterface->GetContactAttributes(handles, interfaces, reference)); pending->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(onCallFinished(QDBusPendingCallWatcher*))); return pending; } QStringList ConnectionLowlevel::contactAttributeInterfaces() const { if (!isValid()) { warning() << "ConnectionLowlevel::contactAttributeInterfaces() called for a destroyed Connection"; return QStringList(); } ConnectionPtr conn(connection()); if (conn->mPriv->pendingStatus != ConnectionStatusConnected) { warning() << "ConnectionLowlevel::contactAttributeInterfaces() used with status" << conn->status() << "!= ConnectionStatusConnected"; } else if (!conn->interfaces().contains(TP_QT_IFACE_CONNECTION_INTERFACE_CONTACTS)) { warning() << "ConnectionLowlevel::contactAttributeInterfaces() used without the remote object supporting" << "the Contacts interface"; } return conn->mPriv->contactAttributeInterfaces; } void ConnectionLowlevel::injectContactIds(const HandleIdentifierMap &contactIds) { if (!hasImmortalHandles()) { return; } for (HandleIdentifierMap::const_iterator i = contactIds.constBegin(); i != contactIds.constEnd(); ++i) { uint handle = i.key(); QString id = i.value(); if (!id.isEmpty()) { QString currentId = mPriv->contactsIds.value(handle); if (!currentId.isEmpty() && id != currentId) { warning() << "Trying to overwrite contact id from" << currentId << "to" << id << "for the same handle" << handle << ", ignoring"; } else { mPriv->contactsIds.insert(handle, id); } } } } void ConnectionLowlevel::injectContactId(uint handle, const QString &contactId) { HandleIdentifierMap contactIds; contactIds.insert(handle, contactId); injectContactIds(contactIds); } bool ConnectionLowlevel::hasContactId(uint handle) const { return mPriv->contactsIds.contains(handle); } QString ConnectionLowlevel::contactId(uint handle) const { return mPriv->contactsIds.value(handle); } /** * Return whether the handles last for the whole lifetime of the connection. * * \return \c true if handles are immortal, \c false otherwise. */ bool ConnectionLowlevel::hasImmortalHandles() const { return connection()->mPriv->immortalHandles; } /** * Return the ContactManager object for this connection. * * The contact manager is responsible for all contact handling in this * connection, including adding, removing, authorizing, etc. * * \return A pointer to the ContactManager object. */ ContactManagerPtr Connection::contactManager() const { return mPriv->contactManager; } ConnectionLowlevelPtr Connection::lowlevel() { return mPriv->lowlevel; } ConnectionLowlevelConstPtr Connection::lowlevel() const { return mPriv->lowlevel; } void Connection::refHandle(HandleType handleType, uint handle) { if (mPriv->immortalHandles) { return; } Private::HandleContext *handleContext = mPriv->handleContext; QMutexLocker locker(&handleContext->lock); if (handleContext->types[handleType].toRelease.contains(handle)) { handleContext->types[handleType].toRelease.remove(handle); } handleContext->types[handleType].refcounts[handle]++; } void Connection::unrefHandle(HandleType handleType, uint handle) { if (mPriv->immortalHandles) { return; } Private::HandleContext *handleContext = mPriv->handleContext; QMutexLocker locker(&handleContext->lock); Q_ASSERT(handleContext->types.contains(handleType)); Q_ASSERT(handleContext->types[handleType].refcounts.contains(handle)); if (!--handleContext->types[handleType].refcounts[handle]) { handleContext->types[handleType].refcounts.remove(handle); handleContext->types[handleType].toRelease.insert(handle); if (!handleContext->types[handleType].releaseScheduled) { if (!handleContext->types[handleType].requestsInFlight) { debug() << "Lost last reference to at least one handle of type" << handleType << "and no requests in flight for that type - scheduling a release sweep"; QMetaObject::invokeMethod(this, "doReleaseSweep", Qt::QueuedConnection, Q_ARG(uint, handleType)); handleContext->types[handleType].releaseScheduled = true; } } } } void Connection::doReleaseSweep(uint handleType) { if (mPriv->immortalHandles) { return; } Private::HandleContext *handleContext = mPriv->handleContext; QMutexLocker locker(&handleContext->lock); Q_ASSERT(handleContext->types.contains(handleType)); Q_ASSERT(handleContext->types[handleType].releaseScheduled); debug() << "Entering handle release sweep for type" << handleType; handleContext->types[handleType].releaseScheduled = false; if (handleContext->types[handleType].requestsInFlight > 0) { debug() << " There are requests in flight, deferring sweep to when they have been completed"; return; } if (handleContext->types[handleType].toRelease.isEmpty()) { debug() << " No handles to release - every one has been resurrected"; return; } debug() << " Releasing" << handleContext->types[handleType].toRelease.size() << "handles"; mPriv->baseInterface->ReleaseHandles(handleType, handleContext->types[handleType].toRelease.toList()); handleContext->types[handleType].toRelease.clear(); } void Connection::handleRequestLanded(HandleType handleType) { if (mPriv->immortalHandles) { return; } Private::HandleContext *handleContext = mPriv->handleContext; QMutexLocker locker(&handleContext->lock); Q_ASSERT(handleContext->types.contains(handleType)); Q_ASSERT(handleContext->types[handleType].requestsInFlight > 0); if (!--handleContext->types[handleType].requestsInFlight && !handleContext->types[handleType].toRelease.isEmpty() && !handleContext->types[handleType].releaseScheduled) { debug() << "All handle requests for type" << handleType << "landed and there are handles of that type to release - scheduling a release sweep"; QMetaObject::invokeMethod(this, "doReleaseSweep", Qt::QueuedConnection, Q_ARG(uint, handleType)); handleContext->types[handleType].releaseScheduled = true; } } void Connection::onSelfHandleChanged(uint handle) { if (mPriv->selfHandle == handle) { return; } if (mPriv->pendingStatus != ConnectionStatusConnected || !mPriv->selfHandle) { debug() << "Got a self handle change before we have the initial self handle, ignoring"; return; } debug() << "Connection self handle changed to" << handle; mPriv->selfHandle = handle; emit selfHandleChanged(handle); if (mPriv->introspectingSelfContact) { // We're currently introspecting the SelfContact feature, but have started building the // contact with the old handle, so we need to do it again with the new handle. debug() << "The self contact is being built, will rebuild with the new handle shortly"; mPriv->reintrospectSelfContactRequired = true; } else if (isReady(FeatureSelfContact)) { // We've already introspected the SelfContact feature, so we can reinvoke the introspection // logic directly to rebuild with the new handle. debug() << "Re-building self contact for handle" << handle; Private::introspectSelfContact(mPriv); } // If ReadinessHelper hasn't started introspecting SelfContact yet for the Connected state, we // don't need to do anything. When it does start the introspection, it will do so using the // correct handle. } void Connection::onBalanceChanged(const Tp::CurrencyAmount &value) { mPriv->accountBalance = value; emit accountBalanceChanged(value); } QString ConnectionHelper::statusReasonToErrorName(Tp::ConnectionStatusReason reason, Tp::ConnectionStatus oldStatus) { QString errorName; switch (reason) { case ConnectionStatusReasonNoneSpecified: errorName = TP_QT_ERROR_DISCONNECTED; break; case ConnectionStatusReasonRequested: errorName = TP_QT_ERROR_CANCELLED; break; case ConnectionStatusReasonNetworkError: errorName = TP_QT_ERROR_NETWORK_ERROR; break; case ConnectionStatusReasonAuthenticationFailed: errorName = TP_QT_ERROR_AUTHENTICATION_FAILED; break; case ConnectionStatusReasonEncryptionError: errorName = TP_QT_ERROR_ENCRYPTION_ERROR; break; case ConnectionStatusReasonNameInUse: if (oldStatus == ConnectionStatusConnected) { errorName = TP_QT_ERROR_CONNECTION_REPLACED; } else { errorName = TP_QT_ERROR_ALREADY_CONNECTED; } break; case ConnectionStatusReasonCertNotProvided: errorName = TP_QT_ERROR_CERT_NOT_PROVIDED; break; case ConnectionStatusReasonCertUntrusted: errorName = TP_QT_ERROR_CERT_UNTRUSTED; break; case ConnectionStatusReasonCertExpired: errorName = TP_QT_ERROR_CERT_EXPIRED; break; case ConnectionStatusReasonCertNotActivated: errorName = TP_QT_ERROR_CERT_NOT_ACTIVATED; break; case ConnectionStatusReasonCertHostnameMismatch: errorName = TP_QT_ERROR_CERT_HOSTNAME_MISMATCH; break; case ConnectionStatusReasonCertFingerprintMismatch: errorName = TP_QT_ERROR_CERT_FINGERPRINT_MISMATCH; break; case ConnectionStatusReasonCertSelfSigned: errorName = TP_QT_ERROR_CERT_SELF_SIGNED; break; case ConnectionStatusReasonCertOtherError: errorName = TP_QT_ERROR_CERT_INVALID; break; default: errorName = TP_QT_ERROR_DISCONNECTED; break; } return errorName; } /** * \fn void Connection::statusChanged(Tp::ConnectionStatus newStatus) * * Indicates that the connection's status has changed and that all previously requested features are * now ready to use for the new status. * * Legitimate uses for this signal, apart from waiting for a given connection status to be ready, * include updating an animation based on the connection being in ConnectionStatusConnecting, * ConnectionStatusConnected and ConnectionStatusDisconnected, and otherwise showing progress * indication to the user. It should, however, NEVER be used for error handling: * * This signal doesn't contain the status reason as an argument, because statusChanged() shouldn't * be used for error-handling. There are numerous cases in which a Connection may become unusable * without there being a status change to ConnectionStatusDisconnected. All of these cases, and * being disconnected itself, are signaled by invalidated() with appropriate error names. On the * other hand, the reason for the status going to ConnectionStatusConnecting or * ConnectionStatusConnected will always be ConnectionStatusReasonRequested, so signaling that would * be useless. * * The status reason, as returned by statusReason(), may however be used as a fallback for error * handling in slots connected to the invalidated() signal, if the client doesn't understand a * particular (likely domain-specific if so) error name given by invalidateReason(). * * \param newStatus The new status of the connection, as would be returned by status(). */ /** * \fn void Connection::selfHandleChanged(uint newHandle) * * Emitted when the value of selfHandle() changes. * * \param newHandle The new connection self handle. * \sa selfHandle() */ /** * \fn void Connection::selfContactChanged() * * Emitted when the value of selfContact() changes. * * \sa selfContact() */ /** * \fn void Connection::accountBalanceChanged(const Tp::CurrencyAmount &accountBalance) * * Emitted when the value of accountBalance() changes. * * \param accountBalance The new user's balance of this connection. * \sa accountBalance() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/connection.xml0000644000175100017520000000312612530423576023051 0ustar00kaffeinekaffeine00000000000000 Connection interfaces telepathy-qt-0.9.6.1/TelepathyQt/contact-search-channel.cpp0000644000175100017520000005561112530423576025206 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/contact-search-channel-internal.h" #include "TelepathyQt/_gen/contact-search-channel.moc.hpp" #include "TelepathyQt/_gen/contact-search-channel-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include #include #include namespace Tp { struct TP_QT_NO_EXPORT ContactSearchChannel::Private { Private(ContactSearchChannel *parent, const QVariantMap &immutableProperties); ~Private(); static void introspectMain(Private *self); void extractImmutableProperties(const QVariantMap &props); void processSignalsQueue(); void processSearchStateChangeQueue(); void processSearchResultQueue(); struct SearchStateChangeInfo { SearchStateChangeInfo(uint state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details) : state(state), errorName(errorName), details(details) { } uint state; QString errorName; ContactSearchChannel::SearchStateChangeDetails details; }; // Public object ContactSearchChannel *parent; QVariantMap immutableProperties; Client::ChannelTypeContactSearchInterface *contactSearchInterface; Client::DBus::PropertiesInterface *properties; ReadinessHelper *readinessHelper; // Introspection uint searchState; uint limit; QStringList availableSearchKeys; QString server; QQueue signalsQueue; QQueue searchStateChangeQueue; QQueue searchResultQueue; bool processingSignalsQueue; }; ContactSearchChannel::Private::Private(ContactSearchChannel *parent, const QVariantMap &immutableProperties) : parent(parent), immutableProperties(immutableProperties), contactSearchInterface(parent->interface()), properties(parent->interface()), readinessHelper(parent->readinessHelper()), searchState(ChannelContactSearchStateNotStarted), limit(0), processingSignalsQueue(false) { ReadinessHelper::Introspectables introspectables; ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features() << Channel::FeatureCore, // dependsOnFeatures (core) QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; readinessHelper->addIntrospectables(introspectables); } ContactSearchChannel::Private::~Private() { } void ContactSearchChannel::Private::introspectMain(ContactSearchChannel::Private *self) { /* we need to at least introspect SearchState here as it's not immutable */ self->parent->connect(self->contactSearchInterface, SIGNAL(SearchStateChanged(uint,QString,QVariantMap)), SLOT(onSearchStateChanged(uint,QString,QVariantMap))); self->parent->connect(self->contactSearchInterface, SIGNAL(SearchResultReceived(Tp::ContactSearchResultMap)), SLOT(onSearchResultReceived(Tp::ContactSearchResultMap))); QVariantMap props; bool needIntrospectMainProps = false; const unsigned numNames = 3; const static QString names[numNames] = { QLatin1String("Limit"), QLatin1String("AvailableSearchKeys"), QLatin1String("Server") }; const static QString qualifiedNames[numNames] = { TP_QT_IFACE_CHANNEL + QLatin1String(".Limit"), TP_QT_IFACE_CHANNEL + QLatin1String(".AvailableSearchKeys"), TP_QT_IFACE_CHANNEL + QLatin1String(".Server") }; for (unsigned i = 0; i < numNames; ++i) { const QString &qualified = qualifiedNames[i]; if (!self->immutableProperties.contains(qualified)) { needIntrospectMainProps = true; break; } props.insert(names[i], self->immutableProperties.value(qualified)); } if (needIntrospectMainProps) { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->GetAll( TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotProperties(QDBusPendingCallWatcher*))); } else { self->extractImmutableProperties(props); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( self->properties->Get( TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, QLatin1String("SearchState")), self->parent); self->parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotSearchState(QDBusPendingCallWatcher*))); } } void ContactSearchChannel::Private::extractImmutableProperties(const QVariantMap &props) { limit = qdbus_cast(props[QLatin1String("Limit")]); availableSearchKeys = qdbus_cast(props[QLatin1String("AvailableSearchKeys")]); server = qdbus_cast(props[QLatin1String("Server")]); } void ContactSearchChannel::Private::processSignalsQueue() { if (processingSignalsQueue || signalsQueue.isEmpty()) { return; } processingSignalsQueue = true; (this->*(signalsQueue.dequeue()))(); } void ContactSearchChannel::Private::processSearchStateChangeQueue() { const SearchStateChangeInfo &info = searchStateChangeQueue.dequeue(); searchState = info.state; emit parent->searchStateChanged( static_cast(info.state), info.errorName, SearchStateChangeDetails(info.details)); processingSignalsQueue = false; processSignalsQueue(); } void ContactSearchChannel::Private::processSearchResultQueue() { const ContactSearchResultMap &result = searchResultQueue.first(); if (!result.isEmpty()) { ContactManagerPtr manager = parent->connection()->contactManager(); PendingContacts *pendingContacts = manager->contactsForIdentifiers( result.keys()); parent->connect(pendingContacts, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotSearchResultContacts(Tp::PendingOperation*))); } else { searchResultQueue.dequeue(); emit parent->searchResultReceived(SearchResult()); processingSignalsQueue = false; processSignalsQueue(); } } struct TP_QT_NO_EXPORT ContactSearchChannel::SearchStateChangeDetails::Private : public QSharedData { Private(const QVariantMap &details) : details(details) {} QVariantMap details; }; ContactSearchChannel::SearchStateChangeDetails::SearchStateChangeDetails(const QVariantMap &details) : mPriv(new Private(details)) { } ContactSearchChannel::SearchStateChangeDetails::SearchStateChangeDetails() { } ContactSearchChannel::SearchStateChangeDetails::SearchStateChangeDetails( const ContactSearchChannel::SearchStateChangeDetails &other) : mPriv(other.mPriv) { } ContactSearchChannel::SearchStateChangeDetails::~SearchStateChangeDetails() { } ContactSearchChannel::SearchStateChangeDetails &ContactSearchChannel::SearchStateChangeDetails::operator=( const ContactSearchChannel::SearchStateChangeDetails &other) { this->mPriv = other.mPriv; return *this; } QVariantMap ContactSearchChannel::SearchStateChangeDetails::allDetails() const { return isValid() ? mPriv->details : QVariantMap(); } ContactSearchChannel::PendingSearch::PendingSearch(const ContactSearchChannelPtr &channel, QDBusPendingCall call) : PendingOperation(channel), mFinished(false) { connect(channel.data(), SIGNAL(searchStateChanged(Tp::ChannelContactSearchState, const QString &, const Tp::ContactSearchChannel::SearchStateChangeDetails &)), SLOT(onSearchStateChanged(Tp::ChannelContactSearchState, const QString &, const Tp::ContactSearchChannel::SearchStateChangeDetails &))); connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(watcherFinished(QDBusPendingCallWatcher*))); } void ContactSearchChannel::PendingSearch::onSearchStateChanged( Tp::ChannelContactSearchState state, const QString &errorName, const Tp::ContactSearchChannel::SearchStateChangeDetails &details) { if (state != ChannelContactSearchStateNotStarted) { if (mFinished) { if (mError.isValid()) { setFinishedWithError(mError); } else { setFinished(); } } mFinished = true; } } void ContactSearchChannel::PendingSearch::watcherFinished(QDBusPendingCallWatcher *watcher) { if (watcher->isError()) { if (mFinished) { setFinishedWithError(watcher->error()); } else { mError = watcher->error(); } } else { if (mFinished) { setFinished(); } } mFinished = true; watcher->deleteLater(); } /** * \class ContactSearchChannel * \ingroup clientchannel * \headerfile TelepathyQt/contact-search-channel.h * * \brief The ContactSearchChannel class represents a Telepathy channel of type * ContactSearch. */ /** * \class ContactSearchChannel::SearchStateChangeDetails * \ingroup wrappers * \headerfile TelepathyQt/contact-search-channel.h * * \brief The ContactSearchChannel::SearchStateChangeDetails class provides * a wrapper around the details for a search state change. * * \sa ContactSearchChannel */ /** * Feature representing the core that needs to become ready to make the * ContactSearchChannel object usable. * * Note that this feature must be enabled in order to use most * ContactSearchChannel methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature ContactSearchChannel::FeatureCore = Feature(QLatin1String(ContactSearchChannel::staticMetaObject.className()), 0); /** * Create a new ContactSearchChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A ContactSearchChannelPtr object pointing to the newly created * ContactSearchChannel object. */ ContactSearchChannelPtr ContactSearchChannel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return ContactSearchChannelPtr(new ContactSearchChannel(connection, objectPath, immutableProperties, ContactSearchChannel::FeatureCore)); } /** * Construct a new ContactSearchChannel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type, if any. The corresponding introspectable should * depend on ContactSearchChannel::FeatureCore. */ ContactSearchChannel::ContactSearchChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : Channel(connection, objectPath, immutableProperties, coreFeature), mPriv(new Private(this, immutableProperties)) { } /** * Class destructor. */ ContactSearchChannel::~ContactSearchChannel() { delete mPriv; } /** * Return the current search state of this channel. * * Change notification is via the searchStateChanged() signal. * * This method requires ContactSearchChannel::FeatureCore to be ready. * * \return The current search state as #ChannelContactSearchState. * \sa searchStateChanged() */ ChannelContactSearchState ContactSearchChannel::searchState() const { return static_cast(mPriv->searchState); } /** * Return the maximum number of results that should be returned by calling search(), where * 0 represents no limit. * * For example, if the terms passed to search() match Antonius, Bridget and Charles and * this property is 2, the search service will only return Antonius and Bridget. * * This method requires ContactSearchChannel::FeatureCore to be ready. * * \return The maximum number of results, or 0 if there is no limit. * \sa availableSearchKeys(), search() */ uint ContactSearchChannel::limit() const { return mPriv->limit; } /** * Return the set of search keys supported by this channel. * * Example values include [""] (for protocols where several address fields are implicitly searched) * or ["x-n-given", "x-n-family", "nickname", "email"] (for XMPP XEP-0055, without extensibility via * Data Forms). * * This method requires ContactSearchChannel::FeatureCore to be ready. * * \return The supported search keys. * \sa limit(), search() */ QStringList ContactSearchChannel::availableSearchKeys() const { return mPriv->availableSearchKeys; } /** * Return the DNS name of the server being searched by this channel. * * This method requires ContactSearchChannel::FeatureCore to be ready. * * \return For protocols which support searching for contacts on multiple servers with different DNS * names (like XMPP), the DNS name of the server being searched by this channel, e.g. * "characters.shakespeare.lit". Otherwise, an empty string. */ QString ContactSearchChannel::server() const { return mPriv->server; } /** * Send a request to start a search for contacts on this connection. * * This may only be called while the searchState() is #ChannelContactSearchStateNotStarted; * a valid search request will cause the searchStateChanged() signal to be emitted with the * state #ChannelContactSearchStateInProgress. * * Search results are signalled by searchResultReceived(). * * This method requires ContactSearchChannel::FeatureCore to be ready. * * This is an overloaded method for search(const ContactSearchMap &searchTerms). * * \param searchKey The search key. * \param searchTerm The search term. * \return A PendingOperation which will emit PendingOperation::finished * when the search has started. * \sa searchState(), searchStateChanged(), searchResultReceived() */ PendingOperation *ContactSearchChannel::search(const QString &searchKey, const QString &searchTerm) { ContactSearchMap searchTerms; searchTerms.insert(searchKey, searchTerm); return search(searchTerms); } /** * Send a request to start a search for contacts on this connection. * * This may only be called while the searchState() is #ChannelContactSearchStateNotStarted; * a valid search request will cause the searchStateChanged() signal to be emitted with the * state #ChannelContactSearchStateInProgress. * * Search results are signalled by searchResultReceived(). * * This method requires ContactSearchChannel::FeatureCore to be ready. * * \param terms The search terms. * \return A PendingOperation which will emit PendingOperation::finished * when the search has started. * \sa searchState(), searchStateChanged(), searchResultReceived() */ PendingOperation *ContactSearchChannel::search(const ContactSearchMap &terms) { if (!isReady(FeatureCore)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), ContactSearchChannelPtr(this)); } if (searchState() != ChannelContactSearchStateNotStarted) { warning() << "ContactSearchChannel::search called with " "searchState() != ChannelContactSearchStateNotStarted. Doing nothing"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Search already started"), ContactSearchChannelPtr(this)); } return new PendingSearch(ContactSearchChannelPtr(this), mPriv->contactSearchInterface->Search(terms)); } /** * Request that a search which searchState() is ChannelContactSearchStateMoreAvailable * move back to state ChannelContactSearchStateInProgress and continue listing up to limit() * more results. */ void ContactSearchChannel::continueSearch() { if (!isReady(FeatureCore)) { return; } if (searchState() != ChannelContactSearchStateMoreAvailable) { warning() << "ContactSearchChannel::continueSearch called with " "searchState() != ChannelContactSearchStateMoreAvailable. Doing nothing"; return; } (void) new PendingVoid(mPriv->contactSearchInterface->More(), ContactSearchChannelPtr(this)); } /** * Stop the current search. * * This may not be called while the searchState() is #ChannelContactSearchStateNotStarted. * If called while the searchState() is #ChannelContactSearchStateInProgress, * searchStateChanged() will be emitted, with the state #ChannelContactSearchStateFailed and * the error #TP_QT_ERROR_CANCELLED. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa searchState(), searchStateChanged() */ void ContactSearchChannel::stopSearch() { if (!isReady(FeatureCore)) { return; } if (searchState() != ChannelContactSearchStateInProgress && searchState() != ChannelContactSearchStateMoreAvailable) { warning() << "ContactSearchChannel::stopSearch called with " "searchState() != ChannelContactSearchStateInProgress or " "ChannelContactSearchStateMoreAvailable. Doing nothing"; return; } (void) new PendingVoid(mPriv->contactSearchInterface->Stop(), ContactSearchChannelPtr(this)); } void ContactSearchChannel::gotProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { QVariantMap props = reply.value(); mPriv->extractImmutableProperties(props); mPriv->searchState = qdbus_cast(props[QLatin1String("SearchState")]); debug() << "Got reply to Properties::GetAll(ContactSearchChannel)"; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { warning().nospace() << "Properties::GetAll(ContactSearchChannel) failed " "with " << reply.error().name() << ": " << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); } watcher->deleteLater(); } void ContactSearchChannel::gotSearchState(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError()) { mPriv->searchState = qdbus_cast(reply.value()); debug() << "Got reply to Properties::Get(SearchState)"; mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true); } else { warning().nospace() << "Properties::Get(SearchState) failed " "with " << reply.error().name() << ": " << reply.error().message(); mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error()); } watcher->deleteLater(); } void ContactSearchChannel::onSearchStateChanged(uint state, const QString &error, const QVariantMap &details) { mPriv->searchStateChangeQueue.enqueue(Private::SearchStateChangeInfo(state, error, details)); mPriv->signalsQueue.enqueue(&Private::processSearchStateChangeQueue); mPriv->processSignalsQueue(); } void ContactSearchChannel::onSearchResultReceived(const ContactSearchResultMap &result) { mPriv->searchResultQueue.enqueue(result); mPriv->signalsQueue.enqueue(&Private::processSearchResultQueue); mPriv->processSignalsQueue(); } void ContactSearchChannel::gotSearchResultContacts(PendingOperation *op) { PendingContacts *pc = qobject_cast(op); const ContactSearchResultMap &result = mPriv->searchResultQueue.dequeue(); if (!pc->isValid()) { warning().nospace() << "Getting search result contacts " "failed with " << pc->errorName() << ":" << pc->errorMessage() << ". Ignoring search result"; mPriv->processingSignalsQueue = false; mPriv->processSignalsQueue(); return; } const QList &contacts = pc->contacts(); Q_ASSERT(result.count() == contacts.count()); SearchResult ret; uint i = 0; for (ContactSearchResultMap::const_iterator it = result.constBegin(); it != result.constEnd(); ++it, ++i) { ret.insert(contacts.at(i), Contact::InfoFields(it.value())); } emit searchResultReceived(ret); mPriv->processingSignalsQueue = false; mPriv->processSignalsQueue(); } /** * \fn void ContactSearchChannel::searchStateChanged(Tp::ChannelContactSearchState state, * const QString &errorName, * const Tp::ContactSearchChannel::SearchStateChangeDetails &details) * * Emitted when the value of searchState() changes. * * \param state The new state. * \param errorName The name of the error if any. * \param details The details for the state change. * \sa searchState() */ /** * \fn void ContactSearchChannel::searchResultReceived( * const Tp::ContactSearchChannel::SearchResult &result) * * Emitted when a result for a search is received. It can be emitted multiple times * until the searchState() goes to #ChannelContactSearchStateCompleted or * #ChannelContactSearchStateFailed. * * \param result The search result. * \sa searchState() */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/GenericCapabilityFilter0000644000175100017520000000042512530423576024636 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_GenericCapabilityFilter_HEADER_GUARD_ #define _TelepathyQt_GenericCapabilityFilter_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/protocol-parameter.h0000644000175100017520000000546512530423576024170 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_protocol_parameter_h_HEADER_GUARD_ #define _TelepathyQt_protocol_parameter_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include #include #include #include #include #include namespace Tp { class TP_QT_EXPORT ProtocolParameter { public: ProtocolParameter(); ProtocolParameter(const ParamSpec &spec); ProtocolParameter(const QString &name, const QDBusSignature &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue = QVariant()); ProtocolParameter(const QString &name, const QString &dbusSignature, ConnMgrParamFlags flags, QVariant defaultValue = QVariant()); ProtocolParameter(const ProtocolParameter &other); ~ProtocolParameter(); bool isValid() const { return mPriv.constData() != 0; } ProtocolParameter &operator=(const ProtocolParameter &other); bool operator==(const ProtocolParameter &other) const; bool operator==(const QString &name) const; bool operator<(const ProtocolParameter &other) const; QString name() const; QDBusSignature dbusSignature() const; QVariant::Type type() const; QVariant defaultValue() const; bool isRequired() const; bool isSecret() const; bool isRequiredForRegistration() const; ParamSpec bareParameter() const; private: friend class ConnectionManager; friend class ProtocolInfo; struct Private; friend struct Private; QSharedDataPointer mPriv; }; typedef QList ProtocolParameterList; uint qHash(const ProtocolParameter ¶meter); } // Tp Q_DECLARE_METATYPE(Tp::ProtocolParameter); Q_DECLARE_METATYPE(Tp::ProtocolParameterList); #endif telepathy-qt-0.9.6.1/TelepathyQt/pending-operation.cpp0000644000175100017520000002747612530423576024334 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2009 Collabora Ltd. * @copyright Copyright (C) 2008-2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #define IN_TP_QT_HEADER #include "simple-pending-operations.h" #undef IN_TP_QT_HEADER #include "TelepathyQt/_gen/pending-operation.moc.hpp" #include "TelepathyQt/_gen/simple-pending-operations.moc.hpp" #include "TelepathyQt/debug-internal.h" #include #include #include namespace Tp { struct TP_QT_NO_EXPORT PendingOperation::Private { Private(const SharedPtr &object) : object(object), finished(false) { } SharedPtr object; QString errorName; QString errorMessage; bool finished; }; /** * \class PendingOperation * \headerfile TelepathyQt/pending-operation.h * * \brief The PendingOperation class is a base class for pending asynchronous * operations. * * This class represents an incomplete asynchronous operation, such as a * D-Bus method call. When the operation has finished, it emits * finished(). The slot or slots connected to the finished() signal may obtain * additional information from the pending operation. * * In simple cases, like a D-Bus method with no 'out' arguments or for which * all 'out' arguments are to be ignored (so the possible results are * success with no extra information, or failure with an error code), the * trivial subclass PendingVoid can be used. * * For pending operations that produce a result, another subclass of * PendingOperation can be used, with additional methods that provide that * result to the library user. * * After finished() is emitted, the PendingOperation is automatically * deleted using deleteLater(), so library users must not explicitly * delete this object. * * The design is loosely based on KDE's KJob. * * See \ref async_model */ /** * Construct a new PendingOperation object. * * \param object The object on which this pending operation takes place. */ PendingOperation::PendingOperation(const SharedPtr &object) : QObject(), mPriv(new Private(object)) { } /** * Class destructor. */ PendingOperation::~PendingOperation() { if (!mPriv->finished) { warning() << this << "still pending when it was deleted - finished will " "never be emitted"; } delete mPriv; } /** * Return the object on which this pending operation takes place. * * \return A pointer to a RefCounted object. */ SharedPtr PendingOperation::object() const { return mPriv->object; } void PendingOperation::emitFinished() { Q_ASSERT(mPriv->finished); emit finished(this); deleteLater(); } /** * Record that this pending operation has finished successfully, and * emit the finished() signal next time the event loop runs. */ void PendingOperation::setFinished() { if (mPriv->finished) { if (!mPriv->errorName.isEmpty()) { warning() << this << "trying to finish with success, but already" " failed with" << mPriv->errorName << ":" << mPriv->errorMessage; } else { warning() << this << "trying to finish with success, but already" " succeeded"; } return; } mPriv->finished = true; Q_ASSERT(isValid()); QTimer::singleShot(0, this, SLOT(emitFinished())); } /** * Record that this pending operation has finished with an error, and * emit the finished() signal next time the event loop runs. * * \param name The D-Bus error name, which must be non-empty. * \param message The debugging message. */ void PendingOperation::setFinishedWithError(const QString &name, const QString &message) { if (mPriv->finished) { if (mPriv->errorName.isEmpty()) { warning() << this << "trying to fail with" << name << "but already failed with" << errorName() << ":" << errorMessage(); } else { warning() << this << "trying to fail with" << name << "but already succeeded"; } return; } if (name.isEmpty()) { warning() << this << "should be given a non-empty error name"; mPriv->errorName = QLatin1String("org.freedesktop.Telepathy.Qt.ErrorHandlingError"); } else { mPriv->errorName = name; } mPriv->errorMessage = message; mPriv->finished = true; Q_ASSERT(isError()); QTimer::singleShot(0, this, SLOT(emitFinished())); } /** * Record that this pending operation has finished with an error, and * emit the finished() signal next time the event loop runs. * * \param error The error. * \sa finished() */ void PendingOperation::setFinishedWithError(const QDBusError &error) { setFinishedWithError(error.name(), error.message()); } /** * Return whether or not the request completed successfully. If the * request has not yet finished processing (isFinished() returns * \c false), this cannot yet be known, and \c false * will be returned. * * Equivalent to (isFinished() && !isError()). * * \return \c true if the request has finished processing and * has completed successfully, \c false otherwise. */ bool PendingOperation::isValid() const { return (mPriv->finished && mPriv->errorName.isEmpty()); } /** * Return whether or not the request has finished processing. * * The signal finished() is emitted when this changes from \c false * to true. * * Equivalent to (isValid() || isError()). * * \return \c true if the request has finished, \c false otherwise. * \sa finished() */ bool PendingOperation::isFinished() const { return mPriv->finished; } /** * Return whether or not the request resulted in an error. * * If the request has not yet finished processing (isFinished() returns * \c false), this cannot yet be known, and \c false * will be returned. * * Equivalent to (isFinished() && !isValid()). * * \return \c true if the request has finished processing and * has resulted in an error, \c false otherwise. */ bool PendingOperation::isError() const { return (mPriv->finished && !mPriv->errorName.isEmpty()); } /** * If isError() returns \c true, returns the D-Bus error with which * the operation failed. If the operation succeeded or has not yet * finished, returns an empty string. * * \return A D-Bus error name, or an empty string. */ QString PendingOperation::errorName() const { return mPriv->errorName; } /** * If isError() would return \c true, returns a debugging message associated * with the error, which may be an empty string. Otherwise, return an * empty string. * * \return A debugging message, or an empty string. */ QString PendingOperation::errorMessage() const { return mPriv->errorMessage; } /** * \fn void PendingOperation::finished(Tp::PendingOperation* operation) * * Emitted when the pending operation finishes, i.e. when isFinished() * changes from \c false to \c true. * * \param operation This operation object, from which further information * may be obtained. */ /** * \class PendingSuccess * \ingroup utils * \headerfile TelepathyQt/simple-pending-operations.h * * \brief The PendingSuccess class represents PendingOperation that is always * successful. */ /** * \class PendingFailure * \ingroup utils * \headerfile TelepathyQt/simple-pending-operations.h * * \brief The PendingFailure class represents a PendingOperation that always * fails with the error passed to the constructor. */ /** * \class PendingVoid * \ingroup utils * \headerfile TelepathyQt/simple-pending-operations.h * * \brief The PendingVoid class is a generic subclass of PendingOperation * representing a pending D-Bus method call that does not return anything * (or returns a result that is not interesting). */ /** * Construct a new PendingVoid object. * * \param object The object on which this pending operation takes place. * \param call A pending call as returned by the auto-generated low level * Telepathy API; if the method returns anything, the return * value(s) will be ignored. */ PendingVoid::PendingVoid(QDBusPendingCall call, const SharedPtr &object) : PendingOperation(object) { connect(new QDBusPendingCallWatcher(call), SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(watcherFinished(QDBusPendingCallWatcher*))); } void PendingVoid::watcherFinished(QDBusPendingCallWatcher *watcher) { if (watcher->isError()) { setFinishedWithError(watcher->error()); } else { setFinished(); } watcher->deleteLater(); } struct TP_QT_NO_EXPORT PendingComposite::Private { Private(bool failOnFirstError, uint nOperations) : failOnFirstError(failOnFirstError), error(false), nOperations(nOperations), nOperationsFinished(0) { } bool failOnFirstError; bool error; QString errorName; QString errorMessage; uint nOperations; uint nOperationsFinished; }; /** * \class PendingComposite * \ingroup utils * \headerfile TelepathyQt/simple-pending-operations.h * * \brief The PendingComposite class is a PendingOperation that can be used * to track multiple pending operations at once. */ PendingComposite::PendingComposite(const QList &operations, const SharedPtr &object) : PendingOperation(object), mPriv(new Private(true, operations.size())) { foreach (PendingOperation *operation, operations) { connect(operation, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onOperationFinished(Tp::PendingOperation*))); } } PendingComposite::PendingComposite(const QList &operations, bool failOnFirstError, const SharedPtr &object) : PendingOperation(object), mPriv(new Private(failOnFirstError, operations.size())) { foreach (PendingOperation *operation, operations) { connect(operation, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onOperationFinished(Tp::PendingOperation*))); } } PendingComposite::~PendingComposite() { delete mPriv; } void PendingComposite::onOperationFinished(Tp::PendingOperation *op) { if (op->isError()) { if (mPriv->failOnFirstError) { setFinishedWithError(op->errorName(), op->errorMessage()); return; } else if (!mPriv->error) { /* only save the first error that will be used on setFinishedWithError when all * pending operations finish */ mPriv->error = true; mPriv->errorName = op->errorName(); mPriv->errorMessage = op->errorMessage(); } } if (++mPriv->nOperationsFinished == mPriv->nOperations) { if (!mPriv->error) { setFinished(); } else { setFinishedWithError(mPriv->errorName, mPriv->errorMessage); } } } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/room-list-channel.h0000644000175100017520000000333012530423576023671 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @copyright Copyright (C) 2009 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_room_list_channel_h_HEADER_GUARD_ #define _TelepathyQt_room_list_channel_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include namespace Tp { class TP_QT_EXPORT RoomListChannel : public Channel { Q_OBJECT Q_DISABLE_COPY(RoomListChannel) public: static RoomListChannelPtr create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties); virtual ~RoomListChannel(); protected: RoomListChannel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature = Channel::FeatureCore); private: struct Private; friend struct Private; Private *mPriv; }; } // Tp #endif telepathy-qt-0.9.6.1/TelepathyQt/captcha.cpp0000644000175100017520000001022212530423576022272 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include namespace Tp { struct TP_QT_NO_EXPORT Captcha::Private : public QSharedData { Private(); Private(const Captcha::Private &other); ~Private(); QString mimeType; QString label; QByteArray captchaData; CaptchaAuthentication::ChallengeType type; uint id; }; Captcha::Private::Private() : type(CaptchaAuthentication::NoChallenge), id(0) { } Captcha::Private::Private(const Private &other) : QSharedData(other), mimeType(other.mimeType), label(other.label), captchaData(other.captchaData), type(other.type), id(other.id) { } Captcha::Private::~Private() { } /** * \class Captcha * \ingroup client * \headerfile TelepathyQt/captcha.h * * \brief The Captcha class represents a Captcha ready to be answered. * * It exposes all the parameters needed for a handler to present the user with a captcha. * * Please note this class is meant to be read-only. It is usually created by PendingCaptchas * once a Captcha request operation succeeds. * * Please note that this class is implicitly shared. */ /** * Default constructor. */ Captcha::Captcha() { } /** * Copy constructor. */ Captcha::Captcha(const Captcha &other) : mPriv(other.mPriv) { } Captcha::Captcha(const QString &mimeType, const QString &label, const QByteArray &data, CaptchaAuthentication::ChallengeType type, uint id) : mPriv(new Captcha::Private) { mPriv->mimeType = mimeType; mPriv->label = label; mPriv->captchaData = data; mPriv->type = type; mPriv->id = id; } /** * Class destructor. */ Captcha::~Captcha() { } Captcha &Captcha::operator=(const Captcha &rhs) { if (this==&rhs) { //Protect against self-assignment return *this; } mPriv = rhs.mPriv; return *this; } /** * Return the mimetype of the captcha. * * \return The captcha's mimetype. * \sa data() */ QString Captcha::mimeType() const { if (!isValid()) { return QString(); } return mPriv->mimeType; } /** * Return the label of the captcha. For some captcha types, such as * CaptchaAuthentication::TextQuestionChallenge, the label is also * the challenge the user has to answer * * \return The captcha's label. * \sa data() * type() */ QString Captcha::label() const { if (!isValid()) { return QString(); } return mPriv->label; } /** * Return the raw data of the captcha. The handler can check its type and * metatype to know how to parse the blob. * * \return The captcha's data. * \sa mimeType(), type() */ QByteArray Captcha::data() const { if (!isValid()) { return QByteArray(); } return mPriv->captchaData; } /** * Return the type of the captcha. * * \return The captcha's type. * \sa data() */ CaptchaAuthentication::ChallengeType Captcha::type() const { if (!isValid()) { return CaptchaAuthentication::NoChallenge; } return mPriv->type; } /** * Return the id of the captcha. This parameter should be used to identify * the captcha when answering its challenge. * * \return The captcha's id. * \sa CaptchaAuthentication::answer() */ uint Captcha::id() const { if (!isValid()) { return 0; } return mPriv->id; } } telepathy-qt-0.9.6.1/TelepathyQt/and-filter.dox0000644000175100017520000000235212530423576022731 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \class Tp::AndFilter * \ingroup utils * \headerfile TelepathyQt/and-filter.h * * \brief The AndFilter class provides a generic filter object to be used * in conjunction of other filters. * * The AndFilter will match if all of its given list of filters matches * their criteria. */ telepathy-qt-0.9.6.1/TelepathyQt/utils.cpp0000644000175100017520000001424212530423576022035 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/key-file.h" #include #include /** * \defgroup utility functions */ namespace Tp { static inline bool isBad(char c, bool isFirst) { return ((c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9' || isFirst)); } /** * Escape an arbitrary string so it follows the rules for a C identifier, * and hence an object path component, interface element component, * bus name component or member name in D-Bus. * * This is a reversible encoding, so it preserves distinctness. * * The escaping consists of replacing all non-alphanumerics, and the first * character if it's a digit, with an underscore and two lower-case hex * digits: * * "0123abc_xyz\x01\xff" -> _30123abc_5fxyz_01_ff * * i.e. similar to URI encoding, but with _ taking the role of %, and a * smaller allowed set. As a special case, "" is escaped to "_" (just for * completeness, really). * * \param string The string to be escaped. * \return the escaped string. */ QString escapeAsIdentifier(const QString &string) { bool bad = false; QByteArray op; QByteArray utf8; const char *name; const char *ptr, *firstOk; /* This function is copy/pasted from tp_escape_as_identified from * telepathy-glib. */ /* fast path for empty name */ if (string.isEmpty()) { return QString::fromLatin1("_"); } utf8 = string.toUtf8(); name = utf8.constData(); for (ptr = name; *ptr; ptr++) { if (isBad(*ptr, ptr == name)) { bad = true; break; } } /* fast path if it's clean */ if (!bad) { return string; } /* If strictly less than ptr, firstOk is the first uncopied safe character. */ firstOk = name; for (ptr = name; *ptr; ptr++) { if (isBad(*ptr, ptr == name)) { char buf[4] = { 0, }; /* copy preceding safe characters if any */ if (firstOk < ptr) { op.append(firstOk, ptr - firstOk); } /* escape the unsafe character */ qsnprintf(buf, sizeof (buf), "_%02x", (unsigned char)(*ptr)); op.append(buf); /* restart after it */ firstOk = ptr + 1; } } /* copy trailing safe characters if any */ if (firstOk < ptr) { op.append(firstOk, ptr - firstOk); } return QString::fromLatin1(op.constData()); } bool checkValidProtocolName(const QString &protocolName) { if (protocolName.isEmpty()) { return false; } if (!protocolName[0].isLetter()) { return false; } int length = protocolName.length(); if (length <= 1) { return true; } QChar ch; for (int i = 1; i < length; ++i) { ch = protocolName[i]; if (!ch.isLetterOrNumber() && ch != QLatin1Char('-')) { return false; } } return true; } QVariant::Type variantTypeFromDBusSignature(const QString &signature) { QVariant::Type type; if (signature == QLatin1String("b")) { type = QVariant::Bool; } else if (signature == QLatin1String("n") || signature == QLatin1String("i")) { type = QVariant::Int; } else if (signature == QLatin1String("q") || signature == QLatin1String("u")) { type = QVariant::UInt; } else if (signature == QLatin1String("x")) { type = QVariant::LongLong; } else if (signature == QLatin1String("t")) { type = QVariant::ULongLong; } else if (signature == QLatin1String("d")) { type = QVariant::Double; } else if (signature == QLatin1String("as")) { type = QVariant::StringList; } else if (signature == QLatin1String("s") || signature == QLatin1String("o")) { type = QVariant::String; } else { type = QVariant::Invalid; } return type; } QVariant parseValueWithDBusSignature(const QString &value, const QString &dbusSignature) { QVariant::Type type = variantTypeFromDBusSignature(dbusSignature); if (type == QVariant::Invalid) { return QVariant(type); } switch (type) { case QVariant::Bool: { if (value.toLower() == QLatin1String("true") || value == QLatin1String("1")) { return QVariant(true); } else { return QVariant(false); } break; } case QVariant::Int: return QVariant(value.toInt()); case QVariant::UInt: return QVariant(value.toUInt()); case QVariant::LongLong: return QVariant(value.toLongLong()); case QVariant::ULongLong: return QVariant(value.toULongLong()); case QVariant::Double: return QVariant(value.toDouble()); case QVariant::StringList: { QStringList list; QByteArray rawValue = value.toLatin1(); if (KeyFile::unescapeStringList(rawValue, 0, rawValue.size(), list)) { return QVariant(list); } else { return QVariant(QVariant::Invalid); } } default: break; } return QVariant(value); } } // Tp telepathy-qt-0.9.6.1/TelepathyQt/BaseProtocolPresenceInterface0000644000175100017520000000042512530423576026014 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_BaseProtocolPresenceInterface_HEADER_GUARD_ #define _TelepathyQt_BaseProtocolPresenceInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ConnectionInterfaceRequestsInterface0000644000175100017520000000044012530423576027404 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ConnectionInterfaceRequestsInterface_HEADER_GUARD_ #define _TelepathyQt_ConnectionInterfaceRequestsInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeStreamTubeInterface0000644000175100017520000000042112530423576026135 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeStreamTubeInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeStreamTubeInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/CapabilitiesBase0000644000175100017520000000037712530423576023304 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_CapabilitiesBase_HEADER_GUARD_ #define _TelepathyQt_CapabilitiesBase_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/PendingReady0000644000175100017520000000036312530423576022464 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_PendingReady_HEADER_GUARD_ #define _TelepathyQt_PendingReady_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/properties.cpp0000644000175100017520000000206412530423576023070 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/_gen/cli-properties-body.hpp" #include "TelepathyQt/_gen/cli-properties.moc.hpp" telepathy-qt-0.9.6.1/TelepathyQt/properties.xml0000644000175100017520000000037512530423576023111 0ustar00kaffeinekaffeine00000000000000 The Telepathy properties interface telepathy-qt-0.9.6.1/TelepathyQt/ProtocolInfo0000644000175100017520000000036312530423576022530 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolInfo_HEADER_GUARD_ #define _TelepathyQt_ProtocolInfo_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/channel.cpp0000644000175100017520000037644212530423576022322 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2008 Collabora Ltd. * @copyright Copyright (C) 2008 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "TelepathyQt/channel-internal.h" #include "TelepathyQt/_gen/cli-channel-body.hpp" #include "TelepathyQt/_gen/cli-channel.moc.hpp" #include "TelepathyQt/_gen/channel.moc.hpp" #include "TelepathyQt/_gen/channel-internal.moc.hpp" #include "TelepathyQt/debug-internal.h" #include "TelepathyQt/future-internal.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Tp { using TpFuture::Client::ChannelInterfaceMergeableConferenceInterface; using TpFuture::Client::ChannelInterfaceSplittableInterface; struct TP_QT_NO_EXPORT Channel::Private { Private(Channel *parent, const ConnectionPtr &connection, const QVariantMap &immutableProperties); ~Private(); static void introspectMain(Private *self); void introspectMainProperties(); void introspectMainFallbackChannelType(); void introspectMainFallbackHandle(); void introspectMainFallbackInterfaces(); void introspectGroup(); void introspectGroupFallbackFlags(); void introspectGroupFallbackMembers(); void introspectGroupFallbackLocalPendingWithInfo(); void introspectGroupFallbackSelfHandle(); void introspectConference(); static void introspectConferenceInitialInviteeContacts(Private *self); void continueIntrospection(); void extractMainProps(const QVariantMap &props); void extract0176GroupProps(const QVariantMap &props); void nowHaveInterfaces(); void nowHaveInitialMembers(); bool setGroupFlags(uint groupFlags); void buildContacts(); void doMembersChangedDetailed(const UIntList &, const UIntList &, const UIntList &, const UIntList &, const QVariantMap &); void processMembersChanged(); void updateContacts(const QList &contacts = QList()); bool fakeGroupInterfaceIfNeeded(); void setReady(); QString groupMemberChangeDetailsTelepathyError( const GroupMemberChangeDetails &details); inline ChannelInterfaceMergeableConferenceInterface *mergeableConferenceInterface( InterfaceSupportedChecking check = CheckInterfaceSupported) const { return parent->optionalInterface(check); } inline ChannelInterfaceSplittableInterface *splittableInterface( InterfaceSupportedChecking check = CheckInterfaceSupported) const { return parent->optionalInterface(check); } void processConferenceChannelRemoved(); struct GroupMembersChangedInfo; struct ConferenceChannelRemovedInfo; // Public object Channel *parent; // Instance of generated interface class Client::ChannelInterface *baseInterface; // Mandatory properties interface proxy Client::DBus::PropertiesInterface *properties; // Owning connection - it can be a SharedPtr as Connection does not cache // channels ConnectionPtr connection; QVariantMap immutableProperties; // Optional interface proxies Client::ChannelInterfaceGroupInterface *group; Client::ChannelInterfaceConferenceInterface *conference; ReadinessHelper *readinessHelper; // Introspection QQueue introspectQueue; // Introspected properties // Main interface QString channelType; uint targetHandleType; uint targetHandle; QString targetId; ContactPtr targetContact; bool requested; uint initiatorHandle; ContactPtr initiatorContact; // Group flags uint groupFlags; bool usingMembersChangedDetailed; // Group member introspection bool groupHaveMembers; bool buildingContacts; // Queue of received MCD signals to process QQueue groupMembersChangedQueue; GroupMembersChangedInfo *currentGroupMembersChangedInfo; // Pending from the MCD signal currently processed, but contacts not yet built QSet pendingGroupMembers; QSet pendingGroupLocalPendingMembers; QSet pendingGroupRemotePendingMembers; UIntList groupMembersToRemove; UIntList groupLocalPendingMembersToRemove; UIntList groupRemotePendingMembersToRemove; // Initial members UIntList groupInitialMembers; LocalPendingInfoList groupInitialLP; UIntList groupInitialRP; // Current members QHash groupContacts; QHash groupLocalPendingContacts; QHash groupRemotePendingContacts; // Stored change info QHash groupLocalPendingContactsChangeInfo; GroupMemberChangeDetails groupSelfContactRemoveInfo; // Group handle owners bool groupAreHandleOwnersAvailable; HandleOwnerMap groupHandleOwners; // Group self identity bool pendingRetrieveGroupSelfContact; bool groupIsSelfHandleTracked; uint groupSelfHandle; ContactPtr groupSelfContact; // Conference bool introspectingConference; QHash conferenceChannels; QHash conferenceInitialChannels; QString conferenceInvitationMessage; QHash conferenceOriginalChannels; UIntList conferenceInitialInviteeHandles; Contacts conferenceInitialInviteeContacts; QQueue conferenceChannelRemovedQueue; bool buildingConferenceChannelRemovedActorContact; static const QString keyActor; }; struct TP_QT_NO_EXPORT Channel::Private::GroupMembersChangedInfo { GroupMembersChangedInfo(const UIntList &added, const UIntList &removed, const UIntList &localPending, const UIntList &remotePending, const QVariantMap &details) : added(added), removed(removed), localPending(localPending), remotePending(remotePending), details(details), // TODO most of these probably should be removed once the rest of the code using them is sanitized actor(qdbus_cast(details.value(keyActor))), reason(qdbus_cast(details.value(keyChangeReason))), message(qdbus_cast(details.value(keyMessage))) { } UIntList added; UIntList removed; UIntList localPending; UIntList remotePending; QVariantMap details; uint actor; uint reason; QString message; static const QString keyChangeReason; static const QString keyMessage; static const QString keyContactIds; }; struct TP_QT_NO_EXPORT Channel::Private::ConferenceChannelRemovedInfo { ConferenceChannelRemovedInfo(const QDBusObjectPath &channelPath, const QVariantMap &details) : channelPath(channelPath), details(details) { } QDBusObjectPath channelPath; QVariantMap details; }; const QString Channel::Private::keyActor(QLatin1String("actor")); const QString Channel::Private::GroupMembersChangedInfo::keyChangeReason( QLatin1String("change-reason")); const QString Channel::Private::GroupMembersChangedInfo::keyMessage(QLatin1String("message")); const QString Channel::Private::GroupMembersChangedInfo::keyContactIds(QLatin1String("contact-ids")); Channel::Private::Private(Channel *parent, const ConnectionPtr &connection, const QVariantMap &immutableProperties) : parent(parent), baseInterface(new Client::ChannelInterface(parent)), properties(parent->interface()), connection(connection), immutableProperties(immutableProperties), group(0), conference(0), readinessHelper(parent->readinessHelper()), targetHandleType(0), targetHandle(0), requested(false), initiatorHandle(0), groupFlags(0), usingMembersChangedDetailed(false), groupHaveMembers(false), buildingContacts(false), currentGroupMembersChangedInfo(0), groupAreHandleOwnersAvailable(false), pendingRetrieveGroupSelfContact(false), groupIsSelfHandleTracked(false), groupSelfHandle(0), introspectingConference(false), buildingConferenceChannelRemovedActorContact(false) { debug() << "Creating new Channel:" << parent->objectPath(); if (connection->isValid()) { debug() << " Connecting to Channel::Closed() signal"; parent->connect(baseInterface, SIGNAL(Closed()), SLOT(onClosed())); debug() << " Connection to owning connection's lifetime signals"; parent->connect(connection.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onConnectionInvalidated())); } else { warning() << "Connection given as the owner for a Channel was " "invalid! Channel will be stillborn."; parent->invalidate(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Connection given as the owner of this channel was invalid")); } ReadinessHelper::Introspectables introspectables; // As Channel does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectMain, this); introspectables[FeatureCore] = introspectableCore; // As Channel does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableConferenceInitialInviteeContacts( QSet() << 0, // makesSenseForStatuses Features() << FeatureCore, // dependsOnFeatures QStringList() << TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE, // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &Private::introspectConferenceInitialInviteeContacts, this); introspectables[FeatureConferenceInitialInviteeContacts] = introspectableConferenceInitialInviteeContacts; readinessHelper->addIntrospectables(introspectables); } Channel::Private::~Private() { delete currentGroupMembersChangedInfo; foreach (GroupMembersChangedInfo *info, groupMembersChangedQueue) { delete info; } foreach (ConferenceChannelRemovedInfo *info, conferenceChannelRemovedQueue) { delete info; } } void Channel::Private::introspectMain(Channel::Private *self) { // Make sure connection object is ready, as we need to use some methods that // are only available after connection object gets ready. debug() << "Calling Connection::becomeReady()"; self->parent->connect(self->connection->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onConnectionReady(Tp::PendingOperation*))); } void Channel::Private::introspectMainProperties() { QVariantMap props; QString key; bool needIntrospectMainProps = false; const unsigned numNames = 8; const static QString names[numNames] = { QLatin1String("ChannelType"), QLatin1String("Interfaces"), QLatin1String("TargetHandleType"), QLatin1String("TargetHandle"), QLatin1String("TargetID"), QLatin1String("Requested"), QLatin1String("InitiatorHandle"), QLatin1String("InitiatorID") }; const static QString qualifiedNames[numNames] = { TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"), TP_QT_IFACE_CHANNEL + QLatin1String(".Interfaces"), TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"), TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"), TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"), TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"), TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorID") }; for (unsigned i = 0; i < numNames; ++i) { const QString &qualified = qualifiedNames[i]; if (!immutableProperties.contains(qualified)) { needIntrospectMainProps = true; break; } props.insert(names[i], immutableProperties.value(qualified)); } // Save Requested and InitiatorHandle here, so even if the GetAll return doesn't have them but // the given immutable props do (eg. due to the PendingChannel fallback guesses) we use them requested = qdbus_cast(props[QLatin1String("Requested")]); initiatorHandle = qdbus_cast(props[QLatin1String("InitiatorHandle")]); if (props.contains(QLatin1String("InitiatorID"))) { QString initiatorId = qdbus_cast(props[QLatin1String("InitiatorID")]); connection->lowlevel()->injectContactId(initiatorHandle, initiatorId); } if (needIntrospectMainProps) { debug() << "Calling Properties::GetAll(Channel)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( properties->GetAll(TP_QT_IFACE_CHANNEL), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotMainProperties(QDBusPendingCallWatcher*))); } else { extractMainProps(props); continueIntrospection(); } } void Channel::Private::introspectMainFallbackChannelType() { debug() << "Calling Channel::GetChannelType()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(baseInterface->GetChannelType(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotChannelType(QDBusPendingCallWatcher*))); } void Channel::Private::introspectMainFallbackHandle() { debug() << "Calling Channel::GetHandle()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(baseInterface->GetHandle(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotHandle(QDBusPendingCallWatcher*))); } void Channel::Private::introspectMainFallbackInterfaces() { debug() << "Calling Channel::GetInterfaces()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(baseInterface->GetInterfaces(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotInterfaces(QDBusPendingCallWatcher*))); } void Channel::Private::introspectGroup() { Q_ASSERT(properties != 0); if (!group) { group = parent->interface(); Q_ASSERT(group != 0); } debug() << "Introspecting Channel.Interface.Group for" << parent->objectPath(); parent->connect(group, SIGNAL(GroupFlagsChanged(uint,uint)), SLOT(onGroupFlagsChanged(uint,uint))); parent->connect(group, SIGNAL(MembersChanged(QString,Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,uint,uint)), SLOT(onMembersChanged(QString,Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,uint,uint))); parent->connect(group, SIGNAL(MembersChangedDetailed(Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,QVariantMap)), SLOT(onMembersChangedDetailed(Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,QVariantMap))); parent->connect(group, SIGNAL(HandleOwnersChanged(Tp::HandleOwnerMap, Tp::UIntList)), SLOT(onHandleOwnersChanged(Tp::HandleOwnerMap, Tp::UIntList))); parent->connect(group, SIGNAL(SelfHandleChanged(uint)), SLOT(onSelfHandleChanged(uint))); debug() << "Calling Properties::GetAll(Channel.Interface.Group)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( properties->GetAll(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotGroupProperties(QDBusPendingCallWatcher*))); } void Channel::Private::introspectGroupFallbackFlags() { Q_ASSERT(group != 0); debug() << "Calling Channel.Interface.Group::GetGroupFlags()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(group->GetGroupFlags(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotGroupFlags(QDBusPendingCallWatcher*))); } void Channel::Private::introspectGroupFallbackMembers() { Q_ASSERT(group != 0); debug() << "Calling Channel.Interface.Group::GetAllMembers()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(group->GetAllMembers(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotAllMembers(QDBusPendingCallWatcher*))); } void Channel::Private::introspectGroupFallbackLocalPendingWithInfo() { Q_ASSERT(group != 0); debug() << "Calling Channel.Interface.Group::GetLocalPendingMembersWithInfo()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(group->GetLocalPendingMembersWithInfo(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotLocalPendingMembersWithInfo(QDBusPendingCallWatcher*))); } void Channel::Private::introspectGroupFallbackSelfHandle() { Q_ASSERT(group != 0); debug() << "Calling Channel.Interface.Group::GetSelfHandle()"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(group->GetSelfHandle(), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotSelfHandle(QDBusPendingCallWatcher*))); } void Channel::Private::introspectConference() { Q_ASSERT(properties != 0); Q_ASSERT(conference == 0); debug() << "Introspecting Conference interface"; conference = parent->interface(); Q_ASSERT(conference != 0); introspectingConference = true; debug() << "Connecting to Channel.Interface.Conference.ChannelMerged/Removed"; parent->connect(conference, SIGNAL(ChannelMerged(QDBusObjectPath,uint,QVariantMap)), SLOT(onConferenceChannelMerged(QDBusObjectPath,uint,QVariantMap))); parent->connect(conference, SIGNAL(ChannelRemoved(QDBusObjectPath,QVariantMap)), SLOT(onConferenceChannelRemoved(QDBusObjectPath,QVariantMap))); debug() << "Calling Properties::GetAll(Channel.Interface.Conference)"; QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher( properties->GetAll(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE), parent); parent->connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(gotConferenceProperties(QDBusPendingCallWatcher*))); } void Channel::Private::introspectConferenceInitialInviteeContacts(Private *self) { if (!self->conferenceInitialInviteeHandles.isEmpty()) { ContactManagerPtr manager = self->connection->contactManager(); PendingContacts *pendingContacts = manager->contactsForHandles( self->conferenceInitialInviteeHandles); self->parent->connect(pendingContacts, SIGNAL(finished(Tp::PendingOperation *)), SLOT(gotConferenceInitialInviteeContacts(Tp::PendingOperation *))); } else { self->readinessHelper->setIntrospectCompleted( FeatureConferenceInitialInviteeContacts, true); } } void Channel::Private::continueIntrospection() { if (introspectQueue.isEmpty()) { // this should always be true, but let's make sure if (!parent->isReady(Channel::FeatureCore)) { if (groupMembersChangedQueue.isEmpty() && !buildingContacts && !introspectingConference) { debug() << "Both the IS and the MCD queue empty for the first time. Ready."; setReady(); } else { debug() << "Introspection done before contacts done - contacts sets ready"; } } } else { (this->*(introspectQueue.dequeue()))(); } } void Channel::Private::extractMainProps(const QVariantMap &props) { const static QString keyChannelType(QLatin1String("ChannelType")); const static QString keyInterfaces(QLatin1String("Interfaces")); const static QString keyTargetHandle(QLatin1String("TargetHandle")); const static QString keyTargetHandleType(QLatin1String("TargetHandleType")); bool haveProps = props.size() >= 4 && props.contains(keyChannelType) && !qdbus_cast(props[keyChannelType]).isEmpty() && props.contains(keyInterfaces) && props.contains(keyTargetHandle) && props.contains(keyTargetHandleType); if (!haveProps) { warning() << "Channel properties specified in 0.17.7 not found"; introspectQueue.enqueue(&Private::introspectMainFallbackChannelType); introspectQueue.enqueue(&Private::introspectMainFallbackHandle); introspectQueue.enqueue(&Private::introspectMainFallbackInterfaces); } else { parent->setInterfaces(qdbus_cast(props[keyInterfaces])); readinessHelper->setInterfaces(parent->interfaces()); channelType = qdbus_cast(props[keyChannelType]); targetHandle = qdbus_cast(props[keyTargetHandle]); targetHandleType = qdbus_cast(props[keyTargetHandleType]); const static QString keyTargetId(QLatin1String("TargetID")); const static QString keyRequested(QLatin1String("Requested")); const static QString keyInitiatorHandle(QLatin1String("InitiatorHandle")); const static QString keyInitiatorId(QLatin1String("InitiatorID")); if (props.contains(keyTargetId)) { targetId = qdbus_cast(props[keyTargetId]); if (targetHandleType == HandleTypeContact) { connection->lowlevel()->injectContactId(targetHandle, targetId); } } if (props.contains(keyRequested)) { requested = qdbus_cast(props[keyRequested]); } if (props.contains(keyInitiatorHandle)) { initiatorHandle = qdbus_cast(props[keyInitiatorHandle]); } if (props.contains(keyInitiatorId)) { QString initiatorId = qdbus_cast(props[keyInitiatorId]); connection->lowlevel()->injectContactId(initiatorHandle, initiatorId); } if (!fakeGroupInterfaceIfNeeded() && !parent->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP) && initiatorHandle) { // No group interface, so nobody will build the poor fellow for us. Will do it ourselves // out of pity for him. // TODO: needs testing. I would imagine some of the elaborate updateContacts logic // tripping over with just this. buildContacts(); } nowHaveInterfaces(); } debug() << "Have initiator handle:" << (initiatorHandle ? "yes" : "no"); } void Channel::Private::extract0176GroupProps(const QVariantMap &props) { const static QString keyGroupFlags(QLatin1String("GroupFlags")); const static QString keyHandleOwners(QLatin1String("HandleOwners")); const static QString keyLPMembers(QLatin1String("LocalPendingMembers")); const static QString keyMembers(QLatin1String("Members")); const static QString keyRPMembers(QLatin1String("RemotePendingMembers")); const static QString keySelfHandle(QLatin1String("SelfHandle")); bool haveProps = props.size() >= 6 && (props.contains(keyGroupFlags) && (qdbus_cast(props[keyGroupFlags]) & ChannelGroupFlagProperties)) && props.contains(keyHandleOwners) && props.contains(keyLPMembers) && props.contains(keyMembers) && props.contains(keyRPMembers) && props.contains(keySelfHandle); if (!haveProps) { warning() << " Properties specified in 0.17.6 not found"; warning() << " Handle owners and self handle tracking disabled"; introspectQueue.enqueue(&Private::introspectGroupFallbackFlags); introspectQueue.enqueue(&Private::introspectGroupFallbackMembers); introspectQueue.enqueue(&Private::introspectGroupFallbackLocalPendingWithInfo); introspectQueue.enqueue(&Private::introspectGroupFallbackSelfHandle); } else { debug() << " Found properties specified in 0.17.6"; groupAreHandleOwnersAvailable = true; groupIsSelfHandleTracked = true; setGroupFlags(qdbus_cast(props[keyGroupFlags])); groupHandleOwners = qdbus_cast(props[keyHandleOwners]); groupInitialMembers = qdbus_cast(props[keyMembers]); groupInitialLP = qdbus_cast(props[keyLPMembers]); groupInitialRP = qdbus_cast(props[keyRPMembers]); uint propSelfHandle = qdbus_cast(props[keySelfHandle]); // Don't overwrite the self handle we got from the Connection with 0 if (propSelfHandle) { groupSelfHandle = propSelfHandle; } nowHaveInitialMembers(); } } void Channel::Private::nowHaveInterfaces() { debug() << "Channel has" << parent->interfaces().size() << "optional interfaces:" << parent->interfaces(); QStringList interfaces = parent->interfaces(); if (interfaces.contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { introspectQueue.enqueue(&Private::introspectGroup); } if (interfaces.contains(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE)) { introspectQueue.enqueue(&Private::introspectConference); } } void Channel::Private::nowHaveInitialMembers() { // Must be called with no contacts anywhere in the first place Q_ASSERT(!parent->isReady(Channel::FeatureCore)); Q_ASSERT(!buildingContacts); Q_ASSERT(pendingGroupMembers.isEmpty()); Q_ASSERT(pendingGroupLocalPendingMembers.isEmpty()); Q_ASSERT(pendingGroupRemotePendingMembers.isEmpty()); Q_ASSERT(groupContacts.isEmpty()); Q_ASSERT(groupLocalPendingContacts.isEmpty()); Q_ASSERT(groupRemotePendingContacts.isEmpty()); // Set groupHaveMembers so we start queueing fresh MCD signals Q_ASSERT(!groupHaveMembers); groupHaveMembers = true; // Synthesize MCD for current + RP groupMembersChangedQueue.enqueue(new GroupMembersChangedInfo( groupInitialMembers, // Members UIntList(), // Removed - obviously, none UIntList(), // LP - will be handled separately, see below groupInitialRP, // Remote pending QVariantMap())); // No details for members + RP // Synthesize one MCD for each initial LP member - they might have different details foreach (const LocalPendingInfo &info, groupInitialLP) { QVariantMap details; if (info.actor != 0) { details.insert(QLatin1String("actor"), info.actor); } if (info.reason != ChannelGroupChangeReasonNone) { details.insert(QLatin1String("change-reason"), info.reason); } if (!info.message.isEmpty()) { details.insert(QLatin1String("message"), info.message); } groupMembersChangedQueue.enqueue(new GroupMembersChangedInfo(UIntList(), UIntList(), UIntList() << info.toBeAdded, UIntList(), details)); } // At least our added MCD event to process processMembersChanged(); } bool Channel::Private::setGroupFlags(uint newGroupFlags) { if (groupFlags == newGroupFlags) { return false; } groupFlags = newGroupFlags; // this shouldn't happen but let's make sure if (!parent->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { return false; } if ((groupFlags & ChannelGroupFlagMembersChangedDetailed) && !usingMembersChangedDetailed) { usingMembersChangedDetailed = true; debug() << "Starting to exclusively listen to MembersChangedDetailed for" << parent->objectPath(); parent->disconnect(group, SIGNAL(MembersChanged(QString,Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,uint,uint)), parent, SLOT(onMembersChanged(QString,Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,uint,uint))); } else if (!(groupFlags & ChannelGroupFlagMembersChangedDetailed) && usingMembersChangedDetailed) { warning() << " Channel service did spec-incompliant removal of MCD from GroupFlags"; usingMembersChangedDetailed = false; parent->connect(group, SIGNAL(MembersChanged(QString,Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,uint,uint)), parent, SLOT(onMembersChanged(QString,Tp::UIntList, Tp::UIntList,Tp::UIntList, Tp::UIntList,uint,uint))); } return true; } void Channel::Private::buildContacts() { buildingContacts = true; ContactManagerPtr manager = connection->contactManager(); UIntList toBuild = QSet(pendingGroupMembers + pendingGroupLocalPendingMembers + pendingGroupRemotePendingMembers).toList(); if (currentGroupMembersChangedInfo && currentGroupMembersChangedInfo->actor != 0) { toBuild.append(currentGroupMembersChangedInfo->actor); } if (!initiatorContact && initiatorHandle) { // No initiator contact, but Yes initiator handle - might do something about it with just // that information toBuild.append(initiatorHandle); } if (!targetContact && targetHandleType == HandleTypeContact && targetHandle != 0) { toBuild.append(targetHandle); } // always try to retrieve selfContact and check if it changed on // updateContacts or on gotContacts, in case we were not able to retrieve it if (groupSelfHandle) { toBuild.append(groupSelfHandle); } // group self handle changed to 0 <- strange but it may happen, and contacts // were being built at the time, so check now if (toBuild.isEmpty()) { if (!groupSelfHandle && groupSelfContact) { groupSelfContact.reset(); if (parent->isReady(Channel::FeatureCore)) { emit parent->groupSelfContactChanged(); } } buildingContacts = false; return; } PendingContacts *pendingContacts = manager->contactsForHandles( toBuild); parent->connect(pendingContacts, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotContacts(Tp::PendingOperation*))); } void Channel::Private::processMembersChanged() { Q_ASSERT(!buildingContacts); if (groupMembersChangedQueue.isEmpty()) { if (pendingRetrieveGroupSelfContact) { pendingRetrieveGroupSelfContact = false; // nothing queued but selfContact changed buildContacts(); return; } if (!parent->isReady(Channel::FeatureCore)) { if (introspectQueue.isEmpty()) { debug() << "Both the MCD and the introspect queue empty for the first time. Ready!"; if (initiatorHandle && !initiatorContact) { warning() << " Unable to create contact object for initiator with handle" << initiatorHandle; } if (targetHandleType == HandleTypeContact && targetHandle != 0 && !targetContact) { warning() << " Unable to create contact object for target with handle" << targetHandle; } if (groupSelfHandle && !groupSelfContact) { warning() << " Unable to create contact object for self handle" << groupSelfHandle; } continueIntrospection(); } else { debug() << "Contact queue empty but introspect queue isn't. IS will set ready."; } } return; } Q_ASSERT(pendingGroupMembers.isEmpty()); Q_ASSERT(pendingGroupLocalPendingMembers.isEmpty()); Q_ASSERT(pendingGroupRemotePendingMembers.isEmpty()); // always set this to false here, as buildContacts will always try to // retrieve the selfContact and updateContacts will check if the built // contact is the same as the current contact. pendingRetrieveGroupSelfContact = false; currentGroupMembersChangedInfo = groupMembersChangedQueue.dequeue(); foreach (uint handle, currentGroupMembersChangedInfo->added) { if (!groupContacts.contains(handle)) { pendingGroupMembers.insert(handle); } // the member was added to current members, check if it was in the // local/pending lists and if true, schedule for removal from that list if (groupLocalPendingContacts.contains(handle)) { groupLocalPendingMembersToRemove.append(handle); } else if(groupRemotePendingContacts.contains(handle)) { groupRemotePendingMembersToRemove.append(handle); } } foreach (uint handle, currentGroupMembersChangedInfo->localPending) { if (!groupLocalPendingContacts.contains(handle)) { pendingGroupLocalPendingMembers.insert(handle); } } foreach (uint handle, currentGroupMembersChangedInfo->remotePending) { if (!groupRemotePendingContacts.contains(handle)) { pendingGroupRemotePendingMembers.insert(handle); } } foreach (uint handle, currentGroupMembersChangedInfo->removed) { groupMembersToRemove.append(handle); } // Always go through buildContacts - we might have a self/initiator/whatever handle to build buildContacts(); } void Channel::Private::updateContacts(const QList &contacts) { Contacts groupContactsAdded; Contacts groupLocalPendingContactsAdded; Contacts groupRemotePendingContactsAdded; ContactPtr actorContact; bool selfContactUpdated = false; debug() << "Entering Chan::Priv::updateContacts() with" << contacts.size() << "contacts"; // FIXME: simplify. Some duplication of logic present. foreach (ContactPtr contact, contacts) { uint handle = contact->handle()[0]; if (pendingGroupMembers.contains(handle)) { groupContactsAdded.insert(contact); groupContacts[handle] = contact; } else if (pendingGroupLocalPendingMembers.contains(handle)) { groupLocalPendingContactsAdded.insert(contact); groupLocalPendingContacts[handle] = contact; // FIXME: should set the details and actor here too groupLocalPendingContactsChangeInfo[handle] = GroupMemberChangeDetails(); } else if (pendingGroupRemotePendingMembers.contains(handle)) { groupRemotePendingContactsAdded.insert(contact); groupRemotePendingContacts[handle] = contact; } if (groupSelfHandle == handle && groupSelfContact != contact) { groupSelfContact = contact; selfContactUpdated = true; } if (!initiatorContact && initiatorHandle == handle) { // No initiator contact stored, but there's a contact for the initiator handle // We can use that! initiatorContact = contact; } if (!targetContact && targetHandleType == HandleTypeContact && targetHandle == handle) { targetContact = contact; if (targetId.isEmpty()) { // For some reason, TargetID was missing from the property map. We can initialize it // here in that case. targetId = targetContact->id(); } } if (currentGroupMembersChangedInfo && currentGroupMembersChangedInfo->actor == contact->handle()[0]) { actorContact = contact; } } if (!groupSelfHandle && groupSelfContact) { groupSelfContact.reset(); selfContactUpdated = true; } pendingGroupMembers.clear(); pendingGroupLocalPendingMembers.clear(); pendingGroupRemotePendingMembers.clear(); // FIXME: This shouldn't be needed. Clearer would be to first scan for the actor being present // in the contacts supplied. foreach (ContactPtr contact, contacts) { uint handle = contact->handle()[0]; if (groupLocalPendingContactsChangeInfo.contains(handle)) { groupLocalPendingContactsChangeInfo[handle] = GroupMemberChangeDetails(actorContact, currentGroupMembersChangedInfo ? currentGroupMembersChangedInfo->details : QVariantMap()); } } Contacts groupContactsRemoved; ContactPtr contactToRemove; foreach (uint handle, groupMembersToRemove) { if (groupContacts.contains(handle)) { contactToRemove = groupContacts[handle]; groupContacts.remove(handle); } else if (groupLocalPendingContacts.contains(handle)) { contactToRemove = groupLocalPendingContacts[handle]; groupLocalPendingContacts.remove(handle); } else if (groupRemotePendingContacts.contains(handle)) { contactToRemove = groupRemotePendingContacts[handle]; groupRemotePendingContacts.remove(handle); } if (groupLocalPendingContactsChangeInfo.contains(handle)) { groupLocalPendingContactsChangeInfo.remove(handle); } if (contactToRemove) { groupContactsRemoved.insert(contactToRemove); } } groupMembersToRemove.clear(); // FIXME: drop the LPToRemove and RPToRemove sets - they're redundant foreach (uint handle, groupLocalPendingMembersToRemove) { groupLocalPendingContacts.remove(handle); } groupLocalPendingMembersToRemove.clear(); foreach (uint handle, groupRemotePendingMembersToRemove) { groupRemotePendingContacts.remove(handle); } groupRemotePendingMembersToRemove.clear(); if (!groupContactsAdded.isEmpty() || !groupLocalPendingContactsAdded.isEmpty() || !groupRemotePendingContactsAdded.isEmpty() || !groupContactsRemoved.isEmpty()) { GroupMemberChangeDetails details( actorContact, currentGroupMembersChangedInfo ? currentGroupMembersChangedInfo->details : QVariantMap()); if (currentGroupMembersChangedInfo && currentGroupMembersChangedInfo->removed.contains(groupSelfHandle)) { // Update groupSelfContactRemoveInfo with the proper actor in case // the actor was not available by the time onMembersChangedDetailed // was called. groupSelfContactRemoveInfo = details; } if (parent->isReady(Channel::FeatureCore)) { // Channel is ready, we can signal membership changes to the outside world without // confusing anyone's fragile logic. emit parent->groupMembersChanged( groupContactsAdded, groupLocalPendingContactsAdded, groupRemotePendingContactsAdded, groupContactsRemoved, details); } } delete currentGroupMembersChangedInfo; currentGroupMembersChangedInfo = 0; if (selfContactUpdated && parent->isReady(Channel::FeatureCore)) { emit parent->groupSelfContactChanged(); } processMembersChanged(); } bool Channel::Private::fakeGroupInterfaceIfNeeded() { if (parent->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { return false; } else if (targetHandleType != HandleTypeContact) { return false; } // fake group interface if (connection->selfHandle() && targetHandle) { // Fake groupSelfHandle and initial members, let the MCD handling take care of the rest // TODO connect to Connection::selfHandleChanged groupSelfHandle = connection->selfHandle(); groupInitialMembers = UIntList() << groupSelfHandle << targetHandle; debug().nospace() << "Faking a group on channel with self handle=" << groupSelfHandle << " and other handle=" << targetHandle; nowHaveInitialMembers(); } else { warning() << "Connection::selfHandle is 0 or targetHandle is 0, " "not faking a group on channel"; } return true; } void Channel::Private::setReady() { Q_ASSERT(!parent->isReady(Channel::FeatureCore)); debug() << "Channel fully ready"; debug() << " Channel type" << channelType; debug() << " Target handle" << targetHandle; debug() << " Target handle type" << targetHandleType; if (parent->interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { debug() << " Group: flags" << groupFlags; if (groupAreHandleOwnersAvailable) { debug() << " Group: Number of handle owner mappings" << groupHandleOwners.size(); } else { debug() << " Group: No handle owners property present"; } debug() << " Group: Number of current members" << groupContacts.size(); debug() << " Group: Number of local pending members" << groupLocalPendingContacts.size(); debug() << " Group: Number of remote pending members" << groupRemotePendingContacts.size(); debug() << " Group: Self handle" << groupSelfHandle << "tracked:" << (groupIsSelfHandleTracked ? "yes" : "no"); } readinessHelper->setIntrospectCompleted(FeatureCore, true); } QString Channel::Private::groupMemberChangeDetailsTelepathyError( const GroupMemberChangeDetails &details) { QString error; uint reason = details.reason(); switch (reason) { case ChannelGroupChangeReasonOffline: error = TP_QT_ERROR_OFFLINE; break; case ChannelGroupChangeReasonKicked: error = TP_QT_ERROR_CHANNEL_KICKED; break; case ChannelGroupChangeReasonBanned: error = TP_QT_ERROR_CHANNEL_BANNED; break; case ChannelGroupChangeReasonBusy: error = TP_QT_ERROR_BUSY; break; case ChannelGroupChangeReasonNoAnswer: error = TP_QT_ERROR_NO_ANSWER; break; case ChannelGroupChangeReasonPermissionDenied: error = TP_QT_ERROR_PERMISSION_DENIED; break; case ChannelGroupChangeReasonInvalidContact: error = TP_QT_ERROR_DOES_NOT_EXIST; break; // The following change reason are being mapped to default // case ChannelGroupChangeReasonNone: // case ChannelGroupChangeReasonInvited: // shouldn't happen // case ChannelGroupChangeReasonError: // case ChannelGroupChangeReasonRenamed: // case ChannelGroupChangeReasonSeparated: // shouldn't happen default: // let's use the actor handle and selfHandle here instead of the // contacts, as the contacts may not be ready. error = ((qdbus_cast(details.allDetails().value(QLatin1String("actor"))) == groupSelfHandle) ? TP_QT_ERROR_CANCELLED : TP_QT_ERROR_TERMINATED); break; } return error; } void Channel::Private::processConferenceChannelRemoved() { if (buildingConferenceChannelRemovedActorContact || conferenceChannelRemovedQueue.isEmpty()) { return; } ConferenceChannelRemovedInfo *info = conferenceChannelRemovedQueue.first(); if (!conferenceChannels.contains(info->channelPath.path())) { info = conferenceChannelRemovedQueue.dequeue(); delete info; processConferenceChannelRemoved(); return; } buildingConferenceChannelRemovedActorContact = true; if (info->details.contains(keyActor)) { ContactManagerPtr manager = connection->contactManager(); PendingContacts *pendingContacts = manager->contactsForHandles( UIntList() << qdbus_cast(info->details.value(keyActor))); parent->connect(pendingContacts, SIGNAL(finished(Tp::PendingOperation*)), SLOT(gotConferenceChannelRemovedActorContact(Tp::PendingOperation*))); } else { parent->gotConferenceChannelRemovedActorContact(0); } } struct TP_QT_NO_EXPORT Channel::GroupMemberChangeDetails::Private : public QSharedData { Private(const ContactPtr &actor, const QVariantMap &details) : actor(actor), details(details) {} ContactPtr actor; QVariantMap details; }; /** * \class Channel::GroupMemberChangeDetails * \ingroup clientchannel * \headerfile TelepathyQt/channel.h * * \brief The Channel::GroupMemberChangeDetails class represents the details of a group membership * change. * * Extended information is not always available; this will be reflected by * the return value of isValid(). */ /** * Constructs a new invalid GroupMemberChangeDetails instance. */ Channel::GroupMemberChangeDetails::GroupMemberChangeDetails() { } /** * Copy constructor. */ Channel::GroupMemberChangeDetails::GroupMemberChangeDetails(const GroupMemberChangeDetails &other) : mPriv(other.mPriv) { } /** * Class destructor. */ Channel::GroupMemberChangeDetails::~GroupMemberChangeDetails() { } /** * Assigns all information (validity, details) from other to this. */ Channel::GroupMemberChangeDetails &Channel::GroupMemberChangeDetails::operator=( const GroupMemberChangeDetails &other) { this->mPriv = other.mPriv; return *this; } /** * \fn bool Channel::GroupMemberChangeDetails::isValid() const * * Return whether the details are valid (have actually been received from the service). * * \return \c true if valid, \c false otherwise. */ /** * Return whether the details specify an actor. * * If present, actor() will return the contact object representing the person who made the change. * * \return \c true if the actor is known, \c false otherwise. * \sa actor() */ bool Channel::GroupMemberChangeDetails::hasActor() const { return isValid() && !mPriv->actor.isNull(); } /** * Return the contact object representing the person who made the change (actor), if known. * * \return A pointer to the Contact object, or a null ContactPtr if the actor is unknown. * \sa hasActor() */ ContactPtr Channel::GroupMemberChangeDetails::actor() const { return isValid() ? mPriv->actor : ContactPtr(); } /** * \fn bool Channel::GroupMemberChangeDetails::hasReason() const * * Return whether the details specify the reason for the change. * * \return \c true if the reason is known, \c false otherwise. * \sa reason() */ /** * \fn ChannelGroupChangeReason Channel::GroupMemberChangeDetails::reason() const * * Return the reason for the change, if known. * * \return The change reason as #ChannelGroupChangeReason, or #ChannelGroupChangeReasonNone * if the reason is unknown. * \sa hasReason() */ /** * \fn bool Channel::GroupMemberChangeDetails::hasMessage() const * * Return whether the details specify a human-readable message from the contact represented by * actor() pertaining to the change. * * \return \c true if the message is known, \c false otherwise. * \sa message() */ /** * \fn QString Channel::GroupMemberChangeDetails::message() const * * Return a human-readable message from the contact represented by actor() pertaining to the change, * if known. * * \return The message, or an empty string if the message is unknown. * \sa hasMessage() */ /** * \fn bool Channel::GroupMemberChangeDetails::hasError() const * * Return whether the details specify a D-Bus error describing the change. * * \return \c true if the error is known, \c false otherwise. * \sa error() */ /** * \fn QString Channel::GroupMemberChangeDetails::error() const * * Return the D-Bus error describing the change, if known. * * The D-Bus error provides more specific information than the reason() and should be used if * applicable. * * \return A D-Bus error describing the change, or an empty string if the error is unknown. * \sa hasError() */ /** * \fn bool Channel::GroupMemberChangeDetails::hasDebugMessage() const * * Return whether the details specify a debug message. * * \return \c true if debug message is present, \c false otherwise. * \sa debugMessage() */ /** * \fn QString Channel::GroupMemberChangeDetails::debugMessage() const * * Return the debug message specified by the details, if any. * * The debug message is purely informational, offered for display for bug reporting purposes, and * should not be attempted to be parsed. * * \return The debug message, or an empty string if there is none. * \sa hasDebugMessage() */ /** * Return a map containing all details of the group members change. * * This is useful for accessing domain-specific additional details. * * \return The details of the group members change as QVariantMap. */ QVariantMap Channel::GroupMemberChangeDetails::allDetails() const { return isValid() ? mPriv->details : QVariantMap(); } Channel::GroupMemberChangeDetails::GroupMemberChangeDetails(const ContactPtr &actor, const QVariantMap &details) : mPriv(new Private(actor, details)) { } /** * \class Channel * \ingroup clientchannel * \headerfile TelepathyQt/channel.h * * \brief The Channel class represents a Telepathy channel. * * All communication in the Telepathy framework is carried out via channel * objects. Specialized classes for some specific channel types such as * StreamedMediaChannel, TextChannel, FileTransferChannel are provided. * * The remote object accessor functions on this object (channelType(), targetHandleType(), * and so on) don't make any D-Bus calls; instead, they return/use * values cached from a previous introspection run. The introspection process * populates their values in the most efficient way possible based on what the * service implements. * * To avoid unnecessary D-Bus traffic, some accessors only return valid * information after specific features have been enabled. * For instance, to retrieve the initial invitee contacts in a conference channel, * it is necessary to enable the feature Channel::FeatureConferenceInitialInviteeContacts. * See the individual methods descriptions for more details. * * Channel features can be enabled by constructing a ChannelFactory and enabling * the desired features, and passing it to AccountManager, Account or ClientRegistrar * when creating them as appropriate. However, if a particular * feature is only ever used in a specific circumstance, such as an user opening * some settings dialog separate from the general view of the application, * features can be later enabled as needed by calling becomeReady() with the additional * features, and waiting for the resulting PendingOperation to finish. * * Each channel is owned by a connection. If the Connection object becomes invalidated * the Channel object will also get invalidated. * * \section chan_usage_sec Usage * * \subsection chan_create_sec Creating a channel object * * Channel objects can be created in various ways, but the preferred way is * trough Account channel creation methods such as Account::ensureTextChat(), * Account::createFileTransfer(), which uses the channel dispatcher. * * If you already know the object path, you can just call create(). * For example: * * \code * * ChannelPtr chan = Channel::create(connection, objectPath, * immutableProperties); * * \endcode * * \subsection chan_ready_sec Making channel ready to use * * A Channel object needs to become ready before usage, meaning that the * introspection process finished and the object accessors can be used. * * To make the object ready, use becomeReady() and wait for the * PendingOperation::finished() signal to be emitted. * * \code * * class MyClass : public QObject * { * QOBJECT * * public: * MyClass(QObject *parent = 0); * ~MyClass() { } * * private Q_SLOTS: * void onChannelReady(Tp::PendingOperation*); * * private: * ChannelPtr chan; * }; * * MyClass::MyClass(const ConnectionPtr &connection, * const QString &objectPath, const QVariantMap &immutableProperties) * : QObject(parent) * chan(Channel::create(connection, objectPath, immutableProperties)) * { * connect(chan->becomeReady(), * SIGNAL(finished(Tp::PendingOperation*)), * SLOT(onChannelReady(Tp::PendingOperation*))); * } * * void MyClass::onChannelReady(Tp::PendingOperation *op) * { * if (op->isError()) { * qWarning() << "Channel cannot become ready:" << * op->errorName() << "-" << op->errorMessage(); * return; * } * * // Channel is now ready * } * * \endcode * * See \ref async_model, \ref shared_ptr */ /** * Feature representing the core that needs to become ready to make the Channel * object usable. * * Note that this feature must be enabled in order to use most Channel methods. * See specific methods documentation for more details. * * When calling isReady(), becomeReady(), this feature is implicitly added * to the requested features. */ const Feature Channel::FeatureCore = Feature(QLatin1String(Channel::staticMetaObject.className()), 0, true); /** * Feature used in order to access the conference initial invitee contacts info. * * \sa conferenceInitialInviteeContacts() */ const Feature Channel::FeatureConferenceInitialInviteeContacts = Feature(QLatin1String(Channel::staticMetaObject.className()), 1, true); /** * Create a new Channel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \return A ChannelPtr object pointing to the newly created Channel object. * * \todo \a immutableProperties should be used to populate the corresponding accessors (such as * channelType()) already on construction, not only when making FeatureCore ready (fd.o #41654) */ ChannelPtr Channel::create(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties) { return ChannelPtr(new Channel(connection, objectPath, immutableProperties, Channel::FeatureCore)); } /** * Construct a new Channel object. * * \param connection Connection owning this channel, and specifying the * service. * \param objectPath The channel object path. * \param immutableProperties The channel immutable properties. * \param coreFeature The core feature of the channel type. The corresponding introspectable should * depend on Channel::FeatureCore. */ Channel::Channel(const ConnectionPtr &connection, const QString &objectPath, const QVariantMap &immutableProperties, const Feature &coreFeature) : StatefulDBusProxy(connection->dbusConnection(), connection->busName(), objectPath, coreFeature), OptionalInterfaceFactory(this), mPriv(new Private(this, connection, immutableProperties)) { } /** * Class destructor. */ Channel::~Channel() { delete mPriv; } /** * Return the connection owning this channel. * * \return A pointer to the Connection object. */ ConnectionPtr Channel::connection() const { return mPriv->connection; } /** * Return the immutable properties of the channel. * * If the channel is ready (isReady(Channel::FeatureCore) returns true), the following keys are * guaranteed to be present: * org.freedesktop.Telepathy.Channel.ChannelType, * org.freedesktop.Telepathy.Channel.TargetHandleType, * org.freedesktop.Telepathy.Channel.TargetHandle and * org.freedesktop.Telepathy.Channel.Requested. * * The keys and values in this map are defined by the \telepathy_spec, * or by third-party extensions to that specification. * These are the properties that cannot change over the lifetime of the * channel; they're announced in the result of the request, for efficiency. * * \return The immutable properties as QVariantMap. */ QVariantMap Channel::immutableProperties() const { if (isReady(Channel::FeatureCore)) { QString key; key = TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, mPriv->channelType); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".Interfaces"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, interfaces()); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, mPriv->targetHandleType); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, mPriv->targetHandle); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, mPriv->targetId); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".Requested"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, mPriv->requested); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"); if (!mPriv->immutableProperties.contains(key)) { mPriv->immutableProperties.insert(key, mPriv->initiatorHandle); } key = TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorID"); if (!mPriv->immutableProperties.contains(key) && !mPriv->initiatorContact.isNull()) { mPriv->immutableProperties.insert(key, mPriv->initiatorContact->id()); } } return mPriv->immutableProperties; } /** * Return the D-Bus interface name for the type of this channel. * * This method requires Channel::FeatureCore to be ready. * * \return The D-Bus interface name for the type of the channel. */ QString Channel::channelType() const { // Similarly, we don't want warnings triggered when using the type interface // proxies internally. if (!isReady(Channel::FeatureCore) && mPriv->channelType.isEmpty()) { warning() << "Channel::channelType() before the channel type has " "been received"; } else if (!isValid()) { warning() << "Channel::channelType() used with channel closed"; } return mPriv->channelType; } /** * Return the type of the handle returned by targetHandle() as specified in * #HandleType. * * This method requires Channel::FeatureCore to be ready. * * \return The target handle type as #HandleType. * \sa targetHandle(), targetId() */ HandleType Channel::targetHandleType() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::targetHandleType() used channel not ready"; } return (HandleType) mPriv->targetHandleType; } /** * Return the handle of the remote party with which this channel * communicates. * * This method requires Channel::FeatureCore to be ready. * * \return An integer representing the target handle, which is of the type * targetHandleType() indicates. * \sa targetHandleType(), targetId() */ uint Channel::targetHandle() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::targetHandle() used channel not ready"; } return mPriv->targetHandle; } /** * Return the persistent unique ID of the remote party with which this channel communicates. * * If targetHandleType() is #HandleTypeContact, this will be the ID of the remote contact, and * similarly the unique ID of the room when targetHandleType() is #HandleTypeRoom. * * This is not necessarily the best identifier to display to the user, though. In particular, for * contacts, their alias should be displayed instead. It can be used for matching channels and UI * elements for them across reconnects, though, at which point the old channels and contacts are * invalidated. * * This method requires Channel::FeatureCore to be ready. * * \return The target identifier. * \sa targetHandle(), targetContact() */ QString Channel::targetId() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::targetId() used, but the channel is not ready"; } return mPriv->targetId; } /** * Return the contact with which this channel communicates for its lifetime, if applicable. * * This method requires Channel::FeatureCore to be ready. * * \return A pointer to the Contact object, or a null ContactPtr if targetHandleType() is not * #HandleTypeContact. * \sa targetHandle(), targetId() */ ContactPtr Channel::targetContact() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::targetContact() used, but the channel is not ready"; } else if (targetHandleType() != HandleTypeContact) { warning() << "Channel::targetContact() used with targetHandleType() != Contact"; } return mPriv->targetContact; } /** * Return whether this channel was created in response to a * local request. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if the channel was created in response to a local request, * \c false otherwise. */ bool Channel::isRequested() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::isRequested() used channel not ready"; } return mPriv->requested; } /** * Return the contact who initiated this channel. * * This method requires Channel::FeatureCore to be ready. * * \return A pointer to the Contact object representing the contact who initiated the channel, * or a null ContactPtr if it can't be retrieved. */ ContactPtr Channel::initiatorContact() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::initiatorContact() used channel not ready"; } return mPriv->initiatorContact; } /** * Start an asynchronous request that this channel be closed. * * The returned PendingOperation object will signal the success or failure * of this request; under normal circumstances, it can be expected to * succeed. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa requestLeave() */ PendingOperation *Channel::requestClose() { // Closing a channel does not make sense if it is already closed, // just silently Return. if (!isValid()) { return new PendingSuccess(ChannelPtr(this)); } return new PendingVoid(mPriv->baseInterface->Close(), ChannelPtr(this)); } Channel::PendingLeave::PendingLeave(const ChannelPtr &chan, const QString &message, ChannelGroupChangeReason reason) : PendingOperation(chan) { Q_ASSERT(chan->mPriv->group != NULL); QDBusPendingCall call = chan->mPriv->group->RemoveMembersWithReason( UIntList() << chan->mPriv->groupSelfHandle, message, reason); connect(chan.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), this, SLOT(onChanInvalidated(Tp::DBusProxy*))); connect(new PendingVoid(call, chan), SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(onRemoveFinished(Tp::PendingOperation*))); } void Channel::PendingLeave::onChanInvalidated(Tp::DBusProxy *proxy) { if (isFinished()) { return; } debug() << "Finishing PendingLeave successfully as the channel was invalidated"; setFinished(); } void Channel::PendingLeave::onRemoveFinished(Tp::PendingOperation *op) { if (isFinished()) { return; } ChannelPtr chan = ChannelPtr::staticCast(object()); if (op->isValid()) { debug() << "We left the channel" << chan->objectPath(); ContactPtr c = chan->groupSelfContact(); if (chan->groupContacts().contains(c) || chan->groupLocalPendingContacts().contains(c) || chan->groupRemotePendingContacts().contains(c)) { debug() << "Waiting for self remove to be picked up"; connect(chan.data(), SIGNAL(groupMembersChanged(Tp::Contacts,Tp::Contacts,Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), this, SLOT(onMembersChanged(Tp::Contacts,Tp::Contacts,Tp::Contacts,Tp::Contacts))); } else { setFinished(); } return; } debug() << "Leave RemoveMembersWithReason failed with " << op->errorName() << op->errorMessage() << "- falling back to Close"; // If the channel has been closed or otherwise invalidated already in this mainloop iteration, // the requestClose() operation will early-succeed connect(chan->requestClose(), SIGNAL(finished(Tp::PendingOperation*)), this, SLOT(onCloseFinished(Tp::PendingOperation*))); } void Channel::PendingLeave::onMembersChanged(const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &, const Tp::Contacts &removed) { if (isFinished()) { return; } ChannelPtr chan = ChannelPtr::staticCast(object()); ContactPtr c = chan->groupSelfContact(); if (removed.contains(c)) { debug() << "Leave event picked up for" << chan->objectPath(); setFinished(); } } void Channel::PendingLeave::onCloseFinished(Tp::PendingOperation *op) { if (isFinished()) { return; } ChannelPtr chan = ChannelPtr::staticCast(object()); if (op->isError()) { warning() << "Closing the channel" << chan->objectPath() << "as a fallback for leaving it failed with" << op->errorName() << op->errorMessage() << "- so didn't leave"; setFinishedWithError(op->errorName(), op->errorMessage()); } else { debug() << "We left (by closing) the channel" << chan->objectPath(); setFinished(); } } /** * Start an asynchronous request to leave this channel as gracefully as possible. * * If leaving any more gracefully is not possible, this will revert to the same as requestClose(). * In particular, this will be the case for channels with no group interface * (#TP_QT_IFACE_CHANNEL_INTERFACE_GROUP not in the list returned by interfaces()). * * The returned PendingOperation object will signal the success or failure * of this request; under normal circumstances, it can be expected to * succeed. * * A message and a reason may be provided along with the request, which will be sent to the server * if supported, which is indicated by #ChannelGroupFlagMessageDepart and/or * #ChannelGroupFlagMessageReject. * * Attempting to leave again when we have already left, either by our request or forcibly, will be a * no-op, with the returned PendingOperation immediately finishing successfully. * * \param message The message, which can be blank if desired. * \param reason A reason for leaving. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *Channel::requestLeave(const QString &message, ChannelGroupChangeReason reason) { // Leaving a channel does not make sense if it is already closed, // just silently Return. if (!isValid()) { return new PendingSuccess(ChannelPtr(this)); } if (!isReady(Channel::FeatureCore)) { return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel::FeatureCore must be ready to leave a channel"), ChannelPtr(this)); } if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { return requestClose(); } ContactPtr self = groupSelfContact(); if (!groupContacts().contains(self) && !groupLocalPendingContacts().contains(self) && !groupRemotePendingContacts().contains(self)) { debug() << "Channel::requestLeave() called for " << objectPath() << "which we aren't a member of"; return new PendingSuccess(ChannelPtr(this)); } return new PendingLeave(ChannelPtr(this), message, reason); } /** * \name Group interface * * Cached access to state of the group interface on the associated remote * object, if the interface is present. * * Some methods can be used when targetHandleType() == #HandleTypeContact, such * as groupFlags(), groupCanAddContacts(), groupCanRemoveContacts(), * groupSelfContact() and groupContacts(). * * As the group interface state can change freely during the lifetime of the * channel due to events like new contacts joining the group, the cached state * is automatically kept in sync with the remote object's state by hooking * to the change notification signals present in the D-Bus interface. * * As the cached value changes, change notification signals are emitted. * * Signals such as groupMembersChanged(), groupSelfContactChanged(), etc., are emitted to * indicate that properties have changed. * * Check the individual signals' descriptions for details. */ //@{ /** * Return a set of flags indicating the capabilities and behaviour of the * group on this channel. * * Change notification is via the groupFlagsChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \return The bitfield combination of flags as #ChannelGroupFlags. * \sa groupFlagsChanged() */ ChannelGroupFlags Channel::groupFlags() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupFlags() used channel not ready"; } return (ChannelGroupFlags) mPriv->groupFlags; } /** * Return whether contacts can be added or invited to this channel. * * Change notification is via the groupCanAddContactsChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if contacts can be added or invited to the channel, * \c false otherwise. * \sa groupFlags(), groupAddContacts() */ bool Channel::groupCanAddContacts() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanAddContacts() used channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagCanAdd; } /** * Return whether a message is expected when adding/inviting contacts, who * are not already members, to this channel. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if a message is expected, \c false otherwise. * \sa groupFlags(), groupAddContacts() */ bool Channel::groupCanAddContactsWithMessage() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanAddContactsWithMessage() used when channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagMessageAdd; } /** * Return whether a message is expected when accepting contacts' requests to * join this channel. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if a message is expected, \c false otherwise. * \sa groupFlags(), groupAddContacts() */ bool Channel::groupCanAcceptContactsWithMessage() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanAcceptContactsWithMessage() used when channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagMessageAccept; } /** * Add contacts to this channel. * * Contacts on the local pending list (those waiting for permission to join * the channel) can always be added. If groupCanAcceptContactsWithMessage() * returns \c true, an optional message is expected when doing this; if not, * the message parameter is likely to be ignored (so the user should not be * asked for a message, and the message parameter should be left empty). * * Other contacts can only be added if groupCanAddContacts() returns \c true. * If groupCanAddContactsWithMessage() returns \c true, an optional message is * expected when doing this, and if not, the message parameter is likely to be * ignored. * * This method requires Channel::FeatureCore to be ready. * * \param contacts Contacts to be added. * \param message A string message, which can be blank if desired. * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa groupCanAddContacts(), groupCanAddContactsWithMessage(), groupCanAcceptContactsWithMessage() */ PendingOperation *Channel::groupAddContacts(const QList &contacts, const QString &message) { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupAddContacts() used channel not ready"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), ChannelPtr(this)); } else if (contacts.isEmpty()) { warning() << "Channel::groupAddContacts() used with empty contacts param"; return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("contacts cannot be an empty list"), ChannelPtr(this)); } foreach (const ContactPtr &contact, contacts) { if (!contact) { warning() << "Channel::groupAddContacts() used but contacts param contains " "invalid contact"; return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Unable to add invalid contacts"), ChannelPtr(this)); } } if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupAddContacts() used with no group interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Channel does not support group interface"), ChannelPtr(this)); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } return new PendingVoid(mPriv->group->AddMembers(handles, message), ChannelPtr(this)); } /** * Return whether contacts in groupRemotePendingContacts() can be removed from * this channel (i.e. whether an invitation can be rescinded). * * Change notification is via the groupCanRescindContactsChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if contacts can be removed, \c false otherwise. * \sa groupFlags(), groupRemoveContacts() */ bool Channel::groupCanRescindContacts() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanRescindContacts() used channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagCanRescind; } /** * Return whether a message is expected when removing contacts who are in * groupRemotePendingContacts() from this channel (i.e. rescinding an * invitation). * * This method requires Channel::FeatureCore to be ready. * * \return \c true if a message is expected, \c false otherwise. * \sa groupFlags(), groupRemoveContacts() */ bool Channel::groupCanRescindContactsWithMessage() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanRescindContactsWithMessage() used when channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagMessageRescind; } /** * Return if contacts in groupContacts() can be removed from this channel. * * Note that contacts in local pending lists, and the groupSelfContact(), can * always be removed from the channel. * * Change notification is via the groupCanRemoveContactsChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if contacts can be removed, \c false otherwise. * \sa groupFlags(), groupRemoveContacts() */ bool Channel::groupCanRemoveContacts() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanRemoveContacts() used channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagCanRemove; } /** * Return whether a message is expected when removing contacts who are in * groupContacts() from this channel. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if a message is expected, \c false otherwise. * \sa groupFlags(), groupRemoveContacts() */ bool Channel::groupCanRemoveContactsWithMessage() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanRemoveContactsWithMessage() used when channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagMessageRemove; } /** * Return whether a message is expected when removing contacts who are in * groupLocalPendingContacts() from this channel (i.e. rejecting a request to * join). * * This method requires Channel::FeatureCore to be ready. * * \return \c true if a message is expected, \c false otherwise. * \sa groupFlags(), groupRemoveContacts() */ bool Channel::groupCanRejectContactsWithMessage() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanRejectContactsWithMessage() used when channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagMessageReject; } /** * Return whether a message is expected when removing the groupSelfContact() * from this channel (i.e. departing from the channel). * * \return \c true if a message is expected, \c false otherwise. * \sa groupFlags(), groupRemoveContacts() */ bool Channel::groupCanDepartWithMessage() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupCanDepartWithMessage() used when channel not ready"; } return mPriv->groupFlags & ChannelGroupFlagMessageDepart; } /** * Remove contacts from this channel. * * Contacts on the local pending list (those waiting for permission to join * the channel) can always be removed. If groupCanRejectContactsWithMessage() * returns \c true, an optional message is expected when doing this; if not, * the message parameter is likely to be ignored (so the user should not be * asked for a message, and the message parameter should be left empty). * * The groupSelfContact() can also always be removed, as a way to leave the * group with an optional departure message and/or departure reason indication. * If groupCanDepartWithMessage() returns \c true, an optional message is * expected when doing this, and if not, the message parameter is likely to * be ignored. * * Contacts in the group can only be removed (e.g. kicked) if * groupCanRemoveContacts() returns \c true. If * groupCanRemoveContactsWithMessage() returns \c true, an optional message is * expected when doing this, and if not, the message parameter is likely to be * ignored. * * Contacts in the remote pending list (those who have been invited to the * channel) can only be removed (have their invitations rescinded) if * groupCanRescindContacts() returns \c true. If * groupCanRescindContactsWithMessage() returns \c true, an optional message is * expected when doing this, and if not, the message parameter is likely to be * ignored. * * This method requires Channel::FeatureCore to be ready. * * \param contacts Contacts to be removed. * \param message A string message, which can be blank if desired. * \param reason Reason of the change, as specified in * #ChannelGroupChangeReason * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa groupCanRemoveContacts(), groupCanRemoveContactsWithMessage(), * groupCanRejectContactsWithMessage(), groupCanRescindContacts(), * groupCanRescindContacts(), groupCanRescindContactsWithMessage(), * groupCanDepartWithMessage() */ PendingOperation *Channel::groupRemoveContacts(const QList &contacts, const QString &message, ChannelGroupChangeReason reason) { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupRemoveContacts() used channel not ready"; return new PendingFailure(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String("Channel not ready"), ChannelPtr(this)); } if (contacts.isEmpty()) { warning() << "Channel::groupRemoveContacts() used with empty contacts param"; return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("contacts param cannot be an empty list"), ChannelPtr(this)); } foreach (const ContactPtr &contact, contacts) { if (!contact) { warning() << "Channel::groupRemoveContacts() used but contacts param contains " "invalid contact:"; return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Unable to remove invalid contacts"), ChannelPtr(this)); } } if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupRemoveContacts() used with no group interface"; return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Channel does not support group interface"), ChannelPtr(this)); } UIntList handles; foreach (const ContactPtr &contact, contacts) { handles << contact->handle()[0]; } return new PendingVoid( mPriv->group->RemoveMembersWithReason(handles, message, reason), ChannelPtr(this)); } /** * Return the current contacts of the group. * * It is possible to omit the contact representing the local user, even if * the contact is in the set, by passing \c false as the parameter \a * includeSelfContact. * * Change notification is via the groupMembersChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \param includeSelfContact Whether to include the self contact in the returned set. * \return A set of pointers to the Contact objects. * \sa groupLocalPendingContacts(), groupRemotePendingContacts() */ Contacts Channel::groupContacts(bool includeSelfContact) const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupMembers() used channel not ready"; } Contacts ret = mPriv->groupContacts.values().toSet(); if (!includeSelfContact) { ret.remove(groupSelfContact()); } return ret; } /** * Return the contacts currently waiting for local approval to join the * group. * * It is possible to omit the contact representing the local user, even if * the contact is in the set, by passing \c false as the parameter \a * includeSelfContact. * * Change notification is via the groupMembersChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \param includeSelfContact Whether to include the self contact in the returned set. * \return A set of pointers to the Contact objects. * \sa groupContacts(), groupRemotePendingContacts() */ Contacts Channel::groupLocalPendingContacts(bool includeSelfContact) const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupLocalPendingContacts() used channel not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupLocalPendingContacts() used with no group interface"; } Contacts ret = mPriv->groupLocalPendingContacts.values().toSet(); if (!includeSelfContact) { ret.remove(groupSelfContact()); } return ret; } /** * Return the contacts currently waiting for remote approval to join the * group. * * It is possible to omit the contact representing the local user, even if * the contact is in the set, by passing \c false as the parameter \a * includeSelfContact. * * Change notification is via the groupMembersChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \param includeSelfContact Whether to include the self contact in the returned set. * \return A set of pointers to the Contact objects. * \sa groupContacts(), groupLocalPendingContacts() */ Contacts Channel::groupRemotePendingContacts(bool includeSelfContact) const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupRemotePendingContacts() used channel not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupRemotePendingContacts() used with no " "group interface"; } Contacts ret = mPriv->groupRemotePendingContacts.values().toSet(); if (!includeSelfContact) { ret.remove(groupSelfContact()); } return ret; } /** * Return information of a local pending contact change. If * no information is available, an object for which * GroupMemberChangeDetails::isValid() returns false is returned. * * This method requires Channel::FeatureCore to be ready. * * \param contact A Contact object that is on the local pending contacts list. * \return The change info as a GroupMemberChangeDetails object. */ Channel::GroupMemberChangeDetails Channel::groupLocalPendingContactChangeInfo( const ContactPtr &contact) const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupLocalPendingContactChangeInfo() used channel not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupLocalPendingContactChangeInfo() used with no group interface"; } else if (!contact) { warning() << "Channel::groupLocalPendingContactChangeInfo() used with null contact param"; return GroupMemberChangeDetails(); } uint handle = contact->handle()[0]; return mPriv->groupLocalPendingContactsChangeInfo.value(handle); } /** * Return information on the removal of the local user from the group. If * the user hasn't been removed from the group, an object for which * GroupMemberChangeDetails::isValid() returns false is returned. * * This method should be called only after you've left the channel. * This is useful for getting the remove information after missing the * corresponding groupMembersChanged() signal, as the local user being * removed usually causes the channel to be closed. * * The returned information is not guaranteed to be correct if * groupIsSelfHandleTracked() returns false and a self handle change has * occurred on the remote object. * * This method requires Channel::FeatureCore to be ready. * * \return The remove info as a GroupMemberChangeDetails object. */ Channel::GroupMemberChangeDetails Channel::groupSelfContactRemoveInfo() const { // Oftentimes, the channel will be closed as a result from being left - so checking a channel's // self remove info when it has been closed and hence invalidated is valid if (isValid() && !isReady(Channel::FeatureCore)) { warning() << "Channel::groupSelfContactRemoveInfo() used before Channel::FeatureCore is ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupSelfContactRemoveInfo() used with " "no group interface"; } return mPriv->groupSelfContactRemoveInfo; } /** * Return whether globally valid handles can be looked up using the * channel-specific handle on this channel using this object. * * Handle owner lookup is only available if: *
    *
  • The object is ready *
  • The list returned by interfaces() contains #TP_QT_IFACE_CHANNEL_INTERFACE_GROUP
  • *
  • The set of flags returned by groupFlags() contains * #GroupFlagProperties and #GroupFlagChannelSpecificHandles
  • *
* * If this function returns \c false, the return value of * groupHandleOwners() is undefined and groupHandleOwnersChanged() will * never be emitted. * * The value returned by this function will stay fixed for the entire time * the object is ready, so no change notification is provided. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if handle owner lookup functionality is available, \c false otherwise. */ bool Channel::groupAreHandleOwnersAvailable() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupAreHandleOwnersAvailable() used channel not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupAreHandleOwnersAvailable() used with " "no group interface"; } return mPriv->groupAreHandleOwnersAvailable; } /** * Return a mapping of handles specific to this channel to globally valid * handles. * * The mapping includes at least all of the channel-specific handles in this * channel's members, local-pending and remote-pending sets as keys. Any * handle not in the keys of this mapping is not channel-specific in this * channel. Handles which are channel-specific, but for which the owner is * unknown, appear in this mapping with 0 as owner. * * Change notification is via the groupHandleOwnersChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \return A mapping from group-specific handles to globally valid handles. */ HandleOwnerMap Channel::groupHandleOwners() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupHandleOwners() used channel not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupAreHandleOwnersAvailable() used with no " "group interface"; } else if (!groupAreHandleOwnersAvailable()) { warning() << "Channel::groupAreHandleOwnersAvailable() used, but handle " "owners not available"; } return mPriv->groupHandleOwners; } /** * Return whether the value returned by groupSelfContact() is guaranteed to * accurately represent the local user even after nickname changes, etc. * * This should always be \c true for new services implementing the group interface. * * Older services not providing group properties don't necessarily * emit the SelfHandleChanged signal either, so self contact changes can't be * reliably tracked. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if changes to the self contact are tracked, \c false otherwise. */ bool Channel::groupIsSelfContactTracked() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupIsSelfHandleTracked() used channel not ready"; } else if (!interfaces().contains(TP_QT_IFACE_CHANNEL_INTERFACE_GROUP)) { warning() << "Channel::groupIsSelfHandleTracked() used with " "no group interface"; } return mPriv->groupIsSelfHandleTracked; } /** * Return a Contact object representing the user in the group if at all possible, otherwise a * Contact object representing the user globally. * * Change notification is via the groupSelfContactChanged() signal. * * This method requires Channel::FeatureCore to be ready. * * \return A pointer to the Contact object. */ ContactPtr Channel::groupSelfContact() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupSelfContact() used channel not ready"; } return mPriv->groupSelfContact; } /** * Return whether the local user is in the "local pending" state. This * indicates that the local user needs to take action to accept an invitation, * an incoming call, etc. * * This method requires Channel::FeatureCore to be ready. * * \return \c true if local user is in the channel's local-pending set, \c false otherwise. */ bool Channel::groupSelfHandleIsLocalPending() const { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupSelfHandleIsLocalPending() used when " "channel not ready"; return false; } return mPriv->groupLocalPendingContacts.contains(mPriv->groupSelfHandle); } /** * Attempt to add the local user to this channel. In some channel types, * such as Text and StreamedMedia, this is used to accept an invitation or an * incoming call. * * This method requires Channel::FeatureCore to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. */ PendingOperation *Channel::groupAddSelfHandle() { if (!isReady(Channel::FeatureCore)) { warning() << "Channel::groupAddSelfHandle() used when channel not " "ready"; return new PendingFailure(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Channel object not ready"), ChannelPtr(this)); } UIntList handles; if (mPriv->groupSelfHandle == 0) { handles << mPriv->connection->selfHandle(); } else { handles << mPriv->groupSelfHandle; } return new PendingVoid( mPriv->group->AddMembers(handles, QLatin1String("")), ChannelPtr(this)); } //@} /** * Return whether this channel implements the conference interface * (#TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE is in the list returned by interfaces()). * * This method requires Channel::FeatureCore to be ready. * * \return \c true if the conference interface is supported, \c false otherwise. */ bool Channel::isConference() const { return hasInterface(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE); } /** * Return a list of contacts invited to this conference when it was created. * * This method requires Channel::FeatureConferenceInitialInviteeContacts to be ready. * * \return A set of pointers to the Contact objects. */ Contacts Channel::conferenceInitialInviteeContacts() const { return mPriv->conferenceInitialInviteeContacts; } /** * Return the individual channels that are part of this conference. * * Change notification is via the conferenceChannelMerged() and * conferenceChannelRemoved() signals. * * Note that the returned channels are not guaranteed to be ready. Calling * Channel::becomeReady() may be needed. * * This method requires Channel::FeatureCore to be ready. * * \return A list of pointers to Channel objects containing all channels in the conference. * \sa conferenceInitialChannels(), conferenceOriginalChannels() */ QList Channel::conferenceChannels() const { return mPriv->conferenceChannels.values(); } /** * Return the initial value of conferenceChannels(). * * Note that the returned channels are not guaranteed to be ready. Calling * Channel::becomeReady() may be needed. * * This method requires Channel::FeatureCore to be ready. * * \return A list of pointers to Channel objects containing all channels that were initially * part of the conference. * \sa conferenceChannels(), conferenceOriginalChannels() */ QList Channel::conferenceInitialChannels() const { return mPriv->conferenceInitialChannels.values(); } /** * Return a map between channel specific handles and the corresponding channels of this conference. * * This method is only relevant on GSM conference calls where it is possible to have the same phone * number in a conference twice; for instance, it could be the number of a corporate switchboard. * This is represented using channel-specific handles; whether or not a channel uses * channel-specific handles is reported in groupFlags(). The groupHandleOwners() specifies the * mapping from opaque channel-specific handles to actual numbers; this property specifies the * original 1-1 channel corresponding to each channel-specific handle in the conference. * * In protocols where this situation cannot arise, such as XMPP, this method will return an empty * hash. * * Example, consider this situation: * 1. Place a call (with path /call/to/simon) to the contact +441234567890 (which is assigned the * handle h, say), and ask to be put through to Simon McVittie; * 2. Put that call on hold; * 3. Place another call (with path /call/to/jonny) to +441234567890, and ask to be put through to * Jonny Lamb; * 4. Request a new conference channel with initial channels: ['/call/to/simon', '/call/to/jonny']. * * The new channel will have the following properties, for some handles s and j: * * { * groupFlags(): ChannelGroupFlagChannelSpecificHandles | (other flags), * groupMembers(): [self handle, s, j], * groupHandleOwners(): { s: h, j: h }, * conferenceInitialChannels(): ['/call/to/simon', '/call/to/jonny'], * conferenceChannels(): ['/call/to/simon', '/call/to/jonny'], * conferenceOriginalChannels(): { s: '/call/to/simon', j: '/call/to/jonny' }, * # ... * } * * Note that the returned channels are not guaranteed to be ready. Calling * Channel::becomeReady() may be needed. * * This method requires Channel::FeatureCore to be ready. * * \return A map of channel specific handles to pointers to Channel objects. * \sa conferenceChannels(), conferenceInitialChannels() */ QHash Channel::conferenceOriginalChannels() const { return mPriv->conferenceOriginalChannels; } /** * Return whether this channel supports conference merging using conferenceMergeChannel(). * * This method requires Channel::FeatureCore to be ready. * * \return \c true if the interface is supported, \c false otherwise. * \sa conferenceMergeChannel() */ bool Channel::supportsConferenceMerging() const { return interfaces().contains(TP_QT_FUTURE_IFACE_CHANNEL_INTERFACE_MERGEABLE_CONFERENCE); } /** * Request that the given channel be incorporated into this channel. * * This method requires Channel::FeatureCore to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa supportsConferenceMerging() */ PendingOperation *Channel::conferenceMergeChannel(const ChannelPtr &channel) { if (!supportsConferenceMerging()) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Channel does not support MergeableConference interface"), ChannelPtr(this)); } return new PendingVoid(mPriv->mergeableConferenceInterface()->Merge( QDBusObjectPath(channel->objectPath())), ChannelPtr(this)); } /** * Return whether this channel supports splitting using conferenceSplitChannel(). * * This method requires Channel::FeatureCore to be ready. * * \return \c true if the interface is supported, \c false otherwise. * \sa conferenceSplitChannel() */ bool Channel::supportsConferenceSplitting() const { return interfaces().contains(TP_QT_FUTURE_IFACE_CHANNEL_INTERFACE_SPLITTABLE); } /** * Request that this channel is removed from any conference of which it is * a part. * * This method requires Channel::FeatureCore to be ready. * * \return A PendingOperation which will emit PendingOperation::finished * when the call has finished. * \sa supportsConferenceSplitting() */ PendingOperation *Channel::conferenceSplitChannel() { if (!supportsConferenceSplitting()) { return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Channel does not support Splittable interface"), ChannelPtr(this)); } return new PendingVoid(mPriv->splittableInterface()->Split(), ChannelPtr(this)); } /** * Return the Client::ChannelInterface interface proxy object for this channel. * This method is protected since the convenience methods provided by this * class should generally be used instead of calling D-Bus methods * directly. * * \return A pointer to the existing Client::ChannelInterface object for this * Channel object. */ Client::ChannelInterface *Channel::baseInterface() const { return mPriv->baseInterface; } void Channel::gotMainProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QVariantMap props; if (!reply.isError()) { debug() << "Got reply to Properties::GetAll(Channel)"; props = reply.value(); } else { warning().nospace() << "Properties::GetAll(Channel) failed with " << reply.error().name() << ": " << reply.error().message(); } mPriv->extractMainProps(props); mPriv->continueIntrospection(); } void Channel::gotChannelType(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel::GetChannelType() failed with " << reply.error().name() << ": " << reply.error().message() << ", Channel officially dead"; invalidate(reply.error()); return; } debug() << "Got reply to fallback Channel::GetChannelType()"; mPriv->channelType = reply.value(); mPriv->continueIntrospection(); } void Channel::gotHandle(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel::GetHandle() failed with " << reply.error().name() << ": " << reply.error().message() << ", Channel officially dead"; invalidate(reply.error()); return; } debug() << "Got reply to fallback Channel::GetHandle()"; mPriv->targetHandleType = reply.argumentAt<0>(); mPriv->targetHandle = reply.argumentAt<1>(); mPriv->continueIntrospection(); } void Channel::gotInterfaces(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel::GetInterfaces() failed with " << reply.error().name() << ": " << reply.error().message() << ", Channel officially dead"; invalidate(reply.error()); return; } debug() << "Got reply to fallback Channel::GetInterfaces()"; setInterfaces(reply.value()); mPriv->readinessHelper->setInterfaces(interfaces()); mPriv->nowHaveInterfaces(); mPriv->fakeGroupInterfaceIfNeeded(); mPriv->continueIntrospection(); } void Channel::onClosed() { debug() << "Got Channel::Closed"; QString error; QString message; if (mPriv->groupSelfContactRemoveInfo.isValid() && mPriv->groupSelfContactRemoveInfo.hasReason()) { error = mPriv->groupMemberChangeDetailsTelepathyError( mPriv->groupSelfContactRemoveInfo); message = mPriv->groupSelfContactRemoveInfo.message(); } else { error = TP_QT_ERROR_CANCELLED; message = QLatin1String("channel closed"); } invalidate(error, message); } void Channel::onConnectionReady(PendingOperation *op) { if (op->isError()) { invalidate(op->errorName(), op->errorMessage()); return; } // FIXME: should connect to selfHandleChanged and act accordingly, but that is a PITA for // keeping the Contacts built and even if we don't do it, the new code is better than the // old one anyway because earlier on we just wouldn't have had a self contact. // // besides, the only thing which breaks without connecting in the world likely is if you're // using idle and decide to change your nick, which I don't think we necessarily even have API // to do from tp-qt anyway (or did I make idle change the nick when setting your alias? can't // remember) // // Simply put, I just don't care ATM. // Will be overwritten by the group self handle, if we can discover any. Q_ASSERT(!mPriv->groupSelfHandle); mPriv->groupSelfHandle = mPriv->connection->selfHandle(); mPriv->introspectMainProperties(); } void Channel::onConnectionInvalidated() { debug() << "Owning connection died leaving an orphan Channel, " "changing to closed"; invalidate(TP_QT_ERROR_ORPHANED, QLatin1String("Connection given as the owner of this channel was invalidated")); } void Channel::gotGroupProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QVariantMap props; if (!reply.isError()) { debug() << "Got reply to Properties::GetAll(Channel.Interface.Group)"; props = reply.value(); } else { warning().nospace() << "Properties::GetAll(Channel.Interface.Group) " "failed with " << reply.error().name() << ": " << reply.error().message(); } mPriv->extract0176GroupProps(props); // Add extraction (and possible fallbacks) in similar functions, called from here mPriv->continueIntrospection(); } void Channel::gotGroupFlags(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel.Interface.Group::GetGroupFlags() failed with " << reply.error().name() << ": " << reply.error().message(); } else { debug() << "Got reply to fallback Channel.Interface.Group::GetGroupFlags()"; mPriv->setGroupFlags(reply.value()); if (mPriv->groupFlags & ChannelGroupFlagProperties) { warning() << " Reply included ChannelGroupFlagProperties, even " "though properties specified in 0.17.7 didn't work! - unsetting"; mPriv->groupFlags &= ~ChannelGroupFlagProperties; } } mPriv->continueIntrospection(); } void Channel::gotAllMembers(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel.Interface.Group::GetAllMembers() failed with " << reply.error().name() << ": " << reply.error().message(); } else { debug() << "Got reply to fallback Channel.Interface.Group::GetAllMembers()"; mPriv->groupInitialMembers = reply.argumentAt<0>(); mPriv->groupInitialRP = reply.argumentAt<2>(); foreach (uint handle, reply.argumentAt<1>()) { LocalPendingInfo info = {handle, 0, ChannelGroupChangeReasonNone, QLatin1String("")}; mPriv->groupInitialLP.push_back(info); } } mPriv->continueIntrospection(); } void Channel::gotLocalPendingMembersWithInfo(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel.Interface.Group::GetLocalPendingMembersWithInfo() " "failed with " << reply.error().name() << ": " << reply.error().message(); warning() << " Falling back to what GetAllMembers returned with no extended info"; } else { debug() << "Got reply to fallback " "Channel.Interface.Group::GetLocalPendingMembersWithInfo()"; // Overrides the previous vague list provided by gotAllMembers mPriv->groupInitialLP = reply.value(); } mPriv->continueIntrospection(); } void Channel::gotSelfHandle(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isError()) { warning().nospace() << "Channel.Interface.Group::GetSelfHandle() failed with " << reply.error().name() << ": " << reply.error().message(); } else { debug() << "Got reply to fallback Channel.Interface.Group::GetSelfHandle()"; // Don't overwrite the self handle we got from the connection with 0 if (reply.value()) { mPriv->groupSelfHandle = reply.value(); } } mPriv->nowHaveInitialMembers(); mPriv->continueIntrospection(); } void Channel::gotContacts(PendingOperation *op) { PendingContacts *pending = qobject_cast(op); mPriv->buildingContacts = false; QList contacts; if (pending->isValid()) { contacts = pending->contacts(); if (!pending->invalidHandles().isEmpty()) { warning() << "Unable to construct Contact objects for handles:" << pending->invalidHandles(); if (mPriv->groupSelfHandle && pending->invalidHandles().contains(mPriv->groupSelfHandle)) { warning() << "Unable to retrieve self contact"; mPriv->groupSelfContact.reset(); emit groupSelfContactChanged(); } } } else { warning().nospace() << "Getting contacts failed with " << pending->errorName() << ":" << pending->errorMessage(); } mPriv->updateContacts(contacts); } void Channel::onGroupFlagsChanged(uint added, uint removed) { debug().nospace() << "Got Channel.Interface.Group::GroupFlagsChanged(" << hex << added << ", " << removed << ")"; added &= ~(mPriv->groupFlags); removed &= mPriv->groupFlags; debug().nospace() << "Arguments after filtering (" << hex << added << ", " << removed << ")"; uint groupFlags = mPriv->groupFlags; groupFlags |= added; groupFlags &= ~removed; // just emit groupFlagsChanged and related signals if the flags really // changed and we are ready if (mPriv->setGroupFlags(groupFlags) && isReady(Channel::FeatureCore)) { debug() << "Emitting groupFlagsChanged with" << mPriv->groupFlags << "value" << added << "added" << removed << "removed"; emit groupFlagsChanged((ChannelGroupFlags) mPriv->groupFlags, (ChannelGroupFlags) added, (ChannelGroupFlags) removed); if (added & ChannelGroupFlagCanAdd || removed & ChannelGroupFlagCanAdd) { debug() << "Emitting groupCanAddContactsChanged"; emit groupCanAddContactsChanged(groupCanAddContacts()); } if (added & ChannelGroupFlagCanRemove || removed & ChannelGroupFlagCanRemove) { debug() << "Emitting groupCanRemoveContactsChanged"; emit groupCanRemoveContactsChanged(groupCanRemoveContacts()); } if (added & ChannelGroupFlagCanRescind || removed & ChannelGroupFlagCanRescind) { debug() << "Emitting groupCanRescindContactsChanged"; emit groupCanRescindContactsChanged(groupCanRescindContacts()); } } } void Channel::onMembersChanged(const QString &message, const UIntList &added, const UIntList &removed, const UIntList &localPending, const UIntList &remotePending, uint actor, uint reason) { // Ignore the signal if we're using the MCD signal to not duplicate events if (mPriv->usingMembersChangedDetailed) { return; } debug() << "Got Channel.Interface.Group::MembersChanged with" << added.size() << "added," << removed.size() << "removed," << localPending.size() << "moved to LP," << remotePending.size() << "moved to RP," << actor << "being the actor," << reason << "the reason and" << message << "the message"; debug() << " synthesizing a corresponding MembersChangedDetailed signal"; QVariantMap details; if (!message.isEmpty()) { details.insert(QLatin1String("message"), message); } if (actor != 0) { details.insert(QLatin1String("actor"), actor); } details.insert(QLatin1String("change-reason"), reason); mPriv->doMembersChangedDetailed(added, removed, localPending, remotePending, details); } void Channel::onMembersChangedDetailed( const UIntList &added, const UIntList &removed, const UIntList &localPending, const UIntList &remotePending, const QVariantMap &details) { // Ignore the signal if we aren't (yet) using MCD to not duplicate events if (!mPriv->usingMembersChangedDetailed) { return; } debug() << "Got Channel.Interface.Group::MembersChangedDetailed with" << added.size() << "added," << removed.size() << "removed," << localPending.size() << "moved to LP," << remotePending.size() << "moved to RP and with" << details.size() << "details"; mPriv->doMembersChangedDetailed(added, removed, localPending, remotePending, details); } void Channel::Private::doMembersChangedDetailed( const UIntList &added, const UIntList &removed, const UIntList &localPending, const UIntList &remotePending, const QVariantMap &details) { if (!groupHaveMembers) { debug() << "Still waiting for initial group members, " "so ignoring delta signal..."; return; } if (added.isEmpty() && removed.isEmpty() && localPending.isEmpty() && remotePending.isEmpty()) { debug() << "Nothing really changed, so skipping membersChanged"; return; } // let's store groupSelfContactRemoveInfo here as we may not have time // to build the contacts in case self contact is removed, // as Closed will be emitted right after if (removed.contains(groupSelfHandle)) { if (qdbus_cast(details.value(QLatin1String("change-reason"))) == ChannelGroupChangeReasonRenamed) { if (removed.size() != 1 || (added.size() + localPending.size() + remotePending.size()) != 1) { // spec-incompliant CM, ignoring members changed warning() << "Received MembersChangedDetailed with reason " "Renamed and removed.size != 1 or added.size + " "localPending.size + remotePending.size != 1. Ignoring"; return; } uint newHandle = 0; if (!added.isEmpty()) { newHandle = added.first(); } else if (!localPending.isEmpty()) { newHandle = localPending.first(); } else if (!remotePending.isEmpty()) { newHandle = remotePending.first(); } parent->onSelfHandleChanged(newHandle); return; } // let's try to get the actor contact from contact manager if available groupSelfContactRemoveInfo = GroupMemberChangeDetails( connection->contactManager()->lookupContactByHandle( qdbus_cast(details.value(QLatin1String("actor")))), details); } HandleIdentifierMap contactIds = qdbus_cast( details.value(GroupMembersChangedInfo::keyContactIds)); connection->lowlevel()->injectContactIds(contactIds); groupMembersChangedQueue.enqueue( new Private::GroupMembersChangedInfo( added, removed, localPending, remotePending, details)); if (!buildingContacts) { // if we are building contacts, we should wait it to finish so we don't // present the user with wrong information processMembersChanged(); } } void Channel::onHandleOwnersChanged(const HandleOwnerMap &added, const UIntList &removed) { debug() << "Got Channel.Interface.Group::HandleOwnersChanged with" << added.size() << "added," << removed.size() << "removed"; if (!mPriv->groupAreHandleOwnersAvailable) { debug() << "Still waiting for initial handle owners, so ignoring " "delta signal..."; return; } UIntList emitAdded; UIntList emitRemoved; for (HandleOwnerMap::const_iterator i = added.begin(); i != added.end(); ++i) { uint handle = i.key(); uint global = i.value(); if (!mPriv->groupHandleOwners.contains(handle) || mPriv->groupHandleOwners[handle] != global) { debug() << " +++/changed" << handle << "->" << global; mPriv->groupHandleOwners[handle] = global; emitAdded.append(handle); } } foreach (uint handle, removed) { if (mPriv->groupHandleOwners.contains(handle)) { debug() << " ---" << handle; mPriv->groupHandleOwners.remove(handle); emitRemoved.append(handle); } } // just emit groupHandleOwnersChanged if it really changed and // we are ready if ((emitAdded.size() || emitRemoved.size()) && isReady(Channel::FeatureCore)) { debug() << "Emitting groupHandleOwnersChanged with" << emitAdded.size() << "added" << emitRemoved.size() << "removed"; emit groupHandleOwnersChanged(mPriv->groupHandleOwners, emitAdded, emitRemoved); } } void Channel::onSelfHandleChanged(uint selfHandle) { debug().nospace() << "Got Channel.Interface.Group::SelfHandleChanged"; if (selfHandle != mPriv->groupSelfHandle) { mPriv->groupSelfHandle = selfHandle; debug() << " Emitting groupSelfHandleChanged with new self handle" << selfHandle; // FIXME: fix self contact building with no group mPriv->pendingRetrieveGroupSelfContact = true; } } void Channel::gotConferenceProperties(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; QVariantMap props; mPriv->introspectingConference = false; if (!reply.isError()) { debug() << "Got reply to Properties::GetAll(Channel.Interface.Conference)"; props = reply.value(); ConnectionPtr conn = connection(); ChannelFactoryConstPtr chanFactory = conn->channelFactory(); ObjectPathList channels = qdbus_cast(props[QLatin1String("Channels")]); foreach (const QDBusObjectPath &channelPath, channels) { if (mPriv->conferenceChannels.contains(channelPath.path())) { continue; } PendingReady *readyOp = chanFactory->proxy(conn, channelPath.path(), QVariantMap()); ChannelPtr channel(ChannelPtr::qObjectCast(readyOp->proxy())); Q_ASSERT(!channel.isNull()); mPriv->conferenceChannels.insert(channelPath.path(), channel); } ObjectPathList initialChannels = qdbus_cast(props[QLatin1String("InitialChannels")]); foreach (const QDBusObjectPath &channelPath, initialChannels) { if (mPriv->conferenceInitialChannels.contains(channelPath.path())) { continue; } PendingReady *readyOp = chanFactory->proxy(conn, channelPath.path(), QVariantMap()); ChannelPtr channel(ChannelPtr::qObjectCast(readyOp->proxy())); Q_ASSERT(!channel.isNull()); mPriv->conferenceInitialChannels.insert(channelPath.path(), channel); } mPriv->conferenceInitialInviteeHandles = qdbus_cast(props[QLatin1String("InitialInviteeHandles")]); QStringList conferenceInitialInviteeIds = qdbus_cast(props[QLatin1String("InitialInviteeIDs")]); if (mPriv->conferenceInitialInviteeHandles.size() == conferenceInitialInviteeIds.size()) { HandleIdentifierMap contactIds; int i = 0; foreach (uint handle, mPriv->conferenceInitialInviteeHandles) { contactIds.insert(handle, conferenceInitialInviteeIds.at(i++)); } mPriv->connection->lowlevel()->injectContactIds(contactIds); } mPriv->conferenceInvitationMessage = qdbus_cast(props[QLatin1String("InvitationMessage")]); ChannelOriginatorMap originalChannels = qdbus_cast( props[QLatin1String("OriginalChannels")]); for (ChannelOriginatorMap::const_iterator i = originalChannels.constBegin(); i != originalChannels.constEnd(); ++i) { PendingReady *readyOp = chanFactory->proxy(conn, i.value().path(), QVariantMap()); ChannelPtr channel(ChannelPtr::qObjectCast(readyOp->proxy())); Q_ASSERT(!channel.isNull()); mPriv->conferenceOriginalChannels.insert(i.key(), channel); } } else { warning().nospace() << "Properties::GetAll(Channel.Interface.Conference) " "failed with " << reply.error().name() << ": " << reply.error().message(); } mPriv->continueIntrospection(); } void Channel::gotConferenceInitialInviteeContacts(PendingOperation *op) { PendingContacts *pending = qobject_cast(op); if (pending->isValid()) { mPriv->conferenceInitialInviteeContacts = pending->contacts().toSet(); } else { warning().nospace() << "Getting conference initial invitee contacts " "failed with " << pending->errorName() << ":" << pending->errorMessage(); } mPriv->readinessHelper->setIntrospectCompleted( FeatureConferenceInitialInviteeContacts, true); } void Channel::onConferenceChannelMerged(const QDBusObjectPath &channelPath, uint channelSpecificHandle, const QVariantMap &properties) { if (mPriv->conferenceChannels.contains(channelPath.path())) { return; } ConnectionPtr conn = connection(); ChannelFactoryConstPtr chanFactory = conn->channelFactory(); PendingReady *readyOp = chanFactory->proxy(conn, channelPath.path(), properties); ChannelPtr channel(ChannelPtr::qObjectCast(readyOp->proxy())); Q_ASSERT(!channel.isNull()); mPriv->conferenceChannels.insert(channelPath.path(), channel); emit conferenceChannelMerged(channel); if (channelSpecificHandle != 0) { mPriv->conferenceOriginalChannels.insert(channelSpecificHandle, channel); } } void Channel::onConferenceChannelMerged(const QDBusObjectPath &channelPath) { onConferenceChannelMerged(channelPath, 0, QVariantMap()); } void Channel::onConferenceChannelRemoved(const QDBusObjectPath &channelPath, const QVariantMap &details) { if (!mPriv->conferenceChannels.contains(channelPath.path())) { return; } HandleIdentifierMap contactIds = qdbus_cast( details.value(Private::GroupMembersChangedInfo::keyContactIds)); mPriv->connection->lowlevel()->injectContactIds(contactIds); mPriv->conferenceChannelRemovedQueue.enqueue( new Private::ConferenceChannelRemovedInfo(channelPath, details)); mPriv->processConferenceChannelRemoved(); } void Channel::onConferenceChannelRemoved(const QDBusObjectPath &channelPath) { onConferenceChannelRemoved(channelPath, QVariantMap()); } void Channel::gotConferenceChannelRemovedActorContact(PendingOperation *op) { ContactPtr actorContact; if (op) { PendingContacts *pc = qobject_cast(op); if (pc->isValid()) { Q_ASSERT(pc->contacts().size() == 1); actorContact = pc->contacts().first(); } else { warning().nospace() << "Getting conference channel removed actor " "failed with " << pc->errorName() << ":" << pc->errorMessage(); } } Private::ConferenceChannelRemovedInfo *info = mPriv->conferenceChannelRemovedQueue.dequeue(); ChannelPtr channel = mPriv->conferenceChannels[info->channelPath.path()]; mPriv->conferenceChannels.remove(info->channelPath.path()); emit conferenceChannelRemoved(channel, GroupMemberChangeDetails(actorContact, info->details)); for (QHash::iterator i = mPriv->conferenceOriginalChannels.begin(); i != mPriv->conferenceOriginalChannels.end();) { if (i.value() == channel) { i = mPriv->conferenceOriginalChannels.erase(i); } else { ++i; } } delete info; mPriv->buildingConferenceChannelRemovedActorContact = false; mPriv->processConferenceChannelRemoved(); } /** * \fn void Channel::groupFlagsChanged(uint flags, uint added, uint removed) * * Emitted when the value of groupFlags() changes. * * \param flags The value which would now be returned by groupFlags(). * \param added Flags added compared to the previous value. * \param removed Flags removed compared to the previous value. */ /** * \fn void Channel::groupCanAddContactsChanged(bool canAddContacts) * * Emitted when the value of groupCanAddContacts() changes. * * \param canAddContacts Whether a contact can be added to this channel. * \sa groupCanAddContacts() */ /** * \fn void Channel::groupCanRemoveContactsChanged(bool canRemoveContacts) * * Emitted when the value of groupCanRemoveContacts() changes. * * \param canRemoveContacts Whether a contact can be removed from this channel. * \sa groupCanRemoveContacts() */ /** * \fn void Channel::groupCanRescindContactsChanged(bool canRescindContacts) * * Emitted when the value of groupCanRescindContacts() changes. * * \param canRescindContacts Whether contact invitations can be rescinded. * \sa groupCanRescindContacts() */ /** * \fn void Channel::groupMembersChanged( * const Tp::Contacts &groupMembersAdded, * const Tp::Contacts &groupLocalPendingMembersAdded, * const Tp::Contacts &groupRemotePendingMembersAdded, * const Tp::Contacts &groupMembersRemoved, * const Channel::GroupMemberChangeDetails &details) * * Emitted when the value returned by groupContacts(), groupLocalPendingContacts() or * groupRemotePendingContacts() changes. * * \param groupMembersAdded The contacts that were added to this channel. * \param groupLocalPendingMembersAdded The local pending contacts that were * added to this channel. * \param groupRemotePendingMembersAdded The remote pending contacts that were * added to this channel. * \param groupMembersRemoved The contacts removed from this channel. * \param details Additional details such as the contact requesting or causing * the change. */ /** * \fn void Channel::groupHandleOwnersChanged(const HandleOwnerMap &owners, * const Tp::UIntList &added, const Tp::UIntList &removed) * * Emitted when the value returned by groupHandleOwners() changes. * * \param owners The value which would now be returned by * groupHandleOwners(). * \param added Handles which have been added to the mapping as keys, or * existing handle keys for which the mapped-to value has changed. * \param removed Handles which have been removed from the mapping. */ /** * \fn void Channel::groupSelfContactChanged() * * Emitted when the value returned by groupSelfContact() changes. */ /** * \fn void Channel::conferenceChannelMerged(const Tp::ChannelPtr &channel) * * Emitted when a new channel is added to the value of conferenceChannels(). * * \param channel The channel that was added to conferenceChannels(). */ /** * \fn void Channel::conferenceChannelRemoved(const Tp::ChannelPtr &channel, * const Tp::Channel::GroupMemberChangeDetails &details) * * Emitted when a new channel is removed from the value of conferenceChannels(). * * \param channel The channel that was removed from conferenceChannels(). * \param details The change details. */ } // Tp telepathy-qt-0.9.6.1/TelepathyQt/channel.xml0000644000175100017520000000426412530423576022326 0ustar00kaffeinekaffeine00000000000000 Channel interfaces telepathy-qt-0.9.6.1/TelepathyQt/ChannelTypeServerTLSConnectionInterface0000644000175100017520000000044312530423576027737 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ChannelTypeServerTLSConnectionInterface_HEADER_GUARD_ #define _TelepathyQt_ChannelTypeServerTLSConnectionInterface_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/ProtocolInfoList0000644000175100017520000000037312530423576023365 0ustar00kaffeinekaffeine00000000000000#ifndef _TelepathyQt_ProtocolInfoList_HEADER_GUARD_ #define _TelepathyQt_ProtocolInfoList_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #define IN_TP_QT_HEADER #endif #include #undef IN_TP_QT_HEADER #endif // vim:set ft=cpp: telepathy-qt-0.9.6.1/TelepathyQt/dbus-object.h0000644000175100017520000000315212530423576022541 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_dbus_object_h_HEADER_GUARD_ #define _TelepathyQt_dbus_object_h_HEADER_GUARD_ #ifndef IN_TP_QT_HEADER #error IN_TP_QT_HEADER #endif #include #include class QDBusConnection; namespace Tp { class TP_QT_EXPORT DBusObject : public QObject { Q_OBJECT Q_DISABLE_COPY(DBusObject) public: DBusObject(const QDBusConnection &dbusConnection, QObject *parent = 0); virtual ~DBusObject(); QString objectPath() const; QDBusConnection dbusConnection() const; protected: void setObjectPath(const QString &path); private: class Private; friend class Private; Private *mPriv; friend class DBusService; }; } #endif telepathy-qt-0.9.6.1/TelepathyQt/shared-ptr.dox0000644000175100017520000001252212530423576022755 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * @copyright Copyright (C) 2008-2011 Collabora Ltd. * @copyright Copyright (C) 2008-2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * \page shared_ptr Shared Pointer Usage * * \section shared_ptr_overview Overview * * The Qt parent/child object model does not fit well with Telepathy-Qt object * model, where in some places we either don't know the object parent or we * can't use a parent, as the object can stay alive without it. * * To avoid memory leaks, caused by objects that got instantiated and don't have * any parent, we decided to make some of our objects reference counted, by * making them inherit RefCounted. * * Making the object reference counted, does not guarantee that it will get * deleted when nobody is referencing it. * * When instantiating new classes that inherits RefCounted the reference count * is 0, this is referred to as the floating state. Again this may lead to * memory leaks, caused by objects in the floating state that never get deleted. * * So the solution is to put the object in a SharedPtr as soon as possible, * letting the SharedPtr manage the object lifetime. * * The pattern used is that classes inherit RefCounted and are used * together with SharedPtr. When the reference count hits 0, the object * is deleted. * * In order to assure that the object is put in a SharedPtr as soon as possible, * our objects inheriting RefCounted will have the constructor either private * or protected, in case we want to support custom classes, and will have a * public static create method that will return a SharedPtr pointing to the * object instance. * * Note that when developing custom classes, this pattern should be followed, * to avoid objects in floating state, avoiding memory leaks. */ /** * \class Tp::RefCounted * \ingroup utils * \headerfile TelepathyQt/shared-ptr.h * * \brief The RefCounted class is a base class for shared objects used by * SharedPtr. * * See \ref shared_ptr */ /** * \class Tp::SharedPtr * \ingroup utils * \headerfile TelepathyQt/shared-ptr.h * * \brief The SharedPtr class is a pointer to an explicitly shared object. * * Note that from Telepathy-Qt >= 0.9.0, Tp::SharedPtr cannot be constructed from a QWeakPointer as * the conversion from a QWeakPointer to a Tp::SharedPtr can't be made thread-safe. * Tp::WeakPtr is reintroduced as a weak pointer class safely promoteable to a Tp::SharedPtr. * * See \ref shared_ptr */ /** * \fn static SharedPtr Tp::SharedPtr::dynamicCast(const SharedPtr &) * * Casts the pointer given by src to a pointer pointing to an object of type T. The cast will * succeed if the C++ runtime type identification mechanism considers the type T to be the actual * runtime type of the object pointed to by src or one of its (possibly indirect) parent classes. * Otherwise, a null pointer is returned. * * Note that this also allows down-casting a baseclass pointer to a subclass pointer. * * This cast method should not be used for QObject-derived classes, as Qt provides a more portable * and efficient type identification mechanism, which is used by qObjectCast(). * * This cast method requires the C++ dynamic runtime type identification facility to be enabled * (which might be disabled by eg. the -fno-rtti flag of the GNU G++ compiler). */ /** * \fn static SharedPtr Tp::SharedPtr::qObjectCast(const SharedPtr &) * * Casts the pointer given by src to a pointer pointing to an object of type T. The cast will * succeed if the Qt runtime type identification mechanism considers the type T to be the actual * runtime type of the object pointed to by src or one of its (possibly indirect) parent classes. * Otherwise, a null pointer is returned. * * Note that this also allows down-casting a baseclass pointer to a subclass pointer. * * This cast method MUST not be used for classes not derived from QObject. However, dynamicCast() * provides the same semantics for all classes, provided the C++ runtime type identification * facility is enabled. This method, on the other hand, doesn't require the standard C++ facility * and is probably also faster for the types it can be used with. */ /** * \class Tp::WeakPtr * \ingroup utils * \headerfile TelepathyQt/shared-ptr.h * * \brief The WeakPtr class holds a weak reference to an object managed by SharedPtr. * * Tp::WeakPtr is useful for example for breaking reference cycles which would result from * using a Tp::SharedPtr for both ends of a pair of mutually linked objects to refer to each other. * * See \ref shared_ptr */ telepathy-qt-0.9.6.1/config.h.in0000644000175100017520000000004612530423576017745 0ustar00kaffeinekaffeine00000000000000#define PACKAGE_NAME "@PACKAGE_NAME@" telepathy-qt-0.9.6.1/doxygen-header.html0000644000175100017520000000165212530423576021517 0ustar00kaffeinekaffeine00000000000000 $title
   Home · All Classes · All Namespaces · Modules · Functions · Files
telepathy-qt-0.9.6.1/AUTHORS0000644000175100017520000000025412530423576016773 0ustar00kaffeinekaffeine00000000000000Andre Moreira Magalhaes (andrunko) Olli Salli (oggis) Simon McVittie (smcv) telepathy-qt-0.9.6.1/config-version.h.in0000644000175100017520000000005412530423576021427 0ustar00kaffeinekaffeine00000000000000#define PACKAGE_VERSION "@PACKAGE_VERSION@" telepathy-qt-0.9.6.1/cmake_uninstall.cmake.in0000644000175100017520000000165412530423576022510 0ustar00kaffeinekaffeine00000000000000IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) STRING(REGEX REPLACE "\n" ";" files "${files}") FOREACH(file ${files}) MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") IF(EXISTS "$ENV{DESTDIR}${file}") EXEC_PROGRAM( "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval ) IF(NOT "${rm_retval}" STREQUAL 0) MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") ENDIF(NOT "${rm_retval}" STREQUAL 0) ELSE(EXISTS "$ENV{DESTDIR}${file}") MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") ENDIF(EXISTS "$ENV{DESTDIR}${file}") ENDFOREACH(file) telepathy-qt-0.9.6.1/examples/0000755000175100017520000000000012530423576017540 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/cm/0000755000175100017520000000000012530423576020137 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/cm/protocol.h0000644000175100017520000000364212530423576022156 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_cm_protocol_h_HEADER_GUARD_ #define _TelepathyQt_examples_cm_protocol_h_HEADER_GUARD_ #include class Protocol : public Tp::BaseProtocol { Q_OBJECT Q_DISABLE_COPY(Protocol) public: Protocol(const QDBusConnection &dbusConnection, const QString &name); virtual ~Protocol(); private: Tp::BaseConnectionPtr createConnection(const QVariantMap ¶meters, Tp::DBusError *error); QString identifyAccount(const QVariantMap ¶meters, Tp::DBusError *error); QString normalizeContact(const QString &contactId, Tp::DBusError *error); // Proto.I.Addressing QString normalizeVCardAddress(const QString &vCardField, const QString vCardAddress, Tp::DBusError *error); QString normalizeContactUri(const QString &uri, Tp::DBusError *error); Tp::BaseProtocolAddressingInterfacePtr addrIface; Tp::BaseProtocolAvatarsInterfacePtr avatarsIface; Tp::BaseProtocolPresenceInterfacePtr presenceIface; }; #endif telepathy-qt-0.9.6.1/examples/cm/CMakeLists.txt0000644000175100017520000000103312530423576022674 0ustar00kaffeinekaffeine00000000000000if(ENABLE_SERVICE_SUPPORT) set(cm_SRCS protocol.h protocol.cpp main.cpp) set(cm_MOC_SRCS protocol.h) tpqt_generate_mocs(${cm_MOC_SRCS}) add_executable(cm ${cm_SRCS} ${cm_MOC_SRCS}) target_link_libraries(cm ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} telepathy-qt${QT_VERSION_MAJOR}-service ${TP_QT_EXECUTABLE_LINKER_FLAGS}) endif(ENABLE_SERVICE_SUPPORT) telepathy-qt-0.9.6.1/examples/cm/main.cpp0000644000175100017520000000134712530423576021574 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include #include "protocol.h" using namespace Tp; int main(int argc, char **argv) { QCoreApplication app(argc, argv); Tp::registerTypes(); Tp::enableDebug(true); Tp::enableWarnings(true); BaseProtocolPtr proto = BaseProtocol::create( QDBusConnection::sessionBus(), QLatin1String("example-proto")); BaseConnectionManagerPtr cm = BaseConnectionManager::create( QDBusConnection::sessionBus(), QLatin1String("TpQtExampleCM")); cm->addProtocol(proto); cm->registerObject(); return app.exec(); } telepathy-qt-0.9.6.1/examples/cm/protocol.cpp0000644000175100017520000001076512530423576022515 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2012 Collabora Ltd. * @copyright Copyright (C) 2012 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "protocol.h" #include "_gen/protocol.moc.hpp" #include #include #include #include #include #include #include using namespace Tp; Protocol::Protocol(const QDBusConnection &dbusConnection, const QString &name) : BaseProtocol(dbusConnection, name) { setParameters(ProtocolParameterList() << ProtocolParameter(QLatin1String("example-param"), QLatin1String("s"), ConnMgrParamFlagRequired)); setRequestableChannelClasses( RequestableChannelClassSpecList() << RequestableChannelClassSpec::textChat()); setEnglishName(QLatin1String("ExampleProto")); setIconName(QLatin1String("example-icon")); setVCardField(QLatin1String("x-example")); // callbacks setCreateConnectionCallback(memFun(this, &Protocol::createConnection)); setIdentifyAccountCallback(memFun(this, &Protocol::identifyAccount)); setNormalizeContactCallback(memFun(this, &Protocol::normalizeContact)); addrIface = BaseProtocolAddressingInterface::create(); addrIface->setAddressableVCardFields(QStringList() << QLatin1String("x-example-vcard-field")); addrIface->setAddressableUriSchemes(QStringList() << QLatin1String("example-uri-scheme")); addrIface->setNormalizeVCardAddressCallback(memFun(this, &Protocol::normalizeVCardAddress)); addrIface->setNormalizeContactUriCallback(memFun(this, &Protocol::normalizeContactUri)); plugInterface(AbstractProtocolInterfacePtr::dynamicCast(addrIface)); avatarsIface = BaseProtocolAvatarsInterface::create(); avatarsIface->setAvatarDetails(AvatarSpec(QStringList() << QLatin1String("image/png"), 16, 64, 32, 16, 64, 32, 1024)); plugInterface(AbstractProtocolInterfacePtr::dynamicCast(avatarsIface)); SimpleStatusSpec spAvailable; spAvailable.type = ConnectionPresenceTypeAvailable; spAvailable.maySetOnSelf = true; spAvailable.canHaveMessage = true; SimpleStatusSpec spOffline; spOffline.type = ConnectionPresenceTypeOffline; spOffline.maySetOnSelf = true; spOffline.canHaveMessage = false; SimpleStatusSpecMap specs; specs.insert(QLatin1String("available"), spAvailable); specs.insert(QLatin1String("offline"), spOffline); presenceIface = BaseProtocolPresenceInterface::create(); presenceIface->setStatuses(PresenceSpecList(specs)); plugInterface(AbstractProtocolInterfacePtr::dynamicCast(presenceIface)); } Protocol::~Protocol() { } BaseConnectionPtr Protocol::createConnection(const QVariantMap ¶meters, Tp::DBusError *error) { error->set(QLatin1String("CreateConnection.Error.Test"), QLatin1String("")); return BaseConnectionPtr(); } QString Protocol::identifyAccount(const QVariantMap ¶meters, Tp::DBusError *error) { error->set(QLatin1String("IdentifyAccount.Error.Test"), QLatin1String("")); return QString(); } QString Protocol::normalizeContact(const QString &contactId, Tp::DBusError *error) { error->set(QLatin1String("NormalizeContact.Error.Test"), QLatin1String("")); return QString(); } QString Protocol::normalizeVCardAddress(const QString &vcardField, const QString vcardAddress, Tp::DBusError *error) { error->set(QLatin1String("NormalizeVCardAddress.Error.Test"), QLatin1String("")); return QString(); } QString Protocol::normalizeContactUri(const QString &uri, Tp::DBusError *error) { error->set(QLatin1String("NormalizeContactUri.Error.Test"), QLatin1String("")); return QString(); } telepathy-qt-0.9.6.1/examples/CMakeLists.txt0000644000175100017520000000064212530423576022302 0ustar00kaffeinekaffeine00000000000000# Set the required flags found in TelepathyDefaults set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}") set(LD_FLAGS "${LD_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}") add_subdirectory(accounts) add_subdirectory(contact-messenger) add_subdirectory(cm) add_subdirectory(extensions) add_subdirectory(file-transfer) add_subdirectory(protocols) add_subdirectory(roster) add_subdirectory(stream-tubes) telepathy-qt-0.9.6.1/examples/contact-messenger/0000755000175100017520000000000012530423576023161 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/contact-messenger/CMakeLists.txt0000644000175100017520000000067012530423576025724 0ustar00kaffeinekaffeine00000000000000set(messenger-sender_SRCS sender.cpp) set(messenger-sender_MOC_SRCS sender.h) tpqt_generate_mocs(${messenger-sender_MOC_SRCS}) add_executable(messenger-sender ${messenger-sender_SRCS} ${messenger-sender_MOC_SRCS}) target_link_libraries(messenger-sender ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/contact-messenger/sender.cpp0000644000175100017520000000502512530423576025147 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "sender.h" #include "_gen/sender.moc.hpp" #include #include #include #include #include #include #include Sender::Sender(const QString &accountPath, const QString &contactIdentifier, const QString &message) { Tp::AccountPtr acc = Tp::Account::create(TP_QT_ACCOUNT_MANAGER_BUS_NAME, accountPath); messenger = Tp::ContactMessenger::create(acc, contactIdentifier); connect(messenger->sendMessage(message), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onSendMessageFinished(Tp::PendingOperation*))); } Sender::~Sender() { } void Sender::onSendMessageFinished(Tp::PendingOperation *op) { if (op->isError()) { qDebug() << "Error sending message:" << op->errorName() << "-" << op->errorMessage(); QCoreApplication::exit(1); return; } Tp::PendingSendMessage *psm = qobject_cast(op); qDebug() << "Message sent, token is" << psm->sentMessageToken(); QCoreApplication::exit(0); } int main(int argc, char **argv) { QCoreApplication app(argc, argv); Tp::registerTypes(); Tp::enableDebug(true); Tp::enableWarnings(true); if (argc < 4) { qDebug() << "Usage: contact-messenger account_path contact_id message"; return -1; } Sender *sender = new Sender(QLatin1String(argv[1]), QLatin1String(argv[2]), QLatin1String(argv[3])); int ret = app.exec(); delete sender; return ret; } telepathy-qt-0.9.6.1/examples/contact-messenger/sender.h0000644000175100017520000000272712530423576024622 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2011 Collabora Ltd. * @copyright Copyright (C) 2011 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_contact_messenger_sender_h_HEADER_GUARD_ #define _TelepathyQt_examples_contact_messenger_sender_h_HEADER_GUARD_ #include #include #include namespace Tp { class PendingOperation; } class Sender : public QObject { Q_OBJECT public: Sender(const QString &accountPath, const QString &contactIdentifier, const QString &message); ~Sender(); private Q_SLOTS: void onSendMessageFinished(Tp::PendingOperation *op); private: Tp::ContactMessengerPtr messenger; }; #endif telepathy-qt-0.9.6.1/examples/accounts/0000755000175100017520000000000012530423576021357 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/accounts/accounts-window.cpp0000644000175100017520000000611512530423576025212 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "accounts-window.h" #include "_gen/accounts-window.moc.hpp" #include "account-item.h" #include #include #include #include #include #include #include #include #include #include #include #include AccountsWindow::AccountsWindow(QWidget *parent) : QMainWindow(parent) { setupGui(); mAM = Tp::AccountManager::create(Tp::AccountFactory::create(QDBusConnection::sessionBus(), Tp::Account::FeatureCore)); connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onAMReady(Tp::PendingOperation *))); connect(mAM.data(), SIGNAL(newAccount(const Tp::AccountPtr &)), SLOT(onNewAccount(const Tp::AccountPtr &))); } AccountsWindow::~AccountsWindow() { } void AccountsWindow::setupGui() { mTable = new QTableWidget; mTable->setColumnCount(AccountItem::NumColumns); QStringList headerLabels; headerLabels << QLatin1String("Valid") << QLatin1String("Enabled") << QLatin1String("Connection Manager") << QLatin1String("Protocol Name") << QLatin1String("Display Name") << QLatin1String("Nickname") << QLatin1String("Connects Automatically") << QLatin1String("Changing Presence") << QLatin1String("Automatic Presence") << QLatin1String("Current Presence") << QLatin1String("Requested Presence") << QLatin1String("Connection Status") << QLatin1String("Connection"); mTable->setHorizontalHeaderLabels(headerLabels); setCentralWidget(mTable); } void AccountsWindow::onAMReady(Tp::PendingOperation *op) { mTable->setRowCount(mAM->allAccounts().count()); int row = 0; foreach (const Tp::AccountPtr &acc, mAM->allAccounts()) { (void) new AccountItem(acc, mTable, row++, this); } } void AccountsWindow::onNewAccount(const Tp::AccountPtr &acc) { int row = mTable->rowCount(); mTable->insertRow(row); (void) new AccountItem(acc, mTable, row, this); } telepathy-qt-0.9.6.1/examples/accounts/CMakeLists.txt0000644000175100017520000000104412530423576024116 0ustar00kaffeinekaffeine00000000000000set(accounts_SRCS main.cpp account-item.cpp account-item.h accounts-window.cpp accounts-window.h) set(accounts_MOC_SRCS account-item.h accounts-window.h) tpqt_generate_mocs(${accounts_MOC_SRCS}) add_executable(accounts ${accounts_SRCS} ${accounts_MOC_SRCS}) target_link_libraries(accounts ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTWIDGETS_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/accounts/main.cpp0000644000175100017520000000057212530423576023013 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include "accounts-window.h" int main(int argc, char **argv) { QApplication app(argc, argv); Tp::registerTypes(); Tp::enableDebug(true); Tp::enableWarnings(true); AccountsWindow w; w.show(); return app.exec(); } telepathy-qt-0.9.6.1/examples/accounts/account-item.h0000644000175100017520000000513512530423576024124 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_accounts_account_item_h_HEADER_GUARD_ #define _TelepathyQt_examples_accounts_account_item_h_HEADER_GUARD_ #include #include #include #include namespace Tp { class AccountManager; class PendingOperation; } class QTableWidget; class AccountItem : public QObject { Q_OBJECT public: enum Columns { ColumnValid = 0, ColumnEnabled, ColumnConnectionManager, ColumnProtocol, ColumnDisplayName, ColumnNickname, ColumnConnectsAutomatically, ColumnChangingPresence, ColumnAutomaticPresence, ColumnCurrentPresence, ColumnRequestedPresence, ColumnConnectionStatus, ColumnConnection, NumColumns }; Q_ENUMS(Columns) AccountItem(Tp::AccountPtr acc, QTableWidget *table, int row, QObject *parent = 0); virtual ~AccountItem(); int row() const { return mRow; } private Q_SLOTS: void onValidityChanged(bool); void onStateChanged(bool); void onDisplayNameChanged(const QString &); void onNicknameChanged(const QString &); void onConnectsAutomaticallyPropertyChanged(bool); void onChangingPresenceChanged(bool); void onAutomaticPresenceChanged(const Tp::SimplePresence &); void onCurrentPresenceChanged(const Tp::SimplePresence &); void onRequestedPresenceChanged(const Tp::SimplePresence &); void onStatusChanged(Tp::ConnectionStatus, Tp::ConnectionStatusReason, const QString &error, const QVariantMap &errorDetails); void onHaveConnectionChanged(bool); private: void init(); void setupGui(); Tp::AccountPtr mAcc; QTableWidget *mTable; int mRow; }; #endif telepathy-qt-0.9.6.1/examples/accounts/account-item.cpp0000644000175100017520000001537712530423576024470 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "account-item.h" #include "_gen/account-item.moc.hpp" #include #include #include #include #include AccountItem::AccountItem(Tp::AccountPtr acc, QTableWidget *table, int row, QObject *parent) : QObject(parent), mAcc(acc), mTable(table), mRow(row) { init(); } AccountItem::~AccountItem() { } void AccountItem::setupGui() { mTable->setItem(mRow, ColumnValid, new QTableWidgetItem(mAcc->isValid() ? QLatin1String("true") : QLatin1String("false"))); mTable->setItem(mRow, ColumnEnabled, new QTableWidgetItem(mAcc->isEnabled() ? QLatin1String("true") : QLatin1String("false"))); mTable->setItem(mRow, ColumnConnectionManager, new QTableWidgetItem(mAcc->cmName())); mTable->setItem(mRow, ColumnProtocol, new QTableWidgetItem(mAcc->protocolName())); mTable->setItem(mRow, ColumnDisplayName, new QTableWidgetItem(mAcc->displayName())); mTable->setItem(mRow, ColumnNickname, new QTableWidgetItem(mAcc->nickname())); mTable->setItem(mRow, ColumnConnectsAutomatically, new QTableWidgetItem(mAcc->connectsAutomatically() ? QLatin1String("true") : QLatin1String("false"))); mTable->setItem(mRow, ColumnAutomaticPresence, new QTableWidgetItem(mAcc->automaticPresence().status())); mTable->setItem(mRow, ColumnCurrentPresence, new QTableWidgetItem(mAcc->currentPresence().status())); mTable->setItem(mRow, ColumnRequestedPresence, new QTableWidgetItem(mAcc->requestedPresence().status())); mTable->setItem(mRow, ColumnChangingPresence, new QTableWidgetItem(mAcc->isChangingPresence() ? QLatin1String("true") : QLatin1String("false"))); mTable->setItem(mRow, ColumnConnectionStatus, new QTableWidgetItem(QString::number(mAcc->connectionStatus()))); mTable->setItem(mRow, ColumnConnection, new QTableWidgetItem( mAcc->connection().isNull() ? QLatin1String("") : mAcc->connection()->objectPath())); } void AccountItem::init() { setupGui(); Tp::Account *acc = mAcc.data(); connect(acc, SIGNAL(validityChanged(bool)), SLOT(onValidityChanged(bool))); connect(acc, SIGNAL(stateChanged(bool)), SLOT(onStateChanged(bool))); connect(acc, SIGNAL(displayNameChanged(const QString &)), SLOT(onDisplayNameChanged(const QString &))); connect(acc, SIGNAL(nicknameChanged(const QString &)), SLOT(onNicknameChanged(const QString &))); connect(acc, SIGNAL(connectsAutomaticallyPropertyChanged(bool)), SLOT(onConnectsAutomaticallyPropertyChanged(bool))); connect(acc, SIGNAL(changingPresence(bool)), SLOT(onChangingPresenceChanged(bool))); connect(acc, SIGNAL(automaticPresenceChanged(const Tp::SimplePresence &)), SLOT(onAutomaticPresenceChanged(const Tp::SimplePresence &))); connect(acc, SIGNAL(currentPresenceChanged(const Tp::SimplePresence &)), SLOT(onCurrentPresenceChanged(const Tp::SimplePresence &))); connect(acc, SIGNAL(requestedPresenceChanged(const Tp::SimplePresence &)), SLOT(onRequestedPresenceChanged(const Tp::SimplePresence &))); connect(acc, SIGNAL(statusChanged(Tp::ConnectionStatus, Tp::ConnectionStatusReason, const QString &, const QVariantMap &)), SLOT(onStatusChanged(Tp::ConnectionStatus, Tp::ConnectionStatusReason, const QString &, const QVariantMap &))); connect(acc, SIGNAL(haveConnectionChanged(bool)), SLOT(onHaveConnectionChanged(bool))); } void AccountItem::onValidityChanged(bool valid) { QTableWidgetItem *item = mTable->item(mRow, ColumnValid); item->setText((valid ? QLatin1String("true") : QLatin1String("false"))); } void AccountItem::onStateChanged(bool enabled) { QTableWidgetItem *item = mTable->item(mRow, ColumnEnabled); item->setText((enabled ? QLatin1String("true") : QLatin1String("false"))); } void AccountItem::onDisplayNameChanged(const QString &name) { QTableWidgetItem *item = mTable->item(mRow, ColumnDisplayName); item->setText(name); } void AccountItem::onNicknameChanged(const QString &name) { QTableWidgetItem *item = mTable->item(mRow, ColumnNickname); item->setText(name); } void AccountItem::onConnectsAutomaticallyPropertyChanged(bool value) { QTableWidgetItem *item = mTable->item(mRow, ColumnConnectsAutomatically); item->setText((value ? QLatin1String("true") : QLatin1String("false"))); } void AccountItem::onChangingPresenceChanged(bool value) { QTableWidgetItem *item = mTable->item(mRow, ColumnChangingPresence); item->setText((value ? QLatin1String("true") : QLatin1String("false"))); } void AccountItem::onAutomaticPresenceChanged(const Tp::SimplePresence &presence) { QTableWidgetItem *item = mTable->item(mRow, ColumnAutomaticPresence); item->setText(presence.status); } void AccountItem::onCurrentPresenceChanged(const Tp::SimplePresence &presence) { QTableWidgetItem *item = mTable->item(mRow, ColumnCurrentPresence); item->setText(presence.status); } void AccountItem::onRequestedPresenceChanged(const Tp::SimplePresence &presence) { QTableWidgetItem *item = mTable->item(mRow, ColumnRequestedPresence); item->setText(presence.status); } void AccountItem::onStatusChanged(Tp::ConnectionStatus status, Tp::ConnectionStatusReason reason, const QString &error, const QVariantMap &errorDetails) { QTableWidgetItem *item = mTable->item(mRow, ColumnConnectionStatus); item->setText(QString::number(status)); } void AccountItem::onHaveConnectionChanged(bool haveConnection) { QTableWidgetItem *item = mTable->item(mRow, ColumnConnection); item->setText(mAcc->connection().isNull() ? QLatin1String("") : mAcc->connection()->objectPath()); } telepathy-qt-0.9.6.1/examples/accounts/accounts-window.h0000644000175100017520000000275612530423576024666 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_accounts_accounts_window_h_HEADER_GUARD_ #define _TelepathyQt_examples_accounts_accounts_window_h_HEADER_GUARD_ #include #include namespace Tp { class PendingOperation; } class QTableWidget; class QTableWidgetItem; class AccountsWindow : public QMainWindow { Q_OBJECT public: AccountsWindow(QWidget *parent = 0); virtual ~AccountsWindow(); private Q_SLOTS: void onAMReady(Tp::PendingOperation *); void onNewAccount(const Tp::AccountPtr &); private: void setupGui(); Tp::AccountManagerPtr mAM; QTableWidget *mTable; }; #endif telepathy-qt-0.9.6.1/examples/file-transfer/0000755000175100017520000000000012530423576022301 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/file-transfer/file-receiver.cpp0000644000175100017520000000503712530423576025533 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "file-receiver.h" #include #include #include #include #include #include #include #include #include FileReceiver::FileReceiver(QObject *parent) : QObject(parent) { QDBusConnection bus(QDBusConnection::sessionBus()); AccountFactoryPtr accountFactory = AccountFactory::create(bus); ConnectionFactoryPtr connectionFactory = ConnectionFactory::create(bus); ChannelFactoryPtr channelFactory = ChannelFactory::create(bus); channelFactory->addCommonFeatures(Channel::FeatureCore); channelFactory->addFeaturesForIncomingFileTransfers(IncomingFileTransferChannel::FeatureCore); mCR = ClientRegistrar::create(accountFactory, connectionFactory, channelFactory); qDebug() << "Registering incoming file transfer handler"; mHandler = FileReceiverHandler::create(); QString handlerName(QLatin1String("TpQtExampleFileReceiverHandler")); if (!mCR->registerClient(AbstractClientPtr::dynamicCast(mHandler), handlerName)) { qWarning() << "Unable to register incoming file transfer handler, aborting"; QCoreApplication::exit(1); return; } qDebug() << "Awaiting file transfers"; } FileReceiver::~FileReceiver() { } int main(int argc, char **argv) { QCoreApplication app(argc, argv); Tp::registerTypes(); Tp::enableDebug(false); Tp::enableWarnings(true); new FileReceiver(&app); return app.exec(); } #include "_gen/file-receiver.moc.hpp" telepathy-qt-0.9.6.1/examples/file-transfer/pending-file-transfer.h0000644000175100017520000000356712530423576026650 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_file_transfer_pending_file_transfer_h_HEADER_GUARD_ #define _TelepathyQt_examples_file_transfer_pending_file_transfer_h_HEADER_GUARD_ #include #include #include using namespace Tp; class PendingFileTransfer : public PendingOperation { Q_OBJECT Q_DISABLE_COPY(PendingFileTransfer) public: PendingFileTransfer(const FileTransferChannelPtr &chan, const SharedPtr &object); ~PendingFileTransfer(); FileTransferChannelPtr channel() const { return mChannel; } protected Q_SLOTS: void onTransferStateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason stateReason); private Q_SLOTS: void onChannelInvalidated(Tp::DBusProxy *proxy, const QString &errorName, const QString &errorMessage); void onTransferredBytesChanged(qulonglong count); private: FileTransferChannelPtr mChannel; }; #endif telepathy-qt-0.9.6.1/examples/file-transfer/pending-file-send.h0000644000175100017520000000320212530423576025737 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_file_transfer_pending_file_send_h_HEADER_GUARD_ #define _TelepathyQt_examples_file_transfer_pending_file_send_h_HEADER_GUARD_ #include #include #include #include "pending-file-transfer.h" using namespace Tp; class PendingFileSend : public PendingFileTransfer { Q_OBJECT Q_DISABLE_COPY(PendingFileSend) public: PendingFileSend(const OutgoingFileTransferChannelPtr &chan, const SharedPtr &object); ~PendingFileSend(); private Q_SLOTS: void onTransferStateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason stateReason); private: bool mSendingFile; QFile mFile; }; #endif telepathy-qt-0.9.6.1/examples/file-transfer/file-sender.h0000644000175100017520000000374512530423576024660 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_file_transfer_file_sender_h_HEADER_GUARD_ #define _TelepathyQt_examples_file_transfer_file_sender_h_HEADER_GUARD_ #include #include using namespace Tp; namespace Tp { class PendingOperation; } class FileSender : public QObject { Q_OBJECT Q_DISABLE_COPY(FileSender) public: FileSender(const QString &accountName, const QString &receiverID, const QString &filePath, QObject *parent); ~FileSender(); private Q_SLOTS: void onAMReady(Tp::PendingOperation *op); void onAccountReady(Tp::PendingOperation *op); void onAccountConnectionChanged(const Tp::ConnectionPtr &conn); void onContactRetrieved(Tp::PendingOperation *op); void onContactCapabilitiesChanged(); void onTransferRequestFinished(Tp::PendingOperation *op); void onSendFinished(Tp::PendingOperation *op); private: QString mAccountName; QString mReceiver; QString mFilePath; bool mTransferRequested; AccountManagerPtr mAM; AccountPtr mAccount; ConnectionPtr mConnection; ContactPtr mContact; }; #endif telepathy-qt-0.9.6.1/examples/file-transfer/pending-file-send.cpp0000644000175100017520000000535712530423576026307 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "pending-file-send.h" #include "_gen/pending-file-send.moc.hpp" #include #include #include #include #include #include PendingFileSend::PendingFileSend(const OutgoingFileTransferChannelPtr &chan, const SharedPtr &object) : PendingFileTransfer(FileTransferChannelPtr::qObjectCast(chan), object), mSendingFile(false) { // connect/call onTransferStateChanged here as now we are constructed, otherwise doing it in the base // class would only invoke the base class slot connect(chan.data(), SIGNAL(stateChanged(Tp::FileTransferState,Tp::FileTransferStateChangeReason)), SLOT(onTransferStateChanged(Tp::FileTransferState,Tp::FileTransferStateChangeReason))); onTransferStateChanged(chan->state(), chan->stateReason()); } PendingFileSend::~PendingFileSend() { mFile.close(); } void PendingFileSend::onTransferStateChanged(FileTransferState state, FileTransferStateChangeReason stateReason) { PendingFileTransfer::onTransferStateChanged(state, stateReason); if (state == FileTransferStateAccepted) { Q_ASSERT(!mSendingFile); mSendingFile = true; OutgoingFileTransferChannelPtr chan = OutgoingFileTransferChannelPtr::qObjectCast(channel()); Q_ASSERT(chan); QString uri = chan->uri(); mFile.setFileName(QUrl(uri).toLocalFile()); if (!mFile.open(QIODevice::ReadOnly)) { qWarning() << "Unable to open" << uri << "for reading, aborting transfer"; setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Unable to open file for reading")); return; } qDebug() << "Sending" << uri << "to" << chan->targetId(); chan->provideFile(&mFile); } } telepathy-qt-0.9.6.1/examples/file-transfer/pending-file-receive.h0000644000175100017520000000322612530423576026436 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_file_transfer_pending_file_receive_h_HEADER_GUARD_ #define _TelepathyQt_examples_file_transfer_pending_file_receive_h_HEADER_GUARD_ #include #include #include #include "pending-file-transfer.h" using namespace Tp; class PendingFileReceive : public PendingFileTransfer { Q_OBJECT Q_DISABLE_COPY(PendingFileReceive) public: PendingFileReceive(const IncomingFileTransferChannelPtr &chan, const SharedPtr &object); ~PendingFileReceive(); private Q_SLOTS: void onTransferStateChanged(Tp::FileTransferState state, Tp::FileTransferStateChangeReason stateReason); private: bool mReceivingFile; QFile mFile; }; #endif telepathy-qt-0.9.6.1/examples/file-transfer/file-sender.cpp0000644000175100017520000002241312530423576025204 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "file-sender.h" #include "pending-file-send.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include FileSender::FileSender(const QString &accountName, const QString &receiver, const QString &filePath, QObject *parent) : QObject(parent), mAccountName(accountName), mReceiver(receiver), mFilePath(filePath), mTransferRequested(false) { qDebug() << "Retrieving account from AccountManager"; QDBusConnection bus(QDBusConnection::sessionBus()); // Let's not prepare any account feature as we only care about one account, thus no need to // prepare features for all accounts AccountFactoryPtr accountFactory = AccountFactory::create(bus); // We only care about CONNECTED connections, so let's specify that in a Connection Factory ConnectionFactoryPtr connectionFactory = ConnectionFactory::create(bus, Connection::FeatureCore | Connection::FeatureConnected); ChannelFactoryPtr channelFactory = ChannelFactory::create(bus); channelFactory->addCommonFeatures(Channel::FeatureCore); channelFactory->addFeaturesForOutgoingFileTransfers(OutgoingFileTransferChannel::FeatureCore); ContactFactoryPtr contactFactory = ContactFactory::create(); mAM = AccountManager::create(bus, accountFactory, connectionFactory, channelFactory, contactFactory); connect(mAM->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAMReady(Tp::PendingOperation*))); } FileSender::~FileSender() { } void FileSender::onAMReady(PendingOperation *op) { if (op->isError()) { qWarning() << "AccountManager cannot become ready -" << op->errorName() << '-' << op->errorMessage(); QCoreApplication::exit(1); return; } PendingReady *pr = qobject_cast(op); Q_ASSERT(pr != NULL); Q_UNUSED(pr); qDebug() << "AccountManager ready"; mAccount = mAM->accountForObjectPath( TP_QT_ACCOUNT_OBJECT_PATH_BASE + QLatin1Char('/') + mAccountName); if (!mAccount) { qWarning() << "The account given does not exist"; QCoreApplication::exit(1); } Q_ASSERT(!mAccount->isReady()); connect(mAccount->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onAccountReady(Tp::PendingOperation*))); } void FileSender::onAccountReady(PendingOperation *op) { if (op->isError()) { qWarning() << "Account cannot become ready -" << op->errorName() << '-' << op->errorMessage(); QCoreApplication::exit(1); return; } PendingReady *pr = qobject_cast(op); Q_ASSERT(pr != NULL); Q_UNUSED(pr); qDebug() << "Account ready"; qDebug() << "Checking if account is online..."; connect(mAccount.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), SLOT(onAccountConnectionChanged(Tp::ConnectionPtr))); onAccountConnectionChanged(mAccount->connection()); } void FileSender::onAccountConnectionChanged(const ConnectionPtr &conn) { if (!conn) { qDebug() << "The account given has no connection. " "Please set it online to continue"; return; } Q_ASSERT(conn->isValid()); Q_ASSERT(conn->status() == ConnectionStatusConnected); qDebug() << "Account online, got a connected connection!"; mConnection = conn; qDebug() << "Creating contact object for receiver" << mReceiver; connect(mConnection->contactManager()->contactsForIdentifiers(QStringList() << mReceiver, Contact::FeatureCapabilities), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onContactRetrieved(Tp::PendingOperation *))); } void FileSender::onContactRetrieved(PendingOperation *op) { if (op->isError()) { qWarning() << "Unable to create contact object for receiver" << mReceiver << "-" << op->errorName() << "-" << op->errorMessage(); QCoreApplication::exit(1); return; } PendingContacts *pc = qobject_cast(op); Q_ASSERT(pc->contacts().size() == 1); mContact = pc->contacts().first(); qDebug() << "Checking contact capabilities..."; connect(mContact.data(), SIGNAL(capabilitiesChanged(Tp::ContactCapabilities)), SLOT(onContactCapabilitiesChanged())); #if 0 qDebug() << "Contact capabilities:"; Q_FOREACH (const RequestableChannelClassSpec &spec, mContact->capabilities().allClassSpecs()) { qDebug() << " fixed:" << spec.fixedProperties(); qDebug() << " allowed:" << spec.allowedProperties(); } #endif if (mContact->capabilities().fileTransfers()) { onContactCapabilitiesChanged(); } else { qDebug() << "The receiver needs to be online and support file transfers to continue"; } } void FileSender::onContactCapabilitiesChanged() { if (mTransferRequested) { return; } if (mContact->capabilities().fileTransfers()) { qDebug() << "The remote contact is capable of receiving file transfers. " "Requesting file transfer channel"; mTransferRequested = true; FileTransferChannelCreationProperties ftProps(mFilePath, QLatin1String("application/octet-stream")); connect(mAccount->createAndHandleFileTransfer(mContact, ftProps), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onTransferRequestFinished(Tp::PendingOperation*))); } } void FileSender::onTransferRequestFinished(PendingOperation *op) { if (op->isError()) { qWarning() << "Unable to request stream tube channel -" << op->errorName() << ": " << op->errorMessage(); QCoreApplication::exit(1); return; } qDebug() << "File transfer channel request finished successfully!"; PendingChannel *pc = qobject_cast(op); Q_ASSERT(pc); ChannelPtr chan = pc->channel(); if (!chan->isValid()) { qWarning() << "Channel received to handle is invalid, aborting file transfer"; QCoreApplication::exit(1); return; } // We should always receive outgoing channels of type FileTransfer, as requested, // otherwise either MC or tp-qt itself is bogus, so let's assert in case they are Q_ASSERT(chan->channelType() == TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER); Q_ASSERT(chan->isRequested()); OutgoingFileTransferChannelPtr transferChannel = OutgoingFileTransferChannelPtr::qObjectCast(chan); Q_ASSERT(transferChannel); // We just passed the URI when requesting the channel, so it has to be set Q_ASSERT(!transferChannel->uri().isEmpty()); PendingFileSend *sendOperation = new PendingFileSend(transferChannel, SharedPtr()); connect(sendOperation, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onSendFinished(Tp::PendingOperation*))); } void FileSender::onSendFinished(PendingOperation *op) { PendingFileSend *sendOperation = qobject_cast(op); qDebug() << "Closing channel"; sendOperation->channel()->requestClose(); QCoreApplication::exit(0); } int main(int argc, char **argv) { QCoreApplication app(argc, argv); if (argc != 4) { qDebug() << "usage:" << argv[0] << " "; return 1; } QString filePath = QLatin1String(argv[3]); QFileInfo fileInfo(filePath); if (!fileInfo.exists()) { qWarning() << "File" << filePath << "does not exist"; return 1; } Tp::registerTypes(); Tp::enableDebug(false); Tp::enableWarnings(true); new FileSender(QLatin1String(argv[1]), QLatin1String(argv[2]), filePath, &app); return app.exec(); } #include "_gen/file-sender.moc.hpp" telepathy-qt-0.9.6.1/examples/file-transfer/CMakeLists.txt0000644000175100017520000000211512530423576025040 0ustar00kaffeinekaffeine00000000000000set(ft-receiver_SRCS file-receiver.cpp file-receiver-handler.cpp pending-file-receive.cpp pending-file-transfer.cpp) set(ft-receiver_MOC_SRCS file-receiver.h file-receiver-handler.h pending-file-receive.h pending-file-transfer.h) tpqt_generate_mocs(${ft-receiver_MOC_SRCS}) add_executable(ft-receiver ${ft-receiver_SRCS} ${ft-receiver_MOC_SRCS}) target_link_libraries(ft-receiver ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) set(ft-sender_SRCS file-sender.cpp pending-file-send.cpp pending-file-transfer.cpp) set(ft-sender_MOC_SRCS file-sender.h pending-file-send.h pending-file-transfer.h) tpqt_generate_mocs(${ft-sender_MOC_SRCS}) add_executable(ft-sender ${ft-sender_SRCS} ${ft-sender_MOC_SRCS}) target_link_libraries(ft-sender ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/file-transfer/pending-file-transfer.cpp0000644000175100017520000000564712530423576027204 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "pending-file-transfer.h" #include "_gen/pending-file-transfer.moc.hpp" #include #include #include #include #include #include PendingFileTransfer::PendingFileTransfer(const FileTransferChannelPtr &chan, const SharedPtr &object) : PendingOperation(object), mChannel(chan) { connect(chan.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated(Tp::DBusProxy*,QString,QString))); connect(chan.data(), SIGNAL(transferredBytesChanged(qulonglong)), SLOT(onTransferredBytesChanged(qulonglong))); } PendingFileTransfer::~PendingFileTransfer() { } void PendingFileTransfer::onChannelInvalidated(DBusProxy *proxy, const QString &errorName, const QString &errorMessage) { Q_UNUSED(proxy); qWarning() << "Error sending file, channel invalidated -" << errorName << "-" << errorMessage; setFinishedWithError(errorName, errorMessage); } void PendingFileTransfer::onTransferStateChanged(FileTransferState state, FileTransferStateChangeReason stateReason) { qDebug() << "File transfer channel state changed to" << state << "with reason" << stateReason; switch (state) { case FileTransferStatePending: case FileTransferStateOpen: break; case FileTransferStateAccepted: qDebug() << "Transfer accepted!"; break; case FileTransferStateCompleted: qDebug() << "Transfer completed!"; setFinished(); break; case FileTransferStateCancelled: qDebug() << "Transfer cancelled"; setFinished(); return; default: Q_ASSERT(false); } } void PendingFileTransfer::onTransferredBytesChanged(qulonglong count) { qDebug().nospace() << "Transferred bytes " << count << " - " << ((int) (((double) count / mChannel->size()) * 100)) << "% done"; } telepathy-qt-0.9.6.1/examples/file-transfer/pending-file-receive.cpp0000644000175100017520000000516012530423576026770 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "pending-file-receive.h" #include "_gen/pending-file-receive.moc.hpp" #include #include #include #include #include PendingFileReceive::PendingFileReceive(const IncomingFileTransferChannelPtr &chan, const SharedPtr &object) : PendingFileTransfer(FileTransferChannelPtr::qObjectCast(chan), object), mReceivingFile(false) { // connect/call onTransferStateChanged here as now we are constructed, otherwise doing it in the base // class would only invoke the base class slot connect(chan.data(), SIGNAL(stateChanged(Tp::FileTransferState,Tp::FileTransferStateChangeReason)), SLOT(onTransferStateChanged(Tp::FileTransferState,Tp::FileTransferStateChangeReason))); onTransferStateChanged(chan->state(), chan->stateReason()); } PendingFileReceive::~PendingFileReceive() { mFile.close(); } void PendingFileReceive::onTransferStateChanged(FileTransferState state, FileTransferStateChangeReason stateReason) { PendingFileTransfer::onTransferStateChanged(state, stateReason); if (state == FileTransferStatePending) { Q_ASSERT(!mReceivingFile); mReceivingFile = true; IncomingFileTransferChannelPtr chan = IncomingFileTransferChannelPtr::qObjectCast(channel()); Q_ASSERT(chan); QString fileName(QLatin1String("TpQtExampleFTReceiver_") + chan->fileName()); fileName.replace(QLatin1String("/"), QLatin1String("_")); mFile.setFileName(fileName); qDebug() << "Receiving" << chan->fileName() << "from" << chan->targetId() << ", saving as" << fileName; chan->acceptFile(0, &mFile); } } telepathy-qt-0.9.6.1/examples/file-transfer/file-receiver-handler.cpp0000644000175100017520000000667412530423576027156 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "file-receiver-handler.h" #include "_gen/file-receiver-handler.moc.hpp" #include "pending-file-receive.h" #include #include #include #include #include #include #include #include #include FileReceiverHandler::FileReceiverHandler() : QObject(), AbstractClientHandler(ChannelClassSpecList() << ChannelClassSpec::incomingFileTransfer(), AbstractClientHandler::Capabilities(), false) { } FileReceiverHandler::~FileReceiverHandler() { } bool FileReceiverHandler::bypassApproval() const { return false; } void FileReceiverHandler::handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo) { // We should always receive one channel to handle, // otherwise either MC or tp-qt itself is bogus, so let's assert in case they are Q_ASSERT(channels.size() == 1); ChannelPtr chan = channels.first(); if (!chan->isValid()) { qWarning() << "Channel received to handle is invalid, ignoring channel"; context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Channel received to handle is invalid")); return; } // We should always receive incoming channels of type FileTransfer, as set by our filter, // otherwise either MC or tp-qt itself is bogus, so let's assert in case they are Q_ASSERT(chan->channelType() == TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER); Q_ASSERT(!chan->isRequested()); IncomingFileTransferChannelPtr transferChannel = IncomingFileTransferChannelPtr::qObjectCast(chan); Q_ASSERT(transferChannel); context->setFinished(); PendingFileReceive *receiveOperation = new PendingFileReceive(transferChannel, SharedPtr::dynamicCast(AbstractClientPtr(this))); connect(receiveOperation, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onReceiveFinished(Tp::PendingOperation*))); } void FileReceiverHandler::onReceiveFinished(PendingOperation *op) { PendingFileReceive *receiveOperation = qobject_cast(op); qDebug() << "Closing channel"; receiveOperation->channel()->requestClose(); } telepathy-qt-0.9.6.1/examples/file-transfer/file-receiver.h0000644000175100017520000000257612530423576025205 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_file_transfer_file_receiver_h_HEADER_GUARD_ #define _TelepathyQt_examples_file_transfer_file_receiver_h_HEADER_GUARD_ #include #include #include "file-receiver-handler.h" using namespace Tp; class FileReceiver : public QObject { Q_OBJECT Q_DISABLE_COPY(FileReceiver) public: FileReceiver(QObject *parent); ~FileReceiver(); private: ClientRegistrarPtr mCR; SharedPtr mHandler; }; #endif telepathy-qt-0.9.6.1/examples/file-transfer/file-receiver-handler.h0000644000175100017520000000403712530423576026612 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_file_transfer_file_receiver_handler_h_HEADER_GUARD_ #define _TelepathyQt_examples_file_transfer_file_receiver_handler_h_HEADER_GUARD_ #include #include #include #include using namespace Tp; class FileReceiverHandler : public QObject, public AbstractClientHandler { Q_OBJECT Q_DISABLE_COPY(FileReceiverHandler) public: static SharedPtr create() { return SharedPtr(new FileReceiverHandler()); } ~FileReceiverHandler(); bool bypassApproval() const; void handleChannels(const MethodInvocationContextPtr<> &context, const AccountPtr &account, const ConnectionPtr &connection, const QList &channels, const QList &requestsSatisfied, const QDateTime &userActionTime, const HandlerInfo &handlerInfo); private Q_SLOTS: void onReceiveFinished(Tp::PendingOperation *op); private: FileReceiverHandler(); QSet mReceiveOps; }; #endif telepathy-qt-0.9.6.1/examples/roster/0000755000175100017520000000000012530423576021056 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/roster/CMakeLists.txt0000644000175100017520000000207312530423576023620 0ustar00kaffeinekaffeine00000000000000set(roster_SRCS main.cpp roster-window.cpp roster-item.cpp roster-widget.cpp) set(roster_MOC_SRCS roster-window.h roster-item.h roster-widget.h) tpqt_generate_mocs(${roster_MOC_SRCS}) add_executable(roster ${roster_SRCS} ${roster_MOC_SRCS}) target_link_libraries(roster ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTWIDGETS_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) set(telepathy_qt_examples_roster_SRCS roster-item.cpp roster-widget.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/roster-item.moc.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/roster-widget.moc.hpp) add_library(telepathy-qt-examples-roster ${telepathy_qt_examples_roster_SRCS}) target_link_libraries(telepathy-qt-examples-roster ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTWIDGETS_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_LIBRARY_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/roster/main.cpp0000644000175100017520000000264012530423576022510 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include "roster-window.h" int main(int argc, char **argv) { QApplication app(argc, argv); if (argc < 2) { qDebug() << "usage:" << argv[0] << ""; return 1; } Tp::registerTypes(); Tp::enableDebug(true); Tp::enableWarnings(true); QString accountPath = QLatin1String(argv[1]); RosterWindow w(accountPath); w.show(); return app.exec(); } telepathy-qt-0.9.6.1/examples/roster/roster-widget.h0000644000175100017520000000500212530423576024023 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_roster_roster_widget_h_HEADER_GUARD_ #define _TelepathyQt_examples_roster_roster_widget_h_HEADER_GUARD_ #include #include #include namespace Tp { class Connection; class PendingOperation; } class QAction; class QDialog; class QLineEdit; class QListWidget; class QListWidgetItem; class QPushButton; class RosterItem; class RosterWidget : public QWidget { Q_OBJECT public: RosterWidget(QWidget *parent = 0); virtual ~RosterWidget(); Tp::ConnectionPtr connection() const { return mConn; } void setConnection(const Tp::ConnectionPtr &conn); void unsetConnection(); QListWidget *listWidget() const { return mList; } protected: virtual RosterItem *createItemForContact( const Tp::ContactPtr &contact, bool &exists); virtual void updateActions(RosterItem *item) { } private Q_SLOTS: void onContactManagerStateChanged(Tp::ContactListState state); void onPresencePublicationRequested(const Tp::Contacts &); void onItemSelectionChanged(); void onAddButtonClicked(); void onAuthActionTriggered(bool); void onDenyActionTriggered(bool); void onRemoveActionTriggered(bool); void onBlockActionTriggered(bool); void onContactRetrieved(Tp::PendingOperation *op); void updateActions(); private: void createActions(); void setupGui(); Tp::ConnectionPtr mConn; QAction *mAuthAction; QAction *mRemoveAction; QAction *mDenyAction; QAction *mBlockAction; QListWidget *mList; QPushButton *mAddBtn; QDialog *mAddDlg; QLineEdit *mAddDlgEdt; }; #endif telepathy-qt-0.9.6.1/examples/roster/roster-window.cpp0000644000175100017520000000632212530423576024410 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "roster-window.h" #include "_gen/roster-window.moc.hpp" #include "roster-widget.h" #include #include #include #include #include #include #include #include using namespace Tp; RosterWindow::RosterWindow(const QString &accountName, QWidget *parent) : QMainWindow(parent) { setWindowTitle(QLatin1String("Roster")); setupGui(); ChannelFactoryPtr channelFactory = ChannelFactory::create( QDBusConnection::sessionBus()); ConnectionFactoryPtr connectionFactory = ConnectionFactory::create( QDBusConnection::sessionBus(), Connection::FeatureConnected | Connection::FeatureRoster | Connection::FeatureRosterGroups); ContactFactoryPtr contactFactory = ContactFactory::create( Contact::FeatureAlias | Contact::FeatureSimplePresence); mAccount = Account::create(TP_QT_ACCOUNT_MANAGER_BUS_NAME, TP_QT_ACCOUNT_OBJECT_PATH_BASE + QLatin1Char('/') + accountName, connectionFactory, channelFactory, contactFactory); connect(mAccount->becomeReady(Account::FeatureCore), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onAccountReady(Tp::PendingOperation *))); resize(240, 320); } RosterWindow::~RosterWindow() { } void RosterWindow::setupGui() { mRoster = new RosterWidget(); setCentralWidget(mRoster); } void RosterWindow::onAccountReady(Tp::PendingOperation *op) { if (op->isError()) { qWarning() << "Account cannot become ready - " << op->errorName() << '-' << op->errorMessage(); QCoreApplication::exit(1); return; } qDebug() << "Account ready"; connect(mAccount.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), SLOT(onAccountConnectionChanged(Tp::ConnectionPtr))); if (mAccount->connection().isNull()) { qDebug() << "The account given has no Connection. Please set it online to continue."; } onAccountConnectionChanged(mAccount->connection()); } void RosterWindow::onAccountConnectionChanged(const ConnectionPtr &conn) { if (conn) { mRoster->setConnection(conn); } else { mRoster->unsetConnection(); } } telepathy-qt-0.9.6.1/examples/roster/roster-window.h0000644000175100017520000000304312530423576024052 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_roster_roster_window_h_HEADER_GUARD_ #define _TelepathyQt_examples_roster_roster_window_h_HEADER_GUARD_ #include #include #include namespace Tp { class PendingOperation; } class RosterWidget; class RosterWindow : public QMainWindow { Q_OBJECT public: RosterWindow(const QString &accountName, QWidget *parent = 0); virtual ~RosterWindow(); private Q_SLOTS: void onAccountReady(Tp::PendingOperation *op); void onAccountConnectionChanged(const Tp::ConnectionPtr &conn); private: void setupGui(); Tp::AccountPtr mAccount; RosterWidget *mRoster; }; #endif telepathy-qt-0.9.6.1/examples/roster/roster-item.cpp0000644000175100017520000000542012530423576024035 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "roster-item.h" #include "_gen/roster-item.moc.hpp" #include using namespace Tp; RosterItem::RosterItem(const ContactPtr &contact, QListWidget *parent) : QObject(parent), QListWidgetItem(parent), mContact(contact) { onContactChanged(); connect(contact.data(), SIGNAL(aliasChanged(QString)), SLOT(onContactChanged())); connect(contact.data(), SIGNAL(presenceChanged(Tp::Presence)), SLOT(onContactChanged())); connect(contact.data(), SIGNAL(subscriptionStateChanged(Tp::Contact::PresenceState)), SLOT(onContactChanged())); connect(contact.data(), SIGNAL(publishStateChanged(Tp::Contact::PresenceState,QString)), SLOT(onContactChanged())); connect(contact.data(), SIGNAL(blockStatusChanged(bool)), SLOT(onContactChanged())); } RosterItem::~RosterItem() { } void RosterItem::onContactChanged() { QString status = mContact->presence().status(); // I've asked to see the contact presence if (mContact->subscriptionState() == Contact::PresenceStateAsk) { setText(QString(QLatin1String("%1 (%2) (awaiting approval)")).arg(mContact->id()).arg(status)); // The contact asked to see my presence } else if (mContact->publishState() == Contact::PresenceStateAsk) { setText(QString(QLatin1String("%1 (%2) (pending approval)")).arg(mContact->id()).arg(status)); } else if (mContact->subscriptionState() == Contact::PresenceStateNo && mContact->publishState() == Contact::PresenceStateNo) { setText(QString(QLatin1String("%1 (unknown)")).arg(mContact->id())); } else { setText(QString(QLatin1String("%1 (%2)")).arg(mContact->id()).arg(status)); } if (mContact->isBlocked()) { setText(QString(QLatin1String("%1 (blocked)")).arg(text())); } emit changed(); } telepathy-qt-0.9.6.1/examples/roster/roster-widget.cpp0000644000175100017520000002645512530423576024375 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009-2011 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "roster-widget.h" #include "_gen/roster-widget.moc.hpp" #include "roster-item.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Tp; RosterWidget::RosterWidget(QWidget *parent) : QWidget(parent) { setWindowTitle(QLatin1String("Roster")); createActions(); setupGui(); } RosterWidget::~RosterWidget() { } void RosterWidget::setConnection(const ConnectionPtr &conn) { if (mConn) { unsetConnection(); } mConn = conn; connect(conn->contactManager().data(), SIGNAL(presencePublicationRequested(const Tp::Contacts &)), SLOT(onPresencePublicationRequested(const Tp::Contacts &))); // TODO listen to allKnownContactsChanged connect(conn->contactManager().data(), SIGNAL(stateChanged(Tp::ContactListState)), SLOT(onContactManagerStateChanged(Tp::ContactListState))); onContactManagerStateChanged(conn->contactManager()->state()); } void RosterWidget::unsetConnection() { while (mList->count() > 0) { RosterItem *item = (RosterItem *) mList->item(0); mList->takeItem(0); delete item; } mConn.reset(); updateActions(); mAddBtn->setEnabled(false); } void RosterWidget::createActions() { mAuthAction = new QAction(QLatin1String("Authorize Contact"), this); mAuthAction->setEnabled(false); connect(mAuthAction, SIGNAL(triggered(bool)), SLOT(onAuthActionTriggered(bool))); mDenyAction = new QAction(QLatin1String("Deny Contact"), this); mDenyAction->setEnabled(false); connect(mDenyAction, SIGNAL(triggered(bool)), SLOT(onDenyActionTriggered(bool))); mRemoveAction = new QAction(QLatin1String("Remove Contact"), this); mRemoveAction->setEnabled(false); connect(mRemoveAction, SIGNAL(triggered(bool)), SLOT(onRemoveActionTriggered(bool))); mBlockAction = new QAction(QLatin1String("Block Contact"), this); mBlockAction->setEnabled(false); mBlockAction->setCheckable(true); connect(mBlockAction, SIGNAL(triggered(bool)), SLOT(onBlockActionTriggered(bool))); } void RosterWidget::setupGui() { QVBoxLayout *vbox = new QVBoxLayout; mList = new QListWidget; connect(mList, SIGNAL(itemSelectionChanged()), SLOT(onItemSelectionChanged())); vbox->addWidget(mList); mList->setContextMenuPolicy(Qt::ActionsContextMenu); mList->addAction(mAuthAction); mList->addAction(mDenyAction); mList->addAction(mRemoveAction); mList->addAction(mBlockAction); QHBoxLayout *hbox = new QHBoxLayout; mAddBtn = new QPushButton(QLatin1String("+")); mAddBtn->setEnabled(false); connect(mAddBtn, SIGNAL(clicked(bool)), SLOT(onAddButtonClicked())); hbox->addWidget(mAddBtn); hbox->addStretch(1); vbox->addLayout(hbox); setLayout(vbox); mAddDlg = new QDialog(this); mAddDlg->setWindowTitle(QLatin1String("Add Contact")); QVBoxLayout *addDlgVBox = new QVBoxLayout; QHBoxLayout *addDlgEntryHBox = new QHBoxLayout; QLabel *label = new QLabel(QLatin1String("Username")); addDlgEntryHBox->addWidget(label); mAddDlgEdt = new QLineEdit(); addDlgEntryHBox->addWidget(mAddDlgEdt); addDlgVBox->addLayout(addDlgEntryHBox); QDialogButtonBox *addDlgBtnBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal); connect(addDlgBtnBox, SIGNAL(accepted()), mAddDlg, SLOT(accept())); connect(addDlgBtnBox, SIGNAL(rejected()), mAddDlg, SLOT(reject())); addDlgVBox->addWidget(addDlgBtnBox); mAddDlg->setLayout(addDlgVBox); } RosterItem *RosterWidget::createItemForContact(const ContactPtr &contact, bool &exists) { RosterItem *item; exists = false; for (int i = 0; i < mList->count(); ++i) { item = dynamic_cast(mList->item(i)); if (item->contact() == contact) { exists = true; return item; } } return new RosterItem(contact, mList); } void RosterWidget::onContactManagerStateChanged(ContactListState state) { if (state == ContactListStateSuccess) { qDebug() << "Loading contacts"; RosterItem *item; bool exists; foreach (const ContactPtr &contact, mConn->contactManager()->allKnownContacts()) { exists = false; item = createItemForContact(contact, exists); if (!exists) { connect(item, SIGNAL(changed()), SLOT(updateActions())); } } mAddBtn->setEnabled(true); } } void RosterWidget::onPresencePublicationRequested(const Contacts &contacts) { qDebug() << "Presence publication requested"; RosterItem *item; bool exists; foreach (const ContactPtr &contact, contacts) { exists = false; item = createItemForContact(contact, exists); if (!exists) { connect(item, SIGNAL(changed()), SLOT(updateActions())); } } } void RosterWidget::onItemSelectionChanged() { updateActions(); } void RosterWidget::onAddButtonClicked() { mAddDlgEdt->clear(); int ret = mAddDlg->exec(); if (ret == QDialog::Rejected) { return; } QString username = mAddDlgEdt->text(); PendingContacts *pcontacts = mConn->contactManager()->contactsForIdentifiers( QStringList() << username); connect(pcontacts, SIGNAL(finished(Tp::PendingOperation *)), SLOT(onContactRetrieved(Tp::PendingOperation *))); } void RosterWidget::onAuthActionTriggered(bool checked) { Q_UNUSED(checked); QList selectedItems = mList->selectedItems(); if (selectedItems.isEmpty()) { return; } Q_ASSERT(selectedItems.size() == 1); RosterItem *item = dynamic_cast(selectedItems.first()); if (item->contact()->publishState() != Contact::PresenceStateYes) { item->contact()->authorizePresencePublication(); } } void RosterWidget::onDenyActionTriggered(bool checked) { Q_UNUSED(checked); QList selectedItems = mList->selectedItems(); if (selectedItems.isEmpty()) { return; } Q_ASSERT(selectedItems.size() == 1); RosterItem *item = dynamic_cast(selectedItems.first()); if (item->contact()->publishState() != Contact::PresenceStateNo) { // The contact can't see my presence item->contact()->removePresencePublication(); } } void RosterWidget::onRemoveActionTriggered(bool checked) { Q_UNUSED(checked); QList selectedItems = mList->selectedItems(); if (selectedItems.isEmpty()) { return; } Q_ASSERT(selectedItems.size() == 1); RosterItem *item = dynamic_cast(selectedItems.first()); if (item->contact()->subscriptionState() != Contact::PresenceStateNo) { // The contact can't see my presence and I can't see his/her presence item->contact()->removePresencePublication(); item->contact()->removePresenceSubscription(); } } void RosterWidget::onBlockActionTriggered(bool checked) { QList selectedItems = mList->selectedItems(); if (selectedItems.isEmpty()) { return; } Q_ASSERT(selectedItems.size() == 1); RosterItem *item = dynamic_cast(selectedItems.first()); if (checked) { item->contact()->block(); } else { item->contact()->unblock(); } } void RosterWidget::onContactRetrieved(Tp::PendingOperation *op) { PendingContacts *pcontacts = qobject_cast(op); QList contacts = pcontacts->contacts(); Q_ASSERT(pcontacts->identifiers().size() == 1); QString username = pcontacts->identifiers().first(); if (contacts.size() != 1 || !contacts.first()) { QMessageBox msgBox; msgBox.setText(QString(QLatin1String("Unable to add contact \"%1\"")).arg(username)); msgBox.exec(); return; } ContactPtr contact = contacts.first(); qDebug() << "Request presence subscription for contact" << username; bool exists = false; RosterItem *item = createItemForContact(contact, exists); if (!exists) { connect(item, SIGNAL(changed()), SLOT(updateActions())); } contact->requestPresenceSubscription(); } void RosterWidget::updateActions() { QList selectedItems = mList->selectedItems(); if (selectedItems.isEmpty()) { mAuthAction->setEnabled(false); mDenyAction->setEnabled(false); mRemoveAction->setEnabled(false); mBlockAction->setEnabled(false); updateActions(0); return; } Q_ASSERT(selectedItems.size() == 1); RosterItem *item = dynamic_cast(selectedItems.first()); ContactPtr contact = item->contact(); ContactManagerPtr manager = contact->manager(); qDebug() << "Contact" << contact->id() << "selected"; qDebug() << " subscription state:" << contact->subscriptionState(); qDebug() << " publish state :" << contact->publishState(); qDebug() << " blocked :" << contact->isBlocked(); if (manager->canAuthorizePresencePublication() && contact->publishState() == Contact::PresenceStateAsk) { mAuthAction->setEnabled(true); } else { mAuthAction->setEnabled(false); } if (manager->canRemovePresencePublication() && contact->publishState() != Contact::PresenceStateNo) { mDenyAction->setEnabled(true); } else { mDenyAction->setEnabled(false); } if (manager->canRemovePresenceSubscription() && contact->subscriptionState() != Contact::PresenceStateNo) { mRemoveAction->setEnabled(true); } else { mRemoveAction->setEnabled(false); } if (manager->canBlockContacts() && contact->publishState() == Contact::PresenceStateYes) { mBlockAction->setEnabled(true); } else { mBlockAction->setEnabled(false); } mBlockAction->setChecked(contact->isBlocked()); updateActions(item); } telepathy-qt-0.9.6.1/examples/roster/roster-item.h0000644000175100017520000000273112530423576023504 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2009 Collabora Ltd. * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_roster_roster_item_h_HEADER_GUARD_ #define _TelepathyQt_examples_roster_roster_item_h_HEADER_GUARD_ #include #include #include #include class RosterItem : public QObject, public QListWidgetItem { Q_OBJECT public: RosterItem(const Tp::ContactPtr &contact, QListWidget *parent = 0); ~RosterItem(); Tp::ContactPtr contact() const { return mContact; } Q_SIGNALS: void changed(); private Q_SLOTS: void onContactChanged(); private: Tp::ContactPtr mContact; }; #endif telepathy-qt-0.9.6.1/examples/extensions/0000755000175100017520000000000012530423576021737 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/extensions/Connection_Interface_Hats.xml0000644000175100017520000001450712530423576027526 0ustar00kaffeinekaffeine00000000000000 Copyright (C) 2007 Collabora Ltd. Copyright (C) 2007 Nokia Corporation Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This interface is an example of how Telepathy can be extended. For the purposes of this example, we pretend we're an organisation example.com that's adding a proprietary extension to Telepathy, so the extension is not in the main Telepathy namespace. A data structure representing a contact and their hat. The contact wearing the hat. The color of the hat The style of the hat Optional key-value pairs describing extended properties of the hat. There is no hat. color MUST be the empty string and properties MUST be an empty mapping. An unspecified type of hat. A fedora, which MAY be red. A knitted hat, with or without a bobble. A bowler hat, as worn by stereotypical English businessmen. A hat with protective qualities. Emitted when the contact's hat has changed. The handle representing the contact's ID on the server The color of the contact's hat. The style of the contact's hat. There's always an a{sv}. Perhaps there's some special religious reason. Request a list of the hats worn by the given contacts. The handles of the contacts whose hats are requested A list of contacts and their hats. Indicate that the hat currently being worn by the local user has changed. The color of the contact's hat. The style of the contact's hat. There's always an a{sv}... Request the prices of a contact's current hat. The handle of the contact whose hat we're interested in purchasing. The price of the hat. This hat is not for sale. Get your own style, you trend-follower! telepathy-qt-0.9.6.1/examples/extensions/cli-connection.h0000644000175100017520000000021412530423576025011 0ustar00kaffeinekaffeine00000000000000#ifndef _Example_Client_Connection_HEADER_GUARD_ #define _Example_Client_Connection_HEADER_GUARD_ #include "_gen/cli-connection.h" #endif telepathy-qt-0.9.6.1/examples/extensions/CMakeLists.txt0000644000175100017520000000756412530423576024513 0ustar00kaffeinekaffeine00000000000000# This directory is an example of how to build extensions to the spec. # Typically this would be in a top-level extensions/ directory. # In this example we build an optional interface for Telepathy Connections, # so we specify Tp::Client::ConnectionInterface as the main interface for the # generated proxies with "--mainiface=Tp::Client::ConnectionInterface'. The # generated proxies will have a convenience constructors for associating the # proxy with the same remote object an instance of the main interface class # is associated with. We could instead have made an optional interface for any # other class, or by leaving that option out entirely we could have made an # extension that will work on QDBusAbstractInterface or any subclass of it. # # For stand-alone interfaces (for which the interface itself should be considered # the main interface) --mainiface should be specified as fully namespaced name # of the interface class itself. set(example_extensions_SRCS cli-connection.cpp cli-connection.h types.cpp) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/_gen) set(generated_all_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/all.xml) tpqt_xincludator(example-extensions-includator ${CMAKE_CURRENT_SOURCE_DIR}/all.xml ${generated_all_xml}) tpqt_constants_gen(example-extensions-constants ${generated_all_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h --namespace=Example --str-constant-prefix=EXAMPLE_ DEPENDS example-extensions-includator) if(MSVC) set(TYPES_INCLUDE ^) else(MSVC) set(TYPES_INCLUDE '') endif(MSVC) tpqt_types_gen(example-extensions-typesgen ${generated_all_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp Example types.h types.h --extraincludes=${TYPES_INCLUDE} DEPENDS example-extensions-constants) set(connection_generated_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/connection.xml) tpqt_xincludator(example-extensions-connection-includator ${CMAKE_CURRENT_SOURCE_DIR}/connection.xml ${connection_generated_xml}) if(MSVC) set(ESCAPED_QUOTES \"\"\") set(connection_include ^) else(MSVC) set(ESCAPED_QUOTES \\\") set(connection_include '') endif(MSVC) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection-body.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/tools/qt-client-gen.py --namespace=Example::Client --typesnamespace=Example --headerfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h --implfile=${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection-body.hpp --realinclude=${CMAKE_CURRENT_SRC_DIR}/cli-connection.h --specxml=${generated_all_xml} --ifacexml=${connection_generated_xml} --extraincludes=${connection_include},${ESCAPED_QUOTES}types.h${ESCAPED_QUOTES} --mainiface=Tp::Client::ConnectionInterface) add_custom_target(example-extensions-connection-generation) add_dependencies(example-extensions-connection-generation example-extensions-connection-includator example-extensions-typesgen) list(APPEND example_extensions_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection-body.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h) tpqt_generate_moc_i(${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.moc.hpp) list(APPEND example_extensions_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.moc.hpp) add_library(example_extensions STATIC ${example_extensions_SRCS}) add_dependencies(example_extensions example-extensions-connection-generation) target_link_libraries(example_extensions ${QT_QTDBUS_LIBRARY} ${QT_QTCORE_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_LIBRARY_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/extensions/types.cpp0000644000175100017520000000003712530423576023607 0ustar00kaffeinekaffeine00000000000000#include "_gen/types-body.hpp" telepathy-qt-0.9.6.1/examples/extensions/types.h0000644000175100017520000000015312530423576023253 0ustar00kaffeinekaffeine00000000000000#ifndef _Example_Types_HEADER_GUARD_ #define _Example_Types_HEADER_GUARD_ #include "_gen/types.h" #endif telepathy-qt-0.9.6.1/examples/extensions/cli-connection.cpp0000644000175100017520000000010312530423576025341 0ustar00kaffeinekaffeine00000000000000#include "cli-connection.h" #include "_gen/cli-connection.moc.hpp" telepathy-qt-0.9.6.1/examples/extensions/all.xml0000644000175100017520000000105012530423576023225 0ustar00kaffeinekaffeine00000000000000 Extensions for 'extended' examples telepathy-qt-0.9.6.1/examples/extensions/connection.xml0000644000175100017520000000040412530423576024616 0ustar00kaffeinekaffeine00000000000000 Connection extensions for 'extended' example telepathy-qt-0.9.6.1/examples/stream-tubes/0000755000175100017520000000000012530423576022153 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/stream-tubes/tube-receiver.cpp0000644000175100017520000000606212530423576025424 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2009-2011 Collabora Ltd. * Copyright (C) 2009,2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "tube-receiver.h" #include #include #include #include #include #include TubeReceiver::TubeReceiver(QObject *parent) : QObject(parent) { mTubeClient = StreamTubeClient::create(QStringList() << QLatin1String("tp-qt-stube-example")); connect(mTubeClient.data(), SIGNAL(tubeAcceptedAsUnix(QString,bool,uchar,Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)), SLOT(onTubeAccepted(QString))); mTubeClient->setToAcceptAsUnix(false); // no SCM_CREDENTIALS required } TubeReceiver::~TubeReceiver() { } void TubeReceiver::onTubeAccepted(const QString &listenAddress) { qDebug() << "Stream tube channel accepted and opened, listening at" << listenAddress; mDevice = new QLocalSocket(this); mDevice->connectToServer(listenAddress); connect(mDevice, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)), this, SLOT(onStateChanged(QLocalSocket::LocalSocketState))); onStateChanged(mDevice->state()); } void TubeReceiver::onStateChanged(QLocalSocket::LocalSocketState state) { if (state == QLocalSocket::ConnectedState) { qDebug() << "Local socket connected and ready"; connect(mDevice, SIGNAL(readyRead()), this, SLOT(onDataFromSocket())); mDevice->write(QByteArray("Hi there!!\n")); // Throw in some stuff QTimer *timer = new QTimer(this); timer->setInterval(2000); connect(timer, SIGNAL(timeout()), this, SLOT(onTimerTimeout())); timer->start(); } else { qDebug() << "Socket in state " << state; } } void TubeReceiver::onDataFromSocket() { QIODevice *source = qobject_cast(sender()); QString data = QLatin1String(source->readLine()); data.remove(QLatin1Char('\n')); qDebug() << "New data from socket: " << data; } void TubeReceiver::onTimerTimeout() { mDevice->write(QByteArray("ping, I'm alive\n")); } int main(int argc, char **argv) { QCoreApplication app(argc, argv); Tp::registerTypes(); new TubeReceiver(&app); return app.exec(); } #include "_gen/tube-receiver.moc.hpp" telepathy-qt-0.9.6.1/examples/stream-tubes/CMakeLists.txt0000644000175100017520000000153512530423576024717 0ustar00kaffeinekaffeine00000000000000set(tubereceiver_SRCS tube-receiver.cpp) set(tubereceiver_MOC_SRCS tube-receiver.h) tpqt_generate_mocs(${tubereceiver_MOC_SRCS}) add_executable(tubereceiver ${tubereceiver_SRCS} ${tubereceiver_MOC_SRCS}) target_link_libraries(tubereceiver ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) set(tubeinitiator_SRCS tube-initiator.cpp) set(tubeinitiator_MOC_SRCS tube-initiator.h) tpqt_generate_mocs(${tubeinitiator_MOC_SRCS}) add_executable(tubeinitiator ${tubeinitiator_SRCS} ${tubeinitiator_MOC_SRCS}) target_link_libraries(tubeinitiator ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/stream-tubes/tube-initiator.h0000644000175100017520000000474112530423576025271 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2009-2011 Collabora Ltd. * Copyright (C) 2009,2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_stream_tubes_tube_initiator_h_HEADER_GUARD_ #define _TelepathyQt_examples_stream_tubes_tube_initiator_h_HEADER_GUARD_ #include #include #include #include #include #include class QTcpServer; using namespace Tp; namespace Tp { class ChannelRequestHints; class PendingOperation; } class TubeInitiator : public QObject { Q_OBJECT public: TubeInitiator(const QString &accountName, const QString &receiver, QObject *parent); ~TubeInitiator(); private Q_SLOTS: void onAccountReady(Tp::PendingOperation *op); void onAccountConnectionChanged(const Tp::ConnectionPtr &); void onContactRetrieved(Tp::PendingOperation *op); void onContactCapabilitiesChanged(); void onTubeRequestFinished(Tp::PendingOperation *op); void onTubeNewConnection(const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact); void onTubeConnectionClosed(const QHostAddress &sourceAddress, quint16 sourcePort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const QString &error, const QString &errorMessage); void onTcpServerNewConnection(); void onDataFromSocket(); private: void createStreamTubeChannel(); QString mReceiver; QTcpServer *mServer; StreamTubeServerPtr mTubeServer; AccountPtr mAccount; ConnectionPtr mConn; ContactPtr mContact; bool mTubeRequested; QHash, QString> mConnAliases; }; #endif telepathy-qt-0.9.6.1/examples/stream-tubes/tube-initiator.cpp0000644000175100017520000002440712530423576025625 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2010-2011 Collabora Ltd. * Copyright (C) 2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "tube-initiator.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include TubeInitiator::TubeInitiator(const QString &accountName, const QString &receiver, QObject *parent) : QObject(parent), mReceiver(receiver), mTubeRequested(false) { mServer = new QTcpServer(this); connect(mServer, SIGNAL(newConnection()), this, SLOT(onTcpServerNewConnection())); mServer->listen(); AccountFactoryPtr accountFactory = AccountFactory::create( QDBusConnection::sessionBus(), Account::FeatureCore); // We only care about CONNECTED connections, so let's specify that in a Connection Factory ConnectionFactoryPtr connectionFactory = ConnectionFactory::create( QDBusConnection::sessionBus(), Connection::FeatureCore | Connection::FeatureConnected); ChannelFactoryPtr channelFactory = ChannelFactory::create(QDBusConnection::sessionBus()); ContactFactoryPtr contactFactory = ContactFactory::create(Contact::FeatureAlias); mTubeServer = StreamTubeServer::create( QStringList() << QLatin1String("tp-qt-stube-example"), /* one peer-to-peer service */ QStringList(), /* no Room tube services */ QString(), /* autogenerated Client name */ true, /* do monitor connections */ accountFactory, connectionFactory, channelFactory, contactFactory); connect(mTubeServer.data(), SIGNAL(newTcpConnection(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,Tp::OutgoingStreamTubeChannelPtr)), SLOT(onTubeNewConnection(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr))); connect(mTubeServer.data(), SIGNAL(tcpConnectionClosed(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,QString,QString,Tp::OutgoingStreamTubeChannelPtr)), SLOT(onTubeConnectionClosed(QHostAddress,quint16,Tp::AccountPtr,Tp::ContactPtr,QString,QString))); mTubeServer->exportTcpSocket(mServer); Q_ASSERT(mTubeServer->isRegistered()); connect(accountFactory->proxy( TP_QT_ACCOUNT_MANAGER_BUS_NAME, TP_QT_ACCOUNT_OBJECT_PATH_BASE + QLatin1Char('/') + accountName, connectionFactory, mTubeServer->registrar()->channelFactory(), mTubeServer->registrar()->contactFactory()), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onAccountReady(Tp::PendingOperation *))); } TubeInitiator::~TubeInitiator() { } void TubeInitiator::onAccountReady(Tp::PendingOperation *op) { if (op->isError()) { qWarning() << "Account cannot become ready - " << op->errorName() << '-' << op->errorMessage(); QCoreApplication::exit(1); return; } PendingReady *ready = qobject_cast(op); Q_ASSERT(ready != NULL); mAccount = AccountPtr::qObjectCast(ready->proxy()); qDebug() << "Account ready"; connect(mAccount.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), SLOT(onAccountConnectionChanged(Tp::ConnectionPtr))); if (mAccount->connection().isNull()) { qDebug() << "The account given has no Connection. Please set it online to continue."; } else { onAccountConnectionChanged(mAccount->connection()); } } void TubeInitiator::onAccountConnectionChanged(const ConnectionPtr &conn) { if (!conn) { return; } // Connection::FeatureConnected being in the Connection Factory means that we shouldn't get // pre-Connected Connections Q_ASSERT(conn->isValid()); Q_ASSERT(conn->status() == ConnectionStatusConnected); qDebug() << "Got a Connected Connection!"; mConn = conn; qDebug() << "Creating contact object for receiver" << mReceiver; connect(mConn->contactManager()->contactsForIdentifiers(QStringList() << mReceiver, Features(Contact::FeatureCapabilities)), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onContactRetrieved(Tp::PendingOperation *))); } void TubeInitiator::onContactRetrieved(PendingOperation *op) { if (op->isError()) { qWarning() << "Unable to create contact object for receiver" << mReceiver << "-" << op->errorName() << ": " << op->errorMessage(); return; } PendingContacts *pc = qobject_cast(op); Q_ASSERT(pc->contacts().size() == 1); mContact = pc->contacts().first(); qDebug() << "Checking contact capabilities..."; connect(mContact.data(), SIGNAL(capabilitiesChanged(Tp::ContactCapabilities)), SLOT(onContactCapabilitiesChanged())); if (mContact->capabilities().streamTubes(QLatin1String("tp-qt-stube-example"))) { onContactCapabilitiesChanged(); } else { qDebug() << "The remote contact needs to be online and have the receiver application running to continue"; } } void TubeInitiator::onContactCapabilitiesChanged() { if (mTubeRequested) { return; } if (mContact->capabilities().streamTubes(QLatin1String("tp-qt-stube-example"))) { qDebug() << "The remote contact is capable of receiving tubes with service tp-qt-stube-example now"; mTubeRequested = true; connect(mAccount->createStreamTube( mContact->id(), QLatin1String("tp-qt-stube-example")), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onTubeRequestFinished(Tp::PendingOperation*))); } } void TubeInitiator::onTubeRequestFinished(PendingOperation *op) { if (op->isError()) { qWarning() << "Unable to request stream tube channel -" << op->errorName() << ": " << op->errorMessage(); return; } qDebug() << "Stream tube channel request finished successfully!"; } void TubeInitiator::onTubeNewConnection( const QHostAddress &srcAddr, quint16 srcPort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact) { qDebug() << "Source port" << srcPort << "is" << contact->alias(); mConnAliases.insert(qMakePair(srcAddr, srcPort), contact->alias()); } void TubeInitiator::onTubeConnectionClosed( const QHostAddress &srcAddr, quint16 srcPort, const Tp::AccountPtr &account, const Tp::ContactPtr &contact, const QString &error, const QString &message) { qDebug() << "Connection from source port" << srcPort << "closed with" << error << ':' << message; mConnAliases.remove(qMakePair(srcAddr, srcPort)); } void TubeInitiator::onTcpServerNewConnection() { qDebug() << "Pending connection found"; QTcpSocket *socket = mServer->nextPendingConnection(); connect(socket, SIGNAL(readyRead()), this, SLOT(onDataFromSocket())); } void TubeInitiator::onDataFromSocket() { QAbstractSocket *source = qobject_cast(sender()); QString data = QLatin1String(source->readLine()); data.remove(QLatin1Char('\n')); // Look up the alias of the remote sending us data based on the tube connection tracking. Of // course, this is slightly overengineered; given that this example uses one-to-one tubes (not // group/MUC tubes), all remote connections are always from the same contact we opened the tube // to in the first place. QPair peerAddr(source->peerAddress(), source->peerPort()); if (mConnAliases.contains(peerAddr)) { qDebug() << "New data from contact" << mConnAliases.value(peerAddr) << ':' << data; } else { // We haven't found out the identity for this connection yet. This may happen, because the // TCP server listen socket and the D-Bus connection are on separate sockets and have no // mutual ordering guarantees. // // A GUI application would likely use a placeholder item and lazily replace it with a // representation of the contact when newTcpConnection for this source address has been // received. A non-interactive daemon or alike might, in turn, queue incoming data until the // contact is known, or just carry on if the contact's details aren't needed (yet). qDebug() << "New data from source port" << peerAddr.second << ':' << data; } if (data == QLatin1String("Hi there!!")) { source->write(QByteArray("Hey back mate.\n")); } else { source->write(QByteArray("Sorry, I have no time for you right now.\n")); } } int main(int argc, char **argv) { QCoreApplication app(argc, argv); if (argc != 3) { qDebug() << "usage:" << argv[0] << " "; return 1; } Tp::registerTypes(); new TubeInitiator(QLatin1String(argv[1]), QLatin1String(argv[2]), &app); return app.exec(); } #include "_gen/tube-initiator.moc.hpp" telepathy-qt-0.9.6.1/examples/stream-tubes/tube-receiver.h0000644000175100017520000000303312530423576025064 0ustar00kaffeinekaffeine00000000000000/* * This file is part of TelepathyQt * * Copyright (C) 2009-2011 Collabora Ltd. * Copyright (C) 2009,2011 Nokia Corporation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_stream_tubes_tube_receiver_h_HEADER_GUARD_ #define _TelepathyQt_examples_stream_tubes_tube_receiver_h_HEADER_GUARD_ #include #include using namespace Tp; namespace Tp { class PendingOperation; } class TubeReceiver : public QObject { Q_OBJECT public: TubeReceiver(QObject *parent); ~TubeReceiver(); private Q_SLOTS: void onTubeAccepted(const QString &listenAddress); void onStateChanged(QLocalSocket::LocalSocketState newState); void onTimerTimeout(); void onDataFromSocket(); private: StreamTubeClientPtr mTubeClient; QLocalSocket *mDevice; }; #endif telepathy-qt-0.9.6.1/examples/protocols/0000755000175100017520000000000012530423576021564 5ustar00kaffeinekaffeine00000000000000telepathy-qt-0.9.6.1/examples/protocols/CMakeLists.txt0000644000175100017520000000076212530423576024331 0ustar00kaffeinekaffeine00000000000000set(protocols_SRCS main.cpp cm-wrapper.cpp protocols.cpp) set(protocols_MOC_SRCS cm-wrapper.h protocols.h) tpqt_generate_mocs(${protocols_MOC_SRCS}) add_executable(protocols ${protocols_SRCS} ${protocols_MOC_SRCS}) target_link_libraries(protocols ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTWIDGETS_LIBRARY} ${QT_QTXML_LIBRARY} telepathy-qt${QT_VERSION_MAJOR} ${TP_QT_EXECUTABLE_LINKER_FLAGS}) telepathy-qt-0.9.6.1/examples/protocols/main.cpp0000644000175100017520000000055212530423576023216 0ustar00kaffeinekaffeine00000000000000#include #include #include #include #include #include "protocols.h" int main(int argc, char **argv) { QCoreApplication app(argc, argv); Tp::registerTypes(); Tp::enableDebug(false); Tp::enableWarnings(false); Protocols protocols; return app.exec(); } telepathy-qt-0.9.6.1/examples/protocols/cm-wrapper.cpp0000644000175100017520000000363012530423576024347 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "cm-wrapper.h" #include "_gen/cm-wrapper.moc.hpp" #include #include #include #include CMWrapper::CMWrapper(const QString &cmName, QObject *parent) : QObject(parent), mCM(ConnectionManager::create(cmName)) { connect(mCM->becomeReady(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onCMReady(Tp::PendingOperation *))); } CMWrapper::~CMWrapper() { } ConnectionManagerPtr CMWrapper::cm() const { return mCM; } void CMWrapper::onCMReady(PendingOperation *op) { if (op->isError()) { qWarning() << "CM" << mCM->name() << "cannot become ready -" << op->errorName() << ": " << op->errorMessage(); return; } qDebug() << "CM" << mCM->name() << "ready!"; qDebug() << "Supported protocols:"; foreach (const QString &protocol, mCM->supportedProtocols()) { qDebug() << "\t" << protocol; } emit finished(); } telepathy-qt-0.9.6.1/examples/protocols/cm-wrapper.h0000644000175100017520000000301212530423576024006 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_protocols_cm_wrapper_h_HEADER_GUARD_ #define _TelepathyQt_examples_protocols_cm_wrapper_h_HEADER_GUARD_ #include #include #include using namespace Tp; namespace Tp { class ConnectionManager; class PendingOperation; } class CMWrapper : public QObject { Q_OBJECT public: CMWrapper(const QString &cmName, QObject *parent = 0); ~CMWrapper(); ConnectionManagerPtr cm() const; Q_SIGNALS: void finished(); private Q_SLOTS: void onCMReady(Tp::PendingOperation *op); private: ConnectionManagerPtr mCM; }; #endif telepathy-qt-0.9.6.1/examples/protocols/protocols.cpp0000644000175100017520000000422312530423576024315 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "protocols.h" #include "_gen/protocols.moc.hpp" #include #include #include #include #include Protocols::Protocols() : cmWrappersFinished(0) { qDebug() << "Listing names"; connect(ConnectionManager::listNames(), SIGNAL(finished(Tp::PendingOperation *)), SLOT(onListNamesFinished(Tp::PendingOperation *))); } Protocols::~Protocols() { } void Protocols::onListNamesFinished(PendingOperation *op) { if (op->isError()) { qWarning() << "Error listing connection manager names -" << op->errorName() << ": " << op->errorMessage(); return; } PendingStringList *ps = qobject_cast(op); qDebug() << "Supported CMs:" << ps->result(); foreach (const QString &cmName, ps->result()) { CMWrapper *cmWrapper = new CMWrapper(cmName, this); mCMWrappers.append(cmWrapper); connect(cmWrapper, SIGNAL(finished()), SLOT(onCMWrapperFinished())); } } void Protocols::onCMWrapperFinished() { if (++cmWrappersFinished == mCMWrappers.size()) { QCoreApplication::quit(); } } telepathy-qt-0.9.6.1/examples/protocols/protocols.h0000644000175100017520000000274312530423576023767 0ustar00kaffeinekaffeine00000000000000/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TelepathyQt_examples_protocols_protocols_h_HEADER_GUARD_ #define _TelepathyQt_examples_protocols_protocols_h_HEADER_GUARD_ #include #include "cm-wrapper.h" #include #include using namespace Tp; namespace Tp { class PendingOperation; } class Protocols : public QObject { Q_OBJECT public: Protocols(); ~Protocols(); private Q_SLOTS: void onListNamesFinished(Tp::PendingOperation *op); void onCMWrapperFinished(); private: QList mCMWrappers; int cmWrappersFinished; }; #endif telepathy-qt-0.9.6.1/ChangeLog0000644000175100017520001124332312530426266017504 0ustar00kaffeinekaffeine00000000000000commit 4a8d46a6f746e6dbe91edd8f76cac4c25c73eb3d Author: Alexandr Akulich Date: Mon May 25 00:32:13 2015 +0500 Prepare 0.9.6.1 release. CMakeLists.txt | 2 +- NEWS | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) commit 911dd2dd6749db90cb678824d40455e7d24a2140 Author: Alexandr Akulich Date: Sun May 24 03:46:47 2015 +0500 BaseConnection: Fixed illegal C++ statement in SimplePresence. TelepathyQt/base-connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 960e7577a74b853b886e7b137364c0d9cdcc8f0d Author: Alexandr Akulich Date: Thu May 14 22:25:36 2015 +0500 Updated NEWS for 0.9.6 release. NEWS | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) commit 931387e987f38e6edcaaf1109726dc251b01f123 Author: Alexandr Akulich Date: Tue May 12 10:26:18 2015 +0500 BaseConnection: addChannel() used in createChannel(). Reduced code duplication in cost of little overhead for channels.contains(). TelepathyQt/base-connection.cpp | 29 +++-------------------------- TelepathyQt/base-connection.h | 2 +- 2 files changed, 4 insertions(+), 27 deletions(-) commit 97cac5798920d1f4e40bc828ed2a49c05614a032 Author: Alexandr Akulich Date: Fri May 1 16:17:31 2015 +0500 BaseChannel: Added custom dbus object name for room text channel. TelepathyQt/base-channel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit dd1978748d4969c93997f1aa6d295a6849c411cd Author: Alexandr Akulich Date: Tue Apr 21 12:59:27 2015 +0500 BaseConnection: Added selfID-related stuff. Added selfID(), setSelfID(), setSelfContact() methods. Implemented selfContactChanged() signal. The selfID property added in 0.27.2. TelepathyQt/base-connection-internal.h | 4 +++ TelepathyQt/base-connection.cpp | 51 ++++++++++++++++++++++++++++++---- TelepathyQt/base-connection.h | 5 ++++ 3 files changed, 54 insertions(+), 6 deletions(-) commit 00f2d5a0533743b01be6af069349942097bb91a3 Author: Alexandr Akulich Date: Tue Apr 21 00:12:13 2015 +0500 BaseChannel::create() arguments reordered in natural way. 1) Swapped targetHandle and targetHandleType arguments. 2) Type of the targetHandleType changed to Tp::HandleType to force compilation error. 3) Added default values: targetHandleType = Tp::HandleTypeNone, targetHandle = 0. TelepathyQt/base-channel.cpp | 16 ++++++++-------- TelepathyQt/base-channel.h | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) commit bf04e9f2d94caedc97daa982ab5389af2f1338e9 Author: Alexandr Akulich Date: Mon Apr 13 10:46:56 2015 +0500 BaseConnectionSimplePresenceInterface: Reworked. 1) Fixed typo in the interface subclass name. (BaseConnectionSimplePresenceInterfaceSublclass -> BaseConnectionSimplePresenceInterfaceSubclass) 2) Fixed typo in maximumStatusMessageLength occurrence. (maxmimumStatusMessageLength -> maximumStatusMessageLength) 3) DBus GetPresences() method implementation refactored and exposed as complementary public C++ method, which can save CM from storing contact presences on its own. 4) maximumStatusMessageLength() type changed from int to uint, as it is in the specs. TelepathyQt/base-connection.cpp | 44 ++++++++++++++++++++--------------------- TelepathyQt/base-connection.h | 20 +++++++++++-------- 2 files changed, 34 insertions(+), 30 deletions(-) commit ef6ed5064c7faff1db51bfb90b7f589e2f287780 Author: Alexandr Akulich Date: Tue Apr 21 16:18:45 2015 +0500 Added BaseChannelRoomConfigInterface. TelepathyQt/base-channel-internal.h | 45 +++++ TelepathyQt/base-channel.cpp | 341 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 80 +++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 468 insertions(+) commit a7941ac1de8ca9f3599d539646638d0c3c82b7d2 Author: Alexandr Akulich Date: Thu Apr 23 18:59:08 2015 +0500 Tools/qt-svc-gen: Fixed condition in adaptor methods generation. The condition was looks like if (!adaptee()->metaObject()->indexOfMethod("method()") == -1) { dbusConnection().send(dbusMessage.createErrorReply(NOT_IMPLEMENTED))); return; } The logical inversion at the start turns zero index into 1 and all other indices into 0, thus the condition is always false. Bug: #86312. Reviewed-by: David Edmundson tools/qt-svc-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 211b62de518c21e38b3a9cf3735b30fb5a43d884 Author: Alexandr Akulich Date: Thu Apr 23 17:32:26 2015 +0500 Fixed various documentation issues. Reviewed-by: David Edmundson TelepathyQt/abstract-client.cpp | 5 ----- TelepathyQt/account.cpp | 2 +- TelepathyQt/channel-request.cpp | 1 + TelepathyQt/connection-manager.cpp | 3 +++ TelepathyQt/contact.cpp | 7 ++++--- TelepathyQt/outgoing-stream-tube-channel.cpp | 2 +- TelepathyQt/profile.cpp | 2 +- TelepathyQt/text-channel.cpp | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) commit 41415df84f3ac2413804dec8b75b2f4905e1bddf Author: Alexandr Akulich Date: Tue Apr 21 20:17:55 2015 +0500 Implemented BaseChannelRoomListType. The "Server" property marked as immutable, despite of the spec: http://telepathy.freedesktop.org/spec/Channel_Type_Room_List.html Reviewed-by: David Edmundson TelepathyQt/base-channel-internal.h | 27 ++++++ TelepathyQt/base-channel.cpp | 164 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 49 +++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 242 insertions(+) commit cf62ef1cbf36a4cded98b70ff78b38cc370311bf Author: Alexandr Akulich Date: Tue Apr 21 15:34:35 2015 +0500 Added BaseChannelRoomInterface. Reviewed-by: David Edmundson TelepathyQt/base-channel-internal.h | 23 ++++++ TelepathyQt/base-channel.cpp | 145 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 60 +++++++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 230 insertions(+) commit 6d1d51f2ce03ef4dfaa0603a43c9f09c5f4ca14d Author: Alexandr Akulich Date: Tue Apr 21 13:16:33 2015 +0500 BaseConnection: Fixed code style (no actual changes). Reviewed-by: David Edmundson TelepathyQt/base-connection-internal.h | 2 +- TelepathyQt/base-connection.cpp | 15 ++++++++------- TelepathyQt/base-connection.h | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) commit 1a2e1d9780b596ba260fac49846851698a76a90a Author: Alexandr Akulich Date: Tue Apr 21 13:09:39 2015 +0500 BaseConnection::Adaptee: Members are now private. They are never used from outside. Reviewed-by: David Edmundson TelepathyQt/base-connection-internal.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 26559e13f9f6c2429632f0b51fe8ab7a4e19269b Author: Alexandr Akulich Date: Tue Apr 21 13:07:30 2015 +0500 BaseConnection: Added some commentaries. Reviewed-by: David Edmundson TelepathyQt/base-connection.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 9b80bf8d383a5cbe768b6956b5937c4ef446cfae Author: Alexandr Akulich Date: Tue Apr 21 13:05:01 2015 +0500 BaseConnection: Added DBus ReleaseHandles() method. Since 0.21.6, this method does nothing and returns successfully. Reviewed-by: David Edmundson TelepathyQt/base-connection-internal.h | 4 ++-- TelepathyQt/base-connection.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) commit c056a72358c7baef0f2f725d9b533c0195283d76 Author: Alexandr Akulich Date: Tue Apr 21 13:01:57 2015 +0500 BaseConnection: inspectHandles() exposed as a part of C++ interface. Reviewed-by: David Edmundson TelepathyQt/base-connection.cpp | 17 +++++++++++------ TelepathyQt/base-connection.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) commit b057f1f499455306522de274aeca1c410ab579ad Author: Alexandr Akulich Date: Tue Apr 21 12:00:42 2015 +0500 BaseConnection: Code is moved around, no actual changes. Methods moved to be consistent with other classes and the order of declarations. TelepathyQt/base-connection-internal.h | 56 +++++++------- TelepathyQt/base-connection.cpp | 137 ++++++++++++++++++++------------- TelepathyQt/base-connection.h | 23 +++--- 3 files changed, 121 insertions(+), 95 deletions(-) commit bbeba4e00e52f0cfdb78283d1d882eed973fa4fc Author: Alexandr Akulich Date: Tue Apr 21 09:57:06 2015 +0500 BaseConnection: Merged two pair of create() methods. Made dbusConnection argument be optional with the default QDBusConnection::sessionBus(). Reviewed-by: David Edmundson TelepathyQt/base-connection.h | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) commit f4f0d1a9b22aead8a4d5bdb37a3ff1d96e7c34ae Author: Alexandr Akulich Date: Tue Apr 21 11:53:17 2015 +0500 BaseConnection, BaseChannel: Fixed mPriv member type. BaseConnection::Private and BaseChannel::Private was been declared as classes, but defined as structs. As Private used to be struct everywhere in the project, declaration changed to last one. AbstractConnectionInterface, AbstractChannelInterface: mPriv member type changed to struct to be consistent. Reviewed-by: David Edmundson TelepathyQt/base-channel.h | 9 +++++---- TelepathyQt/base-connection.h | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) commit 0f3f371c9137c59bdf093d545c2c494b4ca0a2cc Author: Alexandr Akulich Date: Tue Apr 7 19:07:57 2015 +0600 BaseConnection::matchChannel(): Fixed TargetHandle/TargetID processing. Request parameters validation moved from BaseConnectionRequestsInterface::ensureChannel() to BaseChannel::ensureChannel(). TelepathyQt/base-connection.cpp | 44 +++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 13 deletions(-) commit 8a9e2c567e3e4bff60bfc3f81dcd152b549bd049 Author: Alexandr Akulich Date: Thu Apr 2 16:51:00 2015 +0500 BaseConnection: Added a draft documentation for ensureChannel() method. TelepathyQt/base-connection.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit 127bb3ec5f08921ab9d3081f5a7747c2ce35b741 Author: Alexandr Akulich Date: Mon Mar 30 07:49:06 2015 +0500 BaseConnection::ensureChannel(): Refactored. Channel matching extracted to a protected virtual method. Previous ensureChannel() implementation doesn't allow to override the default "ChannelType/TargetHandleType/TargetHandle matching" behavior, which might be incorrect for some reasons. This way, we can not perform the request values extraction outside of the cycle, but it is a necessary sacrifice with low performance hit, because ensureChannel() is rarely used method, extraction operation is low-cost and usualy there is just a few channels to iterate. TelepathyQt/base-connection.cpp | 27 ++++++++++++++++++++------- TelepathyQt/base-connection.h | 2 ++ 2 files changed, 22 insertions(+), 7 deletions(-) commit 2263a6459de9c50269da4630a563e4e4bff0fc82 Author: Alexandr Akulich Date: Mon Mar 30 07:45:23 2015 +0500 BaseConnection: Changed API (createChannel(), ensureChannel()). Refactored out excess of createChannel()/ensureChannel() signatures. Fixed "Requested" property for the created channel. TelepathyQt/base-connection.cpp | 92 ++++++++++++++--------------------------- TelepathyQt/base-connection.h | 8 ++-- 2 files changed, 34 insertions(+), 66 deletions(-) commit 0a8d52d12226526b647d02b486531dd4330d5673 Author: Alexandr Akulich Date: Fri Mar 27 12:43:04 2015 +0500 BaseChannel: Added missing members initialization on construction. TelepathyQt/base-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 5c395a647a2d6b7930930ad605a4c4a9bb2d1c0e Author: Alexandr Akulich Date: Thu Mar 26 23:18:54 2015 +0500 BaseConnection::ensureChannel(): Fixed requirements for the request argument. ensureChannel() have the same request argument semantic as createChannel(), so only ChannelType key must be present. TelepathyQt/base-connection.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 3f90bcd87d26a595dd392bd0fb49996384ef94b6 Author: Alexandr Akulich Date: Sun Mar 29 01:17:48 2015 +0500 BaseChannelSASLAuthenticationInterface: Fixed SASL status properties. TelepathyQt/base-channel.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 494a955128a193382a698ee3d71071d8ff8388e9 Author: Rémi Benoit Date: Fri Mar 27 12:57:54 2015 +0100 Add missing QObject include Needed to build against Qt 5.5 as QStringList doesn't include QObject anymore. TelepathyQt/readiness-helper.h | 1 + 1 file changed, 1 insertion(+) commit 23d4f9e7a94997463753a13c5e012da50b86c0e2 Author: Tiago Salem Herrmann Date: Thu Feb 19 00:34:17 2015 -0200 Don't set "Requested" based on initiatorHandle and selfHandle TelepathyQt/base-connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b9799ef6f93b13f4df7c2a9e65edcc6bf010d7ef Author: Martin Klapetek Date: Tue Mar 24 16:01:26 2015 +0100 Don't require TargetHandleType and TargetHandle to be present in requests The specification says that only ChannelType MUST be set. If the rest makes no sense, the request should be rejected by the CM rather than here. This for example breaks group chats which have no TargetHandle or TargetHandleType. Reviewed-by: David Edmundson TelepathyQt/base-connection.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit ac90076c5eb42a672d1e6307927b8dce6087d999 Author: David Edmundson Date: Mon Mar 9 12:59:12 2015 +0100 Match arg type in remaining QMetaObject::invoke calls TelepathyQt/base-call.cpp | 2 +- TelepathyQt/base-channel.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 94fb01ce0dbd571d61074db51352f0ce952c9f85 Author: David Edmundson Date: Fri Mar 6 12:47:31 2015 +0100 Fix arg types used in QMetaObject::invokeMethod TelepathyQt/base-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4d3a8aac680a81d427229eb85635a483909b4f7b Author: Tiago Salem Herrmann Date: Fri Feb 13 11:51:18 2015 -0200 Fix build in Qt4 TelepathyQt/base-call.cpp | 2 +- TelepathyQt/base-channel.cpp | 14 +++++++------- TelepathyQt/base-connection.cpp | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) commit b8a205b6aac5c779f240506610a20a9cf7df1e73 Author: Alexandr Akulich Date: Tue Feb 10 18:58:59 2015 +0500 BaseChannelCaptchaAuthenticationInterface: Fixed signal emission. Now we emit the org.freedesktop.DBus.Properties.PropertiesChanged signal on CaptchaStatus, CaptchaError or CaptchaErrorDetails property changes. TelepathyQt/base-channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 8443f7c5650304377a63462e8a480f94dee2a308 Author: Alexandr Akulich Date: Tue Feb 10 18:47:28 2015 +0500 AbstractDBusServiceInterface: Added notifyPropertyChanged() method. TelepathyQt/dbus-service.cpp | 27 +++++++++++++++++++++++++++ TelepathyQt/dbus-service.h | 3 +++ 2 files changed, 30 insertions(+) commit b735cc11f56cd99c7bf2175f89ee7c77ee4509db Author: Alexandr Akulich Date: Tue Feb 10 18:45:01 2015 +0500 Refactor: objectPath member moved from DBusService to DBusObject. TelepathyQt/dbus-object.cpp | 11 +++++++++++ TelepathyQt/dbus-object.h | 6 ++++++ TelepathyQt/dbus-service.cpp | 5 ++--- 3 files changed, 19 insertions(+), 3 deletions(-) commit ea890f160e5d3b017bac1dc63df79757b477a33b Author: Tiago Salem Herrmann Date: Fri Jan 30 18:42:05 2015 -0200 force setInterfaces() on call-content.cpp, otherwise dtmf doesn't work TelepathyQt/call-content.cpp | 1 + 1 file changed, 1 insertion(+) commit 3c1230c83368ef2823053825798aa64a719a83b9 Author: Tiago Salem Herrmann Date: Fri Jan 30 18:40:08 2015 -0200 emit selfHandleChanged on setSelfHandle() TelepathyQt/base-connection.cpp | 3 +++ 1 file changed, 3 insertions(+) commit d39d1f68725bb96b022b8f6756622ed8c2e71aae Author: Gustavo Pichorim Boiko Date: Fri Jan 30 18:38:05 2015 -0200 Add client side support for conference calls TelepathyQt/account.cpp | 142 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/account.h | 22 ++++++++ 2 files changed, 164 insertions(+) commit 16304b8388afb7529be1f234470d73c4b8eeac49 Author: Tiago Salem Herrmann Date: Fri Jan 30 18:31:09 2015 -0200 Pass the whole request to ensureChannel() and createChannel() TelepathyQt/base-connection.cpp | 9 +++++++-- TelepathyQt/base-connection.h | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) commit fa32c36a1dc64ed9058a3b98d6c87edd4b227842 Author: Tiago Salem Herrmann Date: Fri Jan 30 17:43:57 2015 -0200 Add BaseChannelSMSInterface TelepathyQt/base-channel-internal.h | 25 +++++++++ TelepathyQt/base-channel.cpp | 105 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 38 +++++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 170 insertions(+) commit 56667bfa6db7f108611b7d407f66108ba08d7a97 Author: Tiago Salem Herrmann Date: Fri Jan 30 17:40:20 2015 -0200 Add BaseChannelCallType Add BaseChannelHoldInterface Add BaseChannelConferenceInterface Add BaseChannelMergeableConferenceInterface Add BaseChannelSplittableInterface TelepathyQt/BaseCall | 13 + TelepathyQt/CMakeLists.txt | 8 + TelepathyQt/base-call-internal.h | 136 +++++++ TelepathyQt/base-call.cpp | 502 ++++++++++++++++++++++++ TelepathyQt/base-call.h | 190 +++++++++ TelepathyQt/base-channel-internal.h | 180 +++++++++ TelepathyQt/base-channel.cpp | 754 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 257 ++++++++++++ TelepathyQt/call-interfaces.xml | 9 + TelepathyQt/service-types.h | 18 + TelepathyQt/stable-interfaces.xml | 2 + TelepathyQt/svc-call.xml | 12 + TelepathyQt/svc-channel.xml | 2 + 13 files changed, 2083 insertions(+) commit 099dd1c08450d35f699a553e2407356a8969122a Author: Alexandr Akulich Date: Sun Jan 4 22:25:29 2015 +0600 Added TP_QT_VERSION and TP_QT_VERSION_CHECK macros. TelepathyQt/CMakeLists.txt | 4 +- TelepathyQt/global.h | 139 --------------------------------------- TelepathyQt/global.h.in | 159 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 140 deletions(-) commit 926ae84b735f201d26a3a381797d23cbfc9ad4a6 Author: Alexandr Akulich Date: Fri Dec 19 21:26:01 2014 +0600 Implemented BaseConnectionAvatarsInterface. TelepathyQt/base-connection-internal.h | 43 ++++++ TelepathyQt/base-connection.cpp | 240 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 57 ++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 342 insertions(+) commit 5f297679b37be90b82460f6daaad77d9f08284d8 Author: Alexandr Akulich Date: Sun Jan 4 19:28:20 2015 +0600 Prepare for 0.9.6 development. CMakeLists.txt | 2 +- NEWS | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) commit 31c8f4170f58a21baebce226918e6ed52a46dd0b Author: Aleix Pol Date: Thu Oct 30 17:23:14 2014 +0100 Add the telepathy-qt include directories to the telepathy-qt target Whoever wants to link against telepathy-qt will need to be able to include it, so do it right away. Reviewed by: David Edmundson TelepathyQt/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) commit 7164fa9e4f73963c3dae0d6dc000aa31c29d46b6 Author: David Edmundson Date: Wed Sep 10 12:09:16 2014 +0200 Export BaseChannel TelepathyQt/base-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 60ac161af063d052ea601c14f39bf1031950d68d Author: David Edmundson Date: Tue Sep 9 00:10:13 2014 +0200 Prepare for 0.9.5 release CMakeLists.txt | 8 ++------ NEWS | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) commit 191d7d44ec88be3785b39f785c25159bfc542604 Author: David Edmundson Date: Sun Sep 7 18:14:34 2014 +0200 Update NEWS NEWS | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 0205d383bb9b44a3b8c19fbecebd3e62315415ed Author: Alexandr Akulich Date: Thu Sep 4 00:58:02 2014 +0600 Revert "!Hackish! BaseChannelMessagesInterface::sendMessage: Token added to message header." Commit is useless, but patch is mostly reused in dd540578594d26cfcde54fc739992cae2f9b32fc. This reverts commit 6cb774eb3994b513e321a91cfcc2d29b9aa494c3. Conflicts: TelepathyQt/base-channel.cpp TelepathyQt/base-channel.cpp | 2 -- 1 file changed, 2 deletions(-) commit 7590c3f199703449dad5a0918f22615a960a2a39 Author: David Edmundson Date: Wed Sep 3 14:41:05 2014 +0200 set handler info in more dbus tests tests/dbus/client.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) commit 74e328063b976e428cd50e1addb8f9a6fe62146c Author: David Edmundson Date: Wed Sep 3 11:44:21 2014 +0200 Revert "Add BaseConnection RequestsInterface" This reverts commit c00a4737402dd86630f117d9d5c65a12e1e55582. Patch made little sense. If this is going in the ctor because the interface is mandatory so should contacts. Also it needs to go via plugInterface so it's in the interfaces map, otherwise we end up with two TelepathyQt/base-connection.cpp | 54 +++++++++++++++++++---------------------- TelepathyQt/base-connection.h | 3 --- 2 files changed, 25 insertions(+), 32 deletions(-) commit c00a4737402dd86630f117d9d5c65a12e1e55582 Author: Alexandr Akulich Date: Tue Aug 19 22:55:23 2014 +0600 Add BaseConnection RequestsInterface TelepathyQt/base-connection.cpp | 54 ++++++++++++++++++++++------------------- TelepathyQt/base-connection.h | 3 +++ 2 files changed, 32 insertions(+), 25 deletions(-) commit 2a073463ce1c1f67e7109bc7b149aa9551e5e8ec Author: Alexandr Akulich Date: Thu Aug 21 18:53:21 2014 +0600 BaseChannel: Implemented descriptive unique name. TelepathyQt/base-channel.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit 402587311ac8b230888b4cce5214e41bec055ad4 Author: Alexandr Akulich Date: Thu Aug 21 18:55:41 2014 +0600 BaseConnection: Changed unique name. TelepathyQt/base-connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dd540578594d26cfcde54fc739992cae2f9b32fc Author: Alexandr Akulich Date: Thu Aug 21 03:39:08 2014 +0600 BaseChannelMessagesInterface: Fixed timestamp of sent messages. TelepathyQt/base-channel.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) commit c7d1d42cf6d9e8be6f7e6089dd97eab016a8410d Author: David Edmundson Date: Tue Sep 2 22:36:08 2014 +0200 Pass valid handlerInfo in tests tests/dbus/account-channel-dispatcher.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) commit ccabc8ad07739af1f3d7b4d02d8a1da689ae2afc Author: Martin Klapetek Date: Fri Aug 1 12:00:08 2014 +0200 Require newer versions of Farstream and Telepathy-Farstream CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit fee87738e85e338f61228e0474b8ead1a23c4453 Author: David Edmundson Date: Wed Aug 27 23:37:02 2014 +0200 Avoid trying to load invalid channelRequest If there is no relevant channel-request properties in the supplied handlerInfo we can assume the channelRequest is bogus and we should avoid trying to load it. https://bugs.freedesktop.org/show_bug.cgi?id=77986 TelepathyQt/client-registrar.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit e460dfd8e1801412dedb11d8211642501f4989c5 Author: David Edmundson Date: Wed Aug 27 20:19:57 2014 +0200 fix typo in comment TelepathyQt/pending-channel-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 07dd896bfb579e844aee08692253d4baf61e5036 Author: David Edmundson Date: Mon Aug 25 18:20:14 2014 +0200 Don't error on unused typedefs Unused typedefs can happen easily with varying versions of TpGlib, and it's not a problem that should cause compliation to fail. cmake/modules/TelepathyDefaults.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 4ae4669824ef31e744230ac9bc47da39380c1d73 Author: Marcin ZiemiÅ„ski Date: Sat Jul 19 20:01:46 2014 +0200 Allowed subclass of Tp::ReceivedMessage TelepathyQt/message.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit 6cb774eb3994b513e321a91cfcc2d29b9aa494c3 Author: Alexandr Akulich Date: Fri Aug 15 01:36:47 2014 +0600 !Hackish! BaseChannelMessagesInterface::sendMessage: Token added to message header. TelepathyQt/base-channel.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit 12e5f4d55e4a22a97563b4e9747645aee5a79756 Author: Alexandr Akulich Date: Mon Aug 18 00:56:18 2014 +0600 BaseConnectionRequestsInterface: Fixed createChannel() argument checks. TelepathyQt/base-connection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a6f99eaad3bfc6ec798c6fb4dbe659d8d1ae0671 Author: Alexandr Akulich Date: Sun Aug 10 12:18:12 2014 +0600 Added BaseChannelChatStateInterface. TelepathyQt/base-channel-internal.h | 22 +++++++ TelepathyQt/base-channel.cpp | 114 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 43 ++++++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 181 insertions(+) commit 678c162f699518abd498188a3ca761694a356a5b Author: Alexandr Akulich Date: Sat Aug 9 18:52:28 2014 +0600 BaseConnection::Adaptee: Fixed getProtocol(). TelepathyQt/base-connection-internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5af9bd275a4cdcb1ceb46020bfc9d9bb90810dc3 Author: Alexandr Akulich Date: Sat Aug 9 18:38:56 2014 +0600 BaseConnection: Implemented RequestsInterface::channelClosed() emission. TelepathyQt/base-connection.cpp | 13 +++++++++++++ TelepathyQt/base-connection.h | 2 ++ 2 files changed, 15 insertions(+) commit 7de03e48f79fb9eec69104395cd31ed111c15938 Author: Alexandr Akulich Date: Sat Aug 9 00:58:43 2014 +0600 BaseConnection: Channels now will be closed on obj destruction. TelepathyQt/base-connection.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 20c5e719225c1a0a36113d7589acd1d15a6db0f9 Author: Alexandr Akulich Date: Sat Aug 9 00:56:28 2014 +0600 BaseChannel: close() method extracted from Adaptee::close(). Connection type changed from QueuedConnection to DirectConnection, because close() method will be used in destructor. TelepathyQt/base-channel.cpp | 15 ++++++++------- TelepathyQt/base-channel.h | 2 ++ 2 files changed, 10 insertions(+), 7 deletions(-) commit ed1189e0b5759cb06cfb178829f6618a460e2a7f Author: Alexandr Akulich Date: Tue Aug 5 21:32:02 2014 +0600 Added BaseChannelSecurableInterface. TelepathyQt/base-channel-internal.h | 17 +++++++ TelepathyQt/base-channel.cpp | 99 +++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 40 +++++++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 158 insertions(+) commit b857325763461b8a61180bc2894abd0ff69eec59 Author: Alexandr Akulich Date: Wed Jul 9 20:17:35 2014 +0600 Added BaseConnectionContactInfoInterface. TelepathyQt/base-connection-internal.h | 30 +++++ TelepathyQt/base-connection.cpp | 215 ++++++++++++++++++++++++++++++++- TelepathyQt/base-connection.h | 59 +++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 305 insertions(+), 1 deletion(-) commit 916104436276bc526390ac44842e7a9d3b2df908 Author: Alexandr Akulich Date: Tue Jul 29 17:34:53 2014 +0600 Added BaseConnectionAliasingInterface. TelepathyQt/base-connection-internal.h | 25 +++++ TelepathyQt/base-connection.cpp | 182 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 53 ++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 262 insertions(+) commit 3fceeb1c8cb0b27e22853fcdb935a073e0f94953 Author: Alexandr Akulich Date: Tue Aug 5 00:07:04 2014 +0600 BaseConnectionSimplePresenceInterface: Added missing methods. Methods statuses() and maximumStatusMessageLength() added and marked as public. TelepathyQt/base-connection.cpp | 11 ++++++++++- TelepathyQt/base-connection.h | 11 +++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) commit 874756ab07f2479d6611d216d2b133c89d97b3af Author: Alexandr Akulich Date: Tue Jul 29 02:46:58 2014 +0600 Improved BaseConnectionContactListInterface. Implemented missing callback methods. Removed deprecated methods. TelepathyQt/base-connection-internal.h | 27 ++-- TelepathyQt/base-connection.cpp | 285 ++++++++++++++++++++++++++------- TelepathyQt/base-connection.h | 52 ++++-- 3 files changed, 292 insertions(+), 72 deletions(-) commit e6704080b8d94d0e42e7263ceaf172b2abc5f4a5 Author: Alexandr Akulich Date: Sun Jul 20 02:04:18 2014 +0600 base-connection.cpp: Fixed comments. TelepathyQt/base-connection.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 62a13f68c7406d14fb407fd160e3d45fae5ef219 Author: Alexandr Akulich Date: Fri Jun 27 20:19:42 2014 +0600 BaseConnectionAddressingInterface: Fixed comments. TelepathyQt/base-connection.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 25dd6741f973aab999860cf365e3b273127560f3 Author: Alexandr Akulich Date: Thu Jun 26 18:04:24 2014 +0600 BaseChannelCaptchaAuthenticationInterface: Fixed property exposing. TelepathyQt/base-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit aefe3feeb4c35dffd65239d2cc522e97f6ee2c59 Author: Alexandr Akulich Date: Thu Jun 19 18:57:50 2014 +0600 BaseConnection: Implemented missed addChannel() method. TelepathyQt/base-connection.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit eb9ae568d189e354d52565b24657c3df9325af1a Author: Alexandr Akulich Date: Thu Jun 19 18:57:32 2014 +0600 Added BaseChannelSASLAuthenticationInterface. TelepathyQt/base-channel-internal.h | 49 +++++ TelepathyQt/base-channel.cpp | 372 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 103 ++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 526 insertions(+) commit 9ecdd378fdfc7c2d15c390f7cf7102be69ffc218 Author: Alin Elena Date: Wed Jan 29 11:53:48 2014 +0100 Update FindGStreamer0.10 -> FindGStreamer1.0 Reviewed-by: David Edmundson cmake/modules/FindGStreamer.cmake | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) commit 290f659ff5fbb8ad7889c56769e55ec31ecf75c8 Author: Diane Trout Date: Wed Jan 15 22:29:00 2014 -0800 start updating TelepathyQt to use newer farstream cmake/modules/FindFarstream.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 4fca056a8011ff14769f858e53ea65b47ded4b19 Author: John Brooks Date: Thu Jun 19 05:35:51 2014 -0600 Fix Qt5 pkgconfig dependencies for Farstream 0191a6dd fixed the pkgconfig dependencies for Qt5, but missed updating TelepathyQtFarstream and two other files. Reviewed-by: David Edmundson TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in | 2 +- TelepathyQt/Farstream/TelepathyQtFarstream.pc.in | 2 +- TelepathyQt/TelepathyQtService-uninstalled.pc.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 1916533698d0212bad4e0af5168db4992ceef99d Author: David Edmundson Date: Sat Jun 14 17:51:23 2014 +0200 Enable services by default CMakeLists.txt | 6 +++--- TelepathyQt/CMakeLists.txt | 4 ++-- examples/cm/CMakeLists.txt | 4 ++-- tests/dbus/CMakeLists.txt | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) commit c82352e31f31bf433b120f1bcc73927661a1fdd4 Author: David Edmundson Date: Sat Jun 14 17:51:10 2014 +0200 Remove unused function tests/dbus/dbus-tube-chan.cpp | 5 ----- 1 file changed, 5 deletions(-) commit af98a9b3c6a31c97caab532c547d1168cdac94bd Author: Anant Kamath Date: Fri Aug 2 21:03:12 2013 +0530 Fix Qt4 compilation TelepathyQt/base-channel.cpp | 12 ++++++------ TelepathyQt/base-connection.cpp | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) commit 88e1c41725559cd625af02e35863e596fb60d1e0 Author: Matthias Gehre Date: Mon Mar 25 23:08:01 2013 -0500 cmake: telepathy-service does not depend on telepathy TelepathyQt/CMakeLists.txt | 1 - TelepathyQt/base-connection.cpp | 1 - 2 files changed, 2 deletions(-) commit 2606e5026dcea3c6c8e7d5b28156afedb5c43444 Author: Matthias Gehre Date: Sat Mar 23 09:23:23 2013 -0500 Add BaseChannelGroupInterface TelepathyQt/base-channel-internal.h | 43 +++++++ TelepathyQt/base-channel.cpp | 248 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 41 ++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 334 insertions(+) commit 24381dbe117a1e45669762fe83f9aeccd1a3ea3d Author: Matthias Gehre Date: Mon Mar 25 22:51:38 2013 -0500 Add BaseChannelCaptchaAuthenticationInterface TelepathyQt/base-channel-internal.h | 23 +++++ TelepathyQt/base-channel.cpp | 183 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 44 +++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 252 insertions(+) commit a0fc3be57195981af30c7efeace625f3cccb6f1d Author: Matthias Gehre Date: Sat Mar 9 21:08:19 2013 -0600 Add BaseChannelServerAuthenticationType TelepathyQt/base-channel-internal.h | 12 +++++++ TelepathyQt/base-channel.cpp | 72 +++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 30 ++++++++++++++++ TelepathyQt/service-types.h | 2 ++ 4 files changed, 116 insertions(+) commit 5dd4aba91e38fa3c3d4000136ce75ee3a2cfec74 Author: Matthias Gehre Date: Sat Mar 9 13:32:43 2013 -0600 Add BaseConnectionAddressingInterface TelepathyQt/base-connection-internal.h | 19 ++++++ TelepathyQt/base-connection.cpp | 120 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 42 ++++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 183 insertions(+) commit 14c2f25952b3e94d96028b1d806b330faede3bfe Author: Matthias Gehre Date: Mon Mar 25 22:53:17 2013 -0500 Add BaseConnectionContactListInterface TelepathyQt/base-connection-internal.h | 33 ++++++ TelepathyQt/base-connection.cpp | 177 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 44 ++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 256 insertions(+) commit 172464d51f36ede3e6e07dd9cc6357eca24aabe0 Author: Matthias Gehre Date: Mon Mar 25 22:56:34 2013 -0500 Add BaseConnectionSimplePresenceInterface TelepathyQt/base-connection-internal.h | 24 +++++ TelepathyQt/base-connection.cpp | 169 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 40 ++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 235 insertions(+) commit 252487148cf46603c71e255a22edc7a69e28b9ab Author: Matthias Gehre Date: Mon Mar 25 15:34:59 2013 -0500 Add BaseChannelMessagesInterface TelepathyQt/base-channel-internal.h | 41 ++++++++ TelepathyQt/base-channel.cpp | 201 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 56 ++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 300 insertions(+) commit 483c0d518278aa7c7762cca8517f8fa6dc4e169e Author: Matthias Gehre Date: Mon Mar 25 15:34:25 2013 -0500 Add BaseChannelTextType TelepathyQt/base-channel-internal.h | 23 +++++ TelepathyQt/base-channel.cpp | 190 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 50 ++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 265 insertions(+) commit 516e26cf2d4b3e13b58e2f6d0fbd6ed052b5d8d7 Author: Matthias Gehre Date: Mon Mar 25 15:32:57 2013 -0500 Add BaseConnectionContactsInterface TelepathyQt/base-connection-internal.h | 17 ++++++ TelepathyQt/base-connection.cpp | 107 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 40 ++++++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 166 insertions(+) commit 309c3852dd2abacf7c8f06b34f82b1585a995ff7 Author: Matthias Gehre Date: Mon Mar 25 15:32:11 2013 -0500 Add BaseConnectionRequestsInterface TelepathyQt/base-connection-internal.h | 26 +++++ TelepathyQt/base-connection.cpp | 174 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 40 ++++++++ TelepathyQt/service-types.h | 2 + 4 files changed, 242 insertions(+) commit a4b4c922aeb12af563440d913c48d0e0e6a044f9 Author: Matthias Gehre Date: Mon Mar 25 15:30:32 2013 -0500 Implement BaseConnection and AbstractConnectionInterface TelepathyQt/base-connection-internal.h | 50 ++++ TelepathyQt/base-connection.cpp | 414 +++++++++++++++++++++++++++++++-- TelepathyQt/base-connection.h | 80 +++++-- TelepathyQt/service-types.h | 2 + 4 files changed, 515 insertions(+), 31 deletions(-) commit 90fbae19f732d25ecfd83c442a1c65a17d01d0e6 Author: Matthias Gehre Date: Mon Mar 25 15:27:05 2013 -0500 Add BaseChannel and AbstractChannelInterface TelepathyQt/BaseChannel | 13 ++ TelepathyQt/CMakeLists.txt | 5 + TelepathyQt/base-channel-internal.h | 95 ++++++++++ TelepathyQt/base-channel.cpp | 342 ++++++++++++++++++++++++++++++++++++ TelepathyQt/base-channel.h | 110 ++++++++++++ TelepathyQt/service-types.h | 4 + 6 files changed, 569 insertions(+) commit 7d92fd9941335a26ac010d30a6d6803f94886044 Author: David Edmundson Date: Sat Jun 14 13:51:31 2014 +0200 Prepare for 0.9.5 development CMakeLists.txt | 2 +- NEWS | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) commit 4b0d7109f9251b65eaae61535fb646e73df73e1d Author: David Edmundson Date: Sat Jun 14 13:17:58 2014 +0200 Prepare release 0.9.4 CMakeLists.txt | 4 ++-- NEWS | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) commit 0191a6ddf0c094d9ae61b9ee48f1b282e13a9ef2 Author: Uwe L. Korn Date: Wed Feb 26 18:40:43 2014 +0000 Add 5 to pkg-config package names for Qt5 CMakeLists.txt | 5 +++++ TelepathyQt/TelepathyQt-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQt.pc.in | 2 +- TelepathyQt/TelepathyQtService.pc.in | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) commit ff169cde751d0bb0309109514dd10b9eff7de4e3 Author: Uwe L. Korn Date: Fri Mar 28 10:28:16 2014 +0000 Add Q_UNUSED as Q_ASSERT is a no-op in release mode Reviewed-by: David Edmundson TelepathyQt/connection-manager.cpp | 1 + examples/file-transfer/file-sender.cpp | 2 ++ 2 files changed, 3 insertions(+) commit 7feb7ee8d2eb1986b5a1314bb064b39a79718c68 Author: Uwe Korn Date: Fri Mar 14 16:56:36 2014 +0100 Allow compilation when only qmake-qt4 is in the path If Qt5 is found via cmake we do not need to find the qmake executable. This fixes builds when only qmake4 is available in the path. Reviewed-by: David Edmundson cmake/modules/FindQt.cmake | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) commit dca59397c00d27f3de0da4269fe53d4dda5520cb Author: Uwe Korn Date: Fri Mar 14 16:55:26 2014 +0100 Simplify FindQt5.cmake Make further use of Qt 5's cmake integration Reviewed-by: David Edmundson cmake/modules/FindQt5.cmake | 53 ++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 22 deletions(-) commit 938509e23a3a02609d96dd82abdcb5a51d104b57 Author: Dario Freddi Date: Sun Feb 2 15:40:38 2014 +0100 Fix moc command for Qt5.2 The check was already there, but since Qt5 CMake files are being shipped with Qt5 itself, the check was meaningless as the only thing which matters is Qt's version, and not CMake's one. Reviewed-by: David Edmundson cmake/modules/FindQt.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 7dea729f7c164eeed3b672a24d096cbe1737d709 Merge: 46029e9 9d349d4 Author: Dario Freddi Date: Sun Feb 2 15:22:57 2014 +0100 Merge branch 'spec_updates' Reviewed-by: Dario Freddi commit 9d349d4d0a56bbd5fe0799193448a53c6247d14a Author: David Edmundson Date: Sun Jan 19 23:12:52 2014 +0100 Fix ChannelDispatcher.Messages test tests/dbus/contact-messenger.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5afa270e4eed0f6401509809331db7e8a13653ca Author: Leon Handreke Date: Sat Jan 18 18:32:40 2014 +0100 Add {Room,Subject,RoomConfig} interfaces to generation TelepathyQt/CMakeLists.txt | 3 +++ TelepathyQt/ChannelInterfaceRoomConfigInterface | 13 +++++++++++++ TelepathyQt/ChannelInterfaceRoomInterface | 13 +++++++++++++ TelepathyQt/ChannelInterfaceSubjectInterface | 13 +++++++++++++ TelepathyQt/channel.xml | 3 +++ TelepathyQt/svc-channel.xml | 3 +++ 6 files changed, 48 insertions(+) commit bb2c4e68af128fe76d5599b46b33c81d7841608e Author: David Edmundson Date: Sun Jan 19 20:50:11 2014 +0100 Update test library to match spec changes tests/lib/glib/future/extensions/misc.xml | 1 - 1 file changed, 1 deletion(-) commit 6823281506d8e063e43e6ecd0ae071b48758f90c Author: David Edmundson Date: Sun Jan 19 20:19:42 2014 +0100 Update changes from Channel_Dispatcher_Future TelepathyQt/channel-dispatcher.xml | 14 ++++++++++++++ TelepathyQt/contact-messenger.cpp | 7 +++---- TelepathyQt/future-channel-dispatcher.xml | 12 ------------ tools/manager-file.py | 1 + 4 files changed, 18 insertions(+), 16 deletions(-) commit 7eb108bc2d06ce9f26585bfd8b342d792f674cab Author: David Edmundson Date: Sun Jan 19 19:31:00 2014 +0100 Update to spec 0.27.3 spec/Account_Interface_Addressing.xml | 8 + spec/Account_Interface_Minimum_Presence.xml | 108 ------ spec/Call_Content_Codec_Offer.xml | 87 ----- spec/Call_Content_Interface_Mute.xml | 85 ----- spec/Channel.xml | 2 +- spec/Channel_Dispatcher_Future.xml | 377 --------------------- spec/Channel_Dispatcher_Interface_Messages.xml | 49 --- spec/Channel_Dispatcher_Interface_Messages1.xml | 175 ++++++++++ spec/Channel_Interface_Room_Config.xml | 2 +- spec/Channel_Interface_Tube.xml | 3 +- spec/Channel_Request_Future.xml | 98 ------ spec/Channel_Type_Call.xml | 15 +- spec/Channel_Type_DBus_Tube.xml | 7 +- spec/Channel_Type_File_Transfer.xml | 29 ++ spec/Channel_Type_Room_List.xml | 3 +- spec/Channel_Type_Stream_Tube.xml | 7 +- spec/Connection.xml | 42 ++- spec/Connection_Future.xml | 110 ------ spec/Connection_Interface_Contact_Capabilities.xml | 2 +- spec/Connection_Interface_Contact_List.xml | 2 +- spec/Connection_Interface_Contacts.xml | 58 ++++ spec/Connection_Interface_IRC_Command1.xml | 55 +++ spec/Connection_Interface_Renaming.xml | 4 +- spec/Connection_Interface_Sidecars1.xml | 110 ++++++ spec/Connection_Manager.xml | 3 +- spec/Protocol_Interface_Presence.xml | 3 +- spec/all.xml | 26 +- spec/errors.xml | 8 +- 28 files changed, 530 insertions(+), 948 deletions(-) commit 46029e9f26c78f95c9846097d296ddaec9826c44 Author: Martin Kampas Date: Tue Nov 12 11:54:00 2013 +0100 Fix HandledChannelNotifier for Qt5 The QObject::connectNotify() signature changed in Qt5. Detected by TestAccountChannelDispatcher::testCreateAndHandleChannelHandledAgain() which hangs forever because HandledChannelNotifier::handledAgain() gets never emitted. Reviewed-by: David Edmundson TelepathyQt/handled-channel-notifier.cpp | 9 +++++++++ TelepathyQt/handled-channel-notifier.h | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) commit d6435eb0c335bab46d33d727560e2732bcd203aa Author: Martin Kampas Date: Tue Nov 12 08:09:22 2013 +0100 Fix TestDBusProxyFactory::testDropRefs (Hopefully) prevent getting the new proxy instantiated on the very same address. Reviewed-by: David Edmundson tests/dbus/dbus-proxy-factory.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 1adfbc3329dfa604165d9fd197abb14000e1ac1f Author: Martin Kampas Date: Mon Nov 11 15:39:00 2013 +0100 Fix TestAccountSet::testFilters The ordering of mAM->allAccounts() has changed. Fixed so it works irrespective of the order. Reviewed-by: David Edmundson tests/dbus/account-set.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 15ddf0963b75f09b1ed6558dd0472058e7eb9914 Author: Martin Kampas Date: Fri Nov 8 13:54:19 2013 +0100 Fix TestKeyFile: sort list before comparing Reviewed-by: David Edmundson tests/key-file.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit de35be668db0e31b3fe1114e0885b6506ed30eba Author: John Brooks Date: Wed Jan 22 13:22:48 2014 -0700 Fix tests build for Qt5 release Reviewed-by: David Edmundson tests/dbus/account-channel-dispatcher.cpp | 2 +- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/chan-conference.cpp | 10 +++++----- tests/dbus/chan-group.cpp | 2 +- tests/dbus/client-factories.cpp | 4 ++-- tests/dbus/client.cpp | 4 ++-- tests/dbus/contact-messenger.cpp | 2 +- tests/dbus/contact-search-chan.cpp | 4 ++-- tests/dbus/properties.cpp | 2 +- tests/dbus/stream-tube-handlers.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- tests/dbus/text-chan.cpp | 4 ++-- 12 files changed, 20 insertions(+), 20 deletions(-) commit a074b02f8c1c6ee2fb8f15091812f0f8d9370cb5 Author: David Edmundson Date: Wed Jan 22 13:03:16 2014 -0700 Fix build for Qt5 release Reviewed-by: John Brooks TelepathyQt/Farstream/channel.cpp | 6 ++-- TelepathyQt/account.cpp | 4 +-- TelepathyQt/utils.cpp | 2 +- cmake/modules/FindQt5.cmake | 68 +++++++++------------------------------ 4 files changed, 21 insertions(+), 59 deletions(-) commit 05fe3f4980bbc6b016e25dcf07e44afe29e377c0 Author: David Edmundson Date: Sun Sep 29 22:19:27 2013 +0000 Fix compilation on new versions of cmake Recent cmake has changed the argument count to qt4_create_moc_command, we need to adjust accordingly Reviewed-by: Dario Freddi cmake/modules/FindQt.cmake | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 0f20582acc1dd952cde1bff9a1a2c093c1da9f2a Author: Dario Freddi Date: Mon Jul 15 01:24:44 2013 +0200 Kill the last bits of Farsight CMakeLists.txt | 25 ++-------------- TelepathyQt/main.dox | 4 +-- cmake/modules/FindTelepathyFarsight.cmake | 49 ------------------------------- cmake/modules/TelepathyDist.cmake | 20 ++++++------- 4 files changed, 15 insertions(+), 83 deletions(-) commit 76722e2a0d89716412a5c3eb5281553eaeff1e94 Author: Dario Freddi Date: Mon Jul 15 00:59:04 2013 +0200 Update NEWS NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d007ff722c77618cbbfbdbc5c495e5b263e14f80 Author: David Edmundson Date: Wed Apr 3 23:24:34 2013 +0200 account: add method Account::createDbusTubeRoom fixes fd.o #63089 Reviewed-by: Dario Freddi TelepathyQt/account.cpp | 27 +++++++++++++++++++++++++++ TelepathyQt/account.h | 6 ++++++ 2 files changed, 33 insertions(+) commit cc2e296d8e7fe0500c48574052b00778bb3840f4 Author: Dario Freddi Date: Mon Jul 15 00:26:09 2013 +0200 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 375691fb7b1d53943c0ec4f0b15dc07f0db702c9 Author: Dario Freddi Date: Mon Jul 15 00:24:25 2013 +0200 Removing old Farsight files. Actually, the directory was already deprecated and never triggered. This change simply cleans up the tree. Signed-off-by: Dario Freddi Reviewed-by: David Edmundson TelepathyQt/CMakeLists.txt | 1 - TelepathyQt/Farsight/CMakeLists.txt | 85 ------------------- TelepathyQt/Farsight/Channel | 13 --- .../Farsight/TelepathyQtFarsight-uninstalled.pc.in | 11 --- TelepathyQt/Farsight/TelepathyQtFarsight.pc.in | 11 --- .../Farsight/TelepathyQtFarsightConfig.cmake.in | 24 ------ TelepathyQt/Farsight/channel.cpp | 98 ---------------------- TelepathyQt/Farsight/channel.h | 43 ---------- TelepathyQt/Farsight/global.h | 58 ------------- 9 files changed, 344 deletions(-) commit aa8c33371e1d16267d302ddbb0f52abad7686472 Author: David Edmundson Date: Mon Jun 17 21:21:11 2013 +0100 tests: sync simple-channel-dispatch-operation.c from telepahty-glib This fixed a memory leak introduced in the last commit Reviewed-by: Martin Klapetek tests/lib/glib/simple-channel-dispatch-operation.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 3de4dea2ca0338f7fa89b8c8f4f46c9547c89e3c Author: David Edmundson Date: Fri Feb 15 22:41:25 2013 +0000 Remove references to deprecated tp_channel_borrow_immutable_properties and replace with tp_channel_dup_immutable_properties this allows tests to compile against newer versions of Telepathy glib Reviewed-by: Martin Klapetek tests/lib/glib/simple-channel-dispatch-operation.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7553d37da8c79776890285c70ff98b5602f71d53 Author: George Kiagiadakis Date: Mon Mar 25 15:22:46 2013 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 819e00afb6814b58670edc15ff21ccf43e45c958 Author: Matthias Gehre Date: Mon Mar 25 15:21:20 2013 +0200 Fix stack overflow in SimpleObserver::create Reviewed-by: George Kiagiadakis TelepathyQt/simple-observer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b4a8be81c4e7cacfe31356a7d89e0af97d7d506f Author: George Kiagiadakis Date: Thu Feb 7 14:49:45 2013 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 8da9f7069929893bcee64dab22101134752fe618 Author: George Kiagiadakis Date: Thu Feb 7 14:37:49 2013 +0200 Fix storing avatars, so that they are not stored millions of times each The original problem lies in the fact that QFile::rename() does not overwrite existing files. Therefore it fails and the temporary file stays on the filesystem together with the already existing avatar file. Checking if the file exists before renaming solves this partially, but the problem is that this operation is not atomic. There can be many processes using tp-qt, fetching avatars at the same time from the server, and in this case we can still have a problem there. The final solution is to ignore a new avatar that has the same token as an avatar that is already on the filesystem. According to the spec, different avatars have different tokens, so if an avatar changes, the token changes as well. https://bugs.freedesktop.org/show_bug.cgi?id=47647 Reviewed-by: David Edmundson TelepathyQt/contact-manager.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) commit 3f82f8b0c1e87718cf390f9388f177e5b0ce9f39 Author: Daniele E. Domenichelli Date: Fri Feb 1 19:10:28 2013 +0100 Fix warning in DBusTubeChannel Reviewed-by: Dario Freddi TelepathyQt/dbus-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 12c60ba7b7ade3a5cbf43d915a5d6813619a55c3 Author: Dario Freddi Date: Mon Aug 27 19:39:26 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 145e58636b130502adf0bd0ad5d5551aae2e2932 Merge: ae72553 4f56270 Author: Dario Freddi Date: Mon Aug 27 19:37:49 2012 +0200 Merge branch 'tp-glib-0.18' Reviewed-by: George Kiagiadakis commit 4f562709551fdfad6587a14332466937061b8beb Author: Dario Freddi Date: Mon Aug 27 19:28:49 2012 +0200 cmake: Require tp-glib 0.18 CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6c05efa268c80947060929dc8fe6f2d4cd7d5a15 Author: Dario Freddi Date: Mon Aug 27 19:28:24 2012 +0200 glib: Disable tp_tests_connection_run_until_contact_by_id to avoid requiring 0.19.x tests/lib/glib/util.c | 4 ++++ 1 file changed, 4 insertions(+) commit ae725534b1c8df44d2a0005764618f79475c7615 Author: Dario Freddi Date: Mon Aug 27 19:20:33 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 2414ecb2482a80a805d824ddf0258cb120fd9d9b Author: Ken VanDine Date: Mon Aug 27 19:00:42 2012 +0200 Link telepathy-qt4-farsight against gobject Reviewed-by: Dario Freddi TelepathyQt/Farstream/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) commit d309812522dd3f2988d99d8f66570f0aa053bc83 Author: Dario Freddi Date: Mon Aug 27 18:55:44 2012 +0200 farsight: Fix linking Thanks to shadeslayer for the patch Reviewed-by: Dario Freddi TelepathyQt/Farsight/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) commit 1fbca358bfb4627697429d0429f2d0fb8073b7bb Author: George Kiagiadakis Date: Fri Jul 13 21:40:33 2012 +0300 Start 0.9.4 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 939a14b3878eaed64cb0d757de3cea5b67d5ddec Author: Dario Freddi Date: Fri Jul 13 19:40:23 2012 +0200 Prepare release 0.9.3 CMakeLists.txt | 4 ++-- NEWS | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) commit 58c3df98442b68d141b2ba575ac28cdbdb26392c Author: Dario Freddi Date: Fri Jul 13 19:36:55 2012 +0200 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 3969c8de50336d37bc9996cdc5d0f654cc92bac2 Merge: 3ed6682 90295f0 Author: Dario Freddi Date: Fri Jul 13 19:33:11 2012 +0200 Merge branch 'deprecate-stream' Reviewed-by: George Kiagiadakis Reviewed-by: Dario Freddi commit 90295f0e806f189b6eeb0ba5965191b2f97095ed Author: George Kiagiadakis Date: Fri Jul 13 19:19:21 2012 +0300 AccountManager: Add audioCallAccounts() / videoCallAccounts() methods TelepathyQt/account-manager.cpp | 48 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt/account-manager.h | 3 +++ 2 files changed, 51 insertions(+) commit 10cd2eec3c4d6cd317adaee924d762e80d77772c Author: George Kiagiadakis Date: Fri Jul 13 19:02:51 2012 +0300 SimpleCallObserver: Handle Call1 channels and deprecate usage of the StreamedMedia methods TelepathyQt/simple-call-observer.cpp | 111 ++++++++++++++++++++++++++++------- TelepathyQt/simple-call-observer.h | 7 ++- 2 files changed, 96 insertions(+), 22 deletions(-) commit 1083491c611196246bfc0d4b203be95c6bd0b9d7 Author: George Kiagiadakis Date: Fri Jul 13 18:43:11 2012 +0300 ChannelClassSpec: Add mediaCall() method. This can be useful for observers that wish to observe both audio and video calls. Using this method, they won't have to have two channel filters, one for audio and one for video. TelepathyQt/channel-class-spec.cpp | 15 +++++++++++++++ TelepathyQt/channel-class-spec.h | 7 +++---- 2 files changed, 18 insertions(+), 4 deletions(-) commit 3dd7cb3921f0a4a1a8724541887e3c9ef48a2b1e Author: Dario Freddi Date: Fri Jul 13 17:43:40 2012 +0200 Farsight: Deprecate Farsight TelepathyQt/Farsight/channel.h | 2 +- TelepathyQt/Farsight/global.h | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) commit 28128b76904503b3a308372439b177ecd58c9b62 Author: Dario Freddi Date: Fri Jul 13 17:41:56 2012 +0200 Deprecate in one single run every occurrence of StreamedMediaChannel TelepathyQt/account-manager.h | 8 +++---- TelepathyQt/account.h | 32 ++++++++++++++-------------- TelepathyQt/capabilities-base.h | 10 ++++----- TelepathyQt/channel-class-spec.h | 28 ++++++++++++------------ TelepathyQt/channel-factory.h | 10 ++++----- TelepathyQt/connection-capabilities.h | 4 ++-- TelepathyQt/requestable-channel-class-spec.h | 12 +++++------ TelepathyQt/streamed-media-channel.h | 6 +++--- TelepathyQt/types.h | 4 ++-- 9 files changed, 57 insertions(+), 57 deletions(-) commit f55876feb630d3fc3f82f3fee0127544c696b8f9 Author: Dario Freddi Date: Fri Jul 13 17:41:18 2012 +0200 global.h: Fix the TP_QT_DEPRECATED macro to have no effect when building the library. Add a new TP_QT_EXPORT_DEPRECATED macro to cope with moc. TelepathyQt/global.h | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) commit 3ed6682d07402e0ff2a8e9bbb0c38949b4b3cf75 Author: George Kiagiadakis Date: Fri Jul 13 18:22:21 2012 +0300 Update NEWS NEWS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0418dd11219f3802e08980761a4bd6a1ca2e317b Author: George Kiagiadakis Date: Fri Jul 13 18:11:24 2012 +0300 Farsight/Farstream: Use tp_simple_client_factory_ensure_connection() instead of the deprecated tp_connection_new() Reviewed-by: Dario Freddi TelepathyQt/Farsight/channel.cpp | 17 +++++++++++++---- TelepathyQt/Farstream/channel.cpp | 20 ++++++++++++++++---- 2 files changed, 29 insertions(+), 8 deletions(-) commit 492821581f2d9feae9b5fd5d71b5433630cbc7fb Author: Dario Freddi Date: Fri Jul 13 16:27:50 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 23ada7c2c8ca11afa94c543b627874a65f00a6ae Author: Dario Freddi Date: Fri Jul 13 16:18:05 2012 +0200 tests: Sync util.* from tp-glib to avoid deprecation warnings Reviewed-by: George Kiagiadakis tests/lib/glib/util.c | 288 +++++++++++++++++++++++++++++++++++++++++++++++--- tests/lib/glib/util.h | 35 +++++- 2 files changed, 305 insertions(+), 18 deletions(-) commit e25458dbb1a87aa07e075960e28b744e4ed19d8b Author: Dario Freddi Date: Fri Jul 13 16:25:53 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit ae352a1eb7f27396b902fc1fa8722aadeb0a52fa Author: Dario Freddi Date: Fri Jul 13 16:23:50 2012 +0200 tests: Remove occurrences of tp_handle_unref Reviewed-by: George Kiagiadakis tests/dbus/dbus-tube-chan.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 037822c82a9495b237bfc805f06bcaddbdf02b49 Author: George Kiagiadakis Date: Thu Jul 12 21:33:14 2012 +0300 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 2e797d4bf9ecc27dcac3387c5d5e1229e7cb6eed Author: George Kiagiadakis Date: Thu Jul 12 21:29:55 2012 +0300 tp-glib-tests: link to the dbus-1 library, as it is used in the dbus tubes test CM Reviewed-by: Dario Freddi tests/lib/glib/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) commit 7cecbe6a7591e9c29b6ac3ead8d4d78512692a05 Author: Dario Freddi Date: Mon Jul 9 20:58:05 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 7852ffed739adb21b73c20461b99406bbfb6f949 Merge: efab4a9 75767cb Author: Dario Freddi Date: Mon Jul 9 20:57:02 2012 +0200 Merge branch 'fix-cmake-again' George Kiagiadakis commit 75767cb22a8b86f33b40bf4e239cf7d7b5368e56 Author: Dario Freddi Date: Mon Jul 9 20:50:36 2012 +0200 cmake: Use options correctly cmake/modules/CompilerWarnings.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit efab4a9e16cb6282c8fbcf6e99c332a7ddc0b979 Author: Dario Freddi Date: Thu Jul 5 15:05:28 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 7fe1498cf9806207822de870ee858dd8d790aebf Merge: 2a16fb8 2139107 Author: Dario Freddi Date: Thu Jul 5 14:42:40 2012 +0200 Merge branch 'client-types' Reviewed-by: Dario Freddi commit 213910763aa2d3d6b4906b61ed2cf9caa3635f41 Author: George Kiagiadakis Date: Thu Jul 5 14:41:11 2012 +0300 Contact: Complete client-types documentation TelepathyQt/contact.cpp | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) commit f4e6d194141ef9f8fb53d6e27a008010c8cd6752 Author: Dario Freddi Date: Thu Jul 5 13:22:16 2012 +0200 Contact: Add documentation for clientTypes TelepathyQt/contact.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 9a2fff3aa2375ab36a539c623f268e9789131ea0 Author: Dario Freddi Date: Thu Jul 5 12:55:56 2012 +0200 Contact: check for enabled features in methods related to ClientTypes TelepathyQt/contact.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit fe864deae2f4892953bad03cf12c7e0ee40dbd20 Author: George Kiagiadakis Date: Thu Jul 5 14:05:05 2012 +0300 tests: add test for retrieving client types using contact attributes tests/dbus/contacts-client-types.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit 30df9cbb5c0c03492c47cf03b0192dd31e6ba716 Author: George Kiagiadakis Date: Thu Jul 5 13:29:31 2012 +0300 tests: add test for Contact Conn.I.ClientTypes support tests/dbus/CMakeLists.txt | 1 + tests/dbus/contacts-client-types.cpp | 170 +++++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+) commit 2613690ce569ed89a51a9791a4630ac4d74cdb30 Author: George Kiagiadakis Date: Thu Jul 5 13:29:02 2012 +0300 contacts-conn CM: Implement proper Conn.I.ClientTypes support tests/lib/glib/contacts-conn.c | 88 ++++++++++++++++++++++++++++++++++++------ tests/lib/glib/contacts-conn.h | 5 ++- 2 files changed, 80 insertions(+), 13 deletions(-) commit 0d9bd907813a913c380cbd9d478375d96ffffbbc Author: George Kiagiadakis Date: Wed Jul 4 18:48:19 2012 +0300 contacts-conn CM: sync client-types interface support from tp-glib tests/lib/glib/contacts-conn.c | 23 +++++++++++++++++++++++ tests/lib/glib/contacts-conn.h | 2 ++ 2 files changed, 25 insertions(+) commit c8dc3548e0eee04517c0cef7eb4cfe38bd5bcf07 Author: George Kiagiadakis Date: Wed Jul 4 18:33:10 2012 +0300 Contact: expose information from Conn.I.ClientTypes TelepathyQt/contact-manager.cpp | 23 +++++++++++++++- TelepathyQt/contact-manager.h | 1 + TelepathyQt/contact.cpp | 58 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt/contact.h | 8 ++++++ 4 files changed, 89 insertions(+), 1 deletion(-) commit 2a16fb80a9ab69739e706880ef6f1feb89bd17bb Author: Dario Freddi Date: Thu Jul 5 12:27:50 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 8de6c2d54d7f9d64ecea386d62c401f065fb0d86 Merge: 52f6832 3ae8113 Author: Dario Freddi Date: Thu Jul 5 12:27:06 2012 +0200 Merge branch 'tp-glib-0.19' Reviewed-by: Dario Freddi commit 3ae81137bad8882fa4e83a2d9c8b87ffb8a68d68 Author: George Kiagiadakis Date: Wed Jul 4 17:27:22 2012 +0300 dbus-tube-test CM: remove stuff that are deprecated in tp-glib 0.19 tests/lib/glib/dbus-tube-chan.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) commit 52f6832d0a7033aac10f0bbcfb099035fb0a94e9 Author: George Kiagiadakis Date: Wed Jul 4 15:18:07 2012 +0300 Start 0.9.3 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 9a177bfe33d9e549be51d66bbf2f77664e03eaf7 Author: Dario Freddi Date: Wed Jul 4 13:38:35 2012 +0200 While wondering how I could have gone wrong in the first release, obviously something happened. Fix release date. NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit df9a9e01949b0b10f32633131ab372718cd5f3be Author: Dario Freddi Date: Wed Jul 4 12:29:05 2012 +0200 Prepare release 0.9.2 CMakeLists.txt | 4 ++-- NEWS | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) commit 88a15078ad0febb29afa180d062a6ef59d5aa333 Author: Dario Freddi Date: Wed Jul 4 12:53:59 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 8e630f526bf9c2d13780509d436ff34489f9bf64 Author: Dario Freddi Date: Wed Jul 4 12:53:12 2012 +0200 cmake: Fix PkgConfig handling cmake/modules/FindDBus.cmake | 6 +++--- cmake/modules/FindDBusGLib.cmake | 6 +++--- cmake/modules/FindTelepathyGlib.cmake | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) commit 82b68e7d6827d067906b21e1a151ec716a343c89 Merge: e3f3bbe 7e80451 Author: Dario Freddi Date: Wed Jul 4 12:23:30 2012 +0200 Merge branch 'trivia' Reviewed-by: Dario Freddi commit 7e80451869146725f68e39e8be0bdd5bed6e8dd8 Author: George Kiagiadakis Date: Tue Jul 3 12:23:21 2012 +0300 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit 4dfce2b1ccca35a93127b8d1cf931c68dd4c6834 Author: George Kiagiadakis Date: Tue Jul 3 12:19:58 2012 +0300 cmake: pass -fvisibility-inlines-hidden to the compiler if it's supported This flag allows most inline functions to be hidden from the exported symbol table to avoid symbol table pollution. cmake/modules/TelepathyDefaults.cmake | 5 +++++ 1 file changed, 5 insertions(+) commit e3f3bbe052bc7923f32fac293cc8dc2900aea8d4 Author: Dario Freddi Date: Wed Jul 4 00:01:49 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 0823b3097377f3675ac500b2646f6b7c5c4187b0 Merge: ab332ee a63f94b Author: Dario Freddi Date: Tue Jul 3 23:58:14 2012 +0200 Merge branch 'dbus-tubes' Reviewed-by: George Kiagiadakis Reviewed-by: Andre Moreira Magalhaes commit a63f94b88c1d89b7aacf7b322e05f42aa592ccd0 Author: Dario Freddi Date: Tue Jul 3 23:57:07 2012 +0200 dbus-tubes: Minor nitpicking on style and docs TelepathyQt/account.cpp | 10 +++++----- TelepathyQt/dbus-tube-channel.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) commit 4208b2432ff4619e42299188801e2bdaee153547 Author: Dario Freddi Date: Tue Jul 3 23:38:48 2012 +0200 dbus-tubes: Use dbus* instead of dBus* TelepathyQt/account.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit d4aa2998ec50f76bfcd25b38b6daec428c73a842 Author: George Kiagiadakis Date: Mon Jul 2 19:11:43 2012 +0300 dbus-tubes: update/fix copyright headers TelepathyQt/dbus-tube-channel.cpp | 2 +- TelepathyQt/dbus-tube-channel.h | 5 +++-- TelepathyQt/incoming-dbus-tube-channel.cpp | 2 +- TelepathyQt/incoming-dbus-tube-channel.h | 5 +++-- TelepathyQt/outgoing-dbus-tube-channel.cpp | 2 +- TelepathyQt/outgoing-dbus-tube-channel.h | 5 +++-- TelepathyQt/pending-dbus-tube-connection.cpp | 2 +- TelepathyQt/pending-dbus-tube-connection.h | 5 +++-- 8 files changed, 16 insertions(+), 12 deletions(-) commit 7551b4f5157954fd6ec1c42d8d99d7a3f397cefa Author: George Kiagiadakis Date: Mon Jul 2 18:44:41 2012 +0300 dbus-tubes: remove the unused pending-dbus-tube.* files TelepathyQt/pending-dbus-tube.cpp | 200 -------------------------------------- TelepathyQt/pending-dbus-tube.h | 71 -------------- 2 files changed, 271 deletions(-) commit 2cc843d26b61f4a6d227c481e244a5a835859fd5 Author: George Kiagiadakis Date: Mon Jul 2 18:40:29 2012 +0300 dbus-tubes: Remove ranom unused/wrong stuff TelepathyQt/dbus-tube-channel.h | 2 -- TelepathyQt/incoming-dbus-tube-channel.cpp | 3 --- TelepathyQt/outgoing-dbus-tube-channel.h | 2 +- 3 files changed, 1 insertion(+), 6 deletions(-) commit 12867e6834d5945d9c02293388c679ca5416d83f Author: George Kiagiadakis Date: Mon Jul 2 18:40:08 2012 +0300 dbus-tubes: Make DBusTubeChannel::setAddress() private TelepathyQt/dbus-tube-channel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5b4bf9e16c29e998930b0b3d870c797b16f7a92a Author: George Kiagiadakis Date: Mon Jul 2 18:39:30 2012 +0300 dbus-tubes: Remove useless destructors from Private classes TelepathyQt/dbus-tube-channel.cpp | 5 ----- TelepathyQt/incoming-dbus-tube-channel.cpp | 5 ----- TelepathyQt/outgoing-dbus-tube-channel.cpp | 5 ----- TelepathyQt/pending-dbus-tube-connection.cpp | 5 ----- TelepathyQt/pending-dbus-tube.cpp | 5 ----- 5 files changed, 25 deletions(-) commit 0f4984dda62c3731fb9eb12e29200e082c8c0469 Author: George Kiagiadakis Date: Mon Jul 2 18:31:53 2012 +0300 dbus-tubes: document DBusTubeChannel::busNameRemoved() TelepathyQt/dbus-tube-channel.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 497a4e7b463bf68664bc49ad9ae8b79280ace8f0 Author: George Kiagiadakis Date: Mon Jul 2 18:31:05 2012 +0300 dbus-tubes: Move signal connection in Private TelepathyQt/dbus-tube-channel.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 6eafc3bf22b717dc61866d7310c666649bbb0986 Author: Daniele E. Domenichelli Date: Wed Apr 4 20:36:22 2012 +0200 dbus-tubes: Fix warning and comment TelepathyQt/incoming-dbus-tube-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 317c86af80dbe1184afd4e22a029c254c4d4b36d Author: Daniele E. Domenichelli Date: Sat Mar 31 13:50:50 2012 +0200 dbus-tubes: Fix documentation TelepathyQt/dbus-tube-channel.cpp | 10 +++------- TelepathyQt/pending-dbus-tube-connection.cpp | 2 +- TelepathyQt/pending-dbus-tube.cpp | 2 +- TelepathyQt/pending-dbus-tube.h | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) commit 1524490b8cd7f121a8b4275bcbfef8866f5d6f6c Author: Dario Freddi Date: Sat Nov 12 00:29:42 2011 +0100 dbus-tubes: Update and improve the API documentation TelepathyQt/dbus-tube-channel.cpp | 85 ++++++++++++---------- TelepathyQt/incoming-dbus-tube-channel.cpp | 105 ++++++++------------------- TelepathyQt/outgoing-dbus-tube-channel.cpp | 79 ++++++++------------ TelepathyQt/pending-dbus-tube-connection.cpp | 31 ++++++-- 4 files changed, 132 insertions(+), 168 deletions(-) commit 6ad490f2021335867c4129d66f283ee9a5b80872 Author: Dario Freddi Date: Fri Nov 11 23:36:31 2011 +0100 dbus-tubes: Use more sensible naming for autotest's variables tests/dbus/dbus-tube-chan.cpp | 56 +++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) commit c3977453476780e60a3c9809b72f2228ed7cd3c7 Author: Dario Freddi Date: Fri Nov 11 23:32:34 2011 +0100 dbus-tubes: Invert the mapping Contact->Bus Name This makes the API more consistent with Stream tubes. Also, split the busNamesChanged signal into two separate signals, giving out more details. TelepathyQt/dbus-tube-channel.cpp | 43 +++++++++-------- TelepathyQt/dbus-tube-channel.h | 5 +- tests/dbus/dbus-tube-chan.cpp | 97 ++++++++++++++++++++++----------------- 3 files changed, 80 insertions(+), 65 deletions(-) commit c3fb6ef81c21c255764ef1acb639c1779476d634 Author: Dario Freddi Date: Fri Nov 11 22:50:37 2011 +0100 dbus-tubes: Rework credentials handling, inverting the logic and adopting credentials by default. In case credentials are not available, the tube will fall back to localhost. The D-Bus wire protocol always has one '\0' byte at the very beginning of the stream, which is not part of the authentication handshake (text-based SASL) and also not part of any of the subsequent D-Bus messages (binary). libdbus, GDBus etc. assume that this byte will always be present. If credentials-passing via SCM_CREDS (FreeBSD) or SCM_CREDENTIALS (Linux) is supported, the credentials accompany that '\0' byte. If the platform can't pass credentials (Windows) or can pass/get credentials without sending a byte (Linux and OpenBSD via SO_PEERCRED, some other platforms (Solaris?) via getpeereid or getpeerucred), it must still send the '\0' byte. On OSs where you can choose whether to send credentials out-of-band (LOCAL_CREDS), D-Bus expects you to say "yes" to LOCAL_CREDS too. For this reason why now default to credentials, and just warn if they are unsupported. With the new API, people really needing stringent security can either assert (forgoing tubes support these platforms) or otherwise check the capability accessor (supportsRestrictingToCurrentUser) before trying to accept / offer the tube. A check in the PendingDBusTube operation is also available. Thanks to Simon McVittie and Olli Salli for their help in analyzing and solving the issue. TelepathyQt/dbus-tube-channel.cpp | 4 +-- TelepathyQt/dbus-tube-channel.h | 2 +- TelepathyQt/incoming-dbus-tube-channel.cpp | 38 ++++++-------------- TelepathyQt/incoming-dbus-tube-channel.h | 2 +- TelepathyQt/outgoing-dbus-tube-channel.cpp | 23 ++++++------ TelepathyQt/outgoing-dbus-tube-channel.h | 2 +- TelepathyQt/pending-dbus-tube-connection.cpp | 51 ++++----------------------- TelepathyQt/pending-dbus-tube-connection.h | 8 ++--- tests/dbus/dbus-tube-chan.cpp | 52 ++++++++++++---------------- 9 files changed, 57 insertions(+), 125 deletions(-) commit 61788f9d4b6d937d2f15ae781f61f8e84334cabb Author: Dario Freddi Date: Fri Nov 11 21:36:12 2011 +0100 dbus-tubes: Fix leaks in dbus tubes service tests/lib/glib/dbus-tube-chan.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) commit 2a994c6eedf10eae3e7320e276dfdd268de87b3a Author: Dario Freddi Date: Fri Nov 11 21:35:49 2011 +0100 dbus-tubes: Fix leaks in dbus test tests/dbus/dbus-tube-chan.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 5bf3b0637dea687bf282619d808d33e2347f4815 Author: Dario Freddi Date: Fri Nov 11 00:40:20 2011 +0100 dbus-tubes: Expand testAcceptTwice into a full fledged corner cases test tests/dbus/dbus-tube-chan.cpp | 81 +++++++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 30 deletions(-) commit 862e243250a25518191f205abb0328e09d4e9316 Author: Dario Freddi Date: Fri Nov 11 00:32:57 2011 +0100 dbus-tubes: Test corner cases in offering tests/dbus/dbus-tube-chan.cpp | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) commit 3e873121045aeb3cc53eab3391d6aa0bbfc8b922 Author: Dario Freddi Date: Fri Nov 11 00:31:58 2011 +0100 dbus-tubes: Test the late activation of BusNamesMonitoring tests/dbus/dbus-tube-chan.cpp | 65 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) commit 5e32aa281dbe52f84b4a763ec664d74b599aa207 Author: Dario Freddi Date: Fri Nov 11 00:29:28 2011 +0100 dbus-tubes: Fix the test service by returning the correct DBUS_NAMES property tests/lib/glib/dbus-tube-chan.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 10d69cacd948b543e5b1376dcedf28a17ad2c811 Author: Dario Freddi Date: Fri Nov 11 00:28:26 2011 +0100 dbus-tubes: Check the address in the pending connection as well tests/dbus/dbus-tube-chan.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 901d48eeb6592890866721c984cec2ccce1f5197 Author: Dario Freddi Date: Thu Nov 10 23:58:09 2011 +0100 dbus-tubes: Don't emit the busNamesChanged signal if we're just handling property construction for a late-enabled feature TelepathyQt/dbus-tube-channel.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) commit 934026b59f1b3043bd2d4c1158d371c0c3a214d5 Author: Dario Freddi Date: Fri Nov 4 22:03:15 2011 +0100 dbus-tubes: This test does not require GIO in the end. Although, it does require Qt 4.8 due to its new DBus API. tests/dbus/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit d5a9a619c67f69d252ab188df8e4ab7ae841164e Author: Dario Freddi Date: Fri Nov 4 21:47:57 2011 +0100 dbus-tubes: Compare the expected handle/service combination when bus names change tests/dbus/dbus-tube-chan.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit a023b6309e2691a81829ea615924a7c3cdfecc63 Author: Dario Freddi Date: Fri Nov 4 21:44:41 2011 +0100 dbus-tubes: Clean up the test case and the test service tests/dbus/dbus-tube-chan.cpp | 62 +++++++---------------------------------- tests/lib/glib/dbus-tube-chan.c | 41 --------------------------- 2 files changed, 10 insertions(+), 93 deletions(-) commit 020fef3ad2c8144fd94ea1d76b6333b310576503 Author: Dario Freddi Date: Fri Nov 4 21:21:09 2011 +0100 dbus-tubes: Make all tests pass tests/dbus/dbus-tube-chan.cpp | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) commit c744a12074dd9793aabfd222f87d16375d7bef37 Author: Dario Freddi Date: Fri Nov 4 20:52:06 2011 +0100 dbus-tubes: Make offerSuccess pass tests/dbus/dbus-tube-chan.cpp | 86 ++++++++++++++++++----------------------- tests/lib/glib/dbus-tube-chan.c | 57 ++++++++++++++++++++++++--- tests/lib/glib/dbus-tube-chan.h | 9 +++++ 3 files changed, 99 insertions(+), 53 deletions(-) commit 97d1e301ad27be733d1b0f88a90426d2d1b08420 Author: Dario Freddi Date: Fri Nov 4 20:51:49 2011 +0100 dbus-tubes: Inject parameters in case the tube is offered TelepathyQt/outgoing-dbus-tube-channel.cpp | 2 +- TelepathyQt/pending-dbus-tube-connection.cpp | 31 ++++++++++++++++++++++++++++ TelepathyQt/pending-dbus-tube-connection.h | 3 +++ 3 files changed, 35 insertions(+), 1 deletion(-) commit 5d92fa653ca321f35b8b7d1aca942766e1fe7896 Author: Dario Freddi Date: Fri Nov 4 19:51:14 2011 +0100 dbus-tubes: As the logic was already implemented, just enable the corresponding function to make testAcceptSuccess pass tests/dbus/dbus-tube-chan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b6777083768ca450c66985b6a5447a24f0f5fee2 Author: Dario Freddi Date: Fri Nov 4 19:48:59 2011 +0100 dbus-tubes: Implement accept service-side, and have testAcceptSuccess working TelepathyQt/pending-dbus-tube-connection.cpp | 1 + tests/dbus/dbus-tube-chan.cpp | 22 +-- tests/lib/glib/CMakeLists.txt | 3 +- tests/lib/glib/dbus-tube-chan.c | 276 ++++++++++++++++++++++++++- 4 files changed, 271 insertions(+), 31 deletions(-) commit fa5734340248052e918638a5a4f17c381eb3ed3f Author: Dario Freddi Date: Thu Nov 3 22:49:09 2011 +0100 dbus-tubes: Add basic logic for accepting and offering a tube, implementing the full interface. testAcceptTwice now passes. tests/lib/glib/dbus-tube-chan.c | 118 ++++++++++++++++++++++++++++++++++++++-- tests/lib/glib/dbus-tube-chan.h | 4 ++ 2 files changed, 117 insertions(+), 5 deletions(-) commit 767c9c758e23115a79e8904851d836d1dc2ae503 Author: Dario Freddi Date: Thu Nov 3 22:02:55 2011 +0100 dbus-tubes: Add an initial version of the DBus Tubes autotest. It's mostly a copy-paste from the STube one, to allow testing similar features in a similar ways. At the moment, the test is not functional, but compiles and passes the first basic steps. tests/dbus/CMakeLists.txt | 1 + tests/dbus/dbus-tube-chan.cpp | 695 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 696 insertions(+) commit 0c8db3e3a3e6769ae6bb60df81522bf577d29892 Author: Dario Freddi Date: Thu Nov 3 22:02:29 2011 +0100 dbus-tubes: Make immutable properties writable in the test service tests/lib/glib/dbus-tube-chan.c | 75 ++++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 19 deletions(-) commit dc3af232e83effe29435176046f70089d0946751 Author: Dario Freddi Date: Thu Nov 3 22:01:58 2011 +0100 dbus-tubes: Rename FeatureDBusTube into FeatureCore TelepathyQt/dbus-tube-channel.cpp | 24 ++++++++++++------------ TelepathyQt/dbus-tube-channel.h | 2 +- TelepathyQt/incoming-dbus-tube-channel.cpp | 8 ++++---- TelepathyQt/outgoing-dbus-tube-channel.cpp | 6 +++--- 4 files changed, 20 insertions(+), 20 deletions(-) commit cbe223d583136d68edea17a7e420dbd991fdb9cc Author: Dario Freddi Date: Thu Nov 3 17:56:36 2011 +0100 dbus-tubes: Rename to PendingDBusTubeConnection TelepathyQt/CMakeLists.txt | 8 +- TelepathyQt/PendingDBusTube | 13 -- TelepathyQt/PendingDBusTubeConnection | 13 ++ TelepathyQt/dbus-tube-channel.h | 2 +- TelepathyQt/incoming-dbus-tube-channel.cpp | 20 +-- TelepathyQt/incoming-dbus-tube-channel.h | 4 +- TelepathyQt/outgoing-dbus-tube-channel.cpp | 16 +-- TelepathyQt/outgoing-dbus-tube-channel.h | 4 +- TelepathyQt/pending-dbus-tube-connection.cpp | 205 +++++++++++++++++++++++++++ TelepathyQt/pending-dbus-tube-connection.h | 71 ++++++++++ 10 files changed, 316 insertions(+), 40 deletions(-) commit 3ad1c46263cd4a0e11dbfcaf33c78c96bfe9e883 Author: Dario Freddi Date: Tue Nov 1 23:12:25 2011 +0100 dbus-tubes: Implement proper handling of SCM_CREDENTIALS TelepathyQt/incoming-dbus-tube-channel.cpp | 23 ++++++++++++++++-- TelepathyQt/outgoing-dbus-tube-channel.cpp | 3 ++- TelepathyQt/pending-dbus-tube.cpp | 39 +++++++++++++++++++++++++++++- TelepathyQt/pending-dbus-tube.h | 11 ++++++--- 4 files changed, 69 insertions(+), 7 deletions(-) commit 85fc52b4f74a788dd03230382be32a564d988084 Author: Dario Freddi Date: Tue Nov 1 23:10:47 2011 +0100 dbus-tubes: Add room specs for DBus tube channels TelepathyQt/channel-class-spec.cpp | 46 ++++++++++++++++++++++++++++++++++++ TelepathyQt/channel-class-spec.h | 4 ++++ TelepathyQt/channel-factory.cpp | 48 ++++++++++++++++++++++++++++++++++++++ TelepathyQt/channel-factory.h | 32 +++++++++++++++++++++++++ 4 files changed, 130 insertions(+) commit 271e1635c2f6182bad815325ca1f75dd17c2c1b4 Author: Dario Freddi Date: Tue Nov 1 20:59:42 2011 +0100 dbus-tubes: Add autotests library from tp-glib tests/lib/glib/CMakeLists.txt | 3 +- tests/lib/glib/dbus-tube-chan.c | 325 ++++++++++++++++++++++++++++++++++++++++ tests/lib/glib/dbus-tube-chan.h | 121 +++++++++++++++ 3 files changed, 448 insertions(+), 1 deletion(-) commit 3ba36e4a18b1db15a5889a76979ca80a25530cb1 Author: Dario Freddi Date: Thu Jun 30 11:31:50 2011 +0200 dbus-tubes: Before taking any action, check if the operation is still running (and hence if no action has been taken yet) TelepathyQt/pending-dbus-tube.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 31dc0ea3ea2796cdd1eb5ff38de21ef87e348979 Author: Dario Freddi Date: Thu Jun 16 14:37:15 2011 +0200 dbus-tubes: Print contact id as a debug info TelepathyQt/dbus-tube-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 5b39773fc284fb9eafaa05f1cc99c474e3e2826d Author: Dario Freddi Date: Thu Jun 16 14:35:09 2011 +0200 dbus-tubes: Handle property names correctly TelepathyQt/dbus-tube-channel.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) commit dc7e28cce51de2e0f55edac758f4eba25c18f47f Author: Dario Freddi Date: Thu Jun 16 14:14:19 2011 +0200 dbus-tubes: Handle the contact queue properly in every case, and make the feature ready just after the whole queue has been introspected. TelepathyQt/dbus-tube-channel.cpp | 24 ++++++++++++++++++++-- TelepathyQt/dbus-tube-channel.h | 1 + .../outgoing-stream-tube-channel-internal.h | 4 ++-- TelepathyQt/outgoing-stream-tube-channel.cpp | 12 ++++++++--- 4 files changed, 34 insertions(+), 7 deletions(-) commit d8bfda6eac4ed61c741fb33773733867efd0f7f7 Author: Dario Freddi Date: Thu Jun 16 14:00:22 2011 +0200 dbus-tubes: If the handle type is not Room, simply finish the feature. TelepathyQt/dbus-tube-channel.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 8f6d6be925da5d3d96fc190c29fe9ddcc5995ebc Author: Dario Freddi Date: Tue Jun 14 15:35:03 2011 +0200 dbus-tubes: Use requestAllProperties instead of GetAll TelepathyQt/dbus-tube-channel.cpp | 45 +++++++++++++++++++-------------------- TelepathyQt/dbus-tube-channel.h | 2 +- 2 files changed, 23 insertions(+), 24 deletions(-) commit 0cec6fcd0cb272da9ebe76df167767adb3d1bd07 Author: Dario Freddi Date: Tue Jun 14 15:22:33 2011 +0200 dbus-tubes: Move the instrospection of DBusNames to the correct feature. TelepathyQt/dbus-tube-channel.cpp | 20 ++++++++++++++++++-- TelepathyQt/dbus-tube-channel.h | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) commit f006f9530b01a5ddc2c52c1e7323cfce7df58dbe Author: Dario Freddi Date: Tue Jun 14 14:49:21 2011 +0200 dbus-tubes: Fix comments TelepathyQt/contact-capabilities.cpp | 4 ++-- TelepathyQt/dbus-tube-channel.cpp | 3 +-- TelepathyQt/incoming-dbus-tube-channel.cpp | 20 ++++++-------------- TelepathyQt/outgoing-dbus-tube-channel.cpp | 20 ++++++-------------- 4 files changed, 15 insertions(+), 32 deletions(-) commit 6e807b401b48a6b870e1c8f385c5ef70d6faa3bb Author: Dario Freddi Date: Tue Jun 14 14:44:53 2011 +0200 dbus-tubes: Merge the constructors in PendingDBusTube TelepathyQt/pending-dbus-tube.cpp | 19 +------------------ TelepathyQt/pending-dbus-tube.h | 3 +-- 2 files changed, 2 insertions(+), 20 deletions(-) commit 6f0844304e2e7479332c21b2257f1065257f73a7 Author: Dario Freddi Date: Thu Jun 9 16:59:16 2011 +0200 dbus-tubes: Don't emit a signal if the service is misbehaving; instead, print out a warning. TelepathyQt/dbus-tube-channel.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit fbf59fe4d4eb1bcca98aedf7b4743724b36e1c11 Author: Dario Freddi Date: Thu Jun 9 16:59:07 2011 +0200 dbus-tubes: Don't use insertMulti TelepathyQt/dbus-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bbdcb504b9eb0ac8243b31e4f73f60644c71ff37 Author: Dario Freddi Date: Thu Jun 9 16:55:29 2011 +0200 dbus-tubes: Add dbusTubes in {Contact,Connection}Capabilities TelepathyQt/connection-capabilities.cpp | 16 +++++++++++++ TelepathyQt/connection-capabilities.h | 1 + TelepathyQt/contact-capabilities.cpp | 41 +++++++++++++++++++++++++++++++++ TelepathyQt/contact-capabilities.h | 3 +++ 4 files changed, 61 insertions(+) commit f26ef38d1f6e8f7e151993aabc74c7131cfc64ff Author: Dario Freddi Date: Thu Jun 9 16:46:59 2011 +0200 dbus-tubes: Rather than relying on a tube state change, use invalidated() to detect errors correctly. TelepathyQt/pending-dbus-tube.cpp | 15 +++++++++++---- TelepathyQt/pending-dbus-tube.h | 3 +++ 2 files changed, 14 insertions(+), 4 deletions(-) commit a9b4d2c813df13fb18ba5447a639e0fac1bbd0c6 Author: Dario Freddi Date: Thu Jun 9 16:40:26 2011 +0200 dbus-tubes: Merge onAcceptFinished and onOfferFinished TelepathyQt/pending-dbus-tube.cpp | 36 ++++++------------------------------ TelepathyQt/pending-dbus-tube.h | 3 +-- 2 files changed, 7 insertions(+), 32 deletions(-) commit 4f5bf8fa028626755f4405af63a78dfa6d5cfa21 Author: Dario Freddi Date: Thu Jun 9 16:29:31 2011 +0200 dbus-tubes: Report the D-Bus event that causes logic to be run before running the logic. That way there's a hint that we're crashing in the response handling if the extraction is buggy. TelepathyQt/dbus-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 64ada2c89a61a03350a89f05cf99213f1c8d8d19 Author: Dario Freddi Date: Thu Jun 9 16:28:48 2011 +0200 dbus-tubes: Promote use of qObjectCast TelepathyQt/incoming-dbus-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d136d0f8e1b59babc13a3822cfafe7d3b2d84cc3 Author: Dario Freddi Date: Thu Jun 9 16:26:25 2011 +0200 dbus-tubes: Improve comments, and fix a variety of typos TelepathyQt/dbus-tube-channel.cpp | 21 +++++++++++++-------- TelepathyQt/outgoing-dbus-tube-channel.cpp | 5 +++-- TelepathyQt/pending-dbus-tube.cpp | 2 +- TelepathyQt/requestable-channel-class-spec.cpp | 2 +- 4 files changed, 18 insertions(+), 12 deletions(-) commit 653076ab8eed7c2353aa4ccb747432cd0e54d6df Author: Dario Freddi Date: Sat Jun 4 00:32:11 2011 +0200 dbus-tubes: Implement QueuedContactFactory for DBusTubeChannel as well TelepathyQt/dbus-tube-channel.cpp | 66 ++++++++++++++++++++++++++++++--------- TelepathyQt/dbus-tube-channel.h | 1 + 2 files changed, 52 insertions(+), 15 deletions(-) commit fd01ca8dd407eebbb9796a6a13b973c98cc29bcb Author: Dario Freddi Date: Fri Jun 3 23:41:58 2011 +0200 dbus-tubes: Remove dbus-tube-channel-internal.h and add protected methods for fulfilling that TelepathyQt/dbus-tube-channel-internal.h | 54 -------------------------------- TelepathyQt/dbus-tube-channel.cpp | 29 ++++++++++++++++- TelepathyQt/dbus-tube-channel.h | 2 ++ TelepathyQt/pending-dbus-tube.cpp | 5 ++- 4 files changed, 32 insertions(+), 58 deletions(-) commit 29be2a2f7b7571ece1b2a9cdea3804e9d11745ed Author: Dario Freddi Date: Fri Jun 3 23:35:07 2011 +0200 dbus-tubes: Add DBusTubeChannel to RequestableChannelClassSpec TelepathyQt/requestable-channel-class-spec.cpp | 23 +++++++++++++++++++++++ TelepathyQt/requestable-channel-class-spec.h | 1 + 2 files changed, 24 insertions(+) commit b69bb13a893b7eae109cff2c0c5e66caaf77c6de Author: Dario Freddi Date: Fri Jun 3 23:29:04 2011 +0200 dbus-tubes: Use a single implementation for pending DBus Tubes TelepathyQt/CMakeLists.txt | 12 +- TelepathyQt/PendingDBusTube | 13 ++ TelepathyQt/PendingDBusTubeAccept | 13 -- TelepathyQt/PendingDBusTubeOffer | 13 -- TelepathyQt/dbus-tube-channel.h | 3 +- TelepathyQt/incoming-dbus-tube-channel.cpp | 20 +-- TelepathyQt/incoming-dbus-tube-channel.h | 4 +- TelepathyQt/outgoing-dbus-tube-channel.cpp | 16 +-- TelepathyQt/outgoing-dbus-tube-channel.h | 4 +- TelepathyQt/pending-dbus-tube-accept.cpp | 150 ---------------------- TelepathyQt/pending-dbus-tube-accept.h | 62 --------- TelepathyQt/pending-dbus-tube-offer.cpp | 151 ---------------------- TelepathyQt/pending-dbus-tube-offer.h | 62 --------- TelepathyQt/pending-dbus-tube.cpp | 193 +++++++++++++++++++++++++++++ TelepathyQt/pending-dbus-tube.h | 65 ++++++++++ 15 files changed, 298 insertions(+), 483 deletions(-) commit 858c2e9d4d75a40fbfb6fb96ac65b1261be3c2a5 Author: Dario Freddi Date: Fri Jun 3 22:59:42 2011 +0200 dbus-tubes: Rename FeatureBusNamesMonitoring to FeatureBusNameMonitoring TelepathyQt/dbus-tube-channel.cpp | 12 ++++++------ TelepathyQt/dbus-tube-channel.h | 2 +- TelepathyQt/outgoing-dbus-tube-channel.cpp | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) commit 3baebebe49de4dfe6f7c39c2011db48410bff154 Author: Dario Freddi Date: Thu Mar 17 14:55:15 2011 +0100 dbus-tubes: Code style fixes TelepathyQt/dbus-tube-channel.cpp | 15 ++++++--------- TelepathyQt/incoming-dbus-tube-channel.cpp | 5 ++--- TelepathyQt/outgoing-dbus-tube-channel.cpp | 3 +-- 3 files changed, 9 insertions(+), 14 deletions(-) commit 1c7624b633a34200428d80cd6f27cf2c28f1b5c1 Author: Dario Freddi Date: Tue Mar 15 18:22:25 2011 +0100 dbus-tubes: Move methods implementations in the right position TelepathyQt/dbus-tube-channel.cpp | 89 ++++++++++++++++---------------- TelepathyQt/pending-dbus-tube-accept.cpp | 28 +++++----- TelepathyQt/pending-dbus-tube-offer.cpp | 28 +++++----- 3 files changed, 72 insertions(+), 73 deletions(-) commit 535b5f82ca055886c5232866dbc36ee93c815f43 Author: Dario Freddi Date: Tue Mar 15 18:17:28 2011 +0100 dbus-tubes: Remove the address() method in DBusTubeChannel's subclasses, and have one in DBusTubeChannel only TelepathyQt/dbus-tube-channel-internal.h | 54 +++++++++++++++++++++++ TelepathyQt/dbus-tube-channel.cpp | 31 +++---------- TelepathyQt/dbus-tube-channel.h | 2 + TelepathyQt/incoming-dbus-tube-channel-internal.h | 43 ------------------ TelepathyQt/incoming-dbus-tube-channel.cpp | 31 +++++-------- TelepathyQt/incoming-dbus-tube-channel.h | 3 -- TelepathyQt/outgoing-dbus-tube-channel-internal.h | 42 ------------------ TelepathyQt/outgoing-dbus-tube-channel.cpp | 39 ++++++++-------- TelepathyQt/outgoing-dbus-tube-channel.h | 3 -- TelepathyQt/pending-dbus-tube-accept.cpp | 4 +- TelepathyQt/pending-dbus-tube-offer.cpp | 5 ++- 11 files changed, 95 insertions(+), 162 deletions(-) commit 00c66e9870e50c687daac61ce922793c454e1546 Author: Dario Freddi Date: Tue Mar 15 18:07:10 2011 +0100 dbus-tubes: Remove unneeded function TelepathyQt/dbus-tube-channel.cpp | 5 ----- TelepathyQt/dbus-tube-channel.h | 2 -- TelepathyQt/incoming-dbus-tube-channel.cpp | 2 +- TelepathyQt/outgoing-dbus-tube-channel.cpp | 2 +- 4 files changed, 2 insertions(+), 9 deletions(-) commit f49bc410e586dc1968a8274c83f9b2fe009da7e0 Author: Dario Freddi Date: Tue Mar 15 18:03:04 2011 +0100 dbus-tubes: Create/Improve Documentation TelepathyQt/dbus-tube-channel.cpp | 72 ++++++++++++----- TelepathyQt/incoming-dbus-tube-channel.cpp | 121 ++++++++++++++++++++++++----- TelepathyQt/outgoing-dbus-tube-channel.cpp | 87 ++++++++++++++++----- TelepathyQt/pending-dbus-tube-accept.cpp | 86 ++++++++++++-------- TelepathyQt/pending-dbus-tube-offer.cpp | 86 ++++++++++++-------- 5 files changed, 327 insertions(+), 125 deletions(-) commit adf30f38dbe46d96918e6f9f82e13e1f1457cc3d Author: Dario Freddi Date: Sat Mar 12 16:19:27 2011 +0100 dbus-tubes: Fix code style and conventions TelepathyQt/dbus-tube-channel.cpp | 37 +++++++++++------------ TelepathyQt/dbus-tube-channel.h | 10 +++--- TelepathyQt/incoming-dbus-tube-channel.cpp | 12 ++++---- TelepathyQt/outgoing-dbus-tube-channel-internal.h | 4 +-- TelepathyQt/outgoing-dbus-tube-channel.cpp | 21 ++++--------- TelepathyQt/pending-dbus-tube-accept.cpp | 12 ++++---- TelepathyQt/pending-dbus-tube-accept.h | 3 +- TelepathyQt/pending-dbus-tube-offer.cpp | 12 ++++---- TelepathyQt/pending-dbus-tube-offer.h | 11 +++---- 9 files changed, 54 insertions(+), 68 deletions(-) commit d9ed4a2297e858e27c40b1e43eed5957d02e0a86 Author: Dario Freddi Date: Mon Dec 5 20:18:39 2011 +0100 dbus-tubes: Move the PendingOperations out to dedicated headers/impl files TelepathyQt/CMakeLists.txt | 6 + TelepathyQt/PendingDBusTubeAccept | 13 +++ TelepathyQt/PendingDBusTubeOffer | 13 +++ TelepathyQt/incoming-dbus-tube-channel-internal.h | 43 ++++++++ TelepathyQt/incoming-dbus-tube-channel.cpp | 113 +------------------ TelepathyQt/incoming-dbus-tube-channel.h | 33 +----- TelepathyQt/outgoing-dbus-tube-channel-internal.h | 42 +++++++ TelepathyQt/outgoing-dbus-tube-channel.cpp | 115 +------------------ TelepathyQt/outgoing-dbus-tube-channel.h | 35 +----- TelepathyQt/pending-dbus-tube-accept.cpp | 128 ++++++++++++++++++++++ TelepathyQt/pending-dbus-tube-accept.h | 63 +++++++++++ TelepathyQt/pending-dbus-tube-offer.cpp | 128 ++++++++++++++++++++++ TelepathyQt/pending-dbus-tube-offer.h | 63 +++++++++++ TelepathyQt4/PendingDBusTubeAccept | 13 --- TelepathyQt4/PendingDBusTubeOffer | 13 --- 15 files changed, 508 insertions(+), 313 deletions(-) commit ccdd91ea8d506023b17de41f052f0286da1a0711 Author: Dario Freddi Date: Sat Mar 12 14:49:45 2011 +0100 dbus-tubes: Remove private inheritance, and references to unimplemented Qt API. As with Stream Tubes, now DBus tubes return the bare DBus address instead of a QDBusConnection or a QDBusServer. TelepathyQt/dbus-tube-channel-internal.h | 62 ------------- TelepathyQt/dbus-tube-channel.cpp | 134 +++++++++++++---------------- TelepathyQt/dbus-tube-channel.h | 18 ++-- TelepathyQt/incoming-dbus-tube-channel.cpp | 64 +++++--------- TelepathyQt/incoming-dbus-tube-channel.h | 13 +-- TelepathyQt/outgoing-dbus-tube-channel.cpp | 58 +++++-------- TelepathyQt/outgoing-dbus-tube-channel.h | 12 +-- 7 files changed, 127 insertions(+), 234 deletions(-) commit 25e909053f670292da94052f9ba2dedfcd0dd9ff Author: Dario Freddi Date: Fri Jun 11 13:00:30 2010 +0200 dbus-tubes: Add missing pretty headers TelepathyQt/CMakeLists.txt | 2 ++ TelepathyQt4/PendingDBusTubeAccept | 13 +++++++++++++ TelepathyQt4/PendingDBusTubeOffer | 13 +++++++++++++ 3 files changed, 28 insertions(+) commit d064d2c2b31334c965c513b15551e3d0ef451f3e Author: Dario Freddi Date: Fri Jun 11 12:44:45 2010 +0200 dbus-tubes: Naming conventions: remove __k__ TelepathyQt/dbus-tube-channel-internal.h | 4 ++-- TelepathyQt/dbus-tube-channel.cpp | 8 ++++---- TelepathyQt/dbus-tube-channel.h | 4 ++-- TelepathyQt/incoming-dbus-tube-channel.cpp | 16 ++++++++-------- TelepathyQt/incoming-dbus-tube-channel.h | 4 ++-- TelepathyQt/outgoing-dbus-tube-channel.cpp | 16 ++++++++-------- TelepathyQt/outgoing-dbus-tube-channel.h | 4 ++-- 7 files changed, 28 insertions(+), 28 deletions(-) commit dd282ce93dd59ea01281ef860365f21ad95c9acf Author: Dario Freddi Date: Fri May 28 18:30:40 2010 +0200 dbus-tubes: Enabling high level DBus tubes in ChannelFactory TelepathyQt/channel-class-spec.cpp | 44 +++++++++++++++++++++++++++++++++ TelepathyQt/channel-class-spec.h | 5 +++- TelepathyQt/channel-factory.cpp | 50 ++++++++++++++++++++++++++++++++++++++ TelepathyQt/channel-factory.h | 32 ++++++++++++++++++++++++ 4 files changed, 130 insertions(+), 1 deletion(-) commit b37715fbb40c9a1d4067524fb82f008f8612d21b Author: Dario Freddi Date: Fri May 28 18:28:02 2010 +0200 dbus-tubes: Adding an IncomingDBusTubeChannel class TelepathyQt/CMakeLists.txt | 4 + TelepathyQt/IncomingDBusTubeChannel | 13 ++ TelepathyQt/incoming-dbus-tube-channel.cpp | 303 +++++++++++++++++++++++++++++ TelepathyQt/incoming-dbus-tube-channel.h | 89 +++++++++ TelepathyQt/types.h | 2 + 5 files changed, 411 insertions(+) commit 0d16a01fe0c0aa9f33fac54ca894719159a20b16 Author: Dario Freddi Date: Fri May 28 18:01:41 2010 +0200 dbus-tubes: Add an OutgoingDBusTubeChannel class for handling servers. TelepathyQt/CMakeLists.txt | 4 + TelepathyQt/DBusTubeChannel | 2 +- TelepathyQt/OutgoingDBusTubeChannel | 13 ++ TelepathyQt/outgoing-dbus-tube-channel.cpp | 302 +++++++++++++++++++++++++++++ TelepathyQt/outgoing-dbus-tube-channel.h | 89 +++++++++ TelepathyQt/types.h | 2 + 6 files changed, 411 insertions(+), 1 deletion(-) commit c23da3ca5f118b69be65e3f01af7850be6e5b399 Author: Dario Freddi Date: Mon Dec 5 18:54:27 2011 +0100 dbus-tubes: Implementing the base DBusTubeChannel class TelepathyQt/CMakeLists.txt | 4 + TelepathyQt/DBusTubeChannel | 13 ++ TelepathyQt/account.cpp | 149 +++++++++++++ TelepathyQt/account.h | 22 ++ TelepathyQt/dbus-tube-channel-internal.h | 62 ++++++ TelepathyQt/dbus-tube-channel.cpp | 366 +++++++++++++++++++++++++++++++ TelepathyQt/dbus-tube-channel.h | 85 +++++++ TelepathyQt/types.h | 2 + 8 files changed, 703 insertions(+) commit ab332eec3ebe2c36a2f3dcc6d4d3e160629600e8 Author: Dario Freddi Date: Mon Jul 2 17:52:11 2012 +0200 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit c9d803117900e110bc4dd4c1c3b28499763d4a06 Merge: fbc8228 2062d6d Author: Dario Freddi Date: Mon Jul 2 17:50:24 2012 +0200 Merge branch 'cmake' Reviewed-by: Dario Freddi Reviewed-by: George Kiagiadakis commit 2062d6dd986e6f626f06b4d9c82e99bdbf569eab Author: Dario Freddi Date: Mon Jul 2 17:13:18 2012 +0200 cmake: Adding options for selectively compile components. This commit enables an option for compiling Farstream, Farsight, Examples and Tests CMakeLists.txt | 168 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 95 insertions(+), 73 deletions(-) commit 70f6c9f613145c37426087e2aa882ab888e72923 Author: George Kiagiadakis Date: Mon Jul 2 17:10:45 2012 +0300 cmake: rewrite FindDBus.cmake to do things in a more modern and consistent way cmake/modules/FindDBus.cmake | 73 +++++++++++++------------------------------- 1 file changed, 22 insertions(+), 51 deletions(-) commit fbc8228d96b6ab11077c6d33b6157f2819e11887 Author: Dario Freddi Date: Mon Jul 2 17:45:11 2012 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 710808598e8efbf33b94bf2235be0a53fdbe84da Merge: d424f10 5128eb6 Author: Dario Freddi Date: Mon Jul 2 16:52:44 2012 +0200 Merge branch 'debug-receiver' Reviewed-by: Dario Freddi Reviewed-by: Andre Moreira Magalhaes commit 5128eb6ba4a71b6e09109dead29941db3a557573 Author: Dario Freddi Date: Mon Jul 2 16:47:44 2012 +0200 DebugReceiver: Add missing documentation to public methods and signals TelepathyQt/debug-receiver.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) commit c5907005aca35d33eaf36ad2dde6f94d657d9711 Author: Dario Freddi Date: Mon Jul 2 16:47:12 2012 +0200 DebugReceiver: Add spaces in comments TelepathyQt/debug-receiver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c47e93c0159b62e4910faa11dcc5ed7c510536b0 Author: George Kiagiadakis Date: Sun Jul 1 16:47:25 2012 +0300 PendingDebugMessageList: Fix some coding style issues TelepathyQt/pending-debug-message-list.cpp | 7 ++++--- TelepathyQt/pending-debug-message-list.h | 11 +++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) commit b2f09f8005a0d102edbd2da91fad81e96c241e26 Author: George Kiagiadakis Date: Sun Jul 1 16:36:20 2012 +0300 DebugReceiver: un-const-ify fetchMessages() TelepathyQt/debug-receiver.cpp | 7 +++---- TelepathyQt/debug-receiver.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) commit 6fb90ee135abbbdcfe87c30ae976f7b7705721a9 Author: George Kiagiadakis Date: Sun Jul 1 16:28:02 2012 +0300 DebugReceiver: Improve the API and fix some coding style issues TelepathyQt/constants.h | 6 ++ TelepathyQt/debug-receiver.cpp | 153 ++++++++++++++++------------------------- TelepathyQt/debug-receiver.h | 14 ++-- 3 files changed, 71 insertions(+), 102 deletions(-) commit 312a7e4779eae969b48d335256e32451a81bc222 Author: George Kiagiadakis Date: Sun Dec 11 19:44:42 2011 +0200 debug-receiver: Implement DebugReceiver TelepathyQt/debug-receiver.cpp | 125 ++++++++++++++++++++++++++++++++++++++++- TelepathyQt/debug-receiver.h | 14 +++++ 2 files changed, 138 insertions(+), 1 deletion(-) commit 99968e5736c0690b332dd0f0d44a710f8f442d50 Author: George Kiagiadakis Date: Sun Dec 11 19:43:51 2011 +0200 debug-receiver: Add class PendingDebugMessageList TelepathyQt/CMakeLists.txt | 4 ++ TelepathyQt/PendingDebugMessageList | 13 ++++++ TelepathyQt/pending-debug-message-list.cpp | 67 ++++++++++++++++++++++++++++++ TelepathyQt/pending-debug-message-list.h | 56 +++++++++++++++++++++++++ 4 files changed, 140 insertions(+) commit 913c5bb23f694e9d523a2dfb892c1bfd437618a5 Author: George Kiagiadakis Date: Sat Dec 10 23:32:17 2011 +0200 debug-receiver: Add basic skeleton for the new Tp::DebugReceiver class. TelepathyQt/CMakeLists.txt | 4 +++ TelepathyQt/DebugReceiver | 13 ++++++++ TelepathyQt/debug-receiver.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/debug-receiver.h | 63 ++++++++++++++++++++++++++++++++++++++ TelepathyQt/types.h | 2 ++ 5 files changed, 150 insertions(+) commit 2ed75525f4ef92319afbda66a9bdf27a7b5d7f26 Author: George Kiagiadakis Date: Sat Dec 10 22:32:11 2011 +0200 debug-receiver: Enable generation of low level bindings for the o.f.T.Debug interface. TelepathyQt/CMakeLists.txt | 3 +++ TelepathyQt/debug-receiver.xml | 9 +++++++++ TelepathyQt/stable-interfaces.xml | 1 + 3 files changed, 13 insertions(+) commit d424f10ad898f87cff786d8177688e7e81a68b2e Merge: 22a5b05 2050756 Author: Dario Freddi Date: Mon Jul 2 15:54:58 2012 +0200 Merge branch 'optimize-qmap' Reviewed-by: George Kiagiadakis commit 20507563649ef3053398a709770c0a8e3d44113b Author: Dario Freddi Date: Sun Apr 29 16:07:21 2012 +0200 contact-manager: Change QMap to QHash where possible TelepathyQt/contact-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 68de1c4efaf1e5499028c21c16bbe7ecc18732e0 Author: Dario Freddi Date: Sun Apr 29 16:07:00 2012 +0200 optional-interface-factory: Change QMap to QHash where possible TelepathyQt/optional-interface-factory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 383f731cb1932288b37f6755168d1c698ec0d3f2 Author: Dario Freddi Date: Sun Apr 29 16:05:49 2012 +0200 contact-manager-roster: Change QMap to QHash where possible TelepathyQt/contact-manager-internal.h | 7 +++---- TelepathyQt/contact-manager-roster.cpp | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) commit c35aa1bbd819b2b1cb3dc2105d1088a5094f0458 Author: Dario Freddi Date: Sun Apr 29 16:05:12 2012 +0200 connection: Change QMap to QHash where possible TelepathyQt/connection.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 150282cee07f36ede17a77efdd67b9a83ad4cbe6 Author: Dario Freddi Date: Sun Apr 29 16:04:50 2012 +0200 call-channel: Change QMap to QHash where possible TelepathyQt/call-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 476c59236fd579a89596b0528b182efd8b37b70c Author: Dario Freddi Date: Sun Apr 29 16:04:18 2012 +0200 account: Change QMap to QHash where possible TelepathyQt/account.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 22a5b05e3d0b488892f1d20880ad69d41f000433 Merge: b263299 3b68bf1 Author: George Kiagiadakis Date: Wed May 23 15:41:48 2012 +0300 Merge branch 'tp-glib-0.19' Reviewed-by: Dario Freddi commit 3b68bf14960970434edf2e785d48efc70de9425a Author: George Kiagiadakis Date: Wed May 23 15:24:17 2012 +0300 tests/lib/glib: Remove the csh CM - it's unused and uses deprecated API. tests/lib/glib/CMakeLists.txt | 2 - tests/lib/glib/csh/CMakeLists.txt | 15 - tests/lib/glib/csh/conn.c | 292 -------------- tests/lib/glib/csh/conn.h | 58 --- tests/lib/glib/csh/connection-manager.c | 133 ------- tests/lib/glib/csh/connection-manager.h | 61 --- tests/lib/glib/csh/manager-file.py | 23 -- tests/lib/glib/csh/room-manager.c | 384 ------------------ tests/lib/glib/csh/room-manager.h | 55 --- tests/lib/glib/csh/room.c | 673 -------------------------------- tests/lib/glib/csh/room.h | 64 --- 11 files changed, 1760 deletions(-) commit 5cf2d1a911b2e57a888574b7e2b7f7a546435051 Author: George Kiagiadakis Date: Wed May 23 15:20:03 2012 +0300 tests/lib/glib/util.c: Remove tp_tests_connection_run_request_contact_handle This method uses deprecated API and it's not used anywhere, so it's not worth porting. tests/lib/glib/util.c | 44 -------------------------------------------- 1 file changed, 44 deletions(-) commit 291346312c256b237f14de67092c4a8e64a179b0 Author: George Kiagiadakis Date: Wed May 23 15:18:01 2012 +0300 textchan-null/textchan-group test CMs: Ignore deprecations for the moment These two service-side channel implementations are still using the deprecated TpTextMixin. In the future, we should get rid of them and use the echo2 CM as a replacement in the tests that use them. tests/lib/glib/textchan-group.c | 5 +++++ tests/lib/glib/textchan-null.c | 5 +++++ 2 files changed, 10 insertions(+) commit 1c30a3e09f19fcd91b332abbbff0ce531f8afe0e Author: George Kiagiadakis Date: Wed May 23 15:16:14 2012 +0300 text-chan test: Ignore deprecations to use TpTextMixin for compatibility functionality testing tests/dbus/text-chan.cpp | 3 +++ tests/lib/glib/echo/chan.c | 3 +++ 2 files changed, 6 insertions(+) commit 29809eef841dc6e057f67ce8468b1d0106514ffa Author: George Kiagiadakis Date: Wed May 23 15:03:43 2012 +0300 stream-tube-chan test CM: Don't use TpTextMixin - it's not needed and it's deprecated. tests/lib/glib/stream-tube-chan.c | 3 --- tests/lib/glib/stream-tube-chan.h | 3 --- 2 files changed, 6 deletions(-) commit 37d7a65b775c9c34ead38ba7312bef5b04a74913 Author: George Kiagiadakis Date: Tue May 22 18:44:55 2012 +0300 echo2 test CM: Replace tp_message_new/tp_message_set_handle with tp_cm_message_new/tp_cm_message_set_sender tests/lib/glib/echo2/chan.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit 510219be635008efb62e7ea80a1584763ee6fe1e Author: George Kiagiadakis Date: Tue May 22 18:02:46 2012 +0300 tests: Remove all occurencies of tp_handle_ref/unref. These methods are now deprecated and they have been no-op for a while, so it is safe to simply remove them. tests/dbus/account-channel-dispatcher.cpp | 2 -- tests/dbus/chan-conference.cpp | 4 ---- tests/dbus/client-factories.cpp | 2 -- tests/dbus/client.cpp | 2 -- tests/dbus/contact-messenger.cpp | 6 ------ tests/dbus/simple-observer.cpp | 2 -- tests/dbus/stream-tube-chan.cpp | 5 ----- tests/dbus/stream-tube-handlers.cpp | 5 ----- tests/dbus/text-chan.cpp | 2 -- tests/lib/glib/callable/media-channel.c | 8 -------- tests/lib/glib/callable/media-stream.c | 16 --------------- tests/lib/glib/contact-list-manager.c | 2 -- tests/lib/glib/contactlist/contact-list-manager.c | 16 --------------- tests/lib/glib/contactlist/contact-list.c | 6 ------ tests/lib/glib/contactlist2/contact-list.c | 13 +----------- tests/lib/glib/csh/room.c | 23 ---------------------- tests/lib/glib/echo/chan.c | 22 --------------------- tests/lib/glib/echo2/chan.c | 24 ----------------------- tests/lib/glib/future/conn-addressing/conn.c | 2 -- tests/lib/glib/simple-conn.c | 3 --- tests/lib/glib/textchan-null.c | 5 ----- 21 files changed, 1 insertion(+), 169 deletions(-) commit 7bd28f2d29a6aaa656de7ff9291698a713c5c61f Author: George Kiagiadakis Date: Tue May 22 17:43:08 2012 +0300 tests/lib/glib: Replace TP_ERRORS with TP_ERROR, as TP_ERRORS is now deprecated. tests/lib/glib/call/call-channel.c | 4 ++-- tests/lib/glib/call/call-manager.c | 4 ++-- tests/lib/glib/call/protocol.c | 4 ++-- tests/lib/glib/callable/conn.c | 2 +- tests/lib/glib/callable/media-channel.c | 26 +++++++++++----------- tests/lib/glib/callable/media-manager.c | 2 +- tests/lib/glib/contact-search-chan.c | 6 ++--- tests/lib/glib/contactlist/conn.c | 4 ++-- tests/lib/glib/contactlist/contact-list-manager.c | 6 ++--- tests/lib/glib/contactlist/contact-list.c | 4 ++-- tests/lib/glib/contactlist2/protocol.c | 4 ++-- tests/lib/glib/csh/conn.c | 16 ++++++------- tests/lib/glib/csh/connection-manager.c | 6 ++--- tests/lib/glib/csh/room-manager.c | 2 +- tests/lib/glib/csh/room.c | 2 +- tests/lib/glib/echo/conn.c | 2 +- tests/lib/glib/echo/im-manager.c | 2 +- tests/lib/glib/echo2/chan.c | 2 +- tests/lib/glib/echo2/connection-manager.c | 2 +- tests/lib/glib/echo2/im-manager.c | 2 +- tests/lib/glib/echo2/protocol.c | 12 +++++----- tests/lib/glib/future/conn-addressing/conn.c | 6 ++--- tests/lib/glib/params-cm.c | 4 ++-- tests/lib/glib/simple-channel-dispatch-operation.c | 2 +- tests/lib/glib/simple-client.c | 2 +- tests/lib/glib/simple-conn.c | 4 ++-- tests/lib/glib/stream-tube-chan.c | 8 +++---- 27 files changed, 70 insertions(+), 70 deletions(-) commit b2632998374b45af488b6c3a5a6fe330d23bb799 Author: George Kiagiadakis Date: Wed May 2 17:34:47 2012 +0300 Use quintptr instead of intptr_t. This fixes FTBFS with gcc-4.7, which requires to be included for intptr_t to be available. However, since stdint.h is not part of the C++03 standard, it is better to use Qt's types. Reviewed-by: Andre Moreira Magalhaes (andrunko) TelepathyQt/base-connection.cpp | 2 +- TelepathyQt/client-registrar.cpp | 2 +- TelepathyQt/stream-tube-client.cpp | 2 +- TelepathyQt/stream-tube-server.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 861eb5f86a44c00e79de8c721110680e594c2eef Author: George Kiagiadakis Date: Fri Apr 13 22:05:22 2012 +0300 tests: Fix a race condition with createAccount() in test-account-basics and test-dbus-properties Reviewed-by: Andre Moreira Magalhaes (andrunko) tests/dbus/account-basics.cpp | 10 +++++++++- tests/dbus/dbus-properties.cpp | 9 ++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) commit 606c2c8255f354397e642aa3eb457fe54a8c7321 Author: George Kiagiadakis Date: Fri Apr 13 21:28:00 2012 +0300 Update NEWS NEWS | 7 +++++++ 1 file changed, 7 insertions(+) commit f15df8c845e8b21bcc0127ee22b320d9fd87250e Author: George Kiagiadakis Date: Fri Apr 13 21:07:08 2012 +0300 AccountManager: Rename accountForPath and accountsForPaths to accountForObjectPath and accountsForObjectPaths respectively. It turns out that the accountForPath name is not very intuitive, when the path is accessed from the objectPath() method. Reviewed-by: Andre Moreira Magalhaes (andrunko) TelepathyQt/account-manager.cpp | 26 +++++++++++++++++++++----- TelepathyQt/account-manager.h | 6 ++++-- examples/file-transfer/file-sender.cpp | 2 +- tests/dbus/account-basics.cpp | 2 +- 4 files changed, 27 insertions(+), 9 deletions(-) commit b2325ec9580ae6620901a8aa950fb5f00f2d8df0 Merge: 93625b6 ec2162d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 13 14:37:56 2012 -0300 Merge branch 'svc-fixes' Reviewed-by: George Kiagiadakis commit ec2162d96988a773b48861c6bcd19c46bcdf6b23 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 13 14:01:33 2012 -0300 Only generate adaptors for non-deprecated stable interfaces. TelepathyQt/CMakeLists.txt | 22 ++++++++++++---------- cmake/modules/TpQtMacros.cmake | 3 ++- 2 files changed, 14 insertions(+), 11 deletions(-) commit 37fde05498e2f6df1c3b9b705444f4c7f3025327 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 13 14:04:27 2012 -0300 qt-svc-gen.py: Properly generate adaptee methods/signals/properties names in lowerCamelCase. Also renamed all places using vCard to vcard for consistency as the generated code will generate vcard for VCard when appropriate. TelepathyQt/base-protocol-internal.h | 6 ++-- TelepathyQt/base-protocol.cpp | 62 +++++++++++++++++----------------- TelepathyQt/base-protocol.h | 6 ++-- TelepathyQt/contact-manager.cpp | 6 ++-- TelepathyQt/contact.cpp | 4 +-- TelepathyQt/manager-file.cpp | 4 +-- TelepathyQt/protocol-info.cpp | 22 ++++++------ TelepathyQt/svc-channel.xml | 38 +++++++++++++++++++++ TelepathyQt/svc-connection-manager.xml | 13 +++++++ TelepathyQt/svc-connection.xml | 29 ++++++++++++++++ examples/cm/protocol.cpp | 2 +- tests/dbus/base-protocol.cpp | 30 ++++++++-------- tools/qt-svc-gen.py | 17 +++++----- 13 files changed, 159 insertions(+), 80 deletions(-) commit 93625b67732094b922791280848d70077f1c5d1b Merge: 9cd3b18 240f9c0 Author: George Kiagiadakis Date: Fri Apr 13 19:11:22 2012 +0300 Merge branch 'cmake-fixes' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 240f9c038a0cc2b27d8a42b4bd53c1a959800bfc Author: George Kiagiadakis Date: Fri Apr 13 19:08:18 2012 +0300 cmake: Fix service-side compilation with -jX TelepathyQt/CMakeLists.txt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) commit 9cd3b18be5b410d60f20c4bd066054698e304a3d Merge: b85446e b47b911 Author: George Kiagiadakis Date: Fri Apr 13 17:49:44 2012 +0300 Merge branch 'presence-additions' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit b85446e1ee7a75de412f0de8e948139b31579532 Merge: 8c3a44b d3e13a2 Author: George Kiagiadakis Date: Fri Apr 13 17:49:05 2012 +0300 Merge branch 'test-base-protocol' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 8c3a44bc23a87e288a2f076734879d17c1be5104 Merge: 1c9933c aa817e4 Author: George Kiagiadakis Date: Fri Apr 13 17:47:37 2012 +0300 Merge branch 'test-base-cm' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit b47b911b7bb1d3298be0be1f2a3cafe43169d6f5 Author: George Kiagiadakis Date: Fri Apr 13 15:51:21 2012 +0300 PresenceSpecList: Declare metatype TelepathyQt/presence.h | 1 + 1 file changed, 1 insertion(+) commit a1cc4a980d47aaf2a86442a1507368eb77bf3349 Author: George Kiagiadakis Date: Fri Apr 13 15:42:14 2012 +0300 test-base-protocol: Properly test the presence interface tests/dbus/base-protocol.cpp | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) commit 02f3c6f6d37a413b5ad394a216db43caad98e6b8 Author: George Kiagiadakis Date: Fri Apr 13 15:36:22 2012 +0300 test-presence: Test the new Presence constructors tests/presence.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 2a9e3cc01ff743e9fa40bad32b43ded76726cea5 Author: George Kiagiadakis Date: Fri Apr 13 15:35:22 2012 +0300 Presence: Add constructors for the rest of the possible presence statuses TelepathyQt/presence.cpp | 10 ++++++++++ TelepathyQt/presence.h | 2 ++ 2 files changed, 12 insertions(+) commit 0da6c17808341aacb3c303c49a88296febb031c3 Author: George Kiagiadakis Date: Fri Apr 13 13:36:41 2012 +0300 test-presence: Add tests for the high-level constructors of PresenceSpec tests/presence.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit c92ab27fd5d03dade4c3feda0d3d107c224ca278 Author: George Kiagiadakis Date: Fri Apr 13 13:35:29 2012 +0300 PresenceSpec: Add high-level API for easily creating PresenceSpec objects The default flags are based on telepathy-gabble's PresenceSpec flags. TelepathyQt/presence.cpp | 108 +++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/presence.h | 23 ++++++++++ 2 files changed, 131 insertions(+) commit d3e13a20bad5c272cb1b6b2cb4f047ee6c3ad228 Author: George Kiagiadakis Date: Thu Apr 12 17:48:55 2012 +0300 tests: Add a unit test for BaseProtocol and its interfaces tests/dbus/CMakeLists.txt | 1 + tests/dbus/base-protocol.cpp | 666 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 667 insertions(+) commit fbb98da15c07b16b0417da5eb6c5cf9ed71b0d91 Author: George Kiagiadakis Date: Thu Apr 12 16:42:13 2012 +0300 BaseProtocolPresenceInterface: Add Statuses as immutable property TelepathyQt/base-protocol.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 68d97d44bf0c48cecdeba0cbb81fac1c8f52230c Author: George Kiagiadakis Date: Thu Apr 12 16:32:44 2012 +0300 Base*::immutableProperties: Re-wrap lines for readability and use QVariant::fromValue() qVariantFromValue() is obsolete since Qt 4.8 TelepathyQt/base-connection-manager.cpp | 3 ++- TelepathyQt/base-protocol.cpp | 48 ++++++++++++++++++++++----------- 2 files changed, 34 insertions(+), 17 deletions(-) commit 40ad90845d772accdec22d23b168b697ac4f9bc3 Author: George Kiagiadakis Date: Wed Apr 11 18:08:10 2012 +0300 Make the create() methods of the service-side API return a SharedPtr This avoids unnecessary casting after the new instance has been created. TelepathyQt/base-connection-manager.h | 9 +++++---- TelepathyQt/base-connection.h | 10 +++++----- TelepathyQt/base-protocol.h | 25 +++++++++++++++---------- 3 files changed, 25 insertions(+), 19 deletions(-) commit e14eda73fb5bbdd3a200ba4b7198acebff91c2c1 Author: George Kiagiadakis Date: Wed Apr 11 17:57:02 2012 +0300 BaseProtocol: Add missing Q_OBJECT macro in the protocol interface classes TelepathyQt/base-protocol.h | 4 ++++ 1 file changed, 4 insertions(+) commit 34fa155da0c204af7c5d6d7f94d09d9cd5c58811 Author: George Kiagiadakis Date: Wed Apr 11 17:54:30 2012 +0300 BaseProtocol: Add a new convenience interface(interfaceName) method TelepathyQt/base-protocol.cpp | 19 +++++++++++++++++-- TelepathyQt/base-protocol.h | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) commit 20f343b3dc5b1fa3c9eb7c90ca9e51a52338155d Author: George Kiagiadakis Date: Mon Apr 9 20:56:14 2012 +0300 ProtocolParameter: Fix typo in the constructor arguments - flags should be of the respective QFlags type, not the enum type TelepathyQt/protocol-parameter.cpp | 6 +++--- TelepathyQt/protocol-parameter.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) commit 39a083a71ea9b1f6e295b9e02ecc2c83020d2c8f Author: George Kiagiadakis Date: Mon Apr 9 20:55:34 2012 +0300 BaseProtocol interfaces: Create adaptee classes earlier than adaptors This is better practice than having mPriv->adaptee be NULL before the interface has been registered and prevents a crash in BaseProtocolAvatarsInterface::immutableProperties() if this gets called with adaptee being NULL. We could also make immutableProperties() return an empty map if the adaptee has not been created, but it's probably safer for the future to always create the adaptee object and don't bother to check if it's NULL or not. TelepathyQt/base-protocol-internal.h | 9 +++----- TelepathyQt/base-protocol.cpp | 45 +++++++++++++++--------------------- 2 files changed, 21 insertions(+), 33 deletions(-) commit aa817e46ab60120084e82926caf0c1cef8dcaacf Author: George Kiagiadakis Date: Tue Apr 10 23:04:30 2012 +0300 TestThreadHelper: Start the thread after entering the event loop, as the code actually intended to do. tests/lib/test-thread-helper.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 5bf254fc18c499f578f7863c7a954bae4c99fddb Author: George Kiagiadakis Date: Tue Apr 10 22:15:37 2012 +0300 test-base-cm: Port to use TestThreadHelper tests/dbus/base-cm.cpp | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) commit 11feef12ef5138c703f9974bbd9a35c670cfcc76 Author: George Kiagiadakis Date: Tue Apr 10 20:44:48 2012 +0300 tests-lib: Add a new TestThreadHelper class This class allows us to run parts of a unit test in a different thread context, while being in sync with the unit test flow. This is useful to run connection manager implementations in a different thread, to overcome the shortcomings of the QtDBus local-loop optimizations. tests/lib/CMakeLists.txt | 22 ++++++++++-- tests/lib/test-thread-helper.cpp | 36 +++++++++++++++++++ tests/lib/test-thread-helper.h | 77 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+), 2 deletions(-) commit a1e4147a4677293164eed80e056f812309c6a33a Author: George Kiagiadakis Date: Mon Apr 9 17:52:05 2012 +0300 test-base-cm: Add test for the protocol-related methods of BaseCM tests/dbus/base-cm.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) commit 9f7c332174554ebf821f9490e2463a666a7842ab Author: George Kiagiadakis Date: Mon Apr 9 17:19:15 2012 +0300 ConnectionManager: Finish introspection sucessfully when no protocols are found on the CM TelepathyQt/connection-manager.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) commit 5872ea5f62c6eff9d55e50941824f3ade55ec5fd Author: George Kiagiadakis Date: Mon Apr 9 17:18:54 2012 +0300 BaseConnection: Fix QString args replacement in registerObject() TelepathyQt/base-connection.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit df0621ea1b0ae7896edf69087790b4cd750d5ce0 Author: George Kiagiadakis Date: Mon Apr 9 17:17:29 2012 +0300 DBusService: Fix QString args replacement in registerObject() TelepathyQt/dbus-service.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a3ebacbc33eb4c026a90e1191ac8da9c38aebcac Author: George Kiagiadakis Date: Mon Apr 9 17:12:12 2012 +0300 tests: Add a new test for testing BaseConnectionManager The test currently contains an adaptation of tp-glib's example-no-protocols test. tests/dbus/CMakeLists.txt | 4 +++ tests/dbus/base-cm.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) commit 1c9933cd7dc509779abcc22fd4622cb353798711 Merge: 63ce37b 542e0bc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 6 14:01:43 2012 -0300 Merge branch 'svc-fixes' Reviewed-by: George Kiagiadakis commit 542e0bcb0da2ed461f250f03602b516b3942b6ee Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 6 13:51:48 2012 -0300 Move service side specific types from types.h to service-types.h as they are in separate libraries. The files will be merged in types.h once the libraries are merged. TelepathyQt/CMakeLists.txt | 4 ++- TelepathyQt/ServiceTypes | 13 ++++++++++ TelepathyQt/dbus-service.h | 1 + TelepathyQt/service-types.h | 59 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/types.h | 20 ++------------- 5 files changed, 78 insertions(+), 19 deletions(-) commit b33642d78d4629b5b44776d12f2069d1afed42b3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 6 13:16:24 2012 -0300 Revert "MethodInvocationContext: Add setFinishedWithError overload receiving a DBusError." This reverts commit 383213037d594cbbc3aa92681c75a0e40e6760ed. DBusError is part of telepathy-qt-service library and cannot be a dependency for the main telepathy-qt library. We may re-add it once we merge both libraries. TelepathyQt/base-connection-manager.cpp | 4 ++-- TelepathyQt/base-protocol.cpp | 8 ++++---- TelepathyQt/method-invocation-context.h | 9 +-------- 3 files changed, 7 insertions(+), 14 deletions(-) commit 63ce37b2c1a712892486d208b93a8ca3f44bc1ab Merge: c5979f9 b189cbb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 6 13:38:59 2012 -0300 Merge remote-tracking branch 'gkiagia/svc-fixes' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit b189cbb146e46360d956d91ac3c931bdac0bbfab Author: George Kiagiadakis Date: Fri Apr 6 01:28:40 2012 +0300 DBusObject: Add missing Q_OBJECT macro TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/dbus-object.cpp | 2 ++ TelepathyQt/dbus-object.h | 1 + 3 files changed, 4 insertions(+) commit 24209de4511f1a5610e465a4b1be682fd4e1de23 Author: George Kiagiadakis Date: Fri Apr 6 01:20:33 2012 +0300 Do not install global.h twice. TelepathyQt/CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit c5979f96c48c756a47720580fc931ea3784e8192 Merge: b802ffe c9ddd40 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 5 12:23:50 2012 -0300 Merge remote-tracking branch 'gkiagia/service-side-docs' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit c9ddd406ea8c0f3d992e8d17df5e10e4c5d5d39d Author: George Kiagiadakis Date: Thu Apr 5 18:01:52 2012 +0300 DBusObject: Add documentation TelepathyQt/dbus-object.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit 7f37fa32582941cf0168573aa7d4c2d6584bdc34 Author: George Kiagiadakis Date: Thu Apr 5 17:56:36 2012 +0300 AbstractAdaptor: Add documentation TelepathyQt/abstract-adaptor.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) commit 9c2cfb2feef1388e5a17ba3d23313f355203c133 Author: George Kiagiadakis Date: Thu Apr 5 17:36:11 2012 +0300 DBusError: Add documentation TelepathyQt/dbus-error.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) commit 135b9e0fbd5b821f755f977e7985d0d27a1ec916 Author: George Kiagiadakis Date: Thu Apr 5 16:44:07 2012 +0300 AbstractDBusServiceInterface: Add missing doc for immutableProperties() TelepathyQt/dbus-service.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit 30c9feb1c4dba935072ab08c1990c233d75fefe5 Author: George Kiagiadakis Date: Thu Apr 5 16:43:06 2012 +0300 Document the callbacks system TelepathyQt/callbacks.dox | 161 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) commit 63494b734a7236b56657b9010483f04a5fae1efc Author: George Kiagiadakis Date: Wed Apr 4 18:53:22 2012 +0300 BaseProtocol: Add documentation TelepathyQt/base-protocol.cpp | 502 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 502 insertions(+) commit c1930718d2367ba2f5499cc01d373d6d47db3d8d Author: George Kiagiadakis Date: Wed Apr 4 18:03:58 2012 +0300 BaseConnection: Add documentation TelepathyQt/base-connection.cpp | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) commit ef41d3bf4c44de194941df63f0415f443150bd18 Author: George Kiagiadakis Date: Wed Apr 4 17:51:02 2012 +0300 BaseConnectionManager: Add documentation TelepathyQt/base-connection-manager.cpp | 108 ++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) commit 5da412dc564a0c43cf8417b7935f431f4c250b38 Author: George Kiagiadakis Date: Wed Apr 4 17:45:19 2012 +0300 DBusService: Add documentation TelepathyQt/dbus-service.cpp | 142 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) commit 6f6d089589b25520fd6b2afdb7e026fa6ddc30f5 Author: George Kiagiadakis Date: Wed Apr 4 17:27:45 2012 +0300 groups.dox: Add new documentation groups for the service-side bindings TelepathyQt/groups.dox | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit b802ffe840ad89ea18e98b2a2d69577917ec66bf Merge: fe8b98f 54b8da6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 5 12:21:51 2012 -0300 Merge branch 'service-side' Reviewed-by: George Kiagiadakis Reviewed-by: Dario Freddi commit 54b8da6d1cbcfd80c20227b1db41e7a28dcf9607 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 5 12:18:20 2012 -0300 Update README and add notes on how to build against Qt 5 alpha. README | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) commit 6d542c5859d94eb1511caaf05236a2e3331a74f8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 5 11:44:15 2012 -0300 AbstractAdaptor: Remove setAdaptee. Changing adaptees at runtime is not desirable and generated adaptors will only connect to adaptee signals (relay) on construction. TelepathyQt/abstract-adaptor.cpp | 5 ----- TelepathyQt/abstract-adaptor.h | 1 - 2 files changed, 6 deletions(-) commit a3ee81009ccc62035aa2b7d6b20aeb95c2589dc1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 5 09:37:46 2012 -0300 BaseProtocol: Properly make mPriv private. TelepathyQt/base-protocol.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f87b7484d122f5f6cd027267fd5707d03758078a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 4 17:36:37 2012 -0300 Properly build against Qt 5 alpha. Qt 5 alpha release has some build issues that should be addressed in order to build tp-qt against it: - When running configure in Qt 5 alpha, the pkgconfig files are properly generated, but when make is executed, the files are replaced with empty ones, so to build tp-qt one must either backup the pkgconfig files generated during the configure phase before running make and replace them afterwards, or re-run configure with the same parameters after building it. (reported and should be fixed when beta is out) - If Qt 5 alpha is built with -reduce-relocations enabled, one must add the keyword "reduce_relocations" to qtbase/lib/pkgconfig/QtCore.pc in the qt_config section, so that tp-qt knows when to use -fPIC/PIE accordingly. (reported and should be fixed when beta is out) CMakeLists.txt | 14 +++++++++++++- TelepathyQt/CMakeLists.txt | 9 ++++++--- TelepathyQt/Farsight/CMakeLists.txt | 3 ++- TelepathyQt/Farstream/CMakeLists.txt | 3 ++- cmake/modules/FindQt5.cmake | 9 ++++++++- cmake/modules/TpQtMacros.cmake | 4 ++-- examples/accounts/CMakeLists.txt | 3 ++- examples/cm/CMakeLists.txt | 3 ++- examples/contact-messenger/CMakeLists.txt | 3 ++- examples/extensions/CMakeLists.txt | 3 ++- examples/file-transfer/CMakeLists.txt | 6 ++++-- examples/protocols/CMakeLists.txt | 3 ++- examples/roster/CMakeLists.txt | 6 ++++-- examples/stream-tubes/CMakeLists.txt | 6 ++++-- 14 files changed, 55 insertions(+), 20 deletions(-) commit 7e993408ddaf5ead064f86a5cfe59f1be3a93329 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 4 11:17:39 2012 -0300 DBusService: Use DBusObject. TelepathyQt/base-connection-manager.cpp | 1 + TelepathyQt/base-connection.cpp | 1 + TelepathyQt/base-protocol.cpp | 39 +++++++++++++++++---------------- TelepathyQt/base-protocol.h | 32 +++++++++++++-------------- TelepathyQt/dbus-service.cpp | 35 +++++++++++------------------ TelepathyQt/dbus-service.h | 11 +++++----- examples/cm/protocol.cpp | 6 ++--- 7 files changed, 60 insertions(+), 65 deletions(-) commit 6c258da57b40dab608c31b6abdff93d2792bf9c0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 4 11:16:15 2012 -0300 DBusObject: Add utility class holding a QDBusConnection. TelepathyQt/CMakeLists.txt | 3 +++ TelepathyQt/DBusObject | 13 +++++++++++ TelepathyQt/dbus-object.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/dbus-object.h | 57 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+) commit 10e13da5825e28e0f3ac9bfd8b387b5bcf4d499d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:55:01 2012 -0300 BaseConnectionManager: Fix debug string. TelepathyQt/base-connection-manager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit b70932d4b9502dceb5b45ea522243d585a3d03f7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:54:44 2012 -0300 BaseConnection: Add cmName accessor. TelepathyQt/base-connection.cpp | 5 +++++ TelepathyQt/base-connection.h | 1 + 2 files changed, 6 insertions(+) commit 575067ad597d2cf324a9f711b16fe2e0a6ce4119 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:53:53 2012 -0300 *DBusService*: Add public immutableProperties virtual method to be reimplemented by services and optinal interfaces. TelepathyQt/base-connection-manager.cpp | 7 +++++ TelepathyQt/base-connection-manager.h | 2 ++ TelepathyQt/base-connection.cpp | 6 ++++ TelepathyQt/base-connection.h | 2 ++ TelepathyQt/base-protocol.cpp | 50 ++++++++++++++++++++++++++++----- TelepathyQt/base-protocol.h | 6 ++++ TelepathyQt/dbus-service.h | 5 ++++ 7 files changed, 71 insertions(+), 7 deletions(-) commit 9c168d5dd156ae8a4dc1d452373ebe936572075b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:50:23 2012 -0300 BaseProtocol: Add more checks in plugInterface. TelepathyQt/base-protocol.cpp | 31 +++++++++++++++++++++++++------ TelepathyQt/base-protocol.h | 2 +- 2 files changed, 26 insertions(+), 7 deletions(-) commit f3195b924e18de5d1cd1a9432fb9823a61452338 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:49:18 2012 -0300 BaseConnectionManager: Check if protocol is already registered in registerObject. TelepathyQt/base-connection-manager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 555aa2fc85587ebc2d9935f7d4396b1c9fa42bf3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:48:40 2012 -0300 BaseConnection: Check for isRegistered on registerObject. TelepathyQt/base-connection.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 452dc304c698f15a5a7b43149320b40ef3318820 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:48:14 2012 -0300 BaseConnectionManager: Check for isRegistered on registerObject. TelepathyQt/base-connection-manager.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 7711932beeac265620a7e73bdf37898e44beacaf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:46:11 2012 -0300 BaseProtocol: Check for isRegistered in registerObject. TelepathyQt/base-protocol.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 28827058019699a323f57ef2351f1776a9be8e93 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 18:42:41 2012 -0300 AbstractDBusServiceInterface: Change how registration works to allow interfaces to check whether they are already registered. TelepathyQt/base-protocol.cpp | 52 ++++++++++++++++--------------------------- TelepathyQt/base-protocol.h | 40 ++++++++++++++++----------------- TelepathyQt/dbus-service.cpp | 42 ++++++++++++++++++++++++++++++---- TelepathyQt/dbus-service.h | 9 ++++++-- examples/cm/protocol.cpp | 6 ++--- 5 files changed, 86 insertions(+), 63 deletions(-) commit eaae5d521eeb8faca0ff2f43a8b06b9ade48d389 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 15:24:59 2012 -0300 BaseProtocol*: Warn and return if trying to change immutable property after object registration. TelepathyQt/base-protocol.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) commit 9115a02301124d3b4ea60f7a811b42498a087850 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 15:11:13 2012 -0300 BaseProtocol: No point in keeping adaptor pointers around in adaptee instances. TelepathyQt/base-protocol-internal.h | 4 ---- TelepathyQt/base-protocol.cpp | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) commit 40b4d6f147427b4c7fe7d1474e208b2e6532882e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 15:09:37 2012 -0300 BaseProtocol*Interface: Warn if createAdaptor is called more than once. TelepathyQt/base-protocol.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit e92210fc716e86b1dd76910f07004a1418f3a8aa Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 15:09:30 2012 -0300 BaseProtocol*Interface: Use interface as parent for adaptees. TelepathyQt/base-protocol.cpp | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) commit c33bde0226ee543e65ff14024744946d68fa07e9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 14:57:47 2012 -0300 AbstractDBusServiceInterface: Use QString instead of QLatin1String to store interface name. TelepathyQt/base-protocol.cpp | 2 +- TelepathyQt/base-protocol.h | 2 +- TelepathyQt/dbus-service.cpp | 8 ++++---- TelepathyQt/dbus-service.h | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) commit 4a7760b4810bb9b2d42536ca7bdeeaeea6d94c82 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 14:54:20 2012 -0300 AbstractDBusServiceInterface: Export it and add Q_OBJECT macro. TelepathyQt/dbus-service.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit fcd3df7d370c69f5fef16f5203540060b87a2a54 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 14:53:23 2012 -0300 DBusError: Fix copyright notice. TelepathyQt/dbus-error.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 165bc8dcfefe126a68412792724c1e077157cda7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 14:50:09 2012 -0300 BaseCallback: No need to check pointer before calling delete when we guarantee the pointer is properly nullfied when appropriate. TelepathyQt/callbacks.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 44e9877271e3f6fbbf2212c9ad563b1aca37ef82 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 3 14:44:21 2012 -0300 BaseConnectionManager: Unexport add/removeConnection. TelepathyQt/base-connection-manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 6763cc95ca7976bf3b0e5f2f4cf8d6ec9c6da245 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:28:27 2012 -0300 qt-svc-gen.py: Improve props docs. tools/qt-svc-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 94fb8f7e048cbacf261c2fa89d83f91dc1c401c5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:25:21 2012 -0300 cm example: Add example for BaseProtocolPresenceInterface usage. examples/cm/protocol.cpp | 18 ++++++++++++++++++ examples/cm/protocol.h | 1 + 2 files changed, 19 insertions(+) commit 124975bc160784805a06abc35065db7c2208bd89 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:32:08 2012 -0300 BaseProtocolPresenceInterface: Add support for Proto.I.Presence. TelepathyQt/BaseProtocolPresenceInterface | 13 +++++++ TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/base-protocol-internal.h | 17 +++++++++ TelepathyQt/base-protocol.cpp | 60 +++++++++++++++++++++++++++++++ TelepathyQt/base-protocol.h | 25 ++++++++++--- TelepathyQt/types.h | 2 ++ 6 files changed, 113 insertions(+), 5 deletions(-) commit 8c11d02d62a8b6dc492c26a634e0039f4a5dece0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:04:18 2012 -0300 cm example: Add example for BaseProtocolAvatarsInterface usage. examples/cm/protocol.cpp | 5 +++++ examples/cm/protocol.h | 1 + 2 files changed, 6 insertions(+) commit 0fa688f5bece65969a8686bbf5919cc9ee5dc956 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:32:00 2012 -0300 BaseProtocolAvatarsInterface: Add support for Proto.I.Avatars. TelepathyQt/BaseProtocolAvatarsInterface | 13 +++++ TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/base-protocol-internal.h | 31 ++++++++++ TelepathyQt/base-protocol.cpp | 97 ++++++++++++++++++++++++++++++++ TelepathyQt/base-protocol.h | 27 +++++++-- TelepathyQt/types.h | 2 + 6 files changed, 166 insertions(+), 5 deletions(-) commit 6e8d06d5ce57603a327129c508dea7a8a3669781 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 09:41:07 2012 -0300 cm example: Add example for BaseProtocolAddressingInterface usage. examples/cm/protocol.cpp | 32 +++++++++++++++++++++++--------- examples/cm/protocol.h | 9 ++++++++- 2 files changed, 31 insertions(+), 10 deletions(-) commit 8a408ee686e6a75861376bdbfbf2c2acacc8ebe0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 09:40:18 2012 -0300 BaseProtocolAddressingInterface: Add support for Proto.I.Addressing. TelepathyQt/BaseProtocolAddressingInterface | 13 +++ TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/base-protocol-internal.h | 25 ++++++ TelepathyQt/base-protocol.cpp | 135 ++++++++++++++++++++++++++++ TelepathyQt/base-protocol.h | 34 +++++-- TelepathyQt/types.h | 2 + 6 files changed, 203 insertions(+), 7 deletions(-) commit b412bae468047952d9d45341a7fcfe2cbae901a9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 09:37:02 2012 -0300 BaseProtocol: Add support for optional interfaces. TelepathyQt/base-protocol.cpp | 29 ++++++++++++++++++++++++++--- TelepathyQt/base-protocol.h | 3 +++ 2 files changed, 29 insertions(+), 3 deletions(-) commit 60c94fe0d40612b14f2f796319449e94624cbbc4 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 09:35:23 2012 -0300 AbstractProtocolInterface: Add base class (abstract) for BaseProtocol optional interfaces. TelepathyQt/AbstractProtocolInterface | 13 +++++++++++++ TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/base-protocol.cpp | 9 +++++++++ TelepathyQt/base-protocol.h | 18 ++++++++++++++++++ TelepathyQt/types.h | 2 ++ 5 files changed, 43 insertions(+) commit a4c73115e63bb4df160e17d4b48db8f05cd728e9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 09:26:41 2012 -0300 AbstractDBusServiceInterface: Add base class (abstract) for DBusService optional interfaces. TelepathyQt/AbstractDBusServiceInterface | 13 +++++++++++++ TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/dbus-service.cpp | 25 +++++++++++++++++++++++++ TelepathyQt/dbus-service.h | 19 +++++++++++++++++++ 4 files changed, 58 insertions(+) commit 2169b5b50ac788719930930e627b323adf14c1db Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:31:00 2012 -0300 BaseProtocol: Add more convenience methods for create. TelepathyQt/base-protocol.h | 8 ++++++++ 1 file changed, 8 insertions(+) commit d70953cef69f3ca41107c912d0cb5f541b230556 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 09:41:49 2012 -0300 BaseConnection: Add more convenience methods for create. TelepathyQt/base-connection.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 27f36c08c01d2acd72db075c4acf11cae0360291 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 08:20:47 2012 -0300 qt-svc-gen.py: Generate docs for signals. tools/qt-svc-gen.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) commit 38df46fe7e43f32764bd342e96e754e0e5ac67f2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 07:54:55 2012 -0300 qt-svc-gen.py: Generate docs for methods. tools/qt-svc-gen.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) commit be7687fc803adbc04beb31802915e10d40f6ffee Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 07:21:30 2012 -0300 qt-svc-gen.py: Generate docs for properties. tools/qt-svc-gen.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) commit 0743f89d3f8e90aef6d1d62f86e4076af34f59ea Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 07:09:22 2012 -0300 qt-svc-gen.py: Use lowerCamelCase for adaptee properties names/methods/signals. TelepathyQt/base-connection-manager-internal.h | 4 +- TelepathyQt/base-protocol-internal.h | 20 +++++----- TelepathyQt/base-protocol.cpp | 16 ++++---- TelepathyQt/base-protocol.h | 4 +- tools/qt-svc-gen.py | 54 ++++++++++++++++++-------- 5 files changed, 59 insertions(+), 39 deletions(-) commit 0156f3d42a7cb600fbc5612ea89d9202c8a57743 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 15:11:40 2012 -0300 BaseProtocol: Use callbacks. TelepathyQt/base-connection-manager.cpp | 6 +--- TelepathyQt/base-protocol.cpp | 60 +++++++++++++++++++++------------ TelepathyQt/base-protocol.h | 18 +++++++--- examples/cm/protocol.cpp | 5 +++ 4 files changed, 57 insertions(+), 32 deletions(-) commit 0ece8e40bbf697960c035032618e997fbca655a4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 15:10:38 2012 -0300 BaseCallback: Add isValid accessor. TelepathyQt/callbacks.h | 2 ++ 1 file changed, 2 insertions(+) commit b2bf8263c1ee5bf05bfb9a51bd7274a74535e018 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 15:06:27 2012 -0300 BaseProtocol: Fix getParameters to not send QVariant::Invalid for ParamSpec::defaultValue. TelepathyQt/base-protocol.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 2b52121da07bd513631affc80f041d45136d5bfb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 15:04:58 2012 -0300 BaseConnectionManager: Fix getParameters to not send QVariant::Invalid for ParamSpec::defaultValue. TelepathyQt/base-connection-manager.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 6b05068474c98286f1aec6827200968abc121551 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:04:52 2012 -0300 callbacks test: Add initial tests for the callback system. tests/CMakeLists.txt | 1 + tests/callbacks.cpp | 261 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 262 insertions(+) commit 5a5094d0e28545f3f74b6e89635d77b01c63ba1d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 00:18:02 2012 -0300 Add classes for the callback system. The callback system will be used initially by service side high-level APIs to expose methods that may/should be overriden in implementations. Ideally we'd use virtual methods for this, but as new methods can be added freely (when interfaces changes), we would not be able to guarantee a stable API/ABI. Other options were also analysed, such as virtual padding, virtual_hook as well as using Qt slots override mechanism with QMetaObject calls, but in the end they all have their own issues and we decided to go with callbacks. Usage example: // expects a method with the following signature: // void method(); Tp::Callback0 cb = memFun(myObj, &MyImpl::method); // or Tp::Callback0 cb = ptrFun(&method); // expects a method with the following signature: // char *index(const char *s, char c); Tp::Callback2 cb = memFun(myObj, &MyImpl::index); // or Tp::Callback2 cb = ptrFun(&index); TelepathyQt/CMakeLists.txt | 4 + TelepathyQt/Callbacks | 13 ++ TelepathyQt/Functors | 13 ++ TelepathyQt/callbacks.h | 386 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/functors.h | 343 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 759 insertions(+) commit f821bc8dc3f8fc7d57c437503eb56375451b7046 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:40:55 2012 -0300 BaseProtocol: Add skeleton (commented) protocol interfaces. TelepathyQt/base-protocol.h | 60 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) commit 635f804067487717adc0360872f093ed97c68c1f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:40:19 2012 -0300 DBusService: No need to check for error in registerObject as the param is mandatory. TelepathyQt/dbus-service.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) commit 295a56130d95c79a6f84edc2dd5a11fe55b76e33 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:39:00 2012 -0300 BaseConnectionManager: Always pass error to DBusService::registerObject. TelepathyQt/base-connection-manager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 8b770593792082e9de48ddbd340e3ba53c052e7a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:38:15 2012 -0300 BaseConnection: Always pass error to DBusService::registerObject. TelepathyQt/base-connection.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 2a99ef01b3fc99602894081c655b4783a89f500e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:36:31 2012 -0300 BaseConnection: Add default param to registerObject. TelepathyQt/base-connection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9813aa845089286454405d125d725f44efc319f6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:36:00 2012 -0300 BaseProtocol: No need to check for error in callbacks as they are mandatory. TelepathyQt/base-protocol.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) commit 1a1ff8851c7a7cfcced8a26f162af474e397f22e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:07:04 2012 -0300 DBusError: Disable copy. TelepathyQt/dbus-error.cpp | 14 ++------------ TelepathyQt/dbus-error.h | 13 ++++--------- 2 files changed, 6 insertions(+), 21 deletions(-) commit a4b05b4af7c06e3cbc050b1c3d0297c001309b63 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 19:05:23 2012 -0300 cm example: Reimplement BaseProtocol::identifyAccount/normalizeContact. TelepathyQt/utils.cpp | 4 ++++ examples/cm/protocol.cpp | 16 ++++++++++++++++ examples/cm/protocol.h | 4 ++-- 3 files changed, 22 insertions(+), 2 deletions(-) commit 8e714dff1697cc95b3e08e68e7169b2d39903b33 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:58:06 2012 -0300 BaseProtocol: Add Q_UNUSED(parameters) to default createConnection. TelepathyQt/base-protocol.cpp | 1 + 1 file changed, 1 insertion(+) commit e78e7f07c02f711542cbedec741268e82ced14d2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:57:40 2012 -0300 BaseProtocol: Implement Protocol.NormalizeContact support. TelepathyQt/base-protocol-internal.h | 2 +- TelepathyQt/base-protocol.cpp | 26 ++++++++++++++++++++++---- TelepathyQt/base-protocol.h | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) commit 536ef9bc9c70a1d5c4235e367f76bc3fe8fff045 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:56:51 2012 -0300 BaseProtocol: Implement Protocol.IdentifyAccount support. TelepathyQt/base-protocol.cpp | 24 +++++++++++++++++++++--- TelepathyQt/base-protocol.h | 2 +- 2 files changed, 22 insertions(+), 4 deletions(-) commit 23659b7588b6e0eba5f7925173797167ec411a93 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:33:42 2012 -0300 cm example: Add basic support for protocols. examples/cm/CMakeLists.txt | 9 ++++++- examples/cm/main.cpp | 9 +++++-- examples/cm/protocol.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++ examples/cm/protocol.h | 43 +++++++++++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 3 deletions(-) commit cd0e47214302124bd226a2acb7a4cc4984d13ab4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:32:35 2012 -0300 BaseConnectionManager: Implement ConnectionManager.RequestConnection support. TelepathyQt/base-connection-manager-internal.h | 2 +- TelepathyQt/base-connection-manager.cpp | 69 ++++++++++++++++++++++++-- TelepathyQt/base-connection-manager.h | 10 ++++ 3 files changed, 75 insertions(+), 6 deletions(-) commit 44adc6c2fbd70371dd797ee8b28c72c2d587981e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:27:19 2012 -0300 BaseConnectionManager: Properly validate protocolName on ConnectionManager.GetParameters. TelepathyQt/base-connection-manager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 383213037d594cbbc3aa92681c75a0e40e6760ed Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:26:15 2012 -0300 MethodInvocationContext: Add setFinishedWithError overload receiving a DBusError. TelepathyQt/method-invocation-context.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 7ec41e9558c3580269d6bef2506c366e59352787 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:21:35 2012 -0300 BaseProtocol: Add createConnection "virtual" slot. TelepathyQt/base-protocol.cpp | 9 +++++++++ TelepathyQt/base-protocol.h | 1 + 2 files changed, 10 insertions(+) commit 52902b5a400eb133349a6eeb8478c0519788d11a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:24:20 2012 -0300 BaseConnection: Add skeleton class. TelepathyQt/BaseConnection | 13 ++++ TelepathyQt/CMakeLists.txt | 5 ++ TelepathyQt/base-connection-internal.h | 45 ++++++++++++ TelepathyQt/base-connection.cpp | 128 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection.h | 92 ++++++++++++++++++++++++ TelepathyQt/types.h | 2 + 6 files changed, 285 insertions(+) commit c358bd350baeb5e719139f7182763bd2b1b8f8f7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:17:34 2012 -0300 BaseProtocol: Reimplement DBusService::registerObject. TelepathyQt/base-protocol.cpp | 6 ++++++ TelepathyQt/base-protocol.h | 3 +++ 2 files changed, 9 insertions(+) commit 934c73f963b4d6b02572eda7f442cd87fc7700bc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:15:54 2012 -0300 DBusService: Add optional error parameter to registerObject protected method. Also add the error parameter to BaseConnectionManager::registerObject public method. TelepathyQt/base-connection-manager.cpp | 12 ++++++------ TelepathyQt/base-connection-manager.h | 5 +++-- TelepathyQt/dbus-service.cpp | 23 ++++++++++++++++++----- TelepathyQt/dbus-service.h | 4 +++- 4 files changed, 30 insertions(+), 14 deletions(-) commit fce7836b5811396acaaa05af2eeda44090df1de5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:11:19 2012 -0300 DBusError: Add class representing a D-Bus error. TelepathyQt/CMakeLists.txt | 3 ++ TelepathyQt/DBusError | 13 +++++ TelepathyQt/dbus-error.cpp | 121 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/dbus-error.h | 66 +++++++++++++++++++++++++ 4 files changed, 203 insertions(+) commit 6a0021449b57743c4e1f53986e08e3ae7087944f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 18:29:06 2012 -0300 BaseConnectionManager: Implement ConnectionManager.ListProtocols support. TelepathyQt/base-connection-manager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit d765d997f5d79d97b5620d60c6da2aafd6f0cb32 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 13:11:02 2012 -0300 BaseConnectionManager: Implement ConnectionManager.GetParameters support. TelepathyQt/base-connection-manager-internal.h | 2 +- TelepathyQt/base-connection-manager.cpp | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) commit 24090b17bdd8a62a3870b8de124a19f0cf5f76d6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 13:10:13 2012 -0300 BaseConnectionManager: Implement ConnectionManager.Interfaces property support. TelepathyQt/base-connection-manager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 91917fff5557aefb15457a4c89813400382dc13a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 13:07:57 2012 -0300 BaseConnectionManager: Add hasProtocol/protocol convenience methods. TelepathyQt/base-connection-manager.cpp | 10 ++++++++++ TelepathyQt/base-connection-manager.h | 2 ++ 2 files changed, 12 insertions(+) commit 79f80712cf1f08918d116e2dd80b24e2c48a4230 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 12:24:40 2012 -0300 BaseConnectionManager: Implement ConnectionManager.Protocols property support. TelepathyQt/base-connection-manager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 8f4f5edbf793db7a6b08351e9b92b82a1a8ca0e6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 12:23:06 2012 -0300 BaseProtocol: Add dummy immutableProperties() accessor. TelepathyQt/base-protocol.cpp | 7 +++++++ TelepathyQt/base-protocol.h | 2 ++ 2 files changed, 9 insertions(+) commit 8cf52cc0b94e64022eddef9c3f0116faf28d3c7b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 11:26:08 2012 -0300 BaseConnectionManager: Add protocols/addProtocol methods. TelepathyQt/base-connection-manager.cpp | 44 +++++++++++++++++++++++++++++++++ TelepathyQt/base-connection-manager.h | 3 +++ TelepathyQt/base-protocol.h | 1 + 3 files changed, 48 insertions(+) commit 49842b93f9c9577a4e08222db980c087f9f57b0a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 05:17:51 2012 -0300 Add initial BaseProtocol class. TelepathyQt/BaseProtocol | 13 ++ TelepathyQt/CMakeLists.txt | 5 + TelepathyQt/base-protocol-internal.h | 73 ++++++++++++ TelepathyQt/base-protocol.cpp | 223 +++++++++++++++++++++++++++++++++++ TelepathyQt/base-protocol.h | 104 ++++++++++++++++ TelepathyQt/types.h | 2 + 6 files changed, 420 insertions(+) commit 625a0729a3a3407290586d9c3f5dbc3c4392a081 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 04:18:05 2012 -0300 qt-svc-gen.py: Make adaptee property names match the spec property names. TelepathyQt/base-connection-manager-internal.h | 4 ++-- tools/qt-svc-gen.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 7bbfcc2c76f2dadc2fdf2e0a8aae140b83a192da Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 04:09:13 2012 -0300 Types: Define DBusServicePtr. TelepathyQt/types.h | 2 ++ 1 file changed, 2 insertions(+) commit 4983148213e9b971a50205baed1715a2954770fa Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 04:07:59 2012 -0300 BaseConnectionManager: Make it a shared ptr. TelepathyQt/base-connection-manager.h | 30 ++++++++++++++++++++++++++++-- TelepathyQt/types.h | 2 ++ examples/cm/main.cpp | 2 +- 3 files changed, 31 insertions(+), 3 deletions(-) commit 112ec8ecf9bdb5d62e3379ed73a9a26d4b29b36c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 04:05:50 2012 -0300 BaseConnectionManager: Add check for IN_TP_QT_HEADER. TelepathyQt/base-connection-manager.h | 4 ++++ 1 file changed, 4 insertions(+) commit 44fa1595937a6c89f92a55157e38611e16845891 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 04:03:42 2012 -0300 BaseConnectionManager: Use DBusService. TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/base-connection-manager-internal.h | 4 +- TelepathyQt/base-connection-manager.cpp | 61 ++++++++++---------------- TelepathyQt/base-connection-manager.h | 13 ++++-- 4 files changed, 35 insertions(+), 44 deletions(-) commit 402014c335bb5791990c3d9feb24a0a14f84d9cc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 03:57:49 2012 -0300 DBusService: Add initial base class for services. TelepathyQt/CMakeLists.txt | 10 ++-- TelepathyQt/DBusService | 13 +++++ TelepathyQt/dbus-service.cpp | 114 +++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/dbus-service.h | 67 +++++++++++++++++++++++++ 4 files changed, 201 insertions(+), 3 deletions(-) commit 8f71dce9986940f69a7c39a777e454d76c4d8d37 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 29 18:18:44 2012 -0300 BaseConnectionManager: Add name and isRegistered accessors. TelepathyQt/base-connection-manager.cpp | 25 ++++++++++++++++++------- TelepathyQt/base-connection-manager.h | 4 +++- 2 files changed, 21 insertions(+), 8 deletions(-) commit 50d6f0dc13c2d4c1c5a86371de612004f59c843c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 29 18:09:01 2012 -0300 Properly install service generated headers. TelepathyQt/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) commit 2defc720c08392d38ed58556d87d5b1ea20c3340 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 29 17:57:17 2012 -0300 Remove separation from client and service side high-level APIs. To be more consitent with how client side is implemented, the service side high-level classes are now moved to the TelepathyQt dir, removing the separate Service dir. Library specific globals (TP_QT_EXPORT, etc) are now shared between tp-qt-service and tp-qt. The plan is to merge both libraries into tp-qt in the future, when the service side bindings are API/ABI stable. TelepathyQt/AbstractAdaptor | 13 ++ TelepathyQt/BaseConnectionManager | 13 ++ TelepathyQt/CMakeLists.txt | 128 ++++++++++++++++- TelepathyQt/Service/AbstractAdaptor | 13 -- TelepathyQt/Service/BaseConnectionManager | 13 -- TelepathyQt/Service/CMakeLists.txt | 131 ------------------ TelepathyQt/Service/Global | 13 -- .../Service/TelepathyQtService-uninstalled.pc.in | 11 -- TelepathyQt/Service/TelepathyQtService.pc.in | 11 -- .../Service/TelepathyQtServiceConfig.cmake.in | 22 --- TelepathyQt/Service/abstract-adaptor.cpp | 77 ----------- TelepathyQt/Service/abstract-adaptor.h | 64 --------- .../Service/base-connection-manager-internal.h | 70 ---------- TelepathyQt/Service/base-connection-manager.cpp | 153 --------------------- TelepathyQt/Service/base-connection-manager.h | 57 -------- TelepathyQt/Service/global.h | 46 ------- TelepathyQt/TelepathyQtService-uninstalled.pc.in | 11 ++ TelepathyQt/TelepathyQtService.pc.in | 11 ++ TelepathyQt/TelepathyQtServiceConfig.cmake.in | 22 +++ TelepathyQt/abstract-adaptor.cpp | 74 ++++++++++ TelepathyQt/abstract-adaptor.h | 61 ++++++++ TelepathyQt/base-connection-manager-internal.h | 66 +++++++++ TelepathyQt/base-connection-manager.cpp | 150 ++++++++++++++++++++ TelepathyQt/base-connection-manager.h | 54 ++++++++ cmake/modules/TpQtMacros.cmake | 10 +- examples/cm/CMakeLists.txt | 22 +-- examples/cm/main.cpp | 3 +- tools/qt-svc-gen.py | 24 ++-- 28 files changed, 633 insertions(+), 710 deletions(-) commit ab36ec6f15e8ab2af32be862bcc6a13d4bffaf88 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:51:10 2012 -0200 qt-svc-gen.py: Automatically raise NotImplemented when adaptee does not implement a method. tools/qt-svc-gen.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) commit 7d9b4b9e6cb2ad5281d58b0e9312f415456ae86c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:21:18 2012 -0200 qt-svc-gen.py: Properly indent properties setter declarations. tools/qt-svc-gen.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 839a95f7eed803433aba69759c6a8a4a5d88c2bb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:16:48 2012 -0200 Generate adaptors for Connection and Channel interfaces. TelepathyQt/Service/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 9a2cd057c158a4490988ce9e1a5ea845c713a98f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:16:21 2012 -0200 qt-svc-gen.py: No need to "return void()" in void methods. tools/qt-svc-gen.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) commit 3ae56c1bf70ca62070990ff48b0316cc77b9afbd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:14:36 2012 -0200 qt-svc-gen.py: Rename QDBusMessage &message param to dbusMessage to avoid (lower risk of) conflicts with method argument names. tools/qt-svc-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 01fdb414d26edcd7bbad228a705f514ec498b929 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:13:48 2012 -0200 qt-svc-gen.py: Properly declarate property setter. tools/qt-svc-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8fb63e3de0a14e18d353974983b6d08b2dd03619 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 01:12:49 2012 -0200 qt-svc-gen.py: Properly generate MethodInvocationContext typedef for void methods. tools/qt-svc-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 239ea2b13bab93b2f86f2fee92b1d40e60816bbf Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:36:16 2012 -0200 cm example: Add basic example using BaseConnectionManager. examples/CMakeLists.txt | 1 + examples/cm/CMakeLists.txt | 11 +++++++++++ examples/cm/main.cpp | 26 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) commit 918f20db36de932cb7ef7f42a085ceb75ef4f2f7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:35:33 2012 -0200 Add initial BaseConnectionManager class. TelepathyQt/Service/BaseConnectionManager | 13 ++ TelepathyQt/Service/CMakeLists.txt | 6 +- .../Service/base-connection-manager-internal.h | 70 ++++++++++ TelepathyQt/Service/base-connection-manager.cpp | 153 +++++++++++++++++++++ TelepathyQt/Service/base-connection-manager.h | 57 ++++++++ 5 files changed, 298 insertions(+), 1 deletion(-) commit 2a76999fbfacfb6549c699e303ce8b9c1d9e292b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:33:07 2012 -0200 Service: Add dependencies to doxygen-doc target. TelepathyQt/Service/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 157f8b4282d7d7c8959468d5d954b237eed1f294 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:32:37 2012 -0200 Service: Generate adaptors for ConnectionManager interfaces. TelepathyQt/Service/CMakeLists.txt | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) commit 17cf6add7988a9d28ca91a899cc96114c1151ae5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:28:31 2012 -0200 TpQtMacros.cmake: Add macro for generating service side adaptors. cmake/modules/TpQtMacros.cmake | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) commit bf93df3ba69dc91b7f23dce0d099f3c420401ba3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:25:52 2012 -0200 qt-svc-gen.py: Add initial service side (adaptors) generator. tools/qt-svc-gen.py | 598 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 598 insertions(+) commit 08f33874b393f0fbbf4ff3543b1c6a9aadbbad3c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:25:20 2012 -0200 libqtcodegen.py: Allow prettyinclude to be optional in get_headerfile_cmd. tools/libqtcodegen.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit d2efdca99517ae6906d3f1d35cf3edb55939890c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:23:11 2012 -0200 Service: Do not define QT_NO_KEYWORDS. TelepathyQt/Service/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a114d09e0f516232fea63721ac015dad0fa1c980 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 16 00:20:56 2012 -0200 TpQtMacros.cmake: Remove redundant call to append generated file to telepathy_qt_SRCS. cmake/modules/TpQtMacros.cmake | 1 - 1 file changed, 1 deletion(-) commit 5ce108ed5b2ca19f241b2c8664ea4f40dbcaeed9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 16:59:22 2012 -0200 Service/AbstractAdaptor: Add QDBusConnection constructor param and accessor. TelepathyQt/Service/abstract-adaptor.cpp | 18 ++++++++++++++---- TelepathyQt/Service/abstract-adaptor.h | 6 +++++- 2 files changed, 19 insertions(+), 5 deletions(-) commit 0be680ffb5aed2d454c383c54f9dcf54107f8bc7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 13:19:11 2012 -0200 Service: Remove stub class. TelepathyQt/Service/stub.cpp | 7 ------- 1 file changed, 7 deletions(-) commit 3fd500b326c229ed6dc928e76d5fa705c0f1a7f7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 13:16:39 2012 -0200 Service/AbstractAdaptor: Add base class for autogenerated adaptors. TelepathyQt/Service/AbstractAdaptor | 13 +++++++ TelepathyQt/Service/CMakeLists.txt | 23 ++++++++++- TelepathyQt/Service/abstract-adaptor.cpp | 67 ++++++++++++++++++++++++++++++++ TelepathyQt/Service/abstract-adaptor.h | 60 ++++++++++++++++++++++++++++ 4 files changed, 161 insertions(+), 2 deletions(-) commit 5ce6997fb51a774e6e86a0efb0bf3c0ad36ede0e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 12:44:39 2012 -0200 Service/Global: Fix header guard. TelepathyQt/Service/Global | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 59b8363b2f9c8b53020b0e732f2f0d6069bdc115 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 12:44:23 2012 -0200 Service/global.h: Update copyright notice. TelepathyQt/Service/global.h | 1 + 1 file changed, 1 insertion(+) commit 226a32b99c5ce19622a445a6095cbc4808a08b1e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 13:15:10 2012 -0200 Service: Build only a static telepathy-qt*-service library until we have a stable API/ABI. TelepathyQt/Service/CMakeLists.txt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) commit 1bd6152ab0ca641cb9cfc4bb2be17294905d64e6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 3 13:11:30 2012 -0200 debug-internal: Properly #include to use TP_QT_EXPORT. TelepathyQt/debug-internal.h | 2 ++ 1 file changed, 2 insertions(+) commit e4476d316bbe4919d36fdd638b5349b12850a2ea Author: Dario Freddi Date: Mon Jan 30 16:09:11 2012 +0100 Include the correct path in Global TelepathyQt/Service/Global | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9fb669e3107f7254033e57318b078d51f6aeb478 Author: Dario Freddi Date: Mon Jan 30 15:59:09 2012 +0100 Add a stub for the Service library TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/Service/CMakeLists.txt | 74 ++++++++++++++++++++++ TelepathyQt/Service/Global | 13 ++++ .../Service/TelepathyQtService-uninstalled.pc.in | 11 ++++ TelepathyQt/Service/TelepathyQtService.pc.in | 11 ++++ .../Service/TelepathyQtServiceConfig.cmake.in | 22 +++++++ TelepathyQt/Service/global.h | 45 +++++++++++++ TelepathyQt/Service/stub.cpp | 7 ++ 8 files changed, 184 insertions(+) commit 77cc2188ed70f1e15b5d21269f035c1507e97185 Author: Dario Freddi Date: Mon Jan 30 15:38:26 2012 +0100 Add an option for enabling experimental service-side support CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) commit 1bf4422e80d7a817f7252c666a47488d9471692f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 15:09:39 2012 -0300 Utils: Export variantTypeFromDBusSignature and parseValueWithDBusSignature to be used by service side bindings. TelepathyQt/manager-file.cpp | 73 +----------------------------------------- TelepathyQt/manager-file.h | 5 --- TelepathyQt/profile.cpp | 8 ++--- TelepathyQt/utils.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++- TelepathyQt/utils.h | 5 +++ 5 files changed, 85 insertions(+), 82 deletions(-) commit 1b4815531288feaba5c543485a7b5b198e53c39e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 29 18:10:12 2012 -0300 Utils: Export checkValidProtocolName to be used by service side bindings. TelepathyQt/connection-manager.cpp | 28 +--------------------------- TelepathyQt/utils.cpp | 22 ++++++++++++++++++++++ TelepathyQt/utils.h | 2 ++ 3 files changed, 25 insertions(+), 27 deletions(-) commit 64272ca772b53428db7c971133eac93854494b65 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 2 10:25:36 2012 -0300 PresenceSpecList: Add bareSpecs convenience method. TelepathyQt/presence.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit 5ab3a2c5f57dcfc4ca427289491c4c178f50d257 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:43:24 2012 -0300 ProtocolParameter: Expose constructors and add new constructor/accessor using ParamSpec. TelepathyQt/protocol-info.cpp | 4 +- TelepathyQt/protocol-parameter.cpp | 100 ++++++++++++++++++++++++++++--------- TelepathyQt/protocol-parameter.h | 17 +++++-- 3 files changed, 91 insertions(+), 30 deletions(-) commit fe8b98f52a2fed0b9f07bb7c85d1a66902598ad9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 23 11:08:38 2012 -0300 Start 0.9.2 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 50d668ff9eaca2c54e6e8057304ecbae065f5322 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 23 10:53:19 2012 -0300 Prepare release 0.9.1 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 615a3773587ad8ff36befd3dc9a0c671c6323240 Merge: 19fb762 bda2cdb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 22 20:21:33 2012 -0300 Merge remote-tracking branch 'gkiagia/farstream-fix' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit bda2cdb72b77b2d3cbb705b9ebe49efe6bf6f663 Author: George Kiagiadakis Date: Thu Mar 22 23:33:26 2012 +0200 farstream: Fix TpCallChannel creation. Apparently tp_channel_new does not create a TpCallChannel subclass, but tp-farstream, unlike tp-farsight, explicitly requires a TpCallChannel. TelepathyQt/Farstream/channel.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) commit 19fb762b183e701666f76521c59c63132777cf9c Merge: ab7b024 a439c6e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 22 12:36:13 2012 -0300 Merge branch 'chan-group-test-fix' Reviewed-by: Dario Freddi commit ab7b02446184b746e8645cc62f77514c1f41a38c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 22 12:35:26 2012 -0300 Update NEWS NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit a439c6ea1ca03736934dbe88a6dd64938257338c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 22 12:22:54 2012 -0300 chan-group test: Fix bug where test was failing with tp-glib >= 0.16.2. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-group.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 862bda590b0e169ae6b941e4226af2433d008b8c Merge: 283b8b1 2af0dc5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 22 11:41:21 2012 -0300 Merge remote-tracking branch 'gkiagia/call1' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 2af0dc5d73c9234337d8ec3130a0a2df9201505f Author: George Kiagiadakis Date: Thu Mar 22 15:02:36 2012 +0200 cmake: Allow *Config.cmake scripts to be executed twice, the second time without any effect This is because: 1) cmake fails to import the same targets twice (in TelepathyQt4Config.cmake), which breaks for sure TpQtFsConfig.cmake in case you try to do this: find_package(TelepathyQt4 REQUIRED) find_package(TelepathyQt4Farstream REQUIRED) 2) there is no need to add extra overhead to the execution of cmake if the project is asking to find TpQt more than once. .../Farsight/TelepathyQtFarsightConfig.cmake.in | 32 +++++++++-------- .../Farstream/TelepathyQtFarstreamConfig.cmake.in | 32 +++++++++-------- TelepathyQt/TelepathyQtConfig.cmake.in | 40 ++++++++++++---------- 3 files changed, 55 insertions(+), 49 deletions(-) commit 05d224ce86089cc167229b08f37118ffbc466e55 Author: George Kiagiadakis Date: Wed Mar 21 17:24:57 2012 +0200 CallChannel: Introspect immutable properties if they are not passed on the constructor TelepathyQt/call-channel.cpp | 121 ++++++++++++++++++++++++++++++++++--------- TelepathyQt/call-channel.h | 4 +- tests/dbus/call-channel.cpp | 65 ++++++++++++++++++++--- 3 files changed, 157 insertions(+), 33 deletions(-) commit ee1eb6668ab42a2ab0bafb5284352c216ebb6658 Author: George Kiagiadakis Date: Wed Mar 21 15:57:44 2012 +0200 farstream: Fix namespace opening coding style TelepathyQt/Farstream/channel.cpp | 6 ++++-- TelepathyQt/Farstream/channel.h | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) commit a92fa56b4de87acf4f90cc93ff2697035209c3a1 Author: George Kiagiadakis Date: Wed Mar 21 15:53:34 2012 +0200 farstream: Add some debug warnings in early returns TelepathyQt/Farstream/channel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit e6f4bd8b085f75f8fe25bd705b6e9755a9676f57 Author: George Kiagiadakis Date: Wed Mar 21 15:46:56 2012 +0200 Farstream/CMakeLists.txt: remove yell relic from comment TelepathyQt/Farstream/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 52e6f44ca951ac7f10142b24e48473ee270c203d Author: George Kiagiadakis Date: Wed Mar 21 15:46:18 2012 +0200 pkgconfig: Do not hardcode the tp-glib and tp-fs versions in the .pc.in files TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in | 2 +- TelepathyQt/Farsight/TelepathyQtFarsight.pc.in | 2 +- TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in | 2 +- TelepathyQt/Farstream/TelepathyQtFarstream.pc.in | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 0c6aa1a07ce3392e99398125fc7f71ab2b4a749d Author: George Kiagiadakis Date: Wed Mar 21 15:45:12 2012 +0200 CMakeLists.txt: Do not hardcode required min version in the macro_log_feature messages CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ee6a410072e1e9587d28c537c1dcbc9e35f7b9eb Author: George Kiagiadakis Date: Mon Mar 19 19:22:59 2012 +0200 call1: Use *Interface::requestAllProperties/requestPropertyFoo instead of Properties::Get* TelepathyQt/call-channel.cpp | 105 ++++++++++++++++++------------------------- TelepathyQt/call-channel.h | 6 +-- TelepathyQt/call-content.cpp | 35 +++++++-------- TelepathyQt/call-content.h | 2 +- TelepathyQt/call-stream.cpp | 36 +++++++-------- TelepathyQt/call-stream.h | 2 +- 6 files changed, 79 insertions(+), 107 deletions(-) commit 4e36e7c4128602d94fb73265ff209707a5951775 Author: George Kiagiadakis Date: Thu Mar 15 13:31:21 2012 +0200 farstream: Put everything in the Farstream namespace and strip Tf from names. TelepathyQt/Farstream/CMakeLists.txt | 2 +- TelepathyQt/Farstream/PendingChannel | 13 +++++++++++++ TelepathyQt/Farstream/PendingTfChannel | 13 ------------- TelepathyQt/Farstream/channel.cpp | 29 +++++++++++++++-------------- TelepathyQt/Farstream/channel.h | 17 +++++++++-------- 5 files changed, 38 insertions(+), 36 deletions(-) commit c16ff427fde0461d667c46c3dbeb77f42c6cce2d Author: George Kiagiadakis Date: Thu Mar 15 13:15:59 2012 +0200 farstream: Remove the Farstream/Types and Farstream/types.h headers. TelepathyQt/Farstream/CMakeLists.txt | 4 +--- TelepathyQt/Farstream/Types | 13 ------------ TelepathyQt/Farstream/channel.h | 2 +- TelepathyQt/Farstream/types.h | 39 ------------------------------------ 4 files changed, 2 insertions(+), 56 deletions(-) commit 008eed6067edd388a9f6b662dab0cabae8e38e36 Author: George Kiagiadakis Date: Thu Mar 15 12:58:20 2012 +0200 PendingTfChannel: Add a callChannel() method to return the CallChannel. TelepathyQt/Farstream/channel.cpp | 5 +++++ TelepathyQt/Farstream/channel.h | 1 + 2 files changed, 6 insertions(+) commit b7b3ff7727d2c00d971e1c7d118b1222e52fd47d Author: George Kiagiadakis Date: Thu Mar 15 12:57:37 2012 +0200 farstream: Remove the FarstreamChannelFactory class to make the api simpler. TelepathyQt/Farstream/channel.cpp | 35 +++++++++-------------------------- TelepathyQt/Farstream/channel.h | 22 +++------------------- 2 files changed, 12 insertions(+), 45 deletions(-) commit 68fe68373c8ead43f954d947797c193ce7597e0c Author: George Kiagiadakis Date: Wed Mar 14 18:47:16 2012 +0200 Farstream/Channel: Use tf_channel_new_finish() from tp-fs 0.2.2. CMakeLists.txt | 4 ++-- TelepathyQt/Farstream/channel.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) commit 485f57a2626672f8c697946bdaf6ae872b41983f Author: George Kiagiadakis Date: Wed Mar 14 18:46:24 2012 +0200 farstream: s/qDebug/debug/ and remove useless debug messages TelepathyQt/Farstream/channel.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 5ad2d0c3a0776f4bb8619aaf07975ca70620e724 Author: George Kiagiadakis Date: Wed Mar 14 16:37:20 2012 +0200 farstream: Port the farstream lib away from tp-qt4-yell and integrate it into the build system. CMakeLists.txt | 23 +++++++ TelepathyQt/CMakeLists.txt | 2 +- TelepathyQt/Farstream/CMakeLists.txt | 80 ++++++++++++++++------ TelepathyQt/Farstream/Channel | 12 ++-- TelepathyQt/Farstream/Global | 12 ++-- TelepathyQt/Farstream/PendingTfChannel | 12 ++-- .../TelepathyQt4YellFarstream-uninstalled.pc.in | 11 --- .../Farstream/TelepathyQt4YellFarstream.pc.in | 11 --- .../TelepathyQtFarstream-uninstalled.pc.in | 11 +++ TelepathyQt/Farstream/TelepathyQtFarstream.pc.in | 11 +++ .../Farstream/TelepathyQtFarstreamConfig.cmake.in | 22 ++++++ TelepathyQt/Farstream/Types | 12 ++-- TelepathyQt/Farstream/channel.cpp | 26 +++---- TelepathyQt/Farstream/channel.h | 28 ++++---- TelepathyQt/Farstream/global.h | 26 +++---- TelepathyQt/Farstream/types.h | 20 +++--- cmake/modules/FindFarstream.cmake | 50 ++++++++++++++ cmake/modules/FindTelepathyFarstream.cmake | 50 ++++++++++++++ 18 files changed, 300 insertions(+), 119 deletions(-) commit 3853ee8f1c98385117b4d12346e8dcc35b539c61 Author: George Kiagiadakis Date: Wed Mar 14 15:29:52 2012 +0200 farstream: Import the farstream library from telepathy-qt4-yell. TelepathyQt/Farstream/CMakeLists.txt | 66 +++++++++ TelepathyQt/Farstream/Channel | 13 ++ TelepathyQt/Farstream/Global | 13 ++ TelepathyQt/Farstream/PendingTfChannel | 13 ++ .../TelepathyQt4YellFarstream-uninstalled.pc.in | 11 ++ .../Farstream/TelepathyQt4YellFarstream.pc.in | 11 ++ TelepathyQt/Farstream/Types | 13 ++ TelepathyQt/Farstream/channel.cpp | 164 +++++++++++++++++++++ TelepathyQt/Farstream/channel.h | 80 ++++++++++ TelepathyQt/Farstream/global.h | 45 ++++++ TelepathyQt/Farstream/types.h | 39 +++++ 11 files changed, 468 insertions(+) commit 5a37d43187405029d6c3d138d0ce2619d8531e0b Author: George Kiagiadakis Date: Thu Mar 15 13:12:45 2012 +0200 call1: s/MediaCall/Call/g in all the call-related methods of ChannelFactory/ChannelClassSpec TelepathyQt/channel-class-spec.cpp | 8 ++++---- TelepathyQt/channel-class-spec.h | 12 ++++++------ TelepathyQt/channel-factory.cpp | 8 ++++---- TelepathyQt/channel-factory.h | 10 +++++----- 4 files changed, 19 insertions(+), 19 deletions(-) commit e9fc97977962d654969f1adee1c0fb9ac68d013d Author: George Kiagiadakis Date: Wed Mar 14 13:11:01 2012 +0200 account.cpp: Update copyright TelepathyQt/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 79d7d6d2c5a86ad5650f19771cf434cd89019e53 Author: George Kiagiadakis Date: Wed Mar 14 12:35:30 2012 +0200 CallContent: Use hasInterface() instead of interfaces().contains() in supportsDTMF(). TelepathyQt/call-content.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1559e6c0ad1a4d21c7b9b5d2f538d36f4565f400 Author: George Kiagiadakis Date: Wed Mar 14 12:30:47 2012 +0200 call1: Remove unnecessary use of QLatin1String() with TP_QT_* constants. TelepathyQt/call-channel.cpp | 8 +++----- TelepathyQt/call-content.cpp | 3 +-- 2 files changed, 4 insertions(+), 7 deletions(-) commit 8a6df5994736572db7d7e96622800e0026865349 Author: George Kiagiadakis Date: Wed Mar 14 12:11:54 2012 +0200 Account: Fix copy/paste mistake: s/audioName/videoName/g TelepathyQt/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e72eae06b47946ce9caacf737a45346633a687d7 Author: George Kiagiadakis Date: Wed Mar 14 12:10:31 2012 +0200 call1: Add PendingCallContent pretty header. TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/PendingCallContent | 13 +++++++++++++ 2 files changed, 14 insertions(+) commit aacb5b8e39171597f33012a716f291dabc767c47 Author: George Kiagiadakis Date: Wed Mar 14 12:07:53 2012 +0200 call1: Move PendingCallContent to call-content.{h,cpp} TelepathyQt/call-channel.cpp | 98 -------------------------------------------- TelepathyQt/call-channel.h | 27 ------------ TelepathyQt/call-content.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/call-content.h | 27 ++++++++++++ 4 files changed, 125 insertions(+), 125 deletions(-) commit 45278044e9f53ee800b36b3b066e1a34e994e320 Author: George Kiagiadakis Date: Thu Feb 23 01:05:47 2012 +0200 test-call-channel: add unit test for CallContent's DTMF methods tests/dbus/call-channel.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) commit 4f87f7855fa1af6ad098c80107a964446dbae55c Author: George Kiagiadakis Date: Thu Feb 23 01:05:33 2012 +0200 CallContent: add DTMF methods TelepathyQt/call-content.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/call-content.h | 4 +++ 2 files changed, 76 insertions(+) commit 1d502d0300c57480634b9dd50215f93050959657 Author: George Kiagiadakis Date: Wed Feb 22 23:55:47 2012 +0200 CallChannel: update documentation TelepathyQt/call-channel.cpp | 135 +++++++++++++++++++++++++++++++------------ 1 file changed, 97 insertions(+), 38 deletions(-) commit a0d6d35c02cabfec82325b7c7f89ce2463d2309d Author: George Kiagiadakis Date: Wed Feb 22 22:05:37 2012 +0200 CallChannel: add a contentByName() method Since the name of contents is significant and can even be requested when creating the channel for the initial contents, it is probably useful to be able to retrieve a content given its name. TelepathyQt/call-channel.cpp | 24 ++++++++++++++++++++++++ TelepathyQt/call-channel.h | 1 + tests/dbus/call-channel.cpp | 1 + 3 files changed, 26 insertions(+) commit 4fcff359b6a5737d91edbc6ca5b17d7613575e85 Author: George Kiagiadakis Date: Wed Feb 22 21:54:49 2012 +0200 test-call-channel: test FeatureCallMembers tests/dbus/call-channel.cpp | 142 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) commit 8c6ae1508fb5e71954f2698615dbb57901989eb8 Author: George Kiagiadakis Date: Wed Feb 22 21:50:40 2012 +0200 CallStream: merge back from CallChannel the changes in remote member handling The code that handles remote members in CallChannel was originally copied from CallStream, but was modified a bit to fix some mistakes. This commit merges back those changes to CallStream, so that the logic is identical. TelepathyQt/call-stream.cpp | 48 ++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 22 deletions(-) commit d9dd246228a8c4d8e7cfb93c07d7e210310d4d74 Author: George Kiagiadakis Date: Wed Feb 22 21:49:12 2012 +0200 CallChannel: implement FeatureCallMembers TelepathyQt/call-channel.cpp | 275 ++++++++++++++++++++++++++++++++++++++++++- TelepathyQt/call-channel.h | 21 +++- 2 files changed, 290 insertions(+), 6 deletions(-) commit 85755b41410c0c90e505c970e305a750042ef1ac Author: George Kiagiadakis Date: Wed Feb 22 17:37:54 2012 +0200 Account: add methods to ensure/create Call channels TelepathyQt/account.cpp | 470 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/account.h | 66 +++++++ TelepathyQt/call-channel.h | 1 - 3 files changed, 536 insertions(+), 1 deletion(-) commit 1e53279abb0c7fa23b65faa03e008cc1e3f29675 Author: George Kiagiadakis Date: Tue Feb 21 19:26:29 2012 +0200 tests: add unit test for the Call* classes tests/dbus/CMakeLists.txt | 1 + tests/dbus/call-channel.cpp | 694 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 695 insertions(+) commit 3c6faf52cd88ed1db72609014e83bd3de5f9ea3f Author: George Kiagiadakis Date: Tue Feb 21 19:25:36 2012 +0200 tests: import the example call CM from tp-glib tests/lib/glib/CMakeLists.txt | 2 + tests/lib/glib/call/CMakeLists.txt | 20 + tests/lib/glib/call/call-channel.c | 841 +++++++++++++++++++++++++++++++ tests/lib/glib/call/call-channel.h | 67 +++ tests/lib/glib/call/call-content.c | 103 ++++ tests/lib/glib/call/call-content.h | 82 +++ tests/lib/glib/call/call-manager.c | 536 ++++++++++++++++++++ tests/lib/glib/call/call-manager.h | 71 +++ tests/lib/glib/call/call-stream.c | 481 ++++++++++++++++++ tests/lib/glib/call/call-stream.h | 80 +++ tests/lib/glib/call/cm.c | 82 +++ tests/lib/glib/call/cm.h | 73 +++ tests/lib/glib/call/conn.c | 427 ++++++++++++++++ tests/lib/glib/call/conn.h | 80 +++ tests/lib/glib/call/example_call.manager | 25 + tests/lib/glib/call/protocol.c | 186 +++++++ tests/lib/glib/call/protocol.h | 64 +++ 17 files changed, 3220 insertions(+) commit 9e721a9cb329b7b042b59a511e6f6c53ecf9763e Author: George Kiagiadakis Date: Tue Feb 21 18:51:04 2012 +0200 CallChannel: print warnings when methods are called without their required features being ready TelepathyQt/call-channel.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit 9a1e5262888fabc17cf1b9ae9373c98ffb5c4293 Author: George Kiagiadakis Date: Tue Feb 21 18:38:47 2012 +0200 CallChannel: Get immutable properties directly from the constructor and reduce FeatureCore to a stub TelepathyQt/call-channel.cpp | 82 +++++++++++++------------------------------- TelepathyQt/call-channel.h | 2 -- 2 files changed, 23 insertions(+), 61 deletions(-) commit 4fe334219c5371d796aecf7415df7c5bb56ca223 Author: George Kiagiadakis Date: Tue Feb 21 13:18:36 2012 +0200 CallContent: add remove() method TelepathyQt/call-content.cpp | 12 ++++++++++++ TelepathyQt/call-content.h | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) commit e4c6ce30f639905a35031aece103b93c18dc2d5e Author: George Kiagiadakis Date: Mon Feb 20 22:19:36 2012 +0200 ChannelFactory: add missing methods and fix details related to CallChannel TelepathyQt/channel-factory.cpp | 17 ++++++++++++++++- TelepathyQt/channel-factory.h | 4 ++++ 2 files changed, 20 insertions(+), 1 deletion(-) commit 178a7fa7af5b248f8e179de67073ac1513cadcee Author: George Kiagiadakis Date: Mon Feb 20 22:15:05 2012 +0200 call1: fix the channel class specs and capabilities to comply with the spec According to the spec, Call1 channels are not allowed to have neither InitialAudio nor InitialVideo and the RequestableChannelClasses must either have InitialVideo fixed and InitialAudio allowed or vice versa. TelepathyQt/capabilities-base.cpp | 22 +----- TelepathyQt/capabilities-base.h | 1 - TelepathyQt/channel-class-spec.cpp | 15 ---- TelepathyQt/channel-class-spec.h | 1 - TelepathyQt/requestable-channel-class-spec.cpp | 104 +++---------------------- TelepathyQt/requestable-channel-class-spec.h | 13 +--- 6 files changed, 19 insertions(+), 137 deletions(-) commit c9d12315b0383e75fa81919516224b331888ac01 Author: George Kiagiadakis Date: Mon Feb 20 20:48:15 2012 +0200 call1: hide all the private symbols from the Call* classes TelepathyQt/call-channel.h | 31 ++++++++++++++++--------------- TelepathyQt/call-content.h | 13 +++++++------ TelepathyQt/call-stream.h | 12 ++++++------ 3 files changed, 29 insertions(+), 27 deletions(-) commit 50b38d0bcf104904031ec8535d3517d2d3e097c6 Author: George Kiagiadakis Date: Mon Feb 20 20:28:53 2012 +0200 CallChannel: prepend "call" to all the state-related methods' names This change was made because state() and flags() are too generic names and could possibly clash with functions with the same name in a superclass or subclass in the future. TelepathyQt/call-channel.cpp | 12 ++++++------ TelepathyQt/call-channel.h | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) commit a9dbf1d091606ef80db8253bde2bc0f0a4be97b0 Author: George Kiagiadakis Date: Mon Feb 20 20:20:59 2012 +0200 CallChannel: sort out the various Features This adds 2 new features whose functionality was previously in FeatureContents: * FeatureCore: introspects the immutable properties * FeatureCallState: introspects the properties related to the call state and enables the stateChanged / flagsChanged signals. TelepathyQt/call-channel.cpp | 193 +++++++++++++++++++++++++++++++++---------- TelepathyQt/call-channel.h | 32 +++++-- 2 files changed, 171 insertions(+), 54 deletions(-) commit e761e2a00e4ae834fdbf0c8faa9d8ec4899511d6 Author: George Kiagiadakis Date: Mon Feb 20 19:29:06 2012 +0200 CallChannel: add a flagsChanged() signal TelepathyQt/call-channel.cpp | 12 +++++++++++- TelepathyQt/call-channel.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) commit e551ac4c1c9d91ccb62890eff463023d13faad6b Author: George Kiagiadakis Date: Mon Feb 20 17:18:39 2012 +0200 CallChannel: add reason in contentRemoved() TelepathyQt/call-channel.cpp | 7 ++++--- TelepathyQt/call-channel.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) commit 2918fb721a600693e1f23b6886a7b634bb10e3b5 Author: George Kiagiadakis Date: Mon Feb 20 12:29:33 2012 +0200 CallContent: fix header name in the documentation TelepathyQt/call-content.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e399695bfd6ff5a0684aa62ad758d956a8e0e282 Author: George Kiagiadakis Date: Mon Feb 20 12:29:11 2012 +0200 CallContent: add reason in streamRemoved() TelepathyQt/call-content.cpp | 5 +++-- TelepathyQt/call-content.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) commit e9f8b448e8483b918ae08e48dc84158479f29ae7 Author: George Kiagiadakis Date: Thu Feb 16 14:17:26 2012 +0200 CallStream: bind and use the CanRequestReceiving property TelepathyQt/call-stream.cpp | 22 ++++++++++++++++++++++ TelepathyQt/call-stream.h | 1 + 2 files changed, 23 insertions(+) commit 16d203edc4eae0501c9fb38e5eb5ffdb7105151a Author: George Kiagiadakis Date: Thu Feb 16 14:00:43 2012 +0200 CallStream: make use of RemoteMemberIdentifiers TelepathyQt/call-stream.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) commit 14dd2012a069622dadcc3f45e978f5c58340c4c4 Author: George Kiagiadakis Date: Thu Feb 16 13:47:52 2012 +0200 CallStream: update documentation TelepathyQt/call-stream.cpp | 53 +++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 28 deletions(-) commit 8db158f1d409cccefe00917c5436896dd39fbeb0 Author: George Kiagiadakis Date: Thu Feb 16 13:46:57 2012 +0200 CallStream: rename members() to remoteMembers() This is to make it more clear that this set does not include the self contact. TelepathyQt/call-stream.cpp | 2 +- TelepathyQt/call-stream.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 2ae6538bbe589d090ee1640853e8a4b9dd39d881 Author: George Kiagiadakis Date: Thu Feb 16 13:45:49 2012 +0200 CallStream: fix memory leak TelepathyQt/call-stream.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 9bf9f7a95a0594e0f06e48e442dc15864861611d Author: George Kiagiadakis Date: Thu Feb 16 13:44:49 2012 +0200 CallStream: make use of the CallStateReason in the signals TelepathyQt/call-stream.cpp | 22 +++++++++++++++------- TelepathyQt/call-stream.h | 9 ++++++--- 2 files changed, 21 insertions(+), 10 deletions(-) commit 041895960a78d80b678875d1e4aaa0c4087c6b96 Author: George Kiagiadakis Date: Thu Feb 16 13:31:36 2012 +0200 call1: replace qDebug()/qWarning() with debug()/warning() in the code imported from yell TelepathyQt/call-channel.cpp | 32 +++++++++++++++++--------------- TelepathyQt/call-content.cpp | 14 ++++++++------ TelepathyQt/call-stream.cpp | 12 +++++++----- 3 files changed, 32 insertions(+), 26 deletions(-) commit 51f7291c8e7603ac490bb98a8d33ab3e843993ad Author: George Kiagiadakis Date: Thu Feb 16 00:08:00 2012 +0200 CallChannel: Add default parameters in the hangup() method Normally a handler should call hangup() with these parameters, except in very special cases. TelepathyQt/call-channel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 641b23c58335c31949c178239004d96f16c9d06b Author: George Kiagiadakis Date: Thu Feb 16 00:01:15 2012 +0200 CallChannel: Add the setRinging()/setQueued() methods TelepathyQt/call-channel.cpp | 17 +++++++++++++++++ TelepathyQt/call-channel.h | 2 ++ 2 files changed, 19 insertions(+) commit afe69384ac57824f6bd25664b048e7cbd085c427 Author: George Kiagiadakis Date: Wed Feb 15 22:18:35 2012 +0200 call1: update existing classes to work with the latest Call1 spec TelepathyQt/call-channel.cpp | 24 +++++++++++++----------- TelepathyQt/call-channel.h | 7 ++++--- TelepathyQt/call-content.cpp | 7 ++++--- TelepathyQt/call-content.h | 2 +- TelepathyQt/call-stream.cpp | 15 +++++++++------ TelepathyQt/call-stream.h | 6 ++++-- 6 files changed, 35 insertions(+), 26 deletions(-) commit 2bfaaa10165f6c7132ed3a5db69052a983e998d5 Author: George Kiagiadakis Date: Wed Feb 15 22:05:13 2012 +0200 call1: move CallContent/CallStream to separate source files This also removes the CallChannel::removeContent() method together with its helper private class, since it is not going to be used in Call1 and causes compilation failure here. TelepathyQt/CMakeLists.txt | 6 +- TelepathyQt/call-channel-internal.h | 171 -------- TelepathyQt/call-channel.cpp | 782 +++--------------------------------- TelepathyQt/call-channel.h | 106 +---- TelepathyQt/call-content.cpp | 335 ++++++++++++++- TelepathyQt/call-content.h | 53 ++- TelepathyQt/call-stream.cpp | 433 +++++++++++++++++++- TelepathyQt/call-stream.h | 62 ++- 8 files changed, 936 insertions(+), 1012 deletions(-) commit a8b6517cb49d2f45c8dcb47f8d7853f93af46b94 Author: George Kiagiadakis Date: Tue Feb 14 18:46:18 2012 +0200 call1: Add the Call* classes to the build system TelepathyQt/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) commit e1de1a5d521c89922873f027a85e9c8321b7415c Author: George Kiagiadakis Date: Tue Feb 14 17:43:48 2012 +0200 call1: merge the remaining call-related bits from tp-qt4-yell TelepathyQt/capabilities-base.cpp | 56 +++++++++ TelepathyQt/capabilities-base.h | 6 + TelepathyQt/channel-class-spec.cpp | 64 ++++++++++ TelepathyQt/channel-class-spec.h | 43 ++++++- TelepathyQt/channel-factory.cpp | 6 + TelepathyQt/channel-factory.h | 9 ++ TelepathyQt/requestable-channel-class-spec.cpp | 162 +++++++++++++++++++++++++ TelepathyQt/requestable-channel-class-spec.h | 10 ++ 8 files changed, 355 insertions(+), 1 deletion(-) commit c9ac6a61f6def1a15a17d7741164b8174c8b2f53 Author: George Kiagiadakis Date: Tue Feb 14 17:42:31 2012 +0200 call1: un-yell-ify the Call* classes TelepathyQt/CallChannel | 12 +- TelepathyQt/call-channel-internal.h | 42 +++---- TelepathyQt/call-channel.cpp | 218 ++++++++++++++++++------------------ TelepathyQt/call-channel.h | 98 ++++++++-------- 4 files changed, 183 insertions(+), 187 deletions(-) commit 1b89d8d21010a3ee5af51c65fb8e36322d0aea26 Author: George Kiagiadakis Date: Tue Feb 14 16:14:13 2012 +0200 call1: Import CallChannel/CallContent/CallStream from telepathy-qt4-yell TelepathyQt/CallChannel | 13 + TelepathyQt/call-channel-internal.h | 171 ++++ TelepathyQt/call-channel.cpp | 1522 +++++++++++++++++++++++++++++++++++ TelepathyQt/call-channel.h | 241 ++++++ TelepathyQt/types.h | 6 + 5 files changed, 1953 insertions(+) commit 283b8b1d574c265b6789aaf867ebaf9b4b1004d1 Merge: a88fb6b cf64e96 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 16 15:46:51 2012 -0300 Merge branch 'trivia' Reviewed-by: Dario Freddi commit cf64e968dbc3cf787c825f0984f6e0c125c0e680 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 2 05:15:10 2012 -0300 Add missing pretty headers for ProtocolInfoList and ProtocolParameterList. TelepathyQt/CMakeLists.txt | 2 ++ TelepathyQt/ProtocolInfoList | 13 +++++++++++++ TelepathyQt/ProtocolParameterList | 13 +++++++++++++ 3 files changed, 28 insertions(+) commit 1276ee717742ffba3e13b2750c5c4b05d0e12e4b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 15 01:43:37 2012 -0300 Bump tp-glib dependency to 0.17.5 (for Captcha support). CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a88fb6b929a23397f709497454600f649d917dce Author: Dario Freddi Date: Tue Mar 13 14:39:09 2012 +0100 Update NEWS NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f9aedcb8ddb75dc3471229aacfa889f9523ca6aa Merge: 7c28bc4 3c41300 Author: Dario Freddi Date: Tue Mar 13 14:32:35 2012 +0100 Merge branch 'captcha-authentication' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 3c4130092c86a354d5fccec20df04137a2ea1606 Author: Dario Freddi Date: Tue Mar 13 11:26:33 2012 +0100 captcha-autentication: Fix and refine docs TelepathyQt/captcha-authentication.cpp | 60 +++++++++++++-------------- TelepathyQt/captcha.cpp | 2 +- TelepathyQt/pending-captchas.cpp | 3 -- TelepathyQt/server-authentication-channel.cpp | 13 +++--- TelepathyQt/server-authentication-channel.h | 2 +- 5 files changed, 36 insertions(+), 44 deletions(-) commit ff15b48962133b37ef46b5f945816ee3da0f3bc1 Author: Dario Freddi Date: Tue Mar 13 10:46:57 2012 +0100 captcha-authentication: Use AuthenticationMethod property to determine which interface ServerAuthenticationChannel implements The spec advertises this property to be the only reliable way to find out which interface is implemented on a given ServerAuthentication channel. Instead of checking if the channel has one of them, just introspect its properties first, and determine which method the channel implements by reading AuthenticationMethod. TelepathyQt/server-authentication-channel.cpp | 76 +++++++++++++++++---------- TelepathyQt/server-authentication-channel.h | 1 + 2 files changed, 49 insertions(+), 28 deletions(-) commit 7fdf576f8613c330803be75c927da0350260af2f Author: Dario Freddi Date: Tue Mar 13 10:30:47 2012 +0100 captcha-authentication: s/introspectServerAuthentication/introspectMain TelepathyQt/server-authentication-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit e9830fc15c718ecd42103e2ae3ae68c0113d6199 Author: Dario Freddi Date: Tue Mar 13 10:29:27 2012 +0100 captcha-authentication: Adhere to code style TelepathyQt/captcha-authentication.cpp | 66 +++++++++++++++++----------------- TelepathyQt/captcha-authentication.h | 4 +-- TelepathyQt/captcha.cpp | 3 +- TelepathyQt/pending-captchas.cpp | 3 +- 4 files changed, 39 insertions(+), 37 deletions(-) commit 8315c51828f94bf8d9a99fa74665d01f2290915e Author: Dario Freddi Date: Tue Mar 13 10:14:15 2012 +0100 captcha-authentication: Comment out any mention of SASL until an implementation comes TelepathyQt/server-authentication-channel.cpp | 8 +++++--- TelepathyQt/server-authentication-channel.h | 3 ++- tests/dbus/captcha-authentication.cpp | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) commit b1c06340ba5ec381a00862104c5abf86d29bb735 Author: Dario Freddi Date: Tue Mar 13 10:13:41 2012 +0100 captcha-authentication: For clarity, use temporary variables to identify members of a hash when iterating TelepathyQt/pending-captchas.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit 7ef44712e3a55ef088ff98795a28dda54a16e435 Author: Dario Freddi Date: Tue Mar 13 10:12:05 2012 +0100 captcha-authentication: Use error() and errorDetails() when channel status change makes an operation fail In case an operation fails with due to a channel status change, the error data in the interface should already be filled. Given this case, expose CaptchaAuthentication's error instead of a new one. TelepathyQt/captcha-authentication.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 3d439b4ab34e1cbf502e71f5d25a6d16a683e16e Author: Dario Freddi Date: Tue Mar 13 10:11:23 2012 +0100 captcha-authentication: Remove leftovers from previous implementations TelepathyQt/captcha-authentication-internal.h | 2 -- TelepathyQt/captcha-authentication.h | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) commit ca1f8c5a8850365335245431a5ece20092b62c41 Author: Dario Freddi Date: Tue Mar 13 10:10:51 2012 +0100 captcha-authentication: Use keywords instead of Q_* macros TelepathyQt/abstract-interface.cpp | 2 +- TelepathyQt/pending-captchas.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6f02b9b5248c1afcb08f32fd3867a11c9178a07f Author: Dario Freddi Date: Thu Mar 8 20:40:12 2012 +0100 captcha-authentication: Remove empty lines TelepathyQt/captcha-authentication.cpp | 3 +-- TelepathyQt/captcha-authentication.h | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) commit 9a35bbeb85baf99566bb47293ac80563bcca4399 Author: Dario Freddi Date: Thu Mar 8 19:34:42 2012 +0100 captcha-authentication: Use QDBusPendingCall instead of PendingVoid in internal classes TelepathyQt/captcha-authentication-internal.h | 10 +++-- TelepathyQt/captcha-authentication.cpp | 54 +++++++++++++-------------- 2 files changed, 32 insertions(+), 32 deletions(-) commit f5c4889c42e9603b0d4cf0152e454b5f79d761ce Author: Dario Freddi Date: Thu Mar 8 19:23:26 2012 +0100 captcha-authentication: Tp-Qtify Captcha's implementation Have a struct instead of a class for the Private member, and use isValid() to avoid creating a data member for the default constructor. TelepathyQt/captcha.cpp | 38 ++++++++++++++++++++++++++++---------- TelepathyQt/captcha.h | 7 +++++-- 2 files changed, 33 insertions(+), 12 deletions(-) commit 927e2c01b276d9abf299fe81d3017dbb516d74b0 Author: Dario Freddi Date: Thu Mar 8 19:10:02 2012 +0100 captcha-authentication: Hold a strong reference to CaptchaAuthentication in any pending operation on it TelepathyQt/captcha-authentication-internal.h | 2 ++ TelepathyQt/captcha-authentication.cpp | 29 ++++++++++++++++++++------- TelepathyQt/captcha-authentication.h | 5 ++--- TelepathyQt/pending-captchas.cpp | 22 +++++++++----------- 4 files changed, 36 insertions(+), 22 deletions(-) commit f008f71164277bc8b69dcc078fc552f46f56b348 Author: Dario Freddi Date: Thu Mar 8 12:51:47 2012 +0100 captcha-authentication: Doc improvements TelepathyQt/captcha-authentication.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 038844417a263f187c4160f9e9d5e0f92b53b49b Author: Dario Freddi Date: Wed Mar 7 19:24:50 2012 +0100 captcha-authentication: Be more verbose with errors TelepathyQt/captcha-authentication.cpp | 4 +++- TelepathyQt/pending-captchas.cpp | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) commit 5b806f33c34f211b7f9fb9e12b69c9966929146f Author: Dario Freddi Date: Wed Mar 7 19:14:33 2012 +0100 captcha-authentication: Fill empty Captcha objects with default values TelepathyQt/captcha.cpp | 2 ++ tests/dbus/captcha-authentication.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) commit fe0b0123a0fd9a73ecdc9075f353dd64faef757d Author: Dario Freddi Date: Wed Mar 7 19:09:14 2012 +0100 captcha-authentication: Keep a weak ref of the Channel into CaptchaAuthentication Keeping a strong reference caused a leak since a strong-ref loop was triggered by the "parenting" of the two objects, which held a strong ref one towards the other. TelepathyQt/captcha-authentication-internal.h | 2 +- TelepathyQt/captcha-authentication.cpp | 20 +++++++++++++++----- TelepathyQt/pending-captchas.cpp | 8 ++++++-- 3 files changed, 22 insertions(+), 8 deletions(-) commit 0a288f2282d1b6329036a2f77df5b5c755177a3e Author: Dario Freddi Date: Wed Mar 7 18:31:15 2012 +0100 captcha-authentication: Clean up forward declarations and comments TelepathyQt/captcha-authentication.h | 1 - TelepathyQt/captcha.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) commit 1f8c446d7a926d56ad46944b2d5124d2f9838aef Author: Dario Freddi Date: Wed Mar 7 18:29:45 2012 +0100 captcha-authentication: Rename lastError* to error* TelepathyQt/captcha-authentication.cpp | 8 ++++---- TelepathyQt/captcha-authentication.h | 4 ++-- tests/dbus/captcha-authentication.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) commit 94427fcc4838cd4eb2a685132e1e3a32e45df713 Author: Dario Freddi Date: Wed Mar 7 18:26:43 2012 +0100 captcha-authentication: Don't use d-pointers for private classes TelepathyQt/captcha-authentication-internal.h | 26 ++++---------------------- TelepathyQt/captcha-authentication.cpp | 22 ++++++++-------------- 2 files changed, 12 insertions(+), 36 deletions(-) commit 11ed0c73027dc3571b03f4084e9ea28a7fcf2c98 Author: Dario Freddi Date: Wed Mar 7 18:20:48 2012 +0100 captcha-authentication: Add Nokia copyright TelepathyQt/captcha-authentication-internal.h | 1 + TelepathyQt/captcha-authentication.cpp | 1 + TelepathyQt/captcha-authentication.h | 1 + TelepathyQt/captcha.cpp | 1 + TelepathyQt/captcha.h | 1 + TelepathyQt/pending-captchas.cpp | 1 + TelepathyQt/pending-captchas.h | 1 + TelepathyQt/server-authentication-channel.cpp | 1 + TelepathyQt/server-authentication-channel.h | 1 + 9 files changed, 9 insertions(+) commit 8c0950b53be40d414ec6593eca3436f79b8b0e8c Author: Dario Freddi Date: Wed Mar 7 15:31:45 2012 +0100 captcha-authentication: Improvements to documentation TelepathyQt/captcha-authentication.cpp | 20 ++++++------- TelepathyQt/pending-captchas.cpp | 1 + TelepathyQt/server-authentication-channel.cpp | 41 +++++++++++++++++++++------ 3 files changed, 44 insertions(+), 18 deletions(-) commit 96a7ca03196b137e76488160bdfc638878398183 Author: Dario Freddi Date: Wed Mar 7 15:23:41 2012 +0100 captcha-authentication: Instead of using a type(), just have a check for each interface TelepathyQt/server-authentication-channel.cpp | 22 ++++++++++++++-------- TelepathyQt/server-authentication-channel.h | 9 ++------- tests/dbus/captcha-authentication.cpp | 6 ++++-- 3 files changed, 20 insertions(+), 17 deletions(-) commit 6d1f0b5c40672a0b855bb6e4f4a47ef2e6a741e1 Author: Dario Freddi Date: Tue Mar 6 16:05:05 2012 +0100 captcha-authentication: Update the test to cover failure in fetching data due to the property not being ready tests/dbus/captcha-authentication.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 54a7d6c00d21259f6a60fbb0561e284564e27c60 Author: Dario Freddi Date: Tue Mar 6 16:04:43 2012 +0100 captcha-authentication: Update channel class spec and factory to handle ServerAuthentication channels TelepathyQt/channel-class-spec.cpp | 24 +----------------------- TelepathyQt/channel-class-spec.h | 4 +--- TelepathyQt/channel-factory.cpp | 25 +++++++++++++++++++++++++ TelepathyQt/channel-factory.h | 16 ++++++++++++++++ 4 files changed, 43 insertions(+), 26 deletions(-) commit 6657ac899f536bac39e796058a8b90932bfd9e12 Author: Dario Freddi Date: Tue Mar 6 12:56:25 2012 +0100 captcha-authentication: Move captcha logic out of Channel and into a new ServerAuthenticationChannel TelepathyQt/CMakeLists.txt | 4 + TelepathyQt/ServerAuthenticationChannel | 13 ++ TelepathyQt/captcha-authentication.h | 2 +- TelepathyQt/channel.cpp | 83 ---------- TelepathyQt/channel.h | 4 - TelepathyQt/server-authentication-channel.cpp | 221 ++++++++++++++++++++++++++ TelepathyQt/server-authentication-channel.h | 75 +++++++++ TelepathyQt/types.h | 2 + tests/dbus/captcha-authentication.cpp | 10 +- 9 files changed, 322 insertions(+), 92 deletions(-) commit 7fb046aee619ecf8632f3f124cc234b751f49657 Author: Dario Freddi Date: Wed Feb 29 18:47:24 2012 +0100 captcha-authentication: Add docs for CaptchaAuthentication TelepathyQt/captcha-authentication.cpp | 148 +++++++++++++++++++++++++++------ 1 file changed, 124 insertions(+), 24 deletions(-) commit 8f0b08a42f9baddea0b0188fafa5a9d3798729f2 Author: Dario Freddi Date: Wed Feb 29 18:47:09 2012 +0100 captcha-authentication: Use internal tp-qt debug TelepathyQt/captcha-authentication.cpp | 12 ++++++------ TelepathyQt/channel.cpp | 2 +- TelepathyQt/pending-captchas.cpp | 14 ++++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) commit d31f5cb18dd63f8f705795da4d7e5dcf7f0b4a9e Author: Dario Freddi Date: Wed Feb 29 17:23:42 2012 +0100 captcha-authentication: When cancelling, close the channel upon success. TelepathyQt/captcha-authentication-internal.h | 30 +++++++++++++++ TelepathyQt/captcha-authentication.cpp | 53 ++++++++++++++++++++++++++- TelepathyQt/captcha-authentication.h | 2 + 3 files changed, 84 insertions(+), 1 deletion(-) commit f63353eac420c114882635618d7e62260e61016d Author: Dario Freddi Date: Wed Feb 29 16:56:44 2012 +0100 captcha-authentication: When answering, close the channel upon success. TelepathyQt/captcha-authentication-internal.h | 1 + TelepathyQt/captcha-authentication.cpp | 19 ++++++++++++++++--- TelepathyQt/captcha-authentication.h | 2 ++ 3 files changed, 19 insertions(+), 3 deletions(-) commit 8113e60499c0357ad51bddc05f5770cdba74a152 Author: Dario Freddi Date: Thu Feb 23 18:12:38 2012 +0100 captcha-authentication: Cast the correct type tests/dbus/captcha-authentication.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) commit 739c8ecb2d690dbe192af77c875a6d4c458d6b78 Author: Dario Freddi Date: Thu Feb 23 18:10:21 2012 +0100 captcha-authentication: Also check the signal has been emitted correctly tests/dbus/captcha-authentication.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 06154be16ea79ea6bbb1c206f408eae98d76dc2d Author: Dario Freddi Date: Wed Feb 22 22:26:22 2012 +0100 captcha-authentication: Add more tests to bring coverage up to 90% tests/dbus/captcha-authentication.cpp | 154 +++++++++++++++++++++++++++++----- tests/lib/glib/captcha-chan.c | 27 +++++- 2 files changed, 159 insertions(+), 22 deletions(-) commit 3eda275c3cadc28aedbb50b5ff1da5dbe3c6b6f4 Author: Dario Freddi Date: Wed Feb 22 22:26:10 2012 +0100 captcha-authentication: UnknownChallenge cannot be 0 TelepathyQt/captcha-authentication.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit e7de892bca9c048c6d949f4b5f568c40e38317ce Author: Dario Freddi Date: Wed Feb 22 21:49:09 2012 +0100 captcha-authentication: Fix flag declaration, and a logic error TelepathyQt/captcha-authentication.h | 2 +- TelepathyQt/pending-captchas.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) commit 508cd07c2aab0e985ba5387551cedb37db45e095 Author: Dario Freddi Date: Wed Feb 22 21:30:18 2012 +0100 captcha-authentication: Don't destroy the connection when cancelling tests/lib/glib/captcha-chan.c | 9 --------- 1 file changed, 9 deletions(-) commit ef3845965d9d0ad7400b4a4d80c078498b4db614 Author: Dario Freddi Date: Wed Feb 22 21:16:30 2012 +0100 captcha-authentication: Don't check if the feature is enabled - when CaptchaAuthentication is created it is guaranteed that the feature will be ready. TelepathyQt/captcha-authentication.cpp | 25 ------------------------- TelepathyQt/captcha-authentication.h | 3 ++- 2 files changed, 2 insertions(+), 26 deletions(-) commit ced62c4d7e17830134c065a54a6f61fb341b732e Author: Dario Freddi Date: Wed Feb 22 20:10:01 2012 +0100 captcha-authentication: Make can-retry-captcha configurable in the service test tests/dbus/captcha-authentication.cpp | 5 +++-- tests/lib/glib/captcha-chan.c | 23 ++++++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) commit 80b718632470a88c62d200ac5c1d3e472e9ea1eb Author: Dario Freddi Date: Wed Feb 22 18:49:15 2012 +0100 captcha-authentication: Add a basic test case tests/dbus/CMakeLists.txt | 1 + tests/dbus/captcha-authentication.cpp | 193 ++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) commit 30d8ff444735fee65173f9ef2a635507a124eaeb Author: Dario Freddi Date: Wed Feb 22 18:49:04 2012 +0100 captcha-authentication: Multiple fixes to the glib service for Captcha tests/lib/glib/captcha-chan.c | 51 +++++++++++++++++++------------------------ tests/lib/glib/captcha-chan.h | 3 +-- 2 files changed, 24 insertions(+), 30 deletions(-) commit 264381444fd6cb0530d9b8ccde2743a112a8c2ea Author: Dario Freddi Date: Wed Feb 22 17:30:55 2012 +0100 captcha-authentication: First iteration of a captcha channel tests/lib/glib/CMakeLists.txt | 2 + tests/lib/glib/captcha-chan.c | 547 ++++++++++++++++++++++++++++++++++++++++++ tests/lib/glib/captcha-chan.h | 65 +++++ 3 files changed, 614 insertions(+) commit 2a96ebe4d03a55a0226bf941ea21ae1ec2cbe83f Author: Dario Freddi Date: Wed Feb 22 00:29:25 2012 +0100 captcha-authentication: Fix casting and property names TelepathyQt/captcha-authentication.cpp | 4 ++-- TelepathyQt/pending-captchas.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit aaa405d80ac51dc875b69c0820c39868ad76d24d Author: Jeremy Whiting Date: Wed Feb 22 00:22:57 2012 +0100 captcha-authentication: Fix property key we are watching for status changes. TelepathyQt/captcha-authentication.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 38862a6b7effd79d1c1fbc079a7992f30e2a188c Author: Dario Freddi Date: Mon Feb 20 16:07:53 2012 +0100 captcha-authentication: Compile the new files, by fixing non-TpQtism in them TelepathyQt/CMakeLists.txt | 6 ++++++ TelepathyQt/captcha-authentication-internal.h | 4 ++-- TelepathyQt/captcha-authentication.cpp | 20 +++++++++--------- TelepathyQt/captcha-authentication.h | 14 +++++-------- TelepathyQt/captcha.cpp | 6 +----- TelepathyQt/captcha.h | 11 +++++----- TelepathyQt/pending-captchas.cpp | 29 +++++++++++++-------------- TelepathyQt/pending-captchas.h | 13 +++++------- 8 files changed, 49 insertions(+), 54 deletions(-) commit d5a654a7d039a330f0ad25c2b34630bd43bd41b4 Author: Dario Freddi Date: Mon Feb 20 16:06:59 2012 +0100 captcha-authentication: Add new logic to channel for returning a CaptchaAuthenticationPtr TelepathyQt/channel.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/channel.h | 4 +++ 2 files changed, 87 insertions(+) commit ac3a15c2e5332f456da48f0c4ebe8cb341ba646f Author: Dario Freddi Date: Mon Feb 20 16:06:30 2012 +0100 captcha-authentication: Add new type for CaptchaAuthenticationPtr TelepathyQt/types.h | 2 ++ 1 file changed, 2 insertions(+) commit d7acb6ee4ab2283f761a3bbb9175f9e5423060c7 Author: Dario Freddi Date: Mon Feb 20 15:25:43 2012 +0100 captcha-authentication: Use a qdbus_cast for custom types to prevent the QVariant conversion from failing TelepathyQt/pending-captchas.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5d916d5b79c90dfbf5d4eaaa71c176f1b5c4efae Author: Dario Freddi Date: Mon Feb 20 15:23:22 2012 +0100 captcha-authentication: Assignment operator, to prevent captcha from failing to build when using stricter rules TelepathyQt/captcha.cpp | 11 +++++++++++ TelepathyQt/captcha.h | 2 ++ 2 files changed, 13 insertions(+) commit e84e1475f3026e03c60785ece765e79f7dbe6aa4 Author: Dario Freddi Date: Mon Feb 13 17:37:43 2012 +0100 captcha-authentication: Add a ChannelClassSpec for captcha auth TelepathyQt/channel-class-spec.cpp | 19 +++++++++++++++++++ TelepathyQt/channel-class-spec.h | 2 ++ 2 files changed, 21 insertions(+) commit edc7d713e464e30418ad92a231e17951f8a7e9a0 Author: Dario Freddi Date: Mon Feb 13 17:34:01 2012 +0100 captcha-authentication: Add pretty headers and install them TelepathyQt/CMakeLists.txt | 6 ++++++ TelepathyQt/Captcha | 13 +++++++++++++ TelepathyQt/CaptchaAuthentication | 13 +++++++++++++ TelepathyQt/PendingCaptchas | 13 +++++++++++++ 4 files changed, 45 insertions(+) commit e173dc32d17d5a877ada23ec932f489c43689e8c Author: Dario Freddi Date: Mon Feb 13 16:45:39 2012 +0100 captcha-authentication: Connect to the correct channel TelepathyQt/pending-captchas.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 706ccbe0e52874fe865738e4f423de59e07ef7d9 Author: Dario Freddi Date: Mon Feb 13 16:06:41 2012 +0100 captcha-authentication: GetCaptchaData is returning just a QByteArray TelepathyQt/pending-captchas.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 425cdde204867c56b01759803b55ebc9c8a2da6c Author: Dario Freddi Date: Fri Feb 10 14:48:01 2012 +0100 captcha-authentication: Move Captcha to its own header TelepathyQt/captcha.cpp | 171 +++++++++++++++++++++++++++++++++++++++ TelepathyQt/captcha.h | 61 ++++++++++++++ TelepathyQt/pending-captchas.cpp | 142 +------------------------------- TelepathyQt/pending-captchas.h | 22 +---- 4 files changed, 234 insertions(+), 162 deletions(-) commit 4d60c9aacb5f082acebd913f44bf597d4df26e80 Author: Dario Freddi Date: Fri Feb 10 14:39:18 2012 +0100 captcha-authentication: Use Connection::ErrorDetails instead of QVariantMap TelepathyQt/captcha-authentication.cpp | 4 ++-- TelepathyQt/captcha-authentication.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) commit a2ca9a770501bc8cb6d7844a49cf18029dcd0029 Author: Dario Freddi Date: Fri Feb 10 12:58:47 2012 +0100 captcha-authentication: Implement error handling by exposing a lastError set of methods in CaptchaAuthentication TelepathyQt/captcha-authentication-internal.h | 2 ++ TelepathyQt/captcha-authentication.cpp | 17 ++++++++++++++++- TelepathyQt/captcha-authentication.h | 3 +++ 3 files changed, 21 insertions(+), 1 deletion(-) commit db0589a8020875dc511247ad147fc68c85a62a54 Author: Dario Freddi Date: Fri Feb 10 12:34:07 2012 +0100 captcha-authentication: Implement bindings for cancelling captcha TelepathyQt/captcha-authentication.cpp | 9 +++++++++ TelepathyQt/captcha-authentication.h | 4 ++++ 2 files changed, 13 insertions(+) commit 79c7b9461a659361fc17f0e51b9440e6aa0d3f0e Author: Dario Freddi Date: Fri Feb 10 12:06:41 2012 +0100 captcha-authentication: id is now a uint everywhere TelepathyQt/pending-captchas.cpp | 12 ++++++------ TelepathyQt/pending-captchas.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) commit f6d7cc93be86bb5f07ba1191a53d0bf95c2506c1 Author: Dario Freddi Date: Fri Feb 10 12:03:59 2012 +0100 captcha-authentication: Some captchas don't have a payload. Handle those in the right way TelepathyQt/pending-captchas.cpp | 53 ++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 10 deletions(-) commit f88eeda3f0ac656ccd865fb417895dd784177128 Author: Dario Freddi Date: Fri Feb 10 11:48:11 2012 +0100 captcha-authentication: Implement the label property in Captcha TelepathyQt/pending-captchas.cpp | 23 +++++++++++++++++++++-- TelepathyQt/pending-captchas.h | 3 ++- 2 files changed, 23 insertions(+), 3 deletions(-) commit 2227428425d12b2edd77b653379a72d467b33f08 Author: Dario Freddi Date: Fri Feb 10 11:22:50 2012 +0100 captcha-authentication: Port the internals to the new spec logic TelepathyQt/captcha-authentication.cpp | 2 +- TelepathyQt/pending-captchas.cpp | 33 ++++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) commit 74326aa48a6c7799bf6e7ac3c67e45db4be339b9 Author: Dario Freddi Date: Fri Feb 10 10:59:17 2012 +0100 captcha-authentication: Update the spec to newest version TelepathyQt/pending-captchas.h | 1 + 1 file changed, 1 insertion(+) commit 269941c4d4ca2280fd074cb81fbaad88cf15476c Author: Dario Freddi Date: Fri Feb 10 10:58:24 2012 +0100 captcha-authentication: Add initial documentation for PendingCaptcha TelepathyQt/pending-captchas.cpp | 119 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 5 deletions(-) commit 1e09b297c355b06ed5295aa938799908dd8e0c17 Author: Dario Freddi Date: Thu Feb 9 17:52:28 2012 +0100 captcha-authentication: Cleanup duplicate types TelepathyQt/captcha-authentication.cpp | 6 ++---- TelepathyQt/captcha-authentication.h | 4 +--- 2 files changed, 3 insertions(+), 7 deletions(-) commit 6f1c87d32b5f50bbc3a7c918e8a9b31e2483e335 Author: Dario Freddi Date: Thu Feb 9 17:35:44 2012 +0100 captcha-authentication: Use the brand new facilities from AbstractInterface to monitor Status for real TelepathyQt/captcha-authentication.cpp | 11 ++++------- TelepathyQt/captcha-authentication.h | 3 +-- 2 files changed, 5 insertions(+), 9 deletions(-) commit 5485a475a24da07587d3ed9b0acdcae06a47e9d9 Author: Dario Freddi Date: Thu Feb 9 17:24:44 2012 +0100 captcha-authentication: Move Captcha to an implicitly shared implementation outside of CaptchaAuthentication TelepathyQt/captcha-authentication.h | 7 --- TelepathyQt/pending-captchas.cpp | 93 +++++++++++++++++++++++++++++++----- TelepathyQt/pending-captchas.h | 24 +++++++++- 3 files changed, 104 insertions(+), 20 deletions(-) commit 3abeafd98155de024f325c94fd5f9bd3c6a6b650 Author: Dario Freddi Date: Thu Feb 9 17:00:34 2012 +0100 captcha-authentication: Rework the way Challenge types are handled, making way more sense than before TelepathyQt/captcha-authentication.cpp | 4 +-- TelepathyQt/captcha-authentication.h | 18 +++++++++--- TelepathyQt/pending-captchas.cpp | 54 ++++++++++++++++++++++------------ TelepathyQt/pending-captchas.h | 2 +- 4 files changed, 53 insertions(+), 25 deletions(-) commit 382d10bb077a7ef3ad97a2583cc96848bfb08d1e Author: Dario Freddi Date: Thu Feb 9 12:20:05 2012 +0100 captcha-authentication: Change the request API to carry on preferred mimetypes & type when calling. TelepathyQt/captcha-authentication-internal.h | 3 --- TelepathyQt/captcha-authentication.cpp | 25 ++++--------------------- TelepathyQt/captcha-authentication.h | 9 ++------- TelepathyQt/pending-captchas.cpp | 11 +++++++++-- TelepathyQt/pending-captchas.h | 2 ++ 5 files changed, 17 insertions(+), 33 deletions(-) commit 2fe20a0f7dc89bcf5858a2b6458ab13917d5d38c Author: Dario Freddi Date: Thu Feb 9 12:03:47 2012 +0100 captcha-authentication: Rename PendingCaptcha to PendingCaptchas TelepathyQt/captcha-authentication.cpp | 14 +- TelepathyQt/captcha-authentication.h | 6 +- TelepathyQt/pending-captchas.cpp | 245 +++++++++++++++++++++++++++++++++ TelepathyQt/pending-captchas.h | 74 ++++++++++ 4 files changed, 329 insertions(+), 10 deletions(-) commit 12d9e574551138d99bddb624025107f23ebf7d09 Author: Dario Freddi Date: Thu Feb 9 10:59:06 2012 +0100 captcha-authentication: Add a way to monitor PropertiesChanged in CaptchaAuthentication to watch over status TelepathyQt/captcha-authentication.cpp | 14 +++++++++++--- TelepathyQt/captcha-authentication.h | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) commit 4884f6d7897b1c62335da8fcde94537d5c8318c6 Author: Dario Freddi Date: Tue Feb 7 17:44:27 2012 +0100 captcha-authentication: Fix permissions TelepathyQt/captcha-authentication.h | 1 + 1 file changed, 1 insertion(+) commit 9ef12ab1c8bbcefb2c7dd66cc0a0b1bda59f7c37 Author: Dario Freddi Date: Tue Feb 7 17:03:42 2012 +0100 captcha-authentication: Add a channelfuture extension, and make captcha a mere interface TelepathyQt/captcha-authentication-internal.h | 20 +++++ TelepathyQt/captcha-authentication.cpp | 119 +++----------------------- TelepathyQt/captcha-authentication.h | 13 ++- 3 files changed, 36 insertions(+), 116 deletions(-) commit 8d97ba85a9067b86b31f0e1932f91116a044544a Author: Dario Freddi Date: Tue Feb 7 16:31:30 2012 +0100 captcha-authentication: Rename to CaptchaAuthentication TelepathyQt/captcha-authentication-internal.h | 65 +++++ TelepathyQt/captcha-authentication.cpp | 357 ++++++++++++++++++++++++++ TelepathyQt/captcha-authentication.h | 102 ++++++++ 3 files changed, 524 insertions(+) commit 7c28bc4a251d0ad6c6cd2943cb0b1258e11a4021 Author: Dario Freddi Date: Tue Mar 13 14:31:03 2012 +0100 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 5b2c18f732b512e539a3bf69c21420d719a20e0a Author: David Edmundson Date: Tue Mar 13 14:04:00 2012 +0100 TextChannel: Emit pendingMessagesRemoved after the pending message has actually been removed. When call acknowledge and removed in another client than the main handler, pendingMessagesRemoved is emitted before it the messages is deleted from the queue, so messageQueue.size() remains 1 instead of 0. (in TextChannel::Private::processMessageQueue()) This patch fixes this behavior. This commit fixes bug fd.o#45755 Reviewed-by: Dario Freddi TelepathyQt/text-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4a3fa692ecea92845ad5d77c349aa5797192e112 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 21 15:25:43 2012 -0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 435f760ee9e39140bb935aa639eb8ca662e2af95 Merge: 61a5b53 a024126 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 21 15:24:47 2012 -0200 Merge branch 'spec-0.25.2' Reviewed-by: Dario Freddi commit a0241265d075952d9f27c2bed52b1bd07be8c343 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 21 15:04:05 2012 -0200 Update to spec 0.25.2 Changes in this commit: - Update all interfaces to spec 0.25.2 - As this spec renames Conn.I.Addressing.DRAFT to Conn.I.Addressing1 as final version and we don't want to break the build, the changes to support Addressing1 are already included in this commit - Add all missing pretty headers - Generate proxy for Channel.I.CaptchaAuthentication - Generate proxies for Call1 interfaces. To avoid breaking the build, the support for Conn.I.Addressing TelepathyQt/AccountInterfaceStorageInterface | 13 + TelepathyQt/CMakeLists.txt | 51 ++- TelepathyQt/CallContent | 13 + TelepathyQt/CallContentInterface | 13 + .../CallContentInterfaceAudioControlInterface | 13 + TelepathyQt/CallContentInterfaceDTMFInterface | 13 + TelepathyQt/CallContentInterfaceMediaInterface | 13 + .../CallContentInterfaceVideoControlInterface | 13 + TelepathyQt/CallContentMediaDescription | 13 + TelepathyQt/CallContentMediaDescriptionInterface | 13 + ...escriptionInterfaceRTCPExtendedReportsInterface | 13 + ...tMediaDescriptionInterfaceRTCPFeedbackInterface | 13 + ...escriptionInterfaceRTPHeaderExtensionsInterface | 13 + TelepathyQt/CallStream | 13 + TelepathyQt/CallStreamEndpoint | 13 + TelepathyQt/CallStreamEndpointInterface | 13 + TelepathyQt/CallStreamInterface | 13 + TelepathyQt/CallStreamInterfaceMediaInterface | 13 + .../ChannelInterfaceCaptchaAuthenticationInterface | 13 + TelepathyQt/ChannelInterfaceDestroyableInterface | 13 + .../ChannelInterfaceSASLAuthenticationInterface | 4 +- TelepathyQt/ChannelTypeCallInterface | 13 + TelepathyQt/ChannelTypeDBusTubeInterface | 13 + TelepathyQt/ChannelTypeStreamTubeInterface | 4 +- TelepathyQt/ConnectionInterfaceAddressingInterface | 13 + TelepathyQt/ProtocolAddressingInterface | 13 - TelepathyQt/ProtocolAvatarsInterface | 13 - TelepathyQt/ProtocolInterfaceAddressingInterface | 13 + TelepathyQt/ProtocolInterfaceAvatarsInterface | 13 + TelepathyQt/ProtocolInterfacePresenceInterface | 13 + TelepathyQt/ProtocolPresenceInterface | 13 - TelepathyQt/call-content-media-description.cpp | 26 ++ TelepathyQt/call-content-media-description.h | 32 ++ TelepathyQt/call-content-media-description.xml | 12 + TelepathyQt/call-content.cpp | 26 ++ TelepathyQt/call-content.h | 32 ++ TelepathyQt/call-content.xml | 13 + TelepathyQt/call-stream-endpoint.cpp | 26 ++ TelepathyQt/call-stream-endpoint.h | 32 ++ TelepathyQt/call-stream-endpoint.xml | 9 + TelepathyQt/call-stream.cpp | 26 ++ TelepathyQt/call-stream.h | 32 ++ TelepathyQt/call-stream.xml | 10 + TelepathyQt/channel.xml | 2 + TelepathyQt/connection.xml | 1 + TelepathyQt/contact-manager.cpp | 2 +- TelepathyQt/contact.cpp | 6 +- TelepathyQt/future-connection.xml | 26 -- TelepathyQt/future-interfaces.xml | 1 - TelepathyQt/future-internal.h | 1 - TelepathyQt/future.cpp | 3 - TelepathyQt/pending-contacts.cpp | 21 +- TelepathyQt/stable-interfaces.xml | 5 + spec/Account.xml | 34 +- spec/Account_Manager.xml | 2 + spec/Call_Content.xml | 16 +- spec/Call_Content_Interface_Audio_Control.xml | 5 +- spec/Call_Content_Interface_DTMF.xml | 229 ++++++++++ spec/Call_Content_Interface_Media.xml | 33 +- spec/Call_Content_Interface_Video_Control.xml | 5 +- spec/Call_Content_Media_Description.xml | 7 +- ...Description_Interface_RTCP_Extended_Reports.xml | 5 +- ...t_Media_Description_Interface_RTCP_Feedback.xml | 5 +- ...Description_Interface_RTP_Header_Extensions.xml | 5 +- spec/Call_Interface_Mute.xml | 2 +- spec/Call_Stream.xml | 5 +- spec/Call_Stream_Endpoint.xml | 12 +- spec/Call_Stream_Interface_Media.xml | 32 +- spec/Channel.xml | 4 +- spec/Channel_Interface_Addressing.xml | 2 +- spec/Channel_Interface_Captcha_Authentication.xml | 505 +++++++++++++++++++++ spec/Channel_Interface_DTMF.xml | 15 +- spec/Channel_Type_Call.xml | 107 ++--- spec/Connection_Interface_Addressing.xml | 25 +- spec/Connection_Interface_Contact_List.xml | 44 ++ spec/Connection_Manager.xml | 7 +- spec/Protocol.xml | 2 +- spec/Protocol_Interface_Addressing.xml | 16 +- spec/all.xml | 6 +- spec/errors.xml | 10 + spec/generic-types.xml | 8 + tests/dbus/conn-addressing.cpp | 2 +- 82 files changed, 1644 insertions(+), 273 deletions(-) commit 61a5b530dec334b4edcc5e05095f862ebc529338 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 14 13:36:02 2012 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit d8bbc547bc2701c42dd58490281b8139a0ee4015 Author: Alberto Villa Date: Tue Feb 14 13:31:46 2012 -0200 Fixing vexing parse issues with clang. Reviewed-by: Andre Moreira Magalhaes (andrunko) Reviewed-by: Rohan Garg Tested-by: Rohan Garg TelepathyQt/optional-interface-factory.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 91eae81a116144184c997ebd6aabe11e80b55d3b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 13 12:10:46 2012 -0200 Update NEWS NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 70bf52bcd40a49e0a729c347b1b94c26bb4bb54a Merge: f2db804 d58864a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 13 12:07:45 2012 -0200 Merge branch 'glib-disable-deprecation-warnings' Reviewed-by: Dario Freddi commit d58864a7a0ee4045b59a78659a5e09a78f40bd85 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 13 11:41:39 2012 -0200 Disable GLib deprecation warnings for now; GValueArray is deprecated but we need it for telepathy-glib. CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) commit f2db804380ad0054129652f5bab251d6f437e2f7 Author: Dario Freddi Date: Fri Feb 10 15:21:47 2012 +0100 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit e9c25bb228fedae3da5c16bcad41be3998e8a7cc Author: Dario Freddi Date: Fri Feb 10 15:20:31 2012 +0100 ChannelClassSpec: Add a method for retrieving a class spec for a SASL Server Authentication channel TelepathyQt/channel-class-spec.cpp | 19 +++++++++++++++++++ TelepathyQt/channel-class-spec.h | 3 +++ 2 files changed, 22 insertions(+) commit 8d4cfb41d5e123c98446ac1930f044ce6183563d Author: Dario Freddi Date: Fri Feb 10 14:29:04 2012 +0100 AbstractInterface: Fix a typo in setMonitorProperties, and add a warning should the call to QDBusConnection::(dis)connect fail TelepathyQt/abstract-interface.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 403a0f078aff28bb6d568af74813cc0e88f98915 Author: Dario Freddi Date: Thu Feb 9 16:54:19 2012 +0100 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 260a8940da384fd57095b56c2a899fe19873578f Merge: 6673539 a29173d Author: Dario Freddi Date: Thu Feb 9 16:52:43 2012 +0100 Merge branch 'monitor-properties' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit a29173d0b5043192b243bd4dcaa695b7e9220f56 Author: Dario Freddi Date: Thu Feb 9 16:51:42 2012 +0100 monitor-properties: Cleanup the test tests/dbus/properties.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit f8bae0dcc4d555f3c19dc9ecc9f71b7b219a5603 Author: Dario Freddi Date: Thu Feb 9 16:49:28 2012 +0100 monitor-properties: Initialize private members inside Private TelepathyQt/abstract-interface.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit f63482e68a647ff1df733e1cb7c2dab49f7c3d60 Author: Dario Freddi Date: Thu Feb 9 16:25:39 2012 +0100 monitor-properties: Add documentation TelepathyQt/abstract-interface.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit e2527b04b25ddeca2f5a0067707d26dfc4d9e463 Author: Dario Freddi Date: Thu Feb 9 16:11:15 2012 +0100 monitor-properties: Remove redundant test tests/dbus/properties.cpp | 21 --------------------- 1 file changed, 21 deletions(-) commit aa947c86dedf0bf566ab2e85fda1532696fd9380 Author: Dario Freddi Date: Thu Feb 9 16:08:59 2012 +0100 monitor-properties: Check the invalid interface before the other one tests/dbus/properties.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 8bcd2b1e9e4f6a2fb9bcea099a0110e8d7afd9a3 Author: Dario Freddi Date: Thu Feb 9 16:05:56 2012 +0100 monitor-properties: Unify signatures TelepathyQt/abstract-interface.cpp | 2 +- TelepathyQt/abstract-interface.h | 4 ++-- tests/dbus/properties.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit 25feb3ac3c90f2e048f7a4489daedc947e00bffb Author: Dario Freddi Date: Thu Feb 9 15:44:06 2012 +0100 monitor-properties: Add a basic unit test tests/dbus/CMakeLists.txt | 1 + tests/dbus/properties.cpp | 165 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+) commit 4ca9827cb599aad0f0143e51c9d84d6d350dc8ff Author: Dario Freddi Date: Thu Feb 9 14:42:58 2012 +0100 monitor-properties: Add methods and signals in AbstractInterface for monitoring property changes TelepathyQt/abstract-interface.cpp | 37 +++++++++++++++++++++++++++++++++++++ TelepathyQt/abstract-interface.h | 12 ++++++++++++ 2 files changed, 49 insertions(+) commit 6673539b3e39a8f9d3ab0a1db5dcd87aa5c9d4cc Author: Alban Crequy Date: Wed Feb 8 14:01:50 2012 +0000 Tests: use QCoreApplication::applicationFilePath instead of hardcoded binary names Reviewed-by: Andre Moreira Magalhaes (andrunko) tests/dbus/account-channel-dispatcher.cpp | 2 +- tests/file-transfer-channel-creation-properties.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 662da02395052cd3db0456d10804b76579fdcdb1 Author: Dario Freddi Date: Thu Feb 2 14:31:38 2012 +0100 Master Qt5 now fixes the issues we had with QHostAddress - re-enable Stream tube tests for Qt5 tests/dbus/CMakeLists.txt | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) commit 89fababff211f74da2dda39290d60dfbd894c239 Merge: 86ec1d6 614a2d9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 27 11:58:17 2012 -0200 Merge branch 'tests-linkage-fix' commit 614a2d9bc001d728f48fa55f17d27bb8d584b4d8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 27 11:50:41 2012 -0200 Fix tests linkage with future/ convenience libraries. tests/dbus/CMakeLists.txt | 4 ++-- tests/lib/glib/CMakeLists.txt | 4 +--- tests/lib/glib/future/conference/CMakeLists.txt | 1 + tests/lib/glib/future/conn-addressing/CMakeLists.txt | 1 + 4 files changed, 5 insertions(+), 5 deletions(-) commit 86ec1d65849acd730c9faf5a651ad210a59b56c2 Author: Olli Salli Date: Fri Dec 30 20:49:32 2011 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit a015ae27e7a9ca727a06488c843f4716e596968b Author: Olli Salli Date: Fri Dec 30 20:47:44 2011 +0200 Add explanation to Presence::setStatus To be translated to proper documentation when the class is documented in general TelepathyQt/presence.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 6fe5e533ef7694770df652886a5c5ea18888a1a4 Author: Martin Klapetek Date: Fri Dec 30 20:43:46 2011 +0200 Add Tp::Presence::setStatusMessage() Reviewed-by: Olli Salli TelepathyQt/presence.cpp | 9 +++++++++ TelepathyQt/presence.h | 1 + 2 files changed, 10 insertions(+) commit b37682d809459466e726af2c830d57745af5e1eb Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 21 13:14:05 2011 -0200 Start 0.9.1 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit d50b79b0fe9c6fb38d267e74301284bbb676f60d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 18:33:46 2011 -0200 Prepare release 0.9.0 CMakeLists.txt | 6 +++--- NEWS | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) commit e670b841a1278904159e17f136e03a3897336e58 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 18:27:40 2011 -0200 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit e87e9365e55a5f105ec782a2c4bf7b7fc2ec0a62 Merge: 1e8084f 651948b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 18:25:23 2011 -0200 Merge branch 'disable-tests-qt46' Reviewed-by: Olli Salli (oggis) commit 651948b25e2c7919ef6cf87266472e3cf8c000e7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 17:41:59 2011 -0200 Disable tests failing in Qt 4.6. tests/dbus/CMakeLists.txt | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) commit 1e8084f879afa2735f3912976ddd0d7b31002b0c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 13:15:29 2011 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit acdfa4478751a5ee7487d0824f87dd3af68334e3 Merge: 35cbd30 8a12620 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 13:11:46 2011 -0200 Merge branch 'fdo-37748' Reviewed-by: Olli Salli (oggis) commit 8a126209bd2e19a00fabf27fad28898ac70629ba Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 20 13:08:48 2011 -0200 ContactManager: Make lookupContactByHandle private. TelepathyQt/contact-manager.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 35cbd30f6786ef2917bdf216f15e9bcb9531cb85 Merge: 1d0cbab 414205a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 13:46:37 2011 -0200 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 1d0cbab74539ca347725a42deab6516f551d4a2a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 13:45:42 2011 -0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 61c6769b263bff1667466e7e3b4c6d3afc06b5ab Merge: db28c27 8364f3c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 13:44:08 2011 -0200 Merge branch 'conn-addressing' Reviewed-by: Olli Salli (oggis) commit db28c27a556f067255a733a3c66213cb1ee5a5b5 Merge: 9a04494 a7b82da Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 13:43:57 2011 -0200 Merge branch 'proto-addressing' Reviewed-by: Olli Salli (oggis) commit a7b82da5198101f85a588e1ea3ac32d3644f9f92 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 13:40:01 2011 -0200 cm-protocol test: Use an instance variable to hold introspection counters. tests/dbus/cm-protocol.cpp | 73 +++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 47 deletions(-) commit 8364f3c131e7f132c719331847005df895bdb437 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 11:40:11 2011 -0200 Contact: Update docs for features to remove redundancy. TelepathyQt/contact.cpp | 18 ------------------ 1 file changed, 18 deletions(-) commit 53f99a457dd9ef4abd9dbc61792f87ee49278b6e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 19 11:38:33 2011 -0200 PendingContacts: Add FIXME to refactor implementation in the future. TelepathyQt/pending-contacts.cpp | 3 +++ 1 file changed, 3 insertions(+) commit dea7116dd065c022901716b45dc92a9b8d050a55 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 22:27:18 2011 -0200 ProtocolInfo: Update docs for normalize* methods. TelepathyQt/protocol-info.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7404dac3b697044003ddd932d4c7e6c62d52aaf3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 22:26:31 2011 -0200 Contact: Update docs for vcardAddresses/uris accessors. TelepathyQt/contact.cpp | 8 -------- 1 file changed, 8 deletions(-) commit b21a17eeed63b8a58877a417db2f4e637fc87ac6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 22:21:52 2011 -0200 PendingContacts: Move common code to check for errors on accessors to a utility function. TelepathyQt/pending-contacts.cpp | 84 ++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 56 deletions(-) commit bccfdeceb86ba2897a2be4587b3ccd9e33521e96 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 21:59:16 2011 -0200 Contact: Rename addressableVCardAddresses/addressableUris to vCardAddresses/uris. TelepathyQt/contact.cpp | 22 +++++++++++----------- TelepathyQt/contact.h | 4 ++-- TelepathyQt/protocol-info.cpp | 4 ++-- tests/dbus/conn-addressing.cpp | 12 ++++++------ 4 files changed, 21 insertions(+), 21 deletions(-) commit d019d8f5ab1f4b1366b4e9b935ed91198957929a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 21:56:47 2011 -0200 ContactManager: Move common code to get real features from features and interfaces from features to utility functions. TelepathyQt/contact-manager.cpp | 94 +++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 56 deletions(-) commit 1a7e6aadcc936301b7860232b8ec1d59f49ff6c2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 21:45:32 2011 -0200 future/conn-addressing: Use TpTests instead of Example as the namespace. tests/dbus/conn-addressing.cpp | 2 +- tests/lib/glib/future/conn-addressing/conn.c | 20 ++++++------ tests/lib/glib/future/conn-addressing/conn.h | 48 ++++++++++++++-------------- 3 files changed, 35 insertions(+), 35 deletions(-) commit a0bd5fed856702d41ec8f4f9cc7afa312b58a4f3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 21:40:05 2011 -0200 cmake: Update FindDBusGlib.cmake to merge DBUS_GLIB_INCLUDE_DIR and DBUS_GLIB_LOWLEVEL_INCLUDE_DIR into DBUS_GLIB_INCLUDE_DIRS. cmake/modules/FindDBusGLib.cmake | 4 ++-- tests/lib/glib/future/conn-addressing/CMakeLists.txt | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) commit d9eaf0848b43901465407d1b0b5b6c601498d4e7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 23:15:25 2011 -0200 ProtocolInfo: Update docs for normalizeVCardAddress/normalizeContactUri. TelepathyQt/contact-manager.cpp | 6 ++++-- TelepathyQt/protocol-info.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) commit 0db45377b3c5635446fed0edcc7a0c5e5b136846 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 22:53:04 2011 -0200 ContactManager: Add docs for contactsForVCardAddresses/contactsForUris. TelepathyQt/contact-manager.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit ba14c28f480c03bb49ab90c4494b60fb2fa7b5a0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 22:52:07 2011 -0200 Contact: Add docs for addressableVCardAddresses/addressableUris/FeatureAddresses. TelepathyQt/contact.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) commit 25ce62c5971f5de2bbf8dc63a99bce7afe4dd692 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 22:29:27 2011 -0200 contacts test: Add test to check that Conn.I.Addressing support is reportedly not available when the connection does not support it. tests/dbus/contacts.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 482cc5c28ffdbe27259cd469adac1ee3b60ef394 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 22:27:47 2011 -0200 PendingContacts: Do not make unnecessary D-Bus round trips when requesting contacts by vcard addresses/uris. TelepathyQt/contact-manager.cpp | 54 +++++++++++++++++++++++++++------ TelepathyQt/pending-contacts-internal.h | 10 ++++-- TelepathyQt/pending-contacts.cpp | 43 ++++++++++++++++++-------- TelepathyQt/pending-contacts.h | 2 ++ 4 files changed, 86 insertions(+), 23 deletions(-) commit b674f09f7c06aac0b0f173f928d1deef9977e8ad Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 22:06:58 2011 -0200 PendingContacts: Use the same slot to handle the return of Conn.I.Addressing GetContactsByVCardField and GetContactsByURI. TelepathyQt/pending-contacts.cpp | 27 ++++----------------------- TelepathyQt/pending-contacts.h | 3 +-- 2 files changed, 5 insertions(+), 25 deletions(-) commit c5bba4ee35e5f85263fe757c2abbb5b2d871ad0e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 20:09:05 2011 -0200 conn-addressing test: Add test for Conn.I.Addressing support. tests/dbus/CMakeLists.txt | 4 +- tests/dbus/conn-addressing.cpp | 403 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 406 insertions(+), 1 deletion(-) commit 7342dbabd6db6cea5d104bf6edfaca149d349cd8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 13:47:11 2011 -0200 future/conn-addressing: Add test glib connection implementing Conn.I.Addressing. tests/lib/glib/CMakeLists.txt | 3 +- tests/lib/glib/future/CMakeLists.txt | 1 + .../lib/glib/future/conn-addressing/CMakeLists.txt | 15 + tests/lib/glib/future/conn-addressing/conn.c | 359 +++++++++++++++++++++ tests/lib/glib/future/conn-addressing/conn.h | 57 ++++ 5 files changed, 434 insertions(+), 1 deletion(-) commit ae2e1e574b0d3e235f4b40ba663e0acc435771b5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 13:44:03 2011 -0200 cmake: Also export DBUS_GLIB_LOWLEVEL_INCLUDE_DIR so one can include . cmake/modules/FindDBusGLib.cmake | 7 +++++++ 1 file changed, 7 insertions(+) commit 093c8a4c5f9fbe55cb13d746b6213fda388b3ca2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 13:43:01 2011 -0200 cmake: Fix FindDBusGLib.cmake to properly search for dbus-glib-1 instead of dbus-glib. cmake/modules/FindDBusGLib.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 1088fd94794099008c74dab5a32375f7d6b63a0b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 13:45:36 2011 -0200 Generate glib code for Conn.I.Addressing to be used by tests. tests/lib/glib/future/extensions/CMakeLists.txt | 5 +++++ tests/lib/glib/future/extensions/all.xml | 1 + tests/lib/glib/future/extensions/connection.xml | 9 +++++++++ tests/lib/glib/future/extensions/extensions.h | 2 ++ 4 files changed, 17 insertions(+) commit 09c8050a223b3564c26aff5da8510dfbe4f76d28 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 10:44:09 2011 -0200 Contact: Rename FeatureAddressing to FeatureAddresses. Also rename internal receiveAddressing to receiveAddresses. TelepathyQt/contact-manager.cpp | 6 +++--- TelepathyQt/contact.cpp | 12 ++++++------ TelepathyQt/contact.h | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) commit 9ad8b0aa48797ea0afa0713b4f2ead8b55d62c82 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 20:07:55 2011 -0200 PendingContacts: Properly use namespace for slots params. TelepathyQt/pending-contacts.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 28df97656140ca4ab40988930cc6d505b0202f32 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 20:24:50 2011 -0200 PendingAddressingGetContacts: Use the same internal variable to represent requested vcard addresses/uris. TelepathyQt/pending-contacts-internal.h | 22 ++++++++++++-------- TelepathyQt/pending-contacts.cpp | 36 +++++++++------------------------ 2 files changed, 23 insertions(+), 35 deletions(-) commit 4040fc272acfc2f7bb864b0488d3b9e6a5d0a8d7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 10:40:16 2011 -0200 PendingContacts: Use the same internal variable to represent (in)valid vcard addresses/uris. TelepathyQt/pending-contacts-internal.h | 13 ++++---- TelepathyQt/pending-contacts.cpp | 53 +++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 24 deletions(-) commit f4c2a2ba05828b1685f39c46a52491512f81ab34 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 10:29:44 2011 -0200 PendingContacts: Use the same internal variable to represent requested ids/vcard addresses/uris. TelepathyQt/pending-contacts.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) commit 68ed2ab674f74132f215bb28f1ddab34cbaa7866 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 14 10:22:03 2011 -0200 PendingContacts: Remove internal ListType enum in favour of RequestType that is now exposed. TelepathyQt/contact-manager.cpp | 12 +++++------ TelepathyQt/pending-contacts.cpp | 43 ++++++++++++++++------------------------ TelepathyQt/pending-contacts.h | 12 +++++++---- 3 files changed, 31 insertions(+), 36 deletions(-) commit 6a284a799bf81220e153e23907c4a437ad6bcdbe Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 9 12:36:30 2011 -0200 Contact: Add accessors for Conn.I.Addressing contact attributes. TelepathyQt/contact-manager.cpp | 8 ++++++-- TelepathyQt/contact.cpp | 33 +++++++++++++++++++++++++++++++++ TelepathyQt/contact.h | 6 ++++++ 3 files changed, 45 insertions(+), 2 deletions(-) commit 873afedbbde2f1076a61b22b5d590614b67081b9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 20:16:50 2011 -0200 PendingContacts: Actually implement support for retrieving contacts using Conn.I.Addressing. TelepathyQt/pending-contacts.cpp | 140 ++++++++++++++++++++++++++++++++++++--- TelepathyQt/pending-contacts.h | 6 ++ 2 files changed, 138 insertions(+), 8 deletions(-) commit def408f3f413333cafd01e3ebd3b4c40f451998f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 20:15:07 2011 -0200 PendingContacts: Add internal pending operation to handle Conn.I.Addressing GetContactsBy*. TelepathyQt/CMakeLists.txt | 1 + TelepathyQt/pending-contacts-internal.h | 78 +++++++++++++++++++++++++++++ TelepathyQt/pending-contacts.cpp | 89 ++++++++++++++++++++++++++++++++- 3 files changed, 166 insertions(+), 2 deletions(-) commit 15b9a9e8a53e6fed63c9ffe1d817f2b0bd22f31e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 18:53:13 2011 -0200 ContactManager: Add skeleton high-level API for Conn.I.Addressing GetContactsByVCardField and GetContactsByURI. TelepathyQt/contact-manager.cpp | 50 +++++++++++++++++-- TelepathyQt/contact-manager.h | 6 +++ TelepathyQt/pending-contacts.cpp | 104 ++++++++++++++++++++++++++++++++++----- TelepathyQt/pending-contacts.h | 24 +++++++-- 4 files changed, 166 insertions(+), 18 deletions(-) commit 0a89f69e5d33733116740588897e6697c7962531 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 17:27:31 2011 -0200 Generate low-level bindings for Conn.I.Addressing. TelepathyQt/CMakeLists.txt | 2 ++ TelepathyQt/future-connection.xml | 26 ++++++++++++++++++++++++++ TelepathyQt/future-interfaces.xml | 1 + TelepathyQt/future-internal.h | 2 ++ TelepathyQt/future.cpp | 3 +++ 5 files changed, 34 insertions(+) commit abf6bcaa42216fcd1209e026ba467f125250cd99 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 21:04:04 2011 -0200 cm-protocol test: Add specific test for Protocol support. tests/dbus/CMakeLists.txt | 1 + tests/dbus/cm-protocol.cpp | 752 ++++++++++++++++++++++++++++++ tests/telepathy/managers/protocol.manager | 35 ++ 3 files changed, 788 insertions(+) commit 7de4b5985d6bb5757574c26ae82e1da4b69ddc75 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 15 21:01:36 2011 -0200 ConnectionManager: Properly check for Protocol interfaces when introspecting. TelepathyQt/connection-manager-internal.h | 1 + TelepathyQt/connection-manager.cpp | 53 +++++++++++++++++-------------- 2 files changed, 31 insertions(+), 23 deletions(-) commit a1136705f9f49c7a5d5efb8514c02272d474f0fc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 13 20:31:53 2011 -0200 ConnectionManager: Don't return a bool value on extract*Properties methods. TelepathyQt/connection-manager-internal.h | 8 ++++---- TelepathyQt/connection-manager.cpp | 28 ++++++++-------------------- 2 files changed, 12 insertions(+), 24 deletions(-) commit 370d8a607e61192a58535f28b91851f5146be047 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 13 20:28:47 2011 -0200 ConnectionManager: Rename methods parsing immutable properties to have "extract" instead of "load" as prefix. TelepathyQt/connection-manager-internal.h | 10 +++++----- TelepathyQt/connection-manager.cpp | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 19 deletions(-) commit aa63ff74f80ca4771cad2aac8bbab80476a52e9b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 13 20:24:43 2011 -0200 ProtocolInfo: More small doc fixes. TelepathyQt/protocol-info.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit da02d15ab5836bfeba3964976b04adee8e5f6f54 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 9 20:01:20 2011 -0200 ProtocolInfo: Remove connectionManager accessor. TelepathyQt/protocol-info.cpp | 41 ++++++++++++++++------------------------- TelepathyQt/protocol-info.h | 4 +--- 2 files changed, 17 insertions(+), 28 deletions(-) commit cf37a455d3ee6cc0c2ced65512886a60f70ca0c7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 9 19:48:23 2011 -0200 ConnectionManager: Use requestAllProperties when requesting main properties and Protocol properties. TelepathyQt/connection-manager-internal.h | 27 ++++-- TelepathyQt/connection-manager.cpp | 141 ++++++++++++------------------ TelepathyQt/connection-manager.h | 8 +- 3 files changed, 83 insertions(+), 93 deletions(-) commit 686806c017db9661ebeb8c84796b8bae65adbb2c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 9 19:15:04 2011 -0200 ProtocolInfo: Fix some small doc issues. TelepathyQt/protocol-info.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 55134a5ad8fc20ef93da0cca5155e5bfa5593b6d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 9 19:11:12 2011 -0200 ConnectionManager: Only introspect Protocol interfaces if immutable properties are not sufficient. TelepathyQt/connection-manager-internal.h | 14 +- TelepathyQt/connection-manager.cpp | 231 ++++++++++++++++++++---------- 2 files changed, 168 insertions(+), 77 deletions(-) commit 414205a4217184903f8047919930fb8d2bb6747b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 9 13:14:18 2011 -0200 shared-ptr.dox: Update docs to refer to RefCounted instead of SharedData. TelepathyQt/shared-ptr.dox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9a04494b8905ac5427c8cc7d427b6f63b41e88aa Author: Dario Freddi Date: Fri Dec 9 14:28:05 2011 +0100 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit f3166fa78a09adc0c5960f797436c5b10d736926 Merge: 08747ed eea66db Author: Dario Freddi Date: Fri Dec 9 14:27:44 2011 +0100 Merge branch 'install-cmake-files' Reviewed-by: Andre Moreira Magalhaes (andrunko) Reviewed-by: George Kiagiadakis (gkiagia) commit eea66db69598bbd02c78aeccbca39b3f308d80fa Author: Dario Freddi Date: Thu Dec 8 16:20:50 2011 +0100 install-cmake-files: Fix include path directory TelepathyQt/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 13f4c05e3b12ed02080768256b9dc88c9df2f6a0 Author: Dario Freddi Date: Thu Dec 8 15:15:22 2011 +0100 install-cmake-files: Fix component names TelepathyQt/CMakeLists.txt | 2 +- TelepathyQt/Farsight/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 351cd1539eb6eb825eea36a8f57930537e91734c Author: Dario Freddi Date: Thu Dec 8 14:57:38 2011 +0100 install-cmake-files: Add config files for both libraries, generating dynamically TpQt4 or TpQt5 files. TelepathyQt/CMakeLists.txt | 43 ++++++++++++++++++++-- TelepathyQt/Farsight/CMakeLists.txt | 31 ++++++++++++++-- .../Farsight/TelepathyQtFarsightConfig.cmake.in | 22 +++++++++++ TelepathyQt/TelepathyQtConfig.cmake.in | 26 +++++++++++++ 4 files changed, 114 insertions(+), 8 deletions(-) commit 5e0093611c475f67a523d5424547d39aa9faf4cb Author: Dario Freddi Date: Thu Dec 8 12:10:16 2011 +0100 install-cmake-files: Add macros for building version files, and for installation of config files cmake/modules/BasicFindPackageVersion.cmake.in | 30 ++++++++++++++++++++++ .../modules/MacroWriteBasicCMakeVersionFile.cmake | 21 +++++++++++++++ cmake/modules/TelepathyDefaults.cmake | 5 ++++ cmake/modules/TpQtMacros.cmake | 15 +++++++++++ 4 files changed, 71 insertions(+) commit 825da5b76de787afbc8df9e4c3272fd97b318a09 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 16:05:50 2011 -0200 cm-basics test: Add tests for ProtocolInfo::normalizeVCardAddress and normalizeContactUri. tests/dbus/cm-basics.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) commit 71ecc04cf049b417c902bfaca7fa0bc393694dc1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 15:53:23 2011 -0200 ProtocolInfo: Add high-level API for Protocol.I.Addressing NormalizeVCardAddress and NormalizeContactURI methods. TelepathyQt/protocol-info.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++- TelepathyQt/protocol-info.h | 4 ++ 2 files changed, 97 insertions(+), 1 deletion(-) commit 6a31309e78cfab18e45493b3b6ee7b48993b307c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 15:51:12 2011 -0200 ProtocolInfo: Add connectionManager() accessor and make isValid() check if CM is still valid. TelepathyQt/connection-manager-internal.h | 4 ++-- TelepathyQt/connection-manager.cpp | 19 +++++++++---------- TelepathyQt/protocol-info.cpp | 25 ++++++++++++++++++------- TelepathyQt/protocol-info.h | 6 ++++-- 4 files changed, 33 insertions(+), 21 deletions(-) commit 576648fff476bedb1978ce9f3b25a8ab4b266d45 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:38:57 2011 -0200 PendingString: Add new generic pending operation for method calls returning a string. TelepathyQt/CMakeLists.txt | 4 ++ TelepathyQt/PendingString | 13 ++++++ TelepathyQt/pending-string.cpp | 101 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt/pending-string.h | 66 +++++++++++++++++++++++++++ 4 files changed, 184 insertions(+) commit 5dcb2d710a0e9c1d0741679587e422de4daeb3c1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:24:53 2011 -0200 cm-basics test: Test Protocol.I.Addressing support. tests/dbus/cm-basics.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit f05e98c014cc33033c8be4cbf324478e6cbba1c1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:24:32 2011 -0200 echo2 cm: Add support for Protocol.I.Addressing. CMakeLists.txt | 4 +- tests/lib/glib/echo2/protocol.c | 93 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 5 deletions(-) commit 9d05c67f73bcd2bce9c887527ef3be27ffbf0cb8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:23:24 2011 -0200 ConnectionManager: Add support for Protocol.I.Addressing. TelepathyQt/connection-manager-internal.h | 2 ++ TelepathyQt/connection-manager.cpp | 50 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) commit f15fb5656daf29113c1e06d8b9e0ae473f843abe Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:22:49 2011 -0200 manager-file test: Test Protocol.I.Addressing properties parsing. tests/manager-file.cpp | 5 +++++ tests/telepathy/managers/test-manager-file.manager | 3 +++ 2 files changed, 8 insertions(+) commit 74d9c34c0b7d606a3e61d878590724adad0e0690 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:22:10 2011 -0200 ManagerFile: Add support for Protocol.I.Addressing properties. TelepathyQt/manager-file.cpp | 17 +++++++++++++++++ TelepathyQt/manager-file.h | 2 ++ 2 files changed, 19 insertions(+) commit fa6e5dc34deb782d3c19ef910d50ea6d10de3f0a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 14:21:41 2011 -0200 ProtocolInfo: Add accessors for Protocol.I.Addressing properties. TelepathyQt/protocol-info.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++ TelepathyQt/protocol-info.h | 5 +++++ 2 files changed, 56 insertions(+) commit 30eebf1778869a17b12ea638385527c622aadb9e Author: Dario Freddi Date: Thu Dec 8 12:05:06 2011 +0100 install-cmake-files: Don't install pkgconfig files on windows TelepathyQt/CMakeLists.txt | 10 ++++++---- TelepathyQt/Farsight/CMakeLists.txt | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) commit 3cd8c402fefb52675560a10242688f28e422b6c5 Author: Dario Freddi Date: Thu Dec 8 11:54:30 2011 +0100 install-cmake-files: Move tp-fs pc files in the Farsight/ directory TelepathyQt/CMakeLists.txt | 7 ------- TelepathyQt/Farsight/CMakeLists.txt | 5 +++++ TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in | 11 +++++++++++ TelepathyQt/Farsight/TelepathyQtFarsight.pc.in | 11 +++++++++++ TelepathyQt/TelepathyQtFarsight-uninstalled.pc.in | 11 ----------- TelepathyQt/TelepathyQtFarsight.pc.in | 11 ----------- 6 files changed, 27 insertions(+), 29 deletions(-) commit 45ccb8e6ebfd0f0456310f821064f9052f0d0af1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 13:16:40 2011 -0200 ConnectionManager: Small refactoring for the introspection of Protocol interfaces. TelepathyQt/connection-manager-internal.h | 1 + TelepathyQt/connection-manager.cpp | 46 +++++++++++++------------------ 2 files changed, 20 insertions(+), 27 deletions(-) commit 08747ed39d72b0a8c6a6ce04629fe725d08f1fdd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 8 11:09:12 2011 -0200 Fix pkgconfig files cflags to properly point to include dir. Reviewed-by: Olli Salli (oggis) TelepathyQt/TelepathyQt.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight.pc.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 7fa1218b0b261f03b7c575a320c7719b90bfe603 Author: Dario Freddi Date: Thu Dec 8 10:17:12 2011 +0100 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit dd79bae817ef261b52db8598812211b5c3b5be75 Author: Dario Freddi Date: Thu Dec 8 10:14:30 2011 +0100 Forward-declare TfChannel in TelepathyQt/Farsight. This way, TelepathyQtFarsight does not depend directly in its interface from tp-farsight and all of its dependencies. This way we can track cmake find files more efficiently. Reviewed-by: Olli Salli (oggis) TelepathyQt/Farsight/channel.cpp | 2 ++ TelepathyQt/Farsight/channel.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) commit 81757710fd525c665f224f15d8a2b5acd9a11787 Merge: a15938d be0cdd1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 7 18:29:58 2011 -0200 Merge branch 'spec-0.25.1' Reviewed-by: Olli Salli (oggis) commit a15938daf968eb96566934b9cae9e6a7f574f842 Merge: 23a9833 e125025 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 7 17:56:31 2011 -0200 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit be0cdd10431c1eda979710c500f10ac23bc336b1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 7 17:10:39 2011 -0200 Generate low-level bindings for Protocol.I.Addressing and add missing ProtocolInterface* pretty headers. TelepathyQt/CMakeLists.txt | 4 ++++ TelepathyQt/ProtocolAddressingInterface | 13 +++++++++++++ TelepathyQt/ProtocolAvatarsInterface | 13 +++++++++++++ TelepathyQt/ProtocolInterface | 13 +++++++++++++ TelepathyQt/ProtocolPresenceInterface | 13 +++++++++++++ TelepathyQt/connection-manager.xml | 1 + 6 files changed, 57 insertions(+) commit df340586c4e610fbf8f06284124cbbb4b0abbdd5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 7 17:53:05 2011 -0200 Generate low-level bindings for Chan.I.FileTransferMetadata/SMS. TelepathyQt/CMakeLists.txt | 2 ++ TelepathyQt/ChannelInterfaceFileTransferMetadataInterface | 13 +++++++++++++ TelepathyQt/ChannelInterfaceSMSInterface | 13 +++++++++++++ TelepathyQt/channel.xml | 2 ++ 4 files changed, 30 insertions(+) commit e125025b2c40ed789f4993428e71a4d02a622d39 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 7 17:19:26 2011 -0200 Small fix on generated proxy documentation. tools/qt-client-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2e4b476e1a627934d5cb05232e6d98c8fabc7afb Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 7 13:55:44 2011 -0200 Update to spec 0.25.1. spec/Account.xml | 2 + spec/Account_Interface_Avatar.xml | 3 + spec/Account_Manager.xml | 26 +- spec/Call_Content.xml | 138 ++-- spec/Call_Content_Interface_Audio_Control.xml | 111 ++++ spec/Call_Content_Interface_Media.xml | 562 +++++++++++----- spec/Call_Content_Interface_Video_Control.xml | 7 +- spec/Call_Content_Media_Description.xml | 236 +++++++ ...Description_Interface_RTCP_Extended_Reports.xml | 145 +++++ ...t_Media_Description_Interface_RTCP_Feedback.xml | 61 ++ ...Description_Interface_RTP_Header_Extensions.xml | 73 +++ spec/Call_Interface_Mute.xml | 146 +++++ spec/Call_Stream.xml | 110 +++- spec/Call_Stream_Endpoint.xml | 284 ++++++++- spec/Call_Stream_Interface_Media.xml | 395 ++++++++++-- spec/Channel_Dispatcher.xml | 203 +++++- spec/Channel_Interface_DTMF.xml | 4 +- spec/Channel_Interface_File_Transfer_Metadata.xml | 98 +++ spec/Channel_Interface_Group.xml | 86 +++ spec/Channel_Interface_Hold.xml | 16 +- spec/Channel_Interface_Media_Signalling.xml | 50 +- spec/Channel_Interface_Messages.xml | 63 +- spec/Channel_Interface_Password.xml | 26 +- spec/Channel_Interface_Picture.xml | 198 ++++++ spec/Channel_Interface_Room.xml | 119 ++-- spec/Channel_Interface_Room_Config.xml | 267 ++++++++ spec/Channel_Interface_SMS.xml | 110 +++- spec/Channel_Interface_Subject.xml | 128 ++++ spec/Channel_Interface_Tube.xml | 53 +- spec/Channel_Request.xml | 44 +- spec/Channel_Type_Call.xml | 710 +++++++++++++-------- spec/Channel_Type_Contact_List.xml | 3 + spec/Channel_Type_Contact_Search.xml | 23 +- spec/Channel_Type_DBus_Tube.xml | 12 +- spec/Channel_Type_File_Transfer.xml | 25 +- spec/Channel_Type_Room_List.xml | 8 +- spec/Channel_Type_Text.xml | 135 ++-- spec/Connection.xml | 12 + spec/Connection_Interface_Addressing.xml | 94 ++- spec/Connection_Interface_Balance.xml | 20 + spec/Connection_Interface_Forwarding.xml | 2 +- spec/Connection_Interface_Location.xml | 2 +- spec/Connection_Interface_Requests.xml | 5 +- spec/Connection_Interface_Simple_Presence.xml | 107 +++- spec/Connection_Manager.xml | 22 +- spec/Media_Stream_Handler.xml | 203 +++++- spec/Properties_Interface.xml | 2 + spec/Protocol.xml | 15 +- spec/Protocol_Interface_Addressing.xml | 79 ++- spec/Protocol_Interface_Avatars.xml | 16 +- spec/all.xml | 20 +- spec/errors.xml | 60 +- spec/template.xml | 2 +- 53 files changed, 4260 insertions(+), 1081 deletions(-) commit 23a9833698cf34f1df543b6c94166f151a1f76b7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 14:20:27 2011 -0200 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit d81ba55a37f9ac1e344e850f2a1cef51fdca19b1 Merge: f3c9172 878b416 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 14:16:47 2011 -0200 Merge branch 'shared-ptr' Reviewed-by: Olli Salli (oggis) commit f3c9172a9150f88ea5ee5ee0a8b0f070358960b1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 14:09:52 2011 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 4f23d1941a57c9d0daa2bea90aa91de3094e4d73 Merge: ea1d3b0 cf870c9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 14:12:02 2011 -0200 Merge branch 'key-manager-file-internal' Reviewed-by: Olli Salli (oggis) commit 878b41671b9b9ab5d009f26c3a6d696a56bc59ca Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 13:44:52 2011 -0200 WeakPtr: Improve docs. TelepathyQt/shared-ptr.dox | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 5afb91381f2aad9bfc0551d052b0936ca5cfd826 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 13:41:01 2011 -0200 SharedPtr: Make SharedCount an internal class of RefCounted. TelepathyQt/shared-ptr.h | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) commit cf870c984c02f918a1779f889da461ee710beb2f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 12:46:17 2011 -0200 ManagerFile: Unexport. TelepathyQt/manager-file.h | 2 +- tests/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit cd08965e640b50aee8f82d587f812601ec7928da Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 12:46:00 2011 -0200 KeyFile: Unexport. TelepathyQt/key-file.h | 2 +- tests/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit a39e19981a5885a8ae49a7eb3cea6e9153a21b2d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 12:44:54 2011 -0200 Do not include test-backdoors.* in the main library. TelepathyQt/CMakeLists.txt | 2 -- tests/CMakeLists.txt | 2 +- tests/dbus/CMakeLists.txt | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) commit d07b554077861780003c08d8362fc5ba63d97123 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 6 12:43:46 2011 -0200 Add static (internal) library to be used by tests to test unexported symbols. TelepathyQt/CMakeLists.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit ec6fc494cf07377f305e769ca48585692e49ee85 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 19:12:40 2011 -0200 Make ManagerFile an internal class. TelepathyQt/CMakeLists.txt | 3 +-- TelepathyQt/ManagerFile | 13 ------------- TelepathyQt/connection-manager.cpp | 2 +- TelepathyQt/manager-file.cpp | 5 +---- TelepathyQt/manager-file.h | 8 ++++---- TelepathyQt/profile.cpp | 2 +- TelepathyQt/protocol-parameter.cpp | 2 +- tests/manager-file.cpp | 2 +- 8 files changed, 10 insertions(+), 27 deletions(-) commit e1c6a180e9123cae2c05a21e088d593985a59438 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 19:05:10 2011 -0200 Make KeyFile an internal class. TelepathyQt/CMakeLists.txt | 3 +-- TelepathyQt/KeyFile | 13 ------------- TelepathyQt/key-file.cpp | 6 +----- TelepathyQt/key-file.h | 8 ++++---- TelepathyQt/manager-file.cpp | 2 +- tests/key-file.cpp | 2 +- 6 files changed, 8 insertions(+), 26 deletions(-) commit ea1d3b02c661ce4c20d931b91aba758521246c24 Author: Dario Freddi Date: Mon Dec 5 18:35:25 2011 +0100 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 60702e3a2c74c9595ce34a4e74ccb0d040962ea2 Merge: abc7b13 1bc89f4 Author: Dario Freddi Date: Mon Dec 5 18:32:12 2011 +0100 Merge branch 'available-message-types' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 1bc89f4be4b575ff494aa009a03cd31085fa689e Author: Dario Freddi Date: Mon Dec 5 18:15:15 2011 +0100 available-message-types: Check for every supported type in the unit test tests/dbus/text-chan.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit db3f089c48afb960f5fc2065096d9c9e2bb4e577 Author: Dario Freddi Date: Mon Dec 5 18:09:55 2011 +0100 available-message-types: Use foreach instead of Q_FOREACH TelepathyQt/text-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fa02781a147b7dc10f3e3d3664e63826c0ecccd5 Author: Dario Freddi Date: Mon Dec 5 18:09:01 2011 +0100 available-message-types: Check for the correct feature TelepathyQt/text-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0074738ea236a5e9bb717b41a5238a6477fe9a00 Author: Dario Freddi Date: Mon Dec 5 17:03:20 2011 +0100 available-message-types: Add relevant unit test tests/dbus/text-chan.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 546a2d48322d2895f47564d0eb66dc1390cdaacc Author: Dario Freddi Date: Mon Dec 5 15:55:52 2011 +0100 available-message-types: Implement supportedMessageTypes TelepathyQt/text-channel.cpp | 17 +++++++++++++++++ TelepathyQt/text-channel.h | 1 + 2 files changed, 18 insertions(+) commit efbec929ef4b7a1770f5536bb63ea28236bfa490 Author: Dario Freddi Date: Mon Dec 5 15:54:55 2011 +0100 available-message-types: Use a list of ChannelTextMessageTypes instead of a UIntList TelepathyQt/text-channel.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 15ba71fd169a595ad2af963a71fe595fbadf0852 Author: Dario Freddi Date: Mon Dec 5 15:46:50 2011 +0100 available-message-types: Rename variable to supportedMessageTypes TelepathyQt/text-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit da130c91c2168026f55beef9f7118d062f9221b6 Author: Dario Freddi Date: Mon Dec 5 15:46:14 2011 +0100 available-message-types: Check if feature is available TelepathyQt/text-channel.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 53037d11c1ff51fad9a6687d1492018ab2dd5564 Author: Dario Freddi Date: Mon Dec 5 15:45:53 2011 +0100 available-message-types: Update documentation TelepathyQt/text-channel.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit aaa15f3a8f16b11b371fef1864aeb1dcc18d1397 Author: David Edmundson Date: Wed Sep 28 18:35:50 2011 +0100 available-message-types: Add a method to find available message types for a text channel. TelepathyQt/text-channel.cpp | 12 ++++++++++++ TelepathyQt/text-channel.h | 1 + 2 files changed, 13 insertions(+) commit abc7b13c51e8b2b24e3733ce9b6c761b9fdc7d3e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 14:52:45 2011 -0200 Update NEWS NEWS | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) commit c68d2507006bfe06369352bed94269ff3ddeb87f Merge: cf07b76 9c3f3a8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 14:49:05 2011 -0200 Merge branch 'deprecations' Reviewed-by: Olli Salli (oggis) commit cf07b765692131d93f53ea5935b9534d5e788344 Merge: 6f0c193 4530ffc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 14:30:36 2011 -0200 Merge branch 'qt5' Reviewed-by: Olli Salli (oggis) commit ec19516a02ed1831e6b607b5e37feabf17bc8c13 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 13:46:44 2011 -0200 SharedPtr: Update docs. TelepathyQt/shared-ptr.dox | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) commit 4b366f5ea0198293e6f4d2c8c725065886abb703 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 13:34:27 2011 -0200 ptr test: Improve tests for thread safety. tests/ptr.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) commit e1e14134ff816afc38fd0a602303309c041decef Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 13:20:16 2011 -0200 WeakPtr: Add constructor receiving a bare pointer. TelepathyQt/connection-manager-internal.h | 2 +- TelepathyQt/connection-manager.cpp | 2 +- TelepathyQt/connection.cpp | 4 ++-- TelepathyQt/contact-manager.cpp | 4 ++-- TelepathyQt/shared-ptr.h | 9 +++++++++ 5 files changed, 15 insertions(+), 6 deletions(-) commit 3ee2bbefb77b280743fda9621040ea4886ae6ac5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 13:04:56 2011 -0200 RefCounted: Make ref/deref private. Note that ContactManager uses ref/deref directly to circumvent a reference cycle when using contact list channels, due to the fact that Channels hold strong references to their parent Connection, but not needed when using Conn.I.ContactList and friends. So remove the "friend class ContactManager" when Conn.I.ContactList becomes mandatory. TelepathyQt/shared-ptr.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 3991207f5ad5c8523d39c77a3d069d897b615682 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 5 12:37:30 2011 -0200 Make RefCounted and SharedCount members private. TelepathyQt/shared-ptr.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 245ebe5b4e1f9ad23295674bc9ca04611531254d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 2 14:37:21 2011 -0200 SharedPtr: Make doxygen skip SharedCount internal class. TelepathyQt/shared-ptr.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 6ad301a052933eb4c6cefc2969767b78af96460f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 2 14:31:25 2011 -0200 SharedPtr: Add blank lines before destructors. TelepathyQt/shared-ptr.h | 2 ++ 1 file changed, 2 insertions(+) commit b4e6267dd8728cd92932fa096ef80d88ef2ccfdd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 2 14:28:46 2011 -0200 Properly use QWeakPointer/WeakPtr where appropriate and remove usage of QPointer. TelepathyQt/channel-dispatch-operation.cpp | 2 -- TelepathyQt/connection-manager-internal.h | 2 +- TelepathyQt/connection-manager.cpp | 5 ++-- TelepathyQt/connection.cpp | 37 +++++++++++------------------- TelepathyQt/contact-manager.cpp | 4 ++-- TelepathyQt/message.cpp | 1 - TelepathyQt/referenced-handles.cpp | 1 - TelepathyQt/streamed-media-channel.cpp | 4 ++-- tests/dbus/streamed-media-chan.cpp | 6 ++--- 9 files changed, 24 insertions(+), 38 deletions(-) commit c601691d7cb0c81ffaf32907dad5e7385034f9ab Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 2 01:17:32 2011 -0200 ptr: Add test to check for thread safety. tests/ptr.cpp | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) commit d370549c8eb9a5c67c6e938e9bad80bdb8815979 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 2 01:20:49 2011 -0200 ptr test: Reinstate WeakPtr tests. tests/ptr.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) commit 399da2c89e9f7ea43804d4afbd094ee17e3dc649 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 2 01:20:14 2011 -0200 Reinstate WeakPtr and make Shared/WeakPtr thread-safe. TelepathyQt/CMakeLists.txt | 3 +- TelepathyQt/WeakPtr | 13 ++ TelepathyQt/connection-manager-internal.h | 5 +- TelepathyQt/connection-manager.cpp | 2 +- TelepathyQt/connection.cpp | 6 +- TelepathyQt/contact-manager.cpp | 9 +- TelepathyQt/contact.cpp | 4 +- TelepathyQt/dbus-proxy-factory-internal.h | 2 +- TelepathyQt/dbus-proxy-factory.cpp | 2 +- TelepathyQt/message.cpp | 4 +- TelepathyQt/referenced-handles.cpp | 4 +- TelepathyQt/request-temporary-handler-internal.cpp | 2 +- TelepathyQt/request-temporary-handler-internal.h | 4 +- TelepathyQt/shared-ptr.h | 135 +++++++++++++++++++-- TelepathyQt/simple-observer-internal.h | 8 +- TelepathyQt/simple-observer.cpp | 8 +- 16 files changed, 166 insertions(+), 45 deletions(-) commit 9c3f3a8d7b34b1b63818ba9f82c434558b3073c8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 25 13:32:16 2011 -0200 Channel: Elaborate a bit more on the docs for groupContacts/LocalPendingContacts/RemotePendingContacts. TelepathyQt/channel.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) commit 0f93c56e3d8173d57cc8e889e36ac329e98513e3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 25 13:01:19 2011 -0200 Channel: Refactor groupContacts/LocalPendingContacts/RemotePendingContacts handling of includeSelfContact param and properly document the param. TelepathyQt/channel.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) commit a8425e4ffadd0cc93771e9659ea2546d54e52122 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 25 12:57:55 2011 -0200 AbstractClient: Do not leak mPriv. TelepathyQt/abstract-client.cpp | 1 + 1 file changed, 1 insertion(+) commit dc5a51ce618ad7e9f4357c2a19a659ce660b4e49 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 19:47:10 2011 -0200 StreamTubeChannel: Return a QSet instead of a UIntList on connections(). TelepathyQt/stream-tube-channel.cpp | 6 +++--- TelepathyQt/stream-tube-channel.h | 3 +-- TelepathyQt/stream-tube-client.cpp | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) commit 5435a7f610aaff10dd54f5e19f55bcfa0e53bd5c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 19:46:10 2011 -0200 Channel: Add includeSelfContact param to groupContacts and groupLocal/RemotePendingContacts. TelepathyQt/channel.cpp | 15 ++++++++++++--- TelepathyQt/channel.h | 10 +++------- 2 files changed, 15 insertions(+), 10 deletions(-) commit bba1a7425031caeef46e3c3a9b511418efdb65e7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 19:45:16 2011 -0200 AbstractClient: Move AbstractClientHandler::set/isRegistered to AbstractClient and add priv member. TelepathyQt/abstract-client.cpp | 46 +++++++++++++++++++++++++---------------- TelepathyQt/abstract-client.h | 18 +++++++++------- 2 files changed, 39 insertions(+), 25 deletions(-) commit 3760fbc87677ac648a0a9e9bc9718d2695c84003 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 17:57:58 2011 -0200 Account: Collapse create/ensure* overload methods without a hints arg with the corresponding hints versions. TelepathyQt/account.cpp | 207 ------------------------------------------------ TelepathyQt/account.h | 178 ++++++++++------------------------------- 2 files changed, 42 insertions(+), 343 deletions(-) commit ff72667e7dc182e6bfcf5f4bc582b3d2c8fdc916 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 22 17:47:58 2011 -0200 PendingOperation: Update doc for object(). TelepathyQt/pending-operation.cpp | 4 ---- 1 file changed, 4 deletions(-) commit 1b2edb7c1245955793f8b60d60100c1da50f0f05 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 22 17:47:38 2011 -0200 Contact: Remove docs for deprecated methods. TelepathyQt/contact.cpp | 21 --------------------- 1 file changed, 21 deletions(-) commit 18ac4af1dec24d84f5696781a7c4c5d19968f987 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 22 17:47:27 2011 -0200 ContactManager: Remove docs for deprecated methods. TelepathyQt/contact-manager.cpp | 20 -------------------- 1 file changed, 20 deletions(-) commit 2b84d429e38fbbad91f4a6d641b062a924fa67fe Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 22 17:44:38 2011 -0200 ChannelRequest: Remove deprecated signals. TelepathyQt/channel-request.cpp | 15 --------------- TelepathyQt/channel-request.h | 5 ----- 2 files changed, 20 deletions(-) commit 84fa2b8bc9fc8b47d2111e82f665cb582dbfd218 Author: Jeremy Whiting Date: Fri Nov 11 19:31:35 2011 -0700 Contact: Remove deprecated signals. TelepathyQt/contact.cpp | 13 ------------- TelepathyQt/contact.h | 8 -------- tests/dbus/conn-roster-legacy.cpp | 6 +++--- tests/dbus/conn-roster.cpp | 6 +++--- 4 files changed, 6 insertions(+), 27 deletions(-) commit cd02d4099aed0b2750c9c2f72b1f1c1152948146 Author: Jeremy Whiting Date: Fri Nov 11 19:06:51 2011 -0700 ContactManager::Roster: Remove deprecated signals. ContactManager: Remove deprecated connectNotify method. TelepathyQt/contact-manager-roster.cpp | 10 ---------- TelepathyQt/contact-manager.cpp | 9 --------- TelepathyQt/contact-manager.h | 9 --------- tests/dbus/conn-roster.cpp | 2 +- 4 files changed, 1 insertion(+), 29 deletions(-) commit 7a01a68f49d735cb817e3b1b488e625749598f2f Author: Jeremy Whiting Date: Fri Nov 11 19:03:23 2011 -0700 IncomingStreamTubeChannel: Remove deprecated localAddress and ipAddress methods. TelepathyQt/incoming-stream-tube-channel.cpp | 32 ---------------------------- TelepathyQt/incoming-stream-tube-channel.h | 4 ---- 2 files changed, 36 deletions(-) commit c2d502b033be011c30c8bd21f97bdb54b65d4cca Author: Jeremy Whiting Date: Fri Nov 11 18:59:32 2011 -0700 TubeChannel: Remove deprecated connectNotify method. TubeChannel: Remove deprecated tubeStateChanged signal. TelepathyQt/simple-stream-tube-handler.cpp | 2 +- TelepathyQt/stream-tube-channel.cpp | 5 ----- TelepathyQt/stream-tube-channel.h | 2 -- TelepathyQt/tube-channel.cpp | 21 --------------------- TelepathyQt/tube-channel.h | 6 ------ 5 files changed, 1 insertion(+), 35 deletions(-) commit 5176d1db49d28259a0d7663e29fd552a68a26c3b Author: Jeremy Whiting Date: Fri Nov 11 18:59:08 2011 -0700 Contact: Remove deprecated connectNotify method. TelepathyQt/contact.cpp | 11 ----------- TelepathyQt/contact.h | 3 --- 2 files changed, 14 deletions(-) commit 20238d32a252a94ab749c33c87836110b1e0b7e6 Author: Jeremy Whiting Date: Thu Nov 10 14:39:20 2011 -0700 PendingOperation: Removed deprecated public object method. PendingOperation: Renamed protected _object() to _object(). TelepathyQt/channel.cpp | 6 +++--- TelepathyQt/contact-manager-roster.cpp | 2 +- TelepathyQt/pending-account.cpp | 2 +- TelepathyQt/pending-channel-request.cpp | 4 ++-- TelepathyQt/pending-connection.cpp | 2 +- TelepathyQt/pending-contact-attributes.cpp | 2 +- TelepathyQt/pending-contact-info.cpp | 2 +- TelepathyQt/pending-handles.cpp | 2 +- TelepathyQt/pending-operation.cpp | 6 ------ TelepathyQt/pending-operation.h | 4 +--- TelepathyQt/pending-ready.cpp | 2 +- TelepathyQt/pending-send-message.cpp | 4 ++-- TelepathyQt/streamed-media-channel.cpp | 2 +- tests/dbus/dbus-proxy-factory.cpp | 14 -------------- 14 files changed, 16 insertions(+), 38 deletions(-) commit 1c6962eb62e90f755e23060be1b7d6b227408e61 Author: Jeremy Whiting Date: Tue Nov 8 20:38:36 2011 -0700 StreamTubeChannel: Remove deprecated methods. TelepathyQt/stream-tube-channel.cpp | 16 ---------------- TelepathyQt/stream-tube-channel.h | 2 -- 2 files changed, 18 deletions(-) commit 2e8c8216974f98b4f8f1d8299bcc4b41dbb02477 Author: Jeremy Whiting Date: Tue Nov 8 20:38:17 2011 -0700 TubeChannel: Remove deprecated methods. TelepathyQt/tube-channel.cpp | 8 -------- TelepathyQt/tube-channel.h | 1 - 2 files changed, 9 deletions(-) commit f651e839b31ef1d804256ca2facfed0f8eaf0a84 Author: Jeremy Whiting Date: Tue Nov 8 20:38:00 2011 -0700 Contact: Remove deprecated methods. TelepathyQt/contact.cpp | 9 --------- TelepathyQt/contact.h | 1 - 2 files changed, 10 deletions(-) commit ff0d03db39c48ffd5257dd4a257b4ed9f183e952 Author: Jeremy Whiting Date: Tue Nov 8 20:37:39 2011 -0700 ContactManager: Remove deprecated methods. Fix test. TelepathyQt/contact-manager.cpp | 20 -------------------- TelepathyQt/contact-manager.h | 3 --- tests/dbus/conn-roster-groups-legacy.cpp | 6 +++--- 3 files changed, 3 insertions(+), 26 deletions(-) commit 98cedd09523ba633f78a0f653f96ff42211f23fe Author: Jeremy Whiting Date: Tue Nov 8 20:36:44 2011 -0700 Connection-Capabilities: Remove deprecated methods. Fix test. TelepathyQt/connection-capabilities.cpp | 24 ------------------------ TelepathyQt/connection-capabilities.h | 4 ---- tests/capabilities.cpp | 15 --------------- 3 files changed, 43 deletions(-) commit 02c77f73dff0439037ac68bbb6854809388de88f Author: Jeremy Whiting Date: Tue Nov 8 20:36:04 2011 -0700 Profile: Remove deprecated methods. TelepathyQt/profile.cpp | 8 -------- TelepathyQt/profile.h | 1 - 2 files changed, 9 deletions(-) commit fc3c4e2ebfebf7749f9f9d625f44df76eec1677a Author: Jeremy Whiting Date: Tue Nov 8 20:35:39 2011 -0700 Account: Remove deprecated methods. TelepathyQt/account.cpp | 26 -------------------------- TelepathyQt/account.h | 12 ------------ 2 files changed, 38 deletions(-) commit 4530ffc84bff124877b5390e59a06b51278cdc65 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 25 12:40:05 2011 -0200 Mention Qt bugs in the comments for disabling tubes tests if building against Qt5. tests/dbus/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 512406295c52a4705652795109b8f932b441af6f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 25 12:34:17 2011 -0200 StreamTubeCLient: Update docs mentioning QHostAddress::AnyIPv4. TelepathyQt/stream-tube-client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bc880afea2091968f7b2c39988219bc001dff256 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 19:47:41 2011 -0200 Remove already fixed TODO. TelepathyQt/channel-class-spec.h | 1 - 1 file changed, 1 deletion(-) commit 76b0076c552b0a023bcf75990297f42ce5083d68 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 18:51:42 2011 -0200 FIXME: Temporarily disable tube tests until Qt5 QHostAddress bugs are fixed. tests/dbus/CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit b206f7368c4f2b5973221016b3ab3e683e5e0cc6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 18:46:58 2011 -0200 Fix docs mentioning QHostAddress::AnyIPv4. TelepathyQt/incoming-stream-tube-channel.cpp | 4 ++-- TelepathyQt/stream-tube-client.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 70478034525f500bce7ecc2bfd538a4f4409268e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 18:46:33 2011 -0200 Properly check for MIN/MAX Qt versions in pkg-config files. TelepathyQt/TelepathyQt-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQt.pc.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 328eb296e19067fb00fe30f8bacfd2e184538589 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 18:40:04 2011 -0200 Remove the hack to avoid using QHostAddress operator==(SpecialAddress). Qt should be fixed instead. TelepathyQt/incoming-stream-tube-channel.cpp | 8 ++++---- TelepathyQt/outgoing-stream-tube-channel.cpp | 2 +- TelepathyQt/stream-tube-client.cpp | 4 ++-- TelepathyQt/stream-tube-server.cpp | 12 ++++++------ 4 files changed, 13 insertions(+), 13 deletions(-) commit df6d4fcdabe82fd018e6bfebd2f06d32e0d36138 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 18:03:10 2011 -0200 StreamTubeChannel: Actually make it work with Qt5 when handling QHostAddress::Any*. TelepathyQt/incoming-stream-tube-channel.cpp | 25 ++++++++++++++++--------- TelepathyQt/outgoing-stream-tube-channel.cpp | 19 +++++++++++++------ TelepathyQt/stream-tube-client.cpp | 15 ++++++++++++--- TelepathyQt/stream-tube-server.cpp | 12 ++++++------ 4 files changed, 47 insertions(+), 24 deletions(-) commit 6d31094eed4ffd4cf7bab6a4ba693c1221d7fe84 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 16:17:58 2011 -0200 Also set a Qt max version as Requires.private in pkg-config files. This is to avoid having TelepathyQt4.pc pick Qt5 instead of Qt4. CMakeLists.txt | 2 ++ TelepathyQt/TelepathyQt-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQt.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight.pc.in | 2 +- cmake/modules/FindQt.cmake | 2 ++ 6 files changed, 8 insertions(+), 4 deletions(-) commit cbe9beffacabd2029a325813d085336b81693be2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 16:09:28 2011 -0200 Revert change to bump Qt4 dependency to 4.8. CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a12afb4ea8a96ca1a40cb3a4b4d14bc2ee57ecf9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 16:01:39 2011 -0200 Install separate headers and pkgconfig files depending on the version of Qt being used. TelepathyQt/CMakeLists.txt | 20 ++++++++++---------- TelepathyQt/Farsight/CMakeLists.txt | 18 +++++++++--------- TelepathyQt/TelepathyQt-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQt.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight-uninstalled.pc.in | 4 ++-- TelepathyQt/TelepathyQtFarsight.pc.in | 4 ++-- 6 files changed, 25 insertions(+), 25 deletions(-) commit 69708dfc3bfe03c17948d4c385ef82712f079759 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 15:23:38 2011 -0200 Generate libtelepathy-qt4 and libtelepathy-qt5 depending on the version of Qt being used. CMakeLists.txt | 33 +++++++++++------------ TelepathyQt/CMakeLists.txt | 16 +++++------ TelepathyQt/Farsight/CMakeLists.txt | 14 +++++----- TelepathyQt/TelepathyQt-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQt.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight.pc.in | 2 +- cmake/modules/TpQtMacros.cmake | 4 +-- examples/accounts/CMakeLists.txt | 2 +- examples/contact-messenger/CMakeLists.txt | 2 +- examples/extensions/CMakeLists.txt | 2 +- examples/file-transfer/CMakeLists.txt | 4 +-- examples/protocols/CMakeLists.txt | 2 +- examples/roster/CMakeLists.txt | 4 +-- examples/stream-tubes/CMakeLists.txt | 4 +-- tests/lib/CMakeLists.txt | 2 +- tests/lib/glib-helpers/CMakeLists.txt | 2 +- 17 files changed, 48 insertions(+), 51 deletions(-) commit 4565ee9f5b4b1191d1889c9b628456d43c2f0bab Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 24 14:37:24 2011 -0200 StreamTubeChannel: Handle QHostAddress::Any as QHostAddress::AnyIPv4 when using Qt5. TelepathyQt/incoming-stream-tube-channel.cpp | 14 +++++--------- TelepathyQt/stream-tube-client.cpp | 21 ++++++--------------- TelepathyQt/stream-tube-server.cpp | 12 ++++++------ tests/dbus/stream-tube-chan.cpp | 8 -------- tests/dbus/stream-tube-handlers.cpp | 8 -------- 5 files changed, 17 insertions(+), 46 deletions(-) commit ceee628a9e90440d20953906c258ebb9f95c7237 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:48:58 2011 -0200 StreamTubeChannel: Properly handle QHostAddress::Any/IPv4. Qt5 changed the semantics of QHostAddress::Any to mean either IPv4 or IPv6, and added a new enum QHostAddress::AnyIPv4 for IPv4 only. TelepathyQt/incoming-stream-tube-channel.cpp | 16 ++++++++++++--- TelepathyQt/stream-tube-client.cpp | 30 ++++++++++++++++++---------- TelepathyQt/stream-tube-server.cpp | 8 ++++++++ tests/dbus/stream-tube-chan.cpp | 10 +++++++++- tests/dbus/stream-tube-handlers.cpp | 8 ++++++++ 5 files changed, 58 insertions(+), 14 deletions(-) commit 82d132c33a62d3e36efd7893003abc4da8d813c8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 21:31:56 2011 -0200 Properly pass moc flags, options to QT4/5_CREATE_MOC_COMMAND. cmake/modules/FindQt.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 955d6a22b4df59a2871d929c8c99ec4851295511 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:54:27 2011 -0200 Add Qt5 support. CMakeLists.txt | 29 +++++++++++++++++++---------- cmake/modules/TpQtMacros.cmake | 16 ++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) commit d18a8284c433a9c1929f60ebe83933a0b6e57da2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:53:18 2011 -0200 Update pkg-config files Requires.private to check for proper Qt version. TelepathyQt/TelepathyQt-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQt.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight-uninstalled.pc.in | 2 +- TelepathyQt/TelepathyQtFarsight.pc.in | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 1e1034a8f929f3a15e4c35d176bd393975ec5ba0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:51:48 2011 -0200 Add FindQt.cmake to help searching for Qt4 or Qt5. cmake/modules/FindQt.cmake | 83 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) commit da19121a0744253f0ad2818c340491e4c6ba4505 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:50:30 2011 -0200 Add temporary FindQt5/Qt5Macros.cmake files to find Qt5. Once Qt5 or cmake provides support for finding Qt5, these files will not be needed and should be deleted. cmake/modules/FindQt5.cmake | 157 ++++++++++++++++++++++++++++++++++++++++++ cmake/modules/Qt5Macros.cmake | 63 +++++++++++++++++ 2 files changed, 220 insertions(+) commit ea0cfcd30d2d479f28a010509edea3362f0efe61 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:47:03 2011 -0200 shared-ptr: Do not use deprecated Qt5 method QAtomicInt::operator int(). TelepathyQt/shared-ptr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3ca21aa285473373f673bb0bee596be4de5dc429 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:46:33 2011 -0200 global: Change doxygen group for macros. TelepathyQt/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6b17778ac18dc28316a97bb2dbd99fee3524c160 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:45:49 2011 -0200 accounts example: Include QApplication header as it's not part of QtGui in Qt5. examples/accounts/main.cpp | 1 + 1 file changed, 1 insertion(+) commit 2a3e2afb5f1f24038b29cbfecc34d1064e09801d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:45:08 2011 -0200 roster example: Include QApplication header as it's not part of QtGui in Qt5. examples/roster/main.cpp | 1 + 1 file changed, 1 insertion(+) commit 14926bf18068bf579c0f828c727064412b55e846 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:43:53 2011 -0200 Properly link telepathy-qt library to Qt libraries. TelepathyQt/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit da6cf83f0fde7a604110429f37b7ffb137e01ddc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:43:35 2011 -0200 stream-tubes example: Properly link to Qt libraries. examples/stream-tubes/CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit b9255df03f4a36dd06b65e16e2dafedde3d252e9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:43:19 2011 -0200 roster example: Properly link to Qt libraries. examples/roster/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit fcafd7799013907811525903e598930d1eb3ec74 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:43:01 2011 -0200 protocols example: Properly link to Qt libraries. examples/protocols/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 58b1ba7048e6b65534be3f54daa6e57a3c3b5a91 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:42:44 2011 -0200 file-transfer example: Properly link to Qt libraries. examples/file-transfer/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 14905ecefcc71780413d81295ab5b7ecdb3bf1a1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:42:23 2011 -0200 contact-messenger example: Properly link to Qt libraries. examples/contact-messenger/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 73ccd464c77ead0aa2a124950f1c6962ed8d73e6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 23 20:41:54 2011 -0200 accounts example: Properly link to Qt libraries. examples/accounts/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 64f2fb1d8406000815294b81035228af041358e0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 22 18:39:46 2011 -0200 Only generate QLatin1String macros for errors/constants. TelepathyQt/CMakeLists.txt | 2 - TelepathyQt/Farsight/channel.cpp | 2 +- TelepathyQt/account-manager.cpp | 2 +- TelepathyQt/account.cpp | 142 ++++++++++++------------- TelepathyQt/channel-class-spec.cpp | 50 ++++----- TelepathyQt/channel-class-spec.h | 32 +++--- TelepathyQt/channel-dispatch-operation.cpp | 8 +- TelepathyQt/channel-request.cpp | 24 ++--- TelepathyQt/channel.cpp | 116 ++++++++++---------- TelepathyQt/client-registrar.cpp | 10 +- TelepathyQt/connection-manager.cpp | 50 ++++----- TelepathyQt/connection.cpp | 88 +++++++-------- TelepathyQt/contact-manager-roster.cpp | 60 +++++------ TelepathyQt/contact-manager.cpp | 52 ++++----- TelepathyQt/contact-search-channel.cpp | 14 +-- TelepathyQt/contact.cpp | 20 ++-- TelepathyQt/dbus-proxy.cpp | 2 +- TelepathyQt/file-transfer-channel.cpp | 2 +- TelepathyQt/incoming-file-transfer-channel.cpp | 10 +- TelepathyQt/incoming-stream-tube-channel.cpp | 16 +-- TelepathyQt/outgoing-file-transfer-channel.cpp | 6 +- TelepathyQt/outgoing-stream-tube-channel.cpp | 18 ++-- TelepathyQt/pending-channel-request.cpp | 4 +- TelepathyQt/pending-channel.cpp | 34 +++--- TelepathyQt/pending-contacts.cpp | 4 +- TelepathyQt/pending-handles.cpp | 24 ++--- TelepathyQt/readiness-helper.cpp | 8 +- TelepathyQt/requestable-channel-class-spec.cpp | 6 +- TelepathyQt/simple-stream-tube-handler.cpp | 3 +- TelepathyQt/streamed-media-channel.cpp | 28 ++--- TelepathyQt/text-channel.cpp | 16 ++- TelepathyQt/tube-channel.cpp | 2 +- spec/errors.xml | 2 +- tests/dbus/account-basics.cpp | 4 +- tests/dbus/account-channel-dispatcher.cpp | 64 +++++------ tests/dbus/account-connection-factory.cpp | 2 +- tests/dbus/account-set.cpp | 10 +- tests/dbus/client-factories.cpp | 32 +++--- tests/dbus/client.cpp | 23 ++-- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-requests.cpp | 16 +-- tests/dbus/contact-messenger.cpp | 4 +- tests/dbus/contacts.cpp | 8 +- tests/dbus/dbus-properties.cpp | 2 +- tests/dbus/simple-observer.cpp | 2 +- tests/dbus/stream-tube-handlers.cpp | 4 +- tests/dbus/streamed-media-chan.cpp | 6 +- tests/lib/glib-helpers/test-conn-helper.cpp | 36 +++---- tests/manager-file.cpp | 22 ++-- 49 files changed, 540 insertions(+), 554 deletions(-) commit c9201a5bb28ac31e21762b468e8814cae081d78f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 22 17:35:47 2011 -0200 Make TP_QT_CONNECTION_OBJECT_PATH_BASE a QLatin1String. TelepathyQt/connection.cpp | 4 ++-- TelepathyQt/constants.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 5c15021b4628555421cfdb44c58c7a40f52ee97e Author: Jeremy Whiting Date: Fri Nov 11 14:24:01 2011 -0700 Rename qt4 to qt in spec files. HACKING | 2 +- spec/Connection_Interface_Contact_Capabilities.xml | 2 +- spec/errors.xml | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) commit d7ab60b9e19016feff3ec2508e756e7f59fddf6a Author: Jeremy Whiting Date: Fri Nov 11 14:21:30 2011 -0700 Rename tp-qt4 to tp-qt in example code strings and comments. examples/file-transfer/file-receiver-handler.cpp | 4 ++-- examples/file-transfer/file-sender.cpp | 2 +- examples/stream-tubes/tube-initiator.cpp | 10 +++++----- examples/stream-tubes/tube-receiver.cpp | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) commit 6879f313547d52a860d4703ed2411f02ecccc067 Author: Jeremy Whiting Date: Fri Nov 11 14:17:59 2011 -0700 Rename qt4 comments to qt. TelepathyQt/account.h | 2 +- TelepathyQt/channel.cpp | 2 +- TelepathyQt/main.dox | 8 ++++---- doxygen.cfg.in | 2 +- tests/dbus/stream-tube-handlers.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) commit 6d7d7ca5ec2d45ed784a9d48280f47af6cbc6fbb Author: Jeremy Whiting Date: Fri Nov 11 14:07:16 2011 -0700 Remove deprecated header files. TelepathyQt/CMakeLists.txt | 4 ---- TelepathyQt/ConnectionInterfaceClientTypes | 17 ----------------- TelepathyQt/ConnectionInterfaceContactGroups | 17 ----------------- TelepathyQt/ConnectionInterfaceContactList | 17 ----------------- TelepathyQt/ConnectionInterfacePowerSaving | 17 ----------------- 5 files changed, 72 deletions(-) commit 78b5f63e1f86f5d918c040913231c757696be4be Author: Jeremy Whiting Date: Fri Nov 11 13:07:33 2011 -0700 Rename library from telepathy-qt4 to telepathy-qt. CMakeLists.txt | 6 +- HACKING | 20 +- README | 6 +- TelepathyQt/dbus-proxy-factory-internal.h | 2 +- TelepathyQt/debug.cpp | 8 +- TelepathyQt/global.h | 2 +- TelepathyQt/outgoing-stream-tube-channel.cpp | 4 +- TelepathyQt/pending-channel.cpp | 2 +- TelepathyQt/simple-observer.cpp | 2 +- TelepathyQt/stream-tube-client.cpp | 2 +- TelepathyQt/stream-tube-server.cpp | 2 +- cmake/modules/TpQtMacros.cmake | 50 +-- examples/accounts/CMakeLists.txt | 2 +- examples/contact-messenger/CMakeLists.txt | 2 +- examples/extensions/CMakeLists.txt | 4 +- examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/file-receiver.cpp | 2 +- examples/file-transfer/pending-file-receive.cpp | 2 +- examples/protocols/CMakeLists.txt | 2 +- examples/roster/CMakeLists.txt | 10 +- examples/stream-tubes/CMakeLists.txt | 4 +- tests/dbus/CMakeLists.txt | 48 +- tests/dbus/chan-group.cpp | 4 +- tests/dbus/simple-observer.cpp | 2 +- tests/lib/CMakeLists.txt | 4 +- tests/lib/glib-helpers/CMakeLists.txt | 6 +- tools/CMakeLists.txt | 12 +- tools/libqt4codegen.py | 499 --------------------- tools/libqtcodegen.py | 499 +++++++++++++++++++++ tools/qt-client-gen.py | 547 +++++++++++++++++++++++ tools/qt-constants-gen.py | 310 +++++++++++++ tools/qt-types-gen.py | 557 ++++++++++++++++++++++++ tools/qt4-client-gen.py | 547 ----------------------- tools/qt4-constants-gen.py | 310 ------------- tools/qt4-types-gen.py | 557 ------------------------ tools/tp-qt-tests.supp | 53 +++ tools/tp-qt4-tests.supp | 53 --- 37 files changed, 2073 insertions(+), 2073 deletions(-) commit d0e664bf2ea436d6447a0992e1604b8c8b0fb609 Author: Jeremy Whiting Date: Thu Nov 10 16:01:10 2011 -0700 Renamed TpQt4Macros.cmake TpQtMacros.cmake. CMakeLists.txt | 2 +- TelepathyQt/CMakeLists.txt | 60 ++--- TelepathyQt/Farsight/CMakeLists.txt | 22 +- TelepathyQt/async-model.dox | 8 +- TelepathyQt/client-registrar.cpp | 2 +- TelepathyQt/connection-manager.cpp | 2 +- TelepathyQt/dbus-proxy.cpp | 2 +- TelepathyQt/main.dox | 14 +- TelepathyQt/shared-ptr.dox | 2 +- cmake/modules/TelepathyDefaults.cmake | 4 +- cmake/modules/TelepathyDist.cmake | 2 +- cmake/modules/TpQt4Macros.cmake | 435 ---------------------------------- cmake/modules/TpQtMacros.cmake | 435 ++++++++++++++++++++++++++++++++++ doxygen-footer.html | 2 +- 14 files changed, 496 insertions(+), 496 deletions(-) commit 98c89fddfa8175d226d84f6631ec4377a5522fd0 Author: Jeremy Whiting Date: Thu Nov 10 15:32:03 2011 -0700 Rename dbus object paths from Telepathy.Qt4 to Telepathy.Qt. TelepathyQt/constants.h | 12 ++++++------ TelepathyQt/method-invocation-context.h | 2 +- TelepathyQt/pending-operation.cpp | 2 +- doxygen.cfg.in | 2 +- spec/errors.xml | 2 +- tests/dbus/stateful-proxy.cpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) commit be40b6f313c8d7b1f0fb59fd06ea87b0934e4bad Author: Jeremy Whiting Date: Thu Nov 10 15:21:06 2011 -0700 Renamed TelepathyQt4 directory to TelepathyQt. CMakeLists.txt | 6 +- HACKING | 2 +- TelepathyQt/AbstractClient | 13 + TelepathyQt/AbstractClientApprover | 13 + TelepathyQt/AbstractClientHandler | 13 + TelepathyQt/AbstractClientObserver | 13 + TelepathyQt/AbstractInterface | 13 + TelepathyQt/Account | 13 + TelepathyQt/AccountCapabilityFilter | 13 + TelepathyQt/AccountFactory | 13 + TelepathyQt/AccountFilter | 13 + TelepathyQt/AccountInterface | 13 + TelepathyQt/AccountInterfaceAddressingInterface | 13 + TelepathyQt/AccountInterfaceAvatarInterface | 13 + TelepathyQt/AccountManager | 13 + TelepathyQt/AccountManagerInterface | 13 + TelepathyQt/AccountPropertyFilter | 13 + TelepathyQt/AccountSet | 13 + TelepathyQt/AndFilter | 13 + TelepathyQt/AuthenticationTLSCertificateInterface | 13 + TelepathyQt/AvatarData | 13 + TelepathyQt/AvatarSpec | 13 + TelepathyQt/CMakeLists.txt | 694 +++ TelepathyQt/CapabilitiesBase | 13 + TelepathyQt/Channel | 13 + TelepathyQt/ChannelClassFeatures | 13 + TelepathyQt/ChannelClassSpec | 13 + TelepathyQt/ChannelClassSpecList | 13 + TelepathyQt/ChannelDispatchOperation | 13 + TelepathyQt/ChannelDispatchOperationInterface | 13 + TelepathyQt/ChannelDispatcher | 13 + TelepathyQt/ChannelDispatcherInterface | 13 + TelepathyQt/ChannelFactory | 13 + TelepathyQt/ChannelInterface | 13 + TelepathyQt/ChannelInterfaceAnonymityInterface | 13 + TelepathyQt/ChannelInterfaceCallStateInterface | 13 + TelepathyQt/ChannelInterfaceChatStateInterface | 13 + TelepathyQt/ChannelInterfaceConferenceInterface | 13 + TelepathyQt/ChannelInterfaceDTMFInterface | 13 + TelepathyQt/ChannelInterfaceGroupInterface | 13 + TelepathyQt/ChannelInterfaceHoldInterface | 13 + .../ChannelInterfaceMediaSignallingInterface | 13 + TelepathyQt/ChannelInterfaceMessagesInterface | 13 + TelepathyQt/ChannelInterfacePasswordInterface | 13 + .../ChannelInterfaceSASLAuthenticationInterface | 13 + TelepathyQt/ChannelInterfaceSecurableInterface | 13 + TelepathyQt/ChannelInterfaceServicePointInterface | 13 + TelepathyQt/ChannelInterfaceTubeInterface | 13 + TelepathyQt/ChannelRequest | 13 + TelepathyQt/ChannelRequestHints | 13 + TelepathyQt/ChannelRequestInterface | 13 + TelepathyQt/ChannelTypeContactListInterface | 13 + TelepathyQt/ChannelTypeContactSearchInterface | 13 + TelepathyQt/ChannelTypeFileTransferInterface | 13 + TelepathyQt/ChannelTypeRoomListInterface | 13 + .../ChannelTypeServerAuthenticationInterface | 13 + .../ChannelTypeServerTLSConnectionInterface | 13 + TelepathyQt/ChannelTypeStreamTubeInterface | 13 + TelepathyQt/ChannelTypeStreamedMediaInterface | 13 + TelepathyQt/ChannelTypeTextInterface | 13 + TelepathyQt/ChannelTypeTubeInterface | 13 + TelepathyQt/ChannelTypeTubesInterface | 13 + TelepathyQt/Client | 13 + TelepathyQt/ClientApproverInterface | 13 + TelepathyQt/ClientHandlerInterface | 13 + TelepathyQt/ClientInterface | 13 + TelepathyQt/ClientInterfaceRequestsInterface | 13 + TelepathyQt/ClientObserverInterface | 13 + TelepathyQt/ClientRegistrar | 13 + TelepathyQt/Connection | 13 + TelepathyQt/ConnectionCapabilities | 13 + TelepathyQt/ConnectionFactory | 13 + TelepathyQt/ConnectionInterface | 13 + TelepathyQt/ConnectionInterfaceAliasingInterface | 13 + TelepathyQt/ConnectionInterfaceAnonymityInterface | 13 + TelepathyQt/ConnectionInterfaceAvatarsInterface | 13 + TelepathyQt/ConnectionInterfaceBalanceInterface | 13 + .../ConnectionInterfaceCapabilitiesInterface | 13 + TelepathyQt/ConnectionInterfaceCellularInterface | 13 + TelepathyQt/ConnectionInterfaceClientTypes | 17 + .../ConnectionInterfaceClientTypesInterface | 13 + .../ConnectionInterfaceContactBlockingInterface | 13 + ...ConnectionInterfaceContactCapabilitiesInterface | 13 + TelepathyQt/ConnectionInterfaceContactGroups | 17 + .../ConnectionInterfaceContactGroupsInterface | 13 + .../ConnectionInterfaceContactInfoInterface | 13 + TelepathyQt/ConnectionInterfaceContactList | 17 + .../ConnectionInterfaceContactListInterface | 13 + TelepathyQt/ConnectionInterfaceContactsInterface | 13 + TelepathyQt/ConnectionInterfaceLocationInterface | 13 + .../ConnectionInterfaceMailNotificationInterface | 13 + TelepathyQt/ConnectionInterfacePowerSaving | 17 + .../ConnectionInterfacePowerSavingInterface | 13 + TelepathyQt/ConnectionInterfacePresenceInterface | 13 + TelepathyQt/ConnectionInterfaceRequestsInterface | 13 + .../ConnectionInterfaceServicePointInterface | 13 + .../ConnectionInterfaceSimplePresenceInterface | 13 + TelepathyQt/ConnectionLowlevel | 13 + TelepathyQt/ConnectionManager | 13 + TelepathyQt/ConnectionManagerInterface | 13 + TelepathyQt/ConnectionManagerLowlevel | 13 + TelepathyQt/Constants | 13 + TelepathyQt/Contact | 13 + TelepathyQt/ContactCapabilities | 13 + TelepathyQt/ContactFactory | 13 + TelepathyQt/ContactManager | 13 + TelepathyQt/ContactMessenger | 13 + TelepathyQt/ContactSearchChannel | 13 + TelepathyQt/DBus | 13 + TelepathyQt/DBusDaemonInterface | 13 + TelepathyQt/DBusProxy | 13 + TelepathyQt/DBusProxyFactory | 13 + TelepathyQt/Debug | 13 + TelepathyQt/Farsight/CMakeLists.txt | 52 + TelepathyQt/Farsight/Channel | 13 + TelepathyQt/Farsight/channel.cpp | 87 + TelepathyQt/Farsight/channel.h | 43 + TelepathyQt/Farsight/global.h | 46 + TelepathyQt/Feature | 13 + TelepathyQt/Features | 13 + TelepathyQt/FileTransferChannel | 13 + TelepathyQt/FileTransferChannelCreationProperties | 13 + TelepathyQt/Filter | 13 + TelepathyQt/FixedFeatureFactory | 13 + TelepathyQt/GenericCapabilityFilter | 13 + TelepathyQt/GenericPropertyFilter | 13 + TelepathyQt/Global | 13 + TelepathyQt/HandledChannelNotifier | 13 + TelepathyQt/IncomingFileTransferChannel | 13 + TelepathyQt/IncomingStreamTubeChannel | 13 + TelepathyQt/IntrospectableInterface | 13 + TelepathyQt/KeyFile | 13 + TelepathyQt/LocationInfo | 13 + TelepathyQt/ManagerFile | 13 + TelepathyQt/MediaSessionHandler | 13 + TelepathyQt/MediaSessionHandlerInterface | 13 + TelepathyQt/MediaStreamHandler | 13 + TelepathyQt/MediaStreamHandlerInterface | 13 + TelepathyQt/Message | 13 + TelepathyQt/MessageContentPart | 13 + TelepathyQt/MessageContentPartList | 13 + TelepathyQt/MethodInvocationContext | 13 + TelepathyQt/NotFilter | 13 + TelepathyQt/Object | 13 + TelepathyQt/OptionalInterfaceFactory | 13 + TelepathyQt/OrFilter | 13 + TelepathyQt/OutgoingFileTransferChannel | 13 + TelepathyQt/OutgoingStreamTubeChannel | 13 + TelepathyQt/PeerInterface | 13 + TelepathyQt/PendingAccount | 13 + TelepathyQt/PendingChannel | 13 + TelepathyQt/PendingChannelRequest | 13 + TelepathyQt/PendingComposite | 13 + TelepathyQt/PendingConnection | 13 + TelepathyQt/PendingContactAttributes | 13 + TelepathyQt/PendingContactInfo | 13 + TelepathyQt/PendingContacts | 13 + TelepathyQt/PendingFailure | 13 + TelepathyQt/PendingHandles | 13 + TelepathyQt/PendingOperation | 13 + TelepathyQt/PendingReady | 13 + TelepathyQt/PendingSendMessage | 13 + TelepathyQt/PendingStreamTubeConnection | 13 + TelepathyQt/PendingStreamedMediaStreams | 13 + TelepathyQt/PendingStringList | 13 + TelepathyQt/PendingSuccess | 13 + TelepathyQt/PendingVariant | 13 + TelepathyQt/PendingVariantMap | 13 + TelepathyQt/PendingVoid | 13 + TelepathyQt/Presence | 13 + TelepathyQt/PresenceSpec | 13 + TelepathyQt/PresenceSpecList | 13 + TelepathyQt/Profile | 13 + TelepathyQt/ProfileManager | 13 + TelepathyQt/Properties | 13 + TelepathyQt/PropertiesInterface | 13 + TelepathyQt/PropertiesInterfaceInterface | 13 + TelepathyQt/ProtocolInfo | 13 + TelepathyQt/ProtocolParameter | 13 + TelepathyQt/ReadinessHelper | 13 + TelepathyQt/ReadyObject | 13 + TelepathyQt/ReceivedMessage | 13 + TelepathyQt/RefCounted | 13 + TelepathyQt/ReferencedHandles | 12 + TelepathyQt/ReferencedHandlesIterator | 6 + TelepathyQt/RequestableChannelClassSpec | 13 + TelepathyQt/RequestableChannelClassSpecList | 13 + TelepathyQt/RoomListChannel | 13 + TelepathyQt/SharedPtr | 13 + TelepathyQt/SimpleCallObserver | 13 + TelepathyQt/SimpleObserver | 13 + TelepathyQt/SimpleTextObserver | 13 + TelepathyQt/StatefulDBusProxy | 13 + TelepathyQt/StatelessDBusProxy | 13 + TelepathyQt/StreamTubeChannel | 13 + TelepathyQt/StreamTubeClient | 13 + TelepathyQt/StreamTubeServer | 13 + TelepathyQt/StreamedMediaChannel | 13 + TelepathyQt/StreamedMediaStream | 13 + TelepathyQt/TelepathyQt-uninstalled.pc.in | 11 + TelepathyQt/TelepathyQt.pc.in | 11 + TelepathyQt/TelepathyQtFarsight-uninstalled.pc.in | 11 + TelepathyQt/TelepathyQtFarsight.pc.in | 11 + TelepathyQt/TextChannel | 13 + TelepathyQt/TubeChannel | 13 + TelepathyQt/Types | 13 + TelepathyQt/Utils | 13 + TelepathyQt/abstract-client.cpp | 988 +++++ TelepathyQt/abstract-client.h | 323 ++ TelepathyQt/abstract-interface.cpp | 136 + TelepathyQt/abstract-interface.h | 76 + TelepathyQt/account-capability-filter.dox | 30 + TelepathyQt/account-capability-filter.h | 39 + TelepathyQt/account-factory.cpp | 157 + TelepathyQt/account-factory.h | 79 + TelepathyQt/account-filter.h | 39 + TelepathyQt/account-manager.cpp | 1115 +++++ TelepathyQt/account-manager.h | 152 + TelepathyQt/account-manager.xml | 9 + TelepathyQt/account-property-filter.cpp | 94 + TelepathyQt/account-property-filter.h | 59 + TelepathyQt/account-set-internal.h | 82 + TelepathyQt/account-set.cpp | 418 ++ TelepathyQt/account-set.h | 79 + TelepathyQt/account.cpp | 4472 ++++++++++++++++++++ TelepathyQt/account.h | 598 +++ TelepathyQt/account.xml | 13 + TelepathyQt/and-filter.dox | 33 + TelepathyQt/and-filter.h | 83 + TelepathyQt/async-model.dox | 56 + TelepathyQt/avatar.cpp | 172 + TelepathyQt/avatar.h | 86 + TelepathyQt/capabilities-base.cpp | 348 ++ TelepathyQt/capabilities-base.h | 85 + TelepathyQt/channel-class-features.h | 45 + TelepathyQt/channel-class-spec.cpp | 555 +++ TelepathyQt/channel-class-spec.h | 277 ++ TelepathyQt/channel-dispatch-operation-internal.h | 51 + TelepathyQt/channel-dispatch-operation.cpp | 623 +++ TelepathyQt/channel-dispatch-operation.h | 114 + TelepathyQt/channel-dispatch-operation.xml | 9 + TelepathyQt/channel-dispatcher.cpp | 26 + TelepathyQt/channel-dispatcher.h | 32 + TelepathyQt/channel-dispatcher.xml | 9 + TelepathyQt/channel-factory.cpp | 529 +++ TelepathyQt/channel-factory.h | 305 ++ TelepathyQt/channel-internal.h | 50 + TelepathyQt/channel-request.cpp | 803 ++++ TelepathyQt/channel-request.h | 154 + TelepathyQt/channel-request.xml | 9 + TelepathyQt/channel.cpp | 3596 ++++++++++++++++ TelepathyQt/channel.h | 256 ++ TelepathyQt/channel.xml | 37 + TelepathyQt/client-registrar-internal.h | 365 ++ TelepathyQt/client-registrar.cpp | 1038 +++++ TelepathyQt/client-registrar.h | 97 + TelepathyQt/client.cpp | 26 + TelepathyQt/client.h | 32 + TelepathyQt/client.xml | 14 + TelepathyQt/connection-capabilities.cpp | 303 ++ TelepathyQt/connection-capabilities.h | 77 + TelepathyQt/connection-factory.cpp | 150 + TelepathyQt/connection-factory.h | 78 + TelepathyQt/connection-internal.h | 61 + TelepathyQt/connection-lowlevel.h | 96 + TelepathyQt/connection-manager-internal.h | 159 + TelepathyQt/connection-manager-lowlevel.h | 64 + TelepathyQt/connection-manager.cpp | 1076 +++++ TelepathyQt/connection-manager.h | 125 + TelepathyQt/connection-manager.xml | 12 + TelepathyQt/connection.cpp | 2578 +++++++++++ TelepathyQt/connection.h | 249 ++ TelepathyQt/connection.xml | 30 + TelepathyQt/constants.h | 178 + TelepathyQt/contact-capabilities.cpp | 127 + TelepathyQt/contact-capabilities.h | 66 + TelepathyQt/contact-factory.cpp | 146 + TelepathyQt/contact-factory.h | 76 + TelepathyQt/contact-manager-internal.h | 389 ++ TelepathyQt/contact-manager-roster.cpp | 2217 ++++++++++ TelepathyQt/contact-manager.cpp | 1592 +++++++ TelepathyQt/contact-manager.h | 201 + TelepathyQt/contact-messenger.cpp | 257 ++ TelepathyQt/contact-messenger.h | 78 + TelepathyQt/contact-search-channel-internal.h | 52 + TelepathyQt/contact-search-channel.cpp | 676 +++ TelepathyQt/contact-search-channel.h | 114 + TelepathyQt/contact.cpp | 1352 ++++++ TelepathyQt/contact.h | 246 ++ TelepathyQt/dbus-daemon.xml | 80 + TelepathyQt/dbus-introspectable.xml | 16 + TelepathyQt/dbus-peer.xml | 19 + TelepathyQt/dbus-properties.xml | 29 + TelepathyQt/dbus-proxy-factory-internal.h | 58 + TelepathyQt/dbus-proxy-factory.cpp | 295 ++ TelepathyQt/dbus-proxy-factory.h | 85 + TelepathyQt/dbus-proxy.cpp | 393 ++ TelepathyQt/dbus-proxy.h | 122 + TelepathyQt/dbus.cpp | 26 + TelepathyQt/dbus.h | 54 + TelepathyQt/dbus.xml | 12 + TelepathyQt/debug-internal.h | 170 + TelepathyQt/debug.cpp | 187 + TelepathyQt/debug.h | 46 + TelepathyQt/examples.dox | 154 + TelepathyQt/fake-handler-manager-internal.cpp | 165 + TelepathyQt/fake-handler-manager-internal.h | 90 + TelepathyQt/feature.cpp | 89 + TelepathyQt/feature.h | 94 + .../file-transfer-channel-creation-properties.cpp | 433 ++ .../file-transfer-channel-creation-properties.h | 96 + TelepathyQt/file-transfer-channel.cpp | 703 +++ TelepathyQt/file-transfer-channel.h | 108 + TelepathyQt/filter.dox | 30 + TelepathyQt/filter.h | 63 + TelepathyQt/fixed-feature-factory.cpp | 116 + TelepathyQt/fixed-feature-factory.h | 69 + TelepathyQt/future-channel-dispatcher.xml | 20 + TelepathyQt/future-channel.xml | 13 + TelepathyQt/future-interfaces.xml | 14 + TelepathyQt/future-internal.h | 36 + TelepathyQt/future-misc.xml | 7 + TelepathyQt/future.cpp | 32 + TelepathyQt/generic-capability-filter.dox | 36 + TelepathyQt/generic-capability-filter.h | 114 + TelepathyQt/generic-property-filter.dox | 33 + TelepathyQt/generic-property-filter.h | 77 + TelepathyQt/global.h | 103 + TelepathyQt/groups.dox | 115 + TelepathyQt/handled-channel-notifier.cpp | 103 + TelepathyQt/handled-channel-notifier.h | 75 + TelepathyQt/incoming-file-transfer-channel.cpp | 390 ++ TelepathyQt/incoming-file-transfer-channel.h | 81 + TelepathyQt/incoming-stream-tube-channel.cpp | 435 ++ TelepathyQt/incoming-stream-tube-channel.h | 80 + TelepathyQt/key-file.cpp | 582 +++ TelepathyQt/key-file.h | 91 + TelepathyQt/location-info.cpp | 221 + TelepathyQt/location-info.h | 95 + TelepathyQt/main.dox | 133 + TelepathyQt/manager-file.cpp | 618 +++ TelepathyQt/manager-file.h | 78 + TelepathyQt/media-session-handler.cpp | 26 + TelepathyQt/media-session-handler.h | 50 + TelepathyQt/media-session-handler.xml | 9 + TelepathyQt/media-stream-handler.cpp | 26 + TelepathyQt/media-stream-handler.h | 50 + TelepathyQt/media-stream-handler.xml | 9 + TelepathyQt/message-content-part.cpp | 96 + TelepathyQt/message-content-part.h | 96 + TelepathyQt/message.cpp | 911 ++++ TelepathyQt/message.h | 173 + TelepathyQt/method-invocation-context.dox | 41 + TelepathyQt/method-invocation-context.h | 192 + TelepathyQt/not-filter.dox | 32 + TelepathyQt/not-filter.h | 73 + TelepathyQt/object.cpp | 65 + TelepathyQt/object.h | 63 + TelepathyQt/optional-interface-factory.cpp | 178 + TelepathyQt/optional-interface-factory.h | 140 + TelepathyQt/or-filter.dox | 33 + TelepathyQt/or-filter.h | 83 + TelepathyQt/outgoing-file-transfer-channel.cpp | 371 ++ TelepathyQt/outgoing-file-transfer-channel.h | 78 + .../outgoing-stream-tube-channel-internal.h | 122 + TelepathyQt/outgoing-stream-tube-channel.cpp | 821 ++++ TelepathyQt/outgoing-stream-tube-channel.h | 89 + TelepathyQt/pending-account.cpp | 184 + TelepathyQt/pending-account.h | 75 + TelepathyQt/pending-channel-request-internal.h | 73 + TelepathyQt/pending-channel-request.cpp | 276 ++ TelepathyQt/pending-channel-request.h | 84 + TelepathyQt/pending-channel.cpp | 555 +++ TelepathyQt/pending-channel.h | 103 + TelepathyQt/pending-connection.cpp | 171 + TelepathyQt/pending-connection.h | 73 + TelepathyQt/pending-contact-attributes.cpp | 219 + TelepathyQt/pending-contact-attributes.h | 77 + TelepathyQt/pending-contact-info.cpp | 128 + TelepathyQt/pending-contact-info.h | 66 + TelepathyQt/pending-contacts.cpp | 468 ++ TelepathyQt/pending-contacts.h | 108 + TelepathyQt/pending-handles.cpp | 490 +++ TelepathyQt/pending-handles.h | 96 + TelepathyQt/pending-operation.cpp | 424 ++ TelepathyQt/pending-operation.h | 89 + TelepathyQt/pending-ready.cpp | 148 + TelepathyQt/pending-ready.h | 71 + TelepathyQt/pending-send-message.cpp | 153 + TelepathyQt/pending-send-message.h | 77 + TelepathyQt/pending-stream-tube-connection.cpp | 272 ++ TelepathyQt/pending-stream-tube-connection.h | 81 + TelepathyQt/pending-string-list.cpp | 100 + TelepathyQt/pending-string-list.h | 63 + TelepathyQt/pending-variant-map.cpp | 91 + TelepathyQt/pending-variant-map.h | 60 + TelepathyQt/pending-variant.cpp | 91 + TelepathyQt/pending-variant.h | 60 + TelepathyQt/presence.cpp | 335 ++ TelepathyQt/presence.h | 135 + TelepathyQt/profile-manager.cpp | 332 ++ TelepathyQt/profile-manager.h | 75 + TelepathyQt/profile.cpp | 1216 ++++++ TelepathyQt/profile.h | 176 + TelepathyQt/properties.cpp | 26 + TelepathyQt/properties.h | 51 + TelepathyQt/properties.xml | 9 + TelepathyQt/protocol-info.cpp | 374 ++ TelepathyQt/protocol-info.h | 102 + TelepathyQt/protocol-parameter.cpp | 176 + TelepathyQt/protocol-parameter.h | 87 + TelepathyQt/readiness-helper.cpp | 684 +++ TelepathyQt/readiness-helper.h | 130 + TelepathyQt/ready-object.cpp | 161 + TelepathyQt/ready-object.h | 69 + TelepathyQt/referenced-handles.cpp | 333 ++ TelepathyQt/referenced-handles.h | 264 ++ TelepathyQt/request-temporary-handler-internal.cpp | 135 + TelepathyQt/request-temporary-handler-internal.h | 91 + TelepathyQt/requestable-channel-class-spec.cpp | 494 +++ TelepathyQt/requestable-channel-class-spec.h | 134 + TelepathyQt/room-list-channel.cpp | 106 + TelepathyQt/room-list-channel.h | 59 + TelepathyQt/shared-ptr.dox | 111 + TelepathyQt/shared-ptr.h | 152 + TelepathyQt/simple-call-observer.cpp | 298 ++ TelepathyQt/simple-call-observer.h | 95 + TelepathyQt/simple-observer-internal.h | 261 ++ TelepathyQt/simple-observer.cpp | 643 +++ TelepathyQt/simple-observer.h | 105 + TelepathyQt/simple-pending-operations.h | 110 + TelepathyQt/simple-stream-tube-handler.cpp | 254 ++ TelepathyQt/simple-stream-tube-handler.h | 120 + TelepathyQt/simple-text-observer-internal.h | 70 + TelepathyQt/simple-text-observer.cpp | 298 ++ TelepathyQt/simple-text-observer.h | 80 + TelepathyQt/stable-interfaces.xml | 26 + TelepathyQt/stream-tube-channel.cpp | 740 ++++ TelepathyQt/stream-tube-channel.h | 108 + TelepathyQt/stream-tube-client-internal.h | 61 + TelepathyQt/stream-tube-client.cpp | 1048 +++++ TelepathyQt/stream-tube-client.h | 217 + TelepathyQt/stream-tube-server-internal.h | 56 + TelepathyQt/stream-tube-server.cpp | 1134 +++++ TelepathyQt/stream-tube-server.h | 253 ++ TelepathyQt/streamed-media-channel.cpp | 1539 +++++++ TelepathyQt/streamed-media-channel.h | 228 + TelepathyQt/test-backdoors.cpp | 50 + TelepathyQt/test-backdoors.h | 59 + TelepathyQt/text-channel.cpp | 1277 ++++++ TelepathyQt/text-channel.h | 139 + TelepathyQt/tls-certificate.cpp | 26 + TelepathyQt/tls-certificate.h | 31 + TelepathyQt/tls-certificate.xml | 9 + TelepathyQt/tube-channel.cpp | 281 ++ TelepathyQt/tube-channel.h | 80 + TelepathyQt/types-internal.h | 156 + TelepathyQt/types.cpp | 73 + TelepathyQt/types.h | 171 + TelepathyQt/utils.cpp | 120 + TelepathyQt/utils.h | 41 + TelepathyQt4/AbstractClient | 13 - TelepathyQt4/AbstractClientApprover | 13 - TelepathyQt4/AbstractClientHandler | 13 - TelepathyQt4/AbstractClientObserver | 13 - TelepathyQt4/AbstractInterface | 13 - TelepathyQt4/Account | 13 - TelepathyQt4/AccountCapabilityFilter | 13 - TelepathyQt4/AccountFactory | 13 - TelepathyQt4/AccountFilter | 13 - TelepathyQt4/AccountInterface | 13 - TelepathyQt4/AccountInterfaceAddressingInterface | 13 - TelepathyQt4/AccountInterfaceAvatarInterface | 13 - TelepathyQt4/AccountManager | 13 - TelepathyQt4/AccountManagerInterface | 13 - TelepathyQt4/AccountPropertyFilter | 13 - TelepathyQt4/AccountSet | 13 - TelepathyQt4/AndFilter | 13 - TelepathyQt4/AuthenticationTLSCertificateInterface | 13 - TelepathyQt4/AvatarData | 13 - TelepathyQt4/AvatarSpec | 13 - TelepathyQt4/CMakeLists.txt | 694 --- TelepathyQt4/CapabilitiesBase | 13 - TelepathyQt4/Channel | 13 - TelepathyQt4/ChannelClassFeatures | 13 - TelepathyQt4/ChannelClassSpec | 13 - TelepathyQt4/ChannelClassSpecList | 13 - TelepathyQt4/ChannelDispatchOperation | 13 - TelepathyQt4/ChannelDispatchOperationInterface | 13 - TelepathyQt4/ChannelDispatcher | 13 - TelepathyQt4/ChannelDispatcherInterface | 13 - TelepathyQt4/ChannelFactory | 13 - TelepathyQt4/ChannelInterface | 13 - TelepathyQt4/ChannelInterfaceAnonymityInterface | 13 - TelepathyQt4/ChannelInterfaceCallStateInterface | 13 - TelepathyQt4/ChannelInterfaceChatStateInterface | 13 - TelepathyQt4/ChannelInterfaceConferenceInterface | 13 - TelepathyQt4/ChannelInterfaceDTMFInterface | 13 - TelepathyQt4/ChannelInterfaceGroupInterface | 13 - TelepathyQt4/ChannelInterfaceHoldInterface | 13 - .../ChannelInterfaceMediaSignallingInterface | 13 - TelepathyQt4/ChannelInterfaceMessagesInterface | 13 - TelepathyQt4/ChannelInterfacePasswordInterface | 13 - .../ChannelInterfaceSASLAuthenticationInterface | 13 - TelepathyQt4/ChannelInterfaceSecurableInterface | 13 - TelepathyQt4/ChannelInterfaceServicePointInterface | 13 - TelepathyQt4/ChannelInterfaceTubeInterface | 13 - TelepathyQt4/ChannelRequest | 13 - TelepathyQt4/ChannelRequestHints | 13 - TelepathyQt4/ChannelRequestInterface | 13 - TelepathyQt4/ChannelTypeContactListInterface | 13 - TelepathyQt4/ChannelTypeContactSearchInterface | 13 - TelepathyQt4/ChannelTypeFileTransferInterface | 13 - TelepathyQt4/ChannelTypeRoomListInterface | 13 - .../ChannelTypeServerAuthenticationInterface | 13 - .../ChannelTypeServerTLSConnectionInterface | 13 - TelepathyQt4/ChannelTypeStreamTubeInterface | 13 - TelepathyQt4/ChannelTypeStreamedMediaInterface | 13 - TelepathyQt4/ChannelTypeTextInterface | 13 - TelepathyQt4/ChannelTypeTubeInterface | 13 - TelepathyQt4/ChannelTypeTubesInterface | 13 - TelepathyQt4/Client | 13 - TelepathyQt4/ClientApproverInterface | 13 - TelepathyQt4/ClientHandlerInterface | 13 - TelepathyQt4/ClientInterface | 13 - TelepathyQt4/ClientInterfaceRequestsInterface | 13 - TelepathyQt4/ClientObserverInterface | 13 - TelepathyQt4/ClientRegistrar | 13 - TelepathyQt4/Connection | 13 - TelepathyQt4/ConnectionCapabilities | 13 - TelepathyQt4/ConnectionFactory | 13 - TelepathyQt4/ConnectionInterface | 13 - TelepathyQt4/ConnectionInterfaceAliasingInterface | 13 - TelepathyQt4/ConnectionInterfaceAnonymityInterface | 13 - TelepathyQt4/ConnectionInterfaceAvatarsInterface | 13 - TelepathyQt4/ConnectionInterfaceBalanceInterface | 13 - .../ConnectionInterfaceCapabilitiesInterface | 13 - TelepathyQt4/ConnectionInterfaceCellularInterface | 13 - TelepathyQt4/ConnectionInterfaceClientTypes | 17 - .../ConnectionInterfaceClientTypesInterface | 13 - .../ConnectionInterfaceContactBlockingInterface | 13 - ...ConnectionInterfaceContactCapabilitiesInterface | 13 - TelepathyQt4/ConnectionInterfaceContactGroups | 17 - .../ConnectionInterfaceContactGroupsInterface | 13 - .../ConnectionInterfaceContactInfoInterface | 13 - TelepathyQt4/ConnectionInterfaceContactList | 17 - .../ConnectionInterfaceContactListInterface | 13 - TelepathyQt4/ConnectionInterfaceContactsInterface | 13 - TelepathyQt4/ConnectionInterfaceLocationInterface | 13 - .../ConnectionInterfaceMailNotificationInterface | 13 - TelepathyQt4/ConnectionInterfacePowerSaving | 17 - .../ConnectionInterfacePowerSavingInterface | 13 - TelepathyQt4/ConnectionInterfacePresenceInterface | 13 - TelepathyQt4/ConnectionInterfaceRequestsInterface | 13 - .../ConnectionInterfaceServicePointInterface | 13 - .../ConnectionInterfaceSimplePresenceInterface | 13 - TelepathyQt4/ConnectionLowlevel | 13 - TelepathyQt4/ConnectionManager | 13 - TelepathyQt4/ConnectionManagerInterface | 13 - TelepathyQt4/ConnectionManagerLowlevel | 13 - TelepathyQt4/Constants | 13 - TelepathyQt4/Contact | 13 - TelepathyQt4/ContactCapabilities | 13 - TelepathyQt4/ContactFactory | 13 - TelepathyQt4/ContactManager | 13 - TelepathyQt4/ContactMessenger | 13 - TelepathyQt4/ContactSearchChannel | 13 - TelepathyQt4/DBus | 13 - TelepathyQt4/DBusDaemonInterface | 13 - TelepathyQt4/DBusProxy | 13 - TelepathyQt4/DBusProxyFactory | 13 - TelepathyQt4/Debug | 13 - TelepathyQt4/Farsight/CMakeLists.txt | 52 - TelepathyQt4/Farsight/Channel | 13 - TelepathyQt4/Farsight/channel.cpp | 87 - TelepathyQt4/Farsight/channel.h | 43 - TelepathyQt4/Farsight/global.h | 46 - TelepathyQt4/Feature | 13 - TelepathyQt4/Features | 13 - TelepathyQt4/FileTransferChannel | 13 - TelepathyQt4/FileTransferChannelCreationProperties | 13 - TelepathyQt4/Filter | 13 - TelepathyQt4/FixedFeatureFactory | 13 - TelepathyQt4/GenericCapabilityFilter | 13 - TelepathyQt4/GenericPropertyFilter | 13 - TelepathyQt4/Global | 13 - TelepathyQt4/HandledChannelNotifier | 13 - TelepathyQt4/IncomingFileTransferChannel | 13 - TelepathyQt4/IncomingStreamTubeChannel | 13 - TelepathyQt4/IntrospectableInterface | 13 - TelepathyQt4/KeyFile | 13 - TelepathyQt4/LocationInfo | 13 - TelepathyQt4/ManagerFile | 13 - TelepathyQt4/MediaSessionHandler | 13 - TelepathyQt4/MediaSessionHandlerInterface | 13 - TelepathyQt4/MediaStreamHandler | 13 - TelepathyQt4/MediaStreamHandlerInterface | 13 - TelepathyQt4/Message | 13 - TelepathyQt4/MessageContentPart | 13 - TelepathyQt4/MessageContentPartList | 13 - TelepathyQt4/MethodInvocationContext | 13 - TelepathyQt4/NotFilter | 13 - TelepathyQt4/Object | 13 - TelepathyQt4/OptionalInterfaceFactory | 13 - TelepathyQt4/OrFilter | 13 - TelepathyQt4/OutgoingFileTransferChannel | 13 - TelepathyQt4/OutgoingStreamTubeChannel | 13 - TelepathyQt4/PeerInterface | 13 - TelepathyQt4/PendingAccount | 13 - TelepathyQt4/PendingChannel | 13 - TelepathyQt4/PendingChannelRequest | 13 - TelepathyQt4/PendingComposite | 13 - TelepathyQt4/PendingConnection | 13 - TelepathyQt4/PendingContactAttributes | 13 - TelepathyQt4/PendingContactInfo | 13 - TelepathyQt4/PendingContacts | 13 - TelepathyQt4/PendingFailure | 13 - TelepathyQt4/PendingHandles | 13 - TelepathyQt4/PendingOperation | 13 - TelepathyQt4/PendingReady | 13 - TelepathyQt4/PendingSendMessage | 13 - TelepathyQt4/PendingStreamTubeConnection | 13 - TelepathyQt4/PendingStreamedMediaStreams | 13 - TelepathyQt4/PendingStringList | 13 - TelepathyQt4/PendingSuccess | 13 - TelepathyQt4/PendingVariant | 13 - TelepathyQt4/PendingVariantMap | 13 - TelepathyQt4/PendingVoid | 13 - TelepathyQt4/Presence | 13 - TelepathyQt4/PresenceSpec | 13 - TelepathyQt4/PresenceSpecList | 13 - TelepathyQt4/Profile | 13 - TelepathyQt4/ProfileManager | 13 - TelepathyQt4/Properties | 13 - TelepathyQt4/PropertiesInterface | 13 - TelepathyQt4/PropertiesInterfaceInterface | 13 - TelepathyQt4/ProtocolInfo | 13 - TelepathyQt4/ProtocolParameter | 13 - TelepathyQt4/ReadinessHelper | 13 - TelepathyQt4/ReadyObject | 13 - TelepathyQt4/ReceivedMessage | 13 - TelepathyQt4/RefCounted | 13 - TelepathyQt4/ReferencedHandles | 12 - TelepathyQt4/ReferencedHandlesIterator | 6 - TelepathyQt4/RequestableChannelClassSpec | 13 - TelepathyQt4/RequestableChannelClassSpecList | 13 - TelepathyQt4/RoomListChannel | 13 - TelepathyQt4/SharedPtr | 13 - TelepathyQt4/SimpleCallObserver | 13 - TelepathyQt4/SimpleObserver | 13 - TelepathyQt4/SimpleTextObserver | 13 - TelepathyQt4/StatefulDBusProxy | 13 - TelepathyQt4/StatelessDBusProxy | 13 - TelepathyQt4/StreamTubeChannel | 13 - TelepathyQt4/StreamTubeClient | 13 - TelepathyQt4/StreamTubeServer | 13 - TelepathyQt4/StreamedMediaChannel | 13 - TelepathyQt4/StreamedMediaStream | 13 - TelepathyQt4/TelepathyQt4-uninstalled.pc.in | 11 - TelepathyQt4/TelepathyQt4.pc.in | 11 - .../TelepathyQt4Farsight-uninstalled.pc.in | 11 - TelepathyQt4/TelepathyQt4Farsight.pc.in | 11 - TelepathyQt4/TextChannel | 13 - TelepathyQt4/TubeChannel | 13 - TelepathyQt4/Types | 13 - TelepathyQt4/Utils | 13 - TelepathyQt4/abstract-client.cpp | 988 ----- TelepathyQt4/abstract-client.h | 323 -- TelepathyQt4/abstract-interface.cpp | 136 - TelepathyQt4/abstract-interface.h | 76 - TelepathyQt4/account-capability-filter.dox | 30 - TelepathyQt4/account-capability-filter.h | 39 - TelepathyQt4/account-factory.cpp | 157 - TelepathyQt4/account-factory.h | 79 - TelepathyQt4/account-filter.h | 39 - TelepathyQt4/account-manager.cpp | 1115 ----- TelepathyQt4/account-manager.h | 152 - TelepathyQt4/account-manager.xml | 9 - TelepathyQt4/account-property-filter.cpp | 94 - TelepathyQt4/account-property-filter.h | 59 - TelepathyQt4/account-set-internal.h | 82 - TelepathyQt4/account-set.cpp | 418 -- TelepathyQt4/account-set.h | 79 - TelepathyQt4/account.cpp | 4472 -------------------- TelepathyQt4/account.h | 598 --- TelepathyQt4/account.xml | 13 - TelepathyQt4/and-filter.dox | 33 - TelepathyQt4/and-filter.h | 83 - TelepathyQt4/async-model.dox | 56 - TelepathyQt4/avatar.cpp | 172 - TelepathyQt4/avatar.h | 86 - TelepathyQt4/capabilities-base.cpp | 348 -- TelepathyQt4/capabilities-base.h | 85 - TelepathyQt4/channel-class-features.h | 45 - TelepathyQt4/channel-class-spec.cpp | 555 --- TelepathyQt4/channel-class-spec.h | 277 -- TelepathyQt4/channel-dispatch-operation-internal.h | 51 - TelepathyQt4/channel-dispatch-operation.cpp | 623 --- TelepathyQt4/channel-dispatch-operation.h | 114 - TelepathyQt4/channel-dispatch-operation.xml | 9 - TelepathyQt4/channel-dispatcher.cpp | 26 - TelepathyQt4/channel-dispatcher.h | 32 - TelepathyQt4/channel-dispatcher.xml | 9 - TelepathyQt4/channel-factory.cpp | 529 --- TelepathyQt4/channel-factory.h | 305 -- TelepathyQt4/channel-internal.h | 50 - TelepathyQt4/channel-request.cpp | 803 ---- TelepathyQt4/channel-request.h | 154 - TelepathyQt4/channel-request.xml | 9 - TelepathyQt4/channel.cpp | 3596 ---------------- TelepathyQt4/channel.h | 256 -- TelepathyQt4/channel.xml | 37 - TelepathyQt4/client-registrar-internal.h | 365 -- TelepathyQt4/client-registrar.cpp | 1038 ----- TelepathyQt4/client-registrar.h | 97 - TelepathyQt4/client.cpp | 26 - TelepathyQt4/client.h | 32 - TelepathyQt4/client.xml | 14 - TelepathyQt4/connection-capabilities.cpp | 303 -- TelepathyQt4/connection-capabilities.h | 77 - TelepathyQt4/connection-factory.cpp | 150 - TelepathyQt4/connection-factory.h | 78 - TelepathyQt4/connection-internal.h | 61 - TelepathyQt4/connection-lowlevel.h | 96 - TelepathyQt4/connection-manager-internal.h | 159 - TelepathyQt4/connection-manager-lowlevel.h | 64 - TelepathyQt4/connection-manager.cpp | 1076 ----- TelepathyQt4/connection-manager.h | 125 - TelepathyQt4/connection-manager.xml | 12 - TelepathyQt4/connection.cpp | 2578 ----------- TelepathyQt4/connection.h | 249 -- TelepathyQt4/connection.xml | 30 - TelepathyQt4/constants.h | 178 - TelepathyQt4/contact-capabilities.cpp | 127 - TelepathyQt4/contact-capabilities.h | 66 - TelepathyQt4/contact-factory.cpp | 146 - TelepathyQt4/contact-factory.h | 76 - TelepathyQt4/contact-manager-internal.h | 389 -- TelepathyQt4/contact-manager-roster.cpp | 2217 ---------- TelepathyQt4/contact-manager.cpp | 1592 ------- TelepathyQt4/contact-manager.h | 201 - TelepathyQt4/contact-messenger.cpp | 257 -- TelepathyQt4/contact-messenger.h | 78 - TelepathyQt4/contact-search-channel-internal.h | 52 - TelepathyQt4/contact-search-channel.cpp | 676 --- TelepathyQt4/contact-search-channel.h | 114 - TelepathyQt4/contact.cpp | 1352 ------ TelepathyQt4/contact.h | 246 -- TelepathyQt4/dbus-daemon.xml | 80 - TelepathyQt4/dbus-introspectable.xml | 16 - TelepathyQt4/dbus-peer.xml | 19 - TelepathyQt4/dbus-properties.xml | 29 - TelepathyQt4/dbus-proxy-factory-internal.h | 58 - TelepathyQt4/dbus-proxy-factory.cpp | 295 -- TelepathyQt4/dbus-proxy-factory.h | 85 - TelepathyQt4/dbus-proxy.cpp | 393 -- TelepathyQt4/dbus-proxy.h | 122 - TelepathyQt4/dbus.cpp | 26 - TelepathyQt4/dbus.h | 54 - TelepathyQt4/dbus.xml | 12 - TelepathyQt4/debug-internal.h | 170 - TelepathyQt4/debug.cpp | 187 - TelepathyQt4/debug.h | 46 - TelepathyQt4/examples.dox | 154 - TelepathyQt4/fake-handler-manager-internal.cpp | 165 - TelepathyQt4/fake-handler-manager-internal.h | 90 - TelepathyQt4/feature.cpp | 89 - TelepathyQt4/feature.h | 94 - .../file-transfer-channel-creation-properties.cpp | 433 -- .../file-transfer-channel-creation-properties.h | 96 - TelepathyQt4/file-transfer-channel.cpp | 703 --- TelepathyQt4/file-transfer-channel.h | 108 - TelepathyQt4/filter.dox | 30 - TelepathyQt4/filter.h | 63 - TelepathyQt4/fixed-feature-factory.cpp | 116 - TelepathyQt4/fixed-feature-factory.h | 69 - TelepathyQt4/future-channel-dispatcher.xml | 20 - TelepathyQt4/future-channel.xml | 13 - TelepathyQt4/future-interfaces.xml | 14 - TelepathyQt4/future-internal.h | 36 - TelepathyQt4/future-misc.xml | 7 - TelepathyQt4/future.cpp | 32 - TelepathyQt4/generic-capability-filter.dox | 36 - TelepathyQt4/generic-capability-filter.h | 114 - TelepathyQt4/generic-property-filter.dox | 33 - TelepathyQt4/generic-property-filter.h | 77 - TelepathyQt4/global.h | 103 - TelepathyQt4/groups.dox | 115 - TelepathyQt4/handled-channel-notifier.cpp | 103 - TelepathyQt4/handled-channel-notifier.h | 75 - TelepathyQt4/incoming-file-transfer-channel.cpp | 390 -- TelepathyQt4/incoming-file-transfer-channel.h | 81 - TelepathyQt4/incoming-stream-tube-channel.cpp | 435 -- TelepathyQt4/incoming-stream-tube-channel.h | 80 - TelepathyQt4/key-file.cpp | 582 --- TelepathyQt4/key-file.h | 91 - TelepathyQt4/location-info.cpp | 221 - TelepathyQt4/location-info.h | 95 - TelepathyQt4/main.dox | 133 - TelepathyQt4/manager-file.cpp | 618 --- TelepathyQt4/manager-file.h | 78 - TelepathyQt4/media-session-handler.cpp | 26 - TelepathyQt4/media-session-handler.h | 50 - TelepathyQt4/media-session-handler.xml | 9 - TelepathyQt4/media-stream-handler.cpp | 26 - TelepathyQt4/media-stream-handler.h | 50 - TelepathyQt4/media-stream-handler.xml | 9 - TelepathyQt4/message-content-part.cpp | 96 - TelepathyQt4/message-content-part.h | 96 - TelepathyQt4/message.cpp | 911 ---- TelepathyQt4/message.h | 173 - TelepathyQt4/method-invocation-context.dox | 41 - TelepathyQt4/method-invocation-context.h | 192 - TelepathyQt4/not-filter.dox | 32 - TelepathyQt4/not-filter.h | 73 - TelepathyQt4/object.cpp | 65 - TelepathyQt4/object.h | 63 - TelepathyQt4/optional-interface-factory.cpp | 178 - TelepathyQt4/optional-interface-factory.h | 140 - TelepathyQt4/or-filter.dox | 33 - TelepathyQt4/or-filter.h | 83 - TelepathyQt4/outgoing-file-transfer-channel.cpp | 371 -- TelepathyQt4/outgoing-file-transfer-channel.h | 78 - .../outgoing-stream-tube-channel-internal.h | 122 - TelepathyQt4/outgoing-stream-tube-channel.cpp | 821 ---- TelepathyQt4/outgoing-stream-tube-channel.h | 89 - TelepathyQt4/pending-account.cpp | 184 - TelepathyQt4/pending-account.h | 75 - TelepathyQt4/pending-channel-request-internal.h | 73 - TelepathyQt4/pending-channel-request.cpp | 276 -- TelepathyQt4/pending-channel-request.h | 84 - TelepathyQt4/pending-channel.cpp | 555 --- TelepathyQt4/pending-channel.h | 103 - TelepathyQt4/pending-connection.cpp | 171 - TelepathyQt4/pending-connection.h | 73 - TelepathyQt4/pending-contact-attributes.cpp | 219 - TelepathyQt4/pending-contact-attributes.h | 77 - TelepathyQt4/pending-contact-info.cpp | 128 - TelepathyQt4/pending-contact-info.h | 66 - TelepathyQt4/pending-contacts.cpp | 468 -- TelepathyQt4/pending-contacts.h | 108 - TelepathyQt4/pending-handles.cpp | 490 --- TelepathyQt4/pending-handles.h | 96 - TelepathyQt4/pending-operation.cpp | 424 -- TelepathyQt4/pending-operation.h | 89 - TelepathyQt4/pending-ready.cpp | 148 - TelepathyQt4/pending-ready.h | 71 - TelepathyQt4/pending-send-message.cpp | 153 - TelepathyQt4/pending-send-message.h | 77 - TelepathyQt4/pending-stream-tube-connection.cpp | 272 -- TelepathyQt4/pending-stream-tube-connection.h | 81 - TelepathyQt4/pending-string-list.cpp | 100 - TelepathyQt4/pending-string-list.h | 63 - TelepathyQt4/pending-variant-map.cpp | 91 - TelepathyQt4/pending-variant-map.h | 60 - TelepathyQt4/pending-variant.cpp | 91 - TelepathyQt4/pending-variant.h | 60 - TelepathyQt4/presence.cpp | 335 -- TelepathyQt4/presence.h | 135 - TelepathyQt4/profile-manager.cpp | 332 -- TelepathyQt4/profile-manager.h | 75 - TelepathyQt4/profile.cpp | 1216 ------ TelepathyQt4/profile.h | 176 - TelepathyQt4/properties.cpp | 26 - TelepathyQt4/properties.h | 51 - TelepathyQt4/properties.xml | 9 - TelepathyQt4/protocol-info.cpp | 374 -- TelepathyQt4/protocol-info.h | 102 - TelepathyQt4/protocol-parameter.cpp | 176 - TelepathyQt4/protocol-parameter.h | 87 - TelepathyQt4/readiness-helper.cpp | 684 --- TelepathyQt4/readiness-helper.h | 130 - TelepathyQt4/ready-object.cpp | 161 - TelepathyQt4/ready-object.h | 69 - TelepathyQt4/referenced-handles.cpp | 333 -- TelepathyQt4/referenced-handles.h | 264 -- .../request-temporary-handler-internal.cpp | 135 - TelepathyQt4/request-temporary-handler-internal.h | 91 - TelepathyQt4/requestable-channel-class-spec.cpp | 494 --- TelepathyQt4/requestable-channel-class-spec.h | 134 - TelepathyQt4/room-list-channel.cpp | 106 - TelepathyQt4/room-list-channel.h | 59 - TelepathyQt4/shared-ptr.dox | 111 - TelepathyQt4/shared-ptr.h | 152 - TelepathyQt4/simple-call-observer.cpp | 298 -- TelepathyQt4/simple-call-observer.h | 95 - TelepathyQt4/simple-observer-internal.h | 261 -- TelepathyQt4/simple-observer.cpp | 643 --- TelepathyQt4/simple-observer.h | 105 - TelepathyQt4/simple-pending-operations.h | 110 - TelepathyQt4/simple-stream-tube-handler.cpp | 254 -- TelepathyQt4/simple-stream-tube-handler.h | 120 - TelepathyQt4/simple-text-observer-internal.h | 70 - TelepathyQt4/simple-text-observer.cpp | 298 -- TelepathyQt4/simple-text-observer.h | 80 - TelepathyQt4/stable-interfaces.xml | 26 - TelepathyQt4/stream-tube-channel.cpp | 740 ---- TelepathyQt4/stream-tube-channel.h | 108 - TelepathyQt4/stream-tube-client-internal.h | 61 - TelepathyQt4/stream-tube-client.cpp | 1048 ----- TelepathyQt4/stream-tube-client.h | 217 - TelepathyQt4/stream-tube-server-internal.h | 56 - TelepathyQt4/stream-tube-server.cpp | 1134 ----- TelepathyQt4/stream-tube-server.h | 253 -- TelepathyQt4/streamed-media-channel.cpp | 1539 ------- TelepathyQt4/streamed-media-channel.h | 228 - TelepathyQt4/test-backdoors.cpp | 50 - TelepathyQt4/test-backdoors.h | 59 - TelepathyQt4/text-channel.cpp | 1277 ------ TelepathyQt4/text-channel.h | 139 - TelepathyQt4/tls-certificate.cpp | 26 - TelepathyQt4/tls-certificate.h | 31 - TelepathyQt4/tls-certificate.xml | 9 - TelepathyQt4/tube-channel.cpp | 281 -- TelepathyQt4/tube-channel.h | 80 - TelepathyQt4/types-internal.h | 156 - TelepathyQt4/types.cpp | 73 - TelepathyQt4/types.h | 171 - TelepathyQt4/utils.cpp | 120 - TelepathyQt4/utils.h | 41 - cmake/modules/TelepathyDist.cmake | 20 +- cmake/modules/TpQt4Macros.cmake | 24 +- doxygen.cfg.in | 6 +- examples/accounts/account-item.cpp | 6 +- examples/accounts/account-item.h | 12 +- examples/accounts/accounts-window.cpp | 14 +- examples/accounts/accounts-window.h | 8 +- examples/accounts/main.cpp | 6 +- examples/contact-messenger/sender.cpp | 14 +- examples/contact-messenger/sender.h | 8 +- examples/extensions/CMakeLists.txt | 8 +- examples/file-transfer/file-receiver-handler.cpp | 16 +- examples/file-transfer/file-receiver-handler.h | 14 +- examples/file-transfer/file-receiver.cpp | 18 +- examples/file-transfer/file-receiver.h | 10 +- examples/file-transfer/file-sender.cpp | 42 +- examples/file-transfer/file-sender.h | 10 +- examples/file-transfer/pending-file-receive.cpp | 8 +- examples/file-transfer/pending-file-receive.h | 12 +- examples/file-transfer/pending-file-send.cpp | 8 +- examples/file-transfer/pending-file-send.h | 12 +- examples/file-transfer/pending-file-transfer.cpp | 8 +- examples/file-transfer/pending-file-transfer.h | 12 +- examples/protocols/cm-wrapper.cpp | 8 +- examples/protocols/cm-wrapper.h | 8 +- examples/protocols/main.cpp | 6 +- examples/protocols/protocols.cpp | 8 +- examples/protocols/protocols.h | 8 +- examples/roster/main.cpp | 6 +- examples/roster/roster-item.cpp | 4 +- examples/roster/roster-item.h | 10 +- examples/roster/roster-widget.cpp | 16 +- examples/roster/roster-widget.h | 10 +- examples/roster/roster-window.cpp | 16 +- examples/roster/roster-window.h | 10 +- examples/stream-tubes/tube-initiator.cpp | 42 +- examples/stream-tubes/tube-initiator.h | 12 +- examples/stream-tubes/tube-receiver.cpp | 8 +- examples/stream-tubes/tube-receiver.h | 8 +- tests/capabilities.cpp | 16 +- tests/channel-class-spec.cpp | 8 +- tests/dbus/account-basics.cpp | 20 +- tests/dbus/account-channel-dispatcher.cpp | 28 +- tests/dbus/account-connection-factory.cpp | 12 +- tests/dbus/account-set.cpp | 24 +- tests/dbus/chan-basics.cpp | 20 +- tests/dbus/chan-conference.cpp | 4 +- tests/dbus/chan-group.cpp | 14 +- tests/dbus/client-factories.cpp | 66 +- tests/dbus/client.cpp | 34 +- tests/dbus/cm-basics.cpp | 10 +- tests/dbus/conn-basics.cpp | 14 +- tests/dbus/conn-capabilities.cpp | 4 +- tests/dbus/conn-introspect-cornercases.cpp | 14 +- tests/dbus/conn-requests.cpp | 12 +- tests/dbus/conn-roster-groups-legacy.cpp | 18 +- tests/dbus/conn-roster-groups.cpp | 18 +- tests/dbus/conn-roster-legacy.cpp | 8 +- tests/dbus/conn-roster.cpp | 12 +- tests/dbus/contact-factory.cpp | 6 +- tests/dbus/contact-messenger.cpp | 32 +- tests/dbus/contact-search-chan.cpp | 6 +- tests/dbus/contacts-avatar.cpp | 10 +- tests/dbus/contacts-capabilities.cpp | 10 +- tests/dbus/contacts-info.cpp | 10 +- tests/dbus/contacts-location.cpp | 10 +- tests/dbus/contacts.cpp | 26 +- tests/dbus/dbus-properties.cpp | 14 +- tests/dbus/dbus-proxy-factory.cpp | 18 +- tests/dbus/handles.cpp | 8 +- tests/dbus/profile-manager.cpp | 4 +- tests/dbus/simple-observer.cpp | 24 +- tests/dbus/stateful-proxy.cpp | 12 +- tests/dbus/stream-tube-chan.cpp | 14 +- tests/dbus/stream-tube-handlers.cpp | 30 +- tests/dbus/streamed-media-chan.cpp | 14 +- tests/dbus/text-chan.cpp | 10 +- tests/dbus/types.cpp | 6 +- tests/features.cpp | 8 +- .../file-transfer-channel-creation-properties.cpp | 2 +- tests/key-file.cpp | 2 +- tests/lib/glib-helpers/test-conn-helper.cpp | 16 +- tests/lib/glib-helpers/test-conn-helper.h | 12 +- tests/lib/test.cpp | 12 +- tests/lib/test.h | 12 +- tests/manager-file.cpp | 6 +- tests/presence.cpp | 8 +- tests/profile.cpp | 4 +- tests/ptr.cpp | 2 +- tests/rccspec.cpp | 2 +- tests/utils.cpp | 2 +- tools/CMakeLists.txt | 4 +- tools/qt4-client-gen.py | 6 +- tools/qt4-types-gen.py | 2 +- 1014 files changed, 68333 insertions(+), 68333 deletions(-) commit aafde57c570a56bb98df4103a4ee38ed25b91897 Author: Jeremy Whiting Date: Thu Nov 10 15:03:02 2011 -0700 Rename TPQT4 cmake macros to TPQT. CMakeLists.txt | 2 +- TelepathyQt4/CMakeLists.txt | 52 +++++----- TelepathyQt4/dbus-proxy.cpp | 2 +- cmake/modules/TpQt4Macros.cmake | 156 +++++++++++++++--------------- examples/accounts/CMakeLists.txt | 2 +- examples/contact-messenger/CMakeLists.txt | 2 +- examples/extensions/CMakeLists.txt | 10 +- examples/file-transfer/CMakeLists.txt | 4 +- examples/protocols/CMakeLists.txt | 2 +- examples/roster/CMakeLists.txt | 2 +- examples/stream-tubes/CMakeLists.txt | 4 +- tests/CMakeLists.txt | 20 ++-- tests/dbus/CMakeLists.txt | 76 +++++++-------- tests/dbus/conn-basics.cpp | 6 +- tests/lib/CMakeLists.txt | 2 +- tests/lib/glib-helpers/CMakeLists.txt | 2 +- tests/lib/glib/callable/CMakeLists.txt | 2 +- tests/lib/glib/contactlist/CMakeLists.txt | 2 +- tests/lib/glib/csh/CMakeLists.txt | 2 +- tests/lib/glib/echo/CMakeLists.txt | 2 +- tests/lib/glib/echo2/CMakeLists.txt | 2 +- 21 files changed, 177 insertions(+), 177 deletions(-) commit c852994b80c35a173d1409adf23381aa7fb022b8 Author: Jeremy Whiting Date: Thu Nov 10 14:20:05 2011 -0700 Rename TELEPATHY_QT4_DEPRECATED to TP_QT_DEPRECATED. TelepathyQt4/ConnectionInterfaceClientTypes | 2 +- TelepathyQt4/ConnectionInterfaceContactGroups | 2 +- TelepathyQt4/ConnectionInterfaceContactList | 2 +- TelepathyQt4/ConnectionInterfacePowerSaving | 2 +- TelepathyQt4/account.h | 4 +-- TelepathyQt4/connection-capabilities.h | 6 ++--- TelepathyQt4/contact-manager.h | 4 +-- TelepathyQt4/contact.h | 2 +- TelepathyQt4/global.h | 36 +++++++++++++-------------- TelepathyQt4/pending-operation.h | 2 +- TelepathyQt4/profile.h | 2 +- TelepathyQt4/stream-tube-channel.h | 4 +-- TelepathyQt4/tube-channel.h | 2 +- cmake/modules/TelepathyDefaults.cmake | 2 +- 14 files changed, 36 insertions(+), 36 deletions(-) commit 62af6daa073e0f10159d1dcc367574d305f9572f Author: Jeremy Whiting Date: Thu Nov 10 13:55:29 2011 -0700 Rename TP_QT4 cmake variables to TP_QT. CMakeLists.txt | 38 +++++++++++++++++------------------ TelepathyQt4/CMakeLists.txt | 4 ++-- TelepathyQt4/Farsight/CMakeLists.txt | 4 ++-- TelepathyQt4/channel-class-spec.h | 2 +- cmake/modules/TelepathyDefaults.cmake | 6 +++--- cmake/modules/TelepathyDist.cmake | 6 +++--- 6 files changed, 30 insertions(+), 30 deletions(-) commit 0559c647435962437048e13f11fd60932e5c5602 Author: Jeremy Whiting Date: Thu Nov 10 13:49:17 2011 -0700 Rename TELEPATHY_QT4_FS_NO_EXPORT to TP_QT_FS_NO_EXPORT. TelepathyQt4/Farsight/global.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a7f2bf48b2052cb047acb2a53d5f7d77a194517d Author: Jeremy Whiting Date: Thu Nov 10 13:47:06 2011 -0700 Rename TELEPATHY_QT4_FS_EXPORT to TP_QT_FS_EXPORT. TelepathyQt4/Farsight/channel.h | 2 +- TelepathyQt4/Farsight/global.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit cd88a442d0335bbbed8d0e5fa11052ae8cd04cbb Author: Jeremy Whiting Date: Wed Nov 9 17:22:33 2011 -0700 Rename TP_QT4_ENABLE_LOWLEVEL_API to TP_QT_ENABLE_LOWLEVEL_API. TelepathyQt4/connection-manager.h | 2 +- TelepathyQt4/connection.h | 2 +- tests/dbus/account-channel-dispatcher.cpp | 2 +- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/client-factories.cpp | 2 +- tests/dbus/client.cpp | 2 +- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-introspect-cornercases.cpp | 2 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/conn-roster-groups-legacy.cpp | 2 +- tests/dbus/conn-roster-groups.cpp | 4 ++-- tests/dbus/contact-messenger.cpp | 2 +- tests/dbus/contacts.cpp | 2 +- tests/dbus/handles.cpp | 2 +- tests/dbus/simple-observer.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- tests/lib/glib-helpers/test-conn-helper.cpp | 2 +- 17 files changed, 18 insertions(+), 18 deletions(-) commit 9812689163867968f1a6ec95dfa788592a609917 Author: Jeremy Whiting Date: Tue Nov 8 17:56:01 2011 -0700 Rename TP_QT4 to TP_QT in generated constants.h. TelepathyQt4/CMakeLists.txt | 4 +- TelepathyQt4/abstract-client.cpp | 8 +- TelepathyQt4/abstract-client.h | 36 +++--- TelepathyQt4/abstract-interface.cpp | 6 +- TelepathyQt4/account.cpp | 22 ++-- TelepathyQt4/capabilities-base.cpp | 4 +- TelepathyQt4/channel-class-spec.cpp | 4 +- TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/channel-request.cpp | 2 +- TelepathyQt4/channel.cpp | 16 +-- TelepathyQt4/connection-manager.cpp | 18 +-- TelepathyQt4/connection.cpp | 26 ++--- TelepathyQt4/contact-capabilities.cpp | 6 +- TelepathyQt4/contact-manager-roster.cpp | 22 ++-- TelepathyQt4/contact-manager.cpp | 22 ++-- TelepathyQt4/contact-search-channel.cpp | 2 +- TelepathyQt4/contact.cpp | 12 +- TelepathyQt4/message.cpp | 12 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 4 +- TelepathyQt4/pending-channel.cpp | 10 +- TelepathyQt4/pending-send-message.cpp | 2 +- TelepathyQt4/readiness-helper.cpp | 2 +- .../request-temporary-handler-internal.cpp | 6 +- TelepathyQt4/requestable-channel-class-spec.cpp | 128 ++++++++++----------- TelepathyQt4/simple-call-observer.cpp | 4 +- TelepathyQt4/simple-observer.cpp | 2 +- TelepathyQt4/simple-stream-tube-handler.cpp | 4 +- TelepathyQt4/simple-text-observer.cpp | 2 +- TelepathyQt4/stream-tube-server.cpp | 2 +- TelepathyQt4/streamed-media-channel.cpp | 20 ++-- examples/file-transfer/file-receiver-handler.cpp | 4 +- examples/file-transfer/file-sender.cpp | 2 +- examples/file-transfer/pending-file-send.cpp | 2 +- tests/channel-class-spec.cpp | 18 +-- tests/dbus/account-channel-dispatcher.cpp | 12 +- tests/dbus/chan-basics.cpp | 14 +-- tests/dbus/chan-conference.cpp | 2 +- tests/dbus/chan-group.cpp | 12 +- tests/dbus/client.cpp | 2 +- tests/dbus/contact-messenger.cpp | 8 +- tests/dbus/simple-observer.cpp | 8 +- tests/dbus/stream-tube-handlers.cpp | 42 +++---- tests/dbus/streamed-media-chan.cpp | 18 +-- tests/dbus/text-chan.cpp | 4 +- tests/rccspec.cpp | 72 ++++++------ 45 files changed, 315 insertions(+), 315 deletions(-) commit 74156c9b06b396cd4d3a0ca90d53970108824bd0 Author: Jeremy Whiting Date: Tue Nov 8 17:06:41 2011 -0700 Rename error code macros in constants.h. TelepathyQt4/account.cpp | 4 ++-- TelepathyQt4/channel-dispatch-operation.cpp | 10 +++++----- TelepathyQt4/channel.cpp | 2 +- TelepathyQt4/constants.h | 22 +++------------------- TelepathyQt4/incoming-file-transfer-channel.cpp | 2 +- TelepathyQt4/stream-tube-channel.cpp | 2 +- TelepathyQt4/stream-tube-client.cpp | 2 +- tests/dbus/account-set.cpp | 2 +- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/stream-tube-handlers.cpp | 4 ++-- 10 files changed, 18 insertions(+), 34 deletions(-) commit 77452b30a34d3c5b95cbdf07cf732ca5689b76e4 Author: Jeremy Whiting Date: Tue Nov 8 13:39:32 2011 -0700 Rename TELEPATHY_DBUS macros to TP_QT_DBUS. TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/constants.h | 40 +++-------------------------- TelepathyQt4/dbus-proxy.cpp | 2 +- TelepathyQt4/pending-channel-request.cpp | 2 +- TelepathyQt4/pending-send-message.cpp | 4 +-- tests/dbus/contact-messenger.cpp | 2 +- tests/dbus/stateful-proxy.cpp | 4 +-- 7 files changed, 11 insertions(+), 45 deletions(-) commit 9dc4619bd80470bcd29dea8c39c1f04e1d23b4b6 Author: Jeremy Whiting Date: Tue Nov 8 12:13:37 2011 -0700 Rename TELEPATHY_ACCOUNT macros to TP_QT_ACCOUNT. TelepathyQt4/account.cpp | 8 ++++---- TelepathyQt4/constants.h | 12 +----------- examples/file-transfer/file-sender.cpp | 2 +- examples/roster/roster-window.cpp | 2 +- examples/stream-tubes/tube-initiator.cpp | 2 +- 5 files changed, 8 insertions(+), 18 deletions(-) commit 62a30fa64ceeed04214b9331af0524cdb6c9a347 Author: Jeremy Whiting Date: Mon Nov 7 21:25:36 2011 -0700 Rename TELEPATHY_CHANNEL_DISPATCHER to TP_QT_CHANNEL_DISPATCHER. TelepathyQt4/account.cpp | 2 +- TelepathyQt4/constants.h | 16 ++-------------- TelepathyQt4/contact-messenger.cpp | 2 +- tests/dbus/stream-tube-handlers.cpp | 2 +- 4 files changed, 5 insertions(+), 17 deletions(-) commit 6b36aef52852f7459ec251814589b84a9820aacc Author: Jeremy Whiting Date: Mon Nov 7 21:08:45 2011 -0700 Rename TELEPATHY_ACCOUNT_MANAGER macros to TP_QT_ACCOUNT_MANAGER. TelepathyQt4/account-factory.cpp | 4 ++-- TelepathyQt4/account-manager.cpp | 4 ++-- TelepathyQt4/account.cpp | 6 +++--- TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/channel-request.cpp | 4 ++-- TelepathyQt4/client-registrar.cpp | 4 ++-- TelepathyQt4/constants.h | 20 ++------------------ examples/contact-messenger/sender.cpp | 2 +- examples/roster/roster-window.cpp | 2 +- examples/stream-tubes/tube-initiator.cpp | 2 +- 10 files changed, 17 insertions(+), 33 deletions(-) commit 109433454ee116f26b124c15dccfe91f2c76240c Author: Jeremy Whiting Date: Mon Nov 7 20:44:44 2011 -0700 Rename TELEPATHY_CONNECTION macros to TP_QT_CONNECTION. TelepathyQt4/connection.cpp | 4 ++-- TelepathyQt4/constants.h | 11 ++--------- 2 files changed, 4 insertions(+), 11 deletions(-) commit e9fb6c25b5ede7e6af3136de27ffbd347c4561fe Author: Jeremy Whiting Date: Mon Nov 7 20:26:29 2011 -0700 Rename TELEPATHY_CONNECTION_MANAGER to TP_QT_CONNECTION_MANAGER. TelepathyQt4/connection-manager.cpp | 6 ++---- TelepathyQt4/constants.h | 16 ++-------------- 2 files changed, 4 insertions(+), 18 deletions(-) commit eca5a43c556509cb4cefdeb50783fb0f0f54129c Author: Jeremy Whiting Date: Mon Nov 7 17:07:33 2011 -0700 Rename TELEPATHY_QT4_NO_EXPORT to TP_QT_NO_EXPORT. TelepathyQt4/abstract-client.cpp | 12 ++--- TelepathyQt4/abstract-interface.cpp | 2 +- TelepathyQt4/account-manager.cpp | 2 +- TelepathyQt4/account-manager.h | 10 ++-- TelepathyQt4/account-property-filter.cpp | 2 +- TelepathyQt4/account-set-internal.h | 10 ++-- TelepathyQt4/account-set.h | 6 +-- TelepathyQt4/account.cpp | 2 +- TelepathyQt4/account.h | 18 +++---- TelepathyQt4/avatar.cpp | 2 +- TelepathyQt4/capabilities-base.cpp | 2 +- TelepathyQt4/channel-class-spec.cpp | 4 +- TelepathyQt4/channel-dispatch-operation-internal.h | 4 +- TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/channel-dispatch-operation.h | 8 +-- TelepathyQt4/channel-factory.cpp | 2 +- TelepathyQt4/channel-internal.h | 10 ++-- TelepathyQt4/channel-request.cpp | 4 +- TelepathyQt4/channel-request.h | 10 ++-- TelepathyQt4/channel.cpp | 8 +-- TelepathyQt4/channel.h | 58 +++++++++++----------- TelepathyQt4/client-registrar-internal.h | 10 ++-- TelepathyQt4/client-registrar.cpp | 2 +- TelepathyQt4/connection-internal.h | 10 ++-- TelepathyQt4/connection-lowlevel.h | 8 +-- TelepathyQt4/connection-manager-internal.h | 8 +-- TelepathyQt4/connection-manager-lowlevel.h | 2 +- TelepathyQt4/connection-manager.h | 8 +-- TelepathyQt4/connection.cpp | 8 +-- TelepathyQt4/connection.h | 40 +++++++-------- TelepathyQt4/contact-factory.cpp | 2 +- TelepathyQt4/contact-manager-internal.h | 18 +++---- TelepathyQt4/contact-manager.cpp | 2 +- TelepathyQt4/contact-manager.h | 36 +++++++------- TelepathyQt4/contact-messenger.cpp | 2 +- TelepathyQt4/contact-messenger.h | 2 +- TelepathyQt4/contact-search-channel-internal.h | 6 +-- TelepathyQt4/contact-search-channel.cpp | 4 +- TelepathyQt4/contact-search-channel.h | 12 ++--- TelepathyQt4/contact.cpp | 4 +- TelepathyQt4/contact.h | 32 ++++++------ TelepathyQt4/dbus-proxy-factory-internal.h | 2 +- TelepathyQt4/dbus-proxy-factory.cpp | 2 +- TelepathyQt4/dbus-proxy.cpp | 4 +- TelepathyQt4/dbus-proxy.h | 4 +- TelepathyQt4/feature.cpp | 2 +- .../file-transfer-channel-creation-properties.cpp | 2 +- TelepathyQt4/file-transfer-channel.cpp | 2 +- TelepathyQt4/file-transfer-channel.h | 12 ++--- TelepathyQt4/fixed-feature-factory.cpp | 2 +- TelepathyQt4/global.h | 6 +-- TelepathyQt4/handled-channel-notifier.cpp | 2 +- TelepathyQt4/handled-channel-notifier.h | 4 +- TelepathyQt4/incoming-file-transfer-channel.cpp | 4 +- TelepathyQt4/incoming-file-transfer-channel.h | 14 +++--- TelepathyQt4/incoming-stream-tube-channel.cpp | 2 +- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/key-file.cpp | 2 +- TelepathyQt4/location-info.cpp | 2 +- TelepathyQt4/location-info.h | 2 +- TelepathyQt4/manager-file.cpp | 2 +- TelepathyQt4/message-content-part.cpp | 2 +- TelepathyQt4/message.cpp | 4 +- TelepathyQt4/message.h | 24 ++++----- TelepathyQt4/optional-interface-factory.cpp | 2 +- TelepathyQt4/outgoing-file-transfer-channel.cpp | 2 +- TelepathyQt4/outgoing-file-transfer-channel.h | 16 +++--- .../outgoing-stream-tube-channel-internal.h | 8 +-- TelepathyQt4/outgoing-stream-tube-channel.h | 6 +-- TelepathyQt4/pending-account.cpp | 2 +- TelepathyQt4/pending-account.h | 8 +-- TelepathyQt4/pending-channel-request-internal.h | 2 +- TelepathyQt4/pending-channel-request.cpp | 2 +- TelepathyQt4/pending-channel-request.h | 10 ++-- TelepathyQt4/pending-channel.cpp | 4 +- TelepathyQt4/pending-channel.h | 20 ++++---- TelepathyQt4/pending-connection.cpp | 2 +- TelepathyQt4/pending-connection.h | 8 +-- TelepathyQt4/pending-contact-attributes.cpp | 2 +- TelepathyQt4/pending-contact-attributes.h | 6 +-- TelepathyQt4/pending-contact-info.cpp | 2 +- TelepathyQt4/pending-contact-info.h | 4 +- TelepathyQt4/pending-contacts.cpp | 2 +- TelepathyQt4/pending-contacts.h | 18 +++---- TelepathyQt4/pending-handles.cpp | 2 +- TelepathyQt4/pending-handles.h | 14 +++--- TelepathyQt4/pending-operation.cpp | 4 +- TelepathyQt4/pending-operation.h | 4 +- TelepathyQt4/pending-ready.cpp | 2 +- TelepathyQt4/pending-ready.h | 6 +-- TelepathyQt4/pending-send-message.cpp | 2 +- TelepathyQt4/pending-send-message.h | 10 ++-- TelepathyQt4/pending-stream-tube-connection.cpp | 2 +- TelepathyQt4/pending-stream-tube-connection.h | 10 ++-- TelepathyQt4/pending-string-list.cpp | 2 +- TelepathyQt4/pending-string-list.h | 2 +- TelepathyQt4/pending-variant-map.cpp | 2 +- TelepathyQt4/pending-variant-map.h | 2 +- TelepathyQt4/pending-variant.cpp | 2 +- TelepathyQt4/pending-variant.h | 2 +- TelepathyQt4/presence.cpp | 4 +- TelepathyQt4/profile-manager.cpp | 2 +- TelepathyQt4/profile-manager.h | 4 +- TelepathyQt4/profile.cpp | 8 +-- TelepathyQt4/profile.h | 30 +++++------ TelepathyQt4/protocol-info.cpp | 2 +- TelepathyQt4/protocol-info.h | 18 +++---- TelepathyQt4/protocol-parameter.cpp | 2 +- TelepathyQt4/protocol-parameter.h | 2 +- TelepathyQt4/readiness-helper.cpp | 4 +- TelepathyQt4/readiness-helper.h | 4 +- TelepathyQt4/ready-object.cpp | 2 +- TelepathyQt4/referenced-handles.cpp | 2 +- TelepathyQt4/referenced-handles.h | 2 +- TelepathyQt4/request-temporary-handler-internal.h | 2 +- TelepathyQt4/requestable-channel-class-spec.cpp | 2 +- TelepathyQt4/room-list-channel.cpp | 2 +- TelepathyQt4/simple-call-observer.cpp | 2 +- TelepathyQt4/simple-call-observer.h | 8 +-- TelepathyQt4/simple-observer-internal.h | 12 ++--- TelepathyQt4/simple-observer.h | 14 +++--- TelepathyQt4/simple-pending-operations.h | 4 +- TelepathyQt4/simple-stream-tube-handler.h | 2 +- TelepathyQt4/simple-text-observer-internal.h | 4 +- TelepathyQt4/simple-text-observer.h | 8 +-- TelepathyQt4/stream-tube-channel.cpp | 2 +- TelepathyQt4/stream-tube-channel.h | 6 +-- TelepathyQt4/stream-tube-client-internal.h | 2 +- TelepathyQt4/stream-tube-client.cpp | 4 +- TelepathyQt4/stream-tube-client.h | 12 ++--- TelepathyQt4/stream-tube-server-internal.h | 2 +- TelepathyQt4/stream-tube-server.cpp | 8 +-- TelepathyQt4/stream-tube-server.h | 12 ++--- TelepathyQt4/streamed-media-channel.cpp | 6 +-- TelepathyQt4/streamed-media-channel.h | 34 ++++++------- TelepathyQt4/text-channel.cpp | 2 +- TelepathyQt4/text-channel.h | 22 ++++---- TelepathyQt4/tube-channel.cpp | 2 +- TelepathyQt4/tube-channel.h | 4 +- cmake/modules/TpQt4Macros.cmake | 2 +- doxygen.cfg.in | 2 +- tools/qt4-types-gen.py | 2 +- 142 files changed, 481 insertions(+), 481 deletions(-) commit e787c4422154da00c9867447c34629896f109785 Author: Jeremy Whiting Date: Mon Nov 7 12:25:22 2011 -0700 Rename TELEPATHY_QT4_EXPORT to TP_QT_EXPORT. HACKING | 4 ++-- TelepathyQt4/CMakeLists.txt | 2 +- TelepathyQt4/abstract-client.h | 8 ++++---- TelepathyQt4/abstract-interface.h | 2 +- TelepathyQt4/account-factory.h | 2 +- TelepathyQt4/account-manager.h | 2 +- TelepathyQt4/account-property-filter.h | 2 +- TelepathyQt4/account-set.h | 2 +- TelepathyQt4/account.h | 2 +- TelepathyQt4/avatar.h | 4 ++-- TelepathyQt4/capabilities-base.h | 2 +- TelepathyQt4/channel-class-spec.h | 4 ++-- TelepathyQt4/channel-dispatch-operation.h | 2 +- TelepathyQt4/channel-factory.h | 4 ++-- TelepathyQt4/channel-request.h | 4 ++-- TelepathyQt4/channel.h | 2 +- TelepathyQt4/client-registrar.h | 2 +- TelepathyQt4/connection-capabilities.h | 2 +- TelepathyQt4/connection-factory.h | 2 +- TelepathyQt4/connection-lowlevel.h | 2 +- TelepathyQt4/connection-manager-lowlevel.h | 2 +- TelepathyQt4/connection-manager.h | 2 +- TelepathyQt4/connection.h | 2 +- TelepathyQt4/contact-capabilities.h | 2 +- TelepathyQt4/contact-factory.h | 2 +- TelepathyQt4/contact-manager.h | 2 +- TelepathyQt4/contact-messenger.h | 2 +- TelepathyQt4/contact-search-channel.h | 2 +- TelepathyQt4/contact.h | 2 +- TelepathyQt4/dbus-proxy-factory.h | 2 +- TelepathyQt4/dbus-proxy.h | 6 +++--- TelepathyQt4/debug-internal.h | 6 +++--- TelepathyQt4/debug.h | 6 +++--- TelepathyQt4/feature.h | 4 ++-- TelepathyQt4/file-transfer-channel-creation-properties.h | 2 +- TelepathyQt4/file-transfer-channel.h | 2 +- TelepathyQt4/fixed-feature-factory.h | 2 +- TelepathyQt4/global.h | 4 ++-- TelepathyQt4/handled-channel-notifier.h | 2 +- TelepathyQt4/incoming-file-transfer-channel.h | 2 +- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/key-file.h | 2 +- TelepathyQt4/location-info.h | 2 +- TelepathyQt4/manager-file.h | 2 +- TelepathyQt4/message-content-part.h | 4 ++-- TelepathyQt4/message.h | 4 ++-- TelepathyQt4/object.h | 2 +- TelepathyQt4/optional-interface-factory.h | 2 +- TelepathyQt4/outgoing-file-transfer-channel.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- TelepathyQt4/pending-account.h | 2 +- TelepathyQt4/pending-channel-request.h | 2 +- TelepathyQt4/pending-channel.h | 2 +- TelepathyQt4/pending-connection.h | 2 +- TelepathyQt4/pending-contact-attributes.h | 2 +- TelepathyQt4/pending-contact-info.h | 2 +- TelepathyQt4/pending-contacts.h | 2 +- TelepathyQt4/pending-handles.h | 2 +- TelepathyQt4/pending-operation.h | 2 +- TelepathyQt4/pending-ready.h | 2 +- TelepathyQt4/pending-send-message.h | 2 +- TelepathyQt4/pending-stream-tube-connection.h | 2 +- TelepathyQt4/pending-string-list.h | 2 +- TelepathyQt4/pending-variant-map.h | 2 +- TelepathyQt4/pending-variant.h | 2 +- TelepathyQt4/presence.h | 6 +++--- TelepathyQt4/profile-manager.h | 2 +- TelepathyQt4/profile.h | 2 +- TelepathyQt4/protocol-info.h | 2 +- TelepathyQt4/protocol-parameter.h | 2 +- TelepathyQt4/readiness-helper.h | 2 +- TelepathyQt4/ready-object.h | 2 +- TelepathyQt4/referenced-handles.h | 2 +- TelepathyQt4/requestable-channel-class-spec.h | 4 ++-- TelepathyQt4/room-list-channel.h | 2 +- TelepathyQt4/shared-ptr.h | 2 +- TelepathyQt4/simple-call-observer.h | 2 +- TelepathyQt4/simple-observer.h | 2 +- TelepathyQt4/simple-pending-operations.h | 8 ++++---- TelepathyQt4/simple-text-observer.h | 2 +- TelepathyQt4/stream-tube-channel.h | 2 +- TelepathyQt4/stream-tube-client.h | 2 +- TelepathyQt4/stream-tube-server.h | 2 +- TelepathyQt4/streamed-media-channel.h | 6 +++--- TelepathyQt4/test-backdoors.h | 2 +- TelepathyQt4/text-channel.h | 2 +- TelepathyQt4/tube-channel.h | 2 +- TelepathyQt4/types-internal.h | 10 +++++----- TelepathyQt4/types.h | 2 +- TelepathyQt4/utils.h | 2 +- cmake/modules/TpQt4Macros.cmake | 2 +- doxygen.cfg.in | 2 +- 92 files changed, 122 insertions(+), 122 deletions(-) commit ec69a6dca62e2af1cca8dec6caa5b069a1f8293b Author: Jeremy Whiting Date: Mon Nov 7 11:53:14 2011 -0700 Rename BUILDING_TELEPATHY_QT4 to BUILDING_TP_QT. TelepathyQt4/CMakeLists.txt | 2 +- TelepathyQt4/Farsight/CMakeLists.txt | 4 ++-- TelepathyQt4/Farsight/global.h | 2 +- TelepathyQt4/connection-manager.h | 2 +- TelepathyQt4/connection.h | 2 +- TelepathyQt4/dbus-proxy-factory-internal.h | 2 +- TelepathyQt4/global.h | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) commit e514b7c360d0672593c38f30c89234b00cef7b7d Author: Jeremy Whiting Date: Mon Nov 7 11:32:08 2011 -0700 Rename IN_TELEPATHY_QT4_HEADER to IN_TP_QT_HEADER. TelepathyQt4/AbstractClient | 6 +++--- TelepathyQt4/AbstractClientApprover | 6 +++--- TelepathyQt4/AbstractClientHandler | 6 +++--- TelepathyQt4/AbstractClientObserver | 6 +++--- TelepathyQt4/AbstractInterface | 6 +++--- TelepathyQt4/Account | 6 +++--- TelepathyQt4/AccountCapabilityFilter | 6 +++--- TelepathyQt4/AccountFactory | 6 +++--- TelepathyQt4/AccountFilter | 6 +++--- TelepathyQt4/AccountInterface | 6 +++--- TelepathyQt4/AccountInterfaceAddressingInterface | 6 +++--- TelepathyQt4/AccountInterfaceAvatarInterface | 6 +++--- TelepathyQt4/AccountManager | 6 +++--- TelepathyQt4/AccountManagerInterface | 6 +++--- TelepathyQt4/AccountPropertyFilter | 6 +++--- TelepathyQt4/AccountSet | 6 +++--- TelepathyQt4/AndFilter | 6 +++--- TelepathyQt4/AuthenticationTLSCertificateInterface | 6 +++--- TelepathyQt4/AvatarData | 6 +++--- TelepathyQt4/AvatarSpec | 6 +++--- TelepathyQt4/CMakeLists.txt | 4 ++-- TelepathyQt4/CapabilitiesBase | 6 +++--- TelepathyQt4/Channel | 6 +++--- TelepathyQt4/ChannelClassFeatures | 6 +++--- TelepathyQt4/ChannelClassSpec | 6 +++--- TelepathyQt4/ChannelClassSpecList | 6 +++--- TelepathyQt4/ChannelDispatchOperation | 6 +++--- TelepathyQt4/ChannelDispatchOperationInterface | 6 +++--- TelepathyQt4/ChannelDispatcher | 6 +++--- TelepathyQt4/ChannelDispatcherInterface | 6 +++--- TelepathyQt4/ChannelFactory | 6 +++--- TelepathyQt4/ChannelInterface | 6 +++--- TelepathyQt4/ChannelInterfaceAnonymityInterface | 6 +++--- TelepathyQt4/ChannelInterfaceCallStateInterface | 6 +++--- TelepathyQt4/ChannelInterfaceChatStateInterface | 6 +++--- TelepathyQt4/ChannelInterfaceConferenceInterface | 6 +++--- TelepathyQt4/ChannelInterfaceDTMFInterface | 6 +++--- TelepathyQt4/ChannelInterfaceGroupInterface | 6 +++--- TelepathyQt4/ChannelInterfaceHoldInterface | 6 +++--- TelepathyQt4/ChannelInterfaceMediaSignallingInterface | 6 +++--- TelepathyQt4/ChannelInterfaceMessagesInterface | 6 +++--- TelepathyQt4/ChannelInterfacePasswordInterface | 6 +++--- TelepathyQt4/ChannelInterfaceSASLAuthenticationInterface | 6 +++--- TelepathyQt4/ChannelInterfaceSecurableInterface | 6 +++--- TelepathyQt4/ChannelInterfaceServicePointInterface | 6 +++--- TelepathyQt4/ChannelInterfaceTubeInterface | 6 +++--- TelepathyQt4/ChannelRequest | 6 +++--- TelepathyQt4/ChannelRequestHints | 6 +++--- TelepathyQt4/ChannelRequestInterface | 6 +++--- TelepathyQt4/ChannelTypeContactListInterface | 6 +++--- TelepathyQt4/ChannelTypeContactSearchInterface | 6 +++--- TelepathyQt4/ChannelTypeFileTransferInterface | 6 +++--- TelepathyQt4/ChannelTypeRoomListInterface | 6 +++--- TelepathyQt4/ChannelTypeServerAuthenticationInterface | 6 +++--- TelepathyQt4/ChannelTypeServerTLSConnectionInterface | 6 +++--- TelepathyQt4/ChannelTypeStreamTubeInterface | 6 +++--- TelepathyQt4/ChannelTypeStreamedMediaInterface | 6 +++--- TelepathyQt4/ChannelTypeTextInterface | 6 +++--- TelepathyQt4/ChannelTypeTubeInterface | 6 +++--- TelepathyQt4/ChannelTypeTubesInterface | 6 +++--- TelepathyQt4/Client | 6 +++--- TelepathyQt4/ClientApproverInterface | 6 +++--- TelepathyQt4/ClientHandlerInterface | 6 +++--- TelepathyQt4/ClientInterface | 6 +++--- TelepathyQt4/ClientInterfaceRequestsInterface | 6 +++--- TelepathyQt4/ClientObserverInterface | 6 +++--- TelepathyQt4/ClientRegistrar | 6 +++--- TelepathyQt4/Connection | 6 +++--- TelepathyQt4/ConnectionCapabilities | 6 +++--- TelepathyQt4/ConnectionFactory | 6 +++--- TelepathyQt4/ConnectionInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceAliasingInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceAnonymityInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceAvatarsInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceBalanceInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceCapabilitiesInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceCellularInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceClientTypes | 6 +++--- TelepathyQt4/ConnectionInterfaceClientTypesInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceContactBlockingInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceContactCapabilitiesInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceContactGroups | 6 +++--- TelepathyQt4/ConnectionInterfaceContactGroupsInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceContactInfoInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceContactList | 6 +++--- TelepathyQt4/ConnectionInterfaceContactListInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceContactsInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceLocationInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceMailNotificationInterface | 6 +++--- TelepathyQt4/ConnectionInterfacePowerSaving | 6 +++--- TelepathyQt4/ConnectionInterfacePowerSavingInterface | 6 +++--- TelepathyQt4/ConnectionInterfacePresenceInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceRequestsInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceServicePointInterface | 6 +++--- TelepathyQt4/ConnectionInterfaceSimplePresenceInterface | 6 +++--- TelepathyQt4/ConnectionLowlevel | 6 +++--- TelepathyQt4/ConnectionManager | 6 +++--- TelepathyQt4/ConnectionManagerInterface | 6 +++--- TelepathyQt4/ConnectionManagerLowlevel | 6 +++--- TelepathyQt4/Constants | 6 +++--- TelepathyQt4/Contact | 6 +++--- TelepathyQt4/ContactCapabilities | 6 +++--- TelepathyQt4/ContactFactory | 6 +++--- TelepathyQt4/ContactManager | 6 +++--- TelepathyQt4/ContactMessenger | 6 +++--- TelepathyQt4/ContactSearchChannel | 6 +++--- TelepathyQt4/DBus | 6 +++--- TelepathyQt4/DBusDaemonInterface | 6 +++--- TelepathyQt4/DBusProxy | 6 +++--- TelepathyQt4/DBusProxyFactory | 6 +++--- TelepathyQt4/Debug | 6 +++--- TelepathyQt4/Farsight/Channel | 6 +++--- TelepathyQt4/Farsight/channel.h | 4 ++-- TelepathyQt4/Farsight/global.h | 4 ++-- TelepathyQt4/Feature | 6 +++--- TelepathyQt4/Features | 6 +++--- TelepathyQt4/FileTransferChannel | 6 +++--- TelepathyQt4/FileTransferChannelCreationProperties | 6 +++--- TelepathyQt4/Filter | 6 +++--- TelepathyQt4/FixedFeatureFactory | 6 +++--- TelepathyQt4/GenericCapabilityFilter | 6 +++--- TelepathyQt4/GenericPropertyFilter | 6 +++--- TelepathyQt4/Global | 6 +++--- TelepathyQt4/HandledChannelNotifier | 6 +++--- TelepathyQt4/IncomingFileTransferChannel | 6 +++--- TelepathyQt4/IncomingStreamTubeChannel | 6 +++--- TelepathyQt4/IntrospectableInterface | 6 +++--- TelepathyQt4/KeyFile | 6 +++--- TelepathyQt4/LocationInfo | 6 +++--- TelepathyQt4/ManagerFile | 6 +++--- TelepathyQt4/MediaSessionHandler | 6 +++--- TelepathyQt4/MediaSessionHandlerInterface | 6 +++--- TelepathyQt4/MediaStreamHandler | 6 +++--- TelepathyQt4/MediaStreamHandlerInterface | 6 +++--- TelepathyQt4/Message | 6 +++--- TelepathyQt4/MessageContentPart | 6 +++--- TelepathyQt4/MessageContentPartList | 6 +++--- TelepathyQt4/MethodInvocationContext | 6 +++--- TelepathyQt4/NotFilter | 6 +++--- TelepathyQt4/Object | 6 +++--- TelepathyQt4/OptionalInterfaceFactory | 6 +++--- TelepathyQt4/OrFilter | 6 +++--- TelepathyQt4/OutgoingFileTransferChannel | 6 +++--- TelepathyQt4/OutgoingStreamTubeChannel | 6 +++--- TelepathyQt4/PeerInterface | 6 +++--- TelepathyQt4/PendingAccount | 6 +++--- TelepathyQt4/PendingChannel | 6 +++--- TelepathyQt4/PendingChannelRequest | 6 +++--- TelepathyQt4/PendingComposite | 6 +++--- TelepathyQt4/PendingConnection | 6 +++--- TelepathyQt4/PendingContactAttributes | 6 +++--- TelepathyQt4/PendingContactInfo | 6 +++--- TelepathyQt4/PendingContacts | 6 +++--- TelepathyQt4/PendingFailure | 6 +++--- TelepathyQt4/PendingHandles | 6 +++--- TelepathyQt4/PendingOperation | 6 +++--- TelepathyQt4/PendingReady | 6 +++--- TelepathyQt4/PendingSendMessage | 6 +++--- TelepathyQt4/PendingStreamTubeConnection | 6 +++--- TelepathyQt4/PendingStreamedMediaStreams | 6 +++--- TelepathyQt4/PendingStringList | 6 +++--- TelepathyQt4/PendingSuccess | 6 +++--- TelepathyQt4/PendingVariant | 6 +++--- TelepathyQt4/PendingVariantMap | 6 +++--- TelepathyQt4/PendingVoid | 6 +++--- TelepathyQt4/Presence | 6 +++--- TelepathyQt4/PresenceSpec | 6 +++--- TelepathyQt4/PresenceSpecList | 6 +++--- TelepathyQt4/Profile | 6 +++--- TelepathyQt4/ProfileManager | 6 +++--- TelepathyQt4/Properties | 6 +++--- TelepathyQt4/PropertiesInterface | 6 +++--- TelepathyQt4/PropertiesInterfaceInterface | 6 +++--- TelepathyQt4/ProtocolInfo | 6 +++--- TelepathyQt4/ProtocolParameter | 6 +++--- TelepathyQt4/ReadinessHelper | 6 +++--- TelepathyQt4/ReadyObject | 6 +++--- TelepathyQt4/ReceivedMessage | 6 +++--- TelepathyQt4/RefCounted | 6 +++--- TelepathyQt4/ReferencedHandles | 6 +++--- TelepathyQt4/RequestableChannelClassSpec | 6 +++--- TelepathyQt4/RequestableChannelClassSpecList | 6 +++--- TelepathyQt4/RoomListChannel | 6 +++--- TelepathyQt4/SharedPtr | 6 +++--- TelepathyQt4/SimpleCallObserver | 6 +++--- TelepathyQt4/SimpleObserver | 6 +++--- TelepathyQt4/SimpleTextObserver | 6 +++--- TelepathyQt4/StatefulDBusProxy | 6 +++--- TelepathyQt4/StatelessDBusProxy | 6 +++--- TelepathyQt4/StreamTubeChannel | 6 +++--- TelepathyQt4/StreamTubeClient | 6 +++--- TelepathyQt4/StreamTubeServer | 6 +++--- TelepathyQt4/StreamedMediaChannel | 6 +++--- TelepathyQt4/StreamedMediaStream | 6 +++--- TelepathyQt4/TextChannel | 6 +++--- TelepathyQt4/TubeChannel | 8 ++++---- TelepathyQt4/Types | 6 +++--- TelepathyQt4/Utils | 6 +++--- TelepathyQt4/abstract-client.h | 4 ++-- TelepathyQt4/abstract-interface.h | 4 ++-- TelepathyQt4/account-capability-filter.h | 4 ++-- TelepathyQt4/account-factory.h | 4 ++-- TelepathyQt4/account-filter.h | 4 ++-- TelepathyQt4/account-manager.h | 4 ++-- TelepathyQt4/account-property-filter.h | 4 ++-- TelepathyQt4/account-set.h | 4 ++-- TelepathyQt4/account.h | 4 ++-- TelepathyQt4/and-filter.h | 4 ++-- TelepathyQt4/avatar.h | 4 ++-- TelepathyQt4/capabilities-base.h | 4 ++-- TelepathyQt4/channel-class-features.h | 4 ++-- TelepathyQt4/channel-class-spec.h | 4 ++-- TelepathyQt4/channel-dispatch-operation.h | 4 ++-- TelepathyQt4/channel-dispatcher.h | 4 ++-- TelepathyQt4/channel-factory.h | 4 ++-- TelepathyQt4/channel-request.h | 4 ++-- TelepathyQt4/channel.h | 4 ++-- TelepathyQt4/client-registrar.h | 4 ++-- TelepathyQt4/client.h | 4 ++-- TelepathyQt4/connection-capabilities.h | 4 ++-- TelepathyQt4/connection-factory.h | 4 ++-- TelepathyQt4/connection-lowlevel.h | 4 ++-- TelepathyQt4/connection-manager-lowlevel.h | 4 ++-- TelepathyQt4/connection-manager.h | 4 ++-- TelepathyQt4/connection.h | 4 ++-- TelepathyQt4/constants.h | 4 ++-- TelepathyQt4/contact-capabilities.h | 4 ++-- TelepathyQt4/contact-factory.h | 4 ++-- TelepathyQt4/contact-manager.h | 4 ++-- TelepathyQt4/contact-messenger.h | 4 ++-- TelepathyQt4/contact-search-channel.h | 4 ++-- TelepathyQt4/contact.h | 4 ++-- TelepathyQt4/dbus-proxy-factory.h | 4 ++-- TelepathyQt4/dbus-proxy.h | 4 ++-- TelepathyQt4/dbus.h | 4 ++-- TelepathyQt4/debug.cpp | 2 +- TelepathyQt4/debug.h | 4 ++-- TelepathyQt4/feature.h | 4 ++-- TelepathyQt4/file-transfer-channel-creation-properties.h | 4 ++-- TelepathyQt4/file-transfer-channel.h | 4 ++-- TelepathyQt4/filter.h | 4 ++-- TelepathyQt4/fixed-feature-factory.h | 4 ++-- TelepathyQt4/generic-capability-filter.h | 4 ++-- TelepathyQt4/generic-property-filter.h | 4 ++-- TelepathyQt4/global.h | 10 +++++----- TelepathyQt4/handled-channel-notifier.h | 4 ++-- TelepathyQt4/incoming-file-transfer-channel.h | 4 ++-- TelepathyQt4/incoming-stream-tube-channel.h | 4 ++-- TelepathyQt4/key-file.h | 4 ++-- TelepathyQt4/location-info.h | 4 ++-- TelepathyQt4/manager-file.h | 4 ++-- TelepathyQt4/media-session-handler.h | 4 ++-- TelepathyQt4/media-stream-handler.h | 4 ++-- TelepathyQt4/message-content-part.h | 4 ++-- TelepathyQt4/message.h | 4 ++-- TelepathyQt4/method-invocation-context.h | 4 ++-- TelepathyQt4/not-filter.h | 4 ++-- TelepathyQt4/object.h | 4 ++-- TelepathyQt4/optional-interface-factory.h | 4 ++-- TelepathyQt4/or-filter.h | 4 ++-- TelepathyQt4/outgoing-file-transfer-channel.h | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.h | 4 ++-- TelepathyQt4/pending-account.h | 4 ++-- TelepathyQt4/pending-channel-request.h | 4 ++-- TelepathyQt4/pending-channel.h | 4 ++-- TelepathyQt4/pending-connection.h | 4 ++-- TelepathyQt4/pending-contact-attributes.h | 4 ++-- TelepathyQt4/pending-contact-info.h | 4 ++-- TelepathyQt4/pending-contacts.h | 4 ++-- TelepathyQt4/pending-handles.h | 4 ++-- TelepathyQt4/pending-operation.cpp | 4 ++-- TelepathyQt4/pending-operation.h | 4 ++-- TelepathyQt4/pending-ready.h | 4 ++-- TelepathyQt4/pending-send-message.h | 4 ++-- TelepathyQt4/pending-stream-tube-connection.h | 4 ++-- TelepathyQt4/pending-string-list.h | 4 ++-- TelepathyQt4/pending-variant-map.h | 4 ++-- TelepathyQt4/pending-variant.h | 4 ++-- TelepathyQt4/presence.h | 4 ++-- TelepathyQt4/profile-manager.h | 4 ++-- TelepathyQt4/profile.h | 4 ++-- TelepathyQt4/properties.h | 4 ++-- TelepathyQt4/protocol-info.h | 4 ++-- TelepathyQt4/protocol-parameter.h | 4 ++-- TelepathyQt4/readiness-helper.h | 4 ++-- TelepathyQt4/ready-object.h | 4 ++-- TelepathyQt4/referenced-handles.h | 4 ++-- TelepathyQt4/requestable-channel-class-spec.h | 4 ++-- TelepathyQt4/room-list-channel.h | 4 ++-- TelepathyQt4/shared-ptr.h | 4 ++-- TelepathyQt4/simple-pending-operations.h | 4 ++-- TelepathyQt4/stream-tube-channel.h | 4 ++-- TelepathyQt4/streamed-media-channel.h | 4 ++-- TelepathyQt4/test-backdoors.h | 2 +- TelepathyQt4/text-channel.h | 4 ++-- TelepathyQt4/tls-certificate.cpp | 2 +- TelepathyQt4/tls-certificate.h | 4 ++-- TelepathyQt4/tube-channel.h | 4 ++-- TelepathyQt4/types.h | 4 ++-- TelepathyQt4/utils.h | 4 ++-- cmake/modules/TpQt4Macros.cmake | 2 +- 301 files changed, 797 insertions(+), 797 deletions(-) commit 6f0c193354cbfb572ad39577ef52c3ae2b73c48c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 10 18:15:16 2011 -0200 Make master lead to 0.9.0 CMakeLists.txt | 4 ++-- NEWS | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) commit 236dbb8eca9972e343443b8a42df25c539813ee6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 10 17:47:06 2011 -0200 Prepare release 0.8.0 CMakeLists.txt | 6 +++--- NEWS | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) commit 461803e4ba8792c37aedb933fdd0c342efb7d0ff Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 10 17:26:36 2011 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit d0c404fa14a52e1cfa9297e3efb3b513c39c3916 Merge: 0f328cb dc86734 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 10 17:22:56 2011 -0200 Merge branch 'conn-noroster' Reviewed-by: Olli Salli (oggis) commit dc867344a983146cc66f4f2667c87bc6a76e4208 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 9 11:58:25 2011 -0200 ContactManager::Roster: Properly "fail" introspecting Connection::FeatureRoster if roster is not supported. TelepathyQt4/contact-manager-roster.cpp | 4 ++- tests/dbus/conn-introspect-cornercases.cpp | 49 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) commit 70609dd3498be1081910e0cd1441473453e0060e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 9 11:57:09 2011 -0200 contacts-noroster-conn: Add test connection to be used to check whether Connection::FeatureRoster is properly introspected when there is no roster. tests/lib/glib/CMakeLists.txt | 2 ++ tests/lib/glib/contacts-noroster-conn.c | 50 +++++++++++++++++++++++++++++++ tests/lib/glib/contacts-noroster-conn.h | 52 +++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) commit 0f328cb69120f2b25360e58928f53b7106a7c4f4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 11 12:04:26 2011 -0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6d0e07d52ed345450850b1d611a784b6914899b4 Merge: f0ce196 aaaf9c9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 11 12:03:23 2011 -0300 Merge branch 'contact-info-refresh' Reviewed-by: Olli Salli (oggis) commit aaaf9c9b660a51742e175dabecdb3409620706f4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 11 11:58:42 2011 -0300 contacts-avatar test: Use common nomenclature for member variables. tests/dbus/contacts-avatar.cpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) commit 3fbffe5446333692c4b55cff0536837107b76c03 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 11 11:39:15 2011 -0300 contacts-avatar test: Test ContactManager::requestContactAvatars with no contact. tests/dbus/contacts-avatar.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 8d7d4cd5d74c267223b07c7ee103d426a3a6b1a2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 11 11:34:24 2011 -0300 ContactManager: Update doc for deprecated requestContactAvatar. TelepathyQt4/contact-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4d922bec2cfbebd9097ba0d18499087fa5864560 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 11 11:33:52 2011 -0300 ContactManager: Early return in requestContactAvatars if no contact was given. TelepathyQt4/contact-manager.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit f0ce196fe83b10051d1b8923c9c68bb0c7ba39a8 Author: Olli Salli Date: Mon Oct 10 19:32:25 2011 +0300 Update NEWS NEWS | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit d084aaffd3fc35036274204e9717f9d59e6a0135 Merge: fd1583b 3981453 Author: Olli Salli Date: Mon Oct 10 19:29:40 2011 +0300 Merge branch 'stube-handlers' Reviewed-by: Andre Magalhaes (andrunko) commit 3981453f4308233cef5a2c1fb98a348a808cbc09 Author: Olli Salli Date: Mon Oct 10 19:28:00 2011 +0300 Link to ST[SC]::isRegistered() from the methods after which it should be checked TelepathyQt4/stream-tube-client.cpp | 8 ++++++++ TelepathyQt4/stream-tube-server.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) commit e90712845cda1cd92a099a6475e97d68c9e1f0b2 Author: Olli Salli Date: Mon Oct 10 19:23:35 2011 +0300 Explain what ST[SC]::monitorsConnections() affects better TelepathyQt4/stream-tube-client.cpp | 6 +++++- TelepathyQt4/stream-tube-server.cpp | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) commit ad8972e9c0da42abb3e447d22bca928c03a09d27 Author: Olli Salli Date: Mon Oct 10 18:35:57 2011 +0300 Indicate corrent prefix for Client service names in ST[CS]::clientName() dox TelepathyQt4/stream-tube-client.cpp | 2 +- TelepathyQt4/stream-tube-server.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 59836c82ec4932f61a70667d9832d17fc06f3bc3 Author: Olli Salli Date: Mon Oct 10 17:51:08 2011 +0300 STC dox: s/an tube-by-tube basis/a tube.../ TelepathyQt4/stream-tube-client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8bf8779f269711a7f48f506a6d6356f76df8f32d Author: Olli Salli Date: Mon Oct 10 17:50:26 2011 +0300 Make STC::TcpSrcAddrGen talk about itself, not a STC::ParamsGen which doesn't exist TelepathyQt4/stream-tube-client.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 58cbb24fb90f2ce1a671a307cae325ae842bc0b2 Author: Olli Salli Date: Mon Oct 10 17:19:09 2011 +0300 Make STS::Tube ctor dox wording a bit less convoluted TelepathyQt4/stream-tube-server.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f783da05dcbbe82e2be628f360f22ed676a4105a Author: Olli Salli Date: Sun Oct 9 20:08:06 2011 +0300 Doxyment StreamTubeClient TelepathyQt4/stream-tube-client.cpp | 364 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-client.h | 29 +-- 2 files changed, 372 insertions(+), 21 deletions(-) commit 7f238899663b7ec2f758f8d6ccebba330829621c Author: Olli Salli Date: Sun Oct 9 19:48:36 2011 +0300 STS dox: Fix the (sensible) doxygen warnings TelepathyQt4/stream-tube-server.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) commit a7de8597bd0df33b4eb34205a066f1befe955cf6 Author: Olli Salli Date: Sun Oct 9 17:50:53 2011 +0300 Doxyment StreamTubeServer TelepathyQt4/stream-tube-server.cpp | 320 +++++++++++++++++++++++++++++++++++- TelepathyQt4/stream-tube-server.h | 38 +---- 2 files changed, 319 insertions(+), 39 deletions(-) commit f76f89c190f1c8291e17c0aca2a3f4eb094bde97 Author: Olli Salli Date: Sun Oct 9 15:04:08 2011 +0300 Make StreamTubeServer report TCP conns through CMs with no Port AC support too, with a null src addr TelepathyQt4/stream-tube-server.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) commit 22fb5054e15a2f40fc1996ca72be6bfe7a90d8a0 Author: Olli Salli Date: Sun Oct 9 12:54:07 2011 +0300 Improve STC::TcpSrcAddrGen dox with a transcription of the original header comments TelepathyQt4/stream-tube-client.cpp | 5 ++++- TelepathyQt4/stream-tube-client.h | 9 +-------- 2 files changed, 5 insertions(+), 9 deletions(-) commit 894f59b1e6217a9be4e085d38cd58db01460d711 Author: Olli Salli Date: Sat Oct 8 21:10:14 2011 +0300 Doxyment STC::TcpSrcAddrGen TelepathyQt4/stream-tube-client.cpp | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) commit 27c9acd9bd959868a34e65e0e974e09cf61bf289 Author: Olli Salli Date: Sat Oct 8 15:59:33 2011 +0300 Doxyment STS::ParamsGen TelepathyQt4/stream-tube-server.cpp | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) commit 00d27688afd4ab13ea7b8c15eea80096e0f73294 Author: Olli Salli Date: Sat Oct 8 15:38:51 2011 +0300 Doxyment ST[SC] pair wrapper types TelepathyQt4/stream-tube-client.cpp | 51 ++++++++++++++++++ TelepathyQt4/stream-tube-server.cpp | 103 ++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) commit 1f6daaf29e288fe85ce816cdaa275eb9557906e3 Author: Olli Salli Date: Tue Sep 27 22:08:11 2011 +0300 Call the source parameter other instead of a in ST[CS] pair wrapper copy ctors and operator=s TelepathyQt4/stream-tube-client.cpp | 15 ++++++++------- TelepathyQt4/stream-tube-client.h | 4 ++-- TelepathyQt4/stream-tube-server.cpp | 29 +++++++++++++++-------------- TelepathyQt4/stream-tube-server.h | 8 ++++---- 4 files changed, 29 insertions(+), 27 deletions(-) commit 05241c765ba15fc1ab095b10377a559204bc274f Author: Olli Salli Date: Tue Sep 27 21:44:29 2011 +0300 Even more similarly, add a STC::Tube, using it both for connections() and tubes() TelepathyQt4/stream-tube-client.cpp | 60 ++++++++++++++++++++++++++++++------- TelepathyQt4/stream-tube-client.h | 32 ++++++++++++++++++-- tests/dbus/stream-tube-handlers.cpp | 27 ++++++++--------- 3 files changed, 93 insertions(+), 26 deletions(-) commit af726e04327a2b275c46fed6bca5b5fbf282361c Author: Olli Salli Date: Tue Sep 27 17:48:51 2011 +0300 Similarly, simplify STS::tubes() by adding STS::Tube TelepathyQt4/stream-tube-server.cpp | 63 ++++++++++++++++++++++++++++++------- TelepathyQt4/stream-tube-server.h | 30 +++++++++++++++++- tests/dbus/stream-tube-handlers.cpp | 6 ++-- 3 files changed, 84 insertions(+), 15 deletions(-) commit 9c1db8818b8f78c818d71030fc921e6dd6371845 Author: Olli Salli Date: Tue Sep 27 17:33:27 2011 +0300 Make StreamTubeServer::tcpConnections() usage more readable by adding a helper value type TelepathyQt4/stream-tube-server.cpp | 50 ++++++++++++++++++++++++++++++++++--- TelepathyQt4/stream-tube-server.h | 35 +++++++++++++++++++++++++- tests/dbus/stream-tube-handlers.cpp | 6 ++--- 3 files changed, 83 insertions(+), 8 deletions(-) commit b67328c9a5c39cbbf2015213cb74516d408fa3f2 Author: Olli Salli Date: Sun Sep 25 20:16:59 2011 +0300 StreamTube examples: Make all slot arguments have names in declarations examples/stream-tubes/tube-initiator.h | 9 +++++---- examples/stream-tubes/tube-receiver.h | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) commit ae222e367f520306c63f7c6fbbcdf533a11307f2 Author: Olli Salli Date: Sun Sep 25 20:13:47 2011 +0300 Fix too much indent in a connect call in TubeInitiator::onContactsRetrieved examples/stream-tubes/tube-initiator.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 84fece1a78e3cacb6b186bcfee082cf711b771e4 Author: Olli Salli Date: Sun Sep 25 20:12:46 2011 +0300 StreamTube examples: Drop verbose debug While it was useful when developing the examples, it's overtly verbose for somebody just experimenting with them. examples/stream-tubes/tube-initiator.cpp | 5 ++--- examples/stream-tubes/tube-receiver.cpp | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) commit b81c93f2d3be837e8a55927fdf7a63b85ef09702 Author: Olli Salli Date: Sun Sep 25 20:03:38 2011 +0300 STC: Skip invalid tubes in connections() to avoid warnings, like STS, and document the STS check TelepathyQt4/stream-tube-client.cpp | 7 +++++++ TelepathyQt4/stream-tube-server.cpp | 3 +++ 2 files changed, 10 insertions(+) commit 86a414f0ad7d59988411631ae5ee3233c8c94d59 Author: Olli Salli Date: Sun Sep 25 19:43:22 2011 +0300 Unexport ST[CS] ctors as they're private TelepathyQt4/stream-tube-client.h | 2 +- TelepathyQt4/stream-tube-server.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit ca9efb7c55f5d96deefb630350d227f4d178f610 Author: Olli Salli Date: Sun Sep 25 19:42:52 2011 +0300 Line-wrap ST[CS] TubeWrapper ctor decls TelepathyQt4/stream-tube-client-internal.h | 6 ++++-- TelepathyQt4/stream-tube-server-internal.h | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) commit ce0cde71c0b6fcac3c1098300426d7f722f7715d Author: Olli Salli Date: Sun Sep 25 19:10:42 2011 +0300 SimpleStreamTubeHandler: Weed out duplicate services when building filter TelepathyQt4/simple-stream-tube-handler.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 49b0a36a66df222d9d750afcc92fa26cfc8d0fb8 Author: Olli Salli Date: Thu Sep 22 20:27:54 2011 +0300 TubeInitiator example: Document why we can assert that the conns are connected examples/stream-tubes/tube-initiator.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 60b6c9f7d8dfb6457beb71992d12c3b19e6922d9 Author: Olli Salli Date: Thu Sep 22 20:26:20 2011 +0300 Fix TubeReceiver example connect to accept signal to follow the latest arg order examples/stream-tubes/tube-receiver.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 3b9bed03aa098b47e18133284686e6183a50adb7 Author: Olli Salli Date: Thu Sep 22 20:24:14 2011 +0300 TubeReceiver example: remove useless account param examples/stream-tubes/tube-receiver.cpp | 9 ++------- examples/stream-tubes/tube-receiver.h | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) commit 802fb1f1a510ec8c9cf5910937d8b8c0f5d9b933 Author: Olli Salli Date: Fri Sep 16 21:33:46 2011 +0300 Test bypassApproval param to StreamTubeClient tests/dbus/stream-tube-handlers.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) commit c70a55ac5b020c94224c5509984d196f9162aceb Author: Olli Salli Date: Fri Sep 16 21:27:00 2011 +0300 Update copyright years for stube example examples/stream-tubes/tube-initiator.cpp | 3 ++- examples/stream-tubes/tube-initiator.h | 4 ++-- examples/stream-tubes/tube-receiver.cpp | 4 ++-- examples/stream-tubes/tube-receiver.h | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) commit 69f9b67fc1896d3a85cc5b9accd3b9fd170f9a9b Author: Olli Salli Date: Fri Sep 16 21:26:50 2011 +0300 Ditto for STS::ParamsGen TelepathyQt4/stream-tube-server.cpp | 12 ++++++------ TelepathyQt4/stream-tube-server.h | 6 +++--- tests/dbus/stream-tube-handlers.cpp | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) commit 7b9190cf987cba11012b0c7511598f24e9672886 Author: Olli Salli Date: Fri Sep 16 21:21:04 2011 +0300 Admit that STC::TcpSrcAddrGens need to modify their state for generating TelepathyQt4/stream-tube-client.cpp | 6 +++--- TelepathyQt4/stream-tube-client.h | 6 +++--- tests/dbus/stream-tube-handlers.cpp | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) commit 95ec0179c45f4d6b53a265e34dc24afc00d8fdaa Author: Olli Salli Date: Fri Sep 16 21:15:08 2011 +0300 Test StreamTubeClient connection monitoring STC line coverage 91.0% tests/dbus/stream-tube-handlers.cpp | 228 ++++++++++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) commit 16c23ea7d443aa323273f5c8cc1cde4c1d68d69a Author: Olli Salli Date: Tue Sep 13 17:18:59 2011 +0300 Test StreamTubeClient basic Unix operation Line coverage 80.9%. Testing connection monitoring should make that around 90%. tests/dbus/stream-tube-handlers.cpp | 200 ++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) commit 52d1e410e28afc208041f7b0100c3dfdd105be6e Author: Olli Salli Date: Tue Sep 13 17:12:01 2011 +0300 Similarly to TCP, fall back to Localhost AC in STC if Creds is not supported for Unix TelepathyQt4/stream-tube-client.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 96ca370632a4cd7afeb54dd9e0eda69034465876 Author: Olli Salli Date: Tue Sep 13 16:34:37 2011 +0300 Indent *StreamTube* ctor initializer lists correctly TelepathyQt4/simple-stream-tube-handler.cpp | 2 +- TelepathyQt4/stream-tube-client.cpp | 2 +- TelepathyQt4/stream-tube-server.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 5176fedb3a2e84c815d85f80ef715baeea81031d Author: Olli Salli Date: Tue Sep 13 16:22:25 2011 +0300 Indent FixedParametersGenerator body correctly (not at all) TelepathyQt4/stream-tube-server.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit 27b59b00214d6008e8e88a0cd830e9a7c84c4381 Author: Olli Salli Date: Tue Sep 13 15:07:45 2011 +0300 Rename STC::generator() to more explicit tcpGenerator() TelepathyQt4/stream-tube-client.cpp | 4 ++-- TelepathyQt4/stream-tube-client.h | 2 +- tests/dbus/stream-tube-handlers.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit 4e3ff5c0b3c11951eccbafd22bb8aaaa7c03e454 Author: Olli Salli Date: Tue Sep 13 14:55:08 2011 +0300 Remove trailing WS from an empty line in stream-tube-client.cpp TelepathyQt4/stream-tube-client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 389a5292e5d467d03ed2863437eb469ff38a8921 Author: Olli Salli Date: Tue Sep 13 14:54:03 2011 +0300 Add rationale to the "being registered" asserts in ST[SC]::onInvokedForTube TelepathyQt4/stream-tube-client.cpp | 2 +- TelepathyQt4/stream-tube-server.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 03d5b7ee4cc86f6d1005f2f155c94c1b5ca79ae8 Author: Olli Salli Date: Tue Sep 13 14:45:27 2011 +0300 Make ST[SC] the QObject parent of their tube wrappers so we don't need to manually delete them TelepathyQt4/stream-tube-client-internal.h | 4 ++-- TelepathyQt4/stream-tube-client.cpp | 18 ++++++++---------- TelepathyQt4/stream-tube-server-internal.h | 2 +- TelepathyQt4/stream-tube-server.cpp | 10 +++------- 4 files changed, 14 insertions(+), 20 deletions(-) commit 318d8b91e32031c5e1964fa6db522611da11918d Author: Olli Salli Date: Tue Sep 13 14:43:10 2011 +0300 Add header guards to simple-stream-tube-handler.h TelepathyQt4/simple-stream-tube-handler.h | 5 +++++ 1 file changed, 5 insertions(+) commit bf6b16f3b95d380ba8d0501bf3eba9c2164e128b Author: Olli Salli Date: Tue Sep 13 14:23:15 2011 +0300 SSTH: Add a TODO to use Channel::channelType() in handleChannels whenever that becomes possible TelepathyQt4/simple-stream-tube-handler.cpp | 2 ++ 1 file changed, 2 insertions(+) commit a8d0ca8d5bfcc247b3e1545c03c0ee27dafcc4ae Author: Olli Salli Date: Tue Sep 13 14:13:47 2011 +0300 Make it possible for STS to have an empty filter, and a checkable error for STC to have an empty one TelepathyQt4/simple-stream-tube-handler.cpp | 2 -- TelepathyQt4/stream-tube-client.cpp | 5 +++++ tests/dbus/stream-tube-handlers.cpp | 24 +++++++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) commit e57c17ea4eb8b2820436492977ea72ed160e6b3e Author: Olli Salli Date: Tue Sep 13 13:18:06 2011 +0300 STS/STC internals: Use const refs for foreach var wherever we can for non-primitive types TelepathyQt4/simple-stream-tube-handler.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 45d13d326f48edba4026d05c748a91c23b60cdfe Author: Olli Salli Date: Tue Sep 13 13:17:45 2011 +0300 PendingOperation: Remove interim StreamTubeServer friend-ing hack TelepathyQt4/pending-operation.h | 1 - 1 file changed, 1 deletion(-) commit 0cf277918e9495dfcdd3337e889de69dd46d3641 Author: Olli Salli Date: Mon Sep 12 21:20:31 2011 +0300 Test StreamTubeClient common and TCP side, except for connection monitoring Line coverage 72.3%. Next up Unix basics, then conn monitoring. tests/dbus/stream-tube-handlers.cpp | 390 ++++++++++++++++++++++++++++++++++-- 1 file changed, 369 insertions(+), 21 deletions(-) commit 04049bb94975a7632eb8b4bd803bf936feef03c7 Author: Olli Salli Date: Mon Sep 12 21:08:30 2011 +0300 STC: Don't attempt to use Port access control if it's not supported Note that it's still possible for a client to reject the tube if the fallback path is hit, if they absolutely require Port. This can be done simply by closing the tube. TelepathyQt4/stream-tube-client.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) commit 425001bf0e0080127480dc061001333bc79865da Author: Olli Salli Date: Mon Sep 12 20:48:15 2011 +0300 Make the dtor of STC::TcpSrcAddrGen virtual TelepathyQt4/stream-tube-client.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9588d4b785c3af44c8b7d80871ac373c9886544d Author: Olli Salli Date: Mon Sep 12 20:47:55 2011 +0300 STC: Reorder most important args of the accepted* signals first TelepathyQt4/stream-tube-client.cpp | 8 ++++---- TelepathyQt4/stream-tube-client.h | 12 ++++++------ examples/stream-tubes/tube-receiver.cpp | 5 ++--- examples/stream-tubes/tube-receiver.h | 2 +- 4 files changed, 13 insertions(+), 14 deletions(-) commit c89159d86e610e5d6ff6aa18a622369f29534204 Author: Olli Salli Date: Mon Sep 12 20:02:41 2011 +0300 STC: Remove stale TODO TelepathyQt4/stream-tube-client.cpp | 5 ----- 1 file changed, 5 deletions(-) commit dbde3abbf69f272896f61a92231a0798abec864a Author: Olli Salli Date: Sat Sep 10 15:39:44 2011 +0300 TestStreamTubeHandlers: Remove stale TODO comment tests/dbus/stream-tube-handlers.cpp | 1 - 1 file changed, 1 deletion(-) commit fc62d554dbd36e2a6212ce456ecf6f2d38a43952 Author: Olli Salli Date: Sat Sep 10 14:26:17 2011 +0300 Call AbstractClient virtual base class constructor in our concrete Client impls As AbstractClient is inherited virtually, nothing calls the ctor automatically. I noticed the pointer to the AC base class is as reported by gdb for all our concrete Client implementations. This hasn't caused any problems so far however, because the base class is actually empty, so the pointer is not used for anything. It will be used in the near future however when we move the isRegistered stuff from Andre's cd-claim branch to the AbstracClient base class in an ABI break. TelepathyQt4/request-temporary-handler-internal.cpp | 3 ++- TelepathyQt4/simple-observer.cpp | 3 ++- TelepathyQt4/simple-stream-tube-handler.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) commit de68c54d117b19c3c82543c3fba0419ff8cfa169 Author: Olli Salli Date: Sat Sep 10 14:25:09 2011 +0300 Actually delete private structure, and therefore registrar, handler etc in ST[SC] Whoops... As now a couple more destructors are run, STS test cov 83.3%, STC 28.1%, SSTH 97.0%! TelepathyQt4/stream-tube-client.cpp | 2 ++ TelepathyQt4/stream-tube-server.cpp | 2 ++ 2 files changed, 4 insertions(+) commit 20507230e6c25031632b810934dffc4539a3c0de Author: Olli Salli Date: Thu Sep 1 19:09:19 2011 +0300 STS & STC: Remove some dead branches redundant with SSTH checks STS line coverage 81.8%, where it stays STC line coverage 27.3%, which is OK given that is has no actual tests yet :P TelepathyQt4/stream-tube-client.cpp | 7 +++---- TelepathyQt4/stream-tube-server.cpp | 19 ++++++------------- 2 files changed, 9 insertions(+), 17 deletions(-) commit ced029db9bee39e197811b8bfe1a8de61c0e0b38 Author: Olli Salli Date: Thu Sep 1 19:08:45 2011 +0300 STS & STC: {} around all if then blocks TelepathyQt4/stream-tube-client.cpp | 3 ++- TelepathyQt4/stream-tube-server.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) commit 9d021e5a2ebee8d22a9be5b56b7c32d848d7cc19 Author: Olli Salli Date: Thu Sep 1 18:53:34 2011 +0300 StreamTubeServer: Ignore invalid and non-Open tubes in tcpConnections() This prevents a few useless warnings in corner cases where a tube is still being opened, or has been invalidated but we haven't processed that event yet. TelepathyQt4/stream-tube-server.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 0c041ece01c357fa4c9cf006943b385c5c10708e Author: Olli Salli Date: Thu Sep 1 20:22:10 2011 +0300 TestStreamTubeHandlers: Test that implied connection closes are emitted for a closed tube tests/dbus/stream-tube-handlers.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) commit 5b44b803e0bc107bbdf01864c94b12529342dfdb Author: Olli Salli Date: Thu Sep 1 00:03:44 2011 +0300 Test StreamTubeServer connection monitoring more thoroughly Doesn't increase test coverage though. I still want the behavior of (Outgoing)StreamTubeChannel to change when there are ongoing connections and the tube channel is closed. tests/dbus/stream-tube-handlers.cpp | 48 ++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) commit 4e85990c8be624a54c1fd6ef2ff5381847a19bb8 Author: Olli Salli Date: Wed Aug 31 14:38:16 2011 +0300 Test STS connection monitoring in a rudimentary way STS line coverage now 80.2%, the rest is error branches, but I still want to test a more complex case of connection monitoring (simultaneous connections) even though that won't increase the apparent coverage. tests/dbus/stream-tube-handlers.cpp | 194 ++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) commit 27c231010110f360b50369bba852cf147bc7d5fd Author: Olli Salli Date: Wed Aug 31 14:37:42 2011 +0300 Early return properly in TestStreamTubeHandlers slot error cases tests/dbus/stream-tube-handlers.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 9236ed49c53b336990108df551c5af29ddf55a3a Author: Olli Salli Date: Wed Aug 31 12:24:52 2011 +0300 Test failed StreamTubeServer Offer STS line coverage 65.6% tests/dbus/stream-tube-handlers.cpp | 85 ++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 16 deletions(-) commit 5af43be72c28f6d795fbcb52f853b67e0d0dba60 Author: Olli Salli Date: Tue Aug 30 21:08:02 2011 +0300 Further test that STS successfully offers a tube and correctly signals when it's closed STS line coverage 61.8% Next up testing a failed offer and finally connection tracking, which should bring this to >= ~90%. tests/dbus/stream-tube-handlers.cpp | 72 +++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) commit 26587225dca618aeae4fd43ceba677ab6904a10f Author: Olli Salli Date: Tue Aug 30 21:06:24 2011 +0300 Test StreamTubeServer setting recovery accessors tests/dbus/stream-tube-handlers.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit bdc804264a15642ec20ff4551c9267e7965c66b6 Author: Olli Salli Date: Tue Aug 30 19:27:26 2011 +0300 Test that SimpleStreamTubeHandler doesn't get wedged from improper invocations/usage SSTH line coverage 90.0% tests/dbus/stream-tube-handlers.cpp | 145 +++++++++++++++++++++++++++++++----- 1 file changed, 127 insertions(+), 18 deletions(-) commit 55ac5aaa69202e3fc936185c44be008c162dc227 Author: Olli Salli Date: Tue Aug 30 19:07:52 2011 +0300 SimpleStreamTubeHandler: Finish completely irrational invocations with TP_QT4_ERROR_CONFUSED Previously, they'd just linger around in the invocation queue, even preventing further invocations from being signaled. TelepathyQt4/simple-stream-tube-handler.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) commit 14236422e94aa5f4bf7af31031c3b924b8aa335e Author: Olli Salli Date: Tue Aug 30 17:40:34 2011 +0300 SimpleStreamTubeHandler: Remove dead weight accountForTube() and tubes() The equivalent is now done internally in the public ST[SC] classes SSTH line coverage 74.5% TelepathyQt4/simple-stream-tube-handler.cpp | 16 ---------------- TelepathyQt4/simple-stream-tube-handler.h | 3 --- 2 files changed, 19 deletions(-) commit 27b6b3a0ac152e7ed6ee7fb781f0d3ca6d625fd5 Author: Olli Salli Date: Fri Aug 26 15:37:35 2011 +0300 Test basic StreamTubeServer export/handle operation SSTHandler coverage 70%, STS 43% tests/dbus/stream-tube-handlers.cpp | 396 +++++++++++++++++++++++++++++++++--- 1 file changed, 367 insertions(+), 29 deletions(-) commit 8713b848d4bc5a0894120cd26ec91016d384cda7 Author: Olli Salli Date: Thu Aug 25 15:29:39 2011 +0300 Test ST[CS] registration Coverage 15-25% tests/dbus/stream-tube-handlers.cpp | 118 +++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) commit 830d07b06ebff8785a4500b4f03e55b7aee2da2a Author: Olli Salli Date: Thu Aug 25 15:04:01 2011 +0300 StreamTubeClient: Add isRegistered() for verifying registration was successful Also fixes trying to unregister non-registered handlers on destruction TelepathyQt4/stream-tube-client.cpp | 7 ++++++- TelepathyQt4/stream-tube-client.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) commit 3adb66601109e83c88a678b631f6744efb2e1514 Author: Olli Salli Date: Wed Aug 24 18:46:14 2011 +0300 Add skeleton test for the simple stream tube handlers tests/dbus/CMakeLists.txt | 1 + tests/dbus/stream-tube-handlers.cpp | 183 ++++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+) commit e0b1e09bbff7601155a81276862dba1541747057 Author: Olli Salli Date: Wed Aug 24 18:24:21 2011 +0300 StreamTubeServer::TubeWrapper: Remove (in the end) useless mParams storing TelepathyQt4/stream-tube-server-internal.h | 1 - TelepathyQt4/stream-tube-server.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) commit 4448da716fcfcde3aef3079ae48b54bc3ca2a0c6 Author: Olli Salli Date: Wed Aug 24 18:24:07 2011 +0300 StreamTubeClient::TubeWrapper: Make member naming consistent TelepathyQt4/stream-tube-client-internal.h | 4 ++-- TelepathyQt4/stream-tube-client.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) commit 150d576d1531426f2d1deabcc881ca5a0833ba4c Author: Olli Salli Date: Wed Aug 24 18:10:33 2011 +0300 StreamTube{Client,Server}: Support being a Handler for Room stream tubes TelepathyQt4/simple-stream-tube-handler.cpp | 25 +++++++++++++------ TelepathyQt4/simple-stream-tube-handler.h | 6 +++-- TelepathyQt4/stream-tube-client.cpp | 37 ++++++++++++++++++----------- TelepathyQt4/stream-tube-client.h | 15 ++++++++---- TelepathyQt4/stream-tube-server.cpp | 37 ++++++++++++++++++----------- TelepathyQt4/stream-tube-server.h | 15 ++++++++---- examples/stream-tubes/tube-initiator.cpp | 3 ++- 7 files changed, 90 insertions(+), 48 deletions(-) commit 78bf0a712728e5ef96806c2602accefda9a6ef69 Author: Olli Salli Date: Mon Aug 22 22:04:14 2011 +0300 StreamTubeClient: Implement connection monitoring TelepathyQt4/stream-tube-client-internal.h | 5 +++ TelepathyQt4/stream-tube-client.cpp | 51 ++++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-client.h | 12 ++++++- 3 files changed, 67 insertions(+), 1 deletion(-) commit 3ce59efbd5d4b960bc34225a4dd6cfa9a176465a Author: Olli Salli Date: Mon Aug 22 21:28:02 2011 +0300 StreamTubeServer: Remove tube requested/closed slots StreamTube Channels getting opened and closed is a lower level concept and not as interesting to the average user of this API as exporting sockets and connection tracking. Also, channels getting dispatched and closed is not a tubes-specific mechanism, but common to all channels. examples/stream-tubes/tube-initiator.cpp | 25 ------------------------- examples/stream-tubes/tube-initiator.h | 4 ---- 2 files changed, 29 deletions(-) commit 1b77f30f2a0693357673cc631dac215927ea6a54 Author: Olli Salli Date: Mon Aug 22 21:25:42 2011 +0300 Tube initiator example: Demonstrate connection monitoring examples/stream-tubes/tube-initiator.cpp | 75 ++++++++++++++++++++++++-------- examples/stream-tubes/tube-initiator.h | 11 ++++- 2 files changed, 65 insertions(+), 21 deletions(-) commit 58840bc9dc2c486c09da681108b130c94dfb59db Author: Olli Salli Date: Mon Aug 22 21:21:18 2011 +0300 StreamTubeServer: Implement connection monitoring TelepathyQt4/stream-tube-server-internal.h | 5 ++- TelepathyQt4/stream-tube-server.cpp | 72 +++++++++++++++++++++++++++++- TelepathyQt4/stream-tube-server.h | 9 ++++ 3 files changed, 84 insertions(+), 2 deletions(-) commit 4b99d563442961bc78e4da2a138072f97f0f1c7c Author: Olli Salli Date: Fri Aug 19 14:51:54 2011 +0300 STS: Implement tubes(), connections() TelepathyQt4/stream-tube-server.cpp | 43 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-server.h | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) commit 5fe720ee275b397b7b2c80ff471b97550956a2fc Author: Olli Salli Date: Fri Aug 19 14:40:00 2011 +0300 STC: Implement tubes(), connections() TelepathyQt4/stream-tube-client.cpp | 31 +++++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-client.h | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) commit 1e49302a5d3c67728deed2a7e91c9958396edcdc Author: Olli Salli Date: Fri Aug 19 14:26:17 2011 +0300 STC: Reorder acceptsAsUnix() impl to correct position TelepathyQt4/stream-tube-client.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit b70ec85b2b677774499427260238ca10e5961484 Author: Olli Salli Date: Thu Aug 18 22:29:03 2011 +0300 STC: Make it possible to set BypassApproval=True Wouldn't be useful for STS, as it exclusively handles requested channels, which don't go through the approver anyway. TelepathyQt4/simple-stream-tube-handler.cpp | 12 +++++++---- TelepathyQt4/simple-stream-tube-handler.h | 9 +++++--- TelepathyQt4/stream-tube-client.cpp | 32 +++++++++++++++++++---------- TelepathyQt4/stream-tube-client.h | 15 +++++++++----- 4 files changed, 45 insertions(+), 23 deletions(-) commit d174ea82415564dce6f19a1b99c5184a9e229614 Author: Olli Salli Date: Thu Aug 18 20:49:15 2011 +0300 StreamTubeServer: Make it possible to specify Offer parameters per-tube TelepathyQt4/stream-tube-server.cpp | 119 ++++++++++++++++++++++++++++++------ TelepathyQt4/stream-tube-server.h | 20 ++++++ 2 files changed, 121 insertions(+), 18 deletions(-) commit e2044b14ac74032c1f3d38906191c175e35b43d2 Author: Olli Salli Date: Thu Aug 18 14:42:22 2011 +0300 StreamTubeServer: Implement using wrappers, similarly to STC Important for the next few additions TelepathyQt4/CMakeLists.txt | 2 + TelepathyQt4/stream-tube-server-internal.h | 52 +++++++++++++ TelepathyQt4/stream-tube-server.cpp | 113 +++++++++++++++++------------ TelepathyQt4/stream-tube-server.h | 8 +- 4 files changed, 125 insertions(+), 50 deletions(-) commit ef35dddd397b05468a9bd29c5b50751109363c7b Author: Olli Salli Date: Thu Aug 18 14:41:38 2011 +0300 StreamTubeClient: Delete wrapper immediately on tube invalidate TelepathyQt4/stream-tube-client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c3d698eb9802e6d1e21125f60de2ee4370eac7a8 Author: Olli Salli Date: Thu Aug 18 14:41:14 2011 +0300 StreamTubeClient: Only close tube on accept failure if not closed already TelepathyQt4/stream-tube-client.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 311b5f1395362a6d67dbc527b8ac63bdb2ac1c94 Author: Olli Salli Date: Fri Aug 12 16:32:16 2011 +0300 tube-receiver example: Port to StreamTubeClient examples/stream-tubes/tube-receiver.cpp | 146 +++----------------------------- examples/stream-tubes/tube-receiver.h | 15 +--- 2 files changed, 15 insertions(+), 146 deletions(-) commit cb990d8e2573f3b3bdc626de8215c1834dd95728 Author: Olli Salli Date: Fri Aug 12 16:31:27 2011 +0300 StreamTubeClient: Implement basic operation TelepathyQt4/CMakeLists.txt | 2 + TelepathyQt4/stream-tube-client-internal.h | 54 ++++++++ TelepathyQt4/stream-tube-client.cpp | 204 ++++++++++++++++++++++++++--- TelepathyQt4/stream-tube-client.h | 16 ++- 4 files changed, 253 insertions(+), 23 deletions(-) commit efa46f32f5f32aea9ed1945a758e8d3b296fe42b Author: Olli Salli Date: Wed Aug 10 17:51:50 2011 +0300 TubeInitiator example: Fire up tube when the remote contact has the capability to receive examples/stream-tubes/tube-initiator.cpp | 121 ++++++------------------------- examples/stream-tubes/tube-initiator.h | 10 +-- 2 files changed, 26 insertions(+), 105 deletions(-) commit 781f9cf6fa0bbcf423cc88911dce70e8861ab594 Author: Olli Salli Date: Mon Aug 8 14:07:39 2011 +0300 StreamTubeServer: only register the Client once a socket has been exported Otherwise there's a race condition where the Client can be invoked before it has anything to do with the tubes. TelepathyQt4/stream-tube-server.cpp | 33 ++++++++++++++++++-------------- TelepathyQt4/stream-tube-server.h | 1 + examples/stream-tubes/tube-initiator.cpp | 1 + 3 files changed, 21 insertions(+), 14 deletions(-) commit 28e8e74feeb5bdd213d389e5655e4aceb6f2acec Author: Olli Salli Date: Tue Jul 26 18:53:01 2011 +0300 StreamTubeServer: Implement tubeRequested, tubeClosed TelepathyQt4/pending-operation.h | 1 + TelepathyQt4/simple-stream-tube-handler.cpp | 7 ++- TelepathyQt4/simple-stream-tube-handler.h | 1 + TelepathyQt4/stream-tube-server.cpp | 77 +++++++++++++++++++++++++++-- TelepathyQt4/stream-tube-server.h | 10 +++- examples/stream-tubes/tube-initiator.cpp | 31 +++++++++++- examples/stream-tubes/tube-initiator.h | 5 ++ 7 files changed, 125 insertions(+), 7 deletions(-) commit c40f9fe9e885d48c8946350900941cf71130b89e Author: Olli Salli Date: Thu May 5 14:17:07 2011 +0300 Draft StreamTubeClient API and implement common bits TelepathyQt4/CMakeLists.txt | 4 + TelepathyQt4/StreamTubeClient | 13 +++ TelepathyQt4/stream-tube-client.cpp | 224 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-client.h | 180 +++++++++++++++++++++++++++++ TelepathyQt4/types.h | 2 + 5 files changed, 423 insertions(+) commit ea72adf73ea8b108634a22c15e184b99995eddb8 Author: Olli Salli Date: Wed May 4 14:18:20 2011 +0300 TubeInitiator example: Fix remote contact presence handling The signal it was trying to connect to was removed in 0.5. examples/stream-tubes/tube-initiator.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit ed7d11d697151091f692019275cdee9f7b6f176f Author: Olli Salli Date: Wed May 4 14:17:01 2011 +0300 TubeInitiator example: Use StreamTubeServer to export the service examples/stream-tubes/tube-initiator.cpp | 104 +++++++++++-------------------- examples/stream-tubes/tube-initiator.h | 6 +- 2 files changed, 37 insertions(+), 73 deletions(-) commit 46bdd6718ee806bf812ed9cde55891ebd5ab4ec9 Author: Olli Salli Date: Wed May 4 14:13:08 2011 +0300 StreamTubeServer: Implement handling by offering connections Still missing connection tracking and tracking the tube lifetime, though. TelepathyQt4/stream-tube-server.cpp | 230 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-server.h | 11 +- 2 files changed, 238 insertions(+), 3 deletions(-) commit 1eec300dc55659d6cee3f7bce54860dd29bf0069 Author: Olli Salli Date: Wed May 4 14:11:43 2011 +0300 SimpleStreamTubeHandler: Be a bit more graceful handling non-matching channels This is needed because Gabble always gives us a bundle with an old-style Tubes channel, which we don't want to trip on. TelepathyQt4/simple-stream-tube-handler.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) commit 1633499e05313ecc539cb3fc55d063bde9d16d10 Author: Olli Salli Date: Tue May 3 23:00:22 2011 +0300 StreamTubeServer: Add registrar() and clientName() accessors TelepathyQt4/stream-tube-server.h | 2 ++ 1 file changed, 2 insertions(+) commit d62dae901997a31ff9f1b9719247efdad6888fbe Author: Olli Salli Date: Tue May 3 21:55:35 2011 +0300 StreamTubeServer: Add namespace to signal args TelepathyQt4/stream-tube-server.h | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) commit 4f8391c8eed8c06c0cab99dc69636442341e2de7 Author: Olli Salli Date: Tue May 3 21:06:42 2011 +0300 Add SimpleStreamTubeHandler implementation helper Internal for now. Could perhaps be generalized to a generic "simple handler"... but it's a slightly risky public class, as the user has to make sure they somehow handle all emitted channels and don't ignore some. TelepathyQt4/CMakeLists.txt | 2 + TelepathyQt4/simple-stream-tube-handler.cpp | 241 ++++++++++++++++++++++++++++ TelepathyQt4/simple-stream-tube-handler.h | 112 +++++++++++++ 3 files changed, 355 insertions(+) commit 5947c8fafdb6d63ecb814c25b363e00edf61a631 Author: Olli Salli Date: Mon May 2 22:12:46 2011 +0300 StreamTubeServer: Make it possible to handle multiple services TelepathyQt4/stream-tube-server.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit d1bdc2cd4802e46fecf1cbe82a50a1c764f212f7 Author: Olli Salli Date: Mon May 2 21:45:38 2011 +0300 StreamTubeServer: Make compile TelepathyQt4/CMakeLists.txt | 4 ++++ TelepathyQt4/StreamTubeServer | 13 +++++++++++++ TelepathyQt4/stream-tube-server.cpp | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) commit 88dbb78644fc51394873e0a18b1f8492bb9002f0 Author: Olli Salli Date: Fri Apr 29 22:04:06 2011 +0300 Make the usage of accounts in the roster example similar to the tubes example Specific improvements: - You specify the account name as would be reported by mc-tool list, not a full D-Bus object path - There are helpful messages when one gives an invalid or valid but offline account examples/roster/main.cpp | 2 +- examples/roster/roster-window.cpp | 16 ++++++++++++---- examples/roster/roster-window.h | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) commit 941a41c29d3983833c6b70cfe04fdc164fb95838 Author: Olli Salli Date: Fri Apr 29 21:57:28 2011 +0300 Tubes example: Use Accounts from the AM rather than poking CMs directly Unfortunately, as we're using MC for the accounts, and haven't implemented a proper Handler yet, MC closes the tube channels as they don't have any proper handlers. So the example doesn't quite work yet. examples/stream-tubes/tube-initiator.cpp | 89 ++++++++++++++------------------ examples/stream-tubes/tube-initiator.h | 12 ++--- examples/stream-tubes/tube-receiver.cpp | 85 +++++++++++++----------------- examples/stream-tubes/tube-receiver.h | 10 ++-- 4 files changed, 82 insertions(+), 114 deletions(-) commit 115df65775c9faddd6e3a519e692a5eae276e471 Author: Olli Salli Date: Fri Apr 29 20:51:47 2011 +0300 Import Dario Freddi's old low-level stream tubes example I'll use this as a basis for testing and demonstrating the new tubes convenience API. As the first thing I'll port it to use an Account, not ConnectionManager connection requesting directly. When the tube handling convenience API is done, I'll make it an exemplary user of that API: requesting the tubes from the Account and handling them using StreamTubeServer/StreamTubeClient. examples/CMakeLists.txt | 1 + examples/stream-tubes/CMakeLists.txt | 29 +++ examples/stream-tubes/tube-initiator.cpp | 343 +++++++++++++++++++++++++++++++ examples/stream-tubes/tube-initiator.h | 80 +++++++ examples/stream-tubes/tube-receiver.cpp | 242 ++++++++++++++++++++++ examples/stream-tubes/tube-receiver.h | 68 ++++++ 6 files changed, 763 insertions(+) commit f9149bacc82b069d20c522d0e9a50805c91bec4f Author: Olli Salli Date: Tue Apr 26 17:43:05 2011 +0300 StreamTubeServer: Identify tubes by (account, channel) pairs, not just channel TelepathyQt4/stream-tube-server.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit e86c6c66ee8d0ee17245ba32c29523aa8ba97208 Author: Olli Salli Date: Tue Apr 26 17:42:35 2011 +0300 StreamTubeServer: Make dtor virtual TelepathyQt4/stream-tube-server.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2c2dec66fb81eb4ac5def1b117e4f7068f10e74f Author: Olli Salli Date: Tue Apr 26 15:12:36 2011 +0300 StreamTubeServer: Change tubeCreated -> tubeRequested and add params This is to emphasis the fact that it's legal (although unexpected) that it's going to be emitted multiple times for a single tube, if EnsureChannel has been used, in which case we want the new user action time and hints to be passed to the handler. TelepathyQt4/stream-tube-server.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit e1e212c6fbd057cbad8580dcdf9b605c4c2746e3 Author: Olli Salli Date: Mon Apr 25 23:38:42 2011 +0300 StreamTubeServer: Add monitorsConnections() getter TelepathyQt4/stream-tube-server.h | 2 ++ 1 file changed, 2 insertions(+) commit f02c4751e6272a6fef7a9843a9d57536891e74ae Author: Olli Salli Date: Mon Apr 25 23:38:13 2011 +0300 StreamTubeServer: Have a sensible clientName param in each create() overload TelepathyQt4/stream-tube-server.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit fb825cd022f3e2c9e391ba515340072936339c1c Author: Olli Salli Date: Mon Apr 25 23:20:56 2011 +0300 Draft StreamTubeServer API TelepathyQt4/stream-tube-server.h | 152 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/types.h | 2 + 2 files changed, 154 insertions(+) commit fd1583bc7d6456a050782455529150291cdd6995 Author: Olli Salli Date: Mon Oct 10 19:17:27 2011 +0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 48eadfeac28d9bad76816ac46fec290326ddcd23 Merge: 0758e40 4495535 Author: Olli Salli Date: Mon Oct 10 19:14:18 2011 +0300 Merge branch 'stale-todo-comments' Reviewed-by: Andre Magalhaes (andrunko) commit 44955355dc52790901f60a3782f81bb0e10e86ad Author: Olli Salli Date: Mon Oct 10 19:13:08 2011 +0300 Put the \todo for using propertyChanged() for more classes in the signal doc, not Object overview TelepathyQt4/object.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit bc4493dc425808ec4480688a56c66744769f2285 Author: Olli Salli Date: Mon Oct 10 19:08:13 2011 +0300 Migrate from the separate TODO file to using doxygen \todos Everything formerly in the TODO file is now a \todo, except for most of it which was out of date and already fixed. Oh well, shows that the separate file wasn't a very good idea. HACKING | 3 +++ TODO | 22 ---------------------- 2 files changed, 3 insertions(+), 22 deletions(-) commit 4665982782456a9c7e6340f4d6bf1f457831ed72 Author: Olli Salli Date: Mon Oct 10 19:06:19 2011 +0300 Tp::Object: Add \todo to use for more classes TelepathyQt4/object.cpp | 2 ++ 1 file changed, 2 insertions(+) commit c979d00f78a58e1f9d493fbdc2b72b2be3ff5a10 Author: Olli Salli Date: Mon Oct 10 19:03:51 2011 +0300 Add \todos about removing KeyFile and possibly ManagerFile from our public API TelepathyQt4/key-file.cpp | 4 ++++ TelepathyQt4/manager-file.cpp | 3 +++ 2 files changed, 7 insertions(+) commit e31c9b41a56c2ee3e886bb88051f35db078c7354 Author: Olli Salli Date: Mon Oct 10 18:57:51 2011 +0300 Add TODO to Channel about extracting immutable props on construction already TelepathyQt4/channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit b18220e798cd50b8cbf1d713ce6fb2c16ff585cc Author: Olli Salli Date: Mon Oct 10 18:43:23 2011 +0300 Remove two stale doxygen \todos in ChannelFactory TelepathyQt4/channel-factory.cpp | 4 ---- 1 file changed, 4 deletions(-) commit 09c1e6b724ed479373ba20b44b59ff0636c50bce Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 03:26:05 2011 -0300 contacts-avatar: Add test for ContactManager::requestContactAvatars. tests/dbus/contacts-avatar.cpp | 95 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) commit d970515d014d61a268d360ba82baca3226329c60 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 03:25:04 2011 -0300 ContactManager: Refactor request avatar handling and add test for requestContactAvatars. TelepathyQt4/contact-manager.cpp | 91 +++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 38 deletions(-) commit 72e4a94e698d92bb44a39f074e0c284e81d83426 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 02:53:19 2011 -0300 contacts-conn example cm: Allow to change avatar without emitting AvatarUpdated. tests/dbus/contacts-avatar.cpp | 2 +- tests/lib/glib/contacts-conn.c | 10 +++++++--- tests/lib/glib/contacts-conn.h | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) commit 3e1970561eb48cd0d0c3f5797ad9d57e2f09315e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 01:02:09 2011 -0300 Contact: Use ContactPtr(this) instead of ContactManager::lookupContactByHandle(selfHandle). TelepathyQt4/contact.cpp | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) commit 8fb5ca1842046a46847ebfb61ca876943e399bd1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 01:00:24 2011 -0300 ContactManager: Rename refreshContactsInfo to refreshContactInfo. TelepathyQt4/contact-manager.cpp | 2 +- TelepathyQt4/contact-manager.h | 2 +- TelepathyQt4/contact.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 9b06c800ed63878554206fb72b012525e307a21c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 00:59:02 2011 -0300 ContactManager: Elaborate a bit more in the requestContactAvatars docs. TelepathyQt4/contact-manager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 885f5c3add59579a244900a7ec51f652a5e892ea Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 00:58:43 2011 -0300 ContactManager: Rename requestContactsAvatar to requestContactAvatars. TelepathyQt4/contact-manager.cpp | 4 ++-- TelepathyQt4/contact-manager.h | 2 +- TelepathyQt4/contact.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit 0758e40c02d0f2769696e501750b5743832bc50b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 00:26:16 2011 -0300 Start 0.7.4 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit b4e9eab2a1442ceee21094820fcb14af488a40a6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 7 00:14:20 2011 -0300 Prepare release 0.7.3 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 27064f7c42efa0716e6a8cae3228bc531b8cfe3a Author: Olli Salli Date: Thu Oct 6 23:16:28 2011 +0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 01c911b73c9d89a656ae55704c112815d560afe0 Merge: 47afaff 3af1b3c Author: Olli Salli Date: Thu Oct 6 23:14:29 2011 +0300 Merge branch 'drdanz_logging' Reviewed-by: Olli Salli (oggis) commit 3af1b3c29bf11f9b90d5aedaad3795812a7c548c Author: Olli Salli Date: Thu Oct 6 23:13:18 2011 +0300 Use the typedef for declaring the debug callback global variable TelepathyQt4/debug.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6d5c9dadd13e7cdedcf2c45347d9ec40f43ab1b5 Author: Daniele E. Domenichelli Date: Fri Sep 30 21:17:33 2011 +0100 Add documentation for enhancements in debug system TelepathyQt4/debug.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit bd2b85e4879b26436a7bc8993d71a66ad27d8288 Author: Daniele E. Domenichelli Date: Fri Sep 30 21:16:42 2011 +0100 Enhance debug system Add a new method Tp::setDebugCallback that allows to set a method that will be called to get the output stream for debugging information. This allows to redirect debug output to other logging system (i.e. KDebug) TelepathyQt4/debug-internal.h | 21 +++++++++++++++++---- TelepathyQt4/debug.cpp | 36 ++++++++++++++++++++++++++++++++++-- TelepathyQt4/debug.h | 6 ++++++ 3 files changed, 57 insertions(+), 6 deletions(-) commit 47afaffcb4ffb7b282c3af1109917625a03c2760 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 5 10:54:59 2011 -0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 81f95f315aa1b90f9b94f244b763b4aea1971ff2 Merge: cfc19d3 3f56048 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 5 10:54:11 2011 -0300 Merge branch 'stube-channel-api-break-fix' Reviewed-by: Olli Salli (oggis) commit 3f56048f77d68bcf6d539ca1efd47d47c2f7367a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 5 10:18:09 2011 -0300 StreamTubeChannel: Reintroduce exported protected method setBaseTubeType. TelepathyQt4/stream-tube-channel.cpp | 9 +++++++++ TelepathyQt4/stream-tube-channel.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) commit cfc19d377d7ce14e750b3fbc0e80a2ed588f6067 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 3 14:38:40 2011 -0300 Update NEWS NEWS | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit c2c80680f6794e003d0e2ee659d55687e42b2e52 Merge: b492683 46a1d8b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 3 14:33:31 2011 -0300 Merge branch 'socket-addr-tests' Reviewed-by: Olli Salli (oggis) commit b4926838f56b5563508ffd2327d71c8378ee728b Merge: 79d26c7 19041ba Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 3 14:33:22 2011 -0300 Merge branch 'other-tests' Reviewed-by: Olli Salli (oggis) commit 79d26c7756caeddada6073a3f8e26d8c8cfc20db Merge: dc76294 74ea460 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 3 14:33:11 2011 -0300 Merge branch 'channel-factory-tests' Reviewed-by: Olli Salli (oggis) commit dc76294529bc7f41c40adb13951d0a9ff7e8f8d7 Merge: 45817cd 687675c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 3 14:32:53 2011 -0300 Merge branch 'caps-tests' Reviewed-by: Olli Salli (oggis) commit 46a1d8b3f6b1cd85e187c9c45429426dca1cff97 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 3 12:18:13 2011 -0300 types-internal.h: Export SUSocketAddress so tests can actually test it. TelepathyQt4/types-internal.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit ca26f2c63e2e35cad4ad6ef3c77c6389233f4887 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 30 13:53:03 2011 -0300 ContactManager: Remove private refreshContactInfo in favour of public refreshContactsInfo. TelepathyQt4/contact-manager.cpp | 37 +++++++++++++++++++++++++------------ TelepathyQt4/contact-manager.h | 3 ++- TelepathyQt4/contact.cpp | 3 ++- 3 files changed, 29 insertions(+), 14 deletions(-) commit 1c0dc995aef7add9ad622e6c5d204443a547d9e4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 30 12:00:21 2011 -0300 ContactManager: Deprecated public requestContactAvatar in favour of requestContactsAvatar. TelepathyQt4/contact-manager.cpp | 76 +++++++++++++++++++++++++++------------- TelepathyQt4/contact-manager.h | 3 +- TelepathyQt4/contact.cpp | 6 ++-- 3 files changed, 57 insertions(+), 28 deletions(-) commit 6e8f1ed5cf72cb17fe9c70c432854e08c1e7d707 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 30 10:32:14 2011 -0300 ContactManager: Make debug less verbose when calling RefreshContactInfo. TelepathyQt4/contact-manager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 907a75662f50272571ef98cb32755f1da0e19a3f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 20:30:07 2011 -0300 contacts-info test: Check that Contact::refreshInfo operation returns succesfully. tests/dbus/contacts-info.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) commit 856432a7d6ab21069d6323de34f9acc404b53ed2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 20:20:30 2011 -0300 Contact: Retain the contact as the parent of the PendingFailure when calling refreshInfo with FeatureInfo not requested. TelepathyQt4/contact.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9c46cea00ce70160bd43841546843e921b2c00a7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 20:17:21 2011 -0300 ContactManager: Use a better variable name for the pending refresh info operation. TelepathyQt4/contact-manager.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit 2ca30f167da3c4db60a16796425b70cce3d24636 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 20:15:01 2011 -0300 ContactManager: Add debug/warning for invoking RefreshContactInfo. TelepathyQt4/contact-manager.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit cf5eb05a3f30f982463fb4886de7a3e7b76b206c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:46:27 2011 -0300 Contact: Use ContactManager::requestContactInfo() on requestInfo(). TelepathyQt4/contact.cpp | 19 ++++--------------- tests/dbus/contacts-info.cpp | 2 +- 2 files changed, 5 insertions(+), 16 deletions(-) commit c79e4de31f07d34276e58f7f4f5472d7457ac989 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:45:56 2011 -0300 ContactManager: Add requestContactInfo() private API to be used by Contact. TelepathyQt4/contact-manager.cpp | 27 ++++++++++++++++++++++++++- TelepathyQt4/contact-manager.h | 4 ++++ 2 files changed, 30 insertions(+), 1 deletion(-) commit c2ec26978907f383ac537789223c80ae193b5883 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:44:57 2011 -0300 ContactManager: Add internal pending operation to refresh contacts info in batch. TelepathyQt4/contact-manager-internal.h | 20 +++++++++++++ TelepathyQt4/contact-manager.cpp | 51 +++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.h | 2 ++ 3 files changed, 73 insertions(+) commit 7e832ab608012184e43dbab0dedeed89062857e1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:43:32 2011 -0300 contacts-info test: Add test to check how many times RefreshContactInfo is called. tests/dbus/contacts-info.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) commit 8d85b636b61e1cf74bba771f0c518da4c77dcfef Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:35:11 2011 -0300 contacts-conn example cm: Make RefreshContactInfo replaces the user info with the default info. This is specially useful when checking that Contact::infoFieldsChanged was emitted in response of Contact::refreshInfo. tests/dbus/contacts-info.cpp | 26 +++++++++++++++++++++++--- tests/lib/glib/contacts-conn.c | 9 ++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) commit e7d79bdbde8a250a103d0bebde344c2a2c4bfc5f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:34:18 2011 -0300 contacts-conn example cm: Add a backdoor to check how many times RefreshContactInfo is called. tests/lib/glib/contacts-conn.c | 2 ++ tests/lib/glib/contacts-conn.h | 2 ++ 2 files changed, 4 insertions(+) commit 5e3dfc28356233dca94150c56a9bd876cb60031a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:30:50 2011 -0300 contacts-info test: Fix double free. tests/dbus/contacts-info.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit d310b0164342d9197c885d7790545252e7dfeb9d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 15:29:52 2011 -0300 contacts-info test: Fix signal disconnection. tests/dbus/contacts-info.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 687675cbfa3b55af159a737b7b8a85c470f2b117 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 13:38:14 2011 -0300 capabilities test: Add more tests for ContactCapabilities::*tube*. tests/capabilities.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit 4cf73193b5c3310702203ec2c033922ec672c491 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 13:15:30 2011 -0300 capabilities test: Add more tests for ConnectionCapabilities::*textChat*. tests/capabilities.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) commit 837546df3aeb008da9b0dbca4018ed105ee44f5f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 13:03:50 2011 -0300 capabilities test: Add more tests for ConnectionCapabilities::*streamedMedia*. tests/capabilities.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) commit 9c8447c1cc05f4e511680b0eb7706410dab9a1db Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 20:40:01 2011 -0300 capabilities test: Add ContactCapabilities specific tests. tests/capabilities.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) commit 50cd94638e359258f15a4c4581df0d1c4eae2672 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 20:32:41 2011 -0300 capabilities test: Add test for ConnectionCapabilities. tests/CMakeLists.txt | 1 + tests/capabilities.cpp | 135 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) commit 9f960da8471f7baf19f6c936d3d6e47c648cb9f9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 20:31:53 2011 -0300 TestBackdoors: Add backdoor to create Contact/ConnectionCapabilities instances from tests. TelepathyQt4/connection-capabilities.h | 3 +++ TelepathyQt4/contact-capabilities.h | 3 +++ TelepathyQt4/test-backdoors.cpp | 12 ++++++++++++ TelepathyQt4/test-backdoors.h | 7 +++++++ 4 files changed, 25 insertions(+) commit 19041babac86a14fcf1afe2ed405711c8dd2fd74 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 19:53:05 2011 -0300 presence test: Add PresenceSpec specific tests. tests/presence.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) commit c8037847f10759e009de6d9e9a6dc5c7160658f3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 19:28:53 2011 -0300 presence test: Add test for Presence. tests/CMakeLists.txt | 1 + tests/presence.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) commit e1d8566eea2ba40dd6cd531edd3e1d3660707c74 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 19:11:41 2011 -0300 cm-basics test: Test ProtocolParameter default values. tests/dbus/cm-basics.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 74ea46059edb74b859a70135c90904ccfd2c47d3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 18:52:23 2011 -0300 client-factories test: Add more specific tests for ChannelFactory::featuresFor*. tests/dbus/client-factories.cpp | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) commit 72bac8b25529c866c0de16f08e2f720c36ce4703 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 17:56:46 2011 -0300 client-factories test: Test individual ChannelFactory::featuresFor* accessors. tests/dbus/client-factories.cpp | 92 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) commit ef45ecb4be666514e005e551dd1d4a7e6b93c1f1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 17:35:41 2011 -0300 client-factories test: Test if channel factories common features are properly added to featuresFor*. tests/dbus/client-factories.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit b277b9c37e9838addefb634f1006602604914c15 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 28 16:55:03 2011 -0300 client-factories test: Check that ChannelFactory::featuresFor* accessors return sensible defaults. tests/dbus/client-factories.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) commit 12ff250344d5a0c6ef21315c425697b73f459b98 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 30 10:34:30 2011 -0300 types test: Properly capitalize IPv4/6. tests/dbus/types.cpp | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) commit caa88f05c4a40f898b371d2e50cb6f17d489a94f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 29 21:31:21 2011 -0300 types test: Add tests for SUSocketAddress/SocketAddressIPv4/SocketAddressIPv6 conversions. tests/dbus/CMakeLists.txt | 1 + tests/dbus/types.cpp | 141 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) commit 45817cd7e9d8ce73d48fb7289c7e77df4eb982fa Author: Rohan Garg Date: Thu Sep 29 22:03:22 2011 -0300 Presence/Spec: Add operator!= support. Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/presence.cpp | 25 +++++++++++++++++++++++++ TelepathyQt4/presence.h | 2 ++ 2 files changed, 27 insertions(+) commit a59d4d45daa5299bc452e8e95ab4e781a824d720 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 20:28:42 2011 -0300 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 7c46ea1ba94b7343b22795baa5b105bb9d1a0691 Merge: 6549cdf 76f9470 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 20:28:16 2011 -0300 Merge branch 'channel-tests' Reviewed-by: Olli Salli (oggis) commit 76f947092a0517ad103159f8d085719f4e931a9d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 20:08:26 2011 -0300 echo2 cm: Add support for message supersedes, message token, scrollback. tests/dbus/text-chan.cpp | 22 +++++++++++++++++++--- tests/lib/glib/echo2/chan.c | 6 ++++++ 2 files changed, 25 insertions(+), 3 deletions(-) commit 3e5b0fd4b779bc67cb3ae75201f2e5b3bbf1bb92 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 19:52:25 2011 -0300 echo2 cm: Add delivery-token support for delivery reports. tests/dbus/text-chan.cpp | 4 ++-- tests/lib/glib/echo2/chan.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) commit e8a894576c3b6de0a2623142b1c88b518a95ed74 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 19:47:11 2011 -0300 chan-conference test: Comment out tests for Channel::FeatureConferenceInitialInviteeContacts as no test CM implements it. tests/dbus/chan-conference.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 76322e7842cdb483104ea5eb6f37eaa224931ce6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 19:46:28 2011 -0300 chan-group test: Properly test TextChannel::canInviteContacts. tests/dbus/chan-group.cpp | 2 ++ 1 file changed, 2 insertions(+) commit e2a1aee10bf307deee6ea8c2f6634a44200f785b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 19:44:47 2011 -0300 chan-group test: Add tests for Channel::groupFlagsChanged. tests/dbus/chan-group.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) commit fa3693b701c0cd061491d5468d93f422b56fdf09 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 19:41:45 2011 -0300 textchan-null: Properly advertise channel interfaces. tests/lib/glib/textchan-null.c | 16 ++++++++++++++-- tests/lib/glib/textchan-null.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) commit 66ae018b74983faab223af66639d91bbafc6ae1e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 18:19:31 2011 -0300 text-chan test: Properly check the error when requestChatState fails with no interface support. tests/dbus/text-chan.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit 02696a3777cd6ca32537b74f215d6a5ff58174db Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 18:15:59 2011 -0300 chan-conference test: Properly check the error when conferenceSpĺitChannel fails with no interface support. tests/dbus/chan-conference.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 14ecabb69f5340e51c1d293910363f947f30aa7c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 18:07:08 2011 -0300 chan-basics test: Properly check the error when groupAddContacts fails. tests/dbus/chan-basics.cpp | 6 ++++-- tests/dbus/chan-group.cpp | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) commit d0d5cc1308081c059943d13a69148bd30e61119f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 18:04:41 2011 -0300 chan-basics test: Properly check the error when becomeReady in a invalid channel fails. tests/dbus/chan-basics.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 08b1a49092a77383dd6f8c488757015409984675 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 17:25:42 2011 -0300 test helper: Add properies to retrieve last error received in expectFailure. tests/lib/test.cpp | 7 ++++++- tests/lib/test.h | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) commit 4afa72822a97001a82ffcf895d0dc57505fb0bde Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 16:39:58 2011 -0300 text-chan test: Add tests for delivery report support. tests/dbus/text-chan.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) commit 704b5ab2e576cc5ee4a571d06d86bd988b522dbf Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 16:39:46 2011 -0300 text-chan test: Add more Message tests. tests/dbus/text-chan.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 99b02084fa483d4769bd92accd1074e168dc142a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 16:38:17 2011 -0300 echo2 cm: Add delivery report support. tests/lib/glib/echo2/chan.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) commit d910a32f280434b108941d7cd8b6b5023a468df1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 14:01:50 2011 -0300 text-chan test: Add more tests for Channel.ChatState support. tests/dbus/text-chan.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) commit 39366f0fec0e6f035b1a55c9586fb3e55d05d33f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 14:01:30 2011 -0300 echo2 cm: Add Channel.ChatState support. tests/dbus/text-chan.cpp | 22 +++++++++++++++++++--- tests/lib/glib/echo2/chan.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) commit fb3baa32001ccef9b50933015f0a0d1506b4202e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 13:23:39 2011 -0300 echo2 cm: Properly adverise supported interface Channel.Destroyable. tests/lib/glib/echo2/chan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9e5d95b9ac9e0fdcfd8f999bab76880f87aef591 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 13:18:01 2011 -0300 chan-basics/group tests: Add more tests for Channel::groupAddContacts(). tests/dbus/chan-basics.cpp | 6 ++++++ tests/dbus/chan-group.cpp | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) commit 5b73842391b6ed9d3eaab233393f8ab47477abc1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 13:08:39 2011 -0300 chan-basics test: Test Channel fallback code for GetHandle/ChannelType/Interfaces. tests/dbus/chan-basics.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) commit 9589c67048ccdc018cfe719fdaf209d7aa20832f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 20:07:27 2011 -0300 chan-conference: Test that Channel::conferenceSplitChannel() fails if splitting is not supported. tests/dbus/chan-conference.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 3d91f2d40a618ff0e6d26c65259d3b01c4c9959b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 20:01:49 2011 -0300 chan-conference: Add more tests to check conference support. tests/dbus/chan-conference.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 389a568b8092f34dac1a17ee9732096155d83de4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:55:17 2011 -0300 chan-group: Add test for Channel::groupIsSelfContactTracked(). tests/dbus/chan-group.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 99ee4389cd56097e09b64021cad6f171ed4e163d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:41:30 2011 -0300 chan-group: Add tests for Channel group flags accessors. tests/dbus/chan-group.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit cd16626c57246c3577340322da206375c58a919a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:29:12 2011 -0300 chan-basics test: Add tests for Channel::channelType(). tests/dbus/chan-basics.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 3eeddbc9be33d8b9c27e4a919338eb6686f79429 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:23:24 2011 -0300 chan-basics test: Check that the channel is correctly invalid when creating a channel from an invalid connection. tests/dbus/chan-basics.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit 0202730e4f6deb32a428e51ae8b0fde2060cb2f3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:13:53 2011 -0300 chan-conference test: Add test for Channel::FeatureConferenceInitialInviteeContacts. tests/dbus/chan-conference.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 23e9ec7fb4b3f60bb9777e1025decfaffc7c676b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:01:29 2011 -0300 text-chan test: Add test for TextChannel::canInviteContacts(). tests/dbus/text-chan.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 048725eb463213c7d7084fc31b08e26e28545b26 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 19:04:44 2011 -0300 text-chan test: Also check that TextChannel::requestChatState() fails when the interface is not supported. tests/dbus/text-chan.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 80e3d0dd640a5e8e998a1864417358477bf989d3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 18:59:54 2011 -0300 text-chan test: Add tests for TextChannel ChatState support. Note that this will only test that the ChatState interface is not supported and that the accessors return sensible data when the interface is not available as no test CM supports the interface. tests/dbus/text-chan.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit af051c6a29e9a45961bed585171585a4302b8065 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 6 15:29:56 2011 -0300 chan-basics test: Test redundant calls to Channel::requestClose(). tests/dbus/chan-basics.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 6549cdf5086313805e2fdf7a65bf9c103a28f200 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 17:46:37 2011 -0300 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 388cf5f1abeedde777d0e882527d12d3ad069339 Merge: 2fe00c9 8a7c6ae Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 17:45:32 2011 -0300 Merge branch 'examples' Reviewed-by: Olli Salli (oggis) commit 8a7c6ae637501d306d419461af2843655b7336a7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 17:28:52 2011 -0300 file-transfer example: Do not use a virtual slot on PendingFileTransfer. examples/file-transfer/pending-file-receive.cpp | 5 ++++- examples/file-transfer/pending-file-send.cpp | 5 ++++- examples/file-transfer/pending-file-transfer.cpp | 5 ----- examples/file-transfer/pending-file-transfer.h | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) commit 98d9a60ffa15646d52751ffa3773e621349669f2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 17:04:23 2011 -0300 file-transfer example: Rename rop/sop to receive/SendOperation. examples/file-transfer/file-receiver-handler.cpp | 8 ++++---- examples/file-transfer/file-sender.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit 0463a49177f1f826e877cf264da54be6f4c1c103 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 16:57:47 2011 -0300 file-transfer example: Rename ift/oftChan to transferChannel for clarity. examples/file-transfer/file-receiver-handler.cpp | 6 +++--- examples/file-transfer/file-sender.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) commit f56088ac60448f145063c65829146da0af9fffb5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 23 16:48:10 2011 -0300 file-transfer example: Remove leftover comment. examples/file-transfer/file-receiver.cpp | 1 - 1 file changed, 1 deletion(-) commit e09ffd38682ad46eb9200182f3bd1849449effe5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 18:17:37 2011 -0300 file-transfer example: Use the R&H API for the sender example. examples/file-transfer/CMakeLists.txt | 2 - examples/file-transfer/file-sender-handler.cpp | 100 ------------------------- examples/file-transfer/file-sender-handler.h | 63 ---------------- examples/file-transfer/file-sender.cpp | 54 +++++++++---- examples/file-transfer/file-sender.h | 7 +- 5 files changed, 40 insertions(+), 186 deletions(-) commit ad67044209588c974a07d933b565327cb5173750 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 18:04:34 2011 -0300 file-transfer example: Only enable the needed features in the receiver ClientRegistrar. examples/file-transfer/file-receiver.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit eff0d6688046a25b50cb6f703a08362aa0e7e1ff Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 18:00:09 2011 -0300 file-transfer example: Rename mConn/Chan to mConnection/Channel. examples/file-transfer/file-sender.cpp | 4 ++-- examples/file-transfer/file-sender.h | 2 +- examples/file-transfer/pending-file-transfer.cpp | 4 ++-- examples/file-transfer/pending-file-transfer.h | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) commit 710789cb66abaf44a24d3d91cc7b6700a0d0b578 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 17:55:28 2011 -0300 file-transfer example: Rename FT to Transfer where appropriate. examples/file-transfer/file-sender.cpp | 10 +++++----- examples/file-transfer/file-sender.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) commit 8383bad94e5caaa25a8f197390b2cbb4e8f4dcfc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 17:53:18 2011 -0300 file-transfer example: Add comments to asserts in the receiver handler. examples/file-transfer/file-receiver-handler.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 19a55e2a31a76136bdbbf97f932b6359b49518c1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 17:48:05 2011 -0300 file-transfer example: Use PendingFileTransfer in PendingFileSend. examples/file-transfer/CMakeLists.txt | 6 ++- examples/file-transfer/pending-file-send.cpp | 81 ++++++++-------------------- examples/file-transfer/pending-file-send.h | 12 ++--- 3 files changed, 29 insertions(+), 70 deletions(-) commit 4ff1f83951afda25e8197ddef17744058eb7295c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 17:47:34 2011 -0300 file-transfer example: Use PendingFileTransfer in PendingFileReceive. examples/file-transfer/CMakeLists.txt | 6 +- examples/file-transfer/pending-file-receive.cpp | 76 ++++++------------------- examples/file-transfer/pending-file-receive.h | 12 ++-- 3 files changed, 26 insertions(+), 68 deletions(-) commit 697e67213fd51362e478ac8c9ecde12d95469e49 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 17:45:55 2011 -0300 file-transfer example: Add base class for send/receive pending operations. examples/file-transfer/pending-file-transfer.cpp | 98 ++++++++++++++++++++++++ examples/file-transfer/pending-file-transfer.h | 56 ++++++++++++++ 2 files changed, 154 insertions(+) commit 0da75454310fe14373b0279d4da80760dcf3bd3d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:25:50 2011 -0300 file-transfer example: Rename FTReceiverHandler to FileReceiverHandler. examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/file-receiver-handler.cpp | 92 ++++++++++++++++++++++++ examples/file-transfer/file-receiver-handler.h | 64 +++++++++++++++++ examples/file-transfer/file-receiver.cpp | 4 +- examples/file-transfer/file-receiver.h | 4 +- examples/file-transfer/ft-receiver-handler.cpp | 92 ------------------------ examples/file-transfer/ft-receiver-handler.h | 64 ----------------- 7 files changed, 162 insertions(+), 162 deletions(-) commit 116f8f88ed39eb9b2a8e50b77ef0a318674795ce Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:24:09 2011 -0300 file-transfer example: Rename FTReceiver to FileReceiver. examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/file-receiver.cpp | 81 ++++++++++++++++++++++++++++++++ examples/file-transfer/file-receiver.h | 46 ++++++++++++++++++ examples/file-transfer/ft-receiver.cpp | 81 -------------------------------- examples/file-transfer/ft-receiver.h | 46 ------------------ 5 files changed, 129 insertions(+), 129 deletions(-) commit 1e75c1cb9602b8f261ae5f1f21ec4a6432bcac8e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:22:13 2011 -0300 file-transfer example: Rename FTReceiverHandler to PendingFileReceive. examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/ft-receive-op.cpp | 108 ------------------------ examples/file-transfer/ft-receive-op.h | 55 ------------ examples/file-transfer/ft-receiver-handler.cpp | 6 +- examples/file-transfer/pending-file-receive.cpp | 108 ++++++++++++++++++++++++ examples/file-transfer/pending-file-receive.h | 55 ++++++++++++ 6 files changed, 168 insertions(+), 168 deletions(-) commit e7736a61e1dc64dcc3da557967ba2f1864ecc2ee Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:19:15 2011 -0300 file-transfer example: Rename FTSenderHandler to FileSenderHandler. examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/file-sender-handler.cpp | 100 +++++++++++++++++++++++++ examples/file-transfer/file-sender-handler.h | 63 ++++++++++++++++ examples/file-transfer/file-sender.cpp | 4 +- examples/file-transfer/file-sender.h | 4 +- examples/file-transfer/ft-sender-handler.cpp | 100 ------------------------- examples/file-transfer/ft-sender-handler.h | 63 ---------------- 7 files changed, 169 insertions(+), 169 deletions(-) commit addaadf30c4671e9ad8487008282b0d07a97c5fb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:11:33 2011 -0300 file-transfer example: Rename FTSender to FileSender. examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/file-sender.cpp | 249 +++++++++++++++++++++++++++++++++ examples/file-transfer/file-sender.h | 71 ++++++++++ examples/file-transfer/ft-sender.cpp | 249 --------------------------------- examples/file-transfer/ft-sender.h | 71 ---------- 5 files changed, 322 insertions(+), 322 deletions(-) commit b1d4d4723e345d2213e5f8e0c46fdc0329b952c5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:06:56 2011 -0300 file-transfer example: Rename FTSendOp to PendingFileSend. examples/file-transfer/CMakeLists.txt | 4 +- examples/file-transfer/ft-send-op.cpp | 112 --------------------------- examples/file-transfer/ft-send-op.h | 55 ------------- examples/file-transfer/ft-sender-handler.cpp | 6 +- examples/file-transfer/pending-file-send.cpp | 112 +++++++++++++++++++++++++++ examples/file-transfer/pending-file-send.h | 55 +++++++++++++ 6 files changed, 172 insertions(+), 172 deletions(-) commit b8141878fa7e9ac20695dcef02222daf24c790b6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 14:02:55 2011 -0300 file-transfer example: Be less verbose on slot names. examples/file-transfer/ft-send-op.cpp | 10 +++++----- examples/file-transfer/ft-send-op.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) commit 6fc8508f82559f15185c4dc8039f3fde3e01f69f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:59:18 2011 -0300 file-transfer example: Raise an error if outgoing file transfer channel received does not have the URI set. examples/file-transfer/ft-sender-handler.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 1816f885390602d023b3b44853ec0e361095c64a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:57:33 2011 -0300 file-transfer example: Assert if outgoing file transfer channel received is not the one expected. examples/file-transfer/ft-sender-handler.cpp | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) commit 9505ad37ea8c4d5d344a87a3060328ce22da8608 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:54:59 2011 -0300 file-transfer example: Do not try to close invalid channels, and raise an error when an invalid channel is received on sender handler. examples/file-transfer/ft-sender-handler.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 551efec8eb5aa9d60bd37da6fedcd7a50c10abd8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:52:00 2011 -0300 file-transfer example: Set an empty filter on the sender handler. examples/file-transfer/ft-sender-handler.cpp | 6 ++++-- examples/file-transfer/ft-sender-handler.h | 6 +++--- examples/file-transfer/ft-sender.cpp | 4 +--- 3 files changed, 8 insertions(+), 8 deletions(-) commit 4576302b759de81fa9857a2acc654f91a5ed0b5e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:37:27 2011 -0300 file-transfer example: Make sender handle file transfers for all accounts. examples/file-transfer/ft-sender-handler.cpp | 11 ++--------- examples/file-transfer/ft-sender-handler.h | 9 +++------ examples/file-transfer/ft-sender.cpp | 2 +- 3 files changed, 6 insertions(+), 16 deletions(-) commit 1de659f7d7b2f2fb88361a5e8597edb3f41f252e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:34:16 2011 -0300 file-transfer example: Do not prepare all accounts on sender if we only care about one. examples/file-transfer/ft-sender.cpp | 23 +++++++++++++++++++++-- examples/file-transfer/ft-sender.h | 1 + 2 files changed, 22 insertions(+), 2 deletions(-) commit 3ba7bdd05e926a0556669cce9c987411c1ffb09e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:29:32 2011 -0300 file-transfer example: Be less verbose on slot names. examples/file-transfer/ft-receive-op.cpp | 10 +++++----- examples/file-transfer/ft-receive-op.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) commit f62b01e3c6352b858912f554937a5e6f6151fa78 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:25:13 2011 -0300 file-transfer example: Assert if incoming file transfer channel received is not the one expected. examples/file-transfer/ft-receiver-handler.cpp | 27 +++++--------------------- 1 file changed, 5 insertions(+), 22 deletions(-) commit c54c47feff051914799d647d4c9d7ea03524f79f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:18:10 2011 -0300 file-transfer example: Do not try to close invalid channels, and raise an error when an invalid channel is received on receiver handler. examples/file-transfer/ft-receiver-handler.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 9a3de766e7024c3bb0bb39b44aed86aa424423ee Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:15:21 2011 -0300 file-transfer example: Do not bypass approval when receiving file transfers. examples/file-transfer/ft-receiver-handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fc58d1da56321f09c5630bb09053959e9ca3b74d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:14:35 2011 -0300 file-transfer example: Make receiver handler set its own filter. examples/file-transfer/ft-receiver-handler.cpp | 7 +++++-- examples/file-transfer/ft-receiver-handler.h | 6 +++--- examples/file-transfer/ft-receiver.cpp | 6 +----- 3 files changed, 9 insertions(+), 10 deletions(-) commit 96e92d5d70a044faf889bf4e4bc0dabfdb586a9d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 13:11:33 2011 -0300 file-transfer example: Make receiver handle file transfers for all accounts. examples/file-transfer/ft-receiver-handler.cpp | 11 +--- examples/file-transfer/ft-receiver-handler.h | 8 ++- examples/file-transfer/ft-receiver.cpp | 73 +++----------------------- examples/file-transfer/ft-receiver.h | 16 +----- 4 files changed, 13 insertions(+), 95 deletions(-) commit 6489b62582c3ed43e89fa9e0594cd040ec1fc999 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 21 18:47:55 2011 -0300 file-transfer example: Add new sender example using AbstractClientHandler. examples/file-transfer/CMakeLists.txt | 10 +- examples/file-transfer/ft-send-op.cpp | 112 +++++++++++++ examples/file-transfer/ft-send-op.h | 55 +++++++ examples/file-transfer/ft-sender-handler.cpp | 118 ++++++++++++++ examples/file-transfer/ft-sender-handler.h | 66 ++++++++ examples/file-transfer/ft-sender.cpp | 232 +++++++++++++++++++++++++++ examples/file-transfer/ft-sender.h | 70 ++++++++ 7 files changed, 661 insertions(+), 2 deletions(-) commit d9e609fc7057fe1fec060671c7020ce5746392e7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 21 18:47:15 2011 -0300 file-transfer example: Add new receiver example using AbstractClientHandler. examples/file-transfer/CMakeLists.txt | 10 +- examples/file-transfer/ft-receive-op.cpp | 108 +++++++++++++++++++ examples/file-transfer/ft-receive-op.h | 55 ++++++++++ examples/file-transfer/ft-receiver-handler.cpp | 111 +++++++++++++++++++ examples/file-transfer/ft-receiver-handler.h | 66 ++++++++++++ examples/file-transfer/ft-receiver.cpp | 144 +++++++++++++++++++++++++ examples/file-transfer/ft-receiver.h | 60 +++++++++++ 7 files changed, 552 insertions(+), 2 deletions(-) commit 3d67dd328cab5711a549bc01c377cb4f59f6e395 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 21 18:46:28 2011 -0300 file-transfer example: Remove outdated examples. examples/file-transfer/CMakeLists.txt | 14 +- examples/file-transfer/receiver-channel.cpp | 102 --------- examples/file-transfer/receiver-channel.h | 63 ------ examples/file-transfer/receiver.cpp | 179 --------------- examples/file-transfer/receiver.h | 62 ------ examples/file-transfer/sender.cpp | 333 ---------------------------- examples/file-transfer/sender.h | 81 ------- 7 files changed, 4 insertions(+), 830 deletions(-) commit 2fe00c9425cfc4c5aa366dc120b3020f919f30bd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 18:33:33 2011 -0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 9d5ec7c961ee02680f2ec08c0fc07ed0c0aba98a Merge: 58f494d 4e646bc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 18:31:41 2011 -0300 Merge branch 'feature-checks' Reviewed-by: Olli Salli (oggis) commit 58f494d6870afd6eb93e1553511e10e3f61b4bd8 Author: Olli Salli Date: Thu Sep 22 17:40:08 2011 +0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 72f2fc0004725e13400290e422f4fa921ed18aee Merge: eedcede 543b2de Author: Olli Salli Date: Thu Sep 22 17:38:08 2011 +0300 Merge branch 'tls' Reviewed-by: Olli Salli (oggis) Reviewed-by: Andre Magalhaes (andrunko) commit 543b2de3ecf6cfb87089d972d41be69f21ae23a0 Author: Olli Salli Date: Thu Sep 22 17:13:55 2011 +0300 Make the TLSCert iface build by allowing using arrays of as, ay and av in spec generated stuff tools/libqt4codegen.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 19157cf85b59fbd4e906524dffb83575acde2ca4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 22 10:45:02 2011 -0300 Add AuthenticationTLSCertificate interface to autogen. TelepathyQt4/AuthenticationTLSCertificateInterface | 13 +++++++++ TelepathyQt4/CMakeLists.txt | 8 +++++- TelepathyQt4/stable-interfaces.xml | 1 + TelepathyQt4/tls-certificate.cpp | 26 ++++++++++++++++++ TelepathyQt4/tls-certificate.h | 31 ++++++++++++++++++++++ TelepathyQt4/tls-certificate.xml | 9 +++++++ 6 files changed, 87 insertions(+), 1 deletion(-) commit 4e646bc79f900df55330bc67a08256ee63c91b01 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 21 18:37:55 2011 -0300 Connection: Properly check if FeatureCore is ready. When calling ReadyObject::isReady() without arguments the core feature passed to the ReadyObject constructor is implicitly added to the list of features being checked. Thus for connection subclasses when calling connectionObject->isReady(), what is being checked is whether the core feature of the subclass is ready, not Connection::FeatureCore, thus explicitly passing Connection::FeatureCore when checking if this specific feature is ready is needed. TelepathyQt4/connection.cpp | 8 ++++---- TelepathyQt4/pending-channel.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) commit 4b4450144d7f1cd1b6901b8e672629ad6bd50f7c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 21 18:36:48 2011 -0300 Account: Properly check if FeatureCore is ready. When calling ReadyObject::isReady() without arguments the core feature passed to the ReadyObject constructor is implicitly added to the list of features being checked. Thus for account subclasses when calling accountObject->isReady(), what is being checked is whether the core feature of the subclass is ready, not Account::FeatureCore, thus explicitly passing Account::FeatureCore when checking if this specific feature is ready is needed. TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6698a764abb0f44926c8fb34cab0706d73cb8766 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 21 17:29:56 2011 -0300 Channel: Properly check if FeatureCore is ready. When calling ReadyObject::isReady() without arguments the core feature passed to the ReadyObject constructor is implicitly added to the list of features being checked. Thus for channel subclasses when calling channelObject->isReady(), what is being checked is whether the core feature of the subclass is ready, not Channel::FeatureCore, thus explicitly passing Channel::FeatureCore when checking if this specific feature is ready is needed. TelepathyQt4/channel.cpp | 80 ++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) commit eedcede4edc7d95bab3f0bee84298cfb31ba950a Merge: 8a56e5c d5faf15 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 16:39:20 2011 +0100 Merge branch 'account-tests' Reviewed-by: Olli Salli (oggis) commit d5faf15f432d211de063840d8eac9fa06870df31 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 16:33:30 2011 +0100 profile test: Properly check the presences count now that test-profile.profile was updated. tests/profile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 494cd36ff36c3b94bc34f9b1e4927cc8668216c9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 16:22:39 2011 +0100 Account: Fix doc referring to non-existing setCurrentPresence(). TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit de256310fc77d4e9296f23896289100a1c4f7bf8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 12 15:46:53 2011 +0100 account-basics test: Properly test allowedPresenceStatuses(). tests/dbus/account-basics.cpp | 81 ++++++++++++++------------- tests/telepathy/managers/spurious.manager | 5 ++ tests/telepathy/profiles/test-profile.profile | 3 +- 3 files changed, 49 insertions(+), 40 deletions(-) commit f9f18db179b14591f720e9c461e3ae46b9b75026 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 12 15:46:10 2011 +0100 Account: Fixed typo in allowedPresenceStatuses() docs. TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d845b58d7d7e716afed057d5bc06d8365f42e0e9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 12 15:06:02 2011 +0100 PresenceSpec: Add operator<. TelepathyQt4/presence.cpp | 13 +++++++++++++ TelepathyQt4/presence.h | 1 + 2 files changed, 14 insertions(+) commit cee857dc4041cf6d2d6f6e24849c223e1a34f590 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 02:52:01 2011 -0300 account-basics test: Test that ProtocolInfo does not report bogus parameters. tests/dbus/account-basics.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 092cc35dc6f4f970eb7c212c097d34b9f50038f1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 02:51:33 2011 -0300 account-basics test: Properly test Account::allowedPresenceStatuses(). tests/dbus/account-basics.cpp | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) commit ef92b859866322bde0bab572e8fd73306c160006 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 02:41:43 2011 -0300 account-basics test: Use QVERIFY instead of QCOMPARE for boolean expressions. tests/dbus/account-basics.cpp | 170 +++++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 85 deletions(-) commit 0ce35ef94d374cde1e29793e4b333438fe513e31 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 02:30:01 2011 -0300 account-basics test: Simplify how property related tests are written. tests/dbus/account-basics.cpp | 81 +++++++++---------------------------------- 1 file changed, 17 insertions(+), 64 deletions(-) commit 28d22e1ac616b884a70b23223cba823655134c2d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:47:02 2011 -0300 account-basics test: Add more tests for Account::allowedPresenceStatuses(). tests/dbus/account-basics.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit 1a89f937c59094eae5ca380ed7618787caa07dce Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:45:48 2011 -0300 account-basics test: Test that changing the service name will also update the icon name. tests/dbus/account-basics.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 27bdece0f35adb854f61af45c66023b1bb05541a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:44:12 2011 -0300 account-basics test: Add tests for Account.Automatic/Requested/CurrentPresence. tests/dbus/account-basics.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) commit 9e3aaca341a16cb54abd03bdfc2f951d116bc5c3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:42:25 2011 -0300 account-basics test: Add test for Account.ConnectsAutomatically. tests/dbus/account-basics.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 33b839dcc3f8e0edfecf3a4a7fd6ad00d38cf45b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:40:44 2011 -0300 account-basics test: Add test for Account.Parameters. tests/dbus/account-basics.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) commit 1fad5e0f46985924eca22bcd6b6eefa87dac9db5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:37:22 2011 -0300 account-basics test: Add test for Account.Nickname. tests/dbus/account-basics.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 49e789fa9f87ed27e410c120c8a0bcf16672ccbb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:35:05 2011 -0300 account-basics test: Add test for Account.DisplayName. tests/dbus/account-basics.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 2951ee85cbfd2159d806c77700b75d5b7e8e5049 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:32:33 2011 -0300 account-basics test: Add more tests to Account::protocolInfo(). tests/dbus/account-basics.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit fa03ee6ed0e3a8b46146499ff07359b70fa2318c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:30:23 2011 -0300 account-basics test: Group profile tests together. tests/dbus/account-basics.cpp | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) commit fe1c95e4ed4dacacad1e40b223f1f6c6a696136c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:23:13 2011 -0300 account-basics test: Add more tests for initial state download. tests/dbus/account-basics.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) commit 1b11e30c620deccd4cf4821f77947a19b21ab67b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:21:46 2011 -0300 account-basics test: Check that accounts advertised by the AM have the factory features ready. tests/dbus/account-basics.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 48076a4b797a4551af3dd16dee428041a1ab8f49 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 03:15:41 2011 -0300 account-basics test: Use macro to test properties. tests/dbus/account-basics.cpp | 244 +++++++++++++----------------------------- 1 file changed, 75 insertions(+), 169 deletions(-) commit 09724354508d7ec245cb8f2a8dfe98471fe7d850 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 02:55:58 2011 -0300 account-basics test: Add test for AccountManager::accountForPaths(). tests/dbus/account-basics.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 0f32b45ec0da88e1736e9b0b51d12237b4246779 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 02:49:08 2011 -0300 account-basics test: Move test for AccountManager::interfaces(). tests/dbus/account-basics.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 797800c7fe40f5a51fc2009aac6a47c956e75c13 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 02:48:12 2011 -0300 account-basics test: Add test for AccountManager::supportedAccountProperties(). tests/dbus/account-basics.cpp | 2 ++ 1 file changed, 2 insertions(+) commit fea3fe14bb68ef8467deeaa4467a3b670cb963b0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 02:34:43 2011 -0300 account-basics test: Add macro to easily test properties. tests/dbus/account-basics.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) commit 15a47ca31f79a49fe4b994c08ae2da8803ee0865 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 02:21:44 2011 -0300 account-basics test: Rename pathsForAccount[Set|List] to pathsForAccounts. tests/dbus/account-basics.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit ee0b7e33fd838ca96d9dc50f603ca80c3362428d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 02:15:25 2011 -0300 account-basics test: Remove AccountSet specific tests in favour of account-set test. tests/dbus/account-basics.cpp | 162 ------------------------------------------ 1 file changed, 162 deletions(-) commit cb653f35762f0991ae4ea5c632524cb1a0840262 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 01:56:34 2011 -0300 account-channel-dispatcher test: Improve test coverage. All Account::ensure/create* methods are now tested with and without passing hints. Relevant methods receiving a ContactPtr as param are now also tested. tests/dbus/account-channel-dispatcher.cpp | 175 +++++++++++++++++++++++++----- 1 file changed, 147 insertions(+), 28 deletions(-) commit 4f2734e3cfc4fbb51df38430601697697bd7e7f8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 5 01:50:24 2011 -0300 account-channel-dispatcher test: Use TestConnHelper. tests/dbus/account-channel-dispatcher.cpp | 161 ++++++++++-------------------- 1 file changed, 50 insertions(+), 111 deletions(-) commit 73a7481a5868befcb4d0aecdde12e6e18675029c Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:55:20 2011 -0300 test-profile.profile: Allow presences to have status message. tests/telepathy/profiles/test-profile.profile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit fb2fc06e19b990fc437cb2bc8a19189fe60ef349 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:54:43 2011 -0300 account-manager.py: Fake putting account online/offline when setting requested presence. tests/dbus/account-basics.cpp | 14 +------ tests/lib/python/account-manager.py | 73 +++++++++++++++++++++++++++++++++---- 2 files changed, 68 insertions(+), 19 deletions(-) commit 6771f374316201f0d51f198c5b8a1a5c4edb3e14 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:50:27 2011 -0300 account-manager.py: Set non empty AM.SupportedAccountProperties. tests/lib/python/account-manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 948452ac822b97bea11f46e88576a38494857708 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:37:02 2011 -0300 account-manager.py: Add HasBeenOnline support (always false for now). tests/lib/python/account-manager.py | 2 ++ 1 file changed, 2 insertions(+) commit bbb62f08a34f0148e653d77ba5dfb8453d008403 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:33:18 2011 -0300 account-manager.py: Group presence related properties together. tests/lib/python/account-manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c3197e720aea71ad7806652cc6c64080040be008 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:25:56 2011 -0300 account-manager.py: Default to Account.ConnectionAutomatically=false. tests/lib/python/account-manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2463fb1f6984325da8d937168833d00750e6183b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:12:14 2011 -0300 account-manager.py: Make default service name empty, so we can check fallback code. tests/dbus/account-basics.cpp | 3 +-- tests/lib/python/account-manager.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) commit d285149c3f1e62213eea8f6aae768f8424604577 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:11:17 2011 -0300 account-manager.py: Only remove account from D-Bus after emitting Account.Removed. tests/lib/python/account-manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 22a103aae748cdc116435d9f8bfb0d4c2382afc4 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:19:37 2011 -0300 account-set test: Add specific test for AccountSet. tests/dbus/CMakeLists.txt | 3 +- tests/dbus/account-set.cpp | 416 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 418 insertions(+), 1 deletion(-) commit edca63ba593bf7426cf5122f94391a54cc689e4b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:22:05 2011 -0300 Account: Properly check if profile is invalid before using it. TelepathyQt4/account.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) commit 71c116a8f8d05e7cf32fc7106554f32dae87f7f1 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:21:43 2011 -0300 Account: Add warning for using profile() without FeatureProfile enabled. TelepathyQt4/account.cpp | 1 + 1 file changed, 1 insertion(+) commit 8a56e5cb48cdb67dd3f9b178003341855237a7b4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 14:13:56 2011 +0100 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 91f453c004e975ed8eb13846a4974048e5198600 Merge: 5e25dff 792704e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 14:09:46 2011 +0100 Merge branch 'cd-claim' Reviewed-by: Olli Salli (oggis) commit 5e25dffdf9150725e5ced0f13fb89bb17c85de05 Merge: a136da8 0e64d77 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 14:07:58 2011 +0100 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 0e64d77a5eec356e0b5e70326dc4c35f544fa5de Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:23:20 2011 -0300 PresenceSpec: Add operator==. TelepathyQt4/presence.cpp | 13 +++++++++++++ TelepathyQt4/presence.h | 1 + 2 files changed, 14 insertions(+) commit b6a16148901b39026ce1326dbd620e99132f035e Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 4 22:23:02 2011 -0300 Presence: Add operator==. TelepathyQt4/presence.cpp | 12 ++++++++++++ TelepathyQt4/presence.h | 1 + 2 files changed, 13 insertions(+) commit 792704e699a9a1e1256d2bb2cee8e88fbd04ccc4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 14 14:02:45 2011 +0100 client test: Fixed typo. tests/dbus/client.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit e267536c52cc781f228ba10577d46802a117d3c0 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 11 22:40:25 2011 -0300 client test: Check that trying to register a client with an already existing name and using a different object fails. tests/dbus/client.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit 8868f769a0d57556e09d788633ae7ad66bbf3119 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 11 22:39:08 2011 -0300 client test: Check that CDO::claim(handler) properly populates HandledChannels. tests/dbus/client.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) commit 4966db21d0ad9c5334ce7e488ee89350b077c297 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 11 22:36:55 2011 -0300 ChannelDispatchOperation: Add debug messages for claim(). TelepathyQt4/channel-dispatch-operation.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 9c7bd88d564107a648846208e77e013ddbd12b89 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Sep 11 22:36:01 2011 -0300 AbstractClient: Add API/ABI FIXME. TelepathyQt4/abstract-client.h | 1 + 1 file changed, 1 insertion(+) commit 8bcfcaaf09bac5026170f8fc6fdc4d2104be268f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 13:38:25 2011 -0300 AbstractClient: Remove isApprover/ObserverRegistered and renamed isHandlerRegistered to isRegistered. TelepathyQt4/abstract-client.cpp | 42 +++-------------------------- TelepathyQt4/abstract-client.h | 16 ++--------- TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/client-registrar.cpp | 24 ++--------------- tests/dbus/client.cpp | 16 +++-------- 5 files changed, 13 insertions(+), 87 deletions(-) commit 9db452d88fdb10c61404271575ca80758fd7de50 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 01:27:19 2011 -0300 client test: Test accessors to check whether the client is registered. tests/dbus/client.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit 979cab84ef20074e7c12cff31ecc5880953b4eaa Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 01:23:01 2011 -0300 ChannelDispatchOperation: Fail if the handler passed to claim() is unregistered. TelepathyQt4/channel-dispatch-operation.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 6ec5349093d2da482a3896e4b8035e384cd0077a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 01:22:27 2011 -0300 ClientRegistrar: Properly update client registration info on register/unregisterClient. TelepathyQt4/client-registrar.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit eedd709108203c7d288a1473dc24328013e1b5d3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 9 01:21:35 2011 -0300 AbstractClient*: Add API to check whether the client is registered. TelepathyQt4/abstract-client.cpp | 76 ++++++++++++++++++++++++++++++++++++---- TelepathyQt4/abstract-client.h | 19 ++++++++++ 2 files changed, 88 insertions(+), 7 deletions(-) commit 0a3c573eb9ddf0357d42b72adcaad39a8d1e6a9f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 6 13:36:01 2011 -0300 ChannelDispatchOperation: Use PendingVoid on claim(). TelepathyQt4/channel-dispatch-operation.cpp | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) commit 679d762c7aff6d94f1df58132955185017cfa735 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 6 13:31:51 2011 -0300 ChannelDispatchOperation: Do not close channels automatically on claim(). TelepathyQt4/channel-dispatch-operation.cpp | 11 ----------- 1 file changed, 11 deletions(-) commit 58311b45a58aefe47d28d7e5de6e5e3f52b38839 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 6 13:21:36 2011 -0300 ChannelDispatchOperation: Allow claim to be used by approvers to handle channels. Also change the current claim behaviour to close channels on deletion if they were not closed. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/channel-dispatch-operation-internal.h | 51 ++++++++++++++ TelepathyQt4/channel-dispatch-operation.cpp | 77 +++++++++++++++++++--- TelepathyQt4/channel-dispatch-operation.h | 4 ++ 4 files changed, 125 insertions(+), 8 deletions(-) commit 711e58ab12e26b83cbbbc6796dceb52c7d41960b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 6 13:21:03 2011 -0300 types.h: Add types for AbstractClientApprover/Handler/Observer. TelepathyQt4/types.h | 6 ++++++ 1 file changed, 6 insertions(+) commit a136da80e7510e1647cf04ed239c068564b03821 Merge: b71f896 d1ebdda Author: Olli Salli Date: Mon Sep 5 18:31:48 2011 +0300 Merge branch 'stube-fixes' Reviewed-by: Andre Magalhaes (andrunko) commit d1ebdda22415a15b1729b719b279d8392f568304 Author: Olli Salli Date: Mon Sep 5 18:31:10 2011 +0300 StreamTubeChannel: We don't need to be friends with Channel TelepathyQt4/stream-tube-channel.h | 2 -- 1 file changed, 2 deletions(-) commit b71f896be91e5dd360d9b281682c610fee18a5b6 Author: Olli Salli Date: Mon Sep 5 18:24:31 2011 +0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 685d5110b2a6aa3d24602681a8bb91d4fa46c704 Merge: e3d76e7 172f3ca Author: Olli Salli Date: Mon Sep 5 18:21:23 2011 +0300 Merge branch 'cclass-optimize' Reviewed-by: Andre Magalhaes (andrunko) commit 172f3ca7a57f1c9e9e50b98fa6e12e6a416c5a68 Author: Olli Salli Date: Sat Sep 3 12:10:41 2011 +0300 Further optimize ChannelClassSpec Test suite with coverage down to 2.51s TelepathyQt4/channel-class-spec.cpp | 44 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 21 deletions(-) commit 801fc5befed8bce20d22f8d68a2e622b95bc3232 Author: Olli Salli Date: Sat Sep 3 11:33:46 2011 +0300 Replace all-too-clever ChannelClassSpec::operator== with equivalent but faster impl Test suite (built with coverage enabled so a bit slow) 2.66sec -> 2.54sec TelepathyQt4/channel-class-spec.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 7f42b8ff4f1618166591e5118a2cca26f59b770f Author: Olli Salli Date: Thu Sep 1 20:00:36 2011 +0300 OSTC: Ensure connection events are not emitted for an invalidated tube TelepathyQt4/outgoing-stream-tube-channel.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 164d2a436cbd653046d0ef8f02884a4d8b47ec57 Author: Olli Salli Date: Sat Sep 3 20:02:02 2011 +0300 Make OSTC::connsFor{SrcAddrs,Creds} and contactsForConns() usable through synthesizing conn drops So one can recover the attributes of the connections TelepathyQt4/outgoing-stream-tube-channel.cpp | 53 ++++++++++++++++----------- TelepathyQt4/stream-tube-channel.cpp | 11 +++++- TelepathyQt4/stream-tube-channel.h | 1 + 3 files changed, 42 insertions(+), 23 deletions(-) commit 9372fa290b2fb15b919f412b34dab6127a73c3a4 Author: Olli Salli Date: Thu Sep 1 20:22:51 2011 +0300 StreamTubeChannel: Synthesize connection close events for connections remaining on closed tubes Closing a tube implies closing its connections, but this is rather confusing from an API user POV, so we synthesize an explicit event. TelepathyQt4/channel.cpp | 1 + TelepathyQt4/constants.h | 4 +++- TelepathyQt4/stream-tube-channel.cpp | 17 +++++++++++++++++ TelepathyQt4/stream-tube-channel.h | 3 +++ 4 files changed, 24 insertions(+), 1 deletion(-) commit 57104084a82ba57709ae8879996254d8223bf13c Author: Olli Salli Date: Wed Aug 24 14:37:58 2011 +0300 OutgoingStreamTubeChannel: Fix connectionClosed event ordering to be consistent with newConnection() .../outgoing-stream-tube-channel-internal.h | 10 +++ TelepathyQt4/outgoing-stream-tube-channel.cpp | 75 +++++++++++++--------- TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- 3 files changed, 55 insertions(+), 32 deletions(-) commit 9a1559d34241af456331068070d33780f9386d1f Author: Olli Salli Date: Tue Aug 23 22:55:08 2011 +0300 Stream tubes: Modify connections() in-place with protected accessors rather than replacing the list This makes the code nicer but also considerably faster (O(n) for n connections added instead of O(n^2) previously) Also fixes a bug, where outgoing tubes would only ever report one connection... sigh TelepathyQt4/incoming-stream-tube-channel.cpp | 7 +------ TelepathyQt4/outgoing-stream-tube-channel.cpp | 9 ++------- TelepathyQt4/stream-tube-channel.cpp | 26 ++++++++++++++++++++++++-- TelepathyQt4/stream-tube-channel.h | 5 ++++- 4 files changed, 31 insertions(+), 16 deletions(-) commit f3c4c75f97a0ac1f9a68607f9e8f0bd54fe478a0 Author: Olli Salli Date: Tue Aug 23 22:19:56 2011 +0300 Use the types-internal.h workaround for PendingStreamTubeConnection too It side-steps the incredibly naive QDBus demarshaller tripping into something slightly wrong given to it by the dbus-glib powered service side, crashing and burning. I'll have to move forward on fixing that QDBus bug though, it means every qdbus using app can be easily crashed by sending them something they don't exactly expect in variants. TelepathyQt4/pending-stream-tube-connection.cpp | 1 + 1 file changed, 1 insertion(+) commit bdca470654ef5b0150fb5bdc1905b063791b8901 Author: Olli Salli Date: Tue Aug 23 18:44:50 2011 +0300 TestStreamTubeChan: Test that newConnection() and connectionClosed() are properly ordered They aren't currently, on outgoing tubes! But that's to be fixed after taking care of something completely different for an hour or two... tests/dbus/stream-tube-chan.cpp | 71 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) commit e7dac56fc708a137c5670074f321af110c2efd6d Author: Olli Salli Date: Tue Aug 23 18:19:43 2011 +0300 OutgoingStreamTubeChannel: Make the parameters arg to the offer fns optional Most tube apps don't seem to use the parameters at all, so it doesn't seem useful to require passing them. To be clear: this is both API and ABI backwards compatible, as C++ optional arguments are a compile time feature and we're just adding possibilities here. TelepathyQt4/outgoing-stream-tube-channel.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) commit fe6645e6cfc371fcb0511d778b63de68f9e23eee Author: Olli Salli Date: Tue Aug 23 13:03:29 2011 +0300 StreamTubeChannel: Remove connections from connections() when they are removed (duh) This makes the tests pass again, but there are still bugs with possible event reordering in corner cases with OutgoingStreamTubeChannel TelepathyQt4/outgoing-stream-tube-channel.cpp | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.h | 4 ++-- TelepathyQt4/stream-tube-channel.cpp | 17 +++++++++++++---- TelepathyQt4/stream-tube-channel.h | 2 ++ 4 files changed, 19 insertions(+), 8 deletions(-) commit b54498794c0d7c180257055d67857f67bcaffdfb Author: Olli Salli Date: Tue Aug 23 12:30:11 2011 +0300 TestStreamTubeChan: Verify that connections() is updated correctly It currently isn't on removals!! tests/dbus/stream-tube-chan.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit e3d76e7d21d2ddabc9995d8eff15def372e62c9b Author: Olli Salli Date: Sat Sep 3 20:59:00 2011 +0300 Update NEWS NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 734d03b7be1d3d4059f286fe3da5306cf9182f42 Merge: 9dda602 b01ac74 Author: Olli Salli Date: Sat Sep 3 20:56:26 2011 +0300 Merge branch 'stube-cclasses' Reviewed-by: Andre Magalhaes (andrunko) commit b01ac74acc288832dd47b344bd50e92ba8e103e4 Author: Olli Salli Date: Fri Aug 26 14:57:24 2011 +0300 ChannelClassSpec: Fix the tube service property leaking through the singleton instance Comes with a test! TelepathyQt4/channel-class-spec.cpp | 36 ++++++++++++++++++++---------------- tests/channel-class-spec.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 16 deletions(-) commit eca44296b9483bc31ade078d46224ce18fdd3c86 Author: Olli Salli Date: Wed Aug 24 18:02:58 2011 +0300 ChannelFactory: Add room stream tubes TelepathyQt4/channel-factory.cpp | 48 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-factory.h | 32 +++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) commit ce6b6461357859909b55c8111de5bb86cc5888a1 Author: Olli Salli Date: Wed Aug 24 17:40:27 2011 +0300 ChannelClassSpec: Add group stream tube classes TelepathyQt4/channel-class-spec.cpp | 44 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-class-spec.h | 4 ++++ 2 files changed, 48 insertions(+) commit 9dda60285c07cdf8c358fe32c7840d252a074234 Author: Olli Salli Date: Sat Sep 3 19:11:11 2011 +0300 Update NEWS NEWS | 6 ++++++ 1 file changed, 6 insertions(+) commit 2b0dd4ab5d3d41ed352c0c1a8df7e564318dd3c4 Merge: 77556e2 ccb0e1f Author: Olli Salli Date: Sat Sep 3 19:07:24 2011 +0300 Merge branch 'misc-fixes' Reviewed-by: Andre Magalhaes (andrunko) commit ccb0e1f8895bbbf1c5c4359eab9183d2c72600f0 Author: Olli Salli Date: Sat Sep 3 18:30:51 2011 +0300 Deprecate external usage of PendingOperation::object() The object() mechanism's sole purpose should be to keep the necessary parent object hierarchy alive, and for the operation's internal code to have access to it. It's not suitable for public use, because: We don't guarantee which object is actually returned in any case, and even if we did, it would require awkward type conversions AND checking their results to safely use the accessor for accessing the object. TelepathyQt4/channel.cpp | 6 +++--- TelepathyQt4/contact-manager-roster.cpp | 2 +- TelepathyQt4/pending-account.cpp | 2 +- TelepathyQt4/pending-channel-request.cpp | 4 ++-- TelepathyQt4/pending-connection.cpp | 2 +- TelepathyQt4/pending-contact-attributes.cpp | 2 +- TelepathyQt4/pending-contact-info.cpp | 2 +- TelepathyQt4/pending-handles.cpp | 2 +- TelepathyQt4/pending-operation.cpp | 10 ++++++++++ TelepathyQt4/pending-operation.h | 3 ++- TelepathyQt4/pending-ready.cpp | 2 +- TelepathyQt4/pending-send-message.cpp | 4 ++-- TelepathyQt4/streamed-media-channel.cpp | 2 +- 13 files changed, 27 insertions(+), 16 deletions(-) commit 815cfc5a1ddee91d862650951d5bce16c94f86a2 Author: Olli Salli Date: Thu Sep 1 20:04:08 2011 +0300 PendingContacts: Use the connection as the parent, not the contact manager This is to avoid crashes I've seen occasionally in corner cases when developing tests, resulting from the PendingContacts using the connection during some of the async contact build steps, but the manager and thus the operation only having a weak pointer to it, and the conn being destroyed before those steps. Making the connection the parent keeps it alive for all of the steps and because the conn holds a strong ref to the manager, it's kept alive at least as long as before as well. TelepathyQt4/pending-contacts.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 77556e2504cb497281e085446209f44ecd75cf55 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 30 12:47:02 2011 -0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit a0b1488fc482330c9dd7ebf884cb0daeef3f7dac Merge: c62125b 3808e47 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 30 12:46:13 2011 -0300 Merge branch 'ensure-channel-hints-fix' Reviewed-by: Olli Salli (oggis) commit 3808e472fcf18c7d8735c0e85afed6a5e0d6a5c0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 29 18:45:35 2011 -0300 account-channel-dispatcher test: Check that the proper CD methods are being called when creating/ensuring channels. tests/dbus/account-channel-dispatcher.cpp | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit 2240b6614cd07b1778176f4b06669a99d080d6ce Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 29 16:57:42 2011 -0300 PendingChannelRequest: Properly call EnsureChannelWithHints when requested. TelepathyQt4/pending-channel-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c62125bead89ed6ec0114a545ec25cf18061ba3a Author: Olli Salli Date: Thu Aug 4 21:09:23 2011 +0300 Start 0.7.3 dev CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 226ffde7e1846b05455d48afd0466bf1e410edcf Author: Olli Salli Date: Thu Aug 4 20:45:08 2011 +0300 Prepare release 0.7.2 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit cebf6276be66cef2494e9c3d80a3ccf4e820d1da Author: Olli Salli Date: Thu Aug 4 19:57:28 2011 +0300 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit 8eddbd39b041fec1a5f972ca24c22109bb7c9980 Merge: b560b36 7b56111 Author: Olli Salli Date: Thu Aug 4 19:56:09 2011 +0300 Merge branch 'stable-ifaces' commit b560b367cb958abf1c93c67b6d3f93e07ecada91 Merge: 4944978 393a6c8 Author: Olli Salli Date: Thu Aug 4 19:49:26 2011 +0300 Merge branch 'gen-docs' Reviewed-by: Andre Magalhaes (andrunko) commit 393a6c8789c89fd38f039278867774767c1d4c80 Author: Olli Salli Date: Thu Aug 4 01:15:58 2011 +0300 codegen: Print out better warnings for unresolved member-ref/dbus-refs tools/libqt4codegen.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) commit 7b5611178830151a4551e0aa9f34c3dbeea25630 Author: Olli Salli Date: Thu Aug 4 00:55:50 2011 +0300 Add Chan.I.Destroyable to autogen TelepathyQt4/channel.xml | 1 + 1 file changed, 1 insertion(+) commit 9f0c74e923d013e7ced0333693ec7430e922b3a8 Author: Olli Salli Date: Thu Aug 4 00:55:41 2011 +0300 Add Chan.T.DBusTube to autogen TelepathyQt4/channel.xml | 1 + 1 file changed, 1 insertion(+) commit 16c40f0891df09e83808f5409e20997b3bba8d70 Author: Olli Salli Date: Thu Aug 4 00:51:18 2011 +0300 Add Acc.I.Storage to autogen TelepathyQt4/account.xml | 1 + 1 file changed, 1 insertion(+) commit 4cc0ec8878cfad61611edb9375e29c4f9eeacc69 Author: Olli Salli Date: Thu Aug 4 00:31:57 2011 +0300 Pretty-print both member-refs and dbus-refs perfectly in generated docs tools/libqt4codegen.py | 108 ++++++++++++++++++++++++++++++++++++--------- tools/qt4-client-gen.py | 24 +++++----- tools/qt4-constants-gen.py | 13 +++--- tools/qt4-types-gen.py | 9 ++-- 4 files changed, 112 insertions(+), 42 deletions(-) commit 7913ee057d5f2ecb6cd87513e6d0845f3e1cc36d Author: Olli Salli Date: Tue Aug 2 00:01:00 2011 +0300 Tidy up D-Bus method, property and signal names in generated proxy member brief descriptions tools/qt4-client-gen.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit dedcd8fedab6f3be8f17df361fb22f75aee653d6 Author: Olli Salli Date: Mon Aug 1 23:54:02 2011 +0300 Make tp:member-refs in generated docs link properly to the members tools/libqt4codegen.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit a6f2171113a942fbd40086eafaf9ffb7667f82f9 Author: Olli Salli Date: Mon Aug 1 23:39:05 2011 +0300 format_docstring: Escape backslashes in full tp:docstring XML subtree, not after toxml() This allows us to insert doxygen commands to the subtree. Previously, their leading '\' would be converted to '\\' as well. tools/libqt4codegen.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) commit 9f15eb70bc4eac47639ee54a54c82dff51fd7d42 Author: Olli Salli Date: Mon Aug 1 22:50:14 2011 +0300 Use a single
for s in generated docs, and style it fully in CSS This allows easily including similar
sections in hand-written docs too and achieve an identical look. doxygen.css | 11 +++++++++++ tools/libqt4codegen.py | 21 ++++----------------- 2 files changed, 15 insertions(+), 17 deletions(-) commit ba81f24931ddd2ae483c0cd09c1cbf7658709c65 Author: Olli Salli Date: Mon Aug 1 22:49:25 2011 +0300 Surround XHTML docstrings with \htmlonly \endhtmlonly This allows more complex HTML to be not mutilated by Doxygen. In particular the rationale divs generated by the next commit. tools/libqt4codegen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4944978e8c7b624bac0ef582efd5f23862afed55 Author: Olli Salli Date: Mon Aug 1 16:27:02 2011 +0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit d332146b186e3946ac3bad59d24920ca821fc012 Author: Olli Salli Date: Mon Aug 1 16:25:25 2011 +0300 Update NEWS NEWS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 69c98d276e47b4dcf74096138dd786f78977ada4 Merge: df57c66 97f8570 Author: Olli Salli Date: Mon Aug 1 16:22:06 2011 +0300 Merge branch 'docs' Reviewed-by: Andre Magalhaes (andrunko) Reviewed-by: Olli Salli (oggis) commit 97f85708ba7d2b717b0d57ab9605abfc69e768f8 Author: Olli Salli Date: Mon Aug 1 16:10:49 2011 +0300 TubeChannel: clean up docs TelepathyQt4/tube-channel.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) commit 81260ef597e0642129eea956c8fdeb3aa31491bb Author: Olli Salli Date: Mon Aug 1 16:04:16 2011 +0300 OutgoingStreamTubeChannel: further improve docs TelepathyQt4/outgoing-stream-tube-channel.cpp | 150 ++++++++++++-------------- 1 file changed, 67 insertions(+), 83 deletions(-) commit b75081457bff1282e1340ff675c188e2246bd505 Author: Olli Salli Date: Mon Aug 1 13:40:10 2011 +0300 IncomingStreamTubeChannel: Further improve docs TelepathyQt4/incoming-stream-tube-channel.cpp | 61 ++++++++++++++++++--------- 1 file changed, 40 insertions(+), 21 deletions(-) commit dee2f327acadd6b1db8d20ed51bcacdf6f920a5a Author: Olli Salli Date: Wed Jul 27 13:50:44 2011 +0300 StreamTubeChannel: Further improve docs TelepathyQt4/stream-tube-channel.cpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) commit 28b7f7e8f7be84fcc01936d6c043f60516773f70 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:20 2011 -0300 PendingVariant: Update docs. TelepathyQt4/pending-variant.cpp | 2 ++ 1 file changed, 2 insertions(+) commit ce06c8bd40228e5fe0b382bd44109fff42accc63 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:20 2011 -0300 PendingVariantMap: Update docs. TelepathyQt4/pending-variant-map.cpp | 2 ++ 1 file changed, 2 insertions(+) commit e9f78fcddc6084030aa07724dc8cc315c79b1811 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingStringList: Update docs. TelepathyQt4/pending-string-list.cpp | 2 ++ 1 file changed, 2 insertions(+) commit e88a4b2236e98be56514ab4c76afdd1e5ce618f7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:10:28 2011 -0300 PendingStreamTubeConnection: Update docs. TelepathyQt4/pending-stream-tube-connection.cpp | 26 +++++++++++-------------- 1 file changed, 11 insertions(+), 15 deletions(-) commit 897f4c2b4e7f3c074141de18b1f46d75ccddfa42 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingSendMessage: Update docs. TelepathyQt4/pending-send-message.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 2498938860342e21965a920ad9e7b0f0c5693b50 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingReady: Update docs. TelepathyQt4/pending-ready.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) commit ac37af47245d11ebb8138ba535558c6c25d53690 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingOperation: Update docs. TelepathyQt4/pending-operation.cpp | 71 +++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 31 deletions(-) commit 9e17ea8c371a1c3768fcbf53ba6d429a23a5bedb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingHandles: Update docs. TelepathyQt4/pending-handles.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit 4896332bc1b6260b0c568650703e677c6e79d372 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingContacts: Update docs. TelepathyQt4/pending-contacts.cpp | 2 ++ 1 file changed, 2 insertions(+) commit f668270851b608818a615be416d53a7c9a140798 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingContactInfo: Update docs. TelepathyQt4/pending-contact-info.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 23c2d334edb6ceaad7242c1862277ff7c8d1dfe4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingContactAttributes: Update docs. TelepathyQt4/pending-contact-attributes.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit f2519dde16bd7b3020674390796dcb7e7a3a3970 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingConnection: Update docs. TelepathyQt4/pending-connection.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit 93226dca6c39cd96693b3aa412f796d704892941 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingChannel: Update docs. TelepathyQt4/pending-channel.cpp | 45 +++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 26 deletions(-) commit 2ebeefefefe183bf0fb962816d8c5782a37901a7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingChannelRequest: Update docs. TelepathyQt4/pending-channel-request.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit aa4f9b0874bde2583fe458c6d30804dc475e8225 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:51:19 2011 -0300 PendingAccount: Update docs. TelepathyQt4/pending-account.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit 48848dd11d2718b7b63dcaf8daa71b567ae159b8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:11:14 2011 -0300 TextChannel: Update docs. TelepathyQt4/text-channel.cpp | 101 +++++++++++++++++++++++++++++++++--------- 1 file changed, 81 insertions(+), 20 deletions(-) commit 10175104a4c5397beb7157df3c59b7813b63072b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:10:47 2011 -0300 StreamedMediaChannel: Update docs. TelepathyQt4/streamed-media-channel.cpp | 68 ++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 31 deletions(-) commit 037e59e969a1a44ec90528b4091e8a99c1fe84c3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:54:38 2011 -0300 RoomListChannel: Update docs. TelepathyQt4/room-list-channel.cpp | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) commit d86b28efa9210af249b52ac79a2ac7dcd50c4134 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:10:10 2011 -0300 OutgoingFileTransferChannel: Update docs. TelepathyQt4/outgoing-file-transfer-channel.cpp | 35 +++++++++++++++---------- 1 file changed, 21 insertions(+), 14 deletions(-) commit 3bcf55f191820595f541acec059d44a30474875b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:09:48 2011 -0300 Message: Update docs. TelepathyQt4/message.cpp | 64 +++++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 22 deletions(-) commit cc8035b5e9e9ee71e8ef06aafb5488c96d2a9f88 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:09:32 2011 -0300 IncomingFileTransferChannel: Move signals docs to the bottom of the class implementation. TelepathyQt4/incoming-file-transfer-channel.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) commit 54a09b51ec3dc2a3f20beb81d72da17fe87f7301 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:09:18 2011 -0300 IncomingFileTransferChannel: Update docs. TelepathyQt4/incoming-file-transfer-channel.cpp | 39 +++++++++++++++---------- 1 file changed, 24 insertions(+), 15 deletions(-) commit 9bbc07a6c114896d8020a017dc4178dcdc045412 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:08:39 2011 -0300 FileTransferChannel: Move signals docs to the bottom of the class implementation. TelepathyQt4/file-transfer-channel.cpp | 60 +++++++++++++++++----------------- 1 file changed, 30 insertions(+), 30 deletions(-) commit 36611b05174c925be683469b5e21df88b423f4ef Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:08:27 2011 -0300 FileTransferChannel: Update docs. TelepathyQt4/file-transfer-channel.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) commit d19fdeeeb352c1879b8d99e64709d8fa14846bd9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:52:53 2011 -0300 DBusProxyFactory: Update docs. TelepathyQt4/dbus-proxy-factory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 45fd75c7570cc6bdb98b050ee56260b4eba2a132 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:07:56 2011 -0300 DBusProxy: Move signals docs to the bottom of the class implementation. TelepathyQt4/dbus-proxy.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) commit 683cbfb7cede1515d4dad63081b50cf1d370cbef Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:07:43 2011 -0300 DBusProxy: Update docs. TelepathyQt4/dbus-proxy.cpp | 82 +++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 29 deletions(-) commit 8eafc051007ca91cf0c85ce5c6dd2eab0e5e7b2f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:05:50 2011 -0300 ContactSearchChannel: Move signals docs to the bottom of the class implementation. TelepathyQt4/contact-search-channel.cpp | 50 ++++++++++++++++----------------- 1 file changed, 25 insertions(+), 25 deletions(-) commit 7154badc6f5dc703420e663da8b5b8299979a545 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:05:38 2011 -0300 ContactSearchChannel: Update docs. TelepathyQt4/contact-search-channel.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit 58b29279d139d9b27f4f0b65696f79c0b86dee18 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:17:10 2011 -0300 ContactManager: Update docs. TelepathyQt4/contact-manager.cpp | 351 +++++++++++++++++++++++++-------------- 1 file changed, 223 insertions(+), 128 deletions(-) commit a8bf4070767651a30e27d77d526eb5e78bbecbf4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:06:07 2011 -0300 Contact: Update docs. TelepathyQt4/contact.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) commit aacc4b1f44101ef3eb7cf269dee683d7c8339ee2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:04:58 2011 -0300 ConnectionManager: Update docs. TelepathyQt4/connection-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e52ac4c6c855ac35b62d0885b191a749b0ed5047 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:49:39 2011 -0300 ConnectionFactory: Update docs. TelepathyQt4/connection-factory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9e01ba49b11274932414a7b62a1a70646365d45d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:05:10 2011 -0300 Connection: Update docs. TelepathyQt4/connection.cpp | 2 -- 1 file changed, 2 deletions(-) commit 77e3f86f6293cd33f6816917649f9a2811ac2d9b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:04:45 2011 -0300 ClientRegistrar: Update docs. TelepathyQt4/client-registrar.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 9514dbbaa4d5c794783f8860322503150bc23259 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:04:10 2011 -0300 ChannelRequest: Move signals docs to the bottom of the class implementation. TelepathyQt4/channel-request.cpp | 72 ++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) commit f43bb4c889351c5c59fd8152439f179eb6fb82d5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:04:00 2011 -0300 ChannelRequest: Update docs. TelepathyQt4/channel-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fbb2056ba8d873de5e453ac23c0198eee0e45d98 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:03:38 2011 -0300 ChannelDispatchOperation: Update docs. TelepathyQt4/channel-dispatch-operation.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 58f893b57b31f46c4297d02d59a7730f6bbbee79 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:45:34 2011 -0300 ChannelFactory: Update docs. TelepathyQt4/channel-factory.cpp | 4 ++-- TelepathyQt4/channel-request.cpp | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) commit 5d172f4aba1d42d8925ec01684aad233a06055b1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:49:02 2011 -0300 Channel: Update docs. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9293ab05cf501a06fddbfaa0f3acd00dc59d61cd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:42:07 2011 -0300 AccountSet: Update docs. TelepathyQt4/account-set.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 49644b84f34364ccd304d57f2d6239cfe1c83305 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:42:21 2011 -0300 AccountFactory: Update docs. TelepathyQt4/account-factory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5f662250203ea5dd478284aa2302779f5e693ea4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:03:20 2011 -0300 Account: Update docs. TelepathyQt4/account.cpp | 2 ++ 1 file changed, 2 insertions(+) commit f0f1bbb87709055d39fe992f8339e0be3f929b4a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 17:00:25 2011 -0300 Properly refer to 'ready' instead of 'enabled' when referring to features required. Also make sure the methods refer to the required features. TelepathyQt4/account-manager.cpp | 38 ++++++------- TelepathyQt4/account.cpp | 56 +++++++++--------- TelepathyQt4/channel-dispatch-operation.cpp | 8 +-- TelepathyQt4/channel.cpp | 76 ++++++++++++------------- TelepathyQt4/connection-manager.cpp | 8 +-- TelepathyQt4/connection.cpp | 18 +++--- TelepathyQt4/contact-search-channel.cpp | 12 ++-- TelepathyQt4/contact.cpp | 42 +++++++++----- TelepathyQt4/file-transfer-channel.cpp | 26 ++++----- TelepathyQt4/incoming-file-transfer-channel.cpp | 4 +- TelepathyQt4/incoming-stream-tube-channel.cpp | 6 +- TelepathyQt4/outgoing-file-transfer-channel.cpp | 2 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 14 ++--- TelepathyQt4/stream-tube-channel.cpp | 20 +++---- TelepathyQt4/streamed-media-channel.cpp | 26 ++++++--- TelepathyQt4/text-channel.cpp | 14 ++++- TelepathyQt4/tube-channel.cpp | 4 +- 17 files changed, 207 insertions(+), 167 deletions(-) commit 04bec4b6d57c46b0ab37b36f7cb80b927d8dc63b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:40:34 2011 -0300 Make signal docs consistent. TelepathyQt4/account-manager.cpp | 2 +- TelepathyQt4/account-set.cpp | 12 +++++--- TelepathyQt4/account.cpp | 42 +++++++++++++------------- TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/channel-request.cpp | 15 +++++---- TelepathyQt4/channel.cpp | 14 ++++----- TelepathyQt4/connection.cpp | 6 ++-- TelepathyQt4/contact-messenger.cpp | 4 +-- TelepathyQt4/contact-search-channel.cpp | 16 +++++----- TelepathyQt4/contact.cpp | 28 ++++++++--------- TelepathyQt4/dbus-proxy.cpp | 11 +++---- TelepathyQt4/file-transfer-channel.cpp | 18 +++++++---- TelepathyQt4/simple-call-observer.cpp | 4 +-- TelepathyQt4/simple-observer.cpp | 4 +-- TelepathyQt4/simple-text-observer.cpp | 4 +-- TelepathyQt4/streamed-media-channel.cpp | 47 +++++++++++++++++------------ 16 files changed, 122 insertions(+), 107 deletions(-) commit 550a4cc3e7fa263ae165f3d7ce5a8b0581f78972 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 16:19:31 2011 -0300 Properly document the form of the data returned. TelepathyQt4/abstract-client.cpp | 13 +- TelepathyQt4/account-factory.cpp | 5 +- TelepathyQt4/account-manager.cpp | 56 ++++----- TelepathyQt4/account-set.cpp | 7 +- TelepathyQt4/account.cpp | 72 ++++++----- TelepathyQt4/channel-dispatch-operation.cpp | 16 +-- TelepathyQt4/channel-factory.cpp | 4 +- TelepathyQt4/channel-request.cpp | 33 ++--- TelepathyQt4/channel.cpp | 89 +++++++------ TelepathyQt4/client-registrar.cpp | 28 ++--- TelepathyQt4/connection-factory.cpp | 5 +- TelepathyQt4/connection-manager.cpp | 6 +- TelepathyQt4/connection.cpp | 76 +++++------ TelepathyQt4/contact-messenger.cpp | 6 +- TelepathyQt4/contact-search-channel.cpp | 19 ++- TelepathyQt4/contact.cpp | 74 +++++------ TelepathyQt4/dbus-proxy-factory.cpp | 16 +-- TelepathyQt4/dbus-proxy.cpp | 29 ++--- TelepathyQt4/file-transfer-channel.cpp | 85 +++++++------ TelepathyQt4/incoming-file-transfer-channel.cpp | 10 +- TelepathyQt4/incoming-stream-tube-channel.cpp | 21 ++-- TelepathyQt4/message.cpp | 160 ++++++++++++++++++++---- TelepathyQt4/outgoing-stream-tube-channel.cpp | 26 ++-- TelepathyQt4/pending-account.cpp | 2 +- TelepathyQt4/pending-channel.cpp | 2 +- TelepathyQt4/pending-connection.cpp | 2 +- TelepathyQt4/pending-contact-attributes.cpp | 12 +- TelepathyQt4/pending-contact-info.cpp | 2 +- TelepathyQt4/pending-handles.cpp | 10 +- TelepathyQt4/pending-operation.cpp | 6 +- TelepathyQt4/pending-stream-tube-connection.cpp | 52 +++----- TelepathyQt4/simple-call-observer.cpp | 8 +- TelepathyQt4/simple-observer.cpp | 10 +- TelepathyQt4/simple-text-observer.cpp | 6 +- TelepathyQt4/stream-tube-channel.cpp | 58 ++++----- TelepathyQt4/streamed-media-channel.cpp | 77 +++++++----- TelepathyQt4/text-channel.cpp | 107 +++++++--------- TelepathyQt4/tube-channel.cpp | 4 +- 38 files changed, 656 insertions(+), 558 deletions(-) commit 4838df632ea79c0d9bc13cce3153888e17478dbb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 15:09:18 2011 -0300 Refer to TP_QT4 string constants in docs. TelepathyQt4/abstract-client.cpp | 8 ++++---- TelepathyQt4/account-factory.cpp | 4 ++-- TelepathyQt4/channel-dispatch-operation.cpp | 10 +++++----- TelepathyQt4/channel-request.cpp | 2 +- TelepathyQt4/contact-search-channel.cpp | 8 ++++---- TelepathyQt4/streamed-media-channel.cpp | 31 +++++++++++++++-------------- 6 files changed, 32 insertions(+), 31 deletions(-) commit 9e6cf2a65d2892fea70e8a41fe66bf960ee2ba6b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 14:49:50 2011 -0300 libqt4codegen: Generate
...
for spec rationales in the generated doc. tools/libqt4codegen.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) commit 930afad28d1a09fbd530268778860a61c8773fef Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 14:49:17 2011 -0300 doxygen.css: Add a new CSS style for div class rationale. doxygen.css | 6 ++++++ 1 file changed, 6 insertions(+) commit a13bc7d57ab38012f79035c8b681365df3b34040 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 14:48:51 2011 -0300 StreamedMediaStream: Add missing pretty header. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/StreamedMediaStream | 13 +++++++++++++ 2 files changed, 14 insertions(+) commit 7cc6348c9e3cc4a68eb98a37d71d23461eedf645 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 15 14:47:57 2011 -0300 PendingStreamedMediaStreams: Add missing pretty header. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/PendingStreamedMediaStreams | 13 +++++++++++++ 2 files changed, 14 insertions(+) commit df57c6660048adbe3bf3a555bf0b0366ff483925 Merge: a78c2ba 5b8e0b8 Author: Dario Freddi Date: Thu Jul 14 17:00:49 2011 +0200 Merge branch 'gkiagia/compilation-fix' Reviewed-by: Dario Freddi (drf) Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 5b8e0b854a6a8baea0f882c20defd507cf2076f9 Author: George Kiagiadakis Date: Thu Jul 14 17:51:27 2011 +0300 Do not FTBFS if doxygen is not installed. TelepathyQt4/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit a78c2bae5180dbffb463be76500262ec16a71fda Merge: 117a7b8 6d2a583 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 8 00:04:40 2011 -0300 Merge branch 'stubes' Reviewed-by: Olli Salli (oggis) commit 6d2a583571cad137e0799310d4414e2169baa265 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 15:11:49 2011 -0300 PendingStreamTubeConnection: Make sure the slot from accept is called even if the received op is already finished. TelepathyQt4/pending-stream-tube-connection.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit 73260b964a12e2cd114731484450b5783bbf6b8a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 14:06:34 2011 -0300 StreamTubeChannel: Update docs. TelepathyQt4/stream-tube-channel.cpp | 12 ------------ 1 file changed, 12 deletions(-) commit 453ce8735c2ca48161cb17af50e399c6e3c14e25 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 14:03:50 2011 -0300 PendingStreamTubeConnection: Improve debugs. TelepathyQt4/pending-stream-tube-connection.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) commit 41d85999e13a83591f210c8adb1ab54763986ade Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 13:59:26 2011 -0300 TubeChannel: Update signals docs. TelepathyQt4/tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c8c8fe6ad043c349a78fe6fab428f8c41188eef4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 13:59:16 2011 -0300 StreamTubeChannel: Update signals docs. TelepathyQt4/stream-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 19f84c5bbd21bf51baaa7e4060faae0793c963df Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 13:57:28 2011 -0300 IncomingStreamTubeChannel: Handle QHostAddress::AnyIPv6 on accept. TelepathyQt4/incoming-stream-tube-channel.cpp | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) commit b9a6254fe5aa8daa0289f5656a6730442edcf6a3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 7 13:56:08 2011 -0300 StreamTubeChannel: Remove virtual processConnectionClosed and use Qt::QueuedConnection instead. TelepathyQt4/outgoing-stream-tube-channel.cpp | 8 +++++--- TelepathyQt4/outgoing-stream-tube-channel.h | 5 ++--- TelepathyQt4/stream-tube-channel.cpp | 16 +--------------- TelepathyQt4/stream-tube-channel.h | 5 ----- tests/dbus/stream-tube-chan.cpp | 4 ++++ 5 files changed, 12 insertions(+), 26 deletions(-) commit 37ec643f030ff24c6b4732b7ec91de430f4ec6bc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 15:30:50 2011 -0300 TubeChannel: Add state/Changed and deprecated tubeState/Changed for consistency. TelepathyQt4/incoming-stream-tube-channel.cpp | 4 +-- TelepathyQt4/outgoing-stream-tube-channel.cpp | 16 +++++----- TelepathyQt4/pending-stream-tube-connection.cpp | 6 ++-- TelepathyQt4/stream-tube-channel.cpp | 12 ++++---- TelepathyQt4/tube-channel.cpp | 39 ++++++++++++++++++++----- TelepathyQt4/tube-channel.h | 9 ++++-- tests/dbus/stream-tube-chan.cpp | 24 +++++++-------- 7 files changed, 70 insertions(+), 40 deletions(-) commit 9e2c3cc6a740f537629ad0387ba92b896991a9da Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 15:00:30 2011 -0300 Incoming/OutgoingStreamTubeChannel: Add FeatureCore for consistency. TelepathyQt4/incoming-stream-tube-channel.cpp | 30 +++++++++++++++++-------- TelepathyQt4/incoming-stream-tube-channel.h | 4 +++- TelepathyQt4/outgoing-stream-tube-channel.cpp | 32 ++++++++++++++++++--------- TelepathyQt4/outgoing-stream-tube-channel.h | 4 +++- tests/dbus/stream-tube-chan.cpp | 24 ++++++++++---------- 5 files changed, 61 insertions(+), 33 deletions(-) commit 19527b4bead34c0b282713a8960e29ec32ea8288 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 14:47:27 2011 -0300 StreamTubeChannel: Add FeatureCore replacing FeatureTube ("deprecated") for consistency. TelepathyQt4/incoming-stream-tube-channel.cpp | 18 +++---- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 20 ++++---- TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- TelepathyQt4/stream-tube-channel.cpp | 73 ++++++++++++++------------- TelepathyQt4/stream-tube-channel.h | 4 +- tests/dbus/stream-tube-chan.cpp | 24 ++++----- 7 files changed, 75 insertions(+), 68 deletions(-) commit 1c0b0908e73f940ecb5f831ec64466b12f981e5e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 14:16:49 2011 -0300 TubeChannel: Add FeatureCore replacing FeatureTube ("deprecated") for consistency. TelepathyQt4/stream-tube-channel.cpp | 2 +- TelepathyQt4/tube-channel.cpp | 27 ++++++++++++++++----------- TelepathyQt4/tube-channel.h | 2 ++ 3 files changed, 19 insertions(+), 12 deletions(-) commit ff51394d139aff1c5d7c38a7c05fa3ae696dbe60 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 14:08:41 2011 -0300 TubeChannel: Update docs. TelepathyQt4/tube-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 816e2962a83aafb0fccdfdcc72ddef34795de39a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 14:08:26 2011 -0300 OutgoingStreamTubeChannel: Update docs. TelepathyQt4/outgoing-stream-tube-channel.cpp | 268 ++++++++++---------------- 1 file changed, 101 insertions(+), 167 deletions(-) commit a4f23c1772b3c55d8f251f1f4f342793cac2af3c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 14:08:06 2011 -0300 IncomingStreamTubeChannel: Update docs. TelepathyQt4/incoming-stream-tube-channel.cpp | 220 +++++++------------------- 1 file changed, 53 insertions(+), 167 deletions(-) commit db3848d766166db7db83f487b568c991ca95f078 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 6 13:23:44 2011 -0300 StreamTubeChannel: Improve docs. TelepathyQt4/stream-tube-channel.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) commit 33475690cbe753130a0e204d7b8e8472f521f85b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 03:42:23 2011 -0300 IncomingStreamTubeChannel: Add API/ABI break FIXME. TelepathyQt4/incoming-stream-tube-channel.h | 1 + 1 file changed, 1 insertion(+) commit 7c4f418f6ba12255888c7213c18a5f1f9b08181c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 03:37:57 2011 -0300 TubeChannel: Fix cross reference on docs. TelepathyQt4/tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 29c125567f233310f4c2c41d47d6f32210a20c1c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 03:31:59 2011 -0300 StreamTubeChannel: Improve docs. TelepathyQt4/stream-tube-channel.cpp | 362 ++++++++++++++++++----------------- 1 file changed, 182 insertions(+), 180 deletions(-) commit 10e49f69cc565c7f3f7f191007ade996c2a10aed Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:43:42 2011 -0300 StreamTubeChannel: Remove useless private destructor impl. TelepathyQt4/stream-tube-channel.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 6d0e8660a32045741cd68d6cfc4524657591f99f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:43:36 2011 -0300 TubeChannel: Remove useless private destructor impl. TelepathyQt4/tube-channel.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 659b7d727e5a51a45e557d590d82ceb0483ce68a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:40:50 2011 -0300 OutgoingStreamTubeChannel: Remove useless private destructor impls. TelepathyQt4/outgoing-stream-tube-channel-internal.h | 2 -- TelepathyQt4/outgoing-stream-tube-channel.cpp | 10 ---------- 2 files changed, 12 deletions(-) commit 4e0f84efc3b3869dd52dac228354a45e39245e96 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:40:29 2011 -0300 IncomingStreamTubeChannel: Remove useless private destructor impl. TelepathyQt4/incoming-stream-tube-channel.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 2d4414f7ea97475376845c2c541f9b50de9954d1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:16:39 2011 -0300 stream-tube-chan test: Make sure the event queue is empty before running the next test. tests/dbus/stream-tube-chan.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) commit 6538e8842c2cbbbb618fd1705967be57a76245fb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:51:28 2011 -0300 StreamTubeChannel: Make accessControl accessor protected. TelepathyQt4/outgoing-stream-tube-channel.cpp | 10 ++++------ TelepathyQt4/stream-tube-channel.h | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) commit 8fe5b0e119cbd0c46d889139bbf7ef6255149eb1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:08:03 2011 -0300 stream-tube-chan test: Test that accept fails if the channel is invalidated before StreamTube.Accept returns. tests/dbus/stream-tube-chan.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) commit 96d6de71ba68dd0c65143e94006ea1d20716ce9c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:07:37 2011 -0300 stream-tube-chan test chan: Add backdoor API to close the channel on accept. tests/lib/glib/stream-tube-chan.c | 16 ++++++++++++++++ tests/lib/glib/stream-tube-chan.h | 4 ++++ 2 files changed, 20 insertions(+) commit ab7722df7d84a2a6fb2fb1db106ef626d72ad9d6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 02:06:15 2011 -0300 PendingStreamTubeConnection: Make sure the operation fails if the channel is invalidated before we got a reply to StreamTube.Accept. TelepathyQt4/pending-stream-tube-connection.cpp | 38 +++++++++++++++++++------ TelepathyQt4/pending-stream-tube-connection.h | 13 +++++---- 2 files changed, 38 insertions(+), 13 deletions(-) commit ec73777220081a55f206974c23817c891149fb61 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 01:29:18 2011 -0300 stream-tube-channel test: Add test for connectionClosed. tests/dbus/stream-tube-chan.cpp | 48 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) commit 3f089f015367621968effee2efafee160bbf8977 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 01:22:56 2011 -0300 OutgoingStreamTubeChannel: Properly handle connection closed. TelepathyQt4/outgoing-stream-tube-channel.cpp | 10 ++++------ TelepathyQt4/outgoing-stream-tube-channel.h | 10 +++++++--- TelepathyQt4/stream-tube-channel.cpp | 12 ++++++++++-- TelepathyQt4/stream-tube-channel.h | 10 +++++++--- 4 files changed, 28 insertions(+), 14 deletions(-) commit fddfce407f2242f8a5abfbb00ab35821a74652b6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 1 00:20:55 2011 -0300 stream-tube-chan test: Check that OutgoingStreamTubeChannel::connectionsFor*/contactsFor* maps are populated at the proper time. tests/dbus/stream-tube-chan.cpp | 138 ++++++++++++++++++++++++++++------------ 1 file changed, 99 insertions(+), 39 deletions(-) commit 58a59b58fc393975d5f677674ac0eabe7e1e0951 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 15:07:38 2011 -0300 StreamTubeChannel: Implement methods in the same order as declared. TelepathyQt4/stream-tube-channel.cpp | 110 +++++++++++++++++------------------ TelepathyQt4/stream-tube-channel.h | 2 +- 2 files changed, 56 insertions(+), 56 deletions(-) commit d648b8675ed59a301f2ad445b7a49b27c9526bda Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 15:05:55 2011 -0300 StreamTubeChannel: Refactor to conform with other parts of the library. TelepathyQt4/stream-tube-channel.cpp | 69 ++++++++++++++---------------------- TelepathyQt4/stream-tube-channel.h | 4 +-- 2 files changed, 29 insertions(+), 44 deletions(-) commit 2e2cd7c03a1f85b1ac73db90769805fecfddd5ed Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 15:05:12 2011 -0300 OutgoingStreamTubeChannel: Update copyright. TelepathyQt4/outgoing-stream-tube-channel.cpp | 2 +- TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit e03ec405c6aad0c5e24162609a6e6c4ec0ff1484 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 15:04:40 2011 -0300 IncomingStreamTubeChannel: Update copyright. TelepathyQt4/incoming-stream-tube-channel.cpp | 2 +- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit dbdbe2a551c308ef1dd559b176ff4f848b7a8a7e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 14:51:39 2011 -0300 StreamTubeChannel: Remove useless definition of base tube type. TelepathyQt4/incoming-stream-tube-channel.cpp | 1 - TelepathyQt4/outgoing-stream-tube-channel.cpp | 2 -- TelepathyQt4/stream-tube-channel.cpp | 43 +++++++++------------------ TelepathyQt4/stream-tube-channel.h | 1 - 4 files changed, 14 insertions(+), 33 deletions(-) commit 97b70ca84509850736b126b681a58fcbde122375 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 14:44:46 2011 -0300 TubeChannel: Improve docs. TelepathyQt4/tube-channel.cpp | 46 ++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 20 deletions(-) commit 50048e04fb1cdb7c4e52e47e8a472dfd3ebff963 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 14:42:40 2011 -0300 stream-tube-chan test chan: Properly set parameters to what was received by offer. tests/dbus/stream-tube-chan.cpp | 20 ++++++++++---------- tests/lib/glib/stream-tube-chan.c | 27 +++++++++++++++++++++------ 2 files changed, 31 insertions(+), 16 deletions(-) commit 64505ff37e8e8742810ed0123dd9d29b1b8cfc28 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 14:12:58 2011 -0300 TubeChannel: Only emit tubeStateChanged if we already received the state from initial introspection. TelepathyQt4/tube-channel.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 13e80c51e0b7cabfb611a659586a750ed4c1f9ab Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 13:49:10 2011 -0300 TubeChannel: Refactor to conform with other parts of the library. TelepathyQt4/tube-channel.cpp | 102 +++++++++++++++++------------------------- TelepathyQt4/tube-channel.h | 4 +- 2 files changed, 42 insertions(+), 64 deletions(-) commit c26773028e605a82e8e80287a2200a00aa50c7a4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 13:24:36 2011 -0300 stream-tube-chan test: Enable tests for OutgoingStreamTubeChannel::connectionsForCredentials. tests/dbus/stream-tube-chan.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit 683f3c6cb909bc3ec89848d24b88a65b24cc26ab Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 13:24:11 2011 -0300 OutgoingStreamTubeChannel: Add connectionsForCredentials method. .../outgoing-stream-tube-channel-internal.h | 1 + TelepathyQt4/outgoing-stream-tube-channel.cpp | 77 ++++++++++++++++++++-- TelepathyQt4/outgoing-stream-tube-channel.h | 3 +- 3 files changed, 74 insertions(+), 7 deletions(-) commit 278a2a22353c18391b5e776d5df1f7f1235d6e40 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 13:23:51 2011 -0300 OutgoingStreamTubeChannel: Fix coding style. TelepathyQt4/outgoing-stream-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4425b817b834016fb2440fc5199b156c15928566 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 29 13:23:21 2011 -0300 StreamTubeChannel: Add accessControl accessor. TelepathyQt4/incoming-stream-tube-channel.cpp | 3 +++ TelepathyQt4/outgoing-stream-tube-channel.cpp | 4 ++++ TelepathyQt4/stream-tube-channel.cpp | 22 +++++++++++++++++++++- TelepathyQt4/stream-tube-channel.h | 2 ++ 4 files changed, 30 insertions(+), 1 deletion(-) commit d6d7b210da62ba83431c7cae7e615fb19bd01f28 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 28 13:55:33 2011 -0300 stream-tube-chan test: Add tests for tube offering. tests/dbus/stream-tube-chan.cpp | 198 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 195 insertions(+), 3 deletions(-) commit 31f7fd58f84ecafd5099c3ea92a6045f9664033b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 28 13:54:21 2011 -0300 stream-tube-chan test chan: Add method to simulate a peer connecting to an offered tube without using GIOStream. tests/lib/glib/stream-tube-chan.c | 17 +++++++++++++++++ tests/lib/glib/stream-tube-chan.h | 4 ++++ 2 files changed, 21 insertions(+) commit 30724301bf228b49fe62f5725536d3126fa6a31f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 28 13:53:39 2011 -0300 OutgoingStreamTubeChannel: Sanitize offering handling. TelepathyQt4/outgoing-stream-tube-channel.cpp | 34 +++++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) commit 5f6a03764dd6a16d8f712aa0b4ab12460c35197b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 28 13:53:02 2011 -0300 TubeChannel: Remove useless debug. TelepathyQt4/tube-channel.cpp | 1 - 1 file changed, 1 deletion(-) commit bd0a81a3e52cf221e2cae051cb189d3a52240c3e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 28 11:38:37 2011 -0300 stream-tube-chan: Use expectFailure where appropriate. tests/dbus/stream-tube-chan.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 3ef29e9610ccbceebe7e3e50c9167ef184b3d8c2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 28 11:30:23 2011 -0300 stream-tube-chan test chan: Use guint instead of guint16 to retrieve the port from the access control param. tests/lib/glib/stream-tube-chan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c56e60cde2e9f702b1250514e8291235551c6beb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 27 16:48:41 2011 -0300 PendingStreamTubeConnection: Rename requireCredentials to requiresCredentials. TelepathyQt4/pending-stream-tube-connection.cpp | 16 ++++++++-------- TelepathyQt4/pending-stream-tube-connection.h | 4 ++-- tests/dbus/stream-tube-chan.cpp | 16 ++++++++-------- 3 files changed, 18 insertions(+), 18 deletions(-) commit 3b330e64d6288de6d7999b189942082d190bd992 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 27 16:45:46 2011 -0300 IncomingStreamTubeChannel: Only initialize random number generator once. TelepathyQt4/incoming-stream-tube-channel.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 8f37fa17adddaef5a9d91968f51f3f2a4f0a8517 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 27 16:38:22 2011 -0300 stream-tube-chan test: Enable tests for Port access control. tests/dbus/stream-tube-chan.cpp | 131 ++++++++++++++++++++++++++++++++++------ 1 file changed, 111 insertions(+), 20 deletions(-) commit c676937afff8617de40b4e326bbe5b7f34ba6b83 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 27 16:37:46 2011 -0300 stream-tube-chan test chan: Properly check access control param when using Port access control. tests/lib/glib/stream-tube-chan.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) commit 724d0c51a8a1fb46afe1f08185691738fae3d521 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:13:43 2011 -0300 stream-tube-chan test: Add initial test for *StreamTubeChannel. tests/dbus/CMakeLists.txt | 4 + tests/dbus/stream-tube-chan.cpp | 389 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 393 insertions(+) commit 1789707879995db1921d5549e9c49b980d274d9a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:11:55 2011 -0300 Import stream-tube-chan.[ch] from tp-glib. tests/lib/glib/CMakeLists.txt | 8 +- tests/lib/glib/stream-tube-chan.c | 720 ++++++++++++++++++++++++++++++++++++++ tests/lib/glib/stream-tube-chan.h | 133 +++++++ 3 files changed, 860 insertions(+), 1 deletion(-) commit 11961b25199f8209aad81a236838953f03f260ae Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:10:17 2011 -0300 cmake: Set ENABLE_TP_GLIB_GIO_TESTS if tp-glib tests are enabled and gio is found. CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) commit 7ff56aa1ada8608c15ebc8158912614242095371 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:09:45 2011 -0300 cmake: Add FindGIO/Unix.cmake. cmake/modules/FindGIO.cmake | 37 +++++++++++++++++++++++++++++++++++++ cmake/modules/FindGIOUnix.cmake | 31 +++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) commit 786349e705646b95e3b6ccc941776c5984db45ee Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:09:01 2011 -0300 PendingStreamTubeConnection: Add requireCredentials/credentialByte methods. TelepathyQt4/incoming-stream-tube-channel.cpp | 4 +-- TelepathyQt4/pending-stream-tube-connection.cpp | 38 +++++++++++++++++++++++-- TelepathyQt4/pending-stream-tube-connection.h | 8 ++++-- 3 files changed, 44 insertions(+), 6 deletions(-) commit f2d8ef1284c7458b7777d6b0ea1740e20a5d2996 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:07:29 2011 -0300 IncomingStreamTubeChannel: Properly pass access control param when calling accept on unix sockets. TelepathyQt4/incoming-stream-tube-channel.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) commit 3391a6d7d03f6414c68ca1325e4dc58541bdf8f4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:05:50 2011 -0300 TubeChannel: Fix typo in debug message. TelepathyQt4/tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f3c94b87cfed85daeef6401259cb34ff2e575756 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:04:49 2011 -0300 StreamTubeChannel: Fix supportsUnixSocketsWithCredentials. TelepathyQt4/stream-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1aac85233965a9051f2561564d5c383fe708eeee Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 15 17:03:31 2011 -0300 StreamTubeChannel: Make introspectable do not depend on Channel.Type.StreamTube. TelepathyQt4/stream-tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 117a7b8e965287502c0c9ac0537f1f9f602fed34 Author: Olli Salli Date: Mon Jun 13 16:05:47 2011 +0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0a76a4d1fecf71c26147ec98f6b57db2d7a8c513 Merge: 65e362d 8b066a6 Author: Olli Salli Date: Mon Jun 13 15:53:24 2011 +0300 Merge branch 'streamtube-address' Reviewed-by: George Kiagiadakis (gkiagia) commit 8b066a6f688257b20c2bf772198ca1e372df898c Author: Olli Salli Date: Sun Jun 12 12:22:15 2011 +0300 Remove connect() to non-existant slot from acceptTubeAsUnixSocket TelepathyQt4/incoming-stream-tube-channel.cpp | 2 -- 1 file changed, 2 deletions(-) commit 011dc9129286cb8d652354536e97287f113a3d08 Author: Olli Salli Date: Sat Jun 11 15:29:53 2011 +0300 Remove duplicated (and conflicting) mechanism to populate address for accepted StreamTubes TelepathyQt4/incoming-stream-tube-channel.cpp | 26 ++------------------------ TelepathyQt4/incoming-stream-tube-channel.h | 1 - 2 files changed, 2 insertions(+), 25 deletions(-) commit f50b8fbf99edc18041ba987bf6cc2bef0eb424b6 Author: Olli Salli Date: Sat Jun 11 15:25:30 2011 +0300 StreamTubeChannel: Add warnings to early-out in address accessors TelepathyQt4/stream-tube-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 65e362d14128efdb1e6a237ce8f75c233e26587c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 16:14:45 2011 -0300 Start 0.7.2 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit ff8ab4457eeb5b9802c17bc0fa087c29d3e78cca Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:46:01 2011 -0300 Prepare release 0.7.1 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit b4f6d01be1d7f9e7c948cc269a43eb284987d2de Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:53:43 2011 -0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit f9adea93b485e2a6b8b72c46f155e6fa12bb27f6 Merge: 930b9a5 f5a45e2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:50:09 2011 -0300 Merge remote-tracking branch 'oggis/doxygen-trivia' Reviewed-by: Andre Magalhaes (andrunko) commit 930b9a55d68030e46a4b3ba79caecfbf15d4f27b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:44:43 2011 -0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit bd4cba37aea3caf3f184af020f8586cdec2771be Merge: 9b524b5 d4449e1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:33:07 2011 -0300 Merge branch 'tests-cleanup' Reviewed-by: Olli Salli (oggis) commit 9b524b545d25046c9a2d44f4bdf89ba7cf06097b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:31:59 2011 -0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0767ee3fc6a56472a6e1d255e85d7f698f07acc3 Merge: 0df289b c5de61d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 15:28:46 2011 -0300 Merge remote-tracking branch 'drdanz/fix-docs' Reviewed-by: Andre Magalhaes (andrunko) commit d4449e18a9f2f9822bc1a7515c4c6c036d3e6324 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 12:55:58 2011 -0300 TestConnHelper: Remove disconnectWithDBusError. tests/lib/glib-helpers/test-conn-helper.cpp | 18 ------------------ tests/lib/glib-helpers/test-conn-helper.h | 2 -- 2 files changed, 20 deletions(-) commit 5fce3d80d426bbf4bbf020586607cbb7ecae5c29 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 12:54:43 2011 -0300 streamed-media-chan test: Use TEST_VERIFY_OP tests/dbus/streamed-media-chan.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) commit 7830df016a7cddebd9d7bf8b3b6ba33acbdde567 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:59 2011 -0300 handles test: Use TEST_VERIFY_OP tests/dbus/handles.cpp | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) commit 5de4e12124f6fc64387faf91dd0eafe0afd85cc0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:59 2011 -0300 contacts test: Use TEST_VERIFY_OP tests/dbus/contacts.cpp | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) commit 4c81b57e96aaa0b0697e539fc5f3f8eed32d992c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:59 2011 -0300 contact-search-chan test: Use TEST_VERIFY_OP tests/dbus/contact-search-chan.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6eb71c57b923eaeff4e207abd89b4f7d53b7e00d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:59 2011 -0300 contact-messenger test: Use TEST_VERIFY_OP tests/dbus/contact-messenger.cpp | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) commit 857148615034da7859cc923ac88a0accdbe10e23 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 12:35:25 2011 -0300 conn-roster test: Use TEST_VERIFY_OP tests/dbus/conn-roster.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) commit b611137b92959016c31eb31efec8691ac7b45933 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 9 12:35:24 2011 -0300 conn-roster-legacy test: Use TEST_VERIFY_OP tests/dbus/conn-roster-legacy.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) commit d626e7d6678e5b44a31d70a37e8b75b5de5fc339 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:59 2011 -0300 conn-requests test: Use TEST_VERIFY_OP tests/dbus/conn-requests.cpp | 60 +++----------------------------------------- 1 file changed, 4 insertions(+), 56 deletions(-) commit a3cb4c21f974fc590e3da06fd3683fd1115410e5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:59 2011 -0300 cm-basics test: Use TEST_VERIFY_OP tests/dbus/cm-basics.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) commit 27296e6aa509e5930d2731587e98945f663e3c99 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:58 2011 -0300 chan-basics test: Use TEST_VERIFY_OP tests/dbus/chan-basics.cpp | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) commit febf4dfc49ea5bd0e49fa1bb5a94a0a1ae9dcb9f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:22 2011 -0300 test.h: Add macro to verify that a PendingOperation finished successfully. tests/lib/test.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit 51eecc3330d1196269a5326da525fdcf9d7629e3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:51:00 2011 -0300 TestConnHelper: Add helper method to upgrade contacts. tests/lib/glib-helpers/test-conn-helper.cpp | 27 +++++++++++++++++++++++++++ tests/lib/glib-helpers/test-conn-helper.h | 3 +++ 2 files changed, 30 insertions(+) commit 73a7dc7f416290eb3ca1f0a217f70a0ab8443f28 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:50:24 2011 -0300 TestConnHelper: Check that features are actually requested when building contacts. tests/lib/glib-helpers/test-conn-helper.cpp | 7 +++++++ tests/lib/glib-helpers/test-conn-helper.h | 2 ++ 2 files changed, 9 insertions(+) commit 4053a8ebe5085666295d367f722f7bfeb106108f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 13:10:43 2011 -0300 TestConnHelper: Add more tests when building contacts. tests/lib/glib-helpers/test-conn-helper.cpp | 33 +++++++++++++++++++++++------ tests/lib/glib-helpers/test-conn-helper.h | 10 ++++++++- 2 files changed, 36 insertions(+), 7 deletions(-) commit 309efb25e230b7175e5ec7d79cb065aa3a830059 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 12:23:59 2011 -0300 streamed-media-chan test: Use TestConnHelper::create/ensureChannel() tests/dbus/streamed-media-chan.cpp | 146 +++++-------------------------------- 1 file changed, 18 insertions(+), 128 deletions(-) commit 01c158772a84bd587704530304f3dbd314725883 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 12:23:59 2011 -0300 chan-group test: Use TestConnHelper::create/ensureChannel() tests/dbus/chan-group.cpp | 61 +++++------------------------------------------ 1 file changed, 6 insertions(+), 55 deletions(-) commit 41730dc3fa71a3e09344e931cc7e7e82a9635b63 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 12:23:59 2011 -0300 chan-basics test: Use TestConnHelper::create/ensureChannel() tests/dbus/chan-basics.cpp | 91 ++++------------------------------------------ 1 file changed, 8 insertions(+), 83 deletions(-) commit f3a24f76187a058cedb7321ab40b670a79fd15c4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 12:23:23 2011 -0300 TestConnHelper: Add helper methods to create/ensure channels. tests/lib/glib-helpers/test-conn-helper.cpp | 137 ++++++++++++++++++++++++++++ tests/lib/glib-helpers/test-conn-helper.h | 17 ++++ 2 files changed, 154 insertions(+) commit 7e52bac03be85074dd85d37830a5132c4c10d35b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:15 2011 -0300 streamed-media-chan test: Use TestConnHelper::contacts() tests/dbus/streamed-media-chan.cpp | 157 +++++++++---------------------------- 1 file changed, 38 insertions(+), 119 deletions(-) commit 1903663fab8fbe4330c71edf2bc6fcc0cfbcb391 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:15 2011 -0300 contacts-location test: Use TestConnHelper::contacts() tests/dbus/contacts-location.cpp | 50 ++++++---------------------------------- 1 file changed, 7 insertions(+), 43 deletions(-) commit 5abe5419300ae60ad15805a88f7e6c5599445d4e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:15 2011 -0300 contacts-info test: Use TestConnHelper::contacts() tests/dbus/contacts-info.cpp | 56 ++++++++------------------------------------ 1 file changed, 10 insertions(+), 46 deletions(-) commit 3af37fb6fdd5acbcecf05fa2d0c8f5133ed78ff6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:15 2011 -0300 contacts-capabilities test: Use TestConnHelper::contacts() tests/dbus/contacts-capabilities.cpp | 45 ++++-------------------------------- 1 file changed, 4 insertions(+), 41 deletions(-) commit d57f8c70b74a87f36f44b78c7edea479296bbf05 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:14 2011 -0300 contacts-avatar test: Use TestConnHelper::contacts() tests/dbus/contacts-avatar.cpp | 38 ++------------------------------------ 1 file changed, 2 insertions(+), 36 deletions(-) commit 65e36d1eb04a84e39c024d640a69cfadac8e8a48 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:14 2011 -0300 conn-roster test: Use TestConnHelper::contacts() tests/dbus/conn-roster.cpp | 104 ++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 73 deletions(-) commit a90599042a7d5261c6b425054d81765c82405836 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:14 2011 -0300 conn-roster-legacy test: Use TestConnHelper::contacts() tests/dbus/conn-roster-legacy.cpp | 101 +++++++++++--------------------------- 1 file changed, 30 insertions(+), 71 deletions(-) commit ae5037621a082305b984099d9399f77c1b366da0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:45:14 2011 -0300 chan-group test: Use TestConnHelper::contacts() tests/dbus/chan-group.cpp | 55 +++++++---------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) commit 69af67e8c3b979a8c1adc07620ab4abe7544fb41 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 8 11:42:45 2011 -0300 TestConnHelper: Add helper methods to build contacts. tests/lib/glib-helpers/test-conn-helper.cpp | 49 +++++++++++++++++++++++++++++ tests/lib/glib-helpers/test-conn-helper.h | 9 ++++++ 2 files changed, 58 insertions(+) commit 9bb7e0a9846f098f321474f846f86909c97f8557 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 23:04:45 2011 -0300 chan-conference test: Properly set test name. tests/dbus/chan-conference.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cc0d0e960b907892de1343559a4e3c10016c609f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 23:03:35 2011 -0300 Rename chan-contact-search test to contact-search-chan to follow SM/Text chan tests. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-contact-search.cpp | 309 ------------------------------------- tests/dbus/contact-search-chan.cpp | 309 +++++++++++++++++++++++++++++++++++++ 3 files changed, 310 insertions(+), 310 deletions(-) commit e806b21a5f263ac3d08fa5db0825718de05f96bd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:58:02 2011 -0300 contacts-avatar test: Reorder methods implementation. tests/dbus/contacts-avatar.cpp | 100 ++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 51 deletions(-) commit bf01c0c40254d8b0fea38d646448c0a164bc29f4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:55:29 2011 -0300 cm-basics test: Add test for ConnectionManager::listNames(). tests/dbus/cm-basics.cpp | 58 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 12 deletions(-) commit 3cd2eac97ef97d78191efcca3dad93bbe5a067f1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:55:00 2011 -0300 text-chan test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/text-chan.cpp | 123 ++++++++++------------------------------------ 2 files changed, 27 insertions(+), 98 deletions(-) commit fe25ef8a6b894ebc465589cb298848396eab3ff9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:54:45 2011 -0300 streamed-media-channel test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/streamed-media-chan.cpp | 155 +++++++++++++------------------------ 2 files changed, 53 insertions(+), 104 deletions(-) commit 548c93483ad4412caadde7f515fe5328877c5d75 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:54:19 2011 -0300 handles test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/handles.cpp | 123 +++++----------------------------------------- 2 files changed, 14 insertions(+), 111 deletions(-) commit 3c4bc4160eccc73c371ad170387128140ffd8b93 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:53:34 2011 -0300 contacts-location test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/contacts-location.cpp | 97 +++++++++------------------------------- 2 files changed, 22 insertions(+), 77 deletions(-) commit 705be5a82ccea54aee3f676acade978322b33b11 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:53:06 2011 -0300 contacts-info test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/contacts-info.cpp | 100 ++++++++++--------------------------------- 2 files changed, 24 insertions(+), 78 deletions(-) commit f5973b321890b917e3b356867b0ea3dea1f59d4a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:52:26 2011 -0300 contacts-capabilities test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/contacts-capabilities.cpp | 97 ++++++++---------------------------- 2 files changed, 22 insertions(+), 77 deletions(-) commit 1f05541d210bbc344065694a6c1b20392d1b0ae8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:51:48 2011 -0300 contacts-avatar test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/contacts-avatar.cpp | 104 ++++++++++------------------------------- 2 files changed, 25 insertions(+), 81 deletions(-) commit 37cf06e64ade0a93f0339aeb9a91c268634ad52c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:50:44 2011 -0300 contact-factory test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/contact-factory.cpp | 87 ++++++++++-------------------------------- 2 files changed, 21 insertions(+), 68 deletions(-) commit 596cb8012416bd330423656be97b72c37aa2ab6d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:50:01 2011 -0300 conn-roster test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/conn-roster.cpp | 116 ++++++++++----------------------------------- 2 files changed, 26 insertions(+), 92 deletions(-) commit 3c76203de447a02d076bbf2c47b10d0e9d561ee8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:49:34 2011 -0300 conn-roster-legacy test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/conn-roster-legacy.cpp | 116 ++++++++------------------------------ 2 files changed, 24 insertions(+), 94 deletions(-) commit a7db9cbc3fe5b648a2a71e4f9b522bc45423b38d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:48:47 2011 -0300 conn-requests test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/conn-requests.cpp | 91 +++++++------------------------------------- 2 files changed, 15 insertions(+), 78 deletions(-) commit 3eef8530cdc1a3f2619678720eb4203c93f7523b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:47:46 2011 -0300 conn-capabilities test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/conn-capabilities.cpp | 153 ++++++++++----------------------------- 2 files changed, 41 insertions(+), 114 deletions(-) commit 496235f309aa4c1baafab9f5601d054f76471184 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:46:19 2011 -0300 client test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/client.cpp | 95 +++++++++++++---------------------------------- 2 files changed, 27 insertions(+), 70 deletions(-) commit 0f8753e051f1883fc24759f2dc31b431df1f0d17 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:45:44 2011 -0300 chan-group test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-group.cpp | 113 ++++++++++------------------------------------ 2 files changed, 25 insertions(+), 90 deletions(-) commit 7750ede7f9a16c055068752387d821d95090f122 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:44:59 2011 -0300 chan-contact-search test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-contact-search.cpp | 102 +++++++------------------------------ 2 files changed, 19 insertions(+), 85 deletions(-) commit a7e6df209a5e5db14f9bf50540ed2ca569552c85 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:44:17 2011 -0300 chan-conference test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-conference.cpp | 117 ++++++++--------------------------------- 2 files changed, 24 insertions(+), 95 deletions(-) commit 0dbbf70d8ffbd7617b73617af74be04737668ae4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:43:17 2011 -0300 chan-basics test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-basics.cpp | 135 +++++++-------------------------------------- 2 files changed, 21 insertions(+), 116 deletions(-) commit 6a9e30a7e93a855aa5481003e5d6d33ab97d4336 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:42:14 2011 -0300 account-connection-factory test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/account-connection-factory.cpp | 126 ++++++++++++------------------ 2 files changed, 49 insertions(+), 79 deletions(-) commit 96708718ec942c1572bef85ba81dc67139b5a7a1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:41:15 2011 -0300 account-basics test: Use TestConnHelper. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/account-basics.cpp | 91 +++++++++---------------------------------- 2 files changed, 19 insertions(+), 74 deletions(-) commit ed1df43166f8d2b3d524dd123b19d94db2ce95b0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:39:12 2011 -0300 test.h: Add header guard. tests/lib/test.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit bdf2fe110fd495681371cd1a94ccc6f63c3e643d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 7 22:38:36 2011 -0300 glib-helpers: Add TestConnHelper helper class. tests/lib/CMakeLists.txt | 1 + tests/lib/glib-helpers/CMakeLists.txt | 22 ++++ tests/lib/glib-helpers/test-conn-helper.cpp | 192 ++++++++++++++++++++++++++++ tests/lib/glib-helpers/test-conn-helper.h | 65 ++++++++++ 4 files changed, 280 insertions(+) commit c5de61d440cc912298a3f51bca23c100b7648165 Author: Daniele E. Domenichelli Date: Wed Jun 8 15:46:39 2011 +0200 Small fix to Tp::Contact documentation TelepathyQt4/contact.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f5a45e21d9616c03398015834ee92615a428a6d1 Author: Olli Salli Date: Sun Jun 5 20:53:58 2011 +0300 Make doxygen-doc depend on all generated sources So that they're actually built and can be included in the docs in an up-to-date shape. TelepathyQt4/CMakeLists.txt | 4 ++++ cmake/modules/TpQt4Macros.cmake | 4 ++++ 2 files changed, 8 insertions(+) commit 58115637a117cd2e8882cbce9a18daec634c4e45 Author: Olli Salli Date: Sun Jun 5 20:35:43 2011 +0300 Fix trivial syntax error in doxygen.cfg doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b2eaa8e473f932b83017c1c792c4fec61f311070 Author: Olli Salli Date: Sun Jun 5 20:27:06 2011 +0300 cmake: Move Doxygen include after Qt package lookup Otherwise crosslinking doesn't work on a fresh build, because QT_DOC_DIR hasn't yet been set CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 0df289bbea7123055f3b8c36e9101f65419ae97c Author: Olli Salli Date: Sun Jun 5 20:05:45 2011 +0300 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c4aab8653facd9270c89217d836c03fb41ab32ae Merge: 8959aac ed6b67a Author: Olli Salli Date: Sun Jun 5 20:03:38 2011 +0300 Merge remote-tracking branch 'drdanz/filetransfer-uri' Reviewed-by: Olli Salli (oggis) commit ed6b67a061a237277d3778d852f3cc322f07b06d Author: Daniele E. Domenichelli Date: Sun Jun 5 15:19:16 2011 +0200 Small fix to documentation TelepathyQt4/pending-channel-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5e31b274fd5a779be4ff73837432c0ffca8de0f6 Author: Daniele E. Domenichelli Date: Thu Jun 2 20:30:17 2011 +0200 Add unit tests for Account::createFileTransfer() and createAndHandleFileTransfer() tests/dbus/account-channel-dispatcher.cpp | 132 +++++++++++++++++++++++++++--- 1 file changed, 122 insertions(+), 10 deletions(-) commit c9881f1e3803cb9541222e239808dc84ea1e09a1 Author: Daniele E. Domenichelli Date: Fri Jun 3 23:13:32 2011 +0200 Do not try to create a file transfer channel if parameters are invalid TelepathyQt4/account.cpp | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) commit 0cc9259c5c37aeff563a2c46b6423540d72ba05a Author: Daniele E. Domenichelli Date: Fri Jun 3 23:12:41 2011 +0200 Add error constructor in PendingChannel TelepathyQt4/pending-channel.cpp | 11 +++++++++++ TelepathyQt4/pending-channel.h | 2 ++ 2 files changed, 13 insertions(+) commit 51569d262b1e6dea8d15be07a9af691ae5eed865 Author: Daniele E. Domenichelli Date: Fri Jun 3 23:12:21 2011 +0200 Add error constructor in PendingChannelRequest TelepathyQt4/pending-channel-request.cpp | 15 +++++++++++++++ TelepathyQt4/pending-channel-request.h | 2 ++ 2 files changed, 17 insertions(+) commit 596295a082a1a22f7a26582378c4300742f351b8 Author: Daniele E. Domenichelli Date: Wed Jun 1 13:14:21 2011 +0200 Add missing documentation to FileTransferChannel (signals) TelepathyQt4/file-transfer-channel.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit 6e5a98a4b64d2720bdfaa963d21799c8df2efc33 Author: Daniele E. Domenichelli Date: Sun May 29 16:46:17 2011 +0200 Support URI property in FileTransferChannel and IncomingFileTransferChannel Add public methods: - QString FileTransferChannel::uri() const; - PendingOperation *IncomingFileTransferChannel::setUri(const QString& uri); Add signal: - void IncomingFileTransferChannel::uriDefined(const QString &uri); TelepathyQt4/file-transfer-channel.cpp | 31 ++++++++++++++++ TelepathyQt4/file-transfer-channel.h | 4 +++ TelepathyQt4/incoming-file-transfer-channel.cpp | 47 +++++++++++++++++++++++++ TelepathyQt4/incoming-file-transfer-channel.h | 4 +++ 4 files changed, 86 insertions(+) commit 9e7311be8fc79a0c5fc9a6d6666f4af13b2debd7 Author: Daniele E. Domenichelli Date: Thu Jun 2 20:31:16 2011 +0200 Add unit tests for FileTransferChannelCreationProperties tests/CMakeLists.txt | 1 + .../file-transfer-channel-creation-properties.cpp | 145 +++++++++++++++++++++ 2 files changed, 146 insertions(+) commit 7fe2dd76c319dedf1cbd645b80ef11de3c66b97d Author: Daniele E. Domenichelli Date: Sun May 29 17:21:17 2011 +0200 Add documentation for class FileTransferChannelCreationProperties .../file-transfer-channel-creation-properties.cpp | 140 ++++++++++++++++++++- 1 file changed, 139 insertions(+), 1 deletion(-) commit 8e2339b490ab9ab6cbfba89ec78808c6155dc351 Author: Daniele E. Domenichelli Date: Sat May 28 12:45:46 2011 +0200 Add constructor that sets properties from path to a local file to FileTransferChannelCreationProperties Add public method - FileTransferChannelCreationProperties(const QString &path, const QString &contentType); .../file-transfer-channel-creation-properties.cpp | 32 ++++++++++++++++++++++ .../file-transfer-channel-creation-properties.h | 2 ++ 2 files changed, 34 insertions(+) commit 3f7c3f637a34529a2dde18e7f0300ce93d204b7d Author: Daniele E. Domenichelli Date: Fri May 13 01:59:48 2011 +0200 Support the URI property in FileTransferChannelCreationProperties Add public methods - FileTransferChannelCreationProperties &FileTransferChannelCreationProperties::setUri(const QString &uri) - bool FileTransferChannelCreationProperties::hasUri() TelepathyQt4/account.cpp | 6 ++++ .../file-transfer-channel-creation-properties.cpp | 32 ++++++++++++++++++++++ .../file-transfer-channel-creation-properties.h | 4 +++ 3 files changed, 42 insertions(+) commit ac3dc02b6a9fa0b7030726d89e40cb2533670e97 Author: Daniele E. Domenichelli Date: Sun May 29 20:44:53 2011 +0200 Do not use bool variables to remember if FileTransferChannelCreationProperties has properties .../file-transfer-channel-creation-properties.cpp | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) commit 352b079112ccbb20d684e6b8901670c8e92dbde0 Author: Daniele E. Domenichelli Date: Sat May 28 12:28:44 2011 +0200 Clean suggestedFileName when it is stored instead of when it is used in FileTransferChannelCreationProperties TelepathyQt4/account.cpp | 3 +-- TelepathyQt4/file-transfer-channel-creation-properties.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) commit 8959aacbfdd70d4865e55a51640cc1a5ad2e8b9c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 16:23:03 2011 -0300 Start 0.7.1 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit ad9da43b7c731de3e192a17dc116c2f8183584f5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 16:04:29 2011 -0300 Prepare release 0.7.0 CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 5598a9b8bcbb949aa8ae3c439f7b3eeb0acf5f7f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 16:04:16 2011 -0300 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit eb0ffe3215ba82eb5af4579c68fa7ff490c71acc Merge: 7a532ff aee044f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 16:03:04 2011 -0300 Merge branch 'docs-0.7' Reviewed-by: Olli Salli (oggis) commit aee044f6e2fd77e51fefe921c93a1654ebbbd9cb Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 11:53:37 2011 -0300 ProtocolInfo: Fix class documentation. TelepathyQt4/protocol-info.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 70a0ffb6524dd69169fa07578cb6b9396b8239b9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 11:45:16 2011 -0300 Connection: Fix doc for errorDetails(). TelepathyQt4/connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8e4e17f8667ac8de0dccf8efd94f6320c74418cc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 11:43:10 2011 -0300 Account: Fix doc for connectionErrorDetails. TelepathyQt4/account.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) commit c8b94c85d194f0700e158d5b4e2fd40322ed6d5b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 11:42:55 2011 -0300 TubeChannel: Fix class description. TelepathyQt4/tube-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f86731d010dd3d9c8b274973c745328bca063d9f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 11:42:38 2011 -0300 ProtocolInfo: Link to the spec. TelepathyQt4/protocol-info.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0b02054b50083b2d26c93559b26282ae010abf90 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 1 11:20:22 2011 -0300 Properly mention Telepathy and the spec where appropriate. TelepathyQt4/abstract-client.cpp | 6 +++--- TelepathyQt4/account.cpp | 10 ++++------ TelepathyQt4/async-model.dox | 5 +---- TelepathyQt4/capabilities-base.cpp | 2 +- TelepathyQt4/channel.cpp | 4 ++-- TelepathyQt4/connection-manager.cpp | 3 +-- TelepathyQt4/dbus-proxy.cpp | 2 +- TelepathyQt4/main.dox | 14 ++++++-------- TelepathyQt4/manager-file.cpp | 4 ++-- TelepathyQt4/message.cpp | 16 ++++++++-------- TelepathyQt4/pending-channel.cpp | 4 ++-- TelepathyQt4/profile.cpp | 12 ++++++------ TelepathyQt4/protocol-info.cpp | 11 +++++------ TelepathyQt4/stream-tube-channel.cpp | 6 ++---- TelepathyQt4/tube-channel.cpp | 6 ++---- doxygen.cfg.in | 1 + 16 files changed, 47 insertions(+), 59 deletions(-) commit 6bdc2ee13c5a661bc503d9ad16a4268a6f69e586 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 18:12:39 2011 -0300 examples.dox: Add contact-messenger example. TelepathyQt4/examples.dox | 17 +++++++++++++++++ TelepathyQt4/main.dox | 1 + 2 files changed, 18 insertions(+) commit 3e372dfb8e636daf6bd340e1d79ae35c76caff7a Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 17:39:00 2011 -0300 TextChannel: Improve docs for features. TelepathyQt4/text-channel.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 8c435fa088a9a15885555c7a97065c98f5d10823 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 17:38:50 2011 -0300 Contact: Improve docs. Conflicts: TelepathyQt4/contact.cpp TelepathyQt4/contact.cpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) commit 7d1adf7171b554554a85aa7bb3938ecb014e9717 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 17:38:18 2011 -0300 Connection: Improve docs. TelepathyQt4/connection.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 88a0253b965dd3bb12d71984115d584c9c7d26e6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 17:38:03 2011 -0300 Channel: Improve docs. TelepathyQt4/channel.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) commit 7e3eba601a1f8ebe122802e55dbfc95bb4f3e335 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 17:37:22 2011 -0300 Account: Improve docs for features. TelepathyQt4/account.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit a92507476aa10160f70d787238c939a4520f1474 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 17:36:51 2011 -0300 async-model.dox: Improve docs. TelepathyQt4/async-model.dox | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 188b2fa39199dcd5e55221550c68ae6377f513b9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 16:35:48 2011 -0300 examples.dox: Add protocols example. TelepathyQt4/examples.dox | 35 +++++++++++++++++++++++++++++++++++ TelepathyQt4/main.dox | 1 + 2 files changed, 36 insertions(+) commit 624531e6262e707e57c11d1585f13f1dd8c2a4ca Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 16:10:04 2011 -0300 async-model.dox: Update rationale. TelepathyQt4/async-model.dox | 45 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 23 deletions(-) commit 73ac2477abef067d901544712c043f732e812495 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 14:15:56 2011 -0300 Connection: Improve docs. TelepathyQt4/connection.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit 3b2a39a0caa88fe8b2ce98af27c47aebb469ecd0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 14:15:23 2011 -0300 Contact: Improve docs. Conflicts: TelepathyQt4/contact.cpp TelepathyQt4/contact.cpp | 391 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 365 insertions(+), 26 deletions(-) commit b5959b56b525550a32cd23534d2a95a42a5843a5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 12:38:48 2011 -0300 doxygen-header.html: Remove tags. doxygen-header.html | 2 -- 1 file changed, 2 deletions(-) commit c201c810199aece4f27f6f62cf6a0e48909faacd Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 12:45:27 2011 -0300 Channel: Move signals docs to the bottom of the class implementation. TelepathyQt4/channel.cpp | 190 +++++++++++++++++++++++------------------------ 1 file changed, 95 insertions(+), 95 deletions(-) commit ab7c7d3d6b4e377804c3dc1aa88ae25d130d2cdc Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 14:50:56 2011 -0300 Channel: Update docs. TelepathyQt4/channel.cpp | 386 ++++++++++++++++++++++++++++++----------------- 1 file changed, 245 insertions(+), 141 deletions(-) commit 1b220b846034a3fe2defce35ea58b49cec8e5be2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 14:49:55 2011 -0300 Channel: Move GroupMemberChangeDetails docs to where they belong. TelepathyQt4/channel.cpp | 118 +++++++++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 61 deletions(-) commit e27278d7699edda4e3eab3529df4c56fe8c35335 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 14:46:06 2011 -0300 Channel: Move GroupMemberChangeDetails implementation to a proper place so their docs are properly generated. TelepathyQt4/channel.cpp | 100 +++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 50 deletions(-) commit 3d1ecd86017c7e0d8b587d2c0df2136817f14405 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 12:38:04 2011 -0300 Connection: Update docs. TelepathyQt4/connection.cpp | 72 +++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 32 deletions(-) commit bb5af17db7319d6907efbf097bdc851b7b26626f Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 12:37:37 2011 -0300 Account: Update docs. TelepathyQt4/account.cpp | 79 ++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 46 deletions(-) commit edb7ba0cc4594202233d19720b915cc6ed898cdd Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 31 12:37:17 2011 -0300 AccountManager: Update docs. TelepathyQt4/account-manager.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit 4284f06cbe1a851676a7091cfb953ced82a68bf9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 26 23:24:58 2011 -0300 Connection: Improve docs. TelepathyQt4/connection.cpp | 168 +++++++++++++++++++++++++++++--------------- 1 file changed, 110 insertions(+), 58 deletions(-) commit 203b14499fe21437665f9ae16bc6cf4a4bb74ecd Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 26 23:24:43 2011 -0300 AccountManager: Improve docs. TelepathyQt4/account-manager.cpp | 59 ++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 20 deletions(-) commit 01f6bba20ee6229bcee9c2a4f58164e23dac77c7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 26 23:24:33 2011 -0300 Account: Improve docs. TelepathyQt4/account.cpp | 710 +++++++++++++++++++++++++++-------------------- 1 file changed, 411 insertions(+), 299 deletions(-) commit 1bfb5227236f55edcc9d79e5b4de1abd2cad6f4f Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 26 23:24:12 2011 -0300 doxygen.css: Properly align titles. doxygen.css | 7 +++++++ 1 file changed, 7 insertions(+) commit 7a532ffbd86ae12d4c37926916dbbd550f48fd00 Author: Olli Salli Date: Wed Jun 1 19:11:18 2011 +0300 Update NEWS NEWS | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 4206201e22220f54e5863901a3234fa4c149af81 Merge: 5ec82e3 b62edd0 Author: Olli Salli Date: Mon May 30 13:15:47 2011 +0300 Merge remote-tracking branch 'gkiagia/blocking' Reviewed-by: Olli Salli (oggis) commit b62edd004f511d84fb15b5082e56262156d17da9 Author: George Kiagiadakis Date: Thu May 26 12:58:33 2011 +0300 Bump tp-glib dependency to 0.15.1. Required to build the contactlist2 cm with ContactBlocking support. CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5ec82e3726e6c8d0537f564dedfeeb59a0646482 Merge: b348f69 63b66df Author: Olli Salli Date: Wed May 25 18:28:36 2011 +0300 Merge branch 'doxygen-trivia-0.7' Reviewed-by: Andre Magalhaes (andrunko) commit 63b66df2597093e15868b4da42d71a90ba792c37 Author: Olli Salli Date: Wed May 25 18:10:55 2011 +0300 Make doxygen skip OptionalInterfaceCache completely TelepathyQt4/optional-interface-factory.cpp | 4 ++++ TelepathyQt4/optional-interface-factory.h | 2 ++ 2 files changed, 6 insertions(+) commit 5f5f8e3c78f7dc9d32e7a3131614b3484b42c4ee Author: Olli Salli Date: Wed May 25 18:00:49 2011 +0300 Fix pkg name reference in generated tagfile and name it like Qt does This makes it also uploaded with the rest of the docs, just like Qt has it. doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 25cf160fb837ca96fccf8035bafa069056928de0 Author: Olli Salli Date: Wed May 25 17:55:59 2011 +0300 Make Qt crosslinks in uploaded docs point to doc.qt.nokia.com cmake/modules/Doxygen.cmake | 10 ++++++++-- doxygen.cfg.in | 2 +- tools/CMakeLists.txt | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 4 deletions(-) commit 05630f91b0cbdd9392b6a0f081b0512b8b716a53 Author: Olli Salli Date: Wed May 25 16:56:50 2011 +0300 Crosslink our doxygen docs to Qt documentation cmake/modules/Doxygen.cmake | 7 +++++++ doxygen.cfg.in | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) commit b348f69481e72f3239a38027ee7b59506ab1b5f1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 20:58:51 2011 -0300 Update NEWS NEWS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 12da0f97507d22a9c56518690075606ce33f3bfa Merge: 5df04b0 731cae9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 20:57:56 2011 -0300 Merge branch 'message-accessors' Reviewed-by: Olli Salli (oggis) commit 731cae95bbc4e2187be69b07fd3cd791c504d1c7 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:56:47 2011 -0300 Message: Rename supersedes to supersededToken. TelepathyQt4/message.cpp | 2 +- TelepathyQt4/message.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 78f95ef4c34995125d4af4d6dd1b06bafea9a47d Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:55:59 2011 -0300 Message: Rename DeliveryDetails errorMessage/hasErrorMessage to debugMessage/hasDebugMessage for consistency. TelepathyQt4/message.cpp | 4 ++-- TelepathyQt4/message.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 870afaaae63e5c9b403ce49350e750a8b1589bb5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:50:25 2011 -0300 Message: Remove DeliveryDetails::hasDBusError as now have a fallback code for "delivery-dbus-error". TelepathyQt4/message.cpp | 8 -------- TelepathyQt4/message.h | 1 - 2 files changed, 9 deletions(-) commit 622ac791af4dced19e19b31d0be42b970b1d0b22 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:49:12 2011 -0300 Message: Rename DeliveryDetails token/hasToken to originalToken/hasOriginalToken. TelepathyQt4/message.cpp | 4 ++-- TelepathyQt4/message.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 2c6c32b759b0ddb5518c17190ec7d441d376e035 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:45:26 2011 -0300 Message: Remove DeliveryStatus::hasStatus() as "delivery-status" is mandatory. TelepathyQt4/message.cpp | 8 -------- TelepathyQt4/message.h | 1 - 2 files changed, 9 deletions(-) commit 9cac9434efff8b200663de4c56a601151a02f747 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:42:37 2011 -0300 Message: Fallback to sender->alias() if on senderNickname() if "sender-nickname" is not present or empty. TelepathyQt4/message.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 85803b43273892a26121333f3019cd04b8d523cf Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:34:52 2011 -0300 Message: Rename DeliveryDetails echo/hasEcho to echoedMessage/hasEchoedMessage. TelepathyQt4/message.cpp | 4 ++-- TelepathyQt4/message.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit e100b21206fbb9c65e4bdc1a1d2d79ce377e428b Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 14:02:15 2011 -0300 Message: Change hasError to isError. TelepathyQt4/message.cpp | 5 +++-- TelepathyQt4/message.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) commit e8aa53d9991fca400b131319c7e75f6770f27486 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:50:41 2011 -0300 Message: Add fallback code for DeliveryDetails::dbusError() if not present. TelepathyQt4/message.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) commit 63f6fb2faf5be578ed79f86c6e9071c9b038ea5e Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:46:01 2011 -0300 Message: Return ChannelTextSendError instead of QString for DeliveryDetails::error(). TelepathyQt4/message.cpp | 6 +++--- TelepathyQt4/message.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) commit 1fe876f22762bc90e2e73d47caf201fa9879f845 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:40:43 2011 -0300 Message: Use static_cast instead of C-style casts. TelepathyQt4/message.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 919af5157fde23521720d892759245b791685697 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 12:58:30 2011 -0300 Message: Add accessors for sender-nickname and supersedes. TelepathyQt4/message.cpp | 25 +++++++++++++++++++++++++ TelepathyQt4/message.h | 3 +++ 2 files changed, 28 insertions(+) commit 4aa27e1c17b0bc50693c690dddb895a315bd0c42 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 12:37:55 2011 -0300 Message: Add accessors for delivery report. TelepathyQt4/message.cpp | 171 +++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/message.h | 43 ++++++++++++ 2 files changed, 214 insertions(+) commit b76307413e887eb914d69f44a409a9bb6d6f9e30 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 12:36:06 2011 -0300 Message: Move utility fns to an anon namespace. TelepathyQt4/message.cpp | 114 +++++++++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 58 deletions(-) commit 120e37d3cd132677087701a27e3cea902b8362d1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 12:33:01 2011 -0300 Message: Sanitize includes. TelepathyQt4/message.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 5df04b02a9addce5d9fd3ce313c0504f78be76e3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:18:05 2011 -0300 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 8a266cad2c72393254b3f8162b3ae76a4bcc1659 Merge: 7559b33 4b7e0ad Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:17:04 2011 -0300 Merge branch 'rah-mc-restart' Reviewed-by: Olli Salli (oggis) commit bb9e166d053b678f21d81451c2ae63554d8f5adc Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:05:54 2011 -0300 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 559209b9c501b4477fb9a70ac58de6df9f6485a8 Merge: 75d0210 4b7e0ad Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 13:04:07 2011 -0300 Merge branch 'rah-mc-restart' into telepathy-qt4-0.6 commit 4b7e0ad4d39cea25ad343c9e51012e3f0d12b8f6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 16 10:57:36 2011 -0300 FakeHandlerManager: Do not use C-style casts. TelepathyQt4/fake-handler-manager-internal.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 5ce89c4cb7ff740ba28f5d3cefcca87ffd238736 Author: George Kiagiadakis Date: Sun May 15 20:35:13 2011 +0300 ContactManager::Roster: Fix sanity check to check the correct list of contacts TelepathyQt4/contact-manager-roster.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 8d507cf0e593f1c51baca31140fd9294dce53f76 Author: George Kiagiadakis Date: Sun May 15 19:25:35 2011 +0300 conn-roster (& -legacy) tests: Verify that when a contact is removed from the roster but it is still blocked, it stays in allKnownContacts() tests/dbus/conn-roster-legacy.cpp | 28 +++++++++++++++++++++++----- tests/dbus/conn-roster.cpp | 28 +++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 10 deletions(-) commit cd88fa985b25e371cf524292f1ce3a75d5cacb8d Author: George Kiagiadakis Date: Sun May 15 19:20:35 2011 +0300 ContactManager::Roster: Substract ContactBlocking contacts from the ones that are to be removed from allKnownContacts This is because if a contact has been removed from the Conn.I.ContactList roster but it is still in the Conn.I.ContactBlocking roster, it should not be removed from cachedAllKnownContacts. TelepathyQt4/contact-manager-roster.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1291661b6a48372a42d66a37be8ce23f1d1ef7db Author: George Kiagiadakis Date: Sun May 15 19:14:00 2011 +0300 ContactManager::Roster: Use computeAllKnownContactsChanged() in onContactListNewContactsConstructed() This allows us to have complete control of changes in cachedAllKnownContacts, especially removals, from just one function: computeAllKnownContactsChanged(). This is useful for controlling cases where the contact must stay in cachedAllKnownContacts because it is also in some other list (ex. the deny list). TelepathyQt4/contact-manager-roster.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) commit 599076ed09bf92fdacb1ecbc08b3c95b6385594f Author: George Kiagiadakis Date: Thu Apr 28 15:10:37 2011 +0300 conn-roster test: Sync contact blocking tests with the conn-roster-legacy test The new tests are more correct, since they do not expect, for example, allKnownContactsChanged() to be emitted only once after doing changes in the roster or they do not expect contacts to be blocked when the blockContacts() / unblockContacts() pending operations finish (they might get blocked later). tests/dbus/conn-roster.cpp | 113 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 95 insertions(+), 18 deletions(-) commit 1c011727658491cef76b4102eb46e4b13073bf26 Author: George Kiagiadakis Date: Thu Apr 28 15:08:33 2011 +0300 conn-roster-legacy test: Add tests for contact blocking These tests are from now on going to test the legacy deny lists code, since conn-roster is now using Conn.I.ContactBlocking. tests/dbus/conn-roster-legacy.cpp | 208 +++++++++++++++++++++++++++++++++++++- 1 file changed, 207 insertions(+), 1 deletion(-) commit 0de81a55e0a6819f4320797de7ca29b74110752c Author: George Kiagiadakis Date: Thu Apr 28 15:07:33 2011 +0300 contactlist (legacy) cm: Implement a deny channel to use it with the conn-roster-legacy test tests/lib/glib/contactlist/contact-list-manager.c | 141 ++++++++++++++++++++-- tests/lib/glib/contactlist/contact-list-manager.h | 1 + tests/lib/glib/contactlist/contact-list.c | 4 + 3 files changed, 138 insertions(+), 8 deletions(-) commit 39d02ed90ec1f0abcb240b4947f035965050f576 Author: George Kiagiadakis Date: Thu Apr 28 00:23:48 2011 +0300 conn-roster test: Extend the test to verify that unblocked contacts that are not in other lists do not remain in allKnownContacts() tests/dbus/conn-roster.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) commit 9272c8fd09caf4c16a76df7648a75acfcae059b1 Author: George Kiagiadakis Date: Thu Apr 28 00:09:52 2011 +0300 ContactManager::Roster: Remove unblocked contacts from allKnownContacts() unless they are in some other list This was a mistake in the previous commits; contacts that are not in any of the stored/subscribe/publish/deny lists should not appear in allKnownContacts(), so after unblocking we have to compute changes to allKnownContacts() by marking the unblocked contacts as removed. TelepathyQt4/contact-manager-roster.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) commit d0f0fab5812c1605261c9d5021ae670dae6fe157 Author: George Kiagiadakis Date: Wed Apr 27 22:13:00 2011 +0300 ContactManager::Roster: Introduce a new contactListContacts set to keep track of the Conn.I.ContactList contacts TelepathyQt4/contact-manager-internal.h | 2 ++ TelepathyQt4/contact-manager-roster.cpp | 4 ++++ 2 files changed, 6 insertions(+) commit 12b2fd646dcde0770d92bba4c4dcf5d68ed37491 Author: George Kiagiadakis Date: Thu Apr 21 13:23:34 2011 +0300 conn-roster test: Adjust the tests to verify that allKnownContacts() contains blocked contacts. tests/dbus/conn-roster.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) commit 15b34199c052ca0083a058911e5f6374bd1f3472 Author: George Kiagiadakis Date: Thu Apr 21 13:16:52 2011 +0300 ContactManager::Roster: Ensure that allKnownContacts() contains blocked contacts This patch ensures that all the initially blocked contacts are inserted in cachedAllKnownContacts and that all contacts that are later blocked or unblocked are also inserted in cachedAllKnownContacts, if they were not already there. TelepathyQt4/contact-manager-roster.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit 6ecf10c33085578afd53892f03759f644fe335e1 Author: George Kiagiadakis Date: Tue Apr 19 12:04:26 2011 +0300 ContactManager::Roster: Introspect the contact list after ContactBlocking has finished introspection This ensures that FeatureRoster will not become ready before ContactBlocking has finished introspection. TelepathyQt4/contact-manager-internal.h | 7 +++++-- TelepathyQt4/contact-manager-roster.cpp | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) commit 58af7913e059b6c4ab2a097545465968939f47d8 Author: George Kiagiadakis Date: Mon Apr 18 14:25:17 2011 +0300 conn-roster test: Improve the contact blocking tests tests/dbus/conn-roster.cpp | 98 +++++++++++++++++++--------------------------- 1 file changed, 41 insertions(+), 57 deletions(-) commit e75433c86666e4b130a6fd6a4e2c3838cdf4b5b6 Author: George Kiagiadakis Date: Mon Apr 18 12:40:09 2011 +0300 ContactManager::Roster: Add debug messages for debugging contact blocking TelepathyQt4/contact-manager-roster.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 79f55b62d7a0d21e6eedbc864b688225e4ffb37c Author: George Kiagiadakis Date: Sun Apr 17 13:15:51 2011 +0300 contactlist2 cm: Implement the ContactBlocking interface tests/lib/glib/contactlist2/conn.c | 3 +++ 1 file changed, 3 insertions(+) commit 06584fc4d5d8f7639f47417ab7be2f6fce1ee853 Author: George Kiagiadakis Date: Sun Apr 17 12:41:26 2011 +0300 ContactManager::Roster: Handle the initial blocked contacts using a fake change event TelepathyQt4/contact-manager-roster.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit f016227dd04f7b401b428cdbf8f5b7e83039a753 Author: George Kiagiadakis Date: Thu Apr 14 13:48:03 2011 +0300 Contact/ContactManager: Improve the public interface for blocking/unblocking contacts. TelepathyQt4/contact-manager-roster.cpp | 10 +++++ TelepathyQt4/contact-manager.cpp | 67 ++++++++++++++++++++++++--------- TelepathyQt4/contact-manager.h | 9 +++-- TelepathyQt4/contact.cpp | 50 ++++++++++++++++++++---- TelepathyQt4/contact.h | 6 ++- examples/roster/roster-widget.cpp | 6 ++- tests/dbus/conn-roster.cpp | 8 ++-- 7 files changed, 119 insertions(+), 37 deletions(-) commit 0409800dab913978f208bb44d4dafaaff89371e3 Author: George Kiagiadakis Date: Thu Apr 14 12:53:45 2011 +0300 ContactManager::Roster: Request only the ContactBlockingCapabilities property from the ContactBlocking interface TelepathyQt4/contact-manager-internal.h | 2 +- TelepathyQt4/contact-manager-roster.cpp | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) commit 202a2c9a0760d6d9a985e73bd6e51fd46eb0ff08 Author: George Kiagiadakis Date: Thu Apr 14 12:42:10 2011 +0300 ContactManager::Roster: Finish the implementation of Conn.I.ContactBlocking introspection TelepathyQt4/contact-manager-internal.h | 20 +++++- TelepathyQt4/contact-manager-roster.cpp | 111 +++++++++++++++++++++++++++----- 2 files changed, 112 insertions(+), 19 deletions(-) commit 5385fe2cda102a78a4495f4855ea8863a70f90e2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 20:16:11 2011 +0300 Contact: Improve the documentation regarding the contact blocking methods TelepathyQt4/contact.cpp | 28 +++++++++++++++++----------- TelepathyQt4/contact.h | 2 +- 2 files changed, 18 insertions(+), 12 deletions(-) commit a9bebcb6044bb22139989ec03f372b134b85a3bf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 20:15:15 2011 +0300 ContactManager: Improve the documentation regarding the contact blocking methods TelepathyQt4/contact-manager.cpp | 26 +++++++++++--------------- TelepathyQt4/contact-manager.h | 6 +++--- 2 files changed, 14 insertions(+), 18 deletions(-) commit 4c216fd034a5ae099a26b3426c9441791692560b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 20:10:58 2011 +0300 ContactManager::Roster: Improve the Conn.I.ContactBlocking handling code TelepathyQt4/contact-manager-internal.h | 16 +-- TelepathyQt4/contact-manager-roster.cpp | 186 ++++++++++++++++---------------- 2 files changed, 106 insertions(+), 96 deletions(-) commit 6a52b10fc68a878f238891cd1183834e545ddf4d Author: Alvaro Soliverez Date: Fri Mar 25 04:08:15 2011 -0300 conn-roster test: Add tests for Connection.ContactBlocking. tests/dbus/conn-roster.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) commit 0b9f0c6a2d94e89b61be94e0a13d2edd7235cfbb Author: Alvaro Soliverez Date: Tue Mar 15 20:10:52 2011 -0700 ContactManager: Implement contact blocking and report abuse using Connection.ContactBlocking. TelepathyQt4/contact-manager-internal.h | 14 ++- TelepathyQt4/contact-manager-roster.cpp | 184 ++++++++++++++++++++++++++++---- TelepathyQt4/contact-manager.cpp | 34 +++++- TelepathyQt4/contact-manager.h | 3 + TelepathyQt4/contact.cpp | 17 ++- TelepathyQt4/contact.h | 1 + 6 files changed, 229 insertions(+), 24 deletions(-) commit d09634bb81452dab0f7e395ad10a67f71a6bef82 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 12 16:39:34 2011 -0300 FakeHandlerManager: Keep only one FakeHandler per bus. TelepathyQt4/client-registrar-internal.h | 20 +---- TelepathyQt4/client-registrar.cpp | 26 +----- TelepathyQt4/fake-handler-manager-internal.cpp | 105 +++++++++++++++++++------ TelepathyQt4/fake-handler-manager-internal.h | 26 ++++-- TelepathyQt4/pending-channel.cpp | 10 +-- tests/dbus/account-channel-dispatcher.cpp | 5 +- tests/dbus/client-factories.cpp | 8 ++ tests/dbus/client.cpp | 8 ++ 8 files changed, 129 insertions(+), 79 deletions(-) commit 02e3d46630dc3677a619642af13ba5399fea5e94 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 11 11:32:51 2011 -0300 account-channel-dispatcher test: Improve test for HandledChannels. tests/dbus/account-channel-dispatcher.cpp | 148 ++++++++++++++++++++++++++---- 1 file changed, 130 insertions(+), 18 deletions(-) commit aca21b13930d065f70ebfe866e5de949cc96095d Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 11 11:32:26 2011 -0300 FakeHandlerManager: Use QObject::destroyed instead of our own invalidated signal. TelepathyQt4/fake-handler-manager-internal.cpp | 9 +++++---- TelepathyQt4/fake-handler-manager-internal.h | 5 +---- 2 files changed, 6 insertions(+), 8 deletions(-) commit 31687b84575217409d32db129b0bc0000d0c4797 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 10 15:55:15 2011 -0300 account-channel-dispatcher test: Improve test for HandledChannels. tests/dbus/account-channel-dispatcher.cpp | 101 ++++++++++++++++++------------ 1 file changed, 60 insertions(+), 41 deletions(-) commit 0ccdbeab668d36d024d511aa798d4a5442a6bc88 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 10 15:38:34 2011 -0300 FakeHandlerManager: Register FakeHandler per registrar, not per dbus connection. TelepathyQt4/fake-handler-manager-internal.cpp | 73 +++++++++++++++----------- TelepathyQt4/fake-handler-manager-internal.h | 27 +++++++--- TelepathyQt4/pending-channel.cpp | 5 +- 3 files changed, 62 insertions(+), 43 deletions(-) commit 4287c588366cb8f7cc927cb3682284ed9614ab1c Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 10 14:58:25 2011 -0300 FakeHandlerManager: Rename header/source file to include -internal in the name and fixed coding style. TelepathyQt4/CMakeLists.txt | 5 +- TelepathyQt4/fake-handler-manager-internal.cpp | 95 ++++++++++++++++++++++++++ TelepathyQt4/fake-handler-manager-internal.h | 70 +++++++++++++++++++ TelepathyQt4/fake-handler-manager.cpp | 68 ------------------ TelepathyQt4/fake-handler-manager.h | 80 ---------------------- TelepathyQt4/pending-channel.cpp | 2 +- 6 files changed, 169 insertions(+), 151 deletions(-) commit d54f88b5fa28633b97d009ec72524f881c522515 Author: Paolo Capriotti Date: Mon May 9 12:30:51 2011 +0100 Add test to check that a channel created with RaH is contained in the HandledChannels property of some handler. tests/dbus/account-channel-dispatcher.cpp | 72 +++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 8 deletions(-) commit c2eb116c2ac27a5443392fae6fdd6705997dc45a Author: Paolo Capriotti Date: Fri May 6 12:04:25 2011 +0100 ClientHandlerAdaptor: store handled channels as bare pointers. TelepathyQt4/client-registrar-internal.h | 7 ++++--- TelepathyQt4/client-registrar.cpp | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) commit c81083b63108ac9d34f445603b6e317e59df5452 Author: Paolo Capriotti Date: Mon May 9 09:38:49 2011 +0100 Delete FakeHandler instances when all their channels are invalidated. TelepathyQt4/fake-handler-manager.cpp | 12 ++++++++---- TelepathyQt4/fake-handler-manager.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) commit 4cd861f2b1f3b5327d7f50f8a27d5aff4af9e5e4 Author: Paolo Capriotti Date: Fri May 6 11:50:12 2011 +0100 RequestTemporaryHandler: use a weak reference to channel. RTH may be kept alive through the whole lifetime of its channel if it happens to be stored in FakeHandlerManager, so its reference to the channel should be weak to allow the channel to be destroyed. TelepathyQt4/handled-channel-notifier.cpp | 11 +++++++---- TelepathyQt4/pending-channel.cpp | 2 +- TelepathyQt4/request-temporary-handler-internal.cpp | 18 ++++++++++-------- TelepathyQt4/request-temporary-handler-internal.h | 6 ++++-- 4 files changed, 22 insertions(+), 15 deletions(-) commit 4fbf37aaee4c47bfd41c3d3d3720afab6b603dd7 Author: Paolo Capriotti Date: Fri May 6 10:35:11 2011 +0100 FakeHandlerManager: fix leak when a channel is destroyed before being invalidated. TelepathyQt4/fake-handler-manager.cpp | 9 +++++++++ TelepathyQt4/fake-handler-manager.h | 1 + 2 files changed, 10 insertions(+) commit 9acf07063eb24de341eab579ed10038f4ebf7ae6 Author: Paolo Capriotti Date: Fri May 6 10:28:25 2011 +0100 FakeHandlerManager: use (name, baseService) to indentify a dbus connection. TelepathyQt4/fake-handler-manager.cpp | 6 +++--- TelepathyQt4/fake-handler-manager.h | 4 ++-- TelepathyQt4/pending-channel.cpp | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) commit 006d2eedee81a93e8b48fb5f54906147b0c867c5 Author: Paolo Capriotti Date: Fri May 6 10:01:38 2011 +0100 Keep RequestTemporaryHandler alive through the lifetime of an R&H channel. TelepathyQt4/CMakeLists.txt | 2 + TelepathyQt4/fake-handler-manager.cpp | 55 ++++++++++++++++++++++++ TelepathyQt4/fake-handler-manager.h | 79 +++++++++++++++++++++++++++++++++++ TelepathyQt4/pending-channel.cpp | 12 ++++++ 4 files changed, 148 insertions(+) commit 30b5a728bdf4524f045581487ac2b371bd59de8c Author: Paolo Capriotti Date: Fri May 6 09:32:00 2011 +0100 Ignore Server and Limit parameters for ContactSearch if not supported. TelepathyQt4/account.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) commit 173713aec484ad4e89c22a95e998de3d145bebe5 Author: Paolo Capriotti Date: Mon May 9 09:12:43 2011 +0100 account.cpp: move anonymous namespace inside Tp. TelepathyQt4/account.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 7559b3388229b3f12a0c8cf9a7c3c51beeeb1722 Author: Olli Salli Date: Fri May 6 19:40:45 2011 +0300 Make master lead to 0.7.0 CMakeLists.txt | 2 +- NEWS | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) commit 75d0210fa19df34c1b5c996a443a422717e5004d Author: Olli Salli Date: Fri May 6 19:37:49 2011 +0300 Set up 0.6 stable branch CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6d5f4fa647cd4ee96cb1f80678b7262c0560515d Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 6 11:25:55 2011 -0300 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 95743a641a03d68ebdf66f5a814aa810f74dc9a9 Merge: 8e4082a 602fa47 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 6 11:24:37 2011 -0300 Merge branch 'balance' Reviewed-by: Olli Salli (oggis) commit 8e4082ae09b175b8647577d55a07bb94eadd411c Author: Olli Salli Date: Fri May 6 17:22:40 2011 +0300 Update NEWS NEWS | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 03f93689fdd7211bdb0e9e593d39650df280fd1e Author: Olli Salli Date: Fri May 6 14:43:41 2011 +0300 Pass new values for D-Bus properties boxed in variants, not raw The python test service used in the DBusProperties test is lenient enough to allow passing unboxed values, but services in general aren't. Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/abstract-interface.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 602fa4752c6d33e4039b6bf5f7163da7ac50ad46 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 6 11:09:42 2011 -0300 Connection: Initialize accountBalance private member. TelepathyQt4/connection.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 823c106bcca27a0b4dfdd91eddc37b5a41531619 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 1 18:56:43 2011 -0300 Start 0.5.17 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit edf471b92dda095dd0464a508a02f0d8dda06b5b Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 1 18:42:29 2011 -0300 Prepare release 0.5.16 CMakeLists.txt | 4 ++-- NEWS | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 2005bf8379e1fb3e757553470486dbac5dcce22d Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 1 18:40:14 2011 -0300 Update NEWS NEWS | 5 +++++ 1 file changed, 5 insertions(+) commit d554e9dedafd33796183c1bb6e198cded73f6b5a Merge: cba8c2a c38fb3d Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 1 18:34:42 2011 -0300 Merge branch 'observers' Reviewed-by: Olli Salli (oggis) commit c38fb3d06ec54b1f36b8774b1ce9154bb51e6c00 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 1 18:29:23 2011 -0300 simple-observer test: Add some code comments. tests/dbus/simple-observer.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) commit 2703d094510919d301bd7cda22171ece70e1b755 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 29 18:44:56 2011 -0300 SimpleTextObserver: Add a debug on construction. TelepathyQt4/simple-text-observer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b7d8aaf6831205a8bf5bad2f529cb8742ad3b1c0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 29 18:44:46 2011 -0300 SimpleCallObserver: Add a debug on construction. TelepathyQt4/simple-call-observer.cpp | 1 + 1 file changed, 1 insertion(+) commit 03da83ed0cd5fbc0c2b183eec5a634be60268967 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 29 18:28:56 2011 -0300 SimpleObserver: Print the name of the observer being used. TelepathyQt4/simple-observer-internal.h | 7 ++++++- TelepathyQt4/simple-observer.cpp | 17 +++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) commit 5f929186c4784d9b3f4f6db63964a4fe7b676b67 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 29 00:56:58 2011 -0300 simple-observer test: Add test for simple observers. tests/dbus/CMakeLists.txt | 1 + tests/dbus/simple-observer.cpp | 711 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 712 insertions(+) commit ebde78312759338d10b5a86c1b662ab8d753e662 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 29 18:29:40 2011 -0300 test lib: Use different loop exit codes for expectSuccessfulProperty return, to properly check waitForProperty actually worked. tests/lib/test.cpp | 4 ++-- tests/lib/test.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 966c5a338ebb53075de04912c6ff34cc5a702be7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 28 22:15:30 2011 -0300 contact-messenger test: Enable test for observers memory leak. tests/dbus/contact-messenger.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) commit eb431cebd2ea66091a56538add5ff882bdf09f18 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 28 22:14:28 2011 -0300 SimpleObserver: Fix memory leak. TelepathyQt4/simple-observer-internal.h | 9 +++++---- TelepathyQt4/simple-observer.cpp | 24 +++++++++++------------- 2 files changed, 16 insertions(+), 17 deletions(-) commit 6e98ea05e26bdafa1f8b4c4dd47728438e148731 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 28 20:53:48 2011 -0300 SimpleObserver: Export it :P. TelepathyQt4/simple-observer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5b7edb1676e70c88b73e47bac2ed507872199406 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 28 20:19:28 2011 -0300 SimpleObserver: Avoid emitting redundant signals. TelepathyQt4/simple-observer.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 07f7a9adf329218615dbfe00957e1f5bfd3f1186 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 27 18:46:21 2011 -0300 Properly install channel-class-features.h. TelepathyQt4/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) commit 8016440337c4f5eb99c515811d959e230ef96978 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 15:39:26 2011 -0300 SimpleObserver: Only filter channels once contact id is normalized and make sure channels() only return the channels we are interested. Also populate the internal list of channels with current internal observer channels on construction. TelepathyQt4/simple-observer-internal.h | 20 +++++-- TelepathyQt4/simple-observer.cpp | 100 ++++++++++++++++++++++---------- 2 files changed, 83 insertions(+), 37 deletions(-) commit dd883d015f83415b622d2b36fa65db33f3121ebb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 13:25:35 2011 -0300 Properly install ChannelCLassFeatures instead of ChannelFeatureSpec. TelepathyQt4/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 0e50f6c992fb8a8ebff9fc0448cce5c63b41e89e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 13:20:49 2011 -0300 SimpleObserver: Enable fast lookup on registered accounts by using QHash/QSet instead of QList. TelepathyQt4/simple-observer-internal.h | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) commit 9be17fb028cd3db22eddf22b27da941e2b48b6fb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 13:16:16 2011 -0300 SimpleObserver: Properly handle extra channel features in shared observers. TelepathyQt4/simple-observer-internal.h | 13 +++++++++---- TelepathyQt4/simple-observer.cpp | 9 ++++----- 2 files changed, 13 insertions(+), 9 deletions(-) commit af74d00b2c904ce33c74ad063bce3aee3e91dc95 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 13:14:49 2011 -0300 features test: Test qHash(features). tests/CMakeLists.txt | 1 + tests/features.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) commit d90fad4d01964f96501bb27dfebc8ba730970418 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 12:55:14 2011 -0300 Features: Add qHash. TelepathyQt4/feature.h | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 71fde88a8e2ff694ea7a3849e74c9c880ae4374b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 12:16:25 2011 -0300 SimpleObserver: Cache using QSet instead of ChannelClassSpecList. TelepathyQt4/simple-observer-internal.h | 3 ++- TelepathyQt4/simple-observer.cpp | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) commit bd1cb03a15c3ec25e5699b3d23f32d9d9a03cd30 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 12:15:31 2011 -0300 ChannelClassSpec: Add qHash(QSet). TelepathyQt4/channel-class-spec.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit 34c0a44bcefb3398c966747134e9083cd5b9714d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 11:04:34 2011 -0300 channel-class-spec test: Stress test qHash(ChannelClassSpecList). tests/channel-class-spec.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) commit b87452fde4e572c2ff5f540cf42b1949baecd08a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 26 11:04:17 2011 -0300 ChannelClassSpecList: Fix qHash. TelepathyQt4/channel-class-spec.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit e400bd4b564ec21d5a89320fbc88eaedc564a8f3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 23:14:32 2011 -0300 SimpleObserver: Enable recover. TelepathyQt4/simple-observer.cpp | 2 +- tests/dbus/contact-messenger.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit beada1ed1e1634e3535a7b368524981acf1d0f8a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:49:54 2011 -0300 SimpleObserver: Fixed typo in ChannelInvalidationInfo. TelepathyQt4/simple-observer-internal.h | 10 +++++----- TelepathyQt4/simple-observer.cpp | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) commit 3f041dc9729782f609ae75a5a93bfda5b8262525 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:36:06 2011 -0300 ContactMessenger: Add textChats accessor. TelepathyQt4/contact-messenger.cpp | 11 +++++++++++ TelepathyQt4/contact-messenger.h | 2 ++ 2 files changed, 13 insertions(+) commit 768ca41435e2b129dae3f9d1646473fe051d4132 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 21:21:27 2011 -0300 SimpleObserver: Cache internal observers. TelepathyQt4/simple-observer-internal.h | 115 ++++++++++++++--------- TelepathyQt4/simple-observer.cpp | 156 +++++++++++++++++++------------- TelepathyQt4/simple-observer.h | 7 +- 3 files changed, 167 insertions(+), 111 deletions(-) commit ae7b42dd7638ada83e81f4bc95c325fdc48061c7 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:27:48 2011 -0300 channel-class-spec test: Test hash methods. tests/CMakeLists.txt | 3 +- tests/channel-class-spec.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) commit 639a2e098c1fa371a27de918d1a40727994d41f6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:26:49 2011 -0300 ChannelClassSpec/List: Add qHash allowing usage with QHash/QSet/QPair. TelepathyQt4/channel-class-spec.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) commit fd0d074b235451e526fbe0e30de359cd1726cc04 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:25:57 2011 -0300 FixedFeatureFactory: Add Q_OBJECT macro to allow usage of qobject_cast. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/fixed-feature-factory.cpp | 2 ++ TelepathyQt4/fixed-feature-factory.h | 3 +++ 3 files changed, 6 insertions(+) commit 996226b7ae8355a78cde7b5be2e5da27bbbc4901 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:25:32 2011 -0300 ChannelFactory: Add Q_OBJECT macro to allow usage of qobject_cast. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/channel-factory.cpp | 2 ++ TelepathyQt4/channel-factory.h | 1 + 3 files changed, 4 insertions(+) commit 98f102fa0753c0cfcea1d99664e718553ad0dcc0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 22:24:55 2011 -0300 AccountFactory: Add Q_OBJECT macro to allow usage of qobject_cast. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/account-factory.cpp | 2 ++ TelepathyQt4/account-factory.h | 3 +++ 3 files changed, 6 insertions(+) commit 29e7453e3dc6651038e24dfda6d9f411f8c3514f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 19:57:38 2011 -0300 SimpleCallObserver: Remove support for filtering by call type. TelepathyQt4/simple-call-observer.cpp | 60 +++++++++++------------------------ TelepathyQt4/simple-call-observer.h | 23 +++----------- 2 files changed, 24 insertions(+), 59 deletions(-) commit 9e5d6581116b68e0fa76bd3e583bafd74be8135e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 19:51:40 2011 -0300 SimpleTextObserver: Fix crash opportunity. TelepathyQt4/simple-text-observer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 760cb444004f98cde1089a514c182faa80494213 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 19:50:47 2011 -0300 SimpleCallObserver: Warn and ignore channel if channel received is not a SM channel. TelepathyQt4/simple-call-observer.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) commit ebf7e0d1e5566f0df7947b61581d12cac2f99fea Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 19:40:30 2011 -0300 SimpleCallObserver: Add error name/message to streamedMediaCallEnded signal. TelepathyQt4/simple-call-observer.cpp | 8 +++++--- TelepathyQt4/simple-call-observer.h | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) commit b20c5f1eb333ee31d14ee5ef0e0a34f6a2bd8a1d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 19:37:57 2011 -0300 SimpleObserver: Remove timestamp from signals. TelepathyQt4/simple-call-observer.cpp | 25 +++++++--------- TelepathyQt4/simple-call-observer.h | 13 +++------ TelepathyQt4/simple-observer-internal.h | 24 +++++---------- TelepathyQt4/simple-observer.cpp | 52 ++++++++++++--------------------- TelepathyQt4/simple-observer.h | 12 +++----- TelepathyQt4/simple-text-observer.cpp | 4 +-- 6 files changed, 46 insertions(+), 84 deletions(-) commit 12091697a087d8648e5d21af7a66ab5f265a7dd8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 25 19:30:29 2011 -0300 Rename ChannelFeatureSpec to ChannelClassFeatures. TelepathyQt4/ChannelClassFeatures | 13 ++++++++++ TelepathyQt4/ChannelFeatureSpec | 13 ---------- TelepathyQt4/channel-class-features.h | 45 +++++++++++++++++++++++++++++++++ TelepathyQt4/channel-factory.cpp | 8 +++--- TelepathyQt4/channel-feature-spec.h | 45 --------------------------------- TelepathyQt4/simple-call-observer.cpp | 2 +- TelepathyQt4/simple-observer-internal.h | 8 +++--- TelepathyQt4/simple-observer.cpp | 18 ++++++------- TelepathyQt4/simple-observer.h | 20 +++++++-------- TelepathyQt4/simple-text-observer.cpp | 2 +- 10 files changed, 87 insertions(+), 87 deletions(-) commit eae30e415b31ec7c0842205e882c72cbf6d8d884 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 07:32:22 2011 -0300 SimpleTextObserver: Add textChats accessor. TelepathyQt4/simple-text-observer.cpp | 17 +++++++++++++++++ TelepathyQt4/simple-text-observer.h | 2 ++ 2 files changed, 19 insertions(+) commit 3495655ab0ac984cf9f4c42a1d764793a9518fb4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 07:32:06 2011 -0300 SimpleCallObserver: Add streamedMediaCalls accessor. TelepathyQt4/simple-call-observer.cpp | 31 +++++++++++++++++++++++++------ TelepathyQt4/simple-call-observer.h | 2 ++ 2 files changed, 27 insertions(+), 6 deletions(-) commit 50754b4037b1c6eda20090ed07ddb1fc4d6e4dc3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 07:04:42 2011 -0300 ChannelFactory: Use ChannelFeatureSpec. TelepathyQt4/channel-factory.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 735473fe9813fe527f8639f9e651f039027907e6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 06:24:56 2011 -0300 SimpleTextObserver: Use SimpleObserver. TelepathyQt4/simple-observer.h | 1 + TelepathyQt4/simple-text-observer-internal.h | 132 +--------- TelepathyQt4/simple-text-observer.cpp | 350 +++++---------------------- TelepathyQt4/simple-text-observer.h | 13 +- 4 files changed, 66 insertions(+), 430 deletions(-) commit 21767e47af1e92dbb8b1fc46f747292c729b7228 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 05:58:33 2011 -0300 Add SimpleCallObserver helper class for observing calls. TelepathyQt4/CMakeLists.txt | 4 + TelepathyQt4/SimpleCallObserver | 13 ++ TelepathyQt4/simple-call-observer.cpp | 277 ++++++++++++++++++++++++++++++++++ TelepathyQt4/simple-call-observer.h | 110 ++++++++++++++ TelepathyQt4/simple-observer.h | 2 + TelepathyQt4/types.h | 2 + 6 files changed, 408 insertions(+) commit 701e9ad5fd7389d49350eb508a7428ec820d2649 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 05:30:04 2011 -0300 SimpleObserver: Add support for filtering channels by contact. TelepathyQt4/simple-observer-internal.h | 50 +++++- TelepathyQt4/simple-observer.cpp | 289 ++++++++++++++++++++++++++++---- TelepathyQt4/simple-observer.h | 34 ++++ 3 files changed, 338 insertions(+), 35 deletions(-) commit d7d7df6026ea81d99cde43440c68116fd60f4685 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 04:44:02 2011 -0300 Add SimpleObserver helper class for observing channels. TelepathyQt4/CMakeLists.txt | 6 + TelepathyQt4/SimpleObserver | 13 ++ TelepathyQt4/simple-observer-internal.h | 171 +++++++++++++++ TelepathyQt4/simple-observer.cpp | 375 ++++++++++++++++++++++++++++++++ TelepathyQt4/simple-observer.h | 71 ++++++ TelepathyQt4/types.h | 2 + 6 files changed, 638 insertions(+) commit 51a87d2914d3a5a194d522be347e7d681b68e922 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 04:34:28 2011 -0300 Add ChannelFeatureSpec type to be used by SimpleObserver. TelepathyQt4/CMakeLists.txt | 8 ++++--- TelepathyQt4/ChannelFeatureSpec | 13 +++++++++++ TelepathyQt4/channel-feature-spec.h | 45 +++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) commit cba8c2ad8059c4627c62904848c748e04b24cb6f Author: Olli Salli Date: Mon Apr 25 16:56:45 2011 +0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit f3328b3f63c139d8f54871dd39f4c69662b85f4d Merge: 62ace22 18f6cc2 Author: Olli Salli Date: Mon Apr 25 16:54:18 2011 +0300 Merge branch 'useless-feature-check' Reviewed-by: Martin Klapetek (mck182) Reviewed-by: Andre Magalhaes (andrunko) commit 18f6cc2e4c1dc203270043fd0de77619808aa9db Author: Olli Salli Date: Mon Apr 25 15:47:22 2011 +0300 Remove QDBusServiceWatcher feature check Redundant as we depend on Qt 4.6 nowadays. CMakeLists.txt | 15 --------------- TelepathyQt4/dbus-proxy.cpp | 8 -------- config.h.in | 2 -- 3 files changed, 25 deletions(-) commit 53876bd4000c5e1375d9abbcb84ed1d3f4d592a9 Author: Olli Salli Date: Mon Apr 25 15:44:24 2011 +0300 Remove QDBusVariant operator== feature check Redundant as we depend on Qt 4.6 nowadays. CMakeLists.txt | 9 --------- TelepathyQt4/types.cpp | 13 ------------- config.h.in | 1 - 3 files changed, 23 deletions(-) commit 62ace223e9b4a268edcb4d1783a8766eef3526f4 Author: Olli Salli Date: Mon Apr 25 14:59:42 2011 +0300 Update NEWS NEWS | 6 ++++++ 1 file changed, 6 insertions(+) commit a85d6b341d7752ec5c70f19a29309a987341aca1 Merge: 0bc545c 2051a17 Author: Olli Salli Date: Mon Apr 25 14:54:10 2011 +0300 Merge branch 'racy-groups' Reviewed-by: Andre Magalhaes (andrunko) commit 2051a1760d4086a80528e22837fec474cbcee09b Author: Olli Salli Date: Mon Apr 25 13:52:46 2011 +0300 RosterGroups tests: Test preparing FeatureRosterGroups after StateSuccess is reached tests/dbus/conn-roster-groups-legacy.cpp | 79 ++++++++++++++++++++++++++++++++ tests/dbus/conn-roster-groups.cpp | 79 ++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+) commit 7b1c48da69e1e7d6be270dddb549b9e6efb907af Author: Olli Salli Date: Mon Apr 25 00:13:40 2011 +0300 ContactList roster: Make roster groups actually work The roster code failed to query the contact attributes telling their groups correctly, because ContactManager::supportedFeatures() didn't know about the corresponding Contact feature. The unit test for roster groups was interesting. It had the following paradigm: - create group B - copy all contacts which were in group A to group B - verify that group A and B have the same contacts This, however, passes even if the code fails to discover ANY contacts in group A (because an empty group is equal to another empty group). TelepathyQt4/contact-manager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 705f955bda265bb2a87ac6dbc6982cc4be0279ec Author: Olli Salli Date: Sun Apr 24 23:59:30 2011 +0300 ContactList roster: only enter StateSuccess when groups are done, if requested TelepathyQt4/contact-manager-roster.cpp | 37 ++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) commit 7967002f1fb2e5199c3e9f01d728b87968fd6cc1 Author: Olli Salli Date: Sun Apr 24 23:48:37 2011 +0300 ContactList roster: Fix SIGSEGV crash when Groups property fetch fails This allows the updated test to proceed further. Which uncovers the fact, that ContactGroups didn't actually ever discover initial contact groups correctly with CMs implementing the new ContactList API in any of the last 13 tp-qt4 releases, ever since we supposedly gained support for the interface. TelepathyQt4/contact-manager-roster.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit e5977a41b17cab32db17b5cbc49297bf91206054 Author: Olli Salli Date: Sun Apr 24 23:44:39 2011 +0300 ContactList roster: Test StateSuccess ordering Uncovers the fact that similarly to legacy roster, Groups aren't waited for... but also uncovers a SIGSEGV crash! tests/dbus/conn-roster-groups.cpp | 101 ++++++++++++++++++++++++++++++++++++++ tests/dbus/conn-roster.cpp | 3 ++ 2 files changed, 104 insertions(+) commit 50760e2d586ed9606e1ca44891f32a2c9e97c9c5 Author: Olli Salli Date: Sun Apr 24 22:12:39 2011 +0300 Legacy roster: Enter StateSuccess only once both roster and groups are introspected, if requested TelepathyQt4/contact-manager-internal.h | 3 +++ TelepathyQt4/contact-manager-roster.cpp | 38 +++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 6 deletions(-) commit 6479c604abb5ad8db69dea7bac2d1d4f7880789f Author: Olli Salli Date: Sun Apr 24 22:11:02 2011 +0300 Legacy roster: Test that StateSuccess is entered at a sane time Shows that it doesn't actually wait for roster groups introspection to finish (!) tests/dbus/conn-roster-groups-legacy.cpp | 98 ++++++++++++++++++++++++++++++++ tests/dbus/conn-roster-legacy.cpp | 3 + 2 files changed, 101 insertions(+) commit 945b531eedb5608409c2f9fd7205070ccbecfaec Author: Olli Salli Date: Sun Apr 24 22:07:46 2011 +0300 TestConnRosterGroups(Legacy): Make cleanup() more foolproof In particular, allows tests which don't fully wait for a connection to get connected and finish Connected introspection. tests/dbus/conn-roster-groups-legacy.cpp | 27 ++++++++++----------------- tests/dbus/conn-roster-groups.cpp | 27 ++++++++++----------------- 2 files changed, 20 insertions(+), 34 deletions(-) commit 0bc545c849ab02d229ddc21cf2b3cb2033b99dfa Author: Andre Moreira Magalhaes (andrunko) Date: Sun Apr 24 15:50:01 2011 -0300 Update NEWS NEWS | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit fbfee9933bef792209dd430d5d573b7618ae01d4 Merge: 0063c79 62ebe3d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Apr 24 15:45:24 2011 -0300 Merge branch 'features' Reviewed-by: Olli Salli (oggis) commit 0063c79b4b192acae0b4427e801fa442aed375d9 Merge: d93f0b5 a17358c Author: Andre Moreira Magalhaes (andrunko) Date: Sun Apr 24 15:45:03 2011 -0300 Merge branch 'presence-status-max' Reviewed-by: Olli Salli (oggis) commit a17358c2629c8a0c2bad6f41c1c2236dc037925a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 17:24:45 2011 -0300 Bump tp-glib dep to >= 0.14.5 CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2981083aaf9652286a84ee9d49d38434d8b98942 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 17:14:28 2011 -0300 ConnectionLowlevel: Improved debugs for allowedPresenceStatuses and maxPresenceStatusMessageLength. TelepathyQt4/connection.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 29b42880db7dc5895094b3e74b10678fac5676d6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 17:14:07 2011 -0300 ConnectionLowlevel: Update docs for maxPresenceStatusMessageLength. TelepathyQt4/connection.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit b91aec609e3ca7a6c3071f198c748b7d0bb04eb0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 17:12:07 2011 -0300 Account: Update docs for maxPresenceStatusMessageLength. TelepathyQt4/account.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 3351eb068befaeefabf95e7137ce418216da89c3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 17:04:43 2011 -0300 ConnectionLowlevel/Account: Rename maximumPresenceStatusMessageLength to maxPresenceStatusMessageLength. TelepathyQt4/account.cpp | 4 ++-- TelepathyQt4/account.h | 2 +- TelepathyQt4/connection-lowlevel.h | 2 +- TelepathyQt4/connection.cpp | 4 ++-- tests/dbus/conn-basics.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) commit e664783dcfc0f4005e187774a127f8e0624f9178 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 14 03:20:06 2011 -0300 conn-basics test: Add test for Conn.SimplePresence.MaximumStatusMessageLength. tests/dbus/conn-basics.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 26a17f28a50f587a01b3d1c12a77df6c54827b8a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 14 03:14:48 2011 -0300 contacts-conn example cm: Update from tp-glib tests/lib/glib/CMakeLists.txt | 2 + tests/lib/glib/contact-list-manager.c | 745 ++++++++++++++++++++++++++++++++++ tests/lib/glib/contact-list-manager.h | 69 ++++ tests/lib/glib/contacts-conn.c | 85 +++- tests/lib/glib/contacts-conn.h | 6 +- 5 files changed, 903 insertions(+), 4 deletions(-) commit 45ea0862a54c8a40de48c0b3062d0695ad272d74 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 14 02:13:39 2011 -0300 Account: Add method to return the maximum allowed length for presence status messages. TelepathyQt4/account.cpp | 28 ++++++++++++++++++++++++++++ TelepathyQt4/account.h | 1 + 2 files changed, 29 insertions(+) commit 39020cc5027da9ef45cad7b856f3a8c270651975 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 14 02:13:09 2011 -0300 Connection: Add support for Conn.SimplePresence.MaximumStatusMessageLength. TelepathyQt4/connection-lowlevel.h | 2 ++ TelepathyQt4/connection.cpp | 54 +++++++++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 6 deletions(-) commit d93f0b5215b7e5d791f56674d054d68a544673d3 Author: Olli Salli Date: Sun Apr 24 15:30:05 2011 +0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 1fbe74d2d0ff17d808e785079a1cf4fda0c82709 Merge: 50507dd e68e707 Author: Olli Salli Date: Sun Apr 24 15:21:58 2011 +0300 Merge remote-tracking branch 'andrunko/contact-sanitize' Reviewed-by: Olli Salli (oggis) commit 50507ddc4cf373609fffd4f3d79b54fbd232b4ef Author: Olli Salli Date: Sun Apr 24 15:21:28 2011 +0300 Update NEWS NEWS | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit 890800ba1565941d339d2505e91bf670054777e0 Merge: eb93b18 db83e71 Author: Olli Salli Date: Sun Apr 24 15:11:56 2011 +0300 Merge branch 'conn-botchup' Reviewed-by: Andre Magalhaes (andrunko) commit db83e71583cf5686c242d0e508d7bf210091bd4f Author: Olli Salli Date: Sun Apr 24 15:07:43 2011 +0300 Fix Qt 4.7 race in ConnIntrospectCornerCases tests/dbus/conn-introspect-cornercases.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 77b1549dce67dcd0db7e50a675a3d61fe59744d2 Author: Olli Salli Date: Sun Apr 24 12:51:02 2011 +0300 Connection: Fix crash on consecutive self handle changes TelepathyQt4/connection.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 4d4bb14cda8d8dc067cd05921b8ebf885324336d Author: Olli Salli Date: Sun Apr 24 12:12:14 2011 +0300 Test consecutive self handle changes tests/dbus/conn-introspect-cornercases.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit eb93b18e70c086983fe1ef1bef0f566edc2bd39e Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 23 16:43:28 2011 -0300 Update NEWS NEWS | 6 ++++++ 1 file changed, 6 insertions(+) commit bdede71c94f423eb33b3c00a8625da1e35260c4c Merge: ae3e939 73ebcc2 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 23 16:41:50 2011 -0300 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit ae3e9399c23c3fd2d437d98de7c9e24423dea511 Merge: cf6997e c7808ef Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 23 16:41:25 2011 -0300 Merge branch 'spec-0.22.0' Reviewed-by: Olli Salli (oggis) commit 73ebcc2ce785e717dd0084e0c262a6c73412c1ba Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 21 18:33:21 2011 -0300 Add correct connection interface pretty headers and warn when building if the wrong ones are used. Pretty headers for Conn.ClientTypes/ContactGroups/ContactList/Saving were missing the Interface suffix. TelepathyQt4/CMakeLists.txt | 4 ++++ TelepathyQt4/ConnectionInterfaceClientTypes | 8 ++++++-- TelepathyQt4/ConnectionInterfaceClientTypesInterface | 13 +++++++++++++ TelepathyQt4/ConnectionInterfaceContactGroups | 8 ++++++-- TelepathyQt4/ConnectionInterfaceContactGroupsInterface | 13 +++++++++++++ TelepathyQt4/ConnectionInterfaceContactList | 8 ++++++-- TelepathyQt4/ConnectionInterfaceContactListInterface | 13 +++++++++++++ TelepathyQt4/ConnectionInterfacePowerSaving | 8 ++++++-- TelepathyQt4/ConnectionInterfacePowerSavingInterface | 13 +++++++++++++ 9 files changed, 80 insertions(+), 8 deletions(-) commit 0da20c738b9834a226569128aba26b5e592564a6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 14 02:14:07 2011 -0300 Connection: Coding style fixes. TelepathyQt4/connection.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 546f4ad2a3f655f4e4b872179427f3351e4c60f5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 23:21:55 2011 -0300 MethodInvocationContext: Document class. TelepathyQt4/method-invocation-context.dox | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) commit c3f6705a17919127ac507e808504a7d2e2df73bb Merge: e37145c c7808ef Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 23 16:28:01 2011 -0300 Merge branch 'spec-0.22.0' Reviewed-by: Olli Salli (oggis) commit d8bb41e5104ccec3c2f72040fd44f07438e48db4 Author: Olli Salli Date: Sat Apr 23 21:34:57 2011 +0300 Further test connection self handle changes Now the only branch not covered in the self handle codepaths is the one for the self contact build failing, which looks simple enough, and would be quite hard to get covered. tests/dbus/conn-introspect-cornercases.cpp | 116 ++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) commit 7617ebaa87a4a20d8bb91215db00c893d7f2a3e1 Author: Olli Salli Date: Sat Apr 23 19:46:34 2011 +0300 Fix the crash for self handle changing when the status is Connecting Otherwise clears up the logic with reintrospecting the self contact as well. More testing to follow. TelepathyQt4/connection.cpp | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) commit e83487c5001beee81c067ded1adb258f37f8ce01 Author: Olli Salli Date: Sat Apr 23 19:46:12 2011 +0300 Test self handle change in Connecting state Triggers a crash (!) tests/dbus/conn-introspect-cornercases.cpp | 80 +++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) commit 62ebe3d8412bcba28d4760ae8849fe5d32ce4908 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 16:20:24 2011 -0300 roster example: Use FeatA | FeatB | FeatC. examples/roster/roster-window.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) commit d9c4f63040b85b40b010465a90938de92bb977c9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 16:20:07 2011 -0300 Features: Add operator|(Features, Feature). TelepathyQt4/feature.h | 5 +++++ 1 file changed, 5 insertions(+) commit e68e7072d3a778c31e579327b11f899cad0f34d1 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 23 11:59:18 2011 -0300 roster example: Only load contacts when ContactManager state is Success. examples/roster/roster-widget.cpp | 34 ++++++++++++++++++++++------------ examples/roster/roster-widget.h | 1 + 2 files changed, 23 insertions(+), 12 deletions(-) commit cf6997ed0c450a7615a3993a2e3b5f3151d7eef5 Author: Olli Salli Date: Sat Apr 23 17:42:13 2011 +0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit e05ef70026aed2849cb932f13939d4f9112bb10d Merge: e37145c 4925793 Author: Olli Salli Date: Sat Apr 23 17:39:17 2011 +0300 Merge branch 'channel-props' Reviewed-by: Andre Magalhaes (andrunko) commit 4925793931ddf74ea6153777bf13ef74ad9644ea Author: Olli Salli Date: Sat Apr 23 17:12:44 2011 +0300 Add Channel::targetContact() TelepathyQt4/channel.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel.h | 1 + tests/dbus/chan-basics.cpp | 4 ++++ tests/dbus/chan-group.cpp | 4 ++++ 4 files changed, 50 insertions(+) commit f3cf445ae4996111babc1784b5fdfd05ad3126e0 Author: Olli Salli Date: Sat Apr 23 16:32:29 2011 +0300 Channel: Avoid injecting empty id for initiator handle if the real ID is not in the initial props TelepathyQt4/channel.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 77878806fe1870b66447637cf8eb687859720e3b Author: Olli Salli Date: Sat Apr 23 16:24:40 2011 +0300 Channel: Add TargetID and InitiatorID to guaranteed immutable props TelepathyQt4/channel.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 1663a259b71fb05c9c040bcaad0ac67a7fcb801f Author: Olli Salli Date: Sat Apr 23 16:14:10 2011 +0300 Channel: Inject TargetID as TargetHandle's ID if available Test suite goes from 1.95s to 1.90s avg. TelepathyQt4/channel.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 81f78c9d77238abe23ce3d5096c05c97f60907c3 Author: Olli Salli Date: Sat Apr 23 16:03:18 2011 +0300 Channel: Add targetId() accessor TelepathyQt4/channel.cpp | 37 ++++++++++++++++++++++++++++++++++--- TelepathyQt4/channel.h | 1 + tests/dbus/chan-basics.cpp | 1 + 3 files changed, 36 insertions(+), 3 deletions(-) commit d4a57867b32097b18c16fe656fb9aa4390e07d96 Author: Olli Salli Date: Sat Apr 23 15:23:51 2011 +0300 Make the Channel main property extract fn more appropriately named I originally planned to have one extraction function for each set of properties introduced in new spec releases, queuing appropriate fallbacks if the properties introduced in that version weren't found. Somebody didn't follow that plan, which would be useless to try and attempt now, so remove the confusing references to it. TelepathyQt4/channel.cpp | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) commit c7808effdd7a4b12a77c8dc9e8e44f4f659d84b4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 25 03:53:29 2011 -0300 Connection: Add accessors for ConnectionError details server-message, user-requested, expected-hostname and certificate-hostname. TelepathyQt4/connection.h | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) commit 95d48f1ef94730e9d0a718de5e6399cc239f454d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 25 03:52:48 2011 -0300 Auto generate code for Connection.ContactBlocking. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/ConnectionInterfaceContactBlockingInterface | 13 +++++++++++++ TelepathyQt4/connection.xml | 1 + 3 files changed, 15 insertions(+) commit 8a5ec49510f83738ff887f7d8685a41b83c0f895 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 25 03:39:17 2011 -0300 Update to spec 0.22.0 spec/Account.xml | 58 ++---- spec/Account_Interface_Avatar.xml | 4 - ...Account_Interface_External_Password_Storage.xml | 58 ++++++ spec/Account_Interface_Hidden.xml | 65 +++++++ spec/Account_Manager_Interface_Hidden.xml | 100 ++++++++++ spec/Call_Content.xml | 36 ---- spec/Call_Content_Interface_Media.xml | 36 ++++ spec/Call_Content_Interface_Video_Control.xml | 137 ++++++++++++++ spec/Call_Stream_Endpoint.xml | 10 +- spec/Call_Stream_Interface_Media.xml | 36 +++- spec/Channel_Interface_Credentials_Storage.xml | 59 ++++++ spec/Channel_Interface_SASL_Authentication.xml | 19 ++ spec/Channel_Request.xml | 13 +- spec/Channel_Type_Call.xml | 14 +- spec/Channel_Type_File_Transfer.xml | 49 +++++ spec/Channel_Type_Server_TLS_Connection.xml | 60 +++++- spec/Client_Approver.xml | 4 + spec/Client_Observer.xml | 68 +++++++ spec/Connection.xml | 6 + spec/Connection_Interface_Cellular.xml | 40 +++- spec/Connection_Interface_Contact_Blocking.xml | 207 +++++++++++++++++++++ spec/Connection_Manager.xml | 17 +- ...onnection_Manager_Interface_Account_Storage.xml | 120 ++++++++++++ spec/all.xml | 25 ++- spec/errors.xml | 37 ++++ 25 files changed, 1150 insertions(+), 128 deletions(-) commit 1e8401f0926e9c4f0ed7107a4546bf8c4dc6e192 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 16:12:12 2011 -0300 roster example: Updated example to use Account and factories. Also properly connect to contact signals. examples/roster/main.cpp | 32 +++++++++--- examples/roster/roster-item.cpp | 26 +++++----- examples/roster/roster-widget.cpp | 86 ++++++++++++------------------- examples/roster/roster-widget.h | 11 ++-- examples/roster/roster-window.cpp | 106 ++++++++++++-------------------------- examples/roster/roster-window.h | 23 +++------ 6 files changed, 118 insertions(+), 166 deletions(-) commit 050eab6898dc7a769e1f41eaa316c54517779570 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 14:40:01 2011 -0300 ContactManager: Do not replace known Contact data with invalid data when upgrading contacts. TelepathyQt4/contact-manager.cpp | 14 ++++++++------ TelepathyQt4/pending-contacts.cpp | 16 ++++++++++------ TelepathyQt4/pending-contacts.h | 1 + 3 files changed, 19 insertions(+), 12 deletions(-) commit d5b427216bfc2cb00d8a356f293cb0ec9a6c3a79 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 22 14:53:48 2011 -0300 contacts test: Add test for multiple ContactManager::upgradeContacts calls. tests/dbus/contacts.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) commit e37145cce893e4e4338d331be093da6d65aa6179 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 18 11:12:13 2011 -0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 54dfdf832e964146e4bccb6d44850dacaf4002c0 Merge: 68cb618 f02733f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 18 11:07:54 2011 -0300 Merge branch 'self-contact' Reviewed-by: Olli Salli (oggis) commit 68cb618ad60945de6253af09dd77650fced584f1 Merge: 46f2722 bb136b5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 15 15:57:03 2011 -0300 Merge branch 'contactlist-timeout' Reviewed-by: Olli Salli (oggis) commit bb136b52830f082b13e53d240c9908a32fca0012 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 15 15:53:54 2011 -0300 Connection: Improve the timeout param docs for ensure/createChannel. TelepathyQt4/connection.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 4124be90a75d75b8bf2d1f26d1f2c6c9f57cecc6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 23:06:41 2011 -0300 ContactManager::Roster: Pass timeout INT_MAX (no timeout) when ensuring contact list channels. TelepathyQt4/contact-manager-roster.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit beee55c26d977e4869bb7add146d43aa578aa3d2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 23:05:32 2011 -0300 Connection: Add support for passing timeout on ensure/createChannel. This will be used by ContactManager when ensuring contact list channels, as some CMs may timeout when loading the contact list. TelepathyQt4/connection-lowlevel.h | 2 ++ TelepathyQt4/connection.cpp | 60 ++++++++++++++++++++------------------ TelepathyQt4/pending-channel.cpp | 6 ++-- TelepathyQt4/pending-channel.h | 2 +- 4 files changed, 38 insertions(+), 32 deletions(-) commit f02733f6fc434723238016b433b2318adb39c1a1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 13 13:14:32 2011 -0300 Connection: Avoid crash when constructing self contact. TelepathyQt4/connection.cpp | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) commit 46f2722f5ba1be7300320364d5d0da6c93626e9b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 12 01:04:34 2011 -0300 Start 0.5.16 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 1b9f7f0397d821ed1d0f127d567978ba86870d12 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 12 00:50:22 2011 -0300 Prepare release 0.5.15 CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a8dce5f3debea0adb3c2565504c31560d1601d2f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 12 00:49:38 2011 -0300 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 10bebd65a06c57f6ab5aa5cd9f784537beeed95c Merge: c976f07 6fad1bf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 12 00:48:06 2011 -0300 Merge branch 'docs' Reviewed-by: Olli Salli (oggis) commit 6fad1bf772aece777a94edf45c62ca9c721b9e89 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 12 00:43:18 2011 -0300 Add/standardize/improve docs. TelepathyQt4/account-factory.cpp | 11 +++-- TelepathyQt4/channel-factory.cpp | 9 ++-- TelepathyQt4/channel-factory.h | 4 ++ TelepathyQt4/channel-request.cpp | 11 ++++- TelepathyQt4/connection-factory.cpp | 11 +++-- TelepathyQt4/connection-manager.cpp | 9 ++++ TelepathyQt4/connection.cpp | 9 ++++ TelepathyQt4/contact-factory.cpp | 4 +- TelepathyQt4/dbus-proxy-factory.cpp | 6 +-- TelepathyQt4/feature.cpp | 17 +++++++ .../file-transfer-channel-creation-properties.cpp | 9 ++++ TelepathyQt4/fixed-feature-factory.cpp | 10 ++-- TelepathyQt4/handled-channel-notifier.cpp | 12 +++++ TelepathyQt4/key-file.cpp | 1 + TelepathyQt4/manager-file.cpp | 1 + TelepathyQt4/method-invocation-context.h | 6 +++ TelepathyQt4/optional-interface-factory.cpp | 57 ++++++++++------------ TelepathyQt4/optional-interface-factory.h | 4 ++ TelepathyQt4/pending-account.cpp | 4 +- TelepathyQt4/pending-channel-request.cpp | 8 +-- TelepathyQt4/pending-channel.cpp | 10 ++-- TelepathyQt4/pending-connection.cpp | 8 +-- TelepathyQt4/pending-contact-attributes.cpp | 6 +-- TelepathyQt4/pending-contact-info.cpp | 6 +-- TelepathyQt4/pending-contacts.cpp | 9 ++++ TelepathyQt4/pending-handles.cpp | 9 ++-- TelepathyQt4/pending-operation.cpp | 41 ++++++++++------ TelepathyQt4/pending-ready.cpp | 9 ++-- TelepathyQt4/pending-send-message.cpp | 11 +++++ TelepathyQt4/pending-stream-tube-connection.cpp | 12 +++-- TelepathyQt4/pending-string-list.cpp | 4 ++ TelepathyQt4/pending-variant-map.cpp | 4 ++ TelepathyQt4/pending-variant.cpp | 4 ++ TelepathyQt4/presence.cpp | 25 ++++++++++ TelepathyQt4/profile.cpp | 6 ++- TelepathyQt4/protocol-info.cpp | 4 +- TelepathyQt4/protocol-parameter.cpp | 9 ++++ TelepathyQt4/shared-ptr.dox | 11 +++++ TelepathyQt4/test-backdoors.h | 4 ++ TelepathyQt4/types.h | 4 ++ 40 files changed, 294 insertions(+), 105 deletions(-) commit 9a55c79b0567c6ab6f014bd55c1d2c1b7a94bd0b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 12 00:42:31 2011 -0300 Features/PresenceSpecList: Add pretty header. TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/Features | 13 +++++++++++++ TelepathyQt4/PresenceSpecList | 13 +++++++++++++ 3 files changed, 28 insertions(+) commit 9df5a71484e281e0e293e13a42caba2443051469 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 11 14:24:34 2011 -0300 SharedPtr: Update docs. TelepathyQt4/shared-ptr.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c7058155881a901501d8e7dfd002990709595004 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 11 14:23:09 2011 -0300 Standardize \class docs. TelepathyQt4/abstract-client.cpp | 26 ++++++++++--------------- TelepathyQt4/account-manager.cpp | 3 +-- TelepathyQt4/account-set.cpp | 4 ++-- TelepathyQt4/account.cpp | 2 +- TelepathyQt4/avatar.cpp | 6 +++--- TelepathyQt4/capabilities-base.cpp | 4 ++-- TelepathyQt4/channel-class-spec.cpp | 6 ++---- TelepathyQt4/channel-dispatch-operation.cpp | 4 ++-- TelepathyQt4/channel-request.cpp | 3 +-- TelepathyQt4/channel.cpp | 2 +- TelepathyQt4/connection-capabilities.cpp | 4 ++-- TelepathyQt4/connection-manager.cpp | 3 +-- TelepathyQt4/connection.cpp | 3 +-- TelepathyQt4/contact-capabilities.cpp | 4 ++-- TelepathyQt4/contact-search-channel.cpp | 10 +++++----- TelepathyQt4/contact.cpp | 6 +++--- TelepathyQt4/file-transfer-channel.cpp | 4 ++-- TelepathyQt4/incoming-file-transfer-channel.cpp | 4 ++-- TelepathyQt4/incoming-stream-tube-channel.cpp | 12 +++++++----- TelepathyQt4/location-info.cpp | 4 ++-- TelepathyQt4/message-content-part.cpp | 5 ++--- TelepathyQt4/outgoing-file-transfer-channel.cpp | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.cpp | 12 +++++++----- TelepathyQt4/requestable-channel-class-spec.cpp | 8 ++++---- TelepathyQt4/streamed-media-channel.cpp | 8 ++++---- TelepathyQt4/text-channel.cpp | 3 +-- 26 files changed, 72 insertions(+), 82 deletions(-) commit 7b53805e003ee2cd567a9b73704674ff52c627b2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:26:52 2011 -0300 Filter: Remove old TODO TelepathyQt4/filter.h | 7 ------- 1 file changed, 7 deletions(-) commit 3868cc9faf390a0194c40e57b855d182a3b658a2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:26:33 2011 -0300 LocationInfo: Fix headerfile doc TelepathyQt4/location-info.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a493c53e11625031e2ef3c75687f9db585033370 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:26:19 2011 -0300 SharedPtr: Document class TelepathyQt4/shared-ptr.dox | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit bc6c59eaa58907b841373e7e39314a4ac7055a60 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:25:59 2011 -0300 ReadinessHelper: Document classes TelepathyQt4/readiness-helper.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit c1073a51cf9cd6bab8c96b1a45b91f147b3e6305 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:25:19 2011 -0300 MessageContentPart: Document classes TelepathyQt4/message-content-part.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit 25858b9c351181462b3871ce73776db537ba11c2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:25:04 2011 -0300 Contact: Document classes TelepathyQt4/contact.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit c923ac382f6e62d9da94effce4b597d6090c6654 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:24:51 2011 -0300 ContactSearchChannel: Document missing classes TelepathyQt4/contact-search-channel.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit dd291072f32b326f10b21e47d4fc63c73a9a89a8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:24:29 2011 -0300 RequestableChannelClassSpec/List: Document classes TelepathyQt4/requestable-channel-class-spec.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit e7f8edb7613cdefe638998d1d4fb4433c1944bc9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:24:22 2011 -0300 ChannelClassSpec/List: Document classes TelepathyQt4/channel-class-spec.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit df31d447fd175eb0d6b5d0768e19e534530419ec Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:24:03 2011 -0300 AvatarData/Spec: Document classes TelepathyQt4/avatar.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit b09fa2a993d0b523b36da750f9de0d1969818893 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:23:37 2011 -0300 AbstractInterface: Document class TelepathyQt4/abstract-interface.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit bcab56dcebe4dae355483d0e3d7aebeb20a65a07 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:23:26 2011 -0300 AbstractClient: Document missing classes TelepathyQt4/abstract-client.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) commit b9c8fcec15ff651ba545de83b55e88879c3ef314 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:22:46 2011 -0300 AccountPropertyFilter: Document class TelepathyQt4/account-property-filter.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 8995d09409d703f3708049b11d320c1df26c0af1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:22:37 2011 -0300 AccountCapabilityFilter: Document class TelepathyQt4/account-capability-filter.dox | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit 63c82f6a23abf601938c652c5e06028c7b8ebc46 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:22:19 2011 -0300 GenericPropertyFilter: Document class TelepathyQt4/generic-property-filter.dox | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit 323914e031983f6fe9c871963ad13f89428c688d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:22:11 2011 -0300 GenericCapabilityFilter: Document class TelepathyQt4/generic-capability-filter.dox | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit dba292ab6be95e58b731396158b95cc50c9fbd79 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:21:59 2011 -0300 NotFilter: Document class TelepathyQt4/not-filter.dox | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit 36d005375ee7df591554ce850f69a3bf800f2a0c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:21:54 2011 -0300 OrFilter: Document class TelepathyQt4/or-filter.dox | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit 87846dbfbdf5f302cca4e2de227eb990dbbe1dab Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:21:50 2011 -0300 AndFilter: Document class TelepathyQt4/and-filter.dox | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit ca65730471a4f8d1463a3da35c7b41c731614c7e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:21:09 2011 -0300 Filter: Document class TelepathyQt4/filter.dox | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit 0a64943112099984947efe43040f4c7f267ea280 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 7 14:27:07 2011 -0300 Add new doc groups TelepathyQt4/groups.dox | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 946d12ed8080d50892d7f2d2bb0b3ac8f042205e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 31 23:48:17 2011 -0300 Update documentation main page. TelepathyQt4/examples.dox | 13 ------------- TelepathyQt4/main.dox | 46 +++++++++++++++++++++++----------------------- 2 files changed, 23 insertions(+), 36 deletions(-) commit c976f07431c7355e27f00967f35afb6a000ad454 Author: Olli Salli Date: Mon Apr 11 18:45:40 2011 +0300 Update NEWS NEWS | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 9ca05d42eca6930aae92b3e2aec7fa437d0771aa Merge: d845985 ebc2a9a Author: Olli Salli Date: Mon Apr 11 18:37:55 2011 +0300 Merge branch 'conn-introspection-further' Reviewed-by: Andre Magalhaes (andrunko) commit ebc2a9aaf118729e94f1aa1ae3de61d2e5c47cbb Author: Olli Salli Date: Mon Apr 11 18:27:39 2011 +0300 Add an additional safeguard to ReadinessHelper TelepathyQt4/readiness-helper.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 8529ed934bd9b9f9e26c359636c1f5d298ff41a4 Author: Olli Salli Date: Mon Apr 11 16:01:45 2011 +0300 Abort connection main introspection when it becomes invalidated TelepathyQt4/connection.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 3268003ae2d01a83cdcf3d2359123ce727f38f05 Author: Olli Salli Date: Mon Apr 11 14:04:31 2011 +0300 Connection: Remove superfluous introspection status change guard This was as far as I can see totally redundant with the ReadinessHelper mechanism to wait for the current status to be introspected fully before moving to the new one. It might also have had a race condition causing the assert hit crashes reported recently, although I can't spot or reproduce it. TelepathyQt4/connection.cpp | 65 +++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 44 deletions(-) commit c9e778c0a43e0fd38aba6921b13f31b87fd92e15 Author: Olli Salli Date: Mon Apr 11 13:19:35 2011 +0300 ReadinessHelper: Add a minor sanity check for when we emit statusReady There are disturbingly many bug reports about crashes in Connection introspection with the ReadinessHelper emitting statusReady with some status the Conn isn't expecting. This is an attempt to narrow that down to either ReadinessHelper acting wonky or the Conn internally screwing up its expectations. TelepathyQt4/readiness-helper.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 4b00a1254b04315f024f11bf0baaedcf54d8be6d Author: Olli Salli Date: Mon Apr 11 13:15:52 2011 +0300 ReadinessHelper: Remove messy PendingReady finished/destroyed tracking We finish all of the PendingReadys we create, so we know exactly when they're finished and eventually destroyed. Hence we don't need this separate feedback loop. TelepathyQt4/readiness-helper.cpp | 36 ++++++++---------------------------- TelepathyQt4/readiness-helper.h | 2 -- 2 files changed, 8 insertions(+), 30 deletions(-) commit 6816f032f3c6080a5d96b9ac7a4ca9fcfecbb441 Author: Olli Salli Date: Mon Apr 11 12:54:17 2011 +0300 ReadinessHelper: Make missing feature rdep flagging cleaner and faster Test suite 1.90s -> 1.88s TelepathyQt4/readiness-helper.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) commit 84f13254be07f14af0d6eaa3ed499b3701925580 Author: Olli Salli Date: Mon Apr 11 12:40:49 2011 +0300 ReadinessHelper: Make feature dep handling a bit cleaner and faster Test suite goes from 1.98sec to 1.90sec with these changes. TelepathyQt4/readiness-helper.cpp | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) commit 8fa2bb6e9c953669ccc2dfe7ec9402be52871880 Author: Olli Salli Date: Sun Apr 10 20:09:31 2011 +0300 Test conn status change during introspection tests/dbus/conn-introspect-cornercases.cpp | 83 ++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) commit 5febfe2f8684bb30e2b90b070dcaad0036bf3ebe Author: Olli Salli Date: Sun Apr 10 20:08:46 2011 +0300 Fix deadlock on conn status changes when introspecting FeatureConnected TelepathyQt4/connection.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 14297925bac9a16e54c10c22fc38c2d66d81dc79 Author: Olli Salli Date: Sun Apr 10 20:07:23 2011 +0300 Enable Connection::FeatureSimplePresence for ConnectionStatusDisconnected The spec says: While the connection is in the DISCONNECTED state, it contains the set of presence statuses allowed to be set before connecting. TelepathyQt4/connection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit f787ba932a4516b938563a601d10475934f38aaf Author: Olli Salli Date: Sun Apr 10 19:09:23 2011 +0300 Test connection introspection slow-path tests/dbus/conn-introspect-cornercases.cpp | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) commit e7723ea74fc7e5cd8d99d5f6fea508b9f4a9dd9a Author: Olli Salli Date: Sun Apr 10 19:09:00 2011 +0300 Import bug16307-conn.[ch] from tp-glib tests/lib/glib/CMakeLists.txt | 2 + tests/lib/glib/bug16307-conn.c | 220 +++++++++++++++++++++++++++++++++++++++++ tests/lib/glib/bug16307-conn.h | 61 ++++++++++++ 3 files changed, 283 insertions(+) commit 4473018a984b9ec7c835d7b7920011037ed87ed1 Author: Olli Salli Date: Sun Apr 10 19:07:47 2011 +0300 Connection: reject invalid statuses in introspected props TelepathyQt4/connection.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit b91be14d970b52c7faf4e8beb007d7a2baa7ab71 Author: Olli Salli Date: Sun Apr 10 18:16:36 2011 +0300 Update TpTestsSimpleConn and TpTestsTextChannelNull from tp-glib tests/lib/glib/simple-conn.c | 184 ++++++++++++++++++++++++++++++++++++++++- tests/lib/glib/simple-conn.h | 11 +++ tests/lib/glib/textchan-null.c | 43 +++++++++- tests/lib/glib/textchan-null.h | 2 + 4 files changed, 236 insertions(+), 4 deletions(-) commit a9711878868bceabddf7847ded06782869506817 Author: Olli Salli Date: Sun Apr 10 13:00:10 2011 +0300 Add empty test skeleton ConnIntrospectCornercases tests/dbus/CMakeLists.txt | 1 + tests/dbus/conn-introspect-cornercases.cpp | 119 +++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) commit d84598588530deb959d1ef478df114f875bda422 Author: Olli Salli Date: Thu Apr 7 14:30:34 2011 +0300 Update NEWS NEWS | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit eca42ead2d4d47655013f39760a719492b10a18b Merge: 1fb1ee4 f42d026 Author: Olli Salli Date: Thu Apr 7 14:28:54 2011 +0300 Merge branch 'request-props-scope' Reviewed-by: Kai Vehmanen commit f42d026e71b59bb94acf532ea2e3cf66be19061d Author: Olli Salli Date: Tue Apr 5 15:56:22 2011 +0300 Fix Initial{Audio,Video} property scope in Account channel request methods TelepathyQt4/account.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 1fb1ee44f83b3547f65f2c262bf596c01068f37e Author: Olli Salli Date: Tue Apr 5 14:14:32 2011 +0300 Start 0.5.15 development CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit df248aad2d39e7fc95f6bf3e0b136571323413d0 Author: Olli Salli Date: Tue Apr 5 13:59:05 2011 +0300 Prepare release 0.5.14 CMakeLists.txt | 4 ++-- NEWS | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) commit 01b38b1e4cd23c1c609b2f4867cee8fd0b30cb46 Merge: c184fa4 bdcaaad Author: Olli Salli Date: Tue Apr 5 13:55:13 2011 +0300 Merge branch 'manager-file-rccs' Reviewed-by: Xavier Claessens (xclaesse) commit bdcaaad98a261b0ee8ec4b7e36fef141e52863d0 Author: Olli Salli Date: Tue Apr 5 13:34:05 2011 +0300 ManagerFile: Prevent RCC fixed properties from leaking between RCCs TelepathyQt4/manager-file.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 7cdb9e94d565103633e497b38cc68c654e369e78 Author: Olli Salli Date: Tue Apr 5 13:32:18 2011 +0300 TestManagerFile: test RCC parsing more extensively tests/manager-file.cpp | 39 ++++++++++++++++++---- tests/telepathy/managers/test-manager-file.manager | 8 ++++- 2 files changed, 39 insertions(+), 8 deletions(-) commit c184fa49321f45891be18684efa2ea953a4c6fca Author: Olli Salli Date: Tue Apr 5 12:57:56 2011 +0300 Update NEWS NEWS | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit e1f54f820cf18681bbe7091f7e359ad5dc5ec1ee Author: Olli Salli Date: Mon Apr 4 16:36:00 2011 +0300 StreamedMediaChannel::onStreamAdded: fix defaults for stream direction From the spec: ... clients SHOULD assume that the initial Media_Stream_Direction of a newly added stream is Receive, and that the initial Media_Stream_Pending_Send is Pending_Local_Send. ... Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/streamed-media-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e16f4ea0174bba577a0f32ade72783c1d91bb0ba Merge: dab9c87 0764484 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 1 12:16:38 2011 -0300 Merge remote-tracking branch 'mbatle/callcaps' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 0764484d428129f17773f0062968f47348c33c67 Author: Mateu Batle Date: Tue Mar 29 16:42:32 2011 -0500 Caps: Changed ConnectionCapabilities to protected and export constructors TelepathyQt4/connection-capabilities.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit aa67d3412f85d7955d21fdf364e8596946abc3c0 Author: Mateu Batle Date: Tue Mar 29 12:20:48 2011 -0500 Fix export of Contact Capabilities constructors TelepathyQt4/contact-capabilities.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ab4a0a8c92854981f8acf40582d6ad985974109f Author: Mateu Batle Date: Tue Mar 29 11:42:01 2011 -0500 Caps: Change private to protected in ContactCapabilities (needed for tp-qt4-yell) TelepathyQt4/contact-capabilities.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dab9c8739e8c3c50b5b34d5531ed4dc357ab0863 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 22:32:54 2011 -0300 AccountManager: Properly connect to reintrospection slot. TelepathyQt4/account-manager.cpp | 20 +++++++++----------- TelepathyQt4/account-manager.h | 1 + 2 files changed, 10 insertions(+), 11 deletions(-) commit a85342d7c3b56425bb38c2f497ab5dbd47329961 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 22:21:43 2011 -0300 Update NEWS NEWS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 5186253fd7129de905002fc5aa74553777647369 Merge: 1ffa9ca bd55baf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 22:20:36 2011 -0300 Merge branch 'am-reintrospection' Reviewed-by: Marco Barisione (barisione) commit bd55baf01b09e297d1121b68314d1eac25165300 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 15:03:07 2011 -0300 AccountManager: Retry introspection 5 times with a 3 seconds interval (or immediately if error is Timeout) if the introspection failed. It will also fail becomeReady() if there is still an error after all tries. TelepathyQt4/account-manager.cpp | 52 +++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 9 deletions(-) commit 1ffa9cad211ad5e05b5c8477dc19abb1849cbf27 Author: Olli Salli Date: Wed Mar 23 16:32:20 2011 +0200 Update NEWS NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 1b442bcddecb4e4e6a930e321351848a64027d8f Merge: ab2ff92 69ac83c Author: Olli Salli Date: Wed Mar 23 16:24:02 2011 +0200 Merge branch 'fix-rh-invalidated' Reviewed-by: Andre Magalhaes (andrunko) commit 69ac83c0f27f5630dd29e48b0f91b1f1219b4f2a Author: Olli Salli Date: Wed Mar 23 16:07:31 2011 +0200 ReadinessHelper: Only connect to DBusProxy::invalidated when it has been constructed TelepathyQt4/readiness-helper.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit c32a3d46cb9e63f0c1dfee7ce4f0e04f26480392 Author: Olli Salli Date: Wed Mar 23 16:06:52 2011 +0200 Bump Qt dependency to 4.6.0 CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ab2ff922413c31d22484319bb348ee785800f850 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 02:09:55 2011 -0300 Start 0.5.14 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 03e66a8f954186c6748bda33b0ace103362ad6ec Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:52:12 2011 -0300 Prepare release 0.5.13 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit a787c9d282d2797d9339cc749be5a54687e825cd Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:57:03 2011 -0300 contact-messenger example: Properly create account. examples/contact-messenger/sender.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 34b446f2de1fe26f54155fd87d7a8644682456a6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:46:12 2011 -0300 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit cfc709873177429ab9daa36515741bedfd791f94 Merge: 67b36e2 2ce89dc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:43:56 2011 -0300 Merge branch 'contact-messenger-example' Reviewed-by: Olli Salli (oggis) commit 67b36e2969b0954b55213ac42040459ada3464b9 Merge: 698a764 144c02a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:43:00 2011 -0300 Merge branch 'sto-normalize-contact' Reviewed-by: Olli Salli (oggis) commit 2ce89dc560379424d85655f069156008788b2fa8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:39:06 2011 -0300 file-transfer example: Add prefix ft- to executable names. examples/file-transfer/CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit f1c9ee1c36b8813b32b06509b1e84a9208459f09 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 16:21:08 2011 -0300 contact-messenger example: Add simple example to send messages using ContactMessenger. examples/CMakeLists.txt | 1 + examples/contact-messenger/CMakeLists.txt | 14 ++++++ examples/contact-messenger/sender.cpp | 81 +++++++++++++++++++++++++++++++ examples/contact-messenger/sender.h | 51 +++++++++++++++++++ 4 files changed, 147 insertions(+) commit 144c02a32c23d6cfedb03198092cad4cb11f38b8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 23 01:35:35 2011 -0300 SimpleTextObserver: Add more debug messages. TelepathyQt4/simple-text-observer.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit 27008d2a62547eaccdfd20ab00a377aa20812efe Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 22 11:38:32 2011 -0300 SimpleTextObserver: Do not crash if normalizing contact failed but the pending operation succeeded. TelepathyQt4/simple-text-observer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 698a764da74ad09e5dff100f65a21280b11f9edf Author: Olli Salli Date: Tue Mar 22 16:20:18 2011 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ba7b2821d4b699115fe6992f8cb7a90c2fe355ca Author: Olli Salli Date: Tue Mar 22 16:11:52 2011 +0200 ReadinessHelper: Don't connect to proxy invalidated multiple times TelepathyQt4/readiness-helper.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 7722397aebcceaca9b525aa12d5caf0930dafc40 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 19:28:03 2011 -0300 RequestableChannelClassSpecList: Add missing pretty header. Reviewed-by: Olli Salli (oggis) TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/RequestableChannelClassSpecList | 13 +++++++++++++ 2 files changed, 14 insertions(+) commit 44bb8dc5511e494ca12b58468c41aa7808aa8c32 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 20:22:00 2011 -0300 Start 0.5.13 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 119683c012cdb932421d6176fd86202a56a6e645 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 20:10:19 2011 -0300 Prepare release 0.5.12 CMakeLists.txt | 4 ++-- NEWS | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 106848204fe8801525f276ff438ee6d9fb4ae5cd Merge: aabc6de eeb5e68 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 20:05:42 2011 -0300 Merge branch 'contact-messenger-tests' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit aabc6de0190110537a319d39560e4205c85c1332 Merge: 7a41e5f fe1695c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 20:04:52 2011 -0300 Merge branch 'simple-send-receive' Reviewed-by: Olli Salli (oggis) commit 7a41e5fce2c2ebcf14b954a48728f879d1c7c235 Merge: 21c3a4f 0bd988d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 20:04:41 2011 -0300 Merge branch 'CD.I.Messages' Reviewed-by: Olli Salli (oggis) commit eeb5e6869c6767ec4a634d21411e372951bd7a8b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 19:58:19 2011 -0300 contact-messenger test: Fix testReceived and added testReceivedFromContact. tests/dbus/contact-messenger.cpp | 87 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 84 insertions(+), 3 deletions(-) commit 26eb6c69eae1c96cc3a538e29210cc406d6456ff Author: Olli Salli Date: Sat Mar 19 00:11:37 2011 +0200 Correctly check that the observers are unregistered tests/dbus/contact-messenger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 57714187cdb95f45a1876e38ffe3bef7a25d09d1 Author: Olli Salli Date: Sat Mar 19 00:00:58 2011 +0200 Update NEWS NEWS | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 8ffa5ac350b1c5f7df880306d51cd28f44e2f7e5 Author: Olli Salli Date: Fri Mar 18 23:56:01 2011 +0200 TestContactMessenger: Test receiving messages tests/dbus/contact-messenger.cpp | 146 ++++++++++++++++++++++++++++++++++----- 1 file changed, 127 insertions(+), 19 deletions(-) commit 6ebc9bdc9940beabfa734865c471ab037d098524 Author: Olli Salli Date: Fri Mar 18 23:28:15 2011 +0200 Bump tp-glib dep to 0.13.10 CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e6e57e0510d6267b5ac568185ecc341766c9dd8a Author: Olli Salli Date: Fri Mar 18 23:02:15 2011 +0200 TestContactMessenger: Expand test to be able to test sending with real service tests/dbus/contact-messenger.cpp | 215 ++++++++++++++++++++++++++++++++++----- 1 file changed, 191 insertions(+), 24 deletions(-) commit 0a9aa103f9e6c1b7d22282f0e86ee75a9abd6fcc Author: Olli Salli Date: Fri Mar 18 19:01:04 2011 +0200 TestContactMessenger: Add conn service tests/dbus/contact-messenger.cpp | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) commit 2203d2a9b5a9394ca82f42d6c2a50bfb71f3e832 Author: Olli Salli Date: Fri Mar 18 19:00:47 2011 +0200 TestContactMessenger: Don't require per-contact observers tests/dbus/contact-messenger.cpp | 67 +++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 25 deletions(-) commit 384afa56232b71d88826688c57ddd7a4b04c72bd Author: Olli Salli Date: Thu Mar 17 21:10:16 2011 +0200 TestContactMessenger: Check that a suitable observer is registered for ContactMessenger tests/dbus/contact-messenger.cpp | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) commit 556c4c76ea740d9c8fcd376cd16778742b246140 Author: Olli Salli Date: Thu Mar 17 20:07:53 2011 +0200 TestContactMessenger: Test for no CD support tests/dbus/contact-messenger.cpp | 75 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) commit c6523b67c992cea2de10c8e028e69213dca1f53e Author: Olli Salli Date: Thu Mar 17 19:20:57 2011 +0200 Add stub test for ContactMessenger tests/dbus/CMakeLists.txt | 1 + tests/dbus/contact-messenger.cpp | 158 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) commit fe1695c8babfa5171b5a98566d4465e4eb9592fc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 19:44:55 2011 -0300 SimpleTextObserver: Make sure FeatureCore is ready before calling contactsForIdentifiers. TelepathyQt4/simple-text-observer.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 06b2ec38fb667fbbcd4e4a74a00491f954046644 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 18:59:17 2011 -0300 SimpleTextObserver: Do not call slot that use mPriv in mPriv constructor. TelepathyQt4/simple-text-observer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit e59ce88665f974fa012666f62244afbd20b96e1d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 18:01:34 2011 -0300 SimpleTextObserver: Only set context as finished in observeChannels after the channels are ready to use. TelepathyQt4/simple-text-observer-internal.h | 4 ++++ TelepathyQt4/simple-text-observer.cpp | 36 +++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) commit b52cef463e8eb53f15e489701ddd714ee607f1c0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 17:17:09 2011 -0300 SimpleTextObserver: Properly connect to signals. TelepathyQt4/simple-text-observer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c2b4e96489502818de5e2b93d1048faed4d76c45 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 15:33:11 2011 -0300 PendingSendMessage: Finish with NOT_IMPLEMENTED if the CD.I.Messages.SendMessage call returned UNKNOWN_INTERFACE. TelepathyQt4/pending-send-message.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit ef7e5625d4d38fe39862bc61fc7b0fb549fcdcd2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 15:32:30 2011 -0300 Add define for org.freedesktop.DBus.Error.UnknownInterface. TelepathyQt4/constants.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit de777dcc0c381ed492c6c7e51e2582ade86760bc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 15:04:39 2011 -0300 ClientRegistrar: Add Q_PROPERTY for Recover in Observer adaptor. TelepathyQt4/client-registrar-internal.h | 1 + 1 file changed, 1 insertion(+) commit bdc90940cd674ee4b22ae52bcc86dbff5d8d9389 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 15:02:20 2011 -0300 SimpleTextObserver: Delete internal observer when last ref is released. TelepathyQt4/simple-text-observer-internal.h | 3 +-- TelepathyQt4/simple-text-observer.cpp | 15 ++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) commit 388d2a4b799953756927af7e70cb18159e4a9384 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 15:00:25 2011 -0300 SharedPtr: Allow usage of SharedPtr(this) in destructor without crashing. TelepathyQt4/shared-ptr.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 58b559045451da4b77f5e97c2f5c1b9300f2f47f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 14:48:55 2011 -0300 PendingSendMessage: Finish with NOT_IMPLEMENTED if the CD.I.Messages.SendMessage call returned UNKNOWN_METHOD. TelepathyQt4/contact-messenger.cpp | 2 +- TelepathyQt4/pending-send-message.cpp | 19 +++++++++++++++++++ TelepathyQt4/pending-send-message.h | 5 +++-- 3 files changed, 23 insertions(+), 3 deletions(-) commit acef3583d4b77db3dfbfd24525c6c4d09a47865f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 14:14:54 2011 -0300 SimpleTextObserver: Move AbstractClientObserver code to an internal class and share observers per account. TelepathyQt4/simple-text-observer-internal.h | 48 +++++- TelepathyQt4/simple-text-observer.cpp | 244 ++++++++++++++------------- TelepathyQt4/simple-text-observer.h | 22 +-- 3 files changed, 176 insertions(+), 138 deletions(-) commit ef04f16e729ba9e285a58528e9c8ba03fe2d63ac Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 13:22:33 2011 -0300 ContactMessenger: Improve docs. TelepathyQt4/contact-messenger.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) commit 96fe186adc647ce5cca4f98c5b219ca6f4fa8675 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 13:12:23 2011 -0300 SimpleTextObserver: Normalize contact id when needed. TelepathyQt4/simple-text-observer-internal.h | 45 +++++++- TelepathyQt4/simple-text-observer.cpp | 154 ++++++++++++++++++++++++--- TelepathyQt4/simple-text-observer.h | 16 ++- 3 files changed, 199 insertions(+), 16 deletions(-) commit 9b4c04ed90729e1c34117b6bc806dab5f0d58a2f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 12:00:15 2011 -0300 ContactMessenger: Add \class doc. TelepathyQt4/contact-messenger.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 8c72a203817f75bbab0b276463e0a23aca408b3b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 12:00:04 2011 -0300 SimpleTextObserver: Add \class doc. TelepathyQt4/simple-text-observer.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit edc8003d59b96374d09be4bc7e02286aab9215ee Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:44:52 2011 -0300 PendingSendMessage: Add accessor for ContactMessenger. TelepathyQt4/pending-send-message.cpp | 11 +++++++++++ TelepathyQt4/pending-send-message.h | 2 ++ 2 files changed, 13 insertions(+) commit 71ba726070bcac7d2c1022d392e8c721dc014b2f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:39:09 2011 -0300 ContactMessenger: Add docs. TelepathyQt4/contact-messenger.cpp | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) commit 0eaf383c13d372a4d1783e36faddf0797c99efcd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:23:11 2011 -0300 ContactMessenger: Warn if invalid params are passed to create. TelepathyQt4/contact-messenger.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit a56db82e057ed5e040890e456afa853b551fc23e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:23:00 2011 -0300 ContactMessenger: Add overload create method taking a ContactPtr as param. TelepathyQt4/contact-messenger.cpp | 11 +++++++++++ TelepathyQt4/contact-messenger.h | 1 + 2 files changed, 12 insertions(+) commit fd61f9856a4ff32df9d11f48d2e355b84c3b592f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:15:04 2011 -0300 SimpleTextObserver: Do not set recover to true as the observer not service-activatable. TelepathyQt4/simple-text-observer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ac30370654c7747e05b985fca3206ffcaae89d34 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:14:02 2011 -0300 SimpleTextObserver: Add docs. TelepathyQt4/simple-text-observer.cpp | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) commit 028ca8d1ac1a3682095982777cfbb3fbc678086a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:04:30 2011 -0300 SimpleTextObserver: Just relay signals from TextChannelWrapper. TelepathyQt4/simple-text-observer.cpp | 16 ++-------------- TelepathyQt4/simple-text-observer.h | 4 ---- 2 files changed, 2 insertions(+), 18 deletions(-) commit 2817c147b031affe6582ccf010e34c73fda893bd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 11:03:52 2011 -0300 SimpleTextObserver: Implement accessors for account and contactIdentifier. TelepathyQt4/simple-text-observer.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 06d106f079db27f6ae1a200bd8491801b85f9e0b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 18 10:47:18 2011 -0300 SimpleTextObserver: Add some warnings. TelepathyQt4/simple-text-observer.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) commit 2650f4723d8e9dcaef7f3cb844577cdb2a874bda Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 23:32:28 2011 -0300 ContactMessenger: Implement sending support. TelepathyQt4/contact-messenger.cpp | 50 +++++++++++++++++++++++++++++++++----- TelepathyQt4/message.h | 3 ++- 2 files changed, 46 insertions(+), 7 deletions(-) commit 28896b67f40790716b8f8e443744065bf437c329 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 23:31:07 2011 -0300 PendingSendMessage: Add constructor taking a ContactMessenger. TelepathyQt4/pending-send-message.cpp | 12 ++++++++++++ TelepathyQt4/pending-send-message.h | 2 ++ 2 files changed, 14 insertions(+) commit d0cac4d39787d83bbe5277d1103f58877a5e99fe Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 23:29:12 2011 -0300 PendingSendMessage: Move to it's own header. TextChannel now includes PendingSendMessage so apps using TextChannel pretty header only can still use PendingSendMessage. TelepathyQt4/CMakeLists.txt | 3 ++ TelepathyQt4/PendingSendMessage | 2 +- TelepathyQt4/pending-send-message.cpp | 96 +++++++++++++++++++++++++++++++++++ TelepathyQt4/pending-send-message.h | 72 ++++++++++++++++++++++++++ TelepathyQt4/text-channel.cpp | 69 ++----------------------- TelepathyQt4/text-channel.h | 30 +---------- 6 files changed, 176 insertions(+), 96 deletions(-) commit 83c7fb588185a8dcbfb3654da5287645d379e11c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 22:31:04 2011 -0300 ContactMessenger: Use SimpleTextObserver. TelepathyQt4/contact-messenger.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit b7a4385d7c119ac306d5bd2d860170198ff0670a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 22:30:23 2011 -0300 SimpleTextObserver: Add class to observe text channels. TelepathyQt4/CMakeLists.txt | 6 + TelepathyQt4/SimpleTextObserver | 13 ++ TelepathyQt4/simple-text-observer-internal.h | 112 +++++++++++++ TelepathyQt4/simple-text-observer.cpp | 230 +++++++++++++++++++++++++++ TelepathyQt4/simple-text-observer.h | 87 ++++++++++ TelepathyQt4/types.h | 2 + 6 files changed, 450 insertions(+) commit b1b6b193e97c59312aac7da23d5e1f5683cb3f73 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 16 18:15:22 2011 -0300 ContactMessenger: Add stub class for simple send/receive text API. TelepathyQt4/CMakeLists.txt | 4 ++ TelepathyQt4/ContactMessenger | 13 ++++++ TelepathyQt4/contact-messenger.cpp | 87 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-messenger.h | 75 ++++++++++++++++++++++++++++++++ TelepathyQt4/types.h | 2 + 5 files changed, 181 insertions(+) commit a5ca0867af63d32c524feed5075c32cb54a63c1c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 16 18:13:50 2011 -0300 MessageContentPart: Add high-level API for MessagePart. TelepathyQt4/CMakeLists.txt | 4 ++ TelepathyQt4/MessageContentPart | 13 +++++ TelepathyQt4/MessageContentPartList | 13 +++++ TelepathyQt4/message-content-part.cpp | 79 ++++++++++++++++++++++++++++ TelepathyQt4/message-content-part.h | 96 +++++++++++++++++++++++++++++++++++ 5 files changed, 205 insertions(+) commit 121468d2754d120e20eccf01c3e0d75b74a35abe Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 16 18:12:57 2011 -0300 PendingSendMessage: Add missing pretty header. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/PendingSendMessage | 13 +++++++++++++ 2 files changed, 14 insertions(+) commit 0bd988deca05046a94014b24202af27400bdde79 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 22:47:01 2011 -0300 Generate bindings for CD.I.Message (internal). TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/future-channel-dispatcher.xml | 20 ++++++++++++++++++++ TelepathyQt4/future-interfaces.xml | 1 + TelepathyQt4/future-internal.h | 2 ++ TelepathyQt4/future.cpp | 3 +++ 5 files changed, 28 insertions(+) commit 452471b1dffb602a0c5050167559172a59ef5eb4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 17 22:43:52 2011 -0300 Import CD.I.Messages interface. spec/Channel_Dispatcher_Interface_Messages.xml | 49 ++++++++++++++++++++++++++ spec/all.xml | 1 + 2 files changed, 50 insertions(+) commit 21c3a4f6dc6a63c57b0497ca5f43fd6a1fa43f86 Author: Olli Salli Date: Thu Mar 17 18:57:28 2011 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 940018c5ebaac56d7091a46441e5fbe5579eb54f Author: Olli Salli Date: Thu Mar 17 12:21:21 2011 +0200 Don't fail R&H operations if the CR Succeeds while we're introspecting the Channel Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/client-registrar.cpp | 14 ++++++++++++++ TelepathyQt4/pending-channel.cpp | 2 +- TelepathyQt4/request-temporary-handler-internal.cpp | 18 +++++++++++++++++- TelepathyQt4/request-temporary-handler-internal.h | 6 ++++++ 4 files changed, 38 insertions(+), 2 deletions(-) commit 2db3767ce19426139e92008979cce88da8bf1e64 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 16:49:55 2011 -0300 Start 0.5.12 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 70379fbe8840a84b369538de0fdf3f4c738c4e31 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 16:41:13 2011 -0300 Update NEWS NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit af63ce4468244769db7e6ad4d8e645d7bdbe56aa Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 16:12:54 2011 -0300 Prepare release 0.5.11 CMakeLists.txt | 4 ++-- NEWS | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 1d9c4e0a4907cfd20bc113d8e7f6a4e481dc2729 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 15:50:59 2011 -0300 Update NEWS NEWS | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit c76a35ace65536bec7bcba128e337886b12f9420 Merge: 289798c 24d5fe8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 15:45:55 2011 -0300 Merge branch 'create-contact-fallback' Reviewed-by: Olli Salli (oggis) commit 24d5fe8437d95a621633de857150a9616103d7b0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 15:43:37 2011 -0300 Channel: Use injectContactId instead of injectContactIds where appropriate. TelepathyQt4/channel.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit a5bb217dc67eba6f5f7c91f69ffb55ccd90d4004 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 15 15:40:58 2011 -0300 ConnectionLowlevel: Add singular version of injectContactIds. TelepathyQt4/connection-lowlevel.h | 3 ++- TelepathyQt4/connection.cpp | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) commit 29e672b7f06511740922272b4f7c5e10e4938e4f Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 15:13:25 2011 -0300 ContactManager::Roster: Bind ContactList.ContactsChangedWithID. TelepathyQt4/contact-manager-internal.h | 10 +++++++-- TelepathyQt4/contact-manager-roster.cpp | 38 +++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) commit 65069b8afe195c1c170bf0339e5e134ffa899754 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 14:55:21 2011 -0300 StreamedMediaChannel: Add TODO to pass id hints to ContactManager when/if available. TelepathyQt4/streamed-media-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 331a5de3a0c158a220fd4aa4ad4df6a86f9da18a Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 14:54:47 2011 -0300 OutgoingStreamTubeChannel: Add TODO to pass id hints to ContactManager when/if available. TelepathyQt4/outgoing-stream-tube-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 15076d7904666cdbec1f88fbed93fc201123890d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 14:55:31 2011 -0300 TextChannel: Add TODO to pass id hints to ContactManager when/if available. TelepathyQt4/text-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 1757af8b8d5de31b92ac920d3120a8ab254382df Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 14 20:02:59 2011 -0300 TextChannel: Inject contact ids when available. TelepathyQt4/text-channel.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit 83fdfdbb10169fb440e9a29090d6b1b332b0b927 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 14:42:55 2011 -0300 ReceivedMessage: Add support for retrieving the message sender id. TelepathyQt4/message.cpp | 11 +++++++++++ TelepathyQt4/message.h | 1 + 2 files changed, 12 insertions(+) commit 2b810376175e0e7c7f139983acf22551406e78d2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 14 19:55:06 2011 -0300 Channel: Inject contact ids when available. TelepathyQt4/channel.cpp | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) commit 9cd509ea38dc66ab19f05892133c731f75ec50e9 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 13:28:20 2011 -0300 ContactManager: Added mechanism to build contacts when using immortal handles if the contact handle and id is known even if the contact disappeared before finishing introspection. TelepathyQt4/connection-lowlevel.h | 7 +++++++ TelepathyQt4/connection.cpp | 35 ++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.cpp | 41 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.h | 6 +++++- TelepathyQt4/pending-contacts.cpp | 21 +++++++++++++++++-- 5 files changed, 107 insertions(+), 3 deletions(-) commit 7ad3522e87f7099d34485602ae7a2e5dd6d54e88 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 13 13:26:26 2011 -0300 Contact: Make it subclassable. TelepathyQt4/contact-manager.cpp | 4 ++-- TelepathyQt4/contact.cpp | 4 +++- TelepathyQt4/contact.h | 10 +++++----- 3 files changed, 10 insertions(+), 8 deletions(-) commit 289798cf207d272aa248995b0df12b6cbc4d70fa Merge: 37fc9a3 dd38138 Author: Xavier Claessens Date: Thu Mar 10 15:28:33 2011 +0100 Merge branch 'trivial' Rev-By andrunko commit dd38138bbb5eed363715705e928ca9fa3616ba0e Author: Xavier Claessens Date: Thu Mar 10 15:25:14 2011 +0100 Connect finished() signal before calling setFinished() In case we change setFinished() to emit the signal right away instead of in an idle callback. TelepathyQt4/contact-manager-roster.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 37fc9a33bb2d4080b0d2b8de449b8cb5240fdb4a Merge: 07ed33c dbec42d Author: Xavier Claessens Date: Thu Mar 10 14:00:42 2011 +0100 Merge branch 'fallback' Rev-By Oggis commit dbec42d66c5ff06301c11e91355cc1c4c28119cd Author: Xavier Claessens Date: Thu Mar 10 12:56:56 2011 +0100 Wait for FeatureRoster to be ready before setting ContactManager's state to Success even in fallback mode TelepathyQt4/contact-manager-roster.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 07ed33cd32447f3dec99ef7820f3a704c03207d7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 9 12:16:05 2011 -0300 Start 0.5.11 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit e4abe0414565578aa923130dbb701aacff3c87bf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 9 11:20:58 2011 -0300 Prepare release 0.5.10 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 5e56cf4e7f83fd0ce019a7675c4844ececa6b714 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 14:38:36 2011 -0300 Update documentation with new repositories. TelepathyQt4/main.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1c51b73fa630ba0ac31359f11ee12a9e957367e9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 14:38:14 2011 -0300 Update HACKING with new repositories. HACKING | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 896b318db4b75af95c8e70d88bbbd06ac109f3fc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 14:33:34 2011 -0300 Update NEWS NEWS | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 43226df7e2076404735318be4a2c129dd3fcf696 Merge: f41fbc3 0e74d6b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 14:27:46 2011 -0300 Merge branch 'connection-connected' Reviewed-by: Olli Salli (oggis) commit 0e74d6b2abfe5abad3b6dc41ce48c9ab65213cb5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 14:25:50 2011 -0300 Connection: Improve FeatureConnected documentation. TelepathyQt4/connection.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 859ecbee1ee589d33e4e19f7ba379622b2413f8d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 13:55:01 2011 -0300 conn-basics test: Test Connection::FeatureConnected. tests/dbus/conn-basics.cpp | 59 ++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 23 deletions(-) commit 6e33dd8d5cd0cb37c2fd7ec158be5520742797ea Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 8 13:54:44 2011 -0300 Connection: Add feature FeatureConnected. TelepathyQt4/connection.cpp | 25 +++++++++++++++++++++++++ TelepathyQt4/connection.h | 1 + 2 files changed, 26 insertions(+) commit f41fbc37bacbd0ca56543c3b05f028f83560ec0a Author: Xavier Claessens Date: Tue Mar 8 17:15:18 2011 +0100 Ensure FeatureRoster is ready before setting ContactManager state to success TelepathyQt4/contact-manager-internal.h | 1 + TelepathyQt4/contact-manager-roster.cpp | 20 ++++++++++++++++---- TelepathyQt4/contact-manager.cpp | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) commit 85417838404804917f1a0b495a6e33761ab7f788 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 19:02:29 2011 -0300 Start 0.5.10 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 2855767b87fbeeb8dad2e7ebf9070ef5b20f0ea2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:41:55 2011 -0300 Prepare release 0.5.9 CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 3bed9a03a101025f67643962aaf535e4c9f15c73 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 17:39:51 2011 -0300 Use @copyright and @license tags. TelepathyQt4/Farsight/channel.cpp | 7 ++++--- TelepathyQt4/Farsight/channel.h | 7 ++++--- TelepathyQt4/Farsight/global.h | 7 ++++--- TelepathyQt4/abstract-client.cpp | 7 ++++--- TelepathyQt4/abstract-client.h | 7 ++++--- TelepathyQt4/abstract-interface.cpp | 8 +++++--- TelepathyQt4/abstract-interface.h | 8 +++++--- TelepathyQt4/account-capability-filter.h | 7 ++++--- TelepathyQt4/account-factory.cpp | 7 ++++--- TelepathyQt4/account-factory.h | 7 ++++--- TelepathyQt4/account-filter.h | 7 ++++--- TelepathyQt4/account-manager.cpp | 7 ++++--- TelepathyQt4/account-manager.h | 7 ++++--- TelepathyQt4/account-property-filter.cpp | 7 ++++--- TelepathyQt4/account-property-filter.h | 7 ++++--- TelepathyQt4/account-set-internal.h | 7 ++++--- TelepathyQt4/account-set.cpp | 7 ++++--- TelepathyQt4/account-set.h | 7 ++++--- TelepathyQt4/account.cpp | 7 ++++--- TelepathyQt4/account.h | 7 ++++--- TelepathyQt4/and-filter.h | 7 ++++--- TelepathyQt4/async-model.dox | 4 ++-- TelepathyQt4/avatar.cpp | 7 ++++--- TelepathyQt4/avatar.h | 7 ++++--- TelepathyQt4/capabilities-base.cpp | 7 ++++--- TelepathyQt4/capabilities-base.h | 7 ++++--- TelepathyQt4/channel-class-spec.cpp | 7 ++++--- TelepathyQt4/channel-class-spec.h | 7 ++++--- TelepathyQt4/channel-dispatch-operation.cpp | 7 ++++--- TelepathyQt4/channel-dispatch-operation.h | 7 ++++--- TelepathyQt4/channel-dispatcher.cpp | 7 ++++--- TelepathyQt4/channel-dispatcher.h | 7 ++++--- TelepathyQt4/channel-factory.cpp | 7 ++++--- TelepathyQt4/channel-factory.h | 7 ++++--- TelepathyQt4/channel-internal.h | 7 ++++--- TelepathyQt4/channel-request.cpp | 7 ++++--- TelepathyQt4/channel-request.h | 7 ++++--- TelepathyQt4/channel.cpp | 7 ++++--- TelepathyQt4/channel.h | 7 ++++--- TelepathyQt4/client-registrar-internal.h | 7 ++++--- TelepathyQt4/client-registrar.cpp | 7 ++++--- TelepathyQt4/client-registrar.h | 7 ++++--- TelepathyQt4/client.cpp | 7 ++++--- TelepathyQt4/client.h | 7 ++++--- TelepathyQt4/connection-capabilities.cpp | 7 ++++--- TelepathyQt4/connection-capabilities.h | 7 ++++--- TelepathyQt4/connection-factory.cpp | 7 ++++--- TelepathyQt4/connection-factory.h | 7 ++++--- TelepathyQt4/connection-internal.h | 7 ++++--- TelepathyQt4/connection-lowlevel.h | 7 ++++--- TelepathyQt4/connection-manager-internal.h | 7 ++++--- TelepathyQt4/connection-manager-lowlevel.h | 7 ++++--- TelepathyQt4/connection-manager.cpp | 7 ++++--- TelepathyQt4/connection-manager.h | 7 ++++--- TelepathyQt4/connection.cpp | 7 ++++--- TelepathyQt4/connection.h | 7 ++++--- TelepathyQt4/constants.h | 7 ++++--- TelepathyQt4/contact-capabilities.cpp | 7 ++++--- TelepathyQt4/contact-capabilities.h | 7 ++++--- TelepathyQt4/contact-factory.cpp | 7 ++++--- TelepathyQt4/contact-factory.h | 7 ++++--- TelepathyQt4/contact-manager-internal.h | 7 ++++--- TelepathyQt4/contact-manager-roster.cpp | 7 ++++--- TelepathyQt4/contact-manager.cpp | 7 ++++--- TelepathyQt4/contact-manager.h | 7 ++++--- TelepathyQt4/contact-search-channel-internal.h | 7 ++++--- TelepathyQt4/contact-search-channel.cpp | 7 ++++--- TelepathyQt4/contact-search-channel.h | 7 ++++--- TelepathyQt4/contact.cpp | 7 ++++--- TelepathyQt4/contact.h | 7 ++++--- TelepathyQt4/dbus-proxy-factory-internal.h | 7 ++++--- TelepathyQt4/dbus-proxy-factory.cpp | 7 ++++--- TelepathyQt4/dbus-proxy-factory.h | 7 ++++--- TelepathyQt4/dbus-proxy.cpp | 7 ++++--- TelepathyQt4/dbus-proxy.h | 7 ++++--- TelepathyQt4/dbus.cpp | 7 ++++--- TelepathyQt4/dbus.h | 7 ++++--- TelepathyQt4/debug-internal.h | 7 ++++--- TelepathyQt4/debug.cpp | 7 ++++--- TelepathyQt4/debug.h | 7 ++++--- TelepathyQt4/examples.dox | 4 ++-- TelepathyQt4/feature.cpp | 7 ++++--- TelepathyQt4/feature.h | 7 ++++--- TelepathyQt4/file-transfer-channel-creation-properties.cpp | 7 ++++--- TelepathyQt4/file-transfer-channel-creation-properties.h | 7 ++++--- TelepathyQt4/file-transfer-channel.cpp | 7 ++++--- TelepathyQt4/file-transfer-channel.h | 7 ++++--- TelepathyQt4/filter.h | 7 ++++--- TelepathyQt4/fixed-feature-factory.cpp | 7 ++++--- TelepathyQt4/fixed-feature-factory.h | 7 ++++--- TelepathyQt4/future-internal.h | 7 ++++--- TelepathyQt4/future.cpp | 7 ++++--- TelepathyQt4/generic-capability-filter.h | 7 ++++--- TelepathyQt4/generic-property-filter.h | 7 ++++--- TelepathyQt4/global.h | 7 ++++--- TelepathyQt4/groups.dox | 4 ++-- TelepathyQt4/handled-channel-notifier.cpp | 7 ++++--- TelepathyQt4/handled-channel-notifier.h | 7 ++++--- TelepathyQt4/incoming-file-transfer-channel.cpp | 7 ++++--- TelepathyQt4/incoming-file-transfer-channel.h | 7 ++++--- TelepathyQt4/incoming-stream-tube-channel.cpp | 5 +++-- TelepathyQt4/incoming-stream-tube-channel.h | 5 +++-- TelepathyQt4/key-file.cpp | 7 ++++--- TelepathyQt4/key-file.h | 7 ++++--- TelepathyQt4/location-info.cpp | 7 ++++--- TelepathyQt4/location-info.h | 7 ++++--- TelepathyQt4/main.dox | 4 ++-- TelepathyQt4/manager-file.cpp | 7 ++++--- TelepathyQt4/manager-file.h | 7 ++++--- TelepathyQt4/media-session-handler.cpp | 7 ++++--- TelepathyQt4/media-session-handler.h | 7 ++++--- TelepathyQt4/media-stream-handler.cpp | 7 ++++--- TelepathyQt4/media-stream-handler.h | 7 ++++--- TelepathyQt4/message.cpp | 8 +++++--- TelepathyQt4/message.h | 8 +++++--- TelepathyQt4/method-invocation-context.h | 7 ++++--- TelepathyQt4/not-filter.h | 7 ++++--- TelepathyQt4/object.cpp | 7 ++++--- TelepathyQt4/object.h | 7 ++++--- TelepathyQt4/optional-interface-factory.cpp | 7 ++++--- TelepathyQt4/optional-interface-factory.h | 7 ++++--- TelepathyQt4/or-filter.h | 7 ++++--- TelepathyQt4/outgoing-file-transfer-channel.cpp | 7 ++++--- TelepathyQt4/outgoing-file-transfer-channel.h | 7 ++++--- TelepathyQt4/outgoing-stream-tube-channel-internal.h | 5 +++-- TelepathyQt4/outgoing-stream-tube-channel.cpp | 5 +++-- TelepathyQt4/outgoing-stream-tube-channel.h | 5 +++-- TelepathyQt4/pending-account.cpp | 7 ++++--- TelepathyQt4/pending-account.h | 7 ++++--- TelepathyQt4/pending-channel-request-internal.h | 7 ++++--- TelepathyQt4/pending-channel-request.cpp | 7 ++++--- TelepathyQt4/pending-channel-request.h | 7 ++++--- TelepathyQt4/pending-channel.cpp | 7 ++++--- TelepathyQt4/pending-channel.h | 7 ++++--- TelepathyQt4/pending-connection.cpp | 7 ++++--- TelepathyQt4/pending-connection.h | 7 ++++--- TelepathyQt4/pending-contact-attributes.cpp | 7 ++++--- TelepathyQt4/pending-contact-attributes.h | 7 ++++--- TelepathyQt4/pending-contact-info.cpp | 7 ++++--- TelepathyQt4/pending-contact-info.h | 7 ++++--- TelepathyQt4/pending-contacts.cpp | 7 ++++--- TelepathyQt4/pending-contacts.h | 7 ++++--- TelepathyQt4/pending-handles.cpp | 7 ++++--- TelepathyQt4/pending-handles.h | 7 ++++--- TelepathyQt4/pending-operation.cpp | 7 ++++--- TelepathyQt4/pending-operation.h | 7 ++++--- TelepathyQt4/pending-ready.cpp | 7 ++++--- TelepathyQt4/pending-ready.h | 7 ++++--- TelepathyQt4/pending-stream-tube-connection.cpp | 5 +++-- TelepathyQt4/pending-stream-tube-connection.h | 5 +++-- TelepathyQt4/pending-string-list.cpp | 7 ++++--- TelepathyQt4/pending-string-list.h | 7 ++++--- TelepathyQt4/pending-variant-map.cpp | 7 ++++--- TelepathyQt4/pending-variant-map.h | 7 ++++--- TelepathyQt4/pending-variant.cpp | 7 ++++--- TelepathyQt4/pending-variant.h | 7 ++++--- TelepathyQt4/presence.cpp | 7 ++++--- TelepathyQt4/presence.h | 7 ++++--- TelepathyQt4/profile-manager.cpp | 7 ++++--- TelepathyQt4/profile-manager.h | 7 ++++--- TelepathyQt4/profile.cpp | 7 ++++--- TelepathyQt4/profile.h | 7 ++++--- TelepathyQt4/properties.cpp | 7 ++++--- TelepathyQt4/properties.h | 7 ++++--- TelepathyQt4/protocol-info.cpp | 7 ++++--- TelepathyQt4/protocol-info.h | 7 ++++--- TelepathyQt4/protocol-parameter.cpp | 7 ++++--- TelepathyQt4/protocol-parameter.h | 7 ++++--- TelepathyQt4/readiness-helper.cpp | 7 ++++--- TelepathyQt4/readiness-helper.h | 7 ++++--- TelepathyQt4/ready-object.cpp | 7 ++++--- TelepathyQt4/ready-object.h | 7 ++++--- TelepathyQt4/referenced-handles.cpp | 7 ++++--- TelepathyQt4/referenced-handles.h | 7 ++++--- TelepathyQt4/request-temporary-handler-internal.cpp | 7 ++++--- TelepathyQt4/request-temporary-handler-internal.h | 7 ++++--- TelepathyQt4/requestable-channel-class-spec.cpp | 7 ++++--- TelepathyQt4/requestable-channel-class-spec.h | 7 ++++--- TelepathyQt4/room-list-channel.cpp | 8 +++++--- TelepathyQt4/room-list-channel.h | 8 +++++--- TelepathyQt4/shared-ptr.dox | 4 ++-- TelepathyQt4/shared-ptr.h | 7 ++++--- TelepathyQt4/simple-pending-operations.h | 7 ++++--- TelepathyQt4/stream-tube-channel.cpp | 5 +++-- TelepathyQt4/stream-tube-channel.h | 5 +++-- TelepathyQt4/streamed-media-channel.cpp | 8 +++++--- TelepathyQt4/streamed-media-channel.h | 8 +++++--- TelepathyQt4/test-backdoors.cpp | 7 ++++--- TelepathyQt4/test-backdoors.h | 7 ++++--- TelepathyQt4/text-channel.cpp | 8 +++++--- TelepathyQt4/text-channel.h | 8 +++++--- TelepathyQt4/tube-channel.cpp | 5 +++-- TelepathyQt4/tube-channel.h | 5 +++-- TelepathyQt4/types-internal.h | 5 +++-- TelepathyQt4/types.cpp | 7 ++++--- TelepathyQt4/types.h | 7 ++++--- TelepathyQt4/utils.cpp | 7 ++++--- TelepathyQt4/utils.h | 7 ++++--- doxygen-footer.html | 2 +- examples/accounts/account-item.cpp | 5 +++-- examples/accounts/account-item.h | 5 +++-- examples/accounts/accounts-window.cpp | 5 +++-- examples/accounts/accounts-window.h | 5 +++-- examples/file-transfer/receiver-channel.cpp | 7 ++++--- examples/file-transfer/receiver-channel.h | 7 ++++--- examples/file-transfer/receiver.cpp | 7 ++++--- examples/file-transfer/receiver.h | 7 ++++--- examples/file-transfer/sender.cpp | 7 ++++--- examples/file-transfer/sender.h | 7 ++++--- examples/protocols/cm-wrapper.cpp | 7 ++++--- examples/protocols/cm-wrapper.h | 7 ++++--- examples/protocols/protocols.cpp | 7 ++++--- examples/protocols/protocols.h | 7 ++++--- examples/roster/roster-item.cpp | 5 +++-- examples/roster/roster-item.h | 5 +++-- examples/roster/roster-widget.cpp | 5 +++-- examples/roster/roster-widget.h | 5 +++-- examples/roster/roster-window.cpp | 5 +++-- examples/roster/roster-window.h | 5 +++-- tests/dbus/stateful-proxy.cpp | 7 ++++--- 220 files changed, 855 insertions(+), 631 deletions(-) commit d0056394033b38bc45f382eb0e842004cadd7842 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:38:40 2011 -0300 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 81f05f622b779f8a3519d32be07da91b4788f1fb Merge: 3704661 f3e2ed8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:36:00 2011 -0300 Merge branch 'contact-removal' Reviewed-by: Olli Salli (oggis) commit 3704661537b830d12f91afe776171e773afe60c9 Merge: 42dcec6 9c869f6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:35:35 2011 -0300 Merge branch 'stream-tubes' Reviewed-by: Olli Salli (oggis) commit 42dcec6b63f27e78d8debdd3da49416b70b4d882 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:35:22 2011 -0300 Update NEWS NEWS | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 3e2bd54f279e5ceb162c52882bec2d9ba32d5ecf Merge: a74c42f e8619e2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:33:04 2011 -0300 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 9c869f624db354785bb024aa9b7963f436b0721d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:22:45 2011 -0300 ContactCapabilities: Also check for channel type and target handle type in streamTubeServices(). TelepathyQt4/contact-capabilities.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c344370413bea4441d1d09bfb67d5fdb69c6e819 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:06:25 2011 -0300 StreamTubeChannel: Improve docs. TelepathyQt4/stream-tube-channel.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit c2c6e684764b237ac6b742d458762532042f1fe2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:06:11 2011 -0300 OutgoingStreamTubeChannel: Improve docs. TelepathyQt4/outgoing-stream-tube-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a4ecf39971f2aa4be13fab602d90936460a15ec1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:05:57 2011 -0300 IncomingStreamTubeChannel: Improve docs. TelepathyQt4/incoming-stream-tube-channel.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 630dd5b418674172713fad2325c2831c72979eeb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:05:30 2011 -0300 Account: Add methods to request and handle stream tubes and also improve docs. TelepathyQt4/account.cpp | 138 ++++++++++++++++++++++++++++++++++------------- TelepathyQt4/account.h | 9 ++++ 2 files changed, 111 insertions(+), 36 deletions(-) commit 281e9991eea122785d3b9d6bf54a1bfb1b5493fc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 13:15:15 2011 -0300 CapabilitiesBase: Remove commented code. TelepathyQt4/capabilities-base.h | 3 --- 1 file changed, 3 deletions(-) commit 32e2dd0ae08655bd25d9cc073638c98ecc97610f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 13:14:59 2011 -0300 ConnectionCapabilities: Add method to check whether StreamTube channels is supported. TelepathyQt4/connection-capabilities.cpp | 16 ++++++++++++++++ TelepathyQt4/connection-capabilities.h | 2 ++ 2 files changed, 18 insertions(+) commit eb458ddd3e15c1c593e9186da12c74a100f1f6b6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 13:13:55 2011 -0300 ContactCapabilities: Add methods to check whether StreamTube channels is supported and what services are supported. TelepathyQt4/contact-capabilities.cpp | 39 +++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-capabilities.h | 5 ++++- 2 files changed, 43 insertions(+), 1 deletion(-) commit 4bc6f90669c603221f28789159d84988cccf7aad Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 13:13:15 2011 -0300 RequestableChannelClassSpec: Add method to return a RCC spec for StreamTube channels. TelepathyQt4/requestable-channel-class-spec.cpp | 23 +++++++++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 2 ++ 2 files changed, 25 insertions(+) commit e8619e25a02b5a0500ccf9c12faf19bbb98cba02 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:06:56 2011 -0300 Account: Improve docs. TelepathyQt4/account.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 84eb2f568b7ce386365c94e001e9ff75b3e60d1a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 12:57:53 2011 -0300 ConnectionCapabilities: Make contact search related methods names plural as used in the rest of the API. Also mark the new contactSearchs method as const, not the case of the singular version. TelepathyQt4/connection-capabilities.cpp | 30 +++++++++++++++++++++++++++--- TelepathyQt4/connection-capabilities.h | 10 +++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) commit f3e2ed817f9fcda279b4b434d3c68a1efc7abbab Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 14:09:03 2011 -0300 ContactManager::Roster: Only change contact publication/subscription to No after emitting that the contact was removed. To avoid useless updates in app code when checking for contact publication/subscription only change contact publication/subscription to No after emitting that the contact was removed. TelepathyQt4/contact-manager-roster.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit a74c42f0b5d4355be90b131644a8b8a28748a019 Author: Olli Salli Date: Mon Mar 7 17:16:39 2011 +0200 Update NEWS NEWS | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit d00bc5de956b8b1f0c526df7d152a4aa743d241d Merge: 429f9e3 87767d2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 11:37:05 2011 -0300 Merge remote-tracking branch 'drf/high-level-tubes-0.5' Reviewed-by: Andre Moreira Magalhaes (andrunko) Reviewed-by: Olli Salli (oggis) commit 429f9e3c9c8512404343e452ca8218e002dac447 Merge: 2d9c8d7 6bf145a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 11:36:49 2011 -0300 Merge branch 'request-and-handle' Reviewed-by: Olli Salli (oggis) commit 2d9c8d75d87aa43f6e2a2c7fb468a9d22b4b49b1 Merge: ee7d723 e1900bd Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 11:36:04 2011 -0300 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 6bf145a3720bbee9f87c717e65931c8f1f89e6bf Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 11:29:44 2011 -0300 Link against QtXml. TelepathyQt4/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 37fb58581c986d3bb22a96bd39760bc39065ebc3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 11:28:52 2011 -0300 PendingChannel: Finish with SERVICE_CONFUSED if CreateChannel was used and the CR finished successfully without the handler getting a channel. TelepathyQt4/pending-channel.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) commit 599317c032756d92e65e90fc0e23da961bb395a8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 7 11:27:21 2011 -0300 account-channel-dispatcher test: Use ensureAndHandleChannel to test NOT_YOURS failure case. tests/dbus/account-channel-dispatcher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bc7141b393658ca0d10420612a226d66385b236a Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 6 15:15:38 2011 -0300 account-channel-dispatcher test: Test Account request and handle support. tests/dbus/account-channel-dispatcher.cpp | 301 +++++++++++++++++++++++++++--- 1 file changed, 280 insertions(+), 21 deletions(-) commit 10fc7b89e1ad077a7ca59d883c0f3110811607a1 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 6 15:15:13 2011 -0300 HandledChannelNotifier: Properly connect to RequestTemporaryHandler::channelReceived signal. TelepathyQt4/handled-channel-notifier.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit beaa0969489160cae1acffb875410f6c730324f8 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 6 14:07:32 2011 -0300 ClientRegistrar: Fix debug message when calling AbstractClientHandler::handleChannels. TelepathyQt4/client-registrar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7e96861144c6a0725bbd8f7687cb2017fa0c231d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 6 14:06:50 2011 -0300 PendingChannel: Properly connect to RequestTemporaryHandler::channelReceived signal. TelepathyQt4/pending-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e18e1d06488ff6c26117b91536db7de22eb8513a Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 6 12:02:05 2011 -0300 RequestTemporaryHandler/HandledChannelNotifier: Move request hints to last param in channelReceived/handledAgain signals. TelepathyQt4/handled-channel-notifier.cpp | 10 +++++----- TelepathyQt4/handled-channel-notifier.h | 4 ++-- TelepathyQt4/pending-channel.cpp | 2 +- TelepathyQt4/request-temporary-handler-internal.cpp | 8 ++++---- TelepathyQt4/request-temporary-handler-internal.h | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) commit b3a59f5ee300c5a9b326829c51f1d05015f2dad6 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 6 11:53:58 2011 -0300 PendingChannel: Properly finish with error NOT_YOURS if the channel request has finished and the handler was not called. TelepathyQt4/pending-channel-request.cpp | 2 +- TelepathyQt4/pending-channel.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) commit 87767d25846d1f7606b9825b4132d725ae15ee12 Author: Dario Freddi Date: Sun Mar 6 17:17:53 2011 +0100 high-level-tubes: Remove the current example, as it uses legacy and misleading APIs. examples/CMakeLists.txt | 1 - examples/stream-tubes/CMakeLists.txt | 29 --- examples/stream-tubes/tube-initiator.cpp | 343 ------------------------------- examples/stream-tubes/tube-initiator.h | 80 ------- examples/stream-tubes/tube-receiver.cpp | 242 ---------------------- examples/stream-tubes/tube-receiver.h | 68 ------ 6 files changed, 763 deletions(-) commit 4b67e2e843beee75df5aec63b19a1243dfca6ad5 Author: Dario Freddi Date: Sun Mar 6 17:17:06 2011 +0100 high-level-tubes: Use the correct DBus property name in ChannelClassSpec TelepathyQt4/channel-class-spec.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 6bdc88fcee661c3ad79f05c0d4b5492bb363fb13 Author: Dario Freddi Date: Sun Mar 6 15:59:18 2011 +0100 high-level-tubes: Do not export private slots TelepathyQt4/incoming-stream-tube-channel.h | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.h | 6 +++--- TelepathyQt4/pending-stream-tube-connection.h | 4 ++-- TelepathyQt4/stream-tube-channel.h | 4 ++-- TelepathyQt4/tube-channel.h | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) commit e133213aa34293258ee37371f67a202adeba9ae8 Author: Dario Freddi Date: Sun Mar 6 15:51:50 2011 +0100 high-level-tubes: Instead of offering a QIODevice when accepting tubes, provide just the addresses. Some applications need to use the bare address, because they use a protocol library which doesn't communicate over QIODevices, but rather take the address as a parameter and use internal implementation means to actually establish a socket connection accordingly. This is because libraries usually aim to be as generic as possible, while QIODevices require e.g. running the Qt event loop. TelepathyQt4/incoming-stream-tube-channel.cpp | 48 +++++++++++++---- TelepathyQt4/incoming-stream-tube-channel.h | 3 +- TelepathyQt4/pending-stream-tube-connection.cpp | 72 ++----------------------- TelepathyQt4/pending-stream-tube-connection.h | 6 --- examples/stream-tubes/tube-receiver.cpp | 31 +++++++---- examples/stream-tubes/tube-receiver.h | 5 +- 6 files changed, 69 insertions(+), 96 deletions(-) commit a07c88170054d47902b9e84483e5bbfc6e398e41 Author: Dario Freddi Date: Sun Mar 6 15:24:27 2011 +0100 high-level-tubes: Const'ify pointer arguments when offering a tube TelepathyQt4/outgoing-stream-tube-channel.cpp | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 3632ffffe35588cfa883e4beff2aaf91b113f912 Author: Dario Freddi Date: Sun Mar 6 15:17:59 2011 +0100 high-level-tubes: Rename Account's parameter for specifying the service name to "service" instead of "serviceName" TelepathyQt4/account.cpp | 8 ++++---- TelepathyQt4/account.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) commit 21e631777695373eedd10de309a5741ec4edfc96 Author: Dario Freddi Date: Sun Mar 6 15:05:16 2011 +0100 high-level-tubes: Add a service field to channel-class-spec for specifying the service the newly created stream tube will handle. This is because most often ChannelClassSpec will be used when specifying Handler filters, and trying to be a Handler for all possible services on stream tubes makes no sense (as the Handler does the actual service-specific communication over the tube), so it should be convenient to specify the service. TelepathyQt4/channel-class-spec.cpp | 14 ++++++++++++-- TelepathyQt4/channel-class-spec.h | 6 ++++-- TelepathyQt4/channel-factory.cpp | 16 ++++++++-------- 3 files changed, 24 insertions(+), 12 deletions(-) commit d22e9ea5c035ed5eca15038c4fc147e666e19c37 Author: Dario Freddi Date: Sun Mar 6 15:05:03 2011 +0100 high-level-tubes: Remove obsolete comments in code TelepathyQt4/channel-factory.h | 2 -- 1 file changed, 2 deletions(-) commit e1900bdfcb4e7a54dbfa31b9e0795fd3baae4556 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 14:49:21 2011 -0300 ClientRegistrar: Properly set unique client name when registering a client with unique=true. TelepathyQt4/client-registrar.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 302601a55f7ac6c663429df25d0e986b5bbf862a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 19:37:36 2011 -0300 Account: Improve docs. TelepathyQt4/account.cpp | 82 +++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 39 deletions(-) commit 05499a1c5d116b0834ba4a950a58d500ec7f3667 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 14:38:42 2011 -0300 PendingChannel: Properly remove "." from D-Bus connection unique name when building client name. TelepathyQt4/pending-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4ca04e2dbe869825769bcd1976e5726ec36b4c6e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 14:36:59 2011 -0300 Account: Add helper method for request and handle. TelepathyQt4/account.cpp | 491 +++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 77 ++++++++ 2 files changed, 568 insertions(+) commit 0fd682ae8e10848c8bba49b09942e2a55b73074d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 13:44:55 2011 -0300 Account: Refactor ensure/create helper methods so that the requests can be re-used by request and handle helper methods. TelepathyQt4/account.cpp | 569 +++++++++++++++++++++++++---------------------- 1 file changed, 300 insertions(+), 269 deletions(-) commit a4d6f51d0393e4e3fc32b24e1e12e5a3bb7bea38 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 13:44:28 2011 -0300 FileTransferChannelCreationProperties: Make accessors public. .../file-transfer-channel-creation-properties.h | 24 ++++++++++------------ 1 file changed, 11 insertions(+), 13 deletions(-) commit 53ada621e3ea804e267d23e485f13bb99d3f5ce3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 12:34:31 2011 -0300 HandledChannelNotifier: Make RequestTemporaryHandler stop queueing channelReceived signals once the user has connected to handledAgain. TelepathyQt4/handled-channel-notifier.cpp | 7 +++++++ TelepathyQt4/handled-channel-notifier.h | 3 +++ 2 files changed, 10 insertions(+) commit 98e5a748e89c8114dba448102f673571a8e9f0be Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 12:33:56 2011 -0300 RequestTemporaryHandler: Add option to queue channelReceived signals. .../request-temporary-handler-internal.cpp | 33 +++++++++++++++++++--- TelepathyQt4/request-temporary-handler-internal.h | 6 ++++ 2 files changed, 35 insertions(+), 4 deletions(-) commit 4c268521d88b23ea5c8418ebdc5c1187b78bc98d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 12:09:42 2011 -0300 Account: Improve create/ensureAndHandleChannel documentation. TelepathyQt4/account.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) commit c127990e69558e35c9705a290dfbb4bc5e33908d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:59:54 2011 -0300 Account: Do not pass hints to create/ensureAndHandleChannel methods. TelepathyQt4/account.cpp | 14 ++++---------- TelepathyQt4/account.h | 6 ++---- TelepathyQt4/pending-channel.cpp | 5 ++--- TelepathyQt4/pending-channel.h | 3 +-- 4 files changed, 9 insertions(+), 19 deletions(-) commit 62902b5736735a086f450a0dfa51918edc5777fe Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:53:56 2011 -0300 PendingChannel: Warn if pending channel request fails after we received the channel. TelepathyQt4/pending-channel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit e215928234532229e3a3fcae9349d2bb1e2c84f5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:51:08 2011 -0300 PendingChannel: Do not assert on data received from D-Bus. TelepathyQt4/pending-channel.cpp | 1 - 1 file changed, 1 deletion(-) commit bf886c95b417cf6c0add2cbb1fd638122c77e8e4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:49:34 2011 -0300 PendingChannel: Always return true on yours accessor if the request was created through Account. TelepathyQt4/pending-channel.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 7e67caca57deee1ef89c015a62179a7773540b69 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:46:13 2011 -0300 PendingChannel: Return NULL on connection accessor if the request was created through Account. TelepathyQt4/pending-channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 608a7cee3de10dde35000771b3cd94c2bc1b0915 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:37:54 2011 -0300 PendingChannel: Make sure temporary handler name is unique. TelepathyQt4/pending-channel.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 3f2547bfc3a8e2d87e558f81dac03557e11524b2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:30:51 2011 -0300 PendingChannel: Warn if account requested to be constructed in FakeAccountFactory is different from the one passed on its constructor. TelepathyQt4/pending-channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 859dc95461701c8f8e7c1c01ec2ebe99444a5f66 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:23:19 2011 -0300 PendingChannel: Remove useless ChannelClassSpecList include. TelepathyQt4/pending-channel.cpp | 1 - 1 file changed, 1 deletion(-) commit 32187988cd6e02d137947774dc19ec77b3b75040 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:21:28 2011 -0300 PendingChannel: Only construct HandledChannelNotifier on accessor. TelepathyQt4/pending-channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 95ef237ca4e479b25e666140e084a30cc3fa6676 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:14:52 2011 -0300 HandledChannelNotifier: Carry hints and user action time params in handledAgain. TelepathyQt4/handled-channel-notifier.cpp | 8 +++++++- TelepathyQt4/handled-channel-notifier.h | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) commit 71a3321a145e4d738ed1e2dcd5e3d8ead27e6dd5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:12:14 2011 -0300 HandledChannelNotifier: Do not export private slots. TelepathyQt4/handled-channel-notifier.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fee20414838223222a8d6b4a00d16ab121c6a831 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:09:27 2011 -0300 HandledChannelNotifier: Remove finished signal in favour of Channel::invalidated/QObject::destroyed. TelepathyQt4/handled-channel-notifier.cpp | 1 - TelepathyQt4/handled-channel-notifier.h | 1 - 2 files changed, 2 deletions(-) commit 9b208fc466308d3faa9a217e10f9e6a64d786ae2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 11:07:02 2011 -0300 RequestTemporaryHandler: Do not assert on service errors. .../request-temporary-handler-internal.cpp | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) commit cbe895512c1e41bc7b7978e9eefa0fc670539a77 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 10:43:17 2011 -0300 RequestTemporaryHandler: Carry hints and user action time params in channelReceived. TelepathyQt4/handled-channel-notifier.cpp | 5 +++-- TelepathyQt4/pending-channel.cpp | 2 +- TelepathyQt4/request-temporary-handler-internal.cpp | 3 ++- TelepathyQt4/request-temporary-handler-internal.h | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) commit ac13b333478d83844d0bac6499dca5797b5b822b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 10:29:03 2011 -0300 RequestTemporaryHandler: Return false in bypassApproval as we don't want others' channels if the CD is confused. TelepathyQt4/request-temporary-handler-internal.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 3e31cd9307e2b64f4129ddefd3a0fc23251fad3f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 4 10:23:34 2011 -0300 Renamed SimpleHandler to RequestTemporaryHandler. Let's use a more specific name for the handler used by request and handle as SimpleHandler is a quite generic name that could be used later by some exported class in the library. TelepathyQt4/CMakeLists.txt | 6 +- TelepathyQt4/handled-channel-notifier.cpp | 8 +-- TelepathyQt4/handled-channel-notifier.h | 4 +- TelepathyQt4/pending-channel.cpp | 6 +- .../request-temporary-handler-internal.cpp | 76 ++++++++++++++++++++++ TelepathyQt4/request-temporary-handler-internal.h | 67 +++++++++++++++++++ TelepathyQt4/simple-handler-internal.cpp | 76 ---------------------- TelepathyQt4/simple-handler-internal.h | 67 ------------------- 8 files changed, 155 insertions(+), 155 deletions(-) commit d976646ab8f79cd670a9c98ab1260152f0080e85 Author: Dario Freddi Date: Thu Mar 3 19:02:16 2011 +0100 high-level-tubes: Make Private::device a QWeakPointer, to prevent memleaks on error. TelepathyQt4/pending-stream-tube-connection.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 7d4db45fadedf7f782b0b61dc8e3c5f334c82a96 Author: Dario Freddi Date: Thu Mar 3 19:00:13 2011 +0100 high-level-tubes: Use errorString() to provide a detailed description of the error TelepathyQt4/pending-stream-tube-connection.cpp | 25 +++++++++---------------- TelepathyQt4/pending-stream-tube-connection.h | 3 +-- 2 files changed, 10 insertions(+), 18 deletions(-) commit 6b51971df5eae77f32a100c3b703bd71b876b0a8 Author: Dario Freddi Date: Thu Mar 3 18:47:52 2011 +0100 high-level-tubes: Don't make destructors virtual if unneeded TelepathyQt4/pending-stream-tube-connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6a888f6ab2a6e3b8eb428f2abe4e46f09169ec7c Author: Dario Freddi Date: Thu Mar 3 18:45:06 2011 +0100 high-level-tubes: Code style: move friend declaration before d-pointer declaration. TelepathyQt4/incoming-stream-tube-channel.h | 4 +--- TelepathyQt4/outgoing-stream-tube-channel.h | 3 +-- TelepathyQt4/pending-stream-tube-connection.h | 3 +-- TelepathyQt4/stream-tube-channel.h | 1 - TelepathyQt4/tube-channel.h | 1 - 5 files changed, 3 insertions(+), 9 deletions(-) commit 14f717f331b715e38c6f67a57db778a4059ec486 Author: Dario Freddi Date: Thu Mar 3 18:40:34 2011 +0100 high-level-tubes: Don't use const on d-pointers TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- TelepathyQt4/stream-tube-channel.h | 2 +- TelepathyQt4/tube-channel.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit d1077641a94c5508b2ab5e699f7759b6a8038419 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 19:38:36 2011 -0300 Account: Added methods to create/ensure and handle channels directly without the need to implement a handler. TelepathyQt4/account.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 10 ++++++++ 2 files changed, 69 insertions(+) commit 23eee627f95a3ae58bb8f6a0571e9ae34825a406 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 20:43:57 2011 -0300 PendingChannel: Added support to request and handle channels using account. TelepathyQt4/pending-channel.cpp | 184 +++++++++++++++++++++++++++++++++++++-- TelepathyQt4/pending-channel.h | 21 ++++- 2 files changed, 196 insertions(+), 9 deletions(-) commit bfe9f01d659643b323df7cc39e770f9f78e52f74 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 20:39:54 2011 -0300 HandledChannelNotifier: Added class used to track channels when using request and handle support. TelepathyQt4/CMakeLists.txt | 4 ++ TelepathyQt4/HandledChannelNotifier | 13 ++++++ TelepathyQt4/handled-channel-notifier.cpp | 74 +++++++++++++++++++++++++++++++ TelepathyQt4/handled-channel-notifier.h | 69 ++++++++++++++++++++++++++++ 4 files changed, 160 insertions(+) commit fe2ddcb0e4fde1dfe245714d8b43d3dffbda0079 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 20:38:10 2011 -0300 SimpleHandler: Added internal class to implement a simple handler which will be used by request and handle support. TelepathyQt4/CMakeLists.txt | 3 ++ TelepathyQt4/simple-handler-internal.cpp | 76 ++++++++++++++++++++++++++++++++ TelepathyQt4/simple-handler-internal.h | 67 ++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) commit 37e2c5188ae3d37c76d12375453468c5eb42b9fd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 19:39:52 2011 -0300 ChannelRequest: Remove blank line. TelepathyQt4/channel-request.h | 1 - 1 file changed, 1 deletion(-) commit d3234c26b32ec70cab61180743d1740804b8a75d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 1 19:39:29 2011 -0300 Account: Do not print Parameters as it can contain the user password. TelepathyQt4/account.cpp | 1 - 1 file changed, 1 deletion(-) commit 82fc0eec7eadd9627f72874a4c328a9473e45a1d Author: Dario Freddi Date: Tue Mar 1 18:18:06 2011 +0100 high-level-tubes: Const'ify where needed TelepathyQt4/incoming-stream-tube-channel.cpp | 2 +- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/pending-stream-tube-connection.cpp | 2 +- TelepathyQt4/pending-stream-tube-connection.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 3ee8d06c88cc404e9b09bd34556a8ad031852da6 Author: Dario Freddi Date: Tue Mar 1 18:14:23 2011 +0100 high-level-tubes: Extend and improve documentation TelepathyQt4/incoming-stream-tube-channel.cpp | 13 ++++++--- TelepathyQt4/outgoing-stream-tube-channel.cpp | 10 +++---- TelepathyQt4/pending-stream-tube-connection.cpp | 39 +++++++++++++++++++++---- TelepathyQt4/stream-tube-channel.cpp | 20 ++++++++++--- TelepathyQt4/tube-channel.cpp | 5 +++- 5 files changed, 67 insertions(+), 20 deletions(-) commit b5aa69fc278f0098cace3d729658cdeca00ec3be Author: Dario Freddi Date: Tue Mar 1 17:53:45 2011 +0100 high-level-tubes: Move signal documentation to the bottom of the classes TelepathyQt4/incoming-stream-tube-channel.cpp | 18 +++++++++--------- TelepathyQt4/stream-tube-channel.cpp | 24 ++++++++++++------------ TelepathyQt4/tube-channel.cpp | 16 ++++++++-------- 3 files changed, 29 insertions(+), 29 deletions(-) commit 03d08a211fd878670d9892bdf47a187a9679b6b9 Author: Dario Freddi Date: Tue Mar 1 17:47:20 2011 +0100 high-level-tubes: Change templates to not have a whitespace after < and before > wherever possible TelepathyQt4/incoming-stream-tube-channel.cpp | 8 +++--- .../outgoing-stream-tube-channel-internal.h | 10 +++---- TelepathyQt4/outgoing-stream-tube-channel.cpp | 32 +++++++++++----------- TelepathyQt4/outgoing-stream-tube-channel.h | 4 +-- TelepathyQt4/pending-stream-tube-connection.cpp | 4 +-- TelepathyQt4/pending-stream-tube-connection.h | 2 +- TelepathyQt4/stream-tube-channel.cpp | 8 +++--- TelepathyQt4/stream-tube-channel.h | 2 +- 8 files changed, 35 insertions(+), 35 deletions(-) commit b248581f0957cf0401fdb05c702883ad5790bd3f Author: Dario Freddi Date: Tue Mar 1 17:05:13 2011 +0100 high-level-tubes: Name variables also in slot declarations TelepathyQt4/incoming-stream-tube-channel.cpp | 2 +- TelepathyQt4/incoming-stream-tube-channel.h | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel-internal.h | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.h | 6 +++--- TelepathyQt4/pending-stream-tube-connection.h | 8 ++++---- TelepathyQt4/stream-tube-channel.h | 4 ++-- TelepathyQt4/tube-channel.h | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) commit 211fa11b5a860737a15fa530f44ed35b1ca939ba Author: Dario Freddi Date: Tue Mar 1 16:56:49 2011 +0100 high-level-tubes: Remove unneeded newline TelepathyQt4/stream-tube-channel.h | 1 - 1 file changed, 1 deletion(-) commit 4f5e7cdd93417be5626973488dc8246841483c49 Author: Dario Freddi Date: Tue Mar 1 16:54:46 2011 +0100 high-level-tubes: Add a newline after forward declarations TelepathyQt4/incoming-stream-tube-channel.h | 1 + TelepathyQt4/outgoing-stream-tube-channel-internal.h | 1 + TelepathyQt4/outgoing-stream-tube-channel.h | 1 + TelepathyQt4/stream-tube-channel.h | 1 + 4 files changed, 4 insertions(+) commit 17b41050a1d7d549149f26913600201b46d50036 Author: Dario Freddi Date: Tue Mar 1 16:50:45 2011 +0100 high-level-tubes: Code style: place the comma on the same line when initializing variables in constructors TelepathyQt4/incoming-stream-tube-channel.cpp | 8 ++++---- TelepathyQt4/outgoing-stream-tube-channel.cpp | 22 +++++++++++----------- TelepathyQt4/pending-stream-tube-connection.cpp | 12 ++++++------ TelepathyQt4/stream-tube-channel.cpp | 10 +++++----- 4 files changed, 26 insertions(+), 26 deletions(-) commit 66051544046a5f17387103dfda7451f3d0cc43c3 Author: Dario Freddi Date: Tue Mar 1 16:45:52 2011 +0100 high-level-tubes: Remove unneeded method declarations TelepathyQt4/incoming-stream-tube-channel.cpp | 4 ---- 1 file changed, 4 deletions(-) commit 529493ab59d4f7929d28b4ee6eb9f08ec57ac1ff Author: Dario Freddi Date: Wed Dec 1 20:31:45 2010 +0100 high-level-tubes: Fix typos in documentation TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1dc339af5693b4a816aa6c81e1dc016608d3bca8 Author: Dario Freddi Date: Wed Dec 1 20:12:31 2010 +0100 high-level-tubes: Replace SharedPtr with specific subclasses to avoid casting TelepathyQt4/outgoing-stream-tube-channel-internal.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 4 ++-- TelepathyQt4/pending-stream-tube-connection.cpp | 6 +++--- TelepathyQt4/pending-stream-tube-connection.h | 5 +++-- 4 files changed, 9 insertions(+), 8 deletions(-) commit 97ce2d15663194a63cd2fe6048f47ebd1d73beb2 Author: Dario Freddi Date: Wed Dec 1 19:42:43 2010 +0100 high-level-tubes: code style: Fix indentation TelepathyQt4/incoming-stream-tube-channel.cpp | 54 ++++++++++---------- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 40 ++++++++------- TelepathyQt4/outgoing-stream-tube-channel.h | 4 +- TelepathyQt4/pending-stream-tube-connection.cpp | 6 +-- TelepathyQt4/pending-stream-tube-connection.h | 4 +- TelepathyQt4/stream-tube-channel.cpp | 68 ++++++++++++------------- TelepathyQt4/stream-tube-channel.h | 3 +- TelepathyQt4/tube-channel.cpp | 31 +++++------ TelepathyQt4/tube-channel.h | 4 +- 10 files changed, 110 insertions(+), 106 deletions(-) commit 0cf0d69e15d476e766eadffa16021a51c1822048 Author: Dario Freddi Date: Thu Sep 23 16:17:48 2010 +0200 high-level-tubes: code style: Proper positioning of & and * TelepathyQt4/account.cpp | 20 ++++++++-------- TelepathyQt4/incoming-stream-tube-channel.cpp | 28 +++++++++++----------- TelepathyQt4/outgoing-stream-tube-channel.cpp | 32 ++++++++++++------------- TelepathyQt4/pending-stream-tube-connection.cpp | 8 +++---- TelepathyQt4/stream-tube-channel.cpp | 16 ++++++------- TelepathyQt4/tube-channel.cpp | 8 +++---- TelepathyQt4/tube-channel.h | 1 - 7 files changed, 56 insertions(+), 57 deletions(-) commit 8eee5b14bfae38f8d942f6399bc0d6eea22f578b Author: Dario Freddi Date: Thu Sep 23 16:00:04 2010 +0200 high-level-tubes: code style: Have always namespace Tp\n{ TelepathyQt4/incoming-stream-tube-channel.h | 3 ++- TelepathyQt4/outgoing-stream-tube-channel-internal.h | 3 ++- TelepathyQt4/outgoing-stream-tube-channel.h | 3 ++- TelepathyQt4/stream-tube-channel.h | 3 ++- TelepathyQt4/tube-channel.h | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-) commit abb3520e655629da269217cd64ef7f8bce107182 Author: Dario Freddi Date: Thu Sep 23 15:57:54 2010 +0200 high-level-tubes: code style: Have max 100 char per line wherever possible TelepathyQt4/incoming-stream-tube-channel.cpp | 51 ++++--- TelepathyQt4/outgoing-stream-tube-channel.cpp | 97 +++++++------ TelepathyQt4/pending-stream-tube-connection.cpp | 9 +- TelepathyQt4/pending-stream-tube-connection.h | 6 +- TelepathyQt4/stream-tube-channel.cpp | 172 +++++++++++++----------- TelepathyQt4/tube-channel.cpp | 3 +- 6 files changed, 196 insertions(+), 142 deletions(-) commit 01e1d7ea77de3bd668e3c6d6319d492c44442c75 Author: Dario Freddi Date: Thu Sep 23 15:52:21 2010 +0200 high-level-tubes: code style: put moc include in the right position TelepathyQt4/stream-tube-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit f84a25fec9183fc36fae74ab8a8d3bf6850fe588 Author: Dario Freddi Date: Thu Sep 23 15:51:23 2010 +0200 high-level-tubes: code style: Remove unneeded newlines TelepathyQt4/incoming-stream-tube-channel.cpp | 6 ------ TelepathyQt4/outgoing-stream-tube-channel.cpp | 7 ------- TelepathyQt4/pending-stream-tube-connection.cpp | 2 -- TelepathyQt4/stream-tube-channel.cpp | 11 ----------- 4 files changed, 26 deletions(-) commit 3151ac6e65fae37156c7d257188104e79652cfdb Author: Dario Freddi Date: Mon Sep 20 16:21:26 2010 +0200 high-level-tubes: Remove Q_PRIVATE_SLOT TelepathyQt4/incoming-stream-tube-channel.cpp | 36 ++-- TelepathyQt4/incoming-stream-tube-channel.h | 8 +- .../outgoing-stream-tube-channel-internal.h | 16 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 171 +++++++++---------- TelepathyQt4/outgoing-stream-tube-channel.h | 12 +- TelepathyQt4/pending-stream-tube-connection.cpp | 187 ++++++++++----------- TelepathyQt4/pending-stream-tube-connection.h | 15 +- TelepathyQt4/stream-tube-channel.cpp | 56 +++--- TelepathyQt4/stream-tube-channel.h | 14 +- TelepathyQt4/tube-channel.cpp | 59 +++---- TelepathyQt4/tube-channel.h | 12 +- 11 files changed, 279 insertions(+), 307 deletions(-) commit 6b8588347fb7746e55d0cea095c247065e765b65 Author: Dario Freddi Date: Mon Sep 20 15:20:45 2010 +0200 high-level-tubes: Remove now useless -internal files .../incoming-stream-tube-channel-internal.h | 48 --------------- TelepathyQt4/incoming-stream-tube-channel.cpp | 21 ++++++- TelepathyQt4/stream-tube-channel-internal.h | 71 ---------------------- TelepathyQt4/stream-tube-channel.cpp | 46 +++++++++++++- TelepathyQt4/tube-channel-internal.h | 56 ----------------- TelepathyQt4/tube-channel.cpp | 31 +++++++++- 6 files changed, 89 insertions(+), 184 deletions(-) commit b6e56ca5a9652651eaa6aa7b84d126b7ad720164 Author: Dario Freddi Date: Mon Sep 20 15:14:07 2010 +0200 high-level-tubes: Remove useless includes and friendship TelepathyQt4/incoming-stream-tube-channel-internal.h | 1 - TelepathyQt4/outgoing-stream-tube-channel-internal.h | 2 -- TelepathyQt4/stream-tube-channel-internal.h | 4 ---- 3 files changed, 7 deletions(-) commit 32a441b5a574a8d441f3ecef3c5b52d4182d35b1 Author: Dario Freddi Date: Mon Sep 20 15:13:34 2010 +0200 high-level-tubes: Don't put virtual methods in private classes TelepathyQt4/incoming-stream-tube-channel-internal.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel-internal.h | 6 +++--- TelepathyQt4/stream-tube-channel-internal.h | 4 ++-- TelepathyQt4/tube-channel-internal.h | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) commit e1ce160094f0c2ac29708a0b3dd44bd6e5b3e4a3 Author: Dario Freddi Date: Mon Sep 20 14:56:23 2010 +0200 high-level-tubes: Move PendingStreamTubeConnection to its own header TelepathyQt4/CMakeLists.txt | 3 + TelepathyQt4/PendingStreamTubeConnection | 2 +- .../incoming-stream-tube-channel-internal.h | 24 -- TelepathyQt4/incoming-stream-tube-channel.cpp | 223 +--------------- TelepathyQt4/incoming-stream-tube-channel.h | 41 +-- TelepathyQt4/pending-stream-tube-connection.cpp | 281 +++++++++++++++++++++ TelepathyQt4/pending-stream-tube-connection.h | 77 ++++++ examples/stream-tubes/tube-receiver.cpp | 1 + 8 files changed, 366 insertions(+), 286 deletions(-) commit 63bc5123daf636bae2a7de002fcb32e337547325 Author: Dario Freddi Date: Sun Sep 19 00:05:14 2010 +0200 high-level-tubes: Fix the stream tubes example examples/stream-tubes/tube-receiver.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 66203bb78312e73581d1a827d1f6bfbb14e793cd Author: Dario Freddi Date: Sat Sep 18 19:47:42 2010 +0200 high-level-tubes: Removed private classes inheritance to remove Q_Q and Q_D TelepathyQt4/CMakeLists.txt | 1 - .../incoming-stream-tube-channel-internal.h | 15 +- TelepathyQt4/incoming-stream-tube-channel.cpp | 87 +++++----- TelepathyQt4/incoming-stream-tube-channel.h | 21 ++- .../outgoing-stream-tube-channel-internal.h | 63 +++++-- TelepathyQt4/outgoing-stream-tube-channel.cpp | 142 ++++++++++----- TelepathyQt4/outgoing-stream-tube-channel.h | 15 +- TelepathyQt4/stream-tube-channel-internal.h | 54 ++---- TelepathyQt4/stream-tube-channel.cpp | 190 +++++++-------------- TelepathyQt4/stream-tube-channel.h | 23 ++- TelepathyQt4/tube-channel-internal.h | 16 +- TelepathyQt4/tube-channel.cpp | 59 +++---- TelepathyQt4/tube-channel.h | 18 +- 13 files changed, 341 insertions(+), 363 deletions(-) commit 1e8c8476261b58fb53903894e01dff7a55a866f0 Author: Dario Freddi Date: Sun Aug 15 20:05:13 2010 +0200 high-level-tubes: Vastly improve documentation TelepathyQt4/incoming-stream-tube-channel.cpp | 97 ++++++++++- TelepathyQt4/outgoing-stream-tube-channel.cpp | 156 +++++++++++++----- TelepathyQt4/stream-tube-channel.cpp | 222 ++++++++++++++++++++------ TelepathyQt4/tube-channel.cpp | 14 +- 4 files changed, 392 insertions(+), 97 deletions(-) commit e9f6e3ba9c80577755842cfee3096f6318f66499 Author: Dario Freddi Date: Sun Aug 15 18:23:28 2010 +0200 high-level-tubes: Reformat Qt includes TelepathyQt4/incoming-stream-tube-channel-internal.h | 2 +- TelepathyQt4/incoming-stream-tube-channel.cpp | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.cpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) commit 0c676aa17983b29b52408460576a9f143765ef22 Author: Dario Freddi Date: Sun Aug 15 18:21:31 2010 +0200 high-level-tubes: Remove connectNotifys around TelepathyQt4/stream-tube-channel.cpp | 17 ----------------- TelepathyQt4/stream-tube-channel.h | 2 -- TelepathyQt4/tube-channel.cpp | 11 ----------- TelepathyQt4/tube-channel.h | 2 -- 4 files changed, 32 deletions(-) commit 7e70fe2c5fea7932ef5dafa5c8d9e9c86beb87f5 Author: Dario Freddi Date: Sun Aug 15 18:17:54 2010 +0200 high-level-tubes: Make includes consistent with the rest of the library. This required a bit of move-arounds. .../incoming-stream-tube-channel-internal.h | 76 ++++++++++++++++++++++ TelepathyQt4/incoming-stream-tube-channel.cpp | 58 ++--------------- TelepathyQt4/outgoing-stream-tube-channel.cpp | 13 ++-- TelepathyQt4/stream-tube-channel.cpp | 7 +- TelepathyQt4/tube-channel.cpp | 6 +- 5 files changed, 97 insertions(+), 63 deletions(-) commit 61ea04cf5812ebd0f842725815abe3b3d10d53ff Author: Dario Freddi Date: Sat Aug 14 14:56:04 2010 +0200 high-level-tubes: Use \return instead of \returns TelepathyQt4/incoming-stream-tube-channel.cpp | 16 ++++++++-------- TelepathyQt4/outgoing-stream-tube-channel.cpp | 12 ++++++------ TelepathyQt4/stream-tube-channel.cpp | 26 +++++++++++++------------- TelepathyQt4/tube-channel.cpp | 4 ++-- 4 files changed, 29 insertions(+), 29 deletions(-) commit e2ce2a68318ebc88ea256bdfee977a5247892184 Author: Dario Freddi Date: Fri Jun 11 12:09:54 2010 +0200 high-level-tubes: Fix behavior of acceptTubeAsTcpSocket, and add an additional overload for using Localhost access control explicitely. TelepathyQt4/incoming-stream-tube-channel.cpp | 43 +++++++++++++++++++++++---- TelepathyQt4/incoming-stream-tube-channel.h | 5 ++-- 2 files changed, 40 insertions(+), 8 deletions(-) commit 52b4627956117783ebe404da8b042d3eb3a8941a Author: Dario Freddi Date: Fri Jun 11 11:58:50 2010 +0200 high-level-tubes: Add missing pretty headers TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/PendingStreamTubeConnection | 13 +++++++++++++ 2 files changed, 14 insertions(+) commit bb6a45bd96b8de6c8b4c25307050047e1b05ada4 Author: Dario Freddi Date: Sun Jun 6 14:47:24 2010 +0200 high-level-tubes: API change: AllowedAddress->SpecifiedAddress, and update relevant documentation TelepathyQt4/incoming-stream-tube-channel.cpp | 4 ++-- TelepathyQt4/outgoing-stream-tube-channel.cpp | 26 +++++++++++++---------- TelepathyQt4/stream-tube-channel.cpp | 30 +++++++++++++++++---------- TelepathyQt4/stream-tube-channel.h | 4 ++-- 4 files changed, 38 insertions(+), 26 deletions(-) commit 3a47792cd54b667910b723168c2cef63d2e92853 Author: Dario Freddi Date: Sun Jun 6 14:29:08 2010 +0200 high-level-tubes: Simplify the update of parameters, and let them be updated before offer finishes. Update docs accordingly. .../outgoing-stream-tube-channel-internal.h | 17 ++++++---- TelepathyQt4/outgoing-stream-tube-channel.cpp | 38 ++++++++-------------- TelepathyQt4/outgoing-stream-tube-channel.h | 3 +- TelepathyQt4/tube-channel-internal.h | 3 -- TelepathyQt4/tube-channel.cpp | 35 +++++--------------- TelepathyQt4/tube-channel.h | 1 - 6 files changed, 34 insertions(+), 63 deletions(-) commit 6ef7e1392ca770f406bb37f5c1eb9b7a1a0d1406 Author: Dario Freddi Date: Thu Jun 3 23:40:22 2010 +0200 high-level-tubes: Remove __k__ prefix from every private slot TelepathyQt4/incoming-stream-tube-channel.cpp | 48 +++++++++++----------- TelepathyQt4/incoming-stream-tube-channel.h | 14 +++---- .../outgoing-stream-tube-channel-internal.h | 16 ++++---- TelepathyQt4/outgoing-stream-tube-channel.cpp | 32 +++++++-------- TelepathyQt4/outgoing-stream-tube-channel.h | 8 ++-- TelepathyQt4/stream-tube-channel-internal.h | 4 +- TelepathyQt4/stream-tube-channel.cpp | 12 +++--- TelepathyQt4/stream-tube-channel.h | 4 +- TelepathyQt4/tube-channel-internal.h | 6 +-- TelepathyQt4/tube-channel.cpp | 12 +++--- TelepathyQt4/tube-channel.h | 6 +-- 11 files changed, 81 insertions(+), 81 deletions(-) commit ecb8be62d849c06820b029cec6b026a3a81a3583 Author: Dario Freddi Date: Thu Jun 3 23:35:10 2010 +0200 high-level-tubes: Merge newLocalConnection and newRemoteConnection into StreamTubeChannel::newConnection TelepathyQt4/incoming-stream-tube-channel.cpp | 13 +------------ TelepathyQt4/incoming-stream-tube-channel.h | 5 ----- TelepathyQt4/outgoing-stream-tube-channel.cpp | 13 +------------ TelepathyQt4/outgoing-stream-tube-channel.h | 5 ----- TelepathyQt4/stream-tube-channel.cpp | 9 +++++++-- TelepathyQt4/stream-tube-channel.h | 1 + examples/stream-tubes/tube-initiator.cpp | 6 +++--- examples/stream-tubes/tube-initiator.h | 2 +- 8 files changed, 14 insertions(+), 40 deletions(-) commit 515d05709046503a2a70cd8b3fb96bcd3c05baaa Author: Dario Freddi Date: Thu Jun 3 02:22:07 2010 +0200 high-level-tubes: Some fixes to documentation TelepathyQt4/incoming-stream-tube-channel.cpp | 46 +++++++++++++++++----- TelepathyQt4/outgoing-stream-tube-channel.cpp | 56 ++++++++++++++++++++++++--- 2 files changed, 87 insertions(+), 15 deletions(-) commit c2fc4414e2487c6c42d9226b021037b4f02b64c7 Author: Dario Freddi Date: Thu Jun 3 01:30:32 2010 +0200 high-level-tubes: Use a custom FIFO Queue for handling connection tracking correctly. Add some new methods in OutgoingStreamTubeChannel to track connections through source address and/or contact ID. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/incoming-stream-tube-channel.cpp | 1 + .../outgoing-stream-tube-channel-internal.h | 7 + TelepathyQt4/outgoing-stream-tube-channel.cpp | 155 +++++++++++++++++++-- TelepathyQt4/outgoing-stream-tube-channel.h | 8 +- TelepathyQt4/stream-tube-channel-internal.h | 31 +++++ TelepathyQt4/stream-tube-channel.cpp | 73 +++++++++- examples/stream-tubes/tube-initiator.cpp | 11 +- examples/stream-tubes/tube-initiator.h | 2 +- 9 files changed, 267 insertions(+), 22 deletions(-) commit 502134f1976f87f69466d286ecedaba18c5b43d9 Author: Dario Freddi Date: Wed Jun 2 13:00:20 2010 +0200 high-level-tubes: Use QString instead of QByteArray for unix sockets' addresses TelepathyQt4/incoming-stream-tube-channel.cpp | 8 ++++---- TelepathyQt4/incoming-stream-tube-channel.h | 2 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 14 +++++++------- TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- TelepathyQt4/stream-tube-channel-internal.h | 2 +- TelepathyQt4/stream-tube-channel.cpp | 4 ++-- TelepathyQt4/stream-tube-channel.h | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) commit 39624981960119d2c593dfd3de5dba0580edd6cd Author: Dario Freddi Date: Wed Jun 2 12:51:06 2010 +0200 high-level-tubes: Improve the API for socket support, and use it everywhere for consistency TelepathyQt4/incoming-stream-tube-channel.cpp | 37 +++++- TelepathyQt4/outgoing-stream-tube-channel.cpp | 11 +- TelepathyQt4/stream-tube-channel.cpp | 159 +++++++++++++++++++------- TelepathyQt4/stream-tube-channel.h | 21 ++-- 4 files changed, 164 insertions(+), 64 deletions(-) commit bd3c28f02d37eef9b73ea564341b5a1e279e266b Author: Dario Freddi Date: Wed Jun 2 12:07:44 2010 +0200 high-level-tubes: API Refactoring: offerTubeAs*Socket -> offer*Socket TelepathyQt4/outgoing-stream-tube-channel.cpp | 12 ++++++------ TelepathyQt4/outgoing-stream-tube-channel.h | 12 ++++++------ examples/stream-tubes/tube-initiator.cpp | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) commit a1cc393b50d7b26fa767841f0ff3545171eec66b Author: Dario Freddi Date: Wed Jun 2 12:01:52 2010 +0200 high-level-tubes: Let parameters be updated when the tube is successfully offered. Add a new private class inheritance to avoid exposing protected symbols. .../outgoing-stream-tube-channel-internal.h | 1 + TelepathyQt4/outgoing-stream-tube-channel.cpp | 16 +++ TelepathyQt4/outgoing-stream-tube-channel.h | 2 +- TelepathyQt4/stream-tube-channel-internal.h | 11 +- TelepathyQt4/stream-tube-channel.cpp | 24 ++--- TelepathyQt4/stream-tube-channel.h | 2 - TelepathyQt4/tube-channel-internal.h | 63 +++++++++++ TelepathyQt4/tube-channel.cpp | 118 +++++++++++++-------- TelepathyQt4/tube-channel.h | 24 +++-- 9 files changed, 180 insertions(+), 81 deletions(-) commit c0322210dfff5245ff84ef806419bbcfd6f478fc Author: Dario Freddi Date: Mon May 17 16:26:36 2010 +0200 high-level-tubes: A round of fixes to make everything work properly TelepathyQt4/incoming-stream-tube-channel.cpp | 16 ++++++++-------- TelepathyQt4/outgoing-stream-tube-channel.cpp | 10 +++++----- TelepathyQt4/outgoing-stream-tube-channel.h | 5 +++-- TelepathyQt4/stream-tube-channel-internal.h | 2 ++ TelepathyQt4/stream-tube-channel.cpp | 23 ++++++++++++++++++----- TelepathyQt4/tube-channel.cpp | 1 + examples/stream-tubes/tube-initiator.cpp | 3 ++- examples/stream-tubes/tube-receiver.cpp | 3 ++- 8 files changed, 41 insertions(+), 22 deletions(-) commit 3d6e3655db8d1605ccba49e2096a3fb80dd6e173 Author: Dario Freddi Date: Fri May 14 18:17:18 2010 +0200 high-level-tubes: Hide the access control parameter by adding overloads, making the whole API nicer. Also, handle the supported socket types in a more friendly way. TelepathyQt4/incoming-stream-tube-channel.cpp | 166 ++++++++++++-------------- TelepathyQt4/incoming-stream-tube-channel.h | 11 +- TelepathyQt4/outgoing-stream-tube-channel.cpp | 54 +++++---- TelepathyQt4/outgoing-stream-tube-channel.h | 15 ++- TelepathyQt4/stream-tube-channel.cpp | 98 ++++++++++++++- TelepathyQt4/stream-tube-channel.h | 15 ++- examples/stream-tubes/tube-initiator.cpp | 2 +- examples/stream-tubes/tube-receiver.cpp | 2 +- 8 files changed, 226 insertions(+), 137 deletions(-) commit 9a61be98cf5b59a6fbcc02361cd188730f5a9370 Author: Dario Freddi Date: Thu May 13 01:20:45 2010 +0200 high-level-tubes: Add an example for stream tubes examples/CMakeLists.txt | 1 + examples/stream-tubes/CMakeLists.txt | 29 +++ examples/stream-tubes/tube-initiator.cpp | 341 +++++++++++++++++++++++++++++++ examples/stream-tubes/tube-initiator.h | 80 ++++++++ examples/stream-tubes/tube-receiver.cpp | 214 +++++++++++++++++++ examples/stream-tubes/tube-receiver.h | 65 ++++++ 6 files changed, 730 insertions(+) commit 6e72fe6a956b993e3a8dd1242842f759babf7af2 Author: Dario Freddi Date: Thu May 13 01:10:17 2010 +0200 high-level-tubes: Add the necessary code for generating stream tubes to ChannelFactory TelepathyQt4/channel-class-spec.cpp | 32 +++++++++++++++++++++++ TelepathyQt4/channel-class-spec.h | 4 ++- TelepathyQt4/channel-factory.cpp | 51 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-factory.h | 32 +++++++++++++++++++++++ 4 files changed, 118 insertions(+), 1 deletion(-) commit 32e7e0f9a2e6f8ac7235337d4db4fab6f0f18224 Author: Dario Freddi Date: Fri Apr 30 00:43:13 2010 +0200 high-level-tubes: Completing the implementation of StreamTubes by adding IncomingStreamTube TelepathyQt4/CMakeLists.txt | 4 + TelepathyQt4/IncomingStreamTubeChannel | 13 + TelepathyQt4/incoming-stream-tube-channel.cpp | 602 ++++++++++++++++++++++++++ TelepathyQt4/incoming-stream-tube-channel.h | 115 +++++ TelepathyQt4/types.h | 2 + 5 files changed, 736 insertions(+) commit d36ef36ad7a55deb1e6aea3128658acfba3cd8d7 Author: Dario Freddi Date: Thu Apr 29 23:19:54 2010 +0200 high-level-tubes: Add OutgoingStreamTubeChannel to allow exporting tubes and offering sockets TelepathyQt4/CMakeLists.txt | 5 + TelepathyQt4/OutgoingStreamTubeChannel | 13 + .../outgoing-stream-tube-channel-internal.h | 78 ++++ TelepathyQt4/outgoing-stream-tube-channel.cpp | 478 +++++++++++++++++++++ TelepathyQt4/outgoing-stream-tube-channel.h | 74 ++++ TelepathyQt4/types.h | 3 +- 6 files changed, 650 insertions(+), 1 deletion(-) commit 91ba6fc9fab267a0f0037e4c8fbb7a46b2f0c935 Author: Dario Freddi Date: Thu Apr 29 19:58:33 2010 +0200 high-level-tubes: Adding a base StreamTubeChannel class TelepathyQt4/CMakeLists.txt | 4 + TelepathyQt4/StreamTubeChannel | 13 + TelepathyQt4/stream-tube-channel-internal.h | 73 ++++++ TelepathyQt4/stream-tube-channel.cpp | 355 ++++++++++++++++++++++++++++ TelepathyQt4/stream-tube-channel.h | 85 +++++++ TelepathyQt4/types.h | 3 + 6 files changed, 533 insertions(+) commit f2233737d4b6c2381e9279c5698a240fcc79fb1c Author: Dario Freddi Date: Thu Apr 29 18:34:06 2010 +0200 high-level-tubes: Start adding a bare TubeChannel class, implementing the base logic for all tubes. Add also some basic convenience methods to account. TelepathyQt4/CMakeLists.txt | 6 +- TelepathyQt4/TubeChannel | 13 +++ TelepathyQt4/account.cpp | 78 +++++++++++++ TelepathyQt4/account.h | 13 +++ TelepathyQt4/tube-channel.cpp | 248 ++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/tube-channel.h | 71 ++++++++++++ TelepathyQt4/types.h | 2 + 7 files changed, 430 insertions(+), 1 deletion(-) commit ee7d723fa5a1f85c8650b1fa363c1691fa219a08 Author: Olli Salli Date: Tue Mar 1 16:15:57 2011 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit fca0da5708fdbe4dc91022eedfb1b8fff0a50354 Merge: f0ab68c 44fd0cc Author: Olli Salli Date: Tue Mar 1 16:10:43 2011 +0200 Merge branch 'no-export-private-fns' Reviewed-by: Andre Magalhaes (andrunko) commit 44fd0cc024f7ee1e59e318a59ab128010f7ee7fc Author: Olli Salli Date: Tue Mar 1 15:51:00 2011 +0200 Mark all private slots and methods with NO_EXPORT TelepathyQt4/account-manager.h | 8 +-- TelepathyQt4/account-set-internal.h | 6 +-- TelepathyQt4/account-set.h | 6 +-- TelepathyQt4/account.h | 18 +++---- TelepathyQt4/channel-dispatch-operation.h | 8 +-- TelepathyQt4/channel-internal.h | 8 +-- TelepathyQt4/channel-request.h | 10 ++-- TelepathyQt4/channel.h | 58 +++++++++++----------- TelepathyQt4/connection-capabilities.h | 4 +- TelepathyQt4/connection-internal.h | 8 +-- TelepathyQt4/connection-lowlevel.h | 4 +- TelepathyQt4/connection-manager-lowlevel.h | 2 +- TelepathyQt4/connection-manager.h | 8 +-- TelepathyQt4/connection.h | 40 +++++++-------- TelepathyQt4/contact-capabilities.h | 6 +-- TelepathyQt4/contact-manager.h | 30 +++++------ TelepathyQt4/contact-search-channel-internal.h | 4 +- TelepathyQt4/contact-search-channel.h | 12 ++--- TelepathyQt4/contact.h | 32 ++++++------ TelepathyQt4/dbus-proxy.h | 4 +- .../file-transfer-channel-creation-properties.h | 20 ++++---- TelepathyQt4/file-transfer-channel.h | 10 ++-- TelepathyQt4/incoming-file-transfer-channel.h | 14 +++--- TelepathyQt4/location-info.h | 2 +- TelepathyQt4/message.h | 20 ++++---- TelepathyQt4/outgoing-file-transfer-channel.h | 16 +++--- TelepathyQt4/pending-account.h | 8 +-- TelepathyQt4/pending-channel-request.h | 8 +-- TelepathyQt4/pending-channel.h | 10 ++-- TelepathyQt4/pending-connection.h | 8 +-- TelepathyQt4/pending-contact-attributes.h | 6 +-- TelepathyQt4/pending-contact-info.h | 4 +- TelepathyQt4/pending-contacts.h | 18 +++---- TelepathyQt4/pending-handles.h | 14 +++--- TelepathyQt4/pending-operation.h | 2 +- TelepathyQt4/pending-ready.h | 6 +-- TelepathyQt4/pending-string-list.h | 2 +- TelepathyQt4/pending-variant-map.h | 2 +- TelepathyQt4/pending-variant.h | 2 +- TelepathyQt4/profile-manager.h | 4 +- TelepathyQt4/profile.h | 30 +++++------ TelepathyQt4/protocol-info.h | 18 +++---- TelepathyQt4/protocol-parameter.h | 2 +- TelepathyQt4/readiness-helper.h | 8 +-- TelepathyQt4/referenced-handles.h | 2 +- TelepathyQt4/simple-pending-operations.h | 4 +- TelepathyQt4/streamed-media-channel.h | 34 ++++++------- TelepathyQt4/text-channel.h | 28 +++++------ 48 files changed, 289 insertions(+), 289 deletions(-) commit 8fcc3c976ce3c6ddfd04f5237c4738ad5cbee352 Author: Olli Salli Date: Tue Mar 1 14:54:28 2011 +0200 Avoid introducing a symbol in the .so for TextChannel private struct debug operations TelepathyQt4/text-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 24ed2dc33e7a2258e373afb89a08dd1ee06d9edf Author: Olli Salli Date: Tue Mar 1 14:24:17 2011 +0200 Add missing NO_EXPORT directives to private structs TelepathyQt4/abstract-client.cpp | 6 +++--- TelepathyQt4/account-set-internal.h | 2 +- TelepathyQt4/channel-factory.cpp | 2 +- TelepathyQt4/connection.cpp | 2 +- TelepathyQt4/dbus-proxy-factory.cpp | 2 +- TelepathyQt4/dbus-proxy.cpp | 2 +- TelepathyQt4/fixed-feature-factory.cpp | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) commit f0ab68c1866d0ae97928f9a27375f6ddc089957b Author: Olli Salli Date: Mon Feb 28 15:38:22 2011 +0200 Update NEWS NEWS | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit ded226847f6cd74c9ae0d16d6ae8c754980148dd Merge: 07ec87a 0d1e318 Author: Olli Salli Date: Mon Feb 28 15:34:15 2011 +0200 Merge branch 'allowed-presence-statuses' Reviewed-by: Florian Reinhard (freinhard) commit 0d1e318fef09ac3663ab97d26488290a848034be Author: Olli Salli Date: Mon Feb 28 12:53:30 2011 +0200 Always have "offline" in Account::allowedPresenceStatuses(), and also "available" if there are none TelepathyQt4/account.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit c177a6a7b93a5a03ca6bf7587fd2a6fc65c6d2c3 Author: Olli Salli Date: Mon Feb 28 12:53:13 2011 +0200 Enhance Account::allowedPresenceStatuses() doxymentation TelepathyQt4/account.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit 07ec87a9bdaeb484d42d925c274536241e780d8b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 25 15:42:21 2011 -0300 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 22e692505f837762cdd425ea1f926c7b03ed7d83 Merge: c7d5271 c5aee02 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 25 15:43:25 2011 -0300 Merge branch 'introspection' Reviewed-by: Olli Salli (oggis) commit c5aee0236c4ff45ae8b5647dc9a6890bb422df6c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 25 14:31:06 2011 -0300 ReadinessHelper: Properly satisfy features if the current status is not supported. Properly satisfy features but do not call the introspection methods if current status is not supported, TelepathyQt4/readiness-helper.cpp | 6 ------ 1 file changed, 6 deletions(-) commit c7d5271d803cfa032fdeaa3895162dfed1844a34 Merge: 6b98195 e5199ae Author: Xavier Claessens Date: Fri Feb 25 14:18:08 2011 +0100 Merge branch 'avatar' commit e5199aefd985a05f5e32dbe9976c05f8033e2bb4 Author: Xavier Claessens Date: Fri Feb 25 10:49:39 2011 +0100 Do not emit avatarDataChanged() if it didn't change TelepathyQt4/contact.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 6b981958763e2caf2a3a528c70831aec1a2245a2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 15:57:12 2011 -0300 Start 0.5.9 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 1fefb62fd879d477c814337f1f0d52cdd0542a6a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 15:38:03 2011 -0300 Prepare release 0.5.8 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 5947b9a2a6e44ce457678b2794a9d35a83ec6437 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 15:35:36 2011 -0300 Update NEWS NEWS | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 196dd50377e07cf853312d6597d478840c2e042e Merge: d67b810 82a8ee0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 15:21:17 2011 -0300 Merge branch 'account-connection' Reviewed-by: Xavier Claessens (xclaesse) commit d67b81063481568ee3a7755e5e294631f782f9bb Merge: 76eec19 2ded036 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 15:20:38 2011 -0300 Merge branch 'trivia' Reviewed-by: Xavier Claessens (xclaesse) commit 82a8ee0d818524b86e227bfa75693cb6d36ccfd1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 13:58:04 2011 -0300 ContactManager::Roster: Print state change debug messages before emitting signal. TelepathyQt4/contact-manager-roster.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 6c4e03f6c4a2ceb7936a36a20a91a680b7957ab4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 13:52:40 2011 -0300 Account: Properly process the connection queue if connection didn't change. TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0612931bb8a3f32724d91d3df403e7a929406e54 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 13:30:40 2011 -0300 ContactManager: Add accessor to get the progress made in retrieving the contact list (state). TelepathyQt4/contact-manager-internal.h | 3 +++ TelepathyQt4/contact-manager-roster.cpp | 42 +++++++++++++++++++++++++++------ TelepathyQt4/contact-manager.cpp | 11 +++++++++ TelepathyQt4/contact-manager.h | 4 ++++ 4 files changed, 53 insertions(+), 7 deletions(-) commit eb60031fdca67f027d466729e4ada5da822bade1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 12:35:49 2011 -0300 ContactManager::Roster: Add debug for when the ContactList state changes. TelepathyQt4/contact-manager-roster.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 43e54e6c977175c93da7d33e1aafdd0e33afaac7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 12:29:39 2011 -0300 ContactManager::Roster: Fail introspection if roster channels is not supported. TelepathyQt4/contact-manager-roster.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit e76643b6372d826fccf0f18fdf7108b9d5472e9d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 22 12:18:35 2011 -0300 Account: Do not build multiple connections for the same connection object path. TelepathyQt4/account.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 2ded0365e60a61387d1212103b164965d6c94424 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 21 18:09:03 2011 -0300 Account: Replace _ with - when parsing object path for protocol name. TelepathyQt4/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 76eec19589a12740a0a4abec72a870fda16312d5 Merge: 92d0abf 515bce7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 18 13:26:32 2011 -0200 Merge branch 'trivia' Reviewed-by: Xavier Claessens (xclaesse) commit 515bce79f092bffebc5ad5e02ddcfcb90cef56fb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 18 13:23:41 2011 -0200 Profile: Also debug if profile created with createForFileName loads successfully. TelepathyQt4/profile.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit b770d665fe50ff42f334ce290c88ae06a40577ae Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 18 13:14:20 2011 -0200 Account: Do not warn if ChannelDispatcher.SupportsRequestHints is not implemented. TelepathyQt4/account.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 345c0ee080105141f7e0e2046f7109cd8528a130 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 18 13:13:18 2011 -0200 profile test: Enable debug/warnings. tests/profile.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 4068aa6020d04c2ce9b30f350e5e4996bd929300 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 18 13:13:04 2011 -0200 Profile: Improve debug messages. TelepathyQt4/profile.cpp | 86 ++++++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 32 deletions(-) commit 92d0abfd0d4803a30920616c0c27dbfbf0019c2b Author: Xavier Claessens Date: Wed Feb 16 17:02:05 2011 +0100 Also remove useless QIODevice include TelepathyQt4/debug.cpp | 2 -- 1 file changed, 2 deletions(-) commit bc0aaea02b20d01109265142eafe09f22653e54d Author: Xavier Claessens Date: Wed Feb 16 16:31:46 2011 +0100 Remove unused DiscardDevice class TelepathyQt4/debug.cpp | 16 ---------------- 1 file changed, 16 deletions(-) commit 2534ff85b3d97cc98c37917e49d8a7c1148c0e98 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 16 12:52:21 2011 -0200 debug-internal.h: Remove trailing spaces. TelepathyQt4/debug-internal.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ff87c2b3ef4034f0989f3ee65c0b29241d1aba38 Merge: 2e0cae8 b62f3c6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 15 23:45:57 2011 -0200 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 2e0cae8d4b1b7bd25d0575912456b7fd433f35c7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 15 21:54:08 2011 -0200 Start 0.5.8 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 91ddb5a3ae836af381eafbae128f6bd5a88cb1b3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 15 21:38:20 2011 -0200 Prepare release 0.5.7 CMakeLists.txt | 4 ++-- NEWS | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 347df2534424641509230fc21e885b79811d5757 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 15 21:37:32 2011 -0200 Update NEWS NEWS | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit 39409b5cc7044ec1b498bfaf8ae48492b8a18dce Merge: 1a76b03 6d7ad42 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 15 21:29:34 2011 -0200 Merge branch 'account-presence' Reviewed-by: Olli Salli (oggis) commit 1a76b038ef83e477cce95ffc81645791d6e9a502 Author: Olli Salli Date: Tue Feb 15 21:35:49 2011 +0200 Install ChannelRequestHints pretty header TelepathyQt4/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) commit 9ec5a5bdd960a8db6f0f232795ae68468fa5a3c0 Author: Olli Salli Date: Tue Feb 15 21:33:57 2011 +0200 Update NEWS NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 88e737f5fae39c1ed465b184bf94d0eb0316b748 Merge: 1076058 296dc53 Author: Olli Salli Date: Tue Feb 15 21:29:33 2011 +0200 Merge branch 'fdo-33117' Reviewed-by: Andre Magalhaes (andrunko) commit 296dc53e558752eaef1e61856e20028fbae7496b Author: Olli Salli Date: Tue Feb 15 21:19:13 2011 +0200 Test ChannelRequest.SucceededWithChannel support tests/dbus/account-channel-dispatcher.cpp | 66 +++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 4 deletions(-) commit c84d012d9abc20fba1587a6240d20efcaf68482b Author: Olli Salli Date: Tue Feb 15 20:48:24 2011 +0200 Add support for ChannelRequest.SucceededWithChannel TelepathyQt4/account.cpp | 17 +++++ TelepathyQt4/account.h | 1 + TelepathyQt4/channel-request.cpp | 104 ++++++++++++++++++++++++++++++- TelepathyQt4/channel-request.h | 14 ++++- TelepathyQt4/pending-channel-request.cpp | 2 +- 5 files changed, 134 insertions(+), 4 deletions(-) commit 243f97e4d3ab440c937157d38a091deb7e7544ca Author: Olli Salli Date: Tue Feb 15 20:10:29 2011 +0200 Q_DECLARE_METATYPE ChannelRequestHints TelepathyQt4/channel-request.h | 2 ++ 1 file changed, 2 insertions(+) commit b086a3dc1d320cdb932cb7343887375df71d272f Author: Olli Salli Date: Tue Feb 15 19:19:02 2011 +0200 TestAccountChannelDispatcher: Test passing hints to channel requests tests/dbus/account-channel-dispatcher.cpp | 61 ++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 6 deletions(-) commit 6571c8794ad304a3a15dd1e45a3df93af3ef1d7d Author: Olli Salli Date: Tue Feb 15 19:01:49 2011 +0200 Test that SupportsRequestHints introspection works tests/dbus/account-channel-dispatcher.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) commit 1dcfdff42a7919946a628ba758fdb29e09ddb664 Author: Olli Salli Date: Tue Feb 15 18:51:37 2011 +0200 Expose ChannelRequest.Hints TelepathyQt4/channel-request.cpp | 23 +++++++++++++++++++++++ TelepathyQt4/channel-request.h | 1 + 2 files changed, 24 insertions(+) commit 3f1aeb11614fd6599675333c091b28e245cc2e9e Author: Olli Salli Date: Tue Feb 15 18:47:37 2011 +0200 Use ChannelRequestHints for specifying request hints TelepathyQt4/account.cpp | 120 +++++++++++++++---------------- TelepathyQt4/account.h | 41 +++++------ TelepathyQt4/pending-channel-request.cpp | 11 +-- TelepathyQt4/pending-channel-request.h | 3 +- 4 files changed, 89 insertions(+), 86 deletions(-) commit fb7344256885c9d0e46345795c6c4e170f57dd99 Author: Olli Salli Date: Tue Feb 15 18:13:35 2011 +0200 Add ChannelRequestHints QVariantMap wrapper class TelepathyQt4/ChannelRequestHints | 13 +++++++ TelepathyQt4/channel-request.cpp | 78 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-request.h | 27 ++++++++++++++ 3 files changed, 118 insertions(+) commit 107605889a3d384f0c31618019dd97980dc532e6 Author: Olli Salli Date: Tue Feb 15 16:29:17 2011 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 1507ca85d916063d301674e836661b39c0dd9670 Merge: eaaad72 be90f83 Author: Olli Salli Date: Tue Feb 15 16:21:34 2011 +0200 Merge branch 'request-with-hints' Reviewed-by: Andre Magalhaes (andrunko) commit be90f83a9f15f2f3efe6dec67c338af50ad76240 Author: Olli Salli Date: Tue Feb 15 16:05:24 2011 +0200 Add C string literal versions of CD bus name / object path constants TelepathyQt4/constants.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 902cdb6ddc87083ca03307186f5edd068a4130d9 Author: Olli Salli Date: Mon Feb 14 22:14:02 2011 +0200 TestAccountConnectionFactory: Try to trigger any races in the CD introspection tests/dbus/account-connection-factory.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) commit 42d4dfd51292ace33e3b96e8ecea6ed81fd704d0 Author: Olli Salli Date: Mon Feb 14 22:13:40 2011 +0200 PendingChannelRequest: Use Account::supportsRequestHints() TelepathyQt4/pending-channel-request.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit bf0e0e599bce38bc15a8109c972c85b63dc73383 Author: Olli Salli Date: Mon Feb 14 22:12:27 2011 +0200 Account: Introspect the CD to see whether it supports request hints TelepathyQt4/account.cpp | 131 +++++++++++++++++++++++++++++++++++++---------- TelepathyQt4/account.h | 3 ++ 2 files changed, 107 insertions(+), 27 deletions(-) commit 5f7a0d74b45b4a3fbd99306dfa56be1d500b7500 Author: Olli Salli Date: Mon Feb 14 20:38:10 2011 +0200 Account: Share the ChannelDispatcherInterface for all channel requests on a bus TelepathyQt4/account.cpp | 52 +++++++++++++++++++++++++++++++- TelepathyQt4/account.h | 4 +++ TelepathyQt4/pending-channel-request.cpp | 5 +-- 3 files changed, 56 insertions(+), 5 deletions(-) commit 03ef58451c44bdadac3925b67f8630d2cd3ba2a5 Author: Olli Salli Date: Mon Feb 14 20:38:36 2011 +0200 Add TP_QT4_CHANNEL_DISPATCHER_{BUS_NAME,OBJECT_PATH) constants TelepathyQt4/constants.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit df6995bdfb8008a8dd07cd480ddbcdf0ca8fc486 Author: Olli Salli Date: Mon Feb 14 16:26:28 2011 +0200 Account: Add support for passing Hints when requesting channels TelepathyQt4/account.cpp | 366 +++++++++++++++++++++++++++---- TelepathyQt4/account.h | 129 ++++++++++- TelepathyQt4/pending-channel-request.cpp | 70 ++++-- TelepathyQt4/pending-channel-request.h | 2 +- 4 files changed, 498 insertions(+), 69 deletions(-) commit eaaad7237fe20873cbccf555c8973fa28fa71339 Author: Xavier Claessens Date: Tue Feb 15 09:48:04 2011 +0100 Write avatar temp file into the same location than the avatar cache This is to avoid issues when /tmp is on another FS than /home TelepathyQt4/contact-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 4b66a140cbc12c6c8ea9377855da8dc1558352ef Merge: f2a1faa 3273897 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 17:36:42 2011 -0200 Merge branch 'protocol-avatars' Reviewed-by: Olli Salli (oggis) commit 3273897869c9264f2163a14dfac451058cc4572d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 17:27:30 2011 -0200 Account: Add method to return the avatar requirements. TelepathyQt4/account.cpp | 19 +++++++++++++++++++ TelepathyQt4/account.h | 2 ++ 2 files changed, 21 insertions(+) commit d5bef83cc310007e057f4dcf52f96796b8769290 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 17:27:21 2011 -0200 ProtocolInfo: Fix doc for avatarRequirements(). TelepathyQt4/protocol-info.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 7cba0a35cd739502502d84d99640798cabf60316 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 17:27:01 2011 -0200 ManagerFile: Fix doc for avatarRequirements(). TelepathyQt4/manager-file.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 6d7ad42f8a80bc9b063637a247e02e644dba240f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 16:55:54 2011 -0200 Account: Refactor allowedPresenceStatuses according to Olli's suggestions. TelepathyQt4/account.cpp | 131 ++++++++++++++++++----------------------------- 1 file changed, 51 insertions(+), 80 deletions(-) commit 9b0f305267866c14dde9f0fcabf1dc81de8f8d42 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 10:11:10 2011 -0200 Account: Add method to return the list of allowed presence status. TelepathyQt4/account.cpp | 176 ++++++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/account.h | 3 + 2 files changed, 178 insertions(+), 1 deletion(-) commit b5de22ccc8c39ae1182df257faa5ed86ee589685 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 12:30:17 2011 -0200 PreseceSpecList: Added toMap method. TelepathyQt4/presence.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit 7ef8f0a8a005749498d7ebca2541ad87e32162bc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 10:10:06 2011 -0200 Profile: Deprecated Presence::message in favour of newly added Presence::canHaveStatusMessage. TelepathyQt4/profile.cpp | 18 ++++++++++++++++-- TelepathyQt4/profile.h | 3 ++- 2 files changed, 18 insertions(+), 3 deletions(-) commit f2a1faac64fdcd143591c10871c9af1e1db9ca11 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 10:13:13 2011 -0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 74e72ee82e493740fc3e6cf526f324b395a49fbf Merge: 33bae44 4c71acd Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 14 10:11:50 2011 -0200 Merge branch 'protocol' Reviewed-by: Olli Salli (oggis) commit b62f3c6c391478d665bcd1dd95bab8a5938b071d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 18:21:14 2011 -0200 Filter: Make compiler happy by using Q_UNUSED(t) on matches(t). TelepathyQt4/filter.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 4c71acdb4d606aa6ffb7f9e99c914ecaaa30bb0b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 17:36:15 2011 -0200 ManagerFile: Make sure statuses with same name are not added twice to allowedPresenceStatuses(). TelepathyQt4/manager-file.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit ea85bbaca8909446c081dd998ffa861c33d6782b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 17:31:04 2011 -0200 PresenceSpec: Rename canHaveMessage to canHaveStatusMessage for consistency. TelepathyQt4/presence.cpp | 7 ++++--- TelepathyQt4/presence.h | 2 +- tests/dbus/cm-basics.cpp | 6 +++--- tests/manager-file.cpp | 6 +++--- 4 files changed, 11 insertions(+), 10 deletions(-) commit ab30f9a923093bd936d9a3ac51fcb16ef4fed196 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 17:28:56 2011 -0200 PresenceSpec: Add support for passing a status message when calling presence(). TelepathyQt4/presence.cpp | 14 ++++++++++---- TelepathyQt4/presence.h | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) commit dfe43b685eca2766cbe21115037df49ca67cbc5d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:57:18 2011 -0200 ManagerFile: Use QHash::value() instead of operator[] for accessors. TelepathyQt4/manager-file.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit e67a2c92d444c354eb53c6816237d0aec3ea0957 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:44:35 2011 -0200 cm-basics test: Add test for Protocol.Avatars. tests/dbus/cm-basics.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit b1fda7930c179cdaee4efac1f283d102364f6ecc Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:40:15 2011 -0200 ConnectionManager: Bind Protocol.Avatars. TelepathyQt4/connection-manager-internal.h | 2 + TelepathyQt4/connection-manager.cpp | 63 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) commit ecc25c426c1346447e84690c13d6de168dcc97ce Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:31:05 2011 -0200 ConnectionManager: Refactor ProtocolWrapper introspection code in preparation for Protocol.Avatars support. TelepathyQt4/connection-manager-internal.h | 3 +++ TelepathyQt4/connection-manager.cpp | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) commit 53f77f3dc897294982bda40b1cd7ba93472c1ed2 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:25:40 2011 -0200 ConnectionManager: Use avatar information from manager file. TelepathyQt4/connection-manager.cpp | 1 + 1 file changed, 1 insertion(+) commit 853a3b69f6f719029bb175f7e28156540e6ab83b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:24:31 2011 -0200 ProtocolInfo: Add avatar information support. TelepathyQt4/protocol-info.cpp | 25 +++++++++++++++++++++++++ TelepathyQt4/protocol-info.h | 4 ++++ 2 files changed, 29 insertions(+) commit 68e90dd12b7dab8efef3345b75c732ae1ad53512 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 15:56:58 2011 -0200 manager-file test: Add test for avatar information. tests/manager-file.cpp | 14 ++++++++++++++ tests/telepathy/managers/test-manager-file.manager | 10 ++++++++++ 2 files changed, 24 insertions(+) commit 8083bd9d790e0eb3b7872cee651e1dba05ba093a Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 15:39:37 2011 -0200 ManagerFile: Parse avatar information. TelepathyQt4/manager-file.cpp | 30 ++++++++++++++++++++++++++++++ TelepathyQt4/manager-file.h | 4 +++- 2 files changed, 33 insertions(+), 1 deletion(-) commit 05a82fb8018712c9dc9dd798402240492d34c081 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 15:26:16 2011 -0200 AvatarSpec: Add class to represent Protocol.Avatars properties. TelepathyQt4/AvatarSpec | 13 ++++ TelepathyQt4/CMakeLists.txt | 2 + TelepathyQt4/avatar.cpp | 154 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/avatar.h | 33 ++++++++++ 4 files changed, 202 insertions(+) commit 0fe4107498c9a53544f793081512c007817510bd Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 15:14:36 2011 -0200 AvatarData: Declare Qt metatype and properly export class. TelepathyQt4/avatar.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 2acb3a08eb57fdb652959ebf7caef86838a9d53a Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 15:06:51 2011 -0200 Rename avatar-data.h to avatar.h as a preparation for inclusion of AvatarSpec. TelepathyQt4/AvatarData | 2 +- TelepathyQt4/CMakeLists.txt | 2 +- TelepathyQt4/avatar-data.h | 47 --------------------------------------------- TelepathyQt4/avatar.h | 47 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 49 deletions(-) commit 2032efa67607888aa5546e5c040d1f9f0d6e1054 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 14:58:01 2011 -0200 Auto-generate code for Protocol.Avatars. TelepathyQt4/connection-manager.xml | 1 + 1 file changed, 1 insertion(+) commit 61c3d567352df8898bd0034504a82890abdb78e3 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:41:43 2011 -0200 ManagerFile: Improve check for keys starting with param- and status-. TelepathyQt4/manager-file.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit c17011e01c8f851049b8025d0124165cf3b4131d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:20:29 2011 -0200 cm-basics test: Enable Protocol.Presence test. tests/dbus/cm-basics.cpp | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) commit fdabaa7fa05272b2055f3b212d9fc4f4be2f1b1b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:19:47 2011 -0200 ConnectionManager: Fix handling of Properties.GetAll(Protocol.Presence). TelepathyQt4/connection-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0c7f4b0a1e76ef49e282abc5933bfe27a27baa4d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:19:24 2011 -0200 ConnectionManager: Properly parse Protocol.Interfaces property. TelepathyQt4/connection-manager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4939ff1edbd6f59de20b7566653da352cafc2f89 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 16:18:22 2011 -0200 echo2 cm: Properly create TpPresenceStatusSpec with "canHaveMessage" set. tests/lib/glib/echo2/protocol.c | 2 ++ 1 file changed, 2 insertions(+) commit cda9a2258d49d9d48a0ae804b562567ed75fe798 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 14:41:17 2011 -0200 Use PresenceSpec/List in favour of SimpleStatusSpec/Map. TelepathyQt4/connection-manager.cpp | 4 +- TelepathyQt4/manager-file.cpp | 18 ++++---- TelepathyQt4/manager-file.h | 3 +- TelepathyQt4/protocol-info.cpp | 15 +++++-- TelepathyQt4/protocol-info.h | 5 ++- tests/dbus/cm-basics.cpp | 46 ++++++++++++++------ tests/manager-file.cpp | 87 ++++++++++++++++++++++--------------- 7 files changed, 112 insertions(+), 66 deletions(-) commit f5fd3bbf04640187df1c77c01adc5e9f60d9b990 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 14:03:31 2011 -0200 PresenceSpec: Add high-level API for SimpleStatusSpec. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/PresenceSpec | 13 ++++++++ TelepathyQt4/presence.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/presence.h | 45 ++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+) commit a7069b998d98938f665dd188b3cc08424cfca616 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 13:45:21 2011 -0200 cm-basics test: Add test for Protocol.Presence. The code is commented due to an issue with tp-glib usage. Check comment in the code. tests/dbus/cm-basics.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 5d5719d65aff38a1d22dac1e28f2ba690da642b3 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 13:26:23 2011 -0200 echo2 cm: Add support for Protocol.Presence. tests/lib/glib/echo2/protocol.c | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) commit 24186cc2fdfab4c75ae105552be0eeb109c52275 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:36:45 2011 -0200 echo2 cm: Import protocol.c from tp-glib. tests/lib/glib/echo2/protocol.c | 57 +++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 8 deletions(-) commit c20cf4695a881ed9bdacef6473b1c710220df024 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:40:16 2011 -0200 Bump tp-glib dependency to 0.13.7 due to Protocol.Presence/Avatars. CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 62c747587b08cf80672710c27cf6b4cb11befb6d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:30:08 2011 -0200 ConnectionManager: Bind Protocol.Presence. TelepathyQt4/connection-manager-internal.h | 4 ++- TelepathyQt4/connection-manager.cpp | 55 +++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 5 deletions(-) commit ba8b9b2f006646d6b22375ace9eecd37eedc0d86 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:09:09 2011 -0200 ConnectionManager: Use presence status information from manager file. TelepathyQt4/connection-manager.cpp | 1 + 1 file changed, 1 insertion(+) commit b82062cf9dc259914927007c069571674bf8c898 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:08:20 2011 -0200 ProtocolInfo: Add presence status information support. TelepathyQt4/protocol-info.cpp | 19 +++++++++++++++++++ TelepathyQt4/protocol-info.h | 3 +++ 2 files changed, 22 insertions(+) commit 979c46dc579bafc0d3b11349634663ece80e6123 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 11:09:30 2011 -0200 ProtocolInfo: Re-order methods declaration to match implementation. TelepathyQt4/protocol-info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit be2096abef0593412df9b26381ea2b96d2e2825e Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:06:30 2011 -0200 manager-file test: Add test for presence status. tests/manager-file.cpp | 26 ++++++++++++++++++++++ tests/telepathy/managers/test-manager-file.manager | 3 +++ 2 files changed, 29 insertions(+) commit 036a530446731fb74785042ed9c49748e5a0c8a5 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 11:48:47 2011 -0200 ManagerFile: Parse presence status information. TelepathyQt4/manager-file.cpp | 68 +++++++++++++++++++++++++++++++++++++++---- TelepathyQt4/manager-file.h | 1 + 2 files changed, 64 insertions(+), 5 deletions(-) commit 7af4a3912c49ff26bd59de057589f956d3ca64d3 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 12:29:00 2011 -0200 Auto-generate code for Protocol.Presence. TelepathyQt4/connection-manager.xml | 1 + 1 file changed, 1 insertion(+) commit 389b80a97f629e7ee2f2b652bd5c7c5696a1830f Author: Andre Moreira Magalhaes (andrunko) Date: Sun Feb 13 14:40:57 2011 -0200 ProtocolInfo: Improve documentation. TelepathyQt4/protocol-info.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit 33bae44be2b9d2ae82540beebab8dcce533b9cfe Author: Olli Salli Date: Sat Feb 12 17:39:41 2011 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 8f367e1efd3dae39dd2661f8c768129383a54d1a Author: Olli Salli Date: Sat Feb 12 16:21:44 2011 +0200 Make debug subsys more no-op when disabled at runtime Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/debug-internal.h | 77 ++++++++++++++++++++++++++++++++++++++++--- TelepathyQt4/debug.cpp | 20 +++++------ 2 files changed, 83 insertions(+), 14 deletions(-) commit 959437388baf00e22d04dc78f3dbb0d791399507 Author: Olli Salli Date: Fri Feb 11 18:40:50 2011 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 39dc9ac26a30123329ae0884b64de4544d0a85a1 Author: Olli Salli Date: Fri Feb 11 18:33:26 2011 +0200 Channel: Avoid crashes in updateContacts when just the self handle changed Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/channel.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 18d5da6cb5c7f4ea73348443c7d3aea4b6228db6 Author: Olli Salli Date: Fri Feb 11 17:55:20 2011 +0200 AccountSet::Private::filterValid variable isn't used, remove it Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/account-set-internal.h | 1 - 1 file changed, 1 deletion(-) commit 1f8ee692f8b06fd5ac99a9107cd3d2bba70a9d12 Author: Olli Salli Date: Fri Feb 11 14:02:36 2011 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 76a33cbcab9e3a02f178e4b1f4ff22d67cc0b38c Author: Olli Salli Date: Thu Feb 10 19:56:12 2011 +0200 Don't install future headers They're not API stable! Also, we don't install the future-internal.h required by them so they don't work anyway. Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit d18563249d7460ac1f64814c202751a2893ea648 Author: Xavier Claessens Date: Wed Feb 2 11:12:49 2011 +0100 Initialize requestAvatarsIdle to false at construction TelepathyQt4/contact-manager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1916776df9da558969761e580687109fd4431981 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 15:14:12 2011 -0200 Start 0.5.7 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 0318aafda275c681b3d3048d5425a343832d422c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 15:03:13 2011 -0200 Prepare release 0.5.6 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 3bdb836daa942e257399f6083964d72350e6c065 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:59:43 2011 -0200 Update NEWS NEWS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit cd3bad820290f020381e45f7a3a81e32c4b88cca Merge: ad43fed 3dad653 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:58:23 2011 -0200 Merge branch 'spec-0.21.8' Reviewed-by: Olli Salli (oggis) commit ad43fedc580857f92c472f0d162b8c79daad6f55 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:49:52 2011 -0200 Do not link tests and examples/file-transfer against QtGui. Reviewed-by: Olli Salli (oggis) cmake/modules/TpQt4Macros.cmake | 4 ++-- examples/file-transfer/CMakeLists.txt | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) commit 9287580af0653b13c0240dcea4219d1e79c138f2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:44:02 2011 -0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 165c2a91dd6bdcdf361b5ab36317d58555843355 Merge: a146a9a efeaf3f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:41:08 2011 -0200 Merge branch 'contact' Reviewed-by: Olli Salli (oggis) commit a146a9a7a4f74c51221dbc8c72973db3237e3a38 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:38:59 2011 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 58dab1461d66469c1b3092e91f78958ee133af94 Author: Jonathan Riddell Date: Thu Jan 27 14:35:20 2011 -0200 Properly link against QtXml. Reviewed-by: Andre Moreira Magalhaes (andrunko) cmake/modules/TpQt4Macros.cmake | 4 ++-- examples/accounts/CMakeLists.txt | 1 + examples/file-transfer/CMakeLists.txt | 2 ++ examples/protocols/CMakeLists.txt | 1 + examples/roster/CMakeLists.txt | 2 ++ 5 files changed, 8 insertions(+), 2 deletions(-) commit ae5d89febc980733243eac72fa932830238b2d85 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:24:34 2011 -0200 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c7bd938c5fd8d7ab12bbdf4902c9396abb7ac6d5 Merge: c5e3c16 c234fbd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:22:19 2011 -0200 Merge branch 'protocol' Reviewed-by: Olli Salli (oggis) commit efeaf3f6d4d27f35881122ea37b57c7ef91b713f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 27 14:17:43 2011 -0200 ContactManager::Roster: Properly emit presencePublicationRequested. TelepathyQt4/contact-manager-roster.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 3dad653778f50940b4e79b7269daa882d6f919a7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 26 16:53:20 2011 -0200 Generate code for all stable interfaces and added missing fancy-header files. TelepathyQt4/AccountInterfaceAddressingInterface | 13 +++++++++++++ TelepathyQt4/AccountInterfaceAvatarInterface | 13 +++++++++++++ TelepathyQt4/CMakeLists.txt | 15 ++++++++++++++- TelepathyQt4/ChannelInterfaceAnonymityInterface | 13 +++++++++++++ TelepathyQt4/ChannelInterfaceConferenceInterface | 13 +++++++++++++ TelepathyQt4/ChannelInterfaceMessagesInterface | 13 +++++++++++++ TelepathyQt4/ChannelInterfaceSASLAuthenticationInterface | 13 +++++++++++++ TelepathyQt4/ChannelInterfaceSecurableInterface | 13 +++++++++++++ TelepathyQt4/ChannelInterfaceServicePointInterface | 13 +++++++++++++ TelepathyQt4/ChannelInterfaceTubeInterface | 13 +++++++++++++ TelepathyQt4/ChannelTypeFileTransferInterface | 13 +++++++++++++ TelepathyQt4/ChannelTypeServerAuthenticationInterface | 13 +++++++++++++ TelepathyQt4/ConnectionInterfaceMailNotificationInterface | 13 +++++++++++++ TelepathyQt4/account.xml | 1 + TelepathyQt4/channel.xml | 9 ++++++--- TelepathyQt4/connection.xml | 3 ++- 16 files changed, 179 insertions(+), 5 deletions(-) commit 86c77f8a86163eba8652c9cb0accfab1c1ace76f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 14 14:14:32 2011 -0200 Update to spec 0.21.8. spec/Account_Interface_Addressing.xml | 76 ++ spec/Call_Content.xml | 257 +++++-- spec/Call_Content_Codec_Offer.xml | 48 +- spec/Call_Content_Interface_Media.xml | 234 +++++-- spec/Call_Content_Interface_Mute.xml | 26 +- spec/Call_Stream.xml | 165 +++-- spec/Call_Stream_Endpoint.xml | 127 +++- spec/Call_Stream_Interface_Media.xml | 263 ++++--- spec/Channel.xml | 8 +- spec/Channel_Dispatcher.xml | 220 +++++- ...Channel_Dispatcher_Interface_Operation_List.xml | 4 +- spec/Channel_Interface_Conference.xml | 17 +- spec/Channel_Interface_DTMF.xml | 93 ++- spec/Channel_Interface_Hold.xml | 5 +- spec/Channel_Interface_Mergeable_Conference.xml | 6 +- spec/Channel_Interface_Messages.xml | 216 ++++-- spec/Channel_Interface_SASL_Authentication.xml | 704 +++++++++++++++++++ spec/Channel_Interface_SMS.xml | 94 ++- spec/Channel_Interface_Securable.xml | 78 +++ spec/Channel_Interface_Splittable.xml | 4 +- spec/Channel_Request.xml | 86 +++ spec/Channel_Type_Call.xml | 776 +++++++++++++++++---- spec/Channel_Type_Contact_Search.xml | 31 +- spec/Channel_Type_Server_Authentication.xml | 121 ++++ spec/Channel_Type_Text.xml | 193 +++-- spec/Client_Handler.xml | 3 +- spec/Client_Handler_Future.xml | 23 + spec/Client_Interface_Requests.xml | 4 +- spec/Connection.xml | 184 ++++- spec/Connection_Interface_Anonymity.xml | 40 +- spec/Connection_Interface_Cellular.xml | 92 +-- spec/Connection_Interface_Communication_Policy.xml | 4 +- spec/Connection_Interface_Contact_Info.xml | 30 + spec/Connection_Interface_Contact_List.xml | 90 ++- spec/Connection_Interface_Contacts.xml | 13 +- spec/Connection_Interface_Keepalive.xml | 73 ++ spec/Connection_Interface_Location.xml | 50 +- spec/Connection_Interface_Mail_Notification.xml | 82 +-- spec/Connection_Interface_Power_Saving.xml | 7 +- spec/Connection_Manager.xml | 142 ++-- spec/Media_Stream_Handler.xml | 89 ++- spec/Protocol.xml | 75 +- spec/Protocol_Interface_Avatars.xml | 5 +- spec/Protocol_Interface_Presence.xml | 5 +- spec/all.xml | 151 ++-- spec/errors.xml | 53 ++ spec/template.xml | 2 +- 47 files changed, 4059 insertions(+), 1010 deletions(-) commit c234fbd04f4dd30bdad29039c3b3274dc7660b72 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 26 12:50:19 2011 -0200 ConnectionManager: Ignore protocols with invalid names. TelepathyQt4/connection-manager.cpp | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) commit 62558b649efc3f2ae504ceda6edc98bb67953446 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 26 12:32:11 2011 -0200 ConnectionManager: Properly escape protocol name with "-". TelepathyQt4/connection-manager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c5e3c16891e1fbbd2c8257be20f324c4ec5abdb6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 25 17:22:56 2011 -0200 Start 0.5.6 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit dee006590984a05d911906969d14c33e85968567 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 25 16:21:37 2011 -0200 Prepare release 0.5.5 CMakeLists.txt | 4 ++-- NEWS | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) commit a216007626dab4824c901f7ac6e6720dcd50613d Merge: b5f2b70 54eddc5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 25 16:10:33 2011 -0200 Merge branch 'contactlist' Reviewed-by: Olli Salli (oggis) commit 54eddc5fe4d733eaed4210dcc197ac47af68c54d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 25 15:11:54 2011 -0200 Renamed contact-manager-roster-internal.{h,cpp} to connection-manager-internal.h/connection-manager-roster.cpp TelepathyQt4/CMakeLists.txt | 4 +- TelepathyQt4/contact-manager-internal.h | 318 ++++ TelepathyQt4/contact-manager-roster-internal.cpp | 1795 ---------------------- TelepathyQt4/contact-manager-roster-internal.h | 318 ---- TelepathyQt4/contact-manager-roster.cpp | 1795 ++++++++++++++++++++++ TelepathyQt4/contact-manager.cpp | 2 +- 6 files changed, 2116 insertions(+), 2116 deletions(-) commit b4bc4b6617fc1cb0b8ae43ba909c400a3891482c Author: Olli Salli Date: Tue Jan 25 19:03:36 2011 +0200 Emit publish state change signals if and only if something changed TelepathyQt4/contact-manager-roster-internal.cpp | 4 +++- TelepathyQt4/contact.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) commit 5f6b9f4e74d71ab4a2c776022efa6546e31b1b23 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 25 12:18:05 2011 -0200 ContactManager: Make sure FeatureAvatarToken is added to feature if FeatureAvatarData is requested even if the ContactFactory does not contain FeatureAvatarData. TelepathyQt4/contact-manager.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit d8f3612723300cf73b4ae47f7279fd8863f7df7d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 25 12:16:35 2011 -0200 ContactManager::Roster: Simplify introspectGroups code by using PendingSuccess/Failure. TelepathyQt4/contact-manager-roster-internal.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) commit b5f2b703574194901608e9bf77be4c659b68a92b Author: Xavier Claessens Date: Tue Jan 25 13:47:35 2011 +0100 AvatarData: Make atomic-write in the cache Create a temporary file and then rename it, to make sure file writing is not racy with other process updating the avatar at the same time. Fixes bug #33457 TelepathyQt4/contact-manager.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit 49d1e52320026b3d0ced7b4e7ad5d426395f25a8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 23:50:41 2011 -0200 ContactManager::Roster: Properly reintrospect group when needed. TelepathyQt4/contact-manager-roster-internal.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit d9f15da24cf49ac543d956b5eafca20948e852dd Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 21:06:12 2011 -0200 ContactManager::Roster: Make sure FeatureRosterGroup introspection is finished before processing changes. TelepathyQt4/contact-manager-roster-internal.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit acf2aaebd81ec84ebbeccfc78db7fa1cb187bc45 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:54:05 2011 -0200 conn-roster test: Check that ContactFactory::features() are properly requested for ContactList contacts. tests/dbus/conn-roster.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 23ac62291163748425a21a0e73fb62ad69a707be Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:50:59 2011 -0200 ContactManager::Roster: Make sure ContactFactory::features() is requested for ContactList contacts. TelepathyQt4/contact-manager-roster-internal.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) commit c2a53c7c759006c02503ba2263c25b54b542f980 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:50:03 2011 -0200 ContactManager: Move ensureTracking to the public class, so it can be used by ContactManager::Roster. TelepathyQt4/contact-manager.cpp | 147 ++++++++++++++++++--------------------- TelepathyQt4/contact-manager.h | 1 + 2 files changed, 70 insertions(+), 78 deletions(-) commit d67b3b32ba6f1d333f3f9b7788ceb4943a73673e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:49:06 2011 -0200 ContactManager: No need to add FeatureAvatarToken to the list returned by ContactFactory::features() as ContactFactory already does it. TelepathyQt4/contact-manager.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 766432a21dd643343fba5bd87dcff654a2c4a34a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:48:10 2011 -0200 ContactFactory: Make sure FeatureAvatarToken is added to features if FeatureAvatarData is requested. TelepathyQt4/contact-factory.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit d2fb744c47cc3648dc1d3495d1b574b239ac0f03 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:12:45 2011 -0200 Use ContactManager::Roster. Simplify ContactManager/Connection code by using ContactManager::Roster. TelepathyQt4/CMakeLists.txt | 3 +- TelepathyQt4/connection.cpp | 450 +--------- TelepathyQt4/connection.h | 16 +- TelepathyQt4/contact-manager-internal.h | 61 -- TelepathyQt4/contact-manager.cpp | 1444 ++----------------------------- TelepathyQt4/contact-manager.h | 102 +-- TelepathyQt4/pending-operation.h | 4 +- 7 files changed, 111 insertions(+), 1969 deletions(-) commit 02a16489cf8056739de347778678df78477ad30b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 20:10:59 2011 -0200 Added specialized class to manage roster code. All the code comes from Connection/ContactManager with minor tweaks to work in a separate class. TelepathyQt4/contact-manager-roster-internal.cpp | 1775 ++++++++++++++++++++++ TelepathyQt4/contact-manager-roster-internal.h | 318 ++++ 2 files changed, 2093 insertions(+) commit 783f02da13be7342b5dc315ccdbcaa024f5a2d73 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 21 13:51:15 2011 -0200 Connection/ContactManager: Only introspect FeatureRosterGroups if FeatureRoster initial contacts are ready. TelepathyQt4/connection.cpp | 55 +++++++++++++++++++++++++++++++--------- TelepathyQt4/contact-manager.cpp | 12 +-------- 2 files changed, 44 insertions(+), 23 deletions(-) commit f2ad812b02b080125bd520436d9b4c5a984088ec Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 21 13:04:38 2011 -0200 Connection/ContactManager: Ignore ContactList changes until initial contacts are retrieved. TelepathyQt4/connection.cpp | 5 +++++ TelepathyQt4/contact-manager.cpp | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) commit 7be0e05b49820b0891038ff39f299363426b4d55 Author: Alvaro Soliverez Date: Mon Jan 24 11:06:25 2011 -0800 Added convenience method to check file transfer capabilities Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/capabilities-base.cpp | 16 ++++++++++++++++ TelepathyQt4/capabilities-base.h | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) commit 786a97b89cefa6426a852864e3c5afda9dcd8c9d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 24 17:26:24 2011 -0200 Start 0.5.5 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 6430855cb70d9f8894b3b1732703d94d0988affa Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 20 13:12:41 2011 -0200 Prepare release 0.5.4 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 90a83bd781aa459525d8779ab4c73ea91406c308 Author: Olli Salli Date: Thu Jan 20 16:58:03 2011 +0200 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 57579d5b856a653f5658690a0acd08c52f129113 Merge: a6af7f9 11527a2 Author: Olli Salli Date: Thu Jan 20 16:55:33 2011 +0200 Merge branch 'pub-req-sanity' Reviewed-by: Andre Magalhaes (andrunko) commit a6af7f9fb3426332229817b3fd8418918cdcf2ab Merge: 88d3771 509084b Author: Olli Salli Date: Thu Jan 20 16:45:48 2011 +0200 Merge branch 'separate-version' Reviewed-by: Andre Magalhaes (andrunko) commit 88d3771bcbeeb6771810679185c488f26df94089 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 20 12:23:13 2011 -0200 Update NEWS NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 42278d90c793436765a1542322f940795287bce7 Merge: 94fd7fb d0d13f4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 20 12:18:39 2011 -0200 Merge branch 'contactlist' Reviewed-by: Olli Salli (oggis) commit 11527a255f889e5fc50e0e7e95b9a6fffbc71d21 Author: Olli Salli Date: Thu Jan 20 13:26:31 2011 +0200 presencePublicationRequested(Contacts), which carries multiple contacts The details are to be extracted from the individual contacts. TelepathyQt4/contact-manager.cpp | 29 +++++++++++++++++++++++++---- TelepathyQt4/contact-manager.h | 4 +++- tests/dbus/conn-roster.cpp | 10 ++++------ 3 files changed, 32 insertions(+), 11 deletions(-) commit 5c4c382723348fd0b6b584a78127f72d9ac6054f Author: Olli Salli Date: Thu Jan 20 13:17:00 2011 +0200 ContactManager: Set Contact state consistently before signaling presencePublicationRequested TelepathyQt4/contact-manager.cpp | 4 ++-- tests/dbus/conn-roster.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) commit 0d25a164d1684da5e127582e514c3e7b132a9c4d Merge: 509084b d0d13f4 Author: Olli Salli Date: Thu Jan 20 13:02:13 2011 +0200 Merge branch 'contactlist' of git+ssh://dhansak.collabora.co.uk/home/andrunko/public_html/git/telepathy-qt4 into pub-req-sanity commit 509084b10bc34f5963af53a6eab86f32d937f1db Author: Olli Salli Date: Thu Jan 20 11:16:16 2011 +0200 Prevent full library recompiles when the library version number is changed Also speeds up the library slightly when debugging is disabled. We could make that yet better though by reimplementing QDebug's API. CMakeLists.txt | 3 ++- TelepathyQt4/debug-internal.h | 10 ++-------- TelepathyQt4/debug.cpp | 6 ++++-- config-version.h.in | 1 + config.h.in | 1 - 5 files changed, 9 insertions(+), 12 deletions(-) commit 94fd7fba851d1b14835294485a40fa1dd3143b07 Merge: 626ef34 2eed544 Author: Olli Salli Date: Thu Jan 20 10:57:08 2011 +0200 Merge branch 'master' of git+ssh://git.collabora.co.uk/git/telepathy-qt4 commit d0d13f4a6174b6b950353824ff47f7fd893be30c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 19 14:09:56 2011 -0200 ContactManager: Only process contact list changes once the initial contactlist contacts are received. TelepathyQt4/contact-manager.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 04fc79ff5f147d2d07e7aeba6c665f4e689be1a0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 19 13:53:57 2011 -0200 conn-roster test: Check that ContactManager::presencePublicationRequested is properly emitted. tests/dbus/conn-roster.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) commit c012e4acc7edf321df1c259382e9ed91af171cd8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 19 11:13:09 2011 -0200 ContactManager: Always emit presencePublicationRequest if publish state is Ask even if there is no message. TelepathyQt4/contact-manager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 2eed544a91b6aa012972464a109bd237bd4f445c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 11:20:52 2011 -0200 Start 0.5.4 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit ae69b2e6634d9152a3edb277662e37483128c15a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:47:33 2011 -0200 Prepare release 0.5.3 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 57eda30434ed0f17750840c1188977b919ff6987 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:47:24 2011 -0200 Update NEWS. NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit a72b1c92eca836169e3babfc8ade26a0fc1a59b4 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:23:59 2011 -0200 ProtocolParameter: Moved qHash to namespace Tp. Reviewed-by: Olli Salli (oggis) TelepathyQt4/protocol-parameter.cpp | 6 +++--- TelepathyQt4/protocol-parameter.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) commit a6b79dfda19d44e53ddac85694524b481fea862e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:20:44 2011 -0200 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit a21e9f83de9bd2c0260a4ec93d3f0779b1d67836 Merge: 5a195e3 59b3652 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:17:58 2011 -0200 Merge branch 'contact-factory' Reviewed-by: Olli Salli (oggis) commit 5a195e35570db207b823c9b19ca5d5c500048eb0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:17:51 2011 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 3a2ff3fec9392e8729e315dad06e3355ef3773c1 Merge: acd7674 c19f3d6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 10:16:24 2011 -0200 Merge branch 'immortal-handles' Reviewed-by: Olli Salli (oggis) commit 59b365236a93607024dd149a0e656d32b9f3cbc0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 09:12:52 2011 -0200 ContactFactory: Do no add a new prepare method taking a list of contacts. TelepathyQt4/contact-factory.cpp | 15 +-------------- TelepathyQt4/contact-factory.h | 1 - 2 files changed, 1 insertion(+), 15 deletions(-) commit 7f294625060d2814b218748c382128512b30aa4e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 09:11:53 2011 -0200 PendingContacts: Do not call ContactFactory::prepare for now. TelepathyQt4/pending-contacts.cpp | 31 ++----------------------------- TelepathyQt4/pending-contacts.h | 1 - 2 files changed, 2 insertions(+), 30 deletions(-) commit 41c744c5f4d6a56c20d381e624e0a66a61b6be60 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 12 17:02:02 2011 -0200 contact-factory test: Added test for ContactFactory. tests/dbus/CMakeLists.txt | 1 + tests/dbus/contact-factory.cpp | 134 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+) commit c09d002945b6e101a5b3ddb61ecb3ac6c697591b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 14 11:28:47 2011 -0200 ContactManager: Implicitly add contact factory features to contact features when requesting contacts. TelepathyQt4/contact-manager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit f00df843d8f7729fdc44c26d06a09b4b9d12f37a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 12 16:09:06 2011 -0200 PendingContacts: Use ContactFactory. TelepathyQt4/pending-contacts.cpp | 57 +++++++++++++++++++++++++++++++-------- TelepathyQt4/pending-contacts.h | 1 + 2 files changed, 47 insertions(+), 11 deletions(-) commit 6b633733b8877ad7b9cabbfc6b0a833aa0fb6d30 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 12 16:08:53 2011 -0200 ContactManager: Use ContactFactory. TelepathyQt4/contact-manager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 186355b3a256d25e87d2caab1a30e4baec3fc599 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 12 16:06:44 2011 -0200 ContactFactory: Stub no more. TelepathyQt4/contact-factory.cpp | 82 +++++++++++++++++++++++++++++++++++----- TelepathyQt4/contact-factory.h | 16 ++++++-- TelepathyQt4/contact.h | 1 + 3 files changed, 86 insertions(+), 13 deletions(-) commit 97dae15bd9194d9e7b9694181fbc7a768522c492 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 12 15:32:33 2011 -0200 PendingContacts: Sanitize methods declaration/implementation. TelepathyQt4/pending-contacts.cpp | 168 +++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 84 deletions(-) commit c19f3d6d76fd74c6b8613c6bf5bd1f7a3e5f6c0e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 09:05:40 2011 -0200 Connection: Consider all handles held if immortal handles is true when calling referenceHandles. TelepathyQt4/connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b7ce9b772252305a797c5a76f60e964771af548f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 09:03:56 2011 -0200 Connection: Always delete handleContext. TelepathyQt4/connection.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit a03df68a1bfb203ae2e0007c65428a31a7310707 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 17 09:03:36 2011 -0200 Connection: Properly initialize Private::immortalHandles. TelepathyQt4/connection.cpp | 1 + 1 file changed, 1 insertion(+) commit 44e33daf88e4d9bc0752f233b805cdffed421503 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 14 15:35:50 2011 -0200 Connection: Move hasImmortalHandles to ConnectionLowlevel and make it private. TelepathyQt4/connection-lowlevel.h | 2 ++ TelepathyQt4/connection.cpp | 38 ++++++++++++++++++++------------------ TelepathyQt4/connection.h | 2 -- 3 files changed, 22 insertions(+), 20 deletions(-) commit bfef48533e4f49d96b983a168fdaba76794e4033 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 14 12:33:07 2011 -0200 Connection: Use ImmortalHandles property. TelepathyQt4/connection.cpp | 71 ++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 27 deletions(-) commit bbdcc522333853e02e759c88e5e06a689b81e14b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 14 12:32:45 2011 -0200 Connection: Added hasImmortalHandles method. TelepathyQt4/connection.cpp | 16 ++++++++++++++++ TelepathyQt4/connection.h | 2 ++ 2 files changed, 18 insertions(+) commit 626ef34bcea467727616d838ca5a0870d580425c Author: Olli Salli Date: Thu Jan 13 22:34:15 2011 +0200 Add default bus parameter to Tp::ProfileManager::create() TelepathyQt4/profile-manager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit acd7674bead70e5eb7e57e995a35223d5a7afbb0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 11 15:58:47 2011 -0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 936d6da2c553d5de7d1d592b09f0777aac8f1962 Author: Dominik Schmidt Date: Tue Jan 11 15:51:33 2011 -0200 Add qHash(ProtocolParameter) support. TelepathyQt4/protocol-parameter.cpp | 5 +++++ TelepathyQt4/protocol-parameter.h | 2 ++ 2 files changed, 7 insertions(+) commit 24b7a2264ca71119b99914e89fab279467941ab6 Author: Dominik Schmidt Date: Tue Jan 11 15:50:17 2011 -0200 Add ProtocolParameter::operator< support. TelepathyQt4/protocol-parameter.cpp | 5 +++++ TelepathyQt4/protocol-parameter.h | 1 + 2 files changed, 6 insertions(+) commit 2124621c10936bee56b51634508892a13fc06c4f Author: Xavier Claessens Date: Mon Jan 10 17:11:27 2011 +0100 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit cc068fcc2b66965d8106a43e87bca74644bd4bb8 Author: Xavier Claessens Date: Mon Jan 10 14:18:25 2011 +0100 Add Tp::Contact::isContactInfoKnown() This is useful to know if ContactInfo is received. For protocols like XMPP that does not push the VCard, an explicit request is then needed using refreshInfo() or requestInfo(). TelepathyQt4/contact.cpp | 26 +++++++++++++++++++++++++- TelepathyQt4/contact.h | 1 + 2 files changed, 26 insertions(+), 1 deletion(-) commit 3cc82768eb0293f16d6e84c183e99fa85bdaa6c9 Author: Xavier Claessens Date: Mon Jan 10 14:17:10 2011 +0100 Add Tp::Contact::requestAvatarData() It force the avatar request in the case the token is unknown, has it happens for offline XMPP contacts TelepathyQt4/contact-manager.cpp | 6 +++--- TelepathyQt4/contact.cpp | 22 ++++++++++++++++++++++ TelepathyQt4/contact.h | 1 + 3 files changed, 26 insertions(+), 3 deletions(-) commit a10ad9c3b5ecbec1ae2d036d7ecac1bcff840f76 Author: Olli Salli Date: Mon Jan 10 16:00:45 2011 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 7392aef2ad2f47f5bd0c16b40c27a42c8d9a6fe4 Merge: 3eebbce acc7353 Author: Olli Salli Date: Mon Jan 10 16:00:10 2011 +0200 Merge branch 'no-add-needed' Reviewed-by: Andre Magalhaes (andrunko) Reviewed-by: Xavier Claessens (xclaesse) commit acc7353b178196b75d5f2c7adde32e2bfb25e4a1 Author: Olli Salli Date: Mon Jan 10 15:37:34 2011 +0200 Link development builds with -Wl,--no-add-needed This increases forwards compatibility with distros using gold as the linker or otherwise using --no-add-needed/--no-copy-dt-needed-entries CMakeLists.txt | 1 + cmake/modules/FindDBusGLib.cmake | 48 +++++++++++++++++++++++++++++++++++ cmake/modules/TelepathyDefaults.cmake | 8 ++++++ tests/dbus/CMakeLists.txt | 6 +++-- tests/lib/glib/CMakeLists.txt | 20 +++++++++------ 5 files changed, 73 insertions(+), 10 deletions(-) commit 6fdb82fd34788ec349405d78447a1cae90a09e69 Author: Olli Salli Date: Mon Jan 10 15:37:04 2011 +0200 Fix Werror etc disable mechanism to check for a release version number directly cmake/modules/TelepathyDefaults.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit c0e571e03b9ef33ede8c6429fcea4a3ea94a5858 Author: Olli Salli Date: Mon Jan 10 14:31:05 2011 +0200 Include QtCore explicitly in libraries for qt feature tests CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3eebbce7ab0958c999315afdd49023907dd9a9f3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 3 19:23:08 2011 -0200 Start 0.5.3 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 3bde637a9bf3ed80e245214819558c13b890a0ce Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 3 19:04:03 2011 -0200 Prepare release 0.5.2 CMakeLists.txt | 4 ++-- NEWS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 8d3bddcfc0792c96c5fbc43f24124c6d5f143c21 Author: Olli Salli Date: Mon Jan 3 16:55:08 2011 +0200 Update NEWS NEWS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 75575aac40dd3feb2c7b29b2669b8bf3358b0916 Author: Olli Salli Date: Mon Jan 3 16:36:15 2011 +0200 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit b11e7e339c930af46f7ca4a71013d9c93153f247 Merge: e805895 105a380 Author: Olli Salli Date: Mon Jan 3 16:34:20 2011 +0200 Merge branch 'roster-consistency' Reviewed-by: Andre Magalhaes (andrunko) commit 105a3801fa4669e42319cea889566136847b42ff Author: Olli Salli Date: Mon Jan 3 16:33:30 2011 +0200 function begin brace tests/dbus/conn-roster-groups.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit c9cc696567ce6d633405bcfc02cf50fef699e316 Author: Olli Salli Date: Mon Jan 3 16:25:46 2011 +0200 Make TestConnRosterGroups fake congestion less fscking slow tests/dbus/conn-roster-groups.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c8e9e5a194b483bc5f5777870ffd0911d0f2919e Author: Olli Salli Date: Mon Jan 3 16:24:30 2011 +0200 ContactManager: Use queued finish for all roster operations with new D-Bus API TelepathyQt4/contact-manager.cpp | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) commit fc3a5f2285897b8e1188e7f45ae77e11614b0e9c Author: Olli Salli Date: Mon Jan 3 16:11:35 2011 +0200 Make TestConnRosterGroups very anal about event order consistency tests/dbus/conn-roster-groups.cpp | 116 ++++++++++++++++++++++++++++---------- 1 file changed, 87 insertions(+), 29 deletions(-) commit a053aea1072f1b241cd06af3c598d29830519069 Author: Olli Salli Date: Mon Jan 3 14:59:12 2011 +0200 Order removePresenceSubscription finishes consistently with other roster events TelepathyQt4/contact-manager-internal.h | 15 +++++++ TelepathyQt4/contact-manager.cpp | 74 ++++++++++++++++++++++++++++++++- TelepathyQt4/contact-manager.h | 3 ++ 3 files changed, 91 insertions(+), 1 deletion(-) commit a1594809eb4afddf97453e16c06969cbb3b91041 Author: Olli Salli Date: Mon Jan 3 14:58:08 2011 +0200 Conn.I.ContactList test CM: don't accept subscription requests if they're canceled tests/lib/glib/contactlist2/contact-list.c | 4 ++++ 1 file changed, 4 insertions(+) commit e805895e3dd77dc92ebf83295e44d60c78d6ca21 Merge: 8c07764 4ce8ec6 Author: Olli Salli Date: Mon Jan 3 12:53:24 2011 +0200 Merge branch 'roster-race' Reviewed-by: Andre Magalhaes (andrunko) commit 8c0776411f2465fce1c97db75685b1947b353635 Author: Olli Salli Date: Mon Jan 3 12:53:09 2011 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 6f952675848690bba9ab7814045b6ee3e3a745fe Merge: 1c08841 7f53919 Author: Olli Salli Date: Mon Jan 3 12:51:40 2011 +0200 Merge branch 'leave' Reviewed-by: Andre Magalhaes (andrunko) commit 4ce8ec6db65b62e0b73655a70010a8e87f2a07b4 Author: Olli Salli Date: Sat Jan 1 22:34:24 2011 +0200 TestConnRosterGroups: remove stale workaround for racy roster semantics fixed in the new API tests/dbus/conn-roster-groups.cpp | 9 --------- 1 file changed, 9 deletions(-) commit 063f1028a2ae3e76a4508ca0dcdf6ec697e75df4 Author: Olli Salli Date: Sat Jan 1 22:33:36 2011 +0200 TestConnRosterGroups: Wait for synthesized "accept auth request" event so it won't ruin things later tests/dbus/conn-roster-groups.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 7f5391900be01a5c6be25b8fe8a00f36a806adec Author: Olli Salli Date: Sat Jan 1 20:53:04 2011 +0200 Make the requestLeave "already left" check more sensible TelepathyQt4/channel.cpp | 8 +++++--- tests/dbus/chan-group.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) commit cba954bb2215de9412deddae44e380f7efb9ae5e Author: Olli Salli Date: Sat Jan 1 20:40:31 2011 +0200 Guard against leaking events between tests in TestChanGroup tests/dbus/chan-group.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 606b622176e736b3715215e01513b0f49f2808a3 Author: Olli Salli Date: Fri Dec 31 16:29:52 2010 +0200 Make PendingLeave ensure the member remove event has been picked up before finishing TelepathyQt4/channel-internal.h | 2 ++ TelepathyQt4/channel.cpp | 33 ++++++++++++++++++++++++++++++++- tests/dbus/chan-group.cpp | 20 +++----------------- 3 files changed, 37 insertions(+), 18 deletions(-) commit f34da7ebe26a127c4dfab575ff429dc0da1c4c14 Author: Olli Salli Date: Fri Dec 31 15:12:39 2010 +0200 Make StreamedMediaChannel::hangupCall use requestLeave TelepathyQt4/streamed-media-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5a61354ac8d66065a90b8c3e5a471501746ff557 Author: Olli Salli Date: Fri Dec 31 14:49:06 2010 +0200 Add tests for leaving a Group tests/dbus/chan-group.cpp | 116 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 1 deletion(-) commit e5bc23796aa76fd087cb3f015263c0146418f350 Author: Olli Salli Date: Fri Dec 31 14:48:20 2010 +0200 Make checking a channel's self remove info after it's closed not warn TelepathyQt4/channel.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 8ed37c6b0da009155aeb740dc03f1363ea47f3a2 Author: Olli Salli Date: Fri Dec 31 13:35:31 2010 +0200 Implement falling back to Close in Channel::requestLeave TelepathyQt4/CMakeLists.txt | 6 ++- TelepathyQt4/channel-internal.h | 47 ++++++++++++++++++++++ TelepathyQt4/channel.cpp | 87 ++++++++++++++++++++++++++++++++++++++--- TelepathyQt4/channel.h | 3 ++ 4 files changed, 136 insertions(+), 7 deletions(-) commit b8cd97e01ef22990c731dd7df4cda2a4ce28e90d Author: Olli Salli Date: Fri Dec 31 12:26:21 2010 +0200 Make requestLeave early-succeed if already left TelepathyQt4/channel.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 37b8e3197c7455c79df6d83810bfdc2e612bc5a1 Author: Olli Salli Date: Thu Dec 30 20:41:50 2010 +0200 Add Channel::requestLeave for gracefully leaving channels TelepathyQt4/channel.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel.h | 2 ++ 2 files changed, 48 insertions(+) commit 484fa9bf1d9aa5cc1ad77a757196f938f355568c Author: Olli Salli Date: Thu Dec 30 20:33:58 2010 +0200 Remove public channel-factory.h header from SRCS TelepathyQt4/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) commit 7787f7477577728fdd9c46af007368f23a573693 Author: Olli Salli Date: Thu Dec 30 19:25:18 2010 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1c08841fe6b25c6bafe1afa3f9cfc68d6d9ad01f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 31 11:31:15 2010 -0200 Update NEWS NEWS | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 58a450dad4c5706fa73282f01b6511cbd0f749a8 Merge: 994a3c1 5162f29 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 31 11:22:31 2010 -0200 Merge branch 'conn-roster-leak' Reviewed-by: Olli Salli (oggis) commit 994a3c140969fab694288e9252dc31bcf09f73f9 Merge: 5e2e943 a398ff8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 31 11:22:05 2010 -0200 Merge branch 'contactlist' Reviewed-by: Olli Salli (oggis) commit 5162f291c8c4df953286868abec7ad8876d9f543 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 30 14:46:38 2010 -0200 Connection: Don't leak contact list group channels. TelepathyQt4/connection.cpp | 6 ++++++ TelepathyQt4/contact-manager.cpp | 14 ++++++++++++++ TelepathyQt4/contact-manager.h | 2 ++ 3 files changed, 22 insertions(+) commit fbbcd582657e5f863df981d91cfee7750b6fa68c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 30 13:38:56 2010 -0200 Connection: Don't leak contact list channels. TelepathyQt4/connection.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 4968d0204fdcba2a9c3d9a7749623e9d1b26269f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 30 13:38:15 2010 -0200 Connection: No need to keep a ref for connection in PendingConnect, use proxy() instead. TelepathyQt4/connection-internal.h | 2 -- TelepathyQt4/connection.cpp | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) commit d01975b318fc56191b4e658abd7a968935530b89 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 30 13:36:59 2010 -0200 Connection: Don't emit redundant statusChanged. TelepathyQt4/connection.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit a398ff89229a9599e0d21f5976cb00f2a459eca2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 31 11:20:08 2010 -0200 Contact/Manager: Properly implement connectNotify. TelepathyQt4/contact-manager.cpp | 8 ++---- TelepathyQt4/contact.cpp | 53 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 8 deletions(-) commit 548dcabc1d5d5ed62f3e38fdaef2135e3a6a7751 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 30 15:41:37 2010 -0200 Contact/Manager: Do not use details for publish/subscribe/block signals and use message for publish signals. TelepathyQt4/contact-manager.cpp | 57 +++++++++++++++++++++++++++++----------- TelepathyQt4/contact-manager.h | 6 +++++ TelepathyQt4/contact.cpp | 56 +++++++++++++++++++++++++-------------- TelepathyQt4/contact.h | 23 +++++++++++----- 4 files changed, 101 insertions(+), 41 deletions(-) commit 284b22eb721e3f99a2e927b4aec874364f7d952b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 30 14:58:23 2010 -0200 Contact: publish/subscription state is known unless they are set to SubscriptionStateUnknown. TelepathyQt4/contact.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 6e42077552bb3a4603764679da70f6a8694c22fb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 20 10:28:46 2010 -0200 ContactManager: Ignore contact list group events until the initial groups are received. TelepathyQt4/contact-manager.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit 9ce3709ffd3091a384bbc462b093a600c87f027b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 20 10:23:06 2010 -0200 Renamed conn-roster2/conn-roster-groups2 to conn-roster/conn-roster-groups. tests/dbus/CMakeLists.txt | 4 +- tests/dbus/conn-roster-groups.cpp | 621 +++++++++++++++++++++++++++++++++++++ tests/dbus/conn-roster-groups2.cpp | 621 ------------------------------------- tests/dbus/conn-roster.cpp | 376 ++++++++++++++++++++++ tests/dbus/conn-roster2.cpp | 376 ---------------------- 5 files changed, 999 insertions(+), 999 deletions(-) commit 8db3a2f4c235c142c5f57e2b68e7395174126026 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 20 10:21:05 2010 -0200 Renamed conn-roster/conn-roster-groups to conn-roster/conn-roster-groups-legacy. tests/dbus/CMakeLists.txt | 4 +- tests/dbus/conn-roster-groups-legacy.cpp | 679 +++++++++++++++++++++++++++++++ tests/dbus/conn-roster-groups.cpp | 679 ------------------------------- tests/dbus/conn-roster-legacy.cpp | 376 +++++++++++++++++ tests/dbus/conn-roster.cpp | 376 ----------------- 5 files changed, 1057 insertions(+), 1057 deletions(-) commit f114e62bb340a7840ea5a2d8f3fc0513776bcc50 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 20 10:15:17 2010 -0200 Contact: Added new accessors to check if publish/subscription state is known/rejected/cancelled. TelepathyQt4/contact-manager.cpp | 35 +++++++++++++++--------------- TelepathyQt4/contact.cpp | 46 +++++++++++++++++++++++++++++----------- TelepathyQt4/contact.h | 12 +++++++---- 3 files changed, 59 insertions(+), 34 deletions(-) commit 8f19b7c7440225d65d1ca07be7061f5df3a0153f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 20 09:51:07 2010 -0200 ContactManager: Guarantee that contact list/group events are ordered using the same queue for all events. TelepathyQt4/contact-manager.cpp | 75 ++++++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 11 deletions(-) commit 5e2e943a37f4ae525ad7a69e73d47a1fb87f7148 Author: Olli Salli Date: Sun Dec 19 20:56:02 2010 +0200 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit adad5e3701adc2811cbfea5f0ea5d85d8fca6a55 Merge: 388aaf5 c781044 Author: Olli Salli Date: Sun Dec 19 20:54:41 2010 +0200 Merge branch 'channel-close-reason' Reviewed-by: Andre Magalhaes (andrunko) commit 388aaf5559565a730e7396db7d10f30bd3bb2be7 Author: Olli Salli Date: Sun Dec 19 20:30:36 2010 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 113c4d08568a26938f95627266f6ec0236888bc2 Merge: 2d03494 9d93f12 Author: Olli Salli Date: Sun Dec 19 20:28:55 2010 +0200 Merge branch 'avoid-useless-cache-drop' Reviewed-by: Andre Magalhaes (andrunko) commit 9d93f12e06074dfea65960a7f41c21c631e30418 Author: Olli Salli Date: Sun Dec 19 20:03:06 2010 +0200 DBusProxyFactory: prevent useless cache drops from a race condition TelepathyQt4/dbus-proxy-factory.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit c781044b64b4abd4ed67ada73e4ffc62657318dd Author: Olli Salli Date: Sun Dec 19 19:35:21 2010 +0200 TestChanBasics: Test that the Channel invalidates itself with a reasonable error tests/dbus/chan-basics.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) commit 90763ff7b2f677dd2f40e403137623e1432031cd Author: Olli Salli Date: Sun Dec 19 19:33:51 2010 +0200 Use Cancelled as the default invalidation reason when a channel is Closed TelepathyQt4/channel.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 1624ae180a4a0bf4f2e2358a557acd389426974e Author: Olli Salli Date: Sun Dec 19 19:15:28 2010 +0200 Make TestChanBasics less ridiculous tests/dbus/chan-basics.cpp | 109 ++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 55 deletions(-) commit 4d46c26ca96d1deef1c91d0771e42a4763b7cd6c Author: Olli Salli Date: Sun Dec 19 18:56:40 2010 +0200 Use a new error TP_QT4_ERROR_ORPHANED when a Channel's parent Conn dies TelepathyQt4/channel.cpp | 4 ++-- TelepathyQt4/constants.h | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) commit 0a361e3495b7586b90797f13c8dfbff5b7e59709 Author: Olli Salli Date: Sun Dec 19 18:40:17 2010 +0200 Guard all QLatin1String string constant macro expansions from unwanted XYZQLatin1String errors TelepathyQt4/constants.h | 14 +++++++------- tools/qt4-constants-gen.py | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) commit 2caf0468265bbf265957d9f0a62ea1242e19e595 Author: Olli Salli Date: Sun Dec 19 17:54:36 2010 +0200 Add QLatin1String versions of hand-written string constants TelepathyQt4/constants.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) commit a160bc5b6f07ebd94088f2fc835db3b9cc0c3a22 Author: Olli Salli Date: Wed Dec 15 08:57:17 2010 +0200 Channel: Remove connection destroyed handling A channel holds a strong ref to its Connection, so by definition that won't be destroyed during the Channel's lifetime. This is probably clutter from the bad old times when there was only a weak ref. TelepathyQt4/channel.cpp | 12 ------------ TelepathyQt4/channel.h | 1 - 2 files changed, 13 deletions(-) commit 9b9d19ecb985a0dfb3530a559008811e8c5e3cf8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 13:40:26 2010 -0200 ContactManager: Remove dubious/wrong code to check if setUseFallbackContactList is called more than once. TelepathyQt4/contact-manager.cpp | 6 ------ 1 file changed, 6 deletions(-) commit ade2be7e54e052fce76197911fc6558bf0a23d6f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 12:46:40 2010 -0200 ContactManager: Call contactForHandles for all contacts that changed in the ContactList to avoid that they are deleted while new contacts are constructed. TelepathyQt4/contact-manager.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) commit 484ea2b29fded3eecd476eca1d33835e21d0913a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 12:38:38 2010 -0200 Connection: Remove debug used for development. TelepathyQt4/connection.cpp | 1 - 1 file changed, 1 deletion(-) commit ec7319012c922b5e692cf156b9ceac9349a615b7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 12:26:20 2010 -0200 Contact: Added publishStateDetails accessor. TelepathyQt4/contact.cpp | 7 +++++++ TelepathyQt4/contact.h | 1 + 2 files changed, 8 insertions(+) commit adc61f23c7981a68f2d5e9cab87aca51c67b0d05 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 12:18:01 2010 -0200 Connection: Use deny channel for blocking when using Conn.Iface.ContactList. TelepathyQt4/connection.cpp | 60 ++++++++++++++++-------- TelepathyQt4/contact-manager.cpp | 98 +++++++++++++++++++--------------------- TelepathyQt4/contact-manager.h | 5 +- 3 files changed, 91 insertions(+), 72 deletions(-) commit 19fafbc4bb771b4db863717829ac2cc74e862832 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 21:58:00 2010 -0200 conn-roster-groups2 test: Added test for Conn.Iface.ContactGroups. tests/dbus/CMakeLists.txt | 1 + tests/dbus/conn-roster-groups2.cpp | 621 +++++++++++++++++++++++++++++++++++++ 2 files changed, 622 insertions(+) commit 714552024f7f77407fc5d1c0b14a8a18f6578f49 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 21:57:24 2010 -0200 Connection/ContactManager/Contact: Added support for Conn.Iface.ContactGroups. TelepathyQt4/connection.cpp | 101 +++++++++++--- TelepathyQt4/connection.h | 2 + TelepathyQt4/contact-manager.cpp | 275 ++++++++++++++++++++++++++++++--------- TelepathyQt4/contact-manager.h | 9 ++ TelepathyQt4/contact.cpp | 5 + TelepathyQt4/contact.h | 3 + 6 files changed, 318 insertions(+), 77 deletions(-) commit dfa8224ba9df935e9560d09d6407e105f85a2b9e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 20:16:44 2010 -0200 Fixed tests to work with tp-glib implementing immortal handles. tests/dbus/contacts.cpp | 39 --------------------------------------- tests/dbus/handles.cpp | 6 ------ 2 files changed, 45 deletions(-) commit d494cfb3a0c0194e79267ab8b5f5797ac23f0d35 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 20:09:24 2010 -0200 conn-roster2 test: Added test for Conn.Iface.ContactList. tests/dbus/CMakeLists.txt | 1 + tests/dbus/conn-roster2.cpp | 376 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 377 insertions(+) commit 5a965869f68b44a6358ae0e6577d43d3b370792c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 20:00:17 2010 -0200 Imported contactlist example implementing Conn.Iface.ContactList from tp-glib. CMakeLists.txt | 4 +- tests/lib/glib/CMakeLists.txt | 1 + tests/lib/glib/contactlist2/CMakeLists.txt | 14 + tests/lib/glib/contactlist2/conn.c | 601 +++++++ tests/lib/glib/contactlist2/conn.h | 68 + tests/lib/glib/contactlist2/connection-manager.c | 73 + tests/lib/glib/contactlist2/connection-manager.h | 62 + tests/lib/glib/contactlist2/contact-list.c | 1731 ++++++++++++++++++++ tests/lib/glib/contactlist2/contact-list.h | 78 + .../glib/contactlist2/example_contact_list.manager | 23 + tests/lib/glib/contactlist2/protocol.c | 186 +++ tests/lib/glib/contactlist2/protocol.h | 68 + 12 files changed, 2907 insertions(+), 2 deletions(-) commit 5c88e695d15405f1fd5cfa2d6c78a1407660c2a9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 19:57:57 2010 -0200 Connection/ContactManager/Contact: Added support for Conn.Iface.ContactList. TelepathyQt4/channel.h | 2 + TelepathyQt4/connection.cpp | 146 +++++++++++++++++--- TelepathyQt4/connection.h | 9 +- TelepathyQt4/contact-manager.cpp | 271 ++++++++++++++++++++++++++++++++------ TelepathyQt4/contact-manager.h | 9 ++ TelepathyQt4/contact.cpp | 34 +++++ TelepathyQt4/contact.h | 1 + TelepathyQt4/referenced-handles.h | 1 + 8 files changed, 413 insertions(+), 60 deletions(-) commit 3eb738bec30aec83dc02409bfadea5960f536323 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 13:32:37 2010 -0200 ContactManager: Prepare to support Conn.Iface.ContactList. TelepathyQt4/connection.cpp | 6 +- TelepathyQt4/contact-manager.cpp | 600 ++++++++++++++++++++++++++++----------- TelepathyQt4/contact-manager.h | 21 +- 3 files changed, 454 insertions(+), 173 deletions(-) commit 2d034940507e6f722e15a95fd7bf6e5040f4e3c0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 10:56:29 2010 -0200 Update NEWS NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ff81fbc9af89cc5ae234658411f0bf0ae1875d8b Merge: e07a978 2226ce2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 10:53:28 2010 -0200 Merge branch 'filters' Reviewed-by: Olli Salli (oggis) commit e07a978b22b6131b2179105b1dc0f0d553f55e4c Merge: 4c9d8c0 4362905 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 10:53:17 2010 -0200 Merge branch 'contact-sanitize' Reviewed-by: Olli Salli (oggis) commit 4c9d8c0e36aa6ccde48cb8595dacb08bb1ff934f Merge: 591f6ef 336cc7f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 10:52:40 2010 -0200 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 591f6efafa8b3ffdaf7cfa4cb654b35149da79cf Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 10:19:22 2010 -0200 Update NEWS NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 30a280e08f3271ffed57fbc776dd3ec5a86c2c30 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Dec 17 10:16:14 2010 -0200 Install ConnectionManagerLowLevel header file. TelepathyQt4/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) commit 4362905adca6e756ca2b0bddd78a6bfc11199195 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 12:28:42 2010 -0200 Contact: Sanitize methods declaration/implementation. TelepathyQt4/contact.cpp | 98 ++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 48 deletions(-) commit 5f9a50494e8abab1fcc1ee86fb9f0b754b86f03b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 12:23:39 2010 -0200 Contact: Updated copyright. TelepathyQt4/contact.cpp | 4 ++-- TelepathyQt4/contact.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit c739934ca133cee37b2166b595090b4bd9858727 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 11:38:43 2010 -0200 ContactManager: Sanitize methods declaration/implementation. TelepathyQt4/contact-manager.cpp | 687 ++++++++++++++++++++------------------- TelepathyQt4/contact-manager.h | 2 +- 2 files changed, 348 insertions(+), 341 deletions(-) commit 336cc7fd4542267cd277179c6d4888ad1dfed013 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Dec 15 11:46:12 2010 -0200 Do not use deprecated tp_get_bus. tests/lib/glib/contact-search-chan.c | 6 +++--- tests/lib/glib/future/conference/chan.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) commit 2226ce29350d76f8935fff00671a3272c0eb3723 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 12:22:49 2010 -0200 account-basics test: Test Or/NotFilter. tests/dbus/account-basics.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit de0ab074ea7a1906863d91e60bcb5162e1a12a35 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 12:19:14 2010 -0200 Added NotFilter class. TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/NotFilter | 13 ++++++++ TelepathyQt4/not-filter.h | 72 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) commit ed2de858b363caa5ef5e646ec200e480bdbfc52f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 12:16:53 2010 -0200 Added OrFilter class. TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/OrFilter | 13 +++++++ TelepathyQt4/or-filter.h | 82 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) commit 38874e096210aa313ada3908f6bfd21849d5b77f Author: Olli Salli Date: Wed Dec 8 18:08:32 2010 +0200 Start 0.5.2 dev CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit ebcb8f9b62eed24d430e01f23dfa8d6b1ed58f66 Author: Olli Salli Date: Wed Dec 8 16:48:57 2010 +0200 Prepare release 0.5.1 CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5e1df3e855d6e4846dbf4151a34db382b0fb00cd Author: Olli Salli Date: Wed Dec 8 15:40:15 2010 +0200 Update NEWS NEWS | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit b8fbd6e3704610517070dd3dc6b3189d571d27b7 Author: Olli Salli Date: Wed Dec 8 15:38:25 2010 +0200 Fix CDO::channelLost arg type names to include the Tp namespace TelepathyQt4/channel-dispatch-operation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ef97479bcbc1819111e35d7ebf9518cc98711ca4 Author: Olli Salli Date: Wed Dec 8 15:12:51 2010 +0200 AccountSet: Disconnect wrapper signals when we remove the wrapper If we don't, if the account object path is reused quickly, we might get a property change for the new account at that path before the old proxy realises it should invalidate itself and stop emitting signals. We get the properties to filter on correctly when the account is signaled as being re-added (after a new proxy is built), at which point AccountSet just checks all properties on the new proxy, so we don't lose any important events doing this. Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/account-set.cpp | 1 + 1 file changed, 1 insertion(+) commit 2a913af254bad4767e0753370c0322533bb6b327 Author: Olli Salli Date: Wed Dec 8 14:52:36 2010 +0200 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 6cabc7f307eddf10935374db1657b89338feee52 Merge: 6061954 814c70d Author: Olli Salli Date: Mon Dec 6 20:16:03 2010 +0200 Merge branch 'memory-leaks' commit 814c70d8951292362e456c22db2c3b208e8e0c08 Author: Olli Salli Date: Mon Dec 6 20:15:24 2010 +0200 Add two additional tp-glib O(not a lot) "possibly lost" suppressions tools/tp-qt4-tests.supp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit e58aef0c56f4189feaae10786726ba56a870a11f Author: Olli Salli Date: Mon Dec 6 00:09:46 2010 +0200 Don't leak the TextChannel Acknowledge QDPCWatcher even if it doesn't finish TelepathyQt4/text-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 77a63090cdafbd184431171435df35920e087999 Author: Olli Salli Date: Mon Dec 6 00:02:23 2010 +0200 Run the mainloop to auto-delete PendingReadys in TestProfileManager tests/dbus/profile-manager.cpp | 3 +++ 1 file changed, 3 insertions(+) commit c74903bdaaf53d0fb6b117181a58844e29c36c71 Author: Olli Salli Date: Sun Dec 5 23:57:19 2010 +0200 Don't leak unfinished PendingReady in TestDBusProxyFactory tests/dbus/dbus-proxy-factory.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 70aedd67d9d8c7b0911fc5d2d4ef10cf8e03b7f9 Author: Olli Salli Date: Sun Dec 5 23:53:23 2010 +0200 Don't leak contact info pointer arrays in TestContactsInfo tests/dbus/contacts-info.cpp | 2 ++ 1 file changed, 2 insertions(+) commit ef771926ec91d0229f9a88d641b0c251ba2f83bc Author: Olli Salli Date: Sun Dec 5 23:47:48 2010 +0200 Make the QDBus not calling dbus_shutdown suppression even less specific tools/tp-qt4-tests.supp | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) commit ca611d14e56c876f4799639be1b52c768dc3cec9 Author: Olli Salli Date: Sun Dec 5 23:46:39 2010 +0200 Don't leak avatar data in TestContactsAvatar tests/dbus/contacts-avatar.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit f08f668573988d51c674edd51c28a74042d7a662 Author: Olli Salli Date: Sun Dec 5 23:24:44 2010 +0200 Ignore tp-glib BaseConnectionManager legacy protocol object leak tools/tp-qt4-tests.supp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 10d92e066b29f7f5d30b11410ce207e3508b6424 Author: Olli Salli Date: Sun Dec 5 23:08:37 2010 +0200 Make processDBusQueue do an extra mainloop iteration so the PendingVoid is not reported as a leak tests/lib/test.cpp | 3 +++ 1 file changed, 3 insertions(+) commit bdd6d0601cb73aa147aaac31710eff5c3201e996 Author: Olli Salli Date: Sun Dec 5 23:05:27 2010 +0200 Add more tp-qt4 specific suppressions tools/tp-qt4-tests.supp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit 9ee344d73724e7d87a49da95983a177fa60e2068 Author: Olli Salli Date: Sun Dec 5 22:37:00 2010 +0200 Don't leak conference path C strings in TestChanConference tests/dbus/chan-conference.cpp | 1 + 1 file changed, 1 insertion(+) commit 35200ed8936831bc11e17f5d68aa95a0c64c429f Author: Olli Salli Date: Sun Dec 5 22:32:25 2010 +0200 Add valgrind suppressions (mostly from tp-glib) cmake/modules/TpQt4Macros.cmake | 2 + tools/telepathy-glib.supp | 390 ++++++++++++++++++++++++++++++++++++++++ tools/tp-qt4-tests.supp | 10 ++ 3 files changed, 402 insertions(+) commit 69037cae011a7fe1b52f2d704723821f4e70772f Author: Olli Salli Date: Sun Dec 5 21:46:31 2010 +0200 Clear the event queue in Test shutdown code This enables pending operations which weren't yet finished/deleted to get deleted and not reported as leaks. tests/lib/test.cpp | 2 ++ 1 file changed, 2 insertions(+) commit ec4a8cb25e3e71d82421b3d504118a6e0a0a84b5 Author: Olli Salli Date: Tue Nov 30 23:01:15 2010 +0200 Don't leak caps hash table in TestContactsCapabilities tests/dbus/contacts-capabilities.cpp | 1 + 1 file changed, 1 insertion(+) commit ac9a23ca432b82c2ba676b9b9b6939db4aa021c3 Author: Olli Salli Date: Tue Nov 30 22:59:19 2010 +0200 Don't leak avatar data array in TestContactsAvatar tests/dbus/contacts-avatar.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 1d374d092a3483a04dfde4585643f5a894e7d470 Author: Olli Salli Date: Tue Nov 30 22:17:03 2010 +0200 Don't leak the initial channels array in TestConferenceChan tests/dbus/chan-conference.cpp | 2 ++ 1 file changed, 2 insertions(+) commit f93e12278bb0d2431d6b5b02b7173f5e4dd9e02a Author: Olli Salli Date: Tue Nov 30 22:04:06 2010 +0200 Don't leak a useless GHashTable in conference test cm mergeable_conference_merge tests/lib/glib/future/conference/chan.c | 2 -- 1 file changed, 2 deletions(-) commit 97503ca1561aaef4393197112e7bab110270215b Author: Olli Salli Date: Tue Nov 30 22:02:16 2010 +0200 Don't leak old (initial) channels arrays in test cm conference channel tests/lib/glib/future/conference/chan.c | 3 +++ 1 file changed, 3 insertions(+) commit 5d4dab21e6ee1d48dcee65e00bfc8e2ac90a57fa Author: Olli Salli Date: Tue Nov 30 22:01:53 2010 +0200 Don't leak successive haveConnections (from connectionChanged) in TestAccountConnFact tests/dbus/account-connection-factory.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit dedcec0142e2df23eb1a66f0f4a39edbff3cb840 Author: Olli Salli Date: Tue Nov 30 21:24:36 2010 +0200 Don't leak AccountSet's Private struct TelepathyQt4/account-set.cpp | 1 + 1 file changed, 1 insertion(+) commit 7e90b2a886a51ffe9b9dde3207a571e9db3d6ac2 Author: Olli Salli Date: Tue Nov 30 21:16:57 2010 +0200 Don't leak the Connect watcher in PendingConnect TelepathyQt4/connection.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 6061954d137e2c41d9803c4ac89b4ae893e2209f Author: Olli Salli Date: Mon Nov 22 16:11:44 2010 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 59e7a495a4d903983337c589ec355326ba8b6102 Merge: 85ee545 448cecc Author: Olli Salli Date: Mon Nov 22 16:10:46 2010 +0200 Merge branch '0.5-smchan-redundant-signals' Reviewed-by: Andre Magalhaes (andrunko) commit 448cecc2c50897360da68ba185a855760092cdb1 Author: Olli Salli Date: Mon Nov 22 16:08:47 2010 +0200 Fix coding style for added SMChannel test event handlers Conflicts: tests/dbus/streamed-media-chan.cpp tests/dbus/streamed-media-chan.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 02fe15d2e8598572c45e43e76077c89b7a669c8c Author: Olli Salli Date: Mon Nov 22 16:02:08 2010 +0200 Don't emit redundant SMChannel::{local,remote}SendingStateChanged (from 0.4) Conflicts: TelepathyQt4/streamed-media-channel.cpp TelepathyQt4/streamed-media-channel.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit b7a94d66bb123b64e6c5de31712ae11221ad4bac Author: Olli Salli Date: Mon Nov 22 15:36:59 2010 +0200 Test that only the correct StreamedMediaChan::[rl]SSC signals are emitted Conflicts: tests/dbus/streamed-media-chan.cpp tests/dbus/streamed-media-chan.cpp | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) commit 85ee54512e94617371b45c89bfa9ce202c1643de Author: Olli Salli Date: Thu Nov 18 22:12:27 2010 +0200 Update NEWS NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 5b6c74b9cfa874bc7e6baae0139b53045321454d Author: Olli Salli Date: Thu Nov 18 22:10:24 2010 +0200 Begin 0.5.1 development CMakeLists.txt | 2 +- NEWS | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit a947bab40e306e236b87dc993645d056286fbf17 Author: Olli Salli Date: Thu Nov 18 21:19:50 2010 +0200 Fix crash using dangling (const!) iterator after remove in Conference code Reviewed-by: Will Thompson (wjt) TelepathyQt4/channel.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 3c59989c5923b4c7874b9da9229fb91f5245d256 Author: Olli Salli Date: Tue Nov 16 21:00:03 2010 +0200 Actually make maintainer-upload-release work tools/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit d3072e9927d0c9adce55c54ca78549264b55b775 Author: Olli Salli Date: Tue Nov 16 19:41:17 2010 +0200 Bump the ver to 0.5.0 and sover to 1 CMakeLists.txt | 14 ++++++-------- NEWS | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) commit c9b0ef8d9d6da417c38abd2dbfc86c8e21771d2b Author: Olli Salli Date: Tue Nov 16 19:26:59 2010 +0200 Update NEWS NEWS | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 2 deletions(-) commit e6a1d05f01c805fc0e7c8a21105c26ebef2a7c8f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 12:16:20 2010 -0200 AndFilter: Return false in matches if isValid returns false. Reviewed-by: Olli Salli (oggis) TelepathyQt4/and-filter.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit ba55e37158df810072d206364199dd04ff57c78e Merge: 810433e 87ab230 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 11:40:59 2010 -0200 Merge branch '0_5_0_approver' Reviewed-by: Olli Salli (oggis) commit 810433e1e7ab9d2c3fbca4c3b92b3315d7dcf701 Merge: 9b3aa6f 75dc1c1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 11:32:31 2010 -0200 Merge branch '0_5_0_filters' Conflicts: tests/dbus/account-basics.cpp Reviewed-by: Olli Salli (oggis) commit 9b3aa6f5bd75b7101c783ea531c624e03c67dee0 Merge: 87bb8bc 0745321 Author: Olli Salli Date: Tue Nov 16 15:25:28 2010 +0200 Merge branch 'override-core-feature' Reviewed-by: Andre Magalhaes (andrunko) commit 074532110bcd117d3547974d008a4149bafaae70 Author: Olli Salli Date: Tue Nov 16 15:24:43 2010 +0200 Fix copy-pasta in AM ctor doc comment TelepathyQt4/account-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b2d4fedb1f6c0e8e45c1f6efc3f21cc3f8cb1df0 Author: Olli Salli Date: Tue Nov 16 15:23:37 2010 +0200 Core feature override for AM TelepathyQt4/account-manager.cpp | 16 +++++++++++----- TelepathyQt4/account-manager.h | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-) commit 73bcfbe43803b015525978fd0a155b0857782758 Author: Olli Salli Date: Tue Nov 16 15:15:52 2010 +0200 Make it possible (and mandatory) to override the Connection implicit core feature TelepathyQt4/connection.cpp | 13 +++++++++---- TelepathyQt4/connection.h | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) commit eca6a90b07db9c06365221c1cbbb8421a66a1603 Author: Olli Salli Date: Tue Nov 16 15:10:41 2010 +0200 Make it possible (and mandatory) to override the Account implicit core feature TelepathyQt4/account.cpp | 11 +++++++---- TelepathyQt4/account.h | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) commit c460a8b8c13c79c8583229abd58c95603ae407ac Author: Olli Salli Date: Tue Nov 16 14:59:51 2010 +0200 Update I/OFTC::FeatureCore doc comment to indicate they're just delegating placeholders TelepathyQt4/incoming-file-transfer-channel.cpp | 4 +--- TelepathyQt4/outgoing-file-transfer-channel.cpp | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) commit 56fc6d0c2e4c63e994f5dafc415fdbaacdb04d92 Author: Olli Salli Date: Tue Nov 16 14:58:51 2010 +0200 Test that channel core feature override works tests/dbus/chan-contact-search.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 0a7266e4ef7f37a6759ef367d4908cbc94ad1e43 Author: Olli Salli Date: Tue Nov 16 14:58:28 2010 +0200 Copy-paste the FeatureCore runes for the placeholders delegating to them to prevent static init woes TelepathyQt4/incoming-file-transfer-channel.cpp | 2 +- TelepathyQt4/outgoing-file-transfer-channel.cpp | 2 +- TelepathyQt4/streamed-media-channel.cpp | 2 +- TelepathyQt4/text-channel.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 76bd6381de5bd32791c425f715eb8aa85cea304e Author: Olli Salli Date: Tue Nov 16 14:58:09 2010 +0200 Don't forget to pass coreFeature in Channel ctor TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8f87119ee98d4eb7fe1204d7e45b974da38e95ec Author: Olli Salli Date: Tue Nov 16 14:45:42 2010 +0200 Fix copy-pasta in OutgoingFileTransferChannel::create doxygen comment TelepathyQt4/outgoing-file-transfer-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 4c206ac2be3ac8af68e1be65e2a6eb087006231c Author: Olli Salli Date: Tue Nov 16 14:45:06 2010 +0200 Make it possible (and mandatory) to override the implicit core feature in Channel subclasses TelepathyQt4/channel.cpp | 8 ++++++-- TelepathyQt4/channel.h | 2 +- TelepathyQt4/contact-search-channel.cpp | 9 ++++++--- TelepathyQt4/contact-search-channel.h | 2 +- TelepathyQt4/file-transfer-channel.cpp | 9 ++++++--- TelepathyQt4/file-transfer-channel.h | 3 ++- TelepathyQt4/incoming-file-transfer-channel.cpp | 7 +++++-- TelepathyQt4/incoming-file-transfer-channel.h | 3 ++- TelepathyQt4/outgoing-file-transfer-channel.cpp | 7 +++++-- TelepathyQt4/outgoing-file-transfer-channel.h | 3 ++- TelepathyQt4/room-list-channel.cpp | 7 +++++-- TelepathyQt4/room-list-channel.h | 3 ++- TelepathyQt4/streamed-media-channel.cpp | 9 ++++++--- TelepathyQt4/streamed-media-channel.h | 3 ++- TelepathyQt4/text-channel.cpp | 9 ++++++--- TelepathyQt4/text-channel.h | 3 ++- 16 files changed, 59 insertions(+), 28 deletions(-) commit def4cc032eb1e72973d140a59950acf5dcd9630d Author: Olli Salli Date: Tue Nov 16 14:43:32 2010 +0200 Make {{I/O)FT,Text,SM}Channel::FeatureCore proper delegators to their parent class FeatureCore TelepathyQt4/incoming-file-transfer-channel.cpp | 2 +- TelepathyQt4/outgoing-file-transfer-channel.cpp | 2 +- TelepathyQt4/streamed-media-channel.cpp | 6 ++++++ TelepathyQt4/streamed-media-channel.h | 1 + TelepathyQt4/text-channel.cpp | 5 +++++ TelepathyQt4/text-channel.h | 1 + 6 files changed, 15 insertions(+), 2 deletions(-) commit 75dc1c17fdb3a866537fa0ada30fd873416772f2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 10:41:00 2010 -0200 AccountManager/Set: Use Filter instead of List now that we have AndFilter. TelepathyQt4/account-manager.cpp | 40 ++++++--------------- TelepathyQt4/account-manager.h | 1 - TelepathyQt4/account-set-internal.h | 7 ++-- TelepathyQt4/account-set.cpp | 70 ++++++++++++++++--------------------- TelepathyQt4/account-set.h | 5 ++- tests/dbus/account-basics.cpp | 11 +++--- 6 files changed, 53 insertions(+), 81 deletions(-) commit 284df4df600d9eea0c8fdf0ca1390d495baec1ed Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 10:06:34 2010 -0200 Added AndFilter class. TelepathyQt4/AndFilter | 13 ++++++++ TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/and-filter.h | 78 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) commit 87ab2302d98da52fc26f36566b31aa5b07083e62 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 16 10:02:24 2010 -0200 AbstractClientApprover: Remove addDispatchOperation channels arg in favor of CDO::channels. TelepathyQt4/abstract-client.cpp | 18 ------------------ TelepathyQt4/abstract-client.h | 1 - TelepathyQt4/client-registrar.cpp | 6 ++---- tests/dbus/client-factories.cpp | 3 +-- tests/dbus/client.cpp | 3 +-- 5 files changed, 4 insertions(+), 27 deletions(-) commit 87bb8bc7477c03f4ac0407bf2f4c72bb762d9324 Merge: a750555 0fa639b Author: Olli Salli Date: Tue Nov 16 13:42:04 2010 +0200 Merge branch 'lowlevel-sidecars' Reviewed-by: Will Thompson (wjt) Reviewed-by: Andre Magalhaes (andrunko) commit a750555e3ebec02d28b20677e890bfbfe4ef8ef5 Merge: 2d4782c 61c4445 Author: Olli Salli Date: Mon Nov 15 22:19:32 2010 +0200 Merge branch 'test-suite-deja-vu' Reviewed-by: Will Thompson (wjt) commit 0fa639bf81e1c6ba516c534cb4cc535e4f868bcc Author: Olli Salli Date: Mon Nov 15 22:07:48 2010 +0200 Fix crash possibilities in handle and connect Connection lowlevel methods when !isValid() TelepathyQt4/connection.cpp | 16 +++++++--------- TelepathyQt4/pending-handles.cpp | 6 ++++++ TelepathyQt4/pending-handles.h | 1 + 3 files changed, 14 insertions(+), 9 deletions(-) commit 4973fe7ad5a674e26f3fe6af6fca1e7600cdae5f Author: Olli Salli Date: Mon Nov 15 22:00:46 2010 +0200 Make examples build with Conn and CM lowlevel methods moved to the sidecars examples/file-transfer/receiver.cpp | 10 ++++++++-- examples/file-transfer/sender.cpp | 12 +++++++++--- examples/roster/roster-window.cpp | 11 ++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) commit 6e45d89b9b1f8ed662b1c0f99f7a3799ea24e770 Author: Olli Salli Date: Mon Nov 15 22:00:23 2010 +0200 Move CM::requestConnection to ConnectionManagerLowlevel TelepathyQt4/CMakeLists.txt | 2 + TelepathyQt4/ConnectionManagerLowlevel | 13 ++++++ TelepathyQt4/connection-manager-internal.h | 12 ++++++ TelepathyQt4/connection-manager-lowlevel.h | 63 ++++++++++++++++++++++++++++++ TelepathyQt4/connection-manager.cpp | 42 +++++++++++++++++++- TelepathyQt4/connection-manager.h | 10 +++-- TelepathyQt4/pending-connection.cpp | 13 ++++++ TelepathyQt4/pending-connection.h | 3 +- TelepathyQt4/types.h | 3 ++ 9 files changed, 154 insertions(+), 7 deletions(-) commit a68b67c85cb033255c318782dacd5b499a98c4d9 Author: Olli Salli Date: Mon Nov 15 21:38:45 2010 +0200 Mark ConnectionLowlevel::Private as NO_EXPORT TelepathyQt4/connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 97ba98a44d73bc8ba1f96b3c3f01cadb9d5c4dd3 Author: Olli Salli Date: Mon Nov 15 21:28:26 2010 +0200 Properly install connection-lowlevel.h TelepathyQt4/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ad27b53238edd9cdc54b0900fce4110720090f22 Author: Olli Salli Date: Mon Nov 15 02:13:48 2010 +0200 Move request(Dis)Connect to ConnectionLowlevel TelepathyQt4/connection-internal.h | 2 ++ TelepathyQt4/connection-lowlevel.h | 3 +++ TelepathyQt4/connection.cpp | 31 ++++++++++++++++++++++++++----- TelepathyQt4/connection.h | 3 --- tests/dbus/account-basics.cpp | 7 +++++-- tests/dbus/chan-basics.cpp | 4 ++-- tests/dbus/chan-conference.cpp | 7 +++++-- tests/dbus/chan-contact-search.cpp | 7 +++++-- tests/dbus/chan-group.cpp | 6 ++---- tests/dbus/client-factories.cpp | 5 ++++- tests/dbus/client.cpp | 7 ++++--- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-capabilities.cpp | 9 ++++++--- tests/dbus/conn-requests.cpp | 4 ++-- tests/dbus/conn-roster-groups.cpp | 11 +++++++---- tests/dbus/conn-roster.cpp | 7 +++++-- tests/dbus/contacts-avatar.cpp | 7 +++++-- tests/dbus/contacts-capabilities.cpp | 7 +++++-- tests/dbus/contacts-info.cpp | 7 +++++-- tests/dbus/contacts-location.cpp | 7 +++++-- tests/dbus/contacts.cpp | 8 +++----- tests/dbus/handles.cpp | 6 ++---- tests/dbus/streamed-media-chan.cpp | 4 ++-- tests/dbus/text-chan.cpp | 9 +++++---- 24 files changed, 111 insertions(+), 59 deletions(-) commit 20983ebfec5a946383571eba4ef8b21eafa97cb1 Author: Olli Salli Date: Mon Nov 15 01:34:54 2010 +0200 Move the handle request/reference API to ConnectionLowlevel TelepathyQt4/connection-lowlevel.h | 3 +++ TelepathyQt4/connection.cpp | 48 +++++++++++++++++++++++++++++++------- TelepathyQt4/connection.h | 3 --- TelepathyQt4/pending-contacts.cpp | 4 ++-- TelepathyQt4/pending-handles.h | 2 +- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/handles.cpp | 5 +++- 8 files changed, 52 insertions(+), 17 deletions(-) commit f5f84c4162ae422fa3b87416e57b608a6893ac4f Author: Olli Salli Date: Mon Nov 15 01:14:16 2010 +0200 Move Conn.I.Contacts low-level functionality from Connection to ConnectionLowlevel TelepathyQt4/connection-lowlevel.h | 4 +++ TelepathyQt4/connection.cpp | 54 +++++++++++++++++++++---------- TelepathyQt4/connection.h | 3 -- TelepathyQt4/contact-manager.cpp | 2 +- TelepathyQt4/pending-contact-attributes.h | 2 +- TelepathyQt4/pending-contacts.cpp | 3 +- tests/dbus/contacts.cpp | 13 +++++--- 7 files changed, 53 insertions(+), 28 deletions(-) commit ff403b8b54fb3944852693939fc0d9958d1d53fd Author: Olli Salli Date: Mon Nov 15 00:21:21 2010 +0200 Move Connection::{create,ensure}Channel to ConnectionLowlevel TelepathyQt4/connection-lowlevel.h | 3 +++ TelepathyQt4/connection.cpp | 53 ++++++++++++++++++++++++++------------ TelepathyQt4/connection.h | 3 --- TelepathyQt4/contact-manager.cpp | 3 ++- TelepathyQt4/pending-channel.h | 2 +- tests/dbus/chan-basics.cpp | 7 +++-- tests/dbus/chan-group.cpp | 5 +++- tests/dbus/conn-requests.cpp | 7 +++-- tests/dbus/streamed-media-chan.cpp | 18 ++++++------- 9 files changed, 66 insertions(+), 35 deletions(-) commit 68442f35f79cec44e4dc6fbf4cf93889bbf505e2 Author: Olli Salli Date: Sun Nov 14 23:51:38 2010 +0200 Move direct self presence access from Connection to ConnectionLowlevel TelepathyQt4/CMakeLists.txt | 5 ++- TelepathyQt4/ConnectionLowlevel | 13 +++++++ TelepathyQt4/channel.cpp | 1 + TelepathyQt4/connection-lowlevel.h | 68 ++++++++++++++++++++++++++++++++ TelepathyQt4/connection.cpp | 80 +++++++++++++++++++++++++++++++++----- TelepathyQt4/connection.h | 10 +++-- TelepathyQt4/pending-channel.cpp | 1 + TelepathyQt4/types.h | 3 ++ tests/dbus/conn-basics.cpp | 5 ++- tests/dbus/streamed-media-chan.cpp | 7 +++- 10 files changed, 176 insertions(+), 17 deletions(-) commit 61c4445dea34e4b9a45bf7dc143f822048b04821 Author: Olli Salli Date: Sun Nov 14 22:31:42 2010 +0200 Actually initialize PendingStreamedMediaStreams::streamsReady Otherwise the pending op won't reliably finish! The test suite was showing it not being initialized and hence the PendingStreamedMediaStreams never finishing occasionally (when the memory location in question didn't happen to be 0 already by accident). TelepathyQt4/streamed-media-channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 37d815551b164fbc27276a101e8a999211aeb4b7 Author: Olli Salli Date: Sun Nov 14 22:24:12 2010 +0200 Eliminate races in TestConnRoster caused by the new stored list tracking code... N.B. The current roster test connection must be rewritten as soon as possible to not synthesize events arbitrarily - the replacement must have backdoors to trigger contacts accepting/rejecting/inviting/etc which can be used to reliably trigger roster events, so we can actually properly test the roster functionality. tests/dbus/conn-roster.cpp | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) commit 6654cba31eae278013f42b23ab3167e14dcdbc91 Author: Olli Salli Date: Sun Nov 14 21:50:26 2010 +0200 Make Test::processDBusQueue less vulnerable to leaked events exiting the mainloop early tests/lib/test.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit cc4bbea85b8efe13ea6e168287209be7d51408c5 Author: Olli Salli Date: Sun Nov 14 21:22:38 2010 +0200 Empty D-Bus queue between tests in TestConnBasics Otherwise the nameOwnerChanged from an earlier testcase might invalidate our new proxy! TelepathyQt4/connection.cpp | 7 ++++++- tests/dbus/conn-basics.cpp | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) commit c692017a0d4a2b43f6499e931a8a14368ad61240 Author: Olli Salli Date: Sun Nov 14 21:09:27 2010 +0200 Correctly initialize ReadinessHelper::Private::proxy Previously, it was always NULL as the ReadyObject base class which constructs ReadinessHelper is constructed before DBusProxy that inherits it - and hence dynamic_cast will state it's not a DBusProxy. Now has two distinct constructors, the one for DBusProxy is picked at compile time with static type information. TelepathyQt4/readiness-helper.cpp | 59 +++++++++++++++++++++++++++++++++------ TelepathyQt4/readiness-helper.h | 4 +++ TelepathyQt4/ready-object.cpp | 20 +++++++++++++ TelepathyQt4/ready-object.h | 1 + 4 files changed, 76 insertions(+), 8 deletions(-) commit 8ffa6541ed0daba9be77c20981defba0ba44abcb Author: Olli Salli Date: Sun Nov 14 21:08:24 2010 +0200 Make PendingConnect not wait for duplicate events TelepathyQt4/connection-internal.h | 3 +++ TelepathyQt4/connection.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) commit 2d4782c7269e10563685fd2604084186d1b353cf Merge: fa1988f 6d4fc3d Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:32:41 2010 -0200 Merge branch '0_5_0_misc' Reviewed-by: Will Thompson (wjt) commit fa1988fb5585a19a50bec126ce6601a72b72ff1d Merge: eefac35 f34d50e Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:32:30 2010 -0200 Merge branch '0_5_0_contact_manager_sharedptr' Reviewed-by: Will Thompson (wjt) commit eefac35fb1b796bbb87f80afde04f6af9de3297a Merge: 0c23620 e329d7b Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:31:44 2010 -0200 Merge branch '0_5_0_pending_op' Reviewed-by: Olli Salli (oggis) Reviewed-by: Will Thompson (wjt) commit 0c2362002090a8b66407442d3a92f0cd45bb7ff6 Merge: b50116b 1fdd40c Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:31:32 2010 -0200 Merge branch '0_5_0_rename_contact_location' Reviewed-by: Will Thompson (wjt) commit b50116bd12a4be3b8dd1c371aabb0f9ae1bb9e5f Merge: 953a192 145cad7 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:31:03 2010 -0200 Merge branch '0_5_0_operator_equals' Reviewed-by: Will Thompson (wjt) commit 953a192cb91d793c3f6d57360ea3ba72ca125fdb Merge: d1ee0d2 6c66e79 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:30:49 2010 -0200 Merge branch '0_5_0_acc_factory_no_default_acc_feature' Reviewed-by: Will Thompson (wjt) commit d1ee0d2f53e63a31ef25de8052ca4375ec2eb563 Merge: e260f69 8b35b6b Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:30:17 2010 -0200 Merge branch '0_5_0_trivia' Reviewed-by: Will Thompson (wjt) commit f34d50e6dad1b1d71c161a6fdb47b44efd44f733 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:29:36 2010 -0200 PendingContacts: Use connection manager as parent. TelepathyQt4/pending-contacts.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 6c66e798219b72d73ab0e58af5c98269523abbc2 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Nov 13 11:27:02 2010 -0200 AccountManager: Enable Account::FeatureCore per default for create(bus) and create method that does not take bus. TelepathyQt4/account-manager.cpp | 4 ++-- TelepathyQt4/account-manager.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 8b35b6bcfae50a495f65285ca3fb29b4c6bce7dc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:05:40 2010 -0200 Account: Remove now fixed API/ABI break comment. TelepathyQt4/account.cpp | 3 --- 1 file changed, 3 deletions(-) commit fd4851a5cb78d20f084437dbb64eb18919759cf6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:05:08 2010 -0200 ReadinessHelper: Use TP_QT4_ERROR_CANCELLED constant. TelepathyQt4/readiness-helper.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 1fdd40c3fbbee43d0c3a851fd7ef470fd6b4f782 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:13:58 2010 -0200 Renamed ContactLocation to LocationInfo. TelepathyQt4/CMakeLists.txt | 6 +- TelepathyQt4/ContactLocation | 13 --- TelepathyQt4/LocationInfo | 13 +++ TelepathyQt4/contact-location.cpp | 220 -------------------------------------- TelepathyQt4/contact-location.h | 94 ---------------- TelepathyQt4/contact.cpp | 10 +- TelepathyQt4/contact.h | 6 +- TelepathyQt4/location-info.cpp | 220 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/location-info.h | 94 ++++++++++++++++ tests/dbus/contacts-location.cpp | 10 +- 10 files changed, 343 insertions(+), 343 deletions(-) commit 145cad7af197f50580c2d0e82cbfa368bcc0860d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:21:51 2010 -0200 ProtocolParameter: Return true in operator== if both instances are invalid and false if only one of them is. TelepathyQt4/protocol-parameter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 1199fb2dcb3a9991f0a7a6e0579c18e6b0519bbf Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:18:12 2010 -0200 RequestableChannelClassSpec: Return true in operator== if both instances are invalid and false if only one of them is. TelepathyQt4/requestable-channel-class-spec.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 6d4fc3dcdd307768766f420a37ae22b211436289 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:01:54 2010 -0200 PendingChannel: Remove objectPath. TelepathyQt4/pending-channel.cpp | 20 -------------------- TelepathyQt4/pending-channel.h | 2 -- 2 files changed, 22 deletions(-) commit 0954ac436677b06f0a32036ad9e1ffde0b7655bb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:01:42 2010 -0200 PendingAccount: Remove objectPath. TelepathyQt4/pending-account.cpp | 34 +++++++--------------------------- TelepathyQt4/pending-account.h | 2 -- 2 files changed, 7 insertions(+), 29 deletions(-) commit fb5cd860d029c73b19cc10918b89ebafaf140aa1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:01:17 2010 -0200 PendingConnection: Remove busName/objectPath now that we always have a connection. TelepathyQt4/pending-connection.cpp | 43 ------------------------------------- TelepathyQt4/pending-connection.h | 4 ---- 2 files changed, 47 deletions(-) commit dae121c91f86205711225e2d94a735f92b8c72fd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:00:05 2010 -0200 PendingConnection: Use factories. TelepathyQt4/pending-connection.cpp | 46 ++++++++++++++++++++++--------------- TelepathyQt4/pending-connection.h | 1 + 2 files changed, 29 insertions(+), 18 deletions(-) commit 8d572421dc29d4f27f0e213f1e3e1ed341dd8b17 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:53:56 2010 -0200 ConnectionManager: Use factories. TelepathyQt4/account.cpp | 4 +- TelepathyQt4/connection-manager-internal.h | 9 ++- TelepathyQt4/connection-manager.cpp | 126 +++++++++++++++++++++++++---- TelepathyQt4/connection-manager.h | 31 +++++-- 4 files changed, 143 insertions(+), 27 deletions(-) commit 0c9f61995f86d3c86e9547757a7f8cc2d9fe58d6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:02:28 2010 -0200 ContactManager: Make it an Object and use ContactManagerPtr everywhere. TelepathyQt4/channel.cpp | 6 ++-- TelepathyQt4/connection.cpp | 10 +++--- TelepathyQt4/connection.h | 2 +- TelepathyQt4/contact-manager.cpp | 51 +++++++++++++--------------- TelepathyQt4/contact-manager.h | 20 ++++++----- TelepathyQt4/contact-search-channel.cpp | 2 +- TelepathyQt4/contact.cpp | 60 +++++++++++---------------------- TelepathyQt4/contact.h | 2 +- TelepathyQt4/pending-contacts.cpp | 16 ++++----- TelepathyQt4/pending-contacts.h | 8 ++--- TelepathyQt4/streamed-media-channel.cpp | 2 +- TelepathyQt4/types.h | 2 ++ examples/roster/roster-widget.cpp | 4 +-- tests/dbus/conn-roster-groups.cpp | 14 ++++---- tests/dbus/conn-roster.cpp | 2 +- 15 files changed, 90 insertions(+), 111 deletions(-) commit e329d7b757339bd7113ceedc67d0f10415389052 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 18:24:31 2010 -0200 AbstractInterface: Keep a ref to the parent if a proxy in the PendingOperations. TelepathyQt4/abstract-interface.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) commit a3465749b60ba54a116d97affb25e1b2dc1c104a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 18:19:15 2010 -0200 PendingReady: Add a new proxy() method and make object() return the factory when using a factory. TelepathyQt4/account-manager.cpp | 5 +- TelepathyQt4/account.cpp | 5 +- TelepathyQt4/channel-dispatch-operation.cpp | 18 ++++---- TelepathyQt4/channel-request.cpp | 2 +- TelepathyQt4/channel.cpp | 12 ++--- TelepathyQt4/client-registrar.cpp | 16 +++---- TelepathyQt4/connection-manager.cpp | 5 +- TelepathyQt4/connection.cpp | 8 ++-- TelepathyQt4/dbus-proxy-factory.cpp | 3 +- TelepathyQt4/pending-account.cpp | 6 +-- TelepathyQt4/pending-channel.cpp | 4 +- TelepathyQt4/pending-ready.cpp | 71 +++++++++++++++++++---------- TelepathyQt4/pending-ready.h | 11 +++-- TelepathyQt4/streamed-media-channel.cpp | 3 +- tests/dbus/client-factories.cpp | 4 +- tests/dbus/dbus-proxy-factory.cpp | 38 ++++++++++----- 16 files changed, 121 insertions(+), 90 deletions(-) commit 993e0f9fc501a2bd644b6056da52693658156c0b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 01:15:02 2010 -0200 Make pending operations ref the object passed in the constructor. TelepathyQt4/abstract-interface.cpp | 6 +- TelepathyQt4/account-manager.cpp | 4 +- TelepathyQt4/account.cpp | 110 ++++++++++++------------ TelepathyQt4/channel-dispatch-operation.cpp | 13 +-- TelepathyQt4/channel-request.cpp | 6 +- TelepathyQt4/channel.cpp | 57 ++++++------ TelepathyQt4/client-registrar.cpp | 22 ++--- TelepathyQt4/connection-internal.h | 2 +- TelepathyQt4/connection-manager-internal.h | 2 +- TelepathyQt4/connection-manager.cpp | 25 ++---- TelepathyQt4/connection.cpp | 62 ++++++------- TelepathyQt4/contact-manager-internal.h | 6 +- TelepathyQt4/contact-manager.cpp | 97 +++++++++++++-------- TelepathyQt4/contact-search-channel-internal.h | 1 - TelepathyQt4/contact-search-channel.cpp | 17 ++-- TelepathyQt4/contact.cpp | 8 +- TelepathyQt4/dbus-proxy-factory.cpp | 2 +- TelepathyQt4/incoming-file-transfer-channel.cpp | 10 ++- TelepathyQt4/outgoing-file-transfer-channel.cpp | 10 ++- TelepathyQt4/pending-account.cpp | 20 ++--- TelepathyQt4/pending-channel-request-internal.h | 4 +- TelepathyQt4/pending-channel-request.cpp | 51 +++++------ TelepathyQt4/pending-channel-request.h | 11 ++- TelepathyQt4/pending-channel.cpp | 29 +++---- TelepathyQt4/pending-channel.h | 2 +- TelepathyQt4/pending-connection.cpp | 17 ++-- TelepathyQt4/pending-contact-attributes.cpp | 10 +-- TelepathyQt4/pending-contact-info.cpp | 12 +-- TelepathyQt4/pending-contacts.cpp | 8 +- TelepathyQt4/pending-handles.cpp | 31 +++---- TelepathyQt4/pending-operation.cpp | 33 ++++--- TelepathyQt4/pending-operation.h | 6 +- TelepathyQt4/pending-ready.cpp | 103 ++++++---------------- TelepathyQt4/pending-ready.h | 15 ++-- TelepathyQt4/pending-string-list.cpp | 8 +- TelepathyQt4/pending-string-list.h | 6 +- TelepathyQt4/pending-variant-map.cpp | 4 +- TelepathyQt4/pending-variant-map.h | 2 +- TelepathyQt4/pending-variant.cpp | 4 +- TelepathyQt4/pending-variant.h | 2 +- TelepathyQt4/profile-manager.cpp | 2 +- TelepathyQt4/readiness-helper.cpp | 24 +++--- TelepathyQt4/readiness-helper.h | 3 +- TelepathyQt4/ready-object.cpp | 10 +-- TelepathyQt4/ready-object.h | 3 +- TelepathyQt4/simple-pending-operations.h | 18 ++-- TelepathyQt4/streamed-media-channel.cpp | 63 +++++++------- TelepathyQt4/streamed-media-channel.h | 2 + TelepathyQt4/text-channel.cpp | 18 ++-- TelepathyQt4/text-channel.h | 5 +- examples/roster/roster-widget.cpp | 3 +- examples/roster/roster-window.cpp | 3 +- tests/dbus/account-basics.cpp | 65 ++++++++------ tests/dbus/client-factories.cpp | 2 +- tests/dbus/dbus-proxy-factory.cpp | 48 +++++------ tests/dbus/streamed-media-chan.cpp | 40 ++++++--- tests/lib/test.cpp | 4 +- 57 files changed, 582 insertions(+), 569 deletions(-) commit 528e876f455ad6398536c5065ed19f0733574cd4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:30:25 2010 -0200 AccountFactory: Do not enable Account::FeatureCore per default. TelepathyQt4/account-factory.cpp | 4 ++-- TelepathyQt4/account-factory.h | 2 +- TelepathyQt4/account-manager.cpp | 2 +- TelepathyQt4/client-registrar.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit e260f697918ab9341751574e1b5ea4068b0ed973 Merge: 2607acb 9585fbf Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 20:23:35 2010 -0200 Merge branch 'contact_search_init_private_members' Reviewed-by: Will Thompson (wjt) commit 9585fbf030177ff37d29f04f5abb330acb2a94a0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 19:06:04 2010 -0200 ContactSearchChannel: Properly initialize private members. TelepathyQt4/contact-search-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 2607acbacee833f459f065489e1c454316c7b626 Merge: 880cb3b 352bb9a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 13:06:18 2010 -0200 Merge branch '0_5_0_channel_request_fix' Reviewed-by: Olli Salli (oggis) commit 352bb9ae862e61fdfbd456dc31c9cccb0d1c40c6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 01:03:37 2010 -0200 ChannelRequest: Only create account if property account is non-empty. TelepathyQt4/channel-request.cpp | 2 +- tests/dbus/client.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 880cb3bc727315cb58d38899ff47719a2a4f4f14 Merge: 363d00e a5b8d7c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 12:56:22 2010 -0200 Merge branch '0_5_0_contact_details' Reviewed-by: Olli Salli (oggis) commit a5b8d7c132183f1dc7b27f3a87f06bb8487151e2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 12:55:51 2010 -0200 conn-roster test: Properly connect to Contact::subscription/publish/block change signals. tests/dbus/conn-roster.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4be54fcb10201289e8c1b62f9a617707a94cdd2f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 12:46:11 2010 -0200 roster example: Properly connect to Contact::subscription/publish/block change signals. examples/roster/roster-item.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit fc0465fc10ee9951c8f66d79f86dcab1a0a872ac Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 11 12:34:13 2010 -0200 Contact: Add details to subscription/publish/blockStateChanged signals. TelepathyQt4/channel.h | 3 +-- TelepathyQt4/contact-manager.cpp | 18 ++++++++---------- TelepathyQt4/contact-search-channel.h | 2 ++ TelepathyQt4/contact.cpp | 14 ++++++++------ TelepathyQt4/contact.h | 20 ++++++++++++-------- TelepathyQt4/types.h | 1 + 6 files changed, 32 insertions(+), 26 deletions(-) commit 363d00e365973889d887f7b195b4e16e4b70eca3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 18:03:39 2010 -0200 file-transfer sender example: Properly build with contact changes. examples/file-transfer/sender.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3e0726c56b6ccef9d66dd00e5ba85cd5a7d3b3fb Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 18:03:19 2010 -0200 accounts example: Properly build with account presence changes. examples/accounts/account-item.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit d05a22c0a73fc7ea3c4dc914231aae34138f76e1 Merge: bde7093 433582a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:53:03 2010 -0200 Merge branch '0_5_0_remove_conf_draft' Conflicts: tests/dbus/chan-conference-draft.cpp Reviewed-by: Olli Salli (oggis) commit bde70932da3196bf5bf9e376813da30ed2e385ec Merge: 47dcdde 552d1ec Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:52:35 2010 -0200 Merge branch '0_5_0_fdo_28797' Reviewed-by: Olli Salli (oggis) commit 47dcddefad29bff798e0214a02f1f4175046eb5a Merge: 6a9149a 54d3dba Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:52:12 2010 -0200 Merge branch '0_5_0_fdo_27204' Reviewed-by: Olli Salli (oggis) commit 552d1ecb717b5787bbe27a89dfa80a6f4a4c32ae Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:46:00 2010 -0200 qt4-client-gen.py: Make staticInterfaceName() return a QLatin1String. TelepathyQt4/abstract-interface.cpp | 8 ++++---- TelepathyQt4/abstract-interface.h | 4 ++-- tools/qt4-client-gen.py | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) commit 6a9149a9134cf6504971cd5c78096cdb22faf9bf Merge: 8d01f45 35c5b8d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:42:11 2010 -0200 Merge branch '0_5_0_cr' Reviewed-by: Olli Salli (oggis) commit 35c5b8d4dcbe15d34b5bdfa52aa7a547f836c7f6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:41:21 2010 -0200 AbstractClientObserver: Removed ObserverInfo::hasRecovering. TelepathyQt4/abstract-client.h | 1 - 1 file changed, 1 deletion(-) commit 8d01f456bdc326ce24daebaeef2a34c6c121dc53 Merge: e2bd0d9 efb1504 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:23:29 2010 -0200 Merge branch '0_5_0_presence' Conflicts: TelepathyQt4/account.cpp Reviewed-by: Olli Salli (oggis) commit e2bd0d9fef6f82a83279d179ecdde3848667cb47 Merge: b80c3d5 e52223f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:22:42 2010 -0200 Merge branch '0_5_0_own_header' Reviewed-by: Olli Salli (oggis) commit b80c3d5d8e1bcac6c31bfd6d7e5a637c391e66c4 Merge: 12ce6b5 b4544a3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:22:28 2010 -0200 Merge branch '0_5_0_remove_weakptr' Reviewed-by: Olli Salli (oggis) commit 12ce6b5970f90802fbac7264337e4832c9b61905 Merge: 9bd0ee3 e7b122f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:22:14 2010 -0200 Merge branch '0_5_0_contact' Reviewed-by: Olli Salli (oggis) commit 9bd0ee3e49d4776b7567104db71fad4c2ebd1b64 Merge: c6ae8ed 733d2c0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:21:30 2010 -0200 Merge branch '0_5_0_misc' Reviewed-by: Olli Salli (oggis) commit 8c0b6e122bcb49106a081abdffe27d6e1cabe625 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 17:06:02 2010 -0200 qt4-client-gen.py: Make the autogenerated interfaces actually use the timeout. tools/qt4-client-gen.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) commit 54d3dbafcb435a00aa60c88c836ea06d60474d5f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 16:26:01 2010 -0200 qt4-constants-gen.py: Use singular or value-prefix for flag enum names and fallback to name - 's' if singular or value-prefix are not defined and name ends with 's'. tools/qt4-constants-gen.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 0e2493d825d30d038d4d10795d5dae50d50170a3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:29:21 2010 -0200 AbstractClientObserver: Use ObserverInfo. TelepathyQt4/abstract-client.cpp | 12 ++++-------- TelepathyQt4/abstract-client.h | 3 +-- TelepathyQt4/client-registrar-internal.h | 2 +- TelepathyQt4/client-registrar.cpp | 5 +---- tests/dbus/client-factories.cpp | 4 ++-- tests/dbus/client.cpp | 4 ++-- 6 files changed, 11 insertions(+), 19 deletions(-) commit bdf218a85d82833c62f2cdafb9e5d8e3a7c0f460 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:25:44 2010 -0200 AbstractClientObserver: Added high-level class for observer info. TelepathyQt4/abstract-client.cpp | 38 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/abstract-client.h | 20 ++++++++++++++++++++ 2 files changed, 58 insertions(+) commit 1920c1078676b561ff4dfa8c316de9d1e9dfbfd9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:20:47 2010 -0200 AbstractClientHandler: Use HandlerInfo. TelepathyQt4/abstract-client.cpp | 12 ++++-------- TelepathyQt4/abstract-client.h | 3 +-- TelepathyQt4/client-registrar-internal.h | 2 +- TelepathyQt4/client-registrar.cpp | 19 ++++++------------- tests/dbus/client-factories.cpp | 4 ++-- tests/dbus/client.cpp | 4 ++-- 6 files changed, 16 insertions(+), 28 deletions(-) commit 2571dbea4da24d57718d1932586edc38af6c9c18 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:09:06 2010 -0200 AbstractClientHandler: Added high-level class for handler info. TelepathyQt4/abstract-client.cpp | 38 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/abstract-client.h | 17 +++++++++++++++++ 2 files changed, 55 insertions(+) commit 1d29fa4a538fe2b43ce0c2740c8a28acd5feb5d2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:08:51 2010 -0200 AbstractClientHandler: Declare metatype for Capabilities. TelepathyQt4/abstract-client.h | 2 ++ 1 file changed, 2 insertions(+) commit b9ac619b63e2a8f1f699456471b86872afdf6fd8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:06:21 2010 -0200 AbstractClientHandler: Follow coding style. TelepathyQt4/abstract-client.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit a26edff2da524af0925b3106b23b9e0b45c82f86 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 13:05:41 2010 -0200 AbstractClientHandler: Properly indent Capabilities definition. TelepathyQt4/abstract-client.h | 249 ++++++++++++++++++++--------------------- 1 file changed, 124 insertions(+), 125 deletions(-) commit 8edf29fe2e6b3990891568efc88f6a52563ad039 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 12:45:01 2010 -0200 ClientRegistrar: Remove singleton guarantees. TelepathyQt4/client-registrar.cpp | 60 +++------------------------------------ TelepathyQt4/client-registrar.h | 1 - 2 files changed, 4 insertions(+), 57 deletions(-) commit 422b17c327fed790065ef557dbe54b045024e78b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 12:41:00 2010 -0200 ClientRegistrar: Remove API/ABI break comment. TelepathyQt4/client-registrar.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 733d2c02acbc18bbc8ff5981170593cd8a6154e5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 12:24:41 2010 -0200 Account: Added NOTIFY to connectionStatus property. TelepathyQt4/account.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a77ccccdfae580aa47cf780969702a48e4636ebe Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 12:20:06 2010 -0200 Account: Use Connection::ErrorDetails. TelepathyQt4/account.cpp | 14 +++++++------- TelepathyQt4/account.h | 6 ++---- 2 files changed, 9 insertions(+), 11 deletions(-) commit 713936493f361b19faf6622e309fa4dec87a90b8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 12:12:25 2010 -0200 Connection: Remove Connection::Status. TelepathyQt4/account.cpp | 10 ++-- TelepathyQt4/account.h | 4 +- TelepathyQt4/connection-internal.h | 2 +- TelepathyQt4/connection.cpp | 93 ++++++++++++++++++------------------ TelepathyQt4/connection.h | 12 +---- tests/dbus/account-basics.cpp | 2 +- tests/dbus/chan-basics.cpp | 22 ++++----- tests/dbus/chan-conference-draft.cpp | 2 +- tests/dbus/chan-conference.cpp | 2 +- tests/dbus/chan-contact-search.cpp | 2 +- tests/dbus/chan-group.cpp | 2 +- tests/dbus/client-factories.cpp | 2 +- tests/dbus/client.cpp | 2 +- tests/dbus/conn-basics.cpp | 22 ++++----- tests/dbus/conn-capabilities.cpp | 4 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/conn-roster-groups.cpp | 8 ++-- tests/dbus/conn-roster.cpp | 2 +- tests/dbus/contacts-avatar.cpp | 2 +- tests/dbus/contacts-capabilities.cpp | 2 +- tests/dbus/contacts-info.cpp | 2 +- tests/dbus/contacts-location.cpp | 2 +- tests/dbus/contacts.cpp | 22 ++++----- tests/dbus/handles.cpp | 22 ++++----- tests/dbus/streamed-media-chan.cpp | 2 +- tests/dbus/text-chan.cpp | 2 +- 26 files changed, 121 insertions(+), 130 deletions(-) commit 433582abbe004381dc441b1fc4af0cc77305076e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 11:48:17 2010 -0200 Remove Conference.DRAFT interface definition. TelepathyQt4/future-channel.xml | 1 - spec/Channel_Interface_Conference_DRAFT.xml | 428 ---------------------------- 2 files changed, 429 deletions(-) commit bd411965904fb0374aaec12b0077160559a668cc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 11:48:06 2010 -0200 tests: Remove Conference.DRAFT support. tests/dbus/CMakeLists.txt | 1 - tests/dbus/chan-conference-draft.cpp | 324 ----------- tests/lib/glib/CMakeLists.txt | 3 +- tests/lib/glib/future/CMakeLists.txt | 1 - .../glib/future/conference-draft/CMakeLists.txt | 12 - tests/lib/glib/future/conference-draft/chan.c | 647 --------------------- tests/lib/glib/future/conference-draft/chan.h | 80 --- tests/lib/glib/future/extensions/channel.xml | 1 - 8 files changed, 1 insertion(+), 1068 deletions(-) commit 46af9639ee5a8cc12de155df7ffe20820b8694d1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 11:47:42 2010 -0200 ConnectionCapabilities: Remove Conference.DRAFT support. TelepathyQt4/connection-capabilities.cpp | 34 ++++++-------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) commit d00f763779c801af340e5e498b2860082c356d41 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 11:47:19 2010 -0200 Channel: Remove Conference.DRAFT support. TelepathyQt4/channel.cpp | 138 ++++++++++++----------------------------------- 1 file changed, 35 insertions(+), 103 deletions(-) commit b03bdc66344daa1a839fb5f59c162b76c8e12142 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 11:46:59 2010 -0200 Account: Remove Conference.DRAFT support. TelepathyQt4/account.cpp | 62 +++++++----------------------------------------- 1 file changed, 8 insertions(+), 54 deletions(-) commit b4544a3a7ba3015aaae4d779d9ece7dbce0292ce Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 10 11:44:51 2010 -0200 Removed WeakPtr. TelepathyQt4/CMakeLists.txt | 3 +- TelepathyQt4/WeakPtr | 13 ---- TelepathyQt4/contact-manager.cpp | 4 +- TelepathyQt4/dbus-proxy-factory-internal.h | 3 +- TelepathyQt4/dbus-proxy-factory.cpp | 2 +- TelepathyQt4/message.cpp | 4 +- TelepathyQt4/referenced-handles.cpp | 10 +-- TelepathyQt4/shared-ptr.h | 104 ++--------------------------- TelepathyQt4/types.h | 2 - tests/ptr.cpp | 97 --------------------------- 10 files changed, 18 insertions(+), 224 deletions(-) commit e7b122f95f8b7d756298c0a95b8cbe6994b42f16 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 14:12:19 2010 -0200 Contact: Use Tp::Feature. TelepathyQt4/contact-factory.cpp | 6 +- TelepathyQt4/contact-factory.h | 14 +-- TelepathyQt4/contact-manager.cpp | 214 +++++++++++++++++------------------ TelepathyQt4/contact-manager.h | 12 +- TelepathyQt4/contact.cpp | 202 ++++++++++++++++----------------- TelepathyQt4/contact.h | 26 ++--- TelepathyQt4/pending-contacts.cpp | 16 +-- TelepathyQt4/pending-contacts.h | 8 +- tests/dbus/conn-roster-groups.cpp | 6 +- tests/dbus/contacts-avatar.cpp | 2 +- tests/dbus/contacts-capabilities.cpp | 8 +- tests/dbus/contacts-info.cpp | 8 +- tests/dbus/contacts-location.cpp | 8 +- tests/dbus/contacts.cpp | 20 ++-- 14 files changed, 263 insertions(+), 287 deletions(-) commit 9975b22304fed6d242c1c208254a5ea0207fd940 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 13:10:54 2010 -0200 Contact: Make it a Object. TelepathyQt4/channel.cpp | 6 +++--- TelepathyQt4/connection.cpp | 2 +- TelepathyQt4/contact-manager.cpp | 6 +++--- TelepathyQt4/contact.cpp | 3 ++- TelepathyQt4/contact.h | 13 +++---------- TelepathyQt4/types.h | 2 +- tests/dbus/conn-roster-groups.cpp | 2 +- 7 files changed, 14 insertions(+), 20 deletions(-) commit 71c8ccfcbc2f9c0e09ff961af5df6058b31cd788 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 18:54:49 2010 -0200 Fix fd.o#27204 - Codegen erroneously uses enums' value-prefix as the name for the C++ enum. tools/qt4-constants-gen.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit fc43ae4e303c92d4e224a7e6902cac2c33daea0e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 20:03:48 2010 -0200 Implement fd.o#28797 - generated client code should be able to set a non-default timeout. tools/qt4-client-gen.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit efb1504f67a78116e66036f401d82cfaa3bcdc4a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:22:24 2010 -0200 Account: Use Presence. TelepathyQt4/account.cpp | 73 ++++++++++++++++++++++-------------------------- TelepathyQt4/account.h | 29 ++++++++----------- 2 files changed, 45 insertions(+), 57 deletions(-) commit e52223fc20632ffb6b4b7203e02cff5a3ff0fc00 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 20:18:33 2010 -0200 AvatarData: Move it to its own header. TelepathyQt4/AvatarData | 13 +++++++++++ TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/avatar-data.h | 47 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.cpp | 1 + TelepathyQt4/contact.cpp | 1 + TelepathyQt4/contact.h | 1 + TelepathyQt4/types.h | 10 --------- tests/dbus/contacts-avatar.cpp | 1 + 8 files changed, 66 insertions(+), 10 deletions(-) commit bc0d7d931dcee287acaa35b58f91c81dd551bc43 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 19:47:38 2010 -0200 Added missing AccountFilter fancy header and make the inclusion of the fancy headers sufficient to use Account*Filter. TelepathyQt4/AccountCapabilityFilter | 2 +- TelepathyQt4/AccountFilter | 13 +++++++++++ TelepathyQt4/CMakeLists.txt | 5 ++++- TelepathyQt4/account-capability-filter.h | 38 ++++++++++++++++++++++++++++++++ TelepathyQt4/account-filter.h | 38 ++++++++++++++++++++++++++++++++ TelepathyQt4/account-manager.cpp | 1 + TelepathyQt4/account-set.cpp | 1 + 7 files changed, 96 insertions(+), 2 deletions(-) commit c6ae8ed77d596b354a66153f9991fa301cb46c56 Merge: 7c28194 735c7a2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 16:24:10 2010 -0200 Merge branch '0_5_0_remove_deprecated_autogen_props' Reviewed-by: Olli Salli (oggis) commit 7c28194f3025b277a7eca5d11eba6a7bbece9877 Merge: cf37c18 06691fb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 16:15:53 2010 -0200 Merge branch '0_5_0_shared_ptr_bool' Reviewed-by: Olli Salli (oggis) commit cf37c18f566a838c3c161fdbea22383ca5e92e4b Merge: b5f562e 62df1aa Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 16:12:09 2010 -0200 Merge branch '0_5_0_shared' Conflicts: TelepathyQt4/connection-manager.h Reviewed-by: Olli Salli (oggis) commit b5f562e7ea40ea775db7b3b769dffe472c260dc1 Merge: 29c0b2a eb3709a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 16:09:36 2010 -0200 Merge branch '0_5_0_object' Reviewed-by: Olli Salli (oggis) commit 29c0b2ad3a454d9ed171ddce3a000c66ec08de6b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 16:07:16 2010 -0200 Account: Remove createConferenceMediaCall deprecated methods. TelepathyQt4/account.cpp | 26 -------------------------- TelepathyQt4/account.h | 10 ---------- 2 files changed, 36 deletions(-) commit d9837b9ddb30dc28ee1ece77ee4fbb18e8e88f24 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 14:20:27 2010 -0200 Account: Deprecate createConferenceMediaCall and added new createConferenceStreamedMediaCall. TelepathyQt4/account.cpp | 30 ++++++++++++++++++++++++++++-- TelepathyQt4/account.h | 14 ++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) commit eb3709a269bb79c3e6d9e44cb9ff2427aff7792c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 16:05:05 2010 -0200 DBusProxyFactory: Make it a QObject. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/dbus-proxy-factory.cpp | 1 + TelepathyQt4/dbus-proxy-factory.h | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) commit 0519badf6e6ceb4ca6d66ea9b89bd0272dc9da4f Merge: bed85cf 8591850 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 14:37:14 2010 -0200 Merge branch '0_5_0_drop_call_support' Reviewed-by: Olli Salli (oggis) commit 06691fbc5feba4cfc770d2ce9d7af45788d5a8da Author: Marco Barisione Date: Tue Nov 9 12:53:24 2010 -0200 Fix the implicit bool conversion and make shared pointers usable in hash tables. Updated-by: Andre Moreira Magalhaes (andrunko) Reviewed-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/shared-ptr.h | 25 ++++- tests/CMakeLists.txt | 1 + tests/ptr.cpp | 248 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 272 insertions(+), 2 deletions(-) commit d1cda6a4322a20f4615f0e3cf8c7a1443482ec5e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 12:10:24 2010 -0200 AccountSet: Make it an Object. TelepathyQt4/account-set.cpp | 4 ++-- TelepathyQt4/account-set.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 5914ff03c2b67ba48a18aa29ed95ad16b7324c1d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 12:10:05 2010 -0200 Account: Remove notify/propertyChanged. TelepathyQt4/account.cpp | 5 ----- TelepathyQt4/account.h | 6 ------ 2 files changed, 11 deletions(-) commit 65a694377ef0a68f3f5a22e5f7d7147edd218c80 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 12:00:05 2010 -0200 Factories: Use DBusProxyPtr and remove ugly casts. TelepathyQt4/account-factory.cpp | 4 +- TelepathyQt4/channel-factory.cpp | 11 +++--- TelepathyQt4/channel-factory.h | 6 ++- TelepathyQt4/connection-factory.cpp | 4 +- TelepathyQt4/dbus-proxy-factory-internal.h | 6 +-- TelepathyQt4/dbus-proxy-factory.cpp | 61 ++++++++++++------------------ TelepathyQt4/dbus-proxy-factory.h | 13 +++---- TelepathyQt4/fixed-feature-factory.cpp | 2 +- TelepathyQt4/fixed-feature-factory.h | 2 +- TelepathyQt4/pending-channel.cpp | 2 +- 10 files changed, 49 insertions(+), 62 deletions(-) commit 4fcaae010f00fd9f43712215f4a4fe4b9f64c609 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 11:54:57 2010 -0200 PendingReady: Use DBusProxyPtr. TelepathyQt4/dbus-proxy-factory.cpp | 6 +++++- TelepathyQt4/pending-ready.cpp | 23 +++++++---------------- TelepathyQt4/pending-ready.h | 5 ++--- 3 files changed, 14 insertions(+), 20 deletions(-) commit 3389f3b9a05e5f48c150eccec1ee1dc9eafc4806 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 11:54:47 2010 -0200 Added new type DBusProxyPtr. TelepathyQt4/types.h | 2 ++ 1 file changed, 2 insertions(+) commit d1a8854bffcdfe0deb13b8d51bd39ac7a79ec662 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 11:28:54 2010 -0200 StreamedMediaChannel: Make StreamedMediaStream inherit Object. TelepathyQt4/streamed-media-channel.cpp | 2 +- TelepathyQt4/streamed-media-channel.h | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) commit 192a83c524322e792a8b9c5244dd7afd4d0d8221 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 11:10:09 2010 -0200 ClientRegistrar: Inherit Object. TelepathyQt4/client-registrar.cpp | 3 ++- TelepathyQt4/client-registrar.h | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) commit 987fc9bd664209fa5593c4f75e1faa86d7da0adc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 11:08:23 2010 -0200 DBusProxy: Make it a Object and ReadyObject. TelepathyQt4/account-manager.cpp | 3 +-- TelepathyQt4/account-manager.h | 5 +---- TelepathyQt4/account.cpp | 3 +-- TelepathyQt4/account.h | 6 +----- TelepathyQt4/channel-dispatch-operation.cpp | 3 +-- TelepathyQt4/channel-dispatch-operation.h | 5 +---- TelepathyQt4/channel-request.cpp | 6 ++---- TelepathyQt4/channel-request.h | 5 +---- TelepathyQt4/channel.cpp | 3 +-- TelepathyQt4/channel.h | 5 +---- TelepathyQt4/connection-manager-internal.h | 4 +--- TelepathyQt4/connection-manager.cpp | 9 +++------ TelepathyQt4/connection-manager.h | 7 ++----- TelepathyQt4/connection.cpp | 3 +-- TelepathyQt4/connection.h | 5 +---- TelepathyQt4/dbus-proxy.cpp | 28 +++++++++++++++------------- TelepathyQt4/dbus-proxy.h | 20 ++++++++------------ TelepathyQt4/profile-manager.cpp | 2 +- TelepathyQt4/profile-manager.h | 5 ++--- tests/dbus/stateful-proxy.cpp | 5 ++--- 20 files changed, 47 insertions(+), 85 deletions(-) commit 0b30c5ae6e117fcd27c4fe42d1d168d0e08e1734 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 9 10:29:19 2010 -0200 Object: Added Object class, base class for all tp-qt4 QObject based classes. TelepathyQt4/CMakeLists.txt | 4 +++ TelepathyQt4/Object | 13 ++++++++++ TelepathyQt4/object.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/object.h | 62 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) commit bed85cf749ebc8d82ff42af50a66ba359a327163 Author: Xavier Claessens Date: Tue Nov 9 13:35:08 2010 +0100 Add back a Q_UNUSED removed by error in previous commit TelepathyQt4/contact-manager.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 9ebed1f6377942dd2439f1264b91d6c01b7ea949 Author: Xavier Claessens Date: Tue Nov 9 13:08:41 2010 +0100 Remove wrong Q_UNUSED() TelepathyQt4/contact-manager.cpp | 8 -------- 1 file changed, 8 deletions(-) commit 8e36d74f80bf918e78d94b923b70c3e97c898570 Author: Xavier Claessens Date: Tue Nov 9 13:03:14 2010 +0100 Check for updates in the stored list, to update allKnownContacts correctly TelepathyQt4/contact-manager.cpp | 41 +++++++++++++++++++++++++++++++++++++++- TelepathyQt4/contact-manager.h | 6 ++++++ 2 files changed, 46 insertions(+), 1 deletion(-) commit 62df1aa746054e5ea07094df09462b15c842007e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 21:22:43 2010 -0200 ProtocolParameter: Declare metatype. TelepathyQt4/protocol-parameter.cpp | 40 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/protocol-parameter.h | 6 ++++++ 2 files changed, 46 insertions(+) commit d4341a0943ab6f62c7e6643429efd5d397034e56 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 21:22:28 2010 -0200 ProtocolInfo: Declare metatype. TelepathyQt4/protocol-info.h | 3 +++ 1 file changed, 3 insertions(+) commit 5c2a8b2d289e482085d555b8897918f3da7c9dca Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 21:22:04 2010 -0200 FileTransferChannelCreationProperties: Declare metatype. .../file-transfer-channel-creation-properties.cpp | 67 ++++++++++++++++++++-- .../file-transfer-channel-creation-properties.h | 14 ++--- 2 files changed, 70 insertions(+), 11 deletions(-) commit 94b056c77027c600b2cf4e5e2142651446b7e072 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 21:20:59 2010 -0200 RequestableChannelClassSpec: Let's not crash if operator== and supports method are called from an invalid instance. TelepathyQt4/requestable-channel-class-spec.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 074120b7893d37c5cbe821c81e5c5c8bd7bd872d Author: Kevin Ottens Date: Mon Nov 8 23:22:48 2010 +0100 Make it build with QT_STRICT_ITERATORS. Reviewed-by: Dario Freddi Reviewed-by: Andre Moreira Magalhaes TelepathyQt4/referenced-handles.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d688b696b69b3eca55b946ce037c92dc991adea9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 22:36:57 2010 -0200 Moved ProtocolInfo/Parameter to their own header/source files. TelepathyQt4/CMakeLists.txt | 6 +- TelepathyQt4/ProtocolInfo | 2 +- TelepathyQt4/ProtocolParameter | 2 +- TelepathyQt4/connection-manager.cpp | 377 ------------------------------------ TelepathyQt4/connection-manager.h | 88 +-------- TelepathyQt4/protocol-info.cpp | 322 ++++++++++++++++++++++++++++++ TelepathyQt4/protocol-info.h | 90 +++++++++ TelepathyQt4/protocol-parameter.cpp | 113 +++++++++++ TelepathyQt4/protocol-parameter.h | 77 ++++++++ 9 files changed, 613 insertions(+), 464 deletions(-) commit 1cec7549a84eb235d5d12a98e0c775cf6b756709 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 22:21:53 2010 -0200 ProtocolInfo: Make it implicit shared and use ProtocolInfo everywhere instead of ProtocolInfo *. TelepathyQt4/account.cpp | 35 ++---- TelepathyQt4/account.h | 7 +- TelepathyQt4/connection-manager-internal.h | 6 +- TelepathyQt4/connection-manager.cpp | 180 +++++++++++++++++++---------- TelepathyQt4/connection-manager.h | 14 ++- TelepathyQt4/profile.cpp | 4 +- TelepathyQt4/profile.h | 2 +- tests/dbus/account-basics.cpp | 12 +- tests/dbus/cm-basics.cpp | 82 ++++++------- 9 files changed, 196 insertions(+), 146 deletions(-) commit 9816668fddace5e2908ec44dee72a2b9dc793f0e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 21:28:13 2010 -0200 ProtocolParameter: Make it implicit shared and use ProtocolParameter everywhere instead of ProtocolParameter *. TelepathyQt4/connection-manager.cpp | 57 +++++++++++++------------------------ TelepathyQt4/connection-manager.h | 11 +++---- TelepathyQt4/profile.cpp | 10 +++---- tests/dbus/cm-basics.cpp | 36 +++++++++++------------ 4 files changed, 49 insertions(+), 65 deletions(-) commit 0cea1b81edea02685a44d1873485b43d4e675dcf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 21:23:42 2010 -0200 Use ContactLocation everywhere instead of ContactLocation *. TelepathyQt4/contact.cpp | 23 +++++++---------------- TelepathyQt4/contact.h | 6 ++---- tests/dbus/contacts-location.cpp | 18 ++++++++---------- 3 files changed, 17 insertions(+), 30 deletions(-) commit 709cc04fa08e611e7156c55fc142917d52042fce Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 21:12:10 2010 -0200 Use Connection/ContactCapabilities everywhere instead of Connection/ContactCapabilities *. TelepathyQt4/account-set-internal.h | 6 ++--- TelepathyQt4/account-set.cpp | 23 +++------------- TelepathyQt4/account.cpp | 40 +++++++--------------------- TelepathyQt4/account.h | 8 +++--- TelepathyQt4/connection-capabilities.cpp | 4 --- TelepathyQt4/connection-capabilities.h | 4 --- TelepathyQt4/connection-manager.cpp | 12 +++------ TelepathyQt4/connection-manager.h | 2 +- TelepathyQt4/connection.cpp | 14 ++++------ TelepathyQt4/connection.h | 3 ++- TelepathyQt4/contact-capabilities.cpp | 4 --- TelepathyQt4/contact-capabilities.h | 4 --- TelepathyQt4/contact.cpp | 35 ++++++++++--------------- TelepathyQt4/contact.h | 6 ++--- TelepathyQt4/generic-capability-filter.h | 4 +-- tests/dbus/account-basics.cpp | 33 +++++++++++------------ tests/dbus/cm-basics.cpp | 35 ++++++++++++------------- tests/dbus/conn-capabilities.cpp | 45 +++++++++++++++----------------- tests/dbus/contacts-capabilities.cpp | 13 +++++---- 19 files changed, 106 insertions(+), 189 deletions(-) commit b6deab754f3190ae2889923d3dec30a23db1a56b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 20:05:24 2010 -0200 ContactLocation: Make it implicit shared. TelepathyQt4/contact-location.cpp | 34 +++++++++++++++++++++------------- TelepathyQt4/contact-location.h | 13 +++++++++---- TelepathyQt4/contact.cpp | 2 +- 3 files changed, 31 insertions(+), 18 deletions(-) commit 2e9cc2096ced3b2b1a1adc43ec3a03c9b2eea5d1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 14:00:29 2010 -0200 ContactCapabilities: Changed mPriv to be a QSharedDataPointer. TelepathyQt4/contact-capabilities.cpp | 4 ++++ TelepathyQt4/contact-capabilities.h | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) commit ff042a6b5d6900c1aa6d7eeb065521bd7d541647 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 14:00:04 2010 -0200 ConnectionCapabilities: Changed mPriv to be a QSharedDataPointer. TelepathyQt4/connection-capabilities.cpp | 4 ++++ TelepathyQt4/connection-capabilities.h | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) commit 4c6020e838b22b8082aee5eafa21939b194fa0bf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 13:58:51 2010 -0200 CapabilitiesBase: Make it implicit shared. TelepathyQt4/capabilities-base.cpp | 16 +++------------- TelepathyQt4/capabilities-base.h | 3 +-- 2 files changed, 4 insertions(+), 15 deletions(-) commit 735c7a23adb44ebc4793e1914fccfeebd6c4e828 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 05:34:51 2010 -0200 Do not generate synchronous getter/setters for properties. tests/dbus/dbus-properties.cpp | 2 -- tools/qt4-client-gen.py | 73 ++---------------------------------------- 2 files changed, 2 insertions(+), 73 deletions(-) commit 8591850f031edef7430840cadcb07ed0382d7e0a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:59:54 2010 -0200 StreamedMediaChannel: Renamed MediaStreams to StreamedMediaStreams. TelepathyQt4/streamed-media-channel.cpp | 200 ++++++++++++++++---------------- TelepathyQt4/streamed-media-channel.h | 57 +++++---- TelepathyQt4/types.h | 4 +- tests/dbus/streamed-media-chan.cpp | 64 +++++----- 4 files changed, 162 insertions(+), 163 deletions(-) commit cdd899c6c39ee86d118490087ad7a74bbf595d05 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 07:33:28 2010 -0200 StreamedMediaChannel: Moved private classes declarations to .cpp and removed internal header. TelepathyQt4/CMakeLists.txt | 2 - TelepathyQt4/streamed-media-channel-internal.h | 92 -------------------------- TelepathyQt4/streamed-media-channel.cpp | 63 +++++++++++++++++- 3 files changed, 61 insertions(+), 96 deletions(-) commit e8998096bd0d875cc7edb57105612fa4ea3caf80 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 07:30:44 2010 -0200 Remove Call.DRAFT support completely. TelepathyQt4/channel-class-spec.cpp | 39 +++---------------------------------- TelepathyQt4/channel-factory.cpp | 22 --------------------- TelepathyQt4/future-channel.xml | 2 -- TelepathyQt4/future-misc.xml | 7 ------- 4 files changed, 3 insertions(+), 67 deletions(-) commit da4ad61a874f09eda201e12231406346777eb5a7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 07:23:30 2010 -0200 StreamedMediaChannel: Removed Call support. TelepathyQt4/streamed-media-channel-internal.h | 189 +-- TelepathyQt4/streamed-media-channel.cpp | 2117 +++--------------------- TelepathyQt4/streamed-media-channel.h | 216 +-- TelepathyQt4/types.h | 2 - tests/dbus/CMakeLists.txt | 1 - tests/dbus/streamed-media-chan-call.cpp | 918 ---------- tests/dbus/streamed-media-chan.cpp | 1 - tests/lib/glib/CMakeLists.txt | 1 - tests/lib/glib/future/CMakeLists.txt | 1 - tests/lib/glib/future/call/CMakeLists.txt | 23 - tests/lib/glib/future/call/call-channel.c | 1647 ------------------ tests/lib/glib/future/call/call-channel.h | 74 - tests/lib/glib/future/call/call-content.c | 412 ----- tests/lib/glib/future/call/call-content.h | 81 - tests/lib/glib/future/call/call-manager.c | 537 ------ tests/lib/glib/future/call/call-manager.h | 71 - tests/lib/glib/future/call/call-stream.c | 708 -------- tests/lib/glib/future/call/call-stream.h | 82 - tests/lib/glib/future/call/cm.c | 129 -- tests/lib/glib/future/call/cm.h | 73 - tests/lib/glib/future/call/conn.c | 421 ----- tests/lib/glib/future/call/conn.h | 78 - tests/lib/glib/future/call/manager-file.py | 23 - 23 files changed, 289 insertions(+), 7516 deletions(-) commit bad7a761c7249eed0ff4bd6f7668f669050645d4 Merge: 665c528 a9a971d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:37:55 2010 -0200 Merge branch '0_5_0_enums' Reviewed-by: Olli Salli (oggis) commit 665c5289a2f1c15ccd51bd99a80377b2732ea686 Merge: bf03043 ef306be Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:37:32 2010 -0200 Merge branch '0_5_0_misc' Reviewed-by: Olli Salli (oggis) commit a9a971d534d5be12ab32558b55c04b28a86f9e4d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 18:49:57 2010 -0200 Properly indent enums. tools/qt4-constants-gen.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 8f6a8180e02c8125dca3b3efeb5c22026cb77dbe Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 01:50:19 2010 -0200 Use enums instead of uint where appropriate. TelepathyQt4/account.cpp | 18 +++--- TelepathyQt4/channel-class-spec.cpp | 38 ++++++------- TelepathyQt4/channel-class-spec.h | 16 ++---- TelepathyQt4/channel.cpp | 25 +++++---- TelepathyQt4/channel.h | 30 +++++----- TelepathyQt4/connection.cpp | 73 +++++++++++++------------ TelepathyQt4/connection.h | 12 ++-- TelepathyQt4/pending-handles.cpp | 14 ++--- TelepathyQt4/pending-handles.h | 11 ++-- TelepathyQt4/referenced-handles.cpp | 10 ++-- TelepathyQt4/referenced-handles.h | 6 +- TelepathyQt4/requestable-channel-class-spec.cpp | 6 +- TelepathyQt4/requestable-channel-class-spec.h | 3 +- tests/profile.cpp | 2 +- tests/rccspec.cpp | 16 +++--- 15 files changed, 140 insertions(+), 140 deletions(-) commit dd6e20c2114f2c426a7110a80116364c0aceff80 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 01:50:06 2010 -0200 Added padding for all enums. tools/qt4-constants-gen.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit ef306bee02304ef439a206db45873fb2d6894436 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 11:53:08 2010 -0200 ClientRegistrar: Enable account FeatureCore in the create(bus) method. TelepathyQt4/client-registrar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5bb7ddb49ab651265c2883b974bc7dc05b8a8b92 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 11:53:01 2010 -0200 ClientRegistrar: Make create method taking factories have all default params. TelepathyQt4/client-registrar.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit fcebb3ceeb400cf6264949c59301deef7e40dff6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 11:32:06 2010 -0200 TextChannel: Use full-qualified namespace for chatStateChanged signal. TelepathyQt4/text-channel.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 74b96c5f3dc075a4bd5f68a0386c2fb9671888d3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 00:21:23 2010 -0200 Contact: Reorder destructor declaration. TelepathyQt4/contact.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 21e14589e100cfd01f6b9733549dc5649b7f185b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 19:48:24 2010 -0200 Properly order types alphabetically. TelepathyQt4/types.h | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit bf030437ca852dde4f6c9faf330a44839df5a923 Merge: e409c4a eb3e11c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:35:19 2010 -0200 Merge branch '0_5_0_cleanup' Reviewed-by: Olli Salli (oggis) commit eb3e11c4e6500de9b4a504724dff5049990a8d17 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 17:51:25 2010 -0200 client/client-factories tests: Properly sort capabilities when comparing. tests/dbus/client-factories.cpp | 4 +++- tests/dbus/client.cpp | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) commit 371d58a024edaded987d4b2432946317fd649189 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:12:16 2010 -0200 StreamedMediaChannel: Do not use typeInterface. TelepathyQt4/streamed-media-channel-internal.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) commit 8cf056d9ab9b54eec055eaa55e372454dd96e2ef Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:21:59 2010 -0200 PendingContactInfo: Removed deprecated methods. TelepathyQt4/pending-contact-info.cpp | 18 ------------------ TelepathyQt4/pending-contact-info.h | 1 - 2 files changed, 19 deletions(-) commit c0d7696b6b44e26433749b85db6a0e1b6581fa4b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:15:30 2010 -0200 Profile: Removed deprecated methods. TelepathyQt4/profile.cpp | 17 ----------------- TelepathyQt4/profile.h | 1 - tests/dbus/account-basics.cpp | 1 - tests/profile.cpp | 19 +++++++------------ 4 files changed, 7 insertions(+), 31 deletions(-) commit baf791b92d81617b87578dcddd218e037ecc9e83 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:14:39 2010 -0200 OptionalInterfaceFactory: Removed deprecated methods and made hasInterface(QString) const. TelepathyQt4/optional-interface-factory.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit 278cac5bfe73f840645ff62a65816cddb2581923 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:09:37 2010 -0200 PendingChannelRequest: Removed deprecated methods. TelepathyQt4/pending-channel-request.cpp | 74 +------------------------------- TelepathyQt4/pending-channel-request.h | 8 ---- 2 files changed, 1 insertion(+), 81 deletions(-) commit abadad38d98c6ba84da032ff12ccf391e07066c4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 19:55:04 2010 -0200 GenericCapabilityFilter: Remove deprecated methods. TelepathyQt4/generic-capability-filter.h | 47 ++++++++++---------------------- 1 file changed, 14 insertions(+), 33 deletions(-) commit de400468a03332f129ebc9ec1548b39457c17a07 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:12:06 2010 -0200 ConnectionManager: Removed optional interface convenience methods. TelepathyQt4/connection-manager.cpp | 9 --------- TelepathyQt4/connection-manager.h | 5 ----- 2 files changed, 14 deletions(-) commit 806f7d9f86859b732374456bff518400bc879b0a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 00:24:16 2010 -0200 ConnectionManager: Removed deprecated signals. TelepathyQt4/contact-manager.cpp | 44 ---------------------------------------- TelepathyQt4/contact-manager.h | 17 +--------------- 2 files changed, 1 insertion(+), 60 deletions(-) commit 9904b202453fb0d448434ebd24181f849da50d6d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 22:53:36 2010 -0200 Contact: Removed deprecated methods/signals. TelepathyQt4/contact.cpp | 84 -------------------------------------------- TelepathyQt4/contact.h | 28 +++++---------- tests/dbus/contacts-info.cpp | 42 ++++++---------------- tests/dbus/contacts.cpp | 59 +++++++++++++++---------------- 4 files changed, 49 insertions(+), 164 deletions(-) commit 37b745ade8599ffc14cda28fe950d28968bfee29 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:11:07 2010 -0200 Connection: Removed optional interface convenience methods. TelepathyQt4/connection.cpp | 99 ----------------------------- TelepathyQt4/connection.h | 107 -------------------------------- tests/dbus/chan-basics.cpp | 2 - tests/dbus/conn-capabilities.cpp | 3 - tests/dbus/conn-requests.cpp | 2 - tests/dbus/contacts-avatar.cpp | 5 +- tests/dbus/streamed-media-chan-call.cpp | 6 +- tests/dbus/streamed-media-chan.cpp | 6 +- 8 files changed, 14 insertions(+), 216 deletions(-) commit bc01950a06e97c41d9f4291de827b1d86c4e6ac8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 00:03:39 2010 -0200 Connection: Removed deprecated methods/signals. TelepathyQt4/connection.cpp | 111 -------------------------------------------- TelepathyQt4/connection.h | 14 ------ 2 files changed, 125 deletions(-) commit 61eaeec5358e38358ebfd3efbb59379e2df3db00 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:21:31 2010 -0200 ClientRegistrar: Removed deprecated methods. TelepathyQt4/client-registrar.cpp | 19 ------------------- TelepathyQt4/client-registrar.h | 1 - 2 files changed, 20 deletions(-) commit ba6a1413149cc280d4b2d4c08bab15f3b369a074 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:49:29 2010 -0200 ChannelRequest: Removed some unneeded logic now that we removed the deprecated methods. TelepathyQt4/channel-request.cpp | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) commit 9a2f2293eca2591291cb048b3ad5d6da714fe342 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:11:50 2010 -0200 ChannelRequest: Removed optional interface convenience methods. TelepathyQt4/channel-request.cpp | 11 ----------- TelepathyQt4/channel-request.h | 5 ----- 2 files changed, 16 deletions(-) commit ae6b301599e584a0709a17c6631242cdd58861ef Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:12:53 2010 -0200 ChannelRequest: Removed deprecated methods. TelepathyQt4/channel-request.cpp | 59 ---------------------------------------- TelepathyQt4/channel-request.h | 8 ------ 2 files changed, 67 deletions(-) commit 1d1474b020781a39a08841c5ef22322f551cebc1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:11:40 2010 -0200 ChannelDispatchOperation: Removed optional interface convenience methods. TelepathyQt4/channel-dispatch-operation.cpp | 13 ------------- TelepathyQt4/channel-dispatch-operation.h | 5 ----- 2 files changed, 18 deletions(-) commit bc90f7b7667f68ddf3da36997f4ac722830a6b13 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:11:35 2010 -0200 ChannelDispatchOperation: Removed deprecated methods. TelepathyQt4/channel-dispatch-operation.cpp | 80 ----------------------------- TelepathyQt4/channel-dispatch-operation.h | 8 --- 2 files changed, 88 deletions(-) commit 7c331027e6dc5b92f4f6ea418c4c82df411eed38 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 14:12:12 2010 -0200 Capabilities: Removed deprecated methods. TelepathyQt4/capabilities-base.cpp | 55 -------------------------- TelepathyQt4/capabilities-base.h | 11 +----- TelepathyQt4/connection-capabilities.cpp | 66 -------------------------------- TelepathyQt4/connection-capabilities.h | 10 ----- tests/dbus/account-basics.cpp | 10 ----- tests/dbus/cm-basics.cpp | 14 ------- tests/dbus/conn-capabilities.cpp | 21 ---------- tests/dbus/contacts-capabilities.cpp | 6 --- 8 files changed, 1 insertion(+), 192 deletions(-) commit 52754be096c7a1052c544a65c7b381818900ab07 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:11:19 2010 -0200 Channel: Removed optional interface convenience methods. TelepathyQt4/channel.cpp | 188 ----------------------------------------------- TelepathyQt4/channel.h | 139 ----------------------------------- 2 files changed, 327 deletions(-) commit 48a8d317b8772fdb42c9be353f6f9019d38c2288 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 00:17:36 2010 -0200 Channel: Removed deprecated methods/signals. TelepathyQt4/channel.cpp | 115 +---------------------------------- TelepathyQt4/channel.h | 10 --- tests/dbus/chan-conference-draft.cpp | 22 ++----- tests/dbus/chan-conference.cpp | 22 ++----- 4 files changed, 10 insertions(+), 159 deletions(-) commit f2b3f7a474af55144f77a5bf5ce68db5e9fa7c64 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:25:16 2010 -0200 AccountSet: Removed deprecated methods. TelepathyQt4/account-set.cpp | 73 ------------------------------------------- TelepathyQt4/account-set.h | 15 --------- tests/dbus/account-basics.cpp | 22 ------------- 3 files changed, 110 deletions(-) commit 9a7271ba8d79c61d9848fadd22eb173584f51d75 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:10:46 2010 -0200 Account: Removed optional interface convenience methods. TelepathyQt4/account.cpp | 26 -------------------------- TelepathyQt4/account.h | 11 ----------- tests/dbus/account-basics.cpp | 11 +++++++---- 3 files changed, 7 insertions(+), 41 deletions(-) commit f0f3ffda96e6584537950862ba3429c07114adc1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:49:20 2010 -0200 Account: Removed deprecated methods/signals. TelepathyQt4/account.cpp | 370 +----------------------------- TelepathyQt4/account.h | 80 +------ tests/dbus/account-basics.cpp | 11 +- tests/dbus/account-channel-dispatcher.cpp | 6 +- tests/dbus/account-connection-factory.cpp | 44 ++-- tests/dbus/dbus-properties.cpp | 2 +- 6 files changed, 36 insertions(+), 477 deletions(-) commit e662c03fa9db2f31a9958671c43282e8567e69c4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 14:08:10 2010 -0200 AccountManager: Removed deprecated methods, updated docs and renamed methods returning AccountSet to not have a Set suffix. TelepathyQt4/account-manager.cpp | 463 ++++++++++++--------------------------- TelepathyQt4/account-manager.h | 94 +++----- tests/dbus/account-basics.cpp | 46 ++-- 3 files changed, 189 insertions(+), 414 deletions(-) commit 876b896648950fb7bbeaa45732e3d4a19b0480cc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 02:09:58 2010 -0200 AbstractClient: Removed deprecated methods. TelepathyQt4/abstract-client.cpp | 223 +++------------------------------------ TelepathyQt4/abstract-client.h | 16 --- tests/dbus/client.cpp | 40 +++---- 3 files changed, 27 insertions(+), 252 deletions(-) commit e409c4a6f883b4fd565ea15da6a89c80e7fa63aa Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:32:50 2010 -0200 Account: Added NOTIFY to connection property. TelepathyQt4/account.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d0309c70bb0664a8f4a95921d1d4871455687cbd Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:15:37 2010 -0200 Channel: Deprecated hasFooConferenceInterface methods and add alternative methods. TelepathyQt4/channel.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++-- TelepathyQt4/channel.h | 12 ++++++--- 2 files changed, 71 insertions(+), 6 deletions(-) commit 10b910090b09af2b808c92e0016de65f398a2ca2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 18:04:23 2010 -0200 AccountSet: Deprecated filters. TelepathyQt4/account-set.cpp | 22 +++++++++++++--------- TelepathyQt4/account-set.h | 5 +++-- 2 files changed, 16 insertions(+), 11 deletions(-) commit dae9720d77731847fbfd770e7bab02724f936e3b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 17:59:41 2010 -0200 Account: Deprecated haveConnection. TelepathyQt4/account-set.cpp | 2 +- TelepathyQt4/account.cpp | 17 ++++++++++++----- TelepathyQt4/account.h | 5 +++-- 3 files changed, 16 insertions(+), 8 deletions(-) commit 4bf6d11def5fd9e40953483e2f2c3f16280b1fb9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 11:30:05 2010 -0200 Start 0.5.0 development CMakeLists.txt | 4 ++-- NEWS | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit e6dcfe7707b4c41e66d9fe47a71f5c56b220394f Merge: a19786e 6b84ed7 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 8 11:28:21 2010 -0200 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit 6b84ed723b56ab525f743460f904a3de04ce544d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 20:07:47 2010 -0200 Remove extra blank line from auto generated methods. tools/qt4-client-gen.py | 1 - 1 file changed, 1 deletion(-) commit 7da255a8f1bd948eedd929db90264927747a00b0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 18:30:38 2010 -0200 StreamedMediaChannel: Added hangupCall(void) and deprecated hangupCall with arguments. TelepathyQt4/streamed-media-channel.cpp | 19 +++++++++++++++++++ TelepathyQt4/streamed-media-channel.h | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) commit 2bd6c085bc98f520d5346216be101f1bf4718e3a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 18:30:21 2010 -0200 Account: Added createContactSearch and deprecated createContactSearchChannel. TelepathyQt4/account.cpp | 14 +++++++++++++- TelepathyQt4/account.h | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) commit ee8e3e432449158593701b3df4abc9a74afebeff Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 13:42:01 2010 -0200 Updated build instructions docs to properly refer to cmake. TelepathyQt4/main.dox | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 752ed312e1c39f2c6a621044eda7d6fdf613c502 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 13:41:36 2010 -0200 Removed reference to call example from docs now that call example is removed. TelepathyQt4/examples.dox | 84 ----------------------------------------------- 1 file changed, 84 deletions(-) commit 866b9e7b096a1407e06aabb704137a83026b993c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 13:38:54 2010 -0200 AccountManager: Document deprecated signals as deprecated. TelepathyQt4/account-manager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit a19786edbfd81b4c9751588dca5c4816533be8cc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 08:05:03 2010 -0200 Start 0.3.15 development CMakeLists.txt | 4 ++-- NEWS | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) commit 2dbd4cd687a55ec5d8e373ceebc36cfb4458f748 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 07:48:08 2010 -0200 Prepare release 0.3.14 CMakeLists.txt | 2 +- NEWS | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) commit b82a5800c8cd6be34f509fbd7575245bf1c5a00c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 07:44:58 2010 -0200 Properly install pending-variant-map.h. TelepathyQt4/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 735c45e80d0134df2b54e35bf692b87f055c5a6c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 06:01:03 2010 -0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit afc86cfb6b6e94d604318a2b2959ceef232807dd Author: Olli Salli Date: Fri Nov 5 09:11:50 2010 +0200 Update NEWS NEWS | 8 ++++++++ 1 file changed, 8 insertions(+) commit 068181558c9a7a5d3e220485a5631db9d3b2e1dc Merge: 25d714d 0abfd05 Author: Olli Salli Date: Fri Nov 5 09:08:11 2010 +0200 Merge branch 'conference-mess' Reviewed-by: Andre Magalhaes (andrunko) commit 25d714d935c736fa2c587724e3287d8c1afaddcd Merge: e6c8cfd 034ccab Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 05:04:18 2010 -0200 Merge branch 'presence' Reviewed-by: Olli Salli (oggis) commit e6c8cfd6ddf65046bfdbe2b565a4e121e917946b Merge: bd6b4ec f0be07d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Nov 5 05:03:56 2010 -0200 Merge branch 'metatype' Reviewed-by: Olli Salli (oggis) commit 0abfd0512879919aa472ecd415a22f3282504351 Author: Olli Salli Date: Fri Nov 5 00:40:59 2010 +0200 Add unnamed channel classes to the ChannelFactory mapping too TelepathyQt4/channel-factory.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit c9da4514a45f54a9308a08c3bd32fdac10a2a271 Author: Olli Salli Date: Fri Nov 5 00:31:27 2010 +0200 Add generic ChannelFactory::setSubclassFor TelepathyQt4/channel-factory.h | 6 ++++++ 1 file changed, 6 insertions(+) commit af552ab5c6738ef6b00e950f8e0b16361b59f666 Author: Olli Salli Date: Fri Nov 5 00:24:10 2010 +0200 Add empty line missing from channel-class-spec.cpp TelepathyQt4/channel-class-spec.cpp | 1 + 1 file changed, 1 insertion(+) commit d7a3a8f9eac2ce76066374a65db5bd6428a9bff7 Author: Olli Salli Date: Thu Nov 4 21:07:44 2010 +0200 ChannelClassSpec: Add unnamed (THT == None) variants for the static instances where it makes sense TelepathyQt4/channel-class-spec.cpp | 83 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-class-spec.h | 12 ++++++ 2 files changed, 95 insertions(+) commit 40e2292eb175cc9f49713cad923255652af7910e Author: Olli Salli Date: Thu Nov 4 20:19:46 2010 +0200 ConnCaps: Fix conference handling TelepathyQt4/connection-capabilities.cpp | 4 ---- 1 file changed, 4 deletions(-) commit dd66b017412ac561c9ab39bb32b8db99ec9a9ca9 Author: Olli Salli Date: Thu Nov 4 20:10:10 2010 +0200 ConnCaps: Use RCCSpec static const instances TelepathyQt4/connection-capabilities.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) commit b2b9b23fb93a5a3d1529989d19875bb248823a64 Author: Olli Salli Date: Thu Nov 4 20:01:02 2010 +0200 CapabilitiesBase: use RCCSpec static const instances TelepathyQt4/capabilities-base.cpp | 39 +++++--------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) commit 156459681c65a47a8e04bd7f10162f41175c9811 Author: Olli Salli Date: Thu Nov 4 19:55:28 2010 +0200 Sanitize RCCSpec handling of conferences TelepathyQt4/requestable-channel-class-spec.cpp | 16 ++-------------- tests/rccspec.cpp | 14 ++++---------- 2 files changed, 6 insertions(+), 24 deletions(-) commit bd6b4ece51d271a52fb877c4b851d5a4b82ac648 Author: Olli Salli Date: Thu Nov 4 18:40:37 2010 +0200 Update NEWS NEWS | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit bb6fd79cb76e34b9ecff8bb0d715bf1584182548 Merge: efd7307 7502531 Author: Olli Salli Date: Thu Nov 4 18:33:07 2010 +0200 Merge branch 'new-props-api' Reviewed-by: Olli Salli (oggis) Reviewed-by: Andre Magalhaes (andrunko) commit 750253170c43466e553b652ed7377a4e59c9ee8d Author: Olli Salli Date: Thu Nov 4 18:28:21 2010 +0200 Fine-tune generated interface requestAllProperties documentation tools/qt4-client-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 051df0e16f30722c84d4821406291072a97adebd Author: Olli Salli Date: Thu Nov 4 18:27:48 2010 +0200 Use QL1S interface constants in AbstractInterface::internal*Propert* TelepathyQt4/abstract-interface.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 379f0904ffb467a4d40e56e6452462611eea437b Author: Olli Salli Date: Thu Nov 4 18:18:42 2010 +0200 Have the property request API in AbstractInterface take QStrings instead of C strings TelepathyQt4/abstract-interface.cpp | 8 ++++---- TelepathyQt4/abstract-interface.h | 4 ++-- tools/qt4-client-gen.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) commit eed958689529c94e133fa4eea7af50435962e23b Author: Olli Salli Date: Thu Nov 4 18:12:48 2010 +0200 Make new async interface property getters const-qualified TelepathyQt4/abstract-interface.cpp | 4 ++-- TelepathyQt4/abstract-interface.h | 4 ++-- tools/qt4-client-gen.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) commit eda8fee82f3eee494507cc831f269844d7414e6a Author: Olli Salli Date: Thu Nov 4 18:02:39 2010 +0200 Fix copyright years in PendingVariantMap TelepathyQt4/pending-variant-map.cpp | 4 ++-- TelepathyQt4/pending-variant-map.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 034ccab8b1800d65eb6ec3cdf4639998bd9ccef6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 23:22:06 2010 -0200 Presence: Added barePresence method. TelepathyQt4/presence.cpp | 9 +++++++++ TelepathyQt4/presence.h | 2 ++ 2 files changed, 11 insertions(+) commit 758338f35b9a502350dbb96468f10e646a9697d1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 20:12:20 2010 -0200 Contact: Do not include Presence in the public header. TelepathyQt4/contact.cpp | 1 + TelepathyQt4/contact.h | 2 +- examples/file-transfer/sender.cpp | 1 + examples/roster/roster-item.cpp | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) commit f0be07dca20614fd036a422262496b1d06673335 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:48:34 2010 -0200 RequestableChannelClassSpec: Declare Qt metatype. TelepathyQt4/requestable-channel-class-spec.h | 3 +++ 1 file changed, 3 insertions(+) commit 6c4800c4210a0c7287955a4657c0adb18701b139 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:48:22 2010 -0200 ReferencedHandles: Declare Qt metatype. TelepathyQt4/referenced-handles.h | 2 ++ 1 file changed, 2 insertions(+) commit 68dd71f5f2fccf7d599d0ac085f2cce57f192ad8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:48:15 2010 -0200 Profile: Declare Qt metatype. TelepathyQt4/profile.h | 3 +++ 1 file changed, 3 insertions(+) commit 1f671f10e93f7566c53f834bf3812833be4f16df Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:48:07 2010 -0200 Presence: Declare Qt metatype. TelepathyQt4/presence.h | 2 ++ 1 file changed, 2 insertions(+) commit aa9f31bfff0508aa20f08d9c99793b21b6b92dc5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:48:00 2010 -0200 Feature: Declare Qt metatype. TelepathyQt4/feature.cpp | 9 +++++++++ TelepathyQt4/feature.h | 7 +++++++ 2 files changed, 16 insertions(+) commit 77638a33dde107b04a38cd697fcc5d333f32ca0b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:47:53 2010 -0200 Contact: Declare Qt metatype. TelepathyQt4/contact.h | 2 ++ 1 file changed, 2 insertions(+) commit 376f1fef86d5ea65061bbecc418eaf2e30b31c59 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:47:21 2010 -0200 ManagerFile: Declare Qt metatype. TelepathyQt4/manager-file.cpp | 35 +++++++++++++++++++++++++++++++++++ TelepathyQt4/manager-file.h | 13 ++++++++----- 2 files changed, 43 insertions(+), 5 deletions(-) commit 47259c31f2342aee72ea85aa342808d9c5e70057 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:47:11 2010 -0200 KeyFile: Declare Qt metatype. TelepathyQt4/key-file.cpp | 31 ++++++++++++++++++++++++++----- TelepathyQt4/key-file.h | 8 ++++++-- 2 files changed, 32 insertions(+), 7 deletions(-) commit 7d5694007b54a7d1d6c29252bb4efbaa364dbc70 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:47:01 2010 -0200 ContactCapabilities: Declare Qt metatype. TelepathyQt4/contact-capabilities.cpp | 8 ++++++++ TelepathyQt4/contact-capabilities.h | 3 +++ 2 files changed, 11 insertions(+) commit c9c512c7bcbc0ab652dc6f44a20340533157a73d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:46:49 2010 -0200 Connection: Declare Qt metatype. TelepathyQt4/connection.h | 2 ++ 1 file changed, 2 insertions(+) commit f00e4259592c39d2a4f0ca35aab341e8a40b9b5a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:46:39 2010 -0200 ContactLocation: Declare Qt metatype. TelepathyQt4/contact-location.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 9177eaae3d09165ee6a21eaacdfe8d9c393af323 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:46:25 2010 -0200 ConnectionCapabilities: Declare Qt metatype. TelepathyQt4/connection-capabilities.cpp | 2 +- TelepathyQt4/connection-capabilities.h | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) commit 155efc0724d3c527dab5ad07d0aa4b4a2b7642ea Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:46:11 2010 -0200 ChannelClassSpec: Declare Qt metatype. TelepathyQt4/channel-class-spec.h | 3 +++ 1 file changed, 3 insertions(+) commit 0d065a80e4aa2b69321b648b2e3b968fb270364c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 12:45:44 2010 -0200 CapabilitiesBase: Declare Qt metatype. TelepathyQt4/capabilities-base.cpp | 8 ++++++++ TelepathyQt4/capabilities-base.h | 3 +++ 2 files changed, 11 insertions(+) commit 5a8abcf6c3a0dce801ea9740f252f8be7aaf2ee7 Author: Olli Salli Date: Thu Nov 4 15:51:37 2010 +0200 Don't accidentally make the new props api private tools/qt4-client-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit efd7307e6483fc4d8551f01da1f36e8ba7d81a3f Merge: 9f9dd90 3e4a976 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 11:38:55 2010 -0200 Merge branch 'filter' Reviewed-by: Olli Salli (oggis) commit 9f9dd907fb482074f9bfacf212636306b9f4728e Merge: 5ccdf99 5bc845e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 4 11:38:47 2010 -0200 Merge branch 'TODO' Reviewed-by: Olli Salli (oggis) commit 3e4a976e0c6df27c44c8274164fea2c84d7e16f0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 19:49:35 2010 -0200 AccountManager: Warn if filtering is used when not ready. TelepathyQt4/account-manager.cpp | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) commit 693ce96de67037ba25fa4e15171d83001cb8cbe5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 19:48:39 2010 -0200 AccountPropertyFilter: Consider itself invalid if empty filter is provided. TelepathyQt4/account-property-filter.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 54737045b3c0e4df6d590f85f23fc7cc3a9d8e48 Author: Olli Salli Date: Thu Nov 4 15:28:50 2010 +0200 Remove duplicate TestAccountBasics target tests/dbus/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) commit 77ab787423ba94d4506164238e49264a06ad281f Author: Marco Barisione Date: Thu Oct 14 13:34:53 2010 +0100 Test the requestAllProperties() method on generated interfaces tests/dbus/dbus-properties.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit 7ff8cecfb5447fc8e6a6ff0975e41c3eba8ba74f Author: Marco Barisione Date: Thu Oct 14 13:33:40 2010 +0100 Generate a requestAllProperties() to retrieve all the DBus properties The method is generated only if there are properties on the interface and returns a PendingVariantMap*. tools/qt4-client-gen.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 410adfa45da3d5a82facc47707a2f509f1f924eb Author: Marco Barisione Date: Thu Oct 14 13:24:46 2010 +0100 Add AbstractInterface::internalRequestAllProperties() to retrieve properties The method will be used by generated classes to asynchronously get a dictionary of all the DBus properties. TelepathyQt4/abstract-interface.cpp | 10 ++++++++++ TelepathyQt4/abstract-interface.h | 2 ++ 2 files changed, 12 insertions(+) commit 4cfb67885aff8b10543895ccbb894e8b3219850e Author: Marco Barisione Date: Thu Oct 14 13:30:42 2010 +0100 PendingVariantMap: Add PendingVariantMap class PendingVariantMap is a new PendingOperation that can handle QDBusPendingCalls that return a QVariantMap. It behaves mostly like PendingVariant, but it's more convenient to use with methods that return a QVariantMap. TelepathyQt4/CMakeLists.txt | 4 ++ TelepathyQt4/PendingVariantMap | 13 ++++++ TelepathyQt4/pending-variant-map.cpp | 84 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/pending-variant-map.h | 59 +++++++++++++++++++++++++ 4 files changed, 160 insertions(+) commit 6e05fec7a05b2b12e5fecb506480b28e9c186bcc Author: Marco Barisione Date: Wed Oct 13 19:00:41 2010 +0100 Test asynchronous setters for DBus properties tests/dbus/dbus-properties.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 2c7786f5f7af159d6ec9198fdee3fc62d6fe1348 Author: Marco Barisione Date: Wed Oct 13 18:58:55 2010 +0100 Generate asynchronous setters for DBus properties The new setters are named setPropertyFoo, where Foo is the property name, and return a Tp::PendingOperation. They will completely replace synchronous setters after the API break. tools/qt4-client-gen.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit cdf0b1a59ece163223973ee3a8f1fda6cdefd4e0 Author: Marco Barisione Date: Wed Oct 13 18:56:26 2010 +0100 Add AbstractInterface::internalSetProperty() to set DBus properties The method will be used by generated classes to asynchronously set the value of DBus properties. TelepathyQt4/abstract-interface.cpp | 11 +++++++++++ TelepathyQt4/abstract-interface.h | 2 ++ 2 files changed, 13 insertions(+) commit bfe986803ce947c450fadcaab753c25e42f6abe6 Author: Marco Barisione Date: Wed Oct 13 18:47:32 2010 +0100 Add a test for setting and retrieving DBus properties tests/dbus/CMakeLists.txt | 5 ++ tests/dbus/dbus-properties.cpp | 132 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) commit a00ca1615595c56d8f4de0411cb02d8c8785f491 Author: Marco Barisione Date: Wed Oct 13 13:56:19 2010 +0100 Use the new asynchronous property getters in the tests tests/dbus/client-factories.cpp | 18 +++++++++++------- tests/dbus/client.cpp | 19 ++++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) commit 62035c6eebe7c38a23f0e692b85fe02e7ee0c0bf Author: Marco Barisione Date: Wed Oct 13 13:55:17 2010 +0100 Add utility functions to test the value of DBus properties tests/lib/test.cpp | 14 ++++++++++++++ tests/lib/test.h | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) commit 5588ad363da490025cba6ac3c95d0d1754937835 Author: Marco Barisione Date: Wed Oct 13 13:51:47 2010 +0100 Generate asynchronous getters for DBus properties The new getters are named requestPropertyFoo, where Foo is the property name, and return a Tp::PendingVariant. They will replace completely the synchronous getters after the API break. tools/qt4-client-gen.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) commit e60224cc0c377f498c4d00d8f273fa15b7075f57 Author: Marco Barisione Date: Wed Oct 13 13:45:44 2010 +0100 Add AbstractInterface::internalRequestProperty() to retrieve DBus properties The method will be used by generated classes to asynchronously get the value of DBus properties. TelepathyQt4/abstract-interface.cpp | 13 +++++++++++++ TelepathyQt4/abstract-interface.h | 3 +++ 2 files changed, 16 insertions(+) commit 5ccdf99198a52fca55056a5666ee08b69d81db30 Author: Olli Salli Date: Thu Nov 4 15:18:41 2010 +0200 Don't try to use QString::path() which doesn't exist. TelepathyQt4/account-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 620c7081988cbafca68c160518098a8876db2522 Merge: f4b65fc 1270dba Author: Olli Salli Date: Thu Nov 4 14:35:51 2010 +0200 Merge branch 'sanify-am' Reviewed-by: Andre Magalhaes (andrunko) commit 1270dbafdae58f1cc751a6866253155067305e33 Author: Olli Salli Date: Thu Nov 4 14:19:30 2010 +0200 Add some useful debug to AM TelepathyQt4/account-manager.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 1767cddf6065906e25a09886d1aed18f47d29ba1 Author: Olli Salli Date: Thu Nov 4 14:14:59 2010 +0200 Don't use QMap::operator[] in AccountManager::accountForPath TelepathyQt4/account-manager.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit c6ea9a0ef5b6d9cacbbec4ab7fae90c219c5d976 Author: Olli Salli Date: Thu Nov 4 14:10:42 2010 +0200 Add TODO to make certain AM accessors const TelepathyQt4/account-manager.h | 3 +++ 1 file changed, 3 insertions(+) commit 5bc845eeaced5114e2df381ef83b8082f2612946 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 12:51:31 2010 -0200 AccountManager: Properly use bus param on create(bus) method. TelepathyQt4/account-manager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 1dc139e77081bab2d4840c00c8ce4f9264f87d65 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 15:10:16 2010 -0200 ChannelClassSpec: Added API/ABI break comments. TelepathyQt4/channel-class-spec.h | 5 +++++ 1 file changed, 5 insertions(+) commit ffd8c020d5c288dac674440c1595de95fd3656d3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 15:10:00 2010 -0200 RequestableChannelClassSpec: Added API/ABI break comments. TelepathyQt4/requestable-channel-class-spec.h | 1 + 1 file changed, 1 insertion(+) commit f4b65fc85828017393438293c8f722770b14fe0d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 13:36:08 2010 -0200 roster example: Build with new deprecated methods. examples/roster/roster-item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a4a3a0e5eb0e6d7490e3fbb47fbddf26640d0020 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 13:35:53 2010 -0200 file-transfer example: Build with new deprecated methods. examples/file-transfer/receiver.cpp | 9 +++++++-- examples/file-transfer/sender.cpp | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) commit 1e22c5753ecc4c9926363287baa7a494f5e152d2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Nov 3 13:35:34 2010 -0200 Contact: Added missing presence method. TelepathyQt4/contact.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 48a76e07be09a749635e33c6e61f50e961c37ab7 Merge: 4b4880a 634e0b6 Author: Xavier Claessens Date: Wed Nov 3 14:04:48 2010 +0100 Merge branch 'remove' commit 634e0b6851fac42e261348c3d063374b7f74f56a Author: Xavier Claessens Date: Wed Nov 3 14:04:13 2010 +0100 Small wording fixes TelepathyQt4/contact-manager.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) commit 8ff6e310e274e796c1cc61d864ac9a3849c4f092 Author: Xavier Claessens Date: Tue Nov 2 15:44:09 2010 +0100 Add Tp::ContactManager::removeContacts() TelepathyQt4/contact-manager.cpp | 53 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.h | 3 +++ 2 files changed, 56 insertions(+) commit 4b4880ae0307d9ea969ec8cc87241a554b8edea1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 15:18:52 2010 -0200 Update NEWS NEWS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 4b88bc282857aea8db4c86eda2edbcc5b13166a6 Merge: 3e75f32 1fef4de Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:59:37 2010 -0200 Merge branch 'deprecate-interfaces-accessors' Reviewed-by: Olli Salli (oggis) commit 3e75f322ccba1ed265b64ba526272bde39353975 Merge: 183c251 ae4086e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:55:55 2010 -0200 Merge branch 'smchannel-deprecate-call-support' Reviewed-by: Olli Salli (oggis) commit 183c2516fa8ad2f565812b2f656a031cd0982760 Merge: e0fa3a1 dc76a50 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:55:46 2010 -0200 Merge branch 'contact-todo' Reviewed-by: Olli Salli (oggis) commit e0fa3a12fc6c68f715f4a31e634035aabd6ae86b Merge: c54e9e7 174201a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:55:35 2010 -0200 Merge branch 'presence' Reviewed-by: Olli Salli (oggis) commit c54e9e74f4d19a1f6c4b3c2d58b5656f9d2c112c Merge: 1aee904 f42d398 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:55:22 2010 -0200 Merge branch 'oif-deprecate-has-interface-char-pointer' Reviewed-by: Olli Salli (oggis) commit 1aee9044a3d10c7b2e524d3fffa4504e1fed6113 Merge: 9d57aec 644ef05 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:55:08 2010 -0200 Merge branch 'TODO' Reviewed-by: Olli Salli (oggis) commit 1fef4de5e2db95a10c723c3c2bbcd7dd76d9a3ca Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:53:00 2010 -0200 Do not use optionalInterface if not needed and "deprecate" typeInterface. TelepathyQt4/account-manager.cpp | 3 +-- TelepathyQt4/account.cpp | 6 ++--- TelepathyQt4/channel-dispatch-operation.cpp | 3 +-- TelepathyQt4/channel-request.cpp | 3 +-- TelepathyQt4/channel.cpp | 17 ++++++------- TelepathyQt4/channel.h | 1 + TelepathyQt4/connection-manager.cpp | 3 +-- TelepathyQt4/connection.cpp | 14 ++++------- TelepathyQt4/contact-manager.cpp | 21 ++++++---------- TelepathyQt4/contact-search-channel.cpp | 6 ++--- TelepathyQt4/contact.cpp | 3 +-- TelepathyQt4/file-transfer-channel.cpp | 6 ++--- TelepathyQt4/incoming-file-transfer-channel.cpp | 3 +-- TelepathyQt4/outgoing-file-transfer-channel.cpp | 3 +-- TelepathyQt4/pending-channel.cpp | 3 +-- TelepathyQt4/pending-contact-info.cpp | 3 +-- TelepathyQt4/streamed-media-channel.cpp | 33 ++++++++++--------------- TelepathyQt4/text-channel.cpp | 18 ++++++-------- 18 files changed, 56 insertions(+), 93 deletions(-) commit 9d57aecc2092a5ecc8a2d4350f5090b9c70eeb5d Author: Senko Rasic Date: Tue Nov 2 17:20:04 2010 +0100 append to instead of overwriting supplied CMAKE_CXX_FLAGS/CMAKE_C_FLAGS cmake/modules/TelepathyDefaults.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit dc76a504cce25d1a95300d0397a8e21499313613 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:16:03 2010 -0200 Contact: Properly warn if deprecated signal infoChanged is used. TelepathyQt4/contact.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit f0d2152fe0ac39b2bbaaf0d39eab82984dd53e78 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:08:05 2010 -0200 Contact: Added more API/ABI break comments. TelepathyQt4/contact.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 2849b63f23b1ee83243989f68a5cfaa557950083 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:07:19 2010 -0200 ContactLocation: Added API/ABI break TODO comment. TelepathyQt4/contact-location.h | 1 + 1 file changed, 1 insertion(+) commit 174201a8cf0b020d6eea2357ece97f2d75b3f696 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:12:51 2010 -0200 Account: Added TODO comment to add a usablePresences method. TelepathyQt4/account.h | 2 ++ 1 file changed, 2 insertions(+) commit 38562b82babc91634edcdd141190adb029cd528a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:11:44 2010 -0200 Contact: Implemented signals deprecation mechanism. TelepathyQt4/contact.cpp | 7 +++++++ TelepathyQt4/contact.h | 4 ++++ 2 files changed, 11 insertions(+) commit d0cdf00c0026a672d6593ecf608f90c90721d173 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:06:22 2010 -0200 Profile: Added TODO comment to add a matches method to Profile::Presence. TelepathyQt4/profile.h | 2 ++ 1 file changed, 2 insertions(+) commit 44a461b87de5f79d58aede9785f855253ed65fac Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 14:02:13 2010 -0200 Account: Added TODO comment to set presence from a Profile presence. TelepathyQt4/account.h | 1 + 1 file changed, 1 insertion(+) commit eca8d7e48a4a284d9efabd2bf512c8aa01c63853 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 13:39:14 2010 -0200 Account: Added API/ABI break comment to use Presence instead of SimplePresence. TelepathyQt4/account.h | 1 + 1 file changed, 1 insertion(+) commit 8c21cfd1fca9ab267af0c960def686a8c86ca652 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 13:38:05 2010 -0200 Presence: Removed operator==. TelepathyQt4/presence.cpp | 5 ----- TelepathyQt4/presence.h | 1 - 2 files changed, 6 deletions(-) commit 247b31ed9854aa3b5129e576f87f53dd834e5a10 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 13:36:46 2010 -0200 Contact: Use Presence class and deprecate usage of SimplePresence. TelepathyQt4/contact.cpp | 39 ++++++++++++++++++++++++++++----------- TelepathyQt4/contact.h | 18 ++++++++++++------ 2 files changed, 40 insertions(+), 17 deletions(-) commit 258456975747ed8094c94043b4a5805fcf1fe5e6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 12:46:49 2010 -0200 Added high-level class for SimplePresence. TelepathyQt4/CMakeLists.txt | 3 + TelepathyQt4/Presence | 13 ++++ TelepathyQt4/presence.cpp | 163 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/presence.h | 72 +++++++++++++++++++ 4 files changed, 251 insertions(+) commit ae4086e68cabf86ca982dff30eae7717cb0ecb40 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 12:20:44 2010 -0200 StreamedMediaChannel: Deprecate all methods that use workarounds to properly work for SM type channels. TelepathyQt4/streamed-media-channel.cpp | 117 ++++++++++++++++++++++++++++++-- TelepathyQt4/streamed-media-channel.h | 35 +++++++--- 2 files changed, 137 insertions(+), 15 deletions(-) commit 644ef05f8b659fd93d910002218c5544a4033c03 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:49:47 2010 -0200 TextChannel: Added API/ABI break TODO comment. TelepathyQt4/text-channel.h | 1 + 1 file changed, 1 insertion(+) commit f42d3982628c954ff72092fd7c87766897b21494 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:48:56 2010 -0200 OptionalInterfaceFactory: Deprecated hasInterface method taking const char * as param. TelepathyQt4/optional-interface-factory.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 57869d19f37b6d21792010fd6ecfc952d641fae5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:48:44 2010 -0200 Connection: Do not use OIF::hasInterface method taking const char * as param. TelepathyQt4/connection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c8d29b9c04ad38945a09c6b8f9506034584e7156 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:48:18 2010 -0200 Channel: Do not use OIF::hasInterface method taking const char * as param. TelepathyQt4/channel.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 5d7de4f08a76006488d8aaa4e887f0427561e837 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:38:51 2010 -0200 ChannelRequest: Deprecate optional interface convenience methods. TelepathyQt4/channel-request.cpp | 14 +++++--------- TelepathyQt4/channel-request.h | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) commit 762d4013a7de2d9da531ae62021bf815546375f5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:38:34 2010 -0200 ConnectionManager: Deprecate optional interface convenience methods. TelepathyQt4/connection-manager-internal.h | 3 +++ TelepathyQt4/connection-manager.cpp | 7 +++---- TelepathyQt4/connection-manager.h | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) commit 56f77c2b90aa64be56ffb59253e90e86e66af9d9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:29:58 2010 -0200 Connection: Deprecate optional interface convenience methods. TelepathyQt4/connection.cpp | 31 +++++++++++++++++++++++++------ TelepathyQt4/connection.h | 36 ++++++++++++++++++------------------ 2 files changed, 43 insertions(+), 24 deletions(-) commit 8d25c8c7f42f847f7441531a071a6caf35cc3134 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:29:43 2010 -0200 PendingContactInfo: Do not use optional interface convenience methods. TelepathyQt4/pending-contact-info.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 4cbedee14b0217af88fd3eba374f34a50650a39e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:29:35 2010 -0200 PendingChannel: Do not use optional interface convenience methods. TelepathyQt4/pending-channel.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 8c43f9c8f7ba6ffd943467f990cd462adc30ae79 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:29:26 2010 -0200 Contact: Do not use optional interface convenience methods. TelepathyQt4/contact.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 02f1cab6ff7700f0bc8aa1fe7fed58c5168beaeb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:29:15 2010 -0200 ContactManager: Do not use optional interface convenience methods. TelepathyQt4/contact-manager.cpp | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) commit 8e62abdd1a45680ad83a12330b4c44a206b3226c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:06:23 2010 -0200 Channel: Deprecate optional interface convenience methods. TelepathyQt4/channel.cpp | 42 +++++++++++++++++++++++++++++++++--------- TelepathyQt4/channel.h | 42 +++++++++++++++++++++--------------------- 2 files changed, 54 insertions(+), 30 deletions(-) commit 9fec378daa9ec1f57aac208e5ede88c709c37cbc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:05:18 2010 -0200 TextChannel: Do not use optional interface convenience methods. TelepathyQt4/text-channel.cpp | 56 ++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 17 deletions(-) commit 489dc56643ff98cd780a33a5087a9e7510ff0bff Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:04:59 2010 -0200 StreamedMediaChannel: Do not use optional interface convenience methods. TelepathyQt4/streamed-media-channel-internal.h | 3 ++ TelepathyQt4/streamed-media-channel.cpp | 61 ++++++++++++++++++++------ 2 files changed, 50 insertions(+), 14 deletions(-) commit e4036fd99f47586e49648320c92d8bd6f778f4a4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:04:39 2010 -0200 OutgoingFileTransferChannel: Do not use optional interface convenience methods. TelepathyQt4/outgoing-file-transfer-channel.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 1edd1dfa225c6565dcacd3f651bb236a1286e2f9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:04:31 2010 -0200 IncomingFileTransferChannel: Do not use optional interface convenience methods. TelepathyQt4/incoming-file-transfer-channel.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit e02095aaae98bf06de5a688349bb400a07704488 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:04:21 2010 -0200 FileTransferChannel: Do not use optional interface convenience methods. TelepathyQt4/file-transfer-channel.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) commit f5b9f837b63217bc05d726354a52df1c80631a5e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 2 01:03:39 2010 -0200 ContactSearchChannel: Do not use optional interface convenience methods. TelepathyQt4/contact-search-channel.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) commit b55f7657bf1ab518bb41e9f3d9f04748e8e6f67f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 19:05:41 2010 -0200 Start 0.3.14 development CMakeLists.txt | 4 ++-- NEWS | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) commit 7a13fb70e9da3af73fe61e690a9cf02ba2b40b7f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 18:46:40 2010 -0200 Prepare release 0.3.13 CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b0397e408f7968d3792d895e18a15d806c4f22bf Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 18:45:52 2010 -0200 Update NEWS NEWS | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) commit defa0be324837dc9741ee090ee922d9b36c551cd Merge: 37cd319 e8b1c64 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 18:35:06 2010 -0200 Merge branch 'signals-deprecation' Reviewed-by: Olli Salli (oggis) commit e8b1c64d39052d792161d0d9fbbcfd781184812d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 18:25:25 2010 -0200 Channel: Warn if deprecated signals are used. TelepathyQt4/channel.cpp | 21 +++++++++++++++++++-- TelepathyQt4/channel.h | 5 ++++- 2 files changed, 23 insertions(+), 3 deletions(-) commit fe43f7ecc81ee9330e09f58372ee0424206aec49 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 18:19:02 2010 -0200 ContactManager: Warn if deprecated signals are used and document signals. TelepathyQt4/contact-manager.cpp | 88 +++++++++++++++++++++++++++++++++++++++- TelepathyQt4/contact-manager.h | 35 ++++++++-------- 2 files changed, 103 insertions(+), 20 deletions(-) commit 37cd319500f51e6be822d85feda64c585cd6d53f Merge: befce96 e726857 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:58:50 2010 -0200 Merge branch 'rcc-high-level' Reviewed-by: Olli Salli (oggis) commit e726857f4a9436374a949adcccb3667d1ef9d949 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:49:00 2010 -0200 AccountManager: Added API/ABI break TODO. TelepathyQt4/account-manager.h | 4 ++++ 1 file changed, 4 insertions(+) commit befce96e76b48aedf6e221cc3d70a1f4ea7b7f27 Author: Olli Salli Date: Mon Nov 1 21:48:52 2010 +0200 Update NEWS NEWS | 5 +++++ 1 file changed, 5 insertions(+) commit 517439a63afc63df71db4463430dd012bea7c966 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:45:32 2010 -0200 AccountManager: Do not use deprecated GenericCapability filter methods. TelepathyQt4/account-manager.cpp | 80 +++++----------------------------------- 1 file changed, 10 insertions(+), 70 deletions(-) commit b8515c648529711bdcc27f3fda2156ca6a47f344 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:45:14 2010 -0200 RequestableChannelClassSpec: Added convenience method to build a spec for FileTransfer channels. TelepathyQt4/requestable-channel-class-spec.cpp | 16 ++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 2 ++ 2 files changed, 18 insertions(+) commit 713a70b1f11a96d246acc68719d1654a0c6e6c8e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:31:39 2010 -0200 GenericCapabilityFilter: Deprecate methods using bare RequestableChannelClass/List. TelepathyQt4/generic-capability-filter.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit b92ca146dff440f7c08c63dfb873e54585aa40b1 Merge: dfcc1d0 fa865d5 Author: Olli Salli Date: Mon Nov 1 21:31:18 2010 +0200 Merge branch 'channel-factory' Reviewed-by: Andre Magalhaes (andrunko) commit fa865d51e1fcc618fd40736f836a2ace745956cd Author: Olli Salli Date: Mon Nov 1 21:16:48 2010 +0200 Explicitly indicate that the ACH::Caps accessors check/set/unset Tokens TelepathyQt4/abstract-client.h | 36 ++++++++++++++++++------------------ tests/dbus/client-factories.cpp | 4 ++-- 2 files changed, 20 insertions(+), 20 deletions(-) commit 2bd8b03c4ea8d9f1d9ac834bbb6b8d7f597e9295 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 12:24:14 2010 -0200 Connection: Warn if deprecated signals are used. TelepathyQt4/connection.cpp | 7 +++++++ TelepathyQt4/connection.h | 3 +++ 2 files changed, 10 insertions(+) commit 36de2e0ec2000cfa42b1788bf1ba6f955195c6eb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 15:37:58 2010 -0200 Account: connectionStatusChanged signal now has only the status as param, as done by Connection::statusChanged. TelepathyQt4/account.cpp | 19 ++++++------------- TelepathyQt4/account.h | 4 +--- 2 files changed, 7 insertions(+), 16 deletions(-) commit 1bbf79e6132f69e6a1292c3c6428442b50fece65 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 13:30:21 2010 -0200 Account: Warn if deprecated signals are used. TelepathyQt4/account.cpp | 13 +++++++++++++ TelepathyQt4/account.h | 3 +++ 2 files changed, 16 insertions(+) commit e38e5fa987c238f3bd1d2a02d63f5378cd1637a6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 13:29:49 2010 -0200 Account: Added new signals connectionStatusChanged and connectionChanged. TelepathyQt4/account.cpp | 58 +++++++++++++++++++++++++++++++++++++++--------- TelepathyQt4/account.h | 15 ++++++++----- 2 files changed, 56 insertions(+), 17 deletions(-) commit 3187102342be27e41b762e7157f8299dfaf771fc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 13:28:18 2010 -0200 AccountManager: Warn if deprecated signals are used. TelepathyQt4/account-manager.cpp | 11 +++++++++++ TelepathyQt4/account-manager.h | 3 +++ 2 files changed, 14 insertions(+) commit 381f2b55abc085159e9fdb54b046b2ff33762449 Author: Olli Salli Date: Mon Nov 1 21:07:18 2010 +0200 Update accordingly with the recent StreamedMedia related method naming changes TelepathyQt4/channel-class-spec.cpp | 28 +++++++++++++++++++++++----- TelepathyQt4/channel-class-spec.h | 20 +++++++++++--------- TelepathyQt4/channel-factory.cpp | 24 +++++++++++++----------- TelepathyQt4/channel-factory.h | 12 ++++++------ tests/dbus/client-factories.cpp | 2 +- 5 files changed, 54 insertions(+), 32 deletions(-) commit 8a64df69c109fa59aca69af27f4058cc750784fb Author: Olli Salli Date: Mon Nov 1 20:42:12 2010 +0200 Clean up ChannelClassSpec Call.DRAFT hacks TelepathyQt4/channel-class-spec.cpp | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) commit 7066ea6b9af167bfa96e4184dc291fcdc224a5b5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:00:22 2010 -0200 Contact: Do not use deprecated CapabilitiesBase::requestableChannelClasses method. TelepathyQt4/contact.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 880ad12b34e513e0625c2e369695f4bc2c9e8760 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 17:00:06 2010 -0200 Account: Do not use deprecated CapabilitiesBase::requestableChannelClasses method. TelepathyQt4/account.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) commit 1858e05cd59d64766da3d40cc20abf564af68c80 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 16:48:29 2010 -0200 GenericCapabilityFilter: Use RCCSpec. TelepathyQt4/generic-capability-filter.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) commit d991a20d33ce7b528ede4067b3baf7129d040d1a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 16:48:01 2010 -0200 RequestableChannelClassSpecList: Added bareClasses method. TelepathyQt4/requestable-channel-class-spec.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit a388a0e58b035ad48c5a786e0225ac6262150541 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 15:25:29 2010 -0200 RequestableChannelClassSpec: Cache return value of convenience methods returning known RCCS. TelepathyQt4/requestable-channel-class-spec.cpp | 352 +++++++++++++++--------- 1 file changed, 224 insertions(+), 128 deletions(-) commit 4fdde53fbac71611d214d7784dd4fce2e7fa7bea Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 15:10:56 2010 -0200 RequestableChannelClassSpec: Modify SM related methods to contain StreamedMedia in the name. TelepathyQt4/requestable-channel-class-spec.cpp | 12 ++++++------ TelepathyQt4/requestable-channel-class-spec.h | 12 ++++++------ tests/rccspec.cpp | 21 ++++++++++++--------- 3 files changed, 24 insertions(+), 21 deletions(-) commit e51d60bd0f2a0c66c65eeb683745c7404e5392c7 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 15:06:48 2010 -0200 Profile: Renamed unsupportedClassSpecs to unsupportedChannelClassSpecs and fixed typo in Account::capabilities(). TelepathyQt4/account.cpp | 6 +++--- TelepathyQt4/profile-manager.cpp | 2 +- TelepathyQt4/profile.cpp | 18 ++++++++---------- TelepathyQt4/profile.h | 2 +- tests/dbus/account-basics.cpp | 1 + 5 files changed, 14 insertions(+), 15 deletions(-) commit fd7d6327ed24a81b1253f5eb8254ebc1e87ee284 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 16:54:31 2010 -0200 Account: Use RequestableChannelClassSpec when building caps and properly deduct unsupported rccs. TelepathyQt4/account.cpp | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) commit 8b6569f85f6c2572a8e8fcd014c4911a3a23acdd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 16:35:14 2010 -0200 Profile: Use RequestableChannelClassSpec. TelepathyQt4/account.cpp | 2 +- TelepathyQt4/profile-manager.cpp | 2 +- TelepathyQt4/profile.cpp | 29 ++++++++++++++++++++++++----- TelepathyQt4/profile.h | 4 +++- 4 files changed, 29 insertions(+), 8 deletions(-) commit d61a10d0b6ece5b10ba1c4f25bb39935ca2e4653 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 16:30:19 2010 -0200 rccspec test: Added test for RequestableChannelClassSpec. tests/CMakeLists.txt | 1 + tests/rccspec.cpp | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) commit b891a2733a0b042845c6e1269d61d6fc88e08ee0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 16:12:07 2010 -0200 ConnectionCapabilities: Properly check TargetHandleType in conference methods. TelepathyQt4/connection-capabilities.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 878f5c8146b3fe06871cc964f917a51a4861cf22 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 16:11:40 2010 -0200 RequestableChannelClassSpec: Added helper methods to build known specs. TelepathyQt4/requestable-channel-class-spec.cpp | 192 ++++++++++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 20 +++ 2 files changed, 212 insertions(+) commit 205ce78ba5afbd4991707922e184854766a47c21 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 15:50:23 2010 -0200 RequestableChannelClassSpec: Added operator== and supports method. TelepathyQt4/requestable-channel-class-spec.cpp | 18 ++++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 3 +++ 2 files changed, 21 insertions(+) commit 2402e2a539c7da79e2819e6b417502d3048a5e13 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 10:41:49 2010 -0200 ConnectionCapabilities: Properly check rcc fixedProperties size. TelepathyQt4/connection-capabilities.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 923fde4110de2b919e06e041ab62747d114fda4e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 10:40:43 2010 -0200 CapabilitiesBase: Properly check rcc fixedProperties size. TelepathyQt4/capabilities-base.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 7180542660b2f95c6aace50aa6544f8fd38e7750 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 19:55:49 2010 -0200 ConnectionCapabilities: Use new macros. TelepathyQt4/connection-capabilities.cpp | 60 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) commit f9bc6806de5e184659d0ff3346112cb7fc9fab1b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 19:46:03 2010 -0200 Capabilities: Updated copyright. TelepathyQt4/capabilities-base.cpp | 26 +++++++++++++------------- TelepathyQt4/capabilities-base.h | 4 ++-- TelepathyQt4/connection-capabilities.cpp | 4 ++-- TelepathyQt4/connection-capabilities.h | 4 ++-- TelepathyQt4/contact-capabilities.cpp | 4 ++-- TelepathyQt4/contact-capabilities.h | 4 ++-- 6 files changed, 23 insertions(+), 23 deletions(-) commit 421ea8c5f88dab1af7491e162f32505048c2d55a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 12:32:39 2010 -0200 CapabilitiesBase: Make it copyable. TelepathyQt4/capabilities-base.cpp | 20 ++++++++++++++++++++ TelepathyQt4/capabilities-base.h | 4 ++++ 2 files changed, 24 insertions(+) commit 0f8c22fe332753a6a4b8e56192497772aecc2259 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 12:04:55 2010 -0200 Capabilities: Added new constructors that take a RCCSpecList. TelepathyQt4/capabilities-base.cpp | 14 ++++++++++++++ TelepathyQt4/capabilities-base.h | 6 ++++-- TelepathyQt4/connection-capabilities.cpp | 21 ++++++++++++++++----- TelepathyQt4/connection-capabilities.h | 3 ++- TelepathyQt4/contact-capabilities.cpp | 23 +++++++++++++++++------ TelepathyQt4/contact-capabilities.h | 4 +++- 6 files changed, 56 insertions(+), 15 deletions(-) commit 4cb0a20b1cadfe1c0612be5d0d51e1762dab0119 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 12:06:16 2010 -0200 CapabilitiesBase: Renamed requestableChannelClassSpecList to allClassSpecs. TelepathyQt4/capabilities-base.cpp | 4 ++-- TelepathyQt4/capabilities-base.h | 2 +- TelepathyQt4/connection-capabilities.cpp | 20 ++++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) commit 31d2176100d585eb16e0320395f63c6f6af9b595 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 12:06:25 2010 -0200 RequestableChannelClassSpec: Removed methods receiving char *, fixed/allowedPropertiesCount and hasChannelType from RCCSpec and use new constants. TelepathyQt4/capabilities-base.cpp | 44 +++++++-------- TelepathyQt4/connection-capabilities.cpp | 68 +++++++++++------------ TelepathyQt4/requestable-channel-class-spec.cpp | 72 +++---------------------- TelepathyQt4/requestable-channel-class-spec.h | 18 ++----- 4 files changed, 66 insertions(+), 136 deletions(-) commit 7492b5262f4722d18b7b3dfa87e943f28371fcb5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 20:40:34 2010 -0200 ConnectionCapabilities: Use RequestableChannelClassSpecList. TelepathyQt4/connection-capabilities.cpp | 147 ++++++++++++------------------- 1 file changed, 54 insertions(+), 93 deletions(-) commit b298d82287e7b380440dd6d96b304a69c10dab6b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 20:30:54 2010 -0200 CapabilitiesBase: Use RequestableChannelClassSpecList and deprecate usage of RequestableChannelClassList. TelepathyQt4/capabilities-base.cpp | 141 +++++++++++++++---------------------- TelepathyQt4/capabilities-base.h | 6 +- 2 files changed, 61 insertions(+), 86 deletions(-) commit ede17f323e5d06acaf9ae4b280150cb4c65c9258 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 20:30:17 2010 -0200 RequestableChannelClassSpec: Added more helper methods. TelepathyQt4/requestable-channel-class-spec.cpp | 52 +++++++++++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 8 ++++ 2 files changed, 60 insertions(+) commit 9d6101f7730dcd99d60adc73198eca1ed5f9eb0e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 20:03:06 2010 -0200 RequestableChannelClassSpecList: Added class to represent a list of RequestableChannelClassSpec. TelepathyQt4/requestable-channel-class-spec.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit f1e4967d104372ab79f8b98f356fdd0ae0f37723 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 19:56:59 2010 -0200 RequestableChannelClassSpec: Added helper methods. TelepathyQt4/requestable-channel-class-spec.cpp | 75 +++++++++++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 15 +++++ 2 files changed, 90 insertions(+) commit de7e3ece8c0ace22af6850916316a1717f0de888 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 19:39:59 2010 -0200 RequestableChannelClassSpec: Added initial wrapper class for RequestableChannelClass. TelepathyQt4/CMakeLists.txt | 3 ++ TelepathyQt4/RequestableChannelClassSpec | 13 +++++ TelepathyQt4/requestable-channel-class-spec.cpp | 64 +++++++++++++++++++++++++ TelepathyQt4/requestable-channel-class-spec.h | 56 ++++++++++++++++++++++ 4 files changed, 136 insertions(+) commit 389f6f46e3dcef03aa2b2e3a1e6184530f77acb2 Author: Olli Salli Date: Mon Nov 1 20:16:21 2010 +0200 Update copyrights in the files the ChannelFactory work touches TelepathyQt4/abstract-client.cpp | 4 ++-- TelepathyQt4/abstract-client.h | 4 ++-- TelepathyQt4/channel-factory.cpp | 4 ++-- TelepathyQt4/channel-factory.h | 4 ++-- TelepathyQt4/client-registrar-internal.h | 4 ++-- TelepathyQt4/client-registrar.cpp | 4 ++-- TelepathyQt4/client-registrar.h | 4 ++-- TelepathyQt4/pending-channel.cpp | 4 ++-- TelepathyQt4/pending-channel.h | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) commit c2763b9353b23515cb7315a456690a69fe7cf2c1 Author: Olli Salli Date: Sun Oct 31 20:31:44 2010 +0200 Deprecate AbstractClientHandler::capabilities() with high-level handlerCapabilities() TelepathyQt4/abstract-client.cpp | 13 +++++++++++++ TelepathyQt4/abstract-client.h | 3 ++- TelepathyQt4/client-registrar-internal.h | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) commit e1a3088a2d87c28c6393f5450b5154badb402a90 Author: Olli Salli Date: Sun Oct 31 20:26:31 2010 +0200 Deprecate bare Client.Handler capabilities with AbstractClientHandler::Capabilities TelepathyQt4/abstract-client.cpp | 61 +++++++++++++- TelepathyQt4/abstract-client.h | 134 ++++++++++++++++++++++++++++++- TelepathyQt4/client-registrar-internal.h | 1 + tests/dbus/client-factories.cpp | 22 ++--- 4 files changed, 203 insertions(+), 15 deletions(-) commit 4c71aa3a3b4c4cb29ebe2ff64763a6e18ce1f46a Author: Olli Salli Date: Sun Oct 31 20:25:57 2010 +0200 Add Client filter accessors returning ChannelClassSpecs TelepathyQt4/abstract-client.cpp | 76 ++++++++++++++++++++++++++++++++ TelepathyQt4/abstract-client.h | 12 ++--- TelepathyQt4/client-registrar-internal.h | 6 +-- 3 files changed, 85 insertions(+), 9 deletions(-) commit a9baed70d7419ca7dda7c37236eafbd1f0bef960 Author: Olli Salli Date: Sun Oct 31 19:25:23 2010 +0200 Make Client channel filters specified using ChannelClassSpec TelepathyQt4/abstract-client.cpp | 55 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/abstract-client.h | 28 ++++++++++---------- tests/dbus/client-factories.cpp | 22 +++++----------- 3 files changed, 77 insertions(+), 28 deletions(-) commit c1467bbd1ecdf067c3a85c375e3c928e3b3a5c02 Author: Olli Salli Date: Sun Oct 31 19:24:01 2010 +0200 Add ChannelClassSpecList::bareClasses() TelepathyQt4/channel-class-spec.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit 758143dbd82fdb8615a4f19511085660c88c0813 Author: Olli Salli Date: Sun Oct 31 18:46:36 2010 +0200 Use the requested-taking constructor in forming the static FileTransfer ChannelClassSpecs TelepathyQt4/channel-class-spec.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 46e494cb5718a0506d719c0583dea90cddbacdc0 Author: Olli Salli Date: Sun Oct 31 18:45:22 2010 +0200 Remove the old static mapping from ChannelFactory TelepathyQt4/channel-factory.cpp | 40 ---------------------------------------- TelepathyQt4/channel-factory.h | 10 ---------- 2 files changed, 50 deletions(-) commit 86be3ac0d67acbac8b8bbc935d3b268ae2f22fc9 Author: Olli Salli Date: Sun Oct 31 18:21:26 2010 +0200 Make PendingChannel use ChannelFactory TelepathyQt4/pending-channel.cpp | 53 ++++++++++++++++++++++++++-------------- TelepathyQt4/pending-channel.h | 1 + 2 files changed, 35 insertions(+), 19 deletions(-) commit 4921979a0fa76a7a814b9bad5c467255b379cee6 Author: Olli Salli Date: Sun Oct 31 17:49:46 2010 +0200 Add RoomList and ContactSearch to ChannelFactory TelepathyQt4/channel-factory.cpp | 64 +++++++++++++++++++++++++++++++++++----- TelepathyQt4/channel-factory.h | 44 +++++++++++++++++++++++---- 2 files changed, 94 insertions(+), 14 deletions(-) commit 2cdd299520293ec7e3037310e17195d8c2109c43 Author: Olli Salli Date: Sun Oct 31 15:49:51 2010 +0200 Add ChannelClassSpec::contactSearch() TelepathyQt4/channel-class-spec.cpp | 16 ++++++++++++++++ TelepathyQt4/channel-class-spec.h | 1 + 2 files changed, 17 insertions(+) commit 4d648724abe38e9431d9089bdcdc54f74659ad31 Author: Olli Salli Date: Sun Oct 31 15:45:54 2010 +0200 Implement subclass / constructor specification in ChannelFactory TelepathyQt4/channel-factory.cpp | 131 ++++++++++++++++++++++++++++++++++++++- TelepathyQt4/channel-factory.h | 100 ++++++++++++++++++++++++++++++ 2 files changed, 230 insertions(+), 1 deletion(-) commit 717ad003870b9c4f03bfa64a5e5fd013f844263b Author: Olli Salli Date: Sat Oct 30 22:21:16 2010 +0300 Enable channel factory in TestClientFactories tests/dbus/client-factories.cpp | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) commit 4dcfdfaf920996fa4fddb6e5be5447bc510f3c37 Author: Olli Salli Date: Sat Oct 30 22:07:17 2010 +0300 Make ChannelFactory::addFeaturesForMediaCalls() also set the Call.DRAFT features TelepathyQt4/channel-factory.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 83131f366580a3808cf76067f80cbdf395b5a78f Author: Olli Salli Date: Sat Oct 30 21:57:39 2010 +0300 Implement the ChannelFactory friendly feature specification wrappers TelepathyQt4/channel-factory.cpp | 68 ++++++++++++++++++++++++++++++++++++++-- TelepathyQt4/channel-factory.h | 15 ++++++--- 2 files changed, 76 insertions(+), 7 deletions(-) commit dc08396272ee2af820e8333cdacc10472033237e Author: Olli Salli Date: Sat Oct 30 21:57:20 2010 +0300 Remove bogus TODO from Channel::immutableProperties() TelepathyQt4/channel.cpp | 3 --- 1 file changed, 3 deletions(-) commit b3ef2932198131c3022bd458083c0a1fbd2d9ede Author: Olli Salli Date: Sat Oct 30 21:44:54 2010 +0300 Don't make channel-factory.h depend on channel-class-spec.h TelepathyQt4/channel-factory.cpp | 1 + TelepathyQt4/channel-factory.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) commit c8c68370257d8edbfec539e18a5c5efaa44938e4 Author: Olli Salli Date: Sat Oct 30 21:43:25 2010 +0300 Make empty ChannelClassSpecs comparable TelepathyQt4/channel-class-spec.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 10e009268b371d512cb03aa66a21aa80ba5f6634 Author: Olli Salli Date: Sat Oct 30 21:30:19 2010 +0300 Use ChannelClassSpec in ChannelFactory TelepathyQt4/channel-factory.cpp | 36 ++++++++---------------------------- TelepathyQt4/channel-factory.h | 31 +++++++++++++------------------ 2 files changed, 21 insertions(+), 46 deletions(-) commit 6420eec1fca6a4eb612a555d352b50f980187ee0 Author: Olli Salli Date: Sat Oct 30 21:29:18 2010 +0300 Add ChannelClassSpec(immutableProps) ctor TelepathyQt4/channel-class-spec.cpp | 19 ++++++++++++++----- TelepathyQt4/channel-class-spec.h | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) commit 319602b532ea99afca1c4575851df358bf57f694 Author: Olli Salli Date: Sat Oct 30 19:44:54 2010 +0300 Use setProperty for otherProperties too in ChannelClassSpec ctors Gives us the streamedmedia vs call normalization TelepathyQt4/channel-class-spec.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) commit ea299fa6f32bc61ed7962d8af3e04fb6eb65efc1 Author: Olli Salli Date: Mon Oct 25 16:33:19 2010 +0300 Change the static ChannelClassSpec instance naming to be more consistent TelepathyQt4/channel-class-spec.cpp | 14 ++++++-------- TelepathyQt4/channel-class-spec.h | 12 ++++++------ 2 files changed, 12 insertions(+), 14 deletions(-) commit 8bad481bf56ab5ac9ea5bba3b043513904b61f88 Author: Olli Salli Date: Mon Oct 25 16:16:34 2010 +0300 Remove the misleading ChannelClassSpec comparison operators, we can't have a linear ordering for CCS TelepathyQt4/channel-class-spec.cpp | 4 ++-- TelepathyQt4/channel-class-spec.h | 21 +++------------------ 2 files changed, 5 insertions(+), 20 deletions(-) commit 1f81c1caa9881852faff1360a181778078d778a8 Author: Olli Salli Date: Mon Oct 25 13:52:07 2010 +0300 Add tentative ChannelClassSpec API TelepathyQt4/CMakeLists.txt | 4 + TelepathyQt4/ChannelClassSpec | 13 ++ TelepathyQt4/ChannelClassSpecList | 13 ++ TelepathyQt4/channel-class-spec.cpp | 350 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-class-spec.h | 220 +++++++++++++++++++++++ 5 files changed, 600 insertions(+) commit 8178430448e2bfaba04b1b28877d86f7a3e4e117 Author: Olli Salli Date: Sun Oct 10 23:23:19 2010 +0300 Start implementing ChannelFactory feature specification TelepathyQt4/channel-factory.cpp | 74 ++++++++++++++++++++++++++++++++++++++-- TelepathyQt4/channel-factory.h | 29 ++++++++++++++++ TelepathyQt4/channel.cpp | 3 ++ 3 files changed, 103 insertions(+), 3 deletions(-) commit dfcc1d05a474bcf941a7b5ceb4171e2b9d23adc9 Author: Olli Salli Date: Mon Nov 1 20:02:57 2010 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 6408d4518410f87431254f75b64db141e3b88056 Merge: a897ef6 3c51726 Author: Olli Salli Date: Mon Nov 1 19:55:38 2010 +0200 Merge branch 'fix-text-channel-legacy-introspection' Reviewed-by: Andre Magalhaes (andrunko) commit a897ef68830348bb44bea3df5d4aae159f97210c Merge: f1c6edf 7b35f36 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 15:37:04 2010 -0200 Merge branch 'sm-naming' Reviewed-by: Olli Salli (oggis) commit 7b35f36b9baab0cdab0679871b37b025decbec18 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 15:16:23 2010 -0200 ConnectionCapabilities: Also renamed conference media related methods to contain StreamedMedia in the name. TelepathyQt4/connection-capabilities.cpp | 11 ++++++----- TelepathyQt4/connection-capabilities.h | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) commit 5b17af5d3c2c9f49fc57bfbf437d3d8647c6c516 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 12:59:28 2010 -0200 Renamed methods related to StreamedMedia channels to contain StreamedMedia in the name. TelepathyQt4/account.cpp | 80 +++++++++++++++++++++++++++++++++--- TelepathyQt4/account.h | 41 +++++++++++++++--- TelepathyQt4/capabilities-base.cpp | 59 +++++++++++++------------- TelepathyQt4/capabilities-base.h | 10 ++--- tests/dbus/account-basics.cpp | 10 ++--- tests/dbus/cm-basics.cpp | 20 ++++----- tests/dbus/conn-capabilities.cpp | 30 +++++++------- tests/dbus/contacts-capabilities.cpp | 10 ++--- 8 files changed, 179 insertions(+), 81 deletions(-) commit f1c6edfb52bfd432eaf5b5e58015d3a6c0c21ed5 Merge: 7e13056 633666d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 11:17:01 2010 -0200 Merge branch 'TODO' Reviewed-by: Olli Salli (oggis) commit 7e13056c768f17c77f90c5686375162f3841191a Merge: 1a399c3 5090c32 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 11:16:49 2010 -0200 Merge branch 'caps-renaming' Reviewed-by: Olli Salli (oggis) commit 1a399c3c994abe0fe77b8191754a6e0a14011c52 Merge: b1db599 e7c9029 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 11:16:37 2010 -0200 Merge branch 'unexport-susockaddr-operators' Reviewed-by: Olli Salli (oggis) commit b1db599fbfc94d45eaacc254ec93fc0bb4a0ce15 Merge: dc0bd7a 518c93e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 11:16:15 2010 -0200 Merge branch 'examples-enable-deprecation-warns' Reviewed-by: Olli Salli (oggis) commit dc0bd7a1efdd0511190d64e3657bc1979f2b9d89 Merge: 11b5932 fdaff67 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 11:15:46 2010 -0200 Merge branch 'lib-enable-deprecation-warns' Reviewed-by: Olli Salli (oggis) commit fdaff67277cf4f61c79cb0935846f1c84636a607 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 1 11:14:00 2010 -0200 Use _deprecated_ instead of __deprecated_. TelepathyQt4/account-set.cpp | 8 ++++---- TelepathyQt4/account-set.h | 8 ++++---- TelepathyQt4/account.cpp | 2 +- TelepathyQt4/account.h | 4 ++-- tools/qt4-client-gen.py | 12 ++++++------ 5 files changed, 17 insertions(+), 17 deletions(-) commit 3c5172678cd80df3768a8261d0ba7271d132d995 Author: Olli Salli Date: Sat Oct 30 23:42:13 2010 +0300 TextChannel: Finish pre-Messages FeatureMessageQueue even if there are no initial messages TelepathyQt4/text-channel.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit e24edb22306b629f500b299e047332e8c411d4c2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 17:13:11 2010 -0200 Channel: Fixed typo in docs. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 518c93ebaf97708cc3e9e985c9aee9ca51499695 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 10:23:07 2010 -0200 Build examples with deprecation warnings enabled. examples/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) commit ebf93a4898eef0aa9a4bb0e744022b532595b0ec Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 10:22:51 2010 -0200 accounts example: Do not use deprecated methods. examples/accounts/account-item.cpp | 18 ++++++++---------- examples/accounts/account-item.h | 5 ++--- examples/accounts/accounts-window.cpp | 18 ++++++++++-------- examples/accounts/accounts-window.h | 2 +- 4 files changed, 21 insertions(+), 22 deletions(-) commit 5e42540dbe454ef4cccef48641f3f0d5a9adac5d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 10:22:02 2010 -0200 Removed call example. The example is bogus, not really exemplary and uses the old StreamedMediaChannel API that is full of deprecated methods. examples/CMakeLists.txt | 1 - examples/call/CMakeLists.txt | 37 --- examples/call/call-handler.cpp | 172 ------------- examples/call/call-handler.h | 59 ----- examples/call/call-roster-widget.cpp | 91 ------- examples/call/call-roster-widget.h | 61 ----- examples/call/call-widget.cpp | 483 ----------------------------------- examples/call/call-widget.h | 104 -------- examples/call/call-window.cpp | 171 ------------- examples/call/call-window.h | 67 ----- examples/call/farsight-channel.cpp | 308 ---------------------- examples/call/farsight-channel.h | 72 ------ examples/call/main.cpp | 39 --- examples/call/video-widget.cpp | 165 ------------ examples/call/video-widget.h | 56 ---- 15 files changed, 1886 deletions(-) commit 7da78c94dd402d048f6fa779d221d98559bbaf4f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 15:33:46 2010 -0200 StreamedMediaChannel: Un-deprecate all methods. It does not make sense to deprecate methods specific to one type of channel in SMChannel if the other type uses it. So let's un-deprecate everything now and split the class in 2 classes specific to each type of channel (Call, StreamedMedia) in 0.5.0. TelepathyQt4/streamed-media-channel.cpp | 88 +++++---------------------------- TelepathyQt4/streamed-media-channel.h | 41 ++++++--------- 2 files changed, 27 insertions(+), 102 deletions(-) commit 52388e3d12f7bc288f77ba40768564c5ed87c1ff Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 15:31:00 2010 -0200 AccountSet: Renamed deprecated methods starting with __ to start with __deprecated_. From the 2003 C++ Standard: Each name that contains a double underscore (__) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use. TelepathyQt4/account-set.cpp | 8 ++++---- TelepathyQt4/account-set.h | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit 3865870fad2471fb9c310048842c9bdbd92a32bd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 15:30:23 2010 -0200 Account: Renamed deprecated methods starting with __ to start with __deprecated_. From the 2003 C++ Standard: Each name that contains a double underscore (__) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use. TelepathyQt4/account.cpp | 2 +- TelepathyQt4/account.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 86c20a6befa16cdc8cbbe1249239535b59f7f8c2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 15:27:21 2010 -0200 qt4-client-gen.py: Renamed deprecated autogenerated methods starting with __ to start with __deprecated_. From the 2003 C++ Standard: Each name that contains a double underscore (__) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use. tools/qt4-client-gen.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit dd1af064669cfef41755d985eb7f8e81327ee40f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 14:48:23 2010 -0200 AccountManager: Un-deprecate create method taking bus as param. TelepathyQt4/account-manager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 633666daf2a038847104ccf6bc27add8996c56ce Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 13:37:39 2010 -0200 ContactCapabilities: Added API/ABI break comment. TelepathyQt4/contact-capabilities.h | 1 + 1 file changed, 1 insertion(+) commit ed8ad08e1856d70121f2550cf2f4a4af8d3f24e5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 13:37:22 2010 -0200 ConnectionCapabilities: Added API/ABI break comment. TelepathyQt4/connection-capabilities.h | 1 + 1 file changed, 1 insertion(+) commit e7c9029fcc29f86d6da9a2599c652fb19a303ce4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 13:33:56 2010 -0200 Do not export operators for SUSocketAddress. TelepathyQt4/types.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit aea6fe91b29ccd0bbd3c383a430c3d17e06ef5e2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 09:39:25 2010 -0200 AbstractInterface: Un-deprecate validity related accessors. TelepathyQt4/abstract-interface.cpp | 17 +---------------- TelepathyQt4/abstract-interface.h | 7 +++---- 2 files changed, 4 insertions(+), 20 deletions(-) commit 050e26165805434f9dba51a18f7cd92f4f8d438e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 22:26:48 2010 -0200 Properly build library with deprecation warnings enabled. Added more deprecated methods, removed some, added docs for all deprecated methods, ... TelepathyQt4/CMakeLists.txt | 4 +- TelepathyQt4/abstract-interface.cpp | 9 +++ TelepathyQt4/abstract-interface.h | 15 ++--- TelepathyQt4/account-manager.cpp | 41 +++++++++++--- TelepathyQt4/account-manager.h | 14 +++-- TelepathyQt4/account-set.cpp | 14 +++++ TelepathyQt4/account-set.h | 11 +++- TelepathyQt4/account.cpp | 87 ++++++++++++++++++++-------- TelepathyQt4/account.h | 17 ++++-- TelepathyQt4/channel-dispatch-operation.cpp | 39 ++++++++----- TelepathyQt4/channel-dispatch-operation.h | 2 +- TelepathyQt4/channel-factory.h | 2 +- TelepathyQt4/channel-request.cpp | 18 ++++-- TelepathyQt4/channel.cpp | 5 +- TelepathyQt4/client-registrar.cpp | 2 + TelepathyQt4/connection-manager.cpp | 3 +- TelepathyQt4/connection-manager.h | 3 + TelepathyQt4/connection.cpp | 20 +++++-- TelepathyQt4/connection.h | 10 ++-- TelepathyQt4/pending-channel-request.cpp | 13 ++++- TelepathyQt4/pending-connection.cpp | 9 ++- TelepathyQt4/streamed-media-channel.cpp | 88 +++++++++++++++++++++++++---- TelepathyQt4/streamed-media-channel.h | 11 ++++ tests/dbus/stateful-proxy.cpp | 5 -- 24 files changed, 330 insertions(+), 112 deletions(-) commit 77dfe02882075b0fd1b3b65346dd3f8260ae8f86 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 22:26:16 2010 -0200 qt4-client-gen.py: Properly deprecated interface property getters/setters. tools/qt4-client-gen.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) commit 11b5932565a92fa86d4d3f6e691281db45942e19 Author: Olli Salli Date: Fri Oct 29 16:28:52 2010 +0300 Update NEWS NEWS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 50559ec95f03a8d720ca113cd16e462f511d1702 Merge: 064bae9 5f5cba3 Author: Olli Salli Date: Fri Oct 29 16:23:13 2010 +0300 Merge branch 'fdo-31087' Reviewed-by: Andre Magalhaes (andrunko) commit 5f5cba3d4d70a8ec1b5cc75b9cea02e9287a42b4 Author: Olli Salli Date: Fri Oct 29 16:11:25 2010 +0300 Fix ChannelRequest immutable property extraction to not rely on undefined behavior TelepathyQt4/channel-request.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5090c32f4686b7ef79b913782254cc57d82a4cd8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 10:36:06 2010 -0200 CapabilitiesBase: Fixed typo in documentation where refering to upgradingCalls method. TelepathyQt4/capabilities-base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 57017e2366525bfcda9fb327332629a708139e8d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 19:29:07 2010 -0200 Updated tests to also test the non-deprecated capabilities methods. tests/dbus/account-basics.cpp | 10 ++++++++++ tests/dbus/cm-basics.cpp | 14 ++++++++++++++ tests/dbus/conn-capabilities.cpp | 22 +++++++++++++++++++++- tests/dbus/contacts-capabilities.cpp | 6 ++++++ 4 files changed, 51 insertions(+), 1 deletion(-) commit 4fbae7c51bd20d0cc60c53cec8b2f11642d269b2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 19:22:00 2010 -0200 ConnectionCapabilities: Split all conferenceXXX(withInitialInvitees) in 2 methods, conferenceXXX and conferenceXXXWithInvitees. TelepathyQt4/connection-capabilities.cpp | 160 +++++++++++++++++++++---------- TelepathyQt4/connection-capabilities.h | 9 +- 2 files changed, 118 insertions(+), 51 deletions(-) commit e00044a6a5b4ebb5ba98c3e43fa1a2343ee673b7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 19:06:35 2010 -0200 CapabilitiesBase: Split videoCalls(withAudio) in 2 methods, videoCalls and videoCallsWithAudio. TelepathyQt4/capabilities-base.cpp | 55 ++++++++++++++++++++++++++++++-------- TelepathyQt4/capabilities-base.h | 3 ++- 2 files changed, 46 insertions(+), 12 deletions(-) commit b466132a744d798c41b9d9aed8b0d781fc2e02f9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 18:54:26 2010 -0200 ContactCapabilities: Updated comment to properly name methods without supports prefix. TelepathyQt4/contact-capabilities.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c833bc0b86b0cc3709d677012056ec1f01103b9a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 18:54:03 2010 -0200 ConnectionCapabilities: Deprecate supportsXXX methods and provide XXX methods as alternative. TelepathyQt4/connection-capabilities.cpp | 70 ++++++++++++++++++++++++++++---- TelepathyQt4/connection-capabilities.h | 25 ++++++++---- 2 files changed, 80 insertions(+), 15 deletions(-) commit 5cd197710edce6c5dc31d296427f7e10b0c366d6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 18:53:13 2010 -0200 CapabilitiesBase: Deprecate supportsXXX methods and provide XXX methods as alternative. TelepathyQt4/capabilities-base.cpp | 69 +++++++++++++++++++++++++++++--------- TelepathyQt4/capabilities-base.h | 24 ++++++++----- 2 files changed, 69 insertions(+), 24 deletions(-) commit 064bae9a71d8231ac554860d3322038512c536d0 Merge: 9a5ab2a a080081 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 09:47:46 2010 -0200 Merge branch 'new-constants' Reviewed-by: Olli Salli (oggis) commit a08008146e93528679fb12570810db9407ea6103 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 29 09:46:59 2010 -0200 qt4-constants-gen.py: Improved docs for new macros expanding to QLatin1String. tools/qt4-constants-gen.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 78883759218488c6c51b43db3259b8dda944ce93 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 19:41:14 2010 -0200 Changed defines to have TP_QT4 as prefix and kept old params in qt4-constants-gen.py unmodified, adding a new define-prefix param. TelepathyQt4/CMakeLists.txt | 8 ++++---- tools/qt4-constants-gen.py | 45 +++++++++++++-------------------------------- 2 files changed, 17 insertions(+), 36 deletions(-) commit c9fe73b99d1612c0c1c6642a02d4a5233f4d46bc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 10:50:35 2010 -0200 Added new constants for iface and error names that define both a QLatin1String version and a char * version using the same prefix. TelepathyQt4/CMakeLists.txt | 6 +++-- tools/qt4-constants-gen.py | 63 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 5 deletions(-) commit 9a5ab2aa0c5f97605254d783a9f8d102c660af7d Merge: 45f5808 015ea4d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 19:57:20 2010 -0200 Merge branch 'cmake' Reviewed-by: Olli Salli (oggis) commit 015ea4d8b50ad712a9c0e498f74fa2a4065ed60a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 15:37:41 2010 -0200 cmake: Also depend on libqt4codegen.py when using qt4-{client/constants/types}-gen.py. cmake/modules/TpQt4Macros.cmake | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit 6f8a8ab61ec07cadfef818b45ed0e1ad90750470 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 15:22:47 2010 -0200 cmake: Fixed some dependency problems. cmake/modules/TpQt4Macros.cmake | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) commit 76cd81f1a18e86082d49ea6e40078ec49f003d1b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 27 15:22:13 2010 -0200 cmake: Added DEPRECATED_DECLARATIONS_FLAGS to be used to compile the library and examples. cmake/modules/TelepathyDefaults.cmake | 7 +++++++ 1 file changed, 7 insertions(+) commit 45f5808c70f06074da944f4658e8885f056da56f Author: Olli Salli Date: Mon Oct 25 15:49:45 2010 +0300 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 8e73093b636afb453db45a593ebc1e8113284151 Merge: 84b9246 fe15f9b Author: Olli Salli Date: Mon Oct 25 15:48:39 2010 +0300 Merge branch 'pending-ready-fixes' Reviewed-by: Andre Magalhaes (andrunko) commit 84b9246885c433b990e106d8bb0394440680bf84 Author: Olli Salli Date: Mon Oct 25 15:45:59 2010 +0300 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 90a2b759c19e0b47aada5fe8789a2c86e24cfb24 Merge: 9d72711 4f67673 Author: Olli Salli Date: Mon Oct 25 15:36:01 2010 +0300 Merge branch 'account-handling-fixes' Reviewed-by: Andre Magalhaes (andrunko) commit 4f67673936ab30c7aacb1e4d2388f31ea10ce687 Author: Olli Salli Date: Sun Oct 24 21:21:55 2010 +0300 AccountSet: Don't leave wrappers around when accounts are removed Otherwise they conflict if the account is readded and the AM decides to reuse the object path (which it can do according to the spec). TelepathyQt4/account-set.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 729e1092d910271b11ea1d609a8d1d42dc3956ed Author: Olli Salli Date: Sun Oct 24 20:43:29 2010 +0300 Make AccountManager more robust against unfortunate D-Bus event ordering when introspecting TelepathyQt4/account-manager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit fe15f9b542ae6159c809a19d762cf0053e373d31 Author: Olli Salli Date: Fri Oct 22 21:06:45 2010 +0300 Remove the half-implemented prepare() implementation in PendingReady to make the code cleaner This was also triggering some warnings from static code analysis tools, though in the end it seems they were false alarms after all. TelepathyQt4/pending-ready.cpp | 48 ++++++++++++++---------------------------- TelepathyQt4/pending-ready.h | 1 - 2 files changed, 16 insertions(+), 33 deletions(-) commit 680bdfdf60f7b8b779ebe3f24e0469392324688a Author: Olli Salli Date: Fri Oct 22 20:00:05 2010 +0300 Make TODO comments about unifying the two ways PendingReady is currently used TelepathyQt4/pending-ready.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 9d7271107eca796abd3e6a66ff44219b970d1135 Merge: 7356b53 2a470c1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 11:41:16 2010 -0200 Merge branch 'TODO' Reviewed-by: Olli Salli (oggis) commit 2a470c119688ff68d7a0ceb0fe26b7a168a3f11d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 11:40:41 2010 -0200 Capabilities: Added more API/ABI break comments. TelepathyQt4/capabilities-base.h | 1 + TelepathyQt4/connection-capabilities.h | 1 + 2 files changed, 2 insertions(+) commit 31afbffd90ccbe93f404f848b973ee0506f10d62 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 19 11:37:35 2010 -0200 AccountManager: Let's not rename filterAccount(QVariantMap). TelepathyQt4/account-manager.h | 1 - 1 file changed, 1 deletion(-) commit 26e9a7e4fc5d8bf3080ffc5ebcca7a97db9d8e06 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 14:06:31 2010 -0200 Account: Added more API/ABI break comments. TelepathyQt4/account.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit b84419aacf0eece0aa64e6569f83f77ecf868218 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 13:20:22 2010 -0200 AccountManager: Do not deprecate constructors if they can be used the same way after being removed (using new constructors with default params). TelepathyQt4/account-manager.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit d8fc71884029599c7e982638c4eca83c25b00ad5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 13:20:00 2010 -0200 Account: Do not deprecate constructors if they can be used the same way after being removed (using new constructors with default params). TelepathyQt4/account.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 98efebe5d46f7ac25e0cf5fa563ae4906eca812c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 13:14:54 2010 -0200 AbstractInterface: Properly deprecate slots and renamed parent in the constructor to proxy. TelepathyQt4/abstract-interface.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit f805660d11b1bbbea42f55baebed1be4891317c2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 13:09:22 2010 -0200 AbstractClient: Do not deprecate constructors if they can be used the same way after being removed (using new constructors with default params). TelepathyQt4/abstract-client.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1bbd66e2b97a2e042e4c11f3687bcbb60b175fb4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 6 02:26:07 2010 -0300 OptionalInterfaceFactory: Added TODO to hasInterface methods to make them const in the API break. TelepathyQt4/optional-interface-factory.h | 2 ++ 1 file changed, 2 insertions(+) commit e1fa6b3b6045cf88a17ee71614bbd49a1fb3bc0b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 20:02:23 2010 +0100 Update TODO. TODO | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 3c52d1e03f45d9548c4c7d394ab8a750411f15cb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 19:59:40 2010 +0100 ChannelDispatchOperation: Deprecate some methods. TelepathyQt4/channel-dispatch-operation.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 51477e650a8aeb9ee4804f0931f7ffc09bc6a9f4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 19:58:10 2010 +0100 CapabilitiesBase: Added API/ABI break comments. TelepathyQt4/capabilities-base.h | 1 + 1 file changed, 1 insertion(+) commit ee20fa7b0d8c598ccb286dbe6ee559e2e87083e5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 19:43:04 2010 +0100 Added TODO with general comments about improvements/fixes and API/ABI break. TODO | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit 4f138309128cd680f1b82314da5ce644e60a9b31 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 19:28:40 2010 +0100 AccountManager: Added API/ABI break comments and deprecated methods. TelepathyQt4/account-manager.h | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) commit bea8dbdd76839a16249219d8172215b09c0ad470 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 19:05:12 2010 +0100 Account: Added API/ABI break comments and deprecated methods. TelepathyQt4/account.h | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) commit d270cb872ccda55086fdd0d9222aee4a18c2ccbb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 18:25:02 2010 +0100 AbstractInterface: Added API/ABI break comments and deprecated methods. TelepathyQt4/abstract-interface.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 6ce2d07fcaed7699b3b6f8ebc092e1336b74d88f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 16 18:01:51 2010 +0100 AbstractClient*: Added API/ABI break comments and deprecated methods. TelepathyQt4/abstract-client.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) commit 7356b537150170688217dfdbadd8c9322eaa9458 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 14:31:57 2010 -0200 Update NEWS NEWS | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit fcd52efb228edb35e518ad4d204aa6fa88803b66 Merge: c5eb46e 268345f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 14:31:04 2010 -0200 Merge branch 'trivia' Reviewed-by: Olli Salli (oggis) commit c5eb46e266fea171c0a714ba78a8d101652b2105 Author: Olli Salli Date: Mon Oct 18 19:00:33 2010 +0300 Update NEWS NEWS | 7 +++++++ 1 file changed, 7 insertions(+) commit 1ea2640d73254d95b70c0cea59b2fd2b71510a5b Merge: cac37d7 b5bb673 Author: Olli Salli Date: Mon Oct 18 18:01:04 2010 +0300 Merge remote branch 'bari/external-type' Reviewed-by: Olli Salli (oggis) commit 268345f00f857632c13395de6fb5f7a75c173669 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 13:02:43 2010 -0200 ContactSearchChannel: Properly document signals. TelepathyQt4/contact-search-channel.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit cac37d72f7770db3acf741cd9900ed0614b2419f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 09:02:16 2010 -0200 Update NEWS. NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 70e9957ee66e927edea2e3b99a8a986adf8efea0 Merge: bca4e94 0e81174 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 18 09:01:39 2010 -0200 Merge remote branch 'gkiagia/compile-fixes' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 0e811745f04712af33827628c879f10ef21c5c75 Author: George Kiagiadakis Date: Sat Oct 16 15:47:06 2010 +0300 Require telepathy-glib 0.11.16 for Channel.Interface.Conference. CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 14a67846e3724d692a3d9afe4cea8fe943773d10 Author: George Kiagiadakis Date: Sat Oct 16 15:40:50 2010 +0300 Use guint instead of uint in glib code. Fixes compilation of the glib tests. tests/lib/glib/contact-search-chan.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit bca4e94046759ba6cd9261e4f378f12cba67b88f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 21:16:57 2010 -0300 Start 0.3.13 development CMakeLists.txt | 4 ++-- NEWS | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) commit 493cbc68c5b4c179074dadb1dc083ed7c90b487b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 20:58:44 2010 -0300 Prepare release 0.3.12 CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 37a934112b0e8556c1b39c816f37195660be177d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 20:56:26 2010 -0300 Update NEWS NEWS | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 0151d2a8960ecf9c47b734557b4cef0959445239 Merge: 1e8b3ff cc4a845 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 16:02:44 2010 -0300 Merge branch 'contact-search' Reviewed-by: Olli Salli (oggis) commit cc4a8459496634d32bbb797ebecd7d3b2105d55b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 15:56:49 2010 -0300 ContactSearchChannel: Added docs for signals. TelepathyQt4/contact-search-channel.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit 0657e68d0b4682f3f9806f4c7cc6107c7f754463 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 15:43:38 2010 -0300 chan-contact-search test: Test that the pending operation returned from search only finishes when the state changes. tests/dbus/chan-contact-search.cpp | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) commit e84a11f3203819ad0ef1e33aa3db6d8447d72b0c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 15:35:57 2010 -0300 ContactSearchChannel: Updated docs. TelepathyQt4/contact-search-channel.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit aeb5e2810c1183f94442c26c51db3d949be87c75 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 15:31:55 2010 -0300 ContactSearchChannel: Added overloaded search method to take a key and term to search. TelepathyQt4/contact-search-channel.cpp | 26 ++++++++++++++++++++++++++ TelepathyQt4/contact-search-channel.h | 3 ++- tests/dbus/chan-contact-search.cpp | 4 +--- 3 files changed, 29 insertions(+), 4 deletions(-) commit 2fb682daa3f5af330b31b122310f7fa238d3d0ae Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 15:19:07 2010 -0300 ContactSearchChannel: Return PendingOperation * in search and guarantees that it will return after the state changes. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/contact-search-channel-internal.h | 52 +++++++++++++++++++++ TelepathyQt4/contact-search-channel.cpp | 63 ++++++++++++++++++++++++-- TelepathyQt4/contact-search-channel.h | 4 +- 4 files changed, 115 insertions(+), 5 deletions(-) commit 6df0e832a515fe1944e7d48ec5d70e6b20af4410 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 14:37:59 2010 -0300 chan-contact-search test: Test when the search result is empty. tests/dbus/chan-contact-search.cpp | 126 ++++++++++++++++++++++++++++--------- 1 file changed, 98 insertions(+), 28 deletions(-) commit 7e88d31c522771aae4c77ed08a2875b646d376a7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 14:05:27 2010 -0300 chan-contact-search test: Make sure the state is correct when receiving the search result. tests/dbus/chan-contact-search.cpp | 1 + 1 file changed, 1 insertion(+) commit 4c6cb432d194e81756b78ea97db19f6f0b406cf8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 14:03:08 2010 -0300 ContactSearchChannel: Added a queue of signals to guarantee signal emission order. TelepathyQt4/contact-search-channel.cpp | 71 +++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 17 deletions(-) commit 1deaa5847e71a0fb34a6af2b282f8c4173253937 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 13:42:22 2010 -0300 Contact: Removed InfoFields::setAllFields method. TelepathyQt4/contact.cpp | 12 +----------- TelepathyQt4/contact.h | 5 ----- TelepathyQt4/pending-contact-info.cpp | 5 ++--- 3 files changed, 3 insertions(+), 19 deletions(-) commit 0ab8d9fe5cecb8e298646fd5e1a0ad366e4c22b3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 12:52:52 2010 -0300 contacts-info test: Test Contact::infoFields. tests/dbus/contacts-info.cpp | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) commit 0ba2b33f2c308ed2e4628509330362ede4ac3cb2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 12:52:03 2010 -0300 PendingContactInfo: Use Contact::InfoFields to represent contact info. TelepathyQt4/contact.h | 1 + TelepathyQt4/pending-contact-info.cpp | 27 +++++++++++++++++++++++---- TelepathyQt4/pending-contact-info.h | 3 ++- 3 files changed, 26 insertions(+), 5 deletions(-) commit 7447374c54c1476eb8ccaad26930024d5b5f637a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 12:44:05 2010 -0300 ContactSearchChannel: Use Contact::InfoFields instead of ContactInfoFieldList for search results map. TelepathyQt4/contact-search-channel.cpp | 2 +- TelepathyQt4/contact-search-channel.h | 2 +- tests/dbus/chan-contact-search.cpp | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) commit a82239b92d258f0c07b3dfed9d8ee04a2f7f6dcb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 15 12:40:53 2010 -0300 Contact: Added wrapper for ContactInfoFieldList. TelepathyQt4/contact.cpp | 113 ++++++++++++++++++++++++++++++++++++++++++----- TelepathyQt4/contact.h | 30 ++++++++++++- 2 files changed, 132 insertions(+), 11 deletions(-) commit 0ba98550f9d5e8f96b59c5ce316c9704af400ca2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 20:42:12 2010 -0300 chan-contact-search test: Added test for ContactSearchChannel. tests/dbus/CMakeLists.txt | 1 + tests/dbus/chan-contact-search.cpp | 276 +++++++++++++++++++++++++++++++++++++ 2 files changed, 277 insertions(+) commit 31bca40d271a963d559234dde05e46e506a14f90 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 20:41:26 2010 -0300 ContactSearchChannel: Fixed slot declaration by properly adding Tp namespace to PendingOperation. TelepathyQt4/contact-search-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fa3f3e9f4928bac39904eb45caa61626235ef93a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 18:55:37 2010 -0300 contact-search-chan test: Added test channel for ContactSearch iface. tests/lib/glib/CMakeLists.txt | 2 + tests/lib/glib/contact-search-chan.c | 708 +++++++++++++++++++++++++++++++++++ tests/lib/glib/contact-search-chan.h | 74 ++++ 3 files changed, 784 insertions(+) commit 5e5a1c42a04d44c1a26efe8085947ff8272fdc54 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 14:29:07 2010 -0300 ConnectionCapabilities: Added methods to check if ContactSearch channel is supported. TelepathyQt4/connection-capabilities.cpp | 60 ++++++++++++++++++++++++++++++++ TelepathyQt4/connection-capabilities.h | 4 +++ 2 files changed, 64 insertions(+) commit ae7f3db3258e5d2402bf73f16669e3b4b372333a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 13:59:17 2010 -0300 PendingOperation: Make PendingVoid delete the watcher after finished. TelepathyQt4/pending-operation.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 249bdcedf732575ee4bed490b69617ffb5f4f033 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 13:54:00 2010 -0300 ContactSearchChannel: Use PendingVoid for search/continueSearch/stopSearch so we don't leak the watchers. TelepathyQt4/contact-search-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 9cc891ae96b6798bbd4848272865f3b194636047 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 13:45:27 2010 -0300 ContactSearchChannel: Make the search/continueSearch/stopSearch methods return void. TelepathyQt4/contact-search-channel.cpp | 47 ++++++++++++++++++++------------- TelepathyQt4/contact-search-channel.h | 6 ++--- 2 files changed, 32 insertions(+), 21 deletions(-) commit 4ae10982345fcffacbf224c84931309028fa83c7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 13:27:35 2010 -0300 Account: Properly use and document the limit param when creating a contact search channel. TelepathyQt4/account.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit ee3abf180f03114a1a24fb829ce7a90965dc47eb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 13:26:33 2010 -0300 ContactSearchChannel: Properly declare searchStateChanged signal with namespace where appropriate. TelepathyQt4/contact-search-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 94f2ea406d0f08c846d1e943002f697b6654e197 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 13:22:40 2010 -0300 ContactSearchChannel: Added a wrapper from ContactPtr to contact info in the search results. TelepathyQt4/contact-search-channel.cpp | 70 +++++++++++++++++++++++++++++++-- TelepathyQt4/contact-search-channel.h | 5 ++- 2 files changed, 71 insertions(+), 4 deletions(-) commit aa1d56343bf36e434873bee384a3c4ed2f294e9c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 12:21:29 2010 -0300 ContactSearchChannel: Bind Search/More/Stop. TelepathyQt4/contact-search-channel.cpp | 70 +++++++++++++++++++++++++++++++++ TelepathyQt4/contact-search-channel.h | 6 +++ 2 files changed, 76 insertions(+) commit 5b3bc365a0890b16679c59921986f8cbb111d228 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 10:58:07 2010 -0300 ContactSearchChannel: Fixed copy/paste debug message. TelepathyQt4/contact-search-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 242e3e5cf6888a0bf449cee4cfeaccf53aca518f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 10:21:32 2010 -0300 ContactSearchChannel: Added accessors for properties. TelepathyQt4/contact-search-channel.cpp | 229 +++++++++++++++++++++++++++++++- TelepathyQt4/contact-search-channel.h | 40 ++++++ 2 files changed, 265 insertions(+), 4 deletions(-) commit 2f858b1baa105348d5df5d524ecc07413db3eeef Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 09:44:58 2010 -0300 ChannelFactory: Handle ContactSearch channels. TelepathyQt4/channel-factory.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 97ad03ec0062a66928b496e56f153f93b8923bc4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 09:40:15 2010 -0300 Account: Added createContactSearchChannel method. TelepathyQt4/account.cpp | 38 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 6 ++++++ 2 files changed, 44 insertions(+) commit 8f57ab795babe9a0dc47ea89809c26e182ec446f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 09:27:39 2010 -0300 ContactSearchChannel: Added skeleton class. TelepathyQt4/CMakeLists.txt | 4 + TelepathyQt4/ContactSearchChannel | 13 +++ TelepathyQt4/contact-search-channel.cpp | 139 ++++++++++++++++++++++++++++++++ TelepathyQt4/contact-search-channel.h | 59 ++++++++++++++ TelepathyQt4/types.h | 2 + 5 files changed, 217 insertions(+) commit 1e8b3ff9af352667cf604f182ac39a3cd1265579 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 08:39:29 2010 -0300 Updated NEWS. NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit 950f081e4dd85ab0553bf90cdf3ce162fd887bd6 Merge: e2aec29 e7821c6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 08:36:09 2010 -0300 Merge branch 'conference' Reviewed-by: Olli Salli (oggis) commit e7821c6a43b0354ccffccc8d496eb69fcd21d34f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 08:33:07 2010 -0300 Renamed conference test channels from Example to TpTests namespace. tests/dbus/chan-conference-draft.cpp | 8 +-- tests/dbus/chan-conference.cpp | 8 +-- tests/lib/glib/future/conference-draft/chan.c | 56 ++++++++++----------- tests/lib/glib/future/conference-draft/chan.h | 70 +++++++++++++-------------- tests/lib/glib/future/conference/chan.c | 56 ++++++++++----------- tests/lib/glib/future/conference/chan.h | 70 +++++++++++++-------------- 6 files changed, 134 insertions(+), 134 deletions(-) commit 858d4eb6d6267ce586fd26409c0d9cd6a4b279c7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 08:26:40 2010 -0300 conference tests: Check if channel removal updates Channel::conferenceChannels(). tests/dbus/chan-conference-draft.cpp | 8 ++++++++ tests/dbus/chan-conference.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) commit 39a5d22aaeda7d523d66dfa52233ebefa46c96bf Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 08:17:41 2010 -0300 chan-conference-draft test: Properly set name using g_set_prgname. tests/dbus/chan-conference-draft.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5adbbb0f71e1e3ef3f4f3a15bc8f0d75f123c851 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 08:16:16 2010 -0300 profile test: Updated to last changes in test-profile.profile. tests/profile.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit aafef0f4d6df9eb27ae492480d40ad0452e6c9f3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 03:05:04 2010 -0300 account-basics test: Added test for capabilities(). tests/dbus/CMakeLists.txt | 5 +- tests/dbus/account-basics.cpp | 213 +++++++++++++++++++++++++- tests/telepathy/profiles/test-profile.profile | 8 +- 3 files changed, 220 insertions(+), 6 deletions(-) commit 8bf583b49babead9414bfb9c067b623530b37d9a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 03:04:02 2010 -0300 account-manager example: Add option to set Connection and ConnectionStatus. tests/lib/python/account-manager.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit c0830d98e8d531cba655af0e61a65d22ae89dc0b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 03:02:01 2010 -0300 Account: Only warn if unable to create a profile in profile(). TelepathyQt4/account.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) commit 526bc2f56a8455453921f96882e7c4e9ee8abeed Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 01:08:13 2010 -0300 Do not leak memory in conference example cms if a channel is removed from the conference. tests/lib/glib/future/conference-draft/chan.c | 3 ++- tests/lib/glib/future/conference/chan.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit 256e00407d0961cf25f1917304daab1a6c509d13 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 01:06:07 2010 -0300 chan-conference test: Added test for Conference interface. tests/dbus/CMakeLists.txt | 1 + tests/dbus/chan-conference.cpp | 333 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 334 insertions(+) commit 9b2c65203ec48d1d20c6ded759ae52e7b2fd8928 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 01:05:23 2010 -0300 conference example cm: Added example cm to test Conference interface. tests/lib/glib/CMakeLists.txt | 1 + tests/lib/glib/future/CMakeLists.txt | 1 + tests/lib/glib/future/conference/CMakeLists.txt | 12 + tests/lib/glib/future/conference/chan.c | 663 ++++++++++++++++++++++++ tests/lib/glib/future/conference/chan.h | 80 +++ 5 files changed, 757 insertions(+) commit 351d425a1f35f20e3af3137bfc46771107d55a63 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 01:04:23 2010 -0300 chan-conference-draft test: Test conference channel removal and supportsNonMerges support. tests/dbus/chan-conference-draft.cpp | 43 ++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) commit 0533b30fa23a719b9788553494f8f0eef9314290 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 14 01:03:39 2010 -0300 conference-draft example cm: Added method to remove a channel from a conference. tests/lib/glib/future/conference-draft/chan.c | 18 ++++++++++++++++++ tests/lib/glib/future/conference-draft/chan.h | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) commit 7c6a1421927d0df08b9c8f03aebcf37b09e6695b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 20:12:56 2010 -0300 Channel: Updated conferenceOriginalChannels() documentation. TelepathyQt4/channel.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit 8ab4dc509ccff7210acb2862f193914d7d208f2a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 20:02:31 2010 -0300 Account: Updated capabilities() documentation. TelepathyQt4/account.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit f76d6bfbf7f4961f6e7da71a80da137010778dd2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 19:50:55 2010 -0300 ConnectionCapabilities: Updated documentation for methods to check conference support. TelepathyQt4/connection-capabilities.cpp | 39 ++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 12 deletions(-) commit 1b6ea73d944e3c7fc1be3c4c221b8e627136a590 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 19:29:47 2010 -0300 Channel: Use immutableProperties when creating conference channel objects, if available. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f30a2d0679873fd3f61ddc681d0c15ebba0ab031 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 19:28:21 2010 -0300 Renamed Conference.DRAFT related tests to include draft in the name as a preparation to include support for the non-draft version. tests/dbus/CMakeLists.txt | 2 +- tests/dbus/chan-conference-draft.cpp | 291 ++++++++++ tests/dbus/chan-conference.cpp | 291 ---------- tests/lib/glib/CMakeLists.txt | 2 +- tests/lib/glib/future/CMakeLists.txt | 2 +- .../glib/future/conference-draft/CMakeLists.txt | 12 + tests/lib/glib/future/conference-draft/chan.c | 628 +++++++++++++++++++++ tests/lib/glib/future/conference-draft/chan.h | 79 +++ tests/lib/glib/future/conference/CMakeLists.txt | 12 - tests/lib/glib/future/conference/chan.c | 628 --------------------- tests/lib/glib/future/conference/chan.h | 79 --- 11 files changed, 1013 insertions(+), 1013 deletions(-) commit 7b3c23a5fa3eb188019b713c50b9f5bef5e30c32 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 19:27:34 2010 -0300 Channel: Include ChannelFactory now that connection.h does not include it anymore. TelepathyQt4/channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 49e50f6ef2e9f4b7b4c335f1428671e30f241e4c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 02:40:40 2010 -0300 Account: Use Conference or Conference.DRAFT when requesting conference channelsas according to what is supported. Also fixed a bug where Conf.InitialInviteeHandles was being added to the request parameters as object paths instead of handles. TelepathyQt4/account.cpp | 189 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 130 insertions(+), 59 deletions(-) commit 1a337834a55ab9bc9dfceaee0959000682a31452 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 01:43:27 2010 -0300 Account: Make capabilities() use Profile::unsupportedRccs if any. Also make sure capabilitiesChanged is emitted if the profile changes and the caps is not using the connection caps. TelepathyQt4/account.cpp | 145 ++++++++++++++++++++++----------- TelepathyQt4/connection-capabilities.h | 1 + 2 files changed, 100 insertions(+), 46 deletions(-) commit 953364e6dcf3a494ffd790ac46bd4090b9008bf2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 00:40:50 2010 -0300 Channel: Build contact for conference channel removed actor. TelepathyQt4/channel.cpp | 102 ++++++++++++++++++++++++++++++++++++++++++----- TelepathyQt4/channel.h | 1 + 2 files changed, 92 insertions(+), 11 deletions(-) commit 404cbc868d04d407e8c7acc0fff0b2237b25605d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Oct 10 23:37:51 2010 -0300 Channel: Expose Conference.OriginalChannels as a map of handles to channel objects. TelepathyQt4/channel.cpp | 44 ++++++++++++++++++++++++++++++++++++++------ TelepathyQt4/channel.h | 1 + 2 files changed, 39 insertions(+), 6 deletions(-) commit 52be9b602a9877eda9d0ff935fe2b787882672d4 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Oct 10 23:37:27 2010 -0300 Channel: Use ChannelFactory when instantiating conference channels. TelepathyQt4/channel.cpp | 72 +++++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 29 deletions(-) commit 3029ddb0c41a1310deb6940ede68e8b14263360f Author: Andre Moreira Magalhaes (andrunko) Date: Sun Oct 10 23:36:35 2010 -0300 Channel: Fixed conference methods' documentation. TelepathyQt4/channel.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 167e380088eb7c7e2fe65660afa8f4504e0033a9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 00:44:37 2010 -0300 ConnectionCapabilities: Added methods to check if conference is supported. TelepathyQt4/connection-capabilities.cpp | 92 ++++++++++++++++++++++++++++++++ TelepathyQt4/connection-capabilities.h | 4 ++ 2 files changed, 96 insertions(+) commit f9f8de50b7041caa1c0b2e8c7c10c5d44124095d Author: Andre Moreira Magalhaes (andrunko) Date: Sun Oct 10 21:43:25 2010 -0300 Channel: Always return false in conferenceSupportsNonMerges if Conference interface is supported. TelepathyQt4/channel.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) commit b7fbe11614999952eb4050048857bf6c8fe08e6a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 6 02:24:59 2010 -0300 Account: Added TODO of what to do when creating conference channels now that we support both Conference and Conference.DRAFT. TelepathyQt4/account.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit f4c55bd5c69dd6838c89f606dc3ef9e088ba7e4f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 6 02:24:24 2010 -0300 Channel: Added support for Conference interface (keep support for Conference.DRAFT for now). TelepathyQt4/channel.cpp | 153 ++++++++++++++++++++++++++++++++++++++--------- TelepathyQt4/channel.h | 14 ++++- TelepathyQt4/channel.xml | 1 + 3 files changed, 140 insertions(+), 28 deletions(-) commit e2aec29d179abd56bb56ad8aa6a353e23682ab6c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 14:47:32 2010 -0300 Updated NEWS. NEWS | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) commit fe1ed8485cd48380c8eac21c6252e7c2a05f72c6 Merge: 49607cc b8502d4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 14:17:48 2010 -0300 Merge branch 'spec-0.21.1' Reviewed-by: Olli Salli (oggis) commit 49607cc5173336d93250d1b0efed8dae25112d22 Merge: dd2fc01 86ddb2b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 14:17:29 2010 -0300 Merge branch 'smchan-improvements' Reviewed-by: Olli Salli (oggis) commit b8502d4f7ceaeb0db84830a736b2b809c1568bd1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 13:49:36 2010 -0300 client test: Check if CR::immutableProperties is being set correctly when passing ObserverInfo::request-properties. tests/dbus/client.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) commit 86ddb2bac8d472833ea821f666c7af3efd801379 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 12:54:26 2010 -0300 StreamedMediaChannel: No need to fallback to Connection::selfHandle as Channel::groupSelfContact is always available. TelepathyQt4/streamed-media-channel.cpp | 57 +++++++++------------------------ 1 file changed, 16 insertions(+), 41 deletions(-) commit 2f61851e176546f0ed8286567b00f2442f32b2f4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 12:36:50 2010 -0300 client test: Test usage of ObserverInfo::request-properties. tests/dbus/client.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) commit c587bf4053dbf66593cb37cb44bd63b975efcc9b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 12:36:15 2010 -0300 ClientRegistrar: Make use of ObserverInfo::request-properties. TelepathyQt4/client-registrar.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) commit dd2fc013f9b900e9f1d1412a363d43e770d84d5d Merge: 76abe3f db0a8d4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 11:54:49 2010 -0300 Merge remote branch 'origin/conn-caps-doc-fix' Reviewed-by: Olli Salli (oggis) commit 76abe3f4b13b7bb018867f4e5d498ce8203cdbdf Merge: a49f5d0 6ed9a51 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 13 11:54:41 2010 -0300 Merge remote branch 'origin/am-undeprecate-acc-for-path' Reviewed-by: Olli Salli (oggis) commit 6ed9a51f2dd6354180fbe96611d665aaf20ec647 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 10:29:50 2010 -0300 AccountManager: Un-deprecate methods to get an account given a path. TelepathyQt4/account-manager.cpp | 12 ++++++++++++ TelepathyQt4/account-manager.h | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) commit b5bb67325e314dd7eba18afef55dd49096215efd Author: Marco Barisione Date: Mon Oct 11 11:46:30 2010 +0100 Don't ignore the namespace in libqt4codegen's binding_from_decl() Ignoring the namespace means that the codegen thinks the spec is broken when we use external types: the type "Foo" is expected to be provided, while the spec actually provides "Tp::Foo". tools/libqt4codegen.py | 6 +++++- tools/qt4-types-gen.py | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) commit 405e5898a4cdbd4caec9428a51da43b583c11e88 Author: Marco Barisione Date: Mon Oct 11 11:48:24 2010 +0100 libqt4codegen: get the Tp type of external types from the name attribute In the spec the Telepathy type is the value of the "name" attribute of "", but we were trying to use the non-existing "tp:type" attribute. Fixes: fd.o#30223 - telepathy-qt4's codegen doesn't deal with tp:external-type properly tools/libqt4codegen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5e05c5e061fc46aa4545d227facfe07cdb9e0906 Author: Will Thompson Date: Thu Sep 9 11:27:39 2010 +0100 Use an external type that is not mapped to a Qt type in the example Use Telepathy's CurrencyAmount in the ConnectionInterfaceHats example, thus breaking the compilation as the only external types that work at the moment are the ones that are mapped to Qt types (like contact handles that are mapped to uints). examples/extensions/Connection_Interface_Hats.xml | 27 +++++++++++++++++++++++ examples/extensions/all.xml | 2 ++ 2 files changed, 29 insertions(+) commit 234dfb1b3a9350829083a9ea941b938dba2fd5a2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 06:25:22 2010 -0300 StreamedMediaChannel: Improved test coverage. tests/dbus/streamed-media-chan-call.cpp | 223 +++++++++++++++++++++++++++++--- tests/dbus/streamed-media-chan.cpp | 10 ++ 2 files changed, 218 insertions(+), 15 deletions(-) commit 04a748588aec41fa09535976a220b79e60284dc3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 06:23:04 2010 -0300 future call channel: Added support for Content.Remove. tests/lib/glib/future/call/call-channel.c | 29 ++++++++++++++++++++++ tests/lib/glib/future/call/call-content.c | 41 +++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 2 deletions(-) commit fa732138d84a004c02cf4c3f64d2ea82949e9b6d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 06:22:25 2010 -0300 Channel: Fixed debug messages. TelepathyQt4/channel.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) commit ac45b1814f8ad6832e0565cbf6e3061a535c9e43 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 06:21:31 2010 -0300 StreamedMediaChannel: requestDirection when using Call should not change receive for self contact. TelepathyQt4/streamed-media-channel.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit c5be5b35950228e262532461027c185e4ef2c172 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 06:20:43 2010 -0300 StreamedMediaChannel: updateSMDirection don't need to change the current direction as send/receive are passed as params. TelepathyQt4/streamed-media-channel.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit a49f5d01d7e6340d7db18f998e1bc28955868f0c Author: Olli Salli Date: Sun Oct 10 23:36:56 2010 +0300 Don't make connection.h depend on ChannelFactory and ContactFactory Reviewed-by: Andre Magalhaes (andrunko) TelepathyQt4/connection.cpp | 2 ++ TelepathyQt4/connection.h | 2 -- tests/dbus/chan-basics.cpp | 2 ++ tests/dbus/chan-conference.cpp | 2 ++ tests/dbus/chan-group.cpp | 2 ++ tests/dbus/conn-basics.cpp | 2 ++ tests/dbus/conn-capabilities.cpp | 2 ++ tests/dbus/conn-requests.cpp | 2 ++ tests/dbus/conn-roster-groups.cpp | 2 ++ tests/dbus/conn-roster.cpp | 2 ++ tests/dbus/contacts-avatar.cpp | 2 ++ tests/dbus/contacts-capabilities.cpp | 3 +++ tests/dbus/contacts-info.cpp | 2 ++ tests/dbus/contacts-location.cpp | 2 ++ tests/dbus/contacts.cpp | 2 ++ tests/dbus/handles.cpp | 2 ++ tests/dbus/streamed-media-chan-call.cpp | 2 ++ tests/dbus/streamed-media-chan.cpp | 2 ++ tests/dbus/text-chan.cpp | 2 ++ 19 files changed, 37 insertions(+), 2 deletions(-) commit b767c147e04843b7556b617720152e19fcebe41a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 7 14:46:32 2010 -0300 StreamedMediaChannel: Fix fd.o#30386 - Regression: StreamedMediaChannel::streamAdded is not emitted when one requests a new stream using a StreamedMedia channel type. TelepathyQt4/streamed-media-channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 926311d88c674121123177782c1162e590c4ba30 Merge: 1ee56aa 57cb4bb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 03:34:44 2010 -0300 Merge branch 'factories' Reviewed-by: Olli Salli (oggis) commit 1ee56aa15be0e484496d7e3116208d00b4ebd3f5 Merge: a6a193d 9ed06fe Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 03:33:53 2010 -0300 Merge branch 'tp-qt4-farsight-install-fix' Reviewed-by: Olli Salli (oggis) commit a6a193d06204bd9f14137b76507fe2b096cc6a3a Merge: cf3c473 c71389b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 03:32:35 2010 -0300 Merge branch 'account-doc-fix' Reviewed-by: Olli Salli (oggis) commit e9d3b64f6833aaa67355cd871756386d8bb39037 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 03:28:08 2010 -0300 Added auto generated classes for new Conn.ClientTypes/ContactGroups/ContactList/PowerSaving and Chan.ServerTLSConnection. TelepathyQt4/CMakeLists.txt | 5 ++++ .../ChannelTypeServerTLSConnectionInterface | 13 ++++++++++ TelepathyQt4/ConnectionInterfaceClientTypes | 13 ++++++++++ TelepathyQt4/ConnectionInterfaceContactGroups | 13 ++++++++++ TelepathyQt4/ConnectionInterfaceContactList | 13 ++++++++++ TelepathyQt4/ConnectionInterfacePowerSaving | 13 ++++++++++ TelepathyQt4/channel.h | 6 +++++ TelepathyQt4/channel.xml | 1 + TelepathyQt4/connection.h | 30 +++++++++++++++++++--- TelepathyQt4/connection.xml | 4 +++ 10 files changed, 108 insertions(+), 3 deletions(-) commit db0a8d4bca3d150b896f55ba35925b6153e9def8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 11 00:44:45 2010 -0300 ConnectionCapabilities: Fix doc for supportsTextChatRooms. TelepathyQt4/connection-capabilities.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9ed06feed035eb8c99f568e9195cfb4842e9dd81 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 8 16:04:43 2010 -0300 Install TelepathyQt4/Farsight/global.h. TelepathyQt4/Farsight/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 79a914e7832d4086790fd20fe58630387310e864 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 6 00:25:08 2010 -0300 Update to spec 0.21.1 TelepathyQt4/channel.cpp | 9 +- TelepathyQt4/future-channel.xml | 2 +- spec/Account.xml | 31 +- spec/Account_Interface_Minimum_Presence.xml | 108 +++++ spec/Authentication_TLS_Certificate.xml | 195 ++++---- spec/Channel.xml | 11 +- spec/Channel_Dispatcher_Future.xml | 377 ++++++++++++++++ spec/Channel_Interface_Addressing.xml | 107 +++++ spec/Channel_Interface_Conference.xml | 491 ++++++++++++++------ spec/Channel_Interface_Conference_DRAFT.xml | 428 ++++++++++++++++++ spec/Channel_Interface_DTMF.xml | 9 + spec/Channel_Interface_Mergeable_Conference.xml | 6 +- spec/Channel_Interface_SMS.xml | 93 ++++ spec/Channel_Interface_Splittable.xml | 9 +- spec/Channel_Request_Future.xml | 98 ++++ spec/Channel_Type_Call.xml | 13 + spec/Channel_Type_Server_TLS_Connection.xml | 19 +- spec/Channel_Type_Streamed_Media.xml | 6 +- spec/Client_Handler.xml | 20 +- spec/Client_Handler_Future.xml | 4 +- spec/Client_Interface_Requests.xml | 4 +- spec/Client_Observer.xml | 11 +- spec/Connection.xml | 6 +- spec/Connection_Interface_Addressing.xml | 258 +++++++++++ spec/Connection_Interface_Cellular.xml | 53 ++- spec/Connection_Interface_Client_Types.xml | 47 +- spec/Connection_Interface_Communication_Policy.xml | 163 +++++++ spec/Connection_Interface_Contact_Groups.xml | 164 +++++-- spec/Connection_Interface_Contact_List.xml | 492 ++++++++++++++------- spec/Connection_Interface_Power_Saving.xml | 110 +++++ spec/Connection_Interface_Resources.xml | 212 +++++++++ spec/Connection_Interface_Simple_Presence.xml | 131 +++++- spec/Protocol.xml | 24 +- spec/Protocol_Interface_Addressing.xml | 300 +++++++++++++ spec/all.xml | 12 +- spec/errors.xml | 10 +- spec/generic-types.xml | 17 + tests/lib/glib/future/extensions/channel.xml | 2 +- 38 files changed, 3524 insertions(+), 528 deletions(-) commit c71389bb1224f89ef78cb8728700e43719574338 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 8 16:00:35 2010 -0300 Account: Fixed documentation for create and constructor methods. TelepathyQt4/account.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 57cb4bbbf0a4330d6f64b24c4588e4e7b55cbf3d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 8 15:58:24 2010 -0300 Make all tests use the non-deprecated Connection::create methods that takes factories as params. tests/dbus/chan-basics.cpp | 4 +++- tests/dbus/chan-conference.cpp | 4 +++- tests/dbus/chan-group.cpp | 4 +++- tests/dbus/client.cpp | 4 +++- tests/dbus/conn-basics.cpp | 4 +++- tests/dbus/conn-capabilities.cpp | 4 +++- tests/dbus/conn-requests.cpp | 4 +++- tests/dbus/conn-roster-groups.cpp | 8 ++++++-- tests/dbus/conn-roster.cpp | 4 +++- tests/dbus/contacts-avatar.cpp | 4 +++- tests/dbus/contacts-capabilities.cpp | 4 +++- tests/dbus/contacts-info.cpp | 4 +++- tests/dbus/contacts-location.cpp | 4 +++- tests/dbus/contacts.cpp | 8 ++++++-- tests/dbus/handles.cpp | 4 +++- tests/dbus/streamed-media-chan-call.cpp | 4 +++- tests/dbus/streamed-media-chan.cpp | 4 +++- tests/dbus/text-chan.cpp | 4 +++- 18 files changed, 60 insertions(+), 20 deletions(-) commit 53b1c2c731efae776f9a5bd7c2bc114e810d6fe5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 8 15:33:26 2010 -0300 Connection: Added constructors/accessors for using Factories. TelepathyQt4/connection-factory.cpp | 3 +- TelepathyQt4/connection.cpp | 134 ++++++++++++++++++++++++++++++++++-- TelepathyQt4/connection.h | 24 ++++++- 3 files changed, 153 insertions(+), 8 deletions(-) commit 7f5de6fc8aa71c37073d0fbbb5271aefd9d0e7c0 Author: Will Thompson Date: Tue Sep 7 14:28:21 2010 +0100 qt4-types-gen: improve broken spec error reporting. This is partly just me being a bit OCD, but it makes the error output way easier to read. Previously, if the generator hit (for instance) an undefined type, it'd spit out: GEN _gen/types-body.hpp Traceback (most recent call last): File "../../../tools/qt4-types-gen.py", line 490, in Generator(dict(options))() File "../../../tools/qt4-types-gen.py", line 171, in __call__ self.provide_all() File "../../../tools/qt4-types-gen.py", line 312, in provide_all assert not self.required_custom, 'These required types were not provided by the spec: ' + ', '.join(self.required_custom) AssertionError: These required types were not provided by the spec: CurrencyAmount But now it produces: GEN _gen/types.h Your spec is broken, dear developer! The following types were used, but not provided by the spec or by declarations in all.xml: CurrencyAmount A more informative error, and 100% less backtrace cruft. Of course, it'd be better if we could report the locations where the unknown types were used, but that seems to be non-trivial. tools/qt4-types-gen.py | 80 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 9 deletions(-) commit cf3c473a72596dcc29527da0dfebf7b5cbffd79c Merge: fa5c91e 2587734 Author: Dario Freddi Date: Wed Oct 6 18:00:54 2010 +0200 Merge branch 'update-xml-files' Reviewed-by: Andre Magalhaes (andrunko) commit 25877348f4fd4371cef07d3468125982b99f0169 Author: Dario Freddi Date: Wed Oct 6 17:06:07 2010 +0200 Have all the macros affecting spec files depend on them cmake/modules/TpQt4Macros.cmake | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) commit fa5c91e60438fc2808315dfaa598d798f61603af Author: Olli Salli Date: Mon Oct 4 21:27:25 2010 +0300 Start 0.3.12 development CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7c95738d866df0ad9ce1a9df94a034de3a5a98ae Author: Olli Salli Date: Mon Oct 4 21:15:13 2010 +0300 Prepare release 0.3.11 CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a7daf452a6f2ac8e155f500308460f6f432db92b Author: Olli Salli Date: Mon Oct 4 21:01:11 2010 +0300 Update NEWS NEWS | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) commit c4f4170667a08879038965c4977556e6f0d7f4de Merge: b4d7176 2b3c4c8 Author: Olli Salli Date: Mon Oct 4 20:33:09 2010 +0300 Merge branch 'cr-enhancements' Reviewed-by: Andre Magalhaes (andrunko) commit 2b3c4c87bdc74c13647c6d2b9b8be217803a301f Author: Olli Salli Date: Fri Oct 1 22:58:28 2010 +0300 Test ChannelRequest::immutableProperties() tests/dbus/client-factories.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit 69d29f5670631397887a0226b2d9dd1c7ac1efd8 Author: Olli Salli Date: Fri Oct 1 22:21:24 2010 +0300 Add accessor for all immutable properties passed to ChannelRequest TelepathyQt4/channel-request.cpp | 37 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-request.h | 5 ++--- 2 files changed, 39 insertions(+), 3 deletions(-) commit 2351f04aa57162cdfbbf7d560c4c64674cab7b5f Author: Olli Salli Date: Fri Oct 1 22:14:23 2010 +0300 Doxyment that ChannelRequest immutable accessors are usable before it's ready TelepathyQt4/channel-request.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) commit 15fe8226b537e3387cb464a593cc5c2180273f8f Author: Olli Salli Date: Fri Oct 1 22:10:34 2010 +0300 Make ChannelRequest getters for immutable properties usable right after it's created TelepathyQt4/channel-request.cpp | 74 ++++++++++++++++++++++++++++------------ tests/dbus/client-factories.cpp | 12 +++++-- 2 files changed, 62 insertions(+), 24 deletions(-) commit b4d7176e8c8062fa9a159e4e395741dfc3f21755 Merge: 1faeb2f 6884c8f Author: Olli Salli Date: Fri Oct 1 19:50:49 2010 +0300 Merge branch 'optimize' Reviewed-by: Andre Magalhaes (andrunko) commit 6884c8fdd6ce21417efa95763e362590a335226e Author: Olli Salli Date: Fri Oct 1 19:49:45 2010 +0300 Avoid creating a Features set for every ReadyObject::isReady() call TelepathyQt4/ready-object.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 4d6d7a6f8dc590de6bb979d25dc8bd9cd4bf7509 Author: Olli Salli Date: Fri Oct 1 19:49:15 2010 +0300 Change the optimization QString constants naming to kneelingCamel TelepathyQt4/channel.cpp | 102 +++++++++++++++++++------------------- TelepathyQt4/readiness-helper.cpp | 6 +-- 2 files changed, 54 insertions(+), 54 deletions(-) commit a9b90df3e53d289e41c29dbb929de904da022e88 Author: Olli Salli Date: Fri Oct 1 18:21:24 2010 +0300 Optimization: Create less redundant temporary QSets in ReadinessHelper Cuts down the number of Feature sets created eg. when running TestStreamedMediaChannel five-fold. TelepathyQt4/readiness-helper.cpp | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) commit 1faeb2fd6320337c05063b255f284e05125b5efe Merge: 3447faa 37d03c5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 1 12:07:40 2010 -0300 Merge branch 'test-conn-roster-fix' Reviewed-by: Olli Salli (oggis) commit 500960beacdd3f33e087ca5ce2afeeb9980ff679 Author: Olli Salli Date: Mon Sep 20 15:40:01 2010 +0300 Weed out useless QString constructions/latin1 conversions for common constant uses TelepathyQt4/channel.cpp | 111 +++++++++++++++++++++++++------------- TelepathyQt4/readiness-helper.cpp | 6 ++- 2 files changed, 79 insertions(+), 38 deletions(-) commit 3447faa63a8a28552582795479d6d47786ed2c9d Merge: fa007df c255066 Author: Olli Salli Date: Fri Oct 1 18:04:11 2010 +0300 Merge branch 'unbreak-makecheck' Reviewed-by: Andre Magalhaes (andrunko) commit 37d03c53000968e4bda3552702b19cc7304bd6f8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 1 12:02:36 2010 -0300 conn-roster test: Fixed race condition when checking if the user authorized presence publication. tests/dbus/conn-roster.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c2550668bbd3bd0986a77eec1d22a522daeb3a63 Author: Olli Salli Date: Fri Oct 1 18:02:12 2010 +0300 Un-break regular make check again :O cmake/modules/TpQt4Macros.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fa007df42582de727f87eb77ccdfd6b385c011de Merge: fa2d3be d3bf4aa Author: Olli Salli Date: Fri Oct 1 17:54:00 2010 +0300 Merge branch 'cmake-fixes' Reviewed-by: Andre Magalhaes (andrunko) commit d3bf4aad5ff0b451915104bbd118d85bea0f213e Merge: 5225ada 10c7463 Author: Olli Salli Date: Fri Oct 1 17:52:25 2010 +0300 Merge remote branch 'drf/fix-cmake-soversion-target' into cmake-fixes Reviewed-by: Olli Salli (oggis) commit 5225ada3a3c9b9b4fca59002eface260b12de626 Author: Olli Salli Date: Fri Oct 1 17:39:04 2010 +0300 Install pretty header ProtocolParameter instead of Parameter, which doesn't exist TelepathyQt4/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f726518059fa6801433f44212d41fba37ef8d4b0 Author: Olli Salli Date: Fri Oct 1 17:35:03 2010 +0300 Actually check for memory errors/slowness in *tpqt4/the test*, not /bin/sh This was totally ridiculous...! cmake/modules/TpQt4Macros.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 7c2bcc8f3aa78333429ec801c5964e2ffc3571ca Author: Olli Salli Date: Fri Oct 1 17:03:09 2010 +0300 Make the valgrind/callgrind output/log files have more useful names cmake/modules/TpQt4Macros.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit bb97eee877638161d1ae9535bf097ad8f53ebf54 Author: Olli Salli Date: Fri Oct 1 17:02:02 2010 +0300 Sanitize .gitignore now that we exclusively do out-of-tree builds with CMake .gitignore | 62 -------------------------------------------------------------- 1 file changed, 62 deletions(-) commit fa2d3bef6951b736007a15b591fab90e21ae5090 Merge: f277950 3e0cc5a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 1 09:48:35 2010 -0300 Merge branch 'profiles' Reviewed-by: Olli Salli (oggis) commit 3e0cc5abd6cba5864f21850384fdc38ea68c77d7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 15:33:53 2010 -0300 account-basics test: Added test to check if profile changes when service name changes. tests/dbus/account-basics.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) commit 4005e5f832e949921cdd2c9d3e080c0108f4b548 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 15:11:20 2010 -0300 Account: Emit iconName and profile change notifications if needed when the profile changes. TelepathyQt4/account.cpp | 50 +++++++++++++++++++++++++++++++++++-------- TelepathyQt4/account.h | 3 ++- tests/dbus/account-basics.cpp | 2 +- 3 files changed, 44 insertions(+), 11 deletions(-) commit 11e418bddaf909665d3f10995fba6e289c9d88a5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 15:10:31 2010 -0300 profile test: Added test to check when icon and provider are not provided in the .profile file. tests/profile.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit dd04f9253df7ed06aebd3b09552db80afc75d432 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 14:26:14 2010 -0300 Profile: Make "service" icon and provider attributes optional. TelepathyQt4/profile.cpp | 8 +++++--- tests/dbus/profile-manager.cpp | 8 ++++---- .../telepathy/profiles/test-profile-no-icon-and-provider.profile | 7 +++++++ 3 files changed, 16 insertions(+), 7 deletions(-) commit a328f67e965b52d82ebb4362d2df8337d9a060df Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 14:25:18 2010 -0300 Account: Use profile icon for iconName() if needed and updated docs accordingly. TelepathyQt4/account.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) commit df4e9682f5897af946fac469fbaf4a1ad5e38861 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 14:01:03 2010 -0300 ProfileManager: Check if CM became ready before using it while creating fake profiles. TelepathyQt4/profile-manager.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 0ef2851b13b1437f2f0712a16db2497289580d10 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 14:00:12 2010 -0300 Account: Improve documentation for Account::profile regarding fake profiles. TelepathyQt4/account.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4e2b5133bbe0dc80879964b3b049e97d15abf1d5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 30 13:59:59 2010 -0300 ProfileManager: Improve documentation about FeatureFakeProfiles. TelepathyQt4/profile-manager.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) commit f2779500989f488dd6f242298247f215040adc65 Merge: e786087 fada5b1 Author: Dario Freddi Date: Thu Sep 30 15:30:22 2010 +0200 Merge branch 'cmake-fixes' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit fada5b13b365849f94833eb67e6a5ddf97b40ed8 Author: Dario Freddi Date: Thu Sep 30 15:25:12 2010 +0200 Have make lcov-check build all the dependencies (hence all the tests) before running cmake/modules/TpQt4Macros.cmake | 3 +++ tests/CMakeLists.txt | 13 +++++++++++++ tools/CMakeLists.txt | 13 ------------- 3 files changed, 16 insertions(+), 13 deletions(-) commit 30527da909edc0a4eb9e1a86abe2d9f2abe75b92 Author: Dario Freddi Date: Thu Sep 30 15:14:08 2010 +0200 Fix typo: do not set the CXX flags to the linker flags TelepathyQt4/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6707977628752447d6df9d6573a0f6f573140d5b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 29 12:15:57 2010 -0300 Moved ManagerFile/KeyFile specific functions to the classes itself. TelepathyQt4/connection-manager.cpp | 3 +- TelepathyQt4/key-file.cpp | 83 +++++++++++++++++++ TelepathyQt4/key-file.h | 5 ++ TelepathyQt4/manager-file.cpp | 53 +++++++++++- TelepathyQt4/manager-file.h | 6 +- TelepathyQt4/profile.cpp | 11 +-- TelepathyQt4/utils.cpp | 160 ------------------------------------ TelepathyQt4/utils.h | 13 --- 8 files changed, 148 insertions(+), 186 deletions(-) commit a3ea87b6465bce13324e5ab6576ba1a55d870db5 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 29 11:56:01 2010 -0300 Account: Construct fake profiles service name the same way as done by ProfileManager. TelepathyQt4/account.cpp | 4 ++-- tests/dbus/account-basics.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) commit 2ff02befd4f4ead39df414c7a9504992ad02faec Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 29 11:55:37 2010 -0300 ProfileManager: Added support to create fake profiles. TelepathyQt4/profile-manager.cpp | 109 ++++++++++++++++++++++++++++++++++++--- TelepathyQt4/profile-manager.h | 16 ++++-- tests/CMakeLists.txt | 1 - tests/dbus/CMakeLists.txt | 2 + tests/dbus/profile-manager.cpp | 83 +++++++++++++++++++++++++++++ tests/profile-manager.cpp | 40 -------------- 6 files changed, 199 insertions(+), 52 deletions(-) commit 278dfd8bdf442a6ed86c7ae0bf40b58f9fc4d3e2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 29 11:53:30 2010 -0300 PendingComposite: Added option to not fail when first pending operation fails. TelepathyQt4/pending-operation.cpp | 42 +++++++++++++++++++++++++++----- TelepathyQt4/simple-pending-operations.h | 2 ++ 2 files changed, 38 insertions(+), 6 deletions(-) commit f846117d1f26a294e95dfddc1a5e33a826fe2c73 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 29 10:28:04 2010 -0300 ProfileManager: Make ProfileManager a ReadyObject as a preparation to support creating fake profiles. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/profile-manager.cpp | 47 +++++++++++++++++++++++++++++++++------- TelepathyQt4/profile-manager.h | 8 ++++++- tests/profile-manager.cpp | 11 +++++++++- 4 files changed, 57 insertions(+), 10 deletions(-) commit 9fc23c0a4d96b2d5e534801b5b3ea8f9b92138e7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 29 10:24:47 2010 -0300 Profile: Changed parsing to support new format as agreed in fd.o#24897 comment #7. Additionally it also makes "icon" an attribute of "service", to be consistent with . TelepathyQt4/profile.cpp | 59 ++++++++++------------ .../test-profile-invalid-service-id.profile | 16 +++--- .../profiles/test-profile-malformed.profile | 4 +- .../profiles/test-profile-non-im-type.profile | 15 +++--- tests/telepathy/profiles/test-profile.profile | 15 +++--- 5 files changed, 51 insertions(+), 58 deletions(-) commit 14443c9643e1095e093701b2437a3ce17b5fa74a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 16:25:53 2010 -0300 profile test: Removed duplicated test. tests/profile.cpp | 3 --- 1 file changed, 3 deletions(-) commit 258c007345f9ed637f24637d0de4aa52e98fc11d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 16:21:29 2010 -0300 ProfileManager: Ignore profiles with type != IM. TelepathyQt4/profile-manager.cpp | 6 ++++++ tests/profile-manager.cpp | 1 + 2 files changed, 7 insertions(+) commit 7f1b9ed9e92713154b06cc357a8cb07702dd0268 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 16:21:16 2010 -0300 Profile: Don't fail if type != IM when using createForFileName. TelepathyQt4/profile.cpp | 15 +++++++++++---- tests/profile.cpp | 13 ++++++++++++- .../telepathy/profiles/test-profile-invalid-type.profile | 10 ---------- tests/telepathy/profiles/test-profile-non-im-type.profile | 10 ++++++++++ 4 files changed, 33 insertions(+), 15 deletions(-) commit f23a70bb60675b07a7999aaeeefc08212f29af30 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 11:41:32 2010 -0300 Profile: Ignore elements with type != IM. TelepathyQt4/profile.cpp | 11 ++++++++++- tests/profile.cpp | 3 +++ tests/telepathy/profiles/test-profile-invalid-type.profile | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) commit 4f400c4ef61a7e9ee11cccfbb34be936e8cc4ee3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 01:33:54 2010 -0300 Profile: Added docs. TelepathyQt4/profile.cpp | 211 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) commit 74007703ac1f9877163f6c8892398bc01c32a017 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 01:01:45 2010 -0300 acount-basics test: Added tests for Account profile support. tests/dbus/account-basics.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit 0a0c0eb41bdc58df074abd23f63c5a5c7cc0b8f4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:49:46 2010 -0300 Profile: Don't fail parsing for unknown elements, just warn about them. TelepathyQt4/profile.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) commit 3d378dc6ad3f7448e896d68c0b91149359325ae2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:37:29 2010 -0300 Account: Updated profile method documentation with info about fake profiles. TelepathyQt4/account.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 360877e5b3fc099d0e8a47458cf4aa2d61be0d4c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:37:14 2010 -0300 Profile: Renamed allowOthersPresences to allowOtherPresences. TelepathyQt4/profile.cpp | 17 ++++++++--------- TelepathyQt4/profile.h | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) commit 69aafc9d8a0b0b4830f6814830499361ef28630d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:28:17 2010 -0300 Account: Added fake profiles support. Added FeatureProfile that for now is the same as FeatureProtocolInfo, but represented as a new feature, so it can be changed later in case new info other than the ones provided by FeatureProtocolInfo is needed. TelepathyQt4/account.cpp | 24 +++++++++++++++++------- TelepathyQt4/account.h | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) commit 0c61cdd84bcbc1db25b4060313cba46c1b214fac Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:23:34 2010 -0300 Profile: Added isFake method to indicate whether this is a fake profile. TelepathyQt4/profile.cpp | 11 ++++++++++- TelepathyQt4/profile.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) commit 6cda83d1005bbb605c24695c08423205846fbaa6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:21:45 2010 -0300 Profile: Added new constructor used to create fake profiles. TelepathyQt4/profile.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/profile.h | 5 +++++ 2 files changed, 63 insertions(+) commit b04d0e13cbed2f7eb60294485f7c268367cdbdf9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 00:21:10 2010 -0300 Added missing ProtocolInfo/Parameter fancy headers. TelepathyQt4/CMakeLists.txt | 2 ++ TelepathyQt4/ProtocolInfo | 13 +++++++++++++ TelepathyQt4/ProtocolParameter | 13 +++++++++++++ 3 files changed, 28 insertions(+) commit 53fcd1fb8db31e4df963c6dfcb34690dff755a49 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 23:26:35 2010 -0300 Profile: Renamed create(serviceName) to createForServiceName and added createForFileName. TelepathyQt4/account.cpp | 2 +- TelepathyQt4/profile-manager.cpp | 9 ++-- TelepathyQt4/profile.cpp | 108 ++++++++++++++++++++++----------------- TelepathyQt4/profile.h | 5 +- tests/profile.cpp | 8 +-- 5 files changed, 72 insertions(+), 60 deletions(-) commit f4e431d8054e2538124c4f4e699e48549169412d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 05:07:29 2010 -0300 profile-manager test: Added ProfileManager test. tests/CMakeLists.txt | 1 + tests/profile-manager.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) commit 29b0d1ace1ffdd4b132bfb4922cb89f67fc703d1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 04:49:45 2010 -0300 ProfileManager: Added class to manage Profile objects (create objects for each profile file found). This class is useful for UIs that want to know what profiles are installed. It also contains some helper methods to filter profiles by CM, service and protocol. TelepathyQt4/CMakeLists.txt | 3 + TelepathyQt4/ProfileManager | 13 +++ TelepathyQt4/profile-manager.cpp | 176 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/profile-manager.h | 61 ++++++++++++++ TelepathyQt4/profile.cpp | 82 +++++++++++++----- TelepathyQt4/profile.h | 7 ++ TelepathyQt4/types.h | 2 + 7 files changed, 325 insertions(+), 19 deletions(-) commit 3239aceef94583ed7da4ff0ed3aad88a4918c1ec Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 04:35:00 2010 -0300 profile test: Added test for isValid(). tests/profile.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 8dba76639623431556640796e77c2bfd509476dd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 04:34:40 2010 -0300 Added more profile test files to test invalid profiles. .../test-profile-invalid-service-id.profile | 33 ++++++++++++++++++++++ .../profiles/test-profile-malformed.profile | 4 +++ 2 files changed, 37 insertions(+) commit 8ce546847030be157d02010d254ccb0fe0b8bc78 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 04:29:10 2010 -0300 profile test: Added test for unsupported-channel-classes. tests/profile.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 13fc7b46147200adb91d98a09bb820bbed4d59cc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 04:17:51 2010 -0300 profile test: Added test for presences. tests/profile.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit 7cf9a347060cc611dc48d382ec58f96d2ed6a172 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 04:01:37 2010 -0300 profile test: Added test for parameters. tests/profile.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit 8c902e9a9cb52227580a5d916c6fb46fd6310a19 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 03:59:23 2010 -0300 Profile: Added hasPresence method. TelepathyQt4/profile.cpp | 10 ++++++++++ TelepathyQt4/profile.h | 1 + 2 files changed, 11 insertions(+) commit 919718efcad5bdc150b6a4dfe1ffab0b720c375e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 03:58:40 2010 -0300 Profile: Added hasParameter method. TelepathyQt4/profile.cpp | 10 ++++++++++ TelepathyQt4/profile.h | 1 + 2 files changed, 11 insertions(+) commit cd7f514b5475d68a07a4761ad068657b5e026cae Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 03:32:22 2010 -0300 Profile: Added presence method to get a presence by id. TelepathyQt4/profile.cpp | 10 ++++++++++ TelepathyQt4/profile.h | 1 + 2 files changed, 11 insertions(+) commit 71c929bb1aae82fd7519aec1ca9e401237e3378d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 03:32:03 2010 -0300 Profile: Added parameter method to get a parameter by name. TelepathyQt4/profile.cpp | 10 ++++++++++ TelepathyQt4/profile.h | 1 + 2 files changed, 11 insertions(+) commit c81e8e27c19b48e4e4b20c9ffb633d7cbc04e063 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 03:24:06 2010 -0300 .gitignore: Added all tests/test-* to gitignore. .gitignore | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit ffa6c878179d8b3df27e87632147335b36dc8cd0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 03:23:38 2010 -0300 profile test: Added basic profile test. tests/CMakeLists.txt | 1 + tests/profile.cpp | 29 +++++++++++++++++++++++ tests/telepathy/profiles/test-profile.profile | 33 +++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) commit 0248a24e8f47796768f996738aae2088baefb4c8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:45:57 2010 -0300 Account: Initial profile support. TelepathyQt4/account.cpp | 28 ++++++++++++++++++++++++++++ TelepathyQt4/account.h | 3 +++ 2 files changed, 31 insertions(+) commit a69cc49df1681b5fdc2dc3b1a7480788860d013f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:45:36 2010 -0300 Profile: Make it a SharedPtr object. TelepathyQt4/profile.cpp | 13 +++++++++++++ TelepathyQt4/profile.h | 7 +++++-- TelepathyQt4/types.h | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) commit 39aa5eb41c3a8ab9a91cc8cf2191779d9eb344c0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:33:46 2010 -0300 Profile: Implemented parsing. TelepathyQt4/profile.cpp | 697 ++++++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/profile.h | 86 +++++- 2 files changed, 769 insertions(+), 14 deletions(-) commit eff4fcfce2eefc2b200570c797c7622d002e2504 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 18 02:26:27 2010 -0300 Profile: Added skeleton class used to read .profile files. TelepathyQt4/CMakeLists.txt | 3 ++ TelepathyQt4/Profile | 13 ++++++ TelepathyQt4/profile.cpp | 102 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/profile.h | 68 +++++++++++++++++++++++++++++ 4 files changed, 186 insertions(+) commit 565b33d085b92d36c90714671a0bac7b4bc1d843 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 12:40:43 2010 -0300 utils: Renamed methods to get QVariant type and value. Renamed variantTypeFromDBusSignature to variantTypeForSignature and variantFromValueWithDBusSignature to parseValueWithSignature. TelepathyQt4/utils.h | 1 - 1 file changed, 1 deletion(-) commit 66013ad7450f311882c2ec2b0af67afe3f2e7be8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:28:24 2010 -0300 Added utils.h containing some utility functions that will be used by Profiles. The methods are copied from ManagerFile/KeyFile with slightly modifications. TelepathyQt4/utils.h | 1 + 1 file changed, 1 insertion(+) commit 4dfca8f1173b96afa1710f23b4f3708cf00375fb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 20 11:24:35 2010 -0300 ManagerFile: Fixed Private::valueForKey. Use the raw value when parsing value as string list. TelepathyQt4/manager-file.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e450b725fddeec3b6e87e6e267500d169fc83bc0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 12:40:43 2010 -0300 utils: Renamed methods to get QVariant type and value. Renamed variantTypeFromDBusSignature to variantTypeForSignature and variantFromValueWithDBusSignature to parseValueWithSignature. TelepathyQt4/connection-manager.cpp | 2 +- TelepathyQt4/manager-file.cpp | 2 +- TelepathyQt4/utils.cpp | 6 +++--- TelepathyQt4/utils.h | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) commit e76fff54cd84a55e50635421993376c30328a29d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 12:36:52 2010 -0300 utils: Coding style fixes. TelepathyQt4/utils.cpp | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) commit a5d9ffc0eae06126ce748b86487df77bdc5ea728 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:33:13 2010 -0300 ConnectionManager: Use method export in utils.h in favor of deprecated one. TelepathyQt4/connection-manager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6b9eb4bcfebde29808bd76c918dab21e8f1c3f39 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:31:25 2010 -0300 ManagerFile: Deprecate method used to return a QVariant from a value+dbus signature, which is now exported in utils.h. TelepathyQt4/manager-file.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 72879d1d079e79f722007774f6ec6235ccc25648 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:31:04 2010 -0300 ManagerFile: Use methods now exported in utils.h. TelepathyQt4/manager-file.cpp | 65 +++++-------------------------------------- 1 file changed, 7 insertions(+), 58 deletions(-) commit 1d8574971328494b25b5755e6ffd1645d0fc96a9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:30:11 2010 -0300 KeyFile: Remove methods now exported in utils.h. TelepathyQt4/key-file.cpp | 95 ++--------------------------------------------- 1 file changed, 4 insertions(+), 91 deletions(-) commit 3765fe1fbc140d6fcb91945911b6c63a38b64579 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 19 02:28:24 2010 -0300 Added utils.h containing some utility functions that will be used by Profiles. The methods are copied from ManagerFile/KeyFile with slightly modifications. TelepathyQt4/utils.cpp | 166 +++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/utils.h | 18 +++++- 2 files changed, 182 insertions(+), 2 deletions(-) commit 10c746302708432e59280f6b1a01b2b38d07d70a Author: Dario Freddi Date: Tue Sep 21 19:13:19 2010 +0200 cmake: Add two new variables, tp_qt4_abi_version and tp_qt4_library_version for handling correctly library versioning. Differently from libtool, we're no longer bound to AGE/CURRENT/REVISION, so the full version is used for the VERSION property of the library. As suggested by Simon, a .99 has been added as the second version number for differentiating it from the autotools build. This is meant to be removed as soon as the abi_version increases. CMakeLists.txt | 23 ++++++++++++----------- TelepathyQt4/CMakeLists.txt | 4 ++-- TelepathyQt4/Farsight/CMakeLists.txt | 4 ++-- 3 files changed, 16 insertions(+), 15 deletions(-) commit e7860872745f96115edcf0c8f1165ef8ca82f684 Author: Dario Freddi Date: Mon Sep 20 17:18:50 2010 +0200 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit e148fb0b0e6b86eb53e2bd5321928d7a16ccd994 Merge: 02882fa 68c64c2 Author: Dario Freddi Date: Mon Sep 20 17:13:49 2010 +0200 Merge branch 'cmake' Reviewed-by: Olli Salli (oggis) Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 68c64c281796ee0c6e5fbc2253b60bfcc6aeeb8f Author: Dario Freddi Date: Mon Sep 20 16:35:55 2010 +0200 cmake: Removing the autotools build system files Makefile.am | 42 -- TelepathyQt4/Farsight/Makefile.am | 39 -- TelepathyQt4/Makefile.am | 659 --------------------------- autogen.sh | 37 -- configure.ac | 328 ------------- doxygen.am | 186 -------- examples/Makefile.am | 6 - examples/accounts/Makefile.am | 40 -- examples/call/Makefile.am | 58 --- examples/extensions/Makefile.am | 114 ----- examples/file-transfer/Makefile.am | 53 --- examples/protocols/Makefile.am | 40 -- examples/roster/Makefile.am | 57 --- m4/Makefile.am | 6 - m4/compiler.m4 | 72 --- m4/doxygen.m4 | 312 ------------- m4/linker.m4 | 83 ---- m4/tp-compiler-flag.m4 | 36 -- m4/tp-compiler-warnings.m4 | 40 -- m4/tp-visibility-hidden.m4 | 55 --- spec/Makefile.am | 1 - tests/Makefile.am | 94 ---- tests/dbus/Makefile.am | 215 --------- tests/lib/Makefile.am | 35 -- tests/lib/glib/Makefile.am | 59 --- tests/lib/glib/callable/Makefile.am | 48 -- tests/lib/glib/contactlist/Makefile.am | 46 -- tests/lib/glib/csh/Makefile.am | 47 -- tests/lib/glib/echo/Makefile.am | 44 -- tests/lib/glib/echo2/Makefile.am | 46 -- tests/lib/glib/future/Makefile.am | 1 - tests/lib/glib/future/call/Makefile.am | 51 --- tests/lib/glib/future/conference/Makefile.am | 16 - tests/lib/glib/future/extensions/Makefile.am | 104 ----- tests/lib/python/Makefile.am | 2 - tools/Makefile.am | 64 --- tools/check-coding-style.mk | 12 - tools/lcov.am | 21 - tools/telepathy-qt4.mk | 4 - tools/telepathy.am | 27 -- tools/valgrind.mk | 11 - 41 files changed, 3211 deletions(-) commit e91b4bd2e2e093da412e2d4295d202aec5319b0b Author: Dario Freddi Date: Mon Sep 20 13:24:56 2010 +0200 cmake: Set the correct version properties and so numbers for the exported libraries TelepathyQt4/CMakeLists.txt | 6 ++++++ TelepathyQt4/Farsight/CMakeLists.txt | 5 +++++ 2 files changed, 11 insertions(+) commit 03d85e5dab6f49a8c29652cbfd1808f0a5a27e50 Author: Dario Freddi Date: Mon Sep 20 13:24:33 2010 +0200 cmake: Add the correct linker flags for profiling cmake/modules/TelepathyDefaults.cmake | 3 +++ 1 file changed, 3 insertions(+) commit d1dfeef553f48d16e5fc6cff8490f878d416e998 Author: Dario Freddi Date: Mon Sep 20 13:11:18 2010 +0200 cmake: Add documentation for the new _tpqt4_add_check_targets() internal macro cmake/modules/TpQt4Macros.cmake | 7 +++++++ 1 file changed, 7 insertions(+) commit 57c86add6c3c09b4bf97192ca1a3b57c949673ed Author: Dario Freddi Date: Mon Sep 20 13:06:34 2010 +0200 cmake: Add a new set of check- targets through a new internal macro. Currently the following execution methods are supported: - Normal execution (make check-$testname for running a single test, make check for running all tests) - Execution through Valgrind (make check-valgrind-$testname for running a single test, make check-valgrind for running all tests) - Execution through Callgrind (make check-callgrind-$testname for running a single test, make check-callgrind for running all tests) Upon Andre's suggestion, Valgrind and Callgrind tests behave slightly differently: instead of printing Valgrind's output to the terminal, they save it into a log file in the test's binary directory. cmake/modules/TpQt4Macros.cmake | 52 +++++++++++++++++++++++++++++++++++++++++ tests/CMakeLists.txt | 4 ++++ 2 files changed, 56 insertions(+) commit f9638dc8ad31d944847b685f3b18a40f7cb18e70 Author: Dario Freddi Date: Mon Sep 20 11:55:52 2010 +0200 cmake: Remove commented lines which set the generated property to files: they are definitely not needed cmake/modules/TpQt4Macros.cmake | 12 ------------ 1 file changed, 12 deletions(-) commit 986586c112301e385b54001f6961308addaa9358 Author: Dario Freddi Date: Mon Sep 20 11:55:17 2010 +0200 cmake: Vastly improve documentation of the macros, which also includes keeping up with the new macros design cmake/modules/TpQt4Macros.cmake | 48 +++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 19 deletions(-) commit 117d3b38edfac6e299b9224b6fa0fae38acc5b42 Author: Dario Freddi Date: Mon Sep 20 11:54:29 2010 +0200 cmake: Make the client generator macros more consistent with the rest of the library. They are also more powerful now. TelepathyQt4/CMakeLists.txt | 30 +++++++++++++++--------------- cmake/modules/TpQt4Macros.cmake | 33 ++++++++++++++++++--------------- 2 files changed, 33 insertions(+), 30 deletions(-) commit 11b1a4c909a6c9888e55b99842e607c1c5268eb8 Author: Dario Freddi Date: Sun Sep 19 21:05:00 2010 +0200 cmake: Have the macro generate real targets to let compilations with a lot of batch jobs succeed TelepathyQt4/CMakeLists.txt | 60 +++++++++++++++++---------------- cmake/modules/TpQt4Macros.cmake | 69 ++++++++++++++++++++------------------ examples/extensions/CMakeLists.txt | 20 ++++++----- 3 files changed, 79 insertions(+), 70 deletions(-) commit aefa7623b47182d1b214a8fcb01206d31bc3dd08 Author: Dario Freddi Date: Sun Sep 19 17:02:09 2010 +0200 cmake: Improve documentation of tpqt4's functions/macros cmake/modules/TpQt4Macros.cmake | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) commit 0268d18954301bac9a1ac0c3ee6eb4400eff8189 Author: Dario Freddi Date: Sun Sep 19 16:40:58 2010 +0200 cmake: Set the c/cxx flags to more sensible values for our build profiles cmake/modules/TelepathyDefaults.cmake | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) commit 6a0080e175fdddb53d32cd26b3c7ddfd88d544c3 Author: Dario Freddi Date: Sun Sep 19 16:40:24 2010 +0200 cmake: Make ENABLE_DEBUG optional, and have QT_NO_CAST_FROM_ASCII be defined for all platforms CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) commit 716aa376967f77e7793411b53ff9f1a6716609c1 Author: Dario Freddi Date: Sun Sep 19 00:05:33 2010 +0200 cmake: Fix the pc files by adding the cmake install prefix TelepathyQt4/TelepathyQt4.pc.in | 8 ++++---- TelepathyQt4/TelepathyQt4Farsight.pc.in | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit bfb2f90cab316a7dd4fe1cc4fedba2a228030b8a Author: Dario Freddi Date: Sat Sep 18 20:28:16 2010 +0200 cmake: Fix wording: s/test cases/unit tests CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit b5d02e75e978899f5a66d0a0a9f61c08d0f238e2 Author: Dario Freddi Date: Sat Sep 18 20:27:52 2010 +0200 cmake: Add documentation to cmake_policy CMakeLists.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) commit a7dad3b4108f74900dbb9f4640793569efc84014 Author: Dario Freddi Date: Sat Sep 18 19:57:53 2010 +0200 cmake: Add QT_NO_KEYWORDS to code which might conflict with glib's signals definitions TelepathyQt4/Farsight/CMakeLists.txt | 2 +- examples/call/CMakeLists.txt | 1 + tests/dbus/CMakeLists.txt | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) commit e1c0abda35d843e2ffb8fe0923f33105e373431b Author: Dario Freddi Date: Sat Sep 18 13:48:23 2010 +0200 cmake: Some random fixes to messages, fix the version generation, and add some goodies to the maintainer check target CMakeLists.txt | 13 +++++++++---- cmake/modules/FindPythonLibrary.cmake | 1 - tools/CMakeLists.txt | 8 +++++--- 3 files changed, 14 insertions(+), 8 deletions(-) commit fe4c4fc8c639d32a989a667405629e122cb1a026 Author: Dario Freddi Date: Sat Sep 18 13:16:16 2010 +0200 cmake: Have the check target depend on all tests. For doing this, turn the add test functions to macros, and move the check target to the tests/dbus dir cmake/modules/TpQt4Macros.cmake | 32 +++++++++++++++++--------------- tests/CMakeLists.txt | 5 ----- tests/dbus/CMakeLists.txt | 6 ++++++ 3 files changed, 23 insertions(+), 20 deletions(-) commit 8d88a8224535726c1cf6939e4d87823c24509ae1 Author: Dario Freddi Date: Sat Sep 18 11:03:10 2010 +0200 cmake: Fix some stuff in default flags, and create a real check target which does what we want cmake/modules/TelepathyDefaults.cmake | 4 ++-- cmake/modules/TelepathyDist.cmake | 3 --- tests/CMakeLists.txt | 5 +++++ 3 files changed, 7 insertions(+), 5 deletions(-) commit 9cb2e552622d252fd896990dee0a7442e128dca6 Author: Dario Freddi Date: Fri Sep 17 18:23:22 2010 +0200 cmake: Small fix to tools, add comments to various targets, and add an ENABLE_CPACK switch cmake/modules/TelepathyDist.cmake | 146 ++++++++++++++++++++------------------ tools/CMakeLists.txt | 18 ++--- 2 files changed, 87 insertions(+), 77 deletions(-) commit 4bcd3608ee42aaa0201d0d31e7d914b77a7adad4 Author: Dario Freddi Date: Fri Sep 17 18:21:16 2010 +0200 cmake: Add lcov compiler coverage through a new variable, ENABLE_COMPILER_COVERAGE, turned off by default TelepathyQt4/CMakeLists.txt | 15 ++++++++++++--- TelepathyQt4/Farsight/CMakeLists.txt | 6 +++++- cmake/modules/TelepathyDefaults.cmake | 26 ++++++++++++++++++++++++++ tests/CMakeLists.txt | 4 +++- tools/CMakeLists.txt | 13 +++++++++++++ 5 files changed, 59 insertions(+), 5 deletions(-) commit 6e251913f247394bab7b9f2b63016519d56e6de2 Author: Dario Freddi Date: Fri Sep 17 17:42:36 2010 +0200 cmake: Sync with master TelepathyQt4/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 42f3095547e5627689692c428c80fadb37e65ba7 Author: Dario Freddi Date: Fri Sep 17 15:58:31 2010 +0200 cmake: Implement distcheck correctly, and fix a pair of bugs spotted through it cmake/modules/TelepathyDist.cmake | 16 ++++++---------- tools/CMakeLists.txt | 15 ++++++++++----- 2 files changed, 16 insertions(+), 15 deletions(-) commit 4377ca88b15bf60a34c2079563824dbe46af31f4 Author: Dario Freddi Date: Thu Sep 16 22:37:38 2010 +0200 cmake: Make make dist behave like autotools' make dist, and port all the tools target to CMake as well CMakeLists.txt | 1 + cmake/modules/TelepathyDist.cmake | 32 ++++++++++-- tools/CMakeLists.txt | 100 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 3 deletions(-) commit 0fd26a8297caa6134d70771b719c15cc5c531ab6 Author: Dario Freddi Date: Thu Sep 16 22:01:20 2010 +0200 cmake: Update tests tests/dbus/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) commit 5e5043a93aba9c5551475cb938453b476345ccdc Author: Dario Freddi Date: Thu Sep 16 02:47:56 2010 +0200 cmake: Refactor and fix some macros to make them more cmake-ish, add tpqt4_ prefix to EVERY macro, and document decently all the macros and the hot paths of the buildsystem CMakeLists.txt | 12 ++- TelepathyQt4/CMakeLists.txt | 48 +++++---- TelepathyQt4/Farsight/CMakeLists.txt | 5 + cmake/modules/TpQt4Macros.cmake | 183 ++++++++++++++++++++++++++++------- examples/extensions/CMakeLists.txt | 4 +- tests/dbus/CMakeLists.txt | 7 +- tests/lib/CMakeLists.txt | 2 +- 7 files changed, 196 insertions(+), 65 deletions(-) commit ff262e8bcbfbc7f8237841d4015108ad0c549141 Author: Dario Freddi Date: Wed Sep 15 21:47:16 2010 +0200 cmake: Big revamp. Standardized TpQt4 macros with tpqt4_ prefix, added some new macros to clean up the code, and moved all the macros to a separate file. Now the whole buildsystem looks extremely clean. CMakeLists.txt | 54 +-------- TelepathyQt4/CMakeLists.txt | 208 +++++++------------------------- cmake/modules/TpQt4Macros.cmake | 215 ++++++++++++++++++++++++++++++++++ examples/accounts/CMakeLists.txt | 9 +- examples/call/CMakeLists.txt | 9 +- examples/extensions/CMakeLists.txt | 39 ++---- examples/file-transfer/CMakeLists.txt | 18 +-- examples/protocols/CMakeLists.txt | 9 +- examples/roster/CMakeLists.txt | 9 +- tests/CMakeLists.txt | 10 +- tests/dbus/CMakeLists.txt | 47 ++++---- tests/lib/glib/CMakeLists.txt | 21 ---- 12 files changed, 302 insertions(+), 346 deletions(-) commit 5c3743d6aaea0fdf0a5a2b6cd7b15f82085b5273 Author: Dario Freddi Date: Wed Sep 15 20:02:41 2010 +0200 cmake: Squash test generators into a function tests/lib/glib/CMakeLists.txt | 22 ++++++++++++++++++++++ tests/lib/glib/callable/CMakeLists.txt | 11 +---------- tests/lib/glib/contactlist/CMakeLists.txt | 11 +---------- tests/lib/glib/csh/CMakeLists.txt | 11 +---------- tests/lib/glib/echo/CMakeLists.txt | 11 +---------- tests/lib/glib/echo2/CMakeLists.txt | 11 +---------- tests/lib/glib/future/call/CMakeLists.txt | 11 +---------- 7 files changed, 28 insertions(+), 60 deletions(-) commit b4a16fb72cb2e8b78e4a74054d38d1303805ead1 Author: Dario Freddi Date: Wed Sep 15 19:15:31 2010 +0200 cmake: Upgrade CMake policy CMP0011 to NEW, given that the old behavior is not required (anymore). Also, while I'm at it, move it to the proper location. CMakeLists.txt | 4 ++++ cmake/modules/TelepathyDefaults.cmake | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) commit bed32823e83901833b5804e197fc8266c5faf579 Author: Dario Freddi Date: Wed Sep 15 19:03:58 2010 +0200 cmake: Add CPack support, so that binary and source packages can be instantly built. While I was at it, I also removed the hardcoding of CMAKE_INSTALL_PREFIX in the install paths. It is not required and it's harmful for CPack. CMakeLists.txt | 2 ++ TelepathyQt4/CMakeLists.txt | 17 ++++++--- TelepathyQt4/Farsight/CMakeLists.txt | 12 +++++-- cmake/modules/TelepathyDefaults.cmake | 8 ++--- cmake/modules/TelepathyDist.cmake | 67 +++++++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 12 deletions(-) commit df527cf42b64b917fd3ec5b75deaa8db875ab1f8 Author: Dario Freddi Date: Wed Sep 15 18:13:23 2010 +0200 cmake: Rush for making the cmake branch track 1:1 with the master branch. It is now ready to be merged. CMakeLists.txt | 28 ++++++++++++++++++++++- TelepathyQt4/CMakeLists.txt | 42 +++++++++++++++++++++++++++++------ TelepathyQt4/Farsight/CMakeLists.txt | 4 ++++ cmake/modules/TelepathyDefaults.cmake | 6 +++++ config.h.in | 1 + tests/lib/glib/csh/CMakeLists.txt | 10 +++++++++ tests/lib/glib/echo/CMakeLists.txt | 15 ++++++++++++- tests/lib/glib/echo2/CMakeLists.txt | 14 +++++++++++- 8 files changed, 110 insertions(+), 10 deletions(-) commit 795691082691bbac0b9d2d85e4ab7078caf9fced Author: Dario Freddi Date: Sat Aug 14 14:27:30 2010 +0200 cmake: Fix FindTelepathyGlib.cmake by letting it fail correctly if the version is < than the specified one. cmake/modules/FindTelepathyGlib.cmake | 41 ++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 18 deletions(-) commit b9a15279c4c25632824824747706d5a9c5b14823 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 13:17:30 2010 -0300 TEMPORARY, STILL WORKING ON IT. CMakeLists.txt | 6 +++--- TelepathyQt4/CMakeLists.txt | 20 +++++++++++++++++++- tests/lib/glib/CMakeLists.txt | 18 +++++++++++++++++- tests/lib/glib/csh/CMakeLists.txt | 2 ++ tests/lib/glib/echo2/CMakeLists.txt | 2 ++ 5 files changed, 43 insertions(+), 5 deletions(-) commit cb784ab9b678695ebba1451044d2096bfa03c6be Author: Dario Freddi Date: Wed May 19 17:35:49 2010 +0200 Fix GObject detection, and use a better FindGLIB2.cmake CMakeLists.txt | 9 ++--- cmake/modules/FindGLIB2.cmake | 27 +++++++-------- cmake/modules/FindGObject.cmake | 75 +++++++++++++++++++++++++++++++++++++++++ tests/lib/glib/CMakeLists.txt | 1 + 4 files changed, 93 insertions(+), 19 deletions(-) commit 98d54f12842db001c090aaf880f26855197484f8 Author: Dario Freddi Date: Fri Apr 16 21:30:06 2010 +0200 Do a big cleanup of useless include_directory() directives: CMake automatically cascades include directories down to every subdirectory, so it's not needed to include a directory which has already been included in a top-level CMakeLists.txt file. CMakeLists.txt | 4 ++++ TelepathyQt4/CMakeLists.txt | 4 ---- TelepathyQt4/Farsight/CMakeLists.txt | 5 +---- examples/accounts/CMakeLists.txt | 5 ----- examples/call/CMakeLists.txt | 3 --- examples/extensions/CMakeLists.txt | 5 ----- examples/file-transfer/CMakeLists.txt | 5 ----- examples/protocols/CMakeLists.txt | 5 ----- examples/roster/CMakeLists.txt | 5 ----- tests/CMakeLists.txt | 5 ----- tests/dbus/CMakeLists.txt | 4 ---- tests/lib/CMakeLists.txt | 5 +---- tests/lib/glib/CMakeLists.txt | 2 -- tests/lib/glib/callable/CMakeLists.txt | 4 ---- tests/lib/glib/contactlist/CMakeLists.txt | 4 ---- tests/lib/glib/csh/CMakeLists.txt | 4 ---- tests/lib/glib/echo/CMakeLists.txt | 4 ---- tests/lib/glib/echo2/CMakeLists.txt | 4 ---- tests/lib/glib/future/call/CMakeLists.txt | 4 +--- tests/lib/glib/future/conference/CMakeLists.txt | 4 +--- tests/lib/glib/future/extensions/CMakeLists.txt | 4 ---- 21 files changed, 8 insertions(+), 81 deletions(-) commit ab524b4a940bc30d8163ab31bcaaf8cb84895f8b Author: Dario Freddi Date: Fri Apr 16 21:21:06 2010 +0200 Use macro_log_feature to display in a nice way all additional features instead of relying on custom messages CMakeLists.txt | 33 +++++--- cmake/modules/MacroLogFeature.cmake | 146 ++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 10 deletions(-) commit 2d325bea46aba04487d86c30499fc26580b03091 Author: Dario Freddi Date: Fri Apr 16 20:55:08 2010 +0200 Avoid using PkgConfig directly - in CMake this is never a good idea as the whole buildsystem is supposed to work also on systems which have no pkgconfig installed. Move the relevant stuff to some Find*.cmake file, add some, and change the relevant link/include dirs to make everything build correctly just like before. CMakeLists.txt | 37 +++++++++----- TelepathyQt4/CMakeLists.txt | 4 +- TelepathyQt4/Farsight/CMakeLists.txt | 13 +++-- cmake/modules/FindDBus.cmake | 72 ++++++++++++++++++++++++++++ cmake/modules/FindGLIB2.cmake | 55 +++++++++++++++++++++ cmake/modules/FindGStreamer.cmake | 80 +++++++++++++++++++++++++++++++ cmake/modules/FindLibXml2.cmake | 57 ++++++++++++++++++++++ cmake/modules/FindTelepathyFarsight.cmake | 49 +++++++++++++++++++ cmake/modules/FindTelepathyGlib.cmake | 49 +++++++++++++++++++ examples/call/CMakeLists.txt | 11 +++-- tests/dbus/CMakeLists.txt | 4 +- tests/lib/glib/CMakeLists.txt | 6 ++- 12 files changed, 411 insertions(+), 26 deletions(-) commit 51450c871e1d295d3472680b4ddf18a162e4d48f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 23 16:19:28 2010 -0300 cmake: Updated version CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3558285563b650ac349e8bb0f942401e2f65b19b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 22 11:43:42 2010 -0300 cmake: Updated to latest upstream changes. TelepathyQt4/CMakeLists.txt | 7 +++++-- tests/dbus/CMakeLists.txt | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) commit a039ff376b17c011d4bea3dcb480f4fdd52d0816 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 7 10:31:06 2010 -0300 cmake: Make D-Bus specific tests proper use custom session.conf. tests/dbus/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 360789bc69794a8e10dfb26016668b695c67eac4 Author: Dario Freddi Date: Wed Apr 7 00:35:47 2010 +0200 After a painful run, finally make tp-qt4 build with make -j>1. Now all targets are handled nicely and the dependencies successfully cascade one another, so it should be also decently future proof. CMakeLists.txt | 43 +++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/CMakeLists.txt | 42 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 77 insertions(+), 8 deletions(-) commit de03f735ec96172588aafc9b892ec9a6b845c54f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 7 10:20:03 2010 -0300 cmake: Added file-transfer and protocols examples to build system. examples/CMakeLists.txt | 2 ++ examples/file-transfer/CMakeLists.txt | 46 +++++++++++++++++++++++++++++++++++ examples/protocols/CMakeLists.txt | 27 ++++++++++++++++++++ 3 files changed, 75 insertions(+) commit e8dcd07984e2e2db2a3366853983294747e57331 Author: Dario Freddi Date: Fri Apr 2 21:48:18 2010 +0200 Using Qt's way of setting a min version Signed-off-by: Dario Freddi CMakeLists.txt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit 75ce01e4335c75f3f290fc00f7135e745ae25799 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 6 15:42:09 2010 -0300 cmake: Proper generate session.conf and set env variables to run tests. tests/CMakeLists.txt | 6 +++--- tests/dbus-1/CMakeLists.txt | 4 ++++ tests/dbus-1/services/CMakeLists.txt | 1 + tests/dbus-1/services/spurious.service | 3 --- tests/dbus-1/services/spurious.service.in | 3 +++ 5 files changed, 11 insertions(+), 6 deletions(-) commit 0e224e8b4fd02fc64c7661799c2709582c9fd836 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 19 11:30:40 2010 -0300 cmake: Updated version to latest upstream version. CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7247b48f11162f9b2dec79a9c978196d14b50f6e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 19 11:30:20 2010 -0300 cmake: Bump tp-glib dependency to >= 0.10.0 CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a45aa561da3335f21fc7192069e1c0e7b2be1c51 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 14:00:16 2010 -0300 cmake: Make QT_NO_CAST_FROM_ASCII mandatory. cmake/modules/TelepathyDefaults.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 8f1f5c48fc8aed31c7a87c12a93a1f96adc1aa55 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 16 22:42:19 2010 -0300 cmake: Updated to latest upstream changes. CMakeLists.txt | 29 +++--- TelepathyQt4/CMakeLists.txt | 126 +++++++++++++++++++++--- config.h.in | 2 + tests/dbus/CMakeLists.txt | 4 + tests/lib/CMakeLists.txt | 25 +---- tests/lib/callable/CMakeLists.txt | 30 ------ tests/lib/contactlist/CMakeLists.txt | 28 ------ tests/lib/csh/CMakeLists.txt | 16 --- tests/lib/echo/CMakeLists.txt | 18 ---- tests/lib/echo2/CMakeLists.txt | 16 --- tests/lib/glib/CMakeLists.txt | 33 +++++++ tests/lib/glib/callable/CMakeLists.txt | 30 ++++++ tests/lib/glib/contactlist/CMakeLists.txt | 28 ++++++ tests/lib/glib/csh/CMakeLists.txt | 16 +++ tests/lib/glib/echo/CMakeLists.txt | 18 ++++ tests/lib/glib/echo2/CMakeLists.txt | 16 +++ tests/lib/glib/future/CMakeLists.txt | 5 + tests/lib/glib/future/call/CMakeLists.txt | 34 +++++++ tests/lib/glib/future/conference/CMakeLists.txt | 14 +++ tests/lib/glib/future/extensions/CMakeLists.txt | 122 +++++++++++++++++++++++ 20 files changed, 456 insertions(+), 154 deletions(-) commit 9296f3c5772a7864c8ed653c48558048a27bb23f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 19 20:04:44 2009 -0300 cmake: Updated to latest upstream version. TelepathyQt4/CMakeLists.txt | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) commit 5261c8f8f3c602312a82cf9ea3e241bc1774ad7c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 19 20:04:25 2009 -0300 cmake: Removed pinocchio from build system. tests/CMakeLists.txt | 1 - tests/pinocchio/CMakeLists.txt | 33 --------------------------------- 2 files changed, 34 deletions(-) commit b0a4425e5f1670b82ffa322ae7e569da6f08a1ae Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 00:56:28 2009 -0300 Bump version. CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c4b0747197d3ebe8f947d607dcf06ed542e50807 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 00:46:15 2009 -0300 cmake: Updated to latest changes. TelepathyQt4/CMakeLists.txt | 18 ++++++++++-------- tests/dbus/CMakeLists.txt | 1 + 2 files changed, 11 insertions(+), 8 deletions(-) commit eed38a8cd8e69f1100455ee2a0a1e08b5d2a8add Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 16:34:52 2009 -0300 cmake: Removed double entry on Doxygen.cmake. cmake/modules/Doxygen.cmake | 1 - 1 file changed, 1 deletion(-) commit c6b73f93bc923478492513f172a2fe0e655a8019 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 16:20:46 2009 -0300 cmake: Force decompression even if file already exists on make distcheck. cmake/modules/TelepathyDist.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c32565d9017464b89686baa1d4784f4df283326c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 16:17:13 2009 -0300 cmake: Update to latest changes. TelepathyQt4/CMakeLists.txt | 13 +++++++++++++ tests/dbus/CMakeLists.txt | 1 + 2 files changed, 14 insertions(+) commit 401db8f9bf6dc79d8597bcfe43605e573526be32 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 4 02:57:33 2009 -0300 doxygen: Use short file names. doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5435ce17ebd26f0f5b2c9e3f10ff5776f660cb89 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 23:54:40 2009 -0300 cmake: Updated to latest changes. CMakeLists.txt | 2 +- TelepathyQt4/CMakeLists.txt | 53 +++++++++++++++++++++- TelepathyQt4/Farsight/CMakeLists.txt | 8 +--- TelepathyQt4/TelepathyQt4-uninstalled.pc.in | 10 ++-- .../TelepathyQt4Farsight-uninstalled.pc.in | 12 ++--- TelepathyQt4/TelepathyQt4Farsight.pc.in | 16 +++---- examples/call/CMakeLists.txt | 1 + tests/dbus/CMakeLists.txt | 4 ++ 8 files changed, 78 insertions(+), 28 deletions(-) commit b02bae4f3bf084c318f325e994341ddd58677f66 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 12:04:46 2009 -0300 cmake: Renamed SharedData to RefCounted. TelepathyQt4/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5746fd5217df25316c683b1b088ee59ab6636dc2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 14:32:41 2009 -0300 cmake: Added TelepathyQt4Farsight support. TelepathyQt4/CMakeLists.txt | 1 + TelepathyQt4/Farsight/CMakeLists.txt | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) commit ad3fdbf509c056f1866ee3604b40ab81168958f0 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 18 20:40:37 2009 -0300 cmake: Added DATA_INSTALL_DIR define. cmake/modules/TelepathyDefaults.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit d29c5ba8acbb279b034d3007bd86b656c180e5ea Author: Ian Monroe Date: Thu Apr 16 09:52:13 2009 -0500 fixed logic for compiler warnings, -Werror should be disabled if one of the -Wno flags is not available cmake/modules/CompilerWarnings.cmake | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) commit 464240db8493ff3e960caade13785c8eff333809 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 16 12:26:06 2009 -0300 cmake: Improved make dist/distcheck. - Use git-archive to generate package. - Removed distcheck.py cmake/modules/TelepathyDist.cmake | 20 ++++++---- cmake/modules/distcheck.py | 83 --------------------------------------- 2 files changed, 13 insertions(+), 90 deletions(-) commit aa32280e5da32cf8cdbaa285fe60c2778e9447a0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 16 11:40:49 2009 -0300 cmake: Default to RelWithDebInfo (release with -g enabled) for release mode. CMakeLists.txt | 4 ++-- autogen.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 1c0e3ee99256c51d28064418de118726f0cdc8d7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 13:17:10 2009 -0300 cmake: Updated documentation. TelepathyQt4/main.dox | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 6703724947b4501ca0a82f719346aa14c95374cf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 03:22:28 2009 -0300 autogen.sh: Added some command line args that simulate autotools configure script. Added support --enable-debug/disable-debug/enable-compiler-coverage/prefix. autogen.sh | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) commit 64e21516c8ade999fe81b11360147e9acdba08c9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:59:13 2009 -0300 cmake: Added generated files to .gitignore. .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 984f55fd998802544f0359e2c414841601fc166a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:50:16 2009 -0300 cmake: Updated README. README | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 259ff3a57527dbe8190a2898b6ab963ecd6bea89 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:40:34 2009 -0300 cmake: Added -Wnon-virtual-dtor to compiler warnings. cmake/modules/TelepathyDefaults.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit d82377308608b88443a729917252830a06bf2284 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:27:52 2009 -0300 cmake: Use _ instead of - in variable names. examples/roster/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 781f769b3f8529e46ddb9efa2a46a8394168a0f6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:27:21 2009 -0300 cmake: Fixed generation of account-manager.service. tests/dbus-1/services/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f5332c262ffc4d5ecbd30babe374486f03d887ef Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:15:22 2009 -0300 cmake: Moved external tests dependencies checks to top-level CMakeLists.txt. CMakeLists.txt | 60 +++++++++++++++++++++++++++++++++++++++--- tests/CMakeLists.txt | 41 ----------------------------- tests/pinocchio/CMakeLists.txt | 3 --- 3 files changed, 56 insertions(+), 48 deletions(-) commit 826729fae0acec64939b2506a41036544893854d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:04:16 2009 -0300 cmake: Moved tp-farsight and gstreamer checks to top-level CMakeLists.txt. CMakeLists.txt | 12 ++++++++++++ examples/call/CMakeLists.txt | 7 ------- 2 files changed, 12 insertions(+), 7 deletions(-) commit abc29da9c51a22a1665fe238390fc27da457f8d6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 01:54:52 2009 -0300 cmake: Moved compiler flags checks to GNU compilers only. cmake/modules/TelepathyDefaults.cmake | 77 ++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 38 deletions(-) commit c3d6d2a5e15bd27a90756d95e9a5e8fedb6b4030 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 01:53:00 2009 -0300 cmake: Removed trailing spaces on CompilerWarnings.cmake. cmake/modules/CompilerWarnings.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit d5285a92ee2c84b643f2032e04c074bcb2cc9fdf Author: Ian Monroe Date: Mon Apr 13 18:40:08 2009 -0500 ported TP_COMPILER_WARNINGS from m4 to cmake. cmake/modules/CompilerWarnings.cmake | 53 +++++++++++++++++++++++++++++++++++ cmake/modules/TelepathyDefaults.cmake | 40 ++++++++++++++++++++++++-- 2 files changed, 91 insertions(+), 2 deletions(-) commit 307e7e8fb42f1a0c0d0fe520528c4a4a602d2a70 Author: Ian Monroe Date: Mon Apr 13 14:53:30 2009 -0500 switch autogen.sh to cmake autogen.sh | 33 +++------------------------------ 1 file changed, 3 insertions(+), 30 deletions(-) commit 57658488f07b45d2057a0fa5a78df8f7c85f5fee Author: Ian Monroe Date: Fri Apr 10 16:22:01 2009 -0500 Added the CMake build system files. This allows telepathy-qt4 to be built on Windows. .gitignore | 1 + CMakeLists.txt | 74 ++++++++ TelepathyQt4/CMakeLists.txt | 332 ++++++++++++++++++++++++++++++++++ TelepathyQt4/TelepathyQt4.pc.in | 14 +- TelepathyQt4/pending-operation.h | 3 + cmake/modules/Doxygen.cmake | 25 +++ cmake/modules/FindLibPython.py | 12 ++ cmake/modules/FindPythonLibrary.cmake | 84 +++++++++ cmake/modules/TelepathyDefaults.cmake | 62 +++++++ cmake/modules/TelepathyDist.cmake | 10 + cmake/modules/distcheck.py | 83 +++++++++ cmake_uninstall.cmake.in | 21 +++ config.h.in | 2 + doxygen.cfg.in | 53 +++--- examples/CMakeLists.txt | 4 + examples/accounts/CMakeLists.txt | 29 +++ examples/call/CMakeLists.txt | 47 +++++ examples/extensions/CMakeLists.txt | 98 ++++++++++ examples/roster/CMakeLists.txt | 42 +++++ tests/CMakeLists.txt | 72 ++++++++ tests/dbus-1/services/CMakeLists.txt | 3 + tests/dbus/CMakeLists.txt | 38 ++++ tests/lib/CMakeLists.txt | 35 ++++ tests/lib/callable/CMakeLists.txt | 30 +++ tests/lib/contactlist/CMakeLists.txt | 28 +++ tests/lib/csh/CMakeLists.txt | 16 ++ tests/lib/echo/CMakeLists.txt | 18 ++ tests/lib/echo2/CMakeLists.txt | 16 ++ tests/pinocchio/CMakeLists.txt | 36 ++++ 29 files changed, 1255 insertions(+), 33 deletions(-) commit 02882fa8091e78f9a067210ee97e50a00ac94e04 Merge: a92cfc1 1c73440 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 20 12:26:12 2010 +0100 Merge remote branch 'oggis/normalize' Reviewed-by: Andre Magalhaes (andrunko) commit 1c73440f9d22cb467b4b5d26102dd6b8aaffee8c Author: Olli Salli Date: Sun Sep 19 21:39:52 2010 +0300 Normalize QObject signal connections everywhere TelepathyQt4/abstract-interface.cpp | 4 +- TelepathyQt4/account-manager.cpp | 16 ++-- TelepathyQt4/account-set.cpp | 24 +++--- TelepathyQt4/account.cpp | 20 ++--- TelepathyQt4/channel-dispatch-operation.cpp | 4 +- TelepathyQt4/channel-request.cpp | 8 +- TelepathyQt4/channel.cpp | 75 ++++++++++--------- TelepathyQt4/client-registrar.cpp | 5 +- TelepathyQt4/connection-manager.cpp | 24 +++--- TelepathyQt4/connection.cpp | 46 ++++++------ TelepathyQt4/contact-manager.cpp | 94 ++++++++++++------------ TelepathyQt4/dbus-proxy.cpp | 8 +- TelepathyQt4/file-transfer-channel.cpp | 8 +- TelepathyQt4/pending-account.cpp | 4 +- TelepathyQt4/pending-channel-request.cpp | 12 +-- TelepathyQt4/pending-channel.cpp | 8 +- TelepathyQt4/pending-connection.cpp | 4 +- TelepathyQt4/pending-contact-info.cpp | 4 +- TelepathyQt4/pending-contacts.cpp | 4 +- TelepathyQt4/pending-handles.cpp | 16 ++-- TelepathyQt4/readiness-helper.cpp | 4 +- TelepathyQt4/streamed-media-channel.cpp | 110 ++++++++++++++-------------- TelepathyQt4/text-channel.cpp | 70 +++++++++--------- 23 files changed, 283 insertions(+), 289 deletions(-) commit a92cfc1e60f858281b0b283c00584541bc9b5936 Merge: 1da7f8c 324026c Author: Olli Salli Date: Sun Sep 19 21:40:24 2010 +0300 Merge branch 'todo' Reviewed-by: Andre Magalhaes (andrunko) commit 324026cc8a4bc453b3ccb21bf86a3f14a61f34b2 Author: Olli Salli Date: Sun Sep 19 17:50:28 2010 +0300 Add generic filter combinator stuff TODO TelepathyQt4/filter.h | 7 +++++++ 1 file changed, 7 insertions(+) commit 6fd84ce8c0b30ae80d2b5be1ecd9ad5f3ff043a4 Author: Olli Salli Date: Sun Sep 19 17:50:17 2010 +0300 Add contact filtering TODO considerations TelepathyQt4/contact.h | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) commit 48c1441de00ec6582d39adf9a3c348f074fcea19 Author: Olli Salli Date: Sun Sep 19 17:49:35 2010 +0300 Add TODO about CapabilitiesBase::supportsFileTransfers() TelepathyQt4/capabilities-base.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit acb22cb305370b3111404ecbe55efd7da9261525 Author: Olli Salli Date: Sun Sep 19 17:43:46 2010 +0300 TODO about AbstractClientHandler subclasses TelepathyQt4/abstract-client.h | 7 +++++++ 1 file changed, 7 insertions(+) commit 1da7f8c41fbef8bcfc8d22dd5504b57214409cc1 Author: Olli Salli Date: Sat Sep 18 19:42:44 2010 +0300 Add TODO to Channel to add a "includeSelfContact" parameter to groupContacts() etc TelepathyQt4/channel.h | 4 ++++ 1 file changed, 4 insertions(+) commit cceb6b2be837657b48b5b104b0b21cb7544eef1e Author: Olli Salli Date: Fri Sep 17 18:45:51 2010 +0300 Fix a race possibility triggered by Qt 4.7+ in TestAccountBasics tests/dbus/account-basics.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit 25569cc3a9effb75f7d377a599fa58c73accb67d Author: Olli Salli Date: Fri Sep 17 03:27:01 2010 +0300 Start 0.3.11 development NEWS | 9 +++++++++ configure.ac | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) commit 5a535b85f6c5a16d970074cfe749bd003b96e848 Author: Olli Salli Date: Fri Sep 17 02:57:02 2010 +0300 Prepare version 0.3.10 NEWS | 2 +- configure.ac | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) commit 98dd738538f739257f1b7ed8f2649710d93587d3 Author: Olli Salli Date: Fri Sep 17 02:52:25 2010 +0300 Remove the useless AccountManager::FeatureFilterByCapabilites "proxy feature" TelepathyQt4/account-manager.cpp | 173 ++++++++++++--------------------------- TelepathyQt4/account-manager.h | 2 - 2 files changed, 51 insertions(+), 124 deletions(-) commit db561102a8b1683f0bfc0fa716111d501c27ebc6 Author: Olli Salli Date: Fri Sep 17 02:27:51 2010 +0300 Update NEWS NEWS | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 6611e92894fd4e2f8cc793c29db43e9f1692e7e1 Merge: 0acc1a2 0ca92f8 Author: Olli Salli Date: Fri Sep 17 02:08:08 2010 +0300 Merge branch 'acc-filter' Reviewed-by: Andre Magalhaes (andrunko) commit 0acc1a282ddc1c78a44d84b9e649a62deb8aa5a4 Merge: bb6ba4e 6853103 Author: Olli Salli Date: Fri Sep 17 02:02:46 2010 +0300 Merge branch 'account-avatar-introspection' Reviewed-by: Andre Magalhaes (andrunko) commit 685310323a89a8991087924ec8b21dc83fd87855 Author: Olli Salli Date: Fri Sep 17 02:00:31 2010 +0300 Fix a rare bug with doing double setIntrospectCompleted in account avatar introspection TelepathyQt4/account.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit 0ca92f805d4e80a8b66cdfaa501457418dd2bc30 Author: Olli Salli Date: Thu Sep 16 22:20:32 2010 +0300 Adapt the tests for the new OO account filtering API tests/dbus/account-basics.cpp | 47 +++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 20 deletions(-) commit b77dab80c7848d47213d17bef53ce605ceee9316 Author: Olli Salli Date: Thu Sep 16 22:10:14 2010 +0300 Don't use foreach in the generic-capability-filter public header TelepathyQt4/generic-capability-filter.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit f87d73446078f8a3c1ad8c28e4513613e50e7531 Author: Olli Salli Date: Thu Sep 16 22:09:54 2010 +0300 Add an optional RCCs parameter to GenericCapabilityFilter::create() TelepathyQt4/generic-capability-filter.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 3ad85641e0005bebed0121ab8ffd5e98f7edbead Author: Olli Salli Date: Thu Sep 16 22:04:42 2010 +0300 Make Account::capabilities() not crash even if the protocol info couldn't be introspected TelepathyQt4/account.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 60dc42cbabea7e1c0352adc1ee7fd74cf12721f2 Author: Olli Salli Date: Thu Sep 16 22:03:07 2010 +0300 Export AccountPropertyFilter TelepathyQt4/account-property-filter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 559051e1ac80e6824dd196cf4598d92c5381de95 Author: Olli Salli Date: Thu Sep 16 21:11:15 2010 +0300 Make sure PendingAccount only finishes when the account has appeared in the AM too TelepathyQt4/pending-account.cpp | 26 ++++++++++++++++++++++++-- TelepathyQt4/pending-account.h | 1 + 2 files changed, 25 insertions(+), 2 deletions(-) commit 01d8da6302c8809b2a2257edbef726861d5a47c1 Author: Olli Salli Date: Thu Sep 16 21:10:30 2010 +0300 Replace a while loop gone wrong (again...) in GenericPropertyFilter by a for loop TelepathyQt4/generic-property-filter.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit b16c9f18fef28013547640954ad28599e3411ae4 Author: Olli Salli Date: Thu Sep 16 21:09:44 2010 +0300 Make AccountSet::isFilterValid() actually work again TelepathyQt4/account-set.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit 4e2cc157e7a97ed6b88ccffd5135d9872b01df1f Author: Olli Salli Date: Thu Sep 16 20:52:05 2010 +0300 Fix inverted logic in AccountPropertyFilter TelepathyQt4/account-property-filter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 40b2557555aa393cff076606919f3e263e6ca5f8 Author: Olli Salli Date: Thu Sep 16 20:51:22 2010 +0300 Make the Filter objects be RefCounteds so we don't have to slice them by value TelepathyQt4/AccountCapabilityFilter | 2 +- TelepathyQt4/Makefile.am | 2 -- TelepathyQt4/account-capability-filter.cpp | 42 ------------------------ TelepathyQt4/account-capability-filter.h | 51 ------------------------------ TelepathyQt4/account-manager.cpp | 30 +++++++++--------- TelepathyQt4/account-manager.h | 4 +-- TelepathyQt4/account-property-filter.cpp | 6 ---- TelepathyQt4/account-property-filter.h | 9 ++++-- TelepathyQt4/account-set-internal.h | 4 +-- TelepathyQt4/account-set.cpp | 32 +++++++++---------- TelepathyQt4/account-set.h | 6 ++-- TelepathyQt4/filter.h | 16 +++++++--- TelepathyQt4/generic-capability-filter.h | 9 +++--- TelepathyQt4/generic-property-filter.h | 9 ++---- TelepathyQt4/types.h | 13 ++++++++ 15 files changed, 79 insertions(+), 156 deletions(-) commit 68f5d682009ce74c746cb9cb36efc4360a37d7cd Author: Olli Salli Date: Thu Sep 16 19:07:54 2010 +0300 Don't have double-plurals in AccountManager::*AccountsSet() names TelepathyQt4/account-manager.cpp | 12 ++++++------ TelepathyQt4/account-manager.h | 12 ++++++------ tests/dbus/account-basics.cpp | 26 +++++++++++++------------- 3 files changed, 25 insertions(+), 25 deletions(-) commit 03a33b22f1c1e2782d9b0aa8c0f228ba7171566f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:25:18 2010 -0300 AccountManager: Use AccountCapabilityFilter instead of rccSubset to filter by caps. TelepathyQt4/account-manager.cpp | 43 ++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 24 deletions(-) commit 6837410e885b9852a4361244004d1c704f37f1df Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:24:49 2010 -0300 AccountManager: Added methods to filter accounts using filter objects. TelepathyQt4/account-manager.cpp | 39 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account-manager.h | 3 +++ 2 files changed, 42 insertions(+) commit b7e19f65325a9ae6d4b1f6b350edd6beef1c29ca Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:13:29 2010 -0300 AccountManager: Remove "supports" from filtering methods. TelepathyQt4/account-manager.cpp | 12 ++++++------ TelepathyQt4/account-manager.h | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) commit 2ac304c2ccdd0f5d4d8e7f4e38668537ab41d0a1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:03:07 2010 -0300 AccountManager: Updated docs to be in compliance with latest changes regarding filtering accounts. TelepathyQt4/account-manager.cpp | 57 ++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 19 deletions(-) commit fa7950e8e5972a12973f079d04b2bb7c1826969b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:08:33 2010 -0300 Revert "AccountManager: Added additionalFilter param to helper methods to filter accounts by RCC." This reverts commit 6dbf3a03956c5a3a8e6e7fddc8bbc736e0c23e64. TelepathyQt4/account-manager.cpp | 105 +++++++++++++++------------------------ TelepathyQt4/account-manager.h | 18 +++---- 2 files changed, 47 insertions(+), 76 deletions(-) commit 0afe31088a8b373cb26242c932b5b8be19b9f211 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:08:25 2010 -0300 Revert "account-basics test: Added tests for additionalFilter support in AM helper methods to filter accounts by RCC." This reverts commit 171e1fba64e8da436d0f20ab87001c12d61b67c1. tests/dbus/account-basics.cpp | 12 ------------ 1 file changed, 12 deletions(-) commit b050de51ff37fb9553896b4a3a024381331a5231 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 05:08:18 2010 -0300 Revert "AccountManager: Updated docs to indicate rccSubset is a valid filter key." This reverts commit 89904634a248c322a174a81b91f3281433f3696f. TelepathyQt4/account-manager.cpp | 3 --- 1 file changed, 3 deletions(-) commit 2ed9b872844247240e05f9b3ab853960b27c3c99 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 04:49:09 2010 -0300 AccountSet: Use filter objects to represent filters instead of using QVariantMap. The QVariantMap version is still there and marked as deprecated and when using it only filtering by property will be used. TelepathyQt4/account-set-internal.h | 14 ++- TelepathyQt4/account-set.cpp | 208 ++++++++++++++++++------------------ TelepathyQt4/account-set.h | 10 +- 3 files changed, 121 insertions(+), 111 deletions(-) commit 782b9e88df5aa8f44f808d981a6d866da41e0997 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 03:46:20 2010 -0300 Added specialized class used to filter accounts by capabilities. TelepathyQt4/AccountCapabilityFilter | 13 ++++++++ TelepathyQt4/Makefile.am | 3 ++ TelepathyQt4/account-capability-filter.cpp | 42 ++++++++++++++++++++++++ TelepathyQt4/account-capability-filter.h | 51 ++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+) commit 7b4653090a08fc6ad145483f7d26e7b69939989e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 03:43:53 2010 -0300 Added specialized class used to filter accounts by properties. TelepathyQt4/AccountPropertyFilter | 13 +++++ TelepathyQt4/Makefile.am | 3 ++ TelepathyQt4/account-property-filter.cpp | 86 ++++++++++++++++++++++++++++++++ TelepathyQt4/account-property-filter.h | 53 ++++++++++++++++++++ 4 files changed, 155 insertions(+) commit 4ad0c582f41a6bc615795ffb633e3fbe04399471 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 03:42:04 2010 -0300 Added generic filter class used to filter objects by capability. TelepathyQt4/GenericCapabilityFilter | 13 ++++ TelepathyQt4/Makefile.am | 2 + TelepathyQt4/generic-capability-filter.h | 111 +++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) commit 479ed6e89ad904cc2989e541f0421ef17a6cb1b4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 03:40:30 2010 -0300 Added generic filter class used to filter objects by property. TelepathyQt4/GenericPropertyFilter | 13 ++++++ TelepathyQt4/Makefile.am | 2 + TelepathyQt4/generic-property-filter.h | 80 ++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+) commit 5733875bebe6e8ca22f52ae187e2584b9645c3dd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 03:39:11 2010 -0300 Added Filter class - base class for all filtering classes. TelepathyQt4/Filter | 13 ++++++++++ TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/account-set-internal.h | 3 ++- TelepathyQt4/filter.h | 49 +++++++++++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) commit 6fcd5311f218f71df1bbe9023131822f22d70896 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 03:37:21 2010 -0300 AccountManager: Added FeatureFilterByCapabilities. The feature will enable accounts features used to filter accounts by capabilities. TelepathyQt4/account-manager.cpp | 45 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account-manager.h | 2 ++ 2 files changed, 47 insertions(+) commit 7e9ac8218a2b5a9923d8ef91674e994142d643b3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 02:23:46 2010 -0300 AccountSet: Use Account::capabilitiesChanged over custom implementation. TelepathyQt4/account-set-internal.h | 4 +--- TelepathyQt4/account-set.cpp | 47 ++++++------------------------------- 2 files changed, 8 insertions(+), 43 deletions(-) commit 99f7ec27af993c3eebb830bd798749c150440df2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 12 02:17:36 2010 -0300 Account: Added missing protocolInfo property. TelepathyQt4/account.h | 1 + 1 file changed, 1 insertion(+) commit 91004e586a5aaeaaca8bd4acbaa6fb1e16f39fa1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 11 12:05:50 2010 -0300 Account: Added capabilities support (accessor, property, signal). TelepathyQt4/account.cpp | 118 +++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/account.h | 6 +++ tests/dbus/account-basics.cpp | 2 +- 3 files changed, 124 insertions(+), 2 deletions(-) commit 3d46abfc311aa6a626ada8b6e810c914206efe60 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 20:56:13 2010 -0300 AccountManager: Updated docs to indicate rccSubset is a valid filter key. TelepathyQt4/account-manager.cpp | 3 +++ 1 file changed, 3 insertions(+) commit f1d351157bc58158639d3891d2fd56cc84343757 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 20:53:12 2010 -0300 AccountSet: Updated docs to indicate rccSubset is a valid filter key. TelepathyQt4/account-set.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 31e68f0486a985b678037d5c4f12ce9cc2ca8075 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 20:38:46 2010 -0300 account-basics test: Added tests for additionalFilter support in AM helper methods to filter accounts by RCC. tests/dbus/account-basics.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 2c481750c509285360daea9653dd6a2f77c1e100 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 20:37:35 2010 -0300 AccountManager: Added additionalFilter param to helper methods to filter accounts by RCC. TelepathyQt4/account-manager.cpp | 105 ++++++++++++++++++++++++--------------- TelepathyQt4/account-manager.h | 18 ++++--- 2 files changed, 76 insertions(+), 47 deletions(-) commit e2d0dac62a4b85955b95c638c9ac67b226468726 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:38:23 2010 -0300 account-basics test: Added test for AM helper methods to filter accounts by RCC. tests/dbus/account-basics.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 6e4e51dcbc7ad5d3eebbda67b606c278f891bdb0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:54:26 2010 -0300 AccountSet: Improved check for valid filter. TelepathyQt4/account-set.cpp | 2 -- tests/dbus/account-basics.cpp | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) commit 96ef8239707a14b65881060466c171a98629c638 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:07:12 2010 -0300 AccountManager: Added helper methods to filter accounts by RCC. Added helper methods to filter accounts that supports Text/TextChatRooms/Media/Audio/Video/FileTransfer channels. TelepathyQt4/account-manager.cpp | 174 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account-manager.h | 7 ++ 2 files changed, 181 insertions(+) commit 42c24fa238afd908ffa0f4f4c4fd21562cba3a9b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:10:50 2010 -0300 AccountManager: Updated docs to indicate accounts returned by AM have FeatureProtocolInfo ready. TelepathyQt4/account-manager.cpp | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) commit fd25ffaf1e875a35fcc84897c2d716bbf8b58fb0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:12:18 2010 -0300 account-basics test: Added tests for filter accounts by RCC support. tests/dbus/account-basics.cpp | 109 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) commit 5fe001da7f9bcc9c80400a52e34ccec98c813115 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:11:55 2010 -0300 spurious.manager: Added RCC definition to be used by tests. tests/telepathy/managers/spurious.manager | 7 +++++++ 1 file changed, 7 insertions(+) commit dacca32ee365078404f1175c9b191f641e97b22b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 16:40:05 2010 -0300 AccountSet: Added support to filter accounts by RCC. TelepathyQt4/account-set-internal.h | 12 ++- TelepathyQt4/account-set.cpp | 151 ++++++++++++++++++++++++++++++++---- TelepathyQt4/account-set.h | 3 +- 3 files changed, 149 insertions(+), 17 deletions(-) commit bb6ba4ef0797a70410a3e0dd34433173273e89d5 Author: Olli Salli Date: Thu Sep 16 03:42:55 2010 +0300 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit e6f33f24669e48e8ee3101e308ded78003f78774 Merge: 2059437 4eac900 Author: Olli Salli Date: Thu Sep 16 03:39:52 2010 +0300 Merge branch 'request-details' Reviewed-by: Andre Magalhaes (andrunko) commit 2059437eedf98d37ca92b3375abfc5e7070bcb78 Author: Olli Salli Date: Thu Sep 16 03:37:21 2010 +0300 PendingConnect: Handle connection invalidation TelepathyQt4/connection-internal.h | 1 + TelepathyQt4/connection.cpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) commit 2055e2f54bf93d9297429da2a56a5de9922bd115 Author: Olli Salli Date: Thu Sep 16 03:23:14 2010 +0300 Update NEWS NEWS | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 2bb119560a17860c06b258448c0067db76a6f20d Merge: 42d2dd5 c13f123 Author: Olli Salli Date: Thu Sep 16 03:12:54 2010 +0300 Merge branch 'client-industrialisation' Reviewed-by: Andre Magalhaes (andrunko) commit c13f1232d372870ac4fee0ebf0afc725bd0a811d Author: Olli Salli Date: Thu Sep 16 03:12:13 2010 +0300 Add an API/ABI break TODO comment to PendingChannelRequest TelepathyQt4/pending-channel-request.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 0ffd61abf8317ae5d58c2b24bf3195f4ed2164cd Author: Olli Salli Date: Thu Sep 16 03:10:18 2010 +0300 Put the opening curlies in their rightful place in some ClientRegistrar internal fns TelepathyQt4/client-registrar.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit c7c62a5b2d32c33a5ad0f254935a77dace4e916a Author: Olli Salli Date: Thu Sep 16 02:59:44 2010 +0300 consistency: s/invocations/mInvocations in ClientRegistrar adaptors TelepathyQt4/client-registrar-internal.h | 6 +++--- TelepathyQt4/client-registrar.cpp | 36 ++++++++++++++++---------------- 2 files changed, 21 insertions(+), 21 deletions(-) commit 4eac9005d6bb382c0b04cd54a9eb8003c61a6dc6 Author: Olli Salli Date: Thu Sep 16 02:37:05 2010 +0300 Test details in ContactManager::allKnownContactsChanged() tests/dbus/conn-roster.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit b62822f6fb7bf1f1455daec832b40f4875006a6b Author: Olli Salli Date: Thu Sep 16 02:36:04 2010 +0300 Add details variants for other signals in ContactManager too TelepathyQt4/contact-manager.cpp | 14 ++++++++------ TelepathyQt4/contact-manager.h | 14 +++++++++++--- 2 files changed, 19 insertions(+), 9 deletions(-) commit b7c9ee60ca4a8f43a2afb86a540f2f2ebc7d8ebc Author: Olli Salli Date: Thu Sep 16 01:23:10 2010 +0300 Improve ChannelDispatchOperation test coverage a bit tests/dbus/client-factories.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit cf510e980202b6abb1592971fd64e158f0807170 Author: Olli Salli Date: Thu Sep 16 01:22:36 2010 +0300 Actually have the test CDOAdaptor PossibleHandlers prob be a "as" tests/dbus/client-factories.cpp | 22 ++++++++++++---------- tests/dbus/client.cpp | 14 +++++++------- 2 files changed, 19 insertions(+), 17 deletions(-) commit 4c42ac2c8e061ef8c3e664deaa37b620cea86c4f Author: Olli Salli Date: Thu Sep 16 01:21:47 2010 +0300 Refactor the CDO introspection to be a bit clearer TelepathyQt4/channel-dispatch-operation.cpp | 98 +++++++++++++---------------- TelepathyQt4/client-registrar.cpp | 25 +++++--- 2 files changed, 61 insertions(+), 62 deletions(-) commit ed0a141dd73d8ed6c7ce7547a98ea82d16d0aedd Author: Olli Salli Date: Thu Sep 16 00:35:55 2010 +0300 Use a proper PossibleHandler object path for TestClient too tests/dbus/client-factories.cpp | 2 +- tests/dbus/client.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit 598bbe1ef09edd1f3604a832eb68ff7e2b9f70ab Author: Olli Salli Date: Wed Sep 15 21:42:03 2010 +0300 Remove extra debug from CDO TelepathyQt4/channel-dispatch-operation.cpp | 2 -- 1 file changed, 2 deletions(-) commit c00bb7b79fa8422d1ddc0335436d232e23faf28f Author: Olli Salli Date: Wed Sep 15 21:41:41 2010 +0300 Declare complex properties in the way QDBus expects in test adaptors tests/dbus/client-factories.cpp | 12 +++++++----- tests/dbus/client.cpp | 6 +++--- 2 files changed, 10 insertions(+), 8 deletions(-) commit c60a33597468ede1b9abcfff0e0a019f43c26c9d Author: Olli Salli Date: Wed Sep 15 20:20:07 2010 +0300 Use chanFactory instead of chanFact etc in CDO for consistency TelepathyQt4/channel-dispatch-operation.cpp | 36 +++++++++++++++-------------- 1 file changed, 19 insertions(+), 17 deletions(-) commit af5d939b08e6e58fa0ebbdcff2fe6b7888352a0d Author: Olli Salli Date: Wed Sep 15 20:11:47 2010 +0300 Remove extra debug from CDO TelepathyQt4/channel-dispatch-operation.cpp | 2 -- 1 file changed, 2 deletions(-) commit 2b29dfb54c25bbb392e514a143042491fc280df5 Author: Olli Salli Date: Wed Sep 15 19:53:50 2010 +0300 Make ChannelDispatchOperation use factories TelepathyQt4/channel-dispatch-operation.cpp | 308 ++++++++++++++++++---------- TelepathyQt4/channel-dispatch-operation.h | 42 ++-- TelepathyQt4/client-registrar.cpp | 27 ++- tests/dbus/client-factories.cpp | 30 ++- tests/dbus/client.cpp | 21 +- 5 files changed, 288 insertions(+), 140 deletions(-) commit 239745869240b82ac1e2618bb21cc0a7a94f8a4b Author: Olli Salli Date: Wed Sep 15 12:42:24 2010 +0300 Include the Account and Connection props in the fake CDO in TestClient* tests/dbus/client-factories.cpp | 23 ++++++++++++++++++++--- tests/dbus/client.cpp | 23 ++++++++++++++++++++--- 2 files changed, 40 insertions(+), 6 deletions(-) commit de2e7f27578a6e00adf0e936f60544f8689dc08a Author: Olli Salli Date: Tue Sep 14 20:21:30 2010 +0300 Test that CR doesn't construct accounts anew tests/dbus/account-channel-dispatcher.cpp | 1 + 1 file changed, 1 insertion(+) commit 42d2dd5c4457e49a49d7f805e136b2e80c116110 Merge: e1e417c dccf3cc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 13 15:22:25 2010 +0100 Merge branch 'account-initialize-changing-presence' Reviewed-by: Simon McVittie (smcv) commit dccf3ccecbab4f22a107f61d214fb08e185f6704 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 13 15:18:37 2010 +0100 Account: Properly initialize changingPresence. TelepathyQt4/account.cpp | 1 + 1 file changed, 1 insertion(+) commit e813f80c5f02b2b9955d818710b3d1d034c49cc8 Author: Olli Salli Date: Mon Sep 13 08:24:54 2010 +0300 Make it possible to specify the account for a ChannelRequest in advance TelepathyQt4/channel-request.cpp | 91 +++++++++++++++++++++++++++----- TelepathyQt4/channel-request.h | 6 +++ TelepathyQt4/client-registrar.cpp | 10 ++-- TelepathyQt4/pending-channel-request.cpp | 3 +- 4 files changed, 89 insertions(+), 21 deletions(-) commit d118276f657bc00bdb7eebb7fc1eea9bcf58ab15 Author: Olli Salli Date: Mon Sep 13 08:06:06 2010 +0300 ChannelRequest: don't mess up the ordering between the ctors TelepathyQt4/channel-request.cpp | 44 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) commit 7e8e87321dc4d80f38a276e49e28ed9093fab7da Author: Olli Salli Date: Mon Sep 13 00:10:22 2010 +0300 Use factories in ChannelRequest TelepathyQt4/channel-request.cpp | 91 ++++++++++++++++++++++++++++++-- TelepathyQt4/channel-request.h | 20 +++++-- TelepathyQt4/client-registrar.cpp | 18 +++++-- TelepathyQt4/pending-channel-request.cpp | 10 +++- tests/dbus/client-factories.cpp | 10 ++++ 5 files changed, 136 insertions(+), 13 deletions(-) commit 82480b5f112a7069e483a108f562c622044a5e0c Author: Olli Salli Date: Sun Sep 12 23:33:40 2010 +0300 Make PendingChannelRequest hold a ref to its Account TelepathyQt4/account.cpp | 76 ++++++++++++++++---------------- TelepathyQt4/pending-channel-request.cpp | 72 +++++++++++++++++++++++++++++- TelepathyQt4/pending-channel-request.h | 10 ++++- 3 files changed, 118 insertions(+), 40 deletions(-) commit 0fbe0f0889c66a870540ebeac96fe1446a22045d Author: Olli Salli Date: Sun Sep 12 22:37:53 2010 +0300 Defer calling handleChannels until all proxies are prepared (factorified) TelepathyQt4/client-registrar-internal.h | 19 +++++ TelepathyQt4/client-registrar.cpp | 116 +++++++++++++++++++++++++------ tests/dbus/client-factories.cpp | 20 ++++++ 3 files changed, 132 insertions(+), 23 deletions(-) commit 18e7731fe988b14e8917573a9e7cb62e62a9f817 Author: Olli Salli Date: Sun Sep 12 17:24:28 2010 +0300 Defer calling addDispatchOperation until the proxies are prepared (factorified) TelepathyQt4/client-registrar-internal.h | 17 +++++++ TelepathyQt4/client-registrar.cpp | 80 ++++++++++++++++++++++++++------ tests/dbus/client-factories.cpp | 6 +++ 3 files changed, 89 insertions(+), 14 deletions(-) commit 09592c1cdb1d84ca5dc9cc26e3ce3c3a2914b685 Author: Olli Salli Date: Sun Sep 12 17:08:05 2010 +0300 Add a FIXME regarding API stupidity with ChannelDispatchOperation TelepathyQt4/channel-dispatch-operation.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 0faf5b30701644f54e4277be08cbdc2df4d0879a Author: Olli Salli Date: Sun Sep 12 17:07:33 2010 +0300 Actually pass a ChannelDispatchOperation in the AddChannelDispatchOperation testing (?!?!) tests/dbus/client-factories.cpp | 83 ++++++++++++++++++++++++++++++++++------ tests/dbus/client.cpp | 84 +++++++++++++++++++++++++++++++++++------ 2 files changed, 145 insertions(+), 22 deletions(-) commit 711ff8a25a32bad7cebe89765561f7f10cd3621e Author: Olli Salli Date: Sat Sep 11 21:55:34 2010 +0300 Describe how ObserveChannels impl could be improved when we have spec 0.19.12 TelepathyQt4/client-registrar.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 7be9ea1bb244b8191122578e2317356bc0e3f68d Author: Olli Salli Date: Sat Sep 11 21:50:05 2010 +0300 Don't discard the observer info when doing ObserveChannels TelepathyQt4/client-registrar.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 2ea78f4ffa1ca0fca776a4d6324fa74381f2f477 Author: Olli Salli Date: Sat Sep 11 21:43:06 2010 +0300 Remove stale account creation code from PendingAccount TelepathyQt4/pending-account.cpp | 6 ------ 1 file changed, 6 deletions(-) commit 6171dd7fa69e2862188d0422c9a86b8834e93681 Author: Olli Salli Date: Sat Sep 11 21:39:24 2010 +0300 Test that the factories have done their work before observeChannels is called tests/dbus/client-factories.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 5bc9051c08960822dbe7540ff8f13bc2bb2ea21b Author: Olli Salli Date: Sat Sep 11 21:36:48 2010 +0300 Use the AM factories for ClientRegistrar in TestClientFactories tests/dbus/client-factories.cpp | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) commit d50186c5461609aafb9fcb30821da05014644c3b Author: Olli Salli Date: Sat Sep 11 21:31:57 2010 +0300 Make PendingAccount use the manager's factories TelepathyQt4/pending-account.cpp | 23 ++++++++++++++++++++++- TelepathyQt4/pending-account.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) commit a8c99a862fad24457b78b6142eeb3c0ee5e8fa46 Author: Olli Salli Date: Sat Sep 11 21:30:33 2010 +0300 Make Connection::requestConnect actually wait for the conn to connect :) It used to not wait for the connection to connect at all, which was especially evident if the connection had already been made ready in the newly created state (before connecting). In that case it just finished ~straight away and the connection actually only got connected sometime later. TelepathyQt4/connection-internal.h | 1 + TelepathyQt4/connection.cpp | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) commit b2d64390235cc6c07f9842876fe41892944ee889 Author: Olli Salli Date: Sat Sep 11 21:03:02 2010 +0300 Fix PendingAccount::objectPath() debug to not say ::account() TelepathyQt4/pending-account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 799a65b0706fff837b41bb6547c329714ebfe8d9 Author: Olli Salli Date: Sat Sep 11 20:02:51 2010 +0300 Don't leak PendingComposite::Private TelepathyQt4/pending-operation.cpp | 5 +++++ TelepathyQt4/simple-pending-operations.h | 1 + 2 files changed, 6 insertions(+) commit b3a1e02cbe6475761a901253760c1ba189214d3c Author: Olli Salli Date: Sat Sep 11 20:02:30 2010 +0300 Work around QDBusMessage memory leak triggered by ClientHandlerRequestsAdaptor TelepathyQt4/client-registrar.cpp | 2 ++ 1 file changed, 2 insertions(+) commit b4a6ba004b04c21638d5eafd1acd343786f3c9dc Author: Olli Salli Date: Sat Sep 11 19:18:45 2010 +0300 Defer calling AbstractClientObserver::observeChannels() until all proxies are prepared TelepathyQt4/client-registrar-internal.h | 6 ++- TelepathyQt4/client-registrar.cpp | 65 ++++++++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 5 deletions(-) commit 2b9db91d5500a12749baa78c7dfa8f7c0c8d514b Author: Olli Salli Date: Sat Sep 11 19:17:42 2010 +0300 Make TestClient(Factories) not expect a CDO object when there is none tests/dbus/client-factories.cpp | 2 +- tests/dbus/client.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 495307fd126f9ec9c14b101efabf3cb9f0b12467 Author: Olli Salli Date: Sat Sep 11 17:35:24 2010 +0300 Use factories for constructing proxies for ObserveChannels TelepathyQt4/client-registrar.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) commit e7b2272b43f121ae6d2a312b0c421d8ab51554e0 Author: Olli Salli Date: Sat Sep 11 17:25:00 2010 +0300 Make ObserveChannels deferrable TelepathyQt4/client-registrar-internal.h | 16 +++++++++++++ TelepathyQt4/client-registrar.cpp | 41 ++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 18 deletions(-) commit e3bcad55587c5535963e2095564c4bd73e0c4cb4 Author: Olli Salli Date: Sat Sep 11 14:01:52 2010 +0300 Make the ClientRegistrar adaptors aware of the registrar that created them TelepathyQt4/client-registrar-internal.h | 43 ++++++++++++++++++++++++++------ TelepathyQt4/client-registrar.cpp | 33 +++++++++++++----------- 2 files changed, 54 insertions(+), 22 deletions(-) commit 22b9a0686d7b8a9ea30968ed79ccbc7cda1b2492 Author: Olli Salli Date: Sat Sep 11 12:55:59 2010 +0300 Start testing factory-specific functionality in Client stuff tests/dbus/Makefile.am | 9 +- tests/dbus/client-factories.cpp | 735 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 742 insertions(+), 2 deletions(-) commit efc6a21409da998138f254c56e4dfaec447eed40 Author: Olli Salli Date: Sat Sep 11 12:37:05 2010 +0300 Add API to specify the factories to ClientRegistrar They're not yet used in any way, though. TelepathyQt4/client-registrar.cpp | 213 +++++++++++++++++++++++++++++++++++++- TelepathyQt4/client-registrar.h | 33 +++++- 2 files changed, 241 insertions(+), 5 deletions(-) commit e1e417c258bc379900a48e62ea9c15bd4de7e6cf Author: Olli Salli Date: Fri Sep 10 17:27:05 2010 +0300 Start 0.3.10 development NEWS | 9 +++++++++ configure.ac | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) commit 5726576b52731d89ec3e9dc7490e2e965771bb6c Author: Olli Salli Date: Fri Sep 10 17:14:45 2010 +0300 Prepare release 0.3.9 NEWS | 2 ++ configure.ac | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) commit c6eafaec158a38579a2fca2a6d15e537f4fd97b6 Author: Olli Salli Date: Fri Sep 10 17:05:06 2010 +0300 Trivial: only convert from WeakPtr from SharedPtr if there are refs TelepathyQt4/shared-ptr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eac6edb97068b929760a726ad6e654d475d12b61 Author: Olli Salli Date: Fri Sep 10 16:08:31 2010 +0300 Updated NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit a578f6e1095dfcd3171c871a53be5fbb9ade2f2c Merge: 5a42c34 4fd0513 Author: Olli Salli Date: Fri Sep 10 15:57:34 2010 +0300 Merge branch 'planned-parenthood' Reviewed-by: Andre Magalhaes (andrunko) commit 4fd0513512ad71c3750e6bc0586432661d467493 Author: Olli Salli Date: Fri Sep 10 14:20:07 2010 +0300 Make PendingMedia{Streams,Content} hold a strong ref to the StreamedMediaChannel TelepathyQt4/streamed-media-channel-internal.h | 4 ++-- TelepathyQt4/streamed-media-channel.cpp | 10 +++++----- tests/dbus/streamed-media-chan.cpp | 2 ++ 3 files changed, 9 insertions(+), 7 deletions(-) commit 263fb0d3465496119d543feba0f48165e5ab7d27 Author: Olli Salli Date: Fri Sep 10 14:19:01 2010 +0300 Fix conn destroyed checks in ReferencedHandles TelepathyQt4/referenced-handles.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit 3a99b922e78dcf9a080e2bf7f79e7ecba40aa23f Author: Olli Salli Date: Fri Sep 10 14:16:54 2010 +0300 Don't make the Conn the parent of PendingHandles, we already hold a strong ref to it TelepathyQt4/pending-handles.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit bd7dcebb60d29699622364320fe116cbc50b4f44 Author: Olli Salli Date: Fri Sep 10 14:15:06 2010 +0300 Make PendingContactInfo hold a strong ref to the Contact TelepathyQt4/pending-contact-info.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 5f9815997877888aa9692c8d323e599cc1503d5e Author: Olli Salli Date: Fri Sep 10 14:14:41 2010 +0300 Don't make the Connection the parent in PendingCAI, we already hold a strong ref TelepathyQt4/pending-contact-attributes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5c1fde07b70ce1a950ee4da178afab7acf52f6bd Author: Olli Salli Date: Fri Sep 10 14:13:21 2010 +0300 Hold a strong ref to the manager in PendingAccount TelepathyQt4/pending-account.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 617c9c1a7c3953f6101a77fd1cd3e0813b87d215 Author: Olli Salli Date: Fri Sep 10 13:27:53 2010 +0300 Don't have the manager as a parent to PendingConnection, hold a strong ref to it instead TelepathyQt4/pending-connection.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 7e9351b9aaad54cac367df9b51a035bdf84a2172 Author: Olli Salli Date: Fri Sep 10 13:22:08 2010 +0300 Don't pass the conn as a parent in PendingChannel, hold a strong ref to it instead TelepathyQt4/pending-channel.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 5a42c3447f20d1cb991360fc44aa97951da2d80a Author: Olli Salli Date: Fri Sep 10 13:16:43 2010 +0300 Update NEWS NEWS | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit ec5cd8933e7f6ba15dc9a3012ae30800790b7949 Author: Olli Salli Date: Fri Sep 10 12:59:20 2010 +0300 Updated NEWS NEWS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 086c630507b4fa592201ff2769a45d70a73d96f1 Merge: f1d587f 80856fe Author: Olli Salli Date: Fri Sep 10 12:48:45 2010 +0300 Merge branch 'servicewatcher' Reviewed-by: Will Thompson (wjt) Reviewed-by: Simon McVittie (smcv) commit 80856fe1eba5d03383d47e1dfffb2a9fefe73e14 Author: Olli Salli Date: Fri Sep 10 12:41:53 2010 +0300 configure.ac: Comment that we don't have to check for QDBusServiceWatcher with Qt 4.6 configure.ac | 2 ++ 1 file changed, 2 insertions(+) commit 131ac1d3a6113eee380a00b36ab6788e5500a23a Author: Olli Salli Date: Fri Sep 10 12:16:40 2010 +0300 StatefulDBusProxy: Forgo the complicated unique name tracking In favor of tracking the well-known name :) This is functionally equivalent. The well-known name is stored in a private variable so all external code (eg. the actual proxies) will still use the uniquified name from DBusProxy::busName(). TelepathyQt4/dbus-proxy.cpp | 81 +++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 55 deletions(-) commit e17c59307789f26215122b9f8b5486681adb7ca8 Author: Olli Salli Date: Fri Sep 10 11:50:16 2010 +0300 Add AC_MSG_CHECKING for the QDBusServiceWatcher check configure.ac | 4 ++++ 1 file changed, 4 insertions(+) commit 653908fa7fb3e5950dc051383adca9c40ece2eb4 Author: Olli Salli Date: Fri Sep 10 11:50:09 2010 +0300 Fix make distcheck TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit a71f362d56bf6122fa2da1dcba2443229300a489 Author: Olli Salli Date: Fri Sep 10 11:30:54 2010 +0300 Add testcase checking that a bogus service name doesn't screw up DBusProxy(Factory) tests/dbus/dbus-proxy-factory.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) commit 936615039378a95cc203fa3d57e9d2201c10a231 Author: Olli Salli Date: Fri Sep 10 11:30:36 2010 +0300 Don't even cache already-invalid proxies in DBusProxyFactories TelepathyQt4/dbus-proxy-factory.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 7aa23e88168361e96865f29216a5de1d115428f3 Author: Olli Salli Date: Fri Sep 10 11:29:57 2010 +0300 Guard against race conditions in the name owner change tracking code in StatefulDBusProxy TelepathyQt4/dbus-proxy.cpp | 64 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 12 deletions(-) commit 8727c1b97634cd7758a55eb9ec4e880daf3e2761 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 27 17:28:47 2010 +0300 DBusProxy: Added support to use QDBusServiceWatcher if available. It fixes https://bugs.freedesktop.org/show_bug.cgi?id=29409. TelepathyQt4/dbus-proxy.cpp | 24 +++++++++++++++++++----- configure.ac | 15 +++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) commit f1d587f6a3754308f3c1096a3893c47c238500c8 Author: Olli Salli Date: Fri Sep 10 10:13:49 2010 +0300 Update NEWS NEWS | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) commit 215dca7c855915af63ea2fdd47866c15f7b7e0af Merge: 6738c4a 0c7877f Author: Olli Salli Date: Fri Sep 10 09:33:46 2010 +0300 Merge branch 'factory-goodness' Reviewed-by: Andre Magalhaes (andrunko) commit 0c7877f482a6197f8a241952055db03430d34149 Author: Olli Salli Date: Fri Sep 10 09:32:13 2010 +0300 Make TestAccountConnectionFactory compile with QT_NO_KEYWORDS tests/dbus/account-connection-factory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b7fe091a7c8807fb3d7e25e476f41fde8c3f285e Author: Olli Salli Date: Fri Sep 10 08:44:31 2010 +0300 Add a dedicated test for DBusProxyFactory/ConnectionFactory tests/dbus/Makefile.am | 5 + tests/dbus/dbus-proxy-factory.cpp | 313 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 318 insertions(+) commit 1cdce46da48797b83ecb4e758bf34e596acecdfa Author: Olli Salli Date: Fri Sep 10 08:43:28 2010 +0300 Add a TestBackdoors class with invalidateProxy() to enable better invalidation testing TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/dbus-proxy.h | 4 ++++ TelepathyQt4/test-backdoors.cpp | 37 ++++++++++++++++++++++++++++++++ TelepathyQt4/test-backdoors.h | 47 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+) commit 54dd9760444d50e9a22ba9417725a57d2c01b66b Author: Olli Salli Date: Thu Sep 9 23:02:34 2010 +0300 Conn: Key handle context mapping by object path instead of the (uniquefied) bus name... This is a bit embarrassing to say the least. Wonder why nobody ever hit any bugs because of this? Probably because they always (indirectly) used GetCAI which holds by itself. TelepathyQt4/connection.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 388d2487e613c3098d7a48651f0a4c26d505fdef Author: Olli Salli Date: Tue Sep 7 20:19:07 2010 +0300 Add a placeholder ContactFactory TelepathyQt4/ContactFactory | 13 ++++++ TelepathyQt4/Makefile.am | 3 ++ TelepathyQt4/account-factory.cpp | 13 ++++-- TelepathyQt4/account-factory.h | 6 ++- TelepathyQt4/account-manager.cpp | 49 +++++++++++++++------ TelepathyQt4/account-manager.h | 13 ++++-- TelepathyQt4/account.cpp | 49 ++++++++++++++++----- TelepathyQt4/account.h | 13 ++++-- TelepathyQt4/connection-factory.cpp | 13 ++++-- TelepathyQt4/connection-factory.h | 6 ++- TelepathyQt4/contact-factory.cpp | 85 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-factory.h | 68 +++++++++++++++++++++++++++++ TelepathyQt4/types.h | 3 ++ 13 files changed, 293 insertions(+), 41 deletions(-) commit 6ec6e741458256cde2be4bcada8cc3758e42dc29 Author: Olli Salli Date: Tue Sep 7 18:45:20 2010 +0300 Split the DBusProxyFactory::prepare() hook into initialPrepare() and readyPrepare() TelepathyQt4/dbus-proxy-factory.cpp | 49 ++++++++++++++++++++----------------- TelepathyQt4/dbus-proxy-factory.h | 3 ++- TelepathyQt4/pending-ready.cpp | 30 +++++++++++++---------- TelepathyQt4/pending-ready.h | 6 +++-- 4 files changed, 50 insertions(+), 38 deletions(-) commit 916e483670b431e401925587c5e58703f819492b Author: Olli Salli Date: Tue Sep 7 18:01:47 2010 +0300 Doxyment the factory PendingReady additions TelepathyQt4/pending-ready.cpp | 27 ++++++++++++++++++++++----- TelepathyQt4/pending-ready.h | 1 + 2 files changed, 23 insertions(+), 5 deletions(-) commit 8b5c6b243854d8c854a521b16d67e3bb05a4874a Author: Olli Salli Date: Tue Sep 7 17:52:39 2010 +0300 Doxyment ChannelFactory TelepathyQt4/channel-factory.cpp | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) commit f62d7e3bb8b9bfe09936c71be8a81c8b3d9f9f68 Author: Olli Salli Date: Tue Sep 7 17:52:30 2010 +0300 Generate TODO lists in doxygen doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7c7d11c0b8d9b0f0388edc8d7fc6294b9dd88014 Author: Olli Salli Date: Tue Sep 7 16:51:51 2010 +0300 Fix the ConnectionFactory doc group TelepathyQt4/connection-factory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 32e344049c5dfbf0645ae3d4f67603782b564a8a Author: Olli Salli Date: Tue Sep 7 16:51:29 2010 +0300 Link up TELEPATHY_ACCOUNT_MANAGER_BUS_NAME from the AccountFactory docs TelepathyQt4/account-factory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9ab38ef100dcb7af23cb24a874ca1de9666c5884 Author: Olli Salli Date: Tue Sep 7 16:41:31 2010 +0300 Doxyment ConnectionFactory TelepathyQt4/account-factory.cpp | 2 + TelepathyQt4/connection-factory.cpp | 75 +++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) commit ef18b4effb7365e0eb062c0b42733bb95a149083 Author: Olli Salli Date: Tue Sep 7 16:26:35 2010 +0300 Doxyment AccountFactory::finalBusNameFrom() params TelepathyQt4/account-factory.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 2dea95db3f0d73d9a04e285d3bd1d0182dc3a1fa Author: Olli Salli Date: Tue Sep 7 16:23:56 2010 +0300 Reorder AccountFactory::{construct,finalBusNameFrom} impls to be consistent with the header TelepathyQt4/account-factory.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit a65cc7f26a11c21313e192f3b528b8b223dc573b Author: Olli Salli Date: Tue Sep 7 16:18:57 2010 +0300 Doxyment AccountFactory TelepathyQt4/account-factory.cpp | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) commit 6503e0b26e445e8f2485b260c014a7c471eb6809 Author: Olli Salli Date: Tue Sep 7 15:37:06 2010 +0300 Doxyment the "no features" case for DBusProxyFactory::featuresFor() better TelepathyQt4/dbus-proxy-factory.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 8a6c02c16ec4b09cee8547ac7b804d7a42f332d3 Author: Olli Salli Date: Tue Sep 7 09:52:08 2010 +0300 Doxyment FixedFeatureFactory TelepathyQt4/fixed-feature-factory.cpp | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) commit 0dfc77b84afd372f681ecb998834086dcc0f4220 Author: Olli Salli Date: Mon Sep 6 20:01:31 2010 +0300 Make Acc/ConnFact subclasses able to specify the actual proxy class to construct I forgot this after refactoring the factory classes, which is a bit absurd given the initial need for factories in the first place :O TelepathyQt4/account-factory.cpp | 9 ++++++++- TelepathyQt4/account-factory.h | 3 +++ TelepathyQt4/connection-factory.cpp | 8 +++++++- TelepathyQt4/connection-factory.h | 2 ++ 4 files changed, 20 insertions(+), 2 deletions(-) commit 78703b440da0d51ca99cbdd2332852d52478ab05 Author: Olli Salli Date: Mon Sep 6 18:19:29 2010 +0300 Change ChannelFactory::stockFreshFactory to create() and document it accordingly TelepathyQt4/account-manager.cpp | 4 ++-- TelepathyQt4/account-manager.h | 2 +- TelepathyQt4/account.cpp | 4 ++-- TelepathyQt4/account.h | 2 +- TelepathyQt4/channel-factory.cpp | 11 ++++++++++- TelepathyQt4/channel-factory.h | 5 +---- tests/dbus/account-connection-factory.cpp | 6 +++--- 7 files changed, 20 insertions(+), 14 deletions(-) commit 88f796a903ae7d5573fe475fbe4ca4bc64e63086 Author: Olli Salli Date: Mon Sep 6 18:19:06 2010 +0300 Eliminate code duplication in Account updateProperties and onConnectionBuilt TelepathyQt4/account.cpp | 92 +++++++++++++++++++----------------------------- 1 file changed, 37 insertions(+), 55 deletions(-) commit b967440c94a9d9f0b4b5f3ca35c0d0b84e9b9bc6 Author: Olli Salli Date: Mon Sep 6 17:47:39 2010 +0300 Remove trailing whitespace from a dbus-proxy-factory.cpp doc comment TelepathyQt4/dbus-proxy-factory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1ad07c128a91cf2ba3eeb0894ddf45530e192772 Author: Olli Salli Date: Mon Sep 6 17:45:13 2010 +0300 Doxyment Account(Manager) factory accessors TelepathyQt4/account-manager.cpp | 30 ++++++++++++++++++++++++++++++ TelepathyQt4/account.cpp | 20 ++++++++++++++++++++ 2 files changed, 50 insertions(+) commit 4fc1c08a7bb47b84f14917dda17b966d9bde51e2 Author: Olli Salli Date: Mon Sep 6 17:44:50 2010 +0300 Make Account ctors and create() fns consistent with how the AM ones are now TelepathyQt4/account-factory.cpp | 2 +- TelepathyQt4/account.cpp | 87 +++++++++++++++++++++++-------- TelepathyQt4/account.h | 18 ++++--- tests/dbus/account-connection-factory.cpp | 12 ++--- 4 files changed, 85 insertions(+), 34 deletions(-) commit 52832c171e79028799501a7afbb69b019ad35fef Author: Olli Salli Date: Mon Sep 6 17:27:31 2010 +0300 Doxyment the factory behavior of the old AccountManager create() and ctor variants TelepathyQt4/account-manager.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit e8ef4ed909f0fa96ebfbc503e4f1c73a93241bee Author: Olli Salli Date: Mon Sep 6 17:19:33 2010 +0300 Make the order the factories are specified for AccountManager more logical vs. more convenient for common use-cases TelepathyQt4/account-manager.cpp | 94 +++++++++++++++++++++++++++++----------- TelepathyQt4/account-manager.h | 24 ++++++---- 2 files changed, 85 insertions(+), 33 deletions(-) commit 973bd2a03afb0e1f9e2717dc6a687e41ab748cb8 Author: Olli Salli Date: Mon Sep 6 16:58:55 2010 +0300 Make {Account,Connection}Factory ctors take a Features param TelepathyQt4/account-factory.cpp | 7 +++---- TelepathyQt4/account-factory.h | 2 +- TelepathyQt4/connection-factory.cpp | 9 +++------ TelepathyQt4/connection-factory.h | 2 +- 4 files changed, 8 insertions(+), 12 deletions(-) commit bbc3abaf6dae14f0c34c87913bb1575cae99b1ba Author: Olli Salli Date: Fri Sep 3 19:51:40 2010 +0300 Make the factory-created object classes not make their core ready automatically This is so that we can also have an "don't make it ready at all" option in factories instead of the current "make it ready even if I ask you not to, but don't tell me about doing so" behavior. TelepathyQt4/account.cpp | 1 - TelepathyQt4/channel.cpp | 1 - TelepathyQt4/connection.cpp | 2 -- 3 files changed, 4 deletions(-) commit 8fedec5b2f710e4826059b3f156aeb74c0fadec5 Author: Olli Salli Date: Fri Sep 3 20:34:24 2010 +0300 Make introspectable dependencies actually work (just in time for their 2nd birthday, *sigh*) TelepathyQt4/readiness-helper.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) commit 0fd06e501a74e7442858d78fcec4f2c3dd868bb7 Author: Olli Salli Date: Fri Sep 3 20:04:26 2010 +0300 Expand DBusProxyFactory documentation TelepathyQt4/dbus-proxy-factory.cpp | 35 +++++++++++++++++++++++++++++++++-- TelepathyQt4/dbus-proxy-factory.h | 2 +- 2 files changed, 34 insertions(+), 3 deletions(-) commit 0322a4d6b051ddd894903c995b53f7b71aa4dd50 Author: Olli Salli Date: Fri Sep 3 19:44:14 2010 +0300 Warn in DBusProxyFactory docs that prepare() is not currently really used TelepathyQt4/dbus-proxy-factory.cpp | 1 + 1 file changed, 1 insertion(+) commit 77bc2c30a9a90313684e5c83d84788d6cb4779b5 Author: Olli Salli Date: Fri Sep 3 19:36:26 2010 +0300 Remove the error-prone created param from DBusProxyFactory::nowHaveProxy TelepathyQt4/account-factory.cpp | 7 +++---- TelepathyQt4/channel-factory.cpp | 7 +++---- TelepathyQt4/connection-factory.cpp | 7 +++---- TelepathyQt4/dbus-proxy-factory-internal.h | 2 +- TelepathyQt4/dbus-proxy-factory.cpp | 26 +++++++++----------------- TelepathyQt4/dbus-proxy-factory.h | 2 +- 6 files changed, 20 insertions(+), 31 deletions(-) commit 7a00d7a568cbe0a95cf46beb5f9d5e049de9e097 Author: Olli Salli Date: Fri Sep 3 19:30:49 2010 +0300 Don't ever double-connect to proxy invalidated in DBusProxyFactory::cache TelepathyQt4/dbus-proxy-factory.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 97c58208fb17429207d3eeb3397102b20e837ef8 Author: Olli Salli Date: Fri Sep 3 19:24:24 2010 +0300 Add basic docs for DBusProxyFactory TelepathyQt4/dbus-proxy-factory.cpp | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) commit 2664f43f38ce1d141d4d117a167c23585706c0cf Author: Olli Salli Date: Fri Sep 3 18:33:35 2010 +0300 Add a test for Account connection factory code tests/dbus/Makefile.am | 5 + tests/dbus/account-connection-factory.cpp | 452 ++++++++++++++++++++++++++++++ 2 files changed, 457 insertions(+) commit d54cf6e1084f5df136d316530980f68f76421ba8 Author: Olli Salli Date: Fri Sep 3 18:33:03 2010 +0300 Reorder AM factory getter implementations to be consistent with the header TelepathyQt4/account-manager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit fc2c86938ab078eabd0556aac10e15ece480de8b Author: Olli Salli Date: Fri Sep 3 18:32:33 2010 +0300 Make it possible to specify {Connection,Channel}Factories for an Account TelepathyQt4/account-factory.cpp | 2 +- TelepathyQt4/account.cpp | 228 ++++++++++++++++++++++++++++++++++----- TelepathyQt4/account.h | 16 +++ 3 files changed, 216 insertions(+), 30 deletions(-) commit 507c97e8671ccf7e849c6e7ffddbb571f348b2bb Author: Olli Salli Date: Fri Sep 3 18:21:09 2010 +0300 Allow DBusProxyFactory::Cache::put() to override an existing cache item If there is an item, but it has been invalidated in the same mainloop iteration (and consequently we yet haven't got the invalidation signal), we want to overwrite it with a new valid one. TelepathyQt4/dbus-proxy-factory.cpp | 2 -- 1 file changed, 2 deletions(-) commit c6b675e34c0605c87104c4dea9fe7aabf858acf7 Author: Olli Salli Date: Fri Sep 3 18:19:48 2010 +0300 Don't set the proxy as a parent for the DBusProxyFactory::proxy() PendingReadys Otherwise they'll blow up with double free madness in certain otherwise correct application code sequences. TelepathyQt4/dbus-proxy-factory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit eb570459699001aa5d7cb75fecd7d071745cc575 Author: Olli Salli Date: Fri Sep 3 18:19:03 2010 +0300 Make {Account,Connection}Factory::create() have a features param TelepathyQt4/account-factory.cpp | 13 +++---------- TelepathyQt4/account-factory.h | 6 ++++-- TelepathyQt4/account-manager.cpp | 4 ++-- TelepathyQt4/account-manager.h | 2 +- TelepathyQt4/connection-factory.cpp | 9 +++++++-- TelepathyQt4/connection-factory.h | 4 +++- 6 files changed, 20 insertions(+), 18 deletions(-) commit b5279f152b91a961fdba1486159cc9121df0502e Author: Olli Salli Date: Fri Sep 3 12:18:52 2010 +0300 Actually implement AccountManager::*factory() accessors TelepathyQt4/account-manager.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 0905810778b243853b8599403e4b7b79db3f4f3d Author: Olli Salli Date: Thu Sep 2 21:46:02 2010 +0300 Combine the AccountManager factory constructor variants TelepathyQt4/account-manager.cpp | 20 ++++++-------------- TelepathyQt4/account-manager.h | 14 ++++++-------- 2 files changed, 12 insertions(+), 22 deletions(-) commit 239b2f3e9024417d972de6df290fbf0e21f15fa8 Author: Olli Salli Date: Thu Sep 2 21:22:15 2010 +0300 Make AccountManager warn if the factories are for a different bus than the proxy itself TelepathyQt4/account-manager.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit d7b0d616dd060e6c4a59a0165aa38bafac64dd34 Author: Olli Salli Date: Thu Sep 2 21:11:34 2010 +0300 Make ChannelFactory::create private and deprecated (soon to be removed from internal use too) TelepathyQt4/channel-factory.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) commit f9127e11394590785fddbda4999dde3de4b4b168 Author: Olli Salli Date: Thu Sep 2 20:57:48 2010 +0300 Remove superfluous DBusProxyFactory forward-declaration from types.h TelepathyQt4/types.h | 1 - 1 file changed, 1 deletion(-) commit db187a3521829e6cdda204a5ddf25f6009e1c094 Author: Olli Salli Date: Thu Sep 2 20:48:13 2010 +0300 Split FixedFeature/Account/ConnectionFactory into their own source/header files TelepathyQt4/AccountFactory | 2 +- TelepathyQt4/ConnectionFactory | 2 +- TelepathyQt4/FixedFeatureFactory | 2 +- TelepathyQt4/Makefile.am | 6 ++ TelepathyQt4/account-factory.cpp | 70 ++++++++++++++++++ TelepathyQt4/account-factory.h | 68 ++++++++++++++++++ TelepathyQt4/connection-factory.cpp | 61 ++++++++++++++++ TelepathyQt4/connection-factory.h | 71 ++++++++++++++++++ TelepathyQt4/dbus-proxy-factory-internal.h | 2 + TelepathyQt4/dbus-proxy-factory.cpp | 112 ----------------------------- TelepathyQt4/dbus-proxy-factory.h | 70 ------------------ TelepathyQt4/fixed-feature-factory.cpp | 66 +++++++++++++++++ TelepathyQt4/fixed-feature-factory.h | 65 +++++++++++++++++ 13 files changed, 412 insertions(+), 185 deletions(-) commit 77b318bb048e44184e2b8163af6e591ac027d4f1 Author: Olli Salli Date: Thu Sep 2 19:15:13 2010 +0300 Assert on the DBusProxyFactory dynamic_casts succeeding as appropriate TelepathyQt4/dbus-proxy-factory.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 0804b3b53fb2093e99a1b76e0ff201f5a9c7e8df Author: Olli Salli Date: Thu Sep 2 19:07:40 2010 +0300 Remove extra indentation from DBusProxyFactory::Cache TelepathyQt4/dbus-proxy-factory-internal.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 85b4d7b5f50f9479098427a89d7c4dcd040ce487 Author: Olli Salli Date: Thu Sep 2 19:05:22 2010 +0300 Substitute spaces for an accidental tab in TelepathyQt4/Makefile.am TelepathyQt4/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a1b9bff70750bc770c7e6b5e879970625a8f0990 Author: Olli Salli Date: Thu Sep 2 19:02:14 2010 +0300 Reorder create methods/ctors/dtors in DBusProxyFactory etc to be consistent with the rest of the lib TelepathyQt4/channel-factory.cpp | 16 +++++----- TelepathyQt4/channel-factory.h | 4 +-- TelepathyQt4/dbus-proxy-factory.cpp | 60 ++++++++++++++++++------------------- TelepathyQt4/dbus-proxy-factory.h | 8 ++--- 4 files changed, 44 insertions(+), 44 deletions(-) commit c2d69fb4134f3e73de0ebbdabef4d6cedab5e1a8 Author: Olli Salli Date: Thu Sep 2 18:45:46 2010 +0300 Reorder FixedFeatureFactory::features() to be before the corresponding add* functions TelepathyQt4/dbus-proxy-factory.cpp | 10 +++++----- TelepathyQt4/dbus-proxy-factory.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) commit 85b693df1d8de3feb1360dd1bd597dc7ee5db774 Author: Olli Salli Date: Thu Sep 2 18:43:17 2010 +0300 Removed "get" from DBusProxyFactory (and its subclasses) method names TelepathyQt4/account-manager.cpp | 2 +- TelepathyQt4/channel-factory.cpp | 4 ++-- TelepathyQt4/channel-factory.h | 2 +- TelepathyQt4/dbus-proxy-factory.cpp | 10 +++++----- TelepathyQt4/dbus-proxy-factory.h | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) commit bd9356a66349c3f8f7223f5701ae11b54de3290c Author: Olli Salli Date: Thu Sep 2 18:33:03 2010 +0300 Add missing blank line after namespace begin in dbus-proxy-factory.cpp TelepathyQt4/dbus-proxy-factory.cpp | 1 + 1 file changed, 1 insertion(+) commit 26bb3ed2168fbb596d0bea16a29d9210f272c5ec Author: Olli Salli Date: Thu Sep 2 18:32:42 2010 +0300 Fix typo I introduced in SharedPtr docs TelepathyQt4/shared-ptr.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3688f4e8d4531d32b9138a435916697a36f2014a Author: Olli Salli Date: Mon Aug 30 15:43:42 2010 +0300 Make it possible to specific Account(and other) factories to use on a AccountManager TelepathyQt4/account-manager.cpp | 74 +++++++++++++++++++++++++++++++++++----- TelepathyQt4/account-manager.h | 23 +++++++++++++ 2 files changed, 88 insertions(+), 9 deletions(-) commit c4b59e4c69ee87b2cd2969fbdd60196b700d895b Author: Olli Salli Date: Mon Aug 30 15:42:51 2010 +0300 Make PendingReady able to hold a ref to the proxy it's making ready Otherwise we'd need to return a pair from factories. TelepathyQt4/dbus-proxy-factory.cpp | 20 +++++++++----------- TelepathyQt4/pending-ready.cpp | 19 +++++++++++++------ TelepathyQt4/pending-ready.h | 7 +++++-- 3 files changed, 27 insertions(+), 19 deletions(-) commit f598cdc80994cd91ed0b63d1b24f2f18e3bbf9ca Author: Olli Salli Date: Mon Aug 30 15:12:40 2010 +0300 Add const variants for RefCounted::ref() & deref() so that pointer-to-const can be used TelepathyQt4/shared-ptr.h | 5 +++++ TelepathyQt4/types.h | 2 ++ 2 files changed, 7 insertions(+) commit 1310bb41dc6e6d8a7d1b73f8383b5b26ccc94617 Author: Olli Salli Date: Mon Aug 30 14:29:09 2010 +0300 Make ChannelFactory a (still a stub placeholder) DBusProxyFactory TelepathyQt4/ChannelFactory | 13 +++++++++++++ TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/channel-factory.cpp | 37 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-factory.h | 33 +++++++++++++++++++++++++++++++-- 4 files changed, 83 insertions(+), 2 deletions(-) commit 843b69b01d6f86392db53e23971c2c290b3d2717 Author: Olli Salli Date: Mon Aug 30 14:26:20 2010 +0300 Refactor DBusProxyFactory a bit to make it more saner for ChannelFactory TelepathyQt4/FixedFeatureFactory | 13 +++ TelepathyQt4/dbus-proxy-factory.cpp | 171 +++++++++++++++++++----------------- TelepathyQt4/dbus-proxy-factory.h | 111 ++++++++++++----------- TelepathyQt4/types.h | 3 + 4 files changed, 168 insertions(+), 130 deletions(-) commit 1eac380827cdfd4e9304cbc3760afbe9b48d6750 Author: Olli Salli Date: Sun Aug 29 23:58:51 2010 +0300 Use the SharedPtr upcasting constructor everywhere TelepathyQt4/channel-factory.cpp | 30 ++++++++++-------------------- TelepathyQt4/client-registrar.cpp | 5 ++--- TelepathyQt4/dbus-proxy-factory.cpp | 19 +++++++++++++++---- TelepathyQt4/dbus-proxy-factory.h | 5 +++++ 4 files changed, 32 insertions(+), 27 deletions(-) commit db1ae546b8b1a64cce0015f87a5aab714cb59871 Author: Olli Salli Date: Sun Aug 29 21:39:55 2010 +0300 Add AccountFactory::coreFactory corresponding to the old default AM behavior TelepathyQt4/dbus-proxy-factory.cpp | 9 +++++++++ TelepathyQt4/dbus-proxy-factory.h | 1 + 2 files changed, 10 insertions(+) commit b0205d9a4cc3c18ef2cb529eda65f79be1266718 Author: Olli Salli Date: Sun Aug 29 21:33:32 2010 +0300 Make {Account,Connection}Factory more proper RefCounteds TelepathyQt4/dbus-proxy-factory.cpp | 22 ++++++++++++++++------ TelepathyQt4/dbus-proxy-factory.h | 15 +++++++++++---- TelepathyQt4/types.h | 5 +++++ 3 files changed, 32 insertions(+), 10 deletions(-) commit 49a13008664bb50af3ae5ad45d5709ceff0451aa Author: Olli Salli Date: Sun Aug 29 21:13:40 2010 +0300 Future-proof {Account,Connection}Factory a bit with a currently unused mPriv TelepathyQt4/dbus-proxy-factory.h | 8 ++++++++ 1 file changed, 8 insertions(+) commit 70ec2dfa134829fc6ebdd2d5ddd64476975b2918 Author: Olli Salli Date: Sun Aug 29 11:11:02 2010 +0300 Export the DBusProxyFactory public classes TelepathyQt4/dbus-proxy-factory.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit fad0fdff48ed42ca47440f7203e1da7629722cfe Author: Olli Salli Date: Sun Aug 29 11:07:01 2010 +0300 Add {Account,Connection}Factory TelepathyQt4/AccountFactory | 13 ++++++++++ TelepathyQt4/ConnectionFactory | 13 ++++++++++ TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/dbus-proxy-factory.cpp | 48 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/dbus-proxy-factory.h | 28 ++++++++++++++++++++++ 5 files changed, 104 insertions(+) commit 6a7f9ce2d7afd5a31d22af05fbc5e51df7695fc0 Author: Olli Salli Date: Sun Aug 29 11:06:24 2010 +0300 Add an upcasting ctor to SharedPtr TelepathyQt4/shared-ptr.h | 2 ++ 1 file changed, 2 insertions(+) commit 69a8fbdb4ca065685196f067154e3e3ad132ce99 Author: Olli Salli Date: Sun Aug 29 11:05:54 2010 +0300 Add StatefulDBusProxy::uniqueNameFrom() TelepathyQt4/dbus-proxy.cpp | 47 +++++++++++++++++++++++++++++++++------------ TelepathyQt4/dbus-proxy.h | 4 ++++ 2 files changed, 39 insertions(+), 12 deletions(-) commit 719e472e42d208174fbba2df4d4d9f212f2f1483 Author: Olli Salli Date: Sun Aug 29 10:12:26 2010 +0300 Add DBusProxyFactory::bus() TelepathyQt4/dbus-proxy-factory.cpp | 7 ++++++- TelepathyQt4/dbus-proxy-factory.h | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) commit 0afaec7bbcb971d462c6200221916220ad136ac9 Author: Olli Salli Date: Sat Aug 28 10:20:18 2010 +0300 Implement DBusProxyFactory::getProxy() TelepathyQt4/dbus-proxy-factory.cpp | 73 ++++++++++++++++++++++++++++--------- TelepathyQt4/dbus-proxy-factory.h | 8 +++- TelepathyQt4/pending-ready.cpp | 67 ++++++++++++++++++++++++++++++++++ TelepathyQt4/pending-ready.h | 7 ++++ 4 files changed, 137 insertions(+), 18 deletions(-) commit e35e53653253473acb1fe4e20dbf319790d4006d Author: Olli Salli Date: Fri Aug 27 21:09:53 2010 +0300 Add the cache to DBusProxyFactory TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/dbus-proxy-factory-internal.h | 56 +++++++++++++++++++++++++++++ TelepathyQt4/dbus-proxy-factory.cpp | 58 +++++++++++++++++++++++++++--- TelepathyQt4/dbus-proxy-factory.h | 2 ++ 4 files changed, 114 insertions(+), 4 deletions(-) commit f4f137bd50de33576ad550b6610de8c92953d5b2 Author: Olli Salli Date: Fri Aug 27 18:42:36 2010 +0300 Add a DBusProxyFactory base-class stub TelepathyQt4/DBusProxyFactory | 13 ++++++ TelepathyQt4/Makefile.am | 3 ++ TelepathyQt4/dbus-proxy-factory.cpp | 93 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/dbus-proxy-factory.h | 82 ++++++++++++++++++++++++++++++++ 4 files changed, 191 insertions(+) commit 8254ce81637b1e0e3c261ce53bd6505cfaddf57a Author: Olli Salli Date: Fri Aug 27 17:48:59 2010 +0300 Use SharedPtr::qObjectCast for all pointer to QObject casts examples/file-transfer/sender.cpp | 2 +- tests/dbus/streamed-media-chan-call.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 621207d5b70c7eaf2d368b39df1c1d18c4034d1f Author: Olli Salli Date: Fri Aug 27 17:48:00 2010 +0300 Add SharedPtr::qObjectCast Using dynamic_cast for QObject types is sub-optimal. TelepathyQt4/shared-ptr.dox | 33 +++++++++++++++++++++++++++++++++ TelepathyQt4/shared-ptr.h | 6 ++++++ 2 files changed, 39 insertions(+) commit 3785c0847c0ca15605e90b0d881e72760d1f1b88 Author: Will Thompson Date: Thu Sep 9 11:38:34 2010 +0100 Add a presencePublicationRequested variant with details This is needed to get attributes like the message associated with the request. TelepathyQt4/contact-manager.cpp | 2 ++ TelepathyQt4/contact-manager.h | 2 ++ 2 files changed, 4 insertions(+) commit 6738c4a02aba136fdd565412dc05323aeb371e1e Merge: be41ef4 73cdd2a Author: Xavier Claessens Date: Wed Sep 8 13:44:40 2010 +0200 Merge branch 'avatar-cache' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 73cdd2a97f78508cb333356adef04f9761f6b3ad Author: Xavier Claessens Date: Wed Sep 8 13:44:15 2010 +0200 Add NEWS entry for the avatar cache NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 6067257046c6ec5cd4345ba232b41c1934b32334 Author: Xavier Claessens Date: Wed Sep 8 13:35:19 2010 +0200 Fix QString usage TelepathyQt4/contact-manager.cpp | 12 ++++++------ tests/dbus/contacts-avatar.cpp | 20 +++++++++----------- 2 files changed, 15 insertions(+), 17 deletions(-) commit 8197e3a2d922dc748c4d56bbb80e958871d00e54 Author: Xavier Claessens Date: Wed Sep 8 10:51:35 2010 +0200 Fix various coding styles TelepathyQt4/contact-manager.cpp | 11 ++++----- tests/dbus/contacts-avatar.cpp | 52 ++++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 32 deletions(-) commit 62c8e43bcb1bfff964f928081ad0a34de11f9820 Author: Xavier Claessens Date: Wed Sep 8 10:08:22 2010 +0200 Avoid possible infinite loop in tests tests/dbus/contacts-avatar.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) commit c1336528284cb7a4f8812ed7a8e473c0f2f0b190 Author: Xavier Claessens Date: Tue Sep 7 16:15:40 2010 +0200 Fix review comments TelepathyQt4/contact-manager.cpp | 15 +++++++++++---- TelepathyQt4/contact.cpp | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) commit d9e7f7e034ddcd6c60b1b31bb1e5bbc49598357e Author: Xavier Claessens Date: Tue Sep 7 13:47:20 2010 +0200 Add unit tests for the avatar cache tests/dbus/Makefile.am | 5 + tests/dbus/contacts-avatar.cpp | 304 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 309 insertions(+) commit 1d40548a6248f238df577117dca71779b32e307e Author: Xavier Claessens Date: Tue Sep 7 13:46:33 2010 +0200 Implement FeatureAvatarData on Tp::Contact using an avatar cache TelepathyQt4/contact-manager.cpp | 137 +++++++++++++++++++++++++++++++++++++-- TelepathyQt4/contact-manager.h | 4 ++ TelepathyQt4/contact.cpp | 74 +++++++++++++++++++-- TelepathyQt4/contact.h | 5 ++ TelepathyQt4/types.h | 10 +++ 5 files changed, 216 insertions(+), 14 deletions(-) commit bc346e19780ff4d7dd45c62af366e32644dbff3d Author: Xavier Claessens Date: Tue Sep 7 13:46:16 2010 +0200 Add cmName() and protocolName() on Connection by parsing its object path TelepathyQt4/connection.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/connection.h | 3 +++ 2 files changed, 47 insertions(+) commit 8e7aa0be072db38464d947566715992f079ab8ae Author: Xavier Claessens Date: Thu Sep 2 11:18:11 2010 +0200 Copy tp_escape_as_identifier from telepathy-glib .gitignore | 1 + TelepathyQt4/Makefile.am | 7 ++- TelepathyQt4/Utils | 13 ++++++ TelepathyQt4/utils.cpp | 116 +++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/utils.h | 39 ++++++++++++++++ tests/Makefile.am | 9 +++- tests/utils.cpp | 34 ++++++++++++++ 7 files changed, 215 insertions(+), 4 deletions(-) commit be41ef4d85d738e2e7bae9c21bbf23ee9dd91e58 Author: Senko Rasic Date: Mon Sep 6 16:09:34 2010 +0200 do-nothing test: use Q_SLOTS macro instead of slots keyword The keyword might be undefined tests/dbus/do-nothing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0685f73e9b29b58a2083ac02100753b8e14dc39f Author: Xavier Claessens Date: Thu Sep 2 11:17:23 2010 +0200 Fix build error, forgot to replace a "slots" to "Q_SLOTS" tests/dbus/do-nothing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8e00db655b75bc08f881ebc8b87c7f2764f640a1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 1 14:02:28 2010 +0300 Updated NEWS with bug number for build error with glib 2.25. NEWS | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit b2b933cf4663d4bb06c701e9330c701c27fecabd Author: Xavier Claessens Date: Wed Sep 1 12:54:23 2010 +0200 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 42fbacd1af1d9282a4b3cac2c23f06c652cc3a92 Author: Xavier Claessens Date: Wed Sep 1 12:39:45 2010 +0200 Fix build with glib >= 2.25 With glib 2.25.x gio headers uses "signals" in a struct member. But qt does #define signals protecteed. That makes g++ fail to build files that use gio and qt together. configure.ac | 2 ++ examples/call/call-handler.cpp | 2 +- examples/call/call-widget.cpp | 4 ++-- examples/call/call-window.cpp | 2 +- examples/call/farsight-channel.cpp | 6 +++--- tests/dbus/account-basics.cpp | 4 ++-- tests/dbus/account-channel-dispatcher.cpp | 4 ++-- tests/dbus/chan-basics.cpp | 4 ++-- tests/dbus/chan-conference.cpp | 6 +++--- tests/dbus/chan-group.cpp | 12 ++++++------ tests/dbus/client.cpp | 6 +++--- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-roster-groups.cpp | 14 +++++++------- tests/dbus/conn-roster.cpp | 8 ++++---- tests/dbus/contacts-info.cpp | 2 +- tests/dbus/contacts.cpp | 2 +- tests/dbus/streamed-media-chan-call.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- 18 files changed, 43 insertions(+), 41 deletions(-) commit 89cfa04cb59831ddb0fdf296d5c4c78aa9390f71 Author: Olli Salli Date: Thu Aug 26 18:15:02 2010 +0300 TestConnBasics: Destroy the conn proxy at the end of each test so events don't leak tests/dbus/conn-basics.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 0b1b54f22acada2db2224c853c2db7c623c19727 Author: Olli Salli Date: Thu Aug 26 16:50:46 2010 +0300 Updated NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit 562965a27951b6110257e21600a5e70ab7f558ed Merge: 798182d 4a9eef4 Author: Olli Salli Date: Thu Aug 26 16:37:47 2010 +0300 Merge branch 'connection-error-details' Reviewed-by: Andre Magalhaes (andrunko) commit 4a9eef4e7d05a119e4a2fae0dfd1580f84772da6 Author: Olli Salli Date: Thu Aug 26 16:36:06 2010 +0300 Make Connection::ErrorDetails class doc comment more consistent with other classes TelepathyQt4/connection.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit 4e98b3ddad6b84ba3bb969bae80937217022de70 Author: Olli Salli Date: Thu Aug 26 16:35:44 2010 +0300 Remove old cruft from Connection class doc comment TelepathyQt4/connection.cpp | 8 -------- 1 file changed, 8 deletions(-) commit 29fbe920a4085ea703b69778ca2f5c37484d9a94 Author: Olli Salli Date: Thu Aug 26 16:29:42 2010 +0300 Missing braces in Connection::errorDetails() TelepathyQt4/connection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 446ee353fbd11dca8794589615439b9ad5cdf794 Author: Olli Salli Date: Thu Aug 26 16:24:13 2010 +0300 Make Connection::ErrorDetails usable stand-alone to wrap old APIs TelepathyQt4/account.cpp | 12 ++++++++++-- TelepathyQt4/account.h | 1 + TelepathyQt4/connection.cpp | 17 ++++++++++++----- TelepathyQt4/connection.h | 3 +-- 4 files changed, 24 insertions(+), 9 deletions(-) commit 2ea7c5fc666d0ebf83b097ed8d3038707e0ae6a9 Author: Olli Salli Date: Thu Aug 26 15:36:16 2010 +0300 Deprecate Connection::statusChanged(status, reason) and add a new one without the reason param. The error name given in invalidated() should be the primary means of error handling, with the reason only used as a fallback if a client doesn't understand the error name, so we must make the API force the clients to use invalidated() as the only error handling -triggering signal as much as we can. TelepathyQt4/connection.cpp | 37 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/connection.h | 3 ++- 2 files changed, 39 insertions(+), 1 deletion(-) commit c569c9be4ce1628acb0460aa5fcb86606823c86d Author: Olli Salli Date: Thu Aug 26 15:14:05 2010 +0300 Doxyment Connection::ErrorDetails TelepathyQt4/connection.cpp | 90 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) commit 109383653f5a3d349af753a9c0a7cde9b5905290 Author: Olli Salli Date: Thu Aug 26 15:13:41 2010 +0300 Connection::ErrorDetails: Don't include the draft TLS keys just yet TelepathyQt4/connection.h | 6 ++++++ tests/dbus/conn-basics.cpp | 3 +++ 2 files changed, 9 insertions(+) commit 40d308a1fe54bb23f8006ccb453490480495a523 Author: Olli Salli Date: Thu Aug 26 14:55:52 2010 +0300 Test Connection::errorDetails() tests/dbus/conn-basics.cpp | 50 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 11 deletions(-) commit 75773edabe60db8344906c752f251b09c8a14249 Author: Olli Salli Date: Thu Aug 26 14:55:32 2010 +0300 Add Connection::errorDetails() TelepathyQt4/connection.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/connection.h | 55 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) commit 798182ddc33d8fc6f1887b7e0087cb82e2a06a8d Merge: 4afd025 2777344 Author: Olli Salli Date: Thu Aug 26 00:34:56 2010 +0300 Merge branch 'oneliner-braces' Reviewed-by: Andre Magalhaes (andrunko) commit 2777344035b666a24b0ab6f18b5b46d3b8c0674d Author: Olli Salli Date: Thu Aug 26 00:27:24 2010 +0300 Make sure all if/for/while/else bodies have {}, even oneliners TelepathyQt4/account.cpp | 5 +++-- TelepathyQt4/channel.cpp | 15 ++++++++++----- TelepathyQt4/connection-manager.cpp | 3 ++- TelepathyQt4/debug.cpp | 10 ++++++---- TelepathyQt4/manager-file.cpp | 22 ++++++++++++---------- tests/dbus/account-channel-dispatcher.cpp | 10 ++++++---- tests/dbus/conn-roster-groups.cpp | 6 ++++-- tests/dbus/conn-roster.cpp | 3 ++- tests/dbus/streamed-media-chan-call.cpp | 9 ++++++--- tests/dbus/streamed-media-chan.cpp | 13 +++++++++---- 10 files changed, 60 insertions(+), 36 deletions(-) commit 4afd0257b1d26cb64d5dc3c4478a1fbd16807611 Author: Olli Salli Date: Thu Aug 26 00:02:06 2010 +0300 Updated NEWS NEWS | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 854ee0caa1fafff794cfd6ce6a7911aed9ef0bdd Merge: a6b59c3 139f992 Author: Olli Salli Date: Wed Aug 25 23:50:19 2010 +0300 Merge remote branch 'oggis/channel' Reviewed-by: Andre Magalhaes (andrunko) commit 139f992c494ed9ab7d02026c94e5f951541c90b0 Author: Olli Salli Date: Wed Aug 25 23:48:06 2010 +0300 Properly transfer the PendingChannel fallbacks to actual Channel variables TelepathyQt4/channel.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 51addbeaf83f83f098cc6e6cde37534f1016d00c Author: Olli Salli Date: Wed Aug 25 22:39:50 2010 +0300 Channel:: Refactor the onMC / onMCD code a bit to be cleaner TelepathyQt4/channel.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) commit 751a9f1fb476c8fc22e9e7c85b37f52ada9ebad4 Author: Olli Salli Date: Wed Aug 25 20:40:11 2010 +0300 TestChanGroup: test an actual membership change for the MCD tests tests/dbus/chan-group.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) commit d55a61a94a55bd5b572ec6ea51c235e0fa2e899b Author: Olli Salli Date: Wed Aug 25 20:35:37 2010 +0300 Make Channel::groupSelfContact() always have some non-NULL contact if ready This has the side effect of making emitting groupMembersChanged with people only in the removed set work (again, I hope) even if the local user is not a member of the group. Actually... that bug has probably made contact list groups totally suck, with them never reporting removed members! (We of course usually aren't a member on the list of our contact groups, unless we consider extremely lonely users the norm). TelepathyQt4/channel.cpp | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) commit c6ff8172515aac6a92cef63a6a69e215aa9af75c Author: Olli Salli Date: Wed Aug 25 18:53:51 2010 +0300 TestChanGroup: Test a group which has no spec 0.17.6 Group properties tests/dbus/chan-group.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) commit 81e900527c5c1e52d8f35ab8a81169d4ee6792c8 Author: Olli Salli Date: Wed Aug 25 18:28:05 2010 +0300 Test Channel with a MCD-enabled service as well tests/dbus/chan-group.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) commit 2e6e9d8b9a254e36b2bc0681f0827f32b47e648c Author: Olli Salli Date: Wed Aug 25 18:27:03 2010 +0300 Add fallbacks for services missing Channel.{Requested,InitiatorHandle} TelepathyQt4/channel.cpp | 14 ++++++++++---- TelepathyQt4/pending-channel.cpp | 29 +++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 6 deletions(-) commit 820cad80d6a5c7a3747614011d0a377d3c700833 Author: Olli Salli Date: Wed Aug 25 14:26:16 2010 +0300 Updated NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 3b0d93b5c51d6623c536d09d723bddc601464798 Author: Olli Salli Date: Wed Aug 25 13:32:56 2010 +0300 Fix a race condition where Channel could in rare cases miss a MembersChangedDetailed signal TelepathyQt4/channel.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) commit 2c4f14c22053cc4d969a014459eaead117d57475 Author: Olli Salli Date: Wed Aug 25 13:20:56 2010 +0300 Make Channel debug slightly cleaner Now the Channel is identified by the object path in some of the debug, and some redundant ones are removed. TelepathyQt4/channel.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit a6b59c355c80622c468068f312f63376edce1378 Author: Olli Salli Date: Wed Aug 25 12:50:51 2010 +0300 Updated NEWS NEWS | 6 ++++++ 1 file changed, 6 insertions(+) commit d9ee5edc57f4b9d3bd645c74f3a8599fcd33f25c Author: Olli Salli Date: Wed Aug 25 12:48:31 2010 +0300 Move the NEWS set tw=80 out of the way to the EOF NEWS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0a4fc5836ab66508b916615589c1e551da05ca9f Author: Olli Salli Date: Wed Aug 25 12:37:23 2010 +0300 Reformat NEWS with tw=80 so it better suits sending by mail NEWS | 55 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 27 deletions(-) commit 14c4182020954589d195fdbec73a009aa250e043 Author: Olli Salli Date: Wed Aug 25 12:17:00 2010 +0300 TestConnRosterGroups: make sure the conn invalidation from the 1st case doesn't leak to the 2nd tests/dbus/conn-roster-groups.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit af93fff8f448007efd774646e1e92ee2cb1fa0f4 Author: Olli Salli Date: Wed Aug 25 12:16:23 2010 +0300 TestConnRosterGroup: Remove duplicate simulation delay arg from test service constructor call tests/dbus/conn-roster-groups.cpp | 1 - 1 file changed, 1 deletion(-) commit 4a7c125cbb0d737b7f62cf07f4a3e7a4c287ba54 Author: Olli Salli Date: Tue Aug 24 21:30:35 2010 +0300 Bump nano version (now 0.3.8.1) configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cf0483529c14b29e12f8f58df2330ba5ab3039cd Author: Olli Salli Date: Tue Aug 24 21:07:14 2010 +0300 REALLY prepare release 0.3.8 - previously i didn't increment the libtool revision configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 28e4b5acf028069e0efb7c367595cc3256150d19 Author: Olli Salli Date: Tue Aug 24 20:01:30 2010 +0300 Prepare release 0.3.8 NEWS | 2 +- configure.ac | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 618b7bea9e0aa8a4c28a80fe98aa34df6d558593 Author: Olli Salli Date: Tue Aug 24 20:33:21 2010 +0300 Updated NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit dbec2abc9b39dd074043bb20b633f11597eb6ba8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 24 20:27:31 2010 +0300 ChannelRequest: Assert if extractMainProps is called more than once. TelepathyQt4/channel-request.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 549d6ad4cf8c3ff38c7ca7e7e3364eadc1e93fa1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 24 20:22:15 2010 +0300 ChannelRequest: Removed duplicated call to setInterfaces. TelepathyQt4/channel-request.cpp | 2 -- 1 file changed, 2 deletions(-) commit 479e921ed0bf62a1a8b97bc0174594a9e93b0534 Author: Olli Salli Date: Tue Aug 24 19:59:10 2010 +0300 Updated NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 3a63917e79b3727a1d89e79b3a93efa34885cbac Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 22 18:36:44 2010 -0300 Account: Only parse connection object path on ::connection when needed. TelepathyQt4/account.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 651ce3e34d5dea28ef0578642a5552830de1ab55 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 24 20:08:29 2010 +0300 ChannelRequest: Delete watcher once we are done with it. TelepathyQt4/channel-request.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 5cd2141e525995dd0295c180906d06c0f990e5f7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 24 20:04:10 2010 +0300 ChannelRequest: Properly use immutable properties. TelepathyQt4/channel-request.cpp | 87 ++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 31 deletions(-) commit b4fde95b21e2220fc4cc6c0ce41f1dd866b2497f Author: Olli Salli Date: Tue Aug 24 19:46:06 2010 +0300 Update NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 883813a88b5d9fc0567c316c813f087032966098 Author: Olli Salli Date: Tue Aug 24 19:32:56 2010 +0300 Update the future/call test service CM from tp-glib This adds the usual "Interfaces" property to the media stream and content objects on the CM. tests/lib/glib/future/call/call-content.c | 13 +++++++++++++ tests/lib/glib/future/call/call-stream.c | 13 +++++++++++++ 2 files changed, 26 insertions(+) commit e7e20030d5db7ab4315394bb9871cc2bb916ae86 Author: Olli Salli Date: Tue Aug 24 18:06:51 2010 +0300 Pull in XML from spec 0.19.11 spec/Authentication_TLS_Certificate.xml | 304 +++++++++++++++++++++++ spec/Call_Content.xml | 13 + spec/Call_Stream.xml | 11 + spec/Channel_Interface_Call_State.xml | 14 ++ spec/Channel_Interface_Room.xml | 373 ++++++++++++++++++++++++++++ spec/Channel_Type_Room_List.xml | 17 +- spec/Channel_Type_Server_TLS_Connection.xml | 60 +++++ spec/Channel_Type_Text.xml | 14 +- spec/Connection.xml | 44 +++- spec/Connection_Interface_Client_Types.xml | 203 +++++++++++++++ spec/Protocol.xml | 65 ++++- spec/all.xml | 16 +- spec/errors.xml | 72 +++++- 13 files changed, 1182 insertions(+), 24 deletions(-) commit 6f7402e4cd5ce8419b0fa692711518318bd414a9 Author: Olli Salli Date: Tue Aug 24 16:28:24 2010 +0300 Update NEWS NEWS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 74d3ae16cb90b166b3ef2b7e6acac09a0fc7a6c1 Author: Olli Salli Date: Tue Aug 24 15:44:57 2010 +0300 Settle some already fixed FIXMEs in Connection TelepathyQt4/connection.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) commit d37dcd1ab0570c4ddce3370e8f7521a314dbb1d1 Author: Olli Salli Date: Tue Aug 24 15:31:27 2010 +0300 Bring Connection test coverage up a bit (now 75.2% of lines) TelepathyQt4/connection.h | 2 +- tests/dbus/conn-basics.cpp | 68 +++++++++++++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 11 deletions(-) commit 12f08d18dd7a66c9e8e2e85dc37eaa558e3cc5d9 Author: Olli Salli Date: Tue Aug 24 13:41:51 2010 +0300 Remove useless ensuring the props iface is there in Conn::P::introspectSimplePresence() TelepathyQt4/connection.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 41ff3726c678a5f4c66f730a02cb57f93fd3c072 Author: Olli Salli Date: Tue Aug 24 13:37:53 2010 +0300 Test that connection->capabilities() isn't a death-trap tests/dbus/conn-capabilities.cpp | 50 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) commit 2595a722e60343860d4f9b6ef3cddbf956606782 Author: Olli Salli Date: Tue Aug 24 13:31:11 2010 +0300 Make Connection::capabilities() less of a death-trap similarly to ::contactManager() TelepathyQt4/connection.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) commit ac75a467a430eba80391cdcb8c2fdd238da354e5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:37:44 2010 -0300 chan-conference test: Reset channels when finished to avoid channels trying to make a destroyed connection ready. tests/dbus/chan-conference.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 70445aeed7e6d08112ecf9d6948e125107d8accf Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:32:37 2010 -0300 Connection: General improvement and add support to retrieve properties using GetAll. - Reorder methods by features (maintainance++) - Use GetAll to retrieve properties and fallback to GetInterfaces/Status/SelfHandle when needed. - Improved logic to run FeatureCore introspection using an introspection queue. TelepathyQt4/connection.cpp | 514 +++++++++++++++++++++++++++----------------- TelepathyQt4/connection.h | 23 +- 2 files changed, 331 insertions(+), 206 deletions(-) commit 87031ff484c6350982551f384e0a193f68573648 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:29:49 2010 -0300 ReadinessHelper: Added method to force introspection status without re-running the introspection process. This method will be used by connection to avoid re-run introspection when the status is retrieved for the first time. TelepathyQt4/readiness-helper.cpp | 21 +++++++++++++++++++++ TelepathyQt4/readiness-helper.h | 1 + 2 files changed, 22 insertions(+) commit 66a75efba8437d33c17779789b2c29adbdc162c6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:28:48 2010 -0300 OptionalInterfaceFactory: Added helper methods to check if an interface is present. TelepathyQt4/optional-interface-factory.h | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 400eef679e75071298d55241c4be8dad162f05c5 Author: Olli Salli Date: Tue Aug 24 11:21:28 2010 +0300 Remove tabs I just introduced to Account::icon(Name)() NEWS | 53 ++++++++++++++++++++++++------------------------ TelepathyQt4/account.cpp | 14 ++++++------- 2 files changed, 34 insertions(+), 33 deletions(-) commit 126667117d2551b6c775fdb0e753b318e7e33c13 Author: Olli Salli Date: Tue Aug 24 01:30:19 2010 +0300 Don't make up a bogus feature fail reason if the CM initial introspection GetAll fails It used to say "don't support pre-getall CMs currently" but actually we never will support those, and I believe that nobody actually attempts using such CMs nowadays, hence hitting that condition most often actually means the CM is not there / is broken. TelepathyQt4/connection-manager.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit d0e477bcdbf4027c79ab64d7842ab981018b36ac Author: Olli Salli Date: Tue Aug 24 01:15:09 2010 +0300 Yet another TestStreamedMediaChanCall race fix... This is a previously identified one actually but the fix wasn't sufficient in all cases. The new one should be. tests/dbus/streamed-media-chan-call.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 2662a72de9650dd46704c6b98ed5c1fda30bf44a Author: Olli Salli Date: Tue Aug 24 01:00:25 2010 +0300 Test that Account::iconName() always returns a sensible non-empty value tests/dbus/account-basics.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit 1f251264c02bf0a67d784b1c1ec8bf704bb80d9e Author: Olli Salli Date: Tue Aug 24 00:59:58 2010 +0300 Implement the Account::icon() improvement to Account::iconName() too TelepathyQt4/account.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 586e5caaa1f1f7d45fd3c7d81b54e4067cd9a48d Author: Olli Salli Date: Tue Aug 24 00:24:43 2010 +0300 Add test for protocol introspection on a legacy CM without Protocol objects support tests/dbus/cm-basics.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) commit 6f5aed42ffae79e917c761756e64eefce509af65 Author: Olli Salli Date: Tue Aug 24 00:24:24 2010 +0300 Extend CM test coverage tests/dbus/cm-basics.cpp | 85 +++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 37 deletions(-) commit a1edc9537ab98c5f3985830732aa8f6239408520 Author: Olli Salli Date: Tue Aug 24 00:23:30 2010 +0300 Make CM::protocolInfo()->capabilities() claim support for everything for legacy CMs TelepathyQt4/connection-manager-internal.h | 1 + TelepathyQt4/connection-manager.cpp | 66 +++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) commit 2a887f2e20497f18d8c68670d73c0ce57dedd0f8 Author: Olli Salli Date: Tue Aug 24 00:22:48 2010 +0300 Make ConnectionManager Protocol introspection use the immutable properties map TelepathyQt4/connection-manager-internal.h | 5 +- TelepathyQt4/connection-manager.cpp | 100 +++++++++++++++++++---------- 2 files changed, 71 insertions(+), 34 deletions(-) commit 945086369ae253695b5dcf049072ecff6b163a26 Author: Olli Salli Date: Mon Aug 23 22:38:01 2010 +0300 If the Account Icon is not set, return the icon from the protocol, if available, and im- otherwise TelepathyQt4/account.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 1fe947902babe05562a6b04205a68ae76d56c179 Author: Olli Salli Date: Mon Aug 23 22:11:50 2010 +0300 Invalidate the CM if it can't answer to GetAll properly instead of just never finishing TelepathyQt4/connection-manager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit ee6766689149664360f50e32f6311bf2bc705f83 Author: Olli Salli Date: Mon Aug 23 22:10:55 2010 +0300 Remove tabs inserted by a stupid vim user (me) TelepathyQt4/connection-manager.cpp | 8 ++++---- TelepathyQt4/manager-file.cpp | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) commit fa5d580c45e5053733506961ef758edf4b747046 Author: Olli Salli Date: Mon Aug 23 21:12:30 2010 +0300 Document that ProtocolInfo returned by the public API shouldn't be deleted TelepathyQt4/account.cpp | 3 +++ TelepathyQt4/connection-manager.cpp | 3 +++ 2 files changed, 6 insertions(+) commit 9e9bb4960ae2e6c0b94b175f5f775f44487b8b50 Author: Olli Salli Date: Mon Aug 23 21:09:20 2010 +0300 Implement a more useful fallback for {ProtocolInfo,ManagerFile}::englishName() TelepathyQt4/connection-manager.cpp | 26 ++++++++++++++++++-------- TelepathyQt4/manager-file.cpp | 25 ++++++++++++++++--------- 2 files changed, 34 insertions(+), 17 deletions(-) commit f60c0382aa8ba6f408d9351b4d9730db40bbfd78 Author: Olli Salli Date: Mon Aug 23 20:22:15 2010 +0300 Fix yet one more race in TestStreamedMediaChan... tests/dbus/streamed-media-chan.cpp | 41 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) commit 4201cf7e6b5de61c09813b4b63044260ba592039 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 16 13:18:01 2010 -0300 Make sure we build with QT_NO_CAST_FROM_ASCII enabled. TelepathyQt4/connection-manager.cpp | 4 ++-- TelepathyQt4/manager-file.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 347d9558b30d61fe10d70f90a007ca50c785d295 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 16 13:11:25 2010 -0300 ConnectionManager: Added protocol name for warning when protocol failed introspection. TelepathyQt4/connection-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 201f37bf37da4c39f24a07c741f83166cd68c737 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 16 13:11:02 2010 -0300 ConnectionManager: Improved documentation for ProtocolInfo::vcardField. TelepathyQt4/connection-manager.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 7ad48b020e265165117e8d36fb915da24c46ddb3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 16 13:10:29 2010 -0300 ConnectionManager: Always return non-empty ProtocolInfo::englishName and iconName strings. Build strings for english name and icon name if absent using im-protocol for icon name and protocol for english name. TelepathyQt4/connection-manager.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit eebd50919824dd13e87614cfea201ab44bf2e94e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 16 13:09:10 2010 -0300 ManagerFile: Always return non-empty englishName and iconName strings. Build strings for english name and icon name if absent using im-protocol for icon name and protocol for english name. TelepathyQt4/manager-file.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit ecc137c32cb7a0c223fd56bb800ec234cf98baf7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 4 01:09:27 2010 -0300 Bump tp-glib dependency to >= 0.11.11 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b31cde039b85b4b13b322797255c4a9c3f70bb38 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 4 01:08:48 2010 -0300 echo2 cm: Updated from tp-glib 0.11.11 tests/lib/glib/echo2/im-manager.c | 27 ++++----------------------- tests/lib/glib/echo2/im-manager.h | 2 -- tests/lib/glib/echo2/protocol.c | 23 ++++++++++++++++------- 3 files changed, 20 insertions(+), 32 deletions(-) commit 43962207792a3fb7df673efc1b947439c581216b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 22:01:46 2010 -0300 cm-basics test: Test Protocol support. tests/dbus/cm-basics.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) commit b1ddfdd4f91a38886c4e962044f8d253cdad4ba3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 22:00:06 2010 -0300 echo2 cm: Updated from smcv's tp-glib Protocol support. Use smcv's unreleased tp-glib Protocol support changes to write the test cases. tests/lib/glib/echo2/Makefile.am | 4 +- tests/lib/glib/echo2/conn.c | 29 +++--- tests/lib/glib/echo2/conn.h | 5 + tests/lib/glib/echo2/connection-manager.c | 59 +++++------ tests/lib/glib/echo2/im-manager.c | 19 ++++ tests/lib/glib/echo2/im-manager.h | 2 + tests/lib/glib/echo2/manager-file.py | 2 +- tests/lib/glib/echo2/protocol.c | 166 ++++++++++++++++++++++++++++++ tests/lib/glib/echo2/protocol.h | 67 ++++++++++++ 9 files changed, 305 insertions(+), 48 deletions(-) commit f11c07c104a75e812e769b5183791eb568ce5d1f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:59:16 2010 -0300 tools/manager-file.py: Updated from latest tp-glib version. tools/manager-file.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit c72fc0210b92cc713e77c38273117fed6b89eab1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 00:28:06 2010 -0300 ConnectionManager: Updated copyright. TelepathyQt4/connection-manager-internal.h | 4 ++-- TelepathyQt4/connection-manager.cpp | 4 ++-- TelepathyQt4/connection-manager.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) commit 1f380912739dcc9fde06892641c1aa02f24e6a15 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 04:15:02 2010 -0300 ConnectionManager: Improved documentation. Updated docs to indicate what methods require FeatureCore to be enabled and standardization. TelepathyQt4/connection-manager.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) commit b095251c4526a3160ed1aa37092f098aff6b15d1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:56:11 2010 -0300 ConnectionManager: Fixed indentation. TelepathyQt4/connection-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 70e16b2069e47bf0d1c77b137a19d1a1a422517a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:53:57 2010 -0300 ConnectionManager: Fixed crash when deleting protocol wrapper. Do not call delete on ::Private::ProtocolWrapper on the ready slot, as the PendingOperation is a child of it. TelepathyQt4/connection-manager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 041c90a4abd12cadf3d6ea48082e5c252a9ab8fb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:53:34 2010 -0300 ConnectionManager: Proper read Icon property from Protocol. TelepathyQt4/connection-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bdeaf5c186f12ed27203fff7a06c464a52683a66 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:52:40 2010 -0300 ConnectionManager: Properly call ::Private::ProtocolWrapper::instrospectMain instead of ::Private::instrospectMain. Properly call ::Private::ProtocolWrapper::instrospectMain instead of ::Private::instrospectMain when instrospecting ProtocolWrapper. TelepathyQt4/connection-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 07982c9bea99bdf3ecfedda0f4642d832e696463 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 04:13:09 2010 -0300 ConnectionManager: Added helper methods to check whether a protocol is supported and return a protocol object for a given protocol. TelepathyQt4/connection-manager.cpp | 39 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/connection-manager.h | 4 +++- 2 files changed, 42 insertions(+), 1 deletion(-) commit 466bee681f7a0cb6f570e769ef860a59da5d1ac7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 04:01:21 2010 -0300 ConnectionManager: Use ProtocolWrapper if ConnectionManager.Protocols is supported. TelepathyQt4/connection-manager-internal.h | 1 + TelepathyQt4/connection-manager.cpp | 55 +++++++++++++++++++++++++++++- TelepathyQt4/connection-manager.h | 1 + 3 files changed, 56 insertions(+), 1 deletion(-) commit ea16f94cb9da9685be44ca6cdaba0ce6b68655de Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 03:56:30 2010 -0300 ConnectionManager: Added ::Private::ProtocolWrapper. Added class to wrap a Protocol object to be used in CMs implementing Protocol. TelepathyQt4/connection-manager-internal.h | 33 ++++++++++++ TelepathyQt4/connection-manager.cpp | 87 ++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) commit f8d79d5fe08c7de1bc635b4b110c5b4a63f632fc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 03:52:52 2010 -0300 ConnectionManager: Renamed methods to retrieve protocol info. Added Legacy suffix to methods to retrieve protocol info as new API will be added for new CMs implementing Protocol. TelepathyQt4/connection-manager-internal.h | 4 ++-- TelepathyQt4/connection-manager.cpp | 16 ++++++++-------- TelepathyQt4/connection-manager.h | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) commit 8cb0a6cf063be376bc1d3197666f572e8e350262 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 03:57:36 2010 -0300 ConnectionManager: Add new info returned by ManagerFile to ProtocolInfo objects. TelepathyQt4/connection-manager.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit f48e27c966ea971e2ebb39920382923886372e1e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 00:31:42 2010 -0300 ConnectionManager: Added new methods to ProtocolInfo to support Protocol properties. TelepathyQt4/connection-capabilities.h | 1 + TelepathyQt4/connection-manager.cpp | 87 +++++++++++++++++++++++++++++++++- TelepathyQt4/connection-manager.h | 13 +++++ 3 files changed, 100 insertions(+), 1 deletion(-) commit 2f0222aaf99adb367d1f98c045e901ef6d3d16e2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 28 15:04:46 2010 -0300 ConnectionManager: Moved private methods implementations to where it belongs. TelepathyQt4/connection-manager.cpp | 154 ++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 77 deletions(-) commit 56619fdf44f5930864f345b000e62f918e2743ff Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 19:52:05 2010 -0300 manager-file test: Added test for new properties defined in Protocol. tests/manager-file.cpp | 19 +++++++++++++++++++ tests/telepathy/managers/test-manager-file.manager | 10 ++++++++++ 2 files changed, 29 insertions(+) commit 1508333cdaef24c696f4beaaddc59145f800a826 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 03:44:44 2010 -0300 ManagerFile: Support new properties defined in Protocol. TelepathyQt4/manager-file.cpp | 125 ++++++++++++++++++++++++++++++++++++++---- TelepathyQt4/manager-file.h | 9 ++- 2 files changed, 121 insertions(+), 13 deletions(-) commit 617e461c26aee000f600f8b335a3bf3d3a39c220 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 01:41:14 2010 -0300 ManagerFile: Moved ::Private members decl to where it belongs. TelepathyQt4/manager-file.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit a14193bf8cdfe006b4b628d5bb19d0a8f1653957 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 04:00:58 2010 -0300 Generate bindings for Protocol iface. TelepathyQt4/connection-manager.xml | 1 + 1 file changed, 1 insertion(+) commit 9c87474af1797433a34708203e842505e260126d Author: Olli Salli Date: Mon Aug 23 16:43:58 2010 +0300 Updated NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 370c1e6b64759ff025134e22a6a3e9cd195882b9 Author: Olli Salli Date: Mon Aug 23 16:38:27 2010 +0300 Add files generated by lcov-check and check-valgrind to .gitignore .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit c10a958e18d2d94529cc5024b823e002e81a398f Author: Olli Salli Date: Mon Aug 23 16:35:56 2010 +0300 Disable building the shared library if using --enable-compiler-coverage GCov doesn't really work with shared libraries. m4/compiler.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit c3251734fe417f69326d9aafbe66893e90379478 Author: Olli Salli Date: Mon Aug 23 14:01:47 2010 +0300 Updated NEWS NEWS | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) commit 4c6d33d4a207561b5c5b18f86d8e4812d83734e0 Author: Olli Salli Date: Mon Aug 23 06:36:50 2010 +0300 Fix yet more StreamedMediaChan(Call) races which were discovered with 1ms simulation delay tests/dbus/streamed-media-chan-call.cpp | 118 ++++++++++++++++++++------------ tests/dbus/streamed-media-chan.cpp | 37 ++++++++-- 2 files changed, 106 insertions(+), 49 deletions(-) commit 2b52d85072c75d96431e68975890b5cb51bdda21 Author: Olli Salli Date: Mon Aug 23 03:58:30 2010 +0300 Set the test simulation delay to 1ms in g_object_new instead of modifying the service code This reverts commit ce159df2a4d508500052f9bf0c74e0ded05df0e9. We shouldn't modify code which is copy-paste updated from tp-glib. tests/dbus/chan-group.cpp | 1 + tests/dbus/conn-roster-groups.cpp | 1 + tests/dbus/conn-roster.cpp | 1 + tests/dbus/streamed-media-chan-call.cpp | 1 + tests/dbus/streamed-media-chan.cpp | 1 + tests/lib/glib/callable/conn.c | 2 +- tests/lib/glib/callable/connection-manager.c | 2 +- tests/lib/glib/callable/manager-file.py | 2 +- tests/lib/glib/callable/media-channel.c | 3 ++- tests/lib/glib/callable/media-manager.c | 2 +- tests/lib/glib/callable/media-stream.c | 2 +- tests/lib/glib/contactlist/conn.c | 2 +- tests/lib/glib/contactlist/contact-list-manager.c | 2 +- tests/lib/glib/contactlist/manager-file.py | 2 +- tests/lib/glib/csh/conn.c | 2 +- tests/lib/glib/csh/manager-file.py | 2 +- tests/lib/glib/csh/room-manager.c | 2 +- tests/lib/glib/csh/room.c | 2 +- tests/lib/glib/future/call/call-channel.c | 3 ++- tests/lib/glib/future/call/call-manager.c | 2 +- tests/lib/glib/future/call/call-stream.c | 2 +- tests/lib/glib/future/call/cm.c | 2 +- tests/lib/glib/future/call/conn.c | 2 +- tests/lib/glib/future/call/manager-file.py | 2 +- 24 files changed, 26 insertions(+), 19 deletions(-) commit 10f53196978d37990a44af2e5d8645f13e7bb398 Author: Olli Salli Date: Mon Aug 23 03:56:40 2010 +0300 Fix a race expecting Text::Sent() to have been emitted quickly in TestTextChan I believe this was the last race \o/ tests/dbus/text-chan.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) commit 0c3ff88d34a077cfa6239e8850925366581f79e4 Author: Olli Salli Date: Mon Aug 23 03:20:27 2010 +0300 Reduce amount of useless library debug My head almost exploded while trying to parse the useful information out of the test logs when fixing the test race conditions. This patch removes some of the most common "guaranteedly boring" debug prints and shortens the common debug print prefix a bit to make debug output more readable. TelepathyQt4/contact-manager.cpp | 13 ------------- TelepathyQt4/debug-internal.h | 4 ++-- TelepathyQt4/optional-interface-factory.cpp | 3 --- TelepathyQt4/pending-contact-attributes.cpp | 9 +-------- TelepathyQt4/pending-contacts.cpp | 28 ++++------------------------ TelepathyQt4/readiness-helper.cpp | 4 +--- 6 files changed, 8 insertions(+), 53 deletions(-) commit af14b1ee14785f16a444de608c2e175ed81e7aff Author: Olli Salli Date: Mon Aug 23 02:32:41 2010 +0300 Modify repeat-tests.sh to be able to run any command instead of just make targets This is useful for running individual tests by directly invoking the test executable. tools/repeat-tests.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit a3389f10ac9d0a189afc00b89aff28a10756abed Author: Olli Salli Date: Mon Aug 23 02:17:00 2010 +0300 (Hopefully) fix all of the remaining races in TestStreamedMediaChan This required a lot of elaborate event state machine logic to be robust against unexpected event orderings. This really sucks. Time to rethink the StreamedMediaChan semantics sometime soon... tests/dbus/streamed-media-chan.cpp | 247 ++++++++++++++++++++++++++++++------- 1 file changed, 204 insertions(+), 43 deletions(-) commit 705fd77629f3f31dc8e0cfcb3351a99035db45ce Author: Olli Salli Date: Sun Aug 22 23:43:22 2010 +0300 Fix races in TestStreamedMediaChanCall::testOutgoingCall The race was because the simulation connection service decides to start sending us video or stop doing that based on the exact timing when we stop sending from our end after initiating the call. The fix is to make sure we're neither sending nor receiving before starting to poke the stream back and forth to ensure we don't eg. try to make it receive and wait for it do start doing so when it is already in fact doing that. tests/dbus/streamed-media-chan-call.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) commit e3a4aaf05076dfd842578820b92dd9737c890e4c Author: Olli Salli Date: Sun Aug 22 22:49:00 2010 +0300 Rewrite all while (i != end) loops as for loops Such while loops with manual i increment somewhere in the loop body are extremely error-prone. Sure enough, 8 of the loops (all in MediaStream public API functions) were either prone to or always did busy-loop. TelepathyQt4/account-set.cpp | 12 +--- TelepathyQt4/contact-manager.cpp | 6 +- TelepathyQt4/readiness-helper.cpp | 19 ++---- TelepathyQt4/streamed-media-channel.cpp | 107 ++++++++++++++------------------ 4 files changed, 57 insertions(+), 87 deletions(-) commit fd33d4ba5ac04ea9c64269ce4da85e27adc0ae28 Author: Olli Salli Date: Sun Aug 22 19:07:39 2010 +0300 Add progress debug to TestStreamedMediaChanCall::testOutgoingCall() That testcase is currently terribly racy; with this debug output it will be possible to detect the point at which the races actually occur. tests/dbus/streamed-media-chan-call.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) commit 96ced4c13454778b4b7e14d400df587a141bf430 Author: Olli Salli Date: Sun Aug 22 18:15:52 2010 +0300 Rename the test in s-m-c-call.cpp so it can be distinguished from its sibling in test output They both used to be called TestStreamedMediaChan probably due to copy-paste (I know, right!). tests/dbus/streamed-media-chan-call.cpp | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) commit efa967abc23cf9d03729d07d61de4ac265c58a8a Author: Olli Salli Date: Sun Aug 22 18:06:15 2010 +0300 Fix race in TestStreamedMediaChan::testOutgoingCallTerminate() This required writing a fairly elaborate state machine, because the requestStreams pending operation can finish anywhere between starting the call, the remote contact being added to RP, them answering, and them terminating the call. Should this be considered a bug, making applications write error-prone code? Probably not, as I don't think the applications need to care about whether the group membership changes happen before or after the call starting being signaled. They'll probably just use the membership change signals to show a participant list, if anything. However, if they want to display a widget with the remote's avatar, for example, when the PendingOp finishes, then indeed this should be considered a bug. (They could do so anyway reliably though, by storing the contact they use to make the requestStreams call in the first place, which is the most logical way to do it). testOutgoingCall() itself is still racy, fixing it next. tests/dbus/streamed-media-chan.cpp | 170 +++++++++++++++++++++++++++++++------ 1 file changed, 145 insertions(+), 25 deletions(-) commit c16694c2da4c1373e4a2b413af668a98268904ca Author: Olli Salli Date: Sun Aug 22 17:53:08 2010 +0300 Fix race in TestStreamedMediaChan::testOutgoingCallBusy Tp-qt4 may have already noticed the remote is busy and invalidated the channel, so we should only start waiting for the channel to become invalid unless it is still valid. Otherwise there's a probablity (which is quite high under valgrind) that the test will hang, because it doesn't execute fast enough to reach starting to wait for the invalidation before the channel has already been invalidated. tests/dbus/streamed-media-chan.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit 7e42feb003bccf1902e4b398b48a643a2018d8d9 Author: Olli Salli Date: Sun Aug 22 14:41:32 2010 +0300 Fix yet another race in the roster test The previous fixes only really fixed the first contact in the request presence subscription test, which does eventually accept our request. The second contact refuses our request, which, if it happened before the test got to checking if it had asked for the subscription in the first place, caused the test to fail (because it wasn't anymore in the "asked for subscription" state, but "not subscribed"). This race only happened when running under valgrind, not without it even with some concurrent CPU load. tests/dbus/conn-roster.cpp | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) commit aa7992d92078525410d513508e6487500684f210 Author: Olli Salli Date: Sat Aug 21 21:07:43 2010 +0300 Add a conservative 10 minute watchdog to all tests The primary purpose is to detect infinite waiting for events and busyloops in tests. 10 minutes should be plenty for any test to run even under heavy load. Let's increase it if it causes problems. As a reference 10 seconds is enough on my computer for any of the current tests even with a few concurrent CPU hog processes, so we should be pretty safe. tests/lib/test.cpp | 9 +++++++++ tests/lib/test.h | 1 + 2 files changed, 10 insertions(+) commit ce173b50f47758cc43e99dd8564636a1a237cb1a Author: Olli Salli Date: Sat Aug 21 21:02:46 2010 +0300 Fix race in testRoster() where we might make too few mainloop iterations if the contact is quick to accept the presence request tests/dbus/conn-roster.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 92d3216a6e6077d6b8a490f815b2b231a7b8b540 Author: Olli Salli Date: Sat Aug 21 20:36:42 2010 +0300 Add some FIXME to ContactManager about broken semantics TelepathyQt4/contact-manager.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 9ca59c8d16811feb21a173323f4fc8289ada44d3 Author: Olli Salli Date: Sat Aug 21 20:36:09 2010 +0300 Add test verifying the ContactManager deathtrap is gone tests/dbus/conn-roster-groups.cpp | 383 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 369 insertions(+), 14 deletions(-) commit 35f67f768ad8a54bcc8cb8db215221e388b972a5 Author: Olli Salli Date: Sat Aug 21 20:26:03 2010 +0300 Test lib: add Test::expectFailure, which can be used to expect a PendingOperation fail tests/lib/test.cpp | 11 +++++++++++ tests/lib/test.h | 1 + 2 files changed, 12 insertions(+) commit ee652401bb23b76b872102eb2644ed12cbd39b76 Author: Olli Salli Date: Sat Aug 21 20:25:08 2010 +0300 Plug memory leak in TestContacts::testSelfContactFallback() tests/dbus/contacts.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 4ccfa85189edb76694b3c02fc003c1e1693fa33c Author: Olli Salli Date: Sat Aug 21 20:17:48 2010 +0300 Make the Roster and RosterGroups ops on ContactManager early-fail on invalid conn too TelepathyQt4/contact-manager.cpp | 84 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) commit 5bbafcc162cfe97cb796c2d27d6225edfaf93976 Author: Olli Salli Date: Sat Aug 21 14:45:28 2010 +0300 Make Connection::contactManager() less of a death-trap Previously the accessor used to return NULL if the Connection Core wasn't ready. This is less of a problem for the case of the Connection not being ready *yet* but very much one due to the fact that when the Connection goes invalid it's not considered ready anymore. When the conn goes invalid, application code (actually, in this case, the Channel internals) should react by not making any more calls to the Connection - when it gets the signal! However, if it's executing its own code calling Connection *when* the Conn gets invalidated, it won't get the signal in time to prevent doing so (it will only get the signal when it returns to the mainloop). With the previous NULL return behavior, applications would crash with a SIGSEGV in this case. Even if the signal is caught in time preventing all further calls to avoid SIGSEGV will be VERY hard, for any non-trivial application anyway. This affected eg. the conference channel test, which disconnects the connection and runs a mainloop until it emits invalidated. However, at this point it still has Channel objects for the same connection, which haven't all completed introspecting themselves. The Channel introspection process will make calls to ContactManager to construct contacts for its participants. If this happens in the same mainloop iteration as the connection invalidation, but before the channels get the invalidated signal, the channels' call to ContactManager will cause the application to crash with a SIGSEGV. This patch makes Connection::contactManager() always return a non-NULL value, but will make ContactManager::contactsFor{Handles,Identifiers}() and ContactManager::upgradeContacts() fail instantly with TELEPATHY_ERROR_NOT_AVAILABLE and a descriptive debug message, if the connection has been invalidated or never has been made ready. TelepathyQt4/connection.cpp | 10 +--------- TelepathyQt4/contact-manager.cpp | 39 +++++++++++++++++++++++++++++++++++---- TelepathyQt4/contact-manager.h | 2 +- TelepathyQt4/pending-contacts.cpp | 25 ++++++++++++++++++++++--- TelepathyQt4/pending-contacts.h | 13 ++++++++++--- 5 files changed, 69 insertions(+), 20 deletions(-) commit 666fbfcccbc822199debd23fd3a9ed3154e443de Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:32:00 2010 -0300 Channel: Do not continue introspecting if owning connection failed becoming ready. TelepathyQt4/channel.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 60a635520d18192ae8676a9f8ba8e07fe37d7cb7 Author: Olli Salli Date: Sat Aug 21 11:50:41 2010 +0300 Fix TestAccountBasics race expecting avatarChanged The avatarChanged signal might have already been caught when we were making FeatureAvatar ready for the second time or when making the SetAvatar call in the first place, so only start waiting for it if we haven't got it already. This fixes a test hang which happens quite often with higher CPU load and check-valgrind (when the test itself runs slower, and the avatar may change faster than the test is able to catch it). tests/dbus/account-basics.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) commit cf1c52ed0cb9b3589f7bb3d65e8fb72757d8e686 Author: Olli Salli Date: Sat Aug 21 11:23:01 2010 +0300 Remove --verbose from check-valgrind, we're not particularly interested in overtly verbose symbol binding info etc This has no effect on the verbosity of reporting the actual memory errors. tools/valgrind.mk | 1 - 1 file changed, 1 deletion(-) commit bc259ea12de5f0f9beaf14019bdb19c2d2741c7d Author: Olli Salli Date: Fri Aug 20 22:36:33 2010 +0300 Make TestConnRoster not fail if the remote has accepted our invitation already tests/dbus/conn-roster.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ce159df2a4d508500052f9bf0c74e0ded05df0e9 Author: Olli Salli Date: Fri Aug 20 22:35:03 2010 +0300 Cut the test simulation delay to 1% of what it was This speeds up tests immensely, but also uncovers race condition bugs in them which otherwise were only occasional (but happened quite often especially under high system load). tests/lib/glib/callable/conn.c | 2 +- tests/lib/glib/callable/connection-manager.c | 2 +- tests/lib/glib/callable/manager-file.py | 2 +- tests/lib/glib/callable/media-channel.c | 2 +- tests/lib/glib/callable/media-manager.c | 2 +- tests/lib/glib/callable/media-stream.c | 2 +- tests/lib/glib/contactlist/conn.c | 2 +- tests/lib/glib/contactlist/contact-list-manager.c | 2 +- tests/lib/glib/contactlist/manager-file.py | 2 +- tests/lib/glib/csh/conn.c | 2 +- tests/lib/glib/csh/manager-file.py | 2 +- tests/lib/glib/csh/room-manager.c | 2 +- tests/lib/glib/csh/room.c | 2 +- tests/lib/glib/future/call/call-channel.c | 2 +- tests/lib/glib/future/call/call-manager.c | 2 +- tests/lib/glib/future/call/call-stream.c | 2 +- tests/lib/glib/future/call/cm.c | 2 +- tests/lib/glib/future/call/conn.c | 2 +- tests/lib/glib/future/call/manager-file.py | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) commit 42bd91f43d0bd1cae6f7bdf5b95abf66a0e9204d Author: Olli Salli Date: Fri Aug 20 19:23:31 2010 +0300 Add a script to automatically re-run tests for a number of times .gitignore | 1 + tools/repeat-tests.sh | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) commit cce40a1ca36409e0c258f451f02f68a4cd8830ad Author: Olli Salli Date: Fri Aug 20 18:17:06 2010 +0300 Always use NULL instead of 0 in vararg lists While 0 works fine in real C++ APIs which have, like, typing (:O), in vararg lists putting 0 as an argument will just push a 32 bits zero integer on amd64, although it should be a pointer argument of 64 bits. This will a) mess up the following arguments b) if used as the last argument, half of it will be zero and half of it uninitialized which is bad for eg. g_object_new which may then go happily scanning for more arguments since it's not really an all-zero pointer necessarily. Detected by check-valgrind. tests/dbus/chan-basics.cpp | 2 +- tests/dbus/chan-conference.cpp | 2 +- tests/dbus/chan-group.cpp | 2 +- tests/dbus/client.cpp | 2 +- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-capabilities.cpp | 2 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/conn-roster-groups.cpp | 2 +- tests/dbus/conn-roster.cpp | 2 +- tests/dbus/contacts-capabilities.cpp | 2 +- tests/dbus/contacts-info.cpp | 2 +- tests/dbus/contacts-location.cpp | 2 +- tests/dbus/contacts.cpp | 4 ++-- tests/dbus/handles.cpp | 2 +- tests/dbus/streamed-media-chan-call.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- tests/dbus/text-chan.cpp | 2 +- 17 files changed, 18 insertions(+), 18 deletions(-) commit a8fd1b6bbc68c9190c08f664c53138b0ede64bfc Author: Olli Salli Date: Fri Aug 20 17:56:00 2010 +0300 Initialize Account::{automatic,requested,current}Presence Initialize the presence values to (Unknown, "unknown", "") to prevent AccountBasics being reported as doing uninitialized conditional jump by valgrind when it's filling them from the introspect data. TelepathyQt4/account.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 974c9f5b22aea56c3260ced6e231c764a26014c2 Author: Olli Salli Date: Fri Aug 20 17:08:41 2010 +0300 Add some FIXMEs to CM introspection TelepathyQt4/connection-manager.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 9c96a574133f50b5c104474eed48fdc8d29d77d5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 6 12:15:41 2010 -0300 Updated NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit e3527454bb3e9b28162acdcf46793919638795b2 Merge: b9015a5 5ae4c25 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Aug 6 12:10:59 2010 -0300 Merge branch 'spec-0.19.10' Reviewed-by: Simon McVittie (smcv) commit 5ae4c25b8f48b9ae43b020fe70f61679940e2bc0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 4 15:46:22 2010 -0300 Channel: Added accessor method for ContactSearch interface. TelepathyQt4/channel.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 6c16ec2c240456cd8cacdf1cc75869fc987e628d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 4 15:45:17 2010 -0300 Added auto generated classes for Channel.Type.ContactSearch interface. TelepathyQt4/ChannelTypeContactSearchInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 1 + TelepathyQt4/channel.xml | 1 + 3 files changed, 15 insertions(+) commit f8d1afbc77a3ad27398fe615dce696ae58ce9b77 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 4 01:10:35 2010 -0300 Update to spec 0.19.10 spec/Account.xml | 30 ++++-- spec/Channel.xml | 67 ++++++++---- spec/Channel_Interface_Group.xml | 28 +++++- spec/Channel_Interface_Messages.xml | 12 +++ spec/Channel_Type_Contact_Search.xml | 55 +++++----- spec/Channel_Type_Streamed_Media.xml | 168 +++++++++++++++++++++++-------- spec/Connection_Interface_Anonymity.xml | 32 +++--- spec/Connection_Interface_Cellular.xml | 81 +++++++++------ spec/Connection_Interface_Forwarding.xml | 10 ++ spec/Connection_Manager.xml | 4 +- spec/Protocol.xml | 5 +- spec/Protocol_Interface_Avatars.xml | 2 +- spec/Protocol_Interface_Presence.xml | 2 +- spec/all.xml | 2 +- 14 files changed, 351 insertions(+), 147 deletions(-) commit b9015a51478fcedc8ad6d1c50135975bbddb2db1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:51:00 2010 -0300 Updated NEWS NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 11bbe428af7eb1f7bd50e1abe0b48e59d7f9aef4 Merge: b93fade 781c9a3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 30 03:49:27 2010 -0300 Merge remote branch 'wjt/new-account-removed' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit b93fadeba77d3c6d0ecf2632d17f762ea1021069 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 22 18:44:04 2010 -0300 Updated NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit c15570724a3d22a7a14c96630a63483233e515f5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 22 18:41:16 2010 -0300 file-transfer example: Updated receiver to properly advertise capabilities. Fixes: fd.o#28651 - Cannot receive files using gabble 0.9 Author: Daniele E. Domenichelli Reviewed-by: Andre Moreira Magalhaes (andrunko) examples/file-transfer/receiver.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 781c9a3b3dac6e65c2921e4f29057cad6163568c Author: Will Thompson Date: Mon Jul 19 13:59:40 2010 +0100 Only emit AccountSet::accountRemoved for accounts in the set Previously creating a new non-matching account would cause a spurious emission of AccountSet::accountRemoved(). Fixes: fd.o#29145 TelepathyQt4/account-set.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit a221a5bbe17e3a7e0877f4e6be95c65fa4da6522 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:26:42 2010 -0300 Updated NEWS NEWS | 1 + 1 file changed, 1 insertion(+) commit 1f906ea6e40a708614d893e0c1410f001e87e12d Merge: 856e3d4 2a86da6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:25:31 2010 -0300 Merge branch 'am-filter-accounts-docs-fix' Reviewed-by: Will Thompson (wjt) commit 856e3d4ff2bf1f72e3841d7e7e429a813136bb4a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:24:12 2010 -0300 Updated NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 9e6258f6ad7b0ce1b3afd6b42123612987ab13a0 Merge: 3f61251 db52d35 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:17:12 2010 -0300 Merge branch 'account-set-improvements' Reviewed-by: Will Thompson (wjt) commit db52d3546e267d5e510c90ff42278d3d4a6a1afb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 15 18:15:38 2010 -0300 AccountSet: Fixed example code in documentation that was adding wrong filter key 'protocol'. TelepathyQt4/account-set.cpp | 1 - 1 file changed, 1 deletion(-) commit 2a86da65a492df22d9149e6d3f3ddb6d99603861 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 14:11:32 2010 -0300 AccountManager: Fixed documentation for ::filterAccounts. Proper format and improve example code for AccountManager::filterAccounts doc. TelepathyQt4/account-manager.cpp | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) commit 65bebf3c3cf3d52c5df45755ae8e199c391e498d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 15:42:42 2010 -0300 account-basics test: Added tests for AccountManager/AccountSet integration. tests/dbus/account-basics.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 9e3aa8c286852dd9b43e684c058b2ee760a40e7f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 15:38:15 2010 -0300 AccountSet: Added filterValid Qt property. TelepathyQt4/account-set.h | 1 + 1 file changed, 1 insertion(+) commit 06a26c3f1711e6343fad83fe20e982fa91c66c21 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 15:36:41 2010 -0300 AccountSet: Reorder AccountSet isFilterValid method to be placed next to filter method. TelepathyQt4/account-set.cpp | 20 ++++++++++---------- TelepathyQt4/account-set.h | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) commit 2c52e806ef712fc1992b32c1b445439dd4ddd79f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 14:49:12 2010 -0300 AccountSet: Added missing docs for methods/signals. TelepathyQt4/account-set.cpp | 157 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) commit 3f61251ff13bbbd8685566366d3393c5f4b0e540 Author: Will Thompson Date: Mon Jul 12 19:12:45 2010 +0100 Start 0.3.8 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit c8e8f81733b4b0bca43680fd451e39db1d227c54 Author: Will Thompson Date: Mon Jul 12 19:09:24 2010 +0100 Fix uploading documentation rsyncing the docs during make maintainer-upload-release failed: rsync: failed to set times on "/srv/telepathy.freedesktop.org/www/doc/telepathy-qt4/.": Operation not permitted (1) This turns out to be because I can write to the directory, but don't own it. Passing the -O option to rsync stops it trying to update times on directories, fixing this. Pre-instareviewed-by: Simon McVittie Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e3be0284e340857b78a9c6783dd372f1fb342626 Author: Will Thompson Date: Mon Jul 12 18:42:26 2010 +0100 Version 0.3.7 configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e2458c61bf1a3902514fdd788cda0579fb8ccfd0 Author: Will Thompson Date: Mon Jul 12 18:42:08 2010 +0100 NEWS for 0.3.7 NEWS | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 3fdc09c246ebe0f51f21ef03984b3dd4c1863246 Author: Will Thompson Date: Mon Jul 12 18:30:34 2010 +0100 Update to spec 0.19.9 spec/Channel_Interface_Messages.xml | 98 +++++++++++++++++++++++++++++------ spec/Connection_Interface_Balance.xml | 50 ++++++++++-------- spec/all.xml | 2 +- 3 files changed, 110 insertions(+), 40 deletions(-) commit cb589f89d8b6e55c95b5d57379263781e6374efe Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 14:35:40 2010 -0300 Updated NEWS. NEWS | 8 ++++++++ 1 file changed, 8 insertions(+) commit 5a99a149a5fba9dbaf459f5fb50a16254cff8df7 Merge: 7fab7cd 483cba3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 14:19:46 2010 -0300 Merge branch 'account-set-check-filter' Reviewed-by: Will Thompson (wjt) commit 7fab7cd135c183467ab165634517392de1538bc3 Merge: a3c0117 5f246e3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 14:16:17 2010 -0300 Merge branch 'am-filter-by-protocol-fix' Reviewed-by: Will Thompson (wjt) commit 483cba3c1ef0448ac678877e26c8695a6508d08f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 12:35:05 2010 -0300 account-basics test: Added test for AccountSet::isFilterValid(). tests/dbus/account-basics.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit ea57a539cf3c7e3cece4ef2b24e121ebbaa929f2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 12:34:46 2010 -0300 AccountSet: Added isFilterValid method to indicate whether the filter used is valid. TelepathyQt4/account-set-internal.h | 3 +++ TelepathyQt4/account-set.cpp | 43 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/account-set.h | 2 ++ 3 files changed, 48 insertions(+) commit a3c011724bb34ed0f8480db38b205cb7e5e1cce5 Author: Will Thompson Date: Wed Jul 7 11:25:03 2010 +0100 Refresh HACKING and README • Move all information on contributing and coding styles into HACKING, and refer there from README; • Update Bugzilla component from telepathy-qt4 to tp-qt4; • Mention the 'patch' keyword, and link to the review procedure; • Remove dire warnings about ABI/API stability, since Tp-Qt4 is now stable. Reviewed-by: André Moreira Magalhães HACKING | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- README | 28 ++++++++-------------------- 2 files changed, 65 insertions(+), 27 deletions(-) commit 5f246e3fe38cad51e9be19edfc45430a6d33a68a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 7 10:49:28 2010 -0300 AccountManager: Proper use protocolName Account property when filtering accounts by protocol. TelepathyQt4/account-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cc22b16033c8fe43b7bc9a7d20b892569ace4d7c Merge: 401065c 3710213 Author: Will Thompson Date: Tue Jul 6 14:32:41 2010 +0100 Merge branch 'more-chan-ifaces' Reviewed-by: André Moreira Magalhães commit 371021349a4a68fe6fab6ed06d700ef4179f7b8e Author: Will Thompson Date: Tue Jul 6 10:47:46 2010 +0100 Generate code for Channel.Interface.ServicePoint. TelepathyQt4/channel.h | 6 ++++++ TelepathyQt4/channel.xml | 1 + 2 files changed, 7 insertions(+) commit 2f5896e9a4c5d15d3849ee28e3bc4a33137386a5 Author: Will Thompson Date: Tue Jul 6 10:23:03 2010 +0100 Generate code for Channel.Interface.Anonymity. TelepathyQt4/channel.h | 6 ++++++ TelepathyQt4/channel.xml | 1 + 2 files changed, 7 insertions(+) commit 401065c420c90ac02e947fc90ef761ac4600ffa3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 23:43:59 2010 -0300 Start 0.3.7 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 0c5ece4546e6efadfabbb32f75812e5191b9f016 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 21:17:17 2010 -0300 Prepare release 0.3.6 NEWS | 32 ++++++++++++++++++++++++++++++-- configure.ac | 8 ++++---- 2 files changed, 34 insertions(+), 6 deletions(-) commit f8bdfd47b3da4daeb97be9403e2e89cb0c5c5a39 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 23:24:02 2010 -0300 distcheck: Added missing account-set-internal.h. TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 955879942b52f42c66bb7018509fcddf70a46345 Merge: 89a1274 465ae6a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 13:11:21 2010 -0300 Merge branch 'account-service' Reviewed-by: Will Thompson (wjt) commit 465ae6a33d54555870a45ce5cdf0269e28dfbe85 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 12:45:46 2010 -0300 account-basics test: Added test for Account.Service support. tests/dbus/account-basics.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) commit 89a1274eb911570ffa536c4d2022eba40d0602d8 Merge: e9e76df ca16d17 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 12:53:27 2010 -0300 Merge branch 'key-file-fixes' Reviewed-by: Will Thompson (wjt) commit c086fd16e998425e8ed4fd260c9897944b2f9da7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 12:43:51 2010 -0300 account-manager test am: Added Account.Service support. tests/lib/python/account-manager.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 5b9e8a537e42b794f73954980622fcd0c8da93a6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 12:44:50 2010 -0300 Account: Improved serviceName() documentation. Indicate that serviceName() will fallback to protocolName() if service name is not known in the docs. TelepathyQt4/account.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit ca16d17d98549ee06ebed47dbaadce10163fc924 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 10:39:50 2010 -0300 key-file test: Added tests for all keys found in test-manager-file.manager "somewhat-pathological" group. tests/key-file.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) commit 0c78db98c9f14cf38991912d75c9fae60884acb6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 10:39:30 2010 -0300 KeyFile: Fixed code comment. TelepathyQt4/key-file.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e221563a9625e6b52aa42d4d70fded51856004f3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 19:47:06 2010 -0300 KeyFile: Proper parse string lists even if ; is not the last char. TelepathyQt4/key-file.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 463a3c09328881016b71eada8bd593f853d10e82 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 19:46:27 2010 -0300 KeyFile: Accept space as key names, so we can parse RequestableChannelClasses in manager files using KeyFile. TelepathyQt4/key-file.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 59d703cb1abc545b91de62a19800c0a626252ccd Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 09:47:02 2010 -0300 Account: Fallback to protocol name when service name is empty on ::serviceName(). TelepathyQt4/account.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 3ba131ac0313e8e71efd53d4c144dcf02fd13e4d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 17:31:51 2010 -0300 Account: Added Account.Service support. TelepathyQt4/account.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 5 +++++ 2 files changed, 55 insertions(+) commit e9e76df3307d749124940f0c2edf0e4ff72cd427 Merge: 9a915eb 0e2c824 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 11:41:03 2010 -0300 Merge branch 'conn-cellular' Reviewed-by: Simon McVittie (smcv) commit 9a915ebef0311905b69d78e5686729e188d97377 Merge: f7fca31 05d79c9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 1 11:40:40 2010 -0300 Merge branch 'spec-0.19.8' Reviewed-by: Simon McVittie (smcv) commit 0e2c82494f256bb28929d84e267f58e2a7bb45bc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 17:32:13 2010 -0300 Connection: Added accessor method for Cellular interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit e776a46c069a4a8573d304eea0e7d505af2d175b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 17:31:31 2010 -0300 Added auto generated classes for Connection.Cellular interface. TelepathyQt4/ConnectionInterfaceCellularInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 1 + TelepathyQt4/connection.xml | 1 + 3 files changed, 15 insertions(+) commit 05d79c910b8598a6cbeb82deedfc4b3545b2fe61 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 17:25:39 2010 -0300 Update to spec 0.19.8 spec/Account.xml | 58 ++- spec/Account_Interface_Storage.xml | 169 +++++++ spec/Channel_Interface_Messages.xml | 654 +++++++++++++++------------ spec/Channel_Type_Text.xml | 8 +- spec/Connection_Interface_Capabilities.xml | 7 + spec/Connection_Interface_Cellular.xml | 31 +- spec/Connection_Interface_Contact_Groups.xml | 71 ++- spec/Connection_Interface_Contact_List.xml | 58 ++- spec/Connection_Interface_Requests.xml | 10 + spec/Connection_Manager.xml | 77 +++- spec/Protocol.xml | 370 +++++++++++++++ spec/Protocol_Interface_Avatars.xml | 158 +++++++ spec/Protocol_Interface_Presence.xml | 114 +++++ spec/all.xml | 28 +- 14 files changed, 1449 insertions(+), 364 deletions(-) commit f7fca3192e91d71a55a35da4d1169a4eaa84e16d Merge: 67c42c4 3acc79b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 17:53:15 2010 -0300 Merge branch 'cm-properties' Reviewed-by: Simon McVittie (smcv) commit 67c42c4af2156a247374031eb5f62aaa2f54b8d2 Merge: 0edc196 49e4889 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 30 17:47:36 2010 -0300 Merge branch 'valgrind-support' Reviewed-by: Simon McVittie (smcv) commit 49e48891fb1d17dae6f41f2023e617abe9fd405e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:57:33 2010 -0300 Added valgrind support when running tests. Makefile.am | 3 +++ tests/Makefile.am | 14 ++++++++++++++ tests/dbus/Makefile.am | 13 +++++++++++++ tools/valgrind.mk | 12 ++++++++++++ 4 files changed, 42 insertions(+) commit 3acc79b6c69ec7d7e8e5a2f0864dcfa74d9cfe66 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 21:56:25 2010 -0300 ConnectionManager: Added Qt properties support. TelepathyQt4/connection-manager.h | 3 +++ 1 file changed, 3 insertions(+) commit 0edc196817b04233ea761a273eb7b36fbd940d4d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 22:31:29 2010 -0300 Start 0.3.6 development (delayed) NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 7d2e48966bf66cedc63d2a709757c424c2cb0bd3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 17:38:56 2010 -0300 Account: Moved methods to the place they belong. Move some methods declaration/implementations to where it belongs. TelepathyQt4/account.cpp | 34 +++++++++++++++++----------------- TelepathyQt4/account.h | 5 ++--- 2 files changed, 19 insertions(+), 20 deletions(-) commit ed8f2055022d346d358a0b0f532e90873daa5555 Merge: 7dfae95 bc58e4f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:35:43 2010 -0300 Merge branch 'tests-improved' Reviewed-by: Will Thompson (wjt) commit 7dfae95bafd2ac53ddcfa908b7bbaab9841cb32d Merge: 9a4d67f db069d5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:35:26 2010 -0300 Merge branch 'fixes' Reviewed-by: Will Thompson (wjt) commit bc58e4f9396ff4d2a9b9261b53b063013d12e71b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:27:56 2010 -0300 tests: Merge tests/example CMs from latest tp-glib and update tests accordingly. Now all tests pass again and the tp-glib tests/examples are copied verbatim. tests/dbus/chan-basics.cpp | 4 +- tests/dbus/chan-group.cpp | 389 ++------------- tests/dbus/client.cpp | 6 +- tests/dbus/cm-basics.cpp | 2 +- tests/dbus/conn-basics.cpp | 6 +- tests/dbus/conn-roster-groups.cpp | 5 +- tests/dbus/contacts-capabilities.cpp | 74 ++- tests/dbus/contacts-info.cpp | 30 +- tests/dbus/contacts-location.cpp | 8 +- tests/dbus/contacts.cpp | 52 +- tests/dbus/handles.cpp | 6 +- tests/dbus/text-chan.cpp | 6 +- tests/lib/glib/Makefile.am | 22 +- tests/lib/glib/callable/Makefile.am | 22 +- tests/lib/glib/callable/conn.c | 4 +- tests/lib/glib/callable/media-channel.c | 14 +- tests/lib/glib/callable/media-manager.c | 28 +- tests/lib/glib/contactlist/Makefile.am | 10 +- tests/lib/glib/contactlist/conn.c | 24 +- tests/lib/glib/contactlist/connection-manager.c | 5 +- tests/lib/glib/contactlist/contact-list-manager.c | 157 ++++-- tests/lib/glib/contactlist/contact-list.c | 11 +- tests/lib/glib/contactlist/manager-file.py | 4 + tests/lib/glib/contacts-conn.c | 444 ++++++++++++----- tests/lib/glib/contacts-conn.h | 213 +++++---- tests/lib/glib/csh/Makefile.am | 25 +- tests/lib/glib/csh/conn.c | 92 +--- tests/lib/glib/csh/conn.h | 12 +- tests/lib/glib/csh/connection-manager.c | 133 ++++++ tests/lib/glib/csh/connection-manager.h | 61 +++ tests/lib/glib/csh/manager-file.py | 23 + tests/lib/glib/csh/room-manager.c | 117 ++--- tests/lib/glib/csh/room-manager.h | 7 - tests/lib/glib/csh/room.c | 290 +++-------- tests/lib/glib/csh/room.h | 33 -- tests/lib/glib/echo/Makefile.am | 19 + tests/lib/glib/echo/chan.c | 11 +- tests/lib/glib/echo/conn.c | 4 +- tests/lib/glib/echo/connection-manager.c | 14 +- tests/lib/glib/echo/connection-manager.h | 8 +- tests/lib/glib/echo/im-manager.c | 43 +- tests/lib/glib/echo/manager-file.py | 19 + tests/lib/glib/echo2/Makefile.am | 28 +- tests/lib/glib/echo2/chan.c | 12 +- tests/lib/glib/echo2/conn.c | 11 +- tests/lib/glib/echo2/conn.h | 5 +- tests/lib/glib/echo2/connection-manager.c | 88 ++++ tests/lib/glib/echo2/connection-manager.h | 64 +++ tests/lib/glib/echo2/im-manager.c | 42 +- tests/lib/glib/echo2/manager-file.py | 19 + tests/lib/glib/future/call/Makefile.am | 6 + tests/lib/glib/future/call/call-channel.c | 15 +- tests/lib/glib/future/call/call-content.c | 13 +- tests/lib/glib/future/call/call-stream.c | 16 +- tests/lib/glib/future/conference/Makefile.am | 3 + tests/lib/glib/params-cm.c | 208 ++++++++ tests/lib/glib/params-cm.h | 95 ++++ tests/lib/glib/simple-account-manager.c | 180 +++++++ tests/lib/glib/simple-account-manager.h | 58 +++ tests/lib/glib/simple-account.c | 301 ++++++++++++ tests/lib/glib/simple-account.h | 56 +++ tests/lib/glib/simple-channel-dispatch-operation.c | 297 ++++++++++++ tests/lib/glib/simple-channel-dispatch-operation.h | 74 +++ tests/lib/glib/simple-client.c | 243 ++++++++++ tests/lib/glib/simple-client.h | 59 +++ tests/lib/glib/simple-conn.c | 107 +++-- tests/lib/glib/simple-conn.h | 59 ++- tests/lib/glib/simple-manager.c | 26 +- tests/lib/glib/simple-manager.h | 51 +- tests/lib/glib/textchan-group.c | 439 +++++++++++++++++ tests/lib/glib/textchan-group.h | 65 +++ tests/lib/glib/textchan-null.c | 529 +++++++++++++++++++++ tests/lib/glib/textchan-null.h | 135 ++++++ tests/lib/glib/util.c | 249 ++++++++++ tests/lib/glib/util.h | 51 ++ 75 files changed, 4675 insertions(+), 1386 deletions(-) commit db069d5924b2fe2787def7a3f2b86f80ef475742 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:25:04 2010 -0300 Contact: Proper parse /capabilities attr. Let's not fail FeatureCapabilities if /capabilities is empty. TelepathyQt4/contact.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 9d68e16c94ba93a092a071c49e6ea819371405f8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:24:50 2010 -0300 Contact: Fixed indentation, header include placement. TelepathyQt4/contact.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 483db8ae18fe28df673a904e4fbb6ce41aadabbe Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:23:11 2010 -0300 Connection: Fixed wrong copy/paste while defining FeatureAccountBalance. TelepathyQt4/connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e5941e890c607dad1f3e22f70703f04456a6d2ce Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 15:22:13 2010 -0300 Channel: Proper use immutable properties when available. Immutable properties are prefixed with the iface name where the properties received by GetAll are not, so let's remove the prefix before parsing the immutable properties. TelepathyQt4/channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 9a4d67f53cda4a350d2fc46e876fff581defa886 Merge: 8911605 da4f760 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 29 04:18:21 2010 -0300 Merge branch 'account-improvements' Reviewed-by: Will Thompson (wjt) commit da4f7608e7d966f8a4577362f7571da336a0dd35 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:16:26 2010 -0300 account-basics test: Removed usage of deprecated methods/signals. tests/dbus/account-basics.cpp | 45 ++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) commit 5a5e379f0f088b0053fa0955530aaf5ef2613a8b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:16:10 2010 -0300 AccountManager: Deprecated accountForPath/s methods. TelepathyQt4/account-manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 15c00d53c5cffd86b7096b856821bb968169e7d8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:15:50 2010 -0300 accounts example: Use new statusChanged signal. Replaced the usage of the deprecated connectionStatusChanged signal with the new statusChanged signal. examples/accounts/account-item.cpp | 11 +++++++---- examples/accounts/account-item.h | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) commit 2b7fe2c57d3e6dec63adfb0e085590c6ed4c6bad Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:15:24 2010 -0300 Account: Added new methods/signals iconName/setIconName/iconNameChanged and deprecated old ones icon/setIcon/iconChanged. Also changed property name iconName instead of icon. TelepathyQt4/account.cpp | 57 +++++++++++++++++++++++++++++++++++++++++------- TelepathyQt4/account.h | 11 ++++++---- 2 files changed, 56 insertions(+), 12 deletions(-) commit b3eaa0d16a6f9cfbc4b6c72996eb212598b98c94 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:15:04 2010 -0300 Account: Added new method protocolName and deprecated old method protocol. Also changed property name to protocolName instead of protocol. TelepathyQt4/account.cpp | 22 +++++++++++++++++----- TelepathyQt4/account.h | 5 +++-- examples/accounts/account-item.cpp | 2 +- examples/accounts/accounts-window.cpp | 2 +- 4 files changed, 22 insertions(+), 9 deletions(-) commit 5303239fe4950f46f44a0e5751c9f47caa652348 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:14:48 2010 -0300 AccountManager: Updated FIXMEs. TelepathyQt4/account-manager.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit edc75265bf34054ad39b52a83e142b2b1399fecc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:14:30 2010 -0300 AccountManager: Deprecate methods that represent accounts as object paths. TelepathyQt4/account-manager.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit 8fbc111a4b3399112d29cd99c6955be1ceced792 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:14:11 2010 -0300 AccountSet: Use new API to check when accounts are created/removed. TelepathyQt4/account-set-internal.h | 6 ++++-- TelepathyQt4/account-set.cpp | 41 ++++++++++++++++++++++--------------- TelepathyQt4/account-set.h | 4 ++-- 3 files changed, 30 insertions(+), 21 deletions(-) commit 8e7a8c279aceaaeab641219d64ae5981f5be2d5b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:13:54 2010 -0300 AccountSet: Properly connect to signals using namespace Tp:: where appropriate. TelepathyQt4/account-set.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0b7fba429414338d86b2dd878af19364258a16c7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:13:31 2010 -0300 AccountSet: Properly use namespace Tp:: in signals params where appropriate. TelepathyQt4/account-set.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f1058c04daa6ea26664fadbca15fd40a03bd8e16 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:13:06 2010 -0300 Account: Added removed signal. TelepathyQt4/account.cpp | 1 + TelepathyQt4/account.h | 1 + 2 files changed, 2 insertions(+) commit 073400a172e6d05a41884be36bf2e7f7615afb86 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:12:47 2010 -0300 AccountManager: Added newAccount signal that uses AccountPtr instead of object path to represent the account. TelepathyQt4/account-manager.cpp | 3 ++- TelepathyQt4/account-manager.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) commit 875cbcdfad2e29d264070c94136c511aec874e0c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:08:58 2010 -0300 AccountManager: Added helper methods to return account sets for valid/invalid accounts. TelepathyQt4/account-manager.cpp | 30 ++++++++++++++++++++++++++++++ TelepathyQt4/account-manager.h | 3 +++ 2 files changed, 33 insertions(+) commit 9555bade07e40264ff38804c49c3af9cb670e4a4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:08:26 2010 -0300 AccountManager: Renamed new helper methods to include a Set suffix. Renamed new helper methods to include a Set suffix, so we can keep the old methods and add new methods like validAccountsSet, ... without breaking API. TelepathyQt4/account-manager.cpp | 8 ++++---- TelepathyQt4/account-manager.h | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit 69984015a1b63f01c0be4f6e79c72d0d72839dea Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:07:56 2010 -0300 AccountManager: Fixed typo. TelepathyQt4/account-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1356323447f05e5b4a9547f01ef04904ff9b7285 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 23 16:07:13 2010 -0300 Account: Proper check if account is online. Proper check if account is online even is SimplePresence is not supported. TelepathyQt4/account.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) commit 23b6a8381d832007d94d9ef60a0d0d1a6f8fd626 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 00:57:41 2010 -0300 AccountManager: Updated copyright. TelepathyQt4/account-manager.cpp | 4 ++-- TelepathyQt4/account-manager.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 0b0948165a382f58e8a0a1f7cb5f1d760ab8a64b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 00:23:39 2010 -0300 AccountManager: Added helper methods to filter accounts by state/presence/protocol/properties. TelepathyQt4/account-manager.cpp | 100 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account-manager.h | 13 ++++- 2 files changed, 111 insertions(+), 2 deletions(-) commit 5a17fc49c325a85329c05cce3537e2f784c35c04 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 14 20:49:58 2010 -0300 AccountManager: Return ready accounts for all helper methods. Now all accounts returned by AccountManager have the Account::FeatureCore enabled, making it easier to use for API users. TelepathyQt4/account-manager.cpp | 295 ++++++++++++++++++++++++--------------- TelepathyQt4/account-manager.h | 1 + tests/dbus/account-basics.cpp | 24 +++- 3 files changed, 210 insertions(+), 110 deletions(-) commit 74a3238bcc787322f3701a1924a3b2599ff28ed7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 18 16:10:18 2010 -0300 AccountSet: Added class to represent a set of accounts filtered by a given criteria. TelepathyQt4/AccountSet | 13 +++ TelepathyQt4/Makefile.am | 5 + TelepathyQt4/account-set-internal.h | 67 +++++++++++++ TelepathyQt4/account-set.cpp | 191 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/account-set.h | 76 ++++++++++++++ TelepathyQt4/types.h | 2 + 6 files changed, 354 insertions(+) commit 77376b1eb17dbbfaa92225568118e497f967f3d9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 18 11:17:03 2010 -0300 Account: Added helper method/signal/property to check whether the account is online. TelepathyQt4/account.cpp | 32 ++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 4 ++++ 2 files changed, 36 insertions(+) commit ce4f1a94919f7a44dbda29382464c6dcbe5b4c14 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 18 16:12:58 2010 -0300 Account: Added propertyChanged signal to indicate when a property changed. This signal will be used by AccountSet to determine whether to update the set. TelepathyQt4/account.cpp | 26 ++++++++++++++++++++++++++ TelepathyQt4/account.h | 5 +++++ 2 files changed, 31 insertions(+) commit ef4f9f2923b36c71a3f1bc840f16f4c301af9efc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 18 11:05:20 2010 -0300 Account: Added Qt properties. Added Qt properties so we can use them to filter accounts among other benefits. TelepathyQt4/account.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) commit 8911605f84525fc8a0fa432dd1d2e0f5d152ffe0 Merge: a0eebec 0220372 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 24 11:55:53 2010 -0300 Merge branch 'channel-immutable-props' Reviewed-by: Will Thompson (wjt) commit a0eebec87fe2acb0751043a42549b177f4bcc249 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 21 10:09:58 2010 -0300 Prepare release 0.3.5 NEWS | 18 ++++++++++++++++-- configure.ac | 8 ++++---- 2 files changed, 20 insertions(+), 6 deletions(-) commit f6d073417d013894ea9449d3854ec734fc1d9ed0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 21 09:53:42 2010 -0300 .gitignore: Added protocols example. .gitignore | 1 + 1 file changed, 1 insertion(+) commit 0220372b374d9b575204391fdd0b11de92a438a2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 17 16:12:49 2010 -0300 Channel: Use immutable properties if available. Channel now uses immutable properties if they are available instead of introspecting the channel main properties. TelepathyQt4/channel.cpp | 48 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) commit c681785900ec3665f09cc4bba9d6b6ac45b44fb5 Merge: 08ef702 33ac042 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 16 11:19:43 2010 -0300 Merge branch 'account-connection-error' Reviewed-by: Will Thompson (wjt) commit 08ef7022015b5092cfb3840d97eed23611fa29ab Merge: f71be18 86d7598 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 16 11:19:29 2010 -0300 Merge branch 'account-changing-presence' Reviewed-by: Will Thompson (wjt) commit f71be186677b1dba4fcc4ff0a6b9fc7e673b76a2 Merge: 9ef24ce 5042a1a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 16 11:18:47 2010 -0300 Merge branch 'spec-0.19.7' Reviewed-by: Will Thompson (wjt) commit 33ac04280d079c7268ebe0f0e30ec1567cc06c76 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 16 10:29:53 2010 -0300 Account: Proper handle changes in ConnectionError/ErrorDetails even if status did not change. TelepathyQt4/account.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit c2add9f6d7cfc24c620780f88a433bbb2e119be3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 14:03:55 2010 -0300 Account: Added Account.ConnectionError/Details support. Also added a new signal statusChanged that contains the connection status and the connection error in the same signal and deprecated the older signal connectionStatusChanged. TelepathyQt4/account.cpp | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 7 +++- 2 files changed, 103 insertions(+), 1 deletion(-) commit 44e843b9f6437068679a20f8b90f74dff2c6ad06 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 14:01:55 2010 -0300 Connection: Added ConnectionHelper class. ConnectionHelper class will provide helper methods that can be used by other classes such as statusReasonToErrorName that converts a connection status reason to a D-Bus error name. TelepathyQt4/connection-internal.h | 7 ++ TelepathyQt4/connection.cpp | 162 ++++++++++++++++++++----------------- 2 files changed, 94 insertions(+), 75 deletions(-) commit 86d759836c0ae60de727bb0a1aae5ba5d892c2da Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 29 04:06:06 2010 -0300 account example: Added Account.ChangingPresence support. examples/accounts/account-item.cpp | 11 +++++++++++ examples/accounts/account-item.h | 2 ++ examples/accounts/accounts-window.cpp | 1 + 3 files changed, 14 insertions(+) commit 992824dbb0467ba52e8ffd66071e1c0d356b3b19 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 29 04:05:50 2010 -0300 Account: Added Account.ChangingPresence support. TelepathyQt4/account.cpp | 33 +++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 3 +++ 2 files changed, 36 insertions(+) commit 5042a1a5536b4023fc1b05ae4489f22ec013362f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 12:03:40 2010 -0300 Added missing pretty include headers for Connection interfaces Balance, ContactCapabilities, ContactInfo and Location. TelepathyQt4/ConnectionInterfaceBalanceInterface | 13 +++++++++++++ .../ConnectionInterfaceContactCapabilitiesInterface | 13 +++++++++++++ TelepathyQt4/ConnectionInterfaceContactInfoInterface | 13 +++++++++++++ TelepathyQt4/ConnectionInterfaceLocationInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 4 ++++ 5 files changed, 56 insertions(+) commit a88cee4411e41138237fb86ca058f169cf62dd9a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 12:01:49 2010 -0300 Connection: Added accessor method for ServicePoint interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 7f0ccd39ccdb5a40b06eef9fa02ca21dc5dcd364 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 12:01:40 2010 -0300 Added auto generated classes for Connection.ServicePoint interface. TelepathyQt4/ConnectionInterfaceServicePointInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 1 + TelepathyQt4/connection.xml | 1 + 3 files changed, 15 insertions(+) commit d61919fd3f523795af6b4434abe1149fa7d5cd3d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 12:01:00 2010 -0300 Connection: Added accessor method for Anonimity interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 57e1e526b0142e042cb723481cc1e496c8978f4a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 12:00:37 2010 -0300 Added auto generated classes for Connection.Anonymity interface. TelepathyQt4/ConnectionInterfaceAnonymityInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 1 + TelepathyQt4/connection.xml | 1 + 3 files changed, 15 insertions(+) commit 6c4172a882188c391ad3365e452bba4cb8d8aedd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 15 11:39:22 2010 -0300 Update to spec 0.19.7 spec/Account.xml | 90 +++ spec/Call_Content_Interface_Mute.xml | 83 +++ spec/Channel_Dispatch_Operation.xml | 66 ++ spec/Channel_Dispatcher.xml | 4 +- spec/Channel_Interface_Anonymity.xml | 68 ++ spec/Channel_Interface_Chat_State.xml | 43 ++ spec/Channel_Interface_DTMF.xml | 179 ++++- spec/Channel_Interface_Messages.xml | 4 + spec/Channel_Interface_Service_Point.xml | 86 +++ spec/Channel_Request.xml | 5 +- spec/Channel_Type_Call.xml | 19 + spec/Client_Handler.xml | 10 + spec/Client_Interface_Requests.xml | 6 +- spec/Client_Observer.xml | 25 +- spec/Connection_Interface_Anonymity.xml | 187 ++++++ spec/Connection_Interface_Capabilities.xml | 2 +- spec/Connection_Interface_Cellular.xml | 110 ++++ spec/Connection_Interface_Contact_Groups.xml | 412 ++++++++++++ spec/Connection_Interface_Contact_Info.xml | 11 + spec/Connection_Interface_Contact_List.xml | 837 ++++++++++++++++++++++++ spec/Connection_Interface_Forwarding.xml | 366 +++++++++-- spec/Connection_Interface_Location.xml | 36 +- spec/Connection_Interface_Mail_Notification.xml | 14 +- spec/Connection_Interface_Service_Point.xml | 136 ++++ spec/all.xml | 13 +- spec/errors.xml | 38 +- spec/generic-types.xml | 30 + spec/template.xml | 33 + 28 files changed, 2808 insertions(+), 105 deletions(-) commit 9ef24ce0b24a703a1e25e7da44c3c5dfcdb6c089 Merge: 9c4b970 758cf29 Author: Alban Crequy Date: Thu Jun 10 18:50:42 2010 +0100 Merge branch 'fix-doc' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 758cf295838097791dd90524f7671e58cae29a63 Author: Alban Crequy Date: Thu Jun 10 18:40:59 2010 +0100 Fix documentation of AbstractClient: use QLatin1String in the pseudo code TelepathyQt4/abstract-client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9c4b970dd540fc30fc817c5b57cfa42091f935fb Merge: 6bec069 8cc693d Author: Alban Crequy Date: Thu Jun 10 12:18:59 2010 +0100 Merge branch 'support-old-tp-glib' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 8cc693de4c9a00204817f7616cef34b89ae9e396 Author: Alban Crequy Date: Wed Jun 9 16:39:11 2010 +0100 Dependency on tp-glib 0.8.1 is enough for tp-qt4-farsight Requires tp-glib 0.11.3 for the tests but only 0.8.1 for tp-qt4-farsight configure.ac | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 6bec0699b3c14f510051c8f1c91e66fc7aedd525 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 4 16:38:00 2010 -0300 call-widget example: Make coverity happy replacing assert with return. examples/call/call-widget.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 7c9dca4d9d4dc2ed804e9768b123902634ad0b8a Author: Simon McVittie Date: Wed May 26 10:50:21 2010 +0100 Update with-session-bus.sh from telepathy-glib, fixing a bashism Reviewed-by: Guillaume Desmottes Bug: https://bugs.freedesktop.org/show_bug.cgi?id=28258 tools/with-session-bus.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 606e42b5f521dfd35852c29ed2c7226d90ef7387 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 24 00:06:33 2010 -0300 Start 0.3.5 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit e68b285a479f4c7406b2e6699d6deb88c964be33 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 23 23:28:54 2010 -0300 Prepare release 0.3.4 NEWS | 11 +++++++++-- configure.ac | 8 ++++---- 2 files changed, 13 insertions(+), 6 deletions(-) commit 2cd44e12899d7a2b2cb7e60bcc6782f651ff8389 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 23 23:51:04 2010 -0300 Fixed dist (Added types-internal.h to build system). TelepathyQt4/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1b0d2dc1054a19f82cece45995c443c6a50eef69 Merge: 5115a19 fcf2bd5 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 23 23:50:13 2010 -0300 Merge remote branch 'drf/fix-socket-crash' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 5115a19dc775b6956a8e039aaa223e31fb62f0c1 Merge: b1fca86 f994160 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 20 10:09:55 2010 -0300 Merge branch 'balance' Reviewed-by: Will Thompson (wjt) commit fcf2bd52c9db261f9253f768dcf59e210f490cef Author: Dario Freddi Date: Wed May 19 17:30:31 2010 +0200 Fix strict QtDBus demarshalling which was causing crashes when qdbus_casting from a SocketAddressIP*. A specification for qdbus_cast was implemented which checks for the incoming type signature: if the incoming struct is (su), it uses a private helper structure which is then converted to the requested type. It also prevents crashes in case the signature is not the expected one. The nice thing is that no code modification are required: you just need to include the brand new types-internal.h. TelepathyQt4/incoming-file-transfer-channel.cpp | 1 + TelepathyQt4/outgoing-file-transfer-channel.cpp | 1 + TelepathyQt4/types-internal.h | 155 ++++++++++++++++++++++++ TelepathyQt4/types.cpp | 32 ++++- 4 files changed, 188 insertions(+), 1 deletion(-) commit f994160d2c04accf7555340ccfc037590c33541f Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 11 20:31:08 2010 -0300 Connection: Added FeatureAccountBalance and accessors. TelepathyQt4/connection.cpp | 94 +++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/connection.h | 8 ++++ 2 files changed, 102 insertions(+) commit ae65d9c635149a9a4566b7171a226da5fff5fc73 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 11 20:10:44 2010 -0300 Connection: Added accessor method for Balance interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 40c3bc55a5db3059f4906500a2eb39613f496859 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 11 20:10:12 2010 -0300 Added auto generated classes for Connection.Balance interface. TelepathyQt4/connection.xml | 1 + 1 file changed, 1 insertion(+) commit b1fca867c3ccd35a92655a42a5e6b3374c29be87 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 10 00:04:51 2010 -0300 Start 0.3.4 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 9ecd8a34748f1e34534af4194d1c97496e0ddc1e Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 9 23:48:43 2010 -0300 Prepare release 0.3.3 NEWS | 14 ++++++++++++-- configure.ac | 8 ++++---- 2 files changed, 16 insertions(+), 6 deletions(-) commit cfdc6748f0daab4512792c4cbacf09ecc37be669 Merge: 665ccc9 87952d4 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 9 23:25:59 2010 -0300 Merge branch 'call-content-remove' Reviewed-by: Will Thompson (wjt) commit 665ccc9c76c8eaa8a9989313cfcbbb4da264f050 Merge: 5143a69 759efd2 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 9 23:25:49 2010 -0300 Merge branch 'got-capabilities-leak' Reviewed-by: Will Thompson (wjt) commit 5143a691cd060679d42b68301322bfd9628d054a Merge: 2b9a124 ee26706 Author: Andre Moreira Magalhaes (andrunko) Date: Sun May 9 23:25:23 2010 -0300 Merge branch 'account-unique-identifier' Reviewed-by: Will Thompson (wjt) commit 759efd2623662ad95b78fcec13d9d280a228e3f1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 7 10:54:03 2010 -0300 Connection: Properly delete caps object on destructor (it was leaking). TelepathyQt4/connection.cpp | 2 ++ 1 file changed, 2 insertions(+) commit ee26706ab820811a35f11941a3b90ccfab7d6ccc Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 6 05:31:40 2010 -0300 Account: Correctly remove object path from Account::uniqueIdentifier. TelepathyQt4/account.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 87952d41bff111e746af71410c3f079a1e03e80a Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 3 19:44:45 2010 -0300 StreamedMediaChannel: Added support for Call.Content.Remove (StreamedMedia::removeContent/Stream/Streams). TelepathyQt4/streamed-media-channel.cpp | 37 ++++++++++++++++++++++++++------- TelepathyQt4/streamed-media-channel.h | 1 + 2 files changed, 30 insertions(+), 8 deletions(-) commit 2b9a12436243df4f617654aa2f7f9309a36e1bec Merge: 200220c 90ccadf Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 6 05:33:40 2010 -0300 Merge branch 'contact-info' Reviewed-by: Ian Monroe (eean) commit 90ccadf8732bdbca3436868b61d30fb8bcd6cba8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 17:24:36 2010 -0300 contacts-conn example cm: Updated copyright notice. tests/lib/glib/contacts-conn.c | 4 ++-- tests/lib/glib/contacts-conn.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit c61ec18b1cee8a3623bfcf475bddde4e78e7bbd2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 17:55:04 2010 -0300 contacts-info test: Added test for Tp::Contact::requestInfo(). tests/dbus/contacts-info.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit 9360b393de500bd27e720bb248beab1ed34341b3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 17:54:45 2010 -0300 contacts-conn example cm: Added ContactInfo.RequestContactInfo support. tests/lib/glib/contacts-conn.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit d1f0348dd04abed1fba0fe9c08e7f6191bef86cf Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 17:53:54 2010 -0300 PendingContactInfo: Added pending operation to represent a contact info request (ContactInfo.RequestContactInfo). TelepathyQt4/Makefile.am | 4 ++ TelepathyQt4/PendingContactInfo | 13 ++++ TelepathyQt4/contact.cpp | 18 +++++ TelepathyQt4/contact.h | 2 + TelepathyQt4/pending-contact-info.cpp | 131 ++++++++++++++++++++++++++++++++++ TelepathyQt4/pending-contact-info.h | 65 +++++++++++++++++ 6 files changed, 233 insertions(+) commit b83526d14783f50b004fed2b526fcc2bc52b8614 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 16:51:07 2010 -0300 contacts-info test: Added test for contacts contact info support. tests/dbus/Makefile.am | 5 + tests/dbus/contacts-info.cpp | 275 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 280 insertions(+) commit 045d5b49b6dbec96e511abea4b041757ac176978 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 16:50:04 2010 -0300 contacts-conn example cm: Add initial ContactInfo support. tests/lib/glib/contacts-conn.c | 115 ++++++++++++++++++++++++++++++++++++++++- tests/lib/glib/contacts-conn.h | 5 ++ 2 files changed, 119 insertions(+), 1 deletion(-) commit 22dfd78e62efba6d378eafbd65fc06c903b7919c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 16:49:28 2010 -0300 Increate tp-glib dependency to >= 0.11.3 so we can use the ContactInfo interface definitions to write tests. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit babd56ba7b52148d3c419b0676aae3a9838a3ed3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 17:01:13 2010 -0300 Contact: Proper depend on FeatureInfo for method refreshInfo. This is needed because refreshInfo emits the new info trough ContactInfoChanged signal that is only handled when FeatureInfo is requested. TelepathyQt4/contact.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 09de10c998721517e8d1277566bcc33971749bd1 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 15:38:25 2010 -0300 Contact: Added method to refresh contact info. TelepathyQt4/contact.cpp | 21 +++++++++++++++++++++ TelepathyQt4/contact.h | 1 + 2 files changed, 22 insertions(+) commit 5ab3d9f4b58188eebc042ddf447d8bcafad57df3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 15:29:17 2010 -0300 Contact: Added initial contact info support. TelepathyQt4/contact-manager.cpp | 25 ++++++++++++++++++- TelepathyQt4/contact-manager.h | 1 + TelepathyQt4/contact.cpp | 54 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact.h | 5 ++++ 4 files changed, 84 insertions(+), 1 deletion(-) commit ba30b76e759f49de05e6dca17a9ee33f8fcddb6b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 30 15:28:31 2010 -0300 Connection: Added accessor method for ContactInfo interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 5ef0c4f57a8818d201c43a56542129d693fccd54 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 29 12:16:49 2010 -0300 Added auto generated classes for Connection.ContactInfo interface. TelepathyQt4/connection.xml | 1 + 1 file changed, 1 insertion(+) commit 200220c7bf8ee01b7fa8ee41fcd572670a9b529a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 23 16:18:54 2010 -0300 Start 0.3.3 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 7bf381d306680ec8329dc8f8236b8b4d40bf788b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 23 15:21:15 2010 -0300 Prepare release 0.3.2 NEWS | 19 +++++++++++++++++-- configure.ac | 8 ++++---- 2 files changed, 21 insertions(+), 6 deletions(-) commit 2115d5bf6aebd799644960b4943e59bbed3dc513 Merge: 7d7d79b 47d629a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 22 11:40:25 2010 -0300 Merge branch 'others-location' Reviewed-by: Simon McVittie (smcv) commit 7d7d79bf5ad85934e144506b833359d47ec923cb Merge: 2525801 4136295 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 22 11:40:03 2010 -0300 Merge branch 'location' Reviewed-by: Simon McVittie (smcv) commit 25258010f21a5915edb4436f76236085a196a6bd Author: George Goldberg Date: Wed Apr 21 18:05:24 2010 +0100 Include future-*.xml files in dist as they were left out of tpqt4 0.3.1, breaking compilation. TelepathyQt4/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 47d629acdf7f2fad0c1d2254947218ef97069fe7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 22 10:58:53 2010 -0300 Contact: Updated docs for location() explaining about the returned object lifetime. TelepathyQt4/contact.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 0aff31c02f1d3723f5f496b993ed0b1efdbe9c87 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 16 11:38:19 2010 -0300 contacts-location test: Added test for contacts location support. tests/dbus/Makefile.am | 5 + tests/dbus/contacts-location.cpp | 235 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 240 insertions(+) commit 46305cdef6e1261e420c1ea4c831ce0597adf0d8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 16 10:55:50 2010 -0300 contacts-conn example cm: Updated from latest telepathy-glib (0.11.2). tests/lib/glib/contacts-conn.c | 343 +++++++++++++++++++++++++++-------------- tests/lib/glib/contacts-conn.h | 44 ++++++ 2 files changed, 274 insertions(+), 113 deletions(-) commit b66c39c8d34f5f5a837663b8d6963a4aa5baacc3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 16:24:46 2010 -0300 Contact: Use ContactLocation class to represent location. TelepathyQt4/contact.cpp | 16 +++++++++++----- TelepathyQt4/contact.h | 5 +++-- 2 files changed, 14 insertions(+), 7 deletions(-) commit abec880b14ba5d4cd6d4f5ad0f65fa3545bb96d3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 12:36:03 2010 -0300 ContactLocation: Added class to represent a contact location. TelepathyQt4/ContactLocation | 13 +++ TelepathyQt4/Makefile.am | 3 + TelepathyQt4/contact-location.cpp | 212 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-location.h | 87 ++++++++++++++++ 4 files changed, 315 insertions(+) commit 5416912a35b3aa28b505ffd42f3d157696db5256 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 12:05:59 2010 -0300 Contact: Added initial location support. TelepathyQt4/contact-manager.cpp | 24 ++++++++++++++++++- TelepathyQt4/contact-manager.h | 1 + TelepathyQt4/contact.cpp | 52 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact.h | 5 ++++ 4 files changed, 81 insertions(+), 1 deletion(-) commit 413629510eb0fc171ddab18c893b9b5ac92788c2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 12:04:33 2010 -0300 Connection: Added accessor method for Location interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit cf5f4476c6afa4e88160fc3caccba4b138124f84 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 12:03:56 2010 -0300 Added auto generated classes for Connection.Location interface. TelepathyQt4/connection.xml | 1 + 1 file changed, 1 insertion(+) commit e2cbaa20ca2a9c9eb6d46ad23de39ea498e9a1bb Merge: 410e80c 784961c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 16 10:31:32 2010 -0300 Merge branch 'observer-recover' Reviewed-by: Simon McVittie (smcv) commit 410e80ce1909bb6ced73bd259af387b2ab363ab8 Merge: b0cf397 6f26de2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 16 10:31:09 2010 -0300 Merge branch 'spec-0.19.5' Reviewed-by: Simon McVittie (smcv) commit 784961c9dc02d17ae234a604c744922557a2a645 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 16 10:24:22 2010 -0300 AbstractClientObserver: Moved Private members initialization to the Private class constructor. TelepathyQt4/abstract-client.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit c32f94ea930129138d7853fc5f3b00987dd792d4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 16 10:22:36 2010 -0300 AbstractClientObserver: Renamed recover method to shouldRecover. Renamed recover method to shouldRecover to make it explicit that it is an accessor to check whether the observer should set the Observer.Recover flag instead of actually doing any recover itself. TelepathyQt4/abstract-client.cpp | 24 ++++++++++++------------ TelepathyQt4/abstract-client.h | 4 ++-- TelepathyQt4/client-registrar-internal.h | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) commit c048d27d77c0ff725f54c8588d9118395276db22 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 19:08:48 2010 -0300 AbstractClientObserver: Added Observer.Recover property support. TelepathyQt4/abstract-client.cpp | 37 ++++++++++++++++++++++++++++++++ TelepathyQt4/abstract-client.h | 4 ++++ TelepathyQt4/client-registrar-internal.h | 6 ++++++ 3 files changed, 47 insertions(+) commit 6f26de2f8fb59964932e55ae63e6ca8428c565f9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 18:45:26 2010 -0300 Added missing tp:type definitions to make code generator happy. spec/Call_Content_Interface_Media.xml | 2 +- spec/Channel_Type_Call.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6dd617b45704098857c9e7e7a271eda884427e1d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 15 18:09:49 2010 -0300 Update to spec 0.19.5 spec/Call_Content.xml | 14 ++ spec/Call_Content_Interface_Media.xml | 2 +- spec/Channel.xml | 23 ++- spec/Channel_Interface_Conference.xml | 54 +++++-- spec/Channel_Interface_Media_Signalling.xml | 20 +-- spec/Channel_Interface_Messages.xml | 130 +++++++++++++---- spec/Channel_Type_Call.xml | 76 +++++----- spec/Channel_Type_Contact_Search.xml | 4 +- spec/Channel_Type_Streamed_Media.xml | 48 ++++++ spec/Client_Observer.xml | 69 +++++++-- spec/Connection.xml | 72 ++++++--- spec/Connection_Interface_Contact_Capabilities.xml | 21 ++- spec/Connection_Interface_Contact_Info.xml | 162 ++++++++++++++++----- spec/Connection_Interface_Contacts.xml | 28 ++-- spec/Connection_Interface_Mail_Notification.xml | 23 ++- spec/Connection_Manager.xml | 12 +- spec/all.xml | 8 +- 17 files changed, 579 insertions(+), 187 deletions(-) commit b0cf3979448d05e342d9e98709ebed0def699440 Author: Dario Freddi Date: Wed Apr 7 19:26:00 2010 +0200 Fix text-chan test: it is not guaranteed that the signal would be streamed upon removal, so wait until we get a pendingMessageRemoved signal before going on Reviewed-by: Andre Moreira Magalhaes (andrunko) tests/dbus/text-chan.cpp | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) commit 0652690b8b239a0f1783deed5f0b0d243ee8ac25 Author: Will Thompson Date: Thu Apr 15 15:30:24 2010 +0100 qt4-constants-gen: correctly handle UTF-8 I documented an error code with a Unicode ellipsis and Python got upset. tools/qt4-constants-gen.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) commit b268ad75d759a8eacf5bde09877d4fff30d78aba Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 7 10:52:40 2010 -0300 Fixed example/protocols/Makefile.am (missing separator). examples/protocols/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 23cbf7220244adddb6f17b3cfba12977fd772314 Merge: 02ce1ae 68bc54e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 7 09:41:09 2010 -0300 Merge branch 'example-protocols' Reviewed-by: Simon McVittie (smcv) commit 02ce1ae4e216b0d0fb230d1172931aa885ca1ceb Author: Dario Freddi Date: Fri Apr 2 21:32:03 2010 +0200 Fixing compilation (more specific, moc generation). The current code triggered QTBUG #2151, where a QObject having some Q_PROPERTYs and not declared as a metatype generated a faulty moc, breaking compilation. The issue is not completely solved: building with more than one batch job still breaks. I'll be on that later. Signed-off-by: Dario Freddi Reviewed-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/client-registrar-internal.h | 6 ++++++ tools/qt4-client-gen.py | 5 +++++ 2 files changed, 11 insertions(+) commit 68bc54e4d72bdf4ab68981c03626a5bcc028b805 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 1 15:59:35 2010 -0300 Added example application to list all supported protocols. configure.ac | 1 + examples/Makefile.am | 4 +-- examples/protocols/Makefile.am | 40 ++++++++++++++++++++++ examples/protocols/cm-wrapper.cpp | 64 ++++++++++++++++++++++++++++++++++ examples/protocols/cm-wrapper.h | 58 +++++++++++++++++++++++++++++++ examples/protocols/main.cpp | 21 ++++++++++++ examples/protocols/protocols.cpp | 72 +++++++++++++++++++++++++++++++++++++++ examples/protocols/protocols.h | 56 ++++++++++++++++++++++++++++++ 8 files changed, 314 insertions(+), 2 deletions(-) commit cab9407df672aec1e49863aeb7e6d646b1184428 Author: Dario Freddi Date: Thu Apr 1 12:21:21 2010 -0300 ContactManager: Add a new signal, allKnownContactsChanged, to monitor contact addition/removal. Reviewed-by: Olli Salli Reviewed-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/contact-manager.cpp | 53 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.h | 14 +++++++++++ tests/dbus/conn-roster.cpp | 41 +++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) commit 42d51f27f897e9c2ac7219fe567d747e4b19010a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 02:05:11 2010 -0300 Start 0.3.2 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 2ce129b2f570c0d8fe8de5adadf9e90583798bed Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:58:44 2010 -0300 Prepare release 0.3.1 NEWS | 13 +++++++++++-- configure.ac | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) commit e61c2f1d35c3e939dcb30c2b19f2d4fb0219ae0b Merge: e1b525b c3047e7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:51:37 2010 -0300 Merge branch 'docs' commit c3047e739dad6403463c4f65f2a659f9f2239d9d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:45:00 2010 -0300 Updated AUTHORS with the main authors. AUTHORS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c37896ac805db948e5b97ad4a4200b4134092d0f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 text-channel: Improve documentation (bugfixes+additions) TelepathyQt4/text-channel.cpp | 62 +++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 29 deletions(-) commit f6e1437ce89d63303307b7ca6678215f1b32f717 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 streamed-media-channel: Improve documentation (bugfixes+additions) TelepathyQt4/streamed-media-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5bdc2616c518d6de2c28f3171afb3e5ae19550dd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 streamed-media-channel: Improve documentation (bugfixes+additions) TelepathyQt4/streamed-media-channel.cpp | 541 +++++++++++++++++++++++++++----- 1 file changed, 460 insertions(+), 81 deletions(-) commit 8efb8330e8708a0321bd6d24713d3afea7c9d48f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 referenced-handles: Improve documentation (bugfixes+additions) TelepathyQt4/referenced-handles.cpp | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) commit 8f2234e294cdc05489745bd07e0ec769f1aaae8a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-variant: Improve documentation (bugfixes+additions) TelepathyQt4/pending-variant.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 91a22ae8224d9b2558eb011bcf2512f9c7f9da7f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-string-list: Improve documentation (bugfixes+additions) TelepathyQt4/pending-string-list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 833b13d0bc52906de257fc82ef9640f69d1d0e5b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-ready: Improve documentation (bugfixes+additions) TelepathyQt4/pending-ready.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) commit 627b363868debaf3b7228e6ad664c7fb677ce283 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-operation: Improve documentation (bugfixes+additions) TelepathyQt4/pending-operation.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit fadb66efdda561359cc7fa4a3b63b2c74f54a5e5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-handles: Improve documentation (bugfixes+additions) TelepathyQt4/pending-handles.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) commit 2a1d95d170782917ab432978d682ea1c9cce7972 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-contact-attributes: Improve documentation (bugfixes+additions) TelepathyQt4/pending-contact-attributes.cpp | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) commit e7ef59915014da6bc145a5ddfc64cb2ece7b93b0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:40:00 2010 -0300 pending-connection: Improve documentation (bugfixes+additions) TelepathyQt4/pending-connection.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) commit 27956caa10142a056bb99f079b7dbbdaa6614299 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 pending-channel: Improve documentation (bugfixes+additions) TelepathyQt4/pending-channel.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) commit 742604677ad4855f0c3e2934a7d7c9090518adf1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 pending-channel-request: Improve documentation (bugfixes+additions) TelepathyQt4/pending-channel-request.cpp | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) commit 88ae265776a93497b8eb51a4fe56c47f038b3171 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 pending-account: Improve documentation (bugfixes+additions) TelepathyQt4/pending-account.cpp | 49 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 25 deletions(-) commit bd2d58a6621305012ccf2b900ee8feb76fed10eb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 outgoing-file-transfer-channel: Improve documentation (bugfixes+additions) TelepathyQt4/outgoing-file-transfer-channel.cpp | 30 +++++++++++++++++++------ 1 file changed, 23 insertions(+), 7 deletions(-) commit 5538822837fe42b69e106f1e7f55261ed12fd37e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 optional-interface-factory: Improve documentation (bugfixes+additions) TelepathyQt4/optional-interface-factory.cpp | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) commit e343a157dc6d831112a1a818a352267239f158ad Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 message: Improve documentation (bugfixes+additions) TelepathyQt4/message.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) commit dae70ac18b22ffbe1e5f8f34c252807595a2840c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 manager-file: Improve documentation (bugfixes+additions) TelepathyQt4/manager-file.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 496f583d4354881a4082d06d38e5e0793ae8bf08 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 key-file: Improve documentation (bugfixes+additions) TelepathyQt4/key-file.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a6ae2a14c40c0dc99f408f33bb9c91d283419792 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 incoming-file-transfer-channel: Improve documentation (bugfixes+additions) TelepathyQt4/incoming-file-transfer-channel.cpp | 40 +++++++++++++++++-------- 1 file changed, 28 insertions(+), 12 deletions(-) commit 1a52cd1cf6844bb864240d064319381723d5d2f7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 file-transfer-channel: Improve documentation (bugfixes+additions) TelepathyQt4/file-transfer-channel.cpp | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) commit 5a8f765458b3b8bbf6a714ec4b0802e49d8dd4f0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 contact-manager: Improve documentation (bugfixes+additions) TelepathyQt4/contact-manager.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) commit 78e5301e74f680a14dc204c6f57d0b607b86f94d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 contact-capabilities: Improve documentation (bugfixes+additions) TelepathyQt4/contact-capabilities.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit e663e24a15917a1266b06084b21fb36ba5764ae0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 connection: Improve documentation (bugfixes+additions) TelepathyQt4/connection.cpp | 302 +++++++++++++++++++++++++++++++++----------- 1 file changed, 225 insertions(+), 77 deletions(-) commit f25967e46903ba7f1f340d7935aca259ec92935e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 connection-manager: Improve documentation (bugfixes+additions) TelepathyQt4/connection-manager.cpp | 54 ++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 22 deletions(-) commit 48d22b7ed1fb3b8fab0652a30274691735c5450d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 connection-capabilities: Improve documentation (bugfixes+additions) TelepathyQt4/connection-capabilities.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit c9a676f238d724e0a84c6caa76325fbdae4cdb87 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 client-registrar: Improve documentation (bugfixes+additions) TelepathyQt4/client-registrar.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) commit b0c8dcd4d5d1dc87dbd1e58a71a8efdc92ab2e33 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 channel: Improve documentation (bugfixes+additions) TelepathyQt4/channel.cpp | 295 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 217 insertions(+), 78 deletions(-) commit 8429e2b31438d0274388085774347cca761853ed Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 channel-request: Improve documentation (bugfixes+additions) TelepathyQt4/channel-request.cpp | 163 +++++++++++++++++++++++++++++++++------ 1 file changed, 141 insertions(+), 22 deletions(-) commit 71bf3c9b2d6602bd2320d5d021e444acd865c287 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 channel-dispatch-operation: Improve documentation (bugfixes+additions) TelepathyQt4/channel-dispatch-operation.cpp | 189 ++++++++++++++++++++++++---- 1 file changed, 163 insertions(+), 26 deletions(-) commit 3a14dd437f04fed8df707853e0cbb2a9c87ea733 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 capabilities-base: Improve documentation (bugfixes+additions) TelepathyQt4/capabilities-base.cpp | 56 ++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 26 deletions(-) commit 7d27a81d73012d338c07c509f0d0cc0f3f624981 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 account: Improve documentation (bugfixes+additions) TelepathyQt4/account.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) commit 53dc40748ff7b8b0dce79c32d42e32541e7b448d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 account: Improve documentation (bugfixes+additions) TelepathyQt4/account.cpp | 738 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 610 insertions(+), 128 deletions(-) commit 1de805ca59a68e965d5c23773bd8f9c771b8b183 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 account-manager: Improve documentation (bugfixes+additions) TelepathyQt4/account-manager.cpp | 145 +++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 83 deletions(-) commit 83ea3dca9b73eef5db20602206705ebdefebae7e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:39:59 2010 -0300 abstract-client: Improve documentation (bugfixes+additions) TelepathyQt4/abstract-client.cpp | 702 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 701 insertions(+), 1 deletion(-) commit da386a20dc9dadcb4801ead14542d54151a8179d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 29 01:11:50 2010 -0300 groups.dox: Added groups definition. Let's have one place where all groups are defined to avoid duplication. TelepathyQt4/groups.dox | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) commit c6099b62e8bff5d9b94778b7a01f59a7bd986706 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 28 23:20:58 2010 -0300 doxygen.css: Make Class Index fit screen and decreased h2 font size. doxygen.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 82863d653c9e728c7aeb4a296c8d7f52d12c68c3 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 28 23:02:37 2010 -0300 doxygen.css: Fixed alignment of version in main page. doxygen.css | 5 +++++ 1 file changed, 5 insertions(+) commit 9af69e5f63f2c7618f5a5dba41f80d3546ae4797 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 28 23:20:00 2010 -0300 doxygen.cfg.in: Do not generate docs for future (internal) stuff. doxygen.cfg.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4ad4d214b7939d4ca8370312ea202e58687e0f84 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Mar 28 23:00:17 2010 -0300 doxygen-footer.html: Updated copyright notice. doxygen-footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e1b525bb24149f279add19cab2283ba9098745b8 Merge: 66db2f6 969968f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 30 01:38:16 2010 -0300 Merge branch 'sm-fix' Reviewed-by: Simon McVittie (smcv) commit 969968f9e582b745ddf4d4c3d58dcd97ed1a8c61 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 29 09:52:18 2010 -0300 StreamedMediaChannel: Proper finish PendingMediaStreams operation when all streams/contents are ready. TelepathyQt4/streamed-media-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 66db2f65e9f9d0d05f2c2a2af6321cb400f5564c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 19 11:27:32 2010 -0300 Start 0.3.1 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 833098a24e39801becc8faff19ec5f736eccdbd1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 18 16:35:45 2010 -0300 Prepare release 0.3.0 NEWS | 28 ++++++++++++++++++++++++++-- configure.ac | 10 +++++----- 2 files changed, 31 insertions(+), 7 deletions(-) commit e354889fedef5c5342d4a865a39f3286a9445c0e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 18 16:18:27 2010 -0300 Bump tp-glib dependency to >= 0.10.0 This is needed cause tests/lib/glib/future/call depends on tp-glib >= 0.10.0 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d324507210bfd9b40738a38465e61837acdc8e9a Merge: 6ac9068 074c8be Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 18 12:23:06 2010 -0300 Merge branch 'fix-docs-gen' Reviewed-by: Will Thompson (wjt) commit 6ac9068893b3820331f6c7a895dc0ecbfcd0aa97 Merge: 0e33de1 c38cdfe Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 18 12:22:40 2010 -0300 Merge branch 'qstring-from-ascii-no-more' Reviewed-by: Simon McVittie (smcv) commit 074c8beb7e9e605eb7bbb669756d98a3d814a2f0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 15 21:02:14 2010 -0300 Generate docs properly. Make sure doxygen skips some macros such as TELEPATHY_QT4_EXPORT properly. Also some minor tweaks. doxygen.cfg.in | 78 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 13 deletions(-) commit c38cdfe4f54f562ef7a13d5306396217f71dc9e4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 00:42:28 2010 -0300 Removed usage of QString::fromAscii. Replace usage of QString::fromAscii with QLatin1String. TelepathyQt4/connection-manager.cpp | 8 +++--- TelepathyQt4/message.cpp | 20 +++++++-------- TelepathyQt4/text-channel.cpp | 44 ++++++++++++++++----------------- tests/dbus/chan-conference.cpp | 4 +-- tests/dbus/client.cpp | 4 +-- tests/dbus/cm-basics.cpp | 2 +- tests/dbus/stateful-proxy.cpp | 12 ++++----- tests/dbus/streamed-media-chan-call.cpp | 4 +-- tests/dbus/streamed-media-chan.cpp | 4 +-- tests/dbus/text-chan.cpp | 38 ++++++++++++++-------------- 10 files changed, 70 insertions(+), 70 deletions(-) commit 0e33de19dce092a3a82f83687dc10c0fddd50d6a Merge: 4b89d90 7f3671c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 14:05:19 2010 -0300 Merge branch 'qt-no-cast-from-ascii-support' Reviewed-by: Simon McVittie (smcv) commit 7f3671cac89bad564f0302057b560c3c37bb1e44 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 13:51:16 2010 -0300 Make QT_NO_CAST_FROM_ASCII mandatory. configure.ac | 1 + 1 file changed, 1 insertion(+) commit 6104d58bd98e3ca2e2310b630934f947f3b4b632 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 13:51:01 2010 -0300 Removed AM_CFLAGS from cpp specific makefiles. tests/lib/Makefile.am | 1 - 1 file changed, 1 deletion(-) commit 1a4d5c7dd2fc5a3acb5830ccdbbffc4c36190740 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 13:50:36 2010 -0300 Removed AM_CXXFLAGS from glib specific makefiles. tests/lib/glib/Makefile.am | 1 - tests/lib/glib/callable/Makefile.am | 2 -- 2 files changed, 3 deletions(-) commit be5cce2182171896cf70884d7f25fa198035a07e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 17 03:30:42 2010 -0300 Added support to QT_NO_CAST_FROM_ASCII. TelepathyQt4/account-manager.cpp | 21 +-- TelepathyQt4/account.cpp | 224 +++++++++++++----------- TelepathyQt4/capabilities-base.cpp | 10 +- TelepathyQt4/channel-dispatch-operation.cpp | 29 +-- TelepathyQt4/channel-factory.cpp | 10 +- TelepathyQt4/channel-request.cpp | 20 +-- TelepathyQt4/channel.cpp | 212 +++++++++++----------- TelepathyQt4/channel.h | 18 +- TelepathyQt4/client-registrar.cpp | 29 +-- TelepathyQt4/connection-capabilities.cpp | 2 +- TelepathyQt4/connection-manager.cpp | 17 +- TelepathyQt4/connection.cpp | 100 +++++------ TelepathyQt4/contact-manager.cpp | 45 +++-- TelepathyQt4/contact.cpp | 27 +-- TelepathyQt4/dbus-proxy.cpp | 14 +- TelepathyQt4/file-transfer-channel.cpp | 26 +-- TelepathyQt4/incoming-file-transfer-channel.cpp | 18 +- TelepathyQt4/key-file.cpp | 42 ++--- TelepathyQt4/manager-file.cpp | 43 ++--- TelepathyQt4/method-invocation-context.h | 2 +- TelepathyQt4/optional-interface-factory.h | 4 +- TelepathyQt4/outgoing-file-transfer-channel.cpp | 14 +- TelepathyQt4/pending-channel-request.cpp | 14 +- TelepathyQt4/pending-contacts.cpp | 5 +- TelepathyQt4/pending-handles.cpp | 24 +-- TelepathyQt4/pending-operation.cpp | 2 +- TelepathyQt4/readiness-helper.cpp | 6 +- TelepathyQt4/streamed-media-channel.cpp | 118 +++++++------ TelepathyQt4/text-channel.cpp | 28 +-- examples/accounts/account-item.cpp | 15 +- examples/accounts/accounts-window.cpp | 24 +-- examples/call/call-handler.cpp | 10 +- examples/call/call-widget.cpp | 16 +- examples/call/call-window.cpp | 19 +- examples/call/main.cpp | 4 +- examples/file-transfer/receiver-channel.cpp | 2 +- examples/file-transfer/receiver.cpp | 16 +- examples/file-transfer/sender.cpp | 16 +- examples/roster/main.cpp | 5 +- examples/roster/roster-item.cpp | 10 +- examples/roster/roster-widget.cpp | 10 +- examples/roster/roster-window.cpp | 11 +- tests/dbus/account-basics.cpp | 44 ++--- tests/dbus/account-channel-dispatcher.cpp | 28 +-- tests/dbus/chan-basics.cpp | 24 +-- tests/dbus/chan-group.cpp | 78 +++++---- tests/dbus/client.cpp | 55 +++--- tests/dbus/cm-basics.cpp | 14 +- tests/dbus/conn-basics.cpp | 4 +- tests/dbus/conn-capabilities.cpp | 4 +- tests/dbus/conn-requests.cpp | 10 +- tests/dbus/conn-roster-groups.cpp | 30 ++-- tests/dbus/conn-roster.cpp | 27 +-- tests/dbus/contacts-capabilities.cpp | 7 +- tests/dbus/contacts.cpp | 121 +++++++------ tests/dbus/handles.cpp | 7 +- tests/dbus/stateful-proxy.cpp | 12 +- tests/dbus/streamed-media-chan-call.cpp | 24 +-- tests/dbus/streamed-media-chan.cpp | 42 ++--- tests/dbus/text-chan.cpp | 4 +- tests/key-file.cpp | 35 ++-- tests/manager-file.cpp | 68 +++---- 62 files changed, 1000 insertions(+), 920 deletions(-) commit 4b89d907015b3e5493f7cd9b4f03c1d37d95b569 Merge: 626569c ce6e2bb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 15 19:23:08 2010 -0300 Merge branch 'call' Reviewed-by: Senko Rasic (ptlo) commit ce6e2bb388510823d93567086a497a143655d971 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 24 00:10:50 2010 -0300 streamed-media-chan-call test: Added tests for StreamedMediaChannel Call support. tests/dbus/Makefile.am | 5 + tests/dbus/streamed-media-chan-call.cpp | 640 ++++++++++++++++++++++++++++++++ 2 files changed, 645 insertions(+) commit 4b2e86f5aa734276b754bc0b83c3eaa35d7a1f11 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 23 22:18:47 2010 -0300 streamed-media-channel: Use const and full qualified param for MediaStream::remoteSendingStateChanged signal. TelepathyQt4/streamed-media-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e1dd7f69c2e0eba43983d983eac0520d467441fa Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 24 00:45:49 2010 -0300 streamed-media-channel: Make sure we don't create contents with the same name (at least contents created internally). TelepathyQt4/streamed-media-channel-internal.h | 2 ++ TelepathyQt4/streamed-media-channel.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) commit a33f9fb436d244db01779fb7e9feaaf6b89aaf86 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 24 00:46:48 2010 -0300 streamed-media-channel: Added requestStream/s support (Call support). TelepathyQt4/streamed-media-channel-internal.h | 8 +++ TelepathyQt4/streamed-media-channel.cpp | 67 +++++++++++++++++++++++--- TelepathyQt4/streamed-media-channel.h | 5 ++ 3 files changed, 74 insertions(+), 6 deletions(-) commit a022d38ae4c0930f82174e60eec447e37cc5dbee Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 23 22:05:33 2010 -0300 streamed-media-channel: Added requestContent support (Call support). TelepathyQt4/streamed-media-channel-internal.h | 8 ++++ TelepathyQt4/streamed-media-channel.cpp | 51 +++++++++++++++++++++++++- TelepathyQt4/streamed-media-channel.h | 6 +++ 3 files changed, 63 insertions(+), 2 deletions(-) commit d998490cc09a575ef20e62a3bd970a2f0467569a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 23 22:04:47 2010 -0300 streamed-media-channel: Proper handle Call.Stream.SendersChanged. TelepathyQt4/streamed-media-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e74b0d88c3918df1452c740e62c51830149df98e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 23 22:04:35 2010 -0300 streamed-media-channel: Added debug to Call.Stream.SendersChanged slot. TelepathyQt4/streamed-media-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit f30cfa9098102c13eb014b7af5564f08dd64de16 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 16:24:17 2010 -0200 streamed-media-channel: Implemented MediaStream::requestDirection (Call support). TelepathyQt4/streamed-media-channel.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) commit e65ee9084dbd163068bd3c49d175a79b9027ec74 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 16:21:27 2010 -0200 pending-operation: Added new PendingComposite operation which is a composition of 1-N pending operations. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/PendingComposite | 13 ++++++++++++ TelepathyQt4/pending-operation.cpp | 36 ++++++++++++++++++++++++++++++++ TelepathyQt4/simple-pending-operations.h | 17 +++++++++++++++ 4 files changed, 67 insertions(+) commit a892733979f7587780c2d52f3b01a1e97d1403c3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 16:00:38 2010 -0200 streamed-media-channel: Added proxy class to forward MediaStream.Call.SendersChanged signal which uses internally declared structs from tp-future. TelepathyQt4/streamed-media-channel-internal.h | 22 +++++++++++++ TelepathyQt4/streamed-media-channel.cpp | 45 +++++++++++++------------- TelepathyQt4/streamed-media-channel.h | 2 -- 3 files changed, 44 insertions(+), 25 deletions(-) commit adc31469a550eed67cb60fb46c9c2e9e1849d97e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 15:57:46 2010 -0200 streamed-media-channel: Moved Private struct/class declaration to streamed-media-channel-internal.h. This change is needed as we need to create a proxy QObject to forward slots/signals from internal tp-future which cannot be declared in a public header (see next-commit). TelepathyQt4/Makefile.am | 3 + TelepathyQt4/streamed-media-channel-internal.h | 206 +++++++++++++++++++++++++ TelepathyQt4/streamed-media-channel.cpp | 178 +-------------------- 3 files changed, 211 insertions(+), 176 deletions(-) commit 9695e3d6c7165da7ebdf44f89bb49c09c7e91e57 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 15:24:18 2010 -0200 channel-factory: ChannelFactory now creates StreamedMediaChannel objects for channels of type Call. TelepathyQt4/channel-factory.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit af0dbfa95b30ecd0b965480218c1e24665a65274 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 15:17:39 2010 -0200 streamed-media-channel: Avoid adding the same SM stream more than once. TelepathyQt4/streamed-media-channel.cpp | 37 +++++++++++++++++++++++---------- TelepathyQt4/streamed-media-channel.h | 1 + 2 files changed, 27 insertions(+), 11 deletions(-) commit 7c1d6d922cf78ab3850014d93478c4c927d4d3cf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 16 15:17:17 2010 -0200 streamed-media-channel: Proper connect contentRemoved signal. TelepathyQt4/streamed-media-channel.cpp | 4 ++-- TelepathyQt4/streamed-media-channel.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 8b89d88a1a008ed82610b5807394661a313e21b7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 06:04:42 2010 -0300 Add 'future/call-cm' example CM from telepathy-glib configure.ac | 1 + tests/lib/glib/Makefile.am | 1 + tests/lib/glib/future/Makefile.am | 2 +- tests/lib/glib/future/call/Makefile.am | 45 + tests/lib/glib/future/call/call-channel.c | 1624 ++++++++++++++++++++++++++ tests/lib/glib/future/call/call-channel.h | 74 ++ tests/lib/glib/future/call/call-content.c | 369 ++++++ tests/lib/glib/future/call/call-content.h | 81 ++ tests/lib/glib/future/call/call-manager.c | 537 +++++++++ tests/lib/glib/future/call/call-manager.h | 71 ++ tests/lib/glib/future/call/call-stream.c | 705 +++++++++++ tests/lib/glib/future/call/call-stream.h | 82 ++ tests/lib/glib/future/call/cm.c | 129 ++ tests/lib/glib/future/call/cm.h | 73 ++ tests/lib/glib/future/call/conn.c | 421 +++++++ tests/lib/glib/future/call/conn.h | 78 ++ tests/lib/glib/future/call/manager-file.py | 23 + tests/lib/glib/future/extensions/channel.xml | 2 + tests/lib/glib/future/extensions/misc.xml | 7 + 19 files changed, 4324 insertions(+), 1 deletion(-) commit 96b30edec077564e4aadff49d8ccec8677849902 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 2 15:18:18 2010 -0200 streamed-media-channel: Let's not deprecate some useful methods. TelepathyQt4/streamed-media-channel.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 442ac4eec710c223610b9c67886591ccfad57712 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 13:27:35 2010 -0200 streamed-media-channel: Implemented StreamedMediaChannel::handlerStreamingRequired (Call support). TelepathyQt4/streamed-media-channel.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 6f0ff116c56b06cc647b3c31a07978ddd873df24 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 13:16:21 2010 -0200 streamed-media-channel: Implemented StreamedMediaChannel::hangupCall and updated params to fit Call.Hangup (Call support). TelepathyQt4/streamed-media-channel.cpp | 7 ++++--- TelepathyQt4/streamed-media-channel.h | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) commit 3a34487c7a1f7f2b8c665e40e10d12779255ef60 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 13:12:30 2010 -0200 streamed-media-channel: Added StreamedMediaChannel::StateChangeReason enum to mimic CallStateChangeReason enum defined in future-constants.h (Call support). TelepathyQt4/streamed-media-channel.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 3a5eaf9226d01494e72badbdeede762e4f8da1a7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 13:07:45 2010 -0200 streamed-media-channel: Implemented StreamedMediaChannel::acceptCall (Call support). TelepathyQt4/streamed-media-channel.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 6844f2c47e8b610a89949713c6a4bd49cfc3d6c6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 13:07:34 2010 -0200 streamed-media-channel: Return PendingFailure for StreamedMediaChannel::removeStream/s and updated TODO (Call support). TelepathyQt4/streamed-media-channel.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit a22f6943b2cf65a557490182364872911e598506 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 12:57:46 2010 -0200 streamed-media-channel: Implemented some missing MediaStream methods (Call support). TelepathyQt4/streamed-media-channel.cpp | 192 +++++++++++++++++++++++++++----- 1 file changed, 163 insertions(+), 29 deletions(-) commit ac6bfd53e9a374fd1d03afe626daaaa215cd4ef4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 28 11:58:34 2010 -0200 streamed-media-channel: Added initial Call interface support. TelepathyQt4/streamed-media-channel.cpp | 677 ++++++++++++++++++++++++++++++-- TelepathyQt4/streamed-media-channel.h | 27 ++ 2 files changed, 679 insertions(+), 25 deletions(-) commit cba18ceed7250faa7e3519245f8558acd60e6cdb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 25 13:44:33 2010 -0200 streamed-media-channel: Use const & where possible without breaking API/ABI. TelepathyQt4/streamed-media-channel.cpp | 4 ++-- TelepathyQt4/streamed-media-channel.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit f0b04e50bf08c25858becbf074c2b3d9dd0c573a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 19 11:57:15 2010 -0200 streamed-media-channel: Mark deprecated methods as deprecated. The warnings are not activated yet. Missing build flag TELEPATHY_QT4_DEPRECATED_WARNINGS. TelepathyQt4/streamed-media-channel.h | 41 +++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 19 deletions(-) commit d715c7f2b61643e055f54dae81b38910d99a7eb7 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 17 18:16:46 2010 -0200 global.h: Added TELEPATHY_QT4_DEPRECATED macro. TelepathyQt4/global.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) commit 05a4048a227889724724be5379fa1c370a85ce71 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 21 00:06:38 2009 -0200 streamed-media-channel: Refactor to allow Call interface support to be added. TelepathyQt4/streamed-media-channel.cpp | 1281 ++++++++++++++++++++++++------- TelepathyQt4/streamed-media-channel.h | 171 ++++- TelepathyQt4/types.h | 2 + 3 files changed, 1126 insertions(+), 328 deletions(-) commit b8369ad4c2e89d5e2bd9f960e256d38a1901f76c Author: Andre Moreira Magalhaes (andrunko) Date: Sun Dec 20 23:56:16 2009 -0200 streamed-media-channel: Moved Private::callInterface declaration to where it belongs. TelepathyQt4/streamed-media-channel.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 1e24f3a433e47267416be880795630ef84be4f95 Author: Simon McVittie Date: Thu Dec 3 18:57:42 2009 +0000 StreamedMediaChannel: hook up the future Call interface, to check that it links correctly TelepathyQt4/streamed-media-channel.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit a400e17f925518ed5a1ca5a502287e94bdf7bd8b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 05:19:19 2010 -0300 Generate bindings for Call interface. TelepathyQt4/future-channel.xml | 2 ++ TelepathyQt4/future-misc.xml | 7 +++++++ 2 files changed, 9 insertions(+) commit 626569cc126a7562649b03f3681a366c1c34856f Merge: c57b9c3 d9caff2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 15 10:45:25 2010 -0300 Merge branch 'conference' Reviewed-by: Senko Rasic (ptlo) commit d9caff2b6d4ab1b6b1bd691f7e665147736673a0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 8 14:57:16 2010 -0300 Removed usage of telepathy-glib.h (not included in old tp-glib versions). tests/lib/glib/future/conference/chan.c | 6 ++++-- tests/lib/glib/future/conference/chan.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) commit 1f00b5b93fbca7bd570c47207363fb200e11b360 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 15:43:18 2010 -0300 chan-conference test: Improved test coverage. tests/dbus/chan-conference.cpp | 67 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) commit 78fb5465d0a9ae0e3aca252ee35c6b7bf9c8c566 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 15:42:25 2010 -0300 channel: Proper emit conferenceChannelMerged/Removed signals. TelepathyQt4/channel.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 21b9a369d332d66aba31bf216648837fbd4d2890 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 12:36:08 2010 -0300 future conference channel: Moved private members initialization to constructed. Moved private members initialization to constructed in case they weren't already set. tests/lib/glib/future/conference/chan.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) commit 578810cb522b789c3413bc81eab76c8a2a82960d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 12:10:43 2010 -0300 future conference channel: Remove Splittable support. tests/lib/glib/future/conference/chan.c | 23 ----------------------- 1 file changed, 23 deletions(-) commit 7b39db8885f8cbc2f5bb9800a6576aebc99f6dbb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 11:53:06 2010 -0300 future conference channel: Added Conference immutable properties to D-Bus properties. tests/lib/glib/future/conference/chan.c | 6 ++++++ 1 file changed, 6 insertions(+) commit 9c3a7b2569610978311d984306dc4beb529608b6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 11:22:17 2010 -0300 channel: Added docs to conference methods. TelepathyQt4/channel.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) commit 000c11fa8b2ab58034e90fe308509b936a18bc59 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:21:39 2010 -0300 channel: Renamed ConferenceInitialContacts to ConferenceInitialInviteeContacts where appropriate. TelepathyQt4/channel.cpp | 21 +++++++++++---------- TelepathyQt4/channel.h | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) commit 9a68556c0bae90ef0bf2c41de5ec05c51701e63d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:16:17 2010 -0300 channel: Introspecting Conference initial invitee contacts is now a feature (FeatureConferenceInitialContacts). TelepathyQt4/channel.cpp | 64 ++++++++++++++++++++++++------------------------ TelepathyQt4/channel.h | 3 ++- 2 files changed, 34 insertions(+), 33 deletions(-) commit 60ae1b05cd720a9b52ff48dbb236f43b8702e837 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:00:19 2010 -0300 account: Added InitialInviteeHandles/IDs support to convenience API to create conference channels. TelepathyQt4/account.cpp | 141 ++++++++++++++++++++++++++++++++++++++++------- TelepathyQt4/account.h | 21 +++++++ 2 files changed, 141 insertions(+), 21 deletions(-) commit c0b0e57dd36d3a3f0137792f7b29edb5a68cd16a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 21:48:55 2010 -0300 chan-conference test: Added test cases for Conference support. tests/dbus/Makefile.am | 5 + tests/dbus/chan-conference.cpp | 221 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+) commit 5fa23c9e7e2ae7109b61e549e0cacfcbbe7a5a0a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 13:52:27 2010 -0300 Added glib conference channel example implementation. This implementation can be used by tests that want to test the conference support. configure.ac | 1 + tests/lib/glib/Makefile.am | 1 + tests/lib/glib/future/Makefile.am | 2 +- tests/lib/glib/future/conference/Makefile.am | 13 + tests/lib/glib/future/conference/chan.c | 631 +++++++++++++++++++++++++++ tests/lib/glib/future/conference/chan.h | 79 ++++ 6 files changed, 726 insertions(+), 1 deletion(-) commit 0c168331ce4898e7aed580d2dcab9dbc3be3ca86 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 13:51:58 2010 -0300 Generate glib service side code for Conference/MergeableConference/Splittable interfaces. tests/lib/glib/future/extensions/channel.xml | 4 ++++ 1 file changed, 4 insertions(+) commit da28649cbc0a925d20120153a5f44e0b3b3fe930 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 21:38:22 2010 -0300 channel: Fixed/Added debug. TelepathyQt4/channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit eaaa81331f84925e0fce5832b46626f3a9c2742a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 21:38:05 2010 -0300 channel: Initialize Private::conference member. TelepathyQt4/channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 974a259dada3663344fe54035f269603dfa9a035 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 13:50:39 2010 -0300 channel: Use full-qualified names for conference related signals. TelepathyQt4/channel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 8beefa69ca6cb0b851ea071c60bf252b91ecf77a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 2 10:49:37 2010 -0300 account: Added convenience API to create conference channels. TelepathyQt4/account.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 14 ++++++++++ 2 files changed, 83 insertions(+) commit ac0013af991b0eec4e712706572545aeb3d70ce2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 13:52:13 2010 -0300 channel: Renamed conferenceInitialContacts to conferenceInitialInviteeContacts. TelepathyQt4/channel.cpp | 2 +- TelepathyQt4/channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 8ab273eb05cfec92fc7f9a371cc24ad9477f0108 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 13:51:08 2010 -0300 channel: Implemented conferenceInitialContacts. TelepathyQt4/channel.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++-- TelepathyQt4/channel.h | 1 + 2 files changed, 49 insertions(+), 2 deletions(-) commit abc5eb19f9d766ae2bb17f18488ea5761c5dd12f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:48:12 2010 -0300 channel: Renamed hasConferenceMergeableInterface to hasMergeableConferenceInterface. Renamed hasConferenceMergeableInterface to hasMergeableConferenceInterface to follow the interface name. TelepathyQt4/channel.cpp | 4 ++-- TelepathyQt4/channel.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 21f68161dc479cfa16de3736d72993dcf0eaa65c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:43:33 2010 -0300 channel: Implemented splitChannel. TelepathyQt4/channel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 9325ccbb70e7fd4a5f89e3ef41925f34f4ac62e0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:43:14 2010 -0300 channel: Implemented conferenceMergeChannel. TelepathyQt4/channel.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 7fb32636b7c0e726cd0677b70f3cda9f4e299443 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:36:55 2010 -0300 channel: Splittable.Split does not receive any param, updating splitChannel method signature. TelepathyQt4/channel.cpp | 2 +- TelepathyQt4/channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 9723ea2187b9f69ce6350b9fb927f49b040af536 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:34:44 2010 -0300 channel: Implemented conferenceInitialChannels. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b9e072c421a36ea534a364fcbbc532e6dd4bcc4a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:34:26 2010 -0300 channel: Implemented conferenceChannels. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 30ac718f4e3c192f4fd0d37f1438849ff39be062 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:34:11 2010 -0300 channel: Implemented conferenceSupportsNonMerges. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b29172d38bb07af3ddccef99c2310afb876fc5ad Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:28:24 2010 -0300 channel: Implemented conference introspection (missing retrieving initial contacts). TelepathyQt4/channel.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/channel.h | 4 ++ 2 files changed, 110 insertions(+), 1 deletion(-) commit e9ec8607698e4c299ce7fca305a50107f605a387 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:31:56 2010 -0300 channel: Implemented hasSplittableInterface. TelepathyQt4/channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit bdc9849021b50cb3bcc9618158be92a05fe5b8f6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:31:39 2010 -0300 channel: Implemented hasConferenceMergeableInterface. TelepathyQt4/channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit be53eddac752c029483a450cbccceb571a689b05 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 1 12:31:24 2010 -0300 channel: Implemented hasConferenceInterface. TelepathyQt4/channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6ab006bc3e63e32b67c8b533425871f8fc6b18b2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:13:43 2010 -0300 Channel: Only set ready if Conference is not being introspected. TelepathyQt4/channel.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit dd036a0020d2d8142044016efa47632a83e911bb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:11:40 2010 -0300 Channel: Added stub Private::introspectConference method and add it to introspection queue if Conference is supported. TelepathyQt4/channel.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 35b467aab725eedad35b9a5349bc7990b81b290a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:09:52 2010 -0300 Channel: Added Private::splittableInterface method. This methods should be moved to Channel when Splittable gets undrafted. TelepathyQt4/channel.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit a678cd97ec58d7f9a7079ee0292cb3b3c1258847 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:08:26 2010 -0300 Channel: Added Private::mergeableConferenceInterface method. This methods should be moved to Channel when MergeableConference gets undrafted. TelepathyQt4/channel.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit e50856e449753c1697feb01c26db6a11949a2257 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:05:29 2010 -0300 Channel: Added Private::conferenceInterface method. This methods should be moved to Channel when Conference gets undrafted. TelepathyQt4/channel.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit f93b6d63fbd31c0470059c08078018cffaddb590 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 25 12:46:39 2010 -0300 Channel: Splittable is not an interface on the Conference interface. TelepathyQt4/channel.cpp | 4 ++-- TelepathyQt4/channel.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit f1e6698f69a6088d9cf5626205cb5e0c15d2c989 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 25 12:23:36 2010 -0300 Channel: Added stub Conference/Mergeable/Splittable support methods. TelepathyQt4/channel.cpp | 51 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel.h | 15 ++++++++++++ TelepathyQt4/future-channel.xml | 6 ++--- 3 files changed, 69 insertions(+), 3 deletions(-) commit 67ceb434e2d8117a15ae0bb8215d2e18e6bf7d4f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 06:45:11 2010 -0300 Generate service-side code for the future Conference/Splittable/Mergeable interfaces. TelepathyQt4/future-channel.xml | 7 +++++++ 1 file changed, 7 insertions(+) commit c57b9c314aca8657e6c71e9eccd9b06e1d69c383 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 8 14:52:05 2010 -0300 Proper create _gen dir before touch future-stamp. TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 374b174b0e5201819135d6a59e0d5f9596aed7b8 Merge: bc17df4 91928b8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 15:21:31 2010 -0300 Merge branch 'channel-racy' Reviewed-by: Will Thompson (wjt) commit 91928b86ddee2ae7e9de762316b1b436573a0fd3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 5 15:15:43 2010 -0300 channel: Fixed bug when channel was never getting ready. If buildContacts was called and there were no contacts to build, the buildingContacts member was never being updated, causing the channel to never become ready. TelepathyQt4/channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit bc17df40918d1a360787fd10db2c1e818ed272df Merge: 70773d0 6b4002a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:34:36 2010 -0300 Merge branch 'channel-refactoring' Reviewed-by: Simon McVittie (smcv) commit 70773d060f7c2e63d493ff5d099095d03c916142 Merge: 934525a 7a2cb26 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:34:29 2010 -0300 Merge branch 'future-support' Reviewed-by: Simon McVittie (smcv) commit 934525aa2aac1b04e33c2badeef06d05e07c4e3c Merge: 2a5cbaf 6c33cb6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:34:18 2010 -0300 Merge branch 'glib-tests-extensions' Reviewed-by: Simon McVittie (smcv) commit 2a5cbaf14c93060085b8b586ff922fc1a9ee0308 Merge: 33c15cb 18ed126 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:34:10 2010 -0300 Merge branch 'codegen-improvements' Reviewed-by: Simon McVittie (smcv) commit 33c15cb7d6cc2052be6c25212d02a7f8dca9b18d Merge: 259c175 eb7657a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:33:57 2010 -0300 Merge branch 'tests-dirs-reorganization' Reviewed-by: Simon McVittie (smcv) commit 259c175d9870bf777aca2b6f8ccf9d334dea01eb Merge: 6ce196d 8f1c98a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 3 15:33:30 2010 -0300 Merge branch 'spec-0.19.1' Reviewed-by: Simon McVittie (smcv) commit 6b4002aa1b9f348c3b13e0171da25762b71106c9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:02:28 2010 -0300 Channel: Moved continueIntrospection to Private::continueIntrospection. TelepathyQt4/channel.cpp | 56 +++++++++++++++++++++++++----------------------- TelepathyQt4/channel.h | 2 -- 2 files changed, 29 insertions(+), 29 deletions(-) commit 4e3268eb008ccfff72a91f36fde38dc7dd9bbc56 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 00:49:38 2010 -0300 Channel: Let's call setReady from only one place, so it's easier to track when the introspection finished. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7a2cb2678e6d128dcfde93e93206fdd553d325c7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 05:18:13 2010 -0300 spec: Add some missing types that trip up the Qt4 codegen. Needs to update spec to include this. Patch from Simon McVittie (smcv) spec/Call_Content_Interface_Media.xml | 2 +- spec/Channel_Type_Call.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 79a7512527ac92f0942339214c5a191a22fdfaf8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 05:10:21 2010 -0300 Added support for generating code for draft interfaces. The classes that want to implement draft interfaces should use future-* to do so and update future-*.xml accordingly. Patch from Simon McVittie (smcv) TelepathyQt4/Makefile.am | 77 +++++++++++++++++++++++++++++++++++++- TelepathyQt4/future-channel.xml | 7 ++++ TelepathyQt4/future-interfaces.xml | 13 +++++++ TelepathyQt4/future-internal.h | 33 ++++++++++++++++ TelepathyQt4/future-misc.xml | 7 ++++ TelepathyQt4/future.cpp | 28 ++++++++++++++ TelepathyQt4/types.cpp | 18 +++++++++ TelepathyQt4/types.h | 2 + tests/lib/glib/Makefile.am | 3 +- tools/qt4-types-gen.py | 26 ++++--------- 10 files changed, 193 insertions(+), 21 deletions(-) commit 6c33cb6a63f2a5115c28f6c1e1e94efee966b06c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 03:26:43 2010 -0300 Added glib tests future extensions library. The library is intended to be used by regression tests wanting to test new features not included in telepathy-glib upstream. Patch from Simon McVittie (smcv) configure.ac | 6 ++ tests/lib/glib/Makefile.am | 5 +- tests/lib/glib/future/Makefile.am | 1 + tests/lib/glib/future/extensions/Makefile.am | 104 ++++++++++++++++++++++++++ tests/lib/glib/future/extensions/all.xml | 11 +++ tests/lib/glib/future/extensions/channel.xml | 7 ++ tests/lib/glib/future/extensions/extensions.c | 6 ++ tests/lib/glib/future/extensions/extensions.h | 18 +++++ tests/lib/glib/future/extensions/misc.xml | 7 ++ 9 files changed, 163 insertions(+), 2 deletions(-) commit 8829d7208422a423e77fef6290592da95c774ff5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 03:22:50 2010 -0300 Added glib gen tools so we can generate code for glib regression tests extensions. Patch from Simon McVittie (smcv) tools/Makefile.am | 27 ++ tools/c-constants-gen.py | 154 ++++++++ tools/glib-ginterface-gen.py | 802 ++++++++++++++++++++++++++++++++++++++ tools/glib-gtypes-generator.py | 291 ++++++++++++++ tools/glib-interfaces-gen.py | 119 ++++++ tools/glib-signals-marshal-gen.py | 55 +++ tools/libglibcodegen.py | 172 ++++++++ 7 files changed, 1620 insertions(+) commit 18ed126f1098462fcd21d20a0898ba099e178fb5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 03:51:06 2010 -0300 libtpcodegen.py: Added get_deprecated method. Patch from Simon McVittie (smcv) tools/libtpcodegen.py | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 9fedfea1504432b6fe0ca3796fb4a2429e2730d9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 03:50:44 2010 -0300 libtpcodegen.py: Removed unused methods. Patch from Simon McVittie (smcv) tools/libtpcodegen.py | 26 -------------------------- 1 file changed, 26 deletions(-) commit eb7657a7119609ef7b65d1648ebaf42dde959265 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 04:34:22 2010 -0300 Fix distcheck. tests/lib/glib/csh/Makefile.am | 1 + tests/lib/glib/echo2/Makefile.am | 1 + 2 files changed, 2 insertions(+) commit 3f22f562ef51b0cf9682f193e1eb522138460f3d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 02:29:56 2010 -0300 Reorganize tests library directory structure. Put all glib test example cms into tests/lib/glib and the python example account-manager.py into tests/lib/python. Also makes all tests that depends on glib link against libtp-glib-tests.la instead of linking to individual example cms. configure.ac | 12 +- tests/dbus-1/services/account-manager.service.in | 2 +- tests/dbus/Makefile.am | 35 +- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/chan-group.cpp | 2 +- tests/dbus/client.cpp | 4 +- tests/dbus/cm-basics.cpp | 2 +- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-capabilities.cpp | 2 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/conn-roster-groups.cpp | 2 +- tests/dbus/conn-roster.cpp | 2 +- tests/dbus/contacts-capabilities.cpp | 2 +- tests/dbus/contacts.cpp | 4 +- tests/dbus/handles.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- tests/dbus/text-chan.cpp | 6 +- tests/lib/Makefile.am | 48 +- tests/lib/account-manager.py | 322 ----- tests/lib/callable/Makefile.am | 48 - tests/lib/callable/conn.c | 423 ------ tests/lib/callable/conn.h | 78 - tests/lib/callable/connection-manager.c | 130 -- tests/lib/callable/connection-manager.h | 73 - tests/lib/callable/manager-file.py | 23 - tests/lib/callable/media-channel.c | 1460 ------------------- tests/lib/callable/media-channel.h | 74 - tests/lib/callable/media-manager.c | 500 ------- tests/lib/callable/media-manager.h | 71 - tests/lib/callable/media-stream.c | 650 --------- tests/lib/callable/media-stream.h | 88 -- tests/lib/contactlist/Makefile.am | 38 - tests/lib/contactlist/conn.c | 590 -------- tests/lib/contactlist/conn.h | 65 - tests/lib/contactlist/connection-manager.c | 116 -- tests/lib/contactlist/connection-manager.h | 62 - tests/lib/contactlist/contact-list-manager.c | 1580 --------------------- tests/lib/contactlist/contact-list-manager.h | 107 -- tests/lib/contactlist/contact-list.c | 635 --------- tests/lib/contactlist/contact-list.h | 118 -- tests/lib/contactlist/manager-file.py | 19 - tests/lib/contacts-conn.c | 769 ---------- tests/lib/contacts-conn.h | 122 -- tests/lib/csh/Makefile.am | 25 - tests/lib/csh/conn.c | 340 ----- tests/lib/csh/conn.h | 66 - tests/lib/csh/room-manager.c | 431 ------ tests/lib/csh/room-manager.h | 62 - tests/lib/csh/room.c | 854 ----------- tests/lib/csh/room.h | 97 -- tests/lib/debug.h | 3 - tests/lib/echo/Makefile.am | 25 - tests/lib/echo/chan.c | 531 ------- tests/lib/echo/chan.h | 58 - tests/lib/echo/conn.c | 194 --- tests/lib/echo/conn.h | 55 - tests/lib/echo/connection-manager.c | 95 -- tests/lib/echo/connection-manager.h | 53 - tests/lib/echo/im-manager.c | 389 ----- tests/lib/echo/im-manager.h | 54 - tests/lib/echo2/Makefile.am | 25 - tests/lib/echo2/chan.c | 589 -------- tests/lib/echo2/chan.h | 58 - tests/lib/echo2/conn.c | 198 --- tests/lib/echo2/conn.h | 55 - tests/lib/echo2/im-manager.c | 389 ----- tests/lib/echo2/im-manager.h | 54 - tests/lib/glib/Makefile.am | 38 + tests/lib/glib/callable/Makefile.am | 48 + tests/lib/glib/callable/conn.c | 423 ++++++ tests/lib/glib/callable/conn.h | 78 + tests/lib/glib/callable/connection-manager.c | 130 ++ tests/lib/glib/callable/connection-manager.h | 73 + tests/lib/glib/callable/manager-file.py | 23 + tests/lib/glib/callable/media-channel.c | 1460 +++++++++++++++++++ tests/lib/glib/callable/media-channel.h | 74 + tests/lib/glib/callable/media-manager.c | 500 +++++++ tests/lib/glib/callable/media-manager.h | 71 + tests/lib/glib/callable/media-stream.c | 650 +++++++++ tests/lib/glib/callable/media-stream.h | 88 ++ tests/lib/glib/contactlist/Makefile.am | 38 + tests/lib/glib/contactlist/conn.c | 590 ++++++++ tests/lib/glib/contactlist/conn.h | 65 + tests/lib/glib/contactlist/connection-manager.c | 116 ++ tests/lib/glib/contactlist/connection-manager.h | 62 + tests/lib/glib/contactlist/contact-list-manager.c | 1580 +++++++++++++++++++++ tests/lib/glib/contactlist/contact-list-manager.h | 107 ++ tests/lib/glib/contactlist/contact-list.c | 635 +++++++++ tests/lib/glib/contactlist/contact-list.h | 118 ++ tests/lib/glib/contactlist/manager-file.py | 19 + tests/lib/glib/contacts-conn.c | 769 ++++++++++ tests/lib/glib/contacts-conn.h | 122 ++ tests/lib/glib/csh/Makefile.am | 23 + tests/lib/glib/csh/conn.c | 340 +++++ tests/lib/glib/csh/conn.h | 66 + tests/lib/glib/csh/room-manager.c | 431 ++++++ tests/lib/glib/csh/room-manager.h | 62 + tests/lib/glib/csh/room.c | 854 +++++++++++ tests/lib/glib/csh/room.h | 97 ++ tests/lib/glib/debug.h | 3 + tests/lib/glib/echo/Makefile.am | 25 + tests/lib/glib/echo/chan.c | 531 +++++++ tests/lib/glib/echo/chan.h | 58 + tests/lib/glib/echo/conn.c | 194 +++ tests/lib/glib/echo/conn.h | 55 + tests/lib/glib/echo/connection-manager.c | 95 ++ tests/lib/glib/echo/connection-manager.h | 53 + tests/lib/glib/echo/im-manager.c | 389 +++++ tests/lib/glib/echo/im-manager.h | 54 + tests/lib/glib/echo2/Makefile.am | 23 + tests/lib/glib/echo2/chan.c | 589 ++++++++ tests/lib/glib/echo2/chan.h | 58 + tests/lib/glib/echo2/conn.c | 198 +++ tests/lib/glib/echo2/conn.h | 55 + tests/lib/glib/echo2/im-manager.c | 389 +++++ tests/lib/glib/echo2/im-manager.h | 54 + tests/lib/glib/simple-conn.c | 226 +++ tests/lib/glib/simple-conn.h | 59 + tests/lib/glib/simple-manager.c | 95 ++ tests/lib/glib/simple-manager.h | 55 + tests/lib/python/Makefile.am | 2 + tests/lib/python/account-manager.py | 322 +++++ tests/lib/simple-conn.c | 226 --- tests/lib/simple-conn.h | 59 - tests/lib/simple-manager.c | 95 -- tests/lib/simple-manager.h | 55 - 126 files changed, 13387 insertions(+), 13374 deletions(-) commit 8f1c98a9df5a6cf934c524250e40e07c392d51a2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 26 01:43:38 2010 -0300 Update to spec 0.19.1 Updated to spec 0.19.1 and include missing interfaces. Let's keep the spec dir in sync with telepathy-spec, so it's easier to keep track os spec changes. Also removed deprecated Channel_Interface_Call_Merging.xml. spec/Account_Manager.xml | 12 +- spec/Call_Content.xml | 141 ++++ spec/Call_Content_Codec_Offer.xml | 57 ++ spec/Call_Content_Interface_Media.xml | 229 +++++ spec/Call_Stream.xml | 167 ++++ spec/Call_Stream_Endpoint.xml | 95 +++ spec/Call_Stream_Interface_Media.xml | 402 +++++++++ spec/Channel_Dispatcher.xml | 17 +- spec/Channel_Interface_Call_Merging.xml | 80 -- spec/Channel_Interface_Chat_State.xml | 3 +- spec/Channel_Interface_Conference.xml | 400 +++++++++ spec/Channel_Interface_Mergeable_Conference.xml | 110 +++ spec/Channel_Interface_Password.xml | 4 +- spec/Channel_Interface_Splittable.xml | 74 ++ spec/Channel_Type_Call.xml | 931 +++++++++++++++++++++ spec/Channel_Type_Streamed_Media.xml | 12 +- spec/Client_Handler_Future.xml | 65 ++ spec/Client_Observer.xml | 4 +- spec/Connection.xml | 18 +- spec/Connection_Future.xml | 110 +++ spec/Connection_Interface_Balance.xml | 105 +++ spec/Connection_Interface_Contact_Capabilities.xml | 60 +- spec/Connection_Interface_Mail_Notification.xml | 653 +++++++++++++++ spec/Connection_Manager.xml | 24 +- spec/all.xml | 20 +- 25 files changed, 3687 insertions(+), 106 deletions(-) commit 6ce196dc222a97e08aefe29e02db0944be4b6b8a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 13:45:33 2010 -0300 Nano version (might lead to 0.2.3 or 0.3.0) NEWS | 6 ++++++ configure.ac | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) commit 54b0341f4874aff3d5d1a18606cd87d792426960 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 12:19:37 2010 -0300 Prepare release 0.2.2 NEWS | 12 ++++++++++-- configure.ac | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) commit 724b11d1ee68b327bc0c44bfa92bed9a6866871e Merge: c81b938 85b3387 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 11:32:02 2010 -0300 Merge branch 'handler_caps_test' Reviewed-by: Simon McVittie (smcv) commit 85b3387abdce6a746322e684293f8918c3b25e42 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 11:29:30 2010 -0300 client test: Added Handler.Capabilities test. tests/dbus/client.cpp | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) commit c81b9386fbf2d4c355bc310cc1c6f4d254093367 Merge: 79a0eba 6a93bac Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 11:02:04 2010 -0300 Merge branch 'delayed_client_response' Reviewed-by: Simon McVittie (smcv) commit 79a0eba8812875945a5e40af9bd3e1765d56372e Merge: f810336 0df0872 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 11:01:41 2010 -0300 Merge branch 'handler_caps' Reviewed-by: Simon McVittie (smcv) commit 6a93bacdcebbeed35f51d8663284aec1ca2be03b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 10:54:52 2010 -0300 MethodInvocationContext: Allow delayed replies. TelepathyQt4/method-invocation-context.h | 1 + 1 file changed, 1 insertion(+) commit 0df0872eaf0fa56fc7344098cc33ca82e2224459 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 22 10:52:06 2010 -0300 AbstractClientHandler: Added Handler.Capabilities property support. TelepathyQt4/abstract-client.cpp | 17 +++++++++++++++++ TelepathyQt4/abstract-client.h | 6 ++++++ TelepathyQt4/client-registrar-internal.h | 7 +++++++ 3 files changed, 30 insertions(+) commit f8103366540732de2362dbed1b7327300c0c8088 Author: Will Thompson Date: Wed Jan 13 13:56:08 2010 +0000 Fix compilation with Automake <= 1.11 TPQT4_V_MOC_ was defined in terms of $(AM_DEFAULT_VERBOSITY) which is of course not defined with older automakes, so expanded to nothing, so TPQT4_V_MOC_ was defined to be … itself. This patch effectively defaults $(AM_DEFAULT_VERBOSITY) to 0 in older Automakes. I tried to make all the definitions conditional on $(AM_DEFAULT_VERBOSITY) being defined, but failed because this Makefile is included by .am files, so Automake sees the 'ifdef' / 'endif' pair, doesn't recognise 'ifdef' but does recognise 'endif' so gets upset. Reviewed-by: André Moreira Magalhães tools/telepathy-qt4.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c396589f14f7dbe880195a9638bd14c3a8cb8804 Author: Simon McVittie Date: Tue Jan 12 13:30:13 2010 +0000 fd.o#26002: only build tests if we have telepathy-glib >= 0.8.0 Strictly speaking, 0.7.37 should be sufficient for ContactCapabilities, but 0.8.x is a stable branch. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 491951f39afcf20ee1a199d3cb6c15e95be3187e Author: Simon McVittie Date: Fri Dec 4 17:15:30 2009 +0000 Nano version (might lead to 0.2.2 or 0.3.0) NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 42a71efa0b0528a135fdee8a1d7abb4d335df906 Author: Simon McVittie Date: Fri Dec 4 16:03:33 2009 +0000 Prepare version 0.2.1 NEWS | 30 +++++++++++++++++++++++++++++- configure.ac | 8 ++++---- 2 files changed, 33 insertions(+), 5 deletions(-) commit ac63e5cb22d876e4ebbcd58c5e228f5849e99673 Author: Simon McVittie Date: Fri Dec 4 15:51:16 2009 +0000 telepathy-qt4-farsight: compile with -fvisibility=hidden, and warnings In practice, there's only one symbol, and we export it :-) Still, it's good to be consistent about these things. TelepathyQt4/Farsight/Makefile.am | 4 ++++ 1 file changed, 4 insertions(+) commit f7ec4302647082df09fb0eb7c1d74e57b98cc5e7 Author: Simon McVittie Date: Fri Dec 4 15:50:04 2009 +0000 Farsight binding: introduce TELEPATHY_QT4_FS_EXPORT, TELEPATHY_QT4_FS_NO_EXPORT macros Because Windows distinguishes between Q_DECL_EXPORT and Q_DECL_IMPORT, we need one macro like this per shared library - telepathy-qt4-farsight needs to export its own symbols with Q_DECL_EXPORT, while importing telepathy-qt4's symbols with Q_DECL_IMPORT. TelepathyQt4/Farsight/Makefile.am | 4 +++- TelepathyQt4/Farsight/channel.h | 4 +++- TelepathyQt4/Farsight/global.h | 45 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) commit 0de4c7c92abe4b451b5c65b9b23bbc8d6fb68b98 Author: Simon McVittie Date: Fri Dec 4 15:39:53 2009 +0000 Use -fvisibility=hidden for telepathy-qt4 main library No public symbols disappear as a result; the following command (which assumes a 32-bit platform, but is easy to adapt) gives identical output before and after. nm libtelepathy-qt4.so | c++filt | sort -k3| sed -e 's/^........ //' TelepathyQt4/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 420b928a675044ea4c38a8a586c33d51b481d367 Author: Simon McVittie Date: Fri Dec 4 15:36:17 2009 +0000 Add an autoconf macro to detect gcc's -fvisibility=hidden option configure.ac | 1 + m4/Makefile.am | 1 + m4/tp-visibility-hidden.m4 | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) commit 5c9170aa5e06ec0294e0b50ffc28ca22f2166905 Author: Simon McVittie Date: Fri Dec 4 15:34:48 2009 +0000 Export enabledDebug(), enabledWarning() even in non-debug builds The debug(), warning() inlines mean they won't actually be invoked, so it doesn't matter if there's some trivial cost in terms of function calls. TelepathyQt4/debug-internal.h | 9 ++++++--- TelepathyQt4/debug.cpp | 20 +++++++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) commit 5627da9918f7c23301d9b3487c4e8b1d0a4bb0df Author: Simon McVittie Date: Fri Dec 4 15:30:51 2009 +0000 Give generated types' operators the same visibility as the type tools/qt4-types-gen.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit a16f9086ddd6f1bb7bbf4b5728918407ee247d4f Author: Simon McVittie Date: Fri Dec 4 15:16:00 2009 +0000 Explicitly export ConnectionCapabilities, ContactCapabilities TelepathyQt4/connection-capabilities.h | 2 +- TelepathyQt4/contact-capabilities.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 5966bdea999bbd737dd3ef5edeef6a5aca6d3e9e Author: Simon McVittie Date: Fri Dec 4 14:08:34 2009 +0000 .gitignore: ignore session.conf .gitignore | 1 + 1 file changed, 1 insertion(+) commit 96a20b678da37d1b76da981d814ecb5612523951 Merge: 5893357 a1a8fec Author: Simon McVittie Date: Fri Dec 4 12:23:05 2009 +0000 Merge branch 'buildsys' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit a1a8fec02587a3ee612094448591af785427de38 Author: Simon McVittie Date: Thu Dec 3 17:42:01 2009 +0000 qt4-client-gen: allow visibility of generated classes to be controlled TelepathyQt4/Makefile.am | 1 + tools/qt4-client-gen.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) commit 32d2038a9c97c5ecef7bc8896be478018fee4aed Author: Simon McVittie Date: Thu Dec 3 18:05:47 2009 +0000 qt4-types-gen.py: make it possible to change the types' symbol visibility TelepathyQt4/Makefile.am | 1 + tools/qt4-types-gen.py | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) commit da32026168e99a18605bef5021b17215a3b6d181 Author: Simon McVittie Date: Thu Dec 3 17:58:51 2009 +0000 qt4-constants-gen.py: cope with Unicode in the spec tools/qt4-constants-gen.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) commit 3641232f2cc981a5811e6915cfed83245c04d207 Author: Simon McVittie Date: Thu Dec 3 21:01:39 2009 +0000 Avoid the real AccountManager being service-activated during distcheck tests/Makefile.am | 9 ++++++++- tests/dbus-1/session.conf.in | 30 ++++++++++++++++++++++++++++++ tests/dbus/Makefile.am | 3 ++- 3 files changed, 40 insertions(+), 2 deletions(-) commit 5893357d19394a9d7967134a6a4d4c5db3f6870a Author: Will Thompson Date: Wed Dec 2 18:10:30 2009 +0000 Enable Automake 1.11 silent building This includes an extra macro to silence moc invocations, in tools/telepathy-qt4.mk Reviewed-by: Simon McVittie TelepathyQt4/Makefile.am | 22 ++++++++++++---------- autogen.sh | 13 +++++++------ configure.ac | 2 ++ examples/accounts/Makefile.am | 6 ++++-- examples/call/Makefile.am | 6 ++++-- examples/extensions/Makefile.am | 21 +++++++++++++-------- examples/file-transfer/Makefile.am | 6 ++++-- examples/roster/Makefile.am | 6 ++++-- tests/Makefile.am | 6 ++++-- tests/dbus/Makefile.am | 6 ++++-- tests/lib/Makefile.am | 6 ++++-- tests/lib/callable/Makefile.am | 4 ++-- tests/lib/contactlist/Makefile.am | 4 ++-- tools/telepathy-qt4.mk | 4 ++++ 14 files changed, 70 insertions(+), 42 deletions(-) commit d1d4963951e46bc3c6ac50970d94734f71c4b4e8 Author: Will Thompson Date: Wed Dec 2 17:18:46 2009 +0000 Remove debugging output from qt4-types-gen Reviewed-by: Simon McVittie tools/qt4-types-gen.py | 2 -- 1 file changed, 2 deletions(-) commit 5c7100108507924532a547e6cd3002918189173e Merge: 99a5d93 e935e4b Author: Will Thompson Date: Wed Dec 2 17:16:47 2009 +0000 Merge branch 'cope-with-utf8-spec' Reviewed-by: Simon McVittie commit e935e4bb156bf88f0d4655cdc7e1a22cb2390ff8 Author: Will Thompson Date: Mon Nov 30 12:52:18 2009 +0000 Cope with UTF-8 in spec XML tools/qt4-types-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e74787bdafeb810060b4023ca8c974a99adde3ca Author: Will Thompson Date: Mon Nov 30 12:49:25 2009 +0000 Ignore tag files .gitignore | 3 +++ 1 file changed, 3 insertions(+) commit 99a5d9311edfbb473d7ec7ea48a1d1dece159f3f Author: Simon McVittie Date: Fri Nov 13 17:26:16 2009 +0000 update NEWS NEWS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 40f0cf11bda9044d5e5ddab9bde8ec702c41419b Author: Simon McVittie Date: Thu Nov 12 18:53:17 2009 +0000 Move workaround for missing QVariant::operator== from types.h to .cpp Because a public header can't #include config.h, HAVE_QDBUSVARIANT_OPERATOR_EQUAL was never defined in types.h even if the user's Qt version has QVariant::operator==, so we produced a duplicate definition in any such Qt version. To avoid causing this conflict, limit the scope of our workaround to types.cpp, which means tp-qt4 itself can compile, without polluting our public headers. Some tp-qt4 users might have to apply the same workaround themselves. Reviewed-by: Andre Moreira Magalhaes TelepathyQt4/types.cpp | 13 +++++++++++++ TelepathyQt4/types.h | 12 ------------ 2 files changed, 13 insertions(+), 12 deletions(-) commit ab6115b8ed68400fda8233bf5dadcb3e6bec601c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 12:05:00 2009 -0300 Start 0.3.0 development NEWS | 5 +++++ configure.ac | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) commit d9498140bf94403c0f9a2951641ad1a4a4815fa3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 10:53:16 2009 -0300 Prepare release 0.2.0 NEWS | 15 +++++++++++++-- configure.ac | 6 +++--- 2 files changed, 16 insertions(+), 5 deletions(-) commit c0efbab13333371e703e312e8d3cb370390187c2 Merge: f07642b b19ea41 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 10:17:48 2009 -0300 Merge branch 'shared' Reviewed-by: Simon McVittie (smcv) commit f07642b676c39ffbb584da34acacdacdbf0dfc69 Merge: 0b42512 33c459b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 10:17:37 2009 -0300 Merge branch 'connection' Reviewed-by: Simon McVittie (smcv) commit 0b425125372ededf6eb34bdeed7995694a2b27db Merge: 8110b1c fc6b19c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 10:17:26 2009 -0300 Merge branch 'bug24422' Reviewed-by: Simon McVittie (smcv) commit 8110b1c522653cad8e5e7dfccca04237ff7a7398 Merge: c0ef389 17be4a1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 10:16:44 2009 -0300 Merge branch 'bug23370' Reviewed-by: Simon McVittie (smcv) commit 33c459b8726f640e4830887f108b878f1c1cdee5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 9 18:23:50 2009 -0300 Connection: Changed status/statusReason/statusChanged to use enums Tp::Connection::Status and ConnectionStatusReason. TelepathyQt4/connection.cpp | 15 ++++++++------- TelepathyQt4/connection.h | 7 ++++--- tests/dbus/chan-basics.cpp | 15 ++++++++------- tests/dbus/chan-group.cpp | 15 ++++++++------- tests/dbus/conn-basics.cpp | 15 ++++++++------- tests/dbus/conn-capabilities.cpp | 2 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/conn-roster-groups.cpp | 3 +-- tests/dbus/conn-roster.cpp | 2 +- tests/dbus/contacts-capabilities.cpp | 2 +- tests/dbus/contacts.cpp | 15 ++++++++------- tests/dbus/handles.cpp | 15 ++++++++------- 12 files changed, 57 insertions(+), 51 deletions(-) commit ae6e39567b61f8599343fa85b15fdfd9f7408946 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 9 17:57:37 2009 -0300 Connection: Renamed getContactAttributes method to contactAttributes. TelepathyQt4/connection.cpp | 8 ++++---- TelepathyQt4/connection.h | 2 +- TelepathyQt4/pending-contact-attributes.cpp | 4 ++-- TelepathyQt4/pending-contacts.cpp | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) commit b19ea413db4dbda455012132d805d16cb2b217b4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 09:52:18 2009 -0300 Build shared libraries. TelepathyQt4/Farsight/Makefile.am | 2 +- TelepathyQt4/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 17be4a12eab00bd1b84c9e5bb3a7c642e1fdfb26 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 09:37:46 2009 -0300 Connection: Bind to ConnectionError signal. TelepathyQt4/connection.cpp | 10 ++++++++++ TelepathyQt4/connection.h | 1 + 2 files changed, 11 insertions(+) commit 2ae16416edd817e886074d9ba6683eb24dd8f0a2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 10 09:32:28 2009 -0300 Connection: Better map status change reason to D-Bus errors. TelepathyQt4/connection.cpp | 49 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) commit fc6b19ceae992b5b9fdd362c9dc195e1627d99bf Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 9 18:28:43 2009 -0300 Account: Use TELEPATHY_QT4_ERROR_OBJECT_REMOVED as error code for invalidation when the account is removed. TelepathyQt4/account.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit c0ef389ead8a5fa5f02b4f8b1cc71727b3779468 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 5 14:03:03 2009 -0300 Start 0.2.0 development NEWS | 6 ++++++ configure.ac | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) commit 55e8d969dacfbfd83b0d6dea9cbd4a477da8daec Author: Andre Moreira Magalhaes (andrunko) Date: Thu Nov 5 13:44:01 2009 -0300 Prepare release 0.1.12. NEWS | 17 +++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 17 insertions(+), 4 deletions(-) commit 61bf6db9f77accf63a57e4499c8a461dd8f0697d Merge: 78d434e ff6897b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 3 15:36:07 2009 -0300 Merge branch 'text-chan-chat-state' Reviewed-by: Simon McVittie (smcv) commit ff6897b383d26ca4afbec2107739fd8de17a1c08 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 3 15:35:35 2009 -0300 TextChannel: Updated FIXME. TelepathyQt4/text-channel.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 90542403baf7bcd075720c699463245d817425c1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 3 15:35:23 2009 -0300 TextChannel: Fixed doc for chatState. TelepathyQt4/text-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ec17b39662e19e18415f744d0abf55b054186862 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 3 15:27:32 2009 -0300 TextChannel: Improved docs for chat state methods. TelepathyQt4/text-channel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 99c518cfe4facf7e1633f952afa079af4d3c16c4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 3 15:25:56 2009 -0300 TextChannel: Renamed setChatState to requestChatState. TelepathyQt4/text-channel.cpp | 4 ++-- TelepathyQt4/text-channel.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 1bd203a56aa2818ed1f1e8e0856a94d682dcfa2c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Nov 3 15:24:09 2009 -0300 TextChannel: Added chatState method for retrieving contacts current chat state. TelepathyQt4/text-channel.cpp | 31 +++++++++++++++++++++++++++++++ TelepathyQt4/text-channel.h | 3 +++ 2 files changed, 34 insertions(+) commit 9682075ff17844f40786ae625bc9cced134c1a72 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 14:32:39 2009 -0300 TextChannel: Improved docs for setChatState. TelepathyQt4/text-channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 6f3fad8a3e143ca205d4e77070d397249f8e98b5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 14:32:21 2009 -0300 TextChannel: Added hasChatStateInterface method. TelepathyQt4/text-channel.cpp | 16 ++++++++++++++++ TelepathyQt4/text-channel.h | 1 + 2 files changed, 17 insertions(+) commit f4bd81c3d7e647c185d3c3894451ba4da8f88108 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 14:26:12 2009 -0300 TextChannel: Make sure contactsForHandles is not called when not needed. TelepathyQt4/text-channel.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 26eeb42c1eeb68dd3f5042ee7444d28cf95839a3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 13:01:04 2009 -0300 TextChannel: Reorder Private::awaitingContacts declaration as it is not specific to FeatureMessageQueue anymore. TelepathyQt4/text-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ba8516cdfa7cd810fcaccc43a677ae5ec90ac445 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:55:28 2009 -0300 TextChannel: Added support for setting local chat state. TelepathyQt4/text-channel.cpp | 21 +++++++++++++++++++++ TelepathyQt4/text-channel.h | 2 ++ 2 files changed, 23 insertions(+) commit 848bacd6cde66c6fd5b72765f0ddbf1737c22f0d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:55:04 2009 -0300 TextChannel: Added support for receiving chat state notifications. TelepathyQt4/text-channel.cpp | 123 +++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/text-channel.h | 7 +++ 2 files changed, 129 insertions(+), 1 deletion(-) commit 2aa0e45f52b6658dfffdc240e136a765ec08ab9c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:50:30 2009 -0300 TextChannel: Make sure we won't leak if the channel is deleted and the message queue is not empty. TelepathyQt4/text-channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit de3b69ab9539824ab131e583c2ffa7adb365d3de Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:15:48 2009 -0300 TextChannel: Renamed Private::QueuedEvent to Private::MessageEvent as the queue is specific to messages. TelepathyQt4/text-channel.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) commit e81022ff5144f3648dcd58390a137851fca28218 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:09:39 2009 -0300 TextChannel: Reorder private methods implementation to fit declaration. TelepathyQt4/text-channel.cpp | 192 +++++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 96 deletions(-) commit ba6454e7ac177c9db845fe0e523dcb6055b61fc8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:07:21 2009 -0300 TextChannel: Reorder contactLost/contactFound methods declaration with other Private methods. TelepathyQt4/text-channel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit fe44f3e52fe80dc9de5c3f834fb9aab68144575a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:06:12 2009 -0300 TextChannel: Renamed Private::processQueue to Private::processMessageQueue. TelepathyQt4/text-channel.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 1d0d3d8c5daff73762cd2af723b3d401c0dd4463 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 12:03:53 2009 -0300 TextChannel: Moved processQueue to Private::processQueue. TelepathyQt4/text-channel.cpp | 46 ++++++++++++++++++++++--------------------- TelepathyQt4/text-channel.h | 2 -- 2 files changed, 24 insertions(+), 24 deletions(-) commit 78d434e63c18cbb00a35c009615a853b6e6ffb72 Merge: de3a007 9d345fc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 13:06:55 2009 -0300 Merge branch 'text-chan-delivery-reports' Reviewed-by: Simon McVittie (smcv) commit 9d345fce7d52574119dab9d63bf6c16b74475d56 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Nov 2 10:58:59 2009 -0300 TextChannel: Added flags param to send method, enabling support for delivery reports. TelepathyQt4/text-channel.cpp | 11 +++++++---- TelepathyQt4/text-channel.h | 6 ++++-- 2 files changed, 11 insertions(+), 6 deletions(-) commit de3a0076e956e7f18fc29d802b7f0ff8af34767e Merge: a870e58 1ef887d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Oct 30 08:49:56 2009 -0300 Merge branch 'pkgconfig' Reviewed-by: Simon McVittie (smcv) commit 1ef887d38b357aee32dd15eab6edd2281c7041f9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Oct 28 09:49:27 2009 -0300 pkgconfig: Added missing QtNetwork dependency. TelepathyQt4/TelepathyQt4-uninstalled.pc.in | 2 +- TelepathyQt4/TelepathyQt4.pc.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit a870e5861c136cbec70eeead1b2e418212ef394d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 12 15:30:57 2009 -0300 Start 0.2.0 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 6ba55f37987dda757b86741f246ad204973e85e6 Merge: 9317d73 c466181 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 12 15:18:16 2009 -0300 Merge branch '0.1.11' commit 9317d737b88128be4b0e805f9f1774aed0f0999a Merge: 5fb5fde ca0e0cf Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 12 15:18:03 2009 -0300 Merge branch 'pinocchio-no-more' Reviewed-by: Simon McVittie (smcv) commit 5fb5fdef828667c261f237356b57827656526d11 Merge: bc2a0b8 e3b986a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 12 15:17:33 2009 -0300 Merge branch 'check' Reviewed-by: Simon McVittie (smcv) commit c4661818aa5fda067342a986923e7b28efd119cd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 8 01:23:13 2009 -0300 Prepare release 0.1.11 NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 46 insertions(+), 4 deletions(-) commit ca0e0cf686cc70f7350ce5ef1ec7906ef64066d3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 8 19:36:20 2009 -0300 Removed pinocchio tests. Reasons: 1 - telepathy-pinocchio does not even work with latest telepathy-python 2 - All tests covered by test/pinocchio are already covered by tests in tests/dbus README | 1 - TelepathyQt4/main.dox | 2 - configure.ac | 7 - tests/Makefile.am | 3 +- tests/README | 3 - tests/pinocchio/Makefile.am | 73 ------- tests/pinocchio/accounts/empty/contacts.xml | 2 - tests/pinocchio/cm-basics.cpp | 145 ------------- tests/pinocchio/conn-basics.cpp | 310 -------------------------- tests/pinocchio/do-nothing.cpp | 63 ------ tests/pinocchio/handles.cpp | 325 ---------------------------- tests/pinocchio/lib.cpp | 123 ----------- tests/pinocchio/lib.h | 48 ---- 13 files changed, 1 insertion(+), 1104 deletions(-) commit e3b986acc36c29de7f59306c61e90874867d2520 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 8 15:10:24 2009 -0300 Connection: Create an empty ConnectionCapabilities object if Requests interface is not supported. TelepathyQt4/connection.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 92e59c3013f8409f18ce4930362d2e82cc01ea08 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 8 13:42:26 2009 -0300 conn-capabilities test: Fixed test to work now that capabilities support is part of Connection FeatureCore. tests/dbus/conn-capabilities.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) commit bc2a0b86eeb268da6a92a79be37b53d161a09751 Merge: ffbad9a 85e7aab Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 17:46:25 2009 -0300 Merge branch 'visibility' Reviewed-by: Simon McVittie (smcv) commit 85e7aab13a2445a251dec6ee577572bb2aa74588 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 17:17:24 2009 -0300 Update to latest changes. TelepathyQt4/capabilities-base.cpp | 2 +- TelepathyQt4/capabilities-base.h | 2 +- TelepathyQt4/file-transfer-channel-creation-properties.cpp | 4 +++- TelepathyQt4/file-transfer-channel-creation-properties.h | 3 ++- TelepathyQt4/incoming-file-transfer-channel.cpp | 2 +- TelepathyQt4/incoming-file-transfer-channel.h | 2 +- TelepathyQt4/outgoing-file-transfer-channel.cpp | 2 +- TelepathyQt4/outgoing-file-transfer-channel.h | 2 +- TelepathyQt4/pending-variant.cpp | 4 +++- TelepathyQt4/pending-variant.h | 3 ++- 10 files changed, 16 insertions(+), 10 deletions(-) commit a5f54e847ee376eabcbeaa2f019e708e459cdfae Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 18 19:52:52 2009 -0300 Explicitly remove private methods/structs from shared library ABI. TelepathyQt4/abstract-client.cpp | 6 +++--- TelepathyQt4/abstract-interface.cpp | 2 +- TelepathyQt4/account-manager.cpp | 2 +- TelepathyQt4/account.cpp | 2 +- TelepathyQt4/channel-dispatch-operation.cpp | 2 +- TelepathyQt4/channel-request.cpp | 2 +- TelepathyQt4/channel.cpp | 6 +++--- TelepathyQt4/client-registrar-internal.h | 10 +++++----- TelepathyQt4/client-registrar.cpp | 2 +- TelepathyQt4/connection-internal.h | 2 +- TelepathyQt4/connection-manager-internal.h | 4 ++-- TelepathyQt4/connection-manager.cpp | 4 ++-- TelepathyQt4/connection.cpp | 4 ++-- TelepathyQt4/contact-manager-internal.h | 2 +- TelepathyQt4/contact-manager.cpp | 2 +- TelepathyQt4/contact.cpp | 2 +- TelepathyQt4/dbus-proxy.cpp | 2 +- TelepathyQt4/feature.cpp | 2 +- TelepathyQt4/file-transfer-channel.cpp | 2 +- TelepathyQt4/key-file.cpp | 2 +- TelepathyQt4/manager-file.cpp | 2 +- TelepathyQt4/message.cpp | 3 +-- TelepathyQt4/optional-interface-factory.cpp | 3 +-- TelepathyQt4/pending-account.cpp | 2 +- TelepathyQt4/pending-channel-request-internal.h | 2 +- TelepathyQt4/pending-channel-request.cpp | 2 +- TelepathyQt4/pending-channel.cpp | 2 +- TelepathyQt4/pending-connection.cpp | 2 +- TelepathyQt4/pending-contact-attributes.cpp | 2 +- TelepathyQt4/pending-contacts.cpp | 2 +- TelepathyQt4/pending-handles.cpp | 2 +- TelepathyQt4/pending-operation.cpp | 2 +- TelepathyQt4/pending-ready.cpp | 2 +- TelepathyQt4/pending-string-list.cpp | 2 +- TelepathyQt4/readiness-helper.cpp | 4 ++-- TelepathyQt4/ready-object.cpp | 2 +- TelepathyQt4/referenced-handles.cpp | 2 +- TelepathyQt4/room-list-channel.cpp | 2 +- TelepathyQt4/streamed-media-channel.cpp | 6 +++--- TelepathyQt4/text-channel.cpp | 4 ++-- 40 files changed, 55 insertions(+), 57 deletions(-) commit a21565318f1a3c43ad5f889976dd58f5c25ca846 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 20:54:26 2009 -0300 Export all public non-class methods. TelepathyQt4/Farsight/channel.h | 2 +- TelepathyQt4/debug.h | 6 ++++-- tools/qt4-types-gen.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) commit fc248a72e677e9bb861c6c14fc0bc5b2b9145574 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 11 23:33:35 2009 -0300 Added TELEPATHY_QT4_NO_EXPORT macro. TelepathyQt4/global.h | 8 ++++++++ 1 file changed, 8 insertions(+) commit 52c20ed4c574d34dd74b960d767f7bd5fe239456 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 11 23:26:56 2009 -0300 Updated HACKING file to mention that TELEPATHY_QT4_EXPORT macro should be used by all public classes. HACKING | 2 ++ 1 file changed, 2 insertions(+) commit 6154f87b45d777ae1d9476ef61a76d97904e8606 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 11 23:26:06 2009 -0300 Export all public auto generated classes using TELEPATHY_QT4_EXPORT macro. tools/qt4-client-gen.py | 3 ++- tools/qt4-types-gen.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) commit af732957f010da6371020a02476443cb86e88a0f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 11 23:25:32 2009 -0300 Export all public high-level classes using TELEPATHY_QT4_EXPORT macro. TelepathyQt4/abstract-client.h | 8 ++++---- TelepathyQt4/abstract-interface.h | 4 +++- TelepathyQt4/account-manager.h | 2 +- TelepathyQt4/account.h | 2 +- TelepathyQt4/channel-dispatch-operation.h | 2 +- TelepathyQt4/channel-factory.h | 2 +- TelepathyQt4/channel-request.h | 2 +- TelepathyQt4/channel.h | 2 +- TelepathyQt4/client-registrar.h | 2 +- TelepathyQt4/connection-manager.h | 6 +++--- TelepathyQt4/connection.h | 2 +- TelepathyQt4/contact-manager.h | 2 +- TelepathyQt4/contact.h | 2 +- TelepathyQt4/dbus-proxy.h | 8 +++++--- TelepathyQt4/feature.h | 6 ++++-- TelepathyQt4/file-transfer-channel.h | 2 +- TelepathyQt4/key-file.h | 4 +++- TelepathyQt4/manager-file.h | 2 +- TelepathyQt4/message.h | 4 ++-- TelepathyQt4/optional-interface-factory.h | 4 +++- TelepathyQt4/pending-account.h | 2 +- TelepathyQt4/pending-channel-request.h | 2 +- TelepathyQt4/pending-channel.h | 2 +- TelepathyQt4/pending-connection.h | 2 +- TelepathyQt4/pending-contact-attributes.h | 2 +- TelepathyQt4/pending-contacts.h | 2 +- TelepathyQt4/pending-handles.h | 2 +- TelepathyQt4/pending-operation.h | 4 +++- TelepathyQt4/pending-ready.h | 2 +- TelepathyQt4/pending-string-list.h | 2 +- TelepathyQt4/readiness-helper.h | 2 +- TelepathyQt4/ready-object.h | 2 +- TelepathyQt4/referenced-handles.h | 2 +- TelepathyQt4/room-list-channel.h | 2 +- TelepathyQt4/shared-ptr.h | 6 ++++-- TelepathyQt4/simple-pending-operations.h | 6 +++--- TelepathyQt4/streamed-media-channel.h | 6 +++--- TelepathyQt4/text-channel.h | 4 ++-- 38 files changed, 67 insertions(+), 53 deletions(-) commit e247a7c1e5d5919ce8aa9ef82bddbc411c469d1b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 6 08:38:02 2009 -0300 Added macros for C++ visibility support. TelepathyQt4/Global | 13 +++++++++++++ TelepathyQt4/Makefile.am | 3 +++ TelepathyQt4/global.h | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) commit ffbad9a259c0521e3cc57d039931d281de1cf1b9 Merge: fc3dab3 6bcd403 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 16:51:37 2009 -0300 Merge branch 'account-channel-request' Reviewed-by: Simon McVittie (smcv) commit 6bcd4034c827663cdb188a37f8a5f79bc363d648 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 16:51:17 2009 -0300 Account: Improved docs for ensureAudio/VideoCall. TelepathyQt4/account.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 70359ed6cf5a3c0a6bb37d959afbe37c0a107b48 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 16:45:49 2009 -0300 Account: Added ensureAudio/VideoCall methods. TelepathyQt4/account.cpp | 162 +++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 20 ++++++ 2 files changed, 182 insertions(+) commit fc3dab3defc453761cbb66561b7dfb856e8285c2 Merge: 9535dd8 ee128e8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 16:35:30 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit ee128e8944fb27e40fb7b71c4dfe4482126ef779 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 5 00:49:31 2009 -0300 Fixed doc for TELEPATHY_QT4_ERROR_OBJECT_REMOVED define. TelepathyQt4/constants.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9535dd85541213f752caf9c66ee7b5f45ad7edf4 Merge: 0315272 01c4c56 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 16:32:41 2009 -0300 Merge branch 'capabilities' Reviewed-by: Simon McVittie (smcv) commit 01c4c56893e7d70ca71390227c55b1f569f8bb98 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 15:21:27 2009 -0300 Added check for QDBusVariant operator== and build it if not present in Qt version. TelepathyQt4/types.h | 4 ++++ configure.ac | 15 +++++++++++++++ 2 files changed, 19 insertions(+) commit 195a3f7621e86e888d989bfd03628afd4cfe9123 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 15:01:27 2009 -0300 ConnectionCapabilities: Use cls instead of class_. TelepathyQt4/connection-capabilities.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit befdcc3d9c7a49a3d3820a7e49ad0e7f151cc0c5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 15:01:08 2009 -0300 CapabilitiesBase: Use cls instead of class_. TelepathyQt4/capabilities-base.cpp | 44 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) commit c780674ada21a70418476e53509e00bac44ab2ca Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 15:00:16 2009 -0300 Contact: Fallback to Connection::capabilities if per contact capabilities is not supported. TelepathyQt4/contact.cpp | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) commit d4bfc8d4503f8feea08fc274ed6b659c02db683e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 14:58:57 2009 -0300 ContactCapabilities: Added specificToContact param, as the object may come from a ConnectionCapabilities. TelepathyQt4/contact-capabilities.cpp | 10 ++++++---- TelepathyQt4/contact-capabilities.h | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) commit e1c36f3ec44f3ab758c8d4bc2f2628cb6dff7bd9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 14:14:41 2009 -0300 Connection: Removed FeatureCapabilities and make capabilties core now. TelepathyQt4/connection.cpp | 46 +++++++++++++++++----------------------- TelepathyQt4/connection.h | 1 - tests/dbus/conn-capabilities.cpp | 2 +- 3 files changed, 21 insertions(+), 28 deletions(-) commit 58dd187ae4e0cde7934b7d546d4104503923fb7f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 14:27:13 2009 -0300 CapabilitiesBase: Added isSpecificToContact method. TelepathyQt4/capabilities-base.cpp | 58 ++++++++++++++++++++++++++------ TelepathyQt4/capabilities-base.h | 8 +++-- TelepathyQt4/connection-capabilities.cpp | 4 +-- TelepathyQt4/contact-capabilities.cpp | 4 +-- 4 files changed, 57 insertions(+), 17 deletions(-) commit 4872888540ea348996fbfeba8a8d921555a51a3c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 14:19:48 2009 -0300 ContactCapabilities: Added default constructor. TelepathyQt4/contact-capabilities.cpp | 8 ++++++++ TelepathyQt4/contact-capabilities.h | 1 + 2 files changed, 9 insertions(+) commit 5d693a457f7df0654397bd3fc4259844a10f7d23 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 14:19:30 2009 -0300 ConnectionCapabilities: Added default constructor. TelepathyQt4/connection-capabilities.cpp | 8 ++++++++ TelepathyQt4/connection-capabilities.h | 1 + 2 files changed, 9 insertions(+) commit dadf6211d326afaa4c3a869326f863c4944234d8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 14:17:39 2009 -0300 CapabilitiesBase: Added default constructor. TelepathyQt4/capabilities-base.cpp | 14 ++++++++++++++ TelepathyQt4/capabilities-base.h | 1 + 2 files changed, 15 insertions(+) commit 0315272d30f641b6e8e7cc9d89baac1451a1365b Merge: 8f9d0a6 8ab9225 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 12:03:49 2009 -0300 Merge branch 'account-channel-request' Reviewed-by: Simon McVittie (smcv) commit 8f9d0a60455cc0d5ba8399e3634e00f9b86a6692 Merge: 63939a0 7abd12c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 12:03:38 2009 -0300 Merge branch 'contact-type' Reviewed-by: Simon McVittie (smcv) commit 63939a075f9100eb02d8b95d4515f9dda9fa3d39 Merge: ead7d78 5cdc738 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 12:03:21 2009 -0300 Merge branch 'pending-operations' Reviewed-by: Simon McVittie (smcv) commit ead7d78732b122f31df2bfa747cceb8944a1f1e8 Merge: 6d9e6e5 806cc40 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 12:02:49 2009 -0300 Merge branch 'spec' Reviewed-by: Simon McVittie (smcv) commit c10d33e6522a46ce656c5c27bdda144be5d4f33b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 11:38:24 2009 -0300 contacts-capabilities test: Added test for ContactCapabilities. tests/dbus/Makefile.am | 5 + tests/dbus/contacts-capabilities.cpp | 188 +++++++++++++++++++++++++++++++++++ 2 files changed, 193 insertions(+) commit 30558bb31ccdf66d28f5790a3be72c6d0d2d6202 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 11:36:46 2009 -0300 contacts-conn test: Added basic ContactCapabilities interface simulation support. tests/lib/contacts-conn.c | 139 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) commit 80be62294eb63806e16904df59e38ef4e40f5f17 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 10:00:32 2009 -0300 Contact: Added doc for capabilities method. TelepathyQt4/contact.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit bcc5c9dd04a50660a595003fb8482fa01071fb01 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 09:54:37 2009 -0300 conn-capabilities test: Added test for ConnectionCapabilities. tests/dbus/Makefile.am | 5 ++ tests/dbus/conn-capabilities.cpp | 144 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) commit 88d3ae2fe5a2929b4b448c5bec5ea6fce412e3b9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 09:53:39 2009 -0300 Connection: Fixed demarshal of Connection.Interface.Requests.RequestableChannelClasses property. TelepathyQt4/connection.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 704881100f58db6af9ddfec2d9e2415a49e4c260 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 09:33:20 2009 -0300 Connection: Added capabilities support. TelepathyQt4/connection.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++-- TelepathyQt4/connection.h | 5 +++ 2 files changed, 79 insertions(+), 2 deletions(-) commit 8244c665c5287871954b6b252f18d3716a6c99c9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 09:08:28 2009 -0300 Added ConnectionCapabilities to build system. TelepathyQt4/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 9fcdd748eae4e50bb38c860e16cac37a1319018f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 09:08:06 2009 -0300 ConnectionCapabilities: Added class for representing connection capabilities support. TelepathyQt4/ConnectionCapabilities | 13 +++++ TelepathyQt4/connection-capabilities.cpp | 89 ++++++++++++++++++++++++++++++++ TelepathyQt4/connection-capabilities.h | 54 +++++++++++++++++++ 3 files changed, 156 insertions(+) commit b1b318544b3cae0434ca87db6a27949918ca1292 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 08:55:55 2009 -0300 Contact: Use ContactCapabilities class instead of CapabilitiesBase. TelepathyQt4/contact.cpp | 8 ++++---- TelepathyQt4/contact.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) commit 6f5f92f94af17448a3e3e6ff549017d8c09e4379 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 08:55:34 2009 -0300 Added ContactCapabilities to build system. TelepathyQt4/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 31c696d41c564f7178cf47958403b91d4243874a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 08:55:00 2009 -0300 ContactCapabilities: Added class for representing contact capabilities support. TelepathyQt4/ContactCapabilities | 13 ++++++++ TelepathyQt4/contact-capabilities.cpp | 56 +++++++++++++++++++++++++++++++++++ TelepathyQt4/contact-capabilities.h | 56 +++++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+) commit 47355aca7ea469039409b14d66cb6ff56841649c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 08:45:45 2009 -0300 Contact: Proper instantiate capabilities object. TelepathyQt4/contact.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 13505d484b13a2f9ba73b9e0d6f19a815eb7cdb6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Oct 6 08:44:45 2009 -0300 CapabilitiesBase: Renamed setRequestableChannelClasses to updateRequestableChannelClasses. TelepathyQt4/capabilities-base.cpp | 2 +- TelepathyQt4/capabilities-base.h | 2 +- TelepathyQt4/contact.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 806cc40b8e9df917ba1421cf1b6cd67549ef0ab1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 5 00:49:52 2009 -0300 Update to spec 0.18.0 spec/all.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7abd12cd304f4cd8c9a82ba6be8d7292cfe49bc3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 5 00:41:23 2009 -0300 Moved ContactPtr to types.h as all other XXXPtr definitions. TelepathyQt4/contact.h | 1 - TelepathyQt4/types.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) commit 8ab9225a3f3fa30961dd74752162beb7230e05f6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 5 00:38:33 2009 -0300 Account: Use const QDateTime & for userActionTime on create/EnsureXXX methods. TelepathyQt4/account.cpp | 18 +++++++++--------- TelepathyQt4/account.h | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) commit 5cdc7389c3e633311cdb6be7435a7ad794caf504 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 5 00:32:50 2009 -0300 Renamed PendingVoidMethodCall to PendingVoid. We already have PendingStringList and PendingVariant with no MethodCall suffix, so let's do the same for PendingVoid. TelepathyQt4/Makefile.am | 2 +- TelepathyQt4/PendingVoid | 13 +++++++++++++ TelepathyQt4/PendingVoidMethodCall | 13 ------------- TelepathyQt4/account.cpp | 22 +++++++++++----------- TelepathyQt4/channel-dispatch-operation.cpp | 6 +++--- TelepathyQt4/channel-request.cpp | 6 +++--- TelepathyQt4/channel.cpp | 8 ++++---- TelepathyQt4/connection.cpp | 6 +++--- TelepathyQt4/pending-operation.cpp | 10 +++++----- TelepathyQt4/simple-pending-operations.h | 6 +++--- TelepathyQt4/streamed-media-channel.cpp | 14 +++++++------- tests/dbus/contacts.cpp | 2 +- tests/dbus/handles.cpp | 2 +- tests/lib/test.cpp | 6 +++--- 14 files changed, 58 insertions(+), 58 deletions(-) commit 9bc9e8573f1a136ce3b31923af21bf199a16567a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Oct 5 00:27:03 2009 -0300 Use parent as last param for PendingSuccess/Failure/VoidMethodCall constructors. TelepathyQt4/account.cpp | 48 +++++++++++++--------- TelepathyQt4/channel-dispatch-operation.cpp | 8 ++-- TelepathyQt4/channel-request.cpp | 4 +- TelepathyQt4/channel.cpp | 54 +++++++++++++------------ TelepathyQt4/connection.cpp | 11 ++--- TelepathyQt4/contact-manager.cpp | 37 +++++++++-------- TelepathyQt4/incoming-file-transfer-channel.cpp | 13 +++--- TelepathyQt4/outgoing-file-transfer-channel.cpp | 13 +++--- TelepathyQt4/pending-channel-request.cpp | 5 +-- TelepathyQt4/pending-operation.cpp | 6 +-- TelepathyQt4/simple-pending-operations.h | 9 +++-- TelepathyQt4/streamed-media-channel.cpp | 44 ++++++++++++-------- tests/lib/test.cpp | 2 +- 13 files changed, 141 insertions(+), 113 deletions(-) commit 08d2e21d8dcdf5b30aa4373ba6dbb70a370f499c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:46:02 2009 -0300 CapabilitiesBase: Added some docs. TelepathyQt4/capabilities-base.cpp | 113 +++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) commit 2ef48ba71edaa16b57b5d46ae9809fa0981b85a9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:31:34 2009 -0300 Contact: Added initial capabilities support. TelepathyQt4/contact-manager.cpp | 26 +++++++++++++++++++++++++- TelepathyQt4/contact-manager.h | 1 + TelepathyQt4/contact.cpp | 38 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/contact.h | 6 ++++++ 4 files changed, 70 insertions(+), 1 deletion(-) commit e852653f9f6c23914e39e7c46a68fff1f1990b2f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:30:24 2009 -0300 Connection: Added accessor method for ContactCapabilities interface. TelepathyQt4/connection.h | 6 ++++++ 1 file changed, 6 insertions(+) commit d1ef7b1bafd00d4621a1d72c11032697419199eb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:29:02 2009 -0300 Added CapabilitiesBase to build system. TelepathyQt4/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 033621a497515198a3a14b63a2569bedacd1a10e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:28:48 2009 -0300 CapabilitiesBase: Added base class for Capabilities support. TelepathyQt4/CapabilitiesBase | 13 +++ TelepathyQt4/capabilities-base.cpp | 170 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/capabilities-base.h | 71 ++++++++++++++++ 3 files changed, 254 insertions(+) commit e37bdbe6fbd44bb65a3e1a4a20f9517a74c23b3c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:14:18 2009 -0300 Auto generate classes/types for Connection ContactCapabilities interface. TelepathyQt4/connection.xml | 1 + 1 file changed, 1 insertion(+) commit 936e7e215a27556cf43942533249547c899d58f1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 14:17:18 2009 -0300 Added operator== for QDBusArgument. Ps.: This is a workaround that should be removed when Qt has support for this. There is already a merge request (http://qt.gitorious.org/qt/qt/merge_requests/1657) in place and the fix should be in next Qt versions. TelepathyQt4/types.h | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 6d9e6e5fdb4b38741470507615690f90cea529c0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Oct 1 10:50:19 2009 -0300 Install missing FileTransferChannelCreationProperties. TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 8d89833dcc1226acd2e1b3164ffc536c2705fdf0 Merge: 6ccaa92 a589b02 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Sep 28 22:49:31 2009 -0300 Merge branch 'file-transfer' Reviewed-by: Simon McVittie (smcv) commit 6ccaa92f535643c2ac04db8462c1ce0c002bc11a Merge: 795a0ed 17f68f4 Author: Abner Silva Date: Wed Sep 23 17:14:21 2009 -0300 Merge branch 'tubes' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 17f68f4a94dfa53988b5108c1adee4f5e65bc522 Author: Abner Silva Date: Mon Sep 21 17:29:16 2009 -0300 Added pretty include for StreamTube and Tube interface. TelepathyQt4/ChannelTypeStreamTubeInterface | 13 +++++++++++++ TelepathyQt4/ChannelTypeTubeInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 2 ++ 3 files changed, 28 insertions(+) commit e816e2199ef1c93e8171154c0cc1ef44d871865b Author: Abner Silva Date: Wed Aug 19 22:09:13 2009 -0300 Channel: Generating ChannelTypeStreamTube. TelepathyQt4/channel.h | 6 ++++++ TelepathyQt4/channel.xml | 1 + 2 files changed, 7 insertions(+) commit 7f8d15b2dc6b51b7925e82b04af6d0be96f78291 Author: Abner Silva Date: Wed Aug 19 22:06:38 2009 -0300 Channel: Generating ChannelInterfaceTube. TelepathyQt4/channel.h | 6 ++++++ TelepathyQt4/channel.xml | 1 + 2 files changed, 7 insertions(+) commit 795a0ed7b0358a626543e42bc5943c1dc40cd264 Merge: b4a9963 736f509 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:52:45 2009 -0300 Merge branch 'spec' Reviewed-by: Simon McVittie (smcv) commit b4a996320f79f836606f4a507cd9ce8f048e2e25 Merge: 15ad983 b4a8115 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:52:19 2009 -0300 Merge branch 'dist' Reviewed-by: Simon McVittie (smcv) commit a589b02ab99a3ffe5c3ff5175d33424a81e75f96 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:32:25 2009 -0300 IncomingFileTransferChannel: Read all remaining data on input device when device is closed and write to socket. TelepathyQt4/outgoing-file-transfer-channel.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 3ea6f792ee416b82cbc76872c4cd611eb47f0f89 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:17:01 2009 -0300 IncomingFileTransferChannel: Invalidate channel when initialOffset bigger than what we asked for. TelepathyQt4/incoming-file-transfer-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 27336e6e35a1ac0b038343805da69b0df5518e92 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:16:39 2009 -0300 Added TELEPATHY_QT4_ERROR_INCONSISTENT constant. TelepathyQt4/constants.h | 8 ++++++++ 1 file changed, 8 insertions(+) commit c66364c466b912d6045b89d3d2db8891132d0218 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:06:35 2009 -0300 Revert "OutgoingFileTransferChannel: Added Port access control support." This reverts commit f0a0915cea5909271eafe38ad82d5dcaac12374d. TelepathyQt4/outgoing-file-transfer-channel.cpp | 41 +++---------------------- 1 file changed, 4 insertions(+), 37 deletions(-) commit abbdc32ce83da11c0b2469f66dfbc94be130180f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 10:06:08 2009 -0300 Revert "IncomingFileTransferChannel: Added Port access control support." This reverts commit 7e4a6e7db7dc4ac86370e5f8af7d18ad53d0d9da. Conflicts: TelepathyQt4/incoming-file-transfer-channel.cpp TelepathyQt4/incoming-file-transfer-channel.cpp | 41 +++---------------------- 1 file changed, 5 insertions(+), 36 deletions(-) commit 715aeabd7c6a38428a6089e7d60aa4b7d411281d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 00:48:25 2009 -0300 file-transfer receiver example: Added command-line option to test offset support. examples/file-transfer/receiver-channel.cpp | 7 ++++--- examples/file-transfer/receiver-channel.h | 4 +++- examples/file-transfer/receiver.cpp | 13 ++++++++----- examples/file-transfer/receiver.h | 4 +++- 4 files changed, 18 insertions(+), 10 deletions(-) commit 3b8b01ea107ad8846618d4cfb60d060b6a6424bd Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 00:39:05 2009 -0300 file-transfer receiver example: Removed unused mFile class member. examples/file-transfer/receiver.cpp | 1 - examples/file-transfer/receiver.h | 1 - 2 files changed, 2 deletions(-) commit 42a09e0f6bc0c4160cbf3d8c735d006977f63d10 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 00:29:46 2009 -0300 IncomingFileTransferChannel: Skip first N bytes if initialOffset smaller than what we asked for. TelepathyQt4/incoming-file-transfer-channel.cpp | 33 ++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) commit f0a0915cea5909271eafe38ad82d5dcaac12374d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 00:04:25 2009 -0300 OutgoingFileTransferChannel: Added Port access control support. TelepathyQt4/outgoing-file-transfer-channel.cpp | 41 ++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) commit 7e4a6e7db7dc4ac86370e5f8af7d18ad53d0d9da Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 00:04:02 2009 -0300 IncomingFileTransferChannel: Added Port access control support. TelepathyQt4/incoming-file-transfer-channel.cpp | 41 ++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) commit 18dcdcd657418c25f60f9ea73ea43c47c0980662 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 23 00:03:26 2009 -0300 FileTransferChannel: Added protected method to access AvailableSocketTypes property. TelepathyQt4/file-transfer-channel.cpp | 26 ++++++++++++++++++++++++++ TelepathyQt4/file-transfer-channel.h | 2 ++ 2 files changed, 28 insertions(+) commit 5fa918a2cdabcad3b00e6919b8cf8e2634d179f9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:48:10 2009 -0300 OutgoingFileTransferChannel: Invalidate channel if ProvideFile fails. TelepathyQt4/outgoing-file-transfer-channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 0cda93bac65fac21c44808cdfd3513490cb86c51 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:47:57 2009 -0300 IncomingFileTransferChannel: Invalidate channel if AcceptFile fails. TelepathyQt4/incoming-file-transfer-channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 3983880d94bb57a3681593fc941483e9ba7b111f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:39:52 2009 -0300 OutgoingFileTransferChannel: Removed exclamation marks from debug. TelepathyQt4/outgoing-file-transfer-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 90160a814335db6c9ad7e3843fcb968cbc6e9518 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:39:24 2009 -0300 IncomingFileTransferChannel: Removed exclamation marks from debug. TelepathyQt4/incoming-file-transfer-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 90e794bde42e3114abacf1433f858f4f09b5d779 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:37:43 2009 -0300 OutgoingFileTransferChannel: Define FT_BLOCK_SIZE and use it as the read buffer size. TelepathyQt4/outgoing-file-transfer-channel.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 8039ff2f6cbc9e945061c6b718930717706001c0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:21:36 2009 -0300 FileTransferChannel: Improved docs according to review suggestions. TelepathyQt4/file-transfer-channel.cpp | 18 ++++++++++++++---- TelepathyQt4/incoming-file-transfer-channel.cpp | 2 ++ TelepathyQt4/outgoing-file-transfer-channel.cpp | 2 ++ 3 files changed, 18 insertions(+), 4 deletions(-) commit e5fe9da2448557029bfcfaa912ff86365e04e469 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 22:11:39 2009 -0300 ChannelFactory: Warn when the user tries to create a FileTransferChannel without the Requested property set in immutableProperties. TelepathyQt4/channel-factory.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 736f509f687fc0d2f1e1b205e94815de52980be9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 18 13:03:33 2009 -0300 Update to spec 0.17.28 spec/Channel.xml | 11 +- spec/Channel_Dispatcher.xml | 2 +- spec/Channel_Interface_Call_State.xml | 14 +- spec/Channel_Interface_Delivery_Reporting.xml | 444 --------------------- spec/Channel_Interface_Media_Signalling.xml | 78 ++++ spec/Channel_Interface_Media_Signalling_Future.xml | 164 -------- spec/Channel_Interface_Tube.xml | 2 +- spec/Channel_Type_Contact_Search.xml | 32 +- spec/Channel_Type_File_Transfer.xml | 2 +- spec/Channel_Type_Room_List.xml | 2 +- spec/Channel_Type_Streamed_Media.xml | 161 +++++++- spec/Channel_Type_Streamed_Media_Future.xml | 151 ------- spec/Channel_Type_Text.xml | 4 +- spec/Client_Approver.xml | 9 +- spec/Client_Handler.xml | 65 +++ spec/Connection.xml | 72 ++-- spec/Connection_Interface_Aliasing.xml | 19 +- spec/Connection_Interface_Avatars.xml | 15 + spec/Connection_Interface_Capabilities.xml | 23 +- spec/Connection_Interface_Contact_Capabilities.xml | 145 +++++-- spec/Connection_Interface_Contacts.xml | 64 --- spec/Connection_Interface_Location.xml | 60 +-- spec/Connection_Interface_Renaming.xml | 2 +- spec/Connection_Interface_Requests.xml | 2 + spec/Connection_Interface_Simple_Presence.xml | 12 +- spec/Connection_Manager.xml | 7 +- spec/Debug.xml | 5 +- spec/Media_Stream_Handler.xml | 51 ++- spec/all.xml | 4 +- spec/errors.xml | 82 +++- 30 files changed, 746 insertions(+), 958 deletions(-) commit b4a81158255911513339bb87c1cd6acdfeaebdfa Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 20:53:35 2009 -0300 contactlist cm: Fixed crash when list was being destroyed twice. tests/lib/contactlist/contact-list-manager.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit d7dc1f16a0717ded49ad934a15cc23c5b5a707c7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 20:07:55 2009 -0300 streamed-media-chan test: Catch up with latest spec/callable example changes. tests/dbus/streamed-media-chan.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) commit 0d6fe8fbfa2cd42e7495abc05d21d63a44f43122 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 20:05:39 2009 -0300 callable cm: Proper check if direction changed when requesting stream direction change. Check against TP_MEDIA_STREAM_DIRECTION_SEND instead of TP_MEDIA_STREAM_DIRECTION_RECEIVE to check if sending is required. tests/lib/callable/media-stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28a8ecae4b4d64b4b368b3e31a5d8584e5f82030 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 22 20:04:34 2009 -0300 Merge 'callable' example CM from telepathy-glib 0.7.36. tests/lib/callable/media-channel.c | 38 ++++++++++++++++++++++--------------- tests/lib/callable/media-manager.c | 38 ++++++++++++++++++++++--------------- tests/lib/callable/media-stream.c | 39 ++++++++++++++++++++++++++++++++++---- 3 files changed, 81 insertions(+), 34 deletions(-) commit a6cf1781e8e23b3c7bc93eb6b79d0104e7c66976 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 17:07:23 2009 -0300 Account: Use FileTransferChannelCreationProperties on createFileTransfer methods. TelepathyQt4/account.cpp | 85 ++++++++++++++++++++++-------------------------- TelepathyQt4/account.h | 17 ++-------- 2 files changed, 41 insertions(+), 61 deletions(-) commit 12c0009bfee93784bb66aba3884d4a8fb248f5a7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 17:06:50 2009 -0300 FileTransferChannelCreationProperties: Added class to be used by Account::createFileTransfer. TelepathyQt4/FileTransferChannelCreationProperties | 13 ++ TelepathyQt4/Makefile.am | 2 + .../file-transfer-channel-creation-properties.cpp | 168 +++++++++++++++++++++ .../file-transfer-channel-creation-properties.h | 90 +++++++++++ 4 files changed, 273 insertions(+) commit 233d0dae6a250ae7a0d999a9d1241ac40673e7ec Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 16:03:05 2009 -0300 Let's distribute file-transfer examples header files. examples/file-transfer/Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit d9e90fe246e99d06e545a5be74a1bae5c438c405 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 16:01:50 2009 -0300 file-transfer receiver example: Accept multiple incoming file transfers. examples/file-transfer/Makefile.am | 6 +- examples/file-transfer/receiver-channel.cpp | 100 ++++++++++++++++++++++++++++ examples/file-transfer/receiver-channel.h | 60 +++++++++++++++++ examples/file-transfer/receiver.cpp | 72 ++++---------------- examples/file-transfer/receiver.h | 8 --- 5 files changed, 176 insertions(+), 70 deletions(-) commit d10c34a9af488ac7eb283bf4b9a87e84892271e4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:59:43 2009 -0300 IncomingFileTransferChannel: Do not print socket error, as it always happen when the transfer finishes. When the transfer finishes, completed or not the CM closes the socket, which generate a socket error with QAbstractSocket::RemoteHostClosedError. Let's not debug this. TelepathyQt4/incoming-file-transfer-channel.cpp | 1 - 1 file changed, 1 deletion(-) commit f3446b3c5995b3a74e91022a961009819bea4ccf Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:35:56 2009 -0300 file-transfer receiver example: Improved progress output. examples/file-transfer/receiver.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit cde11ab50371442e7e569cc4fd7f1accdc07aa2d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:35:23 2009 -0300 file-transfer sender example: Improved progress output. examples/file-transfer/sender.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 28b2f7018ebf51b020514fa2746d6b1a24c6fb2c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:23:45 2009 -0300 OutgoingFileTransferChannel: Make provideFile require FileTransferChannel::FeatureCore. This is needed cause the handling of provideFile requires a proper FileTransferStateChanged handling. TelepathyQt4/outgoing-file-transfer-channel.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 86a8fe51e014212f0ba5bc05c15b8ef5f3c51a20 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:22:42 2009 -0300 IncomingFileTransferChannel: Make acceptFile require FileTransferChannel::FeatureCore. This is needed cause the handling of acceptFile requires a proper FileTransferStateChanged handling. TelepathyQt4/incoming-file-transfer-channel.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 94b5e36109ccd9b48af80776b8f9a8429057935f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:21:47 2009 -0300 file-transfer receiver example: Make sure the saved filename does not contain "/". examples/file-transfer/receiver.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit b61b9ed319fd847be5aa8f6b9a101bfad106655b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:14:37 2009 -0300 OutgoingFileTransferChannel: Improved docs. TelepathyQt4/outgoing-file-transfer-channel.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) commit ce232df66808405c24d6162e9978a3be62ce3af3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:14:30 2009 -0300 IncomingFileTransferChannel: Improved docs. TelepathyQt4/incoming-file-transfer-channel.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) commit 53e8926751096180700770bb5a56d595aa6bb44e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 15:14:17 2009 -0300 FileTransferChannel: Improved docs. TelepathyQt4/file-transfer-channel.cpp | 132 +++++++++++++++++++++++++++++---- 1 file changed, 118 insertions(+), 14 deletions(-) commit 4ff889d3eb921cce6899eda5d329f697df0845e7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Sep 17 14:24:34 2009 -0300 OutgoingFileTransferChannel: Consider initialOffset while sending data. TelepathyQt4/outgoing-file-transfer-channel.cpp | 45 ++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) commit e10d456a975f57bb2c012bd6d7a1cd895e81968e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 16 22:59:50 2009 -0300 Actually use Incoming/OutgoingFileTransferChannel. Reduced FileTransferChannel into a base class inherited by Incoming/OutgoingFileTransferChannel. FileTransferChannel can now be used by observers. which do not call accept/provideFile but still want to check progress, state changes... ChannelFactory now returns specialized classes for channels of type FileTransfer if immutableProperties contains the Requested flag. Updated file-transfer examples to use the new classes. TelepathyQt4/Makefile.am | 8 + TelepathyQt4/channel-factory.cpp | 23 ++- TelepathyQt4/file-transfer-channel.cpp | 362 +++++++++++++-------------------- TelepathyQt4/file-transfer-channel.h | 25 ++- TelepathyQt4/types.h | 4 + examples/file-transfer/receiver.cpp | 3 +- examples/file-transfer/receiver.h | 2 +- examples/file-transfer/sender.cpp | 3 +- examples/file-transfer/sender.h | 2 +- 9 files changed, 191 insertions(+), 241 deletions(-) commit 712141a3a5725a996a2a7b21186db670a53a5357 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 16 22:58:56 2009 -0300 file-transfer sender example: Listen to transferredBytesChanged. examples/file-transfer/sender.cpp | 8 ++++++++ examples/file-transfer/sender.h | 1 + 2 files changed, 9 insertions(+) commit 9d9551223d783a748f0aa64a2fd187d95f9366ab Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 16 22:57:36 2009 -0300 file-transfer receiver example: Prefix saved filename with TelepathyQt4FTReceiverExample_ and listen to transferredBytesChanged. examples/file-transfer/receiver.cpp | 12 ++++++++++-- examples/file-transfer/receiver.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) commit c66cdf5d355d7242c6d01a67a9b2d897d7a45d32 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 16 22:53:17 2009 -0300 Proper demarshal result of a PendingVariant call. TelepathyQt4/pending-variant.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2096f96d0be0de50b7c59e84e2cab49ab18c097a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 16 22:51:51 2009 -0300 OutgoingFileTransferChannel: Added specialized class for outgoing file transfer channels. TelepathyQt4/OutgoingFileTransferChannel | 13 ++ TelepathyQt4/outgoing-file-transfer-channel.cpp | 292 ++++++++++++++++++++++++ TelepathyQt4/outgoing-file-transfer-channel.h | 76 ++++++ 3 files changed, 381 insertions(+) commit 4ce437259ccbad94abb3574aedd9bdb8b42a51df Author: Andre Moreira Magalhaes (andrunko) Date: Wed Sep 16 22:50:40 2009 -0300 IncomingFileTransferChannel: Added specialized class for incoming file transfer channels. TelepathyQt4/IncomingFileTransferChannel | 13 ++ TelepathyQt4/incoming-file-transfer-channel.cpp | 266 ++++++++++++++++++++++++ TelepathyQt4/incoming-file-transfer-channel.h | 75 +++++++ 3 files changed, 354 insertions(+) commit 3f8e71c85950a7672d1065696488398bbba84f5e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 14:04:20 2009 -0300 Account: Make sure TargetHandle is uint when contact is 0 on createFileTransfer. TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 15ad983071a79b5705ce0f3b1e978b382824bf6e Merge: fd2b57a 1a0538f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 14:02:09 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 1a0538f2b45a05295b6ff0acd52267646f478b92 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 11:16:58 2009 -0300 Account: Make sure TargetHandle is uint when contact is 0 on ensureMediaCall/TextChat. TelepathyQt4/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ca4e2facdc59868bea589daff7fbb4ee64c54344 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 10:07:49 2009 -0300 Explicitly use uint for TargetHandleType. TelepathyQt4/account.cpp | 10 +++++----- TelepathyQt4/connection.cpp | 2 +- TelepathyQt4/contact-manager.cpp | 2 +- examples/call/call-handler.cpp | 2 +- tests/dbus/account-channel-dispatcher.cpp | 2 +- tests/dbus/chan-basics.cpp | 4 ++-- tests/dbus/chan-group.cpp | 2 +- tests/dbus/client.cpp | 4 ++-- tests/dbus/conn-requests.cpp | 4 ++-- tests/dbus/streamed-media-chan.cpp | 18 +++++++++--------- 10 files changed, 25 insertions(+), 25 deletions(-) commit 193d60bf2d0842effe67a33ad8dc53d0b0b10225 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 10:11:01 2009 -0300 file-transfer sender example: Explicitly use uint for TargetHandlerType when creating FileTransfer channels. examples/file-transfer/sender.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6f4a9a9bd5af1407914ab515a652bdb86ec907a5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 10:10:31 2009 -0300 Account: Explicitly use uint for TargetHandleType when creating FileTransfer channels. TelepathyQt4/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 6dc983c2e76d216db89bf39c724dda3c7fa66658 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Sep 11 10:10:08 2009 -0300 Account: Use proper ChannelType when creating FileTransfer channels. TelepathyQt4/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d1d97307fcb15af49a925394d39255bd3e88853c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:37:10 2009 -0300 Added file-transfer examples to .gitignore. .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 4f038c7130002d680204be3f1057494ddc88f46d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:36:30 2009 -0300 Added file-transfer examples to build system. configure.ac | 1 + examples/Makefile.am | 4 ++-- examples/file-transfer/Makefile.am | 46 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) commit 42ce74c5c3384029f28e683ac33d442d0b106f19 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:36:07 2009 -0300 file-transfer receiver example: Added example for a file transfer receiver. examples/file-transfer/receiver.cpp | 188 ++++++++++++++++++++++++++++++++++++ examples/file-transfer/receiver.h | 67 +++++++++++++ 2 files changed, 255 insertions(+) commit 3cdab3d1e4fc9ff189c69eee3c5440978851f35c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:34:47 2009 -0300 file-transfer sender example: Added example for a file transfer sender. examples/file-transfer/sender.cpp | 313 ++++++++++++++++++++++++++++++++++++++ examples/file-transfer/sender.h | 79 ++++++++++ 2 files changed, 392 insertions(+) commit 6e04b7c80893d66c0060bbb281b47ac997047d58 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:30:56 2009 -0300 Account: Added initial methods to create a file transfer channel using ChannelRequest. The methods signature are not set and may change. TelepathyQt4/account.cpp | 128 ++++++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/account.h | 23 +++++++++ 2 files changed, 150 insertions(+), 1 deletion(-) commit 3ba8c67cc7b0ff1a19af2f2aac2fd2ef2135febe Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:28:56 2009 -0300 FileTransferChannel: Added support for full-featured FileTransfer support. TelepathyQt4/file-transfer-channel.cpp | 479 ++++++++++++++++++++++++++++++++- TelepathyQt4/file-transfer-channel.h | 37 +++ 2 files changed, 511 insertions(+), 5 deletions(-) commit c7d61301be712e10e33ce28adb6f97ab35457d96 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:30:22 2009 -0300 Channel: Added accessor for fileTransferInterface. TelepathyQt4/channel.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 1f1090739834de07cd64c7202d6dc0d36663c146 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:27:34 2009 -0300 Auto generate classes/types for Channel Tube interface. This is needed as some types used in FileTransferChannel are defined in the Tube interface. TelepathyQt4/channel.xml | 1 + 1 file changed, 1 insertion(+) commit 8f74a2096f6987684256b398860a0311a5881803 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:26:58 2009 -0300 Added dependency to QtNetwork module (will be used by FileTrasnferChannel). TelepathyQt4/Makefile.am | 6 ++++-- configure.ac | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) commit f7b91780392c41557a85607065ac73154eeb1d30 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Sep 8 22:24:09 2009 -0300 PendingVariant: Added PendingVariant class. PendingVariant is a new PendingOperation that can handle QDBusPendingCalls that return a QVariant. The result can be retrieved using PendingVariant::result(). TelepathyQt4/Makefile.am | 4 ++ TelepathyQt4/PendingVariant | 13 +++++++ TelepathyQt4/pending-variant.cpp | 82 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/pending-variant.h | 58 ++++++++++++++++++++++++++++ 4 files changed, 157 insertions(+) commit fd2b57a9d48bfd226d97f3a9c2c7444b211042d3 Merge: 56f4f79 3abc075 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 25 13:41:36 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 56f4f799a020ee63a3a1b83daad5c07c25ccfdc9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 25 13:39:31 2009 -0300 Start 0.1.11 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 21e956ff675bf4e0760d6ebe446fb8fbc9cbb16b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 25 13:07:21 2009 -0300 Prepare release 0.1.10 NEWS | 24 ++++++++++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 24 insertions(+), 4 deletions(-) commit 201f2dcc73ac36ea2dde6f482e012b707583f359 Merge: a2a946e e2b1a47 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 25 11:16:31 2009 -0300 Merge branch 'dtmf' Conflicts: tests/dbus/streamed-media-chan.cpp tests/lib/callable/media-channel.c Reviewed-by: Simon McVittie (smcv) commit e2b1a47ad89eaff3b8e0f63f5b141b39bf432cdd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 25 10:07:47 2009 -0300 callable cm: Use tp_svc_channel_interface_dtmf_return_from_start_tone when returning from StartTone. tests/lib/callable/media-channel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a2a946e96d5f1a0132c94434fea5ccdc22a06378 Merge: 3d199bc 81d8ffa Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 25 10:04:20 2009 -0300 Merge branch 'hold' Reviewed-by: Simon McVittie (smcv) commit a11305688a56bb4950e174437aceb783262f141f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 24 14:54:08 2009 -0300 streamed-media-chan test: Added tests for StreamedMediaChannel DTMF interface support. tests/dbus/streamed-media-chan.cpp | 145 +++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) commit d9c2cb04f3c21c32a15ae019ff9b5e6275a830f9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Aug 24 14:53:33 2009 -0300 callable cm: Added DTMF interface simulation support. tests/lib/callable/media-channel.c | 99 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) commit 81d8ffaccbfcdcc164f1f7a1cf05973bb8464c07 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 18 12:42:44 2009 -0300 StreamedMediaChannel: Renamed requestLocalHold method to requestHold. TelepathyQt4/streamed-media-channel.cpp | 8 ++++---- TelepathyQt4/streamed-media-channel.h | 2 +- tests/dbus/streamed-media-chan.cpp | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) commit 59ef6ce118de2e5f9f7fb22e029ce7b51e84d57b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 18 12:37:04 2009 -0300 StreamedMediaChannel: Improved docs for localHoldState and localHoldStateReason. TelepathyQt4/streamed-media-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 680f7382273954009d3d1ff295c0d47d79d5de3b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 18 11:26:07 2009 -0300 callable cm: Merge stylistic fixes from tp-glib. tests/lib/callable/media-channel.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit cbde7946564e184f50e4a8e0a4b3fe67ca0f1e52 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 20:26:24 2009 -0300 streamed-media-chan test: Added test for inability to unhold (unable to reacquire a resource for example). tests/dbus/streamed-media-chan.cpp | 87 +++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) commit 3c5edee3c3aca377ac9777522df9d9270564f4a3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 20:25:16 2009 -0300 callable cm: Added simulation for inability to unhold (unable to reacquire a resource for example). tests/lib/callable/media-channel.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) commit 3abc075dd76b2f2a9b52a6be01056bd1ba071d11 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:55:51 2009 -0300 StreamedMediaChannel: Always delete watchers when the call finished. TelepathyQt4/streamed-media-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 4bc7304a04f24f4a592cd7d57b980206b62c7b5a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:54:09 2009 -0300 StreamedMediaChannel: Do not emit localHoldStateChanged if local hold state did not change. TelepathyQt4/streamed-media-channel.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 606d320b70cd46b9f140e1aa4e70356e44120164 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:53:13 2009 -0300 StreamedMediaChannel: Do not fail if Hold.GetHoldState fails. TelepathyQt4/streamed-media-channel.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 35240d546e4d8a0a440f5cd384c3109d162b3d33 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:52:38 2009 -0300 StreamedMediaChannel: Updated docs for requestLocalHold. TelepathyQt4/streamed-media-channel.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 6f01d4c762dfef879bd796dd83ab8381134b433c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:39:34 2009 -0300 StreamedMediaChannel: Changed Hold interface methods to preprend "local", indicating it's the local hold state. TelepathyQt4/streamed-media-channel.cpp | 92 ++++++++++++++------------- TelepathyQt4/streamed-media-channel.h | 14 ++--- tests/dbus/streamed-media-chan.cpp | 108 ++++++++++++++++---------------- 3 files changed, 108 insertions(+), 106 deletions(-) commit f54f4a377b26e5e6111a40624c92110c5e31a626 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 12 12:56:52 2009 -0300 streamed-media-chan test: Added tests for StreamedMediaChannel hold interface support. tests/dbus/streamed-media-chan.cpp | 149 +++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) commit f13be9345a34fa4beb2b555a899c1e00646c7a8c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 12 13:01:19 2009 -0300 callable cm: Added hold interface simulation support. tests/lib/callable/media-channel.c | 112 +++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) commit 80ff7d67fe9b985f2be1b50e025a919bcf962654 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 12 11:29:37 2009 -0300 StreamedMediaChannel: Added Hold interface support. TelepathyQt4/streamed-media-channel.cpp | 147 +++++++++++++++++++++++++++++++- TelepathyQt4/streamed-media-channel.h | 11 +++ 2 files changed, 157 insertions(+), 1 deletion(-) commit 64c0954cfb21e38750ce7c48cc41aae425483d39 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 00:18:05 2009 -0300 StreamedMediaChannel: Added DTMF interface support. TelepathyQt4/streamed-media-channel.cpp | 56 +++++++++++++++++++++++++++++++++ TelepathyQt4/streamed-media-channel.h | 3 ++ 2 files changed, 59 insertions(+) commit 3d199bc04901a3e5d57fe64cefb45543fe6adb6e Merge: 001e17f 08be450 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:19:17 2009 -0300 Merge branch 'bug23282' Reviewed-by: Simon McVittie (smcv) commit 001e17fcee6caa2dcd7240859a96c618a685fd47 Merge: a293377 7e94f7b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 13 19:18:59 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 08be450c55f038ec277f6bb56f4c875f15a75b74 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Aug 12 12:55:24 2009 -0300 Channel: Proper feed ReadinessHelper with interfaces when they are retrieved. TelepathyQt4/channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 7e94f7b9185758205743e3f6c8a9d6bb8f0fa089 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 11 23:44:37 2009 -0300 Moved OptionalInterfaceFactory::InterfaceSupportedChecking docs from DBusProxy to OptionalInterfaceFactory. TelepathyQt4/dbus-proxy.cpp | 19 ------------------- TelepathyQt4/optional-interface-factory.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 19 deletions(-) commit c277d20157caff182ebec7fd1c1ee979b525cd6b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Aug 11 23:42:01 2009 -0300 Use struct Private instead of class Private for consistence. TelepathyQt4/connection-manager.h | 4 ++-- TelepathyQt4/dbus-proxy.cpp | 3 +-- TelepathyQt4/dbus-proxy.h | 12 ++++++------ 3 files changed, 9 insertions(+), 10 deletions(-) commit a29337748bf699c5224a75d3c1a1bc616dda3bba Merge: 1123177 f638afa Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 6 08:57:28 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit f638afabbcc4c37ee006dca4fc8d2d89cf8c691b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Aug 6 08:44:34 2009 -0300 Removed cli/Client from header guards. TelepathyQt4/AbstractClient | 4 ++-- TelepathyQt4/AbstractClientApprover | 4 ++-- TelepathyQt4/AbstractClientHandler | 4 ++-- TelepathyQt4/AbstractClientObserver | 4 ++-- TelepathyQt4/AbstractInterface | 4 ++-- TelepathyQt4/Account | 4 ++-- TelepathyQt4/AccountInterface | 4 ++-- TelepathyQt4/AccountManager | 4 ++-- TelepathyQt4/AccountManagerInterface | 4 ++-- TelepathyQt4/Channel | 4 ++-- TelepathyQt4/ChannelDispatchOperation | 4 ++-- TelepathyQt4/ChannelDispatchOperationInterface | 4 ++-- TelepathyQt4/ChannelDispatcher | 4 ++-- TelepathyQt4/ChannelDispatcherInterface | 4 ++-- TelepathyQt4/ChannelInterface | 4 ++-- TelepathyQt4/ChannelInterfaceCallStateInterface | 4 ++-- TelepathyQt4/ChannelInterfaceChatStateInterface | 4 ++-- TelepathyQt4/ChannelInterfaceDTMFInterface | 4 ++-- TelepathyQt4/ChannelInterfaceGroupInterface | 4 ++-- TelepathyQt4/ChannelInterfaceHoldInterface | 4 ++-- TelepathyQt4/ChannelInterfaceMediaSignallingInterface | 4 ++-- TelepathyQt4/ChannelInterfacePasswordInterface | 4 ++-- TelepathyQt4/ChannelRequest | 4 ++-- TelepathyQt4/ChannelRequestInterface | 4 ++-- TelepathyQt4/ChannelTypeContactListInterface | 4 ++-- TelepathyQt4/ChannelTypeRoomListInterface | 4 ++-- TelepathyQt4/ChannelTypeStreamedMediaInterface | 4 ++-- TelepathyQt4/ChannelTypeTextInterface | 4 ++-- TelepathyQt4/ChannelTypeTubesInterface | 4 ++-- TelepathyQt4/Client | 4 ++-- TelepathyQt4/ClientApproverInterface | 4 ++-- TelepathyQt4/ClientHandlerInterface | 4 ++-- TelepathyQt4/ClientInterface | 4 ++-- TelepathyQt4/ClientInterfaceRequestsInterface | 4 ++-- TelepathyQt4/ClientObserverInterface | 4 ++-- TelepathyQt4/ClientRegistrar | 4 ++-- TelepathyQt4/Connection | 4 ++-- TelepathyQt4/ConnectionInterface | 4 ++-- TelepathyQt4/ConnectionInterfaceAliasingInterface | 4 ++-- TelepathyQt4/ConnectionInterfaceAvatarsInterface | 4 ++-- TelepathyQt4/ConnectionInterfaceCapabilitiesInterface | 4 ++-- TelepathyQt4/ConnectionInterfaceContactsInterface | 4 ++-- TelepathyQt4/ConnectionInterfacePresenceInterface | 4 ++-- TelepathyQt4/ConnectionInterfaceRequestsInterface | 4 ++-- TelepathyQt4/ConnectionInterfaceSimplePresenceInterface | 4 ++-- TelepathyQt4/ConnectionManager | 4 ++-- TelepathyQt4/ConnectionManagerInterface | 4 ++-- TelepathyQt4/Contact | 4 ++-- TelepathyQt4/ContactManager | 4 ++-- TelepathyQt4/DBus | 4 ++-- TelepathyQt4/DBusDaemonInterface | 4 ++-- TelepathyQt4/DBusProxy | 4 ++-- TelepathyQt4/Feature | 4 ++-- TelepathyQt4/FileTransferChannel | 4 ++-- TelepathyQt4/IntrospectableInterface | 4 ++-- TelepathyQt4/MediaSessionHandler | 4 ++-- TelepathyQt4/MediaSessionHandlerInterface | 4 ++-- TelepathyQt4/MediaStreamHandler | 4 ++-- TelepathyQt4/MediaStreamHandlerInterface | 4 ++-- TelepathyQt4/Message | 4 ++-- TelepathyQt4/MethodInvocationContext | 4 ++-- TelepathyQt4/OptionalInterfaceFactory | 4 ++-- TelepathyQt4/PeerInterface | 4 ++-- TelepathyQt4/PendingAccount | 4 ++-- TelepathyQt4/PendingChannel | 4 ++-- TelepathyQt4/PendingChannelRequest | 4 ++-- TelepathyQt4/PendingConnection | 4 ++-- TelepathyQt4/PendingContactAttributes | 4 ++-- TelepathyQt4/PendingContacts | 4 ++-- TelepathyQt4/PendingFailure | 4 ++-- TelepathyQt4/PendingHandles | 4 ++-- TelepathyQt4/PendingOperation | 4 ++-- TelepathyQt4/PendingReady | 4 ++-- TelepathyQt4/PendingStringList | 4 ++-- TelepathyQt4/PendingSuccess | 4 ++-- TelepathyQt4/PendingVoidMethodCall | 4 ++-- TelepathyQt4/Properties | 4 ++-- TelepathyQt4/PropertiesInterface | 4 ++-- TelepathyQt4/PropertiesInterfaceInterface | 4 ++-- TelepathyQt4/ReadinessHelper | 4 ++-- TelepathyQt4/ReadyObject | 4 ++-- TelepathyQt4/ReceivedMessage | 4 ++-- TelepathyQt4/ReferencedHandles | 4 ++-- TelepathyQt4/ReferencedHandlesIterator | 4 ++-- TelepathyQt4/RoomListChannel | 4 ++-- TelepathyQt4/StatefulDBusProxy | 4 ++-- TelepathyQt4/StatelessDBusProxy | 4 ++-- TelepathyQt4/StreamedMediaChannel | 4 ++-- TelepathyQt4/TextChannel | 4 ++-- TelepathyQt4/abstract-client.h | 4 ++-- TelepathyQt4/abstract-interface.h | 4 ++-- TelepathyQt4/account-manager.h | 4 ++-- TelepathyQt4/account.h | 4 ++-- TelepathyQt4/channel-dispatch-operation.h | 4 ++-- TelepathyQt4/channel-dispatcher.h | 4 ++-- TelepathyQt4/channel-factory.h | 4 ++-- TelepathyQt4/channel-request.h | 4 ++-- TelepathyQt4/channel.h | 4 ++-- TelepathyQt4/client-registrar-internal.h | 4 ++-- TelepathyQt4/client-registrar.h | 4 ++-- TelepathyQt4/client.h | 4 ++-- TelepathyQt4/connection-internal.h | 4 ++-- TelepathyQt4/connection-manager-internal.h | 4 ++-- TelepathyQt4/connection-manager.h | 4 ++-- TelepathyQt4/connection.h | 4 ++-- TelepathyQt4/contact-manager-internal.h | 4 ++-- TelepathyQt4/contact-manager.h | 4 ++-- TelepathyQt4/contact.h | 4 ++-- TelepathyQt4/dbus-proxy.h | 4 ++-- TelepathyQt4/dbus.h | 4 ++-- TelepathyQt4/feature.h | 4 ++-- TelepathyQt4/file-transfer-channel.h | 4 ++-- TelepathyQt4/media-session-handler.h | 4 ++-- TelepathyQt4/media-stream-handler.h | 4 ++-- TelepathyQt4/message.h | 4 ++-- TelepathyQt4/method-invocation-context.h | 4 ++-- TelepathyQt4/optional-interface-factory.h | 4 ++-- TelepathyQt4/pending-account.h | 4 ++-- TelepathyQt4/pending-channel-request-internal.h | 4 ++-- TelepathyQt4/pending-channel-request.h | 4 ++-- TelepathyQt4/pending-channel.h | 4 ++-- TelepathyQt4/pending-connection.h | 4 ++-- TelepathyQt4/pending-contact-attributes.h | 4 ++-- TelepathyQt4/pending-contacts.h | 4 ++-- TelepathyQt4/pending-handles.h | 4 ++-- TelepathyQt4/pending-operation.h | 4 ++-- TelepathyQt4/pending-ready.h | 4 ++-- TelepathyQt4/pending-string-list.h | 4 ++-- TelepathyQt4/properties.h | 4 ++-- TelepathyQt4/readiness-helper.h | 4 ++-- TelepathyQt4/ready-object.h | 4 ++-- TelepathyQt4/referenced-handles.h | 4 ++-- TelepathyQt4/room-list-channel.h | 4 ++-- TelepathyQt4/simple-pending-operations.h | 4 ++-- TelepathyQt4/streamed-media-channel.h | 4 ++-- TelepathyQt4/text-channel.h | 4 ++-- 136 files changed, 272 insertions(+), 272 deletions(-) commit 1123177abf30a9d021dd9e337b8fe9f63ed13ce5 Merge: f26207c 1bb5d25 Author: George Goldberg Date: Thu Jul 30 15:25:39 2009 +0100 Merge branch 'fix-bug-23040' commit 1bb5d25173a7c62a276f675b460e39bce85c734d Author: George Goldberg Date: Thu Jul 30 15:07:53 2009 +0100 Add a check to the pinocchio/cm-basics unit tests for Bug 23040. tests/pinocchio/cm-basics.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 1c2c75f7dc73412c47006ef5a739354a82ce331e Author: George Goldberg Date: Thu Jul 30 14:41:37 2009 +0100 Fix Bug 23040, running connection managers appear twice in ConnectionManager::listNames result. TelepathyQt4/connection-manager-internal.h | 3 ++- TelepathyQt4/connection-manager.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) commit f26207c81f32e01f43473440089a4032e4e898f9 Merge: 92cfc5e 5a04501 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jul 27 12:26:55 2009 -0300 Merge branch 'bug21335' Reviewed-by: Simon McVittie (smcv) commit 92cfc5e90b88a6b74af44a091cffe1d16f02363e Merge: 6f7d7fe fac6bb5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jul 27 12:26:37 2009 -0300 Merge branch 'bug20269' Reviewed-by: Simon McVittie (smcv) commit 5a04501e75c60c92694af059b9d26a1df68aba9b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jul 27 12:21:33 2009 -0300 Channel: Handle MembersChanged for reason Renamed when renaming "myself". TelepathyQt4/channel.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit 90f37576c409a0a7c6bc655bc861e1aa5728e990 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jul 27 12:08:55 2009 -0300 Channel: Added comments for change-reason Invited/Separated that they shouldn't happen as a self remove reason. TelepathyQt4/channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c67aebed12528a0058c310796f1511e8ff68efa8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jul 27 11:49:32 2009 -0300 Channel: Improved change-reason mapping to Telepathy Error. Improved change-reason mapping to Telepathy Error and added a comment on what is being mapped to default case (no error defined). TelepathyQt4/channel.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 5be690664b226b81f2c0b2abd11f62a1f96e8e3e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jul 27 11:48:33 2009 -0300 Channel: Use TELEPATHY_ERROR_TERMINATED as invalidate reason if change reason is not known. TelepathyQt4/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 33072423b5a0242de4e4900601fa8088eba005fa Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 14:59:53 2009 -0300 Channel: Check if change-reason is being used properly on invalidate (Closed) when removing self handle. tests/dbus/chan-group.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit 8d917bdf3306e18c0aa9c154c8b7ecd79eb4c4a4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 14:58:53 2009 -0300 csh test cm: Close channel when self handle is removed. tests/lib/csh/room.c | 6 ++++++ 1 file changed, 6 insertions(+) commit 414089c717164d535c20b577f8afaed60804420d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 14:58:23 2009 -0300 Channel: Use change-reason when invalidating channel on closed. TelepathyQt4/channel.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit df349e220a14a70ed8c1c9480693cb1225a61fa7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 14:57:57 2009 -0300 Channel: Make sure groupSelfContactRemoveInfo is set even if Closed is called before building the contacts. TelepathyQt4/channel.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit abacd3d1af1666af88c744593bf7a3558ab53db8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 14:56:42 2009 -0300 Channel: Always use change-reason even if the reason is None, so GroupMemberChangeDetails::hasReason returns true. TelepathyQt4/channel.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 04a36e0a312fbfe9915438ed8bc70214b82bb651 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 14:55:30 2009 -0300 Channel: Added method to map a GroupMembersChangedDetails change-reason to a Telepathy error. TelepathyQt4/channel.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) commit fac6bb58d2644d657101caad9d80a8e77b83565d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 12:48:57 2009 -0300 Fixed bug 20269: Channel's Contact objects should initially have no features. TelepathyQt4/channel.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 4456919ad7ff1021811c0a0d78b5df428079e09c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 12:45:28 2009 -0300 chan-group test: Added test to Channel::groupSelfContactRemoveInfo. tests/dbus/chan-group.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 3533a2f5e3169463f562dec335b27a27caebcdf0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jul 24 12:45:01 2009 -0300 Fixed bug 21335: Implement Group self-handle removal reasons. TelepathyQt4/channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 6f7d7feea4a6c07b9b5b050c3aeb65ac2f6d9496 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 19:43:30 2009 -0300 Start 0.1.10 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit d5dec56858acb6035ea4ea141b7206c3af9dc3ef Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 19:17:07 2009 -0300 Prepare release 0.1.9 NEWS | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) commit 9721acc268d59a62e3cd1b35c3a876177a99a141 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 19:22:53 2009 -0300 Fixed make dist. Added missing manager files to build system. tests/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b1dddf0d1c6cbbd033aef63b7be3afcd65784651 Merge: c3aa1c0 23a4b8b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 18:41:43 2009 -0300 Merge commit 'gberg/fix-api-inconsistency' Reviewed-by: Simon McVittie (smcv) commit c3aa1c091be90085ab1cb3a532be3b219b1c3a14 Merge: cb6c27c cb6d8a6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 18:40:53 2009 -0300 Merge commit 'gberg/doc-fixes' Reviewed-by: Simon McVittie (smcv) commit cb6c27c256c85d019ca22b236681a8867c4c4cd6 Merge: 59d1b74 535e338 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 18:39:19 2009 -0300 Merge branch 'misc' Reviewed-by: Simon McVittie (smcv) commit 59d1b7473fc7d05b90379264c814539c0b9fbcc5 Merge: 1ecf6d6 4a0f88b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 18:39:09 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 1ecf6d649025d673fc9e3f12bf6db23de77c8b1a Merge: 304e033 a9feff9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 18:38:10 2009 -0300 Merge branch 'roster-groups' Reviewed-by: Simon McVittie (smcv) commit a9feff9c9dcab5b58f5cf89684a31d18a6b3892d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:56:14 2009 -0300 ContactManager: Explicitly say that addGroup succeeds if the group already exists. TelepathyQt4/contact-manager.cpp | 3 +++ 1 file changed, 3 insertions(+) commit e60c068b0063d963fd9643066fdc2505de295272 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:50:31 2009 -0300 ContactManager: Renamed groupAdd/RemoveContacts to addContactsToGroup/removeContactsFromGroup. TelepathyQt4/contact-manager.cpp | 8 ++++---- TelepathyQt4/contact-manager.h | 4 ++-- TelepathyQt4/contact.cpp | 4 ++-- tests/dbus/conn-roster-groups.cpp | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) commit 59cbc78bcbd2e68e4106f5395592d8bce6a13231 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:44:39 2009 -0300 Contact/ContactManager: Docs++. TelepathyQt4/contact-manager.cpp | 4 ++-- TelepathyQt4/contact.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) commit 521f3b2054465aec97ba4cba5d0790614b9a67d6 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:42:14 2009 -0300 Fixed copy/paste error. tests/dbus/conn-roster-groups.cpp | 2 +- tests/dbus/conn-roster.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit d746ae2d36c637ae3221857eab2099d0b02f108d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:35:24 2009 -0300 ContactManager: Proper remove contact list group even if there are contacts in the group. TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/contact-manager-internal.h | 50 ++++++++++++++++++++++++++++++++ TelepathyQt4/contact-manager.cpp | 51 ++++++++++++++++++++++++++++++--- 3 files changed, 99 insertions(+), 4 deletions(-) commit a6a8ba75dd1b40e22e8e5638a31e7d0e971e9743 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:10:05 2009 -0300 ContactManager: Use ensureChannel to create contact list groups, so it succeeds if the group already exists. TelepathyQt4/contact-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 47e1596c2c6f78f1f08b2aa5c123d27df526d8b2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:09:19 2009 -0300 ContactManager: Removed TODO. TelepathyQt4/contact-manager.cpp | 9 --------- 1 file changed, 9 deletions(-) commit a2797d76debe332cb2c2eaec16ecff91ae5785aa Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:08:19 2009 -0300 ContactManager: Let's not assume that contact list groups with empty names are not allowed, let the CM decide it. TelepathyQt4/contact-manager.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 0ca784231a2cd582391dfc8e0e634abf9b8f561f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 14:00:31 2009 -0300 Connection: Comments++. TelepathyQt4/connection.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit f5eb9a449f051959e8e1106dc86d44f3dab4a7b9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 13:55:58 2009 -0300 Connection/ContactManager: Use proper english when naming contact list channels and contact list group channels. TelepathyQt4/connection.cpp | 34 ++++++++++----------- TelepathyQt4/contact-manager.cpp | 64 ++++++++++++++++++++-------------------- TelepathyQt4/contact-manager.h | 8 ++--- 3 files changed, 53 insertions(+), 53 deletions(-) commit 6d40ac3aef2873081d7bd9d36f2f6399ca08c9c5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 13:47:01 2009 -0300 Connection: Refactor code that checks if FeatureRosterGroups is ready. Changes suggested by Simon McVittie TelepathyQt4/connection.cpp | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) commit 23a4b8b16e27049f59485b225104bc1e2d05fcb7 Author: George Goldberg Date: Thu Jul 23 16:18:17 2009 +0100 Chat requiredForRegistration() to isRequiredForRegistration() to make it consistent with other bool returning getters. TelepathyQt4/connection-manager.cpp | 2 +- TelepathyQt4/connection-manager.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 535e338e5481454ecdd4084c43afe20c2603bbe9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 12:03:39 2009 -0300 FileTransferChannel: Fixed redundancy on comment. TelepathyQt4/file-transfer-channel.cpp | 2 +- TelepathyQt4/file-transfer-channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 66bd3d2b5872386db0624e6d17310c1799b5e5f1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 12:02:56 2009 -0300 RoomListChannel: Fixed redundancy on comment. TelepathyQt4/room-list-channel.cpp | 2 +- TelepathyQt4/room-list-channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 1e83635c90b87967ecf1b6377b4618992d05dba7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 02:12:09 2009 -0300 Renamed FileTransfer to FileTransferChannel. TelepathyQt4/FileTransfer | 13 ----- TelepathyQt4/FileTransferChannel | 13 +++++ TelepathyQt4/Makefile.am | 8 +-- TelepathyQt4/channel-factory.cpp | 4 +- TelepathyQt4/file-transfer-channel.cpp | 92 ++++++++++++++++++++++++++++++++++ TelepathyQt4/file-transfer-channel.h | 56 +++++++++++++++++++++ TelepathyQt4/file-transfer.cpp | 92 ---------------------------------- TelepathyQt4/file-transfer.h | 56 --------------------- TelepathyQt4/types.h | 4 +- 9 files changed, 169 insertions(+), 169 deletions(-) commit 6ec7fbf49385426f89bcab6a72c4f6f3f185f183 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 02:04:56 2009 -0300 Renamed RoomList to RoomListChannel. TelepathyQt4/Makefile.am | 8 ++-- TelepathyQt4/RoomList | 13 ------ TelepathyQt4/RoomListChannel | 13 ++++++ TelepathyQt4/channel-factory.cpp | 4 +- TelepathyQt4/pending-channel.cpp | 4 -- TelepathyQt4/room-list-channel.cpp | 91 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/room-list-channel.h | 56 +++++++++++++++++++++++ TelepathyQt4/room-list.cpp | 91 -------------------------------------- TelepathyQt4/room-list.h | 56 ----------------------- TelepathyQt4/types.h | 4 +- 10 files changed, 168 insertions(+), 172 deletions(-) commit b5eb4b3c8e74b0b25839e9659dbaa3e927ba158a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:46:15 2009 -0300 ContactManager: Removed contactGroups method in favor of Contact::groups(). TelepathyQt4/contact-manager.cpp | 19 ------------------- TelepathyQt4/contact-manager.h | 1 - 2 files changed, 20 deletions(-) commit a213a27e6db5685e2ff29e04e88788812d4e8088 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:45:48 2009 -0300 Contact: Added some docs. TelepathyQt4/contact.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit 7ad79f9954ec4da393306f5a1ad9df0a10615815 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:37:27 2009 -0300 roster-groups example: Added tests for contact list group removal. tests/dbus/conn-roster-groups.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit baccfe9e754e53d24024d82a107aeeec49e2d0ce Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:36:26 2009 -0300 ContactManager: Remove contact list group channel from internal list when group is removed. TelepathyQt4/contact-manager.cpp | 1 + 1 file changed, 1 insertion(+) commit a5a94d1c9c23dcfee0f7a65c66652ba07819547e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:31:16 2009 -0300 roster-groups example: Added tests for removing contacts from a contact list group. tests/dbus/conn-roster-groups.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) commit 979ff78a74bec16d8a0c08f9f51251a60ec60922 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:26:50 2009 -0300 roster-groups example: Added tests for adding contacts to a contact list group. tests/dbus/conn-roster-groups.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) commit c581d3303f4d49fbe076f7e0de1ace4fb339c635 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:13:46 2009 -0300 roster-groups example: Added tests for contact list group creation. tests/dbus/conn-roster-groups.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) commit b23858efb0ea5f62670342f4102303f76214a97f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jul 23 01:11:13 2009 -0300 ContactManager: Create empty contact list groups using CreateChannel instead of RequestHandles. TelepathyQt4/contact-manager.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 067fc084b451c04c197b62197901be18067f5c38 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 19:38:46 2009 -0300 roster-groups example: Added initial test cases for roster groups support. tests/dbus/Makefile.am | 5 + tests/dbus/conn-roster-groups.cpp | 204 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 209 insertions(+) commit 15097d730cf5e6cfac0bef0f5de34af9fbada222 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 19:37:44 2009 -0300 Merge 'contactlist' example CM from latest tp-glib. tests/lib/contactlist/conn.c | 9 ++++----- tests/lib/contactlist/contact-list-manager.c | 18 ++++++++---------- tests/lib/contactlist/contact-list.c | 5 ++++- 3 files changed, 16 insertions(+), 16 deletions(-) commit 90d0f4b64c3561b22a577af2a9f648f8751ec29f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 16:16:23 2009 -0300 Contact: Cache contact list groups. TelepathyQt4/contact-manager.cpp | 19 +++++-------------- TelepathyQt4/contact.cpp | 15 ++++++++++----- 2 files changed, 15 insertions(+), 19 deletions(-) commit ffc0fc412f0e545671220e370ac1e1abf0d82cab Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 16:08:54 2009 -0300 ContactManager: Added membersAdded/removed to groupMembersChanged signal. TelepathyQt4/contact-manager.cpp | 4 ++-- TelepathyQt4/contact-manager.h | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) commit 7bc0865c692591cee8de670cef3263dcbf47cdbc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 16:06:51 2009 -0300 ContactManager: Renamed groupChanged signal to groupMembersChanged. TelepathyQt4/contact-manager.cpp | 2 +- TelepathyQt4/contact-manager.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit c48f9e6f0872c90d9103b0d5b865259d502e2b0a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 16:03:54 2009 -0300 ContactManager: Update contacts when contact list group changes. TelepathyQt4/contact-manager.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 0b0974171f4b1598c4d3537080810f24ec00f26a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 16:01:57 2009 -0300 ContactManager: Added groupChanged signal. TelepathyQt4/contact-manager.cpp | 27 +++++++++++++++++++++++++++ TelepathyQt4/contact-manager.h | 7 +++++++ 2 files changed, 34 insertions(+) commit aa13ae102cc84579ecad19ea930c7e898caea6b0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 15:55:50 2009 -0300 ContactManager: Refactor common code for setting/adding contact list groups. TelepathyQt4/contact-manager.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) commit 36159173b7fa4359eefdea75e8abbe3c8a3c9a61 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 15:53:48 2009 -0300 ContactManager: Added Private::parent member. TelepathyQt4/contact-manager.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 6b9411d1de738ab31a00b000b17aac76b3ee170c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 15:49:18 2009 -0300 Contact: Added removedFromGroup signal. TelepathyQt4/contact.cpp | 5 +++++ TelepathyQt4/contact.h | 2 ++ 2 files changed, 7 insertions(+) commit d502906d83ebeaa4adee0873e77a3a112d6610f2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 15:48:34 2009 -0300 Contact: Added addedToGroup signal. TelepathyQt4/contact.cpp | 5 +++++ TelepathyQt4/contact.h | 4 ++++ 2 files changed, 9 insertions(+) commit cd89d66766abc0a268ecee4a387ee319ec459496 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 15:40:17 2009 -0300 ContactManager: Added some docs. TelepathyQt4/contact-manager.cpp | 75 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) commit fc45705cc12c3561e880fc29d3f6e3be16b9c52d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 15:40:06 2009 -0300 ContactManager: Fixed typo. TelepathyQt4/contact-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c8f5de2fbba05ed89d8773fd16573162682e99f2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 05:02:32 2009 -0300 Contact: Added groups method. TelepathyQt4/contact.cpp | 7 +++++++ TelepathyQt4/contact.h | 1 + 2 files changed, 8 insertions(+) commit 61df6c5bb4482e91a39c64251b4381cd83f4bc4c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 05:01:53 2009 -0300 ContactManager: Added contactGroups method. TelepathyQt4/contact-manager.cpp | 22 ++++++++++++++++++++++ TelepathyQt4/contact-manager.h | 1 + 2 files changed, 23 insertions(+) commit 2f2fc99ce343e9f7ab8ed5b7b6762ea6a53d7a6f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:52:55 2009 -0300 Contact: Added removeFromGroup support. TelepathyQt4/contact.cpp | 8 ++++++++ TelepathyQt4/contact.h | 1 + 2 files changed, 9 insertions(+) commit 5907815d3db0be0ff39e83adba37dca19af96da3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:51:53 2009 -0300 Contact: Added addToGroup method. TelepathyQt4/contact.cpp | 8 ++++++++ TelepathyQt4/contact.h | 2 ++ 2 files changed, 10 insertions(+) commit 61e463a9cb319d2672a6faabcc9b1bf1db19df07 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:43:30 2009 -0300 ContactManager: Added removeGroup method. TelepathyQt4/contact-manager.cpp | 11 +++++++++++ TelepathyQt4/contact-manager.h | 1 + 2 files changed, 12 insertions(+) commit ec438050ae8227ff397e622d956fe1516e2faece Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:39:32 2009 -0300 COntactManager: Added addGroup method. TelepathyQt4/contact-manager.cpp | 11 +++++++++++ TelepathyQt4/contact-manager.h | 2 ++ 2 files changed, 13 insertions(+) commit bc147a99943a3c01024a5feb861b2442effc992b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:30:51 2009 -0300 ContactManager: Added groupRemoveContacts method. TelepathyQt4/contact-manager.cpp | 12 ++++++++++++ TelepathyQt4/contact-manager.h | 2 ++ 2 files changed, 14 insertions(+) commit f8a49b53b4b19b07ae5a64192548695221631cac Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:28:52 2009 -0300 ContactManager: Added groupAddContacts method. TelepathyQt4/contact-manager.cpp | 12 ++++++++++++ TelepathyQt4/contact-manager.h | 2 ++ 2 files changed, 14 insertions(+) commit a709d85b2ec56d680d04e5d66b2906c4bb43c6ba Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:17:46 2009 -0300 ContactManager: Added groupRemoved signal. TelepathyQt4/contact-manager.cpp | 26 ++++++++++++++++++++++---- TelepathyQt4/contact-manager.h | 4 ++++ 2 files changed, 26 insertions(+), 4 deletions(-) commit b6bd35b5368d4f296604153f93f620809b75f92b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 04:07:32 2009 -0300 ContactManager: Added groupContacts method. TelepathyQt4/contact-manager.cpp | 10 ++++++++++ TelepathyQt4/contact-manager.h | 2 ++ 2 files changed, 12 insertions(+) commit 059c481a59b59632dcc502fbaabb3c8f9caedd30 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 03:57:44 2009 -0300 ContactManager: Added groupAdded signal. TelepathyQt4/contact-manager.cpp | 3 ++- TelepathyQt4/contact-manager.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) commit f5d6bd163f261a718f27401a1c989bc8d985015a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 03:53:18 2009 -0300 Connection: Added initial roster groups support. TelepathyQt4/connection.cpp | 102 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/connection.h | 4 ++ TelepathyQt4/contact-manager.cpp | 32 ++++++++++++ TelepathyQt4/contact-manager.h | 4 ++ 4 files changed, 142 insertions(+) commit 743c8b2d037e55118201b1a297e4111fcb614bf7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jul 22 03:14:17 2009 -0300 ContactManager: Follow name convention when dealing with contact lists channels. TelepathyQt4/connection.cpp | 2 +- TelepathyQt4/contact-manager.cpp | 2 +- TelepathyQt4/contact-manager.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 4a0f88b7c41883edb352a167034da22cd6ab7e6f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jul 21 14:02:36 2009 -0300 PendingOperation: Fixed debug when trying to finish a PendingOperation already finished. TelepathyQt4/pending-operation.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit cb6d8a6c408216003013defec8f7e749aaec6e98 Author: George Goldberg Date: Mon Jul 20 19:55:26 2009 +0100 Fix smcv review comments on Account::setAutomaticPresence() and Account::automaticPresence(). TelepathyQt4/account.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 86459043729824144c213917f1c9a6ea1fe440f6 Author: George Goldberg Date: Mon Jul 20 19:53:23 2009 +0100 Fix smcv review comments on Account::connection() api-docs. TelepathyQt4/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 267324d505a0f70b4f39b70531dc7efba156e647 Author: George Goldberg Date: Mon Jul 13 13:08:56 2009 +0100 API doc fixes for Account::setAutomaticPresence(). TelepathyQt4/account.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 57bb9835c1fcf6702219aabd4645ec9835e5083c Author: George Goldberg Date: Mon Jul 13 13:06:40 2009 +0100 API doc fixes for Account::automaticPresence(). TelepathyQt4/account.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit e695ca204cdfe1a5f144770303de653fff6156be Author: George Goldberg Date: Mon Jul 13 13:04:33 2009 +0100 grammar++ TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 38f3cf9f6940803da7830524ca919dbafbabeb62 Author: George Goldberg Date: Mon Jul 13 13:02:54 2009 +0100 API doc fixes for Account::connection(). TelepathyQt4/account.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 304e033caca90bceb47b2201f7bb846474adb83e Merge: 1e0ee6b b389789 Author: Olli Salli Date: Wed Jul 1 00:18:56 2009 +0300 Merge branch 'master' of dhansak:/srv/git.collabora.co.uk/git/telepathy-qt4 commit 1e0ee6b134e40a9ad22f8fddcbba426f184d61cd Author: Olli Salli Date: Wed Jul 1 00:16:29 2009 +0300 Correctly order constructors before the members in pimpl structs TelepathyQt4/channel.cpp | 6 +++--- TelepathyQt4/connection-manager.cpp | 16 ++++++++-------- TelepathyQt4/readiness-helper.cpp | 14 +++++++------- 3 files changed, 18 insertions(+), 18 deletions(-) commit 249a0eb6fef452275abaf8c399e3141931ec51dd Author: Olli Salli Date: Tue Jun 30 23:56:55 2009 +0300 Use a private implementation for ReadinessHelper::Introspectable TelepathyQt4/readiness-helper.cpp | 71 ++++++++++++++++++++++++++++++++++----- TelepathyQt4/readiness-helper.h | 31 ++++++----------- 2 files changed, 72 insertions(+), 30 deletions(-) commit b389789e70ee8b793ad7e168bffe0556bae2acbe Merge: 44ca148 7ee7879 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 17:43:53 2009 -0300 Merge branch 'manager-file' Reviewed-by: Olli Salli commit aadc4e229c5efa46f200058768c531f07b6223c3 Author: Olli Salli Date: Tue Jun 30 23:04:51 2009 +0300 Use fully private implementation in ProtocolInfo TelepathyQt4/connection-manager.cpp | 23 ++++++++++++++++------- TelepathyQt4/connection-manager.h | 6 ++---- 2 files changed, 18 insertions(+), 11 deletions(-) commit 5514377e713d91d45be6a57f4993b447317becef Author: Olli Salli Date: Tue Jun 30 22:51:21 2009 +0300 Use a private implementation in ProtocolParameter TelepathyQt4/connection-manager.cpp | 53 ++++++++++++++++++++++++++++++------- TelepathyQt4/connection-manager.h | 13 +++------ 2 files changed, 47 insertions(+), 19 deletions(-) commit 1475b1b06fbd6bf6baae7ae6722c008c2b37b924 Author: Olli Salli Date: Tue Jun 30 21:51:41 2009 +0300 Use a private implementation for Channel::GroupMemberChangeDetails TelepathyQt4/channel.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel.h | 41 ++++++++++++++++++++------------------ 2 files changed, 73 insertions(+), 19 deletions(-) commit 7ee78798ae6f18329f5693fc1985f5dcb0c761df Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 15:01:27 2009 -0300 manager-file test: Use a more descriptive name for invalid test manager files. tests/manager-file.cpp | 4 +- .../test-manager-file-invalid-signature.manager | 86 ++++++++++++++++++++++ .../managers/test-manager-file-invalid.manager | 4 - .../managers/test-manager-file-invalid2.manager | 86 ---------------------- .../test-manager-file-malformed-keyfile.manager | 4 + 5 files changed, 92 insertions(+), 92 deletions(-) commit cc135eabe32404b8f61886aee57d9c67d5d3f8f7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 14:45:26 2009 -0300 Fixed bug 20082: KeyFile: double (and other types?) not correctly tested. TelepathyQt4/manager-file.cpp | 13 +++- tests/manager-file.cpp | 3 + .../managers/test-manager-file-invalid2.manager | 86 ++++++++++++++++++++++ tests/telepathy/managers/test-manager-file.manager | 2 +- 4 files changed, 101 insertions(+), 3 deletions(-) commit dbf6e0ba2c23eb0b7c041df22759583dca2eaf75 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 14:22:28 2009 -0300 Fixed bug 20080: KeyFile: ";" as a list may be mis-parsed. Actually this was not a bug, just improving test coverage. tests/manager-file.cpp | 8 ++++++++ tests/telepathy/managers/test-manager-file.manager | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) commit 44ca14846974cf68fc06bd4430db2aff927f6ca9 Merge: 71460dc 12d6826 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 14:28:27 2009 -0300 Merge branch 'connection' Reviewed-by: Olli Salli commit 71460dc81dc2a4e1ddd27eccf1c435dcc63a43c8 Merge: 1b1dac4 bd97c2a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 14:27:36 2009 -0300 Merge branch 'client' Reviewed-by: Simon McVittie (smcv) commit bd97c2adb150afe0a9ff72c1213ad20279b87661 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 14:09:29 2009 -0300 client test: Use full-qualified name for properties when calling AddDispatchOperation. tests/dbus/client.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 12d682660f1d4d3606caf4a456a3a35e80d0ab29 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 30 14:07:12 2009 -0300 Fixed bug 20268: Connection's selfContact object should initially have no features. TelepathyQt4/connection.cpp | 5 +---- tests/dbus/contacts.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 5 deletions(-) commit 1b1dac433143db0e229d3bf93a48b1838100b87c Merge: 49d331a c630111 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 16:04:49 2009 -0300 Merge branch 'cdo' Author: Simon McVittie commit c630111a1399687da57d0ea6116850afc9d46c3a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 15:37:43 2009 -0300 ChannelDispatchOperation: Improved docs. TelepathyQt4/channel-dispatch-operation.cpp | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) commit f10f6159d7ba5d772e6620ba97e969190bcb64de Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 14:40:48 2009 -0300 ChannelDispatchOperation: Handle Finished signal. Emit invalidated with TELEPATHY_QT4_ERROR_OBJECT_REMOVED when ChannelDispatchOperation.Finished is received. TelepathyQt4/channel-dispatch-operation.cpp | 11 +++++++++++ TelepathyQt4/channel-dispatch-operation.h | 1 + TelepathyQt4/constants.h | 8 ++++++++ 3 files changed, 20 insertions(+) commit 49d331aa7d7ff94b03552efeb7f5fb4a1cca4a66 Merge: c70b926 b920ee3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 14:29:44 2009 -0300 Merge branch 'client-bugfix' Author: Simon McVittie commit c70b926f92a6035557fa9bb0d500937a1c5f0068 Merge: 0362c26 cd0ac8a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 14:26:52 2009 -0300 Merge branch 'standardization' Author: Simon McVittie commit cd0ac8a8660d2a2532dcf4abdd7b1fae247a8722 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:41:53 2009 -0300 Updated HACKING file. HACKING | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit ef8183837721c8225f4300a98008e564279fb759 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:36:33 2009 -0300 TextChannel: Added virtual dtor. TelepathyQt4/text-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d801af6fc4abd0ff2a35a474652f96133bcf899c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:36:21 2009 -0300 StreamedMediaChannel: Added virtual dtor. TelepathyQt4/streamed-media-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e02c5992fe58bd648d28919f0b90cab62a687a8d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:36:13 2009 -0300 RoomList: Added virtual dtor. TelepathyQt4/room-list.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 50c80b81bd438dd3952a01ad9223e76f41c841d3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:36:02 2009 -0300 FileTransfer: Added virtual dtor. TelepathyQt4/file-transfer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f884aa41fd3a50cb135cfca7f5531fe60b101f32 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:35:51 2009 -0300 Connection: Added virtual dtor. TelepathyQt4/connection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b359b0c9446f70d9677afad556a7da85e86f2205 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:35:43 2009 -0300 ConnectionManager: Added virtual dtor. TelepathyQt4/connection-manager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0f72b9a4c22aa69296509cb3e0c06fe635fc5d16 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:35:32 2009 -0300 Channel: Added virtual dtor. TelepathyQt4/channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e9d2f273f81abf660f42dab6018d36d596c5ae70 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:35:19 2009 -0300 ChannelRequest: Added virtual dtor. TelepathyQt4/channel-request.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1c15fdc09c1c982a2efe2db32f8698dd123f296e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 13:35:04 2009 -0300 ChannelDispatchOperation: Added virtual dtor. TelepathyQt4/channel-dispatch-operation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 09a071bdf8f27f1dd26711bac33eae3f94c4e807 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:39:00 2009 -0300 SimplePendingOperations: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/simple-pending-operations.h | 1 + 1 file changed, 1 insertion(+) commit d7839477e622d517354e3266cdcbd492c5470fb9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:38:42 2009 -0300 ReferencedHandles: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/referenced-handles.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1f0c89165b63dd53e0ec4b60fe918d4c5dc1ccfa Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:38:17 2009 -0300 ReadinessHelper: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/readiness-helper.h | 1 + 1 file changed, 1 insertion(+) commit 84c51414b16cac0279fa926253a4c5461c18d39a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:37:58 2009 -0300 PendingStringList: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-string-list.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 4f803b2f5996b9940cd8a2f843e3106d5aed0893 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:37:31 2009 -0300 PendingReady: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-ready.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c2bf92bf1bdeac399bbcb6a5538e5fd6a5e4c2f2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:37:04 2009 -0300 PendingOperation: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-operation.h | 1 + 1 file changed, 1 insertion(+) commit e16bf119796a095f98b3e32c426c14dd5b2bc1ed Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:36:54 2009 -0300 PendingContacts: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-contacts.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2b088609b0a7c19013d6de2cd9bd2884c0e1007d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:36:40 2009 -0300 PendingContactAttributes: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-contact-attributes.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit fd6e404b71d6b41a4bfdc0c42813a2bc7d98d0b1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:36:25 2009 -0300 PendingConnection: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-connection.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 5a9a4b55672ddf402fea035507bee943bdc72201 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:35:52 2009 -0300 PendingAccount: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/pending-account.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 02592e3a83ccdfb942839c7b7d8abf11f7f440b8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:35:36 2009 -0300 OptionalInterfaceFactory: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/optional-interface-factory.h | 3 +++ 1 file changed, 3 insertions(+) commit 331eac0c561f67386311fb5790938a903a0bfd84 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:34:41 2009 -0300 Message: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/message.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit a18cf503a4a10ea134abac7720d6a143300741d9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:34:27 2009 -0300 ManagerFile: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/manager-file.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 90a6a47ef081daf75976100f7e511f6430d7a9cc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:34:17 2009 -0300 KeyFile: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/key-file.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ed82eff0658a1d0b8ce8625205d76bdea699099a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:34:04 2009 -0300 DBusProxy: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/dbus-proxy.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 105b39302cfe18d4009e418f630c79a26d8f65c5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:33:51 2009 -0300 Contact: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/contact.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit f666f517a181983bb53e07540c72b30d3ea03d26 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:33:45 2009 -0300 ContactManager: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/contact-manager.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 2287cebd901bad4040e6d09f85f03e3b0196d556 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:33:29 2009 -0300 Connection: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/connection.h | 55 ++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) commit 2eacaea95b3e1098915b60f0824574553278ed1e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:33:19 2009 -0300 ConnectionManager: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/connection-manager.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 08942879025b199aad4e624cddd6d929dc3aa14e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:33:06 2009 -0300 Channel: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/channel.h | 58 ++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) commit 74468ae3523df407cb1474514b2c38c35a5738ac Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:21:32 2009 -0300 AccountManager: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/account-manager.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit bf3f8a4ce49cb665c6b09e326b4dc8682375457b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 12:18:05 2009 -0300 AbstractInterface: Standardize class definition. - Moved public xxxInterface methods definition to the end of the public methods declaration. - Added friend struct Private declaration. - Added Q_DISABLE_COPY(xxx) to all classes that can not be copied. - Moved Q_DISABLE_COPY(xxx) declaration to the top of the class definition, before the public keyword. - Reorder public, protected, SIGNALS declaration as follows: public public Q_SLOTS Q_SIGNALS protected protected Q_SLOTS private Q_SLOTS private - Moved friend class xxx definitions to be placed right bellow private keyword. TelepathyQt4/abstract-interface.h | 1 + 1 file changed, 1 insertion(+) commit b920ee3bbac534633c833eb463df06170fc16f10 Author: George Kiagiadakis Date: Mon Jun 29 11:02:51 2009 -0300 ClientApproverAdaptor: Use the dbus qualified name to get the connection property. Patch from George Kiagiadakis . Signed-off-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/client-registrar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0362c261c4e6661d7b63a7e7ebc6e72ca919211c Merge: b795c8a 521a3e3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 10:47:20 2009 -0300 Merge branch 'prototype-no-more' Reviewed-by: Simon McVittie (smcv) commit b795c8a7e806e4307aa8f726b5f5fba8000fd95a Merge: 433ff55 4053eac Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 10:45:38 2009 -0300 Merge branch 'optional-interface-factory' Reviewed-by: Simon McVittie (smcv) commit 433ff55894c36cdd137fadc50cc57434a47b6090 Merge: 66cbd19 ecd3a1c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 29 10:43:14 2009 -0300 Merge branch 'coding-style' Reviewed-by: Simon McVittie (smcv) commit 521a3e33dc73e1ad98fdf4d5fbe78c8c253aee5c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 22 01:40:53 2009 -0300 Removed Prototype library. TelepathyQt4/Makefile.am | 6 +- TelepathyQt4/Prototype/Account.cpp | 285 ----- TelepathyQt4/Prototype/Account.h | 173 --- TelepathyQt4/Prototype/AccountManager.cpp | 390 ------- TelepathyQt4/Prototype/AccountManager.h | 166 --- TelepathyQt4/Prototype/AvatarManager.cpp | 320 ------ TelepathyQt4/Prototype/AvatarManager.h | 174 --- TelepathyQt4/Prototype/CapabilitiesManager.cpp | 321 ------ TelepathyQt4/Prototype/CapabilitiesManager.h | 129 --- TelepathyQt4/Prototype/ChatChannel.cpp | 243 ---- TelepathyQt4/Prototype/ChatChannel.h | 119 -- TelepathyQt4/Prototype/Client/ChannelHandler | 6 - TelepathyQt4/Prototype/Client/StreamEngine | 6 - TelepathyQt4/Prototype/Connection.cpp | 439 ------- TelepathyQt4/Prototype/Connection.h | 256 ----- TelepathyQt4/Prototype/ConnectionFacade.cpp | 266 ----- TelepathyQt4/Prototype/ConnectionFacade.h | 143 --- TelepathyQt4/Prototype/Constants | 6 - TelepathyQt4/Prototype/Contact.cpp | 191 ---- TelepathyQt4/Prototype/Contact.h | 247 ---- TelepathyQt4/Prototype/ContactManager.cpp | 1145 ------------------- TelepathyQt4/Prototype/ContactManager.h | 351 ------ TelepathyQt4/Prototype/DBusInterface.cpp | 49 - TelepathyQt4/Prototype/DBusInterface.h | 51 - TelepathyQt4/Prototype/Makefile.am | 198 ---- TelepathyQt4/Prototype/PresenceManager.cpp | 623 ---------- TelepathyQt4/Prototype/PresenceManager.h | 151 --- TelepathyQt4/Prototype/Stream_Engine.xml | 44 - TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 855 -------------- TelepathyQt4/Prototype/StreamedMediaChannel.h | 436 ------- TelepathyQt4/Prototype/TpQt4Prototype.pc.in | 11 - TelepathyQt4/Prototype/Types | 6 - TelepathyQt4/Prototype/all.xml | 10 - TelepathyQt4/Prototype/channel-handler.xml | 9 - TelepathyQt4/Prototype/cli-channel-handler.cpp | 23 - TelepathyQt4/Prototype/cli-channel-handler.h | 27 - TelepathyQt4/Prototype/cli-stream-engine.cpp | 23 - TelepathyQt4/Prototype/cli-stream-engine.h | 27 - TelepathyQt4/Prototype/constants.h | 27 - TelepathyQt4/Prototype/stream-engine.xml | 9 - TelepathyQt4/Prototype/types.cpp | 22 - TelepathyQt4/Prototype/types.h | 27 - configure.ac | 7 - tests/Makefile.am | 3 +- tests/prototype/Makefile.am | 61 - tests/prototype/avatar.png | Bin 7657 -> 0 bytes tests/prototype/prototype.cpp | 1394 ----------------------- tests/prototype/prototype.h | 145 --- 48 files changed, 4 insertions(+), 9616 deletions(-) commit 4053eace392da07410bb050f675ed48fcf47674b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 22 01:23:11 2009 -0300 OptionalInterfaceFactory: Added optionalInterface method. Moved optionalInterface method to OptionalInterfaceFactory removing duplicated code. TelepathyQt4/account.h | 14 -------------- TelepathyQt4/channel-dispatch-operation.h | 13 ------------- TelepathyQt4/channel-request.h | 13 ------------- TelepathyQt4/channel.h | 13 ------------- TelepathyQt4/connection.h | 14 -------------- TelepathyQt4/optional-interface-factory.h | 14 ++++++++++++++ 6 files changed, 14 insertions(+), 67 deletions(-) commit 0aadfca5d399a1bd7f67dd8c910aa025e4275642 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 22 01:18:13 2009 -0300 OptionalInterfaceFactory: Moved InterfaceSupportedChecking enum to OptionalInterfaceFactory. Continue preparation for moving optionalInterface method to OptionalInterfaceFactory. TelepathyQt4/dbus-proxy.h | 7 ------- TelepathyQt4/optional-interface-factory.h | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) commit 69cd75a4dad05cd9ee443af0573f2f3d5da8f737 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 22 01:14:17 2009 -0300 OptionalInterfaceFactory: Added public interfaces and protected setInterfaces method. Moved interfaces method to OptionalInterfaceFactory so it does not need to be duplicated around every class. This is also a preparation for moving optionalInterface method to OptionalInterfaceFactory. TelepathyQt4/account-manager.cpp | 13 +----- TelepathyQt4/account-manager.h | 4 +- TelepathyQt4/account.cpp | 14 ++----- TelepathyQt4/account.h | 4 +- TelepathyQt4/channel-dispatch-operation.cpp | 8 +--- TelepathyQt4/channel-dispatch-operation.h | 4 +- TelepathyQt4/channel-request.cpp | 8 +--- TelepathyQt4/channel-request.h | 4 +- TelepathyQt4/channel.cpp | 65 ++++++++--------------------- TelepathyQt4/channel.h | 3 +- TelepathyQt4/connection-manager-internal.h | 1 - TelepathyQt4/connection-manager.cpp | 9 +--- TelepathyQt4/connection-manager.h | 4 +- TelepathyQt4/connection.cpp | 34 ++++----------- TelepathyQt4/connection.h | 4 +- TelepathyQt4/optional-interface-factory.cpp | 8 ++++ TelepathyQt4/optional-interface-factory.h | 14 ++++++- 17 files changed, 62 insertions(+), 139 deletions(-) commit ecd3a1cdb2f8c07a58d360404f3c95507f0ebc0c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 13:28:02 2009 -0300 KeyFile: Updated copyright. TelepathyQt4/key-file.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 4c34374192778dd4fb7599fd85069dc56b3154af Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:17:04 2009 -0300 KeyFile: Changed Q_FOREACH to foreach. TelepathyQt4/key-file.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 49b1fd6fafd13529af46e2a3067481e260c0219e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 13:27:52 2009 -0300 ManagerFile: Updated copyright. TelepathyQt4/manager-file.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 331c6635ecc194af2c6c4719101935a87d92a6e3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:16:48 2009 -0300 ManagerFile: Changed Q_FOREACH to foreach. TelepathyQt4/manager-file.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit e47a716bcabb078edb064cca31d29d2649e340b0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 13:04:46 2009 -0300 debug: Updated copyright. TelepathyQt4/debug.cpp | 4 ++-- TelepathyQt4/debug.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit a5941e8a216ca8f33c9553dbbfe5aab0fad2a314 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:42:44 2009 -0300 debug: Moved docs to source file. TelepathyQt4/debug.cpp | 39 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/debug.h | 36 ------------------------------------ 2 files changed, 39 insertions(+), 36 deletions(-) commit 1fa03cf710307f78bf8a468c8c8a8e7eda76dde2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:50:32 2009 -0300 PendingOperation: Updated copyright. TelepathyQt4/pending-operation.cpp | 4 ++-- TelepathyQt4/pending-operation.h | 4 ++-- TelepathyQt4/simple-pending-operations.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) commit 5a8d44a1d66926c7ba877383a702d4f0f0cfb32b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:49:53 2009 -0300 PendingOperation: Moved docs to source file. TelepathyQt4/pending-operation.cpp | 145 ++++++++++++++++++++++++++++++- TelepathyQt4/pending-operation.h | 103 ---------------------- TelepathyQt4/simple-pending-operations.h | 24 ----- 3 files changed, 144 insertions(+), 128 deletions(-) commit 9f7d132f4225c780575a991db1dfb0b429a33258 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:42:54 2009 -0300 PendingOperation: Fixed coding-style. TelepathyQt4/pending-operation.cpp | 82 +++++++++++++------------------- TelepathyQt4/pending-operation.h | 8 ++-- TelepathyQt4/simple-pending-operations.h | 10 ++-- 3 files changed, 41 insertions(+), 59 deletions(-) commit 73a33b10c7d4d01522cb31b09d18da4b604748e4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:28:22 2009 -0300 ReferencedHandles: Updated copyright. TelepathyQt4/referenced-handles.cpp | 4 ++-- TelepathyQt4/referenced-handles.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit be215fa7428da5c620e5b31e71f5761ec3ec2a11 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:26:22 2009 -0300 ReferencedHandles: Moved docs to source file. TelepathyQt4/referenced-handles.cpp | 38 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/referenced-handles.h | 37 ------------------------------------ 2 files changed, 38 insertions(+), 37 deletions(-) commit a9e188e39f4e8c540efb17fbe399f037423f928b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:14:57 2009 -0300 ReferencedHandles: Fixed coding-style. TelepathyQt4/referenced-handles.cpp | 79 ++++++---- TelepathyQt4/referenced-handles.h | 302 ++++++++++++++++++------------------ 2 files changed, 197 insertions(+), 184 deletions(-) commit 90b4d9d1e9d568d6cd5a5b49b95f85092c83481a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:24:12 2009 -0300 OptionalInterfaceFactory: Updated copyright. TelepathyQt4/optional-interface-factory.cpp | 4 ++-- TelepathyQt4/optional-interface-factory.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit b35e2450bb48b8d404730da094fb620079dbaa51 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:23:17 2009 -0300 OptionalInterfaceFactory: Move docs to source file. TelepathyQt4/optional-interface-factory.cpp | 76 +++++++++++++++++++++++++++++ TelepathyQt4/optional-interface-factory.h | 66 ------------------------- 2 files changed, 76 insertions(+), 66 deletions(-) commit 7a8424d9776563e3757908c41183da7e21f274f7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:14:10 2009 -0300 OptionalInterfaceFactory: Fixed coding-style. TelepathyQt4/optional-interface-factory.h | 156 +++++++++++++++--------------- 1 file changed, 78 insertions(+), 78 deletions(-) commit 1127652f4436bc1bfdc1e3a0756d4e52bdaba273 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:27:47 2009 -0300 ContactManager: Updated copyright. TelepathyQt4/contact-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 6af94694bed5fea9a897921c5a4233aa7c371d95 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 18 12:13:03 2009 -0300 ContactManager: Fixed coding-style. TelepathyQt4/contact-manager.h | 231 +++++++++++++++++++++-------------------- 1 file changed, 118 insertions(+), 113 deletions(-) commit 66cbd198e3af08a983f850248ec3cec7cf1591d3 Author: George Goldberg Date: Wed Jun 17 17:29:33 2009 +0100 Fix small error in apidocs example usage of AccountManager class. TelepathyQt4/account-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eff6552b38d786755bcc78dd46a32f65f3897329 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 16 13:23:14 2009 -0300 Prepare release 0.1.8 NEWS | 22 ++++++++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 22 insertions(+), 4 deletions(-) commit ee5a8402a71edacee264301fdf896c96d471d590 Author: George Kiagiadakis Date: Tue Jun 16 13:13:12 2009 -0300 ChannelDispatchOperation: Read Channels property instead of incorrectly reading ChannelDetailsList. Signed-off-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/channel-dispatch-operation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 91e65486c176f39518f8dd0afc5265044fac06a2 Merge: a58b1bf ec7ef94 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 16:04:15 2009 -0300 Merge branch 'account-channel-dispatcher' Reviewed-by: Simon McVittie (smcv) commit ec7ef9480ef605038b11281bcde16b1d69098306 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 12:32:53 2009 -0300 account-channel-dispatcher-test: Added automated test for Account Channel Dispatcher support. tests/dbus/Makefile.am | 5 + tests/dbus/account-channel-dispatcher.cpp | 474 ++++++++++++++++++++++++++++++ 2 files changed, 479 insertions(+) commit 831ea9893d5cd204381d4a87c201c525df530dd0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 12:31:59 2009 -0300 PendingChannelRequest: Make sure channelRequestCreated is emitted before finished. TelepathyQt4/pending-channel-request.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 8d3fd44b46891ea059f567a6e1acda60ae65a6c6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 12:31:47 2009 -0300 PendingChannelRequest: Added workaround to work with buggy Qt versions. TelepathyQt4/pending-channel-request.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) commit 1487225368c7f15745fec6a2da42984918780e28 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 12:30:46 2009 -0300 PendingChannelRequest: Fixed channelRequestCreated signature. TelepathyQt4/pending-channel-request.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 882e58107fd2a3dcd5b7fbe987b2e2aeae4330ce Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jun 12 12:30:15 2009 -0300 ChannelRequest: Emit succeeded/failed even if not ready. TelepathyQt4/channel-request.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 2086cbbc978c80410fef96f8f9b05e7fa1e6b887 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:18:34 2009 -0300 PendingChannelRequest: Use TELEPATHY_DBUS_ERROR_UNKNOWN_METHOD constant. TelepathyQt4/pending-channel-request.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 53a656fa6ba35c36ed7a2691d9ab09886fb07df5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:17:48 2009 -0300 Constants: Added TELEPATHY_DBUS_ERROR_UNKNOWN_METHOD constant. TelepathyQt4/constants.h | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 0d0113bcd0354a5bdd048a5fa7b234fe64770586 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:15:11 2009 -0300 PendingChannelRequest: Added comment on cancel method explaining why it fails if CR already finished. TelepathyQt4/pending-channel-request.cpp | 1 + 1 file changed, 1 insertion(+) commit f6a5376911bcfcc06c13cc2aa09b6bdb86f64d75 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:13:01 2009 -0300 PendingChannelRequest: Renamed PendingChannelRequestCancelOperation proceed method to go. TelepathyQt4/pending-channel-request-internal.h | 2 +- TelepathyQt4/pending-channel-request.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 0bee49434d06eaf4ed8f0d622b77bdf1d92b3a9b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:12:13 2009 -0300 PendingChannelRequest: Fixed assert condition. TelepathyQt4/pending-channel-request-internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 836e23d151f81fb69e3d7cd767932007b0e3ea5a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:05:54 2009 -0300 PendingChannelRequest: Use setFinished/setFinishedWithError slots. TelepathyQt4/pending-channel-request.cpp | 15 ++------------- TelepathyQt4/pending-channel-request.h | 3 --- 2 files changed, 2 insertions(+), 16 deletions(-) commit c49cb6d026c930bdd1677725043664ee0cbfaf3d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:05:02 2009 -0300 PendingChannelRequest: Finish with error immediatelly after retrieved CR if cancel was called previously. TelepathyQt4/pending-channel-request.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) commit 5ebaa82e2dd26ea7cdf88946b8badae3d2bcc2cd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:01:53 2009 -0300 Account: Update documentation. TelepathyQt4/account.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit d367fab6a3d2d6a552021cc0e04068f0da4d0386 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 14:00:08 2009 -0300 PendingOperation: Changed setFinished, setFinishedWithError to be slots. TelepathyQt4/pending-operation.h | 1 + 1 file changed, 1 insertion(+) commit aece01996bdee7aabba07d261ffa7e2108b3d23e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 13:45:56 2009 -0300 Account: Update documentation. TelepathyQt4/account.cpp | 16 ---------------- 1 file changed, 16 deletions(-) commit a5bff952604a0a6b3b9aabb0b9f386e0a697862b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 13:45:02 2009 -0300 PendingChannelRequest: Make PendingChannelRequest only fininsh when ChannelRequest succeed or fail. TelepathyQt4/pending-channel-request-internal.h | 20 +++--- TelepathyQt4/pending-channel-request.cpp | 87 +++++++++++++------------ TelepathyQt4/pending-channel-request.h | 10 ++- 3 files changed, 64 insertions(+), 53 deletions(-) commit 0708499d01397893311b98a9344bc06960050f68 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 12:47:22 2009 -0300 Account: Added documentation to ChannelDispatcher methods. TelepathyQt4/account.cpp | 135 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) commit 3c4600ed433b46eb07fb54882c4b9f177762c355 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 12:18:30 2009 -0300 Account: Added ChannelDispatcher support. TelepathyQt4/account.cpp | 101 +++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 34 ++++++++++++++++ 2 files changed, 135 insertions(+) commit 7b5b4ed5b268d7a68149dca9d08b5f078788219a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 12:32:46 2009 -0300 PendingChannelRequest: Call ChannelRequest::proceed if we are done and not cancelled. TelepathyQt4/pending-channel-request.cpp | 22 +++++++++++++++++++++- TelepathyQt4/pending-channel-request.h | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) commit ff84412166ee47f1acd414c1df7d0331b166bfa1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 12:32:26 2009 -0300 ChannelRequest: Added a private proceed method that should be used by PendingChannelRequest. TelepathyQt4/channel-request.cpp | 5 +++++ TelepathyQt4/channel-request.h | 4 ++++ 2 files changed, 9 insertions(+) commit b971ac1f604abae27e2d0f239bbca79595d41508 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 11:50:27 2009 -0300 PendingChannelRequest: Added helper cancel method. TelepathyQt4/Makefile.am | 2 + TelepathyQt4/pending-channel-request-internal.h | 68 +++++++++++++++++++++++++ TelepathyQt4/pending-channel-request.cpp | 20 ++++++++ TelepathyQt4/pending-channel-request.h | 2 + 4 files changed, 92 insertions(+) commit 95fd448ede886d9c17d9d1219ff72005ed7a814c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 11:27:25 2009 -0300 PendingChannelRequest: Added initial PendingChannelRequest class. TelepathyQt4/Makefile.am | 4 + TelepathyQt4/PendingChannelRequest | 13 +++ TelepathyQt4/pending-channel-request.cpp | 181 +++++++++++++++++++++++++++++++ TelepathyQt4/pending-channel-request.h | 75 +++++++++++++ 4 files changed, 273 insertions(+) commit e9bf7d128203fe5689ba71ba413e27cb88c7a27e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jun 11 10:55:40 2009 -0300 Added auto generated classes for ChannelDispatcher interface. TelepathyQt4/ChannelDispatcher | 13 +++++++++++++ TelepathyQt4/ChannelDispatcherInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 12 ++++++++++++ TelepathyQt4/channel-dispatcher.cpp | 25 +++++++++++++++++++++++++ TelepathyQt4/channel-dispatcher.h | 31 +++++++++++++++++++++++++++++++ TelepathyQt4/channel-dispatcher.xml | 9 +++++++++ TelepathyQt4/stable-interfaces.xml | 1 + 7 files changed, 104 insertions(+) commit a58b1bf5467d38981acc0135fe6d408752e21d4a Merge: a563e73 5f88729 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 10 14:52:10 2009 -0300 Merge branch 'telepathy-spec-0.17.26' Reviewed-by: Simon McVittie (smcv) commit 5f887290e8f8b4719b362e161d4d3f728a0f07c1 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 10 14:05:38 2009 -0300 Import telepathy-spec 0.17.26 spec/Channel_Dispatch_Operation.xml | 8 ++++---- spec/Channel_Dispatcher.xml | 4 ++-- spec/Channel_Dispatcher_Interface_Operation_List.xml | 8 ++++---- spec/Channel_Request.xml | 4 ++-- spec/Client.xml | 9 ++++----- spec/Client_Approver.xml | 9 ++++----- spec/Client_Handler.xml | 9 ++++----- spec/Client_Interface_Requests.xml | 6 ++---- spec/Client_Observer.xml | 11 +++++------ spec/all.xml | 8 ++++---- 10 files changed, 35 insertions(+), 41 deletions(-) commit a563e738b721b0fd4ef5d8acd8f87ffcdc4c81a9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 10:05:07 2009 -0300 Start 0.1.8 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 68983e826c7940ecc8cfc90754e51372c90f5158 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 09:21:01 2009 -0300 Prepare release 0.1.7 NEWS | 16 ++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) commit 4c3be38690169d5d7bf28826a4a98643712cbdc3 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 09:45:37 2009 -0300 text-chan test: Wait untill messages have been received. TextChannel now becomes ready even if message queue is empty, so let's wait until messages have been received. tests/dbus/text-chan.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 9803918ee9b37567bf08c041ab3e090659940ae4 Merge: 2d78a1f 06e466f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 09:03:49 2009 -0300 Merge branch 'client-approver' Reviewed-by: Simon McVittie (smcv) commit 2d78a1fbf06d0351623fae17ddb5e1a0e7aa01b9 Merge: ebb19fb cd2bfe8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 09:03:36 2009 -0300 Merge branch 'client-observer' Reviewed-by: Simon McVittie (smcv) commit ebb19fb01a1b91769f928efa41edc4512ec935be Merge: f7a3c74 86c3cae Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 09:03:25 2009 -0300 Merge branch 'channel-dispatch-operation' Reviewed-by: Simon McVittie (smcv) commit f7a3c7465cde557cbcf31df79724cec2d5ab2ba5 Merge: 67a3b9e 2cb1fb9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jun 3 09:03:12 2009 -0300 Merge branch 'channel-request' Reviewed-by: Simon McVittie (smcv) commit 06e466f0d061c337856b6701939b4918b663e6f4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 2 02:28:13 2009 -0300 client test: Added test for Client.Approver.addDispatchOperation. tests/dbus/client.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) commit 227536ebfb243c71e7222535d48400a2ce7bb268 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 2 02:35:39 2009 -0300 ClientRegistrar: Use ChannelDispatchOperation high-level class on AbstractClientApprover. TelepathyQt4/abstract-client.h | 3 +-- TelepathyQt4/client-registrar.cpp | 8 +++++++- tests/dbus/client.cpp | 9 +++++---- 3 files changed, 13 insertions(+), 7 deletions(-) commit 242c0e2f194158c0a6c0634431886a2e3cf9e5c6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 25 11:59:52 2009 -0300 ClientRegistrar: Added initial Approver support. TelepathyQt4/abstract-client.h | 5 +++- TelepathyQt4/client-registrar-internal.h | 41 ++++++++++++++++++++++++++ TelepathyQt4/client-registrar.cpp | 49 +++++++++++++++++++++++++++++++- 3 files changed, 93 insertions(+), 2 deletions(-) commit b37a051e743253fce70275d73afa2c784ca332b0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 25 11:59:03 2009 -0300 Added auto generated classes for Client.Approver interface. TelepathyQt4/ClientApproverInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 1 + TelepathyQt4/client.xml | 1 + 3 files changed, 15 insertions(+) commit cd2bfe8cbcbafb7386726ada16ea2467256c4a6e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 2 02:36:03 2009 -0300 ClientRegistrar: Use ChannelDispatchOperation high-level class on AbstractClientObserver. TelepathyQt4/abstract-client.h | 2 +- TelepathyQt4/client-registrar.cpp | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) commit 86c3caeba6e10dcbc54300c003bd55475b69e206 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 2 02:45:44 2009 -0300 ChannelDispatchOperation: Let's not crash on buggy CD. TelepathyQt4/channel-dispatch-operation.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) commit 2cb1fb9ec184d291c5ec6d991ee1b23e525e2fa4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 2 01:41:46 2009 -0300 ChannelRequest: Do not call account->becomeReady for account received on immutableProperties. TelepathyQt4/channel-request.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) commit 9c2e6352378151492abeef462542dfd3da0d6fd8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jun 1 14:43:08 2009 -0300 ChannelDispatchOperation: Added ChannelDispatchOperation high-level class. TelepathyQt4/ChannelDispatchOperation | 13 + TelepathyQt4/ChannelDispatchOperationInterface | 13 + TelepathyQt4/Makefile.am | 13 + TelepathyQt4/channel-dispatch-operation.cpp | 374 +++++++++++++++++++++++++ TelepathyQt4/channel-dispatch-operation.h | 126 +++++++++ TelepathyQt4/channel-dispatch-operation.xml | 9 + TelepathyQt4/stable-interfaces.xml | 1 + TelepathyQt4/types.h | 2 + 8 files changed, 551 insertions(+) commit 982dbbfcab69462cd61938603315aa319d736f15 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jun 2 01:40:42 2009 -0300 ChannelRequest: Use only one constructor that receives the QDBusConnection object. TelepathyQt4/channel-request.cpp | 16 ++-------------- TelepathyQt4/channel-request.h | 2 -- 2 files changed, 2 insertions(+), 16 deletions(-) commit 67a3b9e296620fa421efda929643f856c9de4b31 Merge: bac7776 8345ef8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 29 10:46:31 2009 -0300 Merge branch 'channel-bugfix' Reviewed-by: Simon McVittie (smcv) commit 8345ef8e6512f646842eab0d2726b3c36759ec0a Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 29 10:11:55 2009 -0300 Fixed bug 21993: TextChannel does not become ready until first message is received if FeatureMessageQueue is enabled TelepathyQt4/text-channel.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit d907f5288b0e858b67fdb54f71df73f4ec3d09b9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 29 10:05:45 2009 -0300 TextChannel: Proper check for FeatureMessageCapabilities when trying to update capabilities. TelepathyQt4/text-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 762ae3a59f008f7bf0890923b72797cff2377d0d Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 28 18:47:02 2009 -0300 Channel: Make sure connection is ready before start introspection. Make sure connection is ready before start introspection, as we need the Connection object to be ready in order to access some of its methods (e.g. Connection::selfHandle()), TelepathyQt4/channel.cpp | 29 +++++++++++++++++++++++------ TelepathyQt4/channel.h | 1 + 2 files changed, 24 insertions(+), 6 deletions(-) commit 84b2b9c22e3f4ba805dd96b57935e1479bcab602 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 28 18:14:14 2009 -0300 Channel: Use Connection::selfHandle while trying to fake a group interface instead of Connection::selfContact. Use Connection::selfHandle while trying to fake a group interface instead of Connection::selfContact, this allows us to work even on connections where FeatureSelfContact was not requested. TelepathyQt4/channel.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit bac777625b35f63db365711ab6abcce8462cacde Author: George Kiagiadakis Date: Thu May 28 12:05:53 2009 -0300 Export stl compatibility methods only if QT_NO_STL is not defined. Signed-off-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/referenced-handles.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit e585476390c72b2f757b0779f527cbf8630dcc56 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 28 11:59:05 2009 -0300 Start 0.1.7 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 5f51ee0b7307b4885c5fdd3ec125662e45e13428 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 28 11:07:37 2009 -0300 Prepare release 0.1.6 NEWS | 20 ++++++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 20 insertions(+), 4 deletions(-) commit db30d8ab7e008f911f971f23d476cc229df6ce06 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 26 09:07:39 2009 -0300 Proper define AbstractClientPtr. TelepathyQt4/types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b1b8b5abad567d3cd8e73049c022ca25027d3a92 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 25 10:17:39 2009 -0300 ClientRegistrar: Fixed Observer adaptor introspection data. TelepathyQt4/client-registrar-internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f692352ee839d482b57cade5bea3316815301fe7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 27 11:38:16 2009 -0300 ClientRegistrar: Use ChannelFactory to create Channels. Use ChannelFactory to create channels so we create custom Channel objects for known channel types. TelepathyQt4/client-registrar.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit dabd090bc4787ece637df529c6e706ce701d9830 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 28 10:43:06 2009 -0300 ChannelFactory: Use TELEPATHY_INTERFACE_CHANNEL_TYPE_FILE_TRANSFER definition. TelepathyQt4/channel-factory.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 38a46bcef8726a433b1a34959bdb61d9195e720b Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 28 10:40:49 2009 -0300 Channel: Make sure immutableProperties contains known properties if channel is ready. TelepathyQt4/channel.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) commit d6875fb5a94bc74bc05846595c2b12270afbb28e Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 27 11:40:31 2009 -0300 PendingChannel: Use ChannelFactory to create channels. TelepathyQt4/pending-channel.cpp | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) commit 84fc7379fea070b00e4f68b234190f94b12bc617 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 27 11:36:45 2009 -0300 Added ChannelFactory, internal class to create channels based on their types. TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/channel-factory.cpp | 67 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-factory.h | 42 +++++++++++++++++++++++++ 3 files changed, 111 insertions(+) commit 560cce40a8b0806185ec1ada65b7517157ea347d Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 27 11:51:25 2009 -0300 Channel: Added immutableProperties public method. TelepathyQt4/channel.cpp | 27 ++++++++++++++++++++++++--- TelepathyQt4/channel.h | 2 ++ 2 files changed, 26 insertions(+), 3 deletions(-) commit e41a32cf76c79b44e94005611cfacc4c2aa6ad20 Author: Simon McVittie Date: Wed May 27 17:17:52 2009 +0100 Import telepathy-spec 0.17.25, plus a patch to errors.xml to correct error naming Reviewed-by: Andre Moreira Magalhaes (andrunko) spec/Channel_Interface_Tube.xml | 198 +++++++++++++++++++++++++++++--------- spec/Channel_Type_DBus_Tube.xml | 54 ++++++++--- spec/Channel_Type_Stream_Tube.xml | 136 +++++++++++++++++++++----- spec/Channel_Type_Tubes.xml | 94 ++---------------- spec/Properties_Interface.xml | 2 +- spec/all.xml | 2 +- spec/errors.xml | 18 ++++ 7 files changed, 333 insertions(+), 171 deletions(-) commit ebb58d30c2fac9c2d83100fdf163bb1d95c059e1 Merge: 612996a 6b4957c Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 20 14:29:52 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 6b4957c212a3827e12e5bf61582844dc496aed18 Author: Andre Moreira Magalhaes Date: Wed May 20 13:58:16 2009 -0300 Conditional build test-client only if python is found. test-client depends on account-manager.py that depends on python. tests/dbus/Makefile.am | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) commit b76ed4810396cf749f2c2b411e833a88b738630c Author: Andre Moreira Magalhaes Date: Wed May 20 13:50:14 2009 -0300 streamed-media-chan test: Fixed race condition. tests/dbus/streamed-media-chan.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 612996a0699998163ed6abeb8f267bf3f60d3c9b Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 11:39:39 2009 -0300 Start 0.1.6 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 4bcbc342e7ca5989ce00771f46c712b78c7ca9a4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 11:37:47 2009 -0300 Prepare release 0.1.5 NEWS | 16 ++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) commit 4c453f0aed8f755f197e340c1c79bad56263cff9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 12:07:59 2009 -0300 AbstractClient: Remove moc include. TelepathyQt4/abstract-client.cpp | 2 -- 1 file changed, 2 deletions(-) commit c5bc3f88ac18e96043e99225e9c619de58ccbe5e Merge: 4910b6b 739a549 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 10:38:24 2009 -0300 Merge branch 'client' Reviewed-by: Simon McVittie (smcv) commit 4910b6b49fdd3ef9aed78ebf373f2bc479b78b02 Merge: 5e47de8 0ff745e Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 10:37:59 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 739a549426f17ff11c449f17cce3d71e19df0aa5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 10:35:10 2009 -0300 PendingOperation: Make dtor virtual just for the sake of completeness. TelepathyQt4/pending-operation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 43498e207feda77e6db61bd43b684b7c61ec211f Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 10:30:33 2009 -0300 ClientRegistrar: Unite the create methods and use a default bus parameter. TelepathyQt4/client-registrar.cpp | 18 +----------------- TelepathyQt4/client-registrar.h | 4 ++-- 2 files changed, 3 insertions(+), 19 deletions(-) commit 3518effa9a48a1f3f238c8f1d3561d10fbf82b1c Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 10:20:20 2009 -0300 ClientRegistrar: Use hex instead of decimal to format Client unique bus name. TelepathyQt4/client-registrar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b49c3655b72947b417c936a2ae859729fc4874a0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 10:00:39 2009 -0300 ClientRegistrar: Improved registerClient method docs. TelepathyQt4/client-registrar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 32086bfa127211e7f04f62feda4771c2950c1b88 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 19 09:59:01 2009 -0300 ChannelRequest: Remove commented out code. TelepathyQt4/channel-request.cpp | 1 - 1 file changed, 1 deletion(-) commit b6b189bca1377341c54add5787440993d4e39ed1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 18 09:58:37 2009 -0300 ClientRegistrar: Fixed comments. TelepathyQt4/client-registrar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e14ae0a187d0b54da57227f2521548a34da7a824 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 14:50:29 2009 -0300 Added client.xml to Makefile.am. TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 8c26060d417a68ca65affb73edb5828bd056dea0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 12:06:08 2009 -0300 client test: Added test for Client.Observer.ObserveChannels. TelepathyQt4/client-registrar.cpp | 33 +++++++++++++++++++++ tests/dbus/client.cpp | 60 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) commit 4b8dc2bc2a1c50c3ef038e246b88d8ca6201e81a Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:45:02 2009 -0300 client test: Added initial observer support. tests/dbus/client.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) commit 91462e2ef0ccbf7169e90adbfe2abc67752f2d28 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:36:51 2009 -0300 Renamed test-client-handler to test-client. Use the same test to test client, so we can test multiple inheritance. tests/dbus/Makefile.am | 8 +- tests/dbus/client-handler.cpp | 562 ------------------------------------------ tests/dbus/client.cpp | 562 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 566 insertions(+), 566 deletions(-) commit f75daebb521ef4c746d4ef2b7995903b3be36cc2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:29:37 2009 -0300 ClientRegistrar: Added observer registration support. TelepathyQt4/client-registrar.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit f7d27f61f8c635a41752e7cd4f5b1aed56d45bcb Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:22:21 2009 -0300 ClientRegistrar: Generate interfaces for Client.Observer and added ClientObserverInterface fancy header. TelepathyQt4/ClientObserverInterface | 13 +++++++++++++ TelepathyQt4/Makefile.am | 1 + TelepathyQt4/client.xml | 1 + 3 files changed, 15 insertions(+) commit 0eae22db9b9c33b0847ec2b2d50ef881883b2ad9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:21:23 2009 -0300 ClientRegistrar: Added AbstractClientApprover, AbstractClientObserver fancy headers. TelepathyQt4/AbstractClientApprover | 13 +++++++++++++ TelepathyQt4/AbstractClientObserver | 13 +++++++++++++ TelepathyQt4/Makefile.am | 2 ++ 3 files changed, 28 insertions(+) commit 7087ea2a3ef9bfd885378056dcdefa2de3a0d006 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:14:30 2009 -0300 ClientRegistrar: Added ClientObserverAdaptor skeleton class. TelepathyQt4/client-registrar-internal.h | 47 ++++++++++++++++++++++++++++++++ TelepathyQt4/client-registrar.cpp | 23 ++++++++++++++++ 2 files changed, 70 insertions(+) commit 1bc309e2dd276b66d87786e517d09b2672c13f67 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 11:03:24 2009 -0300 ClientRegistrar: Added AbstractClientObserver::observeChannels method. TelepathyQt4/abstract-client.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 3fdb0a001828552466a233ce07efa99e82e0a730 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 15 10:56:26 2009 -0300 ClientRegistrar: Changed Observer/Approver/Handler channelFilter method to avoid conflicts when using multiple inheritance. TelepathyQt4/abstract-client.cpp | 12 +++++++++++- TelepathyQt4/abstract-client.h | 6 +++--- TelepathyQt4/client-registrar-internal.h | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) commit c97efe8062c8983fd3493de8110c57531e7122fe Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 14 17:24:17 2009 -0300 MethodInvocationContext: Use qdbus_cast instead of qvariant_cast. TelepathyQt4/method-invocation-context.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a59b6741f5c8f644ac4757a2cae5ff74305d9cc8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 14 17:22:09 2009 -0300 PendingOperation: No need for virtual methods. TelepathyQt4/pending-operation.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit dbe50f70bc0c603eb7f6865cded29972310dac39 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 14 17:19:36 2009 -0300 Removed PendingClientOperation class. TelepathyQt4/Makefile.am | 4 -- TelepathyQt4/PendingClientOperation | 13 ------ TelepathyQt4/pending-client-operation.cpp | 78 ------------------------------- TelepathyQt4/pending-client-operation.h | 63 ------------------------- 4 files changed, 158 deletions(-) commit 38671639ae0f539c90389c21bcefd6a1ee1eac99 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 14 17:19:29 2009 -0300 ClientRegistrar: Use MethodInvocationContext instead of PendingClientOperation. TelepathyQt4/abstract-client.h | 4 +- TelepathyQt4/client-registrar-internal.h | 6 +-- TelepathyQt4/client-registrar.cpp | 74 ++++++++++++++++++++++++-------- tests/dbus/client-handler.cpp | 10 ++--- 4 files changed, 64 insertions(+), 30 deletions(-) commit 44d489afedc58aafac3a75f6bb9817b002f7a18f Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 14 17:13:03 2009 -0300 MethodInvocationContext: Added class. MethodInvocationContext is a class used to represent a context of a D-Bus method call. It's main use is to handle async replies, where when the reply is known, the methos MethodInvocationContext::setFinished/WithError should be called, which will send the reply over D-Bus. It's a template class to avoid replying with unknown/wrong types. It accepts all types known by Qt MetaType System. TelepathyQt4/Makefile.am | 2 + TelepathyQt4/MethodInvocationContext | 13 +++ TelepathyQt4/method-invocation-context.h | 184 +++++++++++++++++++++++++++++++ TelepathyQt4/types.h | 17 +++ 4 files changed, 216 insertions(+) commit 0ff745eac5c555e0ac950915d644fe1bbeec880f Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 12 16:57:31 2009 -0300 AccountManager: Fixed docs. TelepathyQt4/account-manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ea0e60a726ef4ba2853112a499c65cf3c1143078 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 12 16:56:55 2009 -0300 ClientRegistrar: No need for virtual destructor. TelepathyQt4/client-registrar.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 164ed3229e4166646724bffcd00559e28952f8ca Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 23:50:34 2009 -0300 ClientRegistrar: Added docs. TelepathyQt4/client-registrar.cpp | 130 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) commit 8dd5dce35c3727a0615c0c6d2e209a69cc1e200d Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 18:12:17 2009 -0300 Reference bug number on QDateTime 64-bit time_t usage. TelepathyQt4/channel-request.cpp | 4 +--- TelepathyQt4/client-registrar.cpp | 4 +--- TelepathyQt4/message.cpp | 8 ++------ 3 files changed, 4 insertions(+), 12 deletions(-) commit a4caa0fdd19451ab8b60469f0d814b5a813d434f Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 17:51:36 2009 -0300 ClientRegistrar: Do not pass ready objects to AddRequest/HandleChannels to avoid wrong method call order. TelepathyQt4/client-registrar-internal.h | 96 +---------- TelepathyQt4/client-registrar.cpp | 277 ++++++------------------------- 2 files changed, 52 insertions(+), 321 deletions(-) commit b6bd79090549717fd12dd3af48c8e09198b5a96e Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 18:02:57 2009 -0300 ClientRegistrar: Added stub AbstractClientObserver/Approver. TelepathyQt4/abstract-client.cpp | 34 ++++++++++++++++++++++++++++++++++ TelepathyQt4/abstract-client.h | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) commit 4c49abc5595dac4c9de4ffe24627a014ab08e840 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 22:55:46 2009 -0300 Reanemed ClientHandler module to Client. The client module will contain all client interfaces (Observer, Approver, Handler). TelepathyQt4/Client | 13 +++++++++++ TelepathyQt4/ClientHandler | 13 ----------- TelepathyQt4/ClientHandlerInterface | 2 +- TelepathyQt4/ClientInterface | 13 +++++++++++ TelepathyQt4/ClientInterfaceRequestsInterface | 2 +- TelepathyQt4/Makefile.am | 23 ++++++++++---------- TelepathyQt4/client-handler.cpp | 25 --------------------- TelepathyQt4/client-handler.h | 31 --------------------------- TelepathyQt4/client-handler.xml | 11 ---------- TelepathyQt4/client.cpp | 25 +++++++++++++++++++++ TelepathyQt4/client.h | 31 +++++++++++++++++++++++++++ TelepathyQt4/client.xml | 12 +++++++++++ TelepathyQt4/stable-interfaces.xml | 2 +- 13 files changed, 109 insertions(+), 94 deletions(-) commit 2a59fe072a0be32eda6b9e8372edbedbc9f54cfc Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 22:56:56 2009 -0300 ChannelRequest: Fixed channel-request.xml title tag. TelepathyQt4/channel-request.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8afc2bdf8eaddaa24e103d8e6695f0e7912021c3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 17:29:04 2009 -0300 ChannelRequest: Use immutableProperties and do not warn when trying to access properties and not ready. TelepathyQt4/channel-request.cpp | 74 +++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 43 deletions(-) commit ba6d499427e64c709abee9663304dfd53c1dc010 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 17:15:44 2009 -0300 ChannelRequest: Proper wording on warnings. TelepathyQt4/channel-request.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 41bba61a5e6f49a2a52afe0cb9264aae3deda66b Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 17:14:23 2009 -0300 ChannelRequest: cancel does not check for isReady anymore. Let it fail if the proxy is invalid. TelepathyQt4/channel-request.cpp | 5 ----- 1 file changed, 5 deletions(-) commit 6b1609d0ef49a87f8fdc05e1247cfac8295fb95b Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 17:07:59 2009 -0300 ClientRegistrar: Make sure the list of registrars and adaptors is proper keyed per connection. TelepathyQt4/client-registrar-internal.h | 7 ++++--- TelepathyQt4/client-registrar.cpp | 23 ++++++++++++++--------- TelepathyQt4/client-registrar.h | 2 +- 3 files changed, 19 insertions(+), 13 deletions(-) commit 2070245b62973557219ce8d8373e4417d22d0aaf Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 16:13:02 2009 -0300 ChannelRequest: Explain that the FIXME is actually a Qt bug. TelepathyQt4/channel-request.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit c907e978e4de4ce8921e40f89ea57d9f624954b2 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 16:06:50 2009 -0300 ClientRegister: Change registerClient to receive the clientName and remove it from constructor. Allow the same registrar (unique per dbus connection) to register clients with different names. TelepathyQt4/client-registrar.cpp | 32 +++++++++++--------------------- TelepathyQt4/client-registrar.h | 11 +++++------ tests/dbus/client-handler.cpp | 12 ++++++------ 3 files changed, 22 insertions(+), 33 deletions(-) commit c727020b3bd88528624d8cd8b49444aa6b17cd1d Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 16:01:17 2009 -0300 ClientRegistrar: Removed ClientObject. Use AbstractClient to registerClients. TelepathyQt4/ClientObject | 13 --------- TelepathyQt4/Makefile.am | 3 -- TelepathyQt4/client-object.cpp | 58 --------------------------------------- TelepathyQt4/client-object.h | 57 -------------------------------------- TelepathyQt4/client-registrar.cpp | 55 ++++++++++++++----------------------- TelepathyQt4/client-registrar.h | 6 ++-- tests/dbus/client-handler.cpp | 24 ++++++++-------- 7 files changed, 35 insertions(+), 181 deletions(-) commit 68eab70f8324e474ce2f0fe3645fc8393ffb79f5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon May 11 15:17:52 2009 -0300 ClientRegistrar: Added AbstractClient the base class for all Clients. TelepathyQt4/abstract-client.cpp | 8 ++++++++ TelepathyQt4/abstract-client.h | 11 ++++++++++- TelepathyQt4/client-object.cpp | 16 ++++++++-------- TelepathyQt4/client-object.h | 6 +++--- TelepathyQt4/client-registrar-internal.h | 16 ++++++++-------- TelepathyQt4/client-registrar.cpp | 11 ++++++----- TelepathyQt4/types.h | 2 +- tests/dbus/client-handler.cpp | 10 +++++----- 8 files changed, 49 insertions(+), 31 deletions(-) commit 5e47de8959e731058e1d63a24ec791c9a4c45c39 Author: Simon McVittie Date: Fri May 8 15:50:05 2009 +0100 Start 0.1.5 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 036dbb1aa991d1f7ae91ee895e4fad96a42c35e3 Author: Simon McVittie Date: Fri May 8 15:02:47 2009 +0100 Prepare version 0.1.4 NEWS | 29 ++++++++++++++++++++++++++++- configure.ac | 4 ++-- 2 files changed, 30 insertions(+), 3 deletions(-) commit 461a1ef4960813053fce2be996e5e1a3af1f8eda Merge: 4ee806f 3c1f1c7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri May 8 10:18:34 2009 -0300 Merge branch 'account-update-params' Reviewed-by: Simon McVittie (smcv) commit 3c1f1c7ee3a84d76a9c2f9c145d713e2a677f670 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 17:23:35 2009 -0300 Account: updateParamenters now return a PendingStringList. TelepathyQt4/account.cpp | 22 +++++++--------------- TelepathyQt4/account.h | 3 +-- 2 files changed, 8 insertions(+), 17 deletions(-) commit f0158f596821928dbe257e8687af84a2d2511a30 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 17:22:41 2009 -0300 PendingStringList: Added constructor that takes a QDBusPendingCall that returns a QStringList. TelepathyQt4/pending-string-list.cpp | 27 +++++++++++++++++++++++++++ TelepathyQt4/pending-string-list.h | 4 ++++ 2 files changed, 31 insertions(+) commit 4ee806f42f011b40dcdc0d3ca8bd4117859aaffb Merge: 0d3d392 7debffd Author: Simon McVittie Date: Thu May 7 18:55:09 2009 +0100 Merge branch 'spec' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 7debffd3c3da278551086117b85ab30bebad538d Author: Simon McVittie Date: Thu May 7 18:46:08 2009 +0100 Update to telepathy-spec 0.17.24 (UpdateParameters, CreateAccount API break) TelepathyQt4/Prototype/Account.cpp | 2 +- TelepathyQt4/Prototype/AccountManager.cpp | 3 +- TelepathyQt4/account-manager.cpp | 27 ++++- TelepathyQt4/account-manager.h | 4 +- TelepathyQt4/account.cpp | 28 +++++ TelepathyQt4/account.h | 4 + TelepathyQt4/pending-account.cpp | 5 +- TelepathyQt4/pending-account.h | 3 +- spec/Account.xml | 79 ++++++++++++-- spec/Account_Manager.xml | 104 +++++++++++++++++-- spec/Connection_Interface_Requests.xml | 6 ++ spec/Debug.xml | 166 ++++++++++++++++++++++++++++++ spec/all.xml | 6 +- tests/lib/account-manager.py | 14 ++- tests/prototype/prototype.cpp | 2 +- 15 files changed, 423 insertions(+), 30 deletions(-) commit 03ab0dcb08a0e0311b2afd66994b16edae925933 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 14:22:41 2009 -0300 client-handler test: Improved registerClient test. tests/dbus/client-handler.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) commit f1a9ab4c03d6a3af95d6a3e06092bf47a711402b Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 13:57:25 2009 -0300 client-handler test: Improved test. Added support for unique name client registration. Added support for checking HandledChannels unite for multiple handlers in the same dbus connection. tests/dbus/client-handler.cpp | 153 ++++++++++++++++++++++++++++++++---------- 1 file changed, 118 insertions(+), 35 deletions(-) commit cb2d466df029ae21d0e8b7b005f86a5370310481 Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 13:01:43 2009 -0300 ClientRegistrar: Handler::HandledChannels is now spec compliant. Handler::HandledChannels now returns the same for all Client instances that share a unique bus name. TelepathyQt4/client-registrar-internal.h | 15 ++++++++++-- TelepathyQt4/client-registrar.cpp | 42 ++++++++++++++++++++++++-------- 2 files changed, 45 insertions(+), 12 deletions(-) commit 196aa24c62901e045b3b3c2c6ff20556d30805bc Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 12:15:02 2009 -0300 ClientRegistrar: create method will return the same ClientRegistrar instance for a given QDBusConnection if the registrar already exists. TelepathyQt4/client-registrar.cpp | 16 ++++++++++------ TelepathyQt4/client-registrar.h | 3 ++- 2 files changed, 12 insertions(+), 7 deletions(-) commit a1bb912d16942f88e7cc00f74c28fa5f157ce8ae Author: Andre Moreira Magalhaes (andrunko) Date: Thu May 7 12:01:00 2009 -0300 ClientRegistrar: HandledChannels is now handled internally by the library. Note that this is not spec compliant, as HandledChannels is not returning the same for all Client instances that share a unique bus name. This will be implemented in a later patch. TelepathyQt4/abstract-client.h | 1 - TelepathyQt4/client-registrar-internal.h | 17 +++++++---- TelepathyQt4/client-registrar.cpp | 49 +++++++++++++++++++++++++++----- tests/dbus/client-handler.cpp | 20 ++++++------- 4 files changed, 63 insertions(+), 24 deletions(-) commit 245190424d4594b8798278703b07b9ded1927cc0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 6 14:14:52 2009 -0300 ClientRegistrar: Changed AbstractClientHandler isListeningRequests method and listenRequests constructor param to wantsRequestNotification. TelepathyQt4/abstract-client.cpp | 10 +++++----- TelepathyQt4/abstract-client.h | 4 ++-- TelepathyQt4/client-registrar.cpp | 2 +- tests/dbus/client-handler.cpp | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) commit a7af05ce3f831315f42fa69f4612cd0be0f97bd7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 6 14:12:07 2009 -0300 ClientRegistrar: Cast object to intptr_t to get the unique id. TelepathyQt4/client-registrar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 16c6f1e6af262101e93799efb21dbdfe326573d6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 6 14:11:45 2009 -0300 ClientRegistrar: Add multiple interfaces support on Client. Removed AbstractClient, as there is no way to multiple inherit and use SharedPtr at the same time, in favor of ClientObject. To implement multiple interfaces clients will create a ClientObject and set it's handler, approver, observer accordingly. For now ClientObject only support handlers, but approver and observer support will be added in the future when they exist. TelepathyQt4/ClientObject | 13 +++++++ TelepathyQt4/Makefile.am | 4 +- TelepathyQt4/abstract-client.cpp | 9 ----- TelepathyQt4/abstract-client.h | 20 +--------- TelepathyQt4/client-object.cpp | 58 +++++++++++++++++++++++++++++ TelepathyQt4/client-object.h | 57 +++++++++++++++++++++++++++++ TelepathyQt4/client-registrar-internal.h | 18 +++++---- TelepathyQt4/client-registrar.cpp | 48 ++++++++++++------------ TelepathyQt4/client-registrar.h | 6 +-- TelepathyQt4/types.h | 6 ++- tests/dbus/client-handler.cpp | 63 +++++++++++++++++++------------- 11 files changed, 212 insertions(+), 90 deletions(-) commit e57968986ee793e10a14c14d1dcc20254ba0356d Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 6 14:11:08 2009 -0300 ChannelRequest: Fixed copyright to @ 2009. TelepathyQt4/channel-request.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 112081ca76c1ec9d7074ced2b205f8b1776a67b6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed May 6 12:02:48 2009 -0300 ChannelRequest: Do not call becomeReady on constructor. TelepathyQt4/channel-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d77b03ee0ebd822d904642d8e2bf68d0ebdf637e Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 15:44:41 2009 -0300 client-handler test: Added test to HandleChannels. tests/dbus/client-handler.cpp | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) commit 2ca48b40dd0d321fa9e84144013a01f7ff28bd3b Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 15:07:44 2009 -0300 client-handler test: Added test to AddRequest/RemoveRequest. tests/dbus/client-handler.cpp | 274 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 268 insertions(+), 6 deletions(-) commit c01d5b37715e3bb4b26aa93643d049bd4467c2aa Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 15:06:23 2009 -0300 ChannelRequest: Fix to make ChannelRequest::Properties::GetAll works. Need to check why this is needed here, see FIXME. TelepathyQt4/channel-request.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) commit 94da5040d48cd9ff1ad04b1a56cfbe8a4f4e0f22 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 14:45:45 2009 -0300 ChannelRequest: Fixed coding style. TelepathyQt4/channel-request.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 8852769ff4882a596596f4dff814a5987e215f8d Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 14:45:08 2009 -0300 ClientRegistrar: Check if QQueue is empty before calling head. TelepathyQt4/client-registrar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 60d731c59de68caf84b88b0a88fc7f0fd2880bfa Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 14:44:52 2009 -0300 ClientRegistrar: Added some debug. TelepathyQt4/client-registrar.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit c1b1282ee40c8df12ba58d19afc79c99ee70bf9e Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 14:44:05 2009 -0300 ChannelRequest: Proper retrieve Account property. TelepathyQt4/channel-request.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit b6d458380e742e51d8d75ffa531e545cd16899d3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 14:43:16 2009 -0300 ChannelRequest: Proper connect to Failed signal. TelepathyQt4/channel-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0799570326b5e1bb40462dc59f67e372beb106c2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 13:21:58 2009 -0300 ClientRegistrar: Unregister clients on destructor. TelepathyQt4/client-registrar.cpp | 1 + 1 file changed, 1 insertion(+) commit 48804a23df92764d7bd3ea1539c5c3f4763be208 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 13:17:33 2009 -0300 Added auto generated classes for Client.Handler and Client.Interface.Requests interfaces. TelepathyQt4/ClientHandler | 13 +++++++++++ TelepathyQt4/ClientHandlerInterface | 13 +++++++++++ TelepathyQt4/ClientInterfaceRequestsInterface | 13 +++++++++++ TelepathyQt4/Makefile.am | 13 +++++++++++ TelepathyQt4/client-handler.cpp | 25 +++++++++++++++++++++ TelepathyQt4/client-handler.h | 31 +++++++++++++++++++++++++++ TelepathyQt4/client-handler.xml | 11 ++++++++++ TelepathyQt4/stable-interfaces.xml | 1 + 8 files changed, 120 insertions(+) commit 05ebfab2be8cc3b17510e59ec2f5c2c2e4d07e27 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 12:20:43 2009 -0300 client-handler test: Added initial ClientHandler test. tests/dbus/Makefile.am | 5 ++ tests/dbus/client-handler.cpp | 169 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 174 insertions(+) commit d1037d2bb81f86bf69682d3eec9384843d85c4a1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 12:19:39 2009 -0300 ClientRegistrar: Added dbusConnection/clientName accessor methods. TelepathyQt4/client-registrar.cpp | 10 ++++++++++ TelepathyQt4/client-registrar.h | 3 +++ 2 files changed, 13 insertions(+) commit e6d08acbe9fe96a007cf4c32678ecb8df22f57ed Author: Andre Moreira Magalhaes (andrunko) Date: Tue May 5 11:48:51 2009 -0300 ClientRegistrar: Make AbstractClientHandler::add/removeRequest receive a ChannelRequestPtr object. Changes: AbstractClientHandler::handleChannels receives a list of not ready ChannelRequestPtr objects. AbstractClientHandler::addRequest receives a ready ChannelRequestPtr object. AbstractClientHandler::removeRequest receives a not-ready ChannelRequestPtr object. TelepathyQt4/abstract-client.cpp | 5 +- TelepathyQt4/abstract-client.h | 5 +- TelepathyQt4/client-registrar-internal.h | 39 ++++++++++++++- TelepathyQt4/client-registrar.cpp | 86 ++++++++++++++++++++++++++------ 4 files changed, 113 insertions(+), 22 deletions(-) commit 77a9a1a7ffb1797d6d0b84591b5cdc609d18f5b0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 18:28:16 2009 -0300 ClientRegistrar: Use ChannelRequestPtr to represent channel requests on AbstractClientHandler::handleChannels. TelepathyQt4/abstract-client.h | 2 +- TelepathyQt4/client-registrar-internal.h | 1 + TelepathyQt4/client-registrar.cpp | 23 ++++++++++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) commit 6feae51b28a915e4dfbe6101da1049e9ae6900b5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 18:04:58 2009 -0300 ChannelRequest: Added ChannelRequest high-level class. TelepathyQt4/ChannelRequest | 13 ++ TelepathyQt4/ChannelRequestInterface | 13 ++ TelepathyQt4/Makefile.am | 14 ++ TelepathyQt4/channel-request.cpp | 310 +++++++++++++++++++++++++++++++++++ TelepathyQt4/channel-request.h | 122 ++++++++++++++ TelepathyQt4/channel-request.xml | 9 + TelepathyQt4/stable-interfaces.xml | 1 + TelepathyQt4/types.h | 2 + 8 files changed, 484 insertions(+) commit 2c16a4d48ead85234cf392b849d9b8ef5e508be3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 13:33:46 2009 -0300 ClientRegistrar: Use QDateTime to represent userActionTime. TelepathyQt4/abstract-client.h | 2 +- TelepathyQt4/client-registrar.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) commit d732ce32c99a6e8934a4e3b407364016235640b4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 13:11:54 2009 -0300 ClientRegistrar: Do not expose QDBusObjectPath in public API, use QString instead. As all other classes QDBusObjectPath is not exposed in public API, so changing to use QString instead. TelepathyQt4/abstract-client.cpp | 4 ++-- TelepathyQt4/abstract-client.h | 6 +++--- TelepathyQt4/client-registrar.cpp | 10 +++++++--- 3 files changed, 12 insertions(+), 8 deletions(-) commit c7991aa1b7f747c7472fe8a7e16dbfdc28e5941b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 12:54:20 2009 -0300 ClientRegistrar: Use exisiting high-level classes for AbstractClientHandler::handlerChannels. Use exisiting high-level classes (Account, Connection, Channel) for AbstractClientHandler::handlerChannels. TelepathyQt4/abstract-client.h | 11 ++- TelepathyQt4/client-registrar-internal.h | 65 ++++++++++++++- TelepathyQt4/client-registrar.cpp | 139 +++++++++++++++++++++++++++++-- 3 files changed, 205 insertions(+), 10 deletions(-) commit 201011cbd98af398def72c967ac338e4151b6250 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 11:47:33 2009 -0300 ClientRegistrar: Make Requests::AddRequest/RemoveRequest finish immediatelly. TelepathyQt4/abstract-client.cpp | 2 +- TelepathyQt4/abstract-client.h | 2 +- TelepathyQt4/client-registrar-internal.h | 10 +++++++--- TelepathyQt4/client-registrar.cpp | 14 ++++++++++---- 4 files changed, 19 insertions(+), 9 deletions(-) commit e0773d25084afc318971aa5842e0e9802e8dcec0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 11:46:40 2009 -0300 ClientRegistrar: Make PendingClientOperation setFinished methods check if operation already finished. TelepathyQt4/pending-client-operation.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit 0880c2c9fef505e28bbb186f6e0286fc3436b180 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 11:08:08 2009 -0300 ClientRegistrar: Make AbstractClientHandler::handleChannels async. TelepathyQt4/abstract-client.h | 5 ++++- TelepathyQt4/client-registrar-internal.h | 7 +++++-- TelepathyQt4/client-registrar.cpp | 18 ++++++++++++------ 3 files changed, 21 insertions(+), 9 deletions(-) commit b30622746ffb6705d341046f9aebed032ec9c0ff Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 30 11:06:49 2009 -0300 ClientRegistrar: Added PendingClientOperation that will be used in async methods to allow async replies. TelepathyQt4/Makefile.am | 4 ++ TelepathyQt4/PendingClientOperation | 13 ++++++ TelepathyQt4/pending-client-operation.cpp | 72 +++++++++++++++++++++++++++++++ TelepathyQt4/pending-client-operation.h | 63 +++++++++++++++++++++++++++ TelepathyQt4/pending-operation.h | 6 +-- 5 files changed, 155 insertions(+), 3 deletions(-) commit 6cb583117411d13f2fc83c3a06ebda15f58a2411 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 29 12:24:39 2009 -0300 ClientRegistrar: Added org.freedesktop.Telepath.Client.Interface.Requests interface support. TelepathyQt4/abstract-client.cpp | 26 +++++++++++++++++++++++- TelepathyQt4/abstract-client.h | 9 +++++++- TelepathyQt4/client-registrar-internal.h | 32 +++++++++++++++++++++++++++++ TelepathyQt4/client-registrar.cpp | 35 ++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) commit 5dc0eee484b1a18d91c58aa51827b64370186322 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 22:01:53 2009 -0300 ClientRegistrar: Implement client registration. Works for Client.Handler for now. TelepathyQt4/client-registrar.cpp | 154 +++++++++++++++++++++++++++++++++----- TelepathyQt4/client-registrar.h | 19 +++-- 2 files changed, 144 insertions(+), 29 deletions(-) commit f84e8ccd1da000b2ac743bdc40a63d7ef32baee8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 22:01:02 2009 -0300 ClientRegistrar: Added ClientAdaptor - Adaptor for org.freedesktop.Telepath.Client interface. TelepathyQt4/client-registrar-internal.h | 26 ++++++++++++++++++++++++++ TelepathyQt4/client-registrar.cpp | 11 +++++++++++ 2 files changed, 37 insertions(+) commit 65a610c8e1f982ad8189d9c0ba63c692f5e02263 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 16:33:36 2009 -0300 ClientRegistrar: Added AbstractClient/AbstractClientHandler and ClientHandlerAdaptor classes. TelepathyQt4/AbstractClient | 13 +++++ TelepathyQt4/AbstractClientHandler | 13 +++++ TelepathyQt4/Makefile.am | 7 +++ TelepathyQt4/abstract-client.cpp | 61 +++++++++++++++++++++ TelepathyQt4/abstract-client.h | 82 ++++++++++++++++++++++++++++ TelepathyQt4/client-registrar-internal.h | 92 ++++++++++++++++++++++++++++++++ TelepathyQt4/client-registrar.cpp | 24 +++++++++ 7 files changed, 292 insertions(+) commit 301504593875647937599db2690105a634bc0b7e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 11:24:26 2009 -0300 ClientRegistrar: Added skeleton class. TelepathyQt4/ClientRegistrar | 13 +++++++ TelepathyQt4/Makefile.am | 3 ++ TelepathyQt4/client-registrar.cpp | 82 +++++++++++++++++++++++++++++++++++++++ TelepathyQt4/client-registrar.h | 67 ++++++++++++++++++++++++++++++++ TelepathyQt4/types.h | 4 ++ 5 files changed, 169 insertions(+) commit 0d3d39264d55cb45dd5cd2704ac2440fbb517058 Merge: 4e75388 8d588db Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 11:58:29 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 4e7538806ef6862b4d9b1cdf7ac84a8be142f19f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 11:47:34 2009 -0300 Updated NEWS. NEWS | 7 +++++++ 1 file changed, 7 insertions(+) commit f317f4deb0e138056137baf868c3633514e1f35c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 11:46:45 2009 -0300 Renamed SharedData header file to RefCounted. TelepathyQt4/Makefile.am | 2 +- TelepathyQt4/RefCounted | 13 +++++++++++++ TelepathyQt4/SharedData | 13 ------------- 3 files changed, 14 insertions(+), 14 deletions(-) commit 8d588db517826acd87cb9ee6a795c641f97c6a3e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 11:44:52 2009 -0300 Updated NEWS. NEWS | 7 +++++++ 1 file changed, 7 insertions(+) commit 39f8ff1539f94eae24c1ba22a9618f35ab120ddc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 28 11:40:34 2009 -0300 Renamed SharedData header file to RefCounted. TelepathyQt4/RefCounted | 13 +++++++++++++ TelepathyQt4/SharedData | 13 ------------- 2 files changed, 13 insertions(+), 13 deletions(-) commit 80a129c9b3b449a7d22a777ba3e6f9d9fc917f06 Author: Simon McVittie Date: Thu Apr 23 16:11:18 2009 +0100 configure.ac: look for pygobject as well as dbus.mainloop.glib, since the tests need it Reviewed-by: Will Thompson configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit c2a6955daf081bf654f5751feb1a90e9ee9aca40 Author: Simon McVittie Date: Wed Apr 22 19:00:34 2009 +0100 Start 0.1.4 development configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fa061c4653e05a2ba80260ecc08946ece4c03442 Author: Simon McVittie Date: Wed Apr 22 18:56:43 2009 +0100 Prepare release 0.1.3 NEWS | 2 +- configure.ac | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit de84f9a93aa7e481ea72e43b11e60f74b0923821 Author: Simon McVittie Date: Wed Apr 22 18:55:12 2009 +0100 Fix bugs URL now we have a real component on fd.o configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit df8d0812be700bf128d0ea0ee7c682b2480e8a2d Author: Simon McVittie Date: Wed Apr 22 18:54:55 2009 +0100 doxygen: fix out-of-tree build (distcheck) Makefile.am | 2 +- doxygen.cfg.in | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) commit 2671610bc2ef934aee1a3ab01108bcae8ebec8a8 Author: Simon McVittie Date: Wed Apr 22 17:23:43 2009 +0100 Install TelepathyQt4Farsight.pc as well as TelepathyQt4.pc Reviewed-by: Andre Moreira Magalhaes (andrunko) TelepathyQt4/Makefile.am | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 000aa4921870a1997b789431b98fa2af2ef23516 Author: Simon McVittie Date: Wed Apr 22 16:57:56 2009 +0100 Update NEWS NEWS | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 10 deletions(-) commit a73de48d09e15c663a8f953d259cb683f4302073 Author: Simon McVittie Date: Wed Apr 22 16:53:46 2009 +0100 Move TelepathyQt4Farsight.pc to TelepathyQt4/, correct dependencies and add -uninstalled versions The -uninstalled versions are to be able to use an uninstalled version for development, like in telepathy-glib: http://smcv.pseudorandom.co.uk/2008/09/pc-uninstalled/ Moving the TpQt4Fs .pc file to the parent directory means you only have to put one directory in PKG_CONFIG_PATH. TelepathyQt4/Farsight/TelepathyQt4Farsight.pc.in | 11 ----------- TelepathyQt4/TelepathyQt4-uninstalled.pc.in | 11 +++++++++++ TelepathyQt4/TelepathyQt4Farsight-uninstalled.pc.in | 11 +++++++++++ TelepathyQt4/TelepathyQt4Farsight.pc.in | 11 +++++++++++ configure.ac | 4 +++- 5 files changed, 36 insertions(+), 12 deletions(-) commit f816485188647f187a269f5ca4ac4412fd034358 Merge: 4921474 340b64c Author: Simon McVittie Date: Wed Apr 22 15:28:05 2009 +0100 Merge commit 'andrunko/media-new' Signed-off-by: Simon McVittie commit 340b64c3e88bb3b93762b65de72a970132c4f457 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 22 11:24:42 2009 -0300 call example: Use TelepathyQt4Farsight. examples/call/Makefile.am | 1 + examples/call/farsight-channel.cpp | 44 ++------------------------------------ 2 files changed, 3 insertions(+), 42 deletions(-) commit 4921474450f1b2f4f2bb28fbc9849889eac33e0a Merge: 6c2ff1c 8595146 Author: Simon McVittie Date: Wed Apr 22 15:21:26 2009 +0100 Merge branch '21336-group-messages' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 6c2ff1cc3c08ccc61c84f1212a3abbd62397b77a Merge: b1b60cc 3216a0e Author: Simon McVittie Date: Wed Apr 22 15:21:15 2009 +0100 Merge branch '21337-has-been-online' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit b1b60cccecd1af959baec50a405ba25104c4bcf6 Merge: 1efc057 119dbfe Author: Simon McVittie Date: Wed Apr 22 15:20:46 2009 +0100 Merge branch 'spec' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 8595146626a123ceb4d8f27b3d110b57c0a81674 Author: Simon McVittie Date: Wed Apr 22 13:35:14 2009 +0100 Tp::Channel: add accessors for MessageAccept etc. and improve docs TelepathyQt4/channel.cpp | 142 +++++++++++++++++++++++++++++++++++++++++++++-- TelepathyQt4/channel.h | 6 ++ 2 files changed, 143 insertions(+), 5 deletions(-) commit 3216a0e88479b5fcf6a9d721aeccf31c0d88d5c3 Author: Simon McVittie Date: Wed Apr 22 13:34:33 2009 +0100 Tp::Account: fix debug message for ConnectsAutomatically TelepathyQt4/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ce6fad07acfb319a92737715b0343d1545da5876 Author: Simon McVittie Date: Wed Apr 22 13:34:16 2009 +0100 Tp::Account: implement hasBeenOnline() TelepathyQt4/account.cpp | 30 ++++++++++++++++++++++++++++++ TelepathyQt4/account.h | 3 +++ 2 files changed, 33 insertions(+) commit 119dbfe791ae26b6426cbb58de558213fa72763b Author: Simon McVittie Date: Wed Apr 22 12:59:20 2009 +0100 spec: update to telepathy-spec 0.17.23 spec/Account.xml | 22 +- spec/Account_Manager.xml | 4 +- spec/Channel.xml | 6 +- spec/Channel_Dispatch_Operation.xml | 154 +++++-- spec/Channel_Dispatcher.xml | 93 ++-- ...Channel_Dispatcher_Interface_Operation_List.xml | 17 +- spec/Channel_Future.xml | 2 +- spec/Channel_Handler.xml | 15 +- spec/Channel_Interface_Call_State.xml | 17 +- spec/Channel_Interface_Group.xml | 87 +++- spec/Channel_Interface_Hold.xml | 4 +- spec/Channel_Interface_Media_Signalling.xml | 54 ++- spec/Channel_Interface_Media_Signalling_Future.xml | 125 +++--- spec/Channel_Interface_Messages.xml | 7 +- spec/Channel_Interface_Password.xml | 6 +- spec/Channel_Interface_Tube.xml | 41 +- spec/Channel_Request.xml | 42 +- spec/Channel_Type_Contact_Search.xml | 482 +++++++++++++++++---- spec/Channel_Type_DBus_Tube.xml | 12 +- spec/Channel_Type_File_Transfer.xml | 20 +- spec/Channel_Type_Room_List.xml | 8 +- spec/Channel_Type_Stream_Tube.xml | 12 +- spec/Channel_Type_Streamed_Media.xml | 179 ++++++-- spec/Channel_Type_Streamed_Media_Future.xml | 27 +- spec/Channel_Type_Text.xml | 13 +- spec/Channel_Type_Tubes.xml | 57 +-- spec/Client.xml | 4 +- spec/Client_Approver.xml | 140 ++++-- spec/Client_Handler.xml | 169 +++----- spec/Client_Interface_Requests.xml | 173 ++++++++ spec/Client_Observer.xml | 133 ++++-- spec/Connection.xml | 63 ++- spec/Connection_Interface_Avatars.xml | 130 +++++- spec/Connection_Interface_Contact_Info.xml | 97 +++-- spec/Connection_Interface_Presence.xml | 195 ++------- spec/Connection_Interface_Requests.xml | 12 + spec/Connection_Interface_Simple_Presence.xml | 138 +++++- spec/Connection_Manager.xml | 2 +- spec/Media_Session_Handler.xml | 25 +- spec/Media_Stream_Handler.xml | 146 ++++++- spec/Properties_Interface.xml | 2 +- spec/all.xml | 204 ++++++--- spec/errors.xml | 21 +- spec/generic-types.xml | 80 +++- 44 files changed, 2303 insertions(+), 937 deletions(-) commit 1efc057da97d8934fa86b32bef89f8aa478ce959 Merge: ac184ec f00aa0f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 14:17:04 2009 -0300 Merge branch 'media-new' Reviewed-by: Simon McVittie (smcv) commit f00aa0f547a613124a7ae5179b3690f00afb5225 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 14:09:38 2009 -0300 StreamedMediaChannel: Improved handlerStreamingRequired docs. TelepathyQt4/streamed-media-channel.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit ac184ec1434791bfeff7a8647314cf0082fc8945 Merge: 88b1621 df182d1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 14:14:50 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 3b00c6c0a39fd663383819828701e568219acd0e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 14:06:13 2009 -0300 TelepathyQt4Farsight: Use StremedMediaChannel::handlerStreamingRequired to check if streaming is required. TelepathyQt4/Farsight/channel.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit ff67b2ef31dd9c61603b0f1267250646cc2c0b1d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 14:01:58 2009 -0300 StreamedMediaChannel: Added handlerStreamingRequired method. Added StreamedMediaChannel::handlerStreamingRequired method that indicates whether media handler streaming is required for this channel. TelepathyQt4/streamed-media-channel.cpp | 16 ++++++++++++++++ TelepathyQt4/streamed-media-channel.h | 2 ++ 2 files changed, 18 insertions(+) commit 3050ab0eb8c156f87c4a8ae088f8d8a555a09154 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 13:48:10 2009 -0300 TelepathyQt4Farsight: Renamed tfChannelCreate to createFarsightChannel. TelepathyQt4/Farsight/channel.cpp | 2 +- TelepathyQt4/Farsight/channel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6d1d198337911259fbeb5c6cc8b47ace87f826cd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 21 13:37:20 2009 -0300 Added TelepathyQt4Farsight tiny library. The library is a convenience library to create a Telepathy Farsight Channel given a TelepathyQt4 StreamedMediaChannel. TelepathyQt4/Farsight/Channel | 13 ++++ TelepathyQt4/Farsight/Makefile.am | 33 ++++++++++ TelepathyQt4/Farsight/TelepathyQt4Farsight.pc.in | 11 ++++ TelepathyQt4/Farsight/channel.cpp | 81 ++++++++++++++++++++++++ TelepathyQt4/Farsight/channel.h | 40 ++++++++++++ TelepathyQt4/Makefile.am | 5 ++ configure.ac | 4 +- examples/Makefile.am | 3 +- 8 files changed, 188 insertions(+), 2 deletions(-) commit df182d1624b41b36a9abe1bee2bfc0dce4ffab8c Author: Andre Moreira Magalhaes (andrunko) Date: Sat Apr 18 19:15:12 2009 -0300 manager-file: Fixed build with some gcc versions. TelepathyQt4/manager-file.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 88b1621545e43f5afac9779aeaa5bdd559248eda Merge: bea7e51 2451227 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 09:59:32 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 24512277e87832c66478350b72fbe374b97c1d8e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 14 02:38:13 2009 -0300 ReadyObject: Make destructor virtual as we have virtual methods. TelepathyQt4/ready-object.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bea7e514ae864e6f6a2392498b18d984bf03bc25 Merge: c144ba5 509affa Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 13 16:42:07 2009 -0300 Merge branch 'namespace' Reviewed-by: Simon McVittie (smcv) commit c144ba56c55624e4afa0728e66c9e8d20ebf83c7 Merge: c91b628 a9c24d6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 13 16:41:58 2009 -0300 Merge branch 'docs' Reviewed-by: Simon McVittie (smcv) commit c91b628d0ae5f774118d39041ef0c70c62f2d3fa Merge: 20b2897 520118b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 13 16:41:40 2009 -0300 Merge branch 'shared' Reviewed-by: Simon McVittie (smcv) Reviewed-by: Jonathon Jongsma (jonner) commit 509affa3ee5d8eef8a7fb421f2d2e69ff3fd512a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 8 03:09:14 2009 -0300 Removed header-compile-test.cpp TelepathyQt4/Makefile.am | 3 +-- TelepathyQt4/header-compile-test.cpp | 18 ------------------ 2 files changed, 1 insertion(+), 20 deletions(-) commit cf51f16647248df78236e6610f41053a71c42882 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 8 02:48:52 2009 -0300 Renamed Telepathy namespace to Tp. TelepathyQt4/Makefile.am | 24 +- TelepathyQt4/Prototype/Account.cpp | 10 +- TelepathyQt4/Prototype/Account.h | 4 +- TelepathyQt4/Prototype/AccountManager.cpp | 18 +- TelepathyQt4/Prototype/AvatarManager.cpp | 18 +- TelepathyQt4/Prototype/AvatarManager.h | 6 +- TelepathyQt4/Prototype/CapabilitiesManager.cpp | 48 +-- TelepathyQt4/Prototype/CapabilitiesManager.h | 18 +- TelepathyQt4/Prototype/ChatChannel.cpp | 28 +- TelepathyQt4/Prototype/ChatChannel.h | 4 +- TelepathyQt4/Prototype/Connection.cpp | 54 ++-- TelepathyQt4/Prototype/Connection.h | 24 +- TelepathyQt4/Prototype/ConnectionFacade.cpp | 28 +- TelepathyQt4/Prototype/ConnectionFacade.h | 14 +- TelepathyQt4/Prototype/Contact.cpp | 18 +- TelepathyQt4/Prototype/Contact.h | 12 +- TelepathyQt4/Prototype/ContactManager.cpp | 206 ++++++------- TelepathyQt4/Prototype/ContactManager.h | 48 +-- TelepathyQt4/Prototype/Makefile.am | 2 +- TelepathyQt4/Prototype/PresenceManager.cpp | 112 +++---- TelepathyQt4/Prototype/PresenceManager.h | 20 +- TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 96 +++--- TelepathyQt4/Prototype/StreamedMediaChannel.h | 26 +- TelepathyQt4/abstract-interface.cpp | 10 +- TelepathyQt4/abstract-interface.h | 6 +- TelepathyQt4/account-manager.cpp | 14 +- TelepathyQt4/account-manager.h | 4 +- TelepathyQt4/account.cpp | 66 ++-- TelepathyQt4/account.h | 36 +-- TelepathyQt4/async-model.dox | 12 +- TelepathyQt4/channel.cpp | 136 ++++----- TelepathyQt4/channel.h | 34 +-- TelepathyQt4/connection-internal.h | 6 +- TelepathyQt4/connection-manager-internal.h | 4 +- TelepathyQt4/connection-manager.cpp | 12 +- TelepathyQt4/connection-manager.h | 8 +- TelepathyQt4/connection.cpp | 28 +- TelepathyQt4/connection.h | 16 +- TelepathyQt4/constants.h | 6 +- TelepathyQt4/contact-manager.cpp | 68 ++--- TelepathyQt4/contact-manager.h | 40 +-- TelepathyQt4/contact.cpp | 4 +- TelepathyQt4/contact.h | 10 +- TelepathyQt4/dbus-proxy.cpp | 10 +- TelepathyQt4/dbus-proxy.h | 6 +- TelepathyQt4/debug-internal.h | 4 +- TelepathyQt4/debug.cpp | 4 +- TelepathyQt4/debug.h | 5 +- TelepathyQt4/feature.cpp | 4 +- TelepathyQt4/feature.h | 4 +- TelepathyQt4/file-transfer.cpp | 4 +- TelepathyQt4/file-transfer.h | 4 +- TelepathyQt4/key-file.cpp | 4 +- TelepathyQt4/key-file.h | 2 +- TelepathyQt4/manager-file.cpp | 16 +- TelepathyQt4/manager-file.h | 2 +- TelepathyQt4/message.cpp | 4 +- TelepathyQt4/message.h | 4 +- TelepathyQt4/optional-interface-factory.cpp | 4 +- TelepathyQt4/optional-interface-factory.h | 4 +- TelepathyQt4/pending-account.cpp | 4 +- TelepathyQt4/pending-account.h | 4 +- TelepathyQt4/pending-channel.cpp | 6 +- TelepathyQt4/pending-channel.h | 4 +- TelepathyQt4/pending-connection.cpp | 4 +- TelepathyQt4/pending-connection.h | 4 +- TelepathyQt4/pending-contact-attributes.cpp | 4 +- TelepathyQt4/pending-contact-attributes.h | 4 +- TelepathyQt4/pending-contacts.cpp | 24 +- TelepathyQt4/pending-contacts.h | 12 +- TelepathyQt4/pending-handles.cpp | 4 +- TelepathyQt4/pending-handles.h | 4 +- TelepathyQt4/pending-operation.cpp | 4 +- TelepathyQt4/pending-operation.h | 6 +- TelepathyQt4/pending-ready.cpp | 4 +- TelepathyQt4/pending-ready.h | 4 +- TelepathyQt4/pending-string-list.cpp | 4 +- TelepathyQt4/pending-string-list.h | 4 +- TelepathyQt4/readiness-helper.cpp | 16 +- TelepathyQt4/readiness-helper.h | 8 +- TelepathyQt4/ready-object.cpp | 4 +- TelepathyQt4/ready-object.h | 4 +- TelepathyQt4/referenced-handles.cpp | 4 +- TelepathyQt4/referenced-handles.h | 4 +- TelepathyQt4/room-list.cpp | 4 +- TelepathyQt4/room-list.h | 4 +- TelepathyQt4/shared-ptr.h | 4 +- TelepathyQt4/simple-pending-operations.h | 4 +- TelepathyQt4/streamed-media-channel.cpp | 116 +++---- TelepathyQt4/streamed-media-channel.h | 54 ++-- TelepathyQt4/text-channel.cpp | 36 +-- TelepathyQt4/text-channel.h | 20 +- TelepathyQt4/types.h | 4 +- examples/accounts/account-item.cpp | 38 +-- examples/accounts/account-item.h | 18 +- examples/accounts/accounts-window.cpp | 8 +- examples/accounts/accounts-window.h | 6 +- examples/accounts/main.cpp | 6 +- examples/call/call-handler.cpp | 16 +- examples/call/call-handler.h | 14 +- examples/call/call-roster-widget.cpp | 2 +- examples/call/call-roster-widget.h | 4 +- examples/call/call-widget.cpp | 140 ++++----- examples/call/call-widget.h | 46 +-- examples/call/call-window.cpp | 44 +-- examples/call/call-window.h | 16 +- examples/call/farsight-channel.cpp | 6 +- examples/call/farsight-channel.h | 10 +- examples/call/main.cpp | 8 +- examples/call/video-widget.cpp | 4 +- examples/call/video-widget.h | 4 +- examples/extensions/Makefile.am | 6 +- examples/roster/main.cpp | 6 +- examples/roster/roster-item.cpp | 6 +- examples/roster/roster-item.h | 6 +- examples/roster/roster-widget.cpp | 18 +- examples/roster/roster-widget.h | 18 +- examples/roster/roster-window.cpp | 24 +- examples/roster/roster-window.h | 14 +- tests/dbus/account-basics.cpp | 56 ++-- tests/dbus/chan-basics.cpp | 52 ++-- tests/dbus/chan-group.cpp | 80 ++--- tests/dbus/cm-basics.cpp | 12 +- tests/dbus/conn-basics.cpp | 22 +- tests/dbus/conn-requests.cpp | 40 +-- tests/dbus/conn-roster.cpp | 36 +-- tests/dbus/contacts.cpp | 88 +++--- tests/dbus/handles.cpp | 26 +- tests/dbus/stateful-proxy.cpp | 24 +- tests/dbus/streamed-media-chan.cpp | 384 ++++++++++++------------ tests/dbus/text-chan.cpp | 78 ++--- tests/key-file.cpp | 2 +- tests/lib/test.cpp | 18 +- tests/lib/test.h | 6 +- tests/manager-file.cpp | 2 +- tests/pinocchio/cm-basics.cpp | 26 +- tests/pinocchio/conn-basics.cpp | 44 +-- tests/pinocchio/handles.cpp | 70 ++--- tests/pinocchio/lib.cpp | 4 +- tests/prototype/prototype.cpp | 124 ++++---- tests/prototype/prototype.h | 2 +- tools/libqt4codegen.py | 2 +- tools/qt4-client-gen.py | 22 +- 143 files changed, 1771 insertions(+), 1770 deletions(-) commit f0dc68019077608dd4e7f7fa77e7ba2c3d76896e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Apr 8 02:00:47 2009 -0300 Renamed high-level classes namespace from Telepathy::Client to Telepathy. TelepathyQt4/PendingContactAttributes | 7 + TelepathyQt4/abstract-interface.cpp | 9 +- TelepathyQt4/abstract-interface.h | 5 +- TelepathyQt4/account-manager.cpp | 19 +-- TelepathyQt4/account-manager.h | 9 +- TelepathyQt4/account.cpp | 17 +- TelepathyQt4/account.h | 15 +- TelepathyQt4/channel.cpp | 29 ++-- TelepathyQt4/channel.h | 71 ++++----- TelepathyQt4/connection-internal.h | 5 +- TelepathyQt4/connection-manager-internal.h | 6 +- TelepathyQt4/connection-manager.cpp | 9 +- TelepathyQt4/connection-manager.h | 9 +- TelepathyQt4/connection.cpp | 39 +++-- TelepathyQt4/connection.h | 39 +++-- TelepathyQt4/constants.h | 6 +- TelepathyQt4/contact-manager.cpp | 45 +++--- TelepathyQt4/contact-manager.h | 35 ++-- TelepathyQt4/contact.cpp | 3 - TelepathyQt4/contact.h | 9 +- TelepathyQt4/dbus-proxy.cpp | 7 +- TelepathyQt4/dbus-proxy.h | 5 +- TelepathyQt4/debug.cpp | 2 +- TelepathyQt4/feature.cpp | 3 - TelepathyQt4/feature.h | 3 - TelepathyQt4/file-transfer.cpp | 3 - TelepathyQt4/file-transfer.h | 3 - TelepathyQt4/key-file.cpp | 2 +- TelepathyQt4/manager-file.cpp | 2 +- TelepathyQt4/message.cpp | 3 - TelepathyQt4/message.h | 4 +- TelepathyQt4/optional-interface-factory.cpp | 5 +- TelepathyQt4/optional-interface-factory.h | 5 +- TelepathyQt4/pending-account.cpp | 3 - TelepathyQt4/pending-account.h | 3 - TelepathyQt4/pending-channel.cpp | 3 - TelepathyQt4/pending-channel.h | 3 - TelepathyQt4/pending-connection.cpp | 3 - TelepathyQt4/pending-connection.h | 3 - TelepathyQt4/pending-contact-attributes.cpp | 3 - TelepathyQt4/pending-contact-attributes.h | 13 +- TelepathyQt4/pending-contacts.cpp | 23 ++- TelepathyQt4/pending-contacts.h | 11 +- TelepathyQt4/pending-handles.cpp | 3 - TelepathyQt4/pending-handles.h | 3 - TelepathyQt4/pending-operation.cpp | 5 - TelepathyQt4/pending-operation.h | 6 +- TelepathyQt4/pending-ready.cpp | 3 - TelepathyQt4/pending-ready.h | 3 - TelepathyQt4/pending-string-list.cpp | 3 - TelepathyQt4/pending-string-list.h | 3 - TelepathyQt4/properties.cpp | 4 +- TelepathyQt4/readiness-helper.cpp | 18 +-- TelepathyQt4/readiness-helper.h | 7 +- TelepathyQt4/ready-object.cpp | 3 - TelepathyQt4/ready-object.h | 3 - TelepathyQt4/referenced-handles.cpp | 5 +- TelepathyQt4/referenced-handles.h | 6 +- TelepathyQt4/room-list.cpp | 3 - TelepathyQt4/room-list.h | 3 - TelepathyQt4/simple-pending-operations.h | 7 - TelepathyQt4/streamed-media-channel.cpp | 21 ++- TelepathyQt4/streamed-media-channel.h | 21 ++- TelepathyQt4/text-channel.cpp | 13 +- TelepathyQt4/text-channel.h | 11 +- TelepathyQt4/types.cpp | 3 +- TelepathyQt4/types.h | 3 - examples/accounts/account-item.cpp | 12 +- examples/accounts/account-item.h | 8 +- examples/accounts/accounts-window.cpp | 8 +- examples/accounts/accounts-window.h | 6 +- examples/call/call-handler.cpp | 14 +- examples/call/call-handler.h | 14 +- examples/call/call-roster-widget.cpp | 2 +- examples/call/call-roster-widget.h | 4 +- examples/call/call-widget.cpp | 46 +++--- examples/call/call-widget.h | 40 +++-- examples/call/call-window.cpp | 24 +-- examples/call/call-window.h | 14 +- examples/call/farsight-channel.cpp | 4 +- examples/call/farsight-channel.h | 8 +- examples/call/main.cpp | 2 +- examples/call/video-widget.cpp | 4 +- examples/call/video-widget.h | 2 - examples/extensions/Makefile.am | 4 +- examples/roster/roster-item.cpp | 6 +- examples/roster/roster-item.h | 6 +- examples/roster/roster-widget.cpp | 18 +-- examples/roster/roster-widget.h | 18 +-- examples/roster/roster-window.cpp | 24 +-- examples/roster/roster-window.h | 14 +- tests/dbus/account-basics.cpp | 46 +++--- tests/dbus/chan-basics.cpp | 46 +++--- tests/dbus/chan-group.cpp | 74 ++++----- tests/dbus/cm-basics.cpp | 12 +- tests/dbus/conn-basics.cpp | 16 +- tests/dbus/conn-requests.cpp | 34 ++-- tests/dbus/conn-roster.cpp | 36 ++--- tests/dbus/contacts.cpp | 54 +++---- tests/dbus/handles.cpp | 22 +-- tests/dbus/stateful-proxy.cpp | 20 +-- tests/dbus/streamed-media-chan.cpp | 238 ++++++++++++++-------------- tests/dbus/text-chan.cpp | 52 +++--- tests/lib/test.cpp | 13 +- tests/lib/test.h | 7 +- tests/pinocchio/cm-basics.cpp | 26 +-- tests/pinocchio/conn-basics.cpp | 36 ++--- tests/pinocchio/handles.cpp | 37 ++--- tests/pinocchio/lib.cpp | 2 +- tools/qt4-client-gen.py | 22 +-- 110 files changed, 773 insertions(+), 983 deletions(-) commit 02988937b75b5b18ac3cd3cad03fddf140f618ca Author: Andre Moreira Magalhaes (andrunko) Date: Fri Apr 3 18:59:33 2009 -0300 Get rid of Client dir. Makefile.am | 2 +- NEWS | 2 +- TelepathyQt4/AbstractInterface | 13 + TelepathyQt4/Account | 13 + TelepathyQt4/AccountInterface | 13 + TelepathyQt4/AccountManager | 13 + TelepathyQt4/AccountManagerInterface | 13 + TelepathyQt4/Channel | 13 + TelepathyQt4/ChannelInterface | 13 + TelepathyQt4/ChannelInterfaceCallStateInterface | 13 + TelepathyQt4/ChannelInterfaceChatStateInterface | 13 + TelepathyQt4/ChannelInterfaceDTMFInterface | 13 + TelepathyQt4/ChannelInterfaceGroupInterface | 13 + TelepathyQt4/ChannelInterfaceHoldInterface | 13 + .../ChannelInterfaceMediaSignallingInterface | 13 + TelepathyQt4/ChannelInterfacePasswordInterface | 13 + TelepathyQt4/ChannelTypeContactListInterface | 13 + TelepathyQt4/ChannelTypeRoomListInterface | 13 + TelepathyQt4/ChannelTypeStreamedMediaInterface | 13 + TelepathyQt4/ChannelTypeTextInterface | 13 + TelepathyQt4/ChannelTypeTubesInterface | 13 + TelepathyQt4/Client/AbstractInterface | 13 - TelepathyQt4/Client/Account | 13 - TelepathyQt4/Client/AccountInterface | 13 - TelepathyQt4/Client/AccountManager | 13 - TelepathyQt4/Client/AccountManagerInterface | 13 - TelepathyQt4/Client/Channel | 13 - TelepathyQt4/Client/ChannelInterface | 13 - .../Client/ChannelInterfaceCallStateInterface | 13 - .../Client/ChannelInterfaceChatStateInterface | 13 - TelepathyQt4/Client/ChannelInterfaceDTMFInterface | 13 - TelepathyQt4/Client/ChannelInterfaceGroupInterface | 13 - TelepathyQt4/Client/ChannelInterfaceHoldInterface | 13 - .../ChannelInterfaceMediaSignallingInterface | 13 - .../Client/ChannelInterfacePasswordInterface | 13 - .../Client/ChannelTypeContactListInterface | 13 - TelepathyQt4/Client/ChannelTypeRoomListInterface | 13 - .../Client/ChannelTypeStreamedMediaInterface | 13 - TelepathyQt4/Client/ChannelTypeTextInterface | 13 - TelepathyQt4/Client/ChannelTypeTubesInterface | 13 - TelepathyQt4/Client/Connection | 13 - TelepathyQt4/Client/ConnectionInterface | 13 - .../Client/ConnectionInterfaceAliasingInterface | 13 - .../Client/ConnectionInterfaceAvatarsInterface | 13 - .../ConnectionInterfaceCapabilitiesInterface | 13 - .../Client/ConnectionInterfaceContactsInterface | 13 - .../Client/ConnectionInterfacePresenceInterface | 13 - .../Client/ConnectionInterfaceRequestsInterface | 13 - .../ConnectionInterfaceSimplePresenceInterface | 13 - TelepathyQt4/Client/ConnectionManager | 13 - TelepathyQt4/Client/ConnectionManagerInterface | 13 - TelepathyQt4/Client/Contact | 13 - TelepathyQt4/Client/ContactManager | 13 - TelepathyQt4/Client/DBus | 13 - TelepathyQt4/Client/DBusDaemonInterface | 13 - TelepathyQt4/Client/DBusProxy | 13 - TelepathyQt4/Client/Feature | 13 - TelepathyQt4/Client/FileTransfer | 13 - TelepathyQt4/Client/IntrospectableInterface | 13 - TelepathyQt4/Client/MediaSessionHandler | 13 - TelepathyQt4/Client/MediaSessionHandlerInterface | 13 - TelepathyQt4/Client/MediaStreamHandler | 13 - TelepathyQt4/Client/MediaStreamHandlerInterface | 13 - TelepathyQt4/Client/Message | 13 - TelepathyQt4/Client/OptionalInterfaceFactory | 13 - TelepathyQt4/Client/PeerInterface | 13 - TelepathyQt4/Client/PendingAccount | 13 - TelepathyQt4/Client/PendingChannel | 13 - TelepathyQt4/Client/PendingConnection | 13 - TelepathyQt4/Client/PendingContactAttributes | 6 - TelepathyQt4/Client/PendingContacts | 13 - TelepathyQt4/Client/PendingFailure | 13 - TelepathyQt4/Client/PendingHandles | 13 - TelepathyQt4/Client/PendingOperation | 13 - TelepathyQt4/Client/PendingReady | 13 - TelepathyQt4/Client/PendingStringList | 13 - TelepathyQt4/Client/PendingSuccess | 13 - TelepathyQt4/Client/PendingVoidMethodCall | 13 - TelepathyQt4/Client/Properties | 13 - TelepathyQt4/Client/PropertiesInterface | 13 - TelepathyQt4/Client/PropertiesInterfaceInterface | 13 - TelepathyQt4/Client/ReadinessHelper | 13 - TelepathyQt4/Client/ReadyObject | 13 - TelepathyQt4/Client/ReceivedMessage | 13 - TelepathyQt4/Client/ReferencedHandles | 12 - TelepathyQt4/Client/ReferencedHandlesIterator | 6 - TelepathyQt4/Client/RoomList | 13 - TelepathyQt4/Client/StatefulDBusProxy | 13 - TelepathyQt4/Client/StatelessDBusProxy | 13 - TelepathyQt4/Client/StreamedMediaChannel | 13 - TelepathyQt4/Client/TextChannel | 13 - TelepathyQt4/Client/Types | 13 - TelepathyQt4/Client/abstract-interface.cpp | 94 - TelepathyQt4/Client/abstract-interface.h | 67 - TelepathyQt4/Client/account-manager.cpp | 633 ------ TelepathyQt4/Client/account-manager.h | 120 - TelepathyQt4/Client/account.cpp | 1036 --------- TelepathyQt4/Client/account.h | 203 -- TelepathyQt4/Client/channel.cpp | 2296 -------------------- TelepathyQt4/Client/channel.h | 318 --- TelepathyQt4/Client/connection-internal.h | 51 - TelepathyQt4/Client/connection-manager-internal.h | 99 - TelepathyQt4/Client/connection-manager.cpp | 682 ------ TelepathyQt4/Client/connection-manager.h | 177 -- TelepathyQt4/Client/connection.cpp | 1456 ------------- TelepathyQt4/Client/connection.h | 224 -- TelepathyQt4/Client/contact-manager.cpp | 952 -------- TelepathyQt4/Client/contact-manager.h | 175 -- TelepathyQt4/Client/contact.cpp | 361 --- TelepathyQt4/Client/contact.h | 141 -- TelepathyQt4/Client/dbus-proxy.cpp | 355 --- TelepathyQt4/Client/dbus-proxy.h | 123 -- TelepathyQt4/Client/dbus.cpp | 25 - TelepathyQt4/Client/dbus.h | 53 - TelepathyQt4/Client/feature.cpp | 65 - TelepathyQt4/Client/feature.h | 72 - TelepathyQt4/Client/file-transfer.cpp | 95 - TelepathyQt4/Client/file-transfer.h | 59 - TelepathyQt4/Client/media-session-handler.cpp | 25 - TelepathyQt4/Client/media-session-handler.h | 49 - TelepathyQt4/Client/media-stream-handler.cpp | 25 - TelepathyQt4/Client/media-stream-handler.h | 49 - TelepathyQt4/Client/message.cpp | 572 ----- TelepathyQt4/Client/message.h | 126 -- TelepathyQt4/Client/optional-interface-factory.cpp | 85 - TelepathyQt4/Client/optional-interface-factory.h | 160 -- TelepathyQt4/Client/pending-account.cpp | 177 -- TelepathyQt4/Client/pending-account.h | 75 - TelepathyQt4/Client/pending-channel.cpp | 362 --- TelepathyQt4/Client/pending-channel.h | 88 - TelepathyQt4/Client/pending-connection.cpp | 200 -- TelepathyQt4/Client/pending-connection.h | 76 - TelepathyQt4/Client/pending-contact-attributes.cpp | 245 --- TelepathyQt4/Client/pending-contact-attributes.h | 80 - TelepathyQt4/Client/pending-contacts.cpp | 427 ---- TelepathyQt4/Client/pending-contacts.h | 102 - TelepathyQt4/Client/pending-handles.cpp | 499 ----- TelepathyQt4/Client/pending-handles.h | 96 - TelepathyQt4/Client/pending-operation.cpp | 193 -- TelepathyQt4/Client/pending-operation.h | 181 -- TelepathyQt4/Client/pending-ready.cpp | 107 - TelepathyQt4/Client/pending-ready.h | 64 - TelepathyQt4/Client/pending-string-list.cpp | 69 - TelepathyQt4/Client/pending-string-list.h | 62 - TelepathyQt4/Client/properties.cpp | 25 - TelepathyQt4/Client/properties.h | 50 - TelepathyQt4/Client/readiness-helper.cpp | 540 ----- TelepathyQt4/Client/readiness-helper.h | 138 -- TelepathyQt4/Client/ready-object.cpp | 145 -- TelepathyQt4/Client/ready-object.h | 69 - TelepathyQt4/Client/referenced-handles.cpp | 303 --- TelepathyQt4/Client/referenced-handles.h | 294 --- TelepathyQt4/Client/room-list.cpp | 94 - TelepathyQt4/Client/room-list.h | 59 - TelepathyQt4/Client/simple-pending-operations.h | 118 - TelepathyQt4/Client/streamed-media-channel.cpp | 864 -------- TelepathyQt4/Client/streamed-media-channel.h | 194 -- TelepathyQt4/Client/text-channel.cpp | 1008 --------- TelepathyQt4/Client/text-channel.h | 150 -- TelepathyQt4/Client/types.h | 61 - TelepathyQt4/Connection | 13 + TelepathyQt4/ConnectionInterface | 13 + TelepathyQt4/ConnectionInterfaceAliasingInterface | 13 + TelepathyQt4/ConnectionInterfaceAvatarsInterface | 13 + .../ConnectionInterfaceCapabilitiesInterface | 13 + TelepathyQt4/ConnectionInterfaceContactsInterface | 13 + TelepathyQt4/ConnectionInterfacePresenceInterface | 13 + TelepathyQt4/ConnectionInterfaceRequestsInterface | 13 + .../ConnectionInterfaceSimplePresenceInterface | 13 + TelepathyQt4/ConnectionManager | 13 + TelepathyQt4/ConnectionManagerInterface | 13 + TelepathyQt4/Contact | 13 + TelepathyQt4/ContactManager | 13 + TelepathyQt4/DBus | 13 + TelepathyQt4/DBusDaemonInterface | 13 + TelepathyQt4/DBusProxy | 13 + TelepathyQt4/Feature | 13 + TelepathyQt4/FileTransfer | 13 + TelepathyQt4/IntrospectableInterface | 13 + TelepathyQt4/Makefile.am | 342 ++- TelepathyQt4/MediaSessionHandler | 13 + TelepathyQt4/MediaSessionHandlerInterface | 13 + TelepathyQt4/MediaStreamHandler | 13 + TelepathyQt4/MediaStreamHandlerInterface | 13 + TelepathyQt4/Message | 13 + TelepathyQt4/OptionalInterfaceFactory | 13 + TelepathyQt4/PeerInterface | 13 + TelepathyQt4/PendingAccount | 13 + TelepathyQt4/PendingChannel | 13 + TelepathyQt4/PendingConnection | 13 + TelepathyQt4/PendingContactAttributes | 6 + TelepathyQt4/PendingContacts | 13 + TelepathyQt4/PendingFailure | 13 + TelepathyQt4/PendingHandles | 13 + TelepathyQt4/PendingOperation | 13 + TelepathyQt4/PendingReady | 13 + TelepathyQt4/PendingStringList | 13 + TelepathyQt4/PendingSuccess | 13 + TelepathyQt4/PendingVoidMethodCall | 13 + TelepathyQt4/Properties | 13 + TelepathyQt4/PropertiesInterface | 13 + TelepathyQt4/PropertiesInterfaceInterface | 13 + TelepathyQt4/Prototype/Account.cpp | 4 +- TelepathyQt4/Prototype/AccountManager.cpp | 4 +- TelepathyQt4/Prototype/AvatarManager.cpp | 2 +- TelepathyQt4/Prototype/CapabilitiesManager.cpp | 2 +- TelepathyQt4/Prototype/ChatChannel.cpp | 4 +- TelepathyQt4/Prototype/Connection.cpp | 4 +- TelepathyQt4/Prototype/ConnectionFacade.cpp | 4 +- TelepathyQt4/Prototype/Contact.cpp | 2 +- TelepathyQt4/Prototype/Contact.h | 2 +- TelepathyQt4/Prototype/ContactManager.cpp | 2 +- TelepathyQt4/Prototype/PresenceManager.cpp | 2 +- TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 4 +- TelepathyQt4/Prototype/StreamedMediaChannel.h | 4 +- TelepathyQt4/ReadinessHelper | 13 + TelepathyQt4/ReadyObject | 13 + TelepathyQt4/ReceivedMessage | 13 + TelepathyQt4/ReferencedHandles | 12 + TelepathyQt4/ReferencedHandlesIterator | 6 + TelepathyQt4/RoomList | 13 + TelepathyQt4/StatefulDBusProxy | 13 + TelepathyQt4/StatelessDBusProxy | 13 + TelepathyQt4/StreamedMediaChannel | 13 + TelepathyQt4/TextChannel | 13 + TelepathyQt4/abstract-interface.cpp | 94 + TelepathyQt4/abstract-interface.h | 67 + TelepathyQt4/account-manager.cpp | 633 ++++++ TelepathyQt4/account-manager.h | 120 + TelepathyQt4/account.cpp | 1036 +++++++++ TelepathyQt4/account.h | 203 ++ TelepathyQt4/channel.cpp | 2296 ++++++++++++++++++++ TelepathyQt4/channel.h | 318 +++ TelepathyQt4/connection-internal.h | 51 + TelepathyQt4/connection-manager-internal.h | 99 + TelepathyQt4/connection-manager.cpp | 682 ++++++ TelepathyQt4/connection-manager.h | 177 ++ TelepathyQt4/connection.cpp | 1456 +++++++++++++ TelepathyQt4/connection.h | 224 ++ TelepathyQt4/contact-manager.cpp | 952 ++++++++ TelepathyQt4/contact-manager.h | 175 ++ TelepathyQt4/contact.cpp | 361 +++ TelepathyQt4/contact.h | 141 ++ TelepathyQt4/dbus-proxy.cpp | 355 +++ TelepathyQt4/dbus-proxy.h | 123 ++ TelepathyQt4/dbus.cpp | 25 + TelepathyQt4/dbus.h | 53 + TelepathyQt4/feature.cpp | 65 + TelepathyQt4/feature.h | 72 + TelepathyQt4/file-transfer.cpp | 95 + TelepathyQt4/file-transfer.h | 59 + TelepathyQt4/header-compile-test.cpp | 22 +- TelepathyQt4/media-session-handler.cpp | 25 + TelepathyQt4/media-session-handler.h | 49 + TelepathyQt4/media-stream-handler.cpp | 25 + TelepathyQt4/media-stream-handler.h | 49 + TelepathyQt4/message.cpp | 572 +++++ TelepathyQt4/message.h | 126 ++ TelepathyQt4/optional-interface-factory.cpp | 85 + TelepathyQt4/optional-interface-factory.h | 160 ++ TelepathyQt4/pending-account.cpp | 177 ++ TelepathyQt4/pending-account.h | 75 + TelepathyQt4/pending-channel.cpp | 362 +++ TelepathyQt4/pending-channel.h | 88 + TelepathyQt4/pending-connection.cpp | 200 ++ TelepathyQt4/pending-connection.h | 76 + TelepathyQt4/pending-contact-attributes.cpp | 245 +++ TelepathyQt4/pending-contact-attributes.h | 80 + TelepathyQt4/pending-contacts.cpp | 427 ++++ TelepathyQt4/pending-contacts.h | 102 + TelepathyQt4/pending-handles.cpp | 499 +++++ TelepathyQt4/pending-handles.h | 96 + TelepathyQt4/pending-operation.cpp | 193 ++ TelepathyQt4/pending-operation.h | 181 ++ TelepathyQt4/pending-ready.cpp | 107 + TelepathyQt4/pending-ready.h | 64 + TelepathyQt4/pending-string-list.cpp | 69 + TelepathyQt4/pending-string-list.h | 62 + TelepathyQt4/properties.cpp | 25 + TelepathyQt4/properties.h | 50 + TelepathyQt4/readiness-helper.cpp | 540 +++++ TelepathyQt4/readiness-helper.h | 138 ++ TelepathyQt4/ready-object.cpp | 145 ++ TelepathyQt4/ready-object.h | 69 + TelepathyQt4/referenced-handles.cpp | 303 +++ TelepathyQt4/referenced-handles.h | 294 +++ TelepathyQt4/room-list.cpp | 94 + TelepathyQt4/room-list.h | 59 + TelepathyQt4/simple-pending-operations.h | 118 + TelepathyQt4/streamed-media-channel.cpp | 864 ++++++++ TelepathyQt4/streamed-media-channel.h | 194 ++ TelepathyQt4/text-channel.cpp | 1008 +++++++++ TelepathyQt4/text-channel.h | 150 ++ TelepathyQt4/types.h | 32 + examples/accounts/account-item.cpp | 4 +- examples/accounts/account-item.h | 4 +- examples/accounts/accounts-window.cpp | 8 +- examples/accounts/accounts-window.h | 2 +- examples/call/call-handler.cpp | 16 +- examples/call/call-handler.h | 4 +- examples/call/call-roster-widget.cpp | 12 +- examples/call/call-roster-widget.h | 2 +- examples/call/call-widget.cpp | 14 +- examples/call/call-widget.h | 6 +- examples/call/call-window.cpp | 12 +- examples/call/call-window.h | 2 +- examples/call/farsight-channel.cpp | 4 +- examples/call/farsight-channel.h | 2 +- examples/extensions/Makefile.am | 2 +- examples/roster/roster-item.h | 2 +- examples/roster/roster-widget.cpp | 12 +- examples/roster/roster-widget.h | 4 +- examples/roster/roster-window.cpp | 8 +- examples/roster/roster-window.h | 2 +- tests/dbus/account-basics.cpp | 12 +- tests/dbus/chan-basics.cpp | 12 +- tests/dbus/chan-group.cpp | 16 +- tests/dbus/cm-basics.cpp | 6 +- tests/dbus/conn-basics.cpp | 6 +- tests/dbus/conn-requests.cpp | 12 +- tests/dbus/conn-roster.cpp | 12 +- tests/dbus/contacts.cpp | 14 +- tests/dbus/handles.cpp | 10 +- tests/dbus/stateful-proxy.cpp | 4 +- tests/dbus/streamed-media-chan.cpp | 12 +- tests/dbus/text-chan.cpp | 10 +- tests/lib/test.cpp | 4 +- tests/lib/test.h | 2 +- tests/pinocchio/cm-basics.cpp | 8 +- tests/pinocchio/conn-basics.cpp | 8 +- tests/pinocchio/handles.cpp | 10 +- tests/pinocchio/lib.cpp | 2 +- tests/pinocchio/lib.h | 2 +- tests/prototype/prototype.cpp | 8 +- tools/qt4-client-gen.py | 4 +- 335 files changed, 19453 insertions(+), 19501 deletions(-) commit a9c24d629d66ad636355f7061ecba5cb4165d45f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 03:03:56 2009 -0300 AccountManager: Improved docs. TelepathyQt4/Client/account-manager.cpp | 231 +++++++++++++++++++++++++------- 1 file changed, 186 insertions(+), 45 deletions(-) commit edf75ef2c3c54e20c8eef6108065444bec0f16a9 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:55:03 2009 -0300 .gitignore: Added doxygen.log to the ignore list. .gitignore | 1 + 1 file changed, 1 insertion(+) commit 196a910468245e78d1d9ae5827df20600696de47 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:52:51 2009 -0300 doxygen.cfg.in: Added QtHelp support. doxygen.cfg.in | 6 ++++++ 1 file changed, 6 insertions(+) commit 381f50cd98318f805e5f4e9dd0fee13d43b4b66c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:51:52 2009 -0300 doxygen.cfg.in: Added custom footer file. Makefile.am | 1 + doxygen-footer.html | 7 +++++++ doxygen.cfg.in | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) commit cbd063256a676cb100b9cf263e4296093f539e19 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:49:55 2009 -0300 doxygen.cfg.in: Added custom header file. Makefile.am | 1 + doxygen-header.html | 30 ++++++++++++++++++++++++++++++ doxygen.cfg.in | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) commit 5679fa060df4c881cc8e9b1cb28ce50f8005f1ba Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:47:55 2009 -0300 doxygen.cfg.in: Added custom css stylesheet. Makefile.am | 1 + doxygen.cfg.in | 2 +- doxygen.css | 429 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 431 insertions(+), 1 deletion(-) commit bee0a32ac0cda5dd331c680bb693997c8266e7eb Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 03:30:17 2009 -0300 main.dox: Added Graphical Class Hierarchy. TelepathyQt4/main.dox | 1 + 1 file changed, 1 insertion(+) commit 78cd21e86312d8d14a8d3b70c0624ab6c040ee5a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 02:20:51 2009 -0300 shared-ptr.dox: Added document explaining the Telepathy-Qt4 shared pointer usage. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/main.dox | 1 + TelepathyQt4/shared-ptr.dox | 57 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) commit bb4329b8eafabad5b030ec7ffef3daa4d0a9411d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:45:01 2009 -0300 async-model.dox: Added document explaining how the Telepathy-Qt4 async model works. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/async-model.dox | 58 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/main.dox | 3 +++ 3 files changed, 62 insertions(+) commit 769f6e9c38f1e3c60b494175931d1f527e4442f3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:42:27 2009 -0300 examples.dox: Added examples page on documentation. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/examples.dox | 199 ++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/main.dox | 1 + doxygen.cfg.in | 2 +- 4 files changed, 202 insertions(+), 1 deletion(-) commit 47f0179e7781b26550cffd05a522d4606877b591 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:38:33 2009 -0300 main.dox: Added main.dox with some introductory documentation. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/main.dox | 129 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) commit f84dc53cc5e6cc6dbd336f1798798ebc01de4404 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:34:41 2009 -0300 doxygen.cfg.in: Generate doc for dox files. doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6c1f07b044e6bc7375f0136b062a68d62891a61a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:33:44 2009 -0300 doxygen.cfg.in: Do not generate docs for TelepathyQt4/Prototype. doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9fbe24a6814a39f8fee0460cfe1ba6619ebee812 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Apr 2 00:30:57 2009 -0300 doxygen.cfg.in: Some tweaks. doxygen.cfg.in | 51 ++++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) commit 520118bcda1f8d8878736219481e03fe2dde9397 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 13 15:14:14 2009 -0300 shared-ptr: Added cast helper methods. TelepathyQt4/shared-ptr.h | 18 ++++++++++++++++++ tests/dbus/streamed-media-chan.cpp | 3 +-- 2 files changed, 19 insertions(+), 2 deletions(-) commit 18475eeb95e9fd0645f2a7ba9ff20e476fdc9081 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 13 13:33:15 2009 -0300 shared-ptr: Changed SharedPtr(T*) to not be a templated constructor. TelepathyQt4/shared-ptr.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 1a8a35e15adeeed08fa71fb2fcdf2200ce866908 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 11:06:23 2009 -0300 shared-ptr: Renamed SharedData to RefCounted. TelepathyQt4/Client/account-manager.h | 2 +- TelepathyQt4/Client/account.h | 2 +- TelepathyQt4/Client/channel.h | 2 +- TelepathyQt4/Client/connection-manager.h | 2 +- TelepathyQt4/Client/connection.h | 2 +- TelepathyQt4/Client/streamed-media-channel.h | 2 +- TelepathyQt4/shared-ptr.h | 14 +++++++------- 7 files changed, 13 insertions(+), 13 deletions(-) commit f5536b5585036b158b0e9585fd1b16cc9e5501db Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 11:01:37 2009 -0300 shared-ptr: Use swap idiom. Rationale (Jonathon Jongsma): [Copy constructor and operator=()] You might consider using the swap() idiom like Glib::RefPtr uses, it's quite elegant and allows greater code reuse: http://svn.gnome.org/viewvc/glibmm/trunk/glib/glibmm/refptr.h?view=markup#l228 TelepathyQt4/shared-ptr.h | 68 +++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 44 deletions(-) commit a69c2665f88838d3cf10fa807513e7c6da5ef42b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 10:10:23 2009 -0300 shared-ptr: Added WeakPtr::toStrongRef that returns a SharedPtr from a WeakPtr. Rationale (Jonathon Jongsma): You also might consider something like the boost::weak_ptr::lock() API that allows you to easily create a SharedPtr from a WeakPtr. Added "lock" idea but using Qt idiom, as used in QWeakPointer. TelepathyQt4/shared-ptr.h | 2 ++ 1 file changed, 2 insertions(+) commit 64fb5a1a50df5e41f19cb495d4fad046bff2dacf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 10:06:35 2009 -0300 shared-ptr: Make SharedPtr(WeakPtr) constructor explicit. Rationale (Jonathon Jongsma): [inline SharedPtr(const WeakPtr &o)] It's probably best to make this explicit as well so that converting from a weak pointer to a shared pointer is only done when it's intentional. You also might consider something like the boost::weak_ptr::lock() API that allows you to easily create a SharedPtr from a WeakPtr. TelepathyQt4/Client/contact-manager.cpp | 2 +- TelepathyQt4/Client/pending-account.cpp | 2 +- TelepathyQt4/Client/pending-channel.cpp | 13 +++++++------ TelepathyQt4/Client/pending-connection.cpp | 2 +- TelepathyQt4/Client/referenced-handles.cpp | 2 +- TelepathyQt4/Client/streamed-media-channel.cpp | 2 +- TelepathyQt4/shared-ptr.h | 21 +-------------------- 7 files changed, 13 insertions(+), 31 deletions(-) commit 9ee65826f5427204045b95ee2ac57f655b050910 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 09:32:16 2009 -0300 shared-ptr: removed template inline SharedPtr(const SharedPtr &o). Rationale (Jonathon Jongsma): [template inline SharedPtr(const SharedPtr &o)] I don't think this constructor is a good idea. I assume this is designed so that you can easily convert from a derived class pointer to a base class pointer as you would with raw pointers, but I think it's much better to make the programmer state explicitly what they want to do. And in any case, dynamic_cast is probably the more appropriate cast in this situation. See also boost::static_pointer_cast/dynamic_pointer_cast/etc or Glib::RefPtr::cast_static/cast_dynamic/etc. TelepathyQt4/Client/pending-channel.cpp | 20 ++++++++++++-------- TelepathyQt4/shared-ptr.h | 2 -- tests/dbus/streamed-media-chan.cpp | 3 ++- tests/dbus/text-chan.cpp | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) commit 59b465a360bc85e2665eab962fc1d64b622112c4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 09:34:44 2009 -0300 shared-ptr: Make SharedData destructor virtual. TelepathyQt4/shared-ptr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 82b4e574c5a99ddf30d123480d2286f0fa18d521 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Apr 7 09:46:29 2009 -0300 shared-ptr: Changed SharedPtr(T*) to be a templated constructor. Rationale (Jonathon Jongsma): [explicit inline SharedPtr(T *d) : d(d) { if (d) { d->ref(); } }] boost::shared_ptr uses a templated constructor for this case (e.g. template SharedPtr(Y *d) ...) which allows it to somehow remember the actual pointer type passed so that if it was a different type that is convertible to T*, it will call delete with its original type and thus will not leak even if Y does not have a virtual destructor). Granted, they probably use some black magic to accomplish this, but it might be worth considering. TelepathyQt4/Client/account.cpp | 1 - TelepathyQt4/shared-ptr.h | 3 ++- tests/dbus/account-basics.cpp | 2 +- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/chan-group.cpp | 2 +- tests/dbus/cm-basics.cpp | 2 +- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/conn-roster.cpp | 2 +- tests/dbus/contacts.cpp | 2 +- tests/dbus/handles.cpp | 2 +- tests/dbus/streamed-media-chan.cpp | 2 +- tests/dbus/text-chan.cpp | 4 +--- 13 files changed, 13 insertions(+), 15 deletions(-) commit 698461b1c417821199d6b52560a45dc367f0f732 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 6 14:36:10 2009 -0300 shared-ptr: Make SharedPtr(T*) constructor explicit. TelepathyQt4/Client/account-manager.cpp | 2 +- TelepathyQt4/Client/channel.cpp | 2 +- TelepathyQt4/Client/connection-manager.cpp | 3 ++- TelepathyQt4/Client/connection.cpp | 33 ++++++++++++++++---------- TelepathyQt4/Client/message.cpp | 1 - TelepathyQt4/Client/streamed-media-channel.cpp | 10 ++++---- TelepathyQt4/Client/text-channel.cpp | 8 +++---- TelepathyQt4/shared-ptr.h | 2 +- tests/dbus/text-chan.cpp | 2 +- 9 files changed, 37 insertions(+), 26 deletions(-) commit 2462e349ad36271d8fecf96403ea1516a12bf4d1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 6 14:33:01 2009 -0300 shared-ptr: Make sure we WeakPtr deletes wd on operator=(SharedPtr). TelepathyQt4/shared-ptr.h | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) commit 06c9ca6d89d16b4d5fc91a049e9e01523249f5ab Author: Andre Moreira Magalhaes (andrunko) Date: Mon Apr 6 14:03:34 2009 -0300 shared-ptr: Fixed memory leak. TelepathyQt4/shared-ptr.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 844efa70d5cda0ba9854986f15e8e1ee3e898036 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 23:27:52 2009 -0300 ReadinessHelper: Be more defensive regarding PendingOperations finish/destroy. TelepathyQt4/Client/connection.cpp | 2 +- TelepathyQt4/Client/pending-ready.cpp | 4 ++-- TelepathyQt4/Client/pending-ready.h | 3 ++- TelepathyQt4/Client/readiness-helper.cpp | 38 +++++++++++++++++++++++++++----- TelepathyQt4/Client/readiness-helper.h | 3 +++ 5 files changed, 40 insertions(+), 10 deletions(-) commit 6111e1baa45b6c369e918519d0ed346e4e24eb66 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 21:25:01 2009 -0300 Updated NEWS. NEWS | 7 +++++++ 1 file changed, 7 insertions(+) commit 2ad654096cc2b20bb3fff6efadbe3cecc2d387a5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 20:33:40 2009 -0300 call example: End call if unable to create any stream for outgoing calls. examples/call/call-widget.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 16eb39e7fbddf2b0de1621dedda9d0c4837cdba3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 20:29:16 2009 -0300 Improved call/roster examples. examples/call/call-handler.cpp | 4 ++-- examples/call/call-window.cpp | 4 ++-- examples/roster/roster-widget.cpp | 22 +++++++++++++++++----- examples/roster/roster-widget.h | 8 ++++---- examples/roster/roster-window.cpp | 4 ++-- 5 files changed, 27 insertions(+), 15 deletions(-) commit ac1ea87c072c3b392d4d64c810bc199aa13308ca Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:52:52 2009 -0300 Account: Removed manager method and use QDBusConnection/busName to create account. Rationale: Before this change, to create a Account, the user would pass the AccountManagerPtr as a param. This way, it's desirable that manager always return the proper manager used on Account creation, but this was not true in all cases, as the account manager could be destroyed while the account was still alive. Example: AccountPtr acc; { AccountManagerPtr am = AccountManager::create(); ... acc = Account::create(am, path); } // am is detroyed - nobody referencing it, Account HAD a weakref to it Q_ASSERT(acc->manager()); // fail As the AccountManager is supposed to be a singleton, there is no need for this method, and to avoid misbehaviour let's remove it. TelepathyQt4/Client/account-manager.cpp | 2 +- TelepathyQt4/Client/account.cpp | 51 +++++++++++++++++++++------------ TelepathyQt4/Client/account.h | 11 +++---- TelepathyQt4/Client/pending-account.cpp | 4 ++- examples/accounts/account-item.cpp | 3 +- 5 files changed, 44 insertions(+), 27 deletions(-) commit 346d3ef3cc515a295c441e36f054fc832d857a98 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 20:04:23 2009 -0300 streamed-media-chan test: Proper create channel. tests/dbus/streamed-media-chan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5639f8aaeb0ee0c820355a406620bff2634bfcf6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 20:04:06 2009 -0300 text-chan test: Proper create channel. tests/dbus/text-chan.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 988c9dc3d862ed1dcd46f7f182c1d7d3d4375115 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:34:53 2009 -0300 PendingConnection: Hold a weak ref to connection manager. TelepathyQt4/Client/pending-connection.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit b719b155b6130ea55cf658b75b301c6dfb145f15 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:34:40 2009 -0300 PendingChannel: Hold a weak ref to connection. TelepathyQt4/Client/pending-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4287a16fbd4f84c37b48fe899688b4d0f8cf3cdf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:34:25 2009 -0300 PendingAccount: Hold a weak ref to account manager. TelepathyQt4/Client/pending-account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2dbc7b1fdb58669c66eef6b8297a1f2ff3180215 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:25:55 2009 -0300 MediaStream: Return StreamedMediaChannelPtr on channel() method. TelepathyQt4/Client/streamed-media-channel.cpp | 44 ++++++++++++++------------ TelepathyQt4/Client/streamed-media-channel.h | 12 +++---- tests/dbus/streamed-media-chan.cpp | 2 +- 3 files changed, 28 insertions(+), 30 deletions(-) commit 4746dc026afb11a501bb51583db1341b8ed9fbb9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:25:30 2009 -0300 PendingHandles: Return ConnectionPtr on connection() method. TelepathyQt4/Client/pending-handles.cpp | 18 +++++++++--------- TelepathyQt4/Client/pending-handles.h | 8 ++++---- tests/pinocchio/handles.cpp | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) commit d875386a1b5c24001717a173073ccc4e883e803c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:11:50 2009 -0300 PendingContactAttributes: Return ConnectionPtr on connection() method. TelepathyQt4/Client/pending-contact-attributes.cpp | 19 +++++++++++-------- TelepathyQt4/Client/pending-contact-attributes.h | 9 +++++---- 2 files changed, 16 insertions(+), 12 deletions(-) commit c8ba085bd9094c4651f4385400e97ad2879b15bf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 19:07:32 2009 -0300 ReferencedHandles: Return ConnectionPtr on connection() method. TelepathyQt4/Client/pending-contacts.cpp | 4 +-- TelepathyQt4/Client/referenced-handles.cpp | 54 +++++++++++++++++++----------- TelepathyQt4/Client/referenced-handles.h | 14 +++----- tests/pinocchio/handles.cpp | 4 +-- 4 files changed, 43 insertions(+), 33 deletions(-) commit 3e9b5c943fd7cbd1b891f47787ee6cb0f62c6083 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 18:53:48 2009 -0300 ContactManager: Return ConnectionPtr on connection() method. TelepathyQt4/Client/connection.cpp | 9 ++++++++- TelepathyQt4/Client/contact-manager.cpp | 26 +++++++++++++++++--------- TelepathyQt4/Client/contact-manager.h | 4 ++-- TelepathyQt4/Client/pending-contacts.cpp | 12 ++++++------ examples/call/call-handler.cpp | 2 +- tests/dbus/contacts.cpp | 2 +- 6 files changed, 35 insertions(+), 20 deletions(-) commit 1b9c9f0eb8f5b97aa5866d4021ed5394b16dfe5c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 18:28:12 2009 -0300 RoomListChannel: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/file-transfer.cpp | 13 +++++++++---- TelepathyQt4/Client/file-transfer.h | 9 +++++++-- TelepathyQt4/Client/pending-channel.cpp | 5 ++--- 3 files changed, 18 insertions(+), 9 deletions(-) commit d4cd1ba47833a01b0dbcf7d80b73310c1d9e92b7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 18:16:01 2009 -0300 RoomList: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/pending-channel.cpp | 5 ++--- TelepathyQt4/Client/room-list.cpp | 13 +++++++++---- TelepathyQt4/Client/room-list.h | 9 +++++++-- 3 files changed, 18 insertions(+), 9 deletions(-) commit 945757ed6483cf2f70a643e6e0ce8089988745a1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 16:48:59 2009 -0300 TextChannel: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/message.cpp | 12 ++++++------ TelepathyQt4/Client/message.h | 6 ++++-- TelepathyQt4/Client/pending-channel.cpp | 5 ++--- TelepathyQt4/Client/text-channel.cpp | 13 +++++++++---- TelepathyQt4/Client/text-channel.h | 9 +++++++-- tests/dbus/text-chan.cpp | 20 ++++++++------------ 6 files changed, 36 insertions(+), 29 deletions(-) commit db39d7f221a2444489cecc1c6d18dfb55c98da54 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 16:18:07 2009 -0300 StreamedMediaChannel: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/pending-channel.cpp | 5 ++--- TelepathyQt4/Client/streamed-media-channel.cpp | 13 +++++++++---- TelepathyQt4/Client/streamed-media-channel.h | 9 +++++++-- examples/call/call-handler.cpp | 7 +++---- examples/call/call-handler.h | 4 ++-- examples/call/call-widget.cpp | 16 ++++++++-------- examples/call/call-widget.h | 6 +++--- examples/call/call-window.cpp | 2 +- examples/call/farsight-channel.cpp | 9 +++++---- examples/call/farsight-channel.h | 5 +++-- tests/dbus/streamed-media-chan.cpp | 4 ++-- 11 files changed, 45 insertions(+), 35 deletions(-) commit e47aea4edc6a54d412af7499d14618223dabfc46 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 16:06:31 2009 -0300 Channel: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/channel.cpp | 29 ++++++++++++--------- TelepathyQt4/Client/channel.h | 12 +++++---- TelepathyQt4/Client/file-transfer.cpp | 4 ++- TelepathyQt4/Client/pending-channel.cpp | 35 +++++++++++++++----------- TelepathyQt4/Client/pending-channel.h | 6 ++--- TelepathyQt4/Client/room-list.cpp | 4 ++- TelepathyQt4/Client/streamed-media-channel.cpp | 2 +- TelepathyQt4/Client/text-channel.cpp | 2 +- examples/call/call-handler.cpp | 2 +- examples/call/farsight-channel.cpp | 2 +- 10 files changed, 57 insertions(+), 41 deletions(-) commit f6110e7a00889a1eca4caa48c7dbac6a021f9e93 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 15:40:10 2009 -0300 Connection: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/account.cpp | 4 +-- TelepathyQt4/Client/connection.cpp | 24 ++++++++++------ TelepathyQt4/Client/connection.h | 16 +++++------ TelepathyQt4/Client/pending-connection.cpp | 17 ++++++------ TelepathyQt4/Client/pending-connection.h | 4 +-- tests/dbus/chan-basics.cpp | 15 ++++------ tests/dbus/chan-group.cpp | 15 ++++------ tests/dbus/conn-basics.cpp | 15 ++++------ tests/dbus/conn-requests.cpp | 11 +++----- tests/dbus/conn-roster.cpp | 11 +++----- tests/dbus/contacts.cpp | 29 +++++++++----------- tests/dbus/handles.cpp | 15 ++++------ tests/dbus/streamed-media-chan.cpp | 15 ++++------ tests/dbus/text-chan.cpp | 15 ++++------ tests/pinocchio/conn-basics.cpp | 44 ++++++++++++++---------------- tests/pinocchio/handles.cpp | 33 +++++++++------------- 16 files changed, 126 insertions(+), 157 deletions(-) commit 0987b53fdfa4cce8ae46381b4935c8838f16300c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 15:12:01 2009 -0300 ConnectionManager: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/account.cpp | 8 ++++---- TelepathyQt4/Client/connection-manager.cpp | 22 +++++++++++++++------- TelepathyQt4/Client/connection-manager.h | 13 ++++++++----- examples/call/call-window.cpp | 4 ++-- examples/call/call-window.h | 2 +- examples/roster/roster-window.cpp | 2 +- examples/roster/roster-window.h | 2 +- tests/dbus/cm-basics.cpp | 9 ++------- tests/pinocchio/cm-basics.cpp | 22 ++-------------------- 9 files changed, 36 insertions(+), 48 deletions(-) commit f1cdaa0f9f5c1a4d4e6c1eb2c9ae5620a0786a85 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 12:57:47 2009 -0300 Account: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/account-manager.cpp | 3 +-- TelepathyQt4/Client/account.cpp | 20 ++++++++++++-------- TelepathyQt4/Client/account.h | 8 +++++--- TelepathyQt4/Client/pending-account.cpp | 15 +++++++-------- TelepathyQt4/Client/pending-account.h | 4 ++-- examples/accounts/account-item.cpp | 31 ++++++++++++++++--------------- examples/accounts/account-item.h | 2 +- 7 files changed, 44 insertions(+), 39 deletions(-) commit f4e311765b7aa9def094f64792e93f05aa165989 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 12:06:16 2009 -0300 AccountManager: Make constructor protected and added public create method that returns a SharedPtr. TelepathyQt4/Client/account-manager.cpp | 22 ++++++++++++++-------- TelepathyQt4/Client/account-manager.h | 7 +++++-- examples/accounts/account-item.cpp | 4 ++-- examples/accounts/account-item.h | 3 ++- examples/accounts/accounts-window.cpp | 4 ++-- examples/accounts/accounts-window.h | 5 +++-- tests/dbus/account-basics.cpp | 9 ++------- 7 files changed, 30 insertions(+), 24 deletions(-) commit d9ca75293336496315c1c70591b1657e9ca695ae Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 11:30:47 2009 -0300 Added Client/Types and moved all XXXPtr typedefs to it. Proper typedef classes using SharedPtr and make them inherit SharedData. TelepathyQt4/Client/Types | 13 ++++++ TelepathyQt4/Client/account-manager.h | 8 ++-- TelepathyQt4/Client/account.h | 8 ++-- TelepathyQt4/Client/channel.h | 8 ++-- TelepathyQt4/Client/connection-manager.h | 8 ++-- TelepathyQt4/Client/connection.h | 8 ++-- TelepathyQt4/Client/file-transfer.h | 2 - TelepathyQt4/Client/room-list.h | 2 - TelepathyQt4/Client/streamed-media-channel.h | 8 ++-- TelepathyQt4/Client/text-channel.h | 2 - TelepathyQt4/Client/types.h | 61 ++++++++++++++++++++++++++++ TelepathyQt4/Makefile.am | 4 +- 12 files changed, 95 insertions(+), 37 deletions(-) commit bdde9e7082e7bf6080a8f0b1ffb5e0b032a85cc5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 16:48:23 2009 -0300 Added fancy headers for WeakPtr/SharedData. TelepathyQt4/Makefile.am | 2 ++ TelepathyQt4/SharedData | 13 +++++++++++++ TelepathyQt4/WeakPtr | 13 +++++++++++++ 3 files changed, 28 insertions(+) commit 16b3b6b622c75ef5a81e6f71547c279dca81061a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 31 16:46:55 2009 -0300 WeakPtr: Fixed operator=(const SharedPtr &). TelepathyQt4/shared-ptr.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6ffc27f901eaad73afe7f6cce3364ee205827e5c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 30 17:05:48 2009 -0300 Added SharedData/SharedPtr/WeakPtr classes. TelepathyQt4/Makefile.am | 2 + TelepathyQt4/SharedPtr | 13 +++ TelepathyQt4/shared-ptr.h | 229 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 244 insertions(+) commit 20b28976ecb1c01a28da4b730e087f911ab1bf1e Merge: 0a79329 01eda14 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:35:26 2009 -0300 Merge branch 'bug20583' Reviewed-by: Simon McVittie (smcv) commit 0a7932966d10b2e303c44c6d34126ebcb721f919 Merge: 55f9fc5 187dfb2 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:34:49 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 01eda14f37fccb833115bcdc482a6f921918b215 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:31:18 2009 -0300 ContactManager: Do not claim to support contact features if the connection Contacts interface is not present. TelepathyQt4/Client/contact-manager.cpp | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) commit 5ef8c8c85526271f419d7782bca1fdf652dc9a4f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:28:05 2009 -0300 ContactManager: Removed isSupported method (not needed anymore). We now fallback to creating contacts even if Connection contacts interface is not supported, so ContactManager is always supported. TelepathyQt4/Client/contact-manager.cpp | 16 ---------------- TelepathyQt4/Client/contact-manager.h | 1 - tests/dbus/contacts.cpp | 1 - 3 files changed, 18 deletions(-) commit cc219fe00799829d16ad0008bccc7aa63630ac52 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:21:43 2009 -0300 Updated NEWS. NEWS | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 4a78d91a77dad0e3b7f49a544e8e9b41e5b2b53f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:20:04 2009 -0300 contacts test: Added fallback test for connection without Contacts interface. tests/dbus/contacts.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) commit f3a17f35eef02cc29273154886d9a44cea1995b4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:19:30 2009 -0300 Fixed bug 20583: Contact objects don't work without the Contacts interface. TelepathyQt4/Client/connection.cpp | 2 +- TelepathyQt4/Client/connection.h | 1 + TelepathyQt4/Client/contact-manager.cpp | 45 +++++-------- TelepathyQt4/Client/pending-contacts.cpp | 110 ++++++++++++++++++++++++++++++- TelepathyQt4/Client/pending-contacts.h | 8 ++- TelepathyQt4/Client/referenced-handles.h | 1 + 6 files changed, 133 insertions(+), 34 deletions(-) commit f947a2ae8f00990988a1d04153d5c41825e537b6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 14:17:20 2009 -0300 PendingHandles: Added fallback for HoldHandles. Fallback to one to one handle when HoldHandles fail. TelepathyQt4/Client/pending-handles.cpp | 96 ++++++++++++++++++++++++++++++++- TelepathyQt4/Client/pending-handles.h | 3 ++ 2 files changed, 97 insertions(+), 2 deletions(-) commit 55f9fc5e7e8691e792a1fcabdd6432b95353a427 Merge: a69b38c 753ce9f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 11:45:15 2009 -0300 Merge branch 'bug20584' Conflicts: NEWS Reviewed-by: Simon McVittie (smcv) commit 753ce9f739fd93d59959d2caa2f475f54b3a29db Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 11:40:20 2009 -0300 Updated NEWS. NEWS | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 187dfb2d5017c7759b1a6cc6fab8b6bd4dbf78e9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 11:32:40 2009 -0300 streamed-media-chan: Do not exit loop on onGroupMembersChanged slot (just cache the result). tests/dbus/streamed-media-chan.cpp | 40 +++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 22 deletions(-) commit d45ea73e07004e02d7edf3a9cb66850d35183d3d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 11:09:22 2009 -0300 streamed-media-chan test: Fixed "no answer test". tests/dbus/streamed-media-chan.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit acd0fb2a49aeb5a3004134146079b4dcd403df46 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 25 11:02:13 2009 -0300 Bump tp-glib dependency to 0.7.28. Fixed connection and tests now that PendingHandles do not finish with error when the error is non-critical (fixed on 0.7.28). TelepathyQt4/Client/connection.cpp | 12 ++++++------ configure.ac | 2 +- tests/dbus/contacts.cpp | 26 +++++++++++--------------- 3 files changed, 18 insertions(+), 22 deletions(-) commit e9b97b2e9f413e7df41f4a9e937a03039cd0cd17 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 15:31:06 2009 -0300 PendingHandles: Split request/hold handles slots. TelepathyQt4/Client/pending-handles.cpp | 126 ++++++++++++++++---------------- TelepathyQt4/Client/pending-handles.h | 3 +- 2 files changed, 65 insertions(+), 64 deletions(-) commit ca41b48db2b6cf466e4a778fd842b57889182cc0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 15:19:52 2009 -0300 PendingHandles: Finish with non error if the error is not fatal. TelepathyQt4/Client/pending-contacts.cpp | 2 -- TelepathyQt4/Client/pending-handles.cpp | 50 +++++++++++++++++++++----------- tests/dbus/contacts.cpp | 22 ++++++++++---- 3 files changed, 49 insertions(+), 25 deletions(-) commit 9be367eb0af748769c0f1402c8b045f5b44351ab Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:51:47 2009 -0300 PendingHandles: Only fallback (RequestHandles) if error is InvalidHandle, NotAvailable or InvalidArgument. TelepathyQt4/Client/pending-handles.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) commit ea4009dfdaf7608b64b6fc6acd6eeda339bc0bff Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:47:00 2009 -0300 PendingHandles: Renamed Private::requests to requestsFinished. TelepathyQt4/Client/pending-handles.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 7e51f2b740ed67dfce561057f52145a6db45f72d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:44:23 2009 -0300 PendingHandles: Make slots names more clear. TelepathyQt4/Client/pending-handles.cpp | 10 +++++----- TelepathyQt4/Client/pending-handles.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) commit cc4c40ff3251db689e4db76b091c12c45b94884e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:08:31 2009 -0300 PendingHandles: Warn when trying to access handles without finished. TelepathyQt4/Client/pending-handles.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 621fd0ff63a3f88d81e62b4e8f366ded53cf2cff Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:07:06 2009 -0300 PendingHandles: Access private members directly, instead of calling methods. TelepathyQt4/Client/pending-handles.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 1e1cd76011f2186c656eed55108413f53a1748dd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:06:50 2009 -0300 PendingHandles: Fixed coding style. TelepathyQt4/Client/pending-handles.cpp | 23 ++++++++++++++--------- TelepathyQt4/Client/pending-handles.h | 10 +++++----- 2 files changed, 19 insertions(+), 14 deletions(-) commit 795f708c2e00ba758e6d0dff61d765034f74a024 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 14:00:05 2009 -0300 PendingHandles: Moved docs to cpp. TelepathyQt4/Client/pending-handles.cpp | 77 ++++++++++++++++++++++++++ TelepathyQt4/Client/pending-handles.h | 96 ++------------------------------- 2 files changed, 81 insertions(+), 92 deletions(-) commit ac5578f24d64f20d05543f5fc9cd361f0c7232ea Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 13:54:46 2009 -0300 [Bug 20584] New: Contact object creation doesn't survive bad IDs or handles Fixed bug 20584. TelepathyQt4/Client/pending-contacts.cpp | 27 +++++++++++++++++++++++++++ TelepathyQt4/Client/pending-contacts.h | 3 +++ tests/dbus/contacts.cpp | 7 ++++++- 3 files changed, 36 insertions(+), 1 deletion(-) commit 0767587ecaa3613afe57412ce26203996f01cb83 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 24 13:36:28 2009 -0300 PendingHandles: Do not fail if one of the requested identifiers is valid. Added validIds, invalidIds methods. TelepathyQt4/Client/connection.cpp | 29 +----- TelepathyQt4/Client/pending-handles.cpp | 155 +++++++++++++++++++++++++++++--- TelepathyQt4/Client/pending-handles.h | 8 +- tests/dbus/contacts.cpp | 4 +- 4 files changed, 156 insertions(+), 40 deletions(-) commit a69b38c63922237f8beed64677215e1dcf298823 Author: Simon McVittie Date: Mon Mar 23 18:55:39 2009 +0000 Start 0.1.3 development NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 7d42e13c275c6151bf15a4bce375e1ccde08c5db Author: Simon McVittie Date: Mon Mar 23 17:09:36 2009 +0000 Prepare release 0.1.2 NEWS | 4 +++- configure.ac | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit e4c77a1c7b87399e7b89e37de663f61d8118a113 Author: Simon McVittie Date: Mon Mar 23 17:09:21 2009 +0000 Consistently call bus names "busName" instead of "serviceName" D-Bus upstream generally discourage the use of the term "service name" - officially, things like ":1.42" are /unique bus names/, things like "org.freedesktop.Telepathy.AccountManager" are /well-known bus names/, and /bus names/ are either of those. This is the terminology used in telepathy-spec and in DBusProxy, too. NEWS | 2 +- TelepathyQt4/Client/account.cpp | 4 +-- TelepathyQt4/Client/connection.cpp | 32 ++++++++++++----------- TelepathyQt4/Client/connection.h | 4 +-- TelepathyQt4/Client/pending-connection.cpp | 41 +++++++++++++++--------------- TelepathyQt4/Client/pending-connection.h | 2 +- tools/qt4-client-gen.py | 16 ++++++------ 7 files changed, 52 insertions(+), 49 deletions(-) commit 590c9879ed7adc68c49819d967f16c018a22c6e0 Author: Simon McVittie Date: Mon Mar 23 16:19:30 2009 +0000 Clean up and simplify header search paths Ensuring that $(top_srcdir) and $(top_builddir) are first on the -I path is always a good idea - it means we always use this library's headers, and not those of an installed copy of telepathy-qt4 that might be on the -I path (due to sharing a directory with the installed telepathy-glib). AM_CPPFLAGS is passed to every compilation, so we can use it for both C and C++. It's also exactly what we want when running moc. It also seems a good idea to make it explicit that we're linking QtCore. TelepathyQt4/Makefile.am | 19 ++++++++++--------- TelepathyQt4/Prototype/Makefile.am | 16 ++++++++-------- examples/accounts/Makefile.am | 10 +++++++--- examples/call/Makefile.am | 13 ++++++++----- examples/extensions/Makefile.am | 7 +++++-- examples/roster/Makefile.am | 11 ++++++++--- tests/Makefile.am | 13 +++++-------- tests/dbus/Makefile.am | 15 ++++++--------- tests/lib/Makefile.am | 15 ++++++--------- tests/pinocchio/Makefile.am | 13 +++++-------- tests/prototype/Makefile.am | 14 +++++--------- 11 files changed, 73 insertions(+), 73 deletions(-) commit 2c953406b14c0b4d950f6d45eeb50055e0121088 Author: Simon McVittie Date: Mon Mar 23 15:53:47 2009 +0000 Fix inclusion order in call example, and be more explicit $(TP_QT4_CFLAGS) has to come first, despite the usual rule that higher-level libraries come later, so that if telepathy-glib, telepathy-farsight and telepathy-qt4 are all installed in /usr/include/telepathy-1.0 (this is currently true), the copy of telepathy-qt4 currently being built is used rather than the system copy. Including telepathy-glib's CFLAGS is probably unnecessary, but we should do it anyway - explicit is better than implicit. Likewise for the libraries. examples/call/Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 7306cabd883424732ecf69a033d257131122a8c8 Author: Simon McVittie Date: Mon Mar 23 15:33:03 2009 +0000 call example: fix copyright notices Copyright (call) 2009 looks like overzealous use of sed... examples/call/call-handler.cpp | 3 ++- examples/call/call-handler.h | 3 ++- examples/call/call-roster-widget.cpp | 3 ++- examples/call/call-roster-widget.h | 3 ++- examples/call/call-widget.cpp | 3 ++- examples/call/call-widget.h | 3 ++- examples/call/call-window.cpp | 3 ++- examples/call/call-window.h | 3 ++- examples/call/farsight-channel.cpp | 4 ++-- examples/call/farsight-channel.h | 4 ++-- examples/call/video-widget.cpp | 3 ++- examples/call/video-widget.h | 3 ++- 12 files changed, 24 insertions(+), 14 deletions(-) commit 8d48515d57d8b02ccb0e63ba459003fb701e3dbb Author: Simon McVittie Date: Mon Mar 23 15:26:14 2009 +0000 .gitignore: Ignore with-session-bus droppings .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 159c770d7d405cee70fc652fd7b3c8de6f2ef45a Author: Simon McVittie Date: Mon Mar 23 15:25:23 2009 +0000 NEWS, README: update for 0.1.2 NEWS | 36 ++++++++++++++++++++++++++++++++++++ README | 5 +++++ 2 files changed, 41 insertions(+) commit fe0a18c64705547f2c299b2a069282d85439f214 Merge: 7b0c980 f92dac4 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 23 10:23:51 2009 -0300 Merge branch 'streamed-media' Reviewed-by: Simon McVittie (smcv) commit f92dac4a0723c5a5a1b31265d9b8a26832536661 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 23 10:19:01 2009 -0300 streamed-media-chan test: Added more checks after channel is invalidated. tests/dbus/streamed-media-chan.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 7cacccd8ffe5781dbd58f8b9d44ff9fb2c380279 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 16:11:18 2009 -0300 streamed-media-chan test: Added "busy", "no answer", "terminate" test simulations. tests/dbus/streamed-media-chan.cpp | 238 +++++++++++++++++++++++++++++++++++-- 1 file changed, 225 insertions(+), 13 deletions(-) commit 010bf711e6ffc606f834f5e5b5cb29d7db5e1ea9 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 11:00:00 2009 -0300 configure.ac: Merge gst/tp-farsight checks. configure.ac | 16 ++-------------- examples/call/Makefile.am | 2 -- 2 files changed, 2 insertions(+), 16 deletions(-) commit 3f8536433c2f4ad37db0494db7b22bf210f75720 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 10:57:01 2009 -0300 streamed-media-chan test: Fixed (there is no guarantee the stream direction will be bidirectional at this point). tests/dbus/streamed-media-chan.cpp | 1 - 1 file changed, 1 deletion(-) commit 30358c9a9d781ccba5952ff55c138add024e1c08 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 10:56:27 2009 -0300 streamed-media-chan test: Link to libtp-glib-tests directly. tests/dbus/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8b3e861cf3d4fdb77057926df940bb1f4cf5ac59 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 10:54:34 2009 -0300 StreamedMediaChannel: Do not try to retrieve the stream contact if the handle is 0. TelepathyQt4/Client/streamed-media-channel.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit eb52ef8bec4e4ab98e6d179b236c7f45bc49d7e2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 10:51:45 2009 -0300 StreamedMediaChannel: Update stream state/direction when stream is retrieved even if it already exists. TelepathyQt4/Client/streamed-media-channel.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) commit 295e582d13979efcabfc8b196f15232d56fc95fd Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 10:39:15 2009 -0300 StreamedMediaChannel: Do not assert if the CM is bug. TelepathyQt4/Client/streamed-media-channel.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit 65b15c2f6336ed998d5a07734f27046450c606b5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 20 10:35:30 2009 -0300 ReadyObject/ReadinessHelper: Removed DBusProxy from constructors and receive just a QObject. If the QObject is a DBusProxy, properly handle proxy invalidation. TelepathyQt4/Client/readiness-helper.cpp | 19 +++++++++---------- TelepathyQt4/Client/readiness-helper.h | 3 +-- TelepathyQt4/Client/ready-object.cpp | 25 +++++-------------------- TelepathyQt4/Client/ready-object.h | 5 +---- TelepathyQt4/Client/streamed-media-channel.cpp | 2 +- 5 files changed, 17 insertions(+), 37 deletions(-) commit 3e47a2c41887205de36cbf4012f8fd4a7bb2f576 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 22:39:36 2009 -0300 Added automated tests for StreamedMediaChannel. TelepathyQt4/Client/connection.cpp | 1 - tests/dbus/Makefile.am | 5 + tests/dbus/streamed-media-chan.cpp | 595 +++++++++++++++++++++++++++++++++++++ 3 files changed, 600 insertions(+), 1 deletion(-) commit 0696a14c53dae804d16f998a40d88a155604944f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 21:12:42 2009 -0300 StreamedMediaChannel: Removed removeStreams(UIntList) method and added removeStream(MediaStreamPtr) method. Removed removeStreams(UIntList) as there is no need to have a method receiving the stream ids, as the user will always have the stream pointer in case the stream exists. TelepathyQt4/Client/streamed-media-channel.cpp | 21 +++++++++++---------- TelepathyQt4/Client/streamed-media-channel.h | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) commit d2f2f6b996b9542c8ff26d5a88e1d002e38053c0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 21:08:23 2009 -0300 StreamedMediaChannel: Removed MediaStream::remove method in favor of StreamedMedia::removeStreams methods. TelepathyQt4/Client/streamed-media-channel.cpp | 11 ----------- TelepathyQt4/Client/streamed-media-channel.h | 1 - 2 files changed, 12 deletions(-) commit 7ab5d93b00999e3425cf1dab55b5a8a213c40528 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 21:00:29 2009 -0300 StreamedMediaChannel: Renamed MediaStream::requestStreamDirection to requestDirection. TelepathyQt4/Client/streamed-media-channel.cpp | 8 ++++---- TelepathyQt4/Client/streamed-media-channel.h | 4 ++-- examples/call/call-widget.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) commit f9fd9ddbab10614596b19b9bf7710f442f8d0f80 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 20:55:07 2009 -0300 StreamedMediaChannel: Added streamsForType method. TelepathyQt4/Client/streamed-media-channel.cpp | 19 +++++++++++++++++++ TelepathyQt4/Client/streamed-media-channel.h | 1 + 2 files changed, 20 insertions(+) commit 13057f987651ef1dabd75b6452af4fdf3f5f4fa5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 20:29:03 2009 -0300 StreamedMediaChannel: Fixes/improvements. Do not added MediaStream objects to StreamedMediaChannel until they are ready (have a contact object). Make MediaStream a ReadyObject and use this to retrieve the contact (reducing code complexity). Changed MediaStream to be a QSharedData in order to use it with QExplitlySharedDataPointer. Moved MediaStream signals to StreamedMediaChannel and use the QExplitlySharedDataPointer in the signals instead of MediaStream *. Some other fixes. Changed call example accordingly. TelepathyQt4/Client/streamed-media-channel.cpp | 369 ++++++++++++++----------- TelepathyQt4/Client/streamed-media-channel.h | 41 +-- examples/call/call-widget.cpp | 178 +++++++----- examples/call/call-widget.h | 16 +- examples/call/call-window.cpp | 5 +- 5 files changed, 346 insertions(+), 263 deletions(-) commit 84f6c8d0708f8604fba0688b1d7cdc04d55ed47b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 20:26:36 2009 -0300 ReadinessHelper/ReadyObject: Support non DBusProxy objects. Added support for non DBusProxy objects to use ReadyObject/ReadinessHelper. This is useful in classes that do not inherit DBusProxy but want to use ReadinessHelper machinery. TelepathyQt4/Client/readiness-helper.cpp | 33 +++++++++++++++++++------------- TelepathyQt4/Client/readiness-helper.h | 3 ++- TelepathyQt4/Client/ready-object.cpp | 27 +++++++++++++++++++------- TelepathyQt4/Client/ready-object.h | 7 ++++++- 4 files changed, 48 insertions(+), 22 deletions(-) commit e7efdaa85fcf8f8e5a3503b61a0c8c8ad480e115 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 12:59:10 2009 -0300 callable cm: Fixed Makefile.am. tests/lib/callable/Makefile.am | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) commit d1394ccf1045f954a7fd72def0fbde0bb6b82fbf Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 12:58:47 2009 -0300 callable cm: Added missing manager-file.py. tests/lib/callable/manager-file.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit 6baf0dea65d5ae84f5362e558b58184a7cea440e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 12:46:11 2009 -0300 configure.ac: Added 'callable' example CM. configure.ac | 1 + 1 file changed, 1 insertion(+) commit efdb0cf0024723aa32efd33aa85527a253108b32 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 12:44:04 2009 -0300 Merge 'callable' example CM from telepathy-glib 0.7.27. tests/lib/callable/conn.c | 21 +++ tests/lib/callable/media-channel.c | 290 ++++++++++++++++++++++++++++++------- tests/lib/callable/media-manager.c | 58 +++++++- tests/lib/callable/media-stream.c | 113 +++++++++++++++ tests/lib/callable/media-stream.h | 5 + 5 files changed, 432 insertions(+), 55 deletions(-) commit 7364913ca9bf7159c85b859ea5a11d008439af8d Author: Simon McVittie Date: Tue Mar 17 22:27:13 2009 +0000 Add 'callable' example CM from telepathy-glib 0.7.27 configure.ac | 2 +- tests/lib/Makefile.am | 3 +- tests/lib/callable/Makefile.am | 39 ++ tests/lib/callable/conn.c | 402 ++++++++++++ tests/lib/callable/conn.h | 78 +++ tests/lib/callable/connection-manager.c | 130 ++++ tests/lib/callable/connection-manager.h | 73 +++ tests/lib/callable/media-channel.c | 1024 +++++++++++++++++++++++++++++++ tests/lib/callable/media-channel.h | 74 +++ tests/lib/callable/media-manager.c | 438 +++++++++++++ tests/lib/callable/media-manager.h | 71 +++ tests/lib/callable/media-stream.c | 506 +++++++++++++++ tests/lib/callable/media-stream.h | 83 +++ 13 files changed, 2921 insertions(+), 2 deletions(-) commit afcc9b8fe60c00a089b92345d7dd485ed7d149fc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 12:38:22 2009 -0300 call example: Use ContactPtr typedef. examples/call/call-handler.cpp | 6 +++--- examples/call/call-handler.h | 5 ++--- examples/call/call-roster-widget.cpp | 4 ++-- examples/call/call-roster-widget.h | 4 +++- examples/call/call-widget.cpp | 2 +- examples/call/call-widget.h | 8 ++++---- examples/call/call-window.h | 1 - 7 files changed, 15 insertions(+), 15 deletions(-) commit bb35db6e862c580d775675c805a63dc022d7ed6f Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 19 12:37:55 2009 -0300 StreamedMediaChannel: Use ContactPtr typedef. TelepathyQt4/Client/streamed-media-channel.cpp | 18 +++++++++--------- TelepathyQt4/Client/streamed-media-channel.h | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) commit 11f665457582a844886a08a000d78a4ea5e1838a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 06:13:14 2009 -0300 call example: Added VideoWidget. examples/call/Makefile.am | 9 +- examples/call/call-handler.cpp | 113 +++++++++- examples/call/call-handler.h | 8 +- examples/call/call-widget.cpp | 449 +++++++++++++++++++++++++++---------- examples/call/call-widget.h | 52 +++-- examples/call/call-window.cpp | 6 +- examples/call/farsight-channel.cpp | 70 +++++- examples/call/farsight-channel.h | 9 +- examples/call/main.cpp | 4 + examples/call/video-widget.cpp | 166 ++++++++++++++ examples/call/video-widget.h | 57 +++++ 11 files changed, 792 insertions(+), 151 deletions(-) commit 478558c4dafd260891e2f3678fa6a24c1e8719c1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 05:58:50 2009 -0300 configure.ac: Added gstreamer checks, needed by the call example. configure.ac | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 6601740c314f53b8c0458f4431e080577a510d9d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 05:57:53 2009 -0300 StreamedMediaChannel: Changed default stream direction/state when none is informed. Note: Let's use sensible defaults for now, this needs to be fixed. TelepathyQt4/Client/streamed-media-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit dc0f7bfff5b9d8803ea15a7d790111829739b3f6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 05:57:25 2009 -0300 StreamedMediaChannel: Added debug. TelepathyQt4/Client/streamed-media-channel.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit a2f02745bd265514aba230ffde084a294f7cec30 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 05:56:24 2009 -0300 StreamedMediaChannel: Make sure all streams are added to the channel even if StreamAdded is not emitted. TelepathyQt4/Client/streamed-media-channel.cpp | 17 ++++++++++++++++- TelepathyQt4/Client/streamed-media-channel.h | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) commit b6ff843eebf998bb67497a963b1f99bd6ceb9423 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 05:55:23 2009 -0300 StreamedMediaChannel: Proper initialize Private class (channel member). TelepathyQt4/Client/streamed-media-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d45d63644c7d45cabff5bfb73dc3eb282aaf6b11 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 05:51:54 2009 -0300 PendingChannel: Added objectPath(). Added objectPath method on PendingChannel so custom channels can be constructed. TelepathyQt4/Client/pending-channel.cpp | 20 ++++++++++++++++++++ TelepathyQt4/Client/pending-channel.h | 2 ++ 2 files changed, 22 insertions(+) commit 697d964fefaf3582c29870aeaac669b3ca0faa93 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 16 20:14:22 2009 -0300 call example: Fixed farsight-channel coding style. examples/call/farsight-channel.cpp | 50 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) commit 431fb408d163b719ce392ccd5cc5965b4efbfc37 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 16 20:10:32 2009 -0300 call example: Renamed farsight-glue to farsight-channel. examples/call/Makefile.am | 6 +- examples/call/call-widget.h | 2 +- examples/call/farsight-channel.cpp | 293 +++++++++++++++++++++++++++++++++++++ examples/call/farsight-channel.h | 66 +++++++++ examples/call/farsight-glue.cpp | 293 ------------------------------------- examples/call/farsight-glue.h | 66 --------- 6 files changed, 363 insertions(+), 363 deletions(-) commit 7902a2ab1e3bfc9a79e7fd15d5cd307332feedc0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:15:41 2009 -0300 Added call example to gitignore. .gitignore | 1 + 1 file changed, 1 insertion(+) commit 434f418585ca5d157a34d75b8e9ab820c6ec713a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:14:34 2009 -0300 call example: Added to repository. This is a simple example to make voice calls, video not supported. P.s.: Maybe we should move FarsightChannel to the public API. examples/call/Makefile.am | 18 ++- examples/call/call-handler.cpp | 69 ++++++++++ examples/call/call-handler.h | 55 ++++++++ examples/call/call-roster-widget.cpp | 90 +++++++++++++ examples/call/call-roster-widget.h | 60 +++++++++ examples/call/call-widget.cpp | 234 ++++++++++++++++++++++++++++++++++ examples/call/call-widget.h | 81 ++++++++++++ examples/call/call-window.cpp | 170 +++++++++++++++++++++++++ examples/call/call-window.h | 69 ++++++++++ examples/call/farsight-glue.cpp | 238 +++++++++++++++++++++++++++++++++-- examples/call/farsight-glue.h | 45 +++++-- examples/call/main.cpp | 32 ++++- 12 files changed, 1139 insertions(+), 22 deletions(-) commit 925f9429f50917c8e360a30f3d4942be379c6824 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:14:03 2009 -0300 roster example: Make a shared library that can be used by other examples. examples/roster/Makefile.am | 26 ++++++-- examples/roster/main.cpp | 4 +- examples/roster/roster-widget.cpp | 120 ++++++++++++++++------------------- examples/roster/roster-widget.h | 28 +++++---- examples/roster/roster-window.cpp | 127 ++++++++++++++++++++++++++++++++++++++ examples/roster/roster-window.h | 65 +++++++++++++++++++ 6 files changed, 286 insertions(+), 84 deletions(-) commit 3b1bf02be2ba5bd24618334649abd9cb89456d4e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:13:15 2009 -0300 PendingChannel: Changed handle/handleType to targetHandle/targetHandleType. Changed handle/handleType to targetHandle/targetHandleType to be consistent with Channel API. TelepathyQt4/Client/connection.cpp | 2 +- TelepathyQt4/Client/pending-channel.cpp | 6 +++--- TelepathyQt4/Client/pending-channel.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) commit 653d8a883d4e34defbc222d9ad36535458296bda Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:12:14 2009 -0300 StreamedMediaChannel: Added requestStream method. TelepathyQt4/Client/streamed-media-channel.cpp | 8 ++++++++ TelepathyQt4/Client/streamed-media-channel.h | 3 +++ 2 files changed, 11 insertions(+) commit 7b6102be979e93a2481c367952a3712f53205322 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:11:36 2009 -0300 StreamedMediaChannel: Fixed RequestStreams/ListStreams return value handling. TelepathyQt4/Client/streamed-media-channel.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit a9d1904001aacffd0dec6ee91dc7ee4ac1678647 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 13 18:08:10 2009 -0300 Connection: Return a PendingReady object on requestConnect. TelepathyQt4/Client/connection-internal.h | 7 ++----- TelepathyQt4/Client/connection.cpp | 7 +++---- TelepathyQt4/Client/connection.h | 2 +- TelepathyQt4/Client/pending-ready.h | 2 +- tests/pinocchio/handles.cpp | 1 + 5 files changed, 8 insertions(+), 11 deletions(-) commit b4e6a79d715c74c14cc634f91d034f29784ca504 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 12 15:09:19 2009 -0300 roster example: renamed RosterWindow to RosterWidget. examples/roster/Makefile.am | 6 +- examples/roster/main.cpp | 4 +- examples/roster/roster-widget.cpp | 384 +++++++++++++++++++++++++++++++++++++ examples/roster/roster-widget.h | 86 +++++++++ examples/roster/roster-window.cpp | 388 -------------------------------------- examples/roster/roster-window.h | 86 --------- 6 files changed, 475 insertions(+), 479 deletions(-) commit 353f020d0d67ccce352e8771c862817ebb1940d1 Author: Simon McVittie Date: Mon Mar 9 14:29:51 2009 +0000 Add the beginnings of a call example using telepathy-farsight configure.ac | 16 ++++++++- examples/Makefile.am | 4 +++ examples/call/Makefile.am | 32 ++++++++++++++++++ examples/call/farsight-glue.cpp | 75 +++++++++++++++++++++++++++++++++++++++++ examples/call/farsight-glue.h | 37 ++++++++++++++++++++ examples/call/main.cpp | 5 +++ 6 files changed, 168 insertions(+), 1 deletion(-) commit 84bf984cbb056fc316166f55af8d401af0a9e60e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 12:56:03 2009 -0300 StreamedMediaChannel: Added requestStreamDirection(bool send, bool receive) overload function. TelepathyQt4/Client/streamed-media-channel.cpp | 21 +++++++++++++++++++++ TelepathyQt4/Client/streamed-media-channel.h | 2 ++ 2 files changed, 23 insertions(+) commit 412bbaa28e1677cd0fc84134553aeebdc65bb2ae Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 12:48:54 2009 -0300 StreamedMediaChannel: No need to check for Bidirectional on MediaStream::sending/receiving. Rationale: MediaStream::sending(), MediaStream::receiving() can safely assume that MediaStreamDirection is a bitfield (it's an enum because of historical mistakes) Bidirectional is just (Send|Receive) TelepathyQt4/Client/streamed-media-channel.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit dc4c80ff92dd072fcb3e0facd89b5bd70ab1eacf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 12:47:13 2009 -0300 StreamedMediaChannel: Only signal new streams/FeatureStreams ready when the stream contacts are retrieved. TelepathyQt4/Client/streamed-media-channel.cpp | 164 ++++++++++++++++++++----- TelepathyQt4/Client/streamed-media-channel.h | 10 +- 2 files changed, 141 insertions(+), 33 deletions(-) commit 78b1c63cd6f30b8958b2b3a95269e82a4aebb44f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 11:09:44 2009 -0300 StreamedMediaChannel: Fixed requestStreams to return a PendingMediaStreams object. TelepathyQt4/Client/streamed-media-channel.cpp | 105 ++++++++++++++++++++++--- TelepathyQt4/Client/streamed-media-channel.h | 39 ++++++++- 2 files changed, 132 insertions(+), 12 deletions(-) commit 07fb8c2ee967768faf8ab35b4525d4c57f163601 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 10:32:27 2009 -0300 StreamedMediaChannel: Added a MediaStream * param to all MediaStreams signals. TelepathyQt4/Client/streamed-media-channel.cpp | 9 +++++---- TelepathyQt4/Client/streamed-media-channel.h | 11 +++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) commit 4c2051c62b08c3681ecf61e019cec15667c8e1b8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 03:21:36 2009 -0300 StreamedMediaChannel: Added some docs. TelepathyQt4/Client/streamed-media-channel.cpp | 91 +++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) commit 7e892f2a5046020d744dbe2226562b5c9b7a5d3a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 03:09:05 2009 -0300 StreamedMediaChannel: Fixed stream removal handling. TelepathyQt4/Client/streamed-media-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1bffdf74bb4d947a8142a57385aa646d45e602ea Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 03:04:05 2009 -0300 StreamedMediaChannel: Cache MediaStream::contact object. TelepathyQt4/Client/streamed-media-channel.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 6d4d5c80d0a7e4aed4ecda5489744e3047323e93 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 03:01:04 2009 -0300 StreamedMediaChannel: Added removeStreams/requestStreams. TelepathyQt4/Client/streamed-media-channel.cpp | 31 ++++++++++++++++++++++++-- TelepathyQt4/Client/streamed-media-channel.h | 4 +--- 2 files changed, 30 insertions(+), 5 deletions(-) commit 23f7751a3526a3df78741fae7989c2d840db5f6b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 02:48:18 2009 -0300 StreamedMediaChannel: Use full namespace on streamAdded signal. TelepathyQt4/Client/streamed-media-channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1bb5a9615975d01807151ad14a2828cabf486599 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 02:45:29 2009 -0300 StreamedMediaChannel: Added MediaStream::remove/requestStreamDirection methods. TelepathyQt4/Client/streamed-media-channel.cpp | 13 +++++++++++++ TelepathyQt4/Client/streamed-media-channel.h | 2 -- 2 files changed, 13 insertions(+), 2 deletions(-) commit 48af538ed0bec0aa2ab5eb2a08daa0494b0e9f48 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 02:44:26 2009 -0300 StreamedMediaChannel: Continue implementation (added FeatureStreams support). TelepathyQt4/Client/streamed-media-channel.cpp | 297 ++++++++++++++++++++++++- TelepathyQt4/Client/streamed-media-channel.h | 54 +++-- 2 files changed, 325 insertions(+), 26 deletions(-) commit 2fd8c3cfdb1bc9cca2221ae7575e06c12038f3db Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 02:43:40 2009 -0300 ContactManager: Export lookupContactByHandle. TelepathyQt4/Client/contact-manager.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 888ffb4dcd6fbf1790b7d05348233e0652591df1 Author: Simon McVittie Date: Thu Mar 5 14:44:31 2009 +0000 StreamedMediaChannel: add awaitingLocalAnswer, awaitingRemoteAnswer and acceptCall It's not completely clear from the abstract Group API how to do these actions, so these simple wrappers are meant to guide API users to do the right thing. TelepathyQt4/Client/streamed-media-channel.cpp | 15 +++++++++++++++ TelepathyQt4/Client/streamed-media-channel.h | 5 +++++ 2 files changed, 20 insertions(+) commit 0627b88d83f8f738c41f2fd7ac8d5f0861ccef18 Author: Simon McVittie Date: Thu Mar 5 14:43:22 2009 +0000 Channel: add protected methods to look for the self-handle in local pending, and add it While using Contact objects is nice from a high-level-API point of view, it's not so convenient if all we want to do is to accept an invitation or VoIP call. The high-level semantics of moving yourself from local-pending to members depend on the channel type, so subclasses should introduce wrappers for these methods with a friendlier name, where appropriate. TelepathyQt4/Client/channel.cpp | 53 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/channel.h | 6 +++++ 2 files changed, 59 insertions(+) commit 970c8830511a1821b4a68751418538dd104231dd Author: Simon McVittie Date: Thu Mar 5 14:12:19 2009 +0000 StreamedMediaChannel: sketch out a higher-level API TelepathyQt4/Client/streamed-media-channel.h | 72 ++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) commit 7b0c980697aaa585d4418a397a3269ac2cc8fe05 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 15:59:19 2009 -0300 Fixed merge conflict. TelepathyQt4/Client/pending-account.cpp | 5 ----- TelepathyQt4/Client/pending-connection.cpp | 6 ------ 2 files changed, 11 deletions(-) commit 077ac93c7f36a4484926d07e183d974406040f67 Merge: 6fd4f8a db03e92 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 15:19:52 2009 -0300 Merge branch 'shared' Conflicts: TelepathyQt4/Client/pending-account.cpp TelepathyQt4/Client/pending-account.h TelepathyQt4/Client/pending-connection.cpp TelepathyQt4/Client/pending-connection.h Reviewed-by: Simon McVittie (smcv) commit db03e923b1be42cfa055d6a49f12435c90f8839d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 15:13:30 2009 -0300 Update NEWS regarding QExplicitlySharedDataPointer usage. NEWS | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit feae9a9ee2e1adab2d4aee13994757b78a65a794 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 15:07:30 2009 -0300 ReadyObject: Do not inherit QSharedData. Make ReadyObject do not inherit QSharedData and do it in the classes itself. TelepathyQt4/Client/account-manager.h | 5 ++++- TelepathyQt4/Client/account.h | 5 ++++- TelepathyQt4/Client/channel.h | 7 ++++--- TelepathyQt4/Client/connection-manager.h | 5 ++++- TelepathyQt4/Client/connection.h | 5 ++++- TelepathyQt4/Client/ready-object.h | 4 +--- 6 files changed, 21 insertions(+), 10 deletions(-) commit 39b26e8d36dc38653c673287a9ea7fcddd155b70 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:42:09 2009 -0300 tests: Use ContactPtr typedef. tests/dbus/chan-basics.cpp | 4 ++-- tests/dbus/chan-group.cpp | 14 +++++++------- tests/dbus/conn-roster.cpp | 12 ++++++------ tests/dbus/contacts.cpp | 11 +++++------ 4 files changed, 20 insertions(+), 21 deletions(-) commit 0923950675557229d462499b2cd80f77c8081878 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:41:54 2009 -0300 roster example: Use ContactPtr typedef. examples/roster/roster-item.cpp | 2 +- examples/roster/roster-item.h | 7 +++---- examples/roster/roster-window.cpp | 12 ++++++------ examples/roster/roster-window.h | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) commit ac55b969a050b78b29571da7b8dcc59754c830ac Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:37:08 2009 -0300 TextChannel: Use ContactPtr typedef. TelepathyQt4/Client/text-channel.cpp | 6 +++--- TelepathyQt4/Client/text-channel.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) commit f8f1939ed2d5b61600a2e053a17ccbc871e0942f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:35:50 2009 -0300 Connection: Use ContactPtr typedef. TelepathyQt4/Client/connection.cpp | 7 +++---- TelepathyQt4/Client/connection.h | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) commit add9e008caaa60b6de5c93f8477fb108e4f750b7 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:34:05 2009 -0300 Message: Use ContactPtr typedef. TelepathyQt4/Client/message.cpp | 10 +++++----- TelepathyQt4/Client/message.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) commit 1297ea5021cb16bca95715f0d5819ee2e5ce9a88 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:32:43 2009 -0300 PendingContacts: Use ContactPtr typedef. TelepathyQt4/Client/pending-contacts.cpp | 20 ++++++++++---------- TelepathyQt4/Client/pending-contacts.h | 9 ++++----- 2 files changed, 14 insertions(+), 15 deletions(-) commit 43180c70d170c0702541fdf9af1bdb5e6a4833d8 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:30:46 2009 -0300 ContactManager: Use ContactPtr typedef. TelepathyQt4/Client/contact-manager.cpp | 53 +++++++++++++++++---------------- TelepathyQt4/Client/contact-manager.h | 17 +++++------ 2 files changed, 35 insertions(+), 35 deletions(-) commit 0af172ae82bfaf5dc604ac8d8e7de956cf057c65 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:28:01 2009 -0300 Channel: Use ContactPtr typedef. TelepathyQt4/Client/channel.cpp | 48 ++++++++++++++++++++--------------------- TelepathyQt4/Client/channel.h | 17 +++++++-------- 2 files changed, 32 insertions(+), 33 deletions(-) commit fb7bde10dbc4c05c93ea97e915c12952df9037aa Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:27:08 2009 -0300 Contact: Added ContactPtr typedef. TelepathyQt4/Client/contact.cpp | 20 ++++++++++---------- TelepathyQt4/Client/contact.h | 7 ++++--- 2 files changed, 14 insertions(+), 13 deletions(-) commit f89957151e613d232c95e10d4acb846192e4c6c4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:21:04 2009 -0300 TextChannel: Added TextChannel typedef. TelepathyQt4/Client/text-channel.h | 2 ++ 1 file changed, 2 insertions(+) commit c7f52e12693829d932a9042e2020a8e1f393e250 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:20:30 2009 -0300 StreamedMediaChannel: Added StreamedMediaChannel typedef. TelepathyQt4/Client/streamed-media-channel.h | 2 ++ 1 file changed, 2 insertions(+) commit 49d9690394f639255eb14ff94c3d9ac5a326de9c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:20:13 2009 -0300 RoomList: Added RoomListPtr typedef. TelepathyQt4/Client/room-list.h | 2 ++ 1 file changed, 2 insertions(+) commit bba487c0400a6812efda3e73497d5bf2c0e516fb Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:20:00 2009 -0300 FileTransfer: Added FileTransferPtr typedef. TelepathyQt4/Client/file-transfer.h | 2 ++ 1 file changed, 2 insertions(+) commit a499f9ba44d275e78b7462f58164e66f845f2b26 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:19:45 2009 -0300 ConnectionManager: Added ConnectionManagerPtr typedef. TelepathyQt4/Client/connection-manager.h | 2 ++ 1 file changed, 2 insertions(+) commit b677c2d85aa28c2a3dcfe530a5cfff6a3725a447 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:19:32 2009 -0300 AccountManager: Added AccountManagerPtr typedef. TelepathyQt4/Client/account-manager.h | 2 ++ 1 file changed, 2 insertions(+) commit 9f7025e33c7ff89cd1661bfc2243d73781201770 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:14:38 2009 -0300 PendingConnection: Return ConnectionPtr on connection() method. TelepathyQt4/Client/pending-connection.cpp | 10 +++++----- TelepathyQt4/Client/pending-connection.h | 3 +-- examples/roster/roster-window.h | 5 ++--- tests/pinocchio/cm-basics.cpp | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) commit ef04e36cc0f19e460bb0950376b56c9858a5a05d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 14:10:20 2009 -0300 PendingChannel: Return ChannelPtr on channel() method. TelepathyQt4/Client/connection.cpp | 6 +++--- TelepathyQt4/Client/contact-manager.cpp | 12 ++++++------ TelepathyQt4/Client/contact-manager.h | 2 +- TelepathyQt4/Client/pending-channel.cpp | 20 ++++++++++---------- TelepathyQt4/Client/pending-channel.h | 3 +-- tests/dbus/chan-basics.cpp | 6 +++--- tests/dbus/chan-group.cpp | 6 +++--- tests/dbus/conn-requests.cpp | 4 ++-- 8 files changed, 29 insertions(+), 30 deletions(-) commit ca9ce1de1dafae864170446fa4283570c5732edc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 13:50:06 2009 -0300 Channel: Added ChannelPtr typedef. TelepathyQt4/Client/channel.h | 2 ++ 1 file changed, 2 insertions(+) commit 9bdf22a83857bf8971631963e14336e58561a4dc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 13:47:50 2009 -0300 PendingAccount: Return AccountPtr on account() method. TelepathyQt4/Client/pending-account.cpp | 11 +++++------ TelepathyQt4/Client/pending-account.h | 3 +-- tests/dbus/account-basics.cpp | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) commit 1a695ee510e63e6e1122e01d535491c8fbd3eff6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 13:42:20 2009 -0300 Account: Use QExplicitlySharedDataPointer for connections. TelepathyQt4/Client/account.cpp | 11 +++++------ TelepathyQt4/Client/account.h | 4 ++-- TelepathyQt4/Client/connection.h | 2 ++ 3 files changed, 9 insertions(+), 8 deletions(-) commit ccee3bf99c20a9e5826429c36da0f07976de61ed Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 13:34:11 2009 -0300 AccountManager: Use QExplicitlySharedDataPointer for accounts. TelepathyQt4/Client/account-manager.cpp | 19 +++++++++---------- TelepathyQt4/Client/account-manager.h | 13 ++++++------- TelepathyQt4/Client/account.h | 3 +++ tests/dbus/account-basics.cpp | 2 +- 4 files changed, 19 insertions(+), 18 deletions(-) commit bbfc0586ae0d2dc439732c9750eda0a6c83c793b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 13:01:28 2009 -0300 ReadyObject: Inherit QSharedData. Inherit QSharedData so our objects can be used with QExplicitlySharedDataPointer. TelepathyQt4/Client/ready-object.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 9d25c1be0259615585655648a92e69a395a38efd Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 12:50:22 2009 -0300 Connection: Use ReadyObject class. TelepathyQt4/Client/connection.cpp | 68 ++++---------------------------------- TelepathyQt4/Client/connection.h | 13 ++------ 2 files changed, 9 insertions(+), 72 deletions(-) commit 679078dae3a4fb99a41e1fc45430df2241e6bc17 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 12:50:06 2009 -0300 ConnectionManager: Use ReadyObject class. TelepathyQt4/Client/connection-manager.cpp | 67 +++--------------------------- TelepathyQt4/Client/connection-manager.h | 13 ++---- 2 files changed, 8 insertions(+), 72 deletions(-) commit 0ef3a960dec59d7493e9e9460b5e7dfb51004e65 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 12:49:52 2009 -0300 Channel: Use ReadyObject class. TelepathyQt4/Client/channel.cpp | 65 ++--------------------------------------- TelepathyQt4/Client/channel.h | 13 ++------- 2 files changed, 6 insertions(+), 72 deletions(-) commit e1dce2f1a92cffe2b1d20d45dbb22448e724056f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 12:49:42 2009 -0300 Account: Use ReadyObject class. TelepathyQt4/Client/account.cpp | 64 ++--------------------------------------- TelepathyQt4/Client/account.h | 13 ++------- 2 files changed, 6 insertions(+), 71 deletions(-) commit e8fff8e5a5d7daf8f5c100cc1c5ff224b8c07bdf Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 12:49:26 2009 -0300 AccountManager: Use ReadyObject class. TelepathyQt4/Client/account-manager.cpp | 69 +++------------------------------ TelepathyQt4/Client/account-manager.h | 13 ++----- 2 files changed, 8 insertions(+), 74 deletions(-) commit ca37911e76d90bacd8ce7c873205a98b40225694 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 18 12:48:45 2009 -0300 ReadyObject: Added to repository. ReadyObject is a base class for all classes that wants to implement isReady/becomeReady features. TelepathyQt4/Client/ReadyObject | 13 +++ TelepathyQt4/Client/readiness-helper.h | 4 +- TelepathyQt4/Client/ready-object.cpp | 147 +++++++++++++++++++++++++++++++++ TelepathyQt4/Client/ready-object.h | 67 +++++++++++++++ TelepathyQt4/Makefile.am | 3 + 5 files changed, 232 insertions(+), 2 deletions(-) commit c9acf126bd0c2d9f585f06c82aaaca5c284ec806 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 14:00:30 2009 -0300 PendingConnection: Added serviceName/objectPath(). Added serviceName/objectPath methods on PendingConnection so custom connections can be constructed. TelepathyQt4/Client/pending-connection.cpp | 64 +++++++++++++++++++++++++----- TelepathyQt4/Client/pending-connection.h | 5 +++ 2 files changed, 60 insertions(+), 9 deletions(-) commit 9765078314b261f030168f20aa379b1f2197c128 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 13:59:48 2009 -0300 PendingAccount: Added objectPath(). Added objectPath method on PendingAccount so custom accounts can be constructed. TelepathyQt4/Client/pending-account.cpp | 37 ++++++++++++++++++++++++++------- TelepathyQt4/Client/pending-account.h | 3 +++ 2 files changed, 33 insertions(+), 7 deletions(-) commit ae000ed5ba02ca5b7cebbc71b8d8e0e4954df10b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 03:21:28 2009 -0300 TextChannel: Fixed docs. TelepathyQt4/Client/text-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6139e8c470ca73eeeae9d84083683acadf959913 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 02:42:58 2009 -0300 TextChannel: delete watchers. TelepathyQt4/Client/text-channel.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 6fd4f8a97a2446e178f5d4be96e703677fbed92f Merge: cfa8af7 6b05719 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 19:25:50 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 6b057199a2312d126f1f251674a9bb0516f33d69 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 14:00:30 2009 -0300 PendingConnection: Added serviceName/objectPath(). Added serviceName/objectPath methods on PendingConnection so custom connections can be constructed. TelepathyQt4/Client/pending-connection.cpp | 64 +++++++++++++++++++++++++----- TelepathyQt4/Client/pending-connection.h | 5 +++ 2 files changed, 60 insertions(+), 9 deletions(-) commit 028b600f87f9b28e7c63665b373544111244ce11 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 17 13:59:48 2009 -0300 PendingAccount: Added objectPath(). Added objectPath method on PendingAccount so custom accounts can be constructed. TelepathyQt4/Client/pending-account.cpp | 37 ++++++++++++++++++++++++++------- TelepathyQt4/Client/pending-account.h | 3 +++ 2 files changed, 33 insertions(+), 7 deletions(-) commit f2a51397ae52e637605d2492c4e7131bb670b9ef Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 03:21:28 2009 -0300 TextChannel: Fixed docs. TelepathyQt4/Client/text-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8734a18617ac0829a1ffb4a6545c5898f3d35421 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 11 02:42:58 2009 -0300 TextChannel: delete watchers. TelepathyQt4/Client/text-channel.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit cfa8af7c604451f39ef83fd793f15e703ccbb418 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 6 16:54:47 2009 -0300 Feature: Make it easy to handle Features. Now it's possible to pass a single feature, without creating a Features var, to isReady/becomeReady methods. TelepathyQt4/Client/feature.h | 8 +++++++- tests/dbus/account-basics.cpp | 25 ++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) commit 4125235bacc782bb7a9c3d15baf14fdbd0fec478 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 6 16:28:12 2009 -0300 ReadinessHelper: Propagate error message when a feature fails introspection. TelepathyQt4/Client/account.cpp | 7 +- TelepathyQt4/Client/connection-manager.cpp | 4 +- TelepathyQt4/Client/connection.cpp | 10 ++- TelepathyQt4/Client/readiness-helper.cpp | 102 +++++++++++++++++++++++------ TelepathyQt4/Client/readiness-helper.h | 14 +++- TelepathyQt4/Client/text-channel.cpp | 6 +- 6 files changed, 107 insertions(+), 36 deletions(-) commit 3fcc3010e63d739cbb7fffc15b683d1092aa73b4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 6 15:07:06 2009 -0300 Moved Feature to it's own header. TelepathyQt4/Client/Feature | 13 +++++++ TelepathyQt4/Client/feature.cpp | 65 +++++++++++++++++++++++++++++++++ TelepathyQt4/Client/feature.h | 66 ++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/readiness-helper.h | 17 +-------- TelepathyQt4/Makefile.am | 3 ++ 5 files changed, 148 insertions(+), 16 deletions(-) commit 41ffc24e4ba5c27bedc71ceb5dfb7891625b5990 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Mar 6 14:11:16 2009 -0300 ReadinessHelper: Added critical feature concept. Added critical feature concept and make FeatureCore critical in all classes. isReady/becomeReady will fail if a critical feature cannot not be satisfied. TelepathyQt4/Client/account-manager.cpp | 6 ++-- TelepathyQt4/Client/account.cpp | 6 ++-- TelepathyQt4/Client/channel.cpp | 6 ++-- TelepathyQt4/Client/connection-manager.cpp | 6 ++-- TelepathyQt4/Client/connection.cpp | 6 ++-- TelepathyQt4/Client/readiness-helper.cpp | 51 +++++++++++++++++++++++------- TelepathyQt4/Client/readiness-helper.h | 27 +++++++++++++--- TelepathyQt4/Client/text-channel.cpp | 10 +++--- 8 files changed, 82 insertions(+), 36 deletions(-) commit 3d81aef292dc5ad6ada10e403eaf6b62a055f3ac Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 19:06:55 2009 -0300 Channel/TextChannel: Use Readiness helper class. Use Readiness helper class on Channel/TextChannel and removed PendingReadyChannel. TelepathyQt4/Client/PendingReadyChannel | 13 - TelepathyQt4/Client/channel.cpp | 137 +++---- TelepathyQt4/Client/channel.h | 18 +- TelepathyQt4/Client/connection.cpp | 1 - TelepathyQt4/Client/pending-ready-channel.cpp | 110 ------ TelepathyQt4/Client/pending-ready-channel.h | 63 ---- TelepathyQt4/Client/text-channel.cpp | 522 +++++++++++--------------- TelepathyQt4/Client/text-channel.h | 29 +- TelepathyQt4/Makefile.am | 4 - tests/dbus/chan-basics.cpp | 1 - tests/dbus/chan-group.cpp | 1 - tests/dbus/text-chan.cpp | 33 +- 12 files changed, 327 insertions(+), 605 deletions(-) commit 961e934056db997422d1a068d5d8868ae336cd5c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 19:05:34 2009 -0300 ReadinessHelper: Update supportedStatuses/Features on addIntrospectables. TelepathyQt4/Client/readiness-helper.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 2bb119c162b6347de661eea89d0a15204d22f0b5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 16:28:01 2009 -0300 Tests: Fixed build. tests/dbus/account-basics.cpp | 10 +++++----- tests/dbus/chan-basics.cpp | 2 +- tests/dbus/conn-basics.cpp | 2 +- tests/dbus/conn-roster.cpp | 2 +- tests/dbus/contacts.cpp | 2 +- tests/pinocchio/conn-basics.cpp | 3 ++- 6 files changed, 11 insertions(+), 10 deletions(-) commit 4e372e6b1c2764d4b8800de468d6dbc04903ecce Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 16:27:38 2009 -0300 roster example: fixed build. examples/roster/roster-window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 38bbd39881fec50536cbbec705598dab47a9b26c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 16:26:06 2009 -0300 ReadinessHelper: Add subclass support. P.s: Tests/examples broken (will be fixed in a later patch). TelepathyQt4/Client/account-manager.cpp | 32 +++++-- TelepathyQt4/Client/account-manager.h | 22 ++--- TelepathyQt4/Client/account.cpp | 41 ++++++--- TelepathyQt4/Client/account.h | 26 +++--- TelepathyQt4/Client/connection-internal.h | 4 +- TelepathyQt4/Client/connection-manager.cpp | 31 +++++-- TelepathyQt4/Client/connection-manager.h | 20 ++--- TelepathyQt4/Client/connection.cpp | 48 +++++++---- TelepathyQt4/Client/connection.h | 30 +++---- TelepathyQt4/Client/pending-ready.cpp | 9 +- TelepathyQt4/Client/pending-ready.h | 5 +- TelepathyQt4/Client/readiness-helper.cpp | 129 ++++++++++++++--------------- TelepathyQt4/Client/readiness-helper.h | 24 ++++-- 13 files changed, 235 insertions(+), 186 deletions(-) commit e20a92d8b000c2cd91777da0160e62077980b181 Author: Simon McVittie Date: Thu Mar 5 19:06:15 2009 +0000 Post-release version bump NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 6ac59411f93c7d84cef64dd60c955038ae4d4e1d Author: Simon McVittie Date: Thu Mar 5 18:43:56 2009 +0000 Prepare release 0.1.1 NEWS | 41 +++++++++++++++++++++++++++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 41 insertions(+), 4 deletions(-) commit 53557ddbc44c251f5262ba4040f9230205af7d70 Author: Simon McVittie Date: Thu Mar 5 18:20:35 2009 +0000 roster example: connect to the right signals examples/roster/roster-item.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e8877188b1f09cbc5f704edbac89d0281b3f4610 Author: Simon McVittie Date: Thu Mar 5 17:33:41 2009 +0000 Add methods indicating whether contact list manipulations take a message Also add the missing canRescindPresenceSubscriptionRequest(), which indicates whether we can cancel a request before the contact has approved it, and simplify contact-list manipulation method names TelepathyQt4/Client/contact-manager.cpp | 194 ++++++++++++++++++++++++++++++-- TelepathyQt4/Client/contact-manager.h | 23 ++-- TelepathyQt4/Client/contact.cpp | 8 +- examples/roster/roster-window.cpp | 6 +- 4 files changed, 206 insertions(+), 25 deletions(-) commit 10479026b3de11303f86b576ab377d30a0c6f44b Author: Simon McVittie Date: Thu Mar 5 17:03:00 2009 +0000 Channel: don't second-guess the CM Similarly to ContactManager, if the group flags indicate we're likely to fail, we should still make the attempt, so the connection manager can give us the most appropriate error. TelepathyQt4/Client/channel.cpp | 32 -------------------------------- 1 file changed, 32 deletions(-) commit 616be9e9f760bae7d7530254a7a38c29a675b52e Author: Simon McVittie Date: Thu Mar 5 17:00:37 2009 +0000 ContactManager: don't second-guess the connection manager Although we have flags to indicate which actions are likely to work, their interactions are complex, so we should only reject attempts to take action if the channel doesn't exist at all. In all other cases we should attempt the D-Bus call, even if we expect it to fail, so the connection manager can return an appropriate error. TelepathyQt4/Client/contact-manager.cpp | 35 ++++++++++----------------------- 1 file changed, 10 insertions(+), 25 deletions(-) commit 9ce902c82ed28dd09cb09b923cf8efc2495274ce Author: Simon McVittie Date: Thu Mar 5 16:56:33 2009 +0000 Fix compilation of the Roster example examples/roster/roster-window.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1cbb29badeee83d19d69bf3159d53d6bb652f5e8 Author: Simon McVittie Date: Thu Mar 5 16:56:24 2009 +0000 Document some of the ContactManager methods TelepathyQt4/Client/contact-manager.cpp | 87 +++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) commit 9b46587aa488d360109073846a70e67ae30c4e9a Author: Simon McVittie Date: Thu Mar 5 16:32:33 2009 +0000 ContactManager: cache pointers to the subscribe, publish, stored, deny channels TelepathyQt4/Client/contact-manager.cpp | 110 ++++++++++++++------------------ 1 file changed, 49 insertions(+), 61 deletions(-) commit 6c8a6414d2949778708fe5b98af52dccd883cd6b Author: Simon McVittie Date: Thu Mar 5 16:09:24 2009 +0000 typedef QSet > as Contacts to make code clearer TelepathyQt4/Client/channel.cpp | 24 +++++------ TelepathyQt4/Client/channel.h | 14 +++--- TelepathyQt4/Client/contact-manager.cpp | 76 ++++++++++++++++----------------- TelepathyQt4/Client/contact-manager.h | 28 ++++++------ TelepathyQt4/Client/contact.h | 2 + examples/roster/roster-window.cpp | 6 +-- examples/roster/roster-window.h | 2 +- tests/dbus/chan-group.cpp | 46 ++++++++++---------- 8 files changed, 99 insertions(+), 99 deletions(-) commit 90c80391acd10220ce314f7ab4af8a0664570750 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 14:33:59 2009 -0300 Fixed build. examples/roster/roster-window.cpp | 1 - 1 file changed, 1 deletion(-) commit 453c3975e00e2826665f4a0d02bcd418c0e912bc Merge: 2ebbbe7 0b3ee41 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 12:50:53 2009 -0300 Merge branch 'connection' Reviewed-by: Simon McVittie (smcv) commit 2ebbbe7df7772565230b49eef6d7a036814cdad6 Merge: 037e36d 4cda678 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 12:07:35 2009 -0300 Merge branch 'readiness' Reviewed-by: Simon McVittie (smcv) commit 4cda678260c0ee72208e6ed7dc36d3b50fa357c5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Mar 5 11:57:23 2009 -0300 ConnectionManager: Do not go ready if we can't get the list of protocols or all params. TelepathyQt4/Client/connection-manager.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) commit 05f9b33e660c1efbf310364546a12bc7630defec Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 13:18:04 2009 -0300 ConnectionManager: Added requestedFeatures/actualFeatures/missingFeatures. TelepathyQt4/Client/connection-manager.cpp | 15 +++++++++++++++ TelepathyQt4/Client/connection-manager.h | 4 ++++ 2 files changed, 19 insertions(+) commit d911df212ecfd83ef19d6fd22606c36f4573c888 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 13:17:55 2009 -0300 Account: Added requestedFeatures/actualFeatures/missingFeatures. TelepathyQt4/Client/account.cpp | 15 +++++++++++++++ TelepathyQt4/Client/account.h | 4 ++++ 2 files changed, 19 insertions(+) commit 63f4de98c4435e22ff88865647f3946bc4b15c56 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 13:17:23 2009 -0300 AccountManager: Added requestedFeatures/actualFeatures/missingFeatures. TelepathyQt4/Client/account-manager.cpp | 15 +++++++++++++++ TelepathyQt4/Client/account-manager.h | 4 ++++ 2 files changed, 19 insertions(+) commit 393c80c2d1e380205412cd6f9c6afad665c0eb89 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 12:44:26 2009 -0300 Removed PendingReadyConnectionManager in favor of PendingReady. TelepathyQt4/Client/PendingReadyConnectionManager | 13 --- .../Client/pending-ready-connection-manager.cpp | 110 --------------------- .../Client/pending-ready-connection-manager.h | 62 ------------ TelepathyQt4/Makefile.am | 4 - 4 files changed, 189 deletions(-) commit 52e7e027fa389ca48d7816e5920743abb0d96364 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 12:43:13 2009 -0300 ConnectionManager: Use foreach instead of Q_FOREACH. TelepathyQt4/Client/connection-manager.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit 0bf8aae2f8aa129aa065798133d200cd1b871349 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 12:41:02 2009 -0300 ConnectionManager: Use ReadinessHelper class. TelepathyQt4/Client/account.cpp | 1 - TelepathyQt4/Client/connection-manager-internal.h | 28 ++- TelepathyQt4/Client/connection-manager.cpp | 235 ++++++++++------------ TelepathyQt4/Client/connection-manager.h | 22 +- tests/dbus/cm-basics.cpp | 2 +- tests/pinocchio/cm-basics.cpp | 2 +- tests/pinocchio/conn-basics.cpp | 1 - 7 files changed, 140 insertions(+), 151 deletions(-) commit 95cee7ac26f14460eedffb5106ef5798d8e47e84 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 12:44:06 2009 -0300 AccountManager: Use foreach/emit instead of Q_FOREACH/Q_EMIT. TelepathyQt4/Client/account-manager.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 0b3ee41cc3790a9ce4f7da9238e746bc4b3d6a0c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 19:03:57 2009 -0300 Connection: Added roster test. tests/dbus/Makefile.am | 5 + tests/dbus/conn-roster.cpp | 291 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 296 insertions(+) commit 2995ea50235b949b95b26a63d45d0168f8d9e192 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 19:02:01 2009 -0300 contact list example: use the proper list when authorizing contacts. tests/lib/contactlist/contact-list-manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 529ab86461340012dae066a50b4d1238eaf0a72d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 18:58:20 2009 -0300 Contact: Use full namespace on signals. TelepathyQt4/Client/contact.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 3024571cc6286f7a008f66765bcc1a2a24f9ec83 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Mar 4 18:57:44 2009 -0300 ContactManager: Use message on subscribe/publish methods. TelepathyQt4/Client/contact-manager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit bde6e71d2f9aa55a74912bee161750e55a60732d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 27 19:48:22 2009 -0300 Improved roster example to support blocking contacts. Changed pushbuttons to actions triggered by context menu, to make the UI less cluttered. Added blocking contacts support. Fixed some bugs. examples/roster/roster-item.cpp | 21 +++-- examples/roster/roster-item.h | 5 +- examples/roster/roster-window.cpp | 190 +++++++++++++++++++++++++++++--------- examples/roster/roster-window.h | 21 +++-- 4 files changed, 180 insertions(+), 57 deletions(-) commit 539037daf8139afd1150bba2bbfcdde1543ce279 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 27 19:38:36 2009 -0300 ContactManager: Added support for blocking contacts. TelepathyQt4/Client/contact-manager.cpp | 83 ++++++++++++++++++++++++++++++++- TelepathyQt4/Client/contact-manager.h | 12 ++++- TelepathyQt4/Client/contact.cpp | 27 ++++++++++- TelepathyQt4/Client/contact.h | 5 ++ 4 files changed, 124 insertions(+), 3 deletions(-) commit 9399de114a7d3cd2e25a5a62e38598e5b960bbb2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 27 17:39:02 2009 -0300 Contact: Make sure subscription/publishStateChanged is not emitted if nothing happened. TelepathyQt4/Client/contact.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 09f2ca624df83b1951d64efd8cbb31906659feda Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 27 16:42:50 2009 -0300 ContactManager: Make it work with QT_NO_CAST_FROM_ASCII. TelepathyQt4/Client/contact-manager.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit fb7048e77432b50849fb077f9e6046071ceab656 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 27 16:39:33 2009 -0300 ContactManager: Fixed identifier for ContactList stored. TelepathyQt4/Client/contact-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3e079b1696fbd1f96a419a9f8084ac028c8fe6d3 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 27 16:36:59 2009 -0300 ContactManager: Un-inline identifierForType and typeForIdentifier. TelepathyQt4/Client/contact-manager.cpp | 23 +++++++++++++++++++++++ TelepathyQt4/Client/contact-manager.h | 23 ++--------------------- 2 files changed, 25 insertions(+), 21 deletions(-) commit faf0dc64bca7774bf743d9237c61669f69511c30 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:46:36 2009 -0300 Added roster example to gitignore. .gitignore | 1 + 1 file changed, 1 insertion(+) commit 8d6fef721ea99c7edddfff5862e0eeb7942d6d82 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:32:28 2009 -0300 Improved roster example to support add/auth/remove/deny contacts. examples/roster/roster-item.cpp | 27 +++++- examples/roster/roster-item.h | 6 +- examples/roster/roster-window.cpp | 178 +++++++++++++++++++++++++++++++++++++- examples/roster/roster-window.h | 16 ++++ 4 files changed, 219 insertions(+), 8 deletions(-) commit 9d2ddf8c30f836d8b0b17d402d0df85e8eb2b925 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:27:52 2009 -0300 Contact: Added debug. TelepathyQt4/Client/contact.cpp | 1 + 1 file changed, 1 insertion(+) commit 4db8495fdb45fad2607e00a0a450043753998f7c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:32:06 2009 -0300 ContactManager: Added more debug. TelepathyQt4/Client/contact-manager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 24736fe0ac2301ec97f4d5c9488c27214d5115f0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:30:49 2009 -0300 ContactManager: Added warnings for when contacts appear on the wrong lists. Added warnings when local pending contacts appear on subscribe list and remote pending contacts appear on publish list. TelepathyQt4/Client/contact-manager.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 2cc132718bc4c5649af7c592e592db7d4a7db1b8 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:29:20 2009 -0300 ContactManager: Renamed deny to remove on contact publication related methods. TelepathyQt4/Client/contact-manager.cpp | 10 ++++++---- TelepathyQt4/Client/contact-manager.h | 4 ++-- TelepathyQt4/Client/contact.cpp | 4 ++-- TelepathyQt4/Client/contact.h | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) commit 8bc2b9cb818b1297d05046ed2280a19c22ad0ac2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:27:05 2009 -0300 Contact: Added removePresenceSubscription. TelepathyQt4/Client/contact.cpp | 9 +++++++++ TelepathyQt4/Client/contact.h | 1 + 2 files changed, 10 insertions(+) commit e626e587f9c8cf1ae2449fb5123e5c69ef4d3389 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:22:31 2009 -0300 ContactManager: Added canRemoveContactsPresenceSubscription/removeContactsPresenceSubscription. TelepathyQt4/Client/contact-manager.cpp | 24 ++++++++++++++++++++++++ TelepathyQt4/Client/contact-manager.h | 3 +++ 2 files changed, 27 insertions(+) commit 3be97118121d217a11b89d1d544f391cb20c9a3b Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:25:47 2009 -0300 ContactManager: Fixed check on canAuthorizeContactsPresencePublication. Contacts in local pending can always be added, even if the Channel::groupFlags() does not contain the flag CanAdd. So just check if the publish channel exists. TelepathyQt4/Client/contact-manager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 05aa885798872510ac5077ad979fbcffb9f63236 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:13:14 2009 -0300 Channel: Allow contacts on local pending list be added even if groupFlags does not contain FlagCanAdd. TelepathyQt4/Client/channel.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) commit e61178812f881490c9f69db2fcb4eb17b9198779 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:19:11 2009 -0300 Use full namespace on Channel and ConnectionManager signals. TelepathyQt4/Client/channel.h | 12 ++++++------ TelepathyQt4/Client/contact-manager.cpp | 30 +++++++++++++++--------------- TelepathyQt4/Client/contact-manager.h | 22 +++++++++++----------- tests/dbus/chan-group.cpp | 30 +++++++++++++++--------------- 4 files changed, 47 insertions(+), 47 deletions(-) commit 634b4b266fa77b0bf7182c19656feebe6ca6d685 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 14:36:06 2009 -0300 ContactManager: Store ReferencedHandles instead of uint on ContactListChannel. TelepathyQt4/Client/connection.cpp | 7 ++++--- TelepathyQt4/Client/contact-manager.h | 9 +++++---- 2 files changed, 9 insertions(+), 7 deletions(-) commit 2ff418d6f826af43231ffd95598d81abb5057f38 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 14:21:54 2009 -0300 Added roster example. This example will show all the contacts of a given account using gabble and track their presence status. configure.ac | 1 + examples/Makefile.am | 2 +- examples/roster/Makefile.am | 34 ++++++++++++ examples/roster/main.cpp | 27 ++++++++++ examples/roster/roster-item.cpp | 45 ++++++++++++++++ examples/roster/roster-item.h | 49 +++++++++++++++++ examples/roster/roster-window.cpp | 111 ++++++++++++++++++++++++++++++++++++++ examples/roster/roster-window.h | 61 +++++++++++++++++++++ 8 files changed, 329 insertions(+), 1 deletion(-) commit 0b4bc4625db4616290861d1ba8e90d3b1ff18fb4 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 14:21:07 2009 -0300 Connection: Make connection works with current PendingHandles. PendingHandles now fails if some handle cannot be retrieved, so let's request one handle at a time. TelepathyQt4/Client/connection.cpp | 62 ++++++++++++++++------------------- TelepathyQt4/Client/contact-manager.h | 14 ++++++++ 2 files changed, 43 insertions(+), 33 deletions(-) commit 206a263a5308d7b0489ae569fccb22e9f5db413b Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 14:18:18 2009 -0300 Connection: Proper check for status when using some methods. Some methods are used internally before the connection emits statusChanged and the status() returns Connected. For example ensureChannel is used by FeatureRoster but the connection status may not be Connected yet (waiting for all features to become ready before changing status). TelepathyQt4/Client/connection.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 716bdf2c949acc2dc9b1c4939e809ac27c8e4407 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 14:16:05 2009 -0300 ContactManager: Fixed bug when iterating trough contact list channels and there is an invalid channel. TelepathyQt4/Client/contact-manager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 92dc792eda00bad728c4aeb9bbddf30add1c5fda Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 12:30:27 2009 -0300 Contact: Default to blank message on subscription/publication methods. TelepathyQt4/Client/contact.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4a5081dc8785b7aed9395a27cc7f1a513d953673 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 12:17:57 2009 -0300 ContactManager: Use the proper contacts for subscribe and publish lists. TelepathyQt4/Client/contact-manager.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) commit 2169747e0ac6e9908a54e94e36ab7ec0234cddbc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 12:14:05 2009 -0300 Connection: Remove the check for handle == 0 on requesting channel handles and added a FIXME. TelepathyQt4/Client/connection.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) commit ad198b5c29ba0da9f5ecdf745e63dea118192145 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 25 10:54:41 2009 -0300 ContactManager: Make allKnownContacts return the cached contacts instead of a PendingOperation. TelepathyQt4/Client/contact-manager.cpp | 5 ++--- TelepathyQt4/Client/contact-manager.h | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) commit 60bbdfa633d7a4da8272247a724350649a6f5316 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 20:18:40 2009 -0300 Contact: Added requestPresenceSubscription and authorize/denyPresencePublication support. TelepathyQt4/Client/contact-manager.cpp | 88 ++++++++++++++++++++++++++++----- TelepathyQt4/Client/contact-manager.h | 15 +++++- TelepathyQt4/Client/contact.cpp | 27 ++++++++++ TelepathyQt4/Client/contact.h | 6 +++ 4 files changed, 124 insertions(+), 12 deletions(-) commit fbb32e878ff2cd13c9aa0693573dbc30a1b8011d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 18:23:38 2009 -0300 ContactManager: Added signal that will be emitted when a contact asked to subscribe to your presence. TelepathyQt4/Client/contact-manager.cpp | 4 ++++ TelepathyQt4/Client/contact-manager.h | 3 +++ 2 files changed, 7 insertions(+) commit 9455b4769f0ddad2ad257b7f7404bc730b0b0138 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 18:07:31 2009 -0300 ContactManager: Update contacts subscription/publish state. TelepathyQt4/Client/contact-manager.cpp | 174 +++++++++++++++++++++++++++++--- TelepathyQt4/Client/contact-manager.h | 13 +++ 2 files changed, 174 insertions(+), 13 deletions(-) commit fd5e936d93d0339b88641e9ce59e5614239854b8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 18:06:47 2009 -0300 Contact: Added stub subscription/publish state methods. TelepathyQt4/Client/contact.cpp | 28 +++++++++++++++++++++++++++- TelepathyQt4/Client/contact.h | 15 +++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) commit 19aa52e6d85c287035d4135571c59c8d19bea92e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 13:56:57 2009 -0300 Channel: Changed channel to use QSet of contacts instead of QList. This make it easy to implement roster support, where contacts from different channels need to be merged. TelepathyQt4/Client/channel.cpp | 36 ++++++++++++++++---------------- TelepathyQt4/Client/channel.h | 14 ++++++------- tests/dbus/chan-group.cpp | 46 ++++++++++++++++++++--------------------- 3 files changed, 48 insertions(+), 48 deletions(-) commit abf0a1cf5f78c98ad8010df62cd2997f453a1efc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 14:26:10 2009 -0300 Connection: Added initial roster support (FeatureRoster). TelepathyQt4/Client/connection.cpp | 107 ++++++++++++++++++++++++++++++++ TelepathyQt4/Client/connection.h | 4 ++ TelepathyQt4/Client/contact-manager.cpp | 28 +++++++++ TelepathyQt4/Client/contact-manager.h | 43 +++++++++++++ 4 files changed, 182 insertions(+) commit c6b4d4ee439d62371de6250f25cbb081b6a04dbf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 24 13:54:22 2009 -0300 Contact: Added qHash function for a contact QSharedPointer. TelepathyQt4/Client/contact.h | 6 ++++++ 1 file changed, 6 insertions(+) commit edc1b022efc62240405a1a47d4cca96e45e37a4b Author: Simon McVittie Date: Tue Mar 3 15:22:20 2009 +0000 Add contactlist example connection manager (unreviewed initial version) from telepathy-glib configure.ac | 1 + tests/lib/Makefile.am | 5 +- tests/lib/contactlist/Makefile.am | 38 + tests/lib/contactlist/conn.c | 591 ++++++++++ tests/lib/contactlist/conn.h | 65 ++ tests/lib/contactlist/connection-manager.c | 116 ++ tests/lib/contactlist/connection-manager.h | 62 + tests/lib/contactlist/contact-list-manager.c | 1578 ++++++++++++++++++++++++++ tests/lib/contactlist/contact-list-manager.h | 107 ++ tests/lib/contactlist/contact-list.c | 632 +++++++++++ tests/lib/contactlist/contact-list.h | 118 ++ tests/lib/contactlist/manager-file.py | 19 + 12 files changed, 3330 insertions(+), 2 deletions(-) commit 76bf1cccf70416d88d39202a03e725a4b6a2a639 Author: Simon McVittie Date: Tue Mar 3 15:21:49 2009 +0000 Add manager-file.py (unreviewed initial version) from telepathy-glib tools/Makefile.am | 1 + tools/manager-file.py | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) commit 037e36da3122bde70a16f783abcb011ae9b164a8 Merge: 02e1654 0601a69 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 11:36:11 2009 -0300 Merge branch 'readiness' Reviewed-by: Simon McVittie (smcv) commit 0601a69b95fe49ba0f60dfc95af43f0087f57ab2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 00:58:21 2009 -0300 Removed PendingReadyAccount in favor of PendingReady. TelepathyQt4/Client/PendingReadyAccount | 13 --- TelepathyQt4/Client/pending-ready-account.cpp | 110 -------------------------- TelepathyQt4/Client/pending-ready-account.h | 62 --------------- TelepathyQt4/Makefile.am | 4 - 4 files changed, 189 deletions(-) commit 3570d3c3f96a8d7db2fe43c55db261023bb60646 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 01:28:59 2009 -0300 Account: Moved updateProperties/retrieveAvatar to Private class. TelepathyQt4/Client/account.cpp | 143 ++++++++++++++++++++-------------------- TelepathyQt4/Client/account.h | 3 - 2 files changed, 73 insertions(+), 73 deletions(-) commit 6ed5f5e8e262c999b97cc434fbccf0f8a0db1f26 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 00:51:31 2009 -0300 Account: Use ReadinessHelper class. TelepathyQt4/Client/account.cpp | 313 +++++++++++++++---------------------- TelepathyQt4/Client/account.h | 21 +-- examples/accounts/account-item.cpp | 2 +- tests/dbus/account-basics.cpp | 21 ++- 4 files changed, 147 insertions(+), 210 deletions(-) commit 1505d1c1db49c1e1fed5002fb19e5172a95e3a02 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 2 23:43:34 2009 -0300 Remove PendingReadyAccountManager in favor of PendingReady. TelepathyQt4/Client/PendingReadyAccountManager | 13 --- .../Client/pending-ready-account-manager.cpp | 111 --------------------- .../Client/pending-ready-account-manager.h | 62 ------------ TelepathyQt4/Makefile.am | 4 - 4 files changed, 190 deletions(-) commit e6fe2fa2841fadec36eb6df7bf4efaba40ca5125 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 2 23:40:38 2009 -0300 AccountManager: Use ReadinessHelper class. TelepathyQt4/Client/account-manager.cpp | 142 +++++++++++++------------------- TelepathyQt4/Client/account-manager.h | 14 ++-- examples/accounts/accounts-window.cpp | 2 +- tests/dbus/account-basics.cpp | 2 +- 4 files changed, 67 insertions(+), 93 deletions(-) commit 0465cc87ff27d5088da434c5923102c45a54ec50 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 2 23:40:08 2009 -0300 Removed PendingReadyConnection in favor of PendingReady. TelepathyQt4/Client/PendingReadyConnection | 13 --- TelepathyQt4/Client/pending-ready-connection.cpp | 110 ----------------------- TelepathyQt4/Client/pending-ready-connection.h | 62 ------------- TelepathyQt4/Makefile.am | 4 - 4 files changed, 189 deletions(-) commit 474c8b3377616a6f9f84d212a9806fb841077d07 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 00:50:24 2009 -0300 Connection: Fixed check for missing features. TelepathyQt4/Client/connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7e2c2218021360ad9c7565aba7597e26e5362e38 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 00:57:56 2009 -0300 ReadinessHelper: Proper return the proxy object on PendingReady::object(). TelepathyQt4/Client/readiness-helper.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ba55c5d9de4793ba3dcc254cc2c5fcaf2c13e8de Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 2 22:07:34 2009 -0300 Makefile.am: when creating FIXME.out, search TelepathyQt4/Client as well as TelepathyQt4/ Also search for cpp/hpp files. Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 02e165450be83d662257e142dac8ff9319b13964 Merge: 68eec1b 349807c Author: Andre Moreira Magalhaes (andrunko) Date: Tue Mar 3 11:11:19 2009 -0300 Merge branch 'trivia' Reviewed-by: Simon McVittie (smcv) commit 349807c2478684f1bfb0a6d6b90077ee13fcb418 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Mar 2 22:07:34 2009 -0300 Makefile.am: when creating FIXME.out, search TelepathyQt4/Client as well as TelepathyQt4/ Also search for cpp/hpp files. Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1cae45445c61252bf8a4cc13c6153f850dbb03fe Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 26 20:52:09 2009 -0300 chan-basics test: don't assume that IDs will be in a particular order. tests/dbus/chan-basics.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 68eec1b3824de65c68bae12ca05ad801ca92eabb Author: Simon McVittie Date: Fri Feb 27 12:55:24 2009 +0000 .gitignore: Ignore detached signatures .gitignore | 1 + 1 file changed, 1 insertion(+) commit 1bab8eb08bb2971fcf1a270cd309535e5318d2a4 Author: Simon McVittie Date: Fri Feb 27 12:54:59 2009 +0000 Bump version to 0.1.0.1 NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit 6d0c82fdc13dc11225e91ca27429cc9fcee01cf4 Author: Simon McVittie Date: Thu Feb 26 17:18:56 2009 +0000 configure.ac: version 0.1.0 configure.ac | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 9f9de66a44ebcdbd46d014c67cd359d936ed89dd Author: Simon McVittie Date: Thu Feb 26 17:18:43 2009 +0000 NEWS: explain what's in version 0.1.0 NEWS | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) commit 0505b4e37f5958ccb0e7994fa287e587e53becf7 Author: Simon McVittie Date: Thu Feb 26 17:12:37 2009 +0000 README: write a readme based on the one from telepathy-glib README | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) commit 4f77000cf96e3c453339084ac4f181b4adca86e4 Author: Simon McVittie Date: Thu Feb 26 17:12:14 2009 +0000 Documentation: mark TpPrototype as a prototype TelepathyQt4/Prototype/ConnectionFacade.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit 7445bf5c63a928899cf670b1c6cc4d997abf2109 Merge: cd17393 0e8ccfe Author: Simon McVittie Date: Tue Feb 24 13:32:54 2009 +0000 Merge branch 'dist' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit cd17393d0343559d6890c1e701c03fd73aba4968 Author: Jan Date: Tue Feb 17 16:03:25 2009 +0100 *added requestStreams() Signed-off-by: Stefan Eilers TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 35 +++++++++++++++++++++++++ TelepathyQt4/Prototype/StreamedMediaChannel.h | 2 ++ 2 files changed, 37 insertions(+) commit 67f5b33b3d319954cd9d517ecbd237202460be30 Author: Stefan Eilers Date: Tue Feb 24 13:06:23 2009 +0100 Fixed issue: text channel was not closed if ChatChannel was deleted TelepathyQt4/Prototype/ChatChannel.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) commit 0e8ccfece492f826624d671cd580bca2593ed059 Author: Simon McVittie Date: Tue Feb 24 11:23:21 2009 +0000 Channel docs: remove trailing dot to fix linkification of enums At some point we should probably remove the trailing dot from *all* constructs that aren't sentences, since it's incorrect English, and also breaks doxygen parsing in some cases (like this one). TelepathyQt4/Client/channel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 5738f5d97c369cef1b9ef9a73e271bf51a7e35eb Author: Simon McVittie Date: Tue Feb 24 11:11:33 2009 +0000 Connection: be consistent about the name of the first parameter to getContactAttributes The implementation and docs call it "handles", so make the header match. TelepathyQt4/Client/connection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a64dd9f68458a33978d9f7b7172e3f96a33405b9 Author: Simon McVittie Date: Tue Feb 24 11:11:01 2009 +0000 DBusProxy: document parameters for invalidated() and link its name correctly TelepathyQt4/Client/dbus-proxy.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 79dc30154d269ec50cbdfe2732e34d2afd90c55f Author: Simon McVittie Date: Tue Feb 24 11:09:49 2009 +0000 DBusProxy: format enum documentation the way doxygen wants it TelepathyQt4/Client/dbus-proxy.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) commit 327aa46a9907cffbab72bc9e47f3e0d223fe358c Author: Simon McVittie Date: Tue Feb 24 11:09:30 2009 +0000 PendingChannel: improve factual correctness of channel() TelepathyQt4/Client/pending-channel.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit b060a7ec29e884929384e031fb6ec734a6781ba5 Author: Simon McVittie Date: Tue Feb 24 11:09:10 2009 +0000 libqt4codegen: escape backslashes when generating doc-comments from the spec Otherwise, doxygen thinks they're a doxygen command and gets confused. tools/libqt4codegen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 4233ee0afd0ca7d9c6688c82aae0599d7f99d4d6 Author: Simon McVittie Date: Tue Feb 24 11:08:35 2009 +0000 TextChannel docs: qualify signal names so doxygen finds them TelepathyQt4/Client/text-channel.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 576e8e8c2d3d64005d5c76cc7a828b81a36496b5 Author: Simon McVittie Date: Tue Feb 24 11:08:18 2009 +0000 TextChannel constructor: document immutableProperties param TelepathyQt4/Client/text-channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 21ba7bfb0d099406b3395aafaea5aed0b1890c8a Author: Simon McVittie Date: Tue Feb 24 11:08:05 2009 +0000 TextChannel docs: format enum docs how doxygen wants them TelepathyQt4/Client/text-channel.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) commit 31839fff0d846f27abf161e303e19c11e994e778 Author: Simon McVittie Date: Tue Feb 24 11:07:43 2009 +0000 Connection docs: improve English and be consistent with param names TelepathyQt4/Client/connection.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) commit 7686779e8e7e99ab6898ea48cc1abf3f02c3bc01 Author: Simon McVittie Date: Tue Feb 24 11:07:14 2009 +0000 Channel: more catching up with the rename to GroupMemberChangeDetails TelepathyQt4/Client/channel.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit c3d12dfdc8db42dd69068b155840ec18f13eda0f Author: Simon McVittie Date: Tue Feb 24 11:06:59 2009 +0000 Channel docs: qualify interface accessor names so the docs get attached TelepathyQt4/Client/channel.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit b94e5009416b07609c82dc6a58e6ef94b0d508b7 Author: Simon McVittie Date: Tue Feb 24 11:06:26 2009 +0000 Channel docs: correct signal documentation TelepathyQt4/Client/channel.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) commit 6e2d2e7b27de629a56cec5b44c91805f09f26f52 Author: Simon McVittie Date: Tue Feb 24 11:06:00 2009 +0000 Channel docs: catch up with rename of GroupMemberChangeInfo to GroupMemberChangeDetails TelepathyQt4/Client/channel.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit f83503410ecbab40a42532ebd01f8d0cce878966 Author: Simon McVittie Date: Tue Feb 24 11:05:40 2009 +0000 Channel docs: doxygen wants \return in all-lower-case TelepathyQt4/Client/channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a2d208c0db8a71be40d9bd69bfd4ec30b358a943 Author: Simon McVittie Date: Tue Feb 24 11:05:22 2009 +0000 Channel docs: improve English and be consistent about param naming TelepathyQt4/Client/channel.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit d13d2441dd73aa549a745a4bf64edcb97529c427 Author: Simon McVittie Date: Tue Feb 24 11:04:44 2009 +0000 Account docs: improve English and be consistent about param naming TelepathyQt4/Client/account.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 3e2347873d20728e835798cd8531f1fe0f447d02 Author: Simon McVittie Date: Tue Feb 24 11:04:28 2009 +0000 Account docs: catch up with change to setAvatar's signature TelepathyQt4/Client/account.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit b171215d11362ab2b1851e65afaf57fced8878e4 Author: Simon McVittie Date: Tue Feb 24 11:04:00 2009 +0000 AccountManager docs: improve English, be consistent about param name TelepathyQt4/Client/account-manager.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit f84ad772f70f3368ef2ec2f40313e8594d3bb127 Author: Simon McVittie Date: Tue Feb 24 10:05:04 2009 +0000 Documentation: fix some \headerfile directives TelepathyQt4/Client/pending-contact-attributes.cpp | 2 +- TelepathyQt4/Client/pending-handles.h | 2 +- TelepathyQt4/Client/referenced-handles.h | 2 +- TelepathyQt4/Client/streamed-media-channel.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit fdf95d25ea8a71e548b62431a5d6cee7215ef850 Author: Simon McVittie Date: Tue Feb 24 09:55:06 2009 +0000 Fix #include for PendingHandles moc TelepathyQt4/Client/pending-handles.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 394c401dbdea082316c4ffa1806366e7d4a75e6f Author: Simon McVittie Date: Tue Feb 24 09:54:57 2009 +0000 Fix #include for PendingContactAttributes MOC TelepathyQt4/Client/pending-contact-attributes.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 4a186cd7396e3255510b1c8ee7054ec56ffd3648 Author: Simon McVittie Date: Mon Feb 23 19:59:40 2009 +0000 tests/lib: delete built sources in clean (fixing distcheck) tests/lib/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit a1b820df122ce767d525fb3de3d49729cbf982f0 Author: Simon McVittie Date: Mon Feb 23 19:59:26 2009 +0000 tests/lib: pass -I$(top_builddir) to C code to fix distcheck tests/lib/Makefile.am | 4 +++- tests/lib/csh/Makefile.am | 4 +++- tests/lib/echo2/Makefile.am | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) commit 14fdfb693df616c63acdd69db346584cd0cb40bd Author: Simon McVittie Date: Mon Feb 23 19:23:54 2009 +0000 Distribute TelepathyQt4/Client/PendingHandles TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 36db8654e5ed7a0d583be5cf74337bf393c1ffef Author: Simon McVittie Date: Mon Feb 23 18:53:39 2009 +0000 Revert "text-chan: workaround: don't assert that the Connection is ready when it should be" This reverts commit 10ecc7cc073fb51ada7c44dee7ee37c02b280d04. Since Andre's connection branch was merged, this shouldn't be necessary. tests/dbus/text-chan.cpp | 39 --------------------------------------- 1 file changed, 39 deletions(-) commit fb4fa3d8513ae1790ebb6d470dba81aa959ce5ba Merge: aab494b aaf0c4a Author: Simon McVittie Date: Mon Feb 23 18:50:41 2009 +0000 Merge branch 'ctor' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit aab494bdeee93694c0ba50e891203cbc6ef4f2e6 Merge: 4b8618e c8663ba Author: Simon McVittie Date: Mon Feb 23 18:49:52 2009 +0000 Merge branch 'messages' Conflicts: TelepathyQt4/Makefile.am Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 4b8618e99d2b52119122c606f4504bcbf0a28a11 Merge: 463d42a 5263719 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 23 15:38:34 2009 -0300 Merge branch 'connection' commit 526371993b8fa6238ea8cf0d14587804f18bc315 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 23 15:34:10 2009 -0300 Connection: Proper test if requestConnect will make the connection ready and change status. tests/dbus/conn-requests.cpp | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) commit b55b3818b63f7825749d3206dd91478c2d6ef220 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 23 15:22:34 2009 -0300 Connection: Added FeatureCore. TelepathyQt4/Client/connection.cpp | 19 +++++++++++-------- TelepathyQt4/Client/connection.h | 1 + 2 files changed, 12 insertions(+), 8 deletions(-) commit aaf0c4afa5a1143607293f0e2fd6d4eb8612780d Author: Simon McVittie Date: Mon Feb 23 18:21:30 2009 +0000 Message: group destructor with constructors, and implement operator!= TelepathyQt4/Client/message.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 94442a7e2e2f666edaff6fb2a150f77bf4c487b6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 23 15:17:58 2009 -0300 ReadinessHelper: Use proxy invalidation reason/message as error if proxy is invalid. TelepathyQt4/Client/readiness-helper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9cb2f91593f945d968a49d02c77f84bd848b8707 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 23 15:15:51 2009 -0300 Update copyright on Connection/ReadinessHelper. TelepathyQt4/Client/connection.cpp | 4 ++-- TelepathyQt4/Client/connection.h | 4 ++-- TelepathyQt4/Client/readiness-helper.cpp | 4 ++-- TelepathyQt4/Client/readiness-helper.h | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) commit 536e924c65bf538f64f40624f3251ab6bb712598 Merge: 463d42a c8663ba Author: Simon McVittie Date: Mon Feb 23 18:14:15 2009 +0000 Merge branch 'messages' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit 6f5927f303acdd1cd3ec3ae247e9487a73451c8c Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 23 15:13:00 2009 -0300 Connection: Use reply.error() as invalidation error on gotStatus if there is an error. TelepathyQt4/Client/connection.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 463d42a53f3c38ef71ccc464308a9b740fced388 Author: Simon McVittie Date: Mon Feb 23 11:56:49 2009 +0000 Ignore examples/accounts/accounts binary Reviewed-by: Olli Salli .gitignore | 1 + 1 file changed, 1 insertion(+) commit c8663ba5504e005cb416aef946a2d9e3f3b75b94 Author: Simon McVittie Date: Fri Feb 20 19:49:39 2009 +0000 Implement sending of complex messages (use at own risk) and inviting others Untested, but should work... TelepathyQt4/Client/text-channel.cpp | 21 +++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 7 +------ 2 files changed, 22 insertions(+), 6 deletions(-) commit 54a96a12ce7fc4bc252a9446336a80fdfbb66828 Author: Simon McVittie Date: Fri Feb 20 19:48:58 2009 +0000 Change Message(type, text) constructor to take a ChannelTextMessageType, and make it public TelepathyQt4/Client/message.cpp | 4 ++-- TelepathyQt4/Client/message.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 0fadf80fbd766d05b1f150eadf38febb90e5dad7 Author: Simon McVittie Date: Fri Feb 20 19:43:48 2009 +0000 Implement sending of simple (plain text) messages TelepathyQt4/Client/message.cpp | 22 ++++++++++ TelepathyQt4/Client/message.h | 2 + TelepathyQt4/Client/text-channel.cpp | 78 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 31 ++++++++++++-- tests/dbus/text-chan.cpp | 13 ++---- 5 files changed, 134 insertions(+), 12 deletions(-) commit c9aec9b9e3641ca7cd14612bf8c099931ed25583 Author: Simon McVittie Date: Fri Feb 20 18:57:45 2009 +0000 Move Message implementation to a separate source file, adding real API for things TextChannel needs to poke at In the process, fix Message::Private::textChannel: it was a pointer, but should clearly have been a QPointer. TelepathyQt4/Client/message.cpp | 551 +++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/message.h | 18 +- TelepathyQt4/Client/text-channel.cpp | 515 +------------------------------- TelepathyQt4/Client/text-channel.h | 1 - TelepathyQt4/Makefile.am | 1 + 5 files changed, 585 insertions(+), 501 deletions(-) commit 16753fb26ec0543bcc7900c8b90b76284edd57cf Author: Simon McVittie Date: Fri Feb 20 18:12:25 2009 +0000 #include Message, ReceivedMessage TelepathyQt4/Client/text-channel.cpp | 2 ++ tests/dbus/text-chan.cpp | 2 ++ 2 files changed, 4 insertions(+) commit 501b0f834799e61443c72795611c9378a2a784e0 Author: Simon McVittie Date: Fri Feb 20 18:11:31 2009 +0000 Remove now-unnecessary inclusion from TextChannel TelepathyQt4/Client/text-channel.h | 2 -- 1 file changed, 2 deletions(-) commit 20efbbd7199d5373ac8e86edbd72883ff730c33c Author: Simon McVittie Date: Fri Feb 20 18:11:10 2009 +0000 Make Message private stuff actually private, and befriend ReceivedMessage ReceivedMessage and Message are implemented together, and share a private data structure, so having ReceivedMessage be a friend of Message seems reasonable. TelepathyQt4/Client/message.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b7c9e86bb9b2f51795d6402883a0dd378069c416 Author: Simon McVittie Date: Fri Feb 20 18:09:46 2009 +0000 Move Message, ReceivedMessage declarations to their own header file TelepathyQt4/Client/Message | 13 +++++ TelepathyQt4/Client/ReceivedMessage | 13 +++++ TelepathyQt4/Client/message.h | 100 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 64 +---------------------- TelepathyQt4/Makefile.am | 3 ++ 5 files changed, 131 insertions(+), 62 deletions(-) commit 33231e4d96e325b4fb76992a8903ca212cd71b2d Author: Simon McVittie Date: Fri Feb 20 18:03:08 2009 +0000 text-chan: Improve test coverage a little tests/dbus/text-chan.cpp | 54 +++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 24 deletions(-) commit 629187af11cfa709d9c2872ba1cdfc757088d272 Author: Simon McVittie Date: Fri Feb 20 17:27:39 2009 +0000 text-chan: test acknowledging and forgetting messages tests/dbus/text-chan.cpp | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) commit 41b2ec7d29cdcce38a4e54dfbcb5b293d175b7e5 Author: Simon McVittie Date: Fri Feb 20 17:27:29 2009 +0000 TextChannel: Implement acknowledge() and forget() (plural forms only) TelepathyQt4/Client/text-channel.cpp | 90 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 26 ++--------- 2 files changed, 94 insertions(+), 22 deletions(-) commit 0483c90b9dbeb5b61e2163fb931975c39b867435 Author: Simon McVittie Date: Fri Feb 20 16:39:05 2009 +0000 text-chan: verify that we're notified about removed messages iff the channel has Messages tests/dbus/text-chan.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit be9429cfdbce74de69114b919db7a42bfad01c31 Author: Simon McVittie Date: Fri Feb 20 16:29:07 2009 +0000 text-chan test: Factor out remaining common test stuff tests/dbus/text-chan.cpp | 81 +++++++++++++----------------------------------- 1 file changed, 22 insertions(+), 59 deletions(-) commit c3d40c322339f806c90c9d83bae9d03f80c08053 Author: Simon McVittie Date: Fri Feb 20 16:23:30 2009 +0000 text-chan test: factor out more common stuff tests/dbus/text-chan.cpp | 87 ++++++++++++------------------------------------ 1 file changed, 22 insertions(+), 65 deletions(-) commit db33b98149c3242056654d53d62ca73ca08017bc Author: Simon McVittie Date: Fri Feb 20 16:16:04 2009 +0000 text-chan test: start to factor out common stuff tests/dbus/text-chan.cpp | 44 ++++++++++++++------------------------------ 1 file changed, 14 insertions(+), 30 deletions(-) commit 459c97dcd2102faa9e2923b6f3a674ba67740a5c Author: Simon McVittie Date: Fri Feb 20 16:11:41 2009 +0000 Fix text-chan test tests/dbus/text-chan.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 37f069c213346e1608fd366be8824de35e76629e Author: Simon McVittie Date: Fri Feb 20 15:54:27 2009 +0000 echo2: use "content-type", not the obsolete "type" (also changed in telepathy-glib) tests/lib/echo2/chan.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit b289de4a5ed55c271fad1fc4ca40bcc61ff66e75 Author: Simon McVittie Date: Fri Feb 20 15:02:14 2009 +0000 text-chan test: verify that echoes are received correctly tests/dbus/text-chan.cpp | 117 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 109 insertions(+), 8 deletions(-) commit 929aab003b71078408bcb800fb756e88506bd20b Author: Simon McVittie Date: Fri Feb 20 14:51:08 2009 +0000 Message: add operator== TelepathyQt4/Client/text-channel.cpp | 8 ++++++++ TelepathyQt4/Client/text-channel.h | 1 + 2 files changed, 9 insertions(+) commit cc5a2cf04b23473f3c15ea7d60f1f7ad89e27862 Author: Simon McVittie Date: Fri Feb 20 14:09:10 2009 +0000 TextChannel: implement FeatureMessageQueue TelepathyQt4/Client/text-channel.cpp | 340 ++++++++++++++++++++++++++++++++++- TelepathyQt4/Client/text-channel.h | 23 +-- 2 files changed, 338 insertions(+), 25 deletions(-) commit 188143cfd14e3619a08411f1e92d9e98b1b6a0ea Author: Simon McVittie Date: Fri Feb 20 14:08:48 2009 +0000 text-chan test: use ContactsConnection Tp-Qt4 doesn't have the necessary fallback code to make even basic Contact objects in the absence of the Contacts interface. tests/dbus/text-chan.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 10ecc7cc073fb51ada7c44dee7ee37c02b280d04 Author: Simon McVittie Date: Fri Feb 20 14:08:03 2009 +0000 text-chan: workaround: don't assert that the Connection is ready when it should be We should be able to revert this after Andre's Connection refactoring is reviewed. tests/dbus/text-chan.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) commit 16af78f7936e682e40a84297f7d95da74c4dffeb Author: Simon McVittie Date: Fri Feb 20 13:29:36 2009 +0000 TextChannel: keep track of what's going on to avoid connecting signals or calling methods redundantly Also use this information to make onTextReceived etc. return early if we haven't had the initial message dump (although in practice these slots don't do anything yet anyway). TelepathyQt4/Client/text-channel.cpp | 123 ++++++++++++++++++++++++++--------- 1 file changed, 91 insertions(+), 32 deletions(-) commit 434b934315d62fed60d36edb5b4b4b145cb29e84 Author: Simon McVittie Date: Fri Feb 20 13:10:50 2009 +0000 TextChannel: Rename desiredFeatures to pendingFeatures and guarantee that it does not contain features that are already ready. Also, don't connect to MessageReceived etc. more than once, if continueReadying() is somehow invoked twice while we are still trying to get the message queue. TelepathyQt4/Client/text-channel.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) commit ee2a6fc40a53aba13d8ad47bf2dcb82182b878f1 Author: Simon McVittie Date: Fri Feb 20 12:07:31 2009 +0000 Remove obsolete API-sketch documentation from header TelepathyQt4/Client/text-channel.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit 6f2cc626d892e1f3704f2510742cb5b8368439d4 Author: Simon McVittie Date: Fri Feb 20 12:11:04 2009 +0000 ReceivedMessage: change ctor to not take the sender as a parameter We don't immediately have a Contact object for the sender, so we have to add it later. TelepathyQt4/Client/text-channel.cpp | 3 +-- TelepathyQt4/Client/text-channel.h | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) commit ffed91f1b11ae83a5e7c4e641ce04f0a0ada9353 Author: Simon McVittie Date: Fri Feb 20 12:10:09 2009 +0000 Message: add a default constructor for internal use It turns out to be useful to be able to have a null Message; we need to have an event queue that lists structures containing either a message or a "message-removal event". Pending message IDs aren't necessarily unique, so we can't process message-removal events out of order. TelepathyQt4/Client/text-channel.cpp | 14 ++++++++++++++ TelepathyQt4/Client/text-channel.h | 2 ++ 2 files changed, 16 insertions(+) commit 6980b21b5c911ab4eafc2c9136e6a7262791d8c3 Author: Simon McVittie Date: Fri Feb 20 12:02:19 2009 +0000 Message::Private: add accessors for sender handle and pending ID TelepathyQt4/Client/text-channel.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 2a8fa3dbaf26dce34e98bc99288b35fc2550f6e4 Author: Simon McVittie Date: Thu Feb 19 15:16:40 2009 +0000 TextChannel: test Message and FeatureMessageSentSignal tests/dbus/text-chan.cpp | 157 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 126 insertions(+), 31 deletions(-) commit a8f033ff946426d1ae477d463652e105e922501e Author: Simon McVittie Date: Thu Feb 19 14:38:04 2009 +0000 TextChannel: Implement MessageSent as a Feature Unlike in the API sketch, give messageSent a const Message &; there's no point in being inefficient. TelepathyQt4/Client/text-channel.cpp | 71 +++++++++++++++++++++++++++--------- TelepathyQt4/Client/text-channel.h | 6 ++- 2 files changed, 58 insertions(+), 19 deletions(-) commit a312ee26fc9f2fca9f7e32e1ded923544a6398b4 Author: Simon McVittie Date: Thu Feb 19 14:37:28 2009 +0000 Implement most of Message and ReceivedMessage Change Message::size() to return int, consistent with QList. TelepathyQt4/Client/text-channel.cpp | 439 +++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 69 ++---- 2 files changed, 453 insertions(+), 55 deletions(-) commit 8a7ca050beeb95e4fa080d43f68e3691d31631fc Author: Simon McVittie Date: Wed Feb 18 19:01:03 2009 +0000 Test TextChannel::FeatureMessageCapabilities tests/dbus/text-chan.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 8496868e66ae00dc4c3c46461af8cf9416135d19 Author: Simon McVittie Date: Wed Feb 18 19:00:38 2009 +0000 TextChannel: Implement canInviteContacts and the Capabilities feature TelepathyQt4/Client/text-channel.cpp | 78 +++++++++++++++++++++++++++++++++++- TelepathyQt4/Client/text-channel.h | 25 +----------- 2 files changed, 79 insertions(+), 24 deletions(-) commit 05665692d6ffaf29bc6653704f3f3503c135837a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 19 11:39:02 2009 -0300 ReadinessHelper: Make becomeReady fail if requestedFeatures contains an invalid feature. TelepathyQt4/Client/readiness-helper.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) commit e59ab0619b9964931b1b85aeef6fdd2f5fce3392 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 19 11:37:55 2009 -0300 ReadinessHelper: Fixed bug when using QSet::intersect. QSet::intersect modifies the set, so make a copy of it before using intersect. TelepathyQt4/Client/readiness-helper.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 423a88f33f2fe3bef1894dd19f99fefcfad60564 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 19 11:18:13 2009 -0300 ReadinessHelper: Make operations fail if proxy object gets deleted. TelepathyQt4/Client/connection.cpp | 2 +- TelepathyQt4/Client/readiness-helper.cpp | 53 +++++++++++++++++++++++++++++--- TelepathyQt4/Client/readiness-helper.h | 8 ++++- 3 files changed, 56 insertions(+), 7 deletions(-) commit 6279cf45f4fa7b6bb398586f50c339f815559ceb Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 18 19:44:29 2009 -0300 Fixed tests to work with Connection changes. tests/dbus/chan-basics.cpp | 7 ++++--- tests/dbus/chan-group.cpp | 2 +- tests/dbus/conn-basics.cpp | 9 +++++---- tests/dbus/conn-requests.cpp | 2 +- tests/dbus/contacts.cpp | 7 ++++--- tests/dbus/handles.cpp | 2 +- tests/pinocchio/conn-basics.cpp | 14 +++++--------- 7 files changed, 21 insertions(+), 22 deletions(-) commit 4a267dbf15f808e0b52a9761d1aef1f1aed99193 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 18 19:43:31 2009 -0300 Connection: Use ReadinessHelper class (sanitize code and fix some bugs). P.s: Tests broken (will be fixed in a later patch) TelepathyQt4/Client/connection-internal.h | 6 +- TelepathyQt4/Client/connection.cpp | 638 +++++++++--------------------- TelepathyQt4/Client/connection.h | 19 +- 3 files changed, 213 insertions(+), 450 deletions(-) commit dfc5dd9073c85027096703b6c2356c75d1939295 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 18 19:42:01 2009 -0300 Added ReadinessHelper and PendingReady classes. ReadinessHelper is a helper class that should be used by all classes that wants to implement isReady/becomeReady mechanisms. PendingReady is a class used by ReadinessHelper::becomeReady. TelepathyQt4/Client/PendingReady | 13 ++ TelepathyQt4/Client/ReadinessHelper | 13 ++ TelepathyQt4/Client/pending-ready.cpp | 106 ++++++++++ TelepathyQt4/Client/pending-ready.h | 62 ++++++ TelepathyQt4/Client/readiness-helper.cpp | 350 +++++++++++++++++++++++++++++++ TelepathyQt4/Client/readiness-helper.h | 113 ++++++++++ TelepathyQt4/Makefile.am | 8 + 7 files changed, 665 insertions(+) commit 4eb08cc4e1b119f48f4f7ef555048fc9f7280e41 Author: Simon McVittie Date: Wed Feb 18 18:55:13 2009 +0000 TextChannel: Improve documentation TelepathyQt4/Client/text-channel.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) commit e72a8b6207e1ae62a9724fff092375408a3c06b7 Author: Simon McVittie Date: Wed Feb 18 18:29:53 2009 +0000 Add stub documentation for TextChannel::Features TelepathyQt4/Client/text-channel.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 7e97df303cce8545fc14d87c8da6409fcb845f14 Author: Simon McVittie Date: Wed Feb 18 18:26:32 2009 +0000 Test the TextChannel so far tests/dbus/Makefile.am | 11 +- tests/dbus/text-chan.cpp | 311 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 320 insertions(+), 2 deletions(-) commit c460be1ca8c2dbfd072a55739b28b6a2eb9a650d Author: Simon McVittie Date: Wed Feb 18 18:26:16 2009 +0000 TextChannel: implement isReady, becomeReady, hasMessagesInterface Also connect to the Sent or MessageSent signal (as appropriate). Limitations: - becomeReady() for the MessageQueue feature fetches the necessary info but doesn't do anything with it yet - The MessageCapabilities feature should work, but there are no accessors - It's unclear when the signals for sent messages start to be guaranteed TelepathyQt4/Client/text-channel.cpp | 276 +++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 33 ++++- 2 files changed, 301 insertions(+), 8 deletions(-) commit 85f5fc463fc9c5c82edb3be50225ef74707ecfb7 Author: Simon McVittie Date: Wed Feb 18 16:29:47 2009 +0000 Import the echo example from telepathy-glib Also add a note to tests/lib/Makefile.am about why it's not dealt with in the same way as our modified versions of the csh and echo2 examples: we should fix that divergence in future. configure.ac | 1 + tests/lib/Makefile.am | 12 +- tests/lib/echo/Makefile.am | 25 ++ tests/lib/echo/chan.c | 531 ++++++++++++++++++++++++++++++++++++ tests/lib/echo/chan.h | 58 ++++ tests/lib/echo/conn.c | 194 +++++++++++++ tests/lib/echo/conn.h | 55 ++++ tests/lib/echo/connection-manager.c | 95 +++++++ tests/lib/echo/connection-manager.h | 53 ++++ tests/lib/echo/im-manager.c | 389 ++++++++++++++++++++++++++ tests/lib/echo/im-manager.h | 54 ++++ 11 files changed, 1465 insertions(+), 2 deletions(-) commit c7498e34050776b3f991da089e9bb3213e7ee09b Author: Simon McVittie Date: Wed Feb 18 15:04:54 2009 +0000 PendingReadyChannel: add TextChannel as a friend so it can instantiate us TelepathyQt4/Client/pending-ready-channel.h | 1 + 1 file changed, 1 insertion(+) commit d765ee677747046abaf731bd6032f388b9a95d43 Author: Simon McVittie Date: Wed Feb 18 15:04:19 2009 +0000 Channel: expose messagesInterface() accessor TelepathyQt4/Client/channel.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 189039169052c58f6d0e10d9138ea94cd71602cc Merge: be313ca ed37f4a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 18 10:16:05 2009 -0300 Merge branch 'trivia' commit be313ca3fd111dd0555f24956ab8f80f0f322416 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 17 10:33:46 2009 -0300 Account: Support non spec-compliant account-specific part on account object path. TelepathyQt4/Client/account.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit c939545335f1cff18cc1d4e92f3ec70cd0b5ec2e Author: Simon McVittie Date: Tue Feb 17 15:45:09 2009 +0000 Sketch out the TextChannel API (currently all #if 0, please enable each method as it's implemented) TelepathyQt4/Client/text-channel.h | 223 +++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) commit 263d167a9aef613ace7b9118482a998a604bb084 Merge: 825836a e2b79f1 Author: Simon McVittie Date: Tue Feb 17 16:59:55 2009 +0000 Merge branch 'tests' Reviewed-by: Olli Salli commit e2b79f170d7cf95d25f3a3b12463d88a530603f6 Author: Simon McVittie Date: Tue Feb 17 16:50:58 2009 +0000 cm-basics: Work around fd.o#20165 by ensuring there is a ref to the TpDBusDaemon configure.ac | 2 +- tests/dbus/cm-basics.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) commit 9e02607e6c25221dc5c4890785efb84477bf6e2c Author: Simon McVittie Date: Tue Feb 17 16:28:02 2009 +0000 tp-glib tests: initialize dbus-glib In recent telepathy-glib versions, this must be done before instantiating a TpBaseConnection subclass like our SimpleConnection. tests/dbus/chan-basics.cpp | 1 + tests/dbus/chan-group.cpp | 1 + tests/dbus/cm-basics.cpp | 1 + tests/dbus/conn-basics.cpp | 1 + tests/dbus/conn-requests.cpp | 1 + tests/dbus/contacts.cpp | 1 + tests/dbus/handles.cpp | 1 + 7 files changed, 7 insertions(+) commit ed37f4ad3586722469221b7de052e66d00361fc5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 17 10:33:46 2009 -0300 Account: Support non spec-compliant account-specific part on account object path. TelepathyQt4/Client/account.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit 825836a94575222a4b0735e8330f668bf4a180b2 Merge: e82bcaf 1d8da8a Author: Olli Salli Date: Sun Feb 15 13:51:03 2009 +0200 Merge branch 'trivia-readiness' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 commit e82bcaf55effa79f95e60abade3377b3cb751134 Merge: 53be3a0 74a628f Author: Olli Salli Date: Sun Feb 15 13:33:21 2009 +0200 Merge branch 'channel' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 commit 53be3a037ff5e3c6a730d0d16c7c587424202889 Merge: 1206a1d 2e5bc7a Author: Olli Salli Date: Sun Feb 15 13:10:57 2009 +0200 Merge branch 'trivia-shared-pointer' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 commit 1d8da8a8597ea1e2fbc081b999e82295c4ef0b8c Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:56:00 2009 -0300 Fixed tests to work with new PendingReady stuff. tests/dbus/account-basics.cpp | 1 + tests/dbus/chan-basics.cpp | 2 ++ tests/dbus/chan-group.cpp | 2 ++ tests/dbus/cm-basics.cpp | 1 + tests/dbus/conn-basics.cpp | 1 + tests/dbus/conn-requests.cpp | 1 + tests/dbus/contacts.cpp | 1 + tests/dbus/handles.cpp | 1 + tests/pinocchio/cm-basics.cpp | 1 + tests/pinocchio/conn-basics.cpp | 2 ++ 10 files changed, 13 insertions(+) commit a8a63f51e6f66f2868a9e027d2d38dd50e05d7cc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:55:43 2009 -0300 Fixed examples to work with new PendingReady stuff. examples/accounts/accounts-window.cpp | 1 + 1 file changed, 1 insertion(+) commit 5a01abd2948378531182104463c57ca7c3e56b79 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:55:11 2009 -0300 Channel: Use PendingReadyChannel. P.s: Tests broken (will be fixed in a later patch) TelepathyQt4/Client/channel.cpp | 48 +++++++++++++++++++---------------------- TelepathyQt4/Client/channel.h | 3 ++- 2 files changed, 24 insertions(+), 27 deletions(-) commit c6271ae6393f206ab2b480ff6b9a10ac71dba0ab Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:54:57 2009 -0300 ConnectionManager: Use PendingReadyConnectionManager. P.s: Tests broken (will be fixed in a later patch) TelepathyQt4/Client/account.cpp | 1 + TelepathyQt4/Client/connection-manager-internal.h | 14 ++---------- TelepathyQt4/Client/connection-manager.cpp | 27 ++++++++++++----------- TelepathyQt4/Client/connection-manager.h | 4 ++-- 4 files changed, 19 insertions(+), 27 deletions(-) commit e9ab3adf4d5a042463f333e231fb42ad7cd6b86e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:54:35 2009 -0300 Connection: Use PendingReadyConnection. P.s: Tests broken (will be fixed in a later patch) TelepathyQt4/Client/connection.cpp | 54 ++++++++++++++++---------------------- TelepathyQt4/Client/connection.h | 3 ++- 2 files changed, 25 insertions(+), 32 deletions(-) commit 16362355e534c75c04384647c2248d95690c53f6 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:53:36 2009 -0300 AccountManager: Use PendingReadyAccountManager. P.s: Tests broken (will be fixed in a later patch) TelepathyQt4/Client/account-manager.cpp | 48 +++++++++++++++------------------ TelepathyQt4/Client/account-manager.h | 4 +-- 2 files changed, 23 insertions(+), 29 deletions(-) commit 1e0e6e4585fb6c77d4a6ffaba175d03ddb00a4f5 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:10:04 2009 -0300 Changed PendingReadyAccount features method to requestedFeatures. TelepathyQt4/Client/account.cpp | 10 +++++----- TelepathyQt4/Client/pending-ready-account.cpp | 14 +++++++------- TelepathyQt4/Client/pending-ready-account.h | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) commit 3917986e5ff028c2d4cb1b37a270a7ca649bd091 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 16:24:58 2009 -0300 Added PendingReadyConnectionManager. TelepathyQt4/Client/PendingReadyConnectionManager | 13 +++ .../Client/pending-ready-connection-manager.cpp | 110 +++++++++++++++++++++ .../Client/pending-ready-connection-manager.h | 62 ++++++++++++ TelepathyQt4/Makefile.am | 4 + 4 files changed, 189 insertions(+) commit b9551052f27d99e348486088be3900797917db8b Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 16:23:33 2009 -0300 ConnectionManager: Added features param on isReady/becomeReady. TelepathyQt4/Client/connection-manager-internal.h | 1 + TelepathyQt4/Client/connection-manager.cpp | 12 +++++++----- TelepathyQt4/Client/connection-manager.h | 9 +++++++-- 3 files changed, 15 insertions(+), 7 deletions(-) commit 431386ac0f38efeca7460f89223522057cf42c8a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 16:19:58 2009 -0300 Added PendingReadyConnection. TelepathyQt4/Client/PendingReadyConnection | 13 +++ TelepathyQt4/Client/pending-ready-connection.cpp | 110 +++++++++++++++++++++++ TelepathyQt4/Client/pending-ready-connection.h | 62 +++++++++++++ TelepathyQt4/Makefile.am | 4 + 4 files changed, 189 insertions(+) commit e3575f69d1dc9d470f780d504ae4764df6159e8e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 16:19:09 2009 -0300 Added PendingReadyChannel. TelepathyQt4/Client/PendingReadyChannel | 13 +++ TelepathyQt4/Client/pending-ready-channel.cpp | 110 ++++++++++++++++++++++++++ TelepathyQt4/Client/pending-ready-channel.h | 62 +++++++++++++++ TelepathyQt4/Makefile.am | 4 + 4 files changed, 189 insertions(+) commit d816075c5908a051b440d816d35ae435dc5d9299 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 17:16:29 2009 -0300 Added PendingReadyAccountManager. TelepathyQt4/Client/PendingReadyAccountManager | 13 +++ .../Client/pending-ready-account-manager.cpp | 111 +++++++++++++++++++++ .../Client/pending-ready-account-manager.h | 62 ++++++++++++ TelepathyQt4/Makefile.am | 4 + 4 files changed, 190 insertions(+) commit 1206a1d0d1208b5beb45526716c6d8d352c81d9d Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:10:14 2009 -0300 Account: Change presenceChanged signal to currentPresenceChanged. TelepathyQt4/Client/account.cpp | 2 +- TelepathyQt4/Client/account.h | 2 +- examples/accounts/account-item.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 0202ff1d803bc6678c0d15cbb76870e46c65fc02 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:42:04 2009 -0300 Channel: Changed PendingFailure reason. TelepathyQt4/Client/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ebc899dc7906cf50cc4f043eb620106568f22ac0 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:41:43 2009 -0300 Account: Only start introspection/become ready if valid. TelepathyQt4/Client/account.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) commit cc002780710e33811d00737984157e2fe4b9ed45 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:29:50 2009 -0300 AccountManager: Only start introspection/become ready if valid. TelepathyQt4/Client/account-manager.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit fa59b8d8a712367793a52839ef2ec36e73a7d1c8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:42:28 2009 -0300 Connection: Only start introspection/become ready if valid. TelepathyQt4/Client/connection.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 87ef9929613bff65dcdde9098974eda85ace8dfe Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:42:52 2009 -0300 ConnectionManager: Only start introspection/become ready if valid. TelepathyQt4/Client/connection-manager.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 647431ea528c038ed123f280ebd0e8ec7f76ceb2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:28:56 2009 -0300 DBusProxy: Invalidate if dbus connection is disconnected. TelepathyQt4/Client/dbus-proxy.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 2e5bc7a1766df79b66eaa51f98afc1f91f932b28 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 14:32:55 2009 -0300 Account: Make AccountManager/PendingAccount return a QSharedPointer instead of Account *. TelepathyQt4/Client/account-manager.cpp | 33 +++++++++++++++++++++++---------- TelepathyQt4/Client/account-manager.h | 11 ++++++----- TelepathyQt4/Client/pending-account.cpp | 16 +++++++++------- TelepathyQt4/Client/pending-account.h | 5 +++-- tests/dbus/account-basics.cpp | 5 +++-- 5 files changed, 44 insertions(+), 26 deletions(-) commit 624bd5c786738f7a5d541f5e041cee1e06a368c8 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 15:02:45 2009 -0300 Channel: Make PendingChannel return a QSharedPointer instead of Channel *. TelepathyQt4/Client/pending-channel.cpp | 41 +++++++++++++++++++-------------- TelepathyQt4/Client/pending-channel.h | 5 ++-- tests/dbus/chan-basics.cpp | 8 +++---- tests/dbus/chan-group.cpp | 9 ++++---- tests/dbus/conn-requests.cpp | 4 ++-- 5 files changed, 36 insertions(+), 31 deletions(-) commit 62ff88d23d3ca19194c199949a38ca82f168cbba Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 14:48:04 2009 -0300 Connection: Make PendingConnection return a QSharedPointer instead of Connection *. TelepathyQt4/Client/pending-connection.cpp | 17 ++++++++++------- TelepathyQt4/Client/pending-connection.h | 5 +++-- tests/pinocchio/cm-basics.cpp | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) commit 74a628f31f386dd55fedab2ab5721a287df374ef Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 11:44:44 2009 -0300 Channel: Improved tests to also test fallbacks. tests/dbus/chan-group.cpp | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) commit fe409e171c848062e35b498ac84113e478a38b10 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 13 11:42:05 2009 -0300 Add support for channel without properties on csh, so fallbacks on Telepathy::Client::Channel can be tested. tests/lib/csh/conn.c | 21 +++++++++++++++++++++ tests/lib/csh/conn.h | 3 +++ tests/lib/csh/room-manager.c | 18 +++++++++++++++++- tests/lib/csh/room-manager.h | 3 +++ tests/lib/csh/room.c | 17 +++++++++++++++-- tests/lib/csh/room.h | 29 +++++++++++++++++++++++++++++ 6 files changed, 88 insertions(+), 3 deletions(-) commit b868cca802143068715410c69f90091860b45b71 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 16:53:51 2009 -0300 Channel: Proper build initial members when using fallbacks. TelepathyQt4/Client/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit edea6158876985a8abf179a5d51bf4c88eb0e562 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 14:22:11 2009 -0300 Fixed .gitignore to just ignore the proper m4/* files that are not tracked. .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 8bf7fdd3f3eab85ea9c06c76a9e99fe3a1e0e0b6 Author: Olli Salli Date: Thu Feb 12 20:00:20 2009 +0200 Re-add stupidly removed return TelepathyQt4/Client/channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 0eafdd3b1936135c358d0f1de6c9a47470e3883a Author: Olli Salli Date: Thu Feb 12 19:55:27 2009 +0200 Remove superfluous return and recursive pMC() call in processMembersChanged() TelepathyQt4/Client/channel.cpp | 4 ---- 1 file changed, 4 deletions(-) commit 3c0ad1b75458bcac908850569208a8ca45c51af8 Author: Olli Salli Date: Thu Feb 12 18:28:18 2009 +0200 Make the Channel initial contacts and Group faking use the standard MCD handling mechanism TelepathyQt4/Client/channel.cpp | 275 +++++++++++++++++++++++----------------- 1 file changed, 158 insertions(+), 117 deletions(-) commit ebed4906bff8ca260aeed515d7e0715cd0e2fa57 Author: Olli Salli Date: Thu Feb 12 08:31:35 2009 +0200 Clean up LocalPendingInfo-using logic in Channel Yes, the unit tests still pass. However, initial LPI doesn't still actually work - test coverage should be improved as a fairly high priority task. It should start working quite soon though. TelepathyQt4/Client/channel.cpp | 59 ++++++++--------------------------------- 1 file changed, 11 insertions(+), 48 deletions(-) commit 2ed017419430bcaf0faa6f2c071a88823a7e8373 Author: Olli Salli Date: Thu Feb 12 08:19:53 2009 +0200 Make the Channel::Private layout more readable TelepathyQt4/Client/channel.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) commit e6fdf1954c8bc8010e4ff027c85968bbfb14ef08 Author: Olli Salli Date: Thu Feb 12 08:10:18 2009 +0200 Make channel.h sligthtly more logically emptyline-separated TelepathyQt4/Client/channel.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit 2d9db6a8f8fe3893cba73552807a09a7e0a1d3df Author: Olli Salli Date: Thu Feb 12 19:12:56 2009 +0200 Store the delta lists too in the chan-group test onMembersChanged tests/dbus/chan-group.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 0cd439b9d6b37a636d203edc974256f4c4ee1909 Author: Olli Salli Date: Thu Feb 12 19:06:03 2009 +0200 CSH emits removing two contacts at once as two membersChanged signals - wait for two in the test accordingly tests/dbus/chan-group.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 174abcbdd01ec0358cb4135ee6124c503b0d72ee Merge: 18db555 a3f5872 Author: Olli Salli Date: Thu Feb 12 19:24:01 2009 +0200 Merge branch 'trivia' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 commit 18db5552c1cf8b17e35de8b5b109115011fbd8ba Merge: a7d7cd9 d6fa0d0 Author: Olli Salli Date: Thu Feb 12 19:22:28 2009 +0200 Merge branch 'trivia' commit a7d7cd964b6dfd56ff8f4541d338be31e4c98dde Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 12:58:47 2009 -0300 Account: Proper check if Connection property is not a QDBusObjectPath. TelepathyQt4/Client/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d6fa0d089197f5d4968d4f1cb18a7371ba5b82e9 Author: Olli Salli Date: Thu Feb 12 18:47:21 2009 +0200 The account example CFLAGS must include QTCORE_CFLAGS too. examples/accounts/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit a3f587271384f13e6e85bfa34ffc7e56dab083b5 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 12:58:47 2009 -0300 Account: Proper check if Connection property is not a QDBusObjectPath. TelepathyQt4/Client/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d68098f0ae1c18107660e2c4c3c6f60433cba2c4 Author: George Goldberg Date: Thu Feb 12 15:02:05 2009 +0000 Add /m4/* directory to .gitignore. .gitignore | 1 + 1 file changed, 1 insertion(+) commit c43f94ca1ab143a7411bdfe0cb8f3f8b066f4cab Author: George Goldberg Date: Thu Feb 12 15:00:24 2009 +0000 Actually install header file: TelepathyQt4/Client/PendingContacts. TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 6647cd5b3704783cbc488f33cc8ad43b1eb09eb0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 11:52:48 2009 -0300 Channel: Improved chan-group test. tests/dbus/chan-group.cpp | 300 +++++++++++++++++++++++----------------------- 1 file changed, 147 insertions(+), 153 deletions(-) commit 454c3e24a2f55adef58b8582f22620ec5fada686 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 01:51:53 2009 -0300 Account: Added accounts example that list all accounts exposed by AM. configure.ac | 1 + examples/Makefile.am | 2 +- examples/accounts/Makefile.am | 33 +++++++ examples/accounts/account-item.cpp | 158 ++++++++++++++++++++++++++++++++++ examples/accounts/account-item.h | 88 +++++++++++++++++++ examples/accounts/accounts-window.cpp | 95 ++++++++++++++++++++ examples/accounts/accounts-window.h | 55 ++++++++++++ examples/accounts/main.cpp | 21 +++++ 8 files changed, 452 insertions(+), 1 deletion(-) commit 764c7021f1e4c841a1fd20171fd67b92c8a82f07 Author: Olli Salli Date: Thu Feb 12 07:42:51 2009 +0200 Add workaround trying QString instead of QDBusObjectPath for Account PropertiesChanged for "Connection" TelepathyQt4/Client/account.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit d48165489ecf50b7d71f2cbe0503d46e92836d8e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 12 01:49:20 2009 -0300 Account: Added more debug and fixed emission of nicknameChanged. TelepathyQt4/Client/account.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) commit 520285ab07593fe014f8906aaf1454f943b1a5f9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 17:55:33 2009 -0300 Account: Fixed account to return the proper manager if the manager was not used as parent object. TelepathyQt4/Client/account.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) commit 9c3a773c033ec1c85fb0fa0a982694cc6424b9e0 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 14:52:46 2009 -0300 ManagerFile: Proper check for XDG_DATA_DIRS. TelepathyQt4/manager-file.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit b6f6fee9e9cfd2489829a1df3c5d7ff05fa87a45 Author: Olli Salli Date: Wed Feb 11 18:31:35 2009 +0200 Fix one signal emission to actually compile (the previous revert commit only partially did its job) TelepathyQt4/Client/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bfba06ccade0bc7d55332464e7701de9bbc56687 Author: Olli Salli Date: Wed Feb 11 16:30:43 2009 +0200 Revert "Channel: Add contact param to groupSelfContactChanged signal." This reverts commit 1c99d0be2dafcde0f7634cde73991443af9910fb. Conflicts: TelepathyQt4/Client/channel.cpp TelepathyQt4/Client/channel.cpp | 8 +++----- TelepathyQt4/Client/channel.h | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) commit d4f57c8d10831e67ed1bdc8d8cbf5cd26a7eed67 Author: Olli Salli Date: Wed Feb 11 16:28:45 2009 +0200 Add some FIXME comments TelepathyQt4/Client/channel.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit d8da21509c0a3912f8a06982b8f0db25c74eec2c Author: Olli Salli Date: Wed Feb 11 16:12:02 2009 +0200 Add a warning for channel service removing MCD from GroupFlags TelepathyQt4/Client/channel.cpp | 1 + 1 file changed, 1 insertion(+) commit cbcc24e3d4298bdb562c7645206125a03baec49c Merge: b949696 134d238 Author: Olli Salli Date: Wed Feb 11 15:51:40 2009 +0200 Merge branch 'channel' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 into channel commit 134d238139b45a9e75fe7016c6c52565ca3662c9 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 10:49:08 2009 -0300 Channel: Added more tests for contact removal and remote pending. tests/dbus/chan-group.cpp | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) commit b949696b9303f4ebd12e31ad5f148cd6536a7c7f Merge: ff73cd5 4e01639 Author: Olli Salli Date: Wed Feb 11 15:48:02 2009 +0200 Merge branch 'channel' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 into channel Conflicts: tests/dbus/chan-group.cpp commit 4e01639ecccce8820d3210e278cfe40caf4b3666 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 10:31:44 2009 -0300 Channel: Added tests for contact removal. tests/dbus/chan-group.cpp | 108 ++++++++++++++++++++++++++-------------- tests/lib/csh/conn.c | 20 ++++++++ tests/lib/csh/conn.h | 1 + tests/lib/csh/room-manager.c | 14 ++++++ tests/lib/csh/room-manager.h | 1 + tests/lib/csh/room.c | 116 +++++++++++++++++++++++++++++-------------- tests/lib/csh/room.h | 1 + 7 files changed, 187 insertions(+), 74 deletions(-) commit ff73cd50d06983eeea96e2040175c748d4fc7f18 Author: Olli Salli Date: Wed Feb 11 15:17:31 2009 +0200 Propagate the details fully for MembersChangedDetailed TelepathyQt4/Client/channel.cpp | 37 +++++++++++++------------------------ tests/dbus/chan-group.cpp | 6 ++---- 2 files changed, 15 insertions(+), 28 deletions(-) commit 349ee7f7de35940f9aed1036de6986c1b5529728 Author: Olli Salli Date: Wed Feb 11 14:55:42 2009 +0200 Make onMembersChanged just a wrapper for onMembersChangedDetailed TelepathyQt4/Client/channel.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) commit 7fd9b222b8b1717dec38f17ca8336f1489b91e65 Author: Olli Salli Date: Wed Feb 11 14:44:40 2009 +0200 Merge the two publicly-visible membership change information classes in Channel TelepathyQt4/Client/channel.cpp | 30 +++++++-------- TelepathyQt4/Client/channel.h | 81 ++++++++++++----------------------------- tests/dbus/chan-group.cpp | 8 ++-- 3 files changed, 42 insertions(+), 77 deletions(-) commit da5721c52213f23a4d310af6abe93e5fe31db442 Merge: e6114ea 45a702b Author: Olli Salli Date: Wed Feb 11 09:58:54 2009 +0200 Merge branch 'channel' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 into andrunko-channel commit 45a702b36d30b2051d6f7fdbb27da1ab8abad89d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 00:28:55 2009 -0300 Channel: Fixed the logic to build self contact when self handle changes. TelepathyQt4/Client/channel.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) commit 772bed949e764834c2eb2a0ef3005b27996d33ef Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 00:20:54 2009 -0300 Channel: Make sure change signals aren't emitted if channel is not ready. TelepathyQt4/Client/channel.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 726a11f5ae24d30ff031778fbdfdddc3734dbf79 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 11 00:15:41 2009 -0300 Channel: Improved test coverage to test for both MembersChanged and MembersChangedDetailed. tests/dbus/chan-group.cpp | 54 +++++++++++++------ tests/lib/csh/conn.c | 21 ++++++++ tests/lib/csh/conn.h | 3 ++ tests/lib/csh/room-manager.c | 25 +++++++++ tests/lib/csh/room-manager.h | 3 ++ tests/lib/csh/room.c | 123 ++++++++++++++++++++++++++++++++++++++++--- tests/lib/csh/room.h | 3 ++ 7 files changed, 209 insertions(+), 23 deletions(-) commit b899ec198198f2326bfbe09fbf2920959abaccc6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 23:55:57 2009 -0300 Channel: Added support for MembersChangedDetailed. TelepathyQt4/Client/channel.cpp | 149 +++++++++++++++++++++++++++++++++++----- TelepathyQt4/Client/channel.h | 40 ++++++++++- tests/dbus/chan-group.cpp | 10 +-- 3 files changed, 174 insertions(+), 25 deletions(-) commit 51bde03fa6f7cf6ca3701f1a10d3b9029bb9413a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 18:59:07 2009 -0300 Channel: Added groupCanAdd/Remove/RescindChanged signals. TelepathyQt4/Client/channel.cpp | 18 ++++++++++++++++++ TelepathyQt4/Client/channel.h | 4 ++++ 2 files changed, 22 insertions(+) commit 1c99d0be2dafcde0f7634cde73991443af9910fb Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 18:36:25 2009 -0300 Channel: Add contact param to groupSelfContactChanged signal. TelepathyQt4/Client/channel.cpp | 10 ++++++---- TelepathyQt4/Client/channel.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) commit 6647f3de404c68d6e9db4e184b8bb598c1062a06 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 18:30:29 2009 -0300 Channel: Removed warning from fakeGroupInterfaceIfNeeded. TelepathyQt4/Client/channel.cpp | 6 ------ 1 file changed, 6 deletions(-) commit 51823980557fe0fca6d40fc190360a8ae846f1c3 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 18:21:00 2009 -0300 Channel: Moved groupInterface() to protected. TelepathyQt4/Client/channel.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 149ff4ba3f3f31e54b7c0edac95f46f076596a9f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 18:18:01 2009 -0300 Channel: Request all contacts features for now. TelepathyQt4/Client/channel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit e34f2422d2e0c40e59ec1315080f0c6fdae34cf2 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 18:16:02 2009 -0300 Channel: Added reason param to groupRemoveContacts. TelepathyQt4/Client/channel.cpp | 6 ++++-- TelepathyQt4/Client/channel.h | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) commit 36f86fae433704f76fdec9425dab42244cfc8c72 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 17:57:47 2009 -0300 Channel: Improved check on groupRemoveContacts. TelepathyQt4/Client/channel.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) commit 3ef1d959a47acfee187546a8649c8399ce9a65e0 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 17:46:56 2009 -0300 Channel: Added default value to groupAdd/RemoveContacts message param. TelepathyQt4/Client/channel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d9482b099e0b843d96ee22e0c79481566e2afa89 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 17:36:05 2009 -0300 Channel: Added groupCanRescind and improved checks on groupAdd/RemoveContacts. TelepathyQt4/Client/channel.cpp | 62 +++++++++++++++++++++++++++++++++++------ TelepathyQt4/Client/channel.h | 1 + 2 files changed, 55 insertions(+), 8 deletions(-) commit 97918ba3d85b6843102927024a7a991a4570b249 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 10 17:13:59 2009 -0300 Channel: Moved check for group interface on groupAdd/RemoveContacts bellow the check for groupCanAdd/RemoveContacts. TelepathyQt4/Client/channel.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit e6114ea7120ed130ec225d1bc111fcedcb361523 Merge: 849f671 39ca862 Author: Olli Salli Date: Tue Feb 10 22:00:49 2009 +0200 Merge branch 'channel' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4 into andrunko-channel Conflicts: TelepathyQt4/Client/channel.cpp commit 849f671da4b2efc38564be9cad60618ab55cbb91 Merge: ced2ba4 8888f1d Author: Simon McVittie Date: Tue Feb 10 12:50:37 2009 +0000 Merge branch 'channel-subclasses' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit ced2ba45d25b2b87ddec5456d4c67e52b56bab9a Merge: 36ee092 ff0d897 Author: Simon McVittie Date: Tue Feb 10 12:47:43 2009 +0000 Merge branch 'spec' Reviewed-by: Andre Moreira Magalhaes (andrunko) commit ff0d897da941d48d8e9bbe8e8098a4e669da873e Author: Simon McVittie Date: Tue Feb 10 12:25:37 2009 +0000 Update to spec 0.17.19 and enable File Transfer code generation This changes the ABI of Tubes channels' auto-generated code. Better now than later... TelepathyQt4/channel.xml | 1 + spec/Account.xml | 10 +- spec/Channel.xml | 11 +- spec/Channel_Dispatcher.xml | 4 +- spec/Channel_Interface_Group.xml | 172 +++++++-- spec/Channel_Interface_Media_Signalling.xml | 49 ++- spec/Channel_Interface_Media_Signalling_Future.xml | 189 ++++++++++ spec/Channel_Interface_Messages.xml | 7 +- spec/Channel_Interface_Password.xml | 5 +- spec/Channel_Interface_Tube.xml | 10 +- spec/Channel_Request.xml | 2 +- spec/Channel_Type_Contact_Search.xml | 4 +- spec/Channel_Type_DBus_Tube.xml | 102 ++---- spec/Channel_Type_File_Transfer.xml | 6 +- spec/Channel_Type_Room_List.xml | 2 +- spec/Channel_Type_Stream_Tube.xml | 4 +- spec/Channel_Type_Streamed_Media.xml | 18 +- spec/Channel_Type_Streamed_Media_Future.xml | 166 +++++++++ spec/Channel_Type_Text.xml | 6 +- spec/Channel_Type_Tubes.xml | 61 +++- spec/Connection.xml | 307 +++++++++++++--- spec/Connection_Interface_Aliasing.xml | 7 +- spec/Connection_Interface_Avatars.xml | 16 +- spec/Connection_Interface_Capabilities.xml | 6 +- spec/Connection_Interface_Contact_Capabilities.xml | 7 +- spec/Connection_Interface_Contact_Info.xml | 364 +++++++++++++++++-- spec/Connection_Interface_Contacts.xml | 9 + spec/Connection_Interface_Location.xml | 394 +++++++++++++++++++++ spec/Connection_Interface_Presence.xml | 66 +++- spec/Connection_Interface_Requests.xml | 42 ++- spec/Connection_Manager.xml | 9 +- spec/Media_Stream_Handler.xml | 63 +++- spec/Properties_Interface.xml | 6 +- spec/all.xml | 10 +- spec/errors.xml | 223 +++++++++++- spec/generic-types.xml | 6 +- 36 files changed, 2076 insertions(+), 288 deletions(-) commit 8888f1df649309db844c1c3ffa37a014c9d0c70e Author: Simon McVittie Date: Tue Feb 10 11:57:01 2009 +0000 PendingChannel: expose immutableProperties() This allows library users to instantiate their own Channel subclasses in an efficient way (rather than calling channel(), which will return a normal Telepathy-Qt4 class), or to process channels without ever making a proxy for them (which is what a ChannelDispatcher implementation should do). TelepathyQt4/Client/pending-channel.cpp | 25 +++++++++++++++++++++++++ TelepathyQt4/Client/pending-channel.h | 2 ++ 2 files changed, 27 insertions(+) commit e1d7e5631218cb326f94a4fb4652be44fd6e51e2 Author: Simon McVittie Date: Tue Feb 10 11:55:26 2009 +0000 PendingChannel: Correct documentation of handle, handleType TelepathyQt4/Client/pending-channel.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit d2b17f3d8ce1ae249b3dbd39a435b4156634aa3e Author: Simon McVittie Date: Tue Feb 10 10:21:47 2009 +0000 PendingChannel: we don't officially know about FileTransfer yet TelepathyQt4/Client/pending-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ddd165db5175f3ee883346729d80d62509b7d0db Author: Simon McVittie Date: Tue Feb 10 10:21:10 2009 +0000 Channel and subclasses: take immutable properties in constructor TelepathyQt4/Client/channel.cpp | 7 +++++++ TelepathyQt4/Client/channel.h | 1 + TelepathyQt4/Client/file-transfer.cpp | 6 +++++- TelepathyQt4/Client/file-transfer.h | 2 +- TelepathyQt4/Client/pending-channel.cpp | 14 +++++++++----- TelepathyQt4/Client/room-list.cpp | 6 +++++- TelepathyQt4/Client/room-list.h | 2 +- TelepathyQt4/Client/streamed-media-channel.cpp | 6 +++++- TelepathyQt4/Client/streamed-media-channel.h | 2 +- TelepathyQt4/Client/text-channel.cpp | 3 ++- TelepathyQt4/Client/text-channel.h | 2 +- 11 files changed, 38 insertions(+), 13 deletions(-) commit df62a18b47360e35be060c148b83a43dcbb6d73f Author: Simon McVittie Date: Mon Feb 9 18:55:12 2009 +0000 PendingChannel: construct a Channel subclass if the channel type is known TelepathyQt4/Client/pending-channel.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) commit a899e51e3a56c7a408c2f05f3ee432e216923d25 Author: Simon McVittie Date: Mon Feb 9 18:17:50 2009 +0000 Add stub implementations of TextChannel, StreamedMediaChannel, RoomList and FileTransfer TelepathyQt4/Client/FileTransfer | 13 ++++ TelepathyQt4/Client/RoomList | 13 ++++ TelepathyQt4/Client/StreamedMediaChannel | 13 ++++ TelepathyQt4/Client/TextChannel | 13 ++++ TelepathyQt4/Client/file-transfer.cpp | 84 ++++++++++++++++++++++++++ TelepathyQt4/Client/file-transfer.h | 54 +++++++++++++++++ TelepathyQt4/Client/room-list.cpp | 83 +++++++++++++++++++++++++ TelepathyQt4/Client/room-list.h | 54 +++++++++++++++++ TelepathyQt4/Client/streamed-media-channel.cpp | 83 +++++++++++++++++++++++++ TelepathyQt4/Client/streamed-media-channel.h | 54 +++++++++++++++++ TelepathyQt4/Client/text-channel.cpp | 83 +++++++++++++++++++++++++ TelepathyQt4/Client/text-channel.h | 54 +++++++++++++++++ TelepathyQt4/Makefile.am | 20 +++++- 13 files changed, 619 insertions(+), 2 deletions(-) commit 36ee092d3a8fe1d1dbaf364e00f1892cd0781604 Merge: d86579e 851b9a1 Author: Simon McVittie Date: Tue Feb 10 11:22:05 2009 +0000 Merge commit 'seil/AccountManager_ImprovedSignals' commit 39ca862859391f7f3f0d59bbd9faedca71c673f1 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 18:36:08 2009 -0300 Channel: Updated documentation. TelepathyQt4/Client/channel.cpp | 138 ++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 83 deletions(-) commit 299ec9d883dd1a62179537b00c051165aee31df4 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 18:14:03 2009 -0300 Channel: Changed requested to isRequested. TelepathyQt4/Client/channel.cpp | 4 ++-- TelepathyQt4/Client/channel.h | 2 +- tests/dbus/chan-basics.cpp | 4 ++-- tests/dbus/chan-group.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) commit d52c5e5f75071a61404045b74a08e0af6eb1d264 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 18:08:46 2009 -0300 Channel: Added test for fake group interface. tests/dbus/chan-basics.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) commit 11d6057c74f6b9af23ed00b57d39a0651b683950 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 18:08:27 2009 -0300 Channel: Fake group interface when TargetHandleType != Contact. TelepathyQt4/Client/channel.cpp | 71 +++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 20 deletions(-) commit 696e9f7ff7088b541ca20a6cd3cd5c88836f6508 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 17:22:49 2009 -0300 Channel: Proper check for initiatorContact()->id(). tests/dbus/chan-basics.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 641a5c5ccdde53c21fcb1b8324cb7bd2ca24b18d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 17:21:50 2009 -0300 Extend echo2 test to support contacts interface. tests/lib/echo2/Makefile.am | 3 ++- tests/lib/echo2/conn.c | 7 ++++++- tests/lib/echo2/conn.h | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) commit 612ab4d9f6edbfa203dc6e04846caa0dac9af27d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 17:20:48 2009 -0300 Channel: Properly tries to create a Contact object for initiator even if group interface is not supported. TelepathyQt4/Client/channel.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) commit 07faaac15457366deb0cee873f5ad06aafe27faa Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 17:00:24 2009 -0300 Channel: Added initiatorContact tests. tests/dbus/chan-basics.cpp | 2 ++ tests/dbus/chan-group.cpp | 1 + 2 files changed, 3 insertions(+) commit 91803136152c340fc71fc323f02f10ad4b417656 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 17:00:14 2009 -0300 Channel: Added initiatorContact getter. TelepathyQt4/Client/channel.cpp | 42 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/channel.h | 2 ++ 2 files changed, 44 insertions(+) commit e0e92016aa1ac7258578f85134e166a23c4bab4f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 16:18:01 2009 -0300 Channel: Add tests for requested getter. tests/dbus/chan-basics.cpp | 2 ++ tests/dbus/chan-group.cpp | 1 + 2 files changed, 3 insertions(+) commit 8323b20ec9aa4c031b06f4245ee28d7c28ee8fc8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 16:17:50 2009 -0300 Channel: Added requested getter. TelepathyQt4/Client/channel.cpp | 21 +++++++++++++++++++++ TelepathyQt4/Client/channel.h | 2 ++ 2 files changed, 23 insertions(+) commit 38f368acd978d18ecd7e276b58ae43682135d1ac Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 15:34:47 2009 -0300 Channel: Added test for selfContact. tests/dbus/chan-group.cpp | 2 ++ 1 file changed, 2 insertions(+) commit cb1c98ac2967cd2a04b198f9f22fc7c04b733dbb Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 15:34:09 2009 -0300 Channel: Represent selfHandle as a Contact object. TelepathyQt4/Client/channel.cpp | 109 +++++++++++++++++++++++++++++----------- TelepathyQt4/Client/channel.h | 7 ++- 2 files changed, 83 insertions(+), 33 deletions(-) commit 1d298dca0b572f6b6f414dcd24ac3e3dec6e4af8 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 14:07:28 2009 -0300 Channel: Re-enable support for group member change info. TelepathyQt4/Client/channel.cpp | 172 ++++++++++++++++++++++++++++------------ TelepathyQt4/Client/channel.h | 26 ++++-- 2 files changed, 140 insertions(+), 58 deletions(-) commit 2f6b125b1178c37450c5e54b07898997a69dcd3a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 14:07:09 2009 -0300 Channel: Fixed memory leaks. TelepathyQt4/Client/channel.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 3225e29dbea9ad4ff1fa0fe5ea50c92775a15955 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 11:08:10 2009 -0300 Channel: Represent actor of membersChanged as a Contact object. TelepathyQt4/Client/channel.cpp | 19 +++++++++++++++---- TelepathyQt4/Client/channel.h | 3 ++- tests/dbus/chan-group.cpp | 8 ++++---- 3 files changed, 21 insertions(+), 9 deletions(-) commit 8201aadf22a4c13419afa1e0d489117bf90b2fb7 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Feb 9 10:47:38 2009 -0300 Channel: Proper initialize private members on constructor. TelepathyQt4/Client/channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 1ec892c067383769093ba85aa03548426cb814c7 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Feb 7 13:34:37 2009 -0300 Channel: Skip membersChanged signal if nothing really changed. TelepathyQt4/Client/channel.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit c54ae747f51a4b730bd2e1e98a9af8d5eb15e122 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 22:31:52 2009 -0300 Channel: Extended group test to test adding contacts. tests/dbus/chan-group.cpp | 163 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 145 insertions(+), 18 deletions(-) commit 6dce14072ea5d919789516d9713b6d1ddb44aca2 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 22:29:21 2009 -0300 Add support for adding members and faking members accepting invitation on csh test. P.s.: I am not sure if this is the right way to do this, but it works. tests/lib/csh/room.c | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) commit e0517341ce027de20b9c4104b5784d14f545b714 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 22:28:54 2009 -0300 Channel: Add support for adding/removing contacts from a group. TelepathyQt4/Client/channel.cpp | 113 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/channel.h | 7 +++ 2 files changed, 120 insertions(+) commit a7171eca1379af3bcc9ab77aeee455752abd82ff Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 19:34:46 2009 -0300 Channel: Added initial test for contacts group integration. tests/dbus/Makefile.am | 5 + tests/dbus/chan-group.cpp | 351 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 356 insertions(+) commit ce0ae7cf87c415b8cccfca148bfe684f02c0bc1e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 18:04:13 2009 -0300 Extend channelspecific example to support contacts interface. tests/lib/csh/Makefile.am | 3 ++- tests/lib/csh/conn.c | 7 ++++++- tests/lib/csh/conn.h | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) commit fdb199fe1d490d98b1eb77585f4498e1a8be9fb7 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 18:03:16 2009 -0300 Added channelspecific example from tp-glib (support channel with type Room). configure.ac | 1 + tests/lib/Makefile.am | 2 +- tests/lib/csh/Makefile.am | 22 ++ tests/lib/csh/conn.c | 273 ++++++++++++++++++ tests/lib/csh/conn.h | 58 ++++ tests/lib/csh/room-manager.c | 376 +++++++++++++++++++++++++ tests/lib/csh/room-manager.h | 55 ++++ tests/lib/csh/room.c | 651 +++++++++++++++++++++++++++++++++++++++++++ tests/lib/csh/room.h | 64 +++++ 9 files changed, 1501 insertions(+), 1 deletion(-) commit 02535aa5e63e4ea731375fe374796ca6dc2aab46 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 19:19:39 2009 -0300 Channel: Simplified contacts code. Simplified contacts code by creating updateContacts that gets called whenever membersChanged signal is processed or when initial contacts are built. TelepathyQt4/Client/channel.cpp | 198 +++++++++++++++++----------------------- 1 file changed, 84 insertions(+), 114 deletions(-) commit 5262c7e27093c92d4d7c8274052f5cdc9364ab2e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 19:00:04 2009 -0300 Channel: Simplified membersChanged signal and fixed bug when a contact was added to current members and not removed from local/pending lists. Simplified membersChanged signal to signal who was actually removed from the channel, (it's not in any of the lists (current/local/remote)). Fixed bug when a contact was added to current members and not removed from local/pending lists. TelepathyQt4/Client/channel.cpp | 70 ++++++++++++++++++++++++----------------- TelepathyQt4/Client/channel.h | 4 +-- 2 files changed, 43 insertions(+), 31 deletions(-) commit 0d4e4b32619de969ef72ab0b85c976b3c4146d6e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Feb 6 17:58:01 2009 -0300 Channel: Continue processing membersChangedQueue even if no member was added. TelepathyQt4/Client/channel.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 5e0359621dc57f4e98ff88937c8df69a61e352fc Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 5 20:40:14 2009 -0300 Channel: Added initial version of channel members represented as Contact objects. TelepathyQt4/Client/channel.cpp | 466 ++++++++++++++++++++++++++-------------- TelepathyQt4/Client/channel.h | 33 ++- 2 files changed, 324 insertions(+), 175 deletions(-) commit e699b129152963bab89503f8c51e277fc472d4a3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 5 10:57:05 2009 -0300 Channel: Removed isClosed/closed in favor of invalidate. TelepathyQt4/Client/channel.cpp | 72 +++++++++-------------------------------- TelepathyQt4/Client/channel.h | 5 --- tests/dbus/chan-basics.cpp | 2 +- 3 files changed, 17 insertions(+), 62 deletions(-) commit 0c8b79b44a73b35951fd6317df17724fb7d08f11 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 3 17:04:40 2009 -0300 Channel: Updated documentation to reflect removal of readiness. TelepathyQt4/Client/channel.cpp | 62 +++++++++++------------------------------ 1 file changed, 16 insertions(+), 46 deletions(-) commit 266c7fcbcd8d9787d44662c93a05c20bfb5be67e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 3 16:58:32 2009 -0300 Channel: Removed readiness completelly. TelepathyQt4/Client/channel.cpp | 295 ++++++++++++++++------------------------ 1 file changed, 117 insertions(+), 178 deletions(-) commit 6bc10ba18a80af3b7045b75bf88b1a1d41fdc32d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 29 18:20:55 2009 -0300 Channel: Added test for requestClose/isClosed. tests/dbus/chan-basics.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit e9f96e9ce626effba796349d43ab4a15aece7dfd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 29 18:18:11 2009 -0300 Channel: Added isClosed, closed signal and changed close to requestClose. TelepathyQt4/Client/channel.cpp | 60 +++++++++++++++++++++-------------------- TelepathyQt4/Client/channel.h | 8 ++++-- 2 files changed, 37 insertions(+), 31 deletions(-) commit 45eaea9e38ee1bfa9bd6b6057e7996565d6bcf38 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 29 18:00:07 2009 -0300 Channel: Moved readiness internally. TelepathyQt4/Client/channel.cpp | 104 ++++++++++++++++++---------------------- TelepathyQt4/Client/channel.h | 14 ------ 2 files changed, 46 insertions(+), 72 deletions(-) commit cd0c7d54029384d2661cc957a95b9156959a7e96 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 28 18:31:14 2009 -0300 Channel: Added test for isReady/becomeReady. tests/dbus/Makefile.am | 5 + tests/dbus/chan-basics.cpp | 335 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+) commit a56981288768c557722efbb323f117d8b3e6e24a Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 28 18:26:05 2009 -0300 Channel: Added isReady/becomeReady. TelepathyQt4/Client/channel.cpp | 73 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/channel.h | 10 ++++++ 2 files changed, 83 insertions(+) commit d86579e34367641c4b2ca23096791950bf9fa72c Merge: 6766de2 cb90e42 Author: Olli Salli Date: Thu Feb 5 16:19:11 2009 +0200 Merge branch 'contact-features' commit 851b9a1edb62f71ff32573f27d45a5b95b574999 Author: basysKom GmbH Date: Thu Feb 5 13:56:02 2009 +0100 *implemented signal to Account - notifying that the presence has changed TelepathyQt4/Prototype/Account.cpp | 8 ++++++++ TelepathyQt4/Prototype/Account.h | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) commit 6766de293144265a53eae88875f1322a15488c2a Author: Andre Moreira Magalhaes (andrunko) Date: Thu Feb 5 09:10:25 2009 -0300 Account: Changed Q_EMIT/Q_FOREACH to emit/foreach. TelepathyQt4/Client/account.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) commit c4bab2b97399448ab914bded3012e5e2c816854d Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 17:26:51 2009 -0300 Account: Make sure change signals are emitted only if the property changed. Make sure change signals are emitted only if the property changed, protect against buggy AM impls. TelepathyQt4/Client/account.cpp | 65 +++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 18 deletions(-) commit cb90e42033165850ae4879c902292df0a2ed4790 Author: Olli Salli Date: Thu Feb 5 10:30:51 2009 +0200 Consider SelfHandleChanged for Connection::selfContact() TelepathyQt4/Client/connection.cpp | 14 +++++++++++++- TelepathyQt4/Client/connection.h | 3 ++- TelepathyQt4/Client/contact.h | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) commit cee34d3d96f461a3c2dfae4643610acc2fd0d7b9 Author: Olli Salli Date: Thu Feb 5 10:30:18 2009 +0200 Remove the self presence bits from Connection in favor of using selfContact()->presence* TelepathyQt4/Client/connection.cpp | 175 ++++++------------------------------- TelepathyQt4/Client/connection.h | 6 +- tests/dbus/conn-basics.cpp | 17 +--- tests/pinocchio/conn-basics.cpp | 6 +- 4 files changed, 35 insertions(+), 169 deletions(-) commit 9f652bc699362a1231264df499ddc829da859375 Author: Olli Salli Date: Thu Feb 5 09:20:32 2009 +0200 Add and test Connection::selfContact This particular thing needed a lot of duct taping to work. I'm writing an email on the particular issues with Connection's API and implementation - when those are fixed, this should become a lot cleaner. TelepathyQt4/Client/connection.cpp | 85 +++++++++++++++++++++++++++------ TelepathyQt4/Client/connection.h | 5 ++ TelepathyQt4/Client/contact-manager.cpp | 4 +- tests/dbus/contacts.cpp | 19 ++++++++ 4 files changed, 96 insertions(+), 17 deletions(-) commit 9e910dba3814e765230c9b4a617912276fd319ad Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 17:25:45 2009 -0300 Generate comparison operators for all structs. tools/qt4-types-gen.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit f7370885b3d7ea7ddd9b89703d50af6c681d9324 Author: Olli Salli Date: Wed Feb 4 21:24:13 2009 +0200 Add and test ContactManager::supportedFeatures() TelepathyQt4/Client/contact-manager.cpp | 38 ++++++++++++++++++++++++++++++--- TelepathyQt4/Client/contact-manager.h | 1 + TelepathyQt4/Client/contact.cpp | 26 +++++++++++++--------- tests/dbus/contacts.cpp | 8 ++++++- 4 files changed, 59 insertions(+), 14 deletions(-) commit 4dfd1c73353e9c32476e27de36ac4b2de1e37123 Author: Olli Salli Date: Wed Feb 4 20:52:04 2009 +0200 Add and test Connection::contactAttributeInterfaces This is quite a lousy hack to intertwine CAI with the other "essential" properties of the Connection - when Connection is otherwise sanitized, this code should be nicer too. TelepathyQt4/Client/connection.cpp | 73 +++++++++++++++++++++++++++++++++++--- TelepathyQt4/Client/connection.h | 2 ++ tests/dbus/contacts.cpp | 10 +++++- 3 files changed, 79 insertions(+), 6 deletions(-) commit 21b5b934281dc9ac02c63ded1ac1885f3409bcf6 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 15:03:45 2009 -0300 Account: Added haveConnectionChanged signal. TelepathyQt4/Client/account.cpp | 1 + TelepathyQt4/Client/account.h | 1 + 2 files changed, 2 insertions(+) commit dd428f96a61bacbc24ab443c50dc62eedcd064be Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 14:57:57 2009 -0300 Account: Added haveConnection method. TelepathyQt4/Client/account.cpp | 11 +++++++++++ TelepathyQt4/Client/account.h | 1 + 2 files changed, 12 insertions(+) commit 8f2148031beb40bbe31b95fc801d212c9cce02fc Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 14:54:33 2009 -0300 Account: Return a QSharedPointer on ::connection. TelepathyQt4/Client/account.cpp | 12 +++++++++--- TelepathyQt4/Client/account.h | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) commit c915869ef960c2dbd446a85932f53eecc4935f58 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 14:45:47 2009 -0300 Account: Proper get serviceName from objectPath when building connection. TelepathyQt4/Client/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8405642b41f746ff77738c4b6b9535c3555236ee Author: Andre Moreira Magalhaes (andrunko) Date: Wed Feb 4 14:44:24 2009 -0300 Account: Changed getConnection to connection. TelepathyQt4/Client/account.cpp | 2 +- TelepathyQt4/Client/account.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 4e350c2e7680904b86e98f60cd563263d899fa5a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Feb 3 10:10:15 2009 -0300 Fixed bug 19875: Building program that links against tpqt4 results in billions of warnings from the compiler. Fixed signature of invalidate methods on generated proxies. tools/qt4-client-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f4ec5a0d835003715943c82490b9bdec81fa29bd Author: Olli Salli Date: Wed Feb 4 15:16:16 2009 +0200 Add a test for unrequested Contact features tests/dbus/contacts.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) commit 0e3ab4b5cf8808d9a05250af040da8bc11f5f758 Author: Olli Salli Date: Wed Feb 4 14:57:57 2009 +0200 Add and test Contact::FeatureAvatarToken TelepathyQt4/Client/contact-manager.cpp | 20 ++++++++++++ TelepathyQt4/Client/contact-manager.h | 1 + TelepathyQt4/Client/contact.cpp | 58 ++++++++++++++++++++++++++++++++- TelepathyQt4/Client/contact.h | 6 ++++ tests/dbus/contacts.cpp | 42 ++++++++++++++++++++++++ 5 files changed, 126 insertions(+), 1 deletion(-) commit d6c7a63b38777fc157a734ff66507ca8def15ee8 Author: Olli Salli Date: Wed Feb 4 12:33:31 2009 +0200 Add stub test for ContactManager functionality being supported tests/dbus/contacts.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 700801799e6edaf58ebec1b58410b42dde4f6bb5 Author: Olli Salli Date: Wed Feb 4 12:23:28 2009 +0200 Add and test Contact::FeatureAlias TelepathyQt4/Client/contact-manager.cpp | 23 ++++++++++++++++++ TelepathyQt4/Client/contact-manager.h | 1 + TelepathyQt4/Client/contact.cpp | 39 +++++++++++++++++++++++++++++- TelepathyQt4/Client/contact.h | 6 +++++ tests/dbus/contacts.cpp | 42 +++++++++++++++++++++++++++++---- 5 files changed, 106 insertions(+), 5 deletions(-) commit 323eeab176c5f069baa8295f1e6702ab5fcb6d3b Merge: 6b877d5 aafc92a Author: Simon McVittie Date: Tue Feb 3 17:21:44 2009 +0000 Merge commit 'seil/AccountManager_ImprovedSignals' commit 709361e15b0e946ec648326582ae68c9094dd42a Author: Olli Salli Date: Tue Feb 3 11:06:13 2009 +0200 Simplify ContactManager code by adding a lookupContactByHandle utility function TelepathyQt4/Client/contact-manager.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) commit 4efe904192869650f3ac5106a3b6553d9423cfcf Author: Olli Salli Date: Tue Feb 3 10:53:35 2009 +0200 Add a test for changing contact attributes (currently tests FeatureSimplePresence) tests/dbus/contacts.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) commit a2fe2eeba6b71f3915bb4b08f3e5caf4e9cd2535 Author: Olli Salli Date: Mon Feb 2 17:13:49 2009 +0200 Add support for tracking SimplePresence changes on contacts (needs a test) TelepathyQt4/Client/contact-manager.cpp | 40 +++++++++++++++++++++++++++++++++ TelepathyQt4/Client/contact-manager.h | 3 +++ TelepathyQt4/Client/contact.cpp | 17 ++++++++++++-- TelepathyQt4/Client/contact.h | 4 ++++ 4 files changed, 62 insertions(+), 2 deletions(-) commit aafc92a55e133bb2fdd349f370752f4de19134f2 Author: Stefan Eilers Date: Mon Feb 2 18:19:41 2009 +0100 Fix crash after removing an account. Added a workaround that will be removed if ContactManager::slotMembersChanged() TelepathyQt4/Prototype/ContactManager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit e6f702745d639574c43adc8074e526991a2058a6 Author: Andrea Bakkar Date: Mon Feb 2 16:25:35 2009 +0100 It makes no sense to create a contact pointer if it should be deleted.. TelepathyQt4/Prototype/ContactManager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 4df2f3de98aad583c659e315aec12981d6bdc0d0 Author: Olli Salli Date: Mon Feb 2 16:01:16 2009 +0200 Test Contact::FeatureSimplePresence tests/dbus/contacts.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) commit 49e9f600f048cda652eafa64e986251a224c238a Author: Olli Salli Date: Mon Feb 2 14:31:51 2009 +0200 Add Contact::FeatureSimplePresence TelepathyQt4/Client/contact-manager.cpp | 5 ++- TelepathyQt4/Client/contact.cpp | 61 +++++++++++++++++++++++++++++++-- TelepathyQt4/Client/contact.h | 7 ++++ 3 files changed, 69 insertions(+), 4 deletions(-) commit 4384dc767bb1651c4c36c32056e57cbec0395a5f Author: Olli Salli Date: Mon Feb 2 12:47:57 2009 +0200 Add test for upgradeContacts tests/dbus/contacts.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) commit ead094e3fd064c0dc2c2d1d22c008bdf93e1d368 Author: Olli Salli Date: Mon Feb 2 12:16:51 2009 +0200 Add ContactManager::upgradeContacts() TelepathyQt4/Client/contact-manager.cpp | 9 +++++ TelepathyQt4/Client/contact-manager.h | 4 ++ TelepathyQt4/Client/pending-contacts.cpp | 64 ++++++++++++++++++++++++++++---- TelepathyQt4/Client/pending-contacts.h | 5 +++ tests/dbus/contacts.cpp | 2 + 5 files changed, 77 insertions(+), 7 deletions(-) commit d33781aad7d5025a48f82c9ab79cfac9eb8fbf7d Author: Olli Salli Date: Sun Feb 1 22:57:17 2009 +0200 Contact: add a concept of requested and actual Features TelepathyQt4/Client/contact-manager.cpp | 10 +++++----- TelepathyQt4/Client/contact-manager.h | 2 +- TelepathyQt4/Client/contact.cpp | 26 +++++++++++++++++++++++--- TelepathyQt4/Client/contact.h | 11 ++++++----- TelepathyQt4/Client/pending-contacts.cpp | 2 +- tests/dbus/contacts.cpp | 15 ++++++++------- 6 files changed, 44 insertions(+), 22 deletions(-) commit 82fced65e5531d44a7e053278118a0a049469140 Author: Olli Salli Date: Sun Feb 1 20:24:20 2009 +0200 Make contact sharing work even with a) simultaneous requests b) features TelepathyQt4/Client/contact-manager.cpp | 33 ++++++++++++++++---------------- TelepathyQt4/Client/contact-manager.h | 7 ++++--- TelepathyQt4/Client/contact.cpp | 4 +++- TelepathyQt4/Client/contact.h | 4 +++- TelepathyQt4/Client/pending-contacts.cpp | 19 ++++++++++-------- 5 files changed, 38 insertions(+), 29 deletions(-) commit 7d19bd6a8397d2e3c729954071147847a9650473 Author: Olli Salli Date: Sun Feb 1 19:41:51 2009 +0200 It's more natural to call PendingContacts::contactManager() just manager(), no? TelepathyQt4/Client/pending-contacts.cpp | 4 ++-- TelepathyQt4/Client/pending-contacts.h | 2 +- tests/dbus/contacts.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit 6b877d59825edb0a68643fe9ff3d3f7057904db7 Merge: 193c66a 14673c2 Author: Olli Salli Date: Sat Jan 31 10:26:43 2009 +0200 Merge branch 'shared-contacts' commit 14673c27e79be4988bcc7deac462411f3fc115cc Author: Olli Salli Date: Fri Jan 30 20:48:41 2009 +0200 Test that contacts are shared/cached tests/dbus/contacts.cpp | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) commit 18f79475e4507168767616a5806d5818adbd08f3 Author: Olli Salli Date: Fri Jan 30 20:02:58 2009 +0200 Return existing Contacts instead of always creating new ones if there are satisfying ones already in existence TelepathyQt4/Client/contact-manager.cpp | 74 +++++++++++++++++++++++++++----- TelepathyQt4/Client/contact-manager.h | 7 +++ TelepathyQt4/Client/pending-contacts.cpp | 38 +++++++++++----- TelepathyQt4/Client/pending-contacts.h | 7 ++- TelepathyQt4/Makefile.am | 1 + 5 files changed, 106 insertions(+), 21 deletions(-) commit 193c66a0d498aacc09beb79669e17f4b3db6a1c7 Author: George Goldberg Date: Thu Jan 29 22:15:59 2009 +0000 Correct documentation of Account::becomeReady(). TelepathyQt4/Client/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ffcaeddced187aea419e3691322cad8212cf8186 Author: George Goldberg Date: Thu Jan 29 21:53:32 2009 +0000 Make unit-tests work with the new return type of Account::becomeReady(). tests/dbus/account-basics.cpp | 1 + 1 file changed, 1 insertion(+) commit f2e257d5bc85fb2d56b7368e034bd222bd35719e Author: George Goldberg Date: Thu Jan 29 21:53:01 2009 +0000 Make Account::becomeReady() return a PendingReadyAccount instead of a PendingOperation. TelepathyQt4/Client/account.cpp | 57 +++++++++++++++++------------------------ TelepathyQt4/Client/account.h | 3 ++- 2 files changed, 26 insertions(+), 34 deletions(-) commit a515a3682e269b10011518925f6d41ff09ec1494 Author: George Goldberg Date: Thu Jan 29 21:52:24 2009 +0000 Add a PendingReadyAccount which is a subclass of PendingOperation that will be returned by Account::becomReady() allowing to get the Account easily from the slot triggered when the operation completes. TelepathyQt4/Client/PendingReadyAccount | 13 +++ TelepathyQt4/Client/pending-ready-account.cpp | 110 ++++++++++++++++++++++++++ TelepathyQt4/Client/pending-ready-account.h | 62 +++++++++++++++ TelepathyQt4/Makefile.am | 4 + 4 files changed, 189 insertions(+) commit 855502f7d516b7369895047788103883b1bc8adf Author: Olli Salli Date: Fri Jan 30 16:57:21 2009 +0200 Make the ContactManager the parent for PendingContacts and Contact TelepathyQt4/Client/contact-manager.cpp | 4 ++-- TelepathyQt4/Client/contact.cpp | 14 +++++++------- TelepathyQt4/Client/contact.h | 6 +++--- TelepathyQt4/Client/pending-contacts.cpp | 26 +++++++++++++------------- TelepathyQt4/Client/pending-contacts.h | 5 ++--- tests/dbus/contacts.cpp | 8 ++++---- 6 files changed, 31 insertions(+), 32 deletions(-) commit 9991c4b8134638e65a7a8231cd029f6016ba9350 Author: Olli Salli Date: Fri Jan 30 16:56:12 2009 +0200 Make ContactManager a full-fledged QObject TelepathyQt4/Client/connection.cpp | 2 -- TelepathyQt4/Client/contact-manager.cpp | 2 +- TelepathyQt4/Client/contact-manager.h | 5 +++-- 3 files changed, 4 insertions(+), 5 deletions(-) commit 952e30860138c206444c4f88379efd6fc2bb6583 Author: George Goldberg Date: Thu Jan 29 22:29:47 2009 +0000 Add file called compile to the ignore list (since it is now generated on my system when building for some reason). .gitignore | 1 + 1 file changed, 1 insertion(+) commit 00b99520d26358d53a77371161aa5a706723bda3 Merge: f320683 9a8ce93 Author: Olli Salli Date: Thu Jan 29 23:55:50 2009 +0200 Merge branch 'contacts-ng' commit 9a8ce93fc7fe6cc5e25dd129439412c103cb548a Author: Olli Salli Date: Thu Jan 29 23:55:20 2009 +0200 Fix an if lacking its curls in TestContacts tests/dbus/contacts.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0bb31766cc5cfae84d5cf91852fd675996c74d92 Author: Olli Salli Date: Thu Jan 29 23:30:12 2009 +0200 Add test for ContactManager::contactsForIdentifiers() tests/dbus/contacts.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) commit 63cda2ec8f0524465f0c130dcb9cd83e553d7c37 Author: Olli Salli Date: Thu Jan 29 23:05:26 2009 +0200 Test PendingContacts::invalidHandles() tests/dbus/contacts.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) commit da0cc3b46a04e4087b1ff15b73f79bfcdee896d1 Author: Olli Salli Date: Thu Jan 29 23:04:54 2009 +0200 Add PendingContacts::invalidHandles() (forgot it earlier) TelepathyQt4/Client/pending-contacts.cpp | 19 ++++++++++++++++++- TelepathyQt4/Client/pending-contacts.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) commit 78d540efd794b79707598f2260ccb0d89ca94270 Author: Olli Salli Date: Thu Jan 29 22:47:18 2009 +0200 Test the Contact::connection() accessor tests/dbus/contacts.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit b745c40d3126a3e21d3d5e0ecb01c9683a1da45b Author: Olli Salli Date: Thu Jan 29 22:42:39 2009 +0200 Verify that the closure accessors work in TestContacts::testForHandles tests/dbus/contacts.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit f32068340e7d5321f10f10ad7b4b95c3ed8eebcf Author: Olli Salli Date: Thu Jan 29 22:13:15 2009 +0200 Weed out includes in ManagerFile TelepathyQt4/manager-file.cpp | 10 +++++----- TelepathyQt4/manager-file.h | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) commit feca12a701e89a207709c2238e1dcdfda5edcc5d Author: Olli Salli Date: Thu Jan 29 22:10:52 2009 +0200 Weed out includes in KeyFile TelepathyQt4/key-file.cpp | 6 ++++-- TelepathyQt4/key-file.h | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) commit 2352d8cfe7e5aeeae78826cd908daef596734481 Author: Olli Salli Date: Thu Jan 29 22:08:13 2009 +0200 Weed out includes in ReferencedHandles TelepathyQt4/Client/referenced-handles.h | 1 - 1 file changed, 1 deletion(-) commit b58093edd8b89d54147c9f98129efb1b2eefdbc5 Author: Olli Salli Date: Thu Jan 29 22:06:41 2009 +0200 Weed out includes in PendingStringList TelepathyQt4/Client/pending-string-list.h | 1 - 1 file changed, 1 deletion(-) commit 1233a52b1991cd13dc3b32a5250f3e9a68540636 Author: Olli Salli Date: Thu Jan 29 21:56:37 2009 +0200 Weed out includes in PendingHandles TelepathyQt4/Client/pending-handles.cpp | 5 ++++- TelepathyQt4/Client/pending-handles.h | 11 +++++++---- tests/dbus/conn-requests.cpp | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) commit 6c5c0da2f50c3365407c472bfe77596523039f7f Author: Olli Salli Date: Thu Jan 29 21:56:20 2009 +0200 Weed out includes in Account TelepathyQt4/Client/account.h | 1 - 1 file changed, 1 deletion(-) commit 932822a70697707c84fe907eff27a5aa53dfa52d Author: Olli Salli Date: Thu Jan 29 21:50:22 2009 +0200 Weed out includes in PendingChannel TelepathyQt4/Client/pending-channel.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit a355dcdf6c343de372818cd82902073428c84a85 Author: Olli Salli Date: Thu Jan 29 21:46:43 2009 +0200 Weed out includes in OptionalInterfaceFactory TelepathyQt4/Client/optional-interface-factory.cpp | 2 ++ TelepathyQt4/Client/optional-interface-factory.h | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) commit 96f90da33490336f2936c64f9e0f186f74211ec7 Author: Olli Salli Date: Thu Jan 29 21:37:40 2009 +0200 Weed out includes in DBusProxy (Uninlines DBusProxy::invalidate(QDBusError)) TelepathyQt4/Client/dbus-proxy.cpp | 8 ++++++++ TelepathyQt4/Client/dbus-proxy.h | 13 +++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) commit 31b03db43ba3a55d4dd5a7ba34da242c06242e1d Author: Olli Salli Date: Thu Jan 29 21:14:06 2009 +0200 Use the new Test::processDBusQueue method in the contacts test tests/dbus/contacts.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) commit 5f9e1a66a87b6fd7b27b706b293ad6459cba929e Merge: dc5b6e8 a94ff32 Author: Olli Salli Date: Thu Jan 29 21:05:57 2009 +0200 Merge branch 'master' into contacts-ng commit a94ff32ac625d6be1b89956628f77a1bb77c6f2e Author: Olli Salli Date: Thu Jan 29 20:57:04 2009 +0200 Add Test::processDBusQueue to finish processing outstanding messages on services tests/dbus/handles.cpp | 7 +------ tests/lib/test.cpp | 17 +++++++++++++++++ tests/lib/test.h | 9 +++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) commit dc5b6e869e65e2376ac237fc5cd0a6c1148b27d3 Author: Olli Salli Date: Thu Jan 29 19:36:26 2009 +0200 Fix coding style in contact.h TelepathyQt4/Client/contact.h | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) commit eef5aa9f72cf9984dbceab58202129968ad65d13 Author: Olli Salli Date: Thu Jan 29 19:24:10 2009 +0200 Fix debug-internal.h includes in contacts code TelepathyQt4/Client/contact-manager.cpp | 1 + TelepathyQt4/Client/contact.cpp | 1 + TelepathyQt4/Client/pending-contact-attributes.cpp | 2 +- TelepathyQt4/Client/pending-contacts.cpp | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) commit 69a154141ecaf9887ceb11a4d36e047342cbfc84 Author: Olli Salli Date: Thu Jan 29 19:18:40 2009 +0200 Make Connection::getContactAttributes fail for non-ready and/or non-connected Connections TelepathyQt4/Client/connection.cpp | 24 ++++++++++++++++------ TelepathyQt4/Client/pending-contact-attributes.cpp | 5 ++--- TelepathyQt4/Client/pending-contact-attributes.h | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) commit 744a28dcc8f1d9c2359e490b13142e8a56afd5f6 Author: Olli Salli Date: Thu Jan 29 11:30:22 2009 +0200 Verify that the contact's handles are released properly in TestContacts::testForHandles tests/dbus/contacts.cpp | 54 +++---------------------------------------------- 1 file changed, 3 insertions(+), 51 deletions(-) commit b49c02240f57c7aad647a00a634627ec6284377a Author: Olli Salli Date: Thu Jan 29 09:27:28 2009 +0200 Add function for checking whether the Contacts/ContactManager functionality is supported TelepathyQt4/Client/contact-manager.cpp | 13 +++++++++++++ TelepathyQt4/Client/contact-manager.h | 2 ++ 2 files changed, 15 insertions(+) commit d158fc26f31fc2464de68e367c410829718ec5a3 Author: Olli Salli Date: Thu Jan 29 09:25:28 2009 +0200 Add basic test for contactsForHandles tests/dbus/contacts.cpp | 111 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 106 insertions(+), 5 deletions(-) commit 254f1a972fb70af2bc283c4409f49e93a92d6d98 Author: Olli Salli Date: Thu Jan 29 09:22:43 2009 +0200 Don't make Connection the QObject parent of the Contacts Because Contacts are usually referred to by QSharedPointers, it would be somewhat tedious for users to guarantee that there are none lying around after the Connection is deleted. TelepathyQt4/Client/contact.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 25169f8655e9e961942963c30d612aab0daaa112 Author: Olli Salli Date: Thu Jan 29 09:15:37 2009 +0200 Fix signal declaration signatures in PendingContacts TelepathyQt4/Client/pending-contacts.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a1f2a1be7779bd5accfc3aee484c000314943327 Author: Olli Salli Date: Thu Jan 29 08:46:13 2009 +0200 Skeleton test for Contacts tests/dbus/Makefile.am | 5 ++ tests/dbus/contacts.cpp | 221 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+) commit b0f9a1b22c1efd69805df30f2177291ab8ebd874 Author: Olli Salli Date: Thu Jan 29 08:16:13 2009 +0200 Warn when using PendingContacts::handles() and identifiers() inconsistently in respect to the query TelepathyQt4/Client/pending-contacts.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) commit f4618484da3023e2d202366676ab3e253c15b2da Author: Olli Salli Date: Wed Jan 28 23:24:17 2009 +0200 Add contactsForHandles(Referenced) and contactsForIdentifiers(QStringList) to ContactManager TelepathyQt4/Client/contact-manager.cpp | 24 ++++++++ TelepathyQt4/Client/contact-manager.h | 5 ++ TelepathyQt4/Client/pending-contacts.cpp | 102 ++++++++++++++++++++++++++++--- TelepathyQt4/Client/pending-contacts.h | 12 +++- 4 files changed, 133 insertions(+), 10 deletions(-) commit 7d0bf00f20ebe4eb3975b5524e1661fe03979cc0 Author: Olli Salli Date: Wed Jan 28 16:34:57 2009 +0200 Add basic accessors to Contact TelepathyQt4/Client/contact.cpp | 18 ++++++++++++++++++ TelepathyQt4/Client/contact.h | 5 +++++ 2 files changed, 23 insertions(+) commit 13552e1cbe656f038deb23fcd581035269ae2d50 Author: Olli Salli Date: Wed Jan 28 16:30:19 2009 +0200 Add naive ContactManager::contactsForHandles TelepathyQt4/Client/contact-manager.cpp | 43 ++++++++++++++++++++++++++++++++ TelepathyQt4/Client/contact-manager.h | 8 ++++++ TelepathyQt4/Client/contact.cpp | 20 +++++++++++++-- TelepathyQt4/Client/contact.h | 8 +++++- TelepathyQt4/Client/pending-contacts.cpp | 43 ++++++++++++++++++++++++++++++++ TelepathyQt4/Client/pending-contacts.h | 9 ++++++- 6 files changed, 127 insertions(+), 4 deletions(-) commit c5a620621cd190e56d333e1639c65c9c5b81fd5d Author: Olli Salli Date: Wed Jan 28 16:28:50 2009 +0200 Do moc for Contact TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 702cba10950480e477586fecf3ad01b8a0839386 Author: Olli Salli Date: Wed Jan 28 15:58:46 2009 +0200 Move PendingContactAttributes docs to the .cpp TelepathyQt4/Client/pending-contact-attributes.cpp | 81 +++++++++++++++++++++ TelepathyQt4/Client/pending-contact-attributes.h | 83 ---------------------- 2 files changed, 81 insertions(+), 83 deletions(-) commit 4c903d4bcb6a6db59e64a9aa29f875b0178fdfff Merge: 588ba73 7a0d353 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 28 10:43:13 2009 -0300 Merge branch 'trivia' commit 3b919eea1c249deb66cf080e349176a24529efce Author: Olli Salli Date: Wed Jan 28 15:36:50 2009 +0200 Implement basic accessors on PendingContacts TelepathyQt4/Client/pending-contacts.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit ebf9908c8172b12fbe06f426f6fdbb32084ed882 Author: Olli Salli Date: Wed Jan 28 15:08:40 2009 +0200 Implement ContactManager::connection() TelepathyQt4/Client/contact-manager.cpp | 5 +++++ TelepathyQt4/Client/contact-manager.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit f2cbb80239f1193dd3b50db586acd8636ee4b54a Author: Olli Salli Date: Wed Jan 28 14:57:47 2009 +0200 Add stub PendingContacts TelepathyQt4/Client/PendingContacts | 13 ++++++ TelepathyQt4/Client/pending-contacts.cpp | 61 ++++++++++++++++++++++++++++ TelepathyQt4/Client/pending-contacts.h | 69 ++++++++++++++++++++++++++++++++ TelepathyQt4/Makefile.am | 5 ++- 4 files changed, 147 insertions(+), 1 deletion(-) commit 01dbcce195b5d3a07cb27abbecd83068f1345469 Author: Olli Salli Date: Wed Jan 28 14:57:07 2009 +0200 Add stub Contact TelepathyQt4/Client/Contact | 13 +++++++++ TelepathyQt4/Client/contact.cpp | 43 +++++++++++++++++++++++++++++ TelepathyQt4/Client/contact.h | 61 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Makefile.am | 3 ++ 4 files changed, 120 insertions(+) commit 3503314e6210567d394899128f06bde71a99d60a Author: Olli Salli Date: Wed Jan 28 14:04:10 2009 +0200 Add stub ContactManager class TelepathyQt4/Client/ContactManager | 13 ++++++ TelepathyQt4/Client/connection.cpp | 15 ++++++- TelepathyQt4/Client/connection.h | 2 + TelepathyQt4/Client/contact-manager.cpp | 73 +++++++++++++++++++++++++++++++++ TelepathyQt4/Client/contact-manager.h | 57 +++++++++++++++++++++++++ TelepathyQt4/Makefile.am | 3 ++ 6 files changed, 161 insertions(+), 2 deletions(-) commit 3a9517f967ee149e5fdddf61ec59abf785697640 Author: Olli Salli Date: Sun Dec 21 22:07:24 2008 +0200 Add a wrapper for GetContactAttributes integrating it with the handle machinery TelepathyQt4/Client/PendingContactAttributes | 6 + TelepathyQt4/Client/connection.cpp | 57 ++++++++ TelepathyQt4/Client/connection.h | 6 +- TelepathyQt4/Client/pending-contact-attributes.cpp | 161 ++++++++++++++++++++ TelepathyQt4/Client/pending-contact-attributes.h | 162 +++++++++++++++++++++ TelepathyQt4/Client/referenced-handles.h | 1 + TelepathyQt4/Makefile.am | 4 + 7 files changed, 396 insertions(+), 1 deletion(-) commit 588ba7342bedfee565f20b50a78026317d136806 Author: Olli Salli Date: Wed Jan 28 13:23:55 2009 +0200 Actually make it 0.7.23, not 0.7.21 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit da91024b5273bb1a64ce4a5fcda00eaa19519b96 Author: Olli Salli Date: Wed Jan 28 13:11:17 2009 +0200 Bump tp-glib dependency to 0.7.23, 0.7.20 has no TpMessageMixin for example configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1caab54e3a81f4fa193bc9ccda3e6e387f5251f7 Author: Stefan Eilers Date: Wed Jan 28 11:45:36 2009 +0100 Split signals for removed contacts - signalAboutToRemoveContact() is emmitted before it is removed from the internal lists. - signalContactRemoved() is emmitted if the contact is removed internally.. TelepathyQt4/Prototype/ContactManager.cpp | 4 +++- TelepathyQt4/Prototype/ContactManager.h | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) commit cb473029559b36d541e93d3319d745f0c43d1146 Author: Stefan Eilers Date: Wed Jan 28 11:21:38 2009 +0100 API update to clearify the signals TelepathyQt4/Prototype/AccountManager.h | 5 +++++ 1 file changed, 5 insertions(+) commit d30d2c89ea1e90912f378383e0eaa8c5df429fd1 Author: Stefan Eilers Date: Wed Jan 28 11:13:48 2009 +0100 Splitting signals for removing accounts. - signalAboutToRemoveAccount() is emitted if the account is removed in telepathy and immediately before it is removed from local lists. - signalAccountRemoved() is emmitted after the account was removed from internal lists. TelepathyQt4/Prototype/AccountManager.cpp | 9 ++++++--- TelepathyQt4/Prototype/AccountManager.h | 11 +++++++++-- tests/prototype/prototype.cpp | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) commit 7a0d353de60b621cb928c529330d75eb199b1ddc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 19:06:23 2009 -0300 Channel: Clear up instrospection queue if the channel closes/dies. TelepathyQt4/Client/channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 411b6a902bba74da2d66706c0d520cd63d63ffdf Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 19:03:16 2009 -0300 Channel: Delay initial introspection. To do this continueIntrospection had to be moved to Connection class itself as it needs to be a slot. TelepathyQt4/Client/channel.cpp | 51 +++++++++++++++++++---------------------- TelepathyQt4/Client/channel.h | 2 ++ 2 files changed, 26 insertions(+), 27 deletions(-) commit efca910ba563171346f8c61aeaf7006cc8d2b948 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 18:56:54 2009 -0300 Channel: Changed Private member initialization to use within definition initialization. TelepathyQt4/Client/channel.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) commit e6dde60500cc90e2436e5591fa240165424dd440 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 18:54:16 2009 -0300 Channel: Moved baseInterface initialization to Private class itself. TelepathyQt4/Client/channel.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 321c5224d43928797bdd29640295d1499b751cd7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 18:53:35 2009 -0300 Channel: Removed Q_ASSERT(false) from changeReadiness(ReadinessDead). Removed Q_ASSERT(false) from changeReadiness(ReadinessDead), this is needed because when the connection is invalidated and the channel is not yet dead it will call changeReadiness(ReadinessDead) that will assert. TelepathyQt4/Client/channel.cpp | 1 - 1 file changed, 1 deletion(-) commit 069e310cd3bcc27d4b1c0fc8831cc92461cbd125 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 18:39:54 2009 -0300 Channel: Un-inline Private methods. TelepathyQt4/Client/channel.cpp | 640 +++++++++++++++++++++------------------- 1 file changed, 330 insertions(+), 310 deletions(-) commit bcf3ae9aeca7b70fdb9029402c2499fb8c974a68 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 18:34:26 2009 -0300 Channel: Moved Private::Channel &parent to *parent. TelepathyQt4/Client/channel.cpp | 140 ++++++++++++++++++++-------------------- 1 file changed, 70 insertions(+), 70 deletions(-) commit 03a0d79208e7ae5ca97f4abed1095eb0417d2784 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 18:29:20 2009 -0300 Channel: Fixed coding style. TelepathyQt4/Client/channel.cpp | 490 ++++++++++++++++++++++++++-------------- TelepathyQt4/Client/channel.h | 95 +++++--- 2 files changed, 375 insertions(+), 210 deletions(-) commit d55d771c4ef80ae9a8b356dee9adc878fadb7ee5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 17:55:52 2009 -0300 Channel: Moved docs to source file as is. TelepathyQt4/Client/channel.cpp | 615 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/channel.h | 548 +---------------------------------- 2 files changed, 617 insertions(+), 546 deletions(-) commit 9ac671fb27101941e309252d10b05486b674916d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 16:37:44 2009 -0300 DBusProxy: Changed signal invalidated to use const QString & instead of QString. TelepathyQt4/Client/abstract-interface.cpp | 6 +++--- TelepathyQt4/Client/abstract-interface.h | 4 ++-- TelepathyQt4/Client/channel.cpp | 4 ++-- TelepathyQt4/Client/dbus-proxy.h | 2 +- tests/dbus/conn-basics.cpp | 4 ++-- tests/dbus/conn-requests.cpp | 4 ++-- tests/dbus/handles.cpp | 2 +- tests/dbus/stateful-proxy.cpp | 20 ++++++++++---------- 8 files changed, 23 insertions(+), 23 deletions(-) commit befe57fdea12689d948d03a1627a722773f52fad Author: Stefan Eilers Date: Tue Jan 27 16:57:59 2009 +0100 Improved debug output TelepathyQt4/Prototype/ContactManager.cpp | 13 +++++++------ TelepathyQt4/Prototype/PresenceManager.cpp | 7 +++++-- 2 files changed, 12 insertions(+), 8 deletions(-) commit bb4c5cb594e09ca352a748e8eb6fe7e8a657cfdd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:26:32 2009 -0300 Renamed tests/dbus/chan-basics.cpp to tests/dbus/conn-requests.cpp. tests/dbus/Makefile.am | 10 +- tests/dbus/chan-basics.cpp | 311 ------------------------------------------- tests/dbus/conn-requests.cpp | 311 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 316 insertions(+), 316 deletions(-) commit 1a7a140f759d26b4e77401f19d22472d70111cf9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:24:31 2009 -0300 Changed tests/dbus/handles.cpp to have init/cleanup. tests/dbus/handles.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 48c2f0777c26db8e5e2d1722da80b68383d9292b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:24:17 2009 -0300 Changed tests/dbus/conn-basics.cpp to have init/cleanup and create/destroy a conn for each test. tests/dbus/conn-basics.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit b5162ea7656bfb31ddda05da6d655a4e99d224d6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:23:11 2009 -0300 Changed tests/dbus/cm-basics.cpp to have init/cleanup and create/destroy a cm for each test. tests/dbus/cm-basics.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit af7b8e2b3a3500db4b45607a27443a72bef481bd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:22:47 2009 -0300 Changed tests/dbus/chan-basics.cpp to have init/cleanup. tests/dbus/chan-basics.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit f9fae12e67ebed988d50fc0795273dbe05bcf7bd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:21:57 2009 -0300 Changed tests/dbus/account-basics.cpp to have init/cleanup. tests/dbus/account-basics.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 2e80b5274576ad86b6f5073931e3910fd182f831 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 11:35:50 2009 -0300 Connection: Added tests for ensure/createChannel. tests/dbus/Makefile.am | 5 + tests/dbus/chan-basics.cpp | 299 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+) commit 3fe9cfb54ea4b4a88545e03f387dfc3445563714 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 11:34:40 2009 -0300 Added echo2 test from tp-glib. Added echo2 test from tp-glib (supports ensure/createChannel). configure.ac | 1 + tests/lib/Makefile.am | 2 + tests/lib/echo2/Makefile.am | 22 ++ tests/lib/echo2/chan.c | 589 +++++++++++++++++++++++++++++++++++++++++++ tests/lib/echo2/chan.h | 58 +++++ tests/lib/echo2/conn.c | 193 ++++++++++++++ tests/lib/echo2/conn.h | 54 ++++ tests/lib/echo2/im-manager.c | 389 ++++++++++++++++++++++++++++ tests/lib/echo2/im-manager.h | 54 ++++ 9 files changed, 1362 insertions(+) commit 8a346b79305c7e40db7037e68b7b1648b142bad4 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 11:34:06 2009 -0300 Connection: Only ChannelType is mandatory on ensure/createChannel. TelepathyQt4/Client/connection.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 26413fc30eb2d789d3ebaa70ad758d82dd5be2f5 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 10:52:18 2009 -0300 Connection: Updated requestConnect doc. TelepathyQt4/Client/connection.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit fa087fe1d139da82cef006892504ecf2b0316ea8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 10:49:59 2009 -0300 Connection: Fixed pinocchio test conn-basics. tests/pinocchio/conn-basics.cpp | 55 +++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 24 deletions(-) commit e9e724598a96fc2907fdd8d97a6e8b4931317018 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:00:29 2009 -0300 Changed tests/dbus/handles.cpp to inherit Test. tests/dbus/handles.cpp | 118 ++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 66 deletions(-) commit 6e04cce164d5866ff7e3efcb2a3b587632a140b7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:00:21 2009 -0300 Changed tests/dbus/conn-basics.cpp to inherit Test. tests/dbus/conn-basics.cpp | 64 ++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 31 deletions(-) commit a06b0ff76adc4a5c80ada20700e66afe3bbed622 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:00:11 2009 -0300 Changed tests/dbus/cm-basics.cpp to inherit Test. tests/dbus/cm-basics.cpp | 95 +++++++++++++++--------------------------------- 1 file changed, 29 insertions(+), 66 deletions(-) commit 85b483a3c8875683340d4639c94f9ad4e1ca5edd Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 12:00:00 2009 -0300 Changed tests/dbus/account-basics.cpp to inherit Test. tests/dbus/account-basics.cpp | 167 +++++++++++++----------------------------- 1 file changed, 52 insertions(+), 115 deletions(-) commit a776f23cf173a9d34588ec02b2189d6c864bfd2b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 11:59:41 2009 -0300 Changed tests/dbus/do-nothing.cpp to inherit Test. tests/dbus/do-nothing.cpp | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) commit 3b63cf57dd912fbe030da3cec25f33b9d8167876 Author: Stefan Eilers Date: Tue Jan 27 15:34:09 2009 +0100 Fixed unittests - Added workaround for buggy mission control tests/prototype/prototype.cpp | 69 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 13 deletions(-) commit 644d146789ae36174e7a186b5e107c6e5f758235 Author: Stefan Eilers Date: Tue Jan 27 15:22:08 2009 +0100 Avoid unnecessary signals if old state is equal to new state TelepathyQt4/Prototype/Connection.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit c0d27884aa3f42f6ece120e2aff99eb5259ae869 Author: Stefan Eilers Date: Tue Jan 27 15:19:42 2009 +0100 Fixed incorrect signals if new contact was added by remote user.. TelepathyQt4/Prototype/ContactManager.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) commit 23475f584eefa3ecd9432020e0e8cadd70615bb1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 10:43:30 2009 -0300 Connection: Update debug messages using nospace. TelepathyQt4/Client/connection.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit b7aa9d16bf9a9b4f783a3810431d5848f13e383e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 10:30:21 2009 -0300 Connection: Proper initialize Private::ready. TelepathyQt4/Client/connection.cpp | 1 + 1 file changed, 1 insertion(+) commit a56a99adb43613a3c34adc8c1efde86e58a2d68b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 09:54:19 2009 -0300 Connection: Added more PendingChannel debug messages. TelepathyQt4/Client/pending-channel.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit b0d67f5101669cd98c211622cbd8a0d47746fb63 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 09:28:04 2009 -0300 Connection: Update PendingChannel::yours doc. TelepathyQt4/Client/pending-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1be94d13d80f9040777e72f343c932c4d7ee4a52 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 27 09:24:29 2009 -0300 Connection: Added status to presence Offline and Available. TelepathyQt4/Client/connection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 10f5d45a3391961eca438d83f1821dbd5419a790 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 18:08:54 2009 -0300 Connection: Added features param to requestConnection. Added features param to requestConnect, the returned PendingOperation will only finish when the connection is ready with features. TelepathyQt4/Client/connection-internal.h | 52 +++++++++++++++++++++++++++++++ TelepathyQt4/Client/connection.cpp | 42 +++++++++++++++++++++++-- TelepathyQt4/Client/connection.h | 4 ++- TelepathyQt4/Makefile.am | 2 ++ 4 files changed, 96 insertions(+), 4 deletions(-) commit fc5dd9f80bed09a36f7241b3cea0b399e8c2d553 Author: Stefan Eilers Date: Tue Jan 27 11:53:09 2009 +0100 Remove unnecessary and unused signals TelepathyQt4/Prototype/ContactManager.cpp | 3 +-- TelepathyQt4/Prototype/ContactManager.h | 10 ---------- 2 files changed, 1 insertion(+), 12 deletions(-) commit b1b3d2dc6ce7d68331eac5faa7322305beda58c7 Author: Stefan Eilers Date: Tue Jan 27 10:51:49 2009 +0100 Fixed crash after external removing of contact. - Move signalContactRemoved() before removing it from local lists. - Do not delete object in ContactManager::removeContact(). This will happen asynchronously by receiving a signal from D-BUS TelepathyQt4/Prototype/ContactManager.cpp | 34 +++++++++++++++++++------------ TelepathyQt4/Prototype/ContactManager.h | 2 +- 2 files changed, 22 insertions(+), 14 deletions(-) commit 1a05cfa040243ee1394192e2e3f49639758f3165 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 17:29:54 2009 -0300 Connection: Fixed becomeReady. Fixed becomeReady to set the presence to available if we are connected and we asked for FeatureSelfPresence. TelepathyQt4/Client/connection.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) commit 877910e39e69bc30754f63e1ae6f4b8dcafc1070 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 17:29:38 2009 -0300 Connection: Updated docs. TelepathyQt4/Client/connection.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) commit 1bf847f11bd7e474c7ec37ba31d78a229c8e7f07 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 17:19:21 2009 -0300 Connection: Added getter for PendingChannel::yours. TelepathyQt4/Client/pending-channel.cpp | 21 +++++++++++++++++++++ TelepathyQt4/Client/pending-channel.h | 2 ++ 2 files changed, 23 insertions(+) commit 0817e3da1dba90321e9f3a82390c3ce7c52687e0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 17:07:12 2009 -0300 Connection: Removed requestChannel. Removing requestChannel we also removed test/pinnochio/chan-basics, tests for channel will be added as soon as we have a test CM that implements ensure/createChannel. TelepathyQt4/Client/connection.cpp | 45 ---- TelepathyQt4/Client/connection.h | 3 - TelepathyQt4/Client/pending-channel.cpp | 43 ---- TelepathyQt4/Client/pending-channel.h | 3 - tests/pinocchio/Makefile.am | 4 - tests/pinocchio/chan-basics.cpp | 403 -------------------------------- 6 files changed, 501 deletions(-) commit e8dee9bd553386a663220f310d3991efba308586 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 18:26:01 2009 -0300 Connection: Added tests for presence. TelepathyQt4/Client/connection.cpp | 4 +- tests/dbus/Makefile.am | 5 + tests/dbus/conn-basics.cpp | 191 +++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+), 2 deletions(-) commit a2e3f40691ad32cf5b335c2e83cb5052f46c8362 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 18:25:21 2009 -0300 Added contacts conn tests from tp-glib. tests/lib/Makefile.am | 3 + tests/lib/contacts-conn.c | 630 ++++++++++++++++++++++++++++++++++++++++++++++ tests/lib/contacts-conn.h | 122 +++++++++ tests/lib/debug.h | 3 + 4 files changed, 758 insertions(+) commit 4062cb797461b465deafe323ce9fa1a610e04119 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 14:30:42 2009 -0300 Connection: Updated docs for requestConnect/requestDisconnect. TelepathyQt4/Client/connection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5cac8aff0083dd1602a84a52852266f6b3a0fb8f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 14:26:41 2009 -0300 Connection: Added enum Status and changed initial status to StatusUnknown. TelepathyQt4/Client/connection.cpp | 6 +++--- TelepathyQt4/Client/connection.h | 8 ++++++++ tests/dbus/handles.cpp | 6 +++--- tests/pinocchio/chan-basics.cpp | 6 +++--- tests/pinocchio/conn-basics.cpp | 18 +++++++++--------- tests/pinocchio/handles.cpp | 8 ++++---- 6 files changed, 30 insertions(+), 22 deletions(-) commit 94e50d1abcd1aa0bea05bbcefdad95a718b57557 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 14:06:23 2009 -0300 Connection: Clear up instrospection queue if the connection dies. TelepathyQt4/Client/connection.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 4ebacead2ef2b01ec02fef0d39320a9c084b90d9 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 14:01:13 2009 -0300 Connection: Added getter and signal (changed) for self handle. TelepathyQt4/Client/connection.cpp | 14 ++++++++++++++ TelepathyQt4/Client/connection.h | 3 +++ 2 files changed, 17 insertions(+) commit dabad14e25d912495f2f04d544081568faed2ebf Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 13:53:26 2009 -0300 Connection: Implement getSelfPresence. TelepathyQt4/Client/connection.cpp | 172 ++++++++++++++++++++++++++++++++++++- TelepathyQt4/Client/connection.h | 8 ++ 2 files changed, 179 insertions(+), 1 deletion(-) commit b66d87a72cdd0b2e48a67b0d30b0024f20d8007e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 12:22:20 2009 -0300 Connection: All presence related methods will only work if/when becomeReady(FeatureSelfPresence) finishes. Do not enqueue call to introspectSimplePresence if not explicitly requested. TelepathyQt4/Client/connection.cpp | 47 +++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 19 deletions(-) commit c542d2b0a733bf9e71f6cdbc4b2803428ff57b62 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 11:57:22 2009 -0300 Connection: Updated Readiness doc. TelepathyQt4/Client/connection.cpp | 1 - 1 file changed, 1 deletion(-) commit 89fe5bdabc2bf17baa75ac3466da70bea7da7c43 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 11:36:09 2009 -0300 Connection: Renamed simplePresenceStatuses and setSimplePresenceStatus. Renamed simplePresenceStatuses to allowedPresenceStatuses and setSimplePresenceStatus to setSelfPresence. TelepathyQt4/Client/connection.cpp | 4 ++-- TelepathyQt4/Client/connection.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit a962008cee0cb065ee727641ceb25b55ea4f51cc Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 11:31:40 2009 -0300 Connection: Changed FeatureSimplePresence to FeatureSelfPresence. TelepathyQt4/Client/connection.cpp | 26 +++++++++++++------------- TelepathyQt4/Client/connection.h | 2 +- tests/pinocchio/conn-basics.cpp | 6 +++--- 3 files changed, 17 insertions(+), 17 deletions(-) commit 2c393da0a7130df2459f68789b5457bb03eff22b Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 11:19:47 2009 -0300 Connection: Remove presence (legacy) interface high-level API support. Connection: Remove presence (legacy) interface high-level API support (to use it use Connection::presenceInterface() directly). TelepathyQt4/Client/connection.cpp | 90 +------------------------------------- TelepathyQt4/Client/connection.h | 6 +-- tests/pinocchio/conn-basics.cpp | 9 +--- 3 files changed, 3 insertions(+), 102 deletions(-) commit 3af9e7f9fd63a9614472c2416170f485fc6335bf Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 26 10:57:42 2009 -0300 Connection: Remove aliasing interface high-level API support for now. Connection: Remove aliasing interface high-level API support for now (to use it use Connection::aliasingInterface() directly). TelepathyQt4/Client/connection.cpp | 99 ++------------------------------------ TelepathyQt4/Client/connection.h | 8 +-- tests/pinocchio/conn-basics.cpp | 9 +--- 3 files changed, 6 insertions(+), 110 deletions(-) commit c6d63536d9375c61777dd0850baeb71d51804426 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 19:51:57 2009 -0300 Connection: Fixed PendingChannel coding style. TelepathyQt4/Client/pending-channel.cpp | 54 ++++++++++++++++++--------------- TelepathyQt4/Client/pending-channel.h | 21 +++++++------ 2 files changed, 41 insertions(+), 34 deletions(-) commit ac4232fc53efd0b140e1a57f7a5106884ba1e1e5 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 19:44:56 2009 -0300 Connection: Moved docs from PendingChannel header to source file. TelepathyQt4/Client/pending-channel.cpp | 76 +++++++++++++++++++++++++++++++++ TelepathyQt4/Client/pending-channel.h | 71 ++---------------------------- 2 files changed, 79 insertions(+), 68 deletions(-) commit 53d50541bbe3a79c1c5fd682285026ee9ff52639 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 19:58:10 2009 -0300 Connection: Updated documentation. TelepathyQt4/Client/connection.cpp | 45 ++++++++++++-------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) commit 4f3f0ce562a63f8cb0fd3a983e8328432b5c85f0 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 19:22:22 2009 -0300 Connection: Add setSimplePresenceStatus. TelepathyQt4/Client/connection.cpp | 19 +++++++++++++++++++ TelepathyQt4/Client/connection.h | 1 + 2 files changed, 20 insertions(+) commit a298b783ea4c1727533c10062c6cb4cb4fb7f23b Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 19:08:30 2009 -0300 Connection: Added test for ensureChannel. P.s.: pinocchio does not support RequestsInterface for now. tests/pinocchio/chan-basics.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 573affd9cc2a132980e5de77b063b53505c881b1 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 19:01:42 2009 -0300 Connection: Added createChannel/ensureChannel. TelepathyQt4/Client/connection.cpp | 115 ++++++++++++++++++++++++++++++-- TelepathyQt4/Client/connection.h | 11 +++ TelepathyQt4/Client/pending-channel.cpp | 92 ++++++++++++++++++++++++- TelepathyQt4/Client/pending-channel.h | 6 +- 4 files changed, 217 insertions(+), 7 deletions(-) commit 249a3ad8565f71b060827700b096b4cecc133966 Author: Stefan Eilers Date: Mon Jan 26 14:47:28 2009 +0100 Fixed signalling issue: The removed account was deleted from local list before the signal was sent. TelepathyQt4/Prototype/AccountManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a1c10c899817ad504aac9753784c68531e6e25ba Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 17:48:39 2009 -0300 Connection: Make Connection::baseInterface() protected. Connection: Make Connection::baseInterface() protected and changed tests to use high-level interface. TelepathyQt4/Client/connection.h | 2 +- tests/dbus/handles.cpp | 11 +++--- tests/pinocchio/chan-basics.cpp | 82 +++++++++++++++++++++++++++++++++------- 3 files changed, 74 insertions(+), 21 deletions(-) commit 1d2ebf4faa04df6f625f8211a54d855c3bf8e7d6 Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 17:22:31 2009 -0300 Connection: Changed tests to use Connection::requestConnect instead of baseInterface::Connect. tests/dbus/handles.cpp | 3 ++- tests/pinocchio/chan-basics.cpp | 11 +++++------ tests/pinocchio/conn-basics.cpp | 29 +++++++++++++++-------------- tests/pinocchio/handles.cpp | 10 ++++------ 4 files changed, 26 insertions(+), 27 deletions(-) commit 6c58da47c50fafca8b3ac299e89da20889b63cdb Author: Andre Moreira Magalhaes (andrunko) Date: Sun Jan 25 14:51:40 2009 -0300 Connection: Added requestConnect. TelepathyQt4/Client/connection.cpp | 24 ++++++++++++++---------- TelepathyQt4/Client/connection.h | 2 ++ 2 files changed, 16 insertions(+), 10 deletions(-) commit 815fa711b586ab1b6a5672a022fc4b68ea69fa75 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Jan 24 23:21:12 2009 -0300 Connection: Moved readiness internally and expose statusChanged. TelepathyQt4/Client/channel.cpp | 15 ++-- TelepathyQt4/Client/channel.h | 2 +- TelepathyQt4/Client/connection.cpp | 148 +++++++++++++++++++++---------------- TelepathyQt4/Client/connection.h | 14 +--- tests/dbus/handles.cpp | 78 ++++++------------- tests/pinocchio/chan-basics.cpp | 36 ++++----- tests/pinocchio/conn-basics.cpp | 122 ++++++------------------------ tests/pinocchio/handles.cpp | 36 ++++----- 8 files changed, 168 insertions(+), 283 deletions(-) commit a452686ed56a831ade2b3cb13608eefb64f7c09c Author: Andre Moreira Magalhaes (andrunko) Date: Sat Jan 24 23:21:12 2009 -0300 Connection: Added more tests to isReady/becomeReady functionality. tests/pinocchio/conn-basics.cpp | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) commit 47e0912af3a5df9abb2888fa900b381a320fe048 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Jan 24 23:20:08 2009 -0300 Connection: Added support for features (Aliasing, Presence and SimplePresence). TelepathyQt4/Client/connection.cpp | 206 ++++++++++++++++++++++++++++--------- TelepathyQt4/Client/connection.h | 3 + 2 files changed, 160 insertions(+), 49 deletions(-) commit 6630ad3cde1be480cc8f2d73370cc9fbe8d1ae03 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Jan 24 20:08:10 2009 -0300 Connection: Added test to isReady/becomeReady basic functionality. tests/pinocchio/conn-basics.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 6f5b0a525e3f82629ffd4f685e9a33ea059c2366 Author: Andre Moreira Magalhaes (andrunko) Date: Sat Jan 24 20:03:31 2009 -0300 Connection: Added basic isReady/becomReady support. Added basic isReady/becomReady support, for now ready means connection readiness is ReadinessFull (features will be added later). TelepathyQt4/Client/connection.cpp | 61 ++++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/connection.h | 11 +++++++ 2 files changed, 72 insertions(+) commit 96a6c87e9566eb89d9dd533e08ec74e0641e30cb Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 23 16:49:10 2009 -0300 Connection: Removed InterfaceSupportedChecking in favor of DBusProxy. TelepathyQt4/Client/connection.h | 6 ------ 1 file changed, 6 deletions(-) commit f1a5797dd17eae0df565d0009dd44d5f5a899d24 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 23 16:37:50 2009 -0300 Connection: Delay introspection startup. TelepathyQt4/Client/connection.cpp | 69 +++++++++++++++++++------------------- TelepathyQt4/Client/connection.h | 2 ++ 2 files changed, 36 insertions(+), 35 deletions(-) commit 21b7a6fc394468ac9ce43b0853f6564e77e52d6f Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 23 16:27:45 2009 -0300 Updated HACKING file. HACKING | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit f72609d307d7afdb70936eb900171c2794c0ce3e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 23 16:20:21 2009 -0300 Connection: Delete watchers. TelepathyQt4/Client/connection.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 40e0f574094384d1b246bf6e125eef1e2c7626d1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 22 14:55:27 2009 -0300 Connection: Changed for/Q_FOREACH to foreach wherever possible. TelepathyQt4/Client/connection.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit 6faf2b6f70d41984ac6337a07b528bf76c56a633 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 22 14:54:52 2009 -0300 Connection: Un-inline Private methods. TelepathyQt4/Client/connection.cpp | 407 +++++++++++++++++++------------------ 1 file changed, 211 insertions(+), 196 deletions(-) commit 729317ff0a587db1d69c150556242dee2324c064 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 22 14:41:55 2009 -0300 Connection: Moved Private::Connection &parent to *parent. TelepathyQt4/Client/connection.cpp | 66 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) commit 886f03cfba9c35af8a7e820fb5dda6c0dc5811b3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 15 11:44:56 2009 -0300 Connection: Coding style fixes. TelepathyQt4/Client/connection.cpp | 287 ++++++++++++++++++++++--------------- TelepathyQt4/Client/connection.h | 82 ++++++----- 2 files changed, 217 insertions(+), 152 deletions(-) commit e062425d42f22510ff5449bd1f247d92a5fb5e1e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 22 14:16:24 2009 -0300 Connection: Renamed dbus connection from connection to bus. Connection: Renamed dbus connection from connection to bus, just for the sake of standardization. TelepathyQt4/Client/connection.cpp | 6 +++--- TelepathyQt4/Client/connection.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) commit f7822f511d1eea791a5f7eeae9f3866c3934c61e Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 14 16:40:23 2009 -0300 Connection: Moved docs to source file. TelepathyQt4/Client/connection.cpp | 356 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/connection.h | 352 +----------------------------------- 2 files changed, 362 insertions(+), 346 deletions(-) commit a2c508fceebae6a513991620ddde96e462a0efd0 Author: Simon McVittie Date: Fri Jan 23 15:25:27 2009 +0000 Q_DISABLE_COPY in all public classes, except those that have a copy ctor TelepathyQt4/Client/abstract-interface.h | 1 + TelepathyQt4/Client/account-manager.h | 1 + TelepathyQt4/Client/channel.h | 1 + TelepathyQt4/Client/connection.h | 1 + TelepathyQt4/Client/dbus-proxy.h | 1 + TelepathyQt4/Client/optional-interface-factory.h | 2 ++ TelepathyQt4/Client/pending-channel.h | 1 + TelepathyQt4/Client/pending-handles.h | 1 + TelepathyQt4/Client/pending-operation.h | 1 + TelepathyQt4/Client/simple-pending-operations.h | 3 +++ 10 files changed, 13 insertions(+) commit 1f1153dc7087845e1909bae381af106d39c13912 Author: Simon McVittie Date: Fri Jan 23 16:56:26 2009 +0000 Remove spurious mLoop member from PinocchioTest Having moved mLoop into the parent class, the fact that there's another one here (uninitialized, and used for about half the functions) breaks the tests. tests/pinocchio/lib.h | 1 - 1 file changed, 1 deletion(-) commit d38061ccc3a28bfeec2d6a90d170129f8bf9e4fa Author: Simon McVittie Date: Fri Jan 23 13:51:50 2009 +0000 Add a test for method calls failing tests/dbus/stateful-proxy.cpp | 127 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 104 insertions(+), 23 deletions(-) commit a2c88a9065c87c27ec1bea2ac92ebc01a4bb3542 Author: Simon McVittie Date: Fri Jan 23 12:34:13 2009 +0000 Factor out parts of PinocchioTest into a generic Test helper tests/dbus/Makefile.am | 1 + tests/lib/Makefile.am | 29 ++++++++++++++++--- tests/lib/test.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++ tests/lib/test.h | 29 +++++++++++++++++++ tests/pinocchio/Makefile.am | 1 + tests/pinocchio/lib.cpp | 51 ++++++---------------------------- tests/pinocchio/lib.h | 15 ++++------ 7 files changed, 137 insertions(+), 57 deletions(-) commit ceb0c7f68281eb2e61af3eb3ccc8edbc4a9c8811 Author: Simon McVittie Date: Wed Jan 21 18:55:20 2009 +0000 qt4-client-gen.py: make all method calls fail after we've been invalidated tools/qt4-client-gen.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 264b77c0f063bb9247109da4bb035dc173f438f1 Author: Simon McVittie Date: Fri Jan 23 11:07:56 2009 +0000 qt4-client-gen: disconnect all D-Bus signals on invalidation tools/qt4-client-gen.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit 56eba22c37c3f4bb31dd551421f3aeebf27b59fb Author: Simon McVittie Date: Fri Jan 23 11:03:21 2009 +0000 OptionalInterfaceFactory: take the proxy instance as a ctor parameter Also, in qt4-client-gen, alter the ctor from DBusProxy * to take a mutable DBusProxy *. This lets us use it as the QObject parent, meaning that OIF's cleanup code is no longer needed. TelepathyQt4/Client/account-manager.cpp | 2 ++ TelepathyQt4/Client/account-manager.h | 2 +- TelepathyQt4/Client/account.cpp | 1 + TelepathyQt4/Client/account.h | 4 +--- TelepathyQt4/Client/channel.cpp | 5 ++-- TelepathyQt4/Client/channel.h | 4 ++-- TelepathyQt4/Client/connection-manager.cpp | 2 ++ TelepathyQt4/Client/connection-manager.h | 2 +- TelepathyQt4/Client/connection.cpp | 2 ++ TelepathyQt4/Client/connection.h | 2 +- TelepathyQt4/Client/optional-interface-factory.cpp | 27 ++++++++++++---------- TelepathyQt4/Client/optional-interface-factory.h | 20 ++++++++++++---- tools/qt4-client-gen.py | 10 ++++---- 13 files changed, 51 insertions(+), 32 deletions(-) commit 576946c7dbd04aa623d93b33cf112cd9ffca5553 Author: Simon McVittie Date: Fri Jan 23 10:53:02 2009 +0000 AbstractInterface: add a constructor from DBusProxy Also make the invalidate slot protected. TelepathyQt4/Client/abstract-interface.cpp | 11 +++++++++++ TelepathyQt4/Client/abstract-interface.h | 5 +++-- 2 files changed, 14 insertions(+), 2 deletions(-) commit 47c97cad5e1e8e219602cc3bddf81a0e63ce3fad Author: Simon McVittie Date: Fri Jan 23 09:49:17 2009 +0000 OptionalInterfaceFactory: Be a template parameterized by DBusProxy subclasses This requires splitting out most of OIF into a non-template base class, OptionalInterfaceCache, and a change to the calling convention of interface(). TelepathyQt4/Client/account-manager.h | 6 +- TelepathyQt4/Client/account.h | 5 +- TelepathyQt4/Client/channel.h | 7 ++- TelepathyQt4/Client/connection-manager.h | 5 +- TelepathyQt4/Client/connection.h | 8 ++- TelepathyQt4/Client/optional-interface-factory.cpp | 14 ++--- TelepathyQt4/Client/optional-interface-factory.h | 68 ++++++++++++++-------- 7 files changed, 68 insertions(+), 45 deletions(-) commit 576b29ce1f1095dfe2f8313beaba714c78d6a110 Author: Simon McVittie Date: Thu Jan 22 16:00:18 2009 +0000 qt4-client-gen.py: generate a constructor from a DBusProxy subclass tools/qt4-client-gen.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) commit cb549aa7bdd5261a18f46ba64cda0c5cd4ad9abf Author: Simon McVittie Date: Thu Jan 22 15:51:33 2009 +0000 StatefulDBusProxy: move one more method to its rightful place TelepathyQt4/Client/dbus-proxy.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 220d86a4a22ca5284cc7e6d6709db6f188dd4232 Author: Simon McVittie Date: Thu Jan 22 14:52:44 2009 +0000 DBusProxy: Promote InterfaceSupportedChecking to superclass optionalInterface() can't move to the superclass because it uses the "main interface" functionality, which isn't in the superclass (for good reason - DBusProxy would have to be a template if we did that). TelepathyQt4/Client/account.cpp | 15 --------------- TelepathyQt4/Client/account.h | 8 -------- TelepathyQt4/Client/channel.h | 20 -------------------- TelepathyQt4/Client/connection.h | 19 ------------------- TelepathyQt4/Client/dbus-proxy.cpp | 15 +++++++++++++++ TelepathyQt4/Client/dbus-proxy.h | 6 ++++++ 6 files changed, 21 insertions(+), 62 deletions(-) commit d4d09fdc3121f9eeb9cc51aa8e37a877c500eacd Author: Simon McVittie Date: Thu Jan 22 13:41:44 2009 +0000 AbstractInterface: allow invalidation TelepathyQt4/Client/abstract-interface.cpp | 41 +++++++++++++++++++++++++++++- TelepathyQt4/Client/abstract-interface.h | 10 ++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) commit 7192d0527a7bbf36d3700575d31376fae3002ac7 Author: Simon McVittie Date: Thu Jan 22 11:45:08 2009 +0000 OptionalInterfaceFactory: expect and require AbstractInterface subclasses Also fix coding style TelepathyQt4/Client/optional-interface-factory.cpp | 12 ++++++------ TelepathyQt4/Client/optional-interface-factory.h | 19 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) commit b6d6d3fbc04ac751ed81a64778f7e4106de71918 Author: Simon McVittie Date: Thu Jan 22 11:36:11 2009 +0000 qt4-client-gen.py: generate Telepathy::Client::AbstractInterface subclasses tools/qt4-client-gen.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit dac989fe607d9cff84573ad50f00aa9d66d1c299 Author: Simon McVittie Date: Thu Jan 22 11:33:31 2009 +0000 AbstractInterface: Add a base class for 1-1 interfaces that use a DBusProxy This subclass of QDBusAbstractInterface will let us add support for being invalidated. TelepathyQt4/Client/AbstractInterface | 13 +++++++ TelepathyQt4/Client/abstract-interface.cpp | 44 ++++++++++++++++++++++++ TelepathyQt4/Client/abstract-interface.h | 55 ++++++++++++++++++++++++++++++ TelepathyQt4/Makefile.am | 4 +++ 4 files changed, 116 insertions(+) commit ea60266e2e700cb490d4b5de8d03c450e9592692 Author: Simon McVittie Date: Wed Jan 21 18:56:38 2009 +0000 Account: improve code reuse TelepathyQt4/Client/account.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) commit c092fbe731af965e40d34babf1c2af4ec41766da Author: Simon McVittie Date: Wed Jan 21 17:32:46 2009 +0000 While I'm looking at the codegen anyway, deprecate Qt-style property access Having Qt properties on the QDBusAbstractInterface classes is appealing, but hides a pseudo-blocking D-Bus round-trip to the connection manager (of exactly the sort that we're trying to avoid). tools/qt4-client-gen.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) commit f853ac4daa5043c85d96e3eb664743533b782122 Author: Simon McVittie Date: Wed Jan 21 16:11:23 2009 +0000 Replace Account::removed() signal with DBusProxy::invalidated() TelepathyQt4/Client/account.cpp | 8 +++++++- TelepathyQt4/Client/account.h | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) commit 2d76d689034ab593e3164e82a1e77f6c1db0fc6c Author: Simon McVittie Date: Wed Jan 21 16:11:03 2009 +0000 Rename Account::isValid to isValidAccount to avoid clash with DBusProxy TelepathyQt4/Client/account.cpp | 2 +- TelepathyQt4/Client/account.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 31ab48b7d10305ad359dae53ed834fe882a47ff6 Author: Simon McVittie Date: Wed Jan 21 16:04:25 2009 +0000 dbus-proxy.cpp: re-order so all DBusProxy code is together No code changes. TelepathyQt4/Client/dbus-proxy.cpp | 158 ++++++++++++++++++------------------- 1 file changed, 79 insertions(+), 79 deletions(-) commit ba692614736cf77b7150e302b1f272157c77ec69 Author: Simon McVittie Date: Wed Jan 21 16:03:21 2009 +0000 DBusProxy: promote invalidated, invalidationReason etc. to superclass Even StatelessDBusProxy subclasses can have a use for invalidation - for instance, Account proxies should become invalid when the account is deleted, even though the Account API is otherwise stateless. TelepathyQt4/Client/dbus-proxy.cpp | 33 +++++++++------------------------ TelepathyQt4/Client/dbus-proxy.h | 29 ++++++++++++++--------------- tests/dbus/stateful-proxy.cpp | 20 ++++++++++---------- 3 files changed, 33 insertions(+), 49 deletions(-) commit ba147032355ec7d8f465e466c4e6149dd16738f1 Merge: a92ff3b 620af04 Author: Simon McVittie Date: Wed Jan 21 12:41:56 2009 +0000 Merge commit 'oggis/handles' Conflicts: TelepathyQt4/Makefile.am tests/dbus/Makefile.am Signed-off-by: Simon McVittie commit 620af0423595a31045978d0d0496072d6a2e50b7 Author: Olli Salli Date: Fri Jan 16 16:15:12 2009 +0200 Add basic handle test using tp-glib service side, converted from tp-glib tests/dbus/Makefile.am | 9 +- tests/dbus/handles.cpp | 282 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 289 insertions(+), 2 deletions(-) commit a92ff3b2be62f95a156b5223a8c048d86a3f1090 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 15 17:45:08 2009 -0300 Account: Fixed coding style. TelepathyQt4/Client/account.cpp | 3 ++- TelepathyQt4/Client/account.h | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) commit edc6284e67e2673359c1ec53b4fda3a5bbfcf84b Author: Simon McVittie Date: Mon Jan 19 15:03:34 2009 +0000 Simplify checks for Python, and save the full path, not just 'python' This fixes service-activation of account-manager.py. The checks for Python were originally copied from telepathy-gabble, and no longer need to be as complex as they originally did - we have a hard dependency on Python 2.5, which Gabble did not. configure.ac | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) commit 938231d66621c4917b536e5f72dac9a37334c8f8 Merge: f0c4e59 f905510 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 19 11:34:04 2009 -0300 Merge branch 'connection' Conflicts: TelepathyQt4/Makefile.am commit f0c4e59aadb9b0cf77823829aa2b47e929823bde Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 16 16:00:48 2009 -0300 Changed KeyFile key validation to also accept ".", "_" and "@" as valid characters. TelepathyQt4/key-file.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit f9055104d0676d35dd6db0c320a4c6a5d6cda995 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 16 16:53:29 2009 -0300 Added test to ConnectionManager::requestConnection. tests/pinocchio/cm-basics.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit c0ea092d8f938141486a804b84234b992194bd2a Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 16 16:43:43 2009 -0300 Added ConnectionManager::requestConnection support. TelepathyQt4/Client/PendingConnection | 13 +++ TelepathyQt4/Client/connection-manager.cpp | 19 ++++ TelepathyQt4/Client/connection-manager.h | 5 + TelepathyQt4/Client/pending-connection.cpp | 150 +++++++++++++++++++++++++++++ TelepathyQt4/Client/pending-connection.h | 71 ++++++++++++++ TelepathyQt4/Makefile.am | 4 + 6 files changed, 262 insertions(+) commit 7a39d95251acb3cbf87442d21891c33b280874f4 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 16 16:22:44 2009 -0300 Removed unused declaration. TelepathyQt4/Client/account-manager.h | 1 - 1 file changed, 1 deletion(-) commit a14c61fbb8ea9cc83ca28d0e29fc6527c2cfab05 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 16 15:51:54 2009 -0300 Make Account::continueIntrospection scalable. TelepathyQt4/Client/account.cpp | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) commit 8d2e1af5885e61953e97757c800c71b5e29b7d93 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 16 15:51:32 2009 -0300 Fixed removal of features from Account::Private::pendingFeatures. TelepathyQt4/Client/account.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7733b913aa4d089d720a73f6e39fa90f8cfde94b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 18:27:04 2009 -0300 Update Account::isValid/isEnabled docs. TelepathyQt4/Client/account.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit ae14994f3c5671c5b5be81a3896135ca01636b72 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 18:06:50 2009 -0300 Removed account-manager-internal.h. TelepathyQt4/Client/account-manager-internal.h | 71 -------------------------- TelepathyQt4/Client/account-manager.cpp | 29 ++++++++++- TelepathyQt4/Makefile.am | 1 - 3 files changed, 28 insertions(+), 73 deletions(-) commit cde6066d9942ce8a454641d25a97336b74ce6071 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 18:04:59 2009 -0300 Removed account-internal.h. TelepathyQt4/Client/account-internal.h | 96 ---------------------------------- TelepathyQt4/Client/account.cpp | 48 ++++++++++++++++- TelepathyQt4/Makefile.am | 1 - 3 files changed, 47 insertions(+), 98 deletions(-) commit f1e33977dfc5fd1e09563cac362dc0cb04fa4cf7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 18:02:43 2009 -0300 Moved all signals/slots from AccountManager::Private to AccountManager. TelepathyQt4/Client/account-manager-internal.h | 22 +-- TelepathyQt4/Client/account-manager.cpp | 252 ++++++++++++------------- TelepathyQt4/Client/account-manager.h | 12 +- TelepathyQt4/Makefile.am | 1 - 4 files changed, 133 insertions(+), 154 deletions(-) commit 565d8d1a845f4a820ba7703e0d8aa906ff08ca60 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 17:47:18 2009 -0300 Moved all signals/slots from Account::Private to Account. TelepathyQt4/Client/account-internal.h | 45 +- TelepathyQt4/Client/account.cpp | 766 +++++++++++++++------------------ TelepathyQt4/Client/account.h | 20 +- TelepathyQt4/Makefile.am | 1 - 4 files changed, 379 insertions(+), 453 deletions(-) commit 2c0f41f458edb2591b6d8c949f6ec75efd5ae9af Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 16:57:47 2009 -0300 Added missing signals to Account class. TelepathyQt4/Client/account-internal.h | 6 +++++- TelepathyQt4/Client/account.cpp | 20 ++++++++++++++++++-- TelepathyQt4/Client/account.h | 6 +++++- 3 files changed, 28 insertions(+), 4 deletions(-) commit ba6b5d3703acfa5225d84665115f73fa6bbdc36d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 16:49:53 2009 -0300 Changed Account classes to use QString instead of QDBusObjectPath. Changed Account classes to use QString instead of QDBusObjectPath. All other classes were already doing it, so change. TelepathyQt4/Client/account-manager-internal.h | 12 ++-- TelepathyQt4/Client/account-manager.cpp | 92 +++++++++++++++----------- TelepathyQt4/Client/account-manager.h | 17 +++-- TelepathyQt4/Client/account.cpp | 4 +- TelepathyQt4/Client/account.h | 3 +- TelepathyQt4/Client/pending-account.cpp | 3 +- tests/dbus/account-basics.cpp | 22 ++---- 7 files changed, 79 insertions(+), 74 deletions(-) commit 00706e3b8c9328a4472c6184ba3969583022723d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 16:49:38 2009 -0300 Implemented Account::getConnection. TelepathyQt4/Client/account.cpp | 25 +++++++++++++++++++++---- TelepathyQt4/Client/account.h | 4 ++-- 2 files changed, 23 insertions(+), 6 deletions(-) commit 869d2ce54757d43c7e20bab2ccb3fce29d9669a7 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 14:38:51 2009 -0300 Added account protocol info test. tests/dbus/account-basics.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) commit bcb15a0a25d8146badff62518fcb96293271b170 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 14:06:38 2009 -0300 Added account avatar test. tests/dbus/account-basics.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) commit 073c9c0d25cc13f28dc4610c884408f021dc8812 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 14:05:48 2009 -0300 Added Avatar interface to test account manager. tests/lib/account-manager.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) commit 4db083907c977cfb4d1fb7b980fa745a7af460b6 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 14:05:11 2009 -0300 Use Telepathy::Avatar instead of avatarData/avatarMimeType. TelepathyQt4/Client/account-internal.h | 5 ++- TelepathyQt4/Client/account.cpp | 61 +++++++++------------------------- TelepathyQt4/Client/account.h | 7 ++-- 3 files changed, 21 insertions(+), 52 deletions(-) commit 3d903da857d4d02a21979742d300d2726e96e575 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 11:30:46 2009 -0300 Emit Account::avatarChanged signal. TelepathyQt4/Client/account-internal.h | 2 ++ TelepathyQt4/Client/account.cpp | 62 ++++++++++++++++++++++++---------- 2 files changed, 47 insertions(+), 17 deletions(-) commit 80be600a52e191ae8c7d1a0ab2b780e3fbea1d62 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 11:12:32 2009 -0300 Check for avatar interface early. TelepathyQt4/Client/account-internal.h | 1 + TelepathyQt4/Client/account.cpp | 37 +++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) commit 8e97ecbd26a4ddfa96765e5dda5d175edb6be378 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 11:03:36 2009 -0300 Added TODO note. TelepathyQt4/Client/account-manager.cpp | 2 ++ 1 file changed, 2 insertions(+) commit b786a7bc7b6d7e132b0fc5c253f1beddb34daa9d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 10:46:37 2009 -0300 Added support for missing features on Account. Added support for missing features on Account, so we know what features are not supported and don't try to retrieve them again. Also do not fail if avatar is not found and you only care about avatar. TelepathyQt4/Client/account-internal.h | 1 + TelepathyQt4/Client/account.cpp | 88 ++++++++++++++++++++++------------ 2 files changed, 59 insertions(+), 30 deletions(-) commit 560c1cb88d5bd80493bb2c1f1d76c9796831bba0 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 12 18:00:06 2009 -0300 Added missing PendingAccount to Makefile.am. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/header-compile-test.cpp | 3 +++ 2 files changed, 4 insertions(+) commit 27b89af08247188f8df3e561e2b1e53baf75781d Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 12 21:34:35 2009 -0300 Added more Account documentation. TelepathyQt4/Client/account.cpp | 284 +++++++++++++++++++++++++++++++++++++--- TelepathyQt4/Client/account.h | 8 +- 2 files changed, 271 insertions(+), 21 deletions(-) commit 682cd5a2e2fb6e2c4b6c8e3e78acf5c9df13594a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 12 20:59:38 2009 -0300 Finished implementation of Account methods. Missing only Account::avatarChanged signal and Account::getConnection. TelepathyQt4/Client/account-internal.h | 29 ++- TelepathyQt4/Client/account.cpp | 327 ++++++++++++++++++++++++++------- TelepathyQt4/Client/account.h | 56 ++++-- 3 files changed, 333 insertions(+), 79 deletions(-) commit c3b7ca084e397759e25ec3d6d71a5004ec6ea0dd Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 12 20:58:56 2009 -0300 Enable generation of account avatar interface autogenerated code. TelepathyQt4/account.xml | 2 -- 1 file changed, 2 deletions(-) commit 3cd37379c702e2fe65b088e9e1d06785b0442a1e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 17:46:28 2009 -0300 Added tests for account creation. tests/dbus/account-basics.cpp | 89 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 13 deletions(-) commit eb30ab06a960769191fb7eaafaf355027f3feb29 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 17:45:44 2009 -0300 Added AccountManager::createAccount support. TelepathyQt4/Client/PendingAccount | 13 +++ TelepathyQt4/Client/account-manager.cpp | 8 +- TelepathyQt4/Client/account-manager.h | 1 + TelepathyQt4/Client/pending-account.cpp | 151 ++++++++++++++++++++++++++++++++ TelepathyQt4/Client/pending-account.h | 72 +++++++++++++++ TelepathyQt4/Makefile.am | 3 + 6 files changed, 245 insertions(+), 3 deletions(-) commit 90e9312d8b4fccef355d6f538849d0a2b053a353 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 17:43:20 2009 -0300 Fixed Account creation. TelepathyQt4/Client/account.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit 8eee84faa7f7e465d89482e69b96358df9bec462 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 13:44:14 2009 -0300 Initial integration between AccountManager and Account. TelepathyQt4/Client/account-manager.cpp | 82 +++++++++++++++++++++------------ TelepathyQt4/Client/account-manager.h | 11 +++-- 2 files changed, 60 insertions(+), 33 deletions(-) commit 8293b17a1a6efe7556a0e1e47b1e7fffbbebfec2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 19:49:37 2009 -0300 Added initial Account impl. TelepathyQt4/Client/account-internal.h | 101 +++++++ TelepathyQt4/Client/account.cpp | 501 ++++++++++++++++++++++++++++++++- TelepathyQt4/Client/account.h | 152 +++++++++- TelepathyQt4/Makefile.am | 3 + 4 files changed, 743 insertions(+), 14 deletions(-) commit 4a0c65cbeaa96a2e3d2567453d5eba685d5b745e Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 17:47:42 2009 -0300 Make AccountManager::Private a class to fit its definition. TelepathyQt4/Client/connection-manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f8d0d517fadf86375f65f52cf2a77d22922adc3a Author: Simon McVittie Date: Thu Jan 15 13:35:36 2009 +0000 DBusProxy: remove multiple blank lines TelepathyQt4/Client/dbus-proxy.cpp | 2 -- 1 file changed, 2 deletions(-) commit 362b4fe3d07488615c5dabe85d85f8c9e00243db Author: Simon McVittie Date: Thu Jan 15 13:35:18 2009 +0000 DBusProxy: tidy up docs TelepathyQt4/Client/dbus-proxy.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit b75839adc2b53cd765c9b5167d9c267ab4e1e077 Author: Simon McVittie Date: Thu Jan 15 13:34:22 2009 +0000 DBusProxy: use top-level names for Qt headers TelepathyQt4/Client/dbus-proxy.cpp | 4 ++-- tests/dbus/stateful-proxy.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit ec4ca8a5577ac2d5146819e1d4ada27b18eb8a93 Author: Simon McVittie Date: Thu Jan 15 13:26:56 2009 +0000 DBusProxy: move docs to .cpp TelepathyQt4/Client/dbus-proxy.cpp | 104 +++++++++++++++++++++++++++++++++++++ TelepathyQt4/Client/dbus-proxy.h | 102 ------------------------------------ 2 files changed, 104 insertions(+), 102 deletions(-) commit 3973651af34c0958d21f43ed73677811c316fd7a Author: Simon McVittie Date: Thu Jan 15 13:17:16 2009 +0000 DBusProxy and subclasses: don't store a pointer to parent This turns out to be unnecessary for these classes. Also re-indent initializers. TelepathyQt4/Client/dbus-proxy.cpp | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) commit 9753bc3174e74d05a0ad44ed17f053ffc43276d3 Author: Simon McVittie Date: Thu Jan 15 13:04:50 2009 +0000 DBusProxy: fix &/* placement TelepathyQt4/Client/dbus-proxy.cpp | 2 +- TelepathyQt4/Client/dbus-proxy.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 1385b043a1c07d6e2c4ab5ccc084ff29d3ef8ff6 Author: Simon McVittie Date: Thu Jan 15 12:48:41 2009 +0000 DBusProxy: copyright 2009 TelepathyQt4/Client/dbus-proxy.cpp | 4 ++-- TelepathyQt4/Client/dbus-proxy.h | 4 ++-- tests/dbus/stateful-proxy.cpp | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) commit c041bf7aaa1fa2b12372b4e7efd753d899abfe15 Merge: 584980e 0871801 Author: Olli Salli Date: Thu Jan 15 08:46:20 2009 +0200 Merge branch 'master' into handles Conflicts: tests/pinocchio/Makefile.am commit 2f8ae7c4d0e5432535e32c5b3873135a16a47f0c Author: Simon McVittie Date: Wed Jan 14 18:00:28 2009 +0000 Add a basic test for StatefulDBusProxy tests/dbus/Makefile.am | 9 +- tests/dbus/stateful-proxy.cpp | 216 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 223 insertions(+), 2 deletions(-) commit ec204ad08841a71a19c13fd2a96218f64d3c81a2 Author: Simon McVittie Date: Wed Jan 14 12:55:26 2009 +0000 DBusProxy: note what would be needed for feature parity with TpProxy TelepathyQt4/Client/dbus-proxy.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 26c5dd097dbdfbce3a03194b219ebc4477cc95e2 Author: Simon McVittie Date: Wed Jan 14 12:55:03 2009 +0000 Connection: invalidate with a vaguely appropriate error when disconnected In a near-future telepathy-spec we should define better errors, but these will do for now. TelepathyQt4/Client/connection.cpp | 44 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) commit 1a3ae2fc1b49651c35c3c372aa913780c8cc7750 Author: Simon McVittie Date: Wed Jan 14 12:49:57 2009 +0000 Channel: fix incorrect error reply for Close() TelepathyQt4/Client/channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7541d71f3f77de81e447422929683ffe0e76bff4 Author: Simon McVittie Date: Wed Jan 14 12:50:45 2009 +0000 Channel: invalidate when Closed is received We don't really have an appropriate error code yet, so I've used Cancelled. TelepathyQt4/Client/channel.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 96a93adb7675b5498f35a76c6a676aca1a56e353 Author: Simon McVittie Date: Wed Jan 14 18:00:14 2009 +0000 actually initialize (and also free) StatefulDBusProxy::mPriv TelepathyQt4/Client/dbus-proxy.cpp | 8 +++++++- TelepathyQt4/Client/dbus-proxy.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) commit 62f09c35c59fbb1225c035889a42723b2c8e0406 Author: Simon McVittie Date: Wed Jan 14 18:28:55 2009 +0000 Fix signature of invalidated Qt signal binding is sensitive to the difference between Telepathy::Client::StatefulDBusProxy and StatefulDBusProxy, because it's secretly string comparison. Sad face. TelepathyQt4/Client/dbus-proxy.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 28e3d37d68bb633b7e184ad92f2513d00c48fb79 Author: Simon McVittie Date: Mon Jan 12 17:12:32 2009 +0000 StatefulDBusProxy: Fix logic for tracking name ownership This requires the addition of a protected setBusName method. TelepathyQt4/Client/dbus-proxy.cpp | 11 ++++++----- TelepathyQt4/Client/dbus-proxy.h | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) commit efe4d21394680d6e25d6f208dcde7d1ec69f63b2 Author: Simon McVittie Date: Mon Jan 12 17:08:09 2009 +0000 StatefulDBusProxy: find out the unique name For a stateful interface it doesn't make sense to follow name-owner changes, so we want to bind to the unique name. Currently I match telepathy-glib's implementation and use a pseudo-blocking call; since our call is only to the dbus-daemon this doesn't introduce any message reordering, and it avoids having to delay the start of the introspection process for subclasses until the unique name has been discovered. TelepathyQt4/Client/dbus-proxy.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit 2d9c2367299942029dada5784975fd6c177842fe Author: Simon McVittie Date: Mon Jan 12 16:53:11 2009 +0000 StatefulDBusProxy: add an inline version of invalidate() that takes QDBusError TelepathyQt4/Client/dbus-proxy.h | 8 ++++++++ 1 file changed, 8 insertions(+) commit 9a8c1c250cde44f2a93c61eb1b0b31bebfb90020 Author: Simon McVittie Date: Wed Jan 14 17:59:52 2009 +0000 add a destructor to StatelessDBusProxy for future-proofing TelepathyQt4/Client/dbus-proxy.cpp | 7 ++++++- TelepathyQt4/Client/dbus-proxy.h | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) commit 1d8015d812b1e6949137cf069ee9349a99338d1c Author: Simon McVittie Date: Mon Jan 12 16:47:39 2009 +0000 StatelessDBusProxy: warn if the bus name is unique (makes no sense) TelepathyQt4/Client/dbus-proxy.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit b1dee07b8bd7f0836825b662621455831ba51bb4 Author: Simon McVittie Date: Mon Jan 12 15:56:25 2009 +0000 StatefulDBusProxy: make calling invalidate() twice not be an error We should just ignore the second invalidate() call and keep the first one, with a debug message. Also, add debug messages. When debugging we will probably want to know when a service dies. TelepathyQt4/Client/dbus-proxy.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit b1629438ca43172220b4af4eefeb632b4d411101 Author: Simon McVittie Date: Mon Jan 12 15:49:13 2009 +0000 DBusProxy: Un-inline Private constructors TelepathyQt4/Client/dbus-proxy.cpp | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) commit 2a1b772b0abe9fc541940d068de99478b3e10813 Author: Simon McVittie Date: Mon Jan 12 15:32:01 2009 +0000 StatefulDBusProxy: raise NameHasNoOwner if the service dies TelepathyQt4/Client/dbus-proxy.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit e03d3e1fa99706d9700aceb854faff22f94e51b0 Author: Simon McVittie Date: Mon Jan 12 15:31:22 2009 +0000 Constants: add TELEPATHY_DBUS_ERROR_NAME_HAS_NO_OWNER QtDBus doesn't expose equivalents of all the DBUS_ERROR_* macros from libdbus, and this one seems like the most appropriate mapping for "the service tracked by this StatefulDBusProxy has gone away". TelepathyQt4/constants.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 3c3beccdb4a6a2c05d5ad71d2d57537fa26b6e20 Author: Simon McVittie Date: Mon Jan 12 14:30:24 2009 +0000 DBusProxy: coding style adjustments TelepathyQt4/Client/dbus-proxy.cpp | 36 ++++++++++++++++++++++-------------- TelepathyQt4/Client/dbus-proxy.h | 36 ++++++++++++++++++------------------ 2 files changed, 40 insertions(+), 32 deletions(-) commit bee7ee71f5614f5ae680048097914e484f9bb420 Author: George Goldberg Date: Thu Dec 11 17:56:09 2008 +0000 Change nameownerchanged handling slot to not call invalidate if the object is already invalidated. TelepathyQt4/Client/dbus-proxy.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit f2a71f21a1d539822268633e6bad1302b643bbfe Author: George Goldberg Date: Thu Dec 11 17:35:23 2008 +0000 Correct a couple of minor api-docs typos. TelepathyQt4/Client/dbus-proxy.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d856453b54d92a28a79b2132600229b2bdd49254 Author: George Goldberg Date: Thu Dec 11 17:34:15 2008 +0000 Tame the Q_ASSERTs in StatefulDBusProxy invalidation code a bit. TelepathyQt4/Client/dbus-proxy.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit 7db0b38e825b6c5f690cef04fcfe2c25e1a93cb3 Author: George Goldberg Date: Wed Dec 10 17:04:51 2008 +0000 Invalidate statefulDbusProxy classes on getting nameOwnerChanged signal from DBus. TelepathyQt4/Client/dbus-proxy.cpp | 12 ++++++++++++ TelepathyQt4/Client/dbus-proxy.h | 2 ++ 2 files changed, 14 insertions(+) commit 3c07414089d3d2638b364cca2c0a72d1d2b78484 Author: George Goldberg Date: Wed Dec 3 15:15:01 2008 +0000 Implement a protected method that can be called to invalidate the StatefulDBusProxy. TelepathyQt4/Client/dbus-proxy.cpp | 28 ++++++++++++++++++++++++++++ TelepathyQt4/Client/dbus-proxy.h | 5 ++++- 2 files changed, 32 insertions(+), 1 deletion(-) commit 3d4bad05d6e114647c90047e366854cf63ac4083 Author: George Goldberg Date: Wed Dec 3 14:58:20 2008 +0000 Implement getters for validity information in StatefulDBusProxy. TelepathyQt4/Client/dbus-proxy.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit e29d315014f6ea894fd1aa0621c6e04b8455bcf3 Author: George Goldberg Date: Wed Dec 3 14:46:36 2008 +0000 Move DBusProxy invalidation to StatefulDBusProxy subclass. TelepathyQt4/Client/dbus-proxy.h | 93 ++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 42 deletions(-) commit 0871801796ae8266769b9b6ddbe10da6a81ef8c8 Merge: 66aebc4 5cafc49 Author: Simon McVittie Date: Wed Jan 14 18:31:07 2009 +0000 Merge branch 'tpglib' commit 66aebc40f180af31ffc404d8b43f08bcad721e24 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 13 18:21:05 2009 -0300 Moved all signals/slots from ConnectionManager::Private to ConnectionManager. TelepathyQt4/Client/connection-manager-internal.h | 24 +- TelepathyQt4/Client/connection-manager.cpp | 369 +++++++++++----------- TelepathyQt4/Client/connection-manager.h | 16 +- 3 files changed, 203 insertions(+), 206 deletions(-) commit 584980e40d29b46b3cf8c69a0a6f5b0020d7dbc2 Author: Olli Salli Date: Mon Jan 12 20:18:48 2009 +0200 Add conversion functions from ReferencedHandles to bare containers TelepathyQt4/Client/referenced-handles.cpp | 5 +++++ TelepathyQt4/Client/referenced-handles.h | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) commit 46b40793aee591c112076c8f3b553d7a40980e6f Author: Olli Salli Date: Mon Jan 12 17:35:31 2009 +0200 Add PendingHandles pretty-include header and ensure that it and the one for ReferencedHandles is always used TelepathyQt4/Client/PendingHandles | 13 +++++++++++++ TelepathyQt4/Client/ReferencedHandles | 6 ++++++ TelepathyQt4/Client/pending-handles.cpp | 2 +- TelepathyQt4/Client/pending-handles.h | 4 ++++ TelepathyQt4/Client/referenced-handles.cpp | 4 +++- TelepathyQt4/Client/referenced-handles.h | 6 +++++- 6 files changed, 32 insertions(+), 3 deletions(-) commit 14f233fa5c7ecad6cf95d9f80cf97079ac828dd0 Merge: 4d4a5c8 b9758f0 Author: Olli Salli Date: Mon Jan 12 10:55:16 2009 +0200 Merge branch 'master' into handles Conflicts: TelepathyQt4/Client/connection.h TelepathyQt4/Makefile.am commit 7713e35fa594f1035b7d7d118ffe191829cf17bc Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 17:46:56 2009 -0300 Fixed some leaks. TelepathyQt4/Client/connection-manager.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) commit 5cafc4937df677fe1251a443c6de9e14d1984e81 Author: Simon McVittie Date: Fri Jan 9 16:14:35 2009 +0000 Add a simple CM test using a telepathy-glib CM in-process with the test tests/dbus/Makefile.am | 15 +++++ tests/dbus/cm-basics.cpp | 150 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) commit 301caec5217f4b31eddb69e653bd3a7ae4ebd6c1 Author: Simon McVittie Date: Fri Jan 9 16:56:30 2009 +0000 Move MOC_INCLUDES further up tests/dbus/Makefile.am so we can append to it We want to put telepathy-glib on the include path conditionally. tests/dbus/Makefile.am | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 50e505d1d8144c14dc659369d0cc1423879dd633 Author: Simon McVittie Date: Fri Jan 9 15:34:24 2009 +0000 tests/: consistently build generated moc files in _gen Also, in every directory, generate moc files in such a way that we can build them either from the .h (if there is one) or the .cpp (if not). Rationale: if the QObject is entirely local to one test, we don't need to bother making a header just for moc's benefit - we can just run moc on the .cpp, which contains both declaration and definition. However, for "library" code that already needs a header, like tests/peregrine/lib.{h,cpp}, the declaration that moc needs is in the header. tests/Makefile.am | 11 ++++++++--- tests/dbus/Makefile.am | 6 +++--- tests/dbus/account-basics.cpp | 3 ++- tests/dbus/do-nothing.cpp | 3 ++- tests/key-file.cpp | 3 ++- tests/manager-file.cpp | 3 ++- 6 files changed, 19 insertions(+), 10 deletions(-) commit 1c63e74edf92e980005af1494076851df4543893 Author: Simon McVittie Date: Fri Jan 9 15:24:01 2009 +0000 tests/: make it clearer why only some of the CXXFLAGS are passed to moc tests/Makefile.am | 10 ++++++---- tests/dbus/Makefile.am | 8 +++++--- tests/pinocchio/Makefile.am | 8 +++++--- tests/prototype/Makefile.am | 8 +++++--- 4 files changed, 21 insertions(+), 13 deletions(-) commit 5dcbb0208054f30bcdc677c7799087e23e1053bb Author: Simon McVittie Date: Fri Jan 9 15:14:34 2009 +0000 Move account-manager.py to tests/lib tests/Makefile.am | 1 - tests/account-manager.py | 287 ----------------------- tests/dbus-1/services/account-manager.service.in | 2 +- tests/lib/Makefile.am | 3 + tests/lib/account-manager.py | 287 +++++++++++++++++++++++ 5 files changed, 291 insertions(+), 289 deletions(-) commit 774b6d2adac35684bdb8ae05257c6c451665d002 Author: Simon McVittie Date: Fri Jan 9 15:10:31 2009 +0000 Update tests/README to explain what tests/lib does tests/README | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) commit 4b29716f88422ba76eb7f0b80f81b9ec1af64841 Author: Simon McVittie Date: Fri Jan 9 15:10:19 2009 +0000 account-manager.service.in: use @TEST_PYTHON@ If we just execute account-manager.py, it might not work - there is no guarantee that /usr/bin/python is the version we need. Explicitly run @TEST_PYTHON@ instead, and pass the script as an argument. tests/dbus-1/services/account-manager.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 29157bf434df7792f2664af16b38a4e39257595e Author: Simon McVittie Date: Fri Jan 9 15:09:23 2009 +0000 tests/dbus/Makefile.am: don't build account-basics unless we can run it The account-basics test requires Python 2.5 with dbus-python (which is substituted as TEST_PYTHON). This is not a hard dependency, so the build and `make check` should succeed if it's missing. tests/dbus/Makefile.am | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit 44d39ae6c8fa7df01a13ea2030641a1b670a4892 Author: Simon McVittie Date: Fri Jan 9 15:06:58 2009 +0000 tests/lib: build a simple CM and Connection, taken from telepathy-glib configure.ac | 1 + tests/Makefile.am | 2 + tests/lib/Makefile.am | 19 ++++ tests/lib/simple-conn.c | 226 +++++++++++++++++++++++++++++++++++++++++++++ tests/lib/simple-conn.h | 59 ++++++++++++ tests/lib/simple-manager.c | 95 +++++++++++++++++++ tests/lib/simple-manager.h | 55 +++++++++++ 7 files changed, 457 insertions(+) commit d37511ef1ca731f23f597f33ae39d44594a27843 Author: Simon McVittie Date: Fri Jan 9 15:05:56 2009 +0000 configure.ac: check whether we can run telepathy-glib-based tests These need telepathy-glib, and also require that the copy of QtCore we're using has GLib main loop integration. I'm assuming that the presence of -lglib-2.0 in pkg-config --static --libs is a sufficient indication that it does. configure.ac | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) commit 09fe7864de5def90374b404d1748e03aef66811f Author: Simon McVittie Date: Fri Jan 9 15:04:34 2009 +0000 configure.ac: Get some suitable CFLAGS for C code (from telepathy-glib) configure.ac | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit 3f3135d81bf04d1026d78f7c8903184c715c39be Author: Simon McVittie Date: Fri Jan 9 15:04:10 2009 +0000 configure.ac: fix copy/paste error when selecting whether we are an official release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 55f12bf56a13791dba788656e6970b895ff326a3 Author: Simon McVittie Date: Fri Jan 9 15:03:45 2009 +0000 configure.ac: check for a C compiler too configure.ac | 7 +++++++ 1 file changed, 7 insertions(+) commit b9758f07993ab8d73f81593571c8693d45507d95 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 10:50:46 2009 -0300 Trivia patch, change the way connection-manager-internal.h is included. TelepathyQt4/Client/connection-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7ab07b8b97a36d5ea3f4ff7792fedac963f40e92 Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 10:44:12 2009 -0300 Revert "Include ConnectionManager public header, first, in connection-manager-internal.h" This reverts commit c42b234f3d88a929a33f8bc10de99bda82122a90. TelepathyQt4/Client/connection-manager-internal.h | 5 +++-- TelepathyQt4/Client/connection-manager.cpp | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) commit 3f6d8e8fac5c408517ef2583028418cdfc6dd8de Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 17:56:22 2009 -0300 Removed unnecessary initialization on AccountManager::Private. TelepathyQt4/Client/account-manager.cpp | 1 - 1 file changed, 1 deletion(-) commit 40041aab5c065b61b1c39cfa22fc5e7331408ef7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 14:11:17 2009 -0300 Make AccountManager::Private a class to fit its definition. TelepathyQt4/Client/account-manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit abd86c260a54cc6b79301d46109fb8867f3bfa37 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 17:57:20 2009 -0300 Delete baseInterface on ConnectionManager::Private destructor. TelepathyQt4/Client/connection-manager.cpp | 1 + 1 file changed, 1 insertion(+) commit e09f0f7fbf371d6a577ec019ce62c577873be6a2 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 17:56:38 2009 -0300 Delete baseInterface on AccountManager::Private destructor. TelepathyQt4/Client/account-manager.cpp | 1 + 1 file changed, 1 insertion(+) commit 72ca1694b4aa24de1d91d80f99655f793b52d9ae Author: Andre Moreira Magalhaes (andrunko) Date: Fri Jan 9 10:13:06 2009 -0300 Added empty line between includes. TelepathyQt4/Client/connection-manager.cpp | 1 + 1 file changed, 1 insertion(+) commit d7d20731a26340dbf45c5485706d9647892dac7d Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 19:46:45 2009 -0300 Updated AccountManager documentation. TelepathyQt4/Client/account-manager.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 88bf177ea0a32bafdd771ac43f4dc4a477079b6e Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 19:47:26 2009 -0300 Updated ConnectionManager documentation. TelepathyQt4/Client/connection-manager.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) commit a34d73121b0aee1d3c34c89268b13434727e36d7 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 19:48:10 2009 -0300 Updated ManagerFile documentation. TelepathyQt4/manager-file.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit dabc2c649105b20b7c943ac73a262b774e8dc346 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 19:47:51 2009 -0300 Updated KeyFile documentation. TelepathyQt4/key-file.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit 8dc6805302939cd86569b42414a9f5cbe6c5f636 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Jan 8 19:48:31 2009 -0300 Generate doc for cpp files. doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 232cc6a0de88713161376b615546b1f899cec446 Author: Simon McVittie Date: Thu Jan 8 20:04:50 2009 +0000 Ignore generated service file .gitignore | 1 + 1 file changed, 1 insertion(+) commit b34f19282684b7967dda557522b55ceea5ac345f Author: Simon McVittie Date: Thu Jan 8 19:59:57 2009 +0000 AccountManager: fix up #includes for build system alterations TelepathyQt4/Client/account-manager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 6c3a1b01b77d95e09813f4161c19077dcec9671c Author: Simon McVittie Date: Thu Jan 8 19:42:42 2009 +0000 Distribute Client/account-manager-internal.h TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit c667f525d571c795137ffefbe77e0ee843e0941d Author: Simon McVittie Date: Thu Jan 8 19:38:30 2009 +0000 tests/key-file.cpp: chdir to the right directory if out-of-tree tests/key-file.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit dee85092b1236e2ef1db70d218c171397fc762fb Author: Simon McVittie Date: Thu Jan 8 19:37:39 2009 +0000 Remove -Wmissing-declarations; g++ 4.2 implements it as a noisy no-op configure.ac | 1 - 1 file changed, 1 deletion(-) commit c42b234f3d88a929a33f8bc10de99bda82122a90 Author: Simon McVittie Date: Thu Jan 8 19:08:56 2009 +0000 Include ConnectionManager public header, first, in connection-manager-internal.h This means we can include only the internal header in the .cpp, and the public header will still be checked for self-containedness. So, do that. TelepathyQt4/Client/connection-manager-internal.h | 5 ++--- TelepathyQt4/Client/connection-manager.cpp | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) commit 3cac993ba803795272820636308d1f88ffc78261 Author: Simon McVittie Date: Thu Jan 8 19:07:44 2009 +0000 Use full path for pending-string-list.moc.hpp TelepathyQt4/Client/pending-string-list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4e0d09303c989ce862ca780407f1433a25195b44 Author: Simon McVittie Date: Thu Jan 8 19:07:24 2009 +0000 Distribute connection-manager-internal.h TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit b39d7124ac24513e3a03519759932333207a06dc Author: Simon McVittie Date: Thu Jan 8 19:07:09 2009 +0000 types.cpp: include the public header before the body TelepathyQt4/types.cpp | 2 ++ 1 file changed, 2 insertions(+) commit ca71dc1f5d7dd540320af2d94f3c99b458a76c26 Author: Simon McVittie Date: Thu Jan 8 19:06:54 2009 +0000 manager-file.cpp: include the public header TelepathyQt4/manager-file.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit fca006ae8e6654ff1deba67f50140552ab9a0058 Author: Simon McVittie Date: Thu Jan 8 19:06:42 2009 +0000 key-file.cpp: include the public header TelepathyQt4/key-file.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit c93040bf133c865444c971adc9aa636c284ebf7d Author: Simon McVittie Date: Thu Jan 8 17:05:16 2009 +0000 Move Client/*.moc.hpp into Client/_gen This moves them out of the way so tab completion works better :-) TelepathyQt4/Client/channel.cpp | 3 +-- TelepathyQt4/Client/connection-manager.cpp | 5 ++--- TelepathyQt4/Client/connection.cpp | 3 +-- TelepathyQt4/Client/dbus-proxy.cpp | 2 +- TelepathyQt4/Client/pending-channel.cpp | 2 +- TelepathyQt4/Client/pending-operation.cpp | 4 ++-- TelepathyQt4/Makefile.am | 26 +++++++++++++------------- 7 files changed, 21 insertions(+), 24 deletions(-) commit 30cdeffc0404b1e3b43d6313dd1447d5b8c00200 Author: Simon McVittie Date: Thu Jan 8 16:57:45 2009 +0000 Distribute debug-internal.h TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit a6b488c328b6120c44792d62dbc7f610bcaf3356 Author: Simon McVittie Date: Thu Jan 8 16:57:33 2009 +0000 Fix thinko in moc rules TelepathyQt4/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 66362f294aab0bf5e7994eeb61797112a77eac17 Author: Simon McVittie Date: Thu Jan 8 16:47:22 2009 +0000 Fix generation of moc in out-of-tree-builds, fixing distcheck * Split up the moc Makefile rule because the source might come from the srcdir or the builddir, depending * Ensure that $(builddir)/Client exists before trying to write files into it TelepathyQt4/Makefile.am | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 1bb83745b5644608ee6ac8491181b5e4bcfd1c0f Author: Simon McVittie Date: Thu Jan 8 16:20:38 2009 +0000 Check for telepathy-glib as an optional build-time dependency configure.ac | 7 +++++++ 1 file changed, 7 insertions(+) commit 80ea4a8b7dba07db4df3accaed87da8ab1607389 Author: Simon McVittie Date: Thu Jan 8 15:47:13 2009 +0000 configure.ac: warn about more things configure.ac | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 498b896d3b28e0f82353f9031247148cf266ab09 Author: Simon McVittie Date: Thu Jan 8 15:47:02 2009 +0000 Remove INSTALL - autogen.sh will make us a new one .gitignore | 1 + INSTALL | 237 ------------------------------------------------------------- 2 files changed, 1 insertion(+), 237 deletions(-) commit 4f785f01196a5f41205d509e3f499314e0aedf3e Author: Simon McVittie Date: Thu Jan 8 15:39:27 2009 +0000 configure.ac: replace elaborate warning-flags logic with TP_COMPILER_WARNINGS configure.ac | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) commit 144d639cdb5fa29692c9a73dd287a7cd6556f735 Author: Simon McVittie Date: Thu Jan 8 15:39:00 2009 +0000 TpPrototype::PresenceManager: don't check unsigned < 0 Presumably the intention was to check for zero (which is the "null value" for handles), so let's do that instead. TelepathyQt4/Prototype/PresenceManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8c6ffd96bc3d94affc8242e14e8e9657c8ba4d63 Author: Simon McVittie Date: Thu Jan 8 15:37:56 2009 +0000 Add tp-compiler-warnings.m4 (from telepathy-glib) m4/Makefile.am | 1 + m4/tp-compiler-warnings.m4 | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) commit c419928dd78737a166b07d78bce165bdc8dae913 Author: Simon McVittie Date: Thu Jan 8 15:04:54 2009 +0000 Replace TP_CXX_COMPILER_FLAG with a TP_COMPILER_FLAG that handles both C and C++ configure.ac | 8 ++++---- m4/Makefile.am | 2 +- m4/tp-compiler-flag.m4 | 36 ++++++++++++++++++++++++++++++++++++ m4/tp-cxx-compiler-flag.m4 | 32 -------------------------------- 4 files changed, 41 insertions(+), 37 deletions(-) commit 302c0267fa2bfcb1eba6d8948c1d3ec640b911bf Merge: ecfd4b6 de7fc5a Author: Simon McVittie Date: Thu Jan 8 19:40:04 2009 +0000 Merge commit 'origin/master' commit ecfd4b67b0e59fce02d3e5677122861877cda9ba Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 7 18:17:56 2009 -0300 Added automated test for account-manager. tests/dbus/Makefile.am | 4 ++ tests/dbus/account-basics.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) commit 8974b5ebfc266c8a5c2af67dd36c5d52f55dfd5c Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 7 18:15:18 2009 -0300 Make tests/account-manager.py activatable. configure.ac | 1 + tests/Makefile.am | 1 + tests/account-manager.py | 0 tests/dbus-1/services/account-manager.service.in | 3 +++ 4 files changed, 5 insertions(+) commit 06bb4f52810cad2c1d8bf5c2b76cb220fff2c00f Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 7 18:14:39 2009 -0300 Added initial AccountManager impl. TelepathyQt4/Client/account-manager-internal.h | 85 +++++ TelepathyQt4/Client/account-manager.cpp | 440 +++++++++++++++++++++++++ TelepathyQt4/Client/account-manager.h | 97 +++++- TelepathyQt4/Makefile.am | 2 + 4 files changed, 607 insertions(+), 17 deletions(-) commit 84ccb3283d09fa5ff66dd435a246353b2fb67bef Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 7 23:15:15 2009 -0300 Added more debug. TelepathyQt4/Client/connection-manager.cpp | 1 + TelepathyQt4/manager-file.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) commit 389fd7e396fd2cd23610968e55afb2cfcc3e5949 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 7 23:13:42 2009 -0300 Do not replace XDG_DATA_DIRS, prepend tests dir to already existing one. Do not replace XDG_DATA_DIRS, prepend tests dir to already existing one, so cm-basics is able to find pinocchio manager file. tests/pinocchio/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b18471f7a0e4aa98ed6523a14ef6bae24a345033 Author: Andre Moreira Magalhaes (andrunko) Date: Wed Jan 7 18:32:46 2009 -0300 Fixed docs. TelepathyQt4/Client/connection-manager.cpp | 42 ++++++++++++++---------------- 1 file changed, 20 insertions(+), 22 deletions(-) commit de7fc5a31283b3bfaf0b8e220cedbf6c259d0820 Merge: a894fc8 e7cf7bb Author: Simon McVittie Date: Wed Jan 7 14:29:39 2009 +0000 Merge branch 'spec' commit e7cf7bbe22643f792ad0df8ff787f6868a24b85b Author: Simon McVittie Date: Wed Jan 7 13:55:04 2009 +0000 Update to spec 0.17.17 spec/Account_Manager.xml | 29 +++++++++++++---- spec/Channel.xml | 6 ++++ spec/Channel_Interface_Group.xml | 59 +++++++++++++++++++++++++++++++++-- spec/Channel_Interface_Messages.xml | 6 ++-- spec/Connection.xml | 59 ++++++++++++++++++++++++----------- spec/Connection_Interface_Avatars.xml | 4 +-- spec/Connection_Manager.xml | 4 +-- spec/Media_Stream_Handler.xml | 56 ++++++++++++++++++++------------- spec/all.xml | 2 +- 9 files changed, 169 insertions(+), 56 deletions(-) commit a894fc8e2c4c73c27e4c6183c47e003f22b8f4e1 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 17:52:16 2009 -0300 Moved ConnectionManager docs to source file and added more docs. TelepathyQt4/Client/connection-manager.cpp | 175 ++++++++++++++++++++++++++++- TelepathyQt4/Client/connection-manager.h | 96 ---------------- 2 files changed, 172 insertions(+), 99 deletions(-) commit 1dbb787bce6b98952b29db10c9eb8da30d8674ec Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 17:31:27 2009 -0300 Fixed coding style on ConnectionManager. TelepathyQt4/Client/connection-manager-internal.h | 14 ++-- TelepathyQt4/Client/connection-manager.cpp | 93 +++++++---------------- TelepathyQt4/Client/connection-manager.h | 10 +-- 3 files changed, 40 insertions(+), 77 deletions(-) commit 283ee56cd850ee82ad0b76e229505d6197f9cb2b Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 17:16:26 2009 -0300 Make ConnectionManager::Private a friend of PendingReady instead of ConnectionManager. TelepathyQt4/Client/connection-manager-internal.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e9de7cafd36c81aa3351824ee0105fdd954db141 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 17:06:58 2009 -0300 Removed parent member from ConnectionManager::Private (not needed). TelepathyQt4/Client/connection-manager-internal.h | 1 - TelepathyQt4/Client/connection-manager.cpp | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) commit 21f733f04feae421e43dca7df8c8354960936297 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 16:58:40 2009 -0300 Moved ConnectionManager::mName to ConnectionManager::Private::name. TelepathyQt4/Client/connection-manager-internal.h | 3 ++- TelepathyQt4/Client/connection-manager.cpp | 21 +++++++++++++-------- TelepathyQt4/Client/connection-manager.h | 3 +-- 3 files changed, 16 insertions(+), 11 deletions(-) commit 0354fad269fa1dd1b81283cdefe569e50322b53a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 16:53:38 2009 -0300 Moved ConnectionManager slots to ConnectionManager::Private class. Moved ConnectionManager slots to ConnectionManager::Private class and make ConnectionManager::Private a QObject. TelepathyQt4/Client/connection-manager-internal.h | 28 +-- TelepathyQt4/Client/connection-manager.cpp | 204 +++++++++++----------- TelepathyQt4/Client/connection-manager.h | 10 +- 3 files changed, 123 insertions(+), 119 deletions(-) commit 323fb9818c31952889ed8593aa00777d780c5f9d Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 16:50:31 2009 -0300 Removed ConnectionManager::ready signal in favor of becomeReady. TelepathyQt4/Client/connection-manager.cpp | 1 - TelepathyQt4/Client/connection-manager.h | 4 ---- 2 files changed, 5 deletions(-) commit d92eba661bd68cf5782d0852e9859a4d0bda9813 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 16:28:02 2009 -0300 Moved ConnectionManagerPendingNames to ConnectionManager::Private::PendingNames. TelepathyQt4/Client/connection-manager-internal.h | 8 +++++--- TelepathyQt4/Client/connection-manager.cpp | 12 ++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) commit 3ac5785cceae550200653cdc759ea4a294ac9a6e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 16:25:53 2009 -0300 Moved ConnectionManager::Private::PendingReady outside class definition. TelepathyQt4/Client/connection-manager-internal.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit 5fdb92d7faf5b19c263b380bf42f7021a4c5c9b8 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 16:16:21 2009 -0300 Moved ConnectionManager::Private to connection-manager-internal.h. TelepathyQt4/Client/connection-manager-internal.h | 40 +++++++++++++++++++++++ TelepathyQt4/Client/connection-manager.cpp | 37 --------------------- 2 files changed, 40 insertions(+), 37 deletions(-) commit a03825b519c781904f9c8dba3118722ed1c9a1b0 Author: Simon McVittie Date: Thu Dec 4 14:54:18 2008 +0000 TelepathyQt4/Constants: add AccountManager-related constants TelepathyQt4/constants.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit cc3a7300fede7a65c8464c44c2d4c5009646b712 Author: Simon McVittie Date: Fri Dec 12 16:24:40 2008 +0000 account-manager.py: implement Properties.Set on Account tests/account-manager.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) commit 14a8dfb1707d43042baeaba4065db78eccf12b74 Author: Simon McVittie Date: Fri Dec 12 16:24:26 2008 +0000 account-manager.py: correct implementation of Properties.Get on Account tests/account-manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 64f129573bc320a92ef14fcaff0d8925304cc581 Author: Simon McVittie Date: Fri Dec 12 16:24:01 2008 +0000 account-manager.py: correct implementation of UpdateParameters tests/account-manager.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit ab47cdf1005fe85d65802abb2c328f099755d7c3 Author: Simon McVittie Date: Fri Dec 12 16:23:46 2008 +0000 account-manager.py: add debug logging tests/account-manager.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 8fa2c62e62aa618dcf5f6cf82179013b6bbe43ae Author: Simon McVittie Date: Fri Dec 12 16:23:20 2008 +0000 account-manager.py: fix signature of ValidAccounts and InvalidAccounts Somewhere it changed to 'as', i.e. bug-for-bug compatible with Mission Control 5.0.beta45. tests/account-manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 367a014613e3b3c8833722c2788d8a0bbe5e84a0 Author: Simon McVittie Date: Fri Dec 12 16:22:44 2008 +0000 account-manager.py: Don't bother overriding introspection We don't really need Properties in introspection, and the way I implemented it was wrong anyway. tests/account-manager.py | 13 ------------- 1 file changed, 13 deletions(-) commit 02f64904f36c3159a19cd170a5e7c166ef301372 Author: Simon McVittie Date: Wed Dec 10 19:10:13 2008 +0000 account-manager.py: allow creation and deletion of accounts tests/account-manager.py | 147 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 3 deletions(-) commit cc7ea340aed303ec194a36d02a385a57eb7b4a77 Author: Simon McVittie Date: Wed Dec 10 19:09:55 2008 +0000 account-manager.py: correct sense of assertions tests/account-manager.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit e90be41fbbbd6f4fbd93a41c4d9ed0821d1b193a Author: Simon McVittie Date: Wed Dec 10 18:44:20 2008 +0000 account-manager.py: fix signature of Get, Set tests/account-manager.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit f221fa216b30861250236977895f6990f7f3bbef Author: Simon McVittie Date: Wed Dec 10 17:04:50 2008 +0000 Add a simple AccountManager implementation tests/Makefile.am | 1 + tests/account-manager.py | 122 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) commit e6acea9fce069850448f2924f1ef8fc7324efd85 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 14:30:09 2009 -0300 Added test for ConnecitonManager::listNames. tests/pinocchio/cm-basics.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit ea3cc86cffb69b69b8dc3b9f2316bc932d758a3e Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 15:31:51 2009 -0300 Added ConnectionManager::listNames method. Added ConnectionManager::listNames method that will list all CMs. TelepathyQt4/Client/connection-manager-internal.h | 60 +++++++++++++++++++ TelepathyQt4/Client/connection-manager.cpp | 71 +++++++++++++++++++++++ TelepathyQt4/Client/connection-manager.h | 3 + TelepathyQt4/Makefile.am | 1 + 4 files changed, 135 insertions(+) commit f0651110aaf519b20a5d4422e5865d2bc1042918 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 11:23:58 2009 -0300 Added PendingStringList class. TelepathyQt4/Client/PendingStringList | 13 ++++++ TelepathyQt4/Client/pending-string-list.cpp | 69 +++++++++++++++++++++++++++++ TelepathyQt4/Client/pending-string-list.h | 63 ++++++++++++++++++++++++++ TelepathyQt4/Makefile.am | 4 ++ 4 files changed, 149 insertions(+) commit ec39a9bed10f3747e26f399449cc60f92e40072b Author: Simon McVittie Date: Tue Jan 6 17:39:23 2009 +0000 Messages: add the necessary metadata to do code-gen in Qt This needs to go upstream into a telepathy-spec release before we merge this branch. TelepathyQt4/channel.xml | 1 + spec/Channel_Interface_Messages.xml | 39 ++++++++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) commit 3fc2b857d98327ca37a0842acd3504c4c69372af Author: Simon McVittie Date: Tue Jan 6 17:38:29 2009 +0000 codegen: support 'array-depth' attribute on types In the Qt world, we need to generate a named type for every level of nested list that makes sense. I've implemented this by adding an array-depth attribute to etc. indicating the maximum number of levels of nested lists that make sense for this type, so: generates types MessagePart, MessagePartList = QList, and MessagePartListList = QList. If array-depth is omitted, its value can be assumed to be 1 if array-name is present, or 0 otherwise. For the moment, the extra "List" suffix for arrays of nesting depth >= 2 is hard-coded. tools/libqt4codegen.py | 36 +++++++++++++++++++++++++++++++----- tools/qt4-types-gen.py | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 7 deletions(-) commit 883fe0aa1ccfc59943bb23f8ac167fb109092625 Author: Simon McVittie Date: Tue Jan 6 17:10:06 2009 +0000 trivia: ignore recently added tests .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 00e84befe2d26a8c1bb73160e6dd2c0686a588b8 Author: Simon McVittie Date: Tue Jan 6 15:39:31 2009 +0000 qt4-client-gen.py: escape */ when outputting into a comment tools/qt4-client-gen.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ad7d0f1b05ac045b479829fd766b08f1f5dabd21 Author: Simon McVittie Date: Tue Jan 6 15:36:07 2009 +0000 Spec 0.17.16 compliance: parse "dbus-property" flag in .manager files TelepathyQt4/manager-file.cpp | 3 +++ 1 file changed, 3 insertions(+) commit f31355515a3cb0f75ff75657a83c8077c2f68b5f Author: Simon McVittie Date: Thu Dec 18 12:16:49 2008 +0000 Update to telepathy-spec 0.17.16 Resulting ABI changes in stable interfaces: - generate Telepathy::Avatar struct - add optional MembersChangedDetailed signal to the Group interface - add Messages interface as stable - add ConnMgrParamFlagDBusProperty spec/Account.xml | 95 ++-- spec/Account_Interface_Avatar.xml | 14 +- spec/Account_Manager.xml | 20 +- spec/Channel.xml | 93 ++-- spec/Channel_Dispatch_Operation.xml | 49 +- spec/Channel_Dispatcher.xml | 22 + ...Channel_Dispatcher_Interface_Operation_List.xml | 13 +- spec/Channel_Future.xml | 4 +- spec/Channel_Handler.xml | 8 +- spec/Channel_Interface_Call_Merging.xml | 2 +- spec/Channel_Interface_Chat_State.xml | 6 +- spec/Channel_Interface_DTMF.xml | 8 +- spec/Channel_Interface_Group.xml | 233 ++++++++-- spec/Channel_Interface_Hold.xml | 6 +- spec/Channel_Interface_Media_Signalling.xml | 4 +- spec/Channel_Interface_Messages.xml | 97 +++- spec/Channel_Interface_Password.xml | 10 +- spec/Channel_Interface_Tube.xml | 127 +++++ spec/Channel_Request.xml | 24 +- spec/Channel_Type_Contact_List.xml | 32 +- spec/Channel_Type_DBus_Tube.xml | 183 ++++++++ spec/Channel_Type_File_Transfer.xml | 513 +++++++++++++++++++++ spec/Channel_Type_Room_List.xml | 57 ++- spec/Channel_Type_Stream_Tube.xml | 198 ++++++++ spec/Channel_Type_Streamed_Media.xml | 103 +++-- spec/Channel_Type_Text.xml | 79 ++-- spec/Channel_Type_Tubes.xml | 49 +- spec/Client_Handler.xml | 17 +- spec/Client_Observer.xml | 28 +- spec/Connection_Interface_Aliasing.xml | 22 +- spec/Connection_Interface_Avatars.xml | 118 ++++- spec/Connection_Interface_Capabilities.xml | 27 +- spec/Connection_Interface_Contact_Capabilities.xml | 165 +++++++ spec/Connection_Interface_Contacts.xml | 20 +- spec/Connection_Interface_Presence.xml | 118 ++--- spec/Connection_Interface_Renaming.xml | 12 +- spec/Connection_Interface_Requests.xml | 27 +- spec/Connection_Interface_Simple_Presence.xml | 9 +- spec/Connection_Manager.xml | 117 +++-- spec/all.xml | 7 +- spec/generic-types.xml | 2 +- 41 files changed, 2246 insertions(+), 492 deletions(-) commit 86b5870182dc43a540de73a268376a5999a54402 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 18:58:39 2009 -0300 Improved manager-file test case. tests/manager-file.cpp | 43 ++++++++++++++- tests/telepathy/managers/test-manager-file.manager | 61 ++++++++++++++++++++++ 2 files changed, 102 insertions(+), 2 deletions(-) commit 2b351f5a582fc851eef41e75462b6c22b333212f Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 10:09:54 2009 -0300 Fixed KeyFile/ManagerFile to proper parse list of strings. TelepathyQt4/key-file.cpp | 139 +++++++++++++++++++++++++++++++++++------- TelepathyQt4/key-file.h | 2 + TelepathyQt4/manager-file.cpp | 82 ++++++++++++------------- 3 files changed, 157 insertions(+), 66 deletions(-) commit 3be7725f7ee803cf9dc209ac16efb8ccae3ed1dc Author: Andre Moreira Magalhaes (andrunko) Date: Tue Jan 6 10:03:19 2009 -0300 Moved ManagerFile::variantFromDBusSignature to ManagerFile::variantTypeFromDBusSignature. Note: This method should be moved to an utils class of some sort. TelepathyQt4/Client/connection-manager.cpp | 2 +- TelepathyQt4/Client/connection-manager.h | 4 +- TelepathyQt4/manager-file.cpp | 134 +++++++++++++++-------------- TelepathyQt4/manager-file.h | 3 +- 4 files changed, 75 insertions(+), 68 deletions(-) commit 57c49fe2683e65565a8285d55f1f22a14efe2528 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 16:13:35 2009 -0300 Added automated test for manager-file. tests/Makefile.am | 25 +++++++- tests/manager-file.cpp | 75 ++++++++++++++++++++++ .../managers/test-manager-file-invalid.manager | 4 ++ tests/telepathy/managers/test-manager-file.manager | 21 ++++++ 4 files changed, 122 insertions(+), 3 deletions(-) commit 8864bb0079bc7742944d1e1014f12bdd2a1ab006 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 15:00:19 2009 -0300 Consider params with secret suffix as secret params. TelepathyQt4/manager-file.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 65b2db5befbe1078c3a1627dfa984d405352c708 Merge: a9c899c 2fb1a5c Author: Simon McVittie Date: Mon Jan 5 19:00:16 2009 +0000 Merge branch 'header-cleanup' commit 2fb1a5c5c2573054377b0d37fe7660b5dabfb8de Author: Simon McVittie Date: Mon Jan 5 18:39:57 2009 +0000 Clean up inclusions into .cpp files * Use the public headers when testing self-containedness * Use <> vs "" to indicate which headers will get installed and which are just internal TelepathyQt4/Client/account-manager.cpp | 7 +++---- TelepathyQt4/Client/account.cpp | 7 +++---- TelepathyQt4/Client/channel.cpp | 7 +++---- TelepathyQt4/Client/connection-manager.cpp | 10 +++++----- TelepathyQt4/Client/connection.cpp | 10 +++++----- TelepathyQt4/Client/dbus-proxy.cpp | 6 +++--- TelepathyQt4/Client/dbus.cpp | 7 +++---- TelepathyQt4/Client/media-session-handler.cpp | 7 +++---- TelepathyQt4/Client/media-stream-handler.cpp | 7 +++---- TelepathyQt4/Client/optional-interface-factory.cpp | 5 ++--- TelepathyQt4/Client/pending-channel.cpp | 6 +++--- TelepathyQt4/Client/pending-operation.cpp | 7 +++++-- TelepathyQt4/Client/properties.cpp | 3 +-- 13 files changed, 42 insertions(+), 47 deletions(-) commit 7a8fd68967944d7b6ebeb673fc0dde7f3351055e Author: Simon McVittie Date: Mon Jan 5 18:23:46 2009 +0000 connection-manager.h: turn #include of PendingOperation into forward declaration TelepathyQt4/Client/connection-manager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 571b45bdbe5edc4187061a889983b7dad9a15e80 Author: Simon McVittie Date: Mon Jan 5 18:23:24 2009 +0000 connection.h: turn inclusions into forward declarations where possible TelepathyQt4/Client/connection.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 75a770657bf943e6f6d7a74a2de4cd2ecdf0a79b Author: Simon McVittie Date: Mon Jan 5 18:22:59 2009 +0000 dbus-proxy.h: remove unnecessary include of TelepathyQt4/Client/dbus-proxy.h | 1 - 1 file changed, 1 deletion(-) commit a9c899cb82d4100b8bb8d087bc88fadd7836f436 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 13:18:50 2009 -0300 Added automated test for key-file. tests/Makefile.am | 34 ++++++++++++++++++++++++- tests/key-file.cpp | 49 ++++++++++++++++++++++++++++++++++++ tests/test-key-file-format-error.ini | 4 +++ tests/test-key-file.ini | 9 +++++++ 4 files changed, 95 insertions(+), 1 deletion(-) commit d6027ab958c4638964a8969afa23f0cf7e11e34a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 13:16:40 2009 -0300 Proper parse key/values with spaces. TelepathyQt4/key-file.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 24fe0a908b6d536ac1f8ca2ebe55da0b17889b35 Author: Simon McVittie Date: Mon Jan 5 17:57:34 2009 +0000 Reduce inclusions into channel.h via forward declarations channel.h only mentions Connection or QDBusPendingCallWatcher via a pointer, so it can just forward-declare those classes. Also compensate for this in channel.cpp and pending-channel.cpp, remove redundant inclusion of dbus.h in channel.cpp, and check self-containedness of the public header rather than channel.h. TelepathyQt4/Client/channel.cpp | 8 ++++---- TelepathyQt4/Client/channel.h | 6 ++++-- TelepathyQt4/Client/pending-channel.cpp | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) commit 5dfffc75035f7c199517f16416215786ad297266 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 12:59:22 2009 -0300 Fixed bug while searching for keys on on key file. TelepathyQt4/key-file.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e2023f27b867545521c62270de11b52078d30ce5 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 12:58:52 2009 -0300 Fixed bug while setting error when parsing key files. TelepathyQt4/key-file.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 6825157eb0db7e2ab1fc7479eb21edac1741456e Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 12:39:53 2009 -0300 Make the global group an empty group instead of a group named "general". TelepathyQt4/key-file.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit 510fbd678385c7a79bd4cfe95a5eb2fca90b3f5a Author: Simon McVittie Date: Mon Jan 5 17:30:33 2009 +0000 Avoid circular dependency between Connection and PendingChannel, fixing compilation Also include the correct version of the Channel header in pending-channel.cpp TelepathyQt4/Client/connection.h | 7 +------ TelepathyQt4/Client/pending-channel.cpp | 2 +- TelepathyQt4/Client/pending-channel.h | 3 +-- tests/pinocchio/chan-basics.cpp | 1 + 4 files changed, 4 insertions(+), 9 deletions(-) commit d615b6a6aaa1abecd8409c395edcda4773698d02 Merge: d498dbb addd506 Author: Simon McVittie Date: Mon Jan 5 16:57:47 2009 +0000 Merge commit 'andrunko/misc' commit d498dbb03dd10dcbdc18bef8eef32a75b6282c4c Merge: 90c0f92 d5b52d9 Author: Simon McVittie Date: Mon Jan 5 16:57:39 2009 +0000 Merge commit 'andrunko/rearrangement' Conflicts: TelepathyQt4/Client/connection-manager.h commit 90c0f92adb97206d73e07316c3fa46b1f2c063f3 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 29 17:52:52 2008 -0300 Removed debug. TelepathyQt4/manager-file.cpp | 1 - 1 file changed, 1 deletion(-) commit 38c2643670223baad5ab3109fe64e1e71491a896 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 11:43:57 2009 -0300 Renamed escapedKey to validateKey and escapedString to unescapeString. Renamed escapedKey to validateKey and escapedString to unescapeString as suggested by smcv. TelepathyQt4/key-file.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 49fe4f2e328aff8f777efc884afc096e5b9eee98 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 11:36:04 2009 -0300 Added ProtocolParameter private data for future expansion. TelepathyQt4/cli-connection-manager.h | 3 +++ 1 file changed, 3 insertions(+) commit 92c322da25426b6a3d02becb322ba4c19857b1ac Merge: 6db3a8a 67a3076 Author: Simon McVittie Date: Mon Jan 5 16:54:27 2009 +0000 Merge commit 'andrunko/cm' Conflicts: TelepathyQt4/cli-connection-manager.cpp commit addd50631982337ce195c9cb7256c9b7b478f311 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 12:10:41 2009 -0300 Renamed IN_TELEPATHY_QT4_INTERNALS to IN_TELEPATHY_QT4_HEADER. TelepathyQt4/Client/Account | 6 +++--- TelepathyQt4/Client/AccountInterface | 6 +++--- TelepathyQt4/Client/AccountManager | 6 +++--- TelepathyQt4/Client/AccountManagerInterface | 6 +++--- TelepathyQt4/Client/Channel | 6 +++--- TelepathyQt4/Client/ChannelInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfaceCallStateInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfaceChatStateInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfaceDTMFInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfaceGroupInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfaceHoldInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfaceMediaSignallingInterface | 6 +++--- TelepathyQt4/Client/ChannelInterfacePasswordInterface | 6 +++--- TelepathyQt4/Client/ChannelTypeContactListInterface | 6 +++--- TelepathyQt4/Client/ChannelTypeRoomListInterface | 6 +++--- TelepathyQt4/Client/ChannelTypeStreamedMediaInterface | 6 +++--- TelepathyQt4/Client/ChannelTypeTextInterface | 6 +++--- TelepathyQt4/Client/ChannelTypeTubesInterface | 6 +++--- TelepathyQt4/Client/Connection | 6 +++--- TelepathyQt4/Client/ConnectionInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfaceAliasingInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfaceAvatarsInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfaceCapabilitiesInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfaceContactsInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfacePresenceInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfaceRequestsInterface | 6 +++--- TelepathyQt4/Client/ConnectionInterfaceSimplePresenceInterface | 6 +++--- TelepathyQt4/Client/ConnectionManager | 6 +++--- TelepathyQt4/Client/ConnectionManagerInterface | 6 +++--- TelepathyQt4/Client/DBus | 6 +++--- TelepathyQt4/Client/DBusDaemonInterface | 6 +++--- TelepathyQt4/Client/DBusProxy | 6 +++--- TelepathyQt4/Client/IntrospectableInterface | 6 +++--- TelepathyQt4/Client/MediaSessionHandler | 6 +++--- TelepathyQt4/Client/MediaSessionHandlerInterface | 6 +++--- TelepathyQt4/Client/MediaStreamHandler | 6 +++--- TelepathyQt4/Client/MediaStreamHandlerInterface | 6 +++--- TelepathyQt4/Client/OptionalInterfaceFactory | 6 +++--- TelepathyQt4/Client/PeerInterface | 6 +++--- TelepathyQt4/Client/PendingChannel | 6 +++--- TelepathyQt4/Client/PendingFailure | 6 +++--- TelepathyQt4/Client/PendingOperation | 6 +++--- TelepathyQt4/Client/PendingSuccess | 6 +++--- TelepathyQt4/Client/PendingVoidMethodCall | 6 +++--- TelepathyQt4/Client/Properties | 6 +++--- TelepathyQt4/Client/PropertiesInterface | 6 +++--- TelepathyQt4/Client/PropertiesInterfaceInterface | 6 +++--- TelepathyQt4/Client/StatefulDBusProxy | 6 +++--- TelepathyQt4/Client/StatelessDBusProxy | 6 +++--- TelepathyQt4/Client/account-manager.cpp | 2 +- TelepathyQt4/Client/account-manager.h | 4 ++-- TelepathyQt4/Client/account.cpp | 2 +- TelepathyQt4/Client/account.h | 4 ++-- TelepathyQt4/Client/channel.cpp | 2 +- TelepathyQt4/Client/channel.h | 4 ++-- TelepathyQt4/Client/connection-manager.cpp | 2 +- TelepathyQt4/Client/connection-manager.h | 4 ++-- TelepathyQt4/Client/connection.cpp | 2 +- TelepathyQt4/Client/connection.h | 4 ++-- TelepathyQt4/Client/dbus-proxy.cpp | 2 +- TelepathyQt4/Client/dbus-proxy.h | 4 ++-- TelepathyQt4/Client/dbus.cpp | 2 +- TelepathyQt4/Client/dbus.h | 4 ++-- TelepathyQt4/Client/media-session-handler.cpp | 2 +- TelepathyQt4/Client/media-session-handler.h | 4 ++-- TelepathyQt4/Client/media-stream-handler.cpp | 2 +- TelepathyQt4/Client/media-stream-handler.h | 4 ++-- TelepathyQt4/Client/optional-interface-factory.cpp | 2 +- TelepathyQt4/Client/optional-interface-factory.h | 4 ++-- TelepathyQt4/Client/pending-channel.cpp | 2 +- TelepathyQt4/Client/pending-channel.h | 4 ++-- TelepathyQt4/Client/pending-operation.cpp | 2 +- TelepathyQt4/Client/pending-operation.h | 4 ++-- TelepathyQt4/Client/properties.cpp | 2 +- TelepathyQt4/Client/properties.h | 4 ++-- TelepathyQt4/Client/simple-pending-operations.h | 4 ++-- TelepathyQt4/Constants | 6 +++--- TelepathyQt4/Debug | 6 +++--- TelepathyQt4/KeyFile | 6 +++--- TelepathyQt4/Makefile.am | 6 +++--- TelepathyQt4/ManagerFile | 6 +++--- TelepathyQt4/Types | 6 +++--- TelepathyQt4/constants.h | 4 ++-- TelepathyQt4/debug.cpp | 2 +- TelepathyQt4/debug.h | 4 ++-- TelepathyQt4/key-file.cpp | 2 +- TelepathyQt4/key-file.h | 4 ++-- TelepathyQt4/manager-file.cpp | 2 +- TelepathyQt4/manager-file.h | 4 ++-- TelepathyQt4/types.cpp | 2 +- TelepathyQt4/types.h | 4 ++-- 91 files changed, 220 insertions(+), 220 deletions(-) commit 473e35db90d25cd8b5d6a08c76602a433c312f95 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 12:07:23 2009 -0300 Added undef IN_TELEPATHY_QT4_INTERNALS to all fancy headers. Added undef IN_TELEPATHY_QT4_INTERNALS to all fancy headers so users are not allowed to include a fancy header and then include a normal header. TelepathyQt4/Client/Account | 2 ++ TelepathyQt4/Client/AccountInterface | 2 ++ TelepathyQt4/Client/AccountManager | 2 ++ TelepathyQt4/Client/AccountManagerInterface | 2 ++ TelepathyQt4/Client/Channel | 2 ++ TelepathyQt4/Client/ChannelInterface | 2 ++ TelepathyQt4/Client/ChannelInterfaceCallStateInterface | 2 ++ TelepathyQt4/Client/ChannelInterfaceChatStateInterface | 2 ++ TelepathyQt4/Client/ChannelInterfaceDTMFInterface | 2 ++ TelepathyQt4/Client/ChannelInterfaceGroupInterface | 2 ++ TelepathyQt4/Client/ChannelInterfaceHoldInterface | 2 ++ TelepathyQt4/Client/ChannelInterfaceMediaSignallingInterface | 2 ++ TelepathyQt4/Client/ChannelInterfacePasswordInterface | 2 ++ TelepathyQt4/Client/ChannelTypeContactListInterface | 2 ++ TelepathyQt4/Client/ChannelTypeRoomListInterface | 2 ++ TelepathyQt4/Client/ChannelTypeStreamedMediaInterface | 2 ++ TelepathyQt4/Client/ChannelTypeTextInterface | 2 ++ TelepathyQt4/Client/ChannelTypeTubesInterface | 2 ++ TelepathyQt4/Client/Connection | 2 ++ TelepathyQt4/Client/ConnectionInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfaceAliasingInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfaceAvatarsInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfaceCapabilitiesInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfaceContactsInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfacePresenceInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfaceRequestsInterface | 2 ++ TelepathyQt4/Client/ConnectionInterfaceSimplePresenceInterface | 2 ++ TelepathyQt4/Client/ConnectionManager | 2 ++ TelepathyQt4/Client/ConnectionManagerInterface | 2 ++ TelepathyQt4/Client/DBus | 2 ++ TelepathyQt4/Client/DBusDaemonInterface | 2 ++ TelepathyQt4/Client/DBusProxy | 2 ++ TelepathyQt4/Client/IntrospectableInterface | 2 ++ TelepathyQt4/Client/MediaSessionHandler | 2 ++ TelepathyQt4/Client/MediaSessionHandlerInterface | 2 ++ TelepathyQt4/Client/MediaStreamHandler | 2 ++ TelepathyQt4/Client/MediaStreamHandlerInterface | 2 ++ TelepathyQt4/Client/OptionalInterfaceFactory | 2 ++ TelepathyQt4/Client/PeerInterface | 2 ++ TelepathyQt4/Client/PendingChannel | 2 ++ TelepathyQt4/Client/PendingFailure | 2 ++ TelepathyQt4/Client/PendingOperation | 2 ++ TelepathyQt4/Client/PendingSuccess | 2 ++ TelepathyQt4/Client/PendingVoidMethodCall | 2 ++ TelepathyQt4/Client/Properties | 2 ++ TelepathyQt4/Client/PropertiesInterface | 2 ++ TelepathyQt4/Client/PropertiesInterfaceInterface | 2 ++ TelepathyQt4/Client/StatefulDBusProxy | 2 ++ TelepathyQt4/Client/StatelessDBusProxy | 2 ++ TelepathyQt4/Constants | 2 ++ TelepathyQt4/Debug | 2 ++ TelepathyQt4/KeyFile | 2 ++ TelepathyQt4/ManagerFile | 2 ++ TelepathyQt4/Types | 2 ++ TelepathyQt4/debug-internal.h | 4 ---- 55 files changed, 108 insertions(+), 4 deletions(-) commit 3723ca2f52f578defd15ac65880639515bd9ac9f Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 11:43:57 2009 -0300 Renamed escapedKey to validateKey and escapedString to unescapeString. Renamed escapedKey to validateKey and escapedString to unescapeString as suggested by smcv. TelepathyQt4/key-file.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit c3e79f64ff1b9df31c44e039ef8d9c4d3d749361 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Jan 5 11:36:04 2009 -0300 Added ProtocolParameter private data for future expansion. TelepathyQt4/Client/connection-manager.h | 3 +++ 1 file changed, 3 insertions(+) commit d5b52d9bc4c2cfe8dbe9fb211f1e40c5b3492125 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 30 14:12:12 2008 -0300 Make including fancy headers mandatory. Build error if not including fancy headers files (#error directive). TelepathyQt4/Client/Account | 4 ++++ TelepathyQt4/Client/AccountInterface | 4 ++++ TelepathyQt4/Client/AccountManager | 4 ++++ TelepathyQt4/Client/AccountManagerInterface | 4 ++++ TelepathyQt4/Client/Channel | 4 ++++ TelepathyQt4/Client/ChannelInterface | 4 ++++ .../Client/ChannelInterfaceCallStateInterface | 4 ++++ .../Client/ChannelInterfaceChatStateInterface | 4 ++++ TelepathyQt4/Client/ChannelInterfaceDTMFInterface | 4 ++++ TelepathyQt4/Client/ChannelInterfaceGroupInterface | 4 ++++ TelepathyQt4/Client/ChannelInterfaceHoldInterface | 4 ++++ .../Client/ChannelInterfaceMediaSignallingInterface | 4 ++++ TelepathyQt4/Client/ChannelInterfacePasswordInterface | 4 ++++ TelepathyQt4/Client/ChannelTypeContactListInterface | 4 ++++ TelepathyQt4/Client/ChannelTypeRoomListInterface | 4 ++++ TelepathyQt4/Client/ChannelTypeStreamedMediaInterface | 4 ++++ TelepathyQt4/Client/ChannelTypeTextInterface | 4 ++++ TelepathyQt4/Client/ChannelTypeTubesInterface | 4 ++++ TelepathyQt4/Client/Connection | 4 ++++ TelepathyQt4/Client/ConnectionInterface | 4 ++++ .../Client/ConnectionInterfaceAliasingInterface | 4 ++++ .../Client/ConnectionInterfaceAvatarsInterface | 4 ++++ .../Client/ConnectionInterfaceCapabilitiesInterface | 4 ++++ .../Client/ConnectionInterfaceContactsInterface | 4 ++++ .../Client/ConnectionInterfacePresenceInterface | 4 ++++ .../Client/ConnectionInterfaceRequestsInterface | 4 ++++ .../Client/ConnectionInterfaceSimplePresenceInterface | 4 ++++ TelepathyQt4/Client/ConnectionManager | 4 ++++ TelepathyQt4/Client/ConnectionManagerInterface | 4 ++++ TelepathyQt4/Client/DBus | 4 ++++ TelepathyQt4/Client/DBusDaemonInterface | 4 ++++ TelepathyQt4/Client/DBusProxy | 4 ++++ TelepathyQt4/Client/IntrospectableInterface | 4 ++++ TelepathyQt4/Client/MediaSessionHandler | 4 ++++ TelepathyQt4/Client/MediaSessionHandlerInterface | 4 ++++ TelepathyQt4/Client/MediaStreamHandler | 4 ++++ TelepathyQt4/Client/MediaStreamHandlerInterface | 4 ++++ TelepathyQt4/Client/OptionalInterfaceFactory | 4 ++++ TelepathyQt4/Client/PeerInterface | 4 ++++ TelepathyQt4/Client/PendingChannel | 4 ++++ TelepathyQt4/Client/PendingFailure | 4 ++++ TelepathyQt4/Client/PendingOperation | 4 ++++ TelepathyQt4/Client/PendingSuccess | 4 ++++ TelepathyQt4/Client/PendingVoidMethodCall | 4 ++++ TelepathyQt4/Client/Properties | 4 ++++ TelepathyQt4/Client/PropertiesInterface | 4 ++++ TelepathyQt4/Client/PropertiesInterfaceInterface | 4 ++++ TelepathyQt4/Client/StatefulDBusProxy | 4 ++++ TelepathyQt4/Client/StatelessDBusProxy | 4 ++++ TelepathyQt4/Client/account-manager.cpp | 1 + TelepathyQt4/Client/account-manager.h | 4 ++++ TelepathyQt4/Client/account.cpp | 1 + TelepathyQt4/Client/account.h | 4 ++++ TelepathyQt4/Client/channel.cpp | 1 + TelepathyQt4/Client/channel.h | 4 ++++ TelepathyQt4/Client/connection-manager.cpp | 1 + TelepathyQt4/Client/connection-manager.h | 4 ++++ TelepathyQt4/Client/connection.cpp | 1 + TelepathyQt4/Client/connection.h | 4 ++++ TelepathyQt4/Client/dbus-proxy.cpp | 1 + TelepathyQt4/Client/dbus-proxy.h | 4 ++++ TelepathyQt4/Client/dbus.cpp | 1 + TelepathyQt4/Client/dbus.h | 4 ++++ TelepathyQt4/Client/media-session-handler.cpp | 1 + TelepathyQt4/Client/media-session-handler.h | 4 ++++ TelepathyQt4/Client/media-stream-handler.cpp | 1 + TelepathyQt4/Client/media-stream-handler.h | 4 ++++ TelepathyQt4/Client/optional-interface-factory.cpp | 1 + TelepathyQt4/Client/optional-interface-factory.h | 4 ++++ TelepathyQt4/Client/pending-channel.cpp | 1 + TelepathyQt4/Client/pending-channel.h | 4 ++++ TelepathyQt4/Client/pending-operation.cpp | 1 + TelepathyQt4/Client/pending-operation.h | 4 ++++ TelepathyQt4/Client/properties.cpp | 1 + TelepathyQt4/Client/properties.h | 4 ++++ TelepathyQt4/Client/simple-pending-operations.h | 4 ++++ TelepathyQt4/Constants | 5 +++++ TelepathyQt4/Debug | 5 +++++ TelepathyQt4/KeyFile | 5 +++++ TelepathyQt4/Makefile.am | 3 +++ TelepathyQt4/ManagerFile | 5 +++++ TelepathyQt4/Types | 5 +++++ TelepathyQt4/constants.h | 4 ++++ TelepathyQt4/debug-internal.h | 4 ++++ TelepathyQt4/debug.cpp | 1 + TelepathyQt4/debug.h | 4 ++++ TelepathyQt4/key-file.cpp | 1 + TelepathyQt4/key-file.h | 4 ++++ TelepathyQt4/manager-file.cpp | 1 + TelepathyQt4/manager-file.h | 4 ++++ TelepathyQt4/types.cpp | 1 + TelepathyQt4/types.h | 4 ++++ tools/qt4-client-gen.py | 19 +++++++++++++++---- tools/qt4-constants-gen.py | 11 +++++++++++ tools/qt4-types-gen.py | 19 +++++++++++++++++-- 95 files changed, 364 insertions(+), 6 deletions(-) commit fbdadca965c361b324607135634b78a8dea83457 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 29 17:52:52 2008 -0300 Removed debug. TelepathyQt4/manager-file.cpp | 1 - 1 file changed, 1 deletion(-) commit a7bb5060bcc1461c112e1609677ccea2bdb561ea Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 29 17:21:08 2008 -0300 Added fancy headers for all generated classes. TelepathyQt4/Client/AccountInterface | 7 +++++ TelepathyQt4/Client/AccountManagerInterface | 7 +++++ TelepathyQt4/Client/ChannelInterface | 7 +++++ .../Client/ChannelInterfaceCallStateInterface | 7 +++++ .../Client/ChannelInterfaceChatStateInterface | 7 +++++ TelepathyQt4/Client/ChannelInterfaceDTMFInterface | 7 +++++ TelepathyQt4/Client/ChannelInterfaceGroupInterface | 7 +++++ TelepathyQt4/Client/ChannelInterfaceHoldInterface | 7 +++++ .../ChannelInterfaceMediaSignallingInterface | 7 +++++ .../Client/ChannelInterfacePasswordInterface | 7 +++++ .../Client/ChannelTypeContactListInterface | 7 +++++ TelepathyQt4/Client/ChannelTypeRoomListInterface | 7 +++++ .../Client/ChannelTypeStreamedMediaInterface | 7 +++++ TelepathyQt4/Client/ChannelTypeTextInterface | 7 +++++ TelepathyQt4/Client/ChannelTypeTubesInterface | 7 +++++ TelepathyQt4/Client/ConnectionInterface | 7 +++++ .../Client/ConnectionInterfaceAliasingInterface | 7 +++++ .../Client/ConnectionInterfaceAvatarsInterface | 7 +++++ .../ConnectionInterfaceCapabilitiesInterface | 7 +++++ .../Client/ConnectionInterfaceContactsInterface | 7 +++++ .../Client/ConnectionInterfacePresenceInterface | 7 +++++ .../Client/ConnectionInterfaceRequestsInterface | 7 +++++ .../ConnectionInterfaceSimplePresenceInterface | 7 +++++ TelepathyQt4/Client/ConnectionManagerInterface | 7 +++++ TelepathyQt4/Client/DBusDaemonInterface | 7 +++++ TelepathyQt4/Client/IntrospectableInterface | 7 +++++ TelepathyQt4/Client/MediaSessionHandlerInterface | 7 +++++ TelepathyQt4/Client/MediaStreamHandlerInterface | 7 +++++ TelepathyQt4/Client/PeerInterface | 7 +++++ TelepathyQt4/Client/PropertiesInterface | 7 +++++ TelepathyQt4/Client/PropertiesInterfaceInterface | 7 +++++ TelepathyQt4/Makefile.am | 31 ++++++++++++++++++++++ 32 files changed, 248 insertions(+) commit 918743651fa001bb553cfd8884ecdb5fcc7b527a Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 29 17:07:07 2008 -0300 Moved debug-internal.hpp to debug-internal.h. TelepathyQt4/Client/channel.cpp | 2 +- TelepathyQt4/Client/connection-manager.cpp | 2 +- TelepathyQt4/Client/connection.cpp | 2 +- TelepathyQt4/Client/dbus-proxy.cpp | 2 +- TelepathyQt4/Client/optional-interface-factory.cpp | 2 +- TelepathyQt4/Client/pending-channel.cpp | 2 +- TelepathyQt4/Client/pending-operation.cpp | 2 +- TelepathyQt4/Makefile.am | 1 - TelepathyQt4/debug-internal.h | 90 ++++++++++++++++++++++ TelepathyQt4/debug-internal.hpp | 90 ---------------------- TelepathyQt4/debug.cpp | 2 +- TelepathyQt4/key-file.cpp | 2 +- TelepathyQt4/manager-file.cpp | 2 +- 13 files changed, 100 insertions(+), 101 deletions(-) commit bc30a761c6e4d9cdb8da962488e35c599dc337e6 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 29 17:01:01 2008 -0300 Moved TelepathyQt4/cli-* to TelepathyQt4/Client/. TelepathyQt4/Client/Account | 7 + TelepathyQt4/Client/AccountManager | 4 +- TelepathyQt4/Client/Channel | 3 +- TelepathyQt4/Client/Connection | 3 +- TelepathyQt4/Client/ConnectionManager | 3 +- TelepathyQt4/Client/DBus | 3 +- TelepathyQt4/Client/DBusProxy | 7 +- TelepathyQt4/Client/MediaSessionHandler | 3 +- TelepathyQt4/Client/MediaStreamHandler | 3 +- TelepathyQt4/Client/OptionalInterfaceFactory | 3 +- TelepathyQt4/Client/PendingChannel | 7 + TelepathyQt4/Client/PendingFailure | 3 +- TelepathyQt4/Client/PendingOperation | 3 +- TelepathyQt4/Client/PendingSuccess | 2 +- TelepathyQt4/Client/PendingVoidMethodCall | 3 +- TelepathyQt4/Client/Properties | 3 +- TelepathyQt4/Client/StatefulDBusProxy | 7 + TelepathyQt4/Client/StatelessDBusProxy | 7 + TelepathyQt4/Client/account-manager.cpp | 25 + TelepathyQt4/Client/account-manager.h | 45 + TelepathyQt4/Client/account.cpp | 25 + TelepathyQt4/Client/account.h | 41 + TelepathyQt4/Client/channel.cpp | 932 +++++++++++++++++++++ TelepathyQt4/Client/channel.h | 819 ++++++++++++++++++ TelepathyQt4/Client/connection-manager.cpp | 459 ++++++++++ TelepathyQt4/Client/connection-manager.h | 234 ++++++ TelepathyQt4/Client/connection.cpp | 502 +++++++++++ TelepathyQt4/Client/connection.h | 476 +++++++++++ TelepathyQt4/Client/dbus-proxy.cpp | 92 ++ TelepathyQt4/Client/dbus-proxy.h | 190 +++++ TelepathyQt4/Client/dbus.cpp | 25 + TelepathyQt4/Client/dbus.h | 49 ++ TelepathyQt4/Client/media-session-handler.cpp | 25 + TelepathyQt4/Client/media-session-handler.h | 45 + TelepathyQt4/Client/media-stream-handler.cpp | 25 + TelepathyQt4/Client/media-stream-handler.h | 45 + TelepathyQt4/Client/optional-interface-factory.cpp | 80 ++ TelepathyQt4/Client/optional-interface-factory.h | 122 +++ TelepathyQt4/Client/pending-channel.cpp | 110 +++ TelepathyQt4/Client/pending-channel.h | 136 +++ TelepathyQt4/Client/pending-operation.cpp | 189 +++++ TelepathyQt4/Client/pending-operation.h | 176 ++++ TelepathyQt4/Client/properties.cpp | 25 + TelepathyQt4/Client/properties.h | 46 + TelepathyQt4/Client/simple-pending-operations.h | 111 +++ TelepathyQt4/Makefile.am | 76 +- TelepathyQt4/Prototype/Account.cpp | 1 + TelepathyQt4/cli-account-manager.cpp | 25 - TelepathyQt4/cli-account-manager.h | 50 -- TelepathyQt4/cli-account.cpp | 25 - TelepathyQt4/cli-account.h | 45 - TelepathyQt4/cli-channel.cpp | 931 -------------------- TelepathyQt4/cli-channel.h | 826 ------------------ TelepathyQt4/cli-connection-manager.cpp | 460 ---------- TelepathyQt4/cli-connection-manager.h | 234 ------ TelepathyQt4/cli-connection.cpp | 502 ----------- TelepathyQt4/cli-connection.h | 472 ----------- TelepathyQt4/cli-dbus-proxy.cpp | 93 -- TelepathyQt4/cli-dbus-proxy.h | 190 ----- TelepathyQt4/cli-dbus.cpp | 23 - TelepathyQt4/cli-dbus.h | 49 -- TelepathyQt4/cli-media-session-handler.cpp | 23 - TelepathyQt4/cli-media-session-handler.h | 45 - TelepathyQt4/cli-media-stream-handler.cpp | 23 - TelepathyQt4/cli-media-stream-handler.h | 45 - TelepathyQt4/cli-optional-interface-factory.cpp | 80 -- TelepathyQt4/cli-optional-interface-factory.h | 123 --- TelepathyQt4/cli-pending-channel.cpp | 110 --- TelepathyQt4/cli-pending-channel.h | 137 --- TelepathyQt4/cli-pending-operation.cpp | 190 ----- TelepathyQt4/cli-pending-operation.h | 176 ---- TelepathyQt4/cli-properties.cpp | 23 - TelepathyQt4/cli-properties.h | 46 - TelepathyQt4/cli-simple-pending-operations.h | 111 --- tests/prototype/prototype.cpp | 1 + 75 files changed, 5145 insertions(+), 5113 deletions(-) commit 67a3076f93738141eaa30c15a05837a01386574a Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 23 12:26:03 2008 -0300 Removed comment. TelepathyQt4/cli-connection-manager.cpp | 1 - 1 file changed, 1 deletion(-) commit c8db37aa99430288cf9d93380d38611bd56bb0d9 Author: Andre Moreira Magalhaes (andrunko) Date: Tue Dec 23 11:02:46 2008 -0300 Added missing call to continueIntrospection on CM. Added missing call to continueIntrospection on CM so it doesn't get stuck when no manager file is found. TelepathyQt4/cli-connection-manager.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 83eb8dfcb04716e47f3f404cde3feb1f795bcd17 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 22 16:39:27 2008 -0300 Fixed pinnochio test case. tests/pinocchio/cm-basics.cpp | 53 +++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) commit 8fb2880995ff6e22757abee21a4155b48db526fa Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 22 14:28:25 2008 -0300 Enabled manager file parsing on CM. TelepathyQt4/cli-connection-manager.cpp | 85 +++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 20 deletions(-) commit c6e2c903262a839d9563e08078f0927b99b51c93 Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 22 13:48:15 2008 -0300 Added ManagerFile class. Added ManagerFile class used to read telepathy manager files. TelepathyQt4/Makefile.am | 3 + TelepathyQt4/ManagerFile | 6 + TelepathyQt4/manager-file.cpp | 354 ++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/manager-file.h | 54 +++++++ 4 files changed, 417 insertions(+) commit d865fe372b5e887a7929a56ece909093c814a5ed Author: Andre Moreira Magalhaes (andrunko) Date: Mon Dec 22 13:47:20 2008 -0300 Added KeyFile class. Added KeyFile class, used to read key-pair files such as INI and/or .desktop files. TelepathyQt4/KeyFile | 6 + TelepathyQt4/Makefile.am | 3 + TelepathyQt4/key-file.cpp | 453 ++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/key-file.h | 71 ++++++++ 4 files changed, 533 insertions(+) commit 4d4a5c85446263e765b4c5c6db75aca0b8c5fdd2 Author: Olli Salli Date: Thu Dec 18 18:52:10 2008 +0200 tp-python 0.15.3 sucks too at ReleaseHandles, not just 0.15.0 tests/pinocchio/handles.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit ec827bd69bfe67096e5f6eac80f973f414c35d7a Author: Olli Salli Date: Thu Dec 18 00:58:47 2008 +0200 Add a more complicated test for handles with references going up and down for mixed sets of handles tests/pinocchio/handles.cpp | 93 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) commit dd5566f88bcebff0652ffc19ae05ef7437de2835 Author: Olli Salli Date: Thu Dec 18 00:31:00 2008 +0200 Uh, don't screw up initializing the HoldHandles reply either TelepathyQt4/cli-pending-handles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 26baff8849c21e939c7ecae3cc3b7db80a3ad7ad Author: Olli Salli Date: Wed Dec 17 23:40:58 2008 +0200 Only hold the handleContext mutex as long as you really need it in requestHandles and referenceHandles TelepathyQt4/cli-connection.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) commit 61d4ac2f22321ee72616f11c37500ba5db7d74f0 Author: Olli Salli Date: Wed Dec 17 23:23:47 2008 +0200 Don't emit a per-handle debug message when there is a requestHandles in flight and handles drop references TelepathyQt4/cli-connection.cpp | 2 -- 1 file changed, 2 deletions(-) commit b22deaca37e36d7200f3aeb06c7caa639911e774 Author: Olli Salli Date: Wed Dec 17 23:09:38 2008 +0200 Comment what happens in the basic handles testcase tests/pinocchio/handles.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 6db3a8ab8aa356a7c4d34b0f877c330d02dd5fb3 Author: Olli Salli Date: Wed Dec 17 20:47:47 2008 +0200 Add URL of the KDELibs coding style description to HACKING HACKING | 3 +++ 1 file changed, 3 insertions(+) commit 1658bd551251eb762e4bd42750ad37da949c6927 Author: Olli Salli Date: Wed Dec 17 20:38:28 2008 +0200 Add a HACKING file HACKING | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) commit e0b9c8415e62dbbde2e251db307e248bceb12f2f Author: Olli Salli Date: Tue Dec 16 11:26:19 2008 +0200 Gain some robustness against misbehaving CMs and races in the GetStatus/StatusChanged logic in Connection TelepathyQt4/cli-connection.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) commit 4263992851733da96a6c0c534ba94a736308c93a Author: Olli Salli Date: Wed Dec 17 19:40:18 2008 +0200 Add a rudimentary test for Pending/ReferencedHandles tests/pinocchio/Makefile.am | 6 +- tests/pinocchio/handles.cpp | 240 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 245 insertions(+), 1 deletion(-) commit bc2dc797de15c14768e90fe1ef9c99ff64a4157c Author: Olli Salli Date: Wed Dec 17 19:39:59 2008 +0200 Remove ultra-verbose debug from ReferencedHandles TelepathyQt4/cli-referenced-handles.cpp | 12 ------------ 1 file changed, 12 deletions(-) commit 58b769f9c658cac539a066b37545bd95c46712a3 Author: Olli Salli Date: Wed Dec 17 17:22:25 2008 +0200 Don't screw up the QMetaObject::invokeMethod calls in scheduling handle release sweeps TelepathyQt4/cli-connection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f8b11e47b7c86fa71c5741565b4130bc6746b2bc Author: Olli Salli Date: Tue Dec 16 20:31:20 2008 +0200 Don't screw up the ReferencedHandles constructors and destructors TelepathyQt4/cli-referenced-handles.cpp | 35 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) commit 7c98ec6ea46ff08cc7925b307140ae18f0b68a23 Author: Olli Salli Date: Tue Dec 16 20:30:27 2008 +0200 Actually initialize the RequestHandles QDBusPendingReply in PendingHandles TelepathyQt4/cli-pending-handles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 06bb542ea86b7c255f1eaf379693acf86c62d816 Author: Olli Salli Date: Tue Dec 16 11:26:19 2008 +0200 Gain some robustness against misbehaving CMs and races in the GetStatus/StatusChanged logic in Connection TelepathyQt4/cli-connection.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) commit 4b9617fb3b5d20af95a99b238ac0e77735648d96 Author: Olli Salli Date: Sun Dec 14 21:36:49 2008 +0200 Uh, there can be multiple TP connections behind a single bus connection, so better include the service name in the HandleContext key... TelepathyQt4/cli-connection.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) commit f76782197f43ded3c908e477a89e2be90e3d23f6 Author: Olli Salli Date: Sun Dec 14 17:58:54 2008 +0200 Don't uselesslesly call HoldHandles when all handles are already held and double-finish when the useless call returns TelepathyQt4/cli-connection.cpp | 15 +++++++++++---- TelepathyQt4/cli-pending-handles.cpp | 5 +++++ 2 files changed, 16 insertions(+), 4 deletions(-) commit 02f5447cecfeb6be157d704daa98ff18dbedb3a9 Author: Olli Salli Date: Sat Dec 13 12:35:17 2008 +0200 Use 0 instead of NULL in an assert in RefererencedHandles TelepathyQt4/cli-referenced-handles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 84e87ed82c2bc50920806e7f0e2510081e7d438b Author: Olli Salli Date: Sat Dec 13 12:29:22 2008 +0200 Adapt to Connection no longer being-a ConnectionInterface in handles code TelepathyQt4/cli-connection.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 8114a55220b209ed9141b38d165df3a7309f2db7 Author: Stefan Eilers Date: Fri Dec 12 15:42:07 2008 +0100 Manually rebase 54a2c7ff9a62a0954910edc0541c023ae8b04ef5 Added signals if an account was modified or removed TelepathyQt4/Prototype/AccountManager.cpp | 42 ++++++++++++++++++++++++------- TelepathyQt4/Prototype/AccountManager.h | 15 ++++++++++- tests/prototype/prototype.cpp | 42 ++++++++++++++++++++----------- 3 files changed, 75 insertions(+), 24 deletions(-) commit bae4f19d1ba87cbc5438b0e2d8d474d573950723 Merge: 59f75d8 22bde40 Author: Olli Salli Date: Fri Dec 12 15:46:46 2008 +0200 Merge branch 'master' into handles commit eb7bc050f3ab6558c086285634382b1bcac243bd Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 20:59:10 2008 +0000 Changed ConnectionManager::cmName to name as we are already a CM. TelepathyQt4/cli-connection-manager.cpp | 6 +++--- TelepathyQt4/cli-connection-manager.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) commit 94f1cf74cc90f869accdbcf2eac5015c77108a48 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:59:34 2008 +0000 Changed ProtocolInfo::protocolName to name as we are already a protocol. TelepathyQt4/cli-connection-manager.cpp | 8 ++++---- TelepathyQt4/cli-connection-manager.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) commit dc4541b21ee0064620c065c14b6791a84e7aefc4 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:57:21 2008 +0000 Disable copy on ProtocolInfo and ConnectionManager classes; TelepathyQt4/cli-connection-manager.h | 4 ++++ 1 file changed, 4 insertions(+) commit b692e0540861f30e2b7f336d56559f6548a307d3 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:53:20 2008 +0000 Moved ConnectionManager::Private code outside the class definition. TelepathyQt4/cli-connection-manager.cpp | 153 ++++++++++++++++++-------------- 1 file changed, 86 insertions(+), 67 deletions(-) commit 8e8bf9128d7037e3e146e9cd4404b513553401f1 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:47:20 2008 +0000 Moved cmName from private class on ConnectionManager. Moved cmName from private class on ConnectionManager and made the getter method inline. TelepathyQt4/cli-connection-manager.cpp | 16 +++++----------- TelepathyQt4/cli-connection-manager.h | 4 ++-- 2 files changed, 7 insertions(+), 13 deletions(-) commit ad7cf864087218f6e22d1a017450e2dd5aa55a70 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:42:50 2008 +0000 Changed ConnectionManager class to return a list of protocols. Changed ConnectionManager class to return const reference of the list of supported protocols. This makes the API uniform between ProtocolInfo and ConnectionManager regarding getting supported protocols and parameters. TelepathyQt4/cli-connection-manager.cpp | 38 ++++++++++++++++++++++----------- TelepathyQt4/cli-connection-manager.h | 4 +++- 2 files changed, 28 insertions(+), 14 deletions(-) commit 7080a6488a54d1c0e4bf26f3cd9918364a5a20c0 Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:28:30 2008 +0000 Moved cmName and protocolName from ProtocolInfo private class. Moved cmName and protocolName from ProtocolInfo private class and made the getters methods inline. TelepathyQt4/cli-connection-manager.cpp | 25 ++++--------------------- TelepathyQt4/cli-connection-manager.h | 8 +++++--- 2 files changed, 9 insertions(+), 24 deletions(-) commit 6ceaadb56dcc877288407c963bf83b4ab0a8578c Author: Andre Moreira Magalhaes (andrunko) Date: Thu Dec 11 16:25:29 2008 +0000 Moved ProtocolInfo parameters handling into a separate class. TelepathyQt4/cli-connection-manager.cpp | 138 ++++++++++++++++---------------- TelepathyQt4/cli-connection-manager.h | 122 ++++++++++------------------ 2 files changed, 113 insertions(+), 147 deletions(-) commit 22bde400894ba83dd707b10fe810bcc45b3abb2c Merge: d24517c 01944ea Author: Simon McVittie Date: Thu Dec 11 13:11:59 2008 +0000 Merge branch 'stefan-mediachan' commit d24517ca4187c91dfb278cb260e95819b5de8c47 Merge: c776cc6 5d7c51e Author: Simon McVittie Date: Thu Dec 11 13:11:57 2008 +0000 Merge branch 'proto' commit c776cc6d885131fe2fd311d42e4d598e7f81e6db Author: Simon McVittie Date: Thu Dec 11 12:35:30 2008 +0000 ConnectionManager: document the relationship between isReady() and becomeReady() Also comment that the name "becomeReady()" isn't ideal. TelepathyQt4/cli-connection-manager.h | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 22530254de6ced8ffc419af3e1722a2b7cf733ac Author: Simon McVittie Date: Thu Dec 11 12:34:53 2008 +0000 ConnectionManager: share one PendingReady object between becomeReady callers Since we don't yet support any optional features, there's no point in having multiple PendingReady instances. Note that it's not possible to share the PendingSuccess instances in the "already ready" case. TelepathyQt4/cli-connection-manager.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) commit a25c06f608d5771637ba66b2775481f5a64ce1f5 Author: Simon McVittie Date: Thu Dec 11 12:03:48 2008 +0000 TestCmBasics: use becomeReady() instead of listening for ready() This is advantageous because calling becomeReady() on an already-ready object will just signal finished when the main loop is next re-entered, reducing the number of code paths required if it is not known whether an externally provided ConnectionManager is ready. tests/pinocchio/cm-basics.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 2b77219dfe696a1466bd211f084916cc5ab3983a Author: Simon McVittie Date: Thu Dec 11 12:02:24 2008 +0000 ConnectionManager: add a becomeReady() method returning a pending operation TelepathyQt4/cli-connection-manager.cpp | 33 +++++++++++++++++++++++++++++++++ TelepathyQt4/cli-connection-manager.h | 12 ++++++++++++ 2 files changed, 45 insertions(+) commit 5d7c51e5e18abd0cc2fb8b75eed105a74b78b781 Author: Simon McVittie Date: Wed Dec 10 19:29:08 2008 +0000 AccountManager: work around Mission Control 5 <= 5.0.beta45 type mismatch telepathy-spec says ValidAccounts is an array of object paths, 'ao', but in Mission Control <= 5.0.beta45 it's implemented as an array of strings, 'as'. I've checked in a fix to MC, but until it gets released, we'll need something like this. TelepathyQt4/Prototype/AccountManager.cpp | 37 ++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) commit 04185672276f39c718b23fad68fb988d95bc0f21 Author: Simon McVittie Date: Wed Dec 10 16:56:40 2008 +0000 TpPrototype::AccountManager: add a Properties interface and a helper for ValidAccounts TelepathyQt4/Prototype/AccountManager.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) commit 7442a0b2989ff073fcb3c148bff664b7899ad446 Author: Simon McVittie Date: Tue Dec 9 14:09:43 2008 +0000 cm-basics test: exercise parameter access tests/pinocchio/cm-basics.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit 3dc6a6b2394174aa6908210e9a78909eab12a189 Author: Simon McVittie Date: Mon Dec 8 16:54:34 2008 +0000 ConnectionManager: add client API to get at CM parameters TelepathyQt4/cli-connection-manager.cpp | 166 ++++++++++++++++++++++++++++++-- TelepathyQt4/cli-connection-manager.h | 134 +++++++++++++++++++++++++- 2 files changed, 291 insertions(+), 9 deletions(-) commit b835764a6f73bf42e39c080011e757e2775554f3 Author: Simon McVittie Date: Mon Dec 8 15:32:00 2008 +0000 tests/pinocchio/cm-basics: new test verifying basic operation of ConnectionManager tests/pinocchio/Makefile.am | 4 ++ tests/pinocchio/cm-basics.cpp | 94 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) commit 51c14f0237850846b6c649f9b3d661326a2fa4a1 Author: Simon McVittie Date: Mon Dec 8 15:31:12 2008 +0000 tests: Add an example of a .manager and .service pair tests/Makefile.am | 5 ++++- tests/dbus-1/services/spurious.service | 3 +++ tests/telepathy/managers/spurious.manager | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) commit 17dc6f144900a2deaad0d72d36e26b92132d5502 Author: Simon McVittie Date: Mon Dec 8 15:32:37 2008 +0000 ConnectionManager: add a concept of "is it ready?" TelepathyQt4/cli-connection-manager.cpp | 37 ++++++++++++++++++++------------- TelepathyQt4/cli-connection-manager.h | 17 +++++++++------ 2 files changed, 34 insertions(+), 20 deletions(-) commit 91b73d233394375a4a27dcdd430f9e24b834eb2e Author: Simon McVittie Date: Fri Dec 5 18:11:11 2008 +0000 ConnectionManager: start to implement introspection of protocols/params TelepathyQt4/cli-connection-manager.cpp | 154 +++++++++++++++++++++++++++++++- TelepathyQt4/cli-connection-manager.h | 33 ++++++- 2 files changed, 180 insertions(+), 7 deletions(-) commit 2940afd803125c0d95d93a785039b2c66c73bf29 Author: Simon McVittie Date: Fri Dec 5 15:13:04 2008 +0000 ConnectionManager: add a skeletal ConnectionManager class TelepathyQt4/Makefile.am | 1 + TelepathyQt4/cli-connection-manager.cpp | 74 +++++++++++++++++++++++++++++++++ TelepathyQt4/cli-connection-manager.h | 55 ++++++++++++++++++++++++ 3 files changed, 130 insertions(+) commit a78fd908efe5a0d43d0b304847a51a6d9adc468e Merge: ae2babf ecce047 Author: Simon McVittie Date: Wed Dec 10 17:32:17 2008 +0000 Merge branch 'dbusproxy' commit 01944ea7f612ae448af2ed5328a4d0fce1ac7797 Author: Simon McVittie Date: Wed Dec 10 14:56:42 2008 +0000 TpPrototype::StreamedMediaChannel: arrange headers according to Telepathy coding style - don't include generated headers directly, use the public-API wrappers - use the full name of the header (TelepathyQt4/...) - #include the header for this translation unit first, to verify that it is self-contained - put the least specialized libraries first (Qt then Tp-Qt4 then Prototype) See http://telepathy.freedesktop.org/wiki/Style for rationale for some of this. TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 27 ++++++++++++------------- 1 file changed, 13 insertions(+), 14 deletions(-) commit 1d520221c57779e88b1aef174478639d2d609168 Author: Simon McVittie Date: Wed Dec 10 13:13:26 2008 +0000 Add public header wrapper for StreamEngine, and correctly ship the internal header TelepathyQt4/Prototype/Client/StreamEngine | 6 ++++++ TelepathyQt4/Prototype/Makefile.am | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) commit 58aef7184743dc1ea06f94df09c4f11b482538fa Author: Simon McVittie Date: Wed Dec 10 13:12:47 2008 +0000 Move the Stream Engine XML into TelepathyQt4/Prototype TelepathyQt4/Prototype/Makefile.am | 3 ++- TelepathyQt4/Prototype/Stream_Engine.xml | 44 ++++++++++++++++++++++++++++++++ TelepathyQt4/Prototype/stream-engine.xml | 2 +- spec/Stream_Engine.xml | 44 -------------------------------- 4 files changed, 47 insertions(+), 46 deletions(-) commit d3493128d64b79add7c5bbd8a4279e494491140b Author: Stefan Eilers Date: Tue Dec 9 13:50:37 2008 +0100 Added missing include wrapper to force automake to generate correct Tpo files. TelepathyQt4/Prototype/cli-stream-engine.cpp | 23 +++++++++++++++++++++++ TelepathyQt4/Prototype/cli-stream-engine.h | 27 +++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) commit c7f65ea2cfac5d5f640ca287849d9c11315e4929 Author: Stefan Eilers Date: Tue Dec 9 12:05:29 2008 +0100 Added Stream-Engine to build system. It is currently needed by StreamEngine TelepathyQt4/Prototype/Makefile.am | 10 +++++++- TelepathyQt4/Prototype/all.xml | 1 + TelepathyQt4/Prototype/stream-engine.xml | 9 +++++++ spec/Stream_Engine.xml | 44 ++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) commit 0799556666433f0112b46f52188c6ee1e8108ad7 Author: Stefan Eilers Date: Tue Dec 9 12:06:10 2008 +0100 Added latest patches and fixed compile issues TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 313 +++++++++++++++++++++--- 1 file changed, 278 insertions(+), 35 deletions(-) commit 486e6cd84fed77a3b311ff74b892ed977d8041ac Author: Stefan Eilers Date: Tue Dec 9 10:09:27 2008 +0100 Merged latest changes. TelepathyQt4/Prototype/StreamedMediaChannel.h | 233 ++++++++++++++++++++++++-- 1 file changed, 219 insertions(+), 14 deletions(-) commit ecce047bcd5258cf13b7b5e2db4afcc3e5fa18a7 Author: Simon McVittie Date: Wed Dec 3 18:13:42 2008 +0000 Connection: change from "is a ConnectionInterface" to "has a ConnectionInterface" For the moment, the baseInterface accessor is public rather than protected, because we don't yet have a satisfactory API for Connect (something like telepathy-glib's tp_connection_call_when_ready(), using a PendingOperation). TelepathyQt4/cli-channel.cpp | 2 +- TelepathyQt4/cli-connection.cpp | 36 ++++++++++++++++++++++++++++-------- TelepathyQt4/cli-connection.h | 18 ++++++++++++++++-- tests/pinocchio/chan-basics.cpp | 17 +++++++++-------- tests/pinocchio/conn-basics.cpp | 21 ++++++++++----------- 5 files changed, 64 insertions(+), 30 deletions(-) commit ae2babfad5bd2fe074bbb18ed571ca20d7960ff3 Author: Simon McVittie Date: Wed Dec 10 11:42:33 2008 +0000 PinocchioTest: remove spurious timer stop signal This one wasn't automatically cancelled before starting the actual test, causing tests to appear to pass when they should have failed. tests/pinocchio/lib.cpp | 1 - 1 file changed, 1 deletion(-) commit 184fe2853729f8f28f6c47c93e40dd887e4bff57 Author: Simon McVittie Date: Wed Dec 10 11:40:31 2008 +0000 PinocchioTest: use TelepathyQt4/Constants tests/pinocchio/lib.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 721e51c09532177f238f1e21503b22d312f579c5 Author: Simon McVittie Date: Wed Dec 10 11:39:59 2008 +0000 prototype test: don't use rcc at all, just load the avatar at runtime Also remove -Wno-error=missing-declarations now we don't use rcc. tests/prototype/Makefile.am | 12 +++--------- tests/prototype/images.qrc | 5 ----- tests/prototype/prototype.cpp | 5 ++++- 3 files changed, 7 insertions(+), 15 deletions(-) commit 59f75d81cd4a13cf79e1614d48765e8444a1d710 Author: Olli Salli Date: Wed Dec 10 06:10:10 2008 +0200 First go at a not-so-trivial-anymore implementation of the handle machinery. Beware: this is compile-shipped late night code and will probably need heavy ironing out. TelepathyQt4/cli-connection.cpp | 172 ++++++++++++++++++++++++++++++++++- TelepathyQt4/cli-connection.h | 4 + TelepathyQt4/cli-pending-handles.cpp | 10 +- TelepathyQt4/cli-pending-handles.h | 2 +- 4 files changed, 180 insertions(+), 8 deletions(-) commit c0c3e243140c18787c52bba00f2726e475bed095 Author: Olli Salli Date: Wed Dec 10 03:35:03 2008 +0200 Unref handles in handle-removing functions in ReferencedHandles too TelepathyQt4/cli-referenced-handles.cpp | 43 +++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) commit ed95c45be753bb54f80159657e86e037910f448e Author: Olli Salli Date: Wed Dec 10 03:34:11 2008 +0200 Whoops, refHandle and unrefHandle obviously need to have the handle type as a parameter TelepathyQt4/cli-connection.cpp | 4 ++-- TelepathyQt4/cli-connection.h | 4 ++-- TelepathyQt4/cli-referenced-handles.cpp | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) commit 488e28b56379710142059153f3a20680ddc22829 Author: Olli Salli Date: Wed Dec 10 01:52:27 2008 +0200 Port PendingHandles to PendingOperation TelepathyQt4/cli-pending-handles.cpp | 43 ++++++----------------------- TelepathyQt4/cli-pending-handles.h | 53 ++---------------------------------- 2 files changed, 11 insertions(+), 85 deletions(-) commit d22782267cfc173715404c5edbda7a9825b5e033 Author: Olli Salli Date: Wed Dec 10 01:13:30 2008 +0200 Move PendingHandles to its own files TelepathyQt4/Makefile.am | 3 + TelepathyQt4/cli-connection.cpp | 130 --------------------- TelepathyQt4/cli-connection.h | 152 +------------------------ TelepathyQt4/cli-pending-handles.cpp | 164 ++++++++++++++++++++++++++ TelepathyQt4/cli-pending-handles.h | 215 +++++++++++++++++++++++++++++++++++ 5 files changed, 383 insertions(+), 281 deletions(-) commit d06cbb8c250ddc634d416c074c1bd231ead87121 Author: Olli Salli Date: Sun Nov 16 23:48:50 2008 +0200 Ref/unref handles in ReferencedHandles (still not implemented in Connection because of willingness to sleep) TelepathyQt4/cli-connection.cpp | 10 ++++++ TelepathyQt4/cli-connection.h | 4 +++ TelepathyQt4/cli-referenced-handles.cpp | 57 +++++++++++++++++++++++++++++++-- 3 files changed, 69 insertions(+), 2 deletions(-) commit 1b673e969097fd07d3fa145d92756498cc979343 Author: Olli Salli Date: Sun Nov 16 22:54:32 2008 +0200 Warn when concatenating ReferencedHandles with different connection and/or handle type TelepathyQt4/cli-referenced-handles.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 7bf4dd72491af4935898de9a14b6fd5a33a5487e Author: Olli Salli Date: Sun Nov 16 22:31:57 2008 +0200 Implement non-inline methods in ReferencedHandles TelepathyQt4/cli-referenced-handles.cpp | 115 ++++++++++++++++++++++++++++++++ TelepathyQt4/cli-referenced-handles.h | 8 +-- 2 files changed, 119 insertions(+), 4 deletions(-) commit 2f6e700bfc0adc9a2dd10fe4f8639d3b3b899c90 Author: Olli Salli Date: Sun Nov 16 21:51:14 2008 +0200 Implement inline passthrough methods in ReferencedHandles TelepathyQt4/cli-referenced-handles.h | 157 ++++++++++++++++++++++++++++------ 1 file changed, 131 insertions(+), 26 deletions(-) commit ee11eb806b406a110230b2b1dfd09f9bd30fda1d Author: Olli Salli Date: Wed Nov 12 15:10:07 2008 +0200 Comment explaining the ReferencedHandles API's relation to QList's TelepathyQt4/cli-referenced-handles.h | 7 +++++++ 1 file changed, 7 insertions(+) commit 4644aae51743e2c70dc17e5a7ca788360abd2a6d Author: Olli Salli Date: Wed Nov 12 14:55:15 2008 +0200 Implement ReferencedHandles constructors and the destructor TelepathyQt4/cli-referenced-handles.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit c07b293c2ef705adb2e35d276b569be2d6fb7d58 Author: Olli Salli Date: Wed Nov 12 14:13:38 2008 +0200 ReferencedHandles API sketch TelepathyQt4/Client/ReferencedHandles | 6 + TelepathyQt4/Client/ReferencedHandlesIterator | 6 + TelepathyQt4/Makefile.am | 6 +- TelepathyQt4/cli-connection.cpp | 24 ++-- TelepathyQt4/cli-connection.h | 19 +-- TelepathyQt4/cli-referenced-handles.cpp | 52 +++++++++ TelepathyQt4/cli-referenced-handles.h | 162 ++++++++++++++++++++++++++ 7 files changed, 254 insertions(+), 21 deletions(-) commit a4af8305f5df0be4b674cde39e5933d9e0ae0b42 Author: Olli Salli Date: Tue Nov 11 14:13:08 2008 +0200 Add naive requestHandles and referenceHandles to Connection TelepathyQt4/cli-connection.cpp | 71 ++++++++++++++++++++++++++++++++++------- TelepathyQt4/cli-connection.h | 56 +++++++++++++++++++++++++++++++- 2 files changed, 115 insertions(+), 12 deletions(-) commit de8939cd547364788628d5b0b652a0938b1915c6 Author: Olli Salli Date: Mon Oct 20 17:47:55 2008 +0300 Add stub PendingHandles class to be used for Connection::{request,reference}Handles TelepathyQt4/cli-connection.cpp | 111 ++++++++++++++++++++++++++++++ TelepathyQt4/cli-connection.h | 149 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 260 insertions(+) commit 5c214bf939ef705270221d0cee785c5b3de6c357 Author: Olli Salli Date: Tue Dec 9 17:59:40 2008 +0200 Doxygen won't find QObject::deleteLater, don't even try (and get a warning) TelepathyQt4/cli-pending-operation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2677595b14c12fd4e434e70cc1c89124ec0a69f0 Author: Olli Salli Date: Tue Dec 9 17:30:45 2008 +0200 Move PendingChannel to a separate header file from Connection's TelepathyQt4/Makefile.am | 3 + TelepathyQt4/cli-connection.cpp | 76 ------------------- TelepathyQt4/cli-connection.h | 85 ++-------------------- TelepathyQt4/cli-pending-channel.cpp | 110 ++++++++++++++++++++++++++++ TelepathyQt4/cli-pending-channel.h | 137 +++++++++++++++++++++++++++++++++++ 5 files changed, 257 insertions(+), 154 deletions(-) commit b382f3b35b52bc3f61f5924ba9561ab1f489eb19 Merge: c8d6dfe edd0a6b Author: Simon McVittie Date: Tue Dec 9 15:53:42 2008 +0000 Merge branch 'misc' commit c8d6dfeef140996ff87de7c647114f67c65dc538 Merge: 9506e04 dbf5e86 Author: Simon McVittie Date: Tue Dec 9 15:49:19 2008 +0000 Merge branch 'pending' commit 9506e04ca1d8454721476e37a3143f6d0fab4920 Merge: f72607d 22a35fa Author: Simon McVittie Date: Tue Dec 9 15:43:46 2008 +0000 Merge branch 'trivia' commit 22a35fad259393602973ca6df99e389ce1404705 Author: Simon McVittie Date: Tue Dec 9 15:39:42 2008 +0000 Actually remove "using namespace" directive tests/pinocchio/conn-basics.cpp | 2 -- 1 file changed, 2 deletions(-) commit 68d3fa9e83b5950d84b98a3c15929e7833d38d74 Author: Simon McVittie Date: Tue Dec 9 15:24:58 2008 +0000 Don't use "using namespace", explicitly use individual classes instead tests/pinocchio/conn-basics.cpp | 17 +++++++++++------ tests/pinocchio/lib.cpp | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) commit f72607dc6453b2b25583b698139f8af1e35bf1e3 Merge: 78f663c e541b05 Author: Simon McVittie Date: Tue Dec 9 14:31:45 2008 +0000 Merge branch 'trivia' commit 78f663c02f60f7e1391d856169a09e01a2e11a91 Merge: f23b0fd fb938ed Author: Olli Salli Date: Tue Dec 9 16:01:52 2008 +0200 Merge branch 'master' of dhansak:/srv/git.collabora.co.uk/git/telepathy-qt4 commit f23b0fd40ae67c7d256dfcb7ce54521ab4b10808 Author: Olli Salli Date: Tue Dec 9 15:55:45 2008 +0200 Compile the prototype test ignoring missing declarations warnings (thanks Qt for your nice and clean resource system) tests/prototype/Makefile.am | 11 ++++++----- tests/prototype/prototype.cpp | 2 -- 2 files changed, 6 insertions(+), 7 deletions(-) commit edd0a6b7173795245cc0d854e1881176e2d2d617 Author: Simon McVittie Date: Thu Dec 4 16:47:04 2008 +0000 configure.ac: look for Python and dbus-python For the moment we're using the well-tested dbus.mainloop.glib (part of dbus-python), rather than dbus.mainloop.qt (part of PyQt4). configure.ac | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit dbf5e8616301d985acf4a55b33fcca5a7a6935e1 Author: Simon McVittie Date: Mon Dec 8 15:35:49 2008 +0000 PendingOperation: Separate PendingVoidMethodCall into a new header, and add PendingSuccess and PendingFailure Library-user code will usually only need , whereas library extension implementors can use PendingVoidMethodCall, PendingSuccess and PendingFailure. TelepathyQt4/Client/PendingFailure | 8 ++ TelepathyQt4/Client/PendingSuccess | 7 ++ TelepathyQt4/Client/PendingVoidMethodCall | 8 ++ TelepathyQt4/Makefile.am | 7 +- TelepathyQt4/cli-connection.cpp | 2 + TelepathyQt4/cli-pending-operation.cpp | 2 + TelepathyQt4/cli-pending-operation.h | 32 -------- TelepathyQt4/cli-simple-pending-operations.h | 111 +++++++++++++++++++++++++++ 8 files changed, 144 insertions(+), 33 deletions(-) commit 1d4607a6f454665ad7efd40d667d90fee7150de3 Author: Simon McVittie Date: Thu Dec 4 14:54:54 2008 +0000 TelepathyQt4/Constants: improve spec compliance The spec now requires that the account-specific part of a connection's bus name and object path is a single element. TelepathyQt4/constants.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 1038c06e0270c0ba9935bedf54bf8a7c9187284a Author: Olli Salli Date: Tue Dec 9 15:17:13 2008 +0200 Find rcc even if it isn't in $PATH configure.ac | 11 +++++++++++ tests/prototype/Makefile.am | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) commit 0cb6348e0994561d552f956d2e9031d3fb3c9d05 Author: Simon McVittie Date: Wed Dec 3 17:59:37 2008 +0000 doxygen.cfg.in: don't try to use PROJECT_NUMBER Using $(shell git ...) here doesn't actually work. doxygen.cfg.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e8a083543d2f66e45530d7c82a6084db3ca6ecb5 Author: Simon McVittie Date: Wed Dec 3 17:58:57 2008 +0000 Tests: promote expectSuccessfulCall into superclass tests/pinocchio/chan-basics.cpp | 16 ---------------- tests/pinocchio/conn-basics.cpp | 28 ---------------------------- tests/pinocchio/lib.cpp | 27 +++++++++++++++++++++++++++ tests/pinocchio/lib.h | 5 +++++ 4 files changed, 32 insertions(+), 44 deletions(-) commit fb938ed8849b0573e55aeed4dc842f2cfbeba7ea Merge: d1523af 20aaac2 Author: George Goldberg Date: Wed Dec 3 17:48:03 2008 +0000 Merge branch 'misc' commit e541b0530ad8a8dd0247fc4ff599662bf027aeed Author: Simon McVittie Date: Wed Dec 3 15:55:39 2008 +0000 PendingOperation: use the telepathy-qt4 debug system TelepathyQt4/cli-pending-operation.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit d1523af721dbcceff1dc4b6dbbdcc2bc3ec00e73 Merge: 3351f23 64f1c2b Author: Simon McVittie Date: Wed Dec 3 15:46:54 2008 +0000 Merge branch 'pending' Conflicts: TelepathyQt4/Makefile.am commit 64f1c2b40e389ad9b2f182142bf96beb4206ef7d Author: Simon McVittie Date: Wed Dec 3 15:43:10 2008 +0000 Don't connect to a slot that no longer exists TelepathyQt4/cli-pending-operation.cpp | 2 -- 1 file changed, 2 deletions(-) commit 579ccb705b8df9075045efaf719376171ecdaee0 Author: Simon McVittie Date: Wed Dec 3 15:20:48 2008 +0000 PendingOperation: don't watch for deletion of parent, just warn in destructor if we're not finished yet TelepathyQt4/cli-pending-operation.cpp | 16 ++++++---------- TelepathyQt4/cli-pending-operation.h | 1 - 2 files changed, 6 insertions(+), 11 deletions(-) commit 6f4c8aa31b2445716cd95441ace86acd17bf3858 Author: Simon McVittie Date: Wed Dec 3 15:20:20 2008 +0000 PendingOperation: warn more verbosely when finishing twice TelepathyQt4/cli-pending-operation.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) commit 20aaac217f95d558767378a25fc5fc44bd747263 Author: George Goldberg Date: Wed Dec 3 14:48:37 2008 +0000 Make sure that everything in the /doc/ directory is ignored by git. .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3351f2310ef00abd7f64a772bcab74b896e03972 Merge: d9c0ef1 fafe45e Author: Simon McVittie Date: Wed Dec 3 13:23:26 2008 +0000 Merge branch 'buildsys' commit d9c0ef1ab8a4968d04c3584c76126354d4959ff9 Merge: 1d2d4b1 da6000c Author: Simon McVittie Date: Wed Dec 3 13:18:04 2008 +0000 Merge branch 'dbusproxy' commit fafe45ee03427a9af87849af0e61c3709390bd71 Author: Simon McVittie Date: Wed Dec 3 13:10:21 2008 +0000 upload-branch-docs: automatically work out what the branch name is git-which-branch.sh was taken from telepathy-spec. Makefile.am | 2 +- tools/Makefile.am | 1 + tools/git-which-branch.sh | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) commit 388cfd3d1f84451bd7707e9d0d504373655a4660 Author: Simon McVittie Date: Wed Dec 3 12:35:23 2008 +0000 Don't use TP_QT4_LIBS or PROTO_LIBS, they interfere with dependency tracking Autoconf substitutions in *_LDADD do not generate Makefile dependencies, so using $(TP_QT4_LIBS) meant that tests/examples were not automatically rebuilt when telepathy-qt4 changed. Also simplify makefiles by using LDADD. configure.ac | 9 +++------ examples/extensions/Makefile.am | 6 +++++- tests/dbus/Makefile.am | 7 ++++++- tests/pinocchio/Makefile.am | 8 +++----- tests/prototype/Makefile.am | 7 +++---- 5 files changed, 20 insertions(+), 17 deletions(-) commit 265c36d6566640a88ae9f985b6d637fe5c775af8 Author: Simon McVittie Date: Wed Dec 3 12:15:03 2008 +0000 cli-connection: stop emitting finished(), the superclass does that now TelepathyQt4/cli-connection.cpp | 3 --- 1 file changed, 3 deletions(-) commit 5bbf6ae4e183200ad2cf68633e77c66c5e69d8ba Author: Simon McVittie Date: Wed Dec 3 11:28:14 2008 +0000 pinocchio/chan-basics: exercise isValid() as well as isError() tests/pinocchio/chan-basics.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit ab3c694976178963c7fdc8eb6a4e294a8cf1681c Author: Simon McVittie Date: Wed Dec 3 11:27:54 2008 +0000 PendingOperation: adjust API as per Olli's review * parent can be any QObject, although it will often be a DBusProxy * replace setError() with setFinishedWithError() (which is called instead of setFinished() rather than in addition) * delay emission of finished() to guarantee that it takes at least one main loop invocation in all cases * warn if the parent is destroyed before the pending operation finishes TelepathyQt4/cli-connection.cpp | 6 +-- TelepathyQt4/cli-pending-operation.cpp | 83 +++++++++++++++++++++------------- TelepathyQt4/cli-pending-operation.h | 63 +++++++++++++++++++------- 3 files changed, 101 insertions(+), 51 deletions(-) commit 1b8252463dcc6422d553927ea15f17a74b6f491a Author: Simon McVittie Date: Tue Dec 2 17:12:28 2008 +0000 PendingOperation: remove bool from 'finished' signal As per review from gberg. It's equally easy for the recipient to use op->isValid() or !op->isError(), so no need for an extra parameter TelepathyQt4/cli-connection.cpp | 2 +- TelepathyQt4/cli-pending-operation.cpp | 4 ++-- TelepathyQt4/cli-pending-operation.h | 6 +----- tests/pinocchio/chan-basics.cpp | 8 ++++---- tests/pinocchio/conn-basics.cpp | 10 +++++----- 5 files changed, 13 insertions(+), 17 deletions(-) commit da6000cbccd2b1cdea4cc2db08309e29a995503a Author: Simon McVittie Date: Tue Dec 2 17:02:15 2008 +0000 DBusProxy: rethink API to not use QDBusAbstractInterface, and add stub StatefulDBusProxy, StatelessDBusProxy subclasses TelepathyQt4/cli-channel.cpp | 6 +- TelepathyQt4/cli-channel.h | 2 +- TelepathyQt4/cli-dbus-proxy.cpp | 43 ++++++++++---- TelepathyQt4/cli-dbus-proxy.h | 127 +++++++++++++++++++++++++++++++++++----- 4 files changed, 148 insertions(+), 30 deletions(-) commit 25940cb6199cfefea1d61961754126fa27583cd0 Author: Simon McVittie Date: Tue Dec 2 14:03:41 2008 +0000 DBusProxy: actually use moc TelepathyQt4/Makefile.am | 3 ++- TelepathyQt4/cli-dbus-proxy.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) commit 2710b38ac84cc8aa0496f2885e2eeb3b0f268455 Merge: 5c57942 b15adbb Author: Simon McVittie Date: Tue Dec 2 13:29:02 2008 +0000 Merge commit 'gberg/create-dbusproxy-baseclass' into dbusproxy commit 1d2d4b1c4369286d10873e87a291e63241cae170 Author: Simon McVittie Date: Tue Dec 2 11:51:15 2008 +0000 Add test code from the prototype library This test isn't run automatically, since it requires a special VM environment. .gitignore | 1 + configure.ac | 1 + tests/Makefile.am | 3 +- tests/prototype/Makefile.am | 69 +++ tests/prototype/avatar.png | Bin 0 -> 7657 bytes tests/prototype/images.qrc | 5 + tests/prototype/prototype.cpp | 1335 +++++++++++++++++++++++++++++++++++++++++ tests/prototype/prototype.h | 145 +++++ 8 files changed, 1558 insertions(+), 1 deletion(-) commit 771cf38162a7564085adba4ff40c58a1a5fc8786 Author: Simon McVittie Date: Tue Dec 2 11:37:09 2008 +0000 Prototype: Incorporate blocking ('deny' list) development from Stefan TelepathyQt4/Prototype/ContactManager.cpp | 265 +++++++++++++++++++++++------- TelepathyQt4/Prototype/ContactManager.h | 62 ++++++- 2 files changed, 259 insertions(+), 68 deletions(-) commit 0b802286897d7556a93aed0038daebcee7730b31 Author: Simon McVittie Date: Tue Dec 2 11:35:37 2008 +0000 Prototype: hook up code generation for ChannelHandlerInterface properly TelepathyQt4/Prototype/Makefile.am | 6 ++++++ TelepathyQt4/Prototype/cli-channel-handler.cpp | 23 ++++++++++++++++++++++ TelepathyQt4/Prototype/cli-channel-handler.h | 27 ++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) commit 53eae4a0e4e8f8f125b3b62de08957ca066c6a05 Author: Simon McVittie Date: Tue Dec 2 11:09:26 2008 +0000 configure.ac: define PROTO_CFLAGS and PROTO_LIBS configure.ac | 6 ++++++ 1 file changed, 6 insertions(+) commit 8ce4c1d468dcdb952e4501126c081d17922e3e0e Author: Simon McVittie Date: Tue Dec 2 11:09:05 2008 +0000 configure.ac: check for QtGui, but don't fail if it's not present The tests for the prototype library use it, but it's not required for any of the library code. configure.ac | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit b6e0497015c21430750ada0df63fa4a84fa9800c Author: Simon McVittie Date: Tue Dec 2 10:58:10 2008 +0000 Prototype: generate moc files TelepathyQt4/Prototype/Account.cpp | 2 ++ TelepathyQt4/Prototype/AccountManager.cpp | 3 ++- TelepathyQt4/Prototype/AvatarManager.cpp | 2 +- TelepathyQt4/Prototype/CapabilitiesManager.cpp | 2 +- TelepathyQt4/Prototype/ChatChannel.cpp | 2 ++ TelepathyQt4/Prototype/Connection.cpp | 2 ++ TelepathyQt4/Prototype/ConnectionFacade.cpp | 1 + TelepathyQt4/Prototype/Contact.cpp | 2 ++ TelepathyQt4/Prototype/ContactManager.cpp | 2 ++ TelepathyQt4/Prototype/DBusInterface.cpp | 2 ++ TelepathyQt4/Prototype/Makefile.am | 14 +++++++++++++- TelepathyQt4/Prototype/PresenceManager.cpp | 2 +- TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 2 +- 13 files changed, 32 insertions(+), 6 deletions(-) commit 86e39b61859cd3a8ee2854a625c6594d1182cae8 Author: Simon McVittie Date: Tue Dec 2 10:57:38 2008 +0000 Prototype: link library against main tp-qt4 library TelepathyQt4/Prototype/Makefile.am | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 6e054b8ef796fd6deb6be235888a2f2eac6d0f85 Author: Simon McVittie Date: Tue Dec 2 10:52:46 2008 +0000 TelepathyQt4: fix code generation scaffolding for Account, AccountManager TelepathyQt4/Client/AccountManager | 11 ++------ TelepathyQt4/Makefile.am | 6 +++++ TelepathyQt4/cli-account-manager.cpp | 25 ++++++++++++++++++ TelepathyQt4/cli-account-manager.h | 50 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/cli-account.cpp | 25 ++++++++++++++++++ TelepathyQt4/cli-account.h | 45 ++++++++++++++++++++++++++++++++ 6 files changed, 153 insertions(+), 9 deletions(-) commit 349a5105efa5300ff37901085b4206bd627a3b09 Author: Simon McVittie Date: Mon Dec 1 16:59:38 2008 +0000 Port PendingChannel to be a PendingOperation TelepathyQt4/cli-connection.cpp | 39 +++++-------------------------- TelepathyQt4/cli-connection.h | 51 +---------------------------------------- tests/pinocchio/chan-basics.cpp | 43 +++++++++++++++++----------------- 3 files changed, 29 insertions(+), 104 deletions(-) commit 90baf31a7abfb5414867909470612c4b99f97299 Author: Simon McVittie Date: Mon Dec 1 16:58:43 2008 +0000 PendingOperation: actually implement isFinished() TelepathyQt4/cli-pending-operation.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 5c579426d47515f5e6c104aa44bd7438de0951b1 Author: Simon McVittie Date: Mon Dec 1 14:43:10 2008 +0000 .gitignore: ignore directories called _tmp .gitignore | 1 + 1 file changed, 1 insertion(+) commit d6ecd63962933be97e8aa7f9409d35fdb5941603 Author: Simon McVittie Date: Mon Dec 1 16:09:17 2008 +0000 TestChanBasics: exercise PendingChannel tests/pinocchio/chan-basics.cpp | 101 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) commit 35db2eabce40cf21b9c15cc0b8886fe8319c6515 Author: Simon McVittie Date: Mon Dec 1 16:08:52 2008 +0000 PendingOperation: make the API a bit more like PendingChannel TelepathyQt4/cli-pending-operation.cpp | 4 +- TelepathyQt4/cli-pending-operation.h | 75 +++++++++++++++++++++------------- tests/pinocchio/conn-basics.cpp | 6 +-- 3 files changed, 51 insertions(+), 34 deletions(-) commit ba6f7c153c97a8485e7505b4a5aee90fde965952 Author: Simon McVittie Date: Mon Dec 1 14:41:55 2008 +0000 Connection: Add a PendingOperation-based wrapper for Disconnect() TelepathyQt4/cli-connection.cpp | 15 +++++++++++++++ TelepathyQt4/cli-connection.h | 12 ++++++++++++ tests/pinocchio/conn-basics.cpp | 32 +++++++++++++++++++++----------- 3 files changed, 48 insertions(+), 11 deletions(-) commit 692703c689877b4d394780a2396a93bf4a0ff661 Author: Simon McVittie Date: Mon Dec 1 14:33:04 2008 +0000 PendingOperation: add an abstract base class for pending operations, and a trivial subclass TelepathyQt4/Client/PendingOperation | 6 ++ TelepathyQt4/Makefile.am | 6 +- TelepathyQt4/cli-pending-operation.cpp | 158 +++++++++++++++++++++++++++++++ TelepathyQt4/cli-pending-operation.h | 165 +++++++++++++++++++++++++++++++++ 4 files changed, 334 insertions(+), 1 deletion(-) commit 78485259a3cc54d7484838d613f080ffff6d8526 Author: Simon McVittie Date: Fri Nov 28 15:03:16 2008 +0000 Put saved contact lists in a subdirectory, and reset after each run tests/pinocchio/Makefile.am | 4 ++-- tests/pinocchio/lib.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) commit 0727e1e3f1be74c8fba56adcd5c97b12d269ad3a Author: Simon McVittie Date: Fri Nov 28 14:53:32 2008 +0000 Distribute lib.h and accounts/empty/contacts.xml tests/pinocchio/Makefile.am | 4 ++++ 1 file changed, 4 insertions(+) commit e3526189c08ea4b970d545f6656ed0aa9b53de5c Author: Simon McVittie Date: Fri Nov 28 14:07:27 2008 +0000 Add a basic test for Channel tests/pinocchio/Makefile.am | 5 + tests/pinocchio/chan-basics.cpp | 242 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 247 insertions(+) commit c31027578d8d1c12f01aa8bf23202fdeb3ea105f Author: Simon McVittie Date: Fri Nov 28 12:49:14 2008 +0000 conn-basics: fill in some more test coverage * already being connected * getting optional interfaces * getting status reason * state transition to Dead by user request tests/pinocchio/conn-basics.cpp | 136 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 2 deletions(-) commit f8750ed6ad9debbb88185603b35b4f6689d26eeb Author: Simon McVittie Date: Fri Nov 28 12:47:22 2008 +0000 tests/pinocchio: Include lib.cpp in sources rather than making a library This turns out to make strange lcov workarounds unnecessary. tests/pinocchio/Makefile.am | 14 ++++---------- tools/lcov.am | 3 +-- 2 files changed, 5 insertions(+), 12 deletions(-) commit 2e32467f10e8f79b7dd30c9bbef9a67427432bd3 Author: Simon McVittie Date: Fri Nov 28 11:57:53 2008 +0000 lcov.am: remove the right file to magically make lcov work The fact that it compiles into .libs makes lcov very confused, apparently. tools/lcov.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 589dd9ca3f9634fc3767d66028bd3fc039644924 Author: Simon McVittie Date: Fri Nov 28 11:50:06 2008 +0000 tests/dbus: remove generated files in clean and distclean tests/dbus/Makefile.am | 6 ++++++ 1 file changed, 6 insertions(+) commit 79f0fa797ae25bcb77bd2c89f335a4c6217b9a46 Author: Simon McVittie Date: Fri Nov 28 11:49:37 2008 +0000 tests/pinocchio: remove generated files in clean/distclean tests/pinocchio/Makefile.am | 6 ++++++ 1 file changed, 6 insertions(+) commit e20450cec5c22485c4f8596f5323bc0acd7e1580 Author: Simon McVittie Date: Fri Nov 28 11:49:21 2008 +0000 conn-basics: add a test for the alternative constructor that specifies a bus tests/pinocchio/conn-basics.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) commit 59a68bbacb63ce64d4c9489aca04230934da7ab9 Author: Simon McVittie Date: Fri Nov 28 11:48:41 2008 +0000 conn-basics: Don't assert that Pinocchio supports SimplePresence (it doesn't). Also call Disconnect() so the test is idempotent. tests/pinocchio/conn-basics.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 829fc73d67cf67707a50c975f2164c626374ffe4 Author: Simon McVittie Date: Thu Nov 27 18:29:39 2008 +0000 Improve test coverage a bit by looking at status and interfaces tests/pinocchio/conn-basics.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 6f43e3eead8e34f27718eff900c5588038e95408 Author: Simon McVittie Date: Thu Nov 27 18:18:37 2008 +0000 Hook up code coverage analysis and other useful stuff from telepathy-glib .gitignore | 5 +++++ Makefile.am | 22 ++++++++++++++++------ configure.ac | 1 + tools/Makefile.am | 2 ++ tools/lcov.am | 21 +++++++++++++++++++++ tools/telepathy.am | 27 +++++++++++++++++++++++++++ 6 files changed, 72 insertions(+), 6 deletions(-) commit e85d68a12e3ce2a7db82b19b8ace6579d4253faf Author: Simon McVittie Date: Thu Nov 27 17:43:32 2008 +0000 Connection::onStatusChanged: fake transition via Connecting if necessary telepathy-pinocchio 0.3.1 makes a non-spec-compliant state change from Disconnected straight to Connected; the spec, and telepathy-glib, do not allow this, and it causes assertion failures in changeReadiness(). Recover from the non-compliant state change by pretending the state changed from Disconnected to Connecting, then to Connected, with the same reason code each time (this is the same thing that tp-glib does on the service side). TelepathyQt4/cli-connection.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 3052043536942348c5542e0235d0969d5111c917 Author: Simon McVittie Date: Thu Nov 27 17:39:15 2008 +0000 tests/pinocchio/conn-basics.cpp: new test, exercising Connect() tests/pinocchio/Makefile.am | 12 ++- tests/pinocchio/conn-basics.cpp | 209 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 220 insertions(+), 1 deletion(-) commit 18cba80f6e69164db1d98e11231415d7281dc2e6 Author: Simon McVittie Date: Thu Nov 27 17:38:38 2008 +0000 PinocchioTest: add more test preparation stuff tests/pinocchio/lib.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/pinocchio/lib.h | 22 +++++++++++++- 2 files changed, 97 insertions(+), 1 deletion(-) commit d0ae26cf5b6f1ae63c28c4c5f0bbe86f9c94ba39 Author: Simon McVittie Date: Thu Nov 27 15:07:45 2008 +0000 Add a pinocchio account with an empty roster tests/pinocchio/accounts/empty/contacts.xml | 2 ++ 1 file changed, 2 insertions(+) commit 0be7cc65760a2df4266bce5c03a3935fcfc3699f Author: Simon McVittie Date: Thu Nov 27 13:50:52 2008 +0000 tests/pinocchio: add a PinocchioTest base class tests/pinocchio/Makefile.am | 17 +++++++++++---- tests/pinocchio/do-nothing.cpp | 47 +++++++----------------------------------- tests/pinocchio/lib.cpp | 46 +++++++++++++++++++++++++++++++++++++++++ tests/pinocchio/lib.h | 28 +++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 44 deletions(-) commit 86b68e29e951817486d5abfa463b383beb9a946d Author: Simon McVittie Date: Thu Nov 27 12:39:26 2008 +0000 tests/pinocchio/do-nothing.cpp: rework to use QtTest tests/pinocchio/Makefile.am | 17 +++++-- tests/pinocchio/do-nothing.cpp | 102 ++++++++++++++++++++++++++++++----------- 2 files changed, 89 insertions(+), 30 deletions(-) commit 5afa533882ced4940652b8d883e14d00ddb4ace7 Author: Simon McVittie Date: Thu Nov 27 12:08:12 2008 +0000 Check for QtTest and port tests/dbus/do-nothing.cpp to QtTest configure.ac | 6 +++++ tests/dbus/Makefile.am | 17 +++++++++--- tests/dbus/do-nothing.cpp | 66 +++++++++++++++++++++++++++++++++++++++------ tests/pinocchio/Makefile.am | 3 ++- 4 files changed, 80 insertions(+), 12 deletions(-) commit 0f8003614f1c2c3de3ddd548c34a65c96c19916b Author: Simon McVittie Date: Thu Nov 27 11:34:20 2008 +0000 Check for pinocchio-ctl as well as pinocchio configure.ac | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit a1e436340e3a3d565b8df924efb51cfb0b40a941 Author: Simon McVittie Date: Thu Nov 27 11:34:09 2008 +0000 Use TP_QT4_CFLAGS so it's the same as if we got them from pkg-config configure.ac | 8 ++++---- examples/extensions/Makefile.am | 6 +++--- tests/dbus/Makefile.am | 2 +- tests/pinocchio/Makefile.am | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) commit c828749e9c117e4e3f1f75cd0f98d4c84bd11c8d Author: Simon McVittie Date: Wed Nov 26 16:10:37 2008 +0000 Add some more test infrastructure (no real tests yet) .gitignore | 2 ++ configure.ac | 6 ++++++ tests/Makefile.am | 6 +++++- tests/README | 13 ++++++++++++ tests/dbus/Makefile.am | 25 ++++++++++++++++++++++ tests/dbus/do-nothing.cpp | 19 +++++++++++++++++ tests/pinocchio/Makefile.am | 30 ++++++++++++++++++++++++++ tests/pinocchio/do-nothing.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 148 insertions(+), 1 deletion(-) commit 96ecc3da503dd3b2e5c4e040390ac3672c7ffed7 Author: Simon McVittie Date: Wed Nov 26 15:33:24 2008 +0000 .gitignore: add doxygen.cfg, which is now generated by configure .gitignore | 1 + 1 file changed, 1 insertion(+) commit a9aa6da8d8dfb2b65a2996859e76eab6dab60d6a Author: Simon McVittie Date: Wed Nov 26 15:32:50 2008 +0000 spec/Makefile.am: fix out-of-tree build by using GNU-specific $(wildcard) operator spec/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8117bec028653abaa5b272476962725663f08e70 Author: Simon McVittie Date: Wed Nov 26 15:29:54 2008 +0000 Configure doxygen to be distcheck-friendly Thanks to the maintainers of libxcb, for having a doxygen.cfg supporting out of tree builds! configure.ac | 27 +- doxygen.cfg | 1417 -------------------------------------------------------- doxygen.cfg.in | 1417 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1431 insertions(+), 1430 deletions(-) commit 7a46fc4ce7afba8e252a34a9f5618873d8dc17f8 Author: Simon McVittie Date: Wed Nov 26 14:35:39 2008 +0000 configure.ac: make our minds up whether it's _CFLAGS or _CXXFLAGS This broke `make distcheck`. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 216ac342b9e15f743e6377cf9cc8240fad3890e3 Author: Simon McVittie Date: Wed Nov 26 14:35:08 2008 +0000 Prototype: distribute and install TelepathyQt4/Prototype/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 096882b73c252ec5236d791a1bbb594812d3fe34 Author: Simon McVittie Date: Wed Nov 26 14:19:49 2008 +0000 Prototype: distribute/install some missing files, partially fixing `make distcheck` TelepathyQt4/Prototype/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit e8ab4b829e965a6298e4f6de9e99413874746da4 Author: Simon McVittie Date: Wed Nov 26 14:14:19 2008 +0000 Distribute , partially fixing `make distcheck` TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 69abf631df39849a6e35cc67fa6422f97925acd3 Author: Simon McVittie Date: Wed Nov 26 14:13:33 2008 +0000 xincludator.py: correctly interpret href as relative to the source document This assumes Unix filenames, but so did the previous code. This fixes out-of-tree builds, as used by `make distcheck`. tools/xincludator.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit 24b15453a5936bd758dba5c4bde23b1a50fc2119 Author: Simon McVittie Date: Wed Nov 26 14:12:02 2008 +0000 spec: distribute all XML files, partially fixing `make distcheck` spec/Makefile.am | 43 +------------------------------------------ 1 file changed, 1 insertion(+), 42 deletions(-) commit 461107e417062887d3ca0076e2b37135cc0dcab1 Author: Simon McVittie Date: Wed Nov 26 14:11:44 2008 +0000 Distribute dbus-daemon.xml, partially fixing `make distcheck` TelepathyQt4/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 3ee7d1fd6270257e215d11847b7bee37bb137b7f Author: Simon McVittie Date: Wed Nov 26 14:11:08 2008 +0000 .gitignore: ignore .loT (libtool temporary) files .gitignore | 1 + 1 file changed, 1 insertion(+) commit d4b1e265ae666b98008f65344f29a46a3ab63e14 Author: Simon McVittie Date: Wed Nov 26 14:10:48 2008 +0000 .gitignore: ignore tarballs and the directory made by distcheck .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit a9d531c8a36dc0c4e321a0b1636666fcd4ff79b6 Author: Simon McVittie Date: Wed Nov 26 12:51:58 2008 +0000 Add an empty 'tests' directory We need some regression tests, and if I add a directory, maybe people will feel guilty enough to populate it :-) Makefile.am | 2 +- configure.ac | 1 + tests/Makefile.am | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) commit d8c8601cc8c3055e0bf8d20851e32ad0d62a832e Author: Simon McVittie Date: Wed Nov 26 12:50:49 2008 +0000 tools: add with-session-bus.sh (copied from telepathy-glib) tools/Makefile.am | 1 + tools/with-session-bus.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) commit bdbd4fa782104e8d56140337d49a8fb594979ef2 Author: Simon McVittie Date: Wed Nov 26 12:42:00 2008 +0000 .gitignore: anchor patterns at / (project root) where appropriate, sort with LC_ALL=C, add FIXME.out .gitignore | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) commit 53256321d3881b13e904521e56b919e1910a2a0f Merge: 30e5c81 ffc10a2 Author: Simon McVittie Date: Wed Nov 26 12:28:23 2008 +0000 Merge branch 'proto' commit ffc10a2678a60e47b3cba83abcce08c1f3125f62 Author: Simon McVittie Date: Thu Nov 20 17:48:55 2008 +0000 Import library code for a prototype Qt4 Telepathy convenience library This will be merged into the main telepathy-qt4 code over time; the goal is for the Prototype directory to end up either empty, or populated with trivial wrapper classes. TelepathyQt4/Makefile.am | 21 +- TelepathyQt4/Prototype/Account.cpp | 274 +++++++ TelepathyQt4/Prototype/Account.h | 172 +++++ TelepathyQt4/Prototype/AccountManager.cpp | 310 ++++++++ TelepathyQt4/Prototype/AccountManager.h | 141 ++++ TelepathyQt4/Prototype/AvatarManager.cpp | 320 ++++++++ TelepathyQt4/Prototype/AvatarManager.h | 174 +++++ TelepathyQt4/Prototype/CapabilitiesManager.cpp | 321 ++++++++ TelepathyQt4/Prototype/CapabilitiesManager.h | 129 ++++ TelepathyQt4/Prototype/ChatChannel.cpp | 223 ++++++ TelepathyQt4/Prototype/ChatChannel.h | 119 +++ TelepathyQt4/Prototype/Client/ChannelHandler | 6 + TelepathyQt4/Prototype/Connection.cpp | 434 +++++++++++ TelepathyQt4/Prototype/Connection.h | 256 +++++++ TelepathyQt4/Prototype/ConnectionFacade.cpp | 265 +++++++ TelepathyQt4/Prototype/ConnectionFacade.h | 137 ++++ TelepathyQt4/Prototype/Constants | 6 + TelepathyQt4/Prototype/Contact.cpp | 189 +++++ TelepathyQt4/Prototype/Contact.h | 247 ++++++ TelepathyQt4/Prototype/ContactManager.cpp | 965 ++++++++++++++++++++++++ TelepathyQt4/Prototype/ContactManager.h | 304 ++++++++ TelepathyQt4/Prototype/DBusInterface.cpp | 47 ++ TelepathyQt4/Prototype/DBusInterface.h | 51 ++ TelepathyQt4/Prototype/Makefile.am | 161 ++++ TelepathyQt4/Prototype/PresenceManager.cpp | 620 +++++++++++++++ TelepathyQt4/Prototype/PresenceManager.h | 151 ++++ TelepathyQt4/Prototype/StreamedMediaChannel.cpp | 578 ++++++++++++++ TelepathyQt4/Prototype/StreamedMediaChannel.h | 229 ++++++ TelepathyQt4/Prototype/TpQt4Prototype.pc.in | 11 + TelepathyQt4/Prototype/Types | 6 + TelepathyQt4/Prototype/all.xml | 9 + TelepathyQt4/Prototype/channel-handler.xml | 9 + TelepathyQt4/Prototype/constants.h | 27 + TelepathyQt4/Prototype/types.cpp | 22 + TelepathyQt4/Prototype/types.h | 27 + configure.ac | 2 + 36 files changed, 6956 insertions(+), 7 deletions(-) commit 2148de51bdfc85f7a3692f6c90be1aeb709458da Author: Simon McVittie Date: Mon Nov 10 17:45:22 2008 +0000 Reset spec to version 0.17.14 Using unreleased spec considered harmful. spec/all.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0adfff68556f5b9ac4f6e870aa2fdd67ecfd37c8 Author: Simon McVittie Date: Mon Nov 10 17:44:55 2008 +0000 Add AccountManager and Account code-generation TelepathyQt4/Client/AccountManager | 16 ++++++++++++++++ TelepathyQt4/Makefile.am | 14 ++++++++++++++ TelepathyQt4/account-manager.xml | 9 +++++++++ TelepathyQt4/account.xml | 13 +++++++++++++ TelepathyQt4/stable-interfaces.xml | 2 ++ 5 files changed, 54 insertions(+) commit b15adbbc709faedcb768ba2a7ef1639d6db1f1ec Author: George Goldberg Date: Wed Nov 19 13:32:31 2008 +0000 Make Tp::Client::Channel inherit from DBusProxy class. TelepathyQt4/cli-channel.cpp | 3 ++- TelepathyQt4/cli-channel.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit ebe563c7184b19258a04f270a1d11f52f5a1e6a1 Author: George Goldberg Date: Wed Nov 19 13:27:42 2008 +0000 Add installable header for DBusProxy class, and add it to buildsystem. TelepathyQt4/Client/DBusProxy | 6 ++++++ TelepathyQt4/Makefile.am | 1 + 2 files changed, 7 insertions(+) commit a8a39152f2c0651ade3152337044ef562ebaa232 Author: George Goldberg Date: Wed Nov 19 13:25:02 2008 +0000 Doxygenate the DBusProxy class. TelepathyQt4/cli-dbus-proxy.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 6533594031ea89a6cf3afa79df62aa66f970ce12 Author: George Goldberg Date: Tue Nov 18 21:27:44 2008 +0000 Roughly implement the DBusProxy base class and add it to the buildsystem. Still needs APIDocs and to be used in the classes that should use it (for now, just Channel is ready). At the moment, it just proxies the dbus connection, path and service. TelepathyQt4/Makefile.am | 2 + TelepathyQt4/cli-dbus-proxy.cpp | 75 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/cli-dbus-proxy.h | 85 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+) commit 30e5c8120b740b2bcfe34c029e4c07096107ed50 Author: George Goldberg Date: Tue Nov 18 20:03:36 2008 +0000 Oggis-Review: getters are still valid after the connection has been closed after introspection completed successfully. The only getter I am sure about is channelType(), but should the group-stuff related getter like methods also work when channel is ReadinessClosed? TelepathyQt4/cli-channel.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit b13b0c9f033fa00d276ae63fcc5e31741cda8ac0 Author: George Goldberg Date: Fri Nov 7 14:10:39 2008 +0000 Fix things that broke during merging in the master branch. TelepathyQt4/cli-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b26f1458ab98495da9b69fa4b320fbf2c4cca7ac Merge: 8ed9aa0 587126c Author: George Goldberg Date: Fri Nov 7 14:03:12 2008 +0000 Merge branch 'master' into channel-hide-interface-methods Conflicts: TelepathyQt4/cli-channel.cpp commit 8ed9aa04a721ec1e9985031211b029b427b8b06c Author: George Goldberg Date: Fri Nov 7 13:51:16 2008 +0000 Oggis-review: Fix groupSelfRemoveInfo() to only work in ReadinessClosed and update APIDocs to indicate that. TelepathyQt4/cli-channel.cpp | 4 ++-- TelepathyQt4/cli-channel.h | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) commit 85bbcd91bc1c363df590921f6a0412c806097fec Author: George Goldberg Date: Fri Nov 7 13:42:12 2008 +0000 Oggis-review: document the states the channel will end up in depending on what state it is in when close() is called. TelepathyQt4/cli-channel.h | 5 +++++ 1 file changed, 5 insertions(+) commit 14d335319aac7a091cc5f305602918edb8eb4fd3 Author: George Goldberg Date: Fri Nov 7 13:40:07 2008 +0000 Oggis-review: Fix onClosed() to change channel to readinessDead if the introspection is not already complete. TelepathyQt4/cli-channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 6f01436baae6d80a6c4cc1fada547f93c4452197 Author: George Goldberg Date: Fri Nov 7 13:35:03 2008 +0000 Oggis-review: We don't allow ReadinessJustCreated->ReadinessClosed. TelepathyQt4/cli-channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 587126c2683a1551daa031bbbc12c2888a51a1fb Merge: 64b717b c3e4460 Author: Olli Salli Date: Wed Nov 5 20:19:06 2008 +0200 Merge branch 'chan-conn-elder-care' commit 64b717be942695562fdea0906f76529171015fb8 Merge: 9eaac7b e1d8a7d Author: George Goldberg Date: Wed Nov 5 16:18:56 2008 +0000 Merge branch 'misc' into collabora/main/master commit 9a0518b63f9aeebc3c87e6bcfa931f925cc803bd Author: George Goldberg Date: Wed Nov 5 15:28:50 2008 +0000 Add a new readiness enum value, ReadinessClosed. As discussed on #telepathy with oggis, this new enum value represents the readiness state of the channel when it has been closed. It replaces the closed() signal which could cause race conditions with queued signal/slot connections. This means ReadinessDead is now only for when the channel dies unexpectedly, rather than being closed by the class user in a controlled way. TelepathyQt4/cli-channel.cpp | 30 ++++++++++++++++-------------- TelepathyQt4/cli-channel.h | 44 ++++++++++++++++++++++++-------------------- 2 files changed, 40 insertions(+), 34 deletions(-) commit 3ef4113a37c7ecaf98e09b6e71cd167759076803 Author: George Goldberg Date: Wed Nov 5 15:01:07 2008 +0000 Connect to the correct closed() signal. (yet more oggis review issues.) TelepathyQt4/cli-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8e6a56ae25eea52098d451748b0b740e989fa072 Author: George Goldberg Date: Wed Nov 5 14:57:24 2008 +0000 Correct apidocs of the Channel::baseInterface() method (more oggis review stuff). TelepathyQt4/cli-channel.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 88ec0406b8565e94936c9eb32a01a3f26892f96c Author: George Goldberg Date: Wed Nov 5 14:34:07 2008 +0000 Add details of changes to Channel::close() to API Docs. TelepathyQt4/cli-channel.h | 6 ++++++ 1 file changed, 6 insertions(+) commit d6f8c22df5aff18fb7e659632fb6b05c81d23b60 Author: George Goldberg Date: Wed Nov 5 14:27:19 2008 +0000 Change channel::close() to work for Readiness != Dead and return a synthesised DBus error if close() can't be called. TelepathyQt4/cli-channel.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) commit e1d8a7d63df5e97e342648d8e454be92473e9690 Author: George Goldberg Date: Wed Nov 5 14:04:46 2008 +0000 01777props -> 0177props - use the correct SPEC version number. TelepathyQt4/cli-channel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c3e4460409bbaef41d2f8e5b8e151a3945ae006e Author: Olli Salli Date: Mon Nov 3 17:33:23 2008 +0200 When a Channel's owning Connection is destroyed, cut off the dangling pointer TelepathyQt4/cli-channel.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 38e9a5a54ff4778555e8de9b8f5787c4b12f3065 Author: Olli Salli Date: Mon Nov 3 16:59:53 2008 +0200 Expose the owning connection in Channel TelepathyQt4/cli-channel.cpp | 5 +++++ TelepathyQt4/cli-channel.h | 7 +++++++ 2 files changed, 12 insertions(+) commit 322b89398f68714ec53687643a4cd3ceb9f7a615 Author: Olli Salli Date: Mon Nov 3 16:44:48 2008 +0200 Make Channel keep track of an "owning" connection TelepathyQt4/cli-channel.cpp | 61 ++++++++++++++++++++++++++++------------- TelepathyQt4/cli-channel.h | 35 ++++++++++++----------- TelepathyQt4/cli-connection.cpp | 3 +- TelepathyQt4/cli-connection.h | 9 ++++-- 4 files changed, 69 insertions(+), 39 deletions(-) commit fc61ed6e5efbe79fbef1de79f1635fc5cdfc1709 Author: Olli Salli Date: Mon Nov 3 16:39:16 2008 +0200 Change the readinessChanged signal parameters to uint because member enums are rather hard to forward-declare TelepathyQt4/cli-channel.h | 2 +- TelepathyQt4/cli-connection.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 9eaac7b8d6d7c77ee7e80e27950ec49d7ffecceb Merge: d07d99d 02fe103 Author: Olli Salli Date: Mon Nov 3 10:27:28 2008 +0200 Merge branch 'friendly-requests' commit eebc333fcf3b0910c516d2541827c31bc28fbf52 Author: George Goldberg Date: Sat Nov 1 14:55:28 2008 +0000 Fix typo in warning output. TelepathyQt4/cli-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c0cd14c19afcfd2499a82eff0e566398dd9e7262 Author: George Goldberg Date: Sat Nov 1 14:02:44 2008 +0000 Add some more bits to .gitignore .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 1f95de9ed5d50d8b2a547a501742bf8f9df0fcce Author: George Goldberg Date: Sat Nov 1 13:54:43 2008 +0000 Add a closed() signal that wraps the channel interface's closed() signal. TelepathyQt4/cli-channel.cpp | 3 +++ TelepathyQt4/cli-channel.h | 7 +++++++ 2 files changed, 10 insertions(+) commit 88ce6796f868093d8acc4ab30a5ab80d0af83873 Author: George Goldberg Date: Sat Nov 1 13:46:30 2008 +0000 Add return documentation to close(). TelepathyQt4/cli-channel.h | 2 ++ 1 file changed, 2 insertions(+) commit 1cc7189a48c861ac8d408ae7ca92f3d23beaa2d9 Author: George Goldberg Date: Sat Nov 1 13:43:58 2008 +0000 Change close() to return a QDBusPendingReply when not used as a slot. TelepathyQt4/cli-channel.cpp | 16 +++++++++++----- TelepathyQt4/cli-channel.h | 7 ++++++- 2 files changed, 17 insertions(+), 6 deletions(-) commit d07d99d9ebee87b6edb4c45f55c9d17c49559e02 Author: Olli Salli Date: Fri Oct 31 14:21:55 2008 +0200 Add the bus daemon interface as a 1:1 proxy TelepathyQt4/cli-dbus.h | 4 ++- TelepathyQt4/dbus-daemon.xml | 80 ++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/dbus.xml | 3 +- 3 files changed, 85 insertions(+), 2 deletions(-) commit 718f12addd38740c0eacd4547c4f223e2d0f1546 Author: Olli Salli Date: Fri Oct 31 14:08:26 2008 +0200 Check for method input and signal argument names being present in client-gen tools/qt4-client-gen.py | 2 ++ 1 file changed, 2 insertions(+) commit ee60eb27834fa59214d3ccf678ef88a19c9adb72 Author: Olli Salli Date: Fri Oct 31 13:11:02 2008 +0200 Update to spec 0.17.4 TelepathyQt4/connection.xml | 2 + spec/Account.xml | 33 +- spec/Account_Interface_Avatar.xml | 3 +- spec/Account_Manager.xml | 12 +- spec/Channel.xml | 240 ++++++++- spec/Channel_Bundle.xml | 48 ++ spec/Channel_Dispatch_Operation.xml | 342 +++++++++++++ spec/Channel_Dispatcher.xml | 361 +++++++++++++ ...Channel_Dispatcher_Interface_Operation_List.xml | 138 +++++ spec/Channel_Future.xml | 82 +-- spec/Channel_Interface_Call_Merging.xml | 4 +- spec/Channel_Interface_Call_State.xml | 8 + spec/Channel_Interface_Destroyable.xml | 82 +++ spec/Channel_Interface_Group.xml | 6 +- spec/Channel_Interface_Messages.xml | 563 ++++++++++++++++++--- spec/Channel_Request.xml | 175 +++++++ spec/Channel_Type_Contact_List.xml | 25 +- spec/Channel_Type_Room_List.xml | 3 +- spec/Channel_Type_Text.xml | 127 ++++- spec/Client.xml | 123 +++++ spec/Client_Approver.xml | 137 +++++ spec/Client_Handler.xml | 268 ++++++++++ spec/Client_Observer.xml | 230 +++++++++ spec/Connection.xml | 139 ++++- spec/Connection_Interface_Aliasing.xml | 23 + spec/Connection_Interface_Avatars.xml | 19 +- spec/Connection_Interface_Capabilities.xml | 2 +- spec/Connection_Interface_Contacts.xml | 48 +- spec/Connection_Interface_Presence.xml | 4 +- spec/Connection_Interface_Renaming.xml | 2 +- spec/Connection_Interface_Requests.xml | 557 ++++++++++++++++++++ spec/Connection_Interface_Simple_Presence.xml | 6 +- spec/Connection_Manager.xml | 48 +- spec/Media_Session_Handler.xml | 4 +- spec/Media_Stream_Handler.xml | 6 +- spec/all.xml | 39 +- spec/errors.xml | 21 +- spec/generic-types.xml | 28 +- 38 files changed, 3654 insertions(+), 304 deletions(-) commit 65e939f30a3ca4dbb2d6d4eb3d28aa441086dd3a Author: George Goldberg Date: Wed Oct 29 16:32:45 2008 +0000 Implement close() method in the convenience Channel class. Channel class should now implement wrappers around all needed methods from the ChannelInterface (using the SPEC version currently part of tpQt4. TelepathyQt4/cli-channel.cpp | 9 +++++++++ TelepathyQt4/cli-channel.h | 6 ++++++ 2 files changed, 15 insertions(+) commit 0efed963d31d369ac687907f615207c2a578a3b3 Author: George Goldberg Date: Wed Oct 29 16:10:20 2008 +0000 Change the Channel class parent to QObject and make the ChannelInterface a member of the private struct. Get everything compiling and working as before. Methods not currently in the convenience class still need to be added. TelepathyQt4/cli-channel.cpp | 23 ++++++++++++++++------- TelepathyQt4/cli-channel.h | 17 ++++++++++++++--- 2 files changed, 30 insertions(+), 10 deletions(-) commit 835485e5871da0410afd1d354ad09c8bbaead60c Merge: b68caa3 65fa72c Author: Olli Salli Date: Mon Oct 20 19:13:26 2008 +0300 Merge branch 'autointrospect-channel-group' commit 65fa72cb7425e276dacc7417951ed8833d7a192a Author: Olli Salli Date: Mon Oct 20 18:47:36 2008 +0300 Filter GroupFlagProperties out in fallback GetGroupFlags callback TelepathyQt4/cli-channel.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 3f3e3dc9dd5a4f36bbf4f49dd2edf9a99e11ddfd Author: Olli Salli Date: Tue Oct 14 00:17:08 2008 +0300 QString doesnt have empty(), it has isEmpty() TelepathyQt4/cli-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 182c4a73752d49fb29464ce6323fb22e0d37e955 Author: Olli Salli Date: Tue Oct 14 00:09:26 2008 +0300 Misc Will-review fixes to group handle owners TelepathyQt4/cli-channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit f720a385d58c8bf673f594edb68755565aeb247b Author: Olli Salli Date: Sat Oct 11 14:03:54 2008 +0300 Issue warnings when cached Group properties are accessed in an unsuitable state TelepathyQt4/cli-channel.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) commit cf919cdb0185bcceabeb8b31a7700ef5c49fc8ac Author: Olli Salli Date: Fri Oct 10 19:41:58 2008 +0300 Similarly to the main Channel autointrospection, clarify and make more scalable the Group property extraction TelepathyQt4/cli-channel.cpp | 89 ++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 44 deletions(-) commit 02fe1032768fcf39ed02eeb26cdd756715b625b3 Author: Olli Salli Date: Wed Oct 8 14:46:56 2008 +0300 Doxyment PendingChannel TelepathyQt4/cli-connection.h | 117 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 3 deletions(-) commit b3beb03a1d58fc0be34a93bb9359fc727397c2a4 Author: Olli Salli Date: Wed Oct 8 00:31:13 2008 +0300 Add PendingChannel class for friendly channel requests TelepathyQt4/cli-connection.cpp | 122 ++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/cli-connection.h | 42 ++++++++++++++ 2 files changed, 164 insertions(+) commit b68caa33ceff083856098873b1380d7071a504ff Author: Olli Salli Date: Wed Oct 8 00:29:45 2008 +0300 Use typeInterface instead of optionalInterface for Channel type-specific interfaces, as intended TelepathyQt4/cli-channel.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 931f473457f09b5c7f365fe6295d82943ee48f01 Author: Olli Salli Date: Tue Sep 30 00:01:11 2008 +0300 Add additional header guards to the pretty include headers for clarity TelepathyQt4/Client/Channel | 5 +++++ TelepathyQt4/Client/Connection | 5 +++++ TelepathyQt4/Client/ConnectionManager | 5 +++++ TelepathyQt4/Client/DBus | 5 +++++ TelepathyQt4/Client/MediaSessionHandler | 5 +++++ TelepathyQt4/Client/MediaStreamHandler | 5 +++++ TelepathyQt4/Client/OptionalInterfaceFactory | 5 +++++ TelepathyQt4/Client/Properties | 5 +++++ TelepathyQt4/Constants | 5 +++++ TelepathyQt4/Debug | 5 +++++ TelepathyQt4/Types | 5 +++++ TelepathyQt4/cli-channel.h | 4 ++-- TelepathyQt4/cli-connection-manager.h | 4 ++-- TelepathyQt4/cli-connection.h | 4 ++-- TelepathyQt4/cli-dbus.h | 4 ++-- TelepathyQt4/cli-media-session-handler.h | 4 ++-- TelepathyQt4/cli-media-stream-handler.h | 4 ++-- TelepathyQt4/cli-optional-interface-factory.h | 4 ++-- TelepathyQt4/cli-properties.h | 4 ++-- TelepathyQt4/constants.h | 4 ++-- TelepathyQt4/debug.h | 4 ++-- TelepathyQt4/types.h | 4 ++-- 22 files changed, 77 insertions(+), 22 deletions(-) commit 97ef5b0008646c30c9a097baecb38a74d70f8f05 Merge: cfa6edb ab5082e Author: Olli Salli Date: Mon Sep 29 23:04:04 2008 +0300 Merge branch 'extensibility' commit 314e3d5005f679326e177c478fe3c2d53630b274 Merge: 6c0f1dc cfa6edb Author: Olli Salli Date: Wed Sep 24 13:45:26 2008 +0300 Merge branch 'master' into autointrospect-channel-group commit cfa6edb1c7b6c98654ac1974732e2c8e95d10518 Author: Olli Salli Date: Mon Sep 22 21:05:36 2008 +0300 Remove as-compiler-flag.m4 completely, it's unused now - and dist tp-cxx-compiler-flag.m4, forgot it m4/Makefile.am | 2 +- m4/as-compiler-flag.m4 | 35 ----------------------------------- 2 files changed, 1 insertion(+), 36 deletions(-) commit 74d50beed78128e9f3aa743e4ea1868595a3c80a Author: Olli Salli Date: Mon Sep 22 20:47:00 2008 +0300 Try to make the compiler flag usage more portable configure.ac | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) commit 0e93e299cad790c233d6f56200e489eac5e38c6f Author: Olli Salli Date: Mon Sep 22 20:15:26 2008 +0300 Rewrite the (wrongly) modified AS_COMPILER_FLAG as TP_CXX_COMPILER_FLAG, using AC_COMPILE_IFELSE configure.ac | 12 ++++++------ m4/tp-cxx-compiler-flag.m4 | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) commit 75359f01cacd844c4ddb0274147608cf1a78642c Author: Olli Salli Date: Mon Sep 22 19:19:47 2008 +0300 We depend on automake >= 1.9, reflect that in the ./autogen.sh automake chooser check autogen.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 957ca0d876747813e739b6452657b04a73b7082c Author: Olli Salli Date: Mon Sep 22 19:12:39 2008 +0300 Correctly check for C++ compiler flags in AS_COMPILER_FLAG configure.ac | 1 + m4/as-compiler-flag.m4 | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) commit 82a34e7c7a83e497868449571863f86841182e69 Author: Olli Salli Date: Mon Sep 22 14:42:07 2008 +0300 De-bong the status/statusReason comment additions from the previous patch TelepathyQt4/cli-connection.h | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) commit 820d7a1ff5e717f91dd54abf470759aeb8fae60e Author: Olli Salli Date: Mon Sep 22 14:01:34 2008 +0300 Document that the values returned by Connection::status(reason)? might have changed by the time readinessChanged() is emitted TelepathyQt4/cli-connection.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit 8e93dcefdd32fcde2f0d1059d497017e07626114 Author: Olli Salli Date: Mon Sep 22 13:26:26 2008 +0300 Will-review #6: reword debug message in Connection::onStatusChanged TelepathyQt4/cli-connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 24777e4f920c2716ea85d4464b5d1b7a3d205130 Author: Olli Salli Date: Mon Sep 22 01:40:46 2008 +0300 Will-review #5: Point to optionalInterface() in the check parameter descriptions for optional interface convenience getters also in Connection TelepathyQt4/cli-connection.h | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) commit f5342710a2e8db9c14faf06a84d3d2cc5fb49396 Author: Olli Salli Date: Mon Sep 22 01:38:21 2008 +0300 Similarly to Channel, fix Connection::propertiesInterface() to use BypassInterfaceCheck TelepathyQt4/cli-connection.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 902a6391ddd17b5a82c8ad62fe935b81de54f63b Author: Olli Salli Date: Mon Sep 22 01:35:32 2008 +0300 Will-review #4: Refine the Connection state accessor validity guarantees and emit warnings for improper usage TelepathyQt4/cli-connection.cpp | 29 ++++++++++++++++ TelepathyQt4/cli-connection.h | 77 +++++++++++++++++++++++++---------------- 2 files changed, 76 insertions(+), 30 deletions(-) commit cd520d34a6fa30a28a19e671bfffcae88e205ff2 Merge: d8c8ca5 25dd788 Author: Olli Salli Date: Mon Sep 22 01:28:55 2008 +0300 Merge branch 'master' into autointrospect-connection commit 6c0f1dc7edc91c1f9561752fbe11f0b4ce2ab2e7 Merge: 1f10b00 25dd788 Author: Olli Salli Date: Sat Sep 20 22:54:32 2008 +0300 Merge branch 'master' into autointrospect-channel-group Conflicts: TelepathyQt4/cli-channel.h commit 25dd7882d09d5cc235f62bd3bdd562bfb20d86f0 Author: Olli Salli Date: Sat Sep 20 22:29:22 2008 +0300 Will-review #3 redux: Change Channel::interfaces and Channel::channelType checks subtly to allow usage from Channel internals even before no public usage is allowed TelepathyQt4/cli-channel.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit d8c8ca5f68382cc070e9079c1420a49cb1221bd7 Merge: 8d0cc4e 3f34d31 Author: Olli Salli Date: Sat Sep 20 20:55:36 2008 +0300 Merge branch 'master' into autointrospect-connection Conflicts: TelepathyQt4/Makefile.am commit 3f34d3148923c49d220d2288cf0e22aa29301c9c Author: Olli Salli Date: Sat Sep 20 13:58:30 2008 +0300 Will-review #3: Issue a warning when the cached properties are accessed in an unsuitable state TelepathyQt4/cli-channel.cpp | 15 +++++++++++++++ TelepathyQt4/cli-channel.h | 19 +++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) commit 358ac1141ce4b9e0f603cfd43c7b6a3339ad25e1 Author: Olli Salli Date: Fri Sep 19 17:31:15 2008 +0300 Will-review #2: Fix doxygen comments for Channel optional interface getters TelepathyQt4/cli-channel.h | 63 +++++++++++----------------------------------- 1 file changed, 14 insertions(+), 49 deletions(-) commit b13f511c674f7afa55823e152b67beaa3e8ed4d4 Author: Olli Salli Date: Fri Sep 19 15:30:43 2008 +0300 Correct Channel::propertiesInterface() to bypass the interface check TelepathyQt4/cli-channel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 24ab7ba540746c9d88628cd2991092d115ba8613 Author: Olli Salli Date: Fri Sep 19 15:28:30 2008 +0300 Move initial continueIntrospection to Channel constructor, otherwise the priv pointer won't have been initialized TelepathyQt4/cli-channel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit e296b4320b8be9752c64a2298d1b2f290a58e179 Author: Olli Salli Date: Thu Sep 18 11:17:34 2008 +0300 Will-review #1: Change the property checking to be a) more clear b) better scalable to new properties TelepathyQt4/cli-channel.cpp | 67 +++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 32 deletions(-) commit 8d0cc4ec60acef465bb47fbf3ccc48161c9729b7 Author: Olli Salli Date: Wed Sep 10 23:53:23 2008 +0300 Change the boolean force parameters to optionalInterface and friends to a more readable enum in Connection TelepathyQt4/cli-connection.h | 90 ++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 36 deletions(-) commit 5a6d925a2af9b0ed3b0b0dd60744496263ddc6fa Author: Olli Salli Date: Wed Sep 10 23:15:01 2008 +0300 Change the boolean force parameters to optionalInterface, typeInterface and friends to a more readable enum in Channel TelepathyQt4/cli-channel.h | 161 +++++++++++++++++++++++++-------------------- 1 file changed, 91 insertions(+), 70 deletions(-) commit 1f10b00a827f01854cbd4eed3d0a30685a812b45 Author: Olli Salli Date: Wed Sep 10 21:51:30 2008 +0300 Expose group self remove info TelepathyQt4/cli-channel.cpp | 30 +++++++++++++++--------------- TelepathyQt4/cli-channel.h | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+), 15 deletions(-) commit 447511fada4b5dab572fdd3714d174126106e76f Author: Olli Salli Date: Wed Sep 10 21:41:11 2008 +0300 Generalize GroupLocalPendingInfo to be GroupMemberChangeInfo TelepathyQt4/cli-channel.cpp | 12 +++++------ TelepathyQt4/cli-channel.h | 47 ++++++++++++++++++++++++++++---------------- 2 files changed, 36 insertions(+), 23 deletions(-) commit bffaeff6f742d5fca0dc07b64f1cd2c07e2a4879 Author: Olli Salli Date: Wed Sep 10 19:18:30 2008 +0300 Expose group self handle TelepathyQt4/cli-channel.cpp | 18 ++++++++++++++++-- TelepathyQt4/cli-channel.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) commit 5afe1b888e484d581d4e1668f128616e7d3419e1 Author: Olli Salli Date: Sun Sep 7 15:42:03 2008 +0300 Misc fixes in doxygen for group flags and members TelepathyQt4/cli-channel.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) commit b94540045abdaa44124c916edb8637ddb7b19bf9 Author: Olli Salli Date: Sun Sep 7 15:40:50 2008 +0300 Expose handle owners TelepathyQt4/cli-channel.cpp | 40 +++++++++++++++++++++++++++++++---- TelepathyQt4/cli-channel.h | 50 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 4 deletions(-) commit 800b65384b0a9a5f5f8e8d9d0e441bbadd073e27 Author: Olli Salli Date: Thu Sep 4 03:00:46 2008 +0300 Expose group members, local pending and remote pending TelepathyQt4/cli-channel.cpp | 75 ++++++++++++++++++++++---- TelepathyQt4/cli-channel.h | 124 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 182 insertions(+), 17 deletions(-) commit 41e8e7e21f2a724545d1235fd1d3d38e7f924e16 Author: Olli Salli Date: Thu Sep 4 00:22:22 2008 +0300 Expose group flags TelepathyQt4/cli-channel.cpp | 10 +++++ TelepathyQt4/cli-channel.h | 88 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 85 insertions(+), 13 deletions(-) commit 46e36c0ecf603eebb96e1155b3b2074b932ddb9f Author: Olli Salli Date: Wed Sep 3 22:55:57 2008 +0300 Store extended info when self handle has been removed from Group TelepathyQt4/cli-channel.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) commit 288ef59663da4e8a700ae0b37209f3d0c9127478 Author: Olli Salli Date: Wed Sep 3 22:24:15 2008 +0300 Make the Channel::Private member declarations more readable TelepathyQt4/cli-channel.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) commit 4793955f2470ab0cc2c9d542c64753d3b224c516 Author: Olli Salli Date: Wed Sep 3 19:07:46 2008 +0300 Add debug output to Group autointrospection detailing the number of local pending members TelepathyQt4/cli-channel.cpp | 1 + 1 file changed, 1 insertion(+) commit 583aeb2f53e058c240e9a487aac0234088acecdc Author: Olli Salli Date: Wed Sep 3 17:33:31 2008 +0300 Add local pending (with full extended info, change tracking and fallbacks) to Group autointrospection TelepathyQt4/cli-channel.cpp | 86 ++++++++++++++++++++++++++++++++++++-------- TelepathyQt4/cli-channel.h | 31 ++++++++++++++++ 2 files changed, 102 insertions(+), 15 deletions(-) commit 137a0c79a548cc2152405c137027e9a05d58ab66 Author: Olli Salli Date: Mon Sep 1 01:23:50 2008 +0300 Add change tracking to Channel.Interface.Group autointrospection TelepathyQt4/cli-channel.cpp | 111 ++++++++++++++++++++++++++++++++++++++++--- TelepathyQt4/cli-channel.h | 4 ++ 2 files changed, 109 insertions(+), 6 deletions(-) commit d078f11ef74284a4f50e7ad4a6486ebf9abc422d Author: Olli Salli Date: Mon Aug 18 21:41:09 2008 +0300 Add fallbacks to Group autointrospection, still without LocalPending TelepathyQt4/cli-channel.cpp | 113 ++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/cli-channel.h | 3 ++ 2 files changed, 115 insertions(+), 1 deletion(-) commit 91264b313fcd46c091c3b09eddb30985212b5f39 Author: Olli Salli Date: Tue Aug 12 14:44:28 2008 +0300 Add basic Channel.Interface.Group autointrospection, still without fallbacks and LocalPending TelepathyQt4/cli-channel.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/cli-channel.h | 6 ++++ 2 files changed, 72 insertions(+), 1 deletion(-) commit 4a63b0d5ffca0e729e2c9cd548ae88ffcb477a72 Author: Olli Salli Date: Wed Sep 10 00:35:44 2008 +0300 Add shared getters for the remaining Channel interfaces TelepathyQt4/cli-channel.h | 199 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) commit c8916ebf1be005ebfef65de39013f700ebec0ed6 Author: Olli Salli Date: Tue Sep 9 23:18:44 2008 +0300 Use OptionalInterfaceFactory in Channel (currently only for Properties) TelepathyQt4/cli-channel.cpp | 13 +++++++---- TelepathyQt4/cli-channel.h | 52 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 5 deletions(-) commit c336669b04012199c03f69cb1c3b24d6c7ad0c90 Author: Olli Salli Date: Mon Aug 25 23:43:36 2008 +0300 Adapt to debug.hpp->debug-internal.hpp change in cli-channel.cpp TelepathyQt4/cli-channel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c831cb677ab8555c02578072a522c8eda4f4109e Author: Olli Salli Date: Tue Aug 12 04:10:29 2008 +0300 Future-proof the Channel::Readiness enum TelepathyQt4/cli-channel.cpp | 1 + TelepathyQt4/cli-channel.h | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) commit 567a40ef8616a5f4acfde91ce9e27fbdeb3ec09e Author: Olli Salli Date: Tue Aug 12 03:54:26 2008 +0300 Add overview comment explaining the benefits of using Channel TelepathyQt4/cli-channel.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 81f3e6006fd5cdc0cdbc6be2156784db325c038e Author: Olli Salli Date: Tue Aug 12 03:34:55 2008 +0300 Hook up Channel::Closed to making Channel have the dead readiness TelepathyQt4/cli-channel.cpp | 17 +++++++++++++++-- TelepathyQt4/cli-channel.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) commit 09f86c6bc06690f9397bfddeeda53ec69e3a4623 Author: Olli Salli Date: Tue Aug 12 03:21:05 2008 +0300 Expose the channel type, handle type and handle in Channel TelepathyQt4/cli-channel.cpp | 15 +++++++++++++++ TelepathyQt4/cli-channel.h | 28 ++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) commit ca98bc58f255db4cbeba4a8b93c12ca82228c45c Author: Olli Salli Date: Tue Aug 12 03:05:36 2008 +0300 Extend the main interface introspection to introspect channel type, target handle type and target handle as well (with proper fallbacks) TelepathyQt4/cli-channel.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/cli-channel.h | 2 + 2 files changed, 87 insertions(+), 2 deletions(-) commit b6e1cff21d9e5515e6c3bbc65a9ff562b25eda0c Author: Olli Salli Date: Tue Aug 12 02:10:42 2008 +0300 Make Channel do autointrospect of the main interface state (with fallbacks, currently exposing Interfaces) TelepathyQt4/cli-channel.cpp | 138 ++++++++++++++++++++++++++++++++++++++++++- TelepathyQt4/cli-channel.h | 63 ++++++++++++++++++++ 2 files changed, 200 insertions(+), 1 deletion(-) commit 22371b3e51c7aacacd0bd11301f9a772d364fafb Author: Olli Salli Date: Mon Aug 11 15:08:42 2008 +0300 Add stub Channel high-level proxy TelepathyQt4/Makefile.am | 3 ++- TelepathyQt4/cli-channel.cpp | 48 +++++++++++++++++++++++++++++++++++++-- TelepathyQt4/cli-channel.h | 54 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 3 deletions(-) commit ffefbac8bfe949e5e1e1845e9e497b8d75717b35 Author: Olli Salli Date: Tue Sep 9 23:00:09 2008 +0300 Doxyment the Connection optional interface getters TelepathyQt4/cli-connection.h | 81 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 2 deletions(-) commit ce938fc8a93967c2fedb4e6aa9bd0d6ea55cc1a0 Author: Olli Salli Date: Tue Sep 9 22:59:56 2008 +0300 Misc errata to Connection doxygen TelepathyQt4/cli-connection.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit e36c444a8801cb315dd4dfd59b6e0aaaef6e386d Author: Olli Salli Date: Tue Sep 9 17:07:24 2008 +0300 Use OptionalInterfaceFactory for the optional interfaces in Connection TelepathyQt4/cli-connection.cpp | 21 --------------------- TelepathyQt4/cli-connection.h | 17 ++++------------- 2 files changed, 4 insertions(+), 34 deletions(-) commit aa61c87ea9d57ea3cf864b225f498e751f29d880 Author: Olli Salli Date: Tue Sep 9 17:05:41 2008 +0300 forcePresent in the optional interface getters should've been false by default TelepathyQt4/cli-connection.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 02d2dd484f0635fa931c364b86d40d2ba879dd9b Author: Olli Salli Date: Mon Sep 8 18:38:07 2008 +0300 Add Connection::optionalInterface() and friends TelepathyQt4/cli-connection.cpp | 62 ++++++++++++++++++++++++++++++++--------- TelepathyQt4/cli-connection.h | 53 +++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 13 deletions(-) commit 717b6d9e336493249890719c3e9c03380162f13a Author: Olli Salli Date: Mon Aug 25 23:47:37 2008 +0300 Adapt to debug.hpp->debug-internal.hpp change in cli-connection.cpp TelepathyQt4/cli-connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d313f0ab7375c016811f160a101c325986ce4c1b Author: Olli Salli Date: Tue Aug 12 04:07:28 2008 +0300 Future-proof the Connection::Readiness enum TelepathyQt4/cli-connection.cpp | 2 +- TelepathyQt4/cli-connection.h | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) commit 554026cb5e3a2f5eda8df7b7f72cccccec9bb2b6 Author: Olli Salli Date: Sun Aug 10 00:33:11 2008 +0300 New architecture of the high-level proxies; Autointrospect for Connection implemented TelepathyQt4/cli-connection.cpp | 193 +++++++++++++++++++++++++++++---------- TelepathyQt4/cli-connection.h | 196 ++++++++++++++++++++++------------------ 2 files changed, 252 insertions(+), 137 deletions(-) commit 5bb79cb465d56da6356acefeb34ead906bfcb663 Author: Olli Salli Date: Tue Jul 29 01:11:53 2008 +0300 Adapt to latest developments in -client-proxies; Connection now publicly inherits ConnectionInterface TelepathyQt4/cli-connection.cpp | 65 +++++++++++++++++------------------------ TelepathyQt4/cli-connection.h | 34 ++++++--------------- 2 files changed, 35 insertions(+), 64 deletions(-) commit a25cc99cb3ae6328fef7222e9d876918204fc6ce Author: Olli Salli Date: Tue Jul 29 01:10:26 2008 +0300 Run moc for the high-level Connection class as well TelepathyQt4/Makefile.am | 3 ++- TelepathyQt4/cli-connection.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) commit ed2e51ddcab31bfe0330bcf9f8df4f0aa50d097f Author: Olli Salli Date: Mon Jul 28 19:45:30 2008 +0300 Include local include files by their real header name, not the public pretty include one TelepathyQt4/cli-connection.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 66f9686f7243baec4649f12b7bd332752977ce7f Author: Olli Salli Date: Mon Jul 28 02:06:47 2008 +0300 Add full property tracking to Connection with automatic inspection of optional interface state when the remote object goes Connected TelepathyQt4/cli-connection.cpp | 179 ++++++++++++++++++++++++++++++++++++---- TelepathyQt4/cli-connection.h | 60 +++++++++++++- 2 files changed, 220 insertions(+), 19 deletions(-) commit e75497d71f8e41c17ee3e5f6f8ec0b6b38359eb6 Author: Olli Salli Date: Sun Jul 27 16:44:16 2008 +0300 Use the debug output system in Connection TelepathyQt4/cli-connection.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 12ed0a198e565ab8bcef6292c1a8d2bf8631bd02 Author: Olli Salli Date: Sun Jul 27 03:31:49 2008 +0300 Add initial connection status tracking to Connection TelepathyQt4/cli-connection.cpp | 112 +++++++++++++++++++++++++++++++++++++--- TelepathyQt4/cli-connection.h | 86 +++++++++++++++++++++++++++++- 2 files changed, 191 insertions(+), 7 deletions(-) commit d65cd0435a51e4c30670d35085670bf9c23960f1 Author: Olli Salli Date: Sat Jul 26 21:35:48 2008 +0300 Add stub Connection high-level proxy TelepathyQt4/cli-connection.cpp | 43 +++++++++++++++++++++++++ TelepathyQt4/cli-connection.h | 71 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) commit 8d8d8af4dfe02a2be44a8002b53cdbf8960079d8 Author: Olli Salli Date: Tue Sep 9 21:55:07 2008 +0300 Doxyment OptionalInterfaceFactory TelepathyQt4/cli-optional-interface-factory.h | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) commit ef703068261ca210be0b28f62eb73d337777575c Author: Olli Salli Date: Tue Sep 9 16:56:56 2008 +0300 Make proxy lifetimes tied to the OptionalInterfaceFactory lifetime TelepathyQt4/cli-optional-interface-factory.cpp | 10 ++++++++++ TelepathyQt4/cli-optional-interface-factory.h | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) commit 6527392577281328839f800c9f296b05d250d09f Author: Olli Salli Date: Tue Sep 9 15:30:46 2008 +0300 Add OptionalInterfaceFactory mixin class TelepathyQt4/Client/OptionalInterfaceFactory | 1 + TelepathyQt4/Makefile.am | 3 + TelepathyQt4/cli-optional-interface-factory.cpp | 70 +++++++++++++++++++ TelepathyQt4/cli-optional-interface-factory.h | 90 +++++++++++++++++++++++++ TelepathyQt4/header-compile-test.cpp | 1 + 5 files changed, 165 insertions(+) commit ab5082e9cdbdeb3dfb9f630c4b815dcac4d1d182 Author: Olli Salli Date: Mon Aug 25 23:54:01 2008 +0300 Remove non-relevant comment lifted from tp-glib in examples/extensions/Makefile.am examples/extensions/Makefile.am | 3 --- 1 file changed, 3 deletions(-) commit 578190e359265bc8209d1339c69e15118182ec26 Merge: 25233b5 2602e88 Author: Olli Salli Date: Mon Aug 25 23:07:40 2008 +0300 Merge branch 'debug-output-support' commit 2602e88ce4e60ee22f994aad2d80fdfee0eacbaf Author: Olli Salli Date: Mon Aug 25 23:06:13 2008 +0300 Rename debug.hpp to debug-internal.hpp to avoid confusion with the public debug.h TelepathyQt4/Makefile.am | 2 +- TelepathyQt4/debug-internal.hpp | 90 +++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/debug.cpp | 2 +- TelepathyQt4/debug.hpp | 90 ----------------------------------------- 4 files changed, 92 insertions(+), 92 deletions(-) commit fe4c2a3dc8b2180a71792395e90bb42a9666ed86 Author: Olli Salli Date: Fri Aug 22 21:42:35 2008 +0300 Add proper .gitignore .gitignore | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit ed2fb5a63e47cdd28f2bfb87a26561e65cfd5965 Author: Olli Salli Date: Tue Aug 19 03:55:59 2008 +0300 Add Connection.Interface.Hats example from telepathy-glib to demonstrate extensibility Makefile.am | 2 +- configure.ac | 9 ++ examples/Makefile.am | 1 + examples/extensions/Connection_Interface_Hats.xml | 139 ++++++++++++++++++++++ examples/extensions/Makefile.am | 105 ++++++++++++++++ examples/extensions/all.xml | 16 +++ examples/extensions/cli-connection.cpp | 2 + examples/extensions/cli-connection.h | 6 + examples/extensions/connection.xml | 9 ++ examples/extensions/types.cpp | 1 + examples/extensions/types.h | 6 + 11 files changed, 295 insertions(+), 1 deletion(-) commit 8de33dd5931aa489347cb21b02059715305d3e35 Author: Olli Salli Date: Tue Aug 19 03:39:42 2008 +0300 Random find: fix indentation in doxygen for generic list types generated by types-gen tools/qt4-types-gen.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 8ddd4eaecb61c8e0ba2b60be4a3bc8eb04e2cf89 Author: Olli Salli Date: Tue Aug 19 03:07:17 2008 +0300 Use "" instead of <> for the header file include in the proxy body file, so extensions won't need to include their own source tree in their include path TelepathyQt4/Makefile.am | 2 +- tools/qt4-client-gen.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit ca6222a43a8854f629a7478a4a88e835e845593e Author: Olli Salli Date: Tue Aug 19 03:06:19 2008 +0300 Make the group argument to client-gen really optional, as extensions won't probably care about doxygen groups tools/qt4-client-gen.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit cde428ee1eb8fad376171f8e4dd968ab03099237 Author: Olli Salli Date: Tue Aug 19 02:48:15 2008 +0300 Make prettyinclude optional in types-gen and client-gen, extensions don't usually care about pretty includes tools/libqt4codegen.py | 7 +++++++ tools/qt4-client-gen.py | 9 ++++----- tools/qt4-types-gen.py | 27 ++++++++++++++------------- 3 files changed, 25 insertions(+), 18 deletions(-) commit 25233b5179a2ae920b88fe2c32b665cf417013d4 Author: Olli Salli Date: Fri Aug 22 21:42:35 2008 +0300 Add proper .gitignore .gitignore | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit de9f67dbee72c8d8a81c63946e051b10634889c2 Author: Olli Salli Date: Tue Aug 19 01:55:14 2008 +0300 Replace the types/parentinclude params in {client,types}-gen with a comma-separated extraincludes list to be able to include eg. the parent main interface header and parent types header in extensions TelepathyQt4/Makefile.am | 2 +- tools/qt4-client-gen.py | 21 ++++++++++++++------- tools/qt4-types-gen.py | 14 +++++++------- 3 files changed, 22 insertions(+), 15 deletions(-) commit 8294b40e4f8200e97359cdc38a79052204438a4b Author: Olli Salli Date: Tue Aug 19 01:47:30 2008 +0300 Explicitly qualify the main interfaces specified to client-gen to be able to use mothership classes as the mainiface TelepathyQt4/Makefile.am | 10 +++++----- tools/qt4-client-gen.py | 19 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) commit feab944a128e149f4311266d19e2f53c7885eaa4 Merge: d85c4d5 139aac2 Author: Olli Salli Date: Wed Aug 13 22:06:33 2008 +0300 Merge branch 'client-proxies' commit 139aac2f663c1d6593b1c12c8bc15e30237e5f11 Author: Olli Salli Date: Wed Aug 13 21:45:36 2008 +0300 Remove redundant explicity from some generated client constructors tools/qt4-client-gen.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit d85c4d53a3887c8705fd5c10a736e0c1e04dce48 Author: Olli Salli Date: Wed Aug 13 21:38:30 2008 +0300 Build the library static for now TelepathyQt4/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0788f3cf36764becc9738f08bd327c56405e2578 Author: Olli Salli Date: Wed Aug 13 21:38:05 2008 +0300 Fix make dist Makefile.am | 5 +++-- configure.ac | 2 +- spec/Makefile.am | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) commit 16350dc192f5f296e096cd7807f63efb5fea4b46 Author: Olli Salli Date: Sat Aug 9 17:03:16 2008 +0300 Fix HTML in doxygen for the debug system TelepathyQt4/debug.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 26149aca14205e1eceb567c62f65c9a9cadfc89a Author: Olli Salli Date: Fri Aug 8 18:59:42 2008 +0300 Add the debug enable functions to the debug group TelepathyQt4/debug.h | 4 ++++ 1 file changed, 4 insertions(+) commit ef1090f04f7777ca81e348fd92da8e2f5cb7e984 Author: Olli Salli Date: Mon Jul 28 20:38:06 2008 +0300 debug.h shouldn't include config.h, debug.hpp should TelepathyQt4/debug.h | 2 -- TelepathyQt4/debug.hpp | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) commit 2869cecc991ec547b8a512a3ba419153a16e4b07 Author: Olli Salli Date: Sun Aug 10 16:06:40 2008 +0300 Make debugging output controllable by application code at runtime TelepathyQt4/Debug | 1 + TelepathyQt4/Makefile.am | 3 ++ TelepathyQt4/debug.cpp | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ TelepathyQt4/debug.h | 66 ++++++++++++++++++++++++++++++++++++ TelepathyQt4/debug.hpp | 16 +++++---- 5 files changed, 168 insertions(+), 6 deletions(-) commit bb76d6a5635a354b645310045bd1fcefd4033da4 Author: Olli Salli Date: Sun Jul 27 16:44:16 2008 +0300 Add debug.hpp for library internal debugging output TelepathyQt4/Makefile.am | 1 + TelepathyQt4/debug.hpp | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) commit 58fb08552f2fe1532ccd5407745bea0235c6af30 Author: Olli Salli Date: Sun Jul 27 14:42:45 2008 +0300 Add license headers to the client proxy implementation files TelepathyQt4/cli-channel.cpp | 21 +++++++++++++++++++++ TelepathyQt4/cli-connection-manager.cpp | 21 +++++++++++++++++++++ TelepathyQt4/cli-connection.cpp | 21 +++++++++++++++++++++ TelepathyQt4/cli-dbus.cpp | 21 +++++++++++++++++++++ TelepathyQt4/cli-media-session-handler.cpp | 21 +++++++++++++++++++++ TelepathyQt4/cli-media-stream-handler.cpp | 21 +++++++++++++++++++++ TelepathyQt4/cli-properties.cpp | 21 +++++++++++++++++++++ 7 files changed, 147 insertions(+) commit 6e2403a6372efa84467f30517d94a26cdfe2d166 Author: Olli Salli Date: Sun Aug 10 19:55:56 2008 +0300 Add constants.h and types.h to the dependencies for the moc-generated files, as they should be TelepathyQt4/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 14bb2166d7b15bb6c960ef4545d2e38c576cf264 Author: Olli Salli Date: Sun Aug 10 19:04:44 2008 +0300 Generalize the _gen/%.moc.hpp Makefile.am rule to %.moc.hpp TelepathyQt4/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dded61c226281f5c95b04006bc7be7a0f01b61f8 Author: Olli Salli Date: Tue Jul 29 00:07:13 2008 +0300 Make all method/signal/property names in generated proxies be the same case as the actual DBus names tools/qt4-client-gen.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) commit 4f97d0c03d7cb8902adac715aec48d0615d8f451 Author: Olli Salli Date: Mon Jul 28 23:41:19 2008 +0300 Don't qtify signal names in generated proxies; otherwise qt won't know how to associate them with the D-Bus signals tools/qt4-client-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 54dd0424291cc2e3a2e239a01dcebbb16340a2a3 Merge: 01577f4 87aa4ef Author: Olli Salli Date: Sun Jul 27 17:15:39 2008 +0300 Merge branch 'master' into client-proxies commit 87aa4ef7f5dfde6e4f69d42b3f32eb0bdbfbf8a6 Author: Olli Salli Date: Sun Jul 27 17:15:18 2008 +0300 More unabbreviations: IFACE->INTERFACE tools/qt4-constants-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 01577f45affccc07985856faf72fdb1672493686 Merge: b334ed2 46c5a09 Author: Olli Salli Date: Sun Jul 27 16:59:54 2008 +0300 Merge branch 'master' into client-proxies commit 46c5a09de940ba55fd113a83a951eff235e8d113 Author: Olli Salli Date: Sun Jul 27 16:59:15 2008 +0300 Abbreviations are not Qt style; unabbreviate the string constant names TelepathyQt4/Makefile.am | 2 +- TelepathyQt4/constants.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) commit b334ed2494baaa3a10a60cecb9035d06817e58ea Author: Olli Salli Date: Sat Jul 26 19:17:55 2008 +0300 Make the generated proxy constructors explicit tools/qt4-client-gen.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit f36c2c0dd11d6f7aa9d58a3bd70c42dc7f679022 Author: Olli Salli Date: Sat Jul 26 01:11:06 2008 +0300 Sync with my latest tp-spec branch spec/Channel_Type_Streamed_Media.xml | 2 +- spec/Channel_Type_Text.xml | 2 +- spec/Connection_Interface_Contacts.xml | 2 +- spec/Connection_Interface_Presence.xml | 2 +- spec/Connection_Manager.xml | 6 +++--- spec/Media_Session_Handler.xml | 3 ++- spec/Media_Stream_Handler.xml | 4 ++-- spec/Properties_Interface.xml | 4 ++-- 8 files changed, 13 insertions(+), 12 deletions(-) commit 085f4d40d9be0f96a00d515a5abcece428ac2537 Author: Olli Salli Date: Sat Jul 26 16:49:18 2008 +0300 Fix generating the property setter name in client-gen tools/qt4-client-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9a5761bc4322fb97a8d63bad19a65a7811b662f7 Author: Olli Salli Date: Sat Jul 26 16:39:05 2008 +0300 Revert "Prefix the 1:1 bound properties with 'dbus' to make way for cached properties" This reverts commit d3b14ff71e84764bec2406cd7cf39374a0a33bb8. tools/qt4-client-gen.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit d393375e01541b63c502c368f0e67cc7380c1f32 Author: Olli Salli Date: Sat Jul 26 15:26:09 2008 +0300 Explicitly qualify custom types used in generated proxies TelepathyQt4/Makefile.am | 1 + tools/libqt4codegen.py | 29 +++++++++++++++++------------ tools/qt4-client-gen.py | 12 +++++++----- tools/qt4-types-gen.py | 4 ++-- 4 files changed, 27 insertions(+), 19 deletions(-) commit d3b14ff71e84764bec2406cd7cf39374a0a33bb8 Author: Olli Salli Date: Sat Jul 26 13:27:53 2008 +0300 Prefix the 1:1 bound properties with 'dbus' to make way for cached properties tools/qt4-client-gen.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 48da80ea840e84c04c46e86632938eec8174b713 Author: Olli Salli Date: Sat Jul 26 01:11:06 2008 +0300 Sync with my latest tp-spec branch spec/Channel_Type_Streamed_Media.xml | 2 +- spec/Channel_Type_Text.xml | 2 +- spec/Connection_Interface_Contacts.xml | 2 +- spec/Connection_Interface_Presence.xml | 2 +- spec/Connection_Manager.xml | 6 +++--- spec/Media_Session_Handler.xml | 3 ++- spec/Media_Stream_Handler.xml | 4 ++-- spec/Properties_Interface.xml | 4 ++-- 8 files changed, 13 insertions(+), 12 deletions(-) commit 8012e9151917d40defcac3ad86af6d729cbc5c77 Author: Olli Salli Date: Sat Jul 26 01:10:17 2008 +0300 Add doxygen to 1:1 proxies TelepathyQt4/Makefile.am | 12 +++- TelepathyQt4/cli-channel.h | 19 ++++++ TelepathyQt4/cli-connection-manager.h | 18 ++++++ TelepathyQt4/cli-connection.h | 19 ++++++ TelepathyQt4/cli-dbus.h | 20 ++++++ TelepathyQt4/cli-media-session-handler.h | 18 ++++++ TelepathyQt4/cli-media-stream-handler.h | 18 ++++++ TelepathyQt4/cli-properties.h | 19 ++++++ tools/qt4-client-gen.py | 101 ++++++++++++++++++++++++++++++- 9 files changed, 239 insertions(+), 5 deletions(-) commit dac4bc6f552dee60ae2b4f1c162ffd19477b1e5e Author: Olli Salli Date: Fri Jul 25 23:45:47 2008 +0300 Use an utf-8 codec for writing in client-gen tools/qt4-client-gen.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 9713303f72dcff520f29072c16ebcdfa10a35624 Author: Olli Salli Date: Fri Jul 25 23:43:17 2008 +0300 Add extract_arg_or_member_info to libqt4codegen, use it it client-gen and types-gen tools/libqt4codegen.py | 15 +++++++++++++++ tools/qt4-client-gen.py | 34 +++++++++------------------------- tools/qt4-types-gen.py | 20 +++----------------- 3 files changed, 27 insertions(+), 42 deletions(-) commit f24ce3a3e6c71231f9315d9aef6d70c820b5259c Author: Olli Salli Date: Fri Jul 25 04:00:01 2008 +0300 Add signals to generated proxies tools/qt4-client-gen.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) commit 4c78c30ce9c3441ebacf57a546c06a50cda311c8 Author: Olli Salli Date: Fri Jul 25 03:50:16 2008 +0300 Make get_qt4_name work for more element types and make qt4_identifier_escape do nicer one-way escaping tools/libqt4codegen.py | 31 ++++++++++++++++++++++--------- tools/qt4-client-gen.py | 5 ++--- tools/qt4-types-gen.py | 7 ++----- 3 files changed, 26 insertions(+), 17 deletions(-) commit 62c86afec5447ae20f562fcc3e6b968d4982ec5b Author: Olli Salli Date: Fri Jul 25 03:27:27 2008 +0300 Rename cxx_identifier_escape to qt4_identifier_escape tools/libqt4codegen.py | 199 ++++++++++++++++++++++++------------------------ tools/qt4-client-gen.py | 4 +- tools/qt4-types-gen.py | 4 +- 3 files changed, 104 insertions(+), 103 deletions(-) commit 8a8fa7ed1ac033ef6af45a343865abca2b02b223 Author: Olli Salli Date: Fri Jul 25 03:19:13 2008 +0300 Add the new SimplePresence interface to the set of generated interfaces TelepathyQt4/connection.xml | 1 + 1 file changed, 1 insertion(+) commit b6a2316248ea60940c00b6b4aa49c55743f77a50 Author: Olli Salli Date: Fri Jul 25 03:07:00 2008 +0300 Update to the latest darcs telepathy-spec (my codegen branch) spec/Account.xml | 54 ++-- spec/Account_Interface_Avatar.xml | 2 +- spec/Account_Manager.xml | 13 +- spec/Channel.xml | 13 +- spec/Channel_Future.xml | 8 +- spec/Channel_Handler.xml | 2 +- spec/Channel_Interface_Call_State.xml | 8 +- spec/Channel_Interface_Chat_State.xml | 10 +- spec/Channel_Interface_DTMF.xml | 10 +- spec/Channel_Interface_Delivery_Reporting.xml | 10 +- spec/Channel_Interface_Group.xml | 80 +++--- spec/Channel_Interface_Hold.xml | 12 +- spec/Channel_Interface_Media_Signalling.xml | 5 +- spec/Channel_Interface_Messages.xml | 26 +- spec/Channel_Interface_Password.xml | 13 +- spec/Channel_Interface_Transfer.xml | 4 +- spec/Channel_Type_Contact_Search.xml | 18 +- spec/Channel_Type_Room_List.xml | 14 +- spec/Channel_Type_Streamed_Media.xml | 55 ++-- spec/Channel_Type_Text.xml | 48 ++-- spec/Channel_Type_Tubes.xml | 107 ++++---- spec/Connection.xml | 115 +++++--- spec/Connection_Interface_Aliasing.xml | 14 +- spec/Connection_Interface_Avatars.xml | 44 +-- spec/Connection_Interface_Capabilities.xml | 71 +++-- spec/Connection_Interface_Contact_Info.xml | 11 +- spec/Connection_Interface_Contacts.xml | 225 +++++++++++++++ spec/Connection_Interface_Forwarding.xml | 12 +- spec/Connection_Interface_Presence.xml | 92 ++++--- spec/Connection_Interface_Privacy.xml | 13 +- spec/Connection_Interface_Renaming.xml | 8 +- spec/Connection_Interface_Simple_Presence.xml | 382 ++++++++++++++++++++++++++ spec/Connection_Manager.xml | 80 ++++-- spec/Media_Session_Handler.xml | 14 +- spec/Media_Stream_Handler.xml | 89 +++--- spec/Properties_Interface.xml | 19 +- spec/all.xml | 4 +- spec/generic-types.xml | 35 ++- 38 files changed, 1271 insertions(+), 469 deletions(-) commit 50a5caa7974a0f6baa4f442f2408b64b1001782c Author: Olli Salli Date: Fri Jul 25 03:07:00 2008 +0300 Update to the latest darcs telepathy-spec (my codegen branch) spec/Account.xml | 54 ++-- spec/Account_Interface_Avatar.xml | 2 +- spec/Account_Manager.xml | 13 +- spec/Channel.xml | 13 +- spec/Channel_Future.xml | 8 +- spec/Channel_Handler.xml | 2 +- spec/Channel_Interface_Call_State.xml | 8 +- spec/Channel_Interface_Chat_State.xml | 10 +- spec/Channel_Interface_DTMF.xml | 10 +- spec/Channel_Interface_Delivery_Reporting.xml | 10 +- spec/Channel_Interface_Group.xml | 80 +++--- spec/Channel_Interface_Hold.xml | 12 +- spec/Channel_Interface_Media_Signalling.xml | 5 +- spec/Channel_Interface_Messages.xml | 26 +- spec/Channel_Interface_Password.xml | 13 +- spec/Channel_Interface_Transfer.xml | 4 +- spec/Channel_Type_Contact_Search.xml | 18 +- spec/Channel_Type_Room_List.xml | 14 +- spec/Channel_Type_Streamed_Media.xml | 55 ++-- spec/Channel_Type_Text.xml | 48 ++-- spec/Channel_Type_Tubes.xml | 107 ++++---- spec/Connection.xml | 115 +++++--- spec/Connection_Interface_Aliasing.xml | 14 +- spec/Connection_Interface_Avatars.xml | 44 +-- spec/Connection_Interface_Capabilities.xml | 71 +++-- spec/Connection_Interface_Contact_Info.xml | 11 +- spec/Connection_Interface_Contacts.xml | 225 +++++++++++++++ spec/Connection_Interface_Forwarding.xml | 12 +- spec/Connection_Interface_Presence.xml | 92 ++++--- spec/Connection_Interface_Privacy.xml | 13 +- spec/Connection_Interface_Renaming.xml | 8 +- spec/Connection_Interface_Simple_Presence.xml | 382 ++++++++++++++++++++++++++ spec/Connection_Manager.xml | 80 ++++-- spec/Media_Session_Handler.xml | 14 +- spec/Media_Stream_Handler.xml | 89 +++--- spec/Properties_Interface.xml | 19 +- spec/all.xml | 4 +- spec/generic-types.xml | 35 ++- 38 files changed, 1271 insertions(+), 469 deletions(-) commit bf578f28cdaa98567cddce4d88d4067e1b14292a Author: Olli Salli Date: Fri Jul 25 02:14:37 2008 +0300 Add methods generation to client-gen tools/qt4-client-gen.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) commit 617b897057774f2672a0064ba927e61e75708994 Author: Olli Salli Date: Fri Jul 25 02:08:42 2008 +0300 Add get_qt4_name to libqt4codegen and use it for the property name in client-gen tools/libqt4codegen.py | 11 +++++++++++ tools/qt4-client-gen.py | 16 ++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) commit eeac6b82ca6e000a5f3e3f0fd26deb27d0152bfa Author: Olli Salli Date: Fri Jul 25 02:06:07 2008 +0300 Properly do moc for the generated proxies TelepathyQt4/Makefile.am | 28 ++++++++- TelepathyQt4/cli-channel.cpp | 2 + TelepathyQt4/cli-connection-manager.cpp | 2 + TelepathyQt4/cli-connection.cpp | 2 + TelepathyQt4/cli-dbus.cpp | 2 + TelepathyQt4/cli-media-session-handler.cpp | 2 + TelepathyQt4/cli-media-stream-handler.cpp | 2 + TelepathyQt4/cli-properties.cpp | 2 + tools/qt4-client-gen.py | 98 +++++++++++++++++++++--------- 9 files changed, 108 insertions(+), 32 deletions(-) commit 3723928052c74a660c977dde2181416b979b25fc Author: Olli Salli Date: Fri Jul 25 01:17:24 2008 +0300 Install the client pretty include headers in the correct directory TelepathyQt4/Makefile.am | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) commit 65292ecae0741cd9c7ecff81835ade9c22ecd1d3 Merge: df8250a bb77db9 Author: Olli Salli Date: Thu Jul 24 15:01:39 2008 +0300 Merge branch 'client-proxies' of dhansak:public_html/git/telepathy-qt4 into client-proxies commit bb77db99751cb81e0ba5ad70a2ff1e9c187bb70f Author: Olli Salli Date: Fri Jul 18 14:24:57 2008 +0300 Add D-Bus properties to generated proxies tools/qt4-client-gen.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) commit 92e8020febd9df1af7e73b1dacc4d083e41a61c3 Author: Olli Salli Date: Fri Jul 18 14:21:45 2008 +0300 Add cxx_identifier_escape to libqt4codegen and use it for struct members in types-gen tools/libqt4codegen.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++- tools/qt4-types-gen.py | 4 +- 2 files changed, 101 insertions(+), 3 deletions(-) commit 09862fd60f0c87d4de5780bf0edac777c203472d Author: Olli Salli Date: Fri Jul 18 02:32:48 2008 +0300 Move gather_externals and gather_custom_lists to libqt4codegen tools/libqt4codegen.py | 26 ++++++++++++++++++++++++++ tools/qt4-types-gen.py | 26 +++----------------------- 2 files changed, 29 insertions(+), 23 deletions(-) commit 6ea851ecae36790dd9f4fe6a063441801befb3b6 Author: Olli Salli Date: Fri Jul 18 02:03:54 2008 +0300 Make the --mainiface code to use QDBusAbstractInterface as a possible main interface if --mainiface is not specified at all, which is useful for things like the DBus interfaces and Properties TelepathyQt4/Makefile.am | 6 ++++-- tools/qt4-client-gen.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) commit 1f9d3623a6d6193c5ccc7afcef4b33eb00e177e7 Author: Olli Salli Date: Fri Jul 18 01:47:49 2008 +0300 Add --mainiface to client-gen for specifying a 'main' interface in a group, which can be given to the others as a constructor param to reuse the same remote object easily. TelepathyQt4/Makefile.am | 13 +++++++++---- tools/qt4-client-gen.py | 49 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 48 insertions(+), 14 deletions(-) commit df526c77b4f8dc0a70e86994753885f1e3184749 Author: Olli Salli Date: Thu Jul 17 22:20:29 2008 +0300 Add common constructors to the proxies tools/qt4-client-gen.py | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) commit 9240b16b7310027dd420d3b923844b3202f69f36 Author: Olli Salli Date: Thu Jul 17 22:02:28 2008 +0300 Add empty test .cpp to verify header validness TelepathyQt4/Makefile.am | 3 ++- TelepathyQt4/header-compile-test.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) commit df8250a4a2d954e0069f782bdae580a23e9e0e58 Author: Olli Salli Date: Thu Jul 17 22:02:28 2008 +0300 Add empty test .cpp to verify header validness TelepathyQt4/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit e148ece2dd17b1ced0303416339748958196f5c7 Author: Olli Salli Date: Thu Jul 17 22:00:53 2008 +0300 Remove -Wshadow, which terribly restricts C++ configure.ac | 1 - 1 file changed, 1 deletion(-) commit 7c7025a8e64ace67884e25794945afd656c33b4f Merge: fb23aaf e562d7c Author: Olli Salli Date: Thu Jul 17 20:51:05 2008 +0300 Merge branch 'master' into client-proxies commit e562d7cdac8cd00b1ec7c9a7392ec1fc7d3edbed Author: Olli Salli Date: Thu Jul 17 20:33:30 2008 +0300 Fix constants-gen to not close the namespace twice tools/qt4-constants-gen.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) commit fb23aafc59eadb0c45f5659fc2c36d83bb9d62c0 Merge: 7afffed 77e8739 Author: Olli Salli Date: Wed Jul 16 20:47:35 2008 +0300 Merge branch 'master' into client-proxies commit 77e8739adbc4cf8df1c3b614eea64bdf04c073a9 Author: Olli Salli Date: Wed Jul 16 20:46:03 2008 +0300 Require python 2.5 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7afffede210be750d5cc4e8152089a4c717c2373 Author: Olli Salli Date: Wed Jul 16 20:43:45 2008 +0300 Output namespace in client-gen tools/qt4-client-gen.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 1d26e8b3107828940f5603c7520b2c19a579a2a8 Author: Olli Salli Date: Wed Jul 16 20:41:05 2008 +0300 Fix proxy generation Makefile rule dependencies TelepathyQt4/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 719f0230b789d268b350a62ebdc82c22301ad0b3 Merge: 4d9dd77 1bf56cd Author: Olli Salli Date: Wed Jul 16 19:28:03 2008 +0300 Merge branch 'master' into client-proxies commit 1bf56cd5f0041a02d68466904e28e71a685377bc Author: Olli Salli Date: Wed Jul 16 19:27:30 2008 +0300 Add optional --parent-include param to types-gen tools/qt4-types-gen.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 3c4392f27ef51b338ab7fc9bea6f0a49c878bab5 Author: Olli Salli Date: Wed Jul 16 19:21:39 2008 +0300 Make types.cpp include the .hpp, not the old .cpp TelepathyQt4/types.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4d9dd7721919cf4d2c84a8b0fd2fef7c4bb5099e Author: Olli Salli Date: Wed Jul 16 19:10:44 2008 +0300 Add license header to qt4-client-gen.py tools/qt4-client-gen.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit b8c35efa2636fbd68cb64cee32b96a0a8b078540 Author: Olli Salli Date: Wed Jul 16 19:07:53 2008 +0300 Add public pretty include headers for proxies TelepathyQt4/Client/Channel | 1 + TelepathyQt4/Client/Connection | 1 + TelepathyQt4/Client/ConnectionManager | 1 + TelepathyQt4/Client/DBus | 1 + TelepathyQt4/Client/MediaSessionHandler | 1 + TelepathyQt4/Client/MediaStreamHandler | 1 + TelepathyQt4/Client/Properties | 1 + TelepathyQt4/Makefile.am | 14 ++++++++++++++ TelepathyQt4/cli-channel.h | 27 +++++++++++++++++++++++++++ TelepathyQt4/cli-connection-manager.h | 27 +++++++++++++++++++++++++++ TelepathyQt4/cli-connection.h | 27 +++++++++++++++++++++++++++ TelepathyQt4/cli-dbus.h | 27 +++++++++++++++++++++++++++ TelepathyQt4/cli-media-session-handler.h | 27 +++++++++++++++++++++++++++ TelepathyQt4/cli-media-stream-handler.h | 27 +++++++++++++++++++++++++++ TelepathyQt4/cli-properties.h | 27 +++++++++++++++++++++++++++ 15 files changed, 210 insertions(+) commit d6593753c9d805beef4d6647730532363da99676 Author: Olli Salli Date: Wed Jul 16 17:50:53 2008 +0300 EXTRA_DIST updated with the generic XML changes TelepathyQt4/Makefile.am | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit cabee7796f52a15845425b180479a15027c8d366 Author: Olli Salli Date: Wed Jul 16 17:49:16 2008 +0300 Client proxy build system with stub proxies TelepathyQt4/Makefile.am | 41 +++++++++++++++++++++++++++++++++- tools/Makefile.am | 11 +++++---- tools/qt4-client-gen.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 5 deletions(-) commit b7f8f7722cbbf7549dfd0540176fe4a357c0679b Author: Olli Salli Date: Wed Jul 16 16:15:42 2008 +0300 Remove DBus_ prefix from the dbus interfaces TelepathyQt4/dbus-introspectable.xml | 2 +- TelepathyQt4/dbus-peer.xml | 2 +- TelepathyQt4/dbus-properties.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 57c066f27dde99b70589daa0629210b89e29a57b Merge: ed01d9b 733f88f Author: Olli Salli Date: Wed Jul 16 16:00:26 2008 +0300 Merge branch 'master' into client-proxies commit ed01d9be5cc9a1d3e87bcc735431191f2216a801 Author: Olli Salli Date: Wed Jul 16 15:59:54 2008 +0300 Rearrange the generic interface xmls TelepathyQt4/dbus-daemon.xml | 80 -------------------------------------- TelepathyQt4/dbus.xml | 11 ++++++ TelepathyQt4/generic.xml | 13 ------- TelepathyQt4/properties.xml | 9 +++++ TelepathyQt4/stable-interfaces.xml | 4 +- 5 files changed, 22 insertions(+), 95 deletions(-) commit 733f88fad458288dc49cf388641b23efe206a2d4 Author: Olli Salli Date: Wed Jul 16 12:42:11 2008 +0300 Add license headers to qt4-{constants,types}-gen tools/qt4-constants-gen.py | 17 +++++++++++++++++ tools/qt4-types-gen.py | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) commit 5ed61333945e34297b240b8b318db187ed0ea1bb Author: Olli Salli Date: Mon Jul 14 18:54:34 2008 +0300 Add interface, error and utility string constants. TelepathyQt4/Makefile.am | 1 + TelepathyQt4/constants.h | 45 ++++++++++++++++++++++++ tools/qt4-constants-gen.py | 87 ++++++++++++++++++++++++++++++++++++++-------- tools/qt4-types-gen.py | 11 +++--- 4 files changed, 123 insertions(+), 21 deletions(-) commit 8289ada6f75e86c619f81195eb46e8efe1d7ad3c Author: Olli Salli Date: Fri Jul 11 15:26:19 2008 +0300 Version 0.0.9999.1, 0.1.0.0 will be the first rel configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c71e1576b255696c843a50621839ec987179de34 Author: Olli Salli Date: Fri Jul 11 14:56:42 2008 +0300 Change the NUM_S constants to const ints tools/qt4-constants-gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 04f309a74aa2904cc93092aeba9d16a8e5c3d5b6 Author: Olli Salli Date: Fri Jul 11 14:39:54 2008 +0300 Remove extra ending newlines from files TelepathyQt4/constants.h | 1 - TelepathyQt4/types.h | 1 - 2 files changed, 2 deletions(-) commit d9475f0ae21794b7b9d0f94ad3bf356e5d73c2dd Author: Olli Salli Date: Fri Jul 11 14:17:13 2008 +0300 Cleaner generated code, saner scripts TelepathyQt4/Makefile.am | 28 +++++++++------- TelepathyQt4/types.cpp | 2 +- configure.ac | 2 +- doxygen.cfg | 10 +++--- tools/libqt4codegen.py | 15 +++------ tools/qt4-constants-gen.py | 17 +++++++--- tools/qt4-types-gen.py | 81 ++++++++++++++++++++++++++++++++++------------ 7 files changed, 102 insertions(+), 53 deletions(-) commit 190ecb3d7cd80732d1cd8dc484184a8cfe104707 Author: Olli Salli Date: Fri Jul 11 01:29:49 2008 +0300 Initial commit with types and constants generated. AUTHORS | 1 + COPYING | 510 +++++++++ ChangeLog | 2 + INSTALL | 237 +++++ Makefile.am | 24 + NEWS | 0 README | 0 TelepathyQt4/Constants | 1 + TelepathyQt4/Makefile.am | 106 ++ TelepathyQt4/TelepathyQt4.pc.in | 11 + TelepathyQt4/Types | 1 + TelepathyQt4/channel.xml | 23 + TelepathyQt4/connection-manager.xml | 9 + TelepathyQt4/connection.xml | 14 + TelepathyQt4/constants.h | 28 + TelepathyQt4/dbus-daemon.xml | 80 ++ TelepathyQt4/dbus-introspectable.xml | 16 + TelepathyQt4/dbus-peer.xml | 19 + TelepathyQt4/dbus-properties.xml | 29 + TelepathyQt4/generic.xml | 13 + TelepathyQt4/media-session-handler.xml | 9 + TelepathyQt4/media-stream-handler.xml | 9 + TelepathyQt4/stable-interfaces.xml | 19 + TelepathyQt4/types.cpp | 22 + TelepathyQt4/types.h | 28 + autogen.sh | 31 + configure.ac | 169 +++ doxygen.am | 186 ++++ doxygen.cfg | 1417 +++++++++++++++++++++++++ m4/Makefile.am | 4 + m4/as-compiler-flag.m4 | 33 + m4/compiler.m4 | 71 ++ m4/doxygen.m4 | 312 ++++++ m4/linker.m4 | 83 ++ spec/Account.xml | 475 +++++++++ spec/Account_Interface_Avatar.xml | 65 ++ spec/Account_Manager.xml | 166 +++ spec/Channel.xml | 238 +++++ spec/Channel_Future.xml | 122 +++ spec/Channel_Handler.xml | 73 ++ spec/Channel_Interface_Call_Merging.xml | 80 ++ spec/Channel_Interface_Call_State.xml | 108 ++ spec/Channel_Interface_Chat_State.xml | 100 ++ spec/Channel_Interface_DTMF.xml | 137 +++ spec/Channel_Interface_Delivery_Reporting.xml | 442 ++++++++ spec/Channel_Interface_Group.xml | 777 ++++++++++++++ spec/Channel_Interface_HTML.xml | 86 ++ spec/Channel_Interface_Hold.xml | 217 ++++ spec/Channel_Interface_Media_Signalling.xml | 117 ++ spec/Channel_Interface_Messages.xml | 634 +++++++++++ spec/Channel_Interface_Password.xml | 98 ++ spec/Channel_Interface_Transfer.xml | 53 + spec/Channel_Type_Contact_List.xml | 71 ++ spec/Channel_Type_Contact_Search.xml | 150 +++ spec/Channel_Type_Room_List.xml | 127 +++ spec/Channel_Type_Streamed_Media.xml | 377 +++++++ spec/Channel_Type_Text.xml | 467 ++++++++ spec/Channel_Type_Tubes.xml | 743 +++++++++++++ spec/Connection.xml | 650 ++++++++++++ spec/Connection_Interface_Aliasing.xml | 144 +++ spec/Connection_Interface_Avatars.xml | 294 +++++ spec/Connection_Interface_Capabilities.xml | 206 ++++ spec/Connection_Interface_Contact_Info.xml | 83 ++ spec/Connection_Interface_Forwarding.xml | 76 ++ spec/Connection_Interface_Presence.xml | 357 +++++++ spec/Connection_Interface_Privacy.xml | 93 ++ spec/Connection_Interface_Renaming.xml | 94 ++ spec/Connection_Manager.xml | 412 +++++++ spec/Makefile.am | 41 + spec/Media_Session_Handler.xml | 75 ++ spec/Media_Stream_Handler.xml | 379 +++++++ spec/Properties_Interface.xml | 191 ++++ spec/all.xml | 79 ++ spec/errors.xml | 80 ++ spec/generic-types.xml | 43 + tools/Makefile.am | 29 + tools/check-coding-style.mk | 12 + tools/check-misc.sh | 13 + tools/check-whitespace.sh | 17 + tools/libqt4codegen.py | 164 +++ tools/libtpcodegen.py | 231 ++++ tools/qt4-constants-gen.py | 162 +++ tools/qt4-types-gen.py | 384 +++++++ tools/xincludator.py | 36 + 84 files changed, 13785 insertions(+) telepathy-qt-0.9.6.1/COPYING0000644000175100017520000006363712530423576016774 0ustar00kaffeinekaffeine00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it!